專利名稱:考慮通孔的基于不均勻網(wǎng)格的多層布線方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種超大規(guī)模集成電路物理設(shè)計(jì)技術(shù)領(lǐng)域。
背景技術(shù):
目前,集成電路制造工藝已經(jīng)可以支持多層互連線結(jié)構(gòu)的芯片制造,各層互連線 由金屬實(shí)現(xiàn),層之間的連接通過通孔工藝實(shí)現(xiàn)。相應(yīng)的集成電路設(shè)計(jì)及電子設(shè)計(jì)自動(dòng)化 (EDA)工具需要支持多層互連結(jié)構(gòu)的版圖設(shè)計(jì)。由于不同布線層的線寬和最小線間距并不 一樣,連接每兩層通孔的大小和通孔與金屬連線之間的最小間距也各有差異,因此實(shí)現(xiàn)集 成電路的多層布線還存在著巨大困難。目前的集成電路布線模型可分為兩大類一、有網(wǎng)格布線模型,二、無網(wǎng)格布線模 型。這兩種模型主要是根據(jù)布線區(qū)域的表示以及走線位置是否受限制來劃分的。因?yàn)闊o網(wǎng) 格模型在處理多線寬方面具有一定的優(yōu)勢,并且無網(wǎng)格模型的布線效率也比有網(wǎng)格模型高 很多,致使越來越多的布線器選擇無網(wǎng)格模型?;跓o網(wǎng)格模型的布線算法主要有以下兩類一、基于隱式連接圖的布線方法。在布線開始前,將每個(gè)障礙的邊界按照“線寬/2+ 線間距”的距離進(jìn)行擴(kuò)展,并延長障礙的擴(kuò)展邊界直到遇到布線區(qū)域邊界。把各個(gè)延長線 的交點(diǎn)表示為結(jié)點(diǎn),則整個(gè)版圖形成了一個(gè)圖。因?yàn)榻Y(jié)點(diǎn)并沒有在計(jì)算機(jī)中顯示地構(gòu)造出 來,而是通過保存橫向延長線和縱向延長線的坐標(biāo)間接表示結(jié)點(diǎn)的,所以是一種隱式的連 接圖。然后采用某種方法尋找最短路徑,如圖1所示。二、基于網(wǎng)塊的布線方法。該方法將整個(gè)布線區(qū)域劃分為一個(gè)個(gè)矩形區(qū)域,稱為 “網(wǎng)塊”,一個(gè)網(wǎng)塊為一個(gè)障礙網(wǎng)塊,或者空白網(wǎng)塊。障礙網(wǎng)塊是不能走線的區(qū)域,空白網(wǎng)塊 是可以走線的區(qū)域,并采用角勾鏈數(shù)據(jù)結(jié)構(gòu)對(duì)網(wǎng)塊進(jìn)行管理。然后采用某種方法尋找一條 由空白網(wǎng)塊連成的路徑,如圖2所示?;陔[式連接圖的無網(wǎng)格布線方法通過將無網(wǎng)格布線環(huán)境轉(zhuǎn)化為一個(gè)隱式連接 圖,可以直接調(diào)用傳統(tǒng)的布線算法進(jìn)行布線,直觀易行且數(shù)據(jù)表示和維護(hù)簡單。但是當(dāng)障礙 數(shù)目較多時(shí),障礙邊界擴(kuò)展得到的橫向延長線和縱向延長線也會(huì)較多,導(dǎo)致搜索速度變慢。 在極端情況下,延長線之間的間距甚至小于有網(wǎng)格布線中的一個(gè)網(wǎng)格大小時(shí),效率會(huì)低于 有網(wǎng)格的效率。此外,因?yàn)檠娱L線交點(diǎn)并沒有實(shí)際構(gòu)造出來,因此在搜索時(shí)檢查該交點(diǎn)是否 可擴(kuò)展這個(gè)操作無法在常數(shù)時(shí)間內(nèi)完成,也在一定程度上影響了算法速度?;诰W(wǎng)塊的布線方法是在一個(gè)網(wǎng)塊構(gòu)成的區(qū)域中尋找布線路徑。該方法相對(duì)于基 于隱式連接圖的方法速度略有提高,但是因?yàn)榫W(wǎng)塊的大小位置不能用一個(gè)簡單的數(shù)據(jù)結(jié)構(gòu) 表示,尋找相鄰的網(wǎng)塊也無法簡單的通過一步操作來實(shí)現(xiàn),在該方法中采用了角勾鏈結(jié)構(gòu) 存儲(chǔ),角勾鏈結(jié)構(gòu)對(duì)于尋找相鄰網(wǎng)塊比較方便,但是仍然無法在常數(shù)時(shí)間內(nèi)完成,并且維護(hù) 該結(jié)構(gòu)也需要一定的時(shí)間代價(jià)。
發(fā)明內(nèi)容
針對(duì)上述問題,本發(fā)明提供一種能夠處理不同布線層的不同線寬和最小線間距, 且滿足通孔的設(shè)計(jì)規(guī)則約束的考慮通孔的基于不均勻網(wǎng)格的多層布線方法。為達(dá)到上述目的,本發(fā)明所述考慮通孔的基于不均勻網(wǎng)格的多層布線方法,包括 以下步驟(1)讀入布線區(qū)域內(nèi)的障礙信息、待布線網(wǎng)信息和工藝信息;(2)依據(jù)上述障礙信息建立并規(guī)范障礙列表;(3)擴(kuò)展障礙列表中各障礙的邊界;(4)設(shè)置起始點(diǎn)集合和終止點(diǎn)集合;(5)構(gòu)造三維不均勻網(wǎng)格陣列;(6)設(shè)置三維不均勻網(wǎng)格陣列的允許擴(kuò)展方向;(7)基于上述允許擴(kuò)展方向,采用A*算法對(duì)三維不均勻網(wǎng)格進(jìn)行布線路徑搜索;(8)輸出搜索路徑。其中,步驟(1)中,所述待布線網(wǎng)信息包括該待布線網(wǎng)的可用布線層信息,布線區(qū) 域大小信息以及起始點(diǎn)和終止點(diǎn)信息或起始模塊和終止模塊信息;所述工藝信息包括待布線網(wǎng)的布線層層數(shù),布線區(qū)域允許的最小線寬值,各布線 層通孔直徑大小,允許最小的線到線間距值,允許最小的線到通孔間距值,允許最小的通孔 到通孔間距值。步驟(2)中,所述障礙列表中的每個(gè)列表元素是由該障礙所在布線層層號(hào),頂點(diǎn) 坐標(biāo),以及該障礙是通孔或非通孔來表示,進(jìn)一步地,步驟(2)的具體實(shí)現(xiàn)步驟如下2. 1根據(jù)步驟(1)中所述的障礙信息建立障礙列表;2. 2遍歷障礙列表,調(diào)用多邊形到矩形的轉(zhuǎn)化程序?qū)⒚恳粋€(gè)多邊形障礙轉(zhuǎn)化為至 少一個(gè)矩形障礙;2. 3刪除障礙列表中存儲(chǔ)的原多邊形障礙,將轉(zhuǎn)化得到的矩形障礙添加到障礙列 表中。進(jìn)一步地,步驟(3)具體實(shí)現(xiàn)如下3. 1初始化橫坐標(biāo)集合和縱坐標(biāo)集合;3. 2遍歷步驟(2)得到的障礙列表,將非通孔矩形障礙的每一個(gè)邊界分別按照“線寬 /2+線間距”的距離進(jìn)行擴(kuò)展,得出垂直擴(kuò)展邊界和水平擴(kuò)展邊界;將通孔矩形障礙的每一個(gè) 邊界按照“線寬/2+線到通孔的間距”的距離進(jìn)行擴(kuò)展,得出垂直擴(kuò)展邊界和水平擴(kuò)展邊界;3. 3遍歷步驟(2)得到的障礙列表,將非通孔矩形障礙的每一個(gè)邊界分別按照“通 孔直徑/2+線到通孔間距”的距離進(jìn)行擴(kuò)展,得出垂直擴(kuò)展邊界和水平擴(kuò)展邊界;將通孔矩 形障礙的每一個(gè)邊界分別按照“通孔直徑/2+通孔到通孔的間距”的距離進(jìn)行擴(kuò)展,得出垂 直擴(kuò)展邊界和水平擴(kuò)展邊界;3. 4將(3. 2)和(3. 3)步中的所有垂直擴(kuò)展邊界的橫坐標(biāo)加入到橫坐標(biāo)集合中,所 有水平擴(kuò)展邊界的縱坐標(biāo)加入到縱坐標(biāo)集合中。進(jìn)一步地,步驟(4)具體實(shí)現(xiàn)如下4. 1初始化起始點(diǎn)集合和終止點(diǎn)集合;
4. 2若布線模式為點(diǎn)到點(diǎn)模式,將布線起點(diǎn)添加到起始點(diǎn)集中,將布線終點(diǎn)添加到 終止點(diǎn)集中;若布線模式為模塊到模塊模式,進(jìn)行步驟4. 2. 1 4. 2. 6 ;4. 2. 1調(diào)用多邊形到矩形的轉(zhuǎn)化程序分別將起始模塊和終止模塊轉(zhuǎn)化為至少一個(gè) 矩形模塊,并將轉(zhuǎn)化后的矩形模塊分別添加到起始矩形鏈表和終止矩形鏈表中;4. 2. 2分別遍歷起始矩形鏈表和終止矩形鏈表,讀取各矩形模塊的左邊界,右邊 界,下邊界和上邊界,并依據(jù)所述的工藝信息將每一個(gè)邊界分別按照“線寬/2”的距離進(jìn)行 收縮,得出垂直收縮邊界和水平收縮邊界;4. 2. 3將垂直收縮邊界的橫坐標(biāo)添加到橫坐標(biāo)集合中,將水平收縮邊界的縱坐標(biāo) 添加到縱坐標(biāo)集合中;4. 2. 4分別對(duì)縱坐標(biāo)集合和橫坐標(biāo)集合中的坐標(biāo)進(jìn)行排序并去重;4. 2. 5將橫坐標(biāo)集合中各橫坐標(biāo)對(duì)應(yīng)的垂直線分別與起始矩形鏈表中每個(gè)矩形模 塊的上邊界和下邊界的交點(diǎn),縱坐標(biāo)集合中各縱坐標(biāo)對(duì)應(yīng)的水平線分別與起始矩形鏈表中 每個(gè)矩形模塊的左邊界和右邊界的交點(diǎn),以及橫坐標(biāo)集合中各橫坐標(biāo)對(duì)應(yīng)的垂直線和縱坐 標(biāo)集合中的各縱坐標(biāo)對(duì)應(yīng)的水平線在起始模塊內(nèi)部的交點(diǎn)添加到起始點(diǎn)集合中;4. 2. 6將橫坐標(biāo)集合中各橫坐標(biāo)對(duì)應(yīng)的垂直線與終止矩形鏈表中每個(gè)矩形模塊的 上邊界和下邊界的交點(diǎn),縱坐標(biāo)集合中各縱坐標(biāo)對(duì)應(yīng)的水平線與終止矩形鏈表中每個(gè)矩形 模塊的左邊界和右邊界的交點(diǎn),以及橫坐標(biāo)集合中各橫坐標(biāo)對(duì)應(yīng)的垂直線和縱坐標(biāo)集合中 的各縱坐標(biāo)的水平線在終止模塊內(nèi)部的交點(diǎn)添加到終止點(diǎn)集合中。其中,本發(fā)明所述的三維不均勻網(wǎng)格陣列表示為由步驟(3)所述的橫坐標(biāo)集合, 所述的縱坐標(biāo)集合,以及所述布線層層數(shù)構(gòu)成的三維數(shù)組。進(jìn)一步地,步驟(6)具體實(shí)現(xiàn)如下6. 1設(shè)置同層擴(kuò)展的允許擴(kuò)展方向;遍歷步驟(2)得到的障礙列表,若該矩形障礙是非通孔障礙,設(shè)置三維不均勻網(wǎng) 格陣列中所有在該矩形障礙按照“線寬/2+線間距”擴(kuò)展的左,右,上,下邊界上的網(wǎng)格點(diǎn), 分別不可向右,左,下,上擴(kuò)展,并設(shè)置由該左,右,上,下邊界所構(gòu)成的矩形內(nèi)部的所有網(wǎng)格 點(diǎn)為不合法網(wǎng)格點(diǎn);若該障礙是通孔障礙,設(shè)置三維不均勻網(wǎng)格陣列中所有在該障礙按照 “通孔直徑/2+線到通孔間距”擴(kuò)展的左,右,上,下邊界上的網(wǎng)格點(diǎn),分別不可向右,左,下, 上擴(kuò)展,并設(shè)置由該左,右,上,下邊界所構(gòu)成的矩形內(nèi)部的所有網(wǎng)格點(diǎn)為不合法網(wǎng)格點(diǎn);6. 2設(shè)置跨層擴(kuò)展的允許擴(kuò)展方向;遍歷步驟(2)得到的障礙列表,若該矩形障礙是非通孔障礙,設(shè)置三維不均勻網(wǎng) 格陣列中所有在該障礙按照“線寬/2+線到通孔間距”擴(kuò)展的左,右,上,下邊界所構(gòu)成的 矩形內(nèi)部的網(wǎng)格點(diǎn)不能向相鄰層的網(wǎng)格擴(kuò)展,并設(shè)置相鄰層在對(duì)應(yīng)區(qū)域內(nèi)的網(wǎng)格點(diǎn)不能向 該層擴(kuò)展;若該障礙是通孔障礙,設(shè)置三維不均勻網(wǎng)格陣列中所有在該障礙按照“通孔直徑 /2+通孔到通孔間距”擴(kuò)展的左,右,上,下邊界所構(gòu)成的矩形內(nèi)部的網(wǎng)格點(diǎn)不能向相鄰層的 網(wǎng)格擴(kuò)展,并設(shè)置相鄰層在對(duì)應(yīng)區(qū)域內(nèi)的網(wǎng)格點(diǎn)不能向該層擴(kuò)展。進(jìn)一步地,步驟(7) A*算法進(jìn)行路徑搜索的具體實(shí)現(xiàn)步驟如下7. 1創(chuàng)建待擴(kuò)展點(diǎn)的鏈表,保存所有已生成而未擴(kuò)展的點(diǎn);以及封閉鏈表,記錄已 訪問過的點(diǎn);7. 2將起始點(diǎn)集合中的所有點(diǎn)按照該點(diǎn)到終止點(diǎn)集合中點(diǎn)的最短距離有序地列入待擴(kuò)展點(diǎn)的鏈表中;7. 3在上述待擴(kuò)展點(diǎn)的鏈表中讀取擴(kuò)展代價(jià)最小的點(diǎn)n,并判斷點(diǎn)η是否在終止點(diǎn) 集合中;是,結(jié)束搜索,否,繼續(xù)下面的步驟;7. 4對(duì)點(diǎn)η進(jìn)行擴(kuò)展,并對(duì)擴(kuò)展后得到的點(diǎn)χ進(jìn)行判斷若點(diǎn)χ在待擴(kuò)展點(diǎn)的鏈表中,比較點(diǎn)χ的不同路徑的擴(kuò)展代價(jià),若該擴(kuò)展代價(jià)小于 待擴(kuò)展點(diǎn)的鏈表中的擴(kuò)展代價(jià),用該擴(kuò)展代價(jià)更新待擴(kuò)展點(diǎn)的鏈表中的擴(kuò)展代價(jià),并將具 有新的擴(kuò)展代價(jià)的點(diǎn)X轉(zhuǎn)移到鏈表中;若點(diǎn)χ在封閉鏈表中,比較點(diǎn)χ的不同路徑的擴(kuò)展代價(jià),若該擴(kuò)展代價(jià)小于封閉鏈 表中的擴(kuò)展代價(jià),用該擴(kuò)展代價(jià)更新封閉鏈表中的擴(kuò)展代價(jià),并將點(diǎn)X放入待擴(kuò)展點(diǎn)的鏈 表中;若點(diǎn)χ既不在待擴(kuò)展點(diǎn)的鏈表中,也不在封閉鏈表中;求解點(diǎn)χ的擴(kuò)展代價(jià),并將 點(diǎn)X放入待擴(kuò)展點(diǎn)的鏈表中;7. 5將點(diǎn)η放入到封閉列表中;7. 6按照擴(kuò)展代價(jià)將待擴(kuò)展點(diǎn)的鏈表中的各點(diǎn)進(jìn)行排序,重復(fù)步驟7. 3 7. 6。進(jìn)一步地,步驟(8)依據(jù)步驟(7)的搜索結(jié)果;搜索成功,輸出搜索到的路徑,搜索 失敗,輸出布線失敗。本發(fā)明所述考慮通孔的基于不均勻網(wǎng)格的多層布線方法不僅根據(jù)線寬和線間距 對(duì)障礙邊界進(jìn)行擴(kuò)展,同時(shí)還根據(jù)通孔大小和通孔間距對(duì)障礙邊界進(jìn)行了擴(kuò)展,并基于上 述擴(kuò)展結(jié)果構(gòu)造出了一三維不均勻網(wǎng)格陣列。此外,本發(fā)明在路徑搜索前,還分別設(shè)置同層 擴(kuò)展的允許擴(kuò)展方向和跨層擴(kuò)展的允許擴(kuò)展方向,使得搜索結(jié)果滿足設(shè)計(jì)規(guī)則。本發(fā)明具有以下幾點(diǎn)有益的效果1、本發(fā)明可以處理不同布線層的不同線寬和最小線間距,同時(shí)可以滿足通孔的設(shè) 計(jì)規(guī)則約束。2、本發(fā)明同時(shí)支持點(diǎn)到點(diǎn)布線模式和模塊到模塊布線模式,將點(diǎn)或者模塊統(tǒng)一轉(zhuǎn) 化為點(diǎn)集,點(diǎn)集中點(diǎn)的選取保證在多層搜索中可以找到最優(yōu)路徑。3、本發(fā)明可使用C++語言并用面向?qū)ο笏枷朐O(shè)計(jì)和實(shí)現(xiàn),具有較強(qiáng)的平臺(tái)通用 性,可以在不同的平臺(tái)上運(yùn)行。
圖1為基于隱式連接圖的布線方法;圖2為基于網(wǎng)塊的布線方法圖;圖3為本發(fā)明考慮通孔的基于不均勻網(wǎng)格的多層布線方法的流程圖;圖4為本發(fā)明所述非通孔障礙根據(jù)線寬和線間距約束擴(kuò)展邊界的示意圖;圖5為本發(fā)明所述通孔障礙根據(jù)線寬和線間距約束擴(kuò)展邊界的示意圖;圖6為本發(fā)明所述非通孔障礙根據(jù)通孔大小和通孔間距約束擴(kuò)展邊界的示意圖;圖7為本發(fā)明所述通孔障礙根據(jù)通孔大小和通孔間距約束擴(kuò)展邊界的示意圖;圖8為本發(fā)明起始點(diǎn)模塊或終止點(diǎn)模塊轉(zhuǎn)化為點(diǎn)集的示意圖;圖9為本發(fā)明所述三維不均勻網(wǎng)格陣列的一具體實(shí)施例示意圖。
具體實(shí)施例方式下面結(jié)合說明書附圖對(duì)本發(fā)明的具體實(shí)施方式
做詳細(xì)描述。如圖3所示,本發(fā)明考慮通孔的基于不均勻網(wǎng)格的多層布線方法的流程圖。圖中 所示本發(fā)明的具體實(shí)施步驟如下(1)讀入布線區(qū)域內(nèi)的障礙信息、待布線網(wǎng)信息和工藝信息。所述的待布線網(wǎng)信息包括該待布線網(wǎng)的可用布線層信息,布線區(qū)域大小信息,以 及起始點(diǎn)和終止點(diǎn)信息或起始模塊和終止模塊信息;其中,待布線網(wǎng)的可用布線層信息由 用戶指定輸入。工藝信息主要包括該布線層層數(shù),布線區(qū)域允許的最小線寬值,通孔直徑 大小,允許最小的線到線間距值,允許最小的線到通孔間距值,允許最小的通孔到通孔間距 值。(2)建立并規(guī)范障礙列表。2. 1依據(jù)讀入的障礙信息建立障礙列表obsList,其中,所有障礙的形狀均為直角 多邊形,由該直角多邊形所在的布線層層號(hào)和多邊形的頂點(diǎn)坐標(biāo)表示,同時(shí)障礙還包括一 個(gè)表示其是否是通孔的屬性通孔或非通孔。2. 2規(guī)范障礙列表obsList,即遍歷已建立的障礙列表obsList,調(diào)用多邊形到矩 形的轉(zhuǎn)化程序?qū)⒚恳粋€(gè)多邊形障礙都轉(zhuǎn)化為矩形障礙;然后,刪除障礙列表中存儲(chǔ)的原多 邊形障礙,將轉(zhuǎn)化得到的矩形障礙添加到障礙列表中。(3)擴(kuò)展障礙邊界。3. 1初始化橫坐標(biāo)集合和縱坐標(biāo)集合;3. 2根據(jù)線寬和線間距約束擴(kuò)展障礙邊界;遍歷步驟(2)得到的障礙列表obsList,將非通孔矩形障礙的每一個(gè)邊界分別按 照“線寬/2+線間距”的距離進(jìn)行擴(kuò)展,得出垂直擴(kuò)展邊界和水平擴(kuò)展邊界;將通孔矩形障 礙的每一個(gè)邊界分別按照“線寬/2+線到通孔的間距”的距離進(jìn)行擴(kuò)展,得出垂直擴(kuò)展邊界 和水平擴(kuò)展邊界;3. 3根據(jù)通孔大小和間距約束擴(kuò)展障礙邊界;遍歷步驟(2)得到的障礙列表obsList,將非通孔矩形障礙的每一個(gè)邊界分別按 照“通孔直徑/2+線到通孔間距”的距離進(jìn)行擴(kuò)展,得出垂直擴(kuò)展邊界和水平擴(kuò)展邊界;將 通孔矩形障礙的每一個(gè)邊界分別按照“通孔直徑/2+通孔到通孔的間距”的距離進(jìn)行擴(kuò)展, 得出垂直擴(kuò)展邊界和水平擴(kuò)展邊界;3. 4將(3. 2)和(3. 3)步中的所有垂直擴(kuò)展邊界的橫坐標(biāo)加入到橫坐標(biāo)集合xset 中,所有水平擴(kuò)展邊界的縱坐標(biāo)加入到縱坐標(biāo)集合yset中。(4)設(shè)置起始點(diǎn)集合和終止點(diǎn)集合。4. 1初始化起始點(diǎn)集合S和終止點(diǎn)集合T ;4. 2若布線模式為點(diǎn)到點(diǎn)模式,則將布線起點(diǎn)加入起始點(diǎn)集中,將布線終點(diǎn)加入終 止點(diǎn)集中;若布線模式為模塊到模塊模式,進(jìn)行如下步驟;首先,調(diào)用多邊形到矩形的轉(zhuǎn)化程序分別將起始模塊和終止模塊轉(zhuǎn)化為至少一個(gè) 矩形模塊,并分別將各矩形模塊相應(yīng)地添加到起始矩形鏈表和終止矩形鏈表中;然后對(duì)鏈 表中的每個(gè)矩形模塊的邊界分別按照“線寬/2”的距離進(jìn)行收縮,得到垂直收縮邊界和水平 收縮邊界;
然后,將垂直收縮邊界的橫坐標(biāo)加入到橫坐標(biāo)集合中,水平收縮邊界的縱坐標(biāo)加 入到縱坐標(biāo)集合中,對(duì)橫坐標(biāo)集合和縱坐標(biāo)集合重新排序并去重;最后,將橫坐標(biāo)集合中各橫坐標(biāo)對(duì)應(yīng)的垂直線分別與起始矩形鏈表中每個(gè)矩形的 上邊界和下邊界的交點(diǎn),縱坐標(biāo)集合中各縱坐標(biāo)對(duì)應(yīng)的水平線分別與起始矩形鏈表中每個(gè) 矩形的左邊界和右邊界的交點(diǎn),以及橫坐標(biāo)集合中各橫坐標(biāo)對(duì)應(yīng)的垂直線和縱坐標(biāo)集合中 的各縱坐標(biāo)對(duì)應(yīng)的水平線在起始模塊內(nèi)部的交點(diǎn)添加到起始點(diǎn)集合中;同理,將橫坐標(biāo)集 合中各橫坐標(biāo)對(duì)應(yīng)的垂直線與終止矩形鏈表中每個(gè)矩形的上邊界和下邊界的交點(diǎn),縱坐標(biāo) 集合中各縱坐標(biāo)對(duì)應(yīng)的水平線與終止矩形鏈表中每個(gè)矩形的左邊界和右邊界的交點(diǎn),以及 橫坐標(biāo)集合中各橫坐標(biāo)對(duì)應(yīng)的垂直線和縱坐標(biāo)集合中的各縱坐標(biāo)的水平線在終止模塊內(nèi) 部的交點(diǎn)添加到終止點(diǎn)集合中。(5)構(gòu)造三維不均勻網(wǎng)格陣列。三維不均勻網(wǎng)格陣列表示為由步驟(3)得到的橫坐標(biāo)集合xset和縱坐標(biāo)集合 yset,以及布線層數(shù)構(gòu)造的三維數(shù)組Info,
其中sizeX是數(shù)組的列數(shù),SizeY
是數(shù)組的行數(shù),sizeZ是布線層數(shù)。(6)設(shè)置三維不均勻網(wǎng)格陣列網(wǎng)格的允許擴(kuò)展方向。6. 1根據(jù)線寬和線間距設(shè)置同層擴(kuò)展的允許擴(kuò)展方向;遍歷步驟(2)得到的障礙列表obsList,在橫坐標(biāo)集合xset中搜索依據(jù)線寬和線 間距約束擴(kuò)展的障礙邊界的左邊界和右邊界,在縱坐標(biāo)集合yset中搜索依據(jù)線寬和線間 距約束擴(kuò)展的障礙邊界的上邊界和下邊界,設(shè)置位于左邊界上的網(wǎng)格點(diǎn)不可向右擴(kuò)展,位 于右邊界上的網(wǎng)格點(diǎn)不可向左擴(kuò)展;位于上邊界的網(wǎng)格點(diǎn)不可向下擴(kuò)展,位于下邊界上的 網(wǎng)格點(diǎn)不可向上擴(kuò)展,并設(shè)置由該邊界所圍成矩形內(nèi)部的所有網(wǎng)格點(diǎn)為不合法網(wǎng)格點(diǎn)。6. 2根據(jù)通孔設(shè)計(jì)規(guī)則約束設(shè)置跨層擴(kuò)展的允許擴(kuò)展方向;遍歷步驟(2)得到的障礙列表obsList,在橫坐標(biāo)集合xset中搜索依據(jù)通孔大小 和通孔間距擴(kuò)展的障礙邊界的左邊界和右邊界,在縱坐標(biāo)集合yset中搜索依據(jù)通孔大小 和通孔間距擴(kuò)展的障礙邊界的上邊界和下邊界,設(shè)置由上述左邊界,右邊界,上邊界和下邊 界所圍成矩形內(nèi)部的網(wǎng)格點(diǎn)不能向相鄰層擴(kuò)展,并設(shè)置相鄰層在對(duì)應(yīng)區(qū)域內(nèi)的網(wǎng)格不能向 該層擴(kuò)展。(7)采用k*搜索算法對(duì)三維不均勻網(wǎng)格陣列進(jìn)行布線路徑的搜索;在搜索過程開始時(shí),將起始點(diǎn)集合S中的所有點(diǎn)按照該點(diǎn)到終止點(diǎn)集合T中點(diǎn)的 最短距離有序地插入待擴(kuò)展點(diǎn)的鏈表中,A*算法停止的條件是當(dāng)前搜索到的網(wǎng)格在終止點(diǎn) 集合T中。然后,將搜索到的路徑進(jìn)行保存。在多層布線模式中,網(wǎng)格點(diǎn)除了向同層相鄰的 網(wǎng)格點(diǎn)擴(kuò)展之外還可以向相鄰層擴(kuò)展。A*搜索算法的具體實(shí)現(xiàn)步驟如下7. 1創(chuàng)建待擴(kuò)展點(diǎn)的鏈表,保存所有已生成而未擴(kuò)展的點(diǎn);以及封閉鏈表,記錄已 訪問過的點(diǎn);7. 2將起始點(diǎn)集合中的所有點(diǎn)按照該點(diǎn)到終止點(diǎn)集合中點(diǎn)的最短距離有序地列入 待擴(kuò)展點(diǎn)的鏈表中;7. 3在上述待擴(kuò)展點(diǎn)的鏈表中讀取擴(kuò)展代價(jià)最小的點(diǎn)n,并判斷點(diǎn)η是否在終止點(diǎn) 集合中;是,結(jié)束搜索,否,繼續(xù)下面的步驟;7. 4對(duì)點(diǎn)η進(jìn)行擴(kuò)展,并對(duì)擴(kuò)展后得到的點(diǎn)χ進(jìn)行判斷
若點(diǎn)χ在待擴(kuò)展點(diǎn)的鏈表中,比較點(diǎn)χ的不同路徑的擴(kuò)展代價(jià),若該擴(kuò)展代價(jià)小于 待擴(kuò)展點(diǎn)的鏈表中的擴(kuò)展代價(jià),用該擴(kuò)展代價(jià)更新待擴(kuò)展點(diǎn)的鏈表中的擴(kuò)展代價(jià),并將點(diǎn)X 放入待擴(kuò)展點(diǎn)的鏈表中;若點(diǎn)X在封閉鏈表中,比較點(diǎn)X的不同路徑的擴(kuò)展代價(jià),若該擴(kuò)展代價(jià)小于封閉鏈 表中的擴(kuò)展代價(jià),用該擴(kuò)展代價(jià)更新封閉鏈表中的擴(kuò)展代價(jià),并將點(diǎn)X放入待擴(kuò)展點(diǎn)的鏈 表中;若點(diǎn)χ既不在待擴(kuò)展點(diǎn)的鏈表中,也不在封閉鏈表中;求解點(diǎn)χ的擴(kuò)展代價(jià),并將 點(diǎn)X放入待擴(kuò)展點(diǎn)的鏈表中;7. 5將點(diǎn)η放入到封閉列表中;7. 6按照擴(kuò)展代價(jià)將待擴(kuò)展點(diǎn)的鏈表中的各點(diǎn)進(jìn)行排序,重復(fù)步驟7. 3 7. 6。(8)輸出搜索結(jié)果;如果搜索成功,輸出搜索到的路徑;否則返回布線失敗。下面通過本發(fā)明的一具體實(shí)施例,對(duì)本發(fā)明的實(shí)現(xiàn)過程作進(jìn)一步地說明。本實(shí)施例是采用本發(fā)明所述考慮通孔的基于不均勻網(wǎng)格的多層布線方法,使用 C++語言在LINUX/UNIX環(huán)境下開發(fā)實(shí)現(xiàn)的。本實(shí)施例的實(shí)現(xiàn)程序是以布線區(qū)域內(nèi)的障礙 信息、待布線網(wǎng)信息以及工藝信息為輸入;輸出為搜索到的布線路徑。該程序的具體執(zhí)行流 程(1)程序讀入布線信息程序讀入不局限于以配置文件形式提供的布線區(qū)域大小、布線區(qū)域內(nèi)的障礙信 息、待布線網(wǎng)信息和工藝信息。其中,待布線網(wǎng)信息包括該待布線網(wǎng)的可用布線層,布線 區(qū)域大小和布線模式,即該線網(wǎng)可以在哪幾層金屬層上布線,布線區(qū)域的最大邊界,以及 點(diǎn)到點(diǎn)模式或模塊到模塊模式。若布線模式為點(diǎn)到點(diǎn)模式,布線信息要提供布線的起點(diǎn) 和終點(diǎn);否則提供布線起始模塊和終止模塊,起始模塊和終止模塊均為直角多邊形,由多 邊形所在的布線層號(hào)和頂點(diǎn)坐標(biāo)表示。工藝信息主要包括該布線層層數(shù)sizeZ,布線區(qū) 域允許的最小線寬值lineW[sizeZ],通孔直徑大小viaWtsizeZ],允許最小的線到線間距 值ltol [sizeZ],允許最小的線到通孔間距值ltoV[sizeZ],允許最小的通孔到通孔間距值 vtov [sizeZ],這些大小和間距信息均為數(shù)組,數(shù)組的大小等于sizeZ,下標(biāo)表示對(duì)應(yīng)的布線 層層號(hào)。(2)建立障礙列表obsList,并將其中的每一個(gè)多邊形障礙都轉(zhuǎn)化為矩形障礙;程序根據(jù)步驟(1)讀入的信息建立布線過程所必須的數(shù)據(jù)結(jié)構(gòu),主要包括障礙列 表obsList,其中所有障礙的形狀均為直角多邊形,由該直角多邊形所在的布線層層號(hào)和直 角多邊形的頂點(diǎn)坐標(biāo)表示,每個(gè)頂點(diǎn)由其橫坐標(biāo)和縱坐標(biāo)表示,同時(shí)障礙還包括一個(gè)表示 其是否是通孔的屬性即通孔或非通孔屬性。然后,調(diào)用多邊形到矩形的轉(zhuǎn)化程序?qū)⒄系K列 表中所有的直角多邊形障礙轉(zhuǎn)化為多個(gè)矩形障礙,同時(shí)保留相應(yīng)的是否是通孔的屬性。(3)擴(kuò)展障礙邊界3. 1初始化橫坐標(biāo)集合xset和縱坐標(biāo)集合yset。3. 2依據(jù)線寬和線間距約束擴(kuò)展障礙邊界遍歷由步驟(2)得到的障礙列表obsList,設(shè)當(dāng)前遍歷到的障礙所在的層號(hào)為z, 若該障礙為非通孔障礙,將其上邊界,下邊界,左邊界,右邊界分別按照距離lineWz/2+ltolz進(jìn)行擴(kuò)展(如圖4所示);若該障礙為通孔障礙,將其上邊界,下邊界,左邊界,右邊界分別 按照距離1^1謂2/2+1切\(zhòng)進(jìn)行擴(kuò)展(如圖5所示)。然后,將擴(kuò)展障礙的左邊界和右邊界 對(duì)應(yīng)的橫坐標(biāo)添加到xset中,擴(kuò)展障礙的上邊界和下邊界對(duì)應(yīng)的縱坐標(biāo)添加到y(tǒng)set中。3. 3依據(jù)通孔大小和通孔間距約束擴(kuò)展障礙邊界遍歷由步驟(2)得到的障礙列表obsList,設(shè)當(dāng)前遍歷到的障礙所在的層號(hào)為z, 若該障礙為非通孔障礙,將其上邊界,下邊界,左邊界,右邊界分別按照距離ViaWz/2+ltovz 進(jìn)行擴(kuò)展(如圖6所示);若該障礙為通孔障礙,將其上邊界,下邊界,左邊界,右邊界分別 按照距離¥化12/2+對(duì)0\進(jìn)行擴(kuò)展(如圖7所示)。然后,將擴(kuò)展障礙的左邊界和右邊界對(duì) 應(yīng)的橫坐標(biāo)添加到xset中,擴(kuò)展障礙的上邊界和下邊界對(duì)應(yīng)的縱坐標(biāo)添加到y(tǒng)set中。(4)設(shè)置布線起始點(diǎn)集合和終止點(diǎn)集合4. 1初始化起始點(diǎn)集合S和終止點(diǎn)集合T。4. 2若布線模式為點(diǎn)到點(diǎn)模式,則將布線起點(diǎn)加入起始點(diǎn)集中,將布線終點(diǎn)加入終 止點(diǎn)集中;4. 3若布線模式為模塊到模塊模式4. 3. 1將起始模塊和終止模塊通過多邊形到矩形的轉(zhuǎn)化程序分別轉(zhuǎn)化至少一個(gè)矩 形模塊,并分別將各矩形模塊相應(yīng)地添加到起始矩形鏈表sList和終止矩形鏈表tList中。4. 3. 2初始化一個(gè)點(diǎn)集P,分別將步驟(4. 3. 1)得到的起始矩形鏈表sList和終止 矩形鏈表tList賦給矩形鏈表list,調(diào)用下面步驟(4. 3. 3) (4. 3. 4)將矩形鏈表list轉(zhuǎn) 化為點(diǎn)集P,然后分別將P賦值給相應(yīng)的起始點(diǎn)集S和終止點(diǎn)集T。4. 3. 3遍歷矩形鏈表list,從當(dāng)前遍歷的矩形的屬性中讀取矩形的左邊界left, 右邊界right,下邊界bottom,上邊界top。然后,將left+width/2和right-width/2依次 添加到橫坐標(biāo)集合中,將bottom+width/2和top-width/2依次添加到縱坐標(biāo)集合中,其中 width由步驟(1)讀入。4. 3. 4將矩形邊界上和矩形內(nèi)部的網(wǎng)格點(diǎn)加入到點(diǎn)集中步驟(3)得到的橫坐標(biāo)集合xset和縱坐標(biāo)集合yset中橫坐標(biāo)對(duì)應(yīng)的垂直線和各 縱坐標(biāo)對(duì)應(yīng)的水平線相交得到一系列網(wǎng)格點(diǎn),將位于矩形模塊內(nèi)部的網(wǎng)格點(diǎn)加入到點(diǎn)集P 中;并將橫坐標(biāo)集合xset中各橫坐標(biāo)對(duì)應(yīng)的垂直線與矩形模型的上下邊界的交點(diǎn)加入到P 中,將縱坐標(biāo)集合yset中的縱坐標(biāo)對(duì)應(yīng)的水平線與矩形左右邊界的交點(diǎn)加入P中,如圖8 所示,圖中黑色的點(diǎn)2都加入到點(diǎn)集P中,矩形框1為起始點(diǎn)矩形模塊。依上述步驟設(shè)置布線起始點(diǎn)集合和終止點(diǎn)集合的目的是,由于同層擴(kuò)展擴(kuò)展到矩 形模塊時(shí)首先擴(kuò)展到矩形模塊邊界,而跨層擴(kuò)展有可能直接擴(kuò)展到模塊的內(nèi)部,所以位于 模塊邊界上和內(nèi)部的點(diǎn)都要加入點(diǎn)集中。(5)構(gòu)造三維不均勻網(wǎng)格根據(jù)步驟(3)得到的橫坐標(biāo)集合xset和縱坐標(biāo)集合yset,以及布線層數(shù)構(gòu)造三 維數(shù)組Info[sizeXXsizeYXsizeZ],其中SizeX是數(shù)組的列數(shù),sizeY是數(shù)組的行數(shù),sizeZ是布線 層數(shù)。橫坐標(biāo)集合xset中的一個(gè)元素為布線區(qū)域內(nèi)的一個(gè)橫坐標(biāo),對(duì)應(yīng)于一個(gè)布線層內(nèi) 的一條縱向延長線,集合xset中的所有元素對(duì)應(yīng)一個(gè)布線層內(nèi)的多條縱向延長線。同樣, 縱坐標(biāo)集合yset中的所有元素對(duì)應(yīng)一個(gè)布線層內(nèi)的多條橫向延長線。多條縱向延長線和 多條橫向延長線相交,將一個(gè)布線層劃分為一個(gè)不均勻二維網(wǎng)格陣列,將該不均勻網(wǎng)格映射到所有層中,則形成一個(gè)三維不均勻網(wǎng)格陣列,如圖9所示,每一個(gè)網(wǎng)格對(duì)應(yīng)三維數(shù)組 Info[sizeXXsizeYXsizeZ]的一個(gè)元素,sizeX等于xset中元素的個(gè)數(shù),sizeY等于yset中元素的 個(gè)數(shù)。(6)設(shè)置網(wǎng)格的允許擴(kuò)展方向6. 1根據(jù)線寬和線間距設(shè)置同層擴(kuò)展的允許擴(kuò)展方向遍歷障礙列表obsList,在xset中搜索按照步驟(3)中3. 1擴(kuò)展的左右邊界,在 yset中搜索根據(jù)步驟(3)中3. 1擴(kuò)展的上下邊界,設(shè)置位于左邊界上的網(wǎng)格點(diǎn)為不可向右 擴(kuò)展,位于右邊界上的網(wǎng)格點(diǎn)不可向左擴(kuò)展;位于上邊界的網(wǎng)格點(diǎn)不可向下擴(kuò)展,位于下邊 界上的網(wǎng)格點(diǎn)不可向上擴(kuò)展,并設(shè)置由該邊界所圍成矩形內(nèi)部的所有網(wǎng)格點(diǎn)為不合法網(wǎng)格
點(diǎn)ο6. 2根據(jù)通孔設(shè)計(jì)規(guī)則約束設(shè)置跨層擴(kuò)展的允許擴(kuò)展方向在xset中搜索按照步驟(3)中3. 2擴(kuò)展的左右邊界,在yset中搜索根據(jù)步驟(3) 中3. 2擴(kuò)展的上下邊界,設(shè)置由該邊界所圍成矩形內(nèi)部的網(wǎng)格點(diǎn)不能向相鄰層擴(kuò)展,并設(shè) 置相鄰層在對(duì)應(yīng)區(qū)域內(nèi)的網(wǎng)格不能向該層擴(kuò)展。(7)基于上述允許擴(kuò)展方向,采用A*算法對(duì)三維不均勻網(wǎng)格進(jìn)行布線路徑搜索采用A*搜索算法對(duì)三維不均勻網(wǎng)格進(jìn)行布線路徑的搜索,在搜索過程開始時(shí),要 將起始點(diǎn)集中的所有點(diǎn)按照該點(diǎn)到終止點(diǎn)集中點(diǎn)的最短距離有序地插入待擴(kuò)展點(diǎn)的鏈表 中,A*算法停止的條件是當(dāng)前搜索到的網(wǎng)格在終止點(diǎn)集T中。并將搜索到的路徑進(jìn)行保存。 在多層布線模式中,網(wǎng)格點(diǎn)除了向同層相鄰的網(wǎng)格點(diǎn)擴(kuò)展之外還可以向相鄰層擴(kuò)展。(8)輸出搜索結(jié)果如果布線成功,輸出連線路徑,否則,輸出布線失敗。本發(fā)明所述考慮通孔的基于不均勻網(wǎng)格的多層布線方法,根據(jù)已有的布局結(jié)果和 工藝信息,將布線區(qū)域劃分成三維不均勻網(wǎng)格陣列,然后,基于已設(shè)置的三維不均勻網(wǎng)格陣 列的允許擴(kuò)展方向,利用路徑搜索方法完成布線。本發(fā)明能夠處理不同布線層的不同線寬 和最小間距,同時(shí)滿足通孔的設(shè)計(jì)規(guī)則約束,解決了現(xiàn)有集成電路多層布線存在的問題。以上,僅為本發(fā)明的較佳實(shí)施例,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本 技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到的變化或替換,都應(yīng)涵蓋在 本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)該以權(quán)利要求所界定的保護(hù)范圍為準(zhǔn)。
權(quán)利要求
一種考慮通孔的基于不均勻網(wǎng)格的多層布線方法,其特征在于,包括以下步驟(1)讀入布線區(qū)域內(nèi)的障礙信息、待布線網(wǎng)信息和工藝信息;(2)依據(jù)上述障礙信息建立并規(guī)范障礙列表;(3)擴(kuò)展障礙列表中各障礙的邊界;(4)設(shè)置起始點(diǎn)集合和終止點(diǎn)集合;(5)構(gòu)造三維不均勻網(wǎng)格陣列;(6)設(shè)置三維不均勻網(wǎng)格陣列的允許擴(kuò)展方向;(7)基于上述允許擴(kuò)展方向,采用A*算法對(duì)三維不均勻網(wǎng)格進(jìn)行布線路徑搜索;(8)輸出搜索路徑。
2.根據(jù)權(quán)利要求1所述考慮通孔的基于不均勻網(wǎng)格的多層布線方法,其特征在于,步 驟(1)中,所述待布線網(wǎng)信息包括該待布線網(wǎng)的可用布線層信息,布線區(qū)域大小信息以及 起始點(diǎn)和終止點(diǎn)信息或起始模塊和終止模塊信息;所述工藝信息包括待布線網(wǎng)的布線層層數(shù),布線區(qū)域允許的最小線寬值,各布線層通 孔直徑大小,允許最小的線到線間距值,允許最小的線到通孔間距值,允許最小的通孔到通 孔間距值。
3.根據(jù)權(quán)利要求1所述考慮通孔的基于不均勻網(wǎng)格的多層布線方法,其特征在于,步 驟(2)中,所述障礙列表中的每個(gè)列表元素是由該障礙所在布線層層號(hào),頂點(diǎn)坐標(biāo),以及該 障礙是通孔或非通孔來表示,
4.根據(jù)權(quán)利要求1所述考慮通孔的基于不均勻網(wǎng)格的多層布線方法,其特征在于,步 驟(2)的具體實(shí)現(xiàn)步驟如下2. 1根據(jù)步驟(1)中所述的障礙信息建立障礙列表;2. 2遍歷障礙列表,調(diào)用多邊形到矩形的轉(zhuǎn)化程序?qū)⒚恳粋€(gè)多邊形障礙轉(zhuǎn)化為至少一 個(gè)矩形障礙;2.3刪除障礙列表中存儲(chǔ)的原多邊形障礙,將轉(zhuǎn)化得到的矩形障礙添加到障礙列表中。
5.根據(jù)權(quán)利要求1或2所述考慮通孔的基于不均勻網(wǎng)格的多層布線方法,其特征在于, 步驟(3)具體實(shí)現(xiàn)如下3.1初始化橫坐標(biāo)集合和縱坐標(biāo)集合;3. 2遍歷步驟(2)得到的障礙列表,將非通孔矩形障礙的每一個(gè)邊界分別按照“線寬 /2+線間距”的距離進(jìn)行擴(kuò)展,得出垂直擴(kuò)展邊界和水平擴(kuò)展邊界;將通孔矩形障礙的每一 個(gè)邊界按照“線寬/2+線到通孔的間距”的距離進(jìn)行擴(kuò)展,得出垂直擴(kuò)展邊界和水平擴(kuò)展邊 界;3. 3遍歷步驟(2)得到的障礙列表,將非通孔矩形障礙的每一個(gè)邊界分別按照“通孔直 徑/2+線到通孔間距”的距離進(jìn)行擴(kuò)展,得出垂直擴(kuò)展邊界和水平擴(kuò)展邊界;將通孔矩形障 礙的每一個(gè)邊界分別按照“通孔直徑/2+通孔到通孔的間距”的距離進(jìn)行擴(kuò)展,得出垂直擴(kuò) 展邊界和水平擴(kuò)展邊界;3. 4將(3. 2)和(3. 3)步中的所有垂直擴(kuò)展邊界的橫坐標(biāo)加入到橫坐標(biāo)集合中,所有水 平擴(kuò)展邊界的縱坐標(biāo)加入到縱坐標(biāo)集合中。
6.根據(jù)權(quán)利要求1或2所述考慮通孔的基于不均勻網(wǎng)格的多層布線方法,其特征在于, 步驟(4)具體實(shí)現(xiàn)如下`4. 1初始化起始點(diǎn)集合和終止點(diǎn)集合;`4. 2若布線模式為點(diǎn)到點(diǎn)模式,將布線起點(diǎn)添加到起始點(diǎn)集中,將布線終點(diǎn)添加到終止 點(diǎn)集中;若布線模式為模塊到模塊模式,進(jìn)行步驟4. 2. 1 4. 2. 6 ;`4. 2. 1調(diào)用多邊形到矩形的轉(zhuǎn)化程序分別將起始模塊和終止模塊轉(zhuǎn)化為至少一個(gè)矩形 模塊,并將轉(zhuǎn)化后的矩形模塊分別添加到起始矩形鏈表和終止矩形鏈表中;`4. 2. 2分別遍歷起始矩形鏈表和終止矩形鏈表,讀取各矩形模塊的左邊界,右邊界,下 邊界和上邊界,并依據(jù)所述的工藝信息將每一個(gè)邊界分別按照“線寬/2”的距離進(jìn)行收縮, 得出垂直收縮邊界和水平收縮邊界;`4. 2. 3將垂直收縮邊界的橫坐標(biāo)添加到橫坐標(biāo)集合中,將水平收縮邊界的縱坐標(biāo)添加 到縱坐標(biāo)集合中;`4. 2. 4分別對(duì)縱坐標(biāo)集合和橫坐標(biāo)集合中的坐標(biāo)進(jìn)行排序并去重; 4. 2. 5將橫坐標(biāo)集合中各橫坐標(biāo)對(duì)應(yīng)的垂直線分別與起始矩形鏈表中每個(gè)矩形模塊的 上邊界和下邊界的交點(diǎn),縱坐標(biāo)集合中各縱坐標(biāo)對(duì)應(yīng)的水平線分別與起始矩形鏈表中每個(gè) 矩形模塊的左邊界和右邊界的交點(diǎn),以及橫坐標(biāo)集合中各橫坐標(biāo)對(duì)應(yīng)的垂直線和縱坐標(biāo)集 合中的各縱坐標(biāo)對(duì)應(yīng)的水平線在起始模塊內(nèi)部的交點(diǎn)添加到起始點(diǎn)集合中;`4. 2. 6將橫坐標(biāo)集合中各橫坐標(biāo)對(duì)應(yīng)的垂直線與終止矩形鏈表中每個(gè)矩形模塊的上邊 界和下邊界的交點(diǎn),縱坐標(biāo)集合中各縱坐標(biāo)對(duì)應(yīng)的水平線與終止矩形鏈表中每個(gè)矩形模塊 的左邊界和右邊界的交點(diǎn),以及橫坐標(biāo)集合中各橫坐標(biāo)對(duì)應(yīng)的垂直線和縱坐標(biāo)集合中的各 縱坐標(biāo)的水平線在終止模塊內(nèi)部的交點(diǎn)添加到終止點(diǎn)集合中。
7.根據(jù)權(quán)利要求1或2所述考慮通孔的基于不均勻網(wǎng)格的多層布線方法,其特征在于, 所述的三維不均勻網(wǎng)格陣列表示為由步驟(3)所述的橫坐標(biāo)集合,所述的縱坐標(biāo)集合,以 及所述布線層層數(shù)構(gòu)成的三維數(shù)組。
8.根據(jù)權(quán)利要求1或2所述考慮通孔的基于不均勻網(wǎng)格的多層布線方法,其特征在于, 步驟(6)具體實(shí)現(xiàn)如下`6. 1設(shè)置同層擴(kuò)展的允許擴(kuò)展方向;遍歷步驟(2)得到的障礙列表,若該矩形障礙是非通孔障礙,設(shè)置三維不均勻網(wǎng)格陣 列中所有在該矩形障礙按照“線寬/2+線間距”擴(kuò)展的左,右,上,下邊界上的網(wǎng)格點(diǎn),分別 不可向右,左,下,上擴(kuò)展,并設(shè)置由該左,右,上,下邊界所構(gòu)成的矩形內(nèi)部的所有網(wǎng)格點(diǎn)為 不合法網(wǎng)格點(diǎn);若該障礙是通孔障礙,設(shè)置三維不均勻網(wǎng)格陣列中所有在該障礙按照“通孔 直徑/2+線到通孔間距”擴(kuò)展的左,右,上,下邊界上的網(wǎng)格點(diǎn),分別不可向右,左,下,上擴(kuò) 展,并設(shè)置由該左,右,上,下邊界所構(gòu)成的矩形內(nèi)部的所有網(wǎng)格點(diǎn)為不合法網(wǎng)格點(diǎn); 6. 2設(shè)置跨層擴(kuò)展的允許擴(kuò)展方向;遍歷步驟(2)得到的障礙列表,若該矩形障礙是非通孔障礙,設(shè)置三維不均勻網(wǎng)格陣 列中所有在該障礙按照“線寬/2+線到通孔間距”擴(kuò)展的左,右,上,下邊界所構(gòu)成的矩形內(nèi) 部的網(wǎng)格點(diǎn)不能向相鄰層的網(wǎng)格擴(kuò)展,并設(shè)置相鄰層在對(duì)應(yīng)區(qū)域內(nèi)的網(wǎng)格點(diǎn)不能向該層擴(kuò) 展;若該障礙是通孔障礙,設(shè)置三維不均勻網(wǎng)格陣列中所有在該障礙按照“通孔直徑/2+通 孔到通孔間距”擴(kuò)展的左,右,上,下邊界所構(gòu)成的矩形內(nèi)部的網(wǎng)格點(diǎn)不能向相鄰層的網(wǎng)格 擴(kuò)展,并設(shè)置相鄰層在對(duì)應(yīng)區(qū)域內(nèi)的網(wǎng)格點(diǎn)不能向該層擴(kuò)展。
9.根據(jù)權(quán)利要求1所述考慮通孔的基于不均勻網(wǎng)格的多層布線方法,其特征在于,步驟(7) A*算法進(jìn)行路徑搜索的具體實(shí)現(xiàn)步驟如下'7. 1創(chuàng)建待擴(kuò)展點(diǎn)的鏈表,保存所有已生成而未擴(kuò)展的點(diǎn);以及封閉鏈表,記錄已訪問 過的點(diǎn);'7. 2將起始點(diǎn)集合中的所有點(diǎn)按照該點(diǎn)到終止點(diǎn)集合中點(diǎn)的最短距離有序地列入待擴(kuò) 展點(diǎn)的鏈表中;'7. 3在上述待擴(kuò)展點(diǎn)的鏈表中讀取擴(kuò)展代價(jià)最小的點(diǎn)n,并判斷點(diǎn)η是否在終止點(diǎn)集合 中;是,結(jié)束搜索,否,繼續(xù)下面的步驟;'7. 4對(duì)點(diǎn)η進(jìn)行擴(kuò)展,并對(duì)擴(kuò)展后得到的點(diǎn)χ進(jìn)行判斷若點(diǎn)χ在待擴(kuò)展點(diǎn)的鏈表中,比較點(diǎn)χ的不同路徑的擴(kuò)展代價(jià),若該擴(kuò)展代價(jià)小于待擴(kuò) 展點(diǎn)的鏈表中的擴(kuò)展代價(jià),用該擴(kuò)展代價(jià)更新待擴(kuò)展點(diǎn)的鏈表中的擴(kuò)展代價(jià),并將具有新 的擴(kuò)展代價(jià)的點(diǎn)χ轉(zhuǎn)移到鏈表中;若點(diǎn)χ在封閉鏈表中,比較點(diǎn)χ的不同路徑的擴(kuò)展代價(jià),若該擴(kuò)展代價(jià)小于封閉鏈表中 的擴(kuò)展代價(jià),用該擴(kuò)展代價(jià)更新封閉鏈表中的擴(kuò)展代價(jià),并將點(diǎn)χ放入待擴(kuò)展點(diǎn)的鏈表中; 若點(diǎn)χ既不在待擴(kuò)展點(diǎn)的鏈表中,也不在封閉鏈表中;求解點(diǎn)χ的擴(kuò)展代價(jià),并將點(diǎn)χ 放入待擴(kuò)展點(diǎn)的鏈表中;'7. 5將點(diǎn)η放入到封閉列表中;'7. 6按照擴(kuò)展代價(jià)將待擴(kuò)展點(diǎn)的鏈表中的各點(diǎn)進(jìn)行排序,重復(fù)步驟7. 3 7. 6。
10.根據(jù)權(quán)利要求1所述考慮通孔的基于不均勻網(wǎng)格的多層布線方法,其特征在于,步 驟(8)依據(jù)步驟(7)的搜索結(jié)果;搜索成功,輸出搜索到的路徑,搜索失敗,輸出布線失敗。
全文摘要
本發(fā)明公開一種考慮通孔的基于不均勻網(wǎng)格的多層布線方法,主要是為了解決現(xiàn)有集成電路多層布線存在的困難而設(shè)計(jì)。本發(fā)明依據(jù)讀入的障礙信息建立并規(guī)范障礙列表;然后,分別依據(jù)工藝信息線寬和線間距約束以及通孔大小和通孔間距約束擴(kuò)展障礙邊界,同時(shí)設(shè)置起始點(diǎn)集合和終止點(diǎn)集合,構(gòu)造三維不均勻網(wǎng)格陣列;最后,基于已設(shè)置的三維不均勻網(wǎng)格陣列的允許擴(kuò)展方向,采用A*算法進(jìn)行路徑搜索,并輸出搜索路徑。本發(fā)明同時(shí)支持點(diǎn)到點(diǎn)布線模式和模塊到模塊布線模式,通過將點(diǎn)或模塊統(tǒng)一轉(zhuǎn)化為點(diǎn)的集合,點(diǎn)的集合中各點(diǎn)的選取保證了在多層搜索中能夠找到最短路徑,此外,本發(fā)明通過構(gòu)造三維不均勻網(wǎng)格陣列有效的解決了現(xiàn)有集成電路多層布線存在的問題。
文檔編號(hào)G06F17/50GK101957876SQ20101028203
公開日2011年1月26日 申請日期2010年9月15日 優(yōu)先權(quán)日2010年9月15日
發(fā)明者周強(qiáng), 姚海龍, 楊帆, 蔡懿慈 申請人:清華大學(xué)