0

我用 Verilog 写了一个计数器,然后用一个测试台来测试它。我的测试台给出了正确的结果,所以我的代码没问题。但它是否立即给出了很长一段时间的结果。

是否可以实时获取结果。我的意思是每一秒我的测试台都会产生一条新的结果??(如果有可能怎么办?)

4

1 回答 1

3

我不清楚您要完成什么,但$system系统任务可用于在模拟期间执行 shell 命令。如果您sleep 1按以下方式执行,则模拟将在每个时间步暂停 1 秒的挂钟时间。这将导致您的模拟每秒显示一次消息。当然,您的模拟将非常缓慢。请注意,这$system不是 IEEE Verilog 标准的一部分(但它是 System-Verilog 标准的一部分)。

`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 回答