本發(fā)明涉及芯片布局領域,尤其涉及一種芯片全局布局方法。
背景技術:
現(xiàn)場可編程門陣列(Field Programmable Gate Array,F(xiàn)PGA),它是作為專用集成電路(Application Specific Integrated Circuit,ASIC)領域中的一種半定制電路而出現(xiàn)的,既解決了定制電路的不足,又克服了原有可編程器件門電路數(shù)有限的缺點。適用于邏輯控制、信號處理、圖像處理等多種領域,僅在中國,F(xiàn)PGA芯片的市場就超過百億人民幣,并且以30%每年的速度增長,重要性不言而喻。
FPGA的使用離不開電子設計自動化(Electronic Design Automation,EDA)工具的配合,包括設計輸入、調試、功能仿真、綜合、布局布線等流程;其中,F(xiàn)PGA布局是將電路網(wǎng)表中的實例(instance)配置到FPGA結構中邏輯模箱的過程,布局結果的優(yōu)劣直接決定芯片性能的優(yōu)劣。現(xiàn)有的布局算法在運行時間和運行結果上都有一定的不足。
技術實現(xiàn)要素:
本發(fā)明實施例提供了一種芯片全局布局方法,該方法包括:根據(jù)芯片結構創(chuàng)建多個密度箱,并獲取包括多個實例的網(wǎng)表;根據(jù)布局算法為芯片進行初始布局,以便將多個實例分別映射至對應的密度箱;獲取并計算芯片上多個箱集合的集合密度,每個箱集合包括多個密度箱;將集合密度大于密度因子的箱集合作為種子箱集合,并按照集合密度從大到小的順序將箱集合排序,獲得集合隊列;按照集合隊列依次對種子箱集合進行擴展,直至種子箱集合的集合密度小于密度因子,并將種子箱集合對應的多個實例映射至對應的密度箱;判斷芯片布局是否滿足全局布局結束條件,當芯片布局滿足全局布局結束條件,結束全局布局。
可選地,上述方法還包括,根據(jù)種子箱集合的大小計算每個種子箱集合的強度因子,以便擴展過程中確定種子箱集合中所包含的每個實例所受到的拉力。
可選地,上述方法還包括,當芯片布局不滿足全局布局結束條件時,則獲取并計算芯片上多個箱集合的集合密度。
可選地,上述方法還包括,在初始布局結束之后,判斷芯片布局是否滿足全局布局結束條件,若滿足則結束全局布局。
可選地,上述計算芯片上每個箱集合的集合密度,包括:獲取每個箱集合所對應的多個密度箱,根據(jù)每個密度箱中實例的數(shù)量以及密度箱的容量計算密度箱的箱密度;根據(jù)計算獲得的多個箱密度的多個箱密度,計算獲得箱集合的集合密度。
可選地,上述計算芯片上每個箱集合的集合密度,還包括:獲取每個箱集合所對應的多個密度箱,獲取并根據(jù)每個密度箱中實例的數(shù)量以及密度箱的容量計算每個箱集合中的實例的數(shù)量以及箱集合的箱容量;根據(jù)每個箱集合中實例的數(shù)量以及箱容量計算每個箱集合的箱密度。
可選地,上述按照集合隊列依次對種子箱集合進行擴展,包括:按照集合隊列,優(yōu)先擴展集合密度大的種子箱集合,并且在擴展過程中,對于同一種子箱集合僅進行一次擴展。
本發(fā)明實施例所提供的方法,相比于現(xiàn)有技術,極大程度上的降低了芯片全局布局的迭代次數(shù),在降低了全局布局時間的同時,使得實例的分布更為均勻。
附圖說明
圖1為本發(fā)明提供的現(xiàn)有技術中Force-directed算法對芯片進行全局布局過程示意圖;
圖2為本發(fā)明實施例提供一種芯片全局布局方法流程示意圖;
圖3為本發(fā)明實施例提供的一個芯片A的種子箱集合擴展過程示意圖;
圖4為采用本發(fā)明實施例所提供方法進行芯片全局布局過程示意圖。
具體實施方式
下面通過附圖和實施例,對本發(fā)明的技術方案做進一步的詳細描述。
力導引Force-directed算法是目前使用較多的一種布局算法,force-directed布局將實例(instance)與實例之間的連接視作彈簧,在彈簧力的作用下,實例會被固定于特定位置,force-directed布局有一個問題是會造成實例的重疊(overlap),對于如何解決重疊問題,目前有RQL,F(xiàn)DP,FAR,mFAR,F(xiàn)astPlace等基于force-directed的算法。在FPGA具體的布局中,利用Force-directed算法對芯片進行布局的具體過程為:
圖1為本發(fā)明提供的現(xiàn)有技術中Force-directed算法對芯片進行全局布局過程示意圖,如圖1所示,根據(jù)FPGA芯片結構中的邏輯模箱陣列(圖a)建立與之一一對應的bin,在對芯片進行初始布局之后,將網(wǎng)表(netlist)中的每個實例(instance)映射至對應的bin中(圖b);由于在初始狀態(tài)下多出現(xiàn)多個實例集中在某些bin中,使bin中的實例遠遠超出bin本身的容量,此時,PDA算法將每個實例作為一個節(jié)點,實例之間的線網(wǎng)(net)作為一個彈簧,在彈簧的作用下,每個節(jié)點(實例)會在力的作用下改變位置;但由于部分bin中實例的密度過大,通常會在FPGA邊界建立虛擬節(jié)點(pseudonode),將虛擬節(jié)點與節(jié)點(實例)進行連接,以便實例在力的作用下改變位置,然后重新計算實例的位置,并配置到對應的bin中(圖c);如此往復,循環(huán)迭代,直至滿足全局布局結束條件(圖d)。
Force-directed算法的缺點是:對于密度較高的bin,需多次循環(huán)處理,處理時間較長;并且存在即便布局結束,高密度bin中實例的數(shù)量還是遠遠超出bin的容量的情況(如圖1中圖d中bin1中實例數(shù)量遠超bin1的容量),對芯片局部布局甚至布線過程非常不利。
本發(fā)明實施例提供一種芯片全局布局方法,通過建立密度箱(density bin)數(shù)據(jù)結構,在每輪實例移動后,映射實例至對應的密度箱,根據(jù)每個包括多個密度箱的箱集合的集合密度的大小進行排序,擴展集合密度高于密度因子的箱集合,并計算出每個箱集合的強度因子,根據(jù)強度因子的大小增加每個實例的拉力。根據(jù)拉力計算每個實例的新位置并進行移動,直至滿足全局布局結束的條件。
圖2為本發(fā)明實施例提供一種芯片全局布局方法流程示意圖,如圖2所示,該方法包括:
步驟S101,根據(jù)芯片的結構創(chuàng)建多個密度箱,并獲取芯片所對應的網(wǎng)表,該網(wǎng)表包括需布置于芯片的多個實例。
步驟S102,根據(jù)布局算法為芯片進行初始布局,將網(wǎng)表中的多個實例分別映射至對應的密度箱,確定每個實例的位置。
需要說明的是,本發(fā)明實施例所提供的布局算法為力導引(Force-directed,PDA)算法,具體為
步驟S103,判斷芯片布局是否滿足全局布局結束,若滿足,則執(zhí)行步驟S108,否則執(zhí)行步驟S104。
需要說明的是,全局布局結束條件可以為芯片上每個箱集合的集合密度均小于(或等于)密度因子;還可以為相應箱集合的集合密度滿足該箱集合對應區(qū)域的密度因子。
步驟S104,獲取芯片布局上所包含的多個箱集合,并計算每個箱集合的集合密度,獲得多個集合密度(ρ′1、ρ′2……ρ′m),每個箱集合包括多個密度箱。
可選的,箱集合的集合密度的計算方式包括計算方式一:獲取箱集合所包含的多個密度箱,并計算每個密度箱的箱密度(ρ1、ρ2……ρn),箱密度的計算公式為公式(1):
其中,ρi為箱密度,且i=1、2……n,n為正整數(shù);密度箱的容量(capacity)即指密度箱可容納的不同(或相同)實例的具體數(shù)量。
在計算獲得每個密度箱的箱密度后,根據(jù)多個箱密度計算箱集合的集合密度,具體計算公式為公式(2):
其中,ρ′i為集合密度,i為對應箱集合的編號,ρi為該箱集合所包含的密度箱的箱密度。
可選的,箱集合的集合密度的計算方式還包括計算方式二:獲取箱集合所包含的多個密度箱,并獲得每個密度箱所包含的實例的數(shù)量mi(i為1、2……n),并根據(jù)公式(3)計算該箱集合所包括的實例的數(shù)量Mi;以及每個密度箱的容量ci(i為1、2……n),并根據(jù)公式(4)計算箱集合的箱容量,并最終根據(jù)公式(5)計算獲得箱集合的箱密度,具體地:
其中,在公式(5)中,i指代該箱集合的編號。
步驟S105,將集合密度大于密度因子α的箱集合作為種子箱集合,并按照每個種子箱集合的集合密度由大到小的順序對種子箱集合進行排序,獲得集合隊列。
需要說明的是,密度因子α根據(jù)實際經(jīng)驗進行確定,不同芯片的密度因子不同,進一步的,同一芯片不同位置的密度因子也不相同。
步驟S106,按照集合隊列中種子箱集合的順序依次對種子箱集合進行擴展,直至種子箱集合的集合密度小于密度因子,并將每個種子集合所對應的實例映射至對應的密度箱,計算確定每個實例的新位置,而后執(zhí)行步驟S103.
可選的,在對種子箱集合的擴展過程中,需根據(jù)種子箱集合所占區(qū)域的大小等,確定該種子箱集合的強度因子β,并根據(jù)強度因子確定該種子箱集合中每個實例在擴展過程中所受到的拉力的大小。在具體的擴展過程中,種子箱集合所占區(qū)域越大、種子箱集合的集合密度越大,種子箱集合中每個實例所受到的拉力越大。
可選的,在對種子箱集合進行擴展的過程中,對于同一種子箱集合僅進行一次擴展,即:若當前待擴展的種子箱集合已經(jīng)存在于之前種子箱集合的擴展后的區(qū)域時,不對當前待擴展的種子箱集合進行擴展。如:圖3為本發(fā)明實施例提供的一個芯片A的種子箱集合擴展過程示意圖,如圖3所示,在芯片A的全局布局過程中,獲取的集合隊列為ρ′1>ρ′2>ρ′3>ρ′4,集合密度ρ′1、ρ′2、ρ′3、ρ′4分別對應種子箱集合A1、種子箱集合A2、種子箱集合A3、種子箱集合A4。在對種子箱集合進行擴展前,各種子箱集合的具體布局位置如圖3-a所示,則對芯片A的種子箱集合的具體擴展過程為:根據(jù)集合隊列,種子箱集合A1的集合密度最大,優(yōu)先對A1進行擴展,如圖3-b所示,在對A1進行擴展后獲得箱集合A1’(如圖3-b所示),并且A3被擴展到了箱集合A1’;而后根據(jù)集合隊列,對A2進行擴展(此過程未在圖中顯示);按照集合隊列下一步是對A3進行擴展,但由于A3已經(jīng)在A1的擴展過程中被擴展進入A1’中,因此不再對A3進行擴展;最后對A4進行擴展(此過程圖中并未顯示)。
需要說明的是,在對種子箱集合進行的擴展的過程中,均在擴展后的箱集合的集合密度小于密度因子才停止對該種子箱集合的擴展,此種方式可以從本質上降低循環(huán)迭代的次數(shù),縮短全局布局的時間。
步驟S107,結束全局布局。
下面結合附圖對上述方法的進行說明,圖4為采用本發(fā)明實施例所提供方法進行芯片全局布局過程示意圖,如圖4所示,在圖中示出采用本發(fā)明實施例所提供方法對芯片進行全局布局的四個階段,再根據(jù)芯片的結構創(chuàng)建密度箱(如圖4-a)后,對芯片進行初始布局(如圖4-b),顯然初始布局之后,芯片部分箱集合的集合密度過大,而后在根據(jù)本發(fā)明所提供方法對確定的種子箱集合進行擴展(擴展過程如圖4-c),最終獲得滿足全局布局結束條件結束布局(如圖4-d),顯然,經(jīng)過本發(fā)明實施例所提供方法進行全局布局后,芯片中不再存在集合密度過大的箱集合,實例的分布也較為均勻。
以上所述的具體實施方式,對本發(fā)明的目的、技術方案和有益效果進行了進一步詳細說明,所應理解的是,以上所述僅為本發(fā)明的具體實施方式而已,并不用于限定本發(fā)明的保護范圍,凡在本發(fā)明的精神和原則之內,所做的任何修改、等同替換、改進等,均應包含在本發(fā)明的保護范圍之內。