李 磊,羅勝欽
(同濟大學電子科學與技術(shù)系,上海 201804)
隨著集成電路設(shè)計向超大規(guī)模發(fā)展,芯片驗證工作的難度在不斷增大,驗證的工作量已經(jīng)占到整個SOC研發(fā)的70%左右,芯片驗證直接影響到芯片上市的時間,因此提高芯片驗證的效率已變得至關(guān)重要[1]。
VMM是synopsys公司推出的基于system verilog的一套驗證方法學,繼承于RVM。利用VMM的層次化、隨機約束等特點,能有效提升現(xiàn)有的驗證方法,快速搭建具有目標模塊的驗證環(huán)境[2]。
SOC驗證可以分為集成驗證IV(Integrated Verification)和系統(tǒng)驗證SV(System Verification)。本文主要介紹SOC集成驗證,采用VMM驗證方法學和DesignWare VIP,Master例化為VIP Interface模型,通過約束VIP Transaction參數(shù)產(chǎn)生各種定向激勵;通過約束Scenario Class產(chǎn)生各種隨機激勵。
集成驗證需要完成的任務(wù)包括:
(1)驗證各功能模塊是否正常連接;
(2)驗證各模塊對片外IO是否連接正常;
(3)驗證各模塊間的互聯(lián)是否正常,例如DMA請求信號和VIC請求信號;
(4)驗證各層總線的地址映射是否正常;
(5)Memory地址遍歷和隨機測試;
(6)多Master沖突檢測等。
集成驗證是基于時鐘周期的測試,能夠基于時序非常方便地發(fā)送各種不同的操作,可以彌補系統(tǒng)驗證的不足;同時由于不需要啟動系統(tǒng),集成驗證具有運行速度快的特點。集成驗證在芯片驗證中極其重要。
在SOC集成驗證中需要將每個Master替換為VIP Interface模型,通過例化的模型訪問所有的IP寄存器和Memory地址空間,驗證架構(gòu)互連的正確性。項目的集成驗證平臺采用VMM方法。圖1顯示了VMM層次化驗證平臺的結(jié)構(gòu)[3]。
圖1 VMM層次化驗證平臺結(jié)構(gòu)圖
VMM驗證平臺有多個層組成,主要包括圖1中的測試層、場景層、功能層、命令層和信號層,反映了設(shè)計所處理數(shù)據(jù)的抽象層次。驗證平臺能滿足不同測試用例的各種要求,測試用例的編寫位于該驗證平臺的頂層,每個層次都能給上層提供一系列的服務(wù),并通過抽象將低層次的細節(jié)隱藏起來[4]。
集成驗證是否高效,跟集成驗證環(huán)境的優(yōu)劣密切相關(guān)。其中,集成驗證環(huán)境的歸一化對集成驗證工作具有重要意義。
集成驗證環(huán)境的搭建是需要花費很多人力時間才能完成的。在追求芯片快速上市的今天,一個項目搭建一個全新的驗證環(huán)境已經(jīng)無法讓人接受[5]。集成驗證環(huán)境的歸一化主要體現(xiàn)在一些公有目錄和文件的存放具有統(tǒng)一性,可被其他項目重用,從而避免一個項目一個驗證環(huán)境的情況,對于新的項目只需修改一小部分文件即可。
本項目采用可歸一化的驗證環(huán)境,在驗證環(huán)境搭建中減少了很多工作量。
可歸一化SOC驗證環(huán)境文件的存放如下:
|—Verification // 驗證的總目錄
|—common // 系統(tǒng)驗證和集成驗證公共目錄
|—bin // 公共腳本
|—testbench //存放公共的測試文件
|—vfilelists //存放所有的RTL代碼
|—pmap //存放IP的pmap文件
|—mem-model //存放存儲器模型
……
|—iv // 集成驗證目錄
|—env //驗證環(huán)境文件的存放
|—sim //仿真開始目錄
|—log //仿真log文件夾|—wave //仿真波形文件夾
|—output //編譯仿真過程文件
……
|—tc //驗證用例目錄
|—reg //寄存器測試用例目錄
|—mem //Memory測試用例目錄
……
|—script //腳本文件目錄
|—vmt_bfm //Vmtmaster的bfm目錄
……
其中,env文件下存放著VMM驗證代碼模板。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驗證環(huán)境的修改不可避免,但是有了可歸一化的SOC驗證環(huán)境,其繼承性就大大加強。根據(jù)歸一化驗證平臺,就可快速搭建一個新項目的SOC驗證環(huán)境。
AMBA總線是ARM公司推出的SOC總線,應(yīng)用廣泛。本項目也是基于AMBA總線架構(gòu),采用ARM9處理器,SOC的集成驗證環(huán)境是基于VMM和DesignWare VIP。
V M M提供了用于實現(xiàn)驗證環(huán)境的基本類vmm_env,任何驗證環(huá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ù)具體驗證的要求和任務(wù),在 env.build、env.start、env.wait_for_end、env.stop這幾個步驟中進行設(shè)定。圖2是SOC系統(tǒng)芯片結(jié)構(gòu)簡圖。
圖2 SOC系統(tǒng)芯片結(jié)構(gòu)簡圖
在SOC集成驗證中我們將每個Master替換為AHB VIP Interface模型,通過例化的模型訪問所有的IP寄存器和Memory地址空間[7]。
測試層testcase主要是驗證用例的編寫。而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ù)中,運用了VMM_channel類out_chan.put(item),主要作用是generator將數(shù)據(jù)包放入通向transactor的channel中。
AHB VIP模型在VMM驗證中起著重要的作用,在VMM中實現(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接口的激勵傳輸。
從測試層到達信號層的過程很好地體現(xiàn)了VMM驗證方法的核心。
VMM驗證與傳統(tǒng)的功能驗證區(qū)別在于:傳統(tǒng)的功能驗證是在DUT的接口上直接輸入激勵,通過DUT檢查響應(yīng)。這種方法抽象級別低,在復(fù)雜的SOC中不容易定位錯誤,驗證耗時也長;VMM驗證如上述的過程,是抽象級別高的驗證方法,testcase采用面向?qū)ο蟮膕ystem verilog語言,有豐富的類庫支持,能有效提高驗證的功能覆蓋率和驗證的效率[8]。
在越來越高的抽象層次上進行驗證是驗證方法學不斷發(fā)展的趨勢。本文以AMBA總線架構(gòu)系統(tǒng)芯片的集成驗證為例,采用VMM和DW VIP的集成驗證方法。驗證環(huán)境歸一性強,進行簡單修改即可被新項目繼承,同時驗證環(huán)境采用大量的腳本文件,自動化程度高,節(jié)省了人力資源和時間,可顯著地提高驗證的工作效率,從而縮短整個復(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驗證方法學[M].北京:北京航空航天大學出版社,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)芯片驗證方法與技術(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.