Verilog测试平台可以使用真正的时钟吗?

时间:2010-06-30 08:00:30

标签: verilog hdl

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

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

1 个答案:

答案 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