当前位置:   article > 正文

SystemVerilog Assertions应用指南 第一章(1.24章节 “or”运算符)_systemverilog or

systemverilog or

        二进制运算符“or”可以用来逻辑地组合两个序列。只要其中一个序列成功,整个属性就成功。序列s29a和s29b是两个独立的序列。属性p29将两者用“or运算符组合起来。当其中任一序列成功时,属性就成功。

  1. sequence s29a;
  2. @(posedge clk) a##[1:2] b;
  3. endsequence
  4. sequence s29b;
  5. @(posedge clk) c##[2:3] d;
  6. endsequence
  7. property p29;
  8. @(posedge clk) s28a or s28b;
  9. endproperty
  10. a29 :assert property(p29);

        图1-31显示了属性p29在模拟中的响应。表1-15总结了断言a29的状态和所有相关信号的采样值。图1-31也显示了使用“and构造的断言a27的结果,比较两个结果就很容易理解“and”构造和“or”构造的区别。由于没有有效开始而发生的失败和前面小节介绍的相同,第二类失败是由于其中的序列都不匹配引起的。发生在时钟周期12的失败就是这种失败,两个序列在它们各自的时序窗口都没能匹配,因此检验失败。
        使用“and”构造和“or”构造的成功几乎是相同的,主要的区别在于匹配的时间。当序列s29a成功时“or”运算符就匹配了而不需要等待序列p29b结束。




        其中一个使用“and”构造的失败发生在时钟周期11,但是当使用“or”构造时,属性却成功了一次。原因是属性的第一部分序列s29a在时钟周期12匹配,使得属性立即成功。而在使用“and”构造时,单是这个成功并不是充分条件,第二部分的序列也必须匹配,但是在给定的时序窗口内,并没能出现。因此,相同的条件下,属性p27在时钟周期14失败了。


 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/453911
推荐阅读
  

闽ICP备14008679号