本發(fā)明涉及一種用于求解vlsi不可二劃分版圖規(guī)劃設(shè)計方法,
背景技術(shù):
近年來,隨著集成電路制造工藝的迅速發(fā)展,集成電路產(chǎn)業(yè)已經(jīng)進入了納米工藝時代,芯片的集成度進一步提高,一塊芯片上所能集成的電路元件越來越多,對vlsi設(shè)計方法提出了更高的要求。版圖規(guī)劃是vlsi物理設(shè)計過程中非常重要的一個環(huán)節(jié),對集成電路的性能指標(biāo),如可布通性、時延特性、功耗、電路可靠性等有重大影響。隨著版圖規(guī)劃問題的約束不斷增多和芯片上單元個數(shù)的快速增長,對vlsi版圖規(guī)劃問題的算法設(shè)計提出了巨大的挑戰(zhàn)。因此,尋求更高效、更實用的集成電路版圖規(guī)劃設(shè)計算法具有重要的意義。
用來解決vlsi版圖規(guī)劃問題的算法可分為以下兩類:基于迭代的版圖規(guī)劃設(shè)計方法和基于分析的版圖規(guī)劃設(shè)計方法。在這兩類方向中,通過實驗結(jié)果的對比,基于迭代的版圖規(guī)劃設(shè)計方法取得的布局效果較好,因而成為當(dāng)前主流布局工具所采用的方法。由于vlsi布局問題的規(guī)模很大,現(xiàn)有的基于構(gòu)造的版圖規(guī)劃設(shè)計工具很難直接求解。在迭代方法的vlsi版圖規(guī)劃設(shè)計算法中,主要采用啟發(fā)式策略,如模擬退火算法、遺傳算法和粒子群算法等等。在基于啟發(fā)式策略的迭代方法中,實驗結(jié)果證明模擬退火算法在處理版圖規(guī)劃設(shè)計問題時,能夠得到較好的版圖規(guī)劃結(jié)果。因此,模擬退火算法被認(rèn)為是啟發(fā)式策略迭代法中比較有效的一種算法。
目前,基于分析方法的版圖規(guī)劃算法主要采用線性規(guī)劃算法及混合線性規(guī)劃算法處理vlsi不可二劃分版圖規(guī)劃問題。根據(jù)學(xué)術(shù)上和工業(yè)界布局器的比較,基于迭代方法的版圖規(guī)劃布局工具取得的實驗結(jié)果最好。
另外,現(xiàn)有的基于分析方法的版圖規(guī)劃布局方法存在著下面的問題:基于分析的版圖規(guī)劃布局主要采用線性規(guī)劃方法等古典優(yōu)化算法處理版圖規(guī)劃問題,而線性規(guī)劃方法的運行時間是變量和等式個數(shù)的指數(shù)倍,這導(dǎo)致線性規(guī)劃方法僅僅能處理小規(guī)模的版圖規(guī)劃設(shè)計問題。因此為了得到更好的版圖規(guī)劃布局結(jié)果,直接構(gòu)造迭代方法,并設(shè)計相應(yīng)的高效算法是值得考慮的。
除此之外,隨著科學(xué)技術(shù)的提高,以及芯片的形體大小的大規(guī)模縮小,芯片上的電濃度增大,從而導(dǎo)致熱消散增多,最終導(dǎo)致芯片溫度增加。然而,當(dāng)芯片溫度超過能承受的溫度時,芯片會失效。因此,在解決版圖規(guī)劃問題時,溫度因素也被考慮在內(nèi)。
技術(shù)實現(xiàn)要素:
本發(fā)明的目的在于提供一種用于求解vlsi不可二劃分版圖規(guī)劃設(shè)計方法,以克服現(xiàn)有技術(shù)中存在的缺陷。
為實現(xiàn)上述目的,本發(fā)明的技術(shù)方案是:一種用于求解vlsi不可二劃分版圖規(guī)劃設(shè)計方法,按照如下步驟實現(xiàn):
步驟s1:將版圖規(guī)劃表示為b*-tree;
步驟s2:初始化經(jīng)所述b*-tree為完全二叉樹;
步驟s3:對所述步驟s2中獲取的完全二叉樹進行一系列b*-tree擾動,產(chǎn)生初始種群p;
步驟s4:計算所述步驟s3獲取的種群中每個個體的適宜度函數(shù)值,并記錄當(dāng)前適宜度函數(shù)值最大的個體為best;
步驟s5:設(shè)置算法迭代次數(shù)iterative=0,并設(shè)置最大的迭代數(shù)目;
步驟s6:按照預(yù)設(shè)概率采用遺傳算子操作,然后采用混合模擬退火算法在解空間中搜索局部最優(yōu)解,并保存當(dāng)前的種群;
步驟s7:采用死亡概率策略,使得全局搜索和局部搜索達到平衡;
步驟s8:令iterative=iterative+1;
步驟s9:重復(fù)步驟s6至步驟s8,直到iterative大于預(yù)設(shè)的迭代數(shù)目。
在本發(fā)明一實施例,在所述步驟s1中,在將版圖規(guī)劃表示為b*-tree過程中,樹形結(jié)構(gòu)中的每個節(jié)點對應(yīng)代表一個模塊,且每個節(jié)點至多有兩個子節(jié)點。
在本發(fā)明一實施例,在所述步驟s2中,通過如下方式初始化b*-tree的方法:除所述樹形結(jié)構(gòu)中的最后兩行的節(jié)點,每個父節(jié)點均有兩個子節(jié)點,即將b*-tree初始化為一個完全二叉樹。
在本發(fā)明一實施例,在所述步驟s3中,所獲取的種群中每個個體都由b*-tree表示,所述一系列b*-tree的擾動方式包括:模塊旋轉(zhuǎn)、移動模塊到另一個區(qū)域以及交換兩個模塊。
在本發(fā)明一實施例,在所述步驟s6中,還包括如下步驟:
步驟s61:對于種群p中的個體,任選一個個體作為父親p1,根據(jù)輪盤賭選擇父親p2;
步驟s62:按照第一預(yù)設(shè)率進行交叉操作,得到新個體c1;然后對新個體c1采用混合模擬退火算法進行優(yōu)化,如果p1的適宜度函數(shù)值小于c1的適宜度函數(shù)值,則將c1標(biāo)記為p1;如果best的適宜度函數(shù)值小于c1的適宜度函數(shù)值,則將c1標(biāo)記為best;
步驟s63:對種群p中每個個體f按照第二預(yù)設(shè)概率進行變異操作,得到新個體c2;然后對新個體采用混合模擬退火算法進行優(yōu)化,如果f的適宜度函數(shù)值小于c2的適宜度函數(shù)值,則將c2標(biāo)記為f;如果best的適宜度函數(shù)值小于c2的適宜度函數(shù)值,則將c2標(biāo)記為best;
步驟s64:重復(fù)步驟s61至步驟s63,直到搜索到最優(yōu)解。
在本發(fā)明一實施例,在所述交叉操作中,還包括如下步驟:
步驟s611:從p1中隨機選擇一個節(jié)點ni,且滿足該節(jié)點不是根節(jié)點;將節(jié)點ni及其子樹記為p′1;
步驟s612:從p2中刪除與p′1相同的節(jié)點,并將刪除相同節(jié)點之后的p2記為p′2;
步驟s613:在p′2中找到節(jié)點ni的位置,將p′1放到節(jié)點ni的位置上。
在本發(fā)明一實施例,在所述步驟s613中還包括如下步驟:
步驟s6131:若p′2中的節(jié)點ni是葉子節(jié)點,則直接將p′1放到p′2中;
步驟s6132:若p′2中的節(jié)點ni不是葉子節(jié)點,則將ni的子樹移動到p2中的一個葉子節(jié)點上,然后再將p′1放到p′2中。
在本發(fā)明一實施例,在所述變異操作中,還包括如下步驟:
步驟s621:根節(jié)點的左右子樹交換;
步驟s622:隨機選擇一個節(jié)點,然后將這個節(jié)點和它對應(yīng)的子樹移動到一個隨機的葉子節(jié)點上。
在本發(fā)明一實施例,在所述步驟s622中還包括如下步驟:
步驟s6221:如果該節(jié)點是左子節(jié)點,則將子樹放到所述葉子節(jié)點的左支;
步驟s6222:如果該節(jié)點是右子節(jié)點,則將子樹放到所述葉子節(jié)點的右支。
在本發(fā)明一實施例,在所述步驟s7中,在所采用的死亡概率策略中,種群p中每個個體被賦予一個實際年齡和動態(tài)的生存年齡;在求解過程中,個體的實際年齡是所述遺傳操作的當(dāng)前迭代數(shù)目,所述生存年齡與個體的費用值相關(guān),且生存年齡具體的計算公式如下:
其中,minl,maxl分別表示每個個體的極小和極大生存年齡,且均為常數(shù);i代表一個個體;minf,maxf,avgf分別是當(dāng)前種群p中的最小適宜度函數(shù)值、最大適宜度函數(shù)值和平均適宜度函數(shù)值。
相較于現(xiàn)有技術(shù),本發(fā)明具有以下有益效果:
(1)本發(fā)明采用的遺傳算子僅僅用來探索解空間的全局搜索階段,這是與遺傳算法中的遺傳算子的不同之處。在遺傳算法中,遺傳算子不僅用于探索解空間的全局搜索階段,而且被用于在解空間搜索最優(yōu)解的局部搜索階段;
(2)由于本發(fā)明采用死亡概率策略,這樣可以縮減解空間的大小,從而縮減本發(fā)明的搜索時間及盡量避免搜索到最優(yōu)解是局部最優(yōu)解的情形,最終使得全局搜索和局部搜索達到一定的平衡。
(3)根據(jù)自然規(guī)律,種群中每個個體不可能一直存活也不可能立即死亡,因此在死亡概率策略中,種群中每個個體都被賦予一個實際年齡和動態(tài)的生存年齡。在求解過程中,實際年齡是本發(fā)明采用遺傳操作的迭代次數(shù),生存年齡與適宜度函數(shù)值相關(guān)的。經(jīng)與microelectroniccenterofnorthcarolina(mcnc)提供的測試?yán)舆M行實驗比較,比較結(jié)果表明本發(fā)明的版圖規(guī)劃方法是有效的,且規(guī)劃結(jié)果可滿足目前vlsi的版圖規(guī)劃設(shè)計的需求。
附圖說明
圖1為本發(fā)明中用于求解vlsi不可二劃分版圖規(guī)劃設(shè)計方法的流程圖。
圖2為本發(fā)明一實施例中優(yōu)化測試?yán)觓mi49面積的結(jié)果圖。
圖3為本發(fā)明一實施例中交叉操作中p1'的獲取方式。
圖4為本發(fā)明一實施例中交叉操作中p'2的獲取方式。
圖5為本發(fā)明一實施例中交叉操作中c1的獲取方式。
圖6(a)為本發(fā)明一實施例中變異方式1中c1的獲取方式。
圖6(b)為本發(fā)明一實施例中變異方式2中c1的獲取方式。
具體實施方式
下面結(jié)合附圖,對本發(fā)明的技術(shù)方案進行具體說明。
本發(fā)明提供一種用于求解vlsi不可二劃分版圖規(guī)劃設(shè)計方法,如圖1所示,包括如下步驟:
步驟s1:把版圖規(guī)劃表示為b*-tree;
步驟s2:初始化b*-tree為完全二叉樹;
步驟s3:對步驟s2中的完全二叉樹進行一系列b*-tree擾動,產(chǎn)生初始種群p;
步驟s4:計算種群中每個個體的適宜度函數(shù)值,記錄當(dāng)前適宜度函數(shù)值最大的個體為best;
步驟s5:設(shè)置算法迭代次數(shù)iterative=0,設(shè)置最大的迭代數(shù)目;
步驟s6:按照一定概率采用遺傳算子操作;
步驟s7:用混合模擬退火算法在解空間中搜索局部最優(yōu)解;
步驟s9:用死亡概率策略使得全局搜索和局部搜索達到一定的平衡;
步驟s10:iterative=iterative+1;
步驟s11:重復(fù)步驟s6~步驟s9,直到iterative大于給定的迭代數(shù)目。
進一步的,在遺傳算子操作中,種群的多樣性對超大規(guī)模集成電路版圖規(guī)劃結(jié)果有很大的影響,為了保持種群的多樣性,通過對完全二叉樹進行單個節(jié)點移動、旋轉(zhuǎn)和兩個節(jié)點交換操作,可得到一系列b*-tree,即初始種群。在步驟s1中,樹形結(jié)構(gòu)中的每個節(jié)點都代表一個模塊,而且每個節(jié)點最多有兩個子節(jié)點。在步驟s2中,初始化b*-tree的方法是:除了樹結(jié)構(gòu)中的最后兩行的節(jié)點,每個父節(jié)點有兩個子節(jié)點,即將b*-tree初始化為一個完全二叉樹。在步驟s3中,群中每個個體都由b*-tree表示,而且初始種群是步驟s2中完全二叉樹通過b*-tree的一系列的擾動產(chǎn)生,其中,b*-tree的擾動方式包括:模塊旋轉(zhuǎn)、移動模塊到另一個區(qū)域以及交換兩個模塊。
進一步的,在步驟s6中,遺傳算子操作實際上是對b*-tree子樹進行操作,相比b*-tree的擾動方式,遺傳算子操作導(dǎo)致解的種類增多,最終使得搜索到最優(yōu)解的可能性增大,從而該操作可以用來進行大規(guī)模版圖規(guī)劃優(yōu)化問題的全局搜索。由于遺傳算子操作中的交叉操作繼承了父體的重要的結(jié)構(gòu)信息,因此,在程序設(shè)計中,可以將遺傳算子操作中的交叉概率設(shè)置得比較大,這樣能夠盡可能使得種群中每個個體都進行交叉操作,從而繼承父體中重要的結(jié)構(gòu)信息,最終提高布局的質(zhì)量。在本實施例中,遺傳算子(交叉和變異操作)在算法中僅僅被用作搜索解空間和探索新的鄰居解的結(jié)構(gòu)。更重要的是,與b*-tree中只對一個節(jié)點進行操作不同,遺傳算子的操作對象是b*-tree的子樹。
進一步的,在交叉操作過程中,由于交叉操作使產(chǎn)生的新個體繼承了雙親的特性,為使得到的新個體繼承雙親中重要的結(jié)構(gòu)信息和盡可能搜索到全局最優(yōu)解,在本實施例中,構(gòu)造了交叉操作的實施方法。具體做法如下所示:
開始
1.種群中的每個個體都可以作為父親p1,根據(jù)輪盤賭選擇父親p2;
2.從p1中隨機選擇一個節(jié)點ni且滿足這個節(jié)點不是根節(jié)點;將節(jié)點ni及其子樹記為p′1;
3.從p2中刪除與p′1相同的節(jié)點;刪除相同節(jié)點之后的p2記為p'2;
4.在p'2中找到節(jié)點ni的位置,然后將p′1放到節(jié)點ni的位置上。詳細(xì)的放置方法如下:
a)若p'2中的節(jié)點ni是葉子節(jié)點,則直接將p′1放到p'2中;
b)若p'2中的節(jié)點ni不是葉子節(jié)點,則將ni的子樹移動到p'2中的一個葉子節(jié)點上,然后再將p′1放到p'2中。
結(jié)束
進一步的,如圖3所示,從p1中選擇節(jié)點b,節(jié)點b及其子樹記為p′1,包含節(jié)點c和d。如圖4所示,然后從p2中刪除節(jié)點c和d,并將剩下的結(jié)構(gòu)記為p'2,由于在p'2中節(jié)點b是葉子節(jié)點,因此直接將p′1放到p'2中,則得到新個體c1,如圖5所示。
進一步的,在變異操作過程中,對種群中的每個個體都有兩種變異方式:
1.根節(jié)點的左右子樹交換
2.隨機選擇一個節(jié)點g,然后將這個節(jié)點和它對應(yīng)的子樹移動到一個隨機葉子節(jié)點c上。具體移動方法如下:
a)如果該節(jié)點g是左子節(jié)點,則將子樹放到葉子節(jié)點c的左支;
b)如果該節(jié)點g是右子節(jié)點,則將子樹放到葉子節(jié)點c的右支。
進一步的,如圖6(a)~圖6(b)所示,如圖6(a)左邊所示,p1是一個由b*-tree表示的個體。在這個b*-tree,交換根節(jié)點的左右子樹,則得到新個體c1,如圖6(a)右邊所示。在圖6(b)中,從p1中隨機選取一個節(jié)點g,將節(jié)點g對應(yīng)的子樹(節(jié)點i)移動到新的放置點c。由于c有一個子節(jié)點,則節(jié)點g和它對應(yīng)的子樹被放置到節(jié)點c的右支,則得到新個體c1,如圖6(b)右邊。
進一步的,本實施例中還采用了混合模擬退火算法?;旌夏M退火算法的執(zhí)行,是為了在解空間中搜索較好的局部解。給一個初始的b*-tree,在每個溫度下,局部搜索方法通過將模塊旋轉(zhuǎn)90度,把一個模塊移動到其他區(qū)域,或是交換兩個模塊來搜索局部最優(yōu)解。如果這三個操作中的任何一種使得布局帶有更優(yōu)的適宜度函數(shù)值或是滿足一定的可接受率,這種布局結(jié)構(gòu)就會被接受。局部搜索算法的偽代碼如下所示。
開始
1.初始解s;
2.設(shè)置m=0;uphill=0;reject=0;并記錄當(dāng)前適宜度函數(shù)值最大的個體為bestsolution=s;
3.n=t×modulesize;emptylistl;
4.whilereject_rate>conv_rateandt_actual<t_term;
5.whileuphill<10×nandm<20×ndo;
6.隨機選擇b*-tree的一種擾動操作,得到新的解s',計算它的適宜度函數(shù)值并將其放到l中;
7.m=m+1;d=s'的適宜度函數(shù)值-s的適宜度函數(shù)值;
8.ifd≤0;thens=s';bestsolution=s';
9.else隨機產(chǎn)生一個0-1之間的數(shù)r;
10.ifr<exp(-d/t);thens=s';uphill=uphill+1;
11.elsereject=reject+1;
12.endwhile;
13.updatet;
14.reject_rate=reject/m;
15.endwhile;
16.returnbestsolution.
其中,modulesize是模塊的數(shù)量,t和n是用來控制b*-tree擾動操作執(zhí)行次數(shù)的參數(shù),m是截止當(dāng)前局部搜索已經(jīng)執(zhí)行三種操作的次數(shù),reject是不被接受的解的個數(shù)。
進一步的,在本實施例中,適應(yīng)度函數(shù)用于評價個體的優(yōu)劣程度,適應(yīng)度函數(shù)值越大個體越好,反之適應(yīng)度函數(shù)值越小則個體越差;根據(jù)適應(yīng)度函數(shù)值的大小對個體進行選擇,以保證適應(yīng)性能好的個體有更多的機會繁殖后代,使優(yōu)良特性得以遺傳。而本實施例的求解目標(biāo)是最小化目標(biāo)值,故在本實施例中,適宜度函數(shù)設(shè)置為目標(biāo)函數(shù)的倒函數(shù)。在步驟s4中,采用適宜度函數(shù)來評價個體的優(yōu)劣程度。適宜度函數(shù)值越大,則個體越優(yōu)。而本實施例中的優(yōu)化目標(biāo)是最小化芯片的面積、線長和溫度,并將目標(biāo)函數(shù)定義為:
其中,f是一個版圖規(guī)劃結(jié)果,它的面積記為a(f),通過計算包含f的最小矩形的面積值來獲得;f的線長記為w(f),通過計算所有線網(wǎng)的長度和來獲得,這里每個線網(wǎng)的長度可以由半周長線長公式來計算;f的溫度記為t(f),它的計算公式為
故適宜度函數(shù)定義為:
進一步的,在步驟s6與步驟s7中,還包括如下步驟:
1:對于種群p中的個體,任選一個個體作為父親p1,由于輪盤賭選擇出的個體具有很好的結(jié)構(gòu)信息,因此根據(jù)輪盤賭選擇父親p2;
2:按照第一預(yù)設(shè)率的概率進行交叉操作,得到新個體c1,然后對新個體采用混合模擬退火算法進行優(yōu)化,如果p1的適宜度函數(shù)值小于c1的適宜度函數(shù)值,則將c1標(biāo)記為p1;如果best的適宜度函數(shù)值小于c1的適宜度函數(shù)值,則將c1標(biāo)記為best;在本實施例中,該交叉操作中采用的概率根據(jù)實際情況進行設(shè)定;
3:對種群p中每個個體f按照第二預(yù)設(shè)率的概率進行變異操作,得到新個體c2,然后對新個體采用混合模擬退火算法進行優(yōu)化,如果f的適宜度函數(shù)值小于c2的適宜度函數(shù)值,則將c2標(biāo)記為f;如果best的適宜度函數(shù)值小于c2的適宜度函數(shù)值,則將c2標(biāo)記為best;在本實施例中,該變異操作中采用的概率根據(jù)實際情況進行設(shè)定;
4:重復(fù)步驟1~4,直到搜索到最優(yōu)解。
進一步的,隨著輸入規(guī)模的增加,解的數(shù)量呈指數(shù)增加,因此對于一個優(yōu)化算法,它不可能搜索解空間中的全部解。故本發(fā)明采用死亡概率策略減少種群中個體的數(shù)目,從而縮減解空間的大小,最終致使全局搜索和局部搜索達到平衡。根據(jù)自然規(guī)律,種群中每個個體不可能一直存活也不可能立即死亡?;诖艘?guī)律,種群中的每個個體都被賦予一個實際年齡和動態(tài)的生存年齡。在求解過程中,個體的實際年齡值被設(shè)為遺傳操作的當(dāng)前的迭代數(shù)。生存年齡是與個體的適宜度函數(shù)值有關(guān)的,因此生存年齡是動態(tài)更新的。生存年齡詳細(xì)的計算公式如下所示。
其中,minl,maxl是用戶定義的常數(shù),它們分別表示每個個體的極小和極大生存年齡。i代表一個個體。當(dāng)前種群p中的最小適宜度函數(shù)值、最大適宜度函數(shù)值和平均適宜度函數(shù)值分別記為minf,maxf,avgf。
在本實施例中,首先,考慮到種群多樣性的影響,采用了隨機化的策略,即由一個隨機初始布局,通過一系列b*-tree操作,得到一個初始種群。由于所用的b*-tree只有交換單個點、移動單個點和旋轉(zhuǎn)的操作,為了更快的找到全局最優(yōu)的解,在這些擾動操作的基礎(chǔ)上,提出了遺傳算子操作來搜索全局解空間。在加入遺傳算子操作的基礎(chǔ)上,引入了混合模擬退火算法用于在解空間中搜索局部最優(yōu)解。在加入混合模擬退火算法的基礎(chǔ)上,又引入了死亡概率策略。死亡概率策略縮減解空間的大小,從而使所采用的算法能夠在全局搜索和局部搜索中達到一定的平衡。進一步的,混合memetic算法的偽代碼如下所示。
開始
1.產(chǎn)生初始種群;
2.計算當(dāng)前種群中每個個體的適宜度函數(shù)值,并記錄當(dāng)前適宜度函數(shù)值最大的個體為best;
3.while迭代次數(shù)<給定的迭代次數(shù);
4.種群中每個個體都可以作為父親p1;輪盤賭選擇父親p2;
5.按照第一預(yù)設(shè)率的概率進行交叉操作得到新個體c1;對個體c1采用本實施例中的混合模擬退火算法進行優(yōu)化;
6.iffitness(p1)≤fitness(c1),thenp1=c1;
iffitness(best)≤fitness(c1),thenbest=c1;
7.對種群中每個個體p1按照第二預(yù)設(shè)率的概率進行變異操作得到新個體
c2;對新個體c2采用本實施例中的混合模擬退火算法進行優(yōu)化;
8.iffitness(p1)≤fitness(c2);thenp1=c2;
iffitness(best)≤fitness(c2);thenbest=c2;
9.死亡概率策略更新種群;
10.輸出最好的個體best.
結(jié)束
以上是本發(fā)明的較佳實施例,凡依本發(fā)明技術(shù)方案所作的改變,所產(chǎn)生的功能作用未超出本發(fā)明技術(shù)方案的范圍時,均屬于本發(fā)明的保護范圍。