近年來,芯片規(guī)模,功能復(fù)雜度以及集成度的不斷增加,驗(yàn)證工作面臨著非常大的挑戰(zhàn)。軟件仿真(Simulation),FPGA原型驗(yàn)證(FPGA Based Prototyping)和硬件仿真加速(Emulation)這三種有效的功能驗(yàn)證的方法,在驗(yàn)證流程中發(fā)揮著非常重要的作用。
軟件仿真有著出色的信號可見性,F(xiàn)PGA原型驗(yàn)證有著極強(qiáng)的實(shí)時(shí)性和系統(tǒng)開發(fā)性,硬件仿真加速則兼具了信號可見性,可調(diào)試性,以及仿真加速的能力,這幾種驗(yàn)證方法在芯片前端設(shè)計(jì)的功能性驗(yàn)證階段發(fā)揮著重要的作用。FPGA原型驗(yàn)證和硬件仿真加速作為硬件輔助驗(yàn)證的兩種手段,在芯片設(shè)計(jì)的過程中相輔相成,互為補(bǔ)充,為芯片成功流片保駕護(hù)航。
硬件仿真加速階段,一般用于代碼還不很成熟的開發(fā)的中后期階段,需要能夠提供更大的系統(tǒng)容量,更方便的調(diào)試手段和方法,主要用來驗(yàn)證設(shè)計(jì)的RTL代碼,兼顧軟硬件協(xié)同驗(yàn)證和軟件開發(fā)。而FPGA原型驗(yàn)證階段一般應(yīng)用于代碼比較成熟的的偏后階段,主要是做軟件開發(fā)和軟硬件協(xié)同驗(yàn)證。
圖一 硬件輔助驗(yàn)證在流程中的位置
幾種不同的仿真驗(yàn)證手段的效果對比
(一)基于硬件輔助驗(yàn)證工具的仿真加速方法
一般意義上,我們將FPGA原型驗(yàn)證和硬件仿真加速都?xì)w為硬件輔助驗(yàn)證手段,比較有效和最為常見的仿真加速方式分為:軟件仿真(Software Simulation),周期精確級的仿真加速(Cycle Based Simulation ),事務(wù)級的仿真加速(Transaction Based Simulation),和完全可綜合的仿真加速(Synthesizable Simulation)這幾種方法。通過不同的仿真加速方法,對驗(yàn)證速度能夠有接近千倍的提升。
第一種,軟件仿真(Software Simulation),最常見的仿真方法,將Testbench和DUT都在仿真軟件中運(yùn)行。最主流的仿真軟件的算法機(jī)制大部分都是“基于事件的算法”這種算法更適合處理離散的時(shí)間,狀態(tài)和變量。仿真器首先在編譯數(shù)據(jù)結(jié)構(gòu)的時(shí)候會建立一個(gè)事件隊(duì)列,仿真從時(shí)間0開始,在時(shí)間0的所有事件隊(duì)列處理完畢以后,才可以進(jìn)入下一個(gè)時(shí)間周期。而在同一個(gè)時(shí)間周期內(nèi)的事件在“硬件”上都是并行的。
圖二 Simulator仿真的結(jié)構(gòu)
圖三 基于事件的Simulator算法
第二種:周期精確級的仿真加速(Cycle Based Simulation Acceleration )
我們在針對軟硬件聯(lián)合仿真的方式做說明之前,需要對SCE-MI/MII(標(biāo)準(zhǔn)協(xié)同仿真建模接口)做一下說明,該接口是為了標(biāo)準(zhǔn)化軟件模型和硬件平臺之間的通訊而定義的,屬于Accellera標(biāo)準(zhǔn),目的是使用者將DUT和Testbench做連接,通過事務(wù)器模型(Transactor)能夠輕松的實(shí)現(xiàn)互聯(lián)。下圖是該協(xié)議的基本結(jié)構(gòu)說明。
圖四 SCE-MII基本結(jié)構(gòu)
周期精確級的仿真加速,是通過專用的硬件來運(yùn)行用戶設(shè)計(jì),通過仿真軟件運(yùn)行Testbench,根據(jù)專用的軟硬件協(xié)同工作的協(xié)議來進(jìn)行軟件硬件側(cè)的數(shù)據(jù)轉(zhuǎn)換和交付,從而實(shí)現(xiàn)軟件仿真加速的一種方法。
該方法在軟硬件兩側(cè)交互的周期中,嚴(yán)格按照時(shí)間單位推進(jìn)每一步的協(xié)議轉(zhuǎn)換,并且采用雙握手的方式進(jìn)行通訊確認(rèn),這將產(chǎn)生大量的軟硬件之間的交互開銷,所以在加速的效果上不是十分的理想。這種方式的優(yōu)點(diǎn)是針對一些非標(biāo)協(xié)議的轉(zhuǎn)換和時(shí)鐘同步結(jié)構(gòu)的設(shè)計(jì)有很大的靈活性。
圖五:周期精確級的仿真加速結(jié)構(gòu)
圖六:雙握手協(xié)議示意
第三種:事務(wù)級的仿真加速(Transaction Based Acceleration)
事務(wù)級的仿真加速是將DUT和部分Testbench運(yùn)行在硬件輔助驗(yàn)證工具之中,通過事務(wù)器與仿真器中運(yùn)行的Testbench進(jìn)行通訊,可以實(shí)現(xiàn)將無時(shí)序激勵變?yōu)橛袝r(shí)序功能的交互。這是因?yàn)檐浖?cè)的一個(gè)操作所花費(fèi)的時(shí)間在一般情況下會遠(yuǎn)大于硬件側(cè)的時(shí)鐘周期。
當(dāng)發(fā)送一個(gè)帶時(shí)序的激勵時(shí),軟件側(cè)需要花更多的時(shí)間進(jìn)行時(shí)序的構(gòu)建,會在一定程度上影響軟硬件協(xié)同仿真平臺的性能。所以在軟硬件驗(yàn)證過程中,事務(wù)級仿真加速能夠很好的解決這類型的問題。
比如對于一個(gè)擁有AXI或者AHB接口的DUT,軟件側(cè)需要按照AXI或者AHB的時(shí)序規(guī)則構(gòu)建激勵,而擴(kuò)展了無時(shí)序激勵變有時(shí)序功能時(shí),僅需要將AXI或者AHB的總線數(shù)據(jù)按順序發(fā)送至硬件側(cè),硬件側(cè)可以自動完成時(shí)序的構(gòu)建,這樣的功能結(jié)構(gòu)能夠大幅度提高仿真的效率。
圖七:事務(wù)級的仿真加速結(jié)構(gòu)
第四種:完全可綜合的仿真加速(Synthesizable Testbench Simulation )
圖八:完全可綜合的仿真加速結(jié)構(gòu)
這種仿真加速方式相較于Transaction的仿真加速,是需要將用戶的DUT和測試激勵完全綜合進(jìn)仿真加速器,這樣可以大大的減少因?yàn)檐浻布慕换ザa(chǎn)生的通訊開銷,從而可以極大地提高仿真速度。
不同的軟硬件結(jié)合的仿真加速方式能夠帶來不同的加速比,周期精確級的仿真加速因?yàn)橥ㄓ嶉_銷帶來的影響,相較于軟件仿真基本上可以做到5-100倍的仿真加速;基于事務(wù)級的仿真加速則能夠?yàn)橛脩魩?0-1000倍的加速體驗(yàn),尤其適用于各種專用的算法實(shí)現(xiàn),比如:視頻編解碼的處理,交互數(shù)據(jù)量巨大的通訊芯片驗(yàn)證等。而完全可綜合的仿真加速則可以針對全流程的設(shè)計(jì)驗(yàn)證提供最有效的仿真加速手段。
圖九:幾種不同的仿真加速的加速比
(二)利用硬件輔助驗(yàn)證工具實(shí)現(xiàn)混合仿真
基于硬件輔助驗(yàn)證的混合仿真是指利用硬件仿真加速器和虛擬原型同時(shí)運(yùn)行SoC的不同設(shè)計(jì)模塊,在SoC整體架構(gòu)硬件實(shí)現(xiàn)之前提供嵌入式軟件和硬件的協(xié)同仿真,從而加速SoC的研發(fā)進(jìn)程。
可以實(shí)現(xiàn)硅前硬件和嵌入式軟件協(xié)同混合驗(yàn)證,為系統(tǒng)架構(gòu)的優(yōu)化、嵌入式軟件以及RTL的早期開發(fā)提供準(zhǔn)確,即時(shí)的仿真驗(yàn)證環(huán)境,有力推動產(chǎn)品開發(fā)左移。
一般的混合仿真系統(tǒng)由Qemu宿主機(jī)和硬件仿真加速系統(tǒng)兩部分構(gòu)成,其中,宿主機(jī)的操作系統(tǒng)中會運(yùn)行基于開源環(huán)境的目標(biāo)嵌入式處理器和基于Qemu Virtual Linux Platform的內(nèi)核驅(qū)動程序以及用戶態(tài)的驅(qū)動程序。
通過專有協(xié)議實(shí)現(xiàn)軟件和用戶設(shè)計(jì)的通訊,將運(yùn)行硬件仿真加速工具的宿主機(jī)和硬件平臺,通過TLM(Transaction Level Model)的傳輸模型,將用戶設(shè)計(jì)的IP和實(shí)現(xiàn)硬件結(jié)構(gòu)的功能子卡進(jìn)行聯(lián)合,從而實(shí)現(xiàn)一個(gè)完整的混合仿真系統(tǒng)。
圖十:混合驗(yàn)證工作流程
(三)集成高效的并行邏輯綜合工具提升硬件輔助驗(yàn)證效率
設(shè)計(jì)驗(yàn)證過程綜合時(shí)間長,迭代頻率高,需要設(shè)計(jì)工程師和驗(yàn)證工程師花費(fèi)大量的工作時(shí)間和精力。近年來,隨著多種圖像處理器,人工智能加速算法,大數(shù)據(jù)采集,多處理器應(yīng)用等應(yīng)用方向的芯片設(shè)計(jì)增加,各種GPU,TPU,XPU等大邏輯量的IP被集成至單顆芯片內(nèi),造成設(shè)計(jì)、仿真和驗(yàn)證的數(shù)據(jù)量出現(xiàn)了指數(shù)級的增長,所以綜合和仿真等過程都展現(xiàn)出“過長的編譯綜合時(shí)間”、“編譯迭代耗時(shí)過長”等情況,工程師大量的時(shí)間浪費(fèi)在了等待綜合編譯上。
流程節(jié)點(diǎn)不同,存在不同的綜合策略需求。硬件仿真加速階段,一般用于代碼還不很成熟的開發(fā)的中后期階段,需要能夠提供更大的系統(tǒng)容量,更方便的調(diào)試手段和方法,主要用來驗(yàn)證設(shè)計(jì)的RTL代碼,兼顧軟硬件協(xié)同驗(yàn)證和軟件開發(fā)。而原型驗(yàn)證階段一般應(yīng)用于代碼比較成熟的的偏后階段,主要是做軟件開發(fā)和軟硬件協(xié)同驗(yàn)證。
在以上兩個(gè)流程階段,綜合加速的需求各有側(cè)重點(diǎn)。硬件仿真加速階段代碼的成熟度不高,迭代頻繁,需要更高速的編譯速度來提高迭代效率,以及對RTL代碼的忠實(shí)的一致反映以便于調(diào)試;而原型驗(yàn)證階段代碼相對成熟,需要產(chǎn)生出更高效的功能等效系統(tǒng)來提高運(yùn)行速度。
高效并行綜合是將用戶的RTL代碼按照不同模組分類,分別調(diào)用綜合工具,同時(shí)進(jìn)行綜合,從而實(shí)現(xiàn)快速綜合的目的,按照不同的階段,可以設(shè)置不同的綜合流程,可以實(shí)現(xiàn)“Top-down”和“Bottom-up”兩種方式;支持多種的邏輯綜合器,比如:Xilinx Vivado, Synposys Synplify和其他的一些開源的邏輯綜合器,支持GUI和Batch模式,用戶可以靈活選擇功能展現(xiàn)模式;可以支持模組并行化處理,既支持本地多線程并行處理,也可以有效的支持多種作業(yè)調(diào)度系統(tǒng);可以設(shè)置不同的參數(shù)來制定不同的綜合策略,從而實(shí)現(xiàn)綜合效率的最大化,比如:面積優(yōu)先,速度優(yōu)先,最大化、小化優(yōu)先等策略。
通過并行邏輯綜合方案可以提供出色的自動化流程,大大縮短編譯所需時(shí)間,提高整體的效率和利用率,極大的提高生產(chǎn)率。
圖十一:并行綜合處理界面
(四)高效的在線邏輯分析工具提升硬件輔助驗(yàn)證效率
FPGA產(chǎn)品自帶的在線邏輯分析儀工具(ILA 或 SignalTap)可以為FPGA提供觀測信號的便捷性,但因?yàn)槠浔旧淼膶傩詥栴},存在了諸多的短板,例如:數(shù)據(jù)波形存儲在片上的RAM中,需要均衡用戶設(shè)計(jì)占用的存儲資源和用于調(diào)試的存儲資源;受限于FPGA片上RAM的容量,對待抓取的信號的位寬和深度都有限制;待抓取波形需要從FPGA的RAM資源中通過JTAG導(dǎo)出到工作站中,由于傳輸速度過慢,當(dāng)數(shù)據(jù)量巨大時(shí),傳輸時(shí)間占用更加的明顯;芯片邏輯容量增加,原廠的邏輯分析儀無法滿足調(diào)試需求。
硬件輔助驗(yàn)證工具中的專用邏輯分析儀有效的解決了以上的幾個(gè)問題。
1)波形數(shù)據(jù)存儲在FPGA外部存儲,幾乎不占用FPGA的片上ram資源;FPGA器件因?yàn)槠涔に囂厥庑?,一般會集成一些RAM資源在FPGA種,但是該種資源的深度和位寬都非常的小,無法滿足超大容量的存儲需求,亞科鴻禹新研發(fā)的hsTrace,在系統(tǒng)內(nèi)部集成有專用的外置存儲空間,可以完全不占用FPGA的RAM資源。
2)外接存儲容量最高可支持16GB的存儲空間,極大地提高了波形數(shù)據(jù)的采樣大?。挥布o助驗(yàn)證工具外置專用的存儲空間,可以使數(shù)據(jù)存儲和讀取的資源加大,也就意味著可以提供更深的存儲空間和更寬的存儲位寬,為解決當(dāng)下驗(yàn)證功能的需求提供了基礎(chǔ)。
3)波形數(shù)據(jù)的傳輸通過網(wǎng)口(或PCIE)實(shí)現(xiàn),傳輸速率也得到了極大的提升。FPGA原廠提供在線邏輯分析儀的調(diào)試通道是通過JTAG接口完成的,JTAG的最大傳輸速度只能到12Mhz,我們選用的PCIE的傳輸帶寬能夠到5Gbps,這為大數(shù)據(jù)量吞吐提供了硬件通道。
4)支持多顆FPGA的硬件輔助驗(yàn)證工具,實(shí)現(xiàn)多FPGA的系統(tǒng)級debug。
5)每顆FPGA可以設(shè)置4K*10組的采樣信號量;通過專用的傳輸接口和存儲器,可以針對單顆FPGA的采樣信號進(jìn)行增加,這意味著可以有更多和更深的信號被采樣到,也就是可以完成更多數(shù)量的觀測,適應(yīng)當(dāng)前的復(fù)雜協(xié)議的應(yīng)用。
(五)硬件輔助驗(yàn)證的發(fā)展趨勢
硬件輔助驗(yàn)證工具可以有效加速軟件仿真速度,用于驗(yàn)證設(shè)計(jì)的RTL代碼、軟硬件協(xié)同驗(yàn)證和軟件開發(fā)。近些年,硬件輔助驗(yàn)證出現(xiàn)了一些明顯的發(fā)展趨勢:
1)企業(yè)級和桌面化的硬件仿真加速需求快速增長。當(dāng)前,以GPU,5G,存算一體為代表的超大型的集成電路設(shè)計(jì)層出不窮,對系統(tǒng)仿真速度和代碼快速簽核提出了大量的需求。由于數(shù)據(jù)計(jì)算量大,用戶測試場景復(fù)雜所以需要能夠在超大型的硬件仿真加速工具下進(jìn)行用戶設(shè)計(jì)和驗(yàn)證環(huán)境的部署。
企業(yè)級的硬件仿真加速器可以為用戶提供指數(shù)級的邏輯驗(yàn)證容量,高效的糾錯(cuò)能力,信號可見和功耗分析的特征。桌面化的硬件仿真加速器可以為用戶提供混合驗(yàn)證環(huán)境,能夠?yàn)楦黝愋偷?a href="http://wenjunhu.com/v/tag/132/" target="_blank">CPU用戶,提供更早期的環(huán)境驗(yàn)證。企業(yè)級硬件仿真加速器側(cè)重在多用戶,多區(qū)域訪問的特性,桌面化能夠提供更加便利的調(diào)試手段,所以兩種不同的應(yīng)用方向各自發(fā)展。
2)硬件仿真加速器的專用化越來越明顯。加密算法,WIFI應(yīng)用等各種測試數(shù)據(jù)量巨大,而算法相對單一的用戶,對仿真需求增大。而傳統(tǒng)的仿真加速器并不能非常有效的解決這類用戶的問題。所以,針對各類型應(yīng)用而專用的仿真加速器產(chǎn)品非常適合這種類型的應(yīng)用。集中固定的硬件擴(kuò)展卡或者專用的降速橋都可以為某些類型的應(yīng)用提供完整的加速環(huán)境。
3)全流程驗(yàn)證需要在硬件仿真加速工具中完成。早期的硬件仿真加速器出現(xiàn)在代碼設(shè)計(jì)的后端,用于確認(rèn)代碼功能的正確性?,F(xiàn)在隨著設(shè)計(jì)的時(shí)間需求進(jìn)坡度增加,越來越多的流程會被集成至硬件仿真加速工具中來實(shí)現(xiàn)。早期的功耗分析,系統(tǒng)環(huán)境搭建,邏輯調(diào)試等功能都逐漸的被集成至硬件仿真加速工具中。
4)仿真和驗(yàn)證環(huán)境有統(tǒng)一性的趨勢。仿真代碼和用戶芯片設(shè)計(jì)代碼是分開處理的,涉及到一些無法綜合的代碼可以分別在仿真和驗(yàn)證場景中實(shí)現(xiàn),但是用戶期望的是設(shè)計(jì)代碼和測試代碼保持一致。所以硬件仿真加速工具會增加大量的功能屬性用于統(tǒng)一仿真代碼和設(shè)計(jì)代碼,從而減少因?yàn)樵O(shè)計(jì)不一致而造成的功能風(fēng)險(xiǎn)。
5)需要支持多種的軟件仿真工具。因?yàn)橛布抡婕铀倨鞯臍v史原因,各家的工具分別只能支持自己家的軟件仿真工具,而對于不同的用戶來說,有一些訴求是能夠支持不同家的仿真工具的。
6)待驗(yàn)設(shè)計(jì)的運(yùn)行頻率逐漸升高。硬件仿真加速器的運(yùn)行頻率,因?yàn)檐浻布换サ脑?,會產(chǎn)生大量的通訊開銷,會對待驗(yàn)設(shè)計(jì)的運(yùn)行速率有很大的影響,絕大多數(shù)情況下只能運(yùn)行在幾百K-幾兆Hz,隨著各種專用算法的出現(xiàn),驗(yàn)證的實(shí)時(shí)性也相當(dāng)?shù)闹匾?。所以對于硬件仿真加速器來說,能夠提供比較實(shí)時(shí)的運(yùn)行頻率,是非常關(guān)鍵的。
審核編輯:劉清
-
FPGA設(shè)計(jì)
+關(guān)注
關(guān)注
9文章
428瀏覽量
26523 -
RTL
+關(guān)注
關(guān)注
1文章
385瀏覽量
59820 -
AHB總線
+關(guān)注
關(guān)注
0文章
18瀏覽量
9486 -
DUT
+關(guān)注
關(guān)注
0文章
189瀏覽量
12401
原文標(biāo)題:利用硬件輔助驗(yàn)證工具加速功能仿真
文章出處:【微信號:IP與SoC設(shè)計(jì),微信公眾號:IP與SoC設(shè)計(jì)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論