(57)【要約】  １つの目標データ状態（４０２、４０４、４０６）を有する記憶素子に対するビットライン電圧がプログラム電圧のステップアップと足並みを揃えてステップアップされるプログラミング技術を用いて、不揮発性メモリデバイス（１９６）における閾値電圧分布（Ａ、Ｂ、Ｃ）を狭くし、及び／又はプログラミング時間を短縮する。ビットライン電圧におけるステップアップは、異なるサブセットの記憶素子に対して、それらの目標データ状態（４０２、４０４、４０６）に従って、プログラミングパスにおいて異なる時期に行われる。ビットライン電圧（Ｖｂｃ）におけるステップアップの開始及び停止は、固定されたプログラムパルス数に基づき設定することができ、又は、プログラミングの進行度に基づいて適応させることができる。バリエーションには、固定されたビットラインステップの使用、可変ビットラインステップの使用、データ状態依存ビットラインステップの使用、１つ又は複数のデータ状態に対してビットラインをステップアップしないオプションの使用、及び、ビットラインステップに付加的なビットラインバイアスを加えるオプションの使用が含まれる。
2013531331.tif 000002
【特許請求の範囲】
【請求項１】
１セットの不揮発性記憶素子をプログラミングする方法であって、
１セットのプログラムパルス（１００５，１０１０，．．．）を前記１セットの不揮発性記憶素子（１５５）に印加するステップであって、ここにおいて、前記１セットの不揮発性記憶素子のうちの各不揮発性記憶素子は、ビットライン（ＢＬ０，ＢＬ１，．．．）に接続されており、前記１セットの不揮発性記憶素子は、複数の異なるサブセットの不揮発性記憶素子を含み、各サブセットは、複数の目標データ状態（Ａ，Ｂ，Ｃ）のうちの１つの目標データ状態の１つの検証レベル（Ｖｖａ，Ｖｖｂ，Ｖｖｃ）にそれぞれプログラムされ、各サブセットは、それぞれ、１つの目標データ状態の１つの検証レベルにそれぞれプログラムされる１サブセットの不揮発性記憶素子を含むことを特徴とするステップと、
前記１セットのプログラムパルス中において、前記１サブセットの不揮発性記憶素子に対する第１のトリガ条件が満たされたときを判定するステップと、
前記第１のトリガ条件が満たされたときに、前記１セットのプログラムパルスのうちの複数の連続するプログラムパルスの各プログラムパルスと足並みを揃えて、前記１サブセットの不揮発性記憶素子のうちのプログラミングからまだロックアウトされていない不揮発性記憶素子のそれぞれのビットラインの電圧（Ｖｂｌ）をステップアップするステップ、
を含む方法。
【請求項２】
前記１セットの不揮発性記憶素子が、共通するワードライン（ＷＬｎ）と導通しており、
前記１セットのプログラムパルスが、前記共通するワードラインを介して前記１セットの不揮発性記憶素子に印加される、
請求項１に記載の方法。
【請求項３】
前記第１のトリガ条件が、予め決められたプログラムパルス数に到達したときに基づいて満たされる請求項１又は２に記載の方法。
【請求項４】
前記第１のトリガ条件が、前記１サブセットのうちの少なくとも最小数の前記不揮発性記憶素子の閾値電圧が前記１つの検証レベルに到達したことが検証されたときに基づいて満たされる請求項１又は２に記載の方法。
【請求項５】
前記第１のトリガ条件は、前記１サブセットのうちの少なくとも最小数の前記不揮発性記憶素子の前記閾値電圧が前記１つの検証レベルに到達したことが検証され、その後、固定数のプログラムパルスを前記１セットの不揮発性記憶素子に印加したときに満たされる請求項４に記載の方法。
【請求項６】
前記第１のトリガ条件が満たされる前に、前記第１のトリガ条件に先立つ前記１セットのプログラムパルスの各プログラムパルス中における前記電圧を固定するステップを更に含む請求項１から５のいずれか一項に記載の方法。
【請求項７】
前記１サブセットの不揮発性記憶素子のうち、閾値電圧が前記１つの目標データ状態の第１の検証レベルと第２の検証レベルとの間にあり、プログラミングからまだロックアウトされていない不揮発性記憶素子に対して、付加的な固定量だけ前記電圧を上昇させるステップを更に含む請求項１から６のいずれか一項に記載の方法。
【請求項８】
前記１つの目標データ状態に関連付けられたステップサイズを用いて前記電圧がステップアップされ、ここで、複数の異なるステップサイズが、前記複数の目標データ状態のうちの少なくとも２つの異なる目標データ状態に関連付けられている請求項１から７のいずれか一項に記載の方法。
【請求項９】
前記電圧が、前記複数の連続するプログラムパルス中において、第１の割合（Ｒ１）でステップアップされ、次により高い第２の割合（Ｒ２）でステップアップされる請求項１から８のいずれか一項に記載の方法。
【請求項１０】
前記電圧は、前記複数の連続するプログラムパルス中において、前記第２の割合の後にこれよりも低い第３の割合でステップアップされる請求項８に記載の方法。
【請求項１１】
前記１セットのプログラムパルス中において、前記１サブセットの不揮発性記憶素子に対して第２のトリガ条件が満たされたときを判定するステップと、
前記第２のトリガ条件が満たされたときに、前記１セットのプログラムパルスのうちの１つ又は複数の付加的なプログラムパルスの各プログラムパルス中において、前記電圧をロックアウトレベル（Ｖｂｌ−ｌｏｃｋｏｕｔ）より低く固定するステップ、
を更に含む請求項１から１０のいずれか一項に記載の方法。
【請求項１２】
前記複数の異なるサブセットの不揮発性記憶素子は、前記１つの目標データ状態より高い別の目標データ状態の別の検証レベルにそれぞれプログラムされる別のサブセットの不揮発性記憶素子を含み、
前記１セットのプログラムパルス中において、前記別のサブセットの不揮発性記憶素子に対する別のトリガ条件が満たされたときを判定するステップと、
前記別のトリガ条件が満たされたときに、前記１セットのプログラムパルスのうち別の複数の連続するプログラムパルスの各プログラムパルスと足並みを揃えて、前記別のサブセットの不揮発性記憶素子のうちプログラミングからまだロックアウトされていない不揮発性記憶素子のビットラインの電圧をステップアップするステップであって、ここにおいて、前記第１のトリガ条件が満たされた後に前記別のトリガ条件が満たされることを特徴とするステップ
を更に含む請求項１から１１のいずれか一項に記載の方法。
【請求項１３】
前記第１のトリガ条件が満たされ、その後、固定数のプログラムパルスを前記１セットの不揮発性記憶素子に印加したときに基づいて、前記別のトリガ条件が満たされる請求項１２に記載の方法。
【請求項１４】
不揮発性記憶システムであって、
１セットの不揮発性記憶素子（１５５）であって、複数の異なるサブセットの不揮発性記憶素子を含み、各サブセットは、複数の目標データ状態（Ａ，Ｂ，Ｃ）のうちの１つの目標データ状態の１つの検証レベル（Ｖｖａ，Ｖｖｂ，Ｖｖｃ）にそれぞれプログラムされ、１つの目標データ状態の１つの検証レベルにプログラムされる１サブセットの不揮発性記憶素子を含む１セットの不揮発性記憶素子と、
各不揮発性記憶素子に接続されている各ビットライン（ＢＬ０，ＢＬ１，．．．）と、
少なくとも１つの制御回路、
を含み、
前記少なくとも１つの制御回路が、（ａ）１セットのプログラムパルス（１００５，１０１０，．．．）を前記１セットの不揮発性記憶素子に印加し、（ｂ）前記１セットのプログラムパルス中において、前記１サブセットの不揮発性記憶素子に対する第１のトリガ条件が満たされたときを判定し、（ｃ）前記第１のトリガ条件が満たされたときに、前記１セットのプログラムパルスのうちの複数の連続するプログラムパルスの各プログラムパルスと足並みを揃えて、前記１サブセットの不揮発性記憶素子のうちプログラミングからまだロックアウトされていない不揮発性記憶素子のそれぞれのビットラインの電圧（Ｖｂｌ）をステップアップする、
不揮発性記憶システム。
【請求項１５】
前記第１のトリガ条件が、前記１サブセットのうちの少なくとも最小数の前記不揮発性記憶素子の閾値電圧が前記１つの検証レベルに到達したことを検証されたときに基づいて満たされる請求項１４に記載の不揮発性記憶システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、不揮発性メモリに関する。
【背景技術】
【０００２】
半導体メモリは、様々な電子デバイスで次第に広く使用されるようになってきている。例えば、不揮発性半導体メモリは、携帯電話、ディジタルカメラ、携帯情報端末、モバイル・コンピューティング・デバイス、非モバイル・コンピューティング・デバイスなどのデバイスで使用される。電気的に消去可能なＰＲＯＭ（ＥＥＰＲＯＭ）およびフラッシュメモリは、不揮発性半導体メモリの中で最もよく使用されるものである。フラッシュメモリ、およびある種のＥＥＰＲＯＭに関しては、通常のフル装備のＥＥＰＲＯＭとは異なり、全メモリアレイまたは一部分のメモリの内容を１ステップで消去することができる。
【０００３】
従来のＥＥＰＲＯＭおよびフラッシュメモリは両方とも、半導体基板内のチャネル領域上に配置され、そのチャネル領域から絶縁されたフローティングゲートを利用する。フローティングゲートは、ソース領域とドレイン領域の間に位置する。フローティングゲートの上に、そのフローティングゲートから絶縁されているコントロールゲートが設けられている。このように形成されているトランジスタの閾値電圧（Ｖｔｈ）は、フローティングゲート上に保持されている電荷量によって制御される。すなわち、そのソースとドレインの間の導通を可能にすべくトランジスタをオンにする前にコントロールゲートに印加すべき電圧の最小量は、そのフローティングゲート上の電荷量レベルにより制御される。
【０００４】
いくつかのＥＥＰＲＯＭ及びフラッシュメモリデバイスは、電荷の２つの範囲を記憶するために使用されるフローティングゲートを有し、よって、メモリ素子は２つの状態（例えば、消去状態及びプログラム状態）の間でプログラムされ／消去され得る。こうしたフラッシュメモリデバイスはバイナリーフラッシュメモリデバイスと呼ばれることがある。なぜなら、各メモリ素子が１ビットのデータを記憶することができるからである。
【０００５】
マルチステート（マルチレベルとも呼ばれる）フラッシュメモリデバイスは、複数の明確な許容される／有効なプログラムされた閾値電圧範囲を特定することによって実現される。明確な各閾値電圧範囲は、このメモリデバイスにおいて符号化された１セットのデータビットのために予め決められた値に対応する。例えば、各メモリ素子を４つの明確な閾値電圧範囲に対応する４つの個別の充電バンドの一つに置くことができる場合、このメモリ素子は２ビットのデータを記憶することができる。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
特に、メモリデバイスを小型化し、かつプログラミング時間を短縮する場合、この閾値電圧範囲を正確にプログラミングする技術が必要となる。
【課題を解決するための手段】
【０００７】
閾値電圧範囲を正確にプログラムし、かつプログラミング時間を短縮する方法及び不揮発性記憶システムが提供される。
【図面の簡単な説明】
【０００８】
【図１】単一の行／列デコーダ及び読み出し／書き込み回路を用いる不揮発性メモリシステムのブロック図である。
【０００９】
【図２】図１のセンスブロック１００の一実施形態のブロック図である。
【００１０】
【図３】図１のメモリアレイ１５５におけるＮＡＮＤフラッシュメモリセルの複数のブロックを示す。
【００１１】
【図４Ａ】閾値電圧分布及び１パスプログラミング（「１パス書き込み」プログラミング技術と呼ばれる）の一例を示す。
【００１２】
【図４Ｂ】閾値電圧分布及び２パスプログラミング（「２パス書き込み」プログラミング技術と呼ばれる）の一例を示す。
【図４Ｃ】閾値電圧分布及び２パスプログラミング（「２パス書き込み」プログラミング技術と呼ばれる）の一例を示す。
【００１３】
【図５Ａ】閾値電圧分布及び１パス書き込みプログラミングの一例を示しており、ここでは、最大２つのプログラミングスピードが「クイックパス書き込み」（ＱＰＷ）プログラミングオプションにおいて用いられ得る。
【００１４】
【図５Ｂ】２パスプログラミング中のＡ状態のための閾値電圧分布の一例を示しており、ここでは第１プログラミングパスにおいて最大２つのプログラミングスピードがＱＰＷプログラミングオプションにおいて用いられ得る。
【００１５】
【図５Ｃ】２パスプログラミング中のＡ状態のための閾値電圧分布の一例を示しており、ここでは第２プログラミングパスにおいて最大２つのプログラミングスピードがＱＰＷプログラミングオプションにおいて用いられ得る。
【００１６】
【図６Ａ】図６Ｂ及び図６Ｃとともに、３パスプログラミング動作（「３パス書き込み」プログラミング技術と呼ばれる）のそれぞれ第１、第２及び第３プログラミングパスを示しており、ここでは、中間又は中間よりもやや下の（ＬＭ）検証電圧が用いられる。
【図６Ｂ】図６Ａ及び図６Ｃとともに、３パスプログラミング動作（「３パス書き込み」プログラミング技術と呼ばれる）のそれぞれ第１、第２及び第３プログラミングパスを示しており、ここでは、中間又は中間よりもやや下の（ＬＭ）検証電圧が用いられる。
【図６Ｃ】図６Ａ及び図６Ｂとともに、３パスプログラミング動作（「３パス書き込み」プログラミング技術と呼ばれる）のそれぞれ第１、第２及び第３プログラミングパスを示しており、ここでは、中間又は中間よりもやや下の（ＬＭ）検証電圧が用いられる。
【００１７】
【図６Ｄ】２パスプログラミング動作（「２パス書き込み」プログラミング技術と呼ばれる）の第２プログラミングパスを示し、ここで、第１プログラミングパスは図６Ａに示されており、最大２つのプログラミングスピードをＱＰＷプログラミングオプションにおいて使用することができる。
【００１８】
【図７Ａ】１セットの記憶素子のための、ワードラインを前後する順に行われる２パスプログラミング動作を示す。
【００１９】
【図７Ｂ】１セットの記憶素子のための、ワードラインを前後する順に行われる３パスプログラミング動作を示す。
【００２０】
【図８】記憶素子をプログラムするために必要な最も高いＶｐｇｍと、この記憶素子のビットライン電圧との関係を示す。
【００２１】
【図９Ａ】ビットライン電圧がステップアップされるプログラミング技術を示す。
【００２２】
【図９Ｂ】図９Ａのプログラミング技術の一例として、プログラムパルス数に応じて検証動作を受けるデータ状態を示す。
【００２３】
【図１０】図９Ｂのシーケンス９６０のためのプログラムパルス数に応じたプログラム・検証動作を示す。
【００２４】
【図１１Ａ】複数の異なるデータ状態のためのプログラムパルス数に応じたビットライン電圧のステップアップを示し、ここでは、全てのデータ状態に対して共通するステップサイズが用いられる。
【００２５】
【図１１Ｂ】Ａ状態の記憶素子のためのビットラインステップアップループを開始するためのトリガ条件を示す。
【００２６】
【図１１Ｃ】Ａ状態の記憶素子のためのビットラインステップアップループを停止するためのトリガ条件を示す。
【００２７】
【図１２Ａ】図１１Ａと一致する、Ａ状態の記憶素子のためのプログラムパルス数に応じたプログラミング速度を示す。
【００２８】
【図１２Ｂ】図１１Ａと一致する、Ｂ状態の記憶素子のためのプログラムパルス数に応じたプログラミング速度を示す。
【００２９】
【図１２Ｃ】図１１Ａと一致する、Ｃ状態の記憶素子のためのプログラムパルス数に応じたプログラミング速度を示す。
【００３０】
【図１３】複数の異なるデータ状態のためのプログラムパルス数に応じたビットライン電圧のステップアップを示し、ここでは、全てのデータ状態に対して小さなステップサイズ、次に大きなステップサイズ、次に小さなステップサイズが用いられる。
【００３１】
【図１４】複数の異なるデータ状態のためのプログラムパルス数に応じたビットライン電圧のステップアップを示し、ここでは、低いデータ状態に対して大きなステップサイズが用いられ、最も高いデータ状態に対して小さなステップサイズが用いられる。
【００３２】
【図１５】複数の異なるデータ状態のためのプログラムパルス数に応じたビットライン電圧のステップアップを示し、ここでは、全てのデータ状態のために共通するステップサイズが用いられ、付加的なビットライン電圧が閾値電圧レベルに基づき加えられる。
【発明を実施するための形態】
【００３３】
プログラミング動作中に、プログラミング時間を短縮することと、複数の異なるデータ状態のために狭い閾値電圧範囲を成すこととの間には、二律背反の関係がある。プログラミングスピードは、より大きなプログラムパルスステップサイズを用いることによって高めることができる。しかしながら、この結果、検証レベルを超えて大きくオーバーシュートしてしまい、広い閾値電圧（Ｖｔｈ）範囲を生じてしまう。一方、より小さなプログラムパルスステップサイズが用いられる場合、プログラミング時間が増大する代わりに狭いＶｔｈ範囲を成すことができる。別の手法は、二重検証方式において、記憶素子を各状態のために２つの別個の検証レベルにて検証することである。記憶素子のＶｔｈが下位検証レベルを越えると、そのプログラミングスピードはビットラインバイアスをかけることによって遅くなる。ビットラインバイアスがないと、記憶素子のＶｔｈは、プログラムパルスのステップサイズにほぼ等しい量だけ各プログラムパルスによって増加する。ビットラインバイアスがあると、記憶素子のＶｔｈはプログラムパルスのステップサイズより少ない量だけ各プログラムパルスによって増加する。よって、記憶素子は、そのＶｔｈが目標データ状態の下位検証レベルを越えると、減少したスピードでプログラムされ、Ｖｔｈが目標データ状態の上位検証レベルを越えると、更なるプログラミングからロックアウトされる。
【００３４】
二重検証方式において、各状態に対する下位検証レベルと上位検証レベルの間の距離が、シリコン基板上で最適化され、Ｖｔｈ分布が最も狭いところに設定される。下位検証レベルと上位検証レベルの間のギャップが大きすぎる場合、記憶素子のＶｔｈの増加は、安定した状態の値（例えば、プログラムパルスステップサイズと同じ）に戻り、よって、二重検証方式の利益が実現されない。一方、下位検証レベルと上位検証レベルの間のギャップが小さすぎる場合、多くの記憶素子のＶｔｈが、１つのプログラムパルスにおいてこのギャップを飛び越え得るので、それらのプログラミングスピードは低下しない。一般に、最適ギャップはプログラムパルスステップサイズの関数である。より大きなプログラムパルスステップサイズは最適ギャップを増加させる傾向があるが、これは、Ｖｔｈが各プログラムパルスによってより大きく跳ね上がるからである。よって、Ｖｔｈがギャップを飛び越えないようにし、１つのプログラムパルスのみによって上位検証レベルを越えないことを確実にするためにより大きなギャップが必要とされる。
【００３５】
更に、二重検証方式では、メモリデバイスが小型化されるにつれてプログラムのノイズがひどくなる。特定のプログラムパルスにおいて、大半の記憶素子のＶｔｈがプログラムパルスステップサイズにほぼ等しい量だけ跳ね上がったとしても、Ｖｔｈの跳ね上がりがはるかに高い記憶素子はなお多く存在する。結果として、最適ギャップは異なる記憶素子間で異なり、最適化は困難である。
【００３６】
これらの問題を解消するために、Ｖｔｈ分布幅を狭くするように大半の記憶素子のプログラミングを遅くすることを確実にするプログラミング技術が提供される。この手法において、特定の目標データ状態を有する記憶素子のためのビットライン電圧（Ｖｂｌ）が、一連のプログラムパルス（ある範囲の複数の連続するプログラムパルス）によってステップアップされる。異なる範囲のプログラムパルスも、各目標データ状態のために使用することができる（これらの範囲は重複し得る）。ビットライン電圧ステップアップは、大半の記憶素子がそれらの目標データ状態へのプログラミングの完了に近づいた一定時間内に行われ得る。この一定時間の間に、これらの記憶素子のＶｔｈの増加する速度は効果的に低下され、より狭いＶｔｈ分布が実現される。更に、特定の目標データ状態にプログラム中の全ての記憶素子に対するビットライン電圧がステップアップされ、その目標状態に属する全ての記憶素子（まだロックアウトされていないもの）に対するプログラミングが遅くなる。
【００３７】
プログラミング技術のバリエーションには、固定されたビットラインステップの使用と、可変ビットラインステップの使用と、データ状態依存ビットラインステップの使用と、一又は複数のデータ状態に対してビットラインをステップアップしないオプションの使用と、ビットラインステップに付加的なビットラインバイアスを加えるオプションの使用とが含まれる。
【００３８】
次に、より高速のプログラミングおよび電力消費の節減を可能にするために使用されうるメモリシステムの一例を説明する。図１は、１つの行／列デコーダと読み出し／書き込み回路とを利用する不揮発性記憶システムのブロック図である。図は、一実施例について、１ページの記憶素子を並列に読み出し又はプログラムするための読み出し／書き込み回路を有するメモリデバイス１９７を示す。メモリデバイス１９７は、１つ以上のメモリダイ１９８を含んでいてもよい。メモリダイ１９８は、記憶素子１５５の２次元メモリアレイと、制御回路１１０、及び、読み出し／書き込み回路１６５を含む。メモリアレイ１５５については図４に関連してさらに説明される。
【００３９】
一実施形態では、記憶素子のアレイは、３次元であってもよい。メモリアレイ１５５は、行デコーダ１３０を介したワードラインと、列デコーダ１６０を介したビットラインによってアドレス指定可能である。読み出し／書き込み回路１６５は、複数のセンスブロック１００を含んでおり、１ページの記憶素子を並列に読み出し又はプログラムすることを許容する。典型的には、コントローラ１５０は、１つ以上のメモリダイ１９８のような同じメモリデバイス１９７（例えば、取り外し可能なストレージカード）内に含まれる。命令及びデータは、ライン１２０を介して、ホストとコントローラ１５０の間で転送され、また、ライン１１８を介して、コントローラと１つ以上のメモリダイ１９８の間で転送される。
【００４０】
制御回路１１０は、読み出し／書き込み回路１６５と協調して、メモリアレイ１５５に対してメモリ動作を実行する。制御回路１１０は、ステートマシン１１２、オンチップアドレスデコーダ１１４、及び電力制御モジュール１１６を含む。ステートマシン１１２は、メモリ動作のチップレベルの制御を提供する。オンチップアドレスデコーダ１１４は、ホスト又はメモリコントローラによって用いられるアドレスと、デコーダ１３０，１６０によって用いられるハードウェアアドレスとの間にアドレスインタフェースを提供する。電力制御モジュール１１６は、メモリ動作中のワードライン及びビットラインに供給される電力及び電圧を制御する。
【００４１】
いくつかの実施態様では、図１の構成要素の一部が結合されうる。様々な設計で、メモリアレイ１５５以外の構成要素のうちの１つまたは複数（単独あるいは組合せ）が、管理または制御回路として考えられうる。例えば、１つまたは複数の制御回路は、制御回路１１０、ステートマシン１１２、デコーダ１１４／１６０、電力制御１１６、センスブロック１００（図２のプロセッサ１９２を含む）、読み出し／書き込み回路１６５、コントローラ１５０などのいずれか１つまたは組合せを含みうる。センスブロック１００は図２と関連付けてさらに説明する。
【００４２】
別の実施形態において、不揮発性メモリシステムは、２つの行／列デコーダおよび読み出し／書き込み回路が使用される。様々な周辺回路によるメモリアレイ１５５へのアクセスは、アレイの反対側で対称的に実施され、したがって、アクセス線の密度および各辺の回路は半減される。そのため、行デコーダは２つの行デコーダに分割され、列デコーダは２つの列デコーダに分割される。同様に、読み出し／書き込み回路は、最下部からビットラインに接続する読み出し／書き込み回路と、アレイ１５５の最上部からビットラインに接続する読み出し／書き込み回路とに分割される。このようにして、読み出し／書き込みモジュールの密度は本質的に半分減少する。
【００４３】
図２は、センスブロックの一実施形態を示すブロック図である。個々のセンスブロック１００は、センスモジュール１８０またはセンスアンプと呼ばれる１つ以上のコア部分と、管理回路１９０と呼ばれる共通部分とに区分けされる。一実施形態では、ビットラインごとに別々のセンスモジュール１８０が備えられており、１組の複数の、例えば４つまたは８つの、センスモジュール１８０につき１つの共通管理回路１９０が備えられている。グループ内のセンスモジュールの各々は、データバス１７２を介して、関連付けられた管理回路と通信する。そのため、１組の記憶素子のセンスモジュールと通信する１つ以上の管理回路が存在する。
【００４４】
センスモジュール１８０は、接続されたビットライン内の伝導電流が予め決められた閾値レベルより高いか低いかを判断することによって検知を実行するセンス回路１７０を備えている。センスモジュール１８０は、さらに、接続されたビットラインに電圧状態を設定するために用いられるビットラインラッチ１８２を含む。例えば、ビットラインラッチ１８２内で予め決められた状態がラッチされることによって、接続されたビットラインを、プログラム禁止を指定する状態（例えば、１．５〜３Ｖ）に引き上げる。例えば、ｆｌａｇ＝０がプログラミングを禁止できるのに対し、ｆｌａｇ＝１はプログラミングを禁止しない。
【００４５】
管理回路１９０は、プロセッサ１９２と、４セット（４組）のデータラッチ１９４〜１９７の例と、１セットのデータラッチ１９４とデータバス１２０との間を連結するＩ／Ｏインタフェース１９６とを備えている。センスモジュールごとに１セットのデータラッチを設けることができ、ＱＤＬ、ＵＤＬ及びＬＤＬによって特定される３つのデータラッチをセットごとに設けることができる。データラッチの使用については、特に図８ａ〜図８ｆ、図９、図１０および図１１ａ〜図１１ｃを参照しながら、以下でさらに詳述する。プロセッサ１９２は、検知された記憶素子に記憶されているデータを判断し、判断されたデータをデータラッチの組内に記憶するなどの目的で計算を実行する。データラッチの各セット１９４〜１９７は、読み出し動作時にプロセッサ１９２によって判断されたデータビット群を記憶する目的、および、プログラム動作時にデータバス１２０から取り込んだデータビット群を記憶する目的で使用され、取り込まれるデータビット群は、メモリ内にプログラムされる予定の書き込みデータを表す。Ｉ／Ｏインタフェース１９６は、データラッチ１９４〜１９７とデータバス１２０との間のインタフェースを提供する。
【００４６】
読み出し中には、システムの動作はステートマシン１１２の制御下にあり、ステートマシン１１２は、アドレス指定された記憶素子への種々のコントロールゲート電圧の供給を制御する。メモリに用意された様々なメモリ状態に対応する様々な既定コントロールゲート電圧のステップを進む毎に、センスモジュール１８０は、これらの電圧の１つに遷移し、バス１７２を介して、センスモジュール１８０からプロセッサ１９２に対応する出力が提供される。その時点で、プロセッサ１９２は、センスモジュールの遷移イベントと、ステートマシンから入力ライン１９３を介して加えられたコントロールゲート電圧についての情報によって、結果としてのメモリ状態を特定する。それから、プロセッサは、メモリ状態に対するバイナリ符号化を計算し、得られたデータビット群をデータラッチ１９４〜１９７に格納する。管理回路１９０の別の実施形態では、ビットラインラッチ１８２は、センスモジュール１８０の出力をラッチするラッチ、及び、上記のようなビットラインラッチの二つの役割を持つ。
【００４７】
いくつかの実装形態では、複数のプロセッサ１９２を含むことができる。一実施形態では、各プロセッサ１９２は、出力ライン（図示省略）を含み、各出力ラインは、ワイヤードＯＲ（配線論理和）接続される。いくつかの実施形態では、出力ラインは、ワイヤードＯＲラインに接続される前段階で反転される。この構成は、ワイヤードＯＲを受け取るステートマシンが、プログラムされる全てのビットがいつ所望のレベルに到達したかを判断できるので、プログラム処理の完了時点を判定するプログラム検証処理における素早い判定を可能にする。例えば、各ビットがその所望のレベルに到達すると、そのビット用の論理「０」がワイヤードＯＲラインに送られる（又はデータ「１」が反転される）。全てのビットがデータ「０」を出力すると（又はデータ「１」が反転されると）、ステートマシンは、プログラミング処理の完了を知る。各プロセッサが８個のセンスモジュールと通信する実施形態では、ステートマシンは、ワイヤードＯＲラインを８回読み出す必要があり、あるいは、協働するビットラインの結果を蓄積するための論理をプロセッサ１９２に追加し、ステートマシンがワイヤードＯＲラインを一度だけ読み出せば良いようにする。同様に、論理レベルを正しく選択することによって、第１ビットの状態が変化し、それに従ってアルゴリズムが変化する際に、グローバルステートマシーンは検出し得る。
【００４８】
プログラム動作又は検証動作の間、プログラムされるべきデータ（書き込みデータ）は、データバス１２０から複数のデータラッチ１９４〜１９７内に記憶される。ステートマシン制御下のプログラム処理は、アドレス指定される記憶素子のコントロールゲートに加えられる、一連のプログラミング電圧パルスを伴う。各プログラミングパルスに続いて、リードバック（検証）によって、記憶素子が所望の状態にプログラムされたかどうかを判定する。いくつかの場合では、プロセッサ１９２は、所望のメモリ状態に対するリードバックメモリ状態を監視する。その２つが一致したとき、プロセッサ１９２は、プログラム禁止を指定する状態にビットラインを引き上げるように、ビットラインラッチ１８２を設定する。これにより、たとえプログラミングパルスがそのコントロールゲートに表れても、ビットラインに接続した記憶素子がさらにプログラミングされないようにすることができる。他の実施形態では、プロセッサが最初にビットラインラッチ１８２をロードし、センス回路が検証処理中にそれに禁止値を設定する。
【００４９】
データラッチの各セット１９４〜１９７は、各センスモジュールのデータラッチのスタックとして実装されてもよい。一実施形態では、センスモジュール１８０毎に３個のデータラッチが存在する。いくつかの実装形態では、データラッチは、シフトレジスタとして実装され、内部に記憶されたパラレルデータをデータバス１２０用にシリアルデータに変換したり、その逆を行ったりする。ｍ個の記憶素子の読み出し／書き込みブロックに対応する全てのデータラッチを相互にリンクしてブロックシフトレジスタを構成し、シリアル転送によって、データのブロックを入力または出力できるようにする。特に、読み出し／書き込みモジュールの一群のデータラッチのそれぞれが、データバスへ或いはデータバスからデータを順に転送するように読み出し／書き込みモジュールのバンクを構成し、一群のデータラッチがあたかも読み出し／書き込みブロック全体のシフトレジスタの一部であるかのようにしてもよい。
【００５０】
データラッチは、関連付けられた記憶素子がプログラミング動作中に特定の管理点に達した時期を特定する。例えば、ラッチは、記憶素子のＶｔｈが、（ａ）下位検証レベル（例えば、図５におけるＶｖａＬもしくはＶｖｂＬ）未満であることを高速プログラミングモードで、（ｂ）下位検証レベル（例えば、ＶｖａＬもしくはＶｖｂＬ）より高いが上位検証レベルもしくは目標検証レベル（例えば、Ｖｖａ、ＶｖｂもしくはＶｖｃ）未満であることを低速プログラミングモードで、または、（ｃ）上位検証レベルもしくは目標検証レベルより高いことを禁止モードで識別してもよい。データラッチは、記憶素子がページデータからの１つ以上のビットを現在記憶しているかどうかを示す。例えば、ＬＤＬラッチは、下位ページのデータを記憶する目的で使用することができる。ＬＤＬラッチは、関連付けられた記憶素子に下位ページビットが記憶されるときに、（例えば０から１へと）反転される。ＵＤＬラッチは、例えば、上位ページのデータを記憶する目的で使用することができる。ＵＤＬラッチは、関連付けられた記憶素子に上位ページビットが記憶されるときに反転される。反転は、関連付けられた記憶素子がプログラミングを完了するとき、例えば、記憶素子のＶｔｈがＶｖａ、ＶｖｂまたはＶｖｃなどの目標検証レベルを超えるときに行われる。ＱＤＬラッチは、関連付けられた記憶素子が低速プログラミングモードにあるときに反転され得る。
【００５１】
図３は、図１のメモリアレイ１５５におけるＮＡＮＤフラッシュメモリセルのブロックを示す。メモリアレイは多数のブロックを含むことができる。各ブロック例３００、３１０は、多数のＮＡＮＤストリングと、ブロックで共有されるＢＬ０、ＢＬ１、．．．といったそれぞれのビットラインとを含む。各ＮＡＮＤストリングは、一端でドレイン選択ゲート（ＳＧＤ）に接続されており、ドレイン選択ゲートのコントロールゲートは、共通のＳＧＤラインを介して接続されている。ＮＡＮＤストリングは、他端でソース選択ゲートに接続されており、ひいては、共通ソースライン３２０に接続されている。ソース選択ゲートとドレイン選択ゲートとの間には、ＷＬ０〜ＷＬ６３など、６４本のワードラインが延在している。
【００５２】
ＮＡＮＤフラッシュメモリに加え、他のタイプの不揮発性メモリを使用することもできる。例えば、フラッシュＥＥＰＲＯＭシステムで有用な別のタイプのメモリセルは、導電性のフローティングゲートの代わりに非導電性の誘電素材を利用して不揮発的に電荷を蓄積する。導電性のコントロールゲートと、メモリ・セル・チャネルの上方にある半導体基板の表面との間に、酸化ケイ素、窒化ケイ素および酸化ケイ素（「ＯＮＯ」）で形成された３重の層誘電体が挟まれている。このセルは、セルチャネルから窒化物に電子を注入することによってプログラムされ、注入された電子は、限られた領域内で捕捉され、蓄積される。この蓄積された電荷はその後、検出可能な方法でセルのチャネルの一部分の閾値電圧を変える。このセルは、窒化物にホットホールを注入することによって消去される。ドープ処理したポリシリコンゲートが別々のセレクトトランジスタを形成するためにメモリ・セル・チャネルの一部分を超えて延伸するスプリットゲート構成で同様のセルを設けることができる。
【００５３】
別のアプローチでは、ＮＲＯＭセルが使用される。例えば、各ＮＲＯＭセルに２ビットが記憶され、このセルではＯＮＯ誘電体層がソース拡散領域とドレイン拡散領域との間のチャネル全体に延伸する。一方のデータビットの電荷は、ドレインに隣接する誘電体層に限局され、もう一方のデータビットの電荷はソースに隣接する誘電体層に限局される。誘電体内で空間的に分離された電荷蓄積領域のバイナリ状態を別々に読み込むことにより、マルチステートのデータ記憶が得られる。他のタイプの不揮発性メモリも公知である。
【００５４】
図４Ａは、閾値電圧分布及び１パスプログラミング（「１パス書き込み」プログラミング技術と呼ばれる）の一例を示す。プログラミングパスとは、一般に複数のプログラム・検証動作のシーケンスを含むことを意味し、このプログラム・検証動作は、初期Ｖｐｇｍレベルから始まり、最終Ｖｐｇｍレベルに向かって、１セットの記憶素子に対して一又は複数の検証レベルに到達するまで行われる。記憶素子アレイのためのＶｔｈ分布の例を、各記憶素子が２ビットのデータを記憶する場合のために提供する。第１のＶｔｈ分布４００は、消去された（Ｅ状態）記憶素子のために提供される。３つのＶｔｈ分布４０２，４０４及び４０６は、それぞれプログラムされた状態Ａ、Ｂ、Ｃを表す。一実施形態において、Ｅ状態分布にある閾値電圧は負であり、Ａ、Ｂ及びＣ状態分布にある閾値電圧は正である。
【００５５】
特定の状態にある記憶素子の数は、Ｖｔｈが対応する検証レベルを越えると判定された記憶素子の計数を維持することによって判定され得る。
【００５６】
それぞれのＶｔｈ範囲は、データビットのセットの所定値に対応する。記憶素子にプログラミングされたデータと記憶素子の閾値電圧レベルとの特定の関係は、記憶素子のために採用されるデータ符号化方式に依存する。一実施形態では、フローティングゲートの閾値電圧が誤ってその近傍の物理状態にシフトした場合に１ビットだけが影響を受けるように、データ値がグレーコード割り当てを使用して閾値電圧範囲に割り当てられる。一例は、閾値電圧範囲Ｅ（状態Ｅ）に「１１」を、閾値電圧範囲Ａ（状態Ａ）に「１０」を、閾値電圧範囲Ｂ（状態Ｂ）に「００」を、及び閾値電圧範囲Ｃ（状態Ｃ）に「０１」を割り当てる。しかしながら、他の実施形態では、グレーコードは使用されない。４つの状態が示されているが、４つの状態より多い又は少ない構造を含む他のマルチステート構造を使用することもできる。
【００５７】
３つの読み出し基準電圧Ｖｒａ、Ｖｒｂ、及び、Ｖｒｃは、記憶素子からデータを読み出すために提供される。既定の記憶素子の閾値電圧がＶｒａ、Ｖｒｂ及びＶｒｃを上回っているのか、あるいは下回っているのかをテストすることによって、システムは、記憶素子が存在する状態、即ち、プログラム状態を判断することができる。
【００５８】
さらに、３つの検証基準電圧Ｖｖａ、Ｖｖｂ、及び、Ｖｖｃが提供される。記憶素子を状態Ａにプログラミングするとき、このシステムは、それらの記憶素子がＶｖａ以上の閾値電圧を有するかどうかをテストする。記憶素子を状態Ｂにプログラミングするとき、このシステムは、記憶素子がＶｖｂ以上の閾値電圧を有するかどうかをテストする。記憶素子を状態Ｃにプログラミングするとき、このシステムは、記憶素子がＶｖｃ以上の閾値電圧を有するかどうかを判断する。
【００５９】
フルシーケンスプログラミングとして知られる一実施形態においては、記憶素子は、Ｅ状態からプログラミングされた状態Ａ、Ｂ又はＣの何れかに直接的にプログラミングされる。例えば、まず、プログラミングされる一連の記憶素子の集合中の全ての記憶素子が消去状態Ｅとなるように、この集合が消去され得る。次に、図１０で示されるような一連のプログラムパルスが、記憶素子を状態Ａ、Ｂ又はＣに直接的にプログラミングするために使用される。いくつかの記憶素子は状態Ｅから状態Ａにプログラムされ、他の記憶素子は状態Ｅから状態Ｂに、及び／又は、状態Ｅから状態Ｃにプログラミングされる。
【００６０】
図４Ｂ及び４Ｃは、閾値電圧分布及び２パスプログラミング（「２パス書き込み」プログラミング技術と呼ばれる）の一例を示す。この手法において、下位検証レベル及び上位検証レベルが一又は複数のデータ状態に対して用いられる。例えば、ＶｖａＬ及びＶｖａはそれぞれＡ状態のための下位検証レベルと上位検証レベルであり、ＶｖｂＬ及びＶｖｂはそれぞれＢ状態のための下位検証レベルと上位検証レベルであり、ＶｖｃＬ及びＶｖｃはそれぞれＣ状態のための下位検証レベルと上位検証レベルである。下位検証レベルは上位検証レベルからオフセット（偏位）される。検証レベルは電圧又は電流を表し得る。
【００６１】
プログラミング中、（目標状態としてＡ状態にプログラムされることになっている）Ａ状態の記憶素子のＶｔｈがＶｖａＬ以下の場合には、記憶素子が高速プログラミングモードでプログラムされる。これは、ビットラインを接地することによって達成されてもよい。Ｖｖａ≧Ｖｔｈ＞ＶｖａＬの場合には、関連付けられたビットライン電圧を接地レベルと完全禁止レベルとの間のレベルに引き上げるなどの方法により、記憶素子が低速プログラミングモードでプログラムされる。これによって精度が向上するため、閾値電圧の大幅増を回避することによってＶｔ分布が狭まる。Ｖｔｈ＞Ｖｖａの場合には、記憶素子がこれ以上プログラミングされないようにロックアウトされる。同様に、（Ｂ状態にプログラムされることになっている）Ｂ状態の記憶素子が、高速および低速プログラミングモードを有することができる。なお、１つの手法では、Ｃ状態など最も高い状態の場合には、他の状態よりもメリットが少ないことから、低速プログラミングモードは使用されない。
【００６２】
消去状態と７つのプログラム状態Ａ〜Ｇとを有する８状態プログラミングの一例では、例えば、中間状態Ａ〜Ｆに対して高速および低速プログラミングモードを使用できる。
【００６３】
第１プログラミングパス（図４Ｂ）において、Ａ，Ｂ及びＣ状態の記憶素子が、Ｅ状態４００からＡ，Ｂ及びＣ状態の下位検証レベルのＶｖａＬ，ＶｖｂＬ又はＶｖｃＬ（それぞれ下位分布４０１，４０３及び４０５）にそれぞれプログラムされる。第２プログラミングパス（図４Ｃ）において、Ａ，Ｂ及びＣ状態の記憶素子は、それぞれ下位分布４０１，４０３，４０５から、それぞれ検証レベルＶｖａ，Ｖｖｂ，Ｖｖｃを用いてそれぞれ最終分布４０２，４０４，４０６にプログラムされる。
【００６４】
図５Ａは、閾値電圧分布及び１パス書き込みプログラミングの一例を示しており、ここでは最大２つのプログラミングスピードが「クイックパス書き込み」（ＱＰＷ）プログラミングオプションにおいて用いられ得るものである。一般に、各目標状態のために検証レベルはこれを超過した場合に記憶素子のために低速プログラミングスピードをトリガするものとして定義される。この検証レベルは、プログラミングパスの終了を知らせる検証レベルとは異なり得る。この例において、単一のプログラミングパスがＡ状態の記憶素子をＥ状態分布５００からＡ状態分布５０２にプログラムするために用いられ、これにより検証レベルＶｖＡ−ｓｐｅｅｄを越える。このＶｖＡ−ｓｐｅｅｄは、例えば関連するビットライン電圧を引き上げることによって、Ｖｖａ≧Ｖｔｈ＞Ｖｖａ−ｓｐｅｅｄであるＡ状態の各記憶素子のために低速プログラミングスピードをトリガするためのチェックポイントとして機能する。Ｖｔｈ≦Ｖｖａ−ｓｐｅｅｄであるＡ状態の記憶素子は、それらのビットライン電圧を接地させ続けることによって、より速い速度でプログラムされる。ＶｔｈがＶｖａに到達した全てのＡ状態の記憶素子（分布５０２を形成する）は更なるプログラミングからロックアウトされる。
【００６５】
同様に、単一のプログラミングパスが、Ｂ状態の記憶素子をＥ状態分布５００からＢ状態分布５０４にプログラムするために用いられ、これにより検証レベルＶｖｂ−ｓｐｅｅｄを越える。このＶｖｂ−ｓｐｅｅｄは、Ｖｖｂ≧Ｖｔｈ＞Ｖｖｂ−ｓｐｅｅｄである各Ｂ状態の記憶素子のための低速プログラミングスピードをトリガするためのチェックポイントとして機能する。Ｖｔｈ≦Ｖｖｂ−ｓｐｅｅｄであるＢ状態の記憶素子は、より速い速度でプログラムされる。ＶｔｈがＶｖｂに到達した全てのＢ状態の記憶素子（分布５０４を形成する）は更なるプログラミングからロックアウトされる。
【００６６】
更に、単一のプログラミングパスが、Ｃ状態の記憶素子をＥ状態分布５００からＣ状態分布５０６にプログラムするために用いられ、これにより検証レベルＶｖｃ−ｓｐｅｅｄを越える。このＶｖｃ−ｓｐｅｅｄは、Ｖｖｃ≧Ｖｔｈ＞Ｖｖｃ−ｓｐｅｅｄである各Ｃ状態の記憶素子のための低速プログラミングスピードをトリガするためのチェックポイントとして機能する。Ｖｔｈ≦Ｖｖｃ−ｓｐｅｅｄであるＣ状態の記憶素子は、より速い速度でプログラムされる。ＶｔｈがＶｖｃに到達した全てのＣ状態の記憶素子（分布５０６を形成する）は更なるプログラミングからロックアウトされる。
【００６７】
図４Ａ〜４Ｃの技術に比して、このプログラミングオプションにおいて「最大２つのプログラミングスピード」という場合、我々は「２パス書き込み」技術において２つのプログラミングパスを使用する。これは、隣接する記憶素子からの干渉効果の影響を減らすために行われる。第１パスにおいて、我々は全ての記憶素子を最終目標Ｖｔｈの近傍にプログラムする。次に、第２パスにおいて、我々はこれらの記憶素子を最終目標Ｖｔｈに到達するようにプログラムする。よって、第１パスと第２パスとの間の全Ｖｔｈシフトはより小さく、よって、隣接する記憶素子への対応する干渉効果も小さい。このプログラミングは、例えば後に詳しく述べる図７Ａ及び７Ｂに示された順序で行うことができる。第２パスにおいて、記憶素子は既に目的とするものの近傍にプログラムされているため、我々がそれらをプログラムする際、それらのＶｔｈがそれらの安定した状態の値よりも高いため当然それらは最初に低速でプログラムされる。この「パス書き込み効果」は最終Ｖｔｈ分布を狭くするのに役立つ。
【００６８】
２つまでのプログラミングスピードを使用することができるプログラミングオプションは、「クイックパス書き込み」（ＱＰＷ）技術とも呼ばれる。ＱＰＷは、２パス技術の第１パス若しくは第２パス、又はこれらの両方において独立して使用することができる。我々がＱＰＷを使用する各パスにおいて下位検証レベル（Ｖｖａ−ｓｐｅｅｄ，Ｖｖｂ−ｓｐｅｅｄ，Ｖｖｃ−ｓｐｅｅｄ）が使用され、これは、プログラミングパスが終了しロックアウトが生じる検証レベルよりも低い。この下位検証レベルは、プログラミングを遅くするためのチェックポイントとして機能するが、記憶素子のロックアウトをトリガしない。ＱＰＷにおいて、我々は、記憶素子の関連するチャネル領域にビットラインバイアスを印加することによって記憶素子のプログラミングスピードを人工的に遅くする。更に、ＱＰＷ・検証レベル（Ｖｖａ−ｓｐｅｅｄ，Ｖｖｂ−ｓｐｅｅｄ，Ｖｖｃ−ｓｐｅｅｄ）は独立して最適化することができることに留意されたい。Ｖｖａ−ｓｐｅｅｄとＶｖａとの間には、我々がＶｔｈ分布を狭くするためにＱＰＷの利益を最大限に得る最適ギャップがある。ＱＰＷ・検証レベルは以前のプログラミングパスの検証レベルに依存しない。この最適ギャップは、各目標状態のために同じものであっても異なるものであってもよい。ＱＰＷにおいて、２つの速度ではなく１つの速度によってプログラムすることができる記憶素子がいくつかあり得ることにも留意されたい（例えば、一のプログラミングパルスによってＶｔｈがＶｖａ−ｓｐｅｅｄを越えて跳ね上がりＶｖａに到達するＡ状態の記憶素子など）。係る記憶素子は低速のプログラミングを受けることなくその目標レベルに到達する。よって、ＱＰＷにおいて全ての記憶素子が２つの速度でプログラムされるわけではない。しかしながら、典型的にはほとんどの記憶素子が２つの速度でプログラムされる。
【００６９】
図５Ｂは、２パスプログラミング中のＡ状態のための閾値電圧分布の一例を示しており、ここでは第１プログラミングパスにおいて２つまでのプログラミングスピードがＱＰＷプログラミングオプションにおいて用いられ得るものである。明確化のためにＡ状態だけが示されているが、他の目標データ状態も同様に扱うことができる。この場合、Ａ状態の記憶素子は第１プログラミングパスにおいてＶｖａ−ｓｐｅｅｄを通過し、それらのプログラミングは、第１プログラミングパスの第１部分において速く、第１プログラミングパスの第２部分において遅い。よって、第１プログラミングパスにおいて、Ａ状態の記憶素子は、Ｅ状態分布５００から下位Ａ状態分布５０１（ＶｖａＬで定義される）に遷移し、これによりＶｖａ−ｓｐｅｅｄ（Ａ状態の各記憶素子のために低速プログラミングスピードをトリガするためにチェックポイントとして機能する）を通過する。よって、Ａ状態の記憶素子の速度は、それらが下位Ａ状態分布５０１に遷移すると低下し、各Ａ状態の記憶素子がＶｔｈ＞ＶｖａＬになった場合に第１プログラミングパスの終了を知らせる。第２プログラミングパスにおいて、Ａ状態の記憶素子は、分布５０１から分布５０２（Ｖｖａで画定される）にプログラムされ、各Ａ状態の記憶素子がＶｔｈ＞Ｖｖａになった場合に第２プログラミングパスの終了を知らせる。第２プログラミングパスは次に説明するように任意にＱＰＷを使用することもできる。
【００７０】
図５Ｃは、２パスプログラミング中のＡ状態のための閾値電圧分布の一例を示しており、ここでは第２プログラミングパスにおいて２つまでのプログラミングスピードがＱＰＷプログラミングオプションにおいて用いられ得るものである。ここでも、明確化のためにＡ状態だけが示されているが、他の目標データ状態も同様に扱うことができる。この場合、Ａ状態の記憶素子は、第２プログラミングパスにおいて検証レベルＶｖａ−ｓｐｅｅｄ１を通過し、これは図５ＢのＶｖａ−ｓｐｅｅｄとは異なり得る。まず、Ａ状態の記憶素子は、Ｅ状態分布５００から下位Ａ状態分布５０１（ＶｖａＬで定義される）に遷移し、各Ａ状態の記憶素子がＶｔｈ＞ＶｖａＬになった場合に第１プログラミングパスの終了を知らせる。第１プログラミングパスは、図５Ｂに記載されるように任意にＱＰＷを使用することもできる。第２プログラミングパスにおいて、Ａ状態の記憶素子は、始めはＶｔｈ≦Ｖｖａ−ｓｐｅｅｄ１のときには高速で、次にＶｔｈ＞Ｖｖａ−ｓｐｅｅｄ１のときには低速で分布５０１から分布５０２に遷移する。第２プログラミングパスの終了は、各Ａ状態の記憶素子がＶｔｈ＞Ｖｖａになった場合に知らされる。
【００７１】
図６Ａ，６Ｂ及び６Ｃは、３パスプログラミング動作（「３パス書き込み」プログラミング技術と呼ばれる）のそれぞれ第１、第２、第３プログラミングパスを示しており、ここでは、中間又は中間よりもやや下の（ＬＭ）検証電圧が用いられるものである。このプログラミング技術は、一の記憶素子に隣接する記憶素子をあるページにおいて書き込んだ後で、この一の記憶素子を一のページにおいて書き込むことによって、この一の記憶素子に対するフローティングゲート間結合の影響を低減する。一実施例では、不揮発性記憶素子は４つのデータ状態を用いて記憶素子毎に２ビットのデータを記憶する。例えば、Ｅ状態が消去状態であり、状態Ａ、Ｂ及びＣがプログラムされた状態である。前述したように、状態Ｅはデータ１１を記憶し、状態Ａはデータ０１を記憶し、状態Ｂはデータ００を記憶し、状態Ｃはデータ１０を記憶している。他の物理的データ状態へのデータの符号化を用いることもできる。各記憶素子は２ページ分のデータを記憶する。参照のために、これらのページのデータは上位ページ及び下位ページと呼ばれるが、他のラベルを与えることもできる。
【００７２】
第１プログラミングパスにおいて、選択ワードラインＷＬｎのために下位ページがプログラムされる。例えば、これは図７Ｂ（後述する）のステップ「１」に対応し得る。下位ページがデータ１のままである場合、記憶素子の状態は状態Ｅ（分布６００）のままである。データが０にプログラムされるべきである場合、ＷＬｎ上の記憶素子の閾値電圧は、この記憶素子が中間（ＬＭすなわち中間よりもやや下）の状態（分布６０６）にプログラムされるように引き上げられる。従って、図６Ａは、Ｅ状態からＬＭ状態への記憶素子のプログラミングを示す。
【００７３】
一実施形態において、記憶素子がＥ状態からＬＭ状態にプログラムされた後、このＮＡＮＤストリング内の隣接するワードラインＷＬｎ＋１の隣接する記憶素子は、その下位ページに対してプログラムされる。これは、ＷＬｎ上の記憶素子のための状態ＬＭのＶｔｈ分布６０６を拡張する（広げる）効果を有する。このＶｔｈ分布の明らかな拡張は、上位ページをプログラミングするときに矯正される。Ｅ状態分布６００も拡張される。ＷＬｎのために第１プログラミングパスが行われた後、図７Ｂのステップ「２」で示されるように、同様の第１プログラミングパスがＷＬｎのために行われ得る。
【００７４】
図６Ｂは、下位検証レベルＶｖａＬ，ＶｖａＢ及びＶｖａＣを用いた上位ページのプログラミングを示す。例えば、これは図７Ｂのステップ「３」に対応する。更に、一実施形態において、上位ページプログラミングの前に、どの記憶素子がＥ状態に属し、どの記憶素子がＬＭ状態に属するかを判定するために読み出し動作が行われる。この読み出し動作は、Ｅ状態Ｖｔｈ分布とＬＭ状態Ｖｔｈ分布の間の読み出しレベル又は他の適切な電圧レベルで行うことができる。このステップが行われる一実施例では、ＷＬｎ上の下位ページをプログラミングした後に、ラッチ内の下位ページデータが除去され、このラッチをＷＬｎ＋１のための下位ページデータのために用いることができるようにする。この場合、ＷＬｎ上の上位ページをプログラミングする前に、我々は下位ページデータを判定するために読み出しを行う。他の実施例において、この読み出しステップは必要ではなく、これは、一のワードラインの複数の異なるプログラミングパス全体を通してこのワードラインのための全てのページのデータを保存することができるバイナリーキャッシュが使用される場合などである。
【００７５】
記憶素子がＥ状態にあり、かつ上位ページが１である場合、この記憶素子はＥ状態（分布６００）のままである。記憶素子がＥ状態であり、かつその上位ページデータが０である場合、この記憶素子のＶｔｈは、ＶｖａＬ（分布６０２）よりも高く引き上げられる。記憶素子がＬＭ状態６０６だった場合で、上位ページデータが０である場合、記憶素子のＶｔｈはＶｖｂＬ（分布６０８）よりも高くプログラムされる。記憶素子がＬＭ状態６０６にあり、かつ上位ページデータが１である場合、記憶素子のＶｔｈはＶｖｃＬ（分布６１２）よりも高く引き上げられる。この処理は、フローティングゲート間結合の影響を減らし、なぜなら隣接する記憶素子の上位ページプログラミングのみが所定の記憶素子の見掛けのＶｔｈに対し影響を及ぼすからである。代替の状態符号化の一例は、上位ページデータが０であるときに分布６０６から状態Ｃに動かすことであり、及び上位ページデータが１であるときにＢ状態に動かすことである。ＷＬｎのための第２プログラミングパスが行われた後、図７Ｂのステップ「４」に示されるように、第１プログラミングパスがＷＬｎ＋２のために行われ、そして図７Ｂのステップ「５」によって示されるように、第２プログラミングパスがＷＬｎ＋１のために行われ得る。
【００７６】
図６Ｃは、Ａ状態のための分布６０２から分布６０４への遷移、Ｂ状態のための分布６０８から分布６１０への遷移、Ｃ状態のための分布６１２から分布６１４への遷移を提供するために上位検証レベルＶｖａ，Ｖｖｂ及びＶｖｃを用いた上位ページのプログラミングを示す。例えば、これは図７Ｂのステップ「６」に対応し得る。
【００７７】
この３パスプログラミングの例は４つのデータ状態及び２ページのデータを提供するが、ここでのコンセプトは、４つの状態よりも多い又は少ない状態、及び２ページよりも多い又は少ない状態を伴う他の実施形態にも適用することができる。例えば、１個の記憶素子につき８又は１６の状態を伴うメモリデバイスが現在計画中または製造中である。
【００７８】
一般に、プログラミングスピードは、図６Ａ〜６Ｃのプログラミングパスのいずれについても調整することができる。例えば、図６Ｂの第２プログラミングパスにおいて、我々は図５Ｂに記載されるようにＶｖａ−ｓｐｅｅｄ＜ＶｖａＬを設定することができる。同様に、我々はＶｖｂ−ｓｐｅｅｄ＜ＶｖｂＬ及びＶｖｃ−ｓｐｅｅｄ＜ＶｖｃＬを設定することができる。この場合、第２プログラミングパスにおいて、Ａ状態の記憶素子はＶｔｈ≦Ｖｖａ−ｓｐｅｅｄのときには高速で、Ｖｖａ−ｓｐｅｅｄ＜Ｖｔｈ≦ＶｖａＬのときには低速でプログラムされる。同様に、Ｂ状態記憶素子は、Ｖｔｈ≦Ｖｖｂ−ｓｐｅｅｄのときには高速で、Ｖｖｂ−ｓｐｅｅｄ＜Ｖｔｈ≦ＶｖｂＬのときには低速でプログラムされる。同様に、Ｃ状態記憶素子は、Ｖｔｈ≦Ｖｖｃ−ｓｐｅｅｄのときには高速で、Ｖｖｃ−ｓｐｅｅｄ＜Ｖｔｈ≦ＶｖｃＬのときには低速でプログラムされる。
【００７９】
図６Ｃの第３プログラミングパスの一例において、我々は図５Ｃに記載されるようにＶｖａＬ＜Ｖｖａ−ｓｐｅｅｄ＜Ｖｖａを設定することができる。同様に、我々はＶｖｂＬ＜Ｖｖｂ−ｓｐｅｅｄ＜Ｖｖｂ及びＶｖｃＬ＜Ｖｖｃ−ｓｐｅｅｄ＜Ｖｖｃを設定することができる。この場合、第３プログラミングパスにおいて、Ａ状態の記憶素子は、ＶｖａＬ＜Ｖｔｈ≦Ｖｖａ−ｓｐｅｅｄのときには高速で、Ｖｖａ−ｓｐｅｅｄ＜Ｖｔｈ≦Ｖｖａのときには低速でプログラムされる。同様に、Ｂ状態記憶素子は、ＶｖｂＬ＜Ｖｔｈ≦Ｖｖｂ−ｓｐｅｅｄのときには高速で、Ｖｖｂ−ｓｐｅｅｄ＜Ｖｔｈ≦Ｖｖｂのときには低速でプログラムされる。同様に、Ｃ状態記憶素子は、ＶｖｃＬ＜Ｖｔｈ≦Ｖｖｃ−ｓｐｅｅｄのときには高速で、Ｖｖａ−ｓｐｅｅｄ＜Ｖｔｈ≦Ｖｖｃのときには低速でプログラムされる。
【００８０】
第２及び第３プログラミングパスのための上記例は、単独でも組み合わせても使用することができる。
【００８１】
図６Ｄは、２パスプログラミング動作（「２パス書き込み」プログラミング技術と呼ばれる）の第２プログラミングパスを示し、ここで、第１プログラミングパスは図６Ａに示されており、２つまでのプログラミングスピードをＱＰＷプログラミングオプションにおいて使用することができるものである。この更なる変更態様において、図５Ａ〜Ｃで説明した検証レベルＶｖａ−ｓｐｅｅｄ，Ｖｖｂ−ｓｐｅｅｄ及びＶｖｃ−ｓｐｅｅｄが、プログラミングスピードの低下をトリガするために使用される。具体的には、Ａ状態の記憶素子は、Ｖｔｈ≦Ｖｖａ−ｓｐｅｅｄのときには高速で、Ｖｖａ＞Ｖｔｈ＞Ｖｖａ−ｓｐｅｅｄのときには低速でプログラムされる。Ｖｔｈ＞Ｖｖａはプログラミングロックアウト状態をトリガする。Ｂ状態記憶素子は、Ｖｔｈ≦Ｖｖｂ−ｓｐｅｅｄのときは高速で、Ｖｖｂ＞Ｖｔｈ＞Ｖｖｂ−ｓｐｅｅｄのときは低速でプログラムされる。Ｖｔｈ＞Ｖｖｂはプログラミングロックアウト状態をトリガする。Ｃ状態記憶素子は、Ｖｔｈ≦Ｖｖｃ−ｓｐｅｅｄのときは高速で、Ｖｖｃ＞Ｖｔｈ＞Ｖｖｃ−ｓｐｅｅｄのときは低速でプログラムされる。Ｖｔｈ＞Ｖｖｃプログラミングロックアウト状態をトリガする。
【００８２】
図７Ａは、１セットの記憶素子のための、ワードラインを前後する順に行われる２パスプログラミング動作を示す。描かれた構成要素は、はるかに大きい１セットの記憶素子、ワードラインおよびビットラインのうちの１サブセットであり得る。一の可能なプログラム動作では、ＷＬｎ上の記憶素子（四角で表される）が、第１プログラミングパスでプログラムされる。このステップは、丸付き数字「１」で表される。次に「２」において、ＷＬｎ＋１上の記憶素子が、第１プログラミングパスでプログラムされる。本実施例では、プログラミング対象のワードラインが選択された場合、各プログラムパルスの後に検証動作が行われる。選択ワードラインに対する検証動作の際に検証電圧が非選択ワードラインに印加され、検証動作といった検出動作が選択ワードラインに対して行われるように非選択記憶素子をオンにする（導通する）。次に「３」において、ＷＬｎ上の記憶素子が第２プログラミングパスでプログラムされる。次に「４」において、ＷＬｎ＋２上の記憶素子が、このワードラインのための第１プログラミングパスでプログラムされる。次に「５」において、ＷＬｎ＋１上の記憶素子が、第２プログラミングパスでそれぞれの最終状態にプログラムされる。
【００８３】
複数のプログラミングパスにおいてワードラインをこのワードラインを前後する順でプログラミングすることによって、容量結合によって生じる干渉効果（それらのＶｔｈ分布を引き上げ、かつ拡張する（広げる）性質がある）が減少する。対照的に、単一パスのプログラミングでは、各ワードラインは次のワードラインに移動する前に完全にプログラムされる。
【００８４】
第１及び第２プログラミングパスは本明細書において記載されたプログラミング方式のいずれを使用することもできる。図７Ｂは、１セットの記憶素子のための、ワードラインを前後する順に行われる３パスプログラミング動作を示す。下位ページの初期プログラミングパスは、上位ページの第１及び第２プログラミングパスの前に行われる。第１プログラミングパスは、データの下位ページをプログラムし、第２プログラミングパスは、第１プログラミングパスにおけるデータの上位ページをプログラムし、第３プログラミングパスは、第２プログラミングパスにおけるデータの上位ページのプログラミングを完成させる。「１」において第１プログラミングパスがＷＬｎのために行われ、「２」において第１プログラミングパスがＷＬｎ＋１のために行われ、「３」において第２プログラミングパスがＷＬｎのために行われ、「４」において第１プログラミングパスがＷＬｎ＋２のために行われ、「５」において第２プログラミングパスがＷＬｎ＋１のために行われ、「６」において第３プログラミングパスがＷＬｎのために行われ、「７」において第１プログラミングパスがＷＬｎ＋３のために行われ、「８」において第２プログラミングパスがＷＬｎ＋２のために行われ、「９」において第３プログラミングパスがＷＬｎ＋１のために行われ、その他も同様である。
【００８５】
一の可能な手法において、第１プログラミングパスは、図６Ａに記載された検証レベルＶｖＬＭを用い、第２プログラミングパスは、図６Ｂに記載された１セットの下位検証レベルＶｖａＬ，ＶｖｂＬ及びＶｖｃＬを用い、第３プログラミングパスは、図６Ｃに記載された１セットの上位検証レベルＶｖａ，Ｖｖｂ及びＶｖｃを用いる。第２プログラミングパスのための１セットの下位検証レベルと、第３プログラミングパスのための１セットの上位検証レベルと差異は、最も狭い１セットのＶｔｈ分布を成すためにシリコン基板上で最適化され得る。
【００８６】
第１、第２及び第３プログラミングパスは、本明細書において記載されるプログラミング方式のいずれを使用することもできる。
【００８７】
図８は、記憶素子をプログラムするために必要な最も高いＶｐｇｍと、この記憶素子のビットライン電圧との関係を示す。Ｘ軸はビットライン電圧（Ｖｂｌ）の増加示し、ｙ軸は記憶素子の完全なプログラミングに必要な最も高いＶｐｇｍ電圧を示す。
【００８８】
Ｖｂｌが増加するにつれて、記憶素子の完全なプログラミングに必要な最も高いＶｐｇｍも増加する。一般に、記憶素子のプログラミングスピードが低下する程度は、定数ｋ（これは描かれた線の傾きである）によって乗じられるＶｂｌに比例する。この定数は、典型的には１よりも大きく、なぜなら、Ｖｂｌにおける１Ｖの増加（例えばΔＶｂｌ＝１Ｖのビットラインステップサイズ）は、オフセットのためにＶｐｇｍだけ１Ｖより大きい増加（例えばΔＶｐｇｍ＝１Ｖのプログラムパルスステップサイズ）を必要とするからである。従って、増加するＶｂｌは、プログラミングスピードを制御し、かつＶｔｈ分布の幅を狭くするための強力なツールである。しかしながら、それは主にＶｓｇｄ（ドレイン側選択ゲート）マージン・ウィンドウ（ｍａｒｇｉｎ−ｗｉｎｄｏｗ）によって制限されるため、Ｖｂｌは高くなりすぎることはない。Ｖｂｌが高くなると、記憶素子をプログラミングするためにドレイン側選択ゲートをオンするために必要なＶｓｇｄ電圧も高くなる。しかし、Ｖｓｇｄ値が高くなると、禁じられた記憶素子のチャネルからのブースト電位リーク（ｂｏｏｓｔ  ｐｏｔｅｎｔｉａｌ  ｌｅａｋａｇｅ）のリスクがあり、これはプログラムディスターブを引き起こし得る。
【００８９】
記憶素子のプログラミングスピードは、トンネル酸化物に印加された電場に依存し、これはフローティングゲートの電圧と、このフローティングゲートの下の基板内のチャネルの電圧との差に比例する。通常、コントロールゲート電圧Ｖｐｇｍは、階段状にステップアップし、Ｖｂｌは０Ｖで固定される。（Ｖｔｈ分布を狭くするために）プログラミングを遅くするために、我々はより小さなＶｐｇｍステップサイズを使用することができる。しかしながら、これは、プログラムパルス及び検証動作の数の増加をもたらし、よって、プログラミング時間全体を増加する。Ｖｐｇｍステップサイズを変更する代わりに、我々は、実効Ｖｐｇｍステップサイズ（ΔＶｐｇｍ−ｅｆｆｅｃｔｉｖｅ）を小さくするために、複数のＶｐｇｍパルスのステップと足並みを揃えてＶｂｌを階段状に増加させることができる。次のように書くことができる。ΔＶｐｇｍ−ｅｆｆｅｃｔｉｖｅ＝ΔＶｐｇｍ−（ｋ×ΔＶｂｌ）（ここで、ｋ＞１及びΔＶｐｇｍ−ｅｆｆｅｃｔｉｖｅ＜ΔＶｐｇｍ）。典型的には、ｋの値は約１．４でよい。ΔＶｂｌが大きくなると結果としてΔＶｐｇｍ−ｅｆｆｅｃｔｉｖｅが小さくなる。この技術の利点は、Ｖｂｌを記憶素子の複数の異なるサブセット（ここで、各サブセットは異なる目標データ状態を有する）に対して異なる時期にステップアップすることができることである。よって、我々は、異なる目標データ状態に帰属する１セットの記憶素子のために異なるプログラミングスピードを与えることができる。一方、Ｖｐｇｍステップサイズを小さくした場合、プログラミング中の全ての記憶素子のプログラミングスピードに影響する。同等の小さなＶｐｇｍステップサイズを用いることと比較して、特定の目標データ状態のためにＶｂｌを一時にステップアップすることによって我々は同じ検証動作の数を維持することができ、かつプログラミングを終了するために必要なプログラムパルスの総数を減少させることができ、よってプログラミング時間全体を減少させることによって性能を向上することができる。
【００９０】
Ｖｂｌにおける「足並みを揃えた増加」は、例えば、記憶素子の所定の１サブセット（共通する目標データ状態を有し、かつプログラミングからまだロックアウトされていないもの）のためにＶｂｌを各プログラムパルスと共にステップアップすることができることを指す。プログラミングからロックアウトされた記憶素子のＶｂｌはＶｂｌロックアウトに設定される。
【００９１】
図９Ａは、ビットライン電圧がステップアップされるプログラミング技術を示す。全ての目標データ状態のためのプログラミングパスがステップ９００で始まる。ステップ９０２〜９１２は、全ての目標データ状態に対して個別かつ一部同時に行われる。ステップ９０２は、プログラミング中にビットラインステップアップを伴わずに一又は複数のプログラム・検証動作を行うことを含む。ステップ９０４にて、第１のトリガ条件が満たされる。これは、例えば後述する、Ｖｐｇｍレベル、予め決められたプログラムパルス数、又はビットスキャンに基づくことができる。第１のトリガ条件は、共通する目標データ状態を有する１サブセットの記憶素子に対してビットラインステップアップループを開始するための条件を表す。ステップ９０６は、プログラミング中にビットラインステップアップを伴う一又は複数のプログラム・検証動作を行うことを含む。ステップ９０８にて、第２のトリガ条件が満たされる。これは、例えば後述する、Ｖｐｇｍレベル、予め決められたプログラムパルス数、又はビットスキャンに基づくことができる。第２のトリガ条件は、共通する目標データ状態を有する１サブセットの記憶素子に対してビットラインステップアップループを停止するための条件を表す。ステップ９１０は、プログラミング中にビットラインステップアップを伴わずに一又は複数のプログラム・検証動作を行うことを含む。この場合、このビットラインは最大許容レベル（ロックアウトレベルよりも低い）にて固定することができる。このプログラム・検証動作は、ステップ９１２にて、関連する目標データ状態の記憶素子に対して終了する。実際には、検証レベルに到達した記憶素子は更なるプログラミングからロックアウトされ、よって、特定の目標データ状態を有する記憶素子のいくつかがプログラミングからロックアウトされる一方、この特定の目標データ状態を有するその他の記憶素子はプログラムされ続けることができる。場合においては（例えば関連する目標データ状態の記憶素子の全てがステップ９０６においてロックアウトするときなど）、ステップ９１０は行われない。図９Ａのプログラミング技術の詳細は後述する。
【００９２】
図９Ｂは、図９Ａのプログラミング技術の一例として、プログラムパルス数に応じて検証動作を受けるデータ状態を示す。プログラミング中、全ての記憶素子は共にプログラムされるが、Ａ状態検証レベルがＢ状態検証レベルより低く、Ｂ状態検証レベルがＣ状態検証レベルより低いため、低い目標状態に属する記憶素子は、高い目標状態に属する記憶素子よりも速くそれらの目標レベルに到達する。よって、プログラミング時間を節約するために、高い目標状態に対する検証動作は第１のプログラムパルス自体から始まる必要はない。典型的には、Ｂ状態検証動作は、初期のいくつかのプログラムパルスを飛ばすことができ、かつ、Ｃ状態検証動作は更なるプログラムパルスを飛ばすことができる。
【００９３】
シーケンス９５０は、Ｖｂｌが本明細書において記載されたようにステップアップされず、プログラミング中は０Ｖで固定され、例えばΔＶｐｇｍ＝ΔＶｐｇｍ−ｅｆｆｅｃｔｉｖｅ＝０．３Ｖであるときに行われる。まず、Ａ状態の記憶素子が検証され、次に、Ａ及びＢ状態の記憶素子が検証され、次に、Ｂ及びＣ状態の記憶素子が検証され、最後にＣ状態の記憶素子が検証される。このシーケンスは、提供された３つのシーケンス９５０，９６０及び９７０のうち最もプログラミング時間を費やす。この特定の例において、Ａ，Ｂ及びＣ状態の記憶素子が検証されるプログラミングパルスのセットがないことに留意されたい。これは、異なるＶｐｇｍステップサイズ伴う場合、又は他のデバイスパラメーターにおいていくつかの変更を伴う場合はこの限りではない。すなわち、シーケンス９６０及び９７０に記載されるように、Ａ，Ｂ及びＣ状態の記憶素子を検証する一又は複数のプログラミングパルスがあってもよい。
【００９４】
シーケンス９６０は、Ｖｂｌがプログラミング中に全ての目標データ状態に対して本明細書において記載されたようにステップアップされるときに行われ、ここで、ΔＶｐｇｍ＝０．４Ｖであり、かつΔＶｂｌが例としてΔＶｐｇｍ−ｅｆｆｅｃｔｉｖｅ＝０．３Ｖのように選択される。まず、Ａ状態の記憶素子が検証され、次にＡ及びＢ状態記憶素子が検証され、次にＡ，Ｂ及びＣ状態の記憶素子が検証され、次にＢ及びＣ状態の記憶素子が検証される、最後にＣ状態記憶素子が検証される。このシーケンスは、シーケンス９５０に比べてプログラミング時間を短縮する。記憶素子は、シーケンス９６０においてプログラムシーケンス９５０よりも速くプログラムされるが、これは、シーケンス９５０ではその全体を通してＶｐｇｍ＝ΔＶｐｇｍ−ｅｆｆｅｃｔｉｖｅ＝０．３Ｖであることと比較して、シーケンス９６０ではビットラインステップアップの前及び後の両方でΔＶｐｇｍ＝ΔＶｐｇｍ−ｅｆｆｅｃｔｉｖｅ＝０．４Ｖであるからである。しかしながら、両方のシーケンスにおいて同じＶｔｈ分布幅を達成することができるが、これは、シーケンス９５０及び９６０の両方において、共通する目標データ状態を有する記憶素子のプログラミング中はΔＶｐｇｍ−ｅｆｆｅｃｔｉｖｅ＝０．３Ｖであるからである。
【００９５】
シーケンス９７０は、Ｖｂｌが、プログラミング中に最も高い目標データ状態（例えば、Ｃ状態）を除く全ての目標データ状態に対して本明細書において記載されたようにステップアップされるときに行われ、ここで、ΔＶｐｇｍ＝０．４Ｖであり、ΔＶｂｌはΔＶｐｇｍ−ｅｆｆｅｃｔｉｖｅ＝０．３Ｖなどから選択される。まず、Ａ状態の記憶素子が検証され、次にＡ及びＢ状態の記憶素子が検証され、次にＡ，Ｂ及びＣ状態の記憶素子が検証され、次にＢ及びＣ状態の記憶素子が検証され、最後にＣ状態の記憶素子が検証される。このシーケンスは、シーケンス９６０と比較して更にプログラミング時間を短縮するが、これは、それらのプログラミング全体を通してＣ状態の記憶素子のためのΔＶｐｇｍ＝ΔＶｐｇｍ−ｅｆｆｅｃｔｉｖｅ＝０．４Ｖであり、よって、Ｃ状態の記憶素子のプログラミング時間が短縮されるからである。一般に、プログラミング時間はより多くの検証動作が一の所定のプログラムパルスに対して行われる場合に短縮されるが、これは、プログラムパルスの数及び関連するセットアップ時間が減少されるからである。
【００９６】
上述のように、通常、最も高い目標データ状態はより広いＶｔｈ分布を許容することができ、よって、最も高い目標データ状態に対してＶｂｌをステップアップしないことでプログラミング時間を更に短縮することができる。具体的には、Ｖｔｈ分布の上端は、Ｖｂｌがステップアップされない場合により高くなる。しかしながら、これは、最も低い状態の上端と最も高い状態の下端との間のギャップとして定義されるＶｔｈウインドウの観点からはそれほど重要というはわけではない。最も高い目標データ状態に対してＶｂｌをステップアップしない別の利点は、最も高い状態の記憶素子をプログラムするのに必要な最も高いＶｐｇｍが、Ｖｂｌがステップアップされるときよりも低いことである。Ｖｐｇｍが高いと、Ｅ状態の記憶素子に対してプログラムディスターブが増加し得る。よって、最も高い状態のビットラインステップアップを禁止することがプログラムディスターブの観点から望ましい。
【００９７】
この例は４つの状態のメモリデバイスを含むものだが、このコンセプトは、８個又は１６個の状態といった付加的な状態に拡張することもできることに留意されたい。
【００９８】
図１０は、図９Ｂのシーケンス９６０のためのプログラムパルス数に応じたプログラム・検証動作を示す。一般に、一のプログラム動作には選択ワードラインにパルス列を印加することが含まれ、ここで、このパルス列は、一又は複数の検証パルスが後に続くプログラムパルスである。一又は複数の検証パルスが後に続くプログラムパルスの各組み合わせによって、動作又はプログラム・検証の繰り返しが構成される。プログラムパルスは任意の数の異なる波形を有することができることに留意されたい。矩形波形が描かれているが、マルチレベル形状又は傾斜のついた形状といった他の形状も可能である。パルス列は、典型的には、固定されたステップサイズを用いて、その大きさが段階的に増加するプログラムパルスを有するが、様々なステップサイズを用いることも可能である。新たなパルス列がマルチパスプログラミング動作の各プログラミングパスに印加され、初期Ｖｐｇｍレベルにて始まり、最大許容Ｖｐｇｍレベルよりも低い最終Ｖｐｇｍレベルにて終わる。初期Ｖｐｇｍレベルは、異なるプログラミングパスにおいて同一でも異なっていてもよい。最終Ｖｐｇｍレベルも、異なるプログラミングパスにおいて同でも異なっていてもよい。このステップサイズは異なるプログラミングパスにおいて同一でも異なっていてもよい。場合においては、Ｖｔｈ分布幅を減少させるために最終プログラミングパスにおいてより小さなステップサイズが用いられる。
【００９９】
パルス列１０００は、プログラミングのために選択されたワードライン及びこれに関連する１セットの不揮発性記憶素子に印加される一連のプログラムパルス１００５，１０１０，１０１５，１０２０，１０２５，１０３０，１０３５，１０４０，１０４５，１０５０，１０５５，１０６０，１０６５，１０７０及び１０７５を含む。検証中の目標データ状態に基づき、各プログラムパルスの後に１つ、２つ又は３つの検証レベルが提供される。プログラムパルスと検証パルスとの間で０ＶがＷＬｎに印加され得る。例えば、Ａ状態検証パルス（例えば、波形１００６）が、第１、第２及び第３プログラムパルス１００５、１０１０、１０１５のそれぞれの後に印加され得る。Ａ及びＢ状態検証パルス（例えば、波形１０２１）が、第４、第５及び第６プログラムパルス１０２０、１０２５、１０３０のそれぞれの後に印加され得る。Ａ，Ｂ及びＣ状態検証パルス（例えば、波形１０３６）が、第７及び第８プログラムパルス１０３５、１０４０のそれぞれの後に印加され得る。Ｂ及びＣ状態検証パルス（例えば、波形１０４６）が、第９、第１０及び第１１プログラムパルス１０４５，１０５０、１０５５のそれぞれの後に印加され得る。最後に、Ｃ状態検証パルス（例えば、波形１０６１）が、第１２，第１３，第１４及び第１５プログラムパルス１０６０，１０６５，１０７０、１０７５のそれぞれの後に印加され得る。
【０１００】
図１１Ａは、複数の異なるデータ状態のためのプログラムパルス数に応じたビットライン電圧のステップアップを示し、ここでは、全てのデータ状態に対して共通するステップサイズが用いられるものである。波形１１００，１１０２及び１１０４は、Ａ，Ｂ及びＣ状態のそれぞれのためのビットライン電圧を表す。この例において、Ｖｂｌは、固定されたステップサイズΔＶｂｌを用いてＶ１，Ｖ２，Ｖ３，Ｖ４，Ｖ５及びＶｂｌ−ｍａｘ（最大許容レベル）にステップアップされる。Ｖｂｌ−ｌｏｃｋｏｕｔは、Ｖｂｌ−ｍａｘより高いロックアウトビットライン電圧を表している。いくつかの場合において、特定の目標状態の全ての記憶素子は、Ｖｂｌ−ｍａｘに到達する前にロックアウトされることができ、よって、Ｖｂｌ−ｍａｘは到達してもよいし到達しなくてもよいセーフガードである。
【０１０１】
各目標データ状態のために、ビットラインステップアップの開始及び／又は終了は異なるトリガ条件に基づいて設定することができる。一の適応的ではない手法において、固定されたＶｐｇｍパルス数が各目標データ状態のためのビットラインステップアップ制御ループの開始及び終了のために設定される。例えば、このメモリデバイスにおけるＲＯＭヒューズパラメータは、Ａ状態のための開始及び終了プログラムパルス数としてＢＬ−ｒａｍｐ−ｓｔａｒｔ−Ａ及びＢＬ−ｒａｍｐ−ｅｎｄ−Ａといったパラメーターによって設定され得る（他のデータ状態に対しても同様である）。この例では、ＢＬ−ｒａｍｐ−ｓｔａｒｔ−Ａ＝２，ＢＬ−ｒａｍｐ−ｅｎｄ−Ａ＝７，ＢＬ−ｒａｍｐ−ｓｔａｒｔ−Ｂ＝５，ＢＬ−ｒａｍｐ−ｅｎｄ−Ｂ＝１０，ＢＬ−ｒａｍｐ−ｓｔａｒｔ−Ｃ＝８、及びＢＬ−ｒａｍｐ−ｅｎｄ−＝１３である。各データ状態は、それ自体のビットラインステップアップ制御ループを有する。この例において、プログラムパルスの数は、各ビットラインステップアップ制御ループにおいて同じであり、なぜなら、所望のＶｔｈ分布幅は各データ状態にとって同じであるからである。より広いＶｔｈ分布幅が許容される場合、ビットラインステップアップ制御ループは、より少ない数のプログラムパルスによりより小さくすることができる。
【０１０２】
ビットラインステップアップの開始及び終了のために用いられるＶｐｇｍパルス数は、以下のように選択されることに留意されたい。すなわち、このＶｐｇｍパルス数は、一のデータ状態の比較的少数の記憶素子がそのデータ状態のビットラインステップアップ制御ループの前又は後に検証レベルに到達してロックアウトし、一方、大部分の記憶素子がビットラインステップアップ制御ループ中に検証レベルに到達してロックアウトするように選択される。ビットラインステップアップ制御ループの前又は後に少数の記憶素子が検証レベルに到達し、かつロックアウトできるようにすることは、Ｖｔｈ分布を著しく拡張するものではない。しかしながら、これはΔＶｐｇｍ−ｅｆｆｅｃｔｉｖｅを低下する時間を短縮し、全プログラミング時間が不必要に延長されることはない。
【０１０３】
図１１ＢはＡ状態の記憶素子のためのビットラインステップアップループを開始するためのトリガ条件を示す。プログラミングパスの一例において、Ａ状態の記憶素子は、ＶｖａＬを用いてプログラムされ、Ｅ状態分布１１１０から始まる。分布１１１２は、一又は複数のプログラムパルスの後のＡ状態の記憶素子を表す。分布１１１２の一部分１１１４は、Ｖｔｈ＞ＶｖａＬであるＡ状態の記憶素子を表す。
【０１０４】
図１１Ｃは、Ａ状態の記憶素子のためのビットラインステップアップループを停止するためのトリガ条件を示す。分布１１２０は、一又は複数の付加的なプログラムパルスの後のＡ状態の記憶素子を表す。分布１１２０の一部分１１１６は、Ｖｔｈ＜ＶｖａＬであるＡ状態の記憶素子を表す。同時にプログラムされ得る他の目標状態の記憶素子のＶｔｈ分布は描かれていない。
【０１０５】
上記の非適応的な手法の代替として、適応的な手法が、ビットラインステップアップループの開始及び／又は終了を設定するために使用され得る。これは、開始及び／又は終了時間が同じメモリデバイス内の複数の異なるセットの記憶素子（例えば異なるワードライン上のもの）に対して異なることを可能にし、かつ、複数の異なるメモリデバイス内の複数の異なるセットの記憶素子に対して異なることを可能にする。更に、開始及び／又は終了時間は、例えば、プログラム・消去サイクルが累積されるにつれて、性能・動作の経時変化に基づき、又は温度変化といった異なる環境条件に基づき、同じ１セットの記憶素子において異なることができる。
【０１０６】
例えば、固定数のプログラムパルスを使用する代わりに、我々は、特定の検証レベルよりも上又は下の記憶素子の最小数に基づき、ビットラインステップアップループを開始及び／又は終了することができる。例えば、領域１１１４で表された記憶素子は、ビットスキャン手続によって検出することができ、このビットスキャン手続では、関連する記憶素子がＶｔｈ＞ＶｖａＬであるかを判定するために各ビットラインのセンス増幅器が読み出される。特定の最小数のビット（例えば、Ａ状態の記憶素子）がＶｖａＬよりも高いと検出されたとき、Ａ状態のためのビットラインステップアップループが開始する。同様に、ビットラインステップアップループは、ＶｔｈがＶｖａＬより低いＡ状態ビットの数が特定の数よりも少ないとき（又は、Ｖｔｈ＞ＶｖａＬであるＡ状態ビットの数が特定の数よりも多いとき）に停止することができる。ビットラインステップアップ開始又は停止の判定（決定）がなされるビットスキャン中の特定の数のビットは、別のＲＯＭヒューズパラメータによって制御され得る。同様の判定が、それらの各検証レベルにてビットスキャンを行うことによって他の状態のためになされ得る。
【０１０７】
ビットラインステップアップを停止するための別のトリガ条件がまだ満たされていないときに、Ｖｂｌが過剰に高いレベルにステップアップしないように、最大許容Ｖｂｌ（例えば、図１１ＡのＶｂｌ−ｍａｘ）を持たせることも可能である。
【０１０８】
別の手法において、各データ状態のためのビットラインステップアップループは、各ビットスキャンパスの後で、かつ特定の数の付加的なプログラムパルスの完了とともに開始することができる。同様に、各データ状態のためのビットラインステップアップは、ビットスキャンパスの後で、かつ特定の数の付加的なプログラムパルスの完了とともに終了することができる。
【０１０９】
別の手法において、一のデータ状態のためのビットラインステップアップループは、別のより低いデータ状態のためのビットスキャンパスの後で、かつ特定の数の付加的なプログラムパルスの完了とともに、開始することができる。例えば、Ｂ状態記憶素子のためのビットラインステップアップループは、Ａ状態の記憶素子のためのＶｖａＬでのビットスキャンパスの後で、かつ特定の数の付加的なプログラムパルス（例えば、図１１Ａと一致する３つのプログラムパルス）の完了とともに、開始することができる。ビットラインステップアップを停止するために類似する方法を用いることもできる。係る方法を用いて、ビットラインステップアップの開始及び停止は、単に最も低い状態にのみビットスキャン動作を行うことによって全てのデータ状態のために適応可能とすることができる。
【０１１０】
任意の特定の目標データ状態のためにビットラインステップアップループをいつ開始及び／又は終了するかを判定（決定）するために、上記方法の任意の組み合わせを使用することもできる。
【０１１１】
呈示した例では、１個の記憶素子メモリデバイスにつき４つの状態の２ビットの実施例を記載している。しかしながら、このコンセプトは、例えば、８個又は１６個の状態のデバイスにも用いることができる。しかしながら、同時に付加的なビットライン電圧を生じさせることが必要となり得る。
【０１１２】
図１２Ａは、図１１Ａと一致する、Ａ状態の記憶素子のためのプログラムパルス数に応じたプログラミング速度を示す。上述したように、プログラムパルス毎の記憶素子のＶｔｈの変化（ΔＶｔｈ／パルス）の観点から、プログラミングスピード又は速度はＶｂｌに応じる。ビットラインバイアスが印加されないのであれば（Ｖｂｌ＝０Ｖ）、ΔＶｔｈ／パルス＝Ｒ２であり、ここでＲ２は高率（高速）である。Ｖｐｇｍステップアップと足並みを揃えて一定のビットラインステップアップが印加される場合、ΔＶｔｈ／パルス＝Ｒ１＜Ｒ２であり、ここで、Ｒ１は低率（低速）である。図１１Ａにおいて、Ａ状態の記憶素子に属するビットラインは第２プログラムパルスにてステップアップを開始する。よって、Ａ状態の記憶素子のためのＲ２からＲ１への遷移は第２プログラムパルスにて生じる。同様に、Ａ状態の記憶素子のためのビットラインステップアップが第８プログラムパルス（最後のステップアップは第７のプログラムパルスにて生じる）にて停止される。よって、Ａ状態の記憶素子のためのＲ１からＲ２に戻る遷移が第８プログラムパルスにて生じる。実際には、ΔＶｔｈ／パルスは、簡略化のために描かれた階段状の変化を呈するのではなく、一又は複数のプログラムパルスによって徐々に遷移し得る。第９プログラムパルスにて、Ａ状態の記憶素子はロックアウトされ、よって、プログラミングスピードはゼロに落ちる。
【０１１３】
図１２Ｂは、図１１Ａと一致する、Ｂ状態の記憶素子のためのプログラムパルス数に応じたプログラミング速度を示す。図１１Ａの例において，Ｂ状態の記憶素子のためのＲ２からＲ１への遷移が第５プログラムパルスで生じ、その後、Ｒ２からＲ１への遷移が第１１プログラムパルスにて生じる。第１２プログラムパルスにて、Ｂ状態の記憶素子はロックアウトされ、よって、プログラミングスピードはゼロに落ちる。
【０１１４】
図１２Ｃは、図１１Ａと一致する、Ｃ状態の記憶素子のためのプログラムパルス数に応じたプログラミング速度を示す。図１１Ａの例において、Ｃ状態記憶素子のためのＲ２からＲ１への遷移が第８プログラムパルスで生じ、その後、Ｒ２からＲ１への遷移が第１４プログラムパルスにて生じる。第１５プログラムパルスの後、プログラミングは終了し、よってＣ状態の記憶素子のためのプログラム速度はゼロに落ちる。
【０１１５】
図１３は、複数の異なるデータ状態のためのプログラムパルス数に応じたビットライン電圧のステップアップを示し、ここでは、全てのデータ状態に対して小さなステップサイズ、次に大きなステップサイズ、次に小さなステップサイズが用いられるものである。図１１Ａの例では、Ｖｂｌが、固定ステップサイズを用いて（すなわち定率にて）ステップアップした。この手法においては、複数の異なるビットラインステップアップ率が用いられる。第１の小さなビットラインステップアップ率を用い、次に第２の大きなビットラインステップアップ率を用い、次に第３の小さなビットラインステップアップ率を用いることが有益となり得る。第３のビットラインステップアップ率は、第２のビットラインステップアップ率より低く、かつ、第１のビットラインステップアップ率と等しくてよい。この手法は、ガウス分布に従い、ほとんどの記憶素子が目標検証レベル及びロックアウト状態に到達したときに最もプログラミングを遅くする。所定のワードライン上の記憶素子のための自然にプログラムされたＶｔｈ分布は、概して本質的にガウス分布であり、ほとんどの記憶素子のＶｔｈは、この分布の中心近くで生じ、一方、より少ないセルのＶｔｈはガウス分布の下端及び上端にて生じる。
【０１１６】
よって、所定の目標データ状態のために、ほとんどの記憶素子はガウス分布のピークにて同じプログラムパルス数の近くでロックアウトされ、よって我々は、最も高いビットラインステップアップ率を伴うこの時間で最もプログラミングを遅くすることによって、最も高い費用対効果比率を達成することができる。この利点は、Ｖｔｈ分布を狭くすることであり、その代償はプログラミング時間の増加である。ガウス分布の下端及び上端における記憶素子は、ほとんどの記憶素子がロックアウトされるプログラムパルスから遠い特定のプログラムパルス数にてロックアウトされる。この場合、最も高い費用対効果比率は、これらの特定のプログラムパルスの間の低いがゼロではないビットラインステップアップ率によって達成され得る。ガウス分布の更に下端及び更に上端における記憶素子は、ほとんどの記憶素子がロックされるプログラムパルスから更に遠い他のプログラムパルス数にてロックアウトされる。この場合、最も高い費用対効果比率は、これらの他のプログラムパルスの間にビットラインステップアップがないことによって達成され得る。
【０１１７】
例えば、波形１３００，１３０２及び１３０４は、それぞれＡ，Ｂ及びＣ状態の記憶素子のためのＶｂｌを表す。各波形は、ビットラインレベルＶ１’，Ｖ２’，Ｖ３’，Ｖ４’，Ｖ５’及びＶｂｌ−ｍａｘを含む。ＶｂｌがＶ１’及びＶ２’に設定されるときのステップアップ率又はステップサイズは比較的小さい。同様に、ＶｂｌがＶ５’及びＶｂｌ−ｍａｘに設定されるときのステップアップ率又はステップサイズも、比較的（及び任意には等しく）小さい。ＶｂｌがＶ３’及びＶ４’に設定されるときのステップアップ率又はステップサイズは、比較的大きい。
【０１１８】
図１４は、複数の異なるデータ状態のためのプログラムパルス数に応じたビットライン電圧のステップアップを示し、ここでは、下位のデータ状態に対して大きなステップサイズが用いられ、最も高いデータ状態に対して小さなステップサイズが用いられるものである。この例は、より小さなＶｂｌステップサイズが最も高い状態（この例においてＣ状態）に対して使用されることを除いて、図１１Ａのものと類似する。この場合においては、それぞれの目標データ状態に関連付けられたステップサイズを用いてＶｂｌがステップアップされ、ここでは、複数の異なるステップサイズが１セットの可能な目標データ状態のうちの少なくとも２つの異なる目標データ状態に関連付けられている。例えば、一のＶｂｌステップアップ率をＡ及びＢ状態の記憶素子のために用いることができ、かつ、別のより低いＶｂｌステップアップ率をＣ状態の記憶素子のために用いることができる。より小さなＶｂｌステップアップ率の使用によって、より広いＶｔｈ分布の代償としてより速いプログラミングがもたらされる。
【０１１９】
波形１４００，１４０２及び１４０４は、それぞれＡ，Ｂ及びＣ状態の記憶素子のためのＶｂｌを表す。よって、Ｃ状態のための波形１４０４におけるＶ１，Ｖ２，Ｖ３，Ｖ４及びＶ５のＶｂｌレベルは、図１１Ａのものと同じとなり得る。Ｖ１”，Ｖ２”，Ｖ３”及びＶ４”のＶｂｌレベルが、それぞれＡ及びＢ状態のための波形１４００及び１４０２において用いられる。上述したように、ビットラインステップアップがないことで、最も高い状態に対してより広いＶｔｈ分布をもたらし、これは一般的に、プログラミング時間を短縮するために許容される交換条件（トレードオフ）である。一方、より大きなＶｂｌステップアップ率によってより狭いＶｔｈ分布がもたらされるが、プログラミング時間がより長くなる。本実施例は、最も高い状態に対してビットラインステップアップを使用しないことと、より低い状態（例えば、Ａ，Ｂ及びＣ状態）に対してより大きなビットラインステップアップを使用することとの間の妥協案を提供する。これにより、ビットラインステップアップが用いられない場合と比較して、最も高い状態のために幾分より狭いＶｔｈ分布が提供されることによってバランスをとる。プログラミング時間は、最も高い状態に対してＶｂｌステップアップが用いられなかった場合よりも長いが、最も高い状態に対してより大きなＶｂｌステップアップが使用された場合よりも短い。
【０１２０】
図１５は、複数の異なるデータ状態のためのプログラムパルス数に応じたビットライン電圧のステップアップを示し、ここでは、全てのデータ状態のために共通するステップサイズが用いられ、付加的なビットライン電圧が閾値電圧レベルに基づき加えられるものである。いくつかのプログラミング技術において、付加的なビットライン電圧（Δ）が典型的には最も高い状態を除く全ての状態のための低速プログラミングのために用いられる。この付加的なビットライン電圧は、プログラミングからまだロックアウトされていない記憶素子（Ｖｔｈが個々の目標データ状態の第１検証レベルと第２検証レベルの間にあるもの）のために用いられ得る。例えば、第１検証レベル及び第２検証レベルは、Ａ状態のためにそれぞれＶｖａＬ及びＶｖａであり得、Ｂ状態のためにそれぞれＶｖｂＬ及びＶｖｂであり得、Ｃ状態のためにそれぞれＶｖｃＬ及びＶｖｃであり得る（例えば、図４を参照）。一の可能な実施例において、ビットラインステップアップは一のプログラムパルスにて開始し、付加的なビットライン電圧が異なるプログラムパルスにて加えられる。同様に、ビットラインステップアップは一のプログラムパルスにて停止することができる一方、付加的なビットライン電圧は異なるプログラムパルスにて停止する。共通する目標データ状態を有する１サブセットの記憶素子にビットラインステップアップが同時に印加され得る一方、このサブセットのプログラミング進度に関わらず付加的なビットライン電圧がビットラインを介して個々の記憶素子に印加される。付加的なビットライン電圧を印加することは、現在のステップアップレベルを越える付加的な固定量だけＶｂｌを引き上げることによって達成される。この手法は、所定時間にて必要とされるビットライン電圧の数を増加し得る。
【０１２１】
例えば、Ａ状態の記憶素子のために、波形１５００及び１５０２が、それぞれに加えられる付加的なビットライン電圧がないものとあるものとのビットラインステップアップレベルを表している。付加的なビットライン電圧はビットラインステップアップの前又は後で印加することもできることに留意されたい。Ｂ状態の記憶素子のために、波形１５０４及び１５０６は、それぞれに加えられる付加的なビットライン電圧がないものとあるものとのビットラインステップアップレベルを表している。Ｃ状態の記憶素子のために、波形１５０８及び１５１０は、それぞれに加えられる付加的なビットライン電圧がないものとあるものとのビットラインステップアップレベルを表している。Ｖｂｌ−ｍａｘ−ｎｅｗは、許容され得る新たなより高いＶｂｌを表す。あるいは、Ｖｂｌ−ｍａｘは、ビットラインステップアップがＶｂｌ−ｍａｘを越えるのを避けるために早く終了されるように実現される。すなわち、最大許容Ｖｂｌは、ビットラインステップアップレベル及び付加的なビットライン電圧の合計に基づき実現され得る。
【０１２２】
一実施形態において、１セットの不揮発性記憶素子をプログラミングするための方法は、１セットのプログラムパルスを前記１セットの不揮発性記憶素子に印加するステップを有する。ここにおいて、前記１セットの不揮発性記憶素子のうちの各不揮発性記憶素子は、ビットラインに接続されており、前記１セットの不揮発性記憶素子は、複数の異なるサブセットの不揮発性記憶素子を含む。各サブセットは、複数の目標データ状態のうちの１つの目標データ状態の１つの検証レベル（Ｖｖａ，Ｖｖｂ，Ｖｖｃ）にそれぞれプログラムされ、各サブセットは、それぞれ、１つの目標データ状態の１つの検証レベルにそれぞれプログラムされる１サブセットの不揮発性記憶素子を含む。この方法は更に、前記１セットのプログラムパルス中において、前記１サブセットの不揮発性記憶素子に対する第１のトリガ条件が満たされたときを判定するステップを含む。この方法は更に、第１のトリガ条件が満たされたときに、前記１セットのプログラムパルスのうちの複数の連続するプログラムパルスの各プログラムパルスと足並みを揃えて、前記１サブセットの不揮発性記憶素子のうちのプログラミングからまだロックアウトされていない不揮発性記憶素子のそれぞれのビットラインの電圧をステップアップするステップを含む。
【０１２３】
別の実施形態において、対応する不揮発性記憶システムは、１セットの不揮発性記憶素子を含み、この１セットの不揮発性記憶素子は、複数の異なるサブセットの不揮発性記憶素子を含み、各サブセットは、複数の目標データ状態のうちの１つの目標データ状態の１つの検証レベルにそれぞれプログラムされ、１つの目標データ状態の１つの検証レベルにプログラムされる１サブセットの不揮発性記憶素子を含む。それぞれのビットラインは各不揮発性記憶素子に接続されている。少なくとも一つの制御回路が、（ａ）１セットのプログラムパルスを前記１セットの不揮発性記憶素子に印加し、（ｂ）前記１セットのプログラムパルス中において、前記１サブセットの不揮発性記憶素子に対する第１のトリガ条件が満たされたときを判定し、（ｃ）前記第１のトリガ条件が満たされたときに、前記１セットのプログラムパルスのうちの複数の連続するプログラムパルスの各プログラムパルスと足並みを揃えて、前記１サブセットの不揮発性記憶素子のうちプログラミングからまだロックアウトされていない不揮発性記憶素子のそれぞれのビットラインの電圧をステップアップする。
【０１２４】
別の実施形態において、不揮発性記憶システムは、１セットのプログラムパルスを１セットの不揮発性記憶素子に印加する手段を含み、ここにおいて、前記１セットの不揮発性記憶素子のうちの各不揮発性記憶素子が１つのビットラインにそれぞれ接続されており、前記１セットの不揮発性記憶素子は複数の異なる複数のサブセットの不揮発性記憶素子を含む。各サブセットは、複数の目標データ状態のうちの１つの目標データ状態の１つの検証レベル（Ｖｖａ，Ｖｖｂ，Ｖｖｃ）にそれぞれプログラムされ、１つの目標データ状態の１つの検証レベルにそれぞれプログラムされる１サブセットの不揮発性記憶素子を含む。この不揮発性記憶システムは、１セットのプログラムパルス中において、第１のトリガ条件が１サブセットの不揮発性記憶素子に対して満たされたときを判定する手段を更に含む。この不揮発性記憶システムは、第１のトリガ条件が満たされたときに、前記１セットのプログラムパルスのうち複数の連続するプログラムパルスの各プログラムパルスと足並みを揃えて、前記１サブセットの不揮発性記憶素子のプログラミングからまだロックアウトされていない不揮発性記憶素子のそれぞれのビットラインの電圧をステップアップする手段を更に含む。
【０１２５】
別の実施形態において、１セットの不揮発性記憶素子をプログラミングするための方法は、１セットのプログラムパルスを前記１セットの不揮発性記憶素子に印加するステップを含む。ここにおいて、前記１セットの不揮発性記憶素子のうちの各不揮発性記憶素子は、１つのビットラインにそれぞれ接続されている。前記１セットの不揮発性記憶素子は、複数の異なるサブセットの不揮発性記憶素子を含む。各サブセットは、複数の目標データ状態のうち１つの目標データ状態の１つの検証レベルにそれぞれプログラムされる。各サブセットは、１つの目標データ状態の１つの検証レベルにプログラムされる１サブセットの不揮発性記憶素子を含む。この方法は更に、前記１セットのプログラムパルスのうち複数の連続するプログラムパルスの各プログラムパルスと足並みを揃えて、前記１サブセットの不揮発性記憶素子のうちプログラミングからまだロックアウトされていない不揮発性記憶素子のそれぞれのビットラインの電圧をステップアップするステップと、前記１セットのプログラムパルス中において前記１サブセットの不揮発性記憶素子に対して第１のトリガ条件が満たされたときを判定するステップと、前記トリガ条件が満たされたときに、前記１セットのプログラムパルスの１つ又は複数の付加的なプログラムパルスの各プログラムパルスにおいて前記電圧を固定するステップを含む。
【０１２６】
別の実施形態において、対応する不揮発性記憶システムは、１セットの不揮発性記憶素子を含む。この１セットの不揮発性記憶素子は、前記１セットの不揮発性記憶素子複数の異なるサブセットの不揮発性記憶素子を含む。各サブセットは、複数の目標データ状態のうち１つの目標データ状態の１つの検証レベルにそれぞれプログラムされる。各サブセットは、１つの目標データ状態の１つの検証レベルにプログラムされる１サブセットの不揮発性記憶素子を含む。それぞれのビットラインは各不揮発性記憶素子に接続されている。少なくとも一つの制御回路が、（ａ）１セットのプログラムパルスを前記１セットの不揮発性記憶素子に印加し、（ｂ）前記１セットのプログラムパルスのうちの複数の連続するプログラムパルスの各プログラムパルスと足並みを揃えて、前記１サブセットの不揮発性記憶素子のうちのプログラミングからまだロックアウトされていない不揮発性記憶素子のそれぞれのビットラインの電圧をステップアップし、（ｃ）前記１セットのプログラムパルス中に、前記１サブセットの不揮発性記憶素子に対してトリガ条件が満たされたときを判定し、（ｄ）前記トリガ条件が満たされたときに、前記１セットのプログラムパルスの１つ又は複数の付加的なプログラムパルスの各プログラムパルスにおいて前記電圧を固定する。
【０１２７】
対応する方法、本明細書において提供された方法を実施するためのシステム、並びにコンピュータ（若しくはプロセッサ）可読の記憶デバイスが提供される。
【０１２８】
上記本発明の詳細な説明は、説明のための例示にすぎない。上記本発明の詳細な説明は、詳細に開示した範囲に限定するものではない。本明細書が開示する技術は、上記の教示に基づき様々に変形、変更し得る。上記説明した実施形態は、本発明の原理とその具体的な適用例をよく説明するために選ばれたものであり、当業者は、具体的な事例に則して本発明を様々に変更し得る。本発明の技術的範囲は、添付された特許請求の範囲によって定まるものである。
【図１】
2013531331.tif 000003
【図２】
2013531331.tif 000004
【図３】
2013531331.tif 000005
【図４Ａ】
2013531331.tif 000006
【図４Ｂ】
2013531331.tif 000007
【図４Ｃ】
2013531331.tif 000008
【図５Ａ】
2013531331.tif 000009
【図５Ｂ】
2013531331.tif 000010
【図５Ｃ】
2013531331.tif 000011
【図６Ａ】
2013531331.tif 000012
【図６Ｂ】
2013531331.tif 000013
【図６Ｃ】
2013531331.tif 000014
【図６Ｄ】
2013531331.tif 000015
【図７Ａ】
2013531331.tif 000016
【図７Ｂ】
2013531331.tif 000017
【図８】
2013531331.tif 000018
【図９Ａ】
2013531331.tif 000019
【図９Ｂ】
2013531331.tif 000020
【図１０】
2013531331.tif 000021
【図１１Ａ】
2013531331.tif 000022
【図１１Ｂ】
2013531331.tif 000023
【図１１Ｃ】
2013531331.tif 000024
【図１２Ａ】
2013531331.tif 000025
【図１２Ｂ】
2013531331.tif 000026
【図１２Ｃ】
2013531331.tif 000027
【図１３】
2013531331.tif 000028
【図１４】
2013531331.tif 000029
【図１５】
2013531331.tif 000030
【国際調査報告】
2013531331.tif 000031
2013531331.tif 000032