我用 Verilog 写了一个计数器,然后用一个测试台来测试它。我的测试台给出了正确的结果,所以我的代码没问题。但它是否立即给出了很长一段时间的结果。
是否可以实时获取结果。我的意思是每一秒我的测试台都会产生一条新的结果??(如果有可能怎么办?)
我不清楚您要完成什么,但$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