|->
最近出现了一个问题,通常的蕴涵运算符 ( ) 和implies
SystemVerilog 中的运算符之间有什么区别。不幸的是,我还没有找到明确的答案。但是,我收集了以下信息:
来自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 等形式验证工具结合使用时非常常见。
谁能帮帮我?
PS:似乎在以下书中有这个问题的答案:SystemVerilog Assertions Handbook, 3rd Edition。但是仅仅为了得到这个问题的答案,155 美元对我来说有点太多了 :)