一種fpga的資源布局方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明設(shè)及現(xiàn)場(chǎng)可編程口陣列(FPGA)技術(shù)領(lǐng)域,尤其設(shè)及一種FPGA的資源布局方 法及裝置。
【背景技術(shù)】
[0002] 在現(xiàn)代數(shù)字電路設(shè)計(jì)中,電路設(shè)計(jì)過(guò)程越來(lái)越復(fù)雜。由于FPGA忍片具有可編程的 功能,簡(jiǎn)化了數(shù)字電路設(shè)計(jì)的過(guò)程。但隨著數(shù)字電路的設(shè)計(jì)規(guī)模越來(lái)越大,各種資源也越來(lái) 越多,對(duì)FPGA軟件布局的性能要求也越來(lái)越高。
[0003] FPGA資源一般分為S種:可配置邏輯單元塊(CLB)、輸入/輸出單元(IO)和可編程 布線資源。其中,CLB根據(jù)功能又可W分為多個(gè)不同單元,如LUT(查找表)、FF(觸發(fā)器)、RAM (隨機(jī)存取存儲(chǔ)器)、DSP(數(shù)字信號(hào)處理模塊,如乘法器單元)、化L(鎖相回路或鎖相環(huán))、化L (延遲鎖相環(huán))、PWU(上電模塊)等等。通常情況下,根據(jù)FPGA忍片不同資源需求,上述資源并 非均勻分部在FPGA忍片上。如果布局算法設(shè)計(jì)不合理,就會(huì)導(dǎo)致本來(lái)應(yīng)該放置在一起的資 源,卻被放置的很遠(yuǎn)。從而使得布線難度增加,時(shí)序延時(shí)過(guò)長(zhǎng),滿足不了用戶設(shè)計(jì)需求。當(dāng) 前,布局算法主要面臨著兩大問(wèn)題:大規(guī)模的設(shè)計(jì)尺寸(上百萬(wàn)單元)和復(fù)雜的設(shè)計(jì)約束(布 局后實(shí)際的面積、時(shí)延、功耗、擁塞度等等)。
[0004] 現(xiàn)今,F(xiàn)PGA實(shí)現(xiàn)電路功能是需要對(duì)成千上萬(wàn)甚至更多可編程開(kāi)關(guān)進(jìn)行編程,即確 定其狀態(tài)為導(dǎo)通還是斷開(kāi),顯然一一確定每個(gè)開(kāi)關(guān)的狀態(tài)是不現(xiàn)實(shí)的。實(shí)際設(shè)計(jì)中用戶通 常使用硬件描述語(yǔ)言如Verilog、VHDL,或者原理圖作為輸入,該過(guò)程是FPGA設(shè)計(jì)的第一步: 設(shè)計(jì)輸入;第二步,功能仿真,檢查電路是否符合原始設(shè)計(jì)功能和時(shí)序;第=步,邏輯綜合與 優(yōu)化,將電路功能完全用基本邏輯口實(shí)現(xiàn),該過(guò)程包含邏輯優(yōu)化過(guò)程;第四步,工藝映射與 裝箱,把生成的基本口電路映射到FPGA上,即使用FPGA上的基本單元化B和IO實(shí)現(xiàn)基本口電 路功能,具體的,目前的技術(shù)方案是,將基本口電路(類似于本發(fā)明中的工藝算子Tech Operator)進(jìn)行一定的處理后直接映射到FPGA基本單元(類似于本發(fā)明中的格點(diǎn)電路單元 Grid Device)上,即將所有的TOP合理地放置在Grid Device上;第五步,布局布線,布局確 定化B和IO的位置,布線過(guò)程是使用合適的布線資源將化B和IO連接起來(lái);第六步,時(shí)序仿 真,用于檢驗(yàn)時(shí)序是否滿足設(shè)定的時(shí)序約束條件或器件固有的時(shí)序規(guī)則,如建立時(shí)間、保持 時(shí)間,進(jìn)行時(shí)序仿真對(duì)于分析時(shí)序關(guān)系,估計(jì)系統(tǒng)性能,W及檢查和消除競(jìng)爭(zhēng)是非常必要 的;第屯步,生成位流文件下載到FPGA中去。
[0005] 目前的FPGA設(shè)計(jì)流程布局會(huì)存在W下缺陷:可布局資源不能充分利用,布局的靈 活性不強(qiáng)。
【發(fā)明內(nèi)容】
[0006] 本發(fā)明提供一種FPGA的資源布局方法及裝置,解決現(xiàn)有FPGA的資源布局方案不夠 完善的問(wèn)題。
[0007] 為解決上述技術(shù)問(wèn)題,本發(fā)明采用W下技術(shù)方案:
[000引一種FPGA的資源布局方法,包括:
[0009] 將FPGA中的一個(gè)或多個(gè)工藝算子映射到口級(jí)算子,所述工藝算子包括一個(gè)或多個(gè) 基本口電路;
[0010] 將一個(gè)或多個(gè)n級(jí)算子定義為n級(jí)算子組;
[ocm]將各個(gè)n級(jí)算子組映射到格點(diǎn)電路單元。
[0012] 在一些實(shí)施例中,將FPGA中的一個(gè)或多個(gè)工藝算子映射到口級(jí)算子包括:將FPGA 中的一個(gè)或多個(gè)工藝算子的參數(shù)和端口映射到口級(jí)算子。
[0013] 在一些實(shí)施例中,將一個(gè)或多個(gè)口級(jí)算子定義為口級(jí)算子組包括:將滿足預(yù)設(shè)條 件的多個(gè)相同的口級(jí)算子定義為口級(jí)算子組;或者將滿足預(yù)設(shè)條件的多個(gè)不同的口級(jí)算子 定義為口級(jí)算子組且所述口級(jí)算子組為一個(gè)新的口級(jí)算子。
[0014] 在一些實(shí)施例中,將各個(gè)口級(jí)算子組映射到格點(diǎn)電路單元包括:
[0015] 從格點(diǎn)電路單元中提取至少一個(gè)口級(jí)電路單元,所述口級(jí)電路單元包括一個(gè)或多 個(gè)電路模塊;
[0016] 將各個(gè)口級(jí)算子組映射到一個(gè)或多個(gè)口級(jí)電路單元。
[0017] -種FPGA的資源布局裝置,包括:
[0018] 第一映射模塊,用于將FPGA中的一個(gè)或多個(gè)工藝算子映射到口級(jí)算子,所述工藝 算子包括一個(gè)或多個(gè)基本口電路;
[0019] 定義模塊,用于將一個(gè)或多個(gè)口級(jí)算子定義為口級(jí)算子組;
[0020] 第二映射模塊,用于將各個(gè)口級(jí)算子組映射到格點(diǎn)電路單元。
[0021] 在一些實(shí)施例中,第一映射模塊具體用于將FPGA中的一個(gè)或多個(gè)工藝算子的參數(shù) 和端口映射到口級(jí)算子。
[0022] 在一些實(shí)施例中,定義模塊具體用于將滿足預(yù)設(shè)條件的多個(gè)相同的口級(jí)算子定義 為口級(jí)算子組;或者將滿足預(yù)設(shè)條件的多個(gè)不同的口級(jí)算子定義為口級(jí)算子組且所述口級(jí) 算子組為一個(gè)新的口級(jí)算子。
[0023] 在一些實(shí)施例中,第二映射模塊包括:
[0024] 提取子模塊,用于從格點(diǎn)電路單元中提取至少一個(gè)口級(jí)電路單元,所述口級(jí)電路 單元包括一個(gè)或多個(gè)電路模塊;
[0025] 映射子模塊,用于將各個(gè)口級(jí)算子組映射到一個(gè)或多個(gè)口級(jí)電路單元。
[0026] 在一些實(shí)施例中,所述格點(diǎn)電路單元包括:可配置邏輯模塊CLM。
[0027] 本發(fā)明針對(duì)現(xiàn)有技術(shù)的不足,在工藝映射與裝箱過(guò)程中增加一個(gè)映射建模的過(guò) 程,將工藝算子(Tech Operator,簡(jiǎn)稱TOP),即綜合后的庫(kù)單元,一個(gè)或多個(gè)基本口電路,抽 象映射到具體的可編程邏輯模塊中去。具體的,將TOP映射到口級(jí)算子(Gate Operator,簡(jiǎn) 稱GOP),有時(shí)候,多個(gè)TOP能映射同一個(gè)G0P,需要設(shè)定各種打包組合(packing)規(guī)則,運(yùn)些規(guī) 則模型可W通過(guò)一種自定義的編程語(yǔ)言進(jìn)行描述,將滿足一定連接關(guān)系的相同或不同的 GOP打包一起,組成一個(gè)Group,接下來(lái),將GOP組作為基本的單元進(jìn)行布局處理,即將所有的 GOP組合理地放置在格點(diǎn)電路單元(Grid Device)上,相比現(xiàn)有技術(shù)方案中直接將TOP合理 地放置在格點(diǎn)電路單元上而言,本發(fā)明至少具有W下的有益效果:1、增加布局的靈活性,例 如,某個(gè)基本口電路在FPGA基本單元可W有多個(gè)位置可W放置,在映射建模過(guò)程中存在多 種的對(duì)應(yīng)關(guān)系。2、盡可能有效地利用可布局的資源,例如,某幾個(gè)基本口電路相互連接并且 映射到相同的基本單元,可W將TOP映射到某個(gè)GOP,通過(guò)打包后將多個(gè)GOP映射到相同的 Gate Device,布局時(shí)放置在相同的Grid Device中。
[002引進(jìn)一步地,將所有的GOP組合理地放置在格點(diǎn)電路單元(Grid Device)上的方式具 體可W是,從格點(diǎn)電路單元中根據(jù)實(shí)際各個(gè)電路模塊所實(shí)現(xiàn)的功能提取至少一個(gè)口級(jí)電路 單元(Gate Device),將各個(gè)GOP組映射到一個(gè)或多個(gè)Gate Device。運(yùn)樣便通過(guò)增加兩個(gè)模 型GOP和Gate DeviceW及對(duì)應(yīng)的映射流程,實(shí)現(xiàn)了布局的靈活性和盡可能有效地利用可布 局的資源。
【附圖說(shuō)明】
[0029] 圖1為本發(fā)明一實(shí)施例提供的FPGA的資源布局方法的流程圖;
[0030] 圖2為本發(fā)明一實(shí)施例提供的多個(gè)相同GOP的連接示意圖;
[0031 ]圖3為本發(fā)明一實(shí)施例提供的多個(gè)不同GOP的連接示意圖;
[0032] 圖4為本發(fā)明一實(shí)施例提供的CLM電路結(jié)構(gòu)示意圖;
[0033] 圖5為圖4所示CLM電路結(jié)構(gòu)的簡(jiǎn)化示意圖;
[0034] 圖6為本發(fā)明一實(shí)施例提供的FPGA的資源布局裝置的示意圖。
【具體實(shí)施方式】
[0035] 下面通過(guò)具體實(shí)施例對(duì)本發(fā)明的構(gòu)思進(jìn)一步詳細(xì)說(shuō)明。
[0036] 如圖1所示,為本發(fā)明一實(shí)施例提供的FPGA的資源布局方法的流程圖,主要包括W 下步驟:
[0037] S101、將FPGA中的一個(gè)或多個(gè)TOP映射到GOP ,TOP包括一個(gè)或多個(gè)基本口電路。
[0038] 具體的,將FPGA中的一個(gè)或多個(gè)TOP的參數(shù)和端口映射到G0P。也就是分成兩個(gè)部 分來(lái)映射,分別為參數(shù)映射和端口映射,分別將一個(gè)或多個(gè)TOP上的參數(shù)和端口映射到GOP 上。
[0039] 下面W通過(guò)代碼來(lái)實(shí)現(xiàn)TOP topLUT4到GOP gopLUT4的映射為例,其中parameter map表示參數(shù)映射,IN口為GOP gopLUT4的參數(shù),1化1'_8為1'0?1〇9〇714的參數(shù);port map表示 端口映射,L0,Ll,L2,L3,Z為G0PgopLUT4的端口,I0,Il,I2,I3,0為T0PtopLUT4的端口,代 碼實(shí)現(xiàn)過(guò)程:
[0040]
[0041]
[0042] 本步驟可W將一個(gè)或多個(gè)TOP通過(guò)一次映射到GOP。
[0043] S102、將一個(gè)或多個(gè)GOP定義為GOP組;
[0044] TOP映射到GOP后,根據(jù)我們的打包規(guī)則,可W將滿足預(yù)設(shè)條件的多個(gè)不同的或相 同的GOP打包在一起,組成一個(gè)Group,即GOP組。其中預(yù)設(shè)條件可W根據(jù)實(shí)際的電路連接關(guān) 系制定的,將滿足一定連接關(guān)系的多個(gè)相同的GOP定義為一個(gè)GOP組,或者將滿足一定連接 關(guān)系的多個(gè)不同的GOP定義為一個(gè)GOP組。
[0045] 多個(gè)相同的GOP打包在一起,打包后布局時(shí)還是考慮原來(lái)的GOP,只是將打包在一 起的GOP的連接關(guān)系綁定在一起。多個(gè)不同的GOP打包在一起生成一個(gè)新的G0P,布局時(shí)只用 放置打包后的運(yùn)個(gè)新的G0P。
[0046] W4個(gè)相同的GOP打包在一起為例,如圖2所示,假設(shè)有4個(gè)GOP gopA的CIN和COUT首 尾相互連接(其中CIN和COUT為GOP gopA的端口),則認(rèn)為滿足預(yù)設(shè)條件,則可W將運(yùn)4個(gè)GOP gopA打包在一起作為一個(gè)Group,固定之間的相對(duì)位置,布局時(shí)作為一個(gè)整體進(jìn)行布局,運(yùn) 樣可W減少布局時(shí)間和時(shí)序,充分利用布局資源。
[0047] W4個(gè)不同的GOP打包在一起為例,如圖3所示,假設(shè)3和GOP gopQ和1個(gè)GOP gopIO腳FI化有如圖3所示的連接關(guān)系,則認(rèn)為滿足預(yù)設(shè)條件,則可W將運(yùn)3個(gè)GOP gopQ和1 個(gè)GOP gopIOBUFIOL打包一起作為一個(gè)Gro叩,運(yùn)個(gè)GOP組用一個(gè)新的GOP表示,即GOP gopIOBUFIOLQ,布局時(shí)只用放置一個(gè)GOP gopIOBUFIOLQ即可,而不用分別放置3個(gè)GOP gopQ 和1個(gè)GOP gopIOBUFIOL,從而減少布局時(shí)間和時(shí)序。其中D,Q分別為GOP gopQ的輸入和輸出 端口,I,IN,TS和OUT,0,T分別為GOP gopI0BUFI0L的輸入和輸出端口。
[004引 S103、將各個(gè)GOP組映射到Grid Device。
[0049] 該步驟可W直接將各個(gè)GOP組映射到Grid Device。也可W采用下列方式:
[00加]從Grid Device中提取至少一個(gè)Gate Device ,Gate Device包括一個(gè)或多個(gè)電路 模塊;將各個(gè)GOP組映射到一個(gè)或多個(gè)Gate Device,也是將GOP上的參數(shù)和端口映射到Gate Device 上。
[0051] WGOP組中只有一個(gè)GOP gopLUT4為例,根據(jù)用戶配置,可W將該GOP gopLUT4映射 到Gate Device devAL、Gate Device devBL、Gate Device devCL或Gate Device devDL,具 體的,
[0052] parameter map表示參數(shù)映射,port map表示端口映射。INIT和MODE為GOP gopLUT4的參數(shù),LO,LI,L2,L3,Z為GOP gopLUT4的端口; INITA和FGA_M0DE為devAL的參數(shù), 八0,41,42,43,¥0為(16¥41^的端口;1^18和。68_]\1006為(16¥化的參數(shù),80,81,82,83,¥1為 dev化的端口; INITC和FGC_MODE為dev化的參數(shù),〇),(:1,〔2,〔3,¥2為(16¥化的端口;抑口0和 FGD_MODE為devDL的參數(shù),DO,D1,D2,D3,Y3為devDL的端口,代碼實(shí)現(xiàn)過(guò)程如下:
[0化3]
[0化4
[005
Y:3 二> 文
[0化6] ):
[0化7] 假如5102中是將11個(gè)相同的60?邑〇口4進(jìn)行打包成一個(gè)6'〇啡,60?邑〇口4的編號(hào)從0 ~(n-1)