我试图了解何时在断言中使用$rose
来表示信号。例如,下面两个断言会以什么方式表现不同?
first:assert property
(@(posedge clk) $rose(reset) |-> (data == 0));
second: assert property
(@(posedge clk) reset |-> (data==0));
是$rose
与异步信号一起使用吗?
答案 0 :(得分:5)
$rose
表示在前一个时钟周期中,信号是' 0'在当前的时钟周期中,它是' 1'。
第一个断言仅检查reset
变高时的第一个周期,而第二个断言将检查data
是否为' 0'在reset
为高的每个时钟周期中。
这里有一个很好的图画,显示每个断言何时触发。
_ _ _ _ _ _
clk _| |_| |_| |_| |_| |_| |_
___________
reset _____| |_______
first x
second x x x
$rose
对同步信号有意义。
答案 1 :(得分:0)
$rose(reset)
在从0/x/z
到1
的过渡中工作,并在过渡时返回true
。
reset
(不含$rose
,不说明了从0/x/z
到1
的这种过渡,并在返回时返回false
有这样的过渡。这是正确的吗?