Verilog测试平台可以使用真实时钟吗?
问题描述:
我在Verilog中写了一个计数器,然后用测试台测试它。我的测试平台给出了正确的结果,所以我的代码是确定的。但它是否会立即给出长时间的结果。Verilog测试平台可以使用真实时钟吗?
是否可以实时获取结果?我的意思是在每一秒我的测试平台会产生一个新的结果行? (如果可能的话,怎么做?)
答
我不完全清楚你想完成什么,但是Synopsys VCS模拟器有一个系统任务,名为$system
,它可以用来在模拟过程中执行shell命令。如果按如下所示执行sleep 1
,则仿真将在每个时间步骤暂停1秒的挂钟时间。这将导致您的模拟每秒显示一条消息。当然,你的模拟会非常慢。请注意,$system
不是Verilog IEEE标准的一部分。
更新:我原来说$system
是特定于VCS。但是,马蒂告诉我们,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
出于兴趣,你为什么要这么做?通常我们抱怨模拟速度太慢!!! – Marty 2010-06-30 14:14:18