Fpga中進(jìn)行電子設(shè)計(jì)自動(dòng)化的邏輯單元裝箱方法
【專利摘要】本發(fā)明公開(kāi)了一種FPGA中進(jìn)行電子設(shè)計(jì)自動(dòng)化的邏輯單元裝箱方法,主要解決現(xiàn)有技術(shù)裝箱后電路時(shí)延過(guò)大,可配置邏輯單元CLB消耗過(guò)多的問(wèn)題。其裝箱過(guò)程是:將工藝映射,單元?jiǎng)澐痔幚砗蟮碾娐酚糜邢驘o(wú)環(huán)圖表示;通過(guò)電路中查詢表LUT之間的連接方式對(duì)有向無(wú)環(huán)圖中的時(shí)延信息進(jìn)行初始化;通過(guò)廣度優(yōu)先遍歷法計(jì)算每個(gè)節(jié)點(diǎn)的松散度,并結(jié)合每個(gè)節(jié)點(diǎn)對(duì)電路關(guān)鍵路徑的影響計(jì)算出它的關(guān)鍵度;根據(jù)每個(gè)節(jié)點(diǎn)的關(guān)鍵度并結(jié)合查詢表LUT的線網(wǎng)個(gè)數(shù)和可配置邏輯單元CLB中已使用的線網(wǎng)個(gè)數(shù),計(jì)算每個(gè)查詢表LUT的線網(wǎng)增益值,根據(jù)線網(wǎng)增益值對(duì)查詢表LUT進(jìn)行選擇填裝。本發(fā)明極大地降低了最終電路的時(shí)延,同時(shí)極大地減少了最終電路消耗的可配置邏輯單元CLB的數(shù)量。
【專利說(shuō)明】FPGA中進(jìn)行電子設(shè)計(jì)自動(dòng)化的邏輯單元裝箱方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于計(jì)算機(jī)【技術(shù)領(lǐng)域】,特別涉及一種電子設(shè)計(jì)自動(dòng)化設(shè)計(jì)裝箱打包方法,可用于同構(gòu),異構(gòu)等多種FPGA芯片的應(yīng)用設(shè)計(jì)。
【背景技術(shù)】
[0002]80年代中期,美國(guó)Xilinx公司首先推出了現(xiàn)場(chǎng)可編程門(mén)陣列器件FPGA,它是在可編程邏輯陣列PLA和通用陣列邏輯GAL的基礎(chǔ)上進(jìn)一步發(fā)展的產(chǎn)物。隨著集成電路的深亞微米制造技術(shù)和設(shè)計(jì)技術(shù)的迅速發(fā)展,集成電路進(jìn)入了系統(tǒng)級(jí)SOC時(shí)代。Xilinx公司推出的百萬(wàn)門(mén)Virtex系列的FPGA,為解決系統(tǒng)級(jí)設(shè)計(jì)問(wèn)題提供了新的FPGA平臺(tái)。目前,國(guó)外FPGA的設(shè)計(jì)技術(shù)和加工工藝成熟,產(chǎn)品門(mén)類齊全,可以提供上百個(gè)系列品種,芯片集成度已達(dá)到上百萬(wàn)門(mén),并廣泛應(yīng)用于通信、航天、航空、導(dǎo)航、遙感、遙測(cè)等國(guó)防領(lǐng)域。美國(guó)Xilinx、Altera、Lattice和Actel等公司壟斷了全球可編程邏輯器件市場(chǎng)。而國(guó)內(nèi)的芯片發(fā)展基本上處于一窮二白的階段,沒(méi)有自主產(chǎn)權(quán)的核心工藝技術(shù),所以研發(fā)我國(guó)自主的FPGA芯片已經(jīng)刻不容緩。
[0003]使用FPGA芯片必須要有支持FPGA開(kāi)發(fā)的電子設(shè)計(jì)自動(dòng)化軟件,開(kāi)發(fā)基于FPGA的電子設(shè)計(jì)自動(dòng)化軟件的設(shè)計(jì)流程包括:邏輯綜合,工藝映射,單元?jiǎng)澐?,邏輯單元裝箱,布局,布線,編程下載等步驟,如圖1所示。其中:
[0004]網(wǎng)表優(yōu)化,用于實(shí)現(xiàn)消除冗余的邏輯,減少電路實(shí)際所需的面積;
[0005]工藝映射,用于將優(yōu)化后的網(wǎng)表轉(zhuǎn)化為由查詢表LUT和時(shí)序單元組成的電路,實(shí)現(xiàn)在滿足輸入約束的條件下,將更多的組合邏輯放入到一個(gè)查詢表LUT,以減少所需FPGA的容量;
[0006]單元?jiǎng)澐?,用于將?guī)模大小超過(guò)FPGA容量的LUT集成單元,劃分成幾個(gè)能分別放進(jìn)到給定的FPGA中的小的LUT單元組;
[0007]邏輯單元裝箱,用于根據(jù)劃分后的LUT單元組之間的互連時(shí)延信息,計(jì)算LUT之間的互連延遲并算出每個(gè)LUT的權(quán)重值,然后按照權(quán)重值的大小對(duì)LUT進(jìn)行排序,將一個(gè)個(gè)LUT單元按照順序依次裝箱到可配置邏輯單元CLB中;
[0008]布局,用于將裝箱之后的CLB單元映射到實(shí)際FPGA的各個(gè)邏輯位置,以達(dá)到減少CLB之間連線的交錯(cuò)度,緩解布線模塊的壓力;
[0009]布線,用于實(shí)現(xiàn)將CLB之間的各個(gè)連接采用FPGA內(nèi)部已經(jīng)存在的連線資源連接起來(lái),使整個(gè)電路被完全映射到給定的FPGA芯片上;
[0010]編碼下載,根據(jù)布線映射好的電路,通過(guò)編譯生成所要使用的位數(shù)據(jù)流文件,然后將此數(shù)據(jù)文件下載到FPGA芯片中。
[0011]所述的邏輯單元裝箱,通常依賴于FPGA的結(jié)構(gòu),目前比較流行的FPGA結(jié)構(gòu)就是在一個(gè)可配置邏輯單元CLB內(nèi)部含多個(gè)查詢表LUT,這些查詢表LUT之間共享輸入,同時(shí)它們的輸出也可以通過(guò)互連資源反饋到輸入端?,F(xiàn)有的邏輯單元裝箱方法基本分為以下兩種:
[0012]一種是通過(guò)犧牲可配置邏輯單元CLB的數(shù)量來(lái)提高最終電路的時(shí)延性能,例如T-vpack邏輯單元裝箱方法,該方法就是在計(jì)算時(shí)延階段通過(guò)反復(fù)的回朔計(jì)算來(lái)提高最終電路的時(shí)延,即在對(duì)每一個(gè)查詢表LUT填裝完成后,都會(huì)去對(duì)整個(gè)電路的時(shí)延信息進(jìn)行更新,同時(shí)計(jì)算查詢表LUT所對(duì)應(yīng)的時(shí)延權(quán)值。這種方法雖然能保證電路時(shí)延性能的高效,但卻沒(méi)有對(duì)最終電路的面積,即消耗的可配置邏輯單元CLB的數(shù)量進(jìn)行很好的優(yōu)化控制,使得最終加載到FPGA開(kāi)發(fā)板上的電路消耗的可配置邏輯單元CLB過(guò)多。
[0013]另一種是通過(guò)犧牲電路的時(shí)延性能來(lái)減小最終電路的可配置邏輯單元CLB消耗,例如R-pack邏輯單元裝箱方法,該方法就是將最終電路消耗可配置邏輯單元CLB的個(gè)數(shù)作為首要的優(yōu)化目標(biāo)對(duì)查詢表LUT進(jìn)行裝箱打包,并為了保證對(duì)查詢表LUT裝箱的連續(xù)性,在計(jì)算時(shí)延階段對(duì)電路的時(shí)延信息不進(jìn)行回朔更新。這種方法雖在保證查詢表LUT連續(xù)裝填的情況下,能充分控制最終電路消耗的可配置邏輯單元CLB的數(shù)量,但卻忽略了對(duì)電路最終延遲性能的保障,使得最終加載到FPGA開(kāi)發(fā)板上的電路運(yùn)行時(shí)間過(guò)長(zhǎng)。
【發(fā)明內(nèi)容】
[0014]本發(fā)明的目的在于針對(duì)上述已有技術(shù)的不足,提出一種FPGA中進(jìn)行電子設(shè)計(jì)自動(dòng)化的邏輯單元裝箱方法,以綜合考慮電路的最終的時(shí)延性能以及消耗的可配置邏輯單元CLB的數(shù)量,使得最終設(shè)計(jì)出來(lái)的電路達(dá)到盡可能高的性能。
[0015]實(shí)現(xiàn)本發(fā)明目的的技術(shù)方案,包括如下步驟:
[0016]A.計(jì)算電路中每個(gè)查詢表LUT的關(guān)鍵度B:
[0017](Al)將經(jīng)過(guò)工藝映射,單元?jiǎng)澐痔幚砗蟮碾娐纷鳛橐粋€(gè)有向無(wú)環(huán)圖DAG,該有向無(wú)環(huán)圖中的節(jié)點(diǎn)表示具有存儲(chǔ)電路邏輯功能的查詢表LUT;有向無(wú)環(huán)圖中的邊表示查詢表LUT之間的線網(wǎng)連線,根據(jù)查詢表LUT之間的實(shí)際連接關(guān)系對(duì)有向無(wú)環(huán)圖中的每條邊賦上相應(yīng)的時(shí)延權(quán)重值;
[0018](A2)從電路的源端節(jié)點(diǎn)開(kāi)始,根據(jù)有向無(wú)環(huán)圖中邊所對(duì)應(yīng)的時(shí)延權(quán)重值,采用廣度優(yōu)先遍歷的方法計(jì)算出有向無(wú)環(huán)圖中節(jié)點(diǎn)i的最晚到達(dá)時(shí)間Ta(i),其中i表示有向無(wú)環(huán)圖中的第i個(gè)節(jié)點(diǎn)的標(biāo)號(hào),i的取值范圍為I?N,N表示電路中節(jié)點(diǎn)的總數(shù),節(jié)點(diǎn)i的輸入節(jié)點(diǎn)集合用In⑴表示,集合In⑴中的節(jié)點(diǎn)總數(shù)用el表示,節(jié)點(diǎn)i的輸出節(jié)點(diǎn)集合用On⑴表示,集合On⑴中的節(jié)點(diǎn)總數(shù)用e2表示;
[0019](A3)從電路的末端節(jié)點(diǎn)開(kāi)始,結(jié)合每條邊對(duì)應(yīng)的時(shí)延權(quán)重值,采用廣度優(yōu)先遍歷的方法計(jì)算出有向無(wú)環(huán)圖中節(jié)點(diǎn)i的最晚需要達(dá)到時(shí)間Tr(i);
[0020](A4)根據(jù)得到的有向無(wú)環(huán)圖中節(jié)點(diǎn)i的最晚到達(dá)時(shí)間Ta(i)和最晚需要達(dá)到時(shí)間Tr(i),得到第節(jié)點(diǎn)i對(duì)應(yīng)的松散度:s(i) =Tr⑴-Ta(i);
[0021](A5)根據(jù)松散度計(jì)算有向無(wú)環(huán)圖中節(jié)點(diǎn)i的時(shí)延度:C(i) = l_s(i)/Ms,其中Ms表示有向無(wú)環(huán)圖中所有節(jié)點(diǎn)松散度的最大值;
[0022](A6)計(jì)算有向無(wú)環(huán)圖中節(jié)點(diǎn)i對(duì)關(guān)鍵路徑的影響權(quán)值:
[0023]TA(i) = IA(i)+0A(i),
[0024]其中:IA(i)表示節(jié)點(diǎn)i所對(duì)應(yīng)的輸入節(jié)點(diǎn)在關(guān)鍵路徑上的節(jié)點(diǎn)總數(shù),OA⑴表示節(jié)點(diǎn)i所對(duì)應(yīng)的輸出節(jié)點(diǎn)在關(guān)鍵路徑上的節(jié)點(diǎn)總數(shù);
[0025](A7)根據(jù)節(jié)點(diǎn)i的時(shí)延度C(i)和該節(jié)點(diǎn)對(duì)有向無(wú)環(huán)圖中關(guān)鍵路徑的影響權(quán)值TA(i),計(jì)算節(jié)點(diǎn)i的關(guān)鍵度:= W)+ HW(Z)其中λ取0.01;[0026]B.選擇查詢表LUT裝填到新的可配置邏輯單元CLB:
[0027](BI)對(duì)于步驟(A7)中所得到的每個(gè)節(jié)點(diǎn)的關(guān)鍵度進(jìn)行排序,選出關(guān)鍵度最高的那個(gè)節(jié)點(diǎn)所對(duì)應(yīng)的查詢表LUT,填裝到一個(gè)新的可配置邏輯單元CLB中去;
[0028](B2)將裝填到可配置邏輯單元CLB中的查詢表LUT標(biāo)記為H,計(jì)算與H相連接的第j個(gè)查詢表LUT的線網(wǎng)關(guān)聯(lián)增益I (j),其中j表示與H相連接的第j個(gè)查詢表LUT,j的取值范圍為I?M,M表示與H相連接的查詢表LUT的總個(gè)數(shù);
[0029](B3)對(duì)計(jì)算得到的所有查詢表LUT的線網(wǎng)關(guān)聯(lián)增益值I (j)進(jìn)行排序,選擇線網(wǎng)關(guān)聯(lián)增益值最大的那個(gè)查詢表LUT將其填裝到上述新的可配置邏輯單元CLB中去;
[0030](B4)重復(fù)步驟(B2)和步驟(B3),直到上述新的可配置邏輯單元CLB被填裝滿為止;
[0031 ] C.更新電路時(shí)延信息,繼續(xù)對(duì)查詢表LUT進(jìn)行填裝:
[0032](Cl)對(duì)于一個(gè)已經(jīng)被填裝滿的可配置邏輯單元CLB,根據(jù)它和電路中其他查詢表LUT的連接方式,重新設(shè)置電路中邊的時(shí)延權(quán)重值,形成新的有向無(wú)環(huán)圖DAG’ ;
[0033](C2)利用新的有向無(wú)環(huán)圖DAG’,重復(fù)步驟(A2)和步驟(B4),直到電路中所有的查詢表LUT被裝填完成為止。
[0034]本發(fā)明與現(xiàn)有技術(shù)相比所具有如下優(yōu)點(diǎn):
[0035](I)本發(fā)明在選擇查詢表LUT裝填到新的可配置邏輯單元CLB時(shí),通過(guò)計(jì)算線網(wǎng)關(guān)聯(lián)增益的方法對(duì)查詢表LUT進(jìn)行選擇,使得可配置邏輯單元CLB中的空間可以充分的得到利用,減少了使用可配置邏輯單元CLB的數(shù)量;
[0036](2)本發(fā)明在裝箱過(guò)程中對(duì)電路的時(shí)延信息進(jìn)行全局的更新,當(dāng)有一個(gè)可配置邏輯單元CLB被填裝滿后,根據(jù)它和電路中其他查詢表LUT的連接方式,重新計(jì)算電路中邊的時(shí)延權(quán)重值,使得最終電路的延遲達(dá)到最優(yōu),降低了電路最終的運(yùn)行時(shí)間。
【專利附圖】
【附圖說(shuō)明】
[0037]圖1是現(xiàn)有在FPGA中進(jìn)行電子自動(dòng)化設(shè)計(jì)的流程圖;
[0038]圖2是本發(fā)明的整個(gè)裝箱實(shí)現(xiàn)總流程圖;
[0039]圖3是本發(fā)明中計(jì)算整個(gè)電路查詢表LUT的關(guān)鍵度子流程圖;
[0040]圖4是本發(fā)明中根據(jù)查詢表LUT的關(guān)鍵度進(jìn)行選擇填裝的子流程圖。
【具體實(shí)施方式】
[0041]參照?qǐng)D2,本發(fā)明的實(shí)現(xiàn)步驟如下:
[0042]步驟1,將經(jīng)過(guò)工藝映射,單元?jiǎng)澐痔幚砗蟮碾娐吩O(shè)置為有向無(wú)環(huán)圖DAG。
[0043]工藝映射是將電路轉(zhuǎn)化為查詢表LUT集成單元,如果該集成單元的規(guī)模大小超過(guò)了 FPGA的容量,則要通過(guò)單元?jiǎng)澐謱⒉樵儽鞮UT集成單元?jiǎng)澐殖啥鄠€(gè)能放進(jìn)到給定FPGA中的查詢表LUT單元組。由于該單元組是由多個(gè)查詢表LUT相互連接組成,因此可以把該電路看成一個(gè)有向無(wú)環(huán)圖DAG,即電路中將具有存儲(chǔ)電路邏輯功能的查詢表LUT看成是有向無(wú)環(huán)圖中的一個(gè)節(jié)點(diǎn),將查詢表LUT之間的線網(wǎng)連線看成是有向無(wú)環(huán)圖中的邊;
[0044]根據(jù)查詢表LUT之間的連接關(guān)系對(duì)有向無(wú)環(huán)圖中的每條邊賦上相應(yīng)的時(shí)延權(quán)重值,本實(shí)例將有向無(wú)環(huán)圖中所有邊的時(shí)延權(quán)重值設(shè)置為0.1。[0045]步驟2,計(jì)算電路中每個(gè)查詢表LUT的關(guān)鍵度,即有向無(wú)環(huán)圖中每個(gè)節(jié)點(diǎn)的關(guān)鍵度B:
[0046]參照?qǐng)D3,本步驟的實(shí)現(xiàn)如下:
[0047](2a)采用廣度優(yōu)先遍歷的方法計(jì)算有向無(wú)環(huán)圖中節(jié)點(diǎn)i的最晚到達(dá)時(shí)間Ta⑴和最晚需要達(dá)到時(shí)間Tr(i),其中i表示有向無(wú)環(huán)圖中的第i個(gè)節(jié)點(diǎn)的標(biāo)號(hào),i的取值范圍為I~N, N表示電路中節(jié)點(diǎn)的總數(shù):
[0048](2al)設(shè)節(jié)點(diǎn)i的輸入節(jié)點(diǎn)集合為In(i),集合In⑴中的節(jié)點(diǎn)總數(shù)用el表示,節(jié)點(diǎn)i的輸出節(jié)點(diǎn)集合為0n(i),集合On (i)中的節(jié)點(diǎn)總數(shù)用e2表示;
[0049](2a2)從電路的源端節(jié)點(diǎn)開(kāi)始,結(jié)合每條邊對(duì)應(yīng)的時(shí)延權(quán)重值計(jì)算有向無(wú)環(huán)圖中節(jié)點(diǎn)i的最晚到達(dá)時(shí)間:
[0050]Ta (i) = max {Ta (m) +t (m, i)},
[0051]其中m表示節(jié)點(diǎn)i的輸入節(jié)點(diǎn)集合In (i)中的第m個(gè)節(jié)點(diǎn),m的取值范圍為:1~el ;t(m, i)表示集合In(i)中的第m個(gè)節(jié)點(diǎn)與有向無(wú)環(huán)圖中節(jié)點(diǎn)i之間的時(shí)延權(quán)重值;
[0052](2a3)從電路的末端節(jié)點(diǎn)開(kāi)始,結(jié)合每條邊對(duì)應(yīng)的時(shí)延權(quán)重值計(jì)算有向無(wú)環(huán)圖中節(jié)點(diǎn)i的最晚需要達(dá)到時(shí)間:
[0053]Tr (i) = min {Tr (n) -t (i, η)},
[0054]其中η表示節(jié)點(diǎn)i的輸出節(jié)點(diǎn)集合On⑴中的第η個(gè)節(jié)點(diǎn),η的取值范圍為:1~e2;t(i,n)表示集合0n(i)中的第η個(gè)節(jié)點(diǎn)與有向無(wú)環(huán)圖中的節(jié)點(diǎn)i之間的時(shí)延權(quán)重值; [0055](2b)根據(jù)得到的有向無(wú)環(huán)圖中節(jié)點(diǎn)i的最晚到達(dá)時(shí)間Ta(i)和最晚需要達(dá)到時(shí)間Tr(i),得到節(jié)點(diǎn)i的松散度:s(i) = Tr⑴-Ta(i);
[0056](2c)根據(jù)松散度計(jì)算有向無(wú)環(huán)圖中節(jié)點(diǎn)i的時(shí)延度:
[0057]C (i) = 1-s (i) /Ms,
[0058]其中Ms表示有向無(wú)環(huán)圖中所有節(jié)點(diǎn)松散度的最大值;
[0059](2d)計(jì)算有向無(wú)環(huán)圖中節(jié)點(diǎn)i對(duì)關(guān)鍵路徑的影響權(quán)值:
[0060]TA(i) = IA (i) +OA (i),
[0061]其中:IA(i)表示節(jié)點(diǎn)i所對(duì)應(yīng)的輸入節(jié)點(diǎn)在關(guān)鍵路徑上的節(jié)點(diǎn)總數(shù),OA⑴表示節(jié)點(diǎn)i所對(duì)應(yīng)的輸出節(jié)點(diǎn)在關(guān)鍵路徑上的節(jié)點(diǎn)總數(shù);
[0062](2e)根據(jù)節(jié)點(diǎn)i的時(shí)延度C(i)和該節(jié)點(diǎn)對(duì)有向無(wú)環(huán)圖中關(guān)鍵路徑的影響權(quán)值TA(i),計(jì)算節(jié)點(diǎn)i的關(guān)鍵度』= +其中χ取值為0.01。
[0063]步驟3,選擇查詢表LUT,并將其裝填到新的可配置邏輯單元CLB。
[0064]參照?qǐng)D4,本步驟的實(shí)現(xiàn)如下:
[0065](3a)對(duì)步驟(2e)中所得到的每個(gè)節(jié)點(diǎn)的關(guān)鍵度進(jìn)行排序,選出關(guān)鍵度最高的那個(gè)節(jié)點(diǎn)所對(duì)應(yīng)的查詢表LUT,填裝到一個(gè)新的可配置邏輯單元CLB中去;
[0066](3b)將上述裝填的查詢表LUT標(biāo)記為H,繼續(xù)選擇其他的查詢表LUT填裝到上述的可配置邏輯單元CLB中:
[0067](3bI)計(jì)算與H相連接的第j個(gè)查詢表LUT的線網(wǎng)關(guān)聯(lián)增益I (j):
[0068](3b 11)計(jì)算第j個(gè)查詢表LUT的線網(wǎng)權(quán)值:
[0069]w (j) = 2.0/k,
[0070]其中k表示第j個(gè)查詢 表LUT的線網(wǎng)總數(shù);j表示與H相連接的第j個(gè)查詢表LUT的標(biāo)號(hào),j的取值范圍為I?M ;M表示與H相連接的查詢表LUT的總個(gè)數(shù);
[0071 ] (3bl2)根據(jù)得到的第j個(gè)查詢表LUT的線網(wǎng)權(quán)值w (j),計(jì)算第j個(gè)查詢表LUT的線網(wǎng)增益:
[0072]I (j) = μ *w (j) * (1+a),
[0073]其中,a表示第j個(gè)查詢表LUT和H所屬的可配置邏輯單元CLB所共用的線網(wǎng)個(gè)數(shù),H為裝填到可配置邏輯單元CLB中的查詢表LUT,μ表示線網(wǎng)增益系數(shù),當(dāng)?shù)趈個(gè)查詢表LUT的線網(wǎng)全部被包含在H所屬的可配置邏輯單元CLB中時(shí),μ的值為10.0,否則μ的值為1.0 ;
[0074](3b2)對(duì)得到的所有查詢表LUT的線網(wǎng)關(guān)聯(lián)增益值I (j)進(jìn)行排序,選擇線網(wǎng)關(guān)聯(lián)增益值最大的那個(gè)查詢表LUT,將其填裝到上述新的可配置邏輯單元CLB中去;
[0075](3c)重復(fù)步驟(3b),直到上述新的可配置邏輯單元CLB被填裝滿為止;
[0076](3d)更新電路時(shí)延信息,繼續(xù)對(duì)查詢表LUT進(jìn)行填裝:
[0077](3dl)對(duì)于一個(gè)已經(jīng)被填裝滿的可配置邏輯單元CLB,根據(jù)它和電路中其他查詢表LUT的連接方式,將該CLB內(nèi)查詢表LUT之間的線網(wǎng)連線的時(shí)延權(quán)重值重新設(shè)置為1.0,形成新的有向無(wú)環(huán)圖DAG’ ;
[0078](3d2)利用新的有向無(wú)環(huán)圖DAG’,重復(fù)步驟2和步驟3,直到電路中所有的查詢表LUT被裝填完成為止,整個(gè)裝箱過(guò)程結(jié)束。
[0079]整個(gè)裝箱過(guò)程結(jié)束后進(jìn)入FPGA電子設(shè)計(jì)自動(dòng)化設(shè)計(jì)布局階段,即將形成的可配置邏輯單元CLB單元映射到FPGA的各個(gè)邏輯位置,以減少可配置邏輯單元CLB之間連線的交錯(cuò)度,充分合理的利用FPGA開(kāi)發(fā)板上現(xiàn)有的資源。
[0080]本發(fā)明的效果可以通過(guò)以下的仿真實(shí)驗(yàn)進(jìn)一步的說(shuō)明
[0081]1.仿真條件
[0082]選用國(guó)際標(biāo)準(zhǔn)電路中經(jīng)過(guò)工藝映射和單元?jiǎng)澐止ぞ逜BC處理后的大規(guī)模電路
[0083]2.仿真內(nèi)容
[0084]將上述經(jīng)過(guò)工藝映射和單元?jiǎng)澐痔幚砗蟮拇竽R?guī)電路,分別采用本發(fā)明的裝箱方法和國(guó)際上常用的T-vpack裝箱方法進(jìn)行仿真實(shí)驗(yàn),對(duì)裝箱后的電路分別統(tǒng)計(jì)它們的時(shí)延和面積結(jié)果。其中時(shí)延表示最終電路關(guān)鍵路徑上的長(zhǎng)度,它決定了這個(gè)電路最終的運(yùn)行時(shí)間;面積表示最終電路所要用到的可配置邏輯單元CLB的個(gè)數(shù)。
[0085]每次仿真重復(fù)20次,對(duì)仿真實(shí)驗(yàn)結(jié)果求平均值,得到兩種方法仿真對(duì)比,如表I所示:
[0086]表I本發(fā)明的裝箱方法與現(xiàn)有T-vpack裝箱方法的結(jié)果對(duì)比
[0087]
【權(quán)利要求】
1.一種FPGA中進(jìn)行電子設(shè)計(jì)自動(dòng)化的邏輯單元裝箱方法,包括如下步驟: A.計(jì)算電路中每個(gè)查詢表LUT的關(guān)鍵度B: (Al)將經(jīng)過(guò)工藝映射,單元?jiǎng)澐痔幚砗蟮碾娐纷鳛橐粋€(gè)有向無(wú)環(huán)圖DAG,該有向無(wú)環(huán)圖中的節(jié)點(diǎn)表示具有存儲(chǔ)電路邏輯功能的查詢表LUT ;有向無(wú)環(huán)圖中的邊表示查詢表LUT之間的線網(wǎng)連線,根據(jù)查詢表LUT之間的實(shí)際連接關(guān)系對(duì)有向無(wú)環(huán)圖中的每條邊賦上相應(yīng)的時(shí)延權(quán)重值; (A2)從電路的源端節(jié)點(diǎn)開(kāi)始,根據(jù)有向無(wú)環(huán)圖中邊所對(duì)應(yīng)的時(shí)延權(quán)重值,采用廣度優(yōu)先遍歷的方法計(jì)算出有向無(wú)環(huán)圖中節(jié)點(diǎn)i的最晚到達(dá)時(shí)間Ta(i),其中i表示有向無(wú)環(huán)圖中的第i個(gè)節(jié)點(diǎn)的標(biāo)號(hào),i的取值范圍為I~N,N表示電路中節(jié)點(diǎn)的總數(shù),節(jié)點(diǎn)i的輸入節(jié)點(diǎn)集合用In⑴表示,集合In⑴中的節(jié)點(diǎn)總數(shù)用el表示,節(jié)點(diǎn)i的輸出節(jié)點(diǎn)集合用On⑴表示,集合0n(i)中的節(jié)點(diǎn)總數(shù)用e2表示; (A3)從電路的末端節(jié)點(diǎn)開(kāi)始,結(jié)合每條邊對(duì)應(yīng)的時(shí)延權(quán)重值,采用廣度優(yōu)先遍歷的方法計(jì)算出有向無(wú)環(huán)圖中節(jié)點(diǎn)i的最晚需要達(dá)到時(shí)間Tr(i); (A4)根據(jù)得到的有向無(wú)環(huán)圖中節(jié)點(diǎn)i的最晚到達(dá)時(shí)間Ta(i)和最晚需要達(dá)到時(shí)間Tr (i),得到第節(jié)點(diǎn)i對(duì)應(yīng)的松散度:s(i) = Tr⑴-Ta (i); (A5)根據(jù)松散度計(jì)算有向無(wú)環(huán)圖中節(jié)點(diǎn)i的時(shí)延度:C(i) = 1-s (i)/Ms,其中Ms表示有向無(wú)環(huán)圖中所有節(jié)點(diǎn)松散度的最大值; (A6)計(jì)算有向無(wú)環(huán)圖中節(jié) 點(diǎn)i對(duì)關(guān)鍵路徑的影響權(quán)值: TA(i) = IA ⑴+OA ⑴, 其中:IA(i)表示節(jié)點(diǎn)i所對(duì)應(yīng)的輸入節(jié)點(diǎn)在關(guān)鍵路徑上的節(jié)點(diǎn)總數(shù),0A(i)表示節(jié)點(diǎn)i所對(duì)應(yīng)的輸出節(jié)點(diǎn)在關(guān)鍵路徑上的節(jié)點(diǎn)總數(shù); (A7)根據(jù)節(jié)點(diǎn)i的時(shí)延度C(i)和該節(jié)點(diǎn)對(duì)有向無(wú)環(huán)圖中關(guān)鍵路徑的影響權(quán)值TA(i),計(jì)算節(jié)點(diǎn)i的關(guān)鍵度:B{i) = C{i) + X-TA{i)其中久取0.01; B.選擇查詢表LUT裝填到新的可配置邏輯單元CLB: (BI)對(duì)于步驟(A7)中所得到的每個(gè)節(jié)點(diǎn)的關(guān)鍵度進(jìn)行排序,選出關(guān)鍵度最高的那個(gè)節(jié)點(diǎn)所對(duì)應(yīng)的查詢表LUT,填裝到一個(gè)新的可配置邏輯單元CLB中去; (B2)將裝填到可配置邏輯單元CLB中的查詢表LUT標(biāo)記為H,計(jì)算與H相連接的第j個(gè)查詢表LUT的線網(wǎng)關(guān)聯(lián)增益I (j),其中j表示與H相連接的第j個(gè)查詢表LUT,j的取值范圍為I~M,M表示與H相連接的查詢表LUT的總個(gè)數(shù); (B3)對(duì)計(jì)算得到的所有查詢表LUT的線網(wǎng)關(guān)聯(lián)增益值I (j)進(jìn)行排序,選擇線網(wǎng)關(guān)聯(lián)增益值最大的那個(gè)查詢表LUT將其填裝到上述新的可配置邏輯單元CLB中去; (B4)重復(fù)步驟(B2)和步驟(B3),直到上述新的可配置邏輯單元CLB被填裝滿為止; C.更新電路時(shí)延信息,繼續(xù)對(duì)查詢表LUT進(jìn)行填裝: (Cl)對(duì)于一個(gè)已經(jīng)被填裝滿的可配置邏輯單元CLB,根據(jù)它和電路中其他查詢表LUT的連接方式,重新設(shè)置電路中邊的時(shí)延權(quán)重值,形成新的有向無(wú)環(huán)圖DAG’ ; (C2 )利用新的有向無(wú)環(huán)圖DAG’,重復(fù)步驟(A2 )和步驟(B4 ),直到電路中所有的查詢表LUT被裝填完成為止。
2.根據(jù)權(quán)利要求1所述的裝箱方法,其中所述(A2)中采用廣度優(yōu)先遍歷的方法計(jì)算電路中節(jié)點(diǎn)i的最晚到達(dá)時(shí)間Ta(i),通過(guò)如下公式計(jì)算:
Ta (i) = max {Ta (m) +t (m, i)}, 其中m表示節(jié)點(diǎn)i的輸入節(jié)點(diǎn)集合In(i)中的第m個(gè)節(jié)點(diǎn),m的取值范圍為:1~el ;t(m, i)表示集合In⑴中的第m個(gè)節(jié)點(diǎn)與有向無(wú)環(huán)圖中節(jié)點(diǎn)i之間的時(shí)延權(quán)重值。
3.根據(jù)權(quán)利要求1所述的裝箱方法,其中所述(A3)中采用廣度優(yōu)先遍歷的方法計(jì)算出有向無(wú)環(huán)圖中的節(jié)點(diǎn)i的最晚需要達(dá)到時(shí)間Tr (i),通過(guò)如下公式計(jì)算:
Tr (i) = min {Tr (n) -t (i, η)}, 其中η表示節(jié)點(diǎn)i的輸出節(jié)點(diǎn)集合中On (i)中的第η個(gè)節(jié)點(diǎn),η的取值范圍為:1~e2 ;t(i, η)表示集合0n(i)中的第η個(gè)節(jié)點(diǎn)與有向無(wú)環(huán)圖中節(jié)點(diǎn)i之間的時(shí)延權(quán)重值。
4.根據(jù)權(quán)利要求1所述的裝箱方法,其中所述(B2)中計(jì)算與查詢表LUTH相連接的第j個(gè)查詢表LUT的線網(wǎng)關(guān)聯(lián)增益I (j),按如下步驟進(jìn)行: (B21)計(jì)算第j個(gè)查詢表LUT的線網(wǎng)權(quán)值:
w(j) = 2.0/k, 其中k表示第j個(gè)查詢表LUT的線網(wǎng)總數(shù); (B22)根據(jù)得到的第j個(gè)查詢表LUT的線網(wǎng)權(quán)值,計(jì)算第j個(gè)查詢表LUT的線網(wǎng)增益:
I (j) = μ *w(j)*(l+a), 其中,a表示第j個(gè)查詢表LUT和H所屬的可配置邏輯單元CLB所共用的線網(wǎng)個(gè)數(shù),H為裝填到可配置邏輯單元CLB中的查詢表LUT,u表示線網(wǎng)增益系數(shù),當(dāng)?shù)趈個(gè)查詢表LUT的線網(wǎng)全部被包含在H所屬的可配置邏輯單元CLB中時(shí),u的值為10.0,否則u的值為1.0。
5.根據(jù)權(quán)利要求1所述的裝箱方法,其中所述(Cl)中重新設(shè)置電路中邊的時(shí)延權(quán)重值:對(duì)于一個(gè)已經(jīng)被填裝滿的可配置邏輯單元CLB,根據(jù)它和電路中其他查詢表LUT的連接方式,將該CLB內(nèi)查詢表LUT之間的線網(wǎng)連線的時(shí)延權(quán)重值重新設(shè)置為1.0,形成新的有向無(wú)環(huán)圖DAG’。
【文檔編號(hào)】G06F17/50GK103745057SQ201410008483
【公開(kāi)日】2014年4月23日 申請(qǐng)日期:2014年1月8日 優(yōu)先權(quán)日:2014年1月8日
【發(fā)明者】段振華, 李虎, 黃伯虎 申請(qǐng)人:西安電子科技大學(xué)