用于人工神经网络中的模拟神经存储器的测试电路和方法与流程

文档序号:29207512发布日期:2022-03-12 02:21阅读:243来源:国知局
用于人工神经网络中的模拟神经存储器的测试电路和方法与流程
用于人工神经网络中的模拟神经存储器的测试电路和方法
1.优先权声明
2.本专利申请要求来自提交于2019年7月19日并且标题为“testing circuitry and methods for analog neural memory in artificial neural network”的美国临时专利申请62/876,515和提交于2019年9月12日并且标题为“testing circuitry and methods for analog neural memory in artificial neural network”的美国专利申请16/569,647的优先权。
技术领域
3.本文公开了用于深度学习人工神经网络中的模拟神经存储器的测试电路和方法。该模拟神经存储器包括一个或多个非易失性闪存存储器单元阵列。


背景技术:

4.人工神经网络模拟生物神经网络(动物的中枢神经系统,特别是大脑),并且用于估计或近似可取决于大量输入并且通常未知的函数。人工神经网络通常包括互相交换消息的互连“神经元”层。
5.图1示出了人工神经网络,其中圆圈表示神经元的输入或层。连接部(称为突触)用箭头表示,并且具有可以根据经验进行调整的数值权重。这使得神经网络适应于输入并且能够学习。通常,神经网络包括多个输入的层。通常存在神经元的一个或多个中间层,以及提供神经网络的输出的神经元的输出层。处于每一级别的神经元分别地或共同地根据从突触所接收的数据作出决定。
6.在开发用于高性能信息处理的人工神经网络方面的主要挑战中的一个挑战是缺乏足够的硬件技术。实际上,实际神经网络依赖于大量的突触,从而实现神经元之间的高连通性,即非常高的计算并行性。原则上,此类复杂性可通过数字超级计算机或专用图形处理单元集群来实现。然而,相比于生物网络,这些方法除了高成本之外,能量效率也很普通,生物网络主要由于其执行低精度的模拟计算而消耗更少的能量。cmos模拟电路已被用于人工神经网络,但由于需要大量神经元和突触,大多数cmos实现的突触都过于庞大。
7.申请人先前在美国专利申请15/594,439(公开为美国专利公布2017/0337466)中公开了一种利用一个或多个非易失性存储器阵列作为突触的人工(模拟)神经网络,该专利申请以引用方式并入本文。非易失性存储器阵列作为模拟神经存储器操作。神经网络设备包括被配置成接收第一多个输入并从其生成第一多个输出的第一多个突触,以及被配置成接收第一多个输出的第一多个神经元。第一多个突触包括多个存储器单元,其中存储器单元中的每个存储器单元包括:形成于半导体衬底中的间隔开的源极区和漏极区,其中沟道区在源极区和漏极区之间延伸;设置在沟道区的第一部分上方并且与第一部分绝缘的浮栅;以及设置在沟道区的第二部分上方并且与第二部分绝缘的非浮栅。多个存储器单元中的每个存储器单元被配置成存储与浮栅上的多个电子相对应的权重值。多个存储器单元被配置成将第一多个输入乘以所存储的权重值以生成第一多个输出。以这种方式使用的存储
器单元阵列可以被称为矢量矩阵乘法(vmm)阵列。
8.必须擦除和编程在模拟神经存储器系统中使用的每个非易失性存储器单元,以在浮栅中保持非常特定且精确的电荷量(即电子数量)。例如,每个浮栅必须保持n个不同值中的一个值,其中n是可由每个单元指示的不同权重的数量。n的示例包括16、32、64、128和256。
9.精度和准确度在涉及vmm阵列的操作中非常重要,因为每个单独的存储器单元可以存储n个不同电平中的一个电平,其中n可以大于2,而不是其中n始终为2的传统存储器单元。这使得测试成为非常重要的操作。例如,需要验证编程操作,以确保每个单独的单元或一列单元被准确地编程为期望的值。又如,识别坏的单元或单元组至关重要,使得可以在vmm阵列的操作期间将它们从用于存储数据的一组单元中移除。
10.需要经改进的用于vmm阵列的测试电路和方法。


技术实现要素:

11.本文公开了用于深度学习人工神经网络中的模拟神经存储器的测试电路和方法。该模拟神经存储器包括一个或多个非易失性闪存存储器单元阵列。可以在分选测试、循环测试、高温工作寿命(htol)测试、质量鉴定测试和其他测试期间利用该测试电路和方法,以验证一个或多个单元的特性和可操作性。
12.一个实施方案包括一种验证编程到模拟神经非易失性存储器单元阵列中的多个非易失性存储器单元中的值的方法,其中该阵列以行和列布置,其中每个行耦接到字线并且每个列耦接到位线,并且其中每条字线选择性地耦接到行解码器并且每条位线选择性地耦接到列解码器,该方法包括:由该行解码器断言该阵列中的所有字线;由该列解码器断言该阵列中的位线;由读出放大器感测从该位线接收的电流;以及将该电流与参考电流进行比较,以确定耦接到该位线的该非易失性存储器单元是否包含期望值。
13.另一个实施方案包括一种测量由模拟神经非易失性存储器单元阵列中的多个非易失性存储器单元消耗的电流的方法,其中该阵列以行和列布置,其中每个行耦接到字线并且每个列耦接到位线,并且其中每条字线选择性地耦接到行解码器并且每条位线选择性地耦接到列解码器,该方法包括:由该行解码器断言该阵列中的所有字线;由该列解码器断言该阵列中的位线;以及测量从该位线接收的电流。
14.另一种方法包括一种测试非易失性存储器单元阵列中的多个模拟神经非易失性存储器单元的方法,其中该阵列以行和列布置,其中每个行耦接到字线并且每个列耦接到位线,并且其中每条字线选择性地耦接到行解码器并且每条位线选择性地耦接到列解码器,该方法包括:由该行解码器断言该阵列中的所有字线;由该列解码器断言该阵列中的所有位线;对该阵列中的所有非易失性存储器单元执行深度编程操作;以及测量从该位线接收的总电流。
15.另一个实施方案包括一种测试模拟神经非易失性存储器单元阵列的方法,其中该阵列以行和列布置,其中每个行耦接到字线并且每个列耦接到位线,该方法包括:对耦接到位线的多个单元进行编程;k个不同时间地测量由该多个单元消耗的电流并存储该k个不同时间中的每个时间的测量值,其中k为整数;基于k个测量值计算平均值;以及如果该k个测量值中的任一测量值小于该平均值超过第一阈值或者大于该平均值超过第二阈值,则将该
位线识别为坏的位线。
16.另一个实施方案包括一种测试模拟神经非易失性存储器单元阵列的方法,其中该阵列以行和列布置,其中每个行耦接到字线并且每个列耦接到位线,该方法包括:对耦接到位线的多个单元进行编程;k个不同时间地测量耦接到多个单元的控制栅端子的控制栅线上的电压并存储该k个不同时间中的每个时间的测量值,其中k为整数;基于k个测量值计算平均值;以及如果该k个测量值中的任一测量值小于该平均值超过第一阈值或者大于该平均值超过第二阈值,则将该位线识别为坏的位线。
17.另一个实施方案包括一种测试用于存储n个不同值的模拟神经非易失性存储器单元的方法,其中n为整数,该方法包括:将该单元编程为表示该n个值中的一个值的目标值;验证存储在该单元中的值是否在围绕该目标值的可接受值窗口内;针对该n个值中的每个值重复编程步骤和读取步骤;以及如果验证步骤中的任一验证步骤指示存储在该单元中的值在围绕该目标值的可接受值窗口之外,则将该单元识别为坏的。
18.另一个实施方案包括一种补偿模拟神经非易失性存储器单元阵列中的泄漏的方法,其中该阵列以行和列布置,其中每个行耦接到字线并且每个列耦接到位线,该方法包括:测量耦接到位线的非易失性存储器单元的列的泄漏;存储所测量的泄漏值;以及在该非易失性存储器单元的该列的读取操作期间应用所测量的泄漏值以补偿该泄漏。
19.另一个实施方案包括一种测试模拟神经非易失性存储器单元阵列中的所选择的非易失性存储器单元的方法,该方法包括:当所选择的非易失性存储器单元在亚阈值区域中操作时,确定所选择的非易失性存储器单元的对数斜率因子;存储该对数斜率因子;当所选择的非易失性存储器单元在线性区域中操作时,确定所选择的非易失性存储器单元的线性斜率因子;存储该线性斜率因子;以及在将所选择单元编程为目标电流时,利用该对数斜率因子和该线性斜率因子中的一者或多者。
20.另一个实施方案包括一种测量由模拟神经非易失性存储器单元阵列中的非易失性存储器单元的列所消耗的电流的方法,其中该阵列以行和列布置,其中每个行耦接到字线并且每个列耦接到位线,并且其中每条字线选择性地耦接到行解码器并且每条位线选择性地耦接到列解码器,该方法包括:由该行解码器断言该阵列中的所有字线;由该列解码器断言该阵列中的位线以选择非易失性存储器单元的列;以及测量从该位线接收的电流。
21.另一个实施方案包括一种测试模拟神经非易失性存储器单元阵列的方法,该方法包括:通过在该阵列中的每个非易失性存储器单元的端子上施加一系列电压来擦除该阵列中的非易失性存储器单元,其中该一系列电压中的电压以固定步长随时间增加;以及读取所有非易失性存储器单元以确定擦除步骤的有效性。
22.另一个实施方案包括一种测试模拟神经非易失性存储器单元阵列的方法,该方法包括:通过在该阵列中的每个非易失性存储器单元的端子上施加一系列电压来对该阵列中的非易失性存储器单元进行编程,其中该一系列电压中的电压以固定步长随时间增加;以及读取所有非易失性存储器单元以确定编程步骤的有效性。
23.另一个实施方案包括一种测试非易失性存储器单元阵列中的多个模拟神经非易失性存储器单元的方法,其中该阵列以行和列布置,其中每个行耦接到字线并且每个列耦接到位线,并且其中每条字线选择性地耦接到行解码器并且每条位线选择性地耦接到列解码器,该方法包括:对多个非易失性存储器单元进行编程以存储n个不同值中的一个值,其
中n是可以存储在任何非易失性存储器单元中的不同电平的数量;测量由该多个非易失性存储器单元消耗的电流;将所测量的电流与目标值进行比较;以及如果所测量的值与该目标值之间的差值超过阈值,则将该多个非易失性存储器单元识别为坏的。
24.另一个实施方案包括一种测试非易失性存储器单元阵列中的多个模拟神经非易失性存储器单元的方法,其中该存储器阵列以行和列布置,其中每个行耦接到字线并且每个列耦接到位线,并且其中每条字线选择性地耦接到行解码器并且每条位线选择性地耦接到列解码器,该方法包括:利用n个电平之中对应于最小单元电流的电平对该多个非易失性存储器单元之中的第一选择的单元进行编程;利用n个电平之中对应于最大单元电流的电平对该多个非易失性存储器单元之中的第二选择的单元进行编程,其中该第二选择的单元中的每个单元与该第一选择的单元中的一个或多个单元相邻;测量由该多个非易失性存储器单元消耗的电流;将所测量的电流与目标值进行比较;以及如果所测量的值与该目标值之间的差值超过阈值,则将该多个非易失性存储器单元识别为坏的。
附图说明
25.图1为示出现有技术的人工神经网络的示意图。
26.图2示出现有技术分裂栅闪存存储器单元。
27.图3示出另一现有技术的分裂栅闪存存储器单元。
28.图4示出另一现有技术的分裂栅闪存存储器单元。
29.图5示出另一现有技术的分裂栅闪存存储器单元。
30.图6示出另一现有技术的分裂栅闪存存储器单元。
31.图7示出现有技术的堆叠栅闪存存储器单元。
32.图8为示出使用一个或多个非易失性存储器阵列的示例性人工神经网络的不同层级的示意图。
33.图9为示出矢量-矩阵乘法系统的框图。
34.图10为示出使用一个或多个矢量-矩阵乘法系统的示例性人工神经网络的框图。
35.图11示出矢量-矩阵乘法系统的另一实施方案。
36.图12示出矢量-矩阵乘法系统的另一实施方案。
37.图13示出矢量-矩阵乘法系统的另一实施方案。
38.图14示出矢量-矩阵乘法系统的另一实施方案。
39.图15示出矢量-矩阵乘法系统的另一实施方案。
40.图16示出矢量-矩阵乘法系统的另一实施方案。
41.图17示出矢量-矩阵乘法系统的另一实施方案。
42.图18示出矢量-矩阵乘法系统的另一实施方案。
43.图19示出矢量-矩阵乘法系统的另一实施方案。
44.图20示出矢量-矩阵乘法系统的另一实施方案。
45.图21示出矢量-矩阵乘法系统的另一实施方案。
46.图22示出矢量-矩阵乘法系统的另一实施方案。
47.图23示出矢量-矩阵乘法系统的另一实施方案。
48.图24示出矢量-矩阵乘法系统的另一实施方案。
49.图25示出包括测试控制逻辑的矢量-矩阵乘法系统的一个实施方案。
50.图26示出参考电流源。
51.图27示出在图26的参考电流源中使用的参考子电路。
52.图28示出读出放大器。
53.图29a示出验证模数转换器。
54.图29b示出验证模数转换器。
55.图30示出高压生成电路。
56.图31示出由矢量-矩阵乘法系统中的测试控制逻辑实现的示例性测试算法。
57.图32示出位线神经读取测试的一个实施方案。
58.图33示出位线神经测量测试的一个实施方案。
59.图34示出lsb筛选测试的一个实施方案。
60.图35示出位线采样筛选测试的一个实施方案。
61.图36示出位线采样筛选测试的另一实施方案。
62.图37示出读取窗口检查测试的一个实施方案。
63.图38示出读取校准测试的一个实施方案。
64.图39示出读取斜率测试的一个实施方案。
65.图40示出读取神经元质量鉴定测试的一个实施方案。
66.图41示出软擦除测试的一个实施方案。
67.图42示出软编程测试的一个实施方案。
68.图43示出验证测试的一个实施方案。
69.图44示出棋盘验证测试的一个实施方案。
具体实施方式
70.本发明的人工神经网络利用cmos技术和非易失性存储器阵列的组合。
71.非易失性存储器单元
72.数字非易失性存储器是众所周知的。例如,美国专利5,029,130(“130专利”),其以引用方式并入本文,公开了分裂栅非易失性存储器单元的阵列,它是一种闪存存储器单元。此类存储器单元210在图2中示出。每个存储器单元210包括形成于半导体衬底12中的源极区14和漏极区16,其间具有沟道区18。浮栅20形成在沟道区18的第一部分上方并且与其绝缘(并控制其电导率),并且形成在源极区14的一部分上方。字线端子22(其通常被耦接到字线)具有设置在沟道区18的第二部分上方并且与该沟道区的第二部分绝缘(并且控制其电导率)的第一部分,以及向上延伸并且位于浮栅20上方的第二部分。浮栅20和字线端子22通过栅极氧化物与衬底12绝缘。位线端子24耦接到漏极区16。
73.通过将高的正电压置于字线端子22上来对存储器单元210进行擦除(其中电子从浮栅去除),这导致浮栅20上的电子经由fowler-nordheim隧穿从浮栅20到字线端子22隧穿通过中间绝缘体。
74.通过将正的电压置于字线端子22上以及将正的电压置于源极区14上来编程存储器单元210(其中电子被置于浮栅上)。电子电流将从源极区14(源极线端子)流向漏极区16。当电子到达字线端子22和浮栅20之间的间隙时,电子将加速并且变热。由于来自浮栅20的
静电引力,一些加热的电子将通过栅极氧化物被注入到浮栅20上。
75.通过将正的读取电压置于漏极区16和字线端子22(其接通沟道区18的在字线端子下方的部分)上来读取存储器单元210。如果浮栅20带正电(即,电子被擦除),则沟道区18的在浮栅20下方的部分也被接通,并且电流将流过沟道区18,该沟道区被感测为擦除状态或“1”状态。如果浮栅20带负电(即,通过电子进行了编程),则沟道区的在浮栅20下方的部分被大部分或完全关断,并且电流将不会(或者有很少的电流)流过沟道区18,该沟道区被感测为编程状态或“0”状态。
76.表1示出可施加到存储器单元110的端子用于执行读取、擦除和编程操作的典型电压范围:
77.表1:图2的闪存存储器单元210的操作
[0078] wlblsl读取10.5-3v0.1-2v0v读取20.5-3v0-2v2-0.1v擦除约11-13v0v0v编程1v-2v1-3μa9-10v
[0079]“读取1”是其中单元电流在位线上输出的读取模式。“读取2”是其中单元电流在源极线端子上输出的读取模式。
[0080]
图3示出了存储器单元310,其与图2的存储器单元210类似,但增加了控制栅(cg)端子28。控制栅端子28在编程中被偏置在高电压处(例如,10v),在擦除中被偏置在低电压或负电压处(例如,0v/-8v),在读取中被偏置在低电压或中等电压处(例如,0v/2.5v)。其他端子类似于图2那样偏置。
[0081]
图4示出了四栅极存储器单元410,其包括源极区14、漏极区16、在沟道区18的第一部分上方的浮栅20、在沟道区18的第二部分上方的选择栅22(通常耦接到字线wl)、在浮栅20上方的控制栅28、以及在源极区14上方的擦除栅30。这种配置在美国专利6,747,310中有所描述,该专利以引用方式并入本文以用于所有目的。这里,除了浮栅20之外,所有的栅极均为非浮栅,这意味着它们电连接到或能够电连接到电压源。编程由来自沟道区18的将自身注入到浮栅20的加热的电子执行。擦除通过从浮栅20隧穿到擦除栅30的电子来执行。
[0082]
表2示出可施加到存储器单元410的端子用于执行读取、擦除和编程操作的典型电压范围:
[0083]
表2:图4的闪存存储器单元410的操作
[0084] wl/sgblcgegsl读取10.5-2v0.1-2v0-2.6v0-2.6v0v读取20.5-2v0-2v0-2.6v0-2.6v2-0.1v擦除-0.5v/0v0v0v/-8v8-12v0v编程1v1μa8-11v4.5-9v4.5-5v
[0085]“读取1”是其中单元电流在位线上输出的读取模式。“读取2”是其中单元电流在源极线端子上输出的读取模式。
[0086]
图5示出了存储器单元510,除了不含擦除栅eg端子,存储器单元510与图4的存储器单元410类似。通过将衬底18偏置到高电压并将控制栅cg端子28偏置到低电压或负电压
来执行擦除。另选地,通过将字线端子22偏置到正电压并将控制栅端子28偏置到负电压来执行擦除。编程和读取类似于图4的那样。
[0087]
图6示出三栅极存储器单元610,其为另一种类型的闪存存储器单元。存储器单元610与图4的存储器单元410相同,除了存储器单元610没有单独的控制栅端子。除了没有施加控制栅偏置,擦除操作(通过使用擦除栅端子进行擦除)和读取操作类似于图4的操作。在没有控制栅偏置的情况下,编程操作也被完成,并且结果,在编程操作期间必须在源极线端子上施加更高的电压,以补偿控制栅偏置的缺乏。
[0088]
表3示出可施加到存储器单元610的端子用于执行读取、擦除和编程操作的典型电压范围:
[0089]
表3:图6的闪存存储器单元610的操作
[0090] wl/sgblegsl读取10.5-2.2v0.1-2v0-2.6v0v读取20.5-2.2v0-2v0-2.6v2-0.1v擦除-0.5v/0v0v11.5v0v编程1v2-3μa4.5v7-9v
[0091]“读取1”是其中单元电流在位线上输出的读取模式。“读取2”是其中单元电流在源极线端子上输出的读取模式。
[0092]
图7示出堆叠栅存储器单元710,其为另一种类型的闪存存储器单元。存储器单元710与图2的存储器单元210类似,不同的是浮栅20在整个沟道区18上方延伸,并且控制栅端子22(其在这里将耦接到字线)在浮栅20上方延伸,由绝缘层(未示出)分开。擦除、编程和读取操作以与先前针对存储器单元210所述类似的方式操作。
[0093]
表4示出可以施加到存储器单元710和衬底12的端子用于执行读取、擦除和编程操作的典型电压范围:
[0094]
表4:图7的闪存存储器单元710的操作
[0095] cgblsl衬底读取10-5v0.1-2v0-2v0v读取20.5-2v0-2v2-0.1v0v擦除-8至-10v/0vfltflt8-10v/15-20v编程8-12v3-5v/0v0v/3-5v0v
[0096]“读取1”是其中单元电流在位线上输出的读取模式。“读取2”是其中单元电流在源极线端子上输出的读取模式。任选地,在包括存储器单元210、310、410、510、610或710的行和列的阵列中,源极线可耦接到一行存储器单元或相邻的两行存储器单元。即,源极线端子可由相邻行的存储器单元共享。
[0097]
为了在人工神经网络中利用包括上述类型的非易失性存储器单元之一的存储器阵列,进行了两个修改。第一,对线路进行配置,使得每个存储器单元可被单独编程、擦除和读取,而不会不利地影响阵列中的其他存储器单元的存储器状态,如下文进一步解释。第二,提供存储器单元的连续(模拟)编程。
[0098]
具体地,阵列中的每个存储器单元的存储器状态(即,浮栅上的电荷)可在独立地并且对其他存储器单元的干扰最小的情况下连续地从完全擦除状态变为完全编程状态。在
另一个实施方案,阵列中的每个存储器单元的存储器状态(即,浮栅上的电荷)可在独立地并且对其他存储器单元的干扰最小的情况下连续地从完全编程状态变为完全擦除状态,反之亦然。这意味着单元存储装置是模拟的,或者至少可存储许多离散值(诸如16或64个不同的值)中的一个离散值,这允许对存储器阵列中的所有单元进行非常精确且单独的调谐,并且这使得存储器阵列对于存储和对神经网络的突触权重进行微调调整是理想的。
[0099]
本文所述的方法和装置可应用于其他非易失性存储器技术,诸如但不限于sonos(硅-氧化物-氮化物-氧化物-硅,电荷捕获在氮化物中)、monos(金属-氧化物-氮化物-氧化物-硅,金属电荷捕获在氮化物中)、reram(电阻式ram)、pcm(相变存储器)、mram(磁性ram)、feram(铁电ram)、otp(双层或多层式一次可编程)和ceram(关联电子ram)等。本文所述的方法和装置可应用于用于神经网络的易失性存储器技术,诸如但不限于sram、dram和/或易失性突触单元。
[0100]
采用非易失性存储器单元阵列的神经网络
[0101]
图8概念性地示出本实施方案的使用非易失性存储器阵列的神经网络的非限制性示例。该示例将非易失性存储器阵列神经网络用于面部识别应用,但任何其他适当的应用也可使用基于非易失性存储器阵列的神经网络来实现。
[0102]
对于该示例,s0为输入层,其为具有5位精度的32x32像素rgb图像(即,三个32x32像素阵列,分别用于每个颜色r、g和b,每个像素为5位精度)。从输入层s0到层c1的突触cb1在一些情况下应用不同的权重集,在其他情况下应用共享权重,并且用3x3像素重叠滤波器(内核)扫描输入图像,将滤波器移位1个像素(或根据模型所指示的多于1个像素)。具体地,将图像的3x3部分中的9个像素的值(即,称为滤波器或内核)提供给突触cb1,其中将这9个输入值乘以适当的权重,并且在对该乘法的输出求和之后,由cb1的第一突触确定并提供单个输出值以用于生成特征映射的其中一层c1的像素。然后将3x3滤波器在输入层s0内向右移位一个像素(即,添加右侧的三个像素的列,并释放左侧的三个像素的列),由此将该新定位的滤波器中的9个像素值提供给突触cb1,其中将它们乘以相同的权重并且由相关联的突触确定第二单个输出值。继续该过程,直到3x3滤波器在输入层s0的整个32x32像素图像上扫描所有三种颜色和所有位(精度值)。然后使用不同组的权重重复该过程以生成c1的不同特征映射,直到计算出层c1的所有特征映射。
[0103]
在层c1处,在本示例中,存在16个特征映射,每个特征映射具有30x30像素。每个像素是从输入和内核的乘积中提取的新特征像素,因此每个特征映射是二维阵列,因此在该示例中,层c1由16层的二维阵列构成(记住本文所引用的层和阵列是逻辑关系,而不必是物理关系,即阵列不必定向于物理二维阵列)。在层c1中的16个特征映射中的每个特征映射均由应用于滤波器扫描的十六个不同组的突触权重中的一组生成。c1特征映射可全部涉及相同图像特征的不同方面,诸如边界识别。例如,第一映射(使用第一权重组生成,针对用于生成该第一映射的所有扫描而共享)可识别圆形边缘,第二映射(使用与第一权重组不同的第二权重组生成)可识别矩形边缘,或某些特征的纵横比,以此类推。
[0104]
在从层c1转到层s1之前,应用激活函数p1(池化),该激活函数将来自每个特征映射中连续的非重叠2x2区域的值进行池化。池化函数的目的是对邻近位置求均值(或者也可使用max函数),以例如减少边缘位置的依赖性,并在进入下一阶段之前减小数据大小。在层s1处,存在16个15x15特征映射(即,十六个每个特征映射15x15像素的不同阵列)。从层s1到
层c2的突触cb2利用4x4滤波器扫描s1中的映射,其中滤波器移位1个像素。在层c2处,存在22个12x12特征映射。在从层c2转到层s2之前,应用激活函数p2(池化),该激活函数将来自每个特征映射中连续的非重叠2x2区域的值进行池化。在层s2处,存在22个6x6特征映射。将激活函数(池化)应用于从层s2到层c3的突触cb3,其中层c3中的每个神经元经由cb3的相应突触连接至层s2中的每个映射。在层c3处,存在64个神经元。从层c3到输出层s3的突触cb4完全将c3连接至s3,即层c3中的每个神经元都连接到层s3中的每个神经元。s3处的输出包括10个神经元,其中最高输出神经元确定类。例如,该输出可指示对原始图像的内容的识别或分类。
[0105]
使用非易失性存储器单元的阵列或阵列的一部分来实现每层的突触。
[0106]
图9为可用于该目的的系统的框图。矢量-矩阵乘法(vmm)系统32包括非易失性存储器单元,并且用作一层与下一层之间的突触(诸如图6中的cb1、cb2、cb3和cb4)。具体地,vmm系统32包括vmm阵列33(包括以行和列布置的非易失性存储器单元)、擦除栅和字线栅解码器34、控制栅解码器35、位线解码器36和源极线解码器37,这些解码器对非易失性存储器单元阵列33的相应输入进行解码。对vmm阵列33的输入可来自擦除栅和字线栅解码器34或来自控制栅解码器35。在该示例中,源极线解码器37还对vmm阵列33的输出进行解码。另选地,位线解码器36可对vmm阵列33的输出进行解码。
[0107]
vmm阵列33用于两个目的。首先,它存储将由vmm系统32使用的权重。其次,vmm阵列33有效地将输入与存储在vmm阵列33中的权重相乘并且每个输出线(源极线或位线)将它们相加以产生输出,该输出将作为下一层的输入或最终层的输入。通过执行乘法和加法函数,vmm阵列33消除了对单独的乘法和加法逻辑电路的需要,并且由于其原位存储器计算也是高功效的。
[0108]
将vmm阵列33的输出提供至差分求和器(诸如求和运算放大器或求和电流镜)38,该差分求和器对vmm阵列33的输出进行求和,以为该卷积创建单个值。差分求和器38被布置用于执行正权重输入和负权重输入两者的求和,以输出单个值。
[0109]
然后将差分求和器38的输出值求和后提供至激活函数电路39,该激活函数电路对输出进行修正。激活函数电路39可提供sigmoid、tanh、relu函数或任何其他非线性函数。激活函数电路39的经修正的输出值成为作为下一层(例如,图8中的层c1)的特征映射的元素,然后被应用于下一个突触以产生下一个特征映射层或最终层。因此,在该示例中,vmm阵列33构成多个突触(其从现有神经元层或从输入层诸如图像数据库接收它们的输入),并且求和器38和激活函数电路39构成多个神经元。
[0110]
图9中对vmm系统32的输入(wlx、egx、cgx以及任选的blx和slx)可为模拟电平、二进制电平、数字脉冲(在这种情况下,可能需要脉冲-模拟转换器pac来将脉冲转换至合适的输入模拟电平)或数字位(在这种情况下,提供dac以将数字位转换至合适的输入模拟电平);输出可为模拟电平、二进制电平、数字脉冲或数字位(在这种情况下,提供输出adc以将输出模拟电平转换成数字位)。
[0111]
图10为示出多层vmm系统32(此处标记为vmm系统32a、32b、32c、32d和32e)的使用的框图。如图10所示,通过数模转换器31将输入(表示为inputx)从数字转换为模拟,并将其提供至输入vmm系统32a。转换的模拟输入可以是电压或电流。第一层的输入d/a转换可通过使用将输入inputx映射到输入vmm系统32a的矩阵乘法器的适当模拟电平的函数或lut(查
找表)来完成。输入转换也可由模拟至模拟(a/a)转换器完成,以将外部模拟输入转换成到输入vmm系统32a的映射模拟输入。输入转换也可由数字至数字脉冲(d/p)转换器完成,以将外部数字输入转换成到输入vmm系统32a的映射的一个或多个数字脉冲。
[0112]
由输入vmm系统32a产生的输出被作为到下一个vmm系统(隐藏级别1)32b的输入提供,该输入继而生成作为下一vmm系统(隐藏级别2)32c的输入而提供的输出,以此类推。vmm系统32的各层用作卷积神经网络(cnn)的突触和神经元的不同层。每个vmm系统32a、32b、32c、32d和32e可以是包括相应的非易失性存储器阵列的独立物理系统、或者多个vmm系统可利用相同物理非易失性存储器阵列的不同部分、或者多个vmm系统可利用相同物理非易失性存储器阵列的重叠部分。每个vmm系统32a、32b、32c、32d和32e也可针对其阵列或神经元的不同部分进行时分复用。图10所示的示例包含五个层(32a,32b,32c,32d,32e):一个输入层(32a)、两个隐藏层(32b,32c)和两个完全连接的层(32d,32e)。本领域的普通技术人员将会知道,这仅仅是示例性的,并且相反,系统可包括两个以上的隐藏层和两个以上的完全连接的层。
[0113]
vmm阵列
[0114]
图11示出神经元vmm阵列1100,该神经元vmm阵列特别适用于图3所示的存储器单元310,并且用作输入层与下一层之间的神经元的突触和部件。vmm阵列1100包括非易失性存储器单元的存储器阵列1101和非易失性参考存储器单元的参考阵列1102(在阵列的顶部)。另选地,可将另一个参考阵列置于底部。
[0115]
在vmm阵列1100中,控制栅线(诸如控制栅线1103)在竖直方向上延伸(因此参考阵列1102在行方向上与控制栅线1103正交),并且擦除栅线(诸如擦除栅线1104)在水平方向上延伸。此处,vmm阵列1100的输入设置在控制栅线(cg0,cg1,cg2,cg3)上,并且vmm阵列1100的输出出现在源极线(sl0,sl1)上。在一个实施方案中,仅使用偶数行,并且在另一个实施方案中,仅使用奇数行。置于各源极线(分别为sl0、sl1)上的电流执行来自连接到该特定源极线的存储器单元的所有电流的求和函数。
[0116]
如本文针对神经网络所述,vmm阵列1100的非易失性存储器单元(即vmm阵列1100的闪存存储器)优选地被配置成在亚阈值区域中操作。
[0117]
在弱反转中偏置本文所述的非易失性参考存储器单元和非易失性存储器单元:
[0118]
ids=io*e
(vg-vth)/nvt
=w*io*e
(vg)/nvt

[0119]
其中w=e
(-vth)/nvt
[0120]
其中ids为漏极到源极电流;vg为存储器单元上的栅极电压;vth是存储器单元的阈值电压;vt是热电压=k*t/q,其中k是玻尔兹曼常数,t是以开尔文为单位的温度,并且q是电子电荷;n是斜率因子=1+(cdep/cox),其中cdep=耗尽层的电容,并且cox是栅极氧化物层的电容;io是等于阈值电压的栅极电压下的存储器单元电流,io与(wt/l)*u*cox*(n-1)*vt2成比例,其中u是载流子迁移率,并且wt和l分别是存储器单元的宽度和长度。
[0121]
对于使用存储器单元(诸如参考存储器单元或外围存储器单元)或晶体管将输入电流ids转换为输入电压vg的i到v对数转换器:
[0122]
vg=n*vt*log[ids/wp*io]
[0123]
此处,wp为参考存储器单元或外围存储器单元的w。
[0124]
对于使用存储器单元(诸如参考存储器单元或外围存储器单元)或晶体管将输入
电流ids转换为输入电压vg的i到v对数转换器:
[0125]
vg=n*vt*log[ids/wp*io]
[0126]
此处,wp为参考存储器单元或外围存储器单元的w。
[0127]
对于用作矢量矩阵乘法器vmm阵列的存储器阵列,输出电流为:
[0128]
iout=wa*io*e
(vg)/nvt
,即
[0129]
iout=(wa/wp)*iin=w*iin
[0130]
w=e
(vthp-vtha)/nvt
[0131]
iin=wp*io*e
(vg)/nvt
[0132]
此处,wa=存储器阵列中的每个存储器单元的w。
[0133]
字线或控制栅可用作输入电压的存储器单元的输入。
[0134]
另选地,本文所述的vmm阵列的非易失性存储器单元可被配置成在线性区域中操作:
[0135]
ids=β*(vgs-vth)*vds;β=u*cox*wt/l,
[0136]
wα(vgs-vth),
[0137]
意指线性区域中的权重w与(vgs-vth)成比例
[0138]
字线或控制栅或位线或源极线可以用作在线性区域中操作的存储器单元的输入。位线或源极线可用作存储器单元的输出。
[0139]
对于i到v线性转换器,在线性区域工作的存储器单元(例如参考存储器单元或外围存储器单元)或晶体管或电阻器可以用来将输入/输出电流线性转换成输入/输出电压。
[0140]
另选地,本文所述的vmm阵列的存储器单元可被配置成在饱和区域中操作:
[0141]
ids=1/2*β*(vgs-vth)2;β=u*cox*wt/l
[0142]
wα(vgs-vth)2,意指权重w与(vgs-vth)2成比例
[0143]
字线、控制栅或擦除栅可以用作在饱和区域中操作的存储器单元的输入。位线或源极线可用作输出神经元的输出。
[0144]
另选地,本文所述的vmm阵列的存储器单元可用于所有区域或其组合(亚阈值、线性或饱和区域)。
[0145]
美国专利申请15/826,345描述了图9的vmm阵列33的其他实施方案,该申请以引用方式并入本文。如本文所述,源极线或位线可以用作神经元输出(电流求和输出)。
[0146]
图12示出神经元vmm阵列1200,该神经元vmm阵列特别适用于图2所示的存储器单元210,并且用作输入层与下一层之间的突触。vmm阵列1200包括非易失性存储器单元的存储器阵列1203、第一非易失性参考存储器单元的参考阵列1201和第二非易失性参考存储器单元的参考阵列1202。沿阵列的列方向布置的参考阵列1201和1202用于将流入端子blr0、blr1、blr2和blr3的电流输入转换为电压输入wl0、wl1、wl2和wl3。实际上,第一非易失性参考存储器单元和第二非易失性参考存储器单元通过多路复用器1214(仅部分示出)二极管式连接,其中电流输入流入其中。参考单元被调谐(例如,编程)为目标参考电平。目标参考电平由参考微阵列矩阵(未示出)提供。
[0147]
存储器阵列1203用于两个目的。首先,它将vmm阵列1200将使用的权重存储在其相应的存储器单元上。第二,存储器阵列1203有效地将输入(即,在端子blr0、blr1、blr2和blr3中提供的电流输入,参考阵列1201和1202将它们转换成输入电压以提供给字线wl0、
wl1、wl2和wl3)乘以存储在存储器阵列1203中的权重,然后将所有结果(存储器单元电流)相加以在相应的位线(bl0-bln)上产生输出,该输出将是下一层的输入或最终层的输入。通过执行乘法和加法函数,存储器阵列1203消除了对单独的乘法和加法逻辑电路的需要,并且也是高功效的。这里,电压输入在字线(wl0、wl1、wl2和wl3)上提供,并且输出在读取(推断)操作期间出现在相应位线(bl0-bln)上。置于位线bl0-bln中的每个位线上的电流执行来自连接到该特定位线的所有非易失性存储器单元的电流的求和函数。
[0148]
表5示出用于vmm阵列1200的工作电压。表中的列指示置于用于所选单元的字线、用于未选单元的字线、用于所选单元的位线、用于未选单元的位线、用于所选单元的源极线和用于未选单元的源极线上的电压,其中flt指示浮动,即未施加电压。行指示读取、擦除和编程操作。
[0149]
表5:图12的vmm阵列1200的操作
[0150] wlwl-未选blbl-未选slsl-未选读取0.5-3.5v-0.5v/0v0.1-2v(ineuron)0.6v-2v/flt0v0v擦除约5-13v0v0v0v0v0v编程1v-2v-0.5v/0v0.1-3uavinh约2.5v4-10v0-1v/flt
[0151]
图13示出神经元vmm阵列1300,该神经元vmm阵列特别适用于图2所示的存储器单元210,并且用作输入层与下一层之间的神经元的突触和部件。vmm阵列1300包括非易失性存储器单元的存储器阵列1303、第一非易失性参考存储器单元的参考阵列1301和第二非易失性参考存储器单元的参考阵列1302。参考阵列1301和1302在vmm阵列1300的行方向上延伸。vmm阵列与vmm 1000类似,不同的是在vmm阵列1300中,字线在竖直方向上延伸。这里,输入设置在字线(wla0、wlb0、wla1、wlb2、wla2、wlb2、wla3、wlb3)上,并且输出在读取操作期间出现在源极线(sl0、sl1)上。置于各源极线上的电流执行来自连接到该特定源极线的存储器单元的所有电流的求和函数。
[0152]
表6示出用于vmm阵列1300的工作电压。表中的列指示置于用于所选单元的字线、用于未选单元的字线、用于所选单元的位线、用于未选单元的位线、用于所选单元的源极线和用于未选单元的源极线上的电压。行指示读取、擦除和编程操作。
[0153]
表6:图13的vmm阵列1300的操作
[0154] wlwl-未选blbl-未选slsl-未选读取0.5-3.5v-0.5v/0v0.1-2v0.1v-2v/flt约0.3-1v(ineuron)0v擦除约5-13v0v0v0v0vsl-禁止(约4-8v)编程1v-2v-0.5v/0v0.1-3uavinh约2.5v4-10v0-1v/flt
[0155]
图14示出神经元vmm阵列1400,该神经元vmm阵列特别适用于图3所示的存储器单元310,并且用作输入层与下一层之间的神经元的突触和部件。vmm阵列1400包括非易失性存储器单元的存储器阵列1403、第一非易失性参考存储器单元的参考阵列1401和第二非易失性参考存储器单元的参考阵列1402。参考阵列1401和1402用于将流入端子blr0、blr1、blr2和blr3的电流输入转换为电压输入cg0、cg1、cg2和cg3。实际上,第一非易失性参考存储器单元和第二非易失性参考存储器单元通过多路复用器1412(仅部分示出)二极管式连接,其中电流输入通过blr0、blr1、blr2和blr3流入其中。多路复用器1412各自包括相应的多路复用器1405和共源共栅晶体管1404,以确保在读取操作期间第一非易失性参考存储器
单元和第二非易失性参考存储器单元中的每一者的位线(诸如blr0)上的恒定电压。将参考单元调谐至目标参考电平。
[0156]
存储器阵列1403用于两个目的。首先,它存储将由vmm阵列1400使用的权重。第二,存储器阵列1403有效地将输入(提供到端子blr0、blr1、blr2和blr3的电流输入,参考阵列1401和1402将这些电流输入转换成输入电压以提供给控制栅cg0、cg1、cg2和cg3)乘以存储在存储器阵列中的权重,然后将所有结果(单元电流)相加以产生输出,该输出出现在bl0-bln并且将是下一层的输入或最终层的输入。通过执行乘法和加法函数,存储器阵列消除了对单独的乘法和加法逻辑电路的需要,并且也是高功效的。这里,输入提供在控制栅线(cg0、cg1、cg2和cg3)上,输出在读取操作期间出现在位线(bl0-bln)上。置于各位线上的电流执行来自连接到该特定位线的存储器单元的所有电流的求和函数。
[0157]
vmm阵列1400为存储器阵列1403中的非易失性存储器单元实现单向调谐。也就是说,每个非易失性存储器单元被擦除,然后被部分编程,直到达到浮栅上的所需电荷。这可例如使用下文所述的精确编程技术来执行。如果在浮栅上放置过多电荷(使得错误的值存储在单元中),则必须擦除单元,并且部分编程操作的序列必须重新开始。如图所示,共享同一擦除栅(诸如eg0或eg1)的两行需要一起擦除(其被称为页面擦除),并且此后,每个单元被部分编程,直到达到浮栅上的所需电荷。
[0158]
表7示出用于vmm阵列1400的工作电压。表中的列指示置于用于所选单元的字线、用于未选单元的字线、用于所选单元的位线、用于未选单元的位线、用于所选单元的控制栅、用于与所选单元相同扇区中的未选单元的控制栅、用于与所选单元不同扇区中的未选单元的控制栅、用于所选单元的擦除栅、用于未选单元的擦除栅、用于所选单元的源极线、用于未选单元的源极线上的电压。行指示读取、擦除和编程操作。
[0159]
表7:图14的vmm阵列1400的操作
[0160][0161]
图15示出神经元vmm阵列1500,该神经元vmm阵列特别适用于图3所示的存储器单元310,并且用作输入层与下一层之间的神经元的突触和部件。vmm阵列1500包括非易失性存储器单元的存储器阵列1503、第一非易失性参考存储器单元的参考阵列1501和第二非易失性参考存储器单元的参考阵列1502。eg线egr0、eg0、eg1和egr1竖直延伸,而cg线cg0、cg1、cg2和cg3以及sl线wl0、wl1、wl2和wl3水平延伸。vmm阵列1500与vmm阵列1400类似,不同的是vmm阵列1500实现双向调谐,其中每个单独的单元可以根据需要被完全擦除、部分编程和部分擦除,以由于使用单独的eg线而在浮栅上达到期望的电荷量。如图所示,参考阵列1501和1502将端子blr0、blr1、blr2和blr3中的输入电流转换成要在行方向上施加到存储器单元的控制栅电压cg0、cg1、cg2和cg3(通过经由多路复用器1514的二极管连接的参考单元的动作)。电流输出(神经元)在位线bl0-bln中,其中每个位线对来自连接到该特定位线的非易失性存储器单元的所有电流求和。
[0162]
表8示出用于vmm阵列1500的工作电压。表中的列指示置于用于所选单元的字线、用于未选单元的字线、用于所选单元的位线、用于未选单元的位线、用于所选单元的控制栅、用于与所选单元相同扇区中的未选单元的控制栅、用于与所选单元不同扇区中的未选单元的控制栅、用于所选单元的擦除栅、用于未选单元的擦除栅、用于所选单元的源极线、用于未选单元的源极线上的电压。行指示读取、擦除和编程操作。
[0163]
表8:图15的vmm阵列1500的操作
[0164][0165]
图16示出神经元vmm阵列1600,该神经元vmm阵列特别适用于图2所示的存储器单元210,并且用作输入层与下一层之间的神经元的突触和部件。在vmm阵列1600中,输入input0,

,inputn分别在位线bl0,

bln上被接收,并且输出output1、output2、output3和output4分别在源极线sl0、sl1、sl2和sl3上生成。
[0166]
图17示出神经元vmm阵列1700,该神经元vmm阵列特别适用于图2所示的存储器单元210,并且用作输入层与下一层之间的神经元的突触和部件。在该示例中,输入input0、input1、input2和input3分别在源极线sl0、sl1、sl2和sl3上被接收,并且输出output0,

outputn在位线bl0,

,bln上生成。
[0167]
图18示出神经元vmm阵列1800,该神经元vmm阵列特别适用于图2所示的存储器单元210,并且用作输入层与下一层之间的神经元的突触和部件。在该示例中,输入input0,

,inputm分别在字线wl0,

,wlm上被接收,并且输出output0,

outputn在位线bl0,

,bln上生成。
[0168]
图19示出神经元vmm阵列1900,该神经元vmm阵列特别适用于图3所示的存储器单元310,并且用作输入层与下一层之间的神经元的突触和部件。在该示例中,输入input0,

,inputm分别在字线wl0,

,wlm上被接收,并且输出output0,

outputn在位线bl0,

,bln上生成。
[0169]
图20示出神经元vmm阵列2000,该神经元vmm阵列特别适用于图4所示的存储器单元410,并且用作输入层与下一层之间的神经元的突触和部件。在该示例中,输入input0,

,inputn分别在竖直控制栅线cg0,

,cgn上被接收,并且输出output1和output2在源极线sl0和sl1上生成。
[0170]
图21示出神经元vmm阵列2100,该神经元vmm阵列特别适用于图4所示的存储器单元410,并且用作输入层与下一层之间的神经元的突触和部件。在该示例中,输入input0至inputn分别在位线控制栅极2901-1、2901-2至2901-(n-1)和2901-n的栅极上被接收,这些栅极分别耦接到位线bl0至bln。示例性输出output1和output2在源极线sl0和sl1上生成。
[0171]
图22示出神经元vmm阵列2200,该神经元vmm阵列特别适用于图3所示的存储器单元310、图5所示的存储器单元510和图7所示的存储器单元710,并且用作输入层与下一层之间的神经元的突触和部件。在该示例中,输入input0,

,inputm在字线wl0,

,wlm上被接
收,并且输出output0,

,outputn分别在位线bl0,

,bln上生成。
[0172]
图23示出神经元vmm阵列2300,该神经元vmm阵列特别适用于图3所示的存储器单元310、图5所示的存储器单元510和图7所示的存储器单元710,并且用作输入层与下一层之间的神经元的突触和部件。在该示例中,输入input0至inputm在控制栅线cg0至cgm上被接收。输出output0,

,outputn分别在竖直源极线sl0,

,sln上生成,其中每个源极线sli耦接到列i中的所有存储器单元的源极线。
[0173]
图24示出神经元vmm阵列2400,该神经元vmm阵列特别适用于图3所示的存储器单元310、图5所示的存储器单元510和图7所示的存储器单元710,并且用作输入层与下一层之间的神经元的突触和部件。在该示例中,输入input0至inputm在控制栅线cg0至cgm上被接收。输出output0,

,outputn分别在竖直位线bl0,

,bln上生成,其中每个位线bli耦接到列i中的所有存储器单元的位线。
[0174]
测试电路和方法
[0175]
图25示出vmm系统2500。vmm系统2500包括vmm阵列2501(其可基于先前所讨论的vmm阵列设计中的任一种,诸如vmm阵列1100、1200、1300、1400、1500、1600、1700、1800、1900、2000、2100、2200、2300和2400或其他vmm阵列设计)、低压行解码器2502、高压行解码器2503、列解码器2504、列驱动器2505、控制逻辑2506、偏置电路2507、输出电路块2508、输入vmm电路块2509、算法控制器2510、高压发生器块2511、模拟电路块2515、控制逻辑2516和测试控制逻辑2517。
[0176]
输入电路块2509用作从外部输入到存储器阵列2501的输入端子的接口。输入电路块2509可包括但不限于dac(数模转换器)、dpc(数字-脉冲转换器)、apc(模拟-脉冲转换器)、ivc(电流-电压转换器)、aac(模拟-模拟转换器,诸如电压-电压缩放器)或fac(频率-模拟转换器)。输出电路块2508用作从存储器阵列输出到外部接口(未示出)的接口。输出电路块2508可包括但不限于adc(模数转换器)、apc(模拟-脉冲转换器)、dpc(数字-脉冲转换器)、ivc(电流-电压转换器)或ifc(电流-频率转换器)。输出电路块2508可包括但不限于激活功能、归一化电路和/或重新缩放电路。
[0177]
低电压行解码器2502为读取操作和编程操作提供偏置电压,并且为高电压行解码器2503提供解码信号。高电压行解码器2503为编程操作和擦除操作提供高电压偏置信号。
[0178]
算法控制器2510为处于编程、验证和擦除操作期间的位线提供控制功能。
[0179]
高压发生器块2511包括电荷泵2512、电荷泵调节器2513和高压生成电路2514,该高压生成电路提供各种编程、擦除、编程验证和读取操作所需的多个电压。
[0180]
测试控制逻辑2517包含用于执行下文参考图26至图31所描述的测试的各种测试控制电路。
[0181]
图26示出在一个或多个非易失性存储器单元的编程操作之后的验证操作期间使用或在其他类型的测试期间使用的参考电流源2600。例如,参考电流源2600可用于单个非易失性存储器单元的验证操作,或者用于非易失性存储器单元的列(例如,连接到特定位线的所有单元)或非易失性存储器单元的一些其他分组的验证操作。
[0182]
参考电流源2600包括缓冲镜2601(该缓冲镜包括具有输出i
ref 2607的缓冲运算放大器2602和pmos晶体管2603)、可调偏置源2604和二维阵列2605,该二维阵列包括设备2606的i行和j列的阵列,其中特定设备2606由标签2606-(行)(列)标注。此处,可激活设备2606
的各种组合,使得可调整由缓冲镜2601输出的参考电流i
ref 2607的量。如图所示,阵列2605中存在16个设备2606,其中每个设备可以由电流镜实现。参考电流源2600基本上将4个数字输入转换成参考电流偏置,该参考电流偏置的值为ibiasunit的1至16倍,其中ibiasunit是从偏置源2604提供的。参考电流源2600基本上是温度计编码的数字-电流转换器,其缓冲输出i
ref 2607的值对应于16个电平中的1个,特定电平响应于4个数字输入,其可以由先前讨论的vmm阵列中的任一者中的存储器单元存储。
[0183]
例如,偏置源2604可提供1na的电流ibiasunit,该电流被镜像到设备2606中。此处,第一行由设备2606-11至2606-1j组成,并且从左到右顺序地启用,一次启用一个设备2606。然后从左到右以顺序方式启用下一行以添加到第一行,这意味着启用5个,然后6个,然后7个,然后8个设备2606。通过顺序地启用设备2606,可避免与常规二进制解码相关联的晶体管失配问题。然后启用设备2606的总和由缓冲镜2601镜像,并且输出为电流i
ref 2607。偏置源2604可提供可微调的电流ibiasunit范围,诸如50pa/100pa/200pa/

/100na。此处,阵列2605示出为4
×
4阵列,但应理解,阵列2605可以具有其他尺寸,如32
×
32或8
×
32。
[0184]
图27示出参考子电路2700,该参考子电路可用于图26中的设备2606中的任一设备。参考子电路2700包括如图所示配置的nmos晶体管2701和2702。晶体管2702是电流镜偏置晶体管,该电流镜偏置晶体管在其栅极上接收电流ibiasunit(上文参考图26讨论),并且晶体管2701是启用晶体管(以使电流镜偏置晶体管2702能够连接到输出节点output)。诸如从二极管连接的nmos晶体管(类似于晶体管2702)(未示出)提供电流ibiasunit。
[0185]
图28示出在非易失性存储单元、非易失性存储器单元的列或非易失性存储器单元的一些其他分组的编程操作之后的验证操作期间,或在另一种类型的测试期间与参考电流源2600一起使用的读出放大器2800。读出放大器2800接收上文参考图26讨论的电流i
ref 2607。i
ref 2607可以被建模为pmos晶体管2813,其中栅极由vi
ref 2814控制。读出放大器2800进一步包括反相器2801、电流源2802(该电流源用于限制反相器2801中的电流)、开关2803和2806、电容器2804,以及级联nmos晶体管2805(以在存储器位线上施加固定电压)。读出放大器2800接收来自参考电流源2600的电流i
ref 2607,该电流可以是例如存储在vmm阵列的非易失性存储器单元中的十六个可能电平中的一个。读出放大器2800耦接到单元2808,该单元是其内容需验证的非易失性存储器单元。当nmos晶体管2805导通时,单元2808消耗电流i
cell
。另选地,可将单元2808替换为列2809(其为了便于附图,该列将消耗仍将被称为i
cell
的电流,其应是由列2809消耗的神经元电流)。
[0186]
在一个实施方案中,i
ref 2607开始于最低可能值(例如,可以存储在单元2808中或列2809中的16个可能电平中的最低值),然后依次增大到每个后续电平以进行验证操作。可将开关2806闭合以创建电容器2804的初始状态(诸如接地或预充电电压以提供偏移消除)。可将开关2803闭合以使反相器2801的输入和输出均衡,从而移除来自反相器2801的偏移以便在验证操作中进行比较。在验证操作期间,将开关2806和2803断开。如果i
cell
》=i
ref 2607,则节点2810上的电压将降低,该电压继而通过电容器2804电容耦合,使得节点2811上的电压降低,从而导致反相器输出切换到“1”,这意味着反相器2801的输入将为“0”值并且反相器2801的输出将为“1”值。如果i
cell
《i
ref 2607,则节点2810上的电压将升高,该电压继而通过电容器2804电容耦合,使得节点2811上的电压升高,从而导致反相器输出切换到“0”,这意味着反相器2801的输入将切换到“1”值并且反相器2801的输出将切换到“0”值。发
生这种情况的i
ref 2807的值对应于存储在单元2808中的值。
[0187]
图29a示出在编程脉冲操作之后的非易失性存储器单元2930或列2931的验证操作期间与参考电流源2600一起使用(诸如以验证存储器单元在权重调谐过程期间是否达到目标电流)或在另一种类型的测试期间与该参考电流源一起使用(诸如以验证存储器阵列中无法满足单元电流要求的截短存储器位(例如,异常位))的验证斜坡式模数转换器(adc)2900。i
cell 2906是来自单元2930或列2931的输出电流。验证adc 2900将i
cell 2906转换成输出为输出2940的一系列数字输出位,其中输出2940指示存储在单元2930或列2931中的值。
[0188]
验证adc 2900包括运算放大器2901、可调电容器2902、运算放大器2904、计数器2920和开关2908、2909和2910。可调电容器2902将i
cell
2906相对于由可调电流源2807所提供的电流i
ref
进行积分。在初始化阶段期间,将开关2908闭合。运算放大器2901的vout 2903和对运算放大器2901的反相输入的输入将变得等于施加到运算放大器2901的非反相输入的参考电压vref的值。此后,将开关2908断开,并且在固定时间段tref期间,将开关2910闭合,并且神经元电流i
cell 2906被上积分。在固定时间段tref期间,vout 2903升高,并且其斜率反映i
cell 2906的值。此后,在时间段tmeas期间,通过断开开关2910和闭合开关2909,由可调电流源2807所提供的恒定参考电流i
ref
被向下积分(在此期间vout下降),其中tmeas是将vout向下积分到vref所需的时间。
[0189]
当vout 2903》vref时,运算放大器2904的输出ec 2905将为高电平,反之将为低电平。ec 2905因此生成脉冲,该脉冲的宽度反映时间段tmeas,其反过来与电流i
cell 2906成比例。
[0190]
任选地,输出ec 2905被输入到计数器2920,该计数器在输出ec2905为高电平时对接收到的时钟脉冲2921数量进行计数,并且将生成输出2940,该输出将是表示当ec 2905为高电平时发生的时钟脉冲2921数量的数字计数的一组数字位,该数量与对应于存储在单元2930或列2931中的值的i
cell 2906成正比。
[0191]
图29b示出验证斜坡模数转换器2950,该验证斜坡模数转换器包括电流源2953(其表示所接收的神经元电流ineu或单个存储器单元电流)、开关2954、可变电容器2952,以及比较器2951,该比较器在其非反相输入处接收跨可变电容器2952形成的电压(表示为vneu)并且在其反相输入处接收可配置参考电压vreframp,并且生成输出cout。用于清除跨可变电容器2952的电压的电路未示出。vreframp随着每个比较时钟周期以离散电平斜升(升高)。比较器2951将vneu与vreframp进行比较,并因此当vneu》vreframp时,输出cout将为“1”,并且否则将为“0”。因此,输出cout将是脉冲,其宽度响应于ineu的值而变化。较大的ineu将致使cout在较长时间段内为“1”,即输出cout的脉冲较宽。数字计数器2960将输出cout转换为数字输出位do[n:0]2970,这些位反映cout为“1”值的时钟周期2961的数量。另选地,斜坡电压vreframp是连续斜坡电压。可以实现用于通过利用粗略-精细斜坡转换算法来减小转换时间的多斜坡实施方案。第一粗略参考斜坡参考电压以快速方式斜坡变化以弄清楚每个ineu的子范围。接下来,针对每个子范围分别使用精细参考斜坡参考电压以转换相应子范围内的ineu电流。超过两个粗略/精细步骤或超过两个子范围是可能的。
[0192]
其他adc架构可以用作验证adc,诸如闪存adc、sar(逐次逼近寄存器)adc、算法adc、流水线adc、sigma delta adc,但不限于此。
[0193]
图30示出先前参考图25描述的高压生成电路2511的实施方案。高电压生成电路
2511可与先前讨论的vmm阵列中的任一者一起使用。高电压生成电路2511包括电荷泵2512和高电压生成电路2514。电荷泵2512接收输入3004并且生成高电压3005,该高电压继而被提供给高电压发生器3002和3003。高电压(hv)发生器(hvdac_eg)3002是hv数模转换器,其提供电压(表示为v
eg 3008),诸如增量电压,该电压适合响应于数字位3006和接收的高电压3005施加于分裂栅闪存存储器单元的擦除栅端子。高电压发生器(hvdac cgsl)3003是hv数模转换器,其提供电压(分别表示为v
cg 3009和v
sl 3010),诸如增量电压,该电压适合响应于数字位3007和接收的高电压3005施加于分裂栅闪存存储器单元的控制栅端子和源极线端子。
[0194]
图31示出先前参考图25描述但这里以测试配置示出的vmm系统2500。测试控制逻辑2517向vmm系统2500的其他部件(在图25中示出,但在图31中未示出)提供控制信号以实现一个或多个测试算法3100,这些部件诸如vmm阵列2501、行解码器2502、列解码器2504、输入块2509、高电压解码器2503、列驱动器2505、高电压生成块2511、模拟块2515、算法控制器2510和输出电路块2508。vmm阵列2501从行解码器2502接收控制信号,由此一个或多个行在vmm阵列2501内被断言。vmm阵列2501将信号从一条或多条位线提供到列解码器2504,然后将输出从一条或多条位线提供到输出电路块2508。输出电路块2508可以包括模数转换器块(诸如先前参考图29a描述的验证adc 2900或先前参考图29b描述的验证斜坡adc 2950),该模数转换器块提供表示由输出电路块2508从vmm阵列2501接收的模拟电流的数字输出。
[0195]
表9包含在下述操作期间应用于vmm阵列2501内的字线、控制栅线、擦除栅线、源极栅极线和位线的示例性值,这些操作包括:对单独存储器单元执行的编程、擦除、读取和验证操作;在耦接到存储器单元的列的所选择位线上执行的验证神经元和读取神经元操作;以及借以读取每条位线的读取阵列操作(其中每条位线耦接到存储器单元的列)。
[0196]
表9:vmm阵列2501内操作的示例性值
[0197] wl cg eg sl bl
ꢀꢀ
已选未选已选未选已选未选已选未选已选未选编程0.9v0v高达10.5v0v高达4.5v0v高达4.5v约0.5viprogvinh擦除0v0v0v0v6v-11.5v0v0v0v0v0v读取1.1v0v2.5v2.5v2.5v2.5v0v0v0.6v0v验证神经元1.1v0v0v-1.5v0v0v0v0v0v0.6v0v读取神经元1.1v1.1v0v-1.5v0v-1.5v0v0v0v0v0.6v0.6v读取阵列1.1v1.1v0v-1.5v0v-1.5v0v0v0v0v0.6v0v
[0198]
现在将提供可以参考图31中所示的测试算法3100执行并且在图32至图44中进一步详述的测试类型的进一步细节,该测试由测试控制逻辑2517和vmm系统2500的其他部件来实现。
[0199]
参考图32,位线神经读取测试3101测量同时耦接到位线的所有存储器单元中的值。也就是说,位线神经读取测试3101读取vmm阵列中的神经元。首先,行解码器2502断言该阵列中的所有字线(步骤3201)。第二,由列解码器2504选择(断言)位线(步骤3202)。第三,在该位线上执行读取,诸如由读出放大器2800感测从位线接收的电流(步骤3203)。第四,可以通过比较由参考电流源2600生成的参考电流来确定所选择位线的值,以确定耦接到所选择位线的非易失性存储器单元(即神经元)是否包含期望的值(步骤3204)。
[0200]
参考图33,位线神经测量测试3102类似于位线神经读取测试3101。行解码器2502
断言所有字线(步骤3301)。由列解码器2504选择位线(步骤3302)。测量在读取操作期间由该位线消耗的电流(步骤3303)。这里,与位线神经读取测试3101不同,来自所选择位线的电流被测量而无需与参考电流进行比较。
[0201]
参考图34,在lsb筛选测试3103期间,行解码器2502断言所有字线(步骤3401),并且列解码器2504断言所有位线(步骤3402)。对vmm阵列2501中的所有存储器单元执行深度编程(步骤3403)。深度编程将对超出用于推断读数的正常编程状态的所有存储器单元进行编程。该深度编程采用较之正常操作中通常使用的更长的编程时间或更高的编程电压来完成。然后测量从所有位线接收的总电流(步骤3404)。预期的是深度编程阵列的总电流将远小于lsb值。此外,检查每个单独单元以确保来自单独单元的电流也低于lsb值,诸如50-100pa。这种类型的测试适用于在制造过程期间进行测试,以快速识别坏的裸片。
[0202]
参考图35,在位线采样筛选测试3104期间,将一个存储器单元或一组存储器单元编程为特定电平,例如lx,其中x的范围从1到n,其中n是可以存储在单元中的电平总数(例如,n=16)(步骤3501)。然后测量位线电流(是指由所选择位线中的一个单元或一组单元所消耗的电流,称为i
bl
)k次(步骤3502)。例如,如果k=8,则测量位线电流8次。然后基于步骤3502的k个测量值(即,i
bl1
…iblk
)计算平均值(i
avg
)(步骤3503)。
[0203]
接下来,相对于i
avg
检查k个电流测量值i
bl1
…iblk
中的每个测量值(步骤3504)。如果i
bli
(其中i的范围从i到k)》(i
avg
+阈值3505)或i
bli
《(i
avg-阈值3506),则位线被认为是坏的。然后检查坏位线中的每个单元,并且将坏的单元替换为冗余单元(来自冗余行或冗余列的此类单元)。
[0204]
图36示出位线采样筛选测试3104的另一个实施方案。通过k个不同时间地迫使电流iref进入位线来测量电压v
cg
(步骤3601)。例如,可以扫描电压v
cg
直到位线电流与固定iref匹配,并且可以测量并存储该特定v
cg
。固定iref可以由参考电流源2600提供,并且验证位线电流是否与固定iref匹配的操作可以由读出放大器2800来执行。然后,根据k个不同的v
cg
值计算出平均值v
avg
。接下来,相对于v
avg
检查k个所测量v
cg
电压中的每个电压(步骤3603)。如果v
cgi
(其中i的范围从i到k)》(v
avg
+阈值3604)或v
cgi
《(v
avg-阈值3605),则位线被认为是坏的。然后检查坏位线中的每个单元,并且将坏的单元替换为冗余单元(冗余行或冗余列)。
[0205]
在读取跳闸点测试3105期间,使用读取操作中的不同水平的iref执行粗略和精细读取参考电流微调。读取跳闸点测试3105的目的是弄清楚所选择的存储器单元是否可以通过预定的电流百分比目标,诸如用于擦除单元的约40%的完全擦除单元或用于编程单元的约5%的完全编程单元。这样可以确保存储器单元在主要分布内,而不是在截短存储器单元或截短位(即,统计异常值)内,因为截短存储器单元或截短位可能在工作寿命内引起潜在的可靠性问题。
[0206]
参考图37,在读取窗口检查测试3107期间,测试单元以确保其能够存储n个可能电平中的每一个。首先,将单元编程为表示n个值中的一个值的目标值(步骤3701)。接下来,执行验证操作以确定存储在单元中的值是否在围绕目标值的可接受值窗口3710内(步骤3702)。针对n个值中的每个值重复步骤3701和3702(步骤3703)。对于每个n值,可接受窗口3710可以是不同的。如果正在执行的步骤3702的任一实例指示存储在单元中的值在围绕目标值的可接受值窗口之外,则该单元被识别为坏的。读取窗口检查测试3107可以由读出放
大器2800、adc 2900、adc2950或另一部件执行。这对于对存储器单元执行权重调谐可能是有用的。在其中将固定窗用于以标称值为中心的n个值中的每个值的实施方案中已对上述内容予以解释,应当理解,在另一实施方案中,将较高阈值和较低阈值用于n个值中的每个值,并且这些阈值在所有n值之间不必相同,又不超出范围。
[0207]
参考图38,在读取校准测试3108期间,测量一个单元或一组单元(诸如耦接到位线的单元)的泄漏(步骤3801),存储所测量的泄漏值(i
leakage
)(步骤3802),并且稍后在读取操作期间使用所测量的泄漏值来补偿在工艺/电压/温度(pvt)的各种组合下的泄漏(步骤3803)。在一个实施方案中,用已知值分别对多个单元进行编程。字线和控制栅线被设置为接地,并且位线被设置为读取偏置电压。将一系列不同的参考电流注入到阵列中,并且通过读出放大器,诸如adc电路2900或2950或者读出放大器2800,来读取所得的数据读出。将产生最佳结果(与编程到单元中的已知值相比)的注入电流存储为i
leakage
。然后,在相同单元的读取操作期间应用i
leakage
,例如通过在读取操作期间从转换数据中减去所存储的泄漏水平以补偿在所选择单元内发生的泄漏。
[0208]
参考图39,在读取斜率测试3109期间,确定控制栅电压相对于两个参考电流的i-v斜率因子,电流ir1处的cg1和电流ir2处的cg2。第一步骤是当所选择的非易失性存储器单元在亚阈值区域中操作时,确定所选择的非易失性存储器单元的对数斜率因子(步骤3901)。第二步骤是存储该对数斜率因子(步骤3902)。第三步骤是当所选择的非易失性存储器单元在线性区域中操作时,确定所选择的非易失性存储器单元的线性斜率因子(步骤3903)。第四步骤是存储该线性斜率因子(步骤3904)。第五步骤是在将所选择单元编程为目标电流时,利用该对数斜率因子和该线性斜率因子中的一者或多者(步骤3905)。
[0209]
参考图40,在读取神经元质量鉴定测试3110期间,读取神经元(位线),而不相对于期望值检查值。第一步骤是测量位线中的电流并存储该测量值(步骤4001)。第二步骤是在预定时间量内,诸如在质量鉴定过程期间的预烧时间内,执行如下所述的读取虚拟神经元测试4010。第三步骤是测量来自位线的电流(步骤4003)。第四步骤是将所测量的电流与来自步骤4001的所存储的测量电流进行比较(步骤4004)。如果差值大于或小于某个量,则该位线被视为坏的位线。
[0210]
读取虚拟神经元测试4010包括一系列步骤。第一步骤是由行解码器断言阵列中的所有字线(步骤4011)。第二步骤是由列解码器断言阵列中的所有位线以选择非易失性存储器单元的所有列(步骤4012)。第三步骤是在不检查读取输出的情况下对该阵列执行读取操作(读取条件)(步骤4013)。读取虚拟神经元测试4010用作阵列上的读取应力以用于预烧目的。
[0211]
参考图41,在软擦除测试3111期间,对整个阵列或一个扇区进行测试以检查存储器阵列的擦除性能。第一步骤是通过在阵列中的每个非易失性存储器单元的端子上施加一系列电压来擦除该阵列中的非易失性存储器单元,其中该一系列电压中的电压以固定步长随时间增加(步骤4101)。这就以增量方式擦除单元,例如,通过以在5伏至12.5伏之间以例如0.5伏或1伏的步长的阶梯式方式增加擦除栅上的电压。以这种方式擦除减少了存储器单元上的应力。第二步骤是读取所有非易失性存储器单元以确定擦除步骤的有效性(步骤4102),例如通过确定在擦除步骤4101之后的单元电流在围绕标称值的可接受窗口内。任选地,可以执行耐久性测试以确定可以维持多少个编程/擦除循环,或者可以执行后台测试以
使阵列转变为已擦除状态。
[0212]
参考图42,在软编程测试3112期间,对整个阵列或一行或一个单元进行测试。第一步骤是通过在阵列中的每个非易失性存储器单元的端子上施加一系列电压来编程该阵列中的非易失性存储器单元,其中该一系列电压中的电压以固定步长随时间增加(步骤4201)。以增量方式,例如在3伏至10伏之间以10mv或0.3v或1v的步长,对单元进行编程,以检查存储器阵列的编程性能。以这种方式编程减少了存储器单元上的应力。第二步骤是读取所有非易失性存储器单元以确定编程步骤的有效性(步骤4202),例如通过确定在编程步骤4201之后的单元电流在围绕标称值的可接受窗口内。任选地,可以利用耐久性测试或后台测试。
[0213]
参考图43,可以执行读取验证测试3106。第一步骤是对多个非易失性存储器单元进行编程以存储n个不同值中的一个值,其中n是可以存储在任何非易失性存储器单元中的不同电平的数量(步骤4301)。第二步骤是测量多个非易失性存储器单元所消耗的电流(步骤4302)。第三步骤是将所测量的电流与目标值进行比较(步骤4303)。第四步骤是如果测量值与目标值之间的差值超过阈值因子,则将该多个非易失性存储器单元识别为坏的(步骤4304)。
[0214]
参考图44,可以执行棋盘验证测试3113,由此使用棋盘或伪棋盘图案来实现测试图案,并且测量采样电平而非所有可能的电平(例如,4个电平,l0、ln、ln/4、ln*3/4,而不是所有n个电平)。例如,可以使用图案来检查存储器阵列内的最坏情况电场应力(意味着一个单元处于高电场水平,并且相邻单元处于低电场水平)。
[0215]
在一个实施方案中,第一步骤是利用n个电平之中对应于最小单元电流的电平对多个非易失性存储器单元之中的第一组单元进行编程(步骤4401)。第二步骤是利用n个电平之中对应于最大单元电流的电平对多个非易失性存储器单元之中的第二组单元进行编程(步骤4402)。该第二组单元中的每个单元与第一组单元中的一个或多个单元相邻。第三步骤是测量多个非易失性存储器单元所消耗的电流(步骤4403)。第四步骤是将所测量的电流与目标值进行比较(步骤4404)。第五步骤是如果测量值与目标值之间的差值超过阈值,则将该多个非易失性存储器单元识别为坏的(步骤4405)。
[0216]
表10包含可以在棋盘验证测试3113期间使用的物理阵列映射的其他示例性测试图案:
[0217]
表10:示例性测试图案
[0218][0219]
分选测试3114、最终测试3115、质量鉴定测试3116和数据保留测试3117是可在包含本文公开的vmm系统的晶片、裸片或封装器件的制造和质量鉴定过程期间执行的测试套件。
[0220]
可以在制造过程期间对晶片执行分选测试3114。在一个实施方案中,分选测试3114包括以下测试套件:首先,执行相对快速的测试以快速识别坏晶片或裸片,诸如软擦除测试3111、软编程测试3112和各种应力模式测试(诸如擦除栅极氧化物gox、耦合栅极氧化物cox、源线氧化物sol、反向干扰隧穿rtst(从浮栅隧穿到字线、对未选行的干扰)、大规模穿通mpt(从未选行的源极到漏极的干扰)、读取干扰rdist(来自读取条件的干扰))。其次,执行对顶部扇区和底部扇区的神经测试模式,例如lsb筛选测试3103和位线采样筛选3104。神经测试模式比在第一步骤期间执行的测试耗时得多,并且由于在第一组耗时较少的测试期间筛选或识别出坏的晶片或裸片,因此节省了一些时间。
[0221]
可以对封装器件执行最终测试3115。在一个实施方案中,最终测试3115包括软擦除测试3111和软编程测试3112的执行。任选地,可以利用用于神经应用的测试图案来减少测试时间而不是全面测试,诸如测试m个扇区的n个电平中的k个,或测试某些扇区(诸如顶部扇区和底部扇区)的所有n个电平。
[0222]
在质量鉴定测试3116期间,执行虚拟位线读取循环(其为读取动作的执行,而没有实际确定读取数据的内容),并且通过应用软擦除测试3111和软编程测试3112来完成耐久性测试。执行位线测试而不是单独的存储器单元测试,因为在神经存储器应用期间使用位线读取而不是单独的存储器读取。
[0223]
数据保留测试3117可以包括例如在高温下(诸如250摄氏度)烘烤已编程的晶片持续24-72小时。在一个实施方案中,施加棋盘或伪棋盘测试图案,而不是像数字存储器测试
那样进行全面测试。在神经模式和读取位线电流模式下检查位线电流上的数据保留(而不是像数字存储器那样检查每个存储器单元)。例如,一种查询是检查δibl是否《+/-p%,其中δibl被定义为所测量的位线电流与预期位线电流的差值。(wholeblmeas模式,软件神经网络建模允许百分比误差p%用于神经网络的目标准确度)。测试用于神经模式的δibl以识别位线输出电流是否超过或低于目标,本文中将其定义为目标的预定百分比“p”。另选地,可以用目标的+/-δ对每个单元进行检查/测试。
[0224]
可以使用本文所述的硬件和算法来执行其他测试。
[0225]
应当指出,如本文所用,术语“在

上方”和“在

上”两者包容地包含“直接在

上”(之间未设置中间材料、元件或空间)和“间接在

上”(之间设置有中间材料、元件或空间)。类似地,术语“相邻”包括“直接相邻”(之间没有设置中间材料、元件或空间)和“间接相邻”(之间设置有中间材料、元件或空间),“安装到”包括“直接安装到”(之间没有设置中间材料、元件或空间)和“间接安装到”(之间设置有中间材料、元件或空间),并且“电耦接至”包括“直接电耦接至”(之间没有将元件电连接在一起的中间材料或元件)和“间接电耦接至”(之间有将元件电连接在一起的中间材料或元件)。例如,“在衬底上方”形成元件可包括在两者间没有中间材料/元件的情况下在衬底上直接形成元件,以及在两者间有一个或多个中间材料/元件的情况下在衬底上间接形成元件。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1