2016-06-29 27 views
0

我想斷言如果在當前週期信號'a'等於'0110'(二進制)在下一個週期信號'b'不大於31(它應該在0和31之間。它應該小於00000000000000000000000000011111)(它的寬度等於32) 每個人都可以幫我寫斷言嗎?! 對不起,我英語不好。系統Verilog聲明位向量

+0

請出示你已經嘗試了什麼。 Verilog中的FYI,0110被讀爲十進制的一百一十; '4'b0110'被讀爲二進制十 – Greg

回答

1
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/