基于FPGA的軟硬件協(xié)同仿真加速技術(shù)
1 前言
本文引用地址:http://www.ex-cimer.com/article/201710/367170.htm在數(shù)字集成電路的設(shè)計(jì)中,當(dāng)設(shè)計(jì)工程師在用硬件描述語言(HDL:Hardware Description Language)完成設(shè)計(jì)之后,需要通過仿真來檢驗(yàn)設(shè)計(jì)是否滿足預(yù)期的功能。在仿真中,設(shè)計(jì)工作師需要為設(shè)計(jì)項(xiàng)目建立一個(gè)測(cè)試平臺(tái),這個(gè)測(cè)試平臺(tái)為設(shè)計(jì)項(xiàng)目提供盡可能完備的測(cè)試激勵(lì),并提供可供觀測(cè)的輸出響應(yīng),根據(jù)這些輸出響應(yīng)信息,設(shè)計(jì)工程師便可以判斷設(shè)計(jì)項(xiàng)目是否滿足預(yù)期的功能。在進(jìn)行仿真工程時(shí),設(shè)計(jì)工程師一般先對(duì)各個(gè)功能模塊進(jìn)行仿真驗(yàn)證,全部通過后再對(duì)整個(gè)系統(tǒng)設(shè)計(jì)進(jìn)行仿真。當(dāng)設(shè)計(jì)工程師在仿真中發(fā)現(xiàn)錯(cuò)誤,就需要進(jìn)行仔細(xì)調(diào)試,找出錯(cuò)誤發(fā)生的原因并加以修改。
隨著系統(tǒng)設(shè)計(jì)的復(fù)雜性不斷增加,當(dāng)設(shè)計(jì)集成度超過百萬門后,設(shè)計(jì)正確性的驗(yàn)證比設(shè)計(jì)本身還要費(fèi)勁,系統(tǒng)仿真的實(shí)時(shí)性很難滿足要求。在針對(duì)復(fù)雜電路進(jìn)行軟件仿真時(shí),系統(tǒng)的仿真時(shí)間往往需要占據(jù)大部分的設(shè)計(jì)時(shí)間。我們常常會(huì)為了仿真電路的某些功能,而不得不等上幾個(gè)小時(shí)甚至幾天。如何提高仿真效率,減少仿真復(fù)雜度,縮短仿真時(shí)間,將成為系統(tǒng)設(shè)計(jì)中的關(guān)鍵一環(huán).利用基于C語言的設(shè)計(jì)和驗(yàn)證方法來代替?zhèn)鹘y(tǒng)的基于HDL語言設(shè)計(jì)的仿真,從而加快仿真速度,但是這種方法只適用設(shè)計(jì)的早期階段。為了方便而快速的實(shí)現(xiàn)仿真驗(yàn)證,及時(shí)得到測(cè)試數(shù)據(jù),本文提出運(yùn)用硬件加速的思想,采用硬件仿真平臺(tái)和軟件仿真平臺(tái)相互通信,即通過主機(jī)上運(yùn)行的仿真軟件與硬件平臺(tái)相結(jié)合,實(shí)現(xiàn)軟硬件協(xié)同加速仿真,仿真速度可以提高30倍。
2 軟硬件協(xié)同加速仿真
在傳統(tǒng)的設(shè)計(jì)與驗(yàn)證過程中,設(shè)計(jì)工程師首先將復(fù)雜的系統(tǒng)逐模塊的用硬件描述語言表述,待所有模塊在仿真器上單獨(dú)驗(yàn)證通過后,通過模塊間整合進(jìn)行局部和整個(gè)設(shè)計(jì)的仿真,如圖1所示。
圖1 設(shè)計(jì)驗(yàn)證進(jìn)程
假設(shè)模塊Master和模塊Slave是整個(gè)復(fù)雜設(shè)計(jì)中的一部分。模塊Master負(fù)責(zé)把輸入數(shù)據(jù)進(jìn)行數(shù)據(jù)處理,隨后把處理后數(shù)據(jù)發(fā)送到下一個(gè)模塊 Slave,Slave模塊完成一個(gè)功能復(fù)雜的算法運(yùn)算,運(yùn)算結(jié)束后把結(jié)果返回到模塊Master中,進(jìn)行下一步操作,設(shè)計(jì)框圖如圖2所示。
圖2 設(shè)計(jì)例子框圖
設(shè)計(jì)工程師在完成模塊Master和模塊Slave的HDL設(shè)計(jì)后,用HDL 仿真器軟件分別對(duì)兩個(gè)模塊進(jìn)行仿真驗(yàn)證,模塊Master的仿真時(shí)間花費(fèi)了五分鐘,模塊Slave花費(fèi)了十五分鐘,兩個(gè)模塊進(jìn)行聯(lián)合仿真花費(fèi)了二十分鐘。如果設(shè)計(jì)不正確,則要對(duì)設(shè)計(jì)進(jìn)行重新修改和仿真直到驗(yàn)證通過為止,重復(fù)的仿真工作將要花費(fèi)幾天甚至幾星期。為了縮短仿真時(shí)間,本文提出利用硬件加速的思想,對(duì)設(shè)計(jì)進(jìn)行軟硬件協(xié)同加速仿真。模塊Master和模塊Slave的功能首先分別在軟件上仿真驗(yàn)證通過,待模塊Slave經(jīng)綜合實(shí)現(xiàn)后,把模塊 Slave下載到硬件中,模塊Master仍然運(yùn)行在軟件上,通過HDL仿真工具提供的外部接口實(shí)現(xiàn)軟硬件間的數(shù)據(jù)交互,進(jìn)行模塊Slave和模塊 Master的聯(lián)合仿真驗(yàn)證,一旦仿真通過,把模塊Master和模塊Slave都放入硬件中進(jìn)行加速仿真驗(yàn)證,這時(shí)兩個(gè)模塊的聯(lián)合仿真時(shí)間將大大縮短。
圖3加速仿真
本文描述的加速仿真技術(shù)實(shí)現(xiàn)框圖如圖3所示。DUT(Design Under Test)由可綜合的Verilog HDL語言設(shè)計(jì)完成。DUT綜合實(shí)現(xiàn)后,下載到現(xiàn)場(chǎng)可編程門陣列(FPGA:Field Programmable Gate Array)中進(jìn)行加速仿真驗(yàn)證。運(yùn)行在HDL 仿真器上的測(cè)試文件TestBench給DUT發(fā)送測(cè)試激勵(lì)并響應(yīng)輸出信息,FPGA與HDL仿真器間的信息交換由仿真器提供的Verilog 編程語言接口(PLI:Programming Language Interface)來實(shí)現(xiàn)。Verilog PLI為Verilog代碼調(diào)用C語言編寫的函數(shù)提供了一種機(jī)制,它提供了C語言動(dòng)態(tài)鏈接程序與仿真器的接口,可以實(shí)現(xiàn)C語言和Verilog語言的協(xié)同仿真。由于C語言在過程控制方面比Verilog語言有優(yōu)勢(shì),可以用C程序來產(chǎn)生測(cè)試激勵(lì)和讀取信號(hào)的值。以Windows平臺(tái)為例,用戶通過運(yùn)用C語言和Verilog PLI編寫接口函數(shù),編譯代碼并生成動(dòng)態(tài)鏈接庫(DLL:Dynamic Link Library),然后在由Verilog語言編寫的TestBench中調(diào)用這些函數(shù)。在執(zhí)行TestBench文件進(jìn)行仿真時(shí),TestBench中的C函數(shù)一旦鏈接成功,C函數(shù)將詳細(xì)信息傳遞給HDL仿真器,執(zhí)行C函數(shù)就可以像仿真Verilog代碼一樣進(jìn)行仿真。這樣,設(shè)計(jì)工程師利用 Verilog PLI接口創(chuàng)建自己的系統(tǒng)調(diào)用任務(wù)和系統(tǒng)函數(shù),就可以通過C語言編程對(duì)DUT進(jìn)行輔助仿真,達(dá)到Verilog語法所不能實(shí)現(xiàn)的功能。
3 仿真實(shí)例
圖4 軟硬件協(xié)同加速仿真平臺(tái)框圖
軟硬件協(xié)同加速仿真平臺(tái)框圖如圖4所示。我們使用的主機(jī)配置為2.66GHz Intel Core2處理器和2GB內(nèi)存。軟件平臺(tái)HDL仿真器運(yùn)行于主機(jī)上,完成對(duì)仿真過程的控制和檢測(cè)。HDL仿真器采用Mentor Graphics子公司Model Tech公司出品的ModelSim軟件,它全面支持VHDL和Verilog語言的IEEE標(biāo)準(zhǔn),可以實(shí)現(xiàn)VHDL、Verilog以及VHDL- Verilog混合設(shè)計(jì)的仿真,還能夠與C語言一起實(shí)現(xiàn)對(duì)HDL設(shè)計(jì)文件實(shí)現(xiàn)協(xié)同仿真。同時(shí),相對(duì)于大多數(shù)的HDL仿真軟件來說,ModelSim在仿真速度上也有明顯優(yōu)勢(shì),并且它支持眾多的FPGA廠家?guī)欤窃O(shè)計(jì)工程師做FPGA設(shè)計(jì)的RTL級(jí)和門級(jí)電路仿真的首選。
硬件平臺(tái)主要以FPGA為核心,采用了一片Xilinx公司推出的Virtex-5 XC5VSX95T-FF1136 芯片,它內(nèi)部有豐富的邏輯資源,包括14720片Slices,8784Kb的BlockRam,640片DSP 48E Slices,16個(gè)GTP 收發(fā)器,640個(gè)可配置 I/O 管腳。此外,該芯片內(nèi)嵌了一個(gè)PCI-express Endpoint Block 硬核。Xilinx公司提供的IP核endpoint Block Plus for PCIe解決方案適用于 Virtex-5 SXT FPGA架構(gòu),該IP核例化了Virtex-5 SXT器件中內(nèi)嵌的Virtex-5 Integrated Block for PCI Express,為實(shí)現(xiàn)單片可配置PCI-express總線解決方案提供了可能。PCI-express總線作為下一代高性能I/O互聯(lián)技術(shù)和標(biāo)準(zhǔn)的局域I/O總線,將廣泛應(yīng)用于未來各種計(jì)算機(jī)平臺(tái)。
在實(shí)驗(yàn)中,我們選用Xilinx公司的IP核FFT(Fast Fourier Transform)v6.0[8]模塊作為DUT,該FFT核配置成Pipelined Streaming I/O的方式,它可以實(shí)現(xiàn)對(duì)任意間隔或者連續(xù)數(shù)據(jù)幀的處理。FFT模塊在ModelSim軟件上運(yùn)行的仿真結(jié)果波形如圖5所示。
圖5 IFFT模塊仿真波形
我們分別對(duì)DUT進(jìn)行純軟件仿真和軟硬件協(xié)同加速仿真測(cè)試,實(shí)驗(yàn)結(jié)果如圖6所示。仿真結(jié)果與主機(jī)配置、設(shè)計(jì)的復(fù)雜度以及仿真時(shí)鐘周期數(shù)有關(guān)。
圖6 實(shí)驗(yàn)結(jié)果對(duì)比
4 結(jié)論
本文利用硬件加速的思想,提出了基于FPGA的軟硬件協(xié)同加速仿真技術(shù)。用可綜合的Verilog語言編寫的設(shè)計(jì)測(cè)試文件(DUT)經(jīng)綜合實(shí)現(xiàn)后,下載到 FPGA中,TestBench仍然運(yùn)行在主機(jī)的仿真器ModelSim軟件上,通過Verilog編程語言接口(PLI)進(jìn)行軟硬件間的數(shù)據(jù)交互,從而實(shí)現(xiàn)對(duì)DUT的軟硬件協(xié)同加速仿真。實(shí)驗(yàn)結(jié)果表明,相對(duì)于純軟件仿真,運(yùn)用軟硬件協(xié)同加速仿真技術(shù)仿真速度提高了30倍,這大大縮短了仿真時(shí)間,從而達(dá)到縮短設(shè)計(jì)周期的目的。
作者 江霞林,周劍揚(yáng),楊銀濤,林曉立
評(píng)論