假设我有一些定义宏,然后定义了一些其他导线。
当我这样的时候,这是什么意思?从线上取出2个LSB是否意味着什么?
`define A_DEFINE 32
// *SOME CODE IN HERE*
output [`A_DEFINE-1:0] my_out_wire;
// *MORE CODE HERE*
我似乎无法找到任何关于这个含义的解释。
答案 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
。这可能也会有所帮助。