我试图了解何时$rose
在断言中使用信号。例如,以下两个断言将以什么方式表现不同?
first:assert property
(@(posedge clk) $rose(reset) |-> (data == 0));
second: assert property
(@(posedge clk) reset |-> (data==0));
是$rose
要与异步信号一起使用吗?
我试图了解何时$rose
在断言中使用信号。例如,以下两个断言将以什么方式表现不同?
first:assert property
(@(posedge clk) $rose(reset) |-> (data == 0));
second: assert property
(@(posedge clk) reset |-> (data==0));
是$rose
要与异步信号一起使用吗?
$rose
表示在前一个时钟周期中信号为“0”,在当前时钟周期中为“1”。
第一个断言将仅在第一个周期变为高电平时检查,而第二个断言将在每个时钟周期在高电平时reset
检查是否为“0” 。data
reset
这是一张漂亮的图画,向您展示了每个断言何时触发。
_ _ _ _ _ _
clk _| |_| |_| |_| |_| |_| |_
___________
reset _____| |_______
first x
second x x x
$rose
对同步信号有意义。
$rose(reset)
当有从0/x/z
to的转换时工作1
,并true
在有这样的转换时返回。
reset
without$rose
不0/x/z
考虑to的这种转换1
,并且会false
在发生这种转换时返回。这个对吗?
$rose() 是一个系统任务,用于检查信号的采样值是否在前一个样本和当前样本之间变为 1(前一个样本可能是 0/x/z)。
它必须是两个连续的时钟周期样本。