以下、図面を参照しながら、本発明の例を実施するための形態について詳細に説明する。以下の説明において、同一の機能及び構成を有する要素については、同一符号を付し、重複する説明は必要に応じて行う。
[実施形態]
(1) 第1の実施形態
(a)全体構成
図1乃至図3を用いて、第1の実施形態に係る不揮発性半導体メモリについて、説明する。本実施形態の不揮発性半導体メモリは、例えば、フラッシュメモリである。
図1は、本実施形態に係るフラッシュメモリのブロック図である。
本実施形態のフラッシュメモリ1は、NAND型フラッシュメモリである。
図1に示されるように、NAND型フラッシュメモリ1は、メモリセルアレイ2、ロウデコーダ3、カラムデコーダ4、ページバッファ5、データ入出力バッファ7、及び制御回路6を備えている。
図1に示されるように、メモリセルアレイ2は、複数のNANDセルユニット(メモリセルユニット)NUを備えている。NANDセルユニットNUの各々は、例えば、32個のメモリセルMC0〜MC31と、選択トランジスタST1、ST2とを含んでいる。なお、メモリセルMCの個数は32個に限られず、8個や16個、64個、128個、256個等であってもよく、その数は限定されるものではない。以下、メモリセルMC0〜MC31を区別しない場合には、一括してメモリセルMCとよぶ。
メモリセルMCは、半導体基板上にゲート絶縁膜を介在して形成された電荷蓄積層(例えば、浮遊ゲート)と、電荷蓄積層上にゲート間絶縁膜を介在して形成された制御ゲートとを有する積層ゲート構造を備えた電界効果トランジスタである。電荷蓄積層は絶縁物を材料に用いて形成されても良い。メモリセルMCは、隣接するトランジスタ同士でソース/ドレインを共有している。そして、メモリセルMCは、選択トランジスタST1、ST2間に、その電流経路が直列接続されるように、配置されている。直列接続された複数のメモリセル(以下、NANDストリングとよぶ)の一端側のドレインは選択トランジスタST1のソースに接続され、他端側のソースは選択トランジスタST2のドレインに接続されている。
同一のロウにあるメモリセルMCの制御ゲートはワード線WL0〜WL31のいずれかに共通接続され、同一のロウにある選択トランジスタST1,ST2のゲートは、それぞれセレクトゲート線SGD、SGSに共通接続されている。以下では、ワード線WL0〜WL31を単にワード線WLとよぶことがある。さらに、選択トランジスタST1のドレインはビット線BL0〜BLm(mは1以上の自然数)のいずれかに接続される。選択トランジスタST2のソースはソース線SLに共通接続される。ビット線BL0〜BLmについても、これらを区別しない場合には単にビット線BLとよぶ。
以上の構成において、ワード線WL及びセレクトゲート線SGD、SGSを共通にする複数のNANDセルユニットNUによって、1つのブロックと呼ばれる単位が形成される。同一のブロック内のメモリセルトランジスタMCは、一括してデータが消去される。更に、同一のワード線WLに接続された複数のメモリセルMCには、一括してデータが書き込まれ、この単位はページとよばれる。
また、図1において、1つのブロックのみ図示しているが、ビット線BLに沿った方向に複数のブロック設けられてもよい。この場合、メモリセルアレイ2内において同一列にあるNANDセルユニットNUは、同一のビット線BLに共通接続される。
ロウデコーダ3は、メモリセルアレイ2のロウ方向を選択する。アドレスバッファ(図示せず)に入力されたアドレス信号に基づいて、ワード線WLを選択する。そして、ロウデコーダは、選択したワード線WL及び非選択のワード線WLに対して、適切な電圧を印加する。各ワード線WLに印加される電圧は、例えば、チップ内に設けられた電位供給回路(図示せず)によって、生成される。ロウデコーダ3は、メモリセルアレイ2の各ロウに対応して、転送トランジスタを備えている。ワード線WLは、転送トランジスタを経由して、電位供給回路内のチャージポンプ(図示せず)に接続されている。
ページバッファ5は、データの書き込み時には、外部から与えられる書き込みデータを一時的に保持し、これをビット線BLに転送して、ページ単位で一括してデータを書き込む。またデータの読み出し時には、ページ単位でビット線BLに読み出されたデータをセンス・増幅し、これを一時的に保持し、外部へ出力する。
データ入出力バッファ7は、外部ユニット(例えば、コントローラ又はホスト)とメモリセルアレイ2との間のデータDTの入出力のために、書き込みデータ及び読み出しデータを、一時的に保持する。外部からの要求に応じて、データ入出力バッファ7とページバッファ5との間で、データが入出力される。
カラムデコーダ4は、メモリセルアレイ2のカラム方向を選択する、すなわち、ビット線BLを選択する。カラムデコーダ4は、読み出し時には、選択したビット線BLに対応するデータを出力するように、ページバッファ5に命令する。カラムデコーダ4は、書き込み時には、データを所定のページに属するメモリセルMCに転送するように、ページバッファ5に命令する。
制御回路6は、NAND型フラッシュメモリ1全体の動作を司る。すなわち、データの書き込み時、読み出し時、及び消去時等において、ロウデコーダ3、カラムデコーダ4、ページバッファ5及びデータ入出力バッファ7動作を制御する。
図2を用いて、ページバッファ5の内部構成について、説明する。図2は、ページバッファ5及びメモリセルアレイ2のブロック図である。尚、図2において、図示の簡略化のため、1本のビット線(1つのカラム)に対応するパージバッファの内部構成を図示している。
ページバッファ5内には、センスアンプ回路10及びラッチ回路20が設けられている。センスアンプ回路10及びラッチ回路20は、メモリセルアレイ2のカラムに対応して、1つずつ設けられている。つまり、1つのセンスアンプ回路10と1つのラッチ回路20が、1つのビット線BL0及び1つのNANDセルユニットNUに対応している。
1つのセンスアンプ回路10は、1つのNANDセルユニットNUに対応している。1つのセンスアンプ回路10が、1本のビット線BL0に接続される。1つのラッチ回路20も、センスアンプ回路10と同様に、1つのNANDセルユニットNUに対応している。ラッチ回路20は、センスアンプ回路10を経由して、ビット線BL0に接続される。
メモリセルアレイ2内の残りのビット線BL1〜BLmに関しても、ビット線BL0と同様に、センスアンプ回路10及びラッチ回路20が接続されている。
センスアンプ回路10は、センスアンプユニット11と、演算ユニット12を有する。
センスアンプユニット11は、データの読み出し時、ビット線BL0の電位変動を検知及び増幅し、データを判別する。演算ユニット12は、メモリセルが所定の電圧レベルに書き込まれた否か判定するための演算、及び、メモリセルのしきい値の状態を判定するため演算を、実行する。
ラッチ回路20は、メモリセルに書き込むデータ、メモリセルから読み出されたデータ及びメモリセルに対する動作を示す設定情報(以下、フラグとよぶ)などを、一時的に保持する。
ラッチ回路20は、少なくとも2つのラッチ21,22,23を有する。本実施形態において、データを保持するラッチ21,22のことを、データラッチ21,22とよび、動作の設定情報を保持するラッチ23のことを、フラグラッチ23とよぶ。
ラッチ回路20内のデータラッチ21,22は、データの書き込み時において、その回路20に対応しているNANDセルユニットNUに書き込むデータ(外部からのデータ)を保持し、データの読み出し時において、その回路20に対応しているNANDセルユニットNUから読み出されたデータ(メモリセルからのデータ)を保持する。1つのデータラッチは、1ビットのデータを保持する。フラグラッチ23が保持するフラグは、例えば、入力されたデータが2値(1ビット)のデータであるか多値(2ビット以上)のデータであるかを示す情報、或いは、どのような書き込みモードでデータを書き込むべきかを示す情報である。
例えば、1つのメモリセルが4値(2ビット)のデータを記憶する場合、ラッチ回路20は、2つのデータラッチ21,22と1つのフラグラッチ23を有する。ラッチ回路20内に設けられた2つのデータラッチのうち、一方の上位データラッチ(ULAT)21は、2ビットのうち上位の1ビットを保持し、他方の下位データラッチ(LLAT)22は、2ビットのうち下位の1ビットを保持する。
尚、4値のデータの場合には、2つのデータラッチと1つのフラグラッチが、ラッチ回路20内に設けられるが、データのビット数が増加すると、データラッチの個数は、増大する。例えば、メモリセルMCが8値(3ビット)のデータを記憶する場合、ラッチ回路20は3つのデータラッチを有する。つまり、ラッチ回路20は、最上位の1ビットを保持するデータラッチと、最下位の1ビットを保持するデータラッチと、最上位と最下位との間の1ビットを保持するデータラッチとを有する。これと同様に、データが16値(4ビット)の場合、ラッチ回路20内のデータラッチの個数は4個となり、データが32値(16ビット)の場合、ラッチ回路20内のデータラッチの個数は5個となる。データが2値(1ビット)の場合には、データラッチの個数は、1個となる。
フラグラッチの個数は、1個でもよいし、メモリの設定に応じて2個以上でもよい。
本実施形態のフラッシュメモリにおいて、ラッチ回路20のデータラッチ及びフラグラッチは、データの書き込み時又はデータの読み出し時に、データ及びフラグをそれぞれ保持することに加えて、ベリファイ時にNANDセルユニットNUに対して正常にデータが書き込まれた否かを示す判定情報を保持する。
次に、図3を用いて、メモリセルMCの取り得るデータについて説明する。図3は、メモリセルMCのしきい値電圧を示すグラフであり、縦軸にしきい値電圧(しきい値レベル、しきい値電位ともよぶ)Vthをとり、横軸にメモリセルMCの存在確率を示したグラフである。
図3に示されるように、例えば、4値のフラッシュメモリにおいて、各々のメモリセルMCは4値のデータを保持できる。より具体的には、メモリセルMCは、しきい値電圧Vthの低い順に“E”(“Er”)レベル、“A”レベル、“B”レベル、及び“C”レベルの4種のデータを保持できる。“E”、“A”、“B”、及び“C”レベルは、2進数表示でそれぞれ“11”、“01”、“00”、及び“10”データに、それぞれ対応づけられる。この2ビットのデータの各ビットを、図3に示されるように、上位(upper)ビット(または上位データ)及び下位(lower)ビット(下位データ)とよぶ。尚、“E”〜“C”レベルと“00”〜“11”データとの関係は、図3の場合に限られるものでは無く、適宜選択できる。
“E”(Erase)レベルは消去レベルであり、そのしきい値電圧VthEはVthE<ARである。“A”レベルのしきい値電圧VthAは、AR<VthA<BRである。“B”レベルのしきい値電圧VthBは、BR<VthB<CRである。“C”レベルのしきい値電圧VthCは、CR<VthC<VREADである。
本実施形態において、記憶しているデータが“C”レベルであるメモリセルのことを、「“C”レベルセル」とよぶ。記憶しているデータが“B”レベルであるメモリセルのことを、「“B”レベルセル」とよぶ。記憶しているデータが“A”レベルであるメモリセルのことを、「“A”レベルセル」とよぶ。また、“E”レベル(消去状態)のメモリセルのことを、「“E”レベルセル」とよぶ。
本実施形態において、“C”レベルに対応するデータの書き込みを、「“C”書き込み」とよぶ。また、“B”レベルに対応するデータの書き込みを、「“B”書き込み」とよぶ。さらに、“A”レベルに対応するデータの書き込みを、「“A”書き込み」とよぶ。尚、“E”レベルは消去レベルである。それゆえ、“E”レベルに対応するデータの書き込みは、消去動作であるが、必要に応じて、“E”書き込みとよぶ。
上記の電位VREAD,CR,BR,ARは、読み出しコマンドの基づくデータの読み出し、又は、ベリファイのためのデータの読み出しに用いられる電位である。本実施形態において、電位(読み出しレベル)CRを読み出しレベルに用いて行うデータの読み出し(すなわち、しきい値レベルが“C”レベルなのか、“B”レベル以下なのかの判定)を、「“C”読み出し」とよぶ。また、電位BRを用いて行うデータの読み出し(すなわち、しきい値レベルが“B”レベル以上なのか、“A”レベル以下なのかの判定)を、「“B”読み出し」とよぶ。さらに、電位ARを用いて行うデータの読み出し(すなわち、しきい値レベルが“A”レベル以上なのか、“E”レベルなのかの判定)を、「“A”読み出し」とよぶ。書き込みコマンドに対応する書き込みシーケンスが終了する前に、これらの読み出しレベルを用いたベリファイ(以下、ベリファイ読み出しとよぶ)が実行される。本実施形態において、1つの書き込みシーケンスは、データの書き込みと、それに続く、ベリファイのためのデータの読み出し(ベリファイ読み出し)とを含んでいる。尚、ベリファイ読み出しは、外部からの読み出しコマンドの入力は必要ない。
データは、同一のワード線WLに接続されたメモリセルMCに対して、一括して書き込まれ、また読み出される。この際、データは下位ビット毎、または上位ビット毎に書き込まれ、また読み出される。したがって、メモリセルMCが2ビットデータを保持している場合には、1本のワード線WLあたり、2つのページが割り当てられていることになる。以下、下位ビットについて一括して書き込みまたは読み出されるページを下位ページとよび、上位ビットについて一括して書き込みまたは読み出されるページを上位ページとよぶ。
多値フラッシュメモリの書き込みモードには、例えば、LM(Lower at Middle)モードや、QPW(Quick Pass Write)モードがある。以下では、QPWモードがデータの書き込みに用いられた場合について述べるが、本実施形態のフラッシュメモリは、他の書き込みモードにも適用可能である。
QPWモードは、データ書き込み時、ビット線に所定の中間電位を供給して、選択されたメモリセル(以下、選択セルとよぶ)のしきい値電圧が、書き込むべきデータに対応するしきい値分布内に収まっているかどうか判別(ベリファイ)することによって、メモリセルのしきい値を所定の範囲内にシフトさせる。これによって、所定のデータに対するメモリセルのしきい値分布を狭くする。QPWモードにおいて、フラグラッチが保持するフラグは、QPW情報ともよばれる。
QPWモードにおいて、各しきい値レベルの分布に対して、高電位側のしきい値レベルと低電位側のしきい値レベルが、ベリファイのための判定基準となる電位レベルとして、設定される。
“C”レベルのしきい値分布において、ベリファイの判定基準として、その分布の高電位端のレベルに対して、判定レベル“CVH”(<VREAD)が設定され、その分布の低電位端のレベルに対して、判定レベル“CV”(>CR)が設定される。“B”レベルのしきい値分布において、ベリファイの判定基準として、その分布の高電位端のレベルに対して、判定レベル“BVH”(<CR)が設定され、その分布の低電位端のレベルに対して、判定レベル“BV”(BVH>BV>BR)が設定される。“A”レベルのしきい値分布において、ベリファイの判定基準として、その分布の高電位端のレベルに対して、判定レベル“AVH”(<BR)が設定され、その分布の低電位端のレベルに対して、判定レベル“AV”(AVH>AV>AR)が設定される。また、“E”レベルのしきい値分布において、ベリファイの判定基準として、その分布の高電位端のレベル“EVH”(<AR)が設定されている。
また、各しきい値レベルに対して、読み出しレベルとしきい値分布の低電位端の判定レベルとの間に、もう1つの判定レベルが設定されている。
“C”レベルにおいて、読み出しレベルCRと判定レベルCVとの間に、判定レベルCVLが設定されている。“B”レベルにおいて、読み出しレベルBRと判定レベルBVとの間に、判定レベルBVLが設定されている。“A”レベルにおいて、読み出しレベルARと判定レベルAVとの間に、判定レベルAVLが設定されている。
以下では、各しきい値レベルにおいて、判定レベルCVH,BVH,AVHを、“CVH”レベル、“BVH”レベル、“AVH”レベルとそれぞれよぶ。判定レベルCVL,BVL,AVLを、“CVL”レベル、“BVL”レベル、“AVL”レベルとそれぞれよぶ。また、判定レベルCV,BV,AVを、“CV”レベル、“BV”レベル、“AV”レベルとそれぞれよぶ。
QPWモードを用いたフラッシュメモリにおいて、データの書き込み中に、上記の判定レベルを用いて、外部から入力された書き込むべきデータが、所定のメモリセルに書き込まれているか否か、ベリファイされる。
ベリファイ動作は、例えば、制御回路6が、ロウ/カラムデコーダ3,4、ページバッファ5の動作を制御し、上記の判定レベル及び読み出しレベルを用いて、データを書き込んだメモリセルのしきい値電圧が、書き込むべきデータに対応するしきい値分布の範囲内に存在するか否かを判定することによって、実行される。
ベリファイの結果がパス(Pass)であるかフェイル(Fail)であるかは、例えば、制御回路6、又は、ページバッファ5が有するセンスアンプ回路10内の演算ユニット12が、メモリセルのしきい値レベルとラッチ回路20が保持するデータとに対して演算処理することによって、得られる。ベリファイの結果がパスである場合、データの書き込みがパスであることを示す情報(以下、パス情報とよぶ)が、演算ユニット12又は制御回路6から出力される。ベリファイの結果がフェイル(Fail)である場合、データの書き込みがフェイルであることを示す情報(以下、フェイル情報とよぶ)が、演算ユニット12又は制御回路6から出力される。以下では、ベリファイの結果が、パスかフェイルかどちらの結果であるかを限定しない場合には、その結果をパス/フェイル情報又は単に判定情報とよぶ。
ベリファイ動作は、各しきい値レベル毎に、順次実行される。
図3に示されるように、本実施形態のフラッシュメモリは、データに対応する複数のしきい値レベルにおいて、データの書き込みの成否を判定するための情報が、隣り合わない2以上のしきい値レベルに対して同じ情報になるように、割り付けられる。
図3に示される例では、QPWモードにおけるデータ書き込み時のベリファイにおいて、ベリファイをパスした“C”レベルセルと“A”レベルセルとのグループに対して同じ判定情報(パス情報ともよばれる)が割り付けられ、ベリファイをパスした“B”レベルセルと“E”レベルセルとのグループに対して、同じ判定情報が割り付けられている。図3に示される例において、“C”及び“A”レベルセルの判定情報は、例えば、“111”に設定される。“B”及び“E”レベルセルの判定情報は、例えば、“110”に設定される。
これらの判定情報は、書き込むデータを一時的に保持するデータラッチ21,22及びフラグを一時的に保持するフラグラッチ23に、上書きされことによって、チップ1内部で保持される。
“C”及び“A”レベルセルのグループのパス情報に関して、“C”及び“A”レベルセルにそれぞれ対応するラッチ回路20において、例えば、上位データラッチ(ULAT)21に“1”が保持され、下位データラッチ(LLAT)に“1”が保持され、フラグラッチ(QLAT)に“1”が保持される。“B”及び“E”レベルセルのグループのパス情報に関して、“B”及び“E”レベルセルにそれぞれ対応するラッチ回路20において、例えば、上位データラッチ(ULAT)21に“1”が保持され、下位データラッチ(LLAT)に“1”が保持され、フラグラッチ(QLAT)に“0”が保持される。
上記の判定情報において、上位及び下位データラッチ21,22の保持する“11”は、書き込みがパスしたことを示す。また、フラグラッチ23の保持する“1”は、“C”及び“A”レベルセルであることを示し、フラグラッチ23の保持する“0”は、“B”及び“E”レベルセルであることを示す。このように、本実施形態において、書き込みがパスであると判定された場合に、“A”レベルと“B”レベルのように、隣り合う2つのしきい値レベルに対して、異なる判定情報が設定されている。
そして、フラッシュメモリ1の制御回路6(又は演算ユニット12)は、隣り合わないしきい値レベル毎に割り付けられたパス情報とベリファイ読み出しの結果とを比較して、所定のメモリセルに書き込むべき所定のデータが書き込まれているか否か判定する。その比較結果は、制御回路6の制御によってラッチ回路20に転送され、データラッチ21,22の判定情報が、転送された比較結果に書き換えられる。
本実施形態のフラッシュメモリ1において、例えば、判定情報とベリファイ読み出しの比較結果がフェイルであった場合、そのフェイル情報が、下位データラッチ(LLAT)22に書き込まれる。
これによって、データの書き込みの不良ビット数が、不良に対する許容値を満たすか否か判別される。そして、データの書き込みに対する許容される条件が満たされた場合に、ある選択ワード線(ページ)又はブロックに対する書き込みシーケンスが完了する。
1つの書き込みシーケンスが完了すると、他のワード線又は他のブロックに対する書き込みシーケンスが実行される。一般に、NAND型フラッシュメモリの書き込み動作は、ソース線側からビット線側に向かう順番で、選択ワード線が切り替えられて、書き込みシーケンスが進行する。
以上のように、本実施形態のフラッシュメモリは、隣り合わない2以上のしきい値レベルに対して設定された共通の判定情報を用いて、書き込むべきデータが所定のメモリセルに書き込まれたか否か、検証する。
一般的なフラッシュメモリは、あるデータの書き込みが完了したメモリセルのしきい値が、そのしきい値レベルよりも上のレベルに遷移した場合や、所定のデータの書き込みが完了したメモリセルのしきい値レベルが、隣接するメモリセルに対するデータの書き込みに起因して他のレベルに遷移した場合、ベリファイ読み出しによって読み出されたデータが、記憶すべきデータと異なっていても、データの誤りとして検知できない。
本実施形態のフラッシュメモリのように、隣り合わない複数のしきい値レベル(しきい値分布)を1つのグループとして、それらに書き込み(ベリファイ)のパス/フェイルを示す情報及び書き込むべきデータを示す情報を、書き込みの成否を示す判定情報として設定することによって、例えば、“A”レベルのデータを書き込むべきメモリセルのしきい値レベルが、セル間干渉(例えば、ユーピン効果)やベリファイ読み出し中の読み出しディスターブなどに起因して“B”レベルのしきい値レベルに遷移してしまう不良が、メモリの動作中に発生しても、それらの不良を検出できる。それゆえ、メモリの信頼性を向上できる。
本実施形態のフラッシュメモリに設定される判定情報は、ラッチによる保持が不要になったデータ上に、上書きされる。すなわち、設定情報は、ページバッファ5内に設けられた既存のデータラッチ21,22及びフラグラッチ23に保持される。
それゆえ、本実施形態のフラッシュメモリのように、新規の判定情報が設定されても、その判定情報を保持するために、新たな記憶素子を設ける必要はなく、ページバッファが含むラッチの個数が増大することもない。したがって、本実施形態のフラッシュメモリ1は、回路構成の変更及び回路規模の増大なしに、フラッシュメモリの信頼性が向上する。
また、本実施形態のような判定情報を用いずに、メモリチップ内のラッチの個数を増大させずに、データの書き込みの成否を判定するために、外部のコントローラを用いる場合がある。この場合、書き込み動作が終了した後、外部のコントローラが保持しているデータがメモリチップに転送され、その転送されたデータとメモリセルから読み出されたデータとがチップ内部で比較される。これとは反対に、メモリセルから読み出されたデータが外部コントローラに転送され、コントローラが保持しているデータとメモリチップから転送されたデータとが外部コントローラ内部で比較される。
これらのように、所定のデータが書き込まれたか否か検証するために外部コントローラが用いられた場合、チップ内部でのデータの読み出し時間やメモリチップと外部コントローラ間におけるデータの転送時間が発生し、且つ、データをメモリセルに書き込んだ後においてもコントローラがデータを保持し続けなければならない。そのため、フラッシュメモリの動作速度が低減してしまう。
本実施形態のフラッシュメモリにおいて、外部のコントローラを用いずに、隣り合わないに2以上のしきい値レベルで共通な判定情報を用いて、データの書き込みの成否をチップの内部処理で判定できるため、動作速度が低減するのを抑制できる。
また、従来のベリファイ読み出しによって検出できない不良ビットを救済するために、ECC(Error Checking and Coding)回路をチップ内に設けた場合、メモリの回路規模が増大してしまう。
これに対して、本実施形態のフラッシュメモリは、隣り合わないに2以上のしきい値レベルで共通な判定情報を設定することによって、ECC回路を用いずとも、従来では検出できなかった不良ビットを検出できる。
以上のように、本実施形態のフラッシュメモリにおいて、データの書き込みの信頼性を向上するために、チップ内部の回路規模を増大させる必要はなく、外部のコントローラを利用する必要もない。
したがって、第1の実施形態のフラッシュメモリによれば、回路構成を変更することなしに、メモリの信頼性を向上できる。
(b) 動作
図4乃至図7を用いて、本実施形態のフラッシュメモリの動作について、説明する。尚、必要に応じて、図1乃至図3を用いて、本実施形態のフラッシュメモリの動作について、説明する。ここでは、フラッシュメモリの書き込みモードが、QPWモードである場合について、説明する。
図4に示されるように、データの書き込みコマンド及びアドレス信号とともに、データが外部からフラッシュメモリ1のデータ入出力バッファ7に、入力される。入力されたデータは、制御回路6の制御によって、データ入出力バッファ7からページバッファ5内のラッチ回路20へ転送される。そして、転送されたデータの書き込みが、開始される(ステップST1)。
尚、外部からのデータがページバッファ5に転送される前に、選択されたブロックに対して、消去動作が実行されている。そのブロック内のメモリセルは、“E”レベルセルになっている。この消去動作によって、ラッチ回路20内のデータラッチ21,22は、“11”のデータを保持し、フラグラッチ23は“1”のデータを保持している。
ページバッファ5に転送されたデータが4値(2bit)のデータである場合、ラッチ回路20内の上位データラッチ(ULAT)21に、データの上位ビットが入力され、ラッチ回路20内の下位データラッチ(LLAT)22に、データの下位ビットが入力される。
ページバッファ5に転送されたデータが、2値(1bit)のデータである場合、ラッチ回路20の下位データラッチ(LLAT)22にデータが入力される。また、ラッチ回路20内のフラグラッチ(QLAT)23に、2値データの書き込みであることを示すフラグが、入力される。
外部からのデータは、データの書き込むメモリセルに対応するデータラッチ21,22に入力される。データを書き込む必要が無い、すなわち、消去状態(“E”レベル)のままのメモリセルに対応するデータラッチに、データは入力されず、それらのデータラッチ21,22は、“11”のデータを保持する。
そして、制御回路6は、アドレス信号が示すワード線(ページ)を選択し、その選択されたワード線(以下、選択ワード線とよぶ)をアクティブにする。制御回路6は、ラッチ回路20が保持しているデータを、センスアンプ回路10に転送する。センスアンプ回路10は、そのデータに応じて、ビット線BLの電位を調整する。
制御回路6は、ロウ/カラムデコーダ3,4及びページバッファ5の動作を制御して、QPWモードによって、そのページに属するメモリセルに、ラッチ21,22が保持するデータを、データ対応するしきい値レベル毎に、順次書き込む。データの書き込みは、“A”(“01”)、“B”(“00”)及び“C”(“10”)の順序で実行されてもよいし、これとは異なる順序でもよい。
データが所定のメモリセル(ページ)に書き込まれた後、ベリファイが実行される(ステップST2)。尚、ここでのベリファイは、1つのページに対するデータの書き込みが終了する度に実行されてもよいし、複数のページに対するデータの書き込みが終了した後、データを書き込んだページ毎に順次実行されてもよい。
このステップST2におけるベリファイは、“AVL”、“BVL”及び“CVL”レベル及び“AV”、“BV”及び“CV”レベルを判定基準として、実行される。但し、“AVH”、“BVH”及び“CVH”レベルを、ベリファイの判定レベルに用いてもよい。“AVL〜CVL”レベル及び“AVH〜CVH”レベルを用いて、ベリファイを行うことによって、しきい値分布の範囲を狭くでき、データの書き込みの精度を向上できる。
ベリファイ時、選択ワード線に“AVL〜CVL”レベル及び“AV〜CV”レベルがそれぞれ印加され、この電位の印加によって、選択ワード線に接続されたメモリセル(あるページに属するメモリセル)がオンするか否か、判別される。このオン/オフの結果としてのビット線の電位変動と各ラッチ回路が保持しているデータとが、制御回路6又はセンスアンプ回路10内の演算ユニット12によって比較され、ベリファイがパスかフェイルか判定される。
ベリファイ動作は、例えば、“A”レベル、“B”レベル及び“C”レベルの順番で実行される。
ここで、図5を用いて、“A”レベルにおけるベリファイについて、説明する。図5は、本実施形態のフラッシュメモリのベリファイを模式的に示す図である。
“A”レベルは“01”のデータに対応する。それゆえ、“A”レベルのデータを書き込むメモリセルに対応する上位/下位データラッチ(ULAT,LLAT)21,22は、“0”及び“1”のデータを、それぞれ保持する。
“A”レベルに対するベリファイにおいて、はじめに、“AVL”レベルにおけるベリファイが実行される(ステップST2−A1)。“AVL”レベルでのベリファイ結果は、上位/下位データラッチ21,22が“A”レベル(“01”のデータ)を示しているラッチ回路20に、転送される。このベリファイ結果の判定及び転送は、例えば、制御回路5及びセンスアンプ回路10内の演算ユニット12によって、実行される。
あるメモリセルに対する“AVL”レベルを用いたベリファイ結果がパスである場合(メモリセルがオフである場合)、パスしたメモリセルに対応し、且つ、データラッチ(ULAT,LLAT)22,23が保持しているデータが“01”であるラッチ回路20に対して、例えば、“1”が転送される。あるメモリセルに対する“AVL”レベルを用いたベリファイ結果がフェイルである場合(メモリセルがオンである場合)、フェイルしたメモリセルに対応し、且つ、データラッチ(ULAT,LLAT)が保持するデータが“01”のラッチ回路20に対して、例えば、“0”が転送される。
そして、ラッチ回路20内のフラグラッチ(QLAT)23が保持しているデータは、フラグ情報から“AVL”レベルにおけるベリファイ結果に書き換えられる(ステップST2−A2)。データの書き込み後、ベリファイ中において、フラグラッチ23の保持するデータは必要ないので、フラグのデータが書き換えられることに問題は無い。
つまり、“AVL”レベルにおけるベリファイの結果がパス(書き込み成功)であった場合、“A”レベルセルに対応するフラグラッチ23が保持するデータは、“1”に書き換えられる。一方、“AVL”レベルにおけるベリファイの結果がフェイル(書き込み失敗又は未完了)であった場合、フラグラッチ23が保持するデータは、“0”に書き換えられる。例えば、上位/下位データラッチ21,22のデータは書き換えられずに、“A”レベルのデータ(“01”)を保持したままにされる。
次に、“A”レベルのベリファイにおいて、“AV”レベルにおけるベリファイが実行される(ステップST2−A3)。ここで、“AV”レベルのベリファイは、“AVL”レベルのベリファイをパス(QLAT=“1”)したメモリセルのみに、実行してもよいし、パスしたメモリセルとパスしなかったメモリセルの両方に対して、実行してもよい。例えば、“AV”レベルのベリファイを実行するか否かは、制御回路5又は演算ユニット12がフラグラッチの保持するデータを参照して、選択される。
“AV”レベルにおけるベリファイの結果がパスである場合、パスしたメモリセルに対応し、データラッチ(ULAT,LLAT)21,22が保持するデータが“01”のラッチ回路20に対して、例えば、“110”の判定情報(ここでは、パス情報)が転送され、ラッチ回路内の各ラッチに、判定情報が書き込まれる(ステップST2−A4)。それゆえ、“A”レベルのデータを書き込んだメモリセルに対応するラッチ回路20において、例えば、上位データラッチ21のデータは“1”に書き換えられ、下位データラッチ22のデータは“1”に書き換えられ、フラグラッチ23のデータは“0”に書き換えられる。
“AV”レベルにおけるベリファイの結果がフェイルである場合、ベリファイの判定結果はラッチ回路20に転送されず、データラッチ(ULAT,LLAT)21,23及びフラグラッチ23がそれぞれ保持しているデータが、その状態のまま維持される。
以上のように、“A”レベルに対するベリファイ動作において、ベリファイの結果がパスであるメモリセル(以下、パス・セルとよぶ)に対応するラッチ回路は、“110”を保持する。一方、“A”レベルに対するベリファイ動作において、ベリファイの結果がフェイルであるメモリセル(以下、フェイル・セル)に対応するラッチ回路は、“010”又は“011”のデータを保持する。尚、フェイル・セルに対して、データの書き込みが再度実行される場合もあるので、データラッチ21,22のデータは、変更されないことが好ましい。
“A”レベルに対するベリファイ動作の後、“B”レベルに対するベリファイ動作が実行される。
ここで、図6を用いて、“B”レベルに対するベリファイ動作について、説明する。図6は、本実施形態のフラッシュメモリの“B”レベルに対するベリファイを模式的に示す図である。尚、“A”レベルに対するベリファイと実質的に同じ動作については、必要に応じて、説明する。
“B”レベルは“00”のデータに対応する。それゆえ、“B”レベルのデータを書き込むメモリセルに対応する上位/下位データラッチ(ULAT,LLAT)21,22は、“0”及び“0”のデータを、それぞれ保持する。
図6に示されるように、“B”レベルに対するベリファイにおいて、はじめに“BVL”レベルにおけるベリファイが実行される(ステップST2−B1)。“BVL”レベルでのベリファイ結果は、上位/下位データラッチ21,22が“B”レベルを示しているラッチ回路20に、転送される。
あるメモリセルに対する“BVL”レベルのベリファイ結果がパスである場合、パスしたメモリセルに対応し、データラッチ22,23が“00”のデータを保持しているラッチ回路20に対して、例えば、“1”が転送される。あるメモリセルに対する“BVL”レベルを用いたベリファイ結果がフェイルである場合、フェイルしたメモリセルに対応し、且つ、データラッチが保持しているデータが“00”であるラッチ回路20に対して、例えば、“0”が転送される。
そして、ラッチ回路20内にフラグラッチ(QLAT)23のデータは、フラグから“BVL”レベルにおけるベリファイ結果に書き換えられる(ステップST2−B2)。
“BVL”レベルにおけるパス・セルに対応するフラグラッチ23のデータが、“1”に書き換えられる。一方、“BVL”レベルにおけるフェイル・セルに対応するフラグラッチ23のデータは、“0”に書き換えられる。例えば、データラッチ21,22のデータは書き換えられずに、“B”レベルのデータを保持したままにされる。“A”レベルにおけるベリファイと同様に、“B”レベルにおけるベリファイにおいても、フラグラッチの初期データは不要なので、データが書き換わることに問題ない。
“BVL”レベルのベリファイの後、“BV”レベルにおけるベリファイが実行される(ステップST2−B3)。
“BV”レベルにおけるベリファイの結果がパスである場合、パスしたメモリセルに対応し、且つ、データラッチ(ULAT,LLAT)21,22が保持するデータが“00”のラッチ回路20に対して、例えば、“111”が転送される。それゆえ、“B”レベルセルに対応するラッチ回路20において、例えば、上位データラッチ21のデータは“1”に書き換えられ、下位データラッチ22のデータは“1”に書き換えられ、フラグラッチ23のデータは“1”に書き換えられる。
“BV”レベルにおけるベリファイの結果がフェイルである場合、ベリファイの判定結果はラッチ回路20に転送されず、データラッチ(ULAT,LLAT)21,23及びフラグラッチ23がそれぞれ保持しているデータが、その状態のまま維持される。
以上のように、“B”レベルに対するベリファイ動作において、パス・セルに対応するラッチ回路は、“111”を保持する。一方、“B”レベルに対するベリファイ動作において、フェイル・セルに対応するラッチ回路20は、“000”又は“001”のデータを保持する。
図3に示されるように、“A”レベルと“B”レベルとは互いに隣り合うしきい値レベル(しきい値分布)である。このような互いに隣り合うしきい値レベルにおいて、図4乃至図6に示されるように、“A”レベルの判定情報(“110”)は、“B”レベルの判定情報(“111”)と異なって、設定される。
“B”レベルにおけるベリファイ動作の後、“C”レベルにおけるベリファイ動作が実行される。
“C”レベルにおけるベリファイ動作は、ベリファイ動作のパス/フェイルを判定するためのしきい値レベルが異なるのみで、実質的な動作は、“A”レベルにおけるベリファイ動作(図5参照)と同じである。
“C”レベルは“10”のデータに対応する。それゆえ、“C”レベルのデータを書き込むメモリセルに対応する上位/下位データラッチ(ULAT,LLAT)21,22は、“1”及び“0”のデータを、それぞれ保持する。
“C”レベルに対するベリファイにおいて、はじめに、電位レベル“CVL”におけるベリファイが実行される。“CVL”レベルでのベリファイ結果は、上位/下位データラッチ21,22が“C”レベルを示しているラッチ回路20に、転送される。
あるメモリセルに対する“CVL”レベルを用いたベリファイ結果がパスである場合、パスしたメモリセルに対応し、且つ、データラッチ22,23が保持しているデータが“10”であるラッチ回路20に対して、例えば、“1”が転送される。あるメモリセルに対する“CVL”レベルを用いたベリファイ結果がフェイルである場合、フェイルしたメモリセルに対応し、且つ、データラッチが保持しているデータが“10”であるラッチ回路20に対して、例えば、“0”が転送される。そして、ラッチ回路20内にフラグラッチ(QLAT)23が保持しているデータは、“CVL”レベルにおけるベリファイ結果に書き換えられる。
つまり、“CVL”レベルにおけるパス・セルに対応するフラグラッチ23のデータが、“1”に書き換えられる。一方、“CVL”レベルにおけるフェイル・セルに対応するフラグラッチ23のデータは、“0”に書き換えられる。例えば、データラッチ21,22のデータは書き換えられずに、“C”レベルのデータ(“10”)を保持したままにされる。
それゆえ、“CVL”レベルを用いたベリファイ動作において、パス・セルに対応するラッチ回路20は、“101”のデータを保持し、フェイル・セルに対応するラッチ回路20は、“100”のデータを保持する。
“CVL”レベルにおけるベリファイ動作の後、“CV”レベルにおけるベリファイ動作が実行される。
“CV”レベルにおけるベリファイの結果がパスである場合、データラッチ21,22が保持するデータが“10”のラッチ回路20に対して、例えば、“110”の判定情報が転送される。それゆえ、パスした“C”レベルセルに対応するラッチ回路20において、例えば、上位データラッチ21のデータは“1”に書き換えられ、下位データラッチ22のデータは“1”に書き換えられ、フラグラッチ23のデータは“1”に書き換えられる。
“CV”レベルにおけるベリファイの結果がフェイルである場合、ベリファイの結果はラッチ回路20に転送されず、データラッチ(ULAT,LLAT)21,23及びフラグラッチ23がそれぞれ保持しているデータが、その状態のまま維持される。
以上のように、“C”レベルに対するベリファイ動作において、パスの“C”レベルセルに対応するラッチ回路20は、“111”を保持する。一方、“C”レベルに対するベリファイ動作において、フェイルの“C”レベルセルに対応するラッチ回路20は、“100”又は“011”のデータを保持する。
したがって、本実施形態のフラッシュメモリにおいて、“C”レベルにおけるベリファイ(“CVL”―“CV”レベルを用いたベリファイ)をパスした“C”レベルセルのパス情報は、“A”レベルにおけるベリファイ(“AVL”―“AV”レベルを用いたベリファイ)をパスした“A”レベルのパス情報と同じになる。
また、本実施形態のフラッシュメモリにおいて、データの書き込み時、データラッチが“11”のデータを保持している場合、そのデータラッチに対応するメモリセルは、データを書き込まない。それゆえ、データの書き込みが開始されたときに、データラッチ21,22のデータが“11”であれば、そのラッチ回路20に対応するメモリセルは、“E”レベルセルとして、データの書き込みが実行されない。また、“E”レベルにおけるベリファイも実行されない。また、フラグラッチ23も、“1”のデータを保持している。
このように、データを書き込まない(初期状態のままの)“E”レベルセルに対応するラッチ回路20は、“111”のデータを保持するように、設定される。つまり、“E”レベルセルに対応するラッチ回路20において、上位データラッチ21は“1”のデータを保持し、下位データラッチ22は“1”のデータを保持し、フラグラッチ23は“1”のデータを保持する。
このように、“E”レベルセルの判定情報は、“B”レベルセルの判定情報と同じになっている。上述のように、“C”及び“A”レベルセルの判定情報(フラグラッチ23の情報)は、“B”及び“E”レベルセルの判定情報と異なっている。本実施形態において、4値のデータを記憶するメモリセルのパス情報において、4種類のしきい値電圧を取りうるメモリセルを、1ビット(“0”又は“1”)のデータで表現される。
ここで、フェイルであったメモリセルのしきい値が書き込むべきデータのしきい値レベルになるように、再びデータを書き込んでもよい。但し、パス・セルにデータが書き込まれないように、ビット線及びチャネルの電位を調整することが必要である。
所定の回数のベリファイが実行された後、各カラムにおいて、上位データラッチ21の保持する情報と下位データラッチ22の保持する情報とが、例えば、制御回路6又は演算ユニット12によって、演算処理される(ステップST3)。この演算処理は、例えば、“and”演算である。
パス・セルに対応するデータラッチの場合、上位/下位データラッチの情報は“11”なので、“and”演算の結果は、“1”になる。フェイル・セルに対応するデータラッチの場合、上位又は下位データラッチの少なくとも一方が“0”の情報を保持するので、“and”演算の結果は、“0”になる。この演算結果が、例えば、下位データラッチ(LLAT)22に書き込まれる。データラッチの保持する情報は、書き込みがパスかフェイルかを示すデータなので、“and”演算の後、データラッチのデータが書き換えられても問題ない。
尚、“and”演算が実行されて、データラッチの保持する情報が書き換えられても、フラッグラッチ23の保持する情報は、外部からのデータに対応するメモリセルのしきい値レベルを示す情報なので、変更されない。それゆえ、書き込みがパスした“C”及び“A”レベルセルに対応するフラグラッチ23は、“0”の情報を保持している。また、書き込みがパスした“B”及び“E”レベルに対応するフラグラッチ23は、“1”の情報を保持している。このように、隣り合わないしきい値レベルに対して同じ判定情報が割り付けられ、且つ、隣り合うしきい値レベルに対して異なる判定情報が割り付けられている。各メモリセルに対応するラッチ回路が、その判定情報を保持している。
したがって、書き込みがパスした“C”及び“A”レベルセルに対応する下位/フラグラッチ(LLAT,QLAT)22,23が保持する情報は、“10”になっている。書き込みがパスした“B”及び“E”レベルセルに対応する下位/フラグラッチ(LLAT,QLAT)22,23が保持する情報は、“11”になっている。
互いに隣り合わないしきい値レベルに共通な判定情報は、データの書き込み結果に対応し、例えば、データの書き込みがパスであるかフェイルであるかを示す情報と、データの書き込みがパスした時点でのメモリセルが記憶しているデータを示す情報とを含んでいる。
各ベリファイレベルにおける判定情報がラッチ回路20に書き込まれた後、制御回路6は、データの書き込みの不良ビット数Npが、不良に対する許容ビット数N1を満たすか否か判定する(ステップST4)。許容ビット数N1は、1ページあたりの許容ビット数でもよいし、1ブロックあたりの許容ビット数でもよいし、各しきい値レベル(各データ)あたりの許容ビット数でもよい。
本実施形態において、上位データラッチ(ULAT)及び下位データラッチ(LLAT)の保持する情報(ULAT,LLAT)が、“11”である場合、そのラッチに対応するメモリセルは、ベリファイパス(書き込みパス)である。そして、ステップST3において、上位データラッチの値と下位データラッチの値とが、“and”演算され、その演算結果は、下位データラッチ22に書き込まれる。つまり、下位データラッチ22が保持する情報が“0”になっていると、そのラッチに対応するメモリセルは、不良ビットである。
それゆえ、本実施形態のフラッシュメモリ1は、“0”のデータを保持している下位データラッチ(LLAT)21の個数をカウントすることで、不良ビット数Npを簡便に検知できる。
不良ビット数Npが、許容ビット数N1より大きい場合(Np>N1の場合)、データの書き込みはフェイルであると判定される。この場合、例えば、同一のブロックに対して、ステップST1からステップST4の動作によって、データの書き込みが再度実行される。尚、ステップST1からステップST4の動作が所定の回数繰り返されても、不良ビット数Npが許容ビット数N1以下にならない場合、例えば、データを書き込むブロックを、他のブロックに変更して、データの書き込みを実行してもよい。
不良ビット数Npが許容ビット数N1以下である場合(Np≦N1の場合)、データの書き込みがパスであると判定され、選択ページ又は選択ブロックに対するデータの書き込みが終了する。
例えば、ステップST4で得られた不良ビット数Npは、1回の書き込みシーケンスが完了するまで、制御回路6が保持していてもよい。
不良ビット数が許容値を満たしていた場合、ベリファイ読み出しが実行される(ステップST5)。
例えば、ステップST5において、ベリファイ読み出しのチェック対象となるメモリセルは、上記のステップST2において、書き込みがパスしたメモリセルである。つまり、ステップST3において、“1”(パス情報)を保持する下位データラッチ22に対応したメモリセルに対して、ベリファイ読み出しが実行される。ステップST5において、“0”(フェイル情報)を保持する下位データラッチ22に対応したメモリセルに対して、ベリファイ読み出しは実行されない。これによって、全てのメモリセルにベリファイ読み出しを実行する場合に比較して、ベリファイ読み出しが高速に実行され、消費電力も低減される。
本実施形態において、ベリファイ読み出しは、“C”レベル、“B”レベル及び“A”レベルの順序で実行される。但し、この順序に限定されず、例えば、“A”レベル、“B”レベル及び“C”レベルの順序で、ベリファイ読み出しが実行されてもよい。
ベリファイ読み出しの判定レベルとして、例えば、読み出しレベルCR,BR,ARが用いられ、“C”、“B”及び“A”読み出しが実行される。但し、各しきい値分布の高電位端及び低電位端などのように、狭い範囲におけるベリファイを行って、データの書き込みの精度及び信頼性の向上を図るために、ステップST5において、“CBH”−“CV”レベル、“BVH”−“BV”レベル及び、“AVH”−“AV”レベルでベリファイを行ってもよい。ステップST5において、ベリファイ読み出しの判定レベルとして、“CVL”、“BVL”及び“AVL”レベルを用いてもよいのは、もちろんである。
本実施形態のフラッシュメモリのベリファイ読み出しに関して、図7を用いて、説明する。図7は、本実施形態のフラッシュメモリのベリファイ読み出しの動作を、模式的に示している。
図7の(a)は、“C”レベルにおけるベリファイ読み出しを示している。
“C”レベルのベリファイ読み出しにおいて、“CR”レベルが判定レベルとして用いられ、“C”読み出しが実行される。
“CR”レベルの電位が選択されたワード線WLに印加された場合に、そのワード線に接続されたメモリセルがオンするか否か(ビット線の電位が変動するか否か)によって、それらのメモリセルMCが、“C”レベルセルかそれ以外のメモリセルか判別される。
“C”レベルのメモリセルMCのしきい値電位は、“CR”レベルの電位より高いので、“CR”レベルの電位がワード線に印加されても、“C”レベルセルは、オフしている。
一方、“B”レベルセル、“A”レベルセル、及び“E”レベルセルのしきい値電位は、“CR”レベルの電位より低いので、オンする。このように、ある判定レベル(ワード線の電位)によって、メモリセルがオン又はオフしたかを判別される。
本実施形態のフラッシュメモリのベリファイ読み出しにおいて、あるベリファイ対象のメモリセルのしきい値分布(ここでは、“C”レベル)の下端以下の判定レベル(ここでは、“CR”レベル)が用いられた場合、オフしたメモリセルに対して“1”の情報が割り付けられ、オンしたメモリセルに対して“0”の情報が割り付けられる。
そして、オフしたメモリセルMCに対応するラッチ回路20に、“1”が転送され、その上位データラッチ(ULAT)21に、“1”が書き込まれる。“C”読み出しでオンしないメモリセルは、“C”レベルセル。一方、オンしたメモリセルMCに対応するラッチ回路20に、“0”が転送され、上位データラッチ21に、“0”が書き込まれる。“C”読み出しでオンするメモリセルは、“B”、“A”及び“E”レベルセルである。
データの書き込み及び許容値の判定後なので、上位データラッチが保持しているデータを、ベリファイ読み出しの結果に書き換えることに問題ない。
ここで、ステップST1〜ST3において、“C”レベルセルと判定されたメモリセルに対応するフラグラッチ23は、“0”の情報を保持し、“B”及び“E”レベルセルと判定されたメモリセルに対応するフラグラッチ23は、“1”の情報を保持する。また、“A”レベルセル判定されたメモリセルも、“C”レベルセルと同様に、メモリセルに対応するフラグラッチ23が“0”の情報を保持している。
“C”レベルにおけるベリファイ読み出しの結果(上位データラッチULATが保持する情報)とフラグラッチ(QLAT)23が保持する情報とが、比較される。
(ULAT,QLAT)の情報が(0,0)の場合、上位データラッチ(ULAT)の情報(“0”)は、“B”、“A”又は“E”レベルセルを示し、フラグラッチ(QLAT)の情報(“0”)は、“C”又は“A”レベルセルを示す。それゆえ、(ULAT,QLAT)=(0,0)のラッチに対応するメモリセルは、“A”レベルセルの可能性があるため、制御回路6(又は演算ユニット12)は、データの書き込み(ベリファイ読み出し)がパスであると判定する。
(ULAT,QLAT)の情報が(0,1)の場合、上位データラッチ(ULAT)の情報(“0”)は、“B”、“A”又は“E”レベルセルを示し、フラグラッチの情報(“1”)は、“B”又は“E”レベルセルを示す。それゆえ、(ULAT,QLAT)=(0,1)のラッチに対応するメモリセルは、“B”又は“E”レベルセルの可能性があるので、制御回路6は、ベリファイがパスと判定する。
(ULAT,QLAT)の情報が(1,0)の場合、上位データラッチ(ULAT)の情報(“1”)は、“C”レベルセルを示し、フラグラッチの情報(“0”)は、“A”又は“C”レベルセルを示す。それゆえ、(ULAT,QLAT)=(1,0)のラッチに対応するメモリセルは、“C”レベルセルであるため、制御回路6は、パスと判定する。
(ULAT,QLAT)の情報が(1,1)の場合、上位データラッチ(ULAT)の情報(“1”)は、“C”レベルセルを示し、フラグラッチの情報(“1”)は、“B”又は“E”レベルセルを示す。この場合、ベリファイ読み出しの結果と書き込まれたデータとが一致していない。それゆえ、(ULAT,QLAT)=(1,1)のラッチに対応するメモリセルは、データの書き込みがフェイルであると、制御回路6又は演算ユニット12が判定する。
例えば、“1”を示すフェイル情報が、書き込みがフェイルと判定されたメモリセルに対応するラッチ回路20に転送され、そのフェイル情報がラッチ回路20内の下位データラッチ(LLAT)22に書き込まれる。尚、ここでのパス情報は“0”を示す。
ベリファイ読み出しにおけるフェイル情報は、例えば、制御回路6又は演算ユニット12が、(ULAT,QLAT)のデータを演算(比較)することによって、得られる。
フラグラッチ23のデータは、ステップST2及びST3のフローにおいて、書き込みがパスしたメモリセルの記憶するデータに対応している。
このように、ページバッファ内のラッチがベリファイの判定結果を一時的に保持し、ベリファイ読み出しの結果を、データの書き込みがパスしたメモリセルが記憶すべきデータと、比較することによって、書き込みがパスと判定された後に、メモリセルのしきい値が変動する不良を検知できる。
“C”レベルにおけるベリファイ読み出しの後、“B”レベルにおけるベリファイ読み出しが実行される。
図7の(b)は、“B”レベルにおけるベリファイ読み出しを示している。
本実施形態のフラッシュメモリの動作において、“B”レベルにおけるベリファイ読み出しは、“B”読み出しと“C”読み出しとによって、実行される。
“B”レベルにおけるベリファイ読み出しにおいて、まず、“C”読み出しが実行される。これによって、“C”レベルセル(オフのメモリセル)に対応する上位データラッチ(ULAT)21に、“0”が転送され、“B”レベルセル(オンしたメモリセル)に対応する上位データラッチ21に、“1”が転送される。ここで、メモリセルのオンが“0”で示され、メモリセルのオフが“1”で示される場合、“C”読み出しにおける読み出し結果は、それらが“not”演算された(反転された)値に相当する。このように、本実施形態のフラッシュメモリのベリファイ読み出しにおいて、ベリファイ対象のメモリセルのしきい値分布(ここでは、“B”レベル)の上端以上の判定レベル(ここでは、“CR”レベル)が用いられた場合、オフしたメモリセルに対して、その結果(“1”)を反転させた(“not”演算した)情報(“0”)が割り付けられ、オンしたメモリセルに対して、その結果(“0”)を反転させた情報(“1”)が割り付けられる。そして、それらのメモリセルに対応する上位データラッチに、判定結果が書き込まれる。
“B”レベルのベリファイ読み出しにおいて、“C”読み出しの後、“B”読み出しが実行される。“B”読み出しで、オフのメモリセルは、“B”及び“C”レベルセルであり、オンしたメモリセルは、“A”及び“E”レベルセルである。オフのメモリセル(“B”レベルセル)には、“1”が割り付けられ、オンのメモリセル(“A”レベルセル)には、“0”が割り付けられる。制御回路5又は演算ユニット12は、“B”読み出しの結果と上位データラッチ21が保持する“C”読み出しの結果とを、演算処理(例えば、“and”演算)する。この演算結果が“1”であるメモリセルが、“B”レベルセルであると、判定される。演算結果が“0”であるメモリセルは、“B”レベルセル以外である。これらの演算結果は、例えば、上位データラッチ21にそれぞれ書き込まれる。
“C”及び“B”読み出しの演算結果が、フラグラッチ(QLAT)23の保持する情報と比較される。上記のように、フラグラッチ23の情報が、“1”であると、そのラッチ23に対応するメモリセルは“B”又は“E”レベルセルであり、“0”であると、そのラッチに対応するメモリセルは、“C”又は“A”レベルセルである。
“C”及び“B”読み出しの演算結果が“0”であった場合、その結果に対応するメモリセルは、“C”、“A”及び“E”レベルであるため、フラグラッチ23の情報が“0”であっても、“1”であっても、パスと判定される。
“C”及び“B”読み出しの演算結果が“1”であった場合、その結果は、“B”レベルセルのみに対応する。フラグラッチ23の保持する情報が“1”である場合、データの書き込み時の判定結果とベリファイ読み出し時の判定結果が一致し、これとは反対に、フラグラッチ23の保持する情報が“0”である場合、2つの判定結果が矛盾する。それゆえ、(ULAT,QLAT)の情報が(1,1)の場合、データの書き込み(ベリファイ)がパスと判定される。一方、(ULAT,QLAT)の情報が(1,0)の場合、データの書き込みがフェイルと判定される。これらの判定結果に基づいて、フェイル情報が、ラッチ回路20に転送され、“1”のデータが下位データラッチ(LLAT)22に書き込まれる。
“C”及び“B”レベルのベリファイ読み出しと実質的に同様に、“A”レベル及び“E”レベルのベリファイ読み出しが実行される。
“A”レベルのベリファイ読み出しは、“B”レベルのベリファイ読み出しと同様に、2つの読み出しレベルを用いて、実行される。すなわち、“A”レベルのベリファイ読み出しにおいて、
“B”読み出しと“A”読み出しが実行される。そして、それらの読み出しの演算結果とフラグラッチ(QLAT)23の保持する情報とが比較され、メモリセルが所定のデータ(ここでは、“01”)を記憶しているか否かが検証される。その結果がフェイルであった場合、つまり、(ULAT,QLAT)の情報が(1,1)であった場合、フェイル情報(“0”)がそのメモリセルに対応する下位データラッチに書き込まれる。これ以外の場合は、データの書き込み(ベリファイ)がパスである。
“E”レベルのベリファイ読み出しは、“A”読み出しによって、実行される。ここで、“AR”レベルにおいて、オンしたメモリセルが“E”レベルセルであり、オフのメモリセルは“C”、“B”及び“A”レベルセルである。オンしたメモリセルに対応する上位データラッチ21に対して、“1”が書き込まれ、オンしなかったメモリセルに対応する上位データラッチ21に対して、“0”が書き込まれる。そして、上位データラッチ21が保持する“A”読み出しの結果とフラグラッチ23が保持する判定情報とが比較され、メモリセルが所定のデータ(ここでは、“11”)を記憶しているか否か検証される。その結果がフェイルであった場合、つまり、(ULAT,QLAT)の情報が(1,0)であった場合、フェイル情報(“0”)がそのメモリセルに対応する下位データラッチに書き込まれる。
以上のように、各しきい値レベルに対するベリファイ読み出しが実行され、書き込みの結果(QLATの保持する情報)とベリファイ読み出し結果とが一致しない場合に、フェイル情報が、ラッチ回路20内のデータラッチに書き込まれる。
各レベルにおけるベリファイ読み出しの結果に基づいて、不良ビット数Nxが不良に対する許容ビット数N2以下か否か判定される(ステップST6)。
ステップST6における不良ビット数Nxは、例えば、ステップST4における書き込み時の不良ビット数Npとベリファイ読み出しによって検出された不良ビット数Nrの合計値である。ステップST6における許容ビット数N2の大きさは、ステップST4における許容ビット数N1の大きさと異なっていてもよいし、同じでもよい。
例えば、不良ビット数Nxは、フェイル情報を示す“0”データを保持する下位データラッチ21の個数をカウントすることによって、得られる。
不良ビット数Nxが許容ビット数N2より大きい場合(Nx>N2の場合)、書き込みがフェイルと判定される(ステップST8)。この場合、例えば、データを書き込むブロックが変更され、他のブロックの所定のページに、同じデータがステップST1〜ST4と同様の動作によって書き込まれる。データの書き込みがフェイルであったブロックは、他の書き込みシーケンスで用いられてもよいし、バッドブロックとして処理されてもよい。
不良ビット数Nxが不良許容ビット数N2以下であった場合(Nx≦N2の場合)、データの書き込みがパスと判定される(ステップST7)。これによって、選択されたページ又はブロックに対する書き込みシーケンスは、終了する。
図4に示されるステップST1〜ST8の動作によって、本実施形態におけるフラッシュメモリ(例えば、多値NAND型フラッシュメモリ)の書き込み動作及びそのベリファイ動作が完了する。
尚、上述の例において、ステップST4及びステップST6における不良に対する許容ビット数N1,N2は、全てのしきい値レベルにおける総許容ビット数として、設定されている場合について、述べている。しかし、各しきい値レベルに対して、許容ビット数を設定してもよい。この場合、総不良ビット数Npが総許容ビット数N1以下であっても、あるしきい値レベルの不良ビット数が、そのしきい値レベルに対して設定された許容ビット数より大きければ、書き込みフェイルと判定される。
このように、しきい値レベル毎に許容ビット数が設定されることによって、例えば、“A”レベルに対する許容ビット数N1A及び“B”レベルに対する不良許容ビット数N1Bが小さくされた場合、“A”レベルセルや“B”レベルセルに対して、信頼性の高い書き込みを実行できる。これに伴って、“C”レベルに対する不良許容ビット数N1Cは大きくでき、“C”レベルに対する書き込みは、書き込みの信頼性よりも書き込みの速度を優先できる。各しきい値レベルに対して異なる不良許容ビット数を設定することによって、“A”及び“B”レベルに対する書き込みの精度を向上でき、それと同時に、“C”レベルに対する書き込みの高速化を実現できる。
また、ステップST6の許容ビット数N2において、隣り合わない2以上のしきい値レベルのグループ毎に、許容ビット数が設定されてもよい。例えば、“C”及び“A”レベルのグループに対して、不良に対する許容ビット数N2ACが設定され、“B”及び“E”レベルのグループに対して、不良に対する許容ビット数N2BEが設定される。これによって、多値フラッシュメモリの書き込み精度が向上する。
以上のように、本実施形態のフラッシュメモリにおいて、隣り合わないしきい値レベルに対して、共通の判定情報が割り付けられる。そして、互いに隣り合うしきい値レベルに対して、異なる判定情報が設定されている。
また、同じ判定情報が割り付けられたメモリセル(例えば、“C”及び“A”レベルセル)において、上位/下位データラッチ21,22が保持する情報は、パス/フェイルのビット(メモリセル)を示す。それゆえ、図4のステップST2及びステップST3において、データラッチ及びフラグラッチの値を参照することによって、しきい値レベル毎の不良ビット数をそれぞれカウントできる。
ページバッファ内のラッチに保持されたこれらの値を、ベリファイ読み出しの結果と対応させて、本実施形態のフラッシュメモリ1は、データの書き込みの成否(パス/フェイル)を判定する。
これによって、セル間干渉、書き込み不良又は読み出しディスターブに起因して、あるメモリセルのしきい値レベルが隣接するしきい値レベルに遷移する不良を、検出できる。これによって、フラッシュメモリの信頼性が、向上する。
また、本実施形態のフラッシュメモリにおいて、判定情報を保持させるために、既存のラッチを用い、それらのラッチが保持する情報(データ/フラグ)を、ベリファイの判定結果に順次書き換える。そのため、本実施形態のフラッシュメモリは、隣り合わないしきい値レベルに割り付けた判定情報を保持するための専用のラッチを、新たな構成に追加する必要が無い。
したがって、本実施形態のフラッシュメモリ及びその動作によれば、回路規模を増大させずに、動作の信頼性の高いメモリを提供できる。
本実施形態のフラッシュメモリは、その動作がデータの書き込みからベリファイへ動作が移行するに伴って、ページバッファのラッチ回路20に設けられたデータラッチ21,22及びフラグラッチ23の保持する情報を書き換えて、データの書き込みの成否を判定する。このように、本実施形態のフラッシュメモリは、外部のコントローラを用いずに、データの書き込みの成否(パス/フェイル)を判定できる。それゆえ、本実施形態のフラッシュメモリは、メモリチップ及び外部コントローラ間のデータの転送を実行せずに、外部からのデータとメモリセルに書き込まれたデータとが一致するか否か検証できる。
したがって、本実施形態のフラッシュメモリは、データ転送の劣化を抑制できる。
また、書き込み不良がベリファイによって検知できない場合を考慮すると、ECCを用いて、メモリの信頼性を確保する必要がある。この場合、フラッシュメモリ内のECC(回路の回路規模が増大してしまう。
これに対して、本実施形態のフラッシュメモリは、メモリセルのしきい値レベルがそのしきい値レベルに隣り合うしきい値レベルにシフトするのを検知でき。そのため、ベリファイによって検知できない不良を低減できる。それゆえ、本実施形態のフラッシュメモリは、ECC回路の回路規模の増大を抑制できる。
以上のように、本実施形態のフラッシュメモリによれば、回路構成の変更なしに、メモリの信頼性を向上できる。
(c) 変形例
図8を用いて、第1の実施形態に係るフラッシュメモリの変形例について、説明する。
図4乃至図7を用いて説明した例では、“C”書き込み時、“CVL”レベルでのベリファイを行って、“C”レベルセルに対するベリファイを実行している。しかし、フラッシュメモリにおいて、“C”書き込みに対するフラグが入力されず、“CVL”レベルでのベリファイが実行されない場合もある。この場合のように、“C”書き込み時にベリファイを実行しない場合についても、図4乃至7を用いて説明したフラッシュメモリと同様に、ラッチの個数の増大や外部コントローラの使用なしに、信頼性の高い動作を実行できる。
図8は、各しきい値レベルとそれに対応する判定情報の一例を示している。
例えば、選択セルに対する“A”書き込み時、その書き込みがパスしたメモリセルに対応するラッチ回路20に対して、判定情報が転送される。
そして、図8に示されるように、“A”レベルセルに対応するラッチ回路のデータラッチ(ULAT,LLAT)及びフラグラッチ(QLAT)に、(ULAT,LLAT,QLAT)=(1,1,0)の判定情報が、それぞれ書き込まれる。
また、選択セルに対する“B”書き込み時、その書き込みがパスしたメモリセルに対応するデータラッチ及びフラグラッチに、(ULAT,LLAT,QLAT)=(1,0,1)の判定情報が、それぞれ書き込まれる。
さらに、選択セルに対する“C”書き込み時、その書き込みがパスしたメモリセルに対応するラッチ回路20のデータラッチ及びフラグラッチに、(ULAT,LLAT,QLAT)=(1,1,1)の判定情報が、それぞれ書き込まれる。
これら以外の判定情報は、書き込みフェイルのメモリセルを示す。
データの書き込みが終了した後、ベリファイ読み出しが実行される前に、下位データラッチ(LLAT)が保持する情報及びフラグラッチ(QLAT)が保持する情報が、それぞれ変換される。
例えば、図8に示されるように、“A”レベルを記憶すべきメモリセルに対応する2つのラッチ(LLAT,QLAT)が保持する情報は、(0,1)に変換される。“B”レベルを記憶すべきメモリセルに対応する2つのラッチ(LLAT,QLAT)が保持する情報は、(1,0)に変換される。また、“C”及び“E”レベルを記憶すべきメモリセルに対応する2つのラッチ(LLAT、QLAT)が保持する情報は、(1,1)に変換される。
さらに、書き込みフェイルであったメモリセルに対応する2つのラッチ(LLAT,QLAT)が保持する情報は、(0,0)に変換される。判定情報が変換されるとき、上位データラッチ(ULAT)の保持する情報は、“0”又は“1”のいずれの状態でもよい。
判定情報が変換された後、図4のステップST4からステップST8の動作が実行される。これらの書き込み結果とベリファイ読み出しの結果とを比較し、一致しない場合に、2つのラッチ(LLAT,QLAT)が保持する情報を、(0,0)に書き換える。これによって、検出された書き込み不良の総数をカウントできる。
図8に示されるように判定情報を割り付けた場合においても、図4乃至図7に示される例と同様に、隣り合わないしきい値レベルに対して共通の判定情報が割り付けられ、所定のデータが書き込まれなかったメモリセルを検出できる。
図4乃至図7に示される例について、4値(2ビット)の多値フラッシュメモリを用いて説明したが、3ビット以上のデータを扱う多値フラッシュメモリに対しても、図4乃至7に示される動作と実質的に同じ動作を実行できる。
例えば、8値メモリにおいて、“C”〜“A”レベル及び消去レベル(ここでは、“Er”レベルとよぶ)に加え、“D”、“E”、“F”及び“G”レベルが、メモリセルのしきい値レベル(しきい値分布)として、記憶すべきデータ(“000”〜“111”)に対応して設定される。
8値のフラッシュメモリの場合、3つのデータラッチ(ULAT,MLAT,LLAT)と1つのフラグラッチ(QLAT)とが、ページバッファ5のラッチ回路20内に、設けられる。
例えば、“Er”(消去)レベルに対するフラグ(QPW情報)が無いとすれば、“Er”、“B”、“D”及び“F”レベルセルに同じ判定情報を割り付け、“A”、“C”、“E”及び“G”レベルセルに同じ判定情報を割り付けることによって、データの書き込み後においても、それらの判定情報をラッチ回路内に保持できる。
これによって、上述の例と同様に、データの書き込みの不良を検出できる。
また、図8に示される例と同様に、8値のデータを記憶するメモリセルにおいて、最上位のしきい値レベルに対して、QPWモードによるベリファイを実行しない場合、以下のように、判定情報を割り付けることによって、上述の例と同様に、信頼性の高いフラッシュメモリを実現できる。
例えば、“A”、“D”及び“G”レベルセルに対して、同じ判定情報が設定される。“A”、“D”及び“G”レベルセルに対する判定情報は、(ULAT,MLAT,LLAT,QLAT)=(0,1,1,0)に設定される。また、“B”及び“E”レベルセルに対して、同じ判定情報が設定される。“B”及び“E”レベルセルに対する判定情報は、(ULAT,MLAT,LLAT,QLAT)=(1,1,1,0)に設定される。“Er”、“C”及び“F”レベルに対して、同じ判定情報が設定される。“Er”、“C”及び“F”レベルセルに対する判定情報は、(ULAT,MLAT,LLAT,QLAT)=(1,1,1,1)に設定される。
そして、8値のメモリセルおいて、図8に示される4値のメモリセルと同様に、隣り合わない2以上のしきい値レベル(しきい値分布)を1つのグループとして3つ以上のグループを設定し、ラッチ回路内の複数のラッチのデータに対して変換処理を実行することによって、パス/フェイル情報がそれぞれ得られる。
このように、8値のフラッシュメモリに対して、メモリセルが記憶するデータを判定するための判定情報が、隣り合わないしきい値レベル毎に同じになるように設定される。隣り合うしきい値レベルは、判定情報が異なっている。
これらの判定情報は、上述のラッチの保持する情報(データ)の演算や書き込み後の変換によって、フェイル又はパスを示す情報に書き換えられる。
これによって、4値のフラッシュメモリと実質的に同様に、データの書き込み不良を検出できる。
8値のフラッシュメモリのように、1つのメモリセルに書き込まれるデータのビット数が大きくなれば、データに対応するしきい値分布の範囲が小さくなる。そのため、あるデータの対応するメモリセルのしきい値電位が、隣接する他のデータに対応するしきい値分布にシフトする可能性が高くなる。
それゆえ、1つのメモリセルが記憶するデータのビット数が増大するにしたがって、第1の実施形態のように、隣り合わないしきい値分布に対して記憶するデータを判定する情報を割り付けることによって、書き込み不良及び読み出しディスターブを検出することは、有効になる。
ここでは、4値(2ビット)以上のデータを記憶するメモリセルとして、8値のメモリセルを例示しているが、16値、32値のメモリセルなどにも、本実施形態が適用可能なのは、もちろんである。
以上のように、第1の実施形態の変形例に係るフラッシュメモリも、回路構成の変更なしに、フラッシュメモリの信頼性を向上できる。
(2) 第2の実施形態
図9を用いて、第2の実施形態に係るフラッシュメモリについて説明する。尚、本実施形態のフラッシュメモリの回路構成は、第1の実施形態のフラッシュメモリの構成(図1乃至図3参照)と同じであるため、ここでの説明は省略する。
図3に示されるように、データの読み出しに用いられる読み出し電位VREADの大きさは、データに対応する複数のしきい値レベル(しきい値分布)に対して、最上位のしきい値レベル(図3では、“C”レベル)以上の大きさに設定されている。
フラッシュメモリにおいて、メモリセルのしきい値電圧が所定のデータに対応するしきい値レベルからそのしきい値レベルに隣接する他のしきい値レベルへ遷移する不良のほかに、例えば、“C”レベルに書き込むべきメモリセルのしきい値が、読み出しコマンドに基づくデータの読み出し時に用いられる読み出し電位VREAD以上になる不良が存在する。
データの書き込み時において、メモリセルのしきい値が読み出し電位VREAD以上になると、セル間の相互干渉によって、そのセルと同じセルユニット内の全てのメモリセルが、“C”レベルのしきい値レベルに存在してしまう場合がある。
しきい値電位が読み出し電位VREAD以上のメモリセルにおいて、例えば、“A”レベルで書き込むべきメモリセルであるにもかかわらず、メモリセルのしきい値レベルが、“AV”レベルより大きい“C”レベル以上に存在するかのように判定されるため、実際には不良(フェイル)であっても、正常にデータが書き込まれた場合と同様の扱いになってしまう場合もある。
さらに、データの読み出し時、あるメモリセルのしきい値電位が読み出し電位VREAD以上になると、読み出し電位VREADがワード線に供給されてもオンしないメモリセルが、存在する。そのため、読み出し電位VREAD以上のしきい値レベルのメモリセルを含むメモリセルユニットにおいて、メモリセルユニット内のメモリセルが“C”レベル以外のデータを記憶していても、そのセルユニット内の全てのメモリセルが、“C”レベルセルと判定されてしまう場合がある。
これらの不良を抑制するために、第2の実施形態のフラッシュメモリは、ワード線に読み出し電位VREADを印加したベリファイ読み出しを実行する。読み出し電位VREADが印加された場合に、オンしないメモリセルは、そのしきい値電位が読み出し電位VREAD以上になっている。これによって、どのレベルのデータを書き込んだかを判別しなくとも、読み出し電位VREAD以上にしきい値電位のメモリセルを検出でき、そのセルを不良として判定できる。
例えば、書き込み不良のメモリセルの個数(ビット数)と読み出し電位VREAD以上のしきい値電位のメモリセルの個数との合計値が、所定の許容ビット数以下であれば、書き込みパスと判定される。
以下、図9を用いて、第2の実施形態のフラッシュメモリの動作について、説明する。
まず、第1の実施形態のフラッシュメモリにおける図4のステップST1と同様に、データラッチ21,22に、外部からのデータが転送され、例えば、QPWモードを用いたデータの書き込みが開始する(ステップST11)。
そして、データの書き込み時に、“AVL”、“AV”又は“AVH”などの判定レベルを用いたベリファイによって、データの書き込みがパスであると判定された場合、パス情報がラッチ回路20へ転送される。パス情報は、“11”のデータとして、外部からのデータを保持していた上位データラッチ(ULAT)21及び下位データラッチ(LLAT)22に、それぞれ1ビット(“1”)ずつ上書きされる(ステップST12)。
データの書き込みが終了した後、保持している情報がパス情報(“11”)以外の上位/下位データラッチ21,22において、その下位データラッチ22に“0”が書き込まれる(ステップST13)。“0”を保持する下位データラッチ22の個数が、不良ビット数Npに相当する。
この後、図4のステップST4と同様に、不良ビット数Npが、不良に対する許容ビット数N1以下であるかどうか検証される。Np>N1である場合、データの書き込みが再び実行され、ステップST11からステップST14の動作が繰り返される。
Np≦N1である場合、書き込みパスとして、データの書き込みが終了し、ベリファイ読み出しが実行される(ステップST15)。
ここで、本実施形態のフラッシュメモリにおけるベリファイ読み出しは、読み出しコマンドによるデータの読み出しに用いられる読み出し電位VREADが、ワード線WLに印加されることによって、実行される。例えば、選択ブロックの全てのワード線WLに対して、読み出し電位VREADが、順次印加されて、メモリセルのオン/オフが判定される。そして、オンしなかったメモリセルに対応する下位データラッチ(LLAT)に、“0”を示すフェイル情報が書き込まれる。書き込みパスしたメモリセルで、ベリファイ読み出しがパスしなかったメモリセルに対応する3つのラッチ(ULAT,LLAT,QLAT)の保持する情報は、(1,0,0)になっている。
これによって、読み出し電位VREAD以上のしきい値電位を有するメモリセルを、フェイル・セルとして、検知できる。
ここでは、読み出し電位VREADを用いて、ベリファイ読み出しを実行したが、例えば、4値のメモリセルにおける“C”レベルの“CVH”レベルのように、最上位のしきい値レベル(しきい値分布)の高電位端を、ベリファイ読み出しの判定レベルに用いてもよい。尚、データの書き込み状況に応じて、“BVH”レベルや“AVH”レベルなどのように、“CVH”レベルより小さい電位レベルを判定レベルに用いてもよい。また、読み出し電位VREADと最上位のしきい値レベル(しきい値分布)の高電位端(ここでは、“CVH”レベル)との間の電位を、ベリファイ読み出しの判定レベルに用いてもよい。これによって、多値フラッシュメモリにおいて、高精度なデータの書き込みを実行できる。
1回の書き込みシーケンスにおいて、データの書き込みが完了したワード線(ページ)には、“CVH”レベルが印加され、それ以外のワード線には、読み出し電位VREADが印加されて、ベリファイ読み出しが実行されてもよい。また、データの書き込みが完了したワード線とそれに隣接するワード線には、“CVH”レベルが印加され、それ以外のワード線には、読み出し電位VREADが印加されて、ベリファイ読み出しが実行されてもよい。
これらのように、データの書き込みが完了したワード線か否かによって、ベリファイ読み出しに用いるワード線への供給電位(判定電位)を変えることで、より精度の高いデータの書き込みを実現できる。
この後、不良ビット数Nxが、不良に対する許容ビット数N1を満たすか否か判定される(ステップST16)。ここでの不良ビット数Nxは、“0”を保持する下位データラッチの個数に相当する。不良ビット数Nxは、書き込みフェイルのメモリセルの個数と、ベリファイ読み出しの結果、読み出し電位VREAD以上のしきい値であると判定されたメモリセルの個数を含む。
Nx>N1である場合、図4のステップST8と同様に、書き込みフェイルであると判定される。そして、ブロックの変更等の処理の後、データの書き込みが引き続き、実行される。
Nx≦N1である場合、図4のステップST7と同様に、書き込みパスであると判定され(ステップST17)、選択ページ又は選択ブロックに対する書き込みシーケンスが完了する。
上述のステップST15において、1度の書き込みシーケンスにおいて、全てのワード線に対して、読み出し電位VREADを用いたベリファイ読み出しが実行される。
しかし、ベリファイ読み出しが実行される前までに、データの書き込みが実行されたワード線(ページ)に対してのみ、読み出し電位VREADを用いたベリファイ読み出しを実行してもよい。
この場合、書き込みが実行されていないワード線のメモリセルは、例えば、2値のフラッシュメモリであれば、“E”レベルセルであるはずなので、読み出し電位VREADを用いずに、読み出し電位VREADより低い“AR”レベルを用いて、ベリファイ読み出しを実行しても、ステップST15と実質的に同じ結果が得られる。
これによって、これからデータの書き込みが実行されるメモリセルに対しても、読み出し電位VREADより低い電位を判定電位として用いて、そのメモリセルのしきい値レベルを判定できる。また、読み出し電位VREADより低い判定レベルが用いられることによって、すべてのワード線WLに読み出し電位VREADを印加して、ベリファイ読み出しが実行される場合に比較して、ベリファイ読み出しに要する消費電力を低減できる。
尚、本実施形態のフラッシュメモリにおいて、4値のフラッシュメモリを例示して、説明したが、2値のフラッシュメモリの書き込みシーケンスにおけるベリファイ読み出しが、読み出し電位VREADを用いて実行されてもよい。
以上のように、第2の実施形態のフラッシュメモリによれば、回路構成の変更なしに、動作の信頼性を向上できる。
(3) 応用例
以下、第1及び第2のフラッシュメモリの応用例について、説明する。
第1の実施形態のフラッシュメモリの動作(図4参照)と第2の実施形態のフラッシュメモリの動作(図9参照)とを組み合わせて、1つのフラッシュメモリを構成してもよい。
第1の実施形態のフラッシュメモリは、隣り合わない2以上のしきい値レベル(しきい値分布)毎に割り付けられた判定情報を用いて、データの書き込みの成否を判定する。これによって、あるデータを書き込んだメモリセルのしきい値レベルが、そのデータに対応するしきい値分布に隣接するしきい値分布に遷移したのを検知でき、書き込み不良を検出できる。
第2の実施形態のフラッシュメモリは、メモリセルのしきい値レベルが、読み出し電位VREAD以上になる書き込み不良を検知できる。
例えば、図4に示される動作と図9に示される動作とが、フラッシュメモリの1回の書き込みシーケンス中にそれぞれ実行される。尚、図4の動作が実行されてから図9の動作が実行されるか、又は、その反対の順序の動作であるかは重要ではない。また、図4及び図9の動作を部分的に組み合わせてもよい。例えば、図4のステップST1からステップST8の動作を、1回目のベリファイ読み出し(第1のベリファイ)として、実行した後に、図9のステップST15からステップST17,ST18の動作を、2回目のベリファイ読み出し(第2のベリファイ)として、実行してもよい。
また、2値のフラッシュメモリ、QPWモード以外の書き込みモード(例えば、LMモード、Foggy and Fine モードなど)の多値フラッシュメモリ、AND型、NOR型などNAND型以外のフラッシュメモリに、図4乃至図9に示される動作が適用できるのはもちろんである。
さらに、本実施形態において、フラッシュメモリを例示したが、図4乃至図9に示される動作は、2値以上のデータを保持可能な他のメモリ(例えば、Resistive RAM又はPhase Change RAM)にも、適用できる。
以上のように、応用例で述べたメモリに対しても、第1及び第2の実施形態のフラッシュメモリと同様に、回路構成の変更なしに、メモリの信頼性を向上できる。
[その他]
本発明の例は、上述の実施形態に限定されるものではなく、その要旨を逸脱しない範囲で、各構成要素を変形して具体化できる。また、上述の実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を構成できる。例えば、上述の実施形態に開示される全構成要素から幾つかの構成要素を削除してもよいし、異なる実施形態の構成要素を適宜組み合わせてもよい。