【发布时间】:2014-07-23 13:48:36
【问题描述】:
最近出现的问题是 SystemVerilog 中通常的隐含运算符 (|->) 和 implies 运算符之间有什么区别。不幸的是,我还没有找到明确的答案。但是,我收集了以下信息:
来自SystemVerilog LRM 1800-2012:
-
§ 16.12.7 隐含和 iff 属性:
property_expr1 implies property_expr2
当且仅当 property_expr1 评估为 false 或 property_expr2 评估为 true 时,此形式的属性评估为 true。 -
§ F.3.4.3.2 派生布尔运算符:
p1 implies p2 ≡ (not p1 or p2) -
§ F.3.4.3.4 派生条件运算符:
(if(b) P) ≡ (b |-> P)
但是,LRM 并没有真正指出实际差异是什么。我假设在错误的先例(成功与空洞的成功)的情况下,它们的评估不同,但我找不到任何来源或证据证明这一假设。此外,我知道implies 运算符与 OneSpin 等形式验证工具结合使用非常常见。
谁能帮帮我?
P.S.:似乎在以下书中有这个问题的答案:SystemVerilog Assertions Handbook, 3rd Edition。但是仅仅为了得到这个问题的答案,155 美元对我来说有点太多了 :)
【问题讨论】:
标签: system-verilog system-verilog-assertions implication