(57)【要約】  不揮発性メモリにおいて、プログラム検証の開始は適応的に設定され、これで、プログラミング時間が減少するようにする。１つの方式では、電圧閾値（ＶＴＨ）が第１のＶＴＨ区分またはこれより高い、すなわち中間ＶＴＨ区分内となるように、不揮発性記憶素子を下位ページのデータに基づいてプログラムする。次いで、第１のＶＴＨ区分の不揮発性記憶素子をそのままとするかまたは上位ページのデータに基づいて第２のＶＴＨ区分にプログラムする。中間ＶＴＨ区分の不揮発性記憶素子を、第３と第４のＶＴＨ区分にプログラムする。第３のＶＴＨ区分にプログラムされた不揮発性記憶素子を特に特定して追跡する。第４のＶＴＨ区分にプログラムされた不揮発性記憶素子の検証を、これらの特定された不揮発性記憶素子のうちの１つの素子が中間ＶＴＨ区分から第３のＶＴＨ区分に遷移した後で開始する。
2009514138.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性記憶素子の集合中で、それぞれの電圧閾値が第１の電圧閾値区分内に存在する不揮発性記憶素子の少なくとも第１と第２の部分集合を、前記第１の部分集合中の前記不揮発性記憶素子のうちの少なくとも１つの素子の電圧閾値が前記第１の電圧閾値区分とオーバーラップする第２の電圧閾値区分に遷移し、前記第２の部分集合中の前記不揮発性記憶素子のうちの少なくとも１つの素子の電圧閾値が前記第１と第２の電圧閾値区分の外部にある第３の電圧閾値区分に遷移するようにプログラミングするステップと、
前記第１の部分集合の前記不揮発性記憶素子のうちの前記少なくとも１つの素子の電圧閾値が前記第２の電圧閾値区分に遷移した時点を判定するために当該素子の電圧閾値を追跡するステップと、
前記追跡ステップの処理に応答して、前記第２の部分集合の前記不揮発性記憶素子のうちの前記少なくとも１つの素子の電圧閾値が前記第３の電圧閾値区分に遷移した時点を検証するための検証プロセスをいつ開始するかを決定するステップと、
を有することを特徴とする不揮発性記憶装置をプログラミングする方法。
【請求項２】
前記検証プロセスが、前記第１の部分集合の前記不揮発性記憶素子のうちの前記少なくとも１つの素子の前記電圧閾値が前記第２の電圧閾値区分に遷移したことが判定された後に、所定の数の電圧パルスが前記第２の部分集合の不揮発性記憶素子に印加された後で開始されることを特徴とする請求項１に記載の方法。
【請求項３】
前記追跡するステップは、前記第１の部分集合の前記不揮発性記憶素子のうちの前記少なくとも１つの素子の電圧閾値が、前記第２の電圧閾値区分よりも低位にある低電圧閾値を過ぎ、続いて、前記第２の電圧閾値区分内にある高電圧閾値を過ぎることを追跡することを含むことを特徴とする請求項１に記載の方法。
【請求項４】
前記第１の部分集合の前記不揮発性記憶素子のうちの前記少なくとも１つの素子を、当該素子の電圧閾値が前記低電圧閾値未満であるときには高速プログラムモードでプログラミングし、当該素子の電圧閾値が前記低電圧閾値と前記高電圧閾値の間にあるときには低速プログラムモードでプログラミングするステップをさらに含むこと特徴とする請求項３に記載の方法。
【請求項５】
前記高電圧閾値が、前記第２の電圧閾値区分の下限界値をマージンだけ超えていることを特徴とする請求項３に記載の方法。
【請求項６】
前記マージンが、検知マージンとノイズマージンのうちの少なくとも一方を含むことを特徴とする請求項５に記載の方法。
【請求項７】
前記追跡するステップは、前記第１の部分集合の前記不揮発性記憶素子のうちのどの素子が、前記第２の電圧閾値区分より低位の電圧閾値を有しているかを判定することによって、前記第１の部分集合の前記不揮発性記憶素子のうちの前記少なくとも１つの素子を特定するステップを含んでいることを特徴とする請求項１に記載の方法。
【請求項８】
不揮発性記憶素子の前記集合が、複数のＮＡＮＤストリングに配列されていることを特徴とする請求項１に記載の方法。
【請求項９】
前記第２と第３の閾値電圧区分が互いに異なるバイナリデータ状態を表すことを特徴とする請求項１に記載の方法。
【請求項１０】
前記検証プロセスが、前記第１の部分集合の前記不揮発性記憶素子のうちのいずれかの素子の電圧閾値が前記第２の電圧閾値区分に遷移したとの判定に応答して開始されることを特徴とする請求項１に記載の方法。
【請求項１１】
不揮発性記憶素子の集合と、
不揮発性記憶素子の集合と通信する１つ以上の管理回路を備えており、
前記１つ以上の管理回路は、データをプログラムする要求を受信し、その要求に応答して、（ａ）第１のデータにしたがって、それぞれの電圧閾値が少なくとも第１の電圧閾値区分とこれより高い中間電圧閾値区分に入るように、前記不揮発性記憶素子集合中のそれぞれの不揮発性記憶素子をプログラムし、（ｂ）前記それぞれの不揮発性記憶素子を第２のデータにしたがってプログラムし、これによって、前記第１の電圧閾値区分に入った前記不揮発性記憶素子の第１の部分集合が前記第１の電圧閾値区分内に留まり、前記第１の電圧閾値区分に入った前記不揮発性記憶素子の第２の部分集合がより高い第２の電圧閾値区分に入るようにプログラムされ、前記中間電圧閾値区分に入るが前記中間電圧閾値区分とオーバーラップする第３の電圧閾値区分の外部にある前記不揮発性記憶素子の第３の部分集合が前記第３の電圧閾値区分に入るようにプログラムされ、前記中間電圧閾値区分に入る前記不揮発性記憶素子の第４の部分集合がより高い第４の電圧閾値区分に入るようにプログラムされ、（ｃ）前記第３の部分集合の前記不揮発性記憶素子のうちの少なくとも１つの素子の電圧閾値を追跡して、当該電圧閾値が前記第３の電圧閾値区分に遷移した時点を判定し、（ｄ）前記追跡に応答して、前記第４の部分集合の前記不揮発性記憶素子のうちの少なくとも１つの素子の電圧閾値が前記第４の電圧閾値区分に遷移する時点を検証するための検証プロセスをいつ開始するかを決定する、
ことを特徴とする不揮発性記憶システム。
【請求項１２】
前記１つ以上の管理回路が、前記第２の部分集合の前記不揮発性記憶素子のうちの少なくとも１つの素子の電圧閾値が前記第２の電圧閾値区分に遷移した時点を判定し、その判定に応答して前記追跡動作が開始されることを特徴とする請求項１１に記載の不揮発性記憶システム。
【請求項１３】
前記１つ以上の管理回路が、前記第３の部分集合の前記不揮発性記憶素子のうちの前記少なくとも１つの素子の電圧閾値が、前記第３の電圧閾値区分よりも低位にある低電圧閾値を過ぎ、続いて、前記第３の電圧閾値区分内にある高電圧閾値を過ぎることを追跡することを特徴とする請求項１１に記載の不揮発性記憶システム。
【請求項１４】
前記１つ以上の管理回路は、前記第３の部分集合の前記不揮発性記憶素子のうちの前記少なくとも１つの素子を、当該素子の電圧閾値が前記低電圧閾値未満であるときには高速プログラムモードでプログラミングし、当該素子の電圧閾値が前記低電圧閾値と前記高電圧閾値の間あるときには低速プログラムモードでプログラミングすることを特徴とする請求項１３に記載の不揮発性記憶システム。
【請求項１５】
前記１つ以上の管理回路が、前記第３の部分集合の前記不揮発性記憶素子のうちの前記少なくとも１つの素子の電圧閾値を検知するために当該素子に対応付けられている少なくとも１つの検知増幅器を制御するとともに、前記第４の部分集合の前記不揮発性記憶素子のうちの少なくとも１つの素子に対応付けられた少なくとも１つの検知増幅器がその電圧閾値を検知することを禁止することを特徴とする請求項１１に記載の不揮発性記憶システム。
【請求項１６】
前記高電圧閾値が、前記第３の電圧閾値区分の下限界値をマージンだけ超えていることを特徴とする請求項１３に記載の不揮発性記憶システム。
【請求項１７】
前記マージンが検知マージンとノイズマージンのうちの少なくとも一方を含むことを特徴とする請求項１６に記載の不揮発性記憶システム。
【請求項１８】
前記第１と第２のデータがそれぞれ下位と上位の論理ページを含んでいることを特徴とする請求項１１に記載の不揮発性記憶システム。
【請求項１９】
不揮発性記憶素子の前記集合が、複数のＮＡＮＤストリングに配列されていることを特徴とする請求項１１に記載の不揮発性記憶システム。
【請求項２０】
前記１つ以上の管理回路は、前記第３の部分集合の前記不揮発性記憶素子のうちの前記少なくとも１つの素子の電圧閾値が前記第３の電圧閾値区分に遷移したことを前記追跡動作が判定したときに、前記検証プロセスを開始することを特徴とする請求項１１に記載の不揮発性記憶システム。
【請求項２１】
前記１つ以上の管理回路は、前記第３の部分集合の前記不揮発性記憶素子のうちの前記少なくとも１つの素子の電圧閾値が前記第３の電圧閾値区分に遷移したことが前記追跡動作で判定した後に、所定数のプログラミングパルスが前記第４の部分集合の前記不揮発性記憶素子のうちの前記少なくとも１つの素子に印加された後で、前記検証プロセスを開始することを特徴とする請求項１１に記載の不揮発性記憶システム。
【請求項２２】
前記１つ以上の管理回路は、前記第３の部分集合の前記不揮発性記憶素子を、それらのそれぞれの電圧閾値が前記第３の電圧閾値区分に遷移したときにさらにプログラミングしないようにロックアウトするとともに、前記第４の部分集合の前記不揮発性記憶素子のプログラミングを、それらのそれぞれの電圧閾値が前記第４の電圧閾値区分に遷移するまで継続させることを特徴とする請求項１１に記載の不揮発性記憶システム。
【請求項２３】
前記第２の電圧閾値区分が前記中間電圧閾値区分とオーバーラップしていることを特徴とする請求項１１に記載の不揮発性記憶システム。
【請求項２４】
前記第１、第２、第３および第４の電圧閾値区分が互いに異なるバイナリデータ状態を表すことを特徴とする請求項１１に記載の不揮発性記憶システム。
【請求項２５】
前記追跡動作は、前記第３の部分集合の前記不揮発性記憶素子のうちのどの素子が前記第３の電圧閾値区分より低位の電圧閾値を有しているかを判定することによって、前記第３の部分集合の前記不揮発性記憶素子のうちの前記少なくとも１つの素子を特定することを特徴とする請求項１１に記載の不揮発性記憶システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性メモリのプログラミングに関する。
【背景技術】
【０００２】
半導体メモリは、さまざまな電子装置内で、ますます多く使用されるようになっている。例えば、不揮発性半導体メモリは、携帯電話、デジタルカメラ、パーソナルデジタルアシスタント、モバイルコンピューティングデバイス、非モバイルコンピューティングデバイス、およびその他のデバイスの中で使用されている。電気的に消去可能でプログラム可能な読み出し専用メモリ（ＥＥＰＲＯＭ）およびフラッシュメモリは、特に普及している不揮発性半導体メモリである。フラッシュメモリもまたＥＥＰＲＯＭの一種であるが、全メモリアレイまたはメモリの一部の内容は、従来の備えたＥＥＰＲＯＭとは異なり、一度に消去できる。
【０００３】
従来のＥＥＰＲＯＭとフラッシュメモリは共に、半導体基板中のチャネル領域の上方に位置するとともにチャネル領域から絶縁されている浮遊ゲートを利用している。この浮遊ゲートは、ソース領域とドレイン領域の間に位置している。制御ゲートが、浮遊ゲートの上方に設けられているとともに浮遊ゲートから絶縁されている。このようにして形成されたトランジスタの閾値電圧は、浮遊ゲートに保持されている電荷の量によって制御される。すなわち、ソースとドレイン間を導通させてトランジスタをオンさせる前に制御ゲートに印加しなければならない電圧の最小量は、浮遊ゲート上の電荷のレベルによって制御される。
【０００４】
ＥＥＰＲＯＭデバイスおよびフラッシュメモリデバイスの中には、２つの範囲の電荷量を記憶させるために使う浮遊ゲートを有しているものがある。したがって、記憶素子は、２つの状態（例えば消去された状態とプログラムされた状態）のどちらかとしてプログラム／消去することが可能である。このようなフラッシュメモリは、バイナリフラッシュメモリデバイスと呼ばれることがある。その理由は、各記憶素子が１ビットのデータを記憶することができるからである。
【０００５】
マルチステート（マルチレベルとも呼ばれる）フラッシュメモリデバイスは、複数の異なる許容／有効プログラム閾値電圧範囲を特定することによって実現される。これらの異なる閾値電圧範囲はそのそれぞれが、メモリデバイスの中で符号化されたデータビットの集合の所定の値に対応している。例えば、素子が４つの異なる閾値電圧範囲に対応する４つの異なる電荷量帯のうちのいずれか１つの状態におかれることによって、各記憶素子が２ビットのデータを記憶することができる。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
一般的に、プログラム動作中に制御ゲートに印加されるプログラム電圧Ｖｐｇｍは、時間が経つにつれて大きさを増す一連のパルスとして印加される。一実施形態では、これらパルスの大きさは、連続するパルスごとに所定のステップサイズだけ（たとえば、０．２〜０．４Ｖ）だけ増加する。Ｖｐｇｍは、フラッシュ記憶素子の制御ゲート（または、場合によってはステアリングゲート）に印加することが可能である。プログラムパルス間の期間に、検証動作が実行される。すなわち、並列にプログラムされている素子グループ中の各素子のプログラミングレベルを、連続するプログラミングパルス間で読み取って、このレベルによって、素子がプログラムすべき検証レベル以上であるか否かを判定する。マルチステートフラッシュ記憶素子を含むアレイの場合、検証ステップは、素子の夫々の状態について、素子が自身のデータに対応付けられた検証レベルに到達したかどうかを判定してもよい。たとえば、データを４つの状態で記憶することが可能なマルチステート記憶素子は、３つの比較ポイントに対して検証動作を実行する必要がある。
【０００７】
その全体を参照してここに組み込む「Ｓｍａｒｔ  Ｖｅｒｉｆｙ  Ｆｏｒ  Ｍｕｌｔｉ−Ｓｔａｔｅ  Ｍｅｍｏｒｉｅｓ」という名称の米国特許出願公開第２００４／０１０９３６２号に、書き込みシーケンスのプログラムステップ／検証ステップ／ロックアウトステップのそれぞれに対して実行される連続的な検証動作の数を最小化するプロセスが記載されている。最初に、選択された記憶素子がプログラムされるマルチステート範囲の内の最も低い状態だけを、検証フェーズでチェックする。選択された素子の内の１つ以上がいったんこの最初の記憶状態に到達したら、マルチステートのシーケンスのうちの次の状態を検証プロセスに追加する。次のこのステップは、最も早い素子がこのシーケンスの内の前の状態に達したら即座に追加してもよいし、プログラムパルス数回分送れて追加してもよい。検証フェーズでチェックされているこの集合に状態を追加する動作は、最も高い状態が追加されるまで、マルチステートの集合の残りの状態にわたって連続して継続される。加えて、これらのレベルに到達しようとしている選択された記憶素子のすべてがこれら目標値に成功裏に到達したことが検証されて、これ以上プログラミングされないようにロックアウトされると、より低い状態を検証の集合から外すことが可能である。
【０００８】
さまざまなプログラミング方式に適用可能なさらなる「スマート検証」技術が必要とされている。
【課題を解決するための手段】
【０００９】
不揮発性記憶素子のうちの少なくとも一部に対していつプログラミング検証を開始すべきであるかを適応的に判定することによって不揮発性記憶素子をプログラミングする方法が提供される。不必要なプログラム検証ステップを回避することによって、プログラミング時間と電力消費が軽減される。
【００１０】
上に述べた技法では、たとえば、「ロワー・トゥ・ミドル」（ＬＭ）プログラミングモードにおいて、中間状態とオーバーラップする最終状態に上位ページのデータをプログラミングする以前に下位ページのデータを中間状態にプログラミングするときに発生する問題が克服される。このようなシナリオにおいては、下位ページがプログラムされたときに、不揮発性記憶素子の一部が最終状態に到達することがある。したがって、最終状態に最初に到達するビットを検出するビットパス検出は、上位ページをプログラミングするときには実行不可能である。そのかわりに、最終状態の外部にある開始点から最終状態に最初に到達するビットを検出して、この検出結果を利用して、後続の「スマートな」検証をいつ開始するかを判定することが望ましい。
【００１１】
１つの実施形態では、不揮発性記憶素子の集合中の不揮発性記憶素子は、最初は、共通の第１の電圧閾値区分内にあるそれぞれの電圧閾値を有している。
【００１２】
これら不揮発性記憶素子は、消去状態区分などの以前の電圧閾値区分から共通の第１の電圧閾値区分に到達するようにプログラムされてよい。この第１の電圧閾値区分内のこれら不揮発性記憶素子の少なくとも一部は、連続する電圧パルスを用いてプログラムされ、それによってその電圧閾値が、第１の電圧閾値区分とオーバーラップする第２の電圧閾値区分に到達するように、または、第１と第２の電圧閾値区分の外部にある第３の電圧閾値区分に到達するようにする。これら不揮発性記憶素子のうちの１つの素子の電圧閾値が、第２の電圧閾値区分の外部にある第１の電圧閾値区分の１部から第２の電圧閾値区分に遷移すると、これら不揮発性記憶素子の他の素子の電圧閾値が、第１の電圧閾値区分から第３の電圧閾値区分への遷移をいつ完了したかを検証する検証プロセスをいつ開始するかを決定する。
【００１３】
たとえば、この検証プロセスは、不揮発性記憶素子のうちの１つの素子の電圧閾値が第２の電圧閾値区分への遷移を完了したことを判定した後に、第３の電圧閾値区分に遷移する不揮発性記憶素子に対して所定の数の電圧パルスを印加した後で、開始することが可能である。
【００１４】
不揮発性記憶素子の第１の電圧閾値区分から第２の電圧閾値区分への遷移は、対応付けられた電圧閾値が、第２の電圧閾値区分より下方にある低い電圧閾値ＶＬを超えて遷移し、さらに、第２の電圧閾値区分内にある高い電圧閾値Ｖ’Ｈを超えて遷移した時点を決定することによって追跡することが可能である。Ｖ’Ｈは、検知マージン分および／またはノイズマージン分のマージンだけ第２の電圧閾値区分の下限値ＶＨを超えることがある。
【００１５】
マルチレベルをもつ不揮発性記憶素子中のバイナリデータの状態が異なれば、これを表す閾値電圧区分も異なる。
【発明を実施するための最良の形態】
【００１６】
本発明の実施に適した不揮発性メモリシステムの一例では、ＮＡＮＤストリングの２つの選択ゲート間で直列に配列されるＮＡＮＤフラッシュメモリ構造を使用する。図１は、１つのＮＡＮＤストリングを示す上面図である。図２は、その等価回路である。図１および図２に示すＮＡＮＤストリングは、直列の４つのトランジスタ１００、１０２、１０４、１０６を備え、第１の選択ゲート１２０と第２の選択ゲート１２２との間に挟まれている。選択ゲート１２０は、ＮＡＮＤストリングをビット線コンタクト１２６に接続する。選択ゲート１２２は、ＮＡＮＤストリングをソース線コンタクト１２８に接続する。選択ゲート１２０は、制御ゲート１２０ＣＧに適切な電圧を印加することによって制御される。選択ゲート１２２は、制御ゲート１２２ＣＧに適切な電圧を印加することによって制御される。トランジスタ１００、１０２、１０４、１０６はそれぞれ、制御ゲートと浮遊ゲートを有する。トランジスタ１００は、制御ゲート１００ＣＧと浮遊ゲート１００ＦＧを有する。トランジスタ１０２は、制御ゲート１０２ＣＧと浮遊ゲート１０２ＦＧを有する。トランジスタ１０４は、制御ゲート１０４ＣＧと浮遊ゲート１０４ＦＧを有する。トランジスタ１０６は、制御ゲート１０６ＣＧと浮遊ゲート１０６ＦＧを有する。制御ゲート１００ＣＧ、１０２ＣＧ、１０４ＣＧ、１０６ＣＧ、は、ワード線ＷＬ３、ＷＬ２、ＷＬ１、ＷＬ０にそれぞれ接続されている。１つの実施形態では、トランジスタ１００、１０２、１０４、１０６のそれぞれがメモリセルあるいは記憶素子となる。他の実施形態では、記憶素子が複数のトランジスタを含んでいてもよく、図１および図２に示した構成と異なっていてもよい。選択ゲート１２０は、ドレイン選択線ＳＧＤに接続され、選択ゲート１２２は、ソース選択線ＳＧＳに接続される。
【００１７】
図３は、上記のＮＡＮＤストリングの断面図を示す。ＮＡＮＤストリングのトランジスタはｐ−ウェル領域１４０内に形成されている。各トランジスタは、制御ゲート（１００ＣＧ、１０２ＣＧ、１０４ＣＧ、および１０６ＣＧ）と浮遊ゲート（１００ＦＧ、１０２ＦＧ、１０４ＦＧ、および１０６ＦＧ）からなる積層ゲート構造を備えている。浮遊ゲートは、酸化膜または他の誘電体膜上のｐ−ウェルの表面上に形成されている。制御ゲートは、浮遊ゲート上に位置しており、制御ゲートと浮遊ゲートは、ポリシリコン間誘電体層によって分離されている。記憶素子（１００、１０２、１０４、１０６）の制御ゲートは、ワード線を形成している。Ｎ＋ドープ層１３０、１３２、１３４、１３６、１３８は隣接する素子間で共有されており、これにより素子は相互に直列に接続されてＮＡＮＤストリングを形成している。これらのＮ＋ドープ層は、各素子のソースおよびドレインを形成している。例えば、Ｎ＋ドープ層１３０は、トランジスタ１２２のドレイン、および、トランジスタ１０６のソースとして働く。Ｎ＋ドープ層１３２は、トランジスタ１０６のドレイン、および、トランジスタ１０４のソースとして働く。Ｎ＋ドープ層１３４は、トランジスタ１０４のドレイン、および、トランジスタ１０２のソースとして働く。Ｎ＋ドープ層１３６は、トランジスタ１０２のドレイン、および、トランジスタ１００のソースとして働く。Ｎ＋ドープ層１３８は、トランジスタ１００のドレイン、および、トランジスタ１２０のソースとして働く。Ｎ＋ドープ層１２６は、ＮＡＮＤストリングのビット線につながっており、Ｎ＋ドープ層１２８は、複数のＮＡＮＤストリングの共通ソース線につながっている。
【００１８】
図１〜図３では、ＮＡＮＤストリング内に４つの記憶素子を示しているが、４つのトランジスタを使用する構成は、一例にすぎないことに留意されたい。ここに記載される技術によって使用されるＮＡＮＤストリングは、４つ未満の記憶素子を有していてもよく、又は、４つを超える記憶素子を有していてもよい。例えば、一部のＮＡＮＤストリングは、８、１６、３２、６４あるいはそれ以上の数の記憶素子等を含むことができる。本明細書における説明は、ＮＡＮＤストリング内の記憶素子がいかなる数でも有効である。
【００１９】
各記憶素子は、アナログ又はデジタル形式で表されたデータを記憶することが可能である。１ビットのデジタルデータを記憶する場合、記憶素子の可能な閾値電圧の範囲は、論理データ「１」および「０」が割り当てられる２つの範囲に分割される。ＮＡＮＤ型フラッシュメモリの一例では、記憶素子の消去された後の閾値電圧は負となり、論理「１」と定義される。プログラム動作後に閾値電圧は正となり、論理「０」と定義される。閾値電圧が負の状態で制御ゲートに０Ｖを印加することによって読み出しが試みられた場合、記憶素子はオンになり、論理１が記憶されていることを示す。閾値電圧が正の状態で制御ゲートに０Ｖを印加することによって読み出し動作が試みられた場合、記憶素子はオンにならず、これは論理「０」が記憶されていることを示す。
【００２０】
また、記憶素子は、複数の状態を記憶することも可能であり、それにより複数ビットのデジタルデータを記憶することも可能である。複数の状態のデータを記憶する場合、閾値電圧の範囲は、記憶する状態の数に分割される。例えば、４つの状態の情報が使用される場合、４つの閾値電圧範囲が存在し、それぞれにデータ値「１１」、「１０」、「０１」、「００」が割り当てられる。ＮＡＮＤ型メモリの一例では、消去動作の後の閾値電圧は負となり、「１１」と定義される。正の閾値電圧は、「１０」、「０１」、「００」の状態のために使用される。一部の実施例では、これらのデータ値（たとえば論理状態）を、グレイコード割り当て方法を用いて閾値範囲に割り当て、これで、浮遊ゲートの閾値電圧が間違ってその隣接する物理状態にずれても、１つの論理ビットのみしか影響されないようにしている。記憶素子にプログラムされるデータとこの素子の閾値電圧範囲との間の具体的な関係は、記憶素子に対して採用されるデータ符号化スキームに依存する。たとえば、その双方の全体を参照によってここに組み込む、２００３年６月１３日に出願された「Ｔｒａｃｋｉｎｇ  Ｃｅｌｌｓ  Ｆｏｒ  Ａ  Ｍｅｍｏｒｙ  Ｓｙｓｔｅｍ」という名称の米国特許第６，２２２，７６２号および米国特許出願第１０／４６１，２４４号と、２００４年１２月１６日に公開された米国特許出願公開第２００４／０２５５０９０号には、マルチステート式フラッシュ記憶素子のさまざまなデータ符号化スキームが記載されている。
【００２１】
ＮＡＮＤ型フラッシュメモリおよびそれらの動作に関連する例は、次の米国特許／特許出願で提供されており、それぞれの全体が参照により本明細書に援用される。米国特許第５，３８６，４２２号、第５，５２２，５８０号、第５，５７０，３１５号、米国特許第５，７７４，３９７号、米国特許第６，０４６，９３５号、米国特許第６，４５６，５２８号、および米国出願第６，５２２，５８０号である。ＮＡＮＤ型フラッシュメモリに加え、その他のタイプの不揮発性メモリも本発明とともに使用されてもよい。
【００２２】
フラッシュＥＥＰＲＯＭシステムで有用な別のタイプの記憶素子は、導電性の浮遊ゲートの代わりに非導電性の誘電性材料を利用して、電荷を不揮発式に蓄積する電荷トラップ素子である。このような素子が、１９８７年３月に発行されたＩＥＥＥのエレクトロン・デバイス・レターの第ＥＤＬ−８巻の第３号の、チャンらによる「Ａ  Ｔｒｕｅ  Ｓｉｎｇｌｅ−Ｔｒａｎｓｉｓｔｏｒ  Ｏｘｉｄｅ−Ｎｉｔｒｉｄｅ−Ｏｘｉｄｅ  ＥＥＰＲＯＭ  Ｄｅｖｉｃｅ」という記事の９３〜９５ページに記載されている。シリコン酸化物、シリコン窒化物、シリコン酸化物（“ＯＮＯ”）で形成された三層誘電体を、記憶素子のチャネル上で、導電性の制御ゲートと半導体基板の表面とで挟んでいる。この素子は、素子のチャネルから窒化物中に電子を注入し、この窒化物中でこれらの電子が限られた領域中に捕獲されて蓄積されることによってプログラムされる。すると、この蓄積された電荷のため、この素子のチャネルのある部分の閾値電圧が変化するが、この変化は検出可能である。この素子は、ホットホールを窒化物中に注入することによって消去される。また、１９９１年４月に発行されたＩＥＥＥ  Ｊｏｕｒｎａｌ  ｏｆ  Sｏｌｉｄ−Ｓｔａｔｅ  Ｃｉｒｃｕｉｔの第２６巻の第４号、４９７〜５０１ページのノザキらによる「Ａ  １−Ｍｂ  ＥＥＰＲＯＭ  ｗｉｔｈ  ＭＯＮＯＳ  Ｍｅｍｏｒｙ  Ｃｅｌｌ  ｆｏｒ  Ｓｅｍｉｃｏｎｄｕｃｔｏｒ  Ｄｉｓｋ  Ａｐｐｌｉｃａｔｉｏｎ」に、ドーピングされた多結晶シリコンゲートが記憶素子チャネルのある部分上に伸張して、互いに分離された選択トランジスタを形成している分離ゲート構造の類似の素子が記述されているので参照されたい。前述の２つの記事の全体を参照によりここに組み込む。参照によりここに組み込む１９９８年のＩＥＥＥプレスのウイリアム・Ｄ・ブラウン（Ｗｉｌｌｉａｍ  Ｄ．  Ｂｒｏｗｎ）とジョー・Ｅ・ブルーワ（Ｊｏｅ  Ｅ．  Ｂｒｅｗｅｒ）によって編集された「Ｎｏｎｖｏｌａｔｉｌｅ  Ｓｅｍｉｃｏｎｄｕｃｔｏｒ  Ｍｅｍｏｒｙ  Ｔｅｃｈｎｏｌｏｇｙ」の１．２章に言及されているプログラミング手法もまた、誘電性電荷捕獲デバイスに応用可能であるとこの章に記述されている。このパラグラフに記述されている記憶素子もまた、本発明で用いることが可能である。したがって、本書に記載する技術もまた、互いに異なる記憶素子の誘電体領域間でのカップリングに当てはまる。
【００２３】
各々の素子に２ビットを記憶する別の方式が、２０００年１１月に発行されたＩＥＥＥのエレクトロン・デバイス・レターの第２１巻の第１１号、５４３〜５４５ページのエイタン（Ｅｉｔａｎ）らによる「ＮＲＯＭ：Ａ  Ｎｏｖｅｌ  Ｌｏｃａｌｉｚｅｄ  Ｔｒａｐｐｉｎｇ，  ２−Ｂｉｔ  Ｎｏｎｖｏｌａｔｉｌｅ  Ｍｅｍｏｒｙ  Ｃｅｌｌ」に記載されており、ＯＮＯ誘電体層が、ソース拡散層とドレイン拡散層間のチャネル上に伸張していることが記載されている。一方のデータビットに対する電荷がドレインに隣り合った誘電体層中に局所化され、他方のデータビット用の電荷がソースに隣り合った誘電体層中に局所化される。マルチステートデータ記憶は、誘電体内部の空間的に分離された電荷蓄積領域のバイナリ状態を別々に読み取ることによって実現される。このパラグラフに記述する記憶素子もまた、本発明で用いることが可能である。
【００２４】
図４は、３つのＮＡＮＤストリングを示す回路図である。ＮＡＮＤ構造を用いたフラッシュメモリシステムの一般的なアーキテクチャは、いくつかのＮＡＮＤストリングを含む。たとえば、３つのＮＡＮＤストリング２０１、２０３、２０５を、さらに多くの数のＮＡＮＤストリングを有するメモリアレイ中に示す。これらＮＡＮＤストリングはそれぞれが、２つの選択トランジスタと４つの記憶素子を含む。たとえば、ＮＡＮＤストリング２０１は、選択トランジスタ２２０および２３０ならびに記憶素子２２２、２２４、２２６および２２８を含む。ＮＡＮＤストリング２０３は、選択トランジスタ２４０および２５０ならびに記憶素子２４２、２４４、２４６および２４８を含む。ＮＡＮＤストリング２０５は、選択トランジスタ２６０および２７０ならびに記憶素子２６２、２６４、２６６および２６８を含む。ＮＡＮＤストリングはそれぞれが、その選択トランジスタ（たとえば選択トランジスタ２３０、２５０または２７０）によってソース線に接続されている。選択線ＳＧＳを用いて、ソース側の選択ゲートを制御する。さまざまなＮＡＮＤストリング２０１、２０３および２０５が、ドレイン選択線ＳＧＤによって制御される選択トランジスタ２２０、２４０、２６０などによってそれぞれのビット線２０２、２０４、２０６に接続されている。選択線が必ずしも共通である必要のない実施形態もある。各ワード線は、行内の各記憶素子の制御ゲートに接続されている。例えばワード線ＷＬ３は、記憶素子２２２、２４２、２６２の制御ゲートに接続されている。ワード線ＷＬ２は、記憶素子２２４、２４４、２６４の制御ゲートに接続されている。ワード線ＷＬ１は、記憶素子２２６、２４６、２６６の制御ゲートに接続されている。ワード線ＷＬ０は、記憶素子２２８、２４８、２６８の制御ゲートに接続されている。理解されるように、各ビット線とそれぞれのＮＡＮＤストリングは、アレイ、すなわち、記憶素子の集合の列を備えている。ワード線（ＷＬ３、ＷＬ２、ＷＬ１およびＷＬ０）は、アレイすなわち集合の行を備えている。
【００２５】
フラッシュ記憶素子をプログラミングするとき、プログラム電圧をその素子の制御ゲートに印加して、この素子に対応付けられているビット線を接地する。ｐ−ウェルからの電子が浮遊ゲート中に注入される。電子が浮遊ゲート中に累積されると、この浮遊ゲートは負に帯電し、この素子の閾値電圧が上昇し、例えば記憶素子などの記憶素子は、プログラムされた状態とみなされる。プログラミングに関する更なる情報は、双方ともそれらの全体を参照によってここに組み込む「Ｓｏｕｒｃｅ  Ｓｉｄｅ  Ｓｅｌｆ  Ｂｏｏｓｔｉｎｇ  Ｔｅｃｈｎｉｑｕｅ  Ｆｏｒ  Ｎｏｎ−Ｖｏｌａｔｉｌｅ  Ｍｅｍｏｒｙ」という名称の米国特許第６，８５９，３９７号および２００３年７月２９日に出願された「Ｄｅｔｅｃｔｉｎｇ  Ｏｖｅｒ  Ｐｒｏｇｒａｍｍｅｄ  Ｍｅｍｏｒｙ」という名称の米国特許出願公開第２００５／００２４９３９号に開示されている。
【００２６】
プログラム電圧をプログラムされている素子の制御ゲートに印加するには、このプログラム電圧を該当するワード線に印加する。このワード線もまた、同じワード線を共有する他のＮＡＮＤストリングのそれぞれ中の１つの素子に接続されている。たとえば、図４の素子２２４をプログラミングする場合、プログラム電圧は素子２４４の制御ゲートにも印加される。あるワード線上の１つの素子を、同じワード線に接続されている他の素子をプログラミングすることなくプログラムすることが望まれる時、たとえば、素子２２４をプログラムしたいが素子２４４はプログラムしたくないような場合に、問題が発生する。プログラム電圧はあるひとつのワード線に接続されているすべての素子に印加されるため、このワード線上の選択されていない素子（プログラムされないはずの素子）、特に、プログラミングするように選択された素子の隣接する素子が、プログラム外乱と呼ばれるプロセスで誤ってプログラムされることがある。たとえば、素子２２４をプログラミングするとき、隣接する素子２４４が意図せずにプログラムされてしまう懸念がある。
【００２７】
プログラム外乱を防止することが可能な手法はいくつか存在する。「自己昇圧方法」として知られている方法では、選択されていないビット線を電気的に絶縁して、プログラミング最中に、パス電圧（たとえば１０Ｖ）を選択されていないワード線に印加する。これらの選択されていないワード線は禁止されたＮＡＮＤストリング２０３のチャネルにカップリングして、少なくとも選択されたワード線の下方にある当該ストリングに電圧（たとえば８Ｖ）が存在するようにし、これで、プログラム外乱が減少しやすくなる。したがって、自己昇圧によって、チャネル内の電圧が上昇して、このため、トンネル酸化物の両端の電圧が減少し、したがってプログラム外乱が低減される。
【００２８】
ＮＡＮＤストリングは一般的には（常にではないが）、ソース側からドレイン側に、たとえば、記憶素子２２８から記憶素子２２２に向かってプログラムされる。たとえば、ＮＡＮＤストリング２０３がＮＡＮＤストリング２０１より前にプログラムされるものと仮定する。プログラミングプロセスがＮＡＮＤストリング２０１の最後の（または最後に近い）記憶素子をプログラムする準備ができており、禁止されているＮＡＮＤストリング（たとえばＮＡＮＤストリング２０３）上のすでにプログラムされている記憶素子のすべてまたはほとんどがプログラムされた場合、これらすでにプログラムされている記憶素子の浮遊ゲートには負の電荷が存在する。その結果、昇圧電位がＮＡＮＤストリング２０３のある部分ではその値が十分ではなく、したがって、最後のいくつかのワード線と対応付けられているＮＡＮＤストリング２０３中の素子には引き続きプログラム外乱が存在する可能性があることになる。たとえば、ＮＡＮＤストリング２０１上の素子２２２をプログラミングするときに、ＮＡＮＤストリング２０３上の素子２４８、２４６および２４４がすでにプログラムされている場合、これらのトランジスタ（２４４、２４６、２４８）のそれぞれの浮遊ゲートには負の電荷が存在しており、このため、自己昇圧プロセスでの昇圧レベルが制限され、素子２４２にプログラム外乱発生の可能性が生じることになる。
【００２９】
ローカル自己昇圧法（「ＬＳＢ」）および消去領域自己昇圧法（「ＥＡＳＢ」）は、すでにプログラムされている素子のチャネルを禁止されている素子のチャネルから絶縁することによって、従来の自己昇圧法の欠点を解決しようとするものである。たとえば、図４の素子２２４をプログラムする場合、ＬＳＢとＥＡＳＢでは、素子２４４のチャネルをすでにプログラムされている素子（２４６と２４８）から隔離することによって素子２４４でのプログラミングを禁止しようとする。ＬＳＢ手法では、プログラムされている素子に対するビット線は接地され、禁止される素子のＮＡＮＤストリングのビット線はＶｄｄにある。プログラム電圧Ｖｐｇｍ（たとえば２０ボルト）を、選択されたワード線で駆動する。選択されたワード線に隣接するワード線はゼロボルトであり、残りの選択されていないワード線はＶｐａｓｓである。たとえば、ビット線２０２はゼロボルトであり、ビット線２０４はＶｄｄである。ドレイン選択線ＳＤＧはＶｄｄにあり、ソース選択線ＳＧＳはゼロボルトである。（素子２２４をプログラミングするための）選択されたワード線ＷＬ２はＶｐｇｍである。隣接するワード線ＷＬ１とＷＬ３はゼロボルトであり、他のワード線（たとえばＷＬ０）はＶｐａｓｓである。
【００３０】
ＥＡＳＢはＬＳＢと似ているが、ソース側の隣接するワード線だけがゼロボルトである点において異なっている。ドレイン側の隣接するワード線はＶｐａｓｓである。Ｖｐａｓｓが低すぎると、チャネル中での昇圧の程度が、プログラム外乱を防止するには不十分となる。Ｖｐａｓｓが高すぎると、選択されていないワード線がプログラムされてしまう。たとえば、ＷＬ１がＶｐａｓｓではなくてゼロボルトとなり、ＷＬ３がＶｐａｓｓとなる。１つの実施形態では、Ｖｐａｓｓは７〜１０Ｖである。
【００３１】
ＬＳＢとＥＡＳＢでは自己昇圧機能が向上するが、ソース側の隣接する素子（素子２４６は素子２４４のソース側の隣にある）がプログラムされているまたは消去されているかによって相違が発生するという問題がある。ソース側の隣接する素子がプログラムされていると、その浮遊ゲートには負の電荷が存在する。そのうえ、制御ゲートにゼロボルトが印加されていると、負に充電されているゲートの下の接合が極端に逆バイアスされ、このため、昇圧されたチャネルに電子が漏れこむゲート誘導ドレイン漏れ電流（ＧＩＤＬ）が引き起こされることがある。ＧＩＤＬは、接合に大きなバイアスが掛かり、ゲート電圧が低いまたは負の電圧であると発生し、これは、まさに、ソース側の隣接する素子がプログラムされていて、ドレイン接合が昇圧された場合に当てはまる。ＧＩＤＬが発生すると、昇圧された電圧が急速に漏れて消滅し、この結果、プログラミングエラーとなるが、この現象は、素子のサイズが縮小するにつれて必要となる急速で高濃度にドーピングされた接合部においてより厳しい問題となる。漏れ電流が十分に高いと、チャネル領域中での昇圧電位が減少して、その結果、プログラム外乱となりかねない。さらに、プログラムされているワード線がドレインに近いほど、昇圧された接合部に存在する電荷の量は少なくなる。したがって、昇圧された接合部における電圧は急速に降下して、プログラム外乱を引き起こす。
【００３２】
ソース側の隣接する記憶素子が消去されると、浮遊ゲートには正の電荷が発生し、このため、トランジスタの閾値電圧が負になる確率が高い。トランジスタは、ゼロボルトがワード線に印加されてもオフとならないことがある。記憶素子がオンの場合、ＮＡＮＤストリングはＥＡＳＢモードでは動作しない。その替わりに、ＮＡＮＤストリングは自己昇圧モードで動作し、このため、上記の問題を有する。このシナリオは、他のソース側の素子がプログラムされていて、このため、ソース側の昇圧を制限する場合にはもっとも発生する確率が高い。この問題は、チャネル長さがより短い場合にもっとも問題となる。
【００３３】
図５に、本発明の１つの実施形態にしたがって、あるページのメモリセルを同時並行に読み出しプログラミングする読み出し／書き込み回路を有するメモリデバイス２９６を示す。メモリデバイス２９６は、１つ以上のメモリダイ２９８を含むことがある。このメモリダイ２９８は、二次元アレイのメモリセル３００、制御回路３１０および読み出し／書き込み回路３６５を含んでいる。メモリアレイ３００は、行デコーダ３３０を介してワード線によって、また、列デコーダ３６０を介してビット線によってアドレス指定可能である。読み出し／書き込み回路３６５は、複数の検知ブロック（センスブロック）４００を含み、あるページのメモリセルを同時並行に読み出したりプログラムしたりすることを可能とする。一般的には、コントローラ３５０は、１つ以上のメモリダイス２９８として同じメモリデバイス２９６（たとえば着脱可能メモリカード）に含まれている。コマンドとデータは、ホストとコントローラ３５０間を線３２０を介して、また、コントローラと１つ以上のメモリダイ２９８間を線３１８を介して転送される。
【００３４】
制御回路３１０は読み出し／書き込み回路３６５と協働して、メモリアレイ３００に対してメモリ動作を実行する。制御回路３１０は、ステートマシン３１２、オンチップアドレスデコーダ３１４および電力制御モジュール３１６を含んでいる。ステートマシン３１２は、メモリ動作をチップレベルで制御する。オンチップアドレスデコーダ３１４は、ホストやメモリコントローラが用いるアドレスとデコーダ３３０と３６０が用いるハードウェアアドレス間のアドレスインタフェースとなっている。電力制御モジュール３１６は、メモリ動作中にワード線とビット線に供給される電力と電圧を制御する。
【００３５】
別の方式では、さまざまな周辺回路は、メモリアレイ３００に対して、このアレイの両側から対象的にアクセスし、このため、それぞれの側でのアクセス線と回路の密度は半分に軽減される。
【００３６】
図６は、検知モジュール３８０と呼ばれるコア部分と、共通部分３９０に区分される個々のセンスブロック４００のブロック図である。１つの実施形態では、ビット線ごとに別個の検知モジュール３８０と、複数の検知モジュール３８０の集合に対して１つの共通の部分３９０が存在する。１つの例では、１つのセンスブロックは、１つの共通部分３９０と８個の検知モジュール３８０を含むことが可能である。グループ中のこれらセンスブロックはそれぞれが、対応する共通部分とデータバス３７２を介して通信する。より詳しくは、その全体を参照によりここに組み込む、２００４年１２月２９日に出願された、「Ｎｏｎ−ｖｏｌａｔｉｌｅ  Ｍｅｍｏｒｙ  ＆  Ｍｅｔｈｏｄ  ｗｉｔｈ  Ｓｈａｒｅｄ  Ｐｒｏｃｅｓｓｉｎｇ  ｆｏｒ  ａｎ  Ａｇｇｒｅｇａｔｅ  ｏｆ  Ｓｅｎｓｅ  Ａｍｐｌｉｆｉｅｒ」という名称の米国特許出願第１１／０２６，５３６号を参照されたい。
【００３７】
検知モジュール３８０は、接続されたビット線中の導電電流が所定の閾値レベルより高いか未満かを判定する検知回路３７０を備えている。検知モジュール３８０はまた、接続されたビット線に対して電圧条件を設定するために用いられるビット線ラッチ３８２を含んでいる。たとえば、ビット線ラッチ３８２に所定の状態をラッチすると、その結果、接続されているビット線を、プログラム禁止を指定する状態（たとえばＶｄｄ）にまで引き上げる。
【００３８】
共通部分３９０は、プロセッサ３９２と、データラッチ３９４の集合と、このデータラッチ集合３９４とデータバス３２０間に結合されているＩ／Ｏインタフェース３９６を備えている。プロセッサ３９２は計算を実行する。たとえば、その機能のうちの１つは、検知されたメモリセルに記憶されているデータを判定して、この判定されたデータをデータラッチの集合に格納することである。データラッチ集合３９４は、読み出し動作中にプロセッサ３９２が決定したデータビットを記憶するために用いられる。これはまた、プログラム動作中にデータバス３２０からインポートされたデータビットを記憶するために用いられる。インポートされたデータビットは、メモリにプログラムしようとしている書き込みデータを表している。Ｉ／Ｏインタフェース３９８は、データラッチ３９４とデータバス３２０間のインタフェースとなっている。
【００３９】
読み出し中または検知中、本システムの動作は、アドレス指定されたセルに対するさまざまな制御ゲート電圧の供給を制御するステートマシン３１２の制御下にある。メモリによってサポートされるさまざまなメモリ状態に対応するさまざまな所定の制御ゲート電圧を変化させるに連れて、検知モジュール３８０は、これらの電圧のうちのどれか１つのところでトリップして、検知モジュール３８０からの出力が、バス３７２を介してプロセッサ３９２に提供される。この時点で、プロセッサ３９２は、結果得られるメモリ状態を、入力線３９３を介してステートマシンから得られる検知モジュールのこのトリップ事象と印加された制御ゲート電圧に関する情報とを考慮することによって判定する。次に、メモリ状態に対するバイナリ符号化を計算して、結果として得られたデータビットをデータラッチ３９４に格納する。コア部分の別の実施形態では、ビット線ラッチ３８２は、二重のデューティ、すなわち、検知モジュール３８０の出力をラッチするラッチと、また、上記のようなビット線ラッチとして働く。
【００４０】
複数のプロセッサ３９２を含む実施例もある。１つの実施形態では、それぞれのプロセッサ３９２が出力線（図示せず）を含むことが可能であり、これで、出力線のそれぞれが一緒にワイアドＯＲされるようにする。一部の実施形態では、出力線を、ワイアドＯＲ線に接続する以前に反転させる。この構成によって、プログラミングプロセスが完了した時点を検証するプログラム検証プロセス中に高速に判定することが可能となるが、これは、ワイアドＯＲを受信するステートマシンが、プログラムされているすべてのビットがいつ所望のレベルに到達したかを判定することが可能であるからである。たとえば、それぞれのビットがその所望のレベルに到達すると、このビットの論理ゼロがワイアドＯＲ線に送られる（またはデータ１が反転する）。すべてのビットがデータ０を出力する（またはデータ１が反転される）と、ステートマシンは、プログラミングプロセスを終了すべきであることが分かる。それぞれのプロセッサが８個の検知モジュールと通信しているため、ステートマシンはワイアドＯＲ線を８回読み出す必要がある、すなわち、論理をプロセッサ３９２に追加すれば、対応するビット線の結果を累積して、ステートマシンがワイアドＯＲ線を１回だけ読み出すだけでよいようにすることが可能である。同様に、論理レベルを正しく選択することによって、グローバルステートマシンは、最初のビットがいつその状態を変化させたかを検出して、これにしたがってアルゴリズムを変更することが可能である。
【００４１】
プログラミング中または検証中、プログラム予定のデータは、データバス３２０からデータラッチ集合３９４に格納される。プログラム動作は、ステートマシンの制御下にあって、アドレス指定されたセルの制御ゲートに印加される一連のプログラミング電圧パルスから構成される。それぞれのプログラミングパルスの後にリードバックする（検証する）動作を実行して、セルが所望のメモリ状態にプログラムされたかどうかを判定することが可能である。以下にさらに説明するように、適応的技法すなわち「スマート検証」技法を用いて、検証ステップの数を軽減し、これで、検証動作が、指定された記憶素子に対して、指定された時点で開始するようにすることが可能である。プロセッサ３９２は、リードバックされたメモリ状態を所望のメモリ状態を基準として監視する。両者が一致すれば、プロセッサ３９２は、ビット線がプログラム禁止を指定する状態にまで引き上げられるように、ビット線ラッチ３８２を設定する。これによって、ビット線に結合されたセルが、たとえその制御ゲートにプログラミングパルスが入力されても、これ以上プログラミングされることが禁止される。プロセッサが最初にビット線ラッチ３８２をロードして、検知回路が、それを検証プロセス中に抑止値に設定する実施形態もある。
【００４２】
データラッチスタック３９４は、検知モジュールに対応するデータラッチのスタックを含んでいる。１つの実施形態では、検知モジュール３８０ひとつに対して３つのデータラッチが存在する。一部の実施例（必要ではないが）では、データラッチをシフトレジスタとして実現し、これで、その中に記憶されているパラレルデータを、データバス３２０用にシリアルデータに変換したり、この逆の動作をしたりする。１つの実施形態では、ｍ個のメモリセルの読み出し／書き込みブロックに対応するすべてのデータラッチを一緒にリンクしてブロックシフトレジスタを形成し、これで、データのブロックをシリアル転送で入力したり出力したりすることが可能となるようにしている。特に、読み出し／書き込みモジュールのバンクを適用し、これで、そのデータラッチ集合が、あたかもこれらデータラッチが全体の読み出し／書き込みブロックにとってシフトレジスタの一部であるかのように、データバスに対してデータを順番にシフトインしたりシフトアウトしたりするようにする。
【００４３】
検知モジュール３８０の動作に関するさらなる説明は、米国特許出願公開第２００４／００５７２８７号として２００４年３月２５日に公開され、ラウル・エイドリアン・サーニア（Ｒａｕｌ−Ａｄｒｉａｎ  Ｃｅｒｎｅａ）とヤン・リー（Ｙａｎ  Ｌｉ）による、２００２年９月２４日に出願された「Ｎｏｎ−Ｖｏｌａｔｉｌｅ  Ｍｅｍｏｒｙ  Ａｎｄ  Ｍｅｔｈｏｄ  Ｗｉｔｈ  Ｒｅｄｕｃｅｄ  Ｓｏｕｒｃｅ  Ｌｉｎｅ  Ｂｉａｓ  Ｅｒｒｏｒｓ」という名称の同時係属米国特許出願第１０／２５４，８３０号と；米国特許出願公開第２００４／０１０９３５７号として２００４年６月１０日に公開され、ラウル・エイドリアン・サーニア（Ｒａｕｌ−Ａｄｒｉａｎ  Ｃｅｒｎｅａ）とヤン・リー（Ｙａｎ  Ｌｉ）による、２００３年９月１７日に出願された「Ｎｏｎ−Ｖｏｌａｔｉｌｅ  Ｍｅｍｏｒｙ  Ａｎｄ  Ｍｅｔｈｏｄ  ｗｉｔｈ  Ｉｍｐｒｏｖｅｄ  Ｓｅｎｓｉｎｇ」という名称の米国特許出願第１０／６６５，８２８号に見受けられる。検知モジュール３８０の結果を処理するために用いられる回路の説明が、ラウル・エイドリアン・サーニア（Ｒａｕｌ−Ａｄｒｉａｎ  Ｃｅｒｎｅａ）、ヤン・リー（Ｙａｎ  Ｌｉ）、シャザド・カリド（Ｓｈａｈｚａｆ  Ｋｈａｌｉｄ）よびシウ・ルン・チャン（Ｓｉｕ  Ｌｕｎｇ  Ｃｈａｎ）による、２００４年１２月２９日に出願された「Ｎｏｎ−Ｖｏｌａｔｉｌｅ  Ｍｅｍｏｒｙ  ａｎｄ  Ｍｅｔｈｏｄ  ｗｉｔｈ  Ｓｈａｒｅｄ  Ｐｒｏｃｅｓｓｉｎｇ  ｆｏｒ  ａｎ  Ａｇｇｒｅｇａｔｅ  ｏｆ  Ｒｅａｄ／Ｗｒｉｔｅ  Ｃｉｒｃｕｉｔｓ」という名称の同時係属米国特許出願第１１／０２６，５３６号と、ヤン・リー（Ｙａｎ  Ｌｉ）とラウル・エイドリアン・サーニア（Ｒａｕｌ−Ａｄｒｉａｎ  Ｃｅｒｎｅａ）による、２００５年４月１日に出願された「Ｕｓｅ  ｏｆ  Ｄａｔａ  Ｌａｔｃｈｅｓ  ｉｎ  Ｍｕｌｔｉ−Ｐｈａｓｅ  Ｐｒｏｇｒａｍｍｉｎｇ  ｏｆ  Ｎｏｎ−Ｖｏｌａｔｉｌｅ  Ｍｅｍｏｒｉｅｓ」という名称の同時係属米国特許出願第１１／０９７，５１７号に見受けられる。これら４つの引用出願の全開示内容を参照によりここに組み込む。
【００４４】
図７を参照して、記憶素子アレイ３００の構造の例を説明する。一例として、１,０２４個のブロックに区分けされているＮＡＮＤ型フラッシュＥＥＰＲＯＭを説明する。消去動作においては、各ブロックに記憶されたデータは同時に消去される。１つの形態では、ブロックは、同時に消去される素子の最小単位である。本実施形態において、各ブロックには８，５１２列と、それに対応するビット線ＢＬ０〜ＢＬ８５１１がある。４つの記憶素子が直列に接続されてＮＡＮＤストリングを形成する。各ＮＡＮＤストリングに４つの素子が含まれているように図示されているが、使用する素子の数は４つ以上でも４つ以下でもよい。ＮＡＮＤストリングの一方の端子は、選択トランジスタＳＧＤを介して対応するビット線に接続され、他方の端子は、第２の選択トランジスタＳＧＳを介してＣ−ソース線に接続されている。
【００４５】
読み出しおよびプログラミング動作の一実施形態の間は、同じワード線を有する８，５１２の記憶素子のすべてが同時に選択される。したがって、論理ページを形成する１，０６４バイトのデータを、同時に読み出し又はプログラムすることが可能であり、１つのメモリのブロックは、少なくとも８つの論理ページを記憶することが可能である。マルチステート記憶素子の場合、各記憶素子が２ビットのデータを記憶し、これら２ビットがそれぞれ異なったページに記憶される場合、１つのブロックは１６の論理ページを記憶する。２つのプログラミングサイクルを、最初に１ページのデータを有する記憶素子、次に他のページのデータを有する記憶素子をプログラムするために使用することがある。他のサイズのブロックおよびページも、本発明とともに使用されてもよい。さらに、図示する構造以外の構造を、本発明を実施するために使用することもできる。例えば、１つの形態においては、ビット線は、別々にプログラムされかつ読み取られる奇数と偶数のビット線に分割される。
【００４６】
記憶素子の消去は、ｐ−ウェルを消去電圧（例えば、２０ボルト）まで引き上げるとともに、選択されたブロックのワード線を接地することによって行われる。ソースおよびビット線はフローティング（浮遊）状態にしておく。消去は、メモリアレイ全体、独立したブロック、又はワード線、ページ、セクターなどのメモリデバイスの一部である別の単位の記憶素子に対して実行することができる。１つの実施形態においては、浮遊ゲートから電子がｐ−ウェル領域に移動し、閾値電圧は負になる。
【００４７】
読み出しおよび検証動作では、トランジスタをパスゲートとして動作させるために、選択ゲート（ＳＧＤおよびＳＧＳ）と、選択されないワード線（例えば、ＷＬ１が選択されるワード線の場合には、ＷＬ０、ＷＬ２、およびＷＬ３）が、読み出しパス電圧（例えば、４．５ボルト）まで引き上げられる。選択されたワード線ＷＬ１は、各読み出しおよび検証動作について指定されたレベルの電圧に接続され、注目している記憶素子の閾値電圧が指定されたレベルの電圧より上なのか下なのかが判定される。例えば、２レベル型の記憶素子の読み出し動作では、選択されたワード線ＷＬ１を接地してもよく、それによって閾値電圧が０Ｖよりも高いのか否かが検出される。２レベル型の記憶素子の検証動作では、選択されたワード線ＷＬ１を例えば０．８Ｖに接続し、それによって閾値電圧が少なくとも０．８Ｖに到達しているのか否かが検証される。ソースおよびｐ−ウェルは０ボルトである。選択されたビット線は、例えば０．７Ｖのレベルにプリチャージされる。閾値電圧が、ワード線上の読み出し又は検証レベルよりも高い場合には、該当する素子に対応付けられたビット線の電位レベルは、非導電性の記憶素子であるために、ハイレベルに維持される。他方、閾値電圧が、読み出し又は検証レベルよりも低い場合には、注目しているビット線の電位レベルは、導電性の記憶素子がビット線を放電するため、例えば０．５Ｖ未満のローレベルに低下する。これによって、記憶素子の状態が、ビット線に接続された電圧比較器センス増幅器により検出される。他の検知タイプである全ビット線（ＡＢＬ）検知は電流検知を含む。
【００４８】
上記の消去、読み出し、および検証動作は、当業界で知られた技術に従って実行される。したがって、説明した詳細の多くについては、当業者によって変更されることが可能である。当業界で知られた他の消去、読み出しおよび検証技術を使用することもできる。
【００４９】
上述したように、各々のブロックを多くのページに分割することが可能である。一実施形態では、１ページがプログラミングの単位である。いくつかの実施例では、個々のページをセグメントに分割してもよい。セグメントは、基本的なプログラミング動作として一度に書き込まれる最小数の素子を有してもよい。一般的に、１ページ以上のデータが１行の記憶素子に記憶される。１ページに１つ以上のセクターを記憶することが可能である。セクターには、ユーザデータとオーバヘッドデータが含まれる。オーバヘッドデータは、セクターのうちのユーザデータから計算されたエラー訂正符号（ＥＣＣ）を含んでいる。コントローラの一部が、データがアレイ中にプログラムされている間にＥＣＣを計算し、また、データがアレイから読み出されている間にこのＥＣＣを用いてデータをチェックする。代替例では、ＥＣＣおよび／または他のオーバヘッドデータを、自身が属するユーザデータとは異なったページ、さらには異なったブロックに記憶する。他の形態では、メモリデバイスの他の部分（たとえばステートマシン）がＥＣＣを計算可能である。
【００５０】
ユーザデータのセクターは、一般に、磁気ディスクドライブ中のセクターのサイズに対応して５１２バイトである。オーバヘッドデータは、一般的には追加の１６〜２０バイトである。多くのページでブロックを形成しているが、そのページ数は、たとえば、８ページ、３２ページ、６４ページ、さらにこれ以上である。
【００５１】
図８に、それぞれの記憶素子が２ビットのデータを記憶可能な場合の記憶素子アレイの閾値電圧区分を示す。Ｅは、消去された記憶素子に対する第１の閾値電圧区分を示している。Ａ、ＢおよびＣは、プログラムされた記憶素子に対する３つの閾値電圧区分を示している。１つの設計では、区分Ｅ中の閾値電圧は負であり、区分Ａ、ＢおよびＣ中の閾値電圧は正である。
【００５２】
異なる閾値電圧範囲のそれぞれが、データビットの集合の所定の値に対応している。記憶素子にプログラムされたデータとこの素子の閾値電圧レベルとの間の具体的な関係は、素子に対して採用されるデータ符号化スキームによって異なる。１つの例では、“１１”を閾値電圧範囲Ｅ（状態Ｅ）に割り当て、“１０”を閾値電圧範囲Ａ（状態Ａ）に割り当て、“００”を閾値電圧範囲Ｂ（状態Ｂ）に割り当て、“０１”を閾値電圧範囲Ｃ（状態Ｃ）に割り当てている。しかしながら、他のスキームを用いている実施形態もある。
【００５３】
記憶素子からデータを読み出すために３つの読み出し基準電圧Ｖｒａ、Ｖｒｂ、Ｖｒｃが使用される。記憶素子の閾値電圧がＶｒａ、ＶｒｂおよびＶｒｃより大きいか小さいかをテストすることによって、システムはその記憶素子がどの状態にあるかを判定することが可能である。３つの検証基準電圧Ｖｖａ、ＶｖｂおよびＶｖｃも示されている。記憶素子を状態Ａ、ＢおよびＣにプログラムする際には、本システムは、これらの記憶素子の閾値電圧がそれぞれＶｖａ、ＶｖｂまたはＶｖｃ以上であるかどうかをテストする。
【００５４】
一実施形態では、フルシーケンスプログラミングとして知られているが、記憶素子を、消去状態Ｅからプログラムされた状態Ａ、ＢおよびＣのうちのどれにでも直接的にプログラムすることが可能である（曲線矢印で示されている）。たとえば、プログラムされる記憶素子の母集団を最初に消去し、これで、この母集団中のすべての記憶素子が消去状態Ｅとなるようにする。一部の記憶素子が状態Ｅから状態Ａにプログラムされている間に、他の記憶素子を状態Ｅから状態Ｂにプログラムしたり、および／または、状態Ｅから状態Ｃにプログラムしたりする。
【００５５】
図９に、互いに異なった２つのページ、すなわち、下位ページと上位ページ分のデータを記憶するマルチステート記憶素子をプログラムする２パス式手法の例を示す。４つの状態、すなわち、状態Ｅ（１１）、状態Ａ（１０）、状態Ｂ（００）および状態Ｃ（０１）が示されている。状態Ｅの場合、両ページとも“１”を記憶している。状態Ａの場合、下位ページは“０”を記憶し、上位ページは“１”を記憶している。状態Ｂの場合、両ページとも“０”を記憶している。状態Ｃの場合、下位ページは“１”を記憶し、上位ページは“０”を記憶している。ここで、特定のビットパターンがそれぞれの状態に割り当てられているが、別のビットパターンを割り当ててもよい。第１のプログラミングパスでは、素子の閾値電圧レベルが、下位の論理ページにプログラムされるビットにしたがって設定される。このビットが論理“１”での場合、この閾値電圧は変更されないが、これは、前に消去されている結果として適切な状態にあるからである。しかしながら、このプログラムされるビットが論理“０”の場合、この素子の閾値レベルは、矢印７３０で示すように状態Ａにまで引き上げられる。これで、第１のプログラミングパスが完結する。
【００５６】
第２のプログラミングパスでは、素子の閾値電圧レベルが、上位の論理ページにプログラムさていれるビットにしたがって設定される。この上位論理ページビットが論理“１”を記憶するのであれば、なんらプログラミングされない。これは、素子が、下位ページビットのプログラミングに基づいて決まる状態ＥまたはＡの内の一方の状態にあるからである（状態ＥとＡの双方が“１”という上位ページビットを有している）。上位ページビットが論理“０”となるのであれば、閾値電圧はシフトする。第１のパスの結果、素子が消去状態Ｅのままであれば、第２のフェーズで、素子は、閾値電圧が引き上げられ矢印７３４で示すように状態Ｃ内に移るようにプログラムされる。素子が、第１のプログラミングパスの結果として状態Ａにプログラムされていた場合、記憶素子は、矢印７３２で示すように閾値電圧が引き上げられて状態Ｂ内に移るように、第２のパスでさらにプログラムされる。第２のパスの結果、下位ページのデータを変更することなく、上位ページの論理“０”を記憶するように指定された状態に素子をプログラムすることになる。
【００５７】
一実施形態では、１ページ全体を満たすのに十分なデータが書き込まれた場合に、フルシーケンス書き込みを実行するようにシステムをセットアップすることが可能である。１ページ全体を満たすのに十分なデータが書き込まれない場合、プログラミングプロセスは、受信したデータで下位ページをプログラムすることが可能である。さらにその後にデータが受信されると、本システムは、上位ページをプログラムする。別の実施形態では、このシステムは、下位ページをプログラムするモードで書き込みを始め、次に、ワード線の記憶素子の全部（またはほとんど）を満たすに十分なデータがその後に受信されればフルシーケンスプログラミングモードに変更することが可能である。このような実施形態のより詳細が、その全体を参照によりここに組み込む、発明者サージー・Ａ・ゴロベッツ（Ｓｅｒｇｙ  Ａ．  Ｇｏｒｏｂｅｔｓ）とヤン・リー（Ｙａｎ  Ｌｉ）による、２００４年１２月１４日に出願された「Ｐｉｐｅｌｉｎｅｄ  Ｐｒｏｇｒａｍｍｉｎｇ  ｏｆ  Ｎｏｎ−Ｖｏｌａｔｉｌｅ  Ｍｅｍｏｒｉｅｓ  Ｕｓｉｎｇ  Ｅａｒｌｙ  Ｄａｔａ」という名称の米国特許出願第１１／０１３，１２５号に開示されている。
【００５８】
図１０Ａ〜１０Ｃに、浮遊ゲート間のカップリングを低減する不揮発性メモリをプログラムする別のプロセスを開示する。このプロセスは、前のページの隣り合った記憶素子に書き込んだ後に、特定のページに対する特定の記憶素子に書き込み動作を実行する。一実施例では、不揮発性記憶素子はそのそれぞれが、異なる電圧区分を表す４つのデータ状態を用いて２ビットのデータを記憶する。例えば、状態Ｅが消去された状態であり、状態Ａ、ＢおよびＣがプログラムされた状態と仮定する。状態Ｅ、Ａ、ＢおよびＣのそれぞれはバイナリデータ状態を表す。例えば、状態Ｅはデータ１１を、状態Ａはデータ０１を、状態Ｂはデータ００を、状態Ｃはデータ１０を記憶している。隣接する状態の間で一方のビットだけが変化するので、これはグレイコーディングの例である。データをデータの物理状態に符号化する他の方法も用いることが可能である。それぞれの記憶素子が２ページ分のデータを記憶している。参照目的で、これらのページのデータを上位ページと下位ページと呼ぶが、別のラベルを付けることも可能である。状態Ａでは、下位ページはビット１を記憶し、上位ページはビット０を記憶する。状態Ｂでは、双方のページはビット０を記憶する。状態Ｃでは、下位ページはビット０を記憶し、上位ページはビット１を記憶する。プログラミングプロセスは、２つのステップを有している。第１のステップでは、下位ページをプログラムする。この下位ページがデータ１の状態にとどまることになっている場合、記憶素子の状態は状態Ｅのままである。このデータが０にプログラムされることになっている場合、記憶素子が中間または暫定的な状態ＩＮＴにプログラムされるように、記憶素子の閾値電圧ＶＴＨを引き上げる。図１０Ａに、状態Ｅから状態ＩＮＴに記憶素子をプログラムする様子を示す。状態ＩＮＴは中間状態である。したがって、図１０Ｃに示すように検証ポイントを、Ｖｖａと同等の低さであり、かつＶｖｂより低いＶｖｂ’で示す。
【００５９】
１つの形態では、ある記憶素子が状態Ｅから状態ＩＮＴにプログラムされると、隣り合ったワードライン上のその隣接する記憶素子がその下位ページに関してプログラムされる。その隣接する記憶素子をプログラムした後で、浮遊ゲート間のカップリング作用によって、状態ＩＮＴである着目している記憶素子の見かけ上の閾値電圧が引き上げられる。これによって、状態ＩＮＴの閾値電圧区分の幅を図１０Ｂにおいて閾値電圧区分７５０として示す区分にまで広げる作用を持つ。この閾値電圧区分の見かけ上の拡大は、次のプログラミングステップにおいて上位ページをプログラムするときに修正される。
【００６０】
図１０Ｃは、上位ページをプログラムするプロセスを示している。記憶素子が消去された状態Ｅにあって上位ページが１のままとどまるのであれば、この記憶素子は状態Ｅのままである。記憶素子が状態Ｅにあってその上位ページデータを０にプログラムすることになっているのであれば、この記憶素子の閾値電圧を引き上げて、素子が状態Ａに遷移するようにする。記憶素子が中間閾値電圧区分７５０を示す状態ＩＮＴ７５０（下位ページは「０」）にあって、上位ページデータがデータ０になることになっている場合、この記憶素子の閾値電圧を必要であれば引き上げて、記憶素子が状態Ｂとなるようにする。通常、状態ＩＮＴと状態Ｂは、状態ＩＮＴにある記憶素子のいくつかが状態図Ｂにも存在するようにオーバーラップする。これらの記憶素子は、状態Ｂに遷移するための追加のプログラムを必要としない。状態Ｂではなく状態ＩＮＴにある記憶素子は、状態Ｂに遷移するための追加のプログラムを必要とする。更に、中間閾値電圧区分が７５０かつ上位ページのデータが１にプログラムされる予定の記憶素子が状態ＩＮＴにある場合、該記憶素子は最終状態Ｃにプログラムされる。より詳細には、これらの素子は状態Ｂの外部にある、あるいは状態Ｂとオーバーラップする状態ＩＮＴから状態Ｃへ遷移する。
【００６１】
上に述べたプロセスによって、浮遊ゲート同士間の結合による影響が軽減されるが、これは、所与の記憶素子の見かけ上の閾値電圧に影響を及ぼすのは、隣接する記憶素子の上位ページのプログラミングだけであるからである。代替の状態符号化の例としては：状態Ｅがデータ１１を記憶し、状態Ａがデータ０１を記憶し、状態Ｂがデータ「１０」を記憶し、状態Ｃがデータ「００」を記憶して、新しいＬＭコードを形成する。図１０Ａ〜１０Ｃに４つのデータ状態と２ページ分のデータに関する例を示しているが、教示されている概念は、状態の数が４以外でありページの数が２とは異なる他の実施例にも適用可能である。さまざまなプログラミング方式と浮遊ゲート同士間の結合とに関するさらなる詳細は、２００５年４月５日に出願された「Ｃｏｍｐｅｎｓａｔｉｎｇ  Ｆｏｒ  Ｃｏｕｐｌｉｎｇ  Ｄｕｒｉｎｇ  Ｒｅａｄ  Ｏｐｅｒａｔｉｏｎｓ  Ｏｆ  Ｎｏｎ−Ｖｏｌａｔｉｌｅ  Ｍｅｍｏｒｙ」という名称の米国特許出願第１１／０９９，１３３号に見つけることが可能である。
【００６２】
スマート検証
【００６３】
不揮発性記憶装置をプログラミングしながら検証を開始する開始点は、従来は、デバイスエンジニアによって決定され、場合によってはＲＯＭフューズパラメータと呼ばれていたパラメータによって固定されていた。この開始点は、多くのプログラミングパルスが印加された後での酸化物の捕獲または記憶素子の酸化物中の欠陥のため未使用部品よりプログラム速度が速い使用済み部品の最悪の場合を考慮したものである。このパラメータの設定値は一般には、この使用済み部品が過剰プログラムされないことを保証するように設定される。しかしながら、このような設定値では、プログラム速度が遅い未使用デバイスは、いずれかのビットが検証レベルをパスしてこれ以上のプログラミングパルスを受信しないようにロックアウトされるほど十分にプログラムされる以前に、多くのプログラミングパルスとプログラム検証パルスを受ける。したがって、結果として、プログラミング時間や電力消費の増加を含む非効率が起こる。
【００６４】
図１１に、プログラム検証を開始すべき時点を適応的に決定しながらも、順次プログラミングを用いて不揮発性記憶素子をプログラミングする際の事象の時間系列を示す。スマート検証プロセスは、固定パラメータを用いてプログラム検証プロセスの開始点を制御するときの非効率の多くを克服する。それどころか、スマート検証プロセスは、それぞれのページに対するそれぞれの検証プロセスの開始時点を、独立してこのページ中でのプログラミングの速度にしたがって決定する。たとえば、記憶素子は、消去状態Ｅから直接に状態Ａ、ＢまたはＣのいずれかにプログラムされる（図８を参照）。図１１では、時間系列が時点ｔｓ、ｔ０、ｔ１、ｔ２、ｔ３、ｔ４、ｔ５、ｔ６およびｔ７を含んでいる。記憶素子に印加されるプログラミングパルスＶｐｇｍの振幅は、より小さい振幅を持つプログラミングパルス同士間の検証動作パルスまたは検証パルスと共にさまざまな時点で示される。検証すべき状態のそれぞれに対して１つの検証パルスが、プログラムパルス同士間で印加されることに留意されたい。たとえば、素子Ａだけを検証するときには１つの検証パルスが印加され、素子ＡとＢまたは素子ＢとＣを検証するときには２つのパルスが印加される。
【００６５】
検証Ａ、即ち、状態Ａにある記憶素子の検証の開始時点は、プログラミング開始時ｔｓ後のプログラミングパルスの数であるＲＯＭフューズパラメータＮＡによって決定することが可能である。一部の実施形態では、ＮＡはゼロであり、最初のプログラミングパルスの後で検証が開始される。それぞれのプログラム検証Ａのパルスの直後にまたはこの一部として、検証プロセスが実行されて、プログラミングするように選択されたいずれかの記憶素子が、その目標とするプログラム状態とは無関係に、検証Ａのレベル（図８〜１０のＶｖａ）をパスするかどうかがチェックされる。少なくとも１つのビット線が状態Ａにあることが検証された後に、これに対応する内部信号ＰＣＶＡ＿ＦＬＡＧがｔ１で高レベルとなる。これで、検証Ｂの開始時点ｔ２を、ｔ１後のプログラムパルスの指定された数ＮＢをカウントすることによって決定することが可能である。ＮＢの適切値は、検証レベルＡと検証レベルＢの電圧差をワード線プログラム電圧ステップサイズ（連続するプログラミングパルス同士間の振幅の差）で除算した値に基づいて推定して、ＲＯＭフューズパラメータとして記憶することが可能である。ｔ３で別の内部信号ＰＣＶＢ＿ＦＬＡＧが立ち上がっており、これは、少なくとも１つのビットがその目標とするプログラム状態とは無関係に検証レベルＢをパスしたことを示す。検証Ｃの開始時点ｔ５を、ｔ３後のプログラムパルスの指定された数ＮＣをカウントすることによって決定することが可能である。ＮＣの適切値は、検証レベルＢと検証レベルＣの電圧差をワード線プログラム電圧ステップサイズで除算した値に基づいて推定して、ＲＯＭフューズパラメータとして記憶することが可能である。時点ｔ４、ｔ６およびｔ７は、それぞれレベルＡ、ＢおよびＣでの検証が完了したときを示している。状態Ａのデータが存在せず、したがって、内部信号ＰＣＶＡ＿ＦＬＡＧが決して立ち上がらない特殊な場合は、プログラミングの開始時に検出され、この目的のための別の特定的な専用のＲＯＭフューズパラメータＰＣＶＢ＿ＲＯＭを用いて、状態Ｂの検証の開始時点を決定することが可能である。同様に、状態Ｂのデータが存在しない場合は、さらに別の専用のＲＯＭフューズパラメータＰＣＶＣ＿ＲＯＭを用いて、状態Ｃの検証の開始時点を決定することが可能である。
【００６６】
図１２Ａと１２Ｂに、プログラム検証を開始すべき時点を適応的に決定しながらも、ツー・パス（下位ページ／上位ページ）プログラミングシーケンスを用いて不揮発性記憶素子をプログラミングする際の事象の時間系列を示す。図９のツー・パスプログラミング方法に従うと、第１のパスの際には、消去状態Ｅから状態Ａへのプログラミングしか発生しない。図１２Ａでは、検証Ａの開始を示すＮＡだけが用いられている。上位ページをプログラミングする第２のパスでは、状態Ｂが状態Ａからプログラムされ、状態Ｃが状態Ｅからプログラムされる。このプログラミングサイクル中では状態Ａのデータが存在しないため、ＰＣＶＢ＿ＲＯＭを用いて検証を開始し、状態Ｃの検証の開始時点ｔ３は、スマート検証プロセスを用いて決定してもよい。図１２Ｂを参照すると、ｔ０でプログラミングは開始されるが、このとき、プログラミングパルス同士間には検証パルスは存在せず、ｔ１とｔ３間で検証Ｂが発生するだけである。
【００６７】
図１０Ａ〜１０Ｃの方法に従ってプログラミングするとき、第２のパスの際、状態ＩＮＴにある記憶素子を同時に、たとえば、一連のパルスがこれら記憶素子に印加される同じプログラミングサイクルで状態ＢとＣにプログラムすることが可能である。さらに、状態Ｂは状態ＩＮＴとオーバーラップする。これらの場合や以下に記載する他の場合では、状態ＩＮＴから高い状態Ｃにプログラムされる素子の検証は、他の素子がいつ状態ＩＮＴから低い状態、たとえば状態ＩＮＴから状態Ｂにプログラムされたかに基づいて適応的に開始することが可能である。この技法は、当業者には明らかなように広範囲にわたって適用可能である。
【００６８】
下位ページがプログラムされた後では、状態ＢまたはＣにプログラムすべきどのビットもその閾値電圧はＩＮＴ区分７５０の内部に存在する。次の上位ページのプログラミングの際、状態Ａは状態Ｅからプログラムされ、状態ＢとＣは状態ＩＮＴからプログラムされる。しかしながら、この場合、少なくとも１つのビットが検証Ａをパスしたことを検証しても、すでに状態ＩＮＴにあるビットと間違えられる可能性がある。これが発生するのは、従来の検知方法では、単に、閾値がＶＶＡより大きいビットがあるかを判定しているだけであり、したがって、すでに状態ＩＮＴにあるビットが、状態Ａにちょうど入ってくる新しいビットと一緒に検知されるからである。この問題を克服する１つの方法は、状態Ｅから状態Ａに移動するビットだけの移動を検出することである。これは、状態Ａにプログラムされるビットだけを選んで、状態ＢやＣなどの高い状態にプログラムされるすでに状態ＩＮＴにあるビットを無視することによって実行可能である。検証Ａ以前では、プログラムデータＡを持つビット線だけを充電して検知するため、検証Ａをパスした少なくとも１ビットの情報が、状態Ａにしかプログラムされないビットから得られる。この目的のためにどのビットを用いるかの決定は、プログラミングの開始時にたった１回実行してもよい。このようにして得られた情報を用いて、たとえば、次のＮＢ個のプログラミングパルスにわたる検証Ｂをスキップすることによって、以前に述べたと同じ方法で検証Ｂの開始時点を決定する。こうする替わりに、いつ最初のビットが状態Ａに到達するかを監視するためにどのビットを用いるかを、プログラミングパルス毎に決定して、専用のラッチがこの情報をプログラミングサイクル全体にわたって保持する必要性を回避するようにしてもよい。この目的のためには、メモリデバイスの１つ以上の管理回路が、状態Ａにプログラムされるべき記憶素子に対応付けられるセンス増幅器を制御して、これらの記憶素子の電圧閾値だけを読み出して、同時に、他のすべてのセンス増幅器を、他の記憶素子の電圧閾値を読み出さないように禁止すればよい。これを達成するために必要な回路の詳細は、前に参照した米国特許出願第１１／０２６，５３６号と第１１／０９７，５１７号に含まれている。
【００６９】
検証Ｃの開始時点を決定する際に、すでに状態ＩＮＴにあるビットが存在すると、検証Ｂをパスした少なくとも１つのビットを検出することが問題となる。この問題を解決するにはさまざまな方法がある。１つの方式は、上記のようにプログラム検証Ａの閾値と交差するビットだけを用いる状態Ｅからの１ビット検出に基づいて検証Ｃの開始時点を決定する方式である。ここでは、これらのビットの閾値のプログラムパルス毎の変化は一定であって、状態ＩＮＴから状態Ｃへの移動を表しており、したがって、この変化を用いて状態Ｃに移動するビットの挙動を予測することが可能であるというのが暗黙の前提とされている。これは通常は、プログラミングパルスが数個印加された後では有効であるが、状態Ｅから移動する「高速ビット」は予期した以上に迅速に移動することがある。
【００７０】
ＮＣ個のパルスのカウントを始める開始時点を決定する好ましい方式は、図１３Ａに示すように低位にプログラムされた側から検証Ｂレベルをパスしている状態Ｂの素子を検出することである。ＩＮＴ区分７５０は、状態Ｂとオーバーラップしており、これで、一部のビットの閾値がＶＨ（図１０ＣのＶＶｂと等価）を上回り、したがってすでに状態Ｂにあるようになっている様子が示されている。閾値がＶｉにあるビットなどの他のビットは、次いでプログラミングパルスを印加されると移動して、ついにはＶＨを超える。検証Ｂレベルをパスしたビットを検出するためには、検証Ｂレベル未満のビットだけを特定して、さらなるプログラミングパルスが印加されるに連れて検証Ｂレベルを超えて遷移するのを監視しなければならない。これらのビットを選ぶ１つの方法は、少なくとも１つのビットが検証Ａレベルをパスした後ですべてのビット線に対する通常の検証Ｂレベルより低い閾値ＶＬで１つの特殊な検証Ｂを実行することである。状態Ａだけが検証されるＮＡ個のプログラミングパルスの印加後、検証Ｂを通常の検知ポイントＶＶＢ（図１３ＡではＶＨとして表されている）で実行する。閾値がＶＬ未満のビットを監視して、これらのうちの１つがいつＶＨレベルをパスしたかを判定する。
【００７１】
このようなビットを選んでＮＣ個のパルスのカウントをいつ始めるかを決定する代替方法は、ＩＮＴ母集団中で（ＶＬではなく）ＶＨ未満のすべてのビットを選んで、少し高い検証レベルＶ'Ｈをそれが横断して移動するのを監視して、ＶＨより少し下の閾値を持つあらゆるビットが実際に移動し、また、検出増幅器に関連するノイズによって簡単には検出されないことを保証することである。Ｖ'ＨはＶＨより２０ｍＶから３０ｍＶだけ高くなることがある。この方式は、ＶＬを、その値が他の考慮によって決定されるような（粗／密プログラミングなどの）他の目的に用いる際に好ましい。
【００７２】
図１３Ｂに示すように、ＶＬとＶＨを選んで、粗／密プログラミング技法を実施することが可能である。図１３Ｂは、記憶素子の閾値電圧が時間とともに変化する様子を示し、図１３Ｃは、プログラムされている記憶素子に対応するビット線に印加されるビット線電圧を示している。記憶素子のプログラミングは、そのビット線電圧レベルを増加させることによって減速させることが可能であり、これによって、印加されるプログラミング電圧パルスＶｐｇｍによる影響が弱められる。図１３ＣではＶ１として示されているこの電圧レベルの大きさは典型的には０．３〜０．７ボルトの範囲にある。これによって、記憶素子の閾値電圧を、粗プログラミング中に最初により迅速に所望のレベルまで増加させ、次に、密プログラミング中によりゆっくりと増加させることが可能となる。粗プログラミングは電圧閾値がＶＬ未満のときに発生し、密プログラミングは電圧閾値がＶＬとＶＨ間にあるときに発生する。記憶素子は、その電圧閾値レベルがＶＨを超えれば、禁止モードとなって、これ以上プログラミングと検証されないようにロックアウトされる。ＶＬとＶＨは、粗／密プログラミング技法に対応付けられる必要はないが、代わりに適切な値として選ぶことが可能である。そのうえ、互いに異なったＶＬとＶＨの値を、マルチステート記憶素子の互いに異なった状態、たとえば状態Ａ、ＢおよびＣに対応付けて、さまざまな状態を粗／密プログラミングすることが可能である。このタイプの粗／密プログラミングが、その全体を参照によりここに組み込む米国特許第６，６４３，１８８号に記載されている。
【００７３】
ＶＬを粗／密プログラミングのために用いる１つの方式では、ＶＨでの特殊な検証を、ＰＣＶＡ＿ＦＬＧが高レベルになった直後にたった１回だけ実行する。プログラムデータＢを持ったビット線だけが、この検証のために選択される。この１回の特殊検証の後では、プログラム検証シーケンスは、次のＮＢ個のサイクルに対して検証Ａだけを用いて継続される。状態Ｂでの検証が開始された後では、状態Ｂにある１つのビットが検出されるまで、Ｖ'Ｈ検証レベルを用いる。検証Ｂを実行するというこの特殊な方法を用いて、以前の特殊なＶＨ検証で特定されたビットだけを監視して１ビット検出のために用いて、１ビットが検証Ｂレベルをパスしたことを示すＰＣＶＢ＿ＦＬＧ信号を判定する。次に、このフラグを用いて、検証Ｃを開始する開始時点を予測することが可能である。ＰＣＶＢ＿ＦＬＧが検出された後では、図１５を以下に解説する際に説明するように、閾値電圧がＶＨ未満であると特定されなかった残りの状態Ｂの記憶素子に対して、通常のプログラム検証Ｂが実行される。いったん状態Ｂの検証が始まると、それぞれの状態Ｂの検証サイクルに、ＶＬでの検証とＶＨ（またはＶ'Ｈ）での別個の検証が組み込まれる。ＶＬというワード線電圧を用いる検証では、状態Ｂにプログラムされるがまだこの状態にはないビットを２つのカテゴリ、すなわち、閾値がＶＬ未満であり、次のプログラミングサイクル中ではプログラミング全電圧を受けるビットと、閾値がＶＬとＶＨ（またはＶ'Ｈ）間にあって、次のプログラミングサイクル中に減じられたプログラミング電圧を受けるビットとに分割する。
【００７４】
図１４に、下位ページのデータを用いて不揮発性記憶素子をプログラミングする際の事象の時間系列を示す。ＩＮＴ状態にプログラムされるべき記憶素子にプログラミング電圧パルスを印加することによって、プログラミングはｔ０で開始される。ＮＩＮＴ個のパルスが印加された後では、記憶素子に対する検証がｔ１で始まる。ｔ２で、これらビットのうちの１つが、消去状態からＩＮＴ状態に遷移したことが検証される。ｔ３で、ＩＮＴ状態のプログラムされるべき記憶素子のビットのすべてが、この状態に到達したことが検証され、下位ページデータのプログラミングが完結する。
【００７５】
図１５に、図１４で発生する時間系列に続いて、上位ページのデータを用いて不揮発性記憶素子をプログラミングする際の事象の時間系列を示す。ある例では、状態Ｅから状態Ａにプログラムされる記憶素子と、ＩＮＴ状態から状態ＢまたはＣにプログラムされる記憶素子にプログラミングパルスが印加される。ｔ０で、状態Ａにプログラムされる記憶素子の検証が始まる。このプログラミングパルスの初期振幅は、典型的には、図１４の開始時で用いられる値未満か或いは同じである。その結果、ＩＮＴ状態にあるビットの分布がこれらのプログラミングパルスによって影響される程度はほんの最小程度のものとなるが、これは、これらのビットがこの状態に到達するのにきわめて高いパルス振幅を要したからである。ｔ１では、状態Ａにある最初のビットを検証する。また、ｔ１では、状態Ｂにプログラムされる予定であり、現在の閾値がＶＨ未満である記憶素子を、追加の特殊なプログラミングパルスを印加することによって特定する。これら記憶素子の特定条件はＢ＜ＶＨであるとされるが、この条件は状態Ａの最初のビットの検証のそれと一致する必要はないが、一般に、記憶素子がＩＮＴから状態Ｂに遷移するものと予期される以前に発生する。ｔ２でＮＢ個のプログラミングパルスをスキップした後、前に特定された記憶素子を追跡して、検証レベルとしてＶ'Ｈを用いて、これら記憶素子のうちの最初の素子がいつ状態Ｂに遷移したことが検証されたかを判定する。この時点で、状態Ｂにプログラムされる記憶素子の残りの素子に対する検証へと進む。これら記憶素子の一部は、状態ＢとオーバーラップするＩＮＴの部分にあり、したがって、即座に検証される（または、Ｂ＜ＶＨという特定の一部としてロックアウトされている）。ＮＣ個のプログラミングパルスをスキップした後、状態Ｃにプログラムされる記憶素子に対してｔ５で検証が始まる。したがって、状態Ｃにある素子の検証の開始は、状態Ｂの素子がいつＶＨ未満からＶ'Ｈに遷移したか、すなわち、一般的には、ＩＮＴ区分内部の状態Ｂ区分の外の電圧閾値から、ＶＨより大きい検知および／またはノイズのマージンレベルを用いて決定された状態Ｂ区分中の電圧閾値にいつ遷移したかの判定に基づいて適応的に設定される。Ａ、ＢおよびＣのレベルでの検証は、それぞれ例示の時点ｔ４、ｔ６およびｔ７で完了されている。
【００７６】
（図１３Ｃの粗／密プログラミングを用いない場合の）可能な別の方式では、最初の特殊検証ＢはＶＨでだけのものであり、この検証レベルをパスしたビットはロックアウトされるが、これは上記の方式の場合と同じである。検証Ｂの開始点の後では、ＶＬからＶＨにパスするあらゆるビットを監視して、判断目的で１ビット検出を判定する。
【００７７】
ここに記載した技法は、他のさまざまなプログラミングの事例に適用可能である。たとえば、４つのバイナリデータレベルを有するマルチステート記憶素子を解説したが、このデータレベル数より少ないまたは多いレベルを有する記憶素子を用いることも可能である。そのうえ、プログラミングは、２ページ分のデータを用いて発生する必要はなく、このページ数より少なくても多くても、さらに、ページに基づくものではないプログラミング方式を用いても可能である。
【００７８】
図１６Ａと１６Ｂに、適応的な検証を用いて、不揮発性記憶装置をプログラミングするプロセスを説明するフローチャートを示す。これらのプロセスは、たとえば、異なるページのデータに基づいて異なる複数のワードラインを並列にプログラムするときに実行することが可能である。図１４も参照されたい。図１６Ａでは、ステップ８０２で、たとえば下位ページのデータにしたがってプログラミングが始まる。ステップ８０４で、１つの例示の実施例では、ＩＮＴ状態にプログラムされる記憶素子に対してプログラミング（Ｖｐｇｍ）パルスが印加される。次いで、状態ＢやＣにプログラムされる素子が存在する。この下位ページのデータは０または１だけであるが、ここで０は、プログラミングが発生することを意味する。ステップ８０６で、ＮＩＮＴ個のパルスの後では、記憶素子がＩＮＴ状態に到達したかどうかを判定するための検証が始まる。ステップ８０８で、ＩＮＴ状態にプログラムされる素子がすべてＩＮＴ状態に到達したときに、プログラミングは終了する。
【００７９】
図１６Ｂ中、ステップ８１０で、上位ページのデータにしたがったプログラミングが始まる。図１５も参照のこと。ステップ８１２で、Ｖｐｇｍパルスが、状態ＡやＢやＣにプログラムされる素子に対して印加される。ステップ８１４で、状態Ａにプログラムされる記憶素子に対する検証が始まる。ステップ８１６で、最初の記憶素子が状態Ａに到達すると、特定処理を実行して、状態Ｂにプログラムされる予定であって、現在は状態Ｂに対応する低い電圧閾値であるＶＨ未満の電圧閾値ＶＴＨを有する１つ以上の素子を特定する。ステップ８１８で、ＮＢ個のプログラミングパルスの後で、特定された状態Ｂの素子の検証が始まる。ステップ８２０で、特定された素子のうちの１つ以上がＶＨ未満からＶ'Ｈに遷移すると、状態Ｂにプログラムされる他の記憶素子の検証が開始される。ステップ８２２で、ＮＣ個のプログラミングパルスが印加された後、状態Ｃにプログラムされる素子の検証が始まる。ステップ８２４で、状態Ａ、ＢおよびＣにプログラムされる記憶素子がそれぞれの状態に到達したことが検証されたとき、プログラミングは終了する。
【００８０】
図１７に、下位ページと上位ページのデータを用いて不揮発性記憶装置をプログラミングするプロセスを説明するフローチャートを示す。図１６のプロセスは図１７のプロセスに統合することが可能である。このプロセスは、ステップ９００に示すように、データをプログラムする要求を受信するとこれに応答して開始することが可能である。ステップ９０２で、プログラムすべきメモリの適切な部分を選択する。ステップ９０４で、サイクルカウントをインクリメントする。プログラミングサイクルの数のカウント値であるこのサイクルカウントは、フラッシュメモリアレイ、ステートマシン、コントローラまたは別の場所に記憶して、記憶素子の使用状況を追跡することが可能である。１つの実施形態では、このサイクルカウントは、ステートマシンと結び付いているレジスタに記憶される。ステップ９０６で、選択されたメモリ部分をオプションとして事前プログラムするが、これは、フラッシュメモリが消耗した場合に備えたものである。選択されたセクターまたはページ中のすべての記憶素子を、同じ閾値電圧範囲にプログラムする。ステップ９０８で、次に、プログラムされるすべての記憶素子を消去する。たとえば、この処理では、古い記憶素子を状態Ｅに移動させることが含まれる。ステップ９１０で、ソフトプログラミングによって、消去プロセスの間にこれら記憶素子の一部の素子の閾値電圧が区分Ｅより下の値にまで下がる可能性があるという問題を解決する。このソフトプログラミングプロセスでは、記憶素子の閾値電圧が閾値電圧区分Ｅの範囲内にまで上昇するように、プログラム電圧パルスを記憶素子に印加する。言い換えれば、過剰消去されたメモリビットをソフトにプログラムして、消去母集団を引き締める。
【００８１】
ステップ９１２で、次のデータに従ったプログラミングが始まる。たとえば、このデータは下位ページから得られたものでも上位ページから得られたものでもよい。ステップ９１４で、本システムは、初期プログラムパルスの大きさを、たとえば、電荷ポンプを適正にプログラミングすることによって設定する。ステップ９１６で、プログラムカウントＰＣをゼロに初期設定する。ステップ９１８で、プログラムパルスを適切なワード線に印加する。ステップ９２０で、そのワード線上にある記憶素子が目標とする閾値電圧レベルに到達したかどうかを検証する。すべての記憶素子が目標閾値電圧レベルに到達して、その検証が成功したら（ステップ９２２）、パスステータスが設定され（ステップ９３２）、次のデータのプログラミングがステップ９１２で始まる。前述したように、追加のプログラミングと検証が発生する。いったんすべての記憶素子がプログラムされたことがデータに基づいて検証されたら、このプログラミングプロセスは成功裏に終了したことになる。このプログラミングは、すべてのデータがプログラムされるまで、連続するページ番号であるページ０、１、２、３などによって進行することが可能である。
【００８２】
ステップ９２２で検証された記憶素子が全数ではなかった場合、ステップ９２４で、プログラムカウントＰＣがたとえば２０といった制限値ＰＣ＿ｍａｘまたは、たとえばページに依存し得る適応制限値未満であるかどうかを判定する。プログラムカウントがＰＣ＿ｍａｘ未満でなければ、プログラミングプロセスはフェイルしたことになる（ステップ９３４）。プログラムカウントがＰＣ＿ｍａｘ未満であれば、ステップ９２６で、次のパルスに対してプログラム電圧信号Ｖｐｇｍの大きさをステップサイズ（たとえば０．３Ｖ）だけ増加して、プログラムカウントＰＣをインクリメントする。目標閾値電圧に到達したこれらの記憶素子は、現在のプログラミングサイクルの残りの部分に対するプログラミングからロックアウトされることに留意されたい。このプロセスは、記憶素子のそれぞれに対してパスステータスまたはフェイルステータスが宣言されるまで繰り返される。
【００８３】
本発明に関する前述の詳細な説明は、例証と説明のために提示されたものである。本発明を開示する形態そのもので尽きたり、これに限るということを意図するものではない。上記の教示に照らし合わせて、多くの修正例や変更例が可能である。説明した実施形態は、本発明とその実際の応用例の原理がもっともよく説明され、これによって、他の当業者が、想定される特定の用途に適しているさまざまな実施形態で、また、さまざまな修正をもって、本発明を利用することが可能となるように選ばれたものである。本発明の範囲は添付した特許請求の範囲によって定義されることを意図するものである。
【図面の簡単な説明】
【００８４】
【図１】図１は、ＮＡＮＤストリングの上面図である。
【図２】図２は、図１のＮＡＮＤストリングの等価回路図である。
【図３】図３は、図１のＮＡＮＤストリングの断面図である。
【図４】図４は、３つのＮＡＮＤストリングを示す回路図である。
【図５】図５は、不揮発性メモリシステムのブロック図である。
【図６】図６は、図５の不揮発性メモリシステムのセンスブロックを示すブロック図である。
【図７】図７は、不揮発性メモリアレイのブロック図である。
【図８】図８は、消去状態からプログラム状態へ直接プログラミングされるマルチステートデバイスの閾値電圧区分の組の例示を示す図である。
【図９】図９は、消去状態からプログラム状態にツー・パスでプログラミングされるマルチステートデバイスの閾値電圧区分の組の例示を示す図である。
【図１０Ａ】図１０Ａは、さまざまな閾値電圧区分を示し、不揮発性メモリをプログラミングするプロセスを説明する図である。
【図１０Ｂ】図１０Ｂは、さまざまな閾値電圧区分を示し、不揮発性メモリをプログラミングするプロセスを説明する図である。
【図１０Ｃ】図１０Ｃは、さまざまな閾値電圧区分を示し、不揮発性メモリをプログラミングするプロセスを説明する図である。
【図１１】図１１は、プログラム検証をいつ開始すべきであるかを適応的に決定しながらも、順次プログラミングを用いて不揮発性記憶素子をプログラミングする際の事象の時間系列を示す図である。
【図１２Ａ】図１２Ａは、プログラム検証をいつ開始すべきであるかを適応的に決定しながらも、ツー・パス（下位ページ／上位ページ）プログラミングシーケンスを用いて不揮発性記憶素子をプログラミングする際の事象の時間系列を示す図である。
【図１２Ｂ】図１２Ｂは、プログラム検証をいつ開始すべきであるかを適応的に決定しながらも、ツー・パス（下位ページ／上位ページ）プログラミングシーケンスを用いて不揮発性記憶素子をプログラミングする際の事象の時間系列を示す図である。
【図１３Ａ】図１３Ａは、不揮発性記憶素子の遷移を追跡するプロセスを説明する図である。
【図１３Ｂ】図１３Ｂは、ビット線禁止電圧を設定することによってどのように粗プログラミングと密プログラミングが達成されるかを示す時系列を示す図である。
【図１３Ｃ】図１３Ｃは、ビット線禁止電圧を設定することによってどのように粗プログラミングと密プログラミングが達成されるかを示す時系列を示す図である。
【図１４】図１４は、下位ページのデータを用いて不揮発性記憶素子をプログラミングする際の事象の時間系列を示す図である。
【図１５】図１５は、図１４の時間系列に続いて、上位ページのデータを用いて不揮発性記憶素子をプログラミングする際の事象の時間系列を示す図である。
【図１６Ａ】図１６Ａは、適応検証を用いて、下位ページのデータに基づいて不揮発性記憶装置をプログラミングするプロセスを説明するフローチャートを示す図である。
【図１６Ｂ】図１６Ｂは、適応検証を用いて、上位ページのデータに基づいて不揮発性記憶装置をプログラミングするプロセスを説明するフローチャートを示す図である。
【図１７】図１７は、下位ページと上位ページのデータを用いて不揮発性記憶装置をプログラミングするプロセスを説明するフローチャートを示す図である。
【図１】
2009514138.tif 000003
【図２】
2009514138.tif 000004
【図３】
2009514138.tif 000005
【図４】
2009514138.tif 000006
【図５】
2009514138.tif 000007
【図６】
2009514138.tif 000008
【図７】
2009514138.tif 000009
【図８】
2009514138.tif 000010
【図９】
2009514138.tif 000011
【図１０Ａ】
2009514138.tif 000012
【図１０Ｂ】
2009514138.tif 000013
【図１０Ｃ】
2009514138.tif 000014
【図１１】
2009514138.tif 000015
【図１２Ａ】
2009514138.tif 000016
【図１２Ｂ】
2009514138.tif 000017
【図１３Ａ】
2009514138.tif 000018
【図１３Ｂ】
2009514138.tif 000019
【図１３Ｃ】
2009514138.tif 000020
【図１４】
2009514138.tif 000021
【図１５】
2009514138.tif 000022
【図１６Ａ】
2009514138.tif 000023
【図１６Ｂ】
2009514138.tif 000024
【図１７】
2009514138.tif 000025
【手続補正書】
【提出日】平成20年9月3日(2008.9.3)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
不揮発性記憶素子の集合中で、それぞれの電圧閾値が第１の電圧閾値区分内に存在する不揮発性記憶素子の少なくとも第１と第２の部分集合を、前記第１の部分集合中の前記不揮発性記憶素子のうちの少なくとも１つの素子の電圧閾値が前記第１の電圧閾値区分とオーバーラップする第２の電圧閾値区分に遷移し、前記第２の部分集合中の前記不揮発性記憶素子のうちの少なくとも１つの素子の電圧閾値が前記第１と第２の電圧閾値区分の外部にある第３の電圧閾値区分に遷移するようにプログラミングするステップと、
前記第１の部分集合の前記不揮発性記憶素子のうちの前記少なくとも１つの素子の電圧閾値が前記第２の電圧閾値区分に遷移した時点を判定するために当該素子の電圧閾値を追跡するステップと、
前記追跡ステップの処理に応答して、前記第２の部分集合の前記不揮発性記憶素子のうちの前記少なくとも１つの素子の電圧閾値が前記第３の電圧閾値区分に遷移した時点を検証するための検証プロセスをいつ開始するかを決定するステップと、
を有することを特徴とする不揮発性記憶装置をプログラミングする方法。
【請求項２】
前記検証プロセスが、前記第１の部分集合の前記不揮発性記憶素子のうちの前記少なくとも１つの素子の前記電圧閾値が前記第２の電圧閾値区分に遷移したことが判定された後に、所定の数の電圧パルスが前記第２の部分集合の不揮発性記憶素子に印加された後で開始されることを特徴とする請求項１に記載の方法。
【請求項３】
前記追跡するステップは、前記第１の部分集合の前記不揮発性記憶素子のうちの前記少なくとも１つの素子の電圧閾値が、前記第２の電圧閾値区分よりも低位にある低電圧閾値を過ぎ、続いて、前記第２の電圧閾値区分内にある高電圧閾値を過ぎることを追跡することを含むことを特徴とする請求項１に記載の方法。
【請求項４】
前記第１の部分集合の前記不揮発性記憶素子のうちの前記少なくとも１つの素子を、当該素子の電圧閾値が前記低電圧閾値未満であるときには高速プログラムモードでプログラミングし、当該素子の電圧閾値が前記低電圧閾値と前記高電圧閾値の間にあるときには低速プログラムモードでプログラミングするステップをさらに含むこと特徴とする請求項３に記載の方法。
【請求項５】
前記高電圧閾値が、前記第２の電圧閾値区分の下限界値をマージンだけ超えていることを特徴とする請求項３に記載の方法。
【請求項６】
前記追跡するステップは、前記第１の部分集合の前記不揮発性記憶素子のうちのどの素子が、前記第２の電圧閾値区分より低位の電圧閾値を有しているかを判定することによって、前記第１の部分集合の前記不揮発性記憶素子のうちの前記少なくとも１つの素子を特定するステップを含んでいることを特徴とする請求項１に記載の方法。
【請求項７】
前記第２と第３の閾値電圧区分が互いに異なるバイナリデータ状態を表すことを特徴とする請求項１に記載の方法。
【請求項８】
前記検証プロセスが、前記第１の部分集合の前記不揮発性記憶素子のうちのいずれかの素子の電圧閾値が前記第２の電圧閾値区分に遷移したとの判定に応答して開始されることを特徴とする請求項１に記載の方法。
【請求項９】
不揮発性記憶素子の集合と、
不揮発性記憶素子の集合と通信する１つ以上の管理回路を備えており、
前記１つ以上の管理回路は、データをプログラムする要求を受信し、その要求に応答して、（ａ）第１のデータにしたがって、それぞれの電圧閾値が少なくとも第１の電圧閾値区分とこれより高い中間電圧閾値区分に入るように、前記不揮発性記憶素子集合中のそれぞれの不揮発性記憶素子をプログラムし、（ｂ）前記それぞれの不揮発性記憶素子を第２のデータにしたがってプログラムし、これによって、前記第１の電圧閾値区分に入った前記不揮発性記憶素子の第１の部分集合が前記第１の電圧閾値区分内に留まり、前記第１の電圧閾値区分に入った前記不揮発性記憶素子の第２の部分集合がより高い第２の電圧閾値区分に入るようにプログラムされ、前記中間電圧閾値区分に入るが前記中間電圧閾値区分とオーバーラップする第３の電圧閾値区分の外部にある前記不揮発性記憶素子の第３の部分集合が前記第３の電圧閾値区分に入るようにプログラムされ、前記中間電圧閾値区分に入る前記不揮発性記憶素子の第４の部分集合がより高い第４の電圧閾値区分に入るようにプログラムされ、（ｃ）前記第３の部分集合の前記不揮発性記憶素子のうちの少なくとも１つの素子の電圧閾値を追跡して、当該電圧閾値が前記第３の電圧閾値区分に遷移した時点を判定し、（ｄ）前記追跡に応答して、前記第４の部分集合の前記不揮発性記憶素子のうちの少なくとも１つの素子の電圧閾値が前記第４の電圧閾値区分に遷移する時点を検証するための検証プロセスをいつ開始するかを決定する、
ことを特徴とする不揮発性記憶システム。
【請求項１０】
前記１つ以上の管理回路が、前記第２の部分集合の前記不揮発性記憶素子のうちの少なくとも１つの素子の電圧閾値が前記第２の電圧閾値区分に遷移した時点を判定し、その判定に応答して前記追跡動作が開始されることを特徴とする請求項９に記載の不揮発性記憶システム。
【請求項１１】
前記１つ以上の管理回路が、前記第３の部分集合の前記不揮発性記憶素子のうちの前記少なくとも１つの素子の電圧閾値が、前記第３の電圧閾値区分よりも低位にある低電圧閾値を過ぎ、続いて、前記第３の電圧閾値区分内にある高電圧閾値を過ぎることを追跡することを特徴とする請求項９に記載の不揮発性記憶システム。
【請求項１２】
前記１つ以上の管理回路は、前記第３の部分集合の前記不揮発性記憶素子のうちの前記少なくとも１つの素子を、当該素子の電圧閾値が前記低電圧閾値未満であるときには高速プログラムモードでプログラミングし、当該素子の電圧閾値が前記低電圧閾値と前記高電圧閾値の間あるときには低速プログラムモードでプログラミングすることを特徴とする請求項１１に記載の不揮発性記憶システム。
【請求項１３】
前記１つ以上の管理回路が、前記第３の部分集合の前記不揮発性記憶素子のうちの前記少なくとも１つの素子の電圧閾値を検知するために当該素子に対応付けられている少なくとも１つの検知増幅器を制御するとともに、前記第４の部分集合の前記不揮発性記憶素子のうちの少なくとも１つの素子に対応付けられた少なくとも１つの検知増幅器がその電圧閾値を検知することを禁止することを特徴とする請求項９に記載の不揮発性記憶システム。
【請求項１４】
前記第１と第２のデータがそれぞれ下位と上位の論理ページを含んでいることを特徴とする請求項９に記載の不揮発性記憶システム。
【請求項１５】
不揮発性記憶素子の前記集合が、複数のＮＡＮＤストリングに配列されていることを特徴とする請求項９に記載の不揮発性記憶システム。
【請求項１６】
前記１つ以上の管理回路は、前記第３の部分集合の前記不揮発性記憶素子のうちの前記少なくとも１つの素子の電圧閾値が前記第３の電圧閾値区分に遷移したことを前記追跡動作が判定したときに、前記検証プロセスを開始することを特徴とする請求項９に記載の不揮発性記憶システム。
【請求項１７】
前記１つ以上の管理回路は、前記第３の部分集合の前記不揮発性記憶素子のうちの前記少なくとも１つの素子の電圧閾値が前記第３の電圧閾値区分に遷移したことが前記追跡動作で判定した後に、所定数のプログラミングパルスが前記第４の部分集合の前記不揮発性記憶素子のうちの前記少なくとも１つの素子に印加された後で、前記検証プロセスを開始することを特徴とする請求項９に記載の不揮発性記憶システム。
【請求項１８】
前記１つ以上の管理回路は、前記第３の部分集合の前記不揮発性記憶素子を、それらのそれぞれの電圧閾値が前記第３の電圧閾値区分に遷移したときにさらにプログラミングしないようにロックアウトするとともに、前記第４の部分集合の前記不揮発性記憶素子のプログラミングを、それらのそれぞれの電圧閾値が前記第４の電圧閾値区分に遷移するまで継続させることを特徴とする請求項９に記載の不揮発性記憶システム。
【請求項１９】
前記第２の電圧閾値区分が前記中間電圧閾値区分とオーバーラップしていることを特徴とする請求項９に記載の不揮発性記憶システム。
【請求項２０】
前記追跡動作は、前記第３の部分集合の前記不揮発性記憶素子のうちのどの素子が前記第３の電圧閾値区分より低位の電圧閾値を有しているかを判定することによって、前記第３の部分集合の前記不揮発性記憶素子のうちの前記少なくとも１つの素子を特定することを特徴とする請求項９に記載の不揮発性記憶システム。
【国際調査報告】
2009514138.tif 000026
2009514138.tif 000027
2009514138.tif 000028