本發(fā)明涉及VLSI物理設(shè)計(jì)自動(dòng)化技術(shù)領(lǐng)域,特別是一種用于求解給定邊框約束的VLSI版圖設(shè)計(jì)方法。
背景技術(shù):
近年來,隨著集成電路制造工藝的迅速發(fā)展,集成電路產(chǎn)業(yè)已經(jīng)進(jìn)入了納米工藝時(shí)代,芯片的集成度進(jìn)一步提高,一塊芯片上所能集成的電路元件越來越多,對(duì)VLSI設(shè)計(jì)方法提出了更高的要求。版圖規(guī)劃是VLSI物理設(shè)計(jì)過程中非常重要的一個(gè)環(huán)節(jié),對(duì)集成電路的性能指標(biāo),如可布通性、時(shí)延特性、功耗、電路可靠性等有重大影響。隨著版圖規(guī)劃問題的約束不斷增多和芯片上單元個(gè)數(shù)的快速增長,對(duì)VLSI版圖規(guī)劃問題的算法設(shè)計(jì)提出了巨大的挑戰(zhàn)。因此,尋求更高效、更實(shí)用的集成電路版圖規(guī)劃設(shè)計(jì)算法具有重要的意義。
在是否考慮將模塊放置到給定的區(qū)域約束時(shí),版圖規(guī)劃問題分為傳統(tǒng)版圖規(guī)劃問題和fixed-outline版圖規(guī)劃問題。傳統(tǒng)版圖規(guī)劃問題主要在滿足任何模塊都不重疊約束下,確定模塊的位置,使得布局的面積和模塊間的互連線長最小。Fixed-outline版圖規(guī)劃問題是在給定邊框約束和任何模塊都不重疊約束條件下確定模塊的位置,使得最終的布局面積和模塊間的互連線長度最小。換而言之,fixed-outline版圖規(guī)劃問題不僅要滿足任何模塊都不重疊的約束,而且還要滿足所有的模塊都要放置到給定的邊框內(nèi)。目前已經(jīng)證明了fixed-outline版圖規(guī)劃比傳統(tǒng)版圖規(guī)劃更加復(fù)雜。
用來解決VLSI版圖規(guī)劃問題的算法可分為以下兩類:基于迭代的版圖規(guī)劃設(shè)計(jì)方法和基于分析的版圖規(guī)劃設(shè)計(jì)方法。在這兩類方向中,通過實(shí)驗(yàn)結(jié)果的對(duì)比,基于迭代的版圖規(guī)劃設(shè)計(jì)方法取得的布局效果較好,因而成為當(dāng)前主流布局工具所采用的方法。由于VLSI布局問題的規(guī)模很大,現(xiàn)有的基于構(gòu)造的版圖規(guī)劃設(shè)計(jì)工具很難直接求解。在迭代方法的VLSI版圖規(guī)劃設(shè)計(jì)算法中,主要采用啟發(fā)式策略,如模擬退火算法、遺傳算法和粒子群算法等等。在基于啟發(fā)式策略的迭代方法中,實(shí)驗(yàn)結(jié)果證明模擬退火算法在處理版圖規(guī)劃設(shè)計(jì)問題時(shí),能夠得到較好的版圖規(guī)劃結(jié)果。因此,模擬退火算法被認(rèn)為是啟發(fā)式策略迭代法中比較有效的一種算法。
目前,基于分析方法的版圖規(guī)劃算法主要采用線性規(guī)劃算法及混合線性規(guī)劃算法處理VLSI不可二劃分版圖規(guī)劃問題。根據(jù)學(xué)術(shù)上和工業(yè)界布局器的比較,基于迭代方法的版圖規(guī)劃布局工具取得的實(shí)驗(yàn)結(jié)果最好。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的在于提供一種用于求解給定邊框約束的VLSI版圖設(shè)計(jì)方法,以克服現(xiàn)有技術(shù)中存在的缺陷。
為實(shí)現(xiàn)上述目的,本發(fā)明的技術(shù)方案是:一種一種用于求解給定邊框約束的VLSI版圖設(shè)計(jì)方法,按照如下步驟實(shí)現(xiàn):
步驟S1:將版圖規(guī)劃表示為B*-tree;
步驟S2:初始化所述步驟S1獲取的B*-tree為完全二叉樹,記為初始解I;
步驟S3:設(shè)置算法迭代次數(shù)iterative=0,設(shè)置最大的迭代數(shù)目;
步驟S4:判斷所述初始解I是否為可行解;
步驟S5:通過一系列B*-tree擾動(dòng)產(chǎn)生鄰居解;
步驟S6:對(duì)所述步驟S5中的鄰居解采用可行解策略,使得鄰居解滿足邊框約束;
步驟S7:采用混合模擬退火算法在解空間中搜索最優(yōu)解;
步驟S8:令iterative=iterative+1;
步驟S9:重復(fù)所述步驟S5至所述步驟S8,直到迭代次數(shù)iterative大于預(yù)設(shè)的迭代數(shù)目。
在本發(fā)明一實(shí)施例中,在所述步驟S1中將版圖規(guī)劃表示為B*-tree,其中,樹形結(jié)構(gòu)中的每個(gè)節(jié)點(diǎn)都代表一個(gè)模塊,而且每個(gè)節(jié)點(diǎn)至多有兩個(gè)子節(jié)點(diǎn)。
在本發(fā)明一實(shí)施例中,在所述步驟S2中,所述初始化所述步驟S1獲取的B*-tree為完全二叉樹包括:除了樹結(jié)構(gòu)中的最后兩行的節(jié)點(diǎn),每個(gè)父節(jié)點(diǎn)有兩個(gè)子節(jié)點(diǎn)。
在本發(fā)明一實(shí)施例中,在所述步驟S5中,對(duì)于解空間中每個(gè)解都由B*-tree表示,且所述一系列B*-tree的擾動(dòng)方式包括:模塊旋轉(zhuǎn)、移動(dòng)模塊到另一個(gè)區(qū)域以及交換兩個(gè)模塊。
在本發(fā)明一實(shí)施例中,在所述步驟S6中,通過可行解策略算法使所述所述步驟S5中獲取的鄰居解為可行解,且所述可行解策略算法采用如下步驟實(shí)現(xiàn):
步驟S61:令j==0;
步驟S62:while(初始解S是不可行的or j≤給定的數(shù)值);
步驟S63:令j++;
步驟S64:通過一系列B*-tree的擾動(dòng)產(chǎn)生新的解S1。
其中,j表示可行解策略在實(shí)行過程中的迭代次數(shù)。
在本發(fā)明一實(shí)施例中,在所述步驟S7中,還包括如下步驟:
步驟S71:通過B*-tree擾動(dòng)產(chǎn)生新的解I',并將對(duì)應(yīng)的B*-tree記為J;
步驟S72:基于新的罰函數(shù)計(jì)算新解I'的費(fèi)用值,并計(jì)算新的解和上一步解的費(fèi)用差;
步驟S73:判斷是否接受J;
步驟S74:通過一新的溫度改變公式搜索最優(yōu)解。
在本發(fā)明一實(shí)施例中,所述新的罰函數(shù)包括兩部分:面積函數(shù)A和過度長度
函數(shù)L';所述A面積函數(shù)通過計(jì)算包含候選版圖規(guī)劃F結(jié)果的最小矩形的面
積來獲得,計(jì)算公式為:
其中,W0,H0分別表示給定邊框的寬和高;候選版圖規(guī)劃F的寬和高分別記
為W和H;
所述過度長度函數(shù)L'通過計(jì)算每個(gè)模塊超出給定邊框的長度來獲得;若第i個(gè)模塊超出給定邊框的長度記為Li,則其計(jì)算公式為:
其中,(xi,yi)表示第i個(gè)模塊的左下角坐標(biāo);第i個(gè)模塊的寬和高分別記為wi和hi;
則過度長度函數(shù)的計(jì)算公式為:
其中,S表示超出給定邊框的所有模塊的集合。
在本發(fā)明一實(shí)施例中,所述新的溫度改變公式包括三部分:高溫隨機(jī)搜索階段、局部搜索階段以及溫度上升階段。
在本發(fā)明一實(shí)施例中,所述新的溫度改變公式通過如下步驟獲?。?/p>
步驟S741:Tn=avg/(log(P));
步驟S742:if(n==給定的數(shù)值);
步驟S743:Tn=Tn×avgcost/(λ×n);
步驟S744:Tn=Tn×Pm;
步驟S745:Tactual=estimateavg/Tn;
步驟S746:if(n>給定的數(shù)值);
步驟S747:Tn=Tn×avgcost/n;
步驟S748:Tactual=estimateavg/Tn。
其中,Tn=avg/(log(P))用來計(jì)算初始溫度,n是模擬退火算法中的迭代數(shù)目,Tn是第n步的溫度;m是用來控制在當(dāng)前溫度下進(jìn)行局部搜索的次數(shù),且為一常數(shù);P是接受較差的解的初始概率;平均上山費(fèi)用,也即費(fèi)用值增大的方向,記為avg;當(dāng)前溫度下的平均費(fèi)用差記為avgcost;λ是用戶定義的參數(shù),用于令溫度能夠快速降低,estimateavg是用來控制溫度的常數(shù),Tactual是實(shí)際溫度。
相較于現(xiàn)有技術(shù),本發(fā)明具有以下有益效果:
(1)在計(jì)算模塊是否超出給定邊框約束階段,本發(fā)明采用懲罰函數(shù)方法。該懲罰函數(shù)是由包含候選布局結(jié)果的最小矩形超出邊框的面積違背函數(shù)和各個(gè)模塊超出給定邊框約束的長度函數(shù)組成。此函數(shù)方法可有效地限制模塊在B*-tree擾動(dòng)過程中朝向邊框移動(dòng)。
(2)在B*-tree產(chǎn)生新的解階段,本發(fā)明采用可行解策略。此策略使得經(jīng)過一系列B*-tree擾動(dòng)產(chǎn)生的解都是滿足給定邊框約束的可行解。
(3)在解搜索階段,本發(fā)明采用混合模擬退火算法。在該混合算法中,溫度改變分為三階段:快速降溫階段,局部搜索階段和溫度上升階段。此溫度改變公式首先快速的降低溫度,使得冗雜的解空間不被搜索。在局部搜索階段,由于溫度逼近與0,因此很少接受較差的解。溫度上升階段,較多的差的解被接受,這樣防止了搜索的最優(yōu)解或次優(yōu)解是局部解。經(jīng)與測試?yán)舆M(jìn)行實(shí)驗(yàn)比較,比較結(jié)果表明本發(fā)明的版圖規(guī)劃方法是有效的。實(shí)驗(yàn)結(jié)果表明該方法可以提供高效實(shí)用的版圖規(guī)劃結(jié)果,可滿足目前VLSI的版圖規(guī)劃設(shè)計(jì)的需求。
附圖說明
圖1為本發(fā)明一實(shí)施例中一種用于求解給定邊框約束的VLSI版圖設(shè)計(jì)方法的流程圖。
圖2為本發(fā)明一實(shí)施例中一種用于使得由B*-tree產(chǎn)生的鄰居解滿足邊框約束的可行解策略的流程圖。
圖3為本發(fā)明一實(shí)施例中用于溫度更新的公式的流程圖。
圖4為本發(fā)明一實(shí)施例中在寬高比為1時(shí)優(yōu)化測試?yán)觧300面積和線長的結(jié)果圖。
具體實(shí)施方式
下面結(jié)合附圖,對(duì)本發(fā)明的技術(shù)方案進(jìn)行具體說明。
本發(fā)明提供一種用于求解給定邊框約束的VLSI版圖設(shè)計(jì)方法,目的在于將采用混合模擬退火算法處理VLSI不可二劃分的給定邊框約束的版圖規(guī)劃問題。該算法采用基于面積違背函數(shù)和長度違背函數(shù)相結(jié)合的懲罰函數(shù),再利用可行解策略使得產(chǎn)生的新解都是滿足邊框約束的可行解,最后再采用混合模擬退火算法來搜索問題的解空間,從而得到一種性能優(yōu)越的基于迭代方法的給定邊框約束的版圖規(guī)劃結(jié)果。
進(jìn)一步的,本發(fā)明針對(duì)不可二分超大規(guī)模集成電路給定邊框約束的版圖規(guī)劃問題,提出了基于混合的模擬退火的VLSI版圖規(guī)劃算法。首先,考慮到初始解對(duì)布局結(jié)果的影響,采用隨機(jī)化的策略,即將一個(gè)隨機(jī)初始布局作為混合模擬退火算法的初始解??紤]到所要解決的是給定邊框約束的版圖規(guī)劃問題,因此提出了將邊框約束作為目標(biāo)函數(shù)的違背懲罰函數(shù)。該函數(shù)在考慮圍住候選布圖結(jié)果的最小矩形超出給定邊框的面積函數(shù)基礎(chǔ)之上,引入了考慮各個(gè)模塊超出給定邊框的長度函數(shù)。在加入了混合模擬退火算法的基礎(chǔ)上,又引入了可行解策略。這個(gè)策略使得經(jīng)過一系列B*-tree擾動(dòng)產(chǎn)生的解都是可行解,從而使得本算法能夠得到較優(yōu)的解。在加入可行解策略的基礎(chǔ)之上,進(jìn)一步引入了混合模擬退火算法來搜索最優(yōu)解,在該算法中,新的溫度更新公式被采用。新的溫度更新公式大大節(jié)省解空間搜索階段的時(shí)間,將更多的時(shí)間用于在溫度上升階段尋找較優(yōu)的解,增大了找到最優(yōu)解的概率。
進(jìn)一步的,如圖1所示,具體包括如下步驟:
步驟S1:把版圖規(guī)劃表示為B*-tree;
步驟S2:初始化B*-tree為完全二叉樹,記為初始解I;
步驟S3:設(shè)置算法迭代次數(shù)iterative=0,設(shè)置最大的迭代數(shù)目;
步驟S4:判斷I是否為可行解;
步驟S5:通過一系列B*-tree擾動(dòng)產(chǎn)生鄰居解;
步驟S6:對(duì)(5)中的鄰居解采用可行解策略,使得鄰居解滿足邊框約束;
步驟S7:用混合模擬退火算法在解空間中搜索最優(yōu)解;
步驟S8:iterative=iterative+1;
步驟S9:重復(fù)步驟S5~步驟S8,直到iterative大于給定的迭代數(shù)目;
進(jìn)一步的,在步驟S1中,把版圖規(guī)劃表示為B*-tree,其中,樹形結(jié)構(gòu)中的每個(gè)節(jié)點(diǎn)都代表一個(gè)模塊,而且每個(gè)節(jié)點(diǎn)最多有兩個(gè)子節(jié)點(diǎn)。
進(jìn)一步的,在模擬退火算法操作中,解的多樣性對(duì)超大規(guī)模集成電路給定邊框約束的版圖規(guī)劃結(jié)果有很大的影響,為了保持解的多樣性,通過對(duì)完全二叉樹進(jìn)行單個(gè)節(jié)點(diǎn)移動(dòng)、旋轉(zhuǎn)和兩個(gè)節(jié)點(diǎn)交換操作,可得到一個(gè)B*-tree,即初始解。在本實(shí)施例中,在步驟S2中,初始化B*-tree的方法是:除了樹結(jié)構(gòu)中的最后兩行的節(jié)點(diǎn),每個(gè)父節(jié)點(diǎn)有兩個(gè)子節(jié)點(diǎn)。
進(jìn)一步的,在步驟S5中,對(duì)于解空間中每個(gè)解都由B*-tree表示,而且新的鄰居解是通過B*-tree的一系列擾動(dòng)產(chǎn)生,其中,B*-tree的擾動(dòng)方式包括:模塊旋轉(zhuǎn)、移動(dòng)模塊到另一個(gè)區(qū)域以及交換兩個(gè)模塊。
進(jìn)一步的,由于新的鄰居解是經(jīng)過B*-tree擾動(dòng)產(chǎn)生的,而且擾動(dòng)方式是隨機(jī)選取的,這樣可能導(dǎo)致產(chǎn)生的新解不滿足固定邊框約束,因此在本實(shí)施例中,對(duì)產(chǎn)生的鄰居解采用可行解策略,該策略使得B*-tree產(chǎn)生的新解為可行解。如圖2所示,具體的實(shí)現(xiàn)方式如下:
開始
1.j==0;
2.while(初始解S是不可行的or j≤給定的數(shù)值);
3.j++;
4.由B*-tree的擾動(dòng)產(chǎn)生新的解S1;
5.end while
結(jié)束。
其中,j表示可行解策略在實(shí)行過程中的迭代次數(shù)。
進(jìn)一步的,在步驟S7中,采用混合模擬退火算法,該混合算法采用新的溫度降低公式操作,導(dǎo)致冗雜的解空間不被搜索,加快了算法搜索速度,而且在溫度上升階段,使得較多差的解被接受,這樣可以防止搜索的最優(yōu)解或次最優(yōu)解是局部最優(yōu)解,最終使得搜索到最優(yōu)解的可能性增大。從而該操作可以用來進(jìn)行大規(guī)模給定邊框約束的版圖規(guī)劃優(yōu)化問題的全局搜索。具體的實(shí)現(xiàn)方式包括以下操作:
步驟S71:通過B*-tree擾動(dòng)產(chǎn)生新的解I',對(duì)應(yīng)的B*-tree記為J;
步驟S72:基于新的罰函數(shù)計(jì)算新解的費(fèi)用值,并計(jì)算新解和上一步解的費(fèi)用差;
步驟S73:判斷是否接受新的解J;
步驟S74:通過一新得溫度改變公式搜索最優(yōu)解。
進(jìn)一步的,本實(shí)施例中采用的混合模擬退火算法,是為了在解空間中搜索較好的解。給一個(gè)初始的B*-tree,在每個(gè)溫度下,搜索方法通過將模塊旋轉(zhuǎn)90度,把一個(gè)模塊移動(dòng)到其他區(qū)域,或是交換兩個(gè)模塊來搜索最優(yōu)解。如果這三個(gè)操作中的任何一種使得布局帶有更優(yōu)的費(fèi)用值或是滿足一定的可接受率,這種布局結(jié)構(gòu)就會(huì)被接受。局部搜索算法的偽代碼如下所示。
開始
1.初始解S;
2.設(shè)置m=0;uphill=0;reject=0;并記錄當(dāng)前最優(yōu)的個(gè)體bestsolution=S;
3.N=t×modulesize;emptylistL;
4.whilereject_rate>conv_rateandT_actual<T_term;
5.whileuphill<30×Nandm<60×Ndo;
6.隨機(jī)選擇B*-tree的一種擾動(dòng)操作,得到新的解S',基于新的罰函數(shù)計(jì)算
它的費(fèi)用并將其放到L中;
7.m=m+1;D=S'的費(fèi)用-S的費(fèi)用;
8.if D≤0;then S=S';bestsolution=S';
9.else隨機(jī)產(chǎn)生一個(gè)0-1之間的數(shù)R;
10.if R<exp(-D/T);then S=S';uphill=uphill+1;
11.elsereject=reject+1;
12.end while;
13.updateT;
14.reject_rate=reject/m;
15.end while;
16.return bestsolution.
其中,modulesize是模塊的數(shù)量,t和N是用來控制B*-tree擾動(dòng)操作執(zhí)行次數(shù)的參數(shù),m是截止當(dāng)前局部搜索已經(jīng)執(zhí)行三種操作的次數(shù),reject是不被接受的解的個(gè)數(shù)。
進(jìn)一步的,上述局部搜索偽代碼第6步中的新的罰函數(shù)由兩部分構(gòu)成。面積函數(shù)A提供全局搜索方向;過度長度函數(shù)L'提供局部搜索方向。面積函數(shù)A通過計(jì)算包含候選版圖規(guī)劃F結(jié)果的最小矩形的面積來獲得,它的計(jì)算公式為:
其中,W0,H0分別表示給定邊框的寬和高;候選版圖規(guī)劃F的寬和高分別記為W和H。
過度長度函數(shù)L'通過計(jì)算每個(gè)模塊超出給定邊框的長度來獲得。這里,若第i個(gè)模塊超出給定邊框的長度記為Li,則它的計(jì)算公式定義為:
其中,(xi,yi)表示第i個(gè)模塊的左下角坐標(biāo);第i個(gè)模塊的寬和高分別記為wi和hi。
故過度長度函數(shù)的計(jì)算公式為:
其中,S表示超出給定邊框的所有模塊的集合。
進(jìn)一步的,本實(shí)施例中采用的混合模擬退火算法,它的偽代碼第13步中的溫度更新公式由三部分構(gòu)成。高溫隨機(jī)搜索階段,在這部分,較差的解的接受概率很高,因此類似隨機(jī)搜索。局部搜索階段,由于溫度很低,因此只有很少一部分較差的解被接受,因此這個(gè)階段與貪心算法類似。溫度上升階段,在這部分,溫度上升,接受較差的解概率增大,因此它防止了搜索的最優(yōu)解是局部最優(yōu)解。如圖3所示,溫度更新公式具體包括如下步驟:
開始
1.Tn=avg/(log(P));
2.if(n==給定的數(shù)值);
3.Tn=Tn×avgcost/(λ×n);
4.Tn=Tn×Pm;
5.Tactual=estimateavg/Tn;
6.end if
7.if(n>給定的數(shù)值);
8.Tn=Tn×avgcost/n;
9.Tactual=estimateavg/Tn;
10.end if
結(jié)束。
其中,Tn=avg/(log(P))用來計(jì)算初始溫度,n是模擬退火算法中的迭代數(shù)目,Tn是第n步的溫度;m是用來控制在當(dāng)前溫度下進(jìn)行局部搜索的次數(shù),且為一常數(shù),在本實(shí)施例中,m取值為步驟S742和步驟S746中的給定的數(shù)值;P是接受較差的解的初始概率,平均上山(費(fèi)用值增大的方向)費(fèi)用記為avg,當(dāng)前溫度下的平均費(fèi)用差記為avgcost;λ是用戶定義的參數(shù),它使得溫度能夠快速降低;estimateavg是用來控制溫度的常數(shù),Tactual是實(shí)際溫度。
以上是本發(fā)明的較佳實(shí)施例,凡依本發(fā)明技術(shù)方案所作的改變,所產(chǎn)生的功能作用未超出本發(fā)明技術(shù)方案的范圍時(shí),均屬于本發(fā)明的保護(hù)范圍。