系統(tǒng)級封裝中總線在單邊單繞約束下的解繞方法
【專利摘要】系統(tǒng)級封裝中總線在單邊單繞約束下的解繞方法,其特征在于,根據(jù)頂部最左邊總線信號與其底部互連信號水平間距的大小和底部最左邊總線信號與其互連頂部信號水平間距的大小,選取一對總線信號互連后,采用劃分子問題的方法生成子問題,并用遞歸的方法依次解決所有子問題;如果所有子問題是有可行解,則原問題有可行解,如存在某個子問題無可行解,則原問題在單邊單繞道條件下無可行解。
【專利說明】系統(tǒng)級封裝中總線在單邊單繞約束下的解繞方法
【技術(shù)領(lǐng)域】
[0001]系統(tǒng)級封裝中總線在單邊單繞約束下的解繞方法,屬于集成電路設(shè)計中的芯片總線互連領(lǐng)域。
【背景技術(shù)】
[0002]當(dāng)前超大規(guī)模集成電路設(shè)計中隨著規(guī)模越來越大,設(shè)計者需要在更多更嚴(yán)格的物理限制下對越來越多的芯片進行互連,由于規(guī)模的增大導(dǎo)致的傳統(tǒng)的人工設(shè)計方法已經(jīng)不適應(yīng)產(chǎn)業(yè)的發(fā)展。需要設(shè)計出能夠自動實現(xiàn)可在特定條件下,如長度匹配,信號對約束等條件下的芯片互連工具。芯片互連中的芯片的信號順序也是在互連工具設(shè)計中一個不可忽視的因素,芯片由不同的廠家生產(chǎn)制造,這導(dǎo)致他們之間的總線信號順序不一定完全相同,簡單的直接按對應(yīng)位置互連有可能會產(chǎn)生信號混亂。在兩個芯片信號序列不一定相同的情況下,需要通過一種預(yù)處理技術(shù)把不同順序的總線信號進行重排序,使重排序后兩個芯片的總線信號在同一塊電路版的同一層上能以簡單的直接連接方式實現(xiàn)不相交的相連。如圖1,當(dāng)我們需要將芯片I上信號(1-6)與芯片2上信號(1-6)在同一層上實現(xiàn)互連時,因為在芯片的系統(tǒng)封裝中將信號從角針陣列里路由到芯片邊界時他們的信號排列不一定相同,如圖中頂部信號序列為{2,1,4,5,6,3},而底部信號在解繞區(qū)形成的信號序列為{1,2,3,4,5,6} 0為了實現(xiàn)兩個芯片能同一層平面中實現(xiàn)直接互連,所以需要對他們的順序在解繞區(qū),按要求進行調(diào)整,以實現(xiàn)兩個信號的排列順序相同,便于在長度匹配布線中可以不出現(xiàn)交叉的情況下互連。單邊單繞道的約束下的總線信號互連方法就是一種有效的總線信號互連解繞布線技術(shù)。單邊單繞道指在同一個平面內(nèi)實現(xiàn)兩列信號對應(yīng)相連時,連線的繞道只能夠在某列信號的同一邊區(qū)域進行,而所有的連線在此列信號另一邊區(qū)域的部分只能是一條直線。如圖2中的繞道區(qū)域為頂部信號上部(虛線矩形區(qū))。如果兩組總線信號能夠在單邊單繞道的約束下完成互連,這方法可以在線性的時間內(nèi)給出互連結(jié)果。
【發(fā)明內(nèi)容】
[0003]在超大規(guī)模集成電路設(shè)計中,系統(tǒng)級封裝中總線在單邊單繞道約束下的解繞方法可以應(yīng)用于在兩個具有不同信號順序的總線信號的芯片上進行相連,如果在單邊單繞道的約束下,有不相交連接可能性,則本算法可給出解繞后的連接結(jié)果。
[0004]本發(fā)明的特征在于,它是在計算機中依次按照以下步驟實現(xiàn)的:
[0005]步驟(1),初始化,設(shè)頂部焊點序列為(%’,&2’,&3’.......an’),底部焊點序列為
(V,V,V,.....bn,),
[0006]輸入:
[0007]所有頂部焊點上需要解繞的相應(yīng)總線信號組成的頂部信號序列
Ca1, a2, a3.......an),n為頂部總線信號個數(shù),與頂部焊點個數(shù)相同,Ca1, a2, a3.......an)是
由自然數(shù)序列{1,2,3,4,......,η}生成的一個排列,信號aek, i e [I,n], k e [I,η],表
示頂部信號k在頂部焊點a/上;[0008]所有底部焊點上需要解繞的相應(yīng)總線信號組成的底部信號序列(bi,b2,b3,….bn),η為底部總線信號個數(shù),與所述頂部總線信號個數(shù)η在數(shù)值上相等,(b” b2, b3,…..bn)也是由同一個自然數(shù)序列{1,2,3,4,…η}生成的一個排列,信號bj=k,j∈ [l,n],ke [1,η],表示底部信號k在底部焊點b/上;
[0009]初始時,所述頂部總線信號序列Upaha3.......an)與底部總線信號序列
(bn b2,b3,…..bn)中,頂部信號屮與底部信號bj的互連表示為ai=k,bj=k,其中i e [I,n], j ∈ [1, n], k e [I, η],如圖 3;
[0010]步驟(2),按以下方法對總線信號進行重命名:
[0011]對底部總線信號序列(bp b2,b3,…..bn)中的每一個信號bj,j e [l,n],重命名b/以及與bj互連的對應(yīng)的頂部信號a”使%=_]_,1^=」;結(jié)果使底部信號序列為
(b1; b2, b3.....bn) = (l、2、3、......η),頂部信號序列 Ca1, a2, a3.......an)為序列(1、2、
3.......η)的一個新生成序列,如圖4;
[0012]步驟(3),對每一個底部信號by,把與其相連接的頂部信號ax所在的頂部焊點序列中的相對位置表示為1^],使&_與\相連,對于每一個頂部信號%,1£ [I, η],設(shè)置T [aj =i,得到 T [I],T [2],T [3],......T [η]; [0013]步驟(4),設(shè)定:以X表示頂部起始信號位置,
[0014]以y表示底部起始信號位置,
[0015]以s表示總線信號對個數(shù),
[0016]則總線信號的解繞問題表示為sub (X,y, s), X e [I, n], y e [I, n], s由相互有連接關(guān)系的頂部總線信號底部總線信號組成的總線信號對的個數(shù),對于頂部總線信號序列而
言,表不為(ax, ax+1,......SxH),對于底部總線信號序列而言,表不為(by, by+l..by + s—j ;從
而,初始化時的兩個總線信號序列的互連解繞問題表示為sub(l,I, s),總線在單邊單繞條件下的解繞問題轉(zhuǎn)化為在給定初始條件下的sub (X,y, s)問題;單邊是指連線只能在頂部信號序列區(qū)或是底部邊信號序列區(qū)繞道,單繞是指連線繞道數(shù)只能為I ;
[0017]步驟(5),對于所述的解繞問題SUb(x,y,S),按頂部總線信號下標(biāo)x不同的取值和底部總線信號下標(biāo)I的不同取值,構(gòu)建一個對應(yīng)于所有總線信號的解繞子問題列表:LIST,初始解繞子問題為sub (1,1,η),把初始問題存入LIST;
[0018]步驟(6),從所述解繞子問題列表LIST中取出一個子問題sub (X,y, s),依次按以下步驟解繞;
[0019]步驟(6.1),底部總線信號b[ax]與頂部第一個總線信號ax互連,以by表示底部總線信號左邊第一個信號,計算底部總線信號b[ax]與底部最左邊信號by的水平間距,簡稱P,表不信號b[ax]與信號by之間的信號個數(shù),包括b[ax]與信號by ;則:p=ax_y+l,如圖5;
[0020]步驟(6.2),頂部總線信號atW與底部第一個總線信號by互連,以ax表示頂部總線信號左邊第一個信號,計算頂部總線信號at[y]與頂部最左邊信號ax的水平間距,簡稱q,表不信號at[y]與信號ax之間的信號個數(shù),包括信號at[y]與信號ax,則q=t[y]_x+l,,如圖5;
[0021]步驟(6.3),判斷條件p〈l,或p>s,或q〈l,或q>s是否成立;
[0022]若:如果有一個條件成立,則表示初始子問題sub(l,l,n)中頂部總線信號
(--,?.......an)與底部總線信號(bp b2,b3,……bn),在單邊單繞條件下沒有可行解,
程序結(jié)束;[0023]若:沒有一個條件成立,則根據(jù)當(dāng)前P,q值的大小,根據(jù)下述不同情況,選擇一對總線信號互連,并生成子問題,信號對互連方法及子問題生成方法如下;
[0024]步驟(6.3.1),如果p=q=l時,把頂部信號ax與底部信號\直接相連,如圖6,
如s-Ι幸O,則sub(x,y, s)問題中剩余未連結(jié)頂部信號(ax+1, ax+2,......a-H)與未連接的
底部信號(by+1, by+2.....byn)之間的互連解繞組成新問題子sub(x+l, y+1, s_l),并把
sub (x+1, y+1, s-1)壓入 LIST ;[0025]步驟(6.3.2),如果p≤q=s,,把頂部信號與底部左邊第一個信號by通過頂部信號ax與頂部信號之間的通道相連,如圖7,然后原問題sub (X,y, s)中剩余未
連結(jié)頂部號(?, ax+l,......a;£+q-2)與未連接的底部號(by+1, by+2.....byn)組成新問題
sub (X,y+1, s-1),并把此子問題壓入LIST ;
[0026]步驟(6.3.3),如果ρ≤q關(guān)S,,把頂部信號aT[y]與底部第一個總線信號by通過頂部信號ax與頂部信號之間的通道相連,如圖8,然后把問題sub(X,y,s)中未連結(jié)信號轉(zhuǎn)化為兩個子問題:(1)頂部未連結(jié)信號子序列(ax,ax+1,……ax+(r2)與底部未連結(jié)信號子序
列(by+1, by+2.....by+(rl)形成子問題 sub (x, y+1, q_l),⑵頂部未連結(jié)信號(ax+q,ax+q+1,......ax+s-!)與底部未連結(jié)信號(by+q,by+q+1.....byn)形成子問題sub (x+q, y+q, s_q),并把此兩
個子問題壓入LIST ;
[0027]步驟(6.3.4),如果s=p>q,把信號ax與信號by+s_i通過信號與信號ax+s之間
通道相連,如圖9,然后把問題sub (X,y, s)中頂部未連結(jié)信號(ax+1, ax+2,......與底部
未連結(jié)信號(by,by+1.....by+s_2)組成子問題:sub (x+1, y, s_l),并把子此問題壓入LIST ;
[0028]步驟(6.3.5),如果s>p>q,把信號ax與信號by#通過信號與信號ax+p之間通道相連,如圖10,然后把問題sub(x,y,s)中未連結(jié)信號轉(zhuǎn)化為兩個子問題:(1)
頂部未連結(jié)信號(ax+1, ax+2,......ax+p_2)與底部未連結(jié)信號(by, by+1.....by+p_2)形成子
問題sub (x+1, y, p-1),⑵頂部未連結(jié)彳目號(ax+p, ax+p+1,......a^s1-1)與底部未連結(jié)?目號
(by+p, by+p+1.....byn)形成子問題sub (x+p, y+p, s-p),并把此兩個子問題壓入LIST ;
[0029]步驟(7),重復(fù)執(zhí)行步驟(6),直到所有的子問題都有解,若存在一個子問題無可行解,則單邊單繞條件下原問題無可行解。
[0030]發(fā)明的效果
[0031]本發(fā)明可以應(yīng)用于在系統(tǒng)級封裝中總線互連的前期預(yù)處理階段,對于能夠在單邊單繞條件下實現(xiàn)互連的兩列總線信號,能夠在線性時間復(fù)雜度里調(diào)整好其信號順序,為互連后階段的其他程序打下基礎(chǔ)。
【專利附圖】
【附圖說明】
[0032]圖1不同信號順序芯片互連,
[0033]圖2單邊單繞道示意圖,
[0034]圖3初始總線信號序列,
[0035]圖4總線信號重命名,
[0036]圖5計算P, q值,
[0037]圖6sub(x, y, s)子問題,當(dāng)p=q=l時的互連與劃分,
[0038]圖7sub(x, y, s)子問題,當(dāng)p〈q=s時的互連與劃分,[0039]圖8sub(x, y, s)子問題,當(dāng)p〈q〈s時的互連與劃分,
[0040]圖9sub(x, y, s)子問題,當(dāng)s=p>q時的互連與劃分,
[0041]圖1Osub (X,y, s)子問題,當(dāng)l〈q〈p〈s時的互連與劃分,
[0042]圖11實例初始問題sub (1,1,8),
[0043]圖12 解繞子問題 sub (I, 2,5),
[0044]圖13 解繞子問題 sub (7,7,2),
[0045]圖14最終結(jié)果,
[0046]圖15本發(fā)明的程序流程圖,
【具體實施方式】
[0047]本發(fā)明能夠 針對不同信號順序的總線信號進行快速互連。在下面的一個簡單演示實驗中,我們將實現(xiàn)一個簡單的兩個具有不同順序的總線信號的在單邊單繞道約束下的互連。這里我們假設(shè)已經(jīng)完成對總線信號的重命名,底部總線信號(bplv'.lO順序為(1,2,3,4,5,6,7,8),頂層總線信號(&1,&2....&η)順序為(6,5,4,2,3,1,8,7)。如圖 11,其詳細解繞過程如下:
[0048]1.對于每一個頂部信號 a” i e [1:8],設(shè)置 T[aj =i ;T[6] =1;T[5] =2;T[4] =3;T[2] =4; T [3] =5; T [I] =6; T [8] =7; T [7] =8.得到 T [I],T [2]…T [8].[0049]2.構(gòu)造子問題Sub (1,1,8)并壓入LIST序列;
[0050]3.從 LIST 中取出子問題 sub (1,1,8),計算 p, q 值,; q=T[I]-χ+1=6-1+1=6;
[0051]4.判斷條件:p〈l,或p>s,或q〈l,或q>s結(jié)果不成立。
[0052]5.因p=q〈s=8,連接a6, Id1,原問題劃分為兩個子問題sub (1,2,5)和sub (7,7,2),并把此兩子問題壓入LIST列表,如圖11 ;
[0053]6.取出子問題sub (1,1,6),以的類似的方法解決,見圖12;
[0054]7.取出子問題sub (7,7,2),以的類似的方法解決,具體見圖13;
[0055]本例子的最終解繞互連結(jié)果如圖14.[0056]本發(fā)明所述的單邊單繞道約束下的總線信號互連方法具有以下幾個優(yōu)點:
[0057](I).能在線性的復(fù)雜度內(nèi)對兩個芯片之間的一組信號互連是否能在平面實現(xiàn)在單邊繞道條件下的互連進行判斷;
[0058](2).如有可行解,可同時給出互連方案;
[0059](3).具有工業(yè)應(yīng)用價值,可以用于集成電路設(shè)計過程中的布線及芯片互連領(lǐng)域。
【權(quán)利要求】
1.系統(tǒng)級封裝中總線在單邊單繞約束下的解繞方法,其特征在于,它是在計算機中依次按照以下步驟實現(xiàn)的: 步驟(1),初始化,設(shè)頂部焊點序列為(a/,a2’,a3’.......an’),底部焊點序列為(V,V,V,.....bn,), 輸入: 所有頂部焊點上需要解繞的相應(yīng)總線信號組成的頂部總線信號序列Ca1, a2, a3.......an),n為頂部總線信號個數(shù),與頂部焊點個數(shù)相同,Ca1, a2, a3.......an)是由自然數(shù)序列{1,2,3,4,......,η}生成的一個排列,信號aek, i e [I,n], k e [I,η],表示頂部信號k在頂部焊點a/上; 所有底部焊點上需要解繞的相應(yīng)總線信號組成的底部信號序列(bi,b2,b3,.....bn), η為底部總線信號個數(shù),與所述頂部總線信號個數(shù)η在數(shù)值上相等,(bi,b2,b3,.....bn)也是由同一個自然數(shù)序列{1,2,3,4,…η}生成的一個排列,信號b」=k,j e [I,n], k e [I,η],表示底部信號k在底部焊點b/上; 初始時,所述頂部總 線信號序列U1, a2, a3.......an)與底部總線信號序列(b1; b2, b3,……bn)中,頂部信號%與底部信號bj的互連表示為ai=k,b」=k,其中i e [1,n], j e [I, n], k e [I, η]; 步驟(2),按以下方法對總線信號進行重命名: 對底部總線信號序列0? b2, b3,.....bn)中的每一個信號bj, j e [I, η],重命名bj以及與bj互連的對應(yīng)的頂部信號a”使%=上1^=」;結(jié)果使底部信號序列為(b1; b2, b3,.....bn) = (l、2、3、......η),頂部信號序列(a” a2, a3.......an)為序列(1、2、.3.......n)的一個新生成序列; 步驟(3),對每一個底部信號by,y e [1,11],把與其相連接的頂部信號\所在的頂部焊點序列的相對位置表示為1^],使&_與\相連,對于每一個頂部信號%,1£ [I, η],設(shè)置 T[ai]=i,得到 T[l],T[2],T[3],......T[η]; 步驟(4),設(shè)定:以X表示頂部起始信號序列位置, 以I表示底部起始信號序列位置, 以s表示總線信號對個數(shù), 則總線信號的解繞問題表示為Sub (X,y, s), X e [I, n], y e [I, η],s由相互有連接關(guān)系的頂部總線信號和底部總線信號組成的總線信號對的個數(shù),對于頂部總線信號序列而言,表示為(ax,ax+1,ax+2,.......,對于底部總線信號序列而言,表示為(by, by+1, by+2.........by+s_l);從而,初始化時的兩個總線信號序列的互連解繞問題表示為sub (1,I, S),總線在單邊單繞條件下的解繞問題轉(zhuǎn)化為在給定初始條件下的sub (x, y, s)問題;單邊是指連線只能在頂部信號序列區(qū)或是底部邊信號序列區(qū)繞道,單繞是指連線繞道數(shù)只能為I ; 步驟(5),對于所述的解繞問題sub (x, y, s),按頂部總線信號下標(biāo)X不同的取值和底部總線信號下標(biāo)y的不同取值,構(gòu)建一個對應(yīng)于所有總線信號的解繞子問題列表:LIST,初始解繞子問題為sub (1,1,η),把初始問題存入LIST; 步驟(6),從所述解繞子問題列表LIST中取出一個子問題sub(X,y,s),依次按以下步驟解繞;步驟(6.1),底部總線信號b [aj與頂部左邊第一個總線信號ax互連,以by表示底部總線信號左邊第一個信號,計算底部總線信號b[ax]與底部最左邊信號by的水平間距,簡稱p,表示信號b[ax]與信號\之間的信號個數(shù),包括b[ax]與信號by;則:p=ax-y+l; 步驟(6.2),頂部總線信號atW與底部第一個總線信號by互連,以ax表示頂部總線信號左邊第一個信號,計算頂部總線信號at[y]與頂部最左邊信號ax的水平間距,簡稱q,表示信號at[y]與信號ax之間的信號個數(shù),包括信號atW與信號ax,則q=t[y]_X+l ; 步驟(6.3),判斷條件p〈l,或p>s,或q〈l,或q>s是否成立; 若:如果有一個條件成立,則表示初始子問題sub (I, I, η)中頂部總線信號(ai,a2,a3.......an)與底部總線信號(bp b2,b3,……bn),在單邊單繞條件下沒有可行解,程序結(jié)束; 若:沒有一個條件成立,則根據(jù)當(dāng)前P,Q值的大小,根據(jù)下述不同情況,選擇一對總線信號互連,并生成子問題,信號對互連方法及子問題生成方法如下; 步驟(6.3.1),如果p=q=l時,把頂部信號ax與底部信號by直接相連,如s_l幸O,則Sub (X,y, s)問題中剩余未連結(jié)頂部信號(ax+1, ax+2,.......與未連接的底部信號(by+1, byv...by+^)之間的互連解繞組成新問題子Sub (x+1, y+1, s_l),并把Sub (x+1, y+1, s-1)壓入 LIST ; 步驟(6.3.2),如果P ( q=s,,把頂部信號與底部左邊第一個信號by通過頂部信號ax與頂部信號之間的通道相連,然后原問題Sub(x,y,s)中剩余未連結(jié)頂部信號(?, ax+1, ax+2,.......ax+s_2)與未連接的底部信號(by+1, byy..by+,-)組成新問題Sub (X,y+1, s-Ι),并把此子問題壓入LIST ; 步驟(6.3.3),如果P≤q古S,,把頂部信號aT[y]與底部第一個總線信號by通過頂部信號ax與頂部信號之間的通道相連,然后把問題Sub(x,y,s)中未連結(jié)信號轉(zhuǎn)化為兩個子問題:(I)頂部未連結(jié)信號子序列(ax,ax+1,……ax+(r2)與底部未連結(jié)信號子序列(by+1, by+2…..by+(rl)形成子問題 Sub(x, y+1, q-1),⑵頂部未連結(jié)信號(ax+q,ax+q+1,......ax+s-1)與底部未連結(jié)信號(by+(j,by+q+1.....byn)形成子問題Sub (x+q, y+q, s_q),并把此兩個子問題壓入LIST ; 步驟(6.3.4),如果s=p>q,把信號ax與信號byn通過信號與信號ax+s之間通道相連,然后把問題Sub (X,y, s)中頂部未連結(jié)信號(ax+1, ax+2,......與底部未連結(jié)信號(by, by+1.....by+s_2)組成子問題:Sub (x+1, y, s-1),并把此子問題壓入LIST ; 步驟(6.3.5),如果s>p>q,把信號ax與信號by#通過信號與信號ax+p之間通道相連,然后把問題Sub(X,y,s)中未連結(jié)信號轉(zhuǎn)化為兩個子問題:(1)頂部未連結(jié)信號(ax+1, ax+2,......ax+p_2)與底部未連結(jié)信號(by, by+1.....by+p_2)形成子問題 Sub (x+1, y, p_l),(2)頂部未連結(jié)信號(ax+p, ax+p+1,......axu)與底部未連結(jié)信號(by+p, by+p+1.....形成子問題Sub (x+p, y+p, s-p),并把此兩個子問題壓入LIST ; 步驟(7),重復(fù)執(zhí)行步驟(6),直到所有的子問題都有解,若存在一個子問題無可行解,則單邊單繞條件下原問題無可行解。
【文檔編號】G06F17/50GK103902773SQ201410123274
【公開日】2014年7月2日 申請日期:2014年3月28日 優(yōu)先權(quán)日:2014年3月28日
【發(fā)明者】董社勤, 林濤, 羅輔其 申請人:清華大學(xué)