(57)【要約】本発明は“スマート検証”手法を提供し、この手法では、シーケンシャルな状態に基づいた検証を実施するために多状態検証範囲の検証結果に基づいた動的調節を用いて多状態メモリがプログラムされる。この手法は、シーケンシャルに検証される多状態メモリの実装例の中で信頼できる動作を維持しながら多状態書き込み速度を高めることができる。これは、書き込みシーケンスの各プログラム／検証／ロックアウトのステップのためのシーケンシャルな検証動作の数を最少にする“インテリジェントな”手段を設けることによって行われる。選択された記憶素子のプログラム／検証サイクルのシーケンスの間に多状態メモリのための書き込みシーケンスの１つの代表的な実施形態では、プロセスの開始時に、その選択された記憶素子がプログラムされる多状態範囲の最低状態だけが検証段階中にチェックされる。選択された記憶素子のうちの１つ以上が第１の記憶状態に達すると、多状態のシーケンスのうちの次の状態が検証プロセスに付け加えられる。この次の状態は、最速の素子が当該シーケンス中のこの先行状態に達したならば、直ちに或いは幾つかのプログラムサイクルの遅延の後に、付け加えられ得る。検証段階でチェックされる集合への状態の付け加えは、最高状態が付け加えられるまで、多状態の集合の残りを通して、順に続行される。さらに、これらのレベルを目指すように選択された記憶素子の全てがこれらの目標値に合うと首尾よく検証されてさらなるプログラミングからロックアウトされたとき、低い方の状態を検証集合から取り除くことができる。【特許請求の範囲】
【請求項１】
複数の多状態記憶素子を有する不揮発性メモリを操作する方法において、
前記記憶素子のうちの選択された記憶素子に第１のプログラミングパルスを印加するステップと、
前記多状態レベルの第１の部分集合について前記選択された記憶素子に対する前記第１のプログラミングパルスの結果を検証するステップと、
前記検証の結果に基づいて前記多状態レベルの第２の部分集合を形成するステップであって、前記第１の部分集合に含まれていない前記多状態レベルのうちの１つを前記第２の部分集合に含めるか否かを判定するステップを含む形成するステップと、
前記検証後に、前記選択された記憶素子のうちの１つ以上に第２のプログラミングパルスを印加するステップと、
前記多状態レベルのうちの前記第２の部分集合について前記選択された記憶素子のうちの前記１つ以上に対する前記第２のプログラミングパルスの結果を検証するステップと、
を含むことを特徴とする方法。
【請求項２】
さらなるプログラミングパルスを印加する動作は、前記第１のプログラミングパルスの結果を検証する前記ステップにおいて前記選択された記憶素子のうちのそれぞれの目標値で検証された記憶素子に対しては停止されることを特徴とする請求項１記載の方法。
【請求項３】
前記検証に基づいて前記多状態レベルの第２の部分集合を形成する前記ステップは、前記第２の部分集合において前記第１の部分集合に含まれる前記多状態レベルのうちの１つを排除するか否かを判定するステップをさらに含むことを特徴とする請求項１記載の方法。
【請求項４】
複数の多状態データ記憶素子に対してプログラミング動作を実行する方法において、
前記記憶素子を第１のデータ状態からシーケンシャルに複数の第２のデータ状態を通して増分するように動かすプログラミング動作を実行するステップと、
それぞれ第２のデータ状態に各々対応する目標値の集合からの１つ以上の目標値の部分集合について直ぐ前のプログラミング動作の結果を検証するステップと、
その後、直ぐ前の検証の結果に基づいてその次の検証動作のために前記目標値のうちの１つ以上の目標値の前記部分集合を再確立するステップであって、直ぐ前の検証の部分集合にない目標値を含めるか否かを判定するステップを含む再確立するステップと、
その後、プログラミング動作を実行するステップと、前記再確立された目標値の部分集合を用いる検証するステップとを反復するステップと、
を含むことを特徴とする方法。
【請求項５】
直ぐ前のプログラミング動作の結果を検証する前記ステップにおいて前記複数の記憶素子のうちのそれぞれの目標値で検証された記憶素子のさらなるプログラミングを終わらせるステップをさらに含むことを特徴とする請求項４記載の方法。
【請求項６】
結果を検証する前記ステップは、直ぐ前のプログラミング動作の結果を目標値の前記部分集合とシーケンシャルに比較するステップを含むことを特徴とする請求項４記載の方法。
【請求項７】
後に再確立される目標値の前記部分集合は、目標値の直ぐ前の部分集合と同じであることを特徴とする請求項４記載の方法。
【請求項８】
目標値の前記部分集合を後に再確立するステップは、直ぐ前の検証の部分集合中の目標値を削除するか否かを判定するステップをさらに含むことを特徴とする請求項４記載の方法。
【請求項９】
プログラミング動作を実行する前記ステップは、前記記憶素子をプログラミング電圧でパルスするステップを含むことを特徴とする請求項４記載の方法。
【請求項１０】
前記記憶素子はＥＥＰＲＯＭメモリセルであり、前記検証するステップは前記メモリセルのしきい値を示すパラメータを目標値の前記部分集合と比較するステップを含み、前記目標値は前記パラメータの値であることを特徴とする請求項９記載の方法。
【請求項１１】
プログラミング動作を実行するステップと、前記再確立された部分集合を用いる検証するステップとを反復するステップの後に、１回以上反復するステップと、
その後、直ぐ前の検証の結果に基づいてその後の検証動作のために１つ以上の目標値の前記部分集合を再確立するステップであって、前記直ぐ前の検証の部分集合の中にない目標値を含めるか否かを判定するステップを含む再確立するステップと、
その後、プログラミング動作を実行するステップを反復するステップと、
をさらに含むことを特徴とする請求項４記載の方法。
【請求項１２】
前記複数の多状態データ記憶素子から、前記記憶素子のうちの適切にプログラムしそこなった記憶素子を除去するステップをさらに含むことを特徴とする請求項１１記載の方法。
【請求項１３】
直ぐ前の検証の目標値の部分集合の中にない目標値Ｎを含めるか否かを判定する前記ステップは、前記直ぐ前の検証において目標値の前記部分集合のうちの１つで検証された前記記憶素子のうちの１つ以上に基づくことを特徴とする請求項１１記載の方法。
【請求項１４】
前記第２のデータ状態のシーケンス中の目標値Ｎは、前記記憶素子のうちの１つ以上が前記第２のデータ状態のシーケンス中の目標値（Ｎ−１）で検証されたことに応答して目標値の前記部分集合に含められることを特徴とする請求項１３記載の方法。
【請求項１５】
前記記憶素子のうちの１つ以上が直ぐ前の検証で目標値（Ｎ−１）で検証されてから第１の数のプログラミング動作の後に目標値Ｎが前記検証部分集合に含められることを特徴とする請求項１４記載の方法。
【請求項１６】
前記第１の数は、セット可能なパラメータであることを特徴とする請求項１５記載の方法。
【請求項１７】
メモリにおいて、
複数の多状態記憶素子と、
記憶素子の状態を変更することを可能にするプログラム動作を実行するために記憶ユニットに接続可能なプログラミング回路と、
前記記憶素子の状態を示すパラメータの値を判定するために前記記憶素子に接続可能な感知回路と、
多状態レベルの部分集合に対応する前記パラメータについて目標値を用いてプログラム検証動作を実行するために前記感知回路に接続された比較回路と、
前記比較回路に接続された論理回路であって、前記プログラム検証動作に使用される多状態レベルの部分集合に１つ以上の多状態レベルを付け加えることは、直ぐ前のプログラム検証動作の結果に基づいて決定される論理回路と、
を含むことを特徴とするメモリ。
【請求項１８】
プログラム検証動作において前記比較回路は、前記記憶素子の状態を目標値とシーケンシャルに比較することを特徴とする請求項１７記載のメモリ。
【請求項１９】
前記プログラム検証動作において使用される前記多状態レベルの集合からの１つ以上の多状態レベルの削除は、直ぐ前のプログラム検証動作の結果に基づいて決定されることを特徴とする請求項１７記載のメモリ。
【請求項２０】
前記論理回路は、前記プログラム検証動作においてそれぞれの目標値と正しく合うと検証された記憶素子をさらなるプログラミングからロックアウトすることを特徴とする請求項１７記載のメモリ。
【請求項２１】
前記記憶素子は、フローティングゲートメモリセルであることを特徴とする請求項１７記載のメモリ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体不揮発性データ記憶システムのアーキテクチャおよびその動作方法の分野に関し、特に、プログラム検証方法に関する。
【背景技術】
【０００２】
幾つかのアーキテクチャが不揮発性メモリのために使われている。１つの設計のＮＯＲアレイのメモリセルは、隣接するビット（列）ラインと、ワード（行）ラインに接続されたコントロールゲートとの間に接続されている。個々のセルは、それ自体と直列に形成された選択トランジスタを持っていたり持っていなかったりする１つのフローティングゲートトランジスタ、または単一の選択トランジスタにより分離された２つのフローティングゲートトランジスタを含む。このようなアレイと、記憶システムにおけるその使用方法との例がサンディスク  コーポレーションの次の米国特許および係属中の特許出願において示され、その全体が本願明細書において参照により援用されている。これら特許および特許出願とは、特許第５，０９５，３４４号（特許文献１）、第５，１７２，３３８号（特許文献２）、第５，６０２，９８７号（特許文献３）、第５，６６３，９０１号（特許文献４）、第５，４３０，８５９号（特許文献５）、第５，６５７，３３２（特許文献６）号、第５，７１２，１８０号（特許文献７）、第５，８９０，１９２号（特許文献８）、第６，１０３，５７３号（特許文献９）、第６，１５１，２４８号（特許文献１０）、および第６，４２６，８９３号（特許文献１１）および２０００年９月２２日に出願された第０９／６６７，３４４号（特許文献１２）である。
【０００３】
１つの設計のＮＡＮＤアレイは、両端の選択トランジスタを通してビットラインと基準電位との間に直列のストリングをなして接続された、例えば８個、１６個或いは３２個もの数のメモリセルを有する。ワードラインは、このような多数の異なる直列ストリングを横断してセルの対応するコントロールゲートに接続されている。このようなアレイとその動作との適切な例が、２００１年６月２７日に出願された米国特許出願第０９／８９３，２７７号（特許文献１３）に示され、これもその特許出願に含まれている参考文献とともに、本願明細書において参照により援用されている。
【０００４】
記憶素子あたりに複数の状態のデータを、フラッシュ電気的に消去可能でプログラム可能な読み出し専用メモリ（ＥＥＰＲＯＭ）などの不揮発性メモリに書き込むとき、書き込み、すなわちプログラミング動作は、通常目標とされた記憶素子の母集団を一連のデータ状態を通して各素子がその所望の状態に達するまで漸次移動させるように設計される。これは、記憶素子の状態を増分するように変化させ、検証プロセスにおいてこの状態を示すパラメータを感知し、かつその所望の最終状態或いは目標状態にあるとまだ確認されていないそれらセルの状態をさらに変化させることによって行われる。１つのＥＥＰＲＯＭでは、これは、通常その後の各プログラミングパルスのためにシーケンシャルに高まるステアリング電圧ステップ（例えば、階段波）の実行による実装例を用いてしきい値電圧（Ｖth）レベル（消去済みまたは０の状態から出発する）を高めることからなる。各記憶素子がその書き込まれるべきＶthデータ状態の目標を通過すると、その素子は、対応する状態の検証動作の間にロックアウトされ、その書き込みセッションの持続期間中、関連する記憶素子への全ての次の書き込みを終わらせる。
【０００５】
検証動作は、記憶ユニットの状態がそのデータに関連する目標値と比較される感知動作または読み出し動作である。二進法記憶ユニットに関しては接地状態の他には１つのデータ状態しかないが、多状態の場合は付加的な状態を有する。例えば、各記憶素子或いはセルが合計で３ビット、すなわち８つの状態を記憶する場合を考察する。１つのありふれたセルアレイのアーキテクチャでは、同時にそれぞれ書き込まれるか、或いは読み出される書き込みグループまたは感知グループは１つの共通コントロールゲートまたはステアリングゲートに結合される。このような実装例では、可能な状態（例えば、３ビットの例について、状態｛０，１，２，３，４，５，６，７｝）の範囲にわたってセルを読み出し或いは検証するために、全てのステアリング電圧感知状態を通して直列に（例えば、シーケンシャルに）走査する必要がある。この例では、読み出し動作についてこのようなシーケンシャルな感知動作が７つある。これらは、読み出され或いは検証されるセルの集合全体の中の各セルについて８つの可能な状態のうちの記憶されている状態を同時に判定するために７つのしきい値電圧識別レベルで実行される。プログラム／検証／ロックアウトのシーケンスに適用されるこの種の読み出し動作を使用すると、各プログラミングパルスは、（関連する状態条件付プログラミングロックアウトの他に）一連の検証ステップを伴い、この検証集合も、プログラム可能なデータ状態の対応する集合と関連するステアリング電圧目標Ｖthレベルの集合全体（例えば、８状態記憶素子について７つの集合）をシーケンシャルに通って進む。
【０００６】
図１は、フラッシュ形メモリにおける８状態の場合についての基本的な多状態プログラム／検証動作を示す。増分するように高まるステアリング或いはコントロールゲート・プログラミング電圧レベルを含むプログラミングパルスは、高まるステアリングゲート感知電圧レベルの７ステップ検証シーケンスとインタレースされる。
【０００７】
図２は、この一連の検証を波形１０３（Ｂというラベルも付されている）で拡大し、７つのシーケンシャルに高まる検証パルスに１，２，３，４，５，６および７というラベルを付してある。この例は、しきい値電圧を直接表すか或いはこの状態を示す他のパラメータ（例えば、電流レベル）を表す点ライン１０１（Ａというラベルも付されている）により表されているように、検証レベル３および４の間の（充電された）状態（すなわち、感知されるしきい値或いはＶthレベル）にある記憶素子についてのこのような検証の結果を示している。感知パラメータ（ステアリングゲート電圧など）についての波形の各検証レベルでの感知の結果は、波形１０５（Ｃというラベルも付されている）により表されているように、感知ストローブによって捉えられる。このストローブされた感知検証の結果が波形１０７（Ｄというラベルも付されている）で示されている。検証レベルが記憶されている電荷レベルより低ければ、始めの３つの検証ストローブについて示されているようにこれは“１”論理レベルパルスをもたらし、これより高ければ、後の４つの検証ストローブについて示されているように“０”論理レベルをもたらす。
【０００８】
実際上は、プログラミング進行中のどのポイントでも、セルの母集団がおよび得るＶth範囲（或いは、データ状態の範囲）は限られているので、プログラミング中に各ステップについてこの完全な検証集合を使用するのは過剰であって時間を浪費する（通常、各検証感知動作にプログラミングパルスと同じくらいの時間がかかる）。後述するように、この設計は限定されたスライディング範囲検証集合の実装例を提供することによって、この特徴を利用する。
【０００９】
漸進なプログラミングのアプローチを用いれば、セルの母集団が状態１から出発して状態２へ進むなどして状態７までの上昇状態を進むときに当該セルの母集団内で統計的に良好に振舞うしきい値電圧分布がある。限定された検証集合のコンセプトを説明するには、始めにデータ状態条件付ロックアウトを無視する、すなわちロックアウトはないと仮定するのが有益である。これが与えられたとして、この進行についての１つのＶth分布シナリオを以下のスナップショットで説明する。消去された状態から出発して、セルの母集団は、その母集団のかなりの部分がＶth範囲内の状態４および５の間に存在するポイントまで連続的にプログラムされている。このシナリオでは、状態３および４の間に存在する落伍者は割合に少なく、３より下のＶthでは存在しない。同様に、状態５および６の間（すなわち、状態５としての読み出し）のＶthでは先走るセルは割合に少なく、状態６以上ではゼロである。このようなシナリオでは、このポイントではセルは状態３，４または５にわたるＶth範囲内にしか存在しないので、状態１，２，６または７を探す検証動作を実行するのは無意味である。従って、今使われるアプローチは、プログラミングシーケンス中の所定のポイントに存する期待されるＶth範囲を包むのに必要なウィンドウ範囲だけにわたるようにＶth検証レベルの範囲を減少させる。（例えば、前記例では、プログラミングシーケンス中のこのポイントでは、７つの検証集合全体の代わりに、状態３，４および５にわたる３つの検証だけが実行される。）プログラミングがより高いしきい値電圧範囲へ進むとき、Ｖth検証ウィンドウ範囲は適宜に上方へスライドさせられる。このようにして、プログラミング動作は顕著にスピードアップされる。例えば、各プログラミングパルスのための時間が各検証ステップのためのそれと同等である場合には、このアプローチは総書き込み時間を最大８ステップ（すなわち、１プログラミングパルスに加えて７つの検証）から４ステップ（１プログラミングパルスに加えて３つの検証）まで半分に短縮し、本当の書き込み速度を２倍にする。
【００１０】
このプロセスの例が図３に示されている。これは、代表的なプログラミングプロセスのどの段階でどの状態がチェックされるかを示す略図である。これは、コントローラまたは他のメカニズムで維持されている参照用テーブルを通して実行され得る。図３のテーブルでは、所定のプログラミングパルスの後に検証される多状態は、グリッド上の対応するポイントに存するチェックマークにより示されている。例えば、始めの２つのプログラミングパルスの後、この早い段階で２の状態に進んでいる記憶素子はなさそうなので、接地の上の最低の状態（例えば、１の状態）だけがチェックされる。第３のパルスの後、このポイントでは２の状態に達しているセルがおそらくあるであろうから、２の状態の検証が付け加えられる。第５のパルスの後には同様に３の状態が検証リストに加えられ、以降同様である。１の状態になるどのセルも第７のパルスまでにプログラムされ終わっているであろうから、１の状態の検証はこのポイントでは落とされる。同様に、２の状態は第１１のパルスでは落とされ、以降同様である。
【００１１】
これはプログラミングパルス間の読み出しの数を、接地ではない状態の全てをチェックする場合（例えば、３ビットの例では７回の読み出し）と比べて顕著に減少させるが、信頼できる書き込み動作を保証するために走査ウィンドウに充分なガードバンドを保ちながら書き込み速度を高めるためにこのような推測航法減少走査スライディング・ウィンドウ・アプローチを用いることには問題が幾つかある。これらの問題は、主として、充分なガードバンドの決定に関する。すなわち、各々の新しい状態をどのくらい早く導入するべきか、そして各状態を省いても無難なのはいつかを図３に例示されている検証動作は、温度或いは電圧源などの動作条件、デバイスの年齢或いは処理およびその他の変化に関連する製造差などに関わらずにメモリの動作を安全に包含しなければならない。検証動作中により少数の状態をチェックすることにより性能は向上するが、ロバストな動作を保証するために充分なチェックが行われなければならない。さらに、記憶素子あたりの状態の数が増えれば、前記減少走査を用いることによって性能向上の利益は確かに増大するが、特に動作電圧を下げようとする趨勢を考慮すれば、エラーの余地も増大する。
【００１２】
各セルの目標データ（Ｖth）状態が達成されたら当該セルに対するそれ以上のプログラミングを終わらせることに関して不可欠のセル毎のデータ状態条件付ロックアウトに戻ると、これは今は減少ウィンドウＶth走査内で行われなければならない。残りのＶthはチェックされないので、その特定のプログラミングステップ中は、それらに関連する状態のロックアウトは不可能である。（例えば、前記例では、データ状態３，４および５を有するセルだけがロックアウトされる可能性を有し、データ状態１，２，６および７を有するセルは、その特定のプログラミング／検証ステップ中はロックアウトされ得ない。）従って、この検証高速化アルゴリズムについての重要な要件は、プログラミングシーケンス中の任意の時点において、期待されるＶth分布（既にロックアウトされているセルを除く）の範囲を含むように充分に広くかつ適切に位置する検証ウィンドウ範囲が確立されることである。
【００１３】
検証スパン・ウィンドウが不十分である場合、Ｖth分布の両端に存するセル（すなわち、あまりに遅くまたはあまりに速くプログラムするセルの両方）がそれ自身の適切なＶthレベルを実際に達成してプログラミング・ロックアウトを必要とするときには、これらのＶth分布の両端に存するセルは見落とされる可能性がある。これは、これらのセルがより高い静止Ｖthレベルに進むときに、不可避的に対応するデータ状態エラー（すなわち書き込み失敗）に至る（遅い場合は決してロックアウトしないか、或いはあまりに遅い場合はロックアウトし、速い場合も同じである）。従って、減少Ｖth走査ウィンドウのアルゴリズム（すなわち、そのウィンドウのサイズとプログラミングステップとが位置に依存する）は、書き込み信頼度を悪化させずにより高い書き込み速度を達成するように慎重に調整されなければならない。
【００１４】
プログラミングパルスあたりの検証動作の数を減らす代わりの現存するアプローチが、前に援用されている２００１年６月２７日に出願された米国特許出願第０９／８９３，２７７号（特許文献１３）に関連して前述したように、セルあたり２ビットのＮＡＮＤアーキテクチャ（その４つの状態は、参照を目的として、ここで上昇するＶthレベルの順に０，１，２，３と称される）について開発されている。このＮＡＮＤ実装例の論理の１つの随意の動作モードは、各記憶ユニットを、１セクタアドレス内に複数のビットを記憶する単一の記憶ユニットではなくて、複数のセクタアドレスを有するものとして取り扱い、各アドレスは記憶ユニットの２ビットのうちの１つを記憶する。高い方の２つのＶth状態（２，３）が低い方の２つのＶth状態（０，１）から上にプログラムされるべき場合には、動作は次のようになる。両方の状態２，３を目標にされたセルは、始めにこれら２つの高い方の状態のうちの低い方のＶth（すなわち、状態２）にプログラムされ、ロックアウトされる。これは、各プログラミングパルスの次の唯一の検証−２動作を用いて達成され、その検証−２レベルを通るときの２および３の両方のさらなるプログラミングをロックアウトする。全ての２および３がこのようにロックアウトされると、３はその後に自動的にロックされず、プログラミングシーケンスはこれらの３に対して再開されるが、今は単一の検証動作が検証−３レベルにセットされる。１つの変形例は、２状態および３状態の同時プログラミングの間、２だけの検証を開始する。３の状態の検証は、所定数のプログラミングパルスの後に付け加えられ、２の検証は結局は落とされて、そのときから完了まで３の検証だけが残る。このプロセスの種々の態様が米国特許第５，９２０，５０７号（特許文献１４）でより詳しく説明され、参照により本願明細書において援用されている。
【００１５】
このアプローチは、目標にされたＶthレベルにおいて単一の検証を用い、目標Ｖthレベル（すなわち、状態）に等しいかまたはこれより高いＶthを目標とする全てのセルをロックすることによって、より高いレベルの多状態記憶（例えば、記憶素子あたりに８つの状態を記憶する）に拡張され得る。全てのセルがこのようにロックアウトされると、次に高いＶｔ状態またはそれ以上を目標とするセルについて当該動作が反復され、このループは、最高のデータ状態を目標とするそれらセルがそれに対応する検証目標を通過するまで反復される。
【００１６】
このアプローチを用いれば、各プログラミングパルス動作に関して単一の検証パルスが必要とされ、これは、その検証時間がプログラミングのそれより優位を占めるシステムにおいて明確に有利であり、これにより最適の書き込み性能の解決策を提供する。しかし、現存する大容量記憶フラッシュメモリにおいて典型的であるように、その単一パルスのプログラミング時間が単一検証のそれと同等であるシステムでは、前記アプローチは実際に書き込み性能を次の２つの理由から低下させる。すなわち、（１）検証される状態より上の状態を目標とするセルのプログラミング進行があまりに早くかつ不必要に止められ、この早い終了により失われた進行を埋め合わせるように後のＶthプログラミング段階で追加のプログラミング時間を指令する。（２）次に高い状態での再開時における初期プログラミング条件（例えば、ステアリング、或いはコントロールゲート電圧階段波始動レベル）は、前のプログラミングシーケンスの終了時に終わった値からもっと低い値へ落とされなければならない。この下落は、セルがその目標範囲を通り越さないことを保証するために不可欠である。というのは、当該母集団の各セルが前にロックアウトされたときの特定の適切なレベルは（そして、この対応するレベルから各セルはプログラミングを再開するべきである）単一プログラム開始条件において母集団としての当該セルに最早適用され得ないからである。せいぜい、開始条件は最も速いプログラミングセルと関連するそれまで低減されねばならないに過ぎず（すなわち、当該グループ内の第１のセルがロックアウトするようにセットされたプログラミング電圧）、これにより残りのセルのために必要なプログラミングパルスの数を増やす。安全域のために、開始電圧は、その最適レベルより幾分下まで低減され、プログラミングパルスの数をなおさらに増やし、書き込み性能を低下させるべきである。このアプローチは、性能を信頼できる書き込みと釣り合わせる固定された（すなわち、理にかなっていない／適応的でない）値（この場合には、プログラミングを再開するため）を提供するという問題を再びもたらす。書き込み速度を高めることを優先させてあまりに積極的に押せば、これはプログラミング状態の行き過ぎの危険を冒すことになる一方で、あまりに保守的ならば、書き込み速度が悪くなる。
【００１７】
現存するプログラム／検証アプローチの制約を考慮して、次の欄では、書き込みの信頼度を保証しながら高速書き込みをするというこの複合要件を適応的に／動的に満たすことのできる改良されたアプローチについて説明する。
【特許文献１】米国特許第５，０９５，３４４号
【特許文献２】米国特許第５，１７２，３３８号
【特許文献３】米国特許第５，６０２，９８７号
【特許文献４】米国特許第５，６６３，９０１号
【特許文献５】米国特許第５，４３０，８５９号
【特許文献６】米国特許第５，６５７，３３２号
【特許文献７】米国特許第５，７１２，１８０号
【特許文献８】米国特許第５，８９０，１９２号
【特許文献９】米国特許第６，１０３，５７３号
【特許文献１０】米国特許第６，１５１，２４８号
【特許文献１１】米国特許第６，４２６，８９３号
【特許文献１２】米国特許出願第０９／６６７，３４４号
【特許文献１３】米国特許出願第０９／８９３，２７７号
【特許文献１４】米国特許第５，９２０，５０７号
【特許文献１５】米国特許出願第０９／６７１，７９３号
【特許文献１６】米国特許出願第１０／０５２，８８８号
【特許文献１７】米国特許出願第１０／０５２，９２４号
【特許文献１８】米国特許第５，５３２，９６２号
【特許文献１９】米国特許第５，７６８，１９２号
【特許文献２０】米国特許第４，６３０，０８６号
【特許文献２１】米国特許第５，９９１，１９３号
【特許文献２２】米国特許第５，８９２，７０６号
【発明の開示】
【００１８】
本発明の１つの主要な態様によれば、手短にかつ一般的に述べると、多状態メモリは、シーケンシャルな状態に基づいた検証を実施するために多状態検証範囲を検証結果に基づいた動的に調整する“スマート検証”を用いてプログラムされる。“スマート検証”手法は、シーケンシャルに検証される多状態メモリの実装例の中で信頼できる動作を維持しながら、多状態書き込み速度を高めることができる。これは、書き込みシーケンスの各プログラム／検証／ロックアウトのステップのためのシーケンシャルな検証動作の数を最少にする“インテリジェント”な手段を設けることによって行われる。１つの代表的な実施形態では、検証走査範囲に含まれる最高のデータ状態レベルでのデータ無条件検証を介して最高速プログラミングセルを検出し、かつその走査範囲に含まれる最低データ状態について全てのセルのロックアウト状態を検出するために（これにより最低速プログラミングセルを包含する）母集団の移動を監視することによって、余分の不要な検証動作に起因する時間の浪費を最少にしてしきい値電圧走査ウィンドウの当該走査の低端および高端を確実に確立することができる。
【００１９】
選択された記憶素子のプログラム／検証シーケンスの間に多状態メモリのための書き込みシーケンスの１つの代表的な実施形態では、プロセスの開始時に、その選択された記憶素子がプログラムされる多状態範囲の最低状態だけが検証段階中にチェックされる。例えば、当該記憶素子は、プログラミング電圧でパルスされた後にその進行を監視するために感知されるフラッシュＥＥＰＲＯＭメモリのメモリセルであってよい。選択された素子のうちの１つ以上が第１の記憶状態に達すると、多状態のシーケンスのうちの次の状態が検証プロセスに付け加えられる。この次の状態は、最速セルが当該シーケンス中のこの先行状態に達したら直ぐに付け加えられることができ、或いはメモリが一般に１つの状態から別の状態に移るために数回のプログラミングステップを持つように設計されるので、数サイクルの遅延の後に付け加えられることもできる。遅延量は、固定されていてもよく、或いは好ましくはパラメータに基づいて実施することによって、デバイスの特性に応じて遅延量をセットすることができる。
【００２０】
検証段階でチェックされる集合への状態の付け加えは、最高状態が付け加えられるまで多状態のうちの残りを順に通して前記により続行される。同様に、これらのレベルを目指すように選択された記憶素子の全てがこれらの目標値に合うと首尾よく検証されてさらなるプログラミングからロックアウトされたとき、低い方の状態を検証集合から取り除くことができる。さらに、適切にプログラムすることができない前に識別された欠陥のあるセルを（例えば、それを始めにロックアウトすることによって）マップアウトして、プログラム／インテリジェント検証動作に対するそれらの影響をなくすこともできる。
【００２１】
本発明の付加的な態様、特徴および利点は、添付の図面と関連して読まれるべきである代表的な実施形態についての以下の説明に含まれる。
【発明を実施するための最良の形態】
【００２２】
本発明の種々の態様は、大概の不揮発性メモリシステムに応用可能である。後述する説明および背景の技術の欄での説明は、主としてＥＥＰＲＯＭフラッシュメモリの実施形態に関して示されているが、メモリアレイに使用される記憶ユニットの具体的なタイプは本発明を限定するものではない。どのように記憶素子を読み出したり、書き込んだり、データを記憶させたりするかということについての詳細は、本発明の主要な態様を構成せず、セル毎の検証／プログラム終了動作を実行するために状態状況を通してシーケンシャルな検証を同様に使用する種々の不揮発性または揮発性のシステムのいずれであってもよい。
【００２３】
１つの主要な態様によれば、本発明は、シーケンシャルな検証の実装例において信頼できる、最短の時間を浪費する多状態書き込み動作を確立するために多状態検証範囲の検証結果に基づいた動的調整を使用する。これは、多状態記憶のシーケンシャルな感知／検証のために適切な書き込み信頼度を維持しながら、より高速の検証アルゴリズムを提供する。例えば、多状態記憶素子を状態０から順に状態１，２などを通してプログラミングするとき、早い段階では１の状態だけが検証される。速い方のプログラミングセルが１の状態で検証され始めると、おそらくはパラメータに基づくことができる数個のプログラム／検証サイクルの遅れを伴って、状態２が検証状態範囲に付け加えられる。プログラミングがより高い状態レベルへ進んでいくとき、他の状態を同様に検証集合に付け加えることができる。これらの低い方のレベルにセットされることを目標とされた記憶素子の集合全体がそのように検証されたとき、下の方にある検証レベルを取り除くことができる。従って、この検証結果に基づいた動的調整は、充分な検証範囲を含むことを保証しながら、最少数の検証を許容すことによって、背景の技術の欄に記載された推測航法減少走査ガードバンド付きスライディング・ウィンドウ・アプローチより改善される。一般に、状態の数が多いほど、本発明により実現される改善は大きい。
【００２４】
本発明の種々の態様を、背景の技術の欄で参照により援用されているものなどの種々の不揮発性メモリにおいて実現することができる。感知プロセスのさらなる詳細が、２０００年９月２７日に出願された米国特許出願第０９／６７１，７９３号（特許文献１５）、２００２年１月１８日に出願された第１０／０５２，８８８号（特許文献１６）および２００２年１月１８日に出願された第１０／０５２，９２４号（特許文献１７）で提示され、その全体が参照により援用されている。しきい値電圧がフローティングゲート形メモリセルの関連性のある物理量であるので代表的な実施形態は電圧値の検証に関連して記載されるが、検証は、電流または周波数などの記憶素子の状態を表す他のパラメータの使用に基づいてもよい。これらの変形例がこれらの参考文献に幾つか記載されている。さらに、米国特許第５，５３２，９６２号（特許文献１８）の使用に関してさらに記載されているように、本発明の種々の態様を読み出しマージンおよび検証マージンの使用と組み合わせることができ、この特許もその全体が参照により援用されている。
【００２５】
検証結果に基づいたアプローチの基本的アイデアは、セルの母集団のプログラミングの進行に関連する情報を提供して使用し、これによりＶth（または、他のパラメータ）走査ウィンドウの適切で信頼できるスパンを動的に確立することである。消去されたまたは接地の状態（状態０）から出発して、有益な第１の情報は、プログラムされるセルの集合のうちの最速プログラミング記憶素子或いはセルがその集合のうちの次に低いデータ状態（例えば状態１）のＶth目標をいつ横断するかを知ることである（すなわち、ピークＶth検出器のコンセプトに従う）。従って、このような横断が検出されるまでは、この最低レベルについて単一の検証パスだけが各プログラミングパルスに伴う必要がある。このポイントまで、Ｖth検出のデータ条件付態様は好ましくは無効にされ、これはセルの母集団全体が、これらに対応する目標とされるデータ状態とは無関係に、ピークしきい値電圧検出に関与するということである。換言すれば、その最も速いセルの目標状態とは無関係にこの情報が知られなければならない。そのように検出されると、データ条件付検証およびロックアウトはこの値より上の（例えば、この最低レベルより１検証Ｖthステップ上の）データ状態の限定された範囲について実行される。
【００２６】
当該プロセスを続行するとき、他の１つの有益な情報は、この最低データ状態を目標としたセルの全てが実際に検証／ロックアウトを完了したという判定である。これが知られると、その最低状態についての検証動作はもはや不要であり、安全に削除することができる。これは、Ｖth走査ウィンドウの底を次に高いＶthデータ状態まで上げることを信号する。例えば、状態１，２，３が検証されたならば、これは状態２，３へ移る。この方策は、現存する最低状態を目標とするセルの各母集団がそれ自体に関連する検証／ロックアウトの完了を検証するとき、続行され得る。これは、検証範囲の低端を検証するための時間消耗を確実に除去する方法と、Ｖth走査ウィンドウを動的に位置決めするための標準とを提供する。
【００２７】
１つの可能なアプローチは、より高い状態検証をいつ増分するかを決定するときにもっぱらこの低い方の状態を除去する条件を使用することができる。しかし、このようなアプローチにおいて、過度に速いプログラミングセルが前に決定されたＶth走査の高端の範囲を競って超え、これによりロックアウトを提供する機会を逃す危険が依然として存在する。この危険を減少させるために、１つの選択肢は、Ｖth走査の高い範囲にガードバンドを付け加え、これによりこのような発生の可能性を減少させることである。しかし、このようなアプローチの代価は、高いＶth端で不要な検証が頻繁に行われるために書き込み性能が低下することである。
【００２８】
この問題を完全に回避する方法は、所定の任意の時点での最高セルＶthに関する情報を提供することである。これは、前に導入されたコンセプト、すなわちセルの母集団全体のうちの最速プログラミングセルが所定のＶth検証レベルを横断するときを、その目標データとは無関係に、判定する手段である（ピークＶth検出器）。チェックされる最高Ｖth範囲（当該母集団Ｖth分布内に存在すると期待されるものより高い１つの状態に及ぶべきである）に対してこの手段が任意のときに使用されれば、このような横断が信号されると検証Ｖthの高端は次のもっと高いレベルへ増分される。この手段は、次のパルス後にその新しいレベルで反復される。（前のように、この最速セルを目標とするデータが実際に前述した最高検証レベルと一致するならば、それらもロックアウトされることに留意しなければならない。）このようにして、Ｖth走査範囲の低端の場合と同じく、プログラミングシーケンス中の任意のとき（すなわち、ステップ）における最速プログラミングセルに関する情報に基づいて走査範囲の高端も適応的に調整される。より一般的には、より高い状態を検証走査ウィンドウに付け加えることは、低い方の状態が完全にロックアウトされているので当該低い方の状態の検証を除去することとは無関係のプロセスである。
【００２９】
一見したところ、このピークＶth検出器アプローチは高端に追加の１つの検証を強引に付け加えることによって書き込み速度を低下させるように見えるが、大部分の時間それに関連するＶthを見つけないことを目標としている。しかし、現存するスライディング・ウィンドウ・アプローチのための信頼できる書き込み動作を保証するためにブラインド・ガードバンドという選択肢はおそらくより広い静止ウィンドウ・エンベローピングを必要とするであろうから、長い期間には引き合うことになる。
【００３０】
動作をさらに改善するために、１つの選択肢は、前の状態での最速プログラミング状態検証後直ちに検証集合に次の状態を加えないことである。設計上（例えば、ステアリングゲートのプログラミング電圧階段波により決定される）、最速プログラミングセルでもこの次に高い状態レベルに達するのに数個のプログラミングパルスを普通は必要とするので、この次に高い検証レベルを急いで含める必要はない。例えば、設計上１つの記憶状態から他の記憶状態へ進むために４つのプログラミングパルスを必要とする場合、次の検証レベルを付け加える前に、ピーク検出ポイントを超えて１つまたは２つのプログラミングパルスを安全に待つことができる。実際の遅延量を固定することができ、或いは代表的な実施形態ではパラメータに基づいた実装例を使用することができる。そのとき、そのパラメータを、充分な安全域をなお可能にしながら性能を改善するために、動作条件、デバイスの年齢およびその他の要素に応じてセットすることができる。後述するシミュレーションの例について、この遅延は、容認できないリスクを招かずに書き込み速度に追加の１０％程度を得ることができる。
【００３１】
このアプローチのシーケンス全体が、現存する実装例の場合と同様に完了に至り、［１］全てのセルがロックアウトしたとき、或いは［２］（階段波）プログラミングシーケンスの終了時のうちの早いほうで終わるが、この場合にはこの状態を信号するためにフラグが掲げられる。特定の実施形態についてのこのアプローチのシミュレーションに基づく能力を次に詳しく述べるが、これは、前述した従来技術の（すなわち、“非インテリジェント”の）検証パルス減少方式の危険を招来することなく、本当の書き込み速度を２倍にする。
【００３２】
図４は、本発明の代表的な実施形態についてのフローチャートであり、ステップ２０１から始まり、ここでメモリのプログラムされるべき部分が選択される。これは、メモリ構造に適した書き込みユニットのうちの１つ以上であり、この書き込みユニットはここではページと称される。書き込みされるべき記憶素子が選択されると、それは通常データ無条件書き込み前調整段階２１０を受ける。
【００３３】
段階２１０は、選択された記憶素子にデータ書き込みのための準備をさせるためにソフトプログラミング、プレプログラミング、消去、ソフト消去および／または他の調整ステップ（記憶ユニットのタイプに適する）を随意に含むことのできる代表的な消去プロセスである。ここで示されている代表的な実施形態は、ステップ２１１，２１３，２１５および２１７を含むと解される。
【００３４】
ステップ２１１は、時々使用されるプレプログラミングプロセスであり、このプロセスでは、消去前に、アドレス指定された記憶素子の対応するワードラインの全てを高めて、例えば記憶素子損耗を均等化して消去のためにより均一な出発点を提供することによって、当該アドレス指定された記憶素子にデータに依存しないプログラミングが与えられる。ステップ２１３は、使用される記憶ユニットのタイプに適する前に援用されている引用された参考文献に記載されている消去プロセスなどの消去プロセスである。１つの特別の例は、米国特許第５，０９５，３４４号（特許文献１）に記載されているフラッシュＥＥＰＲＯＭメモリに適するスマート消去プロセスである。ステップ２１５は、消去された記憶ユニットを実際の書き込み段階のためのより均一な始動範囲に移行させるように設計された任意のソフトプログラミングまたは類似の動作である。記憶ユニットのうちのいずれかが消去中に（或いは、検証を特徴とする場合にはソフトプログラミング中に）検証されなかったならば、それらをステップ２１７で論理アドレス空間の外へマッピングして、適切に動作する記憶ユニットと交替させることができる。また、段階２１０の実際のステップとその実行とは、特定のメモリとその要件とにより変化する。
【００３５】
このポイントで、メモリは書き込み段階のために動作可能になる。書き込み段階２２０は、記憶素子のデータ状態を表すパラメータのレベルに一連の増分するような変化を生じさせ、その結果がその後にチェックされ、そして、記憶素子がその目標データ状態に合うと検証されると、それらは当該プロセスから取り除かれる。このプロセスは、大部分は従来技術に見出されているとおりであるが、ステップ２２１において従来技術とは異なっている。
【００３６】
ステップ２２１の初期検証範囲をセット後に、電荷蓄積記憶素子（例えば、ＥＥＰＲＯＭ或いはフラッシュ）の代表的な実施形態について、実際の書き込みはステップ２２３においてプログラミングパルスで開始される。当該技術分野において知られているように、ループ２２０の各繰り返しで、パルスの持続時間、電圧レベル或いは両方が変化し得る。第１の検証前に初期パルスが幾つかあってもよく、その場合、具体的な数はパラメータに基づいた実装例とすることができる。ステップ２２５は、最初は最低プログラミング状態だけを含む検証されるべき状態についてのレベルの目標範囲にわたって、検証レベルと関連して前のパルスでパルスされた各素子の状態を感知する。各検証レベルで、各素子の測定されたパラメータをその関連するデータ目標値と比較する。このようにして、これらの素子の各々は、ループ２２０のその繰り返しについて確立された検証状態の範囲にわたってそのように比較される。従来技術では、可能な全ての状態を含むことができ、或いは、背景の技術の欄に記載されたように、参照用テーブルまたは類似の実装例を使用するループ反復の数に基づく部分集合から成ることができる。本発明の原理態様によれば、使用される検証レベルの集合は、ステップ２２１において、前の反復の検証結果により決定される。状態の初期検証集合は、最低状態だけと解されてよく、或いは検証を持っていなくてもよく、またセット可能なパラメータに基づくことができる。（この説明では、検証集合は目標値の完全な集合の適切な部分集合と解されるが、特に多状態の数が小さいときには部分集合が完全な集合と一致する場合も生じる。）
【００３７】
ステップ２２７において、自らの目標状態に関する検証条件をパスした素子の全てがロックアウトされる。ステップ２２９は、プログラムされる全ての素子がそれ自身の目標データ値に合うと検証されたか否かを判定する。そうであれば、プロセスはステップ２３１で終了し、そうでなければプロセスはステップ２２１に戻る。より一般的には、ステップ２２９で判定されるように幾つかの素子がプログラムされ損なって書き込みエラーという結果をもたらすことがあり得るが、その場合には不良の素子またはブロックをマップアウトすることができる。
【００３８】
ステップ２２１は、ステップ２２５およびステップ２２７の結果に基づいて、次の検証動作にどの状態を含めるかという決定を、そのような決定のためにロックアウト条件が使用されるという程度まで行う。前述したように、これは本発明の１つの主要な態様である。図３に関連して背景の技術の欄で説明された参照用テーブル形の実施形態はこの段階で次の検証動作においてどの状態を含めるかを決定することもでき、この場合、その決定は書き込みプロセス２２０におけるループの現在の反復だけに基づいて行われるが、ここでそれはステップ２２５（および潜在的にはステップ２２７）の検証結果に基づいている。ステップ２２５における結果に依存して、ステップ２２１は、必要に応じて、検証されるべきより高い状態を付け加える。同様に、ステップ２２７と関連して、それは、低い方の状態にプログラムされた素子が全て検証されてロックアウトされると（或いは、不良セルと判定されてマップアウトされると）、それらの低い方の状態の検証を取り除く。ステップ２２１で検証集合が再確立されると、プロセスは再びステップ２２３へ続く。
【００３９】
図５〜９は、代表的なメモリの実施形態についての“スマート検証”プロセスのシミュレーションの結果を示し、ここで記憶ユニットは８つの状態を記憶するメモリセルである。この方法を実施し得る不揮発性メモリの具体的な例は、全て前に参照により援用されている米国特許第５，７１２，１８０号（特許文献７）、第６，１０３，５７３号（特許文献９）、第６，４２６，８９３号（特許文献１１）および米国特許出願第０９／６６７，３４４号（特許文献１２）に記載されている。代表的な実施形態に関するさらなる詳細は、当該シミュレーションについての説明に続く。
【００４０】
“スマート検証”アルゴリズムは、１５００個の８状態セルの母集団を接地或いは消去された（０）状態から目標とされたプログラムデータ状態（１，２，３，４，５，６，７）へ移すようにシミュレートされた。このシミュレーションを容易にするために、全ての電圧レベルが任意の単位で与えられ、状態１，２，３，４，５，６，７についての目標しきい値電圧“Ｖth”レベルは値２，３，４，５，６，７，８にそれぞれセットされた。母集団全体についての出発Ｖth分布は、−０．２５を中心とする０．２２の１−σ値を有する正規分布であるようにセットされ、その結果として−１から＋１／２までにわたる初期Ｖthがもたらされた。プログラミングステップあたりの平均プログラミング速度は０．２５にセットされ、セルが１状態から他の状態へ約４ステップで移るという結果がもたらされた（そして、これにより、各々のプログラムされた状態についてロックアウトされた分布全体がおよそその１ステップ値に制限されることを可能にした）。しかし、ある程度の小さなセル毎の変動を反映するために、速度の分布が取り入れられ、それは平均０．２５速度値を中心とする０．０１５に等しい１−σを有する正規分布に従い、その結果としてステップ値あたりに０．２から０．３ΔＶthまでの範囲にわたる速度がもたらされた。当該シミュレーション全体にわたって、任意の所定のセルに割り当てられた速度値は変化しなかった。所定のセルについて一定の速度値という仮定は、あらゆる記憶装置の技術にあてはまるとは限らないが、いずれにせよそれが本発明にとって実際的である必要はないことに留意しなければならない。
【００４１】
実際には、プログラミング波形の後の各ステップについて均等に高まる階段状電圧（例えば、代表的メモリ構造ではステアリングゲートに印加される）を用いるときに、全てのセルの平均プログラミング速度は大体同一である。通常は始めの６つのプログラミングパルス内で、定常プログラミング状態に達すると、この速度は前記階段波プログラム電圧ステッピングのそれとぴったり一致する。その結果として、速度の人工的分布の使用は、実際に生じる状態よりはおそらく悪い場合の状態である。このことにも拘らず、理解されるように、それはスマート検証方法に対して問題を提起しない。
【００４２】
１５００個のセルの母集団の各セルについての出発Ｖth、目標データ状態および速度の割り当ては、乱数に基づくシャフリングを介して行われ、Ｖth分布、データ状態および速度の割り当てについてシャフリングは独立に行われた。８つの状態の各々に割り当てられたセルの数はおおよそ同じであった（平均で状態あたりに〜１８８セル）。その後、プログラムされるべきセルの母集団全体（すなわち、状態１，２，３，４，５，６，７，０はロックアウトされている）は、“スマート検証”シーケンスおよび基準を用いて、プログラミング検証シーケンスを通して動かされる。このシミュレーションの結果が図３〜７に示されている。
【００４３】
図５ａのグラフは、各プログラミングステップ後にスマート検証アルゴリズムに従って当該セルの母集団に対して加えられる検証（ｖｆｙ）パルスまたはステップの数（３０３）を描いている。まだロックアウトされていないセルの母集団の最低（Ｖｔ＿ｍｉｎ，３０４）および最高（Ｖｔ＿ｍａｘ，３０５）Ｖthと、各プログラミングパルス後に加えられる低（Ｖｆｙ＿ｌｏ，３０１）および高（Ｖｆｙ＿ｈｉ，３０２）検証電圧レベルも示されている。当該プロセスは、しきい値が上がり始める前に当該セルを定常状態にする幾つかのパルスから始まる。始めの数個のプログラミングパルスは最低状態検証だけを必要とし、その間にＶth分布をその検証ポイントまでプログラムする。その後、検証の数が増えて２または３検証パルスレベルで平坦域に達し、そして最後の数個の状態がそれらの対応する目標にプログラムされるときに１検証状態に向かって下がってゆく（全ての状態がおおよそプログラミングパルス数３７で検証されてロックアウトされる）。このシーケンス全体において、シーケンシャルな検証走査の低い方の検証限界と高い方の検証限界が、スマート検証論理基準に従って理にかなった確実に適切な最適データ状態Ｖth範囲にわたるように（それぞれ全ての最低状態のセルの検証済み／ロックアウトされた状態およびピークＶth検出基準に基づいて）適応的に調節される。
【００４４】
このようなインテリジェントな検証走査方法の有用性は、行われるものの複雑さに注目すれば明らかである。例えば、多くの時間において２つの検証で充分ではあっても、ある程度の時間においては３つの検証が必要となることもあり、また時折４レベル検証が必要なときもありえるのであり、これがなければ書き込みエラーの危険がある。さらに、しっかりと制御される非適応的な推測航法の実装例がトラブルを生じさせることなくＶｆｙ＿ｌｏおよびＶｆｙ＿ｈｉ（すなわち、スライディング検証ウィンドウ）の最適な遷移に精密に従うことができるということはなさそうである。従って、信頼できる書き込み動作を保証するために、図３に関して記載された非適応的検証ウィンドウ範囲はおそらくプログラミングパルスあたりに４つおよびことによると５つの検証レベルまでガードバンド付けされなければならず、その性能利点を大幅に低下させる。さらに、プログラミングシーケンスの最初の部分と最後の部分とにおいてより少数の検証（１検証レベルまで下がる）を使用する適応的アプローチの能力に積極的に匹敵する能力は、非適応的な実装例では考えにくい。
【００４５】
図５ａの実施形態は、検証集合に次の状態を付け加える前に、現存する検証された最高状態での最速プログラミングセルの検証の後に２プログラミングステップの遅れを含む。例えば、プログラミングステップ５においてＶｔ＿ｍａｘライン３０５は動き始めて、ステップ６において状態１の“電圧”＝１のラインを越える。しかし、検証の数（＃Ｖｆｙパルス、３０３）がこのポイントで２へ上がることにより示されているように、さらなる２ステップの間は１の状態だけが検証され、２の状態はステップ９で検証集合に付け加えられる。プロセス全体は、始めの５つのプログラミングステップを含めて、ステップ３７の後に完了する。
【００４６】
図５ｂは図５ａと同様であるが、この実施形態では状態を検証集合に付け加える前の遅延がなく、また最初の５つのプログラミングステップがない点において異なっている。例えば、Ｖｔ＿ｍａｘライン３０５がステップ２で状態１の“電圧”＝１ラインを越えた後に、遅延なしで２の状態が次の検証集合に付け加えられる。この場合、プロセスの大部分において、ステップあたりに３つの検証があり、時折４つの検証が必要になる。このプロセスは図５ａのそれほどに速くなく、（図５ａの始めの４つのパルスを比較のために無視すれば）８３の検証ではなくて合計で１００の検証を必要とする。図５ｂの実施形態について図４〜７に関してさらに説明する。
【００４７】
図６は、図５ｂの実施形態で使用される検証パルス数の範囲についての発生の分布を示す。３検証状態が最も大きな部分、すなわち時間の半分を占めているが、２検証へ落ちる能力は時間の４分の１で発生し、４検証への増大も同様である。プログラミングパルスあたりに平均で約２．７４の検証が必要であり、この数値は、図５ａの実施形態については２．５より下まで低下する。１つのプログラミング動作（或いは、ステップ）を実行するのに必要な時間が１検証動作のためのそれと同等であると仮定すれば、図５ｂの例では、スマート検証アルゴリズムは、総プログラミング時間を完全な７ステップ検証が必要とする時間の４６％まで間違いなく減少させることが可能である。従って、本当のプログラミング速度は約２倍になる。
【００４８】
図７は、図５ｂの実施形態について、７つのプログラミング状態の各々についての当該状態のロックアウト後の結果として得られたシミュレートされたＶth分布（“Ｖｔ”）と、出発時の消去された或いは０の状態の分布とのスナップショットを示している。各々の分布は、アルゴリズムにより規定される、期待される０．２５の任意の単位のＶth範囲に適度に制限されている。
【００４９】
図８は、７つのプログラミング状態の各々を目標とするセルの全てがロックアウトされる直前のプログラミングステップでまだロックアウトされていないセルの母集団についての結果として得られたシミュレートされたＶth分布（および第１のプログラミングパルス後の出発時の分布）のスナップショットを示している。これは、プログラミングシーケンスを通してセルの母集団についてプログラミング進行がどれだけ良好に動いたかを示している。６０１は、初期分布を表す。６０３は、全ての目標状態１のセルがロックアウトされる直前のプログラミングパルス８の後のセルの分布に対応する。これは、その究極の目標が１の状態であるがまだロックアウトされていない状態と、より高い状態への途上で通り抜けようとしているものである両方のセルを含む。これは、１の状態についてのそれより充分に上のレベルを有するセルの数を説明する。同様に、６０５は、全ての状態２のセルがロックアウトする直前のプログラミングパルス１３に対応し、以降同様である。
【００５０】
図９は、対応する検証済み／ロックアウトされた状態になおプログラムされるべきセルの数を累積プログラミングパルスの数の関数として描いている。データ状態の書きとめられた範囲内に存在するセルの数を示す水平のラインも重ねられている。ライン７０１はデータ１，２，３，４，５，６または７を有するセルの数に対応し、ライン７０２はデータ２，３，４，５，６または７を有するセルの数に対応し、以降はライン７０７がデータ７を有するセルの数を示すまで、同様である。第１のパルス後、データ１を有するセルがロックアウトし始めるまでカーブは平らであり、その後、最高状態の落伍したセルが最後にロックアウトしてカーブが平らになるまでカーブはかなり直線的に低下してゆく。期待されるとおりに、平均で、最後の状態がちょうどプログラミングを完了したポイントから次の高い状態のプログラミングを完了するために後の４つのプログラミングステップが必要である。しかし、それ以外では直線的なカーブに存するキンクによって証明されるように、カーブとこれらの水平なラインとの交差点は、近いけれども、直線挙動と全く一致するわけではないということに留意しなければならない。これは、一般的な母集団の統計的に良好に振舞う進行とは対照的に、最も速いプログラミングセルおよび最も遅いプログラミングセルのプログラミング速度の変動の結果である。これも、適応的スマート検証アプローチの重要性を指摘している。
【００５１】
シミュレーションが証明するように、信頼できるプログラム／検証／ロックアウト動作を保証しながらも装置の性能を改善する上でスマート検証アプローチは有効である。それは、書き込みシーケンスの各プログラム／検証／ロックアウトステップについてのシーケンシャルな検証動作の数を最少にする“インテリジェントな”手段を設けることによって、このように有効なのである。母集団の動きを監視して、検証走査範囲に含まれる最高データ状態レベルでのデータ無条件検証を介して最速プログラミングセルと、その走査範囲に含まれる最低データ状態についての全てのセルのロックアウト状態との両方を検出することにより（これにより最も遅いプログラミングセルを包含する）、Ｖth走査ウィンドウのＶth走査の低端および高端を、余分の不要な検証動作からの時間の消耗を最少にして、確実に確立することができる。
【００５２】
図５ｂの実施形態では、本当の書き込み性能は全ての７ステップ検証アプローチと比べて２倍にされ、プログラミングシーケンスにおいて次の検証状態を検証集合に導入する前の遅れを含む図５ａの実施形態はさらに改善されている。これらの改善を、そのプログラミングが、並列に動作する記憶素子の集合の状態を次第にシフトさせ、その後に各素子の状態を示すパラメータを並列に感知することによりこれらのシフト（或いは、素子に欠陥がある場合には試みられたシフト）の結果を検証する反復プロセスに依拠するメモリシステムにおいて実現することができる。
【００５３】
スマート検証手法についての実装例の代表的な実施形態を図１０〜１３と関連して説明する。この例証となる実施形態は、３ビット／記憶素子手法（すなわち、７つの検証シーケンスを伴う８つの状態）に対するスマート検証動作の概略的な実装例について説明する。この実施形態では、記憶素子或いはメモリセルは、制御される多状態書き込みのために必要とされる制御された増分するように高まる記憶レベルが、各々の連続するプログラミングパルスでステアリングゲート電圧を増分するように高めることによって達成されるタイプのものである。さらに、多状態メモリセルの読み出しは、（多状態データプログラミングのために使用される７つの検証電圧レベルに対応する）高まってゆく７つのステアリングゲート電圧レベルを通してこのステアリングゲートをシーケンシャルに走査することによって達成される。
【００５４】
図１０は、個々のメモリ素子１００１のためのプログラム／検証／ロックアウト回路の一実施形態を概略的に示す（ロックアウトは、そのプログラミングセッションの残りの部分におけるその素子のプログラミングを終わらせる）。図１０の構造は、図１および２に関して背景の技術の欄で説明され、ここでスマート検証の場合が論じられるときに参照のために説明される実施形態などの実施形態に使用される従来技術に見出されるものに類似している。メモリ素子１００１はこの例ではフローティングゲートトランジスタであるが、後述するように他の形式の記憶素子を使用することもできる。ｎ個のこのようなメモリ素子が並列にプログラムされる場合には（ここで、ｎは通常数百から数千に及ぶことができる）、全て同時に動作する対応するｎ個のこのようなプログラム検証回路がある。これらのｎ個の回路から発せられる情報は、スマート検証動作のための基礎を形成する。
【００５５】
図１０の検証／ロックアウト概略図を詳しく見ると、当該回路は、二重線の境界により強調されているｎ個の回路の全てに共通の構成要素（例えば、カウンタ１００９、リセット１０２１および基準電圧Ｒｅｆ）と、各回路で複製される構成要素（例えば、比較器１０１１、書き込まれるべきデータ状態のレジスタ１０１９および種々の論理素子）との両方を含んでいる。プログラム検証中、各メモリ素子１００１は対応するセンス増幅器の比較器１０１１に接続され、これは当該セルの伝導レベルを基準ソースＲｅｆと比較する。この実施形態において、この比較器１０１１の動作とは、感知パラメータドライバ１００３の出力（例えば、図２のステアリングゲート電圧絶対値Ｂ、１０３を提供する）がその素子に記憶されているメモリ状態パラメータ（例えば、図２の１０１により例示されているセルＶthなど）より小さいときに“１”論理レベルを出力することである。（図１０では、ノードＡ，Ｂ，ＣおよびＤにおける波形は、それぞれ素子１００１，１００３，１００５および１００７の出力と、図２においてそれぞれ１０１，１０３，１０５および１０７とラベルが付されている波形との両方に対応する。）或いは、感知パラメータドライバ１００３の出力Ｂが当該素子に記憶されているメモリ状態パラメータより大きいときには、当該比較器は論理“０”レベルを出力する。
【００５６】
感知パラメータドライバ１００３の波形の段階的前進は、１から７までカウントするカウンタ１００９により制御されて、図２の波形１０３により例示されているように７つの連続する検証パルスをノードＢに発生させる。各セルは８つの可能なデータ状態｛０，１，２，３，４，５，６，７｝のうちの１つを記憶することができ、各セルについてそのうちの特定の１つが対応する書き込まれるべきデータ状態のレジスタ１０１９にロードされる。状態０は、図４の段階２１０に対応する全ての書き込まれるべきセルに対するデータ無条件プリセット動作（例えば、セクタ消去）によって確立される。対応する状態についての目標データが０に留まるべきであるならば、その記憶素子についてのロックアウトが直ちにセットされ（その詳細は示されていない）、その素子のプログラミングは行われない。データ状態１，２，３，４，５，６および７は７つのプログラム可能な状態を構成し、それぞれ１，２，３，４，５，６および７のカウンタ１００９の関連検証レベルに対応し、これらはプログラム検証中にこれらの状態を確証するために使用される。プログラミングが進行するとき、記憶素子パラメータ（例えば、記憶セルＶth）は、検証／ロックアウト動作により終了させられるまで、状態１，２，３，・・・を通ってシーケンシャルにかつ制御可能に変更される。
【００５７】
４入力ＮＡＮＤゲート１０１７に供給する全てのカウンタ１００９と書き込まれるべきデータ状態のレジスタ１０１９との間に挿入されている３つのＸＮＯＲゲート１０１５ａ〜ｃ（８つのデータ状態の３ビットの同等物に相当）の機能は、目標とされる書き込まれるべきデータ状態とカウンタ１００９の値により支配される（感知パラメータドライバ１００３を介して）検証される瞬時レベルとの一致が発生したときの状態を捉えることである。当該ＮＡＮＤの第４の脚は、図２の１０７により例示されているように、ＡＮＤゲート１００７からの比較器出力Ｄの時間同期化パルスを提供する正パルス検証ストローブ回路１００５によりゲーティングされた比較器１０１１出力から来る。［１］カウンタ（すなわち、検証レベル）と書き込まれるべきデータ状態とが一致するという条件と、［２］比較器出力が高いという条件（例えば、セルＶthが検証レベルより高い）とが重なると、この４入力ＮＡＮＤゲート１０１７の出力は（検証ストローブ１００５のパルスによってゲーティングされた）論理“０”にパルスダウンし、これ以外の場合には論理“１”に留まる。４入力ＮＡＮＤゲート１０１７の出力はロックアウトＳＲラッチ１０１３（ここでは、クロスカップリングされたＮＡＮＤゲートに基づくラッチとして実現されている）の一方の脚（セット脚と称される）に供給される。記憶ユニットのアドレス指定された集合に対するデータプログラミングセッションの開始時に、全てのロックアウトＳＲラッチ１０１３が論理“０”にセットされる。これは、リセットパルス１０２１（この実装例では論理レベル“０”にパルスダウンし、これ以外の場合には論理レベル“１”に留まる）を全てのこれらＳＲラッチの他方の脚（リセット脚と称される）に加えて、対応する全ての記憶素子のロックアウトを論理“０”に初期化することによって達成される。４入力ＮＡＮＤゲート１０１７から負になる論理“０”パルスを受け取ると、前記条件に従って、対応するＳＲラッチのロックアウトが論理“１”に転じる。この状態は、そのデータプログラミングセッションが続く間、関連する記憶素子への全てのさらなるプログラミングを止める。
【００５８】
例を挙げると、図２に示されているように、その目標とされるデータ状態が状態３であるメモリセルについてロックアウトにいたるプログラム／検証の進行を以下説明する。始めに、当該セルはデータ状態０（例えば、消去済み）にセットされ、その対応するロックアウトラッチ１０１３はリセット信号１０２１によって論理レベル“０”にセットされる。その後、初期プログラミングレベル（例えば、ステアリングまたはコントロールゲート電圧）パルスから出発して、それは一連の漸次高まるレベルのプログラミングパルスを受け取り、各パルスに、図１に示されているように、７レベル検証パルスシーケンスが続く。始めの数個のプログラミングパルスについて、この検証シーケンスのストローブされた結果は（図２の１０７で例示されているように）全て０である（すなわち、正になるパルスはない）。プログラミングパルスがさらに印加されると、セルの状態は検証１レベルを超えて推し進められ（すなわち、データ状態１へのプログラミング）、ストローブされた結果はレベル１検証ストローブの間の単一の論理“１”パルスである。しかし、この時間の間、検証状態（すなわち、カウンタ１００９の値は１に等しい）は目標とされるデータ状態（すなわち、書き込まれるべきデータ状態１０１９は３に等しい）と一致しないので、ロックアウト状態をトリガーしない。検証３パルスで一致が生じると、当該シーケンスにおけるそのポイントでのストローブされた結果は“０”にあり、これはロックアウト状態をセットすることを妨げる。
【００５９】
さらなるプログラミングパルスがセル状態を検証２レベルを超えさせ（すなわち、データ状態２へプログラミングする）、検証１および検証２ストローブポイントに同期する２つの連続する論理“１”パルスというストローブされた結果をもたらす。これも、必要とされる一致条件が満たされないので、ロックアウトをトリガーしない。ロックアウト状態が論理レベル“１”にセットされてそのメモリセルにプログラミングパルスがさらに印加されるのを止めるのは、プログラミングパルスがなおさらに印加されて、それらによりセル状態が検証３レベルをちょうど超えた（すなわち、データ状態３にプログラムした）後である。これは次のように起こる。ストローブされた検証出力シーケンスは、今は検証１、検証２および検証３ストローブポイントに同期した３つの連続する論理“１”パルスを含む。第３の検証ストローブの間に、検証状態（すなわち、カウンタ１００９の値）と目標データ状態との条件が満たされ、この論理“１”パルスが４入力ＮＡＮＤ１０１７を通ってＳＲロックアウトラッチ１０１３のセット脚に伝えられることを可能にする。
【００６０】
状態の行き過ぎをもたらす異常な／過剰なセルのプログラミングが生じた場合にも（例えば、前記例で状態３まで漸進的にプログラムする代わりに突然行き過ぎて状態４へ飛び移った場合）、前記ロックアウトが依然として行われることに留意しなければならない。というのは、検証レベルを超えるセルＶthの必要とされる比較器１０１１条件が依然として検証３ストローブの間に満たされることにより、ロックアウトをトリガーするからである。従って、さらなるプログラミングは行われなくて、書き込みエラーの程度が制限される。このような状態でロックアウトが起こらなければ、セルはプログラミングセッションの終わりまでプログラミングパルスを受け取り続けて、もしかすると、最高レベル状態７に許容されているそれを超えるＶthレベルへ追いやって、もしかするとより厳しい程度のエラーを生じさせるかもしれない。
【００６１】
ここではプログラミングセッション終了の実装例は示されていない。これは、［１］全てのアドレス記憶素子がロックアウトを達成したこと、または［２］所定の最大プログラムカウントに達したことのうちの早いほうを信号する実施形態によって実施される。検証／ロックアウトプロセスに関するさらなる詳細は、米国特許第５，１７２，３３８号（特許文献２）およびその他の前述した援用されている参考文献において見出され得る。
【００６２】
スマート検証の目標は、プログラミング進行中の任意のポイントで、使用される検証の数を完全な７セットシーケンスから、信頼できる書き込み動作のために必要な最小限まで、動的に減らすことである。図１１は、スマート検証コンセプトのピーク検証レベルの実施形態におけるこのような最小のセットを例示し、ここで検証パルス３，４および５だけが発せられる。これは、例えば、図５ｂに示されているシミュレーションのプログラミングステップ１５におけるこの状態である。これは、プログラミング進行中の任意の特定ポイントについて信頼できる最高および最低検証レベルを動的に確立することを必要とする。（例えば、図１１の場合にはそれぞれ５および３）。波形１１０１，１１０３，１１０５および１１０７は、図２の信号１０１，１０３，１０５および１０７に対応し、また記憶素子１００１のセルパラメータに対する信号（ノードＡ）、感知パラメータドライバ１００３の出力（ノードＢ）、検証ストローブ１００５の出力（ノードＣ）およびＡＮＤゲート１００７の出力（図１０のノードＤ）をそれぞれ表す。
【００６３】
図１２は、ｎ個のメモリ素子を並列にプログラムするときに最高またはピーク検証レベルを実現するための１つの好ましい実施形態を概略的に示す。これはｎ入力ＯＲゲート１２１１を含み、入力１２０７は、図１０においてＡＮＤゲート１００７の出力として表されているｎ個の検証／ロックアウト回路の各々の対応するＤノードから来る。前述したように、記憶素子状態（例えば、セルＶthパラメータ）が加えられた検証レベル（すなわち、感知パラメータ。図１０のノードＢにおける値であり、図１１では１１０３として表されている）を超えたときに各Ｄノードは瞬間的に論理レベル“１”にパルスする（図１０の検証ストローブ１００５によりストローブされる）。アドレス指定されたメモリ素子のうちの１つ以上がこのプログラミングレベル（例えば、セルＶth）要件を満たすときにｎ入力ＯＲゲート１２１１は同様に論理レベル“１”にパルスする。このパルス状態は、カウンタ１２４９により支配される瞬時検証レベルが、３つのＸＮＯＲ１２５１ａ〜ｃで実現される排他的ＯＲ回路機能によって確立される最高検証レベル“カウント”レジスタ１２３３の現存する値と一致したときに確立され、これにより当該パルスがＡＮＤゲート１２５３を通過することを可能にする。このパルスは新最高検証レベル“カウント”機能ブロック１２３５に供給されてピーク検証レベルをその次の利用可能な値にアサートする。
【００６４】
この実装例の背後にあるアイデアは、１つ以上の記憶素子が、当該記憶素子がそこまで走査されるところの現存するピーク検証レベル（最高検証レベル“カウント”レジスタ１２３３に記憶されている）を超えたなら直ちに、次のプログラミングパルスの直後の検証シーケンスがその次の利用可能な検証レベルまで走査するというアイデアである。このプロセスはロード新最高検証カウント回路ブロック１２３１に直接至る破線の流れによって表され、これは新最高検証レベル“カウント”を最高検証レベル“カウント”レジスタ１２３３に直ちにロードする。このポイント以降、制御されたパルスのプログラミング動作のもとで、記憶素子のうちの１つ以上がこの新しいピーク検証レベルをもう一度超えるのに充分な程度にプログラムする前に、その後の数個のプログラミングパルスが必要である。後者のイベントが起こるまで、ｎ入力ＯＲゲート１２１１は論理“０”を維持し、これによりこの現在の最高検証レベルを凍結する。前記後者のイベントがついに起こったとき（例えば、追加の４つから５つのプログラミングパルスの後に）、ｎ入力ＯＲゲート１２１１はもう一度論理“１”パルスを出力し、これにより最高検証レベルを次の高いレベルへ増分する。
【００６５】
いつでも、最高検証レベルが検証範囲の頂上（すなわち、回路ブロック１２３５における許容される最高）を超えようとするならば、このような上昇はそれ以上は許容されないということに留意しなければならない。その後は最高検証レベルは検証範囲の頂上（すなわち、この代表的な３ビットの実施形態では検証レベル７）に押さえつけられたままである。
【００６６】
瞬時に増分するアプローチの代わりの実装例が図１２において代わりのブランチで示され、このブランチは、新最高検証レベル“カウント”回路ブロック１２３５の直ぐ下から発していて、素子１２４１，１２４３，１２４５および１２４７から成っている。今は、この新最高検証レベル“カウント”回路ブロック１２３５がパルスされたときに（すなわち、１つ以上の記憶素子が現存するピーク検証レベルに達したときに）破線をたどる代わりに、プログラムカウントと称されるプログラミングパルスカウンタが機能ブロック１２４１を介して０にセットされ、連続する各プログラミングパルスで機能ブロック１２４３および１２４５を介して１だけ増分される。このカウントが所定の“遅延カウント”（例えば、３の遅延カウント）に達すると、このようにプログラミングパルスをさらにカウントする動作は機能ブロック１２４５および１２４７を介して停止され、新最高検証レベル“カウント”は機能ブロック１２３１を介して最高検証レベル“カウント”レジスタ１２３３にロードされる。この代わりの実装例の背後にあるアイデアは、数個のプログラミングパルスの間、次の高い検証レベルの使用を遅らせることである。というのは、記憶素子がこの次の高い検証レベルに達して通過するために前記数個のパルスより多くを必要とし、これにより付加的な時間を節約して書き込み動作をさらに高速化するからである。これらのブロック（１２３５，１２４１，１２４３，１２４５および１２４７）で表されるプロセスはソフトウェアまたはファームウェアを通して代わるがわる実施され得るが、外部オフチップ制御によるよりも記憶装置でハードウェア実現されるほうが好ましい。
【００６７】
“遅延カウント”値は、好ましくは、前述したように、固定された値を持つよりもセット可能なパラメータを通して実現される。１つの変形例では、“遅延カウント”値をコントローラによって監視して、例えばプログラミングエラーまたは読み出しエラーに応答するなどの装置の挙動に基づいて、或いは温度や電源変動などの動作条件に基づいて動的に変化させることができる。
【００６８】
完全なデータのプログラム動作の開始時に、ピーク検証レベルは第１の状態に関連するレベルにセットされる（すなわち、最高検証レベル“カウント”レジスタ１２３３は１にセットされる）。このことは、このプログラム動作の前に全てのアドレス指定された記憶素子のためにセットされる状態が状態０（例えば、消去動作を介して）であり、これらのセルのうちのいずれかがこの第１の状態と関連する検証レベルに達する前に幾つかのプログラミングパルスが必要であるので、許容されるからである。
【００６９】
図１３は、ｎ個の記憶素子を並列にプログラミングするときに最低検証レベルを実現するための１つの好ましい実施形態を概略的に示す。これは、ｎ個の同時にアドレス指定された記憶素子の各々のために１つずつ、合計ｎ個の並列に動作する回路ブロック（１３０１−１から１３０１−ｎまで）を描いている。各々の前記回路ブロックは、図１０に示されている対応するｎ個の検証／ロックアウト回路の現存する回路部分を含む。図１０の場合と同じく、ｎ個の回路の全てに共通の回路ブロックは二重ライン境界により強調されている（例えば、最低検証レベル“カウント”レジスタ１３０５）。前記各回路ブロック１３０１−ｉ（１≦ｉ≦ｎ）は一致回路を含み（書き込まれるべきデータ状態１０１９を最低検証レベルと一致させる）、これは、代表的な３ビットの実装例については３入力ＮＡＮＤゲート１３３３に供給する３つのＸＮＯＲ１３３１ａ〜ｃゲートから構築された排他的ＯＲ回路機能から成る。
【００７０】
この一致回路の目的は、その目標データが現在の最低検証レベルに関連するものと一致しない全ての記憶素子の状態を無視することである。それは、２入力ＯＲゲート１３３９の下側入力脚に論理レベル“１”を出力することによって、これを実行する。これは、その後、（ｎ＋１）入力ＡＮＤゲート１３１３に伝えられ、これにより決定プロセスに干渉しない。
【００７１】
一致の場合（すなわち、記憶素子目標データがこの最低検証レベルに関連するものと一致する場合）、２入力ＯＲゲート１３３９の出力結果は、その上側入力脚に与えられた論理レベルに依存し、これはロックアウト機能回路ブロック１３０３から供給される。一致が与えられると、論理“１”にセットされたロックアウト１３０３によりフラグされるように、関連する記憶素子の目標状態に実際に達しているならば、２入力ＯＲゲート１３３９の伝えられる結果は論理“１”になる。そうでなければ、このＯＲゲートの伝えられる結果は論理“０”に留まる。この回路が実行することは、その目標データが現在の最低検証レベルと一致しているがまだロックアウトしていない記憶素子を絶縁させ、これにより論理“０”を（ｎ＋１）入力ＡＮＤゲート１３１３に伝えることである。このような記憶素子が１つでも存在すれば、これは（ｎ＋１）入力ＡＮＤゲート１３１３の出力において論理“０”がストローブされるという結果をもたらす。（ｎ＋１）入力ＡＮＤゲート１３１３から論理“１”ストローブパルスが出力されるのは、このようなセルの全てがロックアウトしているときだけである。ストローブは、ＡＮＤゲート１３１３に供給する検証ストローブ機能ブロック１００５によって実施される。
【００７２】
この（ｎ＋１）入力ＡＮＤゲート１３１３の出力は一連の２つの機能回路ブロックに供給される。新最低検証レベル“カウント”と称される第１の回路ブロック１３１５は、論理“１”パルスを受け取ると、現存する最低検証レベルを１だけ増分する。次のブロック１３１７は、この新しい最低値を、後の一連のプログラム／検証で使用されるように最低検証レベル“カウント”レジスタ１３０５にロードする。いつでも、現在の最低検証レベルに関連するデータ状態を目標とする記憶素子がなければ、図１３の実施形態は、この最低検証レベルを、次のプログラム／検証動作のために次の高いデータ状態のそれまで同様に増分することに留意しなければならない。
【００７３】
いつでも、最低検証レベルが検証範囲の頂上（すなわち、許容される最高点）を超えようとしても、それ以上高めることは許容されない。そのとき、最低検証レベルは検証範囲の頂上（すなわち、この実施形態では検証レベル７）に留められる。
【００７４】
ここで、基礎をなすアイデアは、現在使用されている最低検証レベルに対応するデータ状態に書き込まれることを目標とされている全ての記憶素子が実際にこのデータ状態（それらの対応するロックアウト状態により示される）に到達する前に、この同じ最低検証レベルが後のプログラム／検証動作で引き続き使用されなければならないということである。全てのこのようなセルが実際にそのようにプログラムされたならば（全てのロックアウトが論理“１”状態に転じたことにより証明される）、それ以後はこの同じ低端検証ポイントで検証し続けるという目的は存在せず、次に続くプログラム／検証動作についての最低検証レベルは次に高いレベルから出発することができる。
【００７５】
完全なデータプログラム動作の開始時に、最低検証レベルは、この検証レベルまでプログラムされるべきセルに備えて、第１の状態に関連するそれにセットされる（すなわち、最低検証レベル“カウント”レジスタ１３０５は１にセットされる）。
【００７６】
前記ピーク検証および最低検証の実施形態を組み合わせて使用している間、各プログラミングパルスに続く検証パルスの数は、プログラミングシーケンスの任意のポイントで必要とされる最低値に動的に保たれる。通常、プログラミングセッションの開始時には、最高および最低検証レベルはともに状態１にある。数個のパルスの後、最高は高まって最速プログラミングセルより上に留まる。独立に、後のいずれかのポイントで、前の最低状態を目標とした全てのセルがそのようにプログラムされた（かつロックアウトされた）ときに、最低も高まる。この８状態の実施形態では、７ステップのシーケンシャルな検証範囲にわたって、最高および最低のこの繰り返される動的調節は、必要とされる検証の平均数がその値の半分未満となることを可能にする（例えば、平均でプログラミングステップあたりに〜＜３の検証）。セルが最高状態までプログラムしてゆくと、最高検証レベルは高端限界、すなわち７に留められ、後のあるポイントで最低検証レベルもこの限界に留められる。このような動作の振る舞いの例がこの説明に関する図５ａおよび５ｂに示されている。
【００７７】
走査ウィンドウの決定は、主として、検証されるべき状態がシーケンシャルにチェックされるときにそれが提供する時間節約に関して記載されているが、本発明は、前に援用されている米国特許出願第０９／６７１，７９３号（特許文献１５）に記載されているように、多数の状態を並列に検証する実施形態でも実施され得る。並列の場合には、これは速度向上に関しては同じ利益をもたらさないかもしれないが、電力消費量の減少などの他の利点を持ち得る。
【００７８】
これまでの説明では、記憶装置について、フローティングゲートＥＥＰＲＯＭまたはフラッシュセルなどの電荷記憶素子を用いる多状態の実施形態に主として言及してきたが、磁性媒体や光学式媒体を含む他の多状態の実施形態、および多状態ＤＲＡＭなどの揮発性記憶媒体にも応用することができる。どのように記憶素子を読み出したり、書き込んだり、データを記憶させたりするかということについての詳細は本発明の主要な態様を構成しないので、本発明の種々の態様を、サブ０．１ｕｍトランジスタ、単一電子トランジスタ、有機／炭素に基づいたナノトランジスタおよび分子トランジスタを含むがこれらに限定はされない他のメモリのタイプにも応用することができる。例えば、エイタンの米国特許第５，７６８，１９２号（特許文献１９）およびサトウらの米国特許第４，６３０，０８６号（特許文献２０）にそれぞれ記載されているものなどのＮＲＯＭおよびＭＮＯＳセル、或いはガラガーらの米国特許第５，９９１，１９３号（特許文献２１）およびシミズらの米国特許第５，８９２，７０６号（特許文献２２）にそれぞれ記載されているものなどの磁性ＲＡＭおよびＦＲＡＭセルを使用することもできる。これらの特許は、その全体が参照により本願明細書において援用されている。
【００７９】
本発明を種々の代表的な実施形態に関して説明してきたが、本発明が添付の特許請求の範囲の全範囲内でその権利が保護されるべきであることが理解されよう。
【図面の簡単な説明】
【００８０】
【図１】漸次高まるステアリングプログラミング電圧と交互する全ての７検証シーケンスを示すプログラム／検証波形シーケンスである。
【図２】全てのシーケンシャルな７ステップ検証シーケンスを示す。
【図３】所定のプログラミングパルスの後にどの状態が検証されるべきかを示す参照用テーブルの実例である。
【図４】本発明の代表的な実施形態についてのフローチャートである。
【図５ａ】本発明の２つの実施形態のシミュレーションにおける各プログラミングステップ後に印加される検証パルスの数を示す。
【図５ｂ】本発明の２つの実施形態のシミュレーションにおける各プログラミングステップ後に印加される検証パルスの数を示す。
【図６】図５ｂの実施形態で使用される検証パルス数の範囲についての発生数の分布を示す。
【図７】ロックアウト後のプログラミング状態について結果として得られるシミュレートされたしきい値分布を示す。
【図８】各プログラミング状態をロックアウトする直前のプログラミングステップでまだロックアウトされていないセルの母集団について結果として得られるシミュレートされたしきい値分布を示す。
【図９】それ自体に対応する検証済み／ロックアウトされた状態になおプログラムされるべきセルの数を累積プログラミングパルス数の関数として示す。
【図１０】プログラムに関連した検証／ロックアウトの実装例の概略図である。
【図１１】スマート検証動作を例示する減少されたシーケンシャルな７ステップ検証シーケンスを示す。
【図１２】スマート検証動作の高電圧端を確立するためのピーク検証レベル検出および適用の概略図である。
【図１３】スマート検証動作の低電圧端を確立するための最低検証レベル検出および適用の概略図である。
【図１】
2006509326.tif 000002
【図２】
2006509326.tif 000003
【図３】
2006509326.tif 000004
【図４】
2006509326.tif 000005
【図５ａ】
2006509326.tif 000006
【図５ｂ】
2006509326.tif 000007
【図６】
2006509326.tif 000008
【図７】
2006509326.tif 000009
【図８】
2006509326.tif 000010
【図９】
2006509326.tif 000011
【図１０】
2006509326.tif 000012
【図１１】
2006509326.tif 000013
【図１２】
2006509326.tif 000014
【図１３】
2006509326.tif 000015
【国際調査報告】
2006509326.tif 000016
2006509326.tif 000017