0

我试图了解何时$rose在断言中使用信号。例如,以下两个断言将以什么方式表现不同?

first:assert property 
        (@(posedge clk) $rose(reset) |-> (data == 0));

second: assert property
          (@(posedge clk) reset |-> (data==0));

$rose要与异步信号一起使用吗?

4

3 回答 3

7

$rose表示在前一个时钟周期中信号为“0”,在当前时钟周期中为“1”。

第一个断言将仅在第一个周期变为高电平时检查,而第二个断言将在每个时钟周期在高电平时reset检查是否为“0” 。datareset

这是一张漂亮的图画,向您展示了每个断言何时触发。

         _   _   _   _   _   _
clk    _| |_| |_| |_| |_| |_| |_
             ___________
reset  _____|           |_______

first           x   

second          x   x   x

$rose对同步信号有意义。

于 2014-09-03T09:42:51.773 回答
0

$rose(reset)当有从0/x/zto的转换时工作1,并true在有这样的转换时返回。

resetwithout$rose 0/x/z考虑to的这种转换1,并且会false在发生这种转换时返回。这个对吗?

于 2019-10-09T17:24:08.090 回答
-1

$rose() 是一个系统任务,用于检查信号的采样值是否在前一个样本和当前样本之间变为 1(前一个样本可能是 0/x/z)。

它必须是两个连续的时钟周期样本。

于 2021-12-21T06:55:22.640 回答