(57)【特許請求の範囲】
【請求項１】
不揮発性メモリーと、
前記不揮発性メモリーへの消去動作、読み出し動作、及び書き込み動作の制御を行うメモリー制御部と、
を含み、
前記メモリー制御部は、
前記書き込み動作において、消去ベリファイを行い、前記消去ベリファイの結果データである消去ベリファイ結果データと書き込みデータとをビット単位で比較するビット比較処理を行い、書き込みベリファイにおけるエラーをエラー訂正処理により訂正可能であるとして許可するか否かの可否決定を、前記ビット比較処理の結果に基づいて行うことを特徴とする不揮発性記憶装置。
【請求項２】
請求項１において、
前記メモリー制御部は、
前記消去ベリファイにおいてエラーと判断された場合に、前記ビット比較処理を行うことを特徴とする不揮発性記憶装置。
【請求項３】
請求項１又は２において、
前記メモリー制御部は、
前記ビット比較処理において、前記消去ベリファイ結果データのうちエラーと判定された消去エラービットと、前記消去エラービットに対応する前記書き込みデータの書き込みビットとの比較処理を行うことを特徴とする不揮発性記憶装置。
【請求項４】
請求項３において、
前記メモリー制御部は、
前記ビット比較処理において前記消去エラービットと前記書き込みビットとが同じ第１の論理レベルであると判定された場合、前記書き込みベリファイの結果データである書き込みベリファイ結果データのうちエラーと判定された書き込みエラービットを、前記エラー訂正処理による訂正が可能なビットとして、前記書き込みデータの前記不揮発性メモリーへの書き込みが成功したと判定することを特徴とする不揮発性記憶装置。
【請求項５】
請求項４において、
前記メモリー制御部は、
前記ビット比較処理において前記消去エラービットと前記書き込みビットとが同じ前記第１の論理レベルであると判定された場合、前記書き込みベリファイにおけるエラーを許可するか否かを表すエラー訂正可否フラグを、エラーを許可するアクティブに設定し、
前記エラー訂正可否フラグがアクティブである場合、前記書き込みエラービットが前記エラー訂正処理により訂正可能であるか否かを判定し、
前記書き込みエラービットが前記エラー訂正処理により訂正可能であると判定された場合、前記書き込みデータの前記不揮発性メモリーへの書き込みが成功したと判定することを特徴とする不揮発性記憶装置。
【請求項６】
請求項１乃至５のいずれかにおいて、
前記読み出し動作を行う読み出し回路を含み、
前記読み出し回路は、
前記消去ベリファイでは、消去ベリファイ用判定基準で前記不揮発性メモリーからデータを読み出し、
前記書き込みベリファイでは、前記消去ベリファイ用判定基準とは異なる書き込みベリファイ用判定基準で前記不揮発性メモリーからデータを読み出すことを特徴とする不揮発性記憶装置。
【請求項７】
請求項１乃至６のいずれかにおいて、
前記消去動作及び前記書き込み動作を行う消去及び書き込み回路と、
前記読み出し動作を行う読み出し回路と、
を含み、
前記メモリー制御部は、
前記ビット比較処理を行うビット比較部と、
前記消去及び書き込み回路及び前記読み出し回路の制御と、前記可否決定と、を行う制御部と、
前記読み出し回路により読み出されたデータに対して前記エラー訂正処理を行うエラー訂正部と、
前記エラー訂正処理に用いるエラー訂正用データを生成するエラー訂正用データ生成部と、
を有することを特徴とする不揮発性記憶装置。
【請求項８】
請求項１乃至７のいずれかに記載された不揮発性記憶装置を含むことを特徴とする集積回路装置。
【請求項９】
請求項１乃至７のいずれかに記載された不揮発性記憶装置を含むことを特徴とする電子機器。
【請求項１０】
不揮発性メモリーを含む不揮発性記憶装置の制御方法であって、
前記不揮発性メモリーへの書き込み動作において、消去ベリファイを行い、
前記消去ベリファイの結果データである消去ベリファイ結果データと書き込みデータとをビット単位で比較するビット比較処理を行い、
書き込みベリファイにおけるエラーをエラー訂正処理により訂正可能であるとして許可するか否かの可否決定を、前記ビット比較処理の結果に基づいて行うことを特徴とする不揮発性記憶装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性記憶装置、集積回路装置、電子機器及び不揮発性記憶装置の制御方法等に関する。
【背景技術】
【０００２】
メモリーから読み出したデータが正しいか否かを検出し、誤ったデータを正しいデータに訂正する技術（ＥＣＣ：Error Check and Correct又はError Correction Code）が知られている。この技術では、エラー訂正用データを付加したデータをメモリーに記憶させておき、そのデータを読み出してエラー訂正処理を行う。メモリーから読み出したデータにエラーがあったとしても、エラー訂正処理によってエラーが訂正され、正しいデータが得られる。エラー訂正処理で訂正できるビット数には上限があり、その上限は、付加されるエラー訂正用データのビット数などにより決まっている。
【０００３】
このようなＥＣＣの従来技術は、例えば特許文献１〜３に開示されている。特許文献１〜３では、読み出しにおいてエラー訂正処理でエラーが訂正されることを前提に、消去動作又は書き込み動作においてエラービットの存在を許可している。即ち、特許文献１、２では、書き込みベリファイにおいて検出されたエラービット数が、エラー訂正処理で訂正可能なビット数以下である場合、エラービットが検出されていても書き込みが成功したとみなしている。特許文献３では、消去ベリファイにおいて検出されたエラービット数が、エラー訂正処理で訂正可能なビット数以下である場合、エラービットが検出されていても消去が成功したとみなしている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平０６−１３１８８４号公報
【特許文献２】特開平０６−１３１８８６号公報
【特許文献３】特開平１０−２２２９９５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上記のように、従来技術では消去及び書き込みのいずれか一方でエラービットの存在を許可しているが、メモリーの長寿命化の点から消去及び書き込みの両方においてエラービットの存在を許可できることが望ましい。
【０００６】
しかしながら、消去と書き込みの両方においてエラービットの存在を許可しようとすると、消去用と書き込み用にエラー訂正用データが必要となり、メモリー容量が増加してしまう。一方、エラー訂正用データのデータ量を増やさずに消去と書き込みの両方においてエラービットの存在を許可しようとすると、マージンリードの影響で不具合が生じる可能性がある。即ち、消去ベリファイ、書き込みベリファイ、通常の読み出し動作では、読み出されるビットが「０」であるか「１」であるかを判定する基準が異なっている。そのため、エラー訂正処理で訂正可能なビット数を超えてエラービットの存在が許可される可能性があり、エラー訂正処理において間違ったデータが出力される可能性がある。
【０００７】
本発明の幾つかの態様によれば、消去及び書き込みの両方においてエラービットの存在を許可すると共にエラー訂正処理において正しいデータに訂正可能な不揮発性記憶装置、集積回路装置、電子機器及び不揮発性記憶装置の制御方法等を提供できる。
【課題を解決するための手段】
【０００８】
本発明の一態様は、不揮発性メモリーと、前記不揮発性メモリーへの消去動作、読み出し動作、及び書き込み動作の制御を行うメモリー制御部と、を含み、前記メモリー制御部は、前記書き込み動作において、消去ベリファイを行い、前記消去ベリファイの結果データである消去ベリファイ結果データと書き込みデータとをビット単位で比較するビット比較処理を行い、書き込みベリファイにおけるエラーをエラー訂正処理により訂正可能であるとして許可するか否かの可否決定を、前記ビット比較処理の結果に基づいて行う不揮発性記憶装置に関係する。
【０００９】
本発明の一態様によれば、消去ベリファイ結果データと書き込みデータとのビット比較処理を行うことで、エラー訂正処理で訂正可能なビット数を超えてエラービットの存在が許可される可能性がある場合を検出することが可能となる。そして、書き込みベリファイにおけるエラーを許可するか否かの決定をビット比較処理の結果に基づいて行うことで、上記の場合に応じた決定を行うことが可能となる。これにより、消去及び書き込みの両方においてエラービットの存在を許可し、エラー訂正処理において正しいデータに訂正することが可能となる。
【００１０】
また本発明の一態様では、前記メモリー制御部は、前記消去ベリファイにおいてエラーと判断された場合に、前記ビット比較処理を行ってもよい。
【００１１】
書き込みベリファイにおけるエラーを許可した場合に、読み出しデータにおいてエラー訂正可能なエラービット数を超える可能性があるのは、消去ベリファイにおいてエラーと判断されている場合である。本発明の一態様によれば、そのような場合にビット比較処理を行うので、消去ベリファイにおいてエラーと判断されている場合に書き込みベリファイにおけるエラーを許可しない決定をできる。これにより、読み出しデータにおけるエラービット数をエラー訂正可能なビット数以下にできる。
【００１２】
また本発明の一態様では、前記メモリー制御部は、前記ビット比較処理において、前記消去ベリファイ結果データのうちエラーと判定された消去エラービットと、前記消去エラービットに対応する前記書き込みデータの書き込みビットとの比較処理を行ってもよい。
【００１３】
消去エラービットと、それに対応する書き込みデータの書き込みビットとが異なる論理レベルである場合に、書き込みベリファイにおけるエラーを許可すると、読み出しデータにおいてエラー訂正可能なエラービット数を超える可能性がある。本発明の一態様によれば、消去エラービットと書き込みビットとの比較処理を行うことで、上記のような場合を検出することが可能となる。
【００１４】
また本発明の一態様では、前記メモリー制御部は、前記ビット比較処理において前記消去エラービットと前記書き込みビットとが同じ第１の論理レベルであると判定された場合、前記書き込みベリファイの結果データである書き込みベリファイ結果データのうちエラーと判定された書き込みエラービットを、前記エラー訂正処理による訂正が可能なビットとして、前記書き込みデータの前記不揮発性メモリーへの書き込みが成功したと判定してもよい。
【００１５】
上述のように、消去エラービットと書き込みビットとが異なる論理レベルである場合に、読み出しデータにおいてエラー訂正可能なエラービット数を超える可能性がある。本発明の一態様によれば、消去エラービットと書き込みビットとが同じ第１の論理レベルであると判定された場合に書き込みエラービットが許可される。これにより、エラー訂正可能なエラービット数を超える可能性がない場合に、書き込みエラービットを許可できる。
【００１６】
また本発明の一態様では、前記メモリー制御部は、前記ビット比較処理において前記消去エラービットと前記書き込みビットとが同じ前記第１の論理レベルであると判定された場合、前記書き込みベリファイにおけるエラーを許可するか否かを表すエラー訂正可否フラグを、エラーを許可するアクティブに設定し、前記エラー訂正可否フラグがアクティブである場合、前記書き込みエラービットが前記エラー訂正処理により訂正可能であるか否かを判定し、前記書き込みエラービットが前記エラー訂正処理により訂正可能であると判定された場合、前記書き込みデータの前記不揮発性メモリーへの書き込みが成功したと判定してもよい。
【００１７】
このようにすれば、ビット比較処理において消去エラービットと書き込みビットとが同じ第１の論理レベルであるか否かに応じて、エラー訂正可否フラグの論理レベルが設定される。そして、そのエラー訂正可否フラグがアクティブの場合に、書き込みエラービットがエラー訂正処理により訂正可能であるか否かの判定が行われる。このようにして、ビット比較処理において消去エラービットと書き込みビットとが同じ第１の論理レベルである場合に、書き込みエラービットを許可することが可能となる。
【００１８】
また本発明の一態様では、不揮発性記憶装置は、前記読み出し動作を行う読み出し回路を含み、前記読み出し回路は、前記消去ベリファイでは、消去ベリファイ用判定基準で前記不揮発性メモリーからデータを読み出し、前記書き込みベリファイでは、前記消去ベリファイ用判定基準とは異なる書き込みベリファイ用判定基準で前記不揮発性メモリーからデータを読み出してもよい。
【００１９】
本発明の一態様では、消去ベリファイで用いられる消去ベリファイ用判定基準と、書き込みベリファイで用いられる書き込みベリファイ用判定基準とは異なっている。このようなマージンリードを行うことで、消去や書き込みにおいてデータにマージンを持たせる（データを保証する）ことが可能となる。一方で、エラー訂正処理を前提としてエラービットを許容した場合、マージンリードの影響でエラーを正しく訂正できない可能性があるという問題があるが、本発明の一態様によれば、そのような問題を解決できる。
【００２０】
また本発明の一態様では、不揮発性記憶装置は、前記消去動作及び前記書き込み動作を行う消去及び書き込み回路と、前記読み出し動作を行う読み出し回路と、を含み、前記メモリー制御部は、前記ビット比較処理を行うビット比較部と、前記消去及び書き込み回路及び前記読み出し回路の制御と、前記可否決定と、を行う制御部と、前記読み出し回路により読み出されたデータに対して前記エラー訂正処理を行うエラー訂正部と、前記エラー訂正処理に用いるエラー訂正用データを生成するエラー訂正用データ生成部と、を有してもよい。
【００２１】
このようにすれば、ビット比較部により消去ベリファイ結果データと書き込みデータとのビット比較処理が行われ、制御部により、書き込みエラービットを許可するか否かの可否判定が行われる。これにより、エラー訂正部が行うエラー訂正処理において、正しい結果データを得ることが可能となる。
【００２２】
また本発明の他の態様は、上記のいずれかに記載された不揮発性記憶装置を含む集積回路装置に関係する。
【００２３】
また本発明の更に他の態様は、上記のいずれかに記載された不揮発性記憶装置を含む電子機器に関係する。
【００２４】
また本発明の更に他の態様は、不揮発性メモリーを含む不揮発性記憶装置の制御方法であって、前記不揮発性メモリーへの書き込み動作において、消去ベリファイを行い、前記消去ベリファイの結果データである消去ベリファイ結果データと書き込みデータとをビット単位で比較するビット比較処理を行い、書き込みベリファイにおけるエラーをエラー訂正処理により訂正可能であるとして許可するか否かの可否決定を、前記ビット比較処理の結果に基づいて行う不揮発性記憶装置の制御方法に関係する。
【図面の簡単な説明】
【００２５】
【図１】図１は、本実施形態の不揮発性記憶装置の構成例である。
【図２】図２は、本実施形態の消去動作のフローチャートである。
【図３】図３は、比較例の書き込み動作のフローチャートである。
【図４】図４は、ビットの記憶データが消去される消去回数とビット数の関係を示すヒストグラムの例である。
【図５】図５は、消去ベリファイ及び書き込みベリファイをパスしたにも関わらずエラー訂正できない場合の具体例である。
【図６Ａ】図６Ａは、図５の具体例におけるエラー訂正処理の説明図である。
【図６Ｂ】図６Ｂは、図５の具体例におけるエラー訂正処理の説明図である。
【図６Ｃ】図６Ｃは、図５の具体例におけるエラー訂正処理の説明図である。
【図７】図７は、マージンリードを模式的に説明する図である。
【図８】図８は、本実施形態の書き込み動作のフローチャートである。
【図９】図９は、ビット比較処理によりエラー訂正可否フラグが「１」となる場合の具体例である。
【図１０】図１０は、ビット比較処理によりエラー訂正可否フラグが「０」となる場合の具体例である。
【図１１】図１１は、本実施形態の不揮発性記憶装置の詳細な構成例である。
【図１２】図１２は、読み出し回路、不揮発性メモリーの詳細な構成例である。
【図１３Ａ】図１３Ａは、エラー訂正用データの生成処理の説明図である。
【図１３Ｂ】図１３Ｂは、エラー訂正用データの生成処理の説明図である。
【図１３Ｃ】図１３Ｃは、エラー訂正用データの生成処理の説明図である。
【図１４Ａ】図１４Ａは、エラー訂正処理の説明図である。
【図１４Ｂ】図１４Ｂは、エラー訂正処理の説明図である。
【図１４Ｃ】図１４Ｃは、エラー訂正処理の説明図である。
【図１４Ｄ】図１４Ｄは、エラー訂正処理の説明図である。
【図１５】図１５は、消去動作において許可されたエラービットを訂正する場合の具体例である。
【図１６】図１６は、書き込み動作において許可されたエラービットを訂正する場合の具体例である。
【図１７】図１７は、本実施形態の電子機器の構成例である。
【発明を実施するための形態】
【００２６】
以下、本発明の好適な実施の形態について詳細に説明する。なお以下に説明する本実施形態は特許請求の範囲に記載された本発明の内容を不当に限定するものではなく、本実施形態で説明される構成の全てが本発明の解決手段として必須であるとは限らない。
【００２７】
１．構成
図１は、本実施形態の不揮発性記憶装置２００の構成例である。不揮発性記憶装置２００は、不揮発性メモリー１０、消去及び書き込み回路２０、読み出し回路３０、メモリー制御部１００（メモリー制御回路）を含む。不揮発性記憶装置２００は、例えば集積回路装置として構成される。
【００２８】
不揮発性メモリー１０は、電源が供給されない状態においても記憶データを保持するメモリーである。本実施形態では、不揮発性メモリー１０として、電気的に記憶データを複数回書き替え（消去及び書き込み）可能なものを想定しており、例えばＥＥＰＲＯＭ（Electrically Erasable Programmable Read-Only Memory）やフラッシュメモリ等である。例えば、不揮発性メモリー１０はマトリックス状に配置されたメモリーセルアレイと、メモリーセルアレイの各行に沿って設けられるワード線と、メモリーセルアレイの各列に沿って設けられるビット線とで構成される。メモリーセルアレイの各メモリーセルはワード線とビット線の交点に設けられており、ワード線とビット線によりメモリーセルの物理アドレスが指定される。メモリーセルは、例えばフローティングゲートに注入された電荷によりデータを保持するフローティングゲート型ＭＯＳトランジスターや、絶縁膜に注入された電荷によりデータを保持するＭＯＮＯＳ（Metal-Oxide-Nitride-Oxide-Silicon）型トランジスター等である。
【００２９】
消去及び書き込み回路２０は、不揮発性メモリー１０に記憶されたデータを消去する消去動作と、不揮発性メモリー１０に対してデータを書き込む書き込み動作とを行う回路である。具体的には、消去動作では、対象のメモリーセル全てに対して「１」（ハイレベル、広義には第２の論理レベル）を書き込む。書き込み動作では、消去動作によってオール「１」となっているメモリーセルのうち、書き込みデータの「０」（ローレベル、広義には第１の論理レベル）のビットに対応するメモリーセルに対して「０」を書き込む。消去及び書き込み回路は、例えばビット線を駆動する書き込みアンプ回路や、ワード線を選択する選択回路で構成される。なお選択回路はメモリー制御部１００に含まれてもよい。
【００３０】
読み出し回路３０は、不揮発性メモリー１０に記憶されたデータを読み出す読み出し動作を行う回路である。読み出し回路３０は、例えばメモリーセルからビット線に出力されるセル電流とリファレンス電流とを比較し、その比較結果に基づいて読み出しデータ（ビットの論理レベル）を検出するセンスアンプで構成される。
【００３１】
メモリー制御部１００は、不揮発性記憶装置２００の各部を制御する。例えばメモリー制御部１００は、論理アドレスを物理アドレスにデコードし、その物理アドレスに対する消去動作、書き込み動作、読み出し動作を制御する。また、ユーザーデータからエラー訂正用データ（ＥＣＣデータ）を生成する処理や、読み出しデータに対するエラー訂正処理（ＥＣＣ処理）を行う。ここで消去動作は、記憶データの消去、消去ベリファイ、消去の成功（パス）及び失敗（フェイル）の判定を含む動作である。書き込み動作は、書き込みデータの書き込み、書き込みベリファイ、書き込みの成功及び失敗の判定を含む動作である。本実施形態では、書き込み動作は更に、消去ベリファイ、消去ベリファイで読み出したデータと書き込みデータ（期待値）とのビット比較処理を含む。そして、そのビット比較処理の結果に基づいて書き込みの成功及び失敗の判定を行う。読み出し動作は、記憶データの読み出しを含む動作である。メモリー制御部１００は、例えばゲートアレイ等の自動配置配線手法で生成されたロジック回路や、或いはマイクロコンピューターやＤＳＰ（Digital Signal Processor）などの各種のプロセッサーにより実現できる。プロセッサーにより実現する場合、例えば不揮発性記憶装置２００は更にメモリーを含み、そのメモリーにはメモリー制御部１００の機能を記述したプログラム等が記憶される。そして、そのプログラムをプロセッサーが実行することによってメモリー制御部１００の機能が実現される。
【００３２】
さて、読み出し時のエラー訂正処理により訂正可能であることを前提として、消去動作や書き込み動作においてエラービットの存在を許可（許容）する手法がある。しかしながら、図２〜図７で後述するように、消去動作と書き込み動作の両方においてエラービットを許可した場合、読み出しデータに対してエラー訂正処理を行っても正しいデータに訂正できない可能性がある。
【００３３】
即ち、消去ベリファイで用いる判定基準（図７のリファレンス電流ＩＥ）と書き込みベリファイで用いる判定基準（リファレンス電流ＩＷ）には、それぞれ異なるマージンが設定されているため、消去ベリファイでエラーと判定されたビットが書き込みベリファイでパスと判定される場合がある。この場合、書き込みベリファイで新たにエラービットが許可されることになる。そして、読み出し動作ではマージンリードを行わない（リファレンス電流ＩＲ）ので、消去ベリファイでエラーと判定され且つ書き込みベリファイでパスと判定されたビットが、読み出しデータでエラービットとなる可能性がある。そうすると、書き込みベリファイで新たに許可したエラービットと合わせて、エラー訂正可能な最大のビット数を超えてしまう可能性がある。
【００３４】
この点、本実施形態の不揮発性記憶装置２００は、不揮発性メモリー１０と、不揮発性メモリー１０への消去動作、読み出し動作、及び書き込み動作の制御を行うメモリー制御部１００と、を含む。そしてメモリー制御部１００は、書き込み動作において、消去ベリファイを行い、その消去ベリファイの結果データである消去ベリファイ結果データと書き込みデータとをビット単位で比較するビット比較処理を行う。メモリー制御部１００は、書き込みベリファイにおけるエラーをエラー訂正処理により訂正可能であるとして許可するか否かの可否決定を、ビット比較処理の結果に基づいて行う。
【００３５】
例えば図８で後述する書き込み動作のフローでは、ステップＳ２１で消去ベリファイを行い、ステップＳ２５でビット比較を行う。そしてステップＳ２６、Ｓ２４、Ｓ２７でビット比較の結果に基づいてエラー訂正可否フラグを設定し、ステップＳ３１〜Ｓ３４でエラー訂正可否フラグに基づいて、書き込みベリファイにおけるエラーをエラー訂正処理により訂正可能であるとして許可するか否かの可否決定を行っている。
【００３６】
図５で後述するように、消去ベリファイでエラーと判定されたビット（Ｂ１）に対応する書き込みデータのビットが「１」である場合に、エラー訂正できなくなる可能性がある。本実施形態によれば、消去ベリファイ結果データと書き込みデータのビット比較処理を行うことで、このような場合を検出することが可能となる。そして、ビット比較処理の結果に基づいて書き込みベリファイのエラーを許可するか否かを決定することで、上記の場合に応じた決定（書き込みベリファイのエラーを許可しない決定）を行うことが可能となり、エラービット数をエラー訂正可能なビット数以下にできる。
【００３７】
また本実施形態では、メモリー制御部１００は、消去ベリファイにおいてエラーと判断された場合に、ビット比較処理を行う。
【００３８】
例えば図８に示すように、ステップＳ２１の消去ベリファイでエラービットが検出された場合、ステップＳ２３でＹＥＳに分岐し、ステップＳ２５でビット比較処理を行う。
【００３９】
消去ベリファイで用いる判定基準（図７のリファレンス電流ＩＥ）は通常の読み出し動作で用いる判定基準（リファレンス電流ＩＲ）に対して、「１」を厳しく判定するマージンが設定されている。即ち、消去ベリファイをパスしたビットは通常の読み出し動作においても正しい値が読み出される。このことから、エラー訂正可能なエラービット数を超える可能性があるのは、消去ベリファイにおいてエラーと判断された場合であり、そのような場合にビット比較処理を行うことで、エラービット数をエラー訂正可能なビット数以下にできる。
【００４０】
また本実施形態では、メモリー制御部１００は、ビット比較処理において、消去ベリファイ結果データのうちエラーと判定された消去エラービット（例えば図５のＢ１）と、その消去エラービットに対応する書き込みデータの書き込みビット（Ｂ２）との比較処理を行う。
【００４１】
上述したように、消去エラービットに対応する書き込みデータの書き込みビットが「１」である場合に、エラー訂正可能なエラービット数を超える可能性がある。本実施形態によれば、それらのビットの比較処理を行うことで、上記の場合を検出することが可能となる。
【００４２】
また本実施形態では、メモリー制御部１００は、ビット比較処理において消去エラービットと書き込みビットとが同じ第１の論理レベル（「０」）であると判定された場合、書き込みベリファイの結果データである書き込みベリファイ結果データのうちエラーと判定された書き込みエラービットを、エラー訂正処理による訂正が可能なビットとして、書き込みデータの不揮発性メモリー１０への書き込みが成功したと判定する。
【００４３】
例えば図８に示すように、ステップＳ２６で消去エラービットと書き込みビットとが一致すると判定された場合にはＹＥＳに分岐し、ステップＳ２４でエラー訂正可否フラグが１に設定される。そしてステップＳ３２でＹＥＳに分岐し、ステップＳ３３で書き込みエラービット数がエラー訂正可能なビット数以下と判定された場合にＹＥＳに分岐し、書き込みが成功したと判定される。
【００４４】
書き込みベリファイで用いる判定基準（図７のリファレンス電流ＩＷ）は通常の読み出し動作で用いる判定基準（リファレンス電流ＩＲ）に対して、「０」（第１の論理レベル）を厳しく判定するマージンが設定されている。即ち、書き込みベリファイをパスした「０」のビットは通常の読み出し動作においても正しい値が読み出される。図９に示すように、消去ベリファイでは「０」のビットがエラービットと判定される（Ｄ１）。即ち、その消去エラービットと書き込みビットとが同じ第１の論理レベル（「０」）であると判定された場合、そのビットは通常の読み出し動作ではエラービットにならない。これにより、書き込みベリファイにおいてエラーと判定されたビットを許可しても、エラービット数をエラー訂正可能なビット数以下にできる。
【００４５】
また本実施形態では、メモリー制御部１００は、ビット比較処理において消去エラービットと書き込みビットとが同じ第１の論理レベルであると判定された場合（図８のＳ２６、ＹＥＳ）、書き込みベリファイにおけるエラーを許可するか否かを表すエラー訂正可否フラグを、エラーを許可するアクティブに設定する（Ｓ２４）。メモリー制御部１００は、エラー訂正可否フラグがアクティブである場合（Ｓ３２、ＹＥＳ）、書き込みエラービットがエラー訂正処理により訂正可能であるか否かを判定する（Ｓ３３）。そしてメモリー制御部１００は、書き込みエラービットがエラー訂正処理により訂正可能であると判定された場合（Ｓ３３、ＹＥＳ）、書き込みデータの不揮発性メモリー１０への書き込みが成功（パス）したと判定する。
【００４６】
このようにすれば、ビット比較処理において消去エラービットと書き込みビットとが同じ第１の論理レベルであるか否かに応じて、エラー訂正可否フラグの論理レベルが設定される。そして、そのエラー訂正可否フラグがアクティブの場合に、書き込みベリファイにおいてエラーと判定されたビットがエラー訂正処理により訂正可能であるか否かの判定が行われる。このようにして、ビット比較処理において消去エラービットと書き込みビットとが同じ第１の論理レベルである場合に、書き込み動作において書き込みエラービットを許可することが可能となる。
【００４７】
また本実施形態の不揮発性記憶装置２００は、読み出し動作を行う読み出し回路３０を含む。そして読み出し回路３０は、消去ベリファイでは、消去ベリファイ用判定基準（図７のリファレンス電流ＩＥ）で不揮発性メモリー１０からデータを読み出し、書き込みベリファイでは、消去ベリファイ用判定基準とは異なる書き込みベリファイ用判定基準（リファレンス電流ＩＷ）で不揮発性メモリー１０からデータを読み出す。
【００４８】
図７に示すように、消去ベリファイでは「１」を厳しく判定する判定基準を用い、書き込みベリファイでは「０」を厳しく判定する判定基準を用いる。このようなマージンリードを行うことで、消去や書き込みにおいてデータにマージンを持たせる（データを保証する）ことが可能となる。一方で、エラー訂正処理を前提としてエラービットを許容した場合、上記のようなマージンリードの影響で上述したような問題が起こりうるが、本実施形態では、そのような問題を解決できる。
【００４９】
また本実施形態では、図１１で後述するように、不揮発性記憶装置２００は、消去動作及び書き込み動作を行う消去及び書き込み回路２０と、読み出し動作を行う読み出し回路３０と、を含む。メモリー制御部１００は、ビット比較処理を行うビット比較部１３０と、消去及び書き込み回路２０及び読み出し回路３０の制御と可否決定とを行う制御部１１０と、読み出し回路３０により読み出されたデータのエラー訂正処理を行うエラー訂正部１５０と、エラー訂正処理に用いるエラー訂正用データを生成するエラー訂正用データ生成部１４０と、を有する。
【００５０】
このようにすれば、ビット比較部１３０により消去ベリファイ結果データと書き込みデータとのビット比較処理が行われ、制御部１１０により、書き込みエラービットを許可するか否かの判定（可否決定）が行われる。これにより、エラー訂正部１５０が行うエラー訂正処理において、正しい結果データを得ることが可能となる。
【００５１】
なお、上記では不揮発性記憶装置２００の構成及び動作を説明したが、以下のような不揮発性記憶装置２００の制御方法が実行されてもよい。即ち、不揮発性メモリー１０を含む不揮発性記憶装置２００の制御方法において、不揮発性メモリー１０への書き込み動作において、消去ベリファイを行い、消去ベリファイの結果データである消去ベリファイ結果データと書き込みデータとをビット単位で比較するビット比較処理を行い、書き込みベリファイにおけるエラーをエラー訂正処理により訂正可能であるとして許可するか否かの可否決定を、ビット比較処理の結果に基づいて行う。
【００５２】
このような不揮発性記憶装置２００の制御方法により、消去ベリファイと書き込みベリファイの両方において、検出されたエラーをエラー訂正処理で訂正可能であるとして許可することが可能となる。これにより、不揮発性メモリー１０の寿命を延ばすこと等が可能になる。
【００５３】
２．消去動作と書き込み動作でエラービットを許可した場合の問題点
以下、本実施形態の消去動作と、比較例の書き込み動作とを説明し、それらの両方を実行した場合に生じる課題について説明する。そして、その課題を解決できる本実施形態の手法の詳細について説明する。
【００５４】
図２は、本実施形態の消去動作のフローチャートである。消去動作が開始されると、消去及び書き込み回路２０が、メモリー制御部１００から指示されたアドレス（ワード或いはページ）にオール「１」のデータ（消去用データ）を書き込み、記憶データを消去する（Ｓ１）。次に、読み出し回路３０が、ステップＳ１で消去されたアドレスのデータを消去用マージンリードにより読み出し、メモリー制御部１００が消去ベリファイを行う（Ｓ２）。即ち、読み出し回路３０が、消去ベリファイ用の判定基準で各ビットのデータが「０」であるか「１」であるかを判定して、データを読み出す。そしてメモリー制御部１００が、読み出したデータと期待値（オール「１」）を比較し、期待値と異なるビット（「０」のビット）をエラービットと判定（検出）する。次に、メモリー制御部１００は、ステップＳ２で判定されたエラービットのビット数をカウントする（Ｓ３）。
【００５５】
次に、メモリー制御部１００は、エラービットのビット数がエラー訂正処理で訂正可能なビット数以下であるか否かを判定する（Ｓ４）。エラービットのビット数がエラー訂正処理で訂正可能なビット数以下である場合には、メモリー制御部１００は、消去が成功（パス）したと判断し、消去動作を終了する。一方、エラービットのビット数がエラー訂正処理で訂正可能なビット数以下でない場合には、メモリー制御部１００は、消去回数が規定値未満であるか否かを判定する（Ｓ５）。消去回数は、今回の消去動作においてステップＳ１の消去を実行した回数である。消去回数が規定値未満である場合には、メモリー制御部１００は、消去回数を示す変数をカウントアップ（インクリメント）し、ステップＳ１に戻る（Ｓ６）。一方、消去回数が規定値未満でない場合には、メモリー制御部１００は、消去動作が失敗（フェイル）したと判断し、消去動作を終了する。
【００５６】
このように、本実施形態の消去動作では基本的に、不揮発性メモリー１０に記憶されたデータが正しく消去されるまで繰り返し消去を行う。一方で、読み出し時のエラー訂正処理により訂正可能なビット数以下であれば、エラービットが存在していたとしても消去できたものとみなしている。
【００５７】
図３は、比較例の書き込み動作のフローチャートである。書き込み動作が開始されると、消去及び書き込み回路２０が、メモリー制御部１００から指示されたアドレス（ワード或いはページ）に書き込みデータを書き込む（Ｓ４１）。次に、読み出し回路３０が、ステップＳ４１で書き込まれたデータを書き込み用マージンリードにより読み出し、メモリー制御部１００が書き込みベリファイを行う（Ｓ４２）。即ち、読み出し回路３０が、書き込みベリファイ用の判定基準で各ビットのデータが「０」であるか「１」であるかを判定して、データを読み出す。そしてメモリー制御部１００が、読み出したデータと期待値（書き込みデータ）を比較し、期待値と異なるビットをエラービットと判定する。次に、メモリー制御部１００は、ステップＳ４２で判定されたエラービットのビット数をカウントする（Ｓ４３）。
【００５８】
次に、メモリー制御部１００は、エラービットのビット数がエラー訂正処理で訂正可能なビット数以下であるか否かを判定する（Ｓ４４）。エラービットのビット数がエラー訂正処理で訂正可能なビット数以下である場合には、メモリー制御部１００は、書き込みが成功（パス）したと判断し、書き込み動作を終了する。一方、エラービットのビット数がエラー訂正処理で訂正可能なビット数以下でない場合には、メモリー制御部１００は、書き込み回数が規定値未満であるか否かを判定する（Ｓ４５）。書き込み回数は、今回の書き込み動作においてステップＳ４１の書き込みを実行した回数である。書き込み回数が規定値未満である場合には、メモリー制御部１００は、書き込み回数を示す変数をカウントアップ（インクリメント）し、ステップＳ４１に戻る（Ｓ４６）。一方、書き込み回数が規定値未満でない場合には、書き込み動作が失敗（フェイル）したと判断し、書き込み動作を終了する。
【００５９】
このように、比較例の書き込み動作では基本的に、不揮発性メモリー１０に書き込みデータが正しく書き込まれるまで繰り返し書き込みを行う。一方で、読み出し時のエラー訂正処理により訂正可能なビット数以下であれば、エラービットが存在していたとしても書き込みできたものとみなしている。
【００６０】
以上のように消去動作や書き込み動作においてエラービット数がエラー訂正可能なビット数以下であればエラービットを許可しているのは、以下の理由による。
【００６１】
図４は、ビットの記憶データが消去される（即ち消去ベリファイをパスする）消去回数とビット数の関係を示すヒストグラムの例である。
【００６２】
図４のＡ１に示すように、平均的な消去回数よりも突出して消去回数が多いビットが存在する場合がある。もし、エラービットを許可せずに、消去ベリファイにより全てのビットが「１」と判定されるまで消去を繰り返したとする。この場合、Ａ１に示すビットに「１」が書き込まれるまで消去を繰り返すことになる。そうすると、Ａ２に示すような平均的な消去回数で済むはずのビットに対して、必要以上に消去（「１」の書き込み）が繰り返されることになる。このようなオーバーライティングが行われると、メモリーセルにダメージを与える可能性があり、不揮発性メモリー１０の寿命を縮めてしまう可能性がある。
【００６３】
この点、Ａ１に示すようなビットが消去ベリファイでエラーと判定されたとしても、それを許可して消去動作を終了することによって、Ａ３に示すように消去回数を抑えることが可能となる。これによって不揮発性メモリー１０の寿命を延ばすことができる。
【００６４】
なお、上記では消去を例に説明したが、書き込み回数においても同様な特性のヒストグラムとなり、同様の議論が成り立つ。即ち、書き込み動作では消去で「１」になっているビットに「０」を書き込むが、書き込みベリファイにおけるエラービットを許可することで、書き込み回数（「０」のオーバーライティング）を抑制できる。
【００６５】
さて、消去動作でのみエラービットを許可し、書き込み動作ではエラービットを許可しない場合、或いは書き込み動作でのみエラービットを許可し、消去動作ではエラービットを許可しない場合には、エラー訂正処理により正しいデータに訂正可能である（例えば後述する図１３Ａ〜図１６を参照）。しかしながら、上述した本実施形態の消去動作と比較例の書き込み動作では、その両方においてエラービットを許可している。このように消去動作と書き込み動作の両方においてエラービットを許可した場合、エラー訂正処理により正しいデータに訂正できない場合がある。以下、この点について図５〜図７を用いて説明する。
【００６６】
図５は、消去ベリファイ及び書き込みベリファイをパスしたにも関わらずエラー訂正できない場合の具体例である。
【００６７】
図５に示すように、不揮発性メモリー１０に記憶されるデータは、不揮発性メモリー１０に本来記憶させようとしているデータ（以下、ユーザーデータと呼ぶ）と、書き込みデータのエラー訂正を行うためにユーザーデータから生成されたエラー訂正用データと、で構成される。ここで、ユーザーデータは、例えば処理装置（ＣＰＵ等）から転送されたデータや、メモリー制御部１００等の処理によって生成されたデータ等であり、特定のユーザー等によって用意されたデータのみを想定するものではない。
【００６８】
例えば、メモリーを所定サイズのページ単位に分割して制御するページング方式の場合、ユーザーデータは１ページのデータに対応する。そして、その１ページのデータからエラー訂正用データを生成する。或いは、ワード単位で制御する方式の場合、ユーザーデータは１ワードのデータに対応する。そして、その１ワードのデータからエラー訂正用データを生成する。
【００６９】
図５は、ハミング符号によるエラー訂正用データを付加する例である。この手法では、２Ｎビットのユーザーデータに対してＮ＋１ビットのエラー訂正用データを対応させることで、ユーザーデータとエラー訂正用データを合わせたデータのうち最大で１ビットまでのエラービットを訂正可能である。エラー訂正手法の詳細については図１３Ａ〜図１６で後述する。図５は、４（＝２２）ビットのユーザーデータ（ｘ１，ｘ２，ｘ３，ｘ４）に対して、ハミング符号による３（＝２＋１）ビットのエラー訂正用データ（ｐ１，ｐ２，ｐ３）を付加する例であり、７ビットの書き込みデータのうち最大で１ビットのエラービットを訂正可能である。なお、訂正可能な最大のビット数は２以上であってもよい。また、エラー訂正用データの生成手法はハミング符号に限定されない。
【００７０】
図５に示すように、消去用データの期待値は「１１１１１１１」である。消去動作において、消去ベリファイによって読み出されたデータ（消去ベリファイ結果データと呼ぶ）が「１１０１１１１」だったとすると、Ｂ１に示すビットｘ３がエラービットである。エラービット数は１以下なので、消去動作は成功したと判断される。
【００７１】
次に書き込み動作が行われる。書き込みデータの期待値を「０１１０００１」とする。書き込み動作では、「０」のビットｘ１、ｘ４、ｐ１、ｐ２に対してのみ書き込みが行われる。即ち、Ｂ２に示すビットｘ３（書き込みビット）は「１」なので書き込みが行われず、消去動作における消去ベリファイで「０」と判定された状態（消去動作でメモリーセルに蓄積された電荷）が維持される。このとき、書き込みベリファイによって読み出されたデータ（書き込みベリファイ結果データと呼ぶ）において、ビットｘ３が「０」となることが期待される。しかし、Ｂ３に示すように、マージンリードの影響でビットｘ３が「１」と判定される可能性がある。このマージンリードの影響については図７で後述する。
【００７２】
ビットｘ３の期待値は「１」なので、書き込みベリファイでは消去ベリファイとは異なり、ビットｘ３はパスと判定される。そうすると、ビットｘ３はエラービットとしてカウントされないので、ビットｘ３以外にエラービットが１ビットあったとしても、書き込みが成功したと判断されることになる。Ｂ４に示すように、期待値が「０」であるビットｘ１が書き込みベリファイにおいて「１」と判定され、エラービットと判断されたとする。
【００７３】
このとき、Ｂ５に示すように、通常の読み出し動作における読み出しデータ（エラー訂正前のデータ）では、マージンリードを行わないためビットｘ３が「０」と読み出される可能性がある。この場合、ビットｘ１、ｘ３の２ビットが期待値と異なる状態となり、エラー訂正可能なエラービット数を超えてしまう。このような読み出しデータに対してエラー訂正処理を行うと、エラー訂正処理の結果データは「１１０１００１」となり、書き込みデータの期待値「０１１０００１」とは異なるデータとなってしまう。
【００７４】
具体的には、図６Ａに示すように、読み出しデータ「１１００００１」からシンドローム（ｓ１，ｓ２，ｓ３）を求める。そして図６Ｂに示すように、シンドローム（ｓ１，ｓ２，ｓ３）を誤りベクトル（ｅ１，ｅ２，ｅ３，ｅ４，ｅ５，ｅ６，ｅ７）に変換する。図６Ｂの誤りベクトルでは、ｅ４＝１となっており、ビットｘ４がエラービットであることを示している。図６Ｃに示すように、読み出しデータと誤りベクトルの排他的論理和（ｘｏｒ）を求める。この処理により、エラービットであるビットｘ４の論理レベルが「０」から「１」に反転され、エラー訂正処理の結果データとして「１１０１００１」が得られる。このように、エラー訂正可能なビット数を超えるエラービットが読み出しデータに存在した場合、その読み出しデータに対してエラー訂正処理を行っても、書き込みデータの期待値と同じデータに復元することはできない。
【００７５】
図７は、マージンリードを模式的に説明する図である。不揮発性メモリー１０ではメモリーセルからの電流（セル電流）とリファレンス電流をセンスアンプで比較することで、データを読み出す。図７に示すように、通常の読み出し動作におけるリファレンス電流ＩＲに対して、消去ベリファイにおけるリファレンス電流ＩＥ（＞ＩＲ）や書き込みベリファイにおけるリファレンス電流ＩＷ（＜ＩＲ）にはマージンが設けられている。
【００７６】
消去ベリファイでは、セル電流がリファレンス電流ＩＥよりも大きい場合に「１」と判定される。即ち、消去ベリファイをパスしたビットのビット数を各セル電流でカウントしたヒストグラムＤＳＥは、リファレンス電流ＩＥよりも上に分布をもつ。一方、リファレンス電流ＩＥよりもセル電流が小さい場合は「０」と判定されるので、図５のＢ１のビットｘ３に対応するメモリーセルのセル電流は、リファレンス電流ＩＥよりも小さいことになる。ここでＣ１に示すように、そのセル電流が通常の読み出し動作におけるリファレンス電流ＩＲ付近（例えば少しだけ小さい値）だったとする。
【００７７】
書き込みベリファイでは、セル電流がリファレンス電流ＩＷよりも小さい場合に「０」と判定される。即ち、書き込みベリファイをパスしたビットのビット数を各セル電流でカウントしたヒストグラムＤＳＷは、リファレンス電流ＩＷよりも下に分布をもつ。一方、リファレンス電流ＩＷよりもセル電流が大きい場合は「１」と判定されるので、Ｃ１に示すセル電流のビットは、「１」と判定されることになる。このようにして、図５のＢ３に示すように、書き込みベリファイにおいてビットｘ３が「１」と判定され、消去ベリファイとは異なった判定結果となる。
【００７８】
そして、このビットｘ３を通常の読み出し動作で読み出した場合、Ｃ１に示すようにセル電流はリファレンス電流ＩＲよりも少し小さいので、ビットｘ３は「０」と判定されることになる。このようにして、図５のＢ５に示すように、通常の読み出し動作においてビットｘ３が「０」と読み出され、書き込みデータのビットｘ３の期待値「１」とは異なった値となる。
【００７９】
３．本実施形態の手法
以下、上記のような課題を解決できる本実施形態の手法について説明する。図８は、本実施形態の書き込み動作のフローチャートである。
【００８０】
書き込み動作が開始されると、読み出し回路３０が、書き込みデータを書き込もうとするアドレスのデータ（書き込み動作の前の消去動作で書き込まれたデータ）を消去用マージンリードにより読み出し、メモリー制御部１００が消去ベリファイを行う（Ｓ２１）。即ち、メモリー制御部１００は、読み出したデータと期待値（オール「１」）を比較し、期待値と異なるビット（「０」のビット）をエラービットと判定する。次に、メモリー制御部１００は、ステップＳ２１で判定されたエラービットのビット数をカウントする（Ｓ２２）。
【００８１】
次に、メモリー制御部１００は、消去動作においてエラー訂正処理の使用を許可したか否かを判定する（Ｓ２３）。即ち、ステップＳ２２でカウントされたエラービット数が１以上（本実施形態では１）であるか否かを判定する。消去動作においてエラー訂正処理の使用を許可していない（エラービット数が０だった）場合には、メモリー制御部１００は、エラー訂正可否フラグを「１」（アクティブ）に設定する（Ｓ２４）。
【００８２】
一方、消去動作においてエラー訂正処理の使用を許可した（エラービット数が１以上だった）場合には、メモリー制御部１００は、ステップＳ２１の消去ベリファイで読み出された消去ベリファイ結果データと書き込みデータ（期待値）とのビット比較処理を行う（Ｓ２５）。具体的には、消去ベリファイ結果データのうちのエラービットと、そのエラービットと同じ桁（位置）の書き込みデータのビットとを比較する。
【００８３】
次に、メモリー制御部１００は、エラービットと、それに対応する書き込みデータのビットとが一致するか否かを判定する（Ｓ２６）。エラービットと、それに対応する書き込みデータのビットとが一致した場合には、ステップＳ２４においてエラー訂正可否フラグを「１」に設定する。消去ベリファイにおけるエラービットは「０」なので、それに対応する書き込みデータのビットが「０」の場合に一致したと判定される。一方、エラービットと、それに対応する書き込みデータのビットとが一致しない場合には、メモリー制御部１００は、エラー訂正可否フラグを「０」（非アクティブ）に設定する（Ｓ２７）。なお、エラー訂正可能なエラービット数が２以上である場合、例えば１ビットでも一致しなかった場合にはエラー訂正可否フラグを「０」に設定する。
【００８４】
次に、消去及び書き込み回路２０が、ステップＳ２１で消去ベリファイを行ったアドレスに書き込みデータを書き込む（Ｓ２８）。次に、読み出し回路３０が、ステップＳ２８で書き込まれたデータを書き込み用マージンリードにより読み出し、メモリー制御部１００が書き込みベリファイを行う（Ｓ２９）。即ちメモリー制御部１００は、読み出したデータと期待値（書き込みデータ）を比較し、期待値と異なるビットをエラービットと判定する。次に、メモリー制御部１００は、ステップＳ２９で判定されたエラービットのビット数をカウントする（Ｓ３０）。このとき、ステップＳ２１の消去ベリファイでエラービットと判定されたビット以外のビットについて、エラービットのビット数をカウントする。
【００８５】
次に、メモリー制御部１００は、ステップＳ３０でカウントしたエラービット数が０か否かを判定する（Ｓ３１）。エラービット数が０である場合には、メモリー制御部１００は、書き込みが成功（パス）したと判断し、書き込み動作を終了する。エラービット数が０でない場合には、メモリー制御部１００は、エラー訂正可否フラグが「１」であるか否かを判定する（Ｓ３２）。エラー訂正可否フラグが「１」である場合には、メモリー制御部１００は、ステップＳ３０でカウントしたエラービット数がエラー訂正処理で訂正可能なビット数以下であるか否かを判定する（Ｓ３３）。エラービット数がエラー訂正処理で訂正可能なビット数以下である場合には、メモリー制御部１００は、書き込みが成功（パス）したと判断し、書き込み動作を終了する。
【００８６】
一方、エラービット数がエラー訂正処理で訂正可能なビット数以下でない場合には、メモリー制御部１００は、書き込み回数が規定値未満であるか否かを判定する（Ｓ３４）。書き込み回数が規定値未満である場合には、メモリー制御部１００は、書き込み回数を示す変数をカウントアップ（インクリメント）し、ステップＳ２８に戻る（Ｓ３５）。一方、書き込み回数が規定値未満でない場合には、メモリー制御部１００は、書き込み動作が失敗（フェイル）したと判断し、書き込み動作を終了する。この場合、故障（不良品）を示すフラグを不図示のレジスターに格納してもよいし、更にそれをユーザーに通知可能にしてもよい（例えばＣＰＵ等が不揮発性記憶装置２００の不図示のインターフェースを介してレジスターからフラグを読み出し、それに基づいてＣＰＵがユーザーに通知する処理を行ってもよい）。或いは、不揮発性メモリー１０が冗長なメモリー領域を有しており、書き込み動作を失敗した書き込みデータを、その冗長なメモリー領域に書き込んでもよい。
【００８７】
ステップＳ３２において、エラー訂正可否フラグが「０」である場合には、メモリー制御部１００は、エラービットを訂正可能であるか否かを判定せずに、ステップＳ３４に進む。即ち、エラー訂正可否フラグが「０」である場合には書き込みベリファイにおけるエラービットを許可しない（エラービット数が０になるか、書き込み回数が規定値を超えるまで書き込みを繰り返す）。
【００８８】
上記のフローによる書き込み動作を、図９、図１０を用いて具体例に説明する。図９は、ビット比較処理によりエラー訂正可否フラグが「１」となる場合の具体例である。
【００８９】
図９に示すように、消去ベリファイ結果データの期待値は「１１１１１１１」である。消去ベリファイによって読み出された消去ベリファイ結果データが「１１０１１１１」だったとすると、Ｄ１に示すように「０」のビットｘ３がエラービット（消去エラービット）と判定される。エラービットが検出されたので、図８のステップＳ２３でＹＥＳに分岐し、消去ベリファイ結果データと書き込みデータのビット比較処理が行われる。
【００９０】
書き込みデータの期待値を「０１０１１００」とすると、Ｄ２に示すように、消去ベリファイのエラービットｘ３に対応する書き込みデータのビットｘ３は「０」である。即ち、ビット比較処理で一致と判定されるので、図８のステップＳ２６でＹＥＳに分岐し、ステップＳ２４でエラー訂正可否フラグが「１」に設定される。
【００９１】
書き込みデータ「０１０１１００」を書き込んだ後、書き込みベリファイにより読み出された書き込みベリファイ結果データが「１１０１１００」だったとする。この場合、Ｄ３に示すようにビットｘ１が「１」であり、期待値「０」と異なるのでエラービット（書き込みエラービット）と検出される。エラー訂正可否フラグが「１」なので、図８のステップＳ３２でＹＥＳに分岐し、エラービット数は１ビット以下なのでステップＳ３３でＹＥＳに分岐する。即ち、このエラービットｘ１は許可され、書き込み動作が終了する。
【００９２】
この書き込みデータを通常の読み出し動作で読み出した場合、読み出しデータは例えば「１１０１１００」となる。Ｄ４に示すように、書き込みベリファイにおけるエラービットｘ１は、読み出しデータにおいても「１」と読み出される可能性がある。この場合、ビットｘ１はエラービットとなる。一方、消去ベリファイにおけるエラービットｘ３は、書き込みベリファイにおいて期待値「０」に一致するか否かがチェックされている。即ち、図７で説明したようにビットｘ３のセル電流がリファレンス電流ＩＷよりも小さいと判定されている。通常の読み出し動作におけるリファレンス電流はＩＲ＞ＩＷなので、書き込みベリファイで「０」と判定されたビットは、Ｄ５に示すように通常の読み出し動作においても「０」と読み出される。即ち、そのビットはエラービットにはならない。
【００９３】
以上から、読み出し動作においてエラービットとなる可能性があるのは、書き込みベリファイでエラービットと判定されたビットｘ１だけであり、エラー訂正可能なビット数を超えない。これにより、エラー訂正処理の結果データは「０１０１１００」となり、書き込みデータの期待値が復元される。
【００９４】
図１０は、ビット比較処理によりエラー訂正可否フラグが「０」となる場合の具体例である。
【００９５】
図１０に示すように、Ｅ１に示すように消去ベリファイにおいてビットｘ３がエラービット（消去エラービット）と判定されたとすると、図８のステップＳ２３でＹＥＳに分岐し、消去ベリファイ結果データと書き込みデータのビット比較処理が行われる。
【００９６】
書き込みデータの期待値を「０１１１０１０」とすると、Ｅ２に示すように、消去ベリファイのエラービットｘ３に対応する書き込みデータのビットｘ３は「１」である。即ち、ビット比較処理で不一致と判定されるので、図８のステップＳ２６でＮＯに分岐し、ステップＳ２７でエラー訂正可否フラグが「０」に設定される。
【００９７】
書き込みデータ「０１１１０１０」を書き込んだ後、書き込みベリファイにより読み出された書き込みベリファイ結果データは「０１０１０１０」となる可能性がある。即ち図７で説明したように、消去ベリファイでエラービット（「０」）と判定され、且つ書き込みデータの期待値が「１」であるビットｘ３は、Ｅ３に示すように書き込みベリファイにおいて「０」（即ち、書き込みエラービット）と判定される可能性がある。エラー訂正可否フラグは「０」なので、図８のステップＳ３２でＮＯに分岐し、書き込みベリファイでビットｘ３以外に新たにエラービットが発生することは許可されない。即ち、通常の読み出し動作における読み出しデータは、ビットｘ３にエラーがある「０１０１０１０」となる可能性があるが、ビットｘ３以外にはエラービットは発生しない。
【００９８】
以上から、読み出し動作においてエラービットとなる可能性があるのは、消去ベリファイでエラービットと判定されたビットｘ３だけであり、エラー訂正可能なビット数を超えない。これにより、エラー訂正処理の結果データは「０１１１０１０」となり、書き込みデータの期待値が復元される。
【００９９】
４．詳細構成
図１１は、本実施形態の不揮発性記憶装置２００の詳細な構成例である。図１１では、不揮発性メモリー１０が、ユーザーデータメモリーセルアレイ１１、エラー訂正用データメモリーセルアレイ１２を含む。またメモリー制御部１００が、制御部１１０、ベリファイ判定部１２０、ビット比較部１３０、エラー訂正用データ生成部１４０、エラー訂正部１５０を含む。ビット比較部１３０は、書き込みデータレジスター１３１、読み出しデータレジスター１３２を含む。
【０１００】
ユーザーデータメモリーセルアレイ１１は、消去用データや書き込みデータのうちユーザーデータを記憶するメモリーセルアレイである。エラー訂正用データメモリーセルアレイ１２は、消去用データや書き込みデータのうちエラー訂正用データを記憶するメモリーセルアレイである。例えば、これらのメモリーセルアレイは、１つのメモリーセルアレイを領域分割したものである。消去、書き込み、読み出しを行う場合には、ユーザーデータと、それに対応付けられたエラー訂正用データとがアクセスされる。
【０１０１】
エラー訂正用データ生成部１４０は、ユーザーデータＤＩＮからエラー訂正用データを生成する。このエラー訂正用データとユーザーデータＤＩＮが書き込みデータとして書き込みデータレジスター１３１に保持される。消去及び書き込み回路２０は、書き込みデータレジスター１３１に保持された書き込みデータに基づいて不揮発性メモリー１０への書き込みを行う。
【０１０２】
読み出し回路３０が不揮発性メモリー１０から読み出したデータは、読み出しデータとして読み出しデータレジスター１３２に保持される。エラー訂正部１５０は、読み出しデータレジスター１３２に保持された読み出しデータに基づいてエラー訂正処理を行い、エラー訂正処理の結果データＤＯＵＴを出力する。
【０１０３】
ベリファイ判定部１２０は、消去動作における消去ベリファイ（図２のＳ２）、書き込み動作における消去ベリファイ（図８のＳ２１）、書き込み動作における書き込みベリファイ（図８のＳ２９）を行う。即ち、これらのベリファイで読み出されたデータと期待値とを比較し、エラービットを検出する。
【０１０４】
ビット比較部１３０は、書き込み動作におけるビット比較処理（図８のＳ２５）を行う。即ち、書き込みデータレジスター１３１に保持された書き込みデータと、読み出しデータレジスター１３２に保持された消去ベリファイ結果データとを、各ビットについて比較する。
【０１０５】
制御部１１０は、消去動作、書き込み動作、読み出し動作の制御を行う。即ち、制御部１１０は、消去動作において図２のステップＳ３〜Ｓ６の処理を実行する。またステップＳ１において消去及び書き込み回路２０に対して、アドレスの指定と消去の指示を行う。また制御部１１０は、書き込み動作において図８のステップＳ２２〜Ｓ２４、Ｓ２６、Ｓ２７、Ｓ３０〜Ｓ３５の処理を実行する。またステップＳ２８において消去及び書き込み回路２０に対して、アドレスの指定と書き込みの指示を行う。また制御部１１０は、読み出し動作において読み出し回路３０に対して、アドレスの指定と読み出しの指示を行う。
【０１０６】
図１２は、読み出し回路３０、不揮発性メモリー１０の詳細な構成例である。読み出し回路３０は、カレントミラー回路３１、センスアンプ３２を含む。不揮発性メモリー１０は、リファレンスセル１４、メモリーセルアレイ１３を含む。なお、図１２には１つのセンスアンプ３２を図示しているが、実際には複数のビット線に対応して複数のセンスアンプが設けられる。
【０１０７】
リファレンスセル１４は、基本的には通常のメモリーセルと同一構造であるが、検査工程においてリファレンスセル１４に書き込みを行うことでしきい値電圧の調整が行われ、それによって所定電流のリファレンスセル電流Ｉｒｃを出力するようになっている。メモリーセルアレイ１３は、図１１のユーザーデータメモリーセルアレイ１１とエラー訂正用データメモリーセルアレイ１２に対応する。Ｉｃｅｌは、ワード線により選択されたメモリーセルがビット線に出力するセル電流である。
【０１０８】
カレントミラー回路３１は、不揮発性メモリー１０のリファレンスセル１４から出力されるリファレンスセル電流Ｉｒｃをミラーして、リファレンス電流Ｉｒｅｆを出力する。センスアンプ３２は、リファレンス電流Ｉｒｅｆとセル電流Ｉｃｅｌとを比較し、「０」又は「１」をデータとして出力する。
【０１０９】
カレントミラー回路３１は複数のミラー比を選択可能である。そして、制御部１１０からの制御信号に基づいてミラー比を切り替えることにより、図７のリファレンス電流ＩＷ、ＩＲ、ＩＥの切り替えを実現する。
【０１１０】
なお、リファレンス電流の切り替え手法はこれに限定されない。例えばリファレンスセル電流が異なる複数のリファレンスセルを設け、制御部１１０からの制御信号に基づいてリファレンスセルを選択することにより、リファレンス電流を切り替えてもよい。
【０１１１】
５．エラー訂正用データの生成処理、エラー訂正処理
以下、エラー訂正用データの生成処理、エラー訂正処理の詳細について説明する。図１３Ａ〜図１３Ｃは、エラー訂正用データの生成処理の説明図である。以下ではハミング符号によりエラー訂正用データを生成し、最大で１ビットのエラービットを訂正できる場合の例を説明する。
【０１１２】
なお、データは「００１１」のように表記し、それをベクトルとして考える場合には（０，０，１，１）のように表記するが、表記が異なるだけで実質的に意味しているデータ内容は同じである。
【０１１３】
図１３Ａに示すように、ユーザーデータが４ビットの場合、３ビットのエラー訂正用データを生成する。そして、それらを合わせた７ビットのデータが書き込みデータｗとなる。エラー訂正用データのビットｐ１、ｐ２、ｐ３は、図１３Ｂに示す式により求められる。ここで「ｘｏｒ」は排他的論理和である。図１３Ｃは、図１３Ｂの式を真理値表として示したものである。ユーザーデータが「１１１１」の場合にはエラー訂正用データは「１１１」となり、消去動作ではオール「１」が書き込まれるようになっている。
【０１１４】
図１４Ａ〜図１４Ｄは、エラー訂正処理の説明図である。図１４Ａに示すように、読み出しデータｙは書き込みデータｗと同じ７ビットである。図１４Ｂに示す式により、読み出しデータｙからシンドローム（ｓ１，ｓ２，ｓ３）を求める。図１４Ｃに示すシンドロームパターン（シンドロームと誤りベクトルの対応）により、シンドローム（ｓ１，ｓ２，ｓ３）から誤りベクトル（ｅ１，ｅ２，ｅ３，ｅ４，ｅ５，ｅ６，ｅ７）を求める。誤りベクトルの成分（ビット）ｅｉ＝１の場合、読み出しデータｙのビットｙｉがエラービットであることを示している。ここでｉは１以上７以下の整数である。シンドロームが（０，０，０）の場合には誤りベクトルは（０，０，０，０，０，０，０）となり、エラービットが無いことを示している。図１４Ｄに示すように、誤りベクトルと読み出しデータの排他的論理和を求め、その結果をエラー訂正処理の結果データ（最終的な読み出しデータ）として出力する。
【０１１５】
図１５は、消去動作において許可されたエラービットを訂正する場合の具体例である。消去ベリファイ結果データが「１１０１１１１」であった場合、そのまま通常の読み出し動作を行ったとすると、読み出しデータとして「１１０１１１１」が読み出される可能性がある。この読み出しデータは、ビットｘ３がエラーとなっている。この場合、図１４Ｂの式からシンドロームは（１，１，０）となり、図１４Ｃのシンドロームパターンから誤りベクトルは（０，０，１，０，０，０，０）となる。図１４Ｄの式から結果データを求めるとビットｘ３の論理レベルが反転されて「１１１１１１１」となり、ビットｘ３のエラーが訂正されている。
【０１１６】
図１６は、書き込み動作において許可されたエラービットを訂正する場合の具体例である。書き込みデータが「０１１０００１」であり、書き込みベリファイ結果データが「１１１０００１」であった場合、読み出しデータとして「１１１０００１」が読み出される可能性がある。この読み出しデータは、ビットｘ１がエラーとなっている。図１４Ｂの式からシンドロームは（１，０，１）となり、図１４Ｃのシンドロームパターンから誤りベクトルは（１，０，０，０，０，０，０）となる。図１４Ｄの式から結果データを求めるとビットｘ１の論理レベルが反転されて「０１１０００１」となり、ビットｘ１のエラーが訂正されている。
【０１１７】
なお、上記ではユーザーデータが４ビットの場合を例に説明したが、これに限定されない。即ち、ハミング符号によりエラー訂正用データを生成する場合、２ｎビットのユーザーデータに対してｎ＋１ビットのエラー訂正用データを付加することにより、１ビットまでのエラービットを訂正することが可能である。また、上記ではユーザーデータにエラーがある場合を例に説明したが、エラー訂正用データにエラーがある場合であっても同様の手法で訂正される。即ち、ユーザーデータとエラー訂正用データを合わせたデータの中で、エラー訂正可能な最大のビット数以下であれば正しいデータに訂正される。
【０１１８】
６．電子機器
図１７は、本実施形態の電子機器４００の構成例である。本実施形態の電子機器４００として、例えばプリンターや、プリンターのインクカートリッジ、発振器、ジャイロセンサー、プロジェクター、テレビション装置、情報処理装置（コンピューター）、携帯型情報端末等の種々の電子機器を想定できる。
【０１１９】
電子機器４００は、処理部３１０（例えばＣＰＵ等のプロセッサー、或いはゲートアレイ）、記憶部３２０（メモリー）、操作部３３０（操作装置）、インターフェース部３４０（インターフェース回路、インターフェース装置）、表示部３５０（ディスプレイ）を含む。
【０１２０】
表示部３５０は、例えば液晶表示装置や、或は自発光素子を用いたＥＬ（Electro-Luminescence）表示装置である。操作部３３０は、ユーザーからの種々の操作を受け付けるユーザーインターフェースである。例えば、ボタンやマウス、キーボード、表示部３５０に装着されたタッチパネル等である。インターフェース部３４０は、画像データや制御データの入出力を行うデータインターフェースである。例えばＵＳＢ等の有線通信インターフェースや、或は無線ＬＡＮ等の無線通信インターフェースである。記憶部３２０は、インターフェース部３４０から入力されたデータを記憶する。或は、記憶部３２０は、処理部３１０のワーキングメモリーとして機能する。不揮発性記憶装置２００には、電子機器の動作設定を行うための設定データや、処理部３１０が行う種々の処理に用いられるデータ等が記憶される。処理部３１０は、不揮発性記憶装置２００に記憶されたデータに基づいて、電子機器の各部の制御処理や種々のデータ処理を行う。
【０１２１】
なお、電子機器４００の構成は図１７に限定されず、その構成要素の一部を省略したり、他の構成要素を追加したりする等の種々の変形実施が可能である。例えば電子機器が発振器やジャイロセンサーである場合、電子機器は処理部３１０、不揮発性記憶装置２００、アナログ回路（例えば駆動回路、検出回路等）、振動子を含む。そして処理部３１０、不揮発性記憶装置２００、駆動回路が１つの集積回路装置として構成され、アナログ回路に振動子が接続され、集積回路装置と振動子とがパッケージに格納される。
【０１２２】
なお、上記のように本実施形態について詳細に説明したが、本発明の新規事項および効果から実体的に逸脱しない多くの変形が可能であることは当業者には容易に理解できるであろう。従って、このような変形例はすべて本発明の範囲に含まれるものとする。例えば、明細書又は図面において、少なくとも一度、より広義または同義な異なる用語と共に記載された用語は、明細書又は図面のいかなる箇所においても、その異なる用語に置き換えることができる。また本実施形態及び変形例の全ての組み合わせも、本発明の範囲に含まれる。また不揮発性メモリー、消去及び書き込み回路、読み出し回路、メモリー制御部、不揮発性記憶装置、電子機器の構成・動作等も、本実施形態で説明したものに限定されず、種々の変形実施が可能である。
【符号の説明】
【０１２３】
１０…不揮発性メモリー、１１…ユーザーデータメモリーセルアレイ、
１２…エラー訂正用データメモリーセルアレイ、１３…メモリーセルアレイ、
１４…リファレンスセル、２０…消去及び書き込み回路、３０…読み出し回路、
３１…カレントミラー回路、３２…センスアンプ、１００…メモリー制御部、
１１０…制御部、１２０…ベリファイ判定部、１３０…ビット比較部、
１３１…書き込みデータレジスター、１３２…読み出しデータレジスター、
１４０…エラー訂正用データ生成部、１５０…エラー訂正部、
２００…不揮発性記憶装置、３１０…処理部、３２０…記憶部、３３０…操作部、
３４０…インターフェース部、３５０…表示部、４００…電子機器、
ＩＥ…リファレンス電流（消去ベリファイ用判定基準）、ＩＲ…リファレンス電流、
ＩＷ…リファレンス電流（書き込みベリファイ用判定基準）、
ｐ１〜ｐ３…エラー訂正用データのビット、ｘ１〜ｘ４…ユーザーデータのビット
【図１】
0006642188.tif 000002
【図２】
0006642188.tif 000003
【図３】
0006642188.tif 000004
【図４】
0006642188.tif 000005
【図５】
0006642188.tif 000006
【図６Ａ】
0006642188.tif 000007
【図６Ｂ】
0006642188.tif 000008
【図６Ｃ】
0006642188.tif 000009
【図７】
0006642188.tif 000010
【図８】
0006642188.tif 000011
【図９】
0006642188.tif 000012
【図１０】
0006642188.tif 000013
【図１１】
0006642188.tif 000014
【図１２】
0006642188.tif 000015
【図１３Ａ】
0006642188.tif 000016
【図１３Ｂ】
0006642188.tif 000017
【図１３Ｃ】
0006642188.tif 000018
【図１４Ａ】
0006642188.tif 000019
【図１４Ｂ】
0006642188.tif 000020
【図１４Ｃ】
0006642188.tif 000021
【図１４Ｄ】
0006642188.tif 000022
【図１５】
0006642188.tif 000023
【図１６】
0006642188.tif 000024
【図１７】
0006642188.tif 000025