專利名稱:用于對(duì)局部重配置模塊進(jìn)行布局和布線的方法和設(shè)備的制作方法
技術(shù)領(lǐng)域:
本發(fā)明的實(shí)施例涉及用于在目標(biāo)器件上設(shè)計(jì)系統(tǒng)的工具。更具體地,本發(fā)明的實(shí)施例涉及一種用于在目標(biāo)器件上對(duì)局部重配置(PR)模塊進(jìn)行布局和布線的方法和設(shè)備。
背景技術(shù):
利用諸如現(xiàn)場(chǎng)可編程門(mén)陣列(FPGA)、結(jié)構(gòu)化專用集成電路(ASIC)和專用集成電路的目標(biāo)器件用于實(shí)現(xiàn)可包括百萬(wàn)個(gè)門(mén)和兆位的嵌入式存儲(chǔ)器的大系統(tǒng)。大系統(tǒng)的復(fù)雜性通常需要利用電子設(shè)計(jì)自動(dòng)化(EDA)工具來(lái)創(chuàng)建和優(yōu)化物理目標(biāo)器件上的系統(tǒng)設(shè)計(jì)。在 由計(jì)算機(jī)輔助設(shè)計(jì)(CAD)中的EDA工具執(zhí)行的過(guò)程中,編譯流程是系統(tǒng)的硬件描述語(yǔ)言(HDL)創(chuàng)建和系統(tǒng)在目標(biāo)器件上的綜合、布局和布線。局部重配置(PR)涉及在編譯期間在可編程目標(biāo)器件上設(shè)計(jì)PR模塊的多個(gè)實(shí)例。PR模塊的每個(gè)實(shí)例表示對(duì)于該P(yáng)R模塊可實(shí)現(xiàn)的不同電路描述。所選PR模塊可從第一實(shí)例被重配置為第二實(shí)例,而該可編程目標(biāo)器件上的其他PR模塊和靜態(tài)模塊仍保持有效運(yùn)行。PR允許系統(tǒng)的一部分由僅表示該目標(biāo)器件的一部分的、EDA工具創(chuàng)建的編程文件來(lái)重配置,該編程文件與表示整個(gè)可編程目標(biāo)器件的典型的編程文件不同。PR還允許在無(wú)需使用于重編程的可編程目標(biāo)器件斷電的情況下重新配置系統(tǒng)。PR可被用于功能升級(jí)或改變、錯(cuò)誤修復(fù)或器件上的需要重編程的任何其他操作,而對(duì)于該器件的不受影響部分則無(wú)需花費(fèi)停機(jī)時(shí)間。
發(fā)明內(nèi)容
公開(kāi)了一種用于在目標(biāo)器件上對(duì)局部重配置(PR)模塊進(jìn)行布局和布線的方法和設(shè)備。根據(jù)本發(fā)明第一實(shí)施例,該目標(biāo)器件上的資源被指定為供系統(tǒng)中的特定PR模塊使用的候選者。根據(jù)該實(shí)施例的方面,在對(duì)PR模塊的實(shí)例進(jìn)行布局和布線之前對(duì)靜態(tài)邏輯模塊進(jìn)行布局和布線,而且靜態(tài)邏輯模塊未使用的資源被指定為供PR模塊使用的候選者。在該目標(biāo)器件上使用所指定資源對(duì)PR模塊的實(shí)例進(jìn)行并行布局和布線。根據(jù)本發(fā)明實(shí)施例,在該目標(biāo)器件上對(duì)PR模塊進(jìn)行并行布局和布線可涉及在時(shí)間上同時(shí)對(duì)PR模塊進(jìn)行布局和布線。根據(jù)本發(fā)明第二實(shí)施例,對(duì)靜態(tài)邏輯模塊和PR模塊執(zhí)行初始布局和布線,以發(fā)現(xiàn)將由模塊使用的資源的候選集合。該初始布局和布線用目標(biāo)器件上的資源自由地適配該模塊,而對(duì)使用哪些資源不加限制。識(shí)別由于被選擇以由多于一個(gè)模塊使用而導(dǎo)致沖突的資源,并將其仲裁給對(duì)于該資源產(chǎn)生競(jìng)爭(zhēng)的靜態(tài)邏輯模塊和PR模塊。初始適配未使用的資源被指定給有沖突的靜態(tài)邏輯模塊和PR模塊。用所仲裁和所指定的資源對(duì)有沖突的靜態(tài)邏輯模塊和PR模塊執(zhí)行隨后的布局和布線(重新適配)。根據(jù)本發(fā)明第三實(shí)施例,對(duì)靜態(tài)邏輯模塊和PR模塊執(zhí)行初始適配。該初始適配使用目標(biāo)器件上的資源自由地對(duì)該靜態(tài)邏輯模塊和該P(yáng)R模塊進(jìn)行布局和布線,而對(duì)于使用哪些資源不加限制。識(shí)別由多于一個(gè)模塊使用而導(dǎo)致沖突的資源。對(duì)有沖突的靜態(tài)邏輯模塊和PR模塊執(zhí)行一個(gè)或多個(gè)隨后的布局和布線(重新適配),直到?jīng)]有這樣的沖突存在。
通過(guò)示例描述本發(fā)明實(shí)施例的特征和優(yōu)點(diǎn),并且其并不旨在將本發(fā)明實(shí)施例的范圍限制在所示的特定實(shí)施例內(nèi)。
圖I是示出了根據(jù)本發(fā)明實(shí)施例的示例性局部重配置(PR)設(shè)計(jì)的圖。圖2是示出了根據(jù)本發(fā)明示例性實(shí)施例的用于使用靜態(tài)資源分配在目標(biāo)器件上設(shè)計(jì)具有PR模塊的系統(tǒng)的方法的流程圖。圖3示出了根據(jù)本發(fā)明實(shí)施例的用于靜態(tài)資源分配的設(shè)計(jì)的示例性布圖規(guī)劃。圖4是示出了使用圖3中所示方法的示例性編譯調(diào)度的表格。圖5是示出了根據(jù)本發(fā)明的示例性實(shí)施例的用于使用靜態(tài)資源分配和重新分配在目標(biāo)器件上設(shè)計(jì)具有PR模塊的系統(tǒng)的方法的流程圖。圖6是示出了使用圖5所示的方法的示例性編譯調(diào)度的表格。圖7示出了根據(jù)本發(fā)明實(shí)施例的用于靜態(tài)資源分配的設(shè)計(jì)的示例性修改后的布圖規(guī)劃。圖8是示出了根據(jù)本發(fā)明示例性實(shí)施例的用于使用自動(dòng)發(fā)現(xiàn)的靜態(tài)資源分配在目標(biāo)器件上設(shè)計(jì)具有PR模塊的系統(tǒng)的方法的流程圖。圖9是示出了使用圖8所示方法的示例性編譯調(diào)度的表格。圖10是示出了根據(jù)本發(fā)明示例性實(shí)施例的使用動(dòng)態(tài)資源分配在目標(biāo)器件上設(shè)計(jì)具有PR模塊的系統(tǒng)的方法的流程圖。圖IlA和圖IlB是示出了使用圖10所示方法的示例性編譯調(diào)度的表格。圖12示出了根據(jù)本發(fā)明實(shí)施例的實(shí)現(xiàn)系統(tǒng)設(shè)計(jì)者的計(jì)算機(jī)系統(tǒng)的框圖。圖13示出了根據(jù)本發(fā)明實(shí)施例的示例性目標(biāo)器件。
具體實(shí)施例方式在下面描述中,為了解釋說(shuō)明的目的,描述了具體術(shù)語(yǔ)來(lái)提供對(duì)本發(fā)明實(shí)施例的全面理解。本領(lǐng)域普通技術(shù)人員應(yīng)該理解,說(shuō)明書(shū)中的具體細(xì)節(jié)并不是實(shí)現(xiàn)本發(fā)明實(shí)施例所必須的。在其他實(shí)例中,以框圖形式示出了公知的電路、器件和程序以避免不必要地使本發(fā)明實(shí)施例難以理解。圖I是示出了根據(jù)本發(fā)明實(shí)施例的使用局部重配置(PR)的系統(tǒng)的示例性設(shè)計(jì)100的圖。設(shè)計(jì)100包括頂級(jí)模塊110,其實(shí)例化為5個(gè)較低級(jí)模塊Α-E。每個(gè)模塊包括多個(gè)以寄存器傳輸級(jí)描述的組件。模塊A、C和E和頂級(jí)模塊110是靜態(tài)邏輯模塊。根據(jù)本發(fā)明實(shí)施例,在靜態(tài)邏輯模塊被編程到目標(biāo)器件上后,其不發(fā)生改變。模塊B和D是PR模塊。PR模塊B具有4個(gè)可能實(shí)例,標(biāo)記為B1-B4。PR模塊D具有3個(gè)可能實(shí)例,標(biāo)記為D1-D3。根據(jù)本發(fā)明實(shí)施例,PR模塊包括多個(gè)可能實(shí)例,其中在PR模塊被編程到目標(biāo)器件上后,PR模塊的第一實(shí)例可以被改變?yōu)镻R模塊的第二實(shí)例。PR模塊的每個(gè)實(shí)例表示對(duì)于PR模式能夠?qū)崿F(xiàn)的不同寄存器傳輸級(jí)(RTL)。根據(jù)本發(fā)明實(shí)施例,PR模塊的每個(gè)實(shí)例包括一個(gè)或多個(gè)輸入端口和一個(gè)或多個(gè)輸出端口。每個(gè)輸入端口和輸出端口與目標(biāo)器件上的同一靜態(tài)邏輯聯(lián)接,使得PR模塊的邊界邏輯上一致。PR模塊的每個(gè)實(shí)例的輸入端口可由可配置隨機(jī)存取存儲(chǔ)器(CRAM)位編程以在PR模塊的邊界接收來(lái)自靜態(tài)邏輯的數(shù)據(jù)。類似地,PR模塊的每個(gè)實(shí)例的輸出端口可由CRAM位編程以在PR模塊的邊界傳送數(shù)據(jù)到靜態(tài)邏輯。應(yīng)該理解,PR模塊的邊界處的靜態(tài)邏輯可以用寄存器、查找表(LUT)、線或其他組件來(lái)實(shí)現(xiàn)。圖2是示出了根據(jù)本發(fā)明實(shí)施例的用于使用靜態(tài)資源分配在目標(biāo)器件上設(shè)計(jì)具有PR模塊的系統(tǒng)的方法的流程圖。目標(biāo)器件可以是現(xiàn)場(chǎng)可編程門(mén)陣列(FPGA)、專用集成電路(ASIC)、結(jié)構(gòu)化ASIC或其他可編程器件。根據(jù)一個(gè)實(shí)施例,圖2所示的過(guò)程可以由在計(jì)算機(jī)系統(tǒng)上實(shí)現(xiàn)的計(jì)算機(jī)輔助設(shè)計(jì)(CAD)/電子設(shè)計(jì)自動(dòng)化(EDA)工具來(lái)執(zhí)行。在201,生成硬件描述語(yǔ)言(HDL)設(shè)計(jì)定義來(lái)描述該系統(tǒng)。HDL的生成響應(yīng)于設(shè)計(jì)者提供的該系統(tǒng)的規(guī)格說(shuō)明。該規(guī)格說(shuō)明可以由設(shè)計(jì)者通過(guò)設(shè)計(jì)輸入工具來(lái)提供。該規(guī)格說(shuō)明可描述系統(tǒng)中的組件和互連。根據(jù)本發(fā)明實(shí)施例,設(shè)計(jì)者還提供將被實(shí)現(xiàn)為靜態(tài)邏輯模塊和PR模塊的規(guī)格說(shuō)明部分的標(biāo)識(shí)。在步驟202,綜合該系統(tǒng)。綜合包括生成將由目標(biāo)器件實(shí)現(xiàn)的系統(tǒng)的邏輯設(shè)計(jì)。根據(jù)本發(fā)明實(shí)施例,綜合生成系統(tǒng)的優(yōu)化邏輯表示,其包括來(lái)自HDL設(shè)計(jì)定義的靜態(tài)邏輯模塊和PR模塊。綜合還包括映射優(yōu)化邏輯設(shè)計(jì)。映射包括確定如何用該目標(biāo)器件上的具體·資源實(shí)現(xiàn)優(yōu)化邏輯表示中的邏輯門(mén)和邏輯元件。根據(jù)本發(fā)明實(shí)施例,從映射生成網(wǎng)表。該網(wǎng)表可以是從HDL生成的優(yōu)化技術(shù)映射網(wǎng)表。在203,生成布圖規(guī)劃用于系統(tǒng)設(shè)計(jì)。根據(jù)本發(fā)明實(shí)施例,布圖規(guī)劃在目標(biāo)器件上為在202生成的綜合邏輯指明物理位置(“布圖規(guī)劃區(qū)域”)。根據(jù)本發(fā)明實(shí)施例,目標(biāo)器件上的布圖規(guī)劃區(qū)域可被指定給從綜合生成的每個(gè)靜態(tài)模塊和PR模塊。圖3示出了圖I所示的設(shè)計(jì)100的示例性布圖規(guī)劃300。布圖規(guī)劃區(qū)域310、312、314和315被分別指定給靜態(tài)模塊A、C、E和頂級(jí)模塊。布圖規(guī)劃區(qū)域311被指定給PR模塊B,并因此隱含被指定給實(shí)例B1-B4。布圖規(guī)劃區(qū)域313被指定給PR模塊D,并因此隱含被指定給實(shí)例D1-D3。根據(jù)本發(fā)明實(shí)施例,布圖規(guī)劃區(qū)域可具有任意尺寸或形狀,并且無(wú)需是不間斷的。應(yīng)該理解,布圖規(guī)劃可以是由CAD/EDA工具響應(yīng)于設(shè)計(jì)者所提供的、關(guān)于指定模塊的布圖規(guī)劃區(qū)域的大小、形狀和/或位置的輸入而生成的。替代地,布圖規(guī)劃可以由CAD/EDA工具通過(guò)單獨(dú)分析綜合輸出網(wǎng)表而獨(dú)立于設(shè)計(jì)者所提供的任意輸入來(lái)生成?;貋?lái)參考圖2,在204,目標(biāo)器件上的布線資源被分配給靜態(tài)邏輯模塊和PR模塊。根據(jù)本發(fā)明實(shí)施例,指定給模塊的布圖規(guī)劃區(qū)域用于靜態(tài)資源分配。在該實(shí)施例中,允許模塊僅使用位于其指定布圖規(guī)劃區(qū)域內(nèi)的布線資源。通過(guò)將布線資源靜態(tài)地分配和指定給系統(tǒng)中的靜態(tài)模塊和PR模塊,可以在對(duì)靜態(tài)邏輯模塊進(jìn)行布線的過(guò)程中或者之后,以任意順序?qū)R模塊進(jìn)行布線。另外,可以并行執(zhí)行PR模塊的實(shí)例的布線??梢圆捎枚鄠€(gè)計(jì)算節(jié)點(diǎn)來(lái)方便并行編譯。根據(jù)本發(fā)明實(shí)施例,計(jì)算節(jié)點(diǎn)包括處理資源來(lái)執(zhí)行諸如布局和布線的編譯過(guò)程。計(jì)算節(jié)點(diǎn)可以由計(jì)算機(jī)系統(tǒng)中的處理器或處理器核來(lái)實(shí)現(xiàn)。在205,生成編譯調(diào)度。該編譯調(diào)度確定何時(shí)以及通過(guò)哪個(gè)計(jì)算節(jié)點(diǎn)編譯設(shè)計(jì)中的靜態(tài)邏輯模塊和PR模塊。所執(zhí)行的編譯可包括對(duì)靜態(tài)邏輯模塊和PR模塊的布局和布線。根據(jù)本發(fā)明實(shí)施例,調(diào)度編譯以使得采用最大數(shù)目的可用計(jì)算節(jié)點(diǎn)來(lái)并行執(zhí)行一樣多的編譯。根據(jù)本發(fā)明實(shí)施例,編譯調(diào)度對(duì)在第一編譯中、第一計(jì)算節(jié)點(diǎn)上的所有靜態(tài)邏輯模塊和每個(gè)PR模塊的第一實(shí)例的一起編譯進(jìn)行調(diào)度。隨后編譯調(diào)度對(duì)在第二編譯中、將在可用計(jì)算節(jié)點(diǎn)上并行編譯的每個(gè)PR模塊的剩余實(shí)例的編譯進(jìn)行調(diào)度。在同一編譯期間,不同PR模塊的實(shí)例可以由同一計(jì)算節(jié)點(diǎn)一起編譯。在同一編譯期間,同一PR模塊的實(shí)例可以不由同一計(jì)算節(jié)點(diǎn)一起編譯,因?yàn)槎鄠€(gè)這樣的模塊由于它們不是被同時(shí)編程到芯片,所以可利用相同資源。可以調(diào)度其他編譯來(lái)編譯尚未被編譯的PR模塊的實(shí)例。在替代實(shí)施例中,僅一個(gè)計(jì)算節(jié)點(diǎn)可用,且調(diào)度過(guò)程命令編譯在單個(gè)計(jì)算節(jié)點(diǎn)上順序地編譯。圖4是示出了用于圖I所示設(shè)計(jì)100的使用圖3所示方法的示例性編譯調(diào)度的表格。如圖4所示,在兩個(gè)編譯中,使用3個(gè)計(jì)算節(jié)點(diǎn)P 1-P3編譯設(shè)計(jì)100中的靜態(tài)邏輯模塊和PR模塊。在編譯I期間,第一計(jì)算節(jié)點(diǎn)Pl編譯頂級(jí)模塊(Top)、模塊A、B1、C、D1和E。在編譯2期間,第一計(jì)算節(jié)點(diǎn)Pl編譯模塊B2和D2,第二計(jì)算節(jié)點(diǎn)P2編譯模塊B3和D3,第三計(jì)算節(jié)點(diǎn)P3編譯模塊B4。
回來(lái)參考圖2,在206,對(duì)該系統(tǒng)進(jìn)行布局。根據(jù)本發(fā)明實(shí)施例,布局涉及將所映射的邏輯系統(tǒng)設(shè)計(jì)布局在目標(biāo)器件上指定給模塊的布圖規(guī)劃區(qū)域。布局根據(jù)技術(shù)映射網(wǎng)表而工作以產(chǎn)生每個(gè)功能塊的布局。根據(jù)本發(fā)明實(shí)施例,布局包括通過(guò)確定邏輯設(shè)計(jì)上的哪些資源將用于具體邏輯元件以及如在綜合期間所確定的那樣確定為實(shí)現(xiàn)該系統(tǒng)的其他功能塊,而將系統(tǒng)適配在目標(biāo)器件上。布局可包括涉及將邏輯元件分組到一起以形成在目標(biāo)器件上呈現(xiàn)的邏輯簇的聚集。根據(jù)本發(fā)明實(shí)施例,在布局的早期執(zhí)行聚集,并且聚集發(fā)生在布局準(zhǔn)備階段期間的綜合之后。在207,對(duì)所布局的設(shè)計(jì)進(jìn)行布線。根據(jù)本發(fā)明實(shí)施例,在204使用分配給模塊的布線資源來(lái)提供邏輯門(mén)、邏輯元件和靜態(tài)邏輯模塊和PR模塊中的其他組件之間的互連。也可在所布局的邏輯設(shè)計(jì)上執(zhí)行可布線性優(yōu)化。根據(jù)本發(fā)明實(shí)施例,可布線性優(yōu)化的目的是減小用于連接所布局的邏輯設(shè)計(jì)中的組件的接線的數(shù)量??刹季€性優(yōu)化可包括執(zhí)行扇出分害I]、邏輯復(fù)制、邏輯重接線或其他過(guò)程。應(yīng)該理解,這些過(guò)程中的一個(gè)或多個(gè)可以在所布局的邏輯設(shè)計(jì)上執(zhí)行。根據(jù)本發(fā)明實(shí)施例,在206和207描述的布線和布局過(guò)程根據(jù)在205生成的編譯調(diào)度來(lái)執(zhí)行。在該實(shí)施例中,計(jì)算節(jié)點(diǎn)用于執(zhí)行一個(gè)或多個(gè)編譯的處理過(guò)程和布局的實(shí)例。每個(gè)計(jì)算節(jié)點(diǎn)被指定給具體模塊以在特定編譯序號(hào)期間進(jìn)行布局和布線。通過(guò)利用多個(gè)計(jì)算節(jié)點(diǎn),可以對(duì)PR模塊的實(shí)例進(jìn)行并行布線。在208,執(zhí)行組裝過(guò)程。組裝過(guò)程涉及創(chuàng)建包括由所述編譯過(guò)程確定的信息的多個(gè)數(shù)據(jù)文件。數(shù)據(jù)文件可以是可用于編程整個(gè)目標(biāo)器件的位流,或者可用于僅編程目標(biāo)器件的具體部分的位流。根據(jù)本發(fā)明實(shí)施例,圖2中所示過(guò)程可以由在第一計(jì)算機(jī)系統(tǒng)上執(zhí)行的EDA工具執(zhí)行。所生成的數(shù)據(jù)文件可以被傳送到第二計(jì)算機(jī)系統(tǒng)以允許該系統(tǒng)的設(shè)計(jì)被進(jìn)一步處理。替代地,數(shù)據(jù)文件可被傳送到可用于根據(jù)系統(tǒng)設(shè)計(jì)編程目標(biāo)器件的第二計(jì)算機(jī)系統(tǒng)。應(yīng)該理解,系統(tǒng)的設(shè)計(jì)還可以以其他形式輸出,例如輸出到顯示裝置或其他媒介上。還可以用包括編程或初始化整個(gè)芯片的信息的數(shù)據(jù)文件來(lái)編程目標(biāo)器件,而且可以使用包括僅編程芯片的一部分的信息的其他數(shù)據(jù)文件來(lái)重新編程芯片的該部分。通過(guò)用數(shù)據(jù)文件編程該目標(biāo)器件,物理地變形了該目標(biāo)器件上的組件以實(shí)現(xiàn)該系統(tǒng)。圖5是示出了根據(jù)本發(fā)明實(shí)施例的用于使用靜態(tài)資源分配和重新分配在目標(biāo)器件上設(shè)計(jì)具有PR模塊的系統(tǒng)的方法的流程圖。在501,生成系統(tǒng)的HDL設(shè)計(jì)。在502,在該系統(tǒng)上執(zhí)行綜合。在503,生成系統(tǒng)的布圖規(guī)劃。在504,將布線資源分配給系統(tǒng)中的靜態(tài)邏輯模塊和PR模塊。根據(jù)本發(fā)明實(shí)施例,參考圖2描述的過(guò)程201-204可用于實(shí)現(xiàn)過(guò)程501-504。在505,生成編譯調(diào)度。該編譯調(diào)度確定何時(shí)以及通過(guò)哪個(gè)計(jì)算節(jié)點(diǎn)來(lái)編譯該設(shè)計(jì)中的靜態(tài)邏輯模塊和PR模塊。所執(zhí)行的編譯可包括對(duì)靜態(tài)邏輯模塊和PR模塊的布局和布線。根據(jù)本發(fā)明實(shí)施例,調(diào)度該編譯使得采用最大數(shù)目的可用計(jì)算節(jié)點(diǎn)來(lái)并行執(zhí)行一樣多的編譯。根據(jù)本發(fā)明實(shí)施例,編譯調(diào)度對(duì)在第一編譯中、第一計(jì)算節(jié)點(diǎn)上的所有靜態(tài)邏輯模塊的一起編譯進(jìn)行調(diào)度。隨后編譯調(diào)度對(duì)在第二編譯中、將在可用計(jì)算節(jié)點(diǎn)上并行編譯的每個(gè)PR模塊的實(shí)例的編譯進(jìn)行調(diào)度。在同一編譯期間,不同PR模塊的實(shí)例可以由同一計(jì)算節(jié)點(diǎn)一起編譯。在同一編譯期間,同一 PR模塊的實(shí)例可以不由同一計(jì)算節(jié)點(diǎn)一起編譯。可以調(diào)度其他編譯來(lái)編譯尚未被編譯的PR模塊的實(shí)例。在其它實(shí)施例中,僅一個(gè)計(jì)算節(jié)點(diǎn)可用,且調(diào)度過(guò)程命令編譯在單個(gè)計(jì)算節(jié)點(diǎn)上順序地編譯。圖6是示出了用于圖I所示設(shè)計(jì)100的使用圖5所示方法的示例性編譯調(diào)度的表格。如圖6所示,在兩個(gè)編譯中,使用4個(gè)計(jì)算節(jié)點(diǎn)P 1-P4編譯設(shè)計(jì)100中的靜態(tài)邏輯模塊和PR模塊。在編譯I期間,第一計(jì)算節(jié)點(diǎn)Pl編譯靜態(tài)邏輯模塊Top、A、C和E。在編譯
2期間,第一計(jì)算節(jié)點(diǎn)Pl編譯PR模塊BI和D1,第二計(jì)算節(jié)點(diǎn)P2編譯PR模塊B2和D2,第三計(jì)算節(jié)點(diǎn)P3編譯PR模塊B3和D3,第四計(jì)算節(jié)點(diǎn)P4編譯PR模塊B4。回來(lái)參考圖5,在506和507,對(duì)系統(tǒng)中的靜態(tài)邏輯模塊進(jìn)行布局和布線。以此方式,執(zhí)行圖6的編譯I。根據(jù)本發(fā)明實(shí)施例,參考圖2描述的過(guò)程206和207可用于實(shí)現(xiàn)關(guān)于靜態(tài)邏輯模塊的過(guò)程506-507。另外,分配給PR邏輯模塊、且為PR模塊的實(shí)例所需以連接到靜態(tài)邏輯模塊或者從靜態(tài)邏輯模塊連接到PR模塊的實(shí)例(“布線接通”)的布線資源被重新分配給該P(yáng)R模塊的實(shí)例。能夠通過(guò)分析設(shè)計(jì)網(wǎng)表來(lái)確定來(lái)自靜態(tài)模塊的連接,其中來(lái)自靜態(tài)模塊的該連接必須通過(guò)不同PR模塊的指定布圖規(guī)劃區(qū)域布線去往或來(lái)自PR模塊或靜態(tài)模塊。可僅通過(guò)靜態(tài)邏輯邊界來(lái)實(shí)現(xiàn)從一個(gè)PR模塊到另一個(gè)PR模塊的連接,因此從一個(gè)PR模塊到另一個(gè)PR模塊的連接能夠被認(rèn)為是靜態(tài)至靜態(tài)連接(可能使用指定給PR區(qū)域的資源)。根據(jù)本發(fā)明實(shí)施例,根據(jù)在505生成的編譯調(diào)度的第一行來(lái)執(zhí)行在506和507描述的布局和布線過(guò)程。在508,生成修改后的布圖規(guī)劃。修改后的布圖規(guī)劃擴(kuò)大了指定給PR模塊的布圖規(guī)劃區(qū)域以包括先前指定給靜態(tài)邏輯模塊的布圖規(guī)劃區(qū)域的面積。根據(jù)本發(fā)明實(shí)施例,可以采用分配給PR模塊的每個(gè)布圖規(guī)劃區(qū)域的邊界反復(fù)擴(kuò)張的過(guò)程。在該實(shí)施例中,每個(gè)布 圖規(guī)劃區(qū)域的水平邊緣垂直移動(dòng),每個(gè)布圖規(guī)劃的垂直邊緣水平移動(dòng),直到水平邊緣和垂直邊緣到達(dá)目標(biāo)器件的邊界或?qū)?yīng)于另一個(gè)PR模塊的邊緣。應(yīng)該理解,可以使用其他用于修改布圖規(guī)劃的過(guò)程,包括優(yōu)先生長(zhǎng)已經(jīng)預(yù)期了其可布線性和時(shí)序問(wèn)題的布圖規(guī)劃區(qū)域的過(guò)程。在509,重新分配器件資源。將先前指定給靜態(tài)邏輯模塊的未使用資源重新指定給PR模塊。根據(jù)本發(fā)明實(shí)施例,每個(gè)PR模塊允許使用位于其指定的布圖規(guī)劃區(qū)域內(nèi)的未使用資源。通過(guò)靜態(tài)地分配和指定資源給系統(tǒng)中的PR模塊,可以以任意順序?qū)R模塊進(jìn)行布局和布線。此外,可以并行執(zhí)行PR模塊的實(shí)例的布局和布線??梢圆捎枚鄠€(gè)處理節(jié)點(diǎn)來(lái)方便并行編譯。根據(jù)本發(fā)明實(shí)施例,處理節(jié)點(diǎn)包括處理資源來(lái)執(zhí)行諸如布局和布線的編譯過(guò)程。
圖7示出了根據(jù)本發(fā)明實(shí)施例的用于靜態(tài)資源分配的設(shè)計(jì)的示例性修改后的布圖規(guī)劃700。如所示,擴(kuò)大在圖3中所示的指定給PR模塊B的布圖規(guī)劃區(qū)域311以包括先前指定給靜態(tài)邏輯模塊Top和E的布圖規(guī)劃區(qū)域。靜態(tài)邏輯模塊Top和E未使用的資源對(duì)于PR模塊B是可用的。擴(kuò)大在圖3中所示指定給PR模塊D的布圖規(guī)劃區(qū)域313以包括先前指定給靜態(tài)邏輯模塊A、C、E和Top的布圖規(guī)劃區(qū)域。靜態(tài)邏輯模塊A、C、E和Top未使用的資源對(duì)于PR模塊D是可用的?;貋?lái)參考圖5,在510和511,對(duì)系統(tǒng)中的PR模塊進(jìn)行布局和布線。根據(jù)本發(fā)明實(shí)施例,參考圖2描述的過(guò)程206-207可用于實(shí)現(xiàn)關(guān)于PR模塊的過(guò)程510-511。根據(jù)本發(fā)明實(shí)施例,根據(jù)在505生成的編譯調(diào)度執(zhí)行在510和511描述的布局和布線過(guò)程。在該實(shí)施例中,使用計(jì)算節(jié)點(diǎn)來(lái)執(zhí)行一個(gè)或多個(gè)編譯的布線和布局過(guò)程的實(shí)例。每個(gè)計(jì)算節(jié)點(diǎn)被指定給具體模塊以在特定編譯序號(hào)期間進(jìn)行布局和布線。通過(guò)采用多個(gè)計(jì)算節(jié)點(diǎn),可以對(duì)PR模塊的實(shí)例進(jìn)行并行布線。在512,執(zhí)行組裝過(guò)程。根據(jù)本發(fā)明實(shí)施例,參考圖2描述的過(guò)程208可用于執(zhí)行過(guò)程512。 與圖2所述的方法相比,圖5所述的方法提供了數(shù)個(gè)優(yōu)點(diǎn)。例如,通過(guò)重新分配靜態(tài)邏輯模塊未使用的布線資源,可以較好地使用目標(biāo)器件上的未使用的布線資源。此外,圖5所述的方法允許PR模塊布線接通靜態(tài)邏輯模塊,其減小了模塊間通信的限制。應(yīng)該理解,也可用這一改進(jìn)來(lái)修改圖2的方法。圖8是示出了根據(jù)本發(fā)明的示例性實(shí)施例的用于使用自動(dòng)發(fā)現(xiàn)的靜態(tài)資源分配在目標(biāo)器件上設(shè)計(jì)具有PR模塊的系統(tǒng)的方法的流程圖。在801,生成系統(tǒng)的HDL設(shè)計(jì)。在802,在系統(tǒng)上執(zhí)行綜合。在803,生成系統(tǒng)的布圖規(guī)劃。根據(jù)本發(fā)明實(shí)施例,參考圖2描述的過(guò)程201-203可用于實(shí)現(xiàn)過(guò)程801-803。在804,生成編譯調(diào)度。該編譯調(diào)度確定何時(shí)編譯該設(shè)計(jì)中的靜態(tài)邏輯模塊和PR模塊。所執(zhí)行的編譯可包括靜態(tài)邏輯模塊和PR模塊的布局和布線。根據(jù)本發(fā)明實(shí)施例,該編譯調(diào)度對(duì)在第一編譯中、第一計(jì)算節(jié)點(diǎn)上的所有靜態(tài)邏輯模塊和PR模塊的第一實(shí)例的一起編譯進(jìn)行調(diào)度。隨后編譯調(diào)度對(duì)在第二編譯中將要一起編譯的每個(gè)PR模塊的下一實(shí)例的編譯進(jìn)行調(diào)度。在同一編譯期間,不同PR模塊的實(shí)例可以由單個(gè)計(jì)算節(jié)點(diǎn)一起編譯??梢哉{(diào)度其他編譯來(lái)編譯尚未被編譯的PR模塊的實(shí)例。在其他實(shí)施例中,僅一個(gè)計(jì)算節(jié)點(diǎn)可用,且調(diào)度過(guò)程命令編譯在單個(gè)計(jì)算節(jié)點(diǎn)上順序地編譯。圖9是示出了用于圖I所示設(shè)計(jì)100的使用圖8所示方法的示例性編譯調(diào)度的表格。如圖9所示,在4個(gè)編譯中使用單個(gè)計(jì)算節(jié)點(diǎn)來(lái)編譯設(shè)計(jì)100中的靜態(tài)邏輯模塊和PR模塊。在編譯I期間,一起編譯節(jié)點(diǎn)Top、A、BI、C、Dl和E。在編譯2期間,一起編譯節(jié)點(diǎn)B2和D2。在編譯3期間,一起編譯節(jié)點(diǎn)B3和D3。在編譯4期間,編譯節(jié)點(diǎn)B4?;貋?lái)參考圖8,在805,對(duì)系統(tǒng)中的靜態(tài)邏輯模塊和PR模塊進(jìn)行布局。根據(jù)本發(fā)明實(shí)施例,參考圖2描述的過(guò)程206可用于實(shí)現(xiàn)關(guān)于靜態(tài)邏輯模塊和PR模塊的過(guò)程805。在806,對(duì)所布局的系統(tǒng)進(jìn)行布線。根據(jù)本發(fā)明實(shí)施例,選擇目標(biāo)器件上的布線資源以提供邏輯門(mén)、邏輯元件和靜態(tài)邏輯模塊和PR模塊中其他組件之間的互連。在該實(shí)施例中,允許使用目標(biāo)器件上的任意位置處的布線資源來(lái)對(duì)靜態(tài)邏輯模塊和PR模塊進(jìn)行布線。由于允許模塊自由地布線以發(fā)現(xiàn)所需的布線資源,所以該用于布線的過(guò)程可被稱為“自動(dòng)發(fā)現(xiàn)”。根據(jù)本發(fā)明實(shí)施例,當(dāng)為模塊選擇布線資源時(shí),使用優(yōu)先順序。對(duì)于PR模塊的第二實(shí)例,相比于選擇其他布線資源,優(yōu)先選擇使用為該P(yáng)R模塊的第一實(shí)例選擇的布線資源。相比于選擇已經(jīng)被其他靜態(tài)模塊或PR模塊在較早編譯序號(hào)中使用的布線資源,優(yōu)先選擇其他靜態(tài)邏輯模塊和PR模塊未使用的布線資源。根據(jù)本發(fā)明實(shí)施例,根據(jù)在804生成的編譯調(diào)度執(zhí)行在805和806描述的布局和布線過(guò)程。在該實(shí)施例中,使用單個(gè)計(jì)算節(jié)點(diǎn)來(lái)執(zhí)行用于多個(gè)編譯的處理過(guò)程和布局的單個(gè)實(shí)例。在807,確定是否存在任何沖突的布線資源。認(rèn)為選擇由不同PR模塊的實(shí)例或靜態(tài)模塊和PR模塊的實(shí)例使用的布線資源是沖突的。認(rèn)為選擇同一布線資源的模塊是競(jìng)爭(zhēng)模塊。如果確定沒(méi)有布線資源是沖突的,則控制進(jìn)行到808。如果確定存在沖突的布線資源,則控制進(jìn)行到809。在808,控制終止該過(guò)程。
在809,仲裁沖突的布線資源。根據(jù)本發(fā)明實(shí)施例,每個(gè)沖突的布線資源被指定給選擇它的一個(gè)競(jìng)爭(zhēng)模塊。應(yīng)該理解,可以基于時(shí)序約束或與模塊有關(guān)的布線限制或者其他準(zhǔn)則來(lái)仲裁布線資源。替代地,可以基于隨機(jī)指定來(lái)仲裁布線資源。在810,分配未使用的布線資源。在步驟806的布線中未使用的布線資源被指定給有沖突的靜態(tài)邏輯模塊和PR模塊。根據(jù)本發(fā)明實(shí)施例,在806中發(fā)現(xiàn)的具體布線資源用于生成將被指定為用于模塊的布線的候選者的更新的資源集合。為在發(fā)現(xiàn)的資源的仲裁中沒(méi)有獲得其資源的信號(hào)分配臨近期望線的資源,以在即將發(fā)生的布線中進(jìn)行替代選擇。應(yīng)該理解,仲裁和分配的特定過(guò)程的細(xì)節(jié)相對(duì)于具體器件布線連接是特定的,也可以使用其他過(guò)程。在811,生成新編譯調(diào)度。該新編譯調(diào)度確定何時(shí)重新編譯有沖突的一個(gè)或多個(gè)模塊。該所執(zhí)行的重新編譯可包括在其布線上有沖突的一個(gè)或多個(gè)網(wǎng)表模塊的重新布線。根據(jù)本發(fā)明實(shí)施例,在同一重新編譯期間,不同PR模塊的實(shí)例可以由單個(gè)計(jì)算節(jié)點(diǎn)一起重新編譯。在812,根據(jù)在811生成的編譯調(diào)度用在810指定且在809仲裁的布線資源來(lái)對(duì)有沖突的模塊進(jìn)行重新布線。根據(jù)本發(fā)明實(shí)施例,僅對(duì)有沖突的模塊進(jìn)行重新布線。沒(méi)有沖突的模塊使用它們較早的布線選擇。由于仲裁產(chǎn)生沒(méi)有沖突的靜態(tài)資源指定,所以保證不再有進(jìn)一步的沖突。以成功的布線終止該過(guò)程。在另一實(shí)施例中,其中由于未完成靜態(tài)資源指定所以仲裁和分配步驟可能導(dǎo)致布線失敗,過(guò)程可返回到步驟807,其中需要改變仲裁和分配決定的細(xì)節(jié)。805的優(yōu)先順序完成了非并行編譯。根據(jù)替代實(shí)施例,可采用多個(gè)計(jì)算節(jié)點(diǎn)來(lái)并行執(zhí)行多個(gè)布局和布線的實(shí)例,而不是生成其中采用單個(gè)計(jì)算節(jié)點(diǎn)來(lái)串行執(zhí)行布局和布線的單個(gè)實(shí)例的編譯調(diào)度。在該實(shí)施例中,可以在同一編譯期間、在可用計(jì)算節(jié)點(diǎn)上并行編譯PR模塊的不同實(shí)例。也可以在同一編譯期間,由同一計(jì)算節(jié)點(diǎn)來(lái)一起編譯不同PR模塊的實(shí)例。在該實(shí)施例中,由于在未知其他布線結(jié)果的情況下完成每個(gè)布線,所以增加了沖突的可能性。圖8所描述的方法執(zhí)行使用在803生成的布圖規(guī)劃的布局。應(yīng)該理解,在本發(fā)明替代實(shí)施例中,可以以自動(dòng)發(fā)現(xiàn)方式執(zhí)行布局,其中布局不受布圖規(guī)劃的限制。在該實(shí)施例中,在807識(shí)別布局沖突和布線沖突,并且在811生成新調(diào)度之后執(zhí)行重新布局過(guò)程。圖10是示出了根據(jù)本發(fā)明示例性實(shí)施例的用于使用動(dòng)態(tài)資源分配在目標(biāo)器件上設(shè)計(jì)具有PR模塊的系統(tǒng)的方法的流程圖。在該實(shí)施例中,不執(zhí)行資源到模塊的靜態(tài)分配。而是運(yùn)行布局和布線操作直到收斂到合法解決方案。在1001,生成系統(tǒng)的HDL設(shè)計(jì)。在1002,在系統(tǒng)上執(zhí)行綜合。在1003,為系統(tǒng)生成布圖規(guī)劃。在本發(fā)明的替代實(shí)施例中,不創(chuàng)建布圖規(guī)劃。根據(jù)本發(fā)明實(shí)施例,參考圖2描述的過(guò)程201-203可用于實(shí)現(xiàn)過(guò)程1001-1003。在1004,生成編譯調(diào)度。該編譯調(diào)度確定何時(shí)以及通過(guò)哪個(gè)計(jì)算節(jié)點(diǎn)來(lái)編譯該設(shè)計(jì)中的靜態(tài)邏輯模塊和PR模塊。所執(zhí)行的編譯可包括靜態(tài)邏輯模塊和PR模塊的布局和布線。根據(jù)本發(fā)明實(shí)施例,調(diào)度該編譯使得采用一樣多的可用計(jì)算節(jié)點(diǎn)來(lái)并行執(zhí)行一樣多的編譯。根據(jù)本發(fā)明實(shí)施例,編譯調(diào)度對(duì)在第一編譯中、第一計(jì)算節(jié)點(diǎn)上的所有靜態(tài)邏輯模塊的一起編譯進(jìn)行調(diào)度。隨后編譯調(diào)度對(duì)在第二編譯中、將在可用計(jì)算節(jié)點(diǎn)上并行編譯的每 個(gè)PR模塊的實(shí)例的編譯進(jìn)行調(diào)度。在同一編譯期間,不同PR模塊的實(shí)例可以由同一計(jì)算節(jié)點(diǎn)一起編譯。可以調(diào)度其他編譯來(lái)編譯尚未被編譯的PR模塊的實(shí)例。在其他實(shí)施例中,僅一個(gè)計(jì)算節(jié)點(diǎn)可用,且調(diào)度過(guò)程命令編譯在單個(gè)計(jì)算節(jié)點(diǎn)上順序地編譯。圖IlA是示出了用于圖I所示設(shè)計(jì)100的使用圖10所示方法的示例性編譯調(diào)度的表格。如圖11所示,在兩個(gè)編譯中使用4個(gè)計(jì)算節(jié)點(diǎn)P1-P4來(lái)編譯設(shè)計(jì)100中的靜態(tài)邏輯模塊和PR模塊。在編譯I期間,第一計(jì)算節(jié)點(diǎn)Pl編譯靜態(tài)邏輯模塊Top、A、C和E。在編譯2期間,第一計(jì)算節(jié)點(diǎn)Pl編譯模塊BI和D1,第二計(jì)算節(jié)點(diǎn)P2編譯模塊B2和D2,第三計(jì)算節(jié)點(diǎn)P3編譯模塊B3和D3,第4計(jì)算節(jié)點(diǎn)P4編譯模塊B4?;貋?lái)參考圖10,在1005,對(duì)系統(tǒng)中的靜態(tài)邏輯模塊和PR模塊進(jìn)行布局。根據(jù)本發(fā)明實(shí)施例,參考圖2描述的過(guò)程206可用于實(shí)現(xiàn)關(guān)于靜態(tài)邏輯模塊和PR模塊的過(guò)程1005。在1006,對(duì)所布局的系統(tǒng)進(jìn)行布線。根據(jù)本發(fā)明實(shí)施例,選擇目標(biāo)器件上的布線資源以提供邏輯門(mén)、邏輯元件和靜態(tài)邏輯模塊和PR模塊中其他組件之間的互連。在該實(shí)施例中,允許使用目標(biāo)器件上的任意位置處的布線資源來(lái)對(duì)靜態(tài)邏輯模塊和PR模塊進(jìn)行布線。由于允許模塊自由地布線以發(fā)現(xiàn)所需的布線資源,所以該用于布線的過(guò)程可被稱為“自動(dòng)發(fā)現(xiàn)”。根據(jù)本發(fā)明實(shí)施例,當(dāng)為模塊選擇布線資源時(shí)使用優(yōu)先順序。對(duì)于PR模塊的第二實(shí)例,相比于選擇其他布線資源,優(yōu)先選擇使用為該P(yáng)R模塊的第一實(shí)例選擇的布線資源。相比于選擇已經(jīng)被其他靜態(tài)模塊或PR模塊使用的布線資源,優(yōu)先選擇其他靜態(tài)邏輯模塊和PR模塊未使用的布線資源。根據(jù)本發(fā)明實(shí)施例,根據(jù)在1004生成的編譯調(diào)度來(lái)執(zhí)行在1005和1006描述的布局和布線過(guò)程。在該實(shí)施例中,多個(gè)計(jì)算節(jié)點(diǎn)執(zhí)行布局和處理過(guò)程的多個(gè)實(shí)例以允許并行編譯PR模塊的實(shí)例。在1007,確定是否存在任何沖突的布線資源。認(rèn)為被選擇由多于一個(gè)模塊使用的布線資源是沖突的。認(rèn)為選擇同一布線資源的模塊是競(jìng)爭(zhēng)模塊。如果確定沒(méi)有布線資源是沖突的,則控制進(jìn)行到1008。如果確定存在沖突的布線資源,則控制進(jìn)行到1009。在1008,控制終止該過(guò)程。在1009,生成新編譯調(diào)度。該新編譯調(diào)度確定何時(shí)以及由哪個(gè)計(jì)算節(jié)點(diǎn)重新編譯有沖突的一個(gè)或多個(gè)節(jié)點(diǎn)。該所執(zhí)行的重新編譯可包括對(duì)有沖突的一個(gè)或多個(gè)節(jié)點(diǎn)的重新布線。根據(jù)本發(fā)明實(shí)施例,在同一重新編譯期間,不同PR模塊的實(shí)例可以由單個(gè)計(jì)算節(jié)點(diǎn)一起重新編譯。圖IlB是示出了用于圖I所示設(shè)計(jì)100的使用圖10所示方法的示例性新編譯調(diào)度的表格。在該示例中,檢測(cè)到靜態(tài)邏輯模塊Top和PR模塊B I之間以及靜態(tài)邏輯模塊A和PR模塊B2之間的沖突,該新調(diào)度對(duì)這些模塊的重新布線進(jìn)行調(diào)度。在編譯3期間,第一計(jì)算節(jié)點(diǎn)Pl編譯靜態(tài)邏輯模塊Top和A、以及PR模塊BI。在編譯3期間,第二計(jì)算節(jié)點(diǎn)P2編譯模塊B2。在1010,重新布線有沖突的模塊。根據(jù)本發(fā)明實(shí)施例,允許使用該目標(biāo)器件上任意位置處的布線資源來(lái)對(duì)有沖突的靜態(tài)邏輯模塊和PR模塊進(jìn)行布線。根據(jù)本發(fā)明實(shí)施例,當(dāng)為模塊選擇布線資源時(shí),使用優(yōu)先順序。在選擇其他布線資源之前,選擇為PR模塊的第一實(shí)例選擇的布線資源來(lái)用于該P(yáng)R模塊的第二實(shí)例。在選擇已經(jīng)被其他靜態(tài)模塊或PR模塊使用的布線資源之前,選擇其他靜態(tài)邏輯模塊和PR模塊未使用的布線資源??刂品祷氐?007??芍貜?fù)過(guò)程1007-1010,且可以用允許該過(guò)程收斂到解決方案的代價(jià)函數(shù)來(lái)實(shí)現(xiàn)在1010描述的選擇優(yōu)先。 根據(jù)本發(fā)明替代實(shí)施例,還可以以自動(dòng)發(fā)現(xiàn)方式執(zhí)行布局,其中布局不受布圖規(guī)劃的限制。在該實(shí)施例中,在1007識(shí)別布局沖突和布線沖突,并且在1009生成新調(diào)度之后執(zhí)行重新布局過(guò)程。圖2、圖5、圖8和圖10是示出了本發(fā)明實(shí)施例的流程圖。所述的一些技術(shù)可以順序、并行或以與所描述的不同的順序執(zhí)行,而且所述過(guò)程可以重復(fù)。應(yīng)該理解,不需要執(zhí)行所有的所述技術(shù),可以增加其他技術(shù),且一些所述的技術(shù)可以用其他技術(shù)來(lái)代替。圖12是本發(fā)明示例實(shí)施例存在于其中的示例性計(jì)算機(jī)系統(tǒng)1200的框圖。計(jì)算機(jī)系統(tǒng)1200包括一個(gè)或多個(gè)處理數(shù)據(jù)信號(hào)的處理器。如所示,計(jì)算機(jī)系統(tǒng)1200包括第一處理器1201和第η處理器1205,其中η可以是任意數(shù)。處理器1201和1205可以是在每個(gè)芯片上具有多個(gè)處理器核的多核處理器。處理器1201和1205耦合到CPU總線1210或在處理器1201和1205與計(jì)算機(jī)系統(tǒng)1200中其他組件之間傳送數(shù)據(jù)信號(hào)的其他交換結(jié)構(gòu)。根據(jù)本發(fā)明實(shí)施例,計(jì)算機(jī)系統(tǒng)1200中的每個(gè)處理器或處理器核可作為計(jì)算節(jié)點(diǎn)運(yùn)行并且可執(zhí)行其自己的線程。每個(gè)線程可與其他線程并行執(zhí)行軟件程序的實(shí)例。計(jì)算機(jī)系統(tǒng)1200包括存儲(chǔ)器1213。存儲(chǔ)器1213可存儲(chǔ)可由處理器1201和1205執(zhí)行的數(shù)據(jù)信號(hào)所表示的指令和代碼。橋存儲(chǔ)器控制器1211耦合到CPU總線1210和存儲(chǔ)器1213。橋存儲(chǔ)器控制器1211引導(dǎo)處理器1201和1205、存儲(chǔ)器1213和計(jì)算機(jī)系統(tǒng)1200內(nèi)的其他組件之間的數(shù)據(jù)信號(hào)并且橋接CPU總線1210、存儲(chǔ)器1213和第一 IO總線1220之間的數(shù)據(jù)信號(hào)。根據(jù)本發(fā)明實(shí)施例,處理器1201和1205可直接耦合到存儲(chǔ)器1213,并與存儲(chǔ)器1213通信而無(wú)需橋存儲(chǔ)器控制器1211。第一 IO總線1220可以是單個(gè)總線或多個(gè)總線的組合。第一 IO總線1220提供計(jì)算機(jī)系統(tǒng)1200內(nèi)組件之間的通信鏈接。網(wǎng)絡(luò)控制器1221耦合到第一 IO總線1220。網(wǎng)絡(luò)控制器1221可將計(jì)算機(jī)系統(tǒng)1200鏈接到計(jì)算機(jī)的網(wǎng)絡(luò)(未示出)并且支持機(jī)器之間的通信。顯示裝置控制器1222耦合到第一 IO總線1220。顯示裝置控制器1222允許顯示裝置(未示出)耦合到計(jì)算機(jī)系統(tǒng)1200,并且用作該顯示裝置和計(jì)算機(jī)系統(tǒng)1200之間的接口。第二 IO總線1230可以是單個(gè)總線或多個(gè)總線的組合。第二 IO總線1230提供計(jì)算機(jī)系統(tǒng)1200中組件之間的通信鏈接。數(shù)據(jù)存儲(chǔ)裝置1231耦合到第二 IO總線1230。輸入接口 1232耦合到第二 IO總線1230。輸入接口 1232允許輸入裝置耦合到該計(jì)算機(jī)系統(tǒng)1200并且將來(lái)自輸入裝置的數(shù)據(jù)信號(hào)傳送到該計(jì)算機(jī)系統(tǒng)1200。總線橋1223將第一 IO總線1220耦合到第二 IO總線1230。總線橋1223運(yùn)行以緩沖并橋接第一 IO總線1220和第二 IO總線1230之間的數(shù)據(jù)信號(hào)。應(yīng)該理解,具有不同架構(gòu)的計(jì)算機(jī)系統(tǒng)也可用于實(shí)現(xiàn)計(jì)算機(jī)系統(tǒng)1200。系統(tǒng)設(shè)計(jì)者1240可存在于存儲(chǔ)器1213,并且可由處理器1201和1205的一個(gè)或多個(gè)或其中存在的處理器核來(lái)執(zhí)行。系統(tǒng)設(shè)計(jì)者1240可運(yùn)行以生成HDL、綜合系統(tǒng)、生成布圖規(guī)劃、分配布線資源、生成編譯調(diào)度、將系統(tǒng)布局在目標(biāo)器件上、將系統(tǒng)布線在目標(biāo)器件上、修改布圖規(guī)劃、重新分配布線資源、仲裁沖突、組裝系統(tǒng)和/或執(zhí)行諸如圖2、圖5、圖8和圖10中所描述的那些的其他過(guò)程。根據(jù)本發(fā)明實(shí)施例,系統(tǒng)設(shè)計(jì)者1240是包括可由多個(gè)線程同時(shí)(并行)執(zhí)行的部分的程序。應(yīng)該理解,本發(fā)明實(shí)施例可以提供為計(jì)算機(jī)程序產(chǎn)品或軟件,其可包括具有指令的計(jì)算機(jī)可讀或機(jī)器可讀介質(zhì)。在計(jì)算機(jī)可讀或機(jī)器可讀介質(zhì)上的指令可用于編程計(jì)算機(jī) 系統(tǒng)或其他電子裝置。機(jī)器可讀介質(zhì)可包括但不限于軟盤(pán)、光盤(pán)、CD-ROM和磁光盤(pán)或適于存儲(chǔ)電子指令的其他類型的介質(zhì)/機(jī)器可讀介質(zhì)。此處所描述的技術(shù)不限于任何特定軟件配置。它們可在任何計(jì)算或處理環(huán)境中找到適用性。此處所用的術(shù)語(yǔ)“計(jì)算機(jī)可讀介質(zhì)”或“機(jī)器可讀介質(zhì)”可包括能夠存儲(chǔ)或編碼用于由計(jì)算機(jī)執(zhí)行并使得該計(jì)算機(jī)執(zhí)行此處所述任一方法的指令序列的任意介質(zhì)。而且,當(dāng)采取動(dòng)作或?qū)е陆Y(jié)果時(shí),本領(lǐng)域通常以一種或另外的方式(例如,程序、過(guò)程、步驟、應(yīng)用、模塊、單元、邏輯等)來(lái)提及軟件。這樣的表達(dá)僅僅是闡述處理系統(tǒng)執(zhí)行軟件使得處理器執(zhí)行動(dòng)作以產(chǎn)生結(jié)果的簡(jiǎn)短表達(dá)方式。圖13示出了根據(jù)本發(fā)明實(shí)施例的可用于實(shí)現(xiàn)目標(biāo)器件的器件1300。器件1300是包括多個(gè)邏輯陣列塊(LAB)的現(xiàn)場(chǎng)可編程門(mén)陣列(FPGA)。每個(gè)LAB可以由多個(gè)邏輯塊、進(jìn)位鏈、LAB控制信號(hào)、查找表(LUT)鏈和寄存器鏈連接線組成。邏輯塊是提供用戶邏輯功能的有效實(shí)現(xiàn)的邏輯的小單元。邏輯塊包括一個(gè)或多個(gè)組合單元和寄存器,其中每個(gè)組合單元具有單個(gè)輸出。根據(jù)本發(fā)明實(shí)施例,邏輯塊可類似于邏輯元件(LE)或組合邏輯塊(CLB)來(lái)運(yùn)行,該邏輯元件例如Altera公司制造的Stratix或Cyclone器件中的那些,該組合邏輯塊諸如Xilinx公司制造的Virtex器件中的那些。在該實(shí)施例中,邏輯塊可包括具有可配置寄存器的4輸入LUT。根據(jù)本發(fā)明替代實(shí)施例,邏輯塊可類似于自適應(yīng)邏輯模塊(ALM)運(yùn)行,該自適應(yīng)邏輯模塊諸如Altera公司制造的Stratix器件中的那些。在器件1300上將LAB以行和列分組。LAB的列示為1311-1316。應(yīng)該理解,邏輯塊可包括另外的或替代的組件。器件1300包括存儲(chǔ)器塊。該存儲(chǔ)器塊可以是例如雙端口隨機(jī)存取存儲(chǔ)器(RAM)塊,其提供達(dá)各種頻率、達(dá)各種位寬的專用真雙端口、簡(jiǎn)單雙端口或單端口存儲(chǔ)器。存儲(chǔ)器塊可以在該器件上被分組到所選LAB之間的列或者單獨(dú)或成對(duì)地位于器件1300內(nèi)。存儲(chǔ)器塊的列示為1321-1324。器件1300包括數(shù)字信號(hào)處理(DSP)塊。DSP塊可用于以加法或減法特征實(shí)現(xiàn)各種配置的乘法器。DSP塊包括移位寄存器、乘法器、加法器和累加器。DSP塊在器件1300上可以以列分組,并且示為1331。器件1300包括多個(gè)輸入/輸出元件(IOE) 1340。每個(gè)IOE為器件1300提供IO引腳(未示出)。IOE 1340位于器件1300的外圍附近、LAB行和列的末端。每個(gè)IOE可包括雙向IO緩沖器和用于寄存輸入信號(hào)、輸出信號(hào)和輸出使能信號(hào)的多個(gè)寄存器。器件1300可包括布線資源,諸如,LAB本地互連線、行互連線(“H形線”)和列互連線(“V形線(未示出),以在目標(biāo)器件上的組件間路由信號(hào)。在前述說(shuō)明中,已經(jīng)參考本發(fā)明的特定示例性實(shí)施例描述了本發(fā)明實(shí)施例。但是, 顯然可以對(duì)其進(jìn)行各種修改和改變,而不脫離本發(fā)明實(shí)施例的較寬精神和范圍。因此,說(shuō)明書(shū)和附圖應(yīng)被認(rèn)為是示意性的而非限制性的。
權(quán)利要求
1.一種用于在目標(biāo)器件上設(shè)計(jì)系統(tǒng)的方法,該方法包括 將該目標(biāo)器件上的資源指定給該系統(tǒng)中的靜態(tài)邏輯模塊和局部重配置(PR)模塊;和 用所指定的資源在該目標(biāo)器件上并行執(zhí)行該P(yáng)R模塊中的一個(gè)的實(shí)例的布局和布線中的一個(gè)。
2.根據(jù)權(quán)利要求I所述的方法,其中,該P(yáng)R模塊中的該一個(gè)的每個(gè)實(shí)例包括該P(yáng)R模塊的不同電路描述并且所述不同電路描述中的每一個(gè)與同一靜態(tài)邏輯聯(lián)接。
3.根據(jù)權(quán)利要求I所述的方法,其中該指定包括從布圖規(guī)劃區(qū)域指定布線資源給該靜態(tài)邏輯模塊和該P(yáng)R模塊中的每一個(gè)。
4.根據(jù)權(quán)利要求I所述的方法,其中該布線包括與使用第二處理資源來(lái)對(duì)PR模塊的第二實(shí)例進(jìn)行布線并行地使用第一處理資源來(lái)對(duì)該P(yáng)R模塊的第一實(shí)例進(jìn)行布線。
5.根據(jù)權(quán)利要求I所述的方法,還包括在對(duì)該P(yáng)R模塊進(jìn)行布線之前用所指定的隨后布線資源對(duì)該靜態(tài)邏輯模塊進(jìn)行布線。
6.根據(jù)權(quán)利要求5所述的方法,還包括將該靜態(tài)邏輯模塊未使用的布線資源指定給該P(yáng)R模塊。
7.根據(jù)權(quán)利要求6所述的方法,其中指定未使用的布線資源包括 為該P(yáng)R模塊擴(kuò)大該目標(biāo)器件上的布圖規(guī)劃區(qū)域并且從每個(gè)PR模塊對(duì)應(yīng)的布圖規(guī)劃區(qū)域指定布線資源給該每個(gè)PR模塊。
8.根據(jù)權(quán)利要求7所述的方法,其中該擴(kuò)大包括垂直移動(dòng)每個(gè)布圖規(guī)劃區(qū)域的水平邊緣并且水平移動(dòng)每個(gè)布圖規(guī)劃區(qū)域的垂直邊緣,直到該水平邊緣和該垂直邊緣到達(dá)該目標(biāo)器件的邊界或?qū)?yīng)于另一個(gè)PR模塊的邊緣。
9.根據(jù)權(quán)利要求I所述的方法,其中該靜態(tài)邏輯模塊和PR模塊包括硬件描述語(yǔ)言的電路。
10.一種用于在目標(biāo)器件上設(shè)計(jì)系統(tǒng)的方法,包括 在該目標(biāo)器件上對(duì)靜態(tài)邏輯模塊和局部重配置(PR)模塊進(jìn)行布線; 仲裁布線沖突的布線資源給競(jìng)爭(zhēng)該布線資源的靜態(tài)邏輯模塊和PR模塊; 指定布線中的未使用的布線資源給有沖突的靜態(tài)邏輯模塊和PR模塊;以及 用所仲裁和所指定的布線資源對(duì)有沖突的該靜態(tài)邏輯模塊和PR模塊進(jìn)行重新布線。
11.根據(jù)權(quán)利要求10所述的方法,其中在目標(biāo)器件上對(duì)PR模塊進(jìn)行布線包括串行地對(duì)PR模塊的實(shí)例進(jìn)行布線。
12.根據(jù)權(quán)利要求10所述的方法,其中在該目標(biāo)器件上對(duì)PR模塊進(jìn)行布線包括與PR模塊的第二實(shí)例并行地對(duì)該P(yáng)R模塊的第一實(shí)例進(jìn)行布線。
13.根據(jù)權(quán)利要求10所述的方法,其中在該目標(biāo)器件上對(duì)該P(yáng)R模塊進(jìn)行布線包括相比于選擇其他布線資源,為PR模塊的第一實(shí)例優(yōu)先選擇該P(yáng)R模塊的第二實(shí)例使用的布線資源。
14.根據(jù)權(quán)利要求10所述的方法,其中對(duì)該靜態(tài)邏輯模塊和該P(yáng)R模塊進(jìn)行布線包括相比于選擇其他靜態(tài)模塊或PR模塊使用的布線資源,為該靜態(tài)邏輯模塊和該P(yáng)R模塊優(yōu)先選擇所述其他靜態(tài)邏輯模塊和PR模塊未使用的布線資源。
15.根據(jù)權(quán)利要求10所述的方法,其中仲裁沖突的布線資源包括響應(yīng)于時(shí)序約束或布線約束中的一個(gè)指定沖突的布線資源給模塊。
16.根據(jù)權(quán)利要求10所述的方法,其中該P(yáng)R模塊的每個(gè)實(shí)例包括該P(yáng)R模塊的不同電路描述并且所述不同電路描述中的每一個(gè)與同一靜態(tài)邏輯組件聯(lián)接。
17.一種非瞬時(shí)性計(jì)算機(jī)可讀介質(zhì),包括在其上存儲(chǔ)的、用于使計(jì)算機(jī)執(zhí)行包括以下步驟的方法的指令序列 在目標(biāo)器件上對(duì)靜態(tài)邏輯模塊進(jìn)行布線; 在該目標(biāo)器件上對(duì)局部重配置(PR)模塊的實(shí)例進(jìn)行并行布線;和 響應(yīng)于確定已經(jīng)非法布線該靜態(tài)邏輯模塊和該P(yáng)R模塊,對(duì)該靜態(tài)模塊和該P(yáng)R模塊并行地進(jìn)行重新布線。
18.根據(jù)權(quán)利要求17所述的非瞬時(shí)性計(jì)算機(jī)可讀介質(zhì),其中在該目標(biāo)器件上對(duì)該P(yáng)R模塊的實(shí)例進(jìn)行布線包括相比于選擇其他布線資源,為該P(yáng)R模塊的第一實(shí)例選擇該P(yáng)R模塊的第二實(shí)例使用的布線資源。
19.根據(jù)權(quán)利要求17所述的非瞬時(shí)性計(jì)算機(jī)可讀介質(zhì),其中對(duì)該靜態(tài)邏輯模塊和該P(yáng)R模塊進(jìn)行布線包括相比于選擇其他靜態(tài)模塊或PR模塊使用的布線資源,為該靜態(tài)邏輯模塊和該P(yáng)R模塊選擇該其他靜態(tài)邏輯模塊和PR模塊未使用的布線資源。
20.根據(jù)權(quán)利要求17所述的非瞬時(shí)性計(jì)算機(jī)可讀介質(zhì),其中該P(yáng)R模塊的每一個(gè)實(shí)例包括該P(yáng)R模塊的不同電路描述并且所述不同電路描述中的每一個(gè)與同一靜態(tài)邏輯聯(lián)接。
21.根據(jù)權(quán)利要求17所述的非瞬時(shí)性計(jì)算機(jī)可讀介質(zhì),其中該重新布線包括與使用第二處理資源來(lái)對(duì)該P(yáng)R模塊的實(shí)例進(jìn)行布線并行地使用第一處理資源來(lái)對(duì)該靜態(tài)邏輯模塊進(jìn)行布線。
22.根據(jù)權(quán)利要求17所述的非瞬時(shí)性計(jì)算機(jī)可讀介質(zhì),還包括響應(yīng)于確定已經(jīng)非法布局了該靜態(tài)邏輯模塊和該P(yáng)R模塊,對(duì)該靜態(tài)模塊和該P(yáng)R模塊并行地進(jìn)行重新布局。
23.根據(jù)權(quán)利要求10所述的方法,還包括在在該目標(biāo)器件上布局PR模塊之前,對(duì)靜態(tài)邏輯模塊進(jìn)行布局。
24.根據(jù)權(quán)利要求23所述的方法,其中對(duì)該P(yáng)R模塊并行地進(jìn)行布局。
25.根據(jù)權(quán)利要求17所述的非瞬時(shí)性計(jì)算機(jī)可讀介質(zhì),還包括 在目標(biāo)器件上對(duì)靜態(tài)邏輯模塊進(jìn)行布局; 在該目標(biāo)器件上并行地對(duì)PR模塊的實(shí)例進(jìn)行布局;和 響應(yīng)于確定布局的非法性,對(duì)該靜態(tài)模塊和該P(yáng)R模塊并行地進(jìn)行重新布局。
全文摘要
本發(fā)明涉及用于對(duì)局部重配置模塊進(jìn)行布局和布線的方法和設(shè)備。一種用于在目標(biāo)器件上設(shè)計(jì)系統(tǒng)的方法,包括將該目標(biāo)器件上的資源指定給系統(tǒng)中的靜態(tài)邏輯模塊和局部重配置(PR)模塊。使用來(lái)自所指定資源的資源來(lái)并行地對(duì)該P(yáng)R模塊中的一個(gè)的實(shí)例進(jìn)行布局和布線。還公開(kāi)了其他實(shí)施例。
文檔編號(hào)G06F17/50GK102708221SQ20121004615
公開(kāi)日2012年10月3日 申請(qǐng)日期2012年2月23日 優(yōu)先權(quán)日2011年3月3日
發(fā)明者A·L·赫爾曼, D·S·高曼, M·布爾若, V·貝茨 申請(qǐng)人:阿爾特拉公司