modelsim 模拟时间周期似乎不同于 test_bench

modelsim simulation time cycles appear to be different than test_bench

我有一个测试台,上面写着:

'timescale 1 ns/ 1 ps

一个时钟定义为:

code in testbench

always begin
   #5 sys_clk = ~sys_clk;
   #20 clk_in = ~clk_in;
   #8 clk_acq = ~clk_asq;
end

运行使用do文件模拟: vsim in do file

但是ModelSim波形中的时钟周期,当用光标测量时,is:66ns而不是10ns clock waveform 有什么想法吗?

我真的不明白是什么导致了这种行为。

编辑:另外,如果我 运行 TESTBENCH 中的休闲命令:

initial 
begin
#1 $display("T=0t at time #1",$realtime);
#1 $display("T=0t at time #2",$realtime);
#1 $display("T=0t at time #3",$realtime);
#1 $display("T=0t at time #4",$realtime);
#2 $display("T=0t at time #5",$realtime);
end

我得到:

T=1000 at time #1
T=2000 at time #2
T=3000 at time #3
T=4000 at time #4
T=6000 at time #5

我想这是一条线索,但我不知道是什么原因造成的。

你应该把所有的代码都放在文本格式中。您按照此方案生成时钟:

always begin
   #5 sys_clk = ~sys_clk;
   #20 clk_in = ~clk_in;
   #8 clk_acq = ~clk_asq;
end

因此,您的时钟每 33 个周期更新一次:5 + 20 + 8,这说明时钟周期为 66。

always 块不会运行 并行作业,也不会重新启动直到完成。因此,它将在再次启动之前完成所有更新。因此,您所有的时钟都将有一个 66 的周期,并且彼此之间会有一个偏移量。