李 磊,羅勝欽
(同濟(jì)大學(xué)電子科學(xué)與技術(shù)系,上海 201804)
隨著集成電路設(shè)計(jì)向超大規(guī)模發(fā)展,芯片驗(yàn)證工作的難度在不斷增大,驗(yàn)證的工作量已經(jīng)占到整個SOC研發(fā)的70%左右,芯片驗(yàn)證直接影響到芯片上市的時間,因此提高芯片驗(yàn)證的效率已變得至關(guān)重要[1]。
VMM是synopsys公司推出的基于system verilog的一套驗(yàn)證方法學(xué),繼承于RVM。利用VMM的層次化、隨機(jī)約束等特點(diǎn),能有效提升現(xiàn)有的驗(yàn)證方法,快速搭建具有目標(biāo)模塊的驗(yàn)證環(huán)境[2]。
SOC驗(yàn)證可以分為集成驗(yàn)證IV(Integrated Verification)和系統(tǒng)驗(yàn)證SV(System Verification)。本文主要介紹SOC集成驗(yàn)證,采用VMM驗(yàn)證方法學(xué)和DesignWare VIP,Master例化為VIP Interface模型,通過約束VIP Transaction參數(shù)產(chǎn)生各種定向激勵;通過約束Scenario Class產(chǎn)生各種隨機(jī)激勵。
集成驗(yàn)證需要完成的任務(wù)包括:
(1)驗(yàn)證各功能模塊是否正常連接;
(2)驗(yàn)證各模塊對片外IO是否連接正常;
(3)驗(yàn)證各模塊間的互聯(lián)是否正常,例如DMA請求信號和VIC請求信號;
(4)驗(yàn)證各層總線的地址映射是否正常;
(5)Memory地址遍歷和隨機(jī)測試;
(6)多Master沖突檢測等。
集成驗(yàn)證是基于時鐘周期的測試,能夠基于時序非常方便地發(fā)送各種不同的操作,可以彌補(bǔ)系統(tǒng)驗(yàn)證的不足;同時由于不需要啟動系統(tǒng),集成驗(yàn)證具有運(yùn)行速度快的特點(diǎn)。集成驗(yàn)證在芯片驗(yàn)證中極其重要。
在SOC集成驗(yàn)證中需要將每個Master替換為VIP Interface模型,通過例化的模型訪問所有的IP寄存器和Memory地址空間,驗(yàn)證架構(gòu)互連的正確性。項(xiàng)目的集成驗(yàn)證平臺采用VMM方法。圖1顯示了VMM層次化驗(yàn)證平臺的結(jié)構(gòu)[3]。
圖1 VMM層次化驗(yàn)證平臺結(jié)構(gòu)圖
VMM驗(yàn)證平臺有多個層組成,主要包括圖1中的測試層、場景層、功能層、命令層和信號層,反映了設(shè)計(jì)所處理數(shù)據(jù)的抽象層次。驗(yàn)證平臺能滿足不同測試用例的各種要求,測試用例的編寫位于該驗(yàn)證平臺的頂層,每個層次都能給上層提供一系列的服務(wù),并通過抽象將低層次的細(xì)節(jié)隱藏起來[4]。
集成驗(yàn)證是否高效,跟集成驗(yàn)證環(huán)境的優(yōu)劣密切相關(guān)。其中,集成驗(yàn)證環(huán)境的歸一化對集成驗(yàn)證工作具有重要意義。
集成驗(yàn)證環(huán)境的搭建是需要花費(fèi)很多人力時間才能完成的。在追求芯片快速上市的今天,一個項(xiàng)目搭建一個全新的驗(yàn)證環(huán)境已經(jīng)無法讓人接受[5]。集成驗(yàn)證環(huán)境的歸一化主要體現(xiàn)在一些公有目錄和文件的存放具有統(tǒng)一性,可被其他項(xiàng)目重用,從而避免一個項(xiàng)目一個驗(yàn)證環(huán)境的情況,對于新的項(xiàng)目只需修改一小部分文件即可。
本項(xiàng)目采用可歸一化的驗(yàn)證環(huán)境,在驗(yàn)證環(huán)境搭建中減少了很多工作量。
可歸一化SOC驗(yàn)證環(huán)境文件的存放如下:
|—Verification // 驗(yàn)證的總目錄
|—common // 系統(tǒng)驗(yàn)證和集成驗(yàn)證公共目錄
|—bin // 公共腳本
|—testbench //存放公共的測試文件
|—vfilelists //存放所有的RTL代碼
|—pmap //存放IP的pmap文件
|—mem-model //存放存儲器模型
……
|—iv // 集成驗(yàn)證目錄
|—env //驗(yàn)證環(huán)境文件的存放
|—sim //仿真開始目錄
|—log //仿真log文件夾|—wave //仿真波形文件夾
|—output //編譯仿真過程文件
……
|—tc //驗(yàn)證用例目錄
|—reg //寄存器測試用例目錄
|—mem //Memory測試用例目錄
……
|—script //腳本文件目錄
|—vmt_bfm //Vmtmaster的bfm目錄
……
其中,env文件下存放著VMM驗(yàn)證代碼模板。Ahb_env.sv主要用于把各個Master、slave和他們各自的數(shù)據(jù)通道連接起來,起到貫穿所有組件的作用。Ahb_gen.sv用于產(chǎn)生各種激勵,通過約束Vip transaction參數(shù)來定義上層激勵函數(shù)。Ahb_defines.sv包含系統(tǒng)使用的宏定義。
對于架構(gòu)、功能等不同的片上系統(tǒng),SOC驗(yàn)證環(huán)境的修改不可避免,但是有了可歸一化的SOC驗(yàn)證環(huán)境,其繼承性就大大加強(qiáng)。根據(jù)歸一化驗(yàn)證平臺,就可快速搭建一個新項(xiàng)目的SOC驗(yàn)證環(huán)境。
AMBA總線是ARM公司推出的SOC總線,應(yīng)用廣泛。本項(xiàng)目也是基于AMBA總線架構(gòu),采用ARM9處理器,SOC的集成驗(yàn)證環(huán)境是基于VMM和DesignWare VIP。
V M M提供了用于實(shí)現(xiàn)驗(yàn)證環(huán)境的基本類vmm_env,任何驗(yàn)證環(huán)境都從該類繼承,該類控制著整個仿真的進(jìn)程,用于控制其他類的實(shí)例化,進(jìn)程啟動和結(jié)束[6]。
Vmm_env提供的基本函數(shù)和方法使得環(huán)境的搭建到仿真的完成只需9步操作。這9步操作均在ahb_env.sv中定義和配置,分別是:env.gen_cfg,env.build,env.reset_dut,env.cfg_dut,env.start,env.wait_for_end,env.stop,env.cleanup,env.report。
在這9步操作中,我們可以根據(jù)具體驗(yàn)證的要求和任務(wù),在 env.build、env.start、env.wait_for_end、env.stop這幾個步驟中進(jìn)行設(shè)定。圖2是SOC系統(tǒng)芯片結(jié)構(gòu)簡圖。
圖2 SOC系統(tǒng)芯片結(jié)構(gòu)簡圖
在SOC集成驗(yàn)證中我們將每個Master替換為AHB VIP Interface模型,通過例化的模型訪問所有的IP寄存器和Memory地址空間[7]。
測試層testcase主要是驗(yàn)證用例的編寫。而VMM_SCENARIO_GEN類由宏生成,根據(jù)指定的VMM_DATA類來生成場景發(fā)生器。
本文的測試用例構(gòu)造最常用的方式是:`ARMD.write_32(`asicSYSCTRL,32’h00000010)。此語句是Master ARMD訪問系統(tǒng)控制器SYS CTRL的一個寄存器。其中,`ARMD是一個宏定義,為場景層的generator發(fā)生器的一個通道。在write_32函數(shù)中,運(yùn)用了VMM_channel類out_chan.put(item),主要作用是generator將數(shù)據(jù)包放入通向transactor的channel中。
AHB VIP模型在VMM驗(yàn)證中起著重要的作用,在VMM中實(shí)現(xiàn)的是功能層和命令層的功能。這里采用的是DW_Vip_ahb_master_rvm類,此類具有事務(wù)處理器(transacor)的功能。構(gòu)造函數(shù)為:
Function new(
string Instname,
AhbmasterPort portconnect,
dw_vip_ahb_master_configration cfg,
dw_vip_ahb_transaction_channel in_chan,
dw_vip_ahb_transaction_channel out_chan,
)
從in_chan輸入的transaction,經(jīng)過transactor解析后,轉(zhuǎn)換成AHB Masterport的信號。通過AHB Masterport interface和DUT交互,從而完成了從測試層到DUT接口的激勵傳輸。
從測試層到達(dá)信號層的過程很好地體現(xiàn)了VMM驗(yàn)證方法的核心。
VMM驗(yàn)證與傳統(tǒng)的功能驗(yàn)證區(qū)別在于:傳統(tǒng)的功能驗(yàn)證是在DUT的接口上直接輸入激勵,通過DUT檢查響應(yīng)。這種方法抽象級別低,在復(fù)雜的SOC中不容易定位錯誤,驗(yàn)證耗時也長;VMM驗(yàn)證如上述的過程,是抽象級別高的驗(yàn)證方法,testcase采用面向?qū)ο蟮膕ystem verilog語言,有豐富的類庫支持,能有效提高驗(yàn)證的功能覆蓋率和驗(yàn)證的效率[8]。
在越來越高的抽象層次上進(jìn)行驗(yàn)證是驗(yàn)證方法學(xué)不斷發(fā)展的趨勢。本文以AMBA總線架構(gòu)系統(tǒng)芯片的集成驗(yàn)證為例,采用VMM和DW VIP的集成驗(yàn)證方法。驗(yàn)證環(huán)境歸一性強(qiáng),進(jìn)行簡單修改即可被新項(xiàng)目繼承,同時驗(yàn)證環(huán)境采用大量的腳本文件,自動化程度高,節(jié)省了人力資源和時間,可顯著地提高驗(yàn)證的工作效率,從而縮短整個復(fù)雜SOC的研發(fā)時間。
[1]Chris Spear. SystemVerilog for Verification[M].Springer,2006,1-18.
[2]Verification Methodology Mannual[P].Synopsys,Inc,&ARM,Inc.
[3]Janick Bergeron,Eduard Cemy,Alan Hunter等著,夏宇聞等譯. System Verilog驗(yàn)證方法學(xué)[M].北京:北京航空航天大學(xué)出版社,2007.
[4]Jinbin Hu,Xiaoguang Li.System verification based on VMM and SOPC[C].Computer Science and Information Technology (ICCSIT), 2010 3rd IEEE International Conference.2010:41-43.
[5]孫海平,丁健. 系統(tǒng)芯片驗(yàn)證方法與技術(shù)[M].北京:電子工業(yè)出版社,2005.
[6]Keaveney Martin ,McMahon Anthony,O’Keeffe Niall,et al..The development of advanced verification environments using System Verilog[C]. Signals and Systems Conference,208. (ISSC 2008). IET Irish.2008:325-330.
[7]Lu Kong,Wu-Chen Wu,Yong He,et al.. Design of SoC verification platform based on VMM methodology[C]. ASIC,2009. ASICON ’09. IEEE 8th International Conference.2009:1272-1275.
[8]Janick Bergeron.Writing Testbenches using SystemVerilog[M].Springer,2006.