欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

布線方法和裝置的制作方法

文檔序號:6906028閱讀:523來源:國知局
專利名稱:布線方法和裝置的制作方法
技術(shù)領(lǐng)域
本發(fā)明致力于布線方法和裝置。
背景技術(shù)
集成電路(“IC”)是一種包含很多的電子元件(例如,晶體管、電阻、二極管等等)的器件。這些元件通常被相互連接以在該IC上形成多個電路元件(例如,電子開關(guān)、電池、存儲單元、運(yùn)算單元、控制器、解碼器等等)。IC的電子和電路元件在下面被共同地稱為“元件”。
一個IC也包含相互連接其電子和電路元件的多層線路(“線路層”)。例如,很多的IC目前由相互連接其電子和電路元件的金屬或者多晶硅線路層(在下面總起來說被稱為“金屬層”)制造。一種通常的制造模式使用五個金屬層。理論上,在金屬層上的線路可以是所有角度的線路(即,該線路可以是以任何適宜的方向)。上述的所有角度線路通常被稱為歐幾里得線路(Euclidean wiring)。但是,實(shí)際上,每個金屬層典型地具有一個優(yōu)選的線路方向,并且該優(yōu)選的方向在相繼的金屬層之間交替。很多的IC使用該曼哈頓線路(Manhattan wiring)模式,其規(guī)定優(yōu)選方向水平和垂直布線的優(yōu)選交互層。在這個線路模式中,大多數(shù)線路只能進(jìn)行90°轉(zhuǎn)向。但是,在該優(yōu)選的水平和垂直層上偶爾對角線結(jié)合往往也是允許的。
設(shè)計(jì)工程師通過轉(zhuǎn)換IC的線路描述為幾何描述(稱作線路圖)設(shè)計(jì)IC。為了生成線路圖,設(shè)計(jì)工程師典型地使用電子設(shè)計(jì)自動化(“EDA”)應(yīng)用軟件。這些應(yīng)用軟件提供基于計(jì)算機(jī)的工具組,用于生成、編輯以及分析IC設(shè)計(jì)線路圖。
EDA應(yīng)用軟件通過使用在IC上表示不同的材料和器件的幾何形狀生成線路圖。例如,EDA工具通常使用長方形輪廓線去表示相互連接該IC元件的線。這些工具也以具有變化的形狀和尺寸的幾何物體的方式表示電子和電路IC元件。為了簡化該論述起見,在這個文獻(xiàn)中這些幾何形物體被顯示為矩形方塊。
此外,在這個文獻(xiàn)中,該短語“電路模塊”指的是由一個EDA應(yīng)用軟件合成的電子或電路IC的幾何表示。EDA應(yīng)用軟件典型地舉例說明在其側(cè)面上帶有引腳的電路模塊。這些引腳與該相互連接線連接。
一個網(wǎng)絡(luò)被典型地解釋為需要被電連接的引腳集合。在一個線路圖中該網(wǎng)絡(luò)的全部或者一些的列被稱為一個網(wǎng)絡(luò)列表。換句話說,一個網(wǎng)絡(luò)列表規(guī)定了一組網(wǎng)絡(luò),其隨后規(guī)定在一組引腳之間的相互連接。


圖1舉例說明一個IC布置100的例子。這個布置圖包括帶有引腳130-160的五個電路模塊105、110、115、120以及125。四個相互連接線165-180經(jīng)由其引腳連接這些模塊。此外,三個網(wǎng)指定在該引腳之間的相互連接。具體地說,引腳135、145和160界定一個三個引腳的網(wǎng)絡(luò),同時引腳130和155,以及引腳140和150分別界定兩個二引腳的網(wǎng)。如圖1所示,一個電路模塊(諸如105)可以在多個網(wǎng)上具有多個引腳。
該IC設(shè)計(jì)過程必然伴有各種各樣的操作。EDA應(yīng)用軟件通常執(zhí)行以獲得該IC布置圖的一些物理設(shè)計(jì)操作是(1)電路分割,如果該電路對于單個芯片太大,其分割一個電路;(2)基底規(guī)劃,其找到該電路模塊的排列和相對方位;(3)布置,其更精確地地確定該電路模塊的位置;(4)布線,其完成在該電路模塊之間的相互連接;(5)壓縮,其壓縮該布置圖以降低總的IC面積;和(6)驗(yàn)證,其查驗(yàn)該布置圖以確保滿足設(shè)計(jì)和功能要求。
布線是一種在結(jié)構(gòu)設(shè)計(jì)周期中的關(guān)鍵操作。其通常劃分為兩個階段總體布線和詳細(xì)的布線。對于每個網(wǎng)絡(luò),總體布線產(chǎn)生一個“松散的”路線(也稱作路徑或者布線區(qū)),其用于連接該網(wǎng)絡(luò)引腳的相互連接線。整體路線的該“松散”取決于使用的特定的整體布線程序。在已經(jīng)生成整體的路線之后,該詳細(xì)的布線生成用于每個網(wǎng)絡(luò)特殊的專用布線選擇路徑。
雖然一些商用的通用布線程序現(xiàn)在可能允許一個臨時的對角線接合,當(dāng)它們指定該相互連接線的布線幾何形狀的時候,這些布線程序通常不能不斷地探測對角布線選擇路徑。反過來,這增加了在該布置圖中需要連接該網(wǎng)總的布線長度(即,相互連接線的總長度)。因此,存在一種對考慮對角的布線選擇路徑的布線方法和裝置的需要。
發(fā)明概述本發(fā)明致力于布線方法和裝置。一些實(shí)施例提供了一種使用對角路線的布線方法。這個方法在一個電路布線區(qū)域內(nèi)布置若干網(wǎng)絡(luò)的路線。在該區(qū)域中每個網(wǎng)絡(luò)包括一組引腳。該方法最初分割該區(qū)域?yàn)槿舾蓚€子區(qū)域。對于在該區(qū)域中每個特定的網(wǎng)絡(luò),該方法然后標(biāo)識一個連接該子區(qū)域的路線,該子區(qū)域包含一個來自該特定網(wǎng)絡(luò)的引腳組的引腳。一些標(biāo)識的路線具有至少部分是對角邊。
附圖的簡要說明本發(fā)明新穎的特點(diǎn)在所附的權(quán)利要求中闡明。但是,為了解釋的目的,在下面的附圖中闡明了本發(fā)明若干的實(shí)施例。
圖1舉例說明一個IC布置的例子。
圖2舉例說明一個利用水平、垂直和45°對角相互連接線的IC布置。
圖3舉例說明一種實(shí)現(xiàn)一個八邊形的布線模式的方式。
圖4給出由本發(fā)明的一些實(shí)施例實(shí)施的遞歸布線過程概念上的說明。
圖5舉例說明一個已經(jīng)分解為16個子區(qū)域的IC布置的結(jié)構(gòu)區(qū)域。
圖6-8舉例說明用于在圖5舉例說明的網(wǎng)絡(luò)的3個斯坦納(Steiner)樹。
圖9舉例說明兩個稠密網(wǎng)格。
圖10舉例說明由圖9的稠密網(wǎng)格界定的邊。
圖11示出稍微較小的圖10對角邊。
圖12舉例說明越過圖10的邊的配線路徑。
圖13舉例說明一個由一些實(shí)施例使用的分割網(wǎng)格。
圖14舉例說明越過由圖13的網(wǎng)格產(chǎn)生的邊界定的曼哈頓和對角路徑。
圖15舉例說明分解圖13的網(wǎng)格的每個稠密網(wǎng)格槽為4槽的一長度網(wǎng)格,同時圖16舉例說明分解這些子槽的每一個為16槽的一長度網(wǎng)格。
圖17舉例說明在每個稠密曲線圖子槽中分割圖15生成用于在該生成的4個槽之間布線的6個路徑,同時圖18舉例說明分割圖16生成用于在每個稠密曲線圖子槽的生成的16個槽之間布線的42個路徑。
圖19舉例說明一個用于適應(yīng)性地選擇布線模式和該稠密和/或分割網(wǎng)格的過程。
圖20和21舉例說明如何計(jì)算一個連接兩個樹的節(jié)點(diǎn)的相互連接線的長度的一些實(shí)施例。
圖22舉例說明一個相對于分割網(wǎng)格對于每個可能的網(wǎng)絡(luò)配置構(gòu)成一個或多個最佳斯坦納樹的過程,并且存儲該樹和其屬性。
圖23用插圖舉例說明對于通過4乘4個分割網(wǎng)格生成的16個槽的16個樹節(jié)點(diǎn)。
圖24舉例說明一個用于標(biāo)識可能的斯坦納節(jié)點(diǎn)的過程。
圖25A和25B舉例說明一個用于構(gòu)成一個或多個最小生成樹(MST)并且計(jì)算具有兩個或更多節(jié)點(diǎn)的節(jié)點(diǎn)配置的每個MST的長度的過程。
圖26舉例說明一個計(jì)算布線路徑信息和路徑使用概率的過程。
圖27和28分別舉例說明對于圖6-8的斯坦納樹的路徑使用計(jì)數(shù)和路徑使用概率的例子。
圖29舉例說明一種用于存儲適用于網(wǎng)絡(luò)配置組。的斯坦納樹路線的壓縮技術(shù)。
圖30和31舉例說明一種用于分組節(jié)點(diǎn)配置的方法。
圖32舉例說明一種用于分類存儲的樹的二進(jìn)制搜索樹(“BST”)。
圖33舉例說明一個用于橫貫該BST去確定是否一個樹是先前存儲在該存儲器結(jié)構(gòu)中的過程。
圖34舉例說明一個用于多個布線模式的預(yù)制路線和路線屬性的過程。
圖35A和圖35B舉例說明關(guān)閉和開放節(jié)點(diǎn)配置的例子。
圖36舉例說明一個預(yù)制最小化關(guān)閉樹的過程。
圖37舉例說明一個對于開放節(jié)點(diǎn)配置預(yù)制相關(guān)的不具有天線節(jié)點(diǎn)的關(guān)閉節(jié)點(diǎn)配置的過程。
圖38舉例說明當(dāng)該路線和關(guān)閉節(jié)點(diǎn)配置被按照圖36和37的過程預(yù)制的時候,標(biāo)識用于網(wǎng)絡(luò)一個或多個斯坦納樹路線的過程。
圖39舉例說明本發(fā)明一些實(shí)施例的布線程序的軟件結(jié)構(gòu)。
圖40舉例說明一個被遞歸地劃分為16個子區(qū)域組的設(shè)計(jì)區(qū)域。
圖41舉例說明一個網(wǎng)絡(luò)列表的數(shù)據(jù)結(jié)構(gòu)。
圖42舉例說明一個dbNet數(shù)據(jù)結(jié)構(gòu)。
圖43舉例說明一個簡單的引腳數(shù)據(jù)結(jié)構(gòu)。
圖44舉例說明一個路徑數(shù)據(jù)結(jié)構(gòu)。
圖45舉例說明一個槽-網(wǎng)絡(luò)數(shù)據(jù)結(jié)構(gòu)。
圖46給出一個圖表,其概念地舉例說明由布線程序界定的槽的分層結(jié)構(gòu)。
圖47給出一個槽數(shù)據(jù)結(jié)構(gòu)。
圖48舉例說明一個電路模塊數(shù)據(jù)結(jié)構(gòu)。
圖49-51舉例說明一個由圖39的布線程序初始化程序執(zhí)行的過程。
圖52舉例說明一個由圖39的布線程序的槽管理器執(zhí)行的過程。
圖53舉例說明一個由圖39的布線程序的求解程序執(zhí)行的過程。
圖54和55舉例說明一種用于推算該路徑稠密的方式。
圖56舉例說明用于標(biāo)識每個網(wǎng)絡(luò)配置路線以及通過給該網(wǎng)絡(luò)配置增加偽引腳產(chǎn)生改道幾率的過程。
圖57和58提供如何通過增加一個或者兩個偽引腳配置產(chǎn)生次最佳改道路線的例子。
圖59舉例說明另一個用于標(biāo)識網(wǎng)絡(luò)配置附加路線的方法。
圖60舉例說明一個標(biāo)識網(wǎng)絡(luò)配置附加路線的過程。
圖61舉例說明用于在當(dāng)前槽的子槽之間的水平或者垂直路徑向下傳播(propagate)該子槽的槽的過程。
圖62和63舉例說明用于模擬45°對角路徑傳播進(jìn)入下層子槽的兩種不同的方式。
圖64舉例說明一個依據(jù)三個元件成本用于計(jì)算每個路線成本的過程。
圖65舉例說明一個路徑傳播概率的例子。
圖66和67給出兩個例子,其概念地舉例說明一種計(jì)數(shù)路徑數(shù)目的方式。
圖68-70舉例說明其合作去計(jì)算在一個路線中路徑數(shù)目的三個過程。
圖71和72舉例說明在該Gcell層上對共享限制條件的需要。
圖73舉例說明一個對角線對限制條件。
圖74舉例說明一個混合的三重的限制條件。
圖75舉例說明一個對角三重的限制條件。
圖76舉例說明一個在一些實(shí)施例中ILP傳播程序執(zhí)行的過程。
圖77和78舉例說明一種估算傳播有效性的方式。
圖79和80舉例說明一種計(jì)算傳播和計(jì)算該傳播成本的方式。
圖81舉例說明一個當(dāng)該當(dāng)前槽低于上層槽但是高于葉層槽(leaflevel)的時候,用于執(zhí)行當(dāng)前槽隨后的傳播的過程。
圖82舉例說明一個從傳送的隨后路徑目錄的路徑。
圖83舉例說明一個在一些實(shí)施例中使用的順序傳播過程。
圖84給出一個用于實(shí)施本發(fā)明一些實(shí)施例的計(jì)算機(jī)系統(tǒng)。
本發(fā)明的詳細(xì)說明本發(fā)明致力于布線方法和裝置。在下面的描述中,為了解釋的目的闡明了許多的細(xì)節(jié)。但是,本領(lǐng)域的普通的技術(shù)人員將認(rèn)識到,無需使用這些細(xì)節(jié)可以實(shí)踐本發(fā)明。在其它的例子中,為了不會以不必要的細(xì)節(jié)模糊本發(fā)明的描述,公知的構(gòu)成和器件被以方框圖形式示出。
下面描述了本發(fā)明的布線方法和裝置的若干實(shí)施例。但是,在論述這些實(shí)施例之前,在部分I中描述了若干可以這些實(shí)施例使用的對角布線(diagonal wiring)結(jié)構(gòu)。
I.對角布線結(jié)構(gòu)本發(fā)明的不同的實(shí)施例可以以不同的線路模式使用。例如,一些實(shí)施例利用包括對角、水平和垂直相互連接線的線路模式使用。在下面的論述中,互連線也被稱為互連或者相互連接線。此外,如在這個文獻(xiàn)中使用的,如果相對于該布置邊除零或者九十度以外其形成一個角度,相互連接線是“對角的”。另一方面,如果其相對于該布局圖的一側(cè)形成0°或者90°的角度(例如,相對于該布局圖的寬形成一個0°或者90°的角度),一個相互連接線是“水平的”或者“垂直的”。
圖2舉例說明一個利用水平線、垂直線和45°對角相互連接線的IC布置200。在這個圖中,水平線205是平行(即,是處于0°)于X軸的線,其被規(guī)定為平行于該布置的寬210。該垂直線215平行于Y軸,其規(guī)定為平行于該布置的高度220。換句話說,該垂直相互連接線215垂直(即,是處于90°)于該IC布置的寬度。此外,一組對角線225相對于該IC布置的寬度為+45°,同時另一組對角線230相對于該IC布置的寬度為-45°。在這個文獻(xiàn)中,該措詞“八邊形布線模式”用于指示包括水平線、垂直線和45°對角相互連接線的布線模式。
圖3舉例說明一種實(shí)現(xiàn)該八邊形的布線模式的方式。在這個圖中舉例說明的該布線模式使用每層具有一個優(yōu)選的布線方向的概念。具體地說,圖3舉例說明了五個布線層,并且每個層具有其自己優(yōu)選的方向。前三層305-315是曼哈頓(Manhattan)層。換句話說,在這些層中相互連接線優(yōu)選的方向或者是水平方向或者是垂直方向。在這三個層中優(yōu)選的布線方向通常交替改變,使得沒有兩個連續(xù)的層具有相同的優(yōu)選布線方向。但是,在某種情況下,在連續(xù)層中該布線是在相同的方向上。
接下來的兩個層320和325是對角線層。在該對角線層中對于相互連接線優(yōu)選的方向是±45°。此外,如在最前三層中的方式,在第四和第五層中的布線方向通常是垂直的(即,一層是+45°并且另一層是-45°),雖然它們不必是這樣。
參考在圖3舉例說明的八邊形的布線模式在下面描述若干實(shí)施例。但是,一個本領(lǐng)域普通技術(shù)人員將理解,本發(fā)明可以任何一種布線模式使用。例如,本發(fā)明可以以具有精確的對角線(即,不具有水平線和垂直方向布線的布線結(jié)構(gòu))的布線結(jié)構(gòu)使用。
此外,一些實(shí)施例以非45°對角布線使用。例如,一些實(shí)施例被以利用水平線、垂直線和±120°對角相互連接線的布線模式使用。此外,一些實(shí)施例使用對于一些或者全部的布線層沒有規(guī)定優(yōu)選方向的布線模式。例如,一些實(shí)施例使用一個八邊形的布線模式,其允許存在于所有布線層之中的水平線、垂直線和45線。
II.概念上的流程圖4給出通過本發(fā)明的一些實(shí)施例執(zhí)行的遞歸布線(recursiverouting)過程概念上的說明。這個布線過程按層規(guī)定在一個IC布置的設(shè)計(jì)區(qū)域(也稱作一個槽)內(nèi)用于網(wǎng)絡(luò)的路線。這個區(qū)域可以是整個IC布置,或者這個布置的一部分。同樣地,該IC布置可以是一個用于整個集成電路芯片或者芯片的布置,或者其可以是一塊集成電路芯片(即,一部分)的布置。
該過程最初界定(在405)一個分割網(wǎng)格,其劃分該IC區(qū)域?yàn)槿舾勺訁^(qū)域。在下面的論述中,該分割的區(qū)域也被稱為當(dāng)前槽,并且由該分割產(chǎn)生的該子區(qū)域也被稱為當(dāng)前槽的子槽。
在一些實(shí)施例中,該分割網(wǎng)格是通過交叉切割線形成的。在這些實(shí)施例的一些中,該交叉分割線是N個水平線和M個垂直線,其劃分該IC區(qū)域?yàn)?N+1)(M+1)個子區(qū)域,這里N和M可以等于任何整數(shù)。例如,這些水平線和垂直線劃分該接收的IC區(qū)域?yàn)?1)當(dāng)N和M等于1的時候,四個子槽;(2)當(dāng)N和M等于2的時候,九個子槽;(3)當(dāng)N和M等于3的時候,十六個子槽;(4)當(dāng)N或者M(jìn)等于4以及另一個等于5的時候,二十個子槽。
圖5舉例說明一個設(shè)計(jì)區(qū)域500,其通過設(shè)置三個水平和垂直分割線組已經(jīng)劃分為十六個子區(qū)域(即,為子槽0-15)。這個圖也示出一個包括五個電路模塊510、515、520、525和530的網(wǎng)絡(luò)505,該五個電路模塊落入該十六個子區(qū)域的四個中。這四個子區(qū)域是槽0、1、7和8。
在該分割的區(qū)域內(nèi)(即,在該當(dāng)前槽內(nèi))的每個網(wǎng)絡(luò)在由該分割網(wǎng)格界定的子區(qū)域中具有一個或多個真實(shí)的或者虛擬的引腳。一個網(wǎng)絡(luò)的真實(shí)引腳是在該設(shè)計(jì)區(qū)域中電路模塊的引腳,但是該網(wǎng)絡(luò)的虛擬引腳是人造引腳,其被設(shè)置說明高層路線傳播到下層子槽之內(nèi)的傳播,如在下面進(jìn)一步描述的。對于每個網(wǎng)絡(luò),包含網(wǎng)絡(luò)真實(shí)或者虛擬引腳的子區(qū)域組表示相對于分割網(wǎng)格的該網(wǎng)絡(luò)的配置。
對于在該分割區(qū)域內(nèi)的每個特定的網(wǎng)絡(luò),該過程400使用(在410)網(wǎng)絡(luò)配置以標(biāo)識的該網(wǎng)絡(luò)一個或多個路線(也稱作布線圖或者連接圖)。網(wǎng)絡(luò)的每個路線提供一組連接子槽(即,子區(qū)域)的相互連接線,該子槽包含網(wǎng)絡(luò)的引腳。
為了模擬相對于網(wǎng)格的每個網(wǎng)絡(luò)配置,包含一個或多個網(wǎng)絡(luò)引腳的每個子槽被當(dāng)做該布線圖的節(jié)點(diǎn)(也稱作頂點(diǎn)或者點(diǎn))。然后該圖的節(jié)點(diǎn)由邊(也稱作線)連接。按照一些實(shí)施例,該布線圖可以具有完全或者部分對角的邊。
不同的實(shí)施例使用不同類型的圖形去界定該相互連接路線。在下面描述的實(shí)施例中,樹(例如,斯坦納樹)被用作連接包含相關(guān)網(wǎng)絡(luò)引腳的子槽的該布線圖形。圖6-8舉例說明適合于在圖5中的網(wǎng)絡(luò)505的三個最佳的斯坦納樹605、705和805。這些斯坦納樹全部都具有相同的長度。這些樹(605)的一個具有一個斯坦納節(jié)點(diǎn)(620)。此外,這些樹的每一個至少具有一個部分對角邊。在這些例子中,該布線程序使用八邊形的布線模式,因此該對角邊相對于該布局圖邊是45度。
在開始過程400之前,一些實(shí)施例預(yù)先計(jì)算和在一個數(shù)據(jù)存儲器中存儲適合于子槽不同的結(jié)構(gòu)的路線。在運(yùn)行時間,在這些實(shí)施例中該布線程序通過(1)相對于分割網(wǎng)格標(biāo)識每個網(wǎng)絡(luò)的結(jié)構(gòu)標(biāo)識(在410)用于網(wǎng)絡(luò)的一些或者所有的路線,以及(2)從該數(shù)據(jù)存儲器取回(retrieving)用于標(biāo)識的結(jié)構(gòu)的路線。這樣的一種方法使該布線程序避免必須實(shí)時構(gòu)成用于每個網(wǎng)絡(luò)配置的路線。在下面的部分V中描述了這樣一種方法。
另一方面,其它的實(shí)施例在運(yùn)行時間使用網(wǎng)絡(luò)配置去產(chǎn)生路線。其它的實(shí)施例還使用網(wǎng)絡(luò)配置去取回和產(chǎn)生路線。例如,一些實(shí)施例在產(chǎn)生用于其他網(wǎng)絡(luò)的路線時使用網(wǎng)絡(luò)配置去取回對于一些網(wǎng)絡(luò)的預(yù)制路線。這樣的一種方法在下面的部分V中進(jìn)行描述。
在一些實(shí)施例中,該預(yù)制或者產(chǎn)生的路線是最佳布線。這些實(shí)施例的一些也使布線程序標(biāo)識在該布局中每個網(wǎng)絡(luò)配置的次最佳布線,以便增加每個網(wǎng)絡(luò)可能的解決方案的數(shù)目。在下面的部分VI中描述了這樣的一種方法。
對于每個網(wǎng)絡(luò),該過程400選擇(在415)為該網(wǎng)絡(luò)標(biāo)識的路線中的一個,作為在當(dāng)前的遞歸層上該網(wǎng)絡(luò)的路線。該過程選擇優(yōu)化一些目標(biāo)(諸如降低布線長度和稠密)的路線。當(dāng)當(dāng)前槽的子槽被分割以界定更小的子槽的時候,然后該過程400確定(在420)進(jìn)入更小子槽之內(nèi)的選擇路線的傳播。在這個階段,該過程還可能增加虛擬引腳給一些網(wǎng)絡(luò)以說明這樣的傳播。
最后,當(dāng)在405界定的子槽不是由上一次遞歸操作產(chǎn)生的槽的時候,該過程400對在405界定的每個子槽遞歸地重復(fù)。通過對于每個界定的子槽遞歸地重復(fù),該過程400會界定當(dāng)前區(qū)域中網(wǎng)絡(luò)的越來越詳細(xì)的路線。換句話說,這個遞歸過程400以分層的方式界定路線,其中當(dāng)遞歸分層的級別增加時該過程界定更詳細(xì)的路線。
在遞歸過程中一些實(shí)施例使用不同層的不同形狀的分割網(wǎng)格。但是,在下面描述的實(shí)施例對于所有的遞歸層使用相同形狀的分割網(wǎng)格。在每個遞歸層上,這些實(shí)施例僅僅調(diào)節(jié)該分割網(wǎng)格的坐標(biāo)以和在其遞歸層上的IC區(qū)域的坐標(biāo)匹配。對于所有的遞歸層使用相同形狀的分割網(wǎng)格具有若干優(yōu)點(diǎn)。例如,該過程可以再次使用對于遞歸過程各級的同一組的預(yù)制信息。
III.多個網(wǎng)格一些實(shí)施例除了該分割網(wǎng)格之外還使用一個或多個網(wǎng)格。
A.多個稠密網(wǎng)格一些實(shí)施例使用多個稠密網(wǎng)格作為用于量化分割網(wǎng)格界定的子區(qū)域之間布線路徑的能力和測量該稠密的概念性模式,該子區(qū)域是通過。圖9舉例說明兩個這樣的稠密網(wǎng)格。下面描述的一些實(shí)施例使用了結(jié)合在圖3舉例說明的八邊形的布線模式的這兩個網(wǎng)格。
在圖9中,該兩個網(wǎng)格是(1)網(wǎng)格905,其由3個水平線和3個垂直線形成,和(2)網(wǎng)格910,其由7個+45°對角線和7個-45°對角線形成。網(wǎng)格905用于規(guī)定水平和垂直布線選擇路徑的能力和測量其稠密,同時網(wǎng)格910用于規(guī)定對角布線選擇路徑的能力和測量稠密。
具體地說,如圖10所示,該網(wǎng)格905界定12個垂直邊(E0-E11)和12個水平邊(E12-E23),同時網(wǎng)格910界定9個-45°邊(E24,E26,E28,E30,E32,E34,E36,E38,E40)和9個+45°邊((E25,E27,E29,E31,E33,E35,E37,E39,E41)。在圖10中,示出的對角邊具有端點(diǎn),以便當(dāng)它們彼此鄰接時簡化這些邊的標(biāo)志。
如圖10所示,每個對角邊穿過在兩個子區(qū)域的中心之間的距離,兩個子區(qū)域由第一個網(wǎng)格界定,而且彼此為相對對角相鄰位置。換句話說,每個對角邊連接對角對齊的兩個子區(qū)域的中心,以使得它們僅在其它們角落的一個上鄰接。圖11示出稍微更小的對角邊,以便簡化這些邊的外部特征。
在一些實(shí)施例中,網(wǎng)格905和910也用于界定在分割區(qū)域的子槽之間的布線選擇路徑。具體地說,與網(wǎng)格905和910界定的每個邊相互垂直的布線選擇路徑是一個可以由布線樹使用以連接鄰接的槽(即,鄰接的子區(qū)域)。例如,圖12舉例說明越過圖10的42個邊的42個布線路徑。水平路徑P0-P11被界定為越過垂直邊E0-E11,垂直路徑P12-P23被界定為越過將與垂直布線路徑垂直交叉的水平邊E12-E23,+45°路徑P24、P26、P28、P30、P32、P34、P36、P38、P40被界定為越過-45°邊E24、E26、E28、E30、E32、E34、E36、E38、E40,以及-45°路徑P25、P27、P29、P31、P33、P35、P37、P39、P41被界定為越過+45°邊E25、E27、E29、E31、E33、E35、E37、E39、E41。
當(dāng)這兩組容量相糾纏時,可根據(jù)邊容量或者路徑容量表示和分析稠密問題。下面的過程根據(jù)路徑容量分析容量議題。但是,一個普通的技術(shù)人員將了解類似過程可用于依據(jù)邊容量分析容量議題。
如在下面進(jìn)一步描述的,一些實(shí)施例從路徑交叉的邊的長度導(dǎo)出每個路徑容量。例如,一些實(shí)施例通過將相應(yīng)的垂直邊(即,垂直于特定的路徑的邊的長度)的長度除以對應(yīng)于特定的路徑的金屬層的間距,計(jì)算每個特定的路徑的容量。一些實(shí)施例將線至金屬層的間距界定為線路至通路(via)的間距。一些實(shí)施例將線路至通路的間距作為在那個金屬層上的互連線路之間所需的最小化距離,加上該線路的1/2寬度,加上包括該金屬交疊的通路的1/2寬度。
在一些實(shí)施例中,該對角路徑的容量不同于該曼哈頓路徑的容量。這可能是由于垂直于對角和曼哈頓路徑的邊不同長度。還可能是由于對角線路的間距不同于該曼哈頓線路的間距。進(jìn)一步可能是由于一個層的間距不同于另一個層的間距。例如,在一些實(shí)施例中,當(dāng)該-45°金屬層的間距不同于該45°金屬層的間距的時候,-45°對角路徑的容量不同于該45°對角路徑的容量。
在圖9中,該網(wǎng)格905是與在圖5舉例說明的分割網(wǎng)格相同的。但是,一個普通的技術(shù)人員將理解,兩個稠密網(wǎng)格可能不同于該分割網(wǎng)格。此外,盡管圖9舉例說明用于一些實(shí)施例的兩個稠密網(wǎng)格905和910,一個普通的技術(shù)人員將理解,其它的多網(wǎng)格方案可以由其它的實(shí)施例使用。
一些實(shí)施例通常基于用于設(shè)計(jì)該設(shè)計(jì)布置和/或該IC的布線模式的布線方向的數(shù)目和布線層,以界定稠密網(wǎng)格的數(shù)量和結(jié)構(gòu)。例如,一些實(shí)施例使用一個允許在水平、垂直、+120°對角以及-120°對角方向布線的布線模式。對于上述的一個布線模式,可以使用兩個稠密網(wǎng)格。象網(wǎng)格905一樣,第一網(wǎng)格可以通過交叉水平和垂直線形成以便界定垂直與水平布線選擇路徑的容量并且測量垂直與水平布線選擇路徑的稠密。第二網(wǎng)格可用于界定±120°對角布線選擇路徑的容量并且測量±120°對角布線選擇路徑的稠密。除了該第二網(wǎng)格的軸線相對于第一網(wǎng)格的軸線旋轉(zhuǎn)120°之外,該第二網(wǎng)格可以與第一網(wǎng)格類似。換句話說,這個第二網(wǎng)格可以通過一定數(shù)量相交的±30°線路形成。
B.稠密和長度網(wǎng)格一些實(shí)施例使用(1)第一網(wǎng)格去分割一個IC區(qū)域并且測量在這個區(qū)域中的稠密,以及(2)一個第二網(wǎng)格去測量在該區(qū)域中的成本的線長度。圖13-18舉例說明若干上述的實(shí)施例。這些實(shí)施例使用包括水平、垂直和±45°互連線的布線模式。一個普通的技術(shù)人員將理解,其它的實(shí)施例使用其它的布線模式(諸如一種使用±120°線路)。
圖13舉例說明第一網(wǎng)格1305,一些實(shí)施例使用其去分割一個IC區(qū)域?yàn)?6個子區(qū)域。這個網(wǎng)格還界定24個邊E0-E23,用于測量在該區(qū)域中曼哈頓和非曼哈頓互連線的稠密。如圖14所示,24個曼哈頓路徑P0-P23和48個對角路徑P24-P71被界定為跨越這些24個邊E0-E23。每個路徑表示跨越該路徑相應(yīng)邊的該路徑的方向中一個或多個布線的軌跡。
垂直邊E0-E11用于測量在水平路徑P0-P11的方向和±45°對角路徑P24-P29,P38-P43,P52-P57以及P66-P71跨越這些垂直邊的布線稠密(即,互連線的)。類似地,水平邊E12-E23用于測量沿著垂直路徑P12-P23和±45°對角路徑P30-P37,P44-P51,以及P58-P65的方向跨越這些水平邊布線稠密。
一些實(shí)施例依據(jù)該路徑P0-P71界定每個路徑。路徑P0-P71還用于測量在該IC區(qū)域中的稠密。在一些實(shí)施例中,沿著對角路徑P24-P71的容量小于沿著曼哈頓路徑P0-P23的容量。例如,一些實(shí)施例規(guī)定(1)每個曼哈頓路徑表示在最低層子槽(即,在Gcell層上)的8個布線軌跡,以及(2)當(dāng)該對角和曼哈頓層具有相同的間距的時候,每個對角路徑表示在該Gcell層的5個布線軌跡。當(dāng)對角路徑層的間距大于曼哈頓路徑層的間距的時候,一些實(shí)施例規(guī)定用于小于在該Gcell層的對角路徑的5個軌跡。
如上所述,一些實(shí)施例使用第二網(wǎng)格去測量在該區(qū)域中布線成本的線長度。這個長度網(wǎng)格分解每個稠密網(wǎng)格子槽為更小的槽。例如,圖15舉例說明一個長度網(wǎng)格,其分解網(wǎng)格1305的16個稠密網(wǎng)格子槽的每個為4個槽,同時圖16舉例說明一個長度網(wǎng)格,其分解網(wǎng)格1305的16個稠密網(wǎng)格子槽的每個為16個槽。其它的實(shí)施例使用其它的類型的網(wǎng)格(例如,一個3×5網(wǎng)格)以分解該稠密網(wǎng)格子槽。
圖17舉例說明圖15的2×2分割界定在每個稠密圖形子槽中生成的4個槽之間布線的6個路徑,同時圖18舉例說明圖16的4×4分割界定在每個稠密圖形子槽生成的16個槽之間布線的42個路徑。此外,每個類型的分割界定在相鄰稠密網(wǎng)格子槽的長度網(wǎng)格槽之間的若干路徑。這些路徑將進(jìn)一步在下面進(jìn)行描述。
通過標(biāo)識一個或多個橫貫該長度網(wǎng)格路徑以連接所有網(wǎng)絡(luò)引腳的線段,該長度網(wǎng)格可用于估算成本的每個網(wǎng)絡(luò)布線的接線長度成本。換句話說,對于網(wǎng)絡(luò)布線,估算的接線長度成本是一組長度網(wǎng)格路徑的長度,該長度網(wǎng)格路徑(1)連接包含該網(wǎng)絡(luò)引腳的長度網(wǎng)格槽,(2)在與由該網(wǎng)絡(luò)布線使用的該稠密圖形路徑相同的方向上橫躍相同的稠密圖形邊。一組長度網(wǎng)格路徑的接線長度成本包括連接含有網(wǎng)絡(luò)引腳的長度網(wǎng)格槽的內(nèi)部路徑(即,在稠密網(wǎng)格槽內(nèi)的長度網(wǎng)格路徑)成本,加上橫貫外來稠密圖形邊的外圍長度網(wǎng)格路徑成本。
在一些實(shí)施例中,傳播一個稠密網(wǎng)格路徑到外圍長度網(wǎng)格路徑(即,一個在稠密網(wǎng)格槽之間的長度網(wǎng)格路徑)可能需要在相對于長度網(wǎng)格的該網(wǎng)絡(luò)引腳配置中設(shè)置虛擬引腳。因此,該內(nèi)部長度網(wǎng)格路徑連接包含該網(wǎng)絡(luò)真實(shí)的或者虛擬引腳的該長度網(wǎng)格槽。同樣,如上所述,該外圍長度網(wǎng)格路徑(即,跨越稠密圖形邊的該長度網(wǎng)格路徑)在與網(wǎng)絡(luò)路徑使用的該稠密圖形路徑同一方向上跨越該稠密圖形邊。
圖17和18舉例說明在對角相鄰的稠密網(wǎng)格子槽的長度網(wǎng)格槽之間的對角長度網(wǎng)格路徑。在這些圖中,上述的對角長度網(wǎng)格路徑以虛線環(huán)繞。一些實(shí)施例界定上述的對角長度網(wǎng)格路徑,同時其它的不界定。
此外,一些在對角相鄰的稠密網(wǎng)格子槽之間具有對角長度網(wǎng)格路徑的實(shí)施例使用特定協(xié)定以使這些對角長度網(wǎng)格路徑與對角稠密圖形路徑相關(guān)聯(lián)。在一些實(shí)施例中,上述的-45°長度網(wǎng)格路徑或者連接至其相應(yīng)的底端和左稠密圖形路徑,或者連接至其相應(yīng)的頂端和右稠密圖形路徑。例如,當(dāng)在稠密圖形子槽9和12之間使用-45°長度網(wǎng)格路徑的時候,一些實(shí)施例使路徑53和59的路徑使用增加1,同時其它的實(shí)施例使路徑61和67的路徑使用增加1。(路徑53、59、61和67在圖14中舉例說明)。
類似地,一些實(shí)施例將+45°長度網(wǎng)格路徑或者連接至其相應(yīng)的底端和右稠密圖形路徑,或者連接至其相應(yīng)的頂端和左稠密圖形路徑。例如,當(dāng)在稠密圖形子槽8和13之間使用一個+45°長度網(wǎng)格路徑的時候,一些實(shí)施例將路徑58和66的路徑使用增加1,同時其它的實(shí)施例將路徑52和60的路徑使用增加1。(路徑52、58、60和66在圖14中舉例說明)。
或者,一些實(shí)施例將對角相鄰的稠密網(wǎng)格子槽之間的對角長度網(wǎng)格路徑連接至四個周圍稠密圖形路徑的唯一一個,并且分配一個附加的軌跡給這個稠密圖形路徑的容量。一些實(shí)施例連接一個-45°長度網(wǎng)格路徑至其相應(yīng)的左稠密圖形路徑,并且連接+45°長度網(wǎng)格路徑至其相應(yīng)的右稠密圖形路徑。在這個方法之下,一些實(shí)施例將在稠密圖形子槽9和12之間的-45°長度網(wǎng)格路徑與路徑59相關(guān)聯(lián),并且分配容量6給Gcell層的路徑59,同時分配一個容量5給路徑53。
然而其它的實(shí)施例并不將在稠密圖形子槽之間的對角長度網(wǎng)格路徑與對角稠密圖形路徑P0-P71相關(guān)聯(lián)。代之以,這些實(shí)施例界定18對對角相鄰的稠密圖形槽之間的18個附加的對角稠密圖形路徑。這18個附加的稠密路徑的每一個對應(yīng)于一個特定的長度網(wǎng)格路徑。同樣,在該Gcell層,一些實(shí)施例界定這18個附加的路徑的每一個為1軌跡寬。
不同的實(shí)施例使用不同的稠密和長度網(wǎng)格。例如,一些實(shí)施例基于相對于該稠密網(wǎng)格1305的網(wǎng)絡(luò)配置標(biāo)識布線,以及然后使用長度和稠密網(wǎng)格以計(jì)算該標(biāo)識布線的接線長度和稠密成本。其它的實(shí)施例經(jīng)由長度網(wǎng)格連續(xù)地展開網(wǎng)絡(luò)布線。對于每個展開或者可能的展開而言,這些實(shí)施例使用長度網(wǎng)格去消耗該展開或者可能的展開。如果該展開或者可能的展開橫貫稠密網(wǎng)格邊的一個,這些實(shí)施例把用于稠密網(wǎng)格的稠密成本化為因子。同樣,如上所述,一些實(shí)施例最終依據(jù)跨越稠密網(wǎng)格界定的路徑P0-P71界定每個的路徑,而其它實(shí)施例并非如此。
IV.布線模式的適應(yīng)性選擇一些實(shí)施例基于該設(shè)計(jì)區(qū)域(即,被設(shè)計(jì)的區(qū)域)的寬高比(高度對于寬度的比值)適應(yīng)性地選擇其布線模式。圖19舉例說明一個用于進(jìn)行這樣一個適應(yīng)性選擇的過程1900。通常該過程在過程400的405界定該分割網(wǎng)格之前實(shí)施。在一些實(shí)施例中,設(shè)計(jì)者手動地實(shí)施這個過程的一些或者所有的操作,而在其它的實(shí)施例中,布線程序以自動方式實(shí)施這個過程的一些或者所有的操作。
這個過程最初標(biāo)識(在1905上)設(shè)計(jì)區(qū)域的寬高比。為了標(biāo)識該寬高比,該過程基于設(shè)計(jì)區(qū)域的尺寸可計(jì)算這個比值,或者其可以取回對于該設(shè)計(jì)模塊預(yù)先作成列表的寬高比。該過程然后基于該標(biāo)識的寬高比選擇(在1910上)一個布線模式。在一些實(shí)施例中,然后過程1900適應(yīng)性地選擇(在1915)分割和/或稠密網(wǎng)格。在一些實(shí)施例中,基于該布線模式,該過程適應(yīng)性地選擇分割和/或稠密網(wǎng)格。
適應(yīng)性地選擇布線模式允許為實(shí)現(xiàn)一些設(shè)計(jì)目標(biāo)(例如,將接線長度和稠密減到最小)而布線設(shè)計(jì)區(qū)域。例如,當(dāng)設(shè)計(jì)一具有比較大寬高比(即,一個高和小的電路模塊)的電路模塊的時候,一些實(shí)施例適應(yīng)性地選擇一個布線模式,其允許在水平、垂直、±120°對角方向上布線,因?yàn)檫@樣的布線模式使用于布線上述的電路模塊的接線長度和稠密得以降低。對于這樣的布線模式,一些實(shí)施例使用如上所述的由相交的水平和垂直線形成的第一稠密網(wǎng)格(類似圖9的網(wǎng)格905)和由相交±30°線路形成的第二稠密網(wǎng)格。
同樣,對于這樣的布線模式和IC區(qū)域,一些實(shí)施例使用一個將IC區(qū)域劃分為具有很大寬高比的較小區(qū)域的分割網(wǎng)格。在一些這樣的實(shí)施例中,對角相鄰的分割區(qū)域使它們的中心彼此偏移120°,以便它們的中心可以由120°對角線連接。
很多其它的布線模式可以用于具有大寬高比的設(shè)計(jì)模塊。例如,另一布線模式允許在水平、垂直、±45°對角和±120°對角方向布線。對于這樣的一種布線模式,一些實(shí)施例可以使用以下三個稠密網(wǎng)格(1)用于水平和垂直路徑并且由相交水平和垂直線形成(類似圖9的網(wǎng)格905)的第一網(wǎng)格;(2)用于±120°路徑而且由相交的±30°線路形成的第二網(wǎng)格;和(3)用于±45°路徑而且由相交±45°對角線路形成的的第三網(wǎng)格。
類似地,很多的布線模式可用于一具有小寬高比(即,一個短和寬的模塊)的設(shè)計(jì)模塊。例如,一些實(shí)施例可適應(yīng)性地為這樣的模塊選擇允許在水平、垂直、±30°對角方向上布線的布線模式。對于這樣的一種布線模式,一些實(shí)施例可以使用以下兩個稠密網(wǎng)格(1)用于水平和垂直路徑而且是通過相交水平和垂直線形成的(類似圖9的網(wǎng)格905)的第一網(wǎng)格;(2)用于±30°對角路徑而且是由相交±120°線路形成的第二網(wǎng)格。
對于這樣的布線模式和稠密網(wǎng)格,一些實(shí)施例使用一個將IC區(qū)域劃分為具有小寬高比的較小區(qū)域的分割網(wǎng)格。在一些這樣的實(shí)施例中,對角相鄰的分割區(qū)域使它們的中心彼此偏移30°,以使它們的中心可通過30°對角線路連接。
另一種用于這樣的模塊的布線模式允許在水平、垂直、±45°對角和±30°對角方向布線。對于這樣的一種布線模式,一些實(shí)施例使用以下三個稠密網(wǎng)格(1)用于水平和垂直路徑而且是通過相交的水平和垂直線形成的(類似圖9的網(wǎng)格905)的第一網(wǎng)格;(2)用于±30°對角路徑而且是由相交的±120°線路形成的第二網(wǎng)格;和(3)用于±45°對角路徑而且是由相交的±45°線路形成的(類似圖9的網(wǎng)格910)第三網(wǎng)格。
當(dāng)該設(shè)計(jì)模塊是正方形的時候,一些實(shí)施例可以選擇非常對稱的布線模式,如上述參考圖3討論到的五層八邊形的布線模式。但是,在這種情況下,其它的實(shí)施例可以選擇更復(fù)雜的布線模式。例如,一些實(shí)施例可以選擇九層布線模式,其包括在圖3舉例說明的最初五層加上類似在圖3舉例說明的2-5層的另四層。用于這樣的布線模式的一組稠密網(wǎng)格可以包括用于2-5層的上述網(wǎng)格905和910,以及另外兩個類似于用于6-9層的網(wǎng)格905和910網(wǎng)格。
一些實(shí)施例可使用的另一復(fù)雜的對稱布線模式類似于如上所述的9層模式,除了在最后四層(即,6-9層)中的優(yōu)選方向已經(jīng)在相同的方向變化22.5°之外。這生成的布線模式將從任何給定點(diǎn)提供16個布線方向,其中每個布線路徑方向離其鄰近的布線路徑方向22.5°。用于這樣的布線模式的一組稠密網(wǎng)格可以包括上述用于1-5層的網(wǎng)格905和910,以及另外的兩個網(wǎng)格,其為用于6-9層的網(wǎng)格905和910的22.5°變化版。
V.預(yù)先制表布線選擇信息如上所述,一些實(shí)施例預(yù)先計(jì)算用于不同結(jié)構(gòu)的的子槽的布線并且將其存儲在一個存儲器結(jié)構(gòu)。在運(yùn)行時間,在這些實(shí)施例中布線程序通過以下標(biāo)識用于網(wǎng)絡(luò)的一些或者所有的路線,(1)相對于分割網(wǎng)格標(biāo)識每個網(wǎng)絡(luò)的結(jié)構(gòu),和(2)從該存儲器結(jié)構(gòu)取回用于標(biāo)識的結(jié)構(gòu)的布線。通過參考圖20-34下面描述了一種預(yù)先制表斯坦納樹布線的方式。
另一方面,其它的實(shí)施例使用網(wǎng)絡(luò)配置以實(shí)時產(chǎn)生布線。其它的實(shí)施例還使用網(wǎng)絡(luò)配置去取回和產(chǎn)生布線。例如,一些實(shí)施例使用網(wǎng)絡(luò)配置去取回用于一些網(wǎng)絡(luò)預(yù)先制表的布線,并且產(chǎn)生用于其它的網(wǎng)絡(luò)的布線。這樣的一種方法通過參考圖35-38描述如下。
A.預(yù)先制表斯坦納樹路徑圖20-34舉例說明一種預(yù)先制表斯坦納樹的方式,其相對于分割網(wǎng)格模擬可能的網(wǎng)絡(luò)配置。此外在下面進(jìn)行描述這些樹的預(yù)先制表的屬性。如上所述,布線程序在布線過程期間可以使用這樣的預(yù)先制表布線和/或?qū)傩浴?br> 其它的EDA應(yīng)用軟件也可以使用這些布線和/或?qū)傩?。例如,如?000年12月6日申請的美國專利申請并且序列號為09/732,181,名稱為“遞歸分隔布局方法和裝置”中公開的,布局者可以使用預(yù)先制表的接線長度、路徑計(jì)數(shù)值,和/或路徑概率值去測量布局成本。
1.計(jì)算連接兩個樹的節(jié)點(diǎn)的互連線的長度圖20和21舉例說明一些實(shí)施例如何計(jì)算一連接兩個樹的節(jié)點(diǎn)的互連線的長度。這些實(shí)施例通過把該兩個節(jié)點(diǎn)視為邊界框相對角來執(zhí)行這些操作,該邊界框具有一長邊(L)和一短邊(S)。
圖20呈現(xiàn)一個用于兩個節(jié)點(diǎn)2035和2040的邊界框2005的例子。如這個圖所示,對于利用水平、垂直和對角互連線的布局而言,線條2010穿過節(jié)點(diǎn)2035和2040之間的最短距離。這個線路是部分對角的。具體地說,在這個例子中,這個線路的線段2020是對角線,而其它的線段2015是水平線。
下面的方程式(A)提供線路2010穿越的距離(即,在節(jié)點(diǎn)2035和2040之間的最短距離)。
距離=[L-{S(cosA/s inA)}]+S/sinA (A)在這個方程式中,“L”是該方框的長邊,在這個例子中其是沿著X軸的該方框的寬度2025,而“S”是該方框的短邊,在這個例子中其是沿著Y軸的其高度2030。此外,在這個方程式中,“A”是對角線線段2020相對于該邊界框的長邊生成的角度。在一些實(shí)施例中,這個角度A對應(yīng)于布局圖中一些對角互連線的方向。例如,在一些實(shí)施例中,當(dāng)該布局圖使用在圖3舉例說明的八邊形的布線模式的時候,角度A等于45°。
下面的方程式(B)-(D)舉例說明如何推導(dǎo)出方程式(A)。線2010的長度等于其兩個線段2015和2020長度的總和。方程式(B)提供水平線段2015的長度,而方程式(C)提供對角線段2020的長度。
2015的長度=L-(2020的長度)*(cosA) (B)2020的長度=S/sinA(C)下面方程式(B)和(C)可以被合并以獲得方程式(D),其簡化時提供上述的方程式(A)。
距離=2015的長度+2020的長度=L-S/sinA*(cosA)+S/sinA (D)當(dāng)該角度A等于45°的時候,方程式(A)簡化為下面的方程式(E)。
距離=L+S*(sqrt(2)-1) (E)當(dāng)該邊界框沒有寬度或者高度的時候,那么該邊界框僅僅是一條線,并且在這條線的相對角之間的最短距離由該方框的長邊(唯一的)提供,其將是一個水平線或者垂直線。當(dāng)該邊界框具有相等尺寸的高度和寬度(即,當(dāng)其是一個正方形時)的時候,該角度A是45°,一個完全對角的線規(guī)定在該方框的兩個對立新來者之間的最短距離。
圖21舉例說明過程2100,其標(biāo)識用于兩個樹的節(jié)點(diǎn)的邊界框,并且基于該邊界框的尺寸和方程式(A)計(jì)算一個連接兩個節(jié)點(diǎn)的互連線的長度。這個過程最初(在2105)確定第一節(jié)點(diǎn)的X坐標(biāo)(X1)是否大于第兩個節(jié)點(diǎn)的X坐標(biāo)(X2)。如果是這樣的話,該過程規(guī)定(在2110)第一節(jié)點(diǎn)的X坐標(biāo)(X1)作為最大X坐標(biāo)(XMax),并且規(guī)定第二節(jié)點(diǎn)的X坐標(biāo)(X2)作為最小X坐標(biāo)(XMin)。否則,該過程規(guī)定(在2115)第二節(jié)點(diǎn)的X坐標(biāo)(X2)作為最大X坐標(biāo)(XMax),并且第一節(jié)點(diǎn)的X坐標(biāo)(X1)作為最小X坐標(biāo)(XMin)。
接著,該過程確定(在2120)第一節(jié)點(diǎn)的Y坐標(biāo)(Y1)是否大于第二節(jié)點(diǎn)的Y坐標(biāo)(Y2)。如果是這樣的話,該過程規(guī)定(在2125)第一節(jié)點(diǎn)的Y坐標(biāo)(Y1)作為最大Y坐標(biāo)(YMax),并且第二節(jié)點(diǎn)的Y坐標(biāo)(Y2)作為最小Y坐標(biāo)(YMin)。否則,該過程規(guī)定(在2130)第二節(jié)點(diǎn)的Y坐標(biāo)(Y2)作為最大Y坐標(biāo)(YMax),并且第一節(jié)點(diǎn)的Y坐標(biāo)(Y1)作為最小Y坐標(biāo)(YMin)。
然后該過程規(guī)定(在2135)該邊界框的四個坐標(biāo),為(XMin,YMin),(XMin,YMax),(XMax,YMin),以及(XMax,YMax)。接著,該過程確定(在2140)該邊界框的寬度和高度。該過程(1)通過測量在該方框的最大和最小X坐標(biāo)之間的差值確定該寬度;和(2)通過測量在該方框的最大和最小Y坐標(biāo)之間的差值確定該高度。然后該過程確定(在2145)計(jì)算的寬度是否大于計(jì)算的高度。如果是,該過程規(guī)定(2150)該寬度作為長邊,并且該高度作為短邊。否則,該過程規(guī)定(在2155)該寬度作為短邊,并且該高度作為長邊。
在2150或者2155之后,然后該過程使用(在2160)上述的方程式(A)計(jì)算連接兩個節(jié)點(diǎn)最短的互連線的長度。然后該過程結(jié)束。
2.構(gòu)建用于所有可能的網(wǎng)絡(luò)配置的斯坦納樹和預(yù)先制表每個樹的長度以及布線路徑信息。
圖22舉例說明一個過程2200,(1)相對于一個分割網(wǎng)格構(gòu)成用于每一可能網(wǎng)絡(luò)配置的一個或多個最佳斯坦納樹;(2)在一個諸如查詢表(“LUT”)的存儲器結(jié)構(gòu)中存儲每個構(gòu)建的斯坦納樹的長度;(3)使用該網(wǎng)格中的每個布線路徑計(jì)算和存儲樹的概率;和(4)通過在該存儲器結(jié)構(gòu)中存儲每個樹的布線路徑存儲每個樹的特性。
在布線程序開始其工作之前執(zhí)行這個過程2200,使得該布線程序沒有必要實(shí)時構(gòu)成每個網(wǎng)絡(luò)配置的斯坦納樹。代之以,因?yàn)檫^程2200,布線程序僅需要(1)相對于分割網(wǎng)格以標(biāo)識每個網(wǎng)絡(luò)配置;和(2)取回存儲的用于標(biāo)識的結(jié)構(gòu)的屬性。
如圖22所示,過程2200最初通過為由特定的分割網(wǎng)格界定的每個子區(qū)域(也稱作槽)規(guī)定一個樹節(jié)點(diǎn)開始(在2205)。圖23用圖例舉例說明用于由4乘4分割網(wǎng)格生成的十六個槽的十六個樹節(jié)點(diǎn)2305。這些節(jié)點(diǎn)代表模擬所有網(wǎng)絡(luò)配置的互連拓?fù)浣Y(jié)構(gòu)的所有可能的樹節(jié)點(diǎn)。在圖23中,該標(biāo)識的節(jié)點(diǎn)放置在每個槽的中心。在其它的實(shí)施例中,該節(jié)點(diǎn)可以統(tǒng)一地界定在該槽中的其它的位置上(例如,可以統(tǒng)一地放置在該槽的一角上)。
接著,過程2200規(guī)定(在2210)可能的節(jié)點(diǎn)配置組N。當(dāng)分割網(wǎng)格規(guī)定Y個(例如,四個、九個、十六個、二十個等等)子區(qū)域的時候,組N包括2Y個節(jié)點(diǎn)配置。在規(guī)定可能的節(jié)點(diǎn)配置組N之后,過程2200從這個組中選擇(在2215)一個可能的節(jié)點(diǎn)配置。
然后,該過程對于在2215選擇的該節(jié)點(diǎn)配置構(gòu)成(在2220)一個或多個最小生成樹(“MST”),并且計(jì)算每個構(gòu)成的樹的長度(MST_Cost)。如在下面進(jìn)一步進(jìn)行描述的,每個構(gòu)成的MST可以具有完全或者部分對角的邊。小于兩個節(jié)點(diǎn)的節(jié)點(diǎn)配置不具有MST,并且相應(yīng)地其MST_Cost是零。此外,圖25A舉例說明過程2500,該過程構(gòu)成一個或多個MST并且計(jì)算具有兩個或更多節(jié)點(diǎn)的節(jié)點(diǎn)配置的各MST的長度。下面將進(jìn)一步描述這個過程2500。
在2220之后,過程2200標(biāo)識(在2225)可能的斯坦納節(jié)點(diǎn),然后規(guī)定(在2230)所有可能的斯坦納節(jié)點(diǎn)組。通過參考圖24下面將解釋一種標(biāo)識可能的斯坦納節(jié)點(diǎn)的方式。在2230規(guī)定的每個斯坦納節(jié)點(diǎn)組包括一個或多個在2225標(biāo)識的斯坦納節(jié)點(diǎn)。同樣,每個規(guī)定的斯坦納節(jié)點(diǎn)組具有一個最大尺寸,其較在選擇的節(jié)點(diǎn)配置中的節(jié)點(diǎn)數(shù)目少兩個節(jié)點(diǎn)。
對于在2230標(biāo)識的每一斯坦納節(jié)點(diǎn)組,然后過程(在2240)(1)構(gòu)建選擇的節(jié)點(diǎn)配置和選擇的斯坦納節(jié)點(diǎn)組中的節(jié)點(diǎn)的一個或多個MST;和(2)計(jì)算和存儲每個MST的長度(MST_Cost)。每個構(gòu)成的MST可以使用完全的或者部分的對角邊。如上所述,小于兩個節(jié)點(diǎn)的節(jié)點(diǎn)配置不具有MST,并且相應(yīng)地MST_Cost是零。此外,圖25A舉例說明過程2500,其構(gòu)成一個或多個MST并且計(jì)算具有兩個或更多節(jié)點(diǎn)的節(jié)點(diǎn)配置的各MST長度。下面將進(jìn)一步描述這個過程2500。
接著,過程2200選擇(在2240)在2220或者2235產(chǎn)生的最短的MST組作為當(dāng)前節(jié)點(diǎn)配置的最佳斯坦納樹。在其它的實(shí)施例中,這個過程使用其它的標(biāo)準(zhǔn)去選擇其斯坦納樹組。在2240,該過程也在存儲器結(jié)構(gòu)(諸如一個LUT)中存儲該斯坦納樹或者在2240標(biāo)識的樹的長度(MST_Cost)。
在2240選擇當(dāng)前節(jié)點(diǎn)配置的一個或多個斯坦納樹之后,過程2200調(diào)用(在2245)一個過程2600,以計(jì)算由該選擇的斯坦納樹產(chǎn)生的布線路徑信息和路徑使用概率。這個過程將通過參考圖26在下面進(jìn)行描述。
過程2200接下來確定(在2250)其是否已經(jīng)檢查了在2210規(guī)定的組N中的所有節(jié)點(diǎn)配置。若不是,該過程返回到2215以從這個組中選擇未經(jīng)檢查的節(jié)點(diǎn)配置,并且然后對于新選擇的節(jié)點(diǎn)配置重復(fù)操作2220-45。否則,該過程結(jié)束。
圖24舉例說明用于標(biāo)識可能的斯坦納節(jié)點(diǎn)的過程2400。圖24的過程2400只需對于具有三個或更多節(jié)點(diǎn)的節(jié)點(diǎn)配置執(zhí)行,因?yàn)樵?220規(guī)定的每一斯坦納節(jié)點(diǎn)組具有一最大尺寸,該最大尺寸較在選擇的節(jié)點(diǎn)配置中的節(jié)點(diǎn)數(shù)目(即,因?yàn)闆]有在2220對于具有兩個或者更少的節(jié)點(diǎn)的節(jié)點(diǎn)配置規(guī)定斯坦納節(jié)點(diǎn)組)少兩個節(jié)點(diǎn)。
通過初始化一組與所有在2205規(guī)定的節(jié)點(diǎn)(其不是在2215選擇的節(jié)點(diǎn)配置的一部分)相同的可能的斯坦納節(jié)點(diǎn)組P,過程2400開始(在2405)。然后這個過程選擇(在2410)可能的斯坦納節(jié)點(diǎn)的一個。接著,過程2400確定(在2415)在2410選擇的該節(jié)點(diǎn)(Q)是否是在該選擇的節(jié)點(diǎn)配置中的任何兩個節(jié)點(diǎn)之間的最短路徑上。為了進(jìn)行這個確定,該過程確定在節(jié)點(diǎn)配置中任何的兩個節(jié)點(diǎn)(B和C)是否退出,以便兩個節(jié)點(diǎn)(B和C)之間的距離等于下面的和,(1)在第一節(jié)點(diǎn)(B)和選擇的節(jié)點(diǎn)(Q)之間的距離,和(2)在第二節(jié)點(diǎn)(C)和選擇的節(jié)點(diǎn)(Q)之間的距離。在一些實(shí)施例中,該過程使用上所述的過程2100和方程式(A)計(jì)算在任何一對節(jié)點(diǎn)之間的距離。
如果該過程確定在2410選擇的節(jié)點(diǎn)Q位于節(jié)點(diǎn)配置中的任何兩個節(jié)點(diǎn)間的最短路徑上,該過程保持(在2420)該選擇的節(jié)點(diǎn)在可能的斯坦納節(jié)點(diǎn)的組P中,標(biāo)識這個節(jié)點(diǎn)作為其已經(jīng)檢查的節(jié)點(diǎn),并且轉(zhuǎn)變至將在下面進(jìn)行描述的2430。另一方面,如果該選擇的節(jié)點(diǎn)(Q)不在選擇的節(jié)點(diǎn)配置中的任何兩個節(jié)點(diǎn)之的最短路徑上,該過程從可能的斯坦納節(jié)點(diǎn)組P中刪除選擇的節(jié)點(diǎn),并且轉(zhuǎn)變至2430。
在2430,該過程確定其是否已經(jīng)檢查了在可能的斯坦納節(jié)點(diǎn)組中所有節(jié)點(diǎn)。若不是,該過程返回到2410以在這個組中選擇另一個節(jié)點(diǎn),以便其可以在2415確定這個節(jié)點(diǎn)是否是在該選擇的節(jié)點(diǎn)配置中任何兩個節(jié)點(diǎn)間的最短路徑上。當(dāng)該過程確定(在2430)其已經(jīng)檢查了可能的斯坦納節(jié)點(diǎn)組中的所有節(jié)點(diǎn)時,過程結(jié)束。
圖25A舉例說明過程2500,圖22的過程2200在2220和2235使用其以構(gòu)成最小生成樹。節(jié)點(diǎn)配置的最小生成樹是一個具有N-1邊的樹,該些邊(即,跨越)連接通過最短路徑的結(jié)構(gòu)的N個節(jié)點(diǎn),最小生成樹僅在該節(jié)點(diǎn)分叉(即,開始或者結(jié)束)。
在本發(fā)明的一些實(shí)施例中,MST的邊可以是水平線、垂直線或者對角線線。對角邊可以是完全或者部分的對角。此外,當(dāng)布局使用對角互連線(例如,±45°互連線)的時候,MST的對角邊可以是在與該布局中的一些對角互連線相同的方向(例如,可以是±45°方向)。例如,當(dāng)該布局圖使用一個八邊形的布線模式(即,使用水平、垂直和45°對角線)的時候,一些實(shí)施例構(gòu)建具有水平、垂直和45°對角邊的MST。
通過把MST的每個邊的兩個節(jié)點(diǎn)視為一個邊界框的兩個對立角,可以通過使用以上所述的過程2100和方程式(A)獲得,每個邊的長度。
距離=[L-{S(cosA/sinA)}]+S/sinA (A)如上所述,在這個方程式中,“L”是方框的長邊,“S”是方框的短邊,以及“A”是該邊的對角線段相對于該邊界框的長邊的角度。
每當(dāng)過程2200調(diào)用過程2500(在2220或者2235),該過程2500開始,(1)以為節(jié)點(diǎn)組M構(gòu)成一個或多個MST;和(2)計(jì)算每個構(gòu)成的MST的長度。這個過程起初(在2505)將MST長度(MST_Cost)設(shè)置為零。接著,該過程(在2510)(1)從接收的節(jié)點(diǎn)組M中選擇一個節(jié)點(diǎn)作為該生成樹的第一節(jié)點(diǎn),和2)從這個節(jié)點(diǎn)組M中除去這個節(jié)點(diǎn)。
然后該過程2500調(diào)用(在2515)一個在圖25B說明的過程2550,以便標(biāo)識一個或多個鏈接的代表一個或多個完整的MST的節(jié)點(diǎn)組。過程2550是一個遞歸過程,當(dāng)其被調(diào)用時,其接收(1)一組代表不完全MST的節(jié)點(diǎn),和(2)一組還沒有增加到該接收的不完全MST的節(jié)點(diǎn)配置的節(jié)點(diǎn)的節(jié)點(diǎn)M。當(dāng)過程2500調(diào)用過程2550的時候,其為過程2550提供在2510選擇的第一節(jié)點(diǎn),和剩余節(jié)點(diǎn)M的修正組。作為響應(yīng),如下所述,遞歸過程2550返回代表一個或多個MST的一個或多個鏈接節(jié)點(diǎn)組。過程2550可返回超過一個相同的鏈接節(jié)點(diǎn)組的副本。相應(yīng)地,在過程2500從過程2550接收一個或多個鏈接節(jié)點(diǎn)組之后,過程2500刪除(在2520)相同接收的鏈接節(jié)點(diǎn)組的所有的復(fù)制副本,以便只存在每個接收節(jié)點(diǎn)組的一個副本。在2520之后,過程2500返回構(gòu)成的MST和其長度,然后結(jié)束。
如圖25B所示,過程2550界定(在2525)一個與當(dāng)過程被調(diào)用時其接收的節(jié)點(diǎn)組M相同的剩余節(jié)點(diǎn)組R。在2530,過程2550從該剩余節(jié)點(diǎn)組R中選擇一個節(jié)點(diǎn),并且從該剩余的節(jié)點(diǎn)組中除去該選擇的節(jié)點(diǎn)。然后該過程計(jì)算和存儲(在2535)在2530選擇的節(jié)點(diǎn)和接收的不完全的MST的每個當(dāng)前節(jié)點(diǎn)之間的距離。在該選擇的節(jié)點(diǎn)和每個節(jié)點(diǎn)之間的距離可以通過一個完全或者部分對角的邊穿越。因此,在一些實(shí)施例中,過程2550使用上述的過程2100和方程式(A)計(jì)算在該選擇的節(jié)點(diǎn)和每個節(jié)點(diǎn)之間的最小距離。
接下來,該過程確定(在2540)在組R中是否有任何節(jié)點(diǎn)。如果是,該過程返回到2530以從這個組中選擇另一個節(jié)點(diǎn),以便其可以計(jì)算(在2535)在這個節(jié)點(diǎn)和該生成樹的當(dāng)前節(jié)點(diǎn)之間的距離。否則,該過程(在2545)標(biāo)識記錄在2535的最小的距離,并且標(biāo)識生成該距離的節(jié)點(diǎn)對或?qū)M(其中,在每個對中一個節(jié)點(diǎn)來自于接收的M組以及一個節(jié)點(diǎn)來自于接收的MST)。
然后過程2550(在2555)將該標(biāo)識的最小的距離增加到MST長度(MST_Cost)。接下來,該過程確定(在2560)其是否標(biāo)識超過一對最接近節(jié)點(diǎn)。若不是(即,如果標(biāo)識的最小距離是在M組中的唯一一個節(jié)點(diǎn)和在該MST中的位移一個節(jié)點(diǎn)之間),該過程(在2565)(1)對應(yīng)于在2545標(biāo)識的組M節(jié)點(diǎn)界定一個樹節(jié)點(diǎn);(2)從組M中除去該標(biāo)識的節(jié)點(diǎn);和(3)鏈接該界定的樹節(jié)點(diǎn)到在2545標(biāo)識的MST節(jié)點(diǎn)。在2565,當(dāng)除去標(biāo)識的節(jié)點(diǎn)之后,組M為空時,過程2550也遞歸地調(diào)用它自己并且提供修正的MST和修正的組M。另一方面,當(dāng)該正的組M是空時,過程2550從2565過渡到2575,這里其返回一組表示一個通過在2565鏈接完成的完整的MST的節(jié)點(diǎn)。在2575之后,該過程2550終止。
如果過程2550確定(在2560)其標(biāo)識(在2545)超過一個“最接近的”節(jié)點(diǎn)對,其基于每個標(biāo)識的最接近的節(jié)點(diǎn)對順序地和遞歸地嘗試獲得一個完整的MST。換句話說,這個過程最初選擇一個標(biāo)識的節(jié)點(diǎn)對,然后(1)從組M中除去選擇成對的組M節(jié)點(diǎn),(2)鏈接該除去的節(jié)點(diǎn)到該成對的MST節(jié)點(diǎn);和(3)對于修正的MST和修正的組M遞歸地重復(fù)。一旦過程2550接收該遞歸的結(jié)果(即,當(dāng)這個過程對于該選擇的節(jié)點(diǎn)對接收到完整的MST的時候),然后其選擇下一個標(biāo)識的節(jié)點(diǎn)對,并且執(zhí)行該相同的三個操作,以便基于這個節(jié)點(diǎn)對獲得完整的MST。該過程以此方式繼續(xù),直到其基于每個標(biāo)識的“最接近的”節(jié)點(diǎn)對產(chǎn)生MST為止。在連續(xù)地處理了每個標(biāo)識的節(jié)點(diǎn)對之后,該過程返回(在2575)該MST,然后結(jié)束。
圖26舉例說明過程2600,其計(jì)算由在2250選擇的斯坦納樹產(chǎn)生的布線信息和路徑使用概率。每當(dāng)過程2200在2245調(diào)用過程2600時起動這個過程2600,并且為其提供一組斯坦納樹。
通過初始化(在2605)一個為每一路徑存儲計(jì)數(shù)值的全局計(jì)數(shù)變量,開始過程2600。對于每個接收的樹,該過程初始化(在2610)一個位串以用于存儲該樹的布線選擇路徑信息。然后該過程選擇(在2615)一個接收的斯坦納樹,并且在該樹中選擇(在2620)一邊(即,在該樹中選擇一對連接的節(jié)點(diǎn),其中這些節(jié)點(diǎn)在過程2550的2565或者2570被連接)。接下來,該過程確定(在2625)是否存在超過一組路徑以布線該選擇的樹邊(即,去連接該選擇的一對節(jié)點(diǎn))。在一些實(shí)施例中,該過程從一個存儲器結(jié)構(gòu)(例如,一個LUT)中取回用于該選擇樹邊的路徑值,該存儲器結(jié)構(gòu)存儲用于任意組合的樹形槽節(jié)點(diǎn)(tree slot node)的路徑使用值。換句話說,這個存儲器結(jié)構(gòu)將網(wǎng)格內(nèi)每個可能的樹邊的端點(diǎn)映射為一組路徑使用值。
當(dāng)該樹邊的端點(diǎn)不相鄰(即,當(dāng)在2620選擇的一對節(jié)點(diǎn)是不相鄰的時候)時,在該端點(diǎn)(即,在該節(jié)點(diǎn)對之間)之間可能存在超過一個最佳布線。因此,在該LUT中的路徑使用值可以指定用于多個最佳布線的值。
可以代表在圖6-8示出的三個斯坦納樹的兩組節(jié)點(diǎn)連接是(l)由用于圖6中的斯坦納樹605的節(jié)點(diǎn)610-節(jié)點(diǎn)615-斯坦納節(jié)點(diǎn)620-節(jié)點(diǎn)625-節(jié)點(diǎn)630形成的節(jié)點(diǎn)組;和(2)由用于圖7或者8的斯坦納樹的節(jié)點(diǎn)625-節(jié)點(diǎn)610-節(jié)點(diǎn)615-節(jié)點(diǎn)635形成的節(jié)點(diǎn)組。
在代表圖6的斯坦納樹605的第一節(jié)點(diǎn)組中,只有一個路徑存在于任意兩個連接的節(jié)點(diǎn)對之間。因此,用于來自這個組的任何一對,映射LUT將返回42個值,除用于在選擇的節(jié)點(diǎn)對之間的路徑值之外所有的值等于0。該非零的值將是1,以表示在該選擇的節(jié)點(diǎn)對之間僅存在一個路徑。
另一方面,對于代表或者斯坦納樹705或者805的第二節(jié)點(diǎn)組而言,在節(jié)點(diǎn)615和630之間存在兩個路徑。斯坦納樹705使用這些路徑中的一個,同時斯坦納樹805使用另一個。對于在這該節(jié)點(diǎn)組中的這個節(jié)點(diǎn)對(即,對于節(jié)點(diǎn)615和630),映射LUT將返回兩個42位的信息串,其中一個用于斯坦納樹705以及一個用于斯坦納樹805。用于樹805的位串具有用于路徑1的值并且將28位設(shè)置為1以及剩余值設(shè)置為0,而用于樹705的位串具有用于路徑5的值并且26位設(shè)置為1以及剩余值設(shè)置為。
如果該過程在2625取回位串不超過一個,其過渡到如下所述的2635。否則,當(dāng)該過程取回用于布線選擇的樹邊(即,用于連接選擇的一對節(jié)點(diǎn))的N條路徑的N個位串(這里,N是一個等于或者大于2的整數(shù))的時候,該過程生成當(dāng)前位串或者當(dāng)前樹的信息串的N-1份的副本,并且在該樹的復(fù)制之中嵌入不同的路徑。
換句話說,該過程進(jìn)行(在2630)位串或者當(dāng)前樹的信息串N-1份副本;用于當(dāng)前樹的位串在2610被初始化,以及如果其位串先前在2630被復(fù)制,該當(dāng)前樹將具有多個位串。從2630過程轉(zhuǎn)到2635。
在2635,該過程利用用于選擇的樹邊的位串或者信息串(在2625取回的),修正用于當(dāng)前樹的的位串或者信息串。接著,該過程確定(在2640)其是否已經(jīng)查驗(yàn)當(dāng)前樹的最后邊(即,其是否已經(jīng)查驗(yàn)當(dāng)前樹中最后鏈接的節(jié)點(diǎn)對)。否則,該過程轉(zhuǎn)回到2620以選擇下一個樹邊(即,下一個鏈接的節(jié)點(diǎn)對)。
當(dāng)該過程確定(在2640)其已經(jīng)查驗(yàn)最后的樹邊時,其然后確定(2645)是否已經(jīng)查驗(yàn)由過程2200提供的最后樹。否則,該過程返回2615以選擇另一個樹,以及然后確定對于這個樹的路徑使用。否則,該過程轉(zhuǎn)到2650。
當(dāng)過程2600到達(dá)2650時,其已經(jīng)產(chǎn)生代表一個或多個樹的位串。每個樹的位串代表是一42位的信息串。如上所述,當(dāng)該樹的節(jié)點(diǎn)組具有一對或多對的不相鄰的鏈接節(jié)點(diǎn),并且非相鄰的鏈接對之間存在一或多組路徑時,樹的節(jié)點(diǎn)代表可能產(chǎn)生多個位串代表。
此外,在2215選擇的節(jié)點(diǎn)配置可能導(dǎo)致產(chǎn)生相同MST位表示(bitrepresentation)(即,產(chǎn)生相同的位表示的MST)的不同的MST節(jié)點(diǎn)表示(即,不同的節(jié)點(diǎn)表示的MST)。相應(yīng)地,在2650,該過程查驗(yàn)所有的位串表示的樹,并且刪除相同位串表示的樹的所有副本。
當(dāng)在2215選擇的節(jié)點(diǎn)配置導(dǎo)致大量的位串表示的樹時,過程2600可以使用一個二分查找樹(“BST”)去迅速地分類和搜索該樹,并且從而迅速地識別和刪除該相同樹的副本。上述的BST參考圖32和33描述如下。
在2650之后剩余的所有位表示的樹是唯一的。因此,在刪除相同樹的副本之后,過程2600在一個存儲器結(jié)構(gòu)(諸如LUT)中存儲(在2655)剩余所有的位串表示樹。如在下面例子中描述的,每個位串規(guī)定用于當(dāng)前節(jié)點(diǎn)配置的布線樹的路徑。具體地說,如在下面的例子中描述的,每個存儲的位串規(guī)定用于當(dāng)前節(jié)點(diǎn)配置的布線樹穿過的布線路徑。在2655,該過程以每個位串表示樹的相應(yīng)路徑值增加全局計(jì)數(shù)變量的每個路徑值,以便產(chǎn)生用于每個路徑的總計(jì)數(shù)值。然后該過程記錄這個用于每個路徑的使用計(jì)數(shù)。此外,對于每個特殊路徑,該過程(在2650)(1)用在2650之后剩余的樹的數(shù)目除計(jì)數(shù),以便獲得特定路徑的使用概率值,然后(2)存儲這個產(chǎn)生的概率值。然后該過程結(jié)束。
對于在圖6-8示出的斯坦納樹,過程2600將標(biāo)識三個42位的信息串,其指定用于三個樹605、705、805的布線路徑信息。用于樹605、705和805的這三個位串分別是000000000010000000000000000010000000110001;000000000000000100000000010001000000100001;000000000000010000000000010001000000000011。
(在這個文獻(xiàn)中,位串的最低有效位(“LSB”)是最右邊的位,并且該位串的最高有效位(“MSB”)是最左邊的位)。圖27和28分別舉例說明用于圖6-8的斯坦納樹605、705和805的路徑使用計(jì)數(shù)和路徑使用概率的例子。在下面的論述中,路徑使用概率值被稱為“概率斯坦納樹值”。
3.取回(retrieve)斯坦納樹當(dāng)斯坦納樹路徑按照過程2200預(yù)先制成表的時,布線程序在運(yùn)行時間對于網(wǎng)絡(luò)以下面的方式標(biāo)識一個或多個斯坦納樹屬性(例如,路徑)。該布線程序首先相對于分割網(wǎng)格標(biāo)識網(wǎng)絡(luò)配置。然后其使用標(biāo)識配置去取回存儲在存儲器結(jié)構(gòu)中用于該標(biāo)識的配置的一個或多個屬性(例如,路徑)。
在一些實(shí)施例中,該存儲器結(jié)構(gòu)是一個浮點(diǎn)數(shù)的查詢表(“LUT”)。在一些實(shí)施例中,LUT由一個配置碼索引。換句話說,為了取回特定網(wǎng)絡(luò)配置的特殊屬性,標(biāo)識網(wǎng)絡(luò)配置的配置碼,并且這個配置碼用于標(biāo)識在存儲需要屬性的LUT中登錄。
一些實(shí)施例使用圖3舉例說明的八角形的布線模式,并且利用在圖12舉例說明的42個對角和曼哈頓布線路徑指定每個網(wǎng)絡(luò)的布線路徑。在一些實(shí)施例中,LUT對于每個路徑存儲42位,其中每個位代表42條路徑中的一個。此外,每個網(wǎng)絡(luò)的配置碼是一個16位數(shù)字,這里每個位代表一個由該4×4分割網(wǎng)格界定的子區(qū)域。當(dāng)該相關(guān)網(wǎng)絡(luò)在由該配置代碼位代表的子區(qū)域中具有一引腳時,設(shè)置每個配置代碼位(例如,等于1),并且當(dāng)相關(guān)網(wǎng)絡(luò)在這個子區(qū)域中不具有一個引腳的時候,不被設(shè)置(例如,等于0)。此外,在這些實(shí)施例中,存在216個配置碼,其代表216個可能的網(wǎng)絡(luò)配置。
例如,當(dāng)網(wǎng)絡(luò)在槽0和9具有引腳的時候,網(wǎng)絡(luò)配置碼是000001000000001。對于上述的配置,一些實(shí)施例預(yù)先制表兩個樹,一個使用路徑P17和P24,以及另一個使用路徑P12和P30。這些樹的每一個可以由一連串的42位指定。第一樹的位串是,000000000000000001000000100000000000000000,而用于第二樹的該位串是,000000000001000000000000000001000000000000。
一些實(shí)施例在LUT中存儲這兩個位串,并且通過使用網(wǎng)絡(luò)配置的16位配置碼0000001000000001取回這兩個位串。
4.以一種壓縮的形式存儲斯坦納樹可采用各種壓縮技術(shù)以存儲和使用用于網(wǎng)絡(luò)配置組的斯坦納樹布線。上述的方法在圖29中舉例說明。除了過程2900具有兩個附加的操作2905和2910并且具有略微不同的操作2215和2250之外,這個圖的過程2900與如上所述的過程2200相似。過程2900的操作2205、2210和2220-2245與過程2200的同樣編號的操作2205、2210和2220-2245相同的。因此,為了不使本發(fā)明的說明由于多余的詳述而難以理解,這些操作2205、2210和2220-2245在下面將不進(jìn)一步說明。
過程2900執(zhí)行附加的操作2905和2910以降低預(yù)先制表的信息量。第一操作2905降低過程2900預(yù)先制表布線可能的網(wǎng)絡(luò)配置的數(shù)目,而第二操作2910確保過程2900僅存儲每個斯坦納樹布線一次。
這兩個操作在下面進(jìn)一步進(jìn)行描述。但是,一個普通的技術(shù)人員將認(rèn)識到一些實(shí)施例不使用這兩個操作。例如,一些實(shí)施例可僅執(zhí)行2910以確保每個斯坦納樹路徑僅存儲一次。
a.對稱的網(wǎng)絡(luò)配置操作2905將在2210標(biāo)識的可能的網(wǎng)絡(luò)配置分組為對稱的網(wǎng)絡(luò)配置組。從2215-2250開始,然后過程2900產(chǎn)生和存儲用于各對稱配置組的一個指定的網(wǎng)絡(luò)配置的一組斯坦納樹。這個流程由2215和2250控制。在2215,過程2900選擇一個先前沒有檢查的指定節(jié)點(diǎn)配置。在2250,該過程確定其是否已經(jīng)檢查用于各對稱節(jié)點(diǎn)配置組的指定節(jié)點(diǎn)配置。在運(yùn)行時間,每組的指定配置直接使用用于其組的預(yù)先制表路徑,而每組的非指定配置從其分組的預(yù)先制表路徑產(chǎn)生它們的路徑。
圖30和31舉例說明一種用于執(zhí)行這個分組的方法。這個方法用于執(zhí)行圖5的4×4分割網(wǎng)格。在這個網(wǎng)格中,每個網(wǎng)絡(luò)配置相對于七個其它的網(wǎng)絡(luò)配置是對稱的。這七個對稱配置可以通過下列標(biāo)識(1)轉(zhuǎn)動該網(wǎng)絡(luò)配置90°;(2)轉(zhuǎn)動其180°;(3)轉(zhuǎn)動其270°;(4)圍繞X軸翻轉(zhuǎn)該網(wǎng)絡(luò)配置;(5)轉(zhuǎn)動該網(wǎng)絡(luò)配置90°,并且圍繞X軸翻轉(zhuǎn)該結(jié)果;(6)轉(zhuǎn)動其180°,并且圍繞X軸翻轉(zhuǎn)該結(jié)果;(7)轉(zhuǎn)動其270°,并且圍繞X軸翻轉(zhuǎn)該結(jié)果。
在下面描述的實(shí)施例中,旋轉(zhuǎn)和翻轉(zhuǎn)操作是相對于笛卡兒坐標(biāo)系統(tǒng)界定的,其具有(1)平行于4×4分割網(wǎng)格(即,該布局圖的寬度)寬度的X軸;(2)平行于該網(wǎng)格高度的Y軸;和(3)一個在網(wǎng)格槽5、6、9和10的交點(diǎn)上的原點(diǎn),其如圖5中所示。具體地說,旋轉(zhuǎn)是依據(jù)圍繞原點(diǎn)順時針方向旋轉(zhuǎn)界定的。配置的翻轉(zhuǎn)涉及改變每個配置槽的y座標(biāo)的符號。表1在下面舉例說明一個關(guān)于基于上述平衡關(guān)系的八個網(wǎng)絡(luò)配置的例子。
表1
圖31舉例說明一個按照上述對稱性用于分組網(wǎng)絡(luò)配置的過程3100。圖30舉例說明過程3100為每個配置存儲的四個數(shù)據(jù)字段。第一字段3000存儲配置的16位引腳分布(即,其網(wǎng)絡(luò)/節(jié)點(diǎn)配置)。第二字段3005規(guī)定過程3100是否已經(jīng)將配置和其它的配置分組。
第三字段3010是一個對于樹列表(treelist)3020的參考(例如,一個指針),其包括用于配置組的一個或多個斯坦納樹布線3025的一個或多個參考。組中的每個配置指的是相同的樹列表3020。例如,圖30舉例說明三個涉及相同樹列表的分組配置3030、3035和3040。第四字段3015存儲對稱關(guān)系的標(biāo)識符。這個標(biāo)識符規(guī)定如何從存儲用于分組的樹中獲得用于網(wǎng)絡(luò)配置的樹。換句話說,每個配置的標(biāo)識符規(guī)定如何將預(yù)先制表用于配置分組一個或多個樹轉(zhuǎn)變?yōu)橛糜谠撆渲玫囊粋€或多個樹。
在過程2900界定(在2210)所有可能的節(jié)點(diǎn)配置組之后,過程2900在2905執(zhí)行過程3100。如圖31所示,過程3100最初選擇(在3105)已在2210界定的節(jié)點(diǎn)配置的一個。然后其在其配置字段3005中標(biāo)記(在3110)這個配置已分組。
接著,該過程在這個配置的關(guān)系標(biāo)識符字段3015中記錄(在3115)“無”。這個標(biāo)記表示用于這個配置(即,由這個配置的樹列表3020涉及的樹)規(guī)定的預(yù)先制表的樹不需要為選擇的節(jié)點(diǎn)配置以任何的方式轉(zhuǎn)換。在每個配置組中,已經(jīng)記錄在其關(guān)系標(biāo)識符字段中記錄“無”的配置是用于分組指定的配置(即,其是可以直接使用生成用于分組的斯坦納樹的配置)。
在3120,然后該過程生成一個用于這個配置分組的樹列表3020,并且鏈接這個配置的參考字段3010到這個樹列表。過程2900將(在2910)指示用于這個配置分組的樹的參考增加這個樹列表。
然后過程3100選擇(在3125)上述七個對稱關(guān)系中的一個。其接下來使用(在3130)該選擇的對稱關(guān)系去標(biāo)識相對于在3105選擇的配置為對稱的七個配置中的一個。一些實(shí)施例具有七個LUT,一個用于個對稱轉(zhuǎn)換關(guān)系。每個LUT提供一對一的映射,其規(guī)定用于指定節(jié)點(diǎn)配置的每個可能節(jié)點(diǎn)的對稱節(jié)點(diǎn)。例如,在下面的表2標(biāo)識用于對稱配置的相應(yīng)節(jié)點(diǎn),其可以通過轉(zhuǎn)動指定節(jié)點(diǎn)配置90°獲得。
表2
在3135,然后該過程將在3130標(biāo)識的配置在配置的字段3005中標(biāo)記為已分組。其接下來在配置的關(guān)系標(biāo)識符字段3015中記錄(在3140)在3125(例如,轉(zhuǎn)動90°)選擇的相互關(guān)系的身份。這個操作在運(yùn)行時間可用以將預(yù)先制表用于配置分組的一個或多個樹轉(zhuǎn)換為用于運(yùn)行時間可用以將預(yù)先制表用于配置分組的一個或多個樹轉(zhuǎn)換為用于在3130標(biāo)識的配置的一個或多個樹。
然后該過程將(在3145)該標(biāo)識配置的參考字段3010鏈接到用于這個配置分組的樹列表3020。在3150,然后該過程確定其是否已經(jīng)產(chǎn)生與在3105選擇的一個配置對稱相關(guān)的所有七個配置。如果不是,該過程選擇(在3125)另一個對稱關(guān)系,并且然后執(zhí)行3130-3145以標(biāo)識相關(guān)配置并且占據(jù)其分組字段。
當(dāng)該過程確定(在3150)其已經(jīng)產(chǎn)生與在3105選擇的配置相關(guān)的所有七個配置的時候,其確定(在3155)其是否已經(jīng)檢查該過程2900在2210(即,是否其已經(jīng)作為“分組”標(biāo)記的所有產(chǎn)生的節(jié)點(diǎn)配置)產(chǎn)生的所有節(jié)點(diǎn)配置。如果不是,該過程轉(zhuǎn)到3105以選擇一個還沒有標(biāo)記為“分組”的節(jié)點(diǎn)配置,并且對于新選擇的配置和其對稱相關(guān)的配置重復(fù)上述的操作。當(dāng)該過程確定(在3155)其已檢查了所有的節(jié)點(diǎn)配置的時候,其結(jié)束。
b.存儲每個樹僅一次對于任何使用這樣一個布線的節(jié)點(diǎn)配置,在2910,該過程確保過程2900存儲每個斯坦納樹布線僅一次。類似于圖22的過程2200,過程2900調(diào)用(在2245)過程2600以計(jì)算用于過程2900標(biāo)識的用于節(jié)點(diǎn)配置的斯坦納樹的布線路徑信息。過程2600標(biāo)識一個或者更多的位串以表示由過程2900標(biāo)識的每個斯坦納樹。過程2600也(1)刪除(在2650)任何其產(chǎn)生用于相同節(jié)點(diǎn)配置的位表示樹的副本,并且隨后(2)存儲(在2655)每個剩余位表示的樹。
然而,當(dāng)過程2600連同過程2900一起工作時,其不能永久地存儲(在2655)每個所產(chǎn)生的位串。相反,它返回所產(chǎn)生的位串到過程2900。過程2900隨后檢查(在2910)其是否已經(jīng)將每個所返回的位串(即,每個返回的斯坦納樹)預(yù)先存儲到用于節(jié)點(diǎn)配置(即,用于預(yù)先在2215選擇的節(jié)點(diǎn)配置)的存儲結(jié)構(gòu)中。如果是,該過程不重新存儲這個位串,而是連接節(jié)點(diǎn)配置的樹列表3020中的一個參考到預(yù)先存儲的位串。如果不是,該過程存儲這個位串到圖30的存儲結(jié)構(gòu)中,并且將節(jié)點(diǎn)配置的樹列表3020的其中一個參考鏈接到新存儲的位串。
各種不同的技術(shù)可以用于檢查(在2910)過程2900是否預(yù)先存儲一個位串到存儲結(jié)構(gòu)3050中。以下所描述的實(shí)施方式使用一個二進(jìn)制取回(binary search)樹來執(zhí)行這個檢查操作。
圖32表示一個這樣的二元取回樹(“BST”)。這個樹3200有許多節(jié)點(diǎn)3220,每個節(jié)點(diǎn)有零或者兩個子節(jié)點(diǎn)。樹上的每個節(jié)點(diǎn)包括兩個參考3205和3210以用于指示節(jié)點(diǎn)左和右子節(jié)點(diǎn)。每個節(jié)點(diǎn)也有參考3215以指示一個與該節(jié)點(diǎn)對應(yīng)的42位斯坦納樹。
BST有42個層,每層相當(dāng)于用于表示斯坦納樹的42位信息串中的一位。BST層與位串中的位有相同的順序,因此,BST的第0層相當(dāng)于信息串的第0位(即相當(dāng)于路徑0的位),BST的第1層相當(dāng)于串的第1位(即相當(dāng)于路徑1的位),BST的第2層相當(dāng)于串的第2位(即相當(dāng)于路徑2的位),等等。每層中,對應(yīng)于該層位串的值決定分支。
圖33表示過程3300,其是過程2900使用其(在2910)貫穿BST3200以確定斯坦納樹是否已經(jīng)預(yù)先存儲在存儲結(jié)構(gòu)中。如圖33所示,過程3300(在3305)最初設(shè)置變量L為0。這個變量規(guī)定過程3300當(dāng)前正在檢查的BST層。在3310該過程確定位串的第L位是否為0。如果不是,該過程(在3315)將變量L加1,并且將當(dāng)前節(jié)點(diǎn)的左子節(jié)點(diǎn)定義為當(dāng)前節(jié)點(diǎn)。如果是,該過程在3320將變量L加1,并且將當(dāng)前節(jié)點(diǎn)的右子節(jié)點(diǎn)定義為當(dāng)前節(jié)點(diǎn)。
從3315或3320,這個過程轉(zhuǎn)到3325。這里,該過程確定其是否已經(jīng)檢查了位串中的所有位,并且如果沒有,是否所有剩余的未檢查位(即,位串的第L位到第41位)是0。如果所有位都沒有檢查,并且一個或者多個檢查的位的值為1,該過程回到3310以檢查當(dāng)前的節(jié)點(diǎn)。
另一方面,如果已經(jīng)檢查了所有位,或者所有未檢查的位是0,該過程已經(jīng)發(fā)現(xiàn)應(yīng)該存儲在位串中的節(jié)點(diǎn)。因此,過程確定(在3300)當(dāng)前節(jié)點(diǎn)的樹參考3215是否指的是一個所存儲的樹(即一個所存儲的位串)。如果不是,該過程存儲(在3335)位串到存儲結(jié)構(gòu)3050中,并且將當(dāng)前節(jié)點(diǎn)的樹參考3215鏈接到這個結(jié)構(gòu)。該過程也連接(在3335)節(jié)點(diǎn)配置的樹列表3020中的一個參考到新存儲的位串。如果該過程確定(在3330)當(dāng)前節(jié)點(diǎn)的樹參考3215指的是一個預(yù)先存儲的位串,該過程僅將(在3340)節(jié)點(diǎn)配置樹列表3020中的一個參考鏈接到預(yù)先存儲的位串。在3335或者3340之后該過程結(jié)束。
c.從壓縮的預(yù)先制表的表中標(biāo)識布線當(dāng)按照過程2900預(yù)先制表斯坦納樹布線時,布線程序在運(yùn)行期間按照以下方式標(biāo)識用于網(wǎng)絡(luò)的一個或者多個斯坦納樹布線。布線程序預(yù)先標(biāo)識與分割網(wǎng)格有關(guān)的網(wǎng)絡(luò)配置。從存儲結(jié)構(gòu)3050,其隨后取回由標(biāo)識配置的樹列表3020所指定的一個或者多個布線3025。
該過程隨后標(biāo)識在標(biāo)識的網(wǎng)絡(luò)配置和指定用于其分組的配置之間的對稱關(guān)系。接下來,該過程使用這個關(guān)系以從取回的布線中標(biāo)識一個或者多個用于標(biāo)識的網(wǎng)絡(luò)配置的布線。為了做到這一點(diǎn),一些實(shí)施方式使用7個LUT,每個對稱轉(zhuǎn)換關(guān)系使用一個。每個LUT提供一對一的映射,該一對一的映射規(guī)定與指定的節(jié)點(diǎn)配置的布線能夠使用的每一可能的路徑對稱的路徑,該可能的路徑是一個所。
例如,網(wǎng)絡(luò)配置可以是0001010000000000,其表明在槽10和12具有引腳的網(wǎng)絡(luò)。這個結(jié)構(gòu)與表示在槽0和9有引腳的網(wǎng)絡(luò)配置0000001000000001對稱相關(guān)。特別地,配置0001010000000000是當(dāng)配置0000001000000001旋轉(zhuǎn)90°時獲得的。
當(dāng)網(wǎng)絡(luò)配置0000001000000001是指定的配置時,一些實(shí)施方式預(yù)先把兩個樹制成表格,一個使用路徑P17和P24,并且另一個使用路徑P12和P30。通過將這些樹旋轉(zhuǎn)90°,布線程序可標(biāo)識用于配置0001010000000000的兩個布線。為使每個樹旋轉(zhuǎn)90°,布線程序(1)標(biāo)識樹所使用的每個路徑(即,在規(guī)定該樹的42位信息串中標(biāo)識每個設(shè)置位),以及(2)從90°旋轉(zhuǎn)的LUT,標(biāo)識與已標(biāo)識的路徑對稱相關(guān)的路徑以用于用于分割網(wǎng)格90°旋轉(zhuǎn)。
因此,從90°旋轉(zhuǎn)LUT,布線程序?qū)⒙窂絇37標(biāo)識為與通過90°旋轉(zhuǎn)的路徑P24相關(guān)的路徑,并且將路徑P7標(biāo)識為與通過90°旋轉(zhuǎn)的路徑P17相關(guān)的路徑。從90°旋轉(zhuǎn)LUT,布線程序?qū)⒙窂絇9標(biāo)識為與通過90°旋轉(zhuǎn)的路徑P12相關(guān)的路徑,并且將路徑P30標(biāo)識為與通過90°旋轉(zhuǎn)的路徑P39相關(guān)的路徑。以這樣的形式,布線程序標(biāo)識兩個用于配置0001010000000000樹。一個樹使用路徑7和37,以及另一個使用路徑9和39。
一名本領(lǐng)域的普通技術(shù)人員將認(rèn)識到,其它的實(shí)施方式不通過使用LUT標(biāo)識用于對稱節(jié)點(diǎn)配置的樹。例如,一些實(shí)施方式可以算術(shù)方式標(biāo)識用于對稱節(jié)點(diǎn)配置的樹。對于每個對稱關(guān)系,這些實(shí)施方式可以使用不同的數(shù)學(xué)公式以將預(yù)先制表的樹映射到對稱相關(guān)樹的路徑。
5.用于不同布線模式的預(yù)先制表的斯坦納樹本發(fā)明的一些實(shí)施方式預(yù)先制表用于幾個不同布線模式的幾個斯坦納樹組。例如,圖34表示過程3400,其對于具有水平,垂直,和±45°線的布線模式,執(zhí)行過程2200或過程2900(1)一次(在3405)(2)對于具有水平,垂直,和±120°線的布線模式執(zhí)行過程2200或過程2900(1)一次(在3410),和(3)對于具有水平,垂直線的布線模式,執(zhí)行過程2200或過程2900(1)一次(在3415)。
為了模擬一個使用水平,垂直,和±45°線的布線模式的所有可能網(wǎng)絡(luò)配置,這個過程計(jì)算(在3405)潛在45°對角邊的斯坦納樹的長度,布線路徑,以及路徑使用值。換句話說,在3405,過程3400使用45°作為在公式(A)中的角度A,該公式由過程2200或2900的過程2400和2500使用。
為了模擬使用水平,垂直,和±120°線的布線模式所有可能的網(wǎng)絡(luò)配置,這個過程計(jì)算(在3410)具有潛在120°對角邊的斯坦納樹的長度,布線路徑,以及路徑使用值。換句話說,在3410,過程3400使用120°作為在公式(A)中的角度A,該公式由過程2200或2900的過程2400和2500使用。
為了模擬使用水平,垂直線的布線模式所有可能的網(wǎng)絡(luò)配置,實(shí)施例計(jì)算(在3415)曼哈頓斯坦納樹的長度,布線路徑,以及路徑使用值。換句話說,在3415,過程3400使用90°作為在公式(A)中的角度A,該公式由過程2200或2900的過程2400和2500使用。
B.預(yù)制成表和產(chǎn)生樹一些實(shí)施方式使用網(wǎng)絡(luò)配置來取回和產(chǎn)生布線。例如,當(dāng)產(chǎn)生用于其他網(wǎng)絡(luò)的布線時,一些實(shí)施方式使用網(wǎng)絡(luò)配置來取回用于某一網(wǎng)絡(luò)的預(yù)先制表的布線?,F(xiàn)在參照圖35-38說明幾個這樣的實(shí)施方式。
這些實(shí)施方式將用于閉合的節(jié)點(diǎn)配置的布線預(yù)先制表,以下稱為“最小閉合樹”或者M(jìn)CT,。MCT是用于閉合節(jié)點(diǎn)配置的MST。換句話說,MCT是一個最小的樹,該樹有N-1個通過最短布線橫越配置N個節(jié)點(diǎn)的N-1個邊,其僅在節(jié)點(diǎn)產(chǎn)生分支(即開始或者結(jié)束)。對于開放的節(jié)點(diǎn)配置,這些實(shí)施方式將某一相關(guān)的閉合節(jié)點(diǎn)配置預(yù)制成表格。術(shù)語——閉合節(jié)點(diǎn)配置和開放節(jié)點(diǎn)配置將通過參照圖35A和35B進(jìn)行說明。
圖35A示出閉合節(jié)點(diǎn)配置3505的例子(包括節(jié)點(diǎn)3515,3520,3530,3535和3540),而圖35B示出一個開放節(jié)點(diǎn)配置3510的例子(包括節(jié)點(diǎn)3515,3530,3535和3540)。由于在這個配置中的所有節(jié)點(diǎn)至少與在這個配置中的其他一個節(jié)點(diǎn)相鄰接,因此節(jié)點(diǎn)配置3505是一個閉合配置。由于節(jié)點(diǎn)3515與配置中的另一節(jié)點(diǎn)不相鄰接,因此節(jié)點(diǎn)配置3510是一個開放配置;在這個配置中,節(jié)點(diǎn)3515在其和下一個最近節(jié)點(diǎn)3530之間有節(jié)點(diǎn)3545。
節(jié)點(diǎn)配置3510有幾個相關(guān)的閉合節(jié)點(diǎn)配置。沒有導(dǎo)致具有“天線”節(jié)點(diǎn)的MCT的兩個這樣的配置是,(1)第一配置包括3515,3545,3530,3535和3540,以及(2)第二配置包括3515,3550,3530,3535和3540。第一配置是通過添加節(jié)點(diǎn)3545到配置3510獲得,而第二配置是通過添加節(jié)點(diǎn)3550到3510獲得。
通過添加節(jié)點(diǎn)3555以及節(jié)點(diǎn)3545或者3550到配置3510所獲得的配置是一個相關(guān)的閉合配置,其將總是導(dǎo)致具有一作為一個天線節(jié)點(diǎn)的節(jié)點(diǎn)3555的MCT。通過添加一組節(jié)點(diǎn)到一開放節(jié)點(diǎn)配置中所獲得的閉合節(jié)點(diǎn)配置的MCT中的天線節(jié)點(diǎn),是這樣一個節(jié)點(diǎn),該節(jié)點(diǎn)是所添加組的一部分,并且僅有一個與其相關(guān)的MCT邊。正像在以下進(jìn)一步描述,最初兩節(jié)點(diǎn)配置(配置3515,3545,3530,3535和3540,以及配置3515,3550,3530,3535和3540)是能預(yù)先制表以用于開放節(jié)點(diǎn)配置3515,3530,3535和3540的相關(guān)閉合節(jié)點(diǎn)配置。另一方面,由于它導(dǎo)致一天線節(jié)點(diǎn),第三配置(3515,3530,3535,3540和3555)不應(yīng)預(yù)先制表以用于這個開放配置。
1、預(yù)先制成表的MCT圖36示出過程3600,其在一特定分割網(wǎng)格內(nèi),諸如圖5的4*4網(wǎng)格,對于所有節(jié)點(diǎn)配置將MCT預(yù)先制成表格。如圖36中所示,過程3600最初標(biāo)識(3605)所有可能的節(jié)點(diǎn)配置。
其隨后選擇(在3610)一個配置。如果選擇配置是個閉合的配置,該過程接下來標(biāo)識(在3615)用于所選擇配置的所有MCT。正像前面所提到的,如果配置中的每一節(jié)點(diǎn)與配置中至少一個其他節(jié)點(diǎn)相鄰接,節(jié)點(diǎn)配置是一閉合配置。一名普通技術(shù)人員將意識到過程3600直接基于在所選擇的閉合節(jié)點(diǎn)配置的節(jié)點(diǎn)之間存在的多組路徑(例如,圖12中示出的42個路徑)標(biāo)識用于所選擇配置的每一MCT。每一MCT是一個N-1個這樣的路徑唯一的組合,這些路徑通過最短的布線連接閉合節(jié)點(diǎn)配置中所有的N個節(jié)點(diǎn)。通過一個探索閉合配置的節(jié)點(diǎn)之間所有最短的路徑的遞歸操作,標(biāo)識這樣的MCT;在一些實(shí)施方式中,除其直接基于互連路徑指定每一MCT之外,這樣一個遞歸操作將與上面參考圖25A和25B所說明的操作類似。
在3615,該過程也計(jì)算在3615標(biāo)識的每一MCT的成本。在一些實(shí)施方式中,該過程通過以下計(jì)算每一MCT的成本(1)將成本分配給連接分割網(wǎng)格的相鄰槽的曼哈頓和對角路徑,(2)標(biāo)識MCT所使用的路徑,以及(3)將路徑成本相加。一至少有兩個節(jié)點(diǎn)的節(jié)點(diǎn)配置沒有一個MCT,并且由此其MCT成本是零。
在3615以后,該過程確定(在3620)其是否已經(jīng)檢查了所有的配置。如果沒有,該過程返回到3610,選擇另一個配置。否則,該過程結(jié)束。
2.將相關(guān)的閉合節(jié)點(diǎn)配置預(yù)先制成表格圖37示出用于一個開放節(jié)點(diǎn)配置的過程3700,其將某一相關(guān)的閉合節(jié)點(diǎn)配置預(yù)先制成表格。這個過程最初標(biāo)識(在3705)連接節(jié)點(diǎn)的候選組。每個候選組不包括開放節(jié)點(diǎn)配置的任何節(jié)點(diǎn)。同時,候選組包括可獲得不具有開放節(jié)點(diǎn)配置的節(jié)點(diǎn)的所有可能的節(jié)點(diǎn)配置,。
接下來,該過程選擇(在3710)一個連接節(jié)點(diǎn)的候選組。該過程隨后確定(在3715)組合的配置是否有一個或者多個預(yù)制成表的MCT,該組合配置是從所選擇的候選組的補(bǔ)充以及開放節(jié)點(diǎn)配置產(chǎn)生的。如果沒有,該過程轉(zhuǎn)到將在下面描述的3745。
如果組合的配置有一個或者多個預(yù)制成表的MCT,該過程隨后執(zhí)行3720-3740以確定組合的節(jié)點(diǎn)配置是否導(dǎo)致至少一個沒有天線節(jié)點(diǎn)的MCT。如果所有的MCT有一天線節(jié)點(diǎn),隨后針對在3710選擇的候選連接節(jié)點(diǎn)獲得的組合的配置不會作為開放節(jié)點(diǎn)配置的相關(guān)閉合配置被存儲。
特別地,在3720,該過程選擇組合配置的MCT的其中一個。隨后其標(biāo)識(在3725)這個MCT具有層1的所有節(jié)點(diǎn)(即,僅具有一個進(jìn)入到其的MCT路徑的所有節(jié)點(diǎn))。接下來,該過程確定(在3730)所有標(biāo)識的節(jié)點(diǎn)是否是開放節(jié)點(diǎn)配置的一部分。如果是,該過程接受在3710以選擇的候選組獲得的組合配置,并且存儲(在3740)組合配置(通過將在3710選擇的候選組與開放節(jié)點(diǎn)配置組合獲得的)作為一個用于開放節(jié)點(diǎn)配置的相關(guān)閉合節(jié)點(diǎn)配置。從3740,該過程轉(zhuǎn)到將在下面進(jìn)行描述的3745。
另一方面,如果該過程確定(在3730)在3725標(biāo)識的節(jié)點(diǎn)的至少其中一個不是開放節(jié)點(diǎn)配置的一部分,該過程確定其是否已經(jīng)檢查了所有的用于組合節(jié)點(diǎn)配置的MCT。如果不是,該過程轉(zhuǎn)到3745以選擇另一MCT。否則過程轉(zhuǎn)到3745。在3745,該過程確定是否已經(jīng)檢查了所有連接節(jié)點(diǎn)的候選組。如果沒有,該過程轉(zhuǎn)回到3710以選擇和檢查另一候選組。否則,該過程結(jié)束。
3.在運(yùn)行期間產(chǎn)生MCT當(dāng)路徑和閉合節(jié)點(diǎn)配置按照過程3600和3700預(yù)先制成表格時,在運(yùn)行期間的布線程序按照圖38的過程3800標(biāo)識一個或者多個用于網(wǎng)絡(luò)的布線。正像這個圖所示出的,該過程首先標(biāo)識(在3805)關(guān)于分割網(wǎng)格的網(wǎng)絡(luò)配置。
布線程序隨后確定(在3810)存儲結(jié)構(gòu)是否存儲一個或者多個用于標(biāo)識配置的MCT。如果是,該過程取回(在3815)所存儲的用于配置的MCT,并且將它們存儲到網(wǎng)絡(luò)的布線列表中。在3815之后,該過程隨后結(jié)束。
另一方面,如果該過程確定(在3810)存儲結(jié)構(gòu)沒有存儲任何用于標(biāo)識配置的MCT,該過程取回(在3820)用于標(biāo)識配置的相關(guān)閉合節(jié)點(diǎn)配置。其隨后選擇(在3825)所取回的閉合配置的其中之一。
接下來,該過程取回(在3830)用于選擇的閉合配置的MCT。隨后其確定(在3835)是否存儲所取回的用于標(biāo)識節(jié)點(diǎn)配置的MCT。在一些實(shí)施方式中,該過程純粹基于MCT的接線長度成本來進(jìn)行這個確定。換句話說,在這些實(shí)施方式中,只有當(dāng)他們是過程迄今為止已經(jīng)檢查到的用于標(biāo)識的節(jié)點(diǎn)配置的最短的MCT時,該過程存儲MCT。然而,在其它的實(shí)施方式中,該過程基于其它的因素,諸如估計(jì)的布線路徑的稠密,估計(jì)的通路數(shù)目,迄今為止選擇的MCT數(shù),等等,確定是否存儲MCT。同時,在一些實(shí)施方式中,過程3700可以以一特定順序?qū)﹂_放節(jié)點(diǎn)配置的閉合節(jié)點(diǎn)配置進(jìn)行分類。例如,過程3700可以首先對產(chǎn)生更短MCT的閉合配置進(jìn)行分類。在這些實(shí)施方式中,過程3800按照存儲順序檢查閉合節(jié)點(diǎn)配置,并且一旦其標(biāo)識R個布線,過程3800終止。
如果該過程決定不存儲所取回的MCT,該過程轉(zhuǎn)到將在下面描述的3845。然而,如果過程決定(在3830)存儲所取回的MCT,其將這些MCT存儲到用于網(wǎng)絡(luò)配置的布線列表中。該過程隨后確定(在3840)是否已經(jīng)檢查了所有用于標(biāo)識網(wǎng)絡(luò)配置的相關(guān)的閉合節(jié)點(diǎn)配置。如果沒有,過程返回到3820以選擇另一個閉合配置;在一些實(shí)施方式中,如果過程已經(jīng)標(biāo)識某一數(shù)量的MCT,過程可以不返回3820選擇另一個閉合配置。當(dāng)該過程確定已經(jīng)檢查了所有相關(guān)的節(jié)點(diǎn)配置,過程結(jié)束。
VI.遞歸4*4分割布線程序A.軟件結(jié)構(gòu)圖39示出本發(fā)明的一些實(shí)施方式的布線程序3900的軟件結(jié)構(gòu)。這個布線程序能和各種不同的布線結(jié)構(gòu)一起操作。它也可以和不同的分割、稠密和路徑界定網(wǎng)格一起操作。然而,在以下描述的實(shí)施方式中,布線程序主要被描述和以下的一起工作(1)圖3示出的八邊形布線模式,(2)圖5示出的分割網(wǎng)格,以及(3)圖9-12示出的稠密網(wǎng)格和他們相關(guān)的42個路徑。
圖39的軟件結(jié)構(gòu)包括幾個軟件模塊3905和幾個數(shù)據(jù)結(jié)構(gòu)3910。軟件模塊包括一個初始化程序3915,一個槽管理程序3925,一個求解程序3930,一個傳播程序3935,一個保存程序3940,一個線性規(guī)劃求解程序3945,一個整數(shù)線性規(guī)劃(“ILP”)轉(zhuǎn)換程序3950,而數(shù)據(jù)結(jié)構(gòu)3910包括LUT3965,電路模塊3970,網(wǎng)絡(luò)列表3972,網(wǎng)絡(luò)3972,槽3976,槽-網(wǎng)絡(luò)3978,路徑3980,和引腳3982。
布線程序3900界定分割網(wǎng)格,分割網(wǎng)格遞歸地將設(shè)計(jì)區(qū)域(即,IC布置或者IC布置區(qū)域)劃分為越來越小的子區(qū)域。在以下描述的一些實(shí)施方式中,布線程序使用3個均勻間隔的水平線和三個均勻間隔的垂直線以遞歸劃分設(shè)計(jì)區(qū)域?yàn)?6個相同尺寸的子區(qū)域(即,16個相同尺寸的槽)。圖40示出一個設(shè)計(jì)區(qū)域4005,其被遞歸地劃分為16個子區(qū)域組。特別地,設(shè)計(jì)區(qū)域最初被劃分為16個子區(qū)域,這些子區(qū)域的每一個被更進(jìn)一步地劃分為16個更小的子區(qū)域,并且該更小的子區(qū)域4010之一被進(jìn)一步劃分為16個子區(qū)域。在每個遞歸層,布線程序僅調(diào)整分割網(wǎng)格的坐標(biāo)以與在那個遞歸層的IC區(qū)域坐標(biāo)匹配。在其它的實(shí)施方式中,布線程序能使用不同形狀的分割網(wǎng)格以用于所有或者一些遞歸層。
布線程序3900以一分層、自上向下的形式為在設(shè)計(jì)區(qū)域中的每個網(wǎng)絡(luò)界定布線路徑值。布線程序的初始化程序3915最初確定遞歸層數(shù),以及由這個遞歸層數(shù)所產(chǎn)生的槽數(shù)。初始化程序也產(chǎn)生用于這些槽的數(shù)據(jù)結(jié)構(gòu)。此外,對于每個槽,初始化程序在槽內(nèi)生成用于每個槽的槽-網(wǎng)絡(luò)數(shù)據(jù)結(jié)構(gòu),并且這個槽-網(wǎng)絡(luò)數(shù)據(jù)結(jié)構(gòu)在那個槽內(nèi)存儲網(wǎng)絡(luò)配置。對于每個槽,初始化程序也標(biāo)識與這個槽相交的所有電路模塊。
在一些實(shí)施方式中,初始化程序也界定每個槽內(nèi)布線路徑的容量,并且存儲這些容量到槽的數(shù)據(jù)結(jié)構(gòu)中。然而,在以下描述的實(shí)施方式中,當(dāng)槽管理程序引導(dǎo)每個槽的布線時,其定義這些容量。
對于被劃分為更小子槽的每一槽,槽管理程序命令求解程序3930選擇用于在槽中有實(shí)際或者虛引腳的每一網(wǎng)絡(luò)的布線。求解程序使用每一網(wǎng)絡(luò)配置(1)標(biāo)識一個或者多個用于每一網(wǎng)絡(luò)的最佳布線,并且有時(2)產(chǎn)生偽引腳來標(biāo)識一個或者多個用于每一網(wǎng)絡(luò)的次最佳布線。求解程序基于在前面部分V描述的方法的其中任何一個,標(biāo)識一個或者多個用于一特定配置的布線。
求解程序隨后用公式表示一LP問題,并且將這些解決提供給LP求解程序3945,LP求解程序3945依序返回多個實(shí)數(shù)解。這些實(shí)數(shù)解隨后通過ILP求解程序3950轉(zhuǎn)換為整數(shù)解。這些整數(shù)解指定用于每一網(wǎng)絡(luò)的布線,并且求解程序?qū)⒚恳痪W(wǎng)絡(luò)的布線信息存儲到用于當(dāng)前槽的網(wǎng)絡(luò)的槽-網(wǎng)絡(luò)數(shù)據(jù)結(jié)構(gòu)中。
在求解程序?yàn)槊恳辉诋?dāng)前槽中有實(shí)際或者虛引腳的網(wǎng)絡(luò)規(guī)定布線后,如果當(dāng)前槽不是一葉槽,槽管理程序3925調(diào)用傳播程序3935。葉槽是一個有子槽的槽,但是其子槽沒有任何的子槽(即,其槽沒有被分割)。葉層槽的子槽被稱為Gcell。
當(dāng)傳播程序被槽管理程序調(diào)用時,其確定由用于當(dāng)前布線層的求解程序指定的布線路徑如何向下傳播到當(dāng)前槽的子槽。對于在最高層槽之后和在葉層之前的槽,傳播程序也執(zhí)行一個隨動傳播操作,隨動傳播操作將由在先前布線層的傳播程序指定的布線路徑向下傳播一層。
對于在當(dāng)前槽中的每一網(wǎng)絡(luò),傳播程序必須確定在所有的受網(wǎng)絡(luò)布線路徑影響的子槽中網(wǎng)絡(luò)引腳分布。傳播過程經(jīng)常需要在當(dāng)前槽的孫槽(即,當(dāng)前槽的子槽的子槽)中添加虛引腳。換句話說,傳播程序可以在當(dāng)前槽的子槽中修改網(wǎng)絡(luò)的配置。
本發(fā)明的不同實(shí)施方式使用不同的傳播程序。下面將描述兩個不同的傳播程序。第一傳播程序列舉幾個用于每個網(wǎng)絡(luò)布線的傳播解,并且隨后使用LP求解程序3945和ILP轉(zhuǎn)換程序3950來選擇用于每一網(wǎng)絡(luò)的傳播解。另一方面,第二傳播程序是一個順序傳播程序,其使用一個貪婪算法來選擇和嵌入一個用于每一網(wǎng)絡(luò)布線的傳播到當(dāng)前槽中。在以下所描述的具體實(shí)施方式
中,當(dāng)可以應(yīng)用時,這兩個傳播使用一個順序傳播程序來執(zhí)行隨動傳播。
所標(biāo)識的用于每一網(wǎng)絡(luò)布線的傳播在受影響的子槽中指定一用于網(wǎng)絡(luò)的特定配置,并且傳播程序存儲網(wǎng)絡(luò)配置到用于受影響子槽的網(wǎng)絡(luò)的槽-網(wǎng)絡(luò)數(shù)據(jù)結(jié)構(gòu)中。以下所描述的實(shí)施方式通過16位的信息串來指定每一網(wǎng)絡(luò)的配置,其中每一位與槽的子槽相對應(yīng)。
在求解程序已經(jīng)為葉槽中的每一網(wǎng)絡(luò)規(guī)定布線之后,槽管理程序調(diào)用保存程序3940以將每一網(wǎng)絡(luò)布線的路徑結(jié)構(gòu)鏈接到他們各自的網(wǎng)絡(luò)主數(shù)據(jù)結(jié)構(gòu)。該保存程序傳播程序?yàn)橐蝗~層槽的一父槽(即,用于一個Gcell的祖父槽)指定的傳播路徑的路徑數(shù)據(jù)結(jié)構(gòu)鏈接到主網(wǎng)絡(luò)數(shù)據(jù)結(jié)構(gòu)。這些傳播路徑包括傳播程序標(biāo)識的以下路徑(1)用于求解程序標(biāo)識的布線路徑,以及(2)用于在先前的布線層傳播程序指定的布線路徑。
以這種形式,鏈接到網(wǎng)絡(luò)的主數(shù)據(jù)結(jié)構(gòu)的路徑數(shù)據(jù)結(jié)構(gòu)共同表示用于布線程序指定網(wǎng)絡(luò)的最終布線。在一些實(shí)施方式中,這樣的布線是用于網(wǎng)絡(luò)的通用布線。圖49-83進(jìn)一步描述軟件模塊3905。然而,在描述這些軟件模塊之前,數(shù)據(jù)結(jié)構(gòu)3910將通過參考圖41-48描述如下。
B.數(shù)據(jù)結(jié)構(gòu)1.LUTLUT3965存儲有關(guān)連接包含網(wǎng)絡(luò)電路模塊的子區(qū)域的布線信息(諸如布線路徑,長度,路徑使用等)。這些布線的其中一些具有完全或者部分對角的邊。在以下描述的實(shí)施方式中,LUT存儲用于所有可能網(wǎng)絡(luò)配置的布線的長度,布線路徑和路徑使用概率值。幾個用于選擇布線和將他們的長度,布線路徑和路徑使用概率值預(yù)先制成表格的過程已經(jīng)在以上的部分V中討論了。一名普通的技術(shù)人員將明白,其它的實(shí)施方式也存儲樹的其它屬性。在利用圖38的布線生成過程3800的實(shí)施方式中,LUT為每一開放節(jié)點(diǎn)配置存儲一個或者多個相關(guān)閉合節(jié)點(diǎn)配置。
在一些實(shí)施方式中,布線程序3900能用不同的布線結(jié)構(gòu)進(jìn)行操作。在這些實(shí)施方式中,可利用不同的LUT以存儲用于不同布線模式的布線屬性。例如,LUT能存儲布線信息,用于(1)使用曼哈頓和±45°對角線的第一布線模式, (2)使用曼哈頓和±120°對角線的第二布線模式, (3)僅使用曼哈頓線的第三布線模式等。一旦選擇了布線模式,用于每一網(wǎng)絡(luò)配置的布線信息能從適合用于選擇布線模式的LUT中恢復(fù)。
在布線程序可以用不同布線模式操作的實(shí)施方式中,布線程序通常在設(shè)計(jì)過程開始時選擇布線模式。例如,在一些實(shí)施方式中,過程400在其選擇分割網(wǎng)格之前,在405選擇布線模式。而且,一些實(shí)施方式可以從一布線模式轉(zhuǎn)換到用于不同設(shè)計(jì)過程的不同部分或者在設(shè)計(jì)層次更低層的另一模式。
在以下所描述的實(shí)施方式中,布線程序在布線過程期間使用在圖3示出的八邊形布線模式。布線程序使用一個的LUT,LUT存儲用于圖9-12中稠密網(wǎng)格的和他們相關(guān)的42個路徑的選擇路徑信息(即,布線,長度,路徑使用值,用于閉合組槽的樹,節(jié)點(diǎn)組,等等)。
2.網(wǎng)絡(luò)列表,db網(wǎng)絡(luò),槽-網(wǎng)絡(luò);引腳,以及路徑結(jié)構(gòu)圖41示出用于一網(wǎng)絡(luò)列表4100的數(shù)據(jù)結(jié)構(gòu)。這個列表包括一個或者多個字段4105,每個字段指示(例如,指向)db網(wǎng)絡(luò)數(shù)據(jù)結(jié)構(gòu)4110。每一網(wǎng)絡(luò)有一db網(wǎng)絡(luò)數(shù)據(jù)結(jié)構(gòu),其作為用于網(wǎng)絡(luò)的主數(shù)據(jù)結(jié)構(gòu)。圖42示出db網(wǎng)絡(luò)數(shù)據(jù)結(jié)構(gòu)。這個數(shù)據(jù)結(jié)構(gòu)包括一索引字段4205,其包括軟件模塊(例如,傳播程序)中的一些用以標(biāo)識網(wǎng)絡(luò)的值。這個數(shù)據(jù)結(jié)構(gòu)也包括多個指示(例如,指向)引腳數(shù)據(jù)結(jié)構(gòu)的字段4210。
圖43示出一個簡單引腳數(shù)據(jù)結(jié)構(gòu)4300,其包括指定引腳位置的位置字段。在一些實(shí)施方式中,引腳位置以不僅指定它的x和y位置,而且指定其層的三維位置提供。然而,其它實(shí)施例存儲管腳層作為引腳宏的部分。這個引腳宏能夠作為電路宏的一部分被存儲,該電路宏參照下述的槽數(shù)據(jù)結(jié)構(gòu)。
db網(wǎng)絡(luò)數(shù)據(jù)結(jié)構(gòu)也包括一個或者多個字段4220,每個字段指示(例如,指向)如在圖44示出的路徑數(shù)據(jù)結(jié)構(gòu)4400。在一些實(shí)施方式中,保存程序通過參考字段4220將為每個網(wǎng)絡(luò)指定最終最低層布線路徑的路徑數(shù)據(jù)結(jié)構(gòu)鏈接到他們各自網(wǎng)絡(luò)的db網(wǎng)絡(luò)。
路徑數(shù)據(jù)結(jié)構(gòu)包括一個字段,其規(guī)定路徑類型為水平(H),垂直(V),第一對角方向(E),或者第二對角方向(W)。這個結(jié)構(gòu)也包括字段4410以存儲路徑標(biāo)識(id),該標(biāo)識是一個從1到41的數(shù)字,其用以將數(shù)據(jù)結(jié)構(gòu)路徑標(biāo)識為在兩個網(wǎng)格中界定的42個路徑的其中之一。另外,這個數(shù)據(jù)結(jié)構(gòu)包括字段4415,將指示(例如,指向)與路徑相關(guān)的db網(wǎng)絡(luò)。最后,這個數(shù)據(jù)結(jié)構(gòu)具有兩個字段4420,其指向是與兩個槽相關(guān)的(incident upon)的路徑的數(shù)據(jù)結(jié)構(gòu)。這兩個字段在確認(rèn)過程期間可使用以確保布線程序3900指定的布線的連貫性。
對于每一槽,布線程序3900為具有實(shí)際或者虛引腳的網(wǎng)絡(luò)界定一個用于每一網(wǎng)絡(luò)的槽-網(wǎng)絡(luò)數(shù)據(jù)結(jié)構(gòu),并且這個槽-網(wǎng)絡(luò)數(shù)據(jù)結(jié)構(gòu)存儲網(wǎng)絡(luò)配置到那個槽中。圖45示出這個槽-網(wǎng)絡(luò)數(shù)據(jù)結(jié)構(gòu)。這個結(jié)構(gòu)包括指示(例如,指向)其網(wǎng)絡(luò)的db網(wǎng)絡(luò)的字段4505。它也包括一個字段4510,其存儲一指定槽中網(wǎng)絡(luò)引腳分布的位串。正像在以下進(jìn)一步所討論的,初始化程序最初基于槽中所有網(wǎng)絡(luò)的實(shí)際引腳設(shè)置這個字段。在遞歸過程期間,傳播程序可以修改在這個字段4510的位串以說明虛擬引腳。槽-網(wǎng)絡(luò)數(shù)據(jù)結(jié)構(gòu)也包括一個字段,其存儲42位選擇布線的信息串。求解程序在其選擇槽中網(wǎng)絡(luò)的布線之后設(shè)置這個位串。
3.槽布線程序3900遞歸地將設(shè)計(jì)區(qū)域分隔成16個子區(qū)域組或者槽組。圖46呈現(xiàn)了概念上說明由布線程序界定的槽(即子區(qū)域)的分層結(jié)構(gòu)圖。這個圖4600說明遞歸過程的兩層4610和4615。在這個圖中,每個節(jié)點(diǎn)代表遞歸過程中特定階段的IC區(qū)域。并且,在這個圖中,根節(jié)點(diǎn)代表整個設(shè)計(jì)區(qū)域,而每個非根節(jié)點(diǎn)代表設(shè)計(jì)區(qū)域的一部分。
在一個槽分層結(jié)構(gòu)中,每個節(jié)點(diǎn)有0個子節(jié)點(diǎn)或者16個子節(jié)點(diǎn)。當(dāng)布線程序?qū)⒃摴?jié)點(diǎn)區(qū)域分割成16個子區(qū)域時節(jié)點(diǎn)有16個子節(jié)點(diǎn)。相反,當(dāng)節(jié)點(diǎn)相應(yīng)的區(qū)域沒被分割時節(jié)點(diǎn)沒有子節(jié)點(diǎn)。
在一些實(shí)施方式中,布線程序3900界定槽數(shù)據(jù)結(jié)構(gòu)以用于表示在槽分層結(jié)構(gòu)中的每個節(jié)點(diǎn)。圖47呈現(xiàn)了這樣一個用于槽的數(shù)據(jù)結(jié)構(gòu)4700。這個數(shù)據(jù)結(jié)構(gòu)指定了槽的坐標(biāo)4710。它也包括一個到槽中電路模塊列表4740的參考(reference)(例如,指示器)4720。列表4740包括一個或者多個到槽中一個或者多個電路模塊的參考(例如,一個或者多個指示器)4745。
槽數(shù)據(jù)結(jié)構(gòu)4700也包括到槽的槽-網(wǎng)絡(luò)的列表4730的參考。這個列表包括涉及槽-網(wǎng)絡(luò)數(shù)據(jù)結(jié)構(gòu)4500的參考4735。在以下描述的具體實(shí)施方式
中,槽數(shù)據(jù)結(jié)構(gòu)不含有對其子槽的參考。這些具體實(shí)施方式
的其中一些在列表中按照預(yù)定的次序?qū)@些槽排序,并且基于該次序,這些具體實(shí)施方式
標(biāo)識相應(yīng)的子槽和母槽。槽數(shù)據(jù)結(jié)構(gòu)4700也包括指定槽的唯一標(biāo)識符的字段4725。
4.電路模塊圖48示出一個電路模塊的數(shù)據(jù)結(jié)構(gòu)4800。這個數(shù)據(jù)結(jié)構(gòu)存儲電路模塊的方向(4805)和位置(4810)。它也包括一個對電路宏(circuitmacro)的參考4815,電路宏包括對于電路模塊的說明。例如,電路宏指的是在電路模塊中對于障礙的數(shù)據(jù)結(jié)構(gòu)4825。障礙數(shù)據(jù)結(jié)構(gòu)指定有關(guān)障礙的信息,諸如障礙的層(4830)和形狀(4835)。
C.初始化程序圖49示出一個由初始化程序在布線操作開始時執(zhí)行的過程4900。在這個過程開始之前,通常布線程序已經(jīng)接收了布置的網(wǎng)絡(luò)列表,技術(shù)界定(包括層數(shù),優(yōu)選的,每層優(yōu)選的布線方向,每層的布線間距(routingpitch),等等),以及對于最低層槽(即,對于Gcell)的軌跡(track)數(shù)。
該過程從用于最低層槽的軌跡數(shù)據(jù),每個軌跡的間距,和設(shè)計(jì)尺寸初始地計(jì)算(在4905)遞歸數(shù)。為了做這些,該過程初始地用每個軌跡的間距乘以軌跡數(shù)據(jù),獲得最低層槽的大小。結(jié)果值大于所計(jì)算的大小時,其隨后重復(fù)地將設(shè)計(jì)尺寸除4。隨著每次劃分,層數(shù)計(jì)數(shù)器增加1。一旦結(jié)果值小于所計(jì)算的大小,該過程停止相處和計(jì)數(shù)。
基于層數(shù),過程隨后計(jì)算(在4910)槽數(shù)。每層有16個子(child)。因此,槽的總數(shù)是16**n的總數(shù),其中n在0到層數(shù)之間變化。在此階段,這個過程也產(chǎn)生一所有槽的列表。
接下來,這個過程示例(在4915)對于在所有遞歸層上的槽的槽數(shù)據(jù)結(jié)構(gòu)。該過程隨后(在4920)(1)對于每個網(wǎng)絡(luò),標(biāo)識網(wǎng)絡(luò)貫穿的所有槽,以及(2)對于每一標(biāo)識的槽,示例槽-網(wǎng)絡(luò)數(shù)據(jù)結(jié)構(gòu)以將網(wǎng)絡(luò)配置存儲在該槽中。
圖50示出過程5000,一些具體實(shí)施方式
使用其來執(zhí)行4920。特別地,這個過程是一個在最高層槽開始的遞歸過程,并且對于每個網(wǎng)絡(luò)執(zhí)行。每次當(dāng)這個過程被調(diào)用的時候,它取回槽和網(wǎng)絡(luò)。正像在圖50中所示出的,這個過程5000最初計(jì)算(在5005)接收的槽的邊界框。
它隨后確定(在5010)接收網(wǎng)絡(luò)的任一引腳是否包含在接收槽的邊界框中。如果沒有,這個過程結(jié)束。如果是,過程產(chǎn)生(在5015)一個槽-網(wǎng)絡(luò)記錄,其包括用于當(dāng)前槽的網(wǎng)絡(luò)的引腳分布。另外,這個過程遞歸地調(diào)用(在5020)其本身以用于所接收的網(wǎng)絡(luò)和當(dāng)前槽的每一子槽。過程5000隨后結(jié)束。
在過程4900之后,用具體例子說明槽-網(wǎng)絡(luò)數(shù)據(jù)結(jié)構(gòu)以在槽中存儲網(wǎng)絡(luò)配置,過程4900(在4925)將每一電路模塊添加到其相交的槽的模塊表格中,隨后結(jié)束。圖51示出過程5100,一些具體實(shí)施方式
使用其執(zhí)行4925。特別地,這個過程是一個在最高層槽開始遞歸過程并且對于每個電路模塊執(zhí)行。每次當(dāng)這個過程被調(diào)用的時候,它接收槽和電路模塊。正像在圖51中所示出的,這個過程初始地計(jì)算(在5105)接收槽的邊界框。
過程5100隨后計(jì)算(在5110)接收的電路模塊的邊界框。它隨后確定(在5115)兩個邊界框是否相交。如果沒有,這個過程結(jié)束。如果是,過程(在5120)將電路模塊添加到與當(dāng)前槽相關(guān)的電路模塊的列表中。另外,這個過程遞歸地調(diào)用(在5125)它本身以用于所接收的模塊和當(dāng)前槽的每一子槽。這個過程5100隨后結(jié)束。
D.槽管理程序圖52示出一個由槽管理程序3925在初始化程序3915完成它的操作之后執(zhí)行的過程5200。最初,過程5200設(shè)置(在5205)當(dāng)前層為最高層槽。接下來,過程界定在當(dāng)前層槽內(nèi)的布線路徑的容量。在一些具體實(shí)施方式
中,這個過程接收或者能從存儲結(jié)構(gòu)中取回用于第一層的布線路徑容量,并且由此基于子槽和母槽間已知的幾何關(guān)系用數(shù)學(xué)方法計(jì)算布線路徑容量。在其它的實(shí)施方式中,過程實(shí)時計(jì)算用于所有層的布線路徑容量。然而,這些具體實(shí)施方式
的一些仍然從那些其他層計(jì)算一些遞歸層的布線路徑容量。
正像前面所提到的,一些具體實(shí)施方式
從正交于路徑的尺寸計(jì)算在一特定遞歸層的每個路徑的容量。例如,一些具體實(shí)施方式
通過將相應(yīng)的直角邊的尺寸(即與特定路徑正交的邊的尺寸)除以對應(yīng)的特定路徑的金屬層的間距以計(jì)算每個特定路徑的容量。一些實(shí)施方式將金屬層的間距界定為線到通路的間距。一些具體實(shí)施方式
將線到通路(line-to-via)的間距解釋為那個金屬層上的互連線間的最小所需距離,加上線路寬度的1/2,加上包括金屬重疊通路(via)的寬度的1/2。
正像上面所描述的,在一些具體實(shí)施方式
中,對角路徑的容量不同于曼哈頓(Manhattan)路徑容量。通過對角路徑和曼哈頓路徑正交邊的不同的尺寸,這可以模式化。通過間距取決于互連線的類型(例如,使對角間距不同于曼哈頓線間距),其也可以模式化。這也可通過使間距取決于層,進(jìn)一步模式化。例如,在一些具體實(shí)施方式
中,在-45°金屬層的間距不同于在45°金屬層的間距。
在5215,過程將當(dāng)前槽設(shè)置為當(dāng)前層的第一槽。正像在以下進(jìn)一步所描述的,過程5200順次檢查當(dāng)前層的槽。然而,一名普通技術(shù)人員將認(rèn)識到其它的具體實(shí)施方式
可以以另一種順序檢查槽。例如,一些具體實(shí)施方式
中可以首先檢查最稠密的槽。
隨后過程指示(在5220)求解程序以選擇用于當(dāng)前層的當(dāng)前槽中的所有網(wǎng)絡(luò)的布線。一旦求解程序選擇布線路徑并且存儲這些路徑在槽-網(wǎng)絡(luò)數(shù)據(jù)結(jié)構(gòu)字段4515中,槽管理程序確定當(dāng)前層是否是最后的遞歸層。
如果不是,過程指示(在5230)傳播程序界定所選擇的布線傳播到下一更低的遞歸層的子槽(即,傳播到當(dāng)前槽的子槽的子槽)。對于在最高級槽以后的槽,傳播程序也可以執(zhí)行一個隨動傳播操作,該隨動傳播操作將先前布線層規(guī)定的路徑向下傳播一層。在界定傳播到下一個更低的遞歸層時,傳播程序可以通過在當(dāng)前子槽的子槽中增加虛引腳來修改當(dāng)前子槽中的網(wǎng)絡(luò)配置。
如果過程確定當(dāng)前槽在最后遞歸層(即,當(dāng)前槽是一個葉槽),它指示(在5235)保存程序?qū)?dāng)前葉槽的每個網(wǎng)絡(luò)布線的路徑結(jié)構(gòu)與他們各自網(wǎng)絡(luò)的主數(shù)據(jù)結(jié)構(gòu)相連。正像上面所描述的,保存程序也將傳播程序指定的用于葉層槽的父槽(即,用于一個Gcell的祖父槽)的傳播路徑的路徑數(shù)據(jù)結(jié)構(gòu)與主網(wǎng)絡(luò)數(shù)據(jù)結(jié)構(gòu)相連。這些傳播路徑包括傳播程序標(biāo)識的用于以下的路徑(1)用于由保存程序指定的布線路徑和(2)用于先前布線層的傳播程序規(guī)定的布線路徑。以這種方式,連接到網(wǎng)絡(luò)主數(shù)據(jù)結(jié)構(gòu)的路徑數(shù)據(jù)結(jié)構(gòu)共同代表用于布線程序指定的網(wǎng)絡(luò)的最終布線。在一些具體實(shí)施方式
中,這樣一個布線是用于網(wǎng)絡(luò)的通用布線。
從5230和5235,過程轉(zhuǎn)移到5240,其中其確定是否已經(jīng)檢查了在當(dāng)前層的最后槽。如果沒有,過程選擇(在5245)當(dāng)前層的另一個槽,并且返回到5220以調(diào)用求解程序用于這個槽。否則,過程確定(在5250)它是否在最后一個遞歸層。如果不是,該過程選擇下一個遞歸層,并且返回到5210以指定在下一個更低遞歸層的用于網(wǎng)絡(luò)的更詳細(xì)路徑。。當(dāng)該過程確定(在5250)它在最后的遞歸層時,過程結(jié)束。
E.求解程序正像上面所論述的,求解程序3930負(fù)責(zé)(1)列舉一個或者多個用于每個網(wǎng)絡(luò)的布線,(2)指示LP/ILP求解程序以選擇用于每個網(wǎng)絡(luò)的布線,并且(3)存儲選擇的結(jié)果到一個當(dāng)前槽的槽-網(wǎng)絡(luò)數(shù)據(jù)結(jié)構(gòu)中。圖53示出由求解程序所執(zhí)行的過程5300。在一些具體的實(shí)施方式中,當(dāng)槽管理程序調(diào)用求解程序并且為其提供槽來進(jìn)行布線時,這個過程開始。
過程5300最初預(yù)測(在5305)用于槽中每個路徑資源的稠密。一種用于預(yù)測路徑稠密的方式將參考圖54和55描述如下。過程接下來標(biāo)識(在5310)在所提供的槽中的一個或者多個用于每個網(wǎng)絡(luò)的布線。一種用于對當(dāng)前槽中的網(wǎng)絡(luò)標(biāo)識布線的方式參考圖57-60描述如下。
在標(biāo)識用于當(dāng)前槽中每個網(wǎng)絡(luò)的一個或者多個布線之后(即,用于有與當(dāng)前槽數(shù)據(jù)結(jié)構(gòu)相連的槽-網(wǎng)絡(luò)配置的每個網(wǎng)絡(luò)),過程5300通過將傳播分解為下面更低的遞歸層來分配(在5315)接線長度成本到每一取回的樹。在一些具體的實(shí)施方式中,過程使用貪婪技術(shù)來說明這個傳播。用于為每個恢復(fù)的樹分配成本的方式參考圖64描述如下。
一旦求解程序分配接線長度成本到列舉的可能布線,求解程序用公式表示(在5320)用于LP求解程序3945的問題,并且LP求解程序解決(在5325)LP問題。用公式表示和求解LP問題的方法將在以下的分部VI.E.4中進(jìn)行描述。
在5325之后,過程5300將LP求解轉(zhuǎn)換為整數(shù)LP(“ILP”)求解。一些具體實(shí)施方式
使用隨機(jī)舍入法以實(shí)現(xiàn)這個轉(zhuǎn)換。隨機(jī)舍入法一種公知的技術(shù),并且這種技術(shù)的眾多的例子可以在文獻(xiàn)中找到,例如,一個這樣的參考文獻(xiàn)在由RajeevMotwani和PrabhakarRaghavan編寫的劍橋大學(xué)出版社出版(1995,1997)的《隨機(jī)算法》中公開了。
隨機(jī)舍入過程的一個例子如下。首先,該過程將從LP求解程序返回的記分(score)映射到0到1之間的概率。例如,當(dāng)LP求解程序返回一個在0到1之間的實(shí)數(shù)解時,在返回的解和在0和1之間的概率之間存在一對一的映射。第二,舍入過程產(chǎn)生一個用于每個網(wǎng)絡(luò)的0和1之間的隨機(jī)數(shù)。第三,舍入過程選擇網(wǎng)絡(luò)求解,該求解映射到產(chǎn)生的用于網(wǎng)絡(luò)的隨機(jī)數(shù)。第四,舍入過程基于某個或者一些目標(biāo)函數(shù)(諸如,LP求解程序使用的那些函數(shù))測量用于網(wǎng)絡(luò)的選擇布線組的質(zhì)量。第五,舍入過程迭代地重復(fù)第二到第四操作直到解空間充分探察。第六,該過程選擇生成最高質(zhì)量記分的布線組。
基于在5330選擇的布線組,過程在當(dāng)前槽的每個槽-網(wǎng)絡(luò)數(shù)據(jù)結(jié)構(gòu)中存儲(在5335)一個42位選擇的布線信息串。這個42位的信息串指定當(dāng)前槽中所選擇的網(wǎng)絡(luò)布線采取的路徑。這個過程隨后結(jié)束。
1.預(yù)測剩余的路徑容量正像前面所描述的,過程5300預(yù)測(在5305)在當(dāng)前槽中路徑資源的稠密。在一些具體實(shí)施方式
中,過程通過估計(jì)槽中每個路徑的剩余容量來指定路徑稠密。例如,在一些具體實(shí)施方式
中,過程通過最初(1)估計(jì)每個路徑的非稠密容量(unblocked capacity),(2)估計(jì)每個路徑的使用,和(3)從其非稠密容量估計(jì)中減去每個路徑的使用估計(jì),來計(jì)算路徑容量。用于估計(jì)非稠密路徑容量的一種方式將參考圖54來描述如下,而用于估計(jì)路徑使用的方式將通過參考圖55來描述如下。
a.估計(jì)每個路徑的非稠密容量圖54示出一個用于估計(jì)當(dāng)前槽中每個路徑的非稠密容量的過程5400。最初,這個過程(在5402)數(shù)據(jù)結(jié)構(gòu)分配浮點(diǎn)數(shù)的42字段。每個字段是用于存儲42個路徑其中之一的非稠密容量。在5402,過程也初始化數(shù)據(jù)結(jié)構(gòu)中的每一個路徑字段為默認(rèn)的用于路徑的容量。
在5404,過程在電路模塊的當(dāng)前槽列表中選擇一個電路模塊。該過程隨后取回(在5406)用于選擇電路模塊的電路宏。其隨后選擇(在5408)電路宏上的障礙,并且通過使用電路模塊的位置計(jì)算(在5410)所選擇的障礙的邊界框。
接下來,過程(在5412)選擇當(dāng)前槽的42個路徑的其中一個。隨后確定(在5414)在5412選擇的路徑和在5408選擇的障礙是否是在同一層。如果所選擇的路徑層與所選擇的障礙層相匹配,過程計(jì)算(在5422)所選擇路徑的邊界框。不同的具體實(shí)施方式
所界定的路徑邊界框不同。例如,一些具體實(shí)施方式
將曼哈頓和非曼哈頓路徑的邊界框界定為路徑周圍的矩形暈圈(halos)。在這樣的一種方法下,對角路徑周圍的矩形暈圈相對于x-y坐標(biāo)軸被對角地定位。其它具體實(shí)施方式
可以不同地界定對角路徑的邊界框。例如,一些具體實(shí)施方式
可以根據(jù)四個直角暈圈(四個邊界框)來界定這個邊界框,該四個直角暈圈包圍四個曼哈頓邊(例如,對角路徑的邊界框26可以包括四個邊界,包圍邊E1,E4,E13和E14)在對角路徑周圍。
過程隨后計(jì)算(在5424)路徑邊界框的面積。過程接下來標(biāo)識(在5426)選擇路徑的邊界框與選擇電路模塊的邊界框的交集(intersection),并且計(jì)算(在5428)這個交集的面積。
它隨后通過用計(jì)算的路徑面積除以計(jì)算的交集面積來計(jì)算(在5430)一個阻礙因子。該過程隨后(在5432)將阻礙因子與默認(rèn)路徑容量相乘以產(chǎn)生一個由該障礙物阻斷的路徑軌跡數(shù)目的估計(jì)值。過程隨后從路徑當(dāng)前未稠密容量中減去這個相乘的結(jié)果,路徑當(dāng)前未稠密容量存儲在42個字段數(shù)據(jù)結(jié)構(gòu)中的路徑。該過程接下來轉(zhuǎn)到下面描述的5416。
當(dāng)所選擇的路徑層與所選擇的障礙層不同時,過程也從5414轉(zhuǎn)到5416。在5416,過程確定是否其已經(jīng)檢查了當(dāng)前槽中的所有路徑。如果沒有,過程返回到5412以選擇當(dāng)前槽的另一個路徑。
然而,如果所選擇的路徑是當(dāng)前槽的最后路徑,該過程確定(在5418)是否已經(jīng)檢查了在5404選擇的電路模塊的所有障礙。如果沒有,過程轉(zhuǎn)到5408以選擇所選擇電路模塊的另一個障礙。否則,該過程確定(在5420)其是否已經(jīng)檢查了當(dāng)前槽中的所有電路模塊。如果沒有,該過程轉(zhuǎn)到5404以選擇在當(dāng)前槽的另一個電路模塊。
過程5400在當(dāng)其已經(jīng)檢查了在當(dāng)前槽的所有電路模塊時結(jié)束。在此階段,42個字段的數(shù)據(jù)結(jié)構(gòu)規(guī)定當(dāng)前槽中的42個路徑的非稠密容量。特別地,在此階段,42個字段的每一個指定42個路徑的其中一個的非稠密容量。
b.路徑使用估計(jì)圖55示出用于估計(jì)槽中的每個路徑的使用的過程5500。這個過程是一個遞歸過程,其根據(jù)三個使用分量計(jì)算當(dāng)前槽中的每個路徑的使用。一個路徑使用分量表示由于當(dāng)前槽的子槽之間的布線的路徑使用。另一個分量表示由于在當(dāng)前槽的子槽中的布線的路徑稠密。第三個分量說明路徑稠密上的路徑(vias)的影響。每個普通技術(shù)人員將明白其他具體實(shí)施方式
計(jì)算的路徑使用不同。例如,對于每個在葉槽的僅一個子槽中的網(wǎng)絡(luò),一些具體實(shí)施方式
也包括一個象征的路徑使用值,該值用于與包含網(wǎng)絡(luò)的子槽上相關(guān)的每個路徑。
過程5500在每次接收到當(dāng)前槽時開始。如圖55所示出的,過程5500最初確定(在5502)當(dāng)前槽是否是葉槽。如果是,該過程轉(zhuǎn)到將在下面進(jìn)行描述的5512。如果不是,過程執(zhí)行5504到5510以計(jì)算由于在當(dāng)前槽的子槽中的布線的使用值。特別地,在5504,過程選擇當(dāng)前槽中的其中一個子槽。過程隨后估計(jì)(在5506)當(dāng)前槽的每個子槽的每個路徑的使用。在一些具體實(shí)施方式
中,過程通過遞歸調(diào)用其本身用于每個子槽來實(shí)現(xiàn)路徑使用估計(jì)。
過程隨后確定(在5508)在5504所選擇的子槽是否是最后一個子槽。如果不是,過程選擇(在5504)另一個子槽,并且估計(jì)(在5506)在新選擇的子槽中的路徑使用。否則,該過程轉(zhuǎn)到5510以計(jì)算由于在當(dāng)前槽的子槽中的稠密的路徑使用分量。
在一些
具體實(shí)施例方式
中,該過程將在5510計(jì)算的路徑使用值存儲到一個具有42個字段的用于將當(dāng)前槽的42個路徑的使用值的數(shù)據(jù)結(jié)構(gòu)中。在一些具體實(shí)施方式
中,過程將這個數(shù)據(jù)結(jié)構(gòu)和當(dāng)前槽一起接收,而在其它的具體實(shí)施方式
中,過程5500不接收這樣的一個數(shù)據(jù)結(jié)構(gòu),而是在過程開始時初始化數(shù)據(jù)結(jié)構(gòu)。
在5510,過程計(jì)算由于子槽中稠密(congestion)的路徑使用分量。例如,該過程能通過公式根據(jù)在子槽1和2內(nèi)的稠密來界定在子槽1和2之間的路徑1的分量使用值,該公式是這樣的路徑_1_使用(path_1_use)=[(0.75)+(0.25)*(1/(遞歸層數(shù)—當(dāng)前層))]*(1/2)*(1/2*(路徑[1][2]+路徑[1][5]+路徑[1][8]+路徑[1][11])+1/3*(路徑[1][1]+路徑[1][4]+路徑[1][7]+路徑[1][10])+1/6*(路徑[1]
+路徑[1][3]+路徑[1][6]+路徑[1][9])+1/2*(路徑[2]
+路徑[2][3]+路徑[2][6]+路徑[2][9])+1/3*(路徑[2][1]+路徑[2][4]+路徑[2][7]+路徑[2][10])+1/6*(路徑[2][2]+路徑[2][5]+路徑[2][8]+路徑[2][11])),其中,路徑[i][j]指的是子槽i的路徑j(luò)的使用。相似的公式可以用于類似地界定當(dāng)前槽中的其他41個路徑的分量使用值。
上面的公式僅在子槽中檢查與路徑1在一條直線上的水平路徑線。特別地,它根據(jù)子槽1和2的所有水平路徑(即,路徑0-11)檢查路徑1的分量使用值。子槽1和2的使用值的總和乘以1/2,以用于反映當(dāng)前槽中的路徑1的容量同樣被受到子槽1和2中的路徑的容量影響。
由于以下的原因,乘數(shù)1/2,1/3和1/6用于子槽1和2的總和。其目標(biāo)是推測有多少線能夠通過路徑。這樣一些線將在越過路徑之后立即終止,而一些將越過與路徑關(guān)聯(lián)的槽的整個寬度。假定使用路徑的線的“端點(diǎn)”為均勻分布,以至對于路徑1的傳播0而言,1/4將終止在子槽2的槽0,1/4將終止在子槽2的槽1,1/4終止在子槽2的槽2內(nèi),1/4將終止在子槽2的槽3內(nèi)以及之外。這意味著使用路徑1的線的3/4也將使用子槽2內(nèi)的路徑0,2/4將使用子槽2內(nèi)的路徑1,并且1/4將使用子槽2中的路徑3,這樣在傳播路徑的估計(jì)使用上給出這3個路徑使用的相對影響的比率3∶2∶1(或3/6,2/6,1/6)。
而且,在子槽1和2中的使用值的總和乘以[(0.75)+(0.25)*(1/(遞歸層—當(dāng)前層))]。這個相乘是基于大部分網(wǎng)絡(luò)布線包括一連接兩個實(shí)際引腳的單獨(dú)路徑的假設(shè)。如果假設(shè)在一個孫槽中的引腳均勻分布,隨后,使用給定路徑的3/4的布線將從整個包含在每個子槽中的網(wǎng)絡(luò)看到稠密(congestion)。當(dāng)布線程序移動到下一層時,更大比例的布線橫越整個孫槽,并且由此更多的網(wǎng)絡(luò)將看到孫槽中的整個稠密,從而證明應(yīng)該將乘法器增加至1。
從5502或5510,該過程轉(zhuǎn)到5512。該過程執(zhí)行操作5512到5528,計(jì)算由于在當(dāng)前槽的子槽之間的布線引起分量使用值。該過程按照上面描述的概率斯坦納樹基值(contribution)計(jì)算這些分量值。
在5512,過程選擇網(wǎng)絡(luò)。過程隨后(在5514)取回在當(dāng)前槽中選擇網(wǎng)絡(luò)的引腳配置。接下來,標(biāo)識(在5516)用于所恢復(fù)引腳配置的概率斯坦納樹值。正像上面所描述的,圖28示出用于在圖5示出的網(wǎng)絡(luò)505的引腳配置的概率斯坦納樹值。正像上面參考圖26所描述的,一些具體實(shí)施方式
預(yù)計(jì)算該概率斯坦納樹值。然而,其它的實(shí)施方式在路徑使用估計(jì)過程5500期間產(chǎn)生這些值。
該過程隨后(在5520)將每個路徑的概率值增加到42個字段的數(shù)據(jù)結(jié)構(gòu)中的路徑使用值中。接下來,該過程執(zhí)行5522-5530以計(jì)算象征性的使用值,以對于在路徑稠密上的網(wǎng)絡(luò)說明通路(vias)的影響。當(dāng)網(wǎng)絡(luò)在當(dāng)前槽的子槽中有一個或者多個引腳時,這些引腳通常在更低的金屬層。因此,需要增加通路,以連接這樣一些引腳到網(wǎng)絡(luò)的指定路徑。每個通路的增加將依次增加路徑稠密。
在5522,過程選擇子槽,該子槽包括在5512選擇的網(wǎng)絡(luò)引腳的其中一個。這個網(wǎng)絡(luò)有一個或者多個布線,每個布線使用一個或者多個路徑。因此,在5524,過程選擇與在5522選擇的子槽關(guān)聯(lián)的布線路徑的其中一個。隨后(在5526)將所選擇的路徑使用值加上一個標(biāo)記值。在一些具體實(shí)施方式
中,標(biāo)記值是0.5/(遞歸層數(shù)—當(dāng)前遞歸層)。
過程隨后確定(在5528)是否已經(jīng)檢查了與選擇子槽相關(guān)的所有路徑(選擇網(wǎng)絡(luò)的所有樹的)。如果沒有,過程選擇(在5524)與所選擇的子槽相關(guān)的另一個路徑,并且隨后(在5526)將所選擇的路徑的使用值加上一個標(biāo)記值。
另一方面,如果過程確定(在5528)已經(jīng)檢查了與所選擇的子槽相關(guān)的最后路徑,該過程(在5530)確定是否其已經(jīng)檢查了用于所選擇網(wǎng)絡(luò)的引腳的最后一個子槽。如果沒有,過程返回到5522以選擇另一個用于所選擇網(wǎng)絡(luò)的引腳的子槽。否則,過程確定(在5532)是否已經(jīng)檢查了當(dāng)前槽中的最后一個網(wǎng)絡(luò)。如果沒有,該過程轉(zhuǎn)回到5512,以選擇另一個網(wǎng)絡(luò),并且執(zhí)行對于這個網(wǎng)絡(luò)的后步操作。當(dāng)確定在5532已經(jīng)檢查了最后一個網(wǎng)絡(luò)時過程結(jié)束。
2.在當(dāng)前槽標(biāo)識用于每個網(wǎng)絡(luò)的布線在估計(jì)(在5305)當(dāng)前槽中的每個路徑的剩余容量之后,該過程標(biāo)識(在5310)當(dāng)前槽中的每個網(wǎng)絡(luò)的一個或者多個布線。以下描述的具體實(shí)施方式
最初使用與當(dāng)前槽有關(guān)的每個網(wǎng)絡(luò)配置,以標(biāo)識每個網(wǎng)絡(luò)的一個或者多個布線。
這些
具體實(shí)施例方式
隨后產(chǎn)生用于一些或者所有網(wǎng)絡(luò)的偽配置,并且基于所產(chǎn)生的偽配置標(biāo)識網(wǎng)絡(luò)另外的布線。一些具體實(shí)施方式
使用兩種不同的方法產(chǎn)生用于網(wǎng)絡(luò)的偽配置。一種方法將偽引腳添加到一個網(wǎng)絡(luò)配置。這個方法將通過參考圖56-58在下面進(jìn)行描述。第二種方法將網(wǎng)絡(luò)配置分成兩個或者更多個配置,并且將偽引腳添加到新配置。這個方法將通過參考圖60和59在下面進(jìn)行描述。
a.通過增加偽引腳到網(wǎng)絡(luò)配置以標(biāo)識每個網(wǎng)絡(luò)配置的布線并且產(chǎn)生轉(zhuǎn)向可能圖56示出過程5600,其通過增加偽引腳到網(wǎng)絡(luò)配置來標(biāo)識用于每個網(wǎng)絡(luò)配置的布線,并且產(chǎn)生轉(zhuǎn)向(detour)可能。正像這個圖所示出的,過程5600最初選擇(在5602)當(dāng)前槽中的網(wǎng)絡(luò)。在5604,過程(1)使用在當(dāng)前槽中的網(wǎng)絡(luò)配置來標(biāo)識所選擇的網(wǎng)絡(luò)布線,并且(2)存儲用于選擇的網(wǎng)絡(luò)的標(biāo)識布線到求解程序的變量中。過程5600基于在上面的部分V.所描述的其中一個方法來標(biāo)識用于特定網(wǎng)絡(luò)配置的樹。
在基于選擇的網(wǎng)絡(luò)配置標(biāo)識和存儲布線之后,過程執(zhí)行5606到5668中的一些或者所有操作以確定其是否需要產(chǎn)生用于選擇網(wǎng)絡(luò)的轉(zhuǎn)向布線,并且如果是,通過添加一個或者兩個偽引腳來產(chǎn)生這些轉(zhuǎn)向布線。
過程5600為選擇的網(wǎng)絡(luò)產(chǎn)生轉(zhuǎn)向布線,其中所有在5604標(biāo)識的用于網(wǎng)絡(luò)的最佳布線使用一個或者多個“處于危險(xiǎn)中”的路徑。如果估計(jì)的稠密(路徑使用加稠密)接近或者超過路徑的容量,路徑是“處于危險(xiǎn)中”。一些具體實(shí)施方式
通過確定路徑剩余容量(其在5305被計(jì)算)是否小于一閾值來確定路徑是否是“處于危險(xiǎn)中的”。通過調(diào)整路徑被界定為“處于危險(xiǎn)中的”的閾值,可產(chǎn)生用于可變數(shù)量的網(wǎng)絡(luò)的次最佳的布線。
圖57和58提供了如何通過增加一個或者兩個偽引腳配置來產(chǎn)生次最佳轉(zhuǎn)向布線的說明性舉例。特別地,圖57示出在子槽8和11中有兩個引腳5710和5715的網(wǎng)絡(luò)的次最佳布線5725。這個次最佳布線是通過添加偽引腳5705來產(chǎn)生的。次最佳布線5725避免由于障礙5720被稠密的水平路徑P7(在子槽9和10之間)。添加虛引腳5705到網(wǎng)絡(luò)的引腳分布導(dǎo)致新的引腳配置。用于這個新的引腳配置的最佳布線為有引腳5710和5715的原始網(wǎng)絡(luò)提供次最佳布線。這個次最佳布線不使用“處于危險(xiǎn)中”的路徑7。
圖58示出一個舉例,其中兩個偽引腳5805和5810已經(jīng)被添加到有引腳5815和5820的網(wǎng)絡(luò)中。這兩個偽引腳產(chǎn)生一個避免由于障礙5825而被稠密和稠密的路徑7和33的次最佳布線5830。
圖56的過程5600通過(1)添加一個或者然后兩個偽引腳到網(wǎng)絡(luò)配置中,以及(2)標(biāo)識用于生成的引腳配置的最佳布線,來產(chǎn)生轉(zhuǎn)向布線。即使這個過程至多添加兩個偽引腳到網(wǎng)絡(luò)配置中,一個普通技術(shù)人員將認(rèn)識到為標(biāo)識用于一些或者所有網(wǎng)絡(luò)的有用轉(zhuǎn)向布線,其他具體實(shí)施方式
將添加更多的偽引腳到網(wǎng)絡(luò)配置中。
在5606,該過程選擇在5604標(biāo)識的布線的其中一個。隨后標(biāo)識(在5608)在5606選擇的布線路徑的其中一個。在5610,過程確定在5608選擇的路徑的剩余容量是否低于閾值。路徑的剩余容量在5305計(jì)算。
如果過程確定(在5610)路徑剩余的容量低于其閾值,過程標(biāo)記(在5612)在5606選擇的布線為不可用,并且隨后轉(zhuǎn)到將在以下進(jìn)行描述的5616。如果沒有,過程確定(在5614)是否已經(jīng)檢查了選擇布線的所有路徑。如果沒有檢查所有路徑,它轉(zhuǎn)回到5608以選擇所選擇布線的另一個路徑。否則,該過程轉(zhuǎn)到5616。
在5616,過程確定是否已經(jīng)檢查了在5604標(biāo)識的所有布線。如果沒有,該過程轉(zhuǎn)回到5606以選擇另一個標(biāo)識的用于所選擇的網(wǎng)絡(luò)布線。否則,過程確定(在5618)其是否標(biāo)記了用于所選擇網(wǎng)絡(luò)的所有標(biāo)識的布線為不可用的。如果沒有,網(wǎng)絡(luò)有一個或者多個沒有使用任何“處于危險(xiǎn)中”的路徑的布線,并且因此,該過程不產(chǎn)生用于這個網(wǎng)絡(luò)的偽配置。該過程隨后確定(在5620)是否已經(jīng)檢查了在當(dāng)前槽的所有網(wǎng)絡(luò)。如果已經(jīng)檢查了所有網(wǎng)絡(luò),過程結(jié)束。否則,該過程從5620轉(zhuǎn)到5602,以選擇在當(dāng)前槽內(nèi)的另一個網(wǎng)絡(luò)。
如果過程確定(在5618)用于所選擇網(wǎng)絡(luò)的所有標(biāo)識的布線是不可用的,該過程選擇(在5622)當(dāng)前槽的子槽。對于所選擇的網(wǎng)絡(luò),過程隨后產(chǎn)生(在5624)偽引腳配置,該偽引腳配置指示網(wǎng)絡(luò)在5622所選擇的子槽中有引腳。在一些具體實(shí)施方式
中,通過復(fù)制當(dāng)前槽中所選擇的網(wǎng)絡(luò)的實(shí)際引腳配置來產(chǎn)生這個偽引腳配置,并且確保所復(fù)制的引腳配置指示用于在5622選擇的子槽的引腳。在圖57示出的舉例中,過程通過添加用于第6子槽的“1”到原始配置0000100100000000中,產(chǎn)生一個偽配置0000100101000000。
過程隨后標(biāo)識(在5626)用于在5624產(chǎn)生的偽引腳配置的布線。通過使用在上面的部分V所討論的方法的任何一個,過程能標(biāo)識這些用于引腳配置的布線。接下來,過程選擇(在5628)在5626標(biāo)識的布線的其中一個。過程隨后確定(在5630)所選擇的布線是否是不可用的。過程通過執(zhí)行與前面所述的5608-5616類似的可用性檢查操作來產(chǎn)生這個確定。如果過程確定(在5630)在5628選擇的布線是不可用的,過程轉(zhuǎn)到將在下面進(jìn)行描述的5634。如果選擇的布線是可用的,過程為所產(chǎn)生的偽配置記錄(在5632)選擇布線的成本,并且隨后轉(zhuǎn)到5634。
在5634,過程確定是否已經(jīng)檢查了用于所產(chǎn)生的偽配置的所有在5626標(biāo)識的布線。如果沒有,該過程轉(zhuǎn)回到5628,以選擇另一個標(biāo)識的布線。否則,該過程確定(在5636)是否已經(jīng)為當(dāng)前槽的所有子槽產(chǎn)生了偽引腳配置。如果沒有,該過程返回到5622以選擇另一個子槽。
否則,過程標(biāo)識(在5638)偽引腳配置,如果有,將導(dǎo)致具有在5632記錄的最佳成本的可用布線。如果配置在5638被標(biāo)識,過程隨后標(biāo)識(在5640)用于在5638標(biāo)識的引腳配置的所有可用布線,并且添加這些布線到用于當(dāng)前網(wǎng)絡(luò)的可能布線求解組中。
接下來,過程執(zhí)行5642-5668,以產(chǎn)生用于包括至多兩個偽引腳的偽配置的布線。特別地,在5642,該過程選擇一個當(dāng)前槽的子槽。過程復(fù)制(在5644)當(dāng)前槽中的所選擇的網(wǎng)絡(luò)的實(shí)際引腳配置。隨后確保(在5646)所復(fù)制的引腳配置指示用于在5642選擇的子槽的引腳。在圖58所示出的舉例中,過程通過添加用于第6子槽的“1”到原始配置0000100100000000中,產(chǎn)生一個初始偽配置0000100101000000。
在5648,過程隨后選擇在5642選擇的子槽之外的子槽。隨后產(chǎn)生(在5650)一個偽引腳配置,該偽引腳配置指示網(wǎng)絡(luò)在5648選擇的槽中有引腳。在一些具體實(shí)施方式
中,過程通過復(fù)制在5646標(biāo)識的引腳配置,并且確保復(fù)制的引腳配置指示用于在5648選擇的子槽的引腳,來產(chǎn)生這個偽引腳配置。在圖58所示出的舉例中,過程通過添加用于第5子槽的“1”到最初偽配置0000100101000000中,產(chǎn)生最終的偽配置0000100101100000。
該過程隨后標(biāo)識(在5652)用于在5650產(chǎn)生的偽引腳配置的布線。正如在5604和5626,過程通過使用在上面的部分V所討論的方法的任意一個能夠標(biāo)識用于所產(chǎn)生的引腳配置的這些布線。
接下來,過程選擇(在5654)在5652所標(biāo)識的布線的其中一個。過程隨后確定(在5656)所選擇布線是否可用。該過程通過執(zhí)行與前面所述的5608-5616類似的可用性檢查操作來產(chǎn)生這個確定。如果在5654選擇的布線是不可用的,過程轉(zhuǎn)到將在下面進(jìn)行描述的5660。如果所選擇的布線是可用的,該過程為所產(chǎn)生的偽配置記錄(在5658)所選擇的布線成本,并且隨后轉(zhuǎn)到5660。
在5660,過程確定是否已經(jīng)檢查了為在5650產(chǎn)生的偽配置的所有在5652標(biāo)識的布線。如果沒有,該過程轉(zhuǎn)回到5654,以選擇另一個標(biāo)識的布線。否則,過程確定(在5662)其是否已經(jīng)為所有不同于在5642選擇的子槽的子槽生成了偽引腳配置。如果沒有,過程返回到5648,以選擇另一個不同于在5642所選擇的子槽的子槽。
否則,過程確定(在5664)是否已經(jīng)檢查了所有作為可能第一偽引腳的子槽。如果沒有,過程返回到5642,以選擇另一個子槽。當(dāng)過程確定(在5664)已經(jīng)檢查了所有作為可能的第一偽引腳的子槽,如果有,過程標(biāo)識(在5666)導(dǎo)致在5658記錄有最佳成本的可用布線的偽引腳配置。如果配置在5666被標(biāo)識,過程隨后標(biāo)識(在5668)用于在5666標(biāo)識的引腳配置的所有可用布線,并且添加這些布線到用于當(dāng)前網(wǎng)絡(luò)的可能布線求解組中。
從5668,過程轉(zhuǎn)到5620。在5620,過程確定其是否已經(jīng)檢查了當(dāng)前槽中的所有網(wǎng)路。如果它已經(jīng)檢查了所有網(wǎng)路,該過程結(jié)束。否則,過程從5620轉(zhuǎn)到5602,以選擇在當(dāng)前槽內(nèi)的另一個網(wǎng)絡(luò)。
c.將網(wǎng)絡(luò)配置分成更小的引腳配置并且添加偽引腳到更小的引腳配置中在一些舉例中,簡單地將偽引腳添加到網(wǎng)絡(luò)配置中并不能產(chǎn)生最好的次最佳布線。有時可以通過(1)從一個網(wǎng)絡(luò)引腳配置中產(chǎn)生兩個或者多個引腳配置,(2)為產(chǎn)生的引腳配置標(biāo)識偽配置,(3)標(biāo)識用于該配置的布線,和(4)結(jié)合該生成的布線以找到一個或者多個次最佳布線來產(chǎn)生這樣的布線。這樣的方法在稠密路徑是在2個相鄰的“實(shí)”引腳之間的情況下特別有用。
圖59示出這樣的方法的舉例。在這個例子中,網(wǎng)絡(luò)有兩個引腳5905和5910。如果偽引腳5915被添加到原始網(wǎng)絡(luò)配置中,用于生成的網(wǎng)絡(luò)配置的布線將使用路徑P6和P21。然而,這樣一個布線不是可用的,這是因?yàn)檎系K5920完全稠密了路徑P6。使用路徑21和36的更理想的布線可以通過(1)將引腳配置一分為二,一個包括引腳5905,一個包括引腳5910,以及(2)添加偽引腳5915到兩個生成的引腳配置來獲得。
圖60示出過程6000,其標(biāo)識用于網(wǎng)絡(luò)配置的額外布線。這個過程從網(wǎng)絡(luò)的引腳配置中生成兩個引腳配置,標(biāo)識用于所產(chǎn)生的兩個引腳配置的偽配置,標(biāo)識用于偽配置的布線,并且合并所生成的布線。一些具體實(shí)施方式
為當(dāng)前槽中的每個網(wǎng)絡(luò)執(zhí)行這個過程,而其它的實(shí)施方式僅為一些網(wǎng)絡(luò)執(zhí)行這個過程,諸如對于那些過程不能找到可用的布線的網(wǎng)絡(luò)。
正像在圖60中所示出的,過程6000通過為在當(dāng)前槽的網(wǎng)絡(luò)標(biāo)識(在6002)一個或者多個布線來開始。過程能通過使用在前面的部分V所討論的方法的任意一種基于網(wǎng)絡(luò)的引腳配置來標(biāo)識這些布線。過程隨后標(biāo)識(在6004)子槽,該子槽具有與其相關(guān)的標(biāo)識路徑的最多數(shù)目的路徑。過程隨后界定(在6006)兩個位組,bset1和bset2。在一些具體實(shí)施方式
中,每個位組有16位,其中所有位最初都被界定為0。
接下來,在6008,過程設(shè)置1到對應(yīng)在6004標(biāo)識的子槽的第一位組的位。在6008,該過程也將對應(yīng)于包含當(dāng)前網(wǎng)路引腳的剩余子槽的第二位組的一個或者多個位設(shè)置為1。在6010,該過程初始化兩個變量,其中變量Best_Length用于測量多個求解的最佳長度,以及Best_Detour用于標(biāo)識生成最佳長度的求解。Best_Length變量被初始為一大的值,而Best_Detour被初始化為零。
在6012,過程選擇當(dāng)前槽的子槽的其中之一。隨后確定(在6014)當(dāng)前網(wǎng)絡(luò)的引腳配置是否將所選擇的子槽的相應(yīng)位設(shè)置為1(即,當(dāng)前網(wǎng)絡(luò)在所選擇的子槽中是否有引腳)。如果是,過程確定(在6016)是否已經(jīng)試著生成用于當(dāng)前槽的每個子槽的偽配置。如果沒有檢查所有當(dāng)前槽的子槽,該過程返回到6012,以選擇另一個子槽。如果已經(jīng)檢查了,該過程轉(zhuǎn)到將在下面進(jìn)行描述的6040。
如果過程確定(在6014)對應(yīng)于所選子槽的位在當(dāng)前的網(wǎng)絡(luò)的引腳配置中沒有被設(shè)置為1,該過程從兩個位組,bitset1和bitset2中產(chǎn)生(在6018)兩個復(fù)制的位組,biset1c和bitset2c。在每個復(fù)制的位組中,過程隨后將(在6020)對應(yīng)于所選子槽的位設(shè)置為1。
接下來,過程標(biāo)識(在6022)為每個復(fù)制,修改的位組標(biāo)識一個或者多個布線。通過使用在前面的部分V所討論的任意一種方法,過程可標(biāo)識這些用于復(fù)制,修改的位組的布線。過程隨后選擇(在6024)用于第一復(fù)制,修改位組(即用于bitset1c)的其中一個布線,以及選擇(在6026)用于第二復(fù)制,修改位組(即用于bitset2c)的其中一個布線。在6028,過程隨后確定兩個所選布線是否重疊(即,兩個解是否共享子槽中一個或者多個布線路徑)。如果是,過程轉(zhuǎn)到將在下面進(jìn)行描述的6036。
如果不是,過程計(jì)算(在6030)通過組合在6024和6026所選的兩個布線得出的布線長度。在一些具體實(shí)施方式
中,過程通過將在6026和6026所選擇的兩個布線的長度相加來計(jì)算這個長度。在6032,過程確定在6030所計(jì)算的長度是否小于當(dāng)前的Best_Length。如果不是,過程轉(zhuǎn)到將在下面進(jìn)行描述的6036。
當(dāng)在6030所計(jì)算的長度小于當(dāng)前的Best_Length,在6024和6026所選的兩個布線表示過程6000迄今得到的最佳解。相應(yīng)地,在6034,過程界定Best_Length等于在6030所計(jì)算的長度。在6034,過程也產(chǎn)生一個新的布線作為在6024和6026所選的兩個布線的合并,并且將Best_Detour定義為所產(chǎn)生的新布線。從6034,過程轉(zhuǎn)到6036。
在6036,過程確定是否已經(jīng)檢查了用于第二復(fù)制,修改位組(bitset2c)的所標(biāo)識的所有布線(在6022)和用于第一復(fù)制,修改位組(bitset1c)的在6024所選擇的布線。如果沒有,過程返回到6026,以選擇用于第二bitset2c的另一個布線。否則,在6038,過程確定是否已經(jīng)檢查了所有用于第一復(fù)制,修改位組(bitset1c)的標(biāo)識的布線(在6022)。如果沒有,過程返回到6024,以選擇用于第一bitset1c的另一個布線來檢查。
當(dāng)過程確定(在6038)已經(jīng)檢查了所有用于第一復(fù)制,修改位組(bitset1c)的標(biāo)識的布線,其確定(在6016)是否已經(jīng)試著產(chǎn)生用于當(dāng)前槽的每個子槽的偽配置。如果已經(jīng)產(chǎn)生,過程(在6040)將該過程標(biāo)識的作為Best_Detour的解(如果有的話)添加到當(dāng)前網(wǎng)絡(luò)的求解方案庫中,并且隨后結(jié)束。在另一方面,如果過程沒有產(chǎn)生用于每個子槽的偽配置,過程返回到6012,以選擇另一個子槽。
3.為可能的布線分配成本在標(biāo)識(在5310)用于當(dāng)前槽中的每個網(wǎng)絡(luò)的一個或者多個布線后,過程5300通過分解(factoring)傳播到下一個更低的遞歸層,分配(在5315)接線長度成本給每個取回樹。在一些具體實(shí)施方式
中,每個布線成本包括以下的三個分量成本(1)連接當(dāng)前槽的子槽的一個或者多個布線路徑的接線長度成本,(2)進(jìn)入到子槽中的布線路徑的路徑傳播成本,和(3)在選擇路徑傳播后在每個子槽中的成本。
圖64示出用于根據(jù)這三個分量成本來計(jì)算每個布線成本的過程。在解釋這個過程之前,這個過程使用的概念性結(jié)構(gòu)將參考圖61-63進(jìn)行解釋。這些圖示出一些具體實(shí)施方式
怎樣模擬較高層布線到較低子槽的傳播。特別地,圖61示出在當(dāng)前槽的子槽之間的任何水平或者垂直路徑能沿著10個傳播路徑的其中一個向下傳播到子槽的槽。
圖62和63示出兩個不同的方式,其用于模擬45°對角路徑傳播到更低層子槽的傳播。圖62示出的模式提供用于45°對角路徑的7種傳播可能。另一方面,在圖63示出的模式為兩個對角位置的子槽6305和6310之間的45°對角路徑提供19種傳播可能。這是因?yàn)樵趫D63示出的模式僅指定沿著子槽6305和6310的邊的路徑傳播,其從而允許沿著其中之一的子槽的邊的路徑傳播與沿著另一子槽的相應(yīng)的邊的三種路徑傳播的任意一個成對。例如,正像在圖63示出的,沿著邊6320的傳播6315能與沿著邊6340的傳播6325,6330和6335中的任意一個成對。依據(jù)這個方法,在槽6305和6310之間對角路徑可具有19種傳播,其中(1)傳播中的9個通過將沿著邊6320的三種路徑傳播與沿著邊6340的三種路徑傳播配對來界定,(2)傳播的9種通過將沿著邊6345的三種路徑傳播與沿著邊6350的三種路徑傳播配對來界定,以及(3)傳播6355之一被界定在槽6310左上角與槽6305的右下角之間。
正像圖64所示出的,過程6400最初選擇(在6402)網(wǎng)絡(luò)。隨后選擇(在6404)標(biāo)識(在5310)用于所選網(wǎng)絡(luò)的布線的其中之一。過程接著將所選求解的Total_Cost初始化(在6406)為0。隨后需要標(biāo)識在6404所選布線的路徑成本。在一些實(shí)施方式中,LUT3965的其中一個存儲用于每個網(wǎng)絡(luò)配置的預(yù)先制表的接線長度成本。在這些具體實(shí)施方式
中,當(dāng)樹添加到網(wǎng)絡(luò)的求解方案組中時,所選樹的預(yù)先制表的接線長度成本可從LUT中取回。二者擇一地,過程6400能使用生成用于當(dāng)前網(wǎng)絡(luò)所選樹的標(biāo)識的引腳配置來從LUT中取回樹的預(yù)先制表接線長度成本。
然而在以下所描述的具體實(shí)施方式
中,過程6400通過執(zhí)行6408-6412計(jì)算所選布線的路徑成本。特別地,在6408,過程選擇所選布線的一個路徑。隨后以在6408所選路徑的成本,增量(在6410)所選求解的Total_Cost。一些具體實(shí)施方式
僅僅基于相較于其他路徑的路徑的相對長度界定路徑成本。例如,一些具體實(shí)施方式
分配1的路徑成本給槽間的水平或者垂直路徑(例如,給在圖12中的各路徑P0-P23)以及將1.4的路徑成本分配給槽間的各對角路徑(例如,給各路徑P024-P041)。其它具體實(shí)施方式
分配5的路徑成本給槽間的每一水平或者垂直路徑(例如,給圖12中的各路徑P0-P23),以及將7的路徑成本分配給槽間的各對角路徑(例如,給圖12中的各路徑P024-P041)。
其它的
具體實(shí)施例方式
可以不僅僅基于相對路徑長度界定路徑成本。為了達(dá)到某一目的(例如,鼓勵更低層布線的使用或者避免通路(vias)的使用),一些具體實(shí)施方式
可以相較于更低層布線使花費(fèi)在橫越更高層路徑的其相對長度成本更昂貴。例如,一些具體實(shí)施方式
可以分配1的路徑成本給槽間的每一水平或者垂直的路徑,以及分配高于1.4的路徑成本給每個槽間的對角路徑。
在6412,過程確定是否已經(jīng)檢查了所有所選的布線路徑。如果沒有,過程返回到6408,以選擇另一個用于成本的路徑。當(dāng)過程確定(在6412)已經(jīng)檢查了所有選擇的布線路徑,其確定(在6414)當(dāng)前槽是否是葉層槽。如果是,過程轉(zhuǎn)到將在下面進(jìn)行描述的6428。
如果過程確定當(dāng)前槽不是葉層槽,該過程說明子槽中的接線長度成本。過程使用貪婪技術(shù),以將所選布線的傳播分解到子槽內(nèi)。特別地,過程通過該路徑的錨點(diǎn)數(shù)量排序(order)每個所選樹的路徑。一些具體實(shí)施方式
界定錨點(diǎn)作為子槽中的一個引腳,子槽與路徑相關(guān)。在這些具體實(shí)施方式
中,路徑至多有兩個錨點(diǎn)。其它的實(shí)施方式可以界定錨點(diǎn)為在子槽的槽中的引腳數(shù)目;依照這樣一種方法,當(dāng)路徑在每個子槽的16個槽中有16個引腳時,路徑最多有32個錨點(diǎn)。在一些實(shí)施方式中,過程按照錨點(diǎn)數(shù)目的遞減的順序來對路徑進(jìn)行分類(即,將有最多數(shù)量錨點(diǎn)的路徑放在分類表的第一的位置)。
接下來,在6418,過程根據(jù)分類的順序選擇路徑(即,按照從上到下的順序選擇分類表中的路徑)。對于這個選擇的路徑,過程選擇(在6420)傳播可能的其中之一。換句話說,在此階段,過程選擇在兩個與路徑相關(guān)的槽之間所選路徑能傳播的路線的其中之一。
正像前面參考圖61所描述的,一些實(shí)施方式使用一個為在當(dāng)前槽的子槽之間的水平或者垂直路徑提供10個可能傳播的傳播模式。同時,一些實(shí)施方式使用為如圖62所示出的45°路徑提供7個可能傳播的傳播模式,而其它的實(shí)施方式使用為如圖63所示出的45°路徑提供19個可能傳播的傳播模式。
在一些實(shí)施方式中,過程選擇(在6420)用于所選路徑的最佳傳播。為了選擇最佳傳播,過程檢查每個傳播可能,當(dāng)必要時增加虛引腳,估計(jì)每種傳播可能的成本,并且選擇引起最低成本傳播和布線的傳播可能。正像以下參考圖65所描述的,每個傳播可能規(guī)定一個或者兩個橫越兩個或者三個子槽的傳播路徑。相應(yīng)地,每個傳播可能的成本包括傳播路徑成本加在兩個或者三個傳播可能橫越的子槽內(nèi)的引腳配置布線成本。
圖65示出路徑的傳播可能性的舉例。這個圖示出在槽0和9中有實(shí)際引腳6525的網(wǎng)絡(luò)。用于這個網(wǎng)絡(luò)的所選布線使用橫越子槽5以連接子槽0和9的路徑P17和P24。圖65示出路徑P24沿著路徑6510和6515傳播到三個子槽(即,子槽0,1和5),而路徑P17沿著路徑6520傳播到兩個子槽5和9。傳播路徑6510在當(dāng)前槽的子槽0的子槽7和當(dāng)前槽的子槽1的子槽8之間。傳播路徑6515在當(dāng)前槽的子槽1的子槽13和當(dāng)前槽的子槽5的子槽2之間。傳播路徑6520在當(dāng)前槽的子槽5的子槽14和當(dāng)前槽的子槽9的子槽2之間。圖65示出已經(jīng)被添加到子槽1,5和9的槽的五個虛引腳6502。
在6420,過程也(1)計(jì)算在6420標(biāo)識的傳播可能的路徑的成本和在6418所選路徑的成本之間的增量成本。并且隨后(2)Total_Cost增加這個增量。例如,在一些實(shí)施方式中,當(dāng)所選路徑是5的成本的曼哈頓路徑,并且所標(biāo)識的傳播是7的成本的對角路徑時,增量成本是2。同時,在一些實(shí)施方式中,當(dāng)所選路徑是7的成本的對角路徑時,并且所標(biāo)識的傳播包括兩個對角路徑,每個具有7的成本時,增量成本為7。在一些實(shí)施方式中,當(dāng)所選路徑和其標(biāo)識的傳播都是曼哈頓路徑時,增量為0。
對于在6420所選擇的傳播,如果必要,過程臨時將虛引腳存儲(在6422)到相關(guān)子槽(即與在6430所標(biāo)識的傳播相關(guān)的子槽)的引腳配置記錄中。過程使用這些臨時存儲的虛引腳來計(jì)算所選布線的其他路徑(如果有的話)的傳播成本。
過程接下來確定(在6424)是否已經(jīng)檢查了所選布線的最后路徑。如果沒有,過程返回6418,以選擇在分類路徑列表上的下一個路徑。其隨后為新選擇的路徑標(biāo)識(在6420)最佳傳播,并且臨時設(shè)置(在6422)任何必要的虛擬引腳。
當(dāng)過程確定(在6424)已經(jīng)檢查了所選布線的所有路徑時,過程將在具有用于網(wǎng)絡(luò)的引腳設(shè)置的每個子槽中的布線成本加到所選樹的Total_Cost中。在6426,過程也存儲所選擇的Total_Cost。求解過程5300使用每個樹的Total_Cost來用公式表示其LP問題。
在6428,過程確定是否已經(jīng)檢查了用于在6402選擇的網(wǎng)絡(luò)的所有布線。如果沒有,過程轉(zhuǎn)到6404,以估計(jì)這個網(wǎng)絡(luò)的下一布線的成本。當(dāng)過程確定(在6428)已經(jīng)檢查了用于在6402所選網(wǎng)絡(luò)的所有布線,過程確定(在6430)是否已經(jīng)檢查了在當(dāng)前槽中的所有網(wǎng)絡(luò)。如果沒有,過程轉(zhuǎn)回到6402,以選擇在當(dāng)前槽的另一個網(wǎng)絡(luò),并且執(zhí)行隨后的操作以估計(jì)這個網(wǎng)絡(luò)布線的成本。當(dāng)過程確定(在6430)已經(jīng)檢查了在當(dāng)前槽的所有網(wǎng)絡(luò),估算成本過程6400結(jié)束。
一名普通的技術(shù)人員將認(rèn)識到有別于過程6400的計(jì)算布線的接線長度成本的其它實(shí)施方式。例如,通過計(jì)算當(dāng)前遞歸層和其以下層的接線長度成本過程6400計(jì)算這個成本。在另一方面,其它的實(shí)施方式可以通過計(jì)算從當(dāng)前遞歸層一直到葉層槽的接線長度成本來計(jì)算這個成本。為了做到這一點(diǎn),一些具體實(shí)施方式
使用一遞歸過程,該遞歸過程計(jì)算當(dāng)前遞歸層的路徑成本,并且隨后遞歸調(diào)用成本-計(jì)算過程來計(jì)算用于非Gcell(即,用于不是葉層槽的子槽的每個子槽)的每個子槽的接線長度成本。
4.LP問題公式和求解程序在求解程序分配接線長度成本到在當(dāng)前槽中的網(wǎng)絡(luò)布線后,求解程序用公式表示(在5320)用于LP求解程序3945的LP問題,該LP求解程序3945隨后求解(在5325)這個LP問題。在LP問題公式中的基本變量是用于當(dāng)前槽中網(wǎng)絡(luò)的布線。每個樹以下面的格式表示“xN_C”,其中,“x”是字符常數(shù),“N”是網(wǎng)絡(luò)數(shù),“_”是字符常數(shù),以及“C”是標(biāo)識在網(wǎng)絡(luò)的數(shù)的列表中標(biāo)識的樹的數(shù)目。例如,X26_14表示網(wǎng)絡(luò)26的第14個樹。
在一些
具體實(shí)施例方式
中,每個由LP求解程序所檢查的LP解包括一個用于每個樹變量XN_C的實(shí)數(shù)值。LP求解程序的任務(wù)是標(biāo)識LP解,該LP解在滿足一些限制時最小化一個或者多個目標(biāo)函數(shù)。特別地,解只有當(dāng)滿足特定LP問題的一個或者多個限制時,其是可行LP解。LP求解程序的任務(wù)是標(biāo)識最小化目標(biāo)函數(shù)的可行LP解(即,滿足特定限制的解)。換句話說,從一組解中,LP求解程序標(biāo)識產(chǎn)生最佳目標(biāo)函數(shù)值的可行LP解。
一些實(shí)施方式使用“SoPlex”求解程序作為LP求解程序,“SoPlex”求解程序已經(jīng)由RolandWunderling完成,其為名為“ParallelerundObjektorientie-erSimplex-A1gorithmus”的Ph.D論文(以德文)的一部分。有關(guān)這個求解程序的信息在以下網(wǎng)址得到http//www.zib.de/Optimization/software/Soplex/。
a.目標(biāo)函數(shù)不同的實(shí)施方式使用不同的目標(biāo)函數(shù)。例如,一些實(shí)施方式可以使用這樣的目標(biāo)函數(shù)其(1)最小化總長度;(2)最大化通過所有42個路徑的最小松弛部分(slack);(3)最大化總松弛部分(slack);以及(4)最小化任何單獨(dú)路徑的最大使用。然而,以下所描述的具體實(shí)施方式
試圖找到最小化以下目標(biāo)函數(shù)的LP解目標(biāo)函數(shù)=A*Total_Wirelength(總接線長度)+B*Total_Via_number(總通路數(shù))-C*Min_Slack(最小松弛)(F)在方程式(F)中,A,B和C是加權(quán)因數(shù)。同時,Total_Wirelength(總接線長度)是 并且總通路數(shù)是 最小松弛的概念用在LP公式的兩種情況中。第一,變量Min_Slack(最小松弛)用做用于量化稠密的目標(biāo)函數(shù)的分量(即,充當(dāng)目標(biāo)函數(shù)中的稠密的標(biāo)記)。第二,常數(shù)minSlack(最小松弛)用于指定允許通過所有42個路徑的最小松弛。
路徑的松弛是在說明用于特定解的所有稠密(即稠密和接線流(wireflow))之后的路徑的剩余容量。一個負(fù)松弛表示路徑過于稠密。通過最小化目標(biāo)函數(shù)使負(fù)最小松弛最小化,接下來,最大化最小松弛。一名普通技術(shù)人員將認(rèn)識到其它的實(shí)施方式可使用目標(biāo)函數(shù)中的其它稠密標(biāo)記。
在一些實(shí)施方式中,設(shè)置用于Total_WireLength和Total_Via_Number的加權(quán)因數(shù)A和B彼此相等,并且這些因數(shù)都大于用于Min_S1ack的加權(quán)因數(shù)C。換句話說,這些實(shí)施方式為接線長度和通路(via)數(shù)加權(quán)目標(biāo)函數(shù),以便Min_Slack分量僅當(dāng)接線長度和通路數(shù)分量不能區(qū)別兩個LP求解時才有影響。這些實(shí)施方式在目標(biāo)函數(shù)中使用接線長度和路徑數(shù)來選擇導(dǎo)致更小總接線長度和通路數(shù)的求解。
其它的實(shí)施方式加權(quán)目標(biāo)函數(shù)是不同的。例如,在以下分部VI.E.4.c中所列出的LP公式,僅針對LP求解程序的第一嘗試求解形成公式的LP問題,對接線長度和路徑數(shù)參數(shù)加權(quán)目標(biāo)函數(shù)。如果LP求解程序不能在其第一迭代中求解公式化的問題(即,如果不能找到符合限制的求解),LP問題被重新用公式表示,以便Min_Slack成為目標(biāo)函數(shù)中的主分量。特別地,對于LP求解程序的第一次迭代,下面的公式將用于Total_WireLength和Total_Via_Number的加權(quán)因數(shù)A和B設(shè)置為彼此相等,并且這些因數(shù)都大于用于Min_Slack的加權(quán)因數(shù)C。如果LP求解程序在其第一次迭代中不能求解LP問題,改變加權(quán)因數(shù)A,B和/或C,使得目標(biāo)函數(shù)的主參數(shù)是Min_Slack。
正像上面的公式(G)所示出的,通過在5315計(jì)算每個數(shù)的成本,計(jì)算Total_WireLength。同時,正像上面的公式(H)所示出的,Total_Via_Number是通過每個樹的通路數(shù)計(jì)算的。通路是連接兩相鄰金屬層上的布線的兩部分所需的連接。
對于在圖3示出的八邊形布線模式,一對一的映射存在于層和布線方向之間。這個映射能用于簡化計(jì)算用于每個布線的通路數(shù)。因此,可以通過橫越布線,并且標(biāo)識必要的通路數(shù)來計(jì)數(shù)通路數(shù),這些必需適應(yīng)(1)布線方向上的變化和(2)在引腳的層和子槽中的路徑之間的不同(如果有的話)。
為了解釋在子槽中的引腳和與子槽相關(guān)的路徑之間的層差別,引腳的層需要標(biāo)識。不同的實(shí)施方式以不同的方式標(biāo)識實(shí)際引腳(即,非虛引腳)層。例如,一些實(shí)施方式假定所有實(shí)際引腳都在層2。其它的實(shí)施方式標(biāo)識引腳的實(shí)際層;正像在前面所提到的,一些實(shí)施方式存儲引腳層作為存儲在引腳數(shù)據(jù)結(jié)構(gòu)4300中的引腳位置的一部分,而其它的實(shí)施方式存儲引腳層作為引腳宏的一部分,引腳宏和參照槽_數(shù)據(jù)結(jié)構(gòu)的電路宏存儲在一起。一些實(shí)施方式界定虛引腳(即被設(shè)置為解釋布線傳播到較低層子槽中的引腳)層以與設(shè)置虛引腳用于的傳播路徑層一致。
圖66和67表示兩個舉例,其概念地示出一個對通路數(shù)量進(jìn)行計(jì)數(shù)的方式。在這些舉例中,布線模式如下層2是垂直的,層3是水平的,層4是+45°,而層5是-45°。圖66和67示出用于連接子槽0和9的兩個布線。在這兩個圖中,子槽0包括虛引腳6605,該引腳設(shè)置用于解釋+45°路徑到槽6600的的傳播。相應(yīng)地,虛引腳6605稱之是在第四金屬層(即,用于+45°布線的金屬層)。同時,子槽9包括在層2上的實(shí)際引腳。
圖66的布線6610需要兩個通路。這個數(shù)可以通過在子槽0開始來計(jì)數(shù)。這個槽有在第四層的虛引腳。路徑P24與這個槽相關(guān),并且它通過第四層。因此,不需要通路說明在引腳6605的層和路徑P24之間的不同。路徑P24也與子槽5相關(guān)。子槽5沒有引腳,但是有與之相關(guān)的路徑P17。由于路徑P24在第四層,路徑P17在第二層,需要兩個通路來說明槽5中路徑方向的變化。路徑P17也與子槽9相關(guān)。槽9沒有與其相關(guān)的其他引腳,但是有在層2的實(shí)際引腳6615。假定路徑P17和引腳6615都在層2,不需要通路來連接引腳6615和路徑P17。
圖67的布線6705需要六個通路。這個數(shù)可以通過在子槽0開始來計(jì)數(shù)。這個槽有在第四層的一個虛引腳。路徑P12與這個槽相關(guān),并且其通過第二層。因此,需要兩個通路來說明在引腳6605的層和路徑P12之間的不同。路徑P12也與子槽4相關(guān)。子槽4沒有引腳,但是有與之相關(guān)的路徑P30。由于路徑P30在第四層,路徑P12在第二層,需要兩個通路來說明槽4中路徑方向的變化。路徑P30也與子槽9相關(guān)。槽9沒有與其相關(guān)的其他引腳,但是有一個在層2的實(shí)際引腳6615。因此,需要兩個通路來說明引腳6615的層和路徑30之間的不同??傊枰鶄€通路用于布線6705。正像從圖66和67示出的舉例中所看到的,通路數(shù)提供有用的標(biāo)記,以區(qū)別有相同長度的兩個布線。
同時,一些實(shí)施方式在LP公式化5320期間計(jì)算用于每個布線路徑數(shù)。一個這樣的實(shí)施方式在子部分VI.E.4.c中由LP公式示出。然而,其它的實(shí)施方式在5320之前計(jì)算用于每個布線的通路數(shù),正像他們在5320之前在5315計(jì)算布線的接線長度成本。二者擇一地,一些實(shí)施方式可以在LP公式化5320期間計(jì)算每個布線的接線長度成本。
圖68-70示出三個過程,它們一起工作來計(jì)算在布線中的通路數(shù)。圖68的過程6800開始,只要它被調(diào)用用于計(jì)算用于樹的通路數(shù)。該過程最初將所有(當(dāng)前正在求解的槽的)槽初始化(在6805)為沒有被訪問的槽。
在6810,過程6800隨后選擇一個槽,其僅有一個與之相關(guān)的布線路徑的槽,并且界定這個槽為Current_Slot。隨后調(diào)用(在6815)圖69的過程6900,并且向這個過程提供Current_Slot。由過程6900所返回的值是通路的總數(shù)。在調(diào)用過程6900之后,過程6800結(jié)束。
過程6900是一遞歸過程。它最初計(jì)算(在6905)Current_Slot中的路徑數(shù)。在一些實(shí)施方式中,過程6900通過調(diào)用圖70的過程7000來計(jì)算這個數(shù)。過程7000通過標(biāo)識(在7005)所有與Current_Slot相關(guān)的布線路徑開始。隨后標(biāo)識(在7010)所有Current_Slot的實(shí)際和虛引腳。
過程7000接下來標(biāo)識(在7015)在7005標(biāo)識的每個布線路徑層和在7010標(biāo)識的每個引腳。當(dāng)使用圖3的八邊形布線模式時,每個路徑層能被容易地確定,由于在路徑的方向類型和它的層之間的有一對一的映射。例如,一些實(shí)施方式將垂直路徑映射到層2,將水平路徑映射到層3,映射+45°路徑到層4,映射-45°路徑到層5。同時,正像前面所描述的,一些實(shí)施方式假定所有實(shí)際引腳都在層2,而其它的實(shí)施方式標(biāo)識存儲的引腳的實(shí)際層。另外,一些實(shí)施方式界定虛引腳(即設(shè)置為說明布線傳播到更低層子槽的引腳)的層以與設(shè)置虛引腳的傳播路徑層一致。
在標(biāo)識引腳和路徑層之后,過程7000隨后確定(在7020)在7015標(biāo)識的最大和最小層之間的區(qū)別。這個區(qū)別表示估計(jì)最小數(shù)目的通路,該通路為Current_Slot內(nèi)所需。如果Current_Slot被分割成更小的槽,需要額外的通路來界定在更小槽中或者更小槽之間的用于當(dāng)前布線的網(wǎng)絡(luò)的更低層布線。一些實(shí)施方式(1)可以執(zhí)行統(tǒng)計(jì)研究來估算界定在有一定數(shù)量的引腳和路徑的槽中的布線所需的通路數(shù),以及隨后(2)可以使用這個統(tǒng)計(jì)研究的結(jié)果來獲得Current_Slot所需通路數(shù)的更好估計(jì)。在7025,過程7000返回槽中的通路數(shù),并且隨后結(jié)束。
一旦過程7000返回槽中的通路數(shù),過程6900標(biāo)記(在6910)當(dāng)前槽為已經(jīng)訪問過的槽。隨后選擇(在6915)與當(dāng)前槽相關(guān)的當(dāng)前布線路徑的其中之一。接下來,在6920,過程標(biāo)識與在6915所選路徑相關(guān)的其他槽。在6925,過程確定是否已經(jīng)檢查了在6920標(biāo)識的槽(即確定這個槽是否標(biāo)記為訪問過)。如果沒有,過程6900在6930遞歸調(diào)用其本身。這個遞歸調(diào)用指定在6920所標(biāo)識的槽為用于在6930遞歸啟動的過程的當(dāng)前槽。在6930,過程6900將遞歸調(diào)用過程返回的值加到通路數(shù)中。
從6930,過程6900轉(zhuǎn)到6935。當(dāng)其確定(在6925)在6920所標(biāo)識的其它槽先前被訪問了時,這個過程也轉(zhuǎn)到6935。在6935,過程6900確定是否有任何與當(dāng)前槽相關(guān)的其它路徑。如果有,過程6900返回到6915,以選擇另一個相關(guān)路徑。如果沒有,過程6900返回計(jì)算的通路數(shù)。
正像在前面的方程式(H)所指出的,目標(biāo)函數(shù)的Total_Via_Number不僅取決于用于每個樹的路徑數(shù),而且取決于測量以反映相對于接線長度的重要性通路數(shù)的轉(zhuǎn)換因數(shù)。這個轉(zhuǎn)化因數(shù)可以通過標(biāo)準(zhǔn)化接線長度和路徑成本為軌跡數(shù)來獲得,正像以下的方程式(I)所指出的X=50*5N---(I)]]>在這個方程式中,X表示轉(zhuǎn)換因數(shù),5表示曼哈頓路徑的成本,N表示在當(dāng)前遞歸層的每個曼哈頓路徑的軌跡數(shù),以及50是與使用路徑有關(guān)的損失。這個損失是按照布線程序更喜歡轉(zhuǎn)向而不是使用通路的軌跡數(shù)來測量。在一些實(shí)施方式中,設(shè)計(jì)者可以修正這個損失成本。同時,在一些實(shí)施方式中,每個曼哈頓路徑表示在Gcell層的8個軌跡(即N在Gcell層等于8)。而且,由于對于每層N是不同的,轉(zhuǎn)換因數(shù)x對于每個分層的布線層是不同的。
b.限制不同的實(shí)施方式界定不同的限制。使用以下描述的LP公式的實(shí)施方式界定三個限制。第一,對于每個網(wǎng)絡(luò)N,LP求解程序必須僅從網(wǎng)絡(luò)N的選擇組中選擇1樹。這表示為用于網(wǎng)絡(luò)的樹變量的值的總和(即,這些值的和必須等于1)的限制,正像在以下的方程式中所指出的netNxN_A+xN_B+…+xN_Q=1.
LP求解程序?qū)⒎峙湟粋€0和1之間的值給每個布線變量?!?”表示樹的明確選擇,而“0”表示樹的明確拒絕。0和1之間的值意味著通過隨機(jī)舍入求解程序指定的需要求解的選擇組。一些實(shí)施方式不會表示僅需要選擇一個用于網(wǎng)絡(luò)的樹作為限制,而是表示成為每個網(wǎng)絡(luò)產(chǎn)生候選LP求解的關(guān)系。
第二限制與當(dāng)前槽內(nèi)的路徑的稠密相關(guān)。在一些實(shí)施方式中,最小松弛大于特定的數(shù)量。正像前面所提到的,Min_Slack是通過所有路徑最小的可容許松弛。在每個路徑中的松弛等于路徑的容量減去通過路徑的線流(wireflow)和稠密。對于LP求解程序的第一次迭代,一些實(shí)施方式指定Min_Slack不得不為零或者更大。如果LP求解程序不能在它的第一次迭代中計(jì)算公式化的問題,為了消除將最小松弛作為限制,一些實(shí)施方式重新用公式表示LP問題,以便Min_Slack為一個更大的負(fù)值。然而,在一些實(shí)施方式中,正像上面所描述的,這個重新公式化使得目標(biāo)函數(shù)的Min_Slack成為這個函數(shù)的主要分量。
第三,某些區(qū)域的容量需要在能橫越這些區(qū)域的路徑之間適當(dāng)?shù)胤窒?。例如,給定圖61,62和63所示出的模式,對角和曼哈頓路徑必須適當(dāng)分享重疊對角區(qū)域的容量。這是因?yàn)楫?dāng)求解程序是產(chǎn)生通用布線結(jié)果的通用布線程序的一部分,其通用布線輸出需要轉(zhuǎn)換為可由詳細(xì)布線程序使用的邊界引腳分配。
圖71和72示出用于在Gcell層的這個共用限制的需要。在Gcell層,一些實(shí)施方式界定橫跨Gcell之間的曼哈頓路徑的容量為8軌跡寬。圖71示出8個這樣通過邊E11的軌跡。而且,一些實(shí)施方式假定對角層上的間距與在曼哈頓層上的間距相同,并且由此假定對角路徑的容量僅僅是兩倍曼哈頓路徑容量的平方根。在這樣的假想下,穿過上述的Gcell的對角路徑的容量是11軌跡。圖71示出路徑P32的11軌跡寬的容量。
垂直或者水平相鄰的對角路徑有重疊布線區(qū)域。例如,圖72示出兩個垂直相鄰的對角路徑P32和P26分享共用對角區(qū)域7205的容量(即,5個對角軌跡)。因?yàn)?,按照圖61的模式,曼哈頓路徑不僅橫越在曼哈頓方向之間的兩個槽而且穿越在對角方向之間的兩個槽,因此對角區(qū)域7205的五個對角軌跡被穿過這個區(qū)域的曼哈頓路徑P4共享。
為了說明對角區(qū)域的共享容量,以下的LP公式界定三組限制,每組有兩個限制,其中一個用于+45°路徑以及一個用于-45°路徑。這三組限制是(1)對角對限制,(2)混合三重限制,和(3)對角三重線限制。在以下的討論中,+45°路徑指的是東路徑,而-45°路徑指的是西路徑。
圖73示出第一種類型的限制,即對角對限制。這個圖示出八個受限的對角對,該對角對已界定在路徑P27和P36周圍。這些受限對角對的其中兩個是包括水平相鄰東路徑P36和P38的7305,以及包括垂直相鄰的西路徑P27和P33的7310。
根據(jù)該對的其中一個對角路徑是否是當(dāng)前槽的外圍,可將對角對限制分類為內(nèi)部和外圍限制。特別地,對7305和7310是內(nèi)部對角對。內(nèi)部對角對包括水平或者垂直相鄰地兩個對角路徑,并且對角路徑不是來自東路徑組P24,P26,P28,P30,P32,P34,P36,P38和P40,就是來自西路徑組P25,P27,P29,P31,P33,P35,P53,P39和P41。在圖73示出的三個其它的內(nèi)部受限對角對是(1)對7315,其包括路徑P36和P30,(2)對7320,其包括路徑P27和P25,以及(3)對7325,其包括路徑P27和P29。
圖73也示出三個受限外圍對角對。外圍對角對包括兩個水平或者垂直相鄰的對角對,其中(1)都是東路徑或者西路徑,(2)其中一個路徑是內(nèi)部路徑P24-P41的其中之一,以及另一個路徑在槽的外圍邊上。圖73示出的受限外圍對是(1)對7330,包括路徑P36和7335,(2)對7340,包括路徑P36和7345,以及(3)對7350,包括路徑P27和7355。
每個受限對角對中的兩個路徑共享幾個軌跡(即,由一個路徑表示的幾個軌跡與另一個路徑表示的幾個軌跡相同)。相應(yīng)地,一些實(shí)施方式限制與每個受限對角對有關(guān)的稠密來說明這個共享。
例如,當(dāng)對中的兩個路徑共享大約一半軌跡時,一些實(shí)施方式將與內(nèi)部對角對有關(guān)的稠密限制為對中的任一路徑容量的1.5倍。作為舉例,當(dāng)兩個內(nèi)部對角路徑P36和P38為每個11軌跡寬,并且彼此共享5軌跡時,一些實(shí)施方式規(guī)定限制為有關(guān)這些路徑的稠密最多占據(jù)16軌跡(即,特定通過P36的線流加通過P38的線流,再加任何的稠密最多占據(jù)16軌跡)。
當(dāng)對中的兩個路徑共享大約一半軌跡時,一些實(shí)施方式也限制與外圍對角對有關(guān)的稠密為內(nèi)部對角路徑容量的1.5倍。例如,在一些實(shí)施方式中,外圍對角對7330在Gcell層的路徑均為11軌跡寬。在該層,這些路徑彼此共享5個軌跡,相應(yīng)地,對于Gcell層,一些實(shí)施方式規(guī)定限制為有關(guān)這些路徑的稠密最多為16軌跡(即,規(guī)定通過P36的線流加通過7335的線流,再加任何稠密最多占據(jù)16軌跡)。
和內(nèi)部對角對限制(該限制需要LP求解程序計(jì)算與對中的兩個對角路徑相關(guān)的稠密)不同,一個外圍對角對限制僅需要LP求解程序計(jì)算用于LP解的關(guān)于外圍對的內(nèi)部對角路徑稠密。這是因?yàn)橛嘘P(guān)外圍對角對的外圍路徑在先于當(dāng)前求解操作的傳播操作期間被計(jì)算。
例如,當(dāng)與槽7360有關(guān)的曼哈頓或者對角路徑或者與相鄰槽7360的槽有關(guān)的對角路徑向下傳播到槽7360的子槽7365時,已經(jīng)可以計(jì)算有關(guān)用于外圍對角對7330的外圍路徑7335的稠密。一些實(shí)施方式記錄在第一父槽的子槽和與第一父槽相鄰的第二父槽的子槽之間的傳播路徑的容量。一些實(shí)施方式通過以下的操作保持這樣一個記錄(1)產(chǎn)生用于相鄰的父槽的相鄰子槽的槽對記錄,(2)存儲兩個相鄰子槽的標(biāo)識在槽對記錄中,(3)初始化表示在兩個子槽之間的傳播外圍路徑的容量的容量字段,和(4)減少這個容量以用于使用和稠密。這些實(shí)施方式隨后通過取回存儲這個容量的槽對記錄來標(biāo)識每個外圍路徑的容量。一些實(shí)施方式通過使用與外圍路徑相關(guān)的兩個子槽(即,當(dāng)前槽的子槽,以及相鄰槽的子槽)的標(biāo)識來取回槽對記錄。
圖74示出第二種類型的限制,即混合三重線限制。除了混合三重線限制限制與相鄰共直線對角路徑對加上在對角對之間的曼哈頓路徑的稠密之外,這個限制與第一種限制,即對角限制類似。
圖74表示8個受限混合三重線,四個包括路徑P36,四個包括路徑P27。類似與對角對限制,混合三重線限制可根據(jù)三個中的一個對角路徑是否是在當(dāng)前槽外圍,可分類為內(nèi)部和外圍限制。
圖74中路徑P36周圍的四個受限混合三重線是(1)內(nèi)部混合三重線7405,包括路徑P9,P36和P38,(2)外圍三重線7410,包括路徑P9,P36和7445,(3)外圍三重線7415,包括路徑P20,P36和7445,以及(4)內(nèi)部混合三重線7420,包括路徑P6,P36和P30。
在圖74中的有關(guān)路徑P27的四個受限混合三重線是(1)內(nèi)部混合三重線7425,包括路徑P14,P27和P29,(2)內(nèi)部三重線7430,包括路徑P4,P27和7433,(3)內(nèi)部三重線7435,包括路徑P13,P27和P25,以及(4)內(nèi)部混合三重線7440,包括路徑P1,P27和7450。
在每個受限混合三重線中的三個路徑共享幾個軌跡。例如,對于在圖62和63的對調(diào)布線模式表示,由對角路徑的其中之一表示的幾個路徑與幾個由其他對角路徑表示的軌跡是相同的。而且,對于圖61的曼哈頓布線模式表示,曼哈頓路徑可以通過幾個對角路徑傳播到更低層的子槽內(nèi),這些對角路徑競爭與曼哈頓路徑相鄰的對角路徑相同的軌跡。相應(yīng)地,一些實(shí)施方式限制有關(guān)每個受限混合三重線的稠密來說明這個共享。
例如,當(dāng)對中的兩個對角路徑分享軌跡的大約一半時,一些實(shí)施方式限制有關(guān)內(nèi)部混合三重線的稠密為在三重線中的對角路徑的其中之一的容量的1.5倍加僅在曼哈頓方向的曼哈頓路徑的容量。例如,在Gcell層,兩個內(nèi)部對角路徑P36和P38每個都有11軌跡寬,并且彼此共享5軌跡,而曼哈頓路徑P21在曼哈頓方向是8軌跡寬,在向東方向是5軌跡寬(即,路徑P21可以在布線的垂直層使用8軌跡,在東層布線使用5軌跡)。相應(yīng)地,在Gcell層,這些實(shí)施方式的其中一些指定三重限制,該限制為有關(guān)路徑P21,P36和P38的稠密(即,線流加稠密)必須最多占據(jù)24軌跡(即,16個可用的東邊軌跡加8個可用的垂直軌跡)。
當(dāng)在對中的兩個對角路徑分享軌跡的大約一半時,其它的實(shí)施方式可以限制內(nèi)部混合三重線的稠密為在三重線中對角路徑的其中之一的容量的1.5倍加在曼哈頓方向和相反的對角方向的曼哈頓路徑的容量。這樣,對于上述的舉例(其中,在葉槽層,兩個內(nèi)部對角路徑P36和P38每個都有11軌跡寬,并且彼此共享5軌跡,而曼哈頓路徑P21在曼哈頓方向是8軌跡寬,在向東方向是5軌跡寬,在西方向是5軌跡寬),這些實(shí)施方式的其中一些指定一三重限制,該限制為有關(guān)路徑P21,P36和P38的稠密(即,線流加稠密)必須最多為29軌跡(即,16個可用的東邊軌跡加8個可用的垂直軌跡以及5個可用的西邊軌跡)。
另外,正像外圍對角對限制,除了計(jì)算在先前的傳播操作期間三重線的有關(guān)外圍路徑的稠密之外,外圍混合三重線限制在一些實(shí)施方式中一樣分析內(nèi)部限制。換句話說,內(nèi)部混合三重限制需要LP求解程序計(jì)算有關(guān)三重線對角路徑和曼哈頓路徑的稠密以得到LP解。外圍混合三重線限制只需要LP求解程序計(jì)算與三重線的內(nèi)部對角有關(guān)的路徑和曼哈頓路徑的稠密,以得到LP解。LP求解程序能從用于外圍路徑橫越的兩個子槽的槽對記錄中取回外圍路徑的稠密。
圖75示出第三種類型的限制,即,對角三重線限制。這個限制與第一種類型的限制——對角對限制類似,除了對角三重線限制限制三個同線的對對角路徑的稠密,而不是兩個。圖75示出四個受限的對角三重線,兩個包括路徑P36,兩個包括路徑P27。
如對角限制,根據(jù)三重線的其中一個對角路徑是否是在當(dāng)前槽的外圍,對角三重線限制可以被分類為內(nèi)部和外圍限制。圖75中四個受限的對角三重線是 (1)外圍對角三重線7505,包括路徑P36,P38和7530,(2)外圍對角三重線7510,包括路徑P30,P36和7525,(3)內(nèi)部對角三重線7515,包括路徑P25,P27和P29,以及(4)外圍對角三重線7520,包括路徑P27,P33和7535。
對于圖62和63的對角布線模式表示,在三重線中的中間路徑和其他兩個對角路徑分享幾個軌跡。相應(yīng)地,一些實(shí)施方式限制每個受限的對角三重線的稠密來說明這個分享。
當(dāng)在三重線中的中間對角路徑和另外對角路徑的其中之一分享其軌跡的大約一半并且和另一個對角路徑分享另一半軌跡時,一些實(shí)施方式限制對角三重線的稠密為在三重線中的對角路徑的其中之一的容量的2.0倍。例如,在Gcell層的一些實(shí)施方式中,每個對角路徑是11軌跡寬,并且與每個相鄰的共直線的對角路徑共享5軌跡。相應(yīng)地,對于Gcell層,一些實(shí)施方式規(guī)定三重線限制為在有關(guān)三重線中的三個對角路徑(即有關(guān)P25,P27和P29)的稠密(即,線流加稠密)至多為22軌跡。
另外,類似于外圍對角對和混合三重限制,除了計(jì)算在先前的傳播操作期間三重線的有關(guān)外圍路徑的稠密之外,在一些實(shí)施方式中如內(nèi)部限制一樣分析外圍對角三重線限制。特別地,內(nèi)部混合三重限制需要LP求解程序計(jì)算三重線所有對角路徑的稠密。另一方面,外圍對角三重線限制只需要LP求解程序計(jì)算有關(guān)三重線的內(nèi)部對角路徑的稠密。LP求解程序能從用于外圍路徑橫越的兩個槽的槽對記錄中取回外圍對角路徑的稠密。
一名普通技術(shù)人員將認(rèn)識到其它的實(shí)施方式可界定其它的限制。例如,一些實(shí)施方式可以界定混合五重線限制,其限制與曼哈頓路徑和兩對相鄰共直線對角路徑相關(guān)的稠密。一個這樣的五重線將包括垂直路徑P13,-45°對角路徑P25和P27,以及+45°對角路徑P24和P26。
在每個五重線中的曼哈頓路徑將和五重線的對角路徑分享幾個軌跡。另外,在每個平行對角對的路徑共享幾個軌跡。因此,當(dāng)在每個對中的兩個對角路徑共享軌跡的一半時,一些實(shí)施方式限制混合五重線的稠密為在五重線中的對角路徑的其中之一的容量的3倍加僅在曼哈頓方向的曼哈頓路徑的容量。例如,在Gcell層的一些實(shí)施方式中,每個對角路徑是11軌跡寬,并且與每個相鄰的共直線對角路徑共享5軌跡,而每個曼哈頓路徑在曼哈頓方向上是8軌跡寬。因此,在Gcell層,這樣的實(shí)施方式其中一些根據(jù)每個平行對角對的容量是縮短的或者不是,規(guī)定五重線限制為有關(guān)五重線的稠密必須至多為40或者41軌跡。
c.公式在一些實(shí)施方式中,基于上述的目標(biāo)函數(shù)和限制,求解程序3930用公式表示LP問題。在這些實(shí)施方式的其中一些里,LP問題的公式如下[準(zhǔn)備求解程序ILP(槽)]—初始化變量MinSlack(最小松弛)為0//路徑不允許過度限制—初始化1enAndViaWeight為100//最初長度和路徑數(shù)有超過最小化松弛的優(yōu)先權(quán)—初始化變量minSlackWeight(最小松弛權(quán)重)為-1—當(dāng)(!完成時)—聲明和初始化LP求解程序—聲明目標(biāo)行,以及稱其為“目標(biāo)”—對于變量中用于網(wǎng)絡(luò)的每一經(jīng)過識別的樹組(此變量存儲有用于當(dāng)前槽中的所有網(wǎng)絡(luò)的經(jīng)過識別的所有組)—如果組為空(即,組包括用于在當(dāng)前槽的一個網(wǎng)絡(luò)的樹選擇組)—從組中的第一樹記錄取回網(wǎng)絡(luò)索引,N—聲明一個限制,“rN”,以限制求解程序,從而僅選擇1樹用于這個網(wǎng)絡(luò)—對于在槽中的每一路徑N,—聲明限制,“usageN(使用N)”,以界定將這個路徑的總使用值相加的變量—聲明限制,“eSlackN”,以界定超過所有路徑的最大松弛值—聲明限制,“mxuseN”,以界定超過所有路徑的最大使用值—如果路徑N是曼哈頓路徑—聲明限制,eMtplN,以限制曼哈頓路徑N以及相鄰對的“東”路徑的使用的總和//這個限制是用于包含路徑N和與之相鄰的2個對角東路徑的混合三重線—聲明限制,wMtplN,以限制曼哈頓路徑N以及相鄰對“西”路徑的使用的總和//這個限制是用于包含路徑N和與之相鄰的2個對角西路徑的混合三重線—聲明限制,epairN,以限制兩個與路徑N相鄰的“東”路徑的使用的總和//這個限制是用于包含與路徑N相鄰的2個對角東路徑的對角對—聲明限制,wpairN,以限制兩個與路徑N相鄰的“西”路徑的使用的總和//這個限制是用于包含與路徑N相鄰的2個對角西路徑的對角對—聲明限制,eDtplN,以限制兩個與路徑N相鄰的“東”路徑加最底部/最左邊相鄰東路徑之下/或左側(cè)的第三東路徑的使用的總和//這個限制是用于包括兩個與路徑N相鄰的對角東路徑加最底部/最左邊相鄰東路徑以下或者左邊的第三東路徑的對角三重線—聲明限制,wDtplN,以限制兩個與路徑N相鄰的“西”路徑加最底層/最左側(cè)相鄰西路徑以下或者左邊的第三西路徑的使用的總和//這個限制是用于包括兩個與路徑N相鄰的對角西路徑加最底部/最左側(cè)相鄰西路徑以下或者左側(cè)的第三西路徑的對角三重線—界定限制,“Min_Slack(最小松弛)”,以限制通過所有路徑的最小松弛值—界定限制,“tLen”,以界定將所有所選樹的長度成本相加的變量—界定一限制,“tVias”,以界定將所有路徑的通路成本相加的變量//在這個點(diǎn),聲明所有LP的“行”。現(xiàn)在,我們通過填充所有的列繼續(xù)(即,顯示變量)—對于每一組的樹,樹組,用于網(wǎng)絡(luò)中的變量m_sols存儲用當(dāng)前槽中所有網(wǎng)絡(luò)的多組樹—標(biāo)識這組樹屬于的網(wǎng)絡(luò)—對于在樹組中的每一個樹—產(chǎn)生用于表示這個樹的變量,“xN_T”,其中,N是網(wǎng)絡(luò)索引,并且T是樹的序數(shù),—聲明xN_T,將因數(shù)1.0提交到限制“rowN”—標(biāo)識樹xN_T的布線長度成本//由上述的過程6400計(jì)算—計(jì)算嵌入這個樹所需通路數(shù),“nVias”,//使用上述的過程6800-7000—聲明xN_T,將因數(shù)estLen提交到限制“tLen”—聲明xN_T,將因數(shù)nVias乘以X提交到限制“tVias”//其中,X是在以上已經(jīng)參考公式(I)進(jìn)行描述的轉(zhuǎn)換因數(shù)。
—對于在槽中的每一路徑E,—如果這個樹使用路徑E—聲明xN_T,以將因數(shù)-1.0提交到限制usageE—對于在這個槽中的每一路徑E,—產(chǎn)生變量,“uE”,其中E是路徑的整數(shù)標(biāo)示符—聲明uE,以將因數(shù)1.0提交到限制“usageE”—聲明uE,以將因數(shù)-1.0提交到限制“mxuseE”—聲明uE,以將因數(shù)1.0提交到限制“eslackE”—如果路徑E是一個曼哈頓路徑—聲明uE,以將因數(shù)1.0提交到限制“eMtplE”—聲明uE,以將因數(shù)1.0提交到限制“wMtplE”—取回兩對與路徑E相鄰的對角路徑—對于在對中的每一路徑A—如果路徑A的方向是“東”—聲明uA,以將因數(shù)1.0提交到限制“eMtplE”—聲明uA,以將因數(shù)1.0提交到限制“epairE”—如果路徑A的方向是“西”—聲明uA,以將因數(shù)1.0提交到限制“wMtplE”—聲明uA,以將因數(shù)1.0提交到限制“wpairE”—取回與路徑E相鄰的對角路徑的三重線—對于在對中的每一路徑B—如果路徑B的方向是“東”—聲明uB,以將因數(shù)1.0提交到限制“eDtplE”—如果路徑B的方向是“西”—顯示uB,以將因數(shù)1.0提交到限制“wDtplE”—產(chǎn)生變量,“slack(松弛)”—聲明slack,將因素1.0提交到限制“Min_Slack”
—聲明slack,以將因數(shù)“minSlackWeight”提交到目標(biāo)函數(shù)—對于在這個槽中的每一路徑E,—聲明slack,以將由因數(shù)1.0的限制提交到限制“eslackE”—如果路徑E是曼哈頓路徑—聲明slack,將因數(shù)1.0提交到限制“epairE”—聲明slack,將因數(shù)1.0提交到限制“wpairE”—聲明slack,將因數(shù)1.0提交到限制“eMtplE”—聲明slack,將因數(shù)1.0提交到限制“wMtplE”—聲明slack,將因數(shù)1.0提交到限制“eDtplE”—聲明slack,將因數(shù)1.0提交到限制“wDtplE”—產(chǎn)生變量,“tV”—聲明tV,將因數(shù)1.0提交到限制“tVias”—聲明tc,將因數(shù)“l(fā)enAndViaWeight”提交到目標(biāo)函數(shù)—產(chǎn)生變量“tL”—聲明tl,以提交因數(shù)1.0到限制“tLen”—聲明tl,以提交因數(shù)“l(fā)enAndViaWeight”提交到目標(biāo)函數(shù)//直到這里,我們已經(jīng)顯示限制,并且填充到公式的左手邊。現(xiàn)在,我們將設(shè)置右手邊—對于用于變量m_sols中的網(wǎng)絡(luò)的每一樹的組,樹組,m_sols存儲用于當(dāng)前槽中的所有網(wǎng)絡(luò)的多組樹,—如果組不是空的(組包括用于在這個槽的網(wǎng)絡(luò)的樹選擇組)—從組中的第一樹記錄取回網(wǎng)絡(luò)索引N—將限制的RHS,“rN”,設(shè)置等于1.0—對于在這個槽中的每一路徑E,—設(shè)置限制“usageE“的rhs等于0.0—設(shè)置限制“mxuseE“的rhs等于0.0—取回容量估計(jì)cap(E),該估計(jì)通過從估計(jì)未稠密值(由過程5400計(jì)算的)中減去估計(jì)的路徑使用(由過程5500計(jì)算)產(chǎn)生
—設(shè)置限制“eslackE“的rhs為cap(E)—如果路徑E是曼哈頓路徑—計(jì)算用于分享限制eMtplE的容量估計(jì)capeMtplE,以及將限制eMtplE的rhs設(shè)置為這個容量—計(jì)算用于分享限制wMtplE的容量估計(jì)capwMtplE,以及將限制wMtplE的rhs設(shè)置為這個容量—計(jì)算用于分享限制epairE的容量估計(jì)capepairE,以及設(shè)置限制epairE的rhs為這個容量—計(jì)算用于分享限制wpairE的容量估計(jì)capwpairE,以及設(shè)置限制wpairE的rhs為這個容量—計(jì)算用于分享限制eDtplE的容量估計(jì)capeDtplE,以及設(shè)置限制eDtplE的rhs為這個容量—計(jì)算用于分享限制wDtplE的容量估計(jì)capwDtplE,以及設(shè)置限制wDtplE的rhs為這個容量—設(shè)置限制“tVias”的rhs等于0.0—設(shè)置限制“tLen”的rhs等于0.0—設(shè)置限制“Min_Slack”的rhs等于變量minSlack—求解LP—如果不存在解//刪除在最小松弛上的硬限制,重新設(shè)置加權(quán),以便松弛有超過長度和通路數(shù)的優(yōu)先權(quán)—設(shè)置變量minSlackWeight=-500—設(shè)置變量minSlack=-1000—設(shè)置變量1enAndViaWeight=1—如果求解被發(fā)現(xiàn)—退出當(dāng)型循環(huán)正像前面所指出的,公式的第三到最后語句告訴(在5325)LP求解程序求解問題。LP求解程序隨后試著求解這個問題。如果LP求解程序在第一次迭代中通過上面所描述的當(dāng)型循環(huán)求解這個問題失敗,上述的公式改變某個常量的值,使得最小松弛不再有許多的限制,而是充當(dāng)目標(biāo)函數(shù)的主(primary)分量。特別地,常量minSlackWeight,minSlack以及LenAndViaWeight的變化有效地使得容量限制(僅是引起第一次嘗試失敗的限制)變?yōu)闊o效。LP求解程序隨后試著再次求解問題。常量minSlackWeight,minSlack以及LenAndViaWeight的變化確保第二次嘗試將產(chǎn)生一個求解。一名普通技術(shù)人將明白,其它的實(shí)施方式可以更增量地改變這些變量值,找到具有不同特性的解。然而,這樣的增量變化將減小求解程序的速度。
LP求解程序返回的解是一個符合所有限制的求解并產(chǎn)生最低的目標(biāo)函數(shù)輸出。所返回的求解可以包括用于每個樹變量xN_C的實(shí)數(shù)。例如,如果求解程序提交三個布線到LP求解程序,LP求解程序可以返回值0.8用于一個布線,0.1用于另一個布線,以及0.1用于最后一個布線。
正像上面所提到的,過程5300轉(zhuǎn)換(在5330)這個LP求解為ILP求解。即,一個指定0或1作為每個樹變量xN_C的值的求解。并且,正像上面所提到的,一些實(shí)施方式使用隨機(jī)舍入來實(shí)現(xiàn)這個轉(zhuǎn)換。基于在5330所選擇的一組布線,求解程序3930在當(dāng)前槽的每個槽-網(wǎng)絡(luò)數(shù)據(jù)結(jié)構(gòu)中存儲(在5335)一個42位的所選布線的字符串。這42位字符串指定在所選網(wǎng)絡(luò)布線占據(jù)的當(dāng)前槽中的路徑。
一名普通技術(shù)人員將明白,不管程序求解程序上面的描述,其它的實(shí)施方式可以使用不同的方法求解在布線分層的特定層的布線問題。例如,一些實(shí)施方式可以不同于那些前面描述的方式界定目標(biāo)函數(shù)和限制。例如,一些實(shí)施方式可以使用布線成本作為限制,并且有目標(biāo)函數(shù)簡單地最小化稠密。同時,其它的實(shí)施方式使用ILP求解程序產(chǎn)生ILP求解,而不是使用LP求解程序來生成求解并轉(zhuǎn)換LP求解為ILP解。另外,其它的實(shí)施方式使用一個順序排列來為當(dāng)前槽的每個網(wǎng)絡(luò)嵌入布線。
F.傳播程序在求解程序指定用于當(dāng)前槽的每個槽-網(wǎng)絡(luò)的布線后,在當(dāng)前槽不是葉槽時,槽管理程序3925調(diào)用傳播程序3935。傳播程序隨后確定由求解程序指定的用于當(dāng)前槽的布線路徑怎樣向下傳播到當(dāng)前槽的子槽。對于在最高層槽之后但在葉層槽之前的槽,傳播程序也執(zhí)行隨動傳播操作,該隨動傳播操作將由傳播程序在先前的布線層指定的路徑向下進(jìn)一步傳播一層。對于在當(dāng)前槽中的每個網(wǎng)絡(luò),傳播程序必需修改在每個子槽中的網(wǎng)絡(luò)的引腳分布,以用于解釋其標(biāo)識的傳播。
下面將描述兩個不同的傳播程序。第一傳播程序列舉幾個用于每個網(wǎng)絡(luò)布線的傳播求解,并且隨后使用LP計(jì)算程序3945和ILP轉(zhuǎn)換器3950來選擇用于每個網(wǎng)絡(luò)的傳播求解。另一方面,第二傳播程序是順序的傳播程序,其使用貪婪方法來選擇和嵌入用于在當(dāng)前槽中的每個網(wǎng)絡(luò)的布線的傳播。在以下所描述的實(shí)施方式中,這些傳播程序當(dāng)可用時,都使用順序傳播程序來執(zhí)行隨動傳播。
一些實(shí)施方式當(dāng)使用圖62用于對角路徑的七排列傳播模式時,使用第一傳播程序,并且當(dāng)使用圖63用于對角路徑的十九排列傳播模式時,使用第二傳播程序。這些實(shí)施方式的其中一些與這些模式的其中之一,使用圖61用于曼哈頓路徑的十排列傳播模式。
1. ILP傳播程序與求解程序類似,ILP傳播程序列舉幾個用于每個網(wǎng)絡(luò)布線的到受了影響的子槽的傳播求解并且計(jì)算其成本。傳播程序隨后用公式表示LP問題,并將這些求解提供給LP求解程序3945,這些求解依序返回許多實(shí)數(shù)解。這些實(shí)數(shù)解隨后由ILP求解程序3950轉(zhuǎn)換為整數(shù)解。這些整數(shù)求解指定在每個受影響的子槽中每個網(wǎng)絡(luò)的特定配置,并且傳播程序?qū)⒚總€網(wǎng)絡(luò)的配置存儲到用于受影響槽的網(wǎng)絡(luò)的槽-網(wǎng)絡(luò)數(shù)據(jù)結(jié)構(gòu)。
圖76示出在一些實(shí)施方式中ILP傳播程序執(zhí)行的過程7600。在一些實(shí)施方式中,當(dāng)槽管理程序調(diào)用傳播程序,并向它提供當(dāng)前槽時,這個過程開始。過程7600最初估計(jì)(在7605)每個路徑的每個傳播可能的可用性。估計(jì)傳播可用性的方式將在以下參考圖77和78進(jìn)行描述。
在估計(jì)每個布線的每個傳播可能的可用性之后,過程7600列舉所有的用于當(dāng)前槽中的每個槽-網(wǎng)絡(luò)的傳播排列并計(jì)算(在7610)其成本。一種列舉傳播并計(jì)算其成本的方式將在以下參考圖79和80進(jìn)行描述。
在列舉和計(jì)算可能傳播排列的成本之后,LP傳播程序用公式表示用于LP求解程序3945的LP問題。一種公式化LP傳播問題的方式將在以下的部分VI.F.1.d中描述。過程7600隨后轉(zhuǎn)換(在7625)由LP求解程序返回的LP求解為ILP求解。在一些實(shí)施方式中,該過程執(zhí)行隨機(jī)舍入來進(jìn)行這個轉(zhuǎn)換。一種執(zhí)行隨機(jī)舍入成整數(shù)的方式在上面的部分VI.E中已經(jīng)描述了。
基于在7625指定的傳播,該過程隨后在必要時修改(在7630)當(dāng)前槽的子槽中的槽-網(wǎng)絡(luò)的16位引腳分布。如果在此階段沒有槽-網(wǎng)絡(luò)數(shù)據(jù)結(jié)構(gòu)被修改用于特定網(wǎng)絡(luò),傳播程序?qū)⒂门e例說明一個,并且在其中記錄16位引腳分布。
在當(dāng)前槽層是在葉層之上至少兩層時,過程7600添加(在7635)其在7625所標(biāo)識的傳播路徑到用于更低遞歸層的隨動傳播列表中。在當(dāng)前槽的層在最高級之后但在葉層之前時,傳播程序隨后執(zhí)行(在7640)隨動傳播操作。這個操作傳播將傳播程序在先前的布線層指定的布線路徑向下進(jìn)一步傳播一層。一種執(zhí)行隨動傳播的形式將在以下操考圖65和81進(jìn)行詳述。
在當(dāng)前槽的層是直接在葉層之前的層(即,在當(dāng)前槽是Gcell的祖父)時,過程7600接下來調(diào)用(在7645)保存程序以將在7625指定的傳播路徑的路徑數(shù)據(jù)結(jié)構(gòu),并且當(dāng)可用時,將在7640指定的傳播路徑的路徑數(shù)據(jù)結(jié)構(gòu)鏈接到dBNet4110。該過程隨后結(jié)束。
a.估計(jì)傳播的稠密正像前面所提到的,過程7600估計(jì)(在7605)當(dāng)前槽的每個路徑用于每個傳播可能的剩余可用性。在一些實(shí)施方式中,過程7600通過以下來計(jì)算這個估計(jì)(1)估計(jì)每個路徑的每個傳播的稠密容量,(2)估計(jì)每個路徑的每個傳播的使用,以及(3)將每個傳播的稠密容量和使用相加。每個傳播的稠密容量的估計(jì)將在以下參考圖77進(jìn)行描述,而每個傳播的使用估計(jì)將在以下參考圖78進(jìn)行描述。
(1)每個路徑所估計(jì)的稠密容量圖77示出用于估計(jì)在當(dāng)前槽中的每個路徑的每個傳播的稠密容量的過程7700。傳播過程7600在7605執(zhí)行過程7700。最初,這個過程分配(在7702)由至少具有一個字段的數(shù)據(jù)結(jié)構(gòu)(即,矩陣),以用于存儲在當(dāng)前槽中的每個路徑的每個傳播的稠密容量。在7702,該過程也初始化數(shù)據(jù)結(jié)構(gòu)中的每個字段為0。
在7704,過程選擇在電路模塊的當(dāng)前槽列表中的電路模塊。過程隨后取回(在7706)用于所選電路模塊的電路宏。隨后選擇(在7708)電路宏的障礙,并且計(jì)算(在7710)所選障礙的邊界框。
接下來,過程(在7712)選擇當(dāng)前槽的42個路徑的其中之一。隨后選擇(在7714)在7712所選路徑的傳播的其中之一。過程接下來確定(在7716)在7712所選路徑是否與在7708所選擇的障礙在同一層。
如果所選路徑的層與所選障礙的層相匹配,該過程計(jì)算(在7726)所選擇的傳播的邊界框。在7726,該過程也計(jì)算傳播的邊界框的面積。過程接下來標(biāo)識(在7728)所選傳播的邊界框和所選電路模塊的邊界框的交叉處,并且計(jì)算(在7730)該交叉處的面積。該過程通過將他們計(jì)算的傳播面積除他們計(jì)算的交叉處面積,來計(jì)算(在7732)阻礙因子。該過程接下來(在7734)將默認(rèn)的傳播容量乘以阻礙因子,并隨后將(在7736)相乘的結(jié)果與存儲在7702所分配的數(shù)據(jù)結(jié)構(gòu)中的傳播的稠密容量相加。該過程隨后轉(zhuǎn)到將在以下進(jìn)行描述的7718。
如果過程在7716確定所選路徑的層與所選障礙的層不相同,過程轉(zhuǎn)到7718。在7718,該過程確定是否已經(jīng)檢查了用于在7712選擇的路徑的所有傳播。如果沒有,過程返回到7714,以選擇用于所選路徑的另一個傳播。另一方面,如果該過程確定(在7718)已經(jīng)檢查了用于在7712所選的路徑的所有傳播,過程確定(在7720)是否已經(jīng)檢查了當(dāng)前槽的所有路徑。如果沒有,該過程返回到7712,以選擇當(dāng)前槽的另一路徑。
或者,如果所選路徑是當(dāng)前槽的最后路徑,該過程確定(在7722)是否已經(jīng)檢查了在7704選擇的電路模塊的所有障礙。如果沒有,該過程轉(zhuǎn)到7708,選擇另一所選的電路模塊的障礙。否則,過程確定(在7724)是否已經(jīng)檢查了當(dāng)前槽中的所有電路模塊。如果沒有,過程轉(zhuǎn)到7704,以選擇在當(dāng)前槽的另一個電路模塊。然而,如果該過程檢查了當(dāng)前槽的所有電路模塊,該過程結(jié)束。
b.所估計(jì)的每個路徑傳播的使用圖78示出用于估計(jì)當(dāng)前槽中每個路徑的每個傳播的使用的過程7800。這個過程在每次傳播程序在7605調(diào)用其時開始。在一些實(shí)施方式中,過程7800從傳播程序接收用于存儲每個傳播的估計(jì)使用的浮點(diǎn)變量的數(shù)據(jù)結(jié)構(gòu)(即一個矩陣)。在另一些實(shí)施方式中,過程7800不接收這樣的數(shù)據(jù)結(jié)構(gòu),而是當(dāng)過程開始時產(chǎn)生這個結(jié)構(gòu)。在一些實(shí)施方式中,所接收或者產(chǎn)生的數(shù)據(jù)結(jié)構(gòu)具有用于每個傳播可能性的項(xiàng)(entry)。
正像在圖78所示出的,過程7800最初選擇(在7805)當(dāng)前槽的子槽的其中之一。隨后調(diào)用(在7810)圖55用于所選擇的子槽的路徑使用估計(jì)過程5500。路徑使用估計(jì)過程5500計(jì)算和返回用于所選子槽的每個路徑的估計(jì)使用值。由于估計(jì)過程5500在前面已經(jīng)描述了,為避免不必要的詳述模糊本發(fā)明的描述,這里將不再描述該過程。
在7810之后,過程7800確定(在7815)其是否已經(jīng)計(jì)算了用于當(dāng)前槽的所有子槽的路徑使用值。如果沒有,返回到7805,以選擇另一子槽,并計(jì)算(在7810)新選子槽的路徑使用值。當(dāng)過程確定(在7815)已經(jīng)檢查了當(dāng)前槽的所有子槽,其選擇(在7820)在當(dāng)前槽中的42個路徑的其中之一。
在7825,該過程選擇所選路徑的其中一個傳播。隨后根據(jù)相鄰子槽路徑的路徑使用值計(jì)算(在7830)所選路徑傳播的使用估計(jì)。例如,在本發(fā)明的一些實(shí)施方式中,該過程使用以下的公式計(jì)算路徑1的傳播0的使用值傳播_0-路徑_1_使用(prop_O_path_1_use)=(1/2)*(1/2*路徑[1][2]+1/3*路徑[1][1]+1/6*路徑[1]
+1/2*路徑[2]
+1/3*路徑[2][1]+1/6*路徑[2][2]其中,路徑[i][j]指的是使用子槽i的路徑j(luò)。類似的公式可以用來近似地界定用于其他傳播可能性的傳播使用值。
上面的等式依據(jù)在子槽1和2中的稠密界定了子槽1和2之間的路徑1的傳播0的傳播使用值。這個等式僅檢查在子槽中與路徑1的傳播0成一直線的水平路徑。特別地,它根據(jù)子槽1和2的水平路徑0,1和2來檢查路徑1的傳播0的分量使用值。槽1和2的使用值之和乘以1/2,反映在當(dāng)前槽中的路徑1的傳播0的容量同樣受子槽1和2中子路徑的容量影響。
由于以下的原因,乘數(shù)1/2,1/3和1/6用于下列原因的子槽1和2的求和。目標(biāo)是估算有多少線能通過傳播路徑。一些這樣線將在越過傳播路徑之后立即終止,而一些將越過與路徑關(guān)聯(lián)的槽的整個寬度。假定使用該路徑的線的“終端”的均勻分布,這樣對于路徑1的傳播0,1/4將在子槽2的槽0中終止,1/4將在子槽2的槽1中終止,1/4在子槽2的槽2,1/4在子槽2的槽3和在其之外。這意味著使用路徑1的線的3/4將也使用子槽2的路徑0,2/4將使用子槽2的路徑1,并且1/4將使用子槽2中的路徑3,這樣通過傳播路徑的估計(jì)使用,給出這3個路徑的使用的相對影響的比率3∶2∶1(或3/6,2/6,1/6)。
在7835,該過程確定是否已經(jīng)檢查了在7820所選擇路徑的所有可能的傳播。如果沒有,該過程轉(zhuǎn)回到7825,以選擇另一個用于所選擇路徑的傳播,并且計(jì)算(在7830)一個新選傳播的使用估計(jì)。
當(dāng)過程確定(在7835)已經(jīng)檢查了在7820所選路徑的所有傳播,過程確定(在7840)是否已經(jīng)檢查了當(dāng)前槽的所有路徑。如果沒有檢查所有的路徑,該過程轉(zhuǎn)回到7820,以選擇在當(dāng)前槽的另一個路徑,隨后執(zhí)行操作7825-7835,以計(jì)算新選路徑的傳播可能的使用。當(dāng)該過程確定(在7840)已經(jīng)檢查了在當(dāng)前槽的所有路徑,該過程結(jié)束。
c.列舉和分配每個傳播的成本在估計(jì)每個路徑的每個傳播可能的可用性之后,過程7600列舉用于在當(dāng)前槽中的每個槽-網(wǎng)絡(luò)的所有傳播排列和并估算(在7610)其成本。圖79示出一個列舉和估算傳播成本的一種形式。
正像在圖79所示出的,過程7900通過選擇(在7905)當(dāng)前槽的槽-網(wǎng)絡(luò)開始。該過程然后初始化(在7910)16個空表,一個用于存儲與一特定子槽相關(guān)的路徑。該過程接下來取回(在7915)用于在7905所選槽-網(wǎng)絡(luò)的布線。
在7920,該過程選擇所取回的布線路徑的其中之一。隨后標(biāo)識對應(yīng)于所選擇路徑的末端的兩個子槽。該過程將所選擇的路徑添加到在7925所標(biāo)識的每個子槽的路徑列表中。在7935,該過程確定是否已經(jīng)檢查了在7915所取回的布線的所有路徑。如果沒有,該過程返回到7920,選擇布線的另一個路徑。
當(dāng)該過程確定已經(jīng)將所有的布線路徑添加到他們相應(yīng)的子槽列表中,過程選擇(在7940)當(dāng)前槽的子槽的其中之一,并且取回所選擇的子槽的路徑列表。為了列舉所選擇的子槽中的所選擇的槽-網(wǎng)絡(luò)的所有可能的傳播排列并計(jì)算其成本,該過程在7940選擇子槽。在7945,該過程取回在所選子槽中的所選槽-網(wǎng)絡(luò)的引腳分布。
在7950,該過程初始化一個空列表,以存儲在7940所選子槽的所有可能的路徑傳播配置。在7955,該過程確定所選擇的子槽列表是否是空的(即是否槽-網(wǎng)絡(luò)的布線有任何橫越子槽的路徑)。當(dāng)槽-網(wǎng)絡(luò)的布線沒有橫越所選擇的子槽時,該過程不需要通過所選擇的槽標(biāo)識用于網(wǎng)絡(luò)的布線的傳播配置。相應(yīng)地,該過程轉(zhuǎn)到7985,確定是否已經(jīng)檢查了當(dāng)前槽的所有子槽。從7985至過程7900的流程將在以下進(jìn)行描述。
如果過程確定(在7955)槽-網(wǎng)絡(luò)的布線橫越所選擇的子槽,由此需要標(biāo)識用于所選子槽中的槽-網(wǎng)絡(luò)布線的傳播配置,過程7900執(zhí)行7960-7980來進(jìn)行列舉,估算成本,和存儲在所選子槽中的所選槽-網(wǎng)絡(luò)的所有可能的傳播排列。
在一些實(shí)施方式中,過程7900使用一個遞歸函數(shù)來執(zhí)行7955-7980。這個函數(shù)通過以下的動作來標(biāo)識每個路徑傳播排列(1)在所選子槽的路徑列表中選擇一個可能的傳播。(2)設(shè)置一個虛引腳來解釋所選傳播,(3)當(dāng)存在這樣的路徑時,遞歸重復(fù)最初兩個操作以用于路徑列表中的隨后路徑。對于每個標(biāo)識的傳播排列,過程7900隨后執(zhí)行7970-7975來估算成本和保存每個排列,并且將每個排列添加到傳播配置的列表中。
更特別地,在7960,過程7900在所選子槽列表中標(biāo)識路徑傳播的排列。當(dāng)槽-網(wǎng)絡(luò)的布線只有一個與所選子槽相關(guān)的路徑時,所標(biāo)識的傳播排列是用于與所選子槽相關(guān)的路徑的傳播可能的其中之一。另一方面,當(dāng)槽-網(wǎng)絡(luò)的布線有超過一個與所選子槽相關(guān)的路徑時,每個標(biāo)識的排列是用于與所選子槽相關(guān)的每個路徑的傳播的唯一組合。
正像在圖61所示出的,在本發(fā)明的一些實(shí)施方式中水平垂直路徑有10個傳播可能。另一方面,正像在圖62所示出的,在一些實(shí)施方式中對角路徑有7個傳播可能,而在圖63所示出的其他實(shí)施方式中,對角路徑有十九個傳播可能。一名普通技術(shù)人員將明白其它的實(shí)施方式使用其它用于水平,垂直或?qū)锹窂降膫鞑ツJ健?br> 在標(biāo)識在所選子槽中的路徑傳播排列之后,該過程標(biāo)識(在7965)引腳配置,其用于解釋在7960所標(biāo)識的排列的路徑傳播。除了可以包括一個或者多個虛引腳來解釋標(biāo)識的排列的路徑傳播,這樣的一個引腳配置與所選槽中的槽-網(wǎng)絡(luò)的引腳分布相同。
過程隨后計(jì)算(在7970)在7965所標(biāo)識的引腳配置的成本。在一些實(shí)施方式中,這個成本是連接由標(biāo)識的引腳配置指定的所選子槽引腳所必需的布線接線長度成本。正像前面,一些實(shí)施方式從指定每個引腳配置的最佳斯泰納布線的成本的預(yù)制成表的表中取回這個成本,而其它的實(shí)施方式基于布線路徑的成本來實(shí)時計(jì)算這個成本。
在7970,該過程存儲所標(biāo)識的傳播排列(即所標(biāo)識的路徑傳播)和其成本到配置記錄中。用于這樣一個記錄的數(shù)據(jù)結(jié)構(gòu)在圖80示出。傳播程序產(chǎn)生這個數(shù)據(jù)結(jié)構(gòu)的列表,并且使用這個列表以跟蹤傳播程序生成的所有配置的軌跡。這個數(shù)據(jù)結(jié)構(gòu)包括對網(wǎng)絡(luò)dbNet數(shù)據(jù)結(jié)構(gòu)的參考。它也包括子槽標(biāo)識器,其用于傳播程序識別用于配置的子槽的標(biāo)識。這個結(jié)構(gòu)也包括從路徑傳播推導(dǎo)的名字。它還存儲接線長度成本和路徑列表。
在7970之后,該過程添加(在7975)在7970所生成的配置記錄到用于所選子槽的配置列表。該過程隨后確定(在7980)是否已經(jīng)檢查了在所選子槽中的所有路徑傳播排列。正像前面提到的,一些實(shí)施方式將這個確定作為標(biāo)識所有路徑傳播排列的遞歸函數(shù)的一部分來執(zhí)行。
如果該過程確定(在7980)沒有檢查所有的路徑傳播排列,它標(biāo)識(在7960)另一個排列,并隨后估算成本和存儲(在7965-7975)這個排列。當(dāng)該過程已經(jīng)檢查了所有的路徑傳播排列,它確定(在7985)是否已經(jīng)檢查了所有子槽。如果沒有,該過程返回導(dǎo)7940,以選擇另一個子槽。
當(dāng)過程確定(在7985)已經(jīng)檢查了所有子槽,該過程確定(在7990)是否已經(jīng)生成了用于當(dāng)前槽中的所有槽-網(wǎng)絡(luò)的傳播排列。如果沒有,該過程返回導(dǎo)7905,選擇另一個槽-網(wǎng)絡(luò),并且隨后執(zhí)行后續(xù)操作,以列舉用于新選槽-網(wǎng)絡(luò)的傳播排列和估算其成本。當(dāng)已經(jīng)檢查了當(dāng)前槽中的所有槽-網(wǎng)絡(luò)時,該過程結(jié)束。
d.LP問題公式和求解通過向LP求解程序提供一個或者多個目標(biāo)函數(shù),多個求解和幾個限制,以用公式表示LP問題。LP求解程序隨后需要根據(jù)限制使用目標(biāo)函數(shù)選擇最佳的求解。
在LP傳播公式中的基本變量是配置記錄,nXtYeApB…,其中,小寫的字母是關(guān)鍵字(n=網(wǎng)絡(luò);t=子槽;e=路徑;p=傳播),而大寫的字母表示數(shù)字(從0到在設(shè)計(jì)中的網(wǎng)絡(luò)數(shù)用于“n”;0-15用于“t”,0-41用于“e”,以及0-9用于“p”)。
這個LP求解程序返回一LP求解,該解包括用于每個配置變量的實(shí)數(shù)值。正像前面所提到的,過程7600隨后轉(zhuǎn)換這個LP求解為ILP求解,即指定0或1作為每個配置變量值的求解。其它的實(shí)施方式使用ILP求解程序來產(chǎn)生ILP求解,而不是使用LP求解程序產(chǎn)生LP求解,并轉(zhuǎn)換LP求解為一ILP求解。
正像前面所提到的,一些實(shí)施方式使用“SoPlex”求解程序作為LP求解程序,其已經(jīng)由Roland Wunderling完成,作為名為“ParallelerundObjektorientierter Simplex-Algorithmus”的Ph.D論文(以德文)的一部分。有關(guān)這個計(jì)算機(jī)的信息在以下網(wǎng)址可以得到http//www.zib.de/Optimization/software/Soplex/。
同時,正像前面所描述的,LP求解程序的任務(wù)是標(biāo)識一LP求解,該解最小化一個或者多個目標(biāo)函數(shù)而滿足多個限制。以下所描述的實(shí)施方式指定以下的用于LP傳播的目標(biāo)函數(shù)。
最小化L1nXtYeApB+…+LLnQtWeDpCeApD+…這個目標(biāo)函數(shù)最小化總長度。特別地,在這個公式中的每一項(xiàng)表示一個配置(即,用于子槽中網(wǎng)絡(luò)的路徑傳播的正確選擇),并且其乘以該配置估計(jì)的長度(L1,LL)。
同時,以下所描述的實(shí)施方式指定三個限制。第一限制需要LP求解程序?qū)γ總€槽-網(wǎng)絡(luò)僅選出一個配置,正像以下所指出的nXtYeApB..eQpZ+nxtYeApC..eQpR+…=1;定義一個這樣的限制是用于通過最近求解的槽的16個子槽的每個槽-網(wǎng)絡(luò)。這個限制負(fù)責(zé)限制所選擇配置的數(shù)量為每個槽-網(wǎng)絡(luò)為1。
第二限制是傳播一致性限制,其用以確保在子槽之間的連貫性(例如,如果在子槽Y中傳播B被選擇用于路徑A,隨后相同的選擇必須在與路徑A相關(guān)的其他子槽進(jìn)行)。這個限制可以被指定,如下nXeYpZnXtOeYpZeQp1+nXtOeYpZeQp2+nXtOeYpZeQp7...
-nXtleYpZeSp1-nXt1eYpZeSp2-nXtleYpZeSp3=0注意到,當(dāng)具有指定網(wǎng)絡(luò)X的子槽Y中用于路徑A的傳播B的配置時,將有很多正項(xiàng),并且當(dāng)具有指定網(wǎng)絡(luò)X的子槽W中的用于路徑A的傳播B的配置時,將有很多負(fù)項(xiàng)。
第三限制是容量限制。一些實(shí)施方式將子槽中的槽-網(wǎng)絡(luò)配置映射到孫槽之間使用路徑(即,將子槽中的每個傳播映射到孫槽之間路徑的使用)。這些實(shí)施方式隨后確??紤]孫槽間的路徑的容量。
在這些實(shí)施方式的其中一些中,LP傳播問題的公式如下[準(zhǔn)備求解程序ILP(槽)]—初始化slack=0—當(dāng)我們沒有一個求解時—初始化一個新的LP求解—聲明目標(biāo)函數(shù)“objective”—對于槽的每一路徑—對于路徑的每一傳播—取回包括傳播的所有路徑—對于傳播的每一路徑—取回(子槽,孫槽)對,該對作為路徑的端點(diǎn)(子槽,孫槽對可以發(fā)生在多于一的傳播中)—如果這個(子槽,孫槽)仍沒有被處理—生成一個限制“tAsBtCsD“,其中A是一個子槽,B是子槽A的孫槽,C是子槽,D是子槽C的孫槽。這個限制將限制孫槽之間的路徑使用。
—聲明限制“totlen”,以界定一個總長度變量—對于每一槽-網(wǎng)絡(luò)X—對于在用于這個槽-網(wǎng)絡(luò)的布線中的每一路徑Y(jié)—對于該路徑的每一傳播Z—聲明限制“nXeYpZ”,以迫使LP求解程序選擇相同的傳播用于兩個其相關(guān)子槽中的相同路徑—對于與當(dāng)前槽-網(wǎng)絡(luò)的布線相關(guān)的每一子槽—聲明限制“nXtY”,其中,Y是子槽數(shù)。這注定在每一子槽中的每個槽-網(wǎng)絡(luò)為一配置//完成限制,現(xiàn)在轉(zhuǎn)向變量—對于每一槽-網(wǎng)絡(luò)—對于每一與當(dāng)前槽-網(wǎng)絡(luò)的布線相關(guān)的每一槽-網(wǎng)絡(luò)—標(biāo)識子槽中所有槽-網(wǎng)絡(luò)的配置//按照過程7900執(zhí)行—對于每一產(chǎn)生的配置—生成變量“nAtBeCpD”,其中,A,B,C,D是分別標(biāo)識配置網(wǎng)絡(luò),槽,路徑和傳播的整數(shù)—對于在配置中的每一路徑—如果用于路徑的傳播是“不可用的”,添加損失到配置成本//其中,基于從過程7700和7800產(chǎn)生的估計(jì)獲得的稠密估計(jì)所確定的不可用性—聲明nAtBeCpD,如果B是少于與這個路徑相關(guān)的2個子槽的索引-1.0,因數(shù)1.0被提交到限制“nAeCpD”,否則—對于在路徑的傳播中的每一子路徑
—取回?fù)?dān)當(dāng)子路徑的端點(diǎn)的這兩(子槽,孫槽)對—聲明nAtBeCpD,因數(shù)0.5提交到對應(yīng)于該(子槽,孫槽)對的限制中—聲明nAtBeCpD,因數(shù)1.0提交到限制“nAtB”—聲明nAtBeCpD,以等于存儲在配置的數(shù)據(jù)結(jié)構(gòu)中的配置成本加任何損失的和的因數(shù)提交到限制“totLen”中—產(chǎn)生變量“tl”,以表示所選擇配置的總長度—聲明tl,以將因數(shù)-1.0提交到限制“totLen”—顯示tl,以將因數(shù)1.0提交到目標(biāo)函數(shù)—設(shè)置限制“totLen”的rhs=0.0—對于槽的每一路徑—對于路徑的每一傳播—取回包括傳播的所有路徑—對于傳播的每一路徑—取回(子槽,孫槽)對,該對擔(dān)當(dāng)路徑的端點(diǎn)(子槽,孫槽對可以發(fā)生在超過一種的傳播內(nèi))—如果這(子槽,孫槽)對有,但是沒有被處理—生成限制“tAsBtCsD”,其中A是子槽,B是子槽A的孫槽,C是子槽,并且D是子槽C的孫槽。這個限制將限制在孫槽之間的路徑的使用—設(shè)置限制“tAsBtCsD”的rhs為傳播路徑的默認(rèn)容量加局部變量“slack“值減去傳播的估計(jì)路徑使用,以及傳播路徑的稠密容量的總和//其中,所估計(jì)的路徑使用由過程7800計(jì)算,以及稠密容量由過程7700計(jì)算—對于每一槽-網(wǎng)絡(luò)A—對在槽-網(wǎng)絡(luò)的布線中的每一路徑B—對于那個路徑的每一傳播—設(shè)置限制“nAeBpC“為0.0—對于用于這個槽-網(wǎng)絡(luò)相關(guān)的布線的每一槽-網(wǎng)絡(luò)B
—設(shè)置限制“nAtB“等于1.0—求解LP—如果發(fā)現(xiàn)解,結(jié)束當(dāng)型循環(huán);否則,設(shè)置slack=slack+1,并且重新開始正像前面所指出的,公式的第二到最后一行命令(在7620)LP求解程序求解問題。LP求解程序隨后試著求解這個問題。每次LP求解程序求解這個問題失敗,上述的公式增量松弛值直到LP求解程序能求解這個問題。
LP求解程序返回一實(shí)數(shù)最佳求解。過程7600隨后轉(zhuǎn)換這個LP求解為整數(shù)LP(“ILP“)求解。正像前面所描述的,一些實(shí)施方式使用隨機(jī)舍入來實(shí)現(xiàn)這個轉(zhuǎn)換。一名普通技術(shù)人員將明白其它的實(shí)施方式使用ILP求解程序產(chǎn)生ILP求解,而不是使用LP求解程序來生成求解并轉(zhuǎn)換LP求解為ILP解。另外,其它的實(shí)施方式使用用于傳播的ILP求解程序以生成ILP解。
e.隨動傳播在當(dāng)前槽的層是在葉層之上至少兩層時,過程7600添加在7625標(biāo)識的傳播路徑到用于下一更低遞歸層的隨動傳播列表中。圖65示出一個能加到隨動傳播列表中的傳播路徑的舉例。正像前面所描述的,這個圖示出在槽0和0中有實(shí)際引腳6265的網(wǎng)絡(luò)。用于這個網(wǎng)絡(luò)所選布線使用穿過子槽5來連接子槽0和9的路徑P17和P24。
圖65示出路徑P24通過路徑6510和6515傳播到子槽0和5,而路徑P17通過路徑6520傳播到子槽5和9。傳播路徑6510在當(dāng)前槽的子槽0的子槽7和當(dāng)前槽的子槽1的子槽8之間。傳播路徑6515是在當(dāng)前槽的子槽1的子槽13和當(dāng)前槽的子槽5的子槽2之間。傳播路徑6520在當(dāng)前槽的子槽5的子槽14和當(dāng)前槽的子槽9的子槽2之間。圖65示出五個虛引腳6502,已經(jīng)被添加到子槽1,5和9的槽。
當(dāng)前槽的層至少高于葉層兩個層時,過程7600添加傳播路徑6510,6515和6520到隨動傳播列表中以用于下個更低的回歸層。當(dāng)執(zhí)行用于當(dāng)前槽的子槽的隨動傳播時,傳播程序隨后將使用這個列表。這個傳播操作傳播在隨動列表上的路徑到一個更低層。
圖81示出當(dāng)在前槽在最高層槽之下但在葉層槽之上時,用于當(dāng)前槽的隨動傳播的過程8100。通過界定,這樣一個當(dāng)前槽是先前父槽的子槽。正像在圖81所示出的,過程8100最初(在8105)或者確定(1)是否隨動傳播列表包括有至少一個錨點(diǎn)的任何路徑,或者確定(2)當(dāng)前槽是否是當(dāng)前層的最后槽,并且隨動列表仍包括一個或者多個路徑。
如果該過程在8105標(biāo)識沒有路徑,過程結(jié)束。否則,過程8100選擇(在8110)所標(biāo)識的路徑的其中之一,并且將該路徑從隨動傳播列表中刪除。接下來,該過程估算(在8115)所選擇的路徑的每個傳播排列的成本。每個傳播排列的成本包括其傳播路徑的成本加上在傳播排列穿過的兩個或者三個子槽中引腳配置的布線成本。
接下來,該過程選擇(在8120)最低成本的傳播排列。所選擇的傳播排列包括一個傳播路徑或者在一些情況下有兩個傳播路徑。例如,在圖65所示出的舉例中,路徑P24的傳播導(dǎo)致兩個傳播路徑6510和6515,而路徑P17的傳播導(dǎo)致傳播路徑6520。
對于每個傳播路徑,一些實(shí)施方式保持槽對記錄,其存儲路徑連接的子槽的標(biāo)識和路徑的剩余容量。因此,在8125,該過程確定槽對數(shù)據(jù)結(jié)構(gòu)是否存在以用于形成在8120所選擇的傳播排列的每個傳播路徑。當(dāng)不存在這樣一個用于所選擇的傳播排列的個傳播路徑的結(jié)構(gòu)時,該過程(在8125)生成用于路徑的槽對結(jié)構(gòu),將路徑穿過的子槽的標(biāo)識存儲在結(jié)構(gòu)中,并初始化結(jié)構(gòu)的容量字段。用于傳播路徑的初始化后的容量是路徑的默認(rèn)容量減去在路徑上的任何稠密的差。當(dāng)用于所選擇的傳播排列的傳播路徑的槽對結(jié)構(gòu)已經(jīng)存在,該過程從這個結(jié)構(gòu)中標(biāo)識(在8125)路徑的剩余容量。
在8130,該過程確定是否所選傳播排列能嵌入當(dāng)前槽的子槽中。換句話說,該過程確定一個或者多個形成所選擇的傳播排列的傳播路徑是否有一個大于閾值的剩余容量。在一些實(shí)施方式中,閾值是0。在這些實(shí)施方式中,當(dāng)形成所選傳播排列的所有路徑具有大于零的剩余容量時,可嵌入該排列。
如果該過程確定所選擇的傳播排列不能嵌入,它確定(在8135)是否有用于在8120所選擇的路徑的額外的傳播排列。如果有,該過程選擇(在8140)下一個最便宜的傳播排列,并且隨后轉(zhuǎn)到8125。
當(dāng)該過程確定(在8135)沒有額外的傳播排列可檢查時,該過程嵌入(在8160)在8310所檢查的最好的傳播排列。這個嵌入可能需要在受影響的子槽的引腳分布中的設(shè)置虛引腳(即,在所選擇的傳播排列的一個或者多個路徑橫越的當(dāng)前槽的孫槽中設(shè)置虛引腳)。設(shè)置這樣的虛引腳的一個舉例在圖82中示出。這個圖示出(1)從隨動路徑列表的路徑6510中通過路徑8205傳播到子槽7的槽11,和(2)虛引腳,其在槽11中已經(jīng)被設(shè)置,以用于解釋這個傳播。該圖也使出路徑6510沿路徑8215傳播到子槽4的槽12以及與當(dāng)前槽8220相鄰的槽的子槽8的槽1。這個圖也示出已經(jīng)設(shè)置到相鄰的槽的子槽4和8的槽12和1中的兩個虛引腳。
在8160,該過程也更新一個或多個由嵌入的傳播排列使用的傳播路徑的可用容量。正像前面所描述的,傳播路徑的可用容量能計(jì)算作為路徑的默認(rèn)容量減去其稠密容量和其路徑使用估計(jì),其中,稠密和使用值可以按照過程7700和7800進(jìn)行計(jì)算。一些實(shí)施方式能將通過使用過程7800所計(jì)算的路徑使用估計(jì)作為在每個傳播路徑的可用容量中的因子。
在當(dāng)前槽的層至少高于葉層兩層時,該過程(在8160)也將所嵌入的傳播路徑添加到隨動傳播列表中以用于下一個更低的遞歸層。從8160,該過程轉(zhuǎn)到將在以下進(jìn)行描述的8150。
當(dāng)該過程確定(在8130)可以嵌入所選傳播排列時,它嵌入(在8145)在8120或8140所選擇的傳播排列。這個嵌入可以需要在受影響的子槽的引腳分布中設(shè)置虛引腳(即,在所選擇的傳播排列的一個或者多個路徑橫越的當(dāng)前槽的孫槽中設(shè)置虛引腳)。在8145,該過程也更新一個或者多個由嵌入的傳播排列使用的傳播路徑的可用容量。在當(dāng)前槽的層至少高于葉層兩層時,該過程(在8145)也將所嵌入的傳播路徑添加到用于下一個更低的遞歸層的隨動傳播列表中。從8145,該過程轉(zhuǎn)到8150。
在8150,該過程確定是否已經(jīng)檢查了所有的在8105所標(biāo)識的路徑。如果沒有,該過程返回到8110,選擇另一個在8105所標(biāo)識的沒有檢查的路徑。如果已經(jīng)檢查了所有在8105標(biāo)識的路徑,該過程結(jié)束。
2.順序傳播程序本發(fā)明的一些實(shí)施方式使用順序傳播方法來標(biāo)識怎樣傳播有求解程序所指定的布線到當(dāng)前槽的子槽。當(dāng)這些實(shí)施方式的其中一些使用圖63的對角傳播模式時,他們使用這樣的方法。
圖83示出一些實(shí)施方式所使用的順序傳播過程。正像在這個圖中所示出的,這個過程通過計(jì)算(在8305)在當(dāng)前槽的子槽的子槽之間的每個傳播的可用容量開始。每個傳播路徑的可用容量等于路徑的默認(rèn)容量減去其稠密容量加其路徑使用估計(jì)。正像前面所提到的,過程7700和7800能用于計(jì)算稠密和路徑使用值。一些實(shí)施方式能將通過使用過程7800計(jì)算的路徑使用估計(jì)作為在每個傳播路徑的可用容量中的因子。
在計(jì)算可用傳播容量之后,該過程選擇(在8310)在當(dāng)前槽中的槽-網(wǎng)絡(luò)。隨后取回(在8315)所選擇的槽-網(wǎng)絡(luò)的布線。在8325,該過程隨后選擇具有最多數(shù)量錨點(diǎn)的路徑。正像前面所提到的,一些實(shí)施方式將錨點(diǎn)界定為在與該路徑相關(guān)的任一子槽中的引腳。其它的實(shí)施方式可以將錨點(diǎn)界定為在子槽的槽中的引腳數(shù);在這樣的方法下,當(dāng)其在每個子槽的16個槽中16個引腳時,路徑可以最多有32個錨點(diǎn)。
接下來,該過程計(jì)算(在8330)所選擇路徑的每個傳播排列的成本。每個傳播排列的成本包括排列的傳播路徑成本加在傳播排列橫越的兩或三個子槽中的引腳配置的布線成本。
接下來,該過程選擇(在8335)最低成本的傳播排列。所選傳播排列包括一個傳播路徑,并且在一些情況下是兩個傳播路徑。例如,在圖65所示出的舉例中,路徑P24的傳播導(dǎo)致兩個傳播路徑6510和6515,而路徑P17的傳播導(dǎo)致一個傳播路徑6520。
在8340,該過程確定所選擇的傳播排列是否能嵌入到當(dāng)前槽的子槽中。換句話說,該過程確定嵌入所選擇的傳播排列是否將引起用于這個傳播的任何傳播路徑將過度稠密。
如果該過程確定所選擇的傳播排列不能嵌入,它確定(在8345)是否有用于在8325所選擇的路徑的額外傳播排列。如果是,該過程選擇(在8350)下一個最便宜的傳播排列,并返回到8340,以確定新選擇的排列可以嵌入。
當(dāng)該過程確定(在8345)沒有額外的傳播排列可檢查,該過程嵌入(在8365)在8340所遇到的最好的傳播排列。這個嵌入可以需要在受影響的子槽的引腳分布中設(shè)置虛引腳(即,在所選擇的傳播排列的一個或者多個路徑橫越的當(dāng)前槽的孫槽中設(shè)置虛引腳)。在當(dāng)前槽的層至少高于葉層兩層時,這個嵌入也需要添加由所選擇的傳播排列使用的傳播路徑到隨動傳播列表中以用于下一個更低的遞歸層。在8365,該過程也更新嵌入的傳播排列的傳播路徑的可用容量。從8365,該過程轉(zhuǎn)到將在以下進(jìn)行描述的8360。
當(dāng)該過程確定(在8340)一個所選擇的傳播排列能嵌入,它嵌入(在8355)所選擇的傳播排列。這個嵌入可以需要在受影響的子槽的引腳分布中設(shè)置虛引腳(即,在所選擇的傳播排列的一個或者多個路徑橫越的當(dāng)前槽的孫槽中設(shè)置虛引腳)。在當(dāng)前槽的層至少高于葉層兩層時,這個嵌入可以需要添加由所選擇的傳播排列使用的傳播路徑到隨動傳播列表中以用于下一個更低的遞歸層。在8355,該過程也更新嵌入的傳播排列的傳播路徑的可用容量。從8355,該過程轉(zhuǎn)到8360。
在8360,過程確定是否已經(jīng)檢查了所選擇的槽-網(wǎng)絡(luò)的布線的所有路徑。如果沒有,該過程返回到8325,以選擇這個布線的另一個路徑。如果是,該過程確定(在8370)是否已經(jīng)檢查了在當(dāng)前槽中的所有槽-網(wǎng)絡(luò)。
如果過程沒有檢查在當(dāng)前槽中的所有槽-網(wǎng)絡(luò),該過程返回到8310,以選擇另一個槽-網(wǎng)絡(luò)。否則,該過程轉(zhuǎn)到8375。在當(dāng)前槽的層在最高層之后但在葉層之前時,順序傳播程序隨后執(zhí)行(在8375)隨動傳播操作。這個操作將由傳播程序在先前的布線層指定的布線路徑向下傳播一層。在當(dāng)前槽的層是葉層之前的層時(即,當(dāng)前槽是Gcell的祖父時),順序傳播程序調(diào)用(在8380)保存程序來將在8355,8365和8375嵌入的任何傳播路徑的路徑數(shù)據(jù)結(jié)構(gòu)鏈接到dBNet。這個過程隨后結(jié)束。
VII.計(jì)算機(jī)系統(tǒng)圖84表示執(zhí)行本發(fā)明的一具體實(shí)施方式
的計(jì)算機(jī)系統(tǒng)。計(jì)算機(jī)系統(tǒng)8400包括總線8405,處理器8410,系統(tǒng)存儲器8415,只讀存儲器8420,永久存儲裝置8425,輸入裝置8430和輸出裝置8435。
總線8405集體的代表通信連接計(jì)算機(jī)系統(tǒng)8400許多的內(nèi)部裝置的所有系統(tǒng),外圍,和芯片組的總線。例如,總線8405通信連接處理器8410和只讀存儲器8420,系統(tǒng)存儲器8415和永久存儲器8425。
為了執(zhí)行本發(fā)明的過程,處理器8410從這些不同的存儲單元取回用于執(zhí)行的指令和用于處理的數(shù)據(jù)。只讀存儲器(ROM)8420存儲處理器8410和計(jì)算機(jī)系統(tǒng)的其他模塊所需的統(tǒng)計(jì)數(shù)據(jù)和指令。另一方面,永久存儲器裝置8425是讀寫存儲裝置。這個裝置是非易失存儲單元,其即使當(dāng)計(jì)算機(jī)系統(tǒng)8400關(guān)閉時也存儲指令和數(shù)據(jù)。本發(fā)明的一些實(shí)施方式使用大容量存儲器(諸如,磁性或者光盤以及其相應(yīng)的磁盤驅(qū)動器)作為一個永久存儲裝置8425。其它的實(shí)施方式使用一個可移動存儲裝置(諸如,一個硬盤或者Zip盤,以及其相應(yīng)的磁盤驅(qū)動器)作為永久存儲裝置。
類似于永久存儲裝置8425,系統(tǒng)存儲器8415是讀寫存儲裝置。然而,不像存儲裝置8425,系統(tǒng)存儲器是易失讀寫存儲器,如隨機(jī)接入存儲器。系統(tǒng)存儲器存儲一些處理器運(yùn)行期間所需要的指令和數(shù)據(jù)。在一些實(shí)施方式中,發(fā)明的處理被存儲在系統(tǒng)存儲器8415,永久存儲裝置8425,和/或只讀存儲器8420中。
總線105也連接到輸入和輸出裝置8430和8435。輸入裝置使得用戶與計(jì)算機(jī)系統(tǒng)傳遞信息和選擇指令。輸入裝置8430包括字母數(shù)字鍵盤和光標(biāo)控制器。
輸出裝置8435顯示由計(jì)算機(jī)系統(tǒng)產(chǎn)生的圖像。例如,這些裝置顯示IC設(shè)計(jì)線路圖。輸出裝置包括打印機(jī)和顯示裝置,如陰極射線管(CRT)或液晶顯示屏(LCD)。
最后,正像圖84所示出的,總線8405也通過網(wǎng)絡(luò)適配器(未示出)連接計(jì)算程序8400到網(wǎng)絡(luò)8465。在這種方式中,計(jì)算機(jī)能作為計(jì)算機(jī)網(wǎng)絡(luò)(如,局域網(wǎng)絡(luò)(LAN)、廣域網(wǎng)絡(luò)(WAN)、或者企業(yè)內(nèi)部互聯(lián)網(wǎng))或是網(wǎng)絡(luò)中的網(wǎng)絡(luò)(諸如互聯(lián)網(wǎng))的一部分。
可以結(jié)合本發(fā)明使用任何或者所有的計(jì)算機(jī)系統(tǒng)8400的組件。然而,本領(lǐng)域的一名普通技術(shù)人員將意識到可使用結(jié)合本發(fā)明的任何其它的系統(tǒng)結(jié)構(gòu)。
當(dāng)本發(fā)明已經(jīng)參考許多特定的細(xì)節(jié)進(jìn)行了描述時,本領(lǐng)域的一名技術(shù)人員將認(rèn)識到本發(fā)明可以不脫離本發(fā)明的精神以其它的形式實(shí)現(xiàn)。例如,幾個實(shí)施方式參考分層布線程序在以上進(jìn)行描述,一名普通技術(shù)人員將認(rèn)識到采用其它的布線程序類型實(shí)現(xiàn)本發(fā)明的其他實(shí)施方式,諸如,迷宮布線程序。
同時,即使幾個實(shí)施方式是參考LP問題公式進(jìn)行描述的,一名普通技術(shù)人員將認(rèn)識到這些實(shí)施方式可以由不利用LP求解程序的應(yīng)用實(shí)現(xiàn)。上述的軌跡共享限制提供了一個這樣的例子。任何類型的布線程序可以說明這些分享限制用于確定是否嵌入布線。
另外,其它的實(shí)施方式可以使用不同組的分割線來劃電路布置。例如,一些實(shí)施方式可以使用界定不同形狀和/或不同尺寸的子區(qū)域的分割網(wǎng)格,而不用圖5示出的4×4網(wǎng)格界定的子區(qū)域。這樣,一名本領(lǐng)域的普通的技術(shù)人員將明白,本發(fā)明不限于前述的說明詳述,而是由后附權(quán)利要求所界定。
權(quán)利要求
1.一種在集成電路布局的特定的區(qū)域內(nèi)布線網(wǎng)絡(luò)的方法,所述網(wǎng)絡(luò)具有一組引腳,所述方法包括a)分割所述特定的集成電路區(qū)域?yàn)槎鄠€子區(qū)域,其中所述子區(qū)域具有相同的形狀;和b)標(biāo)識連接一組包含所述網(wǎng)絡(luò)引腳的子區(qū)域的布線,其中所述布線具有至少部分是對角的布線邊。
2.根據(jù)權(quán)利要求1的方法,其中標(biāo)識所述布線包括標(biāo)識包含所述網(wǎng)絡(luò)引腳的子區(qū)域組。
3.根據(jù)權(quán)利要求2的方法,其中標(biāo)識所述布線進(jìn)一步包括使用所述標(biāo)識的子區(qū)域組以從存儲器結(jié)構(gòu)中取回所述布線。
4.根據(jù)權(quán)利要求1的方法,其中所有子區(qū)域具有相同尺寸。
5.根據(jù)權(quán)利要求1的方法,其中每個子區(qū)域是四個邊的子區(qū)域。
6.根據(jù)權(quán)利要求1的方法,其中所述集成電路區(qū)域是整個集成電路的布局。
7.根據(jù)權(quán)利要求1的方法,其中所述集成電路區(qū)域是整個集成電路的布局的一部分。
8.根據(jù)權(quán)利要求1的方法,其中所述方法在集成電路區(qū)域內(nèi)布線附加網(wǎng)絡(luò),其中每個附加網(wǎng)絡(luò)在所述區(qū)域中包括一組引腳,所述方法包括對于在所述區(qū)域中每個附加網(wǎng)絡(luò),標(biāo)識連接一組包含所述組網(wǎng)絡(luò)引腳的子區(qū)域的布線;其中一些標(biāo)識的布線具有至少部分是對角的布線邊。
9.根據(jù)權(quán)利要求8的方法,其中在所述子區(qū)域之間存在多個路徑,并且所述多個路徑是對角路徑;其中每個布線穿過一組路徑,其中所述布線的至少一個穿過所述對角路徑中的至少一個。
10.根據(jù)權(quán)利要求9的方法,其中標(biāo)識每個布線包括標(biāo)識由所述布線橫越的所述組路徑。
11.根據(jù)權(quán)利要求9的方法,其中多個路徑是曼哈頓路徑,其中所述布線的至少一個橫越所述曼哈頓路徑的至少一個。
12.根據(jù)權(quán)利要求8的方法,其中在所述子區(qū)域之間存在多個區(qū)間邊,并且多個區(qū)間邊是對角的;其中每個布線與一組區(qū)間邊相交;其中至少一個布線與所述對角區(qū)間邊的至少一個相交。
13.根據(jù)權(quán)利要求12的方法,其中標(biāo)識每個布線包括標(biāo)識由所述布線相交的所述組區(qū)間邊。
14.根據(jù)權(quán)利要求12的方法,其中在所述子區(qū)域之間的多個區(qū)間邊是曼哈頓邊,其中至少一個布線與至少一個曼哈頓邊相交。
15.根據(jù)權(quán)利要求8的方法,進(jìn)一步包括對于在所述區(qū)域中的每個網(wǎng)絡(luò),標(biāo)識一組連接包含所述網(wǎng)絡(luò)引腳的所述組子區(qū)域的布線;計(jì)算用于所述標(biāo)識的布線的成本;基于所述計(jì)算的成本選擇用于每個網(wǎng)絡(luò)的一個標(biāo)識的布線;將用于每個網(wǎng)絡(luò)的所述選擇的路徑嵌入在所述區(qū)域中。
16.根據(jù)權(quán)利要求15的方法,其中選擇用于每個網(wǎng)絡(luò)的一個標(biāo)識的路徑包括以所述標(biāo)識的布線作為用于一個線性規(guī)劃問題的變量以將所述問題公式化。
17.根據(jù)權(quán)利要求8的方法,其中分割所述集成電路區(qū)域包括使用第一組線條去分割所述集成電路區(qū)域?yàn)槎鄠€子區(qū)域,所述方法進(jìn)一步包括使用第二組線去測量用于所述網(wǎng)絡(luò)的布線稠密,其中至少在所述第二組中的一些線與在所述第一組中的線不同。
18.根據(jù)權(quán)利要求17的方法,其中所述第一組線形成第一網(wǎng)格,并且所述第二組線形成第二網(wǎng)格。
19.根據(jù)權(quán)利要求17的方法,其中所述第二組線包括形成對角網(wǎng)格的交叉對角線。
20.根據(jù)權(quán)利要求19的方法,其中所述第一組線包括形成第一直線網(wǎng)格的相交水平和垂直線。
21.根據(jù)權(quán)利要求20的方法,其中所述第二組線進(jìn)一步包括形成第二直線網(wǎng)格的相交水平和垂直線。
22.根據(jù)權(quán)利要求21的方法,進(jìn)一步包括使用所述第二直線網(wǎng)格去測量路徑在曼哈頓方向的布線稠密;使用所述對角網(wǎng)格去測量在對角方向的布線稠密。
23.根據(jù)權(quán)利要求21的方法,其中所述第二直線網(wǎng)格與所述第一直線網(wǎng)格相同。
24.根據(jù)權(quán)利要求20的方法,其中所述對角線在由所述第一組線條生成的子區(qū)域的中心相交。
25.根據(jù)權(quán)利要求8的方法,其中分割所述集成電路區(qū)域包括使用第一組線去分割所述集成電路區(qū)域?yàn)槎鄠€子區(qū)域,其中在所述子區(qū)域之間存在多個對角布線路徑,所述方法進(jìn)一步包括基于第二組線標(biāo)識對角布線路徑的容量,其中在所述第二組中的至少一些線條與在所述第一組中的線條不同。
26.根據(jù)權(quán)利要求25的方法,其中所述第二組線包括對角線。
27.根據(jù)權(quán)利要求26的方法,其中所述對角線相對于所述集成電路區(qū)域的一個軸線為+A°或者-A°,其中A不是0或者90,其中所述方法使用所述對角線去標(biāo)識在所述子區(qū)域之間±A°方向的布線路徑的容量。
28.根據(jù)權(quán)利要求27的方法,其中A是45。
29.根據(jù)權(quán)利要求25的方法,其中所述對角線界定多個對角邊,其中每個特定的布線路徑與特定的對角邊相交,其中標(biāo)識所述對角布線路徑的容量包括從由特定對角布線路徑相交的所述特定對角邊的長度推導(dǎo)出每個特定對角布線路徑的容量。
30.根據(jù)權(quán)利要求29的方法,其中相對于特定接線層界定每個布線路徑,并且每個層具有特定的間距,其中標(biāo)識所述對角布線路徑的容量進(jìn)一步包括使用每個特定布線路徑層的間距去推導(dǎo)出所述特定的布線路徑的容量。
31.根據(jù)權(quán)利要求30的方法,進(jìn)一步包括分層地分割所述區(qū)域?yàn)樵絹碓叫〉淖訁^(qū)域;規(guī)定用于所述層級結(jié)構(gòu)的每一層上各網(wǎng)絡(luò)的布線,其中在所述層級結(jié)構(gòu)的最低層上的所述子區(qū)域是Gcell,其中在非Gcell層上標(biāo)識所述對角布線路徑的容量進(jìn)一步包括從在Gcell層上沿著所述特定的布線路徑方向上接線數(shù)目,推導(dǎo)出在非Gcell層上每個特定對角布線路徑的容量。
32.根據(jù)權(quán)利要求1的方法,其中所述子區(qū)域是第一組子區(qū)域,所述方法進(jìn)一步包括a)分割所述第一組子區(qū)域?yàn)榈诙M子區(qū)域;和b)擴(kuò)展所述布線為所述第二組子區(qū)域。
33.根據(jù)權(quán)利要求32的方法,其中第一組路徑存在于所述第一組子區(qū)域之間,并且第二組路徑存在于所述第二組子區(qū)域之間,其中相對于是所述第一組路徑的子組的第三組路徑,界定所述第一布線。
34.根據(jù)權(quán)利要求33的方法,進(jìn)一步包括標(biāo)識第一第二組路徑,第一第二組路徑表示特定的第三組路徑傳播到第二組子區(qū)域。
35.根據(jù)權(quán)利要求34的方法,其中所述特定的第三組路徑和所述第一第二組路徑是對角的。
36.根據(jù)權(quán)利要求34的方法,其中所述特定的第三組路徑是曼哈頓路徑,并且所述第一第二組路徑是對角路徑。
37.根據(jù)權(quán)利要求34的方法,其中所述特定的第三組路徑是對角路徑。
38.根據(jù)權(quán)利要求34的方法,進(jìn)一步包括標(biāo)識第二第二組路徑與所述第一第二組路徑一起表示所述特定的第三組路徑到所述第二組子區(qū)域的傳播。
39.根據(jù)權(quán)利要求38的方法,其中所述特定的第三組路徑是對角,并且所述第一和第二第二組路徑是對角。
40.根據(jù)權(quán)利要求32的方法,其中在所述第一組子區(qū)域之間存在第一組區(qū)間邊,并且在所述第二組子區(qū)域之間存在第二組區(qū)間邊,其中所述相對于第三組區(qū)間邊界定第一布線,所述第三組區(qū)間邊是所述第一組區(qū)間邊的子組。
41.根據(jù)權(quán)利要求40的方法,進(jìn)一步包括標(biāo)識第一第二組區(qū)間邊,第一第二組區(qū)間邊表示特定的第三組區(qū)間邊到第二組子區(qū)域的傳播。
42.根據(jù)權(quán)利要求41的方法,其中所述特定的第三組區(qū)間邊和所述第一第二組區(qū)間邊是對角的。
43.根據(jù)權(quán)利要求41的方法,其中所述特定的第三組區(qū)間邊是曼哈頓區(qū)間邊,并且所述第一第二組區(qū)間邊是對角區(qū)間邊。
44.根據(jù)權(quán)利要求41的方法,其中所述特定的第三組區(qū)間邊是對角區(qū)間邊,并且所述第一第二組區(qū)間邊是曼哈頓區(qū)間邊。
45.根據(jù)權(quán)利要求41的方法,進(jìn)一步包括標(biāo)識第二第二組區(qū)間邊與所述第一第二組區(qū)間邊一起,表示所述特定的第三組區(qū)間邊到所述第二組子區(qū)域的傳播。
46.根據(jù)權(quán)利要求45的方法,其中所述特定的第三組區(qū)間邊是對角的,并且所述第一和第二第二組區(qū)間邊是對角的。
47.根據(jù)權(quán)利要求1的方法,進(jìn)一步包括a)分割所述標(biāo)識的子區(qū)域?yàn)槎鄠€更小的子區(qū)域;和b)傳播改布線為更小的子區(qū)域。
48.根據(jù)權(quán)利要求47的方法,其中傳播所述布線包括標(biāo)識至少一個對角傳播路徑,所述布線沿著對角傳播路徑傳播所述更小的子區(qū)域。
49.根據(jù)權(quán)利要求48的方法,其中所述傳播路徑是對角傳播路徑。
50.根據(jù)權(quán)利要求49的方法,其中所述傳播路徑是水平或者垂直傳播路徑。
51.根據(jù)權(quán)利要求1的方法,進(jìn)一步包括a)分割所述標(biāo)識的子區(qū)域?yàn)槎鄠€更小的子區(qū)域;和b)標(biāo)識一個沿著對角邊傳播為更小的子區(qū)域的傳播路徑。
52.根據(jù)權(quán)利要求51的方法,其中所述傳播路徑是一個對角路徑。
53.根據(jù)權(quán)利要求1的方法,進(jìn)一步包括a)分割每個子區(qū)域?yàn)槎鄠€更小的子區(qū)域;和b)對于所述網(wǎng)絡(luò),標(biāo)識連接一組在特定子區(qū)域內(nèi)包含所述網(wǎng)絡(luò)引腳的更小的子區(qū)域的第二路徑,其中所述第二路徑具有至少部分是對角的布線邊。
54.根據(jù)權(quán)利要求53的布線方法,其中所述集成電路區(qū)域是較大集成電路區(qū)域一部分的第一集成電路區(qū)域,所述較大的集成電路區(qū)域包括其它集成電路區(qū)域。
55.根據(jù)權(quán)利要求54的布線方法,其中所述網(wǎng)絡(luò)包括在較大集成電路區(qū)域的其它集成電路區(qū)域中其它的引腳,其中更高層的布線連接所述較大集成電路區(qū)域的所述集成電路區(qū)域,所述較大集成電路區(qū)域包含所述網(wǎng)絡(luò)的所述引腳。
56.根據(jù)權(quán)利要求55的布線方法,其中所述組引腳包括說明所述更高布線到所述第一集成電路區(qū)域的傳播的虛擬引腳。
57.一種執(zhí)行布線的方法,包括a)接收集成電路布局的特定區(qū)域;b)分割所述區(qū)域?yàn)槎鄠€子區(qū)域,其中多個對角和非對角布線路徑存在于所述子區(qū)域之間,其中所述相對于第一組線界定對角布線路徑,并且相對于第二組線界定所述非對角布線的路徑。
58.根據(jù)權(quán)利要求57的方法,其中每個布線路徑具有特定的容量,所述方法進(jìn)一步包括a)計(jì)算每個特定的對角布線路徑的容量;和b)計(jì)算每個特定的非對角布線路徑的容量;其中所述對角布線路徑的容量不同于所述非對角布線路徑的容量。
59.根據(jù)權(quán)利要求58的方法,其中所述第一網(wǎng)格包括多個對角邊,并且所述第二網(wǎng)格包括多個非對角邊,其中每個特定的對角布線路徑與特定的對角邊相交,并且每個特定的非對角布線的路徑與特定的非對角邊相交,其中計(jì)算每個特定的對角布線路徑的容量包括從所述路徑相應(yīng)的對角邊的長度中推導(dǎo)出所述特定的對角布線路徑的容量,其中計(jì)算每個特定的非對角布線的路徑的容量包括從所述路徑相應(yīng)的對角邊的長度中推導(dǎo)出所述特定的非對角布線路徑的容量。
60.根據(jù)權(quán)利要求59的方法,其中所述對角和非對角邊的長度是不同的。
61.根據(jù)權(quán)利要求59的方法,其中每個特定的對角邊連接特定的一對相鄰子區(qū)域的中心,所述相鄰的子區(qū)域是彼此相對以對角地成直線。
62.根據(jù)權(quán)利要求59的方法,其中所述集成電路布局包括多個相互連接線層,每層具有特定的間距值;其中每個特定的布線路徑是在所述層的特定一層上;其中計(jì)算每個特定的對角布線路徑的容量包括由所述特定的對角布線路徑相交的所述對角邊的長度除以所述路徑層的間距值;其中計(jì)算每個特定的非對角布線路徑的容量包括由所述特定的非對角布線路徑相交的非對角邊的長度除以所述路徑層的間距值。
63.根據(jù)權(quán)利要求57的方法,其中所述子區(qū)域是四邊子區(qū)域,其中所述布線路徑包括±45°路徑和曼哈頓路徑,其中相對于形成第一直線網(wǎng)格的第一組線條界定所述曼哈頓布線路徑,并且相對于形成第二直線網(wǎng)格的第二組線界定所述±45°對角布線路徑,所述第二直線網(wǎng)格相對于所述第一網(wǎng)格為45°。
64.一種對電路布局區(qū)域中的網(wǎng)絡(luò)界定布線的方法,所述方法包括a)使用第一組線去測量布線的長度;b)使用第二組線條去測量布線的稠密;其中在第一組中的至少一些線不在所述第二組中。
65.根據(jù)權(quán)利要求64的方法,其中所述第二組線界定多個稠密邊,其中使用所述第二組線包括測量路徑越過所述稠密邊的稠密。
66.根據(jù)權(quán)利要求65的方法,其中所述布線具有與所述稠密邊相交對角邊,其中測量越過稠密邊的布線的稠密包括測量越過所述稠密邊的所述對角布線的稠密。
67.根據(jù)權(quán)利要求66的方法,其中所述路徑進(jìn)一步具有橫穿所述稠密邊的等級或者垂直邊,其中測量所述路徑越過所述稠密邊的稠密進(jìn)一步包括測量所述等級或者垂直路徑邊越過所述稠密邊的稠密。
68.根據(jù)權(quán)利要求64的方法,其中每個網(wǎng)絡(luò)具有一組引腳,所述方法進(jìn)一步包括a)使用第三組線去分割所述區(qū)域?yàn)榈谝唤M子區(qū)域;b)對于每個網(wǎng)絡(luò),標(biāo)識一個穿越一組包含所述網(wǎng)絡(luò)引腳組的第一組子區(qū)域的布線。
69.根據(jù)權(quán)利要求68的方法,其中所述第二和第三組線是相同的。
70.根據(jù)權(quán)利要求64的方法,其中每個網(wǎng)絡(luò)具有一組引腳,其中所述第一組線條界定第一組子區(qū)域,所述方法進(jìn)一步包括對于每個網(wǎng)絡(luò),標(biāo)識一個穿越一組包含所述網(wǎng)絡(luò)引腳組的第一組子區(qū)域的布線;其中每個路徑具有一組布線線段,并且每個路徑線段穿過所述第一組子區(qū)域中的兩個子區(qū)域。
71.根據(jù)權(quán)利要求70的方法,進(jìn)一步包括通過對在所述布線線段的布線組中的每一布線線段求和來測量每個布線的長度。
72.根據(jù)權(quán)利要求71的方法,其中使用所述第二組線包括測量越過所述第二組線的布線的稠密。
73.根據(jù)權(quán)利要求72的方法,其中所述第二組線界定多個稠密邊,其中測量所述布線的稠密包括測量越過所述稠密邊的布線的稠密。
74.根據(jù)權(quán)利要求73的方法,進(jìn)一步包括一旦完成布線,僅相對于經(jīng)過所述稠密邊的布線線段指定每個布線。
75.根據(jù)權(quán)利要求70的方法,其中標(biāo)識用于每個網(wǎng)絡(luò)的布線包括在包含所述網(wǎng)絡(luò)引腳的第一組子區(qū)域開始,連續(xù)地指定布線線段,所述布線線段使所述布線擴(kuò)展新的第一組子區(qū)域直到所述布線穿過包含所述網(wǎng)絡(luò)引腳的所有子區(qū)域組。
76.根據(jù)權(quán)利要求75的方法,進(jìn)一步包括在每個布線線段的擴(kuò)展上計(jì)算長度成本;對于越過第二組線的布線線段的每個擴(kuò)展,基于所述第二組線條的稠密計(jì)算稠密成本。
77.根據(jù)權(quán)利要求75的方法,其中指定第一布線線段包括查驗(yàn)多個有可能布線線段擴(kuò)展;其中對于每個有可能布線線段擴(kuò)展計(jì)算長度成本;其中如果所述可能布線線段擴(kuò)展與第二組線相交,基于所述第二組線的稠密計(jì)算稠密成本。
全文摘要
本發(fā)明致力于布線方法和裝置。一些實(shí)施例提供了一種使用對角布線的布線方法。這個方法在電路布局內(nèi)對若干網(wǎng)絡(luò)布線。在該區(qū)域中每個網(wǎng)絡(luò)包括一組引腳。該方法最初分割該區(qū)域?yàn)槿舾勺訁^(qū)域。對于在該區(qū)域中每個特定網(wǎng)絡(luò),該方法然后標(biāo)識連接該子區(qū)域的布線,該子區(qū)域包含來自該特定的網(wǎng)絡(luò)引腳組的引腳。一些標(biāo)識的布線具有至少部分是對角的邊。
文檔編號H01L21/82GK1520565SQ01822234
公開日2004年8月11日 申請日期2001年12月6日 優(yōu)先權(quán)日2000年12月7日
發(fā)明者S·德格, O·伯塞特, A·卡爾德威, E·嘉克, J·A·法蘭高, 趙寒義, S 德格, 巒, 法蘭高 申請人:凱登斯設(shè)計(jì)系統(tǒng)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
新闻| 刚察县| 将乐县| 台北市| 分宜县| 星座| 广宁县| 黎川县| 宁武县| 龙川县| 金华市| 长岭县| 渭源县| 突泉县| 扎兰屯市| 白银市| 廉江市| 兴海县| 潜江市| 安义县| 张家港市| 城口县| 黑山县| 砀山县| 洞口县| 沅江市| 安龙县| 明星| 宜城市| 杨浦区| 松原市| 密云县| 内江市| 成安县| 西华县| 汶川县| 珠海市| 台山市| 滨海县| 育儿| 福贡县|