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

          新聞中心

          EEPW首頁 > EDA/PCB > 設(shè)計(jì)應(yīng)用 > 用Synplify Premier加快FPGA設(shè)計(jì)時(shí)序收斂

          用Synplify Premier加快FPGA設(shè)計(jì)時(shí)序收斂

          作者: 時(shí)間:2012-07-03 來源:網(wǎng)絡(luò) 收藏

          傳統(tǒng)的綜合技術(shù)越來越不能滿足當(dāng)今采用 90 納米及以下工藝節(jié)點(diǎn)實(shí)現(xiàn)的非常大且復(fù)雜的 設(shè)計(jì)的需求了。問題是傳統(tǒng)的 綜合引擎是基于源自 ASIC 的方法,如底層規(guī)劃、區(qū)域內(nèi)優(yōu)化 (IPO,In-place Optimization) 以及具有物理意識(shí)的綜合 (physically-aware synthesis) 等。然而,這些從 ASIC 得來的綜合算法并不適用于 的常規(guī)架構(gòu)和預(yù)定義的布線資源。

          最終的結(jié)果是,所有的三種傳統(tǒng) FPGA 綜合方法需要在前端綜合與下游的布局布線工具之間進(jìn)行多次耗時(shí)的設(shè)計(jì)反復(fù),以獲得。這個(gè)問題的解決方案是一種基于圖形的獨(dú)特物理綜合技術(shù),能夠提供一次通過、按鈕操作的綜合步驟,不需要 ( 或者需要很少 ) 與下游的布局布線引擎的設(shè)計(jì)反復(fù)。而且,基于圖形的物理綜合在總體的時(shí)鐘速度方面可以將性能提高 5% 到 20% 。 先進(jìn) FPGA 物理綜合工具就是這樣一種工具,專門針對(duì)那些設(shè)計(jì)很復(fù)雜的高端 FPGA 設(shè)計(jì)工程師而定制,他們的設(shè)計(jì)需要真正的物理綜合解決方案。

          本文首先介紹了主要的傳統(tǒng)綜合方法,并說明這些方法存在的相關(guān)問題,然后介紹基于圖形的物理綜合概念,并指出這種技術(shù)如何滿足當(dāng)前先進(jìn) FPGA 的設(shè)計(jì)需求。

          傳統(tǒng)綜合解決方案存在的問題

          對(duì)于 2 微米的 ASIC 技術(shù)節(jié)點(diǎn)以及上世紀(jì) 80 年代早期以前來說,電路單元 ( 邏輯門 ) 相關(guān)的延時(shí)與互連 ( 連接線 ) 相關(guān)延時(shí)的比例約 80:20 ,也就是說門延時(shí)約占每個(gè)延時(shí)路徑的 80% 。這樣一來,設(shè)計(jì)師可以用連線負(fù)載模型來估計(jì)互連延時(shí),在連線負(fù)載模型中,每個(gè)邏輯門輸入被賦予某個(gè) “ 單位負(fù)載 ” 值,與某個(gè)特定路徑相關(guān)的延時(shí)可以作為驅(qū)動(dòng)門電路的強(qiáng)度和連接線上的總電容性負(fù)載的函數(shù)來計(jì)算得出。

          類似地,當(dāng)在上世紀(jì) 80 年代后期 ( 大約引入 1 微米技術(shù)節(jié)點(diǎn)的時(shí)候 ) 第一個(gè) RTL 綜合工具開始用在 ASIC 設(shè)計(jì)中的時(shí)候,電路單元的延時(shí)與連線延時(shí)相比還是占主導(dǎo)地位,比例約為 66:34 。因此,早期的綜合工具還是基于它們的延時(shí)估計(jì)方法,并使用簡單的連線負(fù)載模型進(jìn)行優(yōu)化。由于電路單元的延時(shí)占據(jù)主導(dǎo),因此初期綜合引擎使用的基于連線負(fù)載的時(shí)序估計(jì)足夠準(zhǔn)確,下游的布局布線引擎通常能在相對(duì)較少的幾次反復(fù) ( 在 RTL 和綜合階段之間 ) 條件下實(shí)現(xiàn)設(shè)計(jì)。

          然而,隨著每個(gè)后續(xù)技術(shù)節(jié)點(diǎn)的引入,互連延時(shí)大大地增加 ( 事實(shí)上,就 2005 年采用 90 納米技術(shù)實(shí)現(xiàn)的標(biāo)準(zhǔn)單元 ASIC 來說,電路單元與互連的延時(shí)比例現(xiàn)在已經(jīng)接近 20:80) 。這使得綜合引擎的延時(shí)估計(jì)與布局布線后實(shí)際延時(shí)的關(guān)聯(lián)性越來越低。

          這具有一些很重要的牽連性,因?yàn)榫C合引擎在不同的優(yōu)化方法之間選擇,以及在實(shí)現(xiàn)功能的替代方法 ( 諸如基于它們的時(shí)序預(yù)測(cè)的加法器 ) 之間選擇。例如,假設(shè)某個(gè)包含一個(gè)加法器 ( 以及其它組件 ) 的特定時(shí)序路徑被預(yù)知具有一些 ( 時(shí)序 ) 裕量,這種情況下,綜合工具可以選擇一個(gè)占用芯片面積相對(duì)較小的較慢加法器版本。但是,如果時(shí)序估計(jì)與實(shí)際的布局布線后延遲情況出入比較大的話,這個(gè)路徑可能最后非常慢。這樣一來,不準(zhǔn)確的延時(shí)估計(jì)意味著綜合引擎最后才對(duì)不正確的對(duì)象進(jìn)行優(yōu)化,只有在完成了布局布線后你才發(fā)現(xiàn)問題并不是像你 ( 或綜合引擎 ) 所想的那樣,其結(jié)果是獲得所需的工作量將大大地增加,因?yàn)閺那岸说胶蠖说脑O(shè)計(jì)反復(fù)次數(shù)大大增加了。

          為了解決這些問題,有必要了解在綜合過程中與設(shè)計(jì)相關(guān)的物理特性。因此,隨著時(shí)間的推移, ASIC 綜合技術(shù) ( 緊跟著 FPGA 綜合技術(shù) ) 采用了一系列的方法 ( 某些情況下也拋棄了一些方法 ) ,例如下面討論的底層規(guī)劃、 IPO 和具有物理意識(shí)的綜合。

          底層規(guī)劃

          對(duì)于 ASIC 的 RTL 綜合,底層規(guī)劃技術(shù)在上世紀(jì) 90 年代早期出現(xiàn),稍晚于綜合技術(shù)本身的問世。底層規(guī)劃工具允許設(shè)計(jì)師在器件上定義物理區(qū)域,通過手工或者使用自動(dòng)交互技術(shù)來對(duì)這些區(qū)域布局,并將設(shè)計(jì)的不同部分分配到這些區(qū)域。

          底層規(guī)劃涉及到逐個(gè)模塊地綜合和優(yōu)化設(shè)計(jì),然后在最后將所有東西 “ 縫合 ” 在一起 ( 早期底層規(guī)劃工具使用的綜合算法都是基于連接線負(fù)載模型 ) 。這意味著底層規(guī)劃工具不能按每個(gè)單元優(yōu)化邏輯,只能影響邏輯模塊的布局。而且,在定義上,底層規(guī)劃工具不會(huì)全局性地考慮布線資源,在設(shè)計(jì)完全布線完成之前,它不可能準(zhǔn)確分析所有的時(shí)序路徑。這會(huì)導(dǎo)致在前端和后端工具之間的大量耗時(shí)的設(shè)計(jì)反復(fù)。盡管這種方法可以提高 ASIC 設(shè)計(jì)的時(shí)序性能和降低功耗,但它需要對(duì)設(shè)計(jì)的復(fù)雜分析和很高的專業(yè)技術(shù)水準(zhǔn)。

          圖 1 : FPGA 的主流架構(gòu)。


          在早期,采用 ASIC 底層規(guī)劃有下面幾個(gè)原因:作為一種獲得時(shí)許收斂的方法解決有限容量的問題,并支持基于逐個(gè)模塊的遞增變化。最近,底層規(guī)劃不再被認(rèn)為是一種其本身能獲得的方法;底層規(guī)劃依然是一種有用的方法,但只是在與其它方法 ( 例如物理優(yōu)化 ) 結(jié)合的時(shí)候才有用,使用綜合后門級(jí)網(wǎng)表的底層規(guī)劃依然需要非常多的專門技術(shù)。

          對(duì)于 FPGA 來說,直到上世紀(jì) 90 年代晚期,底層規(guī)劃技術(shù)還沒有成為主流應(yīng)用。平均而言,在一個(gè) FPGA 設(shè)計(jì)中,關(guān)鍵路徑一般會(huì)經(jīng)過 3 個(gè)區(qū)域。由于 FPGA 一般用到的設(shè)計(jì)方法,如果使用綜合后 (“ 門級(jí) ”) 網(wǎng)表來執(zhí)行底層規(guī)劃,即使對(duì) RTL 的相對(duì)較小的改變都可能導(dǎo)致先前所做的底層規(guī)劃工作付之東流。解決這個(gè)問題的方法是在 RTL 級(jí)進(jìn)行底層規(guī)劃。然而,為了更有用,這必須和某種形式的物理優(yōu)化相結(jié)合,源于 ASIC 的物理綜合算法并不適合于 FPGA 的常規(guī)架構(gòu)以及預(yù)定義的布線資源。

          布局優(yōu)化

          隨著底層規(guī)劃在 ASIC 領(lǐng)域的作用逐漸弱化,在上世紀(jì) 90 年代中期, IPO 技術(shù)對(duì)其進(jìn)行了強(qiáng)化 / 或者替代。這再次地涉及到時(shí)序分析和估計(jì)是基于連接線負(fù)載模型的綜合。

          在這種情況下,所產(chǎn)生的網(wǎng)表被傳遞到下游的布局布線引擎。在布局布線和寄生提取之后,實(shí)際的延時(shí)被背注到綜合引擎。這些新值觸發(fā)器在綜合引擎中的遞增優(yōu)化,例如邏輯重構(gòu)和復(fù)制。其結(jié)果是得到一個(gè)被部分修改的新網(wǎng)表。然后,這個(gè)網(wǎng)表被遞交到遞增布局布線引擎,產(chǎn)生一個(gè)改進(jìn)的設(shè)計(jì)拓?fù)洹?br />
          基于 IPO 流程所得到的最后結(jié)果比那些采用底層規(guī)劃方法獲得的通常更好。然而,這種方法同樣可能需要在前端和后端工具之間進(jìn)行很多次設(shè)計(jì)反復(fù)。而且基于 IPO 方法的一個(gè)重要的問題是對(duì)布局布線的修改可能導(dǎo)致新的關(guān)鍵路徑,這個(gè)路徑在前一次反復(fù)中是看不到的,即修正一個(gè)問題可能會(huì)激起其它的問題,這可能導(dǎo)致收斂的問題。

          對(duì)于 FPGA 設(shè)計(jì),基于 IPO 的設(shè)計(jì)流程大約在 2003 年開始受到主流關(guān)注。然而,盡管這樣的流程已經(jīng)可用,但那時(shí)這些流程并沒有以一種有意義的方式得到采用,因?yàn)閱蝹€(gè)地優(yōu)化時(shí)序路徑的 IPO 技術(shù)通常導(dǎo)致其它路徑時(shí)序的劣化和時(shí)序收斂不完全。設(shè)計(jì)師需要可使他們?cè)诓粻奚霸O(shè)計(jì)版本獲得的成果的基礎(chǔ)上對(duì)設(shè)計(jì)進(jìn)行改變的可靠結(jié)果。但是基于 IPO 的方法并不能在多次設(shè)計(jì)反復(fù)之上產(chǎn)生穩(wěn)定的結(jié)果,因?yàn)樵谝淮畏磸?fù)中優(yōu)化關(guān)鍵路徑會(huì)在下一次反復(fù)中產(chǎn)生新的關(guān)鍵路徑。類似地,增加約束以改進(jìn)一個(gè)區(qū)域的時(shí)序可能使其它的區(qū)域的時(shí)序惡化。

          具有物理意識(shí)的綜合

          當(dāng)前先進(jìn)的 ASIC 綜合技術(shù)是具有物理意識(shí)的綜合,這種綜合技術(shù)在大約 2000 年開始受到主流關(guān)注。不考慮實(shí)際的技術(shù) ( 有幾種不同的算法 ) ,具有物理意識(shí)的綜合的基本概念是在一次性完成的過程中結(jié)合布局和綜合。

          這在 ASIC 領(lǐng)域中的實(shí)踐效果很好,因?yàn)榱私獠季值木C合引擎能根據(jù)已布局的單元的周邊和 Steiner 以及 Manhattan 布線估計(jì)進(jìn)行時(shí)序的預(yù)估。這種綜合方法在 ASIC 中效果很好的原因是連接線有序地布置。這意味著與最后的布局和布線設(shè)計(jì)相關(guān)的延時(shí)與綜合引擎所估計(jì)的結(jié)果具有非常好的相關(guān)性。


          上一頁 1 2 下一頁

          評(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); })();