本發(fā)明屬于電子設(shè)計(jì)自動(dòng)化,具體涉及一種基于拓?fù)鋭澐值?35度pcb詳細(xì)布線方法。
背景技術(shù):
1、詳細(xì)布線是pcb自動(dòng)布線算法的重要一環(huán),在全局布線結(jié)果的指導(dǎo)下確定每個(gè)布線區(qū)域?qū)嶋H的走線軌跡,決定著布線算法的質(zhì)量與可行性,屬于路徑規(guī)劃問(wèn)題的范疇。pcb詳細(xì)布線是將全局布線的大致規(guī)劃結(jié)果作為輸入,在滿足各種drc限制的條件下進(jìn)行不交叉的避障布線,獲得完整的走線,連接相對(duì)應(yīng)的每對(duì)線網(wǎng),獲得自動(dòng)布線最后的結(jié)果,且該方法是適用于135度角限制的布線方法。在滿足各種布線規(guī)則的基礎(chǔ)上,應(yīng)該使走線長(zhǎng)度盡可能的短且規(guī)整,以減少由走線長(zhǎng)度帶來(lái)的時(shí)延等問(wèn)題。詳細(xì)布線階段著重考慮空間約束和各類設(shè)計(jì)規(guī)則,布線結(jié)果不應(yīng)違反設(shè)計(jì)規(guī)則約束,多次拐彎的鋸齒形布線結(jié)果會(huì)造成不必要的電阻消耗。
2、隨著集成電路技術(shù)的發(fā)展,pcb板上的多芯片模塊、i/o引腳和各類存儲(chǔ)器上的總線結(jié)構(gòu)越來(lái)越多,人工手動(dòng)布線的效率低下,越來(lái)越難滿足布線需要,于是效率高、布通率高且穩(wěn)定的自動(dòng)總線布線算法就成為行業(yè)亟需的。
3、傳統(tǒng)的詳細(xì)布線算法多采用試探回溯策略,應(yīng)用于高密度,多線網(wǎng),復(fù)雜設(shè)計(jì)規(guī)則的pcb板布線時(shí),時(shí)間性能與空間性能較差且布通率較低。傳統(tǒng)的詳細(xì)布線也是采用基于網(wǎng)格構(gòu)圖的算法,但隨著工藝節(jié)點(diǎn)的進(jìn)步,網(wǎng)格圖會(huì)變得非常密集,算法效率也大打折扣。早期詳細(xì)布線問(wèn)題可分為通道布線和開(kāi)關(guān)盒布線兩類,國(guó)內(nèi)外學(xué)者都對(duì)其進(jìn)行了深入研究。近年來(lái)一些基于最大獨(dú)立集或多物流網(wǎng)絡(luò)的詳細(xì)布線方案被提出,2018年的ispd詳細(xì)布線比賽中,kahng等人提出基于整數(shù)線性規(guī)劃的并行詳細(xì)布線器tritonroute,經(jīng)過(guò)不斷優(yōu)化最新的tritonroute布線器成為目前學(xué)術(shù)界最好的布線工具。詳細(xì)布線問(wèn)題已被廣泛研究了50多年,但基本的物理和電路限制依舊存在,詳細(xì)布線階段不得布考慮越來(lái)越復(fù)雜的設(shè)計(jì)規(guī)則,這也給詳細(xì)布線器的架構(gòu)和策略都提出了新的挑戰(zhàn)。近年來(lái)還有一些基于啟發(fā)式的自動(dòng)布線算法被提出,提高了求解速度,但該類算法容易陷入局部極值而找不到最優(yōu)解。
技術(shù)實(shí)現(xiàn)思路
1、本發(fā)明的目的在于針對(duì)現(xiàn)有技術(shù)存在的缺陷和不足,提供一種基于拓?fù)鋭澐值?35度pcb詳細(xì)布線方法,該方法針對(duì)pcb布線的一般應(yīng)用場(chǎng)景,設(shè)計(jì)一種自動(dòng)區(qū)域布線算法來(lái)解決pcb板區(qū)域布線問(wèn)題,進(jìn)而提高pcb板區(qū)域布線的效率。
2、為實(shí)現(xiàn)上述目的,本發(fā)明的技術(shù)方案是:一種基于拓?fù)鋭澐值?35度pcb詳細(xì)布線方法,包括:
3、步驟s1、對(duì)所有的單邊構(gòu)建復(fù)合邊,再進(jìn)行預(yù)先避障,將與障礙物相連的復(fù)合邊提前截?cái)嗵幚恚?/p>
4、步驟s2、計(jì)算每段復(fù)合邊的擁擠程度,暫時(shí)移除擁擠程度超過(guò)預(yù)設(shè)閾值的走線,并對(duì)一條復(fù)合邊中不可能有交集的不同區(qū)間段進(jìn)行劃分切割;
5、步驟s3、根據(jù)形成的新的復(fù)合邊通過(guò)序列,構(gòu)造拓?fù)洳季€依賴圖,并生成布線區(qū)域優(yōu)先隊(duì)列;
6、步驟s4、根據(jù)布線區(qū)域優(yōu)先隊(duì)列,逐個(gè)取出,依次對(duì)每個(gè)被劃分的小區(qū)域進(jìn)行邊到邊的詳細(xì)布線;
7、步驟s5、將步驟s2中暫時(shí)移除的走線恢復(fù)至布線過(guò)程中,通過(guò)已有走線的周?chē)臻g情況,推擠已有走線,讓出走線空間;
8、步驟s6、利用三角劃分構(gòu)圖算法,建立走線之間的周?chē)臻g關(guān)系圖,移動(dòng)調(diào)整已有走線,優(yōu)化走線的冗余長(zhǎng)度,并規(guī)整走線形態(tài)。
9、在本發(fā)明一實(shí)施例中,步驟s1中,對(duì)所有的單邊構(gòu)建復(fù)合邊的方式為:根據(jù)前置全局布線規(guī)劃所獲得的走線通過(guò)邊序列,合并單邊為新的復(fù)合邊。
10、在本發(fā)明一實(shí)施例中,步驟s1的具體實(shí)現(xiàn)方式為:在進(jìn)行詳細(xì)布線之前的全局布線規(guī)劃獲得的是每一條完整走線軌跡的通過(guò)邊序列,這些通過(guò)邊是單邊,即全局布線規(guī)劃所用的規(guī)整單邊;合并首尾相連共線且中間不存在障礙物的規(guī)整單邊,形成復(fù)合邊,從而使得每個(gè)軌跡在邊上的通過(guò)點(diǎn)有較大的合法調(diào)整空間,且便于將一些相互之間有關(guān)系的通過(guò)點(diǎn)放在同一線段上同時(shí)考慮;接著對(duì)所有形成的復(fù)合邊進(jìn)行裁切截?cái)啵@是由于,走線與障礙物之間均有最小間距的drc限制:
11、distance_min=n*line_width
12、distance_min為drc規(guī)則允許下的最小間距,line_width為線寬,n為系數(shù),n可取的最小值即能讓distance_min滿足drc規(guī)則的最小值,n能夠由用戶自定義更大的系數(shù)值。
13、在本發(fā)明一實(shí)施例中,步驟s2中,為避免局部過(guò)度擁擠導(dǎo)致過(guò)多的相關(guān)布線失敗,在此先對(duì)每條復(fù)合邊上的通過(guò)點(diǎn)做擁擠程度的預(yù)估判斷;每條完整軌跡都維護(hù)一個(gè)擁擠值,擁擠值由相應(yīng)軌跡的復(fù)合邊序列的擁擠程度來(lái)計(jì)算得出;每條復(fù)合邊的擁擠程度計(jì)算方式如下:
14、points_max=composite_edge_width/(n*line_width)
15、limit=points_max*ht(0<t<1)
16、
17、
18、其中points_max為理論上能通過(guò)的最多邊數(shù);limit是擁擠閾值,當(dāng)復(fù)合邊上的通過(guò)點(diǎn)數(shù)量points小于limit,那么認(rèn)為相應(yīng)復(fù)合邊不存在擁擠情況,不需要計(jì)算擁擠值;當(dāng)points大于limit時(shí),計(jì)算相應(yīng)復(fù)合邊的擁擠值crowded_edge;累加一條走線軌跡相關(guān)的所有通過(guò)復(fù)合邊的擁擠值,獲得軌跡的擁擠值crowded_track;設(shè)定一個(gè)值crowded,當(dāng)crowded_track值高于crowded時(shí),相應(yīng)軌跡放入暫時(shí)移除走線集合中;
19、對(duì)一些邊到邊之間的通過(guò)點(diǎn)可達(dá)距離進(jìn)行測(cè)試,拆分同一復(fù)合邊上不可能有通過(guò)點(diǎn)交集的兩段區(qū)間,對(duì)復(fù)合邊進(jìn)行進(jìn)一步劃分。
20、在本發(fā)明一實(shí)施例中,步驟s3中,統(tǒng)一規(guī)定以橫坐標(biāo)增大的方向和縱坐標(biāo)增大的方向?yàn)閮蓚€(gè)正方向,那么在兩條直接相鄰或者直接相對(duì)的邊和邊中,基于全局布線規(guī)劃本身存在走線不交叉的特性,劃分出相應(yīng)區(qū)域內(nèi)整體走線形成的方向,將劃分出來(lái)的區(qū)域當(dāng)做一個(gè)有向邊,構(gòu)造整個(gè)布線圖的無(wú)環(huán)拓?fù)浣Y(jié)構(gòu),即形成一個(gè)或者多個(gè)有向無(wú)環(huán)圖,對(duì)構(gòu)造出來(lái)的圖做拓?fù)渑判?,獲得布線區(qū)域優(yōu)先隊(duì)列,布線區(qū)域優(yōu)先隊(duì)列即按照隊(duì)列順序逐個(gè)處理布線區(qū)域,即一個(gè)布線區(qū)域可以被處理的前置條件是它的拓?fù)渑判蚯暗乃胁季€區(qū)域已完成布線。
21、在本發(fā)明一實(shí)施例中,步驟s4中,將布線區(qū)域優(yōu)先隊(duì)列中的布線區(qū)域逐個(gè)取出處理,按照布線區(qū)域的規(guī)定方向,依次將出發(fā)復(fù)合邊中的軌跡通過(guò)點(diǎn)作為出發(fā)點(diǎn),目標(biāo)復(fù)合邊中相對(duì)應(yīng)的規(guī)劃預(yù)計(jì)點(diǎn)作為目標(biāo)點(diǎn),對(duì)于已完成的布線,暫時(shí)將其視為固定的障礙物,調(diào)用改進(jìn)的135度角限制的a*算法進(jìn)行避障尋路,逐個(gè)完成后即完成相應(yīng)布線區(qū)域的邊到邊布線;其中改進(jìn)的135度角限制的a*算法如下:
22、f(x)=h(x)+g(x)
23、h(x)=∑line_length
24、
25、其中h(x)為相應(yīng)布線區(qū)域中走線已經(jīng)過(guò)的線長(zhǎng)總和,作為當(dāng)前軌跡點(diǎn)已消耗的路徑代價(jià)值,其中的line_length為走線軌跡的每一段線段長(zhǎng)度,g(x)中(xtrack,ytrack)為當(dāng)前搜索點(diǎn)的坐標(biāo),(xaim,yaim)為目標(biāo)復(fù)合邊上通過(guò)點(diǎn)的坐標(biāo),α和β為算法所定義的權(quán)重,g(x)表示a*算法函數(shù)f(x)中的預(yù)測(cè)路徑代價(jià)值部分,且算法搜索過(guò)程中的擴(kuò)展方向受135度條件限制,單次只能有三個(gè)移動(dòng)方向,對(duì)于同一條走線軌跡的搜索過(guò)程,step=h(xi+1)-h(xi),步長(zhǎng)step的大小在很大程度上決定了走線軌跡的搜索迭代次數(shù)和繞障能力,可根據(jù)算法效果調(diào)整相應(yīng)的值大小,在障礙物稀疏的地方可以加大step的取值,減少在空曠空間中的迭代次數(shù);在障礙物密集的地方減小step的值,力求更精細(xì)化的繞障。
26、在本發(fā)明一實(shí)施例中,步驟s5中,將步驟s2中暫時(shí)移除的走線和步驟s4中未成功的走線逐條恢復(fù)至布線過(guò)程中,在某個(gè)布線區(qū)域內(nèi),對(duì)于相應(yīng)走線在出發(fā)復(fù)合邊上的通過(guò)點(diǎn),將其上下兩個(gè)相鄰?fù)ㄟ^(guò)點(diǎn)所在的布線區(qū)域軌跡分別作為兩個(gè)方向的起始推擠邊,若布線區(qū)域中兩個(gè)相鄰點(diǎn)之間的軌跡寬度均足以再通過(guò)一條符合drc規(guī)則的走線,那么直接對(duì)相應(yīng)走線調(diào)用改進(jìn)的135度角限制的a*算法,否則使用推擠函數(shù):
27、
28、其中f(d)為相鄰走線的受力情況,k為可調(diào)整的常數(shù)參數(shù)值,將要被計(jì)算的兩個(gè)點(diǎn)坐標(biāo)分別設(shè)為(dx1,dy1)、(dx2,dy2),受力f(d)的方向由當(dāng)前相鄰走線和預(yù)計(jì)走線的相對(duì)位置來(lái)確定,dis為當(dāng)前這條相鄰走線和另一側(cè)已存在軌跡或障礙物的加權(quán)距離值,距離越大,表示這一側(cè)空間越大,受力f(d)就越小,會(huì)被另一側(cè)更大的受力所推動(dòng),實(shí)現(xiàn)軌跡的相對(duì)移動(dòng),逐個(gè)波及移動(dòng)相應(yīng)布線區(qū)域內(nèi)的軌跡,為還未布線的走線留出空間,去完成剩余的布線,ε為調(diào)節(jié)參數(shù)。
29、在本發(fā)明一實(shí)施例中,步驟s6中,由于步驟s5的推擠過(guò)程中推開(kāi)空間的盲目性,以及步驟s5之前布線也只是考慮成功率,所以形成的整體走線形態(tài)可能不是理想的,利用三角劃分構(gòu)圖算法,對(duì)已成功布線的進(jìn)行線長(zhǎng)和形態(tài)的調(diào)整,以獲得規(guī)整的走線。
30、本發(fā)明還提供了一種基于拓?fù)鋭澐值?35度pcb詳細(xì)布線系統(tǒng),包括存儲(chǔ)器、處理器以及存儲(chǔ)于存儲(chǔ)器上并能夠被處理器運(yùn)行的計(jì)算機(jī)程序指令,當(dāng)處理器運(yùn)行該計(jì)算機(jī)程序指令時(shí),能夠?qū)崿F(xiàn)如上述所述的方法步驟。
31、本發(fā)明還提供了一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其上存儲(chǔ)有能夠被處理器運(yùn)行的計(jì)算機(jī)程序指令,當(dāng)處理器運(yùn)行該計(jì)算機(jī)程序指令時(shí),能夠?qū)崿F(xiàn)如上述所述的方法步驟。
32、相較于現(xiàn)有技術(shù),本發(fā)明具有以下有益效果:
33、(1)與傳統(tǒng)的網(wǎng)格布線不同,該算法在為線網(wǎng)規(guī)劃路線時(shí)采取復(fù)合邊,以便在布線靈活性和運(yùn)行效率之間進(jìn)行良好的權(quán)衡;
34、(2)在布線過(guò)程中,走線拐彎是不可避免的,如果是拐角為直角,在拐角處會(huì)產(chǎn)生額外的寄生電容和電感。根據(jù)當(dāng)前構(gòu)造的復(fù)合網(wǎng)格以及節(jié)點(diǎn)的位置關(guān)系采用了135度構(gòu)圖方案;
35、(3)結(jié)合一種新的基于歷史成本的改進(jìn)啟發(fā)函數(shù)配合推擠空間算法,考慮邊通量和布線擁塞的同時(shí)優(yōu)化可布線性;
36、(4)最后采用一種有效的優(yōu)化走線方法對(duì)已有布線進(jìn)行調(diào)整,以進(jìn)一步提高布線質(zhì)量。
37、實(shí)驗(yàn)結(jié)果表明,本發(fā)明方法能夠在較快時(shí)間內(nèi)獲得較好的布線結(jié)果,并且有良好的通用性。