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

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

Info

Publication number
CN100431055C
CN100431055C CNB018228755A CN01822875A CN100431055C CN 100431055 C CN100431055 C CN 100431055C CN B018228755 A CNB018228755 A CN B018228755A CN 01822875 A CN01822875 A CN 01822875A CN 100431055 C CN100431055 C CN 100431055C
Authority
CN
China
Prior art keywords
storer
words
programming mode
special programming
data
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
CNB018228755A
Other languages
English (en)
Other versions
CN1502111A (zh
Inventor
S·M·巴吉卡
P·D·鲁拜
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 CN1502111A publication Critical patent/CN1502111A/zh
Application granted granted Critical
Publication of CN100431055C publication Critical patent/CN100431055C/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/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/46Test trigger logic
    • 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

Abstract

描述了一种方法,包括通过将特殊编程访问代码输入到状态控制器中来启动存储器的特殊编程模式,其中该存储器包括用于程序验证的自动化电路,并且其中该特殊编程模式禁止由该存储器所进行的内部程序验证;在该存储器不执行内部程序验证的情况下,将多个字编程到该存储器中;和退出该存储器的特殊编程模式,其中由存储器内部的用于程序验证的自动化电路或者连接到存储器的验证处理器来验证被编程到存储器中的该多个字。还描述了一种装置,该装置具有主机处理器和具有特殊编程模式电路的存储器。

Description

用于测试半导体存储器的方法和装置
技术领域
本发明涉及到测试半导体存储器的领域。更具体而言,本发明涉及到一种用于半导体存储器的特殊编程模式,该特殊编程模式使用散列法来帮助优化半导体存储器的测试。
背景技术
近年来,不同的编程方法已经被开发出以编程非易失性存储器。图1展示现有技术的编程算法10,编程算法10用于不包括片内程序和擦除自动化电路的现有技术的非易失性可擦除可编程只读存储器(″EPROM″)。与EPROM相耦合的微处理器执行编程算法10。微处理器将100微秒的编程脉冲发送到EPROM。微处理器然后执行字验证,以便确定旨在要被编程到EPROM中的字是否已经被成功地编程了。如果对于试图编程一个字失败了25次,则该算法就终止。相反,如果该字被成功地编程了,则当该算法遍历每个地址时,就重复进行。
图2展示用于现有技术早期产生的闪速式非易失性存储器的现有技术编程算法15。与现有技术闪存相耦合的微处理器执行编程算法15。该闪存是以逐字为基础而被编程的。微处理器使用10微秒的超时将一个程序命令写到闪存。因此,该编程操作花费10微秒。
在每个编程操作之后,刚刚被编程的每个字都由该微处理器加以验证。程序验证操作是通过该微处理器将一个程序验证命令写入到闪存的命令寄存器中而被启动的。程序验证操作对于验证上次被编程的那个字是分阶段对闪存进行的。该闪存将内部生成的边沿电压(marginvoltage)施加到该字上。然后,微处理器执行一个读取周期以便将该字从闪存输出到微处理器。然后,微处理器就将从该闪存中所读取的数据字与微处理器试图要编程到闪存中的数据字进行比较。在所编程的字和当时数据之间的成功比较意味着:该字已被成功地编程了。如果该数据未被成功地被编程,则该编程和验证步骤就被重复25次的限度以试图编程该字。
图3展示一种现有技术的编程算法18,编程算法18用于包括片内程序和擦除自动化电路的后来产生的现有技术闪存。该片内程序和擦除自动化电路包括命令用户接口、写状态机、数据比较器以及状态寄存器。
编程算法18以与该闪存相耦合的微处理器将程序设置命令(即,十六进制的40)写入到闪存的命令用户接口为开始,接着是指定地址和数据的第二写操作。在成功地接受和解释所请求的程序操作之后,闪存的命令用户接口就将所翻译的信号转发到闪存的写状态机,然后接管,控制闪存之中的内部程序算法。具体而言,写状态机监控内部程序和验证电路来执行如下的任务:(1)程序脉冲控制,(2)脉冲重复控制,(3)超时控制,(4)程序验证,和(5)状态寄存器更新。
假设要写入的存储器单元以前已经被删除了(即,将存储了全部逻辑1),为了将该字编程到闪存阵列中,写状态机将预定宽度的编程脉冲发送到那些需要被从1编程到0的存储器单元。
然后,程序验证就采用两个步骤发生。边缘检测读取电压(margined-sensing read voltage)被施加到刚刚被编程的单元。得出的位线电流然后被单个地馈送到读出放大器,每个单元一个读出放大器。工厂设置的程序参考电路的输出,被调节到为Vtp(即,程序的门限电压),也被馈送到各个读出放大器中。读出放大器的输出然后被发送到数据比较器中,以便核对。这一核对将读出放大器的输出与数据寄存器的内容进行比较。
数据比较器将它的核对结果报告给写状态机,该写状态机接着确定是否要求重复脉冲。如果程序验证操作表明一个或者多个单元需要被重新编程,则上面的程序和程序验证步骤重复进行直到经验证所有这些单元都被成功地编程或者超时发生为止。当脉冲重复结束时,写状态机就发送一个信号以便更新该状态寄存器。
当写状态机忙时,状态寄存器的位7(即,SR.7)被设置为零。当写状态机结束(诸如当编程结束)并且已就绪待执行下一个操作时,状态寄存器的位7就被设置为1。如果状态寄存器的位4(即.SR4)被设置为1,则那就指明在编程该字时发生了错误。
如果数据字在此被编过程的地址不是最后的地址,则外部微处理器就增量该地址并且重复上面的操作。换句话说,微处理器向存储器发送十六进制的程序设置命令40,接着是指定所增量的地址和关联的数据字的写操作。存储器就对该数据字进行编程,执行内部程序验证,以及更新状态寄存器。上面的过程重复进行直到所有的数据字都被编程为止。
尽管因为外部微处理器被释放来处理其他任务,所以现有技术的片内程序验证总体上具有优点,但是片内程序验证却存在着一些缺点。使用片内程序验证,电压被连续地从低电平摆动到高电平且反之亦然,这样在总体上就延长了编程时间。而且,对于程序和程序验证操作的电压和时序设定常常被选择成处理最差情形的条件,这样也在总体上延长了编程时间。再者,程序命令要先于要被编程的每个数据字,又进一步地增加了对于长串数据字的编程时间。
发明内容
根据本发明的一个方面,提供一种方法,包括:
通过将特殊编程访问代码输入到状态控制器中来启动存储器的特殊编程模式,其中该存储器包括用于程序验证的自动化电路,并且其中该特殊编程模式禁止由该存储器所进行的内部程序验证;
将多个字编程到该存储器中而该存储器不执行内部程序验证;和
退出该存储器的特殊编程模式,
其中由存储器内部的用于程序验证的自动化电路或者连接到存储器的验证处理器来验证被编程到存储器中的该多个字。
根据本发明的另一方面,提供一种装置,包括:
存储器,包括:
用于在不被禁止的情况下执行内部程序验证的自动化电路;
用于当启动特殊编程模式电路时禁止由该存储器所进行的内部程序验证的特殊编程模式电路;和
主机处理器,包括:
用于在该存储器不执行内部程序验证的情况下向该存储器发送要被编程到该存储器中的多个字的电路;和
用于退出该存储器的特殊编程模式的电路。
附图说明
本发明是通过例子而加以说明的,并且不受到这些附图的限制,在这些附图中,相同的参考指示相似的元件,其中:
图1说明用于现有技术EPROM的现有技术编程算法,其中外部微处理器验证每个字的编程。
图2展示用于现有技术早期生成的闪存的现有技术编程算法,其中程序和程序验证命令被使用;
图3展示用于后来生成的现有技术闪存的现有技术编程算法,该闪存包括片内程序和擦除自动化电路;
图4展示根据本发明的实施例与闪速式非易失性存储器相耦合的主机处理器;
图5是一种包括特殊编程模式电路的闪速式非易失性存储器的框图;
图6展示与程序验证和该特殊编程模式相关联的闪存电路;
图7说明用于进入、退出、和禁止闪存的特殊编程模式的过程;
图8说明在特殊编程模式期间的编程操作;
图9展示在特殊编程模式期间的验证操作;
图9A说明一个实施例的候选编程序列;
图9B说明一个实施例的候选验证序列;
图10展示用于包括散列法的特殊编程模式的编程和验证过程;
图11展示用于进入该特殊编程模式的候选过程。
具体实施方式
描述一种特殊编程模式,它用于测试诸如闪速式非易失性存储器这样的半导体存储器。该特殊编程模式也被称为工厂编程模式,假设该模式常用于工厂设定,该工厂设定涉及半导体存储器已经被制造和封装之后对其进行的测试。
如在以下将更加详细地描述的,对于一个实施例,主机计算机-诸如微处理器-被耦合到闪速式非易失性存储器。微处理器将一个或者多个命令发送到闪存以便进入特殊编程模式。在特殊编程模式期间,闪速单元在不用闪存所进行的内部数据验证的情况下被编程。
闪存编程操作在速度上被优化。主机微处理器通过将禁止工厂编程模式命令发送到闪存从而能够持久地禁止今后进入到该工厂编程模式中。
本发明的实施例有助于减小用于测试闪存以查看该闪存是否能够被成功地编程所花费的时间。在闪存的测试时间上的减小能够帮助来提高制造包含闪存的产品的总效率,尤其是在量非常大的时候。本发明的实施例有助于优化闪存的数据编程。
图4展示用于特殊编程模式操作,也被称为工厂编程模式操作的部件的安排。主机计算机22经由线26被耦合到非易失性闪存24。线26包括用于传送地址、控制、和数据信号的总线。主机计算机22可以是微处理器或者其他计算装置,诸如微控制器、个人计算机、个人数字助理、网络处理器、工作站、或者大型计算机。主机处理器22监视对闪存24的测试。尽管对于本发明的一个实施例,存储器24是闪存,但是其他类型的半导体存储器也是可以使用的。此外,对于本发明的其他实施例,存储器24能够被嵌入在包含其他电路的芯片或者器件中。例如,存储器24能够被嵌入在包含数字和模拟电路以及其他存储器的片内系统中。
主机处理器22包括使用特殊编程模式编程存储器24的处理电路33。该特殊编程模式允许主机处理器22发送数据字以便由存储器24加以编程,并且允许存储器24进入特殊编程模式,其中数据验证是由主机处理器22在外部进行的。主机处理器22的电路33包括用于在特殊编程模式期间执行外部数据验证的电路。
主机处理器22还被耦合到存储器34,存储器34存储用于处理器22的代码和数据。在存储器34中所存储的代码包括由主机处理器22测试存储器24所使用的算法。该存储器测试算法包括一种对依赖于由主机处理器22进行外部编程验证的存储器24进行编程的算法。存储器34还存储由主机处理器22使用的数据。主机处理器22所使用的数据包括要被编程到存储器24中的数据。主机处理器22还将存储器34用作暂时存储器,以便存储从存储器34中所读取的且作为由主机处理器22所执行的外部程序验证例程的数据。
对于一个实施例,存储器34是DRAM。针对其他实施例,其他类型的半导体存储器也是可以使用的。对于另外的其他实施例,存储器34可以包括硬盘存储器或者非易失性存储器。对于一个实施例,存储器34位于主机处理器22的外部。对于其他实施例,存储器34可以作为主机处理器22的一部分而被包含,例如,形成单片系统。
对于一个实施例,存储器24是一种包括写自动化电路的闪速式非易失性存储器。存储器24包括与闪存阵列20相耦合的控制电路28。控制电路28包括允许存储器24进入或者退出特殊编程模式的特殊编程模式电路32。在该特殊编程模式期间,存储器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是一个16KB主块。块20b是一个8KB参数块。块20c是一个8KB参数块。块20d是一个96KB主块。块20e是一个128KB主块。此外,块20x是一个128KB主块。闪速阵列20的其他128KB主块未被示出。
控制总线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选通/检测电路74的高电压电路的实现算法,以便将电荷施加到阵列20的闪速单元上,并且将电荷从阵列20的闪速单元上释放掉。
写状态机28生成这样的信号,该信号启动选通要求编程的阵列20的位或者要擦除的阵列20的块。写状态机28还生成用于监控选通脉冲宽度和关联的定时的信号。写状态机28生成用于控制数据比较器81的信号。写状态机28生成用于从数据比较器81请求反馈以便确定脉冲重复控制和提供对状态寄存器83进行更新的信号。写状态机28生成为擦除预处理或者擦除验证而启动地址计数器63的信号。
Y选通/检测电路74包括用于访问阵列20的读/写路径电路。更具体而言,Y选通/检测电路74包括为擦除功能将合适的电压电平施加到阵列20的源开关电路。Y选通/检测电路74还包括在编程期间将编程电平电压驱动到阵列20的位线上的程序加载电路。
主机处理器22通过用户地址总线102传送地址同时通过用户控制总线106发出读取周期信号来读取阵列20。命令用户接口电路40检测该读取周期,并使地址锁存器62将该地址从用户地址总线102传送通过到X译码器71和Y译码器72。命令用户接口电路40还使输出多路复用器45通过用户数据总线104传送来自Y选通/检测电路74的读取数据。
主机处理器22通过线26将数据写入阵列20,生成写周期,以便将程序命令和数据传送到命令用户接口电路40。命令用户接口电路40验证至写状态机28的程序命令,并且对至写状态机28的程序命令、地址和数据参数进行排队。写状态机28通过在指定地址将指定的数据编程到阵列20中来执行程序操作。
写状态机28包括用于启用或者禁止闪存24的特殊编程模式的电路32。当特殊编程模式被电路32启动时,写状态机28就阻止验证被写入到存储器阵列20中的数据。程序数据的验证是闪存24的正常操作。
闪存24的正常验证操作在以下参考图5和6进行解释。图6更加详细地展示闪存24的确定电路。数据比较器81是由闪存24所进行的正常程序验证操作的中枢。数据比较器81由写状态机28控制。写状态机28在程序验证和擦除验证操作期间应用数据比较器81。数据比较器81相对于存储在设备数据寄存器91中的数据来核对阵列20的刚刚被编程的单元。对于擦除验证,数据比较器81相对于十六进制的数据值FFFF来比较被擦除的单元。被擦除的单元经由地址计数器电路63被循环通过数据比较器81。
对于程序验证和擦除验证,数据比较器81将它的核对的结果报告给写状态机28,写状态机28接着确定是否需要脉冲重复。如果不需要脉冲重复,则写状态机28发送一个信号以便更新状态寄存器程序或者擦除状态位,该位被反映在状态寄存器83中。
对于正常的程序验证,边沿功能(margining function)就正好发生在数据比较器81所作的数据比较之前。对于程序验证,从包含阵列20的程序单元的程序边沿偏置读取(program margin bias read)中导出的电流IPMRGN,与参考电流IPREF一起被馈送到16个读出放大器117a-117p(呈现为一个16位的字)之一,参考电流IPREF是来自工厂设置的程序参考电路111的电流。边沿电流(margin current)IPMRGN是从施加到刚刚被编程的单元的升高的读取电压导出的。
如果IPMRGN小于IPREF,则读出放大器117a-117p的特定读出放大器就输出逻辑1。这一操作对于8或者16位是并行地进行的,取决于程序操作的总线宽度。来自读出放大器117a-117p的8位或者16位输出值被发送到数据比较器81,以便相对于存储在数据寄存器91中的数据进行核对。
图5所示的写状态机28的特殊编程模式电路32能够禁止写状态机28所使用的程序验证过程。电路32能够临时地禁止写状态机28所进行的程序验证或者持久地禁止写状态机28所进行的程序验证。对于本发明的一个实施例,电路32包括在阵列20中所存储的代码和相关电路,该相关电路用于禁止闪存24内的程序验证过程。程序验证过程能够被临时地禁止对某些数据字进行编程,或者程序验证过程能够被持久地禁止以便防止存储器24的外部用户进入到特殊编程模式。在特殊编程模式期间,电路32禁止程序验证。
图5所示的状态寄存器83是闪存24的自动化电路中的另一个部件。状态寄存器83由作为至闪存24的外部世界的接口的位组成。写状态机28接收来自它的支持电路的反馈,由此允许写状态机28使状态寄存器83保持最新并使命令用户接口40保持不落后。状态寄存器的位7指示写状态机是已就绪来接收另外的命令(逻辑1)还是正忙着执行任务(逻辑0)。状态寄存器83的位4指示程序状态。如果状态寄存器83的位4是逻辑1,则那就指示在字/字节编程中存在错误。如果程序状态的位4是逻辑0,则那就指示成功编程了字/字节。
在CE#或者OE#的下降沿,在读取周期中无论那一个在后面出现,状态寄存器的内容被驱出到数据总线104的位DQ0-DQ7上。任一引脚都必须被驱动到高,然后再次被驱动到低,以便将所更新的内容发送到输出缓冲器53和54。主机处理器22然后通过数据线104读取状态寄存器83的输出。
图7是展示用于进入、退出、和禁止闪存24的特殊编程模式的过程的状态图。图7中用括号括起来的信息指示命令用户接口40的状态。在圆圈之内的、括起来的信息下面的信息指示闪存24的输出多路复用器45的状态。
特殊编程模式过程开始于操作或者状态150,主机处理器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指示。
反之,对于参考图7所描述的本发明的实施例,写状态机28在状态156仍然处于忙,直到多个数据字的整个流都被编程到闪存阵列20中为止。写状态机28的″忙″状态由存储在状态寄存器83的位7的逻辑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。写状态机28和特殊编程模式电路32通过监视数据总线104和地址总线102再次检查数据流的终止条件。如果没有遇到数据流的终止条件,则在过程块212,内部地址计数器63就再次被写状态机28增量。对于另一个实施例,下一个地址是来自主机22。过程流然后继续到过程块208,并且在数据流中的下一个字被写状态机28和特殊编程模式电路32编程到闪存阵列20中。那个字被编程到由内部地址计数器63所指示的下一个地址。对于另一个实施例,下一个地址是来自主机22。过程流然后再次移动到过程块210,在此处检查数据流的终止条件。
从过程块208到过程块210到过程块212并返回到过程块208的移动顺序持续到数据流中的所有数据字都被编程为止。
特殊编程模式电路32确保在特殊编程模式期间的数据流期间,闪存24不进行内部程序验证。因此,主机处理器22通过线26正发送到闪存24的数据流不被主机处理器22发出的任何命令中断。换句话说,对于要编程到闪存24中的数据流中的每个字,主机处理器22不发送独立的程序命令。对于正在编程到闪存24中的每个数据字,闪存24也不执行内部程序验证。
各种数据流的终止条件对于各种实施例都是可能的。对于一个实施例,在数据流状态期间,相同的地址被发送到总线102上。如果主机处理器22改变在地址总线102上所发送的且与十六进制的数据字FFFF相耦合的地址,则那个条件就成为数据流的终止条件。换句话说,写状态机28和特殊编程模式电路32检查地址总线102上的地址和数据总线104上的数据字,并且如果它们查看到改变的地址和对应的数据字十六进制的FFFF,则它们就注意到数据流的终止条件已经被触发了。对于那个实施例的变型,为了触发数据的终止条件,所改变的地址不需要伴随十六进制的数据字FFFF。
对于另一个依靠主机22将各种地址与数据一起发送的实施例,数据的终止条件可以是发送与十六进制的数据字FFFF相耦合的上一个地址相同的地址。对于那个实施例的变化,为了触发数据的终止条件,相同的地址不需要伴随十六进制的数据字FFFF。
对于本发明的另一个实施例,相对于状态156的数据流的终止条件是从主机处理器22通过数据总线104将所有1为逻辑的数据字发送到闪存24。换句话说,在数据流中的最终数据字被指定为十六进制的FFFF。本发明的一个实施例,在工厂中,闪存24在特殊编程模式期间处于测试之中,因此测试说明书提出了要求:为了测试起见在数据流中要被编程的最后数据字是一个包括逻辑全部为1的数据字。
对于本发明的又另一个实施例,测试说明书要求:在数据流期间通过地址总线102所发送的地址对于每个存储器字都进行增量。换句话说,在这一特殊编程模式数据流状态期间,随着新的数据字从主机处理器22通过数据总线104被发送,该地址就增量。对于该实施例,数据流的终止条件由地址总线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中的数据流中的第一数据字。当接收到来自主机处理器的读取命令时,命令用户接口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,闪存24的写状态机28和特殊编程模式电路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。命令用户接口然后从状态152移动到状态158,如图7所示。主机处理器22发送相对于每个被重新编程的数据字的读取命令。闪存阵列24以边沿读取电平读取该被重新编程的数据字并且通过线26将那些数据字发送到主机存储器22。当每个数据字被接收到时,主机处理器22然后相对于在临时存储器34中所存储的期望数据字来验证(即,比较)每个数据字。
过程流然后移动到过程块282,如9图所示。在过程块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中,但是即使该位或者寄存器曾经被置位成持久地禁止特殊编程模式也是可以被制造商访问和修改的。
对于一个实施例,将特殊编程访问代码输入到命令用户接口40中启动存储器的特殊编程模式。如以下更加详细地进行的描述,然后,多个字就被编程到存储器中。因为特殊编程模式被启动了,所以内部验证就被禁止。然后,退出存储器的特殊编程模式。
图9A说明一个实施例的候选编程序列。首先,在过程块300,读取状态寄存器。对于一个实施例,当状态寄存器的读数是0时,则程序(PGM)阶段已就绪开始,如过程块302中所展示的。接着,在过程块304,将数据写入到存储器。数据被连续地发送直到程序时间(Xns)已经到时(即,超时)为止,如过程块306所展示的。接着,在过程块308,检查最后的数据。如果最后的数据字未被发送到存储器,则该程序过程就重复进行,如过程块304、306所展示的。如果最后数据字已被发送到了存储器,则该程序阶段通过将FFFF写入块地址中,然后结束,如在过程块310所展示的。
图9B说明一个实施例的候选验证序列。验证或者可以通过外部验证处理器或者可以通过存储器内部的验证处理器(如果被启动的话)来加以实现。首先,在过程块312、313,状态被检查以便确定验证阶段是否已就绪。接着,在过程块314,在程序阶段期间所发送的相同的数据字被重新发送到存储器,并且所重新发送的数据字被与在程序阶段期间发送到存储器的数据字进行比较。对于一个候选,在该程序阶段期间,数据字可以被发送到存储器和第二存储器这二者。对于一个实施例,如果在验证步骤314期间,这些字中的任何一个没有验证,则字的整个块就如上述的那样被重新编程到存储器中。该验证然后被重复进行。对于候选实施例,如果在验证步骤314期间,这些字中的任何一个没有验证,则该未验证的一个字必须被重新编程,并且验证也被重复进行。接着,在过程块315、316,该状态被检查以便确定验证阶段是否完成了。如果最后的数据字被验证了,则该程序阶段就通过将FFFF写入到不同的地址中,然后结束,如过程块318所展示的。
图10展示用于包括散列的特殊编程模式的编程和验证过程320。对于图10所示的操作320,一般适用如图7所示的过程流,除了添加由闪存24进行的散列以外。
对于操作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导致散列算法来相对于由闪存编程的最后的数据字和散列算法的前一次输出而执行散列运算。作为结果的散列值被存储到阵列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会在它的存储器34中存储会由数据流字和来自闪存24中的期望状态信息的散列产生的期望散列值。数据字以外的状态信息的散列会允许主机处理器22检查数据流的正确编程以外的由闪存24所进行的正确运算。例如,如果出现了阻塞错误,则候选散列过程可以捕获那个错误。如果对状态信息和数据字进行了散列,则写状态机28和特殊编程模式32会监视散列算法的运行。
图11说明用于进入该殊编程模式的候选过程402。取代使用从主机处理器22发送到闪存24的单个特殊编程模式命令,过程402使用最终用户不可能仿效的命令序列。因此,过程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就在总线26的顺序总线周期上将一系列特殊编程模式命令发送到闪存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为止,状态160是命令用户接口40的状态的状态。
因此,该真实的特殊编程模式状态仅仅在一系列n个特殊编程模式命令被在总线周期中顺序地发送时才得以进入。对于本发明的一个实施例,整数″n″是10,这意味着10个特殊编程模式命令。不过,其他的n值也是可能的。
对于图11所示的候选实施例,在已经退出特殊编程模式之后,主机处理器22能够将禁止特殊编程模式命令发送到闪存24,以便禁止过程402在以后的任何时候导致闪存24进入特殊编程模式。换句话说,主机处理器22能够发送禁止特殊编程模式命令,该禁止特殊编程模式命令会持久地禁止特殊编程模式。
相对于过程402的候选是可能的。附加循环或者复杂过程可以被添加以便防止用户闯入到特殊编程模式中。因此,进一步的复杂性可以被添加到特殊编程模式命令序列,以便进一步地增加进入特殊编程模式的难度。如果特殊编程模式没有被持久地禁止,则可以使用上述的进一步安全性。例如,闪存24的制造商也许不想持久地禁止闪速特殊编程模式,因为在闪存24被用在客户的领域之后,制造商想使用特殊编程模式来查找闪存24的故障。进入特殊编程模式的复杂过程允许有助于防止用户有意地或者偶然地进入特殊编程模式,但是仍允许知识丰富的制造商代表来遵循进入特殊编程模式的正确过程。
在前面的说明中,已经参考本发明的具体示范性实施例,对本发明进行了描述。不过,显而易见的是,在不背离所附的权利要求阐述的本发明的较宽精神和范围的情况下,可以对本发明进行各种修改和改变。因此,对于这些说明和附图,应该从说明性而不是限制性的角度来看待。

Claims (22)

1.一种方法,包括:
通过将特殊编程访问代码输入到状态控制器中来启动存储器的特殊编程模式,其中该存储器包括用于程序验证的自动化电路,并且其中该特殊编程模式禁止由该存储器所进行的内部程序验证;
将多个字编程到该存储器中而该存储器不执行内部程序验证;和
退出该存储器的特殊编程模式,
其中由存储器内部的用于程序验证的自动化电路或者连接到存储器的验证处理器来验证被编程到存储器中的该多个字。
2.权利要求1的方法,还包括:
在退出该存储器的特殊编程模式之后,通过将以前发送的多个字重新发送到该存储器中,用验证处理器来验证被编程到存储器中的该多个字,其中该验证处理器是一个外部主机处理器。
3.权利要求2的方法,还包括:
启动由该存储器所进行的内部程序验证,并且其中该验证是由该存储器内部的程序验证处理器执行的。
4.权利要求2的方法,其中验证还包括:
通过该验证处理器确定在该多个字中的所有字是否都被验证了;
如果该多个字中有任何一个字没有验证,则重复对该全体多个字的编程,并且重复该验证;和
如果该多个字全部都验证了,则退出该存储器的特殊编程模式。
5.权利要求2的方法,其中验证还包括:
通过该验证处理器确定在该多个字中的所有字是否都被验证了;
如果该多个字中有任何一个字没有验证,则重复对没有验证过的那一个字的编程,并且重复该验证;和
如果该多个字全部都验证了,则退出该存储器的特殊编程模式。
6.权利要求1的方法,其中退出该存储器的特殊编程模式持久地禁止该特殊编程用户接口。
7.权利要求1的方法,其中退出该存储器的特殊编程模式允许该存储器进行内部程序验证。
8.权利要求1的方法,其中将该多个字编程到该存储器中还包括:
对于该多个字中的每个字的每一位,仅仅使用单一的编程脉冲。
9.权利要求1的方法,其中在该存储器不执行内部程序验证的情况下将该多个字编程到该存储器中持续进行,直到遇到编程结束条件为止。
10.权利要求9的方法,其中该编程结束条件是预先选择的时间。
11.权利要求9的方法,其中该编程结束条件是结束地址。
12.一种装置,包括:
存储器,包括:
用于在不被禁止的情况下执行内部程序验证的自动化电路;
用于当启动特殊编程模式电路时禁止由该存储器所进行的内部程序验证的特殊编程模式电路;和
主机处理器,包括:
用于在该存储器不执行内部程序验证的情况下向该存储器发送要被编程到该存储器中的多个字的电路;和
用于退出该存储器的特殊编程模式的电路。
13.权利要求12的装置,其中该主机处理器还包括用于验证被编程到该包括验证处理器的存储器中的多个字的电路。
14.权利要求13的装置,进一步包括一个外部主机处理器用于验证被编程到该存储器中的多个字。
15.权利要求13的装置,还包括启动由该存储器所进行的内部程序验证,并且其中该验证处理器是该存储器的内部程序验证处理器。
16.权利要求13的装置,还包括:
用于确定该多个字中的所有字是否都被验证的电路,包括:
与该主机处理器相耦合的第二存储器;和
用于比较在第二存储器中所存储的多个字和由该主机处理器从包括验证处理器的该存储器中所读取的多个字的电路。
17.权利要求16的装置,还包括:
用于在该被编程到该存储器中的多个字中的任何一个没有通过验证的情况下对该全体多个字进行重新编程的电路。
18.权利要求16的装置,还包括:
用于在该被编程到该存储器中的多个字中的任何一个字没有通过验证的情况下对该一个字进行重新编程的电路。
19.权利要求12的装置,其中该用于退出存储器的特殊编程模式的电路禁止该特殊编程模式。20.权利要求12的装置,其中该用于退出存储器的特殊编程模式的电路允许由该存储器进行内部程序验证。
21.权利要求12的装置,其中当遇到编程结束条件时,就禁止该特殊编程模式。
22.权利要求21的装置,其中该编程结束条件是预先选择的时间。
23.权利要求21的装置,其中该编程结束条件是结束地址。
CNB018228755A 2000-12-27 2001-11-28 用于测试半导体存储器的方法和装置 Expired - Fee Related CN100431055C (zh)

Applications Claiming Priority (2)

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

Publications (2)

Publication Number Publication Date
CN1502111A CN1502111A (zh) 2004-06-02
CN100431055C true CN100431055C (zh) 2008-11-05

Family

ID=25026964

Family Applications (1)

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

Country Status (6)

Country Link
US (1) US7007131B2 (zh)
CN (1) CN100431055C (zh)
DE (1) DE10197113B3 (zh)
GB (1) GB2388227B (zh)
TW (1) TWI250529B (zh)
WO (1) WO2002052576A1 (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6859399B1 (en) 2000-05-17 2005-02-22 Marvell International, Ltd. Memory architecture and system and multiport interface protocol
EP1318440B1 (en) * 2001-12-04 2005-08-17 STMicroelectronics S.r.l. Architecture and method of managing an interface based on a finite states machine
US20040049617A1 (en) * 2002-09-05 2004-03-11 Integrated Circuit Solution Inc. Method of firmware update by USB interface
JP5055971B2 (ja) * 2006-11-16 2012-10-24 株式会社ニコン 表面処理方法及び表面処理装置、露光方法及び露光装置、並びにデバイス製造方法
US9727277B2 (en) * 2012-12-21 2017-08-08 Sandisk Technologies Llc Storage device and method for enabling hidden functionality
JP2014225309A (ja) 2013-05-16 2014-12-04 ピーエスフォー ルクスコ エスエイアールエルPS4 Luxco S.a.r.l. 半導体装置
CN104217757B (zh) * 2013-05-31 2018-01-05 华邦电子股份有限公司 非易失性存储器的编程方法
US9798493B2 (en) * 2013-12-16 2017-10-24 International Business Machines Corporation Firmware bypass for medium-access commands

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 (21)

* 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
DE3680476D1 (de) 1985-07-08 1991-08-29 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
JP3408552B2 (ja) 1991-02-11 2003-05-19 インテル・コーポレーション 不揮発性半導体メモリをプログラム及び消去する回路とその方法
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
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
EP0665558B1 (en) * 1994-01-31 2001-05-23 STMicroelectronics S.r.l. Method for programming and testing a non-volatile memory
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.
JP3015661B2 (ja) * 1994-04-27 2000-03-06 株式会社東芝 不揮発性半導体メモリ
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
CN1502111A (zh) 2004-06-02
DE10197113T1 (de) 2003-12-04
DE10197113B3 (de) 2013-09-12
TWI250529B (en) 2006-03-01
US20020080652A1 (en) 2002-06-27
GB0315744D0 (en) 2003-08-13
US7007131B2 (en) 2006-02-28
GB2388227B (en) 2005-04-20
GB2388227A (en) 2003-11-05
WO2002052576A1 (en) 2002-07-04

Similar Documents

Publication Publication Date Title
US5619453A (en) Memory system having programmable flow control register
US5778440A (en) Floating gate memory device and method for terminating a program load cycle upon detecting a predetermined address/data pattern
US5621687A (en) Programmable erasure and programming time for a flash memory
EP0944907B1 (en) Bank architecture for a non-volatile memory enabling simultaneous reading and writing
US5742787A (en) Hardware reset of a write state machine for flash memory
CN100524521C (zh) 操作非挥发性存储器器件的方法和集成电路
US7149119B2 (en) System and method of controlling a three-dimensional memory
CN101040344B (zh) 可编程存储器电路及改进其单元阵列中数据保持的方法
CN100587841C (zh) 非易失存储器器件及其编程方法
US20040003167A1 (en) Microcomputer
WO1998028745A1 (en) Nonvolatile writeable memory with fast programming capability
JPH0632226B2 (ja) メモリの消去法およびプログラミング法
CN101027729A (zh) 非易失性存储装置的初始化控制方法以及非易失性存储装置
CN100431055C (zh) 用于测试半导体存储器的方法和装置
KR100334173B1 (ko) 마이크로컴퓨터
US5751944A (en) Non-volatile memory system having automatic cycling test function
CN100390904C (zh) 用于测试半导体存储器的方法及装置
US5412793A (en) Method for testing erase characteristics of a flash memory array
JP2006024347A (ja) ビットスキャニングプログラムを実行する不揮発性メモリ装置
CN112997139B (zh) 存储器子系统中的数据擦除
US20050195655A1 (en) Write state machine architecture for flash memory internal instructions
US6732306B2 (en) Special programming mode with hashing
CN109493911A (zh) 存储器控制器的操作方法、以及存储器件及其操作方法
KR100634432B1 (ko) 카피백 프로그램 동작 중에 에러를 검출하는 낸드 플래시메모리 장치 및 에러 검출 방법
US6981107B2 (en) Fast programming method for nonvolatile memories, in particular flash memories, and relative memory architecture

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
C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20081105

Termination date: 20101128