(轉)IC驗證概述


        驗證是確保設計和預定的設計期望一致的過程,設計期望通常是通過設計規范來定義的。對於芯片設計,在不同的階段可以分為:寄存器傳輸級(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),多家集成電路研發企業芯片驗證顧問


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM