【问题标题】:what is the difference between -> and => in system verilog assertions?系统verilog断言中的->和=>有什么区别?
【发布时间】:2016-01-17 01:53:02
【问题描述】:

我想知道什么时候在 SVA 中使用 ->=> ? 有没有区别

sequence A;
 req |-> ##1 gnt;
endsequence

sequence B;
 req |=> ##1 gnt;
endsequence

请告诉我.. 谢谢。

【问题讨论】:

    标签: system-verilog assertions system-verilog-assertions


    【解决方案1】:

    区别在于前件(左边的表达式)成功时,后件(右边的表达式)是否在同一个时钟周期开始@987654321 @(重叠)或下一个时钟周期|=>(不重叠)。

    记住这一点的一种方便方法是- 中只有一个小节,所以这是重叠的。并且= 中有两个小节,所以不重叠。

    【讨论】:

      【解决方案2】:

      |=> 等价于|-> ##1
      所以req |=> ##1 gnt;等价于req |-> ##2 gnt;

      请参阅IEEE Std 1800-2012 § 16.12.6 含义

      【讨论】:

        【解决方案3】:
        • 这两种蕴涵运算符都使用以下类型的方法..
        • 我想您已经大致了解了在哪里使用 |->(重叠)和 |=>(非重叠)

        property name(); Enabling sequence (|-> or |=>) Consequent sequence endproperty

        结果:

        • 当启用序列为 'true (1'b1) 时,它会检查后续序列 ..如果后续序列为 'true 则断言通过,如果后续序列为 'false 则断言失败..

        • 当启用 seq 为 `false 时,它​​通过但显示为“viscus 成功” 并且您将无法在波形中看到绿色箭头

        同时……

        property name(); sequence1 (## delay) sequence2 endproperty

        • 在这种情况下,如果 seq1 为 'true,则在延迟一段时间后,它会检查 seq2,如果 seq2 为 'true,则断言通过,如果 seq2 为 'false,则断言失败..
        • 如果 seq1 为 `false,则断言直接失败..

        这是这件事的主要区别..我认为它可能会有所帮助

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-02-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-01-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多