隨着各種設計變得越來越復雜,采用受約束的隨機測試方法(CRT)是對它們進行全面驗證的唯一有效途徑。無論是隨機的還是定向的激勵,都要使用覆蓋率來度量測試進行的程度。
覆蓋率的類型
覆蓋率是衡量設計驗證完成程度的一個通用詞。隨着測試逐步覆蓋各種合理的組合,仿真過程會慢慢勾畫出你的設計情況,覆蓋率工具會在仿真過程中收集信息,然后進行后續處理並得倒覆蓋率報告。通過覆蓋率報告找出覆蓋率盲區,然后修改現有測試或者創建新測試來填補這些盲區。這個過程一直迭代進行,直到你對覆蓋率滿意為止。
代碼覆蓋率
衡量驗證進展的最簡易的方式是使用代碼覆蓋率。這種方式衡量的是多少行代碼已經被執行過。代碼覆蓋率衡量的是測試對於設計規范的“實現”究竟測試得有多徹底,而非針對驗證計划。
功能覆蓋率
驗證的目的就是確保設計在實際環境中的行為正確。設計規范里詳細說明了設備應該如何運行,而驗證計划里則列出了相應的功能應該如何激勵、驗證和測量。
功能覆蓋率是和設計意圖緊密相連的,有時也稱為”規范覆蓋率“,而代碼覆蓋率則是衡量設計的實現情況。
漏洞率
衡量覆蓋率的一個間接的方式是查看新漏洞出現的比率。
斷言覆蓋率
斷言是用於一次性地或一段時間內核對兩個設計信號之間關系的聲明性代碼。它可以跟隨設計和測試平台一起仿真。
功能覆蓋率策略
在動手寫測試代碼之前,你需要預先弄清楚相關設計的關鍵特性、邊界情形和可能故障模型。這其實就是驗證計划的內容。
(1) 收集信息而非數據
(2) 只測量你將會使用到的內容
(3) 測量的完備性
參考文獻:
[1] Chris Spear. SystemVerilog驗證測試平台編寫指南. 科學出版社. 2009,09.