我想使用環境變量在運行時在Verilog中定義一個宏。如何在verilog中使用環境變量或命令行設置宏的值?
例如,我只想在DEBUG
宏定義爲1
時將某些文本打印到文件中。
`define DEBUG 0
...
if(DEBUG) $fwrite(file,"Debug message");
如何從命令行運行仿真或使用環境變量時,我可以覆蓋的DEBUG
的定義1
?
或者,我可以保持宏觀不確定和使用ifdef
`ifdef(DEBUG) $fwrite(file,"Debug message");
在這種情況下我會運行模擬時定義宏DEBUG
。這可能嗎?
我正在使用Modelsim。謝謝。
編輯:接受的答案是足夠的。但是我也會爲在這裏絆倒的人添加這些信息。
參數的值可以使用-g<parameter>
或-G<parameter>
參數設置/覆蓋vsim
。 -g
僅在尚未設置參數值的情況下設置參數值,即使定義了值,-G
也會設置參數值。當我使用參數控制模擬長度時,我發現這很方便。重新編譯是沒有必要的。
vsim -c work.top -gSIM_END_TIME // Sets value in all scope
vsim -c work.top -g/top/dut/SIM_END_TIME // Sets value only in the defined scope