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