如何在if-else语句中使用Verilog定义

时间:2015-03-27 01:11:51

标签: if-statement verilog register-transfer-level

我有一个像这样的Verilog定义:

`define NUM_BANKS 4

如果想在以下代码中使用它:

if (`NUM_BANKS > 1)
  do something ..
else
  do something else ..

Lint工具抱怨这个表达式总是被评估为true。

2 个答案:

答案 0 :(得分:1)

在应用`define之后,if将始终评估4> 1.编译器发出错误,因为if总是无关紧要。

我建议将`define替换为parameter(如果您希望通过更高级别的模块或实例化来更改它),或者使用编译器指令({{3}例如)

`define HASBANKS
`ifdef (HASBANKS)
...
`else
...
`endif

答案 1 :(得分:0)

Lint是正确的,因为在你的表达中,4> 1总是如此。所以,如果这是你想要的,没有问题。

理学