SDSoC開(kāi)發(fā)環(huán)境能為您帶來(lái)什么?
Software Define 的概念
本文引用地址:http://m.butianyuan.cn/article/201604/289631.htm近年來(lái)“Software Define ” 軟件定義這個(gè)詞持續(xù)火熱,全球知名技術(shù)研究和咨詢公司Gartner早在對(duì)2014年最有戰(zhàn)略意義的十大技術(shù)與趨勢(shì)做出預(yù)測(cè)時(shí),便提出了軟件定義一切(Software Defined Anything)的概念,他們預(yù)測(cè)這類技術(shù)會(huì)在未來(lái)三年里擁有巨大潛力,并在同行業(yè)中產(chǎn)生重大影響。兩年后的今天回顧這一概念和技術(shù)的發(fā)展,不難看出,Software Define的確成為了行業(yè)風(fēng)向標(biāo),其應(yīng)用可謂無(wú)處不在。
相信一直關(guān)注賽靈思技術(shù)動(dòng)向的工程師們對(duì)SDx這個(gè)詞并不陌生,概括來(lái)講,Xilinx的SDx指的是一系列新工具,專為系統(tǒng)和軟件工程師而設(shè)計(jì),可以使那些只有很少或根本沒(méi)有FPGA設(shè)計(jì)經(jīng)驗(yàn)的研發(fā)人員直接使用高級(jí)編程語(yǔ)言在強(qiáng)大的可編程硬件上進(jìn)行設(shè)計(jì),并且與那些嵌入芯片內(nèi)部的或是在片外連接的業(yè)界標(biāo)準(zhǔn)處理器例如ARM或x86一起協(xié)同工作。 可以看到SDx系列目前有三個(gè)主要成員,包括SDSoC、SDAccel和SDNet。
SDSoC? 開(kāi)發(fā)環(huán)境允許嵌入式和應(yīng)用軟件開(kāi)發(fā)人員更廣泛的利用Zynq? SoC和MPSoCs的性能,提供超過(guò)100倍的軟件性能加速。
SDAccel? 開(kāi)發(fā)環(huán)境針對(duì)的是OpenCL?,C和C ++的設(shè)計(jì)應(yīng)用,與那些CPU和GPU在數(shù)據(jù)中心和醫(yī)療影像等領(lǐng)域的實(shí)現(xiàn)方案相比,利用FPGA進(jìn)行加速可獲得高達(dá)25倍的性能功耗比提升。
SDNet是“軟”定義網(wǎng)絡(luò)的解決方案。具體來(lái)說(shuō)就是SDNet結(jié)合賽靈思的全面可編程器件,打造出了“軟”定義網(wǎng)絡(luò)這樣的交叉技術(shù),從而將可編程能力和智能化功能從控制層擴(kuò)展至數(shù)據(jù)層,不僅支持SDN,而且還可以突破性地支持任何軟件定義網(wǎng)絡(luò)架構(gòu)。
從以上簡(jiǎn)要的介紹可以看出SDx系列的三個(gè)工具所針對(duì)的器件與市場(chǎng)各有側(cè)重,但總體上都是面向軟件和系統(tǒng)工程師的全面可編程抽象化設(shè)計(jì)工具,是賽靈思業(yè)界領(lǐng)先技術(shù)實(shí)力的進(jìn)一步體現(xiàn)。
其中,專門用作提高賽靈思異構(gòu)Zynq SoC以及MPSoC的設(shè)計(jì)生產(chǎn)力而生的SDSoC開(kāi)發(fā)環(huán)境就是這篇短文將要介紹的重點(diǎn),在以下的篇幅中,我們會(huì)為大家分析SDSoC主要針對(duì)的市場(chǎng)和應(yīng)用,SDSoC的各種創(chuàng)新,應(yīng)用SDSoC的好處和優(yōu)勢(shì)等。
Vivao HLS
我們今天的主要內(nèi)容是介紹SDSoC,但在開(kāi)始之前,需要提一下Vivado HLS這個(gè)在高級(jí)抽象語(yǔ)言與底層硬件描述語(yǔ)言之間架起了一座橋梁的高階綜合工具。
相信大部分賽靈思的用戶對(duì)Vivado HLS已經(jīng)不再陌生,甚至有可能已經(jīng)是HLS的用戶。的確,經(jīng)過(guò)了三四年的上市推廣,Vivado HLS早已不再是一個(gè)全新的工具,我們已經(jīng)有超過(guò)1000家成功的客戶。HLS的靈活性和生產(chǎn)力優(yōu)勢(shì)是顯而易見(jiàn)的,甚至賽靈思的IP開(kāi)發(fā)部門在交付Vivado 2015.1版本及以后的部分視頻IP時(shí)也都是使用HLS從C/C++語(yǔ)言開(kāi)始設(shè)計(jì)。
Vivado HLS可以在很短的時(shí)間內(nèi)生成與手工編碼質(zhì)量相當(dāng)?shù)腞TL代碼,并且允許用戶將同樣在C測(cè)試平臺(tái)生成的測(cè)試向量用在C仿真和RTL驗(yàn)證中,從而大幅加速驗(yàn)證過(guò)程。對(duì)那些使用C / C ++描述規(guī)范的算法設(shè)計(jì)類客戶來(lái)說(shuō),這是理想的解決方案,可以將其已有的各類浮點(diǎn)或定點(diǎn)算法無(wú)縫實(shí)現(xiàn)到FPGA硬件中,比較典型的應(yīng)用就是各類視頻運(yùn)算、加解密等DSP算法等等。
使用Vivado HLS可以實(shí)現(xiàn)真正意義上基于C語(yǔ)言的IP,通過(guò)HLS,我們可以把用戶的C/C++以及System C算法以VHDL或Verilog的形式輸出,然后通過(guò)Vivado IPI或SysGen等賽靈思的工具,整合到你的FPGA設(shè)計(jì)工程中去。也就是說(shuō),使用Vivado HLS可以更便捷高效地完成從高階抽象語(yǔ)言C/C++到賽靈思FPGA可編程邏輯硬件的設(shè)計(jì)實(shí)現(xiàn)過(guò)程。
Vivado HLS不僅是簡(jiǎn)單的翻譯工具或是綜合工具,更為重要的是,我們可以將其產(chǎn)生的RTL以IP的形式導(dǎo)出到Vivado IPI中,或者直接調(diào)用HLS生成的RTL文件到另一個(gè)RTL項(xiàng)目,甚至是輸出到DSP設(shè)計(jì)的SysGen工程中。
Zynq SoC 器件架構(gòu)
以下圖片展示了賽靈思Zynq SoC器件的架構(gòu)圖。SDSoC所針對(duì)的器件就是包括Zynq SoC和下一代的MPSoC在內(nèi)的多核異構(gòu)可編程邏輯芯片。
Zynq-7000 系列是賽靈思推出的業(yè)界第一款將ARM A9雙核處理器與28nm低功耗可編程邏輯緊密集成在一起的SoC產(chǎn)品。從圖中可以可以看出左上角處理器所在的區(qū)域稱作Processing System即PS,而其余可編程邏輯所在的區(qū)域則稱作Programmable Logic即PL。
位于PS側(cè)的ARM內(nèi)部用硬件實(shí)現(xiàn)了AXI總線協(xié)議,提供GP、HP和ACP等性能各不相同的數(shù)個(gè)物理接口。而PL側(cè)則需要使用可編程邏輯來(lái)搭建相應(yīng)的AXI接口。在具體設(shè)計(jì)時(shí),可以在Vivado IPI中使用賽靈思提供的IP如AXI-Stream等等來(lái)實(shí)現(xiàn)。此外,軟硬件之間有數(shù)據(jù)交互的設(shè)計(jì)就牽扯到在軟硬件之間如何進(jìn)行數(shù)據(jù)搬移,這種情況下,我們還需要一個(gè)或數(shù)個(gè)DataMover,這也同樣需要在PL側(cè)使用可編程邏輯來(lái)搭建。
Zynq SoC 開(kāi)發(fā)流程
之所以要花幾頁(yè)篇幅來(lái)介紹Vivado HLS的作用與Zynq的架構(gòu),就是為了更清楚地描述全面可編程Zynq SoC的開(kāi)發(fā)流程。
對(duì)于以C/C++等高階語(yǔ)言為起點(diǎn)來(lái)進(jìn)行SoC開(kāi)發(fā)的用戶來(lái)說(shuō),由C/C++算法開(kāi)始,首先需要對(duì)軟硬件進(jìn)行分區(qū),選擇哪些部分放入PL側(cè)進(jìn)行加速,哪些部分仍然在PS側(cè)用軟件實(shí)現(xiàn)。對(duì)那些指定到放入可編程邏輯上用于硬件加速的部分,還需要完成C代碼到RTL IP的轉(zhuǎn)換。接下來(lái),就是完成軟/硬件之間的連接,包括使用怎樣的DataMover、PS與PL之間的接口如何配置等,接下來(lái)還要完成配套的軟件驅(qū)動(dòng)程序。所有這些往往牽扯到數(shù)個(gè)不同團(tuán)隊(duì)和專業(yè)人員的通力合作,需要通過(guò)數(shù)次迭代來(lái)探索最佳的實(shí)現(xiàn)方案和系統(tǒng)架構(gòu)。這個(gè)流程圖很清晰地描繪了SoC的開(kāi)發(fā)流程,每一步都是耗時(shí)耗力的工作。
不使用SDSoC的開(kāi)發(fā)流程
具體到每一步的工作來(lái)看,傳統(tǒng)的Zynq設(shè)計(jì)流程大致分為五個(gè)步驟:
首先,系統(tǒng)架構(gòu)師來(lái)決定將哪些部分用于軟件實(shí)現(xiàn),哪些部分放入硬件加速,即所謂的軟硬件分區(qū)。劃分為硬件實(shí)現(xiàn)的功能將需要使用RTL代碼來(lái)開(kāi)發(fā),或是使用HLS將C/C++代碼綜合成Vivado中可實(shí)現(xiàn)的IP。然后,要在Vivado IPI中搭建DataMover和接口。后是應(yīng)用軟件和驅(qū)動(dòng)程序的開(kāi)發(fā)。
這無(wú)疑是一個(gè)十分耗時(shí)的過(guò)程,需要多個(gè)部門和團(tuán)隊(duì)之間的設(shè)計(jì)切換。有時(shí)候,即便這樣完成后的設(shè)計(jì)可以正常工作,卻可能無(wú)法滿足你在吞吐量、延遲或面積等方面的設(shè)計(jì)性能要求。此時(shí)就可能需要通過(guò)修改系統(tǒng)連接來(lái)重新搭建硬件架構(gòu)來(lái)對(duì)系統(tǒng)性能進(jìn)一步優(yōu)化。但這么做,又將導(dǎo)致軟件應(yīng)用程序和驅(qū)動(dòng)程序的變化。因此,你往往需要與多個(gè)軟件和硬件團(tuán)隊(duì)緊密合作,通過(guò)多次迭代設(shè)計(jì)來(lái)試著滿足最終需求。
在某些情況下,設(shè)計(jì)不能滿足你的性能要求的原因在于 軟件性能不夠,或是硬件的占用率太高。這時(shí)候,你就需要返回到最初的設(shè)計(jì),重新修改軟/硬件分區(qū)方案,然后前面所說(shuō)的硬件實(shí)現(xiàn),系統(tǒng)連接,軟件驅(qū)動(dòng)等所有步驟都要重新再來(lái)一邊,這勢(shì)必要求更多的團(tuán)隊(duì)一起配合,改變?cè)O(shè)計(jì)來(lái)探索另一種架構(gòu),而且可能面臨更多次的設(shè)計(jì)迭代,進(jìn)一步拉長(zhǎng)設(shè)計(jì)周期。
毫無(wú)疑問(wèn),用在系統(tǒng)優(yōu)化上的時(shí)間對(duì)time-to-market的影響巨大。此外,我們也注意到在Zynq SoC的設(shè)計(jì)中,用戶最關(guān)注的部分往往是算法的最終實(shí)現(xiàn)和算法模塊的優(yōu)化,包括IP或是軟件功能塊。因此,SDSoC的設(shè)計(jì)理念也致力于解決這些用戶最關(guān)注的問(wèn)題。
應(yīng)用了SDSoC的開(kāi)發(fā)流程
如下圖所示,在應(yīng)用了SDSoC的Zynq設(shè)計(jì)流程中,工具可以自動(dòng)搭建軟硬件之間的通訊部分,包括DataMover、軟件驅(qū)動(dòng)程序和硬件連接接口。工具還可以將整個(gè)開(kāi)發(fā)過(guò)程抽象到C/C++的應(yīng)用層面,以C/C++為起點(diǎn)來(lái)進(jìn)行算法開(kāi)發(fā),當(dāng)然,工具也可以調(diào)用以傳統(tǒng)的IP方法開(kāi)發(fā)的算法模塊,包括已經(jīng)由Vivado HLS轉(zhuǎn)換后的RTL IP,也包括那些本身就由Verilog或VHDL硬件描述語(yǔ)言編寫的IP。在調(diào)用這類IP時(shí),只需將其封裝為C可調(diào)用庫(kù)的形式即可。 在SDSoC中,我們能夠輕松進(jìn)行軟件/硬件的劃分,用戶僅需在圖形化界面中用鼠標(biāo)單擊指定那些需要進(jìn)行硬件加速的模塊即可。
相比較傳統(tǒng)SoC設(shè)計(jì)流程,SDSoC通過(guò)自動(dòng)生成硬件連接和軟件驅(qū)動(dòng)程序大大簡(jiǎn)化了Zynq SoC和MPSoC的開(kāi)發(fā)過(guò)程。它會(huì)自動(dòng)調(diào)用Vivado HLS來(lái)將那些用C/C++開(kāi)發(fā)的算法模塊轉(zhuǎn)化為Vivado可綜合的RTL IP,它也可以將那些已經(jīng)優(yōu)化過(guò)的HDL IP模塊通過(guò)C可調(diào)用庫(kù)的方式進(jìn)行重用。用戶可以在軟件中通過(guò)簡(jiǎn)單點(diǎn)擊某個(gè)功能塊將其應(yīng)用到PL上進(jìn)行加速來(lái)迅速修改軟/硬件的分區(qū),因此,它也有助于系統(tǒng)架構(gòu)設(shè)計(jì)人員運(yùn)行快速假設(shè)性分析來(lái)評(píng)估系統(tǒng)的性能和面積。
在應(yīng)用SDSoC之后,我們可以非常迅速地將你的設(shè)計(jì)應(yīng)用在Zynq系統(tǒng)上,即使第一遍實(shí)現(xiàn)后的性能不達(dá)標(biāo),也可以使用SDSoC快速選擇不同的用于硬件加速的功能塊,探索不同的硬件/軟件分區(qū)方案,或是通過(guò)pragma等手段來(lái)指導(dǎo)工具產(chǎn)生不同的系統(tǒng)配置等方法來(lái)進(jìn)一步優(yōu)化設(shè)計(jì)。統(tǒng)計(jì)顯示,使用SDSoC開(kāi)開(kāi)發(fā)Zynq系統(tǒng),可以將整體開(kāi)發(fā)時(shí)間從原本的數(shù)周縮短至數(shù)日甚至數(shù)個(gè)小時(shí)。
現(xiàn)在我們稍作總結(jié)就會(huì)發(fā)現(xiàn),SDSoC開(kāi)發(fā)環(huán)境提供了一個(gè)大大簡(jiǎn)化的C / C ++編程體驗(yàn),用戶現(xiàn)在可以在嵌入式開(kāi)發(fā)人員所熟悉的基于Eclipse?的IDE上完成整個(gè)Zynq SoC的開(kāi)發(fā)。SDSoC帶來(lái)了業(yè)界首個(gè)C / C ++的全系統(tǒng)優(yōu)化編譯器,提供系統(tǒng)級(jí)的Profiling特征分析,自動(dòng)將軟件代碼放入可編程邏輯中加速,自動(dòng)產(chǎn)生系統(tǒng)連接,和相關(guān)的庫(kù)以加速開(kāi)發(fā)。SDSoC也為用戶和第三方平臺(tái)開(kāi)發(fā)者提供了流程支持,通過(guò)提供平臺(tái)描述文件的的手段,可以使他們自己設(shè)計(jì)的包含有Zynq SoC的開(kāi)發(fā)板在SDSoC開(kāi)發(fā)環(huán)境中使用。
應(yīng)用SDSoC,開(kāi)發(fā)人員可以從整個(gè)設(shè)計(jì)的C / C ++代碼開(kāi)始系統(tǒng)級(jí)特征分析,從而找出系統(tǒng)設(shè)計(jì)的瓶頸。然后用戶只需選擇將那些性能瓶頸的功能塊放入PL中加速。 SDSoC的全系統(tǒng)優(yōu)化編譯器會(huì)使用Vivado HLS自動(dòng)創(chuàng)建RTL IP,生成最優(yōu)的系統(tǒng)連接,配置軟件驅(qū)動(dòng)程序。最終的結(jié)果是一個(gè)可運(yùn)行的FPGA配置比特流文件和軟件的引導(dǎo)映像。所有這些,完全由一個(gè)基于Eclipse的嵌入式開(kāi)發(fā)環(huán)境生成。
SDSoC開(kāi)發(fā)環(huán)境的優(yōu)勢(shì)
SDSoC提供給用戶的是一個(gè)可以用來(lái)完成整個(gè)Zynq SoC和MPSoC開(kāi)發(fā)的基于Eclipse的軟件環(huán)境,這個(gè)環(huán)境對(duì)那些已經(jīng)在使用DSP芯片、視頻SoC 和CPU處理器的嵌入式開(kāi)發(fā)人員來(lái)說(shuō)是在熟悉不過(guò)的。
在IDE中,用戶可以簡(jiǎn)單地選擇用來(lái)放入PL中加速的功能塊,無(wú)需手動(dòng)創(chuàng)建用于硬件實(shí)現(xiàn)的Vivado工程或是軟件驅(qū)動(dòng)程序。另外,已經(jīng)有很多針對(duì)FPGA硬件優(yōu)化過(guò)的IP庫(kù)可以經(jīng)由Vivado HLS導(dǎo)出,除了賽靈思和ARM,我們也有很多合作伙伴提供更多特定的算法庫(kù),包括視頻類,加解密,OpenCV等等。幫助用戶進(jìn)一步提高生產(chǎn)力。
關(guān)于操作系統(tǒng),目前的SDSoC版本中已經(jīng)支持的目標(biāo)平臺(tái)Platform大都支持多種OS,包括Linux,F(xiàn)reeRTOS和Standalone,如果用戶需要其他操作系統(tǒng)的支持,只要將所需OS打包到所用的目標(biāo)平臺(tái)中即可。具體做法涉及SDSoC目標(biāo)平臺(tái)的創(chuàng)建,我們稍后會(huì)在另外的文章中做詳細(xì)介紹。
SDSoC提供系統(tǒng)級(jí)特征分析功能。包括快速的性能估算,允許用戶通過(guò)快速的性能反饋來(lái)調(diào)整和優(yōu)化軟硬件代碼分區(qū)、調(diào)整系統(tǒng)構(gòu)建,從而達(dá)到系統(tǒng)要求的性能和面積,同時(shí)為整個(gè)開(kāi)發(fā)過(guò)程節(jié)省了大量時(shí)間。這個(gè)估算是對(duì)整個(gè)系統(tǒng)的性能估算,包括可編程邏輯、數(shù)據(jù)通信和處理器系統(tǒng)等,SDSoC還可以報(bào)告出部分功能塊加速后的軟件/硬件的周期性能、可編程邏輯部分的硬件占用率。SDSoC也可以通過(guò)在ARM上的快速運(yùn)行反饋來(lái)報(bào)告出全軟件實(shí)現(xiàn)方案的周期性能,同時(shí)跟硬件加速方案性能估算進(jìn)行對(duì)比,快速報(bào)告出性能提升比例。幫助用戶在最短的時(shí)間內(nèi)探索出最佳的設(shè)計(jì)實(shí)現(xiàn)方案。
在目標(biāo)平臺(tái)上運(yùn)行時(shí),SDSoC還可以通過(guò)使用ARM 處理器提供的性能計(jì)數(shù)器和自動(dòng)插入到可編程邏輯的AXI總線性能監(jiān)視器即APM來(lái)收集包括自動(dòng)化高速緩存,內(nèi)存和總線利用率等等的硬件性能數(shù)據(jù),報(bào)告系統(tǒng)性能測(cè)量數(shù)據(jù)。
SDSoC的核心技術(shù)可謂業(yè)界首創(chuàng)的全系統(tǒng)優(yōu)化編譯器,這個(gè)編譯器是一個(gè)統(tǒng)一的界面,不僅可以針對(duì)基于ARM的處理器系統(tǒng),也可以針對(duì)片內(nèi)的可編程邏輯。SDSoC開(kāi)發(fā)環(huán)境旨在為系統(tǒng)架構(gòu)師以及軟件開(kāi)發(fā)團(tuán)隊(duì)提供一個(gè)可以使用唯一的“黃金C / C ++代碼”來(lái)快速配置,并同步生成構(gòu)建系統(tǒng)所需的各類軟硬件架構(gòu)的可能。軟硬件統(tǒng)一的編譯器,可以從系統(tǒng)視角出發(fā),帶來(lái)最佳的系統(tǒng)構(gòu)建與連接,優(yōu)化的存儲(chǔ)器接口和軟件驅(qū)動(dòng)等。全系統(tǒng)優(yōu)化編譯器的另一大優(yōu)勢(shì)是支持快速的設(shè)計(jì)空間探索,允許開(kāi)發(fā)者在性能和吞吐量,延遲及面積之間作出權(quán)衡,同時(shí)保持較短的設(shè)計(jì)迭代次數(shù)。
具體到提升設(shè)計(jì)生產(chǎn)力這一點(diǎn)來(lái)說(shuō),我們就以一個(gè)32乘32 的浮點(diǎn)矩陣乘法設(shè)計(jì)來(lái)舉例,如上圖所示,正因?yàn)镾DSoC開(kāi)發(fā)環(huán)境特有的全系統(tǒng)優(yōu)化編譯器和系統(tǒng)級(jí)特征分析等功能,使得使用SDSoC進(jìn)行設(shè)計(jì)后,用戶可以在很短的時(shí)間內(nèi)迅速生成系統(tǒng)配置和各種宏觀、微觀架構(gòu),探索最佳的互聯(lián)和存儲(chǔ)器接口,從而使得用戶可以在最短的時(shí)間內(nèi)探索出使用Zynq SoC設(shè)計(jì)的十幾種可能的配置,并找到其中性能最佳的組合(圖中用綠色圈出),繼而繼續(xù)使用SDSoC來(lái)具體進(jìn)行設(shè)計(jì)實(shí)現(xiàn)和調(diào)試。
配合使用ARM 處理器提供的性能計(jì)數(shù)器和自動(dòng)插入到可編程邏輯的AXI總線性能監(jiān)視器收集到的各種性能數(shù)據(jù),SDSoC還可以幫助系統(tǒng)架構(gòu)師在最短的時(shí)間內(nèi)探索出針對(duì)自己的應(yīng)用平臺(tái)和設(shè)計(jì)應(yīng)用來(lái)說(shuō)性能最佳的系統(tǒng)設(shè)計(jì)方案。與傳統(tǒng)的軟件硬件分別開(kāi)發(fā)的流程相比可以節(jié)約大量的開(kāi)發(fā)時(shí)間和成本。
SDSoC應(yīng)用示例
介紹了這么多SDSoC的優(yōu)勢(shì),相信不難看出,SDSoC提供的是一個(gè)真正的端到端流程。對(duì)用戶來(lái)說(shuō),從C/C++代碼入手,經(jīng)過(guò)SDSoC,可以完成軟硬件分區(qū),生成RTL IP功能塊,完成PS和PL之間的功能連接,包括硬件接口和軟件驅(qū)動(dòng),最后針對(duì)目標(biāo)設(shè)計(jì)平臺(tái)產(chǎn)生出可以用來(lái)加載FPGA的比特流文件和可以用來(lái)啟動(dòng)操作系統(tǒng)的軟件引導(dǎo)映像。所有這些在以往需要多個(gè)部門通力合作的工序如今都已經(jīng)簡(jiǎn)化到SDSoC這一個(gè)開(kāi)發(fā)環(huán)境中。
這里我們要強(qiáng)調(diào)一下,雖然對(duì)用戶來(lái)說(shuō),整個(gè)圖形化操作界面是軟件和嵌入式開(kāi)發(fā)人員非常熟悉的,所有的工序也都是在SDSoC這一個(gè)開(kāi)發(fā)環(huán)境中執(zhí)行和實(shí)現(xiàn)。但SDSoC并不是完全獨(dú)立完成了包括估算、編譯、調(diào)試和配置等等的過(guò)程,真正完成這些工序的仍然是在后臺(tái)被SDSoC自動(dòng)調(diào)用的各種賽靈思已經(jīng)成熟商用的軟件,包括Vivado、HLS、IPI和SDK等等。
換句話說(shuō),SDSoC的問(wèn)世并不是為了替代在它之前已經(jīng)用于Zynq SoC開(kāi)發(fā)的各個(gè)獨(dú)立的工具,而是將其整合在一起,并提供全系統(tǒng)編譯和特征分析。是提升SoC開(kāi)發(fā)的設(shè)計(jì)效率和生產(chǎn)力的一大利器。
下面我們來(lái)看一個(gè)簡(jiǎn)單的示例:
首先,所有算法輸入可以都是由C/C++寫成,或是有部分為Vivado HLS生成的IP,甚至可以就是由HDL寫成的IP,只要將其設(shè)為C語(yǔ)言可調(diào)用IP即可。 主函數(shù)下面包含一個(gè)矩陣乘法,和一個(gè)矩陣加法。SDSoC讀入設(shè)計(jì)的源代碼,我們選擇將矩陣乘法和加法在PL中加速,而主函數(shù)仍然留在PS中運(yùn)行。要實(shí)現(xiàn)這樣的軟硬件分區(qū),用戶僅需在SDSoC中選擇需要硬件加速的功能函數(shù)并指定即可。SDSoC會(huì)根據(jù)用戶的劃分來(lái)生成PS和PL之間的DataMover、配置硬件接口和軟件驅(qū)動(dòng),輸出成Vivado IPI工程,同時(shí)提供全系統(tǒng)性能分析和估算。用戶可以根據(jù)需要對(duì)系統(tǒng)實(shí)現(xiàn)方式進(jìn)行干預(yù)和改動(dòng)。最后,SDSoC可以輸出整個(gè)設(shè)計(jì)的FPGA比特流文件和可以用來(lái)啟動(dòng)操作系統(tǒng)的軟件引導(dǎo)映像。
這一過(guò)程全部都在SDSoC的界面中完成,并且可以在短短數(shù)個(gè)小時(shí)內(nèi)探索多個(gè)系統(tǒng)配置方案,找到相對(duì)最佳性能的實(shí)現(xiàn)方案,并加載到目標(biāo)板上進(jìn)行調(diào)試和驗(yàn)證。放在以往軟硬件分別設(shè)計(jì)的傳統(tǒng)流程上簡(jiǎn)直不可想象。
SDSoC 目標(biāo)平臺(tái)
賽靈思在2015年七月宣布開(kāi)放正式版SDSoC開(kāi)發(fā)環(huán)境,現(xiàn)在我們的官網(wǎng)可以下載這一軟件,正式支持的開(kāi)發(fā)板也在逐步增加中,除了在目前版本上打開(kāi)SDSoC可以看到的包括賽靈思ZC702、706等開(kāi)發(fā)平臺(tái),還有很多已經(jīng)認(rèn)證的第三方開(kāi)發(fā)平臺(tái),更多的平臺(tái)正在逐步加入。
打開(kāi)SDSoC創(chuàng)建一個(gè)新的工程,就可以看到可選的Platform,下拉菜單顯示的是目前版本上已經(jīng)支持的所有內(nèi)置平臺(tái)。有些特定應(yīng)用平臺(tái)可能需要額外下載和安裝,具體所有支持的平臺(tái)列表可以在官網(wǎng)鏈接上查看。
此外賽靈思及其函數(shù)庫(kù)合作伙伴還提供包括OpenCV、線性代數(shù)和信號(hào)處理在內(nèi)的庫(kù)函數(shù)。我們還新增了八家認(rèn)證設(shè)計(jì)服務(wù)聯(lián)盟成員以擴(kuò)展生態(tài)系統(tǒng),從而使世界各地的設(shè)計(jì)團(tuán)隊(duì)能夠充分發(fā)揮全面可編程 Zynq SoC和MPSoC的性能進(jìn)行自己的設(shè)計(jì)開(kāi)發(fā)。
如果上面所列這些開(kāi)發(fā)平臺(tái)都不能滿足您的設(shè)計(jì)需要,也沒(méi)有問(wèn)題,因?yàn)镾DSoC同樣支持您自己開(kāi)發(fā)的含有Zynq SoC或MPSoC的開(kāi)發(fā)板。當(dāng)然,在使用SDSoC在您的開(kāi)發(fā)板上進(jìn)行設(shè)計(jì)之前,還需要把您的開(kāi)發(fā)板轉(zhuǎn)換成相應(yīng)的設(shè)計(jì)平臺(tái)描述文件,導(dǎo)入到SDSoC中,這樣,在啟動(dòng)SDSoC并開(kāi)始一個(gè)新的設(shè)計(jì)時(shí),便可以在目標(biāo)開(kāi)發(fā)平臺(tái)的下拉菜單中找到您自己的開(kāi)發(fā)板。
要在SDSoC中創(chuàng)建客戶定制平臺(tái)并不復(fù)雜,只需要從現(xiàn)有的Vivado IPI工程和軟件項(xiàng)目工程中導(dǎo)出工具所需的硬件平臺(tái)和軟件平臺(tái)元數(shù)據(jù),最后將數(shù)據(jù)以SDSoC要求的形式打包放入指定的路徑即可。更具體的操作方法和流程,歡迎查看SDSoC安裝目錄下的UG1146文檔以及相關(guān)快速入門視頻,具體做法在本文不做深入討論。
小結(jié)
這篇短文旨在幫助大家了解賽靈思針對(duì)提升異構(gòu)Zynq SoC以及MPSoC的設(shè)計(jì)生產(chǎn)力而推出的SDSoC開(kāi)發(fā)環(huán)境,通過(guò)對(duì)賽靈思軟件定義相關(guān)解決方案的介紹,以及對(duì)使用SDSoC前后Zynq SoC開(kāi)發(fā)流程的比較,希望讓大家有個(gè)更直觀的認(rèn)識(shí),選用更先進(jìn)高效的設(shè)計(jì)工具,提升SoC設(shè)計(jì)生產(chǎn)力。
衷心祝愿大家在全面可編程邏輯設(shè)計(jì)之路上收獲更多喜悅,讓Xilinx和SDSoC為您的成功助力。
評(píng)論