999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

結(jié)合改進A*算法與拆線重布的有序逃逸布線

2021-06-24 09:27:48鄧新國葉似錦陳家瑞陳傳東
電子與信息學(xué)報 2021年6期
關(guān)鍵詞:方法

鄧新國 葉似錦 陳家瑞* 陳傳東

①(福州大學(xué)數(shù)學(xué)與計算機科學(xué)學(xué)院 福州 350108)

②(福州大學(xué)物理與信息工程學(xué)院 福州 350108)

1 引言

有序逃逸布線問題,作為印刷電路板(Printed Circuit Board, PCB)設(shè)計中的關(guān)鍵問題。目前,電路板的布線在很大程度上還是由專業(yè)人員手工完成。隨著電路板器件集成度不斷提高,器件引腳數(shù)量大規(guī)模增加,現(xiàn)有自動逃逸布線算法已經(jīng)無法為專業(yè)人員提供有效的幫助。因此,如何能夠快速得到一個可行的布線方案已成為急需解決的問題。

逃逸布線是將引腳網(wǎng)格內(nèi)的某些引腳連接到網(wǎng)格的邊界上,最主要的考慮因素是可布線性,在可布線性得到滿足的情況下優(yōu)化線長,逃逸布線問題主要分為無序逃逸布線和有序逃逸布線兩類[1,2]。目前,對于無序逃逸布線的研究已經(jīng)取得了很好的成果,由于無序逃逸布線沒有終點順序要求,所以對于該問題的研究[3—5]都使用網(wǎng)絡(luò)流方法進行求解并可以在短時間內(nèi)得到最優(yōu)解,且文獻[6,7]研究并解決多層逃逸問題。

而有序逃逸布線由于逃逸目標(biāo)線路順序的限制,使用網(wǎng)絡(luò)流方法無法解決,現(xiàn)有的研究提出的方法又可以分為并行布線方法和串行布線方法[8]。并行布線就是一次性對所有引腳進行線路規(guī)劃,文獻[9,10]用整數(shù)線性規(guī)劃(Integer Linear Programming, ILP)解決了一個相關(guān)但不同的逃逸問題,該問題中引腳具有固定的逃逸終點,文獻[11]使用分組等策略改進ILP,降低約束項數(shù)量。Tomioka等人[12]只采用無繞行單調(diào)模式,這意味著即使存在解決方案,也不一定能保證找到解決方案。盡管他們使用的方法在圖有環(huán)時考慮非單調(diào)布線,但是在資源沖突需要繞行時,非單調(diào)布線就會失敗。文獻[13,14]將有序的逃逸布線轉(zhuǎn)換為一個布爾可滿足性問題(Boolean Satisfiability Problem, SAT),并通過SAT求解器解決。該方法無需對路線始末進行任何假設(shè),即可準(zhǔn)確完成布線。但是,該方法很難解決逃逸布線容量不為1的情況。在最新的研究中,Jiao等人[15]使用最小費用多商品流(Min-cost Multi-Commodity Flow, MMCF)方法來解決這個問題,主要是通過使用虛擬節(jié)點,構(gòu)建具有始末節(jié)點且符合求解約束的圖,進而使用MMCF求解器來求解,在大規(guī)模引腳陣列中構(gòu)建圖,虛擬點的數(shù)量過多會使得運算量大幅度增加。

串行布線則是按照每條線的順序依次進行布線,每條線布線完成后更新占用的資源,下一條線在空余資源上進行規(guī)劃。串行布線對布線的先后順序有很強的依賴性,因為先行的線占用了資源后,之后的引腳可能無法逃逸,因此,使用拆線重布[16]的方法來對已有的線進行調(diào)整。

并行布線的方法隨著電路板引腳數(shù)量變多,時間復(fù)雜度會迅速增加,耗費的CPU時間會成倍增長,甚至?xí)o法求解。因此,當(dāng)遇到的引腳陣列規(guī)模較大時,并行布線的方法會允許程序?qū)ふ铱尚薪舛皇亲顑?yōu)解。

在逃逸布線中兼顧可布線性與線長,提出了一種3階段串行布線的逃逸布線方法。主要步驟為:首先構(gòu)造預(yù)估函數(shù)估算引腳逃逸所需的資源,確定可行的布線順序,以此構(gòu)造初始解,接著對擁擠區(qū)域與同長度布線路徑進行優(yōu)化,最后使用拆線重布的方法對無法逃逸的引腳進行重新布線。

2 問題描述

逃逸布線是將引腳陣列內(nèi)的某些引腳連接到組件邊界上。

目前市面上器件的封裝形式主要分為交錯引腳陣列(Staggered Pin Arrays, SPA)[17]和網(wǎng)格引腳陣列(Grid Pin Array, GPA),本文主要研究GPA下的逃逸布線,如圖1。定義一個多行多列的規(guī)則排布引腳陣列,假設(shè)在每4個引腳中間有一個中心節(jié)點,使得需要逃逸的引腳通過中心節(jié)點連接到邊界上。

算法輸入為給定引腳陣列構(gòu)建的有向圖G(V,E),其中V ={v0,v1,v2,···,vm}是引腳與中心點標(biāo)號集合, E是邊集合,S , T分別表示起點集合(引腳集合)和終點集合,xuw=1表示由節(jié)點u前往節(jié)點w的有向邊被選中,xuw=0則表示沒被選中,cuw表示由節(jié)點u前往節(jié)點w的有向邊的代價,將問題描述為一個整數(shù)線性規(guī)劃問題,即

圖1 GPA單邊逃逸布線示意圖

其中,第1個約束確保每個節(jié)點只會被一條引腳布線選中,避免沖突。第2個約束確保每個除了源和目標(biāo)節(jié)點外的中間節(jié)點入度與出度是平衡的,即構(gòu)造的線路是連續(xù)的。其余約束確保每條線由逃逸引腳出發(fā),到達邊界終點,最終目標(biāo)是最小化總體線長。每條邊的基礎(chǔ)代價都為1。

有序逃逸布線問題的輸入與逃逸布線相同,但要給出逃逸引腳的順序。本文中出線的順序都以順時針排列,如圖2。

圖2 單邊有序逃逸布線示意圖

當(dāng)引腳間的布線容量增加時,問題規(guī)模會成倍地增加,從而導(dǎo)致算法復(fù)雜的大幅提高。但是在實際情況下,引腳間的布線容量不一定為1,算法亦考慮了逃逸布線問題中可變?nèi)萘康那闆r,不同容量的引腳陣列如圖3所示。

3 有序逃逸布線

圖4為算法流程圖,算法框架分為構(gòu)建逃逸布線初始解、對擁擠區(qū)域的部分線路進行優(yōu)化調(diào)整以及拆線重布共 3 個部分。

圖3 布線容量可變示意圖

圖4 算法流程圖

3.1 構(gòu)建布線初始解

在串行布線中,布線的順序?qū)τ谧罱K解的質(zhì)量會產(chǎn)生重大影響,在構(gòu)建初始解時,采用構(gòu)造預(yù)估函數(shù)對每一個引腳在當(dāng)前可用資源下逃逸可能耗費的資源進行計算,根據(jù)計算結(jié)果確定引腳的逃逸順序,能夠使初始解的結(jié)果更優(yōu)。設(shè)邊界點集合為K,邊界點標(biāo)記值為k,初始值為—1,當(dāng)前要逃逸的引腳編號為n,對應(yīng)目標(biāo)邊界點編號為m,則km=n,計算引腳與邊界點的曼哈頓距離作為該引腳的逃逸預(yù)估代價,引腳代價預(yù)估函數(shù)定義同式(2)。

其中,M為可用邊界點集合,任取m ∈M,可使以下布爾表達式成立

按照預(yù)估函數(shù)計算出各個引腳逃逸所需的預(yù)估代價后,選擇所需代價最小的引腳優(yōu)先逃逸,因為引腳逃逸所需資源越少,則代表引腳需要在之后的引腳先布線后再進行繞路逃逸的可能性越低。

獲得需要逃逸的引腳編號與邊界點編號后,需要選用一種最短路徑的尋路算法,閱讀多路徑[18]文獻及多次實驗對比后,最終選用A*算法來規(guī)劃逃逸路徑,總體代價函數(shù)如式(4)所示

其中,F(xiàn)(i)是當(dāng)前點i的綜合代價,G(i)是從起點沿著當(dāng)前生成的路徑移動到當(dāng)前點的真實移動代價,H(i)是A*算法的啟發(fā)式函數(shù),計算從當(dāng)前點移動到終點的估算成本,H *(i)是從當(dāng)前點移動到終點的真實成本。本算法選用當(dāng)前點與終點的曼哈頓距離作為估算成本H(i),由于H(i)=H *(i),因此A*算法能夠在最短時間取得最優(yōu)解。A*算法主要通過維護OPEN表和CLOSE表來規(guī)劃路線。其中,OPEN表用于存放已經(jīng)生成,且已用啟發(fā)式函數(shù)做過估算,但尚未產(chǎn)生后繼節(jié)點的那些節(jié)點,也稱未考查節(jié)點;CLOSE表則用于存放已經(jīng)生成,且已經(jīng)考查過的節(jié)點。

A*算法步驟如下:

輸入:圖G,起始點s,終點t。

輸出:路徑點集合P。

步驟 1 讀入圖G,起始點s,終點t。

步驟 2 初始化OPEN={s},CLOSE={}。

步驟 3 如果OPEN={},規(guī)劃路徑失敗。

步驟 4 從OPEN表中取出F值最小的節(jié)點n,n放入CLOSE表中。

步驟 5 如果n=t,規(guī)劃路徑成功,返回路徑。

步驟 6 計算所有n的后繼節(jié)點F值。

步驟 7 將不在OPEN表中的點加入OPEN表,否則比較F值,如果當(dāng)前計算的F值更小,則更新該節(jié)點的前驅(qū)節(jié)點為當(dāng)前節(jié)點。

步驟 8 返回步驟3。

為了進一步提高算法的尋路效率,使用改進的A*算法[19],將代價函數(shù)修改為

其中,w定義為

當(dāng)搜索區(qū)域靠近邊界時,權(quán)值w會減小以弱化線長的影響,能夠使算法規(guī)劃路徑速度更快,為w設(shè)置上下界w ∈(0.6,0.9)確保算法可接納性不受影響。此外,還使用小根堆來使A*算法最壞時間復(fù)雜度由O(n2)降為O(nlog2n)。

為證明所采用的構(gòu)造預(yù)估函數(shù)逃逸所需耗費的資源來引導(dǎo)初始解布線順序是有效的,使用另外兩種方法來代替預(yù)估函數(shù)計算的布線順序,選取給出的測試用例中引腳陣列規(guī)模較大的4個例子來對比3種方法構(gòu)建的初始解的總線長與布通率。對比結(jié)果如表1所示,其中,第1種是依照逃逸引腳的順序進行布線,第2種是距離可用邊界近的引腳優(yōu)先逃逸,第3種則是使用預(yù)估函數(shù)進行成本估計后確定逃逸順序。

表1、表2和表3中總線長以單元網(wǎng)格為基準(zhǔn)。從結(jié)果中可以看出,第3種方法在大規(guī)模陣列的布通率上有較大提高,在小規(guī)模陣列上也可以避免部分引腳進行不必要的繞行。

表1 3種順序選擇方法結(jié)果對比

表2 3種算法布線結(jié)果對比

3.2 擁擠區(qū)域線路調(diào)整

調(diào)整階段主要是對擁擠區(qū)域與可同長度布線的路徑進行優(yōu)化,策略是在不減少當(dāng)前已經(jīng)布好的線的情況下,對現(xiàn)有線的位置進行調(diào)整,釋放因布線順序所產(chǎn)生的無意義的資源占用。

3.2.1 同長度布線路徑優(yōu)化

同長度布線路徑優(yōu)化是指引腳選擇另一條相同程度的路線可以防止去其他引腳繞路前往終點,從而避免資源的浪費。如圖5所示,調(diào)整引腳2的布線方式,能夠使得引腳1在布線時使用更少的資源。

表3 3個階段布線結(jié)果對比

圖5為右側(cè)單邊逃逸,實線為已布好的線,虛線表示該引腳調(diào)整后的走線。

3.2.2 擁擠區(qū)域布線路徑調(diào)整

擁擠區(qū)域是指在一定區(qū)域內(nèi)線的排布使得某些引腳無法找到可行的邊界點作為自己的終點。如果邊界點集中有點i使式(7)成立

ki+1

則代表該區(qū)域?qū)τ谝_是擁擠的,如圖6所示。算法將對部分引腳進行重新布線,在不減少成功逃逸的引腳數(shù)量的前提下,為目標(biāo)引腳預(yù)留出可行的目標(biāo)終點。

本階段算法步驟如下:

輸入:已布線圖G,未逃逸引腳集合R。

輸出:布線路徑集合P。

步驟 1 讀入布線圖G與引腳R。

步驟 2 從引腳集合R中選取引腳r。

步驟 3 使用式(7)尋找引腳r的擁擠區(qū)域。

步驟 4 檢索擁擠區(qū)域兩側(cè)的空余邊界點。

圖5 同長度優(yōu)化調(diào)整示意圖

圖6 造成阻擋的擁擠區(qū)域布線調(diào)整示意圖

步驟 5 將已布好的線向兩側(cè)移動。步驟 6 對引腳r進行重新布線。

步驟 7 返回步驟2,直至集合為空。

3.3 拆線重布

如果經(jīng)過第2階段優(yōu)化后依然存在無法逃逸的引腳,則代表僅靠對現(xiàn)有線路的簡單調(diào)整無法給予該引腳足夠的資源,因此,將對圖中線路進行拆線重布來尋找所有引腳的逃逸方法。

3.3.1 基于A*算法的拆線重布

使用前兩個階段確定的邊界終點,A*算法能夠快速規(guī)劃路徑。

代價函數(shù)對于拆線重布階段至關(guān)重要,通過修改邊的代價將指引程序在不同的方向檢索可行路徑。若一條邊同時被多條線路選中,則該邊為擁擠邊,當(dāng)線路需要通過擁擠邊時,增加擁擠邊的代價會鼓勵程序考慮從其他位置布線。

因此,本階段邊的代價由代價函數(shù)確定

p為人為設(shè)定的懲罰系數(shù),目的是防止邊的代價的增長速度過快,定義為

如果某條邊的代價達到cmax,則代表布通率無法達到100%,程序?qū)⒆詈笠淮螌ξ刺右菀_隊列中的引腳進行布線后進入下一個步驟,cmax設(shè)為定值100。

對拆線重布效果有主要影響的另一個因素是布線順序,對每個引腳前一次布線的真實線長升序排列來確定布線順序可以有效地減少重布線的次數(shù),并且提高布線的質(zhì)量。

3.3.2 基于廣度優(yōu)先算法的拆線重布

由于預(yù)先確定的始末節(jié)點可能會導(dǎo)致算法無法找到合適的逃逸路徑,因此,在不預(yù)設(shè)邊界終點的情況下,使用基于廣度優(yōu)先算法進行第二輪拆線重布,當(dāng)算法檢索到邊界節(jié)點時,使用式(3)判斷該邊界節(jié)點是否符合要求。同時,代價函數(shù)重新定義如式(11)所示:

其中,p定義為常數(shù)1.1,廣度優(yōu)先搜索會消耗大量的時間,因此通過放大歷史代價來加快算法規(guī)劃路徑的速度,但是過多地增加邊的代價,會導(dǎo)致算法規(guī)劃的路徑繞行過多,為了平衡布線速度與總線長兩個方面,該常數(shù)設(shè)置為1.1時能在短時間內(nèi)得到較優(yōu)的布線結(jié)果。需要說明的是,如果經(jīng)過上一個步驟后全部引腳都能夠成功逃逸,則不進行這個步驟。

4 實驗結(jié)果及分析

由于知識產(chǎn)權(quán)限制,本文無法得到已發(fā)表論文中實現(xiàn)方法的源代碼。因此,本文對互聯(lián)網(wǎng)中開源的論文方法復(fù)現(xiàn)代碼進行修改調(diào)試,重新實現(xiàn)的程序可能由于計算機硬件以及其他各方面的差異,導(dǎo)致實驗結(jié)果與已發(fā)表的論文中結(jié)果有所不同。但在相同的測試案例中,我們復(fù)現(xiàn)的代碼的實驗結(jié)果與已有論文中的結(jié)果相差較小,因此,將復(fù)現(xiàn)代碼的實驗結(jié)果作為對比的實驗結(jié)果。

圖7 Case8最終布線結(jié)果圖

由于沒有行業(yè)基準(zhǔn)的有序逃逸布線測試用例,文獻[13—15]構(gòu)造了一些可布線的測試用例,并使用了一些文獻[15]中的測試用例用作對比,這些案例的引腳陣列規(guī)模由小到大,包含了單側(cè)、兩側(cè)、三側(cè)以及全方向的逃逸用例,同時也構(gòu)建了引腳間容量為2的測試用例來測試算法性能。實驗結(jié)果如表2所示,其中Row和Col代表引腳的行數(shù)和列數(shù),Pin表示需要逃逸的引腳數(shù)量,Cap表示引腳間的布線容量,Side則表示該引腳陣列有幾個方向可用于逃逸,其中帶*號的表示該結(jié)果為文獻[13—15]中的實驗結(jié)果。圖7則給出了Case8的布線結(jié)果圖。

實驗使用個人電腦CPU為Intel Core i5-6500,主頻為3.20 GHz。從表2可以看出,隨著引腳陣列規(guī)模的不斷增大,無論是使用SAT求解器,或是使用ILP求解器,都會因為約束式的大量增加,導(dǎo)致求解速度不斷下降,甚至是無法求解;而我們的算法在數(shù)據(jù)規(guī)模變大時,求解時間仍處在可接受的范圍內(nèi)。

算法的CPU時間相較于SAT算法結(jié)果平均提升約95.6%,相較于MMCF算法結(jié)果平均提升約97.8%。在大規(guī)模引腳陣列案例Case8中,與MMCF方法相比,總體線長減少約7.7%,布線時間減少約99.8%。在容量為2的測試用例中,SAT方法由于本身的限制,無法解決此類問題,而使用MMCF方法在規(guī)模較大的例子中會因為構(gòu)建的圖規(guī)模過大而需要消耗大量的CPU時間。而本文算法在可變?nèi)萘康那闆r下,依舊可以在短時間內(nèi)給出可行解,證明了算法的可行性。

為進一步分析算法效果,收集對比了部分測試用例經(jīng)過每一個階段后的布線率、總線長以及每一個階段的用時情況,結(jié)果如表3所示。可以看出,經(jīng)過第1階段的布線,剩余無法逃逸的引腳數(shù)量比例已經(jīng)很低。在經(jīng)過第2階段優(yōu)化調(diào)整后,總線長都有一定程度的減少,可以看出擁擠資源得到釋放。在第3階段結(jié)束后,所有的引腳都能夠成功逃逸,證明了該方法每個階段的有效性。從表中可以看出串行布線最耗費時間的階段是第3階段的拆線重布,并且從Case8與Case10 (圖8)的布線結(jié)果可以看出,拆線重布的次數(shù)過多會導(dǎo)致邊的代價過高使得算法無法找到最短路徑,因此,算法對于引腳的位置與順序較為敏感。

在通常情況下,專業(yè)設(shè)計的電路板器件,在于可布線性方面都進行過精心調(diào)整,器件內(nèi)部要逃逸的引腳不會出現(xiàn)大量無序、混亂的情況。綜上所述,算法無論是在學(xué)術(shù)方面,還是在工業(yè)設(shè)計中,都具有一定的優(yōu)勢。

5 結(jié)束語

圖8 Case10最終布線結(jié)果圖

針對現(xiàn)有的逃逸布線算法大都采用整數(shù)線性規(guī)劃等并行布線方法,在大規(guī)模引腳陣列中由于約束式過多導(dǎo)致運行速度慢,并且求得的解效果不佳甚至無法求解的情況。本文提出一種基于A*算法的串行有序逃逸布線算法。用預(yù)估函數(shù)判斷目標(biāo)終點,用改進的A*算法快速構(gòu)建初始解,用拆線重布對所有引腳進行布線。多個測試用例結(jié)果表明,總體質(zhì)量較高的逃逸布線能夠在較短時間內(nèi)完成,在規(guī)模最大的測試用例Case8中,效果提升最為明顯。本文提出的方法能夠有效提升布線速度與質(zhì)量。

隨著VLSI技術(shù)的發(fā)展,電路板器件集成度不斷提高,逃逸布線規(guī)模也不斷增大,求解時間急劇增加。因此,探索并改進串行布線算法,使算法能夠更好地求解更大規(guī)模的逃逸布線問題是我們今后研究的一個重點。此外,逃逸布線中的差分對以及分層問題的求解也是亟待解決的重點問題,設(shè)計一個合理的算法來綜合解決PCB自動布線方面的問題將是我們未來的研究方向。

猜你喜歡
方法
中醫(yī)特有的急救方法
中老年保健(2021年9期)2021-08-24 03:52:04
高中數(shù)學(xué)教學(xué)改革的方法
河北畫報(2021年2期)2021-05-25 02:07:46
化學(xué)反應(yīng)多變幻 “虛擬”方法幫大忙
變快的方法
兒童繪本(2020年5期)2020-04-07 17:46:30
學(xué)習(xí)方法
用對方法才能瘦
Coco薇(2016年2期)2016-03-22 02:42:52
最有效的簡單方法
山東青年(2016年1期)2016-02-28 14:25:23
四大方法 教你不再“坐以待病”!
Coco薇(2015年1期)2015-08-13 02:47:34
賺錢方法
捕魚
主站蜘蛛池模板: 中国国产一级毛片| 亚洲人精品亚洲人成在线| 2021国产精品自产拍在线| 青青青视频91在线 | 国产午夜福利在线小视频| 亚洲香蕉久久| 国产网站黄| 波多野结衣第一页| 国产精品美女免费视频大全| 日本三级欧美三级| 国产网友愉拍精品| 黄色网址免费在线| 欧美激情伊人| 欧美中文字幕无线码视频| 91精品网站| 国产精品亚洲五月天高清| 黄色网站不卡无码| 国产人妖视频一区在线观看| 都市激情亚洲综合久久| 97色婷婷成人综合在线观看| 亚洲综合日韩精品| 一级一级特黄女人精品毛片| 久久久久九九精品影院| 老色鬼久久亚洲AV综合| 久久天天躁夜夜躁狠狠| 人妻丰满熟妇αv无码| 激情爆乳一区二区| 在线免费亚洲无码视频| 一级毛片免费不卡在线| 日本欧美视频在线观看| 欧美日韩成人在线观看| 亚洲精品国产日韩无码AV永久免费网 | 中文字幕伦视频| 狠狠操夜夜爽| 精品国产欧美精品v| 蜜桃视频一区二区三区| 久草性视频| 露脸真实国语乱在线观看| 天堂岛国av无码免费无禁网站| 久久久久久高潮白浆| 欧美午夜理伦三级在线观看| 精品视频一区二区三区在线播| 在线欧美a| 国产亚洲精品在天天在线麻豆 | 国产福利在线观看精品| 亚洲日韩久久综合中文字幕| 欧美自慰一级看片免费| 午夜福利视频一区| 亚洲欧美日韩天堂| 青青草国产一区二区三区| 久草热视频在线| 亚洲精品无码不卡在线播放| www亚洲精品| 国产波多野结衣中文在线播放 | 国产99视频精品免费视频7| 亚洲综合片| 欧美国产三级| 成人国产精品视频频| 成人精品午夜福利在线播放| 成人免费一级片| 欧美一区二区自偷自拍视频| 91色老久久精品偷偷蜜臀| 久久精品91麻豆| 免费jjzz在在线播放国产| 欲色天天综合网| a毛片在线| 国产成人成人一区二区| 国产欧美在线观看一区| 免费人成网站在线观看欧美| 国产主播在线一区| 喷潮白浆直流在线播放| 一级毛片免费观看不卡视频| 久久精品视频亚洲| www.youjizz.com久久| 国产成人三级在线观看视频| 亚洲成人网在线播放| 无码区日韩专区免费系列| 亚洲av色吊丝无码| 亚洲第一成年网| 国产在线自在拍91精品黑人| 国产欧美中文字幕| 亚洲资源站av无码网址|