(57)【要約】  不揮発性メモリシステムにおいて、引き上げられたビットライン等のプログラミングスピードに基づく減速措置が高速プログラミング記憶素子に適用される。多段階プログラミング動作がワードラインを前後する順に行われ、ここで、プログラミングスピードデータが、１プログラミング段階においてラッチ内に保存され、所定のワードラインの後続するプログラミング段階において使用するためにラッチから読み出される。高速プログラミング記憶素子及び低速プログラミング記憶素子は、多くの記憶素子が特定の検証レベルに到達した時を検出することと、記憶素子の自然閾値電圧分布に基づき設定された付加的な数のプログラムパルスを計数することと、その後、高速及び低速プログラミング記憶素子を分ける読み出し動作を実行することとによって識別され得る。ドレイン側選択ゲート電圧は、異なるプログラミング段階において、異なるビットラインバイアスレベルに適応するように調整され得る。【選択図】図８Ｂ
2013532881.tif 000002
【特許請求の範囲】
【請求項１】
１段階（ＦＯＧＧＹ）及び次の段階（ＦＩＮＥ）を含む多段階プログラミング動作を用いて１セットの不揮発性記憶素子（１５５）をプログラミングするための方法であって、
目標ワードライン（ＷＬｎ）の不揮発性記憶素子のために、前記１段階（ＦＯＧＧＹ）を実行するステップを含み、この１段階（ＦＯＧＧＹ）は、
（ａ）前記目標ワードラインの低速プログラミング不揮発性記憶素子から前記目標ワードラインの高速プログラミング不揮発性記憶素子を識別する識別ステップと、
（ｂ）この識別に応じて、（ｉ）前記目標ワードラインの低速プログラミング不揮発性記憶素子から前記目標ワードラインの高速プログラミング不揮発性記憶素子を識別するプログラミングスピードデータを第１セットのラッチ（ＤＬ１，ＤＬ２，ＤＬ３）に保存する保存ステップと、（ｉｉ）前記第１セットのラッチ内の前記プログラミングスピードデータに応じて、プログラミングスピードに基づく減速措置を課して前記目標ワードラインの前記高速プログラミング不揮発性記憶素子のうちの少なくともいくつかの不揮発性記憶素子のプログラミングを継続する継続プログラミングステップと、（ｉｉｉ）プログラミングスピードに基づく減速措置を課すことなく、前記目標ワードラインの前記低速プログラミング不揮発性記憶素子のうちの少なくともいくつかの不揮発性記憶素子のプログラミングを継続する継続プログラミングステップとを含み、
続いて、前記１セットの不揮発性記憶素子において別のワードライン（ＷＬｎ＋１）の不揮発性記憶素子のためにプログラミング動作を行うステップと、
前記次の段階（ＦＩＮＥ）の間、前記第１セットのラッチ内の前記プログラミングスピードデータに応じて、プログラミングスピードに基づく減速措置を課して前記目標ワードラインの前記高速プログラミング不揮発性記憶素子のプログラミングを継続し、前記第１セットのラッチ内の前記プログラミングスピードデータに応じて、プログラミングスピードに基づく減速措置を課すことなく、前記目標ワードラインの前記低速プログラミング不揮発性記憶素子のプログラミングを継続するステップと、
を含む、方法。
【請求項２】
前記別のワードライン（ＷＬｎ＋１）の前記揮発性記憶素子のためのプログラミング動作を実行する前記ステップは、多段階プログラミング動作の１段階（ＦＯＧＧＹ）を実行するステップを含み、このステップは、
（ｃ）低速プログラミング不揮発性記憶素子から高速プログラミング不揮発性記憶素子を識別する識別ステップと、
（ｄ）前記別のワードラインのための前記低速プログラミング不揮発性記憶素子からの前記高速プログラミング不揮発性記憶素子の前記識別に応じて、（ｉ）前記別のワードラインの前記低速プログラミング不揮発性記憶素子から前記別のワードラインの前記高速プログラミング不揮発性記憶素子を識別するプログラミングスピードデータを第２セットのラッチに保存するステップと、（ｉｉ）前記第２セットのラッチに応じて、プログラミングスピードに基づく減速措置を課して前記別のワードラインの前記高速プログラミング不揮発性記憶素子のうちの少なくともいくつかの不揮発性記憶素子のプログラミングを継続する継続プログラミングステップと、（ｉｉｉ）前記第２セットのラッチに応じて、プログラミングスピードに基づく減速措置を課すことなく、前記別のワードラインの前記低速プログラミング不揮発性記憶素子のうちの少なくともいくつかの不揮発性記憶素子のプログラミングを継続する継続プログラミングステップと、
を含む、請求項１に記載の方法。
【請求項３】
前記目標ワードラインの前記不揮発性記憶素子に関わる前記１段階（ＦＯＧＧＹ）は、第１セットの検証レベルを用い、
前記別のワードラインの前記不揮発性記憶素子に関わる前記１段階（ＦＯＧＧＹ）は、前記第１セットの検証レベルを用い、
前記目標ワードラインの前記不揮発性記憶素子に関わる前記次の段階（ＦＩＮＥ）は、第２セットの検証レベルを用い、この第２セットの検証レベルの各検証レベルは、前記第１セットの検証レベルの対応する検証レベルよりも高い、請求項２に記載の方法。
【請求項４】
関連する各プログラミングスピードに基づく減速措置は、引き上げられたビットライン電圧を含む、請求項１から３のいずれか一項に記載の方法。
【請求項５】
前記次の段階（ＦＩＮＥ）を実行するステップは、プログラミングスピードに基づく減速措置を前記目標ワードラインの各低速プログラミング不揮発性記憶素子に課す一方、更なるプログラミングスピードに基づく減速措置を前記目標ワードラインの各高速プログラミング不揮発性記憶素子に課すことを含む、請求項１から４のいずれか一項に記載の方法。
【請求項６】
前記次の段階（ＦＩＮＥ）の完了に応じて、前記第１セットのラッチをリセットするステップを更に含む、請求項１から５のいずれか一項に記載の方法。
【請求項７】
前記別のワードラインの前記不揮発性記憶素子のために、多段階プログラミング動作の次の段階（ＦＩＮＥ）を実行するステップを更に含み、このステップは、
プログラミングスピードに基づく減速措置を課して前記別のワードラインの前記高速プログラミング不揮発性記憶素子のプログラミングを継続する継続プログラミングステップと、前記第２セットのラッチに応じて、プログラミングスピードに基づく減速措置を課すことなく、前記別のワードラインの前記低速プログラミング不揮発性記憶素子のプログラミングを継続する継続プログラミングステップと、
を含む、請求項１から６のいずれか一項に記載の方法。
【請求項８】
前記１セットの不揮発性記憶素子のうちの付加的なワードライン（ＷＬｎ＋２）の不揮発性記憶素子のために、多段階プログラミング動作の１段階（ＦＯＧＧＹ）を行うステップを更に含み、このステップは、
（ｃ）前記付加的なワードラインの低速プログラミング不揮発性記憶素子から前記付加的なワードラインの高速プログラミング不揮発性記憶素子を識別する識別ステップと、
（ｄ）前記付加的なワードラインの前記低速プログラミング不揮発性記憶素子からの前記付加的なワードラインの前記高速プログラミング不揮発性記憶素子の前記識別に応じて、（ｉ）前記付加的なワードラインの前記低速プログラミング不揮発性記憶素子から前記付加的なワードラインの前記高速プログラミング不揮発性記憶素子を識別するプログラミングスピードデータを前記第１セットのラッチに保存する保存ステップと、（ｉｉ）前記第１セットのラッチ内の前記プログラミングスピードデータに応じて、プログラミングスピードに基づく減速措置を課して前記付加的なワードラインの前記高速プログラミング不揮発性記憶素子のうちの少なくともいくつかの不揮発性記憶素子のプログラミングを継続する継続プログラミングステップと、（ｉｉｉ）前記第１セットのラッチ内の前記プログラミングスピードデータに応じて、プログラミングスピードに基づく減速措置を課すことなく、前記付加的な目標ワードラインの前記低速プログラミング不揮発性記憶素子のうちの少なくともいくつかの不揮発性記憶素子のプログラミングを継続する継続プログラミングステップと、
を含む、請求項７に記載の方法。
【請求項９】
前記多段階プログラミング動作においてプログラムパルス（５０５，５１０，５１５，５２０，５２５，５３０，５３５，５４０，５４５，５５０）が前記目標ワードラインに印加され、
前記目標ワードラインの低速プログラミング不揮発性記憶素子から前記目標ワードラインの高速プログラミング不揮発性記憶素子を識別する前記識別ステップの間、前記プログラムパルスのステップサイズが一時的に小さくされる（６０４）、請求項１から８のいずれか一項に記載の方法。
【請求項１０】
前記多段階プログラミング動作においてプログラムパルスが前記目標ワードラインに印加され、
前記方法は更に、前記識別ステップ（ａ）の後に前記１段階において残りの各プログラムパルスの前に前記第１セットのラッチを読み出すステップを含み、前記継続プログラミングステップ（ｉｉ）及び（ｉｉｉ）は前記読み出しに応じる、請求項１から９のいずれか一項に記載の方法。
【請求項１１】
請求項１から１０のいずれか一項に記載の方法を実行する不揮発性記憶装置。
【請求項１２】
１段階（ＦＯＧＧＹ）及び次の段階（ＦＩＮＥ）を含む多段階プログラミング動作を用いて１セットの不揮発性記憶素子（１５５）をプログラミングするための方法であって、前記１セットの不揮発性記憶素子のうち目標ワードライン（ＷＬｎ）の不揮発性記憶素子のために、
前記１段階（ＦＯＧＧＹ）を実行するステップを含み、このステップは、
（ａ）低速プログラミング不揮発性記憶素子から高速プログラミング不揮発性記憶素子を識別する識別ステップと、
（ｂ）この識別に応じ、（ｉ）低速プログラミングスピードに基づく減速装置を課すために関連するビットライン電圧（Ｖｂｌ）を第１のゼロ以外のビットラインレベル（例えば１．２Ｖ）に設定して前記高速プログラミング不揮発性記憶素子のうちの少なくともいくつかの不揮発性記憶素子のプログラミングを継続する継続プログラミングステップと、（ｉｉ）関連するビットライン電圧を前記第１のゼロ以外のビットラインレベルより低い第２のゼロ以外のビットラインレベル（０．５Ｖ）に設定して前記低速プログラミング不揮発性記憶素子のうちの少なくともいくつかの不揮発性記憶素子のプログラミングを継続する継続ステップと、（ｉｉｉ）前記不揮発性記憶素子に関連付けられたドレイン側選択ゲート（ＳＧＤ）の共通のコントロールゲート電圧（Ｖｓｇｄ）を第１コントロールゲートレベル（例えば２．４Ｖ）にて設定するステップと、を含み、
前記１段階において関連する検証レベルに到達する高速プログラミング不揮発性記憶素子の前記少なくともいくつかの不揮発性記憶素子のため及び低速プログラミング不揮発性記憶素子の前記少なくともいくつかの不揮発性記憶素子のために、関連するビットライン電圧を前記第１ビットラインレベルより大きいロックアウトレベルに引き上げるステップと、
続いて、前記次の段階（ＦＩＮＥ）を実行するステップを含み、このステップは、関連するビットライン電圧を前記第１ビットラインレベルより低いゼロ以外のレベルに設定し、前記選択ゲートの前記共通のコントロールゲート電圧を前記第１コントロールゲートレベルよりも低い第２コントロールゲートレベル（例えば１．７Ｖ）に設定して、前記高速及び低速の不揮発性記憶素子のプログラミングを継続する継続ステップと、
前記次の段階において関連する検証レベルに到達する、前記高速プログラミング不揮発性記憶素子のうち前記少なくともいくつかの不揮発性記憶素子ため及び前記低速プログラミング不揮発性記憶素子の前記少なくともいくつかの不揮発性記憶素子のために、関連するビットライン電圧を前記ロックアウトレベルに引き上げるステップと、
を含む方法。
【請求項１３】
前記１段階において前記高速プログラミング不揮発性記憶素子に関連付けられた選択ゲートのために、前記第１コントロールゲートレベルが前記第１のゼロ以外のビットライン電圧レベルを通すのに十分高い、請求項１２に記載の方法。
【請求項１４】
前記多段階プログラミング動作において、プログラムパルス（５０５，５１０，５１５，５２０，５２５，５３０，５３５，５４０，５４５，５５０）が前記目標ワードラインに印加され、
前記方法は、前記識別ステップ（ａ）に応じて、ラッチ（ＤＬ１，ＤＬ２，ＤＬ３）内に前記目標ワードラインのプログラミングスピードデータを保存するステップと、前記識別ステップ（ａ）の後に前記１段階における残りの各プログラムパルスの前に前記ラッチを読み出すステップと、を更に含み、前記継続プログラミングステップ（ｉ）及び（ｉｉ）は前記読み出しに応じる、請求項１２又は１３に記載の方法。
【請求項１５】
請求項１２から１４のいずれか一項に記載の方法を実行する不揮発性記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、不揮発性メモリに関する。
【背景技術】
【０００２】
半導体メモリは、様々な電子デバイスで次第に広く使用されるようになってきている。たとえば、不揮発性半導体メモリは、携帯電話、ディジタルカメラ、携帯情報端末、モバイル・コンピューティング・デバイス、非モバイル・コンピューティング・デバイスなどのデバイスで使用される。電気的に消去可能なＰＲＯＭ（ＥＥＰＲＯＭ）およびフラッシュメモリは、不揮発性半導体メモリの中で最もよく使用されるものである。フラッシュメモリ、およびある種のＥＥＰＲＯＭに関しては、通常のフル装備のＥＥＰＲＯＭとは異なり、全メモリアレイまたは一部分のメモリの内容を１ステップで消去することができる。
【０００３】
従来のＥＥＰＲＯＭおよびフラッシュメモリは両方、半導体基板内のチャネル領域上に配置され、そのチャネル領域から絶縁されたフローティングゲートを利用する。フローティングゲートは、ソース領域とドレイン領域の間に位置する。フローティングゲートの上に、そのフローティングゲートから絶縁されているコントロールゲートが設けられている。このように形成されているトランジスタの閾値電圧（Ｖｔｈ）は、フローティングゲート上に保持されている電荷量によって制御される。すなわち、そのソースとドレインの間の導通を可能にすべくトランジスタをオンにする前にコントロールゲートに印加すべき電圧の最小量は、そのフローティングゲート上の電荷量レベルにより制御される。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
メモリにデータを正確にプログラムする能力は最重要である。しかしながら、これはメモリサイズが小型化されるにつれてより困難になる。
【課題を解決するための手段】
【０００５】
高速プログラミング記憶素子及び低速プログラミング記憶素子を識別することにより１セットの不揮発性記憶素子をプログラミングするための方法及び不揮発性記憶システム。
【図面の簡単な説明】
【０００６】
【図１】単一の行／列デコーダ及び読み出し／書き込み回路を用いた不揮発性メモリシステムのブロック図である。
【０００７】
【図２】図１のメモリアレイ１５５におけるＮＡＮＤフラッシュメモリセルの複数のブロックを示す。
【０００８】
【図３】図１のセンスブロック１００の一実施形態のブロック図である。
【０００９】
【図４】ＮＡＮＤストリング及び検出用コンポーネントの構成を示す。
【００１０】
【図５】プログラミング動作において選択ワードラインに印加されたプログラムパルスを示す。
【００１１】
【図６】多段階プログラミング動作の複数の異なる段階において印加され得るプログラム電圧を示す。
【００１２】
【図７Ａ】１セットの記憶素子のための、ワードラインを前後する順に行われる２段階プログラミング動作を示す。
【００１３】
【図７Ｂ】１セットの記憶素子のための、ワードラインを前後する順に行われる３段階プログラミング動作を示す。
【００１４】
【図８Ａ】多段階プログラミング動作の概要を示す。
【００１５】
【図８Ｂ】図８Ａの多段階プログラミング動作のステップ８００、８０２又は８０６の詳細を示す。
【００１６】
【図８Ｃ】図８Ａの多段階プログラミング動作のステップ８０４又は８０８の詳細を示す。
【００１７】
【図８Ｄ】３段階プログラミング動作に関するステップ８００及び８０４の詳細を示しており、ここでは、３段階プログラミング動作の第２段階において、上位状態の記憶素子の前に下位状態の記憶素子の高速プログラミング記憶素子及び低速プログラミング記憶素子が識別されるものである。
【００１８】
【図８Ｅ】３段階プログラミング動作に関するステップ８００及び８０４の詳細を示しており、ここでは、３段階プログラミング動作の第１段階において、上位状態の記憶素子の高速プログラミング記憶素子及び低速プログラミング記憶素子が識別され、かつ、３段階プログラミング動作の第２段階において、下位状態の記憶素子の高速プログラミング記憶素子及び低速プログラミング記憶素子が識別されるものである。
【００１９】
【図９Ａ】高速プログラミング記憶素子及び低速プログラミング記憶素子を含む１セットの記憶素子の自然閾値電圧分布を示す。
【００２０】
【図９Ｂ】１セットの記憶素子の圧縮された自然閾値電圧分布を示す。
【００２１】
【図９Ｃ】記憶素子をプログラムするために必要な最も高いＶｐｇｍと、この記憶素子のビットライン電圧との関係を示す。
【００２２】
【図９Ｄ】プログラミングシナリオの例を示す。
【００２３】
【図１０Ａ】２段階プログラミング動作の第１段階の始まりを示しており、ここでは、全ての記憶素子が消去状態にあるものである。
【００２４】
【図１０Ｂ】図１０Ａの後に続く状態を示しており、ここでは、２段階プログラミング動作の第１段階において、最小数の記憶素子がＶｔｈ＞ＶｖａＬを有するものである。
【００２５】
【図１０Ｃ】図１０Ｂの後に続く、付加的な数の「ｍ」個のプログラムパルスが印加された後の第１の変更態様を示しており、ここでは、２段階プログラミング動作の第１段階において、高速プログラミング記憶素子及び低速プログラミング記憶素子がＶｖａＬの検証レベルを用いて識別されるものである。
【００２６】
【図１０Ｄ】図１０Ｂの後に続く、付加的な数の「ｋ」個のプログラムパルスが印加された後の第２の変更態様を示しており、ここでは、２段階プログラミング動作の第１段階において、高速プログラミング記憶素子及び低速プログラミング記憶素子がＶｖの読み出しレベルを用いて識別されるものである。
【００２７】
【図１０Ｅ】２段階プログラミング動作の第１段階における、図１０Ｃ又は１０Ｄのいずれかの状態からのプログラミングを示す。
【００２８】
【図１０Ｆ】図１０Ｅの後に続く、２段階プログラミング動作の第２段階の開始の状態を示す。
【００２９】
【図１０Ｇ】２段階プログラミング動作の第２段階における、図１０Ｆの状態からのプログラミングを示す。
【００３０】
【図１１Ａ】３段階プログラミング動作の第１段階の開始を示しており、ここでは、４レベルメモリデバイスにおいて、全ての記憶素子が消去状態にあるものである。
【００３１】
【図１１Ｂ】図１１Ａの後に続く状態を示しており、ここでは、３段階プログラミング動作の第１段階において、最小数の上位状態の記憶素子がＶｔｈ＞ＶｖＬＭを有するものである。
【００３２】
【図１１Ｃ】図１１Ｂの後に続く、付加的な数の「ｍ」個のプログラムパルスが印加された後の状態を示しており、ここでは、３段階プログラミング動作の第１段階において、高速プログラミング及び低速プログラミングの上位状態の記憶素子がＶｖｈの読み出しレベルを用いて識別されるものである。
【００３３】
【図１１Ｄ】図１１Ｃの後に続く、３段階プログラミング動作の第２段階の開始における状態を示す。
【００３４】
【図１１Ｅ】図１１Ｄの状態の後に続く、３段階プログラミング動作の第２段階における下位状態の記憶素子及び上位状態の記憶素子のプログラミングを示す。
【００３５】
【図１１Ｆ】図１１Ｅの状態の後に続く、３段階プログラミング動作の第３段階の開始を示す。
【００３６】
【図１１Ｇ】３段階プログラミング動作の第３段階における、図１１Ｆの状態からのプログラミングを示す。
【００３７】
【図１１Ｈ】図１１Ｆ及び１１Ｇの変更態様として、図１１Ｄの条件の後に続く、２段階プログラミング動作の第２段階における下位状態の記憶素子及び上位状態の記憶素子のプログラミングを示す。
【００３８】
【図１２Ａ】図１１Ｄの状態の後に続く、３段階プログラミング動作の第１の変更態様の第２段階の開始におけるプログラミングを示しており、ここでは、最小数の下位状態記憶素子がＶｔｈ＞ＶｖａＬを有するものである。
【００３９】
【図１２Ｂ】付加的な数の「ｋ」個のプログラムパルスが印加された後の、図１２Ａの後に続く状態を示しており、ここでは、３段階プログラミング動作の第２段階において、高速プログラミング及び低速プログラミングの下位状態の記憶素子がＶｖｌの読み出しレベルを用いて識別されるものである。
【００４０】
【図１２Ｃ】図１２Ｂの状態の後に続く、３段階プログラミング動作の第１の変更態様の第２段階における下位状態の記憶素子及び上位状態の記憶素子のプログラミングを示す。
【００４１】
【図１３Ａ】３段階プログラミング動作の第２の変更態様の第２段階の開始を示しており、ここでは、下位検証レベルＶｖＬＭｘがＶｖＬＭに代わって使用されるものである。
【００４２】
【図１３Ｂ１】図１３Ａの後に続く状態を示しており、ここでは、３段階プログラミング動作の第２の変更態様の第２段階において、最小数の下位状態記憶素子がＶｔｈ＞ＶｖａＬを有するものである。
【００４３】
【図１３Ｂ２】図１３Ｂ１の後に続く、付加的な数の「ｋ１」個のプログラムパルスが印加された後の状態を示しており、ここでは、３段階プログラミング動作の第２の変更態様の第２段階において、高速プログラミング及び低速プログラミングの下位状態の記憶素子がＶｖｌの読み出しレベルを用いて識別されるものである。
【００４４】
【図１３Ｃ１】図１３Ａの後に続く状態を示しており、ここでは、３段階プログラミング動作の第２の変更態様の第２段階において、最小数の上位状態の記憶素子がＶｔｈ＞ＶｖｂＬを有するものである。
【００４５】
【図１３Ｃ２】図１３Ｃ１の後に続く、付加的な数の「ｋ２」個のプログラムパルスが印加された後の状態を示しており、ここでは、３段階プログラミング動作の第２の変更態様の第２段階において、高速プログラミング及び低速プログラミングの上位状態の記憶素子がＶｖｈの読み出しレベルを用いて識別されるものである。
【００４６】
【図１３Ｄ】図１３Ｂ２及び１３Ｃ２の状態の後に続き、３段階プログラミング動作の第２の変更態様の第２段階における下位状態の記憶素子及び上位状態の記憶素子のプログラミングを示す。
【００４７】
【図１４Ａ】３段階プログラミング動作の第１段階の開始を示しており、ここでは、８レベルメモリデバイスにおける全ての記憶素子が消去状態にあるものである。
【００４８】
【図１４Ｂ】図１４Ａの後に続く状態を示しており、ここでは、３段階プログラミング動作の第１段階において、最小数の上位状態の記憶素子がＶｔｈ＞ＶｖＬＭを有するものである。
【００４９】
【図１４Ｃ】図１４Ｂの後に続く、付加的な数の「ｋ」個のプログラムパルスが印加された後の状態を示しており、ここでは、３段階プログラミング動作の第１段階において、高速プログラミング及び低速プログラミングの上位状態の記憶素子がＶｖｈの読み出しレベルを用いて識別されるものである。
【００５０】
【図１４Ｄ】図１４Ｃの後に続く、３段階プログラミング動作の第１段階が完了したときの状態を示している。
【００５１】
【図１４Ｅ】図１４Ｄの後に続く状態を示しており、ここでは、プログラミングが３段階プログラミング動作の第２段階において生じ、かつ最小数の下位状態記憶素子がＶｔｈ＞ＶｖａＬを有するものである。
【００５２】
【図１４Ｆ】図１４Ｅの後に続く、付加的な数の「ｋ」個のプログラムパルスが印加された後の状態を示しており、ここでは、３段階プログラミング動作の第２段階において、高速プログラミング及び低速プログラミングの下位状態の記憶素子がＶｖｌの読み出しレベルを用いて識別されるものである。
【００５３】
【図１４Ｇ】図１４Ｆの後に続く、３段階プログラミング動作の第２段階が完了したときの条件を示す。
【００５４】
【図１４Ｈ】図１４Ｇの後に続、３段階プログラミング動作の第３段階の開始における条件を示す。
【００５５】
【図１４Ｉ】図１４Ｈの後に続く、３段階プログラミング動作の第３段階の終了における条件を示す。
【００５６】
【図１５Ａ】変更態様の３段階プログラミング動作の第１段階におけるプログラミングを示しており、ここでは、８レベルメモリデバイスにおいて全ての記憶素子が消去状態にあるものである。
【００５７】
【図１５Ｂ１】図１５Ａの条件の後に続く、変更態様の３段階プログラミング動作の第２段階におけるプログラミングを示しており、ここでは、最小数の下位状態記憶素子がＶｔｈ＞ＶｖａＬを有するものである。
【００５８】
【図１５Ｂ２】図１５Ｂ１条件の後に続く、付加的な数の「ｋ１」個のプログラムパルスが印加された後の変更態様の３段階プログラミング動作の第２段階における状態を示しており、ここでは、Ｖｖｌの読み出しレベルを用いて、高速プログラミング及び低速プログラミングの下位状態の記憶素子が識別されるものである。
【００５９】
【図１５Ｃ１】図１５Ａの条件の後に続く、変更態様の３段階プログラミング動作の第２段階におけるプログラミングを示しており、ここでは、最小数の上位状態の記憶素子がＶｔｈ＞ＶｖｄＬを有するものである。
【００６０】
【図１５Ｃ２】図１５Ｃ１の条件後に続く、付加的な数の「ｋ２」個のプログラムパルスが印加された後の変更態様の３段階プログラミング動作の第２段階における状態を示し、ここでは、高速プログラミング及び低速プログラミングの上位状態の記憶素子がＶｖｈの読み出しレベルを用いて識別されるものである。
【００６１】
【図１５Ｄ】図１５Ｂ２及び図１５Ｃ２の状態の後に続くプログラミングを示しており、ここでは、変更態様の３段階プログラミング動作の第２段階が完了している。
【００６２】
【図１５Ｅ】図１５Ｄの状態の後に続くプログラミングを示しており、ここでは、変更態様の３段階プログラミング動作の第３段階が完了している。
【００６３】
【図１６Ａ１】２ビットの記憶素子のための、多段階プログラミング動作において使用されるそれぞれのビットラインのためのデータラッチを示す。
【００６４】
【図１６Ａ２】３ビットの記憶素子のための、多段階プログラミング動作に使用されるそれぞれのビットラインのためのデータラッチを示す。
【００６５】
【図１６Ｂ】実施例１のためのデータラッチに記憶されたデータを示す。
【００６６】
【図１６Ｃ１】実施例２のためのデータラッチに記憶されたデータを示す。
【００６７】
【図１６Ｃ２】図１６Ｃ１の変更態様を示しており、ここでは、プログラミングスピードデータが第３段階において適用されないものである。
【００６８】
【図１６Ｃ３】実施例２Ａのためのデータラッチに記憶されたデータを示す。
【００６９】
【図１６Ｄ１】実施例３又は５のためのデータラッチに記憶されたデータを示す。
【００７０】
【図１６Ｄ２】図１６Ｄ１の変更態様を示しており、ここでは、第３段階においてプログラミングスピードデータが適用されていないものである。
【００７１】
【図１６Ｅ】実施例４又は６のためのデータラッチに記憶されたデータを示す。
【発明を実施するための形態】
【００７２】
メモリデバイスの大きさの拡大縮小のため、一のワードライン上の記憶素子ごとのばらつきが大きくなり、１セットの記憶素子の自然閾値電圧（Ｖｔｈ）分布が増加する。自然Ｖｔｈ分布が幅広くなると、各データ状態のために必要とされる検証動作の数も増加し、全プログラミング時間が増加することでプログラミング性能が落ちる。この問題を解消するために、多段階プログラミング動作では、高速プログラミング記憶素子を検出し、一又は複数のプログラミング段階（フェーズ）において減速措置（例えばビットライン電圧）をこれらの記憶素子に選択的に適用することによって、自然Ｖｔｈ分布を縮小し得る。様々な例示的な実施態様が２段階及び３段階プログラミング動作において提供される（但し本技術は広く適用可能である）。更に、高速プログラミング記憶素子及び低速プログラミング記憶素子（例えば２クラスの記憶素子）を識別する代わりに、それらのプログラミングスピードに基づいて３クラス以上の記憶素子を識別するとこも可能であり、かつ、高速のクラスのために各クラスに適合された減速措置を適用することも可能である。更に、減速措置は、いくつかのプログラミング技術において適用される付加的なビットラインの増加（この場合、ビットライン電圧が追加される）にも対応することができる。より大きなビットライン電圧を受けるために、一の選択されたプログラミング段階においてプログラミング中にドレイン側選択ゲート電圧を増加させることができる。
【００７３】
次に、より高速のプログラミングおよび電力消費の節減を可能にするために使用されうるメモリシステムの一例を説明する。一般に、任意の種類の不揮発性メモリを使用することができる。ＮＡＮＤストリングを備えるメモリは一例にすぎない。図１は、１つの行／列デコーダと読み出し／書き込み回路とを利用する不揮発性記憶システムのブロック図である。図は、一実施例について、１ページの記憶素子を並列に読み出し又はプログラムするための読み出し／書き込み回路を有するメモリデバイス１９６を示す。メモリデバイス１９６は、１つ以上のメモリダイ１９８を含んでいてもよい。メモリダイ１９８は、記憶素子１５５の２次元メモリアレイと、制御回路１１０、及び、読み出し／書き込み回路１６５を含む。メモリアレイ１５５については図４と関連付けてさらに説明する。
【００７４】
一実施形態では、記憶素子のアレイは、３次元であってもよい。メモリアレイ１５５は、行デコーダ１３０を介したワードラインと、列デコーダ１６０を介したビットラインによってアドレス指定可能である。読み出し／書き込み回路１６５は、複数のセンスブロック１００を含んでおり、１ページの記憶素子を並列に読み出し又はプログラムすることを許容する。典型的には、コントローラ１５０は、１つ以上のメモリダイ１９８のような同じメモリデバイス１９７（例えば、取り外し可能なストレージカード）内に含まれる。命令及びデータは、ライン１２０を介して、ホストとコントローラ１５０の間で転送され、また、ライン１１８を介して、コントローラと１つ以上のメモリダイ１９８の間で転送される。
【００７５】
制御回路１１０は、読み出し／書き込み回路１６５と協調して、メモリアレイ１５５に対してメモリ動作を実行する。制御回路１１０は、ステートマシン１１２、オンチップアドレスデコーダ１１４、及び電力制御モジュール１１６を含む。ステートマシン１１２は、メモリ動作のチップレベルの制御を提供する。オンチップアドレスデコーダ１１４は、ホスト又はメモリコントローラによって用いられるアドレスと、デコーダ１３０，１６０によって用いられるハードウェアアドレスとの間にアドレスインタフェースを提供する。電力制御モジュール１１６は、メモリ動作中のワードライン及びビットラインに供給される電力及び電圧を制御する。
【００７６】
いくつかの実施態様では、図１の構成要素の一部が結合されうる。様々な設計で、メモリアレイ１５５以外の構成要素のうちの１つまたは複数（単独あるいは組合せ）が、管理または制御回路として考えられうる。例えば、１つまたは複数の制御回路は、制御回路１１０、ステートマシン１１２、デコーダ１１４／１６０、電力制御１１６、センスブロック１００（図３のプロセッサ１９２を含む）、読み出し／書き込み回路１６５、コントローラ１５０などのいずれか１つまたは組合せを含み得る。センスブロック１００は図３と関連付けてさらに説明する。
【００７７】
別の実施形態において、不揮発性メモリシステムは、２つの行／列デコーダおよび読み出し／書き込み回路が使用される。様々な周辺回路によるメモリアレイ１５５へのアクセスは、アレイの反対側で対称的に実施され、したがって、アクセス線の密度および各辺の回路は半減される。そのため、行デコーダは２つの行デコーダに分割され、列デコーダは２つの列デコーダに分割される。同様に、読み出し／書き込み回路は、最下部からビットラインに接続する読み出し／書き込み回路と、アレイ１５５の最上部からビットラインに接続する読み出し／書き込み回路とに分割される。このようにして、読み出し／書き込みモジュールの密度は本質的に半分減少する。
【００７８】
図２は、図１のメモリアレイ１５５におけるＮＡＮＤフラッシュメモリセルのブロックを示す。メモリアレイは多数のブロックを含むことができる。各ブロック例２００、２１０は、多数のＮＡＮＤストリングと、ブロックで共有されるＢＬ０、ＢＬ１、．．．といったそれぞれのビットラインとを含む。各ＮＡＮＤストリングは、一端でドレイン選択ゲート（ＳＧＤ）に接続されており、ドレイン選択ゲートのコントロールゲートは、共通のＳＧＤラインを介して接続されている。ＮＡＮＤストリングは、他端でソース選択ゲートに接続されており、ひいては、共通ソースライン２２０に接続されている。ソース選択ゲートとドレイン選択ゲートとの間には、ＷＬ０〜ＷＬ６３など、６４本のワードラインが延在している。いくつかの場合において、ダミーワードラインをメモリアレイにおいて使用することもできる。これらのワードラインはユーザデータを含まない。例えば、ダミーワードラインはＳＧＳとＷＬ０との間にあってもよく、かつ、ＳＧＤとＷＬ６３との間にあってもよい。こうしたダミーワードラインは、この特定の例においてＷＬ０及びＷＬ６３が受け得る縁効果（例えば、プログラムディスターブメカニズム又は耐久性の劣化）からエッジデータワードラインを保護することができる。
【００７９】
ＮＡＮＤフラッシュメモリに加え、他のタイプの不揮発性メモリを使用することもできる。例えば、フラッシュＥＥＰＲＯＭシステムで有用な別のタイプのメモリセルは、導電性のフローティングゲートの代わりに非導電性の誘電素材を利用して不揮発的に電荷を蓄積する。導電性のコントロールゲートと、メモリ・セル・チャネルの上方にある半導体基板の表面との間に、酸化ケイ素、窒化ケイ素および酸化ケイ素（「ＯＮＯ」）で形成された３重の層誘電体が挟まれている。このセルは、セルチャネルから窒化物に電子を注入することによってプログラムされ、注入された電子は、限られた領域内で捕捉され、蓄積される。この蓄積された電荷はその後、検出可能な方法でセルのチャネルの一部分の閾値電圧を変える。このセルは、窒化物にホットホールを注入することによって消去される。ドープ処理したポリシリコンゲートが別々のセレクトトランジスタを形成するためにメモリ・セル・チャネルの一部分を超えて延伸するスプリットゲート構成で同様のセルを設けることができる。
【００８０】
別のアプローチでは、ＮＲＯＭセルが使用される。例えば、各ＮＲＯＭセルに２ビットが記憶され、このセルではＯＮＯ誘電体層がソース拡散領域とドレイン拡散領域との間のチャネル全体に延伸する。一方のデータビットの電荷は、ドレインに隣接する誘電体層に限局され、もう一方のデータビットの電荷はソースに隣接する誘電体層に限局される。誘電体内で空間的に分離された電荷蓄積領域のバイナリ状態を別々に読み込むことにより、マルチステートのデータ記憶が得られる。他のタイプの不揮発性メモリも公知である。
【００８１】
図３は、センスブロックの一実施形態を示すブロック図である。個々のセンスブロック１００は、センスモジュール１８０またはセンスアンプと呼ばれる１つ以上のコア部分と、管理回路１９０と呼ばれる共通部分とに区分けされる。一実施形態では、ビットラインごとに別々のセンスモジュール１８０が備えられており、１組の複数の、例えば４つまたは８つの、センスモジュール１８０につき１つの共通管理回路１９０が備えられている。グループ内のセンスモジュールの各々は、データバス１７２を介して、関連付けられた管理回路と通信する。そのため、１組の記憶素子のセンスモジュールと通信する１つ以上の管理回路が存在する。
【００８２】
センスモジュール１８０は、接続されたビットライン内の伝導電流が予め決められた閾値レベルより高いか低いかを判断することによって検知を実行するセンス回路１７０を備えている。センスモジュール１８０は、さらに、接続されたビットラインに電圧状態を設定するために用いられるビットラインラッチ１８２を含む。例えば、ビットラインラッチ１８２内で予め決められた状態がラッチされることによって、接続されたビットラインを、プログラム禁止を指定する状態（例えば、１．５〜３Ｖ）に引き上げる。例えば、ｆｌａｇ＝０がプログラミングを禁止できるのに対し、ｆｌａｇ＝１はプログラミングを禁止しない。
【００８３】
管理回路１９０は、プロセッサ１９２と、４セット（４組）のデータラッチ１９４〜１９７の例と、１セットのデータラッチ１９４とデータバス１２０との間を連結するＩ／Ｏインタフェース１９６とを備えている。センスモジュールごとに１セットのデータラッチを設けることができ、ＬＤＬ、ＵＤＬ、ＤＬ１及びＤＬ２によって特定されるデータラッチを各セットごとに設けることができる。いくつかの場合において、付加的なデータラッチを使用することができる。図１６Ａ１及び１６Ａ２も参照されたい。ＬＤＬは下位ページのデータのビットを記憶し、ＵＤＬは上位ページのデータのビットを記憶する。これは、１記憶素子につき４レベル又は２ビットのメモリデバイスである。１ビットラインにつき一の付加的なデータラッチを、１記憶素子につき一の付加的なデータビットのために設けることができる。ＤＬ１及びＤＬ２は、関連する記憶素子が高速プログラミングであるか低速プログラミングであるかを示すビットを記憶するために使用される。いくつかの場合において、余分なデータラッチの数は多段階プログラミング動作における段階数と同じであり、一方、他のケースでは、余分なデータラッチの数は多段階プログラミング動作における段階数よりも少ない。データラッチの使用については、特に図１６Ａ１〜１６Ｅを参照して以下に詳細が記載される。
【００８４】
プロセッサ１９２は、検知された記憶素子に記憶されているデータを判断し、判断されたデータをデータラッチの組内に記憶するなどの目的で計算を実行する。データラッチの各セット１９４〜１９７は、読み出し動作時にプロセッサ１９２によって判断されたデータビット群を記憶する目的、および、プログラム動作時にデータバス１２０から取り込んだデータビット群を記憶する目的で使用され、取り込まれるデータビット群は、メモリ内にプログラムされる予定の書き込みデータを表す。Ｉ／Ｏインタフェース１９６は、データラッチ１９４〜１９７とデータバス１２０との間のインタフェースを提供する。
【００８５】
読み出し中には、システムの動作はステートマシン１１２の制御下にあり、ステートマシン１１２は、アドレス指定された記憶素子への種々のコントロールゲート電圧の供給を制御する。メモリに用意された様々なメモリ状態に対応する様々な既定コントロールゲート電圧のステップを進む毎に、センスモジュール１８０は、これらの電圧の１つに遷移し、バス１７２を介して、センスモジュール１８０からプロセッサ１９２に対応する出力が提供される。その時点で、プロセッサ１９２は、センスモジュールの遷移イベントと、ステートマシンから入力ライン１９３を介して加えられたコントロールゲート電圧についての情報によって、結果としてのメモリ状態を特定する。それから、プロセッサは、メモリ状態に対するバイナリ符号化を計算し、得られたデータビット群をデータラッチ１９４〜１９７に格納する。管理回路１９０の別の実施形態では、ビットラインラッチ１８２は、センスモジュール１８０の出力をラッチするラッチ、及び、上記のようなビットラインラッチの二つの役割を持つ。
【００８６】
いくつかの実装形態では、複数のプロセッサ１９２を含むことができる。一実施形態では、各プロセッサ１９２は、出力ライン（図示省略）を含み、各出力ラインは、ワイヤードＯＲ（配線論理和）接続される。いくつかの実施形態では、出力ラインは、ワイヤードＯＲラインに接続される前段階で反転される。この構成は、ワイヤードＯＲを受け取るステートマシンが、プログラムされる全てのビットがいつ所望のレベルに到達したかを判断できるので、プログラム処理の完了時点を判定するプログラム検証処理における素早い判定を可能にする。例えば、各ビットがその所望のレベルに到達すると、そのビット用の論理「０」がワイヤードＯＲラインに送られる（又はデータ「１」が反転される）。全てのビットがデータ「０」を出力すると（又はデータ「１」が反転されると）、ステートマシンは、プログラミング処理の完了を知る。各プロセッサが８個のセンスモジュールと通信する実施形態では、ステートマシンは、ワイヤードＯＲラインを８回読み出す必要があり、あるいは、協働するビットラインの結果を蓄積するための論理をプロセッサ１９２に追加し、ステートマシンがワイヤードＯＲラインを一度だけ読み出せば良いようにする。同様に、論理レベルを正しく選択することによって、第１ビットの状態が変化し、それに従ってアルゴリズムが変化する際に、グローバルステートマシーンは、検出し得る。
【００８７】
１記憶素子につき２ビットである実施態様において、プログラム又は検証動作中に、プログラムされるべきデータ（書き込みデータ）がＬＤＬ及びＵＤＬラッチにおいてデータバス１２０から１セットのデータラッチ１９４〜１９７内に記憶される。１記憶素子につき３ビットである実施態様において、２つの上位データラッチＵＤＬ１及びＵＤＬ２が使用され得る。状態マシーン（ステートマシン）の制御の下、プログラミング動作は、アドレス指定された記憶素子のコントロールゲートに印加される一連のプログラミング電圧パルスを含む。各プログラミングパルスに続いて、復唱（検証）によって、記憶素子が所望の状態にプログラムされたかどうかを判定する。いくつかの場合では、プロセッサ１９２は、所望のメモリ状態に対する復唱メモリ状態を監視する。その２つが一致したとき、プロセッサ１９２は、プログラム禁止を指定する状態にビットラインを引き上げるように、ビットラインラッチ１８２を設定する。これにより、たとえプログラミングパルスがそのコントロールゲートに影響しても、ビットラインに接続した記憶素子がさらにプログラミングされないようにすることができる。他の実施形態では、プロセッサが最初にビットラインラッチ１８２をロードし、センス回路が検証処理中にそれに禁止値を設定する。
【００８８】
データラッチの各セット１９４〜１９７は、各センスモジュールのデータラッチのスタックとして実装されてもよい。一実施形態では、センスモジュール１８０毎に３個のデータラッチが存在する。いくつかの実装形態では、データラッチは、シフトレジスタとして実装され、内部に記憶されたパラレルデータをデータバス１２０用にシリアルデータに変換したり、その逆を行ったりする。ｍ個の記憶素子の読み出し／書き込みブロックに対応する全てのデータラッチを相互にリンクしてブロックシフトレジスタを構成し、シリアル転送によって、データのブロックを入力または出力できるようにする。特に、読み出し／書き込みモジュールの一群のデータラッチのそれぞれが、データバスへ或いはデータバスからデータを順に転送するように読み出し／書き込みモジュールのバンクを構成し、一群のデータラッチがあたかも読み出し／書き込みブロック全体のシフトレジスタの一部であるかのようにしてもよい。
【００８９】
データラッチは、関連付けられた記憶素子がプログラミング動作中に特定の管理点に達した時期を特定する。例えば、ラッチは記憶素子のＶｔｈが特定の検証レベルより低いことを識別することができる。データラッチは、記憶素子がページデータからの１つ以上のビットを現在記憶しているかどうかを示す。例えば、ＬＤＬラッチは、下位ページのデータを記憶する目的で使用することができる。ＬＤＬラッチは、関連付けられた記憶素子に下位ページビットが記憶されるときに、（例えば０から１へと）反転される。ＵＤＬラッチは、例えば、上位ページのデータを記憶する目的で使用することができる。ＵＤＬラッチは、関連付けられた記憶素子に上位ページビットが記憶されるときに反転される。反転は、関連付けられた記憶素子がプログラミングを完了するとき、例えば、記憶素子のＶｔｈがＶｖａ、ＶｖｂまたはＶｖｃなどの目標検証レベルを超えるときに行われる。ＵＤＬ１及びＵＤＬ２が使用される場合、上位の下位ビットが、関連する記憶素子において記憶されるとＵＤＬ１が反転され、そして、上位の上位ビットが、関連する記憶素子において記憶されるとＵＤＬ２が反転される。上位の下位ビットは中間ページビットと呼ばれることもある。
【００９０】
図４は、ＮＡＮＤストリング及び検出用コンポーネントの構成を示す。一実施形態において、検出コンポーネント４００が図１のセンスブロック１００に設けられており、制御装置４０８が図１の制御回路１１０に設けられている。
【００９１】
簡略化した一例において、ＮＡＮＤストリング４１２は、４つの記憶素子を含み、これらの記憶素子はそれぞれワードラインＷＬ０，ＷＬ１，ＷＬ２，ＷＬ３と導通する。実際には、付加的な記憶素子及びワードラインを使用することができる。更に、付加的なＮＡＮＤストリングが典型的には、１ブロックの不揮発性記憶素子又は他のセットの不揮発性記憶素子において互いに隣接して配置される。記憶素子は基板のｐウェル領域に結合されている。検出コンポーネント４００に加えて、電圧Ｖｂｌを有するビットライン４１０が描かれている。特に、ＢＬＳ（ビットライン検出）トランジスタ４０６はビットライン４１０に結合されている。ＢＬＳトランジスタ４０６は高電圧トランジスタであり、かつ検出動作中に制御装置４０８に応じて開放される。ＢＬＣ（ビットライン制御）トランジスタ４０４は、ビットラインが電流検出モジュール４０２と通信できるように、制御装置４０８に応じて開放される低電圧トランジスタである。検出動作中（例えば読み出し又は検証動作）、予備充電（ｐｒｅ−ｃｈａｒｇｅ）動作が行われ、これは、電流検出モジュール４０２内のコンデンサが充電されるものである。ＢＬＣトランジスタ４０４は予備充電を可能にするために開放され得る。更に、検出動作中、検証電圧が、当該動作に関係する一又は複数の記憶素子を有する一のワードラインに印加される。
【００９２】
ＮＡＮＤストリング４３０のドレイン側において、ＢＬＳトランジスタ４０６がオンされ、例えば、導通状態にされ、あるいは開放される。更に、電圧ＶｂｌｃがＢＬＣトランジスタ４０４に印加され、これを導通状態にする。電流検出モジュール４０２内の予備充電されたコンデンサはビットラインを通してソースに放電し、このソースが電流シンクとして機能するようにする。選択記憶素子が導電状態にあるときに電流が選択不揮発性記憶素子を通して流れてソースに溜まるように、ＮＡＮＤストリングのドレイン側の予備充電されたコンデンサはソースの電位を越える電位に予備充電され得る。
【００９３】
予備充電されたコンデンサは、記憶素子が非導電状態にある場合、感知されるほど放電しない。放電期間の後、結果として生じたデータは、各記憶素子のプログラミングを監視及び制御するために管理／制御回路に伝送され得る。
【００９４】
特に、Ｖｃｇｒの印加によって選択記憶素子が導電状態にある場合、比較的高い電流が流れる。選択記憶素子が非導電状態にある場合、電流は全くあるいはほとんど流れない。電流検出モジュール４０２はセル／記憶素子電流ｉｃｅｌｌを検出することができる。一の可能な手法において、電流検出モジュールは、ΔＶ＝ｉ・ｔ／Ｃという関係によってある固定電流に拘束される電圧降下を判定し、ここで、ΔＶは電圧降下であり、ｉは固定電流であり、ｔは、予め決められた放電時間であり、Ｃは電流検出モジュール内の予備充電されたコンデンサの静電容量である。より大きな電圧降下は、より高い電流を意味する。所定の放電期間の終了時に、ｉ及びＣが固定されるため、所定の電流のためのΔＶが判定される。一の手法において、ＰＭＯＳトランジスタは、境界値に関連するΔＶのレベルを判定するために用いられる。別の可能な手法において、セル電流弁別器は、伝導電流が所定の限界電流より高いか低いかを判定することによって、電流レベルの弁別器又はコンパレータとして機能する。
【００９５】
対照的に、電圧検出は、ある固定電流に拘束される電圧降下を検出することを含まない。代わりに、電圧検出は、電荷共有が電圧検出モジュール内のコンデンサとビットラインの静電容量との間で生じるか否かを判定することを含む。この検出の間、電流は固定されておらず、また一定でもない。選択記憶素子が導通状態であるときに電荷共有はほとんどあるいは全く生じず、この場合、電圧検出モジュール内のコンデンサの電圧は著しく降下しない。電荷共有は、選択記憶素子が非導通状態であるときに生じ、この場合、電圧検出モジュール内のコンデンサの電圧は著しく降下する。
【００９６】
よって、電流検出モジュール４０２は、電流のレベルによって選択記憶素子が導通状態にあるか非導電状態にあるかを判定することができる。一般に、選択記憶素子が導電状態にある場合、高い電流が流れ、選択記憶素子が非導電状態にある場合、低い電流が流れる。選択記憶素子の閾値電圧は、非導電状態にあるときは比較レベル（例えば検証レベル又は読み出しレベル）より高く、導通状態にあるときは比較レベルより低い。
【００９７】
図５は、プログラミング動作において選択ワードラインに印加されたプログラムパルスを示す。一般に、プログラミング動作は、一又は複数のプログラミング段階においてパルス列を選択ワードラインに印加することを含み、ここで、パルス列はプログラムパルスを含み、これには一又は複数の検証パルスが続く。各段階は、プログラムパルスの個別のシーケンス又は階段を使用し、初期レベルから始まり、その段階のプログラミングを完了するために必要であれば最高レベルにステップアップする。一の段階のプログラミングは、記憶素子がその段階のための特定の検証レベルに到達すると完了する。
【００９８】
プログラムパルスは、任意の数の異なる波形を有することもできることに留意されたい。矩形波形が描かれているが、他の形状も可能である。マルチレベル形状又は傾斜のついた形状といった他の形状も可能である。パルス列５００は、一連のプログラムパルス５０５，５１０，５１５，５２０，５２５，５３０，５３５，５４０，５４５，５５０，…を含み、プログラミングのために選択されたワードラインに印加される。プログラム・検証の繰り返しには、プログラミングパルスを選択ワードラインに印加することと、その後、一又は複数の検証パルスを選択ワードラインに印加することによって一又は複数の検証動作を行うことが含まれる。
【００９９】
一の可能な手法において、プログラムパルスは所定のプログラミング段階において固定ステップサイズによって徐々に増加する。他の変更態様も可能である。例えば、プログラムパルスは、このプログラミング段階に特有のステップサイズによって徐々に増加することができる。初期及び／又は最終プログラムパルスレベルも、特定のプログラミング段階に特有ものとすることができる。
【０１００】
図６は、多段階プログラミング動作の複数の異なる段階において印加され得るプログラム電圧を示す。例えば、Ｖｐｇｍ−ｉｎｉｔ１にて始まり、Ｖｐｇｍ−ｆｉｎａｌ１にて終わる波形６０２は、第１プログラミング段階において連続する各プログラムパルスのプログラムパルス強度を表す。Ｖｐｇｍ−ｉｎｉｔ２にて始まり、Ｖｐｇｍ−ｆｉｎａｌ２にて終わる波形６００は、より小さなステップサイズを用い、第２プログラミング段階において連続する各プログラムパルスのより低いプログラムパルス強度を表す。最終プログラムパルスレベルは典型的には初期段階（第１段階）よりも第２段階のほうが高い。更に、第２段階では、Ｖｐｇｍステップサイズがより小さいため、プログラミングを終了するためには第１段階よりも多くのプログラムパルスが必要となる。更なるオプションは、一のプログラムパルスのＶｐｇｍを所定の量だけ急に増加することであり、この量は、メモリデバイスのＲＯＭヒューズパラメータによって制御することができる。このより大きなステップを伴う一のプログラムパルスは、高速プログラミングの記憶素子を減速するためにビットライン電圧が引き上げられるときに印加される。このステップにおいて、我々はビットラインバイアスを印加することによって高速プログラミングの記憶素子を減速するため、オーバープログラミングのリスクが減少する。後続するパルスに対し、Ｖｐｇｍは固定ステップサイズにて通常通りステップアップされ得る。
【０１０１】
３段階プログラミング動作において、一の手法では、波形６０２は第１及び第２段階において使用することができ、波形６００は最終あるいは第３段階において使用することができる。特にＬＭ状態のみが第１段階においてプログラムされる場合では、第１段階において第２段階と比較して更に大きなＶｐｇｍステップサイズを使用することも可能である。
【０１０２】
更なるオプションにおいて、Ｖｐｇｍ−ｉｎｉｔ１に始まり、Ｖｐｇｍ−ｆｉｎａｌ１ａで終わる波形６０４は、プログラミングスピードデータを得る段階において使用することができる。このプログラミングスピードデータは、ある記憶素子が高速の１セットの記憶素子に属するか低速の１セットの記憶素子に属するかを示すことができる。波形６０４は、比較的大きなステップサイズが使用される領域６０６及び６１０と、比較的小さなステップサイズが使用される領域６０８とを含む。すなわち、Ｖｐｇｍステップサイズが領域６０８において一時的に減少される。よって、プログラムパルスが多段階プログラミング動作において目標ワードラインに印加される場合、目標ワードラインの高速プログラミング中の不揮発性記憶素子を目標ワードラインの低速プログラミング中の不揮発性記憶素子から識別するときにプログラムパルスのステップサイズが一時的に減少される。
【０１０３】
この手法は、プログラミングスピードデータを得る際により小さなステップサイズを使用し、これにより、検出精度を高めることを確実にする。具体的には、領域６０８の始まりは、プログラミングスピードデータをより正確に得られる時間に設定され得る。領域６０８の終わりは、プログラミングスピードデータが得られた後の時間に設定され得る。領域６０８の始まり及び／又は終わりは例えば固定パルス数に設定され得る。あるいは、領域６０８の始まり及び／又は終わりは適応的に設定される。一の可能な手法において、図１０Ｂ（詳細は後述する）を参照すると、領域６０８の始まりは、少なくとも特定数の記憶素子が検証レベルＶｖａＬ（例えば記憶素子の数パーセント）に到達したときに設定され得る。非適応的な手法において、領域６０８の終わりは、特定数のプログラムパルスの後に生じるように設定することができる。あるいは、適応的な手法において、領域６０８の終わりは、特定数よりも少ない記憶素子（例えば記憶素子の数パーセント）がまだＶｖａＬに到達していないときに、すなわち、特定数より多くの記憶素子（例えばほぼ全ての記憶素子）がＶｖａＬに到達したときに生じるように設定することができる。
【０１０４】
同様の手法が、図１２Ａ，１３Ｂ１，１４Ｅ及び１５Ｂ１のプログラミングにおけるＶｖａＬ、図１１Ｂ及び１４ＢのプログラミングにおけるＶｖＬＭ、図１３Ｃ１のプログラミングにおけるＶｖｂＬ、並びに図１５Ｃ１のプログラミングにおけるＶｖｄＬに関して取られ得る。いくつかの場合において、ＶｖＬＭへのプログラミングの際にＬＭ段階においてより大きな基準Ｖｐｇｍステップサイズが使用され、この場合、この技術は比較的より有用である。
【０１０５】
図７Ａは、１セットの記憶素子のための、ワードラインを前後する順に行われる２パスプログラミング動作を示す。描かれた構成要素は、はるかに大きい１セットの記憶素子、ワードラインおよびビットラインのうちの１サブセットであり得る。一の可能なプログラム動作では、ＷＬｎ上の記憶素子（四角で表される）が、丸付き数字「１」で表されるように第１プログラミング段階でプログラムされる。次に（「２」）、ＷＬｎ＋１上の記憶素子が、第１プログラミング段階でプログラムされる。本実施例では、プログラミング対象のワードラインが選択された場合、各プログラムパルスの後に検証動作が行われる。選択ワードラインに対する検証動作の際にＶｒｅａｄレベル電圧が非選択ワードラインに印加され、検証動作といった検出動作が選択ワードラインに対して行われるように非選択記憶素子をオンにする（導通する）。次に（「３」）、ＷＬｎ上の記憶素子が第２プログラミング段階でプログラムされる。次に（「４」）、ＷＬｎ＋２上の記憶素子が、このワードラインのための第１プログラミング段階でプログラムされる。次に（「５」）、ＷＬｎ＋１上の記憶素子が、第２プログラミング段階でそれぞれの最終状態にプログラムされる。
【０１０６】
複数のプログラミング段階においてワードラインをこのワードラインを前後する順でプログラミングすることによって、容量結合によって生じる干渉効果（それらのＶｔｈ分布を引き上げ、かつ拡張する性質がある）は減少する。対照的に、単一パスのプログラミングでは、各ワードラインは次のワードラインに移動する前に完全にプログラムされる。
【０１０７】
図７Ｂは、１セットの記憶素子のための、ワードラインを前後する順に行われる３段階プログラミング動作を示す。下位ページの初期プログラミングパスは、上位ページの第１及び第２プログラミングパスの前に行われる。第１プログラミングパスは、データの下位ページをプログラムし、第２プログラミングパスは、第１プログラミングパスにおけるデータの上位ページをプログラムし、第３プログラミングパスは、第２プログラミングパスにおけるデータの上位ページのプログラミングを完成させる。「１」において第１プログラミングパスがＷＬｎのために行われ、「２」において第１プログラミングパスがＷＬｎ＋１のために行われ、「３」において第２プログラミングパスがＷＬｎのために行われ、「４」において第１プログラミングパスがＷＬｎ＋２のために行われ、「５」において第２プログラミングパスがＷＬｎ＋１のために行われ、「６」において第３プログラミングパスがＷＬｎのために行われ、「７」において第１プログラミングパスがＷＬｎ＋３のために行われ、「８」において第２プログラミングパスがＷＬｎ＋２のために行われ、「９」において第３プログラミングパスがＷＬｎ＋１のために行われ、その他も同様である。
【０１０８】
図８Ａは、多段階プログラミング動作の概要を示す。ステップ８００は、ＷＬｎのために、第１初期Ｖｐｇｍ、第１ステップサイズ、及び第１セットの検証レベルを用いて、プログラミング動作の１段階を行うことを含む。下記に記載した例において、この段階はいわゆる「曖昧な（ｆｏｇｇｙ）」段階と呼ばれ、これは、２段階プログラミング動作の第１段階、又は３段階プログラミング動作の第２段階である。第１セットの検証レベルは、４レベルメモリデバイスにおいてＶｖａＬ，ＶｖｂＬ，ＶｖｃＬを含むことができ、又は８レベルメモリデバイスにおいてＶｖａＬ，ＶｖｂＬ，ＶｖｃＬ，ＶｖｄＬ，ＶｖｅＬ，ＶｖｆＬ及びＶｖｇＬを含むことができる。ステップ８０２は、ＷＬｎ＋１のために、第１初期Ｖｐｇｍ、第１ステップサイズ、及び第１セットの検証レベルを用いて、プログラミング動作の１段階を行うことを含む。ステップ８０４は、ＷＬｎのために、第２初期Ｖｐｇｍ，第２ステップサイズ、及び第２セットの検証レベルを用いて、プログラミング動作の次の段階を行うことを含む。第２セットの検証レベルは、４レベルメモリデバイスにおいてＶｖａ，Ｖｖｂ，Ｖｖｃを含むことができ、又は８レベルメモリデバイスにおいてＶｖａ，Ｖｖｂ，Ｖｖｃ，Ｖｖｄ，Ｖｖｅ，Ｖｖｆ及びＶｖｇを含むことができる。第１セットの検証レベルは、これらの各検証レベルが第２セットのそれぞれの検証レベルより低くなるように、第２セットの検証レベルからオフセットされる。
【０１０９】
ステップ８０６は、ＷＬｎ＋２のために、第１初期Ｖｐｇｍ，第１ステップサイズ、及び第１セットの検証レベルを用いて、プログラミング動作の１段階を行うことを含む。ステップ８０８は、ＷＬｎ＋１のために、第２の初期Ｖｐｇｍ，第２ステップサイズ、及び第２セットの検証レベルを用いて、プログラミング動作の次の段階を行うことを含む。この処理は、全てのデータがプログラムされるまで続く。
【０１１０】
図８Ｂは、図８Ａの多段階プログラミング動作のステップ８００，８０２又は８０６の詳細を示す。ステップ８１０は、減速措置を選択記憶素子に適用することなく、第１セットの検証レベルを用いてプログラミングすることを含む。第１セットの記憶素子うちのある検証レベルを越えるＶｔｈを有する記憶素子は、関連するビットライン電圧を引き上げることによって更なるプログラミングからロックアウトされる。ここで、この電圧は、例えば、プログラミング中にＳＧＤを切断し、ブースティングに導く関連するチャネルを絶縁するのに十分高いレベルに引き上げられ、この記憶素子を更なるプログラミングから禁じる。ステップ８１２において、特定の時間に、例えば特定のトリガ条件が検出された場合、高速プログラミング記憶素子及び低速プログラミング記憶素子が識別される。この識別は、例えば全てのプログラムされたデータ状態（消去状態以外のデータ状態）に対して行うことができる。ラッチは、高速プログラミング記憶素子及び低速プログラミング記憶素子を特定し識別する情報（プログラミングスピードデータ）で更新される。例えば、１個の記憶素子に関連するラッチにおける１ビット値（０又は１）は、低速状態を表示することができ、他のビット値（１又は０）は高速状態を表示することができる。
【０１１１】
本明細書において「遅い」若しくは「低速」並びに「速い」若しくは「高速」という表記は自然Ｖｔｈ分布における記憶素子のＶｔｈの位置を指すことに留意されたい。プログラミング中、自然Ｖｔｈ分布がより高く移動すると、全ての記憶素子のＶｔｈがほぼ同じペースでシフトする定常状態に到達する（典型的には、一のプログラムパルスが、プログラミング中に使用されるＶｐｇｍステップサイズに近づいた後に、Ｖｔｈがシフトアップする）。しかし、自然Ｖｔｈ分布はガウス分布形状に近いため、これらの記憶素子うち半分はこの分布の高いほうの半分又はこの分布の先頭の半分に属する。これらの記憶素子は、「速い」若しくは「高速」と呼ばれる一方、他方の遅れた半分の記憶素子は「遅い」若しくは「低速」と呼ばれる。記憶素子の遅さ又は速さの測定は、単に、自然Ｖｔｈ分布の最下端及び最上端から記憶素子のＶｔｈがどの程度近い又は遠いかを示す。
【０１１２】
ステップ８１４には、第１セットの検証レベルを用いてプログラムを続けることが含まれ、プログラミングスピードに基づく減速措置を低速プログラミング記憶素子に適用することなく、プログラミングスピードに基づく減速措置を高速プログラミング記憶素子に適用する。一の手法において、現在のプログラミング段階の後続する残りの各プログラムパルスの前に、プログラミングスピードデータはラッチから読み出され、各記憶素子のために減速措置を適用するか否かを判定するために使用される。例えば、メモリチップ上の制御回路（例えばセンスブロック１００，図１及び３）は、データラッチを読み出すことができる。ラッチ内の「０」が高速プログラミング記憶素子を指し、ラッチ内の「１」が低速プログラミング記憶素子を指すと仮定する。「０」が読み出された場合、このラッチに応答して、減速措置が適用される。「１」が読み出された場合、このラッチに応答して、減速措置は適用されない。次のプログラムパルスが生じるまでに、メモリチップ上の制御回路はどのビットラインバイアスが以前のプログラミングパルスにおいて各記憶素子に使用されたかの履歴を喪失する。よって、この制御回路は、どの記憶素子が減速措置を受ける必要があるかを判定するために再びラッチを読み出す必要がある。この処理は、プログラミング段階に関わらず減速措置が適用される各プログラムパルスのために繰り返される。
【０１１３】
閾値電圧が第１セットの検証レベルのうちある検証レベルを越える記憶素子がロックアウトされる。このプログラミングは、プログラミング段階が完了するまで続く。「プログラミングスピードに基づく減速措置」とは、検出されたプログラミングスピードに基づかずに適用され得る他の種類の減速措置から区別するための表現である。例えば、いくつかの場合においては、記憶素子の閾値電圧に基づいて、この閾値電圧が目標検証レベルに近づくと、引き上げられたビットライン電圧が印加される。プログラミングスピードに基づく減速措置は、この場合においてビットライン電圧の付加的な増加であり得る。
【０１１４】
図８Ｃは、図８Ａの多段階プログラミング動作のステップ８０４又は８０８の詳細を示す。ステップ８２０において、ステップ８１２においてプログラミングスピードデータが記憶された１セットのラッチが、高速プログラミング記憶素子及び低速プログラミング記憶素子を特定するために読み出される。ステップ８２２は、第２セットの検証レベルを用いてプログラミングすることを含み、ここで、第２セットの各レベルは、第１セットにおいて対応するレベルよりも高い。プログラミングスピードに基づく減速措置は高速プログラミング記憶素子に適用され、一方、プログラミングスピードに基づく減速措置は低速記憶素子には適用されない。閾値電圧が第２セットの検証レベルのうちの一の検証レベルを越える記憶素子はロックアウトされる。これはプログラミング段階が完了するまでなされる。これは全プログラミング動作の完了も表し得、この場合、ステップ８２４にて、別のワードラインの記憶素子がこれらのラッチを使用することができるようにこれらのラッチをリセットする。
【０１１５】
図８Ｄは、３段階プログラミング動作に関するステップ８００及び８０４の詳細を示しており、ここでは、３段階プログラミング動作の第２段階において、特定のｎ番目のワードラインの高速プログラミング記憶素子及び低速プログラミング記憶素子が、上位状態の記憶素子の前に下位状態の記憶素子のために識別されるものである。ステップ８３０は、第１プログラミング段階（ＬＭ（中間よりもやや下）段階とも呼ばれる）において、プログラミングスピードに基づく減速措置を適用することなくＶｖＬＭを用い、第１プログラミング段階が完了するまで上位状態の記憶素子をプログラムする。第１プログラミング段階は、全ての上位状態の記憶素子のＶｔｈがＶｖＬＭに到達すると完了する。プログラミングスピードの検出はまだ行われていない。
【０１１６】
一の検証レベルにプログラムされるべき「全ての」記憶素子という表現は、無視されない全ての記憶素子を含むことを意味することに留意されたい。例えば、１ページのデータは６４Ｋの記憶素子に記憶される８ＫＢとなり得る。ごく一部の記憶素子には欠陥があり、これは、物理的欠陥を有するか、プログラムを非常に遅くして余分なプログラムパルスが必要となる他の問題を有する。例えば、評価は平均で６４Ｋの記憶素子のうち３２が欠陥であると判定し得る。よって、プログラミング中、どのビットが良くてどのビットが悪いかを特に知らずに、我々は、３２ビットを無視し、それらをプログラムしないことを選ぶことができる。プログラミング性能の観点から、数個の記憶素子を無視し、それらを修正するためにＥＣＣを使うことはより効率的である。無視されるべき記憶素子の数は、ＲＯＭヒューズにおけるパラメータによって決定され得る。
【０１１７】
下位状態の記憶素子はこの段階においてプログラムされず、消去状態を維持する。４個の状態の実施態様において、下位状態はＡ状態であり、上位状態はＢ及びＣ状態であり得る。８個の状態の実施態様において、下位状態は、Ａ，Ｂ及びＣ状態であり得、上位状態は、Ｄ，Ｅ，Ｆ及びＧ状態であり得る。１６個の状態又は他の実施態様も可能である。下位状態の記憶素子は、プログラミング動作の完了によって下位目標データ状態にプログラムされるべきであり、よってこの下位目標データ状態のデータを表す。同様に、上位状態の記憶素子は、プログラミング動作の完了によって上位目標データ状態にプログラムされるべきであり、よってこの上位目標データ状態のデータを表す。
【０１１８】
一旦、第１プログラミング段階がＷＬｎに対して完了すると、別のワードラインがステップ８３２にてプログラムされ得る。これは、例えばＷＬｎ＋１のための第１ＬＭプログラミング段階である（図７Ｂを参照）。
【０１１９】
ステップ８３４において、第２プログラミング段階（曖昧な段階と呼ばれる）が始まる。ここで、全ての目標データ状態を有する記憶素子は、プログラミングスピードに基づく減速措置が適用されることなく、第１の低いセットの検証レベルを用いてプログラムされる。プログラミングスピードの検出はまだ行われていない。
【０１２０】
ステップ８３６において、特定の時間にて下位状態の記憶素子の中で高速プログラミング記憶素子及び低速プログラミング記憶素子が識別され、それに応じてよってラッチが更新される。上位状態の記憶素子の中では高速プログラミング記憶素子及び低速プログラミング記憶素子はまだ識別されていない。高速プログラミング記憶素子及び低速プログラミング記憶素子を識別するための例示的な実施態様は以下に更に記載する。
【０１２１】
ステップ８３８において、第２（曖昧な）プログラミング段階は、第１の低いセットの検証レベルを用いて、全てのデータ状態のプログラミングを伴って続く。更に、プログラミングスピードに基づく減速措置が高速プログラミングの下位状態の記憶素子に適用され、プログラミングスピードに基づく減速措置は低速プログラミングの下位状態の記憶素子又は上位状態の記憶素子（このスピードはまだ判定されていない）には適用されない。
【０１２２】
ステップ８４０において、特定の時間にて上位状態の記憶素子の中で高速プログラミング記憶素子及び低速プログラミング記憶素子が識別され、それに応じてよってラッチが更新される。ステップ８３６及び８４０において、共通する１セットのラッチが更新され得る。
【０１２３】
ステップ８４２において、第２の（曖昧な）プログラミング段階は、第１セットの下位検証レベルを用いて、全てのデータ状態のプログラミングを伴って続く。プログラミングスピードに基づく減速措置が高速プログラミングの下位状態の記憶素子に適用され、プログラミングスピードに基づく減速措置は、低速プログラミングの下位状態の記憶素子又は上位状態の記憶素子に適用されない。これは、第２プログラミング段階が完了するまで続く。第２プログラミング段階は、第１セットの下位検証レベルにおいて全ての記憶素子のＶｔｈ（ビット無視数の記憶素子を引いたもの）が、関連する検証レベルに到達すると完了する。
【０１２４】
ステップ８４４は、一又は複数の他のワードラインをプログラミングすることを含む。例えば、これは、ＷＬｎ＋２のための第１ＬＭ段階を含み（図７Ｂの「４」を参照）、ＷＬｎ＋１のための第２段階が後に続く（図７Ｂの「５」を参照）ことができる。
【０１２５】
ステップ８４６において、ＷＬｎのプログラミングが第３段階のために始まると、ラッチが高速プログラミング記憶素子を特定するために読み出される。
【０１２６】
ステップ８４８は、第３の（細かい）プログラミング段階を含み、これは、第２セットの上位検証レベルを用いて全てのデータ状態をプログラムする。更に、プログラミングスピードに基づく減速措置が高速プログラミングの下位状態及び上位状態の記憶素子に適用され、プログラミングスピードに基づく減速措置は低速プログラミングの下位状態の記憶素子及び上位状態の記憶素子には適用されない。これは、第３プログラミング段階及び全プログラミング動作が完了するまで続く。第３プログラミング段階は、第２の高い１セットの検証レベルにおいて全ての記憶素子のＶｔｈ（ビット無視数の記憶素子を引いたもの）が、関連する検証レベルに到達すると完了する。
【０１２７】
図８Ｅは、３段階プログラミング動作に関するステップ８００及び８０４の詳細を示しており、ここでは、３段階プログラミング動作の第１段階において、上位状態の記憶素子の高速プログラミング記憶素子及び低速プログラミング記憶素子が識別され、かつ、３段階プログラミング動作の第２段階において、下位状態の記憶素子の高速プログラミング記憶素子及び低速プログラミング記憶素子が識別されるものである。これは図８Ｄの変更態様である。
【０１２８】
ステップ８６０において、第１（ＬＭ）プログラミング段階において、プログラミングスピードに基づく減速措置が適用されることなくＶｖＬＭを用いて上位状態の記憶素子がプログラムされる。ステップ８６２において、特定の時間にて上位状態の記憶素子の中で高速プログラミング記憶素子及び低速プログラミング記憶素子が識別され、それに応じてラッチが更新される。
【０１２９】
ステップ８６４は、高速プログラミングの上位状態の記憶素子に適用されたプログラミングスピードに基づく減速措置を伴い、かつ低速プログラミングの上位状態の記憶素子にプログラミングスピードに基づく減速措置が適用されることなくＶｖＬＭを用いて上位状態の記憶素子をプログラミングすることによって第１（ＬＭ）プログラミング段階を続ける。これは、このプログラミング段階が完了するまで続く。
【０１３０】
ステップ８６６は別のワードラインをプログラミングすることを含む。例えば、これはＷＬｎ＋１のための第１ＬＭ段階であり得る（図７Ｂの「２」を参照）。
【０１３１】
ステップ８６８において、第２（曖昧な）プログラミング段階は、高速プログラミングの下位状態の記憶素子に適用されたプログラミングスピードに基づく減速措置を伴い、プログラミングスピードに基づく減速措置が低速プログラミングの上位状態の記憶素子又は下位状態の記憶素子（このスピードはまだ判定されていない）に適用されることなく、第１セットの下位検証レベルを用いて全てのデータ状態のプログラミングによって始まる。
【０１３２】
ステップ８３６，８４２，８４４，８４６及び８４８は図８Ｄに関して記載したように行われる。
【０１３３】
図９Ａは、高速プログラミング記憶素子９０４及び低速プログラミング記憶素子９０２を含む１セットの記憶素子の自然閾値電圧分布９００を示す。自然Ｖｔｈ分布は、１セットの記憶素子が定常状態条件（Ｖｔｈのほぼ一定の変化が各プログラムパルスにおいて見られる状態）にあるときに見られるＶｔｈ分布として定義され得る。例えば、自然Ｖｔｈ分布を表す分布を達成しかつ測定するために、数回のプログラムパルスが、検証又はロックアウト動作を伴わず、１セットの記憶素子に印加され得る。
【０１３４】
上述のように、自然Ｖｔｈ分布が拡張すると、各データ状態に必要な検証動作の数も増加し、全プログラミング時間が増加することによってプログラミング性能を劣化させる。この問題を解消するために、一又は複数のプログラミング段階において高速プログラミング記憶素子を検出してプログラミングスピードに基づく減速措置（例えば引き上げられたビットライン電圧）を適用することによって、多段階プログラミング動作において自然Ｖｔｈ分布を縮小することができる。記憶素子に課される「プログラミングスピードに基づく減速措置」とは、記憶素子の以前に検出されたプログラミングスピードに基づく減速措置であり、例えば、この記憶素子が１本のワードラインの１セットの記憶素子のうちの比較的高速のプログラミング記憶素子であると判定することである。我々は、高速の記憶素子を遅くすることによって、高速プログラミング記憶素子と低速プログラミング記憶素子の間のプログラミングスピードの差を少なくすることによって自然Ｖｔｈ分布を人工的に狭めることができる方式を提案する。
【０１３５】
高速の記憶素子は、所定のワードラインのためのプログラミング段階の間に特定され、この情報はデータラッチに保存される。この情報を使用してプログラミング中にビットラインバイアスを高速の記憶素子に印加することによってこの高速の記憶素子は遅くなる。これは自然Ｖｔ分布を効果的に狭め、よって、全ての記憶素子のプログラミングを終了するのに必要な検証動作の数を減らす。この手法は、プログラムされたＶｔｈ分布に著しい影響を与えることなくプログラミング性能を向上することができ、よって、エラーの数が増えるのを防ぐことができる。高速プログラミング記憶素子のみを遅くすることによって、それらのプログラミングスピードが低速の記憶素子のプログラミングスピードに近くなり、自然Ｖｔ分布を効果的に狭める。
【０１３６】
図９Ｂは、１セットの記憶素子の圧縮された自然閾値電圧分布９０６を示す。この分布はΔＶｔｈの量だけ狭められる。ここで、説明上、自然Ｖｔｈ分布は圧縮の後でもそのガウス分布形状を保持して示されているが、実際にはこの分布は圧縮の後のこの分布における記憶素子のＶｔｈの再分布によってそのガウス形状を失う。
【０１３７】
図９Ｃは、記憶素子をプログラムするために必要な最も高いＶｐｇｍと、この記憶素子のビットライン電圧との関係を示す。Ｘ軸はビットライン電圧（Ｖｂｌ）の増加示し、ｙ軸は記憶素子の完全なプログラミングに必要な最も高いＶｐｇｍ電圧を示す。よって、所定のＶｐｇｍにて、記憶素子に関連付けられたビットラインにＶｂｌが印加された場合、この記憶素子のプログラミングスピードは低下され得る。
【０１３８】
一般に、記憶素子のプログラミングスピードが遅くなる程度は、ビットライン電圧に一定して比例する（斜線で描かれている）。この定数は典型的には１よりも大きく、なぜならＶｂｌにおける１Ｖの増加（例えばΔＶｂｌ＝１Ｖ）は、オフセットするためにＶｐｇｍだけ１Ｖよりも大きく増加することを必要とするからである。図９Ｂにおいて、ΔＶｔｈはΔＶｂｌによって乗じられた値に等しい。従って、増加するＶｂｌは、プログラミングスピードを制御し、かつＶｔｈ分布の幅を狭くするための強力なツールである。
【０１３９】
しかしながら、Ｖｂｌは、主にＶｓｇｄ（ドレイン側選択ゲート）マージン領域（ｍａｒｇｉｎ−ｗｉｎｄｏｗ）によって制限されるため、高くなりすぎることはない。
【０１４０】
特定の例示的な実施態様は、２段階及び３段階プログラミング動作の場合に以下に記載される。この技術は付加的な段階にも拡張することができる。
【０１４１】
図９Ｄは、プログラミングシナリオの実施例を示す。実施例１において、記憶素子はそれぞれ２ビットを記憶し、２つのプログラミング段階が使用され、かつ第１段階において全てのプログラムされた状態の全ての記憶素子のプログラミングスピードデータが得られる。実施例２において、記憶素子はそれぞれ２ビットを記憶し、３つのプログラミング段階が使用され、かつ第１段階において上位状態の記憶素子のプログラミングスピードデータが得られる。実施例３において、記憶素子はそれぞれ２ビットを記憶し、３つのプログラミング段階が使用され、かつプログラミングスピードデータが第１段階において上位状態の記憶素子のために得られ、及び第２段階において下位状態の記憶素子のために得られる。実施例４において、記憶素子はそれぞれ２ビットを記憶し、３つのプログラミング段階が使用され、かつ第２段階においてプログラミングスピードデータが下位状態の記憶素子のために得られ、次に上位状態の記憶素子のために得られる。実施例５において、記憶素子はそれぞれ３ビットを記憶し、３つのプログラミング段階が使用され、かつプログラミングスピードデータが、第１段階において上位状態の記憶素子のために得られ、及び第２段階において下位状態の記憶素子のために得られる。実施例６において、記憶素子はそれぞれ３ビットを記憶し、３つのプログラミング段階が使用され、かつ第２段階においてプログラミングスピードデータが下位状態の記憶素子のために得られ、次に上位状態の記憶素子のために得られる。これらの実施例をそれぞれ以下に記載する。
【０１４２】
実施例１
【０１４３】
第１の実施態様は、図１０Ａ，１０Ｂ，１０Ｃ，１０Ｅ，１０Ｆ及び１０Ｇのシーケンスを含む。第２の実施態様は、図１０Ａ，１０Ｂ，１０Ｄ，１０Ｅ，１０Ｆ及び１０Ｇのシーケンスを含む。この実施例において、図１０Ａから図１０Ｅまでの流れは例えば図７Ａのステップ「１」に対応し、図１０Ｆから図１０Ｇまでの流れはステップ図７Ａの「３」に対応する。ラッチの使用は、図１６Ｂの対応するステップにおいて説明される。両方の実施態様において、全ての記憶素子のプログラミングスピードデータは第１段階において得られ、この情報はデータラッチに保存され、かつプログラミングスピードに基づく減速措置が、第１段階の残りの部分及び第２段階全体において高速プログラミング記憶素子に適用される。
【０１４４】
図１０Ａは、２段階プログラミング動作の第１段階の開始を示しており、ここでは、全ての記憶素子が消去状態にあるものである。分布１０００は消去（Ｅ）状態を表す。ＶｖａＬ，ＶｖｂＬ及びＶｖｃＬは、第１セットの下位検証レベルであり、及びＶｖａ，Ｖｖｂ及びＶｖｃは、第２セットの上位検証レベルである。いくつかの場合において、一又は複数の最も上位のデータ状態は下位検証レベルを使用しなくてもよく、なぜならより広い分布が許容されるからである。
【０１４５】
図１０Ｂは、図１０Ａの後に続く状態を示しており、ここでは、２段階プログラミング動作の第１段階において、最小数の記憶素子がＶｔｈ＞ＶｖａＬを有するものである。ここで、連続するプログラム・検証の繰り返しにおいて多くのプログラムパルスが印加されている。検証動作に関し、各プログラムパルスの後に全ての目標状態が検証される必要はないことに留意されたい。代わりに、検証される特定の状態をプログラミング段階全体の進行に合わせて構成することができ、例えば、プログラミング段階の初期において、下位状態が検証されるが上位状態は検証されず、次に、ほとんど又は全ての状態が検証され、次に、全ての下位状態の記憶素子がロックアウトされると上位状態が検証されるが下位状態は検証されない。分布１００２の幅は、自然Ｖｔｈ分布と同等かこれよりも小さくてよい。プログラムパルスが印加されると、記憶素子の閾値電圧は徐々に増加する。例えば、最小数の記憶素子がＶｖａＬに到達すると（すなわち、それらのＶｔｈがＶｖａＬを越えると）、カウンターをトリガする条件が満たされる。分布１００２の領域１００４は、Ｖｔｈ＞ＶｖａＬである記憶素子を表す。ＶｖａＬに到達する記憶素子の数は、センス増幅器（検証動作の結果を示すデータを記憶する）においてラッチのビットスキャンから判定され得る。検証動作において、記憶素子及びそのビットラインが非導電状態であると検出されてＶｔｈ＞ＶｖａＬを示すと、１ビットがセンス増幅器において反転する。ＶｖａＬでの検証動作は、目標状態に関わらず全ての記憶素子のために行うことができることに留意されたい。
【０１４６】
付加的なプログラムパルスが特定数のｍ＞０パルスが印加されるまで計数される。この数は、不揮発性記憶素子の典型的に予想される自然Ｖｔｈ分布幅に基づき設定することができ、目標ワードラインの不揮発性記憶素子の特定の部分のほとんどは、計数が完了するとＶｖａＬを越える閾値電圧を有する。この特定の部分は、これらの記憶素子の半分とすることができ、これらの記憶素子の半分は高速プログラミングとして区分され、記憶素子の残りの半分は低速プログラミングとして区分される。この特定の部分は「ｍ」個であり、プログラミング性能に関して便益を最大限にする適切な値を得るために複数のロットに亘って複数のメモリデバイスに対して最適化することができる。計数が完了すると、検証動作がＶｖａＬにて行われ、検証動作において非導電状態である高速プログラミング記憶素子をＶｔｈ＞ＶｖａＬを有するものとして特定し、検証動作において導通状態である低速プログラミング記憶素子をＶｔｈ＜ＶｖａＬを有するものとして特定する。１セットのデータラッチにおいて（例えばＤＬ１において）１ビットを設定することができ（図３，１６Ａ１〜１６Ｅを参照）、これは、特定のワードラインの各記憶素子が高速の状態か低速の状態かを特定する。
【０１４７】
ＶｖａＬは、プログラムスピードを識別するための適切なチェックポイントとして選択され得る確定した検証レベルであり、なぜなら、それは目標データ状態としてＡ状態を有する記憶素子を検証する機能もあるからである。Ａ状態の記憶素子は、それらのＶｔｈがＶｖａＬを越えると現在のプログラミング段階において更なるプログラミングからロックアウトされることができ、一方、Ｂ及びＣ状態の記憶素子はそれぞれＶｖｂＬ、ＶｖｃＬに到達するまでプログラムされ続ける。ＶｖａＬの代わりに、パルスの計数をトリガするための条件、及び／又は高速プログラミング記憶素子及び低速プログラミング記憶素子を識別するための条件として、目標データ状態に関連する又は関連しない別の検証レベルを使用することも可能である。
【０１４８】
図１０Ｃは、図１０Ｂの後に続く、付加的な数の「ｍ」個のプログラムパルスが印加された後の第１の変更態様を示しており、ここで、２段階プログラミング動作の第１段階において、高速プログラミング記憶素子及び低速プログラミング記憶素子がＶｖａＬの検証レベルを用いて識別されるものである。ここで、Ｖｔｈ分布１００３は、低速プログラミング記憶素子及び高速プログラミング記憶素子のためにそれぞれ領域１００８、１０１０を含む。分布１００６は、目標状態としてＡ状態を有し、かつＶｖａＬに到達した一部の記憶素子を表す。分布１００６における記憶素子は、自動的に高速の記憶素子であり、なぜならそれらは残りの記憶素子よりも早く目標Ａ状態に到達したからであることに留意されたい。高速プログラミング記憶素子及び低速プログラミング記憶素子の識別は、ある条件（例えば、印加された付加的な数のプログラムパルスを計数したこと）が満たされると行われる。
【０１４９】
図１０Ｄは、図１０Ｂの後に続く、付加的な数の「ｋ」個のプログラムパルスが印加された後の第２の変更態様を示しており、ここで、２段階プログラミング動作の第１段階において、高速プログラミング記憶素子及び低速プログラミング記憶素子がＶｖの読み出しレベルを用いて識別されるものである。Ｖｖは、目標データと関連付けられていない。一の手法において、Ｖｖは、１セットの不揮発性記憶素子のための読み出し動作のためにも使用される（例えばＥ状態及びＡ状態を識別するため）。
【０１５０】
例えば、Ｖｖは自然Ｖｔｈ分布の幅の約二分の一だけＶｖａＬよりも低い。あるいは、この識別は、付加的なプログラムパルスを計数することなく、最小数の記憶素子がＶｖａＬに到達したときに行うことができる。ここで、Ｖｔｈ分布１００５は、低速プログラミング記憶素子及び高速プログラミング記憶素子のためのそれぞれ領域１０１４、１０１６を含む。分布１０１２は、目標状態としてＡ状態を有し、かつＶｖａＬに到達した一部の記憶素子を表す。分布１０１２における記憶素子は、自動的に高速の記憶素子であり、なぜならそれらは残りの記憶素子よりも早く目標Ａ状態に到達したからであることに留意されたい。適切な検証レベルを用いて、プログラミングスピードに基づいて２以上のクラスの記憶素子を識別することも可能である。一般に、ｋ＜ｍ，ｋ＞０及びｍ＞０であり、プログラミングスピード判定は、図１０Ｃに記載したようにｍ個の計数が使用され、図１０Ｄに記載したようにｋ個の計数が使用される場合、より早くなされ得る。高速プログラミング記憶素子及び低速プログラミング記憶素子をより早く識別することの利点は、この情報が高速プログラミング記憶素子を減速するためにより早く使用され、これにより、後続するプログラムパルスのための自然Ｖｔｈ分布を狭める（圧縮する）ことができることである。この手法の欠点は、Ｖｖでの付加的な検出動作が必要とされることである。更に、プログラミング段階においてプログラミングスピードデータを得るのが早すぎる場合には、その信頼性が低くなり得、これは、記憶素子のＶｔｈ分布が、自然Ｖｔｈ分布に近い幅まで拡張する前や、記憶素子が、それらのＶｔｈがそれらの定常状態（この定常状態ではＶｐｇｍステップサイズに近い率でシフトアップする）に到達する前などである。図１０Ｃの手法の利点は、ＶｖａＬが、目標状態に関連する検証レベルとして既に使用されているため、付加的な検出動作を必要としないことである。
【０１５１】
図１０Ｅは、２段階プログラミング動作の第１段階における、図１０Ｃ又は１０Ｄのいずれかの状態からのプログラミングを示す。図１０Ｃの分布１００３から続くプログラミンが描かれており、Ａ状態の記憶素子の残りがＶｖａＬ（分布１００６）にプログラムされＢ状態の記憶素子がＶｖｂＬ（分布１０３０）に向かってプログラムされＣ状態の記憶素子がＶｖｃＬ（分布１０４０）に向かってプログラムされるか、下位検証レベルが使用されない場合はＶｖｃに向かってプログラムされる。２段階プログラミング動作の第１段階において、図６において波形６０２によって描かれているように、より大きなＶｐｇｍステップサイズを使用することができることに留意されたい。図１０Ｆの分布は、第１段階の終わりに達している。
【０１５２】
図１０Ｆは、図１０Ｅの後に続く、２段階プログラミング動作の第２段階の開始の状態を示す。第２段階は、図６における波形６００によって描かれるように、より小さなＶｐｇｍステップを使用することができ、記憶素子のＶｔｈがより遅く上昇することで、目標検証レベルの大きなオーバーシュートを回避する。引き上げられたビットラインを利用することも可能であり、このビットラインは、プログラミングスピードに基づかず、記憶素子のＶｔｈが目標データ状態の下位検証レベルと上位検証レベルとの間にあるとき及び／又は特定のプログラミング段階にあるときに適用される。これは付加的な減速措置であり、プログラミングスピードに基づく減速措置ではなく、プログラミングスピードに基づく減速措置（例えば付加的なＶｂｌの上昇として）とともに利用することができる。第１段階と第２段階との間に一又は複数の他のワードラインがプログラムされるときの容量結合及びその他の干渉効果によって、Ａ，Ｂ及びＣ状態のそれぞれの分布１０２０、１０３１、１０４１がそれぞれ分布１００６、１０３０、１０４０に比して広がって示されていることに留意されたい。
【０１５３】
図１０Ｇは、２段階プログラミング動作の第２段階における、図１０Ｆの状態からのプログラミングを示す。分布１０２２，１０３２及び１０４２を遷移させるために、第２セットの検証レベル、すなわちＶｖａ，Ｖｖｂ及びＶｖｃが使用される。有利なことには、Ｖｔｈ分布１０２２，１０３２及び１０４２は、分布１０２０，１０３１及び１０４１に比べて狭められている。一般に、Ｖｔｈ分布が狭められると、分布の上端が僅かに動く一方、下端には大きな動きがある。
【０１５４】
実施例２
【０１５５】
別の実施態様は、図１１Ａ，１１Ｂ，１１Ｃ，１１Ｄ，１１Ｅ，１１Ｆ及び１１Ｇのシーケンスを含む。第１段階において、上位状態の記憶素子のプログラミングスピードデータが得られ、その情報はデータラッチに保存され、かつ第１段階の残り及び第２及び第３段階全体においてプログラミングスピードに基づく減速措置が高速プログラミングの上位状態の記憶素子に適用される。プログラミング動作において下位状態の記憶素子のプログラミングスピードデータは得られない。
【０１５６】
この実施例において、図１１Ａから図１１Ｄまでの流れは例えば図７Ｂのステップ「１」に対応し、図１１から図Ｅまでの流れはステップ図７Ｂの「３」に対応する。ラッチの使用は、図１６Ｃ１又は１６Ｃ２の対応するステップにおいて説明される。
【０１５７】
図１１Ａは、３段階プログラミング動作の第１段階の開始を示しており、ここでは、４レベルメモリデバイスにおいて、全ての記憶素子が消去状態にあるものである。第１段階は上述のＬＭ段階であり得、ここで下位状態の記憶素子は消去状態１１００を維持し、一方、上位状態の記憶素子は検証レベルＶｖＬＭを用いて中間（ＬＭ）状態にプログラムされる。
【０１５８】
図１１Ｂは、図１１Ａの後に続く状態を示しており、ここでは、３段階プログラミング動作の第１段階において、最小数の上位状態の記憶素子がＶｔｈ＞ＶｖＬＭを有するものである。分布１１０２において、領域１１０４は、Ｖｔｈ＞ＶｖＬＭである上位状態の記憶素子を表す。一旦、最小数の上位状態の記憶素子がＶｖＬＭに到達すると、計数が始まり、各付加的なプログラムパルス毎に増加される。第１段階は比較的より大きなＶｐｇｍステップサイズを使用することができる。
【０１５９】
図１１Ｃは、図１１Ｂの後に続く、付加的な数の「ｍ」個のプログラムパルスが印加された後の状態を示しており、ここでは、３段階プログラミング動作の第１段階において、高速プログラミング及び低速プログラミングの上位状態の記憶素子がＶｖｈの読み出しレベルを用いて識別されるものである。付加的なプログラムパルスｍ＞１の計数が完了すると、Ｖｔｈ分布１１０３は、低速プログラミング及び高速プログラミングの上位状態の記憶素子のためにそれぞれ領域１１０８、１１１０を含む。分布１１０６は、ＶｖＬＭに到達したことを検証された上位状態の一部の記憶素子を表す。分布１１０６における記憶素子は、自動的に高速の記憶素子であり、なぜならそれらは残りの記憶素子よりも早く目標ＬＭ状態に到達したからであることに留意されたい。Ｖｖｈは高い読み出しレベルであり、なぜなら上位状態の記憶素子を検証するために使用されるからである。第１段階の残りの間、各プログラムパルスが印加される際、プログラミングスピードに基づく減速措置は低速プログラミングの上位状態の記憶素子には適用されず、プログラミングスピードに基づく減速措置は高速プログラミングの上位状態の記憶素子に適用される。
【０１６０】
図１１Ｄは、図１１Ｃの後に続く、３段階プログラミング動作の第２段階の開始における状態を示す。プログラミングは、図１１Ｃから続き、分布１１０３が分布１１２０に遷移し、ここでは、第１段階の終わりにて全ての上位状態の記憶素子が中間（ＬＭ）状態に達している。第１段階と第２段階との間で、別のワードラインがプログラムされる。目標ワードラインに対して第２段階を開始する直前に、目標ワードライン上の高速プログラミング及び低速プログラミングの上位状態の記憶素子を特定するためにラッチが読み出される。ラッチ内の情報を用いて、低速プログラミングの上位状態の記憶素子は、例えばプログラミングスピードに基づく減速措置を適用しないことで通常の方法で処理され得る。これに対して、プログラミングスピードに基づく減速措置（例えば上昇したビットライン電圧）は各プログラムパルスが印加されるときに高速プログラミングの上位状態の記憶素子に適用され得る。この例において下位状態の記憶素子のためにプログラミングスピードデータは得られておらず、又、得られることもないことに留意されたい。高速プログラミングのＢ状態及びＣ状態の記憶素子のみへのプログラミングスピードに基づく減速措置の適用は、Ｂ及びＣ状態の記憶素子のための効果的な自然Ｖｔｈ分布を縮小し、よって、Ｂ及びＣ状態のために必要な検証動作の数を減少させ、従ってプログラム性能を向上させる利点をなお提供することができる。
【０１６１】
図１１Ｅは、図１１Ｄの状態の後に続く、３段階プログラミング動作の第２段階における下位状態の記憶素子及び上位状態の記憶素子のプログラミングを示す。この段階において下位状態の記憶素子は、プログラミングスピードに基づく減速措置を適用することなく、消去状態を維持するか、ＶｖａＬを用いてＡ状態（分布１１３０）にプログラムされる。上位状態の記憶素子は、第２段階の終わりに図１１Ｆの分布に到達するまで、プログラミングスピードに基づく減速措置を適用して、ＶｖｂＬ及びＶｖｃＬを用いて中間（ＬＭ）状態からそれぞれＢ状態（分布１１４０）又はＣ状態（分布１１５０）にプログラムされる。第２段階は比較的より大きなＶｐｇｍステップサイズを用いることができる。
【０１６２】
いくつかの実施形態において下位状態の記憶素子のＶｔｈの遷移は典型的には上位状態の記憶素子のＶｔｈの遷移の前に行われることに留意されたい。これは、Ｖｐｇｍが、低い初期レベルからステップアップされていき、初めは下位状態の記憶素子のＶｔｈを動かすのに必要な高さしかないからである。Ｖｐｇｍが更に高くなったときのみ、上位状態の記憶素子のＶｔｈは増加し始める。同様の観測結果が他の図においても該当する。
【０１６３】
図１１Ｆは、図１１Ｅの状態の後に続く、３段階プログラミング動作の第３段階の開始を示す。第３段階は、比較的小さなＶｐｇｍステップサイズを使用することができる。このＶｔｈ分布は、一又は複数の他のワードラインがプログラムされるときに容量結合及び干渉効果のために広がり得ることに留意されたい。
【０１６４】
図１１Ｇは、３段階プログラミング動作の第３段階における、図１１Ｆの条件からのプログラミングを示す。Ａ状態の記憶素子は、プログラミングスピードに基づく減速措置を適用することなく、Ｖｖａを用いて分布１１３２にプログラムされ、Ｂ状態の記憶素子は、Ｖｖｂを用いて分布１１４２にプログラムされ、Ｃ状態の記憶素子は、Ｖｖｃを用いて分布１１５２にプログラムされる。ちょうど第２段階の開始時のように、目標ワードラインに対して第３段階を開始する前に、目標ワードライン上の高速プログラミング及び低速プログラミングの上位状態の記憶素子を特定するためにラッチが読み出される。ラッチ内の情報を用いて、プログラミングスピードに基づく減速措置が高速プログラミングのＢ状態及びＣ状態の記憶素子に適用されるが、低速プログラミングのＢ状態及びＣ状態の記憶素子には適用されない。
【０１６５】
実施例２Ａ
【０１６６】
実施例２に対する変更態様を次に記載する。これは２段階プログラミング動作を有する。図１１Ｈは、図１１Ｆ及び１１Ｇの変更態様として、図１１Ｄの状態の後に続く、２段階プログラミング動作の第２段階における下位状態の記憶素子及び上位状態の記憶素子のプログラミングを示す。この実施例において、図１１Ａから図１１Ｄまでの流れは例えば図７Ａのステップ「１」に対応し、図１１Ｈにおける流れは図７Ａのステップ「３」に対応する。プログラミング動作はＬＭパス及び第２パス（ＵＰプログラミングパスと呼び得る）を含む。このプログラミング動作は、下位ページをプログラムし、次に上位ページをプログラムする。このプログラミング動作は、３段階プログラミング動作より速い。この手法において、我々は２つのラッチＤＬ１及びＤＬ２だけが余分に必要である。ラッチの使用法は図１６Ｃ３に記載する。
【０１６７】
実施例３
【０１６８】
別の実施態様は、１１Ａ〜１１Ｄ，１２Ａ〜１２Ｃ，１１Ｆ及び１１Ｇのシーケンスを含む。第１段階において、上位状態の記憶素子のプログラミングスピードデータが得られてラッチに保存され、プログラミングスピードに基づく減速措置が第１段階の残りの部分並びに第２及び第３段階全体において高速プログラミングの上位状態の記憶素子に適用される。第２段階において、下位状態の記憶素子のプログラミングスピードデータが得られ、プログラミングスピードに基づく減速措置が第２段階の残りの部分及び第３段階において高速プログラミングの下位状態の記憶素子に適用される。
【０１６９】
この実施例において、図１１Ａから図１１Ｄまでの流れは、例えば図７Ｂのステップ「１」に対応し、図１２Ａ〜１２Ｃから図１１Ｆまでの流れは図７Ｂのステップ「３」に対応し、図１１Ｇにおける流れは図７Ｂのステップ「６」に対応する。ラッチの使用は図１６Ｄ１又は１６Ｄ２の対応するステップにおいて説明される。
【０１７０】
図１２Ａは、図１１Ｄの条件の後に続く、３段階プログラミング動作の第１の変更態様の第２段階の開始におけるプログラミングを示しており、ここで、最小数の下位状態記憶素子がＶｔｈ＞ＶｖａＬを有するものである。Ｅ状態分布１１００及びＬＭ分布１１２０は繰り返される。各連続するプログラムパルスが印加されると、分布１１００はＡ状態の記憶素子（下位状態の記憶素子）のために分布１２０２に遷移し、分布１１２０は上位状態の記憶素子のためにＢ状態分布１２３０及びＣ状態分布１２４０に遷移する。第１段階の間に上位状態の記憶素子のために得られたプログラムスピードデータに基づいて、プログラミングスピードに基づく減速措置が高速プログラミングのＢ及びＣ状態の記憶素子に適用され得る。
【０１７１】
分布１２０２において、領域１２０４は、Ｖｔｈ＞ＶｖａＬである下位状態の記憶素子を表す。一旦、最小数の下位状態の記憶素子がＶｖａＬに到達すると、計数が始まり、付加的なプログラムパルス毎に増加される。第２段階は、比較的大きなＶｐｇｍステップサイズを使用することができる。
【０１７２】
図１２Ａ〜１２Ｃにおいて、下位状態の記憶素子のＶｔｈの遷移は、典型的には、上位状態の記憶素子のＶｔｈの遷移よりも前に生じる。
【０１７３】
図１２Ｂは、付加的な数の「ｋ」個のプログラムパルスが印加された後の、図１２Ａの後に続く状態を示しており、ここでは、３段階プログラミング動作の第２段階において、高速プログラミング及び低速プログラミングの下位状態の記憶素子がＶｖｌの読み出しレベルを用いて識別されるものである。ｋ個の付加的なプログラムパルスの計数が完了すると、Ｖｔｈ分布１２０３は低速プログラミング記憶素子及び高速プログラミング記憶素子のためのそれぞれ領域１２０７及び１２０８を含む。分布１２０９は、ＶｖａＬに到達したことを検証されたＡ状態の一部の記憶素子を表す。分布１２０９にある記憶素子は自動的に高速の記憶素子であり、なぜならそれらは残りの記憶素子よりも早く目標Ａ状態に到達したからであることに留意されたい。Ｖｖｌは低い読み出しレベルであり、なぜならそれは下位状態の記憶素子を読み出すために使用されるからである。プログラミングスピードに基づく減速措置は、高速プログラミングのＢ及びＣ状態の記憶素子に適用され続ける。
【０１７４】
図１２Ｃは、図１２Ｂの条件の後に続く、３段階プログラミング動作の第１の変更態様の第２段階における下位状態の記憶素子及び上位状態の記憶素子のプログラミングを示す。この時、下位状態及び上位状態の記憶素子の両方のプログラミングスピードデータが分かっており、よってプログラミングスピードに基づく減速措置が高速プログラミングのＡ状態の記憶素子、更には高速プログラミングのＢ及びＣ状態の記憶素子に適用され得る。プログラミングが続くと、付加的なＡ状態の記憶素子が分布１２１０に到達する。第２段階の終了時に図１１Ｆの分布に達することができ、第３段階は図１１Ｇに関して記載したように行われ得る。
【０１７５】
実施例４
【０１７６】
別の実施態様は、図１１Ａ，１３Ａ，１３Ｂ１／１３Ｃ１，１３Ｂ２／１３Ｃ２，１３Ｄ及び１１Ｇのシーケンスを含む。第１段階において、プログラミングスピードデータは得られない。第２段階において、下位状態及び上位状態の記憶素子の両方のプログラミングスピードデータが得られ、かつプログラミングスピードに基づく減速措置が第２段階の残りの部分及び第３段階全体において高速プログラミングの下位状態及び上位状態の記憶素子に適用される。
【０１７７】
この実施例において、図１１Ａから図１３Ａまでの流れは、例えば図７Ｂのステップ「１」に対応し、図１３Ｂ１／１３Ｃ１から１３Ｄまでの流れは図７Ｂのステップ「３」に対応し、図１１Ｇにおける流れは図７Ｂのステップ「６」に対応する。ラッチの使用は、図１６Ｅの対応するステップにおいて説明される。
【０１７８】
図１３Ａは、３段階プログラミング動作の第２の変更態様の第２段階の開始を示しており、ここでは、下位検証レベルＶｖＬＭｘがＶｖＬＭに代わって使用されるものである。図１１ＡのＥ状態分布１１００が繰り返される。この状態には第１段階の終わりに到達する。低いＬＭ分布１３１０も描かれている。このＬＭ分布が、より高い次の分布（上位状態のうち最も低い状態（このケースではＢ状態））に近すぎる場合及び／又はこれに重複する場合、上位状態の記憶素子の相対的なプログラミングスピードを確実に検出することは不可能である。結果として、中間検証レベル（ＶｖＬＭｘ）は、上位目標データ状態のうち最も低い目標データ状態（このケースではＢ状態）のための検証レベルより低く下げられ、これにより記憶素子のＶｔｈがＶｖｂＬに到達し始めるまでにこの記憶素子が定常状態に到達することを確実にする。これは相対的なプログラムスピード判定をより正確なものにする。これを達成するために、ＶｖＬＭｘとＶｖｂＬの間のギャップは典型的には、１セットの不揮発性記憶素子の予想される一の自然閾値電圧の幅よりも大きい。すなわち、ＶｖｂＬ−ＶｖＬＭｘ＞自然Ｖｔｈ幅である。ＶｖＬＭｘは、先の図のＶｖＬＭよりも低い検証レベルを表す。第１段階においてＶｖＬＭｘが使用され、図１３Ａの分布（中間分布１３１０を含む）が達成される。
【０１７９】
第２段階のプログラミング中、図１３Ｂ１から図１３Ｂ２までの遷移がまず生じ、次に図１３Ｃ１から１３Ｃ２への遷移が続き、同じプログラミング段階において、上位状態の記憶素子がＶｖｂＬに到達するよりも早く下位状態の記憶素子がＶｖａＬに到達する。同様に、図１３Ｃ１の状態に到達する前に図１３Ｂ１の状態に到達する。図１３Ｂ１及び１３Ｃ１は明確化のために別々に示される。同様に、図１３Ｂ２及び１３Ｃ２も明確化のために別々に示される。下位状態の記憶素子のプログラミングスピードデータが読み出しレベルＶｖｌを用いて得られ、上位状態のプログラミングスピードデータが記憶素子の読み出しレベルＶｖｈを用いて得られる。図１３Ｂ１及び１３Ｂ２は、下位状態の記憶素子に関する遷移を示し、図１３Ｃ１及び１３Ｃ２は、上位状態の記憶素子に関する遷移を示す。
【０１８０】
図１３Ｂ１は、図１３Ａの後に続く状態を示しており、ここでは、３段階プログラミング動作の第２の変更態様の第２段階において、最小数の下位状態記憶素子がＶｔｈ＞ＶｖＡＬを有するものである。分布１３０２において、領域１３０４は、Ｖｔｈ＞ＶｖａＬである下位状態の記憶素子を表す。一旦、最小数の下位状態の記憶素子がＶｖａＬに到達すると、計数が開始され、付加的なプログラムパルス毎に増加される。第２段階は、比較的大きなＶｐｇｍステップサイズを使用することができる。
【０１８１】
図１３Ｂ２は、図１３Ｂ１の後に続く、付加的な数の「ｋ１」個のプログラムパルスが印加された後の状態を示しており、ここでは、高速プログラミング及び低速プログラミングの下位状態の記憶素子がＶｖｌの読み出しレベルを用いて識別される。ｋ１個の付加的なプログラムパルスの計数が完了すると、Ｖｔｈ分布１３０６は、低速プログラミング及び高速プログラミングの下位状態の記憶素子のためにそれぞれ領域１３０８、１３１０を含む。分布１３１６は、ＶｖａＬに到達したことを検証されたＡ状態の一部の記憶素子を表す。分布１３１６における記憶素子は、自動的に高速の記憶素子であり、なぜならそれらは残りの記憶素子よりも早く目標Ａ状態に到達したからであることに留意されたい。Ｖｖｌはより低い読み出しレベルである。プログラミングスピードに基づく減速措置は、高速プログラミング及び低速プログラミングの下位状態の記憶素子がＶｖｌの読み出しレベルを用いて識別されるまで適用されていない。
【０１８２】
この時点で、下位状態の記憶素子（例えばＡ状態の記憶素子）のプログラミングスピードデータがデータラッチに保存される。このデータラッチ内のプログラミングスピードデータを使用して、プログラミングスピードに基づく減速措置がこの段階の残りの間に下位状態の記憶素子に適用され得る。高速プログラミングの下位状態の記憶素子にはプログラミングスピードに基づく減速措置が課されるが、低速プログラミングの下位状態の記憶素子には課されずに、プログラミングは続き得る。一般に、一旦、プログラムスピード判定が１セットの記憶素子に対してなされ、データラッチに保存されると、後続するプログラミング中にこのプログラミングスピードデータを使用し始めてこの１セットの記憶素子のうちの高速プログラミング記憶素子に減速措置を課すことが最も有益である。後に、一旦、プログラムスピード判定が残りの１セットの記憶素子になされると、データラッチは更新され、減速措置が残りのプログラミングに対して全ての記憶素子に課される。
【０１８３】
図１３Ｃ１は、図１３Ａの後に続く（及び一般に図１３Ｂ２に続く）状態を示しており、ここでは、３段階プログラミング動作の第２の変更態様の第２段階において、最小数の上位状態の記憶素子がＶｔｈ＞ＶｖｂＬを有するものである。分布１３１２は、中間（ＬＭ）状態１３１０から上位状態の記憶素子をプログラミングすることによって到達する。分布１３１２において、領域１３１４は、Ｖｔｈ＞ＶｖｂＬである上位状態の記憶素子を表す。ＶｖｂＬは、上位状態のうち最も低い状態の検証レベルである。一旦、最小数の上位状態の記憶素子がＶｖｂＬに到達すると、計数が開始され、付加的なプログラムパルス毎に増加される。
【０１８４】
図１３Ｃ２は、図１３Ｃ１の後に続く、付加的な数の「ｋ２」個のプログラムパルスが印加された後の状態を示しており、ここでは、３段階プログラミング動作の第２の変更態様の第２段階において、高速プログラミング及び低速プログラミングの上位状態の記憶素子がＶｖｈの読み出しレベルを用いて識別されるものである。ｋ２個の付加的なプログラムパルスの計数が完了するとＶｔｈ分布１３２２は、低速プログラミング及び高速プログラミングの上位状態の記憶素子のために、それぞれ領域１３２６、１３２８を含む。分布１３２４は、ＶｖｂＬに到達したことを検証されたＢ状態の一部の記憶素子を表す。分布１３２４における記憶素子は、自動的に高速の記憶素子であり、なぜならそれらは残りの記憶素子よりも早く目標Ｂ状態に到達したからであることに留意されたい。Ｖｖｈはより高い読み出しレベルである。ｋ１及びｋ２は、異なるカウンターが下位状態及び上位状態の記憶素子のプログラミングスピードを判定するために使用され得ることを表すことに留意されたい。簡略化のために、ｋ１はｋ２と同じ値に設定することができる。計数されるプログラムパルスの数に関わらず、計数の開始時は異なり得ることに留意されたい。すなわち、計数の開始をトリガする図１３Ｂ１及び１３Ｃ１の条件は、異なる時期に生じうる。
【０１８５】
図１３Ｄは、図１３Ｃ１及び１３Ｃ２の状態の後に続き、３段階プログラミング動作の第２の変更態様の第２段階における下位状態の記憶素子及び上位状態の記憶素子のプログラミングを示す。図１３Ｂ２の下位状態分布１３０６及び図１３Ｃ２の上位状態分布１３２２が繰り返される。この時、下位状態及び上位状態の記憶素子の両方のプログラミングスピードデータが分かっている。プログラミングスピードに基づく減速措置が高速プログラミングの下位状態の記憶素子に課されるが、低速プログラミングの下位状態の記憶素子には課されずに、プログラミングは分布１３０６の下位状態の記憶素子がＡ状態分布１３２０に遷移するように続く。同様に、プログラミングスピードに基づく減速措置が高速プログラミングの上位状態の記憶素子に課されるが、低速プログラミングの上位状態の記憶素子には課されずに、プログラミングは分布１３２２の上位状態の記憶素子がＢ状態分布１３３０及びＣ状態分布１３４０に遷移するように続く。
【０１８６】
次に、プログラミング動作の第３段階が図１１Ｇの状態を達成するために行われる。この段階において、プログラミングスピードに基づく減速措置は、高速プログラミングの下位状態及び上位状態の記憶素子には課されるが、低速プログラミングの下位状態及び上位状態の記憶素子には課されない。
【０１８７】
実施例５
【０１８８】
別の実施態様は、図１４Ａ，１４Ｂ，１４Ｃ，１４Ｄ，１４Ｅ，１４Ｆ，１４Ｇ，１４Ｈ，１４Ｉのシーケンスを含む。第１段階において、上位状態の記憶素子のプログラミングスピードデータが得られ、第１段階の残りの部分及び第２及び第３段階全体においてプログラミングスピードに基づく減速措置が高速プログラミングの上位状態の記憶素子に適用される。第２段階において、下位状態の記憶素子のためにプログラミングスピードデータが得られ、プログラミングスピードに基づく減速措置が第２段階の残りの部分及び第３段階全体において高速プログラミングの下位状態の記憶素子に適用される。
【０１８９】
この実施例において、図１４Ａから図１４Ｄまでの流れは例えば図７Ｂのステップ「１」に対応し、図１４Ｅから図１４Ｈまでの流れは図７Ｂのステップ「３」に対応し、図１４Ｉにおける流れは図７Ｂのステップ「６」に対応する。ラッチの使用は、図１６Ｄ１又は１６Ｄ２の対応するステップにおいて説明される。
【０１９０】
図１４Ａは、３段階プログラミング動作の第１段階の開始を示しており、ここでは、８レベルメモリデバイスにおける全ての記憶素子が消去状態にあるものである。下位状態は、消去された（Ｅｒ）状態（分布）、並びに下位検証レベルＶｖａＬ，ＶｖｂＬ及びＶｖｃＬ並びに上位検証レベルＶｖａ，Ｖｖｂ及びＶｖｃを伴うそれぞれＡ，Ｂ及びＣ状態である。上位状態は、下位検証レベルＶｖｄＬ，ＶｖｅＬ，ＶｖｆＬ及びＶｖｇＬ並びに上位検証レベルＶｖｄ，Ｖｖｅ，Ｖｖｆ及びＶｖｇをそれぞれ備えるＤ，Ｅ，Ｆ及びＧ状態である。
【０１９１】
図１４Ｂは、図１４Ａの後に続く状態を示しており、ここでは、３段階プログラミング動作の第１段階において、最小数の上位状態の記憶素子がＶｔｈ＞ＶｖＬＭを有するものである。分布１４０２において、領域１４０４は、Ｖｔｈ＞ＶｖａＬの上位状態の記憶素子を表す。一旦、最小数の下位状態の記憶素子がＶｖＬＭに到達すると、計数が開始され、付加的なプログラムパルス毎に増加される。
【０１９２】
図１４Ｃは、図１４Ｂの後に続く、付加的な数の「ｋ」個のプログラムパルスが印加された後の状態を示しており、ここにおいて、３段階プログラミング動作の第１段階において、高速プログラミング及び低速プログラミングの上位状態の記憶素子がＶｖｈの読み出しレベルを用いて識別される。ｋ個の付加的なプログラムパルスの計数が完了すると、Ｖｔｈ分布１４０３は、低速プログラミング及び高速プログラミングの上位状態の記憶素子のために、それぞれ領域１４０６及び１４０８を含む。分布１４０４は、ＶｖＬＭに到達したとことを検証された上位状態の一部の記憶素子を表す。
【０１９３】
図１４Ｄは、図１４Ｃの後に続く、３段階プログラミング動作の第１段階が完了したときの状態を示している。プログラミングは、分布１４０３（１１０３と同じ）が分布１４４５（１１２０と同じ）に遷移するように図１１Ｃから続き、第１段階の終わりに全ての上位状態の記憶素子が中間（ＬＭ）状態に到達している。この時、高速プログラミング及び低速プログラミングの上位状態の記憶素子が分かり、ラッチに保存される。分布１４０３からＬＭ分布１４４５へのプログラミングを上位状態の記憶素子のために行うことができ、この間、高速プログラミングの上位状態の記憶素子にプログラミングスピードに基づく減速措置が課されるが、低速プログラミングの上位状態の記憶素子には課されない。これで第１段階を完結する。
【０１９４】
図１４Ｅは、図１４Ｄの後に続く状態を示しており、ここでは、３段階プログラミング動作の第２段階においてプログラミングが行われ、かつ最小数の下位状態記憶素子がＶｔｈ＞ＶｖａＬを有するものである。第２段階の開始時に、高速プログラミング及び低速プログラミングの上位状態の記憶素子を特定するためにラッチが読み出され得る。下位状態の記憶素子が消去状態分布１４００から分布１４１２にプログラムされる一方、上位状態の記憶素子は、それぞれの目標状態に従って中間分布１４４５からＤ状態分布１４５０、Ｅ状態分布１４６０、Ｆ状態分布１４７０、Ｇ状態分布１４８０にプログラムされる。図１４Ｅ〜１４Ｇのいくつかの実施形態において、下位状態の記憶素子のＶｔｈの遷移は典型的には、上位状態の記憶素子のＶｔｈの遷移よりも前に生じることに留意されたい。よって、Ａ状態の記憶素子がプログラムされ、そのＶｔｈレベルが増加するとき、Ｖｐｇｍは始めは記憶素子をＡ状態Ｖｔｈの近くに動かすのに必要な高さしかない。上位状態の記憶素子のＶｔｈレベルはこの期間中は動かない。Ｖｐｇｍがより高くなったときのみ、より高いＤ，Ｅ，Ｆ及びＧ状態の近くの記憶素子のＶｔｈが増加し始める。よって、図１４Ｅに示されるＶｔｈの遷移は、一のプログラミング段階において生じ、簡略化のために一の図において示されるが、同時に生じる必要はない。
【０１９５】
上位状態の記憶素子のためにラッチ内に保存されたプログラムスピードデータに基づき、プログラミングスピードに基づく減速措置が高速プログラミングの上位状態の記憶素子に課され得るが、低速プログラミングの上位状態の記憶素子には課されない。分布１４１２において、領域１４１４は、Ｖｔｈ＞ＶｖａＬである下位状態の記憶素子を表す。一旦、最小数の下位状態の記憶素子がＶｖａＬに到達すると、計数が開始され、付加的なプログラムパルス毎に増加される。第２段階は、比較的大きなＶｐｇｍステップサイズを使用し得る。
【０１９６】
図１４Ｆは、図１４Ｅの後に続く、付加的な数の「ｋ」個のプログラムパルスが印加された後の状態を示しており、ここでは、３段階プログラミング動作の第２段階において、高速プログラミング及び低速プログラミングの下位状態の記憶素子がＶｖｌの読み出しレベルを用いて識別される。ｋ個の付加的なプログラムパルスの計数が完了すると、Ｖｔｈ分布１４１６は、低速プログラミング及び高速プログラミングの下位状態プログラミング記憶素子のために、それぞれ領域１４１７及び１４１８を含む。分布１４２０は、ＶｖａＬに到達したとことを検証された上位状態の一部の記憶素子を表す。分布１４２０における記憶素子は、自動的に高速の記憶素子であり、なぜならそれらは残りの記憶素子よりも早く目標Ａ状態に到達したからであることに留意されたい。
【０１９７】
図１４Ｇは、図１４Ｆの後に続く、３段階プログラミング動作の第２段階が完了したときの条件を示す。この時、下位状態及び上位状態の記憶素子のプログラミングスピードデータが利用可能である。下位状態の記憶素子は、分布１４１６からＡ状態分布１４２０，Ｂ状態分布１４３０又はＣ状態分布１４４０にプログラムされ、この間、プログラミングスピードに基づく減速措置が高速プログラミングの下位状態の記憶素子に課されるが、低速プログラミングの下位状態の記憶素子には課されない。同様に、第２段階において、プログラミングスピードに基づく減速措置は、高速プログラミングの上位状態の記憶素子に課されるが、低速プログラミングの上位状態の記憶素子には課されない。こうして第２段階は完了する。
【０１９８】
図１４Ｈは、図１４Ｇの後に続く３段階プログラミング動作の第３段階の開始における状態を示す。より小さなプログラムパルスステップサイズを使用することができる。Ｖｔｈ分布は、一又は複数の他のワードラインがプログラムされるときに、容量結合及び干渉効果によって広がり得ることに留意されたい。
【０１９９】
図１４Ｉは、図１４Ｈの後に続く、３段階プログラミング動作の第３段階の終了における状態を示す。Ａ状態，Ｂ状態，Ｃ状態，Ｄ状態，Ｅ状態，Ｆ状態及びＧ状態の記憶素子が、それぞれ分布１４２２，１４３２，１４４２，１４５２，１４６２，１４７２，１４８２にプログラムされる。プログラミングスピードに基づく減速措置が高速プログラミング記憶素子に適用され得るが、低速プログラミング記憶素子には適用されない。
【０２００】
実施例６
【０２０１】
別の実施態様は、図１４Ａ，１５Ａ，１５Ｂ１／１５Ｃ１，１５Ｂ２／１５Ｃ２，１５Ｄ，１４Ｈ，１４Ｉのシーケンスを含む。第１段階において、プログラミングスピードデータは得られない。第２段階において、下位状態及び上位状態の記憶素子の両方のためにプログラミングスピードデータが得られ、第２段階の残りの部分及び第３段階全体においてプログラミングスピードに基づく減速措置が高速プログラミングの下位状態及び上位状態の記憶素子に適用される。
【０２０２】
図１５Ａは、変更態様の３段階プログラミング動作の第１段階におけるプログラミングを示しており、ここでは、８レベルメモリデバイスにおける全ての記憶素子が消去状態にあるものである。開始点は、図１４Ａの消去された（Ｅｒ）状態分布１４００の分布である。上位状態の記憶素子がＶｖＬＭを用いて中間分布１５４５にプログラムされる。
【０２０３】
図１５Ｂ１から１５Ｂ２への遷移は典型的には図１５Ｃ１から１５Ｃ２への遷移の前に生じる。同様に図１５Ｂ１の状態も典型的には図１５Ｃ１の状態の前に生じる。図１５Ｂ１及び１５Ｃ１は明確化のために別々に示されている。同様に、図１５Ｂ２及び１５Ｃ２も明確化のために別々に示されている。下位状態の記憶素子の読み出しレベルＶｖｌを用いて得られ、かつ、上位状態の記憶素子のプログラミングスピードデータが読み出しレベルＶｖｈを用いて得られる。図１５Ｂ１及び１５Ｂ２は下位状態の記憶素子に関する遷移を示し、図１５Ｃ１及び１５Ｃ２は上位状態の記憶素子に関する遷移を示す。
【０２０４】
図１５Ｂ１は、図１５Ａの状態の後に続く、変更態様の３段階プログラミング動作の第２段階におけるプログラミングを示しており、ここでは、最小数の下位状態記憶素子がＶｔｈ＞ＶｖａＬを有するものである。分布１５０２において、領域１５０４はＶｔｈ＞ＶｖａＬの下位状態記憶素子を表す。一旦、最小数の下位状態の記憶素子がＶｖａＬに到達すると、計数が開始され、付加的なプログラムパルス毎に増加される。第２段階は比較的大きなＶｐｇｍステップサイズを使用することができる。
【０２０５】
図１５Ｂ２は、図１５Ｂ１条件の後に続く、付加的な数の「ｋ１」個のプログラムパルスが印加された後の変更態様の３段階プログラミング動作の第２段階における状態を示しており、ここでは、Ｖｖ１の読み出しレベルを用いて、高速プログラミング及び低速プログラミングの下位状態の記憶素子が識別されるものである。ｋ１個の付加的なプログラムパルスの計数が完了すると、Ｖｔｈ分布１５０６は、低速プログラミング及び高速プログラミングの下位状態の記憶素子のためにそれぞれ領域１５０７、１５０８を含む。分布１５２０は、ＶｖａＬに到達したことを検証されたＡ状態の一部の記憶素子を表す。分布１５２０における記憶素子は、自動的に高速の記憶素子であり、なぜならそれらは残りの記憶素子よりも早く目標Ａ状態に到達したからであることに留意されたい。Ｖｖｌは下位読み出しレベルである。プログラミングスピードに基づく減速措置は、高速プログラミング及び低速プログラミングの下位状態の記憶素子がＶｖｌの読み出しレベルを用いて識別されるまで印加されていない。この時点で、下位状態の記憶素子（例えばＡ状態の記憶素子）のプログラミングスピードデータがデータラッチに保存される。データラッチ内のプログラミングスピードデータを使用し、プログラミングスピードに基づく減速措置がこの段階の残りの間、下位状態の記憶素子に適用され得る。高速プログラミングの下位状態の記憶素子にはプログラミングスピードに基づく減速措置が課されるが、低速プログラミングの下位状態の記憶素子には課されずに、プログラミングは続き得る。
【０２０６】
図１５Ｃ１は、図１５Ａの条件の後に続く、変更態様の３段階プログラミング動作の第２段階におけるプログラミングを示しており、ここでは、最小数の上位状態の記憶素子がＶｔｈ＞ＶｖｄＬを有するものである。分布１５４３は、中間（ＬＭ）状態１５４２から上位状態の記憶素子をプログラミングすることによって到達する。分布１５４３において、領域１５４４は、Ｖｔｈ＞ＶｖｄＬである上位状態の記憶素子を表す。ＶｖｄＬは、上位状態のうち最も低い状態の検証レベルである。他の検証レベルを用いることもできる。一旦、最小数の上位状態の記憶素子がＶｖｄＬに到達すると、計数が開始され、付加的なプログラムパルス毎に増加される。
【０２０７】
図１５Ｃ２は、図１５Ｃ１の後に続く、付加的な数の「ｋ２」個のプログラムパルスが印加された後の変更態様の３段階プログラミング動作の第２段階における状態を示しており、ここでは、高速プログラミング及び低速プログラミングの上位状態の記憶素子がＶｖｈの読み出しレベルを用いて識別されるものである。ｋ２個の付加的なプログラムパルスの計数が完了するとＶｔｈ分布１５４８は、低速プログラミング及び高速プログラミングの上位状態の記憶素子のために、それぞれ領域１５４５、１５４６を含む。分布１５４７は、ＶｖｂＬに到達したことを検証されたＤ状態の一部の記憶素子を表す。分布１５４７における記憶素子は、自動的に高速の記憶素子であり、なぜならそれらは残りの記憶素子よりも早く目標Ｄ状態に到達したからであることに留意されたい。Ｖｖｈは上位読み出しレベルである。ｋ１及びｋ２は、異なるカウンターが下位状態及び上位状態の記憶素子のプログラミングスピードを判定するために使用され得ることを表すことに留意されたい。簡略化のために、ｋ１はｋ２と同じ値に設定することができる。プログラムパルスの数に関わらず、計数の開始時は異なり得ることに留意されたい。すなわち、計数の開始をトリガする図１５Ｂ１及び１５Ｃ１の条件は、異なる時期に生じうる。
【０２０８】
図１５Ｄは、図１５Ｃ１及び図１５Ｃ２の状態の後に続くプログラミングを示しており、ここでは、変更態様の３段階プログラミング動作の第２段階が完了している。図１５Ｂ２の下位状態分布１５０６及び図１５Ｃ２の上位状態分布１５４８が繰り返される。この時、下位状態及び上位状態の記憶素子の両方のプログラミングスピードが分かっている。プログラミングスピードに基づく減速措置が高速プログラミングの下位状態の記憶素子に課されるが、低速プログラミングの下位状態の記憶素子には課されずに、プログラミングは分布１５０６の下位状態の記憶素子がＡ状態分布１５２０、Ｂ状態分布１５３０、又はＣ状態分布１５４０に遷移するように続く。同様に、プログラミングスピードに基づく減速措置が高速プログラミングの上位状態の記憶素子に課されるが、低速プログラミングの上位状態の記憶素子には課されずに、プログラミングは分布１５４８の上位状態の記憶素子がＤ状態分布１５５０，Ｅ状態分布１５６０，Ｆ状態分布１５７０，及びＧ状態分布１５８０に遷移するように続く。
【０２０９】
図１５Ｄのいくつかの実施形態において、下位状態の記憶素子のＶｔｈの遷移は、典型的には、上位状態の記憶素子のＶｔｈの遷移よりも前に生じることに留意されたい。
【０２１０】
図１５Ｅは、図１５Ｄの状態の後に続くプログラミングを示しており、ここでは、変更態様の３段階プログラミング動作の第３段階が完了している。この段階において、プログラミングスピードに基づく減速措置は、高速プログラミングの下位状態及び上位状態の記憶素子には課されるが、低速プログラミングの下位状態及び上位状態の記憶素子には課されない。遷移は、検証レベルＶｖａ，Ｖｖｂ，Ｖｖｃ，Ｖｖｄ，Ｖｖｅ，Ｖｖｆ及びＶｖｇを用いて、それぞれＡ状態分布１５２２、Ｂ状態分布１５３２、Ｃ状態分布１５４２，Ｄ状態分布１５５２，Ｅ状態分布１５６２，Ｆ状態分布１５７２及びＧ状態分布１５８２になされる。
【０２１１】
一又は複数の他のワードラインがプログラムされるとき、下位検証レベルでのＶｔｈ分布は容量結合及びその他の干渉効果によって広がり得ることに留意されたい。
【０２１２】
図１６Ａ１は、２ビット記憶素子のための、多段階プログラミング動作に使用されるそれぞれのビットラインのためのデータラッチを示す。例示的なビットラインＢＬｉ−２，ＢＬｉ−１，ＢＬｉ，ＢＬｉ＋１及びＢＬｉ＋２が描かれている。１個の記憶素子につき４レベルの２ビットの実施形態において、第１セットのラッチ（ＬＤＬ）１６００、第２セットのラッチ（ＵＤＬ）１６１０、第３セットのラッチ（ＤＬ１）１６２０、第４セットのラッチ（ＤＬ２）１６３０，及び第５セットのデータラッチ（ＤＬ３）１６４０が提供される。場合においては、全てのラッチが必要というわけではない。一のビットラインに関連するラッチは、このビットラインの複数の異なる記憶素子によって共有される。多段階プログラミング動作は、ワードラインを前後する順に行われ、ラッチ内の情報を維持するために手当が必要である。プログラミング中、ＬＤＬ及びＵＤＬが、プログラムされるべきユーザデータを記憶するために使用される一方、ＤＬ１，ＤＬ２及びＤＬ３ラッチがプログラミングスピードデータを記憶するために使用され得る。
【０２１３】
図１６Ａ２は、３ビット記憶素子のための、多段階プログラミング動作に使用されるそれぞれのビットラインのためのデータラッチを示す。この場合において、１セットのラッチ（ＵＤＬ１）１６１２が上位の下位ページビット（すなわち中間ページビット）を記憶し、１セットのラッチ（ＵＤＬ２）１６１４が上位の上位ページビットを記憶する。
【０２１４】
図１６Ｂ〜１６Ｅにおいて、ラッチの使用について記載されており、図１０Ａ〜１５Ｅに関して記載された実施例１〜５を含む先の実施例と一致している。符号「ｗ」は、プログラミング段階においてプログラミングスピードデータがラッチに書き込まれて（例えば記憶されて）いることを示し、「ｒ」はプログラミング段階においてプログラミングスピードデータが（各プログラムパルスの前に）ラッチから読み出され、プログラミング段階において減速措置を課すために使用されることを示し、「ｍ」は、プログラミングスピードデータがラッチに維持され、プログラミング段階（例えば、別のワードラインがプログラム中のとき）において書き込みがされず、又読み出しもされないことを示し、「ｒｓｔ」は、プログラミング段階の終わりでリセットされることを示し、「ｘ」は、プログラミングスピードデータがラッチ内に記憶されない（これは、このラッチが空であり、他のデータ記憶又は他の目的のために使用可能であることを意味する）ことを示す。例えば、ステップ３における図１６Ｄ２の符号「ＷＬｎ  上位／下位  （ｒ，ｒｓｔ／ｗ，ｒ，ｒｓｔ）」は、対応するプログラミング段階がラッチからプログラミングスピードデータを読み出すことを含むことを示し、このラッチは、最初、上位目標データ状態を有するＷＬｎの記憶素子に関連するものである。後に、プログラミング段階において、下位目標データ状態に属する記憶素子のためにプログラムスピード情報が得られ、書き込み動作は、この情報でラッチをアップデートするためにデータラッチにおいて行われる。後続するプログラムパルスのために、上位目標データ状態及び下位目標データ状態の両方に属する記憶素子のプログラムスピード情報を得るためにデータラッチが読み出される。最後に、プログラミング段階の終わりにラッチはリセットされる。
【０２１５】
図１６Ｂ〜１６Ｅにおいても、各ステップは、図に示された特定のＷＬ（ワードライン）のプログラミング段階に対応する。
【０２１６】
図１６Ｂは、実施例１のためのデータラッチに記憶されたデータを示す。「ステップ」は、図７Ａに示されたステップ数を指す。ステップ１において、ＷＬｎのための下位ページ及び上位ページのデータを、使用されるプログラミングの種類に依って、ＬＤＬ及びＵＤＬ等のラッチ内に記憶することができ、及び／又はキャッシュに入れることができる。データの上位及び下位ページの記憶に関する具体的詳細は、任意の適切な技術を使用することができるため記載しない。ＷＬｎの全ての状態のプログラミングスピードデータがＤＬ１に書き込まれ、後続する各プログラムパルスにおいて読み出される。ステップ２において、ＷＬｎ＋１の全ての状態のプログラミングスピードデータがＤＬ２に書き込まれ、後続する各プログラムパルスにおいて読み出される。この間、ＤＬ１内のデータは単に維持される。ステップ３は、ラッチデータを変更することはなく、ＤＬ１は各プログラムパルスの前に読み出され、プログラミング段階の終わりにてリセットされる。ステップ４において、ＤＬ１は、ＷＬｎ＋２の全ての状態のプログラミングスピードデータが書き込まれ、後続する各プログラムパルスにおいて読み出される。ステップ５において、ＤＬ２は、ＷＬｎ＋１の全ての状態のプログラミングスピードデータを得るために、各プログラムパルスの前に読み出される。ステップ５の終わりにて、ＷＬｎ＋１はプログラミングを終了し、よって、ＷＬｎ＋２に属する記憶素子のプログラムスピード情報はもはや必要ではない。よって、ＤＬ２は、ＷＬｎ＋２のプログラミングの終わりにてリセットされる。プログラミングスピードデータは、このデータが判定されるか読み出されるとすぐに記憶素子に適用される。
【０２１７】
図１６Ｃ１は、実施例２のためのデータラッチに記憶されたデータを示す。このステップは図７Ｂに示されたステップ数を指す。ステップ１において、ＷＬｎの上位状態のプログラミングスピードデータがＤＬ１に書き込まれ、後続する各プログラムパルスにおいて読み出される。ステップ２において、ＷＬｎ＋１の上位状態のプログラミングスピードデータがＤＬ２に書き込まれ、後続する各プログラムパルスにおいて読み出される。ステップ３はラッチデータを変更せず、ＷＬｎの上位状態のプログラミングスピードデータを得るためにＤＬ１が各プログラムパルスの前に読み出される。ステップ４において、ＷＬｎ＋２の上位状態のプログラミングスピードデータがＤＬ３に書き込まれ、後続する各プログラムパルスにおいて読み出される。ステップ５において、ＷＬｎ＋１の上位状態のプログラミングスピードデータを得るために、ＤＬ２が各プログラムパルスの前に読み出される。ステップ６において、ＷＬｎの上位状態のプログラミングスピードデータを得るために、ＤＬ１が各プログラムパルスの前に読み出される。ステップ６の終わりにて、ＷＬｎはプログラミングを終え、よってＤＬ１がリセットされる。ステップ７において、ＷＬｎ＋３の上位状態のプログラミングスピードデータがＤＬ１において書き込まれ、後続する各プログラムパルスにおいて読み出される。ステップ８において、ＷＬｎ＋２の上位状態のプログラミングスピードデータを得るために、ＤＬ３が各プログラムパルスの前に読み出される。ステップ９において、ＷＬｎ＋１の上位状態のプログラミングスピードデータを得るために、ＤＬ２が各プログラムパルスの前に読み出される。ステップ９の終わりにて、ＷＬｎ＋１はプログラミングを終え、よってＤＬ２がリセットされる。
【０２１８】
図１６Ｃ２は、図１６Ｃ１の変更態様を示しており、ここでは、第３段階においてプログラミングスピードデータが適用されないものである。この場合において、ＤＬ３は必要ではない。図１６Ｃ１との違いは、ステップ４において、ＷＬｎ＋２の上位状態のプログラミングスピードデータがＤＬ１（ＤＬ３の代わりに）に書き込まれ、ステップ７において、ＷＬｎ＋３の上位状態のプログラミングスピードデータがＤＬ２（ＤＬ１の代わりに）に書き込まれることである。更に、ステップ８の終わりにて、ＤＬ１をリセットすることができ、なぜなら、ＷＬｎ＋２のプログラミングスピードデータはもはや必要ではないからである。同様に、ＤＬ１及びＤＬ２は、それぞれステップ３、ステップ５の終わりにてより早くリセットされ得る。
【０２１９】
図１６Ｃ３は、実施例２Ａのためのデータラッチに記憶されたデータを示す。「ステップ」は図７Ａに示されたステップ数を指す。ステップ１において、ＷＬｎの上位状態の記憶素子のプログラミングスピードデータがＤＬ１に書き込まれ、後続する各プログラムパルスにおいて読み出される。ステップ２において、ＷＬｎ＋１の上位状態の記憶素子のプログラミングスピードデータがＤＬ２に書き込まれ、後続する各プログラムパルスにおいて読み出される。ステップ３はラッチデータを変更せず、ＷＬｎの上位状態のプログラミングスピードデータを得るためにＤＬ１が各プログラムパルスの前に読み出される。ステップ３の終わりにて、ＷＬｎはプログラミングを終え、よってＤＬ１がリセットされる。ステップ４において、ＷＬｎ＋２の上位状態の記憶素子のプログラミングスピードデータがＤＬ１に書き込まれ、後続する各プログラムパルスにおいて読み出される。ステップ５において、ＷＬｎ＋１の上位状態のプログラミングスピードデータを得るために、ＤＬ２が各プログラムパルスの前に読み出される。ステップ５の終わりにて、ＷＬｎ＋１がプログラミングを終え、よってＤＬ２がリセットされる。
【０２２０】
図１６Ｄ１は、実施例３又は５のためのデータラッチに記憶されたデータを示す。「ステップ」は図７Ｂに示されたステップ数を指す。ステップ１において、ＷＬｎの上位状態のプログラミングスピードデータがＤＬ１に書き込まれ、後続する各プログラムパルスにおいて読み出される。ステップ２において、ＷＬｎ＋１の上位状態のプログラミングスピードデータがＤＬ２に書き込まれ、後続する各プログラムパルスにおいて読み出される。ステップ３において、ＷＬｎの下位状態のプログラミングスピードデータがＤＬ１に書き込まれ、ＤＬ１が各プログラムパルスの前に読み出され、プログラミング段階において最初にＷＬｎの上位状態のプログラミングスピードデータを得て、後に、ＷＬｎの上位状態及び下位状態の両方ためのプログラミングスピードデータを得る。ステップ４において、ＷＬｎ＋２の上位状態のプログラミングスピードデータがＤＬ３に書き込まれ、後続する各プログラムパルスにおいて読み出される。ステップ５において、ＷＬｎ＋１の下位状態のプログラミングスピードデータがＤＬ２に書き込まれ、ＤＬ２が各プログラムパルスの前に読み出され、プログラミング段階において最初にＷＬｎ＋１の上位状態のプログラミングスピードデータを得て、後に、ＷＬｎ＋１の上位状態及び下位状態のプログラミングスピードデータを得る。ステップ６において、ＤＬ１が各プログラムパルスの前に読み出され、ＷＬｎの上位状態及び下位状態のプログラミングスピードデータを得る。ステップ６の終わりにて、ＷＬｎはプログラミングを終え、よってＤＬ１がリセットされる。ステップ７において、ＷＬｎ＋３の下位状態のプログラミングスピードデータがＤＬ１に書き込まれ、後続する各プログラムパルスにおいて読み出される。ステップ８において、ＷＬｎ＋２の下位状態のプログラミングスピードデータがＤＬ３に書き込まれ、ＤＬ３が各プログラムパルスの前に読み出され、プログラミング段階において最初にＷＬｎ＋２の高い状態のためにプログラミングスピードデータを得て、後に、ＷＬｎ＋２の上位状態及び下位状態のプログラミングスピードデータを得る。ステップ９において、ＤＬ２が各プログラムパルスの前に読み出され、ＷＬｎ＋１の上位状態及び下位状態のプログラミングスピードデータを得る。ステップ９の終わりにて、ＷＬｎ＋１はプログラミングを終え、よってＤＬ２がリセットされる。
【０２２１】
図１６Ｄ２は、図１６Ｄ１の変更態様を示しており、ここでは、第３段階においてプログラミングスピードデータが適用されないものである。この場合において、ＤＬ３は必要ではない。図１６Ｄ１との違いは、ステップ４において、ＷＬｎ＋２の上位状態のプログラミングスピードデータがＤＬ１（ＤＬ３の代わりに）に書き込まれ、ステップ７において、ＷＬｎ＋３の上位状態のログラミングスピードデータがＤＬ２（ＤＬ１の代わりに）に書き込まれることである。更に、ステップ５の終わりにて、ＤＬ２をリセットすることができ、なぜなら、ＷＬｎ＋１のプログラミングスピードデータはもはや必要ではないからであり、かつ、ステップ８の終わりにて、ＤＬ１をリセットすることができ、なぜなら、ＷＬｎ＋２のプログラミングスピードデータはもはや必要ではないからである。同様に、ＤＬ１は、ステップ３の終わりにてより早くリセットされ、なぜなら、ＷＬｎのプログラムスピードデータはもはや必要ではないからである。
【０２２２】
図１６Ｅは、実施例４又は６のためのデータラッチに記憶されたデータを示す。「ステップ」は図７Ｂに示されたステップ数を指す。ステップ１及び２は、どのプログラミングスピードデータの書き込みも読み込みも含まない。ステップ３において、まず下位状態のプログラミングスピードデータがＤＬ１に書き込まれ、その後ＷＬｎの上位状態のプログラミングスピードデータがＤＬ１に書き込まれ、ＤＬ１は後続する各プログラムパルスにおいて読み出される。ステップ４において、ＤＬ１内のプログラミングスピードデータは維持される。ステップ５において、まず下位状態のプログラミングスピードデータがＤＬ２に書き込まれ、後にＷＬｎ＋１の上位状態のプログラミングスピードデータがＤＬ２に書き込まれ、ＤＬ２は後続する各プログラムパルスにおいて読み出される。ステップ６において、ＤＬ１が各プログラムパルスの前に読み出され、ＷＬｎの下位状態及び上位状態のプログラミングスピードデータを得る。ステップ６の終わりにて、ＤＬ１をリセットすることができ、なぜならＷＬｎの全てのプログラミングが完了したため、ＷＬｎのプログラミングスピードデータはもはや必要ではないからである。一般に、一のワードラインのためのプログラミングスピードデータを記憶するラッチは、このワードラインがプログラミングを完了するかプログラミングスピードデータをもはや必要としなくなった場合にリセットされ得る。ステップ７において、ＤＬ２内のプログラミングスピードデータが維持される。ステップ８において、まず下位状態のプログラミングスピードデータがＤＬ１に書き込まれ、その後ＷＬｎ＋２の上位状態のプログラミングスピードデータがＤＬ１に書き込まれ、ＤＬ１は後続する各プログラムパルスにおいて読み出される。ステップ９において、ＤＬ２が各プログラムパルスの前に読み出され、ＷＬｎ＋１の下位状態及び上位状態のプログラミングスピードデータを得る。ステップ９の終わりにて、ＷＬｎ＋１はプログラミングを終え、よってＤＬ２がリセットされる。
【０２２３】
実施例４及び図１６Ｅにおいて、以下のステップがラッチに対して行われることに留意されたい。
【０２２４】
ステップ１：プログラミングの開始
【０２２５】
ステップ３は、複数の異なる部分３ａ〜３ｄを含む。
【０２２６】
部分３ａ：下位状態の記憶素子のプログラミングスピードデータを得る。この情報は、ラッチ（この例においてＤＬ１）に保存される。これは一書き込み動作である。
【０２２７】
部分３ｂ：後続するプログラミングにおいて各プログラムパルスの前にラッチからプログラミングスピードデータを読み出す。そして、読み出された情報に基づき、後続するプログラミングのために下位状態の高速の記憶素子に減速措置を適用する。これは一読み出し動作である。
【０２２８】
部分３ｃ：後に、同じプログラミング段階において、上位状態の記憶素子のプログラミングスピードデータを得る。この情報が同じ１セットのラッチ（ＤＬ１）に加えられ、よってラッチはアップグレードされる。今、我々は全ての記憶素子のための統合されたプログラミングスピードデータを有する。これは別の書き込み動作である。
【０２２９】
部分３ｄ：後続するプログラミングにおいて、各プログラムパルスの前にラッチからプログラミングスピードデータを読み出す。そして、読み出された情報に基づき、後続するプログラミングのために下位状態及び上位状態の記憶素子のうち高速の記憶素子に減速措置を適用する。これは一読み出し動作である。
【０２３０】
ステップ６は部分６ａ及び６ｂを含む。
【０２３１】
部分６ａ：プログラミング段階において、各プログラムパルスの前にラッチからプログラミングスピードデータを読み出す。そして、読み出された情報に基づき、後続するプログラミングのために下位状態及び上位状態の記憶素子のうち高速の記憶素子に減速措置を適用する。これは一読み出し動作である。
【０２３２】
部分６ｂ：ＷＬｎのための多段階プログラミング動作の終わりにてラッチをリセットする。
【０２３３】
次に、最終プログラミング段階においてプログラミングスピードデータを破棄するためのオプションを記載する。
【０２３４】
図１６Ｃ２及び１６Ｄ２に関して説明したように、ラッチの数を減らすために（例えば１ビットラインにつき１ラッチ）、最終プログラミング段階（例えば、３段階プログラミング動作の第３段階）においてプログラミングスピードデータを破棄することが可能である。この場合において、最終段階の前にプログラミングスピードデータが一又は複数の先のプログラミング段階において適用される。多くの場合において、これはなお著しい利益を産む。
【０２３５】
更に、Ｖｓｇｄのレベルは、最終段階よりも先のプログラム段階（例えば第２段階）のほうがより高くなり得る。これは、Ｖｓｇｄがより高くなるとより高いビットラインバイアスを使用することができ、ＳＧＤトランジスタへの不必要なストレスを回避し、かつ電力消費を減らすように、現在の状態に合わせて最適化することができる点で有用である。例えば、先の段階は付加的なビットラインバイアスを使用することができ、この付加的なビットラインバイアスは、プログラミングスピードに基づくものではなく、例えば、記憶素子のＶｔｈが目標データ状態の下位検証レベルと上位検証レベルの間に場合に適用されるか、プログラミング段階全体を通して適用されるか、又は他の時期に適用されるものである。これは、プログラミングスピードに基づく減速措置に加えて実施することができる付加的な減速措置である。
【０２３６】
例えば図１０Ａを参照すると、Ａ状態の目標状態を備える記憶素子のために、この記憶素子のＶｔｈがＶｖａＬとＶｖａの間にある場合に付加的なビットラインバイアスが印加され得る。この付加的なビットラインバイアスは、高速プログラミング記憶素子に印加されるプログラミングスピードに基づくバイアスに加えられる。低速プログラミング記憶素子に対しては、付加的なビットラインバイアスのみが使用される。例えば、プログラミングスピードに基づくバイアスは０．７Ｖとし、付加的なビットラインバイアスは０．５Ｖとすることができる。よって、０．５Ｖのビットラインバイアスを低速プログラミング記憶素子に印加することができ、１．２Ｖのビットラインバイアスを高速プログラミング記憶素子に印加することができる。これらのビットラインバイアスは、まだロックアウトされていないビットラインに印加される。ロックアウトビットラインバイアスは２〜３Ｖでよい。その後、最終段階において、プログラミングスピードに基づくバイアスは使用されないが、付加的なビットラインバイアスが使用される。例えば、０．５Ｖのビットラインバイアスを、プログラムされる記憶素子に印加することができる。異なる段階においてＶｓｇｄのレベルを調整することによって、メモリデバイスの性能を最適化することができる。
【０２３７】
Ｖｂｌは、Ｖｓｇｄ（ドレイン側選択ゲート）マージン領域によって制限されるため、高くなりすぎることはない。もしＶｂｌが高すぎる場合、ドレイン側選択ゲートをオンするのに必要な、又は導通するのに必要なＶｓｇｄレベルは過剰に高くなる。具体的には、選択ＮＡＮＤストリングが高Ｖｂｌを通すのに十分に高いＶｓｇｄレベルは、非選択の禁じられたＮＡＮＤストリングがドレイン側選択ゲートを非導電状態に維持するのには高すぎる可能性がある。しかしながら、共通のＶｓｇｄが選択及び非選択の全てのビットラインのために使用される。
【０２３８】
ドレイン側選択ゲートを非導電状態に維持することは、非選択ビットライン及びＮＡＮＤストリングのために望ましく、なぜならこれは、非選択ＮＡＮＤストリングの基板におけるチャネルがブーストレベル（選択ＮＡＮＤストリングのプログラミングの間、非選択ＮＡＮＤストリングの非選択記憶素子のプログラミングを禁じるものである）を維持できるようにするからである。もしドレイン側選択ゲートが導電状態になると、禁止されたチャネル内のブースト電位は漏れ出し、これは禁じられた記憶素子へのプログラムディスターブをもたらし得る。Ｖｂｌを通すのに十分高いＶｓｇｄレベルは、（ａ）Ｖｓｇｄ≧Ｖｂｌ＋Ｖｔｈ（ｓｇｄ）＋マージンであり、ここで、Ｖｔｈ（ｓｇｄ）はＳＧＤトランジスタの閾値電圧であり、マージンは幾分かの付加的な小さな安全マージンである。一方、チャネルを遮断し、Ｖｂｌを通さないように十分低いＶｓｇｄレベルは、（ｂ）Ｖｓｇｄ≦Ｖｂｌ＋Ｖｔｈ（ｓｇｄ）−マージンである。条件（ａ）は、選択ビットラインのために満たされるべきであり、条件（ｂ）は非選択ビットラインのために満たされるべきである。これら２つの条件の組み合わせは、Ｖｓｇｄ値が最適なプログラミングを有するように設定されるべきＶｓｇｄマージン領域をもたらす。
【０２３９】
例えば、Ｖｔｈ（ｓｇｄ）＝１Ｖ及びマージン＝０．２Ｖであると仮定する。先のプログラミング段階において、我々は０．７Ｖのプログラミングスピードに基づくバイアスを印加し、かつ０．５Ｖの付加的なビットラインバイアスを印加する。Ｖｂｌ＝１．２Ｖを有する選択ビットラインのために、条件（ａ）は、Ｖｓｇｄ≧１．２Ｖ＋１Ｖ＋０．２Ｖ、又はＶｓｇｄ≧２．４Ｖである。条件（ｂ）は、Ｖｓｇｄ≦Ｖｂｌ＋１Ｖ−０．２Ｖ、又はＶｓｇｄ≦Ｖｂｌ＋０．８Ｖである。例えば選択ビットラインのためにＶｓｇｄ＝２．４Ｖである場合、条件（ａ）が満たされ、かつ非選択ビットラインのためにＶｂｌ≧１．６である場合に条件（ｂ）が満たされる。これらの条件は妥当なものであり、なぜならＶｓｇｄは高すぎることはないからである。
【０２４０】
最終プログラミング段階において、我々は０．５Ｖの付加的なビットラインバイアスを印加するが、０．７Ｖのプログラミングスピードに基づくバイアスは印加しない。Ｖｂｌ＝０．５Ｖを有する選択ビットラインのために、条件（ａ）は、Ｖｓｇｄ≧０．５Ｖ＋１Ｖ＋０．２Ｖ、又はＶｓｇｄ≧１．７Ｖである。条件（ｂ）は、Ｖｓｇｄ≦Ｖｂｌ＋１Ｖ−０．２Ｖ、又はＶｓｇｄ≦Ｖｂｌ＋０．８Ｖである。例えば選択ビットラインのためにＶｓｇｄ＝１．７Ｖである場合、条件（ａ）が満たされ、かつ非選択ビットラインのためにＶｂｌ≧１．０である場合に条件（ｂ）が満たされる。やはり、これらの条件は妥当なものであり、なぜならＶｓｇｄは高すぎることはなく、かつ必要以上に高くはないからであり、よってＳＧＤトランジスタへの不必要なストレスが避けられる。同様に、電力消費量も抑えられる。
【０２４１】
説明したビットラインバイアス値は例にすぎない。
【０２４２】
従って、この技術は、多段階プログラミング動作の１段階（例えば曖昧な（ｆｏｇｇｙ）段階）を実行することを含むことができ、これは以下を含む。（ａ）低速プログラミング不揮発性記憶素子から高速プログラミングの不揮発性記憶素子を識別する識別ステップと、（ｂ）この識別に応答し、（ｉ）高速プログラミング不揮発性記憶素子のうちの少なくともいくつかの不揮発性記憶素子のプログラミングを継続し、低速プログラミングスピードに基づく減速措置を課すために関連するビットライン電圧を第１のゼロ以外のビットラインレベル（例えば０．７Ｖのプログラミングスピードに基づくバイアス及び０．５Ｖの付加的なビットラインバイアスの合計）に設定するステップと、（ｉｉ）低速プログラミング不揮発性記憶素子のうちの少なくともいくつかの不揮発性記憶素子のプログラミングを継続し、関連するビットライン電圧を第１のゼロ以外のビットラインレベルより低い第２のゼロ以外のビットラインレベル（例えば０．５Ｖの付加的なビットラインバイアス）に設定するステップと、（ｉｉｉ）第１コントロールゲートレベル（例えば２．４Ｖ）にて不揮発性記憶素子に関連するドレイン側選択ゲートの共通のコントロールゲート電圧を設定するステップである。更に、この技術は、１段階において関連する検証レベルに到達する高速プログラミング不揮発性記憶素子の少なくともいくつかのため及び低速プログラミング不揮発性記憶素子の少なくともいくつかのために、関連するビットライン電圧を第１ビットラインレベルより大きいロックアウトレベル（例えば２．５−３Ｖ）に引き上げる。
【０２４３】
次の段階（例えば細かい段階（ｆｉｎｅ  ｐｈａｓｅ））を実行することを更に含み、この次の段階は、関連するビットライン電圧を第１ビットラインレベルより低いゼロ以外のレベル（例えば０．５Ｖの付加的なビットラインバイアス）に設定し、選択ゲートの共通のコントロールゲート電圧を第１コントロールゲートより低い第２コントロールゲートレベル（例えば１．７Ｖ）に設定して、高速不揮発性記憶素子及び低速不揮発性記憶素子のプログラミングを継続する継続ステップを含む。この技術は、少なくともいくつかの高速プログラミング不揮発性記憶素子のため及び次の段階において関連する検証レベルに到達する少なくともいくつかの低速プログラミング不揮発性記憶素子のために関連するビットライン電圧をロックアウトレベルに引き上げるステップを更に含む。
【０２４４】
実施形態において、１段階（ＦＯＧＧＹ）及び次の段階（ＦＩＮＥ）を含む多段階プログラミング動作を用いて１セットの不揮発性記憶素子（１５５）をプログラミングするための方法が提供される。１セットの不揮発性記憶素子のうち目標ワードライン（ＷＬｎ）の不揮発性記憶素子のために、前記１段階（ＦＯＧＧＹ）を実行するステップを含み、このステップは、（ａ）低速プログラミング不揮発性記憶素子から目標ワードラインの高速プログラミング不揮発性記憶素子を識別する識別ステップを含む。この方法は更に、（ｂ）この識別に応じ、（ｉ）目標ワードラインの低速プログラミング不揮発性記憶素子から目標ワードラインの高速プログラミング不揮発性記憶素子を識別するプログラミングスピードデータを第１セットのラッチ内に保存するステップと、（ｉｉ）後続する各プログラムパルスの前に第１セットのラッチを読み出すステップと、（ｉｉｉ）読み出された情報に基づいて、プログラミングスピードに基づく減速措置を課して目標ワードラインの少なくともいくつかの高速プログラミング不揮発性記憶素子のプログラミングを継続するステップと、（ｉｖ）プログラミングスピードに基づく減速措置を課すことなく、目標ワードラインの少なくともいくつかの前記低速プログラミング不揮発性記憶素子のプログラミングを継続するステップと、を含む。
【０２４５】
前記方法は更に、１セットの不揮発性記憶素子において、別のワードライン（ＷＬｎ＋１）の不揮発性記憶素子のためにプログラミング動作を実行するステップを含む。この方法は更に、前記次の段階（ＦＩＮＥ）の間、前記第１セットのラッチ内の前記プログラミングスピードデータに応じて、プログラミングスピードに基づく減速措置を課して前記目標ワードラインの前記高速プログラミング不揮発性記憶素子のプログラミングを継続するステップと、第１セットのラッチ内の前記プログラミングスピードデータに応じて、プログラミングスピードに基づく減速措置を課すことなく、前記目標ワードラインの前記低速プログラミング不揮発性記憶素子のプログラミングを継続するステップと、を含む。
【０２４６】
対応する不揮発性記憶装置は、１セットの不揮発性記憶素子と、この１セットの不揮発性記憶素子に関連付けられており、目標ワードラインを含むワードラインと、一又は複数の制御回路とを含む。一又は複数の制御回路は上記の方法のステップを実行する。あるいは、この装置は上記方法のステップを実行する手段を含むことができる。
【０２４７】
別の実施形態において、１段階（ＬＭ）、次の段階（ＦＯＧＧＹ）、及び次の次の段階（ＦＩＮＥ）を含む多段階プログラミング動作を用いて１セットの不揮発性記憶素子をプログラミングするための方法が提供される。この方法は、１セットの不揮発性記憶素子のうちの目標ワードラインの不揮発性記憶素子のために、１段階（ＬＭ）を実行するステップを含み、このステップは、少なくとも一つの下位目標データ状態（Ａ；Ａ，Ｂ，Ｃ）の不揮発性記憶素子が消去状態を維持したまま、プログラミング上位目標データ状態（Ｂ，Ｃ；Ｄ，Ｅ，Ｆ，Ｇ）を有する不揮発性記憶素子を消去状態から、上位目標データ状態の検証レベルより低い中間検証レベル（ＶｖＬＭ）を有する中間分布にプログラミングするステップを含む。この方法は更に、第１セットの検証レベル（ＶｖａＬ，ＶｖｂＬ，ＶｖｃＬ；ＶｖａＬ，ＶｖｂＬ，ＶｖｃＬ，ＶｖｄＬ，ＶｖｅＬ，ＶｖｆＬ，ＶｖｇＬ）を使用して次の段階（ＦＯＧＧＹ）を実行するステップを含み、このステップは、（ａ）少なくとも一つの下位目標データ状態を有する不揮発性記憶素子のうち、低速プログラミング不揮発性記憶素子から高速プログラミング不揮発性記憶素子を識別する識別ステップと、（ｂ）この識別に応じて、（ｉ）少なくとも一つ下位目標データ状態を有する低速プログラミング不揮発性記憶素子から、少なくとも一つ下位目標データ状態を有する高速プログラミング不揮発性記憶素子を識別するプログラミングスピードデータを第１セットのラッチ内で保存するステップと、（ｉｉ）後続する各プログラムパルスの前に第１セットのラッチを読み出すステップと、（ｉｉｉ）この読み出された情報に基づいて、プログラミングスピードに基づく減速措置を課して少なくとも一つの下位目標データ状態を有する高速プログラミング不揮発性記憶素子のうち少なくともいくつかの不揮発性記憶素子のプログラミングを継続するステップと、（ｉｖ）プログラミングスピードに基づく減速措置を課すことなく、少なくとも一つの下位目標データ状態を有する低速プログラミング不揮発性記憶素子のうち少なくともいくつかの不揮発性記憶素子のプログラミングを継続するステップと、（ｃ）上位目標データ状態を有する不揮発性記憶素子のプログラミングを継続するステップと、を含む。
【０２４８】
前記方法は更に、第２セットの検証レベル（Ｖｖａ，Ｖｖｂ，Ｖｖｃ；Ｖｖａ，Ｖｖｂ，Ｖｖｃ，Ｖｖｄ，Ｖｖｅ，Ｖｖｆ，Ｖｖｇ）のうち関連する検証レベルを使用して次の次の段階（ＦＩＮＥ）を実行するステップを含み、ここで、第２セットの検証レベルの各検証レベルは、第１セットの検証レベルの対応する検証レベルよりも高く、前記ステップは、（ｄ）各プログラムパルスの前に第１セットのラッチを読み出すステップと、この読み出された情報に基づき、第１セットのラッチ内のプログラミングスピードデータに応じて、プログラミングスピードに基づく減速措置を課して少なくとも一つの下位目標データ状態を有する高速プログラミング不揮発性記憶素子のプログラミングを継続するステップと、プログラミングスピードに基づく減速措置を課すことなく、少なくとも一つの下位目標データ状態を有する低速プログラミング不揮発性記憶素子のプログラミングを継続するステップと、（ｅ）上位目標データ状態を有する不揮発性記憶素子のプログラミングを継続するステップと、を含む。
【０２４９】
対応する不揮発性記憶装置は、１セットの不揮発性記憶素子と、目標ワードラインを含む、１セットの不揮発性記憶素子に関連づけられたワードラインと、一又は複数の制御回路とを含む。一又は複数の制御回路は、上記の方法のステップを実行する。あるいは、前記装置は、上記の方法のステップを実行する手段を含むことができる。
【０２５０】
別の実施形態において、１段階（ＦＯＧＧＹ）及び次の段階（ＦＩＮＥ）を含む多段階プログラミング動作を使用して１セットの不揮発性記憶素子をプログラミングする方法が提供される。この方法は、１セットの不揮発性記憶素子のうち目標ワードラインの不揮発性記憶素子のために、前記１段階（ＦＯＧＧＹ）を実行するステップを含み、このステップは、（ａ）低速プログラミング不揮発性記憶素子から高速プログラミング不揮発性記憶素子を識別する識別ステップと、及び（ｂ）この識別に応じて、（ｉ）目標ワードラインの低速プログラミング不揮発性記憶素子から目標ワードラインの高速プログラミング不揮発性記憶素子を識別するプログラミングスピードデータを第１セットのラッチ内に保存するステップと、（ｉｉ）各プログラムパルスの前に第１セットのラッチを読み出し、（ｉｉｉ）この読み出された情報に基づき、プログラミングスピードに基づく減速措置を課すために、関連するビットライン電圧を第１のゼロ以外のビットラインレベル（例えば１．２Ｖ）に設定して少なくともいくつかの高速プログラミング不揮発性記憶素子のプログラミングを継続するステップと、（ｉｖ）第１のゼロ以外のビットラインレベルよりも低い第２のゼロ以外のビットラインレベル（０．５Ｖ）に関連するビットライン電圧を設定して少なくともいくつかの低速プログラミング不揮発性記憶素子のプログラミングを継続するステップと、（ｉｉｉ）第１コントロールゲートレベル（例えば２．４Ｖ）にて不揮発性記憶素子に関連付けられたドレイン側選択ゲートの共通のコントロールゲート電圧を設定するステップと、を含む。
【０２５１】
前記方法は、前記１段階において関連する検証レベルに到達した少なくともいくつかの高速プログラミング不揮発性記憶素子及び少なくともいくつかの低速プログラミング不揮発性記憶素子のために、第１ビットラインレベルより高いロックアウトレベルに関連するビットライン電圧を引き上げるステップを含む。この方法は更に、次の段階（ＦＩＮＥ）を実行するステップを含み、このステップは、各プログラムパルスの前に第１セットのラッチを読み出しつつ、高速の不揮発性記憶素子及び低速の不揮発性記憶素子のプログラミングを継続するステップと、この読み出された情報に基づき、第１ビットラインレベルよりも低いゼロ以外のレベルに関連するビットライン電圧を設定するステップと、前記第１コントロールゲートレベルよりも低い第２コントロールゲートレベル（例えば１．７）にて選択ゲートの共通のコントロールゲート電圧を設定するステップと、を含む。
【０２５２】
前記方法は更に、次の段階において関連する検証レベルに到達した少なくともいくつかの高速プログラミング不揮発性記憶素子及び少なくともいくつかの前記低速プログラミング不揮発性記憶素子のために、関連するビットライン電圧をロックアウトレベルに引き上げるステップを含む。
【０２５３】
対応する不揮発性記憶装置は、１セットの不揮発性記憶素子と、この１セットの不揮発性記憶素子に関連付けられ、かつ目標ワードラインを含むワードラインと、一又は複数の制御回路と、を含む。一又は複数の制御回路は、上記の方法のステップを実行する。あるいは、この装置は、前記上記の方法のステップを実行するための手段を含むことができる。
【０２５４】
別の実施形態において、１セットの不揮発性記憶素子のうち目標ワードラインの不揮発性記憶素子をプログラミングする方法が提供される。この方法は、（ａ）プログラミングパルスを目標ワードラインに印加するステップと、（ｂ）特定数の不揮発性記憶素子が規定の検証レベル（ＶｖａＬ，Ｖｖａ）に到達したときを判定するステップと、（ｃ）この特定数の不揮発性記憶素子が第１検証レベルに到達した後、プログラミングパルスの数（ｍ，ｋ）を計数するステップと、（ｄ）この計数の完了に応じて、規定の検証レベル（ＶｖａＬ，Ｖｖａ）又は別のより低いレベル（Ｖｖｌ）にて検出動作を実行することによって低速プログラミング不揮発性記憶素子から高速プログラミング不揮発性記憶素子を識別するステップと、（ｅ）この識別に応じて、目標ワードラインの低速プログラミング不揮発性記憶素子から目標ワードラインの高速プログラミング不揮発性記憶素子を識別するプログラミングスピードデータを第１セットのラッチ内に保存するステップと、（ｆ）各プログラムパルスの前に１セットのラッチを読み出すステップと、この読み出された情報に基づいて、関連するプログラミングスピードに基づく減速措置を課して少なくともいくつかの高速プログラミング不揮発性記憶素子のプログラミングを継続するステップと、プログラミングスピードに基づく減速措置を課すことなく、目標ワードラインの少なくともいくつかの低速プログラミング不揮発性記憶素子のプログラミングを継続するステップと、を含む。
【０２５５】
対応する不揮発性記憶装置は、１セットの不揮発性記憶素子と、１セットの不揮発性記憶素子に関連付けられており、目標ワードラインを含むワードラインと、一又は複数の制御回路と、を含む。一又は複数の制御回路は、上記の方法のステップを実行する。あるいは、この装置は、前記上記の方法のステップを実行するための手段を含むことができる。
【０２５６】
本明細書において提供された方法を実施するための対応する方法、システム、並びにコンピュータ若しくはプロセッサ可読の記憶デバイスが提供される。
【０２５７】
上記本発明の詳細な説明は、説明のための例示にすぎない。上記本発明の詳細な説明は、詳細に開示した範囲に限定するものではない。本明細書が開示する技術は、上記の教示に基づき様々に変形、変更し得る。上記説明した実施形態は、本発明の原理とその具体的な適用例をよく説明するために選ばれたものであり、当業者は、具体的な事例に則して本発明を様々に変更し得る。本発明の技術的範囲は、添付された特許請求の範囲によって定まるものである。
【図１】
2013532881.tif 000003
【図２】
2013532881.tif 000004
【図３】
2013532881.tif 000005
【図４】
2013532881.tif 000006
【図５】
2013532881.tif 000007
【図６】
2013532881.tif 000008
【図７Ａ】
2013532881.tif 000009
【図７Ｂ】
2013532881.tif 000010
【図８Ａ】
2013532881.tif 000011
【図８Ｂ】
2013532881.tif 000012
【図８Ｃ】
2013532881.tif 000013
【図８Ｄ】
2013532881.tif 000014
【図８Ｅ】
2013532881.tif 000015
【図９Ａ−９Ｂ】
2013532881.tif 000016
【図９Ｃ】
2013532881.tif 000017
【図９Ｄ】
2013532881.tif 000018
【図１０Ａ】
2013532881.tif 000019
【図１０Ｂ】
2013532881.tif 000020
【図１０Ｃ】
2013532881.tif 000021
【図１０Ｄ】
2013532881.tif 000022
【図１０Ｅ】
2013532881.tif 000023
【図１０Ｆ】
2013532881.tif 000024
【図１０Ｇ】
2013532881.tif 000025
【図１１Ａ】
2013532881.tif 000026
【図１１Ｂ】
2013532881.tif 000027
【図１１Ｃ】
2013532881.tif 000028
【図１１Ｄ】
2013532881.tif 000029
【図１１Ｅ】
2013532881.tif 000030
【図１１Ｆ】
2013532881.tif 000031
【図１１Ｇ】
2013532881.tif 000032
【図１１Ｈ】
2013532881.tif 000033
【図１２Ａ】
2013532881.tif 000034
【図１２Ｂ】
2013532881.tif 000035
【図１２Ｃ】
2013532881.tif 000036
【図１３Ａ】
2013532881.tif 000037
【図１３Ｂ１】
2013532881.tif 000038
【図１３Ｂ２】
2013532881.tif 000039
【図１３Ｃ１】
2013532881.tif 000040
【図１３Ｃ２】
2013532881.tif 000041
【図１３Ｄ】
2013532881.tif 000042
【図１４Ａ】
2013532881.tif 000043
【図１４Ｂ】
2013532881.tif 000044
【図１４Ｃ】
2013532881.tif 000045
【図１４Ｄ】
2013532881.tif 000046
【図１４Ｅ】
2013532881.tif 000047
【図１４Ｆ】
2013532881.tif 000048
【図１４Ｇ】
2013532881.tif 000049
【図１４Ｈ】
2013532881.tif 000050
【図１４Ｉ】
2013532881.tif 000051
【図１５Ａ】
2013532881.tif 000052
【図１５Ｂ１】
2013532881.tif 000053
【図１５Ｂ２】
2013532881.tif 000054
【図１５Ｃ１】
2013532881.tif 000055
【図１５Ｃ２】
2013532881.tif 000056
【図１５Ｄ】
2013532881.tif 000057
【図１５Ｅ】
2013532881.tif 000058
【図１６Ａ１】
2013532881.tif 000059
【図１６Ａ２】
2013532881.tif 000060
【図１６Ｂ】
2013532881.tif 000061
【図１６Ｃ１】
2013532881.tif 000062
【図１６Ｃ２】
2013532881.tif 000063
【図１６Ｃ３】
2013532881.tif 000064
【図１６Ｄ１】
2013532881.tif 000065
【図１６Ｄ２】
2013532881.tif 000066
【図１６Ｅ】
2013532881.tif 000067
【国際調査報告】
2013532881.tif 000068
2013532881.tif 000069
2013532881.tif 000070
2013532881.tif 000071