禾雨

导航

断言stable

$stable是SVA提供的3个内嵌函数之一,用于检查信号的边沿变化,当信号/表达式的最低位不发生变化时返回真值。

stable_a用于检查信号a不变的情况,它只在“a在当前时钟周期为一个电平,在前一个时钟周期也为同样电平”的情况下成功

 

sequence stable_s;
@(posedge clk) $stable(a);
endsequence

stable_a: assert property(stable_s);

 

注意时序,我在这点上犯了一个错误

举例,

property ahb_hold_when_nready;

    @(posedge clk) disable iff(!rst_n)

    (hready===1'b0) |=> $stable({hwdata,haddr,hwrite});

endproperty

assert_ahb_hold_hold_when_nready:

      assert property(ahb_hold_when_nready)

else

     `uvm_err("","haddr & hwdata & hwrite signals not hold when unready")

上面标红的符号应选择交叠蕴含操作符,即“如果先行算子符合条件,后序算子在下一周期开始计算”,则计算当前时钟沿和下一个时钟沿的信号是否保持。

如果选择“|->”非交叠蕴含操作符,则检测是否stable的时期是上一个时钟沿和当前时钟沿是否一致。

 

posted on 2019-10-17 12:53  禾雨  阅读(3652)  评论(0编辑  收藏  举报