<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > EDA/PCB > 設(shè)計(jì)應(yīng)用 > QIC 在縮短大容量FPGA編譯時(shí)間中的作用

          QIC 在縮短大容量FPGA編譯時(shí)間中的作用

          作者: 時(shí)間:2012-12-13 來(lái)源:網(wǎng)絡(luò) 收藏

          6.jpg

          圖4 在Quartus GUI中創(chuàng)建分區(qū)示意

          5.jpg

          圖5 分區(qū)與邏輯歸屬變化

          4.jpg

          圖6 分區(qū)合并報(bào)告

          3.jpg

          圖7 分區(qū)綜合后資源使用統(tǒng)計(jì)

          2.jpg

          圖8 Design partition window

          1.jpg

          圖9 Design partition window

          從前面分區(qū)的性質(zhì)和特點(diǎn)可以看出,對(duì)包含多個(gè)功能模塊的多層次復(fù)雜設(shè)計(jì),可以有許多種設(shè)置分區(qū)的方案。但需要注意的是:不是任何一種分區(qū)方案都能帶來(lái)的節(jié)約,惡劣的設(shè)計(jì)分區(qū)甚至能夠?qū)е戮幾g失敗!如何得到高效合理的設(shè)計(jì)分區(qū)呢?我們需要遵從以下原則:

          a. 不要?jiǎng)?chuàng)建太多的分區(qū),一般性的設(shè)計(jì)建議分區(qū)的數(shù)量控制在4~8個(gè)之間;

          b. 不要?jiǎng)?chuàng)建太小的分區(qū),一般建議不要小于1000個(gè)LE或者ALM;

          c. 外設(shè)接口邏輯和內(nèi)核處理邏輯放到不同的設(shè)計(jì)分區(qū);

          d. 相同或相近功能的外設(shè)接口,如果管腳位置相鄰,可以放在同一個(gè)分區(qū),否則創(chuàng)建不同的設(shè)計(jì)分區(qū);

          e. 不同的分區(qū)方案中,分區(qū)之間的聯(lián)接少的方案更優(yōu)。

          針對(duì)優(yōu)化代碼

          除了分區(qū)方案,設(shè)計(jì)代碼也對(duì)的性能有直接的影響,需要設(shè)計(jì)者針對(duì)做一些特定的代碼優(yōu)化。優(yōu)化主要有兩方面,一方面是升級(jí)所使用的Megacore IP到最新的版本;另一方面則是一些更嚴(yán)格的編碼規(guī)則。

          之所以建議升級(jí)Megacore IP到最新的版本,這是由于QIC增量式編譯常常需要調(diào)用Megacore IP的一些特性來(lái)支持一些特定操作,而這些特性通常在較新的版本中才能得到比較好的支持,而且隨著QIC的成熟不斷改進(jìn)。筆者就曾經(jīng)在一個(gè)嘗試使用QIC的項(xiàng)目中,發(fā)現(xiàn)客戶的設(shè)計(jì)繼承了一部分老項(xiàng)目中的代碼,其中包含好幾個(gè)Quartus 9.1版本的DDR EMIF控制器,占了整個(gè)設(shè)計(jì)使用資源的20%左右。當(dāng)說(shuō)服客戶把這幾個(gè)控制器升級(jí)到當(dāng)時(shí)最新的Quartus 11版本,發(fā)現(xiàn)QIC所能節(jié)約的增加了近1個(gè)小時(shí),大約15%的整體。

          之所以QIC要求遵從更嚴(yán)格的編碼規(guī)則,這是由于Quartus在有分區(qū)存在的時(shí)候,是不對(duì)跨越分區(qū)邊界的邏輯進(jìn)行綜合優(yōu)化,一些在Flat compilation中可以被軟件優(yōu)化掉的不良代碼,在QIC的流程中會(huì)造成嚴(yán)重的影響。這些嚴(yán)格的編碼規(guī)則包括:

          a. 不要在底層分區(qū)邊界上使用三態(tài)信號(hào)和雙向端口;

          Altera器件中,只有在器件的輸出管腳上才能實(shí)現(xiàn)真正的三態(tài)信號(hào),在器件內(nèi)部,三態(tài)驅(qū)動(dòng)是依靠多路器邏輯模擬實(shí)現(xiàn),這兩點(diǎn)往往要求跨層的編譯優(yōu)化,而這在增量式編譯流程中是做不到的,會(huì)導(dǎo)致編譯失敗。只有一種情形例外,就是內(nèi)部三態(tài)邏輯所涉及的所有信號(hào)都在同一個(gè)底層分區(qū)中,Quartus可以依靠多路器邏輯模擬此三態(tài)邏輯。雙向端口也類似,只有在此雙向邏輯所涉及的所有信號(hào)都在一個(gè)底層分區(qū)中,QIC才能正常進(jìn)行。

          b. 分區(qū)的輸入輸出最好都通過(guò)寄存器實(shí)現(xiàn),資源有限的情況下至少保證跨分區(qū)的連接中的一端是寄存器(reg-in或者reg-out);

          雖然這一規(guī)則有一定的實(shí)現(xiàn)難度,但它可以避免在使用增量式編譯流程的時(shí)候,那些跨分區(qū)邊界的信號(hào)的延遲出現(xiàn)大的惡化。如果不能實(shí)現(xiàn)這一規(guī)則,跨分區(qū)連接的兩端有可能都是組合邏輯。在Flat Compilation中,這兩組組合邏輯會(huì)被綜合優(yōu)化到一起來(lái)布局布線,時(shí)序容易滿足;但在是增量式編譯中,由于不能跨區(qū)優(yōu)化,這2組組合邏輯的分別布局布線,那穿過(guò)這兩組邏輯的路徑延遲將有可能變得很長(zhǎng),出現(xiàn)時(shí)序違背。

          c. 避免不包含任何處理邏輯的信號(hào)環(huán)路穿越分區(qū)邊界;

          也是由于不能跨區(qū)優(yōu)化,這樣的信號(hào)環(huán)在Flat Compilation中可以被優(yōu)化消除掉,在增量式編譯中就不能消除,浪費(fèi)資源。

          d. 避免跨分區(qū)的常量信號(hào)

          類似C,跨區(qū)的常量信號(hào)不能在目的端分區(qū)中直接實(shí)現(xiàn)(“0”連接地層,“1”連接電源層),而必須占用走線資源實(shí)現(xiàn)。

          關(guān)注相關(guān)報(bào)告信息

          使用QIC時(shí),Quartus中會(huì)產(chǎn)生很多QIC專有的消息,因此在編譯報(bào)告中也增加一些新的章節(jié)。這些報(bào)告章節(jié),對(duì)我們了解QIC的運(yùn)行情況有直接的幫助,尤其是當(dāng)一些異常情況出現(xiàn),往往需要我們通過(guò)閱讀這些報(bào)告章節(jié)來(lái)進(jìn)行調(diào)試。比較重要的報(bào)告有:

          a. Partition Merge report

          分區(qū)合并的報(bào)告章節(jié)如下圖所示,分別提供在這個(gè)階段網(wǎng)表的使用情況(netlist Types Used),各個(gè)分區(qū)的綜合警告信息(Partition Warning)和綜合后各類資源使用情況(Partition Statistics)。

          b. Incremental compilation section in Fitter report

          在Fitter報(bào)告中,也增加了增量式編譯的章節(jié)。其中,Incremental Compilation Preservation Summary匯總了設(shè)計(jì)中被保留的布局和布線比例;Incremental Compilation Partition setting 說(shuō)明了設(shè)計(jì)中所有分區(qū)的創(chuàng)建方式和網(wǎng)表的保留級(jí)別(Preservation level);Incremental Compilation Placement Preservation給出了每一個(gè)分區(qū)中節(jié)點(diǎn)保留的信息;Incremental Compilation Routing Preservation則是每個(gè)分區(qū)中布線保留的信息。

          c. Design partition window

          這個(gè)窗口默認(rèn)是不在Quartus 界面中顯示的,用戶需要通過(guò)Quartus菜單欄“Assignments”->”Design partition window”打開這個(gè)窗口。這個(gè)窗口給出可配置分區(qū)的當(dāng)前設(shè)置及各個(gè)網(wǎng)表文件的時(shí)間戳信息,并且可以在此窗口中快速修改分區(qū)使用的網(wǎng)表類型(Netlist Type)和Fitter網(wǎng)表的保留級(jí)別(Fitter Preservation Level)。

          結(jié)束語(yǔ)

          在本文中,向大家介紹了增量式編譯的原理、過(guò)程和一些性能表現(xiàn),同時(shí)給出了使用QIC需要注意的一些指導(dǎo)原則。華為、中興等客戶的多個(gè)項(xiàng)目實(shí)踐已經(jīng)證明QIC是一個(gè)可以用來(lái)解決設(shè)計(jì)編譯時(shí)間太長(zhǎng)的有效手段。增量式編譯QIC,值得您去嘗試!


          上一頁(yè) 1 2 下一頁(yè)

          關(guān)鍵詞: FPGA QIC 大容量 編譯時(shí)間

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();