本發(fā)明涉及電子技術(shù)領(lǐng)域,尤其涉及可編程邏輯器件布局方法及裝置。
背景技術(shù):
隨著電子技術(shù)的飛速發(fā)展,數(shù)字電路的設(shè)計(jì)腳步也逐漸加快。可編程邏輯器件(Programmable Logic Device,PLD)因其具有可編程特性,有效降低了電路設(shè)計(jì)成本,縮短了系統(tǒng)設(shè)計(jì)的周期,提高了設(shè)計(jì)開發(fā)的靈活性。在對可編程邏輯器件進(jìn)行設(shè)計(jì)時(shí),通常是由設(shè)計(jì)人員在EDA終端(例如運(yùn)行有EDA程序的計(jì)算機(jī))上使用硬件描述語言對應(yīng)用設(shè)計(jì)進(jìn)行邏輯描述與邏輯綜合,然后進(jìn)行布局布線,最后成功生成位流下載到芯片上。
布局布線是可編程邏輯器件中舉足輕重的過程,因?yàn)椴季植季€的處理效果可能直接影響到可編程邏輯器件的性能:例如,在可編程邏輯器件中,有些特殊的邏輯單元,如APM(乘法單元)或DRM(存儲單元),只能被部署在預(yù)先被規(guī)劃出的、面積較小的合理部署區(qū)域中。一旦預(yù)先規(guī)劃出的合理部署區(qū)域被占用,或者是因?yàn)槠渌蚴沟眠@些邏輯單元被部署到了合理部署區(qū)域以外的地方,則可能會導(dǎo)致可編程邏輯器件布局不合理,需要大肆調(diào)整的問題。
目前,現(xiàn)有技術(shù)中通?;谌置芏饶P蛯π枰渴鸬娇删幊踢壿嬈骷系乃羞壿媶卧M(jìn)行部署。全局密度模型是根據(jù)可編程邏輯器件上實(shí)際部署完成的各邏輯單元以及各邏輯單元設(shè)置位置而抽象建立的一種軟件模型,其能夠體現(xiàn)可編程邏輯器件上各個(gè)區(qū)域當(dāng)前邏輯單元部署的密集程度。現(xiàn)有技術(shù)中在需要部署一個(gè)邏輯單元時(shí),會直接根據(jù)全局密度模型,并基于密度最小原則選擇可編程邏輯器件上當(dāng)前密度最小的區(qū)域作為當(dāng)前待部署邏輯單元的設(shè)置位置,以滿足可編程邏輯器件擁塞度小的要求。在這種情況下,APM與DRM的合理部署區(qū)域很有可能被其他邏輯單元占用從而導(dǎo)致APM或DRM只能設(shè)置到其他區(qū)域中;或者也有可能存在這種情況:在部署APM或DRM時(shí),雖然APM或DRM的合理部署區(qū)域上還有足夠的空間,但是根據(jù)全局密度模型的指示,其他區(qū)域的密度更低,更適合設(shè)置APM或DRM,從而使得APM或DRM被設(shè)置到合理部署區(qū)域以外。也就是說,全局密度模型給出了錯(cuò)誤的指示,從而導(dǎo)致可編程邏輯器件的布局不合理。
綜上,現(xiàn)在亟需提出一種新的可編程邏輯器件布局方案,用以解決現(xiàn)有技術(shù)中單純基于全局密度模型對可編程邏輯器件進(jìn)行布局而導(dǎo)致合理部署區(qū)域較小的邏輯單元無法被合理部署的問題。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明提供的可編程邏輯器件布局方法及裝置,主要解決的技術(shù)問題是:解決現(xiàn)有技術(shù)中基于全局密度模型對可編程邏輯器件進(jìn)行布局,導(dǎo)致合理部署區(qū)域小的邏輯單元無法被合理部署的問題。
為解決上述技術(shù)問題,本發(fā)明實(shí)施例提供一種可編程邏輯器件布局方法,包括:
從需要部署到可編程邏輯器件上的各邏輯單元中篩選出滿足預(yù)設(shè)條件的第一邏輯單元,所述預(yù)設(shè)條件包括自身合理部署區(qū)域小于預(yù)設(shè)面積閾值;
根據(jù)預(yù)先創(chuàng)建的部署指示對所述第一邏輯單元進(jìn)行部署設(shè)置,所述部署指示基于所述第一邏輯單元的合理部署區(qū)域創(chuàng)建,用于指示將所述第一邏輯單元部署到其合理部署區(qū)域;
對除第一邏輯單元以外的需要部署到可編程邏輯器件上的其他邏輯單元進(jìn)行部署。
進(jìn)一步地,所述預(yù)設(shè)條件還包括:要求與自身相連的第二邏輯單元的時(shí)延小于預(yù)設(shè)時(shí)延閾值。
進(jìn)一步地,對除第一邏輯單元以外的需要部署到可編程邏輯器件上的其他邏輯單元進(jìn)行部署包括:
對第二邏輯單元進(jìn)行部署,所述第二邏輯單元為與所述第一邏輯單元相連的邏輯單元;
在所述第二邏輯單元部署完成后部署第三邏輯單元,所述第三邏輯單元為除第一邏輯單元與第二邏輯單元以外需要部署到所述可編程邏輯器件上的邏輯單元。
進(jìn)一步地,對第二邏輯單元進(jìn)行部署包括:
以所述第一邏輯單元的第一部署位置為中心,根據(jù)各所述第二邏輯單元與所述第一邏輯單元之間的距離要求確定所述第二邏輯單元的第二部署位置;
根據(jù)確定出的所述第二部署位置設(shè)置所述第二邏輯單元。
進(jìn)一步地,在所述第二邏輯單元部署完成后部署第三邏輯單元包括:
建立所述可編程邏輯器件上已部署邏輯單元的全局密度模型;
根據(jù)所述全局密度模型選擇密度小于預(yù)設(shè)密度閾值的區(qū)域設(shè)置所述第三邏輯單元。
進(jìn)一步地,所述可編程邏輯器件包括現(xiàn)場可編程門陣列。
進(jìn)一步地,所述第一邏輯單元包括乘法單元和/或存儲單元。
進(jìn)一步地,根據(jù)預(yù)先創(chuàng)建的部署指示對所述第一邏輯單元進(jìn)行部署設(shè)置之前還包括:
確定所述第一邏輯單元的合理部署區(qū)域;
為所述可編程邏輯器件上的各區(qū)域設(shè)置合理梯度,所述合理梯度用于表征對應(yīng)區(qū)域部署所述第一邏輯單元合理性的高低,所述合理梯度值越小則表征越適合部署所述第一邏輯單元,距離所述合理部署區(qū)域越近,則合理梯度值越??;
將所述合理梯度作為所述部署指示;
根據(jù)預(yù)先創(chuàng)建的部署指示對所述第一邏輯單元進(jìn)行部署設(shè)置包括:
根據(jù)所述可編程邏輯器件上的各區(qū)域的合理梯度,選擇合理梯度值變化最大的區(qū)域設(shè)置所述第一邏輯單元。
進(jìn)一步地,根據(jù)預(yù)先創(chuàng)建的部署指示對所述第一邏輯單元進(jìn)行部署設(shè)置之前還包括:
確定所述第一邏輯單元的合理部署區(qū)域,為所述合理部署區(qū)域設(shè)置合理標(biāo)識,并將所述部署合理梯度作為所述部署指示;
根據(jù)預(yù)先創(chuàng)建的部署指示對所述第一邏輯單元進(jìn)行部署設(shè)置包括:
選擇所述可編程邏輯器件上具有合理標(biāo)識的區(qū)域部署所述第一邏輯單元。
本發(fā)明實(shí)施例還提供一種可編程邏輯器件布局裝置,包括:
篩選模塊,用于從需要部署到可編程邏輯器件上的各邏輯單元中篩選出第一邏輯單元,所述第一邏輯單元為合理部署區(qū)域小于預(yù)設(shè)面積閾值且對要求之相連的第二邏輯單元的時(shí)延小于預(yù)設(shè)時(shí)延閾值的邏輯單元;
第一部署模塊,用于根據(jù)預(yù)先創(chuàng)建的部署指示對所述第一邏輯單元進(jìn)行部署設(shè)置,所述部署指示基于所述第一邏輯單元的合理部署區(qū)域創(chuàng)建,用于指示將所述第一邏輯單元部署到其合理部署區(qū)域;
其他部署模塊,用于對除第一邏輯單元以外的需要部署到可編程邏輯器件上的其他邏輯單元進(jìn)行部署。
本發(fā)明的有益效果是:
本發(fā)明提供的可編程邏輯器件布局方法及裝置,通過從需要部署到可編程邏輯器件上的各邏輯單元中篩選出合理部署區(qū)域小于預(yù)設(shè)面積閾值的第一邏輯單元,并在對其他邏輯單元進(jìn)行部署以前,先根據(jù)預(yù)先創(chuàng)建的部署指示對第一邏輯單元進(jìn)行部署設(shè)置?;诓渴鹬甘镜闹甘咀饔?,保證盡量將第一邏輯單元設(shè)置到其自身的合理部署區(qū)域內(nèi)。然后才對除第一邏輯單元以外的其他邏輯單元進(jìn)行部署。在確保第一邏輯相對其他邏輯單元的有限合理部署區(qū)域不被其他邏輯單元占用的基礎(chǔ)上,保障第一邏輯單元被設(shè)置到自身的合理部署區(qū)域,提升對第一邏輯單元布局的合理性,進(jìn)而提升可編程邏輯器件整體布局的正確性。降低了在布局完成后再對可編程邏輯器件上邏輯單元進(jìn)行大范圍挪動修改的風(fēng)險(xiǎn),提升了可編程邏輯器件布局的效率和性能。
附圖說明
圖1為本發(fā)明實(shí)施例一提供的可編程邏輯器件布局方法的一種流程圖;
圖2為本發(fā)明實(shí)施例一中創(chuàng)建基于合理梯度的部署指示的一種流程圖;
圖3為本發(fā)明各實(shí)施例中為可編程邏輯器件上各區(qū)域設(shè)置合理梯度值的一種示意圖;
圖4為本發(fā)明各實(shí)施例中為可編程邏輯器件上各區(qū)域設(shè)置合理梯度值的另一種示意圖;
圖5為本發(fā)明各實(shí)施例中為可編程邏輯器件上各區(qū)域設(shè)置合理梯度值的又一種示意圖;
圖6為本發(fā)明實(shí)施例二提供的可編程邏輯器件布局裝置的一種結(jié)構(gòu)示意圖;
圖7為本發(fā)明實(shí)施例二提供的可編程邏輯器件布局裝置的另一種結(jié)構(gòu)示意圖;
圖8為本發(fā)明實(shí)施例二提供的用于部署可編程邏輯器件布局裝置的一種終端的硬件結(jié)構(gòu)示意圖。
具體實(shí)施方式
下面通過具體實(shí)施方式結(jié)合附圖對本發(fā)明實(shí)施例作進(jìn)一步詳細(xì)說明。
實(shí)施例一:
為了提升可編程邏輯器件布局的合理性,保障那些在可編程邏輯器件上并不是全局都可部署的邏輯單元,即那些自身合理部署區(qū)域較小的邏輯單元能夠被合理部署,本實(shí)施例提供一種可編程邏輯器件布局方法,請參見圖1:
S102、可編程邏輯器件布局裝置從需要部署到可編程邏輯器件上的各邏輯單元中篩選出滿足預(yù)設(shè)條件的第一邏輯單元。
在本實(shí)施例中,第一邏輯單元是需要部署到可編程邏輯器件上的邏輯單元中滿足預(yù)設(shè)條件的邏輯單元,預(yù)設(shè)條件中包括自身的合理部署區(qū)域小于預(yù)設(shè)面積閾值。也就是說,作為第一邏輯單元的必要條件是一個(gè)邏輯單元自身的合理部署區(qū)域小于預(yù)設(shè)面積閾值。
可編程邏輯器件布局裝置根據(jù)預(yù)設(shè)面積閾值篩選出合理部署區(qū)域較小的邏輯單元作為第一邏輯單元,便于后續(xù)部署過程能夠根據(jù)各邏輯單元合理部署區(qū)域的大小來分時(shí)序部署。預(yù)設(shè)面積閾值可以由布局設(shè)計(jì)人員根據(jù)當(dāng)前布局的需要自定義設(shè)置。當(dāng)然可以理解的是,在對一個(gè)可編程邏輯器件進(jìn)行布局規(guī)劃的時(shí)候,可能會給不同的邏輯單元規(guī)劃出大小不同的合理部署區(qū)域。針對不同的邏輯單元,應(yīng)當(dāng)要設(shè)置不同的預(yù)設(shè)面積閾值。因此,布局設(shè)計(jì)人員在自定義設(shè)置預(yù)設(shè)面積閾值時(shí),應(yīng)當(dāng)考慮當(dāng)前待部署邏輯單元本身的合理部署區(qū)域。
另外,在本實(shí)施例的一個(gè)示例當(dāng)中,滿足作為第一邏輯單元的預(yù)設(shè)條件還可以包括要求與自身相連的第二邏輯單元的時(shí)延小于預(yù)設(shè)時(shí)延閾值。在該示例當(dāng)中,第一邏輯單元是指那些自身合理部署區(qū)域較小,并且還要求與自身相連的第二邏輯單元的時(shí)延小于預(yù)設(shè)時(shí)延閾值。在選擇第一邏輯單元時(shí)之所以要考慮一個(gè)邏輯單元對與自身連接的其他邏輯單元時(shí)延的要求,這主要是由于APM或者DRM這些邏輯單元不僅合理部署區(qū)域比較小,而且這些邏輯單元因?yàn)樯婕暗綌?shù)據(jù)計(jì)算處理與數(shù)據(jù)的讀取與寫入,因此,要求與自身連接的第二邏輯單元的時(shí)延與自身保持一致。這些邏輯單元一旦部署不合理,則在后續(xù)從初次部署位置上移動到合理部署區(qū)域時(shí),會使得與自身相連的第二邏輯單元距離自身較遠(yuǎn)。應(yīng)當(dāng)理解的是,距離將會影響到第二邏輯單元與第一邏輯單元之間輸入輸出時(shí)延的大小,一旦距離較遠(yuǎn),則很難保證這些第二邏輯單元的時(shí)延與第一邏輯單元一致。
毫無疑義的是,本實(shí)施例的邏輯單元包括卻不限于APM與DRM,其可以是APM與DRM中的至少一種,也可以是其他任何合理部署區(qū)域小于預(yù)設(shè)面積閾值,且要求與自身相連的第二邏輯單元的時(shí)延小于預(yù)設(shè)時(shí)延閾值的邏輯單元。
在本實(shí)施例中,預(yù)設(shè)時(shí)延閾值也是可以由布局設(shè)計(jì)人員根據(jù)當(dāng)前實(shí)際的布局需求進(jìn)行靈活設(shè)置的。
S104、可編程邏輯器件布局裝置根據(jù)預(yù)先創(chuàng)建的部署指示對第一邏輯單元進(jìn)行部署設(shè)置。
可編程邏輯器件布局裝置在篩選出第一邏輯單元后,先對第一邏輯單元進(jìn)行部署,由于預(yù)先為第一邏輯單元規(guī)劃的合理部署區(qū)域較小,并不能在可編程邏輯器件的整體區(qū)域上進(jìn)行全面部署。現(xiàn)有技術(shù)中建立全局密度模型來進(jìn)行邏輯單元部署的方案在本實(shí)施例中已經(jīng)幾乎無效,因?yàn)榈谝贿壿媶卧窃谄渌侠聿渴饏^(qū)域面積較大、或者是可全局部署的那些邏輯單元之前部署的,甚至第一邏輯單元是最先在可編程邏輯器件上進(jìn)行部署的,所以此時(shí)無法針對可編程邏輯器件建立起具有參考價(jià)值的全局密度模型。如果繼續(xù)按照現(xiàn)有技術(shù)的方案對第一邏輯單元進(jìn)行部署,這就相當(dāng)于隨手將一把種子撒到空地上,誰也無法保證這些種子都落到空地中的一個(gè)特定區(qū)域內(nèi)。因此,為了保障將第一邏輯單元設(shè)置到其對應(yīng)的合理部署區(qū)域中,在本實(shí)施例里,可編程邏輯器件布局裝置可以采用部署指示來對第一邏輯單元的設(shè)置進(jìn)行輔助。
由于部署指示的作用是指示可編程邏輯器件布局裝置將第一邏輯單元部署到其合理部署區(qū)域內(nèi),因此部署指示是預(yù)先基于第一邏輯單元的合理部署區(qū)域創(chuàng)建的。在本實(shí)施例的一種示例當(dāng)中,部署指示由可編程邏輯器件布局裝置創(chuàng)建,可編程邏輯器件布局裝置在根據(jù)部署指示對第一邏輯單元進(jìn)行部署之前還會創(chuàng)建部署指示,下面提供兩種創(chuàng)建部署指示的示例:
第一種,基于合理梯度的部署指示,圖2示出了創(chuàng)建基于合理梯度的部署指示的一種流程圖:
S202、可編程邏輯器件布局裝置確定第一邏輯單元的合理部署區(qū)域。
由于第一邏輯單元的部署指示是基于其合理部署區(qū)域設(shè)置的,因此,可以理解的是,可編程邏輯器件布局裝置為第一邏輯單元創(chuàng)建部署指示時(shí),應(yīng)當(dāng)了解第一邏輯單元合理部署區(qū)域的相關(guān)信息,確定合理部署區(qū)域的范圍。
S204、可編程邏輯器件布局裝置為可編程邏輯器件上的各區(qū)域設(shè)置合理梯度。
合理梯度用于表征對應(yīng)區(qū)域部署第一邏輯單元合理性的高低,合理梯度值越小則表征越適合部署第一邏輯單元,距離合理部署區(qū)域越近的區(qū)域,則合理梯度值越小,距離合理部署區(qū)域越遠(yuǎn)的區(qū)域,其合理梯度值則越大。例如,在圖3當(dāng)中示出了一種可編程邏輯器件布局裝置為可編程邏輯器件上各區(qū)域設(shè)置合理梯度值的示意圖,在圖3當(dāng)中,第一邏輯單元的合理部署區(qū)域31呈長條狀,合理部署區(qū)域31的長與第一可編程邏輯器件30的寬度相同??删幊踢壿嬈骷季盅b置可以將合理部署區(qū)域31的合理梯度值設(shè)置為0,而距離合理部署區(qū)域較近的第一區(qū)域32的合理梯度值則被設(shè)置為1;距離合理部署區(qū)域稍遠(yuǎn)一點(diǎn)的第二區(qū)域33的合理梯度值被設(shè)置為2;更遠(yuǎn)的第三區(qū)域34的合理梯度值則變成了3。
在圖3當(dāng)中,由于第一邏輯單元的合理部署區(qū)域31的長度恰好等于第一可編程邏輯器件30的寬度,因此,可編程邏輯器件布局裝置設(shè)置合理梯度值時(shí),只需要考慮合理部署區(qū)域31的兩側(cè)。但如圖4所示,另一個(gè)可編程邏輯器件40上,第一邏輯單元的合理部署區(qū)域41的邊界與第二可編程邏輯器件40的邊界并沒有任何重疊的部分,這時(shí)候,可編程邏輯器件布局裝置應(yīng)當(dāng)要同時(shí)為合理部署區(qū)域41四周的區(qū)域設(shè)置,可編程邏輯器件布局裝置為第二可編程邏輯器件40上各區(qū)域設(shè)置的合理梯度如圖所示。
另外,在可編程邏輯器件上,第一邏輯單元的合理部署區(qū)域可能包括兩個(gè)及以上的區(qū)域,也就是說,第一邏輯單元的合理部署區(qū)域并不是一個(gè)完整的整體,如圖5給出的是為可編程邏輯器件上個(gè)區(qū)域設(shè)置合理梯度值的又一種示意圖。在圖5當(dāng)中,第三可編程邏輯器件50上包括兩個(gè)第一合理部署區(qū)域51和第二合理部署區(qū)域51’,在為第三可編程邏輯器件50上的各個(gè)區(qū)域設(shè)置合理梯度值時(shí),針對兩個(gè)合理部署區(qū)域之間的合理梯度值設(shè)置可以參照圖5所示,靠近第一合理部署區(qū)域51或靠近第二合理部署區(qū)域51’的區(qū)域,同樣具有較低的合理梯度值,距離兩個(gè)區(qū)域距離相等的區(qū)域的合理梯度值達(dá)到最大值。
S206、可編程邏輯器件布局裝置將部署合理梯度作為部署指示。
圖3-圖5給出了幾種設(shè)置合理梯度值的方式,可編程邏輯器件布局裝置可以將設(shè)置的合理梯度作為部署指示。在根據(jù)合理梯度對第一邏輯單元進(jìn)行部署時(shí),可編程邏輯器件布局裝置可以選擇合理梯度值變化最大的區(qū)域設(shè)置第一邏輯單元。針對圖5中的情況,在設(shè)置第一合理部署區(qū)域51與第二合理部署區(qū)域51’之間合理梯度值時(shí),應(yīng)當(dāng)保證合理梯度值的變化小于第一合理部署區(qū)域51或第二合理部署區(qū)域51’的合理梯度值變化。
下面介紹另外一種創(chuàng)建部署指示的過程:和第一種方式一樣,可編程邏輯器件布局裝置也應(yīng)當(dāng)先確定第一邏輯單元的合理部署區(qū)域。在確定第一邏輯單元的合理部署區(qū)域之后,可編程邏輯器件布局裝置為合理部署區(qū)域設(shè)置合理標(biāo)識,并將部署合理梯度作為所述部署指示。在后續(xù)過程當(dāng)中,可編程邏輯器件布局裝置選擇可編程邏輯器件上具有合理標(biāo)識的區(qū)域來部署第一邏輯單元。
S106、可編程邏輯器件布局裝置對除第一邏輯單元以外的需要部署到可編程邏輯器件上的其他邏輯單元進(jìn)行部署。
當(dāng)可編程邏輯器件布局裝置對第一邏輯單元的部署完成之后,其可以開始對需要部署到可編程邏輯器件上除第一邏輯單元以外的其他邏輯單元進(jìn)行部署設(shè)置。針對其他邏輯單元的設(shè)置,本實(shí)施例提供這樣幾種設(shè)置示例:
第一種,可編程邏輯器件布局裝置對除第一邏輯單元以外的其他邏輯單元一視同仁,均根據(jù)創(chuàng)建的全局密度模型的指示進(jìn)行設(shè)置。這種設(shè)置方式的過程比較簡單,而且算法成熟,較容易實(shí)現(xiàn)。
第二種,可編程邏輯器件布局裝置對除第一邏輯單元以外的其他邏輯單元一視同仁,但在對包括第二邏輯單元在內(nèi)的其他單元進(jìn)行部署設(shè)置時(shí),是以第一邏輯單元的設(shè)置位置為中心,結(jié)合其他邏輯單元與第一邏輯單元之間距離的要求確定其他邏輯單元的位置,從而完成對除第一邏輯單元以外其他邏輯單元的設(shè)置部署。
第三種,可編程邏輯器件布局裝置對其他邏輯單元也進(jìn)行分類部署。具體的,考慮到第一邏輯單元對要求與之相連的第二邏輯單元的時(shí)延要求較為嚴(yán)格,需要第二邏輯單元盡可能緊湊的設(shè)置在第一邏輯單元周圍,可編程邏輯器件布局裝置可以先設(shè)置第二邏輯單元,避免第一邏輯單元周圍的位置被除第一邏輯單元和第二邏輯單元以外的第三邏輯單元占用,從而導(dǎo)致第二邏輯單元不得不被設(shè)置在距離第一邏輯單元較遠(yuǎn)的位置。
在第三種情況下,對第二邏輯單元進(jìn)行設(shè)置的時(shí)候,可以以第一邏輯單元的第一部署位置為中心,根據(jù)各第二邏輯單元與第一邏輯單元之間的距離要求確定第二邏輯單元的第二部署位置,并根據(jù)確定出來的位置設(shè)置第二邏輯單元。對于第三邏輯單元的設(shè)置,可編程邏輯器件布局裝置可以在第二邏輯單元部署完成之后,針對可編程邏輯器件上已部署邏輯單元創(chuàng)建全局密度模型,全局密度模型可以體現(xiàn)出可編程邏輯器件上當(dāng)前邏輯單元的分布情況??删幊踢壿嬈骷季盅b置根據(jù)創(chuàng)建出的全局密度模型選擇密度小于預(yù)設(shè)密度閾值的區(qū)域設(shè)置第三邏輯單元,也即選擇比較當(dāng)前邏輯單元分布比較稀疏的區(qū)域設(shè)置第三邏輯單元。可以理解的是,在設(shè)置第三邏輯單元的時(shí)候,全局密度模型應(yīng)當(dāng)隨著可編程邏輯器件上邏輯單元的增加而不斷更新,以便為可編程邏輯器件布局裝置提供有效的參考依據(jù)。
另外,在理想情況下,可編程邏輯器件布局裝置可以將第一邏輯單元部署到其合理部署區(qū)域中,但可以理解的是,實(shí)際部署過程中不可避免的會存在一些誤差,因此,第一邏輯單元也有可能因?yàn)檎`差的關(guān)系設(shè)置到了其合理部署區(qū)域之外、第一邏輯單元合理部署區(qū)域附近的地方。對于這種情況,可以在初始部署后對第一邏輯單元進(jìn)行一些輕微的調(diào)整,順帶調(diào)整的還包括與被調(diào)整的第一邏輯單元相連的第二邏輯單元。
最后,本實(shí)施例中提供的可編程邏輯器件布局方法可以針對各種類型的可編程邏輯器件,包括PROM(Programmable Read-Only Memory,可編程只讀存儲器)、EPROM(Erasable Programmable Read Only Memory,可擦除可編程存儲器)、PLA(Programmable logic arrays,可編程邏輯陣列)、PAL(Programmable Array Logic,可編陣列邏輯)和GAL(generic array logic,通用陣列邏輯)等類型。其中,在PAL和GAL的基礎(chǔ)上又發(fā)展出了應(yīng)用更為廣泛的CPLD(Complex Programmable Logic Device,復(fù)雜可編程邏輯器件)以及FPGA(Field-Programmable Gate Array,現(xiàn)場可編程門陣列)等。
本實(shí)施例提供了一種可編程邏輯器件布局方法,由可編程邏輯器件布局裝置將需要部署到可編程邏輯器件上的第一邏輯單元篩選出來,然后先根據(jù)部署指示對第一邏輯單元進(jìn)行部署后再對其他邏輯單元進(jìn)行設(shè)置,保證其他邏輯單元不會占用第一邏輯單元本來就比較小的面積部署區(qū)域,在部署指示的輔助下,盡可能準(zhǔn)確地將第一邏輯單元設(shè)置到其合理部署區(qū)域內(nèi)。另外,在本實(shí)施例的一些實(shí)例中,還會根據(jù)其他邏輯單元與第一邏輯單元之間的距離要求來設(shè)置其他邏輯單元。當(dāng)?shù)谝贿壿媶卧脑O(shè)置位置合理的情況下,其他邏輯單元的部署位置也會是基本合理的,因此,本實(shí)施例中不僅提升了對第一邏輯單元布局的合理性,還提升可編程邏輯器件整體布局的正確性。降低了在布局完成后再對可編程邏輯器件上邏輯單元進(jìn)行大范圍挪動修改的風(fēng)險(xiǎn),提升了可編程邏輯器件布局的效率和性能。
實(shí)施例二:
本實(shí)施例提供一種可編程邏輯器件布局裝置,該裝置可以執(zhí)行實(shí)施例一提供的可編程邏輯器件布局方法,下面結(jié)合圖6對可編程邏輯器件布局裝置60進(jìn)行介紹:
可編程邏輯器件布局裝置60包括篩選模塊602、第一部署模塊604、其他部署模塊606。篩選模塊602用于從需要部署到可編程邏輯器件上的各邏輯單元中篩選出第一邏輯單元;第一部署模塊604用于根據(jù)預(yù)先創(chuàng)建的部署指示對第一邏輯單元進(jìn)行部署設(shè)置;其他部署模塊606用于對除第一邏輯單元以外的需要部署到可編程邏輯器件上的其他邏輯單元進(jìn)行部署。
在本實(shí)施例中,第一邏輯單元是需要部署到可編程邏輯器件上的邏輯單元中滿足預(yù)設(shè)條件的邏輯單元,預(yù)設(shè)條件中包括自身的合理部署區(qū)域小于預(yù)設(shè)面積閾值。也就是說,作為第一邏輯單元的必要條件是一個(gè)邏輯單元自身的合理部署區(qū)域小于預(yù)設(shè)面積閾值。
篩選模塊602根據(jù)預(yù)設(shè)面積閾值篩選出合理部署區(qū)域較小的邏輯單元作為第一邏輯單元,便于后續(xù)部署過程能夠根據(jù)各邏輯單元合理部署區(qū)域的大小來分時(shí)序部署。預(yù)設(shè)面積閾值可以由布局設(shè)計(jì)人員根據(jù)當(dāng)前布局的需要自定義設(shè)置。當(dāng)然可以理解的是,在對一個(gè)可編程邏輯器件進(jìn)行布局規(guī)劃的時(shí)候,可能會給不同的邏輯單元規(guī)劃出大小不同的合理部署區(qū)域。針對不同的邏輯單元,應(yīng)當(dāng)要設(shè)置不同的預(yù)設(shè)面積閾值。因此,布局設(shè)計(jì)人員在自定義設(shè)置預(yù)設(shè)面積閾值時(shí),應(yīng)當(dāng)考慮當(dāng)前待部署邏輯單元本身的合理部署區(qū)域。
另外,在本實(shí)施例的一個(gè)示例當(dāng)中,滿足作為第一邏輯單元的預(yù)設(shè)條件還可以包括要求與自身相連的第二邏輯單元的時(shí)延小于預(yù)設(shè)時(shí)延閾值。在該示例當(dāng)中,篩選模塊602篩選出的第一邏輯單元是指那些自身合理部署區(qū)域較小,并且還要求與自身相連的第二邏輯單元的時(shí)延小于預(yù)設(shè)時(shí)延閾值。篩選模塊602在選擇第一邏輯單元時(shí)之所以要考慮一個(gè)邏輯單元對與自身連接的其他邏輯單元時(shí)延的要求,這主要是由于APM或者DRM這些邏輯單元不僅合理部署區(qū)域比較小,而且這些邏輯單元因?yàn)樯婕暗綌?shù)據(jù)計(jì)算處理與數(shù)據(jù)的讀取與寫入,因此,要求與自身連接的第二邏輯單元的時(shí)延與自身保持一致。這些邏輯單元一旦部署不合理,則在后續(xù)從初次部署位置上移動到合理部署區(qū)域時(shí),會使得與自身相連的第二邏輯單元距離自身較遠(yuǎn)。應(yīng)當(dāng)理解的是,距離將會影響到第二邏輯單元與第一邏輯單元之間輸入輸出時(shí)延的大小,一旦距離較遠(yuǎn),則很難保證這些第二邏輯單元的時(shí)延與第一邏輯單元一致。
毫無疑義的是,本實(shí)施例的邏輯單元包括卻不限于APM與DRM,其可以是APM與DRM中的至少一種,也可以是其他任何合理部署區(qū)域小于預(yù)設(shè)面積閾值,且要求與自身相連的第二邏輯單元的時(shí)延小于預(yù)設(shè)時(shí)延閾值的邏輯單元。
在本實(shí)施例中,預(yù)設(shè)時(shí)延閾值也是可以由布局設(shè)計(jì)人員根據(jù)當(dāng)前實(shí)際的布局需求進(jìn)行靈活設(shè)置的。
篩選模塊602在篩選出第一邏輯單元后,第一部署模塊604先對第一邏輯單元進(jìn)行部署,由于預(yù)先為第一邏輯單元規(guī)劃的合理部署區(qū)域較小,并不能在可編程邏輯器件的整體區(qū)域上進(jìn)行全面部署?,F(xiàn)有技術(shù)中建立全局密度模型來進(jìn)行邏輯單元部署的方案在本實(shí)施例中已經(jīng)幾乎無效,因?yàn)榈谝贿壿媶卧窃谄渌侠聿渴饏^(qū)域面積較大、或者是可全局部署的那些邏輯單元之前部署的,甚至第一邏輯單元是最先在可編程邏輯器件上進(jìn)行部署的,所以此時(shí)無法針對可編程邏輯器件建立起具有參考價(jià)值的全局密度模型。如果繼續(xù)按照現(xiàn)有技術(shù)的方案對第一邏輯單元進(jìn)行部署,這就相當(dāng)于隨手將一把種子撒到空地上,誰也無法保證這些種子都落到空地中的一個(gè)特定區(qū)域內(nèi)。因此,為了保障將第一邏輯單元設(shè)置到其對應(yīng)的合理部署區(qū)域中,在本實(shí)施例里,第一部署模塊604可以采用部署指示來對第一邏輯單元的設(shè)置進(jìn)行輔助。
由于部署指示的作用是指示第一部署模塊604將第一邏輯單元部署到其合理部署區(qū)域內(nèi),因此部署指示是可編程邏輯器件布局裝置60預(yù)先基于第一邏輯單元的合理部署區(qū)域創(chuàng)建的。在本實(shí)施例的一種示例當(dāng)中,如圖7所示,可編程邏輯器件布局裝置60還包括指示創(chuàng)建模塊608,部署指示由指示創(chuàng)建模塊608在第一部署模塊604對第一邏輯單元進(jìn)行部署之前創(chuàng)建部署指示,下面提供兩種指示創(chuàng)建模塊608創(chuàng)建部署指示的示例:
第一種,基于合理梯度的部署指示。由于第一邏輯單元的部署指示是基于其合理部署區(qū)域設(shè)置的,因此,可以理解的是,指示創(chuàng)建模塊608為第一邏輯單元創(chuàng)建部署指示時(shí),應(yīng)當(dāng)了解第一邏輯單元合理部署區(qū)域的相關(guān)信息,確定合理部署區(qū)域的范圍。然后,指示創(chuàng)建模塊608為可編程邏輯器件上的各區(qū)域設(shè)置合理梯度。
合理梯度用于表征對應(yīng)區(qū)域部署第一邏輯單元合理性的高低,合理梯度值越小則表征越適合部署第一邏輯單元,距離合理部署區(qū)域越近的區(qū)域,則合理梯度值越小,距離合理部署區(qū)域越遠(yuǎn)的區(qū)域,其合理梯度值則越大。例如,在圖3當(dāng)中示出了指示創(chuàng)建模塊608為可編程邏輯器件上各區(qū)域設(shè)置合理梯度值的一種示意圖,在圖3當(dāng)中,第一邏輯單元的合理部署區(qū)域31呈長條狀,合理部署區(qū)域31的長與第一可編程邏輯器件30的寬度相同。指示創(chuàng)建模塊608可以將合理部署區(qū)域31的合理梯度值設(shè)置為0,而距離合理部署區(qū)域較近的第一區(qū)域32的合理梯度值則被設(shè)置為1;距離合理部署區(qū)域稍遠(yuǎn)一點(diǎn)的第二區(qū)域33的合理梯度值被設(shè)置為2;更遠(yuǎn)的第三區(qū)域34的合理梯度值則變成了3。
在圖3當(dāng)中,由于第一邏輯單元的合理部署區(qū)域31的長度恰好等于第一可編程邏輯器件30的寬度,因此,指示創(chuàng)建模塊608設(shè)置合理梯度值時(shí),只需要考慮合理部署區(qū)域31的兩側(cè)。但如圖4所示,另一個(gè)可編程邏輯器件40上,第一邏輯單元的合理部署區(qū)域41的邊界與第二可編程邏輯器件40的邊界并沒有任何重疊的部分,這時(shí)候,指示創(chuàng)建模塊608應(yīng)當(dāng)要同時(shí)為合理部署區(qū)域41四周的區(qū)域設(shè)置,指示創(chuàng)建模塊608為第二可編程邏輯器件40上各區(qū)域設(shè)置的合理梯度如圖所示。
另外,在可編程邏輯器件上,第一邏輯單元的合理部署區(qū)域可能包括兩個(gè)及以上的區(qū)域,也就是說,第一邏輯單元的合理部署區(qū)域并不是一個(gè)完整的整體,如圖5給出的是為可編程邏輯器件上個(gè)區(qū)域設(shè)置合理梯度值的又一種示意圖。在圖5當(dāng)中,第三可編程邏輯器件50上包括兩個(gè)第一合理部署區(qū)域51和第二合理部署區(qū)域51’,指示創(chuàng)建模塊608在為第三可編程邏輯器件50上的各個(gè)區(qū)域設(shè)置合理梯度值時(shí),針對兩個(gè)合理部署區(qū)域之間的合理梯度值設(shè)置可以參照圖5所示,靠近第一合理部署區(qū)域51或靠近第二合理部署區(qū)域51’的區(qū)域,同樣具有較低的合理梯度值,距離兩個(gè)區(qū)域距離相等的區(qū)域的合理梯度值達(dá)到最大值。
最后,指示創(chuàng)建模塊608將部署合理梯度作為部署指示。在根據(jù)合理梯度對第一邏輯單元進(jìn)行部署時(shí),第一部署模塊604可以選擇合理梯度值變化最大的區(qū)域設(shè)置第一邏輯單元。針對圖5中的情況,指示創(chuàng)建模塊608在設(shè)置第一合理部署區(qū)域51與第二合理部署區(qū)域51’之間合理梯度值時(shí),應(yīng)當(dāng)保證合理梯度值的變化小于第一合理部署區(qū)域51或第二合理部署區(qū)域51’的合理梯度值變化。
下面介紹另外一種創(chuàng)建部署指示的過程:和第一種方式一樣,指示創(chuàng)建模塊608也應(yīng)當(dāng)先確定第一邏輯單元的合理部署區(qū)域。在確定第一邏輯單元的合理部署區(qū)域之后,指示創(chuàng)建模塊608為合理部署區(qū)域設(shè)置合理標(biāo)識,并將部署合理梯度作為所述部署指示。在后續(xù)過程當(dāng)中,第一部署模塊604選擇可編程邏輯器件上具有合理標(biāo)識的區(qū)域來部署第一邏輯單元。
當(dāng)?shù)谝徊渴鹉K604對第一邏輯單元的部署完成之后,其他部署模塊606可以開始對需要部署到可編程邏輯器件上除第一邏輯單元以外的其他邏輯單元進(jìn)行部署設(shè)置。針對其他邏輯單元的設(shè)置,本實(shí)施例提供這樣幾種設(shè)置示例:
第一種,其他部署模塊606對除第一邏輯單元以外的其他邏輯單元一視同仁,均根據(jù)創(chuàng)建的全局密度模型的指示進(jìn)行設(shè)置。這種設(shè)置方式的過程比較簡單,而且算法成熟,較容易實(shí)現(xiàn)。
第二種,其他部署模塊606對除第一邏輯單元以外的其他邏輯單元一視同仁,但在對包括第二邏輯單元在內(nèi)的其他單元進(jìn)行部署設(shè)置時(shí),是以第一邏輯單元的設(shè)置位置為中心,結(jié)合其他邏輯單元與第一邏輯單元之間距離的要求確定其他邏輯單元的位置,從而完成對除第一邏輯單元以外其他邏輯單元的設(shè)置部署。
第三種,其他部署模塊606對其他邏輯單元也進(jìn)行分類部署。具體的,考慮到第一邏輯單元對要求與之相連的第二邏輯單元的時(shí)延要求較為嚴(yán)格,需要第二邏輯單元盡可能緊湊的設(shè)置在第一邏輯單元周圍,其他部署模塊606可以先設(shè)置第二邏輯單元,避免第一邏輯單元周圍的位置被除第一邏輯單元和第二邏輯單元以外的第三邏輯單元占用,從而導(dǎo)致第二邏輯單元不得不被設(shè)置在距離第一邏輯單元較遠(yuǎn)的位置。
在第三種情況下,對第二邏輯單元進(jìn)行設(shè)置的時(shí)候,其他部署模塊606可以以第一邏輯單元的第一部署位置為中心,根據(jù)各第二邏輯單元與第一邏輯單元之間的距離要求確定第二邏輯單元的第二部署位置,并根據(jù)確定出來的位置設(shè)置第二邏輯單元。對于第三邏輯單元的設(shè)置,其他部署模塊606可以在第二邏輯單元部署完成之后,針對可編程邏輯器件上已部署邏輯單元創(chuàng)建全局密度模型,全局密度模型可以體現(xiàn)出可編程邏輯器件上當(dāng)前邏輯單元的分布情況。其他部署模塊606根據(jù)創(chuàng)建出的全局密度模型選擇密度小于預(yù)設(shè)密度閾值的區(qū)域設(shè)置第三邏輯單元,也即選擇比較當(dāng)前邏輯單元分布比較稀疏的區(qū)域設(shè)置第三邏輯單元??梢岳斫獾氖?,在設(shè)置第三邏輯單元的時(shí)候,全局密度模型應(yīng)當(dāng)隨著可編程邏輯器件上邏輯單元的增加而不斷更新,以便為其他部署模塊606提供有效的參考依據(jù)。
另外,在理想情況下,第一部署模塊604可以將第一邏輯單元部署到其合理部署區(qū)域中,但可以理解的是,實(shí)際部署過程中不可避免的會存在一些誤差,因此,第一邏輯單元也有可能因?yàn)檎`差的關(guān)系設(shè)置到了其合理部署區(qū)域之外、第一邏輯單元合理部署區(qū)域附近的地方。對于這種情況,可編程邏輯器件布局裝置60可以在初始部署后對第一邏輯單元進(jìn)行一些輕微的調(diào)整,順帶調(diào)整的還包括與被調(diào)整的第一邏輯單元相連的第二邏輯單元。
最后,本實(shí)施例中提供的可編程邏輯器件布局裝置60可用于對各種類型的可編程邏輯器件進(jìn)行部署設(shè)置,包括PROM、EPROM、PLA、PAL和GAL等類型。其中,在PAL和GAL的基礎(chǔ)上又發(fā)展出了應(yīng)用更為廣泛的CPLD以及FPGA等。
可編程邏輯器件布局裝置可以部署在終端上,例如處理能力較為強(qiáng)大的臺式電腦與筆記本電腦等。下面結(jié)合圖8提供的終端對實(shí)現(xiàn)可編程邏輯器件布局裝置的硬件結(jié)構(gòu)進(jìn)行介紹:
終端8包括處理器81、存儲單元82以及交互單元83等,其中可編程邏輯器件布局裝置的篩選模塊、第一部署模塊、其他部署模塊均可以由處理器81來實(shí)現(xiàn);指示創(chuàng)建模塊的功能可以通過交互單元83與處理器81共同實(shí)現(xiàn),因?yàn)橹甘緞?chuàng)建模塊在創(chuàng)建部署指示時(shí),可以在布局設(shè)計(jì)人員的指示下進(jìn)行,布局設(shè)計(jì)人員通過交互單元83向終端8發(fā)出指令,終端8的處理器81基于用戶的指令為第一邏輯單元設(shè)置部署指示。存儲單元82中則可以存儲供處理器81運(yùn)行以實(shí)現(xiàn)可編程邏輯器件布線方法的一系列指令。
本實(shí)施例提供了一種可編程邏輯器件布局裝置,由可編程邏輯器件布局裝置將需要部署到可編程邏輯器件上的第一邏輯單元篩選出來,然后先根據(jù)部署指示對第一邏輯單元進(jìn)行部署后再對其他邏輯單元進(jìn)行設(shè)置,保證其他邏輯單元不會占用第一邏輯單元本來就比較小的面積部署區(qū)域,在部署指示的輔助下,盡可能準(zhǔn)確地將第一邏輯單元設(shè)置到其合理部署區(qū)域內(nèi)。另外,在本實(shí)施例的一些實(shí)例中,還會根據(jù)其他邏輯單元與第一邏輯單元之間的距離要求來設(shè)置其他邏輯單元。當(dāng)?shù)谝贿壿媶卧脑O(shè)置位置合理的情況下,其他邏輯單元的部署位置也會是基本合理的,因此,本實(shí)施例中不僅提升了對第一邏輯單元布局的合理性,還提升可編程邏輯器件整體布局的正確性。降低了在布局完成后再對可編程邏輯器件上邏輯單元進(jìn)行大范圍挪動修改的風(fēng)險(xiǎn),提升了可編程邏輯器件布局的效率和性能。
顯然,本領(lǐng)域的技術(shù)人員應(yīng)該明白,上述本發(fā)明實(shí)施例的各模塊或各步驟可以用通用的計(jì)算裝置來實(shí)現(xiàn),它們可以集中在單個(gè)的計(jì)算裝置上,或者分布在多個(gè)計(jì)算裝置所組成的網(wǎng)絡(luò)上,可選地,它們可以用計(jì)算裝置可執(zhí)行的程序代碼來實(shí)現(xiàn),從而,可以將它們存儲在計(jì)算機(jī)存儲介質(zhì)(ROM/RAM、磁碟、光盤)中由計(jì)算裝置來執(zhí)行,并且在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟,或者將它們分別制作成各個(gè)集成電路模塊,或者將它們中的多個(gè)模塊或步驟制作成單個(gè)集成電路模塊來實(shí)現(xiàn)。所以,本發(fā)明不限制于任何特定的硬件和軟件結(jié)合。
以上內(nèi)容是結(jié)合具體的實(shí)施方式對本發(fā)明實(shí)施例所作的進(jìn)一步詳細(xì)說明,不能認(rèn)定本發(fā)明的具體實(shí)施只局限于這些說明。對于本發(fā)明所屬技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干簡單推演或替換,都應(yīng)當(dāng)視為屬于本發(fā)明的保護(hù)范圍。