《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 解決方案 > 標(biāo)準(zhǔn)測試:Vivado的 ESL功能可加速Zynq SoC上的IP設(shè)計(jì)

標(biāo)準(zhǔn)測試:Vivado的 ESL功能可加速Zynq SoC上的IP設(shè)計(jì)

2013-09-22
關(guān)鍵詞: 開發(fā)工具 Zynq SOC Vivado

Sébastien Fuhrmann,,理學(xué)碩士
研發(fā)工程師
巴黎CNRS-ENSEA-UCP ETIS實(shí)驗(yàn)室(現(xiàn)就職于Elsys Design) [email protected]

Bertrand Granado,,博士
教授
巴黎CNRS-ENSEA-UCP ETIS實(shí)驗(yàn)室和UPMC LIP6 實(shí)驗(yàn)室 [email protected]

采用自動方法為兩種圖像處理IP核實(shí)現(xiàn)類似于手工RTL編碼的效果

FPGA被廣泛用作信號處理應(yīng)用中的原型設(shè)計(jì)或SoC實(shí)現(xiàn)工具,。它們具備大規(guī)模并行處理功能,、豐富的片上存儲器異構(gòu)模塊以及DSP構(gòu)建塊,,是一款高 效的實(shí)現(xiàn)方案,,往往能夠比肩標(biāo)準(zhǔn)的微處理器,、DSP和GPU,。而集成ARM® 硬處理器和可編程邏輯的賽靈思28nm Zynq®-7000 All Programmable SoC的問世,,則使賽靈思器件對嵌入式系統(tǒng)來說更富吸引力,。

盡管FPGA具有優(yōu)異的特性,極富吸引力,,但一些設(shè)計(jì)人員出于對編程復(fù)雜性(編程工作晦澀難懂而且涉及VHDL和Verilog等硬件描述語言)的 顧慮仍然避免使用該器件,。而實(shí)用的電子系統(tǒng)級(ESL)設(shè)計(jì)的問世則有望確保簡化設(shè)計(jì)任務(wù)并使更多設(shè)計(jì)工程師掌握FPGA編程技術(shù),。

ESL工具在業(yè)內(nèi)由來已久,其可將設(shè)計(jì)抽象提高到主流寄存器傳輸級(RTL)之上的水平,。[1]在經(jīng)過無數(shù)次失敗之后,,這些高層次的設(shè)計(jì)工具最終在 實(shí)際應(yīng)用中得到了廣泛采用。賽靈思已經(jīng)在其最新設(shè)計(jì)工具Vivado® 設(shè)計(jì)套件中采用ESL方法來解決FPGA的可編程性問題,。Vivado HLS是一種內(nèi)置ESL的高層次綜合工具,,能夠自動將C、C++或SystemC轉(zhuǎn)換為HDL語言設(shè)計(jì),。

Vivado HLS與Zynq SoC的推出激發(fā)了我們團(tuán)隊(duì)在工業(yè)學(xué)術(shù)合作項(xiàng)目IP圖像處理解決方案研發(fā)過程中對ESL方法和手工編碼進(jìn)行對比分析的想法,。我們希望我們的工作能夠?yàn)槠渌?有興趣的設(shè)計(jì)團(tuán)隊(duì)提供公正獨(dú)立的案例研究結(jié)果,因?yàn)檫@些工具仍然比較新,,而且有關(guān)一般用戶使用體驗(yàn)的參考文獻(xiàn)也不是很多,。BDTI實(shí)驗(yàn) [2, 3]從總體上很好地反映了在更高層面將ESL工具用于FPGA的性能和潛力。但為了能通過ESL工具來實(shí)現(xiàn),,BDTI團(tuán)隊(duì)以最佳方式對源應(yīng)用 (source application)程序進(jìn)行了重寫,。

相比之下,我們則采用針對PC編寫的最初算法的源代碼,。

在將IP的手工編碼模塊(之前曾在賽靈思競爭對手的40nm中端產(chǎn)品上驗(yàn)證過)與Zynq SoC上的ESL編程方法進(jìn)行對比時我們發(fā)現(xiàn),,ESL結(jié)果在多個方面都可以媲美手動實(shí)現(xiàn)方案,唯有時延明顯例外,。此外,,ESL方案還能顯著縮短開發(fā)時間。

我們的關(guān)鍵目標(biāo)是:

• 在不修改或者盡可能少改動的情況下,,評估現(xiàn)有(C/C++)代碼向硬件移植的工作量/質(zhì)量,;

• 進(jìn)行具體的設(shè)計(jì)空間探索(ESL與手工編碼IP);

• 研究生產(chǎn)力權(quán)衡因素(效率與設(shè)計(jì)時間),;

• 檢查可移植性問題(移植到其它FPGA或ASIC上),;

• 衡量ESL工具對硬件、軟件和系統(tǒng)設(shè)計(jì)人員的易用性,。

基于VIVADO的方法

我們采用賽靈思Vivado HLS 2012.4 (ISE® 14.4)設(shè)計(jì)工具和基于Zynq SoC的ZedBoard(XC7z20clg484-1)對所提出的實(shí)驗(yàn)進(jìn)行原型設(shè)計(jì),。我們從針對掃描應(yīng)用的現(xiàn)行圖像處理FPGA-SoC合作項(xiàng)目中的 10個IP核中選出兩個。所選IP均為項(xiàng)目中最復(fù)雜的IP核,。這些IP采用Verilog優(yōu)化設(shè)計(jì)并在賽靈思競爭對手的40nm產(chǎn)品上進(jìn)行過驗(yàn)證,可針對 業(yè)界合作伙伴Sagemcom公司的掃描產(chǎn)品執(zhí)行特定的圖像處理功能,。

圖1概括說明了使用賽靈思工具的實(shí)驗(yàn)流程,。為達(dá)到實(shí)驗(yàn)?zāi)康模覀儚乃惴ㄗ畛醯腃源代碼開始,。值得注意的是,,該代碼通過傳統(tǒng)方式針對PC進(jìn)行編寫,,而且就嵌入式系統(tǒng)高效移植而言并非最佳代碼。


圖1 – 針對Zynq Z20 SoC的硬件測試系統(tǒng)
 

我們的目標(biāo)是,,理想情況下對代碼進(jìn)行最少修改甚至不修改,。盡管Vivado HLS可支持ANSI C/C++,我們?nèi)孕栳槍討B(tài)存儲器分配和復(fù)雜結(jié)構(gòu)體指針等問題做一些基本調(diào)整,。根據(jù)賽靈思技術(shù)文檔的建議,,我們在沒有觸及核心編碼的情況下完成了這一任 務(wù)。我們在函數(shù)自變量上創(chuàng)建AXI4主/從(AXI-Lite)接口,,并利用各種約束條件在Vivado HLS中處理代碼,。我們使用指令來指定這些約束條件,以便創(chuàng)建不同的解決方案,,并利用ZedBoard在Zynq Z20 SoC上對其進(jìn)行驗(yàn)證,。

為便于比較,我們必須設(shè)定涉及時延的唯一約束條件,。我們必須假定:在相同的頻率下,,Zynq SoC的AXI4接口與手工編碼設(shè)計(jì)中競爭對手FPGA總線的時延具有可比較性。將RTL代碼(IP核)移植到賽靈思環(huán)境非常簡單直觀,,但對接口進(jìn)行重新 設(shè)計(jì)則超出了我們的工作范圍,。

在開發(fā)板上進(jìn)行原型設(shè)計(jì)之前,我們利用Vivado HLS工具的內(nèi)置SystemC協(xié)同仿真功能來驗(yàn)證生成的硬件,。事實(shí)上Vivado HLS也為IP生成軟件驅(qū)動器(訪問函數(shù)),,這會進(jìn)一步加快IP驗(yàn)證與調(diào)試的速度。

我們使用Zynq器件中ARM Cortex™-A9 MPCore的666.7 MHz Core 0以及一個533.3 MHz 的DDR3接口,,并通過AXI4定時器進(jìn)行時延測量,。圖2給出了FPGA原型設(shè)計(jì)所采用的驗(yàn)證流程。首先在ARM上利用初始的C源代碼對圖像進(jìn)行處理,,以 獲得“黃金”參考結(jié)果,。然后利用IP處理相同的圖像,將它們進(jìn)行比較并驗(yàn)證結(jié)果,。

作為獨(dú)立項(xiàng)目,,我們還評估了100-MHz MicroBlaze™處理器的兩個IP模塊的時延測量值。該處理器帶有8+8KB I+D高速緩存,,以及通過AXI4總線與DDR3直接相連的硬件乘法器和除法器單元,。我們將MicroBlaze上兩個IP核的時延測量值作為參考值,用 以比較由Vivado HLS生成IP和ARM處理器所實(shí)現(xiàn)的加速效果,。這種加速性能為FPGA設(shè)計(jì)人員帶來了可觀的軟件計(jì)算能力,。

實(shí)驗(yàn)結(jié)果

現(xiàn)在我們來具體看一下兩個IP核的設(shè)計(jì)空間探索問題,并利用HLS工具將它們標(biāo)記為IP1和IP2。我們已經(jīng)詳細(xì)概述了IP1 的實(shí)驗(yàn),,但為了簡便起見,,對于IP2,我們只給出其結(jié)果,。最后,,我們還將針對賽靈思專家就賽靈思ESL工具中AXI4 “Burst”實(shí)現(xiàn)效率問題所給出的反饋意見進(jìn)行討論。

表1和表2按步驟(表示為S1,、S2等)列出了IP1設(shè)計(jì)空間探索的細(xì)節(jié),。在實(shí)驗(yàn)中,我們采用了256 x 256像素的灰度測試圖,。需要注意的是時鐘周期,、時延和功耗數(shù)據(jù)僅為在對多次實(shí)現(xiàn)結(jié)果交叉分析進(jìn)行快速綜合后,通過工具給出的參考值,。正如您在FPGA原 型設(shè)計(jì)結(jié)果(表2)的討論中所看到的,,最終實(shí)現(xiàn)后,實(shí)際值會發(fā)生顯著變化,。

表1 – 針對IP1的HLS探索結(jié)果
*工具的功耗值用于迭代比較,,因此沒有單位
 

表2 – 針對IP1探索的FPGA原型設(shè)計(jì)結(jié)果
*參考值,請參閱方法章節(jié)
**從XPower分析器得到的動態(tài)功耗

S1:源代碼轉(zhuǎn)換

在第一步中,,我們首先編譯沒有最優(yōu)約束條件的代碼(除了前面所述的必須修改項(xiàng)),。從表1中可以看到,硬件占用了大量資源,。當(dāng)我們根據(jù)Vivado HLS快速綜合報(bào)告和GUI設(shè)計(jì)查看器工具分析資源分配詳情時,,可以很清楚地看出算法中的幾個除法運(yùn)算占用了絕大部分資源。與乘法器不同,,在FPGA中沒 有用于除法的硬模塊,,因此除法運(yùn)算會占用大量邏輯。因此,,我們首先要解決的就是優(yōu)化這個問題,。

S2:S1結(jié)合共享除法器

直觀地說,對于如何減少除法硬件資源消耗問題,,我們首先想到的是采用資源共享的方式來解決,,但這同時也會降低性能。不幸的是,,在我們所使用的工具版 本中很難甚至是不太可能直接將定制約束條件應(yīng)用于運(yùn)算符,。不過解決方法也很簡單,我們可以用函數(shù)來替代除法運(yùn)算(/),,這樣就可將約束條件應(yīng)用于函數(shù),。在 默認(rèn)情況下,,此工具可將函數(shù)作為內(nèi)聯(lián)函數(shù)來使用,,可為每個除法運(yùn)算生成完整的除法硬件,。我們在除法函數(shù)上應(yīng)用“Allocation”指令,運(yùn)用不同的值 來進(jìn)行實(shí)驗(yàn),,并監(jiān)控其對時延的影響,。最后我們選擇了一個共享除法硬件。正如您在表1中所看到的,,這種方式顯著減少了查找表(LUT),、觸發(fā)器(FF)和其 它邏輯資源的使用量,而且對時延的影響也可以忽略不計(jì),,完全達(dá)到了雙贏效果,。

S3:S2結(jié)合除數(shù)到乘法的轉(zhuǎn)換

接下來我們選擇將除法運(yùn)算轉(zhuǎn)換為乘法。這種轉(zhuǎn)換是可行的,,因?yàn)樵搼?yīng)用使用的是常數(shù)值除法,。我們這樣做的目的有兩方面:首先,盡管已決定采用一個共享 除法器來完成所有的除法運(yùn)算,,但除法硬件依然比較昂貴(約2000個LUT和觸發(fā)器),;其次,這種共享除法器完成除法運(yùn)算的速度相當(dāng)緩慢,,需要34個周 期,,而且我們所使用的賽靈思工具僅支持HLS庫中的一種除法器類型。但在接下來的步驟中,,我們可以看到實(shí)現(xiàn)乘法則有多種選擇,。

因此,在本步驟中,,我們將除法運(yùn)算轉(zhuǎn)換為乘法運(yùn)算(我們通過使用C語言的#ifdef指令來保持代碼的可移植性),。通過AXI-Lite從寄存器將 近似值作為函數(shù)參數(shù)提供。這就是在此步驟中表1能夠顯示性能和資源使用量得到顯著改善的原因,,但乘法運(yùn)算量的加大必須采用更多DSP,。

S4:S3結(jié)合緩沖存儲器分區(qū)

源算法采用統(tǒng)一布置在存儲器分配(malloc)模塊中的多個內(nèi)存緩沖器(8位、16位和32位),。在準(zhǔn)備好算法Vivado HLS這一轉(zhuǎn)換初始階段(圖1)中 ,,存儲器模塊會轉(zhuǎn)變?yōu)閮?nèi)部片上存儲器(Block RAM)。

盡管對于共享外部存儲器來說采用統(tǒng)一的存儲器分配模塊是一種比較普遍的選擇,,但是當(dāng)使用內(nèi)部片上存儲器時,,更好的做法則是利用存儲器分區(qū)來實(shí)現(xiàn)更快 的吞吐量。因此在這個步驟中,,我們將比較大的存儲器模塊分成若干獨(dú)立的小存儲器(8位,、16位和32位)。表1顯示的結(jié)果突出了明顯的性能改善效果,而且 分區(qū)也只是少量增加了BRAM數(shù)量(表2),。此外,,這種技術(shù)還大幅減少了邏輯資源占用,原因可能是用于存儲器訪問的控制邏輯得到了簡化,。

S5:S4結(jié)合共享32/64位帶符號或無符號乘法器

在這個步驟中,,我們受S2中共享除法器實(shí)驗(yàn)的啟發(fā),使用共享資源對DSP模塊進(jìn)行了優(yōu)化,。首先,,我們使用設(shè)計(jì)查看器實(shí)用工具詳細(xì)分析生成的硬件,并 將其與C源代碼進(jìn)行相互參考,。分析結(jié)果顯示在原始模式下硬件正在使用的26個不同種類的乘法器單元,,可被分為無符號16/32/64位乘法和32位帶符號 乘法。與S2實(shí)驗(yàn)一樣,,我們構(gòu)建了一個由32位帶符號,、32位無符號和64位無符號乘法器(用函數(shù)替代“*”運(yùn)算)組成的系統(tǒng)。然后,,我們應(yīng)用了一個分配 約束條件,,即只用一個單元來完成這三種截然不同的運(yùn)算。表1顯示盡管性能有些損失,,但是DSP的使用量顯著減少,。這一結(jié)果激發(fā)我們進(jìn)一步研究智能共享方 案。

S6:S5結(jié)合智能乘法共享

為減少由乘法器共享帶來的性能損失,,需要以更加巧妙的方式對其加以利用,。我們創(chuàng)建了兩個附加乘法器類型,即16位無符號乘法器和具有64位返回值的 32位無符號乘法器,。我們以相互獨(dú)立的方式使用這些乘法器并改變它們的數(shù)量,,經(jīng)過多次實(shí)驗(yàn)后得出的最終解決方案包含兩個無符號64位乘法器、兩個無符號 32位乘法器,、一個帶符號32位乘法器,、一個無符號16位乘法器以及一個獨(dú)立的帶64位返回值的無符號32位乘法器。這種技術(shù)可使性能得到小幅改善(如表 1所示),,但是也會小幅增加DSP的使用量,。

S7:S6結(jié)合乘法器時延實(shí)驗(yàn)(組合乘法器)

在乘法器優(yōu)化的最后階段,我們完成了兩次用以改變乘法器時延值的實(shí)驗(yàn),。默認(rèn)情況下,,Vivado HLS所使用的乘法器的延遲時間介于2至5個時鐘周期之間。硬IP核中的乘法器要么是單時鐘周期要么是組合乘法器,。在這個步驟中,,我們使用“資源”指令并 從庫中選擇相應(yīng)的組合乘法器,,將乘法器的時延設(shè)定為0。結(jié)果如表1中所示,,延遲時間得到了改善,。然而,從時序的角度來看設(shè)計(jì)明顯變差了許多,,因此FPGA 設(shè)計(jì)的時鐘速度減慢可能會將性能提高變?yōu)榻档托阅堋?/p>

S8:S6結(jié)合乘法器時延實(shí)驗(yàn)(1時鐘周期乘法器)

在這個步驟中,,我們不使用組合乘法器,而是從庫中選擇一個單時鐘周期乘法器,。結(jié)果如表1所示。我們可以看到時延略有增加,,但出人意料的是時鐘周期顯著增大,,從而導(dǎo)致硬件變慢。

S9,、S10,、S11:Burst訪問實(shí)驗(yàn)

到目前為止,所有探索步驟對C代碼功能方面的知識要求很少或者根本不要求,。在最后的實(shí)驗(yàn)中,,我們探索了Burst訪問。對基于共享存儲器系統(tǒng)的IP 來說Burst訪問幾乎是必不可少的,,因?yàn)橛糜谛K數(shù)據(jù)或隨機(jī)數(shù)據(jù)訪問的總線具有較高的時延,。為此,我們分析了C代碼的算法結(jié)構(gòu),,以便探究實(shí)現(xiàn)Burst 訪問的可能性,,因?yàn)閺囊话愕能浖嵌葋碚f根本就沒有Burst訪問這一概念。但是值得格外關(guān)注的是,,即便是在Burst訪問實(shí)驗(yàn)中,,我們也從未改變過軟件 的代碼結(jié)構(gòu)。

Burst訪問實(shí)驗(yàn)分兩個步驟執(zhí)行,。首先我們使用轉(zhuǎn)儲方法(盡管并不實(shí)用,,但不失為獲得技術(shù)信息的良好途徑),此時整個圖像被快速送到內(nèi)部存儲器緩 沖器中,,并在實(shí)施最后快速輸出完整結(jié)果,。通過使用較小的圖像并確保FPGA中有充足的片上存儲器,就可以很輕松做到這點(diǎn),。我們將此迭代步驟稱為 “superburst”(S9),。

在第二階段,我們在確保不改變源代碼結(jié)構(gòu)的限制條件下實(shí)現(xiàn)了智能的交互式Burst(S10,,S11),。結(jié)果如表1中所示,。我們根據(jù)賽靈思提供的實(shí) 例教程,利用標(biāo)準(zhǔn)的“memcpy”函數(shù)在C語言中實(shí)現(xiàn)了Burst功能,。遺憾的是,,當(dāng)在代碼中插入memcpy 函數(shù)時無法看到時延值。但FPGA的實(shí)現(xiàn)結(jié)果 (表 2)可以說明實(shí)驗(yàn)所獲得的性能,。

所選步驟的FPGA原型設(shè)計(jì)

使用ESL工具的最大優(yōu)勢之一是能夠?qū)崿F(xiàn)快速的設(shè)計(jì)空間探索,。我們可在幾分鐘之內(nèi)評估以上列出的所有探索步驟和表1所示結(jié)果,從而避免針對少數(shù)最終 所選迭代執(zhí)行冗長的FPGA實(shí)現(xiàn)階段,。表2給出了表1中部分所選步驟在Zynq Z20 SoC上的最終實(shí)現(xiàn)結(jié)果,;同時也給出了在MicroBlaze處理器上(作為參考)和ARM Cortex-A9上實(shí)現(xiàn)初始源代碼所獲得的等效結(jié)果(時延), 以體現(xiàn)出Zynq SoC帶給FPGA設(shè)計(jì)人員的強(qiáng)大計(jì)算能力。該表還給出了由賽靈思XPower分析器計(jì)算得出的動態(tài)功耗估計(jì)值,。

我們利用賽靈思工具將最優(yōu)手工編碼IP轉(zhuǎn)化為RTL,,從而獲得手工編碼IP在Zynq SoC上的實(shí)現(xiàn)結(jié)果。我們不得不使用之前實(shí)驗(yàn)得到的時延測量結(jié)果并將競爭對手的FPGA作為參考,,因?yàn)橄駻XI4總線進(jìn)行移植超出了我們的實(shí)驗(yàn)范圍,。這進(jìn) 一步凸顯了HLS工具的潛力,即可幫助設(shè)計(jì)人員更加輕松地向多種協(xié)議移植,。

如果我們將表2與表1中的結(jié)果進(jìn)行比較,,會發(fā)現(xiàn)幾個有意思的現(xiàn)象。首先,,ESL的快速綜合會得出比實(shí)際情況(尤其是對于LUT和觸發(fā)器)更好的估計(jì)結(jié)果,;對存儲器和DSP而言,綜合器有時可顯著改變資源數(shù)量以進(jìn)行優(yōu)化,。

其次,,時序收斂會成為最后實(shí)現(xiàn)階段的大問題。我們可以看到FPGA實(shí)現(xiàn)后獲得的頻率與HLS估計(jì)結(jié)果相比發(fā)生了顯著變化,。最后,,令人驚訝的是,即便 對于Burst訪問實(shí)驗(yàn),, HLS預(yù)計(jì)值與手工編碼IP得到的時延值也存在明顯差別,。這也使我們對HLS工具生成的DMA的質(zhì)量更加感興趣。

新的IP,,相似的結(jié)果

我們以類似方式來研究第二個IP(即IP2),。根據(jù)之前對IP1的深入討論,表3和表4中所列結(jié)果也就不言自明,。值得注意的一點(diǎn)是表3中的步驟8,。 與IP1的情況一樣(詳見S2和S3討論內(nèi)容),無論從資源使用還是時延的角度來說,,除法器都是高消耗器件,。與IP1不同的是,,IP2使用實(shí)數(shù)除法運(yùn)算, 因此除法器不能移除,。但遺憾的是,,當(dāng)前版本的ESL工具只有一種除法器,其延遲時間為34個時鐘周期,。S8表明,,如果使用時延為一個時鐘周期的除法器(就 像手工編碼IP中提供的除法器),理論上其可實(shí)現(xiàn)30%的性能提升,。表4顯示了所選步驟的FPGA原型設(shè)計(jì)結(jié)果,。

 

VIVADO HLS的DMA/BURST效率問題

通過比較手工編碼IP和ESL技術(shù)得到的結(jié)果可得出一些結(jié)論。盡管研究嵌入式系統(tǒng)所用的初始源代碼(幾乎不做修改)并非以最佳方式編寫,,但ESL工 具所提供的結(jié)果仍可以在資源利用率方面與經(jīng)過優(yōu)化的手工編碼IP相媲美,。ESL與手工編碼IP在實(shí)驗(yàn)結(jié)果上的顯著區(qū)別在于時延,后者得到的時延性能要遠(yuǎn)遠(yuǎn) 優(yōu)于前者,。

針對這一問題,我們觀察到手工編碼IP與ESL IP在構(gòu)建方式上存在較大差異,,(這也是IP2的資源消耗量存在較大差異的原因),。由于源代碼類型不同,在ESL IP中只有一條用于輸入和輸出的數(shù)據(jù)總線,,相比之下,,在手工編碼IP中則有兩條。此外,,手工編碼IP中的FIFO更適合處理Burst訪問,。而ESL IP則由于其源代碼的固有特性,很難建立一個理想高效的Burst處理機(jī)制,,因而只能通過緩沖器來實(shí)現(xiàn)Burst,。由于ESL硬件需要根據(jù)代碼結(jié)構(gòu)將這些 存儲器作為任務(wù)緩沖器和Burst緩沖器,因此ESL方案會影響B(tài)RAM的使用,。此外,,Burst是根據(jù)賽靈思AXI4主接口教程,通過C語言的 memcpy函數(shù)來完成的,。

我們還與賽靈思專家交換了意見,,他們建議使用外部DMA來實(shí)現(xiàn)最佳性能。因?yàn)榫臀覀兯褂玫腣ivado HLS版本而言,,其生成的AXI4主接口尚處于測試階段,,但會在未來得到升級。這些因素可能會導(dǎo)致時延值的顯著差異,,同時也是未來實(shí)驗(yàn)研究的良好出發(fā)點(diǎn),。

生產(chǎn)力與效率

這次的具體實(shí)驗(yàn)工作揭示出ESL設(shè)計(jì)的幾個重要方面,,同時也清除了一些誤區(qū)。ESL工具自推出以來已取得了長足進(jìn)步,,現(xiàn)可支持ANSI C/C++,,并能給出具有競爭力結(jié)果,還可依照硬件/系統(tǒng)設(shè)計(jì)實(shí)踐方法,,采用約束指令的形式開發(fā)出多種設(shè)計(jì)方案(不僅限于過去的循環(huán)開發(fā)),。

事實(shí)上,我們發(fā)現(xiàn)用ESL獲得的所有結(jié)果(延遲時間除外)都可達(dá)到最佳值,。此外,,若通過工具的高級特性實(shí)現(xiàn)精確位類型(而非實(shí)驗(yàn)中使用的一般C語言類型),還能進(jìn)一步優(yōu)化資源使用,,即類似于代碼部分重寫所取得的效果,。

研究工作還使我們了解到生產(chǎn)力與效率間的權(quán)衡問題。圖3給出了IP模塊開發(fā)時間(包括設(shè)計(jì),、軟件,、FPGA實(shí)現(xiàn)及驗(yàn)證等)的對比情況。ESL設(shè)計(jì)能 快速轉(zhuǎn)化為解決方案,,尤其是對于驗(yàn)證工作,,其所獲得的結(jié)果不亞于最佳實(shí)現(xiàn)方案。值得注意的是設(shè)計(jì)與驗(yàn)證時間高度依賴于設(shè)計(jì)人員的技術(shù)水平,。因此,,手工編碼 設(shè)計(jì)與ESL設(shè)計(jì)都由同一組人員完成。

圖3對流程的實(shí)現(xiàn)效果進(jìn)行了公正的比較,??紤]到設(shè)計(jì)人員對IP設(shè)計(jì)與集成的傳統(tǒng)RTL方法更加熟悉,而對ESL工具比較陌生,,因此從長期來看一旦這種新工具被人們所熟悉,,其開發(fā)設(shè)計(jì)所需時間很可能會顯著縮短。

ESL的未來發(fā)展,?

從技術(shù)和商業(yè)角度來看,,應(yīng)該會制定一些針對ESL工具約束結(jié)構(gòu)的EDA標(biāo)準(zhǔn),以便輕松地向其它FPGA或ASIC移植設(shè)計(jì)(這種靈活性是RTL工具 所固有的,,從原則上講,,采用ESL工具應(yīng)該更容易做到這一點(diǎn))。ESL工具供應(yīng)商應(yīng)該像對待RTL工具一樣,,提高ESL工具的質(zhì)量和效果,。

這是一個復(fù)雜、需要長時間探討的論題,,我們不再在這篇短文中對以下問題做出詳細(xì)解答:軟件設(shè)計(jì)人員是否能利用ESL工具對FPGA進(jìn)行編程,?ESL 是否將取代RTL設(shè)計(jì)/工作,?誰是ESL工具的最大受益者?但從本次實(shí)驗(yàn)所獲得的經(jīng)驗(yàn)來看,,我們認(rèn)為ESL工具可以讓所有相關(guān)人員受益,,尤其是系統(tǒng)設(shè)計(jì)人 員。

對硬件設(shè)計(jì)人員而言,,這種工具在創(chuàng)建或評估設(shè)計(jì)片段時非常有效,,其有助于快速構(gòu)建可支持總線接口的測試用基礎(chǔ)設(shè)施。嘗試設(shè)計(jì)硬件的軟件設(shè)計(jì)人員也是 ESL工具的主要受眾之一,。盡管ESL工具為此已取得了很大進(jìn)步,,但仍有很長的路要走。例如在我們的項(xiàng)目中,, ELS工具為軟件設(shè)計(jì)人員將硬件復(fù)雜性降到了非常低的程度,。然而,當(dāng)涉及到約束和優(yōu)化工作時,,要實(shí)現(xiàn)好的設(shè)計(jì)仍需要從硬件方面進(jìn)行考慮,。這個問題將隨著 ESL工具的進(jìn)一步發(fā)展而得到逐步好轉(zhuǎn)。

隨著軟硬件協(xié)同設(shè)計(jì)在SoC領(lǐng)域中不斷推廣采用,,系統(tǒng)設(shè)計(jì)人員也變得越來越普遍,,對于他們來說,ESL工具可能形成一種雙贏局面,。系統(tǒng)設(shè)計(jì)人員可在多個層面上探索這些工具。

在硬件方面,,之所以選擇賽靈思28nm 7系列FPGA中的Zynq-7000 All Programmable SoC,,關(guān)鍵原因之一就是要探究將ARM硬核與FPGA邏輯集成在同一芯片上到底有多大潛力。正如我們在實(shí)驗(yàn)結(jié)果中所看到的,, ARM雙核為FPGA設(shè)計(jì)人員帶來了前所未有的計(jì)算性能,。而事實(shí)上,Zynq SoC為嵌入式設(shè)計(jì)人員帶來了一款微型超級計(jì)算機(jī),,而且可利用緊密集成的FPGA架構(gòu)對其進(jìn)行定制,。

鳴謝

我們感謝產(chǎn)業(yè)合作伙伴Sagemcom為我們提供的資金支持與技術(shù)協(xié)助。同時,,我們還要感謝賽靈思?xì)W洲公司的專家Kester Aernoudt和Olivier Tremois為本次項(xiàng)目提供及時的技術(shù)指導(dǎo),。

參考資料

1. G. Martin,G. Smith,,“高層次綜合:過去,、現(xiàn)在及未來”,IEEE 計(jì)算機(jī)設(shè)計(jì)與測試,,2009年7/8月

2. BDTI 報(bào)告,,“賽靈思FPGA的高層次綜合工具”,,2010年

3. BDTI報(bào)告,“AutoESL AutoPilot高層次綜合工具”,,2010年

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn),。轉(zhuǎn)載的所有的文章,、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有,。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者,。如涉及作品內(nèi)容、版權(quán)和其它問題,,請及時通過電子郵件或電話通知我們,,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失,。聯(lián)系電話:010-82306118,;郵箱:[email protected]