技術(shù)領(lǐng)域
本申請(qǐng)涉及集成電路,并且更具體地涉及有效地管理確定集成電路中的電路設(shè)計(jì)的實(shí)現(xiàn)方式的配置數(shù)據(jù)。
背景技術(shù):
從一個(gè)技術(shù)節(jié)點(diǎn)到下一個(gè)技術(shù)節(jié)點(diǎn)的每一次轉(zhuǎn)變都導(dǎo)致了更小的晶體管幾何結(jié)構(gòu),并且因此潛在地導(dǎo)致每單位集成電路面積實(shí)現(xiàn)更多的功能。
集成電路通常包括配置存儲(chǔ)位/比特位(bit),所述配置存儲(chǔ)位通過利用配置數(shù)據(jù)對(duì)配置存儲(chǔ)位進(jìn)行編程而使得功能塊能夠定制。集成電路尺寸的增大往往導(dǎo)致功能塊尺寸的增大,并且因而導(dǎo)致配置數(shù)據(jù)量的增加。由于配置數(shù)據(jù)通常被存儲(chǔ)在存儲(chǔ)電路中,因此需要更大的存儲(chǔ)電路來存儲(chǔ)配置數(shù)據(jù)的增加量。
部分重構(gòu)加劇了具有增加數(shù)量的配置數(shù)據(jù)的問題,所述部分重構(gòu)最近已經(jīng)作為在不同的時(shí)間在集成電路的同一分區(qū)中實(shí)現(xiàn)多種不同電路設(shè)計(jì)的一種方式出現(xiàn)??紤]集成電路分區(qū)包括配置存儲(chǔ)位的示例。第一配置數(shù)據(jù)集對(duì)這些配置存儲(chǔ)位進(jìn)行編程以實(shí)現(xiàn)第一電路設(shè)計(jì);并且該第一電路設(shè)計(jì)實(shí)施方式在第一持續(xù)時(shí)間中在該集成電路分區(qū)上運(yùn)行。
在第一持續(xù)時(shí)間之后,使用第二配置數(shù)據(jù)集對(duì)該集成電路分區(qū)上的配置存儲(chǔ)位進(jìn)行重新編程。因而,第一電路設(shè)計(jì)實(shí)施方式被第二電路實(shí)施方式代替,并且第二電路設(shè)計(jì)實(shí)施方式在第二持續(xù)時(shí)間中在該集成電路分區(qū)上運(yùn)行。在實(shí)踐中,多于兩個(gè)電路設(shè)計(jì)實(shí)施方式通常通過部分重構(gòu)共享相同的集成電路分區(qū)。
在此示例中,需要被存儲(chǔ)在存儲(chǔ)電路中的配置數(shù)據(jù)的數(shù)量隨著每個(gè)附加電路設(shè)計(jì)實(shí)施方式而顯著地增加;并且增加的存儲(chǔ)器尺寸需求可能對(duì)集成電路的運(yùn)行成本產(chǎn)生重大影響。
技術(shù)實(shí)現(xiàn)要素:
本申請(qǐng)展示了用于有效地管理配置數(shù)據(jù)的配置電路系統(tǒng)(circuitry)。該配置電路系統(tǒng)可以包括解碼電路,所述解碼電路可以包括第一和第二電路(circuit)。該解碼電路可以接收基本配置數(shù)據(jù)集和第一數(shù)據(jù)集。該第一電路可以接收該第一數(shù)據(jù)集,該第一數(shù)據(jù)集可以包括該基本配置數(shù)據(jù)集與解碼的配置數(shù)據(jù)集之間的壓縮數(shù)據(jù)差異/差分(difference)。根據(jù)需要,第一電路可以解壓所接收的第一數(shù)據(jù)集以創(chuàng)建第二數(shù)據(jù)集。第二電路可以接收基本配置數(shù)據(jù)集和來自第一電路的第二數(shù)據(jù)集并且使用基本配置數(shù)據(jù)集和第二數(shù)據(jù)集恢復(fù)解碼的配置數(shù)據(jù)集。
應(yīng)當(dāng)認(rèn)識(shí)到,能夠以許多方式來實(shí)現(xiàn)本發(fā)明,例如過程、裝置、系統(tǒng)、設(shè)備或計(jì)算機(jī)可讀介質(zhì)上的指令。下面描述幾個(gè)創(chuàng)造性實(shí)施例。
在某些實(shí)施例中,上述配置電路系統(tǒng)可以使用所解碼的配置數(shù)據(jù)集對(duì)可配置電路進(jìn)行編程以便在該可配置電路上實(shí)現(xiàn)第一電路設(shè)計(jì)。根據(jù)需要,第一電路可以接收第三數(shù)據(jù)集,該第三數(shù)據(jù)集包括基本配置數(shù)據(jù)集和附加解碼的配置數(shù)據(jù)集之間的其他壓縮數(shù)據(jù)差異。第一電路可以解壓所接收的第三數(shù)據(jù)集以創(chuàng)建第四數(shù)據(jù)集。
在某些實(shí)施例中,第二電路可以從第一電路接收基本配置數(shù)據(jù)集和第四數(shù)據(jù)集。根據(jù)需要,第二電路可以使用基本配置數(shù)據(jù)集和第四數(shù)據(jù)集恢復(fù)附加解碼的配置數(shù)據(jù)集。
從附圖以及下面優(yōu)選實(shí)施方式的詳細(xì)描述,本發(fā)明進(jìn)一步的特征、它的性質(zhì)以及各種不同的優(yōu)點(diǎn)將變得更加明顯。
附圖說明
圖1是根據(jù)一個(gè)實(shí)施例的具有可編程邏輯區(qū)域的說明性可編程集成電路的圖。
圖2A是根據(jù)一個(gè)實(shí)施例可用于設(shè)計(jì)集成電路的電路設(shè)計(jì)系統(tǒng)的圖。
圖2B是根據(jù)一個(gè)實(shí)施例可用在電路設(shè)計(jì)系統(tǒng)中的說明性計(jì)算機(jī)輔助設(shè)計(jì)(CAD)工具的圖。
圖3是根據(jù)一個(gè)實(shí)施例的用于編碼和解碼在集成電路中實(shí)現(xiàn)電路設(shè)計(jì)的配置數(shù)據(jù)的說明性電路系統(tǒng)的圖。
圖4是根據(jù)一個(gè)實(shí)施例使用配置數(shù)據(jù)和基本配置來生成壓縮配置數(shù)據(jù)的說明性步驟的流程圖。
圖5是根據(jù)一個(gè)實(shí)施例使用壓縮配置數(shù)據(jù)和基本配置來生成配置數(shù)據(jù)的說明性步驟的流程圖。
圖6是根據(jù)一個(gè)實(shí)施例用于基于具有基本配置數(shù)據(jù)集的變化的比較生成壓縮配置數(shù)據(jù)集的說明性步驟的流程圖。
圖7是根據(jù)本發(fā)明的實(shí)施例用于生成兩個(gè)壓縮配置數(shù)據(jù)集并將這些壓縮數(shù)據(jù)集存儲(chǔ)在存儲(chǔ)電路中的說明性步驟的流程圖。
具體實(shí)施方式
本發(fā)明實(shí)施例涉及集成電路,并且更具體地涉及有效地管理確定集成電路中的電路設(shè)計(jì)的實(shí)施方式的配置數(shù)據(jù)。
如上面在背景技術(shù)部分所述,可能需要更大的存儲(chǔ)電路來存儲(chǔ)用于對(duì)集成電路中的配置存儲(chǔ)位進(jìn)行編程的增加量的配置數(shù)據(jù)。增加量的配置數(shù)據(jù)可能源于集成電路中晶體管密度(即每單位面積的晶體管數(shù)目)的增加和/或部分重構(gòu)的使用,所述部分重構(gòu)最近作為在不同時(shí)間在集成電路的相同分區(qū)中實(shí)現(xiàn)多種不同電路設(shè)計(jì)的一種方式出現(xiàn)。
增加量的配置數(shù)據(jù)需要使用更大的存儲(chǔ)電路,這可能對(duì)集成電路的運(yùn)行成本產(chǎn)生重大影響。因此,可能期望更有效地管理用于編程配置存儲(chǔ)位的配置數(shù)據(jù)而不影響集成電路的功能。
對(duì)本領(lǐng)域技術(shù)人員將顯而易見的是,可以在沒有一些或所有這些具體細(xì)節(jié)的情況下實(shí)踐本發(fā)明的示例性實(shí)施例。在其他實(shí)例中,并未詳細(xì)說明眾所周知的操作,目的是為了避免不必要地模糊本發(fā)明的實(shí)施例。
實(shí)施例涉及用于使用計(jì)算機(jī)輔助設(shè)計(jì)(CAD)工具的方法,所述CAD工具有時(shí)也被稱為設(shè)計(jì)自動(dòng)化(DA)工具或電子設(shè)計(jì)自動(dòng)化(EDA)工具,用于優(yōu)化由配置存儲(chǔ)位所表示的電路設(shè)計(jì),以便在集成電路中實(shí)現(xiàn)。所述集成電路可以是任何合適類型的集成電路,例如微處理器、專用集成電路、數(shù)字信號(hào)處理器和存儲(chǔ)器電路等。根據(jù)需要,所述集成電路可以是可編程的。換言之,此類集成電路的至少一部分可以被用戶配置以使用可編程電路系統(tǒng)執(zhí)行電路設(shè)計(jì)中描述的功能。該可編程電路系統(tǒng)可以通過調(diào)整配置存儲(chǔ)元件的設(shè)置來配置。
圖1中示出了根據(jù)本發(fā)明的集成電路(例如可編程邏輯器件100)的說明性實(shí)施例。
可編程邏輯器件100具有輸入/輸出電路系統(tǒng)110,所述輸入/輸出電路系統(tǒng)110用于驅(qū)動(dòng)信號(hào)遠(yuǎn)離器件100并且用于經(jīng)由輸入/輸入引腳120從其他器件接收信號(hào)?;ミB資源115(例如,全局和局部的、垂直和水平的導(dǎo)電線路和總線)可被用于對(duì)器件100上的信號(hào)進(jìn)行路由。
輸入/輸出電路系統(tǒng)110包括常規(guī)的輸入/輸出電路系統(tǒng)、串行數(shù)據(jù)收發(fā)器電路系統(tǒng)、差分接收器和發(fā)射器電路系統(tǒng)或用于將一個(gè)集成電路連接至另一個(gè)集成電路的其他電路系統(tǒng)。
互連資源115包括導(dǎo)電線路和對(duì)應(yīng)的導(dǎo)電線路之間的可編程連接,因此有時(shí)被稱為可編程互連115。
可編程邏輯區(qū)域140可以包括可編程部件,例如數(shù)字信號(hào)處理電路系統(tǒng)、存儲(chǔ)電路系統(tǒng)、算術(shù)電路系統(tǒng)或其他組合和時(shí)序邏輯電路系統(tǒng)。可編程邏輯區(qū)域140可以被配置為執(zhí)行定制邏輯功能。可編程邏輯區(qū)域140也可以包括執(zhí)行給定應(yīng)用且具有有限可配置性的專用塊。例如,可編程邏輯區(qū)域140可以包括專用塊,例如可配置存儲(chǔ)塊、可配置處理塊、可編程鎖相環(huán)電路系統(tǒng)、可編程延遲鎖定環(huán)電路系統(tǒng)或其他具有有限可配置性的專用塊。可編程互連115也可以被視為是可編程邏輯區(qū)域140的一種類型。
可編程邏輯器件100包含可編程存儲(chǔ)元件130。存儲(chǔ)元件130可以使用引腳120和輸入/輸出電路系統(tǒng)110來加載配置數(shù)據(jù)(也被稱為編程數(shù)據(jù))。一旦被加載,存儲(chǔ)元件各自提供對(duì)應(yīng)的靜態(tài)控制信號(hào),該靜態(tài)控制信號(hào)控制可編程邏輯區(qū)域140中的相關(guān)聯(lián)邏輯部件的操作。在典型的情況下,被加載的存儲(chǔ)器元件130的輸出被施加于可編程邏輯區(qū)域140中的金屬氧化物半導(dǎo)體場(chǎng)效應(yīng)晶體管的柵極以便接通或關(guān)斷某些晶體管,并且由此配置可編程邏輯區(qū)域140和路由路徑中的邏輯??梢砸赃@種方式控制的可編程邏輯電路元件包括多路復(fù)用器的部分(例如,用于形成可編程互連115中的路由路徑的多路復(fù)用器)、查找表、邏輯陣列、AND、OR、NAND和NOR邏輯門和傳輸門等。
存儲(chǔ)器元件130可以使用任何適合的易失性和/或非易失性存儲(chǔ)器結(jié)構(gòu),例如隨機(jī)存取存儲(chǔ)器(RAM)單元、熔絲、反熔絲、可編程只讀存儲(chǔ)器存儲(chǔ)器單元、掩模編程的和激光編程的結(jié)構(gòu)、這些結(jié)構(gòu)的組合等。由于存儲(chǔ)器元件130在編程過程中加載有配置數(shù)據(jù),存儲(chǔ)器元件130有時(shí)被稱為配置存儲(chǔ)器、配置存儲(chǔ)器元件、配置存儲(chǔ)位、配置RAM或可編程存儲(chǔ)器元件。
器件100的電路系統(tǒng)可以使用任何合適的架構(gòu)來組織。作為一個(gè)示例,可編程邏輯器件100的邏輯可以以一系列較大可編程邏輯區(qū)域的行和列來組織,這些較大可編程邏輯區(qū)域中的每一個(gè)包含多個(gè)較小邏輯區(qū)域。較小區(qū)域可以是例如有時(shí)被稱為邏輯元件(LE)的邏輯區(qū)域,每個(gè)邏輯元件包含一個(gè)或多個(gè)查找表、一個(gè)或多個(gè)寄存器以及可編程多路復(fù)用器電路系統(tǒng)。較小區(qū)域也可以是例如有時(shí)被稱為可配置邏輯塊或自適應(yīng)邏輯模塊的邏輯區(qū)域。每個(gè)自適應(yīng)邏輯模塊(ALM)可以包括一對(duì)加法器、一對(duì)相關(guān)聯(lián)的寄存器、查找表或共享組合塊的其他塊(即,來自一對(duì)LE的資源——在此上下文中有時(shí)也被稱為自適應(yīng)邏輯元件或ALE)。較大區(qū)域可以是例如包含多個(gè)邏輯元件或多個(gè)ALM的邏輯陣列塊(LAB)。
在器件編程過程中,配置數(shù)據(jù)被加載到器件100中,該器件100對(duì)可編程邏輯區(qū)域140進(jìn)行配置,使得它們的邏輯資源執(zhí)行期望的邏輯功能。電路設(shè)計(jì)系統(tǒng)可以基于集成電路設(shè)計(jì)的用戶描述來生成配置數(shù)據(jù)。
圖2A中示出了根據(jù)一個(gè)實(shí)施例的說明性電路設(shè)計(jì)系統(tǒng)200。系統(tǒng)200可以基于一個(gè)或多個(gè)處理器,例如個(gè)人計(jì)算機(jī)、工作站等。(多個(gè))處理器可以使用網(wǎng)絡(luò)(例如,局域網(wǎng)或廣域網(wǎng))相鏈接。這些計(jì)算機(jī)或外部存儲(chǔ)器和存儲(chǔ)設(shè)備中的存儲(chǔ)器(例如內(nèi)部和/或外部硬盤)可以用于存儲(chǔ)指令和數(shù)據(jù)。
基于軟件的部件(例如計(jì)算機(jī)輔助設(shè)計(jì)工具210和數(shù)據(jù)庫215)駐留在系統(tǒng)200上。在操作過程中,可執(zhí)行的軟件(例如計(jì)算機(jī)輔助設(shè)計(jì)工具210的軟件)在系統(tǒng)200的(多個(gè))處理器上運(yùn)行。數(shù)據(jù)庫215被用于存儲(chǔ)數(shù)據(jù)以便系統(tǒng)200進(jìn)行操作。通常,軟件和數(shù)據(jù)可以被存儲(chǔ)在系統(tǒng)200中的任何計(jì)算機(jī)可讀介質(zhì)(存儲(chǔ)設(shè)備)上。此類存儲(chǔ)設(shè)備可以包括計(jì)算機(jī)存儲(chǔ)器芯片、可移除的和固定的介質(zhì)(例如硬盤驅(qū)動(dòng)器、閃存、光盤(CD)、數(shù)字通用盤(DVD)、藍(lán)光光盤(BD)、其他光學(xué)介質(zhì)以及軟盤)、磁帶或任何其他合適的存儲(chǔ)器或(多個(gè))存儲(chǔ)設(shè)備。當(dāng)系統(tǒng)200的軟件被安裝時(shí),系統(tǒng)200的存儲(chǔ)設(shè)備具有促使系統(tǒng)200中的計(jì)算裝備執(zhí)行各種方法(進(jìn)程)的指令和數(shù)據(jù)。當(dāng)執(zhí)行這些進(jìn)程時(shí),該計(jì)算裝備被配置為實(shí)現(xiàn)電路設(shè)計(jì)系統(tǒng)的功能。
計(jì)算機(jī)輔助設(shè)計(jì)(CAD)工具210(其中一些或全部有時(shí)被統(tǒng)稱為CAD工具或電子設(shè)計(jì)自動(dòng)化(EDA)工具)可以由單個(gè)供應(yīng)商或多個(gè)供應(yīng)商提供。工具210可以被提供作為一套或多套工具(例如,用于執(zhí)行與實(shí)現(xiàn)可編程邏輯器件中的電路設(shè)計(jì)相關(guān)聯(lián)的任務(wù)的編譯器套件)和/或作為一個(gè)或多個(gè)獨(dú)立的軟件部件(工具)。(多個(gè))數(shù)據(jù)庫215可以包括一個(gè)或多個(gè)數(shù)據(jù)庫,所述一個(gè)或多個(gè)數(shù)據(jù)庫僅由一個(gè)或多個(gè)特定工具訪問并且可以包括一個(gè)或多個(gè)共享數(shù)據(jù)庫。共享數(shù)據(jù)庫可以由多個(gè)工具訪問。例如,第一工具可以將用于第二工具的數(shù)據(jù)存儲(chǔ)在共享數(shù)據(jù)庫中。第二工具可以訪問共享數(shù)據(jù)庫以檢索由第一工具存儲(chǔ)的數(shù)據(jù)。這允許一個(gè)工具將信息傳遞給另一個(gè)工具。根據(jù)需要,工具也可以在彼此之間傳遞信息,而不需要將信息存儲(chǔ)在共享數(shù)據(jù)庫中。
工具210可以接收任何電路設(shè)計(jì)描述。例如,第一電路設(shè)計(jì)描述可以被轉(zhuǎn)換為能被用于實(shí)現(xiàn)集成電路的第二集成電路設(shè)計(jì)描述(例如,用于加工可編程邏輯器件的專用集成電路或配置比特流的掩模組)。
圖2B中示出了可用在電路設(shè)計(jì)系統(tǒng)(例如圖2A的電路設(shè)計(jì)系統(tǒng)200)中的說明性計(jì)算機(jī)輔助設(shè)計(jì)工具260。
該設(shè)計(jì)過程可以開始于集成電路設(shè)計(jì)的功能性說明的規(guī)劃(例如,集成電路設(shè)計(jì)的功能或行為描述)。電路設(shè)計(jì)者可以使用設(shè)計(jì)和約束條目工具264來指定期望的電路設(shè)計(jì)的功能操作。設(shè)計(jì)和約束條目工具264可以包括諸如設(shè)計(jì)條目輔助設(shè)備266和設(shè)計(jì)編輯器268的工具。設(shè)計(jì)條目輔助設(shè)備266可以用來幫助電路設(shè)計(jì)者從現(xiàn)有電路設(shè)計(jì)庫中定位所述設(shè)計(jì)的期望部分(例如,知識(shí)產(chǎn)權(quán)(IP)部件),并且可以為電路設(shè)計(jì)者提供計(jì)算機(jī)輔助支援以輸入(指定)期望的電路設(shè)計(jì)。
作為一個(gè)示例,設(shè)計(jì)條目輔助設(shè)備266可以用來為用戶呈現(xiàn)選項(xiàng)的屏幕。用戶可以點(diǎn)擊屏幕上的選項(xiàng)來選擇正在設(shè)計(jì)的電路是否應(yīng)該具有某些特征。設(shè)計(jì)編輯器268可以用于輸入設(shè)計(jì)(例如,通過輸入多行硬件描述語言代碼),可以用于編輯從庫中獲得的設(shè)計(jì)(例如,使用設(shè)計(jì)和約束條目輔助設(shè)備),或者可以輔助用戶選擇并編輯適當(dāng)?shù)念A(yù)先封裝的代碼/設(shè)計(jì)。
設(shè)計(jì)和約束條目工具264可以允許電路設(shè)計(jì)者使用任何合適的格式提供期望的電路設(shè)計(jì)。例如,設(shè)計(jì)和約束條目工具264可以包括允許電路設(shè)計(jì)者使用真值表輸入電路設(shè)計(jì)的工具。真值表可以使用文本文件或時(shí)序圖來指定,并且可以從庫中導(dǎo)入。真值表電路設(shè)計(jì)和約束條目可以用于大電路的一部分或用于整個(gè)電路。
作為另一個(gè)示例,設(shè)計(jì)和約束條目工具264可以包括原理圖獲取工具。原理圖獲取工具可以允許電路設(shè)計(jì)者從構(gòu)成零件(例如邏輯門和邏輯門組)可視地構(gòu)造集成電路設(shè)計(jì)。預(yù)先存在的集成電路設(shè)計(jì)庫可以用于允許設(shè)計(jì)的期望部分與原理圖獲取工具一起被導(dǎo)入。
根據(jù)需要,設(shè)計(jì)和約束條目工具264可以允許電路設(shè)計(jì)者使用硬件描述語言(例如Verilog硬件描述語言(Verilog HDL)或超高速集成電路硬件描述語言(VHDL))向電路設(shè)計(jì)系統(tǒng)200提供電路設(shè)計(jì)。集成電路設(shè)計(jì)的設(shè)計(jì)者可以通過使用編輯器268寫入硬件描述語言代碼來輸入電路設(shè)計(jì)。根據(jù)需要,可以從用戶維護(hù)的庫或商業(yè)庫中導(dǎo)入代碼塊。
在使用設(shè)計(jì)和約束條目工具264輸入設(shè)計(jì)之后,行為仿真工具272可以用于仿真電路設(shè)計(jì)的功能性能。如果該設(shè)計(jì)的功能性能不完整或不正確,則電路設(shè)計(jì)者可以使用設(shè)計(jì)和約束條目工具264對(duì)電路設(shè)計(jì)做出更改。在使用工具274執(zhí)行合成操作之前,可以使用行為仿真工具272驗(yàn)證新的電路設(shè)計(jì)的功能操作。仿真工具(例如行為仿真工具272)也可以根據(jù)需要用在設(shè)計(jì)流程中的其他階段(例如,邏輯合成之后)。行為仿真工具272的輸出可以以任何合適的格式(例如,真值表、時(shí)序圖等)被提供給電路設(shè)計(jì)者。
一旦電路設(shè)計(jì)的功能操作已經(jīng)被確定為是令人滿意的,則邏輯合成和優(yōu)化工具274可以生成電路設(shè)計(jì)的門級(jí)網(wǎng)表,例如使用由工廠支持的涉及目標(biāo)過程的特定庫中的門,所述工廠已經(jīng)被選中來生產(chǎn)所述集成電路??商娲兀壿嫼铣珊蛢?yōu)化工具274可以使用目標(biāo)可編程邏輯器件的門來生成電路設(shè)計(jì)的門級(jí)網(wǎng)表(即在特定可編程邏輯器件產(chǎn)品或產(chǎn)品族的邏輯和互連資源中)。
邏輯合成和優(yōu)化工具274可以通過適當(dāng)?shù)剡x擇硬件來優(yōu)化設(shè)計(jì),以便基于由邏輯設(shè)計(jì)者使用工具264輸入的電路設(shè)計(jì)數(shù)據(jù)和約束數(shù)據(jù)來實(shí)現(xiàn)不同的邏輯功能。
在使用工具274進(jìn)行邏輯合成和優(yōu)化之后,電路設(shè)計(jì)系統(tǒng)可以使用工具(例如布置和布線工具276)來執(zhí)行物理設(shè)計(jì)步驟(布局合成操作)。布置和布線工具276被用于確定將工具274產(chǎn)生的門級(jí)網(wǎng)表的每個(gè)門放置在何處。例如,如果兩個(gè)計(jì)數(shù)器彼此交互,則布置和布線工具276可以將這些計(jì)數(shù)器安置在相鄰區(qū)域中以減少互連延遲或滿足指定最大允許的互連延遲的正時(shí)要求。布置和布線工具276創(chuàng)建用于任何目標(biāo)集成電路(例如,針對(duì)給定的可編程集成電路,例如現(xiàn)場(chǎng)可編程門陣列(FPGA))的電路設(shè)計(jì)的有序且有效的實(shí)施方式。
工具(例如工具274和276)可以是編譯器套件的一部分(例如,由可編程邏輯器件供應(yīng)商提供的一套編譯器工具的一部分)。根據(jù)一個(gè)實(shí)施例,工具(例如工具274、276和278)在實(shí)現(xiàn)期望的電路設(shè)計(jì)的同時(shí)自動(dòng)考慮互連之間的串?dāng)_影響。工具274、276和278也可以包括正時(shí)分析工具,例如正時(shí)估計(jì)器。這在實(shí)際生產(chǎn)集成電路之前允許工具274和276滿足性能要求(例如,正時(shí)要求)。
在使用布置和布線工具276已經(jīng)生成期望的電路設(shè)計(jì)的實(shí)現(xiàn)方式之后,可以使用分析工具278分析和測(cè)試所述設(shè)計(jì)的實(shí)現(xiàn)方式。在使用工具260完成令人滿意的優(yōu)化操作之后,工具260可以產(chǎn)生集成電路和/或配置數(shù)據(jù)的掩模級(jí)布局描述以便對(duì)集成電路上的配置存儲(chǔ)器元件進(jìn)行編程。
在某些實(shí)施例中,可以在集成電路上實(shí)現(xiàn)多于一個(gè)電路設(shè)計(jì)。例如,相同的或基本相同的電路設(shè)計(jì)的多個(gè)實(shí)例可以在集成電路上的不同位置處實(shí)現(xiàn)。在其他實(shí)施例中,基本電路設(shè)計(jì)的變體可以在集成電路上實(shí)現(xiàn)。通過對(duì)集成電路上的相同位置處的配置存儲(chǔ)位進(jìn)行編程來實(shí)現(xiàn)基本電路設(shè)計(jì)的不同變體的示例有時(shí)也被稱為重構(gòu)或部分重構(gòu),在此情況下所述重構(gòu)局限于集成電路上的配置存儲(chǔ)位的子集。
作為一個(gè)示例,考慮圖3,其具有電路設(shè)計(jì)A(305)和電路設(shè)計(jì)B(307)作為基本電路設(shè)計(jì)303的兩個(gè)變體。在此示例中,CAD工具310(例如,圖2的CAD工具260)可以生成用于基本電路設(shè)計(jì)303的基本配置數(shù)據(jù)343,CAD工具315可以分別生成用于電路設(shè)計(jì)A(305)的配置數(shù)據(jù)A(340)和用于電路設(shè)計(jì)B(307)的配置數(shù)據(jù)B(347)。
在某些實(shí)施例中,CAD工具315可以執(zhí)行與CAD工具310相同的操作以分別生成配置數(shù)據(jù)A(340)和配置數(shù)據(jù)B(347)。在其他實(shí)施例中,CAD工具315可以在與基本電路設(shè)計(jì)303相比的電路設(shè)計(jì)A(305)和電路設(shè)計(jì)B(307)的新的或改變的部件上執(zhí)行增量操作(例如,增量合成、增量布置、增量布線等)。增量編譯可以保存涉及與基本配置數(shù)據(jù)343相比的電路設(shè)計(jì)A(305)和電路設(shè)計(jì)B(307)的舊的或未改變的部件的基本配置數(shù)據(jù)343的部分,并且為與基本電路設(shè)計(jì)303相比的電路設(shè)計(jì)A(305)和電路設(shè)計(jì)B(307)的新的或改變的部件生成新的配置數(shù)據(jù)。
在共同轉(zhuǎn)讓的美國專利第8,296,695號(hào)、第8,484,596號(hào)、第8,281,274號(hào)和第8,539,418號(hào)以及美國專利公開號(hào)14/200,897中描述了增量操作,這些專利文件通過引用整體合并于此。
編碼電路320可以接收配置數(shù)據(jù)A(340)和基本配置數(shù)據(jù)343。編碼電路320可以包括電路系統(tǒng)323和電路系統(tǒng)327,電路系統(tǒng)323確定配置數(shù)據(jù)A(340)和基本配置數(shù)據(jù)343之間的差異/差分(difference),并且電路系統(tǒng)327壓縮配置數(shù)據(jù)A(340)和基本配置數(shù)據(jù)343之間的確定的差異以產(chǎn)生壓縮的配置數(shù)據(jù)A(350)。
圖4中示出了編碼電路320的一個(gè)實(shí)施例。如圖4所示,電路系統(tǒng)323可以由配置數(shù)據(jù)410與基本配置數(shù)據(jù)430之間的逐位邏輯異或(XOR)操作420實(shí)現(xiàn)以確定不同的比特位。在此示例中,不同的比特位是邏輯‘1’,相同的比特位是邏輯‘0’。
根據(jù)需要,圖3的電路系統(tǒng)323可以執(zhí)行其他操作以確定配置數(shù)據(jù)A(340)與基本配置數(shù)據(jù)343之間的差異。例如,電路系統(tǒng)323可以執(zhí)行配置數(shù)據(jù)A(340)和基本配置數(shù)據(jù)343的減法、加法、逐位邏輯異或非(XNOR)操作以確定它們的差異/差分。
如圖3所示,編碼電路320可以包括電路系統(tǒng)327,該電路系統(tǒng)327壓縮差異/差分操作的結(jié)果以產(chǎn)生壓縮的配置數(shù)據(jù)A(350)。電路系統(tǒng)327可以實(shí)現(xiàn)任何無損數(shù)據(jù)壓縮技術(shù)。無損數(shù)據(jù)壓縮技術(shù)可以在保存所有信息的同時(shí)利用數(shù)據(jù)統(tǒng)計(jì)冗余來表示由具有較少位的數(shù)據(jù)傳送的信息,并且由此確保壓縮操作是完全可逆的。例如,電路系統(tǒng)327可以實(shí)現(xiàn)基于語法的代碼(例如Sequitur算法)、Lempel-Ziv壓縮方法(例如DEFLATE算法)或熵編碼(例如Huffman編碼或算術(shù)編碼),僅舉幾例。
如圖4所示,電路系統(tǒng)327可以執(zhí)行熵編碼操作440。熵編碼操作440可以壓縮配置數(shù)據(jù)410和基本配置數(shù)據(jù)430的逐位邏輯異或(XOR)操作420的結(jié)果并且產(chǎn)生壓縮的配置數(shù)據(jù)450。
作為一個(gè)示例,考慮熵編碼操作440實(shí)現(xiàn)Huffman編碼。如同其他熵編碼,Huffman編碼可以使用較少的比特位來表示與較不常見的符號(hào)相比更常見的符號(hào)。在使用配置數(shù)據(jù)410和基本配置數(shù)據(jù)430的逐位邏輯異或操作420的示例中,如果配置數(shù)據(jù)410和基本配置數(shù)據(jù)430是相似的,則邏輯‘0’可能比邏輯‘1’更常見。
類似地,圖3的編碼電路320可以接收配置數(shù)據(jù)B(347)和基本配置數(shù)據(jù)343。編碼電路320可以使用差異/差分電路系統(tǒng)323來確定配置數(shù)據(jù)B(347)和基本配置數(shù)據(jù)343之間的差異。編碼電路320可以進(jìn)一步使用壓縮電路系統(tǒng)327來壓縮所述差異/差分操作的結(jié)果以產(chǎn)生壓縮的配置數(shù)據(jù)B(357)。
根據(jù)需要,編碼電路320可以被實(shí)現(xiàn)為CAD工具(例如圖2A的CAD工具210),并且可以使用基本配置數(shù)據(jù)343和配置數(shù)據(jù)A(340)或配置數(shù)據(jù)B(347)在計(jì)算裝備上執(zhí)行以分別生成壓縮的配置數(shù)據(jù)A(350)和B(357)。在一些實(shí)施例中,編碼電路320可以是位于集成電路上或集成電路之外并且執(zhí)行配置數(shù)據(jù)的編碼的專用電路。在其他實(shí)施例中,編碼電路320可以是被編程用于對(duì)配置數(shù)據(jù)進(jìn)行編碼的可配置電路。
可以存在一個(gè)編碼電路320,該編碼電路320在不同時(shí)間處理不同配置數(shù)據(jù)的編碼。根據(jù)需要,可以存在編碼電路320的多個(gè)實(shí)例,其中每個(gè)實(shí)例處理配置數(shù)據(jù)的單獨(dú)集合??商娲?,可以存在編碼電路320的一些實(shí)例,這些實(shí)例在不同時(shí)間處理不同配置數(shù)據(jù)的編碼,而編碼電路320的其他實(shí)例處理單獨(dú)的配置數(shù)據(jù)集。
一個(gè)或多個(gè)存儲(chǔ)電路可以分別存儲(chǔ)基本配置數(shù)據(jù)343和壓縮的配置數(shù)據(jù)A(350)和B(357)。實(shí)現(xiàn)電路設(shè)計(jì)A(305)的集成電路可以包括所述一個(gè)或多個(gè)存儲(chǔ)電路(例如,在同一管芯(die)中或同一封裝件中)。根據(jù)需要,所述一個(gè)或多個(gè)存儲(chǔ)電路可以在該集成電路之外。在一些實(shí)施例中,該集成電路可以包括至少一個(gè)存儲(chǔ)電路以存儲(chǔ)壓縮的配置數(shù)據(jù)的至少一部分,而存儲(chǔ)所述壓縮的配置數(shù)據(jù)的剩余部分的其余存儲(chǔ)電路位于該集成電路之外。
為了在集成電路(例如圖1的可編程邏輯器件100)中實(shí)現(xiàn)電路設(shè)計(jì)A,圖3的解碼電路330可以訪問存儲(chǔ)壓縮的配置數(shù)據(jù)A(350)和基本配置數(shù)據(jù)343的所述一個(gè)或多個(gè)存儲(chǔ)電路。解碼電路330可以包括解壓所述壓縮的配置數(shù)據(jù)A(350)的電路系統(tǒng)334以及確定壓縮的配置數(shù)據(jù)A(350)的壓縮版本和基本配置數(shù)據(jù)343之間的差異以恢復(fù)配置數(shù)據(jù)A(340)的電路系統(tǒng)336。
電路系統(tǒng)334可以實(shí)現(xiàn)任何無損數(shù)據(jù)壓縮技術(shù),只要所選擇的解壓技術(shù)逆轉(zhuǎn)了在電路系統(tǒng)327中執(zhí)行的數(shù)據(jù)壓縮即可。作為一個(gè)示例,考慮圖5中所示的操作。如圖5所示,電路系統(tǒng)334可以執(zhí)行熵解碼操作520。熵解碼操作520可以解壓被壓縮的配置數(shù)據(jù)510。作為一個(gè)示例,考慮圖4的熵編碼操作440實(shí)現(xiàn)Huffman編碼。結(jié)果,圖5的熵解碼520可以實(shí)現(xiàn)Huffman解碼。
圖3的電路系統(tǒng)336可以確定由電路系統(tǒng)334生成的解壓配置數(shù)據(jù)與基本配置數(shù)據(jù)343之間的差異。電路系統(tǒng)336可以實(shí)現(xiàn)任何差異操作,只要所選擇的差異操作逆轉(zhuǎn)了在電路系統(tǒng)323中執(zhí)行的差異操作即可。例如,如果差異操作323是加法,差異操作336可以執(zhí)行減法;如果差異操作323是減法,差異操作336可以執(zhí)行加法;如果差異操作323是逐位邏輯異或非(XNOR)操作,差異操作336可以執(zhí)行逐位邏輯異或非(XNOR)操作,等等。
如圖5所示,電路系統(tǒng)336可以實(shí)現(xiàn)由熵解碼520生成的解壓配置數(shù)據(jù)與基本配置數(shù)據(jù)540之間的逐位邏輯異或(XOR)操作530以逆轉(zhuǎn)圖4的逐位邏輯異或(XOR)操作420并且恢復(fù)配置數(shù)據(jù)550,所述配置數(shù)據(jù)550與圖4的配置數(shù)據(jù)410相同。
類似地,圖3的解碼電路330可以接收壓縮的配置數(shù)據(jù)B(357)和基本配置數(shù)據(jù)343。解碼電路330可以使用電路系統(tǒng)334來解壓被壓縮的配置數(shù)據(jù)B(357)。解碼電路320可以使用電路系統(tǒng)336來確定解壓操作334的結(jié)果與基本配置數(shù)據(jù)343之間的差異以恢復(fù)配置數(shù)據(jù)B(347)。
考慮以下情景:電路設(shè)計(jì)A和電路設(shè)計(jì)B實(shí)現(xiàn)相同的功能并且配置數(shù)據(jù)A(340)與配置數(shù)據(jù)B(347)的區(qū)別之處在于配置數(shù)據(jù)A(340)和配置數(shù)據(jù)B(347)以集成電路上的不同位置為目標(biāo)。在這一情景下,解碼電路330可以從存儲(chǔ)電路中檢索壓縮的配置數(shù)據(jù)A(350)和壓縮的配置數(shù)據(jù)B(357),并且恢復(fù)配置數(shù)據(jù)A(340)和配置數(shù)據(jù)B(347)。然后,恢復(fù)的配置數(shù)據(jù)A(340)和B(347)可以用于對(duì)集成電路上的配置存儲(chǔ)位進(jìn)行編程,從而分別實(shí)現(xiàn)電路設(shè)計(jì)A(305)和B(307)。
在另一情景中,電路設(shè)計(jì)A(305)和B(307)可以表示在集成電路上的部分重構(gòu)框架中實(shí)現(xiàn)的基本電路設(shè)計(jì)的變體。換言之,電路設(shè)計(jì)A(305)和B(307)可以實(shí)現(xiàn)不同的功能,但是以集成電路上的相同位置為目標(biāo)。在這一情景下,解碼電路330可以從存儲(chǔ)電路中檢索壓縮的配置數(shù)據(jù)A(350),并且恢復(fù)配置數(shù)據(jù)A(340)。然后,恢復(fù)的配置數(shù)據(jù)A(340)可以用于對(duì)集成電路上的給定位置處的配置存儲(chǔ)位進(jìn)行編程,從而實(shí)現(xiàn)電路設(shè)計(jì)A(305)。電路設(shè)計(jì)A可以在第一持續(xù)時(shí)間中運(yùn)行。
在第一持續(xù)時(shí)間之后,解碼電路330可以從存儲(chǔ)電路中檢索壓縮的配置數(shù)據(jù)B(357),并且恢復(fù)配置數(shù)據(jù)B(347)。然后,恢復(fù)的配置數(shù)據(jù)B(347)可以用于對(duì)集成電路上的給定位置處的配置存儲(chǔ)位進(jìn)行重新編程,從而實(shí)現(xiàn)電路設(shè)計(jì)B(307)。電路設(shè)計(jì)B可以在第二持續(xù)時(shí)間中運(yùn)行。
根據(jù)需要,編碼電路330可以被實(shí)現(xiàn)為CAD工具(例如圖2A的CAD工具210),并且可以使用基本配置數(shù)據(jù)343和壓縮的配置數(shù)據(jù)A(350)或壓縮的配置數(shù)據(jù)B(357)在計(jì)算裝備上執(zhí)行以分別恢復(fù)配置數(shù)據(jù)A(340)和B(347)。在一些實(shí)施例中,解碼電路330可以是執(zhí)行壓縮配置數(shù)據(jù)的解碼的專用電路。在其他實(shí)施例中,解碼電路330可以是被編程用于對(duì)配置數(shù)據(jù)進(jìn)行解碼的可配置電路。
可以存在一個(gè)解碼電路330,所述解碼電路330在不同時(shí)間處理不同的壓縮配置數(shù)據(jù)的解碼。根據(jù)需要,可以存在解碼電路330的多個(gè)實(shí)例,其中每個(gè)實(shí)例處理單獨(dú)的壓縮配置數(shù)據(jù)集??商娲?,可以存在解碼電路330的一些實(shí)例,這些實(shí)例在不同時(shí)間處理不同的壓縮配置數(shù)據(jù)的解碼,而解碼電路330的其他實(shí)例處理單獨(dú)的壓縮配置數(shù)據(jù)集。
圖6是根據(jù)一個(gè)實(shí)施例用于基于具有基本配置數(shù)據(jù)集的變化的比較生成壓縮的配置數(shù)據(jù)集的說明性步驟的流程圖。在步驟610中,CAD工具可以生成用于電路設(shè)計(jì)的基本配置數(shù)據(jù)集。例如,圖3的CAD工具310可以生成基本電路設(shè)計(jì)303的基本配置數(shù)據(jù)343。
在步驟620中,CAD工具可以生成對(duì)應(yīng)于第一電路設(shè)計(jì)的第一配置數(shù)據(jù)集,該第一配置數(shù)據(jù)集在集成電路上的第一位置處實(shí)現(xiàn)第一電路設(shè)計(jì)。例如,圖3的CAD工具315可以生成電路設(shè)計(jì)A(305)的配置數(shù)據(jù)A(340)。
在步驟630中,CAD工具可以將第一配置數(shù)據(jù)集與基本配置數(shù)據(jù)集進(jìn)行比較以獲得第一配置數(shù)據(jù)差異集/差分集。例如,圖3的電路系統(tǒng)323可以確定配置數(shù)據(jù)A(340)與基本配置數(shù)據(jù)343之間的差異/差分。
在步驟640中,CAD工具可以壓縮第一配置數(shù)據(jù)差異集/差分集以產(chǎn)生壓縮的第一配置數(shù)據(jù)差異集/差分集。例如,圖3的電路系統(tǒng)327可以壓縮電路系統(tǒng)323的輸出以產(chǎn)生壓縮的配置數(shù)據(jù)A(350)。
圖7是根據(jù)本發(fā)明的一個(gè)實(shí)施例用于生成兩個(gè)壓縮的配置數(shù)據(jù)集以及將這些壓縮的數(shù)據(jù)集存儲(chǔ)在存儲(chǔ)電路中的說明性步驟的流程圖。在步驟710中,CAD工具可以生成第一電路設(shè)計(jì)的第一配置數(shù)據(jù)集。第一配置數(shù)據(jù)集可以在集成電路上的第一位置處實(shí)現(xiàn)第一電路設(shè)計(jì)。
在步驟720中,CAD工具可以從第一配置數(shù)據(jù)集中推導(dǎo)出第二配置數(shù)據(jù)集。第二配置數(shù)據(jù)集可以包括與一部分第一配置數(shù)據(jù)集相同的至少一部分。例如,第二配置數(shù)據(jù)集可以在集成電路上的不同位置處實(shí)現(xiàn)與第一配置數(shù)據(jù)集相同的功能。在此示例中,在兩個(gè)配置數(shù)據(jù)集中用于確定電路設(shè)計(jì)的功能的一部分配置數(shù)據(jù)可以相同,而在兩個(gè)配置數(shù)據(jù)集中用于確定集成電路上的電路設(shè)計(jì)實(shí)施的位置的的一部分配置數(shù)據(jù)可以不同。
在步驟730中,CAD工具可以壓縮第一和第二配置數(shù)據(jù)集以產(chǎn)生壓縮的第一和第二配置數(shù)據(jù)集。例如,CAD工具可以使用熵編碼,例如Huffman編碼、算術(shù)編碼、通用編碼或Golomb編碼。在步驟740中,CAD工具可以將壓縮的第一和第二配置數(shù)據(jù)集存儲(chǔ)在存儲(chǔ)電路中。
本文所描述的方法和裝置可以被并入任何合適的集成電路或集成電路系統(tǒng)。例如,所述方法或裝置可以被并入許多類型的設(shè)備,例如微處理器或其他IC。示例性IC包括可編程陣列邏輯(PAL)、可編程邏輯陣列(PLA)、現(xiàn)場(chǎng)可編程邏輯陣列(FPLA)、電可編程集成電路(EPLD)、電可擦除可編程集成電路(EEPLD)、邏輯單元陣列(LCA)、現(xiàn)場(chǎng)可編程門陣列(FPGA)、專用標(biāo)準(zhǔn)產(chǎn)品(ASSP)和專用集成電路(ASIC),僅舉幾例。
本文所描述的可編程集成電路可以是數(shù)據(jù)處理系統(tǒng)的一部分,該數(shù)據(jù)處理系統(tǒng)包括以下部件中的一個(gè)或多個(gè):處理器、存儲(chǔ)器、I/O電路系統(tǒng)和外圍設(shè)備。該數(shù)據(jù)處理系統(tǒng)可以用于多種多樣的應(yīng)用,例如計(jì)算機(jī)聯(lián)網(wǎng)、數(shù)據(jù)網(wǎng)絡(luò)、裝備儀器、視頻處理、數(shù)字信號(hào)處理或任何其他合適的應(yīng)用,其中使用可編程或可重新編程的邏輯的優(yōu)點(diǎn)是令人期望的。可編程集成電路可被用于執(zhí)行各種各樣的不同邏輯功能。例如,可編程集成電路可以被配置為與系統(tǒng)處理器協(xié)同工作的處理器或控制器??删幊碳呻娐芬部梢杂米髦俨闷?,用于仲裁對(duì)數(shù)據(jù)處理系統(tǒng)中的共享資源的訪問。在又一示例中,可編程集成電路可以被配置為處理器與系統(tǒng)中其他部件之一之間的接口。在一個(gè)實(shí)施例中,可編程集成電路可以是受讓人擁有的設(shè)備族之一。
盡管以特定順序描述了方法操作,但可以理解其他操作可以在所描述的這些操作之間執(zhí)行,所描述的操作可以被調(diào)整以使得其在稍微不同的時(shí)間進(jìn)行,或者所描述的操作可以分布在允許處理操作以與該處理相關(guān)的不同時(shí)間間隔發(fā)生的系統(tǒng)中,只要覆蓋操作的處理以期望方式執(zhí)行即可。
附加實(shí)施例
附加實(shí)施例1.一種配置電路系統(tǒng),其包括:接收基本配置數(shù)據(jù)集和第一數(shù)據(jù)集的解碼電路,其中第一數(shù)據(jù)集包括基本配置數(shù)據(jù)集與解碼的配置數(shù)據(jù)集之間的壓縮數(shù)據(jù)差異,并且其中該解碼電路包括:接收第一數(shù)據(jù)集并解壓第一數(shù)據(jù)集以創(chuàng)建第二數(shù)據(jù)集的第一電路;以及接收基本配置數(shù)據(jù)集和來自第一電路的第二數(shù)據(jù)集并使用基本配置數(shù)據(jù)集和第二數(shù)據(jù)集輸出解碼的配置數(shù)據(jù)集的第二電路。
附加實(shí)施例2.如附加實(shí)施例1所述的配置電路系統(tǒng),其中該配置電路系統(tǒng)使用解碼的配置數(shù)據(jù)集對(duì)可配置電路進(jìn)行編程以便在該可配置電路上實(shí)現(xiàn)第一電路設(shè)計(jì)。
附加實(shí)施例3.如附加實(shí)施例2所述的配置電路系統(tǒng),其中第一電路接收第三數(shù)據(jù)集,該第三數(shù)據(jù)集包括基本配置數(shù)據(jù)集與附加解碼的配置數(shù)據(jù)集之間的其他壓縮數(shù)據(jù)差異,并且其中第一電路解壓所接收的第三數(shù)據(jù)集以創(chuàng)建第四數(shù)據(jù)集。
附加實(shí)施例4.如附加實(shí)施例3所述的配置電路系統(tǒng),其中第二電路接收基本配置數(shù)據(jù)集和來自第一電路的第四數(shù)據(jù)集,其中第二電路使用基本配置數(shù)據(jù)集和第四數(shù)據(jù)集恢復(fù)附加解碼的配置數(shù)據(jù)集。
附加實(shí)施例5.如附加實(shí)施例4所述的配置電路系統(tǒng),其中該配置電路系統(tǒng)使用附加解碼的配置數(shù)據(jù)集對(duì)附加可配置電路進(jìn)行編程以便在該附加可配置電路上實(shí)現(xiàn)第一電路設(shè)計(jì)。
附加實(shí)施例6.如附加實(shí)施例4所述的配置電路系統(tǒng),其中該配置電路系統(tǒng)使用附加解碼的配置數(shù)據(jù)集對(duì)可配置電路進(jìn)行編程以便在該可配置電路上實(shí)現(xiàn)第二電路設(shè)計(jì)。
附加實(shí)施例7.如附加實(shí)施例1所述的配置電路系統(tǒng),其中第一電路進(jìn)一步包括:執(zhí)行熵解碼的熵解碼電路。
附加實(shí)施例8.如附加實(shí)施例7所述的配置電路系統(tǒng),其中熵解碼包括選自由以下各項(xiàng)組成的群組的方法:Huffman解碼、算術(shù)解碼、通用解碼和Golomb解碼。
附加實(shí)施例9.如附加實(shí)施例1所述的配置電路系統(tǒng),其中第二電路進(jìn)一步包括:邏輯異或門,其生成基本配置數(shù)據(jù)集的比特位與第二數(shù)據(jù)集的比特位之間的邏輯異或。
附加實(shí)施例10.一種用于處理配置數(shù)據(jù)集的方法,其包括:使用計(jì)算機(jī)輔助設(shè)計(jì)(CAD)工具生成用于電路設(shè)計(jì)的基本配置數(shù)據(jù)集;使用計(jì)算機(jī)輔助設(shè)計(jì)工具生成對(duì)應(yīng)于第一電路設(shè)計(jì)的第一配置數(shù)據(jù)集,其中第一配置數(shù)據(jù)集在集成電路上的第一位置處實(shí)現(xiàn)第一電路設(shè)計(jì);將第一配置數(shù)據(jù)集與基本配置數(shù)據(jù)集進(jìn)行比較以獲得第一配置數(shù)據(jù)差異集;以及壓縮第一配置數(shù)據(jù)差異集以產(chǎn)生壓縮的第一配置數(shù)據(jù)差異集。
附加實(shí)施例11.如附加實(shí)施例10所述的方法,進(jìn)一步包括:使用計(jì)算機(jī)輔助設(shè)計(jì)工具利用第一電路設(shè)計(jì)生成第二配置數(shù)據(jù)集,其中第二配置數(shù)據(jù)集在集成電路上的第二位置處實(shí)現(xiàn)第一電路設(shè)計(jì);將第二配置數(shù)據(jù)集與基本配置數(shù)據(jù)集進(jìn)行比較以確定第二配置數(shù)據(jù)差異集;以及壓縮第二配置數(shù)據(jù)差異集以產(chǎn)生壓縮的第二配置數(shù)據(jù)差異集。
附加實(shí)施例12.如附加實(shí)施例10所述的方法,其中壓縮第一配置數(shù)據(jù)差異集進(jìn)一步包括:執(zhí)行第一配置數(shù)據(jù)差異集的熵編碼。
附加實(shí)施例13.如附加實(shí)施例12所述的方法,其中所述熵編碼從由以下各項(xiàng)組成的群組中選擇:Huffman編碼、算術(shù)編碼、通用編碼和Golomb編碼。
附加實(shí)施例14.如附加實(shí)施例10所述的方法,進(jìn)一步包括:基于第一壓縮的配置數(shù)據(jù)差異集和基本配置數(shù)據(jù)集恢復(fù)第一配置數(shù)據(jù)集;以及使用恢復(fù)的第一配置數(shù)據(jù)集對(duì)集成電路上的第一位置處的電路系統(tǒng)進(jìn)行編程以實(shí)現(xiàn)第一電路設(shè)計(jì)。
附加實(shí)施例15.如附加實(shí)施例14所述的方法,其中恢復(fù)第一配置數(shù)據(jù)集進(jìn)一步包括:通過解壓所述壓縮的第一配置數(shù)據(jù)差異集產(chǎn)生所述第一配置數(shù)據(jù)差異集;以及將所述第一配置數(shù)據(jù)差異集與基本配置數(shù)據(jù)集進(jìn)行比較以確定第一配置數(shù)據(jù)集。
附加實(shí)施例16.如附加實(shí)施例14所述的方法,進(jìn)一步包括:使用計(jì)算機(jī)輔助設(shè)計(jì)工具生成不同于第一電路設(shè)計(jì)的第二電路設(shè)計(jì)的第二配置數(shù)據(jù)集;將第二配置數(shù)據(jù)集與基本配置數(shù)據(jù)集進(jìn)行比較以確定第二配置數(shù)據(jù)差異集;以及基于第二配置數(shù)據(jù)差異集產(chǎn)生壓縮的第二配置數(shù)據(jù)差異集。
附加實(shí)施例17.如附加實(shí)施例16所述的方法,進(jìn)一步包括:基于壓縮的第二配置數(shù)據(jù)差異集和基本配置數(shù)據(jù)集恢復(fù)第二配置數(shù)據(jù)集;以及使用恢復(fù)的第二配置數(shù)據(jù)集對(duì)集成電路上的第一位置處的電路系統(tǒng)進(jìn)行編程以實(shí)現(xiàn)第二電路設(shè)計(jì)。
附加實(shí)施例18.如附加實(shí)施例10所述的方法,其中生成第一電路設(shè)計(jì)的第一配置數(shù)據(jù)集進(jìn)一步包括:執(zhí)行第一電路設(shè)計(jì)的增量編譯以生成第一配置數(shù)據(jù)集,其中第一電路設(shè)計(jì)和基本電路設(shè)計(jì)至少部分相同,并且其中增量編譯基于基本配置數(shù)據(jù)集的至少一部分產(chǎn)生第一配置數(shù)據(jù)集。
附加實(shí)施例19.一種生成用于可配置電路的配置數(shù)據(jù)的方法,其包括:生成用于第一電路設(shè)計(jì)的第一配置數(shù)據(jù)集,其中第一配置數(shù)據(jù)集在集成電路上的第一位置處實(shí)現(xiàn)第一電路設(shè)計(jì);從第一配置數(shù)據(jù)集推導(dǎo)出第二配置數(shù)據(jù)集,其中第二配置數(shù)據(jù)集包括與第一配置數(shù)據(jù)集相同的至少一部分;以及壓縮第一和第二配置數(shù)據(jù)集以分別產(chǎn)生壓縮的第一和第二配置數(shù)據(jù)集。
附加實(shí)施例20.如附加實(shí)施例19所述的方法,其中推導(dǎo)出第二配置數(shù)據(jù)集進(jìn)一步包括:生成用于第二電路設(shè)計(jì)的第三配置數(shù)據(jù)集,其中第三配置數(shù)據(jù)集在集成電路上的第一位置處實(shí)現(xiàn)第二電路設(shè)計(jì)。
附加實(shí)施例21.如附加實(shí)施例20所述的方法,進(jìn)一步包括:將第三配置數(shù)據(jù)集與第一配置數(shù)據(jù)集進(jìn)行比較以產(chǎn)生第二配置數(shù)據(jù)集,其中第二配置數(shù)據(jù)集反映第一和第三配置數(shù)據(jù)集之間的差異。
附加實(shí)施例22.如附加實(shí)施例19所述的方法,其中推導(dǎo)出第二配置數(shù)據(jù)集進(jìn)一步包括:生成集成電路上的第一位置與集成電路上的第二位置之間的位置偏移。
附加實(shí)施例23.如附加實(shí)施例22所述的方法,進(jìn)一步包括:將位置偏移與第一配置數(shù)據(jù)集進(jìn)行組合以產(chǎn)生第二配置數(shù)據(jù)集,其中第二配置數(shù)據(jù)集在集成電路上的第二位置處實(shí)現(xiàn)第一電路設(shè)計(jì)。
附加實(shí)施例24.如附加實(shí)施例19所述的方法,進(jìn)一步包括:將壓縮的第一和第二配置數(shù)據(jù)集存儲(chǔ)在存儲(chǔ)電路中。
附加實(shí)施例25.如附加實(shí)施例19所述的方法,其中壓縮第一和第二數(shù)據(jù)集進(jìn)一步包括:使用無損編碼來產(chǎn)生壓縮的第一配置數(shù)據(jù)集。
前述的僅僅是本發(fā)明的示例性原理,并且各種不同的修改能夠由本領(lǐng)域技術(shù)人員在不背離本發(fā)明的范圍和精神的情況下作出。前述實(shí)施例可以單獨(dú)地實(shí)現(xiàn)或者以任意組合的方式實(shí)現(xiàn)。