八角結(jié)構(gòu)Steiner最小樹(shù)下的VLSI繞障布線(xiàn)器的制造方法
【專(zhuān)利摘要】本發(fā)明涉及集成電路計(jì)算機(jī)輔助設(shè)計(jì)【技術(shù)領(lǐng)域】中一種基于八角結(jié)構(gòu)下的快速VLSI繞障Steiner最小樹(shù)布線(xiàn)器。本發(fā)明針對(duì)VLSI版圖設(shè)計(jì)中的總體布線(xiàn)問(wèn)題,設(shè)計(jì)了一種快速高效的繞障八角Steiner樹(shù)布線(xiàn)器。根據(jù)實(shí)際工業(yè)生產(chǎn)中給定的芯片引腳集合,布線(xiàn)器首先構(gòu)建一棵無(wú)障礙歐幾里得最小生成樹(shù)(MST)。然后,兩個(gè)關(guān)于MST中邊信息的快速查找表被生成。該表可以為后續(xù)步驟提供快速的信息獲取功能。接下來(lái),布線(xiàn)器通過(guò)完成一種高效的繞障策略,選擇障礙物上的一些拐點(diǎn)作為MST中穿障邊的中繼節(jié)點(diǎn),從而將前期的MST轉(zhuǎn)化為一棵繞障八角Steiner樹(shù)。最后,通過(guò)應(yīng)用一種基于共享邊原理的精煉策略,該布線(xiàn)器將生成最終的繞障八角最小Steiner樹(shù)布線(xiàn)結(jié)果。
【專(zhuān)利說(shuō)明】八角結(jié)構(gòu)Steiner最小樹(shù)下的VLSI繞障布線(xiàn)器
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明屬于集成電路計(jì)算機(jī)輔助設(shè)計(jì)【技術(shù)領(lǐng)域】,具體涉及一種基于八角結(jié)構(gòu) Steiner最小樹(shù)下的快速VLSI繞障布線(xiàn)器構(gòu)造問(wèn)題。
【背景技術(shù)】
[0002] 超大規(guī)模集成電路(verylargescaleintegration,VLSI)設(shè)計(jì)中繞障八角結(jié) 構(gòu)Steiner最小樹(shù)(Obstacle-avoidingOctilinearSteinerMinimalTree, 0A0SMT)問(wèn) 題是在一個(gè)芯片表面,給定一組引腳集合和一組障礙物集合,利用〇°,45°,90°,and135° 金屬線(xiàn)構(gòu)建一棵連接所有引腳的Steiner樹(shù),并繞過(guò)所有給定的障礙物,同時(shí)使得布線(xiàn)樹(shù) 總長(zhǎng)度最小的組合優(yōu)化問(wèn)題。
[0003] 自從1966年哈坦網(wǎng)格被首次提出以來(lái),直角Steiner樹(shù)已經(jīng)被廣泛的應(yīng)用到VLSI 芯片布線(xiàn)問(wèn)題的各個(gè)方面。另一方面,由于VLSI芯片密度的急劇增加,許多可重構(gòu)組件被 嵌入到了現(xiàn)代芯片中,如IP核和宏塊。而這些組件在布線(xiàn)過(guò)程中是不能被穿越的。因此,在 過(guò)去十幾年,繞障直角Steiner樹(shù)構(gòu)建問(wèn)題已經(jīng)得到了廣泛的研究,并取得了許多的成果。 然而,由于直角結(jié)構(gòu)將布線(xiàn)方向限制為只能水平和垂直走線(xiàn),這對(duì)于優(yōu)化芯片的許多關(guān)鍵 指標(biāo)有著極大的約束能力,如總線(xiàn)長(zhǎng)、擁塞和時(shí)延指標(biāo)等。因此,當(dāng)前布線(xiàn)技術(shù)正站在一個(gè) 十字路口,并受到了許多研究機(jī)構(gòu)的廣泛關(guān)注。隨之而來(lái)的是,隨著VLSI芯片制造工藝的 不斷進(jìn)步,非直角結(jié)構(gòu)得到了迅速發(fā)展。特別是八角結(jié)構(gòu),其作為性能最為出色的非直角結(jié) 構(gòu)之一,已經(jīng)幾乎被當(dāng)前的所有生產(chǎn)工藝所支持。換句話(huà)說(shuō),45°和135°斜線(xiàn)已經(jīng)被成功的 應(yīng)用于八角布線(xiàn)平面。相比于直角結(jié)構(gòu),由于八角結(jié)構(gòu)可以極大的壓縮布線(xiàn)長(zhǎng)度,從而達(dá)到 可以達(dá)到優(yōu)化時(shí)延、互感電容、擁塞等多項(xiàng)性能指標(biāo)。有研究表明,同直角結(jié)構(gòu)下的Steiner 樹(shù)相比,八角結(jié)構(gòu)可以分別壓縮通孔數(shù)40%,總線(xiàn)長(zhǎng)20%,芯片面積11%。因此近年來(lái)學(xué)術(shù)界 和工業(yè)界都開(kāi)始全面的投入到了八角結(jié)構(gòu)的研究工作中。然而,據(jù)我們所知,當(dāng)前的研究工 作大多仍停留在無(wú)障礙物的布線(xiàn)平面階段。也就是大多成果首先假設(shè)布線(xiàn)平面無(wú)障礙物存 在,進(jìn)而利用八角結(jié)構(gòu)優(yōu)化諸如線(xiàn)長(zhǎng)、時(shí)延、擁塞在內(nèi)的多項(xiàng)性能指標(biāo)。而對(duì)于八角結(jié)構(gòu)下, 存在障礙物的情況,相關(guān)成果幾乎沒(méi)有。因此,研發(fā)一種八角結(jié)構(gòu)下的快速繞障布線(xiàn)器就顯 得尤為緊迫了。
【發(fā)明內(nèi)容】
[0004] 本發(fā)明的目的是提供一種在超大規(guī)模集成電路總體布線(xiàn)問(wèn)題中考慮存在障礙物, 同時(shí)引入八角結(jié)構(gòu)Steiner最小樹(shù)的布線(xiàn)器構(gòu)造問(wèn)題。以?xún)?yōu)化布線(xiàn)樹(shù)總長(zhǎng)為目標(biāo),進(jìn)而使 得諸如時(shí)延、擁塞等多項(xiàng)指標(biāo)得到優(yōu)化。該方法從總體布線(xiàn)的全局角度考慮繞障Steiner 最小樹(shù)的構(gòu)造,能夠在極短的時(shí)間內(nèi)獲得出色的解方案。
[0005] 本發(fā)明采用以下方案實(shí)現(xiàn):一種八角結(jié)構(gòu)Steiner最小樹(shù)下的VLSI繞障布線(xiàn)器, 其特征在于包括以下步驟: 步驟SOl:根據(jù)給定的一組引腳坐標(biāo)位置,生成一組Delaunay三角剖分,然后通過(guò)相關(guān) 算法生成一棵連接所有引腳的MST; 步驟S02 :針對(duì)MST中的所有邊,生成兩個(gè)記錄邊連接信息的查找表; 步驟S03:基于查找表,將第一步生成的MST轉(zhuǎn)換為一棵繞障八角Steiner樹(shù);該八角Steiner樹(shù)引入了障礙物上的若干拐點(diǎn)以達(dá)到繞障的目的; 步驟S04 :基于邊共享原理,計(jì)算第三步生成的八角Steiner樹(shù)中每一個(gè)節(jié)點(diǎn)的最優(yōu)連 接結(jié)構(gòu),以達(dá)到最大化共享邊長(zhǎng)度的目標(biāo)。
[0006] 進(jìn)一步地,所述步驟SOl中的相關(guān)算法是Kruskal算法或Prim算法。
[0007] 進(jìn)一步地,所述的查找表包括兩個(gè)記錄了邊連接信息的查找表,第一個(gè)表稱(chēng)為 邊-障查找表,它記錄每一條八角邊穿越的障礙物的集合;第二個(gè)表稱(chēng)為邊-線(xiàn)查找表,它 記錄了每一條八角邊的兩個(gè)分線(xiàn)段的坐標(biāo)位置。
[0008] 進(jìn)一步地,所述查找表的生成步驟如下: 步驟S41 :檢查MST中的第i條邊/V7/,對(duì)于每一種走線(xiàn)方式々,計(jì)算兩條分線(xiàn)段和 的起點(diǎn)坐標(biāo)和終點(diǎn)坐標(biāo),其中,Λ.,Λ.為兩個(gè)芯片上給定的引腳; 步驟S42 :對(duì)于每一個(gè)障礙物△,如果或穿越了 △,則將6加入到相關(guān)集合 {及>},其中&為Pi和I以八角方式連接時(shí)的偽斯塔那點(diǎn); 步驟S43 :設(shè)為{見(jiàn)>}里所有障礙物的半周長(zhǎng)之和;計(jì)算每一個(gè){見(jiàn)>}對(duì)應(yīng)的; 然后將{況>}和^^加入到邊-障查找表中; 步驟S44:檢查每一個(gè)和,如果存在45°或135°斜線(xiàn),則將其繞原點(diǎn)順時(shí)針旋 轉(zhuǎn)45°,從而構(gòu)成一條新的水平或垂直線(xiàn)段; 步驟S45:記錄和的坐標(biāo)值到邊-線(xiàn)查找表;i=i+l,如果id,返回步驟S41, 否則結(jié)束。
[0009] 進(jìn)一步地,所述繞障的實(shí)現(xiàn)方式包括以下步驟: 步驟S51:檢查MST中的第i條邊ΛΛ.,如果或能夠繞過(guò)所有障礙物,則將 布線(xiàn)方式選為0或1,考察第i+Ι條邊;否則進(jìn)入步驟S52; 步驟S52 :如果/V7/或能夠繞過(guò)所有障礙物,進(jìn)入步驟S53,否則進(jìn)入步驟S54 ; 步驟S53 :如果Zij7,則選擇方式0作為結(jié)果。否則,選擇方式1作為結(jié)果;返回步 驟S51考察下一條邊; 步驟S54:選擇值最小的那一個(gè)作為最終結(jié)果。返回步驟S51考察下一條邊。 [0010] 進(jìn)一步地,所述最優(yōu)連接結(jié)構(gòu)的計(jì)算方式包括以下步驟: 步驟S61:掃面八角Steiner樹(shù)中所有邊一次,統(tǒng)計(jì)每個(gè)點(diǎn)的度數(shù),并將連接到該點(diǎn)的 其它點(diǎn)記錄為一個(gè)集合; 步驟S62:對(duì)于每個(gè)點(diǎn)P,如果其度數(shù)為:則枚舉4"個(gè)布線(xiàn)組合;選出繞障且線(xiàn)長(zhǎng)最短 的一個(gè)作為P的最優(yōu)結(jié)構(gòu),并計(jì)算該結(jié)構(gòu)的共享邊長(zhǎng)度; 步驟S63:根據(jù)每個(gè)點(diǎn)最優(yōu)結(jié)構(gòu)的共享邊長(zhǎng)度非遞增的順序?qū)λ悬c(diǎn)進(jìn)行排序; 步驟S64 :按順序應(yīng)用每一個(gè)點(diǎn)的最優(yōu)結(jié)構(gòu)到原始八角Steiner樹(shù)中,直到八角Steiner樹(shù)的所有邊的走線(xiàn)方式被更新過(guò)。
[0011] 本發(fā)明的布線(xiàn)器首先基于生產(chǎn)問(wèn)題給定的一組引腳坐標(biāo)構(gòu)建一棵MST。該MST的 生成并未考慮障礙物的存在,并且基于Delaunay三角剖分來(lái)生成,有效的提高了MST生成 的速率。其次,兩個(gè)快速查找表的生成可以看做是對(duì)所有引腳和障礙物的一種預(yù)處理。即 預(yù)先將后續(xù)步驟可能需要獲取的信息計(jì)算出來(lái)并存儲(chǔ)在表中,而不是在后續(xù)步驟每次用到 時(shí)分別計(jì)算。這種預(yù)處理策略極大地提高了布線(xiàn)器對(duì)后續(xù)步驟的執(zhí)行效率,因?yàn)樗械倪?和障礙物互聯(lián)信息只需計(jì)算一次。此外,在將MST轉(zhuǎn)換為一棵繞障八角Steiner樹(shù)的過(guò)程 中,大部分的執(zhí)行過(guò)程是通過(guò)查表來(lái)實(shí)現(xiàn)的。而針對(duì)無(wú)法繞開(kāi)障礙物的邊,該布線(xiàn)器通過(guò)選 取被穿越障礙物上的拐點(diǎn)作為中繼的策略來(lái)達(dá)到繞障的目的。這將使得該布線(xiàn)器能夠在實(shí) 現(xiàn)繞障的前提下,同時(shí)滿(mǎn)足選取的額外Steiner點(diǎn)最少的目標(biāo)。最后,基于共享邊原理的精 煉策略可以充分的利用布線(xiàn)資源,以最大的共享度優(yōu)化布線(xiàn)總長(zhǎng),同時(shí)減少了布線(xiàn)區(qū)域的 面積,進(jìn)而提1?芯片的多項(xiàng)性能指標(biāo)。
【專(zhuān)利附圖】
【附圖說(shuō)明】
[0012] 圖1是基于八角結(jié)構(gòu)Steiner最小樹(shù)下的一種快速VLSI繞障布線(xiàn)器的流程圖。
[0013] 圖2是八角結(jié)構(gòu)下的四種邊走線(xiàn)選擇方式圖。
[0014] 圖3是障礙物拐點(diǎn)選擇策略圖。
[0015] 圖4最終生成的布線(xiàn)圖實(shí)例。
【具體實(shí)施方式】
[0016] 為使本發(fā)明的上述目的、特征和優(yōu)點(diǎn)能夠更為明顯易懂,下面結(jié)合附圖對(duì)本發(fā)明 的【具體實(shí)施方式】做詳細(xì)的說(shuō)明。
[0017]在以下描述中闡述了具體細(xì)節(jié)以便于充分理解本發(fā)明。但是本發(fā)明能夠以多種不 同于在此描述的其它方式來(lái)實(shí)施,本領(lǐng)域技術(shù)人員可以在不違背本發(fā)明內(nèi)涵的情況下做類(lèi) 似推廣。因此本發(fā)明不受下面公開(kāi)的【具體實(shí)施方式】的限制。
[0018]本發(fā)明首先布線(xiàn)器根據(jù)生產(chǎn)問(wèn)題中給定的一組η個(gè)引腳的坐標(biāo)位置,基于線(xiàn)掃描 算法構(gòu)建一組Delaunay三角剖分。由于這組三角剖分的邊總數(shù)為0 因此布線(xiàn)器可以 基于這些三角剖分邊,應(yīng)用Kruskal最小生成樹(shù)算法,在的時(shí)間里構(gòu)建出一棵連 接所有引腳的MST。接下來(lái),針對(duì)MST中的所有邊,兩個(gè)記錄了這些邊連接信息的快速查找 表將被生成。其中第一個(gè)表被稱(chēng)為邊-障查找表,它記錄了MST中每一條邊在轉(zhuǎn)換為八角 走線(xiàn)時(shí)穿越的障礙物的集合。第二個(gè)表被稱(chēng)為邊-線(xiàn)查找表,它記錄了MST中每一條邊轉(zhuǎn) 換為八角走線(xiàn)時(shí)兩條分線(xiàn)段的坐標(biāo)位置。這兩個(gè)表均可以為布線(xiàn)器的后續(xù)工作提供快速的 信息查詢(xún)。查找表生成后,針對(duì)MST中的每一條邊,布線(xiàn)器通過(guò)查詢(xún)邊-障查找表,尋找出 不穿越障礙物的一種八角走線(xiàn)方式,并將這條MST邊直接轉(zhuǎn)換為該八角邊。如果所有八角 走線(xiàn)方式均穿越障礙物,該布線(xiàn)器則通過(guò)選擇被穿越障礙物上的若干拐點(diǎn)作為中繼節(jié)點(diǎn), 從而達(dá)到繞障的目的。最后,針對(duì)前面生成的繞障八角Steiner樹(shù),該布線(xiàn)器基于邊共享原 理,通過(guò)計(jì)算每一個(gè)節(jié)點(diǎn)的最優(yōu)互連結(jié)構(gòu),即最大化共享邊長(zhǎng)度,從而生成最終的繞障最小 八角Steiner樹(shù)布線(xiàn)結(jié)果。
[0019] 具體分為以下四個(gè)步驟: 1. 根據(jù)給定的一組引腳坐標(biāo)位置,生成一組Delaunay三角剖分,然后應(yīng)用Kruskal最 小生成樹(shù)算法,生成一棵連接所有引腳的MST; 2. 針對(duì)MST中的所有邊,生成兩個(gè)記錄邊連接信息的查找表; 3. 基于查找表,將第一步生成的MST轉(zhuǎn)換為一棵繞障八角Steiner樹(shù)。該八角Steiner 樹(shù)引入了障礙物上的若干拐點(diǎn)以達(dá)到繞障的目的; 4.基于邊共享原理,計(jì)算第三步生成的八角Steiner樹(shù)中每一個(gè)節(jié)點(diǎn)的最優(yōu)連接結(jié) 構(gòu),以達(dá)到最大化共享邊長(zhǎng)度的目標(biāo)。
[0020] 為了讓一般技術(shù)人員更好的理解本發(fā)明,下面結(jié)合附圖及實(shí)驗(yàn)結(jié)果對(duì)本發(fā)明做進(jìn) 一步說(shuō)明: 1.定義1 (偽Steiner點(diǎn))假設(shè)除了引腳外的連接點(diǎn),稱(chēng)為偽Steiner點(diǎn)。圖2中 的SQ,S1,S2和S3均為偽Steiner點(diǎn),偽Steiner點(diǎn)中包含Steiner點(diǎn)。
[0021] 定義2 (0選擇)如圖2(a)所示,P1Cr7A)和為邊L的兩個(gè)端點(diǎn),其 中A。邊L對(duì)應(yīng)的偽Steiner點(diǎn)的選擇如圖2(b)所示,從P1先引曼哈頓邊至Sci,再由Sci 引非曼哈頓邊到P2。則稱(chēng)作0選擇。
[0022] 定義3 (1選擇)圖2(c)所示,從P1先引非曼哈頓結(jié)構(gòu)邊至S1,再?gòu)腟1引曼哈頓 結(jié)構(gòu)邊至P2,則稱(chēng)作1選擇。
[0023] 定義4 (2選擇)圖2(d)所示,從P1先引堅(jiān)直邊至S2,再由S2引水平邊至p2,則 稱(chēng)作2選擇。
[0024] 定義5 (3選擇)圖2(e)所示,從P1先引水平邊至S3,再由S3引堅(jiān)直邊至p2,則 稱(chēng)作3選擇。
[0025] 2.MST生成策略: 在無(wú)障礙平面,存在許多MST構(gòu)建算法。為了提高生成效率,該布線(xiàn)器采用了一種基于 三角剖分的構(gòu)建策略。它首先基于給定的一組引腳坐標(biāo)生成一組三角剖分。然后Prim算 法或者Kruskal算法都可以在0 時(shí)間內(nèi)生成一棵MST。
[0026] 3.查找表生成: 在八角平面下,該布線(xiàn)器針對(duì)MST中所有邊,生成兩個(gè)記錄了邊連接信息的查找表。第 一個(gè)表稱(chēng)為邊-障查找表,它記錄每一條八角邊穿越的障礙物的集合。第二個(gè)表稱(chēng)為邊-線(xiàn) 查找表,它記錄了每一條八角邊的兩個(gè)分線(xiàn)段的坐標(biāo)位置。
[0027] 假設(shè)問(wèn)題給定了個(gè)引腳,則MST包含/7-1條邊。由于每條邊有四種八角走線(xiàn)方 式,因此一共存在4* (/7-1)條八角邊。對(duì)于每一條八角邊Λ# (Λ.,Λ.為兩個(gè)引腳泌為走 線(xiàn)方式),本發(fā)明計(jì)算/W穿越的所有障礙物并將其記錄為一個(gè)集合i^.j,然后將的 值設(shè)置為這些障礙物的半周長(zhǎng)之和。所有4* (/7-1)組和Zu構(gòu)成了最終的邊-障 查找表。此外每一條八角邊/W由兩條分線(xiàn)段組成(Λ4, ,本發(fā)明分別記錄下這兩 條分線(xiàn)段的端點(diǎn)坐標(biāo)。所有邊的這些信息組成了最終的邊-線(xiàn)查找表。查找表生成的詳細(xì) 步驟如下,初始化i=l, (1)檢查MST中的第i條邊ΛΛ.,對(duì)于每一種走線(xiàn)方式々,計(jì)算兩條分線(xiàn)段64和 的起點(diǎn)坐標(biāo)和終點(diǎn)坐標(biāo)。
[0028] (2)對(duì)于每一個(gè)障礙物心如果或穿越了心則將6加入到相關(guān)集合 。
[0029] (3)計(jì)算每一個(gè){及>}對(duì)應(yīng)的然后將{及>}和加入到邊-障查找表中。
[0030] (4)檢查每一個(gè)和5^.,如果存在45°或135°斜線(xiàn),則將其繞原點(diǎn)順時(shí)針旋轉(zhuǎn) 45°,從而構(gòu)成一條新的水平或垂直線(xiàn)段。
[0031] (5)記錄和SG的坐標(biāo)值到邊-線(xiàn)查找表。i=i+l,如果,返回(1),否則 結(jié)束。
[0032] 這里有兩點(diǎn)需要注意,對(duì)于第二步中的每一個(gè)障礙物心本發(fā)明考察它當(dāng)且僅當(dāng)辦 有至少一個(gè)拐點(diǎn)落入到Λ.和構(gòu)成的矩形邊界框內(nèi)。其次,如果存在45°或135°斜線(xiàn),本 發(fā)明在第(4)步將其旋轉(zhuǎn)為水平或垂直線(xiàn),并記錄下新線(xiàn)段的坐標(biāo)。這可以方便后續(xù)步驟 局部和總體線(xiàn)長(zhǎng)的計(jì)算,因?yàn)橹丿B的45°或135°斜線(xiàn)可以在不改變長(zhǎng)度的情況下很容易被 識(shí)別出來(lái)。
[0033] 4.繞障策略:在這一步,前期生成的MST將首先被快速地轉(zhuǎn)化為一棵八角Steiner 樹(shù)。本發(fā)明檢查MST中的每一條邊通過(guò)查表,如果八角邊Λ戶(hù)/或能夠繞開(kāi)所 有的障礙物,則直接將的布線(xiàn)方式選擇為〇或1方式。否則如果或能夠繞 過(guò)所有障礙物,本發(fā)明則根據(jù)Li^l和I^1的大小來(lái)做選擇。如果則選擇方式0作 為結(jié)果。否則,選擇方式1作為結(jié)果。如果4中布線(xiàn)方式全部穿越了障礙物,本發(fā)明則選擇 A#值最小的那一個(gè)作為布線(xiàn)方式。詳細(xì)步驟如下,初始化i=l, (1)檢查MST中的第i條邊ΛΑ,如果/V7/或能夠繞過(guò)所有障礙物,則將布線(xiàn)方 式選為0或1,考察第i+Ι條邊。否則進(jìn)入(2)。
[0034] (2)如果或ΛΑ?能夠繞過(guò)所有障礙物,進(jìn)入(3),否則進(jìn)入⑷。
[0035] (3)如果則選擇方式0作為結(jié)果。否則,選擇方式1作為結(jié)果。返回(1) 考察下一條邊。
[0036] (4)選擇Zu值最小的那一個(gè)作為最終結(jié)果。返回(1)考察下一條邊。
[0037] 顯然,八角Steiner樹(shù)中的一些邊穿越了障礙物。因此本發(fā)明提出了一種繞障方 法來(lái)幫助這些邊繞過(guò)所有障礙物。對(duì)于八角Steiner樹(shù)中的每一條邊在這里是確 定的),如果他穿越了障礙物,本發(fā)明直接刪除掉這條邊。然后對(duì)障礙物集合{見(jiàn)>}按照Λ. 至IJ障礙物中心距離非遞減的順序排序。接下來(lái),設(shè)置起點(diǎn)5·=Λ。本發(fā)明對(duì)排序后的障礙物 一個(gè)接一個(gè)考察,每次從當(dāng)前障礙物上選取一個(gè)拐點(diǎn)^作為中繼節(jié)點(diǎn),這里^是四個(gè)拐點(diǎn)中 到直線(xiàn)距離最近的那一個(gè)。然后本發(fā)明計(jì)算邊5Γ的連接信息,并將其添加到兩個(gè)查找 表中。在將S連接到C之后,本發(fā)明將C設(shè)置為新的&并繼續(xù)考察下一個(gè)障礙物,直到最后 一個(gè)選擇的拐點(diǎn)被連接到Z7y。
[0038] 這個(gè)繞障方法可能被執(zhí)行數(shù)次,直到所有的邊繞過(guò)所有的障礙物為止。圖3是一 個(gè)繞障方法的例子。圖3(a)是原始邊P1PJ,它穿越了障礙物&和氏。在原始邊被刪除后, 本發(fā)明首先考察障礙物B1,因?yàn)樗嚯xP1更近。由于C1是B1上距離直線(xiàn)P1P2最近的拐點(diǎn), 因此被選為中繼節(jié)點(diǎn),并連接到P1 (圖3(b))。然后本發(fā)明考察氏,在圖3(c)中,C2被連 接到C1因?yàn)樗鞘仙暇嚯x直線(xiàn)C1P2最近的一個(gè)拐點(diǎn)。最后,C2被連接到己在圖3(d)中。 注意所有新邊的連接信息都應(yīng)當(dāng)被加入到查找表中,因?yàn)樗鼈儗?duì)于后續(xù)精煉步驟有用。
[0039] 5.精煉策略:事實(shí)上,對(duì)于八角Steiner樹(shù)中的任何一個(gè)點(diǎn),都存在一個(gè)最優(yōu)連接 結(jié)構(gòu)?;诖吮景l(fā)明提出了一種基于共享邊原理的精煉策略。通過(guò)對(duì)八角斯坦樹(shù)中的所有 邊掃描一次,本發(fā)明首先獲取了每一個(gè)點(diǎn)的度數(shù),并記錄下連接到每個(gè)點(diǎn)的其它點(diǎn)集合。然 后對(duì)于每一個(gè)點(diǎn)P,假設(shè)其度數(shù)為:本發(fā)明枚舉所有 <種走線(xiàn)組合方式,并選出能夠繞過(guò) 所有障礙物且線(xiàn)長(zhǎng)最短的那一個(gè)作為該點(diǎn)的最優(yōu)結(jié)構(gòu)。接下來(lái),本發(fā)明計(jì)算每一個(gè)點(diǎn)最優(yōu) 結(jié)構(gòu)中共享邊的長(zhǎng)度,并按照該長(zhǎng)度非遞增的順序?qū)λ悬c(diǎn)進(jìn)行排序。最后按照排序后的 點(diǎn)順序,將每一個(gè)點(diǎn)的最優(yōu)結(jié)構(gòu)應(yīng)用到原始八角Steiner樹(shù)上,從而得到了最終的布線(xiàn)樹(shù)。 詳細(xì)步驟如下: (1)掃面八角Steiner樹(shù)中所有邊一次,統(tǒng)計(jì)每個(gè)點(diǎn)的度數(shù),并將連接到該點(diǎn)的其它點(diǎn) 記錄為一個(gè)集合。
[0040] (2)對(duì)于每個(gè)點(diǎn)P,如果其度數(shù)為^則枚舉4"個(gè)布線(xiàn)組合。選出繞障且線(xiàn)長(zhǎng)最短 的一個(gè)作為P的最優(yōu)結(jié)構(gòu),并計(jì)算該結(jié)構(gòu)的共享邊長(zhǎng)度。
[0041] (3)根據(jù)每個(gè)點(diǎn)最優(yōu)結(jié)構(gòu)的共享邊長(zhǎng)度非遞增的順序?qū)λ悬c(diǎn)進(jìn)行排序。
[0042] (4)按順序應(yīng)用每一個(gè)點(diǎn)的最優(yōu)結(jié)構(gòu)到原始八角Steiner樹(shù)中,直到八角Steiner 樹(shù)的所有邊的走線(xiàn)方式被更新過(guò)。
[0043] 有三點(diǎn)需要強(qiáng)調(diào)。第一,在步驟(2)中,判斷一個(gè)布線(xiàn)組合是否繞障可以直接通過(guò) 查表來(lái)實(shí)現(xiàn),因此非常高效。其次,在步驟(4)中,如果原始八角Steiner樹(shù)的某條邊走線(xiàn) 方式被更新過(guò),則即使當(dāng)前的點(diǎn)的最優(yōu)結(jié)構(gòu)對(duì)這條邊有不同的走線(xiàn)方式,也不去做任何更 新操作。最后,本發(fā)明基于數(shù)據(jù)統(tǒng)計(jì)發(fā)現(xiàn),大部分頂點(diǎn)的度數(shù)不超過(guò)4度,因此,只需優(yōu)化到 4度頂點(diǎn)便可以得到非常好的效果,且運(yùn)行效率高。
[0044] 5.布線(xiàn)器測(cè)試 如表1所示,indl-ind5是從Synopsys得到的工業(yè)測(cè)試數(shù)據(jù)集。rc01-rcl2是繞障問(wèn) 題的標(biāo)準(zhǔn)測(cè)試數(shù)據(jù)集。本發(fā)明將該布線(xiàn)器生成的布線(xiàn)結(jié)果同當(dāng)前最為先進(jìn)的4種布線(xiàn)器進(jìn) 行對(duì)比。從表1可以看出,同布線(xiàn)器1-布線(xiàn)器4相比,本發(fā)明分別可以取得19. 29%,3. 52%, 3. 80%,6. 34%的線(xiàn)長(zhǎng)壓縮。
[0045] 表一布線(xiàn)實(shí)驗(yàn)結(jié)果對(duì)比
【權(quán)利要求】
1. 一種八角結(jié)構(gòu)Steiner最小樹(shù)下的VLSI繞障布線(xiàn)器,其特征在于包括以下步驟: 步驟SOl :根據(jù)給定的一組引腳坐標(biāo)位置,生成一組Delaunay三角剖分,然后通過(guò)相關(guān) 算法生成一棵連接所有引腳的MST ; 步驟S02 :針對(duì)MST中的所有邊,生成兩個(gè)記錄邊連接信息的查找表; 步驟S03 :基于查找表,將第一步生成的MST轉(zhuǎn)換為一棵繞障八角Steiner樹(shù);該八角 Steiner樹(shù)引入了障礙物上的若干拐點(diǎn)以達(dá)到繞障的目的; 步驟S04 :基于邊共享原理,計(jì)算第三步生成的八角Steiner樹(shù)中每一個(gè)節(jié)點(diǎn)的最優(yōu)連 接結(jié)構(gòu),以達(dá)到最大化共享邊長(zhǎng)度的目標(biāo)。
2. 根據(jù)權(quán)利要求1所述的八角結(jié)構(gòu)Steiner最小樹(shù)下的VLSI繞障布線(xiàn)器,其特征在 于:所述步驟SOl中的相關(guān)算法是Kruskal算法或Prim算法。
3. 根據(jù)權(quán)利要求1所述的八角結(jié)構(gòu)Steiner最小樹(shù)下的VLSI繞障布線(xiàn)器,其特征在 于:所述的查找表包括兩個(gè)記錄了邊連接信息的查找表,第一個(gè)表稱(chēng)為邊-障查找表,它記 錄每一條八角邊穿越的障礙物的集合;第二個(gè)表稱(chēng)為邊-線(xiàn)查找表,它記錄了每一條八角 邊的兩個(gè)分線(xiàn)段的坐標(biāo)位置。
4. 根據(jù)權(quán)利要求3所述的八角結(jié)構(gòu)Steiner最小樹(shù)下的VLSI繞障布線(xiàn)器,其特征在 于:所述查找表的生成步驟如下: 步驟S41 :檢查MST中的第i條邊/V7/,對(duì)于每一種走線(xiàn)方式々,計(jì)算兩條分線(xiàn)段和 的起點(diǎn)坐標(biāo)和終點(diǎn)坐標(biāo),其中,Λ.,Λ.為兩個(gè)芯片上給定的引腳; 步驟S42 :對(duì)于每一個(gè)障礙物△,如果或穿越了 △,則將6加入到相關(guān)集合 {及>},其中&為Pi和&以八角方式連接時(shí)的偽斯塔那點(diǎn); 步驟S43 :設(shè)為{見(jiàn)>}里所有障礙物的半周長(zhǎng)之和;計(jì)算每一個(gè){見(jiàn)>}對(duì)應(yīng)的; 然后將{況>}和^^加入到邊-障查找表中; 步驟S44 :檢查每一個(gè)和,如果存在45°或135°斜線(xiàn),則將其繞原點(diǎn)順時(shí)針旋 轉(zhuǎn)45°,從而構(gòu)成一條新的水平或垂直線(xiàn)段; 步驟S45 :記錄和的坐標(biāo)值到邊-線(xiàn)查找表;i=i+l,如果id,返回步驟S41, 否則結(jié)束。
5. 根據(jù)權(quán)利要求1所述的八角結(jié)構(gòu)Steiner最小樹(shù)下的VLSI繞障布線(xiàn)器,其特征在 于:所述繞障的實(shí)現(xiàn)方式包括以下步驟: 步驟S51 :檢查MST中的第i條邊ΛΛ.,如果或能夠繞過(guò)所有障礙物,則將 布線(xiàn)方式選為〇或1,考察第i+Ι條邊;否則進(jìn)入步驟S52 ; 步驟S52 :如果/V7/或能夠繞過(guò)所有障礙物,進(jìn)入步驟S53,否則進(jìn)入步驟S54 ; 步驟S53 :如果則選擇方式0作為結(jié)果; 否則,選擇方式1作為結(jié)果;返回步驟S51考察下一條邊; 步驟S54 :選擇值最小的那一個(gè)作為最終結(jié)果; 返回步驟S51考察下一條邊。
6. 根據(jù)權(quán)利要求1所述的八角結(jié)構(gòu)Steiner最小樹(shù)下的VLSI繞障布線(xiàn)器,其特征在 于:所述最優(yōu)連接結(jié)構(gòu)的計(jì)算方式包括以下步驟: 步驟S61 :掃面八角Steiner樹(shù)中所有邊一次,統(tǒng)計(jì)每個(gè)點(diǎn)的度數(shù),并將連接到該點(diǎn)的 其它點(diǎn)記錄為一個(gè)集合; 步驟S62 :對(duì)于每個(gè)點(diǎn)P,如果其度數(shù)為:則枚舉4"個(gè)布線(xiàn)組合;選出繞障且線(xiàn)長(zhǎng)最短 的一個(gè)作為P的最優(yōu)結(jié)構(gòu),并計(jì)算該結(jié)構(gòu)的共享邊長(zhǎng)度; 步驟S63 :根據(jù)每個(gè)點(diǎn)最優(yōu)結(jié)構(gòu)的共享邊長(zhǎng)度非遞增的順序?qū)λ悬c(diǎn)進(jìn)行排序; 步驟S64 :按順序應(yīng)用每一個(gè)點(diǎn)的最優(yōu)結(jié)構(gòu)到原始八角Steiner樹(shù)中,直到八角 Steiner樹(shù)的所有邊的走線(xiàn)方式被更新過(guò)。
【文檔編號(hào)】G06F17/50GK104318025SQ201410589725
【公開(kāi)日】2015年1月28日 申請(qǐng)日期:2014年10月27日 優(yōu)先權(quán)日:2014年10月27日
【發(fā)明者】郭文忠, 黃興, 陳國(guó)龍, 劉耿耿 申請(qǐng)人:福州大學(xué)