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()來使能 或者關閉覆蓋率收集。