基于三维印录存储器的可编程门阵列的制作方法

文档序号:11236471阅读:487来源:国知局
本发明涉及集成电路领域,更确切地说,涉及可编程门阵列。
背景技术
::可编程门阵列属于半定制集成电路,即通过后端工艺或现场编程,实现对逻辑电路的定制化。美国专利4,870,302披露了一种可编程门阵列。它含有多个可编程逻辑单元(configurablelogicelement,或configurablelogicblock)和可编程连接(configurableinterconnect,或programmableinterconnect)。其中,可编程逻辑单元在设置信号控制下可以选择性地实现移位、逻辑非、and(逻辑与)、or(逻辑和)、nor(和非)、nand(与非)、xor(异或)、+(算术加)、-(算术减)等功能;可编程连接在设置信号控制下可以选择性地实现两条互连线之间的连接、断开等功能。目前,很多应用均涉及复杂数学函数的计算。复杂数学函数的例子包括超越函数,如指数(exp)、对数(log)、三角函数(sina、cos)等。为了保证执行速度,高性能应用要求用硬件来实现复杂数学函数。在现有的可编程门阵列中,复杂数学函数均通过来固化计算单元来实现。这些固化计算单元为硬核(hardblock)的一部分,其电路已经固化、不能对其进行再配置。很明显,固化计算单元将限制可编程门阵列的进一步应用。为了克服这个困难,本发明将可编程门电路的概念推广,使固化计算单元可编程化。具体说来,可编程门电路除了含有可编程逻辑单元以外,还含有可编程计算单元。该可编程计算单元可以选择性地实现多种数学函数中的任何一种。技术实现要素:本发明的主要目的是推广可编程门电路在复杂数学计算领域的应用。本发明的另一目的是提供一种可编程门电路,不仅其逻辑功能可以被定制,其计算功能也可以被定制。本发明的另一目的是提供一种计算能力更灵活、更强大的可编程门阵列。本发明的另一目的是提供一种芯片面积更小、成本更低的可编程门阵列。为了实现这些以及别的目的,本发明提出一种基于三维印录存储器(three-dimensionalprintedmemory,简称为3d-p)的可编程门阵列。它含有一可编程计算单元阵列、一个可编程逻辑单元阵列和多个可编程连接。每个可编程计算单元含有多个3d-p阵列,这些3d-p阵列存储一基本数学函数库的查找表(lut)。每个计算单元还含有多个可编程连接。通过这些可编程连接可以从相应的lut中查出所需函数的值。在本发明中,复杂数学函数是指算术加(+)和算术减(-)以外的数学函数,包括指数、对数、三角函数等。对于高性能可编程计算单元来说,3d-p尤其适合存储lut。3d-p是三维存储器(3d-m)的一种,其存储的信息是在工厂生产过程中采用采用印刷方式录入的(印录法,如光刻、纳米压印等手段)录入的。这些信息永久固定,出厂后不能改变。由于3d-p存储元不需要实现电编程,它可以比三维可写存储器(three-dimensionalwritablememory,简称为3d-w)承受更大的读电压和读电流。因此,3d-p的读速度远快于3d-w。除了可编程计算单元,可编程门阵列还含有多个可编程逻辑单元和可编程连接。在实现过程中,复杂数学函数首先被分解为多个基本数学函数。然后针对每个基本数学函数设置对应的可编程计算单元,使其实现相应的基本数学函数。最后,通过设置可编程逻辑单元和可编程连接,实现所需的复杂数学函数。采用3d-p来实现可编程计算单元有诸多优势:首先,3d-p比3d-w的读速度快,可实现高性能计算单元;其次,不同基本数学函数所需的3d-p阵列大小均相同或相差整数倍。代表不同基本数学函数的3d-p阵列可放置在不同存储层中,并通过三维堆叠集成到同一3d-m模块中。这能极大地减少可编程计算单元所占的衬底面积。最后,由于3d-p阵列基本不占衬底面积,可编程逻辑单元和/或可编程连接可以集成在3d-p阵列下方,这样可以进一步减少可编程计算单元所占的衬底面积。相应地,本发明提出一种择性地实现第一或第二数学函数的可编程计算单元(100),其特征在于含有:一含有晶体管的半导体衬底(0);堆叠在该半导体衬底(0)上的第一和第二三维印录存储器(3d-p)阵列(110,120),该第一3d-p阵列(110)存储该第一数学函数的至少部分查找表(luta),该第二3d-p阵列(120)存储该第二数学函数的至少部分查找表(lutb);至少一与该第一和第二3d-p阵列耦合的可编程连接(150或160),基于该可编程连接的设置信号(125),该可编程计算单元(200)选择性地实现该第一或第二数学函数。本发明还提出一种实现一复杂数学函数的可编程门阵列(400),其特征在于含有:一含有至少一可编程计算单元的可编程计算单元阵列(100aa-100ad),该可编程计算单元从一基本数学函数库中选择性地实现一种基本数学函数;一含有至少一可编程逻辑单元的可编程逻辑单元阵列(200aa-200ad),该可编程逻辑单元从一逻辑运算库中选择性地实现一种逻辑运算;多个将该可编程计算单元阵列和该可编程逻辑单元阵列耦合的可编程连接(300);该可编程门阵列(400)通过对该可编程计算单元(100aa-100ad)、该可编程逻辑单元(200aa-200ad)和该可编程连接(300)进行编程以实现该复杂数学函数,该复杂数学函数是所述基本数学函数的一种组合。附图说明图1是一种三维印录存储器(3d-p)的截面图。图2是一种可编程计算单元的符号。图3是一种可编程计算单元的电路框图,该图同时披露了该可编程计算单元实现的基本数学函数库。图4是该可编程计算单元的第一种实现方式,该图为其衬底电路布局图。图5a-图5b是该可编程计算单元的第二种实现方式,图5a为其截面图;图5b为其衬底电路布局图。图6是一种可编程门阵列的布局图。图7a披露一种可编程连接实现的连接库;图7b披露一种可编程逻辑单元实现的逻辑运算库。图8表示该可编程计算单元的第三种实现方式,该图为其衬底电路布局图。图9是一种可编程门阵列具体实现的布局图。注意到,这些附图仅是概要图,它们不按比例绘图。为了显眼和方便起见,图中的部分尺寸和结构可能做了放大或缩小。在不同实施例中,相同的符号一般表示对应或类似的结构。具体实施方式图1是一种三维印录存储器(3d-p)10的截面图。3d-p是三维存储器(3d-m)的一种,其存储的信息是在工厂生产过程中采用印刷方式录入的(印录法)。这些信息是永久固定的,出厂后不能改变。印录法可以是光刻(photo-lithography)、纳米压印法(nano-imprint)、电子束扫描曝光(e-beamlithography)、duv扫描曝光、激光扫描曝光(laserprogramming)等。通过光刻法录入数据的3d-m又被称为三维掩膜编程只读存储器(3d-mprom),这是一种常见的3d-m。3d-p10含有一形成在衬底0上的衬底电路层0k。存储层16a堆叠在衬底电路0k之上,存储层16b堆叠在存储层16a之上。衬底电路层0k含有存储层16a、16b的周边电路,它包括晶体管0t及其互连线0i(包括0m1-0m2)。其中,晶体管0t形成在一半导体衬底0中;互连线0i含有互连线层0m1-0m3。每个存储层(如16a)含有多条第一地址线(如2a,沿y方向)、多条第二地址线(如1a,沿x方向)和多个3d-p存储元(如1aa)。存储层16a、16b分别通过接触通道孔1av、3av与衬底0耦合。在一个3d-p中,每个存储层含有多个3d-p阵列。3d-p阵列是在一个存储层中所有共享了至少一条地址线的存储元的集合。在一个3d-p阵列中,所有地址线是连续的,并不与不同3d-p阵列共享任何地址线。另外,一个3d-p芯片含有多个3d-p模块。每个3d-p模块包括3d-p中的所有存储层,其顶存储层仅含一个3d-p阵列,而且该3d-p阵列在衬底上的投影决定3d-p模块的边界。3d-p含有至少两种存储元1aa、2aa。存储元含有一个二极管14。二极管14具有如下的广义特征:在读电压下,其电阻较小;当外加电压小于读电压或者与读电压方向相反时,其电阻较大。二极管膜可以是p-i-n二极管,也可以是金属氧化物(如tio2)二极管等。存储元2aa是一种低阻存储元;存储元1aa是一种高阻存储元。高阻存储元1aa比低阻存储元2aa多含有一层高阻膜12。作为一个简单的例子,高阻膜12可以是一层二氧化硅膜。该高阻膜12在工艺流程中利用印录法在存储元2aa处被物理移除。由于存储的数据在工艺过程中录入,且之后不能改变,3d-p不需要支持电编程。与之比较,三维可写存储器(three-dimensionalwritablememory,简称为3d-w)需要支持电编程。由于读电压/读电流不能超过编程电压/编程电流,3d-w所能承受的读电压/读电流均小于3d-p。由于3d-w的读速度远低于3d-p,3d-p更适合高性能计算。图2是一种可编程计算单元100的符号。其输入端in包括输入数据115,输出端out包括输出数据135,设置端cfg包括设置信号125。在设置信号125的控制下,该可编程计算单元100从一基本数学函数库中选择所需的基本数学函数。图3是一种可编程计算单元100的电路框图,该图同时披露了该可编程计算单元100能实现的基本数学函数库。它含有第一和第二可编程连接150、160、以及存储一基本数学函数库的luta-d。在本实施例中,第一可编程连接150是一1到4的demux,第二可编程连接160是一4到1的mux,该基本数学函数库包括对数log()、指数exp()、对数正弦log[sin()]和对数余弦log[cos()]。luta存储对数表log()、lutb存储指数表exp()、lutc存储对数正弦表log[sin()]、lutd存储对数余弦表log[cos()]。比如说,为了实现函数exp(),第一可编程连接150将输入数据115送到相应的lutb作为地址。基于这个地址进行查表,即读出lutb中的值(exp())。然后第二可编程连接160将从该值送到输出作为输出数据135。对于熟悉本领域的专业人士来说,一基本数学函数库可以含有更多的基本数学函数。比较说,它可以含有八种基本数学函数,包括log()、exp()、sin()、cos()、sqrt()、cbrt()、tan()、atan()。当然,其它多种组合也是可行的。图4表示可编程计算单元100的第一种实现方式,这是其衬底电路0k之布局图。由于3d-p阵列堆叠在衬底电路0k上方,不在衬底0中,因此只用虚线表示3d-p阵列在衬底0上的投影。在该实施例中,每个lut存储在一3d-p阵列中:luta存储在3d-p阵列110中,lutb存储在3d-p阵列120中,lutc存储在3d-p阵列130中,lutd存储在3d-p阵列140中。这些3d-p阵列110-140并肩排列。衬底电路0k包括可编程连接150、160以及各个3d-p阵列110-140的周边电路:如3d-p阵列110的x解码器15a和y解码器(包括读出电路)17a等。为了减少可编程计算单元100所占的衬底面积,本发明充分三维堆叠的特性,将存储不同基本数学函数的3d-p阵列堆叠在一起。图5a-图5b表示可编程计算单元100的第二种实现方式。在图5a的截面图中,存储函数log()之luta的3d-p阵列110堆叠在衬底电路0k上方(+z方向),存储函数exp()之lutb的3d-p阵列120堆叠在3d-p阵列110上方(+z方向),存储函数log[sin()]之lutc的3d-p阵列130堆叠在3d-p阵列120上方(+z方向),存储函数log[cos()]之lutd的3d-p阵列140堆叠在3d-p阵列130上方(+z方向)。从图5b的衬底电路布局图可以看得更清楚,该实施例中的存储luta的3d-p阵列110、存储lutb的3d-p阵列120、存储lutc的3d-p阵列130、存储lutd的3d-p阵列140在衬底0上的投影是重叠的,它们所占的衬底总面积只是图4中实施例的1/4。同时,z解码器19起可编程连接150、160的作用。图6表示一种可编程门阵列400。它含有规则排列的可编程模块400a和可编程模块400b等。每个可编程模块(如400a)含有多个可编程计算单元(如100aa-100ad)和可编程逻辑单元(如200aa-200ad)。在可编程计算单元(如100aa-100ad)和可编程逻辑单元(如200aa-200ad)之间含有可编程信道320、340;在可编程模块400a和可编程模块400b之间,也含有可编程信道310、330、350。可编程信道310-350含有多个可编程连接300。对于熟悉本领域的专业人士来说,除了可编程信道以外,还可以采用门海(sea-of-gates)等设计。图7a披露一种可编程连接300能实现的连接库。该可编程连接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均不相连。在本说明书中,两条互连线之间的符号“/”表示该两条互连线相连,两条互连线之间的符号“、”表示该两条互连线不相连。图7b披露一种可编程逻辑单元200能实现的逻辑运算库。其输入a和b为输入数据210、220,输出c为输出数据230。该可编程逻辑单元200与美国专利4,870,302中披露的可编程逻辑单元类似。它可以实现下述逻辑运算库中的至少一种:c=a、a逻辑非、a移位、and(a,b)、or(a,b)、nand(a,b)、nor(a,b)、xor(a,b)、算术加a+b、算术减a-b等。可编程逻辑单元200还可以含有寄存器、触发器等时序电路元件,以实习流水线等操作。图8表示可编程计算单元100的第三种实现方式。由于3d-p阵列110-140均不占衬底面积,因此可编程逻辑单元200可以集成到3d-p阵列110-140下方,并被3d-p阵列110-140至少部分覆盖。除此之外,还可以将可编程连接集成到3d-p阵列110-140下方,并被3d-p阵列110-140至少部分覆盖。所有这些措施都可以进一步减少可编程门阵列400的芯片面积。图9是一种可编程门阵列400的具体实现,它用于实现一复杂数学函数:e=a.sin(b)+c.cos(d)。在可编程信道310-350中可编程连接300采用图7a中的表示方式:交叉点有圆点的可编程连接表示交叉线相连,交叉点无圆点的可编程连接表示交叉线不相连,断开的可编程连接表示断开的互连线被分为两个互不相连的互连线段。在该实施例中,可编程计算单元100aa被设置为log(),其计算结果log(a)被送到可编程逻辑单元200aa的第一输入。可编程计算单元100ab被设置为log[sin()],其计算结果log[sin(b)]被送到可编程逻辑单元200aa的第二输入。可编程逻辑单元200aa被设置为“算术加”,其计算结果log(a)+log[sin(b)]被送到可编程计算单元100ba。可编程计算单元100ba被设置为exp(),其计算结果exp{log(a)+log[sin(b)]}=a.sin(b)被送到可编程逻辑单元200ba的第一输入。类似地,通过适当的设置,可编程计算单元100ac、100ad、可编程逻辑单元200ac、可编程计算单元100bc的结果c.cos(d)被送到可编程逻辑单元200ba的第二输入。可编程逻辑单元200ba被设置为“算术加”,a.sin(b)和c.cos(d)在此相加,最终结果送到输出e。很明显,通过改变设置,可编程门阵列400还可以实现其它复杂数学函数。本说明书均以现场编程门阵列(fpga)为例。在fpga中,晶圆将完成所有工序(包括所有可编程计算单元、可编程逻辑单元和可编程连接)。在编程现场,可通过设置可编程连接来定义fpga的功能。上述fpga的例子可以很容易地推广到传统的可编程门阵列。在传统可编程门阵列中,晶圆仅半完工,即晶圆生产仅完成可编程计算单元和可编程逻辑单元,但未完成可编程连接。当芯片的功能确定后,可编程信道310-350通过后端工艺来定制。应该了解,在不远离本发明的精神和范围的前提下,可以对本发明的形式和细节进行改动,这并不妨碍它们应用本发明的精神。因此,除了根据附加的权利要求书的精神,本发明不应受到任何限制。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1