專利名稱:可編程邏輯的專用集成電路等價(jià)實(shí)現(xiàn)及相關(guān)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及可被用來等效或替代可編程邏輯電路(PLD或FPGA)的專用集成電路(ASIC)。本發(fā)明還涉及將特定用于ASIC或PLD(或FPGA)的設(shè)計(jì)在這兩種類型的器件間進(jìn)行轉(zhuǎn)換,從而實(shí)現(xiàn)器件的互換性。
背景技術(shù):
一個(gè)典型的可編程邏輯器件(PLD)或現(xiàn)場可編程門陣列(FPGA)中包含許多固定大小的邏輯單元(LE)。(此處為了方便,用FPGA作為PLD與FPGA的通用名詞。)例如,一個(gè)FPGA LE中可以包括一個(gè)四輸入查找表(LUT)、一個(gè)寄存器以及一些布線電路,在需要順序邏輯或運(yùn)算時(shí),這些布線電路允許使用寄存器(比如寄存LUT的輸出),而在只需要組合邏輯或運(yùn)算時(shí)則可以讓LUT輸出旁路寄存器。一個(gè)FPGA LE還可能具有其他特性或能力,但是以上述的例子作為示范已經(jīng)足夠了。除了許多LE之外,一個(gè)FPGA通常還具有可編程的布線電路,可以通過多種不同的方式向LE、從LE、以及/或在LE之間傳遞信號,從而通過組合或使用多個(gè)LE來完成各種各樣的邏輯或邏輯類型的操作。除了LE之外,F(xiàn)PGA還具有其他類型的電路,比如輸入/輸出(I/O)電路、存儲器塊、微處理器、專用電路-如數(shù)字信號處理(DSP)模塊、高速串行接口(HSSI)模塊等等。這些其他類型的電路還可以通過上述的可編程布線電路彼此互連(并且與LE相連)。
FPGA所具有的許多優(yōu)勢是那些精通本技術(shù)的人所熟知的。然而在某些情況下,可能希望得到某個(gè)FPGA設(shè)計(jì)的ASIC等價(jià)實(shí)現(xiàn),從而在大規(guī)模的應(yīng)用中降低成本。例如,某個(gè)設(shè)計(jì)可能以FPGA的形式開始。但是在該設(shè)計(jì)被充分驗(yàn)證且已經(jīng)達(dá)到足夠高的產(chǎn)量后,用ASIC等價(jià)實(shí)現(xiàn)來替代FPGA能夠大大降低成本。
提供FPGA的ASIC等價(jià)實(shí)現(xiàn)的一種已知方法是采用具有與初始FPGA的LE相同的基本組織結(jié)構(gòu)的ASIC體系結(jié)構(gòu)。例如,如果FPGA中包含LE陣列,每個(gè)LE具有一個(gè)四輸入LUT(4-LUT)和一個(gè)寄存器,那么ASIC就具有相似的LE陣列,這些LE中也包含4-LUT和寄存器。ASIC中的某些層可以根據(jù)特定用戶的設(shè)計(jì)進(jìn)行定制,以便有效地“編程”LE并提供LE之間所需的互連布線。
上述提供FPGA的ASIC等價(jià)實(shí)現(xiàn)的方法具有許多優(yōu)點(diǎn),但是仍有改進(jìn)的余地。例如,多數(shù)用戶設(shè)計(jì)沒有用到一個(gè)FPGA上的所有電路。FPGA電路中的某些部分經(jīng)常不被使用。一個(gè)4-LUT僅被用于提供二輸入或三輸入的功能。某些LE中只有LUT或寄存器(但并非兩者)被用到。在任意上述情況下,未被完全利用的LE中的大量電路就被浪費(fèi)了。如果用相同的基本LE結(jié)構(gòu)構(gòu)成等價(jià)ASIC的基礎(chǔ),就會在ASIC造成同樣的浪費(fèi)。
發(fā)明內(nèi)容
考慮到上述的情況,符合本發(fā)明的ASIC體系結(jié)構(gòu)中包括了與等價(jià)FPGA中的LE不同的邏輯單元。這些ASIC邏輯單元在本文中被成為混合邏輯單元(HLE)。每個(gè)HLE中可以包括相對較小的、通用的組合邏輯元件(比如一輸入LUT或1-LUT),相對較小的邏輯門陣列(比如二輸入NAND門)以及一些相關(guān)的互連線或布線資源。HLE中的工作電路總量(比如1-LUT和NAND門)遠(yuǎn)遠(yuǎn)少于相關(guān)FPGA LE中的工作電路總量。HLE中的布線資源至少應(yīng)該可編程(例如利用通孔的掩膜可編程)以實(shí)現(xiàn)某些目的,比如實(shí)現(xiàn)到HLE的輸入連線、從HLE引出的輸出連線以及HLE內(nèi)的內(nèi)部連線。對于某些利用率相對較低的FPGA LE,一個(gè)ASIC HLE就能實(shí)現(xiàn)LE的功能。如果一個(gè)LE具有較高的利用率,那么就需要用若干相鄰(或至少是附近)的HLE來等效實(shí)現(xiàn)該LE的功能。HLE的布線資源幫助連接相鄰(或附近)的HLE,這些HLE被組合在一起來實(shí)現(xiàn)任意LE的功能。在任何情況下,只使用實(shí)現(xiàn)LE功能所必需數(shù)量的HLE來提供那個(gè)LE的等價(jià)功能。由于在大多數(shù)設(shè)計(jì)中,許多LE都未被充分利用,因此在等效于FPGA的ASIC上提供的HLE數(shù)量遠(yuǎn)低于所有LE都被充分利用情況下所需的HLE數(shù)量。相較使用完全等效于FPGALE的LE的ASIC而言,上述方法能顯著減小ASIC尺寸。
至少在很大程度上,每個(gè)LE最好與等效的HLE或HLE組之間存在著一對一的對應(yīng)關(guān)系。這有助于將FPGA設(shè)計(jì)轉(zhuǎn)換為等效的ASIC,反之亦然,而且不需要重新綜合用戶的邏輯。避免這種再綜合能夠節(jié)約時(shí)間和成本,而且能夠更好地保證ASIC與FPGA等價(jià)實(shí)現(xiàn)能夠大致相同的工作而不會出現(xiàn)偏差(假設(shè)FPGA與ASIC都已被驗(yàn)證工作正常)。
本發(fā)明的其他特性、其本質(zhì)及各種優(yōu)點(diǎn)將通過附圖及下文的詳細(xì)說明體現(xiàn)出來。
圖1示出了一個(gè)現(xiàn)有的范例FPGA LE的簡化原理方框圖。
圖2示出了一個(gè)FPGA LE的現(xiàn)有的范例ASIC等效實(shí)現(xiàn)的簡化原理方框圖。
圖3示出了符合本發(fā)明的一個(gè)范例ASIC HLE的簡化原理方框圖。
圖4-9示出了用于符合本發(fā)明的ASIC的范例可編程互連線結(jié)構(gòu)的簡化視圖或立體視圖。
圖10示出了符合本發(fā)明的范例可編程ASIC HLE的簡化原理方框圖。
圖11示出了另一個(gè)符合本發(fā)明的范例可編程ASIC HLE的簡化原理方框圖。
圖12示出了一對符合本發(fā)明的范例可編程ASIC HLE的簡化原理方框圖。
圖13示出了另一對符合本發(fā)明的范例可編程ASIC HLE的簡化原理方框圖。
圖14示出了若干范例ASIC HLE的簡化原理方框圖,其中的HLE帶有符合本發(fā)明的附加范例可編程互連線電路。
圖15示出的簡化框圖展示了一個(gè)符合本發(fā)明的ASIC上的HLE的范例組織結(jié)構(gòu)。
圖16示出的簡化框圖展示了符合本發(fā)明的ASIC上的HLE的使用實(shí)例。
圖17示出的簡化框圖展示了符合本發(fā)明的ASIC上的附加可編程互連線電路的實(shí)例。
圖18示出了符合本發(fā)明的范例方法的流程圖。
圖19示出了符合本發(fā)明的范例方法的另一種流程圖。
圖20示出了符合本發(fā)明的范例方法的另一種流程圖。
圖21a-c、22a-c以及圖23示出的原理方框圖展示了符合本發(fā)明的HLE的某些可用元件的范例使用方法。
具體實(shí)施例方式
在圖1中示出了一種現(xiàn)有的范例FPGA LE 10。LE 10中包括一個(gè)4-LUT部分12和一個(gè)寄存器部分14。4-LUT部分12中包括16個(gè)可編程存儲器(如RAM)單元20-0至20-15。RAM單元20的每一對輸出分別被加載到8個(gè)二輸入多路選擇器(mux)22-0至22-7上。4-LUT輸入A控制各個(gè)多路選擇器22選擇它的哪一個(gè)輸入(來自RAM單元20)作為輸出。例如,如果輸入A是邏輯1,各個(gè)多路選擇器22就選擇其高位輸入作為其輸出。如果輸入A為邏輯0,各個(gè)多路選擇器22就選擇其低位輸入作為其輸出。多路選擇器22的每一對輸出分別被加載到四個(gè)二輸入多路選擇器24的輸入端。4-LUT輸入端B控制各個(gè)多路選擇器24選擇它的哪一個(gè)輸入作為輸出。同樣,如果B為邏輯1,多路選擇器24就選擇其高位輸入作為輸出。如果B為邏輯0,多路選擇器24則選擇其低位輸入作為輸出。多路選擇器24的每一對輸出分別被加載到兩個(gè)二輸入多路選擇器26的輸入端。4-LUT輸入端C控制各個(gè)多路選擇器26選擇它的哪一個(gè)輸入作為輸出。邏輯功能與多路選擇器22及24相似。多路選擇器26的輸出被加載到二輸入多路選擇器28上。4-LUT輸入端D控制多路選擇器28輸出它的哪一個(gè)輸入(與輸入端A-C的邏輯相同)。
多路選擇器30的輸出信號被加載到驅(qū)動電路30。驅(qū)動器30的輸出端是LE 10的一個(gè)輸出(組合輸出32)。驅(qū)動器30的輸出被加載到多路選擇器40的一個(gè)輸入端上。送入多路選擇器40的另一個(gè)輸入是到LE 10的另一個(gè)輸入。多路選擇器40可以被控制(比如通過可編程RAM單元42)選擇它兩個(gè)輸入中的一個(gè)來加載到寄存器44的數(shù)據(jù)輸入端。這種安排使得寄存器44可以被用來在不需要寄存LUT12的輸出時(shí)寄存另一個(gè)信號。寄存器44的輸出是LE 10的寄存輸出46。
圖2示出了LE 10的一種現(xiàn)有可行的ASIC等效實(shí)現(xiàn),它被設(shè)置成一個(gè)二輸入AND(與)門(輸出未經(jīng)過寄存)。圖2中與圖1中相似的單元的引用標(biāo)號是它們在圖1中的引用標(biāo)號加上100。因此在ASIC LE 10中,輸入端C和D被相與來產(chǎn)生未寄存的LE輸出132。多路選擇器122-0和122-1的輸入被綁定在邏輯1上。其他多路選擇器122的輸入被綁定為邏輯0。這樣能夠使得輸入A和B與輸入“無關(guān)”。只有輸入C和D能夠影響輸出,輸出是C和D相與的結(jié)果。LE110的這種用法意味著放入一個(gè)X的單元實(shí)際上未被使用。特別的,所有的元件122、124、126-1、140和144實(shí)際上都未被使用。因此,在用來等效一個(gè)利用率如此低的FPGA LE 10的ASIC電路上包括所有這些元件是一個(gè)極大的浪費(fèi)。可以采用邏輯刪減(例如可以參見于2004年6月4日提交(Attorney Docket 174/309(A877))的Foo美國專利申請_____)來減少必須在ASIC LE 10中提供的電路數(shù)量。例如,可以通過選擇性使用輸入A或它的補(bǔ)集作為下一級多路選擇(124)的輸入,來刪減第一級多路選擇(122)。然而,只要是用來實(shí)現(xiàn)一個(gè)低利用率的FPGA LE 100,那么即使在經(jīng)過如此刪減的ASIC LE 110中,也仍然有大量電路被浪費(fèi)。
圖3示出了一種所謂的混合邏輯單元(HLE)200的示例實(shí)施例,該邏輯單元是根據(jù)本發(fā)明構(gòu)建的,用以單獨(dú)或組合起來提供FPGA LE的浪費(fèi)較小的ASIC等效實(shí)現(xiàn)。盡管下面要詳細(xì)地說明圖3中所示的特定HLE 200的結(jié)構(gòu),但是這里需要作為前提條件強(qiáng)調(diào)的是,該實(shí)施例僅僅是一個(gè)示例,這種結(jié)構(gòu)的許多變形都是可行的,并且這些變形不會偏離本發(fā)明的范圍與指導(dǎo)思想。
HLE 200中包括二輸入多路選擇器(mux)210、兩個(gè)二輸入NAND門220a和220b、兩個(gè)反向緩沖器或驅(qū)動器230a和230b,以及互連線資源,接下來的文字將更詳細(xì)地說明它們。圖3中所示的互連線資源包括多條從多路選擇器210引出的上行垂直導(dǎo)體240,在多路選擇器210與NAND門220之間的多條垂直導(dǎo)體250,NAND門220與驅(qū)動器230之間的一條(或多條)垂直導(dǎo)體260,以及多條從驅(qū)動器230引出的垂直導(dǎo)體270。圖3中所示的互連線資源還包括若干水平導(dǎo)體(比如導(dǎo)體310、320、330和340)。導(dǎo)體240、250、260、270、310、320、330以及340都是相對通用的導(dǎo)體,這意味著它們可以被用來產(chǎn)生若干不同來源中的任何一個(gè)與若干不同目的地中的任何一個(gè)之間的任意不同連接。除了這些相對通用的導(dǎo)體之外,HLE 200中還包括若干更為專用的導(dǎo)體。例如,導(dǎo)體350專門用于向多路選擇起210提供控制輸入(盡管有若干來源可以作為控制輸入信號,這將在下文中詳細(xì)說明,如果需要的話也可以用導(dǎo)體350做其他用途)。如另一個(gè)實(shí)例,導(dǎo)體360a與360b專門用于向多路選擇器210提供兩個(gè)可選的輸入(同樣可以來自若干可能來源中的任意一個(gè),同樣在需要的情況下可以用作其他用途)。如再另一個(gè)實(shí)例,導(dǎo)體370專門用于傳導(dǎo)多路選擇器210的輸出,盡管該輸出可以通往若干目的地中的任何一個(gè)。盡管某些導(dǎo)體被描述為相對通用的,而另一些導(dǎo)體則被描述為較為專用的,但是這些描述性的概念僅僅是為了方便才采用的。它們并不是為了產(chǎn)生限制,兩者之間也沒有任何明確的分別,且兩種類型不必同時(shí)存在。
圖3中位于導(dǎo)體交叉點(diǎn)處的小實(shí)心點(diǎn)410代表可以根據(jù)需要在交叉導(dǎo)體之間產(chǎn)生或不產(chǎn)生連接。這些連接因而是可編程的。在優(yōu)選實(shí)施例中,這些連接是可以利用通孔進(jìn)行掩膜編程的,所述的通孔可以被包括、也可以不被包括在含有交叉導(dǎo)體的層之間的一個(gè)或多個(gè)層中。(盡管本文中主要提及了通孔編程,但這僅僅是一個(gè)實(shí)例,可以按照需要采用任意其他的編程技術(shù)。在本說明書的后文中提到了可用編程技術(shù)的其他實(shí)例。)圖4示出了分別位于不同金屬層中的兩個(gè)交叉導(dǎo)體240與320,所述的金屬層位于一個(gè)含有HLE 200的集成電路器件上。在圖4中,這些導(dǎo)體通過通孔420彼此相連,所述的通孔穿過兩個(gè)金屬層之間的絕緣層。在圖5中示出了絕緣層中沒有通孔的相同結(jié)構(gòu)。因此,在圖5中,導(dǎo)體240與320彼此沒有相連。(導(dǎo)體240或320可以任意位于較高或較低的金屬層中,這是設(shè)計(jì)選擇。)圖3中的多個(gè)X 430代表了導(dǎo)體部分能根據(jù)需要可編程地彼此相連或不相連的位置。對于上文中所提及的小實(shí)心點(diǎn)410所采用的相同技術(shù)選擇對于連接430同樣適用。例如,圖6示出了具有代表性的兩段導(dǎo)體320,它們通過掩膜可編程的通孔440連接到橋接導(dǎo)體450。這樣,這兩段導(dǎo)體320就通過通孔440與橋接導(dǎo)體450連接到了一起。圖7示出了相同的但沒有通孔440的結(jié)構(gòu)。因此在圖7中,導(dǎo)體段沒有彼此相連。它們彼此是電絕緣的。
圖3中所示的大空心圓或橢圓460代表了帶有那些圓環(huán)或橢圓的導(dǎo)體能被可編程地連接到所謂高層互連線資源(圖3中未示出)的位置,所述的高層互連資源位于包括HLE 200的器件上。這種高層互連線資源可以被用于在元件(如HLE、器件輸入/輸出(I/O)端口等等)之間傳遞信號,所述的元件彼此不相鄰,或是彼此不靠近。(短語“高層”并不表示物理上較高的層次,而僅僅是分級結(jié)構(gòu)上的高層。)可編程連接460可以按照上述任意一種方式產(chǎn)生(例如用于可編程連接410的方法)。例如,圖8示出了通過掩膜可編程通孔470與高層導(dǎo)體510相連的代表性導(dǎo)體360。圖9示出了相同的結(jié)構(gòu)位置460,但是其中的導(dǎo)體360與高層導(dǎo)體520間不存在連接。
如果圖3中所示的在不同軸向上延伸的導(dǎo)體在另一個(gè)導(dǎo)體處終結(jié)(或者如果兩個(gè)導(dǎo)體都在另一個(gè)導(dǎo)體處終結(jié)),那么它們總是彼此相連的。圖中所示彼此交叉但在交叉點(diǎn)處沒有小實(shí)心點(diǎn)的導(dǎo)體應(yīng)該不能在所述的交叉點(diǎn)處彼此相接。
圖3中示出某些導(dǎo)體具有特定的外部連接。其中最頂端的導(dǎo)體310被示為總是與VCC(比如邏輯1)相接。圖3中次頂端的導(dǎo)體310被示為總是與VSS(比如邏輯0)相連。導(dǎo)體312、314以及316都被示為來自其他相鄰HLE的輸入連線,這些HLE分別位于所示HLE的上方、左邊和下方。導(dǎo)體332向位于所示HLE上方的HLE提供輸入316。導(dǎo)體272向位于所示HLE右邊的HLE提供輸入314。導(dǎo)體342向位于所示HLE下方的HLE提供輸入312。相鄰或相近HLE之間的這些所謂的“潛在”連接可以是器件的互連線資源中的常備或固定部分。它們實(shí)際上是否被使用(或是它們?nèi)绾伪皇褂?都是可編程的,這取決于位于潛在連線兩端的可編程連線410被怎樣編程。
位于所示導(dǎo)體如240和250兩端的X 430代表了那些導(dǎo)體能夠可編程地與位于所示HLE附近的其他HLE中的類似導(dǎo)體相連的位置。
一個(gè)HLE 200、或是相對較少但數(shù)量合適的相鄰或相近的HLE200,可以被用來實(shí)現(xiàn)圖1中所示的一個(gè)FPGA LE 10所能實(shí)現(xiàn)的任何功能。在各種情況下,只有實(shí)現(xiàn)LE的功能所必需數(shù)量的HLE被使用來產(chǎn)生所述FPGA LE的等效ASIC。
圖10示出了一種形式略為簡單的HLE 200a(至少是HLE 200(圖3所示)的簡化版本),該HLE被用來提供A XOR(異或)B得到的輸出Y。在該示例中實(shí)際使用到的HLE 200a的互連線資源用更重(更粗)的線條畫出。其他存在但未在該例中用到的互連線資源用較輕(較細(xì))的線條表示。輸入A被加載到多路選擇器210的上輸入端。例如,輸入A可以通過可編程連線460(圖3示出)進(jìn)入HLE200a,所述的連線460在圖3中被顯示為連接在對應(yīng)的多路選擇器輸入端IN0上。這樣輸入A就可以來自器件的更高層互連線電路中的導(dǎo)體(如圖8中的510)。輸入A還被加載到圖3所示的NAND門220b的兩個(gè)輸入端上。這會導(dǎo)致NAND門220b以反相器形式工作,如圖10所示。反相器220b(圖10)的輸出被反饋給多路選擇器210的低輸入端(比如通過導(dǎo)體322,到垂直導(dǎo)體240之一的可編程連線410(圖3),所述垂直導(dǎo)體的一部分,到導(dǎo)體360b的另一條可編程連線410,以及所述導(dǎo)體360b的一部分)。
輸入B通過導(dǎo)體350被加載到多路選擇器210的控制輸入端。例如,輸入B可以通過可編程連線460被加載到導(dǎo)體350上,所述的連線460在圖3中被示為連接在導(dǎo)體350上。這樣輸入B就可以從器件更高層的互連線電路進(jìn)入HLE 200a。當(dāng)輸入B為邏輯0時(shí),多路選擇器210就輸出位于其兩個(gè)可選輸入引腳中的上一個(gè)引腳(即導(dǎo)體360a)上的信號。當(dāng)輸入B為邏輯1時(shí),多路選擇器210就輸出位于其兩個(gè)可選輸入引腳中的下一個(gè)引腳(即導(dǎo)體360b)上的信號。因此,多路選擇器210的輸出信號就是A XOR B。
多路選擇器210的輸出信號被加載到NAND門220a(圖3)的兩個(gè)輸入端上,因此該NAND門就起一個(gè)反相器的作用。NAND門220a的輸出被加載到反相驅(qū)動器230a,該反相驅(qū)動器再次反轉(zhuǎn)信號。因而,元件220a與230a組合在一起的作用就是為多路選擇器210的輸出信號提供一個(gè)非反相的輸出驅(qū)動器,即Y(=A XOR B)。
多路選擇器210的輸出信號到NAND門220a的兩個(gè)輸入端的連線可以通過導(dǎo)體370的一部分、從所述導(dǎo)體到垂直導(dǎo)體250之一的可編程連線410(圖3)、垂直導(dǎo)體250的一部分、以及從所述導(dǎo)體到NAND門220a的兩個(gè)輸入端的另外兩條可編程連線410來實(shí)現(xiàn)。驅(qū)動器220a/230a的輸出Y可以通過反相器230a的輸出引腳上的可編程連線460(圖3)被接入更高層的互連線電路。
這樣圖10就示出了一種邏輯功能的一個(gè)實(shí)例,該功能可以在單個(gè)HLE中實(shí)現(xiàn),且浪費(fèi)的資源相對較少。在與一個(gè)FPGA LE(與圖1、2中所示的類似)相當(dāng)?shù)腁SIC LE中實(shí)現(xiàn)同樣的功能會使該ASICLE中的一大部分資源不被使用,因而造成浪費(fèi)(即使采用上述類型的邏輯刪減也只能達(dá)到圖2所示的結(jié)果)。本文中所示的HLE結(jié)構(gòu)提供了一種浪費(fèi)少的多的實(shí)現(xiàn)方式。
圖11示出了另一種邏輯功能的實(shí)例,該功能可以在單個(gè)HLE200b(同樣類似圖3所示的HLE 200,或至少概念上相似)中實(shí)現(xiàn)。圖11中所實(shí)現(xiàn)的功能是Y=(A AND C’)OR(B AND C)。在圖11中使用的導(dǎo)體與元件都用粗線示出。在圖11中未被用到的導(dǎo)體與元件都用較細(xì)的線條示出。信號接入、通過以及接出HLE 200b的方式都能從上文的說明中體現(xiàn)出來,因而不需要進(jìn)一步的詳細(xì)說明。
圖12示出了一個(gè)四輸入組合邏輯功能的實(shí)例,該邏輯功能通過兩個(gè)相鄰的HLE 200c與200d實(shí)現(xiàn),其中各個(gè)HLE都與圖3中所示的HLE 200相似,或是至少在概念上相似。圖中所實(shí)現(xiàn)的邏輯功能為F=(A(BC+B’D)+A’)’。被使用來實(shí)現(xiàn)該功能的元件與導(dǎo)體在圖12中都用較粗的線條示出。未被使用的元件及導(dǎo)體都用較細(xì)的線條示出。圖12展示了使用潛在連線從一個(gè)HLE向另一個(gè)相鄰或相近的HLE傳遞信號。在這種情況下,HLE 200c中的多路選擇器210的輸出信號通過圖3中所示的潛在連線如272/314傳遞給HLE 200d。(從圖3可見、且在本說明書上文中已經(jīng)敘述過多路選擇器210的輸出是如何被連接到右端的潛在輸出272,再從那連接到右邊的HLE的潛在輸入314,最后從所述輸入連接到右邊的HLE中的多路選擇器210的輸入端。)圖12還展示了如何使用HLE 200d中的元件210及220a的VCC輸入(邏輯1)。這可以利用圖3中所示的一條導(dǎo)體310以及從所述導(dǎo)體連接到元件210和220a的所需輸入端的可編程連線(比如可編程連線410)來實(shí)現(xiàn)。
圖12示出了水平相鄰的HLE之間的一些額外互連線,它們未在圖3中示出(至少未明顯示出)。這些連線是從每個(gè)HLE到其右邊的HLE的更為廣泛的連接線。圖3表現(xiàn)出只有潛在連線可用于此類連接。但是圖12示出了能從各個(gè)HLE傳遞到右邊的HLE的3個(gè)信號(多路選擇器210的輸出以及NAND門220a與220b的輸出),這些信號的傳遞是在HLE連線資源的結(jié)構(gòu)層次上實(shí)現(xiàn)的。這種額外、相對直接、HLE到HLE的連接只是構(gòu)建符合本發(fā)明的HLE的許多可行途徑中的一種。當(dāng)然,如果沒有在HLE層次上提供這種額外的直接連接,也可以利用較高層的互連線電路產(chǎn)生類似的連接。然而,目前人們相信最好能夠提供充足的、相對直接的、HLE到HLE的互連能力(包括潛在連線),以便實(shí)現(xiàn)HLE到HLE連線的主要部分(最好至少是大部分),所述的連線是用以實(shí)現(xiàn)任意FPGA LE功能的一組HLE所需要的。這樣,高層互連線就可以被保留以供遠(yuǎn)距離互連使用。
圖13示出了使用兩個(gè)相鄰HLE 200e和200f來提供一個(gè)觸發(fā)器或寄存器(典型FPGA LE的功能之一)的實(shí)例。同樣,HLE 200e和200f都與圖3中的HLE 200相似(或至少在概念上相似)。用來提供觸發(fā)器的元件及導(dǎo)體在圖13中用粗線示出。未被使用的結(jié)構(gòu)用較細(xì)的線條示出。此處不必詳細(xì)描述圖13中所述的所有連線,或是如何實(shí)現(xiàn)那些連線,因?yàn)閺膱D3以及上文的說明中已經(jīng)體現(xiàn)出了這些信息。要被寄存的信號D可以通過可編程連線460(圖3)從器件的高層互連線電路、或是在較低的層次從另一個(gè)相鄰或相近的HLE進(jìn)入HLE200e,只要說明這一點(diǎn)就足夠了。對于驅(qū)動觸發(fā)器的時(shí)鐘信號CLK來說也是一樣。(該信號是HLE 200e和200f都需要的。)或者,CLK也可以按照圖3中所示的用于VCC和VSS的方式進(jìn)入每個(gè)HLE。圖13示出了CLR’和SET’信號,它們通過導(dǎo)體250以及來自上方或下方相鄰HLE內(nèi)的類似導(dǎo)體的可編程連線430(圖3)進(jìn)入HLE 200e和200f。最終這些信號可以通過與圖3中所示的VCC和VSS類似的方式進(jìn)入HLE陣列,或是通過連接到器件的高層互連線電路的可編程連線460(圖3)。觸發(fā)器的寄存輸出Q與Q’可以通過更多的可編程連線460進(jìn)入器件的高層互連線電路,或者它們也可以通過較低層的連線進(jìn)入其他相鄰或相近的HLE。
圖14示出了若干相鄰的HLE 200g、200h、200i和200j,其中強(qiáng)調(diào)了HLE之間的某些(但并未全部)相對直接的連線資源。在圖14所示的實(shí)施例中,HLE之間的互連線資源包括從HLE 200h的NAND門220a到其右邊的HLE 200j的直接連線222(示為粗虛線)。圖14中示出的另一條直接連線是從HLE 200h中的多路選擇器210的輸出端到其右邊的HLE 200j的連線212(示為粗點(diǎn)線)。圖中示出的另一條直接連線是潛在連線網(wǎng)絡(luò)214(示為粗實(shí)線),該網(wǎng)絡(luò)從HLE 200h的潛在輸出端延伸到HLE 200g、200i以及位于HLE 200j右邊的另一個(gè)HLE(未示出)。在該實(shí)施例中,潛在輸出被示為可以編程選擇來自導(dǎo)體212或222,但是也可以將其他來源用于該信號。圖14中所強(qiáng)調(diào)的所有HLE到HLE連線資源(包括潛在連線)都可以實(shí)現(xiàn)在用于HLE內(nèi)部連線資源的同一層金屬中,因此就不需要依靠高層互連線電路,后者通常被用于長距離的互連。
圖15示出了一個(gè)集成電路器件500上的HLE 200的示例排列。圖15中的HLE 200可以如圖3或本文中所有其他附圖所示的那樣構(gòu)建,或者它們也可以包括本說明書中的任意一處提及的任何改進(jìn)。在圖15所示的示例排列中,HLE 200是以行列交叉的二維陣列形式排布在器件500上。器件500中還包括其他電路,如I/O模塊、存儲器模塊等等(未示出)。因此符合本發(fā)明的ASIC可以被稱為“結(jié)構(gòu)化ASIC”,因?yàn)樗鼈兙哂谢镜碾娐方M織或結(jié)構(gòu)(比如圖15所示的二維HLE陣列),并且可以對這些電路組織及結(jié)構(gòu)作出自定義的修改及/或添加(比如HLE內(nèi)部與/或HLE之間的互連線)。如果器件500不被當(dāng)作FPGA的等效產(chǎn)品來使用,那么器件500上HLE 200的總數(shù)就可以少于FPGA上的LE數(shù)量乘以實(shí)現(xiàn)一個(gè)FPGA LE所有功能所需的HLE 200的最大數(shù)量。這是因?yàn)橹挥袑?shí)現(xiàn)每個(gè)FPGA LE的功能所必需數(shù)量的HLE才是必要的,而在大多數(shù)情況下要實(shí)現(xiàn)這個(gè)目的所需的HLE數(shù)量要少于最大數(shù)量。隨著下文的進(jìn)一步說明,這一點(diǎn)的某些方面將變得愈加明了。
圖16示出了器件500上的HLE 200是如何被單獨(dú)或一起使用來實(shí)現(xiàn)一個(gè)等效FPGA中的LE功能的。在圖16中,被一起使用的相鄰或相近的HLE 200被打上同樣的陰影,這與用于其他相鄰或相近HLE的陰影不同。為了方便引用,圖16中的HLE列被標(biāo)號為1、2、3等等,HLE行則被標(biāo)上字母A、B、C等等。利用行和列的引用號,圖16示出了以下被一同使用的HLE組1A1/A2/B1組2A3/A4組3B2/C1/C2/C3組4B3/B4組5D1/E1/E2/F1組6D2/D3/D4組7F2上述的各個(gè)組合實(shí)現(xiàn)了等效FPGA中LE的以下功能組1FPGA LE A1的組合邏輯組2FPGA LE A1的寄存器功能組3FPGA LE B1的組合邏輯組4FPGA LE B1的寄存器功能組5FPGA LE C1的組合邏輯組6FPGA LE D1的組合邏輯組7FPGA LE E1的組合邏輯在以上的列表中,行字母與列數(shù)字(類似圖16所示的那些)都被用來引用一個(gè)二維FPGA LE陣列中的LE。
可以理解的是,圖16所示的HLE分組實(shí)例僅僅是示例性的,多種其它分組也同樣可行。在特定情況下(ASIC)采用的實(shí)際分組是由需要在ASIC器件500中等效實(shí)現(xiàn)的FPGA LE功能決定的。但是,先前段落中的示例列表所建議的一個(gè)優(yōu)選項(xiàng)如下文所述。它對于要實(shí)現(xiàn)在ASIC HLE結(jié)構(gòu)中的FPGA LE功能而言是比較理想的。例如,由FPGA左上角附近的LE實(shí)現(xiàn)的一種或多種功能最好能夠由ASIC中相應(yīng)位置上(比如靠近左上角)的必要數(shù)量的HLE來實(shí)現(xiàn)。
結(jié)合圖16,還要說明的一點(diǎn)是,ASIC 500中的某些HLE 200可能不會被用到。
為了完整性,圖17示出了ASIC 500上的一些示例性的高層互連線電路510、520。530、540和550。例如,電路520可以被用來(在ASIC定制的基礎(chǔ)上)產(chǎn)生從位于ASIC 500左上角附近的HLE 200的I/O端口460(比如一個(gè)輸出)到位于ASIC正下方附近的另一個(gè)HLE 200的I/O端口460(比如一個(gè)輸入)的連接。舉另一個(gè)例子來說,電路550可以被用來(在ASIC定制的基礎(chǔ)上)產(chǎn)生從位于ASIC500左下角附近的HLE 200的I/O端口460(比如一個(gè)輸出)到ASIC的輸出端口(未示出)的連接。這里可能需要兩層可定制金屬(以及穿插的可定制通孔)來提供非阻塞的、高層的布線,這些布線可以根據(jù)任何所需的安排進(jìn)入、引出HLE 200以及/或是在HLE 200之間互連。
在ASIC設(shè)計(jì)中較理想的情況是,符合本發(fā)明的器件中需要自行定制(編程)的層數(shù)相對較小。在本文中至此已經(jīng)提到過需要自定制的層主要是提供HLE的垂直與水平互連線導(dǎo)體之間的可編程通孔420/440(圖4和圖6)或類似結(jié)構(gòu)的層、為連接高層互連線電路的I/O端口提供可編程通孔470(圖8)的層,以及提供高層互連線電路本身的層。(或者,也可以總是提供全部的I/O端口通孔470,在需要時(shí)將它們與高層互連線電路相連(使用),而在不需要時(shí)則旁路(不使用))。
本發(fā)明的一個(gè)重要優(yōu)點(diǎn)就是任何FPGA LE的功能都可以被映射到一個(gè)或多個(gè)ASIC HLE上(反之亦然)。這樣就可以提供對應(yīng)于任何用戶的已編程或已配置FPGA的基于HLE的ASIC等效產(chǎn)品(反之亦然),而不需要在任何層次上(除了上文中提到的簡單的重映射以外)重新綜合用戶的邏輯。這與大多數(shù)結(jié)構(gòu)化ASIC廠商提供的FPGA等效實(shí)現(xiàn)相比有明顯的優(yōu)勢。通常,這類廠商會采用復(fù)雜的多門或門陣列設(shè)計(jì)來構(gòu)造邏輯結(jié)構(gòu)。由于這些邏輯結(jié)構(gòu)的構(gòu)建模塊與FPGA不相近,如果使用FPGA進(jìn)行了原型設(shè)計(jì),就要重新進(jìn)行綜合。這種不靈活性就要求額外的驗(yàn)證工作來保證FPGA中設(shè)計(jì)的原型產(chǎn)品與結(jié)構(gòu)化ASIC中構(gòu)造的設(shè)計(jì)在功能上相同。如果要產(chǎn)生一個(gè)與這種結(jié)構(gòu)化ASIC等效的已編程FPGA,邏輯的重綜合也同樣是必要的。本發(fā)明避免了在已配置FPGA與基于HLE的ASIC之間進(jìn)行遷移時(shí)所需的這種重新綜合。另外,與結(jié)構(gòu)上類似FPGA LE的ASIC LE相比,HLE還節(jié)省了空間(因?yàn)閷τ诿總€(gè)FPGA LE來說,只有實(shí)現(xiàn)對應(yīng)已編程FPGA LE的功能所必須數(shù)量的HLE才被使用)。
圖18示出了一系列示例性的流程單元(即步驟和/或結(jié)果),這些流程單元可被用來產(chǎn)生對應(yīng)于等效的基于LE的FPGA以及基于HLE的ASIC的設(shè)計(jì)。圖18示出了首先產(chǎn)生一個(gè)FPGA設(shè)計(jì),然后再由所述的FPGA設(shè)計(jì)產(chǎn)生一個(gè)大致等效的ASIC設(shè)計(jì)。用戶已經(jīng)指定的必要邏輯(以及其他可能的功能)在流程單元610中示出,典型的標(biāo)準(zhǔn)形式為RTL(寄存器傳輸級)。在流程單元620中,所述的RTL由流程單元610中所提供的相對通用的規(guī)范被綜合成可以在具有特定特性的FPGA中實(shí)現(xiàn)的形式(比如包含4-LUT和寄存器的LE等等)。流程單元620可以利用商用的FPGA綜合軟件工具來完成,比如位于California,San Jose的Altera公司所提供的Quatus II產(chǎn)品。綜合620得到的結(jié)果接著在流程單元630中被映射到特定的FPGA產(chǎn)品中。
下一個(gè)流程單元640是將FPGA映射轉(zhuǎn)換為對應(yīng)于特定FPGA的網(wǎng)單及布局信息,所述的特定FPGA是屬于流程單元630所設(shè)想的一般FPGA產(chǎn)品范圍之內(nèi)的。例如,流程單元640可以工作在具有特定數(shù)量及結(jié)構(gòu)的資源的FPGA中。流程單元640規(guī)定了用這些資源中的哪一些來實(shí)現(xiàn)用戶設(shè)計(jì)所需的各個(gè)功能。特定類型的FPGA可以根據(jù)在流程單元640中產(chǎn)生的信息通過比特流來編程。
為了產(chǎn)生一個(gè)與根據(jù)信息640編程的FPGA基本等效的基于HLE的ASIC,要根據(jù)本發(fā)明對640信息執(zhí)行步驟650。步驟650是一種1對1的功能單元映射,它將640信息中的功能單元映射為一個(gè)或一組HLE,這些HLE可以最小化地實(shí)現(xiàn)所述的功能單元。在本說明書上文所討論的例子中,所述的功能單元要么是給定的FPGA LE中的LUT所實(shí)現(xiàn)的組合邏輯,要么是給定的FPGA LE中的寄存器。如果所述的功能單元是組合邏輯,那么步驟650就將該邏輯映射為能夠?qū)崿F(xiàn)所述功能的最少數(shù)量的HLE。其中最好包括采用上述的邏輯刪減來減少所需的選擇級數(shù)。其他技術(shù)也可以被用來簡化(優(yōu)化)HLE中實(shí)現(xiàn)的邏輯。如果所述的功能單元是一個(gè)寄存器,那么步驟650就將該寄存器映射為兩個(gè)HLE,就如圖13中所示的那樣。步驟650還選擇讓哪些HLE來實(shí)現(xiàn)哪些功能單元,以及各個(gè)HLE應(yīng)該被如何配置以便讓該HLE能夠?qū)崿F(xiàn)它在被分配到的功能單元中的作用。例如,步驟650在將FPGA上的功能定位到等效的ASIC上時(shí),最好保持一般的功能布局(但是保持一般定位并不是必需的,且等效的HLE可以被放置在目標(biāo)ASIC的其他部分中)。步驟650還規(guī)定了高層的布線,用以提供引入、引出HLE或HLE組、以及/或是在HLE或HLE組之間的連線,這些連線通常是不能在較低的、較為直接的、HLE間的層次上提供的。以上說明中假定了步驟650是在具有足夠容量來實(shí)現(xiàn)起始FPGA中所規(guī)定功能的ASIC中執(zhí)行的。
步驟650的結(jié)果660是ASIC網(wǎng)單和布局信息,這些信息可以被用來規(guī)定制造ASIC所需的掩膜,所述的ASIC是在功能上與起始FPGA(由640信息規(guī)定的)等效的。比較有利的一點(diǎn)是,所述的660信息是直接從640信息中得到的。這樣在執(zhí)行FPGA到ASIC的轉(zhuǎn)換中,就不需要重新綜合用戶的起始邏輯規(guī)范(比如在步驟620中那樣)。因此根據(jù)圖18所示的步驟及結(jié)果所產(chǎn)生的FPGA與ASIC之間的等效性就不會存在缺陷。
圖19示出了另一項(xiàng)符合本發(fā)明的用于產(chǎn)生等效的基于LE的FPGA與基于HLE的ASIC的技術(shù)。流程單元710與720分別與圖18中的流程單元610和620相似。與特定FPGA技術(shù)相關(guān)聯(lián)的綜合720的結(jié)果被用來產(chǎn)生用戶邏輯設(shè)計(jì)到FPGA器件、以及用戶邏輯設(shè)計(jì)到基于HLE的ASIC器件的映射。換句話說,一種通用的邏輯綜合720被用作映射730和750的共同基礎(chǔ)。這兩種映射的邏輯等效性就得到了保證。FPGA映射730被用來為特定的FPGA設(shè)計(jì)產(chǎn)生網(wǎng)單及布局信息(即編程或配置)。ASIC映射750則被用來為一個(gè)特定的掩膜可編程的基于HLE的ASIC的可編程掩膜產(chǎn)生規(guī)范760。根據(jù)信息740產(chǎn)生的FPGA在邏輯上等效于根據(jù)信息760產(chǎn)生的ASIC,反之亦然。例如,如果一開始只產(chǎn)生了ASIC版本,但是保留了根據(jù)初始綜合720得到的FPGA映射730或FPGA信息740,那么無需重新綜合,而只要使用信息740或映射730(再次產(chǎn)生信息740)就能得到與ASIC等效的FPGA。這一點(diǎn)對于從首先產(chǎn)生的FPGA轉(zhuǎn)換到之后所需的等效ASIC而言同樣適用,這里假定了最初產(chǎn)生的映射750或信息760都被保留了下來。根據(jù)信息760或映射750(現(xiàn)在被當(dāng)作用于再次產(chǎn)生信息760的基礎(chǔ)),可以在任何時(shí)候產(chǎn)生ASIC。無需進(jìn)行邏輯再綜合,而且之后產(chǎn)生的ASIC與最初產(chǎn)生的FPGA之間的等效性也有保證。
圖20示出了另一種符合本發(fā)明的根據(jù)已有的基于HLE的ASIC產(chǎn)生基于LE的FPGA的技術(shù)。同樣,圖20中的流程單元810和820分別類似于圖18中的流程單元610和620(或是圖19中的流程單元710和720)。技術(shù)映射830與基于LE的FPGA體系相關(guān)聯(lián),但是它利用HLE庫840來執(zhí)行一個(gè)步驟,該步驟能夠由基于FPGA LE的映射產(chǎn)生基于HLE的映射。流程單元850根據(jù)映射830為掩膜可編程的基于HLE的ASIC的可編程掩膜產(chǎn)生一個(gè)規(guī)范。ASIC可以根據(jù)該規(guī)范來產(chǎn)生。
如果今后需要一個(gè)等效的FPGA,就可以根據(jù)信息850來產(chǎn)生該FPGA,就如圖20中進(jìn)一步示出的那樣。在流程單元860中,信息850從基于HLE的形式重新映射回基于LE的形式。這種映射可以是從各個(gè)HLE或HLE組回到LE的1對1映射,所述的HLE或HLE組是根據(jù)單元830和840中的LE功能得到的,而所述的LE則是最初具有所述功能的LE。為了便于進(jìn)行這種1對1的映射,信息850中可以包括一個(gè)記錄,其中記載了它的各個(gè)部分是如何從最初的LE得來的。在流程單元860中不需要邏輯再綜合。根據(jù)單元860,就能得到FPGA網(wǎng)單與布局信息870,并且該信息可以被用來產(chǎn)生與根據(jù)信息850得到的ASIC邏輯等效的FPGA。
盡管在前文中至少已經(jīng)有所暗示,這里還是要明確指出,技術(shù)映射830并不能任意地組合HLE來實(shí)現(xiàn)用戶的邏輯設(shè)計(jì)。相反,映射830僅限于使用HLE來實(shí)現(xiàn)可以在FPGA LE中實(shí)現(xiàn)的功能。這使得之后在單元870中對信息850進(jìn)行1對1的映射860,以便將其映射回基于LE的形式成為可能。
圖21a-c、22a-c以及23示出了如圖3所示的HLE中的NAND陣列220和可能的其他元件230(或等效電路)可以根據(jù)本發(fā)明其他方面內(nèi)容進(jìn)行各種配置(例如,掩膜編程)的實(shí)例。例如,圖21a-c示出了提供反相器的各種形式。在圖21a中,一個(gè)NAND門220的一個(gè)輸入端被綁定為邏輯1。在圖21b中,使用了一個(gè)反相器230。在圖21c中,NAND門220a和220b或是兩個(gè)反相器230a和230b被并聯(lián)(通過對HLE中的互連線資源進(jìn)行恰當(dāng)?shù)难谀ぞ幊?,以有效地提供一個(gè)更大的反相器,比如用于從HLE提供更強(qiáng)的輸出驅(qū)動。
圖22a-c示出了如何提供非反向緩沖器的若干實(shí)例。在圖22a中,NAND門220a和220b被串連,其中各個(gè)NAND門都有一個(gè)輸入端被綁定到邏輯1。同樣,HLE的布線資源被掩膜編程以串連所述的NAND門。在圖22b中,反相器230a和230b同樣被串連。在圖22c中,NAND門220a和b以反相器形式并聯(lián)(如圖21a中所示),以有效地提供一個(gè)更大的第一反相器220a/b,并且反相器230a和b被同樣并聯(lián)以有效地提供一個(gè)更大的第二反相器230a/b。如圖21c中所示,圖22c中的較大單元從HLE提供了更強(qiáng)的輸出驅(qū)動。
圖23示出了使用NAND門220a或220b中的一個(gè)來提供NAND功能。
在圖21-23所示的多種選項(xiàng)中做出某些選擇的動機(jī)可能是需要在某個(gè)使用符合本發(fā)明的HLE的器件中為不同的HLE提供不同量的輸出驅(qū)動。一定尺寸的驅(qū)動器通常能夠驅(qū)動一定數(shù)量的寄生負(fù)載。在ASIC流程中,如果輸出數(shù)量非常巨大以至于原始的驅(qū)動單元不能驅(qū)動負(fù)載,往往就必須或希望增大標(biāo)準(zhǔn)單元或金屬可編程單元或是插入另一個(gè)驅(qū)動器(緩沖器或反相器)來提升驅(qū)動力。這意味著尺寸增大或增加緩沖器/反相器會造成面積的擴(kuò)大。然而,使用符合本發(fā)明的基于HLE的ASIC,就可以容易利用未被使用的單元(HLE或部分HLE)來提升驅(qū)動力(非反相或反相),比如通過低層可編程互連線資源。在各種不同配置中-比如在圖21-23中展示的那些-可以一同使用的單元(如220和/或230)就不必位于相同的HLE中。它們可以在相鄰或相近的HLE中。
就如上文中已經(jīng)提到過的那樣,可以使用各種技術(shù)來節(jié)省實(shí)現(xiàn)某些功能所需的HLE數(shù)量。如上所述,邏輯刪減是這類HLE節(jié)省技術(shù)的一個(gè)實(shí)例。另一個(gè)實(shí)例是一個(gè)HLE驅(qū)動另一個(gè)HLE,而第二個(gè)HLE被設(shè)置為比如一個(gè)2輸入NAND門。如果發(fā)生這種情況,那么ASIC流程就可以將所述的NAND門包含在第一個(gè)HLE中,從而將HLE數(shù)量從兩個(gè)減為一個(gè)。有許多類似的例子,其中第n個(gè)HLE可以被包含到第n-1個(gè)HLE中,第n-1個(gè)HLE可以被包含到第n-2個(gè)HLE中,等等,特別是在包括如圖3所示的反相器230的情況下。其他實(shí)例還包括(!A AND B),(A AND B)等等。
可以理解,以上說明只是本發(fā)明原理的示例,而那些精通本技術(shù)的人可以在不偏離本發(fā)明范圍及指導(dǎo)思想的前提下作出各種改進(jìn)。例如,本文中所述的FPGA與ASIC不必是純粹的FPGA或ASIC。一個(gè)器件可以部分是FPGA或部分是ASIC與其他組成部分(比如部分FPGA和部分ASIC)。本文中所指的FPGA和ASIC可以被理解為這類混合器件的FPGA或ASIC部分。
盡管本文中主要說明了用通孔編程(參見例如圖4-9)進(jìn)行邏輯構(gòu)建以及HLE內(nèi)、HLE間的布線,但是可以理解,其他類型的編程(比如利用金屬可選連線、熔絲、反熔絲、CRAM控制、Flash控制等等)也可以被用來作為替代或補(bǔ)充。如果用到了所述的其他技術(shù)中的某一些,那么上文中所述的掩膜編程就可以被認(rèn)為是指代了這些其他編程技術(shù),這些技術(shù)可以通過除了自定制或部分自定制掩膜以外的其他方式來實(shí)現(xiàn)。同樣,盡管本文中的HLE都被描述為用于實(shí)現(xiàn)與FPGA LE等效的功能,但本文中所示的HLE都是高密度高性能的元件。因此它們同樣可以被用來構(gòu)成高性能的知識產(chǎn)權(quán)(IP)(比如數(shù)字信號處理(DSP)模塊、微處理器、等等)、存儲器,等等。
權(quán)利要求
1.一種邏輯單元電路,包括選擇電路,它利用輸入到該選擇電路的第一選擇電路輸入信號來選擇第二與第三選擇電路輸入信號中的一個(gè)作為選擇電路輸出信號;用于提供一個(gè)邏輯電路輸出信號的邏輯電路,所述的輸出信號是第一與第二邏輯電路輸入信號的邏輯函數(shù);以及可編程互連線電路,該電路使得第一與第二邏輯電路輸入信號中的至少一個(gè)可以從所述選擇電路輸出信號或一個(gè)來自邏輯單元外部的信號得到。
2.根據(jù)權(quán)利要求1所述的電路,其中所述的選擇電路包括多路選擇器電路。
3.根據(jù)權(quán)利要求1所述的電路,其中所述的邏輯電路包括NAND電路。
4.根據(jù)權(quán)利要求1所述的電路,其中所述的可編程互連線電路包括掩膜可編程電路。
5.根據(jù)權(quán)利要求1所述的電路,其中所述的可編程電路包括可編程通孔電路。
6.根據(jù)權(quán)利要求1所述的電路,還包括其他可編程互連線電路,用于讓第一、第二及第三選擇電路輸入信號中的至少一個(gè)能夠從所述的邏輯電路輸出信號得到。
7.根據(jù)權(quán)利要求6所述的電路,還包括額外的可編程互連線電路,用于讓第一、第二及第三選擇電路輸入信號中的至少一個(gè)能夠從來自邏輯單元外部的一個(gè)信號得到。
8.根據(jù)權(quán)利要求1所述的電路,還包括其他邏輯電路,用于提供其他的邏輯電路輸出信號,所述的輸出信號是第一與第二其他邏輯電路輸入信號的邏輯函數(shù)。
9.根據(jù)權(quán)利要求8所述的電路,還包括其他可編程互連線電路,用于讓第一與第二其他邏輯電路輸入信號中的至少一個(gè)能夠從所述的選擇電路輸出信號或是一個(gè)來自邏輯單元外部的信號得出。
10.根據(jù)權(quán)利要求8所述的電路,還包括其他可編程互連線電路,用于讓第一與第二其他邏輯電路輸入信號中的至少一個(gè)能夠從所述的邏輯電路輸出信號得出。
11.根據(jù)權(quán)利要求10所述的電路,還包括額外的可編程互連線電路,用于讓第一與第二其他邏輯電路輸入信號中的至少一個(gè)能夠從所述的選擇電路輸出信號或是從來自邏輯單元外部的一個(gè)信號得出。
12.一種集成電路器件,包括多個(gè)邏輯單元電路,每個(gè)單元都如權(quán)利要求1所述的一樣。
13.根據(jù)權(quán)利要求12所述的器件,還包括其他可編程互連線電路,用于讓來自至少一部分所述邏輯單元電路中每一個(gè)的信號被加載到與上述邏輯單元電路相鄰的多個(gè)邏輯單元電路中的另一個(gè)邏輯單元電路上。
14.根據(jù)權(quán)利要求13所述的器件,其中所述的可編程互連線電路被設(shè)置在所述器件的第一子集層中,并且其中所述的其他可編程互連線電路也被設(shè)置在所述器件的第一子集層中。
15.根據(jù)權(quán)利要求14所述的器件,還包括額外的可編程互連線電路,用于讓來自至少一部分所述邏輯單元電路中每一個(gè)的信號被加載到與所述邏輯單元電路不相鄰的多個(gè)邏輯單元電路中的另一個(gè)邏輯單元電路上。
16.根據(jù)權(quán)利要求15所述的器件,其中所述的額外可編程互連線電路至少部分地被設(shè)置在不是所述器件中的第一子集層的層中。
17.一種利用ASIC體系結(jié)構(gòu)來設(shè)計(jì)基本等效于FPGA的ASIC的方法,所述的ASIC體系結(jié)構(gòu)中包括多個(gè)HLE,每個(gè)HLE都能夠提供所述FPGA的LE的一部分功能,并且這些HLE可以在必要時(shí)被組合在一起來實(shí)現(xiàn)任意一個(gè)LE所能所現(xiàn)的全部功能,所述的方法包括綜合一個(gè)用戶邏輯設(shè)計(jì);將綜合后的邏輯設(shè)計(jì)映射為一個(gè)FPGA設(shè)計(jì);以及將FPGA設(shè)計(jì)中的各個(gè)LE重新映射為ASIC設(shè)計(jì)中的一個(gè)或多個(gè)HLE。
18.根據(jù)權(quán)利要求17所述的方法,其中所述的映射包括生成FPGA網(wǎng)單及布局信息。
19.根據(jù)權(quán)利要求18所述的方法,其中所述的重新映射是對所述的FPGA網(wǎng)單及布局信息執(zhí)行的。
20.根據(jù)權(quán)利要求17所述的方法,其中所述的重新映射包括產(chǎn)生ASIC網(wǎng)單與布局信息。
21.根據(jù)權(quán)利要求19所述的方法,其中所述的重新映射包括產(chǎn)生ASIC網(wǎng)單與布局信息。
22.利用權(quán)利要求17中所述的方法制造的ASIC。
23.根據(jù)權(quán)利要求17所述的方法,其中所述的重新映射包括利用彼此相鄰的多個(gè)HLE來實(shí)現(xiàn)單個(gè)HLE所不能實(shí)現(xiàn)的任意LE的功能。
24.根據(jù)權(quán)利要求17所述的方法,其中所述的重新映射包括在將FPGA LE的功能重新映射到一個(gè)或多個(gè)HLE時(shí)使用邏輯刪減。
25.根據(jù)權(quán)利要求17所述的方法,其中所述的重新映射包括將每個(gè)FPGA LE的(1)邏輯功能與(2)寄存器功能進(jìn)一步重新映射到各個(gè)不同的HLE或HLE組。
26.一種利用ASIC體系結(jié)構(gòu)來設(shè)計(jì)基本等效的FPGA與ASIC的方法,所述的體系結(jié)構(gòu)中包括多個(gè)HLE,每個(gè)HLE都能夠提供FPGA的LE的一部分功能,并且這些HLE可以在必要時(shí)被組合在一起來實(shí)現(xiàn)任意一個(gè)LE所能所現(xiàn)的全部功能,所述的方法包括綜合用戶的邏輯設(shè)計(jì);將經(jīng)過綜合的邏輯設(shè)計(jì)映射為一個(gè)FPGA設(shè)計(jì);以及將經(jīng)過綜合的邏輯設(shè)計(jì)映射為一個(gè)ASIC設(shè)計(jì)。
27.根據(jù)權(quán)利要求26所述的方法,其中所述的映射為FPGA設(shè)計(jì)包括生成FPGA網(wǎng)單及布局信息。
28.根據(jù)權(quán)利要求26所述的方法,其中所述的映射為ASIC設(shè)計(jì)包括生成ASIC網(wǎng)單及布局信息。
29.利用權(quán)利要求26所述的方法制造的ASIC。
30.根據(jù)權(quán)利要求26所述的方法,其中所述的映射為ASIC設(shè)計(jì)包括使用多個(gè)HLE來實(shí)現(xiàn)FPGA LE的功能。
31.根據(jù)權(quán)利要求30所述的方法,其中所述的使用包括使用彼此相鄰的多個(gè)HLE來實(shí)現(xiàn)單個(gè)HLE無法實(shí)現(xiàn)的任意LE的功能。
32.根據(jù)權(quán)利要求30所述的方法,其中所述的使用包括使用邏輯刪減來幫助用一個(gè)或多個(gè)HLE實(shí)現(xiàn)一個(gè)FPGA LE的功能。
33.根據(jù)權(quán)利要求30所述的方法,其中所述的使用包括使用彼此不同的HLE或HLE組來實(shí)現(xiàn)一個(gè)FPGA LE的(1)邏輯功能及(2)寄存器功能。
34.一種設(shè)計(jì)等效于ASIC的FPGA的方法,所述ASIC的結(jié)構(gòu)中包括多個(gè)HLE,每個(gè)HLE能夠提供FPGA LE的一部分功能,并且所述的HLE可以在必要時(shí)被組合起來實(shí)現(xiàn)任何一個(gè)LE所能實(shí)現(xiàn)的全部功能,所述的方法包括綜合用戶的邏輯設(shè)計(jì);以及以使用HLE實(shí)現(xiàn)FPGA LE功能為基礎(chǔ),將經(jīng)過綜合的邏輯設(shè)計(jì)映射為一個(gè)ASIC設(shè)計(jì)。
35.一種設(shè)計(jì)等效于ASIC的FPGA的方法,所述ASIC的結(jié)構(gòu)中包括多個(gè)HLE,每個(gè)HLE都能構(gòu)提供FPGA LE的部分功能,并且這些HLE在必要時(shí)可以被組合在一起來實(shí)現(xiàn)任何一個(gè)LE所能實(shí)現(xiàn)的全部功能,所述的方法包括綜合用戶的邏輯設(shè)計(jì);以使用HLE實(shí)現(xiàn)FPGA LE功能為基礎(chǔ),將經(jīng)過綜合的邏輯設(shè)計(jì)映射為一個(gè)ASIC設(shè)計(jì);以及將ASIC設(shè)計(jì)重新映射為FPGA設(shè)計(jì)。
36.根據(jù)權(quán)利要求35所述的方法,其中所述的映射包括生成ASIC網(wǎng)單及布局信息。
37.根據(jù)權(quán)利要求36所述的方法,其中所述的重映射是對所述的FPGA網(wǎng)單及布局信息執(zhí)行的。
38.根據(jù)權(quán)利要求35所述的方法,其中所述的重映射包括產(chǎn)生FPGA網(wǎng)單及布局信息。
39.根據(jù)權(quán)利要求37所述的方法,其中所述的重映射包括生成FPGA網(wǎng)單及布局信息。
40.利用權(quán)利要求35所述的方法制造的FPGA。
41.根據(jù)權(quán)利要求35所述的方法,其中所述的映射包括利用彼此相鄰的多個(gè)HLE來實(shí)現(xiàn)單個(gè)HLE所不能實(shí)現(xiàn)的任意LE的功能。
42.根據(jù)權(quán)利要求41所述的方法,其中所述的映射還包括記錄哪些HLE被一起使用來實(shí)現(xiàn)單個(gè)HLE所不能實(shí)現(xiàn)的任意LE的功能。
43.根據(jù)權(quán)利要求42所述的方法,其中所述的重映射還包括利用所述的記錄來識別HLE組以重映射為各個(gè)LE。
44.根據(jù)權(quán)利要求35所述的方法,其中所述的映射包括在利用HLE實(shí)現(xiàn)至少一部分FPGA LE的功能時(shí),運(yùn)用邏輯刪減。
45.根據(jù)權(quán)利要求35所述的方法,其中所述的映射包括將每個(gè)FPGA LE的(1)邏輯功能及(2)寄存器功能進(jìn)一步映射到各個(gè)不同的HLE或HLE組。
46.一種在功能上等效于一個(gè)已編程FPGA的ASIC,其中包括多個(gè)HLE,每個(gè)HLE在被充分利用的情況下也只能實(shí)現(xiàn)FPGA中一個(gè)被充分利用的LE的一部分功能,每個(gè)所述LE的功能被映射到相應(yīng)一個(gè)HLE或HLE組。
47.邏輯單元電路,其組合邏輯能力主要包括單輸入查找表電路以及兩個(gè)二輸入NAND門或是這類NAND門的邏輯等效電路。
48.根據(jù)權(quán)利要求47所述的電路,其中所述的查找表電路包括具有兩個(gè)可選輸入端以及一個(gè)選擇控制輸入端的多路選擇器電路。
49.根據(jù)權(quán)利要求47所述的電路,還包括可編程互連線電路,用于可選擇地將信號引入、引出所述的查找表電路及NAND門或是它們的邏輯等效電路,以及在所述電路之間傳遞信號。
50.根據(jù)權(quán)利要求47所述的電路,還包括輸出緩沖器電路。
51.根據(jù)權(quán)利要求50所述的電路,還包括可編程互連線電路,用于可選擇地將所述查找表電路或至少一個(gè)NAND門或所述邏輯等效電路的輸出信號加載到所述輸出緩沖器電路上。
52.根據(jù)權(quán)利要求49所述的電路,其中所述的可編程互連線電路至少是部分掩膜可編程的。
53.根據(jù)權(quán)利要求49所述的電路,其中所述的可編程互連線電路至少是部分通孔可編程的。
54.一種包括多個(gè)邏輯單元電路的ASIC,每個(gè)邏輯單元電路與權(quán)利要求47所述的一樣。
55.根據(jù)權(quán)利要求54所述的ASIC,一個(gè)功能上等效的FPGA中的每個(gè)邏輯單元的所有功能都由所述的相應(yīng)一個(gè)邏輯單元電路或是邏輯單元電路組實(shí)現(xiàn)。
56.一種包括HLE的結(jié)構(gòu)化ASIC,其中所述的結(jié)構(gòu)化ASIC能實(shí)現(xiàn)能被綜合為FPGA LE的邏輯。
57.根據(jù)權(quán)利要求56所述的結(jié)構(gòu)化ASIC,其中所述的邏輯被映射為LE,再被重映射回HLE。
58.根據(jù)權(quán)利要求56所述的結(jié)構(gòu)化ASIC,其中所述的每個(gè)LE的全部功能都由HLE單獨(dú)或組合完成。
全文摘要
通過使用某種ASIC體系結(jié)構(gòu)來輔助提供FPGA的ASIC等效實(shí)現(xiàn),并使其更加高效與經(jīng)濟(jì),所述的ASIC結(jié)構(gòu)包括多個(gè)所謂的混合邏輯單元(HLE),每個(gè)HLE能夠提供一個(gè)FPGA邏輯單元(LE)的一部分功能。各個(gè)用以實(shí)現(xiàn)用戶邏輯設(shè)計(jì)的FPGA LE的功能可以被映射到一個(gè)或多個(gè)HLE,而無需重新綜合用戶邏輯。只有實(shí)現(xiàn)各個(gè)LE的功能所必須的HLE才會被使用。各個(gè)LE與一個(gè)HLE或一組HLE之間的一對一等效有助于FPGA與ASIC設(shè)計(jì)之間的雙向映射(無需再綜合)。
文檔編號H01L27/00GK1716781SQ200510072989
公開日2006年1月4日 申請日期2005年5月25日 優(yōu)先權(quán)日2004年7月2日
發(fā)明者蔡家慶, 張少逸, 潘系光, 陳金彬, 倪威廉 申請人:阿爾特拉公司