亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

可編程邏輯器件布線方法及裝置與流程

文檔序號:11919523閱讀:317來源:國知局
可編程邏輯器件布線方法及裝置與流程

本發(fā)明涉及電子技術(shù)領(lǐng)域,尤其涉及可編程邏輯器件布線方法及裝置。



背景技術(shù):

隨著電子技術(shù)的飛速發(fā)展,數(shù)字電路的設(shè)計腳步也逐漸加快??删幊踢壿嬈骷?Programmable Logic Device,PLD)因其具有可編程特性,有效降低了電路設(shè)計成本,縮短了系統(tǒng)設(shè)計的周期,提高了設(shè)計開發(fā)的靈活性。在對可編程邏輯器件進(jìn)行設(shè)計時,通常是由設(shè)計人員在EDA終端(例如運(yùn)行有EDA程序的計算機(jī))上使用硬件描述語言對應(yīng)用設(shè)計進(jìn)行邏輯描述與邏輯綜合,然后進(jìn)行布局布線,最后成功生成位流下載到芯片上??删幊踢壿嬈骷碾娐芬?guī)模越大,EDA終端的內(nèi)存開銷和運(yùn)行時間將會越多。所以,評價一個可編程邏輯器件布線方案的關(guān)鍵指標(biāo)就是布線時間和內(nèi)存開銷。

為了在起始端口與目的端口之間布線,實(shí)現(xiàn)起始端口與目的端口的連接,中間可能要經(jīng)過若干級中間端口,這些中間端口會使得從起始端口到目的端口的連接路徑存在多條。圖1示出了從起始端口A到目的端口E之間所有的連接路徑,由圖中可知,要從端口A到端口E,必須經(jīng)過中間的三組端口,第一組:B1、B2、B3,第二組:C1、C2、C3,第三組:D1、D2、D3。由于不同端口之間的布線代價不同,因此實(shí)際布線過程中很重要的一個部分就是從多條連接路徑中規(guī)劃出布線代價較低的實(shí)際布線路徑。目前,比較通用的布線方案是采用A*算法(A-star algorithm),A*算法是一種由估值函數(shù)驅(qū)動的圖搜索算法。估值函數(shù)為:

f(n)=g(n)+h(n);

其中,n為中間端口,g(n)為從起始端口到n端口的實(shí)際代價,h(n)為從n端口到目的端口的估計代價。由于A*算法的本質(zhì)是一種圖搜索算法,它的時間復(fù)雜度和空間復(fù)雜度都與起點(diǎn)到終點(diǎn)之間的節(jié)點(diǎn)數(shù)量相關(guān),搜索的端口數(shù)量越多,搜索所需的時間越多,占用的內(nèi)存也越大,其時間復(fù)雜度幾乎呈指數(shù)級增長,這極大的影響到了布線的效率。

因此現(xiàn)在亟需提出一種新的布線方案,旨在降低現(xiàn)有布線方案搜索的復(fù)雜度,減少布線時間和內(nèi)存開銷。



技術(shù)實(shí)現(xiàn)要素:

本發(fā)明一種可編程邏輯器件布線方法及裝置,主要解決的技術(shù)問題是:降低現(xiàn)有布線方案搜索的復(fù)雜度,減少布線時間和內(nèi)存開銷。

為解決上述技術(shù)問題,本發(fā)明提供一種可編程邏輯器件布線方法,包括:

確定可編程邏輯器件中參與布線的起始端口與目的端口之間的原始連接關(guān)系和原始布線代價;

基于所述原始連接關(guān)系篩選出所述可編程邏輯器件中的至少一個等價端口組,所述等價端口組中包括至少兩個上級端口相同且下級端口相同的端口;

將所述等價端口組中的端口進(jìn)行合并后形成替換端口,并確定各所述替換端口以及未參與合并的各原始端口之間的簡化連接關(guān)系;

基于所述簡化連接關(guān)系和所述原始布線代價確定所述起始端口與所述目的端口之間的實(shí)際布線路徑進(jìn)行布線。

進(jìn)一步地,基于所述原始連接關(guān)系篩選出所述可編程邏輯器件中的至少一個等價端口組包括:

基于所述原始連接關(guān)系篩選出所述可編程邏輯器件中全部的等價端口組。

進(jìn)一步地,各所述等價端口組中包括所述原始連接關(guān)系中具有相同上級端口和相同下級端口的全部端口。

進(jìn)一步地,基于所述簡化連接關(guān)系和所述原始布線代價確定所述起始端口與所述目的端口之間實(shí)際布線路徑包括:

根據(jù)所述原始布線代價確定所述簡化連接關(guān)系中具有直接連接關(guān)系的各端口之間的簡化布線代價;

從所述起始端口開始確定當(dāng)前布線端口,根據(jù)所述簡化連接關(guān)系遍歷與當(dāng)前布線端口直接連接的下一級各端口到所述布線端口之間的簡化布線代價,基于低代價優(yōu)先原則選擇從下一級各端口中選擇出新的布線端口并再次遍歷選擇,直至選擇出的布線端口為所述目的端口為止;

基于選擇出的各布線端口規(guī)劃初始布線路徑;

將所述初始布線路徑中由替換端口形成的布線端口替換為對應(yīng)等價端口組中的一個端口并確定出實(shí)際布線路徑。

進(jìn)一步地,根據(jù)所述原始布線代價確定所述簡化連接關(guān)系中具有直接連接關(guān)系的各端口之間的簡化布線代價包括:

確定所述簡化連接關(guān)系中任意兩個端口的簡化連接對應(yīng)于所述原始連接關(guān)系中的原始連接;

根據(jù)原始布線代價計算所述原始連接的平均布線代價;

將所述平均布線代價作為所述簡化連接的所述兩個端口間的簡化布線代價。

進(jìn)一步地,將所述初始布線路徑中由替換端口形成的布線端口替換為對應(yīng)等價端口組中的一個端口包括:

進(jìn)一步地,根據(jù)所述原始布線代價,基于低代價優(yōu)先原則選用尚未被占用的端口替換所述替換端口。

進(jìn)一步地,所述可編程邏輯器件為現(xiàn)場可編程門陣列。

本發(fā)明還提供一種可編程邏輯器件布線裝置,包括:

原始確定模塊,用于確定可編程邏輯器件中參與布線的起始端口與目的端口之間的原始連接關(guān)系和原始布線代價;

等價篩選模塊,用于基于所述原始連接關(guān)系篩選出所述可編程邏輯器件中的至少一個等價端口組,所述等價端口組中包括至少兩個上級端口相同且下級端口相同的端口;

關(guān)系簡化模塊,用于將所述等價端口組中的端口進(jìn)行合并后形成替換端口,并確定各所述替換端口以及未參與合并的各原始端口之間的簡化連接關(guān)系;

實(shí)際布線模塊,用于基于所述簡化連接關(guān)系和所述原始布線代價確定所述起始端口與所述目的端口之間的實(shí)際布線路徑進(jìn)行布線。

進(jìn)一步地,所述實(shí)際布線模塊用于根據(jù)所述原始布線代價確定所述簡化連接關(guān)系中具有直接連接關(guān)系的各端口之間的簡化布線代價;從所述起始端口開始確定當(dāng)前布線端口,根據(jù)所述簡化連接關(guān)系遍歷與當(dāng)前布線端口直接連接的下一級各端口到所述當(dāng)前布線端口之間的所述簡化布線代價,基于低代價優(yōu)先原則選擇從下一級各端口中選擇出新的布線端口并再次遍歷選擇,直至選擇出的布線端口為所述目的端口為止;并基于選擇出的各布線端口規(guī)劃初始布線路徑;將所述初始布線路徑中由替換端口形成的布線端口替換為對應(yīng)等價端口組中的一個端口并規(guī)劃出實(shí)際布線路徑。

進(jìn)一步地,所述可編程邏輯器件為現(xiàn)場可編程門陣列。

本發(fā)明的有益效果是:

本發(fā)明提供的可編程邏輯器件布線方法及裝置,通過確定可編程邏輯器件中參與布線的起始端口與目的端口之間的原始連接關(guān)系和原始布線代價,然后基于原始連接關(guān)系篩選出可編程邏輯器件中的至少一個等價端口組,將等價端口組中的端口進(jìn)行合并形成替換端口,并確定出替換端口和未參加合并的原始端口之間的簡化連接關(guān)系,進(jìn)而基于簡化連接關(guān)系和原始布線代價確定起始端口與目的端口之間的實(shí)際布線路徑進(jìn)行布線。在這種布線方案當(dāng)中,將兩個及兩個以上的上級端口相同且下級端口相同的端口合并為一個替換端口,并基于替換端口和原始端口形成簡化連接關(guān)系,從而減少了布線過程中需要搜索的端口數(shù)目和搜索次數(shù),從而降低了布線方案的空間復(fù)雜度和時間復(fù)雜度,降低了EDA終端在布線過程中的內(nèi)存開銷,節(jié)約了布線時間,提高了生產(chǎn)效率。

附圖說明

圖1為本發(fā)明各實(shí)施例中可編程邏輯器件原始連接關(guān)系的一種示意圖;

圖2為本發(fā)明實(shí)施例一提供的可編程邏輯器件布線方法的一種流程圖;

圖3為本發(fā)明中一個端口的上級端口與下級端口的一種示意圖;

圖4為本發(fā)明各實(shí)施例中可編程邏輯器件簡化連接關(guān)系的一種示意圖;

圖5為實(shí)施例一中可編程邏輯器件布線裝置確定起始端口與目的端口間實(shí)際布線路徑的一種流程圖;

圖6為可編程邏輯器件布線裝置根據(jù)原始布線代價確定簡化布線代價的一種流程圖;

圖7為本發(fā)明實(shí)施例二提供的可編程邏輯器件布線裝置的一種結(jié)構(gòu)示意圖;

圖8為本發(fā)明實(shí)施例二提供的用于部署可編程邏輯器件布線裝置的一種終端的硬件結(jié)構(gòu)示意圖。

具體實(shí)施方式

下面通過具體實(shí)施方式結(jié)合附圖對本發(fā)明實(shí)施例作進(jìn)一步詳細(xì)說明。

實(shí)施例一:

為了解決現(xiàn)有技術(shù)中通過A*搜索算法對可編程邏輯器件進(jìn)行布線的方案中,在可編程邏輯器件的電路規(guī)模大、連接關(guān)系復(fù)雜的情況下,EDA終端進(jìn)行搜索計算的空間復(fù)雜度和時間復(fù)雜度極高,需要極大的內(nèi)存消耗和極長的運(yùn)行時間才能支持對可編程邏輯器件的布線設(shè)計的問題,本實(shí)施例提供一種可編程邏輯器件布線方法,該方法可以有可編程邏輯器件布線裝置來執(zhí)行,請參見圖2:

S202、可編程邏輯器件布線裝置確定可編程邏輯器件中參與布線的起始端口與目的端口之間的原始連接關(guān)系和原始布線代價。

如圖1所示,端口A為一次布線的起始端口,而端口E為布線的目的端口,可編程邏輯器件布線裝置需要先根據(jù)實(shí)際情況確定出從起始端口到目的端口之間連接關(guān)系,由于在后續(xù)的過程中,可編程邏輯器件布線裝置還會對這些連接關(guān)系進(jìn)行處理,因此,在本實(shí)施例中,將起始端口與目的端口之間實(shí)際可以存在的連接關(guān)系稱為原始連接關(guān)系。如圖1中各個端口之間的連接關(guān)系就是原始連接關(guān)系。在圖1中,從起始端口A到目的端口E之間,需要經(jīng)歷三組中間端口。由于三組中間端口中每一組都不止一個端口,所以這三組中間端口為從起始端口到目的端口之間提供了多條連接路徑。而這多條連接路徑的布線代價是不相同,布線代價值的大小會影響到可編程邏輯器件布線裝置對可編程邏輯器件的布線時間、布線內(nèi)存消耗以及可編程邏輯器件最終的布線質(zhì)量。為了在后續(xù)選擇出最佳的連接路徑作為實(shí)際布線路徑進(jìn)行布線,也就是選擇出布線代價最合適的連接路徑進(jìn)行布線,可編程邏輯器件布線裝置還需要確定出原始連接關(guān)系中的原始布線代價。

S204、可編程邏輯器件布線裝置基于原始連接關(guān)系篩選出可編程邏輯器件中的至少一個等價端口組。

本實(shí)施例中的等價端口組是指兩個或兩個以上的端口具有相同的上級端口與相同的下級端口,則這些端口的集合可被稱之為等價端口組。下面對本實(shí)施例中上級端口與下級端口的概念進(jìn)行說明:假定從起始端口向目的端口傳輸數(shù)據(jù),則針對某一個端口來說,先于該端口接收到數(shù)據(jù),并將接收到的數(shù)據(jù)傳輸給該端口的就是其上級端口;對應(yīng)的,該端口傳輸數(shù)據(jù)的對象就是其下級端口。當(dāng)然,本領(lǐng)域技術(shù)人員應(yīng)當(dāng)明白的是,上述解釋是基于從起始端口向目的端口傳輸數(shù)據(jù)而言,若是從目的端口向起始端口傳輸數(shù)據(jù),則情況相反。如圖3所示,起始端口30與第三端口33之間間隔有第一端口31和第二端口32。而第三端口33與目的端口35之間間隔有第四端口34。根據(jù)上述定義,我們可以確定第二端口32為第三端口33的上級端口,而第四端口34為第三端口33的下級端口。而對于第二端口32而言,第三端口33則是它的下級端口,第一端口31是其上級端口。值得注意的是,兩個端口等價必須同時滿足上級端口相同與下級端口相同這兩個條件,而且“上級端口相同”不是指兩個或多個端口之間存在相同的上級端口,而是指兩個或多個端口之間擁有相同數(shù)目的上級端口,而且任意一個端口所擁有的所有上級端口都能在另外端口的上級端口中找到。相應(yīng)的,“下級端口相同”指的是兩個或多個端口之間擁有下級端口的數(shù)目相同,而且任意一個端口的所有擁有的下級端口都能在其他端口的下級端口中找到。在圖1給出的原始連接關(guān)系中,B1,B2,B3這三個端口,上級端口都是起始端口A,而下級端口都包括且僅限于C1,C2,C3這三個端口。所以B1,B2,B3這三個端口互為等價端口,端口B1,B2,B3的集合也可以稱為一個等價端口組。

S206、可編程邏輯器件布線裝置等價端口組中的端口進(jìn)行合并后形成替換端口,并確定各替換端口以及未參與合并的各原始端口之間的簡化連接關(guān)系。

可編程邏輯器件布線裝置確定出等價端口組之后,可以將一個等價端口組采用一個替換端口來代替,也就是將一個等價端口組中的兩個或兩個以上的端口合并壓縮為一個替換端口。例如,在圖1當(dāng)中存在三個等價端口組,分別是{B1,B2,B3}、{C2,C3}以及{D2,D3},對于{B1,B2,B3}這個等價端口組,可編程邏輯器件布線裝置可以采用端口B*來代替;對于{C2,C3}和{D2,D3}則采用C*與端口D*來替代。B*、C*與D*分別是三個等價端口組的替代端口。

經(jīng)過合并壓縮之后,原始連接關(guān)系中的端口數(shù)目將會在一定程度上減少,例如,在圖1當(dāng)中,經(jīng)過合并之后,原本11個端口已經(jīng)被簡化為7個端口。合并后端口的數(shù)目等于參與合并的等價端口組的數(shù)目與未參加合并的端口數(shù)目之和。在圖1當(dāng)中,參與合并的等價端口組的數(shù)目為3,而未參與合并的端口包括端口A、C1、D1、E四個端口,所以,合并后的端口數(shù)目為3+4=7。端口數(shù)目減少了,因此原始連接關(guān)系也會發(fā)生相應(yīng)的變化,例如圖4示出的是對圖1中的原始連接關(guān)系進(jìn)行壓縮簡化后的簡化連接關(guān)系。相對于圖1的原始連接關(guān)系,圖4中的簡化連接關(guān)系已經(jīng)得到了很大程度的簡化,這種簡化不僅體現(xiàn)在主觀視覺上,而且在客觀上也可以得到驗(yàn)證:

EDA終端在布線的時候,搜索原始連接關(guān)系中的端口,并計算每一連接路徑所需的布線代價。基于圖1的原始連接關(guān)系,EDA終端要搜索10個端口(搜索的時候不包括起始端口),需要計算布線代價的次數(shù)為3+3*3+(1+2*2)+1,即18次(從目的端口的上級端口到目的端口之間只需要計算一次)。而根據(jù)圖4給出的簡化連接關(guān)系,可編程邏輯器件布線裝置只需要搜索7個端口,計算布線代價的次數(shù)已減少到6次。所以本實(shí)施例中的可編程邏輯器件布線裝置可以通過合并等價端口組簡化布線過程,降低搜索復(fù)雜度,節(jié)約了搜索時間與運(yùn)行內(nèi)存占用。

在本實(shí)施例中,為了便于后續(xù)搜索,因此,可編程邏輯器件布線裝置在篩選等價端口組時,將原始連接關(guān)系中與滿足上級端口相同且下級端口相同的端口歸納進(jìn)一個等價端口組。這樣的做法是為了保證在后續(xù)過程對端口數(shù)目達(dá)到最好的壓縮效果。而實(shí)際上,當(dāng)一份原始連接關(guān)系中包括多個等價端口時,可編程邏輯器件布線裝置可以僅將部分等價端口歸納為一個等價端口組。例如針對圖1中的B1,B2,B3,可編程邏輯器件布線裝置可以只將其中的兩個等價端口規(guī)劃到一個等價端口組中,對于另外一個則不加入等價端口組,也不參與后續(xù)合并?;蛘撸?dāng)一份原始關(guān)系中包括三個以上的等價端口時,可編程邏輯器件布線裝置可以將這些等價端口劃分為兩個及以上的等價端口組。例如,當(dāng)一份原始關(guān)系中有6個端口屬于等價端口,按照上述示例,可編程邏輯器件布線裝置可以將這6個等價端口劃分為一個等價端口組,但事實(shí)上,可編程邏輯器件布線裝置也還可以將這些等價端口劃分為兩個或三個等價端口組,各個等價端口組中端口的數(shù)目可以相同,也可以不同。這種情況下,雖然后續(xù)過程中可編程邏輯器件布線裝置只能將6個等價端口壓縮合并成兩個或三個替換端口,壓縮率沒有將一個6個等價端口歸為一個等價端口組的情況大,但是這相對于直接根據(jù)原始連接關(guān)系進(jìn)行搜索的情況,還是減少了搜索節(jié)點(diǎn)降低了搜索復(fù)雜度。

可編程邏輯器件布線裝置可以從原始連接關(guān)系中篩選出至少一個等價端口組。例如,針對圖1的原始連接關(guān)系,可編程邏輯器件布線裝置可以僅篩選出等價端口組{B1,B2,B3}和{C2,C3},對于D2和D3這兩個等價端口,則不規(guī)劃為一個等價端口組,也不進(jìn)行合并。在這種情況下,合并后的簡化連接關(guān)系中將還存在8個端口。這也在一定程度上減少了可編程邏輯器件布線裝置的搜索量和搜索復(fù)雜度。可以理解的是,在實(shí)際過程中,可編程邏輯器件布線裝置可以從原始連接關(guān)系中篩選出全部的等價端口組,以便對全部等價端口組進(jìn)行合并處理,最大程度的減少可編程邏輯器件布線裝置布線搜索時需要搜索的端口數(shù)目。

S208、可編程邏輯器件布線裝置簡化連接關(guān)系和原始布線代價確定起始端口與目的端口之間的實(shí)際布線路徑進(jìn)行布線。

可編程邏輯器件布線裝置根據(jù)簡化出來的壓縮關(guān)系和原始布線代價確定實(shí)際布線路徑可以大致分為兩個階段:第一階段是確定初始布線路徑;第二階段是根據(jù)確定出來的初始布線路徑確定出實(shí)際布線路徑。第一階段中確定出來的初始布線路徑中可能包括替換端口,基于前面的介紹,可以理解的是,替換端口實(shí)質(zhì)上是由兩個或兩個以上的端口構(gòu)成的,而在實(shí)際布線過程中,只能選擇這兩個或兩個以上端口中的一個進(jìn)行布線,因此還必須有第二階段,通過第二階段將原本的替換端口再替換為一個實(shí)際端口。下面結(jié)合圖5對確定起始端口與目的端口之間實(shí)際布線路徑的過程進(jìn)行介紹:

S502、可編程邏輯器件布線裝置根據(jù)原始布線代價確定簡化連接關(guān)系中具有直接連接關(guān)系的各端口之間的簡化布線代價。

在圖1中已經(jīng)示出了具有直接連接關(guān)系的任意兩個端口之間原始布線代價,根據(jù)原始布線代價就能夠計算出簡化連接關(guān)系中任意具有直接連接關(guān)系的兩個端口之間的簡化布線代價,因此簡化連接關(guān)系與原始連接關(guān)系的對應(yīng)關(guān)系已經(jīng)是確定。下面結(jié)合附圖對可編程邏輯器件布線裝置根據(jù)原始布線代價確定簡化布線代價的過程進(jìn)行簡單闡述,請參見圖6:

S602、可編程邏輯器件布線裝置確定簡化連接關(guān)系中任意兩個端口的簡化連接對應(yīng)于原始連接關(guān)系中的原始連接。

例如,圖4當(dāng)中端口A和替換端口B*之間的簡化連接實(shí)際對應(yīng)著圖1當(dāng)中端口A與端口B1,A與B2以及A與B3之間的原始連接。

S604、可編程邏輯器件布線裝置根據(jù)原始布線代價計算原始連接的平均布線代價。

在原始布線代價中,端口A與端口B1之間的布線代價為1.5,端口A與端口B2之間的布線代價為1.4,而端口A與端口B3之間的布線代價為1.6。由此可以計算獲得端口A與端口B1、B2以及B3之間的平均布線代價為(1.5+1.4+1.6)/3=1.5。

S606、可編程邏輯器件布線裝置將平均布線代價作為簡化連接的兩個端口間的簡化布線代價。

得到平均布線代價之后,可編程邏輯器件布線裝置就可以將平均布線代價作為簡化連接關(guān)系中端口A與端口B*之間的簡化布線代價了。根據(jù)上述方案,可以計算出圖4中其他端口之間的簡化布線代價,如圖4所示。

S504、可編程邏輯器件布線裝置從當(dāng)前布線端口的下一級各端口中選擇新的布線端口。

可編程邏輯器件布線裝置從起始端口開始確定當(dāng)前布線端口,根據(jù)簡化連接關(guān)系遍歷與當(dāng)前布線端口直接連接的下一級各端口到布線端口之間的簡化布線代價,基于低代價優(yōu)先原則選擇從下一級各端口中選擇出新的布線端口。

S506、判斷選擇出的布線端口是否為目的端口。

若是則執(zhí)行S508,若否,則繼續(xù)執(zhí)行S504,再次遍歷選擇,直至選擇出的布線端口為目的端口為止。

可以理解的是,S504是一個需要循環(huán)的過程,例如針對圖4中的簡化連接關(guān)系以及對應(yīng)的簡化布線代價,可編程邏輯器件布線裝置從端口A出發(fā),可以依次確定出B*端口、C1端口以及D1端口和E端口。

S508、可編程邏輯器件布線裝置基于選擇出的各布線端口規(guī)劃初始布線路徑。

根據(jù)確定出來的端口,可編程邏輯器件布線裝置可以規(guī)劃出初始布線路徑為:從起始端口A出發(fā),依次經(jīng)過端口B*,端口C1以及端口D1后到達(dá)目的端口E。

S510、可編程邏輯器件布線裝置將初始布線路徑中由替換端口形成的布線端口替換為對應(yīng)等價端口組中的一個端口并確定出實(shí)際布線路徑。

由于初始布線路徑中還包含替換端口,而替換端口并不是真實(shí)的端口,所以,為了得到實(shí)際布線路徑,可編程邏輯器件布線裝置還應(yīng)當(dāng)將替換端口替換為與替換端口對應(yīng)的實(shí)際端口中的一個。在實(shí)際替換過程了,可編程邏輯器件布線裝置應(yīng)當(dāng)考慮選擇哪一個實(shí)際端口代替替換端口能夠得到更小的布線代價,因此,在本實(shí)施例中,可編程邏輯器件布線裝置基于低代價優(yōu)先原則選用端口,如果與替換端口對應(yīng)的端口中布線代價最低的端口已經(jīng)被占用了,則可編程邏輯器件布線裝置選擇代價次低的端口代替替換端口。

可以理解的是,在S504中選擇端口的步驟中,當(dāng)需要在兩條或兩條簡化連接中選擇其中一條,而這兩條或兩條以上的簡化連接中存在不止一條簡化連接的簡化布線代價為最低值,例如,當(dāng)需要選擇從端口b1、b2以及端口b*之間選擇一個作為初始布線路徑中端口a的下級端口,端口a與端口b1之間的簡化布線代價等于端口a與端口b*之間的簡化布線代價2.0,且小于端口a與端口b2之間的簡化布線代價2.3。這時候,可以優(yōu)先選擇替換端口,因?yàn)樘鎿Q端口b*與端口a之間的布線代價是通過計算至少兩個原始布線代價的平均值得到的,例如,是計算端口a與端口b3以及端口a與端口b4之間原始布線代價的平均值得到的,因此,在替換端口對應(yīng)的原始端口中極有可能存在一個或多個端口與端口a之間的原始布線代價小于2.0,例如,端口b3與端口b4同端口a之間的原始布線代價分別為1.9和2.1,則如果選擇了替換端口b*,可以通過將替換端口替換為小于原始布線代價小于簡化布線代價的實(shí)際端口,從而減少實(shí)際布線路徑的布線代價。

最后,本實(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)場可編程門陣列)等。

本發(fā)明實(shí)施例提供的可編程邏輯器件布線方法,通過確定可編程邏輯器件中參與布線的起始端口與目的端口之間的原始連接關(guān)系和原始布線代價,確定出原始連接關(guān)系中的等價端口組,將等價端口組中的端口合并成一個替換端口,并確定出合并后的簡化連接關(guān)系,從而基于簡化連接關(guān)系和原始布線代價確定起始端口與目的端口之間的實(shí)際布線路徑進(jìn)行布線。在這種布線方案當(dāng)中,將兩個及兩個以上的上級端口相同且下級端口相同的端口合并為一個替換端口,并基于替換端口和原始端口形成簡化連接關(guān)系,從而減少了布線過程中需要搜索的端口數(shù)目和搜索次數(shù),從而降低了布線方案的空間復(fù)雜度和時間復(fù)雜度,降低了EDA終端在布線過程中的內(nèi)存開銷,節(jié)約了布線時間,提高了生產(chǎn)效率。

實(shí)施例二:

本實(shí)施例提供一種可編程邏輯器件布線裝置,用于執(zhí)行實(shí)施例一提供的可編程邏輯器件布線方法,請參見圖7中給出的可編程邏輯器件布線裝置的結(jié)構(gòu)示意圖:

可編程邏輯器件布線裝置70包括原始確定模塊702、等價篩選模塊704、關(guān)系簡化模塊706以及實(shí)際布線模塊708,原始確定模塊702用于確定可編程邏輯器件中參與布線的起始端口與目的端口之間的原始連接關(guān)系和原始布線代價;等價篩選模塊704用于基于原始連接關(guān)系篩選出可編程邏輯器件中的至少一個等價端口組;關(guān)系簡化模塊706用于將等價端口組中的端口進(jìn)行合并后形成替換端口,并確定各替換端口以及未參與合并的各原始端口之間的簡化連接關(guān)系;實(shí)際布線模塊708用于基于簡化連接關(guān)系和原始布線代價確定起始端口與目的端口之間的實(shí)際布線路徑進(jìn)行布線。

如圖1所示,端口A為一次布線的起始端口,而端口E為布線的目的端口,原始確定模塊702需要先根據(jù)實(shí)際情況確定出從起始端口到目的端口之間連接關(guān)系,由于在后續(xù)的過程中,可編程邏輯器件布線裝置70還會對這些連接關(guān)系進(jìn)行處理,因此,在本實(shí)施例中,將起始端口與目的端口之間實(shí)際可以存在的連接關(guān)系稱為原始連接關(guān)系。如圖1中各個端口之間的連接關(guān)系就是原始連接關(guān)系。在圖1中,從起始端口A到目的端口E之間,需要經(jīng)歷三組中間端口。由于三組中間端口中每一組都不止一個端口,所以這三組中間端口為從起始端口到目的端口之間提供了多條連接路徑。而這多條連接路徑的布線代價是不相同,布線代價值的大小會影響到可編程邏輯器件布線裝置70對可編程邏輯器件的布線時間、布線內(nèi)存消耗以及可編程邏輯器件最終的布線質(zhì)量。為了在后續(xù)選擇出最佳的連接路徑作為實(shí)際布線路徑進(jìn)行布線,也就是選擇出布線代價最合適的連接路徑進(jìn)行布線,原始確定模塊702還需要確定出原始連接關(guān)系中的原始布線代價。

本實(shí)施例中等價篩選模塊704所篩選的等價端口組是指兩個或兩個以上的端口具有相同的上級端口與相同的下級端口,則這些端口的集合可被稱之為等價端口組。下面對本實(shí)施例中上級端口與下級端口的概念進(jìn)行說明:假定從起始端口向目的端口傳輸數(shù)據(jù),則針對某一個端口來說,先于該端口接收到數(shù)據(jù),并將接收到的數(shù)據(jù)傳輸給該端口的就是其上級端口;對應(yīng)的,該端口傳輸數(shù)據(jù)的對象就是其下級端口。當(dāng)然,本領(lǐng)域技術(shù)人員應(yīng)當(dāng)明白的是,上述解釋是基于從起始端口向目的端口傳輸數(shù)據(jù)而言,若是從目的端口向起始端口傳輸數(shù)據(jù),則情況相反。如圖3所示,起始端口30與第三端口33之間間隔有第一端口31和第二端口32。而第三端口33與目的端口35之間間隔有第四端口34。根據(jù)上述定義,我們可以確定第二端口32為第三端口33的上級端口,而第四端口34為第三端口33的下級端口。而對于第二端口32而言,第三端口33則是它的下級端口,第一端口31是其上級端口。值得注意的是,兩個端口等價必須同時滿足上級端口相同與下級端口相同這兩個條件,而且“上級端口相同”不是指兩個或多個端口之間存在相同的上級端口,而是指兩個或多個端口之間擁有相同數(shù)目的上級端口,而且任意一個端口所擁有的所有上級端口都能在另外端口的上級端口中找到。相應(yīng)的,“下級端口相同”指的是兩個或多個端口之間擁有下級端口的數(shù)目相同,而且任意一個端口的所有擁有的下級端口都能在其他端口的下級端口中找到。在圖1給出的原始連接關(guān)系中,B1,B2,B3這三個端口,上級端口都是起始端口A,而下級端口都包括且僅限于C1,C2,C3這三個端口。所以等價篩選模塊704可以確定B1,B2,B3這三個端口互為等價端口,端口B1,B2,B3的集合也可以稱為一個等價端口組。

等價篩選模塊704確定出等價端口組之后,可以將一個等價端口組采用一個替換端口來代替,也就是將一個等價端口組中的兩個或兩個以上的端口合并壓縮為一個替換端口。例如,在圖1當(dāng)中存在三個等價端口組,分別是{B1,B2,B3}、{C2,C3}以及{D2,D3},對于{B1,B2,B3}這個等價端口組,關(guān)系簡化模塊706可以采用端口B*來代替;對于{C2,C3}和{D2,D3}則采用C*與端口D*來替代。B*、C*與D*分別是三個等價端口組的替代端口。

經(jīng)過合并壓縮之后,原始連接關(guān)系中的端口數(shù)目將會在一定程度上減少,例如,在圖1當(dāng)中,經(jīng)過合并之后,原本11個端口已經(jīng)被簡化為7個端口。合并后端口的數(shù)目等于參與合并的等價端口組的數(shù)目與未參加合并的端口數(shù)目之和。在圖1當(dāng)中,參與合并的等價端口組的數(shù)目為3,而未參與合并的端口包括端口A、C1、D1、E四個端口,所以,合并后的端口數(shù)目為3+4=7。端口數(shù)目減少了,因此原始連接關(guān)系也會發(fā)生相應(yīng)的變化,例如圖4示出的是對圖1中的原始連接關(guān)系進(jìn)行壓縮簡化后的簡化連接關(guān)系。相對于圖1的原始連接關(guān)系,圖4中的簡化連接關(guān)系已經(jīng)得到了很大程度的簡化,這種簡化不僅體現(xiàn)在主觀視覺上,而且在客觀上也可以得到驗(yàn)證:

EDA終端在布線的時候,搜索原始連接關(guān)系中的端口,并計算每一連接路徑所需的布線代價?;趫D1的原始連接關(guān)系,EDA終端要搜索10個端口(搜索的時候不包括起始端口),需要計算布線代價的次數(shù)為3+3*3+(1+2*2)+1,即18次(從目的端口的上級端口到目的端口之間只需要計算一次)。而根據(jù)圖4給出的簡化連接關(guān)系,關(guān)系簡化模塊706只需要搜索7個端口,計算布線代價的次數(shù)已減少到6次。所以本實(shí)施例中的關(guān)系簡化模塊706可以通過合并等價端口組簡化布線過程,降低搜索復(fù)雜度,節(jié)約了搜索時間與運(yùn)行內(nèi)存占用。

在本實(shí)施例中,為了便于后續(xù)搜索,因此,等價篩選模塊704在篩選等價端口組時,將原始連接關(guān)系中與滿足上級端口相同且下級端口相同的端口歸納進(jìn)一個等價端口組。這樣的做法是為了保證后續(xù)過程對端口數(shù)目達(dá)到最好的壓縮效果。而實(shí)際上,當(dāng)一份原始連接關(guān)系中包括多個等價端口時,等價篩選模塊704可以僅將部分等價端口歸納為一個等價端口組。例如針對圖1中的B1,B2,B3,等價篩選模塊704可以只將其中的而兩個等價端口規(guī)劃到一個等價端口組中,對于另外一個則不加入等價端口組,也不參與后續(xù)合并?;蛘撸?dāng)一份原始關(guān)系中包括三個以上的等價端口時,等價篩選模塊704可以將這些等價端口劃分為兩個及以上的等價端口組。例如,當(dāng)一份原始關(guān)系中有6個端口屬于等價端口,按照上述示例,等價篩選模塊704可以將這6個等價端口劃分為一個等價端口組,但事實(shí)上,等價篩選模塊704也還可以將這些等價端口劃分為兩個或三個等價端口組,各個等價端口組中端口的數(shù)目可以相同,也可以不同。這種情況下,雖然后續(xù)過程中關(guān)系簡化模塊706只能將6個等價端口壓縮合并成兩個或三個替換端口,壓縮率沒有將一個6個等價端口歸為一個等價端口組的情況大,但是這相對于直接根據(jù)原始連接關(guān)系進(jìn)行搜索的情況,還是減少了搜索節(jié)點(diǎn)降低了搜索復(fù)雜度。

等價篩選模塊704可以從原始連接關(guān)系中篩選出至少一個等價端口組。例如,針對圖1的原始連接關(guān)系,等價篩選模塊704可以僅篩選出等價端口組{B1,B2,B3}和{C2,C3},對于D2和D3這兩個等價端口,則不規(guī)劃為一個等價端口組,也不進(jìn)行合并。在這種情況下,合并后的簡化連接關(guān)系中將還存在8個端口。這也在一定程度上減少了實(shí)際布線模塊708的搜索量和搜索復(fù)雜度??梢岳斫獾氖牵趯?shí)際過程中,等價篩選模塊704可以從原始連接關(guān)系中篩選出全部的等價端口組,以便對全部等價端口組進(jìn)行合并處理,最大程度的減少實(shí)際布線模塊708布線搜索時需要搜索的端口數(shù)目。

實(shí)際布線模塊708根據(jù)簡化出來的壓縮關(guān)系和原始布線代價確定實(shí)際布線路徑可以大致分為兩個階段:第一階段是確定初始布線路徑;第二階段是根據(jù)確定出來的初始布線路徑確定出實(shí)際布線路徑。第一階段中確定出來的初始布線路徑中可能包括替換端口,基于前面的介紹,可以理解的是,替換端口實(shí)質(zhì)上是由兩個或兩個以上的端口構(gòu)成的,而在實(shí)際布線過程中,只能選擇這兩個或兩個以上端口中的一個進(jìn)行布線,因此還必須有第二階段,通過第二階段將原本的替換端口再替換為一個實(shí)際端口。

在圖1中已經(jīng)示出了具有直接連接關(guān)系的任意兩個端口之間原始布線代價,根據(jù)原始布線代價就能夠計算出簡化連接關(guān)系中任意具有直接連接關(guān)系的兩個端口之間的簡化布線代價,因此簡化連接關(guān)系與原始連接關(guān)系的對應(yīng)關(guān)系已經(jīng)是確定。例如,圖4當(dāng)中端口A和替換端口B*之間的簡化連接實(shí)際對應(yīng)著圖1當(dāng)中端口A與端口B1,A與B2以及A與B3之間的原始連接。實(shí)際布線模塊708可以根據(jù)原始布線代價計算原始連接的平均布線代價。

在原始布線代價中,端口A與端口B1之間的布線代價為1.5,端口A與端口B2之間的布線代價為1.4,而端口A與端口B3之間的布線代價為1.6。由此可以計算獲得端口A與端口B1、B2以及B3之間的平均布線代價為(1.5+1.4+1.6)/3=1.5。

得到平均布線代價之后,實(shí)際布線模塊708就可以將平均布線代價作為簡化連接關(guān)系中端口A與端口B*之間的簡化布線代價了。根據(jù)上述方案,可以計算出圖4中其他端口之間的簡化布線代價,如圖4所示。

實(shí)際布線模塊708從起始端口開始確定當(dāng)前布線端口,根據(jù)簡化連接關(guān)系遍歷與當(dāng)前布線端口直接連接的下一級各端口到布線端口之間的簡化布線代價,基于低代價優(yōu)先原則選擇從下一級各端口中選擇出新的布線端口并再次遍歷選擇,直至選擇出的布線端口為目的端口為止。可以理解的是,該過程是一個需要循環(huán)的過程,例如針對圖4中的簡化連接關(guān)系以及對應(yīng)的簡化布線代價,實(shí)際布線模塊708從端口A出發(fā),可以依次確定出B*端口、C1端口以及D1端口和E端口。根據(jù)確定出來的端口,實(shí)際布線模塊708可以規(guī)劃出初始布線路徑為:從起始端口A出發(fā),依次經(jīng)過端口B*,端口C1以及端口D1后到達(dá)目的端口E。

由于初始布線路徑中還包含替換端口,而替換端口并不是真實(shí)的端口,所以,為了得到實(shí)際布線路徑,實(shí)際布線模塊708還應(yīng)當(dāng)將替換端口替換為與替換端口對應(yīng)的實(shí)際端口中的一個。在實(shí)際替換過程了,實(shí)際布線模塊708應(yīng)當(dāng)考慮選擇哪一個實(shí)際端口代替替換端口能夠得到更小的布線代價,因此,在本實(shí)施例中,實(shí)際布線模塊708基于低代價優(yōu)先原則選用端口,如果與替換端口對應(yīng)的端口中布線代價最低的端口已經(jīng)被占用了,則實(shí)際布線模塊708選擇代價次低的端口代替替換端口。

可以理解的是,在實(shí)際布線模塊708選擇端口的步驟中,當(dāng)需要在兩條或兩條簡化連接中選擇其中一條,而這兩條或兩條以上的簡化連接中存在不止一條簡化連接的簡化布線代價為最低值,例如,當(dāng)需要選擇從端口b1、b2以及端口b*之間選擇一個作為初始布線路徑中端口a的下級端口,端口a與端口b1之間的簡化布線代價等于端口a與端口b*之間的簡化布線代價2.0,且小于端口a與端口b2之間的簡化布線代價2.3。這時候,可以優(yōu)先選擇替換端口,因?yàn)樘鎿Q端口b*與端口a之間的布線代價是通過計算至少兩個原始布線代價的平均值得到的,例如,是計算端口a與端口b3以及端口a與端口b4之間原始布線代價的平均值得到的,因此,在替換端口對應(yīng)的原始端口中極有可能存在一個或多個端口與端口a之間的原始布線代價小于2.0,例如,端口b3與端口b4同端口a之間的原始布線代價分別為1.9和2.1,則如果選擇了替換端口b*,可以通過將替換端口替換為小于原始布線代價小于簡化布線代價的實(shí)際端口,從而減少實(shí)際布線路徑的布線代價。

最后,本實(shí)施例中提供的可編程邏輯器件布線裝置70可以針對各種類型的可編程邏輯器件,包括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)場可編程門陣列)等。

可編程邏輯器件布線裝置70可以部署在終端上,例如處理能力較為強(qiáng)大的臺式電腦與筆記本電腦等。下面結(jié)合圖8提供的終端對實(shí)現(xiàn)可編程邏輯器件布線裝置的硬件結(jié)構(gòu)進(jìn)行介紹:

終端8包括處理器81、存儲單元82以及交互單元83等,其中可編程邏輯器件布線裝置的原始確定模塊、等價篩選模塊、關(guān)系簡化模塊以及實(shí)際布線模塊均可以由處理器81來實(shí)現(xiàn)。而存儲單元82中則可以存儲供處理器81運(yùn)行以實(shí)現(xiàn)可編程邏輯器件布線方法的一系列指令,交互單元83上可以向設(shè)計人員顯示布線過程中的信息,并接收設(shè)計人員的指令并交由處理器81執(zhí)行。

本發(fā)明實(shí)施例提供的可編程邏輯器件布線裝置,通過確定可編程邏輯器件中參與布線的起始端口與目的端口之間的原始連接關(guān)系和原始布線代價,確定出原始連接關(guān)系中的等價端口組,將等價端口組中的端口合并成一個替換端口,并確定出合并后的簡化連接關(guān)系,從而基于簡化連接關(guān)系和原始布線代價確定起始端口與目的端口之間的實(shí)際布線路徑進(jìn)行布線。在這種布線方案當(dāng)中,將兩個及兩個以上的上級端口相同且下級端口相同的端口合并為一個替換端口,并基于替換端口和原始端口形成簡化連接關(guān)系,從而減少了布線過程中需要搜索的端口數(shù)目和搜索次數(shù),從而降低了布線方案的空間復(fù)雜度和時間復(fù)雜度,降低了EDA終端在布線過程中的內(nèi)存開銷,節(jié)約了布線時間,提高了生產(chǎn)效率。

顯然,本領(lǐng)域的技術(shù)人員應(yīng)該明白,上述本發(fā)明實(shí)施例的各模塊或各步驟可以用通用的計算裝置來實(shí)現(xiàn),它們可以集中在單個的計算裝置上,或者分布在多個計算裝置所組成的網(wǎng)絡(luò)上,可選地,它們可以用計算裝置可執(zhí)行的程序代碼來實(shí)現(xiàn),從而,可以將它們存儲在計算機(jī)存儲介質(zhì)(ROM/RAM、磁碟、光盤)中由計算裝置來執(zhí)行,并且在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟,或者將它們分別制作成各個集成電路模塊,或者將它們中的多個模塊或步驟制作成單個集成電路模塊來實(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ù)范圍。

當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1