Systemverilog(綠皮書)第九章——功能覆蓋率(四)覆蓋選項

covergroup CoverLength;
    coverpoint tr.length;
    option.per_intance = 1;    //單獨計算每個實例覆蓋率
endgroup

註釋

如果有多個covergroup實例,可以通過參數來對每個實例傳入單獨的註釋,這些註釋最終會顯示在覆蓋總結數據的 報告中。

covergroup CoverPort(int lo,hi, string comment);
    option.comment = comment;
    option.per_instance = 1;
    coverpoint port
        {bins range = {lo:hi};
}
endgroup
...
CoverPort cp_lo = new(0,3, "Low port numbers");
CoverPort cp_hi = new(4,7, "Highport numbers");

覆蓋次數限定

(1)默認情況下,數值採樣了1次就可以計入有效的bin。可以通過修改at_least來修改每個bin的數值最少的 採樣次數,如果低於at_least數值,則不會被計入bin中。

(2)option.at_least可以在covergroup中聲明來影響所有的coverpoint,也可以在coverpoint中聲明隻影響該coverpoint下所有的bin。

(3)一個covergroup或者一個coverpoint的目標就是100%覆蓋率。

covergroup CoverPort;
    coverpoint port;
    option.goal = 90;    //目標設置
endgroup

(4)sample():採樣

(5)get_coverage()或者get_inst_coverage():獲取 覆蓋率,返回0-100的real值。

(6)set_inst_name(string)來設置covergroup名稱

(7)start()/或者stop()來使能 或者關閉覆蓋率收集。

 

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