環境変数を使用してVerilogで実行時にマクロを定義したいとします。verilogで環境変数やコマンドラインを使ってマクロの値を設定する方法は?
たとえば、DEBUG
マクロが1
と定義されている場合にのみ、テキストをファイルに出力したいとします。
`define DEBUG 0
...
if(DEBUG) $fwrite(file,"Debug message");
どのように私は、コマンドラインからシミュレーションを実行しているか、環境変数を使用している場合1
にDEBUG
の定義をオーバーライドすることができますか?
代わりに、私は未定義のマクロを維持し、私は、シミュレーションを実行するときにマクロDEBUG
を定義する必要があります。この場合、ifdef
`ifdef(DEBUG) $fwrite(file,"Debug message");
を使用することができます。これは可能ですか?
私はModelsimを使用しています。ありがとう。
EDIT:受け入れ答えは十分です。しかし、私はこの情報を、ここで不安を抱える人にも追加します。
-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