一旦了解了設計規(guī)劃策略涉及的各種復雜的折中,設計規(guī)劃策略就成了常識。獲得這種直觀了解的一種方法就是領會設計規(guī)劃的一些經(jīng)驗法則。這些切實可行的經(jīng)驗法則來自于處理布局規(guī)劃和電源規(guī)劃問題的日常經(jīng)驗。熟練掌握設計規(guī)劃可以幫助你預防費時的反復設計和芯片重復加工。對于具有分級設計流程的大型芯片來說,由于其更可能具有很長的模塊間路徑,而這些路徑的延遲導致無法實現(xiàn)時序收斂,所以設計規(guī)劃變得至關重要。任何復雜的芯片都需要進行電源規(guī)劃,以預防由于IR壓降和電遷移產(chǎn)生的問題。這些經(jīng)驗法則,既有基本的又有的,不一而足。它們對COT(客戶自有加工工具)設計流程和由ASIC廠商處理實際后端設計的ASIC流程都有好處。圖1說明了一個典型的設計規(guī)劃流程。
圖1, 設計規(guī)劃隨著RTL成熟的各個階段相應地出現(xiàn)。早期布局規(guī)劃和電源規(guī)劃起到了幫助RTL發(fā)展的指導作用,反之亦然。
在生成布局規(guī)劃圖時,必須考慮工藝技術的一些基本特性。例如,典型的標準單元庫將單元行定義為水平的,而各層的布線方向則遵循交替模式:第1金屬層水平方向,第2金屬層垂直方向,依次類推。在任何一層,都要避免違反該層次優(yōu)選的布線方向的布線。在芯核和模塊周圍生成金屬環(huán)時,設計師必須切記為連接引腳的布線預留空間。在將金屬壓入模塊時,要小心避免在模塊拐角處出現(xiàn)擁塞;要注意模塊內部的封鎖效應。
在安排模塊時,設計師必須避免在頂層通道中產(chǎn)生四向交叉,T型交叉產(chǎn)生的擁塞要少得多。根據(jù)可能進行的單元上方布線有多少,這一經(jīng)驗法則對于為布線通道留出必要空間是至關重要的。使用飛線(Flylines)可以幫助確定優(yōu)化的布局和方位(圖2)。一旦安排好了模塊,就可以安排模塊層引腳。首先要確定適合安排引腳的層,再展開引腳以減少擁塞。要避免將引腳安排在布線連接受限制的拐角處,并要使用多個引腳層來減少擁塞。
圖2, 飛線顯示了各個網(wǎng)的連接情況和模塊布局的效果。
切勿將單元安排在硬宏單元(hard macro)的周界以內。為了防止阻斷到信號引腳的連接,要避免將單元安排在電源連接條下面,除非電源連接條在比第2金屬層高的金屬層上。要使用密度制約條件或布局封鎖陣列來減少擁塞,這是因為這些策略有助于將單元分布到較大的區(qū)域,從而降低該區(qū)域的布線要求。,在安排頂層緩沖器時,切記要為電源連接線和接地連接線留出相應的區(qū)域。在布局后的時序收斂優(yōu)化過程中,可能需要一些用于安排緩沖器或中繼器的區(qū)域,還需要給這些區(qū)域提供電源和接地。要避免生成任何增加擁塞的封鎖。在任何物理設計工作中,了解目標工藝技術的要求是非常重要的。設計規(guī)則文件描述了許多需要考慮的工藝因素。例如,大多數(shù)工藝現(xiàn)在要求在一個稱為“打孔”或“制成干酪形”的工序中在很大的金屬區(qū)域插入各種孔。打孔可緩解由于熱效應在金屬層中引起的與應力相關的問題,但是卻可能會改變金屬層的載流特性。請在設計規(guī)則文件中查閱這一變量以及其它許多變量。
實用規(guī)劃步驟
除了在生成布局規(guī)劃圖時必須記住的大量實用經(jīng)驗法則之外,還需要一個滿足業(yè)務目標的原則。具體說,就是必須決定要優(yōu)化的事項。通常的優(yōu)化事項包括可重復性、時序、項目進度、功耗和裸芯尺寸。這一決定確定了為面積使用率設定的余量,并且會影響其它參數(shù)。例如,如果想要優(yōu)化項目進度,那么一個顯而易見的選擇就是把面積使用率設定得低于為優(yōu)化裸芯片尺寸時所設定的使用率。面積使用率下降就會使芯片尺寸加大,但通常可預防走線中的各種問題。
你也許還希望設定一種電源規(guī)劃余量,而這種余量會在電源網(wǎng)中所用的金屬層比避免直流電源負載產(chǎn)生的故障所需的金屬層還多。這種策略會增加裸芯面積,但卻可避免下游電源問題,進而加快進度。此外,可以在任何開放空間填充電源網(wǎng)金屬層。半導體工藝要求一定百分比的金屬層,所以你索性利用這些金屬層來幫助避免電源問題。但是,應該確保額外的金屬層不會使信號線靠得太近,從而避免增加電容量和功耗,并避免引起信號完整性問題。正如這些經(jīng)驗法則所暗示的,布局規(guī)劃和電源規(guī)劃是一個綜合的過程。
如果你有任意邏輯分級元件的多個實例,就要考慮將這些項目分類,形成一個分級物理元件。要尋找RTL(寄存器傳送級)設計表示法中可以歸入分級功能塊的邏輯模塊。由于用同樣尺寸的功能塊進行布局規(guī)劃更加方便,所以還應該將多個小模塊歸入一個更大的模塊。應該嘗試使用中型模塊。一個劃分為6到12個尺寸大致相當?shù)哪K的設計是一個合理的布局規(guī)劃候選方案。根據(jù)封裝設計,通常希望從外設的I/O開始布局規(guī)劃。
設計師應該考慮設計中的所有非典型標準單元部件:內存、模擬電路、PLL、與倍速時鐘配套的邏輯、需要不同電壓的模塊、超大模塊以及非尋常的特殊設計實例。通常希望首先安排這些元件,以確保滿足其特殊要求。務必一開始就要了解這些特殊要求。例如,閃存具有的高電壓編程輸入端必須在與I/O引腳相距一定的距離以內,所以應該首先安排閃存。
如果由于具有兩個或更多大型模塊或者其它特性而使得合理的布局規(guī)劃無法實現(xiàn)時,那就必須增加裸芯片尺寸或者重新排列I/O。在流程設計中及早發(fā)現(xiàn)這個問題,能很方便地就采用更大更貴的裸芯片的器件在財務上是否可行做出業(yè)務決策。如果任何大型模塊都是軟(可合成)IP(知識產(chǎn)權)或能以 RTL 的形式提供,那就可將該模塊重新劃分為多個更小部分而避免采用較大的裸芯片。要根據(jù)其I/O和功耗,將其余的模塊安排在剩余空間內,從而完成布局規(guī)劃。要努力避免將功耗大的模塊安排在靠近芯片中心的地方。面積使用率大小不一,視設計所用的庫、技術和特性而定,但是,就普通庫而言,通常以70%的使用率為。芯片中寄存器或硬IP所占百分比異常高,就會使面積使用率提高;芯片中具有大量多路傳輸器或其它小型而又引腳密集的單元,則會降低面積使用率。要進行初始合成,以確定模塊有多大。
為設計設定功率預算沒有通用的方法。工程師們利用設計工具、電子數(shù)據(jù)表、手工計算等各種適合他們所擁有的信息處理方法來確定模塊級的功耗。必須從計算芯核(非I/O模塊)功耗開始。必需知道這一參數(shù),而其精確度為終值大約±30%,這樣才能計算出芯片的電源電流。
要分析芯片電源的I/O同時切換帶來的影響。人們大多關心輸出端,因為輸出端吸收大部分電流。大多數(shù)I/O庫供應商都對I/O進行全面的特性描述,并在設計中同時切換的焊接區(qū)的數(shù)量給定的情況下,推薦應該具備的電源焊接區(qū)和接地焊接區(qū)的比率。在為布局規(guī)劃圖生成電源網(wǎng)時,應該考慮到即使將功耗均勻分布于整個芯片,并從模塊級別來考察它,IR壓降仍然會因連線很長而在芯片中心部位產(chǎn)生更加不利的情況。
因此,電源網(wǎng)中有些連線傳送的電流比其它連線大,所以需要計算每根連線、每個接點和每個通孔的電流。電流過大時,太小的通孔就會像保險絲一樣熔斷。實際上,應該分析通孔陣列的IR、電流密度和電遷移。此外,還要記住芯片中心的IR壓降會導致安排在該部位的邏輯電路運行速度稍有下降。只要滿足工藝上電流密度極限,就可以避免電源網(wǎng)中的電遷移問題。硅片廠公布了這些極限,而諸如Synopsys公司提供的Astro-Rail等工具則可以估算整個電源網(wǎng)的電流密度,并突出所關心的區(qū)域。
為了達到給定的穩(wěn)定狀態(tài)和差情況下的功率下降,也為了把電流密度維持在可接受限度之內,就需要某一總寬度的金屬條來傳送功率。設計師在金屬條數(shù)量和金屬條間隔之間進行折衷,以便得到金屬條總寬度。設計師還必須考慮構建配電網(wǎng)絡中的其它問題。常見的問題就是,在設計過程的某一點上,金屬條末端的孔可能比工藝打孔尺寸更寬,從而導致傳導性比此前為其計算的結果更低。
由于電遷移,沿金屬顆粒邊緣(它們平行于電流方向)遷移的金屬原子產(chǎn)生很多失效。隨著金屬線寬度減小,平行于電流方向的顆粒邊緣也隨之減小。當線寬處于“竹區(qū)域”范圍內時,就幾乎沒有顆粒邊緣與電流方向平行,垂直的顆粒邊緣就使得金屬線的外表類似竹節(jié)。在出現(xiàn)電遷移失效之前,這些金屬線傳送的電流密度可能比更寬的金屬線大一個數(shù)量級。
電源線和接地線都為感應耦合效應建立了返回路徑;使用的電源線和接地線越多,要加以保護、使之免遭感應噪聲影響的信號線就越多。
圖3, 使諸如ARM946E-S等芯核固化,要求設計規(guī)劃過程具有極高的多功能性。你必須實現(xiàn)諸如電源引腳和信號引腳等特性,以便單片系統(tǒng)設計師能夠在不同場合使用這種核心。
硬IP的布局規(guī)劃和電源規(guī)劃具有一些有趣的特殊特性。例如,請考慮一下使用TSMC 0.13微米技術(圖3)來使ARM946E芯核固化。芯核固化涉及的步驟類似任何規(guī)劃流程中的那些步驟,但是考慮到各種設計使用該芯核的方法的改變,因此該規(guī)劃必須更加靈活。例如,在這里所描述的ARM芯核固化中,Synopsys Professional Services公司的設計小組制定了可以允許芯核旋轉90°的設計。
該設計小組在整個芯核上實現(xiàn)了一個電源網(wǎng)格,分別在的三層金屬層上每隔24、22和32微米布放了1.2、1和1.6微米金屬條。這個項目的布局規(guī)劃的難題之一是排列水平金屬條,以使其不影響標準單元的預布線。Perl腳本有助于該過程的自動化。旋轉芯核的若干規(guī)定提出了另一個布局規(guī)劃難題。該小組在第二層上復制了所有的電源引腳和信號引腳,并為連接芯核內的這兩層生成了合適的通孔陣列。因此,客戶能夠在任何方位使用該芯核,并且仍然使用優(yōu)選方向布線將其與信號引腳和電源引腳連接起來。
從一層的一組引腳開始,該設計小組建立了所需的兩組引腳。一個Perl腳本收集有關組引腳的信息,并復制出另一層上的引腳。另一個Perl腳本生成連接兩組引腳的通孔陣列。
無論芯核如何與網(wǎng)格對齊,所有的信號引腳都足夠寬,無需網(wǎng)格外的布線也可以在芯片級進行連接。該設計小組還生成了RAM,以便RAM中的供電環(huán)處在所選的適合布局規(guī)劃中RAM方位的層上,從而使得將RAM連接到電源網(wǎng)格更為容易。為了把信號完整性和電遷移問題減小到程度,他們使用雙倍寬度、雙倍間隔和雙倍通孔來對時鐘網(wǎng)進行布線。他們利用由Power Compiler公司插入的集成式時鐘門控單元建立了時鐘樹。只要在I/O引腳附近增加一個反向偏置二極管單元,所有連接至宏單元的邏輯輸入端和輸出端都能得到保護,不存在收集電荷的天線問題。