概述
---隨著IC設計的復雜度和規(guī)模不斷增大,設計的功能驗證變得越來越復雜。在目前的IC設計中,設計周期的70%~80%都花費在功能驗證上。因此,功能驗證已成為現(xiàn)代IC設計中的瓶頸部分,本文首先綜合介紹功能驗證的概念和現(xiàn)階段正在應用的幾種功能驗證方法,在此基礎上,提出一種在實際項目中切實可行的功能驗證解決方案。
功能驗證概念和常用驗證方法
---1.功能驗證的概念
---在IC設計中,設計者根據(jù)設計規(guī)范文檔編寫的功能模塊可能和規(guī)范文檔實際描述的功能有些偏差,通過功能驗證找出功能模塊中存在的邏輯缺陷,保證邏輯設計的正確性。因此,功能驗證的目標是盡量確保設計能夠?qū)崿F(xiàn)規(guī)范文檔中所描述的功能。
---在實際的項目設計中,有幾種常見的功能驗證方法,下面簡要介紹。
---2.形式驗證
---形式驗證是一種使用數(shù)學方法檢查設計能否滿足某些屬性/特征的驗證方法,其應用范圍及對硬件環(huán)境要求的苛刻使它不適合用于系統(tǒng)級的功能驗證。當前,形式驗證主要應用于模塊級和單元級設計的功能驗證,現(xiàn)階段還不能達到廣泛的應用。
---3.軟件模擬驗證
---軟件模擬是目前使用最為廣泛的一種驗證手段,使用這種功能驗證方法,必須手工輸入測試激勵。但是,人工編寫輸入激勵會導致部分設計錯誤無法發(fā)現(xiàn),同時,隨著設計規(guī)模的變大,手工編寫輸入激勵變得更加困難,編寫測試向量費時、費力,又非常難以理解和維護。
---4.測試向量自動生成
---為了改善功能驗證的效率,測試向量自動生成技術成為近年來的研究重點,高級硬件驗證語言的出現(xiàn)就是驗證領域研究的最新成果。使用高級語言可以從更高的抽象層次上產(chǎn)生測試向量,做到測試向量生成、數(shù)據(jù)正確性檢查、時序正確性檢查的自動化和功能點覆蓋率分析。Verisity公司開發(fā)的Specman Elite軟件和E語言提供了一種很好的驗證解決方案。E語言是一種驗證語言,它提供了簡單而有效的語法,完全把驗證工程師從編寫測試向量中解放出來,使其把大部分精力放在對功能模塊的特征/特性的理解上,極大地提高了驗證效率。同時,傳統(tǒng)的驗證方法沒有辦法實現(xiàn)驗證環(huán)境的重用性,這是因為被驗證的設計決定了驗證環(huán)境的搭建,設計改動時,就要改動驗證環(huán)境。E語言作為一種驗證高級語言,可以很好地搭建具有可重用性的驗證環(huán)境,這種驗證方法在現(xiàn)代VLSI設計中是必不可少的。它可以很有效地減少驗證工作對研發(fā)成本的占用,從而達到降低研發(fā)成本和加速產(chǎn)品上市的目的。類似的高級驗證語言還有JEDA公司的JEDA語言和Synopsys公司的Vera語言。
---5.斷言驗證
---斷言驗證基于數(shù)理邏輯中的概念,可以表示設計描述中的相關屬性和規(guī)則,目前它廣泛應用于RTL級驗證。通過在HDL設計中添加的斷言描述,在軟件模擬過程中可以實時監(jiān)視相關屬性和規(guī)則,是一種非常有效的驗證方法。但是,使用斷言驗證方法需要選擇學習哪一種斷言驗證語言,涉及到巨大的學習開銷。支持斷言驗證的方法和語言有好幾種,如IBM的Sugar語言、商品化工具0-in Check等。