CN100390904C - 用于测试半导体存储器的方法及装置 - Google Patents

用于测试半导体存储器的方法及装置 Download PDF

Info

Publication number
CN100390904C
CN100390904C CNB018227759A CN01822775A CN100390904C CN 100390904 C CN100390904 C CN 100390904C CN B018227759 A CNB018227759 A CN B018227759A CN 01822775 A CN01822775 A CN 01822775A CN 100390904 C CN100390904 C CN 100390904C
Authority
CN
China
Prior art keywords
storer
programming mode
primary processor
special programming
described storer
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.)
Expired - Fee Related
Application number
CNB018227759A
Other languages
English (en)
Other versions
CN1502110A (zh
Inventor
W·雷维斯
P·D·鲁比
L·W·多弗
R·N·哈斯布恩
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN1502110A publication Critical patent/CN1502110A/zh
Application granted granted Critical
Publication of CN100390904C publication Critical patent/CN100390904C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/48Arrangements in static stores specially adapted for testing by means external to the store, e.g. using direct memory access [DMA] or using auxiliary access paths
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/3436Arrangements for verifying correct programming or erasure
    • G11C16/3454Arrangements for verifying correct programming or for detecting overprogrammed cells
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/46Test trigger logic

Abstract

描述了一种用于优化半导体存储器的测试的方法。首先,存储器进入特殊编程模式。该特殊编程模式禁用存储器的内部验证。接下来,多个字被编程到存储器中。然后,主处理器在存储器外部验证存储器中多个数据字的编程。最后,退出特殊编程模式并且允许存储器进行内部程序验证。还描述一种装置,它具有主处理器和带特殊编程模式电路的存储器。

Description

用于测试半导体存储器的方法及装置
技术领域
本发明涉及半导体存储器测试领域。更确切地说,本发明涉及用于半导体存储器的特殊编程模式,它有助于优化半导体存储器的测试。
背景技术
近年来,已开发了不同编程方法对非易失性存储器进行编程。图1表示用于现有技术的不包括芯片内编程和擦除自动电路的非易失性可擦可编程只读存储器(“EPROM”)的现有技术编程算法10。连接到EPROM的微处理器执行编程算法10。微处理器发送100微秒编程脉冲到EPROM。然后微处理器执行字验证以确定是否已成功地对打算编程到EPROM中的字编程。如果25次尝试都无法对字编程,则该算法结束。另一方面,如果成功地对该字进行编程,则该算法随着逐步进行到各个地址而重复。
图2表示现有技术中上一代非易失性闪速存储器的现有技术编程算法15。连接到现有技术的闪速存储器的微处理器执行编程算法15。以逐字为基础对闪速存储器进行编程。这种微处理器将程序命令写入闪速存储器,其超时为10微秒。因此,这种编程操作需要10微秒。
按照各个编程操作,微处理器对刚编程的各个字进行验证。这种程序验证操作从微处理器将程序验证命令写入闪速存储器的命令寄存器开始。这种程序验证操作使闪速存储器开始验证最后编程的字。闪速存储器对该字施加内部生成的边际(margin)电压。然后微处理器执行读周期以将该字从闪速存储器输出到微处理器。接下来,微处理器比较从闪速存储器读出的数据字和微处理器打算编程到闪速存储器中的数据字。编程字和时间数据之间的成功比较意味着该字被成功地编程。如果该数据没有被成功地编程,则重复该编程和验证步骤,对字进行编程的尝试限度为25次。
图3表示包括芯片内编程和擦除自动电路的下一代现有技术的闪速存储器的现有技术编程算法18。芯片内编程和擦除自动电路包括命令用户接口、写状态机、数据比较器和状态寄存器。
编程算法18从连接到闪速存储器的微处理器将程序建立命令(即十六进制数40)写入闪速存储器的命令用户接口开始,接下来是指定地址和数据的第二写操作。成功收到所请求的程序操作并对其进行解释之后,闪速存储器的命令用户接口将转换的信号写入闪速存储器的写状态机,然后接管,控制闪速存储器内的内部编程算法。具体地说,写状态机监控内部编程和验证电路以执行以下任务:(1)编程脉冲控制,(2)脉冲重复控制,(3)超时控制,(4)程序验证和(5)状态寄存器更新。
假设先前已经擦除要写入的存储单元(即存储所有逻辑1),为了对闪速存储器阵列中的字进行编程,写状态机向需要从1到0编程的那些存储单元发送预定宽度的编程脉冲。
然后在两个步骤中进行程序验证。将边际读出读电压加至刚编程的单元。然后把所得位线电流分别馈送到读出放大器,每个单元一个读出放大器。调整到Vtp(即程序阈值电压)的工厂设定的编程参考电路的输出也被馈送到相应的读出放大器。然后将读出放大器的输出传送到数据比较器以进行校对。该校对比较读出放大器的输出和数据寄存器的内容。
数据比较器向写状态机报告其校对的结果,写状态机又确定是否需要脉冲重复。如果程序验证操作表明有一个或多个单元需要重新编程,则重复以上编程和程序验证步骤,直到所有单元都经验证是成功编程的或者出现超时。当脉冲重复结束时,写状态机发送信号以更新状态寄存器。
当写状态机忙时,状态寄存器的第七位(即SR.7)被设为零。当写状态机完成(诸如编程结束)并且准备执行下一操作时,状态寄存器的第七位被设为一。如果状态寄存器的第四位(即SR.4)被设为一,则表示对字进行编程中出现错误。
如果对数据字进行编程的地址不是最后地址,则外部微处理器增大地址并重复以上操作。换句话说,微处理器发送40十六进制程序建立命令给存储器,接下来是指定增大的地址和相关数据字的写操作。存储器对数据字进行编程,执行内部程序验证,并且更新状态寄存器。重复以上过程,直到所有数据字经过编程。
尽管现有技术的芯片内程序验证通常是有利的,因为外部微处理器可以有空执行其它任务,但是芯片内程序验证具有一些缺点。通过芯片内程序验证,电压不断地从低电平转变到高电平,反之亦然,这通常延长了编程时间。而且,经常选择编程和程序验证操作的电压和定时设置以处理最坏的情况,这通常也延长了编程时间。此外,程序命令先于要经过编程的各个数据字,这也增加了用于长串数据字的编程时间。
发明内容
因此,本发明的目的是提供一种用于优化半导体存储器的测试的方法和装置,该方法和装置能够克服上述存储器测试技术存在的缺点,提高半导体存储器测试的效率。
根据一个实施例,本发明提供了一种方法,该方法包括:进入存储器的特殊编程模式,该模式禁用所述存储器的内部程序验证,其中所述存储器包括用于程序验证的自动电路;在所述特殊编程模式期间,将多个字编程到所述存储器中,而所述存储器此时不执行内部程序验证;让主处理器在所述存储器外部对将所述多个数据字编程到所述存储器中进行验证,这包括让所述主处理器读取被编程到所述存储器中的所述多个字,并将它们与由所述主处理器存储在连接到所述主处理器的处理器存储器之中的多个相应的字进行比较,其特征在于,如果由所述主处理器读取的所述多个字中的某字与由所述主处理器在所述处理器存储器中存储的所述多个相应的数据字中的某相应字的比较结果是彼此不同,则所述主处理器将(1)把该相应的字发送到所述存储器,以将其作为重新编程的数据字重新编程到所述存储器之中,而所述存储器此时不执行内部程序验证,(2)从所述存储器读取所述重新编程的数据字,和(3)在所述存储器外部验证所述重新编程的数据字;以及在完成由所述主处理器执行的所述外部验证后,退出所述存储器的所述特殊编程模式并允许所述存储器进行内部程序验证。
根据另一个实施例,本发明提供了另一种方法:进入存储器的特殊编程模式,该模式禁用由所述存储器进行的内部程序验证,其中所述存储器包括用于程序验证的自动电路;在所述特殊编程模式期间,将多个字编程到所述存储器中,而所述存储器此时不执行内部程序验证;让主处理器在所述存储器外部对将所述多个数据字编程到所述存储器中进行验证,这包括让所述主处理器读取被编程到所述存储器中的所述多个字,并将它们与由所述主处理器存储在连接到所述处理器的处理器存储器之中的多个相应的字进行比较;退出所述存储器的所述特殊编程模式;以及启用由所述存储器进行的内部程序验证;其特征在于,如果由所述主处理器读取的所述多个字中的某字与由所述主处理器在所述处理器存储器中存储的所述多个相应的数据字中的某相应字的比较结果是彼此不同,则退出所述存储器的所述特殊编程模式,并且把该相应的数据字发送到所述存储器,以将其作为重新编程的数据字重新编程到所述存储器之中,而所述存储器此时执行内部程序验证。
根据又一个实施例,本发明提供了一种包括存储器的、用于测试半导体存储器的装置,所述存储器包括:自动电路,除非被禁用,否则执行内部程序验证;特殊编程模式电路,当启用所述特殊编程模式电路以允许所述存储器进入特殊编程模式时,禁用所述存储器的内部程序验证;其中,在所述特殊编程模式期间,多个字被编程到所述存储器中,并由所述存储器外部的主处理器进行验证,这包括让所述主处理器读取被编程到所述存储器中的所述多个字,并将它们与由所述主处理器存储在连接到所述主处理器的处理器存储器之中的多个相应的字进行比较,其特征在于,如果由所述主处理器读取的所述多个字中的某字与由所述主处理器在所述处理器存储器中存储的所述多个相应的数据字中的某相应字的比较结果是彼此不同,则所述主处理器将(1)把该相应的字发送到所述存储器,以将其作为重新编程的数据字重新编程到所述存储器之中,而所述存储器此时不执行内部程序验证,(2)从所述存储器读取所述重新编程的数据字,和(3)在所述存储器外部验证所述重新编程的数据字。
根据又一个实施例,本发明提供了一种包括存储器的、用于测试半导体存储器的装置,所述存储器包括:除非被禁用、否则执行内部程序验证的装置;用于在收到使能信号时禁用所述存储器的内部程序验证、以使得所述存储器进入特殊编程模式的装置,其中,在所述存储器的所述特殊编程模式期间,多个字被编程到所述存储器中,并由所述存储器外部的主处理器进行验证,这包括让所述主处理器读取被编程到所述存储器中的所述多个字,并将它们与由所述主处理器存储在连接到所述主处理器的处理器存储器之中的多个相应的字进行比较,其特征在于,如果由所述主处理器读取的所述多个字中的某字与由所述主处理器在所述处理器存储器中存储的所述多个相应的数据字中的某相应字的比较结果是彼此不同,则所述主处理器将(1)把该相应的字发送到所述存储器,以将其作为重新编程的数据字重新编程到所述存储器之中,而所述存储器此时不执行内部程序验证,(2)从所述存储器读取所述重新编程的数据字,和(3)在所述存储器外部验证所述重新编程的数据字。
附图说明
通过示例说明本发明,并且本发明不限于附图中的图形,图中类似的参考标号表示类似的要素,其中:
图1说明现有技术EPROM的现有技术编程算法,其中外部微处理器验证各个字的编程;
图2表示现有技术上一代闪速存储器的现有技术编程算法,其中采用了编程和程序验证命令;
图3表示下一代现有技术闪速存储器的现有技术编程算法,它包括芯片内编程和擦除自动电路;
图4表示连接到根据本发明的实施例的非易失性闪速存储器的主处理器;
图5是非易失性闪速存储器的框图,它包括特殊编程模式电路;
图6表示与程序验证和特殊编程模式相关的闪速存储器电路;
图7说明闪速存储器的特殊编程模式的进入、退出和禁用的过程;
图8说明特殊编程模式期间的编程操作;
图9说明特殊编程模式期间的验证操作;
图10说明包括散列法的备选特殊编程模式的编程和验证过程;
图11说明进入特殊编程模式的备选过程。
具体实施方式
描述用于测试诸如非易失性闪速存储器的半导体存储器的特殊编程模式。这种特殊编程模式也指工厂编程模式,已知在工厂设置中常常采用该模式,其中涉及在半导体存储器制造并封装之后测试半导体存储器。
如以下将更详细描述的,对于一个实施例,诸如微处理器的主计算机连接到非易失性闪速存储器。这种微处理器发送一个或多个命令到闪速存储器以进入特殊编程模式。在特殊编程模式期间,在不使用内部数据验证的前提下,闪速存储器对闪速存储器单元进行编程。而主机微处理器执行数据的编程的验证。
就速度对闪速存储器编程操作进行优化。通过向闪速存储器发送禁用工厂编程模式命令,主机微处理器可以永久地禁止进入工厂编程模式。备选实施例包括关于编程的各位的动态散列操作,并且把散列操作的结果用于验证操作。
本发明的实施例有助于减少测试闪速存储器以发现闪速存储器是否能够成功地被编程的时间。闪速存储器测试时间的减少可以有助于增加制造包括闪速存储器的产品的整体效率,特别是在大量生产时。本发明的实施例有助于优化闪速存储器的数据编程。
图4表示特殊编程模式操作的元件设置,特殊编程模式操作也指的是工厂编程模式操作。主计算机22通过线26连接到非易失性闪速存储器24。线26包括发送地址、控制和数据信号的总线。主计算机22可以是微处理器或其它计算装置,比如微控制器、个人计算机、个人数字助理、网络处理器、工作站或大型计算机。主处理器22监督闪速存储器24的测试。尽管对于本发明的一个实施例,存储器24是闪速存储器,但是也可采用其它类型的半导体存储器。另外,对于本发明的其它实施例,存储器24可以嵌入芯片或包含其它电路的装置中。例如,存储器24可以嵌入包括数字和模拟电路以及其它存储器的单片系统中。
主处理器22包括处理电路33,用以采用特殊编程模式对存储器24进行编程。特殊编程模式允许主处理器22发送数据字以供存储器24编程,并允许存储器24进入特殊编程模式,其中由主处理器22在外部完成数据验证。主处理器22的电路33包括用于在特殊编程模式期间执行外部数据验证的电路。
主处理器22也连接到存储器34以便为处理器22存储代码和数据。存储在存储器34中的代码包括主处理器22用于测试存储器24的算法。该存储器测试算法包括对存储器24进行编程的算法,该算法依靠主处理器22的外部程序验证。存储器34还存储供主处理器22使用的数据。主处理器22所用的数据包括将要编程到存储器24中的数据。主处理器22还利用存储器34作为暂时存储器来存储从存储器34读取的数据,作为主处理器22执行的外部程序验证例程的一部分。
对于一个实施例,存储器34为DRAM。对于其它实施例,可能采用其它类型的半导体存储器。对于另外一些实施例,存储器34可以包括硬盘存储器或非易失性存储器。对于一个实施例,存储器34在主处理器22的外部。对于其它实施例,存储器34可能作为主处理器22的一部分来包括,例如形成单片系统。
对于一个实施例,存储器24为非易失性闪速存储器,它包括自动写电路。存储器24包括连接到闪速存储器阵列20的控制电路28。控制电路28包括特殊编程模式电路32,它允许存储器24进入或退出特殊编程模式。在特殊编程模式期间,暂时禁止存储器24的内部数据验证,并且通过使用主处理器22在外部进行外部数据验证。闪速存储器阵列20包括用于非易失性存储信息的各个闪速存储单元。
图5说明非易失性闪速存储器24的更具体情况。闪速存储器24包括闪速存储单元阵列20、命令用户接口电路40、写状态机28、特殊编程模式电路32、输入/输出逻辑47、输入缓冲器51、52和55、输出缓冲器53和54、输出复用器45、标识符寄存器85、状态寄存器83、数据寄存器91、数据比较器81、地址输入缓冲器61、地址锁存器62、地址计数器63、功率降低控制电路73、X解码器71、Y解码器72、编程/擦除电压开关41和Y选通/读出电路74。
闪速存储单元阵列20提供随机存取非易失性大规模数据存储。对于一个实施例,闪速存储单元阵列20被配置为一组阵列块20a-20x。块20a是16K字节主块。块20b是8K字节参数块。块20c是8K字节参数块。块20d是96K字节主块。块20e是128K字节主块。块20x是128K字节主块。闪速存储单元阵列20的其它128K字节主块未示出。
控制总线106是图4的数据线26的一部分。数据总线104也是图4的线26的一部分。地址总线102也是线26的一部分。地址总线102、数据总线104和控制总线106将闪速存储器24连接到主处理器22。
闪速存储器24具有芯片内编程和擦除自动电路,其中包括命令用户接口40、写状态机28、数据比较器81和状态寄存器83。
命令用户接口电路40是闪速存储器24的请求接口。命令用户接口电路40的基本工作是在主处理器22和内部装置24功能之间进行仲裁。命令用户接口40通过保持已发出请求的命令寄存器、解释/翻译该请求的命令解码器以及发起动作的控制逻辑来完成这一工作。这些动作包括在命令用户接口40和写状态机28之间进行通信、读取路径选择和状态寄存器83校验和清零。
命令用户接口40驻留在内部数据总线上。用CE#和WE#驱动的低电平在数据引脚DQ0-DQ7上输入命令。当WE#回到VIH之后,命令被锁存和解释。当在第二总线周期中WE#被驱动到高电平时,在地址锁存器62中捕获地址信息,并且将程序数据存储在数据寄存器91中。
当发出的命令是读操作时(例如从标识符寄存器85、或状态寄存器83或存储器阵列20中读取),命令用户接口40确保输出复用器45将该数据送到输出缓冲器53和54。
写状态机28控制对阵列20进行编程、擦除和验证所需的闪速存储器24内的不同元件。写状态机28包括集成振荡器和控制电路,用以执行编程和擦除操作。写状态机28是用于在阵列20上执行编程、擦除和其它操作的专用精简指令集处理器。写状态机28包括算术逻辑单元、通用寄存器、控制存储器和控制定序器。写状态机28利用从命令用户接口40收到的信息来访问程序存储器的适当单元以执行进行操作所需的指令。命令用户接口40到写状态机28发送的信号转发翻译的用户请求,以便处理和控制。写状态机28执行实现算法,对Y选通/读出电路的高电压电路进行排序,以便使阵列20的闪速存储单元充电和使阵列20的闪速存储单元放电。
写状态机28生成向需要擦除阵列20的程序或块的阵列20的各位发起选通的信号。写状态机28还生成监控选通脉冲宽度和相关定时的信号。写状态机28生成控制数据比较器81的信号。写状态机28生成从数据比较器81请求反馈的信号,以确定脉冲重复控制并为状态寄存器83提供更新。写状态机28生成使地址计数器63开始擦除预处理或擦除验证的信号。
Y选通/读出电路74包括用以访问阵列20的读/写路径电路。更确切地说,Y选通/读出电路74包括电源开关电路,用于将适当的电压电平加至阵列20以用于擦除功能。Y选通/读出电路74还包括程序加载电路,用于在编程期间使程序电平电压驱动到阵列20的位线。
主处理器22通过在用户地址总线102上传送地址来读取阵列20,同时在用户控制总线106上就读周期发送信号。命令用户接口电路40检测读周期并使地址锁存器62将地址从用户地址总线102传送到X解码器71和Y解码器72。命令用户接口电路40还使输出复用器45在用户数据总线104上传送来自Y选通/读出电路74的数据。
主处理器22将数据写入在线26上产生写周期的阵列20,以将编程命令和数据传送到命令用户接口电路40。命令用户接口电路40验证这些编程命令,并将这些编程命令、地址和数据参数排队到写状态机28。写状态机28通过将指定数据编程到阵列20中的指定地址来执行编程操作。
写状态机28包括电路32,用于允许或禁止闪速存储器24的特殊编程模式。当电路32允许特殊编程模式时,写状态机28阻止对写入存储器阵列20的数据的验证。程序数据的验证是闪速存储器24的常规操作。
以下参考图5和图6来说明闪速存储器24的常规验证操作。图6更详细地表示闪速存储器24的特定电路。数据比较器81对于闪速存储器24的常规程序验证操作是关键的。数据比较器81由写状态机28控制。写状态机28在程序验证和擦除验证操作期间采用数据比较器81。数据比较器81对照存储在装置数据寄存器91中的数据校对阵列20的刚编程的单元。对于擦除验证,数据比较器81比较擦除单元和十六进制数据值FFFF。经地址计数器电路63使擦除单元循环通过数据比较器81。
对于程序验证和擦除验证,数据比较器81向写状态机28报告其校对的结果,写状态机28又确认是否需要脉冲重复。如果不需要脉冲重复,则写状态机28发送信号以更新状态寄存器程序或擦除在状态寄存器83中体现的状态位。
对于常规程序验证,在数据比较器81进行数据比较之前进行界定功能。对于程序验证,从包括阵列20的程序单元的列的程序边际偏移读数导出的电流IPMRGN与参考电流IPREF一起馈送到16个读出放大器117a-117p其中之一(假设是一个16位字),其中电流IPREF是来自工厂设定的程序参考电路111的电流。边际电流IPMRGN从加至刚编程的单元上的上升读电压导出。
如果IPMRGN小于IPREF,则读出放大器117a-117p中的特定读出放大器输出逻辑1。这种操作以八位或十六位并行进行,取决于编程操作的总线宽度。来自读出放大器117a-117p的八位或十六位输出值被发送到数据比较器81,以对照存储在数据寄存器91中的数据校对。
图5中示出的写状态机28的特殊编程模式电路32可以禁用写状态机28所用的程序验证过程。电路32可以或者暂时禁用写状态机28的程序验证,或者永久禁用写状态机28的程序验证。对于本发明的一个实施例,电路32包括存储在阵列20中的代码以及用于禁用闪速存储器24内的程序验证过程的相关电路。程序验证过程可以被暂时禁用,以便对某些数据字进行编程,或者程序验证过程可以被永远禁用,以便阻止存储器24的外部用户进入特殊编程模式。在特殊编程模式期间,电路32禁用程序验证。
图5中示出的状态寄存器83是闪速存储器24的自动电路中另一元件。状态寄存器83由各位构成,这些位是与闪速存储器24的外界的接口。写状态机28从其支持电路接收反馈,从而允许写状态机28保持状态寄存器83最新和命令用户接口40并排。状态寄存器的第七位指示写状态机是否准备好接收更多的命令(逻辑1)或者忙于执行任务(逻辑0)。状态寄存器83的第四位指示程序状态。如果状态寄存器83的第四位是逻辑1,则表示字/字节编程中出现错误。如果程序状态第四位是逻辑0,则表示成功对字/字节进行编程。
在CE#或OE#的下降沿,无论哪个在读周期中最后发生,状态寄存器内容在数据总线104的各位DQ0-DQ7输出。任一引脚必须被驱动到高电平,然后再为低电平,以便发送更新的内容到输出缓冲器53和54。接下来主处理器22在数据线104上读取状态寄存器83的输出。
图7是表示进入、退出和禁用闪速存储器24的特殊编程模式的过程的状态图。图7中括号内的信息表示命令用户接口40的状态。括号内信息下面圆圈内的信息表示闪速存储器24的输出复用器45的状态。
特殊编程模式过程从操作或状态105开始,主处理器22经由线路26发送特殊编程模式命令到闪速存储器24以便存储在命令用户接口40中。对于本发明的一个实施例,利用单个特殊编程模式命令进入特殊编程模式。对于以下更详细描述的备选实施例,利用特殊命令序列,以便使命令用户接口让电路32进入特殊编程模式。
在状态152,命令用户接口40已进入特殊编程模式状态。输出复用器45输出状态信号。在状态152,命令用户接口40使写状态机28的电路32进入特殊编程模式。在特殊编程模式中,电路32禁用闪速存储器电路24的内部程序验证。
接下来,主计算机22发送数据流建立命令到闪速存储器24的命令用户接口40以进入状态154。在状态154,命令用户接口40处于数据流建立状态(即DS建立状态)。在状态154,输出复用器45输出状态信号。数据流建立状态154使写状态机28准备闪速存储器24以用于将要编程到闪速存储器阵列20中的数据字流。对于一个实施例,数据字流不需要连续地址。对于另一个实施例,数据字流要用于连续地址。在状态154,命令用户接口40、写状态机28和特殊编程模式电路32全部处于数据流建立模式,等待将要流入闪速存储器24的数据输入,以便存储在阵列20中。
接着发生的事件是数据在数据总线104上从主计算机22流入闪速存储器24。对于本发明的一个实施例,数据总线104是16位宽,因此各个数据字是16位宽的数据字。数据流是一系列将要从开始地址开始写入闪速存储器阵列20的数据字。对于一个实施例,数据字流不需要连续地址。对于另一实施例,数据字流要用于连续地址。主处理器22在地址总线102上将开始地址发送到闪速存储器24。一旦数据在数据总线104上被发送到闪速存储器24,闪速存储器命令用户接口40就进入状态156,即数据流状态。在状态156,输出复用器45输出状态信号。在状态156,写状态机28和特殊编程模式电路32也处于数据流状态。
在数据流状态期间,经数据总线104将数据字流从主处理器22发送到闪速存储器24。写状态机28和电路32使数据流字存储在闪速存储器阵列20内的一些地址处。对于一个实施例,这些地址不是连续的。对于该实施例,主处理器22在地址总线102上发送各种地址,而不连续发送初始地址。对于另一实施例,主处理器22在地址总线102上发送的地址保持初始开始地址。写状态机28和电路32顺序单步调整地址计数器63,使得数据字存储在闪速存储器阵列20内的一系列连续地址处。
如图7所示,发送数据等于数据X,它表示一系列数据字正被发送到闪速存储器24。对于一个实施例,地址等于先前的地址,它保持数据流的开始地址。但对于另一备选实施例,可以发送各种地址。命令用户接口40、写状态机28和特殊编程模式电路32保持在数据流状态156,直到遇到数据流终止条件。
数据流状态156与现有技术编程操作不同。在诸如图3所示的现有技术编程操作中,对于数据流中的各个数据字,将存在十六进制的编程命令40,接着是单数据字和地址,再后面是程序验证。换句话说,对于现有技术,为了在第二地址对第二数据字进行编程,需要将另一十六进制编程命令40发送到闪速存储器。然后将第二数据字和地址发送到闪速存储器,而接下来进行程序验证操作。因此对于先有技术,随着逐步调整到所需地址,将发生这样的序列,即命令-数据-验证、命令-数据-验证、命令-数据-验证等。对于先有技术,在各个字被验证为经过编程之后,写状态机将进入“就绪”状态,这由状态寄存器的第七位为逻辑1状态表示,这里假设该数据字被适当地编程。
相反,对于参考图7所描述的本发明的实施例,写状态机28在状态156保持忙,直到多个数据字的整个流被编程到闪速存储器阵列20中。写状态机28的“忙”状态由存储在状态寄存器的第七位的逻辑0表示。
参考图7描述的特殊编程模式序列假设先前已经擦除了将要被编程的存储块。对于闪速存储器阵列20,当闪速存储器单元被擦除时,闪速存储单元存储逻辑1。当闪速存储单元被编程时,闪速存储单元存储逻辑0。为了擦除闪速存储器阵列20,必须一次擦除闪速存储器阵列20的一个块。换句话说,数据块是可被擦除的最小数据单元。当擦除数据块时,使得该块内的各个单元存储逻辑1。闪速存储器阵列20的各个位或单元可以从逻辑1状态编程到逻辑0状态。然而,各个位不能从逻辑0状态编程到逻辑1状态。如果试图将一位或单元从逻辑0状态编程到逻辑1状态而不擦除该块,则各个单元将只是不响应(即,不会保持电荷或保持该状态)。
图8表示在特殊编程模式期间与数据流状态156相关的过程202。在过程块204中,闪速存储器24在数据总线104上从主处理器22接收数据,同时闪速存储器24处于特殊编程模式。发送到闪速存储器24的数据是从闪速存储器阵列20内开始地址处的数据字0开始的数据流。在过程块206,写状态机28和特殊编程模式电路32使得允许对闪速存储器阵列20进行编程。
在过程块208,写状态机28开始将从主处理器22发送的数据流中的第一数据字编程到阵列20中。已知闪速存储器的特性,实际上只对要从逻辑1编程到逻辑0的数据字的那些比特进行编程。在编程之前,将要编程的阵列20的块中各位已处于逻辑1状态(即十六进制数FFFF状态)。通过对相应单元进行编程,对需要从逻辑1变为逻辑0的那些位进行编程。
在过程块208,仅单个编程脉冲用于要编程的各个单元。换句话说,在特殊编程模式期间,没有如一般在非特殊编程模式操作期间发生的那样将多个编程脉冲发送到各单元。这有助于加速字的编程。如果用特殊编程模式在工厂中测试闪速存储器24,则闪速存储器24是新近生产的,因此通常单个编程脉冲就足以成功地对闪速存储单元进行编程。对于较旧的闪速存储器则相反,可能对于一个单元需要多个编程脉冲以在常规编程模式中充分编程。
在过程块210,写状态机28和特殊编程模式电路32检查数据流终止条件。这通过检查数据总线104和地址总线102以检查在这些总线上是否有适当终止信息来完成。如果数据总线104和地址总线102继续表示正在发送将要编程到闪速存储器20中的其它数据字,则过程202进入过程块212。在过程块212,写状态机28使内部闪速存储器地址计数器63递增以进入下一地址。对于一个实施例,这些地址是连续的。对于备选实施例,这些地址不是连续的,并且主机22发送各种地址。对于该备选实施例,不让地址计数器递增。相反,从主机22接收下一地址。然后,程序流返回到过程块208。将要编程的下一个字将被编程到闪速存储器阵列20的下一地址处,在一个实施例中,该地址由内部地址计数器63指示。对于另一实施例,下一地址来自主机22。然后,过程流继续到过程块210。通过监视数据总线104和地址总线102,写状态机28和特殊编程模式电路32再次检查数据流终止条件。如果没有遇到数据流终止条件,则在过程块212,写状态机28再次使内部地址计数器63递增。而对于另一实施例,下一地址来自主机22。然后过程流继续到过程块208,而写状态机28和特殊编程模式电路32将数据流中的下一个字编程到闪速存储器阵列20中。该字被编程到如内部地址计数器63所指示的下一地址。而对于另一实施例,下一地址来自主机22。然后过程流再次转到过程块210,在此检查数据流终止条件。
继续从过程块208到过程块210再到过程块212并返回过程块208的程序,直到数据流中的所有数据字都被编程。
特殊编程模式电路32确保在特殊编程模式期间的数据流中,内部程序验证并不由闪速存储器24完成。因此,在线路26上由主处理器22发送到闪速存储器24的数据流没有被任何由主处理器22发送的命令中断。换句话说,主处理器22并没有为将要编程到闪速存储器24中的数据流中各个字发送单独的程序命令。闪速存储器24也没有为将要编程到闪速存储器24中的各个数据字执行内部程序验证。
对于各种实施例,各种数据流终止条件是可能的。对于一个实施例,在数据流条件期间,在总线102上发送同一地址。如果主处理器22改变与十六进制数FFFF的数据字相关的地址总线102上发送的地址,则该条件变为数据流终止条件。换句话说,写状态机28和特殊编程模式电路32检查地址总线102上的地址和数据总线104上的数据字,如果发现改变的地址和相应的十六进制数FFFF的数据字,则知道该数据流终止条件已被触发。关于该实施例的变型,改变的地址不一定要与十六进制数FFFF的数据字一起来触发数据终止条件。
对于依赖发送各种地址和数据的主机22的另一实施例,数据终止条件可以是发送与和十六进制数FFFF的数据字相关的最后地址相同的地址。对于该实施例的变型,相同地址并不一定要与十六进制数FFFF的数据字一起来触发数据终止条件。
对于本发明的另一实施例,关于状态156的数据流终止条件是发送数据字,该数据字是从主处理器22到闪速存储器24的数据总线104上的所有逻辑1。换句话说,数据流中最后数据字被指定为十六进制数FFFF。对于本发明的一个实施例,在工厂中在特殊编程模式期间测试闪速存储器24,所以测试说明书会陈述以下要求:为测试目的要编程的数据流中的最后数据字是全部包含逻辑1的数据字。
对于本发明的再一实施例,测试说明书要求:为各存储字递增在数据流期间地址总线102上发送的地址。换句话说,在特殊编程模式数据流条件期间,地址随数据总线104上从主处理器22发送新数据字而递增。对于该实施例,数据流终止条件由地址总线102上与十六进制数FFFF数据字相关的没有递增的地址触发。换句话说,数据流的末端由与十六进制数FFFF数据字相关的地址表示,该地址对于数据流中最后数据字一直保持不变。写状态机28和特殊编程模式电路32将检查这样的数据流终止条件。对于该实施例的变型,地址未递增的条件将触发数据终止条件,即使没有伴随十六进制数FFFF的数据字。
如图8所示,如果在过程块210检测到数据流终止条件,则过程流转到过程块214。在过程块214,写状态机28和特殊编程模式电路32禁用另外的编程脉冲,因此没有其它字被编程到闪速存储器阵列20中。过程流转到过程块216,使写状态机28和特殊编程模式电路32禁止阵列20进一步编程。然后过程流转到过程块218,在此将数据字流编程到闪速存储器阵列20中的过程结束。
对于本发明的一个实施例,闪速存储器阵列20上的块边界并不充当数据流终止条件。换句话说,在闪速存储器阵列20内,数据流编程可以跨过块边界继续进行。因此,即使跨过快速存储器块边界,对数据字的编程可以不被中断而继续,这里假定先前已经擦除各个块。
回到图7,一旦闪速存储器阵列24接收到数据终止条件,则过程流从状态156转回状态152。在状态152,命令用户接口处于特殊编程模式状态,而输出复用器45输出状态信号。即使已将数据流编程,闪速存储器24还保持在特殊编程模式状态。然而,到此为止,闪速存储器阵列24没有内部验证是否对在步骤156期间发送的数据流进行成功编程。
在特殊编程模式过程流中,下一操作是在闪速存储器24之外执行程序验证。这种外部验证过程流从主处理器22在线路26上向命令用户接口40发送读阵列命令开始。如图7所示,发送到闪速存储器24的读阵列命令使得过程流进入状态158。在状态158,命令用户接口40处于读阵列状态(即RD阵列状态)。输出复用器45输出读阵列信号。在状态158,主处理器22读取在状态156中数据流期间已被编程到闪速存储器阵列20中的数据。在状态158期间,主计算机22读取数据,并验证是否已成功地将成流数据字编程到阵列20中。
图9表示闪速存储器24的特殊编程模式期间外部程序验证的过程250。在过程块252,主处理器22在线26上向命令用户接口40发送读阵列命令。然后过程流转到过程块254,在此,闪速存储器24将数据比较电平设置为验证电平。
在过程块254,取代数据比较器81执行关于数据字的内部程序验证,没有在内部验证数据字,即使利用边际读出方案已完成读出。过程流转到过程块256。在过程块256,主机22将读命令发送到命令用户接口40以读取一个数据字,它是已编程到闪速存储器阵列20中的数据流的第一数据字。从主处理器22接收到读命令之后,命令用户接口40、写状态机28和特殊编程模式电路32将使第一数据字在数据总线104上发送到主处理器22。
写状态机28和特殊编程模式电路32使得在程序验证电压电平上进行关于闪速存储器阵列20的读操作。因此,在过程块256,写状态机28和特殊编程模式电路32使得采用边际读出方案。将上升读电压加至编程单元。将从包括编程单元的列的编程边际偏置读数导出的电流IPMRGN与参考电流IPREF馈送到读出放大器117a-117p之一,其中参考电流IPREF是来自工厂设定的程序参考电路111的电流。如果IPMRGN小于IPREF,则读出放大器117a-117p中的特定读出放大器输出逻辑0。如果IPMRGN大于IPREF,则读出放大器117a-117p中的读出放大器输出逻辑1。利用各个读出放大器117a-117p,对于该字的所有位并行地进行这些操作。
转到过程块258,主处理器22在外部执行第一数据字的验证。对于本发明的一个实施例,验证操作258是比较操作,其中主处理器22利用处理电路33来比较从闪速存储器阵列24收到的数据字和存储器34中存储的存储字。存储在存储器34中的那个存储字是主处理器22想要存储在闪速存储器阵列20中的原始字。因此,主计算机22利用存储器34存储主处理器22发送到闪速存储器24的数据流,作为数据流操作的一部分。接下来比较存储器34中的数据和存储在闪速存储器阵列22中的数据,执行外部数据验证。
然后过程流转到过程块260。在过程块260,主机22在线26上发送另一读命令到命令用户接口40。这使得主机22在数据总线104上从闪速存储器阵列20读取数据流中的第二数据字。在过程块260,主机22还将在地址总线102上读取的数据字的地址发送给闪速存储器24。在过程块260,写状态机28和闪速存储器24的特殊编程模式电路32利用界定边际的电压读出电平执行关于第二数据字的读操作,并在数据总线104上将第二数据字发送到主处理器22。
然后,过程流转到过程块262。在过程块262,主机22执行关于将要编程的数据字的第二数据字验证(即比较)。这是为了检查是否成功地在数据阵列20中对数据字进行编程而作的。
过程流继续。主机22通过将读命令连同地址发送到闪速存储器阵列24来读取下一数据字。闪速存储器24通过在界定边际-读出电平上执行读取并且经线26将读数据字发送到主处理器22来作出响应。然后主处理器22执行关于下一数据字的验证。
该过程流继续。最后,在过程块270,主处理器22读取数据流中的最后数据字。在过程块270中,主处理器22发送读命令和地址到存储器阵列24。闪速存储器24通过利用界定边际的电压读取最后数据字作出响应,并在线26上将最后数据字发送到主处理器22。然后,过程流进行到过程块272。在过程块272,主处理器22通过执行关于来自存储在存储器34中的数据流的最后数据字的比较来验证最后数据字。
然后,外部验证过程250进行到过程块274。在过程块274,主处理器22检查在主处理器22监视的外部验证过程中,是否成功地比较数据流中的所有字。如果所有数据字成功地与想要编程到闪速存储器24中的数据字比较,则过程流进行到过程块276,在此,外部验证过程结束。
如果在过程块274主处理器22断定作为外部验证的一部分、并没有成功地比较所有字,则过程流进行到过程块278。在过程块278,主处理器22对失败的数据字重新编程。这通过主处理器22在线26上将数据流建立命令发送到闪速存储器24的命令用户接口40来完成。这在图7中由从状态158到状态154的移动示出。然后主处理器22在线26上将数据字连同地址发送到闪速存储器24。这使得命令用户接口40从状态154转到状态156。在状态156,失败的数据字以成流的形式重新编程到闪速存储器阵列20中。如果只有一个失败的数据字,则只有该失败的数据字被重新编程到闪速存储器阵列20的相应地址处。
然后主处理器22将数据流终止触发信号发送到闪速存储器24。接下来,命令用户接口40从状态156跳到状态152。然后图9所示的外部验证过程流250进行到过程块280。在过程块280,主处理器22执行重新编程的字的外部读取和验证。具体地说,主处理器22经线26将读阵列命令发送到命令用户接口40。然后如图7所示,命令用户接口从状态152进入状态158。主处理器22发送关于各个重新编程数据字的读命令。闪速存储器阵列24在界定边际的读出电平上读取重新编程数据字,并将这些数据字经线26发送到主存储器22。主处理器22将其接收到的各个数据字对照暂时存储器34中存储的预期数据字进行验证(即比较)。
然后过程流进行到图9所示的过程块282。在过程块282,主处理器22检查任一重新编程字是否没有验证,因而仍然不能通过外部验证测试。如果任何重新编程字仍然是失败的,则过程流进行到步骤286。在步骤286,主处理器22注明关于闪速存储器24的编程的错误。换句话说,在步骤286,主处理器指示闪速存储器24作为特殊编程模式的一部分进行的测试失败。
对于本发明的备选实施例,如果在过程块274没有成功地比较所有的字,则主处理器22退出特殊编程模式并试图利用包括闪速存储器24的内部检验的常规编程技术对失败的数据字重新编程。作为该重新编程的一部分,闪速存储器24为各个字应用多个编程脉冲,以试图对那些字进行编程。如果对于该备选过程,重新编程字没有成功地被重新编程,则闪速存储器24将在状态寄存器83中指示对那些数据字重新编程失败。
但是,如果在过程块282,主计算机确定正确地验证了所有重新编程的字并且没有一个字的适当编程失败,则过程流进行到过程块284。在过程块284,主处理器指示关于数据字的编程流的闪速存储器阵列的测试已经成功地结束。
在特殊编程模式期间,如果命令用户接口40收到任何无效命令,则命令用户接口40总是进入状态158,即读阵列状态。
一旦在特殊编程模式期间主处理器完成所有其测试,主处理器想要退出特殊编程模式。主处理器22可能希望退出特殊编程模式,不论闪速存储器24是否通过主处理器22进行的各种编程测试。
为了退出特殊编程模式,主处理器22将退出特殊编程模式命令经线26发送到闪速存储器24。闪速存储器24的命令用户接口40接收退出特殊编程模式命令。接着命令用户接口进入状态160。在状态160,命令用户接口处于状态状态。在状态160,输出复用器45输出状态信号。在状态160,闪速存储器阵列24不再处于特殊编程模式。一旦闪速存储器阵列不再处于特殊编程模式,闪速存储器阵列24就可以执行其通常的内部程序验证操作。
对于本发明的一个实施例,关于闪速存储器24可以永远禁用特殊编程模式。对于一个实施例,这在闪速存储器24在特殊编程模式期间成功完成编程测试之后进行。禁用特殊编程模式使得购买闪速存储器24的消费者不能进入特殊编程模式。换句话说,对于该实施例,特殊编程模式是专用于工厂测试的特殊工厂编程模式。
为了永远禁用特殊编程模式,过程流进入状态162。在状态162,主处理器22将禁用特殊编程模式命令在线26上发送到命令用户接口40。然后过程流进入过程块164。在过程块164,闪速存储器24永久禁用特殊编程模式。确切地说,在过程块164,写状态机28和特殊编程模式电路32设置内部寄存器或CAM(内容可编址存储器),它们阻止写状态机28和特殊编程模式电路32将来进入特殊编程模式。当特殊编程模式被永久禁用时,终端用户则再也不能进入特殊编程模式。这意味着,即使主计算机22发送特殊编程模式命令到闪速存储器24,写状态机和电路32也不能允许闪速存储器阵列进入特殊编程模式。随着特殊编程模式的禁用,在闪速存储器阵列的常规模式中进行其编程,这将包括对数据字的各个编程的内部程序验证。
对于备选实施例,通过设置控制电路32和写状态机38的代码中的某位,可以使这种特殊编程模式半永久禁用。对于该备选实施例,可以利用某些命令序列来改变特殊编程模式的禁用。那些命令序列不会告诉用户,而只有闪速存储器制造商知道。对于再一备选实施例,即使设置该位或寄存器以永久禁用特殊编程模式,制造商也可以访问和改变关于特殊编程模式的禁用电路,尽管它位于寄存器或CAM中。
图10表示包括散列法的另一特殊编程模式的编程和验证过程320。对于图10所示操作320,除附加闪速存储器24的散列法以外,图7中示出的过程流一般是适用的。
对于操作320,存在与各个数据字相关的散列操作,而不是与读取各个数据字相关的验证。在结束对数据流的编程时,存在包括散列值比较的单个验证步骤。
如图10所示,程序流320从过程块322开始。在过程块322,闪速存储器阵列24进入特殊编程模式。因此,通过主处理器将特殊编程命令发送到闪速存储器24,闪速存储器阵列24进入特殊编程模式状态152。
过程流进入过程块324。在过程块324,主处理器22经线26将数据流建立命令发送到闪速存储器阵列24。由此进入状态154。
过程流进入过程块326,在此,主处理器22通过线26将数据流中的第一数据字发送到闪速存储器24,以便编程到阵列20中。命令用户接口40的状态进入状态156,即数据流状态。在状态156,闪速存储器接收被编程到闪速存储器阵列20中的数据字流。对于一个实施例,数据字流不需要连续地址。对于另一实施例,数据字流要用于连续地址。
过程流进入过程块328,在此,闪速存储器阵列执行关于已被编程的第一数据字的散列。在过程块328中执行的散列是动态散列,因为它是关于将要编程到闪速存储器阵列20中的各个数据字执行的。换句话说,这种散列一次一个字地执行。
在过程块328,写状态机28和特殊编程模式电路32通过对第一数据字运用散列算法来执行散列处理,这种算法将数据提取成更小的数据字,这种数据字是散列算法的输出。写状态机28和电路32暂时将过程块328中产生的散列值存储在闪速存储器阵列20中的一个存储单元。阵列20还存储散列算法。对于本发明的备选实施例,写状态机28和电路32将散列算法以微代码存储在写状态机28中。
然后过程流进入过程块330。在过程块330,第二数据字被编程到闪速存储器阵列20中。这是数据流的第二数据字。
过程流进入过程块332,在此,闪速存储器24执行与第一数据字的散列结合、关于已被编程的第二数据字的散列操作。换句话说,散列算法接收第一散列操作的结果和第二数据字作为输入。散列算法输出散列中间输出,将其存储在闪速存储器阵列20中。
过程流320对数据流内下一系列的数据字继续进行。将各个数据字编程到闪速存储器阵列20中。闪速存储器阵列24执行关于各个编程数据字的动态散列。散列算法利用新的编程数据字和先前散列操作的结果以产生新的散列值,并且将该结果存储在阵列20中。过程流320继续到过程块350,在那里闪速存储器24将流中最后一个字编程到阵列20中。在过程块352,写状态机和特殊编程模式电路32使散列算法执行关于闪速存储器24编程的最后数据字和散列算法的先前输出的散列操作。结果散列值存储在阵列20中。
然后过程流进入过程块354。在过程块354,主处理器22比较闪速存储器阵列20中存储的散列值和主处理器22存储在存储器34中的散列值,以便确定它们是否相同。存储在存储器34中的散列值是存储在存储器34中的数据流字的动态散列的结果,这些数据流字由主处理器22发送以编程到闪速存储器24中。换句话说,主处理器22执行关于将要编程到闪速存储器24中的数据字的与闪速存储器24相同的散列算法。如果存储在阵列20中的散列值和存储在存储器34中的相同,则过程流进入过程块356,这意味着数据流中的数据字已全部成功地编程到闪速存储器24中。这是因为散列操作意味着散列操作的结果有很大的可能性是唯一的数。出现以下情形的可能性极小:即使数据流字没有被成功地编程到闪速存储器24中,所述散列值的比较结果也为彼此相同。如果在过程块354处所述散列值的比较结果为彼此相同,则很有可能数据流已被成功地编程到闪速存储器24中。
一旦完成散列技术320,主处理器22将使闪速存储器24退出特殊编程模式。
如果在过程块354,主处理器22确定散列值不相同,则过程流转到过程块358,在此主处理器22指示闪速存储器24的编程中的错误。如果散列值不相同,则很有可能有一个或多个数据字没有成功地编程到闪速存储器24中。
对于本发明的一个实施例,如果在过程块358指示错误条件,则为数据流的所有数据字重复散列过程流320。
对于本发明的备选实施例,如果在过程块358指示错误,则退出特殊编程模式,并且主处理器22试图利用常规编程技术重新对闪速存储器24进行编程,其中包括闪速存储器24的内部程序验证。
对于本发明的备选实施例,除了动态地对编程数据字进行散列处理之外,过程流320可以包括存储在闪速存储器24内的状态消息的散列处理。状态消息可以包括存储在状态寄存器83中的状态值,以及其它状态信息。主处理器22将期望散列值和来自闪速存储器24的状态信息存储在其存储器34中,所述期望散列值由数据流字的散列处理产生。除数据字之外,状态信息的散列处理将允许主处理器22除了数据流的正确编程之外,还检查闪速存储器24的正确操作。例如,如果发生分块错误,备选散列过程可以捕获该错误。如果状态信息和数据字经过散列处理,写状态机28和特殊编程模式32将监视散列算法的运行。
图11说明用于进入特殊编程模式的备选过程402。过程402利用终端用户不太可能遵循的命令序列,而不是利用从主处理器22发送到闪速存储器24的单个特殊编程模式命令。因此,过程402使得终端用户几乎不可能进入特殊编程模式。例如,制造商将过程402一直保密,并将这样的过程例如用于闪速存储器24的工厂测试。
特殊序列402按如下操作。主处理器22在线26上将读阵列命令发送到命令用户接口40,使得闪速存储器24进入状态404。在状态404,命令用户接口处于读阵列状态,并且输出复用器45输出读阵列信号。在状态404,闪速存储器24并不处于特殊编程模式。如果主处理器22将程序建立命令发送到命令用户接口40,那么过程流进入状态418,在那里命令用户接口40处于程序建立模式,并且输出复用器45输出读阵列信号。或者,如果过程流从状态404开始,并且主处理器22将擦除建立命令发送到命令用户接口40,那么命令用户接口40进入状态416,在那里命令用户接口40处于擦除建立状态,并且输出复用器45输出读阵列信号。
如果过程流从状态404开始,那么为了进入特殊编程模式,主处理器22在总线25的连续总线周期上将一系列特殊编程模式命令发送到闪速存储器24。当主处理器22发送第一特殊编程模式命令时,命令用户接口40进入状态406,即第1号特殊编程模式状态,并且输出复用器指示读阵列信号。
如果命令用户接口40处于第1号特殊编程模式状态,即过程块406,另一特殊编程模式命令的接收使得命令用户接口40进入状态408,即第2号特殊编程模式状态,并且输出复用器45输出读阵列信号。主处理器22发送到命令用户接口40的另一特殊编程模式命令产生到状态410的跳转,即命令用户接口40的第3号特殊编程模式状态,并且输出复用器45输出读阵列信号。
其它连续的特殊编程模式命令使命令用户接口40假定类似的状态。如果发送n-1个特殊编程模式命令,命令用户接口40进入状态412。在状态412,命令用户接口40处于特殊编程模式n-1状态,并且输出复用器45输出读阵列信号。
在状态406、408、410和412,闪速存储器24并不处于真正的特殊编程模式。当命令用户接口40处于状态406、408、410和412时,非特殊编程模式的命令用户接口40的接收可使得命令用户接口进入常规模式,比如读阵列状态404、程序建立状态418或擦除建立状态416。换句话说,还未进入特殊编程模式。
但是,如果一旦命令用户接口处于状态412,并且在第n个总线周期收到另一特殊编程模式命令,则命令用户接口跳转到状态414,即特殊编程模式。在状态414,命令用户接口处于真正的特殊编程模式状态,并且输出复用器45输出状态信号。
对于图11的过程流402,主处理器发送所需的特殊编程模式命令序列,使闪速存储器进入状态414、即特殊编程模式状态。一旦命令用户接口40和闪速存储器24处于状态414,它们保持在特殊编程模式状态,直到主处理器22发送退出特殊编程模式命令,使得闪速存储器进入状态160,即命令用户接口40的状态状态。
因此,只有当在总线周期中连续发送一系列n个特殊编程模式命令,才进入真正的特殊编程模式状态。对于本发明的一个实施例,整数“n”为10,这意味着十个特殊编程模式命令。但是n的其它值也是可行的。
对于图11中示出的备选实施例,在已经退出特殊编程模式之后,主处理器22可以将禁用特殊编程模式命令发送到闪速存储器24,以便禁止过程402将来使闪速存储器24进入特殊编程模式。换句话说,主处理器22可以发送禁用特殊编程模式命令,这将永久禁用特殊编程模式。
关于过程402的备选方案是可行的。可以增加额外的周期或复杂过程以帮助阻止用户非法进入特殊编程模式。因此可以在特殊编程模式命令中增加更多复杂度,以便进一步增加进入特殊编程模式的难度。如果没有永久禁用特殊编程模式,可以进一步利用这样的安全性。例如,闪速存储器24的制造商可能不希望永久禁用闪速存储器特殊编程模式,因为在本领域中,消费者使用闪速存储器24之后,该制造商希望利用特殊编程模式对闪速存储器24检修故障。进入特殊编程模式的复杂过程将有助于阻止用户从内部或意外地进入特殊编程模式,但仍然允许得到通知的制造商代表遵循适当的过程以进入特殊编程模式。
在以上说明中,已经参考特定示例性实施例描述了本发明。但很明显,只要不背离所附权利要求书中阐述的本发明的更广义的精神和范围,可以作出各种修改和变化。因此说明书和附图被视为说明性的而非限定性的意义。

Claims (22)

1.一种方法,包括:
进入存储器的特殊编程模式,该模式禁用所述存储器的内部程序验证,其中所述存储器包括用于程序验证的自动电路;
在所述特殊编程模式期间,将多个字编程到所述存储器中,而所述存储器此时不执行内部程序验证;
让主处理器在所述存储器外部对将所述多个数据字编程到所述存储器中进行验证,这包括让所述主处理器读取被编程到所述存储器中的所述多个字,并将它们与由所述主处理器存储在连接到所述主处理器的处理器存储器之中的多个相应的字进行比较,其特征在于,如果由所述主处理器读取的所述多个字中的某字与由所述主处理器在所述处理器存储器中存储的所述多个相应的数据字中的某相应字的比较结果是彼此不同,则所述主处理器将(1)把该相应的字发送到所述存储器,以将其作为重新编程的数据字重新编程到所述存储器之中,而所述存储器此时不执行内部程序验证,(2)从所述存储器读取所述重新编程的数据字,和(3)在所述存储器外部验证所述重新编程的数据字;以及
在完成由所述主处理器执行的所述外部验证后,退出所述存储器的所述特殊编程模式并允许所述存储器进行内部程序验证。
2.如权利要求1所述的方法,其特征在于,所述存储器是非易失性存储器。
3.如权利要求1所述的方法,其特征在于,通过所述主处理器将用于进入所述特殊编程模式的命令发送到所述存储器来进入所述特殊编程模式。
4.如权利要求3所述的方法,其特征在于,通过所述主处理器将用于退出所述特殊编程模式的命令发送到所述存储器来退出所述特殊编程模式。
5.如权利要求1所述的方法,其特征在于,通过所述主处理器将用于进入所述特殊编程模式的一系列命令发送到所述存储器来进入所述特殊编程模式。
6.如权利要求1所述的方法,其特征在于,所述主处理器将所述多个字发送到所述存储器以便编程到所述存储器中。
7.如权利要求1所述的方法,其特征在于还包括通过将禁用特殊编程模式命令从所述主处理器发送到所述存储器来禁止再进入所述存储器的所述特殊编程模式。
8.如权利要求1所述的方法,其特征在于,将多个字编程到所述存储器中还包括只使用单个编程脉冲来编程与所述多个字对应的一个或多个存储器单元。
9.如权利要求1所述的方法,其特征在于,进入所述存储器的所述特殊编程模式还包括启用与所述主处理器连接的处理器存储器中编成微代码的存储器测试算法中包含的算法,以便在所述特殊编程模式期间控制所述存储器。
10.如权利要求9所述的方法,其特征在于,包含在所述存储器测试算法中的所述算法确定在所述特殊编程模式期间要采用的编程脉冲的宽度和是否重复施加所述编程脉冲。
11.一种方法包括:
进入存储器的特殊编程模式,该模式禁用由所述存储器进行的内部程序验证,其中所述存储器包括用于程序验证的自动电路;
在所述特殊编程模式期间,将多个字编程到所述存储器中,而所述存储器此时不执行内部程序验证;
让主处理器在所述存储器外部对将所述多个数据字编程到所述存储器中进行验证,这包括让所述主处理器读取被编程到所述存储器中的所述多个字,并将它们与由所述主处理器存储在连接到所述处理器的处理器存储器之中的多个相应的字进行比较;
退出所述存储器的所述特殊编程模式;以及
启用由所述存储器进行的内部程序验证;其特征在于,如果由所述主处理器读取的所述多个字中的某字与由所述主处理器在所述处理器存储器中存储的所述多个相应的数据字中的某相应字的比较结果是彼此不同,则退出所述存储器的所述特殊编程模式,并且把该相应的数据字发送到所述存储器,以将其作为重新编程的数据字重新编程到所述存储器之中,而所述存储器此时执行内部程序验证。
12.一种包括存储器的、用于测试半导体存储器的装置,所述存储器包括:
自动电路,除非被禁用,否则执行内部程序验证;
特殊编程模式电路,当启用所述特殊编程模式电路以允许所述存储器进入特殊编程模式时,禁用所述存储器的内部程序验证;其中,在所述特殊编程模式期间,多个字被编程到所述存储器中,并由所述存储器外部的主处理器进行验证,这包括让所述主处理器读取被编程到所述存储器中的所述多个字,并将它们与由所述主处理器存储在连接到所述主处理器的处理器存储器之中的多个相应的字进行比较,其特征在于,如果由所述主处理器读取的所述多个字中的某字与由所述主处理器在所述处理器存储器中存储的所述多个相应的数据字中的某相应字的比较结果是彼此不同,则所述主处理器将(1)把该相应的字发送到所述存储器,以将其作为重新编程的数据字重新编程到所述存储器之中,而所述存储器此时不执行内部程序验证,(2)从所述存储器读取所述重新编程的数据字,和(3)在所述存储器外部验证所述重新编程的数据字。
13.如权利要求12所述的装置,其特征在于所述主处理器还包括;
启用或禁用所述存储器的所述特殊编程模式电路的电路;
一种电路,如果启用所述特殊编程模式电路,则将要编程到所述存储器中的多个数据字发送到所述存储器,而所述存储器此时不执行内部程序验证;以及
一种电路,如果启用所述特殊编程模式电路,则在所述存储器外部验证所述多个数据字到所述存储器中的编程。
14.如权利要求12所述的装置,其特征在于,所述存储器是非易失性存储器。
15.如权利要求13所述的装置,其特征在于,所述启用或禁用特殊编程模式电路的电路包括用于将特殊命令发送到所述存储器的电路。
16.如权利要求13所述的装置,其特征在于,所述存储器还包括一种电路,用于在禁用特殊编程模式命令从所述主处理器发送到所述存储器时,禁止再进入所述存储器的所述特殊编程模式。
17.如权利要求12所述的装置,其特征在于,所述特殊编程模式电路还包含被包括在存储器测试算法中的、如果启用所述特殊编程模式电路则确定要采用的编程脉冲的宽度和是否重复施加所述编程脉冲的算法。
18.如权利要求13所述的装置,其特征在于,在所述存储器外部验证的电路包括:
连接到所述主处理器、存储所述多个数据字的处理器存储器;以及
用于比较所述处理器存储器中存储的所述多个数据字与所述主处理器从所述存储器读取的多个数据字的电路。
19.一种包括存储器的、用于测试半导体存储器的装置,所述存储器包括:
除非被禁用、否则执行内部程序验证的装置;
用于在收到使能信号时禁用所述存储器的内部程序验证、以使得所述存储器进入特殊编程模式的装置,其中,在所述存储器的所述特殊编程模式期间,多个字被编程到所述存储器中,并由所述存储器外部的主处理器进行验证,这包括让所述主处理器读取被编程到所述存储器中的所述多个字,并将它们与由所述主处理器存储在连接到所述主处理器的处理器存储器之中的多个相应的字进行比较,其特征在于,如果由所述主处理器读取的所述多个字中的某字与由所述主处理器在所述处理器存储器中存储的所述多个相应的数据字中的某相应字的比较结果是彼此不同,则所述主处理器将(1)把该相应的字发送到所述存储器,以将其作为重新编程的数据字重新编程到所述存储器之中,而所述存储器此时不执行内部程序验证,(2)从所述存储器读取所述重新编程的数据字,和(3)在所述存储器外部验证所述重新编程的数据字。
20.如权利要求19所述的装置,其特征在于还包括主处理器,它包括:
一种装置,用于启用或禁用所述用于禁用所述存储器的内部程序验证的装置;
一种装置,用于当所述用于禁用内部程序验证的装置被启用时,把要编程到所述存储器中的多个数据字发送到所述存储器,而所述存储器此时不执行内部程序验证;
一种装置,用于当所述用于禁用内部程序验证的装置被启用时,在所述存储器外部验证所述多个数据字到所述存储器中的编程。
21.如权利要求19所述的装置,其特征在于,所述存储器是非易失性存储器。
22.如权利要求20所述的装置,其特征在于,所述存储器还包括一种装置,用于当禁用特殊编程模式命令从所述主处理器发送到所述存储器时,禁止再进入所述存储器的所述特殊编程模式。
CNB018227759A 2000-12-26 2001-11-28 用于测试半导体存储器的方法及装置 Expired - Fee Related CN100390904C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/748,825 US6834323B2 (en) 2000-12-26 2000-12-26 Method and apparatus including special programming mode circuitry which disables internal program verification operations by a memory
US09/748,825 2000-12-26

Publications (2)

Publication Number Publication Date
CN1502110A CN1502110A (zh) 2004-06-02
CN100390904C true CN100390904C (zh) 2008-05-28

Family

ID=25011093

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB018227759A Expired - Fee Related CN100390904C (zh) 2000-12-26 2001-11-28 用于测试半导体存储器的方法及装置

Country Status (5)

Country Link
US (1) US6834323B2 (zh)
CN (1) CN100390904C (zh)
GB (1) GB2387945B (zh)
TW (1) TW577084B (zh)
WO (1) WO2002052575A1 (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6834323B2 (en) 2000-12-26 2004-12-21 Intel Corporation Method and apparatus including special programming mode circuitry which disables internal program verification operations by a memory
US7007131B2 (en) * 2000-12-27 2006-02-28 Intel Corporation Method and apparatus including special programming mode circuitry which disables internal program verification operations by a memory
US7190603B2 (en) * 2004-05-07 2007-03-13 Halo Lsi, Inc. Nonvolatile memory array organization and usage
FR2874449B1 (fr) * 2004-08-17 2008-04-04 Atmel Corp Circuit de retard de programme auto-adaptatif pour memoires programmables
JP5014125B2 (ja) * 2005-05-30 2012-08-29 スパンション エルエルシー 半導体装置及びプログラムデータ冗長方法
KR100943141B1 (ko) * 2008-01-10 2010-02-18 주식회사 하이닉스반도체 불휘발성 메모리 소자의 프로그램 방법
JP2009272028A (ja) * 2008-04-07 2009-11-19 Renesas Technology Corp 半導体集積回路およびその動作方法
TWI452879B (zh) * 2010-04-27 2014-09-11 Univ Nat Sun Yat Sen 特殊應用網路晶片之全晶片拓樸產生合成方法
KR101949671B1 (ko) * 2012-06-28 2019-04-25 삼성전자 주식회사 라이프 싸이클을 증가시킬 수 있는 저장 장치 및 그 동작 방법
JP2022036654A (ja) * 2020-08-24 2022-03-08 キオクシア株式会社 メモリデバイス及びメモリシステム

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1035018A (zh) * 1988-01-27 1989-08-23 约翰弗兰克制造公司 在以微处理器为基础的装置内用于对存贮器进行高速高准确度的功能测试的方法和系统
US5526311A (en) * 1993-12-30 1996-06-11 Intel Corporation Method and circuitry for enabling and permanently disabling test mode access in a flash memory device
CN1218962A (zh) * 1997-09-29 1999-06-09 西门子公司 测试带有多个存储器簇的多簇存储器件的方法和装置
US5974499A (en) * 1997-04-23 1999-10-26 Micron Technology, Inc. Memory system having read modify write function and method

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2172127B (en) 1985-03-06 1988-10-12 Ferranti Plc Data compression system
ATE65632T1 (de) 1985-07-08 1991-08-15 Siemens Ag Verfahren zum kontrollieren eines speicherzugriffs auf einer chipkarte und anordnung zur durchfuehrung des verfahrens.
JPH081760B2 (ja) 1987-11-17 1996-01-10 三菱電機株式会社 半導体記憶装置
US5053990A (en) 1988-02-17 1991-10-01 Intel Corporation Program/erase selection for flash memory
JP2648840B2 (ja) 1988-11-22 1997-09-03 株式会社日立製作所 半導体記憶装置
US5016009A (en) 1989-01-13 1991-05-14 Stac, Inc. Data compression apparatus and method
US5333300A (en) 1991-02-11 1994-07-26 Intel Corporation Timing circuitry and method for controlling automated programming and erasing of a non-volatile semiconductor memory
JP3408552B2 (ja) 1991-02-11 2003-05-19 インテル・コーポレーション 不揮発性半導体メモリをプログラム及び消去する回路とその方法
US5559971A (en) 1991-10-30 1996-09-24 I-Cube, Inc. Folded hierarchical crosspoint array
US5412793A (en) 1991-12-03 1995-05-02 Intel Corporation Method for testing erase characteristics of a flash memory array
US5506803A (en) 1992-04-01 1996-04-09 Intel Corporation Apparatus and method for minimizing verify time in a semiconductor memory by constantly charging n-well capacitance
US5509134A (en) 1993-06-30 1996-04-16 Intel Corporation Method and apparatus for execution of operations in a flash memory array
FR2708763B1 (fr) 1993-06-30 2002-04-05 Intel Corp Dispositif de mémoire flash, procédé et circuit de traitement d'un ordre d'utilisateur dans un dispositif de mémoire flash et système d'ordinateur comprenant un dispositif de mémoire flash.
DE69427277T2 (de) * 1994-01-31 2001-09-13 St Microelectronics Srl Verfahren zur Programmierung und Prüfung eines nichtflüchtigen Speichers
US5729489A (en) * 1995-12-14 1998-03-17 Intel Corporation Programming flash memory using predictive learning methods
US5701266A (en) * 1995-12-14 1997-12-23 Intel Corporation Programming flash memory using distributed learning methods
US5796746A (en) 1995-12-22 1998-08-18 Micron Technology, Inc. Device and method for testing integrated circuit dice in an integrated circuit module
US5873113A (en) 1996-09-24 1999-02-16 Altera Corporation System and method for programming eprom cells using shorter duration pulse(s) in repeating the programming process of a particular cell
JPH11203266A (ja) 1998-01-07 1999-07-30 Mitsubishi Electric Corp マイクロコンピュータ
US6834323B2 (en) 2000-12-26 2004-12-21 Intel Corporation Method and apparatus including special programming mode circuitry which disables internal program verification operations by a memory

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1035018A (zh) * 1988-01-27 1989-08-23 约翰弗兰克制造公司 在以微处理器为基础的装置内用于对存贮器进行高速高准确度的功能测试的方法和系统
US5526311A (en) * 1993-12-30 1996-06-11 Intel Corporation Method and circuitry for enabling and permanently disabling test mode access in a flash memory device
US5974499A (en) * 1997-04-23 1999-10-26 Micron Technology, Inc. Memory system having read modify write function and method
CN1218962A (zh) * 1997-09-29 1999-06-09 西门子公司 测试带有多个存储器簇的多簇存储器件的方法和装置

Also Published As

Publication number Publication date
GB0315741D0 (en) 2003-08-13
WO2002052575A1 (en) 2002-07-04
TW577084B (en) 2004-02-21
GB2387945A (en) 2003-10-29
CN1502110A (zh) 2004-06-02
US6834323B2 (en) 2004-12-21
GB2387945B (en) 2004-10-06
US20020083381A1 (en) 2002-06-27

Similar Documents

Publication Publication Date Title
US5778440A (en) Floating gate memory device and method for terminating a program load cycle upon detecting a predetermined address/data pattern
KR100918707B1 (ko) 플래시 메모리를 기반으로 한 메모리 시스템
US4612640A (en) Error checking and correction circuitry for use with an electrically-programmable and electrically-erasable memory array
US7992009B2 (en) Device and method capable of verifying program operation of non-volatile memory and method card including the same
US5768287A (en) Apparatus and method for programming multistate memory device
CN101261879B (zh) 用于减少编程错误的多位闪存设备的编程方法
CN100587841C (zh) 非易失存储器器件及其编程方法
US20030061437A1 (en) Latched address multi-chunk write to EEPROM
US9785382B2 (en) Method and apparatus for read retry sequence for boot ROM
KR20190029056A (ko) 불휘발성 메모리 장치의 동작 방법 및 메모리 컨트롤러의 동작 방법
EP2301034B1 (en) Fast, low-power reading of data in a flash memory
CN100390904C (zh) 用于测试半导体存储器的方法及装置
US20100115344A1 (en) Macro and command execution from memory array
JP2004039112A (ja) 半導体記憶装置
JP2006024347A (ja) ビットスキャニングプログラムを実行する不揮発性メモリ装置
CN100431055C (zh) 用于测试半导体存储器的方法和装置
US6732306B2 (en) Special programming mode with hashing
US5784318A (en) Method of preprogramming before verifying in non-volatile memory device and apparatus for the same
US20090073759A1 (en) Device for protecting a memory against attacks by error injection
US20090180329A1 (en) Program method of nonvolatile memory device
JP4327626B2 (ja) 不揮発性半導体記憶装置
US6580637B2 (en) Semiconductor memory architecture
KR100388219B1 (ko) 플래쉬 메모리가 내장된 원칩 마이크로 콘트롤러 유닛
KR100632949B1 (ko) 낸드 플래시 메모리 장치 및 그것의 카피백 프로그램 방법
JPH10241377A (ja) 不揮発性半導体記憶装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20080528

Termination date: 20171128