摘 要:網(wǎng)絡(luò)接口是網(wǎng)絡(luò)芯片的重要組成模塊?;赩MM實現(xiàn)了一個網(wǎng)絡(luò)接口的驗證環(huán)境,并就其參考模型(RM)的設(shè)計與驗證環(huán)境的重用性進行了較為詳細的闡述。該驗證環(huán)境實現(xiàn)了所驗證網(wǎng)絡(luò)接口模塊的零缺陷交付,達到了理想的覆蓋率結(jié)果。就芯片已經(jīng)成功流片且樣片測試通過。
關(guān)鍵詞:VMM; 參考模型; 重用性設(shè)計; 網(wǎng)絡(luò)接口; 覆蓋率統(tǒng)計
中圖分類號: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 引 言
隨著設(shè)計規(guī)模的不斷擴大,設(shè)計的復(fù)雜度也呈指數(shù)級上升,從而驗證工作的難度也越來越大。業(yè)界普遍認可當前驗證工作已經(jīng)占到了整個項目工作量的70%以上。與之相對應(yīng)的,前期的RTL代碼驗證也愈來愈重要,對于大規(guī)模SoC設(shè)計如果在回片測試中發(fā)現(xiàn)重大缺陷意味著巨大的時間損失與金錢損失。大量的經(jīng)驗表明全面細致的RTL代碼驗證可以及早發(fā)現(xiàn)代碼中隱藏的缺陷,極大縮短項目開發(fā)周期,降低項目開發(fā)的后期風險。
模擬驗證使用計算機軟件模擬RTL級電路的運行,易于實現(xiàn)各種復(fù)雜的應(yīng)用場景,并可生成精確的仿真波形,是各種驗證方法中最直接、發(fā)現(xiàn)缺陷最快的,并且模擬驗證還可以在代碼編寫階段與設(shè)計人員配合實現(xiàn)迭代開發(fā)。盡管FPGA仿真驗證與形式驗證憑其優(yōu)勢已在驗證工作中占有了一定的地位,但是模擬驗證始終是驗證工作中最重要的組成部分。同時業(yè)界也一直為提高模擬驗證的效率進行著驗證方法學(xué)的研究。
作者承擔的驗證工作是驗證一款網(wǎng)絡(luò)芯片中支持Utopia Level2[1],GMII[2],Posphy Level2三種網(wǎng)絡(luò)接口協(xié)議與芯片私有特性的網(wǎng)絡(luò)接口模塊。網(wǎng)絡(luò)側(cè)接口是網(wǎng)絡(luò)芯片中重要的組成部分,其對網(wǎng)絡(luò)協(xié)議的支持直接決定了一個網(wǎng)絡(luò)芯片的成功與否。網(wǎng)絡(luò)協(xié)議一直在不斷被更新,網(wǎng)絡(luò)芯片也在不停隨之升級。本文的工作正是基于以上前提實現(xiàn)了一個網(wǎng)絡(luò)側(cè)接口的驗證環(huán)境,該驗證環(huán)境的重用性強,不僅支持上述協(xié)議,還可以輕松地增加對新協(xié)議的支持或?qū)νN協(xié)議的升級。在系列芯片開發(fā)中使用此驗證環(huán)境可有效減少后續(xù)開發(fā)對網(wǎng)絡(luò)側(cè)接口驗證的資源投入。
1 驗證架構(gòu)及實現(xiàn)
1.1 驗證環(huán)境設(shè)計
VMM是Synopsys推出的基于SystemVerilog語言的驗證方法學(xué)。VMM從以O(shè)penVera語言為基礎(chǔ)的RVM發(fā)展而來,它的優(yōu)點是:代碼的可重用性強,驗證的自動化程度高,可以有效保證驗證的質(zhì)量。VMM驗證方法學(xué)在當今SoC設(shè)計領(lǐng)域已有廣泛應(yīng)用,為ASIC產(chǎn)品項目進度的提升提供了很大的幫助[3]。VMM庫包括一系列的標準基本類,主要有vmm_data,vmm_atomic_gen,vmm_xactor,vmm_xactor_callbacks,vmm_channel,vmm_env,vmm_log等。通過對這些基本類的繼承與重載,可構(gòu)造出靈活多樣的驗證環(huán)境。
本文使用VMM實現(xiàn)的驗證環(huán)境由命令層與執(zhí)行層兩部分組成,如圖1所示。
TestCase是命令層的主體,也是驗證人員控制仿真如何進行的惟一接口。在TestCase中定義三部分內(nèi)容:定義隨機測試與直接測試,定義驗證級別,定義驗證方法。
圖1 驗證環(huán)境結(jié)構(gòu)
隨機測試與直接測試聯(lián)合使用是一種高效的驗證方法[4]。隨機測試可以減少人為因素的干擾,能有效提高驗證工作的效率和可靠性。隨機測試對驗證環(huán)境提出的要求是既要覆蓋全面又要符合設(shè)計的規(guī)格特性。本文的驗證環(huán)境使用VMM提供的數(shù)據(jù)基類(vmm_data)實現(xiàn)數(shù)據(jù)與事件的約束。下例是對網(wǎng)絡(luò)協(xié)議類型選擇的約束實現(xiàn):
Class Spec_Sel extends vmm_data;
{
rand enum Spec_Tpye;
rand enum Spec_Level;
rand enum Trans_Err_Level;
rand int Complex_Level;
}
在這個簡單的例子中當協(xié)議(Spec_Level)確定后,其他的變量都會根據(jù)類(Spec_Sel)中定義的約束(Constraint)進一步隨機產(chǎn)生。但是此款芯片內(nèi)部功能的配置參數(shù)卻是彼此約束,沒有一個是絕對獨立的。因此簡單的約束無法讓仿真軟件計算出結(jié)果,而會陷入死循環(huán)。本文的驗證環(huán)境根據(jù)芯片的特性與應(yīng)用場景定義了一個場景變量Situation_Mode作為強相關(guān)參數(shù)隨機的基礎(chǔ),即根據(jù)應(yīng)用場景確定部分參數(shù),進而再產(chǎn)生所有的參數(shù)。隨機測試關(guān)注是否覆蓋到芯片的全部功能特性,而直接測試關(guān)注芯片特定功能的性能與設(shè)計風險。驗證環(huán)境中直接測試的思想以傳統(tǒng)的時序驗證為基礎(chǔ),定義一個Timing_Define基類,這個基類實現(xiàn)時序的抽象描述,驗證人員僅需要在TestCase中重載該基類并增加需要的時序段描述即可。這樣的實現(xiàn)方式有效減少了驗證人員花費在時序編寫上的時間。
Command將命令層行為要求轉(zhuǎn)譯為執(zhí)行層的行為實現(xiàn),由全局配置類Env_cfg與各級行為控制類Env_tranxactor組成。Env_cfg是一個數(shù)據(jù)類,驗證環(huán)境中的所有組件在例化時都會被傳入這個類,從而在TestCase中實現(xiàn)對整個驗證環(huán)境的行為控制。
執(zhí)行層的功能包括激勵產(chǎn)生,驅(qū)動DUT,監(jiān)測DUT輸出,收集覆蓋率信息[5],產(chǎn)生參考數(shù)據(jù),檢查DUT輸出并輸出統(tǒng)計數(shù)據(jù)。執(zhí)行層的驗證方法主要有參考模型比對,斷言檢查與代碼覆蓋率統(tǒng)計。在設(shè)計代碼尚不穩(wěn)定時主要使用前兩種方法,在代碼穩(wěn)定后則加入覆蓋率統(tǒng)計并減少斷言檢查。這樣的安排是出于驗證效率的考慮,每一種驗證方法的使用都需要消耗相應(yīng)的資源(內(nèi)存空間與時間)。合理利用有限資源也是驗證工程師必須要考慮權(quán)衡的。
1.2 參考模型(RM)設(shè)計
參考模型是驗證環(huán)境中最重要的組成部本。本文驗證環(huán)境中的參考模型使用SystemVerilog實現(xiàn)。SystemVerilog語言簡潔,類似于C++,從而可以從較高的抽象級別描述DUT的行為。使用面向?qū)ο缶帉懙膮⒖寄P途哂幸追庋b,代碼重用性高與抽象層次高的優(yōu)點。編寫參考模型需要驗證人員對DUT的規(guī)格特性具備詳盡深入的了解,在此基礎(chǔ)上驗證人員才可以制定出一個高效的驗證策略。對于簡單的算法與協(xié)議類設(shè)計可以采用黑盒測試,而對于較為復(fù)雜設(shè)計則需要采用灰盒測試。
一般的數(shù)字電路驗證的內(nèi)容主要為算法與協(xié)議。這類驗證內(nèi)容具有很強的可預(yù)見性,即已知輸入數(shù)據(jù)與算法或協(xié)議便可以計算出DUT的輸出。由此計算出的結(jié)果可以直接與DUT的輸出數(shù)據(jù)進行一對一的比較,從而驗證DUT的正確性。作者所驗證的DUT并非一個純粹的協(xié)議與算法電路,其設(shè)計規(guī)格中存在大量的時序強相關(guān)功能,并且這些特性直接影響DUT的穩(wěn)定性,某些特定的時序條件會使存在缺陷的DUT異常掛死。因此本文的驗證環(huán)境在參考模型中加入了時序考慮。
參考模型中的時序考慮有兩種實現(xiàn)方式:全面覆蓋與部分預(yù)估。
參考模型根據(jù)數(shù)據(jù)激勵與條件約束產(chǎn)生一系列的參考結(jié)果保存在比較緩沖區(qū)中,比較器將DUT的輸出數(shù)據(jù)與比較緩沖區(qū)中的參考結(jié)果依次比對,如圖2所示。本驗證環(huán)境使用全面覆蓋的方法驗證時序敏感元素較少的設(shè)計模塊,實現(xiàn)這類電路的參考模型計算量較小,生成的參考結(jié)果也較少,從而比對的效率高。對于時序敏感元素較多的設(shè)計模塊若使用全面覆蓋的方式會使參考模型的算法復(fù)雜度呈指數(shù)級增加,需要驗證人員為此投入大量的時間,并且生成的參考結(jié)果數(shù)量也非常龐大。所以本驗證環(huán)境對于時序敏感元素較多的設(shè)計模塊采用部分預(yù)估的方法實現(xiàn)其參考模型。參考模型僅預(yù)估致命性高、出現(xiàn)概率高的結(jié)果。這種方法是驗證效率、資源消耗與缺陷命中率的折衷。部分預(yù)估法根據(jù)綜合考量后的約束計算出部分參考結(jié)果,如果最終DUT的輸出結(jié)果不在參考結(jié)果中則比較器會產(chǎn)生缺陷報告,進而驗證人員根據(jù)缺陷報告為DUT另外設(shè)計直接測試的TestCase。使用部分預(yù)估減少了驗證人員在編寫參考模型時的時間投入,提高了驗證效率。
圖2 時序類設(shè)計的檢查方式
1.3 重用性設(shè)計
驗證環(huán)境的重用性體現(xiàn)在兩個方面:一是不同電路設(shè)計間的重用;二是模塊級到系統(tǒng)級驗證的重用[6]。
對于電路設(shè)計間的重用本驗證環(huán)境重點針對網(wǎng)絡(luò)協(xié)議的升級進行了重用性設(shè)計,使用VMM層次化搭建驗證環(huán)境的特性將大部分環(huán)境組件設(shè)計為完全重用。對于升級的協(xié)議或者特別的接口設(shè)計,驗證環(huán)境僅需要對參考模型(RM)、驅(qū)動接口和激勵生成器(Generator)進行修改,修改方式為從既有基本類派生新類或者通過環(huán)境組件中使用vmm_callback定義的task實現(xiàn)新功能的注入。原有的TestCase中除部分針對性的直接測試用例(如時序特性測試用例)外均可以完全重用。
對于模塊級到系統(tǒng)級驗證的重用,本驗證環(huán)境從系統(tǒng)級到模塊級都設(shè)計了統(tǒng)一的數(shù)據(jù)類型,各模塊級的驗證環(huán)境都采用相同的層次化結(jié)構(gòu),各模塊級的參考模型設(shè)計有統(tǒng)一的對外數(shù)據(jù)通道用于在系統(tǒng)時實現(xiàn)模塊級參考模型的級接。在進行系統(tǒng)級驗證時只需要把各模塊的驗證環(huán)境例化在一個系統(tǒng)級驗證環(huán)境內(nèi)并按層次級聯(lián)便實現(xiàn)了系統(tǒng)級驗證環(huán)境。并且此驗證環(huán)境可以同時支持RTL級仿真與網(wǎng)表級仿真,僅需要在執(zhí)行方針時定義用于區(qū)分的參數(shù)即可。
2 驗證結(jié)果
該驗證環(huán)境采用覆蓋率統(tǒng)計結(jié)果作為最終交付條件,其中DUT的行覆蓋率達到100%,條件覆蓋率達到98%,狀態(tài)機覆蓋率達到100%。
網(wǎng)絡(luò)接口模塊的驗證工作包括模擬仿真驗證與FPGA仿真測試。國內(nèi)的驗證技術(shù)尚不成熟,絕大多數(shù)國內(nèi)公司都把FPGA測試作為產(chǎn)品設(shè)計必不可少的質(zhì)量保證[7]。作者的驗證工作結(jié)果為:FPGA仿真中發(fā)現(xiàn)的設(shè)計缺陷僅占所有已發(fā)現(xiàn)缺陷的3.4%;使用作者設(shè)計的驗證環(huán)境后實際綜合耗時相對于計劃用時共節(jié)約21%,且所節(jié)約時間均為初期預(yù)留給FPGA測試所用。在FPGA測試發(fā)現(xiàn)的缺陷中僅有一個為規(guī)格不明確引入的功能設(shè)計缺陷,且可通過軟件規(guī)避,而其余缺陷均為FPGA測試所使用的Memory模型引入的缺陷。由此可見模擬仿真在功能驗證上完全可以取代FPGA仿真測試,節(jié)省不必要的時間與人力成本投入。
作者負責驗證的網(wǎng)絡(luò)芯片已經(jīng)成功流片。在MPW樣片測試中,網(wǎng)絡(luò)接口模塊達到零缺陷。另外在Pilot版本的芯片中網(wǎng)絡(luò)接口模塊新增約一倍的新規(guī)格,而使用本驗證環(huán)境,僅使用4周就完成了模塊新增特性的驗證,之后僅兩周就實現(xiàn)了缺陷的收斂。
3 結(jié) 語
介紹了基于VMM實現(xiàn)的一個網(wǎng)絡(luò)側(cè)接口模塊的驗證環(huán)境。該驗證環(huán)境驗實現(xiàn)了DUT的零缺陷交付,并且在后續(xù)升級版本中憑借其出色的重用性保證了Pilot版本芯片的交付,節(jié)約了寶貴的時間。此驗證環(huán)境可以作為同類芯片的驗證IP使用,對于設(shè)計同類系列化產(chǎn)品的團隊,使用該驗證環(huán)境可以有效提高產(chǎn)品的開發(fā)效率。
另外FPGA的邏輯單元數(shù)量有限,測試大規(guī)模SoC芯片需要耗費大量時間與硬件資源。而一個設(shè)計完善的模擬仿真驗證環(huán)境完全可以取代FPGA在SoC芯片開發(fā)中的作用,有效提高開發(fā)效率,并節(jié)約成本。
參考文獻
[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總線驗證平臺設(shè)計與實現(xiàn)[J].計算機工程與設(shè)計,2008,29(7):1713-1715,1753.
[7]邊計年.集成電路設(shè)計驗證方法與技術(shù)[C]//第五屆中國測試學(xué)術(shù)會議論文集.北京:[出版者不詳],2008.
[8]ITU-T. PTM Bounding G.998.2[S]. [S.l.]: ITU-T, 2005.