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

統計嵌入式代碼覆蓋率的方法和經驗

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

評論