1
A
回答
2
你必須檢查的第一件事是單個蘊涵運算符的語法是a |-> b
。
在SystemVerilog聲明中有兩個表達式。
a ##0 b
a |-> b
事實上,它看起來像在表達式中的類似。首先該表達式是檢查a
被聲明(1),並且在0時鐘週期b
被聲明(1)或沒有聲明之後。第二個表達式是當a
被斷言(1)時檢查b
是(on)斷言,然後在相同的posedge b
被斷言(1)或不確定。
現在,實際上當驗證工程師寫這種斷言時,他們會照顧以下事情。
a ##0 b
:在這個表達式中,如果a
不然後斷言它示出了故障。
當a
被斷言(1)和上相同時間戳b
未被斷言然後還示出了故障。
a |-> b
:在這個表達式中,如果a
被斷言並且b
未被斷言它就會出現一個故障。
如果a
不被認定那麼它是不會檢查是否b
斷言與否。此行爲與a ##0 b
不同。
如果您應用不同的輸入數據,則可以看到表達式a ##0 b
會給您帶來比a |-> b
更多的失敗。上面已經解釋了相同的原因。
還有一點需要注意的是「蘊含結構只能用於屬性定義,不能用於序列。」
感謝,
Ashutosh說
1
你的問題說明了蘊涵算(|->
)的重要性。此示例使用蘊涵算和是有用的:
a -> b
意味着「如果a
爲真,則b
應該是true
」(有用)。
這不是不和通常不是非常有用:
a ##0 b
意味着「a
和b
應該是在任何時候都爲真」(不是很有用)。
相關問題
- 1. | 0和~~有什麼區別?
- 2. -0和0有什麼區別?
- 3. 蘊涵操作反映了什麼?
- 4. 蘊涵在MVC
- 5. Java中> =和=>有什麼區別?
- 6. 數質蘊涵和EPI
- 7. '>'和'>>'有什麼區別?
- 8. 系統verilog斷言中的 - >和=>有什麼區別?
- 9. 蘊涵圖分配
- 10. 在Purescript; - >和=>有什麼區別?
- 11. Monads:seq和>> =有什麼區別?
- 12. 「%>」和「 - %>」之間有什麼區別?
- 13. <%# %>和<%= %>有什麼區別?
- 14. > =和=>有什麼區別?
- 15. Ada中的=和=>有什麼區別?
- 16. PHP中的 - >和::有什麼區別?
- 17. 0(%eax)和(%eax)有什麼區別?
- 18. .communicate()和.communicate()[0]有什麼區別?
- 19. {0}和+之間有什麼區別?
- 20. 「kill 0」和「kill - - $$」有什麼區別?
- 21. {0}和「」之間有什麼區別?
- 22. firstChild和[0]之間有什麼區別?
- 23. FILE_ATTRIBUTE_NORMAL和0有什麼區別?
- 24. 蘊涵使用-fshort-WCHAR
- 25. (null)和<null>有什麼區別?
- 26. 區別<p>是什麼Javascript和ASP.net有什麼區別?</p>
- 27. C++中「some」==「some \ 0」和strcmp(「some」,「some \ 0」)有什麼區別?
- 28. 這段代碼中rem == 0和rem = 0有什麼區別?
- 29. Java中的Runtime.exit(0)和System.exit(0)有什麼區別?
- 30. C語言中ptr = my_array和ptr =&my_array [0] [0]有什麼區別?