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