2017-10-06 147 views
0

SystemVerilog中的整數類型與大多數語言一樣,在溢出時進行迴繞。我想知道這在限制條件下是否也是如此。例如:SystemVerilog約束中的溢出

class Test; 
    rand bit [3:0] a; 
    rand bit [3:0] b; 

    constraint c { a + b <= 4'h6; } 
endclass; 

當隨機化這個類的對象,是有可能得到一個解決方案,其中a == 7b == 12,這將滿足自7 + 12 = 19,其環繞於3約束,3是少於6?

如果是這樣,這將有助於制定約束爲

constraint c { a + b <= 6; } 

,其中6是32位有符號整數和總和被迫與32位精度計算? (如果隨機變量的類型爲int,這當然不是解決方案)

+0

運行模擬以查看所得結果。它會回答你的問題。 – toolic

回答

1

你是對的。無論您是否處於約束範圍內,表達式評估都是相同的。除了溢出之外,您還需要關心截斷和符號轉換。 Integral表達式在SystemVerilog中輸入很弱。