使用VMM和DPI技術(shù)驗(yàn)證復(fù)雜多媒體SOC芯片_第1頁
使用VMM和DPI技術(shù)驗(yàn)證復(fù)雜多媒體SOC芯片_第2頁
使用VMM和DPI技術(shù)驗(yàn)證復(fù)雜多媒體SOC芯片_第3頁
使用VMM和DPI技術(shù)驗(yàn)證復(fù)雜多媒體SOC芯片_第4頁
使用VMM和DPI技術(shù)驗(yàn)證復(fù)雜多媒體SOC芯片_第5頁
已閱讀5頁,還剩10頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、使用VMM和DPI技術(shù)驗(yàn)證復(fù)雜多媒體SOC芯片祝丹,高勇,陳輝,張亞靜,李樹杰中星微電子 HYPERLINK mailto:zhudan zhudan摘要現(xiàn)代高端的多媒體芯片通常是復(fù)雜的SOC。這類芯片的驗(yàn)證面臨著許多挑戰(zhàn):第一,驗(yàn)證的工作量越來越大,迫切需要提高驗(yàn)證工作的效率,及驗(yàn)證平臺(tái)的可重用性與可維護(hù)性。第二,設(shè)計(jì)復(fù)雜度的增加,提升了驗(yàn)證工作的復(fù)雜度,從而對(duì)驗(yàn)證激勵(lì)的隨機(jī)產(chǎn)生提出了很高的要求。第三,人工比對(duì)輸出結(jié)果的工作非常繁瑣并且容易遺漏問題,從而使自動(dòng)比對(duì)成為驗(yàn)證系統(tǒng)的核心功能之一。SystemVerilog和C/C+都是支持面對(duì)對(duì)象的編程語言,允許在更高抽象層進(jìn)行建模,幫助提高驗(yàn)證

2、工作的效率。其中SystemVerilog提供對(duì)覆蓋率和斷言的支持以及與DUT的無縫集成,而DPI技術(shù)提供了SystemVerilog和C/C+之間的高性能鏈接。中星微電子一直致力于多媒體芯片的開發(fā),在VC08XX項(xiàng)目的驗(yàn)證過程中,我們使用了Synopsys的VMM驗(yàn)證方法學(xué)以及SystemVerilog的DPI技術(shù),顯著的縮短了項(xiàng)目開發(fā)周期,提高了芯片驗(yàn)證的全面性,確保了芯片的功能正確性。關(guān)鍵詞:SoC,功能驗(yàn)證,VMM,DPI引言在驗(yàn)證過程中,驗(yàn)證方法學(xué)扮演著十分重要的角色。尤其是對(duì)于高集成度和高復(fù)雜度的SOC的驗(yàn)證,好的驗(yàn)證方法學(xué),首先可以顯著的提高驗(yàn)證平臺(tái)的可重用性,縮短功能驗(yàn)證的時(shí)間

3、,節(jié)省驗(yàn)證資源,其次可以使驗(yàn)證平臺(tái)具有輸出結(jié)果自動(dòng)比對(duì)等功能,同時(shí)還使各個(gè)驗(yàn)證組件結(jié)構(gòu)清晰,任務(wù)劃分和集成更加易于進(jìn)行。VMM是當(dāng)前業(yè)內(nèi)公認(rèn)的驗(yàn)證方法標(biāo)準(zhǔn),目前Synopsys已將其捐贈(zèng)給EDA標(biāo)準(zhǔn)化組織Accellera,Accellera正在VMM及VMMapplications的技術(shù)基礎(chǔ)上制定驗(yàn)證互操作性的標(biāo)準(zhǔn)。VMM根據(jù)功能和抽象層次,將驗(yàn)證平臺(tái)分成功能不同的模塊,提高了驗(yàn)證平臺(tái)的重用性和抽象層次。Synopsys根據(jù)VMM驗(yàn)證方法學(xué),用SystemVerilog實(shí)現(xiàn)了一套可繼承的基類庫使用OOP技術(shù),驗(yàn)證工程師可以更快建立起復(fù)雜的驗(yàn)證平臺(tái),并使其具有激勵(lì)受約束隨機(jī)產(chǎn)生(Constra

4、int-Random),DUT輸出結(jié)果自動(dòng)比對(duì)(Self-Checking),功能覆蓋率驅(qū)動(dòng)(Coverage-Driven)等高級(jí)功能。VMM驗(yàn)證方法學(xué)概述VMM驗(yàn)證方法學(xué)將驗(yàn)證平臺(tái)按照設(shè)計(jì)所處理數(shù)據(jù)的抽象級(jí)別劃分為幾個(gè)層次。各層次之間的數(shù)據(jù)流關(guān)系如圖1所示。測(cè)試層場(chǎng)劇涇丄力帳層I.竹檢需.次1(ri(Nloiillor)(MoiiiliLir)斷W(Asscrtaon)扌昏烽展信號(hào)層圖1:VMM驗(yàn)證方法學(xué)分層結(jié)構(gòu)測(cè)試層(TestLayer):生成測(cè)試案例,由功能覆蓋率控制,可能會(huì)包含一些隨機(jī)激勵(lì)的約束,也可能是一次直接測(cè)試激勵(lì)。場(chǎng)景層(ScenarioLayer):生成事務(wù)級(jí)的隨機(jī)激勵(lì),主

5、要指事務(wù)發(fā)生器(Generator)等。包括AtomicGenerator,生成單獨(dú)約束的事務(wù),以及ScenarioGenerator,生成有一定關(guān)系的隨機(jī)事務(wù)序列。功能層(FunctionalLayer):控制事務(wù)(Transaction)的傳輸與監(jiān)測(cè),實(shí)現(xiàn)自動(dòng)比對(duì)的功能。包括記分板(ScoreBoard)等部分。指令層(CommandLayer):完成對(duì)硬件的直接驅(qū)動(dòng),以及對(duì)硬件接口的監(jiān)控。包括驅(qū)動(dòng)器(Driver),監(jiān)控器(Monitor)等部分。信號(hào)層(SignalLayer):實(shí)現(xiàn)驗(yàn)證對(duì)象(DUT)與驗(yàn)證環(huán)境(ENV)的信號(hào)連接。另外還有幾個(gè)非常重要的模塊,包括基于斷言的檢查器,功能

6、覆蓋率收集等。VC08XX項(xiàng)目介紹VC08XX是中星微電子一款針對(duì)PMP解決方案的產(chǎn)品。采用了ARM9和高性能的媒體引擎,具有高集成度和低功耗的特點(diǎn)。其結(jié)構(gòu)如圖2所示。RTCJTAQWDTS4UH?3276MHzfTFTLCDPI/DRITFTLCDCnnrrailertT一32-bitARM9CPU口ey_D6CU_L_巨erLISB2OHSPEYLln-in圖2:VC08XX系統(tǒng)架構(gòu)圖利用VMM搭建MemorySubsystem驗(yàn)證平臺(tái)GPUDSAfCH.1X1IIg.列AKIJIIrCxTjFEE1Fm1LTIMAAXIIkc-1AXhluQcdWlilLniQM.aLAP口Qri臼呂巴

7、TUMASZL_圖3:MemorySubsystem驗(yàn)證環(huán)境示意圖VC08XX的MemorySubsystem主要實(shí)現(xiàn)了總線仲裁,內(nèi)存控制(SDRC)以及數(shù)據(jù)搬運(yùn)(DMAC)等功能,其結(jié)構(gòu)如圖3所示??偩€仲裁包括CPU子系統(tǒng)總線仲裁(CPUDSARB),存儲(chǔ)子系統(tǒng)總線仲裁(STORAGESARB)和整個(gè)系統(tǒng)的總線仲裁(MARB),這些模塊與各個(gè)主設(shè)備(MASTER)由AHB或AXI標(biāo)準(zhǔn)總線接口相連。內(nèi)存控制(SDRC)主要負(fù)責(zé)控制SDRAM的讀寫操作,SDRC與MARB的接口是AXI接口。系統(tǒng)總線上除了SDRAM,還掛有ROM和APB等從設(shè)備(SLAVE)。AXIIransnc-tiLinCl

8、unerjL-(rAXIFuaictionC1i%rcrHtc(vn-iiiii_,Ka亡tnr_TiilllypikR)彷仃器嗆酉Promonitar*(vmmxactor)a-1Wdin.rdtaSdrnVdcli-iSI3RC:APBMasterRegiierulgcovernjie(vmmAiicLorcdllback)AXIMaster(vniin_waGtiOliSdre_test.sv(pitjgrLiin)RefmemorySecureBtitirdvmmxactryr)Posi-mnnitni挫制渺勵(lì)SdiC.env.jv(vrnrnfcMivJ/xrTrunEiuLion(

9、vinmdata)圖4:SDRC驗(yàn)證平臺(tái)示意圖首先我們搭建了SDRC的模塊級(jí)驗(yàn)證平臺(tái),其結(jié)構(gòu)如圖4所示,包括SDRC的自檢查結(jié)構(gòu)以及符合AXI協(xié)議的事務(wù)發(fā)生器,驅(qū)動(dòng)器和監(jiān)控器等驗(yàn)證組件。然后通過對(duì)這些模塊的大量重用,我們迅速的搭建了MemorySubsystem的驗(yàn)證平臺(tái),其結(jié)構(gòu)如圖3所示。該平臺(tái)從不同的接口監(jiān)測(cè)數(shù)據(jù),分別驗(yàn)證了CPUDSARB、STORAGESARB、MARB和SDRC四個(gè)模塊,其中SDRC的自檢查結(jié)構(gòu)在這里得到了重用。由于MARB與各個(gè)主設(shè)備由AXI標(biāo)準(zhǔn)總線相連,我們又重用了SDRC模塊級(jí)驗(yàn)證平臺(tái)的事務(wù)發(fā)生器(AXITransactionGenerator),驅(qū)動(dòng)器(AXI

10、Master)和監(jiān)控器(AXIMonitor),用來模擬和監(jiān)控與MARB相連的11個(gè)主設(shè)備的行為。VMM方法學(xué)提供了一系列基類,使驗(yàn)證平臺(tái)得以快速開發(fā)。例如驗(yàn)證環(huán)境通過繼承vmm_env類來實(shí)現(xiàn),它的主要作用是實(shí)例化各個(gè)驗(yàn)證組件并控制流程。事務(wù)(Transaction)通過繼承vmm_data類來實(shí)現(xiàn)。驅(qū)動(dòng)器、自檢查結(jié)構(gòu)通過繼承vmm_xactor類來實(shí)現(xiàn)。各個(gè)xactor之間的通信通過vmm_channel實(shí)現(xiàn)。功能覆蓋模塊通過繼承vmm_xactor_callbacks類來實(shí)現(xiàn)。后面的章節(jié)會(huì)詳細(xì)介紹各個(gè)模塊的實(shí)現(xiàn)細(xì)節(jié)。激勵(lì)的生成隨機(jī)激勵(lì)多媒體處理需要大量的訪存操作,尤其是視頻解碼(VDEC

11、),圖像處理(IPP),LCD控制(LCDC)等模塊,經(jīng)常同時(shí)讀寫SDRAM,用直接測(cè)試(DirectTest)很難覆蓋完全AXI總線上多種多樣的情況,因此我們?cè)诖罱?yàn)證平臺(tái)時(shí)采用了VMM方法學(xué)的Constraint-Random技術(shù)。MemorySubsystem的驗(yàn)證平臺(tái)中實(shí)例了11個(gè)事務(wù)發(fā)生器(Generator),隨機(jī)產(chǎn)生符合AHB和AXI協(xié)議的事務(wù)(Transaction),并通過輸出通道(Channel)傳送給驅(qū)動(dòng)器(Driver),驅(qū)動(dòng)器解析接受到的事務(wù)(Transaction),并按照總線時(shí)序驅(qū)動(dòng)DUT,如圖5所示。在定義好事務(wù)(Transaction)后,事務(wù)發(fā)生器和輸出通道

12、不需手工編寫,只需要調(diào)用對(duì)應(yīng)的vmm宏,就可以在驗(yàn)證環(huán)境中重用了,如下面代碼所示。/#axi_trans.sv#classaxi_transextendsvmm_data;typedefenumREAD,WRITEkinds_e;typedefenumBYTE,HWORD,WORDsize_e;typedefenumINCR,BURST,WRAPburst_e;kinds_ewrite;size_esize;burst_eburst;bit31:0addr;bit3:0len;endclass:axi_trans、vmm_channel(axi_trans)/定義輸出通道vmm_atomic_

13、gen(axi_trans,“axi_trans)/定義事務(wù)發(fā)生器/#sdrc_env.sv#/實(shí)例事務(wù)發(fā)生器axi_trans_atomic_gendmac_trans_gen;axi_trans_atomic_genpdma_trans_gen;axi_trans_atomic_genstor_trans_gen;圖5:事務(wù)發(fā)生器和驅(qū)動(dòng)器的關(guān)系一筆隨機(jī)事務(wù)首先會(huì)產(chǎn)生指令信息,包括地址,傳輸長(zhǎng)度等,如以上代碼所示。隨后根據(jù)傳輸長(zhǎng)度產(chǎn)生寫數(shù)據(jù),同時(shí),還會(huì)產(chǎn)生該指令和上一個(gè)指令之間的延遲時(shí)間,以及該數(shù)據(jù)和上一筆數(shù)據(jù)之間的延遲時(shí)間,然后將這些信息統(tǒng)一打包放入輸出通道。由于AXI總線協(xié)議定義了指令通

14、道,寫數(shù)據(jù)通道和讀數(shù)據(jù)通道,因此驅(qū)動(dòng)器也并行的啟動(dòng)了三個(gè)進(jìn)程,在收到一筆事務(wù)后,先根據(jù)指令延遲發(fā)送指令,同時(shí)把數(shù)據(jù)放入一個(gè)隊(duì)列,再在其他進(jìn)程中拿出數(shù)據(jù),并根據(jù)數(shù)據(jù)延遲發(fā)送數(shù)據(jù)。這樣,即保證了指令和數(shù)據(jù)的一一對(duì)應(yīng),又使指令和數(shù)據(jù)發(fā)出的時(shí)間可以任意隨機(jī),比如可以連續(xù)發(fā)出幾筆指令,再連續(xù)發(fā)出幾筆數(shù)據(jù)。通過文件操作實(shí)現(xiàn)定向激勵(lì)有的時(shí)候,MemorySubsystem驗(yàn)證環(huán)境需要重現(xiàn)具有特定操作的系統(tǒng)級(jí)仿真,這時(shí)候?qū)τ贛ARB或SDRC的隨機(jī)激勵(lì)應(yīng)當(dāng)被直接激勵(lì)代替。我們通過文件操作實(shí)現(xiàn)的這樣的直接激勵(lì)。具體來說,就是把系統(tǒng)級(jí)仿真中的AXI總線上每筆指令和數(shù)據(jù)以及延遲信息通過AXI監(jiān)控器輸出到一個(gè)指定的文

15、件中,再建立一個(gè)事務(wù)發(fā)生器,從文件中讀出這些信息,轉(zhuǎn)換成一筆筆的事務(wù),發(fā)送給驅(qū)動(dòng)器。對(duì)隨機(jī)激勵(lì)的控制對(duì)于不同的隨機(jī)激勵(lì),有些需要一定的約束來確保其有效性,有些則需要輔助性或修正性的約束,以便命中特定的邊角情況。通過開啟或關(guān)閉某個(gè)屬性的隨機(jī)模式定義不同的測(cè)試案例我們有時(shí)會(huì)需要令某一個(gè)寄存器的配置保持常量,比如將AUTO_REFRESH的開關(guān)固定為關(guān)閉狀態(tài)。因此,我們定義出固定配置的約束塊,再在測(cè)試案例中開啟或關(guān)閉其隨機(jī)模式,從而控制不同的測(cè)試案例,如右圖所示。通過提供外部約束塊或帶有附加約束的派生類定義不同的測(cè)試案例在對(duì)總線操作的隨機(jī)化過程中,我們可能會(huì)更加關(guān)注一些邊角的情況,如對(duì)SDRAM進(jìn)行

16、跨行的讀寫操作,又如ARM發(fā)出的WRAP8操作??梢栽跍y(cè)試案例中定義一些外部的約束塊,也可以使用帶有附加約束的派生類替代原有的隨機(jī)數(shù)據(jù)類,如右圖所示。/#sdrc_config.sv#constraintauto_slfrfsh_cauto_slfrfsh_entryinside0;sdrc_config.auto_slfrfsh_c.constraint_mode(0);/#test.sv#constraintaxi_trans:cmd_delay_ccmd_delayinside10,20;classaxi_trans_armextendsaxi_trans;constraintwrap8

17、_cburst_lengthinside8;wrap8_enableinside1;endclassclasssdrc_pre_monitorextendsvmm_xactor;pre_wdata_channelSIGS.marb_sdrc_wid.sneak(pre_wdata);endclass自檢查結(jié)構(gòu)記分板(ScoreBoard)和參考模型(ReferenceModule)記分板用來動(dòng)態(tài)的預(yù)測(cè)DUT的響應(yīng),它將施加給DUT的激勵(lì)轉(zhuǎn)換為預(yù)測(cè)響應(yīng)的形式,然后跟DUT輸出的真實(shí)響應(yīng)進(jìn)行對(duì)比。轉(zhuǎn)換功能的實(shí)現(xiàn)有很多方式。對(duì)于總線仲裁器(MARB)來說,它的主要功能是從多路訪問同一個(gè)從設(shè)備的主設(shè)備

18、中選出一路進(jìn)行傳輸,因此可以對(duì)MARB輸入的激勵(lì)和輸出的響應(yīng)根據(jù)相應(yīng)的主設(shè)備ID進(jìn)行對(duì)比;對(duì)于內(nèi)存控制器(SDRC)來說,它的主要功能是將AXI總線上的讀寫操作轉(zhuǎn)換成符合SDRAM接口時(shí)序的指令和數(shù)據(jù),因此需要建立SDRAM的參考模型,得到預(yù)期的數(shù)據(jù),同時(shí)直接從SDRAM中取得真實(shí)的數(shù)據(jù),再與輸入激勵(lì)的數(shù)據(jù)進(jìn)行三方面的對(duì)比;而對(duì)于視頻解碼模塊的驗(yàn)證,參考模型可以通過C語言實(shí)現(xiàn),用直接編程接口(DirectProgrammingInterface)集成到VMM驗(yàn)證環(huán)境中,后面的章節(jié)會(huì)給出詳細(xì)的介紹。SDRAM的參考模型是一個(gè)可配的存儲(chǔ)矩陣,它與真實(shí)的SDRAM模型有著相同的配置,包括傳輸長(zhǎng)度(B

19、urstLength),存儲(chǔ)矩陣的深度,寬度等,并以同樣的順序讀寫數(shù)據(jù),但并不需要產(chǎn)生精確的延遲和周期輸出,也不需要有相同的外部引腳。使用索引表和多個(gè)獨(dú)立的按序隊(duì)列定位匹配的預(yù)期響應(yīng)為了獲得更高的SDRAM帶寬利用率和更快的高優(yōu)先級(jí)指令響應(yīng)速度,內(nèi)存控制器(SDRC)將輸入的指令按照一定的規(guī)則重新排序并輸出給SDRAM,也就是說,輸入激勵(lì)與響應(yīng)的順序是不一致的。對(duì)這種亂序響應(yīng)的驗(yàn)證,常常通過建立聯(lián)合數(shù)組(AssociativeArray)和多個(gè)獨(dú)立的按序隊(duì)列(Queue)來定位所匹配的預(yù)期響應(yīng)。以對(duì)寫數(shù)據(jù)的檢查舉例,將AXI總線上的寫數(shù)據(jù)按照不同的主設(shè)備ID分別放入不同的隊(duì)列里。記分板根據(jù)輸出

20、寫數(shù)據(jù)的主設(shè)備ID選擇相應(yīng)的隊(duì)列進(jìn)行比較,這樣即保證相同主設(shè)備ID的寫數(shù)據(jù)順序不會(huì)被改變,又保證了寫數(shù)據(jù)的正確性。如下所示。classsdrc_score_boardextendsvmm_xactor;post_cmd_channel.get(tr);/取得指令信息pre_wdata_channeltr.mst_id.get(pre_wdata);/取得輸入激勵(lì)的寫數(shù)據(jù)write_ref_mem(tr);/把數(shù)據(jù)寫入?yún)⒖寄P蛂ead_real_mem(tr,post_wdata);/從SDRAM中讀取真實(shí)的寫數(shù)據(jù)if(pre_wdata.data!=post_wdata.data)/進(jìn)行數(shù)據(jù)比

21、較endclass系統(tǒng)級(jí)重用為了使自檢查結(jié)構(gòu)可以方便的在系統(tǒng)級(jí)重用,自檢查結(jié)構(gòu)不應(yīng)包含對(duì)模塊級(jí)仿真環(huán)境的類引用,也就是說,監(jiān)控器(Monitor)和驅(qū)動(dòng)器(Driver)應(yīng)當(dāng)完全分離,同時(shí),對(duì)功能覆蓋率的采集工作也應(yīng)在監(jiān)控器中進(jìn)行。這樣,在系統(tǒng)級(jí)仿真中重用自檢查結(jié)構(gòu)和功能覆蓋率驗(yàn)證模塊,只需要在系統(tǒng)級(jí)環(huán)境中實(shí)例監(jiān)控器和記分板,同時(shí)更改Interface文件。在MemorySubsystem的驗(yàn)證平臺(tái)中,CPUDSARB、STORAGESARB、MARB和SDRC四個(gè)模塊的自檢查結(jié)構(gòu)都可以方便的在整個(gè)芯片的系統(tǒng)級(jí)驗(yàn)證平臺(tái)中得到重用。4.4回調(diào)(Callback)在驗(yàn)證平臺(tái)中的應(yīng)用利用回調(diào)(Cal

22、lback)插入異常(ErrorInjection)完善的驗(yàn)證過程應(yīng)盡可能去試探,甚至打破協(xié)議的極限,比如地址出界,零延遲的發(fā)出兩筆指令或兩筆數(shù)據(jù)等情況。這些異常情況可以通過回調(diào)(Callback)的方式插入到正常的事務(wù)執(zhí)行過程中,并在自檢查結(jié)構(gòu)中判斷DUT是否輸出正確的響應(yīng)。回調(diào)方法使單個(gè)的測(cè)試案例需求不需要修改事務(wù)處理器本身,就可以對(duì)事務(wù)加以控制。在收到一筆事務(wù)之后,驅(qū)動(dòng)器會(huì)先調(diào)用回調(diào)方法(CallbackMethod),對(duì)事務(wù)進(jìn)行修改,以插入錯(cuò)誤,再發(fā)出給DUT,這些回調(diào)方法在具體的測(cè)試案例中被實(shí)現(xiàn),并通過信號(hào)或時(shí)間控制其出現(xiàn)的頻率。下面代碼示意了如何利用回調(diào)插入零延遲的事務(wù)。/#axi

23、_mst.sv#virtualclassaxi_mst_callbacksextendsvmm_xactor_callbacks;virtualtaskpre_trans(refaxi_transtr);endtaskendclassclassaxi_mstextendsvmm_xactor;pre_tr_chan.get(tr);/接收事務(wù)vmm_callback(axi_mst_callbacks,pre_trans(tr);/插入錯(cuò)誤do_cmd(tr);/驅(qū)動(dòng)總線endclass/#sdrc_test.sv#classzero_delay_injectionextendsaxi_mst

24、_callbacksvirtualtaskpre_trans(refaxi_transtr);/實(shí)現(xiàn)回調(diào)方法if()begin/通過信號(hào)控制出現(xiàn)頻率tr.cmd_delay=0;tr.data_delay=0;endendtaskendclass442利用回調(diào)(Callback)進(jìn)行針對(duì)覆蓋率的驗(yàn)證覆蓋率度量指標(biāo)是驗(yàn)證設(shè)計(jì)可信度的重要指標(biāo)。VMM驗(yàn)證方法學(xué)采用覆蓋率組(CoverGroup)來定義驗(yàn)證的需求,并可以自動(dòng)的生成覆蓋率度量指標(biāo),具有建??旖?,便于采樣和易于分析等特點(diǎn)。在MemorySubsystem的驗(yàn)證中,我們主要關(guān)心來自于寄存器配置和總線激勵(lì)的功能覆蓋率。因此,我們分別在負(fù)責(zé)寄

25、存器配置驅(qū)動(dòng)和負(fù)責(zé)總線監(jiān)控的模型(Monitor)中調(diào)用覆蓋率組的采樣函數(shù)。在驗(yàn)證的整個(gè)執(zhí)行過程中,覆蓋率目標(biāo)通常不是一成不變的,而是從初始的狀態(tài)漸漸深入,隨著新的coner情況的出現(xiàn)而不斷更新,因此,我們采用了回調(diào)(Callback)的機(jī)制,這樣不需要修改監(jiān)視器或驅(qū)動(dòng)器本身,就可以對(duì)覆蓋率的采集操作進(jìn)行控制,同時(shí)對(duì)覆蓋率組(CoverGroup)進(jìn)行修改。具體實(shí)現(xiàn)的時(shí)候,使用覆蓋點(diǎn)(CoverPoints)和交叉覆蓋點(diǎn)(Cross-points)記錄相應(yīng)的驗(yàn)證需求,米用覆蓋率權(quán)重(weight)來區(qū)分功能驗(yàn)證的優(yōu)先級(jí),覆蓋率組被封裝在覆蓋率對(duì)象中,這個(gè)類是vmm_xactor_callbac

26、ks基類的繼承。利用VMM-DPI搭建system驗(yàn)證平臺(tái)VMM驗(yàn)證方法學(xué)對(duì)驗(yàn)證環(huán)境抽象層次的提高,使驗(yàn)證工程師可以在完成RTL設(shè)計(jì)前就搭建出行為級(jí)的驗(yàn)證平臺(tái),比如測(cè)試層,場(chǎng)景層和功能層的驗(yàn)證組件。當(dāng)設(shè)計(jì)完成后,再實(shí)現(xiàn)涉及到指令層和信號(hào)層的功能,同時(shí)復(fù)用算法部門使用C/C+或SystemC開發(fā)的行為級(jí)模型作為參考設(shè)計(jì)從而實(shí)現(xiàn)自動(dòng)比對(duì)的功能。SystemVerilog(SV)的直接編程接口(DirectProgrammingInterface,DPI)技術(shù)提供了在SV驗(yàn)證環(huán)境中使用C/C+程序的接口。它允許Verilog/SystemVerilog代碼通過使用簡(jiǎn)單的import聲明導(dǎo)入C函數(shù)從而

27、直接加以調(diào)用,或使用export聲明導(dǎo)出Verilog/SystemVerilog的函數(shù)并在C/C+程序中加以調(diào)用,從而實(shí)現(xiàn)了參考模型和仿真環(huán)境的數(shù)據(jù)交互,可以幫助快速的搭建視頻解碼等算法單元的自檢查結(jié)構(gòu)。在VC08XX項(xiàng)目系統(tǒng)級(jí)驗(yàn)證平臺(tái)的搭建過程中,我們使用了VMM驗(yàn)證方法學(xué)以及DPI技術(shù),顯著的縮短了項(xiàng)目開發(fā)周期。5.1DPI與PLI的比較VerilogPLI提供一個(gè)使用戶自帶的C函數(shù)能夠在運(yùn)行時(shí)間讀取和修改仿真數(shù)據(jù)結(jié)構(gòu)的接口,而DPI提供了一條新的集成SV和C/C+的途徑。對(duì)比于PLI,DPI有以下兩點(diǎn)優(yōu)勢(shì)。首先,DPI消除了PLI使用的復(fù)雜性。PLI必須定義系統(tǒng)任務(wù)/函數(shù)名稱,并把ca

28、lltfC函數(shù)和該系統(tǒng)任務(wù)/函數(shù)的名稱關(guān)聯(lián)起來,而DPI可以直接在Verilog代碼里調(diào)用C函數(shù)。使用DPI導(dǎo)入C函數(shù)后,SV的邏輯數(shù)值可以作為輸入直接傳遞給C函數(shù),C函數(shù)的返回值和輸出參數(shù)也可以直接傳遞回SV,無需像PLI需要通過復(fù)雜的PLI庫間接傳遞數(shù)值。其次,DPI允許SV的函數(shù)或任務(wù)導(dǎo)出給C函數(shù)調(diào)用,而PLI沒有對(duì)應(yīng)的功能。這使得復(fù)雜的設(shè)計(jì)可以從一個(gè)很高抽象層次的C模型開始,然后隨著設(shè)計(jì)流程的推進(jìn),這些C模型的一部分使用SV替換,兩種語言通過DPI交互,最終實(shí)現(xiàn)整個(gè)設(shè)計(jì)。這些導(dǎo)出的SV任務(wù)或函數(shù)可以通過非阻塞賦值,延時(shí)等方法使基于DPI的C函數(shù)與仿真時(shí)間同步。然而,DPI并不能直接訪問內(nèi)部仿真數(shù)據(jù)結(jié)構(gòu),這限制了DPI的應(yīng)用。然而,對(duì)于大多數(shù)的驗(yàn)證工作而言,DPI提供了一種更加簡(jiǎn)單高效的途徑來進(jìn)行SV與C/C+代碼的集成。5.2VDEC模塊級(jí)驗(yàn)證平臺(tái)使用C模型建立算法單元的參考模型,可以重用前期算法開發(fā)時(shí)建立的C模型。而在仿真過程中,用SV動(dòng)態(tài)調(diào)用C模型進(jìn)行自動(dòng)比對(duì)可以避免了人工比對(duì)帶來的問題遺漏,并且實(shí)時(shí)的發(fā)現(xiàn)錯(cuò)誤響應(yīng),盡早中斷仿真,減少仿真時(shí)間損失。以視頻解碼

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論