码迷,mamicode.com
首页 > 其他好文 > 详细

断言stable

时间:2019-10-17 14:11:26      阅读:500      评论:0      收藏:0      [点我收藏+]

标签:表达式   时序   table   举例   条件   信号   assert   tab   表达   

$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

标签:表达式   时序   table   举例   条件   信号   assert   tab   表达   

原文地址:https://www.cnblogs.com/camellia3371----/p/11691374.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!