芯片的布局方法
【專利摘要】本發(fā)明涉及一種芯片的布局方法,該方法包括:獲取邏輯單元時(shí)鐘信號(hào)的總數(shù)M和種類L;在芯片的全局時(shí)鐘信號(hào)個(gè)數(shù)N小于獲取到的邏輯單元時(shí)鐘信號(hào)的總數(shù)M時(shí),根據(jù)邏輯單元時(shí)鐘信號(hào)的種類L,對(duì)邏輯單元進(jìn)行歸類;根據(jù)每類邏輯單元的時(shí)鐘信號(hào),從L類邏輯單元中選取N類邏輯單元;將所述N個(gè)全局時(shí)鐘信號(hào)分別作為所選取的N類邏輯單元的時(shí)鐘信號(hào);將其余的L-N類邏輯單元分別構(gòu)建為宏模塊;將所述宏模塊布局到芯片上時(shí),選擇所在區(qū)域的一個(gè)局部時(shí)鐘信號(hào)作為所述宏模塊的時(shí)鐘信號(hào);根據(jù)所述宏模塊,更新預(yù)設(shè)的網(wǎng)表;根據(jù)更新后的網(wǎng)表建立目標(biāo)函數(shù),計(jì)算出所述宏模塊在芯片布局中的位置。本發(fā)明有效地保證了時(shí)鐘安全問題,提高了芯片的處理性能。
【專利說明】芯片的布局方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及布局算法,尤其涉及一種芯片的布局方法。
【背景技術(shù)】
[0002]目前,在現(xiàn)場(chǎng)可編程邏輯門陣列(Field Programmable Gate Array, FPGA)應(yīng)用中,要求集成電路具有可編程或可配置的互連網(wǎng)絡(luò),邏輯門通過可配置的互連網(wǎng)絡(luò)而彼此連接。作為獨(dú)立芯片或系統(tǒng)中核心部分起作用的FPGA已經(jīng)廣泛被應(yīng)用于大量微電子設(shè)備中。廣義的FPGA的邏輯門的定義,不單指簡(jiǎn)單的與非門,也指具有可配置功能的組合邏輯與時(shí)序邏輯的邏輯單元或由多個(gè)邏輯單元互連而組成的邏輯塊。
[0003]隨著FPGA芯片規(guī)模的擴(kuò)大,布局算法愈發(fā)顯得關(guān)鍵和重要,主要面臨兩方面的挑戰(zhàn):如何應(yīng)對(duì)大規(guī)模的布局電路和提高芯片性能。在芯片上全局時(shí)鐘個(gè)數(shù)有限的情況下,如何保證在處理大規(guī)模電路寄存器具有很多時(shí)鐘信號(hào)時(shí)不會(huì)出現(xiàn)時(shí)鐘安全問題,成為保證芯片質(zhì)量的關(guān)鍵。
[0004]目前工業(yè)界還沒有提出很好的能夠保證解決設(shè)計(jì)多時(shí)鐘情況下時(shí)鐘安全的方法。
【發(fā)明內(nèi)容】
[0005]本發(fā)明的目的是提供一種在芯片上全局時(shí)鐘個(gè)數(shù)有限的情況下,而大規(guī)模集成電路寄存器具有很多時(shí)鐘信號(hào)時(shí),解決時(shí)鐘安全問題的芯片布局方法。
[0006]為實(shí)現(xiàn)上述目的,本發(fā)明提供了一種芯片布局的方法,該方法包括:
[0007]獲取邏輯單元時(shí)鐘信號(hào)的總數(shù)M和種類L ;
[0008]在芯片的全局時(shí)鐘信號(hào)個(gè)數(shù)N小于所述獲取到的邏輯單元時(shí)鐘信號(hào)的總數(shù)M時(shí),根據(jù)所述邏輯單元時(shí)鐘信號(hào)的種類L,對(duì)所述邏輯單元進(jìn)行歸類,每類邏輯單元具有相同的時(shí)鐘信號(hào);
[0009]根據(jù)每類邏輯單元的時(shí)鐘信號(hào),從L類邏輯單元中選取N類邏輯單元;將所述N個(gè)全局時(shí)鐘信號(hào)分別作為所選取的N類邏輯單元的時(shí)鐘信號(hào);將其余的L-N類邏輯單元分別構(gòu)建為宏模塊;將所述宏模塊布局到芯片上時(shí),選擇所在區(qū)域的一個(gè)局部時(shí)鐘信號(hào)作為所述宏模塊的時(shí)鐘信號(hào);
[0010]根據(jù)所述宏模塊,更新預(yù)設(shè)的網(wǎng)表;
[0011]根據(jù)更新后的網(wǎng)表建立目標(biāo)函數(shù),計(jì)算出所述宏模塊在芯片布局中的位置。
[0012]在上述方法中,所述方法還包括:
[0013]在所述芯片的全局時(shí)鐘信號(hào)個(gè)數(shù)N大于或等于所述獲取到的所述邏輯單元時(shí)鐘信號(hào)的總數(shù)M時(shí),將所有邏輯單元直接構(gòu)成所述芯片布局中的基本單位,采用全局時(shí)鐘信號(hào)作為基本單位的時(shí)鐘信號(hào)。
[0014]在上述方法中,所述根據(jù)所每類邏輯單元的時(shí)鐘信號(hào),從L類邏輯單元中選取N類邏輯單元包括:
[0015]按照每個(gè)種類時(shí)鐘信號(hào)下的邏輯單元的個(gè)數(shù),對(duì)每個(gè)種類時(shí)鐘信號(hào)進(jìn)行排序;依據(jù)排序結(jié)果,從L類邏輯單元中選取N類邏輯單元。
[0016]在上述方法中,所述根據(jù)所述構(gòu)建的宏模塊,更新預(yù)設(shè)的網(wǎng)表包括:
[0017]將預(yù)設(shè)的網(wǎng)表中組成宏模塊的邏輯單元替換為宏模塊,將所述基本單位和宏模塊表示為節(jié)點(diǎn);
[0018]根據(jù)所述節(jié)點(diǎn)之間的連接關(guān)系更新所述網(wǎng)表中每個(gè)邏輯單元各端口上的連線信肩、O
[0019]在上述方法中,所述根據(jù)更新后的網(wǎng)表建立目標(biāo)函數(shù),求解出所述宏模塊在芯片布局中的位置之后還包括:
[0020]根據(jù)所述求得的宏模塊在芯片布局中的位置和預(yù)設(shè)的宏模塊的大小,依次確定宏模塊中每個(gè)邏輯單元在芯片布局中的位置。
[0021]在上述方法中,所述方法還包括:
[0022]判斷布局到芯片上的邏輯單元和宏模塊之間是否有重疊,在有重疊的情況下,將所述宏模塊或邏輯單元移動(dòng)到重疊位置周圍空閑的位置。
[0023]本發(fā)明通過將時(shí)鐘信號(hào)下的邏輯單元個(gè)數(shù)較小的邏輯單元構(gòu)建宏模塊,有效地保證了時(shí)鐘安全問題,從而提高了芯片性能;此外,因?yàn)楸景l(fā)明宏模塊的構(gòu)建,減少了時(shí)鐘信號(hào)的占用量,因此可以應(yīng)對(duì)大規(guī)模的布局電路。
【專利附圖】
【附圖說明】
[0024]圖1為本發(fā)明實(shí)施例的芯片布局方法的流程圖;
[0025]圖2為邏輯單元的基本組成結(jié)構(gòu)圖;
[0026]圖3為一種網(wǎng)表的結(jié)構(gòu)示意圖;
[0027]圖4為另一種網(wǎng)表的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0028]下面通過附圖和實(shí)施例,對(duì)本發(fā)明的技術(shù)方案做進(jìn)一步的詳細(xì)描述。
[0029]圖1為本發(fā)明實(shí)施例的芯片布局方法的流程圖。如圖1所示,本發(fā)明芯片的布局方法包括:
[0030]步驟101,將預(yù)設(shè)的用戶電路進(jìn)行綜合以及庫映射,得到基本單元。
[0031]在步驟101中,預(yù)設(shè)的用戶電路是使用硬件描述語言編譯而成的,將使用高層次的硬件描述語言(verilog)編譯而成的用戶電路綜合成為低層次的門級(jí)電路;并將門級(jí)電路映射到基本單元中,基本單元可以包括三種基本形式:四輸入的查找表和寄存器、單獨(dú)四輸入的查找表、單獨(dú)的寄存器。查找表(LUT,Look-Up-Table)本質(zhì)上就是一個(gè)隨機(jī)存儲(chǔ)器(RAM, Random Access Memory)。目前工業(yè)界FPGA中多使用4輸入的LUT,所以每一個(gè)LUT可以看成一個(gè)有4位地址線的16x1的RAM。當(dāng)用戶通過原理圖或硬件描述語言(HDL,Hardware Descript1n Language)描述了一個(gè)邏輯電路以后,開發(fā)軟件PLD/FPGA會(huì)自動(dòng)計(jì)算邏輯電路的所有可能的結(jié)果,并把結(jié)果提前寫入RAM,這樣,每輸入一個(gè)信號(hào)進(jìn)行邏輯運(yùn)算就等于輸入一個(gè)地址進(jìn)行查表,找出地址對(duì)應(yīng)的內(nèi)容,然后輸出即可。
[0032]步驟102,將所述基本單元打包成邏輯單元。
[0033]打包處理的基本單位是查找表和寄存器,打包的目標(biāo)主要是為了解決三個(gè)問題:第一,處理布局時(shí)的一些查找表級(jí)別的約束,例如:某兩個(gè)查找表必須要放置在相鄰的位置,某些特殊關(guān)系的查找表和寄存器不能放在一起,一般而言,約束越早處理,處理的難度相對(duì)越??;第二,打包時(shí)將一些小的邏輯單元組合成一個(gè)大的邏輯單元,減少了邏輯單元的數(shù)量級(jí),這樣可以大大減少后面全局布局時(shí)的求解規(guī)模,減少了布局時(shí)間;第三,可以提高芯片的面積使用效率,芯片上的可編輯可編程邏輯模塊(PLB, Programmable Logic Block)和打包成的邏輯單元是相對(duì)應(yīng)的,在打包時(shí)可以方便的控制每個(gè)邏輯單元的使用率,從而提高芯片面積的使用率。打包的過程主要分為兩步:第一步,將查找表,寄存器,或者查找表和寄存器的組合組成基本單元;第二步,將基本單元組合成邏輯單元。
[0034]圖2為邏輯單元的基本組成結(jié)構(gòu)圖,如圖2所示,一個(gè)邏輯單元(LE, LogicElement)由4個(gè)基本的可編程邏輯元件(LP, Logic Parcel)、快速跳躍進(jìn)位鏈輸入(Carryskip in)、快速跳躍進(jìn)位鏈輸出(Carry skip out)及局部緩沖LBUF組成。每個(gè)LP中包括兩個(gè)LUT4、I個(gè)LUT4C (帶進(jìn)位鏈的LUT4)和兩個(gè)寄存器。I個(gè)LE中共計(jì)有12個(gè)LUT4和8個(gè)寄存器,LUT4和寄存器的比例為3:2,快速跳躍進(jìn)位鏈輸入和快速跳躍進(jìn)位鏈輸出用于實(shí)現(xiàn)快速跳躍進(jìn)位鏈功能,LBUF用于產(chǎn)生邏輯單元中寄存器的控制信號(hào)時(shí)鐘。
[0035]回到圖1。步驟103,獲取所述邏輯單元時(shí)鐘信號(hào)的總數(shù)M和種類L。
[0036]在步驟103中,首先將各邏輯單元、每個(gè)邏輯單元的所有端口和以及每個(gè)邏輯單元的各個(gè)端口上的連線信息記錄到預(yù)設(shè)的網(wǎng)表中,然后根據(jù)預(yù)設(shè)的網(wǎng)表,統(tǒng)計(jì)所有邏輯單元的個(gè)數(shù),并通過分析各邏輯單元的時(shí)鐘(clock)端口上連線的種類確定該邏輯單元對(duì)應(yīng)的時(shí)鐘信號(hào)的種類。
[0037]步驟104,在芯片的全局時(shí)鐘信號(hào)個(gè)數(shù)N小于所述獲取到的邏輯單元時(shí)鐘信號(hào)的總數(shù)M時(shí),根據(jù)所述邏輯單元時(shí)鐘信號(hào)的種類L,對(duì)所述邏輯單元進(jìn)行歸類,每類邏輯單元具有相同的時(shí)鐘信號(hào)。
[0038]在步驟104中,芯片的全局時(shí)鐘信號(hào)個(gè)數(shù)是通過硬件固定的,是個(gè)確定值。具體地,用N表示芯片的全局時(shí)鐘信號(hào)個(gè)數(shù),用M表示獲取到的邏輯單元時(shí)鐘信號(hào)的個(gè)數(shù)。在芯片的全局時(shí)鐘信號(hào)個(gè)數(shù)N小于所述獲取到的邏輯單元時(shí)鐘信號(hào)的總數(shù)M時(shí),根據(jù)所述邏輯單元時(shí)鐘信號(hào)的種類L,對(duì)所述邏輯單元進(jìn)行歸類,每類邏輯單元具有相同的時(shí)鐘信號(hào)。按照每個(gè)種類時(shí)鐘信號(hào)下的邏輯單元的個(gè)數(shù),對(duì)每個(gè)種類時(shí)鐘信號(hào)按照從大到小的順序進(jìn)行排序,將排序后的邏輯單元時(shí)鐘信號(hào)表示為CLK1, CLK2,…,CLKm,用CLKi表示第i個(gè)種類時(shí)鐘信號(hào);依據(jù)排序結(jié)果,從L類邏輯單元中選取N類邏輯單元。將N個(gè)全局時(shí)鐘信號(hào)分別作為所選取的N類邏輯單元的時(shí)鐘信號(hào)。
[0039]如果芯片的全局時(shí)鐘信號(hào)個(gè)數(shù)N大于或等于獲取到的邏輯單元時(shí)鐘信號(hào)的總數(shù)M時(shí),將所有邏輯單元直接構(gòu)成所述芯片布局中的基本單位,采用全局時(shí)鐘信號(hào)作為基本單位的時(shí)鐘信號(hào)。
[0040]步驟105,將其余的L-N類邏輯單元分別構(gòu)建為宏模塊,將所述宏模塊布局到芯片上時(shí),選擇所在區(qū)域的一個(gè)局部時(shí)鐘信號(hào)作為所述宏模塊的時(shí)鐘信號(hào)。
[0041]具體地,依據(jù)步驟104的排序結(jié)果,對(duì)剩下的L-N類時(shí)鐘信號(hào)下的邏輯單元分別構(gòu)建L-N個(gè)宏模塊,將所述宏模塊布局到芯片上時(shí),選擇所在區(qū)域的一個(gè)局部時(shí)鐘信號(hào)作為所述宏模塊的時(shí)鐘信號(hào)。舉例為,芯片上有16*32個(gè)數(shù)的PLB,整個(gè)PLB陣列可以劃分為很多小區(qū)域,其中每2*8區(qū)域可以認(rèn)為是一個(gè)小區(qū)域。每一個(gè)PLB小區(qū)域可以任意的選擇4條信號(hào)線作為clock信號(hào)線,當(dāng)宏模塊布局到該P(yáng)LB小區(qū)域時(shí),可以選擇其中I條信號(hào)線作為該宏模塊的時(shí)鐘信號(hào)。
[0042]步驟106,根據(jù)所述構(gòu)建的宏模塊,更新預(yù)設(shè)的網(wǎng)表。
[0043]預(yù)設(shè)的網(wǎng)表中包括用戶設(shè)計(jì)的各邏輯單元、每個(gè)邏輯單元的所有端口和以及每個(gè)邏輯單元的各個(gè)端口上的連線信息,而在步驟105中對(duì)部分邏輯單元進(jìn)行了宏模塊的構(gòu)建,因此需要根據(jù)構(gòu)建的宏模塊,更新預(yù)設(shè)的網(wǎng)表;即將預(yù)設(shè)的網(wǎng)表中組成宏模塊的邏輯單元替換為宏模塊,將所述基本單位和宏模塊表示為節(jié)點(diǎn);根據(jù)所述節(jié)點(diǎn)之間的連接關(guān)系更新所述網(wǎng)表中每個(gè)邏輯單元各端口上的連線信息。
[0044]步驟107,根據(jù)更新后的網(wǎng)表建立目標(biāo)函數(shù),求解出所述宏模塊在芯片布局中的位置。圖3為一種網(wǎng)表的結(jié)構(gòu)示意圖,圖中網(wǎng)表中節(jié)點(diǎn)A分別與節(jié)點(diǎn)B、C和D連接。在將節(jié)點(diǎn)A、B、C和D布局到芯片上時(shí),要求節(jié)點(diǎn)A和節(jié)點(diǎn)C之間的連線長(zhǎng)度、節(jié)點(diǎn)A和節(jié)點(diǎn)B之間的連線長(zhǎng)度、節(jié)點(diǎn)A和節(jié)點(diǎn)D之間的連線長(zhǎng)度分別最小。以要求節(jié)點(diǎn)A和節(jié)點(diǎn)C之間的連線長(zhǎng)度最小為例。圖3中,把節(jié)點(diǎn)A和節(jié)點(diǎn)C之間的連線長(zhǎng)度等效看成節(jié)點(diǎn)A和節(jié)點(diǎn)C兩點(diǎn)組成的矩形框的半周長(zhǎng)(HPWL),所以可以將連線長(zhǎng)度的優(yōu)化轉(zhuǎn)化為節(jié)點(diǎn)A和節(jié)點(diǎn)C之間HPffL的優(yōu)化。HPWL的增長(zhǎng)趨勢(shì)又和矩形邊長(zhǎng)的平方成正比,因此,又可以將HPWL的優(yōu)化轉(zhuǎn)化為矩形邊長(zhǎng)平方的優(yōu)化。同理,節(jié)點(diǎn)A與節(jié)點(diǎn)B,節(jié)點(diǎn)A與節(jié)點(diǎn)D之間的連線長(zhǎng)度也可按上述方式進(jìn)行優(yōu)化。最后,列出需要優(yōu)化的最終的目標(biāo)函數(shù),如下公式所示:
[0045]
ψ{χ,>0二 W1IXxj - X1.) + (V,—yB)2] + W2[(? - \ )2 + (yA-yc)2] + W3[(X4 -Xd)2 + (yA — Vd)2](I)
其中,表示需要優(yōu)化的目標(biāo)函數(shù),W1, W2和W3表示網(wǎng)表中的第一、二和三條連接線對(duì)應(yīng)的權(quán)值,(χΑ, yA)表示第一、二和三條連接線的起始節(jié)點(diǎn)的坐標(biāo),(xB, yB)、(xc,yc)和(xD,yD)表示第一、二和三條連接線的終止節(jié)點(diǎn)的坐標(biāo)。
[0046]在目標(biāo)函數(shù)確定后,將對(duì)其中各節(jié)點(diǎn)坐標(biāo)值進(jìn)行求解。圖4為另一種網(wǎng)表的結(jié)構(gòu)示意圖,該網(wǎng)表中包括節(jié)點(diǎn)A、B、C、D、E和F六個(gè)節(jié)點(diǎn),連接關(guān)系如圖所示;其中,C、D、E和F為網(wǎng)表中的固定節(jié)點(diǎn),即為輸入輸出設(shè)備1等,固定節(jié)點(diǎn)在芯片中的位置一般是固定的;A和B分別為需要布置到芯片中的邏輯單元或者宏模塊;W為各條邊上的權(quán)值,A-D和B-F之間的權(quán)值為2,其余為I。通常在布局時(shí),X方向和Y方向分開考慮。首先考慮X方向。假設(shè)C和D的X坐標(biāo)都為100,E和F的X坐標(biāo)都為400,則根據(jù)公式I可列出如下目標(biāo)函數(shù):
[0047]
φ{(diào)X) — {-XI ~ 100) + 2(.V I — 100) + (x,j —.,V j) + {Χβ ~ 400) + 2(.-- — 400)^2.)
[0048]對(duì)目標(biāo)函數(shù)分別對(duì)Xa和Xb求偏導(dǎo)數(shù),求得公式(3)和(4),如下所示:
[0049]
^- = 2(x1-xB) + 6(x1-l00)3 )
Sr4 -'
[0050]
—=2{xb -xa) + 6(xb — 400)( 4
[0051]構(gòu)建矩陣方程為:
【權(quán)利要求】
1.一種芯片的布局方法,其特征在于,該方法包括: 獲取邏輯單元時(shí)鐘信號(hào)的總數(shù)M和種類L ; 在芯片的全局時(shí)鐘信號(hào)個(gè)數(shù)N小于所述獲取到的邏輯單元時(shí)鐘信號(hào)的總數(shù)M時(shí),根據(jù)所述邏輯單元時(shí)鐘信號(hào)的種類L,對(duì)所述邏輯單元進(jìn)行歸類,每類邏輯單元具有相同的時(shí)鐘信號(hào); 根據(jù)每類邏輯單元的時(shí)鐘信號(hào),從L類邏輯單元中選取N類邏輯單元;將所述N個(gè)全局時(shí)鐘信號(hào)分別作為所選取的N類邏輯單元的時(shí)鐘信號(hào);將其余的L-N類邏輯單元分別構(gòu)建為宏模塊,將所述宏模塊布局到芯片上時(shí),選擇所在區(qū)域的一個(gè)局部時(shí)鐘信號(hào)作為所述宏模塊的時(shí)鐘信號(hào); 根據(jù)所述宏模塊,更新預(yù)設(shè)的網(wǎng)表; 根據(jù)更新后的網(wǎng)表建立目標(biāo)函數(shù),計(jì)算出所述宏模塊在芯片布局中的位置。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述方法還包括: 在所述芯片的全局時(shí)鐘信號(hào)個(gè)數(shù)N大于或等于所述獲取到的所述邏輯單元時(shí)鐘信號(hào)的總數(shù)M時(shí),將所有邏輯單元直接構(gòu)成所述芯片布局中的基本單位,采用全局時(shí)鐘信號(hào)作為基本單位的時(shí)鐘信號(hào)。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述根據(jù)所每類邏輯單元的時(shí)鐘信號(hào),從L類邏輯單元中選取N類邏輯單元包括: 按照每個(gè)種類時(shí)鐘信號(hào)下的邏輯單元的個(gè)數(shù),對(duì)每個(gè)種類時(shí)鐘信號(hào)進(jìn)行排序;依據(jù)排序結(jié)果,從L類邏輯單元中選取N類邏輯單元。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述根據(jù)所述構(gòu)建的宏模塊,更新預(yù)設(shè)的網(wǎng)表包括: 將預(yù)設(shè)的網(wǎng)表中組成宏模塊的邏輯單元替換為宏模塊,將所述基本單位和宏模塊表示為節(jié)點(diǎn); 根據(jù)所述節(jié)點(diǎn)之間的連接關(guān)系更新所述網(wǎng)表中每個(gè)邏輯單元各端口上的連線信息。
5.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述根據(jù)更新后的網(wǎng)表建立目標(biāo)函數(shù),求解出所述宏模塊在芯片布局中的位置之后還包括: 根據(jù)所述求得的宏模塊在芯片布局中的位置和預(yù)設(shè)的宏模塊的大小,依次確定宏模塊中每個(gè)邏輯單元在芯片布局中的位置。
6.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述方法還包括: 判斷布局到芯片上的邏輯單元和宏模塊之間是否有重疊,在有重疊的情況下,將所述宏模塊或邏輯單元移動(dòng)到重疊位置周圍空閑的位置。
【文檔編號(hào)】G06F17/50GK104182556SQ201310192832
【公開日】2014年12月3日 申請(qǐng)日期:2013年5月22日 優(yōu)先權(quán)日:2013年5月22日
【發(fā)明者】虞健, 咼超, 蔣中華, 劉桂林, 劉明 申請(qǐng)人:京微雅格(北京)科技有限公司