摘 要:網絡接口是網絡芯片的重要組成模塊。基于VMM實現了一個網絡接口的驗證環境,并就其參考模型(RM)的設計與驗證環境的重用性進行了較為詳細的闡述。該驗證環境實現了所驗證網絡接口模塊的零缺陷交付,達到了理想的覆蓋率結果。就芯片已經成功流片且樣片測試通過。
關鍵詞:VMM; 參考模型; 重用性設計; 網絡接口; 覆蓋率統計
中圖分類號:TN919文獻標識碼:A
文章編號:1004-373X(2010)15-0125-03
Verification of Network Interface Based on VMM
LIANG Pu, WANG Xin-an
(Key Lab of Integrated Micro-system Science Engineering Applications, Shenzhen Graduate School of Peking University, Shenzhen 518055, China)
Abstract: Network interface is an important module in a network chip. A network interface verification environment realized on the basis of VMM is introduced in this paper. The reference module design and the reusability of the verification environment are elaborated. The zero-defect delivery of the verified network interface module was implemented by the verification environment. The ideal coverage rate was achieved. The chip passed all the tests.
Keywords: VMM; reference model; reusability design; network interface; statistics of coverage rate
0 引 言
隨著設計規模的不斷擴大,設計的復雜度也呈指數級上升,從而驗證工作的難度也越來越大。業界普遍認可當前驗證工作已經占到了整個項目工作量的70%以上。與之相對應的,前期的RTL代碼驗證也愈來愈重要,對于大規模SoC設計如果在回片測試中發現重大缺陷意味著巨大的時間損失與金錢損失。大量的經驗表明全面細致的RTL代碼驗證可以及早發現代碼中隱藏的缺陷,極大縮短項目開發周期,降低項目開發的后期風險。
模擬驗證使用計算機軟件模擬RTL級電路的運行,易于實現各種復雜的應用場景,并可生成精確的仿真波形,是各種驗證方法中最直接、發現缺陷最快的,并且模擬驗證還可以在代碼編寫階段與設計人員配合實現迭代開發。盡管FPGA仿真驗證與形式驗證憑其優勢已在驗證工作中占有了一定的地位,但是模擬驗證始終是驗證工作中最重要的組成部分。同時業界也一直為提高模擬驗證的效率進行著驗證方法學的研究。
作者承擔的驗證工作是驗證一款網絡芯片中支持Utopia Level2[1],GMII[2],Posphy Level2三種網絡接口協議與芯片私有特性的網絡接口模塊。網絡側接口是網絡芯片中重要的組成部分,其對網絡協議的支持直接決定了一個網絡芯片的成功與否。網絡協議一直在不斷被更新,網絡芯片也在不停隨之升級。本文的工作正是基于以上前提實現了一個網絡側接口的驗證環境,該驗證環境的重用性強,不僅支持上述協議,還可以輕松地增加對新協議的支持或對同種協議的升級。在系列芯片開發中使用此驗證環境可有效減少后續開發對網絡側接口驗證的資源投入。
1 驗證架構及實現
1.1 驗證環境設計
VMM是Synopsys推出的基于SystemVerilog語言的驗證方法學。VMM從以OpenVera語言為基礎的RVM發展而來,它的優點是:代碼的可重用性強,驗證的自動化程度高,可以有效保證驗證的質量。VMM驗證方法學在當今SoC設計領域已有廣泛應用,為ASIC產品項目進度的提升提供了很大的幫助[3]。VMM庫包括一系列的標準基本類,主要有vmm_data,vmm_atomic_gen,vmm_xactor,vmm_xactor_callbacks,vmm_channel,vmm_env,vmm_log等。通過對這些基本類的繼承與重載,可構造出靈活多樣的驗證環境。
本文使用VMM實現的驗證環境由命令層與執行層兩部分組成,如圖1所示。
TestCase是命令層的主體,也是驗證人員控制仿真如何進行的惟一接口。在TestCase中定義三部分內容:定義隨機測試與直接測試,定義驗證級別,定義驗證方法。
圖1 驗證環境結構
隨機測試與直接測試聯合使用是一種高效的驗證方法[4]。隨機測試可以減少人為因素的干擾,能有效提高驗證工作的效率和可靠性。隨機測試對驗證環境提出的要求是既要覆蓋全面又要符合設計的規格特性。本文的驗證環境使用VMM提供的數據基類(vmm_data)實現數據與事件的約束。下例是對網絡協議類型選擇的約束實現:
Class Spec_Sel extends vmm_data;
{
rand enum Spec_Tpye;
rand enum Spec_Level;
rand enum Trans_Err_Level;
rand int Complex_Level;
}
在這個簡單的例子中當協議(Spec_Level)確定后,其他的變量都會根據類(Spec_Sel)中定義的約束(Constraint)進一步隨機產生。但是此款芯片內部功能的配置參數卻是彼此約束,沒有一個是絕對獨立的。因此簡單的約束無法讓仿真軟件計算出結果,而會陷入死循環。本文的驗證環境根據芯片的特性與應用場景定義了一個場景變量Situation_Mode作為強相關參數隨機的基礎,即根據應用場景確定部分參數,進而再產生所有的參數。隨機測試關注是否覆蓋到芯片的全部功能特性,而直接測試關注芯片特定功能的性能與設計風險。驗證環境中直接測試的思想以傳統的時序驗證為基礎,定義一個Timing_Define基類,這個基類實現時序的抽象描述,驗證人員僅需要在TestCase中重載該基類并增加需要的時序段描述即可。這樣的實現方式有效減少了驗證人員花費在時序編寫上的時間。
Command將命令層行為要求轉譯為執行層的行為實現,由全局配置類Env_cfg與各級行為控制類Env_tranxactor組成。Env_cfg是一個數據類,驗證環境中的所有組件在例化時都會被傳入這個類,從而在TestCase中實現對整個驗證環境的行為控制。
執行層的功能包括激勵產生,驅動DUT,監測DUT輸出,收集覆蓋率信息[5],產生參考數據,檢查DUT輸出并輸出統計數據。執行層的驗證方法主要有參考模型比對,斷言檢查與代碼覆蓋率統計。在設計代碼尚不穩定時主要使用前兩種方法,在代碼穩定后則加入覆蓋率統計并減少斷言檢查。這樣的安排是出于驗證效率的考慮,每一種驗證方法的使用都需要消耗相應的資源(內存空間與時間)。合理利用有限資源也是驗證工程師必須要考慮權衡的。
1.2 參考模型(RM)設計
參考模型是驗證環境中最重要的組成部本。本文驗證環境中的參考模型使用SystemVerilog實現。SystemVerilog語言簡潔,類似于C++,從而可以從較高的抽象級別描述DUT的行為。使用面向對象編寫的參考模型具有易封裝,代碼重用性高與抽象層次高的優點。編寫參考模型需要驗證人員對DUT的規格特性具備詳盡深入的了解,在此基礎上驗證人員才可以制定出一個高效的驗證策略。對于簡單的算法與協議類設計可以采用黑盒測試,而對于較為復雜設計則需要采用灰盒測試。
一般的數字電路驗證的內容主要為算法與協議。這類驗證內容具有很強的可預見性,即已知輸入數據與算法或協議便可以計算出DUT的輸出。由此計算出的結果可以直接與DUT的輸出數據進行一對一的比較,從而驗證DUT的正確性。作者所驗證的DUT并非一個純粹的協議與算法電路,其設計規格中存在大量的時序強相關功能,并且這些特性直接影響DUT的穩定性,某些特定的時序條件會使存在缺陷的DUT異常掛死。因此本文的驗證環境在參考模型中加入了時序考慮。
參考模型中的時序考慮有兩種實現方式:全面覆蓋與部分預估。
參考模型根據數據激勵與條件約束產生一系列的參考結果保存在比較緩沖區中,比較器將DUT的輸出數據與比較緩沖區中的參考結果依次比對,如圖2所示。本驗證環境使用全面覆蓋的方法驗證時序敏感元素較少的設計模塊,實現這類電路的參考模型計算量較小,生成的參考結果也較少,從而比對的效率高。對于時序敏感元素較多的設計模塊若使用全面覆蓋的方式會使參考模型的算法復雜度呈指數級增加,需要驗證人員為此投入大量的時間,并且生成的參考結果數量也非常龐大。所以本驗證環境對于時序敏感元素較多的設計模塊采用部分預估的方法實現其參考模型。參考模型僅預估致命性高、出現概率高的結果。這種方法是驗證效率、資源消耗與缺陷命中率的折衷。部分預估法根據綜合考量后的約束計算出部分參考結果,如果最終DUT的輸出結果不在參考結果中則比較器會產生缺陷報告,進而驗證人員根據缺陷報告為DUT另外設計直接測試的TestCase。使用部分預估減少了驗證人員在編寫參考模型時的時間投入,提高了驗證效率。
圖2 時序類設計的檢查方式
1.3 重用性設計
驗證環境的重用性體現在兩個方面:一是不同電路設計間的重用;二是模塊級到系統級驗證的重用[6]。
對于電路設計間的重用本驗證環境重點針對網絡協議的升級進行了重用性設計,使用VMM層次化搭建驗證環境的特性將大部分環境組件設計為完全重用。對于升級的協議或者特別的接口設計,驗證環境僅需要對參考模型(RM)、驅動接口和激勵生成器(Generator)進行修改,修改方式為從既有基本類派生新類或者通過環境組件中使用vmm_callback定義的task實現新功能的注入。原有的TestCase中除部分針對性的直接測試用例(如時序特性測試用例)外均可以完全重用。
對于模塊級到系統級驗證的重用,本驗證環境從系統級到模塊級都設計了統一的數據類型,各模塊級的驗證環境都采用相同的層次化結構,各模塊級的參考模型設計有統一的對外數據通道用于在系統時實現模塊級參考模型的級接。在進行系統級驗證時只需要把各模塊的驗證環境例化在一個系統級驗證環境內并按層次級聯便實現了系統級驗證環境。并且此驗證環境可以同時支持RTL級仿真與網表級仿真,僅需要在執行方針時定義用于區分的參數即可。
2 驗證結果
該驗證環境采用覆蓋率統計結果作為最終交付條件,其中DUT的行覆蓋率達到100%,條件覆蓋率達到98%,狀態機覆蓋率達到100%。
網絡接口模塊的驗證工作包括模擬仿真驗證與FPGA仿真測試。國內的驗證技術尚不成熟,絕大多數國內公司都把FPGA測試作為產品設計必不可少的質量保證[7]。作者的驗證工作結果為:FPGA仿真中發現的設計缺陷僅占所有已發現缺陷的3.4%;使用作者設計的驗證環境后實際綜合耗時相對于計劃用時共節約21%,且所節約時間均為初期預留給FPGA測試所用。在FPGA測試發現的缺陷中僅有一個為規格不明確引入的功能設計缺陷,且可通過軟件規避,而其余缺陷均為FPGA測試所使用的Memory模型引入的缺陷。由此可見模擬仿真在功能驗證上完全可以取代FPGA仿真測試,節省不必要的時間與人力成本投入。
作者負責驗證的網絡芯片已經成功流片。在MPW樣片測試中,網絡接口模塊達到零缺陷。另外在Pilot版本的芯片中網絡接口模塊新增約一倍的新規格,而使用本驗證環境,僅使用4周就完成了模塊新增特性的驗證,之后僅兩周就實現了缺陷的收斂。
3 結 語
介紹了基于VMM實現的一個網絡側接口模塊的驗證環境。該驗證環境驗實現了DUT的零缺陷交付,并且在后續升級版本中憑借其出色的重用性保證了Pilot版本芯片的交付,節約了寶貴的時間。此驗證環境可以作為同類芯片的驗證IP使用,對于設計同類系列化產品的團隊,使用該驗證環境可以有效提高產品的開發效率。
另外FPGA的邏輯單元數量有限,測試大規模SoC芯片需要耗費大量時間與硬件資源。而一個設計完善的模擬仿真驗證環境完全可以取代FPGA在SoC芯片開發中的作用,有效提高開發效率,并節約成本。
參考文獻
[1]ITU-T. ATM Bounding G.998.1[S]. [S.l.]: ITU-T, 2005.
[2]IEEE. Std 802.3[S/OL]. [2006-07-26]. http://www.netyi.net/.
[3]BERGERON Janick. Writing testbench using system verilog[M]. New York: Springer Science Business Media, Inc. Publishers, 2006.
[4]KEAVENEY Martin, MCMAHON Anthony, O′KEEFFE Niall. The development of advanced verification[J]. environment using system verilog, 2008(6): 47-51.
[5]WU Ying-pan, YU Li-xin, LAN Li-dong, et al. A cove-rage-driven constrant random-based functional verification method of memory controller[C]. The 19th IEEE/IFIP International Symposium on Rapid System Prototyping. [S.l.]: The ATM Technical Committee, 1995.
[6]侯秋菊,沈海華.IP可重用的AMBA AXI總線驗證平臺設計與實現[J].計算機工程與設計,2008,29(7):1713-1715,1753.
[7]邊計年.集成電路設計驗證方法與技術[C]//第五屆中國測試學術會議論文集.北京:[出版者不詳],2008.
[8]ITU-T. PTM Bounding G.998.2[S]. [S.l.]: ITU-T, 2005.