Systemverilog(綠皮書)第六章——隨機化(五)隨機控制

隨機序列

(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條件約束組合。 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章