版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第一級(jí)第二級(jí)第三級(jí)第四級(jí)第五級(jí)第六級(jí)Verification驗(yàn)證的根目錄Shared共享的函數(shù)IIIII——>>>Sae驗(yàn)證的主目錄,所有模塊級(jí)和頂層的驗(yàn)證環(huán)境都在這個(gè)目錄下Chip_top驗(yàn)證環(huán)境的設(shè)計(jì)也是按照模塊分開進(jìn)行的,這樣便于多個(gè)模塊同時(shí)協(xié)同工作,這里以頂層chip_top為例。每一個(gè)目錄代表一個(gè)模塊,每一個(gè)目錄下面的結(jié)構(gòu)都是相同的。MakefileMake文件里定義了一些常用的工具的快捷使用方式,包括工具的參數(shù)定義等等。II——>>>Tb主要的驗(yàn)證用的代碼都放在這個(gè)目錄下。IIIII——>>>Test針對(duì)這個(gè)模塊的testcase在存放在這個(gè)目錄下。Fast_full_mesh這個(gè)目錄存放不同的testcase,以fast_full_mesh為例。每一個(gè)testcase以一個(gè)目錄的形式存在,每一個(gè)目錄都用相同的結(jié)構(gòu)。Makefile這個(gè)make文件時(shí)上一級(jí)目錄中make文件的符號(hào)鏈接IIIIIIIIIITest.cfg這個(gè)文件是個(gè)參數(shù)定義文件,在測(cè)試代碼里面定第一級(jí)第二級(jí)第三級(jí)第四級(jí)第五級(jí)第六級(jí)|||||||||||||||IIII——>>>義了大量的可以調(diào)整的參數(shù),以適應(yīng)不同的測(cè)試要求,這些參數(shù)都可以在這個(gè)文件中以文本的形式進(jìn)行修改。修改這個(gè)文件的內(nèi)容后,不需要進(jìn)行重新編譯,就可以運(yùn)行仿真。|||||||||||||IIIII——>>>Test.vr這個(gè)文件定義了這個(gè)testcase的驗(yàn)證流程,一般情況下,這個(gè)文件都用固定的內(nèi)容和格式,只是針對(duì)不同的testcase,調(diào)用的函數(shù)有所不同。||——>>>Verilog_socket針對(duì)該模塊的驗(yàn)證環(huán)境的頂層文件Incfilelist.v文件列表,里面列出了被驗(yàn)證模塊的所有文件。III——>>>Makefile這個(gè)make文件時(shí)上一級(jí)目錄中make文件的符號(hào)鏈接IIIITest.vr這個(gè)文件定義了這個(gè)testcase的驗(yàn)
第一級(jí)第二級(jí)第三級(jí)第四級(jí)第五級(jí)第六級(jí)|——>>>證流程,和testcase中的test.vr不同,這個(gè)文件和具體的testcase無(wú)關(guān)。|||||——>>>Top.test_top_vera_verilog?v這個(gè)文件是驗(yàn)證環(huán)境的verilog頂層。在這個(gè)文件里,調(diào)用了一個(gè) 叫test_shell.v的模塊,通過(guò)這個(gè)模塊,vera編寫的驗(yàn)證代碼可以和verilog編寫的芯片相互作用,進(jìn)行驗(yàn)證。|||||——>>>Top.v這個(gè)文件里調(diào)用了DUT( designundertest),也就是我們需要驗(yàn)證的芯片的文件。在這個(gè)文件里,還可以通過(guò)芯片的管腳,對(duì)芯片的工作模式進(jìn)行一些配置,以便進(jìn)行不同的驗(yàn)證。、驗(yàn)證操作流程。
步驟命令行說(shuō)明1、在verilog_socket目錄下,運(yùn)行makeshell這個(gè)命令主要是編譯vera代碼,生成test_shell.v。這個(gè)文件是verilog和vera之間的橋梁,vera生成的激勵(lì)通過(guò)這個(gè)文件就可以加載到verilog代碼中。這個(gè)命令不是每次仿真都需要執(zhí)行,只要vera代碼沒有改變,就不需要重新執(zhí)行。2、在verilog_socket目錄下,運(yùn)行makevcs這個(gè)命令是編譯所有的verilog文件。編譯生成simv文件,這個(gè)文件是vcs仿真的執(zhí)行文件。這個(gè)命令不是每次仿真都需要執(zhí)行,只要verilog代碼沒有改變,就不需要重新執(zhí)行。3、在test/fast_full_mesh目錄下,運(yùn)行makevera這個(gè)命令主要是編譯vera代碼,生成test.vro。這個(gè)文件包含了和testcase相關(guān)的內(nèi)容,在執(zhí)行simv的時(shí)候會(huì)被加載。這個(gè)命令不是每次仿真都需要執(zhí)行,只要vera代碼沒有改變,就不需要重新執(zhí)行。4、在test/fast_full_mesh目錄下,運(yùn)行plruntest.cfgPlrun是一個(gè)perl的腳本文件,主要內(nèi)容就是執(zhí)行simv,同時(shí)加入了一些參數(shù)檢測(cè),比如test.cfg。如果僅僅是改變了test.cfg里面的參數(shù),可以不需要重新執(zhí)行前3步,直接執(zhí)行第4步即可。執(zhí)行的結(jié)果,會(huì)在當(dāng)前目錄下,生成waveform目錄,里面存放的就是仿真的波形文件。另外,還會(huì)生成一個(gè)mem_table目錄,這個(gè)目錄下存放的是仿真時(shí)自動(dòng)產(chǎn)生的芯片內(nèi)部一些表項(xiàng)的初始化文件。這些文件在仿真開始以后會(huì)被加載到內(nèi)部的RAM中,這樣可以避免通過(guò)cpu來(lái)配置表項(xiàng),節(jié)省了仿真時(shí)間。另外,針對(duì)FPGA的RAM,因?yàn)槌跏蓟奈募袷讲灰粯?,所以編寫了一個(gè)基于python的mif_gen.py的腳本,用來(lái)將txt文件自動(dòng)轉(zhuǎn)換成mif格式。三、代碼結(jié)構(gòu)。驗(yàn)證環(huán)境是由vera語(yǔ)言編寫而成的,vera是一種類似C++的面向?qū)ο蟮木幊陶Z(yǔ)言,和C++的不同在于針對(duì)硬件驗(yàn)證的需求,添加了一些特有的功能,比如,fork--join,用來(lái)實(shí)現(xiàn)并行處理;mailbox,用來(lái)在不同的模塊之間傳遞數(shù)據(jù)。下面以chip_top為例,簡(jiǎn)單介紹一下代碼的結(jié)構(gòu)。在tb目錄下,有一個(gè)sae_chip_top.vrh文件,這是這個(gè)模塊驗(yàn)證的頂層代碼,和其他面向?qū)ο蟮木幊陶Z(yǔ)言一樣,這里其實(shí)是定義了一個(gè)class,以及一些對(duì)應(yīng)的task。比如,這里定義了sae_chip_top_t這個(gè)類,而這個(gè)類是obejct_t這個(gè)類的擴(kuò)展,object_t這個(gè)class是在shared目錄下的object.vrh中定義的。Sae_chip_top_t這個(gè)class里面包含了sae_cmic_top_t等子class,這些都是子模塊的驗(yàn)證環(huán)境。同時(shí)還包括很多task,比如new,每一個(gè)類都需要一個(gè)new的task;再比如fast_full_mesh,這個(gè)就是一個(gè)testcase,這個(gè)函數(shù)里面描述了要完成fullmesh這個(gè)test需要的操作過(guò)程。每一個(gè)testcast都對(duì)應(yīng)一個(gè)task。在tb目錄下,還有一個(gè)chip_top_if.vrh文件,if代表interface,這個(gè)文件就是vera和verilog之間的橋梁,也是上文提到的test_shell.v的基礎(chǔ)。這個(gè)文件中,首先要定義interface,這個(gè)是描述在驗(yàn)證中會(huì)用到的verilog的接口信號(hào),這些信號(hào)可以是芯片的接口,也可以是芯片內(nèi)部的信號(hào),可以是輸入,用來(lái)從外部加入激勵(lì),也可以是輸出,用來(lái)讓vera獲取芯片輸出的狀態(tài)。然后要定義port,port就是interface定義的信號(hào)在vera中的表現(xiàn)形式。Port定義好后,需要通過(guò)bind來(lái)講interface和port綁定起來(lái),這樣,vera對(duì)port的操作,最后就體現(xiàn)為對(duì)verilog的操作。下面,以fast_full_mesh為例,講解一下testcase的代碼。tasksae_chip_top_t::fast_full_mesh(){integeri;integerport_num;〃新建一個(gè)chip_top_t的實(shí)例new_sae(O,l,O);〃打印test.cfg里面的參數(shù)plus.print(*);〃復(fù)位芯片reset_system(0,100);//fork〃新建一個(gè)arl_top的實(shí)例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報(bào)文,同時(shí)在端口1檢查收到的報(bào)文是否正確。依此類推。{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ù)運(yùn)行20000個(gè)周期,確保所有生成的報(bào)文都被處理完。repeat(20000)@(posedgeCLOCK);}//fast_full_mesh四、測(cè)試自動(dòng)化。傳統(tǒng)的測(cè)試方法,是通過(guò)驗(yàn)證環(huán)境生成激勵(lì),然后通過(guò)仿真波形觀察結(jié)果是否正確。在規(guī)模比較小的設(shè)計(jì)中,這種方式是可行的。但是對(duì)于大規(guī)模的設(shè)計(jì),或者測(cè)試激勵(lì)非常多的設(shè)計(jì),這樣不僅不可行,而且不可靠。因此,驗(yàn)證的發(fā)展趨勢(shì)是自動(dòng)化。本項(xiàng)目的驗(yàn)證也采用了自動(dòng)化的方法,具體思路如下圖:圖中,PKT_GEN是報(bào)文生成模塊,相當(dāng)于產(chǎn)生激勵(lì)的模塊,DUT是design
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年度建筑工程泥工分包合同協(xié)議書
- 2024年藥店實(shí)習(xí)生勞務(wù)聘用協(xié)議3篇
- 2024蘇州離婚協(xié)議書模板制作與婚姻法律風(fēng)險(xiǎn)防范合同3篇
- 2024年股東權(quán)益確認(rèn)協(xié)議
- 2024林業(yè)土地承包經(jīng)營(yíng)權(quán)互換合同
- 2024年度大理石石材技術(shù)創(chuàng)新與應(yīng)用合同3篇
- 三方停車場(chǎng)車位租賃協(xié)議范本(2024版)
- 2024房地產(chǎn)買賣合同with裝修及附加條款
- 2024月子中心消防通道疏通與維修施工合同3篇
- 2024植筋加固材料研發(fā)與市場(chǎng)推廣合作合同范本3篇
- 開展課外讀物負(fù)面清單管理的具體實(shí)施舉措方案
- 中國(guó)骨關(guān)節(jié)炎診療指南(2024版)解讀
- 2025北京豐臺(tái)初二(上)期末數(shù)學(xué)真題試卷(含答案解析)
- 2025年內(nèi)蒙古包鋼集團(tuán)公司招聘筆試參考題庫(kù)含答案解析
- 代辦采礦權(quán)許可證延續(xù)登記的委托代理合同律改
- 《中國(guó)心力衰竭診斷和治療指南(2024)》解讀完整版
- 企業(yè)內(nèi)訓(xùn)師培訓(xùn)師理論知識(shí)考試題庫(kù)500題(含各題型)
- 2025年內(nèi)蒙古包鋼集團(tuán)招聘筆試參考題庫(kù)含答案解析
- DB12T 577-2015 地理標(biāo)志產(chǎn)品 紅花峪桑椹
- 2024年山西省晉中市公開招聘警務(wù)輔助人員(輔警)筆試專項(xiàng)訓(xùn)練題試卷(2)含答案
- 福建省廈門市2023-2024學(xué)年高二上學(xué)期1月期末質(zhì)量檢測(cè)數(shù)學(xué)試題(解析版)
評(píng)論
0/150
提交評(píng)論