SystemVerilog(三):coverage

1、驗證的一般過程:通過硬件設計規範設計驗證計劃,創建測試,驗證RTL代碼。

2、覆蓋率的顯式隱式表示:顯式通過SV環境CRT測試,覆蓋率在驗證後主動分析。隱式通過定向測試,覆蓋率可以自己得出。

3、怎樣收集覆蓋率數據: 

每一次仿真會產生一個帶有覆蓋率信息的數據庫,記錄隨機遊走的軌跡。把這些覆蓋率信息合併在一起可以得到功能覆蓋率

多次仿真通過改變隨機種子,隨機測試平臺帶來新的激勵。

4、覆蓋率分析:

(1)運行一個帶多個種子的測試。採用不同的種子,對一個約束集運行多次。

(2)檢查運行結果。fail則發現bug,說明驗證計劃不符合設計規範,覆蓋率數據必須放棄。

(3)分析運行得到的覆蓋率。如果對一個測試區域的覆蓋率未達到100%,但還在增加,可以運行更多種子,建立測試。如果覆蓋率很難增加,則必須修改約束條件或改用定向測試。

5、覆蓋率的類型

(1)代碼覆蓋率:由仿真器的代碼覆蓋工具直接提供 ,表示代碼冗餘度。

(2)功能覆蓋率:也被稱爲規範spec覆蓋率。spec通常包括features,boundary/corner case,error injection。

(3)漏洞率:是另一個指標,指項目追蹤期間新漏洞出現的概率。

(4)斷言覆蓋率:用於檢查幾個信號間的關係,常用在查找錯誤。

參考文獻:https://www.cnblogs.com/dpc525/p/5401504.html  功能覆蓋率

參考文獻:https://www.cnblogs.com/-9-8/p/4414689.html  SV中的覆蓋率

參考文獻:https://blog.csdn.net/endkillerym/article/details/91047770 功能覆蓋率

參考文獻:https://www.cnblogs.com/vickyfly/p/4565862.html 測試覆蓋率工具

6、功能覆蓋率策略:在編寫測試代碼之前,需要了解關鍵特性、邊界情形、可能的故障模式。明確要收集的是功能實現信息,而不是數據,否則編譯編譯產生的數據量與你需要進行的分析量都將很大。還可以通過仿真器供應商提供的選項進行選擇性編譯來控制覆蓋率數據是自己需要的。

7、測試的完備性,主要考慮三方面,代碼覆蓋率,功能覆蓋率,漏洞率。代碼覆蓋率降低應該檢查硬件設計指標,更新驗證計劃,增加更多的功能覆蓋點。功能覆蓋率低,如果驗證實現了具體功能,但是無法測試到,可能需要一些形式驗證的工具來建立合適的激勵。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章