Functional converage(功能覆蓋率)
內容來自啓芯-System Verilog視頻
==============================================================
目錄結構:
1、驗證流程
2、計算功能覆蓋率
3、功能覆蓋率建模
4、總結
==============================================================
本章目標:
1、定義功能覆蓋結構
2、指定覆蓋率採樣機制
3、定義採樣的信號和變量
4、定義採樣值代表的功能
5、使用參數化使覆蓋率實例唯一
6、使用覆蓋率分配定義覆蓋率結構
7、動態監測testcase
1、驗證流程
圖1、驗證流程
驗證目標何時達到?
如何切換到corner-case驗證?當測試例子都到達預期目標時,設計邊界用例
什麼時候做直接測試?
圖2、Coverage位置
圖3、組合邏輯的驗證例子
完備輸入和輸出,定義需要採樣的信號
圖4、功能覆蓋率例子
(1)通過covergroup關鍵字,
coverpoint定義比特輸入,比特輸出
cross,交叉連接
option.goal驗證目標
endgroup
(2)實例化
(3)查詢結果
2、計算功能覆蓋率
圖5、計算覆蓋率
3、功能覆蓋率建模
狀態和狀態轉移生成
圖6、例子
對狀態和狀態轉換建模。
coverage bin生成:VCS內自動生成crosscoverage bins,如cross sa;
採樣:(1)指定採樣事件,@([specified_edge] signals | variables)。(2)使用系統函數 cov_object.sample()更新採樣比特。
控制覆蓋率過程:$get_coverage()
coverage 屬性:可在coveragegroup等處定義。
主要的coverage選項:
(1)at_least(1):至少一次覆蓋
(2)auto_bi_max(64):自動生成最大數
(3)goal(100):100%覆蓋率
(4)wight(1):coverage比特層數
(5)per_instance(0):每個instance對覆蓋率的共享率
coverage結果報告:文件轉換成html、txt和仿真工具自動生成的格式
參數化coverage group:
圖7:、參數化例子
通過傳遞參數方式定義。
4、總結
本節介紹了功能覆蓋率建模過程。
covergroup
coverpoint:採樣信號定義
cross:信號關係
endgroup
實例化,採樣、覆蓋率統計