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