有什么区别 - >和=>在系统verilog断言?

时间:2015-10-18 19:22:39

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

我想知道何时在SVA中使用->=>

之间是否有任何差异
sequence A;
 req |-> ##1 gnt;
endsequence

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

请告诉我.. 谢谢。

3 个答案:

答案 0 :(得分:2)

区别在于 ancecedent (左边的表达式)成功,结果(右边的表达式)是否在相同的时钟周期{{ 1}}(重叠)或下一个时钟周期|->(非重叠)。

记住这一点的一种方便方法是|=>中只有一个条形,因此重叠。 <{1}}中有两个条形,因此不重叠。

答案 1 :(得分:2)

|=>相当于|-> ##1
因此,req |=> ##1 gnt;相当于req |-> ##2 gnt;

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

答案 2 :(得分:0)

  • 这两种蕴涵算子都使用以下类型的方法。
  • 我认为你基本了解了在哪里使用| - &gt;(重叠)和| =&gt;(非重叠)

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

结果:

  • 当启用序列为真时(1&#39; b1)而不是检查后续序列..如果后续seq是真的,则断言通过,如果后续的seq是&#39;错误而非断言失败..

  • 当启用seq为'false而不是它通过但显示为&#34; viscus成功&#34; 并且您无法在波形中看到绿色箭头

...同时

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

  • 在这种情况下,如果seq1是真的,那么在一些延迟之后,它会检查seq2,如果seq2是'true而不是断言传递,并且如果seq2是&#39;假,则断言失败..
  • 如果seq1为'false,则断言直接失败..

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