一種基于Tel的FPGA交互式仿真方法
【專利摘要】本發(fā)明公開了一種基于Tel的FPGA交互式仿真方法。本方法為:1)在FPGA驗(yàn)證平臺(tái)verilog中新建一個(gè)Tel解釋器,并建立verilog和Tel解釋器之間的通信通道;2)在verilog中采用Tel語(yǔ)言創(chuàng)建一測(cè)試用例;3)Tcl解釋器調(diào)用該測(cè)試用例,當(dāng)收到寫操作命令名稱時(shí),Tel解釋器通過寫操作命令調(diào)用verilog中的寫操作任務(wù),將進(jìn)行寫操作的地址和數(shù)據(jù)傳遞到verilog中,切換進(jìn)程;當(dāng)Tel解釋器收到讀操作命令名稱時(shí),通過讀操作命令調(diào)用verilog中的讀操作任務(wù),并將進(jìn)行讀操作的地址傳遞到verilog中,切換進(jìn)程;當(dāng)收到等待操作命令名稱時(shí),Tel解釋器通過等待操作命令調(diào)用verilog中的等待操作任務(wù);4)verilog的任務(wù)完成后將返回值返回給Tel解釋器,切換進(jìn)程。本發(fā)明減少開發(fā)和調(diào)試測(cè)試用例的工作量,可實(shí)時(shí)控制仿真進(jìn)程。
【專利說明】-種基于Tc I的FPGA交互式仿真方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及一種基于Tel的FPGA交互式仿真方法,屬于計(jì)算機(jī)軟件【技術(shù)領(lǐng)域】。 技術(shù)背景
[0002] 隨著FPGA容量和規(guī)模的日益擴(kuò)大,F(xiàn)PGA設(shè)計(jì)的復(fù)雜度也越來越高,為了保證設(shè)計(jì) 的質(zhì)量,F(xiàn)PGA驗(yàn)證工程師需要使用Verilog或者Systemverilog語(yǔ)言搭建驗(yàn)證平臺(tái)和編寫 測(cè)試用例并使用仿真工具對(duì)FPGA進(jìn)行功能仿真。同時(shí)FPGA工程師需要把FPGA代碼轉(zhuǎn)化 成裝載文件下載到FPGA器件中進(jìn)行板級(jí)的測(cè)試。在板級(jí)測(cè)試中,F(xiàn)PGA工程師還需要根據(jù) 軟件驅(qū)動(dòng)編寫測(cè)試腳本來對(duì)FPGA進(jìn)行板級(jí)測(cè)試。FPGA仿真是對(duì)FPGA的設(shè)計(jì)代碼進(jìn)行驗(yàn) 證,這種方法的優(yōu)點(diǎn)是能夠直接看到仿真的波形,便于FPGA工程師進(jìn)行調(diào)試。FPGA板級(jí)測(cè) 試是對(duì)FPGA器件進(jìn)行測(cè)試,是在真實(shí)環(huán)境中的測(cè)試,但這種方法無法看到FPGA內(nèi)部信號(hào)的 變化狀態(tài),不方便進(jìn)行debug。由于這兩種測(cè)試方法是不同的測(cè)試環(huán)境,不同的仿真工具和 驗(yàn)證平臺(tái),所以FPGA仿真的測(cè)試用例不能夠直接在板上進(jìn)行測(cè)試,同樣,F(xiàn)PGA板上的測(cè)試 腳本也無法在FPGA仿真工具上運(yùn)行。這樣,F(xiàn)PGA的仿真驗(yàn)證和板級(jí)測(cè)試無法做到一致性。 如果在FPGA板級(jí)測(cè)試發(fā)現(xiàn)的問題,需要在FPGA仿真中編寫同樣的測(cè)試用例進(jìn)行問題重現(xiàn)。 并且,在仿真平臺(tái)和板級(jí)測(cè)試平臺(tái)開發(fā)測(cè)試同一功能的測(cè)試用例有一定重復(fù)工作。
【發(fā)明內(nèi)容】
[0003] 針對(duì)現(xiàn)有技術(shù)中存在的技術(shù)問題,本發(fā)明的目的在于提供一種基于Tel的FPGA交 互式仿真方法。
[0004] 基于本發(fā)明創(chuàng)建的測(cè)試用例可以在Qustasim命令行上調(diào)用仿真平臺(tái)的task,無 需編寫測(cè)試用例,可以做到實(shí)時(shí)控制仿真進(jìn)程,模擬板級(jí)測(cè)試場(chǎng)景,減少開發(fā)和調(diào)試測(cè)試用 例的工作量。該腳本語(yǔ)言采用Tel語(yǔ)言進(jìn)行編寫,Tel屬于解釋性語(yǔ)言,不同于C/C++等編譯 性語(yǔ)言,Tel語(yǔ)言編寫好以后不需要通過軟件編譯就可以直接運(yùn)行。Tel語(yǔ)言不但在板級(jí)測(cè) 試中可以使用,而且仿真工具Qustasim也有支持Tel的PLI (ProgramLanguagelnterface), 可以直接在驗(yàn)證平臺(tái)里調(diào)用Tel語(yǔ)句。但是verilog是硬件描述語(yǔ)言,執(zhí)行的task都是 基于時(shí)序關(guān)系的,用仿真工具驗(yàn)證是有仿真時(shí)間概念的,而Tel語(yǔ)句的執(zhí)行并不占用仿真 時(shí)間,所以在verilog中調(diào)用的Tel命令,不會(huì)等待verilog的任務(wù)完成就會(huì)去執(zhí)行下一個(gè) Tel命令,這樣不能夠按照時(shí)間關(guān)系利用Tel腳本來執(zhí)行verilog中的task。為了實(shí)現(xiàn)Tel 與verilog的交互,需要有Tel擴(kuò)展命令(用C語(yǔ)言編寫)在Verilog調(diào)用Tel腳本時(shí)來 阻塞Tel命令的執(zhí)行來等待verilog中task的完成。附圖描述了 verilog和Tel之間的 交互關(guān)系。這樣,在驗(yàn)證平臺(tái)里用verilog寫的例如讀寫寄存器,發(fā)包收包等的task可以 用Tel語(yǔ)句進(jìn)行封裝,從而可以建立起交互式仿真。在Qustasim的仿真命令行中敲入封裝 好的Tel命令,可以實(shí)時(shí)發(fā)起進(jìn)行讀寫寄存器,發(fā)包收包的命令,并看到仿真結(jié)果。
[0005] 本發(fā)明的技術(shù)方案為:
[0006] 一種基于Tel的FPGA交互式仿真方法,其步驟為:
[0007] 1)在FPGA驗(yàn)證平臺(tái)verilog中新建和初始化一個(gè)Tel解釋器;其中,在verilog 中設(shè)置寫操作b_write命令名稱、讀操作b_read命令名稱、等待操作b_wait_irq命令名 稱,并建立verilog和Tel解釋器之間的通信通道;所述Tel解釋器中設(shè)置寫操作命令b_ write、讀操作命令b_read、等待操作命令b_wait_irq,并將其分別映射到verilog中對(duì)應(yīng) 的寫操作任務(wù)、讀操作任務(wù)、等待操作任務(wù);
[0008] 2)在verilog中采用Tel語(yǔ)言創(chuàng)建一測(cè)試用例;其中,該測(cè)試用例中,在每一 verilog任務(wù)Tel調(diào)用命令后,設(shè)置一阻塞Tel命令執(zhí)行的阻塞指令,用于等待verilog的 任務(wù)完成后執(zhí)行該測(cè)試用例中下一句Tel命令;
[0009] 3)所述Tel解釋器調(diào)用該測(cè)試用例,對(duì)該測(cè)試用例中的命令進(jìn)行執(zhí)行;當(dāng)Tel解 釋器收到寫操作13_?^;^6命令名稱時(shí),Tel解釋器通過寫操作命$b_write調(diào)用verilog中 的寫操作任務(wù),并通過所述通信通道將進(jìn)行寫操作的地址和數(shù)據(jù)傳遞到verilog中,并且 將Tel進(jìn)程轉(zhuǎn)移到verilog進(jìn)程;當(dāng)Tel解釋器收到讀操作b_read命令名稱時(shí),Tel解釋 器通過讀操作命令b_read調(diào)用verilog中的讀操作任務(wù),并通過所述通信通道將進(jìn)行讀操 作的地址傳遞到verilog中,并且將Tel進(jìn)程轉(zhuǎn)移到verilog進(jìn)程;當(dāng)Tel解釋器收到等待 操作b_wait_irq命令名稱時(shí),Tel解釋器通過等待操作命令b_wait_irq調(diào)用verilog中 的等待操作任務(wù);
[0010] 4) verilog的任務(wù)完成后將返回值通過所述通信通道返回給Tel解釋器,并且將 verilog進(jìn)程轉(zhuǎn)移到Tel的進(jìn)程。
[0011] 進(jìn)一步的,所述阻塞Tel指令用C語(yǔ)言編寫。
[0012] 進(jìn)一步的,所述返回值為整數(shù)類型;當(dāng)所述返回值為正值時(shí),Tel解釋器順序執(zhí)行 該測(cè)試用例中的Tel指令,否則結(jié)束執(zhí)行該測(cè)試用例。
[0013] 與現(xiàn)有技術(shù)相比,本發(fā)明的積極效果為:
[0014] 為了統(tǒng)一 FPGA仿真測(cè)試和板級(jí)測(cè)試,本發(fā)明所創(chuàng)建腳本可以在FPGA仿真工具 Qustasim上運(yùn)行,同時(shí)也可以在MSComm命令行上運(yùn)行。從而只需要開發(fā)一套測(cè)試腳本,既 可以在仿真平臺(tái)上運(yùn)行,又可以在板級(jí)測(cè)試中使用,不但做到了仿真和板級(jí)測(cè)試的一致性, 也節(jié)約了人力開發(fā)成本。
[0015] 本發(fā)實(shí)現(xiàn)Tel與verilog的交互,從而做到實(shí)時(shí)控制仿真進(jìn)程,模擬板級(jí)測(cè)試場(chǎng) 景,減少開發(fā)和調(diào)試測(cè)試用例的工作量。
【專利附圖】
【附圖說明】
[0016] 附圖為本發(fā)明的交互式仿真方法流程圖。
【具體實(shí)施方式】
[0017] TCL_PLI庫(kù)允許任何的Tel語(yǔ)句可以在verilog的仿真中被調(diào)用,PLI的功能是初 始化Tel的解釋器并且把Tel的功能映射到verilog的task中去,另外還可以幫助在Tel 解釋器中啟動(dòng)腳本來控制verilog和Tel之間的交互。Verilog的task有入口可以讓Tel 向verilog傳遞變量,同樣,verilog也可以將返回的變量傳遞給Tel。PLI提供了這種Tel 和verilog之間信息的共享和數(shù)據(jù)的傳遞。
[0018] 在 TCL_PLI 庫(kù)中有四個(gè) PLIfunction: $tcllnit, $tclExec, $tclGetArgs, $tclClo se。$tcllnit用來新建和初始化一個(gè)新的Tel解釋器。它定義了一個(gè)新的Tclfunction可 以被verilog的task來調(diào)用,并且映射到對(duì)應(yīng)的task上,另外還定義了有多少個(gè)參數(shù)可 以被使用。$tclExec用來執(zhí)行一個(gè)新的腳本,將Tel的命令映射到verilog的task上來。 $tclGetArgs用來獲得tel傳遞的參數(shù)值。$tclClose用來結(jié)束Tel的解釋器,釋放內(nèi)存。
[0019] 在表1中描述了如何在verilog中新建和初始化一個(gè)Tel解釋器。第1到3行定 義了 3個(gè)參數(shù)表示Tel命令的名稱。第7和第8行定義了 3個(gè)變量用于verilog和Tel之 間的通信。第12到18行用$tcllnit函數(shù)來初始化一個(gè)Tel解釋器,這個(gè)解釋器定義了三 個(gè)Tel命令(b_write,b_read,b_wait_irq)用來映射到verilog的task。這些命令可以 在腳本中調(diào)用,用來執(zhí)行在仿真中讀寫總線和等待中斷的操作。
[0020] 表 1
[0021]
【權(quán)利要求】
1. 一種基于Tel的FPGA交互式仿真方法,其步驟為: 1) 在FPGA驗(yàn)證平臺(tái)verilog中新建和初始化一個(gè)Tel解釋器;其中,在verilog中設(shè) 置寫操作b_write命令名稱、讀操作b_read命令名稱、等待操作b_wait_irq命令名稱,并 建立verilog和Tel解釋器之間的通信通道;所述Tel解釋器中設(shè)置寫操作命令b_write、 讀操作命令b_read、等待操作命令b_wait_irq,并將其分別映射到verilog中對(duì)應(yīng)的寫操 作任務(wù)、讀操作任務(wù)、等待操作任務(wù); 2) 在verilog中采用Tel語(yǔ)言創(chuàng)建一測(cè)試用例;其中,該測(cè)試用例中,在每一 verilog 任務(wù)Tel調(diào)用命令后,設(shè)置一阻塞Tel命令執(zhí)行的阻塞指令,用于等待verilog的任務(wù)完成 后執(zhí)行該測(cè)試用例中下一句Tel命令; 3) 所述Tel解釋器調(diào)用該測(cè)試用例,對(duì)該測(cè)試用例中的命令進(jìn)行執(zhí)行;當(dāng)Tel解釋器 收到寫操作b_write命令名稱時(shí),Tel解釋器通過寫操作命$b_write調(diào)用verilog中的寫 操作任務(wù),并通過所述通信通道將進(jìn)行寫操作的地址和數(shù)據(jù)傳遞到verilog中,并且將Tel 進(jìn)程轉(zhuǎn)移到verilog進(jìn)程;當(dāng)Tel解釋器收到讀操作b_read命令名稱時(shí),Tel解釋器通過 讀操作命令b_read調(diào)用verilog中的讀操作任務(wù),并通過所述通信通道將進(jìn)行讀操作的地 址傳遞到verilog中,并且將Tel進(jìn)程轉(zhuǎn)移到verilog進(jìn)程;當(dāng)Tel解釋器收到等待操作b_ wait_irq命令名稱時(shí),Tel解釋器通過等待操作命令b_wait_irq調(diào)用verilog中的等待操 作任務(wù); 4. verilog的任務(wù)完成后將返回值通過所述通信通道返回給Tel解釋器,并且將 verilog進(jìn)程轉(zhuǎn)移到Tel的進(jìn)程。
2. 如權(quán)利要求1所述的方法,其特征在于所述阻塞Tel指令用C語(yǔ)言編寫。
3. 如權(quán)利要求1或2所述的方法,其特征在于所述返回值為整數(shù)類型;當(dāng)所述返回值 為正值時(shí),Tel解釋器順序執(zhí)行該測(cè)試用例中的Tel指令,否則結(jié)束執(zhí)行該測(cè)試用例。
【文檔編號(hào)】G06F11/36GK104216831SQ201410455781
【公開日】2014年12月17日 申請(qǐng)日期:2014年9月9日 優(yōu)先權(quán)日:2014年9月9日
【發(fā)明者】蔡瀟 申請(qǐng)人:上海北大方正科技電腦系統(tǒng)有限公司