シミュレーターの対話型コマンド ライン ターミナルに移動してみてはどうでしょうか。これは、UNIX などの典型的なシェル端末ではありません。これは、シミュレータに関連付けられたベンダー固有のインタラクティブ モードです。ほとんどの場合、Verilog の でトリガーされ$stop
ます。これはベンダー固有であるため、すべての機能についてマニュアルを参照する必要があります。一部の機能では、Verilog/SystemVerilog で定義されたタスクと関数を呼び出すことができます。
また、1 つのシミュレーションですべての条件を実行する必要がないようにも思えます。あなたの状況では、一度コンパイルして何度も実行する戦略がうまくいくはずです。SystemVerilog システム関数は$test$plusargs
、$value$plusargs
シミュレーションの開始に使用される引数を検出できます。IEEE Std 1800-2012 § 21.6コマンドライン入力を参照してください
// ...
int testid;
// ...
initial begin
// ...
if(!$value$pluseargs("TESTID=%d",testid)) begin
// code if +TESTID= is not an argument
end
case(testid)
0 : run_task_test0(/*...*/);
1 : run_task_test1(/*...*/);
2 : run_task_test2(/*...*/);
3 : run_task_test3(/*...*/);
// ...
endcase
// ...
end
次に、一度コンパイルして、必要な回数だけシミュレーションを開始します。
% [compile-cmd]
% [sim-cmd] +TESTID=0
% [sim-cmd] +TESTID=3
% [sim-cmd] +TESTID=1
% [sim-cmd] +TESTID=2