CN114127854A - 用于人工神经网络中的模拟神经存储器的测试电路和方法 - Google Patents
用于人工神经网络中的模拟神经存储器的测试电路和方法 Download PDFInfo
- Publication number
- CN114127854A CN114127854A CN201980098528.8A CN201980098528A CN114127854A CN 114127854 A CN114127854 A CN 114127854A CN 201980098528 A CN201980098528 A CN 201980098528A CN 114127854 A CN114127854 A CN 114127854A
- Authority
- CN
- China
- Prior art keywords
- array
- volatile memory
- memory cells
- memory cell
- bit line
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/50—Marginal testing, e.g. race, voltage or current testing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/048—Activation functions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
- G06N3/065—Analogue means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/54—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using elements simulating biological cells, e.g. neuron
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/04—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
- G11C16/0408—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells containing floating gate transistors
- G11C16/0425—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells containing floating gate transistors comprising cells containing a merged floating gate and select transistor
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/26—Sensing or reading circuits; Data output circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/34—Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
- G11C16/3436—Arrangements for verifying correct programming or erasure
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/34—Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
- G11C16/3436—Arrangements for verifying correct programming or erasure
- G11C16/3454—Arrangements for verifying correct programming or for detecting overprogrammed cells
- G11C16/3459—Circuits or methods to verify correct programming of nonvolatile memory cells
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/10—Test algorithms, e.g. memory scan [MScan] algorithms; Test patterns, e.g. checkerboard patterns
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C2029/1204—Bit line control
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/18—Address generation devices; Devices for accessing memories, e.g. details of addressing circuits
- G11C29/26—Accessing multiple arrays
- G11C2029/2602—Concurrent test
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/50—Marginal testing, e.g. race, voltage or current testing
- G11C2029/5006—Current
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Computing Systems (AREA)
- Evolutionary Computation (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Neurology (AREA)
- Computer Hardware Design (AREA)
- Human Computer Interaction (AREA)
- Non-Volatile Memory (AREA)
- Read Only Memory (AREA)
- For Increasing The Reliability Of Semiconductor Memories (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明公开了在深度学习人工神经网络中用于模拟神经存储器的测试电路和方法。该模拟神经存储器包括一个或多个非易失性存储器单元阵列。可以在分选测试、鉴定测试和其它测试期间利用该测试电路和方法来验证一个或多个单元的编程操作。
Description
优先权声明
本申请要求于2019年7月19日提交的标题为“Testing Circuitry and Methodsfor Analog Neural Memory in Artificial Neural Network”的美国临时专利申请号62/876,515和于2019年9月12日提交的标题为“Testing Circuitry and Methods for AnalogNeural Memory in Artificial Neural Network”的美国专利申请号16/569,611的优先权。
技术领域
本发明公开了在深度学习人工神经网络中用于模拟神经存储器的测试电路和方法。模拟神经存储器包括一个或多个非易失性闪存存储器单元阵列。
背景技术
人工神经网络模拟生物神经网络(动物的中枢神经系统,特别是大脑),并且用于估计或近似可取决于大量输入并且通常未知的函数。人工神经网络通常包括互相交换消息的互连“神经元”层。
图1示出了人工神经网络,其中圆圈表示神经元的输入或层。连接部(称为突触)用箭头表示,并且具有可以根据经验进行调整的数值权重。这使得神经网络适应于输入并且能够学习。通常,神经网络包括多个输入的层。通常存在神经元的一个或多个中间层,以及提供神经网络的输出的神经元的输出层。处于每一级别的神经元分别地或共同地根据从突触所接收的数据作出决定。
在开发用于高性能信息处理的人工神经网络方面的主要挑战中的一个挑战是缺乏足够的硬件技术。实际上,实际神经网络依赖于大量的突触,从而实现神经元之间的高连通性,即非常高的计算并行性。原则上,此类复杂性可通过数字超级计算机或专用图形处理单元集群来实现。然而,相比于生物网络,这些方法除了高成本之外,能量效率也很普通,生物网络主要由于其执行低精度的模拟计算而消耗更少的能量。CMOS模拟电路已被用于人工神经网络,但由于需要大量神经元和突触,大多数CMOS实现的突触都过于庞大。
申请人先前在美国专利申请15/594,439(公开为美国专利公布2017/0337466)中公开了一种利用一个或多个非易失性存储器阵列作为突触的人工(模拟)神经网络,该专利申请以引用方式并入本文。非易失性存储器阵列作为模拟神经存储器操作。神经网络设备包括被配置成接收第一多个输入并从其生成第一多个输出的第一多个突触,以及被配置成接收第一多个输出的第一多个神经元。第一多个突触包括多个存储器单元,其中存储器单元中的每个存储器单元包括:形成于半导体衬底中的间隔开的源极区和漏极区,其中沟道区在源极区和漏极区之间延伸;设置在沟道区的第一部分上方并且与第一部分绝缘的浮栅;以及设置在沟道区的第二部分上方并且与第二部分绝缘的非浮栅。多个存储器单元中的每个存储器单元被配置成存储与浮栅上的多个电子相对应的权重值。多个存储器单元被配置成将第一多个输入乘以所存储的权重值以生成第一多个输出。以这种方式使用的存储器单元阵列可以被称为矢量矩阵乘法(VMM)阵列。
必须擦除和编程在模拟神经存储器系统中使用的每个非易失性存储器单元,以在浮栅中保持非常特定且精确的电荷量(即电子数量)。例如,每个浮栅必须保持N个不同值中的一个,其中N是可由每个单元指示的不同权重的数量。N的示例包括16、32、64、128和256。
精度和准确度在涉及VMM阵列的操作中非常重要,因为每个单独的存储器单元可以存储N个不同电平中的一个,其中N可以大于2,与其中N始终为2的传统存储器单元完全不同。这使得测试是极其重要的操作。例如,需要验证编程操作以确保每个单独的单元或一列单元被准确地编程到期望的值。又如,至关重要的是识别不良单元或单元组,使得它们可以从用于在VMM阵列的操作期间存储数据的一组单元中移除。
所需要的是用于VMM阵列的改进的测试电路和方法。
发明内容
本发明公开了在深度学习人工神经网络中用于模拟神经存储器的测试电路和方法。模拟神经存储器包括一个或多个非易失性闪存存储器单元阵列。可以在分选测试、循环测试、高温操作寿命(HTOL)测试、鉴定测试和其它测试期间利用测试电路和方法,并验证一个或多个单元的特性和可操作性。
一个实施方案包括一种验证编程到模拟神经非易失性存储器单元阵列中的多个非易失性存储器单元中的值的方法,其中该阵列按行和列布置,其中每行耦合到字线,且每列耦合到位线,并且其中每一字线选择性地耦合到行解码器,且每一位线选择性地耦合到列解码器,该方法包括:由该行解码器断言该阵列中的全部字线;由所述列解码器断言所述阵列中的位线;由读出放大器感测从所述位线接收的电流;以及将该电流与参考电流进行比较以确定耦合到该位线的非易失性存储器单元是否包含期望值。
另一个实施方案包括一种测量由模拟神经非易失性存储器单元阵列中的多个非易失性存储器单元消耗的电流的方法,其中该阵列按行和列布置,其中每行耦合到字线,且每列耦合到位线,并且其中每一字线选择性地耦合到行解码器,且每一位线选择性地耦合到列解码器,该方法包括:由该行解码器断言该阵列中的全部字线;由所述列解码器断言所述阵列中的位线;以及测量从该位线接收的电流。
另一种方法包括一种测试非易失性存储器单元阵列中的多个模拟神经非易失性存储器单元的方法,其中该阵列按行和列布置,其中每行耦合到字线,且每列耦合到位线,并且其中每一字线选择性地耦合到行解码器,且每一位线选择性地耦合到列解码器,该方法包括:由该行解码器断言该阵列中的全部字线;由所述列解码器断言所述阵列中的全部位线;对所述阵列中的全部非易失性存储器单元执行深度编程操作;以及测量从这些位线接收的总电流。
另一个实施方案包括一种测试模拟神经非易失性存储器单元阵列的方法,其中该阵列按行和列布置,其中每行耦合到字线,并且每列耦合到位线,该方法包括:对耦合到位线的多个单元进行编程;在K个不同时间测量由该多个单元消耗的电流并存储K个不同时间中的每个不同时间的测量值,其中K是整数;基于K个测量值计算平均值;以及如果K个测量值中的任一者小于平均值超过第一阈值或大于平均值超过第二阈值,则将该位线识别为不良位线。
另一个实施方案包括一种测试模拟神经非易失性存储器单元阵列的方法,其中该阵列按行和列布置,其中每行耦合到字线,并且每列耦合到位线,该方法包括:对耦合到位线的多个单元进行编程;在K个不同时间测量耦合到多个单元的控制栅极端子的控制栅极线上的电压并且存储K个不同时间中每一者的测量值,其中K是整数;基于K个测量值计算平均值;以及如果K个测量值中的任一者小于平均值超过第一阈值或大于平均值超过第二阈值,则将该位线识别为不良位线。
另一个实施方案包括一种测试用于存储N个不同值的模拟神经非易失性存储器单元的方法,其中N是整数,该方法包括:将该单元编程为表示N个值中的一个值的目标值;验证存储在该单元中的值在目标值周围的值的可接受窗口内;针对N个值中的每一者重复编程步骤和读取步骤;以及如果任何验证步骤指示存储在单元中的值在目标值周围的值的可接受窗口之外,则将该单元识别为不良。
另一个实施方案包括一种补偿模拟神经非易失性存储器单元阵列中的渗漏的方法,其中该阵列按行和列布置,其中每行耦合到字线,并且每列耦合到位线,该方法包括:测量耦合到位线的一列非易失性存储器单元的渗漏;存储所测量的渗漏值;以及在该列非易失性存储器单元的读取操作期间施加该所测量的渗漏值以补偿该泄漏。
另一个实施方案包括一种测试模拟神经非易失性存储器单元阵列中所选择的非易失性存储器单元的方法,该方法包括:当所选择的非易失性存储器单元在亚阈值区域中操作时,确定所选择的非易失性存储器单元的对数斜率因子;存储所述对数斜率因子;当所述所选择的非易失性存储器单元在线性区域中操作时,确定所述所选择的非易失性存储器单元的线性斜率因子;存储所述线性斜率因子;以及当将所选择的单元编程到目标电流时,利用对数斜率因子和线性斜率因子中的一者或多者。
另一个实施方案包括一种测量由模拟神经非易失性存储器单元阵列中的一列非易失性存储器单元消耗的电流的方法,其中该阵列按行和列布置,其中每行耦合到字线,且每列耦合到位线,并且其中每一字线选择性地耦合到行解码器,且每一位线选择性地耦合到列解码器,该方法包括:由该行解码器断言该阵列中的全部字线;由列解码器断言该阵列中的位线以选择一列非易失性存储器单元;以及测量从该位线接收的电流。
另一个实施方案包括一种测试模拟神经非易失性存储器单元阵列的方法,该方法包括:通过在该阵列中的非易失性存储器单元中的每一者的端子上施加序列电压来擦除该阵列中的非易失性存储器单元,其中该序列电压中的电压以固定的步长大小随时间推移增加;以及读取全部非易失性存储器单元以确定擦除步骤的效果。
另一个实施方案包括一种测试模拟神经非易失性存储器单元阵列的方法,该方法包括:通过在该阵列中的每个非易失性存储器单元的端子上施加序列电压来对该阵列中的非易失性存储器单元进行编程,其中该序列电压中的电压以固定的步长大小随时间推移增加;以及读取全部非易失性存储器单元以确定编程步骤的效果。
另一个实施方案包括一种测试非易失性存储器单元阵列中的多个模拟神经非易失性存储器单元的方法,其中该阵列按行和列布置,其中每行耦合到字线,且每列耦合到位线,并且其中每一字线选择性地耦合到行解码器,且每一位线选择性地耦合到列解码器,该方法包括对多个非易失性存储器单元进行编程以存储N个不同值中的一者,其中N是可以存储在任何非易失性存储器单元中的不同电平的数量;测量由该多个非易失性存储器单元消耗的电流;将所测量的电流与目标值进行比较;以及如果测量值与目标值之间的差超过阈值,则将该多个非易失性存储器单元识别为不良。
另一个实施方案包括一种测试非易失性存储器单元阵列中的多个模拟神经非易失性存储器单元的方法,其中该存储器阵列按行和列布置,其中每行耦合到字线,且每列耦合到位线,并且其中每一字线选择性地耦合到行解码器,且每一位线选择性地耦合到列解码器,该方法包括对该多个非易失性存储器单元中的电平对应于N个电平中的最小单元电流的单元的第一选择进行编程;对多个非易失性存储器单元中电平对应于N个电平中的最大单元电流的单元的第二选择进行编程,其中单元的第二选择中的每个单元与单元的第一选择中的一个或多个单元相邻;测量由该多个非易失性存储器单元消耗的电流;将所测量的电流与目标值进行比较;以及如果测量值与目标值之间的差超过阈值,则将该多个非易失性存储器单元识别为不良。
附图说明
图1为示出现有技术的人工神经网络的示意图。
图2示出现有技术分裂栅闪存存储器单元。
图3示出另一现有技术的分裂栅闪存存储器单元。
图4示出另一现有技术的分裂栅闪存存储器单元。
图5示出另一现有技术的分裂栅闪存存储器单元
图6示出另一现有技术的分裂栅闪存存储器单元。
图7示出现有技术的堆叠栅闪存存储器单元。
图8为示出使用一个或多个非易失性存储器阵列的示例性人工神经网络的不同层级的示意图。
图9为示出矢量-矩阵乘法系统的框图。
图10为示出使用一个或多个矢量-矩阵乘法系统的示例性人工神经网络的框图。
图11示出矢量-矩阵乘法系统的另一实施方案。
图12示出矢量-矩阵乘法系统的另一实施方案。
图13示出矢量-矩阵乘法系统的另一实施方案。
图14示出矢量-矩阵乘法系统的另一实施方案。
图15示出矢量-矩阵乘法系统的另一实施方案。
图16示出矢量-矩阵乘法系统的另一实施方案。
图17示出矢量-矩阵乘法系统的另一实施方案。
图18示出矢量-矩阵乘法系统的另一实施方案。
图19示出矢量-矩阵乘法系统的另一实施方案。
图20示出矢量-矩阵乘法系统的另一实施方案。
图21示出矢量-矩阵乘法系统的另一实施方案。
图22示出矢量-矩阵乘法系统的另一实施方案。
图23示出矢量-矩阵乘法系统的另一实施方案。
图24示出矢量-矩阵乘法系统的另一实施方案。
图25示出包括测试控制逻辑部件的矢量-矩阵乘法系统的实施方案。
图26示出参考电流源。
图27示出用于图26的参考电流源的参考子电路。
图28示出读出放大器。
图29A示出验证模数转换器。
图29B示出验证模数转换器。
图30示出高压生成电路。
图31示出由矢量-矩阵乘法系统中的测试控制逻辑部件实现的示例性测试算法。
图32示出位线神经读取测试的实施方案。
图33示出位线神经测量测试的实施方案。
图34示出LSB屏幕测试的实施方案。
图35示出位线采样屏幕测试的实施方案。
图36示出位线采样屏幕测试的另一实施方案。
图37示出读取窗口检查测试的实施方案。
图38示出读取校准测试的实施方案。
图39示出读取斜率测试的实施方案。
图40示出读取神经元鉴定测试的实施方案。
图41示出软擦除测试的实施方案。
图42示出软程序测试的实施方案。
图43示出验证测试的实施方案。
图44示出棋盘验证测试的实施方案。
具体实施方式
本发明的人工神经网络利用CMOS技术和非易失性存储器阵列的组合。
非易失性存储器单元
数字非易失性存储器是众所周知的。例如,美国专利5,029,130(“130专利”),其以引用方式并入本文,公开了分裂栅非易失性存储器单元的阵列,它是一种闪存存储器单元。此类存储器单元210在图2中示出。每个存储器单元210包括形成于半导体衬底12中的源极区14和漏极区16,其间具有沟道区18。浮栅20形成在沟道区18的第一部分上方并且与其绝缘(并控制其电导率),并且形成在源极区14的一部分上方。字线端子22(其通常被耦接到字线)具有设置在沟道区18的第二部分上方并且与该沟道区的第二部分绝缘(并且控制其电导率)的第一部分,以及向上延伸并且位于浮栅20上方的第二部分。浮栅20和字线端子22通过栅极氧化物与衬底12绝缘。位线端子24耦接到漏极区16。
通过将高的正电压置于字线端子22上来对存储器单元210进行擦除(其中电子从浮栅去除),这导致浮栅20上的电子经由Fowler-Nordheim隧穿从浮栅20到字线端子22隧穿通过中间绝缘体。
通过将正的电压置于字线端子22上以及将正的电压置于源极区14上来编程存储器单元210(其中电子被置于浮栅上)。电子电流将从源极区14(源极线端子)流向漏极区16。当电子到达字线端子22和浮栅20之间的间隙时,电子将加速并且变热。由于来自浮栅20的静电引力,一些加热的电子将通过栅极氧化物被注入到浮栅20上。
通过将正的读取电压置于漏极区16和字线端子22(其接通沟道区18的在字线端子下方的部分)上来读取存储器单元210。如果浮栅20带正电(即,电子被擦除),则沟道区18的在浮栅20下方的部分也被接通,并且电流将流过沟道区18,该沟道区被感测为擦除状态或“1”状态。如果浮栅20带负电(即,通过电子进行了编程),则沟道区的在浮栅20下方的部分被大部分或完全关断,并且电流将不会(或者有很少的电流)流过沟道区18,该沟道区被感测为编程状态或“0”状态。
表1示出可施加到存储器单元110的端子用于执行读取、擦除和编程操作的典型电压范围:
表1:图2的闪存存储器单元210的操作
WL | BL | SL | |
读取1 | 0.5-3V | 0.1-2V | 0V |
读取2 | 0.5-3V | 0-2V | 2-0.1V |
擦除 | 约11-13V | 0V | 0V |
编程 | 1V-2V | 1-3μA | 9-10V |
“读取1”是其中单元电流在位线上输出的读取模式。“读取2”是其中单元电流在源极线端子上输出的读取模式。
图3示出了存储器单元310,其与图2的存储器单元210类似,但增加了控制栅(CG)端子28。控制栅端子28在编程中被偏置在高电压处(例如,10V),在擦除中被偏置在低电压或负电压处(例如,0v/-8V),在读取中被偏置在低电压或中等电压处(例如,0v/2.5V)。其他端子类似于图2那样偏置。
图4示出了四栅极存储器单元410,其包括源极区14、漏极区16、在沟道区18的第一部分上方的浮栅20、在沟道区18的第二部分上方的选择栅22(通常耦接到字线WL)、在浮栅20上方的控制栅28、以及在源极区14上方的擦除栅30。这种配置在美国专利6,747,310中有所描述,该专利以引用方式并入本文以用于所有目的。这里,除了浮栅20之外,所有的栅极均为非浮栅,这意味着它们电连接到或能够电连接到电压源。编程由来自沟道区18的将自身注入到浮栅20的加热的电子执行。擦除通过从浮栅20隧穿到擦除栅30的电子来执行。
表2示出可施加到存储器单元410的端子用于执行读取、擦除和编程操作的典型电压范围:
表2:图4的闪存存储器单元410的操作
WL/SG | BL | CG | EG | SL | |
读取1 | 0.5-2V | 0.1-2V | 0-2.6V | 0-2.6V | 0V |
读取2 | 0.5-2V | 0-2V | 0-2.6V | 0-2.6V | 2-0.1V |
擦除 | -0.5V/0V | 0V | 0V/-8V | 8-12V | 0V |
编程 | 1V | 1μA | 8-11V | 4.5-9V | 4.5-5V |
“读取1”是其中单元电流在位线上输出的读取模式。“读取2”是其中单元电流在源极线端子上输出的读取模式。
图5示出了存储器单元510,除了不含擦除栅EG端子,存储器单元510与图4的存储器单元410类似。通过将衬底18偏置到高电压并将控制栅CG端子28偏置到低电压或负电压来执行擦除。另选地,通过将字线端子22偏置到正电压并将控制栅端子28偏置到负电压来执行擦除。编程和读取类似于图4的那样。
图6示出三栅极存储器单元610,其为另一种类型的闪存存储器单元。存储器单元610与图4的存储器单元410相同,除了存储器单元610没有单独的控制栅端子。除了没有施加控制栅偏置,擦除操作(通过使用擦除栅端子进行擦除)和读取操作类似于图4的操作。在没有控制栅偏置的情况下,编程操作也被完成,并且结果,在编程操作期间必须在源极线端子上施加更高的电压,以补偿控制栅偏置的缺乏。
表3示出可施加到存储器单元610的端子用于执行读取、擦除和编程操作的典型电压范围:
表3:图6的闪存存储器单元610的操作
WL/SG | BL | EG | SL | |
读取1 | 0.5-2.2V | 0.1-2V | 0-2.6V | 0V |
读取2 | 0.5-2.2V | 0-2V | 0-2.6V | 2-0.1V |
擦除 | -0.5V/0V | 0V | 11.5V | 0V |
编程 | 1V | 2-3μA | 4.5V | 7-9V |
“读取1”是其中单元电流在位线上输出的读取模式。“读取2”是其中单元电流在源极线端子上输出的读取模式。
图7示出堆叠栅存储器单元710,其为另一种类型的闪存存储器单元。存储器单元710与图2的存储器单元210类似,不同的是浮栅20在整个沟道区18上方延伸,并且控制栅端子22(其在这里将耦接到字线)在浮栅20上方延伸,由绝缘层(未示出)分开。擦除、编程和读取操作以与先前针对存储器单元210所述类似的方式操作。
表4示出可以施加到存储器单元710和衬底12的端子用于执行读取、擦除和编程操作的典型电压范围:
表4:图7的闪存存储器单元710的操作
CG | BL | SL | 衬底 | |
读取1 | 0-5V | 0.1–2V | 0-2V | 0V |
读取2 | 0.5-2V | 0-2V | 2-0.1V | 0V |
擦除 | -8至-10V/0V | FLT | FLT | 8-10V/15-20V |
编程 | 8-12V | 3-5V/0V | 0V/3-5V | 0V |
“读取1”是其中单元电流在位线上输出的读取模式。“读取2”是其中单元电流在源极线端子上输出的读取模式。任选地,在包括存储器单元210、310、410、510、610或710的行和列的阵列中,源极线可耦接到一行存储器单元或相邻的两行存储器单元。即,源极线端子可由相邻行的存储器单元共享。
为了在人工神经网络中利用包括上述类型的非易失性存储器单元之一的存储器阵列,进行了两个修改。第一,对线路进行配置,使得每个存储器单元可被单独编程、擦除和读取,而不会不利地影响阵列中的其他存储器单元的存储器状态,如下文进一步解释。第二,提供存储器单元的连续(模拟)编程。
具体地,阵列中的每个存储器单元的存储器状态(即,浮栅上的电荷)可在独立地并且对其他存储器单元的干扰最小的情况下连续地从完全擦除状态变为完全编程状态。在另一个实施方案,阵列中的每个存储器单元的存储器状态(即,浮栅上的电荷)可在独立地并且对其他存储器单元的干扰最小的情况下连续地从完全编程状态变为完全擦除状态,反之亦然。这意味着单元存储装置是模拟的,或者至少可存储许多离散值(诸如16或64个不同的值)中的一个离散值,这允许对存储器阵列中的所有单元进行非常精确且单独的调谐,并且这使得存储器阵列对于存储和对神经网络的突触权重进行微调调整是理想的。
本文所述的方法和装置可应用于其他非易失性存储器技术,诸如但不限于SONOS(硅-氧化物-氮化物-氧化物-硅,电荷捕获在氮化物中)、MONOS(金属-氧化物-氮化物-氧化物-硅,金属电荷捕获在氮化物中)、ReRAM(电阻式ram)、PCM(相变存储器)、MRAM(磁性ram)、FeRAM(铁电ram)、OTP(双层或多层式一次可编程)和CeRAM(关联电子ram)等。本文所述的方法和装置可应用于用于神经网络的易失性存储器技术,诸如但不限于SRAM、DRAM和/或易失性突触单元。
采用非易失性存储器单元阵列的神经网络
图8概念性地示出本实施方案的使用非易失性存储器阵列的神经网络的非限制性示例。该示例将非易失性存储器阵列神经网络用于面部识别应用,但任何其他适当的应用也可使用基于非易失性存储器阵列的神经网络来实现。
对于该示例,S0为输入层,其为具有5位精度的32×32像素RGB图像(即,三个32×32像素阵列,分别用于每个颜色R、G和B,每个像素为5位精度)。从输入层S0到层C1的突触CB1在一些情况下应用不同的权重集,在其他情况下应用共享权重,并且用3×3像素重叠滤波器(内核)扫描输入图像,将滤波器移位1个像素(或根据模型所指示的多于1个像素)。具体地,将图像的3×3部分中的9个像素的值(即,称为滤波器或内核)提供给突触CB1,其中将这9个输入值乘以适当的权重,并且在对该乘法的输出求和之后,由CB1的第一突触确定并提供单个输出值以用于生成特征映射的其中一层C1的像素。然后将3×3滤波器在输入层S0内向右移位一个像素(即,添加右侧的三个像素的列,并释放左侧的三个像素的列),由此将该新定位的滤波器中的9个像素值提供给突触CB1,其中将它们乘以相同的权重并且由相关联的突触确定第二单个输出值。继续该过程,直到3×3滤波器在输入层S0的整个32×32像素图像上扫描所有三种颜色和所有位(精度值)。然后使用不同组的权重重复该过程以生成C1的不同特征映射,直到计算出层C1的所有特征映射。
在层C1处,在本示例中,存在16个特征映射,每个特征映射具有30×30像素。每个像素是从输入和内核的乘积中提取的新特征像素,因此每个特征映射是二维阵列,因此在该示例中,层C1由16层的二维阵列构成(记住本文所引用的层和阵列是逻辑关系,而不必是物理关系,即阵列不必定向于物理二维阵列)。在层C1中的16个特征映射中的每个特征映射均由应用于滤波器扫描的十六个不同组的突触权重中的一组生成。C1特征映射可全部涉及相同图像特征的不同方面,诸如边界识别。例如,第一映射(使用第一权重组生成,针对用于生成该第一映射的所有扫描而共享)可识别圆形边缘,第二映射(使用与第一权重组不同的第二权重组生成)可识别矩形边缘,或某些特征的纵横比,以此类推。
在从层C1转到层S1之前,应用激活函数P1(池化),该激活函数将来自每个特征映射中连续的非重叠2×2区域的值进行池化。池化函数的目的是对邻近位置求均值(或者也可使用max函数),以例如减少边缘位置的依赖性,并在进入下一阶段之前减小数据大小。在层S1处,存在16个15×15特征映射(即,十六个每个特征映射15×15像素的不同阵列)。从层S1到层C2的突触CB2利用4×4滤波器扫描S1中的映射,其中滤波器移位1个像素。在层C2处,存在22个12×12特征映射。在从层C2转到层S2之前,应用激活函数P2(池化),该激活函数将来自每个特征映射中连续的非重叠2×2区域的值进行池化。在层S2处,存在22个6×6特征映射。将激活函数(池化)应用于从层S2到层C3的突触CB3,其中层C3中的每个神经元经由CB3的相应突触连接至层S2中的每个映射。在层C3处,存在64个神经元。从层C3到输出层S3的突触CB4完全将C3连接至S3,即层C3中的每个神经元都连接到层S3中的每个神经元。S3处的输出包括10个神经元,其中最高输出神经元确定类。例如,该输出可指示对原始图像的内容的识别或分类。
使用非易失性存储器单元的阵列或阵列的一部分来实现每层的突触。
图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的输出进行解码。
VMM阵列33用于两个目的。首先,它存储将由VMM系统32使用的权重。其次,VMM阵列33有效地将输入与存储在VMM阵列33中的权重相乘并且每个输出线(源极线或位线)将它们相加以产生输出,该输出将作为下一层的输入或最终层的输入。通过执行乘法和加法函数,VMM阵列33消除了对单独的乘法和加法逻辑电路的需要,并且由于其原位存储器计算也是高功效的。
将VMM阵列33的输出提供至差分求和器(诸如求和运算放大器或求和电流镜)38,该差分求和器对VMM阵列33的输出进行求和,以为该卷积创建单个值。差分求和器38被布置用于执行正权重输入和负权重输入两者的求和,以输出单个值。
然后将差分求和器38的输出值求和后提供至激活函数电路39,该激活函数电路对输出进行修正。激活函数电路39可提供sigmoid、tanh、ReLU函数或任何其他非线性函数。激活函数电路39的经修正的输出值成为作为下一层(例如,图8中的层C1)的特征映射的元素,然后被应用于下一个突触以产生下一个特征映射层或最终层。因此,在该示例中,VMM阵列33构成多个突触(其从现有神经元层或从输入层诸如图像数据库接收它们的输入),并且求和器38和激活函数电路39构成多个神经元。
图9中对VMM系统32的输入(WLx、EGx、CGx以及任选的BLx和SLx)可为模拟电平、二进制电平、数字脉冲(在这种情况下,可能需要脉冲-模拟转换器PAC来将脉冲转换至合适的输入模拟电平)或数字位(在这种情况下,提供DAC以将数字位转换至合适的输入模拟电平);输出可为模拟电平、二进制电平、数字脉冲或数字位(在这种情况下,提供输出ADC以将输出模拟电平转换成数字位)。
图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的映射的一个或多个数字脉冲。
由输入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)。本领域的普通技术人员将会知道,这仅仅是示例性的,并且相反,系统可包括两个以上的隐藏层和两个以上的完全连接的层。
VMM阵列
图11示出神经元VMM阵列1100,该神经元VMM阵列特别适用于图3所示的存储器单元310,并且用作输入层与下一层之间的神经元的突触和部件。VMM阵列1100包括非易失性存储器单元的存储器阵列1101和非易失性参考存储器单元的参考阵列1102(在阵列的顶部)。另选地,可将另一个参考阵列置于底部。
在VMM阵列1100中,控制栅线(诸如控制栅线1103)在竖直方向上延伸(因此参考阵列1102在行方向上与控制栅线1103正交),并且擦除栅线(诸如擦除栅线1104)在水平方向上延伸。此处,VMM阵列1100的输入设置在控制栅线(CG0,CG1,CG2,CG3)上,并且VMM阵列1100的输出出现在源极线(SL0,SL1)上。在一个实施方案中,仅使用偶数行,并且在另一个实施方案中,仅使用奇数行。置于各源极线(分别为SL0、SL1)上的电流执行来自连接到该特定源极线的存储器单元的所有电流的求和函数。
如本文针对神经网络所述,VMM阵列1100的非易失性存储器单元(即VMM阵列1100的闪存存储器)优选地被配置成在亚阈值区域中操作。
在弱反转中偏置本文所述的非易失性参考存储器单元和非易失性存储器单元:
Ids=Io*e(Vg-Vth)/nVt=w*Io*e(Vg)/nVt,
其中w=e(-Vth)/nVt
其中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分别是存储器单元的宽度和长度。
对于使用存储器单元(诸如参考存储器单元或外围存储器单元)或晶体管将输入电流Ids转换为输入电压Vg的I到V对数转换器:
Vg=n*Vt*log[Ids/wp*Io]
此处,wp为参考存储器单元或外围存储器单元的w。
对于使用存储器单元(诸如参考存储器单元或外围存储器单元)或晶体管将输入电流Ids转换为输入电压Vg的I到V对数转换器:
Vg=n*Vt*log[Ids/wp*Io]
此处,wp为参考存储器单元或外围存储器单元的w。
对于用作矢量矩阵乘法器VMM阵列的存储器阵列,输出电流为:
Iout=wa*Io*e(Vg)/nVt,即
Iout=(wa/wp)*Iin=W*Iin
W=e(Vthp-Vtha)/nVt
Iin=wp*Io*e(Vg)/nVt
此处,wa=存储器阵列中的每个存储器单元的w。
字线或控制栅可用作输入电压的存储器单元的输入。
另选地,本文所述的VMM阵列的非易失性存储器单元可被配置为在线性区域中操作:
Ids=β*(Vgs-Vth)*Vds;β=u*Cox*Wt/L,
Wα(Vgs-Vth),
意指线性区域中的权重W与(Vgs-Vth)成比例
字线或控制栅或位线或源极线可以用作在线性区域中操作的存储器单元的输入。位线或源极线可用作存储器单元的输出。
对于I到V线性转换器,在线性区域工作的存储器单元(例如参考存储器单元或外围存储器单元)或晶体管或电阻器可以用来将输入/输出电流线性转换成输入/输出电压。
另选地,本文所述的VMM阵列的存储器单元可被配置成在饱和区域中操作:
Ids=1/2*β*(Vgs-Vth)2;β=u*Cox*Wt/L
Wα(Vgs-Vth)2,意指权重W与(Vgs-Vth)2成比例
字线、控制栅或擦除栅可以用作在饱和区域中操作的存储器单元的输入。位线或源极线可用作输出神经元的输出。
另选地,本文所述的VMM阵列的存储器单元可用于所有区域或其组合(亚阈值、线性或饱和区域)。
美国专利申请号15/826,345描述了图9的VMM阵列33的其他实施方案,该申请以引用方式并入本文。如本文所述,源极线或位线可以用作神经元输出(电流求和输出)。
图12示出神经元VMM阵列1200,该神经元VMM阵列特别适用于图2所示的存储器单元210,并且用作输入层与下一层之间的突触。VMM阵列1200包括非易失性存储器单元的存储器阵列1203、第一非易失性参考存储器单元的参考阵列1201和第二非易失性参考存储器单元的参考阵列1202。沿阵列的列方向布置的参考阵列1201和1202用于将流入端子BLR0、BLR1、BLR2和BLR3的电流输入转换为电压输入WL0、WL1、WL2和WL3。实际上,第一非易失性参考存储器单元和第二非易失性参考存储器单元通过多路复用器1214(仅部分示出)二极管式连接,其中电流输入流入其中。参考单元被调谐(例如,编程)为目标参考电平。目标参考电平由参考微阵列矩阵(未示出)提供。
存储器阵列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中的每个位线上的电流执行来自连接到该特定位线的所有非易失性存储器单元的电流的求和函数。
表5示出用于VMM阵列1200的工作电压。表中的列指示置于用于所选单元的字线、用于未选单元的字线、用于所选单元的位线、用于未选单元的位线、用于所选单元的源极线和用于未选单元的源极线上的电压,其中FLT指示浮动,即未施加电压。行指示读取、擦除和编程操作。
表5:图12的VMM阵列1200的操作:
WL | WL-未选 | BL | BL-未选 | SL | SL-未选 | |
读取 | 0.5-3.5V | -0.5V/0V | 0.1-2V(Ineuron) | 0.6V-2V/FLT | 0V | 0V |
擦除 | 约5-13V | 0V | 0V | 0V | 0V | 0V |
编程 | 1V-2V | -0.5V/0V | 0.1-3uA | Vinh约2.5V | 4-10V | 0-1V/FLT |
图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)上。置于各源极线上的电流执行来自连接到该特定源极线的存储器单元的所有电流的求和函数。
表6示出用于VMM阵列1300的工作电压。表中的列指示置于用于所选单元的字线、用于未选单元的字线、用于所选单元的位线、用于未选单元的位线、用于所选单元的源极线和用于未选单元的源极线上的电压。行指示读取、擦除和编程操作。
表6:图13的VMM阵列1300的操作
图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)上的恒定电压。将参考单元调谐至目标参考电平。
存储器阵列1403用于两个目的。首先,它存储将由VMM阵列1400使用的权重。第二,存储器阵列1403有效地将输入(提供到端子BLR0、BLR1、BLR2和BLR3的电流输入,参考阵列1401和1402将这些电流输入转换成输入电压以提供给控制栅CG0、CG1、CG2和CG3)乘以存储在存储器阵列中的权重,然后将所有结果(单元电流)相加以产生输出,该输出出现在BL0-BLN并且将是下一层的输入或最终层的输入。通过执行乘法和加法函数,存储器阵列消除了对单独的乘法和加法逻辑电路的需要,并且也是高功效的。这里,输入提供在控制栅线(CG0、CG1、CG2和CG3)上,输出在读取操作期间出现在位线(BL0–BLN)上。置于各位线上的电流执行来自连接到该特定位线的存储器单元的所有电流的求和函数。
VMM阵列1400为存储器阵列1403中的非易失性存储器单元实现单向调谐。也就是说,每个非易失性存储器单元被擦除,然后被部分编程,直到达到浮栅上的所需电荷。这可例如使用下文所述的精确编程技术来执行。如果在浮栅上放置过多电荷(使得错误的值存储在单元中),则必须擦除单元,并且部分编程操作的序列必须重新开始。如图所示,共享同一擦除栅(诸如EG0或EG1)的两行需要一起擦除(其被称为页面擦除),并且此后,每个单元被部分编程,直到达到浮栅上的所需电荷。
表7示出用于VMM阵列1400的工作电压。表中的列指示置于用于所选单元的字线、用于未选单元的字线、用于所选单元的位线、用于未选单元的位线、用于所选单元的控制栅、用于与所选单元相同扇区中的未选单元的控制栅、用于与所选单元不同扇区中的未选单元的控制栅、用于所选单元的擦除栅、用于未选单元的擦除栅、用于所选单元的源极线、用于未选单元的源极线上的电压。行指示读取、擦除和编程操作。
表7:图14的VMM阵列1400的操作
图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中,其中每个位线对来自连接到该特定位线的非易失性存储器单元的所有电流求和。
表8示出用于VMM阵列1500的工作电压。表中的列指示置于用于所选单元的字线、用于未选单元的字线、用于所选单元的位线、用于未选单元的位线、用于所选单元的控制栅、用于与所选单元相同扇区中的未选单元的控制栅、用于与所选单元不同扇区中的未选单元的控制栅、用于所选单元的擦除栅、用于未选单元的擦除栅、用于所选单元的源极线、用于未选单元的源极线上的电压。行指示读取、擦除和编程操作。
表8:图15的VMM阵列1500的操作
图16示出神经元VMM阵列1600,该神经元VMM阵列特别适用于图2所示的存储器单元210,并且用作输入层与下一层之间的神经元的突触和部件。在VMM阵列1600中,输入INPUT0,…,INPUTN分别在位线BL0,...BLN上被接收,并且输出OUTPUT1、OUTPUT2、OUTPUT3和OUTPUT4分别在源极线SL0、SL1、SL2和SL3上生成。
图17示出神经元VMM阵列1700,该神经元VMM阵列特别适用于图2所示的存储器单元210,并且用作输入层与下一层之间的神经元的突触和部件。在该示例中,输入INPUT0、INPUT1、INPUT2和INPUT3分别在源极线SL0、SL1、SL2和SL3上被接收,并且输出OUTPUT0,...OUTPUTN在位线BL0,…,BLN上生成。
图18示出神经元VMM阵列1800,该神经元VMM阵列特别适用于图2所示的存储器单元210,并且用作输入层与下一层之间的神经元的突触和部件。在该示例中,输入INPUT0,…,INPUTM分别在字线WL0,…,WLM上被接收,并且输出OUTPUT0,...OUTPUTN在位线BL0,…,BLN上生成。
图19示出神经元VMM阵列1900,该神经元VMM阵列特别适用于图3所示的存储器单元310,并且用作输入层与下一层之间的神经元的突触和部件。在该示例中,输入INPUT0,…,INPUTM分别在字线WL0,…,WLM上被接收,并且输出OUTPUT0,...OUTPUTN在位线BL0,…,BLN上生成。
图20示出神经元VMM阵列2000,该神经元VMM阵列特别适用于图4所示的存储器单元410,并且用作输入层与下一层之间的神经元的突触和部件。在该示例中,输入INPUT0,…,INPUTn分别在竖直控制栅线CG0,…,CGN上被接收,并且输出OUTPUT1和OUTPUT2在源极线SL0和SL1上生成。
图21示出神经元VMM阵列2100,该神经元VMM阵列特别适用于图4所示的存储器单元410,并且用作输入层与下一层之间的神经元的突触和部件。在该示例中,输入INPUT0至INPUTN分别在位线控制栅极2901-1、2901-2至2901-(N-1)和2901-N的栅极上被接收,这些栅极分别耦接到位线BL0至BLN。示例性输出OUTPUT1和OUTPUT2在源极线SL0和SL1上生成。
图22示出神经元VMM阵列2200,该神经元VMM阵列特别适用于图3所示的存储器单元310、图5所示的存储器单元510和图7所示的存储器单元710,并且用作输入层与下一层之间的神经元的突触和部件。在该示例中,输入INPUT0,…,INPUTM在字线WL0,…,WLM上被接收,并且输出OUTPUT0,…,OUTPUTN分别在位线BL0,…,BLN上生成。
图23示出神经元VMM阵列2300,该神经元VMM阵列特别适用于图3所示的存储器单元310、图5所示的存储器单元510和图7所示的存储器单元710,并且用作输入层与下一层之间的神经元的突触和部件。在该示例中,输入INPUT0至INPUTM在控制栅线CG0至CGM上被接收。输出OUTPUT0,…,OUTPUTN分别在竖直源极线SL0,…,SLN上生成,其中每个源极线SLi耦接到列i中的所有存储器单元的源极线。
图24示出神经元VMM阵列2400,该神经元VMM阵列特别适用于图3所示的存储器单元310、图5所示的存储器单元510和图7所示的存储器单元710,并且用作输入层与下一层之间的神经元的突触和部件。在该示例中,输入INPUT0至INPUTM在控制栅线CG0至CGM上被接收。输出OUTPUT0,…,OUTPUTN分别在竖直位线BL0,…,BLN上生成,其中每个位线BLi耦接到列i中的所有存储器单元的位线。
测试电路和方法
图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。
输入电路块2509用作从外部输入到存储器阵列2501的输入端子的接口。输入电路块2509可包括但不限于DAC(数模转换器)、DPC(数字-脉冲转换器)、APC(模拟-脉冲转换器)、IVC(电流-电压转换器)、AAC(模拟-模拟转换器,诸如电压-电压缩放器)或FAC(频率-模拟转换器)。输出电路块2508用作从存储器阵列输出到外部接口的接口(未示出)。输出电路块2508可包括但不限于ADC(模数转换器)、APC(模拟-脉冲转换器)、DPC(数字-脉冲转换器)、IVC(电流-电压转换器)或IFC(电流-频率转换器)。输出电路块2508可包括但不限于激活功能、归一化电路和/或重新缩放电路。
低电压行解码器2502为读取操作和编程操作提供偏置电压,并且为高电压行解码器2503提供解码信号。高电压行解码器2503为编程操作和擦除操作提供高电压偏置信号。
算法控制器2510为处于编程、验证和擦除操作期间的位线提供控制功能。
高压发生器块2511包括电荷泵2512、电荷泵调节器2513和高压生成电路2514,该高压生成电路提供各种编程、擦除、编程验证和读取操作所需的多个电压。
测试控制逻辑部件2517含有用于执行下文参考图26-图31描述的测试的各种测试控制电路。
图26示出参考电流源2600,该参考电流源在一个或多个非易失性存储器单元的程序操作之后的验证操作期间使用,或在其它类型的测试期间使用。例如,参考电流源2600可用于单个非易失性存储器单元的验证操作,或者用于一列非易失性存储器单元的验证操作(例如,连接到特定位线的全部单元)或非易失性存储器单元的一些其它分组。
参考电流源2600包括缓冲镜2601(该缓冲镜包括带有输出IREF 2607的缓冲运算放大器2602和PMOS晶体管2603)、可调偏置源2604和二维阵列2605,该二维阵列包括设备2606的i行和j列的阵列,其中特定设备2606由标签2606-(行)(列)标注。此处,可激活设备2606的各种组合,使得可调整由缓冲镜2601输出的参考电流IREF 2607的量。如图所示,阵列2605中存在16个设备2606,其中每个设备可以由电流镜实现。参考电流源2600基本上将4数字输入转换成参考电流偏置,该参考电流偏置的值为Ibiasunit的1至16倍,其中Ibiasunit是从偏置源2604提供的。参考电流源2600基本上是温度计编码的数字-电流转换器,其缓冲输出IREF 2607是对应于16个电平中的1个电平的值,特定电平响应于4个数字输入,该值可以由先前讨论的任何VMM阵列中的存储器单元存储。
例如,偏置源2604可提供1nA的电流Ibiasunit,该电流被镜像到设备2606中。此处,第一行由设备2606-11至2606-1j组成,并且从左到右顺序地启用,一次启用一个设备2606。然后从左到右以顺序方式启用下一行以添加到第一行,这意味着启用5个,然后6个,然后7个,然后8个设备2606。通过顺序地启用设备2606,可避免与常规二进制解码相关联的晶体管失配问题。启用设备2606的总和然后由缓冲器镜2601镜像,并且输出作为电流IREF2607。偏置源2604可提供可微调的电流Ibiasunit范围,诸如50pA/100pA/200pA/.../100nA。此处的阵列2605被示出为4×4阵列,但是应当理解,阵列2605可以具有其它尺寸,诸如32×32或8×32。
图27示出参考子电路2700,该参考子电路可用于图26中的设备2606中的任一者。参考子电路2700包括如图所示配置的NMOS晶体管2701和2702。晶体管2702是电流镜偏置晶体管,该晶体管在其栅极上接收电流Ibiasunit(上文参考图26讨论),并且晶体管2701是启用晶体管(以使电流镜偏置晶体管2702能够连接到输出节点OUTPUT)。电流Ibiasunit诸如由二极管连接的NMOS晶体管(类似于晶体管2702)(未示出)提供。
图28示出在一个非易失性存储器单元、一列非易失性存储器单元或非易失性存储器单元的一些其它分组的编程操作后的验证操作期间,或在另一种类型的测试期间将与参考电流源2600一起使用的读出放大器2800。读出放大器2800接收电流IREF 2607,如上文参考图26所讨论。IREF 2607可以被建模为PMOS晶体管2813,其中栅极由VIREF 2814控制。读出放大器2800进一步包括反相器2801、电流源2802(该电流源用于限制反相器2801中的电流)、开关2803和2806、电容器2804和泻落NMOS晶体管2805(以在存储器位线上施加固定电压)。读出放大器2800从参考电流源2600接收电流IREF 2607,该电流可以是例如十六个可能的电平中的一者,以存储在VMM阵列的非易失性存储器单元中。读出放大器2800耦合到单元2808,该单元是其内容要验证的非易失性存储器单元。当NMOS晶体管2805打开时,单元2808消耗电流ICELL。另选地,可以用列2809替换单元2808(为了便于附图,该列将消耗将仍称为ICELL的电流,该电流将是列2809消耗的神经元电流)。
在实施方案中,IREF 2607开始于最低可能值(例如,可以存储在单元2808中或列2809中的16个可能电平中的最低电平),且然后依次增加到每个后续电平以进行验证操作。开关2806可以闭合以产生电容器2804的初始状态(诸如接地或预充电电压以提供偏移消除)。开关2803可以闭合以均衡反相器2801的输入和输出,这会移除相对于反相器2801的偏移以便在验证操作中进行比较。在验证操作期间,开关2806和2803被断开。如果ICELL>=IREF2607,则节点2810上的电压将减小,这又通过电容器2804电容耦合,从而使节点2811上的电压减小,从而导致反相器输出切换到“1”,这意味着反相器2801的输入将是“0”值,并且反相器2801的输出将为“1”值。如果ICELL<IREF 2607,则节点2810上的电压将上升,这又通过电容器2804电容耦合,从而使节点2811上的电压升高,从而导致反相器输出切换到“0”,这意味着反相器2801的输入将切换到“1”值并且反相器2801的输出将切换到“0”值。此时发生的IREF 2807的值对应于存储在单元2808中的值。
图29A示出在程序脉冲操作之后非易失性存储器单元2930或列2931的验证操作期间将与参考电流源2600一起使用的验证倾斜模数转换器(ADC)2900,诸如以验证存储器单元是否在重量调谐过程期间或在另一种类型的测试期间是否达到目标电流,诸如以便验证存储器阵列中的拖尾存储器位(例如,异常位),该拖尾存储器位无法满足单元电流要求。ICELL 2906是来自单元2930或列2931的输出电流。验证ADC 2900将ICELL2906转换为输出为输出2940的一系列数字输出位,其中输出2940指示存储在单元2930或列2931中的值。
验证ADC 2900包括运算放大器2901、可调电容器2902、运算放大器2904、计数器2920以及开关2908、2909和2910。可调电容器2902对ICELL2906相对于由可调整电流源2807提供的电流IREF进行积分。在初始化阶段期间,开关2908闭合。运算放大器2901的Vout 2903和运算放大器2901的反相输入的输入将变成等于施加到运算放大器2901的非反相输入的参考电压VREF的值。此后,开关2908断开,并且在固定时间段tref期间,开关2910闭合,并且神经元电流ICELL 2906被向上积分。在固定时间段tref期间,Vout 2903上升,并且其斜率反映ICELL 2906的值。此后,在时间段tmeas期间,通过断开开关2910并闭合开关2909,由可调电流源2807提供的恒定参考电流IREF被向下积分,在该时间段Vout下降,其中tmeas是将Vout向下积分到VREF所需的时间。
当VOUT 2903>VREF时,运算放大器2904的输出EC 2905将为高,反之则将为低。EC2905因此生成脉冲,该脉冲的宽度反映时间段tmeas,其反过来与电流ICELL 2906成正比。
任选地,输出EC 2905被输入到计数器2920,该计数器在输出EC2905为高时对接收到的时钟脉冲2921数量进行计数,并且将生成输出2940,该输出将是表示当EC 2905为高时发生的时钟脉冲2921数量的数字计数的数字位集,该数量直接与ICELL 2906成正比,其对应于存储在单元2930或列2931中的值。
图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电流。超过两个粗略/精细步骤或超过两个子范围是可能的。
其它ADC体系架构可以用作验证ADC,诸如闪存ADC、SAR(逐次逼近寄存器)ADC、算法ADC、流水线ADC、Σ-ΔADC,但不受限制。
图30示出先前参考图25描述的高压生成电路2511的实施方案。高压生成电路2511可与先前讨论的任何VMM阵列一起使用。高压生成电路2511包括电荷泵2512和高压生成电路2514。电荷泵2512接收输入3004并且生成高电压3005,该高电压进而被提供给高压发生器3002和3003。高压(HV)发生器(HVDAC_EG)3002是HV数模转换器,其响应于数字位3006及所接收的高电压3005提供电压,表示为VEG 3008,诸如增量电压,适合施加至分裂栅闪存存储器单元的擦除栅极端子。高压发生器(HVDAC CGSL)3003是HV数模转换器,其响应于数字位3007及所接收的高电压3005提供电压,分别表示为VCG 3009和VSL 3010,诸如增量电压,适合施加至分裂栅闪存存储器单元的控制栅极端子和源极线端子。
图31示出先前参考图25描述的VMM系统2500,但是此处以测试配置示出。测试控制逻辑部件2517向VMM系统2500的其它组件(在图25中示出,但在图31中未示出)提供控制信号,诸如VMM阵列2501、行解码器2502、列解码器2504、输入块2509、高压解码器2503、列驱动器2505、高压生成块2511、模拟块2515、算法控制器2510和输出电路块2508以实现一个或多个测试算法3100。VMM阵列2501从行解码器2502接收控制信号,由此在VMM阵列2501内断言一个或多个行。VMM阵列2501将信号从一个或多个位线提供给列解码器2504,然后该列解码器将输出从一个或多个位线提供到输出电路块2508。输出电路块2508可以包括模数转换器块(如先前参考图29A描述的验证ADC 2900或先前参考图29B描述的验证斜坡ADC 2950),该模数转换器块提供表示由输出电路块2508从VMM阵列2501接收的模拟电流的数字输出。
表9包含将在单独存储器单元上执行的程序、擦除、读取和验证操作期间施加至VMM阵列2501内的字线、控制栅极线、擦除栅极线、源极栅极线和位线的示例性值;验证在耦合到一列存储器单元的所选择的位线上执行的神经元和读取神经元操作;以及读取阵列操作,由此读取每个位线,其中每个位线耦合到一列存储器单元。
表9:VMM阵列2501内操作的示例性值
现在将提供可以参考图31中示出的测试算法3100执行并且在图32-图44中进一步详细地描述的测试类型的进一步细节,其由测试控制逻辑部件2517和VMM系统2500的其它组件来实现。
参考图32,位线神经读取测试3101测量同时耦合到位线的全部存储器单元中的值。即,位线神经读取测试3101读取VMM阵列中的神经元。首先,行解码器2502断言阵列中的全部字线(步骤3201)。第二,由列解码器2504选择(断言)位线(步骤3202)。第三,在该位线上执行读取,例如由感测从位线接收的电流的读出放大器2800(步骤3203)。第四,可以通过比较由参考电流源2600生成的参考电流来确定所选择的位线的值,以确定耦合到所选择的位线的非易失性存储器单元(即神经元)是否包含期望的值(步骤3204)。
参考图33,位线神经测量测试3102类似于位线神经读取测试3101。行解码器2502断言全部字线(步骤3301)。由列解码器2504选择位线(步骤3302)。测量在读取操作期间由该位线消耗的电流(步骤3303)。这里,与位线神经读取测试3101不同,来自所选择的位线的电流被测量而无需与参考电流进行比较。
参考图34,在LSB屏幕测试3103期间,行解码器2502断言全部字线(步骤3401),并且列解码器2504断言全部位线(步骤3402)。在VMM阵列2501中的全部存储器单元上执行深度编程(步骤3403)。深度编程将编程超出用于推断读取的正常程序状态的全部存储器单元。与操作中通常使用的程序定时或程序电压相比,它是以更长的程序定时或更高的程序电压进行。然后测量从全部位线接收的总电流(步骤3404)。预期深度编程阵列的总电流将远小于LSB值。另外,检查每个单独的单元以确保来自单独的单元的电流也低于LSB值,诸如50-100pA。这种类型的测试适用于在制造过程期间进行测试,以快速识别不良裸片。
参考图35,在位线采样屏幕测试3104期间,一个存储器单元或一组存储器单元被编程到特定电平,例如,Lx,其中x的范围是从1到N,其中N是可以存储在单元中的电平总数(例如,N=16)(步骤3501)。然后将位线电流(意指由所选择的位线中的一个单元或一组单元消耗的电流,称为IBL)测量K次(步骤3502)。例如,如果K=8,则将位线电流测量8次。然后基于步骤3502的K个测量值(即,IBL1…IBLK)来计算平均值(IAVG)(步骤3503)。
接下来,针对IAVG检查K个电流测量结果IBL1…IBLK中的每一者(步骤3504)。如果IBLi(其中i的范围是从i到K)>(IAVG+阈值3505)或IBLi<(IAVG–-阈值3506),则认为位线不良。然后检查不良位线中的每个单元,并且用冗余单元(来自冗余行或冗余列的此类单元)替换不良单元。
图36中示出位线采样屏幕测试3104的另一个实施方案。通过迫使电流Iref在K个不同时间进入位线来测量电压VCG(步骤3601)。例如,电压VCG可以扫描直到位线电流匹配固定Iref,并且可以测量和存储特定VCG。固定Iref可以由参考电流源2600提供,并且验证位线电流是否匹配固定Iref的操作可以由读出放大器2800执行。然后,从K个不同的VCG值计算平均值VAVG。接下来,针对VAVG检查K个测量的VCG电压中的每一者(步骤3603)。如果VCGi(其中i的范围从i到K)>(VAVG+阈值3604)或VCGi<(VAVG-阈值3605),则认为位线不良。然后检查不良位线中的每个单元,并用冗余单元(冗余行或冗余列)替换不良单元。
在读取跳变点测试3105期间,在读取操作中使用不同电平的Iref执行粗略及精细读取参考电流修剪。读取跳变点测试3105的目的是示出所选择的存储器单元是否可以通过预先确定的电流百分比目标,诸如对于擦除单元约40%的完全擦除单元或对于编程单元约5%的完全编程单元。这诸如以确保存储器单元在主要分布内,而不是拖尾存储器单元或拖尾位(即,统计异常值),因为拖尾存储器单元或拖尾位可以在操作寿命内引起潜在可靠性问题。
参考图37,在读取窗口检查测试3107期间,测试单元以确保其能够存储N个可能电平中的每一者。首先,将单元编程到表示N个值中的一者的目标值(步骤3701)。接下来,执行验证操作以确定存储在该单元中的值是否在目标值周围的值的可接受窗口3710内(步骤3702)。针对N个值中的每一者重复步骤3701和3702(步骤3703)。对于每个N值,可接受的窗口3710可以是不同的。如果正在执行的步骤3702的任何情况指示存储在该单元中的值在目标值周围的可接受值窗口之外,则该单元被识别为不良。读取窗口检查测试3107可以由读出放大器2800、ADC 2900、ADC 2950或另一组件执行。这对于对存储器单元执行权重调谐可能是有用的。以上已经在其中针对以标称值为中心的N个值中的每一者使用固定窗口的实施方案中作出解释,应当理解,在另一实施方案中,对于N个值中的每个值利用上阈值和下阈值,并且这些阈值在全部N个值之间不必相同,且不超过这一范围。
参考图38,在读取校准测试3108期间,测量一个单元或一组单元诸如耦合到位线的单元的渗漏(步骤3801),存储所测量的渗漏(ILEAKAGE)(步骤3802),并且稍后在读取操作期间使用所测量的渗漏值来补偿在处理/电压/温度(PVT)的各种组合上的渗漏(步骤3803)。在一个实施方案中,各自用已知值编程多个单元。字线和控制栅极线被设置为接地,并且位线被设置为读取偏置电压。将不同参考电流的序列注射到阵列中,并且通过诸如ADC电路2900或2950或者读出放大器2800等读出放大器读取所得数据读出。产生最佳结果(与编程到单元中的已知值相比)的所注入电流被存储为ILEAKAGE。此后,ILEAKAGE在相同单元的读取操作期间应用,诸如通过在读取操作期间从转换数据中减去所存储的渗漏电平以补偿在所选择的单元内发生的渗漏。
参考图39,在读取斜率测试3109期间,针对两个参考电流,即电流IR1处的CG1和电流IR2处的CG2,确定控制栅极电压的I-V斜率因子。第一步是当所选择的非易失性存储器单元在亚阈值区域中操作时,确定所选择的非易失性存储器单元的对数斜率因子(步骤3901)。第二步是存储对数斜率因子(步骤3902)。第三步是当所选择的非易失性存储器单元在线性区域中操作时,确定所选择的非易失性存储器单元的线性斜率因子(步骤3903)。第四步骤是存储线性斜率因子(步骤3904)。第五步是当将所选择的单元编程到目标电流时,利用对数斜率因子和线性斜率因子中的一者或多者(步骤3905)。
参考图40,在读取神经元鉴定测试3110期间,读取神经元(位线),而无需针对期望的值检查该值。第一步是测量位线中的电流并存储所测量的值(步骤4001)。第二步是执行如下所述的读取虚拟神经元测试4010,持续预先确定的时间量,例如鉴定过程期间的老化时间。第三步是测量来自位线的电流(步骤4003)。第四步将所测量的电流与来自步骤4001的所存储的测量电流进行比较(步骤4004)。如果差值大于或小于某一量,则将该位线视为不良位线。
读取虚拟神经元测试4010包括一系列步骤。第一步是由行解码器断言阵列中的全部字线(步骤4011)。第二步是由列解码器断言阵列中的全部位线以选择非易失性存储器单元的全部列(步骤4012)。第三步是在不检查读取输出的情况下在阵列上执行读取操作(读取条件)(步骤4013)。读取虚拟神经元测试4010用作阵列上的读取应力以用于老化目的。
参考图41,在软擦除测试3111期间,测试整个阵列或区段部分以检查存储器阵列的擦除性能。第一步是通过在该阵列中的非易失性存储器单元中的每个非易失性存储器单元的端子上施加序列电压来擦除该阵列中的非易失性存储器单元,其中序列电压中的电压以固定的步长大小随时间推移增加(步骤4101)。这以增量方式擦除单元,例如,通过以5-12.5伏之间的阶梯式方式在以例如0.5或1伏的阶差增加擦除栅上的电压。以这种方式擦除可减少存储器单元上的应力。第二步是读取全部非易失性存储器单元以确定擦除步骤的效果(步骤4102),例如通过确定在步骤4101的擦除之后的单元电流在标称值周围的可接受的窗口内。任选地,可以执行耐久性测试以确定可以维持多少程序/擦除循环,或者可以执行背景测试以使该阵列转变为擦除状态。
参考图42,在软程序测试3112期间,测试整个阵列或一行或一个单元。第一步是通过在该阵列中的每个非易失性存储器单元的端子上施加序列电压来编程该阵列中的非易失性存储器单元,其中序列电压中的电压以固定的步长大小随时间推移增加(步骤4201)。以增量方式,例如在3-10伏之间以10mV或0.3V或1V阶差来编程这些单元,以检查存储器阵列的程序性能。以这种方式编程可减少存储器单元上的应力。第二步是读取全部非易失性存储器单元以确定编程步骤的效果(步骤4202),例如通过确定在步骤4201的编程之后的单元电流在标称值周围的可接受的窗口内。任选地,可以利用耐久性测试或背景测试。
参考图43,可以执行读取验证测试3106。第一步是对多个非易失性存储器单元进行编程以存储N个不同值中的一者,其中N是可以存储在任何非易失性存储器单元中的不同电平的数量(步骤4301)。第二步是测量由该多个非易失性存储器单元消耗的电流(步骤4302)。第三步将所测量的电流与目标值进行比较(步骤4303)。第四步是如果测量值与目标值之间的差超过阈值因子,则对将该多个非易失性存储器单元识别为不良进行存储(步骤4304)。
参考图44,可以执行棋盘验证测试3113,由此测试图案使用棋盘或伪棋盘图案来实现,并且测量采样电平,而不是全部可能的电平(例如,4个电平,L0、Ln、Ln/4、Ln*3/4,而不是全部N个电平)。例如,可以使用图案来检查存储器阵列内的最坏情况下的电场应力(意味着一个单元处于高电场水平,并且相邻单元处于低电场水平)。
在一个实施方案中,第一步是对该多个非易失性存储器单元中的电平对应于N个电平中的最小单元电流的第一组单元进行编程(步骤4401)。第二步是对该多个非易失性存储器单元中电平对应于N个电平中的最大单元电流的单元的第二组单元进行编程(步骤4402)。第二组单元中的每个单元与第一组单元中的一个或多个单元相邻。第三步是测量由该多个非易失性存储器单元消耗的电流(步骤4403)。第四步将所测量的电流与目标值进行比较(步骤4404)。第五步是如果测量值与目标值之间的差超过阈值,则对将该多个非易失性存储器单元识别为不良(步骤4405)。
表10含有可以在棋盘验证测试3113期间使用的物理阵列地图的其它示例性测试图案:
表10:示例性测试图案
分选测试3114、最终测试3115、鉴定测试3116和数据保留测试3117是可在包含本文公开的VMM系统的晶片、裸片或封装的装置的制造和鉴定过程期间执行的测试套装。
可以在制造过程期间对晶片执行分选测试3114。在一个实施方案中,分选测试3114包括以下测试集:首先,执行相对fasts测试以快速识别不良晶片或裸片,诸如软擦除测试3111、软程序测试3112和各种应力模式测试(诸如擦除栅极氧化物gox、耦合栅极氧化物cox、源极线氧化物sol、反向干扰隧穿rtsts(从浮栅隧穿到字线、对未选择的行的干扰)、质量穿通mpt(未选择行的源极到漏极的干扰)、读取干扰rdist(来自读取条件的干扰))。其次,执行用于顶部区段部分和底部区段部分的神经测试模式,例如LSB屏幕测试3103和位线采样屏幕3104。与在第一步期间执行的测试相比,神经测试模式更耗时,并且由于在第一组较不耗时的测试期间识别筛选出的不良晶片或裸片而节省了一段时间。
可以在封装的装置上执行最终测试3115。在一个实施方案中,最终测试3115包括软擦除测试3111和软程序测试3112的性能。任选地,可以利用用于神经应用的测试图案来减少测试时间而不是全面测试,诸如测试M个区段部分的N个电平中的K个,或测试某些区段部分(诸如顶部区段部分和底部区段部分)的全部N个电平。
在鉴定测试3116期间,执行虚拟位线读取循环(其是读取动作的性能而实际上不确定读取数据的内容),并且通过应用软擦除测试3111和软程序测试3112来完成耐久性测试。执行位线测试,而不是单独的存储器单元测试,因为使用位线读取代替神经存储器应用期间的单独存储器读取。
数据保留测试3117可以包括例如在高温例如250摄氏度下烘烤所编程的晶片,持续24-72小时。在一个实施方案中,施加棋盘或伪棋盘测试图案,而不是关于数字存储器测试的全面测试。在具有读取位线电流模式的神经模式(代替如同对数字存储器所进行的那样每个存储器单元)中,在位线电流上检查数据保留。例如,一个查询是检查ΔIBL是否<+/-p%,其中ΔIBL被定义为来自期望位线电流的所测量的位线电流的差异。(WholeBLmeas模式,用于神经网络的目标准确度的软件神经网络建模允许的百分比误差p%)。测试ΔIBL的神经模式以识别位线输出电流是否超过或低于目标,在本文中定义为目标的预先确定的百分比“p”。另选地,可以用目标的+/-Δ检查/测试每个单元。
可以使用本文所述的硬件和算法来执行其它测试。
应当指出,如本文所用,术语“在…上方”和“在…上”两者包容地包含“直接在…上”(之间未设置中间材料、元件或空间)和“间接在…上”(之间设置有中间材料、元件或空间)。类似地,术语“相邻”包括“直接相邻”(之间没有设置中间材料、元件或空间)和“间接相邻”(之间设置有中间材料、元件或空间),“安装到”包括“直接安装到”(之间没有设置中间材料、元件或空间)和“间接安装到”(之间设置有中间材料、元件或空间),并且“电耦接至”包括“直接电耦接至”(之间没有将元件电连接在一起的中间材料或元件)和“间接电耦接至”(之间有将元件电连接在一起的中间材料或元件)。例如,“在衬底上方”形成元件可包括在两者间没有中间材料/元件的情况下在衬底上直接形成元件,以及在两者间有一个或多个中间材料/元件的情况下在衬底上间接形成元件。
Claims (30)
1.一种验证编程到模拟神经非易失性存储器单元阵列中的多个非易失性存储器单元中的值的方法,其中所述阵列按行和列布置,其中每行耦合到字线,且每列耦合到位线,并且其中每一字线选择性地耦合到行解码器,且每一位线选择性地耦合到列解码器,所述方法包括:
由所述行解码器断言所述阵列中的全部字线;
由所述列解码器断言所述阵列中的位线;
由读出放大器感测从所述位线接收的电流;以及
将所述电流与参考电流进行比较以确定耦合到所述位线的所述非易失性存储器单元是否包含期望值。
2.根据权利要求1所述的方法,其中所述非易失性存储器单元中的每个非易失性存储器单元是叠栅闪存存储器单元。
3.根据权利要求1所述的方法,其中所述非易失性存储器单元中的每个非易失性存储器单元是分裂栅闪存存储器单元。
4.根据权利要求1所述的方法,其中所述阵列是神经网络的一部分。
5.一种测量由模拟神经非易失性存储器单元阵列中的多个非易失性存储器单元消耗的电流的方法,其中所述阵列按行和列布置,其中每行耦合到字线,且每列耦合到位线,并且其中每一字线选择性地耦合到行解码器,且每一位线选择性地耦合到列解码器,所述方法包括:
由所述行解码器断言所述阵列中的全部字线;
由所述列解码器断言所述阵列中的位线;以及
测量从所述位线接收的电流。
6.根据权利要求5所述的方法,其中所述非易失性存储器单元中的每个非易失性存储器单元是叠栅闪存存储器单元。
7.根据权利要求5所述的方法,其中所述非易失性存储器单元中的每个非易失性存储器单元是分裂栅闪存存储器单元。
8.根据权利要求5所述的方法,其中所述阵列是神经网络的一部分。
9.一种测试非易失性存储器单元阵列中的多个模拟神经非易失性存储器单元的方法,其中所述阵列按行和列布置,其中每行耦合到字线,且每列耦合到位线,并且其中每一字线选择性地耦合到行解码器,且每一位线选择性地耦合到列解码器,所述方法包括:
由所述行解码器断言所述阵列中的全部字线;
由所述列解码器断言所述阵列中的全部位线;
对所述阵列中的全部非易失性存储器单元执行深度编程操作;以及
测量从位线接收的总电流。
10.根据权利要求9所述的方法,其中所述非易失性存储器单元中的每个非易失性存储器单元是叠栅闪存存储器单元。
11.根据权利要求9所述的方法,其中所述非易失性存储器单元中的每个非易失性存储器单元是分裂栅闪存存储器单元。
12.根据权利要求9所述的方法,其中所述阵列是神经网络的一部分。
13.一种补偿模拟神经非易失性存储器单元阵列中的渗漏的方法,其中所述阵列按行和列布置,其中每行耦合到字线,并且每列耦合到位线,所述方法包括:
测量耦合到位线的一列非易失性存储器单元的渗漏;
存储所测量的渗漏值;以及
在所述一列非易失性存储器单元的读取操作期间施加所述所测量的渗漏值以补偿所述渗漏。
14.根据权利要求13所述的方法,其中所述非易失性存储器单元中的每个非易失性存储器单元是叠栅闪存存储器单元。
15.根据权利要求13所述的方法,其中所述非易失性存储器单元中的每个非易失性存储器单元是分裂栅闪存存储器单元。
16.根据权利要求13所述的方法,其中所述阵列是神经网络的一部分。
17.一种测试模拟神经非易失性存储器单元阵列中所选择的非易失性存储器单元的方法,所述方法包括:
当所述所选择的非易失性存储器单元在亚阈值区域中操作时,确定所述所选择的非易失性存储器单元的对数斜率因子;
存储所述对数斜率因子;
当所述所选择的非易失性存储器单元在线性区域中操作时,确定所述所选择的非易失性存储器单元的线性斜率因子;
存储所述线性斜率因子;以及
当将所选择的单元编程到目标电流时,利用对数斜率因子和线性斜率因子中的一者或多者。
18.根据权利要求17所述的方法,其中所述非易失性存储器单元中的每个非易失性存储器单元是叠栅闪存存储器单元。
19.根据权利要求17所述的方法,其中所述非易失性存储器单元中的每个非易失性存储器单元是分裂栅闪存存储器单元。
20.根据权利要求17所述的方法,其中所述阵列是神经网络的一部分。
21.一种测试模拟神经非易失性存储器单元阵列的方法,所述方法包括:
通过在所述阵列中的所述非易失性存储器单元中的每个非易失性存储器单元的端子上施加序列电压来擦除所述阵列中的所述非易失性存储器单元,其中所述序列电压中的电压以固定的步长大小随时间推移增加;以及
读取全部所述非易失性存储器单元以确定擦除步骤的效果。
22.根据权利要求21所述的方法,其中所述端子是擦除栅极端子。
23.根据权利要求21所述的方法,其中所述非易失性存储器单元中的每个非易失性存储器单元是叠栅闪存存储器单元。
24.根据权利要求21所述的方法,其中所述非易失性存储器单元中的每个非易失性存储器单元是分裂栅闪存存储器单元。
25.根据权利要求21所述的方法,其中所述阵列是神经网络的一部分。
26.一种测试模拟神经非易失性存储器单元阵列的方法,所述方法包括:
通过在所述阵列中的每个非易失性存储器单元的端子上施加序列电压来编程所述阵列中的所述非易失性存储器单元,其中所述序列电压中的电压以固定的步长大小随时间推移增加;
读取全部所述非易失性存储器单元以确定编程步骤的效果。
27.根据权利要求26所述的方法,其中所述端子是字线端子。
28.根据权利要求26所述的方法,其中所述非易失性存储器单元中的每个非易失性存储器单元是叠栅闪存存储器单元。
29.根据权利要求26所述的方法,其中所述非易失性存储器单元中的每个非易失性存储器单元是分裂栅闪存存储器单元。
30.根据权利要求26所述的方法,其中所述阵列是神经网络的一部分。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201962876515P | 2019-07-19 | 2019-07-19 | |
US62/876,515 | 2019-07-19 | ||
US16/569,611 | 2019-09-12 | ||
US16/569,611 US11393546B2 (en) | 2019-07-19 | 2019-09-12 | Testing circuitry and methods for analog neural memory in artificial neural network |
PCT/US2019/068201 WO2021015812A1 (en) | 2019-07-19 | 2019-12-21 | Testing circuitry and methods for analog neural memory in artificial neural network |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114127854A true CN114127854A (zh) | 2022-03-01 |
Family
ID=69187978
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980098528.8A Pending CN114127854A (zh) | 2019-07-19 | 2019-12-21 | 用于人工神经网络中的模拟神经存储器的测试电路和方法 |
Country Status (7)
Country | Link |
---|---|
US (2) | US11393546B2 (zh) |
EP (1) | EP4000069A1 (zh) |
JP (1) | JP2022540723A (zh) |
KR (1) | KR20220016505A (zh) |
CN (1) | CN114127854A (zh) |
TW (2) | TW202326740A (zh) |
WO (1) | WO2021015812A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11449741B2 (en) * | 2019-07-19 | 2022-09-20 | Silicon Storage Technology, Inc. | Testing circuitry and methods for analog neural memory in artificial neural network |
US20210350217A1 (en) * | 2020-05-10 | 2021-11-11 | Silicon Storage Technology, Inc. | Analog neural memory array in artificial neural network with source line pulldown mechanism |
CN113761793B (zh) * | 2021-08-16 | 2024-02-27 | 固德威技术股份有限公司 | 逆变器输出阻抗检测装置及方法、逆变器运行控制方法 |
US20240087653A1 (en) * | 2022-09-08 | 2024-03-14 | Micron Technology, Inc. | Weight Calibration Check for Integrated Circuit Devices having Analog Inference Capability |
Family Cites Families (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5029130A (en) | 1990-01-22 | 1991-07-02 | Silicon Storage Technology, Inc. | Single transistor non-valatile electrically alterable semiconductor memory device |
KR960009033B1 (en) * | 1991-07-17 | 1996-07-10 | Toshiba Kk | Semiconductor memory |
FR2690751B1 (fr) | 1992-04-30 | 1994-06-17 | Sgs Thomson Microelectronics | Procede et circuit de detection de fuites de courant dans une ligne de bit. |
JP4131902B2 (ja) * | 1999-12-27 | 2008-08-13 | 株式会社東芝 | 不揮発性半導体メモリおよびそのスレシホールド電圧制御方法 |
US6452837B2 (en) * | 1999-12-27 | 2002-09-17 | Kabushiki Kaisha Toshiba | Nonvolatile semiconductor memory and threshold voltage control method therefor |
US6768685B1 (en) | 2001-11-16 | 2004-07-27 | Mtrix Semiconductor, Inc. | Integrated circuit memory array with fast test mode utilizing multiple word line selection and method therefor |
US6850438B2 (en) | 2002-07-05 | 2005-02-01 | Aplus Flash Technology, Inc. | Combination nonvolatile memory using unified technology with byte, page and block write and simultaneous read and write operations |
US6747310B2 (en) | 2002-10-07 | 2004-06-08 | Actrans System Inc. | Flash memory cells with separated self-aligned select and erase gates, and process of fabrication |
US7177183B2 (en) * | 2003-09-30 | 2007-02-13 | Sandisk 3D Llc | Multiple twin cell non-volatile memory array and logic block structure and method therefor |
US7050344B1 (en) | 2004-11-04 | 2006-05-23 | Promos Technologies Inc. | Failure test method for split gate flash memory |
US7652929B2 (en) | 2007-09-17 | 2010-01-26 | Sandisk Corporation | Non-volatile memory and method for biasing adjacent word line for verify during programming |
US8750042B2 (en) | 2011-07-28 | 2014-06-10 | Sandisk Technologies Inc. | Combined simultaneous sensing of multiple wordlines in a post-write read (PWR) and detection of NAND failures |
US8711646B2 (en) | 2012-05-08 | 2014-04-29 | Samsung Electronics Co., Ltd. | Architecture, system and method for testing resistive type memory |
US9070481B1 (en) | 2014-05-30 | 2015-06-30 | Sandisk Technologies Inc. | Internal current measurement for age measurements |
US9449694B2 (en) | 2014-09-04 | 2016-09-20 | Sandisk Technologies Llc | Non-volatile memory with multi-word line select for defect detection operations |
US10310734B2 (en) | 2014-12-27 | 2019-06-04 | Intel Corporation | Tier mode for access operations to 3D memory |
KR102444604B1 (ko) | 2016-02-02 | 2022-09-21 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그것의 동작 방법 |
US11308383B2 (en) | 2016-05-17 | 2022-04-19 | Silicon Storage Technology, Inc. | Deep learning neural network classifier using non-volatile memory array |
JP6249504B1 (ja) * | 2016-08-24 | 2017-12-20 | ウィンボンド エレクトロニクス コーポレーション | 半導体記憶装置 |
US10403357B2 (en) * | 2017-09-18 | 2019-09-03 | Nxp Usa, Inc. | Resistive non-volatile memory and a method for sensing a memory cell in a resistive non-volatile memory |
US10748630B2 (en) | 2017-11-29 | 2020-08-18 | Silicon Storage Technology, Inc. | High precision and highly efficient tuning mechanisms and algorithms for analog neuromorphic memory in artificial neural networks |
US11354562B2 (en) | 2018-01-03 | 2022-06-07 | Silicon Storage Technology, Inc. | Programmable neuron for analog non-volatile memory in deep learning artificial neural network |
CN111199767B (zh) | 2018-11-16 | 2022-08-16 | 力旺电子股份有限公司 | 非易失性存储器良率提升的设计及测试方法 |
US10991430B2 (en) * | 2018-12-19 | 2021-04-27 | Ememory Technology Inc. | Non-volatile memory cell compliant to a near memory computation system |
US11487464B2 (en) * | 2019-07-03 | 2022-11-01 | Micron Technology, Inc. | Neural network memory |
-
2019
- 2019-09-12 US US16/569,611 patent/US11393546B2/en active Active
- 2019-12-21 JP JP2022503817A patent/JP2022540723A/ja active Pending
- 2019-12-21 WO PCT/US2019/068201 patent/WO2021015812A1/en unknown
- 2019-12-21 KR KR1020217043444A patent/KR20220016505A/ko not_active IP Right Cessation
- 2019-12-21 EP EP19842521.7A patent/EP4000069A1/en active Pending
- 2019-12-21 CN CN201980098528.8A patent/CN114127854A/zh active Pending
-
2020
- 2020-06-08 TW TW112111051A patent/TW202326740A/zh unknown
- 2020-06-08 TW TW109119122A patent/TWI800734B/zh active
-
2022
- 2022-06-13 US US17/839,294 patent/US11783904B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
WO2021015812A1 (en) | 2021-01-28 |
US11783904B2 (en) | 2023-10-10 |
US11393546B2 (en) | 2022-07-19 |
JP2022540723A (ja) | 2022-09-16 |
US20210020255A1 (en) | 2021-01-21 |
US20220319619A1 (en) | 2022-10-06 |
TW202326740A (zh) | 2023-07-01 |
EP4000069A1 (en) | 2022-05-25 |
TW202105399A (zh) | 2021-02-01 |
TWI800734B (zh) | 2023-05-01 |
KR20220016505A (ko) | 2022-02-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI815065B (zh) | 在向量矩陣乘法陣列之讀取操作期間補償漂移誤差之電路及方法 | |
TWI753492B (zh) | 用於人工神經網路中之類比神經記憶體的測試電路及方法 | |
CN114127854A (zh) | 用于人工神经网络中的模拟神经存储器的测试电路和方法 | |
US20220319620A1 (en) | Testing of analog neural memory cells in an artificial neural network | |
TWI819298B (zh) | 包含邏輯單元之人工神經網路中之類比神經記憶體陣列及經改良之程式化機制 | |
TW202341014A (zh) | 深度學習人工神經網路中電性參數的校準 | |
TWI809663B (zh) | 用於人工神經網路中之類比神經記憶體之精確資料調校方法及裝置 | |
CN115968495A (zh) | 用于人工神经网络中的模拟神经存储器阵列的自适应偏置解码器 | |
KR20220160078A (ko) | 소스 라인 풀다운 메커니즘을 갖는 인공 신경망 내의 아날로그 신경 메모리 어레이 | |
US20230306246A1 (en) | Calibration of electrical parameters in a deep learning artificial neural network | |
US20240104164A1 (en) | Verification method and system in artificial neural network array | |
TW202336748A (zh) | 決定施加至神經網路中的一或多個記憶體胞元的偏壓 | |
JP2024096888A (ja) | 論理セル及び改善されたプログラミング機構を備える人工ニューラルネットワーク内のアナログニューラルメモリアレイ | |
WO2024063792A1 (en) | Verification method and system in artificial neural network array |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |