什么[`something] some_vector;在verilog中意味着什么?

时间:2014-10-10 07:30:18

标签: verilog system-verilog hdl

假设我有一些定义宏,然后定义了一些其他导线。
当我这样的时候,这是什么意思?从线上取出2个LSB是否意味着什么?

`define A_DEFINE  32
// *SOME CODE IN HERE*
output  [`A_DEFINE-1:0] my_out_wire;
// *MORE CODE HERE*

我似乎无法找到任何关于这个含义的解释。

1 个答案:

答案 0 :(得分:1)

语法`define A_DEFINE 32声明了一个名为A_DEFINE的宏。您可以在代码中使用宏来替换文本。

语法`A_DEFINE表示展开A_DEFINE宏。这基本上是取A_DEFINE的值,并在扩展宏的地方复制。

预处理器为您完成此操作。从本质上讲,你最终会得到:

// *SOME CODE IN HERE*
output  [32-1:0] my_out_wire;
// *MORE CODE HERE*

如果您需要在代码中使用可配置元素,则定义很方便。这样,如果你有多个应该是宽的信号,你只需使用define。如果您需要从32更改为64,您只需修改定义即可。

另请参阅SystemVerilog parameter。这可能也会有所帮助。