本發(fā)明涉及集成電路
技術(shù)領(lǐng)域:
,尤其涉及一種基于多核處理器的現(xiàn)場可編程門陣列(FieldProgrammableGateArray,F(xiàn)PGA)芯片的并行布線方法。
背景技術(shù):
:現(xiàn)場可編程門陣列FPGA芯片是一種具有豐富硬件資源、強大并行處理能力和靈活可重配置能力的邏輯器件。這些特征使得FPGA在數(shù)據(jù)處理、通信、網(wǎng)絡(luò)等很多領(lǐng)域得到了越來越多的廣泛應(yīng)用。FPGA的軟件流程可以包括綜合處理、映射、布局和布線。現(xiàn)有技術(shù)的布線算法是基于單處理器單線程進(jìn)行的串行計算節(jié)點cost值的過程,即在一個有向圖中從一個源節(jié)點到目的節(jié)點的路徑搜索過程。節(jié)點cost值是指布線時使用節(jié)點的代價評估值,該代價評估值包括通過該節(jié)點的物理延時,當(dāng)前擁擠狀態(tài)、歷史擁擠狀態(tài),該節(jié)點所處線網(wǎng)的關(guān)鍵度等信息。然而,由于COST值涉及的因素較多,因此的計算量通常比較大。在現(xiàn)有的FPGA芯片的整個軟件流程中,布線的運行時間通常占用時間的比例往往在50%以上,也就是說,現(xiàn)有技術(shù)的布線運行時間較長。技術(shù)實現(xiàn)要素:本申請實施例提供了一種基于多核處理器的現(xiàn)場可編程門陣列芯片的并行布線方法。該方法流程可以分為主線程和至少一個子線程。該方法可以減少布線運行時間。第一方面,該方法可以包括:主線程對FPGA芯片的源節(jié)點進(jìn)行識別,獲取源節(jié)點關(guān)聯(lián)的第一候選節(jié)點;主線程根據(jù)第一候選節(jié)點的數(shù)量和多核處理器的核數(shù),確定子線程的數(shù)量,并啟動子線程。主線程向啟動后的子線程依次發(fā)送第一候選節(jié)點;主線程接收子線程根據(jù)第一候選節(jié)點并行計算出的相應(yīng)COST值。主線程對最低的COST值對應(yīng)的第一候選節(jié)點進(jìn)行識別,并根據(jù)識別結(jié)果,對FPGA芯片進(jìn)行布線。在一個可選的實現(xiàn)中,主線程對FPGA芯片進(jìn)行識別,獲取源節(jié)點關(guān)聯(lián)的至少一個第一候選節(jié)點之后,主線程將第一候選節(jié)點存儲在第一隊列中。主線程向子線程依次發(fā)送第一候選節(jié)點,具體包括:主線程接收子線程發(fā)送的布線請求;主線程根據(jù)布線請求,判斷第一隊列是否為空;若否,則主線程向空閑的子線程發(fā)送所述第一候選節(jié)點;若是,則主線程向所有的子線程發(fā)送結(jié)束線程信號,以通知布線結(jié)束。在一個可選的實現(xiàn)中,主線程接收至少一個子線程發(fā)送的布線請求之后,主線程向子線程發(fā)送請求響應(yīng)信號,以指示收到布線請求。在一個可選的實現(xiàn)中,當(dāng)主線程識別出第一候選節(jié)點不是目的節(jié)點時,主線程對第一候選節(jié)點進(jìn)行識別,獲取第一候選節(jié)點的第二候選節(jié)點,以接收子線程發(fā)送的第二候選節(jié)點的COST值。在一個可選的實現(xiàn)中,主線程接收子線程根據(jù)第一候選節(jié)點并行計算出的COST值之后,主線程將第一候選節(jié)點以及第一候選節(jié)點對應(yīng)的COST值存儲在第二隊列中。在一個可選的實現(xiàn)中,主線程對最低的COST值對應(yīng)的第一候選節(jié)點進(jìn)行識別具體包括:當(dāng)主線程確定最低的COST值對應(yīng)的第一候選節(jié)點是目的節(jié)點主線程對FPGA芯片布線完成;當(dāng)主線程確定最低的COST值對應(yīng)的第一候選節(jié)點不是目的節(jié)點時,主線程獲取第一候選節(jié)點驅(qū)動的第二候選節(jié)點,以用于識別出最低的COST值對應(yīng)的第二候選節(jié)點是目的節(jié)點,完成布線。本發(fā)明實施例提供的一種基于多核處理器的FPGA的并行布線方法流程可以分為主線程和至少一個子線程。主線程對FPGA芯片的源節(jié)點進(jìn)行識別,獲取源節(jié)點關(guān)聯(lián)的第一候選節(jié)點,之后主線程根據(jù)第一候選節(jié)點的數(shù)量,啟動與數(shù)量相同的子線程。主線程通過向子線程依次發(fā)送第一候選節(jié)點,接收子線程根據(jù)第一候選節(jié)點并行計算出的相應(yīng)COST值。主線程對最低的COST值對應(yīng)的第一候選節(jié)點進(jìn)行識別,根據(jù)識別結(jié)果,對FPGA芯片進(jìn)行布線。該方法通過子線程對候選節(jié)點COST值的并行計算,有效的降低了布線的運行時間。附圖說明為了更清楚地說明本發(fā)明實施例的技術(shù)方案,下面將對實施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其它的附圖。圖1A為現(xiàn)有技術(shù)的布線資源結(jié)構(gòu)示意圖;圖1B為圖1A所示的布線資源的一種結(jié)構(gòu)示意圖;圖2為本發(fā)明實施例提供的基于多核處理器的FPGA芯片的并行布線方法流程圖;圖3A位本發(fā)明實施例提供的主線程方法流程示意圖;圖3B位本發(fā)明實施例提供的子線程方法流程示意圖。具體實施方式下面通過附圖和實施例,對本發(fā)明的技術(shù)方案做進(jìn)一步的詳細(xì)描述。本發(fā)明下述實施例中的方法是基于多核處理器的FPGA芯片實現(xiàn)的。在FPGA芯片的布線資源圖中,布線資源通常都是以多路選擇器(mux)的形式存在于硬件中,通常每個mux都會驅(qū)動很多個mux。在圖1A所示的布線資源中每個mux都是一個節(jié)點。其中以4選1的多路選擇器mux為例,該布線資源可以包括源節(jié)點muxA0(即開始節(jié)點)、中間節(jié)點muxB0-muxB2和目的節(jié)點muxC0(即結(jié)束節(jié)點),源節(jié)點muxA0可以驅(qū)動中間節(jié)點muxB0-muxB2,中間節(jié)點muxB1-muxB2可以驅(qū)動目的節(jié)點muxC0??梢岳斫獾氖?,該布線資源還可以包括源節(jié)點muxA1,源節(jié)點muxA1可以驅(qū)動中間節(jié)點muxB0-muxB2中的至少一個節(jié)點,或驅(qū)動中間節(jié)點muxB1-muxB2中的至少一個節(jié)點和/或目的節(jié)點muxC0。圖1B為圖1A所示的布線資源的一種結(jié)構(gòu)示意圖。A節(jié)點為源節(jié)點,B節(jié)點、C節(jié)點和D節(jié)點為中間節(jié)點,E節(jié)點為目的節(jié)點。本發(fā)明實施例通過多核處理器將布線過程分為主線程和子線程,由此多個子線程來并行計算節(jié)點的COST值。其中,依據(jù)實際技術(shù)情況,子線程的個數(shù)可以根據(jù)多核處理器的核數(shù)而定,也可以根據(jù)源節(jié)點驅(qū)動的節(jié)點個數(shù)而定。下面將對多核處理器的布線過程進(jìn)行詳細(xì)描述。圖2為本發(fā)明實施例提供的基于多核處理器的FPGA芯片的并行布線方法流程圖。如圖2所示,該方法可以包括如下步驟:步驟210、主線程啟動子線程。主線程是啟動FPGA芯片時,自啟動的線程,主線程可以獲取初始化信息。該初始化信息可以包括布線任務(wù)的源節(jié)點和目的節(jié)點??蛇x地,在主線程啟動子線程之前,主線程根據(jù)FPGA芯片的源節(jié)點,獲取源節(jié)點關(guān)聯(lián)的第一候選節(jié)點。主線程掃描FPGA芯片,鎖定FPGA芯片的源節(jié)點,并對源節(jié)點進(jìn)行識別,獲取源節(jié)點關(guān)聯(lián)的至少一個第一候選節(jié)點。主線程根據(jù)第一候選節(jié)點的數(shù)量和多核處理器的核數(shù),確定子線程的數(shù)量,如多核處理器為4核處理器,源節(jié)點關(guān)聯(lián)8個候選節(jié)點,那么主線程只能啟動3個子線程(主線程本身占用一個核)。由于計算節(jié)點COST值的計算量較大,計算時間較長,故用第一候選節(jié)點的數(shù)量確定子線程的數(shù)量,可以保證每個第一候選節(jié)點的COST值均由獨立的子線程完成或由空閑的子線程完成。回到步驟210,主線程可以通過向子線程發(fā)送觸發(fā)信號(如高低電平),以啟動子線程,使其進(jìn)入工作狀態(tài)。步驟220、主線程將獲取的第一候選節(jié)點存儲在第一隊列中。步驟230、子線程向主線程發(fā)送布線請求。步驟240、主線程接收子線程發(fā)送的布線請求。若主線程未接到子線程發(fā)送的布線請求,則主線程將繼續(xù)等待子線程發(fā)送的布線請求??蛇x地,在主線程接收到子線程發(fā)送的布線請求后,向子線程發(fā)送確認(rèn)接收的響應(yīng)信號,以指示主線程接收到該布線請求。步驟250、主線程判斷第一隊列是否為空隊列后,向子線程發(fā)送第一信號。當(dāng)?shù)谝魂犃胁皇强贞犃袝r,主線程向子線程發(fā)送第一信號,第一信號可以包括從第一隊列中取出的一個第一候選節(jié)點后,執(zhí)行步驟240,主線程再次接收子線程發(fā)送的布線請求。可選地,子線程根據(jù)接收的第一候選節(jié)點,計算該節(jié)點的COST值。子線程向主線程發(fā)送第二信號,第二信號可以包括該節(jié)點的COST值。當(dāng)?shù)谝魂犃惺强贞犃袝r,主線程向子線程發(fā)送第一信號,第一信號是結(jié)束線程信號,以通知布線結(jié)束。此時子線程將第一候選節(jié)點及其計算出的相應(yīng)COST值發(fā)送至主線程。步驟260、主線程將接收的第一候選節(jié)點及其相應(yīng)的COST值存儲在第二隊列中。步驟270、當(dāng)主線程確定第一候選節(jié)點是目的節(jié)點時,主線程根據(jù)COST值,對FPGA芯片進(jìn)行布線。若該第一候選節(jié)點是目的節(jié)點,則布線成功,即主線程已找到布線時間最少的布線方案。若該第一候選節(jié)點不是目的節(jié)點,則主線程從此時的第二隊列中取出最低的COST值對應(yīng)的第一候選節(jié)點,主線程將該第一候選節(jié)點作為源節(jié)點:主線程對該源節(jié)點進(jìn)行識別,獲取源節(jié)點關(guān)聯(lián)的第二候選節(jié)點,返回執(zhí)行步驟230-步驟270,直到主線程從第二隊列中取出最低的COST值對應(yīng)的候選節(jié)點為目的節(jié)點為止。需要說明的是,主線程從第一隊列或第二隊列中取出候選節(jié)點后,第一隊列或第二隊列中將不存在該候選節(jié)點。在一個例子中,結(jié)合圖1B,在圖3A所示的主線程方法流程和圖3B所示的子線程方法流程中,主線程掃描FPGA芯片,鎖定FPGA芯片的源節(jié)點A,并對源節(jié)點A進(jìn)行識別,獲取源節(jié)點A關(guān)聯(lián)的第一候選節(jié)點B、C和D,并將獲取的第一候選節(jié)點B、C和D放入如表1所示的第一隊列中。表1第一候選節(jié)點BCD如表1所示,第一隊列中存儲主線程獲取的第一候選節(jié)點。啟動后的子線程向主線程發(fā)送布線請求,并等待主線程響應(yīng),直到子線程接收到主線程發(fā)送的響應(yīng)信號,才表明主線程接受了該請求。主線程識別第一隊列是否為空隊列,即是否存有第一候選節(jié)點:當(dāng)?shù)谝魂犃胁皇强贞犃袝r,則主線程從第一隊列中依次取出一個第一候選節(jié)點發(fā)送至子線程,以使子線程根據(jù)第一候選節(jié)點計算出相應(yīng)的COST值,之后再次等待子線程的請求。當(dāng)?shù)谝魂犃惺强贞犃袝r,則主線程向子線程發(fā)送結(jié)束線程信號,以通知布線結(jié)束,此時子線程將第一候選節(jié)點及其計算出的相應(yīng)COST值發(fā)送至主線程。主線程將接收的第一候選節(jié)點及其相應(yīng)的COST值存儲在第二隊列中,如表2所示的第二隊列可以包括如下內(nèi)容:表2第一候選節(jié)點COST值BxCyDz在表2中,候選節(jié)點B對應(yīng)的COST值為x;候選節(jié)點C對應(yīng)的COST值為y;候選節(jié)點D對應(yīng)的COST值為z。(1)主線程從第二隊列中取出最低的COST值對應(yīng)的第一候選節(jié)點C,并識別出該第一候選節(jié)點C不是目的節(jié)點,則主線程獲取當(dāng)前第一候選節(jié)點C驅(qū)動的全部節(jié)點D和E,作為第二候選節(jié)點存儲在第一隊列中,再次執(zhí)行上述步驟,直到在第二隊列中查詢到目的節(jié)點E為止。(2)主線程從第二隊列中取出最低的COST值對應(yīng)的第一候選節(jié)點B,并識別出該第一候選節(jié)點B并不是目的節(jié)點E,且當(dāng)前第一候選節(jié)點B沒有驅(qū)動的第二候選節(jié)點,則主線程將再次從此時的第二隊列中取出最低的COST值對應(yīng)的第一候選節(jié)點C,回到(1)。本發(fā)明實施了提供的一種基于多核處理器的FPGA的并行布線方法流程可以分為主線程和至少一個子線程。主線程啟動子線程后,對FPGA芯片的源節(jié)點進(jìn)行識別,獲取源節(jié)點關(guān)聯(lián)的第一候選節(jié)點,之后主線程通過向子線程依次發(fā)送第一候選節(jié)點,接收子線程根據(jù)第一候選節(jié)點并行計算出的相應(yīng)COST值。當(dāng)主線程識別出第一候選節(jié)點是結(jié)束節(jié)點時,主線程根據(jù)COST的最小值,對FPGA芯片進(jìn)行布線。該方法通過子線程對候選節(jié)點COST值的并行計算,有效的降低了布線的運行時間。結(jié)合本文中所公開的實施例描述的方法或算法的步驟可以用硬件、處理器執(zhí)行的軟件模塊,或者二者的結(jié)合來實施。軟件指令可以由相應(yīng)的軟件模塊組成,軟件模塊可以被存放于隨機存取存儲器、閃存、只讀存儲器、可擦除可編程只讀寄存器(英文:erasableprogrammableread-onlymemory,EPROM)存儲器、電可擦可編程只讀存儲器存儲器(英文:electricallyerasableprogrammableread-onlymemory,EEPROM)、硬盤、只讀光盤(英文:compactdiscread-onlymemory,CD-ROM)或者本領(lǐng)域熟知的任何其它形式的存儲介質(zhì)中。一種示例性的存儲介質(zhì)耦合至處理器,從而使處理器能夠從該存儲介質(zhì)讀取信息,且可向該存儲介質(zhì)寫入信息。當(dāng)然,存儲介質(zhì)也可以是處理器的組成部分。處理器和存儲介質(zhì)可以位于ASIC中。另外,該ASIC可以位于用戶設(shè)備中。當(dāng)然,處理器和存儲介質(zhì)也可以作為分立組件存在于用戶設(shè)備中。本領(lǐng)域技術(shù)人員應(yīng)該可以意識到,在上述一個或多個示例中,本發(fā)明所描述的功能可以用硬件、軟件、固件或它們的任意組合來實現(xiàn)。當(dāng)使用軟件實現(xiàn)時,可以將這些功能存儲在計算機可讀介質(zhì)中或者作為計算機可讀介質(zhì)上的一個或多個指令或代碼進(jìn)行傳輸。以上所述的具體實施方式,對本發(fā)明的目的、技術(shù)方案和有益效果進(jìn)行了進(jìn)一步詳細(xì)說明,所應(yīng)理解的是,以上所述僅為本發(fā)明的具體實施方式而已,并不用于限定本發(fā)明的保護(hù)范圍,凡在本發(fā)明的技術(shù)方案的基礎(chǔ)之上,所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包括在本發(fā)明的保護(hù)范圍之內(nèi)。當(dāng)前第1頁1 2 3