Macros Verilog`ifdef是否响应环境变量?

Macros Verilog`ifdef是否响应环境变量?,macros,system-verilog,conditional-compilation,Macros,System Verilog,Conditional Compilation,如果我有以下Verilog代码: //test.v `ifdef V1 {code block 1} `else {code block 2} `endif 我可以使用标准环境变量定义语法从命令行“引导”条件吗? 例如,这会导致执行{code block 1}吗 $ V1=1 <simulator> test.v $V1=1测试.v > IFDEF语句是一个编译器指令,非常类似于C或C++中的预处理器指令,因此可以使用类似的方式通过命令行传递它们,使用 -d $ var >

如果我有以下Verilog代码:

//test.v

`ifdef V1
{code block 1}
`else
{code block 2}
`endif
我可以使用标准环境变量定义语法从命令行“引导”条件吗? 例如,这会导致执行{code block 1}吗

$ V1=1 <simulator> test.v
$V1=1测试.v

<代码> > IFDEF语句是一个编译器指令,非常类似于C或C++中的预处理器指令,因此可以使用类似的方式通过命令行传递它们,使用<代码> -d $ var > /Cord>Fig. 假设我们有以下模块:

// 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!

不,verilog模拟器不应该识别环境变量。根据模拟器的不同,您可能能够在命令行定义verilog宏。具体方法取决于模拟器的实现。参考模拟器文档。