(57)【要約】【課題】メモリの信頼性を向上する。【解決手段】本発明の例に関わる不揮発性半導体メモリは、複数のしきい値レベルにそれぞれ対応する２値以上のデータを記憶する複数のメモリセルと、メモリセルアレイのカラムに対応するラッチ回路及びセンスアンプ回路を有するページバッファと、メモリセルに対するデータの書き込み及びベリファイを実行する制御回路と、を具備し、制御回路は、隣り合わない２つ以上のしきい値レベルに対して共通に割り付けられたデータの書き込みの結果を示す判定情報を用いて、ベリファイを実行する、【選択図】図４
2011204298.tif 000002
【特許請求の範囲】
【請求項１】
メモリセルアレイのロウ及びカラムに沿って配列され、複数のしきい値レベルにそれぞれ対応する２値以上のデータを記憶する複数のメモリセルと、
前記メモリセルアレイの前記カラムに対応するラッチ回路及びセンスアンプ回路を有するページバッファと、
前記メモリセル、前記ページバッファの動作を制御し、外部からのデータの書き込みシーケンスにおいて、前記メモリセルに対するデータの書き込み及び第１のベリファイを実行する制御回路と、を具備し、
前記制御回路は、隣り合わない２つ以上のしきい値レベルに対して共通に割り付けられたデータの書き込みの結果を示す判定情報を用いて、前記第１のベリファイを実行する、ことを特徴とする不揮発性半導体メモリ。
【請求項２】
前記第１のベリファイは、隣接する前記しきい値レベル間の判定レベルによって、その成否が判定される、ことを特徴とする請求項１に記載の不揮発性半導体メモリ。
【請求項３】
前記第１のベリファイは、前記複数のしきい値レベルのそれぞれにおいて、それぞれのデータに対応するメモリセルのしきい値電位が、前記しきい値レベルの高レベル側の第１判定レベル以下、及び、前記しきい値レベルの低レベル側の第２判定レベル以上の範囲内に存在するか否かによって、その成否が判定される、ことを特徴とする請求項１に記載の不揮発性半導体メモリ。
【請求項４】
前記第１のベリファイは、前記２値以上のデータのそれぞれに対応する各しきい値レベル毎に、データの書き込みの不良ビット数が不良に対する許容ビット数を満たすか否かを、判定することによって、実行される、ことを特徴とする請求項１乃至３のいずれか１項に記載の不揮発性半導体メモリ。
【請求項５】
前記制御回路は、前記複数のしきい値レベルのうち、最上位のしきい値レベル以上の電位を用いる第２のベリファイを実行する、ことを特徴とする請求項１乃至４のいずれか１項に記載の不揮発性半導体メモリ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性半導体メモリに関する。
【背景技術】
【０００２】
メモリセルの各々が２ビット以上のデータを保持可能な、多値（multi-level）ＮＡＮＤ型フラッシュメモリが知られている。メモリセルに設定された２以上のしきい値レベル（しきい値電位）が、２ビット以上のデータにそれぞれ対応する。
【０００３】
フラッシュメモリの書き込み動作として、データを書き込んだ後、所定のデータが書き込まれたか否か検証するベリファイ動作が実行される。ベリファイ動作は、ある電位レベルを判定基準として、データを書き込んだメモリセルのしきい値レベルが、所定の電位レベル以上であるか否か判別することによって、実行される。
【０００４】
例えば、データを書き込んだメモリセルのしきい値レベルが、データに対応する所定のレベル（しきい値分布）に存在していれば、書き込みにおけるベリファイの結果がパスであるとして、そのメモリセルへの書き込みは終了する。また、メモリセルのしきい値レベルが、書き込むべきデータに対応する所定のレベルに存在していなければ、ベリファイの結果がフェイルとして、そのメモリセルに対する書き込みが続行される。
【０００５】
しかし、データの書き込み後又はベリファイ動作中において、メモリセルの特性ばらつきや隣接セル間の相互干渉に起因して、ベリファイをパスしたメモリセルのしきい値レベルが変動してしまい、そのメモリセルのしきい値レベルが、記憶すべきデータに対応する所定のしきい値レベル（しきい値分布）内に収まらない場合がある。
【０００６】
それゆえ、ベリファイをパスしたメモリセルが、記憶すべきデータに対応するしきい値レベルの範囲内に、本当に存在しているか検知できない可能性がある。
【０００７】
その結果として、データの書き込み不良が原因となって、データの読み出しが実行できないなど、フラッシュメモリの誤動作が引き起こされてしまう。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００８−４１７８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
本発明は、メモリの信頼性を向上する。
【課題を解決するための手段】
【００１０】
本発明の例に関わる不揮発性半導体メモリは、メモリセルアレイのロウ及びカラムに沿って配列され、複数のしきい値レベルにそれぞれ対応する２値以上のデータを記憶する複数のメモリセルと、前記メモリセルアレイの前記カラムに対応するラッチ回路及びセンスアンプ回路を有するページバッファと、前記メモリセル、前記ページバッファの動作を制御し、外部からのデータの書き込みシーケンスにおいて、前記メモリセルに対するデータの書き込み及び第１のベリファイを実行する制御回路と、を具備し、前記制御回路は、隣り合わない２つ以上のしきい値レベルに対して共通に割り付けられた、データの書き込みの結果を示す判定情報を用いて、前記第１のベリファイを実行する。
【発明の効果】
【００１１】
本発明によれば、メモリの信頼性を向上できる。
【図面の簡単な説明】
【００１２】
【図１】フラッシュメモリの構成を示す図。
【図２】ページバッファの内部構成を示す図。
【図３】メモリセルのしきい値分布を示す図。
【図４】第１の実施形態のフラッシュメモリの動作を示すフローチャート。
【図５】第１の実施形態のフラッシュメモリの動作を模式的に示す図。
【図６】第１の実施形態のフラッシュメモリの動作を模式的に示す図。
【図７】第１の実施形態のフラッシュメモリの動作を模式的に示す図。
【図８】第１の実施形態のフラッシュメモリの変形例を説明するための図。
【図９】第２の実施形態のフラッシュメモリの動作を示すフローチャート。
【発明を実施するための形態】
【００１３】
以下、図面を参照しながら、本発明の例を実施するための形態について詳細に説明する。以下の説明において、同一の機能及び構成を有する要素については、同一符号を付し、重複する説明は必要に応じて行う。
【００１４】
［実施形態］
（１）  第１の実施形態  
（ａ）全体構成  
図１乃至図３を用いて、第１の実施形態に係る不揮発性半導体メモリについて、説明する。本実施形態の不揮発性半導体メモリは、例えば、フラッシュメモリである。
【００１５】
図１は、本実施形態に係るフラッシュメモリのブロック図である。
【００１６】
本実施形態のフラッシュメモリ１は、ＮＡＮＤ型フラッシュメモリである。
【００１７】
図１に示されるように、ＮＡＮＤ型フラッシュメモリ１は、メモリセルアレイ２、ロウデコーダ３、カラムデコーダ４、ページバッファ５、データ入出力バッファ７、及び制御回路６を備えている。
【００１８】
図１に示されるように、メモリセルアレイ２は、複数のＮＡＮＤセルユニット（メモリセルユニット）ＮＵを備えている。ＮＡＮＤセルユニットＮＵの各々は、例えば、３２個のメモリセルＭＣ０〜ＭＣ３１と、選択トランジスタＳＴ１、ＳＴ２とを含んでいる。なお、メモリセルＭＣの個数は３２個に限られず、８個や１６個、６４個、１２８個、２５６個等であってもよく、その数は限定されるものではない。以下、メモリセルＭＣ０〜ＭＣ３１を区別しない場合には、一括してメモリセルＭＣとよぶ。
【００１９】
メモリセルＭＣは、半導体基板上にゲート絶縁膜を介在して形成された電荷蓄積層（例えば、浮遊ゲート）と、電荷蓄積層上にゲート間絶縁膜を介在して形成された制御ゲートとを有する積層ゲート構造を備えた電界効果トランジスタである。電荷蓄積層は絶縁物を材料に用いて形成されても良い。メモリセルＭＣは、隣接するトランジスタ同士でソース／ドレインを共有している。そして、メモリセルＭＣは、選択トランジスタＳＴ１、ＳＴ２間に、その電流経路が直列接続されるように、配置されている。直列接続された複数のメモリセル（以下、ＮＡＮＤストリングとよぶ）の一端側のドレインは選択トランジスタＳＴ１のソースに接続され、他端側のソースは選択トランジスタＳＴ２のドレインに接続されている。
【００２０】
同一のロウにあるメモリセルＭＣの制御ゲートはワード線ＷＬ０〜ＷＬ３１のいずれかに共通接続され、同一のロウにある選択トランジスタＳＴ１，ＳＴ２のゲートは、それぞれセレクトゲート線ＳＧＤ、ＳＧＳに共通接続されている。以下では、ワード線ＷＬ０〜ＷＬ３１を単にワード線ＷＬとよぶことがある。さらに、選択トランジスタＳＴ１のドレインはビット線ＢＬ０〜ＢＬｍ（ｍは１以上の自然数）のいずれかに接続される。選択トランジスタＳＴ２のソースはソース線ＳＬに共通接続される。ビット線ＢＬ０〜ＢＬｍについても、これらを区別しない場合には単にビット線ＢＬとよぶ。
【００２１】
以上の構成において、ワード線ＷＬ及びセレクトゲート線ＳＧＤ、ＳＧＳを共通にする複数のＮＡＮＤセルユニットＮＵによって、１つのブロックと呼ばれる単位が形成される。同一のブロック内のメモリセルトランジスタＭＣは、一括してデータが消去される。更に、同一のワード線ＷＬに接続された複数のメモリセルＭＣには、一括してデータが書き込まれ、この単位はページとよばれる。
【００２２】
また、図１において、１つのブロックのみ図示しているが、ビット線ＢＬに沿った方向に複数のブロック設けられてもよい。この場合、メモリセルアレイ２内において同一列にあるＮＡＮＤセルユニットＮＵは、同一のビット線ＢＬに共通接続される。
【００２３】
ロウデコーダ３は、メモリセルアレイ２のロウ方向を選択する。アドレスバッファ（図示せず）に入力されたアドレス信号に基づいて、ワード線ＷＬを選択する。そして、ロウデコーダは、選択したワード線ＷＬ及び非選択のワード線ＷＬに対して、適切な電圧を印加する。各ワード線ＷＬに印加される電圧は、例えば、チップ内に設けられた電位供給回路（図示せず）によって、生成される。ロウデコーダ３は、メモリセルアレイ２の各ロウに対応して、転送トランジスタを備えている。ワード線ＷＬは、転送トランジスタを経由して、電位供給回路内のチャージポンプ（図示せず）に接続されている。
【００２４】
ページバッファ５は、データの書き込み時には、外部から与えられる書き込みデータを一時的に保持し、これをビット線ＢＬに転送して、ページ単位で一括してデータを書き込む。またデータの読み出し時には、ページ単位でビット線ＢＬに読み出されたデータをセンス・増幅し、これを一時的に保持し、外部へ出力する。
【００２５】
データ入出力バッファ７は、外部ユニット（例えば、コントローラ又はホスト）とメモリセルアレイ２との間のデータＤＴの入出力のために、書き込みデータ及び読み出しデータを、一時的に保持する。外部からの要求に応じて、データ入出力バッファ７とページバッファ５との間で、データが入出力される。
【００２６】
カラムデコーダ４は、メモリセルアレイ２のカラム方向を選択する、すなわち、ビット線ＢＬを選択する。カラムデコーダ４は、読み出し時には、選択したビット線ＢＬに対応するデータを出力するように、ページバッファ５に命令する。カラムデコーダ４は、書き込み時には、データを所定のページに属するメモリセルＭＣに転送するように、ページバッファ５に命令する。
【００２７】
制御回路６は、ＮＡＮＤ型フラッシュメモリ１全体の動作を司る。すなわち、データの書き込み時、読み出し時、及び消去時等において、ロウデコーダ３、カラムデコーダ４、ページバッファ５及びデータ入出力バッファ７動作を制御する。
【００２８】
図２を用いて、ページバッファ５の内部構成について、説明する。図２は、ページバッファ５及びメモリセルアレイ２のブロック図である。尚、図２において、図示の簡略化のため、１本のビット線（１つのカラム）に対応するパージバッファの内部構成を図示している。
【００２９】
ページバッファ５内には、センスアンプ回路１０及びラッチ回路２０が設けられている。センスアンプ回路１０及びラッチ回路２０は、メモリセルアレイ２のカラムに対応して、１つずつ設けられている。つまり、１つのセンスアンプ回路１０と１つのラッチ回路２０が、１つのビット線ＢＬ０及び１つのＮＡＮＤセルユニットＮＵに対応している。
【００３０】
１つのセンスアンプ回路１０は、１つのＮＡＮＤセルユニットＮＵに対応している。１つのセンスアンプ回路１０が、１本のビット線ＢＬ０に接続される。１つのラッチ回路２０も、センスアンプ回路１０と同様に、１つのＮＡＮＤセルユニットＮＵに対応している。ラッチ回路２０は、センスアンプ回路１０を経由して、ビット線ＢＬ０に接続される。
【００３１】
メモリセルアレイ２内の残りのビット線ＢＬ１〜ＢＬｍに関しても、ビット線ＢＬ０と同様に、センスアンプ回路１０及びラッチ回路２０が接続されている。
【００３２】
センスアンプ回路１０は、センスアンプユニット１１と、演算ユニット１２を有する。  
センスアンプユニット１１は、データの読み出し時、ビット線ＢＬ０の電位変動を検知及び増幅し、データを判別する。演算ユニット１２は、メモリセルが所定の電圧レベルに書き込まれた否か判定するための演算、及び、メモリセルのしきい値の状態を判定するため演算を、実行する。
【００３３】
ラッチ回路２０は、メモリセルに書き込むデータ、メモリセルから読み出されたデータ及びメモリセルに対する動作を示す設定情報（以下、フラグとよぶ）などを、一時的に保持する。
【００３４】
ラッチ回路２０は、少なくとも２つのラッチ２１，２２，２３を有する。本実施形態において、データを保持するラッチ２１，２２のことを、データラッチ２１，２２とよび、動作の設定情報を保持するラッチ２３のことを、フラグラッチ２３とよぶ。
【００３５】
ラッチ回路２０内のデータラッチ２１，２２は、データの書き込み時において、その回路２０に対応しているＮＡＮＤセルユニットＮＵに書き込むデータ（外部からのデータ）を保持し、データの読み出し時において、その回路２０に対応しているＮＡＮＤセルユニットＮＵから読み出されたデータ（メモリセルからのデータ）を保持する。１つのデータラッチは、１ビットのデータを保持する。フラグラッチ２３が保持するフラグは、例えば、入力されたデータが２値（１ビット）のデータであるか多値（２ビット以上）のデータであるかを示す情報、或いは、どのような書き込みモードでデータを書き込むべきかを示す情報である。
【００３６】
例えば、１つのメモリセルが４値（２ビット）のデータを記憶する場合、ラッチ回路２０は、２つのデータラッチ２１，２２と１つのフラグラッチ２３を有する。ラッチ回路２０内に設けられた２つのデータラッチのうち、一方の上位データラッチ（ＵＬＡＴ）２１は、２ビットのうち上位の１ビットを保持し、他方の下位データラッチ（ＬＬＡＴ）２２は、２ビットのうち下位の１ビットを保持する。
【００３７】
尚、４値のデータの場合には、２つのデータラッチと１つのフラグラッチが、ラッチ回路２０内に設けられるが、データのビット数が増加すると、データラッチの個数は、増大する。例えば、メモリセルＭＣが８値（３ビット）のデータを記憶する場合、ラッチ回路２０は３つのデータラッチを有する。つまり、ラッチ回路２０は、最上位の１ビットを保持するデータラッチと、最下位の１ビットを保持するデータラッチと、最上位と最下位との間の１ビットを保持するデータラッチとを有する。これと同様に、データが１６値（４ビット）の場合、ラッチ回路２０内のデータラッチの個数は４個となり、データが３２値（１６ビット）の場合、ラッチ回路２０内のデータラッチの個数は５個となる。データが２値（１ビット）の場合には、データラッチの個数は、１個となる。
【００３８】
フラグラッチの個数は、１個でもよいし、メモリの設定に応じて２個以上でもよい。
【００３９】
本実施形態のフラッシュメモリにおいて、ラッチ回路２０のデータラッチ及びフラグラッチは、データの書き込み時又はデータの読み出し時に、データ及びフラグをそれぞれ保持することに加えて、ベリファイ時にＮＡＮＤセルユニットＮＵに対して正常にデータが書き込まれた否かを示す判定情報を保持する。
【００４０】
次に、図３を用いて、メモリセルＭＣの取り得るデータについて説明する。図３は、メモリセルＭＣのしきい値電圧を示すグラフであり、縦軸にしきい値電圧（しきい値レベル、しきい値電位ともよぶ）Ｖthをとり、横軸にメモリセルＭＣの存在確率を示したグラフである。
【００４１】
図３に示されるように、例えば、４値のフラッシュメモリにおいて、各々のメモリセルＭＣは４値のデータを保持できる。より具体的には、メモリセルＭＣは、しきい値電圧Ｖthの低い順に“Ｅ”（“Ｅｒ”）レベル、“Ａ”レベル、“Ｂ”レベル、及び“Ｃ”レベルの４種のデータを保持できる。“Ｅ”、“Ａ”、“Ｂ”、及び“Ｃ”レベルは、２進数表示でそれぞれ“１１”、“０１”、“００”、及び“１０”データに、それぞれ対応づけられる。この２ビットのデータの各ビットを、図３に示されるように、上位（upper）ビット（または上位データ）及び下位（lower）ビット（下位データ）とよぶ。尚、“Ｅ”〜“Ｃ”レベルと“００”〜“１１”データとの関係は、図３の場合に限られるものでは無く、適宜選択できる。
【００４２】
“Ｅ”（Erase）レベルは消去レベルであり、そのしきい値電圧ＶthＥはＶthＥ＜ＡＲである。“Ａ”レベルのしきい値電圧ＶthＡは、ＡＲ＜ＶthＡ＜ＢＲである。“Ｂ”レベルのしきい値電圧ＶthＢは、ＢＲ＜ＶthＢ＜ＣＲである。“Ｃ”レベルのしきい値電圧ＶthＣは、ＣＲ＜ＶthＣ＜ＶＲＥＡＤである。
【００４３】
本実施形態において、記憶しているデータが“Ｃ”レベルであるメモリセルのことを、「“Ｃ”レベルセル」とよぶ。記憶しているデータが“Ｂ”レベルであるメモリセルのことを、「“Ｂ”レベルセル」とよぶ。記憶しているデータが“Ａ”レベルであるメモリセルのことを、「“Ａ”レベルセル」とよぶ。また、“Ｅ”レベル（消去状態）のメモリセルのことを、「“Ｅ”レベルセル」とよぶ。
【００４４】
本実施形態において、“Ｃ”レベルに対応するデータの書き込みを、「“Ｃ”書き込み」とよぶ。また、“Ｂ”レベルに対応するデータの書き込みを、「“Ｂ”書き込み」とよぶ。さらに、“Ａ”レベルに対応するデータの書き込みを、「“Ａ”書き込み」とよぶ。尚、“Ｅ”レベルは消去レベルである。それゆえ、“Ｅ”レベルに対応するデータの書き込みは、消去動作であるが、必要に応じて、“Ｅ”書き込みとよぶ。
【００４５】
上記の電位ＶＲＥＡＤ，ＣＲ，ＢＲ，ＡＲは、読み出しコマンドの基づくデータの読み出し、又は、ベリファイのためのデータの読み出しに用いられる電位である。本実施形態において、電位（読み出しレベル）ＣＲを読み出しレベルに用いて行うデータの読み出し（すなわち、しきい値レベルが“Ｃ”レベルなのか、“Ｂ”レベル以下なのかの判定）を、「“Ｃ”読み出し」とよぶ。また、電位ＢＲを用いて行うデータの読み出し（すなわち、しきい値レベルが“Ｂ”レベル以上なのか、“Ａ”レベル以下なのかの判定）を、「“Ｂ”読み出し」とよぶ。さらに、電位ＡＲを用いて行うデータの読み出し（すなわち、しきい値レベルが“Ａ”レベル以上なのか、“Ｅ”レベルなのかの判定）を、「“Ａ”読み出し」とよぶ。書き込みコマンドに対応する書き込みシーケンスが終了する前に、これらの読み出しレベルを用いたベリファイ（以下、ベリファイ読み出しとよぶ）が実行される。本実施形態において、１つの書き込みシーケンスは、データの書き込みと、それに続く、ベリファイのためのデータの読み出し（ベリファイ読み出し）とを含んでいる。尚、ベリファイ読み出しは、外部からの読み出しコマンドの入力は必要ない。
【００４６】
データは、同一のワード線ＷＬに接続されたメモリセルＭＣに対して、一括して書き込まれ、また読み出される。この際、データは下位ビット毎、または上位ビット毎に書き込まれ、また読み出される。したがって、メモリセルＭＣが２ビットデータを保持している場合には、１本のワード線ＷＬあたり、２つのページが割り当てられていることになる。以下、下位ビットについて一括して書き込みまたは読み出されるページを下位ページとよび、上位ビットについて一括して書き込みまたは読み出されるページを上位ページとよぶ。
【００４７】
多値フラッシュメモリの書き込みモードには、例えば、ＬＭ（Lower at Middle）モードや、ＱＰＷ（Quick Pass Write）モードがある。以下では、ＱＰＷモードがデータの書き込みに用いられた場合について述べるが、本実施形態のフラッシュメモリは、他の書き込みモードにも適用可能である。
【００４８】
ＱＰＷモードは、データ書き込み時、ビット線に所定の中間電位を供給して、選択されたメモリセル（以下、選択セルとよぶ）のしきい値電圧が、書き込むべきデータに対応するしきい値分布内に収まっているかどうか判別（ベリファイ）することによって、メモリセルのしきい値を所定の範囲内にシフトさせる。これによって、所定のデータに対するメモリセルのしきい値分布を狭くする。ＱＰＷモードにおいて、フラグラッチが保持するフラグは、ＱＰＷ情報ともよばれる。
【００４９】
ＱＰＷモードにおいて、各しきい値レベルの分布に対して、高電位側のしきい値レベルと低電位側のしきい値レベルが、ベリファイのための判定基準となる電位レベルとして、設定される。
【００５０】
“Ｃ”レベルのしきい値分布において、ベリファイの判定基準として、その分布の高電位端のレベルに対して、判定レベル“ＣＶＨ”（＜ＶＲＥＡＤ）が設定され、その分布の低電位端のレベルに対して、判定レベル“ＣＶ”（＞ＣＲ）が設定される。“Ｂ”レベルのしきい値分布において、ベリファイの判定基準として、その分布の高電位端のレベルに対して、判定レベル“ＢＶＨ”（＜ＣＲ）が設定され、その分布の低電位端のレベルに対して、判定レベル“ＢＶ”（ＢＶＨ＞ＢＶ＞ＢＲ）が設定される。“Ａ”レベルのしきい値分布において、ベリファイの判定基準として、その分布の高電位端のレベルに対して、判定レベル“ＡＶＨ”（＜ＢＲ）が設定され、その分布の低電位端のレベルに対して、判定レベル“ＡＶ”（ＡＶＨ＞ＡＶ＞ＡＲ）が設定される。また、“Ｅ”レベルのしきい値分布において、ベリファイの判定基準として、その分布の高電位端のレベル“ＥＶＨ”（＜ＡＲ）が設定されている。
【００５１】
また、各しきい値レベルに対して、読み出しレベルとしきい値分布の低電位端の判定レベルとの間に、もう１つの判定レベルが設定されている。
【００５２】
“Ｃ”レベルにおいて、読み出しレベルＣＲと判定レベルＣＶとの間に、判定レベルＣＶＬが設定されている。“Ｂ”レベルにおいて、読み出しレベルＢＲと判定レベルＢＶとの間に、判定レベルＢＶＬが設定されている。“Ａ”レベルにおいて、読み出しレベルＡＲと判定レベルＡＶとの間に、判定レベルＡＶＬが設定されている。
【００５３】
以下では、各しきい値レベルにおいて、判定レベルＣＶＨ，ＢＶＨ，ＡＶＨを、“ＣＶＨ”レベル、“ＢＶＨ”レベル、“ＡＶＨ”レベルとそれぞれよぶ。判定レベルＣＶＬ，ＢＶＬ，ＡＶＬを、“ＣＶＬ”レベル、“ＢＶＬ”レベル、“ＡＶＬ”レベルとそれぞれよぶ。また、判定レベルＣＶ，ＢＶ，ＡＶを、“ＣＶ”レベル、“ＢＶ”レベル、“ＡＶ”レベルとそれぞれよぶ。
【００５４】
ＱＰＷモードを用いたフラッシュメモリにおいて、データの書き込み中に、上記の判定レベルを用いて、外部から入力された書き込むべきデータが、所定のメモリセルに書き込まれているか否か、ベリファイされる。
【００５５】
ベリファイ動作は、例えば、制御回路６が、ロウ／カラムデコーダ３，４、ページバッファ５の動作を制御し、上記の判定レベル及び読み出しレベルを用いて、データを書き込んだメモリセルのしきい値電圧が、書き込むべきデータに対応するしきい値分布の範囲内に存在するか否かを判定することによって、実行される。
【００５６】
ベリファイの結果がパス（Pass）であるかフェイル（Fail）であるかは、例えば、制御回路６、又は、ページバッファ５が有するセンスアンプ回路１０内の演算ユニット１２が、メモリセルのしきい値レベルとラッチ回路２０が保持するデータとに対して演算処理することによって、得られる。ベリファイの結果がパスである場合、データの書き込みがパスであることを示す情報（以下、パス情報とよぶ）が、演算ユニット１２又は制御回路６から出力される。ベリファイの結果がフェイル（Fail）である場合、データの書き込みがフェイルであることを示す情報（以下、フェイル情報とよぶ）が、演算ユニット１２又は制御回路６から出力される。以下では、ベリファイの結果が、パスかフェイルかどちらの結果であるかを限定しない場合には、その結果をパス／フェイル情報又は単に判定情報とよぶ。
【００５７】
ベリファイ動作は、各しきい値レベル毎に、順次実行される。
【００５８】
図３に示されるように、本実施形態のフラッシュメモリは、データに対応する複数のしきい値レベルにおいて、データの書き込みの成否を判定するための情報が、隣り合わない２以上のしきい値レベルに対して同じ情報になるように、割り付けられる。
【００５９】
図３に示される例では、ＱＰＷモードにおけるデータ書き込み時のベリファイにおいて、ベリファイをパスした“Ｃ”レベルセルと“Ａ”レベルセルとのグループに対して同じ判定情報（パス情報ともよばれる）が割り付けられ、ベリファイをパスした“Ｂ”レベルセルと“Ｅ”レベルセルとのグループに対して、同じ判定情報が割り付けられている。図３に示される例において、“Ｃ”及び“Ａ”レベルセルの判定情報は、例えば、“１１１”に設定される。“Ｂ”及び“Ｅ”レベルセルの判定情報は、例えば、“１１０”に設定される。
【００６０】
これらの判定情報は、書き込むデータを一時的に保持するデータラッチ２１，２２及びフラグを一時的に保持するフラグラッチ２３に、上書きされことによって、チップ１内部で保持される。
【００６１】
“Ｃ”及び“Ａ”レベルセルのグループのパス情報に関して、“Ｃ”及び“Ａ”レベルセルにそれぞれ対応するラッチ回路２０において、例えば、上位データラッチ（ＵＬＡＴ）２１に“１”が保持され、下位データラッチ（ＬＬＡＴ）に“１”が保持され、フラグラッチ（ＱＬＡＴ）に“１”が保持される。“Ｂ”及び“Ｅ”レベルセルのグループのパス情報に関して、“Ｂ”及び“Ｅ”レベルセルにそれぞれ対応するラッチ回路２０において、例えば、上位データラッチ（ＵＬＡＴ）２１に“１”が保持され、下位データラッチ（ＬＬＡＴ）に“１”が保持され、フラグラッチ（ＱＬＡＴ）に“０”が保持される。
【００６２】
上記の判定情報において、上位及び下位データラッチ２１，２２の保持する“１１”は、書き込みがパスしたことを示す。また、フラグラッチ２３の保持する“１”は、“Ｃ”及び“Ａ”レベルセルであることを示し、フラグラッチ２３の保持する“０”は、“Ｂ”及び“Ｅ”レベルセルであることを示す。このように、本実施形態において、書き込みがパスであると判定された場合に、“Ａ”レベルと“Ｂ”レベルのように、隣り合う２つのしきい値レベルに対して、異なる判定情報が設定されている。
【００６３】
そして、フラッシュメモリ１の制御回路６（又は演算ユニット１２）は、隣り合わないしきい値レベル毎に割り付けられたパス情報とベリファイ読み出しの結果とを比較して、所定のメモリセルに書き込むべき所定のデータが書き込まれているか否か判定する。その比較結果は、制御回路６の制御によってラッチ回路２０に転送され、データラッチ２１，２２の判定情報が、転送された比較結果に書き換えられる。
【００６４】
本実施形態のフラッシュメモリ１において、例えば、判定情報とベリファイ読み出しの比較結果がフェイルであった場合、そのフェイル情報が、下位データラッチ（ＬＬＡＴ）２２に書き込まれる。
【００６５】
これによって、データの書き込みの不良ビット数が、不良に対する許容値を満たすか否か判別される。そして、データの書き込みに対する許容される条件が満たされた場合に、ある選択ワード線（ページ）又はブロックに対する書き込みシーケンスが完了する。
【００６６】
１つの書き込みシーケンスが完了すると、他のワード線又は他のブロックに対する書き込みシーケンスが実行される。一般に、ＮＡＮＤ型フラッシュメモリの書き込み動作は、ソース線側からビット線側に向かう順番で、選択ワード線が切り替えられて、書き込みシーケンスが進行する。
【００６７】
以上のように、本実施形態のフラッシュメモリは、隣り合わない２以上のしきい値レベルに対して設定された共通の判定情報を用いて、書き込むべきデータが所定のメモリセルに書き込まれたか否か、検証する。
【００６８】
一般的なフラッシュメモリは、あるデータの書き込みが完了したメモリセルのしきい値が、そのしきい値レベルよりも上のレベルに遷移した場合や、所定のデータの書き込みが完了したメモリセルのしきい値レベルが、隣接するメモリセルに対するデータの書き込みに起因して他のレベルに遷移した場合、ベリファイ読み出しによって読み出されたデータが、記憶すべきデータと異なっていても、データの誤りとして検知できない。
【００６９】
本実施形態のフラッシュメモリのように、隣り合わない複数のしきい値レベル（しきい値分布）を１つのグループとして、それらに書き込み（ベリファイ）のパス／フェイルを示す情報及び書き込むべきデータを示す情報を、書き込みの成否を示す判定情報として設定することによって、例えば、“Ａ”レベルのデータを書き込むべきメモリセルのしきい値レベルが、セル間干渉（例えば、ユーピン効果）やベリファイ読み出し中の読み出しディスターブなどに起因して“Ｂ”レベルのしきい値レベルに遷移してしまう不良が、メモリの動作中に発生しても、それらの不良を検出できる。それゆえ、メモリの信頼性を向上できる。
【００７０】
本実施形態のフラッシュメモリに設定される判定情報は、ラッチによる保持が不要になったデータ上に、上書きされる。すなわち、設定情報は、ページバッファ５内に設けられた既存のデータラッチ２１，２２及びフラグラッチ２３に保持される。
【００７１】
それゆえ、本実施形態のフラッシュメモリのように、新規の判定情報が設定されても、その判定情報を保持するために、新たな記憶素子を設ける必要はなく、ページバッファが含むラッチの個数が増大することもない。したがって、本実施形態のフラッシュメモリ１は、回路構成の変更及び回路規模の増大なしに、フラッシュメモリの信頼性が向上する。
【００７２】
また、本実施形態のような判定情報を用いずに、メモリチップ内のラッチの個数を増大させずに、データの書き込みの成否を判定するために、外部のコントローラを用いる場合がある。この場合、書き込み動作が終了した後、外部のコントローラが保持しているデータがメモリチップに転送され、その転送されたデータとメモリセルから読み出されたデータとがチップ内部で比較される。これとは反対に、メモリセルから読み出されたデータが外部コントローラに転送され、コントローラが保持しているデータとメモリチップから転送されたデータとが外部コントローラ内部で比較される。
【００７３】
これらのように、所定のデータが書き込まれたか否か検証するために外部コントローラが用いられた場合、チップ内部でのデータの読み出し時間やメモリチップと外部コントローラ間におけるデータの転送時間が発生し、且つ、データをメモリセルに書き込んだ後においてもコントローラがデータを保持し続けなければならない。そのため、フラッシュメモリの動作速度が低減してしまう。
【００７４】
本実施形態のフラッシュメモリにおいて、外部のコントローラを用いずに、隣り合わないに２以上のしきい値レベルで共通な判定情報を用いて、データの書き込みの成否をチップの内部処理で判定できるため、動作速度が低減するのを抑制できる。
【００７５】
また、従来のベリファイ読み出しによって検出できない不良ビットを救済するために、ＥＣＣ（Error Checking and Coding）回路をチップ内に設けた場合、メモリの回路規模が増大してしまう。
【００７６】
これに対して、本実施形態のフラッシュメモリは、隣り合わないに２以上のしきい値レベルで共通な判定情報を設定することによって、ＥＣＣ回路を用いずとも、従来では検出できなかった不良ビットを検出できる。
【００７７】
以上のように、本実施形態のフラッシュメモリにおいて、データの書き込みの信頼性を向上するために、チップ内部の回路規模を増大させる必要はなく、外部のコントローラを利用する必要もない。
【００７８】
したがって、第１の実施形態のフラッシュメモリによれば、回路構成を変更することなしに、メモリの信頼性を向上できる。
【００７９】
（ｂ）  動作  
図４乃至図７を用いて、本実施形態のフラッシュメモリの動作について、説明する。尚、必要に応じて、図１乃至図３を用いて、本実施形態のフラッシュメモリの動作について、説明する。ここでは、フラッシュメモリの書き込みモードが、ＱＰＷモードである場合について、説明する。
【００８０】
図４に示されるように、データの書き込みコマンド及びアドレス信号とともに、データが外部からフラッシュメモリ１のデータ入出力バッファ７に、入力される。入力されたデータは、制御回路６の制御によって、データ入出力バッファ７からページバッファ５内のラッチ回路２０へ転送される。そして、転送されたデータの書き込みが、開始される（ステップＳＴ１）。
【００８１】
尚、外部からのデータがページバッファ５に転送される前に、選択されたブロックに対して、消去動作が実行されている。そのブロック内のメモリセルは、“Ｅ”レベルセルになっている。この消去動作によって、ラッチ回路２０内のデータラッチ２１，２２は、“１１”のデータを保持し、フラグラッチ２３は“１”のデータを保持している。
【００８２】
ページバッファ５に転送されたデータが４値（2bit）のデータである場合、ラッチ回路２０内の上位データラッチ（ＵＬＡＴ）２１に、データの上位ビットが入力され、ラッチ回路２０内の下位データラッチ（ＬＬＡＴ）２２に、データの下位ビットが入力される。
【００８３】
ページバッファ５に転送されたデータが、２値（１bit）のデータである場合、ラッチ回路２０の下位データラッチ（ＬＬＡＴ）２２にデータが入力される。また、ラッチ回路２０内のフラグラッチ（ＱＬＡＴ）２３に、２値データの書き込みであることを示すフラグが、入力される。
【００８４】
外部からのデータは、データの書き込むメモリセルに対応するデータラッチ２１，２２に入力される。データを書き込む必要が無い、すなわち、消去状態（“Ｅ”レベル）のままのメモリセルに対応するデータラッチに、データは入力されず、それらのデータラッチ２１，２２は、“１１”のデータを保持する。
【００８５】
そして、制御回路６は、アドレス信号が示すワード線（ページ）を選択し、その選択されたワード線（以下、選択ワード線とよぶ）をアクティブにする。制御回路６は、ラッチ回路２０が保持しているデータを、センスアンプ回路１０に転送する。センスアンプ回路１０は、そのデータに応じて、ビット線ＢＬの電位を調整する。
【００８６】
制御回路６は、ロウ／カラムデコーダ３，４及びページバッファ５の動作を制御して、ＱＰＷモードによって、そのページに属するメモリセルに、ラッチ２１，２２が保持するデータを、データ対応するしきい値レベル毎に、順次書き込む。データの書き込みは、“Ａ”（“０１”）、“Ｂ”（“００”）及び“Ｃ”（“１０”）の順序で実行されてもよいし、これとは異なる順序でもよい。
【００８７】
データが所定のメモリセル（ページ）に書き込まれた後、ベリファイが実行される（ステップＳＴ２）。尚、ここでのベリファイは、１つのページに対するデータの書き込みが終了する度に実行されてもよいし、複数のページに対するデータの書き込みが終了した後、データを書き込んだページ毎に順次実行されてもよい。
【００８８】
このステップＳＴ２におけるベリファイは、“ＡＶＬ”、“ＢＶＬ”及び“ＣＶＬ”レベル及び“ＡＶ”、“ＢＶ”及び“ＣＶ”レベルを判定基準として、実行される。但し、“ＡＶＨ”、“ＢＶＨ”及び“ＣＶＨ”レベルを、ベリファイの判定レベルに用いてもよい。“ＡＶＬ〜ＣＶＬ”レベル及び“ＡＶＨ〜ＣＶＨ”レベルを用いて、ベリファイを行うことによって、しきい値分布の範囲を狭くでき、データの書き込みの精度を向上できる。
【００８９】
ベリファイ時、選択ワード線に“ＡＶＬ〜ＣＶＬ”レベル及び“ＡＶ〜ＣＶ”レベルがそれぞれ印加され、この電位の印加によって、選択ワード線に接続されたメモリセル（あるページに属するメモリセル）がオンするか否か、判別される。このオン／オフの結果としてのビット線の電位変動と各ラッチ回路が保持しているデータとが、制御回路６又はセンスアンプ回路１０内の演算ユニット１２によって比較され、ベリファイがパスかフェイルか判定される。
【００９０】
ベリファイ動作は、例えば、“Ａ”レベル、“Ｂ”レベル及び“Ｃ”レベルの順番で実行される。
【００９１】
ここで、図５を用いて、“Ａ”レベルにおけるベリファイについて、説明する。図５は、本実施形態のフラッシュメモリのベリファイを模式的に示す図である。
【００９２】
“Ａ”レベルは“０１”のデータに対応する。それゆえ、“Ａ”レベルのデータを書き込むメモリセルに対応する上位／下位データラッチ（ＵＬＡＴ，ＬＬＡＴ）２１，２２は、“０”及び“１”のデータを、それぞれ保持する。
【００９３】
“Ａ”レベルに対するベリファイにおいて、はじめに、“ＡＶＬ”レベルにおけるベリファイが実行される（ステップＳＴ２−Ａ１）。“ＡＶＬ”レベルでのベリファイ結果は、上位／下位データラッチ２１，２２が“Ａ”レベル（“０１”のデータ）を示しているラッチ回路２０に、転送される。このベリファイ結果の判定及び転送は、例えば、制御回路５及びセンスアンプ回路１０内の演算ユニット１２によって、実行される。
【００９４】
あるメモリセルに対する“ＡＶＬ”レベルを用いたベリファイ結果がパスである場合（メモリセルがオフである場合）、パスしたメモリセルに対応し、且つ、データラッチ（ＵＬＡＴ，ＬＬＡＴ）２２，２３が保持しているデータが“０１”であるラッチ回路２０に対して、例えば、“１”が転送される。あるメモリセルに対する“ＡＶＬ”レベルを用いたベリファイ結果がフェイルである場合（メモリセルがオンである場合）、フェイルしたメモリセルに対応し、且つ、データラッチ（ＵＬＡＴ，ＬＬＡＴ）が保持するデータが“０１”のラッチ回路２０に対して、例えば、“０”が転送される。
【００９５】
そして、ラッチ回路２０内のフラグラッチ（ＱＬＡＴ）２３が保持しているデータは、フラグ情報から“ＡＶＬ”レベルにおけるベリファイ結果に書き換えられる（ステップＳＴ２−Ａ２）。データの書き込み後、ベリファイ中において、フラグラッチ２３の保持するデータは必要ないので、フラグのデータが書き換えられることに問題は無い。
【００９６】
つまり、“ＡＶＬ”レベルにおけるベリファイの結果がパス（書き込み成功）であった場合、“Ａ”レベルセルに対応するフラグラッチ２３が保持するデータは、“１”に書き換えられる。一方、“ＡＶＬ”レベルにおけるベリファイの結果がフェイル（書き込み失敗又は未完了）であった場合、フラグラッチ２３が保持するデータは、“０”に書き換えられる。例えば、上位／下位データラッチ２１，２２のデータは書き換えられずに、“Ａ”レベルのデータ（“０１”）を保持したままにされる。
【００９７】
次に、“Ａ”レベルのベリファイにおいて、“ＡＶ”レベルにおけるベリファイが実行される（ステップＳＴ２−Ａ３）。ここで、“ＡＶ”レベルのベリファイは、“ＡＶＬ”レベルのベリファイをパス（ＱＬＡＴ＝“１”）したメモリセルのみに、実行してもよいし、パスしたメモリセルとパスしなかったメモリセルの両方に対して、実行してもよい。例えば、“ＡＶ”レベルのベリファイを実行するか否かは、制御回路５又は演算ユニット１２がフラグラッチの保持するデータを参照して、選択される。
【００９８】
“ＡＶ”レベルにおけるベリファイの結果がパスである場合、パスしたメモリセルに対応し、データラッチ（ＵＬＡＴ，ＬＬＡＴ）２１，２２が保持するデータが“０１”のラッチ回路２０に対して、例えば、“１１０”の判定情報（ここでは、パス情報）が転送され、ラッチ回路内の各ラッチに、判定情報が書き込まれる（ステップＳＴ２−Ａ４）。それゆえ、“Ａ”レベルのデータを書き込んだメモリセルに対応するラッチ回路２０において、例えば、上位データラッチ２１のデータは“１”に書き換えられ、下位データラッチ２２のデータは“１”に書き換えられ、フラグラッチ２３のデータは“０”に書き換えられる。
【００９９】
“ＡＶ”レベルにおけるベリファイの結果がフェイルである場合、ベリファイの判定結果はラッチ回路２０に転送されず、データラッチ（ＵＬＡＴ，ＬＬＡＴ）２１，２３及びフラグラッチ２３がそれぞれ保持しているデータが、その状態のまま維持される。
【０１００】
以上のように、“Ａ”レベルに対するベリファイ動作において、ベリファイの結果がパスであるメモリセル（以下、パス・セルとよぶ）に対応するラッチ回路は、“１１０”を保持する。一方、“Ａ”レベルに対するベリファイ動作において、ベリファイの結果がフェイルであるメモリセル（以下、フェイル・セル）に対応するラッチ回路は、“０１０”又は“０１１”のデータを保持する。尚、フェイル・セルに対して、データの書き込みが再度実行される場合もあるので、データラッチ２１，２２のデータは、変更されないことが好ましい。
【０１０１】
“Ａ”レベルに対するベリファイ動作の後、“Ｂ”レベルに対するベリファイ動作が実行される。
【０１０２】
ここで、図６を用いて、“Ｂ”レベルに対するベリファイ動作について、説明する。図６は、本実施形態のフラッシュメモリの“Ｂ”レベルに対するベリファイを模式的に示す図である。尚、“Ａ”レベルに対するベリファイと実質的に同じ動作については、必要に応じて、説明する。
【０１０３】
“Ｂ”レベルは“００”のデータに対応する。それゆえ、“Ｂ”レベルのデータを書き込むメモリセルに対応する上位／下位データラッチ（ＵＬＡＴ，ＬＬＡＴ）２１，２２は、“０”及び“０”のデータを、それぞれ保持する。
【０１０４】
図６に示されるように、“Ｂ”レベルに対するベリファイにおいて、はじめに“ＢＶＬ”レベルにおけるベリファイが実行される（ステップＳＴ２−Ｂ１）。“ＢＶＬ”レベルでのベリファイ結果は、上位／下位データラッチ２１，２２が“Ｂ”レベルを示しているラッチ回路２０に、転送される。
【０１０５】
あるメモリセルに対する“ＢＶＬ”レベルのベリファイ結果がパスである場合、パスしたメモリセルに対応し、データラッチ２２，２３が“００”のデータを保持しているラッチ回路２０に対して、例えば、“１”が転送される。あるメモリセルに対する“ＢＶＬ”レベルを用いたベリファイ結果がフェイルである場合、フェイルしたメモリセルに対応し、且つ、データラッチが保持しているデータが“００”であるラッチ回路２０に対して、例えば、“０”が転送される。
【０１０６】
そして、ラッチ回路２０内にフラグラッチ（ＱＬＡＴ）２３のデータは、フラグから“ＢＶＬ”レベルにおけるベリファイ結果に書き換えられる（ステップＳＴ２−Ｂ２）。
【０１０７】
“ＢＶＬ”レベルにおけるパス・セルに対応するフラグラッチ２３のデータが、“１”に書き換えられる。一方、“ＢＶＬ”レベルにおけるフェイル・セルに対応するフラグラッチ２３のデータは、“０”に書き換えられる。例えば、データラッチ２１，２２のデータは書き換えられずに、“Ｂ”レベルのデータを保持したままにされる。“Ａ”レベルにおけるベリファイと同様に、“Ｂ”レベルにおけるベリファイにおいても、フラグラッチの初期データは不要なので、データが書き換わることに問題ない。
【０１０８】
“ＢＶＬ”レベルのベリファイの後、“ＢＶ”レベルにおけるベリファイが実行される（ステップＳＴ２−Ｂ３）。
【０１０９】
“ＢＶ”レベルにおけるベリファイの結果がパスである場合、パスしたメモリセルに対応し、且つ、データラッチ（ＵＬＡＴ，ＬＬＡＴ）２１，２２が保持するデータが“００”のラッチ回路２０に対して、例えば、“１１１”が転送される。それゆえ、“Ｂ”レベルセルに対応するラッチ回路２０において、例えば、上位データラッチ２１のデータは“１”に書き換えられ、下位データラッチ２２のデータは“１”に書き換えられ、フラグラッチ２３のデータは“１”に書き換えられる。
【０１１０】
“ＢＶ”レベルにおけるベリファイの結果がフェイルである場合、ベリファイの判定結果はラッチ回路２０に転送されず、データラッチ（ＵＬＡＴ，ＬＬＡＴ）２１，２３及びフラグラッチ２３がそれぞれ保持しているデータが、その状態のまま維持される。
【０１１１】
以上のように、“Ｂ”レベルに対するベリファイ動作において、パス・セルに対応するラッチ回路は、“１１１”を保持する。一方、“Ｂ”レベルに対するベリファイ動作において、フェイル・セルに対応するラッチ回路２０は、“０００”又は“００１”のデータを保持する。
【０１１２】
図３に示されるように、“Ａ”レベルと“Ｂ”レベルとは互いに隣り合うしきい値レベル（しきい値分布）である。このような互いに隣り合うしきい値レベルにおいて、図４乃至図６に示されるように、“Ａ”レベルの判定情報（“１１０”）は、“Ｂ”レベルの判定情報（“１１１”）と異なって、設定される。
【０１１３】
“Ｂ”レベルにおけるベリファイ動作の後、“Ｃ”レベルにおけるベリファイ動作が実行される。
【０１１４】
“Ｃ”レベルにおけるベリファイ動作は、ベリファイ動作のパス／フェイルを判定するためのしきい値レベルが異なるのみで、実質的な動作は、“Ａ”レベルにおけるベリファイ動作（図５参照）と同じである。
【０１１５】
“Ｃ”レベルは“１０”のデータに対応する。それゆえ、“Ｃ”レベルのデータを書き込むメモリセルに対応する上位／下位データラッチ（ＵＬＡＴ，ＬＬＡＴ）２１，２２は、“１”及び“０”のデータを、それぞれ保持する。
【０１１６】
“Ｃ”レベルに対するベリファイにおいて、はじめに、電位レベル“ＣＶＬ”におけるベリファイが実行される。“ＣＶＬ”レベルでのベリファイ結果は、上位／下位データラッチ２１，２２が“Ｃ”レベルを示しているラッチ回路２０に、転送される。
【０１１７】
あるメモリセルに対する“ＣＶＬ”レベルを用いたベリファイ結果がパスである場合、パスしたメモリセルに対応し、且つ、データラッチ２２，２３が保持しているデータが“１０”であるラッチ回路２０に対して、例えば、“１”が転送される。あるメモリセルに対する“ＣＶＬ”レベルを用いたベリファイ結果がフェイルである場合、フェイルしたメモリセルに対応し、且つ、データラッチが保持しているデータが“１０”であるラッチ回路２０に対して、例えば、“０”が転送される。そして、ラッチ回路２０内にフラグラッチ（ＱＬＡＴ）２３が保持しているデータは、“ＣＶＬ”レベルにおけるベリファイ結果に書き換えられる。
【０１１８】
つまり、“ＣＶＬ”レベルにおけるパス・セルに対応するフラグラッチ２３のデータが、“１”に書き換えられる。一方、“ＣＶＬ”レベルにおけるフェイル・セルに対応するフラグラッチ２３のデータは、“０”に書き換えられる。例えば、データラッチ２１，２２のデータは書き換えられずに、“Ｃ”レベルのデータ（“１０”）を保持したままにされる。
【０１１９】
それゆえ、“ＣＶＬ”レベルを用いたベリファイ動作において、パス・セルに対応するラッチ回路２０は、“１０１”のデータを保持し、フェイル・セルに対応するラッチ回路２０は、“１００”のデータを保持する。
【０１２０】
“ＣＶＬ”レベルにおけるベリファイ動作の後、“ＣＶ”レベルにおけるベリファイ動作が実行される。
【０１２１】
“ＣＶ”レベルにおけるベリファイの結果がパスである場合、データラッチ２１，２２が保持するデータが“１０”のラッチ回路２０に対して、例えば、“１１０”の判定情報が転送される。それゆえ、パスした“Ｃ”レベルセルに対応するラッチ回路２０において、例えば、上位データラッチ２１のデータは“１”に書き換えられ、下位データラッチ２２のデータは“１”に書き換えられ、フラグラッチ２３のデータは“１”に書き換えられる。
【０１２２】
“ＣＶ”レベルにおけるベリファイの結果がフェイルである場合、ベリファイの結果はラッチ回路２０に転送されず、データラッチ（ＵＬＡＴ，ＬＬＡＴ）２１，２３及びフラグラッチ２３がそれぞれ保持しているデータが、その状態のまま維持される。
【０１２３】
以上のように、“Ｃ”レベルに対するベリファイ動作において、パスの“Ｃ”レベルセルに対応するラッチ回路２０は、“１１１”を保持する。一方、“Ｃ”レベルに対するベリファイ動作において、フェイルの“Ｃ”レベルセルに対応するラッチ回路２０は、“１００”又は“０１１”のデータを保持する。
【０１２４】
したがって、本実施形態のフラッシュメモリにおいて、“Ｃ”レベルにおけるベリファイ（“ＣＶＬ”―“ＣＶ”レベルを用いたベリファイ）をパスした“Ｃ”レベルセルのパス情報は、“Ａ”レベルにおけるベリファイ（“ＡＶＬ”―“ＡＶ”レベルを用いたベリファイ）をパスした“Ａ”レベルのパス情報と同じになる。
【０１２５】
また、本実施形態のフラッシュメモリにおいて、データの書き込み時、データラッチが“１１”のデータを保持している場合、そのデータラッチに対応するメモリセルは、データを書き込まない。それゆえ、データの書き込みが開始されたときに、データラッチ２１，２２のデータが“１１”であれば、そのラッチ回路２０に対応するメモリセルは、“Ｅ”レベルセルとして、データの書き込みが実行されない。また、“Ｅ”レベルにおけるベリファイも実行されない。また、フラグラッチ２３も、“１”のデータを保持している。
【０１２６】
このように、データを書き込まない（初期状態のままの）“Ｅ”レベルセルに対応するラッチ回路２０は、“１１１”のデータを保持するように、設定される。つまり、“Ｅ”レベルセルに対応するラッチ回路２０において、上位データラッチ２１は“１”のデータを保持し、下位データラッチ２２は“１”のデータを保持し、フラグラッチ２３は“１”のデータを保持する。
【０１２７】
このように、“Ｅ”レベルセルの判定情報は、“Ｂ”レベルセルの判定情報と同じになっている。上述のように、“Ｃ”及び“Ａ”レベルセルの判定情報（フラグラッチ２３の情報）は、“Ｂ”及び“Ｅ”レベルセルの判定情報と異なっている。本実施形態において、４値のデータを記憶するメモリセルのパス情報において、４種類のしきい値電圧を取りうるメモリセルを、１ビット（“０”又は“１”）のデータで表現される。
【０１２８】
ここで、フェイルであったメモリセルのしきい値が書き込むべきデータのしきい値レベルになるように、再びデータを書き込んでもよい。但し、パス・セルにデータが書き込まれないように、ビット線及びチャネルの電位を調整することが必要である。
【０１２９】
所定の回数のベリファイが実行された後、各カラムにおいて、上位データラッチ２１の保持する情報と下位データラッチ２２の保持する情報とが、例えば、制御回路６又は演算ユニット１２によって、演算処理される（ステップＳＴ３）。この演算処理は、例えば、“ａｎｄ”演算である。
【０１３０】
パス・セルに対応するデータラッチの場合、上位／下位データラッチの情報は“１１”なので、“ａｎｄ”演算の結果は、“１”になる。フェイル・セルに対応するデータラッチの場合、上位又は下位データラッチの少なくとも一方が“０”の情報を保持するので、“ａｎｄ”演算の結果は、“０”になる。この演算結果が、例えば、下位データラッチ（ＬＬＡＴ）２２に書き込まれる。データラッチの保持する情報は、書き込みがパスかフェイルかを示すデータなので、“ａｎｄ”演算の後、データラッチのデータが書き換えられても問題ない。
【０１３１】
尚、“ａｎｄ”演算が実行されて、データラッチの保持する情報が書き換えられても、フラッグラッチ２３の保持する情報は、外部からのデータに対応するメモリセルのしきい値レベルを示す情報なので、変更されない。それゆえ、書き込みがパスした“Ｃ”及び“Ａ”レベルセルに対応するフラグラッチ２３は、“０”の情報を保持している。また、書き込みがパスした“Ｂ”及び“Ｅ”レベルに対応するフラグラッチ２３は、“１”の情報を保持している。このように、隣り合わないしきい値レベルに対して同じ判定情報が割り付けられ、且つ、隣り合うしきい値レベルに対して異なる判定情報が割り付けられている。各メモリセルに対応するラッチ回路が、その判定情報を保持している。
【０１３２】
したがって、書き込みがパスした“Ｃ”及び“Ａ”レベルセルに対応する下位／フラグラッチ（ＬＬＡＴ，ＱＬＡＴ）２２，２３が保持する情報は、“１０”になっている。書き込みがパスした“Ｂ”及び“Ｅ”レベルセルに対応する下位／フラグラッチ（ＬＬＡＴ，ＱＬＡＴ）２２，２３が保持する情報は、“１１”になっている。
【０１３３】
互いに隣り合わないしきい値レベルに共通な判定情報は、データの書き込み結果に対応し、例えば、データの書き込みがパスであるかフェイルであるかを示す情報と、データの書き込みがパスした時点でのメモリセルが記憶しているデータを示す情報とを含んでいる。
【０１３４】
各ベリファイレベルにおける判定情報がラッチ回路２０に書き込まれた後、制御回路６は、データの書き込みの不良ビット数Ｎｐが、不良に対する許容ビット数Ｎ１を満たすか否か判定する（ステップＳＴ４）。許容ビット数Ｎ１は、１ページあたりの許容ビット数でもよいし、１ブロックあたりの許容ビット数でもよいし、各しきい値レベル（各データ）あたりの許容ビット数でもよい。
【０１３５】
本実施形態において、上位データラッチ（ＵＬＡＴ）及び下位データラッチ（ＬＬＡＴ）の保持する情報（ＵＬＡＴ，ＬＬＡＴ）が、“１１”である場合、そのラッチに対応するメモリセルは、ベリファイパス（書き込みパス）である。そして、ステップＳＴ３において、上位データラッチの値と下位データラッチの値とが、“ａｎｄ”演算され、その演算結果は、下位データラッチ２２に書き込まれる。つまり、下位データラッチ２２が保持する情報が“０”になっていると、そのラッチに対応するメモリセルは、不良ビットである。  
それゆえ、本実施形態のフラッシュメモリ１は、“０”のデータを保持している下位データラッチ（ＬＬＡＴ）２１の個数をカウントすることで、不良ビット数Ｎｐを簡便に検知できる。
【０１３６】
不良ビット数Ｎｐが、許容ビット数Ｎ１より大きい場合（Ｎｐ＞Ｎ１の場合）、データの書き込みはフェイルであると判定される。この場合、例えば、同一のブロックに対して、ステップＳＴ１からステップＳＴ４の動作によって、データの書き込みが再度実行される。尚、ステップＳＴ１からステップＳＴ４の動作が所定の回数繰り返されても、不良ビット数Ｎｐが許容ビット数Ｎ１以下にならない場合、例えば、データを書き込むブロックを、他のブロックに変更して、データの書き込みを実行してもよい。
【０１３７】
不良ビット数Ｎｐが許容ビット数Ｎ１以下である場合（Ｎｐ≦Ｎ１の場合）、データの書き込みがパスであると判定され、選択ページ又は選択ブロックに対するデータの書き込みが終了する。
【０１３８】
例えば、ステップＳＴ４で得られた不良ビット数Ｎｐは、１回の書き込みシーケンスが完了するまで、制御回路６が保持していてもよい。
【０１３９】
不良ビット数が許容値を満たしていた場合、ベリファイ読み出しが実行される（ステップＳＴ５）。
【０１４０】
例えば、ステップＳＴ５において、ベリファイ読み出しのチェック対象となるメモリセルは、上記のステップＳＴ２において、書き込みがパスしたメモリセルである。つまり、ステップＳＴ３において、“１”（パス情報）を保持する下位データラッチ２２に対応したメモリセルに対して、ベリファイ読み出しが実行される。ステップＳＴ５において、“０”（フェイル情報）を保持する下位データラッチ２２に対応したメモリセルに対して、ベリファイ読み出しは実行されない。これによって、全てのメモリセルにベリファイ読み出しを実行する場合に比較して、ベリファイ読み出しが高速に実行され、消費電力も低減される。
【０１４１】
本実施形態において、ベリファイ読み出しは、“Ｃ”レベル、“Ｂ”レベル及び“Ａ”レベルの順序で実行される。但し、この順序に限定されず、例えば、“Ａ”レベル、“Ｂ”レベル及び“Ｃ”レベルの順序で、ベリファイ読み出しが実行されてもよい。
【０１４２】
ベリファイ読み出しの判定レベルとして、例えば、読み出しレベルＣＲ，ＢＲ，ＡＲが用いられ、“Ｃ”、“Ｂ”及び“Ａ”読み出しが実行される。但し、各しきい値分布の高電位端及び低電位端などのように、狭い範囲におけるベリファイを行って、データの書き込みの精度及び信頼性の向上を図るために、ステップＳＴ５において、“ＣＢＨ”−“ＣＶ”レベル、“ＢＶＨ”−“ＢＶ”レベル及び、“ＡＶＨ”−“ＡＶ”レベルでベリファイを行ってもよい。ステップＳＴ５において、ベリファイ読み出しの判定レベルとして、“ＣＶＬ”、“ＢＶＬ”及び“ＡＶＬ”レベルを用いてもよいのは、もちろんである。
【０１４３】
本実施形態のフラッシュメモリのベリファイ読み出しに関して、図７を用いて、説明する。図７は、本実施形態のフラッシュメモリのベリファイ読み出しの動作を、模式的に示している。
【０１４４】
図７の（ａ）は、“Ｃ”レベルにおけるベリファイ読み出しを示している。
【０１４５】
“Ｃ”レベルのベリファイ読み出しにおいて、“ＣＲ”レベルが判定レベルとして用いられ、“Ｃ”読み出しが実行される。
【０１４６】
“ＣＲ”レベルの電位が選択されたワード線ＷＬに印加された場合に、そのワード線に接続されたメモリセルがオンするか否か（ビット線の電位が変動するか否か）によって、それらのメモリセルＭＣが、“Ｃ”レベルセルかそれ以外のメモリセルか判別される。
【０１４７】
“Ｃ”レベルのメモリセルＭＣのしきい値電位は、“ＣＲ”レベルの電位より高いので、“ＣＲ”レベルの電位がワード線に印加されても、“Ｃ”レベルセルは、オフしている。  
一方、“Ｂ”レベルセル、“Ａ”レベルセル、及び“Ｅ”レベルセルのしきい値電位は、“ＣＲ”レベルの電位より低いので、オンする。このように、ある判定レベル（ワード線の電位）によって、メモリセルがオン又はオフしたかを判別される。
【０１４８】
本実施形態のフラッシュメモリのベリファイ読み出しにおいて、あるベリファイ対象のメモリセルのしきい値分布（ここでは、“Ｃ”レベル）の下端以下の判定レベル（ここでは、“ＣＲ”レベル）が用いられた場合、オフしたメモリセルに対して“１”の情報が割り付けられ、オンしたメモリセルに対して“０”の情報が割り付けられる。
【０１４９】
そして、オフしたメモリセルＭＣに対応するラッチ回路２０に、“１”が転送され、その上位データラッチ（ＵＬＡＴ）２１に、“１”が書き込まれる。“Ｃ”読み出しでオンしないメモリセルは、“Ｃ”レベルセル。一方、オンしたメモリセルＭＣに対応するラッチ回路２０に、“０”が転送され、上位データラッチ２１に、“０”が書き込まれる。“Ｃ”読み出しでオンするメモリセルは、“Ｂ”、“Ａ”及び“Ｅ”レベルセルである。
【０１５０】
データの書き込み及び許容値の判定後なので、上位データラッチが保持しているデータを、ベリファイ読み出しの結果に書き換えることに問題ない。
【０１５１】
ここで、ステップＳＴ１〜ＳＴ３において、“Ｃ”レベルセルと判定されたメモリセルに対応するフラグラッチ２３は、“０”の情報を保持し、“Ｂ”及び“Ｅ”レベルセルと判定されたメモリセルに対応するフラグラッチ２３は、“１”の情報を保持する。また、“Ａ”レベルセル判定されたメモリセルも、“Ｃ”レベルセルと同様に、メモリセルに対応するフラグラッチ２３が“０”の情報を保持している。
【０１５２】
“Ｃ”レベルにおけるベリファイ読み出しの結果（上位データラッチＵＬＡＴが保持する情報）とフラグラッチ（ＱＬＡＴ）２３が保持する情報とが、比較される。
【０１５３】
（ＵＬＡＴ，ＱＬＡＴ）の情報が（０，０）の場合、上位データラッチ（ＵＬＡＴ）の情報（“０”）は、“Ｂ”、“Ａ”又は“Ｅ”レベルセルを示し、フラグラッチ（ＱＬＡＴ）の情報（“０”）は、“Ｃ”又は“Ａ”レベルセルを示す。それゆえ、（ＵＬＡＴ，ＱＬＡＴ）＝（０，０）のラッチに対応するメモリセルは、“Ａ”レベルセルの可能性があるため、制御回路６（又は演算ユニット１２）は、データの書き込み（ベリファイ読み出し）がパスであると判定する。
【０１５４】
（ＵＬＡＴ，ＱＬＡＴ）の情報が（０，１）の場合、上位データラッチ（ＵＬＡＴ）の情報（“０”）は、“Ｂ”、“Ａ”又は“Ｅ”レベルセルを示し、フラグラッチの情報（“１”）は、“Ｂ”又は“Ｅ”レベルセルを示す。それゆえ、（ＵＬＡＴ，ＱＬＡＴ）＝（０，１）のラッチに対応するメモリセルは、“Ｂ”又は“Ｅ”レベルセルの可能性があるので、制御回路６は、ベリファイがパスと判定する。
【０１５５】
（ＵＬＡＴ，ＱＬＡＴ）の情報が（１，０）の場合、上位データラッチ（ＵＬＡＴ）の情報（“１”）は、“Ｃ”レベルセルを示し、フラグラッチの情報（“０”）は、“Ａ”又は“Ｃ”レベルセルを示す。それゆえ、（ＵＬＡＴ，ＱＬＡＴ）＝（１，０）のラッチに対応するメモリセルは、“Ｃ”レベルセルであるため、制御回路６は、パスと判定する。
【０１５６】
（ＵＬＡＴ，ＱＬＡＴ）の情報が（１，１）の場合、上位データラッチ（ＵＬＡＴ）の情報（“１”）は、“Ｃ”レベルセルを示し、フラグラッチの情報（“１”）は、“Ｂ”又は“Ｅ”レベルセルを示す。この場合、ベリファイ読み出しの結果と書き込まれたデータとが一致していない。それゆえ、（ＵＬＡＴ，ＱＬＡＴ）＝（１，１）のラッチに対応するメモリセルは、データの書き込みがフェイルであると、制御回路６又は演算ユニット１２が判定する。
【０１５７】
例えば、“１”を示すフェイル情報が、書き込みがフェイルと判定されたメモリセルに対応するラッチ回路２０に転送され、そのフェイル情報がラッチ回路２０内の下位データラッチ（ＬＬＡＴ）２２に書き込まれる。尚、ここでのパス情報は“０”を示す。
【０１５８】
ベリファイ読み出しにおけるフェイル情報は、例えば、制御回路６又は演算ユニット１２が、（ＵＬＡＴ，ＱＬＡＴ）のデータを演算（比較）することによって、得られる。
【０１５９】
フラグラッチ２３のデータは、ステップＳＴ２及びＳＴ３のフローにおいて、書き込みがパスしたメモリセルの記憶するデータに対応している。
【０１６０】
このように、ページバッファ内のラッチがベリファイの判定結果を一時的に保持し、ベリファイ読み出しの結果を、データの書き込みがパスしたメモリセルが記憶すべきデータと、比較することによって、書き込みがパスと判定された後に、メモリセルのしきい値が変動する不良を検知できる。
【０１６１】
“Ｃ”レベルにおけるベリファイ読み出しの後、“Ｂ”レベルにおけるベリファイ読み出しが実行される。
【０１６２】
図７の（ｂ）は、“Ｂ”レベルにおけるベリファイ読み出しを示している。
【０１６３】
本実施形態のフラッシュメモリの動作において、“Ｂ”レベルにおけるベリファイ読み出しは、“Ｂ”読み出しと“Ｃ”読み出しとによって、実行される。
【０１６４】
“Ｂ”レベルにおけるベリファイ読み出しにおいて、まず、“Ｃ”読み出しが実行される。これによって、“Ｃ”レベルセル（オフのメモリセル）に対応する上位データラッチ（ＵＬＡＴ）２１に、“０”が転送され、“Ｂ”レベルセル（オンしたメモリセル）に対応する上位データラッチ２１に、“１”が転送される。ここで、メモリセルのオンが“０”で示され、メモリセルのオフが“１”で示される場合、“Ｃ”読み出しにおける読み出し結果は、それらが“ｎｏｔ”演算された（反転された）値に相当する。このように、本実施形態のフラッシュメモリのベリファイ読み出しにおいて、ベリファイ対象のメモリセルのしきい値分布（ここでは、“Ｂ”レベル）の上端以上の判定レベル（ここでは、“ＣＲ”レベル）が用いられた場合、オフしたメモリセルに対して、その結果（“１”）を反転させた（“ｎｏｔ”演算した）情報（“０”）が割り付けられ、オンしたメモリセルに対して、その結果（“０”）を反転させた情報（“１”）が割り付けられる。そして、それらのメモリセルに対応する上位データラッチに、判定結果が書き込まれる。
【０１６５】
“Ｂ”レベルのベリファイ読み出しにおいて、“Ｃ”読み出しの後、“Ｂ”読み出しが実行される。“Ｂ”読み出しで、オフのメモリセルは、“Ｂ”及び“Ｃ”レベルセルであり、オンしたメモリセルは、“Ａ”及び“Ｅ”レベルセルである。オフのメモリセル（“Ｂ”レベルセル）には、“１”が割り付けられ、オンのメモリセル（“Ａ”レベルセル）には、“０”が割り付けられる。制御回路５又は演算ユニット１２は、“Ｂ”読み出しの結果と上位データラッチ２１が保持する“Ｃ”読み出しの結果とを、演算処理（例えば、“ａｎｄ”演算）する。この演算結果が“１”であるメモリセルが、“Ｂ”レベルセルであると、判定される。演算結果が“０”であるメモリセルは、“Ｂ”レベルセル以外である。これらの演算結果は、例えば、上位データラッチ２１にそれぞれ書き込まれる。
【０１６６】
“Ｃ”及び“Ｂ”読み出しの演算結果が、フラグラッチ（ＱＬＡＴ）２３の保持する情報と比較される。上記のように、フラグラッチ２３の情報が、“１”であると、そのラッチ２３に対応するメモリセルは“Ｂ”又は“Ｅ”レベルセルであり、“０”であると、そのラッチに対応するメモリセルは、“Ｃ”又は“Ａ”レベルセルである。
【０１６７】
“Ｃ”及び“Ｂ”読み出しの演算結果が“０”であった場合、その結果に対応するメモリセルは、“Ｃ”、“Ａ”及び“Ｅ”レベルであるため、フラグラッチ２３の情報が“０”であっても、“１”であっても、パスと判定される。
【０１６８】
“Ｃ”及び“Ｂ”読み出しの演算結果が“１”であった場合、その結果は、“Ｂ”レベルセルのみに対応する。フラグラッチ２３の保持する情報が“１”である場合、データの書き込み時の判定結果とベリファイ読み出し時の判定結果が一致し、これとは反対に、フラグラッチ２３の保持する情報が“０”である場合、２つの判定結果が矛盾する。それゆえ、（ＵＬＡＴ，ＱＬＡＴ）の情報が（１，１）の場合、データの書き込み（ベリファイ）がパスと判定される。一方、（ＵＬＡＴ，ＱＬＡＴ）の情報が（１，０）の場合、データの書き込みがフェイルと判定される。これらの判定結果に基づいて、フェイル情報が、ラッチ回路２０に転送され、“１”のデータが下位データラッチ（ＬＬＡＴ）２２に書き込まれる。
【０１６９】
“Ｃ”及び“Ｂ”レベルのベリファイ読み出しと実質的に同様に、“Ａ”レベル及び“Ｅ”レベルのベリファイ読み出しが実行される。
【０１７０】
“Ａ”レベルのベリファイ読み出しは、“Ｂ”レベルのベリファイ読み出しと同様に、２つの読み出しレベルを用いて、実行される。すなわち、“Ａ”レベルのベリファイ読み出しにおいて、
“Ｂ”読み出しと“Ａ”読み出しが実行される。そして、それらの読み出しの演算結果とフラグラッチ（ＱＬＡＴ）２３の保持する情報とが比較され、メモリセルが所定のデータ（ここでは、“０１”）を記憶しているか否かが検証される。その結果がフェイルであった場合、つまり、（ＵＬＡＴ，ＱＬＡＴ）の情報が（１，１）であった場合、フェイル情報（“０”）がそのメモリセルに対応する下位データラッチに書き込まれる。これ以外の場合は、データの書き込み（ベリファイ）がパスである。
【０１７１】
“Ｅ”レベルのベリファイ読み出しは、“Ａ”読み出しによって、実行される。ここで、“ＡＲ”レベルにおいて、オンしたメモリセルが“Ｅ”レベルセルであり、オフのメモリセルは“Ｃ”、“Ｂ”及び“Ａ”レベルセルである。オンしたメモリセルに対応する上位データラッチ２１に対して、“１”が書き込まれ、オンしなかったメモリセルに対応する上位データラッチ２１に対して、“０”が書き込まれる。そして、上位データラッチ２１が保持する“Ａ”読み出しの結果とフラグラッチ２３が保持する判定情報とが比較され、メモリセルが所定のデータ（ここでは、“１１”）を記憶しているか否か検証される。その結果がフェイルであった場合、つまり、（ＵＬＡＴ，ＱＬＡＴ）の情報が（１，０）であった場合、フェイル情報（“０”）がそのメモリセルに対応する下位データラッチに書き込まれる。
【０１７２】
以上のように、各しきい値レベルに対するベリファイ読み出しが実行され、書き込みの結果（ＱＬＡＴの保持する情報）とベリファイ読み出し結果とが一致しない場合に、フェイル情報が、ラッチ回路２０内のデータラッチに書き込まれる。
【０１７３】
各レベルにおけるベリファイ読み出しの結果に基づいて、不良ビット数Ｎｘが不良に対する許容ビット数Ｎ２以下か否か判定される（ステップＳＴ６）。  
ステップＳＴ６における不良ビット数Ｎｘは、例えば、ステップＳＴ４における書き込み時の不良ビット数Ｎｐとベリファイ読み出しによって検出された不良ビット数Ｎｒの合計値である。ステップＳＴ６における許容ビット数Ｎ２の大きさは、ステップＳＴ４における許容ビット数Ｎ１の大きさと異なっていてもよいし、同じでもよい。
【０１７４】
例えば、不良ビット数Ｎｘは、フェイル情報を示す“０”データを保持する下位データラッチ２１の個数をカウントすることによって、得られる。
【０１７５】
不良ビット数Ｎｘが許容ビット数Ｎ２より大きい場合（Ｎｘ＞Ｎ２の場合）、書き込みがフェイルと判定される（ステップＳＴ８）。この場合、例えば、データを書き込むブロックが変更され、他のブロックの所定のページに、同じデータがステップＳＴ１〜ＳＴ４と同様の動作によって書き込まれる。データの書き込みがフェイルであったブロックは、他の書き込みシーケンスで用いられてもよいし、バッドブロックとして処理されてもよい。
【０１７６】
不良ビット数Ｎｘが不良許容ビット数Ｎ２以下であった場合（Ｎｘ≦Ｎ２の場合）、データの書き込みがパスと判定される（ステップＳＴ７）。これによって、選択されたページ又はブロックに対する書き込みシーケンスは、終了する。
【０１７７】
図４に示されるステップＳＴ１〜ＳＴ８の動作によって、本実施形態におけるフラッシュメモリ（例えば、多値ＮＡＮＤ型フラッシュメモリ）の書き込み動作及びそのベリファイ動作が完了する。
【０１７８】
尚、上述の例において、ステップＳＴ４及びステップＳＴ６における不良に対する許容ビット数Ｎ１，Ｎ２は、全てのしきい値レベルにおける総許容ビット数として、設定されている場合について、述べている。しかし、各しきい値レベルに対して、許容ビット数を設定してもよい。この場合、総不良ビット数Ｎｐが総許容ビット数Ｎ１以下であっても、あるしきい値レベルの不良ビット数が、そのしきい値レベルに対して設定された許容ビット数より大きければ、書き込みフェイルと判定される。
【０１７９】
このように、しきい値レベル毎に許容ビット数が設定されることによって、例えば、“Ａ”レベルに対する許容ビット数Ｎ１Ａ及び“Ｂ”レベルに対する不良許容ビット数Ｎ１Ｂが小さくされた場合、“Ａ”レベルセルや“Ｂ”レベルセルに対して、信頼性の高い書き込みを実行できる。これに伴って、“Ｃ”レベルに対する不良許容ビット数Ｎ１Ｃは大きくでき、“Ｃ”レベルに対する書き込みは、書き込みの信頼性よりも書き込みの速度を優先できる。各しきい値レベルに対して異なる不良許容ビット数を設定することによって、“Ａ”及び“Ｂ”レベルに対する書き込みの精度を向上でき、それと同時に、“Ｃ”レベルに対する書き込みの高速化を実現できる。
【０１８０】
また、ステップＳＴ６の許容ビット数Ｎ２において、隣り合わない２以上のしきい値レベルのグループ毎に、許容ビット数が設定されてもよい。例えば、“Ｃ”及び“Ａ”レベルのグループに対して、不良に対する許容ビット数Ｎ２ＡＣが設定され、“Ｂ”及び“Ｅ”レベルのグループに対して、不良に対する許容ビット数Ｎ２ＢＥが設定される。これによって、多値フラッシュメモリの書き込み精度が向上する。
【０１８１】
以上のように、本実施形態のフラッシュメモリにおいて、隣り合わないしきい値レベルに対して、共通の判定情報が割り付けられる。そして、互いに隣り合うしきい値レベルに対して、異なる判定情報が設定されている。
【０１８２】
また、同じ判定情報が割り付けられたメモリセル（例えば、“Ｃ”及び“Ａ”レベルセル）において、上位／下位データラッチ２１，２２が保持する情報は、パス／フェイルのビット（メモリセル）を示す。それゆえ、図４のステップＳＴ２及びステップＳＴ３において、データラッチ及びフラグラッチの値を参照することによって、しきい値レベル毎の不良ビット数をそれぞれカウントできる。
【０１８３】
ページバッファ内のラッチに保持されたこれらの値を、ベリファイ読み出しの結果と対応させて、本実施形態のフラッシュメモリ１は、データの書き込みの成否（パス／フェイル）を判定する。
【０１８４】
これによって、セル間干渉、書き込み不良又は読み出しディスターブに起因して、あるメモリセルのしきい値レベルが隣接するしきい値レベルに遷移する不良を、検出できる。これによって、フラッシュメモリの信頼性が、向上する。
【０１８５】
また、本実施形態のフラッシュメモリにおいて、判定情報を保持させるために、既存のラッチを用い、それらのラッチが保持する情報（データ／フラグ）を、ベリファイの判定結果に順次書き換える。そのため、本実施形態のフラッシュメモリは、隣り合わないしきい値レベルに割り付けた判定情報を保持するための専用のラッチを、新たな構成に追加する必要が無い。
【０１８６】
したがって、本実施形態のフラッシュメモリ及びその動作によれば、回路規模を増大させずに、動作の信頼性の高いメモリを提供できる。
【０１８７】
本実施形態のフラッシュメモリは、その動作がデータの書き込みからベリファイへ動作が移行するに伴って、ページバッファのラッチ回路２０に設けられたデータラッチ２１，２２及びフラグラッチ２３の保持する情報を書き換えて、データの書き込みの成否を判定する。このように、本実施形態のフラッシュメモリは、外部のコントローラを用いずに、データの書き込みの成否（パス／フェイル）を判定できる。それゆえ、本実施形態のフラッシュメモリは、メモリチップ及び外部コントローラ間のデータの転送を実行せずに、外部からのデータとメモリセルに書き込まれたデータとが一致するか否か検証できる。  
したがって、本実施形態のフラッシュメモリは、データ転送の劣化を抑制できる。
【０１８８】
また、書き込み不良がベリファイによって検知できない場合を考慮すると、ＥＣＣを用いて、メモリの信頼性を確保する必要がある。この場合、フラッシュメモリ内のＥＣＣ（回路の回路規模が増大してしまう。
【０１８９】
これに対して、本実施形態のフラッシュメモリは、メモリセルのしきい値レベルがそのしきい値レベルに隣り合うしきい値レベルにシフトするのを検知でき。そのため、ベリファイによって検知できない不良を低減できる。それゆえ、本実施形態のフラッシュメモリは、ＥＣＣ回路の回路規模の増大を抑制できる。
【０１９０】
以上のように、本実施形態のフラッシュメモリによれば、回路構成の変更なしに、メモリの信頼性を向上できる。
【０１９１】
（ｃ）  変形例  
図８を用いて、第１の実施形態に係るフラッシュメモリの変形例について、説明する。
【０１９２】
図４乃至図７を用いて説明した例では、“Ｃ”書き込み時、“ＣＶＬ”レベルでのベリファイを行って、“Ｃ”レベルセルに対するベリファイを実行している。しかし、フラッシュメモリにおいて、“Ｃ”書き込みに対するフラグが入力されず、“ＣＶＬ”レベルでのベリファイが実行されない場合もある。この場合のように、“Ｃ”書き込み時にベリファイを実行しない場合についても、図４乃至７を用いて説明したフラッシュメモリと同様に、ラッチの個数の増大や外部コントローラの使用なしに、信頼性の高い動作を実行できる。
【０１９３】
図８は、各しきい値レベルとそれに対応する判定情報の一例を示している。
【０１９４】
例えば、選択セルに対する“Ａ”書き込み時、その書き込みがパスしたメモリセルに対応するラッチ回路２０に対して、判定情報が転送される。
【０１９５】
そして、図８に示されるように、“Ａ”レベルセルに対応するラッチ回路のデータラッチ（ＵＬＡＴ，ＬＬＡＴ）及びフラグラッチ（ＱＬＡＴ）に、（ＵＬＡＴ，ＬＬＡＴ，ＱＬＡＴ）＝（１，１，０）の判定情報が、それぞれ書き込まれる。
【０１９６】
また、選択セルに対する“Ｂ”書き込み時、その書き込みがパスしたメモリセルに対応するデータラッチ及びフラグラッチに、（ＵＬＡＴ，ＬＬＡＴ，ＱＬＡＴ）＝（１，０，１）の判定情報が、それぞれ書き込まれる。
【０１９７】
さらに、選択セルに対する“Ｃ”書き込み時、その書き込みがパスしたメモリセルに対応するラッチ回路２０のデータラッチ及びフラグラッチに、（ＵＬＡＴ，ＬＬＡＴ，ＱＬＡＴ）＝（１，１，１）の判定情報が、それぞれ書き込まれる。
【０１９８】
これら以外の判定情報は、書き込みフェイルのメモリセルを示す。
【０１９９】
データの書き込みが終了した後、ベリファイ読み出しが実行される前に、下位データラッチ（ＬＬＡＴ）が保持する情報及びフラグラッチ（ＱＬＡＴ）が保持する情報が、それぞれ変換される。
【０２００】
例えば、図８に示されるように、“Ａ”レベルを記憶すべきメモリセルに対応する２つのラッチ（ＬＬＡＴ，ＱＬＡＴ）が保持する情報は、（０，１）に変換される。“Ｂ”レベルを記憶すべきメモリセルに対応する２つのラッチ（ＬＬＡＴ，ＱＬＡＴ）が保持する情報は、（１，０）に変換される。また、“Ｃ”及び“Ｅ”レベルを記憶すべきメモリセルに対応する２つのラッチ（ＬＬＡＴ、ＱＬＡＴ）が保持する情報は、（１，１）に変換される。
【０２０１】
さらに、書き込みフェイルであったメモリセルに対応する２つのラッチ（ＬＬＡＴ，ＱＬＡＴ）が保持する情報は、（０，０）に変換される。判定情報が変換されるとき、上位データラッチ（ＵＬＡＴ）の保持する情報は、“０”又は“１”のいずれの状態でもよい。
【０２０２】
判定情報が変換された後、図４のステップＳＴ４からステップＳＴ８の動作が実行される。これらの書き込み結果とベリファイ読み出しの結果とを比較し、一致しない場合に、２つのラッチ（ＬＬＡＴ，ＱＬＡＴ）が保持する情報を、（０，０）に書き換える。これによって、検出された書き込み不良の総数をカウントできる。
【０２０３】
図８に示されるように判定情報を割り付けた場合においても、図４乃至図７に示される例と同様に、隣り合わないしきい値レベルに対して共通の判定情報が割り付けられ、所定のデータが書き込まれなかったメモリセルを検出できる。
【０２０４】
図４乃至図７に示される例について、４値（２ビット）の多値フラッシュメモリを用いて説明したが、３ビット以上のデータを扱う多値フラッシュメモリに対しても、図４乃至７に示される動作と実質的に同じ動作を実行できる。
【０２０５】
例えば、８値メモリにおいて、“Ｃ”〜“Ａ”レベル及び消去レベル（ここでは、“Ｅｒ”レベルとよぶ）に加え、“Ｄ”、“Ｅ”、“Ｆ”及び“Ｇ”レベルが、メモリセルのしきい値レベル（しきい値分布）として、記憶すべきデータ（“０００”〜“１１１”）に対応して設定される。
【０２０６】
８値のフラッシュメモリの場合、３つのデータラッチ（ＵＬＡＴ，ＭＬＡＴ，ＬＬＡＴ）と１つのフラグラッチ（ＱＬＡＴ）とが、ページバッファ５のラッチ回路２０内に、設けられる。
【０２０７】
例えば、“Ｅｒ”（消去）レベルに対するフラグ（ＱＰＷ情報）が無いとすれば、“Ｅｒ”、“Ｂ”、“Ｄ”及び“Ｆ”レベルセルに同じ判定情報を割り付け、“Ａ”、“Ｃ”、“Ｅ”及び“Ｇ”レベルセルに同じ判定情報を割り付けることによって、データの書き込み後においても、それらの判定情報をラッチ回路内に保持できる。
【０２０８】
これによって、上述の例と同様に、データの書き込みの不良を検出できる。
【０２０９】
また、図８に示される例と同様に、８値のデータを記憶するメモリセルにおいて、最上位のしきい値レベルに対して、ＱＰＷモードによるベリファイを実行しない場合、以下のように、判定情報を割り付けることによって、上述の例と同様に、信頼性の高いフラッシュメモリを実現できる。
【０２１０】
例えば、“Ａ”、“Ｄ”及び“Ｇ”レベルセルに対して、同じ判定情報が設定される。“Ａ”、“Ｄ”及び“Ｇ”レベルセルに対する判定情報は、（ＵＬＡＴ，ＭＬＡＴ，ＬＬＡＴ，ＱＬＡＴ）＝（０，１，１，０）に設定される。また、“Ｂ”及び“Ｅ”レベルセルに対して、同じ判定情報が設定される。“Ｂ”及び“Ｅ”レベルセルに対する判定情報は、（ＵＬＡＴ，ＭＬＡＴ，ＬＬＡＴ，ＱＬＡＴ）＝（１，１，１，０）に設定される。“Ｅｒ”、“Ｃ”及び“Ｆ”レベルに対して、同じ判定情報が設定される。“Ｅｒ”、“Ｃ”及び“Ｆ”レベルセルに対する判定情報は、（ＵＬＡＴ，ＭＬＡＴ，ＬＬＡＴ，ＱＬＡＴ）＝（１，１，１，１）に設定される。
【０２１１】
そして、８値のメモリセルおいて、図８に示される４値のメモリセルと同様に、隣り合わない２以上のしきい値レベル（しきい値分布）を１つのグループとして３つ以上のグループを設定し、ラッチ回路内の複数のラッチのデータに対して変換処理を実行することによって、パス／フェイル情報がそれぞれ得られる。
【０２１２】
このように、８値のフラッシュメモリに対して、メモリセルが記憶するデータを判定するための判定情報が、隣り合わないしきい値レベル毎に同じになるように設定される。隣り合うしきい値レベルは、判定情報が異なっている。
【０２１３】
これらの判定情報は、上述のラッチの保持する情報（データ）の演算や書き込み後の変換によって、フェイル又はパスを示す情報に書き換えられる。
【０２１４】
これによって、４値のフラッシュメモリと実質的に同様に、データの書き込み不良を検出できる。
【０２１５】
８値のフラッシュメモリのように、１つのメモリセルに書き込まれるデータのビット数が大きくなれば、データに対応するしきい値分布の範囲が小さくなる。そのため、あるデータの対応するメモリセルのしきい値電位が、隣接する他のデータに対応するしきい値分布にシフトする可能性が高くなる。
【０２１６】
それゆえ、１つのメモリセルが記憶するデータのビット数が増大するにしたがって、第１の実施形態のように、隣り合わないしきい値分布に対して記憶するデータを判定する情報を割り付けることによって、書き込み不良及び読み出しディスターブを検出することは、有効になる。
【０２１７】
ここでは、４値（２ビット）以上のデータを記憶するメモリセルとして、８値のメモリセルを例示しているが、１６値、３２値のメモリセルなどにも、本実施形態が適用可能なのは、もちろんである。
【０２１８】
以上のように、第１の実施形態の変形例に係るフラッシュメモリも、回路構成の変更なしに、フラッシュメモリの信頼性を向上できる。
【０２１９】
（２）  第２の実施形態  
図９を用いて、第２の実施形態に係るフラッシュメモリについて説明する。尚、本実施形態のフラッシュメモリの回路構成は、第１の実施形態のフラッシュメモリの構成（図１乃至図３参照）と同じであるため、ここでの説明は省略する。
【０２２０】
図３に示されるように、データの読み出しに用いられる読み出し電位ＶＲＥＡＤの大きさは、データに対応する複数のしきい値レベル（しきい値分布）に対して、最上位のしきい値レベル（図３では、“Ｃ”レベル）以上の大きさに設定されている。
【０２２１】
フラッシュメモリにおいて、メモリセルのしきい値電圧が所定のデータに対応するしきい値レベルからそのしきい値レベルに隣接する他のしきい値レベルへ遷移する不良のほかに、例えば、“Ｃ”レベルに書き込むべきメモリセルのしきい値が、読み出しコマンドに基づくデータの読み出し時に用いられる読み出し電位ＶＲＥＡＤ以上になる不良が存在する。
【０２２２】
データの書き込み時において、メモリセルのしきい値が読み出し電位ＶＲＥＡＤ以上になると、セル間の相互干渉によって、そのセルと同じセルユニット内の全てのメモリセルが、“Ｃ”レベルのしきい値レベルに存在してしまう場合がある。
【０２２３】
しきい値電位が読み出し電位ＶＲＥＡＤ以上のメモリセルにおいて、例えば、“Ａ”レベルで書き込むべきメモリセルであるにもかかわらず、メモリセルのしきい値レベルが、“ＡＶ”レベルより大きい“Ｃ”レベル以上に存在するかのように判定されるため、実際には不良（フェイル）であっても、正常にデータが書き込まれた場合と同様の扱いになってしまう場合もある。
【０２２４】
さらに、データの読み出し時、あるメモリセルのしきい値電位が読み出し電位ＶＲＥＡＤ以上になると、読み出し電位ＶＲＥＡＤがワード線に供給されてもオンしないメモリセルが、存在する。そのため、読み出し電位ＶＲＥＡＤ以上のしきい値レベルのメモリセルを含むメモリセルユニットにおいて、メモリセルユニット内のメモリセルが“Ｃ”レベル以外のデータを記憶していても、そのセルユニット内の全てのメモリセルが、“Ｃ”レベルセルと判定されてしまう場合がある。
【０２２５】
これらの不良を抑制するために、第２の実施形態のフラッシュメモリは、ワード線に読み出し電位ＶＲＥＡＤを印加したベリファイ読み出しを実行する。読み出し電位ＶＲＥＡＤが印加された場合に、オンしないメモリセルは、そのしきい値電位が読み出し電位ＶＲＥＡＤ以上になっている。これによって、どのレベルのデータを書き込んだかを判別しなくとも、読み出し電位ＶＲＥＡＤ以上にしきい値電位のメモリセルを検出でき、そのセルを不良として判定できる。
【０２２６】
例えば、書き込み不良のメモリセルの個数（ビット数）と読み出し電位ＶＲＥＡＤ以上のしきい値電位のメモリセルの個数との合計値が、所定の許容ビット数以下であれば、書き込みパスと判定される。
【０２２７】
以下、図９を用いて、第２の実施形態のフラッシュメモリの動作について、説明する。
【０２２８】
まず、第１の実施形態のフラッシュメモリにおける図４のステップＳＴ１と同様に、データラッチ２１，２２に、外部からのデータが転送され、例えば、ＱＰＷモードを用いたデータの書き込みが開始する（ステップＳＴ１１）。
【０２２９】
そして、データの書き込み時に、“ＡＶＬ”、“ＡＶ”又は“ＡＶＨ”などの判定レベルを用いたベリファイによって、データの書き込みがパスであると判定された場合、パス情報がラッチ回路２０へ転送される。パス情報は、“１１”のデータとして、外部からのデータを保持していた上位データラッチ（ＵＬＡＴ）２１及び下位データラッチ（ＬＬＡＴ）２２に、それぞれ１ビット（“１”）ずつ上書きされる（ステップＳＴ１２）。
【０２３０】
データの書き込みが終了した後、保持している情報がパス情報（“１１”）以外の上位／下位データラッチ２１，２２において、その下位データラッチ２２に“０”が書き込まれる（ステップＳＴ１３）。“０”を保持する下位データラッチ２２の個数が、不良ビット数Ｎｐに相当する。
【０２３１】
この後、図４のステップＳＴ４と同様に、不良ビット数Ｎｐが、不良に対する許容ビット数Ｎ１以下であるかどうか検証される。Ｎｐ＞Ｎ１である場合、データの書き込みが再び実行され、ステップＳＴ１１からステップＳＴ１４の動作が繰り返される。
【０２３２】
Ｎｐ≦Ｎ１である場合、書き込みパスとして、データの書き込みが終了し、ベリファイ読み出しが実行される（ステップＳＴ１５）。
【０２３３】
ここで、本実施形態のフラッシュメモリにおけるベリファイ読み出しは、読み出しコマンドによるデータの読み出しに用いられる読み出し電位ＶＲＥＡＤが、ワード線ＷＬに印加されることによって、実行される。例えば、選択ブロックの全てのワード線ＷＬに対して、読み出し電位ＶＲＥＡＤが、順次印加されて、メモリセルのオン／オフが判定される。そして、オンしなかったメモリセルに対応する下位データラッチ（ＬＬＡＴ）に、“０”を示すフェイル情報が書き込まれる。書き込みパスしたメモリセルで、ベリファイ読み出しがパスしなかったメモリセルに対応する３つのラッチ（ＵＬＡＴ，ＬＬＡＴ，ＱＬＡＴ）の保持する情報は、（１，０，０）になっている。
【０２３４】
これによって、読み出し電位ＶＲＥＡＤ以上のしきい値電位を有するメモリセルを、フェイル・セルとして、検知できる。
【０２３５】
ここでは、読み出し電位ＶＲＥＡＤを用いて、ベリファイ読み出しを実行したが、例えば、４値のメモリセルにおける“Ｃ”レベルの“ＣＶＨ”レベルのように、最上位のしきい値レベル（しきい値分布）の高電位端を、ベリファイ読み出しの判定レベルに用いてもよい。尚、データの書き込み状況に応じて、“ＢＶＨ”レベルや“ＡＶＨ”レベルなどのように、“ＣＶＨ”レベルより小さい電位レベルを判定レベルに用いてもよい。また、読み出し電位ＶＲＥＡＤと最上位のしきい値レベル（しきい値分布）の高電位端（ここでは、“ＣＶＨ”レベル）との間の電位を、ベリファイ読み出しの判定レベルに用いてもよい。これによって、多値フラッシュメモリにおいて、高精度なデータの書き込みを実行できる。
【０２３６】
１回の書き込みシーケンスにおいて、データの書き込みが完了したワード線（ページ）には、“ＣＶＨ”レベルが印加され、それ以外のワード線には、読み出し電位ＶＲＥＡＤが印加されて、ベリファイ読み出しが実行されてもよい。また、データの書き込みが完了したワード線とそれに隣接するワード線には、“ＣＶＨ”レベルが印加され、それ以外のワード線には、読み出し電位ＶＲＥＡＤが印加されて、ベリファイ読み出しが実行されてもよい。
【０２３７】
これらのように、データの書き込みが完了したワード線か否かによって、ベリファイ読み出しに用いるワード線への供給電位（判定電位）を変えることで、より精度の高いデータの書き込みを実現できる。
【０２３８】
この後、不良ビット数Ｎｘが、不良に対する許容ビット数Ｎ１を満たすか否か判定される（ステップＳＴ１６）。ここでの不良ビット数Ｎｘは、“０”を保持する下位データラッチの個数に相当する。不良ビット数Ｎｘは、書き込みフェイルのメモリセルの個数と、ベリファイ読み出しの結果、読み出し電位ＶＲＥＡＤ以上のしきい値であると判定されたメモリセルの個数を含む。
【０２３９】
Ｎｘ＞Ｎ１である場合、図４のステップＳＴ８と同様に、書き込みフェイルであると判定される。そして、ブロックの変更等の処理の後、データの書き込みが引き続き、実行される。
【０２４０】
Ｎｘ≦Ｎ１である場合、図４のステップＳＴ７と同様に、書き込みパスであると判定され（ステップＳＴ１７）、選択ページ又は選択ブロックに対する書き込みシーケンスが完了する。
【０２４１】
上述のステップＳＴ１５において、１度の書き込みシーケンスにおいて、全てのワード線に対して、読み出し電位ＶＲＥＡＤを用いたベリファイ読み出しが実行される。
【０２４２】
しかし、ベリファイ読み出しが実行される前までに、データの書き込みが実行されたワード線（ページ）に対してのみ、読み出し電位ＶＲＥＡＤを用いたベリファイ読み出しを実行してもよい。
【０２４３】
この場合、書き込みが実行されていないワード線のメモリセルは、例えば、２値のフラッシュメモリであれば、“Ｅ”レベルセルであるはずなので、読み出し電位ＶＲＥＡＤを用いずに、読み出し電位ＶＲＥＡＤより低い“ＡＲ”レベルを用いて、ベリファイ読み出しを実行しても、ステップＳＴ１５と実質的に同じ結果が得られる。
【０２４４】
これによって、これからデータの書き込みが実行されるメモリセルに対しても、読み出し電位ＶＲＥＡＤより低い電位を判定電位として用いて、そのメモリセルのしきい値レベルを判定できる。また、読み出し電位ＶＲＥＡＤより低い判定レベルが用いられることによって、すべてのワード線ＷＬに読み出し電位ＶＲＥＡＤを印加して、ベリファイ読み出しが実行される場合に比較して、ベリファイ読み出しに要する消費電力を低減できる。
【０２４５】
尚、本実施形態のフラッシュメモリにおいて、４値のフラッシュメモリを例示して、説明したが、２値のフラッシュメモリの書き込みシーケンスにおけるベリファイ読み出しが、読み出し電位ＶＲＥＡＤを用いて実行されてもよい。
【０２４６】
以上のように、第２の実施形態のフラッシュメモリによれば、回路構成の変更なしに、動作の信頼性を向上できる。
【０２４７】
（３）  応用例  
以下、第１及び第２のフラッシュメモリの応用例について、説明する。
【０２４８】
第１の実施形態のフラッシュメモリの動作（図４参照）と第２の実施形態のフラッシュメモリの動作（図９参照）とを組み合わせて、１つのフラッシュメモリを構成してもよい。
【０２４９】
第１の実施形態のフラッシュメモリは、隣り合わない２以上のしきい値レベル（しきい値分布）毎に割り付けられた判定情報を用いて、データの書き込みの成否を判定する。これによって、あるデータを書き込んだメモリセルのしきい値レベルが、そのデータに対応するしきい値分布に隣接するしきい値分布に遷移したのを検知でき、書き込み不良を検出できる。
【０２５０】
第２の実施形態のフラッシュメモリは、メモリセルのしきい値レベルが、読み出し電位ＶＲＥＡＤ以上になる書き込み不良を検知できる。
【０２５１】
例えば、図４に示される動作と図９に示される動作とが、フラッシュメモリの１回の書き込みシーケンス中にそれぞれ実行される。尚、図４の動作が実行されてから図９の動作が実行されるか、又は、その反対の順序の動作であるかは重要ではない。また、図４及び図９の動作を部分的に組み合わせてもよい。例えば、図４のステップＳＴ１からステップＳＴ８の動作を、１回目のベリファイ読み出し（第１のベリファイ）として、実行した後に、図９のステップＳＴ１５からステップＳＴ１７，ＳＴ１８の動作を、２回目のベリファイ読み出し（第２のベリファイ）として、実行してもよい。
【０２５２】
また、２値のフラッシュメモリ、ＱＰＷモード以外の書き込みモード（例えば、ＬＭモード、Foggy and Fine モードなど）の多値フラッシュメモリ、ＡＮＤ型、ＮＯＲ型などＮＡＮＤ型以外のフラッシュメモリに、図４乃至図９に示される動作が適用できるのはもちろんである。  
さらに、本実施形態において、フラッシュメモリを例示したが、図４乃至図９に示される動作は、２値以上のデータを保持可能な他のメモリ（例えば、Resistive RAM又はPhase Change RAM）にも、適用できる。
【０２５３】
以上のように、応用例で述べたメモリに対しても、第１及び第２の実施形態のフラッシュメモリと同様に、回路構成の変更なしに、メモリの信頼性を向上できる。
【０２５４】
［その他］
本発明の例は、上述の実施形態に限定されるものではなく、その要旨を逸脱しない範囲で、各構成要素を変形して具体化できる。また、上述の実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を構成できる。例えば、上述の実施形態に開示される全構成要素から幾つかの構成要素を削除してもよいし、異なる実施形態の構成要素を適宜組み合わせてもよい。
【符号の説明】
【０２５５】
１：フラッシュメモリ、５：ページバッファ、１０：センスアンプ回路、１１：センスアンプユニット、１２：演算ユニット、２０：ラッチ回路、２１，２２：データラッチ（ＵＬＡＴ，ＬＬＡＴ）、２３：フラグラッチ（ＱＬＡＴ）、ＮＵ：ＮＡＮＤセルユニット、ＭＣ：メモリセル。
【図１】
2011204298.tif 000003
【図２】
2011204298.tif 000004
【図３】
2011204298.tif 000005
【図４】
2011204298.tif 000006
【図５】
2011204298.tif 000007
【図６】
2011204298.tif 000008
【図７】
2011204298.tif 000009
【図８】
2011204298.tif 000010
【図９】
2011204298.tif 000011