特許第6293846号(P6293846)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ウィンボンド エレクトロニクス コーポレーションの特許一覧

<>
  • 特許6293846-半導体記憶装置 図000002
  • 特許6293846-半導体記憶装置 図000003
  • 特許6293846-半導体記憶装置 図000004
  • 特許6293846-半導体記憶装置 図000005
  • 特許6293846-半導体記憶装置 図000006
  • 特許6293846-半導体記憶装置 図000007
  • 特許6293846-半導体記憶装置 図000008
  • 特許6293846-半導体記憶装置 図000009
  • 特許6293846-半導体記憶装置 図000010
  • 特許6293846-半導体記憶装置 図000011
  • 特許6293846-半導体記憶装置 図000012
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6293846
(24)【登録日】2018年2月23日
(45)【発行日】2018年3月14日
(54)【発明の名称】半導体記憶装置
(51)【国際特許分類】
   G11C 16/10 20060101AFI20180305BHJP
   G11C 16/34 20060101ALI20180305BHJP
   G06F 11/10 20060101ALI20180305BHJP
【FI】
   G11C16/10 150
   G11C16/34 140
   G06F11/10 668
【請求項の数】7
【全頁数】14
(21)【出願番号】特願2016-214999(P2016-214999)
(22)【出願日】2016年11月2日
(62)【分割の表示】特願2015-246083(P2015-246083)の分割
【原出願日】2015年12月17日
(65)【公開番号】特開2017-111849(P2017-111849A)
(43)【公開日】2017年6月22日
【審査請求日】2016年11月2日
(73)【特許権者】
【識別番号】511062254
【氏名又は名称】ウィンボンド エレクトロニクス コーポレーション
(74)【代理人】
【識別番号】100098497
【弁理士】
【氏名又は名称】片寄 恭三
(72)【発明者】
【氏名】山内 一貴
【審査官】 塚田 肇
(56)【参考文献】
【文献】 特開2006−134476(JP,A)
【文献】 米国特許出願公開第2010/0315880(US,A1)
【文献】 特開2015−176616(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G11C 16/10
G11C 16/34
(57)【特許請求の範囲】
【請求項1】
NAND型フラッシュメモリのプログラム方法であって、
プログラムすべきデータを受け取るステップと、
当該プログラムすべきデータによりプログラムされるビット数が、誤り検出・訂正手段により救済可能な救済ビット数以下であるか否を判定するステップと、
前記誤り検出・訂正手段により前記プログラムすべきデータの誤り訂正符号を生成するステップと、
前記プログラムすべきデータによりプログラムされるビット数が前記救済ビット数以下であると判定されたとき、選択ページのレギュラー領域にプログラムをすることなく、スペア領域に前記誤り訂正符号をプログラムすることで選択ページへのプログラムを終了するステップと、
を有するプログラム方法。
【請求項2】
プログラム方法はさらに、前記プログラムすべきデータによりプログラムされるビット数が救済ビット数よりも多いと判定されたとき、選択ページのレギュラー領域にプログラムすべきデータをプログラムするステップを有する、請求項に記載のプログラム方法。
【請求項3】
NAND型フラッシュメモリのプログラム方法であって、
プログラムすべきデータを受け取るステップと、
当該プログラムすべきデータによりプログラムされるビット数が、誤り検出・訂正手段により救済可能な救済ビット数以下であるか否を判定するステップと、
前記誤り検出・訂正手段により前記プログラムすべきデータの誤り訂正符号を生成するステップと、
前記プログラムすべきデータによりプログラムされるビット数が前記救済ビット数以下であると判定されたとき、選択ページのレギュラー領域にプログラムをすることなく、スペア領域に前記誤り訂正符号をプログラムすることで選択ページへのプログラムを終了するステップと、
前記プログラムすべきデータによりプログラムされるビット数が救済ビット数よりも多いと判定されたとき、選択ページのレギュラー領域にプログラムすべきデータをプログラムするステップとを有し、
前記プログラムするステップはさらに、
選択ページにプログラムパルスを印加するステップと、
選択ページのプログラムの合否を判定するステップと、
不合格であると判定されたとき、プログラムパルスの印加回数がプログラムの許容最大値よりも小さい最適値に到達していない場合には、選択ページにさらにプログラムパルスを印加し、プログラムパルスの印加回数が前記最適値に到達している場合には、選択ページが予め決められた不合格ビット数であれば疑似合格と判定するステップとを有する、プログラム方法。
【請求項4】
メモリアレイと、
プログラムすべきデータの誤り訂正符号を生成する誤り検出・訂正手段と、
プログラムすべきデータおよび前記誤り訂正符号を前記メモリアレイの選択ページにプログラムするプログラム手段とを含み、
前記プログラム手段は、
プログラムすべきデータによりプログラムされるビット数が前記誤り検出・訂正手段により救済可能な救済ビット数以下であるとき、選択ページのレギュラー領域にプログラムをすることなくスペア領域に前記誤り訂正符号をプログラムすることで選択ページのプログラムを終了する、半導体記憶装置。
【請求項5】
前記プログラム手段はさらに、前記プログラムすべきデータによりプログラムされるビット数が救済ビット数より多いとき、選択ページのレギュラー領域にプログラムすべきデータをプログラムする、請求項4に記載の半導体記憶装置。
【請求項6】
前記プログラム手段はさらに、選択ページにプログラムパルスを印加し、選択ページのプログラムが不合格であると判定したとき、プログラムパルスの印加回数がプログラムの許容最大値よりも小さい最適値に到達していない場合には、選択ページにさらにプログラムパルスを印加し、プログラムパルスの印加回数が前記最適値に到達している場合には、選択ページが予め決められた不合格ビット数であれば疑似合格と判定する処理を実行する、請求項5に記載の半導体記憶装置。
【請求項7】
半導体記憶装置は、前記メモリアレイの選択ページのデータを読み出す手段を含み、
前記誤り検出・訂正手段は、読み出された誤り訂正符号に基づき読み出されたデータの誤り検出・訂正を行う、請求項4ないし6いずれか1つに記載の半導体記憶装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、半導体記憶装置、特にNAND型フラッシュメモリのプログラム方法に関する。
【背景技術】
【0002】
NAND型フラッシュメモリでは、データのプログラムや消去が繰り返されることで、トンネル絶縁膜の劣化により電荷保持特性が悪化したり、トンネル絶縁膜にトラップされた電荷によりしきい値変動が生じ、ビットエラーを引き起こす。特許文献1は、このようなビットエラー対策として、誤り検出訂正回路(ECC:Error Checking Correction)を搭載している。また、特許文献2は、1つのメモリセルにマルチビットのデータを格納するNAND型フラッシュメモリにおいて、マルチビットのデータのエラー訂正スキームを開示している。さらに特許文献3は、訂正したエラー数がしきい値以上の物理ブロックを警告ブロックとしてテーブルに登録し、データ書込み時に警告ブロックの選択の優先順位を下げるフラッシュメモリを開示している。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2010−152989号公報
【特許文献2】特開2008−165805号公報
【特許文献3】特開2010−79486号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
図1に、ECC回路をオンチップで搭載するNAND型フラッシュメモリの要部を示す。外部入出力端子から入力されたプログラムデータは、ページバッファ/センス回路10へロードされ、ロードされたプログラムデータが転送回路20を介してECC回路30へ転送される。転送回路20は、双方向のデータ転送が可能な複数のトランジスタを含み、各トランジスタは、ゲートに共通接続された制御信号TGによって駆動される。ECC回路30は、転送されたプログラムデータの演算を行い、誤り検出・訂正のための誤り訂正符号を生成し、誤り訂正符号をページバッファ/センス回路10の所定領域に書き戻す。次に、ページバッファ/センス回路10に保持されたプログラムデータおよび誤り訂正符号がメモリアレイの選択ページにプログラムされる。
【0005】
図2は、従来のプログラム動作のフローである。選択ページのワード線にはプログラムパルスが印加され、ビット線にはプログラムデータに応じた電圧が設定され、選択ページにプログラムパルスが印加される(S10)。次に、選択ページのプログラムベリファイが行われ(S20)、選択ページの全てのメモリセルのプログラムが合格したか否かが判定される(S30)。全てのメモリセルのプログラムが合格と判定された場合には、プログラムが終了される。プログラムが不合格のメモリセルがある場合には、プログラムパルスの印加回数がNMAXに到達したか否かが判定される(S40)。ここで、NMAXとは、プログラムに許容される最大時間またはプログラムに許容される最大のプログラムパルスの印加回数を意味する。NMAXに到達した場合には、プログラム失敗のステータスが外部のコントローラに通知されるとともに、当該ブロックがバッドブロックとして管理される。一方、NMAXに到達していなければ、ISPP(Incremental Step Program Pulse)に従い、前回のプログラムパルスよりもΔVだけ大きなステップ電圧を有するプログラムパルスが生成されS50)、このプログラムパルスが選択ページに印加される。
【0006】
外部のコントローラ等に搭載されたECC機能を利用しないか、あるいはECCを搭載していないフラッシュメモリでは、プログラムベリファイの合格は、全ビットの合格が前提である。これに対し、外部のコントローラ等に搭載されたECC機能を利用するか、あるいはECCがオンチップ搭載されたフラッシュメモリでは、ベリファイにおいて一部の不合格ビット(「0」プログラムが不合格のメモリセル)があったとしても、これをECCで救済することで疑似合格とすることが可能である。例えば、ECCによってmビットの誤り検出・訂正が可能であれば、理論上、最大でmビットの不合格ビットを救済することができる。ECCによって救済できる最大のビット数をNcc、ベリファイにおいて疑似合格とすることができる最大の不合格ビット数をNp、実際の不合格のビット数をNfとするとき、Npは、Ncc≧Npとなるように設定され、好ましくはNcc>Npに設定される。Np≧Nfのとき、選択ページは、不合格ビットを含んでいるけれども、不合格ビットがECCにより救済可能であるため、ベリファイは疑似合格と判定される。そして、選択ページの読出しが行われるとき、選択ページに含まれる不合格ビットが誤りとして検出され、このデータが訂正される。
【0007】
疑似合格の判定をすることで、プログラム失敗やバッドブロックを減らし、歩留まりを向上させ、さらにプログラムパルスの印加回数を抑制することで、プログラムディスターブを減らすことができる。
【0008】
しかしながら、疑似合格を用いた従来のプログラム方法には次のような課題がある。例えば、kビットまでの不合格ビットが疑似合格とされるとき(Np=k)、プログラムパルスの印加回数がNMAXに到達する前であれば、ベリファイ時に、実際の不合格ビット数Nfが疑似合格とすることができる最大の不合格ビット数Npよりも小さくなった時点で自動的にプログラムが終了される。言い換えれば、プログラムパルスの印加回数がNMAXよりも十分に小さく、印加できる回数にまだ余裕があったとしても、Nf≦Npになれば疑似合格と判定され、プログラムが終了してしまう。しかし、プログラムが不合格とされたメモリセルの中には、次のプログラムパルスの印加によって合格し得るものも存在し、本来であれば、このようなメモリセルは、不合格ビットと判定されるのではなく、合格ビットと判定されることが望ましい。疑似合格で不合格ビット数が多くなれば、ECCの他での機能が大きく制限されてしまう。
【0009】
本発明は、このような従来の課題を解決するものであり、プログラム不良の歩留まりを改善しつつ不合格メモリセルの救済を行うことができる半導体記憶装置を提供することを目的とする。
【課題を解決するための手段】
【0010】
本発明に係るNAND型フラッシュメモリのプログラム方法は、選択ページにプログラムパルスを印加するステップと、選択ページのプログラムの合否を判定するステップと、不合格であると判定されたとき、プログラムパルスの印加回数がプログラムの許容最大値よりも小さい最適値に到達していない場合には、選択ページにさらにプログラムパルスを印加し、プログラムパルスの印加回数が前記最適値に到達している場合には、選択ページが予め決められた不合格ビット数であれば疑似合格と判定するステップとを有する。
【0011】
好ましくはプログラム方法はさらに、選択ページが予め決められた不合格ビット数よりも多い場合には、プログラムパルスの印加回数が前記許容最大値に到達しているか否かを判定し、前記許容最大値に到達していない場合には、選択ページにさらにプログラムパルスを印加し、前記許容最大値に到達している場合には、プログラム失敗としてプログラムを終了するステップを含む。好ましくは前記許容最大値は、選択ページのプログラムに許容されるプログラムパルスの最大印加回数である。好ましくは前記予め決められた不合格ビット数は、誤り検出・訂正によって救済可能なビット数以下である。好ましくは前記最適値は、外部のコントローラによって設定可能である。好ましくはプログラム方法はさらに、プログラムすべきデータの誤り訂正符号を生成するステップと、前記選択ページには、プログラムデータと前記誤り訂正符号とがプログラムされる。
【0012】
本発明に係るNAND型フラッシュメモリのプログラム方法は、プログラムすべきデータを受け取るステップと、当該プログラムすべきデータによりプログラムされるビット数が、誤り検出・訂正手段により救済可能な救済ビット数以下であるか否を判定するステップと、前記誤り検出・訂正手段により前記プログラムすべきデータの誤り訂正符号を生成するステップと、前記プログラムすべきデータによりプログラムされるビット数が前記救済ビット数以下であると判定されたとき、選択ページのレギュラー領域にプログラムをすることなく、スペア領域に前記誤り訂正符号をプログラムすることで選択ページへのプログラムを終了するステップとを有する。
【0013】
好ましくはプログラム方法はさらに、前記プログラムすべきデータによりプログラムされるビット数が救済ビット数よりも多いと判定されたとき、選択ページのレギュラー領域にプログラムすべきデータをプログラムするステップを有する。
【0014】
本発明に係る半導体記憶装置は、メモリアレイと、プログラムすべきデータの誤り訂正符号を生成する誤り検出・訂正手段と、前記プログラムすべきデータおよび前記誤り訂正符号を前記メモリアレイの選択ページにプログラムするプログラム手段とを含み、前記プログラム手段は、選択ページにプログラムパルスを印加し、選択ページのプログラムが不合格であると判定したとき、プログラムパルスの印加回数がプログラムの許容最大値よりも小さい最適値に到達していない場合には、選択ページにさらにプログラムパルスを印加し、プログラムパルスの印加回数が前記最適値に到達している場合には、選択ページが予め決められた不合格ビット数であれば疑似合格と判定する処理を実行する。
【0015】
本発明に係る半導体装置は、メモリアレイと、プログラムすべきデータの誤り訂正符号を生成する誤り検出・訂正手段と、プログラムすべきデータおよび前記誤り訂正符号を前記メモリアレイの選択ページにプログラムするプログラム手段とを含み、前記プログラム手段は、プログラムすべきデータによりプログラムされるビット数が前記誤り検出・訂正手段により救済可能な救済ビット数以下であるとき、選択ページのレギュラー領域にプログラムをすることなくスペア領域に前記誤り訂正符号をプログラムすることで選択ページのプログラムを終了する。好ましくは半導体記憶装置は、前記メモリアレイの選択ページのデータを読み出す手段を含み、前記誤り検出・訂正手段は、読み出された誤り訂正符号に基づき読み出されたデータの誤り検出・訂正を行う。
【発明の効果】
【0016】
本発明によれば、プログラムのベリファイにおいて不合格と判定されたとき、プログラムパルスの印加回数が許容最大値よりも小さい最適値に到達していない場合にはさらにプログラムパルスを印加し、プログラムパルスの印加回数が最適値に到達している場合には、選択ページが予め決められた不合格ビット数であれば疑似合格と判定する処理を実行するようにしたので、少なくともプログラムパルスが最適値に到達するまでは、全ビットの合否判定が保証される。これにより、本来であれば合格できるメモリセルを不合格判定から救済することができる。
【図面の簡単な説明】
【0017】
図1】従来のフラッシュメモリのECC動作を説明する図である。
図2】従来のフラッシュメモリのプログラム動作を説明するフローチャートである。
図3】本発明の実施例に係るNAND型フラッシュメモリの全体の概略構成を示す図である。
図4】本発明の実施例に係るメモリセルアレイのNANDストリングの構成を示す回路図である。
図5】本発明の実施例に係るフラッシュメモリのプログラム時に各部に印加される電圧の一例を示す図である。
図6】本発明の第1の実施例に係るフラッシュメモリのプログラム動作を説明するフローチャートである。
図7】本発明の第1の実施例によるプログラム動作時のレギュラー領域のECC処理を説明する図である。
図8】本発明の第1の実施例によるプログラム動作時のスペア領域のECC処理を説明する図である。
図9】本発明の第1の実施例による読出し動作時を説明するフローチャートである。
図10】本発明の第2の実施例に係るフラッシュメモリのプログラム動作を説明するフローチャートである。
図11】本発明の第3の実施例に係るフラッシュメモリのプログラム動作を説明するフローチャートである。
【発明を実施するための形態】
【0018】
次に、本発明の実施の形態について図面を参照して詳細に説明する。ここでは、好ましい形態としてNAND型のフラッシュメモリを例示する。なお、図面は、分かり易くするために各部を強調して示してあり、実際のデバイスのスケールとは異なることに留意すべきである。
【実施例】
【0019】
本発明の実施例に係るフラッシュメモリの典型的な構成を図3に示す。但し、ここに示すフラッシュメモリの構成は例示であり、本発明は、必ずしもこのような構成に限定されるものではない。本実施例のフラッシュメモリ100は、複数のメモリセルが行列状に配列されたメモリアレイ110と、外部入出力端子I/Oに接続され入出力データを保持する入出力バッファ120と、メモリアレイ110にプログラムするデータやそこから読み出されたデータの誤り検出・訂正を行うECC回路130と、入出力バッファ120からのアドレスデータを受け取るアドレスレジスタ140と、入出力バッファ120からのコマンドデータや外部からの制御信号を受け取り、各部を制御する制御部150と、アドレスレジスタ140から行アドレス情報Axを受け取り、行アドレス情報Axをデコードし、デコード結果に基づきブロックの選択およびワード線の選択等を行うワード線選択回路160と、ワード線選択回路160によって選択されたページから読み出されたデータを保持したり、選択されたページへの書込みデータを保持するページバッファ/センス回路170と、アドレスレジスタ140から列アドレス情報Ayを受け取り、列アドレス情報Ayをデコードし、当該デコード結果に基づきページバッファ/センス回路170内のデータの選択等を行う列選択回路180と、データの読出し、プログラムおよび消去等のために必要な種々の電圧(書込み電圧Vpgm、パス電圧Vpass、読出しパス電圧Vread、消去電圧Versなど)を生成する内部電圧発生回路190とを含んで構成される。
【0020】
メモリアレイ110は、列方向に配置されたm個のメモリブロックBLK(0)、BLK(1)、・・・、BLK(m-1)を有する。ブロックBLK(0)に近接して、ページバッファ/センス回路170が配置される。このような構成以外にも、ページバッファ/センス回路170は、ブロックの他方の端部、あるいは両側の端部に配置されるものであってもよい。
【0021】
1つのメモリブロックには、図4に示すように、複数のメモリセルを直列に接続したNANDストリングユニットNUが複数形成され、1つのメモリブロック内にn+1個のストリングユニットNUが行方向に配列されている。セルユニットNUは、直列に接続された複数のメモリセルMCi(i=0、1、・・・、31)と、一方の端部であるメモリセルMC31のドレイン側に接続された選択トランジスタTDと、他方の端部であるメモリセルMC0のソース側に接続された選択トランジスタTSとを含み、選択トランジスタTDのドレインは、対応する1つのビット線GBLに接続され、選択トランジスタTSのソースは、共通のソース線SLに接続される。
【0022】
メモリセルMCiのコントロールゲートは、ワード線WLiに接続され、選択トランジスタTD、TSのゲートは、ワード線WLと並行する選択ゲート線SGD、SGSに接続される。ワード線選択回路160は、行アドレスAxまたは変換されたアドレスに基づきブロックを選択するとき、ブロックの選択ゲート信号SGS、SGDを介して選択トランジスタTD、TSを選択的に駆動する。図4は、典型的なセルユニットの構成を示しているが、セルユニットは、NANDストリング内に1つまたは複数のダミーセルを包含するものであってもよい。
【0023】
メモリセルは、典型的に、Pウエル内に形成されたN型の拡散領域であるソース/ドレインと、ソース/ドレイン間のチャンネル上に形成されたトンネル酸化膜と、トンネル酸化膜上に形成されたフローティングゲート(電荷蓄積層)と、フローティングゲート上に誘電体膜を介して形成されたコントロールゲートとを含むMOS構造を有する。フローティングゲートに電荷が蓄積されていないとき、つまりデータ「1」が書込まれているとき、しきい値は負状態にあり、メモリセルは、ノーマリオンである。フローティングゲートに電子が蓄積されたとき、つまりデータ「0」が書込まれているとき、しきい値は正にシフトし、メモリセルは、ノーマリオフである。但し、メモリセルは、1ビット(2値データ)を記憶するSLCタイプでもよいし、多ビットを記憶するMLCタイプであってもよい。
【0024】
図5は、フラッシュメモリの各動作時に印加されるバイアス電圧の一例を示したテーブルである。読出し動作では、ビット線に或る正の電圧を印加し、選択されたワード線に或る電圧(例えば0V)を印加し、非選択ワード線にパス電圧Vpass(例えば4.5V)を印加し、選択ゲート線SGD、SGSに正の電圧(例えば4.5V)を印加し、ビット線選択トランジスタTD、ソース線選択トランジスタTSをオンし、共通ソース線に0Vを印加する。プログラム(書込み)動作では、選択されたワード線に高電圧のプログラム電圧Vprog(15〜20V)を印加し、非選択のワード線に中間電位(例えば10V)を印加し、ビット線選択トランジスタTDをオンさせ、ソース線選択トランジスタTSをオフさせ、「0」または「1」のデータに応じた電位をビット線GBLに供給する。消去動作では、ブロック内の選択されたワード線に0Vを印加し、Pウエルに高電圧(例えば20V)を印加し、フローティングゲートの電子を基板に引き抜くことで、ブロック単位でデータを消去する。
【0025】
プログラム動作時に入出力バッファ120を介して入力データDiがページバッファ/センス回路170にロードされると、ECC回路130は、ページバッファ/センス回路170から転送された入力データDiを演算し、入力データDiの誤り検出訂正に必要な誤り訂正符号またはパリティビットを生成する。ECCの演算は、例えば、ハミングコードやリード・ソロモンなどの公知の手法によって行われ、入力されたkビットまたはkバイトの入力データDiをp=k+qに変換する。本明細書では、「q」を、入力データDiの誤り検出訂正に必要な誤り訂正符号またはパリティビットと称する。1つの好ましい例では、ECC回路130は、誤り訂正符号をページバッファ/センス回路170のスペア領域にセットする。こうして、ページバッファ/センス回路170にセットされた入力データDiと誤り訂正符号がメモリアレイ110の選択ページにプログラムされる。
【0026】
読出し動作時にメモリアレイ110の選択ページから読み出されたデータがページバッファ/センス回路170に保持されると、ECC回路130は、ページバッファ/センス回路170から転送された誤り訂正符号に基づき読出しデータの誤りの検出、訂正を行い、誤りが検出された場合には訂正したデータをページバッファ/センス回路170にセットする。そして、ページバッファ/センス回路170の保持されたデータが入出力バッファ120を介して出力される。
【0027】
次に、本発明の第1の実施例に係るプログラム動作を図6のフローを参照して説明する。制御部150は、入出力バッファ120を介してプログラムコマンドを受け取ると、プログラムのためのシーケンスを開始する。入出力バッファ120を介して入力データDiがページバッファ/センス回路170にロードされ、次いで、ECC回路130により入力データDiのECC処理が行われる(S100)。
【0028】
図7に、ECC処理の一例を示す。フラッシュメモリ100が×8の外部入出力端子を有するとき、外部入出力端子P0〜P7から各I/Oバッファ120−1〜120−7を介してページバッファ/センス回路170にデータがロードされる。ページバッファ/センス回路170は、例えば、セクタ0〜セクタ7の8つのセクタに分割されたレギュラー領域300と、スペア0、スペア1、スペア2、スペア3の4つのセクタに分割されたスペア領域310とを有する。
【0029】
レギュラー領域300の1つのセクタは、例えば、256バイトから構成され、この場合、レギュラー領域300の8つのセクタは、全体で約2Kバイトのプログラムデータを保持することができる。スペア領域310の1つのセクタは、例えば16バイトから構成され、この場合、4つのセクタ(スペア0〜スペア3)は全体で64バイトのデータを保持することができる。スペア領域310の1つのセクタは、例えば、不良メモリセルを含むバッドブロックを識別する情報を記憶する領域311、ユーザーデータに関する情報を記憶する領域312、レギュラー領域300の2つセクタについての誤り訂正符号(パリティビット)を記憶する領域313、314、スペア領域310がECC演算されたときの誤り訂正符号(パリティビット)を記憶する領域315を有する。スペア領域310のスペア0の領域313、314は、レギュラー領域300のセクタ0、セクタ1の誤り訂正符号(パリティビット)をそれぞれ記憶し、スペア領域310のスペア1の領域313、314は、レギュラー領域300のセクタ2、セクタ3の誤り訂正符号(パリティビット)を記憶する。同様に、スペア領域310のスペア2は、レギュラー領域300のセクタ4、セクタ5のパリティビットを記憶し、スペア領域310のスペア3は、レギュラー領域300のセクタ6、セクタ7のパリティビットを記憶する。
【0030】
レギュラー領域300の1つのセクタには、入出力バッファ120−0〜120−7が割り当てられ、つまり、1つの外部入出力端子には256ビットが割り当てられる(256bit×8=1セクタ)。列選択回路180は、プログラム動作時に受け取った列アドレス情報Ayをデコードし、当該デコード結果に基づき、外部入出力端子P−0〜P7に入力されたデータがロードされるセクタを選択する。図7は、外部入出力端子P−0〜P−7で受け取られたデータが列アドレス情報Ayに従いセクタ0にロードされる例を示している。
【0031】
ここに示す例では、ECC回路130が誤り訂正符号を書込むための書込み回路を含む。好ましくは、ECC回路130は、レギュラー領域300の1つのセクタと等しいバイト数のデータについてECC演算を行うことができる。レギュラー領域300の1つのセクタが256バイトであれば、ECC回路は、256バイトのデータについてECC演算を行い、4ビットの誤りを訂正する誤り訂正符号を生成する。
【0032】
ECC回路130は、生成された誤り訂正符号をスペア領域310の対応するセクタの領域313または314に書込む。図7に示す例では、プログラムデータがレギュラー領域300のセクタ0にロードされるので、誤り訂正符号は、スペア0のセクタ0のパリティを記憶する領域313に書込まれる。
【0033】
図8に、スペア領域310のデータのECC処理を例示する。レギュラー領域300の各セクタについてECC処理が終了すると、次に、スペア領域310の各セクタについてECC処理が行われる。スペア領域310の1つセクタ内に含まれるどのデータのECC処理を行うかは任意であるが、本例では、領域312ないし領域314のデータについてECC処理を行うものとする。それ故、スペア0の領域312ないし領域314のデータがECC回路130に転送され、ECC処理によって生成された誤り訂正符号が、ECC回路130によってスペア0の領域315に書込まれる。同様の処理が、他のスペア1ないしスペア3についても行われる。
【0034】
再び図6を参照し、ECC処理が終了すると(S100)、メモリアレイ110へのプログラムが開始される。ワード線選択回路160によりメモリアレイ110のワード線が選択され、ビット線には、ページバッファ/センス回路170によって保持されたデータに応じた電圧が供給され、選択ページにプログラムパルスが印加される(S110)。次に、プルグラムベリファイが行われ(S120)、データ「0」がプログラムされたメモリセルのしきい値が一定値以上になっているか否かがチェックされる。ベリファイの結果、選択ページの全ビットが合格であれば、プログラムが終了される。一方、全ビットが合格していない場合には、制御部150は、プログラムパルスの印加回数が最適回数Nopに到達したか否かを判定する(S130)。
【0035】
ここで、最適回数Nopとは、プログラムにおいて許容されるプログラムパルスの最大の印加回数または最大のプログラム時間であるNMAXよりも小さい値であり、好ましくは、メモリセルをプログラム不合格と判定する場合に最小限印加されるべきプログラムパルスの回数である。例えば、プログラムに許容される最大時間が700μsであり、1回のプログラムパルスの印加に要する時間が50μsとした場合、NMAX=700μs、またはNMAX=14回である。最適回数Nopは、典型的なメモリセルがプログラム合格されるときのプログラムパルスの印加回数に基づき決定することができる。例えば、統計的な手法によりプログラム合格されるメモリセルに印加されたプログラムパルスの平均回数Navが算出されたとき、最適回数Nopは、Nop=Navに設定することができる。この最適回数Nopは、例えば、外部のコントローラから受信したコマンド等によってよって設定することが可能であり、設定された値は、制御部150のレジスタ等に保持される。
【0036】
制御部150は、プログラムパルスの印加回数が最適回数Nopに到達していない場合には(S140)、ISPPに従い、前回よりもΔVだけ大きなプログラムパルスを選択ページに印加させる(S150)。一方、プログラムパルスの印加回数が最適回数Nopに到達した場合には(S140)、制御部150は、選択ページが疑似合格であるか否かを判定するステップを行う(S160)。疑似合格とされる最大の不合格ビット数Npは、上記したように、ECCによって救済できる最大のビット数Ncc以下であり、ベリファイ時の不合格ビット数、すなわち選択ページに実際に生じている不合格ビット数Nfが疑似合格の最大の不合格ビット数Np以下であれば(Nf≦Np)、疑似合格と判定される(S160)。疑似合格と判定されるとプログラム動作が終了し、選択ページには、「0」不良の不合格ビットがそのまま記憶されたことになる。
【0037】
一方、疑似合格していないと判定されたとき(S160)、制御部150は、プログラムパルスの印加回数がNMAXに到達したか否かを判定し(S170)、到達していなければ、ISPPに従いさらにプログラムパルスが選択ページに印加される(S150、S110)。プログラムパルスの印加回数がNMAXに到達した場合には、プログラム失敗のステータスを外部のコントローラに通知し、当該選択ページを含むブロックがバッドブロックとして管理される。この場合、スペア領域の領域311にバッドブロックである識別情報が記憶される。
【0038】
次に、疑似合格によりプログラムされたページからデータを読出すときの動作を図9のフローを参照して説明する。先ず、メモリアレイ110のページが選択され、当該選択ページのデータがページバッファ/センス回路170に読み出される(S200)。次に、ページバッファ/センス回路170のスペア領域に保持されたデータがECC回路130に転送される(S210)。例えば、セクタ0の誤り検出・訂正が行われるとき、図7に示すスペア0のデータがECC回路130に転送される。ECC回路130は、始めに領域315に保持されている誤り訂正符号(パリティ)に基づき領域313、314に保持されているデータの誤り検出・訂正を行う。
【0039】
次に、ページバッファセンス回路170のレギュラー領域のデータがECC回路130に転送される(S220)。例えば、図7に示すセクタ0のデータがECC回路130に転送される。ECC回路130は、スペア0の領域313に格納されている誤り訂正符号に基づきセクタ0のデータの誤り検出を行う(S230)。もし、セクタ0に疑似合格のときの不合格ビットが含まれているならば、当該不合格ビットは誤りとして検出されることになる。ECC回路130は、誤りが検出された場合には、これを正しいデータに訂正し、訂正したデータをページバッファ/センス回路170にセットする(S240)。このような処理がセクタ単位で行われる(S250)。
【0040】
このように本実施例によれば、プログラムパルスの印加回数が最適回数Nopに到達したときに疑似合格するか否かを判定するようにしたので、最適回数Nopまで疑似合格が行われず、その間、選択ページの全ビット合格の判定が保証される。これにより、従来では不合格と判定されたメモリセルが合格として救済される可能性が高くなり、ECC処理により他の処理で救済されるビット数のマージンを確保することができ、同時にプログラム成功の歩留まりを向上させることができる。
【0041】
次に、本発明の第2の実施例のプログラム動作を図10のフローを参照して説明する。第2の実施例は、図2のフローに新たにステップS300、S310、S320を追加したものである。制御部150は、プログラム動作時に、入力されたプログラムデータに基づき疑似合格か否かを判定する(S300)。ここで、選択ページのプログラムは、すべて消去された状態のメモリセル(データがすべて「1」)に行われるものとする。制御部150は、1つのセクタのプログラムデータに含まれるデータ「0」のビット数が、疑似合格が可能な最大の不合格ビット数Np以下である場合には、疑似合格と判定し、そうでない場合には、図2のフローと同様の処理が実行される。
【0042】
疑似合格と判定された場合には、ページバッファ/センス回路170に保持されたプログラムデータがECC回路130に転送され、そこでECC処理が実施される(S310)。ECC回路130は、演算により生成した誤り訂正符号をページバッファ/センス回路のスペア領域に書込む。次に、ページバッファ/センス回路170に保持された誤り訂正符号が選択ページのスペア領域にプログラムされる。このとき、選択ページのレギュラー領域のメモリセルは全てデータ「1」を保持しており、選択ページのレギュラー領域のビット線にはプログラム禁止の電圧が供給される。誤り訂正符号がスペア領域にプログラムされると、プログラム動作が終了される。レギュラー領域がすべてプログラム禁止のため、隣接するビット線間のカップリングの影響等がなくなり、プログラムされるビット線が存在するような通常のプログラムと比較して、プログラムディスターブ特性が改善される。
【0043】
疑似合格とされたページの読出しは、第1の実施例のときと同様に行われる。すなわち、選択ページから読み出されたデータがページバッファ/センス回路170に保持される。レギュラー領域のデータは全て「1」であり、プログラムデータは不合格ビット数Np以下のデータ「0」を有する。ECC回路130は、ページバッファ/センス回路170のスペア領域のデータを受け取り、そこに含まれる誤り訂正符号に基づき、レギュラー領域の全「1」データから誤りビット、すなわちデータ「0」をプログラムすべきビットを検出し、データ「1」をデータ「0」に訂正し、これをページバッファ/センス回路170にセットする。
【0044】
このように第2の実施例によれば、プログラムすべきデータがECC回路130によって救済可能なビット数以下である場合には、通常のプログラムシーケンスとは異なり、プログラムデータをレギュラー領域にプログラムすることなく、誤り訂正符号のみをスペア領域にプログラムすることで、レギュラー領域におけるプログラムディスターブ特性が改善され、同時にプログラム時間を短縮することができる。なお、図10のステップS320においてスペア領域に誤り訂正符号をプログラムするとき、通常のプログラムと同様にベリファイステップも実行され、この場合、図10の破線Kで示すようにISPPによるプログラムルーチンを実行することも可能である。
【0045】
次に、本発明の第3の実施例について説明する。第3の実施例は、第1の実施例と第2の実施例とを組合せたものであり、その動作フローを図11に示す。図11のフローは、図6のフローに、第2の実施例のステップS300、S310、S320を追加したものであり、その動作は、第1の実施例および第2の実施例のときと同様であるため説明を省略する。図11のステップS320において、スペア領域に誤り訂正符号をプログラムするとき、図10の場合と同様にISPPによるプログラムシーケンスを行うことも可能であり、この場合、誤り訂正符号全ての合格が望まれるため、最適回数Nopは、疑似合格されないときの最適回数Nopよりも大きく設定し、全ビット合格と判定される可能性を高くし、ステップS160における疑似合格がされ難くすることも可能である。
【0046】
なお、NAND型のフラッシュメモリは、ページ単位でプログラムが行われるが、入力されるプログラムデータのサイズは、必ずしも1ページ、すなわち図7に示すレギュラー領域300の8つのセクタのサイズに等しいことを要しない。例えば、プログラムデータのサイズは、1つのセクタのサイズであることができる。通常、プログラムディスターブの観点から、同一ページに連続してプログラムすることが許される回数(NOP(Number of Program))には制限があり、そのNOPに応じて1つのページデータを分割してプログラムすることが可能である。NOPが4であるとき、1つのページデータは、例えば、2セクタ、1セクタ、3セクタ、2セクタに分けてフラッシュメモリ10に入力することが可能である。
【0047】
本発明の好ましい実施の形態について詳述したが、本発明は、特定の実施形態に限定されるものではなく、特許請求の範囲に記載された発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【0048】
100:フラッシュメモリ 110:メモリアレイ
120:入出力バッファ 130:ECC回路
140:アドレスレジスタ 150:制御部
160:ワード線選択回路 170:ページバッファ/センス回路
180:列選択回路 190:内部電圧発生正回路
300:レギュラー領域 310:スペア領域
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11