System verilog ->;之间的区别是什么;和=>;系统内verilog断言?

System verilog ->;之间的区别是什么;和=>;系统内verilog断言?,system-verilog,assertions,system-verilog-assertions,System Verilog,Assertions,System Verilog Assertions,我想知道何时在SVA中使用->和=>? 两者之间有什么区别吗 sequence A; req |-> ##1 gnt; endsequence 及 请让我知道。。 谢谢。区别在于当先行项(左侧的表达式)成功时,后续项(右侧的表达式)是否在相同的时钟周期开始|->(重叠)或下一个时钟周期开始|=>(非重叠) 记住这一点的一个简便方法是在-中只有一个条,因此它是重叠的。在=中有两个条,因此是不重叠的。=>相当于->#1 因此,req=gnt相当于req |->2 gnt 请参阅§16.12

我想知道何时在SVA中使用
->
=>
? 两者之间有什么区别吗

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

请让我知道。。
谢谢。

区别在于当先行项(左侧的表达式)成功时,后续项(右侧的表达式)是否在相同的时钟周期开始
|->
(重叠)或下一个时钟周期开始
|=>
(非重叠)


记住这一点的一个简便方法是在
-
中只有一个条,因此它是重叠的。在
=
中有两个条,因此是不重叠的。

=>
相当于
->#1

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

请参阅§16.12.6含义

  • 这两种蕴涵算子都使用以下类型的方法
  • 我想您已经知道了在哪里使用|->(重叠)和|=>(非重叠)的基本概念
属性名();
启用序列(|->或|=>)后续序列
endproperty

结果:

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

  • 启用时,seq为`假,但显示为“viscus success” 你们将看不到波形中的绿色箭头

属性名();
序列1(##延迟)序列2
endproperty

  • 在这种情况下,如果seq1为“true than”,则在延迟一段时间后,如果seq2为“true than assertion pass”,并且如果seq2为“false than assertion fails”,则检查seq2
  • 如果seq1为“false”,则断言将直接失败
这是这件事的主要区别。我想这可能会有帮助

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