0
我想斷言如果在當前週期信號'a'等於'0110'(二進制)在下一個週期信號'b'不大於31(它應該在0和31之間。它應該小於00000000000000000000000000011111)(它的寬度等於32) 每個人都可以幫我寫斷言嗎?! 對不起,我英語不好。系統Verilog聲明位向量
我想斷言如果在當前週期信號'a'等於'0110'(二進制)在下一個週期信號'b'不大於31(它應該在0和31之間。它應該小於00000000000000000000000000011111)(它的寬度等於32) 每個人都可以幫我寫斷言嗎?! 對不起,我英語不好。系統Verilog聲明位向量
assert property (@ (posedge clk) (a == 32'b0110) |=> (b > 32'd0 && b < 32'd32));
斷言 - 將設置屬性(斷言)爲行動。該物業必須以時鐘爲基礎。選擇合適的時鐘觸發設計中的寄存器a
& b
。蘊涵運算符|=>
表示該屬性在下一個時鐘週期中必須爲真。在這種情況下,如果a
等於6,則下一個週期b
必須在0和32之間)。
如果發生故障,將顯示一些類似的消息(基於模擬器)。
top.unnamed$$_0: started at ns failed at ns
Offending '((b > 0) && (b < 32))'
可以讀取一個基本的教程斷言
https://www.doulos.com/knowhow/sysverilog/tutorial/assertions/
請出示你已經嘗試了什麼。 Verilog中的FYI,0110被讀爲十進制的一百一十; '4'b0110'被讀爲二進制十 – Greg