我在Verilog中写了一个计数器,然后用一个测试台来测试它。我的测试平台给出了正确的结果,所以我的代码没问题。但它是否会立即产生很长时间的结果。
是否可以实时获取结果。我的意思是每一秒我的测试平台会产生一个新的结果? (如果有可能怎么样?)
答案 0 :(得分:3)
我并不完全清楚您要完成的任务,但Synopsys VCS模拟器有一个名为$system
的系统任务,可用于在模拟过程中执行shell命令。如果按如下所示执行sleep 1
,则模拟将在每个时间步骤暂停1秒钟的挂钟时间。这将使您的模拟每秒显示一次消息。当然,你的模拟速度会非常慢。请注意,$system
不是IEEE Verilog标准的一部分。
更新:我最初声明$system
特定于VCS。但是,Marty告诉我们Cadence也支持它。
`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