隨機序列
(1)產生隨機事務序列的另一種方法就是使用SV的 randsequence結構。這對於隨機安排組織原子(atomic)測試序列很有幫助。
initial begin
for (int i=0; i<15; i++) begin
//按照要求發送激勵
randsequence (stream)
stream : cfg_read := 1 | io_read :=2 | mem_read :=5;
//cfg_read和io_read以及mem_read的可能性1:2:5
cfg_reead : {cfg_read_task;} | {cfg_read_task;} cfg_read;
mem_reead : {mem_read_task;} | {mem_read_task;} mem_read;
io_reead : {io_read_task;} | {io_read_task;} io_read;
endsequence
end
end
(2)randcase來建立隨機決策樹,但是它帶來的 問題就是沒有變量 可以提供追蹤 調試。
initial begin
int len;
randcase
1:len = $urandom_range(0,2); //10%:0,1,or2
8:len = $urandom_range(3,5); //80%:3,4,or5
1:len = $urandom_range(6,7); //10%:6or7
endcase
$dsiplay("len = %0d", len);
end
總結:
(1)randsequence和randcase都是針對輕量級的隨機控制 應用。而我們可以 通過定義隨機類 取代上述隨機控制並且由於類的繼承 性使得在後期維護代碼的時候更加方便。
(2)randsequence的相關功能我們在協調激勵組件和測試用例的時候可能會用到。
(3)randcase對應着隨機約束中dist權重約束if-else條件約束組合。