本發(fā)明涉及集成電路領(lǐng)域,更確切地說,涉及可編程門陣列。
背景技術(shù):
::可編程門陣列屬于半定制集成電路,即通過后端工藝或現(xiàn)場編程,實現(xiàn)對邏輯電路的定制化。美國專利4,870,302披露了一種可編程門陣列。它含有多個可編程邏輯單元(configurablelogicelement,或configurablelogicblock)和可編程連接(configurableinterconnect,或programmableinterconnect)。其中,可編程邏輯單元在設(shè)置信號控制下可以選擇性地實現(xiàn)移位、邏輯非、and(邏輯與)、or(邏輯和)、nor(和非)、nand(與非)、xor(異或)、+(算術(shù)加)、-(算術(shù)減)等功能;可編程連接在設(shè)置信號控制下可以選擇性地實現(xiàn)兩條互連線之間的連接、斷開等功能。目前,很多應(yīng)用均涉及復(fù)雜數(shù)學(xué)函數(shù)的計算。復(fù)雜數(shù)學(xué)函數(shù)的例子包括超越函數(shù),如指數(shù)(exp)、對數(shù)(log)、三角函數(shù)(sina、cos)等。為了保證執(zhí)行速度,高性能應(yīng)用要求用硬件來實現(xiàn)復(fù)雜數(shù)學(xué)函數(shù)。在現(xiàn)有的可編程門陣列中,復(fù)雜數(shù)學(xué)函數(shù)均通過來固化計算單元來實現(xiàn)。這些固化計算單元為硬核(hardblock)的一部分,其電路已經(jīng)固化、不能對其進(jìn)行再配置。很明顯,固化計算單元將限制可編程門陣列的進(jìn)一步應(yīng)用。為了克服這個困難,本發(fā)明將可編程門電路的概念推廣,使固化計算單元可編程化。具體說來,可編程門電路除了含有可編程邏輯單元以外,還含有可編程計算單元。該可編程計算單元可以選擇性地實現(xiàn)多種數(shù)學(xué)函數(shù)中的任何一種。技術(shù)實現(xiàn)要素:本發(fā)明的主要目的是推廣可編程門電路在復(fù)雜數(shù)學(xué)計算領(lǐng)域的應(yīng)用。本發(fā)明的另一目的是提供一種可編程門電路,不僅其邏輯功能可以被定制,其計算功能也可以被定制。本發(fā)明的另一目的是提供一種計算能力更靈活、更強大的可編程門陣列。本發(fā)明的另一目的是提供一種芯片面積更小、成本更低的可編程門陣列。為了實現(xiàn)這些以及別的目的,本發(fā)明提出一種基于三維可寫存儲器(three-dimensionalwritablememory,簡稱為3d-w)的可編程門陣列。它含有一可編程計算單元陣列、一個可編程邏輯單元陣列和多個可編程連接。每個可編程計算單元含有至少一個3d-w陣列,該3d-w陣列存儲一種數(shù)學(xué)函數(shù)的查找表(lut)??删幊逃嬎銌卧氖褂梅謨蓚€階段:設(shè)置階段和計算階段。在設(shè)置階段,根據(jù)用戶需要將所需數(shù)學(xué)函數(shù)的lut加載到3d-w陣列中;在計算階段,通過查找lut來獲得基本數(shù)學(xué)函數(shù)的值。由于采用3d-w陣列,即使同一批次的芯片也可以實現(xiàn)不同的數(shù)學(xué)函數(shù)。而且,對于基于三維多次重復(fù)編程存儲(3d-mtp)陣列的可編程門陣列,由于在不同時段可以對3d-mtp陣列加載不同數(shù)學(xué)函數(shù)的lut,該可編程門陣列能實現(xiàn)可重構(gòu)計算。在本發(fā)明中,復(fù)雜數(shù)學(xué)函數(shù)是指算術(shù)加(+)和算術(shù)減(-)以外的數(shù)學(xué)函數(shù),包括指數(shù)、對數(shù)、三角函數(shù)等。除了可編程計算單元,可編程門陣列還含有多個可編程邏輯單元和可編程連接。在實現(xiàn)過程中,復(fù)雜數(shù)學(xué)函數(shù)首先被分解為多個基本數(shù)學(xué)函數(shù)。然后針對每個基本數(shù)學(xué)函數(shù)設(shè)置對應(yīng)的可編程計算單元,使其實現(xiàn)相應(yīng)的基本數(shù)學(xué)函數(shù)。最后,通過設(shè)置可編程邏輯單元和可編程連接,實現(xiàn)所需的復(fù)雜數(shù)學(xué)函數(shù)。采用3d-w來實現(xiàn)可編程門陣列有諸多優(yōu)勢。首先,由于3d-w存儲容量大,它可以存儲較大的lut。其次,3d-w陣列之間可以實現(xiàn)三維集成,因此屬于不同可編程計算單元的3d-w陣列可以相互堆疊在一起,以減少可編程門陣列所需的襯底面積。最后,由于3d-w陣列基本不占襯底面積,可編程邏輯單元和/或可編程連接可以集成在3d-w陣列下方,這樣可以進(jìn)一步減少可編程門陣列所需的襯底面積。相應(yīng)地,本發(fā)明提出一種可編程計算單元(100),其特征在于含有:一含有晶體管的半導(dǎo)體襯底(0);堆疊在該半導(dǎo)體襯底(0)上的一三維可寫存儲器(3d-w)陣列(110),該3d-w陣列(110)存儲一數(shù)學(xué)函數(shù)的至少部分查找表(lut);一設(shè)置信號(125),當(dāng)該設(shè)置信號(125)為“寫”時,將一數(shù)學(xué)函數(shù)的值寫入該3d-w陣列(110);當(dāng)該設(shè)置信號(125)為“讀”時,從該3d-w陣列(110)中讀出該數(shù)學(xué)函數(shù)的值。本發(fā)明還提出一種實現(xiàn)一復(fù)雜數(shù)學(xué)函數(shù)的可編程門陣列(400),其特征在于含有:一含有至少一可編程計算單元(100)的可編程計算單元陣列(100aa-100ad),該可編程計算單元(100)含有一三維可寫存儲器(3d-w)陣列(110)并存儲一基本數(shù)學(xué)函數(shù)的至少部分查找表(lut);一含有至少一可編程邏輯單元(200)的可編程邏輯單元陣列(200aa-200ad),該可編程邏輯單元從一邏輯運算庫中選擇性地實現(xiàn)一種邏輯運算;多個將該可編程計算單元陣列和該可編程邏輯單元陣列耦合的可編程連接(300);該可編程門陣列(400)通過對該可編程計算單元(100aa-100ad)、該可編程邏輯單元(200aa-200ad)和該可編程連接(300)進(jìn)行編程以實現(xiàn)該復(fù)雜數(shù)學(xué)函數(shù),該復(fù)雜數(shù)學(xué)函數(shù)是所述基本數(shù)學(xué)函數(shù)的一種組合。附圖說明圖1是一種三維可寫存儲器(3d-w)的截面圖。圖2是一種可編程計算單元的符號。圖3是第一種可編程計算單元的襯底電路布局圖。圖4是一種可編程門陣列的布局圖。圖5表示一種可重構(gòu)門陣列的兩個使用周期。圖6a披露一種可編程連接實現(xiàn)的連接庫;圖6b披露一種可編程邏輯單元實現(xiàn)的邏輯運算庫。圖7a是第二種可編程計算單元的襯底電路布局圖;圖7b是圖4中可編程計算單元100aa-100ad的截面圖。圖8是一種可編程門陣列具體實現(xiàn)的布局圖。注意到,這些附圖僅是概要圖,它們不按比例繪圖。為了顯眼和方便起見,圖中的部分尺寸和結(jié)構(gòu)可能做了放大或縮小。在不同實施例中,相同的符號一般表示對應(yīng)或類似的結(jié)構(gòu)。具體實施方式圖1是一種三維可寫存儲器(3d-w)的截面圖。3d-w是三維存儲器(3d-m)的一種,其存儲的信息采用電編程方式錄入。根據(jù)其能編程的次數(shù),3d-w又分為三維一次編程存儲器(3d-otp)和三維多次編程存儲器(3d-mtp)。其中,3d-otp能一次編程,3d-mtp能重復(fù)編程。常見的3d-w包括3d-xpoint(三維交叉點陣列存儲器)、3d-rram(三維阻抗存儲器)、3-dmemristor(三維阻存器)、3d-otp(三維一次編程存儲器)等。3d-w10含有一形成在襯底0上的襯底電路層0k。存儲層16a堆疊在襯底電路0k之上,存儲層16b堆疊在存儲層16a之上。襯底電路層0k含有存儲層16a、16b的周邊電路,它包括晶體管0t及其互連線0i(包括0m1-0m2)。其中,晶體管0t形成在一半導(dǎo)體襯底0中;互連線0i含有互連線層0m1-0m3。每個存儲層(如16a)含有多條第一地址線(如2a,沿y方向)、多條第二地址線(如1a,沿x方向)和多個3d-p存儲元(如1aa)。存儲層16a、16b分別通過接觸通道孔1av、3av與襯底0耦合。在一個3d-w中,每個存儲層含有多個3d-w陣列。3d-w陣列是在一個存儲層中所有共享了至少一條地址線的存儲元的集合。在一個3d-w陣列中,所有地址線是連續(xù)的,并不與不同3d-w陣列共享任何地址線。另外,一個3d-w芯片含有多個3d-w模塊。每個3d-w模塊包括3d-w中的所有存儲層,其頂存儲層僅含一個3d-w陣列,而且該3d-w陣列在襯底上的投影決定3d-w模塊的邊界。3d-w存儲元1aa含有一層編程膜12和一層二極管膜14。編程膜12可以是反熔絲膜,用于3d-otp;也可以是其它多次編程膜,用于3d-mtp。二極管膜14具有如下的廣義特征:在讀電壓下,其電阻較??;當(dāng)外加電壓小于讀電壓或者與讀電壓方向相反時,其電阻較大。二極管膜可以是p-i-n二極管,也可以是金屬氧化物(如tio2)二極管等。圖2是一種可編程計算單元100的符號。其輸入端in包括輸入數(shù)據(jù)115,輸出端out包括輸出數(shù)據(jù)135,設(shè)置端cfg包括設(shè)置信號125。當(dāng)設(shè)置信號125為“寫”時,在可編程計算單元100中寫入所需基本數(shù)學(xué)函數(shù)的lut。當(dāng)設(shè)置信號125為“讀”時,從可編程計算單元100中讀出lut中的值。圖3是第一種可編程計算單元100的襯底電路0k之布局圖。由于3d-w陣列堆疊在襯底電路0k上方,不在襯底中,因此只用虛線表示3d-w陣列在襯底0上的投影。在該實施例中,lut存儲在至少一個3d-w陣列110中。襯底電路0k包括3d-w陣列110的周邊電路:其x解碼器15、y解碼器(包括讀出電路)17以及z解碼器19等。圖4表示一種可編程門陣列400。它含有規(guī)則排列的可編程模塊400a和可編程模塊400b等。每個可編程模塊(如400a)含有多個可編程計算單元(如100aa-100ad)和可編程邏輯單元(如200aa-200ad)。在可編程計算單元(如100aa-100ad)和可編程邏輯單元(如200aa-200ad)之間含有可編程信道320、340;在可編程模塊400a和可編程模塊400b之間,也含有可編程信道310、330、350??删幊绦诺?10-350含有多個可編程連接300。對于熟悉本領(lǐng)域的專業(yè)人士來說,除了可編程信道以外,還可以采用門海(sea-of-gates)等設(shè)計。圖5表示可重構(gòu)門陣列400的兩個使用周期620和660。第一使用周期620分為兩個階段:設(shè)置階段610和計算階段630。在設(shè)置階段610,根據(jù)用戶需要將與第一數(shù)學(xué)函數(shù)相關(guān)的第一查找表加載到3d-mtp陣列110中;在計算階段630,在3d-mtp陣列110中查找相應(yīng)的lut來獲得第一數(shù)學(xué)函數(shù)的值。類似地,第二使用周期660也含有相同的設(shè)置階段650和計算階段670??芍貥?gòu)計算特別適合simd(單指令多數(shù)據(jù)流)的數(shù)據(jù)處理。一旦在設(shè)置階段610將lut加載到3d-mtp陣列110之后,可以將大量數(shù)據(jù)送入可編程計算單元100進(jìn)行處理,并獲得較高的處理速度。simd的應(yīng)用例子很多,如圖像處理中對多個像素的同樣操作或矢量操作,科學(xué)計算中使用的大規(guī)模平行計算等。此外,可編程門陣列還可以將其可編程計算單元中的計算流水線化,以進(jìn)一步提高吞吐率。圖6a披露一種可編程連接300能實現(xiàn)的連接庫。該可編程連接300與美國專利4,870,302中披露的可編程連接類似。它采用下述連接庫的一種連接方式:a)互連線302/304相連,互連線306/308相連,但302/304與306/308不相連;b)互連線302/304/306/308均相連;c)互連線306/308相連,互連線302、304不相連,也不與306/308相連;d)互連線302/304相連,互連線306、306不相連,也不與302/304相連;e)互連線302、304、306、306均不相連。在本說明書中,兩條互連線之間的符號“/”表示該兩條互連線相連,兩條互連線之間的符號“、”表示該兩條互連線不相連。圖6b披露一種可編程邏輯單元200能實現(xiàn)的邏輯運算庫。其輸入a和b為輸入數(shù)據(jù)210、220,輸出c為輸出數(shù)據(jù)230。該可編程邏輯單元200與美國專利4,870,302中披露的可編程邏輯單元類似。它可以實現(xiàn)下述邏輯運算庫中的至少一種:c=a、a邏輯非、a移位、and(a,b)、or(a,b)、nand(a,b)、nor(a,b)、xor(a,b)、算術(shù)加a+b、算術(shù)減a-b等。可編程邏輯單元200還可以含有寄存器、觸發(fā)器等時序電路元件,以實習(xí)流水線等操作。圖7a是第二種可編程計算單元100的布局圖。由于3d-w陣列110不占襯底面積,因此可編程邏輯單元200可以集成在3d-w陣列110下方,并被3d-w陣列110至少部分覆蓋。除此之外,還可以將可編程連接也集成到3d-w陣列110下方,并被3d-w陣列110至少部分覆蓋。所有這些措施都可以減少可編程門陣列400的芯片面積。圖7b是圖4中可編程計算單元100aa-100ad的截面圖。為了進(jìn)一步減少可編程門陣列400的芯片面積,可對3d-w陣列進(jìn)行三維集成,可編程計算單元100aa中的3d-w陣列110aa(存儲第一基本數(shù)學(xué)函數(shù)的luta,位于存儲層16a)堆疊在襯底電路0k之上(+z方向),可編程計算單元100ab中的3d-w陣列110ab(存儲第二基本數(shù)學(xué)函數(shù)的lutb,位于存儲層16b)堆疊在3d-w陣列110aa之上(+z方向),可編程計算單元100ac中的3d-w陣列110ac(存儲第三基本數(shù)學(xué)函數(shù)的lutc,位于存儲層16c)堆疊在3d-w陣列110ab之上(+z方向),可編程計算單元100ad中的3d-w陣列110ad(存儲第四基本數(shù)學(xué)函數(shù)的lutd,位于存儲層16d)堆疊在3d-w陣列110ac之上(+z方向)。同時,還可將可編程邏輯單元或可編程連接集成在襯底電路0k中,被3d-w陣列110aa-210ad至少部分覆蓋。圖8是一種可編程門陣列400的具體實現(xiàn),它用于實現(xiàn)一復(fù)雜數(shù)學(xué)函數(shù):e=a.sin(b)+c.cos(d)。在可編程信道310-350中可編程連接300采用圖6a中的表示方式:交叉點有圓點的可編程連接表示交叉線相連,交叉點無圓點的可編程連接表示交叉線不相連,斷開的可編程連接表示斷開的互連線被分為兩個互不相連的互連線段。在該實施例中,可編程計算單元100aa被設(shè)置為log(),其計算結(jié)果log(a)被送到可編程邏輯單元200aa的第一輸入??删幊逃嬎銌卧?00ab被設(shè)置為log[sin()],其計算結(jié)果log[sin(b)]被送到可編程邏輯單元200aa的第二輸入??删幊踢壿媶卧?00aa被設(shè)置為“算術(shù)加”,其計算結(jié)果log(a)+log[sin(b)]被送到可編程計算單元100ba。可編程計算單元100ba被設(shè)置為exp(),其計算結(jié)果exp{log(a)+log[sin(b)]}=a.sin(b)被送到可編程邏輯單元200ba的第一輸入。類似地,通過適當(dāng)?shù)脑O(shè)置,可編程計算單元100ac、100ad、可編程邏輯單元200ac、可編程計算單元100bc的結(jié)果c.cos(d)被送到可編程邏輯單元200ba的第二輸入??删幊踢壿媶卧?00ba被設(shè)置為“算術(shù)加”,a.sin(b)和c.cos(d)在此相加,最終結(jié)果送到輸出e。很明顯,通過改變設(shè)置,可編程門陣列400還可以實現(xiàn)其它復(fù)雜數(shù)學(xué)函數(shù)。本說明書均以現(xiàn)場編程門陣列(fpga)為例。在fpga中,晶圓將完成所有工序(包括所有可編程計算單元、可編程邏輯單元和可編程連接)。在編程現(xiàn)場,可通過設(shè)置可編程連接來定義fpga的功能。上述fpga的例子可以很容易地推廣到傳統(tǒng)的可編程門陣列。在傳統(tǒng)可編程門陣列中,晶圓僅半完工,即晶圓生產(chǎn)僅完成可編程計算單元和可編程邏輯單元,但未完成可編程連接。當(dāng)芯片的功能確定后,可編程信道310-350通過后端工藝來定制。應(yīng)該了解,在不遠(yuǎn)離本發(fā)明的精神和范圍的前提下,可以對本發(fā)明的形式和細(xì)節(jié)進(jìn)行改動,這并不妨礙它們應(yīng)用本發(fā)明的精神。因此,除了根據(jù)附加的權(quán)利要求書的精神,本發(fā)明不應(yīng)受到任何限制。當(dāng)前第1頁12當(dāng)前第1頁12