2010-06-30 34 views
0

我在Verilog中写了一个计数器,然后用测试台测试它。我的测试平台给出了正确的结果,所以我的代码是确定的。但它是否会立即给出长时间的结果。Verilog测试平台可以使用真实时钟吗?

是否可以实时获取结果?我的意思是在每一秒我的测试平台会产生一个新的结果行? (如果可能的话,怎么做?)

+1

出于兴趣,你为什么要这么做?通常我们抱怨模拟速度太慢!!! – Marty 2010-06-30 14:14:18

回答

3

我不完全清楚你想完成什么,但是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 
+1

'$ system()'也适用于Cadence的Incisive(NC-Verilog)... – Marty 2010-06-30 14:15:02

+0

@Marty:谢谢。我更新了我的答案。 – toolic 2010-06-30 16:06:14