(57)【特許請求の範囲】
【請求項１】
フラッシュメモリのプログラム方法であって、
選択ブロックのＮＡＮＤストリングの不良数を検出するステップと、
検出されたＮＡＮＤストリングの不良数に基づき、プログラムベリファイにおいて許容可能な不合格ビット数を決定するステップと、
選択ブロックの選択ページにプログラムパルスを印加するステップと、
前記許容可能な不合格ビット数に基づき選択ページのプログラムベリファイを行うステップとを有し、
ＮＡＮＤストリングの不良数を検出するステップは、選択ブロックの共通ソース線からＮＡＮＤストリングに電圧を印加して読出しを行うリバース読出しをするステップを含む、プログラム方法。
【請求項２】
前記許容可能な不合格ビット数は、誤り検出・訂正によって救済可能なビット数以下である、請求項１に記載のプログラム方法。
【請求項３】
前記許容可能な不合格ビット数は、ＮＡＮＤストリングの不良数の増加に応じて減算される、請求項１または２に記載のプログラム方法。
【請求項４】
前記プログラムベリファイは、選択ページのプログラム不良ビット数が前記許容可能な不合格ビット数以下であるとき疑似合格と判定する、請求項１ないし３いずれか１つに記載のプログラム方法。
【請求項５】
プログラム方法は、プログラムすべきデータの誤り検出・訂正処理を行うステップを含み、
ＮＡＮＤストリングの不良による誤りは、データの読出し時に前記誤り検出・訂正処理によって訂正される、請求項１ないし４いずれか１つに記載のプログラム方法。
【請求項６】
複数のＮＡＮＤストリングを含むメモリアレイと、
ビット線を介して前記メモリアレイのＮＡＮＤストリングに接続され、ＮＡＮＤストリングの不良の有無を出力する出力回路と、
複数の前記出力回路に接続され、選択ブロックのＮＡＮＤストリングの不良数を検出する検出回路と、
選択ブロックの選択ページをプログラムするプログラム手段を含み、
前記プログラム手段は、前記検出回路により検出されたＮＡＮＤストリングの不良数に基づき設定された許容可能な不合格ビット数に基づき選択ページのプログラムベリファイを行い、
半導体記憶装置はさらに、選択ブロックの共通ソース線からＮＡＮＤストリングに電圧を印加し、選択ブロックの全ページにベリファイ電圧を印加することで、選択ブロックの複数のＮＡＮＤストリングのリバース読出しを行う手段を含み、前記出力回路は、前記リバース読出し手段の読出し結果に基づきＮＡＮＤストリングの不良の有無を出力する、半導体記憶装置。
【請求項７】
前記検出回路は、前記複数の出力回路のＮＡＮＤストリングの不良の有無に応じた検出電圧を生成する第１の回路と、基準電圧を生成する第２の回路と、前記検出電圧と前記基準電圧とを比較する比較回路とを含み、当該比較回路は、前記複数の出力回路に接続されたＮＡＮＤストリングの不良数を検出する、請求項６に記載の半導体記憶装置。
【請求項８】
前記比較回路は、第１の入力に前記検出電圧を入力し、第２の入力に前記基準電圧を入力し、第２の入力には、基準電流Irefを流すことができる複数のトランジスタが並列に接続され、複数のトランジスタのうち検出すべきＮＡＮＤストリングの不良数に応じたトランジスタが動作可能にされる、請求項７に記載の半導体記憶装置。
【請求項９】
半導体記憶装置はさらに、プログラムすべきデータおよび前記メモリアレイ読み出されたデータの誤り検出・訂正を行う回路を含み、前記不合格ビット数は、前記誤り検出・訂正を行う回路によって救済可能なビット数以下である、請求項６ないし８いずれか１つに記載の半導体記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体記憶装置に関し、特にＮＡＮＤ型フラッシュメモリのプログラムおよび消去に関する。
【背景技術】
【０００２】
フラッシュメモリのプログラムでは、フローティングゲートに電子を蓄積させ、メモリセルのしきい値電圧を正方向にシフトさせ、消去では、フローティングゲートから電子を放出させ、メモリセルのしきい値電圧を負方向にシフトさせる。このようなプログラムおよび消去は、メモリセルのしきい値が「０」、「１」の分布幅内に入るように制御されなければならず、プログラムベリファイおよび消去ベリファイによってプログラムおよび消去の合否判定がなされる（特許文献１）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１４−７８３０８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
図１は、従来のフラッシュメモリの消去動作のフローである。選択ブロックに消去パルスが印加され（Ｓ１０）、次に、選択ブロックの消去ベリファイが行われる（Ｓ２０）。消去ベリファイでは、選択ブロックの全ワード線にベリファイ電圧が印加され、全ビット線の合否が判定される。通常、消去ベリファイは、消費電力を低減するため、共通ソース線から選択ブロックの各ＮＡＮＤストリングにＶｃｃ電圧を供給して読出しを行うリバース読出しである。ＮＡＮＤストリング中の全てのメモリセルのしきい値が「１」の分布内にあれば、ＮＡＮＤストリングは導通し、ビット線はHレベルであり、１つでもメモリセルのしきい値が「１」の分布内になければ、ＮＡＮＤストリングは非導通であり、ビット線はLレベルである。こうして、選択ブロックの全ビット線がHレベルであれば合格と判定され（Ｓ３０）、消去が終了される。いずれかのビット線がLレベルであれば、不合格と判定され、消去パルスの印加回数がＮＭＡＸに到達したか否かが判定される（Ｓ４０）。ＮＭＡＸとは、消去に許容される最大の消去パルスの印加回数を意味する。ＮＭＡＸに到達した場合には、消去失敗のステータスが外部のコントローラに通知されるとともに、当該ブロックがバッドブロックとして管理される。ＮＭＡＸに到達していなければ、ＩＳＰＥ（Incremental Step Erase Pulse）に従い、前回の消去パルスよりもΔＶだけ大きなステップ電圧を有する消去パルスが生成され（Ｓ５０）、この消去パルスが選択ブロックに印加される。
【０００５】
図２は、従来の消去ベリファイの判定回路である。例えば、ページバッファ／センス回路のサイズが２ｋＢであるとき、ベリファイ判定ラインVLとノードNとの間に、ラッチ回路のノードSLS_０、SLS_1、SLS_2、・・・SLS_2048×8にそれぞれ接続されたベリファイ用トランジスタが並列に接続され、さらにノードNとGNDとの間にベリファイをイネーブルする（JUDGE ONがHレベル）ためのトランジスタが接続される。消去ベリファイ時、ベリファイ判定ラインVLにはHレベルの電圧が供給され、消去ベリファイが合格であれば、全ビットがHレベルであり、全てのラッチ回路のノードSLSがLレベルとなり、ベリファイ判定ラインVLはHレベルを維持する。他方、消去ベリファイが不合格であれば、いずれか１つのノードSLSがHレベルとなり、対応するベリファイ用トランジスタがオンし、ベリファイ判定ラインVLがLレベルとなる。
【０００６】
このように、従来の消去ベリファイは、全てのＮＡＮＤストリングが導通するか否かを検出するものであり、１つでも非導通のＮＡＮＤストリングがあれば、そのブロックはバッドブロックとして管理されることになる。消去ベリファイにおいて、不良になり得るＮＡＮＤストリングは、メモリセルの製造欠陥、プログラム／消去が繰り返されることに伴うメモリセルの劣化等が原因であるが、バッドブロックの増加は、フラッシュメモリの歩留りを低下させ、あるいはメモリアレイの利用効率を低下させる。
【０００７】
本発明は、上記従来の課題を解決し、歩留りを向上させ、メモリアレイの利用効率を向上させることができる半導体記憶装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明に係るフラッシュメモリの消去方法は、選択ブロックに消去パルスを印加するステップと、選択ブロックの消去ベリファイが不合格であり、かつ消去パルスの印加回数が予め決められた回数に到達した場合には、選択ブロックのＮＡＮＤストリングの不良数を検出するステップと、検出されたＮＡＮＤストリングの不良数が一定数以下であるとき、当該選択ブロックを使用可能な状態で消去を終了し、不良数が一定数を超えるとき、当該選択ブロックを使用不可能なバッドブロックとして管理するステップとを有する。
【０００９】
好ましくは前記一定数は、誤り検出・訂正によって救済可能なビット数以下である。
【００１０】
本発明に係るフラッシュメモリのプログラム方法は、選択ブロックのＮＡＮＤストリングの不良数を検出するステップと、検出されたＮＡＮＤストリングの不良数に基づき、プログラムベリファイにおいて許容可能な不合格ビット数を決定するステップと、選択ブロックの選択ページにプログラムパルスを印加するステップと、前記許容可能な不合格ビット数に基づき選択ページのプログラムベリファイを行うステップと、を有する。
【００１１】
好ましくは前記許容可能な不合格ビット数は、誤り検出・訂正によって救済可能なビット数以下である。好ましくは前記許容可能な不合格ビット数は、ＮＡＮＤストリングの不良数の増加に応じて減算される。好ましくは前記プログラムベリファイは、選択ページのプログラム不良ビット数が前記許容可能な不合格ビット数以下であるとき疑似合格と判定する。好ましくはＮＡＮＤストリングの不良数を検出するステップは、選択ブロックの共通ソース線からＮＡＮＤストリングに電圧を印加して読出しを行うリバース読出しをするステップを含む。好ましくはプログラム方法は、プログラムすべきデータの誤り検出・訂正処理を行うステップを含み、ＮＡＮＤストリングの不良による誤りは、データの読出し時に前記誤り検出・訂正処理によって訂正される。
【００１２】
本発明に係る半導体記憶装置は、複数のＮＡＮＤストリングを含むメモリアレイと、ビット線を介して前記メモリアレイのＮＡＮＤストリングに接続され、ＮＡＮＤストリングの不良の有無を出力する出力回路と、複数の前記出力回路に接続され、選択ブロックのＮＡＮＤストリングの不良数を検出する検出回路とを含む。
【００１３】
好ましくは前記検出回路は、前記複数の出力回路のＮＡＮＤストリングの不良の有無に応じた検出電圧を生成する第１の回路と、基準電圧を生成する第２の回路と、前記検出電圧と前記基準電圧とを比較する比較回路とを含み、当該比較回路は、前記複数の出力回路に接続されたＮＡＮＤストリングの不良数を検出する。好ましくは半導体記憶装置はさらに、選択ブロックの共通ソース線からＮＡＮＤストリングに電圧を印加し、選択ブロックの全ページにベリファイ電圧を印加することで、選択ブロックの複数のＮＡＮＤストリングのリバース読出しを行う手段を含み、前記出力回路は、前記リバース読出し手段の読出し結果に基づきＮＡＮＤストリングの不良の有無を出力する。好ましくは半導体記憶装置はさらに、選択ブロックを消去する消去手段を含み、前記消去手段は、選択ブロックの消去ベリファイが不合格であり、かつ消去パルスの印加回数が予め決められた回数に到達した場合において、前記検出回路により検出されたＮＡＮＤストリングの不良数が一定数以下であるとき、当該選択ブロックを使用可能な状態で消去を終了し、不良数が一定数を超えるとき、当該選択ブロックを使用不可能なバッドブロックとして管理する。好ましくは半導体記憶装置はさらに、選択ブロックの選択ページをプログラムするプログラム手段を含み、前記プログラム手段は、前記検出回路により検出されたＮＡＮＤストリングの不良数に基づき設定された許容可能な不合格ビット数に基づき選択ページのプログラムベリファイを行う。好ましくは半導体記憶装置はさらに、プログラムすべきデータおよび前記メモリアレイ読み出されたデータの誤り検出・訂正を行う回路を含み、前記不合格ビット数は、前記誤り検出・訂正を行う回路によって救済可能なビット数以下である。好ましくは前記出力回路は、ページバッファ／センス回路を含む。
【発明の効果】
【００１４】
本発明によれば、選択ブロックのＮＡＮＤストリングの不良数を検出することで、一定数以下のＮＡＮＤストリングの不良を含むブロックを使用可能にすることができる。さらに本発明によれば、検出されたＮＡＮＤストリングの不良数に応じてプログラムベリファイ時に疑似合格と判定する不合格ビット数を決定することで、ＮＡＮＤストリングの消去不良に伴うデータの誤りを、プログラム時のプログラム不良から除外し、疑似合格の判定精度を維持しつつ、一部のＮＡＮＤストリングの不良が含まれるブロックへのプログラムが可能になる。
【図面の簡単な説明】
【００１５】
【図１】従来のフラッシュメモリの消去動作を説明するフローチャートである。
【図２】従来の消去ベリファイの判定回路を示す図である。
【図３】本発明の実施例に係るＮＡＮＤ型フラッシュメモリの全体の概略構成を示す図である。
【図４】本発明の実施例に係るメモリセルアレイのＮＡＮＤストリングの構成を示す回路図である。
【図５】本発明の実施例に係るフラッシュメモリの動作時に各部に印加される電圧の一例を示す図である。
【図６】本発明の実施例によるプログラム動作時のレギュラー領域のＥＣＣ処理を説明する図である。
【図７】本発明の実施例によるプログラム動作時のスペア領域のＥＣＣ処理を説明する図である。
【図８】本発明の実施例に係る疑似合格を判定する判定回路とページバッファ／センス回路との接続関係を示す図である。
【図９】本発明の実施例に係る判定回路とページバッファ／センス回路の構成を示す図である。
【図１０】本発明の実施例に係る判定回路において疑似合格の判定をするときの各部の電流値を示すテーブルである。
【図１１】本発明の実施例に係る消去動作を説明するフローチャートである。
【図１２】本発明の実施例に係るプログラム動作を説明するフローチャートである。
【図１３】本発明の実施例に係るプログラム動作を説明するフローチャートである。
【図１４】第１の方法によりＮＡＮＤストリングの不良数を検出するときの各ノードの論理を表したテーブルである。
【図１５】第２の方法によりＮＡＮＤストリングの不良数を検出するときの各ノードの論理を表したテーブルである。
【発明を実施するための形態】
【００１６】
次に、本発明の実施の形態について図面を参照して詳細に説明する。ここでは、好ましい形態としてＮＡＮＤ型のフラッシュメモリを例示する。なお、図面は、分かり易くするために各部を強調して示してあり、実際のデバイスのスケールとは異なることに留意すべきである。
【実施例】
【００１７】
本発明の実施例に係るフラッシュメモリの典型的な構成を図３に示す。但し、ここに示すフラッシュメモリの構成は例示であり、本発明は、必ずしもこのような構成に限定されるものではない。本実施例のフラッシュメモリ１００は、複数のメモリセルが行列状に配列されたメモリアレイ１１０と、外部入出力端子Ｉ／Ｏに接続され入出力データを保持する入出力バッファ１２０と、メモリアレイ１１０にプログラムするデータやそこから読み出されたデータの誤り検出・訂正を行うＥＣＣ回路１３０と、入出力バッファ１２０からのアドレスデータを受け取るアドレスレジスタ１４０と、入出力バッファ１２０からのコマンドデータや外部からの制御信号を受け取り、各部を制御する制御部１５０と、アドレスレジスタ１４０から行アドレス情報Ａｘを受け取り、行アドレス情報Ａｘをデコードし、デコード結果に基づきブロックの選択およびワード線の選択等を行うワード線選択回路１６０と、ワード線選択回路１６０によって選択されたページから読み出されたデータを保持したり、選択されたページへの書込みデータを保持するページバッファ／センス回路１７０と、アドレスレジスタ１４０から列アドレス情報Ａｙを受け取り、列アドレス情報Ａｙをデコードし、当該デコード結果に基づきページバッファ／センス回路１７０内のデータの選択等を行う列選択回路１８０と、データの読出し、プログラムおよび消去等のために必要な種々の電圧（書込み電圧Vpgm、パス電圧Vpass、読出しパス電圧Vread、消去電圧Versなど）を生成する内部電圧発生回路１９０とを含んで構成される。
【００１８】
メモリアレイ１１０は、列方向に配置されたｍ個のメモリブロックBLK(0)、BLK(1)、・・・、BLK(m-1)を有する。ブロックBLK(0)に近接して、ページバッファ／センス回路１７０が配置される。１つのメモリブロックには、例えば、図４に示すように、複数のメモリセルを直列に接続したＮＡＮＤストリングユニットＮＵが複数形成され、１つのメモリブロック内にｎ＋１個のストリングユニットＮＵが行方向に配列されている。セルユニットＮＵは、直列に接続された複数のメモリセルMCi(i=０、１、・・・、３１)と、一方の端部であるメモリセルMC31のドレイン側に接続された選択トランジスタTDと、他方の端部であるメモリセルMC0のソース側に接続された選択トランジスタTSとを含み、選択トランジスタTDのドレインは、対応する１つのビット線GBLに接続され、選択トランジスタTSのソースは、共通のソース線SLに接続される。
【００１９】
メモリセルMCiのコントロールゲートは、ワード線WLiに接続され、選択トランジスタTD、TSのゲートは、ワード線WLと並行する選択ゲート線SGD、SGSに接続される。ワード線選択回路１６０は、行アドレスＡｘまたは変換されたアドレスに基づきブロックを選択するとき、ブロックの選択ゲート信号SGS、SGDを介して選択トランジスタTD、TSを選択的に駆動する。図４は、典型的なセルユニットの構成を示しているが、セルユニットは、ＮＡＮＤストリング内に１つまたは複数のダミーセルを包含するものであってもよい。
【００２０】
メモリセルは、典型的に、Ｐウエル内に形成されたＮ型の拡散領域であるソース／ドレインと、ソース／ドレイン間のチャンネル上に形成されたトンネル酸化膜と、トンネル酸化膜上に形成されたフローティングゲート（電荷蓄積層）と、フローティングゲート上に誘電体膜を介して形成されたコントロールゲートとを含むＭＯＳ構造を有する。フローティングゲートに電荷が蓄積されていないとき、つまりデータ「１」が書込まれているとき、しきい値は負状態にあり、メモリセルは、ノーマリオンである。フローティングゲートに電子が蓄積されたとき、つまりデータ「０」が書込まれているとき、しきい値は正にシフトし、メモリセルは、ノーマリオフである。但し、メモリセルは、１ビット（２値データ）を記憶するＳＬＣタイプでもよいし、多ビットを記憶するＭＬＣタイプであってもよい。
【００２１】
図５は、フラッシュメモリの各動作時に印加されるバイアス電圧の一例を示したテーブルである。読出し動作では、ビット線に或る正の電圧を印加し、選択されたワード線に或る電圧（例えば０Ｖ）を印加し、非選択ワード線にパス電圧Vpass（例えば４．５Ｖ）を印加し、選択ゲート線SGD、SGSに正の電圧（例えば４．５Ｖ）を印加し、ビット線側選択トランジスタTD、ソース線側選択トランジスタTSをオンし、共通ソース線に０Ｖを印加する。プログラム（書込み）動作では、選択されたワード線に高電圧のプログラム電圧Vpgm（１５〜２０Ｖ）を印加し、非選択のワード線に中間電位（例えば１０Ｖ）を印加し、ビット線側選択トランジスタTDをオンさせ、ソース線側選択トランジスタTSをオフさせ、「０」または「１」のデータに応じた電位をビット線GBLに供給する。消去動作では、ブロック内の選択されたワード線に０Ｖを印加し、Ｐウエルに高電圧（例えば２０Ｖ）を印加し、フローティングゲートの電子を基板に引き抜くことで、ブロック単位でデータを消去する。
【００２２】
プログラム動作時に入出力バッファ１２０を介して入力データ（プログラムすべきデータ）Ｄｉがページバッファ／センス回路１７０にロードされると、ＥＣＣ回路１３０は、ページバッファ／センス回路１７０から転送された入力データＤｉを演算し、プログラムデータの誤り検出訂正に必要な誤り訂正符号またはパリティビットを生成する。ＥＣＣの演算は、例えば、ハミングコードやリード・ソロモンなどの公知の手法によって行われ、入力されたｋビットまたはｋバイトの入力データＤｉをｐ＝ｋ＋ｑに変換する。「ｑ」は、入力データＤｉの誤り検出訂正に必要な誤り訂正符号またはパリティビットである。１つの好ましい例では、ＥＣＣ回路１３０は、誤り訂正符号をページバッファ／センス回路１７０のスペア領域にセットする。こうして、ページバッファ／センス回路１７０にセットされた入力データＤｉと誤り訂正符号がメモリアレイ１１０の選択ページにプログラムされる。
【００２３】
読出し動作時、メモリアレイ１１０の選択ページから読み出されたデータがページバッファ／センス回路１７０に保持されると、ＥＣＣ回路１３０は、ページバッファ／センス回路１７０から転送された誤り訂正符号に基づき読出しデータの誤りの検出を行い、誤りが検出された場合には訂正したデータをページバッファ／センス回路１７０にセットする。そして、ページバッファ／センス回路１７０に保持されたデータが入出力バッファ１２０を介して出力される。
【００２４】
図６に、ＥＣＣ処理の一例を示す。制御部１５０は、入出力バッファ１２０を介してプログラムコマンドを受け取ると、プログラムのためのシーケンスを開始する。フラッシュメモリ１００が×８の外部入出力端子を有するとき、外部入出力端子Ｐ０〜Ｐ７から各Ｉ／Ｏバッファ１２０−１〜１２０−７を介してページバッファ／センス回路１７０に入力データＤｉがロードされる。ページバッファ／センス回路１７０は、例えば、セクタ０〜セクタ７の８つのセクタに分割されたレギュラー領域３００と、スペア０、スペア１、スペア２、スペア３の４つのセクタに分割されたスペア領域３１０とを有する。
【００２５】
レギュラー領域３００の１つのセクタは、例えば、２５６バイトから構成され、この場合、レギュラー領域３００の８つのセクタは、全体で約２Ｋバイトのプログラムデータを保持することができる。スペア領域３１０の１つのセクタは、例えば１６バイトから構成され、この場合、４つのセクタ（スペア０〜スペア３）は全体で６４バイトのデータを保持することができる。スペア領域３１０の１つのセクタは、例えば、不良メモリセルを含むバッドブロックを識別する情報を記憶する領域３１１、ユーザーデータに関する情報を記憶する領域３１２、レギュラー領域３００の２つセクタについての誤り訂正符号（パリティビット）を記憶する領域３１３、３１４、スペア領域３１０がＥＣＣ演算されたときの誤り訂正符号（パリティビット）を記憶する領域３１５を有する。スペア領域３１０のスペア０の領域３１３、３１４は、レギュラー領域３００のセクタ０、セクタ１の誤り訂正符号（パリティビット）をそれぞれ記憶し、スペア領域３１０のスペア１の領域３１３、３１４は、レギュラー領域３００のセクタ２、セクタ３の誤り訂正符号（パリティビット）を記憶する。同様に、スペア領域３１０のスペア２は、レギュラー領域３００のセクタ４、セクタ５のパリティビットを記憶し、スペア領域３１０のスペア３は、レギュラー領域３００のセクタ６、セクタ７のパリティビットを記憶する。
【００２６】
レギュラー領域３００の１つのセクタには、入出力バッファ１２０−０〜１２０−７が割り当てられ、つまり、１つの外部入出力端子には２５６ビットが割り当てられる（２５６bit×８＝１セクタ）。列選択回路１８０は、プログラム動作時に受け取った列アドレス情報Ａｙをデコードし、当該デコード結果に基づき、外部入出力端子Ｐ−０〜Ｐ７に入力されたデータがロードされるセクタを選択する。図６は、外部入出力端子Ｐ−０〜Ｐ−７で受け取られたデータが列アドレス情報Ａｙに従いセクタ０にロードされる例を示している。
【００２７】
ここに示す例では、ＥＣＣ回路１３０が誤り訂正符号を書込むための書込み回路を含む。好ましくは、ＥＣＣ回路１３０は、レギュラー領域３００の１つのセクタと等しいバイト数のデータについてＥＣＣ演算を行うことができる。レギュラー領域３００の１つのセクタが２５６バイトであれば、ＥＣＣ回路は、２５６バイトのデータについてＥＣＣ演算を行い、例えば、１ビットの誤りを訂正する誤り訂正符号を生成する。この場合、全体の８セクタでは、最大で８ビットの誤りを訂正することができる。
【００２８】
ＥＣＣ回路１３０は、生成された誤り訂正符号をスペア領域３１０の対応するセクタの領域３１３または３１４に書込む。図６に示す例では、プログラムデータがレギュラー領域３００のセクタ０にロードされるので、誤り訂正符号は、スペア０のセクタ０のパリティを記憶する領域３１３に書込まれる。
【００２９】
図７に、スペア領域３１０のデータのＥＣＣ処理を例示する。レギュラー領域３００の各セクタについてＥＣＣ処理が終了すると、次に、スペア領域３１０の各セクタについてＥＣＣ処理が行われる。スペア領域３１０の１つセクタ内に含まれるどのデータのＥＣＣ処理を行うかは任意であるが、本例では、領域３１２ないし領域３１４のデータについてＥＣＣ処理を行うものとする。それ故、スペア０の領域３１２ないし領域３１４のデータがＥＣＣ回路１３０に転送され、ＥＣＣ処理によって生成された誤り訂正符号が、ＥＣＣ回路１３０によってスペア０の領域３１５に書込まれる。同様の処理が、他のスペア１ないしスペア３についても行われる。ＥＣＣ処理が終了すると、メモリアレイ１１０の選択ページへのプログラムが開始される。
【００３０】
本実施例のようにＥＣＣ回路がオンチップ搭載されたフラッシュメモリ、あるいは外部のコントローラ等に搭載されたＥＣＣ機能を利用するフラッシュメモリでは、プログラムベリファイにおいて一部の不合格ビット（「０」プログラムが不合格のメモリセル）があったとしても、これをＥＣＣで救済することが可能である。例えば、ＥＣＣによってＮｃｃビットの誤り検出・訂正が可能であれば、理論上、最大でＮｃｃビットの不合格ビットを救済することができる。このような不合格ビットを合格と判定する疑似合格の判定スキームを用いる場合には、プログラムベリファイにおいて、不合格ビット数Ｎが疑似合格するか否かが判定される。疑似合格の判定において許容可能なビット数をＮｐとしたとき、Ｎ≦Ｎｐであれば、疑似合格と判定される（なお、Ｎｐ≦Ｎｃｃの関係にある）。疑似合格の判定が成されると、プログラム動作を終了し、選択ページには、「０」不良の不合格ビットがそのまま記憶される。選択ページの読出しを行う場合には、選択ページに含まれる不合格ビットが誤りとして検出され、このデータが訂正される。疑似合格の判定スキームを利用することで、プログラム失敗やバッドブロックを減らし、歩留まりを向上させ、さらにプログラムパルスの印加回数を抑制することで、プログラムディスターブを減らすことができる。
【００３１】
次に、本実施例の疑似合格を判定する判定回路について説明する。図８は、疑似合格を判定する判定回路とページバッファ／センス回路との接続関係を示す図である。１つの好ましい態様では、ＥＣＣ処理がセクタ単位で行われるとき、１つの判定回路２００は、１つのセクタに用意される。例えば、図６に示すように、１つのページが８つのセクタに分割され、１つのセクタが２５６バイトから構成されるとき、１つの判定回路は、１つのセクタ、すなわち２５６×８個のページバッファ／センス回路１７０＿１、１７０＿２、１７０＿３〜１７０＿２５６×８に接続される。このため、１つのページには８つの判定回路が用意される。
【００３２】
図８に示すように、判定回路２００は、ノードＮ１、Ｎ２、Ｎ３を介して配線ＰＢ＿ＵＰ、ＰＢ＿ＭＧ、ＰＢ＿ＤＩＳに接続され、これらの配線ＰＢ＿ＵＰ、ＰＢ＿ＭＧ、ＰＢ＿ＤＩＳは、２５６×８個のページバッファ／センス回路１７０＿１〜１７０＿２５６×８が並列となるように共通に接続される。ＥＣＣ回路１３０が２５６バイトのデータについてＥＣＣ演算を行うとき、例えば最大で４ビットの誤りを救済することが可能であるならば、判定回路２００は、最大で４ビットの不合格ビット（データ「０」のプログラム不良）を疑似合格と判定することが許容される。
【００３３】
他の好ましい態様では、ＥＣＣ処理がセクタ単位でなく、ページ単位で行われるものであるとき、１つのページに１つの判定回路が用意されるようにしてもよい。この場合、１つの判定回路は、ＥＣＣ回路によって救済可能な誤りビットの最大値を許容可能な不合格ビットとして疑似合格するか否か判定することができる。
【００３４】
次に、判定回路の詳細について説明する。図９に、１つの判定回路とこれに接続される１つのページバッファ／センス回路１７０の構成を示す。ページバッファ／センス回路１７０は、典型的に、電圧供給部V1からの電圧をビット線にプリチャージするためのトランジスタBLPRE、ビット線をクランプするためのトランジスタBLCLAMP、センスノードSNSとラッチノードSLR間の電荷転送を可能にするためのトランジスタBLCD、ラッチノードSLRの電位を電圧供給部V2に接続されたトランジスタVGに転送するためのトランジスタDTG、電圧供給部V2をセンスノードSNSに結合するためのトランジスタREGを含む。トランジスタDTGは、例えば、プログラムベリファイ等においてセンスノードSNSをＬレベルからＨレベルに反転させる必要があるときに動作され、あるいはこれ以外にもセンスノードSNSをHレベルからLレベルに反転させる場合に動作される。ページバッファ／センス回路１７０はさらに、一対のインバータをクロスカップリングしたラッチ回路を含み、ラッチ回路は、ノードSLR／SLSを等価するためのトランジスタEQ_ENと、ノードSLR／SLSをデータラインへ結合するためのトランジスタCSLと、ノードSLSに結合されたトランジスタQ1と、トランジスタQ1に直列に接続されたトランジスタQ2とを含む。
【００３５】
ページバッファ／センス回路１７０はさらに、プログラムベリファイの合否の結果を出力するための回路を含む。当該回路は、配線PB_UPと配線PB_DISとの間に直列に接続された２つのNMOSトランジスタQ1、Q2を含む。トランジスタQ1のゲートには、ラッチノードSLSが供給され、トランジスタQ2のゲートには、配線PB_MGが接続される。配線PB_UPは、判定回路２００のノードN1に接続され、配線PB_MGは、ノードN2に接続され、配線PB_DISは、ノードN3に接続される。トランジスタQ2は、後述するようにトランジスタQ5、Q8と同じサイズWのトランジスタから構成され、トランジスタQ2は、トランジスタQ1が導通するとき、基準電流Irefを流す。プログラムベリファイが合格であるとき、ラッチノードSLSがLレベルとなり、トランジスタQ1がオフとなり、配線PB_UPから配線PB_DISには電流が流れないため、配線PB_UPの電圧は変動しない。プログラムベリファイが不合格であるとき、ラッチノードSLSがHレベルとなり、トランジスタQ1がオンし、このときトランジスタQ2が基準電流Irefを流すため、配線PB_UPの電圧は基準電流Irefによって降下する。
【００３６】
判定回路２００は、電圧供給源に接続されたPMOSトランジスタQ3、Q4、可変抵抗R1、R2、比較器CMP、NMOSトランジスタQ5、Q6、Q7、Q8を含む。PMOSトランジスタQ3、Q4は、電流源として機能し、可変抵抗R1、R2は、それぞれ可変抵抗R1、R2から出力される電圧が等しくなるように調整される。つまり初期設定として、配線PB_UPの電圧と基準電圧Vrefとが等しくなるように抵抗R1、R2が調整される。可変抵抗R1の出力、すなわち配線PB_UPの電圧が比較器CMPの一方の入力端子（＋）に接続され、可変抵抗R2の出力、すなわち基準電圧Vrefが比較器CMPの他方の入力端子（−）に接続される。比較器CMPは、２つの入力電圧を比較し、HレベルまたはLレベルの電圧を出力する。Hレベルは、疑似合格を表し、Lレベルは、不合格を表す。
【００３７】
トランジスタQ5は、定電流源に接続され、基準電流Irefを流す。トランジスタQ5のゲートは、ノードN2、すなわち配線PB_MGに接続される。トランジスタQ6は、可変抵抗R2に直列に接続され、そのゲートはノードN2に接続される。トランジスタQ6とGNDとの間にトランジスタQ7が直列に接続され、トランジスタQ7のゲートには、JUDGEON信号が供給される。プログラムベリファイが行われるときJUDGEON信号がHレベルに駆動され、トランジスタQ7が導通状態になる。トランジスタQ6とトランジスタQ7との接続ノードは、ノードN3、すなわち配線PB_DISに接続される。ここで、トランジスタQ6のサイズ（W/２）は、トランジスタQ5、Q2のサイズ（W）の半分であり、それ故、トランジスタQ6は、トランジスタQ7がオンしたとき、１／２のIrefを流す。
【００３８】
トランジスタQ8は、判定回路２００によって疑似合格であるか否かを判定する不合格ビット数Ｎに応じて設けられる。判定回路２００によって疑似合格か否かを判定する不合格ビット数が０ビットの場合には、トランジスタQ8は事実上不要であるか、あるいは設けられていたとしても、トランジスタQ8の動作はディスエーブルされる（Ｎ＝０）。１ビットの不合格ビットが疑似合格するか否かを判定するならば、トランジスタQ8は１つ必要であり（Ｎ＝１）、２ビットの不合格ビットが疑似合格するか否かを判定するならば、並列接続されたトランジスタQ8は２つ必要である（Ｎ＝２）。判定回路２００によって疑似合格か否かを判定することができる不合格ビット数の最大値は、ＥＣＣ回路１７０によって救済されるビット数の最大値である。
【００３９】
図９には、１つのトランジスタQ8が例示されるが、トランジスタQ8は、上記したように疑似合格か否かを判定する不合格ビットの数Ｎに応じて設けられる。トランジスタQ8は、基準電圧Vrefと配線PB_DISとの間に接続され、そのゲートは配線PB_MGに接続される。トランジスタQ8のサイズ（W）は、トランジスタQ5、Q2と同じサイズ（W）であり、トランジスタQ8は、トランジスタQ7が導通するとき、基準電流Irefを流す。
【００４０】
トランジスタQ8は、疑似合格か否かを判定する不合格ビットの数（Ｎ）に応じて用意されるが、Ｎの数に応じてトランジスタQ8を接続し、それらのトランジスタQ8が全て動作するようにしてもよいし、あるいは接続された複数のトランジスタQ8の中から動作されるトランジスタQ8の数を任意に選択するようにしてもよい。図１０（Ｂ）は、接続されたトランジスタQ8の中から動作されるトランジスタQ8の数を選択する方法の一例を示している。基準電圧Vrefと配線PB_DISとの間に、トランジスタQ8_1とトランジスタQ10が直列に接続され、さらにこれらトランジスタと並列にトランジスタQ8_2とトランジスタQ11が直列に接続される。トランジスタQ10、Q11のゲートには、イネーブル信号EN_1、EN_2が供給され、イネーブル信号EN_1、EN_2をHレベルに駆動したとき、トランジスタQ8_1、Q8_2が基準電流Irefを流すように動作される。イネーブル信号EN_1またはEN_2の一方をLレベルにすることで１つのトランジスタQ8が基準電流Irefを流すように動作され、イネーブル信号EN_1、EN_2の双方をLレベルにすることで２つのトランジスタQ8_1、Q8_2が非動作にされる。イネーブル信号EN_1、EN_2は、例えば制御部１５０からの制御信号に応答して駆動される。ここでは、トランジスタQ10、Q11をスイッチングさせることでトランジスタQ8_1、Q8_2の選択を可能にしているが、トランジスタQ10、Q11を、例えばヒューズに代えることより恒久的に選択されるトランジスタQ8を固定することも可能である。
【００４１】
次に、判定回路２００の動作について説明する。図１０（Ａ）は、判定回路が０ビット、１ビット、または２ビットの不合格ビットの疑似合格を判定するときの各部の電流値および電流値の差分を表したテーブルである。
【００４２】
（１）０ビットの不合格ビットを判定する場合：
先ず、０ビットの不合格ビットの判定について説明する。これは、全ビットのプログラムが成功したか否かを判定することであり、この場合には、トランジスタQ8が全く不要であるか、あるいはトランジスタQ8がディスエーブルである（Ｎ＝０）。プログラムベリファイは、選択ワード線にベリファイ電圧を印加する以外は、通常の読出し動作と同様であり、全ビットのプログラムが成功した場合には、選択メモリセルが非導通であり、全ビット線の電位は放電されず、プリチャージされた電位である。このため、ラッチノードSLSはLレベルであり、トランジスタQ1はオフであり、配線PB_Uの電圧は変動しない。また、ベリファイ時、JUDGEON信号がHレベルに駆動され、トランジスタQ7がオンし、配線PB_DISがGNDレベルとなる。このとき、トランジスタQ6は、１／２Irefの電流を流すため、基準電圧Vrefは、１／２Irefの電圧降下に応じた値となる。その結果、配線PB_UPの電圧が基準電圧Vrefよりも１／２Irefの分だけ高くなるため、比較器CMPは、Hレベルの信号、すなわち合格を出力する。
【００４３】
一方、１ビットの不合格ビットがあるとき、１つのページバッファ／センス回路１７０のラッチノードSLSがHレベルとなり、トランジスタQ1がオンし、トランジスタQ2がIrefの電流を流す。このため、配線PB＿UPの電圧は、Irefの分だけ降下した値になる。その結果、配線PB_UPの電圧は、基準電圧Vrefよりも１／２Irefの分だけ小さくなるため、比較器CMPは、Lレベルの信号、すなわち不合格を出力する。
【００４４】
（２）１ビットの不合格ビットを判定する場合：
１ビットの不合格ビットを判定する場合（Ｎ＝１）、１つのトランジスタQ8が動作可能な状態に置かれる。例えば、図１０（Ｂ）であれば、EN-1がHレベル、EN-2がLレベルに駆動される。上記したように、全ビットのプログラムが成功した場合には、トランジスタQ1がオフであり、配線PB_UPの電圧は変動せず、１ビットの不合格ビットがある場合には、１つのページバッファ／センス回路のトランジスタQ1がオンし、配線PB_UPの電圧は、Irefの分だけ降下する。JUDGEON信号がHレベルに駆動され、トランジスタQ7がオンし、配線PB_DISがGNDレベルになると、トランジスタQ6が１／２Irefの電流を流し、さらに、トランジスタQ8がIrefの電流を流す。このため、基準電圧Vrefは、１／２Iref＋Irefの分だけ降下した値となる。その結果、配線PB_UPの電圧が基準電圧Vrefよりも高くなり、比較器CMPは、Hレベルを出力する。
【００４５】
一方、２ビットの不合格ビットがある場合には、２つのページバッファ／センス回路のトランジスタQ1がオンし、配線PB_UPの電圧は、２×Irefの分だけ降下する。このため、配線PB_UPの電圧は、基準電圧Vrefよりも小さくなり、比較器CMPは、Lレベルを出力する。
【００４６】
（３）２ビットの不合格ビットを判定する場合：
２ビットの不合格ビットを判定する場合（Ｎ＝２）、２つのトランジスタQ8が動作可能な状態に置かれる。例えば、図１０（Ｂ）であれば、EN_1がHレベル、EN_2がHレベルに駆動される。上記したように、２ビットの不合格ビットがある場合には、２つのページバッファ／センス回路のトランジスタQ1がオンし、配線PB_UPの電圧は、２×Irefの分だけ降下する。JUDGEON信号がHレベルに駆動され、トランジスタQ7がオンし、配線PB_DISがGNDレベルになると、トランジスタQ6が１／２Irefの電流を流し、さらに、２つのトランジスタQ8が２×Irefの電流を流す。このため、基準電圧Vrefは、１／２Iref＋２×Irefの分だけ降下した値となる。その結果、配線PB_UPの電圧が基準電圧Vrefよりも高くなり、比較器CMPは、Hレベルを出力する。
【００４７】
一方、３ビットの不合格がある場合には、３つのページバッファ／センス回路のトランジスタQ1がオンし、配線PB_UPの電圧は、３×Irefの分だけ降下する。このため、配線PB_UPの電圧は、基準電圧Vrefよりも小さくなり、比較器CMPは、Lレベルを出力する。
【００４８】
このように、判定回路は、不合格ビット数に応じた基準電流により生成される電圧と、不合格ビット数に応じた基準電流＋１／２基準電流により生成された基準電圧とを比較することにより不合格ビットの疑似合格の判定を行うことができる。
【００４９】
疑似合格の判定スキームに用いられる判定回路２００は、選択ブロックのＮＡＮＤストリングの不良数Ｎｓを検出する検出回路としても使用することができる。ＮＡＮＤストリングの不良数Ｎｓは、例えば、選択ブロックの消去動作時において検出されたり、あるいは、選択ブロックの選択ページへのプログラム動作時において検出される。例えば、従来の選択ブロックの消去は、選択ブロックの全てのＮＡＮＤストリングが合格されることを前提とする。すなわち、選択ブロック内の全ワード線に消去ベリファイ電圧を印加し、共通ソース線からＮＡＮＤストリングにＶｃｃを供給することでリバース読出しを行い、全ビット線のセンスノードがＶｃｃまたはHレベルであれば、消去ベリファイは合格であり、ビット線の１つでもが０VまたはLレベルであれば、消去ベリファイは不合格である。
【００５０】
一方、本実施例作では、判定回路２００により選択ブロック内のＮＡＮＤストリングの不良数Ｎｓを検出し、不良数Ｎｓが一定値以下であれば、当該ブロックを、バッドブロックとして使用不可にするのではなく、そのままプログラム可能なブロックとして使用を可能にする。
【００５１】
図１１に、本実施例の消去動作のフローを示す。ステップＳ１０〜Ｓ５０までのフローは、図１に示すフローと同様である。消去パルスの印加回数が、消去に許される最大の消去パルス印加回数であるＮＭＡＸに到達したか否かが判定され（Ｓ４０）、到達した場合には、さらにＮＡＮＤストリングの不良数Ｎｓが一定値以下か否かが判定される（Ｓ６０）。一定値は、ＥＣＣ回路１３０によって救済可能なビット数Ｎｃｃまたは疑似合格と判定できる最大ビット数Ｎｐに基づき決定され、例えば、一定値≦Ｎｐ≦Ｎｃｃの関係である。ストリングの不良数Ｎｓが一定値以下である場合には、消去動作を終了し、すなわち、このブロックは、その後も継続的に使用される。一方、ストリング不良数Ｎｓが一定値を超える場合には、消去失敗のステータスが外部のコントローラに通知されるとともに、当該ブロックが使用不可であるバッドブロックとして管理される（Ｓ７０）。
【００５２】
次に、ＮＡＮＤストリングの不良数Ｎｓの検出方法について説明する。ＮＡＮＤストリングの不良数の検出は、図９に示すページバッファ／センス回路１７０とこれに接続された判定回路２００により行われる。判定回路２００には、例えば、図１０（Ｂ）に示すように２つのトランジスタQ8が接続され、これに直列に選択用のトランジスタQ10、Q11が接続されているものとする。
【００５３】
（１）０ビットのストリング不良の検出：
制御部１５０によりイネーブル信号EN_1、EN_2がLレベルに駆動され、トランジスタQ8_1、Q8_2が動作不能な状態におかれる。ここで、選択ブロックのリバース読出しが行われる。全てのＮＡＮＤストリングの消去が成功であれば（全てのメモリセルのしきい値分布が「０」）、全てのページバッファ／センス回路１７０のセンスノードSNSはHレベルであり、トランジスタQ1がオフし、比較器CMPは、Hレベルを出力する。この出力は、選択ブロックの消去においてストリング不良数Ｎｓがゼロであることを示す。一方、１ビットのＮＡＮＤストリングの消去が不良であれば（メモリセルのしきい値分布が「１」でない）、１つのページバッファ／センス回路１７０のセンスノードSNSがLレベルであり、トランジスタQ１がオンし、配線PB_UPの電圧が基準電圧Vrefよりも１／２Iref分だけ低くなり、比較器CMPは、Lレベルを出力する。この出力は、選択ブロックの消去においてストリング不良数Ｎｓが１ビットであることを示す。
（２）１ビットのストリング不良の検出：
制御部１５０によりイネーブル信号EN_1またはEN_2の一方がHレベルに駆動され、トランジスタQ8_1またはQ8_2の一方が動作可能な状態におかれる。リバース読出しで、１ビットのＮＡＮＤストリングの不良があるとき、比較器CMPは、Hレベルを出力し、２ビットのストリング不良があるとき、比較器CMPは、Lレベルを出力する。
（３）２ビットのストリング不良の検出：
制御部１５０によりイネーブル信号EN_1およびEN_2の双方がHレベルに駆動され、トランジスタQ8_1およびQ8_2の双方が動作可能な状態におかれる。リバース読出しで、２ビットのＮＡＮＤストリングの不良があるとき、比較器CMPは、Hレベルを出力し、３ビットのストリング不良があるとき、比較器CMPは、Lレベルを出力する。
【００５４】
次に、本実施例のプログラム動作について説明する。本実施例のプログラム動作は、プログラムを行う前に、ＮＡＮＤストリングの不良数Ｎｓを検出し、検出された不良数Ｎｓに基づき疑似合格の判定をする不合格ビット数Ｎを決定する。選択ブロックを消去した際に、消去不良のＮＡＮＤストリングは、データ「０」のメモリセルを含むことになる。このような選択ブロックを使用してプログラムを行う場合、入力データＤｉが「０」または「１」にかかわらず、プログラムベリファイでは、ＮＡＮＤストリング不良のビット線が合格と判定されてしまい、入力データＤｉが正しくプログラムされたか否かを保証することができない。このため、ＮＡＮＤストリングの不良が含まれる場合には、その不良数Ｎｓの数だけ、疑似合格と判定する不合格ビット数を減らさなければならない。
【００５５】
図１２、図１３は、本実施例のプログラム動作を説明するフローチャートである。制御部１５０は、入出力バッファ１２０を介してプログラムコマンド、アドレス、データＤｉを受け取ると、プログラムのためのシーケンスを開始する。入力データＤｉがページバッファ／センス回路１７０にロードされ、次いで、ＥＣＣ回路１３０により入力データＤｉのＥＣＣ処理が行われる（Ｓ１００）。
【００５６】
ＥＣＣ処理が終了すると、プログラムを行う前に、選択ブロックのＮＡＮＤストリングの不良数Ｎｓの検出が行われる。先ず、図９に示すページバッファ／センス回路１７０によりセクタ単位でリバース読出しが行われる（Ｓ１１０）。図１４は、ＮＡＮＤストリングに不良がある場合と、無い場合のそれぞれにおいてデータ「０」、「１」が入力されるときの各ノードの論理値を表した表である。
【００５７】
プログラムすべきデータＤｉがラッチ回路にロードされたとき、ラッチノードSLRは、入力データに応じた論理レベルである。次に、トランジスタDTGが一定期間オンされ、ラッチノードSLRの電荷がノードVGに転送され、そこに保持される。言い換えれば、ノードVGは、リバース読出しの間、プログラムすべきデータを一時的に保持する。次に、リバース読出しが行われる（Ｓ１１０）。リバース読出しは、選択ブロックに接続された共通ソース線からＮＡＮＤストリングに対して、例えばＶｃｃ電圧を供給する。ＮＡＮＤストリングに不良がなければ、それを構成するメモリセルのしきい値は「１」であり、ＮＡＮＤストリングが導通し、センスノードSNSがHレベルになる。一方、ＮＡＮＤストリングに不良があれば、それを構成する少なくとも１つのメモリセルのしきい値は「１」ではないため、ＮＡＮＤストリングが非導通となり、センスノードSNSがLレベルになる。次に、トランジスタBLCDが一定期間オンし、センスノードSNSの電荷がラッチノードSLRに転送される（Ｓ１１２）。ラッチノードSLRがHレベルであるとき、ラッチノードSLSがLレベルとなり、トランジスタQ1がオフし、反対に、ラッチノードSLRがLレベルであるとき、ラッチノードSLSがHレベルとなり、トランジスタQ1がオンする。
【００５８】
ここで、判定回路２００が、例えば、最大で２ビットの不合格ビットの疑似合格を判定するとしたとき、上記したように、判定回路２００には、図１０（Ｂ）に示すように２つのトランジスタQ8_1、Q8_2が接続される。制御部１５０は、イネーブル信号EN_1、EN_2により２つのトランジスタQ8_1、Q8_2を動作可能状態にし、ＮＡＮＤストリングの不良数Ｎｓが２ビットか否かを判定する（Ｓ１１４）。比較器CMPの出力がLレベルであれば、ストリングの不良数Ｎｓは３ビットであり、この場合、制御部１５０は、疑似合格の不合格ビット数を０ビット（Ｎ＝０）に設定する（Ｓ１２２）。すなわち、イネーブル信号EN_1、EN_2の双方をLレベルの駆動し、トランジスタQ8_1、Q8_2を動作不能状態にする（Ｓ１２２）。従って、プログラムベリファイでは、選択ページの全ビットが合格したか否かが判定される。
【００５９】
比較器CMPの出力がHレベルであれば、ストリングの不良数Ｎｓは２ビット以下であり、この場合には、次にストリングの不良数Ｎｓが１ビットか否かが判定される（Ｓ１３０）。制御部１５０は、トランジスタQ8_1、Q8_2のいずれか一方を動作可能状態にし、１ビットか否かを判定する。比較器CMPの出力がLレベルであれば（Ｓ１３２）、ストリングの不良数Ｎｓは２ビットであり、この場合にも、制御部１５０は、疑似合格の不合格ビット数を０ビット（Ｎ＝０）に設定する（Ｓ１３４）。
【００６０】
比較器CMPの出力がHレベルであれば、ストリングの不良数Ｎｓは１ビット以下であり、この場合には、次にストシングの不良数Ｎｓが０ビットか否かが判定される（Ｓ１４０）。制御部１５０は、トランジスタQ8_1、Q8_2の双方を動作不能状態にし、０ビットか否かを判定する。比較器CMPの出力がLレベルであれば（Ｓ１４２）、ストリングの不良数Ｎｓは１ビットであり、この場合、制御部１５０は、疑似合格の不合格ビット数を１ビット（Ｎ＝１）に設定する（Ｓ１４４）。すなわち、トランジスタQ8_1、Q8_2のいずれか一方が動作可能状態となるようにイネーブル信号EN_1、EN_2の一方をHレベルにセットする。
【００６１】
比較器CMPの出力がHレベルであれば、ストリングの不良数Ｎｓは０ビットであり、この場合、制御部１５０は、疑似合格の不合格ビット数を２ビット（Ｎ＝２）に設定する（Ｓ１４６）。すなわち、トランジスタQ8_1、Q8_2の双方が動作可能状態となるようにイネーブル信号EN_1、EN_2の双方がHレベルにセットされる。
【００６２】
ＮＡＮＤストリングの不良数Ｎｓに応じた疑似合格の不合格ビット数Ｎのセットが終了すると、次に、ノードVGに保持されたデータがラッチノードSLRに復元される。先ず、電圧供給部V1をGNDにし、かつトランジスタBLPREを一定期間オンすることでセンスノードSNSをGNDにした後（Ｓ１５０）、電圧供給部V2を０VからVddにし、トランジスタREGを一定期間オンにする。ノードVGにHレベルのとき、電圧供給部V2がVddに遷移するとブートストラップによりノードVGの電位がさらに昇圧され、トランジスタが強くオンされ、センスノードSNSがHレベルに充電される。一方、ノードVGがLレベルである場合には、トランジスタVGがオンしないので、センスノードSNSは、Lレベルのままである。次に、センスノードSNSの電荷がラッチノードSLRに転送され、入力データが復元され（Ｓ１５４）、その後、プログラム動作が開始される。
【００６３】
入力データの復元が終了すると、次に、入力データに従いプログラムが開始される。図１３に示すように、ワード線選択回路１６０により選択ブロックのワード線が選択され、センス回路は、入力データに応じた電圧をビット線に印加し、選択ページにプログラムパルスが印加される（Ｓ２００）。次に、プログラムベリファイが行われる(Ｓ２１０)。ベリファイの結果、選択ページの全ビットが合格であれば、プログラムが終了される（Ｓ２２０）。一方、全ビットが合格していない場合には、制御部１５０は、プログラムパルスの印加回数が最適回数Ｎｏｐに到達したか否かを判定する（Ｓ２３０）。ここで、最適回数Ｎｏｐとは、プログラムにおいて許されるプログラムパルスの最大の印加回数ＮＭＡＸよりも小さい値であり、好ましくは、メモリセルをプログラム不合格と判定する場合に最小限印加されるべきプログラムパルスの回数である。例えば、プログラムに許容される最大時間が７００μｓであり、１回のプログラムパルスの印加に要する時間が５０μｓとした場合、ＮＭＡＸ＝７００μｓ、またはＮＭＡＸ＝１４回である。最適回数Ｎｏｐは、典型的なメモリセルがプログラム合格されるときのプログラムパルスの印加回数に基づき決定することができる。例えば、統計的な手法によりプログラム合格されるメモリセルに印加されたプログラムパルスの平均回数Ｎａｖが算出されたとき、最適回数Ｎｏｐは、Ｎｏｐ＝Ｎａｖに設定することができる。この最適回数Ｎｏｐは、例えば、外部のコントローラから受信したコマンド等によって設定することが可能であり、設定された値は、制御部１５０のレジスタ等に保持される。
【００６４】
制御部１５０は、プログラムパルスの印加回数が最適回数Ｎｏｐに到達していない場合には（Ｓ２３０）、ＩＳＰＰに従い、前回よりもΔＶだけ大きなプログラムパルスを選択ページに印加する（Ｓ２４０）。一方、プログラムパルスの印加回数が最適回数Ｎｏｐに到達した場合には（Ｓ２３０）、制御部１５０は、選択ページが疑似合格であるか否かを判定するステップを行う（Ｓ２５０）。疑似合格とされる不合格ビット数Ｎは、上記したように、ＥＣＣによって救済できる最大のビット数Ｎｃｃ以下であり、ベリファイ時の不合格ビット数、すなわち選択ページに実際に生じている不合格ビット数が疑似合格の不合格ビット数Ｎ以下であれば、疑似合格と判定される（Ｓ２５０）。疑似合格と判定されるとプログラム動作が終了し、選択ページには、「０」不良の不合格ビットがそのまま記憶されたことになる。
【００６５】
一方、疑似合格していないと判定されたとき（Ｓ２５０）、制御部１５０は、プログラムパルスの印加回数がＮＭＡＸに到達したか否かを判定し（Ｓ２６０）、到達していなければ、ＩＳＰＰに従いさらにプログラムパルスが選択ページに印加される（Ｓ２４０、Ｓ２００）。プログラムパルスの印加回数がＮＭＡＸに到達した場合には、プログラム失敗のステータスを外部のコントローラに通知し、当該選択ページを含むブロックがバッドブロックとして管理される。この場合、スペア領域の領域３１１にバッドブロックである識別情報が記憶される。
【００６６】
ここで、選択ブロックにＮＡＮＤストリングの不良数Ｎｓが２ビットあるとき、上記したように疑似合格により判定される不合格ビット数は０ビットであるため、図１３のフローにおいて、事実上、疑似合格の判定（Ｓ２５０）は行われないことになる。ＮＡＮＤストリングの不良は、しきい値が「１」でないメモリセルを含み、リバース読出しでは不合格となるが、プログラムベリファイでは合格となる。すなわち、プログラムすべきデータの如何にかかわらず、不良のＮＡＮＤストリングのプログラムベリファイ結果は「０」であり、これは合格となってしまう。このため、選択ブロック内にＮＡＮＤストリングの不良が含まれと、プログラムベリファイは、ＮＡＮＤストリングの不良数Ｎｓに応じた誤りを潜在的に含み得る（不良のＮＡＮＤストリングへのプログラムすべきデータが「１」であるとき）ことになり、プログラムデータと、選択ページから読出したデータとの間には、ストリング不良数Ｎｓに応じた不一致（誤り）が発生する可能性がある。この誤りは、ＥＣＣ回路１３０によって救済されなければならず、その分だけ、判定回路１２０の疑似合格で判定される不合格ビット数への割り当てが減らされることになる。
【００６７】
このように本実施例によれば、選択ブロックのＮＡＮＤストリングの不良数を検出するようにしたので、ＮＡＮＤストリングの不良数ＮｓがＥＣＣ回路によって救済できるビット数以下であれば、従来は、バッドブロックにカウントされていたブロックを使用することが可能になり、メモリアレイの利用効率ないし製造歩留まりを改善することができる。
【００６８】
本発明の好ましい実施の形態について詳述したが、本発明は、特定の実施形態に限定されるものではなく、特許請求の範囲に記載された発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【００６９】
１００：フラッシュメモリ                １１０：メモリアレイ
１２０：入出力バッファ                  １３０：ＥＣＣ回路
１４０：アドレスレジスタ                １５０：制御部
１６０：ワード線選択回路                １７０：ページバッファ／センス回路
１８０：列選択回路                      １９０：内部電圧発生正回路
２００：判定回路                        ２１０：供給回路
３００：レギュラー領域                  ３１０：スペア領域
【図１】
0006371423.tif 000002
【図２】
0006371423.tif 000003
【図３】
0006371423.tif 000004
【図４】
0006371423.tif 000005
【図５】
0006371423.tif 000006
【図６】
0006371423.tif 000007
【図７】
0006371423.tif 000008
【図８】
0006371423.tif 000009
【図９】
0006371423.tif 000010
【図１０】
0006371423.tif 000011
【図１１】
0006371423.tif 000012
【図１２】
0006371423.tif 000013
【図１３】
0006371423.tif 000014
【図１４】
0006371423.tif 000015
【図１５】
0006371423.tif 000016