優(yōu)化32位RISC處理器置入FPGA的設(shè)計(jì)

2013-11-18 10:49 來源:電子信息網(wǎng) 作者:和靜

目前,越來越多的客戶想在FPGA中設(shè)計(jì)ASIC原型。GDA Technologies是一家擅長于ASIC設(shè)計(jì)的專業(yè)工程設(shè)計(jì)服務(wù)公司,最近,他們幫助客戶在FPGA中完成了一個高速CPU設(shè)計(jì),本文介紹他們在該設(shè)計(jì)中積累的經(jīng)驗(yàn),為從事類似開發(fā)的(中國)設(shè)計(jì)工程師提供借鑒。

在本例中,我們的客戶想將一個經(jīng)過優(yōu)化的32位RISC處理器置入Xilinx的Vertex XCV 1000 FPGA,要求該處理器運(yùn)行速度不低于75 MHz,所占空間不得多于FPGA面積的40%。

我們采用Xilinx的Alliance 3.1版工具進(jìn)行基于分層模塊的布局和布線。在設(shè)計(jì)過程中,Xilinx公司就如何更好地使用其工具以加快設(shè)計(jì)速度提出了許多建議,像遞增編輯、多通道運(yùn)行和分層方法等等。例如,多通道運(yùn)行可產(chǎn)生不同的結(jié)果,我們可從中選取最符合要求的一個。此外,我們還采用了Synplicity公司的RTL底層規(guī)劃工具Amplify及其FPGA綜合工具Synplify。

原來的數(shù)據(jù)庫RTL(圖1)是為ASIC設(shè)計(jì)而編寫的,內(nèi)核結(jié)構(gòu)也是專為ASIC而定制的,它們都不太適用于FPGA環(huán)境。為解決這些問題,我們通過上述工具來運(yùn)行LX4189 RTL代碼,以找到合適的設(shè)計(jì)切入點(diǎn)。此外,還利用Amplify和Synplify工具創(chuàng)建了一個網(wǎng)絡(luò)絡(luò)表,將之與Xilinx布局工具配合以便在Vertex XCV 1000上生成版圖。

第一次版圖設(shè)計(jì)獲得了50MHz的時鐘速度,在該版圖的最壞一個路徑上,延遲為20ns。對于FPGA,理想情況是延遲的60%在于邏輯部分,40%在于布線。第一次版圖設(shè)計(jì)的結(jié)果是,30%的延遲在于邏輯部分,而70%在于布線。下一步工作就是將布線延遲縮短到邏輯延遲的范圍內(nèi),以便得到12ns或更小的延遲,從而獲得75到80MHz的時鐘速度。

為提高時鐘速度以達(dá)到75MHz的原定目標(biāo),我們開始對引起最大延遲的路徑予以評估。對內(nèi)核的分析表明,復(fù)雜數(shù)據(jù)路徑包含多路復(fù)用器鏈MUX(圖2)。當(dāng)在FPGA上實(shí)現(xiàn)這些路徑時,它們會產(chǎn)生很大的網(wǎng)絡(luò)延遲。事實(shí)上,70%到75%的網(wǎng)絡(luò)延遲都是由數(shù)據(jù)路徑造成的。

此外,隨著設(shè)計(jì)的深入,我們在協(xié)處理器的地址路徑上發(fā)現(xiàn)了冗余邏輯部分,還有寄存器文件(如果去除的話,可提高FPGA時鐘速度)。例如,內(nèi)核帶有一個設(shè)計(jì)中不需要的MIPS16模塊。盡管Lexra去掉了該模塊及其它不必要的邏輯部分,而且為我們提供了新的RTL數(shù)據(jù)庫,我們并未看到時鐘速度有明顯的提高,因?yàn)閿?shù)據(jù)路徑上仍有延遲存在。

我們不得不繼續(xù)尋找其它可能妨礙提高時鐘速度的原因,其中包括MUX實(shí)現(xiàn)問題以及三態(tài)MUX是否優(yōu)于其它形式的MUX。我們利用Virtex CLB(可配置邏輯模塊)上常見的三態(tài)緩沖器BUFT來驅(qū)動專用的、分段水平布線資源。

扇出是我們發(fā)現(xiàn)的另一個問題。減少扇出數(shù)有助于縮短多個關(guān)鍵路徑上的延遲,但當(dāng)達(dá)到一定程度后,進(jìn)一步減少扇出數(shù)不但不能降低延遲,反而會增加延遲。在為綜合工具提供約束條件以減少扇出數(shù)時,我們意識到這一問題。對綜合工具施加約束需要插入額外的門以減少扇出數(shù),因此增加了延遲。

Amplify底層規(guī)劃工具生成協(xié)處理器CP0和RPA兩大模塊,然后將它們放入FPGA。RPA代表內(nèi)核的算術(shù)邏輯單元和指令執(zhí)行管線邏輯。在設(shè)計(jì)過程中,我們?yōu)槊總€模塊單獨(dú)布局,當(dāng)兩個模塊都接近或達(dá)到75 MHz時,再將它們放到一起。

在這兩個模塊中,CP0的慢速路徑數(shù)最多,其時鐘速度介于48MHz到50MHz之間。借助于Amplify工具,我們將其時鐘速度從50MHz提升至66MHz。達(dá)到66MHz后,便很難用Amplify來進(jìn)一步提高時鐘了。因此,我們將注意力集中在兩個模塊的關(guān)鍵路徑上。根據(jù)Xilinx的建議,我們用三態(tài)MUX代替了一組關(guān)鍵的多路復(fù)用器。

通過識別一系列出現(xiàn)時序沖突的路徑,以及用三態(tài)MUX有選擇地替代多路復(fù)用器,我們將整個設(shè)計(jì)的運(yùn)行速度提高到80MHz。獲得80MHz的速度是一個重要的里程碑,因?yàn)樗硎疚覀儼袮SIC的時鐘速度提高了30%。對于完整的設(shè)計(jì),它占用Xilinx XCV 1000中96個BLOCKRAM中的12個(約12%),12,288個SLICE的1505個(約12%),以及12,544個TBU的448個(約3%)。

本文總結(jié)

最終設(shè)計(jì)占用FPGA中200K邏輯門的80K。我們與該客戶的指定IP內(nèi)核供應(yīng)商Lexra公司合作,共同完成了這一設(shè)計(jì)。在兩個月的時間內(nèi),我們將Lexra的LX4189處理器置入到XCV 1000 FPGA中。Lexra對IP內(nèi)核進(jìn)行了優(yōu)化,以便更好地適應(yīng)FPGA。最終設(shè)計(jì)超過了原定的75MHz目標(biāo),時鐘速度可達(dá)到80MHz。

作者:Yanzhe Liu

設(shè)計(jì)工程師

GDA Technologies公司

Greg Kahlert

應(yīng)用工程師

Lexra公司

FPGA RISC

相關(guān)閱讀

暫無數(shù)據(jù)

一周熱門