(57)【特許請求の範囲】
【請求項１】
ＮＡＮＤ型フラッシュメモリのプログラム方法であって、
プログラムすべきデータを受け取るステップと、
当該プログラムすべきデータによりプログラムされるビット数が、誤り検出・訂正手段により救済可能な救済ビット数以下であるか否を判定するステップと、
前記誤り検出・訂正手段により前記プログラムすべきデータの誤り訂正符号を生成するステップと、
前記プログラムすべきデータによりプログラムされるビット数が前記救済ビット数以下であると判定されたとき、選択ページのレギュラー領域にプログラムをすることなく、スペア領域に前記誤り訂正符号をプログラムすることで選択ページへのプログラムを終了するステップと、
を有するプログラム方法。
【請求項２】
プログラム方法はさらに、前記プログラムすべきデータによりプログラムされるビット数が救済ビット数よりも多いと判定されたとき、選択ページのレギュラー領域にプログラムすべきデータをプログラムするステップを有する、請求項１に記載のプログラム方法。
【請求項３】
ＮＡＮＤ型フラッシュメモリのプログラム方法であって、
プログラムすべきデータを受け取るステップと、
当該プログラムすべきデータによりプログラムされるビット数が、誤り検出・訂正手段により救済可能な救済ビット数以下であるか否を判定するステップと、
前記誤り検出・訂正手段により前記プログラムすべきデータの誤り訂正符号を生成するステップと、
前記プログラムすべきデータによりプログラムされるビット数が前記救済ビット数以下であると判定されたとき、選択ページのレギュラー領域にプログラムをすることなく、スペア領域に前記誤り訂正符号をプログラムすることで選択ページへのプログラムを終了するステップと、
前記プログラムすべきデータによりプログラムされるビット数が救済ビット数よりも多いと判定されたとき、選択ページのレギュラー領域にプログラムすべきデータをプログラムするステップとを有し、
前記プログラムするステップはさらに、
選択ページにプログラムパルスを印加するステップと、
選択ページのプログラムの合否を判定するステップと、
不合格であると判定されたとき、プログラムパルスの印加回数がプログラムの許容最大値よりも小さい最適値に到達していない場合には、選択ページにさらにプログラムパルスを印加し、プログラムパルスの印加回数が前記最適値に到達している場合には、選択ページが予め決められた不合格ビット数であれば疑似合格と判定するステップとを有する、プログラム方法。
【請求項４】
メモリアレイと、
プログラムすべきデータの誤り訂正符号を生成する誤り検出・訂正手段と、
プログラムすべきデータおよび前記誤り訂正符号を前記メモリアレイの選択ページにプログラムするプログラム手段とを含み、
前記プログラム手段は、
プログラムすべきデータによりプログラムされるビット数が前記誤り検出・訂正手段により救済可能な救済ビット数以下であるとき、選択ページのレギュラー領域にプログラムをすることなくスペア領域に前記誤り訂正符号をプログラムすることで選択ページのプログラムを終了する、半導体記憶装置。
【請求項５】
前記プログラム手段はさらに、前記プログラムすべきデータによりプログラムされるビット数が救済ビット数より多いとき、選択ページのレギュラー領域にプログラムすべきデータをプログラムする、請求項４に記載の半導体記憶装置。
【請求項６】
前記プログラム手段はさらに、選択ページにプログラムパルスを印加し、選択ページのプログラムが不合格であると判定したとき、プログラムパルスの印加回数がプログラムの許容最大値よりも小さい最適値に到達していない場合には、選択ページにさらにプログラムパルスを印加し、プログラムパルスの印加回数が前記最適値に到達している場合には、選択ページが予め決められた不合格ビット数であれば疑似合格と判定する処理を実行する、請求項５に記載の半導体記憶装置。
【請求項７】
半導体記憶装置は、前記メモリアレイの選択ページのデータを読み出す手段を含み、
前記誤り検出・訂正手段は、読み出された誤り訂正符号に基づき読み出されたデータの誤り検出・訂正を行う、請求項４ないし６いずれか１つに記載の半導体記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体記憶装置、特にＮＡＮＤ型フラッシュメモリのプログラム方法に関する。
【背景技術】
【０００２】
ＮＡＮＤ型フラッシュメモリでは、データのプログラムや消去が繰り返されることで、トンネル絶縁膜の劣化により電荷保持特性が悪化したり、トンネル絶縁膜にトラップされた電荷によりしきい値変動が生じ、ビットエラーを引き起こす。特許文献１は、このようなビットエラー対策として、誤り検出訂正回路（ＥＣＣ：Error Checking Correction）を搭載している。また、特許文献２は、１つのメモリセルにマルチビットのデータを格納するＮＡＮＤ型フラッシュメモリにおいて、マルチビットのデータのエラー訂正スキームを開示している。さらに特許文献３は、訂正したエラー数がしきい値以上の物理ブロックを警告ブロックとしてテーブルに登録し、データ書込み時に警告ブロックの選択の優先順位を下げるフラッシュメモリを開示している。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１０−１５２９８９号公報
【特許文献２】特開２００８−１６５８０５号公報
【特許文献３】特開２０１０−７９４８６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
図１に、ＥＣＣ回路をオンチップで搭載するＮＡＮＤ型フラッシュメモリの要部を示す。外部入出力端子から入力されたプログラムデータは、ページバッファ／センス回路１０へロードされ、ロードされたプログラムデータが転送回路２０を介してＥＣＣ回路３０へ転送される。転送回路２０は、双方向のデータ転送が可能な複数のトランジスタを含み、各トランジスタは、ゲートに共通接続された制御信号ＴＧによって駆動される。ＥＣＣ回路３０は、転送されたプログラムデータの演算を行い、誤り検出・訂正のための誤り訂正符号を生成し、誤り訂正符号をページバッファ／センス回路１０の所定領域に書き戻す。次に、ページバッファ／センス回路１０に保持されたプログラムデータおよび誤り訂正符号がメモリアレイの選択ページにプログラムされる。
【０００５】
図２は、従来のプログラム動作のフローである。選択ページのワード線にはプログラムパルスが印加され、ビット線にはプログラムデータに応じた電圧が設定され、選択ページにプログラムパルスが印加される（Ｓ１０）。次に、選択ページのプログラムベリファイが行われ（Ｓ２０）、選択ページの全てのメモリセルのプログラムが合格したか否かが判定される（Ｓ３０）。全てのメモリセルのプログラムが合格と判定された場合には、プログラムが終了される。プログラムが不合格のメモリセルがある場合には、プログラムパルスの印加回数がＮＭＡＸに到達したか否かが判定される（Ｓ４０）。ここで、ＮＭＡＸとは、プログラムに許容される最大時間またはプログラムに許容される最大のプログラムパルスの印加回数を意味する。ＮＭＡＸに到達した場合には、プログラム失敗のステータスが外部のコントローラに通知されるとともに、当該ブロックがバッドブロックとして管理される。一方、ＮＭＡＸに到達していなければ、ＩＳＰＰ（Incremental Step Program Pulse）に従い、前回のプログラムパルスよりもΔＶだけ大きなステップ電圧を有するプログラムパルスが生成されＳ５０）、このプログラムパルスが選択ページに印加される。
【０００６】
外部のコントローラ等に搭載されたＥＣＣ機能を利用しないか、あるいはＥＣＣを搭載していないフラッシュメモリでは、プログラムベリファイの合格は、全ビットの合格が前提である。これに対し、外部のコントローラ等に搭載されたＥＣＣ機能を利用するか、あるいはＥＣＣがオンチップ搭載されたフラッシュメモリでは、ベリファイにおいて一部の不合格ビット（「０」プログラムが不合格のメモリセル）があったとしても、これをＥＣＣで救済することで疑似合格とすることが可能である。例えば、ＥＣＣによってｍビットの誤り検出・訂正が可能であれば、理論上、最大でｍビットの不合格ビットを救済することができる。ＥＣＣによって救済できる最大のビット数をＮｃｃ、ベリファイにおいて疑似合格とすることができる最大の不合格ビット数をＮｐ、実際の不合格のビット数をＮｆとするとき、Ｎｐは、Ｎｃｃ≧Ｎｐとなるように設定され、好ましくはＮｃｃ＞Ｎｐに設定される。Ｎｐ≧Ｎｆのとき、選択ページは、不合格ビットを含んでいるけれども、不合格ビットがＥＣＣにより救済可能であるため、ベリファイは疑似合格と判定される。そして、選択ページの読出しが行われるとき、選択ページに含まれる不合格ビットが誤りとして検出され、このデータが訂正される。
【０００７】
疑似合格の判定をすることで、プログラム失敗やバッドブロックを減らし、歩留まりを向上させ、さらにプログラムパルスの印加回数を抑制することで、プログラムディスターブを減らすことができる。
【０００８】
しかしながら、疑似合格を用いた従来のプログラム方法には次のような課題がある。例えば、ｋビットまでの不合格ビットが疑似合格とされるとき（Ｎｐ＝ｋ）、プログラムパルスの印加回数がＮＭＡＸに到達する前であれば、ベリファイ時に、実際の不合格ビット数Ｎｆが疑似合格とすることができる最大の不合格ビット数Ｎｐよりも小さくなった時点で自動的にプログラムが終了される。言い換えれば、プログラムパルスの印加回数がＮＭＡＸよりも十分に小さく、印加できる回数にまだ余裕があったとしても、Ｎｆ≦Ｎｐになれば疑似合格と判定され、プログラムが終了してしまう。しかし、プログラムが不合格とされたメモリセルの中には、次のプログラムパルスの印加によって合格し得るものも存在し、本来であれば、このようなメモリセルは、不合格ビットと判定されるのではなく、合格ビットと判定されることが望ましい。疑似合格で不合格ビット数が多くなれば、ＥＣＣの他での機能が大きく制限されてしまう。
【０００９】
本発明は、このような従来の課題を解決するものであり、プログラム不良の歩留まりを改善しつつ不合格メモリセルの救済を行うことができる半導体記憶装置を提供することを目的とする。
【課題を解決するための手段】
【００１０】
本発明に係るＮＡＮＤ型フラッシュメモリのプログラム方法は、選択ページにプログラムパルスを印加するステップと、選択ページのプログラムの合否を判定するステップと、不合格であると判定されたとき、プログラムパルスの印加回数がプログラムの許容最大値よりも小さい最適値に到達していない場合には、選択ページにさらにプログラムパルスを印加し、プログラムパルスの印加回数が前記最適値に到達している場合には、選択ページが予め決められた不合格ビット数であれば疑似合格と判定するステップとを有する。
【００１１】
好ましくはプログラム方法はさらに、選択ページが予め決められた不合格ビット数よりも多い場合には、プログラムパルスの印加回数が前記許容最大値に到達しているか否かを判定し、前記許容最大値に到達していない場合には、選択ページにさらにプログラムパルスを印加し、前記許容最大値に到達している場合には、プログラム失敗としてプログラムを終了するステップを含む。好ましくは前記許容最大値は、選択ページのプログラムに許容されるプログラムパルスの最大印加回数である。好ましくは前記予め決められた不合格ビット数は、誤り検出・訂正によって救済可能なビット数以下である。好ましくは前記最適値は、外部のコントローラによって設定可能である。好ましくはプログラム方法はさらに、プログラムすべきデータの誤り訂正符号を生成するステップと、前記選択ページには、プログラムデータと前記誤り訂正符号とがプログラムされる。
【００１２】
本発明に係るＮＡＮＤ型フラッシュメモリのプログラム方法は、プログラムすべきデータを受け取るステップと、当該プログラムすべきデータによりプログラムされるビット数が、誤り検出・訂正手段により救済可能な救済ビット数以下であるか否を判定するステップと、前記誤り検出・訂正手段により前記プログラムすべきデータの誤り訂正符号を生成するステップと、前記プログラムすべきデータによりプログラムされるビット数が前記救済ビット数以下であると判定されたとき、選択ページのレギュラー領域にプログラムをすることなく、スペア領域に前記誤り訂正符号をプログラムすることで選択ページへのプログラムを終了するステップとを有する。
【００１３】
好ましくはプログラム方法はさらに、前記プログラムすべきデータによりプログラムされるビット数が救済ビット数よりも多いと判定されたとき、選択ページのレギュラー領域にプログラムすべきデータをプログラムするステップを有する。
【００１４】
本発明に係る半導体記憶装置は、メモリアレイと、プログラムすべきデータの誤り訂正符号を生成する誤り検出・訂正手段と、前記プログラムすべきデータおよび前記誤り訂正符号を前記メモリアレイの選択ページにプログラムするプログラム手段とを含み、前記プログラム手段は、選択ページにプログラムパルスを印加し、選択ページのプログラムが不合格であると判定したとき、プログラムパルスの印加回数がプログラムの許容最大値よりも小さい最適値に到達していない場合には、選択ページにさらにプログラムパルスを印加し、プログラムパルスの印加回数が前記最適値に到達している場合には、選択ページが予め決められた不合格ビット数であれば疑似合格と判定する処理を実行する。
【００１５】
本発明に係る半導体装置は、メモリアレイと、プログラムすべきデータの誤り訂正符号を生成する誤り検出・訂正手段と、プログラムすべきデータおよび前記誤り訂正符号を前記メモリアレイの選択ページにプログラムするプログラム手段とを含み、前記プログラム手段は、プログラムすべきデータによりプログラムされるビット数が前記誤り検出・訂正手段により救済可能な救済ビット数以下であるとき、選択ページのレギュラー領域にプログラムをすることなくスペア領域に前記誤り訂正符号をプログラムすることで選択ページのプログラムを終了する。好ましくは半導体記憶装置は、前記メモリアレイの選択ページのデータを読み出す手段を含み、前記誤り検出・訂正手段は、読み出された誤り訂正符号に基づき読み出されたデータの誤り検出・訂正を行う。
【発明の効果】
【００１６】
本発明によれば、プログラムのベリファイにおいて不合格と判定されたとき、プログラムパルスの印加回数が許容最大値よりも小さい最適値に到達していない場合にはさらにプログラムパルスを印加し、プログラムパルスの印加回数が最適値に到達している場合には、選択ページが予め決められた不合格ビット数であれば疑似合格と判定する処理を実行するようにしたので、少なくともプログラムパルスが最適値に到達するまでは、全ビットの合否判定が保証される。これにより、本来であれば合格できるメモリセルを不合格判定から救済することができる。
【図面の簡単な説明】
【００１７】
【図１】従来のフラッシュメモリのＥＣＣ動作を説明する図である。
【図２】従来のフラッシュメモリのプログラム動作を説明するフローチャートである。
【図３】本発明の実施例に係るＮＡＮＤ型フラッシュメモリの全体の概略構成を示す図である。
【図４】本発明の実施例に係るメモリセルアレイのＮＡＮＤストリングの構成を示す回路図である。
【図５】本発明の実施例に係るフラッシュメモリのプログラム時に各部に印加される電圧の一例を示す図である。
【図６】本発明の第１の実施例に係るフラッシュメモリのプログラム動作を説明するフローチャートである。
【図７】本発明の第１の実施例によるプログラム動作時のレギュラー領域のＥＣＣ処理を説明する図である。
【図８】本発明の第１の実施例によるプログラム動作時のスペア領域のＥＣＣ処理を説明する図である。
【図９】本発明の第１の実施例による読出し動作時を説明するフローチャートである。
【図１０】本発明の第２の実施例に係るフラッシュメモリのプログラム動作を説明するフローチャートである。
【図１１】本発明の第３の実施例に係るフラッシュメモリのプログラム動作を説明するフローチャートである。
【発明を実施するための形態】
【００１８】
次に、本発明の実施の形態について図面を参照して詳細に説明する。ここでは、好ましい形態としてＮＡＮＤ型のフラッシュメモリを例示する。なお、図面は、分かり易くするために各部を強調して示してあり、実際のデバイスのスケールとは異なることに留意すべきである。
【実施例】
【００１９】
本発明の実施例に係るフラッシュメモリの典型的な構成を図３に示す。但し、ここに示すフラッシュメモリの構成は例示であり、本発明は、必ずしもこのような構成に限定されるものではない。本実施例のフラッシュメモリ１００は、複数のメモリセルが行列状に配列されたメモリアレイ１１０と、外部入出力端子Ｉ／Ｏに接続され入出力データを保持する入出力バッファ１２０と、メモリアレイ１１０にプログラムするデータやそこから読み出されたデータの誤り検出・訂正を行うＥＣＣ回路１３０と、入出力バッファ１２０からのアドレスデータを受け取るアドレスレジスタ１４０と、入出力バッファ１２０からのコマンドデータや外部からの制御信号を受け取り、各部を制御する制御部１５０と、アドレスレジスタ１４０から行アドレス情報Ａｘを受け取り、行アドレス情報Ａｘをデコードし、デコード結果に基づきブロックの選択およびワード線の選択等を行うワード線選択回路１６０と、ワード線選択回路１６０によって選択されたページから読み出されたデータを保持したり、選択されたページへの書込みデータを保持するページバッファ／センス回路１７０と、アドレスレジスタ１４０から列アドレス情報Ａｙを受け取り、列アドレス情報Ａｙをデコードし、当該デコード結果に基づきページバッファ／センス回路１７０内のデータの選択等を行う列選択回路１８０と、データの読出し、プログラムおよび消去等のために必要な種々の電圧（書込み電圧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をオンし、共通ソース線に０Ｖを印加する。プログラム（書込み）動作では、選択されたワード線に高電圧のプログラム電圧Vprog（１５〜２０Ｖ）を印加し、非選択のワード線に中間電位（例えば１０Ｖ）を印加し、ビット線選択トランジスタTDをオンさせ、ソース線選択トランジスタTSをオフさせ、「０」または「１」のデータに応じた電位をビット線GBLに供給する。消去動作では、ブロック内の選択されたワード線に０Ｖを印加し、Ｐウエルに高電圧（例えば２０Ｖ）を印加し、フローティングゲートの電子を基板に引き抜くことで、ブロック単位でデータを消去する。
【００２５】
プログラム動作時に入出力バッファ１２０を介して入力データＤｉがページバッファ／センス回路１７０にロードされると、ＥＣＣ回路１３０は、ページバッファ／センス回路１７０から転送された入力データＤｉを演算し、入力データＤｉの誤り検出訂正に必要な誤り訂正符号またはパリティビットを生成する。ＥＣＣの演算は、例えば、ハミングコードやリード・ソロモンなどの公知の手法によって行われ、入力されたｋビットまたはｋバイトの入力データＤｉをｐ＝ｋ＋ｑに変換する。本明細書では、「ｑ」を、入力データＤｉの誤り検出訂正に必要な誤り訂正符号またはパリティビットと称する。１つの好ましい例では、ＥＣＣ回路１３０は、誤り訂正符号をページバッファ／センス回路１７０のスペア領域にセットする。こうして、ページバッファ／センス回路１７０にセットされた入力データＤｉと誤り訂正符号がメモリアレイ１１０の選択ページにプログラムされる。
【００２６】
読出し動作時にメモリアレイ１１０の選択ページから読み出されたデータがページバッファ／センス回路１７０に保持されると、ＥＣＣ回路１３０は、ページバッファ／センス回路１７０から転送された誤り訂正符号に基づき読出しデータの誤りの検出、訂正を行い、誤りが検出された場合には訂正したデータをページバッファ／センス回路１７０にセットする。そして、ページバッファ／センス回路１７０の保持されたデータが入出力バッファ１２０を介して出力される。
【００２７】
次に、本発明の第1の実施例に係るプログラム動作を図６のフローを参照して説明する。制御部１５０は、入出力バッファ１２０を介してプログラムコマンドを受け取ると、プログラムのためのシーケンスを開始する。入出力バッファ１２０を介して入力データＤｉがページバッファ／センス回路１７０にロードされ、次いで、ＥＣＣ回路１３０により入力データＤｉのＥＣＣ処理が行われる（Ｓ１００）。
【００２８】
図７に、ＥＣＣ処理の一例を示す。フラッシュメモリ１００が×８の外部入出力端子を有するとき、外部入出力端子Ｐ０〜Ｐ７から各Ｉ／Ｏバッファ１２０−１〜１２０−７を介してページバッファ／センス回路１７０にデータがロードされる。ページバッファ／センス回路１７０は、例えば、セクタ０〜セクタ７の８つのセクタに分割されたレギュラー領域３００と、スペア０、スペア１、スペア２、スペア３の４つのセクタに分割されたスペア領域３１０とを有する。
【００２９】
レギュラー領域３００の１つのセクタは、例えば、２５６バイトから構成され、この場合、レギュラー領域３００の８つのセクタは、全体で約２Ｋバイトのプログラムデータを保持することができる。スペア領域３１０の１つのセクタは、例えば１６バイトから構成され、この場合、４つのセクタ（スペア０〜スペア３）は全体で６４バイトのデータを保持することができる。スペア領域３１０の１つのセクタは、例えば、不良メモリセルを含むバッドブロックを識別する情報を記憶する領域３１１、ユーザーデータに関する情報を記憶する領域３１２、レギュラー領域３００の２つセクタについての誤り訂正符号（パリティビット）を記憶する領域３１３、３１４、スペア領域３１０がＥＣＣ演算されたときの誤り訂正符号（パリティビット）を記憶する領域３１５を有する。スペア領域３１０のスペア０の領域３１３、３１４は、レギュラー領域３００のセクタ０、セクタ１の誤り訂正符号（パリティビット）をそれぞれ記憶し、スペア領域３１０のスペア１の領域３１３、３１４は、レギュラー領域３００のセクタ２、セクタ３の誤り訂正符号（パリティビット）を記憶する。同様に、スペア領域３１０のスペア２は、レギュラー領域３００のセクタ４、セクタ５のパリティビットを記憶し、スペア領域３１０のスペア３は、レギュラー領域３００のセクタ６、セクタ７のパリティビットを記憶する。
【００３０】
レギュラー領域３００の１つのセクタには、入出力バッファ１２０−０〜１２０−７が割り当てられ、つまり、１つの外部入出力端子には２５６ビットが割り当てられる（２５６bit×８＝１セクタ）。列選択回路１８０は、プログラム動作時に受け取った列アドレス情報Ａｙをデコードし、当該デコード結果に基づき、外部入出力端子Ｐ−０〜Ｐ７に入力されたデータがロードされるセクタを選択する。図７は、外部入出力端子Ｐ−０〜Ｐ−７で受け取られたデータが列アドレス情報Ａｙに従いセクタ０にロードされる例を示している。
【００３１】
ここに示す例では、ＥＣＣ回路１３０が誤り訂正符号を書込むための書込み回路を含む。好ましくは、ＥＣＣ回路１３０は、レギュラー領域３００の１つのセクタと等しいバイト数のデータについてＥＣＣ演算を行うことができる。レギュラー領域３００の１つのセクタが２５６バイトであれば、ＥＣＣ回路は、２５６バイトのデータについてＥＣＣ演算を行い、４ビットの誤りを訂正する誤り訂正符号を生成する。
【００３２】
ＥＣＣ回路１３０は、生成された誤り訂正符号をスペア領域３１０の対応するセクタの領域３１３または３１４に書込む。図７に示す例では、プログラムデータがレギュラー領域３００のセクタ０にロードされるので、誤り訂正符号は、スペア０のセクタ０のパリティを記憶する領域３１３に書込まれる。
【００３３】
図８に、スペア領域３１０のデータのＥＣＣ処理を例示する。レギュラー領域３００の各セクタについてＥＣＣ処理が終了すると、次に、スペア領域３１０の各セクタについてＥＣＣ処理が行われる。スペア領域３１０の１つセクタ内に含まれるどのデータのＥＣＣ処理を行うかは任意であるが、本例では、領域３１２ないし領域３１４のデータについてＥＣＣ処理を行うものとする。それ故、スペア０の領域３１２ないし領域３１４のデータがＥＣＣ回路１３０に転送され、ＥＣＣ処理によって生成された誤り訂正符号が、ＥＣＣ回路１３０によってスペア０の領域３１５に書込まれる。同様の処理が、他のスペア１ないしスペア３についても行われる。
【００３４】
再び図６を参照し、ＥＣＣ処理が終了すると（Ｓ１００）、メモリアレイ１１０へのプログラムが開始される。ワード線選択回路１６０によりメモリアレイ１１０のワード線が選択され、ビット線には、ページバッファ／センス回路１７０によって保持されたデータに応じた電圧が供給され、選択ページにプログラムパルスが印加される（Ｓ１１０）。次に、プルグラムベリファイが行われ(Ｓ１２０)、データ「０」がプログラムされたメモリセルのしきい値が一定値以上になっているか否かがチェックされる。ベリファイの結果、選択ページの全ビットが合格であれば、プログラムが終了される。一方、全ビットが合格していない場合には、制御部１５０は、プログラムパルスの印加回数が最適回数Ｎｏｐに到達したか否かを判定する（Ｓ１３０）。
【００３５】
ここで、最適回数Ｎｏｐとは、プログラムにおいて許容されるプログラムパルスの最大の印加回数または最大のプログラム時間であるＮＭＡＸよりも小さい値であり、好ましくは、メモリセルをプログラム不合格と判定する場合に最小限印加されるべきプログラムパルスの回数である。例えば、プログラムに許容される最大時間が７００μｓであり、１回のプログラムパルスの印加に要する時間が５０μｓとした場合、ＮＭＡＸ＝７００μｓ、またはＮＭＡＸ＝１４回である。最適回数Ｎｏｐは、典型的なメモリセルがプログラム合格されるときのプログラムパルスの印加回数に基づき決定することができる。例えば、統計的な手法によりプログラム合格されるメモリセルに印加されたプログラムパルスの平均回数Ｎａｖが算出されたとき、最適回数Ｎｏｐは、Ｎｏｐ＝Ｎａｖに設定することができる。この最適回数Ｎｏｐは、例えば、外部のコントローラから受信したコマンド等によってよって設定することが可能であり、設定された値は、制御部１５０のレジスタ等に保持される。
【００３６】
制御部１５０は、プログラムパルスの印加回数が最適回数Ｎｏｐに到達していない場合には（Ｓ１４０）、ＩＳＰＰに従い、前回よりもΔＶだけ大きなプログラムパルスを選択ページに印加させる（Ｓ１５０）。一方、プログラムパルスの印加回数が最適回数Ｎｏｐに到達した場合には（Ｓ１４０）、制御部１５０は、選択ページが疑似合格であるか否かを判定するステップを行う（Ｓ１６０）。疑似合格とされる最大の不合格ビット数Ｎｐは、上記したように、ＥＣＣによって救済できる最大のビット数Ｎｃｃ以下であり、ベリファイ時の不合格ビット数、すなわち選択ページに実際に生じている不合格ビット数Ｎｆが疑似合格の最大の不合格ビット数Ｎｐ以下であれば（Ｎｆ≦Ｎｐ）、疑似合格と判定される（Ｓ１６０）。疑似合格と判定されるとプログラム動作が終了し、選択ページには、「０」不良の不合格ビットがそのまま記憶されたことになる。
【００３７】
一方、疑似合格していないと判定されたとき（Ｓ１６０）、制御部１５０は、プログラムパルスの印加回数がＮＭＡＸに到達したか否かを判定し（Ｓ１７０）、到達していなければ、ＩＳＰＰに従いさらにプログラムパルスが選択ページに印加される（Ｓ１５０、Ｓ１１０）。プログラムパルスの印加回数がＮＭＡＸに到達した場合には、プログラム失敗のステータスを外部のコントローラに通知し、当該選択ページを含むブロックがバッドブロックとして管理される。この場合、スペア領域の領域３１１にバッドブロックである識別情報が記憶される。
【００３８】
次に、疑似合格によりプログラムされたページからデータを読出すときの動作を図９のフローを参照して説明する。先ず、メモリアレイ１１０のページが選択され、当該選択ページのデータがページバッファ／センス回路１７０に読み出される（Ｓ２００）。次に、ページバッファ／センス回路１７０のスペア領域に保持されたデータがＥＣＣ回路１３０に転送される（Ｓ２１０）。例えば、セクタ０の誤り検出・訂正が行われるとき、図７に示すスペア０のデータがＥＣＣ回路１３０に転送される。ＥＣＣ回路１３０は、始めに領域３１５に保持されている誤り訂正符号（パリティ）に基づき領域３１３、３１４に保持されているデータの誤り検出・訂正を行う。
【００３９】
次に、ページバッファセンス回路１７０のレギュラー領域のデータがＥＣＣ回路１３０に転送される（Ｓ２２０）。例えば、図７に示すセクタ０のデータがＥＣＣ回路１３０に転送される。ＥＣＣ回路１３０は、スペア０の領域３１３に格納されている誤り訂正符号に基づきセクタ０のデータの誤り検出を行う（Ｓ２３０）。もし、セクタ０に疑似合格のときの不合格ビットが含まれているならば、当該不合格ビットは誤りとして検出されることになる。ＥＣＣ回路１３０は、誤りが検出された場合には、これを正しいデータに訂正し、訂正したデータをページバッファ／センス回路１７０にセットする（Ｓ２４０）。このような処理がセクタ単位で行われる（Ｓ２５０）。
【００４０】
このように本実施例によれば、プログラムパルスの印加回数が最適回数Ｎｏｐに到達したときに疑似合格するか否かを判定するようにしたので、最適回数Ｎｏｐまで疑似合格が行われず、その間、選択ページの全ビット合格の判定が保証される。これにより、従来では不合格と判定されたメモリセルが合格として救済される可能性が高くなり、ＥＣＣ処理により他の処理で救済されるビット数のマージンを確保することができ、同時にプログラム成功の歩留まりを向上させることができる。
【００４１】
次に、本発明の第２の実施例のプログラム動作を図１０のフローを参照して説明する。第２の実施例は、図２のフローに新たにステップＳ３００、Ｓ３１０、Ｓ３２０を追加したものである。制御部１５０は、プログラム動作時に、入力されたプログラムデータに基づき疑似合格か否かを判定する（Ｓ３００）。ここで、選択ページのプログラムは、すべて消去された状態のメモリセル（データがすべて「１」）に行われるものとする。制御部１５０は、１つのセクタのプログラムデータに含まれるデータ「０」のビット数が、疑似合格が可能な最大の不合格ビット数Ｎｐ以下である場合には、疑似合格と判定し、そうでない場合には、図２のフローと同様の処理が実行される。
【００４２】
疑似合格と判定された場合には、ページバッファ／センス回路１７０に保持されたプログラムデータがＥＣＣ回路１３０に転送され、そこでＥＣＣ処理が実施される（Ｓ３１０）。ＥＣＣ回路１３０は、演算により生成した誤り訂正符号をページバッファ／センス回路のスペア領域に書込む。次に、ページバッファ／センス回路１７０に保持された誤り訂正符号が選択ページのスペア領域にプログラムされる。このとき、選択ページのレギュラー領域のメモリセルは全てデータ「１」を保持しており、選択ページのレギュラー領域のビット線にはプログラム禁止の電圧が供給される。誤り訂正符号がスペア領域にプログラムされると、プログラム動作が終了される。レギュラー領域がすべてプログラム禁止のため、隣接するビット線間のカップリングの影響等がなくなり、プログラムされるビット線が存在するような通常のプログラムと比較して、プログラムディスターブ特性が改善される。
【００４３】
疑似合格とされたページの読出しは、第１の実施例のときと同様に行われる。すなわち、選択ページから読み出されたデータがページバッファ／センス回路１７０に保持される。レギュラー領域のデータは全て「１」であり、プログラムデータは不合格ビット数Ｎｐ以下のデータ「０」を有する。ＥＣＣ回路１３０は、ページバッファ／センス回路１７０のスペア領域のデータを受け取り、そこに含まれる誤り訂正符号に基づき、レギュラー領域の全「１」データから誤りビット、すなわちデータ「０」をプログラムすべきビットを検出し、データ「１」をデータ「０」に訂正し、これをページバッファ／センス回路１７０にセットする。
【００４４】
このように第２の実施例によれば、プログラムすべきデータがＥＣＣ回路１３０によって救済可能なビット数以下である場合には、通常のプログラムシーケンスとは異なり、プログラムデータをレギュラー領域にプログラムすることなく、誤り訂正符号のみをスペア領域にプログラムすることで、レギュラー領域におけるプログラムディスターブ特性が改善され、同時にプログラム時間を短縮することができる。なお、図１０のステップＳ３２０においてスペア領域に誤り訂正符号をプログラムするとき、通常のプログラムと同様にベリファイステップも実行され、この場合、図１０の破線Ｋで示すようにＩＳＰＰによるプログラムルーチンを実行することも可能である。
【００４５】
次に、本発明の第３の実施例について説明する。第３の実施例は、第１の実施例と第２の実施例とを組合せたものであり、その動作フローを図１１に示す。図１１のフローは、図６のフローに、第２の実施例のステップＳ３００、Ｓ３１０、Ｓ３２０を追加したものであり、その動作は、第１の実施例および第２の実施例のときと同様であるため説明を省略する。図１１のステップＳ３２０において、スペア領域に誤り訂正符号をプログラムするとき、図１０の場合と同様にＩＳＰＰによるプログラムシーケンスを行うことも可能であり、この場合、誤り訂正符号全ての合格が望まれるため、最適回数Ｎｏｐは、疑似合格されないときの最適回数Ｎｏｐよりも大きく設定し、全ビット合格と判定される可能性を高くし、ステップＳ１６０における疑似合格がされ難くすることも可能である。
【００４６】
なお、ＮＡＮＤ型のフラッシュメモリは、ページ単位でプログラムが行われるが、入力されるプログラムデータのサイズは、必ずしも１ページ、すなわち図７に示すレギュラー領域３００の８つのセクタのサイズに等しいことを要しない。例えば、プログラムデータのサイズは、１つのセクタのサイズであることができる。通常、プログラムディスターブの観点から、同一ページに連続してプログラムすることが許される回数（ＮＯＰ（Number of Program））には制限があり、そのＮＯＰに応じて１つのページデータを分割してプログラムすることが可能である。ＮＯＰが４であるとき、１つのページデータは、例えば、２セクタ、１セクタ、３セクタ、２セクタに分けてフラッシュメモリ１０に入力することが可能である。
【００４７】
本発明の好ましい実施の形態について詳述したが、本発明は、特定の実施形態に限定されるものではなく、特許請求の範囲に記載された発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【００４８】
１００：フラッシュメモリ                １１０：メモリアレイ
１２０：入出力バッファ                  １３０：ＥＣＣ回路
１４０：アドレスレジスタ                １５０：制御部
１６０：ワード線選択回路                １７０：ページバッファ／センス回路
１８０：列選択回路                      １９０：内部電圧発生正回路
３００：レギュラー領域                  ３１０：スペア領域
【図１】
0006293846.tif 000002
【図２】
0006293846.tif 000003
【図３】
0006293846.tif 000004
【図４】
0006293846.tif 000005
【図５】
0006293846.tif 000006
【図６】
0006293846.tif 000007
【図７】
0006293846.tif 000008
【図８】
0006293846.tif 000009
【図９】
0006293846.tif 000010
【図１０】
0006293846.tif 000011
【図１１】
0006293846.tif 000012