驗證環(huán)境說明_第1頁
驗證環(huán)境說明_第2頁
驗證環(huán)境說明_第3頁
驗證環(huán)境說明_第4頁
驗證環(huán)境說明_第5頁
已閱讀5頁,還剩5頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第一級第二級第三級第四級第五級第六級Verification驗證的根目錄Shared共享的函數(shù)IIIII——>>>Sae驗證的主目錄,所有模塊級和頂層的驗證環(huán)境都在這個目錄下Chip_top驗證環(huán)境的設(shè)計也是按照模塊分開進(jìn)行的,這樣便于多個模塊同時協(xié)同工作,這里以頂層chip_top為例。每一個目錄代表一個模塊,每一個目錄下面的結(jié)構(gòu)都是相同的。MakefileMake文件里定義了一些常用的工具的快捷使用方式,包括工具的參數(shù)定義等等。II——>>>Tb主要的驗證用的代碼都放在這個目錄下。IIIII——>>>Test針對這個模塊的testcase在存放在這個目錄下。Fast_full_mesh這個目錄存放不同的testcase,以fast_full_mesh為例。每一個testcase以一個目錄的形式存在,每一個目錄都用相同的結(jié)構(gòu)。Makefile這個make文件時上一級目錄中make文件的符號鏈接IIIIIIIIIITest.cfg這個文件是個參數(shù)定義文件,在測試代碼里面定第一級第二級第三級第四級第五級第六級|||||||||||||||IIII——>>>義了大量的可以調(diào)整的參數(shù),以適應(yīng)不同的測試要求,這些參數(shù)都可以在這個文件中以文本的形式進(jìn)行修改。修改這個文件的內(nèi)容后,不需要進(jìn)行重新編譯,就可以運行仿真。|||||||||||||IIIII——>>>Test.vr這個文件定義了這個testcase的驗證流程,一般情況下,這個文件都用固定的內(nèi)容和格式,只是針對不同的testcase,調(diào)用的函數(shù)有所不同。||——>>>Verilog_socket針對該模塊的驗證環(huán)境的頂層文件Incfilelist.v文件列表,里面列出了被驗證模塊的所有文件。III——>>>Makefile這個make文件時上一級目錄中make文件的符號鏈接IIIITest.vr這個文件定義了這個testcase的驗

第一級第二級第三級第四級第五級第六級|——>>>證流程,和testcase中的test.vr不同,這個文件和具體的testcase無關(guān)。|||||——>>>Top.test_top_vera_verilog?v這個文件是驗證環(huán)境的verilog頂層。在這個文件里,調(diào)用了一個 叫test_shell.v的模塊,通過這個模塊,vera編寫的驗證代碼可以和verilog編寫的芯片相互作用,進(jìn)行驗證。|||||——>>>Top.v這個文件里調(diào)用了DUT( designundertest),也就是我們需要驗證的芯片的文件。在這個文件里,還可以通過芯片的管腳,對芯片的工作模式進(jìn)行一些配置,以便進(jìn)行不同的驗證。、驗證操作流程。

步驟命令行說明1、在verilog_socket目錄下,運行makeshell這個命令主要是編譯vera代碼,生成test_shell.v。這個文件是verilog和vera之間的橋梁,vera生成的激勵通過這個文件就可以加載到verilog代碼中。這個命令不是每次仿真都需要執(zhí)行,只要vera代碼沒有改變,就不需要重新執(zhí)行。2、在verilog_socket目錄下,運行makevcs這個命令是編譯所有的verilog文件。編譯生成simv文件,這個文件是vcs仿真的執(zhí)行文件。這個命令不是每次仿真都需要執(zhí)行,只要verilog代碼沒有改變,就不需要重新執(zhí)行。3、在test/fast_full_mesh目錄下,運行makevera這個命令主要是編譯vera代碼,生成test.vro。這個文件包含了和testcase相關(guān)的內(nèi)容,在執(zhí)行simv的時候會被加載。這個命令不是每次仿真都需要執(zhí)行,只要vera代碼沒有改變,就不需要重新執(zhí)行。4、在test/fast_full_mesh目錄下,運行plruntest.cfgPlrun是一個perl的腳本文件,主要內(nèi)容就是執(zhí)行simv,同時加入了一些參數(shù)檢測,比如test.cfg。如果僅僅是改變了test.cfg里面的參數(shù),可以不需要重新執(zhí)行前3步,直接執(zhí)行第4步即可。執(zhí)行的結(jié)果,會在當(dāng)前目錄下,生成waveform目錄,里面存放的就是仿真的波形文件。另外,還會生成一個mem_table目錄,這個目錄下存放的是仿真時自動產(chǎn)生的芯片內(nèi)部一些表項的初始化文件。這些文件在仿真開始以后會被加載到內(nèi)部的RAM中,這樣可以避免通過cpu來配置表項,節(jié)省了仿真時間。另外,針對FPGA的RAM,因為初始化的文件格式不一樣,所以編寫了一個基于python的mif_gen.py的腳本,用來將txt文件自動轉(zhuǎn)換成mif格式。三、代碼結(jié)構(gòu)。驗證環(huán)境是由vera語言編寫而成的,vera是一種類似C++的面向?qū)ο蟮木幊陶Z言,和C++的不同在于針對硬件驗證的需求,添加了一些特有的功能,比如,fork--join,用來實現(xiàn)并行處理;mailbox,用來在不同的模塊之間傳遞數(shù)據(jù)。下面以chip_top為例,簡單介紹一下代碼的結(jié)構(gòu)。在tb目錄下,有一個sae_chip_top.vrh文件,這是這個模塊驗證的頂層代碼,和其他面向?qū)ο蟮木幊陶Z言一樣,這里其實是定義了一個class,以及一些對應(yīng)的task。比如,這里定義了sae_chip_top_t這個類,而這個類是obejct_t這個類的擴(kuò)展,object_t這個class是在shared目錄下的object.vrh中定義的。Sae_chip_top_t這個class里面包含了sae_cmic_top_t等子class,這些都是子模塊的驗證環(huán)境。同時還包括很多task,比如new,每一個類都需要一個new的task;再比如fast_full_mesh,這個就是一個testcase,這個函數(shù)里面描述了要完成fullmesh這個test需要的操作過程。每一個testcast都對應(yīng)一個task。在tb目錄下,還有一個chip_top_if.vrh文件,if代表interface,這個文件就是vera和verilog之間的橋梁,也是上文提到的test_shell.v的基礎(chǔ)。這個文件中,首先要定義interface,這個是描述在驗證中會用到的verilog的接口信號,這些信號可以是芯片的接口,也可以是芯片內(nèi)部的信號,可以是輸入,用來從外部加入激勵,也可以是輸出,用來讓vera獲取芯片輸出的狀態(tài)。然后要定義port,port就是interface定義的信號在vera中的表現(xiàn)形式。Port定義好后,需要通過bind來講interface和port綁定起來,這樣,vera對port的操作,最后就體現(xiàn)為對verilog的操作。下面,以fast_full_mesh為例,講解一下testcase的代碼。tasksae_chip_top_t::fast_full_mesh(){integeri;integerport_num;〃新建一個chip_top_t的實例new_sae(O,l,O);〃打印test.cfg里面的參數(shù)plus.print(*);〃復(fù)位芯片reset_system(0,100);//fork〃新建一個arl_top的實例sae_arl_top=new(plus,0);〃sae_np_top=new(plus,0);〃JOIN_NONE〃調(diào)用cmic_top下面的函數(shù),完成pci的配置sae_cmic_top.config_pci_core();〃調(diào)用cmic_top下面的函數(shù),完成mmu的配置sae_cmic_top.setup_mmu();〃調(diào)用cmic_top下面的函數(shù),完成百兆端口0的配置sae_cmic_top.setup_a_epic_port(0,0);'ifndefEIGHT_PORT〃調(diào)用cmic_top下面的函數(shù),完成千兆端口的配置sae_cmic_top.setup_a_gpic_port(3);sae_cmic_top.setup_a_gpic_port(4);'endif〃調(diào)用cmic_top下面的函數(shù),完成arl的配置sae_cmic_top.setup_arl2();'ifndefEIGHT_PORTport_num=24;'elseport_num=8;'endif〃調(diào)用cmic_top下面的函數(shù),完成其他百兆端口的配置for(i=0;i<port_num;i=i+2){if(i!=O){sae_cmic_top.setup_a_epic_port(i/8,i%8);}sae_cmic_top.setup_a_epic_port(i/8,i%8+l);}//for//在forkjoin之間被調(diào)用的函數(shù),都是并行執(zhí)行的。Fork//ping_pair(0,1)在端口0產(chǎn)生目的端口是1報文,同時在端口1檢查收到的報文是否正確。依此類推。{ping_pair(0,1,null,1,0);}{ping_pair(1,0,null,1,0);}{ping_pair(2,3,null,1,0);}{ping_pair(3,2,null,1,0);}{ping_pair(4,5,null,1,0);}{ping_pair(5,4,null,1,0);}{ping_pair(6,7,null,1,0);}{ping_pair(7,6,null,1,0);}'ifndefEIGHT_PORT{ping_pair(8,9,null,1,0);}{ping_pair(9,8,null,1,0);}{ping_pair(10,11,null,1,0);}{ping_pair(11,10,null,1,0);}{ping_pair(12,13,null,1,0);}{ping_pair(13,12,null,l,0);}{ping_pair(14,15,null,l,0);}{ping_pair(15,14,null,1,0);}{ping_pair(16,17,null,1,0);}{ping_pair(17,16,null,1,0);}{ping_pair(18,19,null,1,0);}{ping_pair(19,18,null,1,0);}{ping_pair(20,21,null,1,0);}{ping_pair(21,20,null,1,0);}{ping_pair(22,23,null,1,0);}{ping_pair(23,22,null,1,0);}{ping_pair(24,25,null,1,0);}{ping_pair(25,24,null,1,0);}'endifJOIN_NONE〃持續(xù)運行20000個周期,確保所有生成的報文都被處理完。repeat(20000)@(posedgeCLOCK);}//fast_full_mesh四、測試自動化。傳統(tǒng)的測試方法,是通過驗證環(huán)境生成激勵,然后通過仿真波形觀察結(jié)果是否正確。在規(guī)模比較小的設(shè)計中,這種方式是可行的。但是對于大規(guī)模的設(shè)計,或者測試激勵非常多的設(shè)計,這樣不僅不可行,而且不可靠。因此,驗證的發(fā)展趨勢是自動化。本項目的驗證也采用了自動化的方法,具體思路如下圖:圖中,PKT_GEN是報文生成模塊,相當(dāng)于產(chǎn)生激勵的模塊,DUT是design

溫馨提示

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

最新文檔

評論

0/150

提交評論