0

Verilog でカウンターを書き、それをテストするためのテストベンチを作成しました。私のテストベンチは正しい結果を出すので、私のコードは問題ありません。しかし、それは長い時間の結果を瞬時に与えます。

リアルタイムで結果を取得することは可能ですか。つまり、1 秒ごとにテストベンチが新しい結果行を生成するということですか?? (そして、可能であればどのように?)

4

1 に答える 1

3

何を達成しようとしているのか正確にはわかりませんが、$systemシステム タスクを使用して、シミュレーション中にシェル コマンドを実行できます。次のように実行するsleep 1と、シミュレーションはタイム ステップごとに 1 秒の実時間で一時停止します。これにより、シミュレーションで 1 秒に 1 回メッセージが表示されます。もちろん、シミュレーションは非常に遅くなります。$systemVerilog の 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
于 2010-06-30T13:52:26.140 に答える