如果我具有以下Verilog代码:
//test.v
`ifdef V1
{code block 1}
`else
{code block 2}
`endif
我可以使用标准环境变量定义语法从命令行“控制”条件吗? 例如,这会导致{代码块1}执行吗?:
$ V1=1 <simulator> test.v
答案 0 :(得分:1)
ifdef
语句是一个编译器指令,与C或C ++中的预处理器指令非常相似,因此您可以使用-D$var
标志以类似的方式将它们通过命令行传递。
假设我们有以下模块:
// test.v
module hello;
initial
begin
`ifdef V1
$display("V1 defined!");
`else
$display("V1 not defined!");
`endif
$finish ;
end
endmodule
然后使用例如IcarusVerilog,您可以使用以下命令在命令行上定义V1
:
terminal:~$ iverilog -DV1 -o test test.v
terminal:~$ vvp test
V1 defined!
terminal:~$ iverilog -o test test.v
terminal:~$ vvp test
V1 not defined!