Verilog 中的“_”是什么?

What is ''_'' in Verilog?

我正在查看这段代码片段:

module FD2 (d, cp, cd, q, qn);

  input d, cp, cd;
  output q, qn;

  nand #1   nand_2 (n2, d_, cp_),
            nand_3 (n3, n1, n4),
            nand_7 (q, n5, qn);

// SJM  nand #0   nand_1 (n1, d, cp_, cd),
  nand   nand_1 (n1, d, cp_, cd),
            nand_4 (n4, n2, n3, cd),
            nand_5 (n5, n3, cp),
            nand_6 (n6, n4, cp),
            nand_8 (qn, n6, cd, q);

// SJM not  #0   inv_1 (cp_, cp),
  not   inv_1 (cp_, cp),
            inv_2 (d_, d);

endmodule

“cp_”是什么意思?

找不到答案,所以我想在这里发帖。

在您的代码中,cp_ 是一个信号的名称,就像 cp 是另一个信号的名称一样。名称中的下划线没有特殊含义。这是 简单标识符 的示例。请参阅 IEEE 标准 1800-2017,第 5.6 节 标识符、关键字和系统名称

An identifier is used to give an object a unique name so it can be referenced. An identifier is either a simple identifier or an escaped identifier (see 5.6.1). A simple identifier shall be any sequence of letters, digits, dollar signs ( $ ), and underscore characters ( _ ).

不明确声明信号是合法的,但建议这样做是一种好的做法。最好使用以下方式声明信号:

wire cp_;

其他未声明的信号也是如此,如d_n1

另见第 6.10 节隐式声明

下划线“_”是任何标识符的合法字符,没有特殊含义。但有些人将“_”字符称为“bar”,意思就像你写的 cp_ 一样

__
cp

意思是cp

否定