• <ul id="86mes"><sup id="86mes"></sup></ul>
  • <ul id="86mes"></ul>
    <ul id="86mes"><sup id="86mes"></sup></ul>
  • 優(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中完成了一個(gè)高速CPU設(shè)計(jì),本文介紹他們在該設(shè)計(jì)中積累的經(jīng)驗(yàn),為從事類似開發(fā)的(中國)設(shè)計(jì)工程師提供借鑒。

    在本例中,我們的客戶想將一個(gè)經(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é)果,我們可從中選取最符合要求的一個(gè)。此外,我們還采用了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)建了一個(gè)網(wǎng)絡(luò)絡(luò)表,將之與Xilinx布局工具配合以便在Vertex XCV 1000上生成版圖。

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

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

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

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

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

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

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

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

    本文總結(jié)

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

    作者:Yanzhe Liu

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

    GDA Technologies公司

    Greg Kahlert

    應(yīng)用工程師

    Lexra公司

    FPGA RISC

    相關(guān)閱讀

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

    一周熱門