專利名稱:SoC 集成電路自動(dòng)布局設(shè)計(jì)中的模組、宏單元、標(biāo)準(zhǔn)單元同步布局的收斂方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明屬于半導(dǎo)體集成電路及微電子技術(shù)領(lǐng)域,具體涉及一種SoC集成電路自動(dòng)布局 設(shè)計(jì)中的模組、宏單元、標(biāo)準(zhǔn)單元同步布局的收斂系統(tǒng)和方法。
背景技術(shù):
集成電路設(shè)計(jì)技術(shù)是當(dāng)今電子與信息工業(yè)的最重要與基本的關(guān)鍵技術(shù)。在這一關(guān)鍵技 術(shù)中,計(jì)算機(jī)輔助設(shè)計(jì)工具技術(shù)(EDA)是其中最重要的組成技術(shù)之一。計(jì)算機(jī)輔助設(shè)計(jì) 工具技術(shù)又有數(shù)種不同用途的軟件技術(shù)所組成,其中,集成電路版圖布局技術(shù)是一種把電 子線路中的元器件按集成電路制造所要求的設(shè)計(jì)規(guī)則自動(dòng)地安置在給定空間的技術(shù),沒(méi)有 這種技術(shù),當(dāng)今的大規(guī)模集成電路芯片設(shè)計(jì)是無(wú)法實(shí)現(xiàn)的。
集成電路布局技術(shù)是針對(duì)一個(gè)電路中大量的基本單元(標(biāo)準(zhǔn)單元或稱作Standard Cell)和宏模塊(Macro Cell)進(jìn)行合理的物理坐標(biāo)位置分配,使得所有的基本單元和宏 模塊(通稱為節(jié)點(diǎn))在一個(gè)指定的空間中互不交疊地?fù)碛凶约旱牡乇P(pán),并且要求相互連接 的節(jié)點(diǎn)間的相對(duì)位置最近,總連線長(zhǎng)度最短,且電學(xué)信號(hào)在其上的性能必須達(dá)到電路所要 求的時(shí)序要求。對(duì)于標(biāo)準(zhǔn)單元的布局問(wèn)題,最基本的實(shí)現(xiàn)方法是布局算法(Placement), 學(xué)術(shù)界和工業(yè)界都已有成熟的算法和應(yīng)用軟件。布局算法在理論上被證明為一個(gè)"NP-完 全"問(wèn)題,即布局問(wèn)題的計(jì)算量及對(duì)內(nèi)存的要求是隨著節(jié)點(diǎn)數(shù)量的增加呈指數(shù)式增加,也 就是說(shuō),如果一個(gè)布局算法對(duì)于1萬(wàn)個(gè)節(jié)點(diǎn)的計(jì)算沒(méi)有問(wèn)題,但對(duì)于1萬(wàn)零1個(gè)節(jié)點(diǎn)就可 能超出同一臺(tái)計(jì)算機(jī)的容量和所要求完成的時(shí)間了。在當(dāng)今的SoC級(jí)集成電路時(shí)代, 一個(gè) 電路就包含幾百萬(wàn)甚至幾千萬(wàn)以上的節(jié)點(diǎn),并以每18個(gè)月翻一倍的速度增加,這樣,現(xiàn) 有的算法及計(jì)算能力永遠(yuǎn)無(wú)法滿足集成電路設(shè)計(jì)工業(yè)對(duì)布局軟件的要求,解決這一 SoC集 成電路布局難題,不僅對(duì)于我國(guó)的集成電路工業(yè)有著重要的促進(jìn)作用,而且也能產(chǎn)生長(zhǎng)遠(yuǎn) 的經(jīng)濟(jì)效益。本發(fā)明提供了一種能夠適合集成電路規(guī)模無(wú)限擴(kuò)大情況下的模組、宏單元、標(biāo)準(zhǔn)單元 同步自動(dòng)布局的收斂方法和系統(tǒng),使得布局的效果不受電路規(guī)模的限制,并達(dá)到面積小、 擁擠度低、計(jì)算時(shí)間短的優(yōu)異結(jié)果。 發(fā)明內(nèi)容本發(fā)明提供了一種自動(dòng)布局設(shè)計(jì)中的模組、宏單元、標(biāo)準(zhǔn)單元同步布局的收斂方法和系統(tǒng),技術(shù)實(shí)現(xiàn)方案如下-SoC集成電路版圖的自動(dòng)布局任務(wù)是要把該電路中的模組、宏單元及標(biāo)準(zhǔn)單元自動(dòng)地 按電路性能要求放入到指定的空間中,如
圖1所示,引腳PAD組內(nèi)的空間即為布局的空間, 通常布局的空間與引腳PAD組間預(yù)留一定的空間用于電源及內(nèi)部部件與引腳之間的連線, 圖l中的虛線框內(nèi)即為布局空間模組(或稱軟模組)是指該模組內(nèi)的布局還未完成,模 組的邊界未定,可以在布局過(guò)程中改變,模組可以有多個(gè),本例中為S1;宏單元是指已完 成設(shè)計(jì)的子電路,宏單元的面積、高度通常比較大,而且邊界是確定的,本例中的宏單元 為M1, M2, ... M6;標(biāo)準(zhǔn)單元是指具有統(tǒng)一高度的已設(shè)計(jì)完成的基本單元電路,通常指 與非門(mén)等基本邏輯單元, 一個(gè)電路中有大量的標(biāo)準(zhǔn)單元邏輯門(mén)。自動(dòng)布局的過(guò)程是把上述 的模組、宏單元及標(biāo)準(zhǔn)單元按電路要求最優(yōu)化地放置到布局空間中。布局的具體過(guò)程及確 保收斂的步驟如下1. 標(biāo)準(zhǔn)單元集合提取由于標(biāo)準(zhǔn)單元的數(shù)量極大,不利于布局算法的收斂及計(jì)算機(jī)資源的利用。每個(gè)標(biāo)準(zhǔn)單 元稱為一個(gè)節(jié)點(diǎn),為了簡(jiǎn)化太多節(jié)點(diǎn)所造成的算法復(fù)雜化,需對(duì)原來(lái)的節(jié)點(diǎn)圖進(jìn)行提取。 把關(guān)系密切的多個(gè)標(biāo)準(zhǔn)單元節(jié)點(diǎn)組成一個(gè)集合(Cluster),用集合當(dāng)作新的節(jié)點(diǎn),大大簡(jiǎn)化 了原來(lái)的節(jié)點(diǎn)圖,如圖2中灰色部分所示。這一簡(jiǎn)化節(jié)點(diǎn)圖的算法稱為Hyper-Graph方法, 可從公開(kāi)文獻(xiàn)中找到。2. 4-分法分割給定的布局空間如圖3所示,把一個(gè)給定的布局空間平均地分成4等份,如圖中Q0, Ql, Q2, Q3 ,并計(jì)算出每個(gè)區(qū)域的中心位置p0, pl, p2, p3作為布局時(shí)節(jié)點(diǎn)所處的坐標(biāo)。3. 初始布局隨機(jī)地把所有節(jié)點(diǎn)一個(gè)一個(gè)地分布到以上所分的區(qū)域中的中心位置上,并確保每個(gè)區(qū) 域中所分到的節(jié)點(diǎn)的總面積不會(huì)超過(guò)給定區(qū)域所容許的面積,如圖4所示。4. 布局優(yōu)化如圖5所示,布局優(yōu)化的過(guò)程是把所有節(jié)點(diǎn)在不同的區(qū)域中進(jìn)行交換,并計(jì)算交換后 的目標(biāo)函數(shù)值,當(dāng)所有節(jié)點(diǎn)都交換一次后結(jié)束,并把具有最小目標(biāo)函數(shù)值的布局找出來(lái)作 為結(jié)果,具體過(guò)程如下(4.1) 計(jì)算當(dāng)前布局的目標(biāo)函數(shù)值,目標(biāo)函數(shù)一般有節(jié)點(diǎn)間的連線長(zhǎng)度、時(shí)域延遲、 連線密度等構(gòu)成;(4.2) 計(jì)算每一個(gè)節(jié)點(diǎn)對(duì)于當(dāng)前目標(biāo)函數(shù)值的貢獻(xiàn)值,并把其對(duì)于其他區(qū)域的貢獻(xiàn) 值也計(jì)算出來(lái),并按最大值至最小值遞降排序;(4.3) 選擇當(dāng)前排序中處于最前面的節(jié)點(diǎn),并選擇與之函數(shù)值最大的一個(gè)區(qū)域,進(jìn) 行節(jié)點(diǎn)交換,并保證相關(guān)區(qū)域的面積不超過(guò)區(qū)域所容許的極限,超過(guò)區(qū)域面積極限者不進(jìn) 行交換處理;(4.4) 記錄每一次交換的過(guò)程,并計(jì)算此時(shí)的目標(biāo)函數(shù)值;(4.5) 重復(fù)過(guò)程(4.2) - (4.4),直至所有的節(jié)點(diǎn)都遍歷一次且每個(gè)節(jié)點(diǎn)只遍歷一次;(4.6) 在交換過(guò)程的歷史記錄中,找出具有最小目標(biāo)函數(shù)值的交換位置,抹去該位 置以后的所有交換,此位置之前的節(jié)點(diǎn)交換記錄即是找到最佳布局的過(guò)程。5. 模組與宏單元布局對(duì)模組與宏單元在相應(yīng)的區(qū)域中進(jìn)行布局,如圖6所示。具體步驟如下(5.1) 標(biāo)記模組及宏單元,區(qū)分已布局的與未布局的;(5.2) 在所有模組及宏單元中進(jìn)行一次評(píng)估,評(píng)估的標(biāo)準(zhǔn)是在所有可放置模塊的空 間中,對(duì)每一個(gè)模塊進(jìn)行一次試探性的放置,并計(jì)算其連線長(zhǎng)度、擁擠程度、時(shí)域性能等指標(biāo)S(5.3) 對(duì)步驟(5.2)中的所有結(jié)果進(jìn)行排隊(duì),在隊(duì)列中找出一個(gè)最適合的模塊進(jìn)行放置;(5.4) 重復(fù)步驟(5.2)和(5.3),直至所有的模塊放置完畢。6. 標(biāo)準(zhǔn)單元集合布局當(dāng)模組和宏單元布局后,進(jìn)行標(biāo)準(zhǔn)單元集合的布局,如圖7所示,具體步驟如下(6.1) 選擇一個(gè)區(qū)域,比如Q0區(qū),并把標(biāo)準(zhǔn)單元集合從原來(lái)位置上卸下;(6.2) 把空置區(qū)域劃分成面積相當(dāng)?shù)?份或2份,劃分方式則根據(jù)空置區(qū)域的形狀, 本例中為2份,并把集合節(jié)點(diǎn)隨機(jī)地分配到區(qū)域中,使得每個(gè)節(jié)點(diǎn)都有一個(gè)區(qū)域,但每個(gè) 區(qū)域中的節(jié)點(diǎn)總面積不超過(guò)該區(qū)域所容許的總面積;(6.3) 調(diào)用步驟4的布局優(yōu)化過(guò)程,進(jìn)行標(biāo)準(zhǔn)單元集合的布局優(yōu)化過(guò)程;(6.4) 重復(fù)過(guò)程(6.1)至(6.3),直至所有4個(gè)區(qū)域都完成;(6.5) 對(duì)于以上產(chǎn)生的每一個(gè)子區(qū)域,判別區(qū)域內(nèi)是否具有2個(gè)或以上的集合,如 果是,則重復(fù)(6.1)至(6.4)的過(guò)程;(6.6) 重復(fù)過(guò)程(6.1)至(6.5),直至每個(gè)子區(qū)域包含不超過(guò)1個(gè)集合,標(biāo)準(zhǔn)單元 集合的布局過(guò)程結(jié)束。7. 產(chǎn)生N1個(gè)初始全局布局(7.1) 重復(fù)步驟3至6N0次,生成NO個(gè)初始布局,并記錄下來(lái),這里N021, NO為用戶給定或內(nèi)部設(shè)定;(7.2) 按目標(biāo)函數(shù)評(píng)估NO個(gè)布局,并根據(jù)目標(biāo)函數(shù)值排隊(duì);(7.3) 根據(jù)目標(biāo)函數(shù)排隊(duì)結(jié)果,保留最好的N1個(gè)布局(這里N1^N0及N1^N2, N2為最終布局?jǐn)?shù),N2^1),丟棄其他的布局結(jié)果。8. Nl個(gè)初始全局布局的二次優(yōu)化(8.1) 對(duì)于步驟7中的布局結(jié)果,置模組和宏單元的布局狀態(tài)為"未布局";(8.2) 重復(fù)步驟5和6N1次,產(chǎn)生N1個(gè)新的布局;(8.3) 按目標(biāo)函數(shù)評(píng)估N1個(gè)布局,并根據(jù)目標(biāo)函數(shù)值排隊(duì);(8.4) 根據(jù)目標(biāo)函數(shù)排隊(duì)結(jié)果,保留最好的N2個(gè)布局(N1^N2, N2為最終布局 數(shù),N2d)為最終的一組全局布局,丟棄其他的布局結(jié)果,全局布局收斂結(jié)束。9. 選擇一個(gè)最好的全局布局結(jié)果作為標(biāo)準(zhǔn)單元布局的起點(diǎn),選擇過(guò)程可以是自動(dòng)或 人工。10. 生成標(biāo)準(zhǔn)單元槽(ROW),如圖8所示。標(biāo)準(zhǔn)單元槽用來(lái)放置標(biāo)準(zhǔn)單元,標(biāo)準(zhǔn)單 元只能在槽里面放置。標(biāo)準(zhǔn)單元槽的生成可為人工或自動(dòng)。11. 標(biāo)準(zhǔn)單元布局初始化(11.1) 計(jì)算標(biāo)準(zhǔn)單元槽的實(shí)際面積,并按步驟2的方法劃分布局區(qū)域;(11.2) 調(diào)用步驟6的過(guò)程對(duì)標(biāo)準(zhǔn)單元集合進(jìn)行布局;(U.3)對(duì)每一個(gè)標(biāo)準(zhǔn)單元集合中的標(biāo)準(zhǔn)單元賦予隨機(jī)坐標(biāo)值,坐標(biāo)值得范圍必須在標(biāo) 準(zhǔn)單元集合所處區(qū)域的坐標(biāo)范圍附近,如圖9所示。12. 標(biāo)準(zhǔn)單元布局(12.1) 定義一個(gè)布局4分區(qū)域,該區(qū)域應(yīng)包含完整的標(biāo)準(zhǔn)單元槽,并在上下含有 相同數(shù)目的標(biāo)準(zhǔn)單元槽,如圖10所示;(12.2) 把以上區(qū)域放在包含標(biāo)準(zhǔn)單元槽的一個(gè)起始位置;(12.3) 把落在該區(qū)域中的標(biāo)準(zhǔn)單元放入相關(guān)的子區(qū)域中,調(diào)用步驟4的優(yōu)化過(guò)程, 使得標(biāo)準(zhǔn)單元在該子區(qū)域中的位置達(dá)到優(yōu)化分配;(12.4) 移動(dòng)以上布局4分區(qū)域,調(diào)用步驟(12.3),直到標(biāo)準(zhǔn)單元布局區(qū)域內(nèi)的所 有位置都被覆蓋到后結(jié)束該過(guò)程;(12.5) 縮小布局4分區(qū)面積,重復(fù)(12.2)至(12.4)的過(guò)程,直至布局4分區(qū)的 高度小于2個(gè)標(biāo)準(zhǔn)單元槽高度而結(jié)束;(12.6) 標(biāo)準(zhǔn)單元布局結(jié)果如圖11所示。13. 模組、宏單元、標(biāo)準(zhǔn)單元同步布局收斂方法流程(13.1)如圖12所示,本發(fā)明的布局收斂方法實(shí)現(xiàn)于布局程序系統(tǒng)中。(13.11)(13.12) 進(jìn)入(13.13);(13.13)(13.2) 程序開(kāi)始,設(shè)置初始布局生成數(shù)NO,最終布局生成數(shù)N2,其中,N02N2;(13.3) 提取標(biāo)準(zhǔn)單元集合;(13.4) 用4-分法分割布局區(qū)域;(13.5) 設(shè)置剩余未完成的布局?jǐn)?shù)r^NO;(13.6) 置當(dāng)前剩余未完成的布局?jǐn)?shù)i^n-l;(13.7) 進(jìn)行步驟3所示的初始布局;(13.8) 用步驟4所示的4-區(qū)域優(yōu)化程序優(yōu)化當(dāng)前布局;(13.9) 對(duì)模組及宏單元進(jìn)行布局;(13.10) 對(duì)標(biāo)準(zhǔn)單元集合進(jìn)行布局; 第一階段的全局布局結(jié)束,把結(jié)果存儲(chǔ)起來(lái);判別當(dāng)前剩余布局?jǐn)?shù)是否大于0,如果是,則程序回到(13.6),否則,對(duì)在第一階段已完成的NO個(gè)布局進(jìn)行評(píng)估,按目標(biāo)函數(shù)值進(jìn)行排隊(duì), 選擇最好的N1個(gè)布局結(jié)果作為第二階段的布局起點(diǎn),這里N1的選擇原則為N2^N1SN0; (13.14) 設(shè)置剩余未完成布局?jǐn)?shù)n-Nl;置當(dāng)前剩余未完成布局?jǐn)?shù)n=n-l; 置當(dāng)前模組及宏單元的布局狀態(tài)為"未布局'(13.15)(13.16)對(duì)模組及宏單元進(jìn)行布局;局;(13.17) 置當(dāng)前標(biāo)準(zhǔn)單元集合的布局狀態(tài)為"未布局",對(duì)標(biāo)準(zhǔn)單元集合進(jìn)行布(13.18)(13.19) 進(jìn)入(13.20);(13.20)記錄當(dāng)前布局結(jié)果;判別當(dāng)前剩余布局?jǐn)?shù)是否大于O,如果是,則程序回到(13.15),否則,對(duì)在第二階段已完成的N1個(gè)布局進(jìn)行評(píng)估,按目標(biāo)函數(shù)值進(jìn)行排隊(duì), 選擇最好的N2個(gè)布局結(jié)果作為最終的全局布局結(jié)果,至此,全局布局已收斂,并產(chǎn)生一 組最好的全局布局結(jié)果作為標(biāo)準(zhǔn)單元的布局輸入;(13.21) 選擇一個(gè)合適的全局布局,通常由人工選擇較合適;(13.22) 生成標(biāo)準(zhǔn)單元布局槽;(13.23) 按步驟ll所述的方法進(jìn)行布局初始化;(13.24) 按步驟12所述的方法進(jìn)行標(biāo)準(zhǔn)單元布局程序;(13.25) 模組、宏單元及標(biāo)準(zhǔn)單元布局收斂結(jié)束。 14.模組、宏單元、標(biāo)準(zhǔn)單元布局的收斂方法和系統(tǒng)的運(yùn)行環(huán)境(14.1) 本發(fā)明的布局系統(tǒng)運(yùn)行在計(jì)算機(jī)系統(tǒng)中,如圖13所示;(14.2) 首先把本系統(tǒng)載入計(jì)算機(jī)系統(tǒng)的CPU及相應(yīng)存儲(chǔ)單元中,同時(shí)打開(kāi)所 需布局的SoC集成電路線路及初始設(shè)置,系統(tǒng)即可生成相應(yīng)的布局圖。附田說(shuō)明圖1所需布局的SoC集成電路版圖示意圖。本圖所示為自動(dòng)布局前的集成電路版圖狀 態(tài)。圖的左邊為需要布局的空間,引腳PAD已預(yù)先排列完成,所有的電路單元都需要布局 在這一空間中。右邊的分別為軟模組、宏單元組、標(biāo)準(zhǔn)單元組。圖2標(biāo)準(zhǔn)單元集合提取示意圖。本圖所示為同步自動(dòng)布局中的標(biāo)準(zhǔn)單元聯(lián)結(jié)圖的集合 提取(Clustering)。每個(gè)標(biāo)準(zhǔn)單元稱為一個(gè)節(jié)點(diǎn),為了簡(jiǎn)化太多節(jié)點(diǎn)所造成的算法復(fù)雜化, 需對(duì)原來(lái)的節(jié)點(diǎn)圖進(jìn)行提取。把關(guān)系密切的多個(gè)標(biāo)準(zhǔn)單元節(jié)點(diǎn)組成一個(gè)集合(Cluster),用 集合當(dāng)作新的節(jié)點(diǎn),大大簡(jiǎn)化了原來(lái)的節(jié)點(diǎn)圖,如圖中灰色部分所示。這一簡(jiǎn)化節(jié)點(diǎn)圖的 算法稱為Hyper-Graph方法,可從公開(kāi)文獻(xiàn)中找到。圖3布局區(qū)域的4-分法示意圖。本圖所示為4分布局區(qū)域,分為Q0, Ql, Q2, Q3 四個(gè)區(qū)域,每個(gè)區(qū)域的中心點(diǎn)位置設(shè)定為該區(qū)域的布局坐標(biāo),如圖中p0,pl,p2,p3。圖4以隨機(jī)方法進(jìn)行節(jié)點(diǎn)的初始布局示意圖。本圖所示為4分法初始布局。隨機(jī)地把 軟模組、宏單元、標(biāo)準(zhǔn)單元集合放入4個(gè)區(qū)域中的一個(gè)區(qū)域,直到放入的節(jié)點(diǎn)總面積大于 該區(qū)域的面積。圖5用4-分法優(yōu)化布局過(guò)程示意圖。本圖所示為4分法優(yōu)化布局過(guò)程及其結(jié)果。1.計(jì) 算當(dāng)前布局的目標(biāo)函數(shù)值,目標(biāo)函數(shù)一般有節(jié)點(diǎn)間的連線長(zhǎng)度、時(shí)域延遲、連線密度等構(gòu) 成。2.計(jì)算每一個(gè)節(jié)點(diǎn)對(duì)于當(dāng)前目標(biāo)函數(shù)值的貢獻(xiàn)值,并把其對(duì)于其他區(qū)域的貢獻(xiàn)值也計(jì) 算出來(lái),并按最大值至最小值遞降排序;3.選擇當(dāng)前排序中處于最前面的節(jié)點(diǎn),并選擇與 之函數(shù)值最大的區(qū)域,進(jìn)行節(jié)點(diǎn)交換,并保證相關(guān)區(qū)域的面積不超過(guò)區(qū)域所容許的極限, 超過(guò)區(qū)域面積極限者不進(jìn)行交換處理;4.記錄每一次交換的過(guò)程,并計(jì)算此時(shí)的目標(biāo)函數(shù) 值;5.重復(fù)過(guò)程2-4,直至所有的節(jié)點(diǎn)都遍歷一次且每個(gè)節(jié)點(diǎn)只遍歷一次;6.在交換過(guò)程 的歷史記錄中,找出具有最小目標(biāo)函數(shù)值的交換位置,抹去該位置以后的所有交換,此位 置之前的節(jié)點(diǎn)交換記錄即是找到最佳布局的過(guò)程。圖6軟模組、宏單元布局過(guò)程示意圖。本圖所示為軟模組及宏單元的布局過(guò)程及其結(jié) 果。1、標(biāo)記軟模組及宏單元,區(qū)分已布局的與未布局的;2、在所有軟模組及宏單元中進(jìn) 行一次評(píng)估,評(píng)估的標(biāo)準(zhǔn)是在所有可放置模塊的空間中,對(duì)每一個(gè)模塊進(jìn)行一次試探性的 放置,并計(jì)算其連線長(zhǎng)度、擁擠程度、時(shí)域性能等指標(biāo);3、對(duì)步驟2中的所有結(jié)果進(jìn)行
排隊(duì),在隊(duì)列中找出一個(gè)最適合的模塊進(jìn)行放置,如圖中Q2區(qū)中的M4宏單元;4、重復(fù) 歩驟2和3,直至所有的模塊放置完畢。圖7標(biāo)準(zhǔn)單元集合布局過(guò)程示意圖。本圖所示為標(biāo)準(zhǔn)單元集會(huì)層次式的布局過(guò)程及其 結(jié)果。1、選擇一個(gè)區(qū)域,比如Q0區(qū),并把標(biāo)準(zhǔn)單元集合從原來(lái)位置上卸下;2、把空置 區(qū)域劃分成面積相當(dāng)?shù)?份或2份,劃分方式則根據(jù)空置區(qū)域的形狀,本例中為2份,并 把集合節(jié)點(diǎn)隨機(jī)地分配到區(qū)域中,使得每個(gè)節(jié)點(diǎn)都在一個(gè)區(qū)域,但每個(gè)區(qū)域中的節(jié)點(diǎn)總面 積不超過(guò)該區(qū)域所容許的總面積;3、調(diào)用圖4中所示的4分法布局算法,優(yōu)化布局結(jié)果; 4、重復(fù)過(guò)程1-3,直至所有4個(gè)區(qū)域都完成;5、對(duì)于以上產(chǎn)生的每一個(gè)子區(qū)域,判別區(qū) 域內(nèi)是否具有2個(gè)或以上的集合,如果是,則重復(fù)2-4的過(guò)程;6、重復(fù)過(guò)程l-5,直至每 個(gè)子區(qū)域包含不超過(guò)1個(gè)集合,布局過(guò)程結(jié)束。圖8標(biāo)準(zhǔn)單元布局前的標(biāo)準(zhǔn)單元槽生成示意圖。本圖所示為標(biāo)準(zhǔn)單元布局前的標(biāo)準(zhǔn) 單元槽(ROW)的確定。標(biāo)準(zhǔn)單元槽用來(lái)放置標(biāo)準(zhǔn)單元,標(biāo)準(zhǔn)單元只能在槽里面放置。標(biāo) 準(zhǔn)單元槽的生成可為人工或自動(dòng)。圖9標(biāo)準(zhǔn)單元布局初始化示意圖。本圖所示為標(biāo)準(zhǔn)單元布局的初始化過(guò)程。把標(biāo)準(zhǔn) 單元集合中的標(biāo)準(zhǔn)單元在集合所在區(qū)域附近隨機(jī)地放入標(biāo)準(zhǔn)單元槽。圖10標(biāo)準(zhǔn)單元在區(qū)域中布局優(yōu)化過(guò)程示意圖。本圖所示為標(biāo)準(zhǔn)單元的布局過(guò)程。定 義一定大小的布局4分區(qū)域,把該區(qū)域在標(biāo)準(zhǔn)單元布局空間依次移動(dòng),對(duì)于落在該區(qū)域的 標(biāo)準(zhǔn)單元迸行優(yōu)化,使得標(biāo)準(zhǔn)單元在4分區(qū)中的位置更優(yōu)化,優(yōu)化過(guò)程與圖5中的優(yōu)化過(guò) 程相同。圖11標(biāo)準(zhǔn)單元布局結(jié)果示意圖。 圖12布局系統(tǒng)流程示意圖。圖13布局系統(tǒng)所運(yùn)行的計(jì)算機(jī)環(huán)境示意圖。左圖為計(jì)算機(jī)硬件結(jié)構(gòu)。右表為計(jì) 算機(jī)軟件結(jié)構(gòu)具體實(shí)施方式
(1) 選擇一臺(tái)計(jì)算機(jī),內(nèi)存為512MB,硬盤(pán)為80GB,操作系統(tǒng)為L(zhǎng)inux Fedora 6.0;(2) 啟動(dòng)本發(fā)明的布局系統(tǒng);(3) 在布局系統(tǒng)中打開(kāi)一個(gè)集成電路數(shù)據(jù)庫(kù);(4) 啟動(dòng)"全局布局"命令,全局布局就開(kāi)始運(yùn)行了;(5) 待布局過(guò)程結(jié)束,有一組全周布局圖產(chǎn)生;(6) 選擇一個(gè)全局布局圖,生成相應(yīng)的標(biāo)準(zhǔn)單元槽;(7) 啟動(dòng)"標(biāo)準(zhǔn)單元布局"命令,標(biāo)準(zhǔn)單元的布局即開(kāi)始;
(8)等待標(biāo)準(zhǔn)單元布局過(guò)程結(jié)束,完整的布局過(guò)程就完成。
權(quán)利要求
1、 一種自動(dòng)布局設(shè)計(jì)中的模組、宏單元、標(biāo)準(zhǔn)單元同步布局的收斂方法和系統(tǒng),其 特征在于集成電路版圖中包含引腳PAD組、模組(或稱軟模組)(Soft Block)、宏單元(Macro Cell)及標(biāo)準(zhǔn)單元(Standard Cell);引腳PAD組內(nèi)的空間為布局空間,布局空間與引腳PAD 組間預(yù)留一定的空間用于電源及內(nèi)部部件與引腳之間的連線;模組內(nèi)的布局還未完成,其 邊界可以改變;宏單元的面積、高度通常比較大,且邊界是確定的;標(biāo)準(zhǔn)單元具有統(tǒng)一高 度的己設(shè)計(jì)完成的基本單元電路。
2、 根據(jù)權(quán)利要求1所述的自動(dòng)布局設(shè)計(jì)中的模組、宏單元、標(biāo)準(zhǔn)單元同步布局的收 斂方法和系統(tǒng),其特征在于對(duì)于所述的模組、宏單元、標(biāo)準(zhǔn)單元且具有相同或不同的幾何 尺寸、互相連接,不具有在布局空間中的合法位置,需要自動(dòng)地以最優(yōu)化的方法放置到布 局空間中。
3、 一種模組、宏單元、標(biāo)準(zhǔn)單元自動(dòng)布局的收斂方法,使用權(quán)利2所述的布局系統(tǒng), 其特征在于具體步驟如下(1) 標(biāo)準(zhǔn)單元集合提取把關(guān)系密切的多個(gè)標(biāo)準(zhǔn)單元節(jié)點(diǎn)提取成一個(gè)集合(Cluster),用集合當(dāng)作新的節(jié)點(diǎn)。(2) 4-分法分割給定的布局空間把一個(gè)給定的布局空間平均地分成4等份,并計(jì)算出每個(gè)區(qū)域的中心位置作為布局時(shí) 節(jié)點(diǎn)所處的坐標(biāo)。(3) 初始布局隨機(jī)地把所有節(jié)點(diǎn)一個(gè)一個(gè)地分布到以上所分的區(qū)域中的中心位置上,并確保每個(gè)區(qū) 域中所分到的節(jié)點(diǎn)的總面積不會(huì)超過(guò)給定區(qū)域所容許的面積。(4) 布局優(yōu)化對(duì)所有節(jié)點(diǎn)在不同的區(qū)域中進(jìn)行交換,并計(jì)算交換后的目標(biāo)函數(shù)值,當(dāng)所有節(jié)點(diǎn)都交 換--次后結(jié)束,并把具有最小目標(biāo)函數(shù)值的布局找出來(lái)作為結(jié)果,具體過(guò)程如下(4.1) 計(jì)算當(dāng)前布局的目標(biāo)函數(shù)值,目標(biāo)函數(shù)一般有節(jié)點(diǎn)間的連線長(zhǎng)度、時(shí)域延遲、 連線密度等構(gòu)成;(4.2) 計(jì)算每一個(gè)節(jié)點(diǎn)對(duì)于當(dāng)前目標(biāo)函數(shù)值的貢獻(xiàn)值,并把其對(duì)于其他區(qū)域的貢獻(xiàn) 值也計(jì)算出來(lái),并按最大值至最小值遞降排序;(4.3) 選擇當(dāng)前排序中處于最前面的節(jié)點(diǎn),并選擇與之函數(shù)值最大的一個(gè)區(qū)域,進(jìn) 行節(jié)點(diǎn)交換,并保證相關(guān)區(qū)域的面積不超過(guò)區(qū)域所容許的極限,超過(guò)區(qū)域面積極限者不進(jìn) 行交換處理;(4.4) 記錄每一次交換的過(guò)程,并計(jì)算此時(shí)的目標(biāo)函數(shù)值;(4.5) 重復(fù)過(guò)程(4.2) - (4.4),直至所有的節(jié)點(diǎn)都遍歷一次且每個(gè)節(jié)點(diǎn)只遍歷一次;(4.6) 在交換過(guò)程的歷史記錄中,找出具有最小目標(biāo)函數(shù)值的交換位置,抹去該位 置以后的所有交換,此位置之前的節(jié)點(diǎn)交換記錄即是找到最佳布局的過(guò)程。(5) 模組與宏單元布局對(duì)模組與宏單元在相應(yīng)的區(qū)域中進(jìn)行布局。具體步驟如下(5.1) 標(biāo)記軟模組及宏單元,區(qū)分已布局的與未布局的;(5.2) 在所有未布局的模組及宏單元中進(jìn)行一次評(píng)估,評(píng)估的標(biāo)準(zhǔn)是在所有可放置 模塊的空間中,對(duì)每一個(gè)模塊進(jìn)行一次試探性的放置,并計(jì)算其連線長(zhǎng)度、擁擠程度、時(shí) 域性能等指標(biāo);(5.3) 對(duì)步驟(5.2)中的所有結(jié)果進(jìn)行排隊(duì),在隊(duì)列中找出一個(gè)最適合的模塊進(jìn)行放置;(5.4) 重復(fù)步驟(5.2)和(5.3),直至所有的模塊放置完畢。(6) 標(biāo)準(zhǔn)單元集合布局當(dāng)模組和宏單元布局后,進(jìn)行標(biāo)準(zhǔn)單元集合的布局,具體步驟如下(6.1) 選擇一個(gè)區(qū)域,比如Q0區(qū),并把標(biāo)準(zhǔn)單元集合從原來(lái)位置上卸下;(6.2) 把空置區(qū)域劃分成面積相當(dāng)?shù)?份或2份,劃分方式則根據(jù)空置區(qū)域的形狀, 本例中為2份,并把集合節(jié)點(diǎn)隨機(jī)地分配到區(qū)域中,使得每個(gè)節(jié)點(diǎn)都有一個(gè)區(qū)域,但每個(gè) 區(qū)域中的節(jié)點(diǎn)總面積不超過(guò)該區(qū)域所容許的總面積;(6.3) 調(diào)用步驟(4)的布局優(yōu)化過(guò)程,進(jìn)行標(biāo)準(zhǔn)單元集合的布局優(yōu)化過(guò)程;(6.4) 重復(fù)過(guò)程(6.1)至(6.3),直至所有4個(gè)區(qū)域都完成;(6.5) 對(duì)于以上產(chǎn)生的每一個(gè)子區(qū)域,判別區(qū)域內(nèi)是否具有2個(gè)或以上的集合,如 果是,則重復(fù)(6.1)至(6.4)的過(guò)程;(6.6) 重復(fù)過(guò)程(6.1)至(6.5),直至每個(gè)子區(qū)域包含不超過(guò)1個(gè)集合,標(biāo)準(zhǔn)單元 集合的布局過(guò)程結(jié)束。(7) 產(chǎn)生N1個(gè)初始全局布局(7.4) 重復(fù)步驟(3)至(6) N0次,生成NO個(gè)初始布局,并記錄下來(lái);(7.5) 按目標(biāo)函數(shù)評(píng)估NO個(gè)布局,并根據(jù)目標(biāo)函數(shù)值排隊(duì);(7.6) 根據(jù)目標(biāo)函數(shù)排隊(duì)結(jié)果,保留最好的N1個(gè)布局,丟棄其他的布局結(jié)果。(8) Nl個(gè)初始全局布局的二次優(yōu)化(8.1) 對(duì)于步驟(7)中的布局結(jié)果,置模組和宏單元的布局狀態(tài)為"未布局";(8.2) 重復(fù)步驟(5)和(6) Nl次,產(chǎn)生N1個(gè)新的布局;(8.3) 按目標(biāo)函數(shù)評(píng)估N1個(gè)布局,并根據(jù)目標(biāo)函數(shù)值排隊(duì);(8.4) 根據(jù)目標(biāo)函數(shù)排隊(duì)結(jié)果,保留最好的N2個(gè)布局為最終的一組全局布局,丟棄 其他的布局結(jié)果,全局布局收斂結(jié)束。(9) 選擇一個(gè)最好的全局布局結(jié)果作為標(biāo)準(zhǔn)單元布局的起點(diǎn),選擇過(guò)程可以是自動(dòng) 或人工。(10) 生成標(biāo)準(zhǔn)單元槽(ROW)。(11) 標(biāo)準(zhǔn)單元布局初始化(11.1) 計(jì)算標(biāo)準(zhǔn)單元槽的實(shí)際面積,并按步驟(2)的方法劃分布局區(qū)域;(11.2) 調(diào)用步驟(6)的過(guò)程對(duì)標(biāo)準(zhǔn)單元集合進(jìn)行布局;(11.3) 對(duì)每一個(gè)標(biāo)準(zhǔn)單元集合中的標(biāo)準(zhǔn)單元賦予隨機(jī)坐標(biāo)值,坐標(biāo)值得范圍必須在 標(biāo)準(zhǔn)單元集合所處區(qū)域的坐標(biāo)范圍附近。(12) 標(biāo)準(zhǔn)單元布局(12.1) 定義一個(gè)布局4分區(qū)域,該區(qū)域應(yīng)包含完整的標(biāo)準(zhǔn)單元槽,并在上下含有 相同數(shù)目的標(biāo)準(zhǔn)單元槽;(12.2) 把以上區(qū)域放在包含標(biāo)準(zhǔn)單元槽的一個(gè)起始位置;(12.3) 把落在該區(qū)域中的標(biāo)準(zhǔn)單元放入相關(guān)的子區(qū)域中,調(diào)用步驟(4)的優(yōu)化 過(guò)程,使得標(biāo)準(zhǔn)單元在該子區(qū)域中的位置達(dá)到優(yōu)化分配;(12.4) 移動(dòng)以上布局4分區(qū)域,調(diào)用步驟(12.3),直到標(biāo)準(zhǔn)單元布局區(qū)域內(nèi)的所 有位置都被覆蓋到后結(jié)束該過(guò)程;(12.5) 縮小布局4分區(qū)面積,重復(fù)(12.2)至(12.4)的過(guò)程,直至布局4分區(qū) 的高度小于2個(gè)標(biāo)準(zhǔn)單元槽高度而結(jié)束;
4、 根據(jù)權(quán)利要求3所述的自動(dòng)布局設(shè)計(jì)中的模組、宏單元、標(biāo)準(zhǔn)單元同步布局的收 斂方法,其特征在于所述的NO可以人工設(shè)置,且N021。
5、 根據(jù)權(quán)利要求3所述的自動(dòng)布局設(shè)計(jì)中的模組、宏單元、標(biāo)準(zhǔn)單元同步布局的收 斂方法,其特征在于所述的N1在系統(tǒng)內(nèi)部設(shè)置,且N1^N0。
6、 根據(jù)權(quán)利要求3所述的自動(dòng)布局設(shè)計(jì)中的模組、宏單元、標(biāo)準(zhǔn)單元同步布局的收 斂方法,其特征在于所述的N2可以人工設(shè)置,且N2^N0。
7、 根據(jù)權(quán)利要求3所述的自動(dòng)布局設(shè)計(jì)中的模組、宏單元、標(biāo)準(zhǔn)單元同步布局的收 斂方法,其特征在于所述的自動(dòng)布局過(guò)程是-個(gè)布局?jǐn)?shù)是一個(gè)逐步減少的過(guò)程。
8、 根據(jù)權(quán)利要求3所述的自動(dòng)布局設(shè)計(jì)中的模組、宏單元、標(biāo)準(zhǔn)單元同步布局的收 斂方法,其特征在于所述的自動(dòng)布局過(guò)程通過(guò)二次或以上獨(dú)立的模組宏單元布局及標(biāo)準(zhǔn)單 元集合布局,且每次獨(dú)立布局的初始狀態(tài)不同。
9、 根據(jù)權(quán)利要求8所述的自動(dòng)布局設(shè)計(jì)中的模組、宏單元、標(biāo)準(zhǔn)單元同步布局的收 斂方法,其特征在于所述的模組及宏單元布局采用上一次標(biāo)準(zhǔn)單元集合布局的結(jié)果作為初 始條件。
10、 根據(jù)權(quán)利要求8所述的自動(dòng)布局設(shè)計(jì)中的模組、宏單元、標(biāo)準(zhǔn)單元同步布局的收 斂方法,其特征在于所述的標(biāo)準(zhǔn)單元集合布局采用上一次模組及宏單元布局的結(jié)果作為初始條件。
11、 根據(jù)權(quán)利要求3所述的自動(dòng)布局設(shè)計(jì)中的模組、宏單元、標(biāo)準(zhǔn)單元同步布局的收 斂方法,其特征在于所述的布局結(jié)果是一組全局布局結(jié)果,且布局結(jié)果數(shù)^1。
12、 根據(jù)權(quán)利要求3所述的自動(dòng)布局設(shè)計(jì)中的模組、宏單元、標(biāo)準(zhǔn)單元同步布局的收 斂方法,其特征在于所述的標(biāo)準(zhǔn)單元的布局是從權(quán)利11所述的其中一個(gè)全局布局作為初始布局。
13、 根據(jù)權(quán)利要求3所述的自動(dòng)布局設(shè)計(jì)中的模組、宏單元、標(biāo)準(zhǔn)單元同步布局的收 斂方法,其特征在于所述的標(biāo)準(zhǔn)單元布局是在全局布局完成后進(jìn)行。
全文摘要
本發(fā)明屬于半導(dǎo)體微電子技術(shù)領(lǐng)域,具體涉及一種集成電路版圖自動(dòng)布局設(shè)計(jì)中的模組、宏單元、標(biāo)準(zhǔn)單元同步布局的收斂方法和系統(tǒng)。該系統(tǒng)針對(duì)軟模組、宏單元及標(biāo)準(zhǔn)單元同時(shí)存在的情況下,首先產(chǎn)生一組數(shù)量較大的初始布局,并對(duì)初始布局進(jìn)行軟模組和宏單元布局,再對(duì)標(biāo)準(zhǔn)單元集合布局,生成一組全局布局,然后對(duì)這組全局布局進(jìn)行評(píng)估,把評(píng)估結(jié)果最好的一組數(shù)量較小的全局布局作為下一步的初始布局,再進(jìn)行新的軟模組和宏單元布局及標(biāo)準(zhǔn)單元集合布局,并進(jìn)行新一輪布局評(píng)估,保留一組結(jié)果最好的全局布局,由用戶選擇一個(gè)最合適的全局布局作為標(biāo)準(zhǔn)單元布局的起點(diǎn),達(dá)到快速收斂的目的,從而可以對(duì)包含大量宏單元、軟模組及大量標(biāo)準(zhǔn)單元的SoC集成電路進(jìn)行快速的布局,并可以生成布局面積小、連通程度高的集成電路布局,同時(shí)不受電路規(guī)模的限制。
文檔編號(hào)G06F17/50GK101145169SQ20071009386
公開(kāi)日2008年3月19日 申請(qǐng)日期2007年6月14日 優(yōu)先權(quán)日2007年6月14日
發(fā)明者震 蔡 申請(qǐng)人:上海芯域微電子有限公司