半导体存储装置
[相关申请]
本申请享有以日本专利申请2014-187040号(申请日:2014年9月12日)作为基础申请的优先权。本申请通过参照该基础申请而包含基础申请的所有内容。
技术领域
本实施方式涉及一种半导体存储装置。
背景技术
近年来,作为用于提高NAND(与非)型闪存的比特密度的方法,提出有将存储单元晶体管积层在半导体衬底的上方的3维积层型NAND闪存,所谓BiCS(Bit-Cost Scalable,比特可变成本)闪存的存储器。
发明内容
本发明的实施方式提供一种高品质半导体存储装置。
实施方式的半导体存储装置包括:具备多个存储单元晶体管的存储单元阵列,连接于多个所述存储单元晶体管的栅极电极的多条字线,对所述存储单元晶体管进行数据的写入的控制电路,以及存储连接于所述存储单元晶体管的每条字线的编程条件数据的寄存器,所述控制电路在接收第一指令前接收第二指令的情况下,使用存储在所述寄存器的所述编程条件数据,决定编程电压,基于所述第一指令,对特定所述字线施加编程电压。
附图说明
图1是表示第一实施方式的存储器系统的框图。
图2是表示第一实施方式的存储单元阵列的框图。
图3是表示第一实施方式的区块BLK0的电路图的一部分。
图4是表示第一实施方式的NAND串的剖面图。
图5(a)是表示第一实施方式的存储单元晶体管MT的阈值分布的初始状态。图5(b)是表示下位比特写入完成后的第一实施方式的存储单元晶体管MT的阈值分布。图5(c)是表示第一编程的上位比特写入、或者第二编程完成后的第一实施方式的存储单元晶体管MT的阈值分布。
图6是表示第一实施方式的页面的一例的图。
图7是表示第一实施方式的半导体存储装置的编程动作的流程图。
图8是表示第一实施方式的指令顺序的一例的图。
图9是表示第一实施方式的指令顺序的一例的图。
图10是表示第一实施方式的半导体存储装置的编程动作的流程图。
图11是表示第一实施方式的撷取动作时的图。
图12是表示第一实施方式的半导体存储装置的编程动作的流程图。
图13是表示第一实施方式的上位页面编程动作时的图。
图14(a)~(d)是表示决定第一实施方式的上位页面编程用的初始编程电压的方法的图。
图15(a)~(d)是表示决定第一实施方式的上位页面编程用的初始编程电压的方法的图。
图16是表示第一实施方式的半导体存储装置的编程动作的流程图。
图17是表示第一实施方式的下位页面编程动作时的图。
图18(a)~(d)是表示决定第一实施方式的下位页面编程用的初始编程电压的方法的图。
图19(a)~(d)是表示决定第一实施方式的下位页面编程用的初始编程电压的方法的图。
图20是表示第一实施方式的半导体存储装置的编程动作的流程图。
图21是表示第一实施方式的具体例的串单元的概略图。
图22(a)、(b)是表示第一实施方式的具体例1及具体例2的编程动作所需的时间的图。
图23是表示第二实施方式的半导体存储装置的编程动作的流程图。
图24是表示第二实施方式的指令顺序的一例的图。
图25是表示第二实施方式的指令顺序的一例的图。
图26是表示第二实施方式的半导体存储装置的编程动作的流程图。
图27是表示第二实施方式的撷取动作时的图。
图28是表示第二实施方式的半导体存储装置的编程动作的流程图。
图29是表示第二实施方式的半导体存储装置的编程动作的流程图。
图30是表示第三实施方式的存储器系统的框图。
图31是表示第三实施方式的指令顺序的一例的图。
图32是表示第四实施方式的存储器系统的框图。
图33是表示第四实施方式的编程动作的概要的图。
图34是表示第四实施方式的半导体存储装置的编程动作的流程图。
图35是表示第四实施方式的半导体存储装置的编程动作的流程图。
图36是表示第四实施方式的半导体存储装置的编程动作的流程图。
图37是表示第四实施方式的半导体存储装置的编程动作的流程图。
图38是表示第四实施方式的指令顺序的一例的图。
具体实施方式
以下参照附图对实施方式进行说明。另外,以下说明中,对具有大致相同的功能及构成的构成要素附上相同符号,仅在需要时进行重复说明。而且,以下所示的各实施方式是例示用以将本实施方式的技术思想具体化的装置或方法者,实施方式的技术思想并未将构成零件的材质、形状、结构、配置等特定为下述内容。实施方式的技术思想可在权利要求书范围内添加各种变更。
而且,以下,作为NAND闪存的一例,列举3维积层型NAND闪存来说明各实施方式。
(第一实施方式)
<存储器系统>
使用图1对第一实施方式的存储器系统进行说明。
第一实施方式的存储器系统100具有存储器控制器(memory controller)110、及NAND闪存(非易失性半导体存储装置)120。另外,存储器系统100也可包含主机设备200。
<存储器控制器>
存储器控制器110包含主机接口(Host interface)111、RAM(Random AccessMemory,随机存取存储器)112、ECC(Error Correcting Code,错误校正码)电路113、CPU(Central Processing unit,中央处理器)114、ROM(Read Only Memory,只读存储器)115、及闪存接口(Flash memory interface)116。
存储器控制器110将NAND闪存120的动作所需的指令等输出到NAND闪存120。存储器控制器110通过将该指令输出到NAND闪存120而进行从NAND闪存120的数据读出(读取)、向NAND闪存120的数据的写入(写入动作包含多个循环、1个循环包含编程动作与编程验证动作)、或者NAND闪存120的数据的删除等。
主机接口111经由数据总线而与个人计算机等主机设备(简称作主机等)200连接。经由该主机接口111,在主机设备200与存储器系统100之间进行数据的收发等。
RAM112例如为易失性存储器,存储用于例如CPU114进行动作的动作程序等。
ECC电路113在从主机设备200接收到数据的情况下,对接收数据附加错误校正码。而且,ECC电路113将附加了错误校正码的数据供给到例如闪存接口116。而且,ECC电路113经由闪存接口116接收从NAND闪存120供给的数据。而且,ECC电路113使用错误校正码对来自NAND闪存120的接收数据进行错误校正。而且,ECC电路113对主机接口111供给进行了错误校正的数据。
CPU114进行存储器系统100整体的动作。CPU114基于存储在RAM112及ROM115的数据控制NAND闪存120。另外,如所述那样,在主机设备200包含于存储器系统100的情况下,CPU114也进行存储器系统100整体的动作。
ROM115为非易失性存储器,存储用于例如CPU114动作的动作程序等。
闪存接口116上经由数据总线而连接着NAND闪存120。
<NAND闪存>
NAND闪存120包括输入输出缓冲器(Input/Output buffer)121、控制电路(Control Circuit)122、列地址缓冲器/列解码器(Column address buffer/Columndecoder)123、失效比特计数器电路(Fail bit counter circuit)124、数据锁存电路(DataLatch Circuit)125、感测放大器(Sense Amplifier)126、行地址缓冲器(Row AddressBuffer)127、行解码器(Row Decoder)128及存储单元阵列(Memory Cell Array)130。
存储单元阵列130为多个非易失性存储单元晶体管相对于半导体衬底在垂直方向上积层而成的3维非易失性半导体存储装置。关于存储单元阵列130的详细构成将于以后进行叙述。
感测放大器126在数据的读出动作时,在SEN节点(未图示)处感测从存储单元晶体管读出到比特线的数据。而且,感测放大器126在数据的写入动作时,在感测放大器的SEN节点设定与编程数据相应的编程电压。对存储单元阵列130的数据的读出及写入以多个存储单元晶体管单位(后述的页面单位)进行。感测放大器126接收从列地址缓冲器/列解码器123输入的比特线选择信号,并经由比特线选择晶体管(未图示)选择并驱动比特线BL中的任一者。
另外,写入动作包括:将电荷注入到存储单元晶体管MT的电荷蓄积层而使阈值上升的编程电压施加动作(也称作编程动作等),及确认作为该编程电压施加动作的结果的阈值分布的变化的编程验证动作。
数据锁存电路125包括分别包含SRAM等的第一高速缓存(cache)125a、第二高速缓存125b及第三高速缓存125c。第一高速缓存125a、第二高速缓存125b及第三高速缓存125c分别存储从存储器控制器110供给的数据或由感测放大器126侦测的验证结果等。而且,第一高速缓存125a、第二高速缓存125b及第三高速缓存125c分别保持1页面量的数据。关于页面的定义将于以后进行叙述。
失效比特计数器电路124根据存储在数据锁存电路125的验证的结果而对编程未完成的比特数进行计数。
列地址缓冲器/列解码器123暂时地存储从存储器控制器110经由输入输出缓冲器121而输入的列地址信号。而且,将依据列地址信号选择比特线BL中的任一者的选择信号输出到感测放大器126。
行解码器128对经由行地址缓冲器127输入的行地址信号进列解码,选择并驱动存储单元阵列的字线WL及选择栅极线SGD、SGS。而且,该行解码器128具有选择存储单元阵列130的区块的部分与选择页面的部分。
再者,第一实施方式的NAND闪存120具有未图示的外部输入输出端子I/O,经由该外部输入输出端子I/O进行输入输出缓冲器121与存储器控制器110的数据的授受。经由外部输入输出端子I/O而输入的地址信号经由行地址缓冲器127输出到行解码器128及列地址缓冲器/列解码器123。
控制电路122基于经由存储器控制器110而供给的各种外部控制信号(芯片赋能信号CEn、写入赋能信号WEn、读出赋能信号REn、指令锁存赋能信号CLE、地址锁存赋能信号ALE等)与指令CMD,控制数据的编程及删除的顺序及读取动作。
而且,控制电路122具备寄存器122a、122b及122c,存储后述的编程条件数据、及与由失效比特计数器电路124计数的值相关的值等控制电路122进行运算所需的值。
寄存器122a存储后述的规定值NCHK_PV等,寄存器122b存储规定值NML2V_PV等。而且,寄存器122c存储从后述的样品串、或者下位页面读取的信息(例如8比特信息)等。
而且,控制电路122基于存储在寄存器122c的编程条件数据,决定编程动作时使用的初始编程电压。
而且,控制电路122将编程未完成的比特数与所设定的容许失效比特数进行比较,判断编程动作通过(pass)还是失效(fail)。而且,控制电路122在内部具备对编程脉冲施加次数进行计数的循环计数器。
<存储单元阵列>
其次,使用图2~图4对第一实施方式的存储单元阵列130的构成的详情进行说明。
如图2所示,存储单元阵列130具备多个非易失性存储单元晶体管,分别与字线及比特线相关联。而且,存储单元阵列130具备多个非易失性存储单元晶体管的集合即多个(图2中图示3个)区块BLK(BLK0,BLK1,BLK2,…)。
区块BLK分别具备串联连接着存储单元晶体管的NAND串131。而且,存储单元阵列130具备NAND串131的集合即多个串单元SU(SU0,SU1,SU2,…)。当然,存储单元阵列130内的区块数或1区块BLK内的串单元数为任意。
于区块BLK0中,图3所示的列的构成在纸面垂直方向上设置多个。第一实施方式中,区块BLK0包含例如4个串单元SU(SU0~SU3)。而且,各个串单元SU在图3的纸面垂直方向上包含多个NAND串131。其他区块BLK也具有与区块BLK0相同的构成。
NAND串131分别包含例如48个存储单元晶体管MT(MT0~MT47)、及选择晶体管ST1、ST2。存储单元晶体管MT具备包含控制栅极及电荷蓄积层的积层栅极,将数据非易失性地加以保持。再者,存储单元晶体管MT的个数并不限定于48个,可为8个、16个、32个、64个、128个等,其数量未作限定。而且,在未将存储单元晶体管MT0~MT47加以区分的情况下,简称作存储单元晶体管MT。
多个存储单元晶体管MT以串联连接的方式配置于选择晶体管ST1、ST2间。
串单元SU0~SU3的各自的选择晶体管ST1的栅极分别连接于选择栅极线SGD0~SGD3,选择晶体管ST2的栅极分别连接于选择栅极线SGS0~SGS3。与此相对,位于同一区块BLK0内的存储单元晶体管MT0~MT47的控制栅极分别共同地连接于字线WL0~WL47。另外,在未对字线WL0~WL47加以区分的情况下,简称作字线WL。
即,字线WL0~WL47共同地连接于同一区块BLK0内的多个串单元SU0~SU3间,与此相对,选择栅极线SGD、SGS即便位于同一区块BLK0内也针对每个串单元SU0~SU3而独立。
而且,在存储单元阵列130内矩阵状地配置的NAND串131中的位于同一行的NAND串131的选择晶体管ST1的另一端共同地连接于任一比特线BL(BL0~BL(L-1),(L-1)为1以上的自然数)。即,比特线BL在多个区块BLK间将NAND串131共同地连接。而且,选择晶体管ST2的电流路径的另一端共同地连接于源极线SL。源极线SL例如在多个区块间将NAND串131共同地连接。
如所述那样,位于同一区块BLK内的存储单元晶体管MT的数据被一次性地删除。与此相对,数据的读取及编程是针对任一区块BLK的任一串单元SU中的共同地连接于任一字线WL的多个存储单元晶体管MT而一次性进行。这样,将一次性写入的单位称作“页面”。
接下来,使用图4,对存储单元阵列130的剖面结构的一例进行简单说明。图4所示的结构在记载图4的纸面的深度方向(D2方向)上排列多个,且他们共有字线WL、选择栅极线SGD及SGS,从而形成着1个串单元SU。
在未图示的半导体衬底上方形成着源极线SL10。而且,如图4所示,在源极线SL10的上方,形成着作为选择栅极线SGS发挥功能的导电膜21a。而且,在导电膜(例如多晶硅膜)21a上,形成着作为字线WL发挥功能的多个导电膜(例如多晶硅膜)25。此外,在导电膜25上方形成着作为选择栅极线SGD发挥功能的导电膜(例如多晶硅膜)21b。而且,以将各导电膜21a、21b及25分别在D3方向上电性分离的方式,将电极间绝缘膜形成于各导电膜21a、21b及25间。更具体而言,导电膜25与电极间绝缘膜在D3方向上交替地积层。
而且,在所述导电膜21a、21b、25及电极间绝缘膜上,形成着沿相对于半导体衬底表面垂直的方向(D3方向:与D2方向正交的方向)延伸的存储器电洞。本说明书中,将与D1方向(与D2方向、及D3方向正交的方向)及D2方向平行的平面的存储器电洞的直径称作MH径。第一实施方式中,在导电膜21a、21b、25及电极间绝缘膜等多层膜上形成存储器电洞。该情况下,多层膜的上层区域比下层区域更多地被蚀刻。因此,上层区域的存储器电洞的MH径大于下层区域的存储器电洞的MH径。存储器电洞的蚀刻距离(D3方向)越长,该MH径的差越显著。
在形成于成为该选择晶体管ST2的区域的存储器电洞的内壁,依次形成着栅极绝缘膜22a、及半导体层20a,从而形成柱状结构。
在形成于成为存储单元晶体管的区域的存储器电洞的内壁,依次形成着区块绝缘膜24、电荷蓄积层(绝缘膜)23及栅极绝缘膜22b、半导体层20b,从而形成柱状结构。
在形成于成为选择晶体管ST1的区域的存储器电洞的内壁,依次形成着栅极绝缘膜22c、及半导体层20c,从而形成柱状结构。
半导体层20b是在存储单元晶体管MT的动作时形成通道的区域。此外,在半导体层20c上形成着比特线层30。
关于存储单元阵列130的构成,例如记载于题为“三维积层非易失性半导体存储器”的2009年3月19日申请的美国专利申请案12/407,403号中。而且,记载于题为“三维积层非易失性半导体存储器”的2009年3月18日申请的美国专利申请案12/406,524号、题为“非易失性半导体存储装置及其制造方法”的2010年3月25日申请的美国专利申请案12/679,991号、以及题为“半导体存储器及其制造方法”的2009年3月23日申请的美国专利申请案12/532,030号中。这些专利申请案的整体通过参照而引用于本申请案说明书中。
<存储单元晶体管的阈值分布>
其次,使用图5(a)、图5(b)及图5(c),对本实施方式的存储单元晶体管MT的可采取的阈值分布进行说明。
图5(a)、图5(b)及图5(c)所示存储单元晶体管MT可根据其阈值而保持例如2比特的数据。该2比特数据依据阈值由低到高的顺序,例如为“E”电平(level)、“A”电平、“B”电平、及“C”电平。而且,各电平具有上位比特及下位比特的2比特的地址。例如“E”电平被赋予编号“11”,“A”电平被赋予编号“01”,“B”电平被赋予编号“00”,“C”电平被赋予编号“10”。“11”、“01”、“00”及“10”是左侧的数字分配于上位比特,右侧的数字分配于下位比特。此处,将下位比特的数据的写入单位称作“下位页面”。而且,将上位比特的数据的写入单位称作“上位页面”。
“E”电平为数据被删除的状态下的阈值,例如具有负值(也可具有正值),比删除验证电压EV低。“A”~“C”电平为对电荷蓄积层内注入电荷的状态的阈值,“A”电平具有高于读取电平“AR”且低于读取电平“BR”的阈值。“B”电平具有高于读取电平“BR”且低于读取电平“CR”的阈值。“C”电平具有高于读取电平“CR”的阈值。
这样,各个存储单元晶体管MT通过采取4个阈值电平而可存储2比特的数据(4-level data)。
如果进行下位页面编程(lower page program),则图5(a)所示的删除状态(“E”电平)的阈值分布变化为图5(b)所示的2值(Lower-level(较低电平)与Middle-level(中间电平))的阈值分布。通过将电压“MR”供给到选择字线而进行读取动作,可判别存储单元晶体管MT的阈值电压比电压“MR”高还是低。其结果,可读出2值(Lower-level与Middle-level)的数据。
如果在下位页面编程后进行上位页面编程(upper page program),则图5(b)所示的2值的阈值分布如图5(c)所示,变为4值的阈值分布。如以上般,将通过在进行下位页面编程后进行上位页面编程,而进行4值的数据的编程动作的方法称作第一编程动作。
而且,也可通过对存储单元晶体管MT将下位页面的数据与上位页面的数据一并编程,而将图5(a)所示的1值的阈值分布变为如图5(c)所示的4值的阈值分布。这样,将不分开进行下位页面编程与上位页面编程而从删除状态开始直接进行2比特(4值)以上的多比特的编程的方法称作第二编程动作。
第一实施方式中,说明在存储单元晶体管MT保持4值的情况下,应用第一编程作为对存储单元晶体管MT的编程动作的存储器系统100。
另外,图5(b)及图5(c)中,电压MR及后述的编程验证电压VCHK表示为相同的电压,但电压MR及电压VCHK并非必须相同,各自的大小关系也可适当变更。
<页面>
其次,对页面进行说明。第一实施方式的存储单元晶体管MT保持4值。因此,如图6所示,在第一实施方式的页面存在下位页面与上位页面。
如图6所示,下位页面(lower page)132具有正常数据区域(normal data area)132a、及冗余数据区域(redundancy area)132b。
上位页面(upper page)133具有正常数据区域133a、及冗余数据区域133b。
正常数据区域(normal data area)132a、及133a中存储例如从主机200供给的数据。冗余数据区域(redundancy area)132b、133b中存储例如编程条件数据等。另外,关于编程条件数据,将于以后进行说明。
<第一实施方式的数据的写入动作的概要>
且说,存储单元阵列130具有3维积层型的结构,存储单元晶体管MT的编程特性(条件)中存在由字线WL的膜厚等的加工形状引起的编程特性的差异、及由MH径引起的编程特性的差异。
然而,认为如果为同一区块内的同一字线,则串单元SU间的差异并不会很大。
因此,例如,将区块内的1个串单元作为用以获取(撷取)“存储单元晶体管MT的编程特性的样品串单元”。而且,将从样品串单元获取的编程特性应用于同一区块内的样品串单元以外的串单元。由此,可提高样品串单元以外的单元的编程速度。
样品串单元的各自的字线WL较理想为在各区块中首先得到编程。
本实施方式中,串单元SU0的页面地址与串单元SU0以外的串单元的页面地址相比而较小。因此,控制电路122比起串单元SU0以外的串单元的字线WL而先对串单元SU0的存储单元晶体管MT进行编程。而且,控制电路122在未特别指定的情况下,将串单元SU0作为样品串单元进行处理。
控制电路122对样品串单元进行特定编程动作,存储单元晶体管MT不会被重复编程,并导出最大的初始编程电压VPGM。将此种动作称作撷取动作。第一编程动作中,该撷取动作是在进行样品串单元的特定字线WL的下位页面编程时同时进行。而且,第二编程动作中,该撷取动作是在进行对样品串单元的特定字线WL的编程时进行。以后将对详细的撷取动作进行叙述。
而且,控制电路122基于撷取动作的结果,不仅决定与样品串单元的特定字线WL为同一字线的上位页面的初始编程电压,也决定同一区块内的其他串单元SU的同一字线WL的下位页面及上位页面的初始编程电压。控制电路122针对样品串单元的每一字线WL来进行撷取动作。
控制电路122基于从存储器控制器110接收的指令及地址进行撷取动作。关于控制电路122基于怎样的指令及地址及是否进行撷取动作,将于后述的其他例中进行详细说明。
<第一实施方式的数据的写入动作的详情>
以下,根据图7所示的流程图对第一实施方式的第一编程动作进行说明。另外,下述所示的处理主要利用控制电路122的控制来执行。
[S1001]
控制电路122在从存储器控制器110接收编程指令、区块地址、页面的地址(包含选择串单元SUP(P:0以上的整数)的地址信息)、编程开始指令前,判定是否接收样品串单元指定指令。另外,以下,为了简化,将编程指令、地址、数据及编程开始指令统一称作“指令顺序(command sequence)”等。
<<指令顺序例1>>
此处,使用图8,说明在接收编程开始指令前未接收样品串单元指定指令的情况下的下位页面编程的指令顺序。
如图8所示,在指令顺序从存储器控制器110输入到NAND闪存120之前,芯片赋能信号CEn、地址锁存赋能信号ALE、指令锁存赋能信号CLE为“L(low)”电平。而且,写入赋能信号WEn、读出赋能信号REn为“H(high)”电平。而且,表示数据锁存电路125的待命/忙碌状态的待命/忙碌信号(R/Bn)为“待命”状态。
接下来,NAND闪存120在指令锁存赋能信号CLE为“H”电平的期间,从存储器控制器110输入指令“80H”,写入赋能信号WEn为“L”电平。
NAND闪存120在地址锁存赋能信号ALE为“H”电平的期间,从存储器控制器110接收地址。该地址为下位页面的地址。
而且,NAND闪存120继地址后接收数据。由此,该数据被存储在第一高速缓存125a。
而且,NAND闪存120在指令锁存赋能信号CLE为“H”电平的期间,从存储器控制器110输入指令“10H”。由此,执行下位页面编程。在上位页面编程时,以相同的指令顺序进行动作。
<<指令顺序例2>>
而且,使用图9,说明在接收编程开始指令前接收样品串单元指定指令的情况下的下位页面编程的指令顺序。
如图9所示,NAND闪存120在指令锁存赋能信号CLE为“H”电平的期间,从存储器控制器110输入样品串单元指定指令“ZZH”。
而且,NAND闪存120在地址锁存赋能信号ALE为“H”电平的期间,从存储器控制器110接收串单元的地址。该地址为所指定的串单元(称作指定串单元SUQ(Q:0以上的整数)等)的地址。而且,与使用图8说明的动作同样地进行动作。由此,执行下位页面编程。上位页面编程时也以相同的指令顺序进行动作。
[S1002]
控制电路122在步骤S1001中,判定为未接收样品串单元指定指令的情况下(S1001,NO),将串单元SU0作为样品串单元进行处理。而且,控制电路122判定所选择的选择串单元SUP是否为串单元SU0。另外,选择串单元SUP为进行编程动作的串单元。
[S1003]
控制电路122在步骤S1002中,判定选择串单元SUP为串单元SU0的情况下(S1002,YES),判定所接收的页面的地址是否为下位页面的地址。
[S1004]
控制电路122在步骤S1002中,判定选择串单元SUP并非为串单元SU0的情况下(S1002,NO),判定所接收的页面的地址是否为下位页面的地址。
[S1005]
控制电路122在步骤S1001中,判定为接收样品串单元指定指令的情况下(S1001,YES),判定有效的串单元的地址是否已被指定。换句话说,控制电路122将指定串单元SUQ与例如存储在未图示的寄存器的串信息相比,判定是否为所存在的串。
[S1006]
控制电路122在步骤S1005中,判定为指定串单元SUQ并非为有效的地址指定的情况下(S1005,NO),判定所接收的页面的地址是否为下位页面的地址。
[S1007]
控制电路122在步骤S1005中,判定为指定串单元SUQ为有效的地址指定的情况下(S1005,YES),判定选择串单元SUP是否与指定串单元SUQ相同。
[S1008]
控制电路122在步骤S1007中,判定为指定串单元SUQ与选择串单元SUP相同的情况下(S1007,YES),判定所接收的页面的地址是否为下位页面的地址。
[S1009]
控制电路122在步骤S1007中,判定为指定串单元SUQ不与选择串单元SUP相同的情况下(S1007,NO),判定所接收的页面的地址是否为下位页面的地址。
<步骤S1003中,为“YES”的情况下>
其次,使用图10,说明控制电路122在图7的步骤S1003中,判定为所接收的页面的地址为下位页面的地址的情况(S1003,YES)。
使用图10的流程图对第一实施方式的数据的编程动作例进行说明。以下表示作为下位页面编程的一部分进行撷取动作的动作例。
[S1101]
首先,控制电路122将所接收的下位页面的数据存储在第三高速缓存125c。而且,控制电路122进行撷取动作。
且说,控制电路122对存储在第三高速缓存125c的冗余数据区域132b的存储有编程条件数据的列地址设定非写入数据,直至撷取动作结束为止。
[S1102]
其次,如图11所示,控制电路122开始下位页面的编程动作。具体而言,响应控制电路122的命令,行解码器128一边使所选择的串单元的选择晶体管导通,一边对选择字线WLn(n:0以上的整数)施加编程电压VPGMC。而且,响应控制电路122的命令,感测放大器126对比特线BL施加与下位页面数据相应的电压。
由此,控制电路122对存储单元晶体管MT进行存储在第三高速缓存125c的下位页面数据的编程。
[S1103]
其次,响应控制电路122的命令,行解码器128将撷取动作时的验证用的编程验证电压VCHK施加到选择字线WLn。
这样,控制电路122执行第一编程验证动作。即,依据控制电路122的命令,感测放大器126从选择页面读出数据。然后,控制电路122基于读出数据确认存储单元晶体管MT的阈值是否上升到所期望的值。
[S1104]
控制电路122判定超过了撷取动作时的验证用的编程验证电压VCHK的存储单元晶体管数NCHK_PASS是否超过规定值NCHK_PV。另外,该规定值NCHK_PV存储在未图示的存储单元阵列130的ROM熔丝区块(ROM fuse block),在存储器系统100的起动时被读出,且预先在寄存器122a中存储规定值NCHK_PV。
[S1105]
步骤S1104中,在控制电路122判定存储单元晶体管数CHK_PASS未超过规定值CHK_PV的情况下(S1104,NO),控制电路122将循环数NWLn_loop更新为NWLn_loop+1。另外,循环数NWLn_loop的初始值为“0”。
[S1106]
而且,控制电路122在更新循环数NWLn_loop后,使编程电压VPGM增加DVPGM_L。而且,控制电路122使用经更新的编程电压VPGM重复步骤S1102的动作。另外,步骤S1105及步骤S1106的动作的顺序也可进行置换。
[S1107]
步骤S1104中,在控制电路122判定为存储单元晶体管数NCHK_PASS超过规定值NCHK_PV的情况下(S1104,YES),控制电路122使信号SV_PASS从“L(Low)”电平上升为“H(High)”电平。如果信号SV_PASS从“L”电平上升为“H”电平,则控制电路122为了进行超过电压ML2V的存储单元晶体管数NML2V_PASS是否超过规定值NML2V_PV的判定,而进行编程验证动作。
更具体而言,行解码器128将验证电压ML2V施加到选择字线WLn,并执行编程验证动作。
[S1108]
接下来,如果控制电路122读出步骤S1107中的编程验证结果,则使信号DETECT_CHK从“L”电平上升到“H”电平。控制电路122在信号DETECT_CHK为“H”的期间,进行超过电压ML2V的存储单元晶体管数NML2V_PASS是否超过规定值NML2V_PV的判定。该规定值NML2V_PV存储在存储单元阵列130的未图示的ROM熔丝区块中,在存储器系统100的起动时被读出,控制电路122在寄存器122b中存储规定值NML2V_PV。
且说,步骤S1102~S1106的动作的结果为,有时超过为middle level的验证电平的电压ML2V的存储单元晶体管数NML2V_PASS会超过规定值NML2V_PV。此时的步骤S1104中,如果将为“YES”的编程电压VPGM用作下位页面编程的初始编程电压,则有规定值以上的单元到达middle level的验证电平而发生重复编程的可能性。为了抑制此种重复编程,控制电路122进行所述步骤S1107、S1108的动作,判定存储单元晶体管数NML2V_PASS是否超过规定值NML2V_PV。利用所述判定动作结束而撷取动作完成。
[S1109]
控制电路122于撷取动作完成后,将撷取动作的结果作为编程条件数据存储在寄存器122c。具体而言,将控制电路122在步骤S1107、S1108中的编程验证结果与直至通过步骤S1104所需的循环数作为编程条件数据而存储在控制电路122的寄存器122c。该编程条件数据例如为8比特数据。第一实施方式中,该8比特的数据中的1比特量的数据分配于该判定结果(超过电压ML2V的存储单元晶体管数NML2V_PASS是否超过规定值NML2V_PV),7比特量的数据分配于循环数。
具体而言,在循环数NWLn_loop=4时,在存储单元晶体管数NCHK_PASS为NCHK_PASS>NCHK_SV且NML2V_PASS<NML2V_PV的情况下,8比特的编程条件数据表示为{0_000_100}。而且,在循环数NWLn_loop=4时,在存储单元晶体管数NCHK_PASS为NCHK_PASS>NCHK_SV且NML2V_PASS>NML2V_PV的情况下,8比特的数据表示为{1_000_100}。本实施方式中,将编程条件数据的最上位比特定义为SV_OVER。即,编程条件数据的格式为{SV_OVER,NWLn_loop[6:0]}。在超过电压ML2V的存储单元晶体管数NML2V_PASS未超过规定值NML2V_PV的情况下,比特SV_OVER为“0”,在超过的情况下,比特SV_OVER为“1”。
控制电路122将存储在寄存器122c的编程条件数据覆写于存储在第三高速缓存125c的冗余数据区域132b,而解除冗余数据区域132b的编程条件数据的编程禁止状态。从施加下一编程脉冲起,与正常数据区域132a一并开始进行编程条件数据的编程动作。另外,控制电路122此时对循环计数器进行重置。
[S1110]
接下来,控制电路122将循环数NWLn_loop更新为NWLn_loop+1。
[S1111]
而且,控制电路122在更新循环数NWLn_loop后,使编程电压VPGM增加DVPGM_L。
另外,步骤S1110及步骤S1111的动作的顺序也可进行置换。
[S1112]
如本例般,在撷取动作作为下位页面编程的一部分进行的情况下,控制电路122继撷取动作后继续进行下位页面的编程动作。
具体而言,响应控制电路122的命令,行解码器128一边使所选择的串单元的选择晶体管导通,一边对选择字线WLn施加编程电压VPGM。而且,响应控制电路122的命令,感测放大器126对比特线BL施加与下位页面数据相应的电压。
由此,对存储单元阵列130进行存储在第三高速缓存125c的数据(正常数据区域132a及冗余数据区域132b)的编程。
[S1113]
其次,响应控制电路122的命令,行解码器128将编程验证电压ML2V施加到选择字线WLn。
由此,控制电路122执行编程验证动作。以下,将上升到所期望的值的情况称作“通过”验证,未上升到所期望的值的情况称作“失效”。
[S1114]
控制电路122判定编程验证是否通过。如果通过选择页面的编程验证(步骤S1114,YES),则对该页面的编程动作结束。
[S1115]
控制电路122在判断为未通过选择页面的编程验证的情况下(步骤S1114,NO),判定对该页面的编程动作的循环数是否达到最大值。在循环数达到最大值的情况下(步骤S1115,YES),对该页面的编程动作结束。
[S1116]
步骤S1115中,控制电路122在循环数未达到最大值的情况下(步骤S1115,NO),控制电路122将循环数NWLn_loop更新为NWLn_loop+1。
[S1117]
而且,控制电路122在更新循环数NWLn_loop后,使编程电压VPGM增加DVPGM_L。然后,控制电路122使用经更新的编程电压VPGM重复步骤S1112的动作。另外,步骤S1116及步骤S1117的动作的顺序也可置换。
控制电路122重复进行步骤S1112~S1117的动作,直至判定通过步骤S1114的验证动作或者步骤S1115中判定为循环数为最大值为止。
<步骤S1003中,“NO”的情况下>
其次,根据图12所示的流程图,说明控制电路122在步骤S1003中判定为所接收的页面的地址并非为下位页面的地址的情况(S1003,NO)。
[S1201]
控制电路122从存储单元阵列130,从与从存储器控制器110接收的上位页面的地址对应的下位页面的地址读取数据。
更具体而言,控制电路122如图13所示对选择字线WLn施加例如电压MR。
由此,控制电路122可读取存储在选择字线WLn的数据。
[S1202]
而且,控制电路122从存储单元阵列130读取下位页面的数据,将下位页面的数据存储在第一高速缓存125a。控制电路122将写入到下位页面的冗余数据区域的编程条件数据存储在控制电路122的寄存器122c。
然后,控制电路122将上位页面的数据存储在第二高速缓存125b。
控制电路122将所读取的下位页面132的冗余数据区域132b的编程条件数据,作为上位页面用的编程条件数据而存储在第二高速缓存125b中存储的上位页面用的冗余数据区域133b。即,上位页面的编程条件数据与下位页面的编程条件数据相同。由此,如图5(c)所示,将上位页面编程后的编程条件数据为“11(E)”数据或者“00(B)”数据。这样,2值的编程条件数据(“11(E)”数据或者“00(B)”数据)因各自的阈值分布不邻接,所以可抑制由存储单元晶体管MT的劣化等引起的阈值分布的变动所致的数据的变化。
[S1203]
其次,控制电路122基于存储在寄存器122c的编程条件数据,决定上位页面用的初始编程电压VPGM(VPGM=VPGM_SVU)。
以下,使用图14及图15对上位页面编程用的初始编程电压进行说明。
(i)下位页面的编程条件数据为{SV_OVER=0,NWLn_loop=m}的情况下
将对循环数(编程脉冲施加次数-1)乘以DVPGM_L所得的电压加上初始编程电压VPGMC而成的电压(VPGMC+NWLn_loop×DVPGM_L),作为编程电压VPGM_BASE进行处理。
如图14(a)及图14(b)所示,本例中,编程条件数据为{SV_OVER=0,NWLn_loop=3}的编程电压VPGM_BASE为VPGMC+3×DVPGM_L。
(ii)下位页面的编程条件数据为{SV_OVER=1,NWLn_loop=m}的情况下
将对初始编程电压VPGMC加上在循环数上乘以DVPGM_L所得的电压,进而从整体中减去DVPGM_除以2所得的电压而成的电压(VPGMC+NWLN_LOOP*DVPGM_L-1/2*DVPGM_L),作为编程电压VPGM_BASE进行处理。
如图15(a)及图15(b)所示,本例中,编程条件数据为{SV_OVER=1,NWLn_loop=3}的编程电压VPGM_BASE为VPGMC+2.5×DVPGM_L。
(iii)上位页面编程用的初始编程电压
控制电路122也可将所述编程电压VPGM_BASE设为上位页面编程用的初始编程电压VPGM_SVU。
而且,如图14(c)、图15(c)所示,也可将对编程电压VPGM_BASE减去偏置电压VPGM_OFFU所得的电压,作为上位页面编程用的初始编程电压VPGM_SVU(=VPGM_BASE-VPGM_OFFU)。
而且,如图14(d)、图15(d)所示,也可将对编程电压VPGM_BASE加上偏置电压VPGM_OFFU所得的电压,作为上位页面编程用的初始编程电压VPGM_SVU(=VPGM_BASE+VPGM_OFFU)。
如以上般,控制电路122使编程条件数据反映于上位页面编程用的初始编程电压。
[S1204]
控制电路122使用在步骤S1203中决定的上位页面编程用的初始编程电压VPGM_SVU,开始上位页面的编程动作。具体而言,响应控制电路122的命令,行解码器128一边使所选择的串单元的选择晶体管导通,一边对选择字线WLn施加经更新的编程电压VPGM_SVU,感测放大器126对比特线BL施加与上位页面数据相应的电压。
由此,对存储单元阵列130进行存储在第三高速缓存125c的数据(正常数据区域132a及冗余数据区域132b)的编程。
[S1205]
其次,如图13所示,响应控制电路122的命令,行解码器128将编程验证电压AVL、AV、BVL、BV、CV中的任一者适当施加到选择字线WLn,并执行编程验证动作。
[S1206]
控制电路122判定编程验证是否通过。如果通过选择页面的编程验证(步骤S1206,YES),则对该页面的编程动作结束。
[S1207]
控制电路122在判断为选择页面的编程验证未通过的情况下(步骤S1206,NO),判定对该页面的编程动作的循环数是否达到最大值。在循环数达到最大值的情况下,对该页面的编程动作结束。
[S1208]
步骤S1207中,控制电路122在循环数未达到最大值的情况下(步骤S1207,NO),控制电路122将循环数NWLn_loop更新为NWLn_loop+1。
[S1209]
控制电路122使编程电压VPGM_SVU增加DVPGM_U。而且,控制电路122使用经更新的编程电压VPGM_SVU重复步骤S1204的动作。
控制电路122重复步骤S1204~S1209的动作,直至判定通过步骤S1206的验证动作或者步骤S1207中判定循环数为最大值为止。
<步骤S1004中,为“YES”的情况下>
其次,按照图16的流程图,说明控制电路122在步骤S1004中判定为所接收的页面的地址为下位页面的地址的情况(S1004,YES)。
控制电路122在接收指令顺序前未接收样品串单元指定指令,判定为选择串单元SUP并非为串单元SU0的情况下,将串单元SU0用作样品串单元。即,控制电路122虽进行下位页面编程但不进行撷取动作,基于登录于样品串单元的同一字线的编程条件数据,设定下位页面的初始编程电压。
[S1301]
首先,控制电路122将下位页面的数据存储在第一高速缓存125a。然后,控制电路122从样品串单元SU0中读取编程条件数据。更具体而言,如图17所示,对选择字线WLn施加B电平读取电压BR。此处,也可对选择字线WLn施加A电平读取电压AR而非B电平读取电压BR。本步骤S1301的读取动作中,旨在读取编程条件数据。在将编程条件数据的编程进行至下位页面及上位页面的情况下,如所述那样,为“E”电平或者“B”电平的数据。因此,在从样品串单元读取编程条件数据的情况下,仅进行B电平读取、或者A电平读取中的其中一者即可。
由此,可读取存储在选择字线WLn的数据。
[S1302]
控制电路122将与所读取的样品串单元SU0的下位页面的冗余数据区域132b的编程条件数据相同的数据,写入到存储在第一高速缓存125a的冗余数据区域132b。
而且,控制电路122将所读取的编程条件数据存储在寄存器122c。
[S1303]
控制电路122基于存储在寄存器122c的编程条件数据,决定下位页面编程用的初始编程电压VPGM(VPGM=VPGM_SVL)。
以下,对下位页面编程用的初始编程电压进行说明。
以下,使用图18及图19对下位页面编程用的初始编程电压进行说明。
(i)下位页面的编程条件数据为{SV_OVER=0,NWLn_loop=m}的情况下
如使用图14所说明,将VPGMC+NWLn_loop×DVPGM_L作为编程电压VPGM_BASE进行处理。
如图18(a)及图18(b)所示,本例中,编程条件数据为{SV_OVER=0,NWLn_loop=3}的编程电压VPGM_BASE为VPGMC+3×DVPGM_L。
(ii)下位页面的编程条件数据为{SV_OVER=1,NWLn_loop=m}的情况下
如使用图15所说明般,将VPGMC+NWLN_LOOP*DVPGM_L-1/2*DVPGM_L作为编程电压VPGM_BASE进行处理。
如图19(a)及图19(b)所示,本例中,编程条件数据为{SV_OVER=1,NWLn_loop=3}的编程电压VPGM_BASE为VPGMC+2.5×DVPGM_L。
(iii)下位页面编程用的初始编程电压
控制电路122也可将所述编程电压VPGM_BASE设为下位页面编程用的初始编程电压VPGM_SVL。
而且,如图18(c)、图19(c)所示,也可将对编程电压VPGM_BASE减去偏置电压VPGM_OFFL所得的电压作为下位页面编程用的初始编程电压VPGM_SVL(=VPGM_BASE-VPGM_OFFL)。
而且,如图18(d)、图19(d)所示,也可将对编程电压VPGM_BASE加上偏置电压VPGM_OFFL所得的电压作为下位页面编程用的初始编程电压VPGM_SVL(=VPGM_BASE+VPGM_OFFL)。
如以上般,控制电路122使编程条件数据反映于下位页面用的初始编程电压。
[S1304]
如图17所示,控制电路122使用编程电压VPGM_SVL进行下位页面的编程动作。具体而言,响应控制电路122的命令,行解码器128一边使所选择的串单元的选择晶体管导通,一边对选择字线WLn施加经更新的编程电压VPGM_SVL。而且,感测放大器126对比特线BL施加与写入数据相应的电压。
由此,对存储单元阵列130进行存储在第三高速缓存125c的数据(正常数据区域132a及冗余数据区域132b)的编程。
[S1305]
其次,如图17所示,响应控制电路122的命令,行解码器128将编程验证电压VML2V施加到选择字线WLn。
这样,控制电路122执行编程验证动作。
[S1306]
控制电路122判定编程验证是否通过。如果通过选择页面的编程验证(步骤S1306,YES),则对该页面的编程动作结束。
[S1307]
控制电路122在判断为选择页面的编程验证未通过的情况下(步骤S1306,NO),判定对该页面的编程动作的循环数是否达到最大值。在循环数达到最大值的情况下,对该页面的编程动作结束。
[S1308]
步骤S1307中,控制电路122在循环数未达到最大值的情况下(步骤S1307,NO),控制电路122将循环数NWLn_loop更新为NWLn_loop+1。
[S1309]
控制电路122使编程电压VPGM_SVL增加DVPGM_L。然后,控制电路122使用经更新的编程电压VPGM_SVL重复步骤S1304的动作。
控制电路122重复步骤S1304~S1309的动作,直至判定通过步骤S1306的验证动作或者在步骤S1307中判定为循环数为最大值为止。
<步骤S1004中,为“NO”的情况下>
其次,控制电路122在步骤S1004中,判定所接收的页面的地址并非为下位页面的地址的情况下(S1004,NO),控制电路122对选择串单元SU进行与步骤S1201~S1209中说明的动作相同的动作。
且说,将存储在样品串SU0的编程条件数据存储在与选择串单元SU的上位页面对应的下位页面的冗余数据区域中。因此,等同于控制电路122使用实质存储在样品串SU0的下位页面的冗余数据区域的编程条件数据,决定选择串单元SU的上位页面用的初始编程电压。
<步骤S1006中,为“YES”的情况下>
其次,按照图20的流程图,说明控制电路122在步骤S1006中判定所接收的页面的地址为下位页面的地址的情况(S1006,YES)。
控制电路122在接收指令顺序前接收样品串单元指定指令,且判定为指定串单元SUQ为不存在的串单元SU(于串单元仅存在于SU0~SU3的情况下,为指定串单元SUQ=SU4的情况)的情况下,使用存储在寄存器122c的编程条件数据设定下位页面的初始编程电压。
[S1401]
首先,控制电路122在第三高速缓存125c中存储下位页面的数据。而且,控制电路122将存储在控制电路122的寄存器122c的编程条件数据覆写至存储在第三高速缓存125c的冗余数据区域132b。
[S1402]~[S1407]
步骤S1402~S1407的动作与步骤S1303~S1308中说明的动作相同。
<步骤S1006中,为“NO”的情况下>
其次,说明控制电路122在步骤S1006中,判定为所接收的页面的地址并非为下位页面的地址的情况(S1006,YES)。控制电路122对选择串单元SU进行与步骤S1201~S1209中说明的动作相同的动作。
且说,将存储在样品串SU0的编程条件数据存储在与选择串单元SU的上位页面对应的下位页面的冗余数据区域。因此,等同于控制电路122使用实质存储在样品串SU0的下位页面的冗余数据区域的编程条件数据,决定选择串单元SU的上位页面用的初始编程电压。
<步骤S1008中,为“YES”的情况下>
其次,说明控制电路122在步骤S1008中,判定所接收的页面的地址为下位页面的地址的情况(S1008,YES)。
控制电路122在接收指令顺序前接收样品串单元指定指令,且判定存在由指定串单元SUQ指定的串单元SU,指定串单元SUQ与选择串单元SUP一致且为下位页面的编程动作的情况下,对指定串单元SUQ进行撷取动作。
有时样品串单元SU0因不良而无法使用。在此情况下,由该指定串单元SUQ指定用作样品串单元的串单元。
存储器系统100对指定串单元SUQ进行与步骤S1101~S1117中说明的动作相同的动作。
<步骤S1008中,为“NO”的情况下>
其次,存储器系统100在步骤S1008中,判定为所接收的页面的地址并非为下位页面的地址的情况下(S1008,NO),对指定串单元SUQ进行与对样品串SU0进行的步骤S1201~S1209的动作相同的动作。
<步骤S1009中,为“YES”的情况下>
其次,说明控制电路122在步骤S1009中判定所接收的页面的地址为下位页面的地址的情况(S1009,YES)。
控制电路122在接收指令顺序前接收样品串单元指定指令,判定指定串单元SUQ为存在的串单元,指定串单元SUQ与选择串单元SUP不一致且为下位页面的编程动作的情况下,从指定串单元SUQ中读取编程条件数据。
存储器系统100对指定串单元SUQ进行与对样品串SU0进行的步骤S1301~S1309的动作相同的动作。
<步骤S1009中,为“NO”的情况下>
其次,存储器系统100在步骤S1009中,判定所接收的页面的地址并非为下位页面的地址的情况下(S1009,NO),代替对串单元SU0,而对指定串单元SUQ进行与步骤S1201~S1209中说明的动作相同的动作。
<关于第一实施方式的数据的写入动作的作用效果>
根据所述第一实施方式,控制电路122判定在接收指令顺序前,是否接收样品串单元指定指令,而且,存在的串是否被指定,由此决定如下:
(i)于进行下位页面编程时进行撷取动作,还是
(ii)从样品串SU0或者指定串SUQ读取编程条件数据而决定下位页面用的初始编程电压,还是
(iii)读取与上位页面对应的下位页面的编程条件数据而决定上位页面用的初始编程电压,或者
(iV)使用存储在控制电路122的寄存器122c的编程条件数据决定下位页面用的初始编程电压。
在连续地进行编程时成为编程的对象的存储单元电晶彼此为属于同一区块的不同串单元的同一字线的情况下,撷取动作的结果存储在控制电路122的寄存器122c。因此,在属于同一区块的不同串单元的同一字线中所属的存储单元晶体管中连续地进行编程的情况下,撷取动作至少进行一次即可。
由此,存储器系统100在决定下位页面用或者上位页面用的初始编程电压时,可一边抑制撷取动作的次数,一边决定最佳的该初始编程电压。
而且,存储器系统100在使用存储在控制电路122的寄存器122c的编程条件数据,决定下位页面用的初始编程电压的情况下,无需进行来自样品串单元的编程条件数据的读取动作。因此,与从样品串单元读取编程条件数据的情况相比,存储器系统100能够在更短时间内决定最佳的该初始编程电压。
而且,根据所述实施方式,控制电路122在接收指令顺序前接收样品串单元指定指令,由此可适当选择样品串单元。因此,例如,在串单元SU0为不良串单元时,可将串单元SU0以外的串单元SUQ指定为样品串单元。
如以上,根据第一实施方式,通过使用样品串单元指定指令,存储器系统100可适当选择上位页面用的初始编程电压的决定时所使用的编程条件数据的引用目的地。由此,可获得高品质的存储器系统100。
<具体例>
然后,使用图21、图22,为了说明第一实施方式的作用效果的一部分而对本实施方式的具体例进行说明。
如图21所示,为了简化,说明对二个串单元与4条字线WL进行第一编程动作的情况。此处,例如,将样品串单元设为串单元SU0。而且,本具体例中,控制电路122依序对图中的I(SU0,WL0)~VIII(SU1,WL3)进行编程。
以下,对有效利用存储在控制电路122的寄存器122c的编程条件数据的例、及未有效利用的例进行说明。
<具体例1>
如图22(a)所示,本实施方式的具体例1中,控制电路122在进行样品串单元SU0的下位页面编程时,进行撷取动作,在进行样品串单元SU0的上位页面编程时,使用该撷取动作的结果进行上位页面编程。
而且,控制电路122在串单元SU1的下位页面编程中,读取存储在寄存器122c的编程条件数据,进行下位页面编程。然后,在串单元SU1的上位页面编程中,读取对应的下位页面的数据,利用该下位页面的编程条件数据进行上位页面编程。
更具体而言,如图22(a)的I所示,在时刻T0,控制电路122在进行样品串单元SU0的下位页面编程时进行撷取动作(与图10中说明的步骤S1101~S1108相同的动作)。
然后,在时刻T1,控制电路122基于编程条件数据进行下位页面编程(与图10中说明的步骤S1109~S1117相同的动作)。
接下来,在时刻T2,控制电路122为了进行上位页面编程,读取串单元SU0、字线WL0的下位页面的数据(与图12中说明的步骤S1201、S1202相同的动作)。
然后,在时刻T3,控制电路122基于下位页面中所含的编程条件数据决定上位页面编程用的初始编程电压。而且,控制电路122基于该初始编程电压进行上位页面编程(与图12中说明的步骤S1203~S1209相同的动作)。
而且,图22(a)的II所示,在时刻T4,控制电路122在进行串单元SU1的字线WL0的下位页面编程时,从寄存器122c读取编程条件数据(与图20中说明的步骤S1401、S1402相同的动作)。另外,在比其他动作短的时间内进行本动作。接下来,控制电路122基于编程条件数据决定下位页面编程用的初始编程电压,进行下位页面编程(与图18中说明的步骤S1403~S1408相同的动作)。此处,将时刻T4至时刻T5所需的时间设为dT1。
而且,在时刻T5,控制电路122为了进行上位页面编程,读取串单元SU1、字线WL0的下位页面的数据(与图12中说明的步骤S1201、S1202相同的动作)。
将时刻T5至时刻T6所需的时间设为dT2。
而且,在时刻T6,控制电路122基于所读取的下位页面数据中的编程条件数据决定上位页面编程用的初始编程电压,进行上位页面编程(与图12中说明的步骤S1203~S1209相同的动作)。此处,将时刻T6至上位页面编程完成的时刻T7所需的时间设为dT3。
如以上,进行串单元SU0的字线WL0、及串单元SU1的字线WL0的下位页面编程与上位页面编程。本具体例1中,例如,对串单元SU0及串单元SU1的字线WL1~字线WL3(III~VIII)进行此种编程动作。
<具体例2>
如图22(b)所示,本实施方式的具体例2中,控制电路122在进行串单元SU1的下位页面编程时,从样品串单元SU0中读取编程条件数据。然后,控制电路122基于该编程条件数据,设定下位页面编程或者上位页面编程用的初始编程电压,进行下位页面编程或者上位页面编程。
如图22(b)的I所示,关于对串单元SU0的字线WL0的编程动作,为与图22(a)的I中说明的具体例1的各动作相同的动作。
如图22(b)的II所示,在时刻T4,控制电路122在进行串单元SU1的字线WL0的下位页面编程时,从样品串单元SU0的字线WL0读取编程条件数据(与图16中说明的步骤S1301、S1302相同的动作)。此处,将时刻T4至时刻T8所需的时间设为dT2。
于时刻T8,控制电路122基于编程条件数据决定下位页面编程用的初始编程电压,进行下位页面编程(与图16中说明的步骤S1303~S1309相同的动作)。此处,将时刻T8至时刻T9所需的时间设为dT1。
而且,在时刻T9,控制电路122为了进行串单元SU1的字线WL0的上位页面编程,而读取串单元SU1的字线WL0的下位页面的数据(与图12中说明的步骤S1201、S1202相同的动作)。此处,将时刻T11至时刻T12所需的时间设为dT3。
然后,在时刻T10,控制电路122基于所读取的下位页面数据中的编程条件数据,决定上位页面编程用的初始编程电压。控制电路122进行上位页面编程(与图12中说明的步骤S1203~S1209相同的动作)。此处,将时刻T10至上位页面编程完成的时刻T11所需的时间设为dT3。
如以上,进行串单元SU0的字线WL0、及串单元SU0的字线WL1的下位页面编程、及上位页面编程。本具体例2中,例如对串单元SU0及串单元SU1的字线WL1~字线WL3(III~VIII)进行此种编程动作。
如以上,具体例1中的串单元SU1的字线WL0的存储单元晶体管的编程时间dTA(dT1+dT2+dT3)比具体例2中的串单元SU1的字线WL0的存储单元晶体管的编程时间dTB(dT1+2×dT2+dT3)短了dT2。
如以上,具体例1将已存储在控制电路122的寄存器122c的编程条件数据用于其他串单元的编程动作,由此可抑制从样品串单元的读取动作的次数。
(第二实施方式)
接下来,对第二实施方式的存储器系统100进行说明。第二实施方式中,控制电路122在对存储单元阵列130的编程动作中,不应用所述第一编程而应用所述第二编程,就该方面而言与第一实施方式不同。另外,第二实施方式中,对具有与所述第一实施方式大致相同的功能及构成的构成要素附上相同符号,仅在必要时进行重复说明。
<关于第二实施方式的数据的写入动作>
以下,按照图23所示的流程图,对第二实施方式的第二编程动作进行说明。另外,以下所示的处理主要利用控制电路122的控制而执行。
[S2001]
控制电路122在应用第二编程进行编程的情况下,首先,NAND闪存120接收下位页面的指令顺序。然后,NAND闪存120继下位页面的指令顺序后,接收上位页面的指令顺序。控制电路122判定在从存储器控制器110接收编程指令、区块地址、页面的地址(包含选择串单元SUP的地址信息)、数据及编程开始指令前,是否接收了样品串单元指定指令。
<<指令顺序例3>>
此处,使用图24,说明在接收编程开始指令前未接收样品串单元指定指令的情况下的第二编程的指令顺序。
如图24所示,在对NAND闪存120完成下位页面的数据的输入前,进行与使用图8说明的动作相同的动作。然后,NAND闪存120在指令锁存赋能信号CLE为“H”电平的期间,从存储器控制器110输入指令“YYH”。由此,将存储在第一高速缓存425a的数据存储在其他高速缓存。由此,待命/忙碌信号(R/Bn)为“忙碌”状态。
接下来,对NAND闪存120输入上位页面编程的指令顺序。进行与使用图8说明的动作相同的动作直至上位页面的数据的输入完成为止。而且,NAND闪存120在指令锁存赋能信号CLE为“H”电平的期间,从存储器控制器110输入指令“10H”。由此,控制电路122使用下位页面的数据及上位页面的数据进行第二编程。
<<指令顺序例4>>
而且,使用图25,说明在接收编程开始指令前接收样品串单元指定指令的情况下的第二编程的指令顺序。
如图25所示,NAND闪存120在指令锁存赋能信号CLE为“H”电平的期间,从存储器控制器110输入样品串单元指定指令“ZZH”。
然后,NAND闪存120与使用图24说明的动作同样地进行动作。
[S2002]
控制电路122在步骤S2001中,判定未接收样品串单元指定指令的情况下(S2001,NO),将串单元SU0作为样品串单元进行处理。而且,控制电路122判定所选择的选择串单元SUP是否为串单元SU0。
[S2003]
控制电路122在步骤S2001中,判定为接收样品串单元指定指令的情况下(S2001,YES),判定是否与样品串单元指定指令一并指定有效的串单元的地址。此处,将所指定的串单元称作指定串单元SUQ等。
[S2004]
控制电路122在步骤S2003中,判定指定串单元SUQ为有效的串单元的情况下(S2003,YES),判定选择串单元SUP是否与指定串单元SUQ相同。
<步骤S2002中,为“YES”的情况下>
其次,使用图26,说明控制电路122在步骤S2002中判定选择串单元SUP为串单元SU0的情况(S2002,YES)。以下,对作为第二编程动作的一部分而进行撷取动作的动作例进行说明。
[S2101]
例如,控制电路122将下位页面的数据存储在第三高速缓存125c。而且,控制电路122将上位页面的数据存储在第二高速缓存125b。而且,控制电路122进行撷取动作。
控制电路122对冗余数据区域132b、及133b的存储有编程条件数据的列地址设定非写入数据,直至撷取动作结束为止。
[S2102]
其次,如图27所示,控制电路122如果接收编程开始指令,则开始进行第二编程动作。具体而言,响应控制电路122的命令,行解码器128一边使所选择的串单元的选择晶体管导通,一边对选择字线WLn施加编程电压VPGMC。然后,感测放大器126对比特线BL施加与编程数据相应的电压。
由此,控制电路122对存储单元晶体管MT进行存储在第三高速缓存125c的数据的编程。
[S2103]~[S2106]
步骤S2103~S2106的动作与步骤S1103~S1106的动作相同。
[S2107]
在步骤S2104中,控制电路122在判定存储单元晶体管数NCHK_PASS超过规定值NCHK_PV的情况下(S2104,YES),控制电路122使信号SV_PASS从“L(Low)”电平上升到“H(High)”电平。如果信号SV_PASS从“L”电平上升到“H”电平,则控制电路122为了判定超过电压AV或者AVL的存储单元晶体管数NAV_PASS是否超过规定值NAV_PV,而进行编程验证动作。如所述步骤S1108中说明般,为了于将步骤S2104中为“YES”的编程电压设为初始编程电压的情况下,判定是否有重复编程的担忧而进行该编程验证动作。更具体而言,行解码器128将验证电压AV或者AVL施加到选择字线WLn而执行编程验证动作。
另外,在该编程验证动作时,对所选择的选择栅极线SGD_SEL与选择栅极线SGS_SEL施加电压VSG(VSGD<VSG),对非选择的选择栅极线SGD_USEL与非选择的选择栅极线SGS_USEL施加接地电位VSS。此外,对非选择的字线WL_USEL施加电压VREAD(VREAD<VPASS<VPGMC)。
[S2108]
控制电路122如果读出步骤S2107的编程验证结果,则使信号DETECT_CHK从“L”电平上升到“H”电平。控制电路122在信号DETECT_CHK为“H”的期间,判定超过电压AV或者AVL的存储单元晶体管数NAV_PASS是否超过规定值NAV_PV。该规定值NAV_PV存储在存储单元阵列130,在存储器系统100的起动时被读出,控制电路122将规定值NAV_PV存储在寄存器122b。
[S2109]
控制电路122在撷取动作完成后,将撷取结果作为编程条件数据存储在寄存器122c。该编程条件数据与第一实施方式中说明的情况同样地为8比特数据。第二实施方式中,将该8比特的数据内的1比特量的数据分配于该判定结果(超过电压AV的存储单元晶体管数NAV_PASS是否超过规定值NAV_PV),将7比特量的数据分配于循环数。
具体而言,在循环数NWLn_loop=4时,在存储单元晶体管数NCHK_PASS为NCHK_PASS>NCHK_SV且NAV_PASS<NAV_PV的情况下,8比特的编程条件数据表示为{0_000_100}。而且,在循环数NWLn_loop=4时,在存储单元晶体管数NCHK_PASS为NCHK_PASS>NCHK_SV且NAV_PASS>NAV_PV的情况下,8比特的数据表示为{1_000_100}。本实施方式中,旗将标数据的最上位比特定义为SV_OVER。即,编程条件数据的格式为{SV_OVER,NWLn_loop[6:0]}。在超过电压AV的存储单元晶体管数NAV_PASS未超过规定值NAV_PV的情况下,比特SV_OVER为“0”,在超过的情况下,比特SV_OVER为“1”。
控制电路122将存储在寄存器122c的编程条件数据覆写至存储在第三高速缓存125c的冗余数据区域132b,解除冗余数据区域132b的编程条件数据的编程禁止状态。从施加下一次编程脉冲起,与正常数据区域132a一并开始编程条件数据的编程动作。另外,控制电路122此时对循环计数器进行重置。
[S2110]、[S2111]
步骤S2110、S2111的动作为与所述步骤S1110及S1111相同的动作。
[S2112]
如本例般,在进行撷取动作来作为第二编程的一部分的情况下,控制电路122继撷取动作后继续进行第二编程动作。
具体而言,响应控制电路122的命令,行解码器128一边使所选择的串单元的选择晶体管导通,一边对选择字线WLn施加编程电压VPGM(VPGM=VPGM_SVF)。然后,响应控制电路122的命令,感测放大器126对比特线BL施加与下位页面数据及上位页面数据相应的电压。
由此,对存储单元阵列130进行存储在第三高速缓存125c及第二高速缓存125b的数据的编程。
[S2113]~[S2116]
步骤S2113~S2116的动作与步骤S1205~S1208的动作相同。
[S2117]
控制电路122使编程电压VPGM增加DVPGM_F。而且,控制电路122使用经更新的编程电压VPGM重复步骤S2112的动作。
控制电路122重复步骤S2112~S2117的动作,直至判定通过步骤S2114的验证动作或者步骤S2115中判定循环数为最大值为止。
<步骤S2002中,为“NO”的情况下>
其次,使用图28,说明控制电路122在步骤S2002中判定所选择的选择串单元SUP并非为串单元SU0的情况(S2002,NO)。
控制电路122在接收指令顺序前未接收样品串单元指定指令,且判定选择串单元SUP并非为串单元SU0的情况下,将串单元SU0用作样品串单元。即,控制电路122不进行高速缓存动作,而基于登录于样品串单元的同一字线的编程条件数据设定下位页面的初始编程电压。
[S2201]
控制电路122在步骤S2201中,进行与步骤S1301相同的动作。
[S2202]
控制电路122将与所读取的样品串单元SU0的冗余数据区域的编程条件数据相同的数据,写入到存储在第一高速缓存125a的下位页面的冗余数据区域132b及存储在第二高速缓存125b的上位页面的冗余数据区域133b。而且,控制电路122将所读取的编程条件数据存储在寄存器122c。
[S2203]
其次,控制电路122基于存储在寄存器122c的编程条件数据,决定第二编程用的初始编程电压VPGM(VPGM=VPGM_SVF)。
以下,对第二编程用的初始编程电压进行说明。
首先,控制电路122如第一实施方式中使用图14及图15所说明般,导出编程电压VPGM_BASE。而且,控制电路122也可将所述编程电压VPGM_BASE作为第二页面编程用的初始编程电压VPGM_SVF。
而且,也可将对编程电压VPGM_BASE减去了偏置电压VPGM_OFFF所得的电压作为第二编程用的初始编程电压VPGM_SVF(=VPGM_BASE-VPGM_OFFF)。
而且,也可将对编程电压VPGM_BASE加上偏置电压VPGM_OFFF所得的电压作为第二编程用的初始编程电压VPGM_SVF(=VPGM_BASE+VPGM_OFFF)。
[S2204]~[S2209]
步骤S2204~S2209的动作与步骤S2112~S2117的动作相同。
<步骤S2003中,为“NO”的情况下>
其次,使用图29,说明控制电路122在步骤S2003中判定为指定串单元SUQ并非为有效的串单元的情况(S2003,NO)。
控制电路122使用存储在寄存器122c的编程条件数据设定第二编程的初始编程电压。
[S2301]
首先,控制电路122将下位页面的数据存储在第三高速缓存125c,将上位页面的数据存储在第二高速缓存125b。然后,控制电路122将存储在控制电路122的寄存器122c的编程条件数据写入到存储在第三高速缓存125c的冗余数据区域132b、及存储在第二高速缓存125b的冗余数据区域133b。
[S2302]~[S2308]
步骤S2302~S2308的动作与步骤S2203~S2209的动作相同。
<步骤S2004中,为YES的情况下>
控制电路122在步骤S2004中,判定为指定串单元SUQ与选择串单元SUP相同的情况下(S2004,YES),控制电路122将指定串单元SUQ置换为样品串单元,并进行与使用图26及图27说明的动作相同的动作。
<步骤S2004中,为NO的情况下>
控制电路122在步骤S2004中,判定为指定串单元SUQ不与选择串单元SUP相同的情况下(S2004,NO),控制电路122将指定串单元SUQ置换为样品串单元,并进行与使用图28说明的动作相同的动作。
<关于第二实施方式的数据的写入动作的作用效果>
根据所述第二实施方式,即便在使用第二编程动作的情况下,也可获得与第一实施方式相同的效果。
(第三实施方式)
接下来,对第三实施方式的存储器系统100进行说明。第三实施方式中,关于存储单元阵列存在多个的多平面结构方面,与第一及第二实施方式不同。另外,第三实施方式中,对具有与所述第一及第二实施方式大致相同的功能及构成的构成要素,附上相同符号,仅在必要时进行重复说明。
<第三实施方式的非易失性半导体存储装置>
首先,使用图30对多平面结构的存储器系统300进行说明。使用图30,对第三实施方式的3维积层型非易失性半导体存储装置进行说明。
第三实施方式的存储器系统300包括存储器控制器110及NAND闪存320。
<NAND闪存>
NAND闪存320包括输入输出缓冲器121、控制电路122、列地址缓冲器/列解码器123、323、失效比特计数器电路124、324、数据锁存电路125、325、感测放大器126、326、行地址缓冲器127、行解码器128、以及存储单元阵列130及330。另外,本说明书中,分别将存储单元阵列130、330称作第一平面PB0、第二平面PB1。
列地址缓冲器/列解码器323、失效比特计数器电路324、数据锁存电路325、感测放大器326及存储单元阵列330分别具有与列地址缓冲器/列解码器123、失效比特计数器电路124、数据锁存电路125、感测放大器126及存储单元阵列130相同的构成。
而且,列地址缓冲器/列解码器323、失效比特计数器电路324、数据锁存电路325、感测放大器326及存储单元阵列330分别与列地址缓冲器/列解码器123、失效比特计数器电路124、数据锁存电路125、感测放大器126及存储单元阵列130独立地动作。
另外,控制电路122可相对于存储单元阵列130及330并列地进行编程动作。
<关于第三实施方式的数据的写入动作>
其次,使用图31及图32对第三实施方式的存储器系统300的编程动作进行说明。
另外,直至对存储单元阵列130中的特定字线WLn的撷取动作完成为止(至少存储单元晶体管数NCHK_PASS超过规定值NCHK_PV为止)所需的循环数为“a”(a:1以上的整数),对存储单元阵列330中的特定字线WLn的撷取动作所需的循环数设为“b”(b:1以上的整数)。另外,控制电路122在对存储单元阵列130及330同时进行撷取动作的情况下,在存储单元阵列130及330的任一者的撷取动作结束的时间点,完成存储单元阵列130及330的撷取动作。
而且,例如,第三实施方式的控制电路122在对存储单元阵列130(第一平面PB0)及存储单元阵列330(第二平面PB1)的编程动作中,有时在接收指令顺序前接收样品串指定指令。
<<指令顺序例5>>
此处,使用图31,说明对存储单元阵列130(第一平面PB0)及存储单元阵列330(第二平面PB1)进行编程动作的情况下的指令顺序。
如图31所示,在指令顺序从存储器控制器110输入到NAND闪存120前,芯片赋能信号CEn、地址锁存赋能信号ALE、指令锁存赋能信号CLE为“L(low)”电平。而且,写入赋能信号WEn、读出赋能信号REn为“H(high)”电平。而且,表示数据锁存电路125的待命/忙碌状态的待命/忙碌信号(R/Bn)为“待命”状态。
接下来,NAND闪存120于指令锁存赋能信号CLE为“H”电平的期间,从存储器控制器110输入样品串单元指定指令“ZZH”。
NAND闪存120在地址锁存赋能信号ALE为“H”电平的期间,从存储器控制器110接收地址。该地址包含指定串单元SUQ0的地址,例如为存储单元阵列130(第一平面PB0)的串单元SU0的地址。
而且,NAND闪存120在指令锁存赋能信号CLE为“H”电平的期间,从存储器控制器110输入指令“80H”,写入赋能信号WEn为“L”电平。
NAND闪存120在地址锁存赋能信号ALE为“H”电平的期间,从存储器控制器110接收地址。该地址包含选择串单元SUP的地址,例如为存储单元阵列130(第一平面PB0)的串单元SU3的字线WL2的下位页面的地址。
而且,NAND闪存120继地址后接收数据。由此,该数据被存储在与存储单元阵列130(第一平面PB0)关联的数据锁存电路125。然后,NAND闪存120在指令锁存赋能信号CLE为“H”电平的期间,从存储器控制器110输入指令“11H”。由此,表示存储器控制器110完成向数据锁存电路125输入对存储单元阵列130编程的数据。
接下来,NAND闪存120在指令锁存赋能信号CLE为“H”电平的期间,从存储器控制器110输入样品串单元指定指令“ZZH”。
NAND闪存120在地址锁存赋能信号ALE为“H”电平的期间,从存储器控制器110接收地址。该地址包含指定串单元SUQ1的地址,例如为存储单元阵列330(第二平面PB1)的串单元SU1的地址。
而且,NAND闪存120在指令锁存赋能信号CLE为“H”电平的期间,从存储器控制器110输入指令“80H”,写入赋能信号WEn为“L”电平。
NAND闪存120在地址锁存赋能信号ALE为“H”电平的期间,从存储器控制器110接收地址。该地址包含选择串单元SUP的地址,例如为存储单元阵列330(第二平面PB1)的串单元SU3的字线WL2的下位页面的地址。
而且,NAND闪存120继地址后接收数据。由此,该数据被存储在与存储单元阵列330(第二平面PB1)关联的数据锁存电路1325。而且,NAND闪存120在指令锁存赋能信号CLE为“H”电平的期间,从存储器控制器110输入指令“10H”。由此,NAND闪存120对存储单元阵列130(第一平面PB0)及存储单元阵列330(第二平面PB1)进行与图16中说明的动作相同的动作。
具体而言,存储单元阵列130(第一平面PB0)及存储单元阵列330(第二平面PB1)中,分别对选择字线WL2施加B电平读取电压BR,并读取编程条件数据。
此时,控制电路122在存储单元阵列130(第一平面PB0)及存储单元阵列330(第二平面PB1)中,将所读取的编程条件数据(循环数)“a”与“b”加以比较。然后,控制电路122导出循环数“a”与“b”中哪个较小。接下来,控制电路122使用所导出的循环数(编程条件数据),决定存储单元阵列130(第一平面PB0)及存储单元阵列330(第二平面PB1)的编程用的初始编程电压。
<关于第三实施方式的数据的写入动作的作用效果>
根据所述第三实施方式,在使用了多平面的非易失性半导体存储装置中,也可获得与第一及第二实施方式相同的效果。
(第四实施方式)
接下来,对第四实施方式的存储器系统100进行说明。第四实施方式中,NAND闪存并非为3维积层结构而为平面NAND,就该方面而言与第一及第二实施方式不同。另外,第三实施方式中,对于具有与所述第一及第二实施方式大致相同的功能及构成的构成要素附上相同符号,仅在必要时进行重复说明。
使用图32,对第四实施方式的NAND型闪存400的构成概略地进行说明。图32是示意性地表示第四实施方式的NAND型闪存420的基本构成的框图。
第四实施方式的存储器系统400具有存储器控制器(memory controller)110、及NAND闪存(非易失性半导体存储装置)420。
<NAND闪存>
NAND闪存420包括输入输出缓冲器421、控制电路422、列地址缓冲器/列解码器423、失效比特计数器电路424、数据锁存电路425、感测放大器426、行地址缓冲器427、行解码器428、存储单元阵列430。输入输出缓冲器421、列地址缓冲器/列解码器423、失效比特计数器电路424、数据锁存电路425、感测放大器426、行地址缓冲器427、行解码器428具有与输入输出缓冲器121、列地址缓冲器/列解码器123、失效比特计数器电路124、数据锁存电路125、感测放大器126、行地址缓冲器127、行解码器128相同的构成。
控制电路422包括寄存器422a、422b、422c及422d,存储控制电路122进行运算所需的值。
寄存器422a存储后述的规定值NCHK_PV等,寄存器422b存储规定值NML2V_PV等。而且,寄存器422c及422d存储从后述的样品串或者下位页面读取的信息(例如8比特信息)。
而且,控制电路122基于存储在寄存器122c的编程条件数据,决定用于编程动作时的初始编程电压。
而且,控制电路122将编程未完成的比特数与所设定的容许失效比特数进行比较,判断编程动作通过还是失效。而且,控制电路122内部具备对编程脉冲施加次数进行计数的循环计数器。
存储单元阵列430包含多条比特线BL、多条字线WL、及源极线SL。该存储单元阵列430包含可电性覆写的存储单元晶体管(简称作存储单元等)MT呈矩阵状地配置而成的多个区块BLK。存储单元晶体管MT例如具有包含控制栅极电极及电荷蓄积层(例如浮动栅极电极)的积层栅极,根据由注入到浮动栅极电极的电荷量规定的晶体管的阈值的变化而存储多值数据。而且,存储单元晶体管MT也可为在氮化膜中具有捕获电子的MONOS(Metal-Oxide-Nitride-Oxide-Silicon,金属-氧化物-氮化物-氧化物-硅)结构。
另外,存储单元阵列430公开在题为“SEMICONDUCTOR MEMORY DEVICE HAVINGPLURALITY OF TYPES OF MEMORIES INTEGRATED ON ONE CHIP(具有多种积层于一个芯片的存储器的半导体存储装置)”的2009年3月3日申请的发明(No.12/397711)、题为“SEMICONDUCTOR MEMORY DEVICE INCLUDING STACKD GATE HAVING CHARGE ACCUMULATIONLAYER AND CONTROL GATE AND METHOD OF WRITING DATA TO SEMICONDUCTOR MEMORYDEVICE(包括具有电荷累积层及控制栅极的堆叠栅极的半导体存储装置以及对半导体存储装置写入数据的方法)”的2012年4月19日申请的发明(N0.13/451185)、题为“NONVOLATILESEMICONDUCTOR MEMORY ELEMENT,NONVOLATILE SEMICONDUCTOR MEMORY,AND METHOD FOROPERATING NONVOLATILE SEMICONDUCTOR MEMORY ELEMENT(非易失性半导体存储器元件、非易失性半导体存储器、以及操作非易失性半导体存储器元件的方法)”的2009年3月21日申请的发明(No.12/405626)、以及题为“NONVOLATILE SEMICONDUCTOR MEMORY DEVICEHAVING ELEMENT ISOLATING REGION OF TRENCH TYPE AND METHOD OF MANUFACTURINGTHE SAME(沟槽元件隔离区型非易失性半导体存储器装置以及其制造方法)”的2001年9月21日申请的明(No.09/956986)中。
另外,本实施方式中,为了方便起见,存储单元阵列430针对一个区块形成着字线WL0~WL127的128条字线WL。
<第四实施方式的编程动作的概要>
且说,作为进行上位页面编程的方法,考虑有如下方法:读取与进行编程的上位页面对应的下位页面,使用所读取的下位页面数据而使用上位页面编程;从外部接收与已对下位页面编程的数据相同的数据,并使用从外部所接收的下位页面数据而使用上位页面编程。然而,有时已对下位页面编程的数据中存在错误。
因此,本实施方式中,控制电路422在进行上位页面编程时,不进行与上位页面对应的下位页面的数据的读取,而再次使用从主机200供给的下位页面的数据进行编程。而且,使用存储在寄存器422c或者422d的编程条件数据,决定上位页面的初始编程电压。而且,本实施方式中,从特定字线WL的下位页面编程导出的编程条件数据被用于同一字线WL的上位页面的编程动作时。
其次,使用图33对本实施方式的编程动作的顺序进行说明。图33表示与字线WL和下位页面及上位页面对应的“页面编号”。而且,图33表示进行特定编程动作时存储在寄存器422c及422d内的标记信息与哪个页面有关。
控制电路422如果利用下位页面编程时的撷取动作获取编程条件数据,则将存储在寄存器422c的数据复制并设定于寄存器422d。然后,控制电路422将所获取的编程条件数据设定于寄存器422c。控制电路422基本上根据图中的页面编号进行编程动作。本实施方式的编程动作中,在连续的编程动作的中途变更了区块地址的情况下,寄存器422c及422d内的编程条件数据重设为“FF”数据。
以下对本实施方式的编程动作的详情进行说明。
<第四实施方式的数据的写入动作的详情>
根据图34所示的流程图对第四实施方式的第一编程动作进行说明。另外,以下所示的处理主要利用控制电路422的控制执行。
[S3001]
控制电路422如果从存储器控制器110接收编程指令、区块地址、页面的地址、编程开始指令,则判定该区块地址与之前执行的编程动作的编程地址是否相同。
[S3002]
控制电路422在步骤S3001中,判定为该区块地址与之前执行的编程动作的编程地址不同的情况下(S3001,NO),将存储在寄存器422c及422d的编程条件数据重设为“FF”。
[S3003]
控制电路422在步骤S3001中,判定为该区块地址与之前执行的编程动作的编程地址相同的情况下(S3001,YES)或者在步骤S3002的处理完成的情况下,判定页面的地址是否为下位页面。
[S3004]
控制电路422在步骤S3003中,判定为页面的地址并非为下位页面的情况下(S3003,NO),判定选择字线WL是否为同一区块内的被分配最大编号的字线。本实施方式中,字线WL存在128条,因而此处判定选择字线WL是否为字线WL127。
[S3005]
控制电路422在步骤S3004中,判定选择字线WL并非为字线WL127的情况下(S3004,NO),判定寄存器422d中是否设定“FF”。
[S3006]
控制电路422在步骤S3004中,判定选择字线WL为字线WL127的情况下(S3004,YES),判定寄存器422c中是否设定“FF”。
<步骤S3003中,为“YES”的情况下>
其次,按照图35所示的流程图,说明控制电路122在步骤S3003中,判定所接收的页面的地址为下位页面的地址的情况(S3003,YES)。
本实施方式中,与第一实施方式中使用图8说明的方法同样地,作为下位页面编程的一部分而进行撷取动作。
[S3101]~[S3108]
步骤S3101~S3108的动作与步骤S1101~S1108的动作相同。
[S3109]
其次,使用图33对步骤S3109的动作进行说明。
控制电路422如果获取编程条件数据,则将存储在寄存器422c的数据复制并设定于寄存器422d。而且,控制电路422将所获取的编程条件数据设定于寄存器422c。
例如,如图33所示,在进行对字线WL0的下位页面(页面0)的编程动作时,例如存储在寄存器422c的“FF”数据复制于寄存器422d中。而且,与页面“0”对应的编程条件数据写入到寄存器422c。
而且,如图33所示,在进行对字线WL1的下位页面(页面1)的编程动作时,例如与存储在寄存器422c的页面“0”对应的编程条件数据复制于寄存器422d中。而且,与页面“1”对应的编程条件数据写入到寄存器422c。
[S3110]~[S3117]
步骤S3110~S3117的动作与步骤S1110~S1117的动作相同。
控制电路422重复步骤S3112~S3117的动作直至判定通过步骤S3114的验证动作或者步骤S3115中判定循环数为最大值为止。
<步骤S3005中,为“NO”的情况下>
其次,按照图36的流程图,说明控制电路422在步骤S3005中判定为寄存器422c中未存储“FF”的情况(S3005,NO)。
该上位页面编程中,控制电路422不进行与上位页面数据对应的下位页面数据的读取动作,从存储器控制器110接收下位页面数据,由此进行上位页面编程。而且,使用存储在寄存器422d的编程条件数据,来决定上位页面编程用的初始编程电压。
[S3201]
控制电路422从寄存器422d读取编程条件数据。
控制电路422从存储器控制器110接收与上位页面对应的下位页面的数据,且存储在第一高速缓存425a。而且,控制电路422从存储器控制器110接收上位页面的数据,且存储在第二高速缓存425b。而且,控制电路122将所读取的编程条件数据存储在第一高速缓存425a中存储的冗余数据区域132b、及第二高速缓存425b中存储的冗余数据区域133b。
[S3202]
如图33所示,控制电路422基于存储在寄存器422d的编程条件数据,决定上位页面用的初始编程电压VPGM(VPGM=VPGM_SVU)。
另外,上位页面用的初始编程电压VPGM的决定方法利用与第一实施方式的图12的步骤S1203中说明的方法相同的方法进行。
[S3203]~[S3208]
步骤S3203~S3208的动作与步骤S1204~S1209的动作相同。
控制电路422重复步骤S3203~S3208的动作直至判定通过步骤S3205的验证动作或者步骤S3206中判定为循环数为最大值为止。
<步骤S3005中,为“YES”的情况下>
其次,按照图37的流程图,说明控制电路422在步骤S3005中判定为寄存器422d中存储有“FF”的情况(S3005,YES)。
如所述那样,本实施方式的上位页面编程中,控制电路422使用存储在寄存器422d的编程条件数据,决定上位页面编程用的初始编程电压。然而,在寄存器422d中存储“FF”的情况下,控制电路422未使用编程条件数据“FF”决定上位页面编程用的初始编程电压。“FF”是指进行当前编程的区块的编程条件数据未存储在寄存器422d的含义。因此,控制电路422进行与上位页面对应的下位页面数据的读取动作,仅获取所读取的数据中的编程条件数据。然后,控制电路422将所获取的编程条件数据存储在寄存器422c。此外,控制电路422使用所获取的编程条件数据,决定上位页面编程用的初始编程电压。以下对详情进行说明。
[S3301]
控制电路422对选择字线WLn施加B电平读取电压BR,由此读取与上位页面对应的下位页面数据。而且,控制电路422仅获取所读取的下位页面数据中的编程条件数据。此时,所读取的下位页面的数据未被用于上位页面的编程。
[S3302]
而且,控制电路422将从存储器控制器110接收的下位页面的数据(与已对该下位页面编程的数据相同的数据),在第一高速缓存425a中存储下位页面的数据。而且,控制电路422,同时将所读取的下位页面132的冗余数据区域132b中写入的编程条件数据,对第一高速缓存425a在下位页面的冗余数据区域132b进行存储。
而且,控制电路422将上位页面的数据存储在第二高速缓存425b。
控制电路422将所读取的下位页面132的冗余数据区域132b的编程条件数据,存储在第二高速缓存425b中存储的上位页面133的冗余数据区域133b。此外,控制电路422将所获取的编程条件数据存储在寄存器422c。
[S3303]
其次,控制电路422基于所读取的下位页面132的冗余数据区域132b的编程条件数据,决定上位页面用的初始编程电压VPGM(VPGM=VPGM_SVU)。
[S3304]~[S3309]
步骤S3304~S3309的动作与步骤S1204~S1209的动作相同。
控制电路422重复步骤S3304~S3309的动作,直至判定通过步骤S3306的验证动作或者步骤S3307中判定为循环数为最大值为止。
<步骤S3006中,为“NO”的情况下>
其次,说明控制电路422在步骤S3006中,判定为寄存器422c中未存储“FF”的情况(S3006,NO)。
该上位页面编程中,控制电路422如使用图36说明般,不进行与上位页面数据对应的下位页面数据的读取动作,从存储器控制器110接收下位页面数据,由此进行上位页面编程。而且,进行上位页面编程的字线WL为字线WL127,因而使用存储在寄存器422c而非存储在寄存器422d的编程条件数据,决定上位页面编程用的初始编程电压。
另外,基本的动作与使用图36说明的动作相同。如图33所示,步骤S3203中,控制电路422基于存储在寄存器422c的编程条件数据决定上位页面用的初始编程电压VPGM(VPGM=VPGM_SVU),就该方面而言与图36中说明的动作不同。
如图33所示,如果对字线WL127的上位页面(页面“255”),使用寄存器422d的编程条件数据,则在本实施方式的编程顺序的关系方面,参照字线WL126的下位页面的编程条件数据,从而使用不适合的编程条件数据。因此,在进行特定区块中的被分配最大编号的字线WL的上位页面编程的情况下,基于存储在寄存器422c的编程条件数据,决定上位页面用的初始编程电压。
<步骤S3006中,为“YES”的情况下>
其次,控制电路422在步骤S3006中,判定为寄存器422c中存储有“FF”的情况下(S3006,YES),控制电路422进行与使用图37说明的动作相同的动作。
<指令顺序例6>
其次,使用图38,对上位页面编程的指令顺序进行说明。
如图38所示,进行与使用图8说明的动作相同的动作直至对NAND闪存420完成数据的输入为止。然后,NAND闪存420在指令锁存赋能信号CLE为“H”电平的期间,从存储器控制器110输入指令“XXH”。由此,将存储在第一高速缓存425a的数据存储在其他高速缓存。由此,待命/忙碌信号(R/Bn)为“忙碌”状态。
如果待命/忙碌信号(R/Bn)为“待命”状态,则利用与图33中说明的方法相同的方法,将上位页面的指令顺序输入到NAND闪存420。
<关于第四实施方式的数据的写入动作的作用效果>
根据所述第四实施方式,在使用平面NAND闪存的情况下,也可获得与第一实施方式相同的效果。
而且,根据第四实施方式,在执行上位页面编程时,从存储器控制器110接收下位页面的数据。例如,在写入到存储单元晶体管的下位页面数据包含错误的情况下,使用引起错误的下位页面数据进行上位页面编程而并不理想。然而,根据本实施方式,在执行上位页面编程时,从存储器控制器110接收与上位页面对应的下位页面数据,因而可抑制此种问题。结果,根据本实施方式,可提供高品质半导体存储装置。
(变化例等)
另外,根据所述各实施方式,控制电路122在进行第一编程动作时进行上位页面编程的情况下,读取样品串单元或者寄存器122c中存储的编程条件数据,决定上位编程用的初始编程电压,但不限于此。控制电路122在进行上位页面编程时,需要与上位页面对应的下位页面数据。而且,根据所述各实施方式也可知,已对下位页面进行样品串单元的编程条件数据的编程。因此,在读取与上位页面对应的下位页面数据的阶段,也可将包含于该下位页面的编程条件数据存储在寄存器122c,且使用该编程条件数据,决定上位页面用的初始编程电压。由此,控制电路122可抑制对样品串单元的编程条件数据的读取动作。
而且,所述第一实施方式中已记载:也可将对下位页面编程用的初始编程电压VPGM_SVL加上偏置电压所得的电压、或者从初始编程电压VPGM_SVL减去偏置电压所得的电压,作为上位页面编程用的初始编程电压VPGM_SVU。同样地,也可将对下位页面编程用的初始编程电压VPGM_SVL加上偏置电压所得的电压、或者从初始编程电压VPGM_SVL减去偏置电压所得的电压,用作下位页面编程用的初始编程电压VPGM_SVL。而且,所述各实施方式中,对存储单元晶体管MT保持2比特的情况进行了说明,但并不限定于此。例如,存储单元晶体管MT也可保持3比特以上的数据。
而且,所述各实施方式中,数据锁存电路125包括3个高速缓存,但不限定于此,至少包括2个以上的高速缓存即可。
再者,所述各实施方式中,
(1)读出动作中,
A电平的读出动作中施加到所选择的字线的电压例如处于0V~0.55V之间。但并不限定于此,也可处于0.1V~0.24V、0.21V~0.31V、0.31V~0.4V、0.4V~0.5V、0.5V~0.55V中任一者之间。
B电平的读出动作中施加到所选择的字线的电压例如处于1.5V~2.3V之间。但不限定于此,也可处于1.65V~1.8V、1.8V~1.95V、1.95V~2.1V、2.1V~2.3V中任一者之间。
C电平的读出动作中施加到所选择的字线的电压例如处于3.0V~4.0V之间。但并不限定于此,也可处于3.0V~3.2V、3.2V~3.4V、3.4V~3.5V、3.5V~3.6V、3.6V~4.0V中任一者之间。
作为读出动作的时间(tR),也可处于例如25μs~38μs、38μs~70μs、70μs~80μs之间。
(2)写入动作如所述那样包含编程动作与验证动作。写入动作中,对编程动作时选择的字线最初施加的电压例如处于13.7V~14.3V之间。但并不限定于此,也可处于例如13.7V~14.0V、14.0V~14.6V中任一者之间。
也可改变写入第奇数条字线时对所选择的字线最初施加的电压、与写入第偶数条字线时的对所选择的字线最初施加的电压。
在将编程动作设为ISPP方式(Incremental Step Pulse Program,增量阶跃脉冲编程)时,作为增加(step up)的电压例如可列举0.5V左右。
作为施加到非选择的字线的电压,例如也可处于6.0V~7.3V之间。但不限定于该情况,例如也可处于7.3V~8.4V之间,还可为6.0V以下。
也可根据非选择的字线为第奇数条字线还是为第偶数条字线,而改变所施加的通过电压。
作为写入动作的时间(tProg),例如也可处于1700μs~1800μs、1800μs~1900μs、1900μs~2000μs之间。
(3)删除动作中,
对形成于半导体衬底上部且上方配置着所述存储单元的井最初施加的电压例如处于12V~13.6V之间。不限定于该情况,例如也可处于13.6V~14.8V、14.8V~19.0V、19.0V~19.8V、19.8V~21V之间。作为删除动作的时间(tErase),例如也可处于3000μs~4000μs、4000μs~5000μs、4000μs~9000μs之间。
(4)存储单元的结构,
具有经由膜厚4~10nm的隧道绝缘膜而配置于半导体衬底(硅衬底)上的电荷蓄积层。该电荷蓄积层可设为膜厚为2~3nm的SiN、或者SiON等绝缘膜与膜厚3~8nm的多晶硅的积层结构。而且,也可对多晶硅添加Ru等金属。电荷蓄积层的上具有绝缘膜。该绝缘膜例如具有夹在膜厚为3~10nm的下层High-k(高介电)膜与膜厚为3~10nm的上层High-k膜间的膜厚为4~10nm的硅氧化膜。High-k膜可列举HfO等。而且,硅氧化膜的膜厚可比High-k膜的膜厚更厚。绝缘膜上经由膜厚为3~10nm的功函数调整用的材料而形成膜厚为30nm~70nm的控制电极。此处,功函数调整用的材料为TaO等金属氧化膜、TaN等金属氮化膜。控制电极可使用W等。
而且,存储单元间可形成气隙。
以上,对本发明的实施方式进行了说明,但本发明并不限定于所述实施方式,可在不脱离其主旨的范围内进行各种变形而实施。此外,所述实施方式中包含各种段阶的发明,通过将所揭示的构成要件适当组合而提出各种发明。例如,即便从所揭示的构成要件中删除几个构成要件,只要获得特定效果,则可作为发明而提出。
[符號說明]
100 存储器系统
110 存储器控制器
111 主机接口
112 RAM
113 ECC电路
114 CPU
115 ROM
116 闪存接口
120 NAND闪存
121 输入输出缓冲器
122 控制电路
122a、122b、122c 寄存器
123 列解码器
124 失效比特计数器电路
125 数据锁存电路
125a 第一高速缓存
125b 第二高速缓存
125c 第三高速缓存
126 感测放大器
127 行地址缓冲器
128 行解码器
130 存储单元阵列
131 NAND串
132 下位页面
132a 正常数据区域
132b 冗余数据区域
133 上位页面
133a 正常数据区域
133b 冗余数据区域
200 主机设备
300 存储器系统
320 NAND闪存
323 列解码器
324 失效比特计数器电路
325 数据锁存电路
326 感测放大器
330 存储单元阵列