covergroup
選項提供不同的覆蓋率選項,來計算覆蓋率。
乙個covergroup
可能會被多個地方例化使用,預設情況下sv
會將所有的例項的覆蓋率合併到一起計算。如果需要單獨列出每個covergroup
例項的覆蓋率,需要以下設定覆蓋率選項。
covergroup cov;
coverpoint tr.length;
option.per_instance=1;
//指定單獨計算該覆蓋率吧報告
endgroup
covergroup cov
(int lo, hi, string comment)
;//lo,hi,引數也能傳進來,提高復用率
option.comment=comment;
//每個例化的cov都會傳入乙個comment
option.per_instance=1;
//指定單獨計算該覆蓋率吧報告
coverpoint port;}
endgroup
cov cp_lo=
new(0,
3,"low port number");
//傳入comment,傳入注釋
cov cp_hi=
new(0,
3,"high port number"
);
達到最低取樣次數,就表明是覆蓋上了,預設最少取樣是1次。
option.at_least,選項設定取樣次數。在covergroup中宣告時,表示該covergroup中所有的bin全部都設定有效,放在coverpoint中宣告,則只對當前的coverpoint中的bin有效
option.goal=
90; 覆蓋率設定90
%,同樣是放到covergroup或者coverpoint中有不同的效果
sample
() :取樣
get_coverage()
//獲取所有該covergroup例項的覆蓋率,返回0~100數
get_inst_coverage()
//返回當前例項的覆蓋率,返回0~100數
set_inst_name
(string)
//設定covergroup的名稱,出現在覆蓋率報告上
start()
/stop()
//使能或者關閉覆蓋率收集
在**過程中進行覆蓋率統計,以此動態的獲取當前的覆蓋率資訊,來調整約束,或者新增測試用例,來提覆蓋率
$get_coverage()
//這是個系統函式,可以得到總體覆蓋率
covergroup_inst.
get_inst_coverage()
//獲取單個covergroup例項的覆蓋率
覆蓋率分析
為什麼需要 覆蓋率分析?在發布 的時候,我們常常會對其進行一系列的測試來協調軟體的效能和功能,使他們和預計的相同。但是檢驗通常都是相當的困難,即使程式相當的簡單。開發者常常會借助一些 測試工具 test suite 來模擬或者重建執行指令碼。如果測試程式組是徹底的,那麼程式的各個功能都將被測試到並且...
功能覆蓋率
功能覆蓋率 function coverage 是屬於黑盒測試範疇內的,在實際測試中,涉及到的覆蓋率一般都是結構化覆蓋率,與黑盒相關的覆蓋率比較少。功能覆蓋中最常見的是需求覆蓋,其含義是通過設計一定的測試用例,要求每個需求點都被測試到。其公式是 需求覆蓋 被驗證到的需求數量 總的需求數量 在黑盒測試...
測試覆蓋率
摘要 在測試方法中粗略的介紹了幾種測試方法。其中,白盒測試的動態分析方法中提到邏輯覆蓋率測試有 語句覆蓋 分支覆蓋 判定覆蓋 條件覆蓋 條件 判定覆蓋和路徑覆蓋。這裡將詳細闡述邏輯覆蓋率測試。準備知識 可執行語句 可執行的一項操作 真 假分支 ture false 運算元 opreand 操作符 o...