標籤:
驗證是確保設計和預定的設計期望一致的過程,設計期望通常是通過設計規範來定義的。對於晶片設計,在不同的階段可以分為:寄存器傳輸級(RTL)的功能驗證、門級的模擬驗證、形式驗證以及時序驗證。我們通常所說的驗證一般是指RTL驗證。
驗證工作根據設計規範進行,詳細的設計規範是RTL編碼的依據,也是驗證工作的依據。當驗證過程發現被測設計(DUT)的響應與驗證平台(Testbench)的期望不符時,需要根據設計規範判斷是DUT出現錯誤還是Testbench出現錯誤,因此完整的、詳細的設計規範是驗證工作的重要起點。 當驗證工程師拿到設計規範後,就可以開展驗證工作了,驗證工作可以分成三個階段:計劃階段,實施階段和分析總結階段。
計劃階段主要工作是充分理解設計規範,根據設計規範提取驗證需求和編寫驗證計劃。驗證計劃中,需要提取驗證需求,制定驗證策略,確定驗證語言和驗證方法學,驗證方法,驗證平台的層次和架構,規劃測試案例及結果檢查機制等等。總之後續驗證工作中需要的事物都可以在驗證計劃中體現出來。對於一個被測設計而言,驗證的目的是確保該設計能成功的完成預期的任務,準確的表達設計規範,除了理解設計規範的細節之外,還需要明確預定功能的設計邊界。比如我們在測試一個MP3產品時,不能測試是否可以打電話,但一般要測試廣播功能,也就是說邊界之外的功能是不用去關心的。
實施階段是根據驗證計劃來編碼實現驗證DUT的過程,主要包括搭建驗證平台,建立測試案例,開發模擬及統計分析指令碼,用例的運行及調試。驗證平台主要用於產生激勵,把激勵施加到DUT上去,捕捉響應並進行正確性檢查。同時還會對平台代碼的層次化、重用性、功能覆蓋率、代碼的模擬效能和自動化方面做一些考量。驗證一般使用專有的硬體驗證語言(HVL),並使用驗證方法學建立一個可升級、可預期、可重用的驗證環境。當前主流的驗證方法有基於Specman E語言的eRM, 基於Systemverilog語言的VMM、OVM與UVM,尤其以UVM最為主流,它們都涵蓋了多種先進的驗證技術。既能提升現有驗證方法,也能充分利用驗證過程自動化,功能覆蓋,斷言這些特點建立一個全面通用驗證環境。驗證過程中需要使用指令碼運行模擬,進行結果檢查,資料收集及分析,協助調試並debug,通常使用Makefile、shell、perl、python、TCL等指令碼語言。而前端模擬工具一般使用Mentor的Questsim,Synopsys的VCS以及Cadence的IUS,每家工具都有各自的特點,使用其中任意一種都可以很好的完成驗證模擬工作。
分析總結階段包括迴歸測試、覆蓋率分析及輸出驗證報告。覆蓋率測量資料有兩方面重要作用:一方面能明確指出設計中還沒有被充分驗證到的部分,確定驗證過程的漏洞。並通過補充特定的直接測試案例,或改變帶約束的隨機測試案例的參數來提高驗證的充分性。另一方面,覆蓋率測量資料是驗證已經足夠充分,可進行流片的指標。覆蓋率分為兩大類:程式碼涵蓋範圍和功能覆蓋率。程式碼涵蓋範圍包括多種形式(行覆蓋,翻轉覆蓋,條件覆蓋,狀態機器覆蓋,運算式覆蓋等),它是一個自動化過程,模擬工具可以自動收集並輸出報告。在一個特定模擬運行中,覆蓋率可以體現所有 RTL設計描述代碼是否被執行。程式碼涵蓋範圍是必要條件,但不是充分條件。功能覆蓋率則提供了一個外在度量方法,確定設計規範功能點有多少被正確實現。覆蓋率測量資料達到指標後,可以表示RTL驗證工作告一段落。最後,需要把驗證結果、覆蓋率資料,以及覆蓋率分析結果輸出到驗證報告並存檔,驗證報告還應包含整個驗證過程中遇到的問題及解決方案等。
RTL驗證結束後,有的還需要進行後端網表驗證及輔助晶片測試等工作。總之,對RTL驗證來說,痛點在於如何能夠產生所有可能的輸入施加到DUT上,並確定DUT輸出正確與否。這就要求驗證工程師不斷深入理解設計規範並轉化為有效測試案例,儘可能的提早發現設計缺陷並修正,使所驗證的模組和整個晶片能夠100%完成預期的功能。
註:?本文為“E課網”原創,著作權歸“E課網”所有,歡迎分享!如需轉載請回複“轉載”。轉載時請註明文章作者“E課網”.
kris. IC驗證領域專家,從事IC驗證工作多年,擁有豐富的驗證理論知識和項目實踐。晶片設計驗證資深講師,國核自儀企業培訓(SVA),多家整合電路研發企業晶片驗證顧問
(轉)IC驗證概述