Verilog でカウンターを書き、それをテストするためのテストベンチを作成しました。私のテストベンチは正しい結果を出すので、私のコードは問題ありません。しかし、それは長い時間の結果を瞬時に与えます。
リアルタイムで結果を取得することは可能ですか。つまり、1 秒ごとにテストベンチが新しい結果行を生成するということですか?? (そして、可能であればどのように?)
何を達成しようとしているのか正確にはわかりませんが、$system
システム タスクを使用して、シミュレーション中にシェル コマンドを実行できます。次のように実行するsleep 1
と、シミュレーションはタイム ステップごとに 1 秒の実時間で一時停止します。これにより、シミュレーションで 1 秒に 1 回メッセージが表示されます。もちろん、シミュレーションは非常に遅くなります。$system
Verilog の IEEE 標準の一部ではないことに注意してください(ただし、System-Verilog Std の一部です)。
`timescale 1ns/1ns
module tb;
initial begin
$timeformat(-9, 1, "ns");
#5 $finish;
end
integer sec = 0;
always begin
#1;
$system("sleep 1");
sec = sec + 1;
$display("seconds = %0d, time = %0t", sec, $time);
end
endmodule
これにより、次のように出力されます。
seconds = 1, time = 1.0ns
seconds = 2, time = 2.0ns
seconds = 3, time = 3.0ns
seconds = 4, time = 4.0ns
$finish called from file "tb.v", line 8.
$finish at simulation time 5.0ns