考虑以下 SV 代码片段:
module clocks();
logic a ;
bit clk =0;
initial begin
forever #1ns clk = ~clk ;
end
clocking cb@(posedge clk);
default input #1step output negedge;
output a;
endclocking
initial begin
@(cb);
#100ps;
cb.a <= 1 ;
@(cb);
#100ps;
cb.a <= 0 ;
repeat(10) @(cb);
end
endmodule
另一方面,对于第二个模拟器,时钟模块输出作用于第一个时钟,并且可以在第一个时钟下降沿看到效果。你可以看到下面的图片。 第二个模拟器
另一方面,如果我更改输出偏移延迟,使用小于 100ps 延迟的延迟(es 10ps),则第二个模拟器的行为与第一个模拟器相同(在第二个姿势后, a信号发生变化,输出偏移为10ps)。
两个模拟器中哪一个更符合 IEEE 1800-2017 SV 标准?在我看来,根据我对标准的理解,第一个模拟器更符合标准。
时间刻度设置为 1fs 以避免与模拟器分辨率相关的任何问题。