專利名稱:用于產生和擴展結構化asic邏輯庫和其他功能的方法
技術領域:
0001本發(fā)明涉及專用集成電路(ASIC),更具體地,涉及一種類型的專用集成電路,其有時被稱為結構化的專用集成電路。
背景技術:
0002所謂的結構化的專用集成電路有時被用作可編程邏輯器件(PLD),諸如現(xiàn)場可編程門陣列(FPGA)的那些替代品?,F(xiàn)場可編程門陣列具有一個通用的結構,其可包括許多相同的邏輯電路塊,許多寄存器和許多其他類型的電路塊,諸如RAM塊、DSP塊、PLL/DLL塊等等。這些不同的電路是可編程的,以執(zhí)行任何各種各樣的任務。FPGA也具有通用的互連結構。這個結構是可編程的,從而以許多不同方式的任何方式將器件上的其他電路互連。這種現(xiàn)場可編程門陣列的邏輯塊可被稱為邏輯元件、邏輯模塊、自適應的邏輯元件或自適應的邏輯模塊(LE、LM、ALE或ALM)。
0003等同于現(xiàn)場可編程門陣列的已知類型的結構化專用集成電路具有一種通用的結構,其包括相對簡單的電路塊的許多同樣的實例(所謂的混合邏輯元件或者HLE)。結構化專用集成電路一般也包括其他塊,這些其它塊可和相關的FPGA上的特定目的塊(例如RAM塊、DSP塊、PLL/DLL塊等等)比較。結構化專用集成電路的這些通用屬性實施在幾個用于制造ASIC的掩模中。因此,這些掩模對于這個普通類型的所有ASIC都是相同的或者基本相同的,并且它們給ASIC提供其“結構”。其他掩模(但是僅僅是總掩模集合中的一些)被定制,以給結構化的ASIC提供特定的功能,該功能等同于相關的編程FPGA的功能。例如這些定制的掩模可配置HLE或一小組或一簇HLE(復合HLE或CHLE)來執(zhí)行等同于那些在相關的編程FPGA中的由ALE執(zhí)行的功能。類似地,定制的掩??膳渲肅HLE執(zhí)行等同于在相關的編程FPGA中的寄存器的功能。定制的掩模也可提供HLE、CHLE和/或ASIC上的其他電路塊之間的互連。這些互連典型地包括等同于相關的編程FPGA的可編程互連資源提供的那些互連。
0004使用這種類型的結構化ASIC并且以這種方式使用具有許多優(yōu)點。例如,僅僅需要定制一些ASIC掩模。這有助于減少ASIC成本,并且加速ASIC設計/生產周期。這也減少了ASIC中的設計缺陷的風險,而且有利于生產一種ASIC,其是相關的編程FPGA的起接近作用(close operational)的等同物(例如管腳對管腳等同、時序等同或接近等同等等)。這個方法的另一優(yōu)點是它往往允許ASIC包括比相關FPGA更少的電路(對于正常操作包括更少的電路)。這是因為只有必要的ASIC HLE專用于執(zhí)行每個FPGA ALE的功能,而且在幾乎所有的FPGA中,許多ALE沒有被完全利用。
0005通過使用從FPGA電路塊功能到ASIC HLE/CHLE功能的已知的(庫)轉換,從FPGA設計到結構化ASIC設計(或反過來)的高效和可靠轉換變得容易。對于從FPGA ALE到ASIC HLE/CHLE的轉換更是如此。典型的FPGA ALE是可編程的,以執(zhí)行大量功能中的任何一個功能。因此所希望的是在已經為轉換制訂的庫解決方案中累積這種FPGA ALE功能的數(shù)量越多越好,可以是可合理累積的數(shù)量。在庫中包括FPGA ALE功能轉換就避免了在未來可能需要以可能低效的方式實現(xiàn)那個功能,諸如通過使用幾個HLE和/或CHLE不得不中止它來實施,這些HLE和/或CHLE必須使用-“更昂貴”的ASIC的全球互連資源。這比能夠在一個CHLE中實現(xiàn)該功能低效,例如,在該CHLE中使用-“不太昂貴”的ASIC的本地互連資源使得所有的HLE互連。
發(fā)明內容
0006根據(jù)這個發(fā)明,一種用于向一個庫中添加邏輯功能的結構化ASIC等同物的方法,包括將可能的新邏輯功能的特性與已經在該庫中的邏輯功能的類似特性比較。所述方法進一步包括設計可能的新邏輯功能的結構化ASIC等同物,以及從該設計中提取一個特征值(signature value),該值是所述設計的說明。如果特性比較指出在所述庫中沒有邏輯功能具有可與可能的新邏輯功能的特性相比的特性,那么可能的新邏輯功能的結構化ASIC等同物(及其特征值)被添加到所述庫中。另一方面,如果特性比較發(fā)現(xiàn)相同邏輯功能特性的一個或多個實例已經在所述庫中,那么僅當滿足一個和多個額外的測試時,可能的新邏輯功能的結構化ASIC等同物(及其特征值)才被添加到所述庫中。例如,一種這樣的測試可能要求可能的新邏輯功能的結構化ASIC等同物利用的某個結構化ASIC電路的實例的數(shù)量不超過與已經在所述庫中的相同邏輯功能特性的任何其他實例關聯(lián)的結構化ASIC等同物。
0007從附圖和下面的詳細描述,本發(fā)明的其他特征、其本質和各種優(yōu)點將變得更加明顯。
0008圖1是本領域技術人員公知的FPGA電路的說明性基本單元的簡化示意塊圖。
0009圖2是結構化ASIC電路的說明性基本單元的簡化示意塊圖,該電路在解釋本發(fā)明的某些方面是有用的。
0010圖3是簡化的示意塊圖,其顯示FPGA和結構化ASIC電路中的某個說明性電路功能的等同實現(xiàn)。
0011圖4a-4g一起包括本發(fā)明說明性實施例的簡化流程圖。
0012圖5是結構化ASIC邏輯的說明性規(guī)范或者設計的簡化的部分清單,其在解釋本發(fā)明的各個方面是有用的。
具體實施例方式
0013這個說明書在從特定類型的FPGA到特定類型的結構化ASIC的邏輯設計轉換的背景下說明了本發(fā)明。在參考文獻諸如Chua等人于2004年7月2日提交的美國專利申請10/884460和Schleicher等人于2005年2月3日提交的美國專利申請10/050607中更詳細解釋了這些類型的FPGA和結構化ASIC,這些參考文獻在此全部并入。然而,為了便于不需要參考任何其它的文件就可以理解本發(fā)明,下面的幾段和相關的圖1-3從上面提到的Schleicher等人的參考文獻復制而來(其中只有很少的修改)。
0014圖1顯示了包括在FPGA中的一個基本邏輯電路構造塊或者單元10的說明性示例。這個FPGA構造塊電路(有時也稱為自適應邏輯元件“ALE”或自適應邏輯模塊“ALM”)對于本領域技術人員來說是公知的,因此在這里以某種簡化的方式描述。ALE 10包括多路復用器22、24、52、54、56、62、64、66、82、84、86、92、94、96、102、112、122、124、126、132、134、136、152、154、156、162、164和166。大多數(shù)這些多路復用器是由可編程的隨機存取存儲器(“RAM”)位編程控制的,這些位一般不顯示在圖中(雖然圖1中顯示了RAM位58和68)。這些多路復用器中的一些是由可在器件的正常工作過程中變化的信號更加動態(tài)地控制的。多路復用器112是這個后一類型的多路復用器的例子。它是由ALE 10的輸入F1控制的。
0015ALE 10還包括查找表(“LUT”)32、34、36、42、44和46。LUT 32和42是四輸入查找表。其他的LUT是三輸入查找表。這些LUT中的每一個都是可編程的,以提供一個輸出信號,該信號是那個LUT的輸入信號的任何邏輯組合。
0016ALE 10的其他組件是全加器72和74,與門128和138,以及觸發(fā)器142和144。空心圓顯示的導體互連(例如連接115)是可編程的互連,這意味著互連可能由用戶或者不由用戶形成,由用戶隨意選擇。
0017ALE 10的LUT資源足以使得ALE能夠形成ALE的多達6個輸入的任何邏輯組合?;蛘撸绻麅蓚€較小的功能具有某些共同的輸入,那么ALE 10的LUT資源就足以執(zhí)行兩個這樣的功能。例如,ALE 10形成兩個五輸入組合、兩個四輸入組合等等是可能的。
0018全加器72和74增強了ALE 10的運算能力。例如,這些組件給予ALE 10這樣的能力執(zhí)行兩個數(shù)的二進制加法的兩個相鄰位置(place),包括處理進位入(carry in)信號和進位出(carry out)信號。
0019寄存器142和144(以及關聯(lián)的電路)允許ALE 10中的信號登記(通過寄存器登記)或者不登記(繞過寄存器)。不一定要使用ALE 10寄存器來登記源自ALE的信號??商娲褂玫囊粋€寄存器(處于所謂的孤獨寄存器模式)來登記輸入到ALE的信號。ALE的其他電路可用于其他目的,而寄存器142和144中的一個或者兩者都用于孤獨寄存器模式。寄存器142和144也能夠在不同的異步或同步模式中工作?!癉”是每個寄存器的正常數(shù)據(jù)輸入;“DATA”是異步載入數(shù)據(jù)。
0020圖2顯示了包括在結構化ASIC中的一個基本邏輯電路構造塊或者單元200的示例。這里圖2和上面提到的Chua等人的參考文獻中的圖3相同。因此這里簡化了對圖2的描述。構造塊200也可以被稱為混合邏輯元件或HLE。
0021HLE 200包括兩輸入多路復用器210,與非門220a和220b,反相器230a和230b。HLE 200還包括一些互連資源,其中的一些是掩??删幊痰摹@?,X識別的位置是導線段可通過用于制造ASIC的適當定制的一個掩模(或多個掩模)彼此連接或不連接的位置(根據(jù)需要)。類似地,O識別的位置是如果需要的話,可連接到一個或多個電路層(沒有示出)的位置,在所述電路層中可提供相對長距離的互連導線。同樣,這些連接和互連是通過用于制造ASIC的適當定制的一個或多個掩模形成的。在圖2中導線相交的實心點也是連接,其可根據(jù)需要在相交的導線之間進行連接或不進行連接。同樣,這些連接是通過用于制造ASIC的適當定制的一個或多個掩模形成的,如果需要的話。
0022顯然,HLE 200的邏輯功能比ALE 10(圖1)的邏輯功能少得多。但是相對小數(shù)量的相鄰或鄰近的HLE一般可被放在一起,以執(zhí)行ALE正在用戶的邏輯設計中執(zhí)行的任何功能,所述用戶的邏輯設計已經在FPGA中實現(xiàn)。例如,圖3顯示了三個HLE 200a、b和c與執(zhí)行特定的六輸入邏輯組合的ALE 10的LUT電路32/34/等等之間的等同。圖3也顯示了另外兩個的HLE 200d和e與ALE 10(其可以和圖3所示的正在執(zhí)行6輸入邏輯組合的ALE相同)的觸發(fā)器電路142或144之間的等同。應該理解的是在圖3中顯示的HLE 200a-e被極大簡化了。對于大部分來說,圖3中只顯示了實際使用的HLE電路元件和連接。圖2所示的所有其他HLE電路實際存在于每個HLE 200a-e中,但是這個細節(jié)中的一些從圖3描繪中省略(或者使用更淺的線顯示),以簡化圖3。被一起使用的多個HLE 200(例如用于執(zhí)行等同于能在ALE的LUT電路中執(zhí)行的組合邏輯,或者執(zhí)行等同于能在ALE的觸發(fā)器電路中執(zhí)行的寄存器功能)可被稱為HLE簇或族、復合HLE、或者CHLE。因此圖3顯示了兩個CHLE 202a和202b。
0023本發(fā)明涉及希望具有一個庫,該庫是一個問題的已知解決方案庫,該問題是將可在用戶的FPGA邏輯設計中實現(xiàn)的邏輯功能轉換成那些邏輯功能的結構化ASIC等同物。在這里顯示和描述的特定說明性背景中,本發(fā)明具體涉及構造一個庫,該庫包括從基于LUT的FPGA組合邏輯功能到基于HLE的結構化ASIC設計的已知轉換,和那些相同的邏輯功能的實現(xiàn)。現(xiàn)在將詳細描述本發(fā)明的這個說明性實施例。
0024將功能添加到一個功能庫的過程始于步驟510,該庫中具有等同于編程FPGAALE的結構化ASIC CHLE。在這個步驟,選擇包含LUT的一個或多個新用法的FPGA設計。
0025在步驟512,對于在步驟510中選定的設計中的每個LUT,確定那個LUT執(zhí)行的邏輯的典型形式(canonical form)。該典型形式是標準形式??蓪UT編程執(zhí)行的給定邏輯功能的任何形式由步驟512轉換成那個功能的典型(也就是普通或標準)形式。一旦已經確定該邏輯功能的典型形式,步驟512就進一步確定那個邏輯功能的庫單元鍵值。在這個實施例中,庫單元鍵值是存儲在LUT中的RAM單元中的數(shù)據(jù)的值加上邏輯功能的輸入數(shù)量,該LUT被編程以執(zhí)行邏輯功能的典型形式。在正在討論的特定例子中,ALE在其LUT電路中具有64個可編程的RAM單元。有時使用術語“LUT掩碼(lutmask)”來表示這些64位的值。64個二進制(RAM單元)值可由16個16進制的數(shù)字表示。據(jù)此,庫單元鍵值可以被認為是這些16個16進制數(shù)字加上到ALE的輸入數(shù)字。這里為了方便,在步驟512中庫單元鍵值的任何特定值被稱為X。
0026在步驟514,使用來自步驟512的庫單元鍵值X,訪問先前為其開發(fā)了CHLE等同物的單元庫。步驟514返回具有等于X的庫單元鍵值的所有現(xiàn)存的庫單元實例(如果有的話)。
0027步驟520測試步驟514的執(zhí)行是否已經產生任何結果。如果步驟514沒有發(fā)現(xiàn)具有等于X的鍵值的任何現(xiàn)存的庫單元,那么步驟520就使得控制傳到步驟522。如果步驟514發(fā)現(xiàn)一個或多個具有等于X的鍵值的現(xiàn)存的庫單元,那么步驟520就使得控制傳到步驟540。從步驟520到步驟522的分支將被首先考慮。
0028在步驟522,考慮中的LUT(對于在步驟514沒有發(fā)現(xiàn)現(xiàn)存的庫單元)可通過二叉決策圖(“BDD”)映射器軟件和NAND MUX包軟件起作用。這些類型的操作在2004年8月11提交的Yuan等人的美國專利申請10/916305號(律師摘要號174/341(A1682))中更詳細地描述,該專利申請在此通過參考全部并入。簡要地,BDD映射器軟件將LUT邏輯繪制成二叉決策樹(或圖),然后交換或置換(permute)那個樹或圖的輸入,直到找到具有最少數(shù)量的節(jié)點的邏輯等同圖。這將是能夠在具有最少數(shù)量的HLE的CHLE中實現(xiàn)的LUT的形式。然后作為下一步,檢查在這些HLE中的功能,以確定在下游HLE中的任何功能是否能夠被打包到上游HLE中未用的NAND(與非)門中。如果能,這甚至可進一步減少CHLE中的HLE的數(shù)量。這就是所謂的NANDMUX打包。
0029在正在討論的說明性實施例中,不允許CHLE包括多于6個的HLE。據(jù)此,在來自步驟522的結果上執(zhí)行步驟524,以確定步驟522是否指出考慮中的LUT能夠使用6個或更少的HLE實現(xiàn)。如果是,控制就從步驟524傳到步驟526。如果不是,控制就從步驟524傳到步驟530。從步驟524到步驟526的分支將被首先考慮。
0030在步驟526,計算步驟522中開發(fā)的CHLE的所謂的“CHLE標識或特征(signature)”。在這個點,看看圖5可能是有幫助的。
0031圖5顯示了根據(jù)本發(fā)明的說明性CHLE的規(guī)范的代表性部分。這個規(guī)范可以是以標準的Verilog表示或者任何其他一般可比較的表示。在圖5中的第一行(”module chle_6_3……”)包括(按順序,從左到右)關于由CHLE實現(xiàn)的說明性LUT的以下信息輸入的數(shù)量(“6”);在CHLE中的HLE的數(shù)量(“3”);LUT掩碼值(“FEEEFAAAFCCCF000”,其是表示存儲在LUT的查找表中的64位的16進制數(shù)字);與具有這個LUT掩碼值的LUT的下面的實現(xiàn)相關聯(lián)的版本號碼(“0”);以及輸入到CHLE和從CHLE輸出的引用名稱(“(A,B,C,D,E,F(xiàn),OUT)”)。應該注意,在前面的句子中提到的LUT掩碼值是在這個說明書的前面提到的庫單元鍵的組成部分之一。庫單元鍵的其他組成部分是到LUT的輸入數(shù)量(在圖5所示的說明性例子中是6)。
0032圖5中的下面幾行是標準的Verilog語句,其標識CHLE的輸入(例如“input A”)、輸出(“output OUT”)和內部連接(例如“wireM1”和“wire 111”)。同樣,使用標準的Verilog僅僅是用于示例性說明。
0033在上述幾行之后,圖5中下面的幾行指定CHLE中的每個器件。每個這樣的器件具有一行。再一次地,顯示標準的Verilog是為了說明的目的。例如,這些行的第一行(“MUX21 M0_i……”)是用于2到1的多路復用器,其名稱為M0。它的第一個可選輸入(“D0”)來自導線M1,而且其第二個可選輸入(“D1”)來自稱為N10的NAND門的輸出。它的選擇控制(“SEL”)來自輸入A的輸入。而且它的輸出(“OUT”)是CHLE的OUT信號。在命名中遵循以下的慣例M表示MUX(多路復用器),N表示NAND(與非)門,I表示INV(非門),S0表示地面,S1表示VCC,而且A到F表示輸入。跟著這些字符的第一個數(shù)(如果有的話)表示它屬于哪一個HLE。跟著的第二個數(shù)(如果有的話)表示HLE中的指定類型器件的實例。
0034跟在上述規(guī)范行之后的是兩個注釋行(“//CHLESIGNATURE”和“//(M0 M1……)”)。這些行的第二行內容是前面行指定的CHLE的“CHLE SIGNATURE(CHLE特征)”??勺⒁獾紺HLE特征僅僅是上面行的精簡表示。例如,CHLE特征的(M0 M1 N10 A)部分來自上面的行“MUX21 M0_i……”。類似地,CHLE特征的“(M1M2 N20 B)”部分來自上面的行“MUX21 M1_i……”。(注意在CHLE特征中繼續(xù)遵循上述的命名慣例)。因此CHLE特征是CHLE的完整表示,雖然被縮寫或精簡。這個表示是在圖4b中的步驟526的“CHLE特征”-的含義,而且圖5顯示了如何確定CHLE特征(在步驟526中需要)。
0035返回圖4b中的步驟526,如上面所述確定的CHLE-特征被添加到先前已知的CHLE特征的庫中,而且被給定的版本號碼為0??刂迫缓筠D到步驟572。
0036在步驟572中,確定是否已經處理了考慮中的FPGA設計的所有LUT。如果沒有,就執(zhí)行步驟574,以選擇當前設計中用于考慮的另一LUT??刂迫缓筠D回步驟512,如上所述,在此將開始對下一個LUT的考慮。
0037如果在步驟572中發(fā)現(xiàn)已經考慮了所有的LUT,那么控制從步驟572傳到步驟576,在步驟576確定是否已經處理了待考慮的所有FPGA設計。如果沒有,控制就從步驟576轉到步驟580,在步驟580選擇另一FPGA設計用于考慮。從步驟580,控制轉回到步驟512,在步驟512開始考慮下一個FPGA設計中的LUT。
0038如果在步驟576中確定已經處理了待考慮的所有FPGA設計,那么控制從步驟576轉到步驟590。
0039在步驟590中,為在執(zhí)行前面步驟的過程中開發(fā)的每個新CHLE-特征設計或制定物理實現(xiàn)。這意味著選擇實際的連接,這些連接將被接通以在CHLE中的HLE之間或之內發(fā)送信號。例如,這可包括選擇什么導線和什么通路用于這些連接。在這個點也可進行物理器件選擇(例如在HLE中的哪些NAND門將被用于執(zhí)行HLE的特定NAND功能,而且對于HLE中的反相器是類似的)。這個步驟可以是完全自動化的或者部分自動化的,或者它可以是完全或部分“手工的”(由人類電路設計師執(zhí)行)。這個步驟可包括自由利用在HLE中未用的反相器和/或NAND門,以構造最大驅動力量的CHLE(例如參見上面提到的Chua等人的參考文獻中的圖21-23和相關的文字描述)。但是,優(yōu)選不允許這個步驟移動或者除去在模塊定義中指定的任何反相器或NAND門。特別是,優(yōu)選保持在CHLE內的HLE邊界。
0040在對所有的新CHLE特征已經執(zhí)行步驟590之后,執(zhí)行步驟592以將新的物理實現(xiàn)添加到可用物理實現(xiàn)的庫。這個過程現(xiàn)在完成了。
0041還沒有描述圖4中的幾個分支和步驟。返回到步驟520,還沒有考慮從這個步驟到步驟540的分支。當步驟514找到具有等于X的庫單元鍵的一個或多個現(xiàn)有庫單元實例時,就利用這個分支。當這種情況發(fā)生時,就執(zhí)行步驟540,以在具有X的庫單元鍵的現(xiàn)有庫單元實例之中尋找具有最少數(shù)量的HLE的實例。在步驟540中HLE的這個數(shù)量被假設為Y。
0042然后執(zhí)行步驟542,以和上述步驟522基本相同的方式在考慮中的LUT上操作。執(zhí)行步驟542的結果是確定實現(xiàn)考慮中的LUT當前所需的HLE數(shù)量。在步驟542中這個數(shù)量被假設為Z。(注意如果Z將大于6,這個過程就不能進入這個分支,因為在正在描述的說明性實施例中,不允許CHLE包括超過6個的HLE。因此對于需要超過6個HLE來實現(xiàn)的LUT,步驟514就從來不會找到任何現(xiàn)有的庫單元實例。)0043步驟544比較Z和Y。如果Z小于Y,那么執(zhí)行步驟542就產生一個CHLE,其在HLE消耗方面比庫單元鍵值X的先前已知的CHLE更高效。(例如,作為為尋找基于LUT的邏輯功能的CHLE等同物開發(fā)更好的算法或技術的結果,可發(fā)生這樣的改進。)控制因此從步驟544轉到步驟550(前面描述的),該步驟繼續(xù)將那個更高效的CHLE添加到已知CHLE的庫中、用于未來使用的過程。
0044返回步驟544,如果Z不小于Y,那么控制從步驟544轉到步驟560,該步驟測試Z和Y是否相等。如果它們相等,那么控制從步驟560轉到步驟562。
0045在步驟562中,確定考慮中的LUT的CHLE特征(例如,如上面結合圖5描述的)。步驟564然后測試CHLE特征是否已經存在于這種特征的庫中。如果是,就不需要為那個LUT進一步做什么,而且控制從步驟564轉到前面描述的步驟572。在另一方面,如果步驟564發(fā)現(xiàn)在步驟562中確定的CHLE特征是新的,那么控制從步驟564轉到步驟570。這意味著已經找到等同于一個LUT的新CHLE,該LUT具有一個庫單元鍵,對于該庫單元鍵,至少一個其他的CHLE等同物已經已知。因此,執(zhí)行步驟570,以將新的CHLE特征添加到已知CHLE特征的庫中,但是下一個更高的版本號碼和所述庫中的那個CHLE特征相關聯(lián),以將新的解決方案與所有先前已知的解決方案區(qū)分開。從步驟570,控制轉到前面描述的步驟572。
0046還沒有描述的這個過程的唯一分支是從步驟524到步驟530。當步驟524發(fā)現(xiàn)考慮中的LUT不能用6個或者更少的HLE實現(xiàn)時,就跟隨這個分支。如已經提到的,這個6個HLE的限制是正在描述的說明性實施例的特性,但是在其他實施例中,這個限制可以多于或者少于6個HLE。
0047如果考慮中的LUT不能使用6個或者更少的HLE實現(xiàn),那么執(zhí)行步驟530,以將考慮中的LUT重新映射到兩個或者更多更小的LUT,其一起等同于開始的LUT。例如,如果開始的LUT是6輸入LUT,那么它被重新映射到5輸入LUT??刂迫缓蠓祷夭襟E522,在步驟522這些5輸入LUT中的每一個依次變成考慮中的LUT,用于如先前描述的處理。如果導致要進入步驟530的開始的LUT是5輸入LUT,那么步驟530將那個LUT重新映射到4輸入LUT,而且控制返回步驟522,在該步驟中這些4輸入LUT中的每一個依次被作為考慮中的LUT處理。如在步驟530中所述的,所有4輸入LUT能夠使用6個或者更少的HLE實現(xiàn)。因此當考慮中的LUT具有4個或更少的輸入時,將從來不會到達步驟530。
0048前面描述了一個過程,通過這個過程,可以構建等同于基于LUT的邏輯功能的已知CHLE的庫,并且逐漸擴大這個庫。這種庫在生產等同于FPGA邏輯設計的結構化ASIC中是有用的。在該庫數(shù)據(jù)庫中包括版本信息使得用戶能夠控制在特定的FPGA到結構化ASIC轉換中將使用所述庫中的哪一級功能。例如,用戶可選擇使用最先進(最高的版本號)的所有功能,在所述庫中存在所有功能的多個解決方案?;蛘哂脩艨蛇x擇對于某些功能,不發(fā)展超過特定的“遺傳”版本。
0049本發(fā)明的另一方面涉及提供機器可讀的介質(例如CD-ROM、磁帶等等),其編碼有機器可讀的指令,這些指令執(zhí)行這里顯示和描述的本發(fā)明的各種方法。
0050可以理解的是,前面僅僅是對本發(fā)明原理的示例性說明,在不偏離本發(fā)明的精神和范圍的情況下,本領域的技術人員可進行各種修改。例如,上述的在最大尺寸CHLE上的6個HLE的限制僅僅是說明性的,如果希望的話,可以使用更大或更小的尺寸限制。作為另一例子,這里顯示的HLE的特定配置僅僅是說明性的,如果希望的話,可以使用任何其他HLE配置。作為又一個例子,如果希望的話,可以改變這里顯示的在說明性實施例中的某些步驟的特定順序。
權利要求
1.一種用于擴展FPGA邏輯功能的已知結構化ASIC等同物的庫的方法,其包括為一個FPGA邏輯設計中的邏輯功能計算索引值;使用所述索引值來確定所述庫中是否已經包含所述邏輯功能的任何結構化ASIC等同物;確定所述邏輯功能的一個結構化ASIC等同物;和將來自所述確定的所述ASIC等同物添加到所述庫中,如果它是所述邏輯功能的第一個等同物,或者如果它不同于已經在所述庫中的所述邏輯功能的任何等同物并且不比其低效。
2.根據(jù)權利要求1所述的方法,其中所述添加包括將版本標記與被添加到所述庫中的任何ASIC等同物相關聯(lián)。
3.根據(jù)權利要求1所述的方法,其中所述索引值是基于所述邏輯功能的特性,該邏輯功能在所述FPGA邏輯設計中實現(xiàn)。
4.根據(jù)權利要求3所述的方法,其中所述索引值包括從所述邏輯功能的典型或標準形式獲得的信息。
5.根據(jù)權利要求4所述的方法,其中所述索引值進一步包括關于所述邏輯功能的輸入數(shù)量的信息。
6.根據(jù)權利要求1所述的方法,其中所述確定包括計算一個特征值,該特征值是所述ASIC等同物的特性。
7.根據(jù)權利要求6所述的方法,其中所述添加包括將來自所述計算的所述特征值與已經在所述庫中的所述邏輯功能的任何等同物的特征值進行比較。
8.根據(jù)權利要求7所述的方法,其中所述添加進一步包括丟棄其特征值與已經在所述庫中的所述邏輯功能的任何等同物的所述特征值相同的任何等同物。
9.根據(jù)權利要求8所述的方法,其中所述添加還進一步包括丟棄其特征值需要比已經在所述庫中的所述邏輯功能的等同物多的ASIC邏輯來實現(xiàn)的任何等同物。
10.根據(jù)權利要求1所述的方法,其中允許一個邏輯功能的一個等同物僅僅包括預定的最大數(shù)量的ASIC電路,而且其中所述確定包括確保所述ASIC等同物不需要比所述預定的最大數(shù)量的ASIC電路多的電路。
11.根據(jù)權利要求10所述的方法,其中所述確保包括細分任何邏輯功能,該邏輯功能的所述ASIC等同物需要比預定的最大數(shù)量的ASIC電路多的電路;和將來自所述細分的邏輯功能的每個分部作為獨立的邏輯功能處理。
12.用機器可讀指令編碼的機器可讀介質,所述指令用于執(zhí)行權利要求1所述的方法。
13.一種添加LUT可實現(xiàn)的邏輯功能的結構化ASIC等同物的庫的方法,其包括確定一個邏輯功能的典型形式;使用至少部分基于LUT編程的索引值來實現(xiàn)所述邏輯功能的典型形式,以確定所述邏輯功能的結構化ASIC等同物是否已經在所述庫中;產生所述邏輯功能的結構化ASIC等同物;計算一個特征值,其是來自所述產生的所述結構化ASIC等同物的特性;和使用所述特征值確定來自所述產生的所述結構化ASIC等同物是否不同于已經在所述庫中的所述邏輯功能的任何其他結構化ASIC等同物,并因此是添加到所述庫的一個候選物。
14.根據(jù)權利要求13所述的方法,進一步包括對于被確定為候選物的任何結構化ASIC等同物,將用于實現(xiàn)所需的結構化ASIC電路的數(shù)量與實現(xiàn)已經在所述庫中的相同邏輯功能的任何結構化ASIC等同物所需的這種電路數(shù)量進行比較,并且僅當它不需要比已經在所述庫中的所述相同邏輯功能的任何結構化ASIC等同物多的結構化ASIC電路時,將所述候選物添加到所述庫中。
15.根據(jù)權利要求14所述的方法,其中所述添加包括將版本信息與被添加到所述庫中的任何候選物相關聯(lián)。
16.根據(jù)權利要求13所述的方法,進一步包括對于沒有結構化ASIC等同物在所述庫中的任何邏輯功能,將所述結構化ASIC等同物添加到所述庫中。
17.根據(jù)權利要求13所述的方法,其中存在一個預定的最大數(shù)量的結構化ASIC電路,允許其用在邏輯功能的結構化ASIC等同物中,而且其中所述產生包括確定所述邏輯功能的結構化ASIC等同物是否超過所述最大數(shù)量的結構化ASIC電路,如果是,就將所述邏輯功能分成多個更小的邏輯功能,并且對每個所述更小的邏輯功能重復所述方法。
18.根據(jù)權利要求13所述的方法,其中所述產生包括以二叉決策樹的形式表示所述邏輯功能;交換所述二叉決策樹的輸入,以使得該樹最小化;和使用基本的結構化ASIC電路塊的各自實例來設計在所述最小化的二叉決策樹中的每個節(jié)點的實現(xiàn)。
19.根據(jù)權利要求18所述的方法,其中所述產生進一步包括嘗試使用所述基本的結構化ASIC電路塊的實例中還沒有被利用的電路來減少實現(xiàn)所述最小化二叉決策樹所需的實例數(shù)量。
20.用機器可讀指令編碼的機器可讀介質,所述指令用于執(zhí)行權利要求13所述的方法。
21.一種向一庫中添加LUT可實現(xiàn)的邏輯功能的結構化ASIC等同物的方法,每個結構化ASIC等同物包括ASIC電路模塊的一個或多個實例,所述方法包括將可能的新邏輯功能的特性與已經在所述庫中的邏輯功能的類似特性進行比較;設計所述可能的新邏輯功能的結構化ASIC等同物;使用一個特征值,從所述設計獲取所述結構化ASIC等同物;如果所述比較發(fā)現(xiàn)沒有具有可比特性的邏輯功能已經在所述庫中,將來自所述設計的所述結構化ASIC等同物和所述特征值添加到所述庫中;和如果所述比較發(fā)現(xiàn)具有可比特性的邏輯功能的一個或多個實例已經在所述庫中,那么就在僅當所述特征值指出所述結構化ASIC等同物不同于已經在所述比較中發(fā)現(xiàn)的所述邏輯功能的實例的所述庫中的結構化ASIC等同物時,就將來自所述設計的所述結構化ASIC等同物和所述特征值添加到所述庫中。
22.根據(jù)權利要求21所述的方法,其中,如果所述比較發(fā)現(xiàn)具有可比特性的所述邏輯功能的一個或多個實例已經在所述庫中,那么僅當來自所述設計的所述結構化ASIC等同物使用的所述ASIC電路模塊的實例不超過所述比較中發(fā)現(xiàn)的所述邏輯功能的任何其他實例時,才執(zhí)行后續(xù)的添加。
23.用機器可讀指令編碼的機器可讀介質,所述指令用于執(zhí)行權利要求21所述的方法。
全文摘要
通過利用等同于FPGA邏輯功能的已知結構化ASIC庫產生等同于FPGA邏輯設計的結構化ASIC。通過一個搜索過程這樣的庫被擴展,該搜索過程在新的FPGA邏輯設計中搜索在所述庫中還沒有結構化ASIC等同物的邏輯功能或者現(xiàn)在可為其設計可能改進的結構化ASIC等同物的邏輯功能。新的和/或改進的結構化ASIC等同物被添加到所述庫中,對于已知超過一個的結構化ASIC等同物的FPGA邏輯功能,優(yōu)選帶有版本信息。
文檔編號G06F17/50GK1845461SQ20061007376
公開日2006年10月11日 申請日期2006年4月10日 優(yōu)先權日2005年4月8日
發(fā)明者袁進勇, 蔡家慶, J·帕克 申請人:阿爾特拉公司