本發(fā)明涉及一種基于自適應pso和混合轉換策略的x結構steiner最小樹算法
背景技術:
總體布線是超大規(guī)模集成電路(verylargescaleintegration,vlsi)物理設計中一個非常重要的步驟。steiner最小樹(steinerminimaltree,smt)問題是在給定引腳集合的基礎上通過引入一些額外的點(steiner點)以尋找一棵連接給定引腳集合的最小代價布線樹。因為smt模型是超大規(guī)模集成電路總體布線中多端線網(wǎng)的最佳連接模型,所以smt構建是超大規(guī)模集成電路布線中一個關鍵環(huán)節(jié)。
近年來,集成電路在設計規(guī)模和制造工藝方面都迅猛地發(fā)展,由此為電子設計自動化帶來新的挑戰(zhàn)。而物理設計中總體布線階段所面臨的問題也是越來越復雜,總體布線問題的研究工作主要集中在曼哈頓結構下布線樹的構造和總體布線算法的設計,并取得一些不錯的研究成果。特別是在ispd所舉行的vlsi總體布線算法競賽中,涌現(xiàn)出nctu-r,nthu-route2.0,nctu-gr,nctu-gr2.0等總體布線器,并在總體布線競賽中脫穎而出。
目前,大多數(shù)布線算法都是基于曼哈頓結構而提出的。隨著超大規(guī)模集成電路的制造工藝不斷發(fā)展,互連線效應逐漸成為影響芯片性能的主要挑戰(zhàn)。而基于曼哈頓結構的布線模型要求芯片引腳之間的連線只能是水平方向和垂直方向,導致對芯片中互連線的線長優(yōu)化能力受到限制。因此,能夠更充分利用布線資源而帶來更強的線長優(yōu)化能力的非曼哈頓結構吸引越來越多研究人員的興趣。
為了更好地研究非曼哈頓結構結構布線,首要工作是研究非曼哈頓結構steiner最小樹的構建問題。關于非曼哈頓結構steiner最小樹的構建包括了基于分支界限法、精確算法和一系列的剪枝策略。針對精確算法的時間復雜度高,人們開始探索啟發(fā)式策略在構造非曼哈頓結構steiner樹中的應用,包括采用邊替換技術、三角收縮技術以及貪心策略等啟發(fā)式策略,從而取得了非曼哈頓結構結構布線的一些相關成果。
構造非曼哈頓結構steiner樹是一個np難問題,以上求解非曼哈頓結構steiner樹的研究工作都是基于精確算法和傳統(tǒng)的啟發(fā)式算法,而其中精確算法的時間復雜度隨著問題規(guī)模呈指數(shù)增長,傳統(tǒng)的啟發(fā)式算法大多基于貪心策略,易陷入局部極值。且二者在構造steiner樹時,并未充分利用非曼哈頓結構的幾何性質,不能保證steiner樹的質量,且主要優(yōu)化目標集中在線長優(yōu)化,而較少提供拓撲優(yōu)化的合適方法,導致在時間效率、線長縮短等方面還不能令人滿意。
技術實現(xiàn)要素:
有鑒于此,本發(fā)明的目的在于提供一種基于自適應pso和混合轉換策略的x結構steiner最小樹算法,以優(yōu)化布線樹線長為目標,最終達到對布線樹線長這一重要目標的優(yōu)化。
為實現(xiàn)上述目的,本發(fā)明采用如下技術方案:
一種基于自適應pso和混合轉換策略的x結構steiner最小樹算法,其特征在于,包括以下步驟:
步驟1:讀取測試電路數(shù)據(jù),引腳的坐標按照x軸、y軸的升序進行排序;
步驟2:初始化pso-ht-xsmt算法中種群大小、迭代次數(shù)、慣性權重因子、加速因子的數(shù)值,同時隨機生成初始種群;
步驟3:計算每個粒子的適應度值,再從中選擇適應度值最小的粒子作為種群的全局最優(yōu)粒子,并將第一代中每個粒子設置為其歷史最優(yōu)粒子;
步驟4:采用混合轉換策略作為粒子更新的基礎操作;
步驟5:根據(jù)粒子群的更新公式更新粒子的位置和速度;
步驟6:重新計算每個粒子的適應度值,若當前粒子的適應度值小于其歷史最優(yōu)值,則將更新后的粒子設置為其歷史最優(yōu)粒子;
步驟7:若更新后的粒子的適應度值小于種群的全局最優(yōu)粒子的適應度值,則將更新后的粒子設置為種群全局最優(yōu)粒子;
步驟8:檢查是否達到設定的算法最大迭代次數(shù),如果達到,則算法終止,反之,轉到步驟4。
進一步的,所述步驟3和步驟6中計算粒子的適應度值的具體方法如下:
fitness=1/(l(tx)+1)
其中,fitness為粒子的適應度值,l(tx)為一顆xsmt的長度,l(ei)表示布線樹tx中第i個邊片段ei的長度。
進一步的,所述步驟4中混合轉換策略的具體內容為:迭代算法的前期采用便變換和點變換結合的變換方式,后期只采用點變換。
進一步的,所述步驟5中粒子群的更新公式為:
其中,w是慣性權重因子,c1和c2是加速因子,n1表示變異操作,n2和n3表示交叉操作,r1,r2,r3都是在區(qū)間[0,1)的隨機數(shù)。
進一步的,所述粒子群的更新公式分為三個更新操作,包括粒子的速度更新,粒子的個體經(jīng)驗學習和粒子與種群其他粒子進行合作學習;
粒子的速度更新表示如下:
粒子的個體經(jīng)驗學習表示如下:
粒子與種群其他粒子進行合作學習
進一步的,所述慣性權重因子w的更新過程如下:
其中,w_star表示參數(shù)w迭代開始的初始值,w_end表示參數(shù)w的迭代的最終值,eval表示當前迭代次數(shù),evaluations則表示算法的最大迭代次數(shù)。
進一步的,所述加速因子c1和c2的更新過程如下:
c2=1-c1
其中,fave表示種群中所有粒子適應度值的平均值,p(i).fitness表示粒子i的適應度值,fmin表示種群中適應度的最小值,fmax表示種群中適應度的最大值。
本發(fā)明與現(xiàn)有技術相比具有以下有益效果:本發(fā)明采用高效的混合轉換策略,基于steiner點變換和邊變換兩個角度去優(yōu)化布線線長,并且引入自適應參數(shù)調整的粒子群優(yōu)化算法,從而能夠獲得優(yōu)秀的解方案,提高布線樹的質量,為布線問題提高較好的布線樹。
附圖說明
圖1是本發(fā)明的算法流程圖。
圖2a是本發(fā)明一實施例的邊l的坐標信息。
圖2b是邊l對應的ps點的0選擇方式示意圖。
圖2c是邊l對應的ps點的1選擇方式示意圖。
圖2d是邊l對應的ps點的2選擇方式示意圖。
圖2e是邊l對應的ps點的3選擇方式示意圖。
圖3a是本發(fā)明構建xsmt進化過程中的一種布線樹拓撲。
圖3b是本發(fā)明構建xsmt進化過程中的另一種布線樹拓撲。
具體實施方式
下面結合附圖及實施例對本發(fā)明做進一步說明。
請參照圖1,本發(fā)明提供一種基于自適應pso和混合轉換策略的x結構steiner最小樹算法,其特征在于,包括以下步驟:
步驟1:讀取測試電路數(shù)據(jù),引腳的坐標按照x軸、y軸的升序進行排序;
步驟2:初始化pso-ht-xsmt算法中種群大小、迭代次數(shù)、慣性權重因子、加速因子的數(shù)值,同時隨機生成初始種群;
步驟3:計算每個粒子的適應度值,再從中選擇適應度值最小的粒子作為種群的全局最優(yōu)粒子,并將第一代中每個粒子設置為其歷史最優(yōu)粒子;其中,粒子的適應度值的具體計算方法如下:
一顆xsmt的長度是該布線樹中所有邊片段的長度總和,其計算方式如下所示:
其中,l(ei)表示在布線樹tx中每個邊片段ei的長度。
在計算xst中每條邊片段的長度總和時,所有邊片段分為以下四種類型:水平邊片段、垂直邊片段、45°斜邊片段及135°斜邊片段;算法首先將所有邊片段分為以上四種類型,再將其中45°邊片段順時針方向旋轉為水平邊,同時將135°邊片段順時針方向旋轉為垂直邊,然后將最終的水平邊按照其左邊引腳的大小從下向上、從左到右的方式排列,同時將垂直邊按照其下邊引腳的大小從左到右、從下到上的方式排列,最后,xst的長度即為這些邊片段扣除重復部分的總長度之和。
因為pso中粒子的適應度函數(shù)值通常是越小代表該粒子越優(yōu)秀,所以本文算法中的粒子的適應度函數(shù)設計如下所示:
fitness=1/(l(tx)+1)
其中,分母是布線樹的長度加1,這樣是為了防止當布線樹的長度可能為0,即可能兩端線網(wǎng)中兩個引腳的位置重合這種情況帶來的計算無意義問題。
步驟4:采用混合轉換策略作為粒子更新的基礎操作;混合轉換策略的具體內容為:迭代算法的前期采用便變換和點變換結合的變換方式,后期只采用點變換。
步驟5:根據(jù)粒子群的更新公式更新粒子的位置和速度粒子群的更新公式為:vcxza;
其中,w是慣性權重因子,c1和c2是加速因子,n1表示變異操作,n2和n3表示交叉操作,r1,r2,r3都是在區(qū)間[0,1)的隨機數(shù)。
進一步的,所述粒子群的更新公式分為三個更新操作,包括粒子的速度更新,粒子的個體經(jīng)驗學習和粒子與種群其他粒子進行合作學習;
粒子的速度更新表示如下:
粒子的個體經(jīng)驗學習表示如下:
粒子與種群其他粒子進行合作學習
進一步的,所述慣性權重因子w的更新過程如下:
其中,w_star表示參數(shù)w迭代開始的初始值,w_end表示參數(shù)w的迭代的最終值,eval表示當前迭代次數(shù),evaluations則表示算法的最大迭代次數(shù)。
進一步的,所述加速因子c1和c2的更新過程如下:
c2=1-c1
其中,fave表示種群中所有粒子適應度值的平均值,p(i).fitness表示粒子i的適應度值,fmin表示種群中適應度的最小值,fmax表示種群中適應度的最大值。
步驟6:重新計算每個粒子的適應度值,若當前粒子的適應度值小于其歷史最優(yōu)值,則將更新后的粒子設置為其歷史最優(yōu)粒子;
步驟7:若更新后的粒子的適應度值小于種群的全局最優(yōu)粒子的適應度值,則將更新后的粒子設置為種群全局最優(yōu)粒子;
步驟8:檢查是否達到設定的算法最大迭代次數(shù),如果達到,則算法終止,反之,轉到步驟4。
為了讓一般技術人員更好的理解本發(fā)明的技術方案,以下結合具體設計過程對本發(fā)明進行詳細介紹。
1、混合轉換策略的設計
為了進一步擴大算法的尋優(yōu)空間同時加快算法的收斂效率,本發(fā)明步驟4提出了一種基于點變換和邊變換的混合轉換策略,
性質1采用ps點轉換策略,在構建steiner最小樹時,其優(yōu)化能力有限。
如果算法只采用ps點轉換策略,即是一種基于最小生成樹構造smt的方法,在矩形的布線結構中,基于最小生成樹構造的smt相對于準確的rsmt來說,其線長距離最多是準確解方案的1.5倍,離最優(yōu)解有一定距離,如公式(1)所示,其中cost(mst)代表基于最小樹構造的smt的長度,而cost(rsmt)代表準確算法所構造的rsmt。在走線方向更多的x結構布線問題,這種最大距離將更遠。
cost(mst)/cost(rsmt)<3/2(1)
因此,在構建smt如果只進行ps點轉換,會存在解空間不一定包含最優(yōu)解,甚至離最優(yōu)解有將近0.5倍的最優(yōu)線長距離。故本文需要在此基礎上改進轉換策略,這里我們先探討了另外一種基礎轉換策略——邊變換。
性質2邊變換的引入,擴大了算法的搜索空間,有機會獲得相對于點變換轉換方式更優(yōu)的布線方案,甚至在有些情況可以幫助算法搜索到最優(yōu)解。
在構建xsmt的工作中,更新操作只考慮到ps變換。然而,在構建rsmt或xsmt或的過程中,布線樹的拓撲可能是變化的。例如,如圖3a和圖3b所示的兩張圖分別是構建xsmt的進化過程中存在兩種布線樹拓撲,兩者的拓撲是不一樣的,其中邊(4,2)存在于如圖3b所示的布線樹中,而在如圖3a所示的布線樹中卻不存在。因此在rsmt或xsmt構建算法的更新操作中,除了ps點變換操作外,仍需引入邊變換操作。而且邊變換操作的引入可進一步增強線長的優(yōu)化能力。
考慮到ps點變換和邊變換在不同測試實例中,各有優(yōu)勢,因此,我們設想把這兩種變換通過不同的組合方式進行策略,尋找一種最優(yōu)的混合策略。
(1)邊變換與ps點變換的混合策略
性質3邊變換與ps點變換的混合策略,進一步擴大了算法的搜索空間,同時帶來收斂速度較慢,甚至有些情況會收斂不到一個更優(yōu)的解方案。
最直接的想法就是在算法的整個迭代過程中均采用邊變換與ps點變換結合的混合方式,將這種方式應用在前期工作算法中,獲得相關的實驗室結果。如表1所示。從表1可以看出在部分測試實例中,邊變換與ps點變換的混合策略(表中用‘ps+e’表示)的尋優(yōu)空間大于ps點變換,但是由于ps+e策略的搜索空間變大,可能在某些測試實例中,尋優(yōu)能力弱于點變換和邊變換,如表3所示中,test5,6,7,9四個測試實例,ps+e策略會比點變換策略尋優(yōu)結果差,而在test5,6,8,9四個測試實例,ps+e策略會比點變換策略尋優(yōu)結果差。
表1基于ps+e混合策略的線長優(yōu)化情況
(2)(ps+e):ps混合策略
性質4ps+e可進一步擴大算法的搜索空間,而ps轉換策略有助于加快算法的收斂效率。
表2基于(ps+e):ps混合策略的線長優(yōu)化情況
(ps+e):ps混合策略是指在迭代算法的前期采用邊變換和點變換結合,后期采用只進行單純的點變換。這種混合策略,可取得相對點變換策略來說1.22%的線長減少率,如表2所示。這里要特別指出,在這種基于同樣布線結構的steiner最小樹構造方法對比中,能夠取得1%的線長減少率,已經(jīng)是不錯的優(yōu)化效果,所以這種(ps+e):ps混合策略的尋優(yōu)效果不錯。
從表2的實驗結果來看,算法迭代的前期采用ps+e的搜索策略,一定程度上擴大了算法的搜索空間,而后期采用單純ps策略,幫助算法在較豐富的搜索空間中收斂到一個更優(yōu)解。
綜上,我們選擇優(yōu)化效果最好的混合策略(ps+e):ps作為本文的一個高效的混合轉換策略,并將其與pso結合,從而提出一種結合自適應pso和混合轉換策略的有效算法以更高效地求解x結構下vlsi布線問題。
2、算法編碼策略的設計
一棵生成樹的編碼策略通??砂╬rufer數(shù)編碼和邊點對編碼兩種方式。prufer數(shù)編碼的長度比邊點對編碼的長度少三分之二左右,但由于prufer數(shù)編碼改變編碼中一位數(shù)字,會對整個生成樹的拓撲產(chǎn)生很大的變化,尚不能較好地保留粒子的最優(yōu)拓撲信息。而邊點對編碼則能更好地適應粒子群優(yōu)化算法在迭代過程中保留粒子的最優(yōu)拓撲信息的特點,且改變邊點對編碼中一位編碼一般不會對生成樹的拓撲產(chǎn)生巨大影響,故算法采用更適合于進化算法的邊點對編碼方式作為粒子的編碼策略。
定義1(pseudo-steiner點)假設除了引腳外的連接點,稱為pseudo-steiner(ps)點。圖2a至2e中s為ps點,ps點包含steiner點。
定義2(0選擇)如圖2a所示,(x1,y1)和(x2,y2)為邊l的兩個端點a和b的坐標信息,其中x1<x2。邊l對應的ps點的選擇方式如圖2b所示,從a先引曼哈頓結構邊至s再從s引非曼哈頓結構邊至b,則稱作0選擇。
定義3(1選擇)如圖2c所示,從a先引非曼哈頓結構邊至s再從s引曼哈頓結構邊至b,則稱作1選擇。
定義4(2選擇)如圖2d所示,從a先引豎直邊至s再從s引水平邊至b,則稱作2選擇。
定義5(3選擇)如圖2e所示,從a先引水平邊至s再從s引豎直邊至b,則稱作3選擇。
邊點對編碼是用一條生成樹的邊和一位在定義2至5中所定義的ps點選擇方式表示候選x結構steiner最小樹的一條邊。ps點選擇方式是將生成樹的邊轉化成x結構steiner樹(x-architecturesteinertree,xst)的x結構邊。每個ps點選擇方式位包含了四種選擇方式,即0選擇、1選擇、2選擇和3選擇。如果一個待布線網(wǎng)有n個引腳,則每一棵候選的xst包含n-1條生成樹邊、n-1位ps點選擇方式及一位數(shù)字表示粒子的適應度值。又由于一條生成樹的邊需要兩位數(shù)字表示該邊的兩個引腳,所以每個粒子編碼的總長度為3×(n-1)+1。例如,一個候選xst(n=8)可用pso-ht-xsmt算法中一個粒子的編碼表示,其編碼采用如下所示的數(shù)字串表示:
76064175151213018152210.0100
其中,最后一位數(shù)字‘10.0100’是表示該粒子的適應度值,而每一位斜體字體的數(shù)字則是表示每條邊相應的ps點選擇方式。第一個數(shù)字子串(760)表示一棵steiner樹的一條邊,該邊兩個引腳編號為7和6,ps點選擇方式位是如定義2所示的0選擇方式。
3、算法的操作算子設計
本算法基于遺傳算法的交叉和變異操作提出了pso-ht-xsmt算法的粒子更新方式以實現(xiàn)構建xsmt這一離散問題。粒子的更新公式如下所示。
其中,w是慣性權重因子,c1和c2是加速因子,n1表示變異操作,n2和n3表示交叉操作,假定r1,r2,r3都是在區(qū)間[0,1)的隨機數(shù)。
邊變換操作的引入使得在算法迭代過程中布線樹可能會出現(xiàn)環(huán)的情況,導致無效解的產(chǎn)生,從而破壞粒子編碼的強壯性。為了解決邊變換操作帶來的不足,本算法將并查集策略融入到以下三個更新操作中。
(1)粒子的速度更新可表示如下。
其中,w表示粒子進行變異操作的概率。
在粒子的變異過程中,本文算法隨機選擇準備變異的一條邊進行刪除,刪除之后布線樹被分為兩棵子樹。本文算法使用并查集分別記錄兩棵子樹的引腳集合,并從兩個引腳集合中分別選取一個引腳作為變異后新布線邊的兩個端點。變異算子的偽代碼如算法1所示:
(2)粒子的個體經(jīng)驗學習可表示如下。
其中,c1表示粒子與其歷史最優(yōu)方案進行交叉操作的概率。
(3)粒子與種群其他粒子進行合作學習可表示如下。
其中,c2表示粒子與種群全局最優(yōu)方案進行交叉操作的概率。
在公式(4)和(5)中,在粒子跟其歷史最優(yōu)位置進行交叉,本文算法選取它們相應的布線樹之間的共同邊集合作為交叉后新布線樹的一部分邊,將剩余的邊存儲在一個集合,稱為剩余邊集合。然后從剩余邊集合中不斷隨機選取邊作為交叉后新布線樹的邊,直至構成一棵完整的新布線樹,這個過程中采用并查集策略避免在隨機選取邊的過程中,出現(xiàn)環(huán)的情況。交叉的過程交叉算子的偽代碼如算法2所示。
4、算法的加速因子的設計
性質5慣性權重因子w的設置將影響到粒子的局部搜索能力和全局搜索能力的平衡情況。
從粒子的速度更新公式中可看出,公式的第一部分為粒子提供了在搜索空間的飛行動力,代表粒子在飛行軌道中受先前速度的影響程度。因此,慣性權重因子w是反映這種影響程度的具體數(shù)值。
性質6設置值較大的慣性權重因子w將使算法擁有更強的全局搜索能力。
從性質5中可看出慣性權重因子w是決定粒子保留多少先前的飛行速度。因此一個較大的慣性權重因子將增強粒子搜索未知區(qū)域的能力,有助于提高算法的全局搜索能力從而跳出局部最優(yōu)解。而一個較小的慣性權重因子預示算法將主要集中在當前搜索位置的附近搜索,有助于增強算法的局部搜索能力從而加快收斂速度。
在早期工作中,shi和eberhart設計了一種基于線性遞減的慣性權重因子調整策略的pso算法。為了確保算法在早期擁有較強的全局搜索能力,采用一個較大的慣性權重因子,同時為了保證后期的收斂速度,即增加局部搜索能力,則后期采用一個較小的慣性權重因子。通過在四種不同的基準測試函數(shù)上的實驗仿真,最終的實驗結果表明基于這種參數(shù)調整策略的pso算法能夠有效地提高算法的性能。
性質7值較大的加速因子c1可能導致算法在局部范圍內搜索,而值較大的加速因子c2則將使得算法過早收斂至局部最優(yōu)解。
加速因子c1和c2是用于粒子間的交流學習。本文根據(jù)性質8,采用根據(jù)粒子的適應度值判斷目前粒子與當前種群的平均適應度值的優(yōu)劣情況,如果比當前種群的均值更優(yōu),則采用較大的c1值,保障這種較優(yōu)粒子在自己附近搜索。若當前粒子劣于當前種群的均值,則采用較大的c2值,促使較差粒子向種群最優(yōu)搜索。通過這種方式,可保障算法中較優(yōu)粒子可在自己的局部范圍內進行詳細搜索,而較差粒子可傾向于種群的學習,使算法較快較好地收斂到質量好的解方案。
基于以上pso算法的參數(shù)性質分析,本文算法的慣性權重因子w采用shi等所提的線性遞減策略進行設置如公式(6)所示,具體設置為慣性權重因子w從0.9線性遞減至0.1。兩個加速因子c1和c2采用本文所提的自適應策略,如公式(7)和(8)所示。每次迭代中相應的參數(shù)設置具體按照公式(9),(10)和(11)進行更新。
c2=1-c1(8)
其中,w_star表示參數(shù)w迭代開始的初始值,w_end表示參數(shù)w的迭代的最終值,eval表示當前迭代次數(shù),evaluations則表示算法的最大迭代次數(shù)。
以上所述僅為本發(fā)明的較佳實施例,凡依本發(fā)明申請專利范圍所做的均等變化與修飾,皆應屬本發(fā)明的涵蓋范圍。