為了確保驗證的完備性,我們需要量化驗證目標(biāo)。SystemVerilog提供了一套豐富的覆蓋率建模方式。有兩種覆蓋率建模方法:
functional coverage。用戶指定覆蓋率的目標(biāo),所需覆蓋的值和收集的時刻。完成所有覆蓋率的收集是確定DUT驗證完成情況的指標(biāo)之一。
code-coverage。通常情況下,創(chuàng)建一個code-coverage很簡單,不需要花費很多精力。例如,行覆蓋率、toogle覆蓋率和FSM(有限狀態(tài)機(jī))覆蓋率都是code-coverage。code-coverage的缺點是很難將code-coverage映射到驗證特性目標(biāo)上,code-coverage沒有考慮到high-level的事務(wù)級行為。
建議從functional coverage開始建立一個功能覆蓋率模型來表示high-level驗證目標(biāo),之后可以使用code-coverage作為作為functional coverage的補(bǔ)充。
在code-coverage很低的情況下達(dá)到100%的functional coverage,通常意味著需要完善和加強(qiáng)functional coverage建模。
實現(xiàn)Functional Coverage Model
一個驗證組件應(yīng)該有一個針對協(xié)議的功能覆蓋模型。你可能想禁用一些不重要或不需要驗證的覆蓋點。例如,你可能不需要測試系統(tǒng)中所有的總線事務(wù)類型。
你可能還想擴(kuò)展功能覆蓋模型,在驗證組件覆蓋率和系統(tǒng)中的其他屬性或其他接口驗證組件之間建立關(guān)聯(lián)。例如,你可能想確保當(dāng)FIFO已經(jīng)滿時所有類型的事務(wù)都被發(fā)送過,這就需要事務(wù)類型與FIFO-狀態(tài)之間的cross。
啟用和禁用Coverage
驗證IP開發(fā)者應(yīng)提供配置,允許驗證環(huán)境集成者或測試用例開發(fā)人員控制覆蓋率模型的Enable和Disabe。驗證VIP文檔應(yīng)該包括哪些屬性可以被設(shè)置來影響覆蓋率的收集,最基本的控制是決定是否要收集覆蓋率。
uvm_config_db#(int)::(this,"ubus0.masters[0].monitor","coverage_enable",0); 或者 ubus0.masters[0].monitor.coverage_enable = 0;
?
審核編輯:劉清
-
有限狀態(tài)機(jī)
+關(guān)注
關(guān)注
0文章
52瀏覽量
10487 -
FIFO存儲
+關(guān)注
關(guān)注
0文章
103瀏覽量
6141 -
FSMC
+關(guān)注
關(guān)注
0文章
55瀏覽量
38525 -
Verilog語言
+關(guān)注
關(guān)注
0文章
113瀏覽量
8478 -
DUT
+關(guān)注
關(guān)注
0文章
190瀏覽量
12836
原文標(biāo)題:開發(fā)一個覆蓋率模型
文章出處:【微信號:芯片驗證工程師,微信公眾號:芯片驗證工程師】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
怎么提高非隨機(jī)圖形設(shè)計的故障覆蓋率?
嵌入式仿真平臺SkyEye的覆蓋率分析相關(guān)資料下載
關(guān)于SpinalHDL中的驗證覆蓋率收集簡單說明
重點厘清覆蓋率相關(guān)的概念以及在芯片開發(fā)流程中跟覆蓋率相關(guān)的事項
Systemverilog覆蓋率的合并和計算方式
Verilog代碼覆蓋率檢查
IP開發(fā)時如何考慮復(fù)用覆蓋率
嵌入式代碼覆蓋率統(tǒng)計方法和經(jīng)驗

統(tǒng)計嵌入式代碼覆蓋率的方法和經(jīng)驗

怎么才能寫出高覆蓋率的Verilog代碼?
高覆蓋率的Verilog代碼的編寫技巧
代碼覆蓋率記錄

評論