我试着写一个断言:
一旦A被置位,A保持高电平直到B被置低。在那之后,A最终会断言。
我写的断言是:
MonthNames
--------------
July, July, August, September
在断言A时,断言失败。伙计们,你能告诉我my_assertion在哪里做错了吗?是" [0:$]"使用不正确?
答案 0 :(得分:2)
##
的优先级高于throughout
;参见IEEE1800-2012§16.9序列操作表16-1。
因此A throughout !B [->1] ## [0:$] !A
是样本A throughout (!B [->1] ## [0:$] !A)
。此操作失败,因为最后一个周期需要A
为高(throughout
的左侧)和低(throughout
的右侧),这将始终评估为false。
我认为理想的行为是:(A throughout !B [->1]) ## [0:$] !A
答案 1 :(得分:1)
我认为你的问题是由于运营商的优先权。当A被置为无效时,这不会失败:
$rose(A) |-> (A throughout !B [->1]) ## [0:$] !A
而你所写的内容与:
相同$rose(A) |-> A throughout (!B [->1] ## [0:$] !A)
永远无法通过,因为A
不能同时为真和假。