p1: assert property (@(posedge clk) ($past(b, 2, c)) === 0);
当我在 VCS 中运行断言时,它在 13 秒、15 秒、17 秒时失败......
我不知道为什么13秒就失败了。
11秒内,
$past(b, 2, c)
为0(7秒采样)
但是13秒后,
c
= 0,为什么$past(b, 2, c)
在9秒内得到采样值?
将
$past
与启用一起使用很复杂,因为它将采样和历史记录一起门控。它的操作如下:
always @(posedge clk) begin
if(c) begin
past1 <=b;
past2 <= past1;
end
$display ("%t b:%0d b1:%0d b2:%0d", $time,b,past1,past2);
end
顺便说一句,在示例代码中提供确切的刺激确实很有帮助。图片很好,但尝试重新创建它需要很多人的时间。
失败不是因为 13 之前的 2 个时钟周期,即 11,c 为高电平使检查有效,b 为 1 而不是 0(根据检查器)