断言stable
Posted camellia3371----
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了断言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的时期是上一个时钟沿和当前时钟沿是否一致。
以上是关于断言stable的主要内容,如果未能解决你的问题,请参考以下文章