两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

基于虛擬模塊的大規(guī)?;旌夏J讲紙D方法

文檔序號:6420478閱讀:300來源:國知局
專利名稱:基于虛擬模塊的大規(guī)?;旌夏J讲紙D方法
技術(shù)領(lǐng)域
基于虛擬模塊的大規(guī)模混合模式布圖方法屬于集成電路計算機輔助設(shè)計領(lǐng)域,尤其涉及單元布局和模塊規(guī)劃(placement and floorplan)領(lǐng)域。
背景技術(shù)
物理設(shè)計是超大規(guī)模集成電路(VLSI)設(shè)計過程中主要的一環(huán)。與此相關(guān)的計算機輔助設(shè)計技術(shù)稱為自動布圖。集成電路的制造工藝由目前的深亞微米(DSM)進入到超深亞微米(VDSM),集成電路的設(shè)計規(guī)模也正由超大規(guī)模(VLSI),甚大規(guī)模(ULSI)向G大規(guī)模(GSI)發(fā)展,電路的復雜性急劇增加使得層次式電路設(shè)計以及電路模塊的重用技術(shù)受到學術(shù)和產(chǎn)業(yè)界的空前重視。知識產(chǎn)權(quán)模塊的大量涌現(xiàn)也為集成電路布圖設(shè)計提出了前所未有的挑戰(zhàn)。因此布圖設(shè)計面臨電路單元數(shù)量極其龐大、單元組成結(jié)構(gòu)極其復雜等現(xiàn)狀,與之相應的,布圖設(shè)計需要考慮引入層次化的設(shè)計流程、改進現(xiàn)有的布局規(guī)劃技術(shù)以達到能夠在合理時間里得到總線長較短、時延和其他性能指標優(yōu)良的布圖結(jié)果,這些都可以歸結(jié)為大規(guī)?;旌夏J讲紙D(MMPMixed Mode Placement)問題。
大規(guī)?;旌夏J诫娐酚袃蓚€突出的特點(1)單元數(shù)量大。片上系統(tǒng)的出現(xiàn)使得需要在一塊芯片上進行布局定位的單元數(shù)量多達幾萬、幾十萬甚至幾百萬個。龐大的數(shù)量使得現(xiàn)有的布局規(guī)劃技術(shù)都難以在合理的時間里得到質(zhì)量高的布圖結(jié)果,從而延緩產(chǎn)品研發(fā)的時間周期,甚至導致產(chǎn)品的失敗。
(2)單元組成結(jié)構(gòu)復雜。由于知識產(chǎn)權(quán)模塊的出現(xiàn)和電路模塊的重用技術(shù)的引入,電路單元可以分為以下幾種類型a)標準單元這些小單元是目前工業(yè)上應用最多的一種電路單元,例如基本的門電路。它們的特征是高度全部相等,可以在片上翻轉(zhuǎn)但不能變形,其數(shù)量龐大,構(gòu)成電路組成的主體。
b)硬宏模塊例如知識產(chǎn)權(quán)模塊。它們的特征是高度和面積都比標準單元大很多,有的甚至達到100倍以上。它們的面積和形狀都固定不變,但一般數(shù)量較少。
c)軟宏模塊例如存儲器(Memory)模塊、數(shù)據(jù)流(Data-Path)模塊等。它們的特征是大小與硬模塊相當,面積不變,但形狀可以在一定范圍內(nèi)變動。這些軟模塊的引入加大了問題的不確定性,也提高了求解問題的難度。
由于大規(guī)?;旌夏J诫娐返纳鲜鎏攸c,自動布圖系統(tǒng)需要解決的問題是(1)如何在合理的時間里獲得問題的解,得到布圖結(jié)果。
(2)宏模塊的位置和形狀對整個布圖質(zhì)量有著決定性的影響,如何合理的安排這些宏模塊的位置并確定它們的形狀。
(3)宏模塊和標準單元的重疊在混合模式布圖中表現(xiàn)的尤其突出,合理的布圖結(jié)果必須去除所有這些重疊并保持整體布圖質(zhì)量不受太大影響。
針對電路的不同特點,現(xiàn)有的布圖技術(shù)主要可以分為兩類規(guī)劃(floorplan)技術(shù)和布局(placement)技術(shù)(1)規(guī)劃(floorplan)技術(shù)主要用于BBL(Building Block Layout)布圖,它適于處理宏模塊,可以在保證模塊不重疊的基礎(chǔ)上得到線長小的布圖結(jié)果。但規(guī)劃技術(shù)基本上都是基于諸如模擬退火等隨機優(yōu)化方法的,它可以得到好的結(jié)果但時間代價比較大,無法用來處理大規(guī)模的布圖問題。它能有效的處理的單元數(shù)量一般在50以下。
(2)布局(placement)技術(shù)主要用于標準單元布圖,例如工業(yè)界比較常用的二次布局(Q-place)技術(shù)。它一般采用數(shù)學規(guī)劃方法以及其他一些確定性的啟發(fā)式方法,因此處理速度大大優(yōu)于規(guī)劃技術(shù),可以處理幾千甚至上萬個單元的定位問題。但由于它一般把單元看成質(zhì)點,因此無法保證單元之間不重疊;雖然詳細布局(detailed placement)技術(shù)可以通過一些啟發(fā)式方法去除單元重疊,但對去除宏模塊和標準單元的重疊能力有限。而且,當單元數(shù)量上升到幾十萬、上百萬時,其得到布圖結(jié)果需要的運行時間依然不可接受。
因此,無論是規(guī)劃技術(shù)還是布局技術(shù)都無法直接用來解決大規(guī)?;旌夏J讲紙D問題,而且僅僅把兩者進行簡單的疊加也無法得到滿意的效果。
本發(fā)明研究了大規(guī)模混合模式電路的各個特點和現(xiàn)有技術(shù)的特點,提出“虛擬模塊”的概念,并在該概念基礎(chǔ)上層次化劃分整個電路,從而有效的降低問題的規(guī)模;同時虛擬模塊的引入把規(guī)劃技術(shù)和布局技術(shù)有機的結(jié)合在一起,并根據(jù)虛擬模塊的特點改進了矩形單元規(guī)劃技術(shù)和矩形區(qū)域內(nèi)的布局技術(shù),使它們能夠發(fā)揮各自的特長,從而保證整個布圖系統(tǒng)能夠在合理時間里得到質(zhì)量優(yōu)良的布圖結(jié)果。

發(fā)明內(nèi)容
本發(fā)明的目的是提出一種用于解決大規(guī)?;旌夏J讲紙D問題的方法,利用“虛擬模塊”減小問題的規(guī)模并有效的集成規(guī)劃和布局技術(shù),以期在合理的時間里得到線長等質(zhì)量指標良好的布圖結(jié)果。
設(shè)有p個單元(cell instance)組成的集合C={ci|i∈[1...p]},wi和hi分別表示單元ci的寬和高,單元的位置用它們的中心點坐標{xi,yi)表示;設(shè)有q條線網(wǎng)(net)組成的集合N={nj|j∈[1...q]},對于nj,如果它連接在ci上,可以記為ci∈nj,因此線網(wǎng)可以表示為它所連接的單元的集合nj={ck/ck∈nj},線網(wǎng)的長度可以通過下面的式子估計Len(nj)=|max(xk)-min(xk)|+|max(yk)-min(yk)|,ck∈nj如果W和H分別表示布圖芯片的寬和高,則布圖問題等效于求解下面的帶約束優(yōu)化問題
Min(Σnj∈NLen(nj))]]>s.t. ci∈C,0<xi<W,0<yi<Hci,cj∈C,|xi-xj|>(wi+wi)/2 or |yi-yi|>(hi+hj)/2無論是目標函數(shù)還是約束條件都不是凸函數(shù),因此無法直接用傳統(tǒng)的數(shù)學方法求解,必須結(jié)合一定的啟發(fā)式方法來得到問題的答案。本發(fā)明正是創(chuàng)造了一種適合于解決該問題的設(shè)計流程和方法,其設(shè)計流程包括劃分、規(guī)劃、基于二次布局的總體布局和詳細布局四個部分。注上述符號和公式均為說明問題而用,并沒有實際的操作意義,因此不加入全文統(tǒng)一的公式編號中,且后面用到的符號如果跟上面描述中重復,均不被視為具有相同的含義。
本發(fā)明的思路是(1)布局規(guī)劃(floorplan)技術(shù)和二次布局(Q-place)技術(shù)結(jié)合解決大規(guī)?;旌夏J讲紙D問題。
(2)“虛擬模塊”的引入。
(3)基于虛擬模塊電路被劃分為層次化結(jié)構(gòu),構(gòu)成一棵“虛擬模塊樹”。
(4)基于模擬退火方法的規(guī)劃技術(shù)被應用于優(yōu)化同一層次的虛擬模塊的位置和形狀。
(5)基于二次規(guī)劃方法的二次布局技術(shù)被應用于優(yōu)化虛擬模塊內(nèi)部標準單元的位置。
(6)基于容量—費用網(wǎng)絡(luò)流問題的詳細布局被應用于最后的全芯片定位。
本發(fā)明中涉及的重要概念標準單元(Standard Cell)即指集成電路中的門,它們被預先設(shè)計好后放入單元庫中,成為一個個的單元模板,被稱為庫單元;在實際的電路設(shè)計中庫單元被實例化成一個或多個電路實體,放置在芯片上,并用線網(wǎng)連接起來,此時稱為單元實例。標準單元的特點是高度相等(寬度不一定相同),因此在基于標準單元的布局里,芯片被劃成許多等高的行,這些行高與標準單元的高相等,標準單元必須安置在行中且互相無重疊。
宏模塊(Block)指集成電路中預定義的子電路模塊,這些子電路有的是完全設(shè)計好并經(jīng)過布局布線的子模塊,因此有著固定的面積和形狀,且不允許改變,這被稱為硬模塊,如存儲器(Memory)等;有的宏模塊沒有完全設(shè)計完畢,因此只有固定的預留面積,形狀則可以在一定范圍內(nèi)變動,這被稱為軟模塊,如數(shù)據(jù)流模塊(Data-Path)等。宏模塊的尺寸都比一般的標準單元大,高度一般為多個行高。
虛擬模塊(VBVirtual Block)虛擬模塊在物理上并不存在,它是由在劃分過程中被分在同一個部分的多個標準單元或宏模塊組合而成,是一個邏輯意義上的模塊,因此虛擬模塊沒有固定的形狀,且它的形狀可變性比軟模塊更加靈活,可以進行L形/T形等直角多邊形的變化,它的面積一般也可以在一定程度上變化,其最小值應等于其內(nèi)部所有標準單元的面積之和。焊塊(PAD)一類特殊的單元,邏輯上表現(xiàn)為電子信號進出芯片上電路的出入口(IO),物理上表現(xiàn)為矩形金屬小塊。它的寬度和高度都很小,一般跟設(shè)計規(guī)則中允許的最小線寬有關(guān),布局中,焊塊分布在芯片周圍(不一定要在行上),且位置固定并由用戶給出。根據(jù)在電子信號流中的作用,焊塊可以分為3類1)輸入焊塊(PIPrimary Input)信號由此輸入;2)輸出焊塊(POPrimary Output)信號由此輸出;3)輸入輸出焊塊(PIOPrimary InputOutput)信號既可輸入也可輸出。
引腳(Pin)又叫管腳,標準單元和宏模塊的信號輸入輸出引出端,根據(jù)信號的流向可以分為輸入,輸出和輸入輸出三種,它在標準單元或宏模塊上的位置由其相對坐標固定下來,它是線網(wǎng)在單元之間連接的實際連接點;對于虛擬模塊,沒有物理上存在的引腳,但由于虛擬模塊與其他單元和模塊之間也有連線,為統(tǒng)一起見,對于每一根連線我們加入一個邏輯上的引腳,稱為虛擬引腳(Virtual Pin),它們由于沒有物理上的存在,因此位置不固定。
虛擬焊塊(Virtual PAD)由于虛擬模塊內(nèi)部由標準單元組成,它們對外的連接為虛擬引腳,為保持電路的完整性和同一性,每個虛擬引腳都生成一個虛擬焊塊,并加入到該虛擬模塊中成為一個邏輯上的電路單元。
單元(Object)標準單元、宏模塊、虛擬模塊以及焊塊和虛擬焊塊可統(tǒng)稱為單元。線網(wǎng)(Net)連接單元和模塊的引腳的金屬線。
本發(fā)明的特征在于它在虛擬模塊的基礎(chǔ)上引入了矩形單元規(guī)劃方法和矩形區(qū)域內(nèi)的布局方法,它的整個過程依次包括劃分、規(guī)劃、基于二次布局的總體布局和詳細布局四個部分。
與普通二次布局作比較,在運行時間相當?shù)那闆r下,線長效果改善明顯,最大改善達到40%以上。


圖1虛擬模塊樹示意圖。
圖2用角模塊方法安放模塊d時的過程示意圖。
圖3詳細布局中區(qū)域劃分示意圖。
圖4容量—費用網(wǎng)絡(luò)示意圖。
圖5子區(qū)域中子行區(qū)示意圖。
圖6電路劃分后形成的虛擬模塊,深色模塊為宏模塊。
圖7用布局規(guī)劃技術(shù)給虛擬模塊定位。
圖8在每個虛擬模塊里運行二次布局后的結(jié)果。
圖9詳細布局以后的布局結(jié)果。
圖10本發(fā)明設(shè)計流程圖—總體結(jié)構(gòu)。
圖11本發(fā)明設(shè)計流程圖—劃分過程。
圖12本發(fā)明設(shè)計流程圖—規(guī)劃過程。
圖13本發(fā)明設(shè)計流程圖—總體布局過程。
圖14本發(fā)明設(shè)計流程圖—詳細布局過程。
圖15本發(fā)明設(shè)計流程圖—[劃分]集群過程。
圖16本發(fā)明設(shè)計流程圖—[劃分]生成虛擬模塊樹的過程。
圖17本發(fā)明設(shè)計流程圖—[規(guī)劃]模擬退火優(yōu)化過程。
圖18本發(fā)明設(shè)計流程圖—[總體布局]區(qū)域約束迭代過程。
圖19本發(fā)明設(shè)計流程圖—[詳細布局]消除重疊、行分配過程。
本發(fā)明的具體步驟為(1)輸入電路,內(nèi)容包括1)標準單元的描述,包括寬、高(其中高度值應該都相等),2)宏模塊的描述,包括寬、高,3)焊塊的描述,包括輸入/輸出屬性,定好的位置坐標,4)引腳的描述,包括屬于哪個單元,在單元上的相對位置坐標,5)線網(wǎng)的描述,包括線網(wǎng)的端點數(shù),每個端點連在哪個單元的哪個引腳上;并需要輸入下列參數(shù)的值Nc標準單元的數(shù)量,Nb宏模塊數(shù)量,Npi輸入焊塊的數(shù)量,Npo輸出焊塊的數(shù)量,Npio輸入輸出焊塊的數(shù)量;(2)劃分劃分芯片上整個電路,生成虛擬模塊樹;設(shè)定下列參數(shù)值(各參數(shù)的意義和用法將在后面詳述)Pc每個葉子虛擬模塊中擁有的標準單元數(shù),Pb后續(xù)規(guī)劃過程中能有效處理的最大模塊數(shù),Pp用hMETIS軟件包對所構(gòu)造的超圖進行虛擬模塊劃分時,要生成的模塊個數(shù);(2.1)基于IMFFC算法對標準單元進行集群(忽略宏模塊);(2.1.1)生成Npo個單元團(Cluster)的集合Scl={Cl1,Cl2,...,ClNpo},每個單元團中只加入一個輸出焊塊,即Cli={POi},i=1,2,...,Npo;(2.1.2)對Cli中每個元素Obj,根據(jù)連接關(guān)系找尋它的前繼單元,即輸出引腳通過線網(wǎng)連接到它的輸入引腳的單元,如果這些單元的所有輸出引腳連接的單元都在Cli中,則把該單元加入Cli中;否則,新建一個單元團Clnew,把該單元加入Clnew中,并把Clnew加入Scl中;(2.1.3)對Scl中的每個元素Cli重復進行操作(2.1.2)直到所有標準單元都被訪問到;(2.1.4)訪問Sc1中的每個元素Cli,去除其中的非標準單元成員;(2.1.5)修改線網(wǎng),每個單元團內(nèi)部的單元之間的線網(wǎng)被忽略,單元團之間的外部線網(wǎng)被保留下來;(2.1.6)計算每個單元團的面積,單元團的面積=所有內(nèi)部單元面積之和;(2.2)基于hMETIS多層次劃分軟件包對單元團集合Scl進行劃分,并生成虛擬模塊樹的葉子節(jié)點,該葉子節(jié)點對應于一個虛擬模塊,稱為葉子虛擬模塊,因此我們對葉子節(jié)點和葉子虛擬模塊不加區(qū)別,下同;(2.2.1)構(gòu)造一個超圖,頂點對應于Scl中的元素Cli,邊對應于單元團之間的線網(wǎng);(2.2.2)對超圖的頂點加權(quán),權(quán)重等于單元團面積,并進行歸一化;(2.2.3)應用hMETIS軟件包對超圖進行劃分,劃分數(shù)為 其中Pc為控制參數(shù),表示每個葉子虛擬模塊中擁有的標準單元數(shù),該參數(shù)影響二次布局的運行時間和最后效果;(2.2.4)根據(jù)劃分結(jié)果生成Npart個虛擬模塊,每個模塊含有由劃分結(jié)果確定的單元團,其面積設(shè)定為所有內(nèi)部單元團面積之和;(2.2.5)銷毀所有單元團,放出里面的所有標準單元,此時標準單元仍然在虛擬模塊里;(2.2.6)修改線網(wǎng),虛擬模塊里的線網(wǎng)被忽略,根據(jù)虛擬模塊與其他單元的外部連接情況建立虛擬引腳,并把這些外部線網(wǎng)連接在虛擬引腳上,并且,考慮到電路完整性,每個虛擬引腳都生成一個虛擬焊塊加入該虛擬模塊里;注hMETIS為共享軟件,是基于多層次劃分算法的劃分工具,其下載網(wǎng)址以及使用方法見http//www-users.cs.umn.edu/~karypis/metis/hmetis/,有關(guān)hMETIS內(nèi)部算法的詳細描述請參考George Karypis發(fā)表于會議DAC 97的文獻“Multilevel Hypergraph P artitioningApplication inVLSI Domain”以及他在會議DAC 99上發(fā)表的文獻“Multilevel k-way Hypergraph Partitioning”。
(2.3)生成虛擬模塊樹;(2.3.1)整個電路成為樹的根節(jié)點,此時節(jié)點里只有宏模塊,焊塊和葉子虛擬模塊;
(2.3.2)每個焊塊單獨成為一個固定的虛擬模塊,并加入該節(jié)點中成為子節(jié)點(2.3.3)對應于樹中該節(jié)點的是模塊級電路,如果其模塊數(shù)滿足條件Nlocal>Pb(2)其中Pb是控制參數(shù),表示規(guī)劃過程中能有效處理的最大模塊數(shù),Nlocal為該節(jié)點中所有的電路模塊的數(shù)量(包括宏模塊和葉子虛擬模塊,不包括焊塊以及由焊塊生成的虛擬模塊),則構(gòu)造超圖并用hMETIS軟件包進行劃分,然后根據(jù)劃分結(jié)果生成虛擬模塊并相應的建立虛擬模塊樹中該節(jié)點的子節(jié)點,劃分過程基本同于(2.2.1)-(2.2.6),只是沒有單元和單元團,劃分數(shù)為 其中Pp是另一個控制參數(shù),表示模塊級劃分數(shù);(2.3.4)遞歸的對所有的子節(jié)點重復步驟(2.3.2)-(2.3.3)直到無法建立新的子節(jié)點,即所有子節(jié)點不滿足式(2),值得注意的是中間結(jié)點(既非根節(jié)點也非葉子節(jié)點)本身就是一個虛擬模塊,內(nèi)部的電路只可能包括宏模塊或葉子虛擬模塊以及修改線網(wǎng)時生成的虛擬引腳,并不存在物理上的焊塊,為統(tǒng)一起見,我們把虛擬引腳轉(zhuǎn)化為虛擬焊塊,步驟(2.3.2)操作的對象即為該節(jié)點中的虛擬焊塊,整個電路最后的劃分結(jié)果構(gòu)成如附圖1的一顆樹步驟(2)中形成的虛擬模塊樹的節(jié)點可以分為兩種類型1)葉子節(jié)點該虛擬模塊由標準單元和虛擬焊塊組成,在這種虛擬模塊里,我們最后要應用基于二次布局的布局技術(shù)得到里面所有單元的最后定位。
2)非葉子節(jié)點對應的虛擬模塊由焊塊(或虛擬焊塊)、宏模塊或下一級虛擬模塊組成,在這種模塊里,我們要應用固定面積的規(guī)劃技術(shù)得到所有其子節(jié)點的位置和形狀。
整棵樹是遞歸生成的,因此我們對所有節(jié)點的訪問是壓棧式深度優(yōu)先,當對某一個節(jié)點中的單元進行定位時,并不考慮單元的實際位置,只認為它們單獨分布在一個芯片上,芯片的大小形狀和偏移位置由該節(jié)點對應的虛擬模塊確定。最后,當每個節(jié)點從棧中彈出時,其內(nèi)部單元的位置坐標再用虛擬模塊本身的偏移位置來修正。
(3)規(guī)劃對非葉子節(jié)點中的單元進行定位,并確定它們的最佳形狀;模塊位置的表示方法角模塊(CBtCorner Block List)用角模塊表示的模塊位置關(guān)系可以保證模塊之間無重疊,它由3個列表組成1)列表S由模塊名字組成,記錄模塊安放順序。
2)列表L由“0”、“l(fā)”串組成,記錄模塊安放方向,規(guī)定模塊安放時只有從現(xiàn)有布局的上方或右方安放這2種方向。當模塊從現(xiàn)有布局的上方安放時,其對應的L中的元素為“0”,否則為“1”。因為第1個模塊無所謂安放的方向,所以L從第2個模塊開始記錄。
3)列表T由子串組成,每個模塊對應一個子串,該子串由一連串“1”組成,以1個“0”結(jié)尾,“1”和“0”的總個數(shù)等于該模塊安放時在安放方向上鄰接的其他模塊的數(shù)量。因為第1個模塊在任何安放方向上不與其他模塊相鄰接,所以T也從第2個模塊開始記錄。
對應附圖2(b)表示的模塊位置,我們可以得到角模塊表示為S={f,c,e,g,b,a,d}L={X,0,0,1,1,0,0}T={X,{0},{0},{1,0},{1,0},{0},{1,0}}其中,當我們安放d時,由于它從上方放入,因此L(d)=0;由于它鄰接“g”和“a”2個模塊,所以T(d)={1,0}(X表示無此元素)。更詳細的有關(guān)角模塊的論述請參考Xianlong Hong發(fā)表于會議ICCAD’2000的文獻“Corner Block ListAn Effective and Efficient TopologicalRepresentation of Non-slicing Floorplan”以及Yuchun Ma發(fā)表于會議ASP-DAC2002的文獻“Stairway Compaction using Corner Block List and Its Applications with rectilinear blocks”。
首先,需要設(shè)定下列參數(shù)(具體含義和用法將在后面詳述)wni模塊之間線網(wǎng)i的權(quán)重,由用戶設(shè)定,wc1、wc2、wc3計算代價時用的權(quán)重,由用戶定義,Trb用模擬退火方法進行位置優(yōu)化時用的退火起始溫度,屬于系統(tǒng)參數(shù),Tre用模擬退火方法進行位置優(yōu)化時用的退火結(jié)束溫度,屬于系統(tǒng)參數(shù),LC1用模擬退火方法進行位置優(yōu)化時用的循環(huán)執(zhí)行次數(shù),F(xiàn)t表示退火過程中的降溫系數(shù),Tsb用模擬退火方法進行形狀優(yōu)化時用的退火起始溫度,Tse用模擬退火方法進行形狀優(yōu)化時用的退火結(jié)束溫度,LC2用模擬退火方法進行形狀優(yōu)化時用的循環(huán)執(zhí)行次數(shù);(3.1)設(shè)置初始解;(3.1.1)所有虛擬模塊的虛擬引腳設(shè)定在虛擬模塊中心,并隨機生成列表S、L、T得到一個安放方案;(3.1.2)計算線長wf=Σi∈NETbwni·((max(xij)-min(xij))+(max(yij)-min(yij)))---(4)]]>其中NETb為模塊之間線網(wǎng)的集合,i為該集合中的一根線網(wǎng),wi為線網(wǎng)i的權(quán)重,為用戶指定參數(shù),(xij,yij)為線網(wǎng)i的一個端點坐標,即它連接的一個模塊引腳的絕對坐標;
(3.1.3)計算代價Cost=wc1·Wf+wc2·max(WDf-ChipX,0)+wc3·max(HEf-ChipY,0)(5)其中wc1、wc2、wc3分別為用戶定義參數(shù),表示權(quán)重,WDf、HEf分別為布局結(jié)果的寬和高,ChipX、ChipY分別為芯片的寬和高,式(5)的后兩項為懲罰項,表示當布局結(jié)果的寬和高大于芯片的寬和高時將懲罰代價值(引起代價值的增大);(3.1.4)保存最小代價Costmin和當前代價Costc為Cosmin=Costc=Cost;(3.2)基于模擬退火方法進行位置優(yōu)化;(3.2.1)所有虛擬模塊的虛擬引腳設(shè)定在虛擬模塊中心;(3.2.2)初始化TF=Ttb;其中TF為過程變量,表示退火過程中的溫度,Ttb為系統(tǒng)參數(shù),表示退火起始溫度;(3.2.3)隨機選擇下列一種改變安放方案的方法來得到新解1)隨機交換某兩個模塊,即隨機交換列表S中的2個元素,2)隨機改變某個模塊的相對安放位置,即隨機改變L中的1個元素的值,3)隨機改變某個模塊相對于其他模塊的安放關(guān)系,即隨機改變T中的1個元素的值,4)隨機改變某個模塊的轉(zhuǎn)向;(3.2.4)根據(jù)新解和式(4)計算線長;(3.2.5)根據(jù)式(5)計算代價;(3.2.6)如果滿足Cost<Costmin,記錄該新解,并更新Costmin=Cost;(3.2.7)如果滿足Cost<Costc(6)or.e(Costc-Cost)/T>R]]>則記錄該新解,并更新Costc=Cost,其中,R為一個大于0且小于1的隨機數(shù);(3.2.8)循環(huán)執(zhí)行(3.2.3)-(3.2.8)到一定的循環(huán)次數(shù)LC1;其中LC1為控制參數(shù),表示同一溫度的循環(huán)次數(shù);(3.2.9)如果滿足TF<Tte,則循環(huán)退出,給出對應于Costmin最優(yōu)解,否則,回到原解,令TF=TF*Fi(7)并回到(3.2.3),循環(huán)進行步驟(3.2.3)-(3.2.9);
其中Tte為系統(tǒng)參數(shù),表示退火結(jié)束溫度,F(xiàn)t為退火過程中的降溫系數(shù);(3.3)基于模擬退火方法進行形狀優(yōu)化;(3.3.1)繼承(3.2)中的最優(yōu)解得到初始解,同(3.1)一樣計算Costmin和Costc;(3.3.2)初始化TF=Tsb;其中Tsb為系統(tǒng)參數(shù),表示形狀優(yōu)化過程中的退火起始溫度;(3.3.3)隨機選擇一個軟模塊或虛擬模塊,隨機改變其長寬比;(3.3.4)對虛擬模塊的虛擬引腳進行位置分配;(3.3.4.1)集合NB表示模塊間線網(wǎng)的集合,nbi表示其中一條線網(wǎng)(nbi∈NB),pj為線網(wǎng)nbi的一個端點(即引腳,可以表示為pj∈nbi),Mj為引腳pj所在的模塊;(3.3.4.2)對于任意一個pj,如果Mj為虛擬模塊(此時pj必為虛擬引腳),則把pj預安放在Mj的中心;否則,pj保持原固定位置不變。此步驟循環(huán)執(zhí)行至線網(wǎng)nbi的所有引腳都被處理過;(3.3.4.3)畫一個“綁定矩形”,使其面積最小且剛好能夠框住線網(wǎng)nbi的所有引腳,并得到這個矩形的中心(cx,cy);(3.3.4.4)對于任意一個pj,如果Mj為虛擬模塊(此時pj必為虛擬引腳),畫直線連接pj和(cx,cy),該直線與Mj的邊界相交于一點(px,py),此即為虛擬引腳pj分配的位置,此后,當虛擬引腳轉(zhuǎn)換為虛擬焊塊時,(px,py)也是該虛擬焊塊在模塊內(nèi)的相對位置;如果pj不是虛擬引腳而是物理上的引腳,則它的位置保持不變;(3.3.4.5)循環(huán)執(zhí)行(3.3.4.1)-(3.3.4.5)直到集合NB的所有線網(wǎng)都被處理過;(3.3.5)根據(jù)新解和式(4)計算線長;(3.3.6)根據(jù)式(5)計算代價;(3.3.7)如果滿足Cost<Costmin,記錄該新解,并更新Costmin=Cost;(3.3.8)如果滿足式(6),則記錄該新解,并更新Costc=Cost,否則回到原解;(3.3.9)循環(huán)執(zhí)行(3.3.3)-(3.3.9)到一定的循環(huán)次數(shù)LC2;其中LC2為控制參數(shù),表示此過程的同一溫度循環(huán)次數(shù);(3.3.10)如果滿足TF<Tse,則循環(huán)退出,給出對應于Costmin最優(yōu)解,否則,根據(jù)式(7)改變溫度,并回到(3.3.3),循環(huán)進行步驟(3.3.3)-(3.3.10);其中Tse為系統(tǒng)參數(shù),表示此過程退火結(jié)束溫度;步驟(3)要對樹中所有非葉子節(jié)點進行操作,操作順序遵循樹的遞歸順序,采用深度優(yōu)先原則,上一級的虛擬模塊的位置和形狀直接為下一級單元提供布局區(qū)域,成為一個虛擬的“芯片”。經(jīng)過步驟(3),所有的宏模塊和虛擬模塊都得到定位,我們要進行葉子節(jié)點的布局來對標準單元進行總體布局;(4)總體布局對于葉子虛擬模塊里的標準單元,使用二次布局技術(shù)進行定位,并保持線長最短的目標;設(shè)定參數(shù)(具體意義和用法將在后面詳述)Pr控制參數(shù),區(qū)域樹葉子節(jié)點中最多允許容納的單元個數(shù);(4.1)進行數(shù)學建模;(4.1.1)總體布局的對象是在葉子虛擬模塊里的所有標準單元和焊塊,其中焊塊為虛擬模塊中虛擬引腳轉(zhuǎn)化而來,其位置固定,坐標由步驟(3.3.4)得到;(4.1.2)在二次布局技術(shù)里,標準單元和焊塊被認為是一個個的點,其坐標等同于單元中心坐標,因此總線長可以估計為Φ=Σn∈NLn=Σn∈NΣi,j∈n((xi-xj)2+(yi-yj)2)---(8)]]>其中N為線網(wǎng)的集合,n為集合中的線網(wǎng),i、j分別為線網(wǎng)的某兩個端點,(xi,yi)、(xj,yi)分別為端點的坐標;改寫成矩陣形式為Φ=xTCx+dxTx+yTCy+dyTy+Const---(9)]]>其中xT、yT分別為所有點坐標的x和y值組成的向量。
C為單元關(guān)系矩陣,表示單元之間的連接關(guān)系;d表示單元與固定焊塊的連接關(guān)系。具體生成C和d的詳細步驟請參考相關(guān)數(shù)學論著以及H.Eisenmann發(fā)表于會議DAC 98的文獻″Generic Global Placement and Floorplanning″;(4.2)生成區(qū)域約束,反復迭代優(yōu)化;(4.2.1)區(qū)域約束是逐步形成的,它通過遞歸的劃分布局面積和單元集合而形成一棵區(qū)域約束樹。初始階段,整個布局面積和全體單元構(gòu)成樹的根節(jié)點;(4.2.2)對應于區(qū)域約束樹的每個葉子節(jié)點,都存在一個區(qū)域和一個單元的子集合,我們把這個單元子集合稱為在這個區(qū)域里的單元,對于每個區(qū)域里的單元增加如下分布約束Σi∈Trxi|Tr|=μr,Σi∈Tryi|Tr|=υr---(10)]]>其中r為對應一個葉子節(jié)點的區(qū)域,Tr為該區(qū)域里的單元集合,
i為該區(qū)域里的一個單元,(xi,yi)為單元i的坐標,(ur,vr)為區(qū)域r的中心點坐標;(4.2.3)問題轉(zhuǎn)化為求解帶約束的二次規(guī)劃問題Min Φ(11)S.T.式(10)注根據(jù)區(qū)域約束樹的葉子節(jié)點的數(shù)量,式(10)可能是多個約束式,并且將隨著葉子節(jié)點的增加而增加;(4.2.4)用拉格朗日乘子法解式(11);(4.2.4.1)把約束代入目標,得目標函數(shù)FnFn=Φ+Σrλrx·(Σi∈Trxi|Tr|-μr)+Σrλry·(Σi∈Tryi|Tr|-υr)---(12)]]>其中λrx、λry分別為對區(qū)域r的兩個約束式加的乘子;(4.2.4.2)對式(12)求偏導并令導數(shù)等于0得等式為;xFn=0 yFn=0 λxFn=0 λyFn=0 (13)(4.2.4.3)式(13)為一組線性方程,解這個線性方程可以得到單元的坐標x和y;(4.2.5)掃描區(qū)域樹的所有葉子節(jié)點,如果其中的標準單元數(shù)大于Pr,則對該節(jié)點進行劃分;其中Pr為控制參數(shù),控制優(yōu)化的最終結(jié)束條件;(4.2.5.1)如果區(qū)域的長大于寬,則生成垂直劃分線把區(qū)域分為左右兩部分,否則生成水平線分成上下兩部分;(4.2.5.2)區(qū)域單元根據(jù)區(qū)域劃分線方向分別按x值(垂直劃分線)或y值(水平線)排列,根據(jù)數(shù)量均分原則分為兩個部分,分別放入?yún)^(qū)域的兩個子區(qū)域中;(4.2.5.3)按照單元面積總和調(diào)整子區(qū)域大小,使得滿足Ar1/Ar2=Σc∈r1Ac/Σc∈r2Ac---(14)]]>其中r1、r2分別為兩個子區(qū)域,Ar1、Ar2分別為兩個子區(qū)域的面積,Ac為單元c的面積;(4.2.5.4)生成兩個子節(jié)點分別表示該子區(qū)域和其中的單元子集合,把子節(jié)點掛在原葉子節(jié)點下成為新的葉子節(jié)點;(4.2.6)回到(4.2.2)循環(huán)執(zhí)行(4.2.2)-(4.2.6),直到所有葉子節(jié)點中的標準單元數(shù)都不大于Pr;
步驟(4)要對虛擬模塊樹中的所有葉子虛擬模塊進行操作,由于相對獨立性,葉子虛擬模塊的操作順序?qū)ψ詈蠼Y(jié)果無影響,經(jīng)過步驟(4),所有標準單元的位置也大體上確定下來了,最后的定位和優(yōu)化將在詳細布局里進行;(5)詳細布局對全芯片單元進行最后的定位;設(shè)定參數(shù)(具體含義和用法將在后面詳述)Dm劃分芯片時的行數(shù),Dn劃分芯片時的列數(shù);(5.1)將芯片劃分成Dm*Da個面積相等的子區(qū)域,如圖3(a)、(b)分別為劃分前后的芯片模型,有如下定義行區(qū)芯片上的每一行被與該行相交的宏模塊分割成若干部分,每一部分定義為一個行區(qū)(若某行不與任何宏模塊相交,則整個一行定義為一個行區(qū)),子行區(qū)劃分后,行區(qū)被子區(qū)域的豎直邊界分割成若干段,每一段稱為一個子行區(qū);下面定義中的x表示一個矩形區(qū)域,可代表子區(qū)域,行區(qū),或子行區(qū);CP(x)為矩形區(qū)域x的容量,當x代表子行區(qū)或行區(qū)時,CP(x)等于x的面積,當x代表一個子區(qū)域時,CP(x)等于子區(qū)域的面積減去宏模塊占用的子區(qū)域面積之差;CSet(x)為矩形區(qū)域x中所有標準單元構(gòu)成的集合CSet(x)={c1,c2,……,cm(x)},其中m(x)為矩形區(qū)域x內(nèi)的標準單元個數(shù);定義Area(CSet(x))=Σi=1m(x)Area(ci),]]>其中Area(ci)為標準單元ci的面積;D(x)為矩形區(qū)域x的密度,D(x)=Area(CSet(x))/CP(x);θ(x)為矩形區(qū)域x的容差, 其中MIN_D和MAX_D為給定的參數(shù),且MIN_D<MAX_D,分別表示矩形區(qū)域x期望達到的最小和最大密度;源點θ(x)<0的矩形區(qū)域稱為源點,表示x的密度大于MAX_D,需將其中的部分標準單元移出,應移出標準單元的總面積為-θ(x);匯點θ(x)>0的矩形區(qū)域稱為匯點,表示x的密度小于MIN_D,可繼續(xù)容納總面積為θ(x)的標準單元;
(5.2)平衡子區(qū)域,通過在子區(qū)域間移動單元,將單元分布擁擠的子區(qū)域中的部分單元移動到單元分布稀疏的子區(qū)域中;(5.2.1)建立如圖4所示的容量費用網(wǎng)絡(luò),有如下關(guān)于容量費用網(wǎng)絡(luò)的定義(i,j)表示從頂點i指向頂點j的弧,A表示容量費用網(wǎng)絡(luò)的弧的集合,b(i,j)為弧(i,j)的傳輸代價,在不同的網(wǎng)絡(luò)里具有不同的實際含義(見后),c(i,j)為弧(i,j)的容量,即允許沿弧(i,j)傳輸?shù)牧髁康淖畲笾?,在不同的網(wǎng)絡(luò)里具有不同的實際含義(見后);f(i,j)為從頂點i沿弧(i,j)流到頂點j的流量,在不同的網(wǎng)絡(luò)里具有不同的實際含義(見后);(5.2.1.1)圖3中的每一個子區(qū)域映射為圖4中的一個頂點,某子區(qū)域r對應的容量費用網(wǎng)絡(luò)中的頂點也用r標記;(5.2.1.2)定義某子區(qū)域r與其上、下、左、右任一方向的相鄰子區(qū)域r′互稱為鄰接子區(qū)域,每一對鄰接子區(qū)域r和r′在容量費用網(wǎng)絡(luò)中都有一對方向相反的弧相連,即(r,r′)和(r′,r),規(guī)定b(r,r′)=b(r′,r),等于子區(qū)域r和r′的中心間的距離;c(r,r′)=c(r′,r)=∞,表示允許在子區(qū)域r和r′間移動的單元總面積的最大值;f(r,r′),f(r′,r)分別表示從r到r′和從r′到r實際要移動的單元的總面積,初始為0;(5.2.1.3)在圖中增加一個虛擬的總源點s,和虛擬的總匯點t,對于所有的源點rs,構(gòu)造弧(s,rs),b(s,rs)=0,c(s,rs)=-θ(rs),f(s,rs)初始為0;對于所有的匯點rt,構(gòu)造弧(rt,t),b(rt,t)=0,c(rt,t)=θ(rt),f(rt,t)初始為0;將由(5.2.1.1)-(5.2.1.3)建立起來的容量費用網(wǎng)絡(luò)中所有弧的流值的取值策略定義為網(wǎng)絡(luò)的流f,如上所述,初始時所有弧的流值都取為0,則此時的流稱為0流,定義容量費用網(wǎng)絡(luò)的總流量為T(f)=Σrsf(s,rs),]]>所謂最小代價最大流問題就時要求得一個流f,滿足式(16)-(18)maxT(f) (16)minΣ(i,j)∈Ab(i,j)f(i,j)---(17)]]>s.t.
對任意頂點r有Σ(i,r)∈Af(i,r)=Σ(r,j)∈Af(r,j)---(18)]]>(5.2.2)求解最小代價最大流問題,基本思想是從初始的0流出發(fā),不斷尋找最小代價增廣鏈(定義見下),沿該增廣鏈調(diào)整當前流f,得到新的流f′,循環(huán)進行,直至得到最小代價最大流;為說明最小代價增廣鏈,給出賦權(quán)有向圖w(f)的定義,定義w(f)的頂點為原容量費用網(wǎng)絡(luò)中的頂點,w(f)的弧為原容量費用網(wǎng)絡(luò)中的弧,定義w(f)中弧的權(quán)值w(i,j)為 于是在容量費用網(wǎng)絡(luò)中尋找關(guān)于當前流f的最小代價增廣鏈就等價于在賦權(quán)有向圖w(f)中,尋找從總源點s到總匯點t的一條權(quán)值最小的通路(通路的權(quán)值等于組成通路的所有弧的權(quán)值之和);設(shè)在第k-1步得到的流為f(k-1),則構(gòu)造賦權(quán)有向圖w(f(k-1)),在w(f(k-1))中,尋求從s到t的權(quán)值最小的通路,若該通路的權(quán)值為∞,則f(k-1)為所求的最小代價最大流;否則,在原容量費用網(wǎng)絡(luò)中得到相應的最小代價增廣鏈u,對f(k-1)進行調(diào)整,調(diào)整量為σ=min[minu+(c(i,j)-f(i,j)(k-1)),minu-(f(i,j)(k-1))]]]>令 其中u+為增廣鏈u上與增廣鏈方向(從s指向t)相同的弧的集合,u-為增廣鏈u上與增廣鏈方向相反的弧的集合;循環(huán)進行,直至求得最小代價最大流f;(5.2.3)依拓撲順序依次處理容量費用網(wǎng)絡(luò)中的所有頂點,具體做法為(5.2.3.1)去掉容量費用網(wǎng)絡(luò)中流值為0的??;(5.2.3.2)找出網(wǎng)絡(luò)圖中滿足Σ(i,r)∈Af(i,r)=0]]>的頂點r,用(5.2.4)中的方法處理對應該頂點的子區(qū)域;(5.2.3.3)將(5.2.3.2)中找到的頂點及從該頂點發(fā)出的所有弧從容量費用網(wǎng)絡(luò)中去掉;循環(huán)執(zhí)行(5.2.3.2)(5.2.3.3)直到所有的子區(qū)域都被處理完,這種處理子區(qū)域的順序即為拓撲順序;(5.2.4)對于待處理的子區(qū)域r,定義其鄰接子區(qū)域的集合N(r)N(r)={r′|f(r,r′)>0}(5.2.4.1)對ci∈CSet(r),r′∈N(r),計算將單元Ci從子區(qū)域r移到鄰接子區(qū)域r′的代價cost(ci,r,r′);定義單元Ci的原始位置為pi0,設(shè)單元Ci在子區(qū)域r′中可選擇的位置共有ni個,定義位置集合P,P={pi1,pi2,...,pini},]]>cost(ci,r,r′)=minpij∈P(WL(ci,pij)-WL(ci,pi0))---(19)]]>WL(ci,pik)表示單元Ci位于位置pik時,與Ci相連的所有線網(wǎng)的線長之和,k=0,1,...,ni;(5.2.4.2)選出最小的代價值cost(ci,r,r′),并將單元C1從子區(qū)域r移向鄰接子區(qū)域r′,令f(r,r′)=f(r,r′)-Area(ci) (21)如果f(r,r′)≤0將r′從N(r)中刪除(5.2.4.3)對ci∈CSet(r),r′∈N(r)重新計算cost(ci,r,r′);重復(5.2.4.2)(5.2.4.3),直到N(r)=φ;(5.3)平衡每個子區(qū)域內(nèi)部的子行區(qū);(5.3.1)建立如圖4所示的容量費用網(wǎng)絡(luò);(5.3.1.1)每一個子行區(qū)映射為網(wǎng)絡(luò)中的一個頂點;(5.3.1.2)定義兩個子行區(qū)為鄰接子行區(qū)當且僅當這兩個子行區(qū)為同一行上前后相繼的子行區(qū),或者為處于相鄰行上且在水平方向上有重疊的子行區(qū),如圖5所示的子區(qū)域中,子行區(qū)b共有三個鄰接子行區(qū)分別為a,c和d,其中c和b為同一行上前后相繼的兩個子行區(qū),a(或d)為與b處在相鄰行上,且在水平方向上有重疊的子行區(qū),在容量費用網(wǎng)絡(luò)中,將相鄰子行區(qū)用一對方向相反的弧相連,弧的代價定義為兩個子行區(qū)中心間的距離,弧的容量定義為無窮大;(5.3.1.3)依據(jù)式(15)確定源點和匯點,此時式(15)中的MAX_D取為一個固定的值1,在圖中增加一個虛擬的總源點,和虛擬的總匯點,構(gòu)造從總源點指向每一個源點的弧,弧的代價為0,容量為源點容差的相反數(shù);構(gòu)造從每一個匯點指向總匯點的弧,弧的代價為0,容量為匯點的容差;(5.3.2)由初始的0流出發(fā),求解最小代價最大流問題,求出在每一對相鄰子行區(qū)間移動單元的面積總和(具體過程同(5.2.2));(5.3.3)按照拓撲順序用類似(5.2.3)和(5.2.4)中的方法依次處理每一個子行區(qū);(5.4)將被子區(qū)域豎直邊界分割開的同一行上相鄰的子行區(qū)合并成行區(qū),如果此時仍有行區(qū)存在容量超限(即行區(qū)內(nèi)的單元面積總和大于行區(qū)的總面積)的情況,則對所有的容量超限行區(qū)執(zhí)行(5.4.1)(5.4.2)的操作;(5.4.1)對容量超限行區(qū)z,隨機的選擇z中的一個單元Ci,將其移動到新位置;定義行區(qū)的集合ZSet={z′|CP(z′)-Area(CSet(z′))≥Area(ci)}仿效(5.2.4.1)的定義,設(shè)單元Ci在集合Zset的所有行區(qū)中可選擇的位置共有ni個,定義位置集合P,P={pi1,pi2,...,pini},]]>則Ci的新位置pil(l=1,2,...,ni)滿足下式WL(ci,pij)=minpij∈PWL(ci,pij)]]>(5.4.2)重復(5.4.1)直至Area(CSet(z))≤CP(z);(5.5)依次消除每個行區(qū)內(nèi)的單元重疊設(shè)對于行ri,(O,XB)為單元在x方向可放置的位置范圍;先將ri中的單元按x坐標從小到大排序,然后按此順序依次放置每個單元,設(shè)x’ik為單元cik經(jīng)過消除重疊以后單元左邊界的x坐標,而wik為它的寬度,對于單元cik,尋找它可放位置的左邊界lbik和右邊界rbik如下lbik=x′i(k-1)+wi(k-1);rbik=XB-Σt=k+1Ni(wilRl)---(22)]]>其中Rl為介于

和1之間的一個定值;最左邊單元的左邊界為0,即lbi0=0,最右邊單元的右邊界為XB,即rbiNi=XB,單元cik的新的位置由下式確定

(5.6)對單元位置進行調(diào)整,進一步優(yōu)化線長;(5.6.1)對某一個單元Ci,尋找單元Ci的最佳位置pil,可仿效(5.4.1)的做法,唯一的區(qū)別是,此時定義ZSet為所有行區(qū)的集合;(5.6.2)將Ci移到位置pil,并對其它單元的位置進行相應調(diào)整,以消除單元間的重疊;(5.6.3)若經(jīng)過(5.6.2),總線長未減小,則將芯片布局恢復到(5.6.2)以前的狀態(tài);每一次迭帶改善時,對所有的單元依次執(zhí)行(5.6.1)-(5.6.3),如此反復迭代,直至線長不再有明顯的改善;(6)輸出設(shè)計結(jié)果。
具體實施方法我們采用美國ARCADIA集成電路設(shè)計公司設(shè)計的一個實際電路A.Stage.Block2來作為本發(fā)明實施的演示實例。
電路實例說明電路A_Stage.Block2用LEF/DEF文件描述,各項特征參數(shù)如表1

表1
注LEF/DEF格式為美國工業(yè)界常用電路文件格式,具體細節(jié)請參考相關(guān)文檔。運行參數(shù)說明運行過程中各控制參數(shù)和用戶參數(shù)的值如表2所示

表2實施過程(1)輸入使用內(nèi)嵌的LEF/DEF編譯器解析電路文件,得到電路參數(shù)如表3所示

表3(2)劃分(2.1)集群(2.1.1)生成355個單元團,每個單元團中只有一個PO;(2.1.2)-(2.1.2)標準單元被陸續(xù)加入單元團中,單元團的數(shù)量也在相應增加,該步驟結(jié)束后,單元團數(shù)為3203;(2.1.4)-(2.1.6)單元團中的標準單元和線網(wǎng)都被處理,各種參數(shù)和變量都相應被設(shè)置,這些都通過改變數(shù)據(jù)結(jié)構(gòu)來實現(xiàn);(2.2)根據(jù)(2.1)的結(jié)果對單元團建立超圖表示,用hMETIS軟件包進行劃分,劃分數(shù)為 ,根據(jù)最后的劃分結(jié)果,生成13個葉子虛擬模塊,并相應處理模塊中的單元和線網(wǎng)(2.3)生成樹;(2.3.1)整個電路成為樹的根節(jié)點;(2.3.2)焊塊成為791個固定的虛擬模塊;(2.3.3)因為Nlocal=13+2=15,Pb=20,不滿足式(2),所以不需要進行進一步劃分;(2.3.4)遞歸過程自動結(jié)束,構(gòu)成的樹只有2級,第1級是根節(jié)點,第2級包括13個葉子虛擬模塊,2個宏模塊和791個焊塊生成的固定虛擬模塊;(3)規(guī)劃;(3.1)隨機設(shè)置一個初始解,此例中S={block1,block2,block3,block4,...,block15)L={1,0,1,0,...,1,0}T={0,1,0,1,...,0,1}(3.1.1)所有虛擬模塊的虛擬引腳設(shè)定在虛擬模塊中心;(3.1.2)根據(jù)式(4)計算線長得Wf=2424797893,并根據(jù)布局結(jié)果得WDf=3637881,HEf=388800(3.1.3)根據(jù)式(5)計算代價得Cost=2638015959.6(3.1.4)保存Costmin=Costc=Cost;(3.2)位置優(yōu)化(3.2.1)所有虛擬模塊的虛擬引腳設(shè)定在虛擬模塊中心;(3.2.2)初始化TF=8000;(3.2.3)根據(jù)隨機值選擇方案1)來生成新解S={block4,block2,block3,block1,...,block15)L={1,0,1,0,...,1,0}T={0,1,0,1,...,0,1}(3.2.4)根據(jù)新解和式(4)計算線長得Wf=2680081624并根據(jù)布局結(jié)果得WDf=3637881,HEf=388800
(3.2.5)根據(jù)式(5)得代價Cost=2638067016.3(3.2.6)不滿足Cost<Costmin,因此不記錄該解;(3.2.7)在式(6)中,左邊=0.0017,右邊=0.99(取隨機數(shù)),不滿足,則回到原解;(3.2.8)循環(huán)執(zhí)行(3.2.3)-(3.2.8)到500次;(3.2.9)因為不滿足TF<300,根據(jù)式(7),TF=7600,轉(zhuǎn)向(3.2.3),循環(huán)進行步驟(3.2.3)-(3.2.9),直到滿足TF<300,最后輸出對應于Costmin的最優(yōu)解;(3.3)形狀優(yōu)化;(3.3.1)繼承(3.2)中的最優(yōu)解得到初始解,同(3.1)一樣計算得到Costmin=Costc=361482431(3.3.2)初始化TF=5000;(3.3.3)隨機選擇一個軟模塊或虛擬模塊,隨機改變其長寬比。
(3.3.4)-(3.3.6)得代價Cost=441685962.3(3.3.7)不滿足Cost<Costmin,因此不記錄該解;(3.3.8)不滿足式(6),回到原解;(3.3.9)循環(huán)執(zhí)行(3.3.3)-(3.3.9)到300次;(3.3.10)因為不滿足TF<200,根據(jù)式(7),TF=4750,轉(zhuǎn)向(3.3.3),循環(huán)進行步驟(3.3.3)-(3.3.10),直到滿足TF<200,最后輸出對應于Costmin的最優(yōu)解;(4)總體布局;(4.1)建立如式(9)的矩陣;(4.2)生成區(qū)域約束,反復迭代優(yōu)化;(4.2.1)區(qū)域約束是逐步形成的,它通過遞歸的劃分布局面積和單元集合而形成一棵區(qū)域約束樹,初始階段,整個布局面積和全體單元構(gòu)成樹的根節(jié)點;(4.2.2)目前只有一個葉子節(jié)點即根節(jié)點,全部單元都屬于這區(qū)域里,加入如式(10)的分布約束;(4.2.3)問題轉(zhuǎn)化為求解帶約束的二次規(guī)劃問題;(4.2.4)用拉格朗日乘子法解式(11);(4.2.4.1)-(4.2.4.3)問題轉(zhuǎn)化為線性方程組后,我們用GMRES方法求解線性方程,得到坐標x和y;(4.2.5)掃描區(qū)域樹的所有葉子節(jié)點,因為其中的標準單元數(shù)大于2則對該節(jié)點進行劃分;(4.2.5.1)因為區(qū)域的長大于寬,則生成垂直劃分線把區(qū)域分為左右兩部分;
(4.2.5.2)區(qū)域單元按x值排列,根據(jù)數(shù)量均分原則分為兩個部分,分別放入?yún)^(qū)域的兩個子區(qū)域中;(4.2.5.3)按照單元面積總和調(diào)整子區(qū)域大小,使得滿足式(14);(4.2.5.4)生成兩個子節(jié)點分別表示該子區(qū)域和其中的單元子集合,把子節(jié)點掛在原葉子節(jié)點下成為新的葉子節(jié)點;(4.2.6)回到(4.2.2)循環(huán)執(zhí)行(4.2.2)-(4.2.6),直到所有葉子節(jié)點中的標準單元數(shù)都不大于2;本發(fā)明取得的效果最后的實驗結(jié)果表明本方法能夠在合理時間里有效的處理混合電路和大規(guī)模電路,并能夠得到比一般的布局方法更好的布圖質(zhì)量。我們在SUN工作站V880上用C語言編程實現(xiàn)了該方法,測試了多個測試用例,并與普通二次布局結(jié)果作了比較,在運行時間相當?shù)那闆r下,線長改善效果明顯,最大改善達到40%以上。
表4為測試用例基本特征;表5為測試結(jié)果以及與普通二次布局結(jié)果的比較。

表4

權(quán)利要求
1.基于虛擬模塊的大規(guī)模混合模式布圖方法,含有處理宏模塊的規(guī)劃方法以及處理標準單元的布局方法,其特征在于它在虛擬模塊的基礎(chǔ)上引入了矩形單元規(guī)劃方法和矩形區(qū)域內(nèi)的布局方法,它的整個過程依次包括劃分、規(guī)劃、基于二次布局的總體布局和詳細布局四個部分;具體而言,它借助于SUN工作站V880,用C語言編程實現(xiàn),依次含有以下步驟(1)輸入電路,包括(1.1)標準單元的描述,包括寬和高,其中,各標準單元的高度相等;(1.2)宏模塊的描述,包括寬和高;(1.3)焊塊的描述,包括輸入/輸出屬性,定好的位置坐標;(1.4)引腳的描述,包括所屬單元的序號,在單元上的相對位置坐標;(1.5)線網(wǎng)的描述,包括線網(wǎng)的端點數(shù),每個端點連在哪個單元的哪個引腳上;同時輸入下列參數(shù)的值Nc標準單元的數(shù)量,Nb宏模塊數(shù)量,Npi輸入焊塊的數(shù)量,Npo輸出焊塊的數(shù)量,Npio輸入輸出焊塊的數(shù)量;(2)劃分,對全部電路進行劃分,生成虛擬模塊樹,所述虛擬模塊是指在劃分過程中被分在同一個部分的多個標準單元或宏模塊的組合,屬于一種邏輯模塊,其形狀可按不同的長寬比進行變化,其面積的最小值等于內(nèi)部所有標準單元以及宏模塊的面積之和;(2.1)設(shè)定Pc每個葉子虛擬模塊中擁有的標準單元數(shù),Pb后續(xù)規(guī)劃過程中能有效處理的最大模塊數(shù),Pp用hMETIS軟件包對所構(gòu)造的超圖進行虛擬模塊劃分時,要生成的模塊個數(shù);(2.2)基于公知的IMFFC算法把整個電路劃分成標準單元團的集合Sc1,在忽略宏模塊的情況下進行;(2.3)基于公知的hMETIS多層次劃分軟件包對標準單元團集合Sc1進行劃分,生成虛擬模塊樹的葉子節(jié)點,并用控制參數(shù)Pc來控制每個葉子虛擬模塊中擁有的標準單元數(shù);(2.4)生成代表整個電路層次化結(jié)構(gòu)的虛擬模塊樹,整個電路成為樹的根節(jié)點,其中只有宏模塊、焊塊和葉子虛擬模塊,用控制參數(shù)Pb控制劃分過程是否要遞歸進行下去;構(gòu)造一個超圖,其頂點與包括宏模塊在內(nèi)的所有模塊相對應,并用hMETIS軟件包對所述超圖進行劃分,生成含有宏模塊或標準單元的虛擬模塊,相應建立虛擬模塊樹中該節(jié)點的與虛擬模塊相對應的子節(jié)點,在劃分時,用控制參數(shù)Pp控制模塊級劃分數(shù),最終形成的虛擬模塊樹含有以下兩類節(jié)點葉子節(jié)點對應該類節(jié)點的虛擬模塊由標準單元和虛擬焊塊組成,非葉子節(jié)點對應的虛擬模塊由虛擬焊塊、宏模塊或下一級虛擬模塊組成;(3)規(guī)劃,對非葉子節(jié)點中的模塊進行定位,并確定它們的最佳形狀(3.1)設(shè)定wni模塊之間線網(wǎng)i的權(quán)重,由用戶設(shè)定,wc1、wc2、wc3計算代價時用的權(quán)重,由用戶定義,Ttb用模擬退火方法進行位置優(yōu)化時用的退火起始溫度,屬于系統(tǒng)參數(shù),Tte用模擬退火方法進行位置優(yōu)化時用的退火結(jié)束溫度,屬于系統(tǒng)參數(shù),LC1用模擬退火方法進行位置優(yōu)化時用的循環(huán)執(zhí)行次數(shù),F(xiàn)t表示退火過程中的降溫系數(shù),Tsb用模擬退火方法進行形狀優(yōu)化時用的退火起始溫度,Tse用模擬退火方法進行形狀優(yōu)化時用的退火結(jié)束溫度,LC2用模擬退火方法進行形狀優(yōu)化時用的循環(huán)執(zhí)行次數(shù);(3.2)用公知的角模塊方法表示模塊的位置;(3.3)隨機生成一個角模塊表示法中的列表S、L和T,其中S表示模塊安放順序,L表示模塊安放方向,T表示模塊安放時在安放方向上相鄰接的其他模塊的數(shù)量;在假設(shè)所有虛擬模塊的虛擬引腳都設(shè)在虛擬模塊中心的條件下,根據(jù)用戶給定的上述參數(shù),計算模塊間線網(wǎng)的總線長及其代價;(3.4)用公知的模擬退火方法進行位置優(yōu)化;(3.5)在(3.4)所得的最優(yōu)解的基礎(chǔ)上,再用公知的模擬退火方法進行形狀優(yōu)化;同理,按步驟(3)對虛擬模塊樹中的所有非葉子節(jié)點進行操作,使所有的宏模塊和虛擬模塊都得到定位;(4)總體布局,對葉子虛擬模塊中的標準單元使用公知的二次布局方法進行定位,并保持線長最短的目標;依次掃描區(qū)域樹中的所有葉子節(jié)點,并用控制參數(shù)Pr來限定各葉子節(jié)點中的標準單元數(shù),若其標準單元數(shù)大于Pr值,則對節(jié)點按垂直或水平方向進行劃分,生成兩個子節(jié)點,它們分別表示該子區(qū)域和其中的單元子集合,把子節(jié)點掛在原葉子節(jié)點下成為新的葉子節(jié)點,直到所有葉子節(jié)點中的標準單元數(shù)都不大于Pr值;(5)詳細布局,對全芯片單元進行最后的定位(5.1)把芯片劃分為Dm*Dn個面積相等的子區(qū)域;(5.2)平衡子區(qū)域建立容量—費用網(wǎng)絡(luò),求解最小代價最大流問題,依拓撲順序依次處理容量—費用網(wǎng)絡(luò)中的所有頂點,用最小代價的方法把單元分布擁擠的子區(qū)域中部分單元移動到單元分布稀疏的區(qū)域中;(5.3)平衡每個子區(qū)域內(nèi)部的子行區(qū)重建容量—費用網(wǎng)絡(luò),用求解最小代價最大流問題的方法,求出每一對相鄰子行區(qū)間需要移動單元的面積總和,用拓撲順序依次處理每一個子行區(qū),根據(jù)行區(qū)內(nèi)部標準單元面積總和不大于行區(qū)總面積的原則,把被子區(qū)域豎直邊界分割開的同一行上相鄰的子行區(qū)合并成整體行區(qū);(5.4)把行中的標準單元按X方向坐標從小到大進行排序,然后按此順序依次放置每個單元,以消除每個行區(qū)內(nèi)的單元重疊;(5.5)從優(yōu)化線長出發(fā),對單元位置進行調(diào)整;(6)輸出設(shè)計結(jié)果。
全文摘要
基于虛擬模塊的大規(guī)模混合模式布圖方法屬于集成電路計算機輔助設(shè)計技術(shù)領(lǐng)域,其特征在于它是在“虛擬模塊”概念的基礎(chǔ)上層次化劃分整個電路,以降低問題的規(guī)模,同時,把處理虛擬模塊和宏模塊的規(guī)劃技術(shù)以及處理標準單元的布局技術(shù)有機地相結(jié)合,以保證整個布圖系統(tǒng)能在合理時間內(nèi)得到優(yōu)良的布圖結(jié)果。整個過程依次由劃分、規(guī)劃、基于二次布局的總體布局和詳細布局組成。與一般的二次布局結(jié)果相比,線長改善效果最大可達到40%以上。
文檔編號G06F17/50GK1545049SQ200310113530
公開日2004年11月10日 申請日期2003年11月14日 優(yōu)先權(quán)日2003年11月14日
發(fā)明者洪先龍, 蔡懿慈, 楊長旗, 周強, 馬昱春, 呂勇強, 羅麗娟 申請人:清華大學
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
太仆寺旗| 泗水县| 平和县| 上杭县| 澳门| 商丘市| 响水县| 柞水县| 全州县| 民丰县| 沁源县| 布拖县| 浮山县| 信丰县| 南溪县| 比如县| 屏边| 长丰县| 东山县| 三门峡市| 康定县| 东平县| 宁城县| 盱眙县| 同德县| 元谋县| 昌宁县| 孟津县| 拜泉县| 桦川县| 离岛区| 资源县| 沭阳县| 出国| 金堂县| 加查县| 呼和浩特市| 蛟河市| 安康市| 应城市| 化隆|