当前位置:   article > 正文

SystemVerilog Assertions应用指南 第一章(1.23章节 “intersect”运算符)_systemverilog assert intersect

systemverilog assert intersect

        “ intersect”运算符和“and”运算符很相似,它有一个额外要求。两个序列必须在相同时刻开始且结束于同一时刻。换句话说,两个序列的长度必须相等。属性p28检验与属性p27相同的情况。唯一的区别是它使用的是“ Intersect”构造而不是“and”构造。

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

        图1-30显示了属性p28在模拟中的响应。表1-14总结了断言p28的状态和所有相关信号的采样值。图1-30也显示了在同一条件下使用“and”构造的断言a27的结果,从而可以帮助理解“and”和“ intersect”的区别。

        由于缺少有效开始而导致的失败与前一节相同。第二类的失败是由于属性中单个序列未能成功匹配。这类的失败发生在时钟周期11和12。第三类的失败是在属性中所有单个序列都匹配时发生的。这些失败是由于两个序列达到匹配的时间长度不一致而发生的。在时钟周期3显示的失败中,序列s28a花了一个时钟周期实现匹配(“a”在时钟周期3为真,且“b”在时钟周期4为真),而序列s28b花了两个时钟周期实现匹配(“c”在时钟周期3为真,且“d”在时钟周期5为真)。在时钟周期7显示的失败中,s28a花了两个时钟周期完成匹配(“a”在时钟周期7为真,且“b”在时钟周期9为真),而s28b花了三个时钟周期完成匹配(“c”在时钟周期7为真,且“d”在时钟周期10为真)。
        三次成功分别发生于时钟周期8,9,10。在所有这三个例子中,两个序列都经过相同的时间长度匹配。
        在时钟周期8显示的成功中,序列s28a匹配了两次,分别在时钟周期9和10。序列s28b同样也匹配了两次,分别在时钟周期10和两个序列匹配的共同时间长度是两个时钟周期。因此intersect在s28a和s28b都在时钟周期10时匹配成功,它们各自的长度是两个时钟周期。



        在时钟周期9所示的成功中,序列s28a在时钟周期10和11各有一次匹配。序列s28b也有两次匹配,分别在时钟周期1l和12。两个序列匹配的通用长度为两个时钟周期。因此 intersect构造因为s28a和s28b都在时钟周期ll匹配而成功。每个序列的长度都是两个时钟周期。在时钟周期10所示的成功中,序列s28a在时钟周期11和12各有一次匹配。序列s28b在时钟周期12也有一次成功。两个序列匹配的通用长度为两个时钟周期。因此 intersect构造因为s28a和s28b都在时钟周期12有匹配而成功。每个序列的长度都是两个时钟周期。

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

闽ICP备14008679号