功能驗證(英語:泛函 verification),是電子設計自動化中驗證數字電路是否與預定規范功能相符的一個驗證過程,通常所說的功能驗證、功能仿真是指不考慮實際器件的延遲時間,只考慮邏輯功能的一個流程。功能驗證的目標是達到盡可能高的測試覆蓋率,被測試的內容要盡可能覆蓋所有的語句、邏輯分支、條件、路徑、觸發、狀態機的狀態等,同時在某些階段還必須包括對時序的檢查。
功能驗證定義
在較小型的電路設計中,設計人員可以利用硬件描述語言來建立測試平臺(通常這是一個頂級模塊),通過指定測試向量來檢驗被測模塊在各種輸入情況下,檢驗對應的輸出是符合要求。但是,在更大型集成電路設計項目中,該過程會耗費設計人員較大的時間和精力。許多項目都采用計算機輔助工程工具來協助驗證人員創建隨機測試激勵向量。其中,硬件驗證語言在建立隨機測試和功能覆蓋方面具有顯著的優勢,它們通常提供了專門用來進行功能覆蓋和產生可約束隨機測試激勵向量的數據結構。
除了上面講述的這種通過輸入測試向量的方式,功能驗證還可以通過形式等效性檢查(形式驗證)、斷言等方式來進行,達到更高的功能覆蓋率。
五大驗證技術
功能驗證:原型驗證和硬件仿真
功能驗證技術有靜態驗證、功能仿真、FPGA原型驗證、硬件仿真、與UVM等。
功能驗證的目的和過程
功能驗證的主要目標是確保數字電路設計滿足其預定的規范和功能要求。為了達到高測試覆蓋率,驗證過程需要覆蓋所有的語句、邏輯分支、條件、路徑、觸發以及狀態機的狀態。在較小型的電路設計中,設計人員可以利用硬件描述語言建立測試平臺(通常是一個頂級模塊),通過指定測試向量來檢驗被測模塊在各種輸入情況下的輸出是否符合要求。然而,在更大型的集成電路設計項目中,手動創建測試向量會耗費大量的時間和精力。
功能驗證流程
功能驗證流程主要分為三部分:1、制定驗證策略和驗證計劃;2、創建驗證平臺,運行和調試;3、回歸測試和覆蓋率分析。
制定驗證策略和驗證計劃
制定驗證策略和驗證技術主要處理以下三個問題:
(1) 主要測試點和測試用例
首先需要從設計中提取出有實際意義的、可管理的測試空間集合,并且沒有損害其期望的功能;然后根據這些測試點,擬定驗證策略和驗證用例;最后具體化到一個詳細的、可執行的驗證計劃中,作為整個驗證功能的指導。
(2) 驗證平臺的抽象層次
驗證平臺的抽象層次將決定它主要的處理對象:比特、包或者更高層次的數據類型。高層次的抽象建模需要讓驗證平臺中低層次的功能自動化。
(3) 激勵生成和結果檢查原則
這些原則定義了輸入到驗證平臺的激勵是如何提供的,結果是如何檢查的,并判斷測試是否通過。
驗證平臺的搭建和調試
驗證平臺的搭建要以可重用為基本原則,而且方便設計工程師和驗證工程師添加測試用例。在該階段,需要搭建驗證平臺,書寫測試用例并調試。
回歸測試和覆蓋率分析
回歸測試要求能夠周期的批處理運行,激勵必須能夠容易得到重現,成功或失敗能夠自動檢查。覆蓋率顯示出該設計被測試的程度,是驗證收斂的重要標準。
功能驗證的方法和工具
為了提高效率,許多項目采用計算機輔助工程工具來輔助驗證人員創建隨機測試激勵向量。硬件驗證語言在建立隨機測試和功能覆蓋方面具有顯著優勢,它們通常提供專門用于進行功能覆蓋和產生可約束隨機測試激勵向量的數據結構。除了通過輸入測試向量的傳統方法,功能驗證還可以通過形式等效性檢查(形式驗證)、斷言等方式來進行,以達到更高的功能覆蓋率。
功能驗證工具示例
以下是一些功能驗證工具的示例:
Avery 設計 Systems: SimCluster(用于并行邏輯仿真)和 Insight(用于形式驗證)
Breker Verification Systems, Inc.: Trek(一個針對復雜SoCs的基于模型的測試生成工具)
凱登思設計系統
EVE/ZeBu
Mentor Graphics
Nusym Technology
Obsidian 軟件
新思(Synopsys)
通過這些工具,設計人員和驗證工程師可以更高效地進行功能驗證,確保設計的質量和可靠性。
參考資料 >