什么时候使用$ rose系统任务和断言中的信号

时间:2014-09-03 06:19:34

标签: system-verilog system-verilog-assertions

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

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

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

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

2 个答案:

答案 0 :(得分:5)

$rose表示在前一个时钟周期中,信号是' 0'在当前的时钟周期中,它是' 1'。

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

这里有一个很好的图画,显示每个断言何时触发。

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

first           x   

second          x   x   x

$rose对同步信号有意义。

答案 1 :(得分:0)

$rose(reset)在从0/x/z1的过渡中工作,并在过渡时返回true

reset(不含$rose说明了从0/x/z1的这种过渡,并在返回时返回false有这样的过渡。这是正确的吗?