"プログラム動作の対象となる選択メモリセルを含むメモリセルアレイと、前記選択メモリセルに接続される選択ワード線を選択するロウデコーダと、前記選択メモリセルに記録するプログラムデータをラッチするデータラッチ回路と、前記選択メモリセルへの前記プログラムデータの記録の完了/未完了を判定するベリファイ回路と、前記プログラム動作の終了前に外部コントローラにステータス情報を出力する制御回路とを具備し、前記制御回路は、前記選択ワード線に対する書き込みパルスの印加とベリファイ読み出し動作とを繰り返す第1の手段と、前記ベリファイ回路により前記プログラムデータの記録が完了と判断された後に前記選択メモリセルに対して読み出し動作を行う第2の手段と、前記読み出し動作により読み出されたデータと前記プログラムデータとが一致するときに前記外部コントローラに前記プログラム動作がパスしたことを示す前記ステータス情報を出力し、両者が一致しないときに前記外部コントローラに前記プログラム動作がフェイルしたことを示す前記ステータス情報を出力する第3の手段とを備え、前記データラッチ回路は、前記ベリファイ回路により前記プログラムデータの記録が完了と判断された後も前記プログラムデータをラッチし続けることを特徴とする不揮発性半導体メモリ。プログラム動作の対象となる選択メモリセルを含むメモリセルアレイと、前記選択メモリセルに接続される選択ワード線を選択するロウデコーダと、前記選択メモリセルに記録するプログラムデータをラッチするデータラッチ回路と、前記選択メモリセルへの前記プログラムデータの記録の完了/未完了を判定するベリファイ回路と、前記プログラム動作の終了前に外部コントローラにステータス情報を出力する制御回路とを具備し、前記制御回路は、前記選択ワード線に対する書き込みパルスの印加とベリファイ読み出し動作とを繰り返す第1の手段と、前記ベリファイ回路により前記プログラムデータの記録が完了と判断された後に前記選択メモリセル以外の前記選択ワード線に接続される不良判定セルに対して読み出し動作を行う第2の手段と、前記読み出し動作により読み出されたデータが期待値とが一致するときに前記外部コントローラに前記プログラム動作がパスしたことを示す前記ステータス情報を出力し、両者が一致しないときに前記外部コントローラに前記プログラム動作がフェイルしたことを示す前記ステータス情報を出力する第3の手段とを備え、前記不良判定セルは、前記選択ワード線の先端部に接続されることを特徴とする不揮発性半導体メモリ。プログラム動作の対象となる選択メモリセルを含むメモリセルアレイと、前記選択メモリセルに接続される選択ワード線を選択するロウデコーダと、前記選択メモリセルに記録するプログラムデータをラッチするデータラッチ回路と、前記選択メモリセルへの前記プログラムデータの記録の完了/未完了を判定するベリファイ回路と、前記プログラム動作の終了前に外部コントローラにステータス情報を出力する制御回路とを具備し、前記制御回路は、前記選択ワード線に対する書き込みパルスの印加とベリファイ読み出し動作とを繰り返す第1の手段と、前記ベリファイ回路により前記プログラムデータの記録が完了と判断された後に前記選択メモリセル以外の前記選択ワード線に接続される第1及び第2の不良判定セルに対して読み出し動作を行う第2の手段と、前記読み出し動作により読み出されたデータが期待値とが一致するときに前記外部コントローラに前記プログラム動作がパスしたことを示す前記ステータス情報を出力し、両者が一致しないときに前記外部コントローラに前記プログラム動作がフェイルしたことを示す前記ステータス情報を出力する第3の手段とを備え、前記第1の不良判定セルは、前記選択ワード線の先端部に接続され、前記第2の不良判定セルは、前記選択ワード線の中央部に接続されることを特徴とする不揮発性半導体メモリ。プログラム動作の対象となる選択メモリセルを含むメモリセルアレイと、前記選択メモリセルに接続される選択ワード線を選択するロウデコーダと、前記選択メモリセルに記録するプログラムデータをラッチするデータラッチ回路と、前記選択メモリセルへの前記プログラムデータの記録の完了/未完了を判定するベリファイ回路と、前記プログラム動作の終了前に外部コントローラにステータス情報を出力する制御回路とを具備し、前記制御回路は、前記選択ワード線に対する書き込みパルスの印加とベリファイ読み出し動作とを繰り返す第1の手段と、前記ベリファイ回路により前記プログラムデータの記録が完了と判断された後に前記選択メモリセル以外の前記選択ワード線に接続される不良判定セルに対して読み出し動作を行う第2の手段と、前記読み出し動作により読み出されたデータが期待値とが一致するときに前記外部コントローラに前記プログラム動作がパスしたことを示す前記ステータス情報を出力し、両者が一致しないときに前記外部コントローラに前記プログラム動作がフェイルしたことを示す前記ステータス情報を出力する第3の手段とを備え、前記不良判定セルは、前記選択メモリセルがnnは、2以上の自然数ビットを記録可能であるときに、前記プログラムデータが前記nビットのうちのいずれであるかを示すデータを記録することを特徴とする不揮発性半導体メモリ。前記外部コントローラは、前記プログラム動作がフェイルしたことを示す前記ステータス情報を受けとったときに、前記選択メモリセル及び前記選択ワード線を変更し、再び前記プログラム動作を開始することを特徴とする請求項1乃至4のいずれか1項に記載の不揮発性半導体メモリ。実施形態は、プログラムが正常に行われた後にそのデータを読み出すことができないといった不良の有無をプログラム動作の終了前に判定する技術を提案する。実施形態によれば、不揮発性半導体メモリは、プログラム動作の対象となる選択メモリセルを含むメモリセルアレイと、前記選択メモリセルに接続される選択ワード線を選択するロウデコーダと、前記選択メモリセルに記録するプログラムデータをラッチするデータラッチ回路と、前記選択メモリセルへの前記プログラムデータの記録の完了/未完了を判定するベリファイ回路と、前記プログラム動作の終了前に外部コントローラにステータス情報を出力する制御回路とを備え、前記制御回路は、前記選択ワード線に対する書き込みパルスの印加とベリファイ読み出し動作とを繰り返す第1の手段と、前記ベリファイ回路により前記プログラムデータの記録が完了と判断された後に前記選択メモリセルに対して読み出し動作を行う第2の手段と、前記読み出し動作により読み出されたデータと前記プログラムデータとが一致するときに前記外部コントローラに前記プログラム動作がパスしたことを示す前記ステータス情報を出力し、両者が一致しないときに前記外部コントローラに前記プログラム動作がフェイルしたことを示す前記ステータス情報を出力する第3の手段とを備え、前記データラッチ回路は、前記ベリファイ回路により前記プログラムデータの記録が完了と判断された後も前記プログラムデータをラッチし続ける。以下、図面を参照しながら実施形態を説明する。1.実施形態実施形態は、プログラムが正常に行われた後にそのデータを読み出すことができないといった不良読み出し不良の有無をプログラム動作の終了前に判定する技術を提案するものである。ここで、プログラム動作は、プログラムデータに応じて、閾値を変化させない動作書き込み禁止と閾値を上昇させる動作書き込み実行とを備える。また、単に読み出しといったときは、プログラム完了後の読み出しを意味し、プログラムが完了したか否かを判定するベリファイ動作中の読み出しベリファイ読み出しを含まないものとする。読み出し動作とベリファイ読み出し動作とは、動作上、明確に異なるため、以下の説明では、両者を明確に区別する。図1は、実施形態に係わるメモリシステムを示している。不揮発性半導体メモリ例えば、NANDフラッシュメモリ10A及び外部コントローラ例えば、NANDコントローラ10Bは、データバス10Cを介して互いに接続される。外部コントローラ10Bは、不揮発性半導体メモリ10Aに対するプログラム動作を制御する。メモリセルアレイ11は、プログラム動作の対象となる選択メモリセルを含む。ロウデコーダ12は、選択メモリセルに接続される選択ワード線を選択する。電位発生回路13は、プログラム動作において、選択ワード線に印加する高電位プログラム電位を発生する。データラッチ回路14は、選択メモリセルに記録するプログラムデータをラッチする。データバッファ15は、不揮発性半導体メモリ10Aのデータ入出力のインターフェイス回路として機能する。ベリファイ回路16は、選択メモリセルへのプログラムデータの記録の完了/未完了を判定する。制御回路17は、ベリファイ回路16による判定結果に基づいて、プログラム動作の終了前に外部コントローラ10Bにステータス情報STATUSを出力する。図2は、図1の制御回路17によるプログラム動作を示している。外部コントローラ10Bが不揮発性半導体メモリ10Aに対してプログラム動作を指示すると、制御回路17は、まず、プログラム動作のセットアップレジスタのリセット、チャージポンプ回路の起動などを行うステップST1。次に、プログラム動作の対象となる選択メモリセルに接続される選択ワード線に書き込みパルスを印加し、選択メモリセルに対するプログラム動作を実行するステップST2。例えば、1-プログラミングの場合、書き込みパルスの印加により選択メモリセルのチャネル電位がブーストされ、書き込み閾値の上昇が禁止される。また、0-プログラミングの場合、書き込みパルスの印加中に選択メモリセルのチャネル電位が0Vに固定され、書き込み閾値の上昇が実行される。選択メモリセルのチャネル電位をブーストするか、又は0Vに固定するかは、データラッチ回路14にラッチされたプログラムデータに基づいて判断する。例えば、データラッチ回路14にラッチされたデータが1であれば、選択メモリセルのチャネルにプラス電位を転送することにより、選択メモリセルのチャネル電位をブーストすることが可能である。また、データラッチ回路14にラッチされたデータが0であれば、選択メモリセルのチャネルに0Vを転送することにより、選択メモリセルのチャネル電位を0Vに固定することが可能である。この後、選択メモリセルへのプログラムデータの記録の完了/未完了を判定するベリファイ動作ベリファイ読み出しが実行されるステップST3~ST5。ベリファイ動作では、0-プログラミングの選択メモリセルの閾値がベリファイ読み出し電位よりも大きいか否かについて判定される。選択メモリセルの閾値がベリファイ読み出し電位よりも小さいときは、プログラムデータの記録が未完了であるため、再び書き込みパルスの印加が実行される。選択メモリセルの閾値がベリファイ読み出し電位よりも大きいときは、プログラムデータの記録が完了であるため、この後、再び書き込みが行われないように、データラッチ回路にラッチされたデータを0から1に変更する。ここで、選択メモリセルがnnは、2以上の自然数ビット2n値を記録可能であり、かつ、下位ビット以外の上位ビットを記録するときは、ベリファイ読み出しは、複数の値を持つベリファイ読み出し電位を用いて行う。これら複数の値のうちのいずれを基準とするかは、選択メモリセルに既に記録されている下位ビットの値と、これから記録する上位ビットの値に基づいて判断する。そして、選択ワード線に接続されるプログラム動作の対象となる全ての選択メモリセルに対してプログラムデータの記録が完了したとき、データラッチ回路14にラッチされたデータは、全て1になるため、ベリファイ回路16は、このプログラム完了を制御回路17に通知する。コンベンショナルな技術によれば、制御回路17によるプログラム動作は、ここまで図2の破線内である。従って、制御回路17は、ベリファイ回路16によりプログラムデータの記録が完了と判断されると、外部コントローラ10Bにプログラム動作がパスしたことを示すステータス情報STATUSパスを出力し、書き込み回数が最大値Nmaxになってもプログラムデータの記録が未完了と判断されると、外部コントローラ10Bにプログラム動作がフェイルしたことを示すステータス情報STATUSフェイルを出力する。しかし、これでは、プログラム動作が正常に行え、読み出し動作が正常に行えない、といったようなワード線の微妙な高抵抗化不良を検出することができない。そこで、実施形態では、ベリファイ回路16によりプログラムデータの記録が完了と判断された後プログラムベリファイがパスした後に、選択メモリセルに対して読み出し不良を検出するための読み出し動作を行うステップST6~ST7。この読み出し動作では、読み出し電位に基づいて、選択メモリセルに記録されたデータが1であるか、又は0であるかについて判定される。例えば、選択メモリセルの閾値が読み出し電位よりも小さいときは、選択メモリセルに記録されたデータが1であると判定され、選択メモリセルの閾値が読み出し電位よりも大きいときは、選択メモリセルに記録されたデータが0であると判定される。ここで、選択メモリセルがnビット2n値を記録可能であり、かつ、選択メモリセルに2ビット4値以上が記録されているときは、読み出しは、複数の値を持つ読み出し電位を用いて行う。これら複数の値を用いることにより、選択メモリセルに記録されたnビット2n値の全てを読み出すことができる。そして、この読み出し動作により読み出されたデータとプログラムデータとが一致するときは、制御回路17は、読み出し不良が存在しないと判定し、外部コントローラ10Bにプログラム動作がパスしたことを示すステータス情報STATUSパスを出力し、両者が一致しないときは、制御回路17は、読み出し不良が存在すると判定し、外部コントローラ10Bにプログラム動作がフェイルしたことを示すステータス情報STATUSフェイルを出力する。即ち、実施形態によれば、不揮発性半導体メモリ10Aから外部コントローラ10Bに転送するステータス情報STATUSは、プログラムが正確に行われたか否かを示す情報と、読み出し不良が存在するか否かを示す情報とのアンドとなっている。従って、プログラム動作が正常に行え、読み出し動作が正常に行えない、といったようなワード線の微妙な高抵抗化不良の有無を、プログラム動作の終了前に判定することができる。プログラム動作の終了前においては、外部コントローラ10Bは、プログラムデータを保持しているため、その不良が検出されたときは、例えば、ワード線を変更するなどの処置を施した後に、再びプログラム動作を行うことができる。このため、ユーザが不揮発性半導体メモリに記録したデータを永久に読み出すことができなくなる、といった問題が発生することはない。ところで、上述のプログラム動作で説明したように、選択ワード線に接続されるプログラム動作の対象となる全ての選択メモリセルに対してプログラムデータの記録が完了したとき、データラッチ回路14にラッチされたデータは、全て1になる。即ち、コンベンショナルな技術によれば、プログラムデータの記録が完了と判断された後プログラムベリファイがパスした後において、データラッチ回路は、プログラムデータをラッチしていない。そこで、実施形態では、データラッチ回路14は、ベリファイ回路16によりプログラムデータの記録が完了と判断された後もプログラムデータをラッチし続ける。これについては、以下の手段により実現する。例えば、プログラムデータの記録の完了/未完了を判定するために、1つの選択メモリセルに対して1つのデータラッチ部が必要であるため、これとは別に、その1つの選択メモリセルに対して、プログラムデータの記録が完了と判断された後もプログラムデータをラッチし続けるもう1つのデータラッチ部を設ける。後者のデータラッチ部は、コンベンショナルな不揮発性半導体メモリに既存の回路を用いることも可能であるし、新規に追加することも可能である。また、読み出し不良を検出するためのプログラムデータは、データラッチ回路14以外の記録部に記録しておいても構わない。図3は、読み出し不良を検出するための読み出し動作の例を示している。本例は、上述のプログラム動作における読み出し動作に相当する。この読み出し動作は、プログラム動作の対象となる選択メモリセルに対して行うものであるから、読み出し不良が存在するか否かの判定は、選択メモリセルからの読み出しデータとプログラムデータとの比較により行わなければならない。しかし、プログラムベリファイがパスした後においても、プログラムデータをラッチし続けておくことは、容易なことではない。そこで、読み出し不良の性質を考慮し、選択メモリセル以外のメモリセル不良判定セルを対象とする読み出し動作の例について説明する。プログラム動作後の読み出し不良は、ワード線が微妙に高抵抗化する、といった不良であり、主に、ワード線の先端部高電位の供給源となるロウデコーダ12側を基準とするにおいて発生し易い。そこで、例えば、不良判定セルは、選択ワード線の先端部に接続され、プログラム動作の対象とならないリファレンスセルとする。この不良判定セルから読み出されたデータが期待値と一致するか否かを判定することにより、ワード線の先端部において発生し易いワード線の高抵抗化切断を含む、即ち、読み出し不良を検出することができる。即ち、両者が一致するときは、外部コントローラ10Bにプログラム動作がパスしたことを示すステータス情報STATUSを出力し、両者が一致しないときは、外部コントローラ10Bにプログラム動作がフェイルしたことを示すステータス情報STATUSを出力する。尚、プログラム動作中において、不良判定セルに対して書き込みを行わなければ、期待値は、消去状態例えば、1となる。また、不良判定セルは、選択ワード線に接続される複数の選択メモリセルのうち、最も選択ワード線の先端部にある1つ以上の選択メモリセルとしても良い。図4は、読み出し不良を検出するための読み出し動作の他の例を示している。本例は、読み出し不良を判定するために、第1、第2及び第3の不良判定セルを用意し、第1の不良判定セルをワード線WLの先端部カラムC1に接続し、第2の不良判定セルをワード線WLの中央部カラムC2に接続し、第3の不良判定セルをワード線WLの根元部カラムC3に接続する。この例によれば、不良範囲を特定することが可能になる。例えば、第1の不良判定セルカラムC1からの読み出しが不可であり、第2及び第3の不良判定セルカラムC2,C3からの読み出しが可であるとき、ワード線WLの切断部Aは、カラムC1とカラムC2との間にあると想定される。そこで、このような不良が発生したときは、カラムC1とカラムC2との間の選択メモリセルに対しては、ステータスフェイルとし、カラムC2とカラムC3との間の選択メモリセルに対しては、ステータスパスとすることも可能である。図5は、図4の読み出し動作の変形例である。この例では、メモリセルアレイの両側にそれぞれロウデコーダが配置される。例えば、右側のロウデコーダを基準としたときは、ワード線WLの先端部は、カラムC3、ワード線WLの中央部は、カラムC2、ワード線WLの根元部は、カラムC1である。ワード線WLの切断部BがカラムC2とカラムC3との間にあるとき、図4と同様の手法により、カラムC2とカラムC3との間の選択メモリセルに対しては、ステータスフェイルとし、カラムC1とカラムC2との間の選択メモリセルに対しては、ステータスパスとすることも可能である。図6は、読み出し不良を検出するための読み出し動作の他の例を示している。本例は、不良判定セルとして、2nnは、2以上の自然数値不揮発性半導体メモリに既存のLMlowermiddleフラグエリア内のメモリセルを利用する。LMフラグエリアは、選択メモリセルがnビット2n値を記録可能であるときに、プログラムデータがnビットのうちのいずれであるかを示すデータを記録する。また、LMフラグエリアは、一般的にワード線WLの先端部に設けられるため、そのデータを読み出し、読み出し不良の判定に用いることは、ワード線の先端部においてワード線の高抵抗化切断を含むによる読み出し不良が発生し易い、といった実情にマッチする。この例によれば、読み出し不良を検出するための専用の不良判定セルリファレンスセルを設けることなく、既存のLMフラグエリア内のメモリセルのデータを読み出すことにより読み出し不良を判定することができるため、メモリセルアレイの大容量化に影響を与えることがない。図7は、図6の読み出し動作の変形例である。この例では、メモリセルアレイの両側にそれぞれロウデコーダが配置される。この場合、LMフラグエリアも、メモリセルアレイの両側にそれぞれ配置される。この場合、左側のロウデコーダにより駆動されるワード線に接続されるメモリセルの読み出し不良を検出するときは、メモリセルアレイの右端にあるLMフラグエリア内のメモリセルのデータを読み出し、右側のロウデコーダにより駆動されるワード線に接続されるメモリセルの読み出し不良を検出するときは、メモリセルアレイの左端にあるLMフラグエリア内のメモリセルのデータを読み出す。2.適用例実施形態は、微細化によりワード線が細くかつ長くなった不揮発性半導体メモリ全般に適用可能である。そのようなメモリとして、NANDフラッシュメモリや、NORフラッシュメモリなどがある。また、実施形態は、デバイス構造、読み出し/書き込み方式、1セルに記録するビット数2値又は多値などに制限されることはない。例えば、実施形態は、読み出し/書き込みを偶数番目のビット線と奇数番目のビット線とに分けるシールドビット線方式、及び、読み出し/書き込みを全てのビット線に対して同時に行うABLAllbitline方式のいずれにも適用可能である。以下、実施形態をNANDフラッシュメモリに適用した適用例を説明する。図8は、NANDフラッシュメモリを示している。メモリセルアレイ11は、例えば、Y方向に並んで配置されるjjは、2以上の自然数個のNANDブロックBK0,BK1,...BKj-1から構成される。NANDブロックBK0,BK1,...BKj-1は、それぞれ、NANDセルユニットCUを有する。NANDセルユニットCUは、直列接続されるnnは、2以上の自然数個のメモリセルMC0,...MCn-1と、その両端に一つずつ接続される2個のセレクトゲートトランジスタSTS,STDとから構成される。NANDブロックBK0,BK1,...BKj-1内において、n本のワード線WL0,...WLn-1は、X方向に延び、メモリセルMC0,...MCn-1のコントロールゲートに接続される。また、2本のセレクトゲート線SGS,SGDは、X方向に延び、2個のセレクトゲートトランジスタSTS,STDのゲートに接続される。mmは、2以上の自然数本のビット線BL0,BL1,...BLm-2,BLm-1は、Y方向に延び、NANDセルユニットCUのドレイン側に配置されるセレクトゲートトランジスタSTDに接続される。NANDセルユニットCUのソース側に配置されるセレクトゲートトランジスタSTSは、ソース線セルソースSLに接続される。メモリセルアレイ11のX方向の端部には、ロウデコーダ12が配置される。本例では、ロウデコーダ12は、メモリセルアレイ11のX方向の二つの端部にそれぞれ配置されるが、メモリセルアレイ11のX方向の二つの端部のうちの一つに配置してもよい。メモリセルアレイ11のY方向の端部には、データラッチ回路14及びデータ転送制御回路18が配置される。データラッチ回路14は、読み出し/書き込み時に、データを一時的にラッチする機能を有する。また、データ転送制御回路18は、カラムデコーダを含み、読み出し/書き込み時に、メモリセルアレイ11内の各カラムに対するデータ転送を制御する。本例では、データラッチ回路14及びデータ転送制御回路18は、メモリセルアレイ11のY方向の二つの端部にそれぞれ配置される。このようなフロアプランは、例えば、メモリセルアレイ11内の全てのビット線からデータを読み出すABL方式に採用される。但し、データラッチ回路14及びデータ転送制御回路18は、メモリセルアレイ11のY方向の二つの端部のうちの一つに配置してもよい。図9は、メモリセルの閾値分布の例を示している。同図aは、下位ビットの書き込みが行われた状態である。メモリセルの初期状態は、消去状態であり、その閾値分布は、Erである。下位ビットが1のときは、書き込みが禁止されるため、メモリセルの閾値分布は、Erのままとなる。これに対し、下位ビットが0のときは、書き込みが行われ、メモリセルの閾値分布は、ErからAlowerにシフトする。実施形態のベリファイ読み出しは、対象となるメモリセルに読み出し電位としてAvrlowerを与えることにより行う。また、実施形態の読み出しは、対象となるメモリセルに読み出し電位としてArを与えることにより行う。ここで、下位ビットの書き込みのみが行われた状態において、下位ビット0のメモリセルの閾値分布Alowerは、同図bの下位ビット及び上位ビットの双方を書き込んだ状態のメモリセルの閾値分布とは異なる。この状態は、粗書き状態、又は、Alowerが同図bのEr、A、B、Cの中央に位置することから、LM状態と称される。同図bは、下位ビット及び上位ビットの書き込みが行われた状態である。4値データを記録可能なメモリセルに対して2値データを記録させる場合には、これを下位ビットとして記録する。また、4値データを記録可能なメモリセルに対して4値データを記録させる場合には、まず、下位ビットの書き込みを行った後に上位ビットの書き込みを行う。そこで、以下では、下位ビットが書き込まれた状態から、上位ビットを書き込む場合について説明する。まず、下位ビットが1の場合を説明する。この場合、上位ビットが1のときは、書き込みが禁止されるため、メモリセルの閾値分布は、Erのままとなる。これに対し、上位ビットが0のときは、書き込みが行われ、メモリセルの閾値分布は、ErからAにシフトする。次に、下位ビットが0の場合を説明する。この場合、上位ビットが1のときは、書き込みが行われ、メモリセルの閾値分布は、AlowerからCにシフトする。また、上位ビットが0のときは、書き込みが行われ、メモリセルの閾値分布は、AlowerからBにシフトする。実施形態のベリファイ読み出しは、対象となるメモリセルに読み出し電位として、Avr、Bvr、又は、Cvrを与えることにより行う。また、実施形態の読み出しは、対象となるメモリセルに読み出し電位としてAr、Br、又は、Crを与えることにより行う。ここで、下位ビットが書き込まれた状態から上位ビットを書き込むに当っては、ErからAへ、AlowerからBへ、さらに、AlowerからCへの閾値分布のシフト量が小さくなっている。従って、上位ビットを書き込むときに発生する容量結合効果による閾値分布の広がりを抑えることができる。ところで、LMモードでは、読み出し/書き込みの対象となるメモリセルに記録されているデータが、下位ビットのみであるのか、又は、下位ビット及び上位ビットの双方であるのかを、LMフラグを用いて判断する。そこで、以下、LMフラグについて説明する。図10は、メモリセルアレイコア部の詳細を示している。メモリセルアレイコア部は、メモリセルアレイ11、データラッチ回路14及びデータ転送制御回路18を含む。19は、データバスである。メモリセルアレイ11は、メインデータ例えば、ファイルデータが記録されるメインエリア11-1と、ECCによるデータ訂正のためのデータが記録されるECCエリア11-2と、LMフラグが記録されるLMフラグエリア11-3と、冗長データが記録されるリダンダンシイエリア11-4とから構成される。また、データラッチ回路14は、第1ラッチ回路LA-1と第2ラッチ回路LA-2とから構成される。この2つのラッチ回路LA-1,LA-2は、4値2ビットデータの読み出し/書き込みに使用する。データラッチ回路14-1は、メインエリア11-1に対応し、データラッチ回路14-2は、ECCエリア11-2に対応し、データラッチ回路14-3は、LMフラグエリア11-3に対応し、データラッチ回路14-4は、リダンダンシイエリア11-4に対応する。図11は、LMフラグの閾値分布の例を示している。ここでは、LMフラグは、1つのメモリセルから構成され、1つのロウ例えば、ページに1つ設けられるものとする。まず、メインエリアのメモリセルに下位ビットのみが書き込まれている場合、LMフラグに対しても下位ビットのみが書き込まれている必要がある。なぜなら、メインエリアのメモリセルとLMフラグとは、両者に共通のワード線に接続され、同じ読み出し電位により読み出されるからである。この場合、LMフラグの閾値分布は、消去状態Erに設定される。従って、メモリセルに記録されているデータが下位ビットのみであるときは、読み出し電位Arにより、LMフラグデータL、即ち、下位ビット1が読み出される。これを実施形態における読み出し不良の検出に使用することができる。次に、メインエリアのメモリセルに下位ビット及び上位ビットの双方が書き込まれている場合、LMフラグに対しても下位ビット及び上位ビットの双方が書き込まれている必要がある。この場合、LMフラグの閾値分布は、書き込み状態Bに設定される。その理由は、4値データを読み出すとき、まず、閾値分布Aと閾値分布Bとの間のBrを読み出し電位として読み出しを行い、下位ビットの値を判断するためであり、この時、LMフラグの値としてHと判断できれば非常に好ましいためである。また、閾値分布Cでも、読み出し電位BrによりLMフラグの値としてHと判断できるが、Erからの閾値のシフト量は、小さいほうが好ましい。そこで、メインエリアのメモリセルに下位ビット及び上位ビットの双方が書き込まれているときのLMフラグの閾値分布は、書き込み状態Bに設定される。従って、メモリセルに記録されているデータが下位ビット及び上位ビットの双方であるときは、読み出し電位Brにより、LMフラグデータH、即ち、下位ビット0が読み出される。これを実施形態における読み出し不良の検出に使用することができる。このように、LMフラグの閾値分布は、メインエリアのメモリセルに下位ビットのみが書き込まれている状態では、Erとなり、メインエリアのメモリセルに下位ビット及び上位ビットの双方が書き込まれている状態では、Bとなる。尚、LMフラグの閾値分布をErからBにシフトさせるときは、プログラムデータとしては、下位ビット及び上位ビット共に0となっている必要があるため、上位ビットのプログラム時にLMフラグから読み出される下位ビット1を、強制的に0に変更することが必要である。3.むすび実施形態によれば、プログラムが正常に行われた後に、新たなコマンド入力なしに、自動的に読み出し動作を行うことにより、プログラム動作後にデータを読み出すことができない、といった不良の有無を、プログラム動作の終了前に判定することができる。プログラム動作の終了前においては、外部コントローラは、プログラムデータを保持しているため、その不良が検出されたときは、ステータスフェイルを外部コントローラに知らせることにより、例えば、ワード線を変更するなどの処置を施した後に、再びプログラム動作を行うことができる。従って、ユーザが不揮発性半導体メモリに記録したデータを永久に読み出すことができなくなる、といった問題が発生することはない。本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。"