System verilog 何时在断言中使用带有信号的$rose系统任务

System verilog 何时在断言中使用带有信号的$rose系统任务,system-verilog,system-verilog-assertions,System Verilog,System Verilog Assertions,我试图理解在断言中何时使用$rose作为信号。例如,下面的两个断言在哪些方面表现不同 first:assert property (@(posedge clk) $rose(reset) |-> (data == 0)); second: assert property (@(posedge clk) reset |-> (data==0)); 是不是要将$rose与异步信号一起使用?$rose表示在上一个时钟周期中,信号为“0”,而在当前时

我试图理解在断言中何时使用
$rose
作为信号。例如,下面的两个断言在哪些方面表现不同

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

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

是不是要将$rose与异步信号一起使用?

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

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

下面是一个很好的图形,显示了每个断言何时触发

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

first           x   

second          x   x   x
$rose
对同步信号有意义。

$rose(重置)
在从
0/x/z
转换到
1
时工作,并在转换时返回
true

reset
不带
$rose
不能解释
0/x/z
1
的转换,并且在发生这种转换时将返回
false
。这是正确的吗