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
。这是正确的吗