我們更希望把隨機變量用rand和randc修飾,之後把它們封裝到 一個類裏面。類是 一些變量的自洽體,可以把一些相關的變量放到這個軟件的變量盒子中,變量 與變量之間的約束關係也可以放到類中。
如果我們在調用randomize時候,給randomize函數中添加一些參數,來指定隨機化哪些變量。這時只有寫進參數列表中的變量會被隨機化,其他變量 都會被當做狀態不會被隨機化。其它變量即便有rand修飾符依然
此不行。所有約束依然有效, 只有使用constraint 關掉之後才失效。
同時,randomize()函數 中的參數不管 有沒有被rand修飾都會被隨機化。
class Rising;
byte low; //未被隨機約束變量
rand byte med, hi; //隨機化的變量,8位有符號值
constraint up
{ low < med; med < hi;}
endclass
initial begin
Rising r;
r = new();
r.randomize(); // 隨機化hi,但是不改變low
r.randomize(med); // 只隨機化med
r.randomize(low); // 只隨機化low
end
上述代碼中,例化了r之後,先調用r.randomize(low),那麼low,med和hi的組合值可能是下面哪一組?
(A)low = -1,med=0, hi=0
(B)low = -1,med=1, hi=2
(C)low = 報錯,med=0, hi=0
(D)low = 報錯,med=null, hi=報錯
此時 只隨機low,而med和hi不被隨機。 C