一種用可重用性層次化驗(yàn)證平臺(tái)進(jìn)行uart模塊驗(yàn)證的方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及uart模塊驗(yàn)證技術(shù)領(lǐng)域領(lǐng)域,具體涉及一種用可重用性層次化驗(yàn)證平臺(tái)進(jìn)行uart模塊驗(yàn)證的方法。
【背景技術(shù)】
[0002]隨著集成電路的飛速發(fā)展,驗(yàn)證成為芯片設(shè)計(jì)中最為繁雜與費(fèi)時(shí)的任務(wù).由于傳統(tǒng)的定向驗(yàn)證滿(mǎn)足超大規(guī)模集成電路的驗(yàn)證需求,新的驗(yàn)證方法學(xué)應(yīng)運(yùn)而生,通用驗(yàn)證方法學(xué)(Universal Verificat1nMethodology, UVM)融合了開(kāi)放式驗(yàn)證方法學(xué)(OpenVerificat1n Methodology, OVM)和驗(yàn)證方法學(xué)手冊(cè)(Verificat1n MethodologyManual,VMM)的優(yōu)點(diǎn),成為業(yè)界第I個(gè)通用、開(kāi)放的驗(yàn)證方法學(xué),UVM采用標(biāo)準(zhǔn)的分層驗(yàn)證結(jié)構(gòu),解決了驗(yàn)證平臺(tái)復(fù)用性與標(biāo)準(zhǔn)化的問(wèn)題,提高了驗(yàn)證效率。
[0003]uvm驗(yàn)證方法學(xué)有層次化的驗(yàn)證結(jié)構(gòu)的特點(diǎn),UVM驗(yàn)證環(huán)境的開(kāi)發(fā)是基于SystemVerilog語(yǔ)言的。因?yàn)椴捎眠@種面向?qū)ο蟮木幊陶Z(yǔ)言,所以UVM中的各個(gè)組件都是通過(guò)類(lèi)(Class)的形式單獨(dú)存在的,其開(kāi)發(fā)過(guò)程與C + +非常類(lèi)似.通過(guò)調(diào)用多個(gè)彼此獨(dú)立的組件,就可以得到不同功能的驗(yàn)證環(huán)境。這樣,驗(yàn)證環(huán)境中的每個(gè)組件都可以作為驗(yàn)證知識(shí)產(chǎn)權(quán)模塊(Verificat1n Intellectual Property,VIP),單獨(dú)地被其他驗(yàn)證平臺(tái)復(fù)用,大大提高了組件的復(fù)用性,加速了驗(yàn)證進(jìn)度,從而節(jié)省大量時(shí)間及資源。
[0004]通用異步收發(fā)傳輸器(UniversalAsynchronous Receiver/Transmitter),通常稱(chēng)作UART,是一種異步收發(fā)傳輸器,實(shí)現(xiàn)數(shù)據(jù)串行通信與并行通信間作傳輸轉(zhuǎn)換。
【發(fā)明內(nèi)容】
[0005]本發(fā)明要解決的技術(shù)問(wèn)題是:本發(fā)明提供了一種用可重用性層次化驗(yàn)證平臺(tái)進(jìn)行uart模塊驗(yàn)證的方法,用uvm搭建的測(cè)試平臺(tái),測(cè)試用verilog語(yǔ)言編寫(xiě)的uart模塊的正確性。
[0006]本發(fā)明所采用的技術(shù)方案為:
一種用可重用性層次化驗(yàn)證平臺(tái)進(jìn)行uart模塊驗(yàn)證的方法,所述方法用uvm搭建的測(cè)試平臺(tái),測(cè)試用verilog語(yǔ)言編寫(xiě)的uart模塊的正確性,用callback函數(shù)實(shí)現(xiàn)對(duì)平臺(tái)的重用,使一個(gè)測(cè)試平臺(tái)能夠用來(lái)測(cè)試一個(gè)模塊的不同功能,或者一些相似的模塊重用同一個(gè)平臺(tái)進(jìn)行測(cè)試。
[0007]所述方法步驟如下:
1)用uvm搭建的層次化驗(yàn)證平臺(tái),包括部件如下:driver、monitor、scoreboard、reference model、sequencer、In_agent 和 0ut_agent,用類(lèi)的形式單獨(dú)定義;
2)定義一個(gè)新的類(lèi)A,callback函數(shù)作為A類(lèi)的一個(gè)成員函數(shù),從A類(lèi)派生一個(gè)類(lèi)并將其實(shí)例化,然后重新定義其中的作為成員函數(shù)的callback函數(shù),再將A類(lèi)和新派生的類(lèi)加入一個(gè)A類(lèi)的數(shù)組apool [],然后用verilog的foreach (apool [i])調(diào)用每一個(gè)a類(lèi)及其派生類(lèi)的中的callback函數(shù);
3)uart數(shù)據(jù)為8bit數(shù)據(jù)加Ibit起始位,Uart模塊讀數(shù)據(jù)時(shí),每個(gè)時(shí)鐘接收Ibit數(shù)據(jù),然后轉(zhuǎn)換成并行數(shù)據(jù),將受到的數(shù)據(jù)和錯(cuò)誤信息數(shù)據(jù)打包輸出;寫(xiě)數(shù)據(jù)時(shí)接收打包的64bit并行數(shù)據(jù),轉(zhuǎn)換成串行數(shù)據(jù)輸出;
4)在驗(yàn)證平臺(tái)的driver發(fā)送數(shù)據(jù)前調(diào)用callback函數(shù)對(duì)transact1n類(lèi)的數(shù)據(jù)進(jìn)行修改,讀數(shù)據(jù)就發(fā)送Ibit數(shù)據(jù),寫(xiě)數(shù)據(jù)就發(fā)送打包的64比特?cái)?shù)據(jù);然后reference model處理數(shù)據(jù)時(shí)也調(diào)用callback函數(shù)處理;在處理數(shù)據(jù)的過(guò)程中,讀數(shù)據(jù)時(shí)重復(fù)9個(gè)時(shí)鐘,接收完完整的9bit的uart數(shù)據(jù)把包成一個(gè)transact1n,輸出給scoreboard對(duì)比用;寫(xiě)數(shù)據(jù)時(shí)只需要采集一個(gè)時(shí)鐘的數(shù)據(jù)。
[0008]所述Uart模塊用veri log代碼編寫(xiě),實(shí)現(xiàn)讀串行數(shù)據(jù),轉(zhuǎn)換成并行數(shù)據(jù)輸出,讀并行數(shù)據(jù)轉(zhuǎn)換成串行數(shù)據(jù)輸出;收取來(lái)自其他模塊的錯(cuò)誤信號(hào)結(jié)合自身的fifo是否有數(shù)據(jù)溢出等錯(cuò)誤信息判斷是否需要發(fā)出中斷信號(hào)的功能。
[0009]一種可重用性層次化驗(yàn)證平臺(tái),所述驗(yàn)證平臺(tái)用uvm搭建,包括部件如下: driver,用來(lái)把不同的激勵(lì)施加給DUT ;
monitor,用來(lái)監(jiān)測(cè)DUT的輸出;
scoreboard,比較期望值與monitor監(jiān)測(cè)到的DUT的輸出;
reference model,它的輸入跟DUT完全一樣,它的輸出送給scoreboard,用于和DUT的輸出比較;
sequencer,用于產(chǎn)生數(shù)據(jù)的,一個(gè)sequencer通過(guò)啟動(dòng)一個(gè)sequence,從sequence獲取數(shù)據(jù),并把這些數(shù)據(jù)轉(zhuǎn)交給driver ;
In_agent和Out_agent,它們是UVM中的agent,所謂的agent其實(shí)只是簡(jiǎn)單的把driver, monitor 封裝在一起;
env,相當(dāng)于是一個(gè)特大的容器,包含上面所有類(lèi);
以上部件都用類(lèi)的形式單獨(dú)定義。
[0010]本發(fā)明的有益效果為:本發(fā)明用同一個(gè)層次化驗(yàn)證平臺(tái)通過(guò)使用callback函數(shù)實(shí)現(xiàn)了對(duì)uart測(cè)試模塊讀數(shù)據(jù),和寫(xiě)數(shù)據(jù)的功能,提高了驗(yàn)證效率。不用重復(fù)搭建平臺(tái),或者對(duì)平臺(tái)進(jìn)行比較大的變動(dòng)。
【附圖說(shuō)明】
[0011]圖1為本發(fā)明uvm測(cè)試平臺(tái)的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0012]下面通過(guò)說(shuō)明書(shū)附圖,結(jié)合【具體實(shí)施方式】對(duì)本發(fā)明進(jìn)一步說(shuō)明:
實(shí)施例1:
一種用可重用性層次化驗(yàn)證平臺(tái)進(jìn)行uart模塊驗(yàn)證的方法,所述方法用uvm搭建的測(cè)試平臺(tái),測(cè)試用verilog語(yǔ)言編寫(xiě)的uart模塊的正確性,用callback函數(shù)實(shí)現(xiàn)對(duì)平臺(tái)的重用,使一個(gè)測(cè)試平臺(tái)能夠用來(lái)測(cè)試一個(gè)模塊的不同功能,或者一些相似的模塊重用同一個(gè)平臺(tái)進(jìn)行測(cè)試。
[0013]實(shí)施例2: 在實(shí)施例1的基礎(chǔ)上,本實(shí)施例所述方法步驟如下:
1)用uvm搭建的層次化驗(yàn)證平臺(tái),包括部件如下:driver、monitor、scoreboard、reference model、sequencer、In_agent 和 Out_agent,用類(lèi)的形式單獨(dú)定義;
2)定義一個(gè)新的類(lèi)A,callback函數(shù)作為A類(lèi)的一個(gè)成員函數(shù),從A類(lèi)派生一個(gè)類(lèi)并將其實(shí)例化,然后重新定義其中的作為成員函數(shù)的callback函數(shù),再將A類(lèi)和新派生的類(lèi)加入一個(gè)A類(lèi)的數(shù)組apool [],然后用verilog的foreach (apool [i])調(diào)用每一個(gè)a類(lèi)