(57)【特許請求の範囲】
【請求項１】
不揮発性記憶素子を動作させる方法であって、
第１の検証条件（Ｖｅｒａｓｅ  ｖｅｒｉｆｙ）が満たされるまで、１つ又は複数の消去パルス（Ｖｅｒａｓｅ１−Ｖｅｒａｓｅ８）を、不揮発性記憶素子（１１００）のセットに印加するステップと、
印加された前記消去パルスのカウント（Ｎｅｒａｓｅ）を判定するステップと、
検証動作を実行せずに、１つ又は複数のソフトプログラミングパルス（Ｖｓｐｇｍ１−Ｖｓｐｇｍ５）を、前記カウントに基づく数Ｎｓｐｇｍ−ｓｋｉｐだけ不揮発性記憶素子の前記セットに印加し、その後、第２の検証条件（Ｖｓｐｇｍ  ｖｅｒｉｆｙ）が満たされるまで、１つ又は複数の追加のソフトプログラミングパルス（Ｖｓｐｇｍ６−Ｖｓｐｇｍ１５）を不揮発性記憶素子の前記セットに印加するステップ、
を有しており、
前記１つ又は複数の追加のソフトプログラミングパルスの各ソフトプログラミングパルスの後に検証動作（７１０、７１２、７１４、８１０、８１２）が続くこと、
を特徴とする方法。
【請求項２】
不揮発性揮発素子の前記セットを、前記カウントに基づいて複数の使用可能なグループ（Ｇ１、Ｇ２、Ｇ３）の内の１つのグループに分類するステップをさらに有し、
Ｎｓｐｇｍ−ｓｋｉｐが、不揮発性記憶素子の前記セットが分類される前記グループに基づいている、
ことを特徴とする請求項１に記載の方法。
【請求項３】
前記第２の検証条件が満たされるのに応じて、前記セットの中の不揮発性記憶素子の少なくとも１つを、より高いデータ状態（Ａ、Ｂ、Ｃ）にプログラミングするステップをさらに有することを特徴とする請求項１又は２に記載の方法。
【請求項４】
Ｎｓｐｇｍ−ｓｋｉｐが、複数の消去動作（１００２）で印加される消去パルスのカウントに基づくことを特徴とする請求項１から３のいずれか１つに記載の方法。
【請求項５】
不揮発性揮発素子の前記セットが、前記第１の検証条件が満たされるときに、少なくとも部分的に、消去状態（４４２）に満たない第１の閾値電圧分布（４４０）を有し、前記第２の検証条件が満たされるときに、前記消去状態において第２のより狭い閾値電圧分布（４４２）を有することを特徴とする請求項１から４のいずれか１つに記載の方法。
【請求項６】
前記１つ又は複数のソフトプログラミングパルスの第１のソフトプログラミングパルス（Ｖｓｐｇｍ１）のレベル（高、中、低）が、前記カウントに基づいて設定されることを特徴とする請求項１から５のいずれか１つに記載の方法。
【請求項７】
前記１つ又は複数のソフトプログラミングパルスのステップサイズ（△Ｖ１、△Ｖ２、△Ｖ３）が、前記カウントに基づいて設定されることを特徴とする請求項１から６のいずれか１つに記載の方法。
【請求項８】
前記１つ又は複数のソフトプログラミングパルスのパルス幅（ｔ１、ｔ２、ｔ３）が、前記カウントに基づいて設定されることを特徴とする請求項１から７のいずれか１つに記載の方法。
【請求項９】
ソフトプログラミングパルスの数の最大限度（許容最大値）が、前記カウントに基づいて設定されることを特徴とする請求項１から８のいずれか１つに記載の方法。
【請求項１０】
１つ又は複数の消去パルスを印加する前記ステップが、第１の消去シーケンスの消去動作（７００、７１３）の一部であり、
１つ又は複数のソフトプログラミングパルスを前記数Ｎｓｐｇｍ−ｓｋｉｐだけ印加する前記ステップが、前記第１の消去シーケンスのソフトプログラミング動作（８００、８２０、８４０、８６０、８８０）の一部である、
ことを特徴とする請求項１から９のいずれか１つに記載の方法。
【請求項１１】
複数の消去検証パルスが前記カウントに基づいてスキップされる第２の消去シーケンスの追加消去動作を実行するステップをさらに有することを特徴とする請求項１０に記載の方法。
【請求項１２】
不揮発性記憶素子（１１００）のセットと、
第１の検証条件（Ｖｅｒａｓｅ  ｖｅｒｉｆｙ）が満たされるまで、不揮発性記憶素子の前記セットに１つ又は複数の消去パルス（Ｖｅｒａｓｅ１−Ｖｅｒａｓｅ８）を印加する手段（１２１０、１２５０）と、
印加された前記消去パルスのカウント（Ｎｅｒａｓｅ）を判定する手段（１２１０、１２５０）と、
検証動作を実行せずに、１つ又は複数のソフトプログラミングパルス（Ｖｓｐｇｍ１−Ｖｓｐｇｍ５）を、前記カウントに基づく数Ｎｓｐｇｍ−ｓｋｉｐだけ不揮発性記憶素子の前記セットに印加し、その後、第２の検証条件（Ｖｓｐｇｍ  ｖｅｒｉｆｙ）が満たされるまで、不揮発性記憶素子の前記セットに１つ又は複数の追加のソフトプログラミングパルス（Ｖｓｐｇｍ６−Ｖｓｐｇｍ１５）を印加する手段（１２１０、１２５０）、
を有しており、
前記１つ又は複数の追加ソフトプログラミングパルスの各ソフトプログラミングパルスの後に検証動作（７１０、７１２、７１４、８１０、８１２）が続くこと、
を特徴とする不揮発性記憶装置。
【請求項１３】
不揮発性記憶素子の前記セットを、前記カウントに基づいて複数の使用可能なグループの内の１つのグループ（Ｇ１、Ｇ２、Ｇ３）に分類する手段をさらに有し、
Ｎｓｐｇｍ−ｓｋｉｐが、不揮発性記憶素子の前記セットが分類される前記グループに基づいている、
ことを特徴とする請求項１２に記載の不揮発性記憶装置。
【請求項１４】
１つ又は複数の消去パルスの前記印加が、第１の消去シーケンスの消去動作（７００、７１３）の一部であり、
１つ又は複数のソフトプログラミングパルスの前記数Ｎｓｐｇｍ−ｓｋｉｐだけの前記印加が、前記第１の消去シーケンスのソフトプログラミング動作（８００、８２０、８４０、８６０、８８０）の一部である、
ことを特徴とする請求項１２又は１３に記載の不揮発性記憶装置。
【請求項１５】
前記１つ又は複数のソフトプログラミングパルスの少なくとも１つのレベル（高、中、低）、ステップサイズ（△Ｖ１、△Ｖ２、△Ｖ３）、及び、パルス幅（ｔ１、ｔ２、ｔ３）の少なくとも１つが、前記カウントに基づいて設定されることを特徴とする請求項１２から１４のいずれか１つに記載の不揮発性記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性メモリに関する。
【背景技術】
【０００２】
半導体メモリは、様々な電子装置に使用されることが一般的になってきている。例えば、不揮発性半導体メモリは、携帯電話、デジタルカメラ、パーソナルデジタルアシスタント、モバイルコンピュータ、非モバイルコンピュータ及び他の装置の中に使用されている。電気的消去・プログラム可能型読取専用メモリ（ＥＥＰＲＯＭ）と、フラッシュメモリは、最も普及している不揮発性半導体メモリの１つである。ＥＥＰＲＯＭの一種であるフラッシュメモリを用いると、メモリアレイ全体のコンテンツ、あるいはメモリの一部のコンテンツは、従来のフル機能のＥＥＰＲＯＭと対照的に１つのステップで消去できる。
【０００３】
従来のＥＥＰＲＯＭとフラッシュメモリの何れもが、半導体基板内のチャネル領域上に配置され、そのチャネル領域から絶縁されたフローティングゲートを利用している。フローティングゲートは、ソース領域とドレイン領域の間に配置されている。制御ゲートは、フローティングゲート上に配置されており、そのフローティングゲートから絶縁されている。このように形成されたトランジスタの閾値電圧（ＶＴＨ）は、フローティングゲート上に保持される電荷量によって制御される。つまり、そのソースとドレインの間の導通を可能にするためにトランジスタをオンにする前に制御ゲートに印加しなければならない電圧の最小量は、そのフローティングゲート上の電荷レベルにより制御される。
【０００４】
いくつかのＥＥＰＲＯＭ及びフラッシュメモリ素子は２つの範囲の電荷を記憶するために使用されるフローティングゲートを有するため、記憶素子は２つの状態、例えば消去状態とプログラム状態の間でプログラミング／消去できる。各記憶素子が１ビットのデータを記憶できるため、このようなフラッシュメモリ素子はバイナリフラッシュメモリ素子と呼ばれることもある。
【０００５】
マルチ状態（マルチレベルとも呼ばれる）フラッシュメモリ素子は、複数の別個の許可／有効プログラム閾値電圧範囲を識別することによって実現される。各閾値電圧範囲は、メモリ素子内で符号化されるデータビットのセットの所定値に相当する。例えば、素子が４つの閾値電圧範囲に相当する４つの独立した電荷バンドの１つに格納できるときに、各記憶素子は２ビットのデータを記憶できる。
【０００６】
通常、プログラム動作中に制御ゲートに印加されるプログラム電圧ＶＰＧＭは、経時的に増大する一連のパルスとして印加される。１つの考えられる手法では、パルスの大きさは、各連続パルスとともに例えば０．２から０．４Ｖ等の所定のステップサイズずつ増加される。ＶＰＧＭはフラッシュメモリ素子の制御ゲートに印加できる。プログラムパルスとプログラムパルスの間の期間では、検証動作が実行される。すなわち、平行してプログラミングされている素子のグループの各素子のプログラミングレベルが、連続する２つのプログラミングパルスの間で読み出され、素子がプログラミングされる検証レベル以上であるか否かが判断される。マルチ状態フラッシュメモリ素子のアレイの場合、検証ステップが素子の各状態について実行され、素子がそのデータに関する検証レベルに到達したか否かが判断される場合もある。例えば、４つの状態でデータを記憶できるマルチ状態記憶素子は、３つの比較点について検証動作を実行する必要がある。
【０００７】
さらに、ＥＥＰＲＯＭ又はＮＡＮＤストリングのＮＡＮＤフラッシュメモリ素子等のフラッシュメモリ素子をプログラミングするときには、通常、ＶＰＧＭが制御ゲートに印加され、ビットラインが接地され、セル又は例えば記憶素子等のメモリ素子のチャネルからの電子をフローティングゲートの中に注入させる。電子がフローティングゲートに蓄積すると、フローティングゲートは負に帯電し、記憶素子の閾値電圧が上昇して、記憶素子がプログラム状態にあると見なされるようになる。
【０００８】
記憶素子のセットは、プログラミングできるようになる前に、消去動作及びソフトプログラミング動作を含む消去シーケンスで消去される。消去動作は、プログラミングされた記憶素子のフローティングゲートから電荷を引き出す高基板電圧を印加することを含む。その後、ソフトプログラミングで、記憶素子の閾値電圧が狭められ、消去状態に相当するレベルまで引き上げられる。ただし、消去シーケンスは多大な時間を要することがある。
【発明の概要】
【発明が解決しようとする課題】
【０００９】
本発明は、消去シーケンス中のメモリ素子の性能を改善するための技法を提供することによって上記の問題及び他の問題に対処する。
【課題を解決するための手段】
【００１０】
一実施形態では、不揮発性記憶装置を動作させる方法は、第１の検証条件が満たされるまで１つ又は複数の消去パルスを不揮発性記憶素子のセットに印加するステップと、印加された消去パルスのカウントを判定するステップを有する。方法は、検証動作を実行せずに、１つ又は複数のソフトプログラミングパルスを、前記カウントに基づく数ＮＳＰＧＭ−ＳＫＩＰだけ不揮発性記憶素子のセットに印加するステップをさらに有する。方法は、その後、第２の検証条件が満たされるまで、不揮発性記憶素子のセットに１つ又は複数の追加のソフトプログラミングパルスを印加するステップをさらに有し、その１つ又は複数の追加のソフトプログラミングパルスの各ソフトプログラミングパルスの後に検証動作が続く。
【００１１】
別の実施形態では、不揮発性記憶装置を動作させる方法は、消去検証条件が満たされるまで１つ又は複数の消去パルスを不揮発性記憶素子のセットに印加するステップと、印加された消去パルスのカウントを判定するステップと、ソフトプログラミング検証条件が満たされるまで１つ又は複数のソフトプログラミングパルスを不揮発性記憶素子のセットに印加するステップを含む消去シーケンスのソフトプログラミング動作を実行するステップを含む消去シーケンスの消去動作を実行することを含む。１つまたは複数のソフトプログラミングパルスの特徴は、カウントに基づいて設定される。
【００１２】
別の実施形態では、不揮発性記憶装置を動作させる方法は、第１の消去動作で、第１の検証条件が満たされるまで１つ又は複数の消去パルスを不揮発性記憶素子のセットに印加するステップを含む。方法は、第１の消去動作で印加された消去パルスのカウントを判定するステップを実行し、第１の消去動作後に、検証動作を実行せずに１つ又は複数の消去パルスを数ＮＥＲＡＳＥ−ＳＫＩＰだけ印加するステップを含む第２の消去動作を実行し（ここでは、ＮＥＲＡＳＥ−ＳＫＩＰがカウントに基づく）、その後、１つ又は複数の追加の消去パルスを印加するステップ実行する。その１つ又は複数の追加の消去パルスの各消去パルスの後に検証動作が続く。
【００１３】
別の実施形態では、不揮発性記憶装置は、不揮発性記憶素子のセット、及び１つ又は複数の制御回路を含む。１つ又は複数の制御回路は、第１の検証条件が満たされるまで１つ又は複数の消去パルスを不揮発性記憶素子のセットに印加し、印加された消去パルスのカウントを判定する。１つ又は複数の制御回路は、検証動作を実行せずに、１つ又は複数のソフトプログラミングパルスをカウントに基づく数ＮＳＰＧＭ−ＳＫＩＰだけ不揮発性記憶素子のセットにさらに印加する。その後、１つ又は複数の制御回路は、第２の検証条件が満たされるまで１つ又は複数の追加のソフトプログラミングパルスを不揮発性記憶素子のセットに印加する。１つ又は複数の追加のソフトプログラミングパルスの各ソフトプログラミングパルスの後に検証動作が続く。
【００１４】
本明細書に提供される方法を実行するための実行可能コードを有する、対応する方法、システム及びコンピュータ又はプロセッサで読み取り可能な記憶装置も提供され得る。
【図面の簡単な説明】
【００１５】
【図１ａ】ＮＡＮＤストリングの平面図。
【図１ｂ】図１ａのＮＡＮＤストリングの等価回路図。
【図１ｃ】ＮＡＮＤフラッシュ記憶素子のアレイのブロック図。
【図２】基板に形成されたＮＡＮＤストリングの断面図。
【図３】消去状態及びより高いデータ状態の閾値電圧分布を示す図。
【図４】プログラム−消去サイクルの数の関数として不揮発性記憶素子の挙動を示す図。
【図５】消去パルスの数に対するソフトプログラミング検証スキップの関係を示す図。
【図６】消去パルスの数に基づいて設定できる異なるソフトプログラミングの特徴を示す図。
【図７ａ】隣接する消去パルス間に奇数検証パルスと偶数検証パルスがある消去パルスのシリーズを示す図。
【図７ｂ】隣接する消去パルス間に単一の検証パルスのある消去パルスのシリーズを示す図。
【図８ａ】繰り返し使用済みのデバイスに適切となるように、検証動作がスキップされない場合、すなわち、隣接するソフトプログラミングパルス間に奇数検証パルスと偶数検証パルスがあるソフトプログラミングパルスのシリーズを示す図。
【図８ｂ】寿命初期のデバイスに適切となるように、最初の１０個のパルスの後に検証パルスが続かないソフトプログラミングパルスのシリーズを示す図。
【図８ｃ】使用期間が中程度のデバイスに適切となるように、最初の５つのパルスの後に検証パルスが続かないソフトプログラミングパルスのシリーズを示す図。
【図８ｄ】最初の５つのパルスの後に検証動作が続かず、かつ、高振幅、中振幅、又は低振幅を有するソフトプログラミングパルスのシリーズを示す図。
【図８ｅ】最初の５つのパルスの後に検証動作が続かず、かつ、考えられる３つのステップサイズを有するソフトプログラミングパルスのシーケンスを示す図。
【図８ｆ】考えられる３つのパルス幅を有するソフトプログラミングパルスのシーケンスを示す図。
【図９ａ】消去動作で使用される消去パルスの数に基づいてソフトプログラミング動作を調整することを含む、記憶素子を消去し、プログラミングする方法を示す図。
【図９ｂ】消去動作で使用される消去パルスの数をカウントすることと、続くソフトプログラミング動作でスキップするためにソフトプログラミング検証動作の数を設定することを含む、消去動作を実行する方法を示す図。
【図９ｃ】複数の検証動作をスキップすることによってソフトプログラミング動作を実行する方法を示す図。
【図１０ａ】消去動作でスキップするために検証動作の数を決定する方法を示す図。
【図１０ｂ】複数の検証動作をスキップすることを含む、消去動作を実行する方法を示す図。
【図１０ｃ】最初の３つのパルスの後に検証パルスが続かない、消去パルスのシリーズを示す図。
【図１１】ＮＡＮＤフラッシュ記憶素子のアレイのブロック図。
【図１２】単一の行／列デコーダと読み出し／書き込み回路を使用する不揮発性メモリシステムのブロック図。
【図１３】検出ブロックの一実施形態を示すブロック図。
【図１４】全ビットラインメモリアーキテクチャ用、及び奇数−偶数メモリアーキテクチャ用のブロックにメモリアレイを編成する例を示す図。
【図１５】不揮発性メモリをプログラミングするためのプロセスの一実施形態を説明するフローチャート。
【図１６ａ】検証動作が奇数ビットラインと偶数ビットラインの記憶素子に同時に実行される場合において、プログラミング中に不揮発性記憶素子の制御ゲートに印加されるパルス列の例を示す図。
【図１６ｂ】検証動作が奇数ビットラインと偶数ビットラインの記憶素子に別々に実行される場合において、プログラミング中に不揮発性記憶素子の制御ゲートに印加されるパルス列の例を示す図。
【発明を実施するための形態】
【００１６】
本発明は、消去シーケンス中のメモリ素子の性能を改善する技法を提供する。
【００１７】
本発明の実施に適したメモリシステムの一例は、ＮＡＮＤフラッシュメモリ構造を用いる。そのＮＡＮＤフラッシュメモリ構造は２つの選択ゲートの間に直列に並んでいる複数のトランジスタを含んでいる。直列のトランジスタと選択ゲートは、ＮＡＮＤストリングと呼ばれる。図１ａは、１つのＮＡＮＤストリングを示す平面図である。図１ｂはその等価回路である。図１ａ及び１ｂに示されるＮＡＮＤストリングは、直列に接続されており、第１の選択ゲート１２０と第２の選択ゲート１２２の間に挟まれている４つのトランジスタ１００、１０２、１０４、及び１０６を有する。選択ゲート１２０は、ビットライン１２６へのＮＡＮＤストリングの接続をゲートで制御する。選択ゲート１２２は、ソースライン１２８へのＮＡＮＤストリングの接続をゲートで制御する。選択ゲート１２０は、制御ゲート１２０ＣＧに適切な電圧を印加することによって制御される。選択ゲート１２２は、制御ゲート１２２ＣＧに適切な電圧を印加することによって制御される。トランジスタ１００、１０２、１０４及び１０６のそれぞれは制御ゲート及びフローティングゲートを有する。トランジスタ１００は、制御ゲート１００ＣＧ及びフローティングゲート１００ＦＧを有する。トランジスタ１０２は制御ゲート１０２ＣＧ及びフローティングゲート１０２ＦＧを有する。トランジスタ１０４は、制御ゲート１０４ＣＧ及びフローティングゲート１０４ＦＧを有する。トランジスタ１０６は、制御ゲート１０６ＣＧおよびフローティングゲート１０６ＦＧを有する。制御ゲート１００ＣＧは、ワードラインＷＬ３に接続されており（またはワードラインＷＬ３であり）、制御ゲート１０２ＣＧはワードラインＷＬ２に接続されており、制御ゲート１０４ＣＧはワードラインＷＬ１に接続されており、制御ゲート１０６ＣＧはワードラインＷＬ０に接続されている。一実施形態では、トランジスタ１００、１０２、１０４及び１０６は、それぞれ、メモリセルとも呼ばれる記憶素子である。他の実施形態では、記憶素子は、複数のトランジスタを有していることもある。あるいは、図１ａまたは図１ｂに示されているのとは異なることもある。選択ゲート１２０は、選択ラインＳＧＤに接続されている。選択ゲート１２２は、選択ラインＳＧＳに接続されている。
【００１８】
図１ｃは、３つのＮＡＮＤストリングを描く回路図である。ＮＡＮＤ構造を使用するフラッシュメモリシステムの典型的なアーキテクチャは、いくつかのＮＡＮＤストリングを含む。例えば、３つのＮＡＮＤストリング、３２０、３４０及び３６０が、さらに多くのＮＡＮＤストリングを有するメモリアレイ内に示される。各ＮＡＮＤストリングが、２つの選択ゲートと４つの記憶素子を有している。簡単にするために４つの記憶素子が描かれているが、最近のＮＡＮＤストリングは、例えば最高３２個又は６４個の記憶素子を有する場合がある。
【００１９】
例えば、ＮＡＮＤストリング３２０は選択ゲート３２２と３２７、及び、記憶素子３２３〜３２６を有し、ＮＡＮＤストリング３４０は選択ゲート３４２と３４７、及び、記憶素子３４３〜３４６を有し、ＮＡＮＤストリング３６０は選択ゲート３６２と３６７、及び、記憶素子３６３〜３６６を有する。各ＮＡＮＤストリングは、その選択ゲート（例えば、選択ゲート３２７、３４７、又は３６７）によってソースラインに接続されている。選択ラインＳＧＳは、ソース側選択ゲートを制御するために使用される。種々のＮＡＮＤストリング３２０、３４０、及び３６０は、選択ゲート３２２、３４２、３６２等の選択トランジスタによって、それぞれのビットライン３２１、３４１、及び３６１に接続されている。これらの選択トランジスタは、ドレイン選択ラインＳＧＤによって制御される。他の実施形態では、選択ラインは、必ずしもＮＡＮＤストリングの間で共通である必要はない。すなわち、異なるＮＡＮＤストリングには、異なる選択ラインを提供できる。ワードラインＷＬ３は、記憶素子３２３、３４３及び、３６３用の制御ゲートに接続されている。ワードラインＷＬ２は、記憶素子３２４、３４４、及び３６４用の制御ゲートに接続されている。ワードラインＷＬ１は、記憶素子３２５、３４５、及び３６５用の制御ゲートに接続されている。ワードラインＷＬ０は、記憶素子３２６、３４６及び３６６用の制御ゲートに接続されている。つまり、各ビットラインと各ＮＡＮＤストリングは記憶素子のアレイ又はセットの列を含む。ワードライン（ＷＬ３、ＷＬ２、ＷＬ１及びＷＬ０）は、アレイ又はセットの行を含む。各ワードラインは、行において各記憶素子の制御ゲートを接続している。また、制御ゲートはワードライン自体によって提供されてもよい。例えば、ワードラインＷＬ２は、記憶素子３２４、３４４、及び、３６４に制御ゲートを提供する。実際には、１つのワードラインに数千の記憶素子がある場合がある。
【００２０】
各記憶素子はデータを記憶できる。例えば、１ビットのデジタルデータを記憶するときは、記憶素子の考えられる閾値電圧（ＶＴＨ）の範囲は、ローカルデータ「１」と「０」を割り当てられる２つの範囲に分割される。ＮＡＮＤタイプのフラッシュメモリの一例では、前記ＶＴＨは、記憶素子が消去された後に負となり、論理「１」として定義される。プログラム動作後の前記ＶＴＨは正であり、論理「０」として定義される。ＶＴＨが負であり、読み出しが試行されると、記憶素子がオンして論理「１」が記憶されていることが示される。前記ＶＴＨが正であり、読み出し動作が試行されると、記憶素子はオンにならず、論理「０」が記憶されていることが示される。また、記憶素子は、例えば複数ビットのデジタルデータ等の複数のレベルの情報も記憶できる。このケースでは、ＶＴＨ値の範囲はデータレベルの数に分割される。例えば、４つのレベルの情報が記憶されている場合には、データ値「１１」、「１０」、「０１」、及び、「００」に割り当てられる４つのＶＴＨ範囲がある。ＮＡＮＤタイプのメモリの一例では、消去動作後の前記ＶＴＨは負となり、「１１」として定義される。正のＶＴＨ値は「１０」、「０１」及び「００」の状態のために使用される。記憶素子の中にプログラミングされたデータと、素子の閾値電圧範囲の間の特殊な関係は、記憶素子のために採用されるデータ符号化方式に依存する。
【００２１】
フラッシュ記憶素子をプログラミングするときには、プログラム電圧が記憶素子の制御ゲートに印加されるとともに、その記憶素子に接続されたビットラインが接地される。チャネルからの電子はフローティングゲートに注入される。電子がフローティングゲートに蓄積すると、フローティングゲートは負に帯電し、記憶素子のＶＴＨが上昇する。プログラミング中の記憶素子の制御ゲートにプログラム電圧を印加するために、そのプログラム電圧は適切なワードラインに印加される。前述したように、各ＮＡＮＤストリング中の１つの記憶素子は同じワードラインを共用する。例えば、図１ｃの記憶素子３２４をプログラミングするときには、プログラム電圧は、記憶素子３４４および３６４の制御ゲートにも印加される。
【００２２】
図２は、基板上に形成されたＮＡＮＤストリングの断面図を示す。図は簡略化されており、正確な縮尺ではない。ＮＡＮＤストリング４００は、ソース側選択ゲート４０６、ドレイン側選択ゲート４２４、及び８つの記憶素子４０８、４１０、４１２、４１４、４１６、４１８、４２０及び４２２を有しており、これらは基板４３８に形成されている。複数のソース／ドレイン領域（例えば、ソース／ドレイン領域４３０）が、各記憶素子、及び、選択ゲート４０６、４２４の両側に設けられる。１つの手法では、基板４３８は、ｐウェル領域４３２をｎウェル領域４３４内に含み、そしてｎウェル領域４３４はｐ型基板領域４３６内にあるトリプルウェル技術を利用する。ＮＡＮＤストリング及びその不揮発性記憶素子は、少なくとも部分的にｐウェル領域上に形成される。電位がＶＢＬのビットライン４２６に加えて、電位がＶＳＯＵＲＣＥのソース供給ライン４０４が設けられている。ボディーバイアス電圧等の電圧を、端子４０２を介してｐウェル領域４３２に、及び／又は端子４０３を介してｎウェル領域４３４に印加することができる。
【００２３】
プログラム動作中に、制御ゲート電圧ＶＰＧＭが選択ワードライン（この例では、記憶素子４１４に接続されているＷＬ３）に印加される。さらに、記憶素子の制御ゲートがワードラインの一部として設けられてもよいことに留意されたい。例えば、ＷＬ０、ＷＬ１、ＷＬ２、ＷＬ３、ＷＬ４、ＷＬ５、ＷＬ６及びＷＬ７は、それぞれ、記憶素子４０８、４１０、４１２、４１４、４１６、４１８、４２０及び４２２の制御ゲートを介して延設されていてもよい。１つの考えられるブースト方式では、パス電圧ＶＰＡＳＳが、ＮＡＮＤストリング４００に接続されている残りのワードラインに印加される。ＶＳＧＳとＶＳＧＤが、それぞれ選択ゲート４０６と４２４に印加される。消去動作中に、高い正の電圧パルスが基板４３６に印加され、記憶素子のフローティングゲートから電荷を引き出す。
【００２４】
図３は、消去状態と、より高いデータ状態の閾値電圧分布を示す。ｘ軸は閾値電圧を示し、ｙ軸は記憶素子の数を示す。この例では、４つのデータ状態、つまり消去（Ｅ）状態４４２、状態Ａ４４４、状態Ｂ４４６、及び状態Ｃ４４８がある。例えば８つ又は１６のデータ状態等の追加のデータ状態があるメモリ素子も、より一般的になると期待される。消去シーケンスは、消去動作とソフトプログラミング動作を含む。通常は記憶素子が消去状態４４２を越えて過剰消去されて、分布４４０が消去動作後に実現される。消去動作では、消去中の記憶素子の閾値電圧が消去検証レベルＶＥＲＡＳＥ−ＶＥＲＩＦＹ以下に遷移するまで、１つ又は複数の消去パルスが基板に印加される。この遷移は、左向きの矢印で表されている。いったん消去動作が完了すると、ソフトプログラミング動作が実行される。ソフトプログラミング動作では、複数の正の電圧パルスがワードライン等を介して記憶素子の制御ゲートに印加され、ソフトプログラミング（ＳＰＧＭ）検証レベルＶＳＰＧＭ−ＶＥＲＩＦＹに近い、及び、それより低い分布４４０内の記憶素子のいくつか又は全ての閾値電圧を消去状態４４２まで増加させる。例えば、記憶素子の特定の部分が、ＶＳＰＧＭ−ＶＥＲＩＦＹを超えるＶＴＨを有するようにソフトプログラミングされ、他の記憶素子が、ＶＳＰＧＭ−ＶＥＲＩＦＹに近いがそれを下回るＶＴＨのまま維持されてもよい。この遷移は、右向きの矢印で表されている。ＶＳＰＧＭ−ＶＥＲＩＦＹは、通常、ＶＥＲＡＳＥ−ＶＥＲＩＦＹを超えているか、それに等しい。ソフトプログラミング動作は、狭い消去状態分布４４２を生じさせるのに有効である。いったんソフトプログラミング動作が完了すると、それぞれ検証レベルＶＶＥＲＩＦＹ−Ａ、ＶＶＥＲＩＦＹ−Ｂ、及びＶＶＥＲＩＦＹ−Ｃを使用する状態Ａ、Ｂ及びＣ等のさらに高いデータ状態へのプログラミングを実行することができる。続く読み出し動作は、レベルＶＲＥＡＤ−Ａ、ＶＲＥＡＤ−Ｂ及びＶＲＥＡＤ−Ｃを使用できる。
【００２５】
ＶＥＲＡＳＥ−ＶＥＲＩＦＹとＶＳＰＧＭ−ＶＥＲＩＦＹは、同じである場合も、異なる場合もあることに留意されたい。また、不揮発性記憶素子のセットは、ＶＥＲＡＳＥ−ＶＥＲＩＦＹの第１の検証条件が満たされるときに、少なくとも部分的に消去状態４４２より小さい第１の閾値電圧分布４４０を有し、ＶＳＰＧＭ−ＶＥＲＩＦＹの第２の検証条件が満たされるときに、消去状態で第２のより狭い閾値電圧分布４４２を有する。
【００２６】
図４は、複数のプログラム消去サイクルの関数として、不揮発性記憶素子のセットの挙動を示す。メモリ素子が経時的にプログラミングサイクルと消去サイクルを経験するのに伴い、その性能は変化する。例えば、メモリ素子が、１０，０００サイクル以上に耐えると期待されることがある。通常は、消去動作を完了するために必要とされる消去パルス、つまり、ループの数は増加する（曲線４５２）。一方、ソフトプログラミング動作を完了するために必要とされるソフトプログラミングパルス、つまり、ループの数は減少する（曲線４５０）。ＶＥＲＡＳＥの値（例えば、図７ａ及び図７ｂを参照）とＶＳＰＧＭの値（例えば、図８ａから図８ｆを参照）は、通常、各デバイスにとって最適である所定値として、ダイソート中に調節される。通常、ＶＥＲＡＳＥは、デバイスが寿命初期であるときに記憶素子を１つの消去パルスだけで消去できるように十分に高く調節される。ＶＳＰＧＭは、ソフトプログラミングが、特定数のパルスを必要とするように十分に低く調節される。ＶＥＲＡＳＥ−ＶＥＲＩＦＹ及びＶＳＰＧＭ−ＶＥＲＩＦＹは、通常、所定値に設定される。ソフトプログラミングは、各ソフトプログラミングパルスの後に検証動作が実行されるときに長い時間を消費する。さらに、検証動作は、奇数番号のビットラインの記憶素子と偶数番号のビットラインの記憶素子を別々にすることがあり、検証時間をさらに長くすることがある。その結果として、消去シーケンスの性能は、特に、相対的に多数のソフトプログラムパルス及び関連する検証パルスの印加を受けている低範囲及び中範囲の数のサイクルにとって最適化されない。
【００２７】
図５は、ソフトプログラミング検証スキップと消去パルスの数との関係を示す。ｘ軸は、消去パルス数を示し、ｙ軸は検証スキップ数を示す。消去シーケンスによって、及び、特にソフトプログラミング動作によって費やされる時間を短縮するために、消去動作中に使用される消去パルス数に基づいて、複数の初期の検証動作をスキップできる。消去パルス数は、メモリ素子のサイクル数のインジケータとして働く。消去パルス数は、メモリ素子の実際の現在の挙動を反映しているため、サイクル数よりもデバイスの状態のより正確なインジケータである。同じ又は類似したサイクルカウントの異なるデバイスが異なる性能を有することがあるので、消去パルス数は、サイクルカウントに基づいた期待される挙動とは相関しないことがある。ただし、サイクルカウントを使用することも可能である。
【００２８】
特に、曲線５００は、測定された消去パルス数の関数として設定される検証スキップ数の関係を示す。階段波形５１０は、消去パルス数を、３つのグループＧ１、Ｇ２、及びＧ３等のように検証スキップの個別のレベルの数に変換する。一例として、Ｇ１は、たとえば１０回のスキップ等の検証スキップの第１の数と関連付けられる１つの消去パルスを表し、Ｇ２は５回のスキップ等の検証スキップの第２の数と関連付けられる２つから４つの消去パルスを表し、Ｇ３はゼロ回のスキップ等の検証スキップの第３の数と関連付けられる５つ又は６つの消去パルスを表してよい。グループＧ１は、多数の検証スキップが適切である０〜ｃ１サイクルの範囲を有する未使用の、又は、寿命初期のデバイスに対応する。グループＧ２は、中程度の数の検証スキップが適切であるｃ１〜ｃ２サイクルの範囲を有する中範囲又は寿命中期のデバイスに対応する。グループＧ３は、ゼロ又は少数の検証スキップが適切であるｃ２〜ｃ３サイクル、又は、ｃ２サイクルを超える範囲を有する繰り返し使用後の寿命終期のデバイスに対応する。変数ｃ１、２、及びｃ３は、デバイスに特定である数を表す。
【００２９】
検証スキップの数を消去パルスの各異なる数に関連付けることも可能である。メモリ素子は、消去パルスの数を追跡調査し、検証スキップの数を消去パルスの数と関連付けるための表又は式を維持する能力を含むように改良されてもよい。ルックアップ関数を、消去パルスの数に相当する検証スキップの数を検索するために使用できる。さらに、（ａ）検証スキップ数の（ｂ）消去パルス数に対する異なる関係が、例えば、複数レベルの記憶素子を含むデバイス内の異なるワードライン、ブロック、アレイ、及び平面等のメモリ素子内の不揮発性記憶素子の異なるセットについて確立されていてもよい。これは、異なるセットが、異なる数のサイクルを経験している場合がある、及び／又は、同じ数のサイクルを経験していても異なる挙動を有することがあるので、適切である。または、共通の検証スキップと消去パルスの関係が、メモリ素子全体について確立されていてもよい。適切なデータ構造及び制御論理は、例えば、メモリチップの外部にある、又は、チップ上にあるコントローラメモリ内で実現できる。
【００３０】
検証スキップ数は、時間節約が最大となるように可能な限り多いほうがよいが、検証スキップが実行されているときにメモリ素子が検証レベルに到達しない程度に少ない必要がある。検証スキップの最適数は、例えば、消去パルス数を、ソフトプログラミング検証レベルを越えて記憶素子を遷移させる第１のソフトプログラミングパルスの識別と相関させ、その特定されたパルス以下のパルスのマージンを提供することによって、実験から決定できる。例えば、寿命初期のデバイスでは平均して１２番目のソフトプログラミングパルスによって記憶素子がソフトプログラミング検証レベルを越えて遷移する場合には、検証スキップ数を１０（１２から２というマージンを差し引いた数）に設定してもよい。記憶素子をソフトプログラミング検証レベルを越えて遷移させ、検証スキップの数を所望される信頼度で設定させるソフトプログラミングパルス数の標準偏差等の統計上の測定基準を取得するために、多数のメモリ素子をテストしてもよい。この手順は、検証スキップの最適数を設定するために、異なる数の消去パルス及びサイクルについて繰り返すことができる。
【００３１】
図６は、消去パルスの数に基づいて設定できる異なるソフトプログラミング特徴を示す。消去パルスの数に基づく検証スキップの数を設定することに加えて、又は、代替として、消去パルス数に基づいて、ソフトプログラミング動作の１つ又は複数の特徴を設定できる。これらの特徴は、電圧ＶＳＰＧＭ等の開始振幅、ステップサイズ、パルス期間、パルスの最大許容数、及び、最大パルス振幅を含む。開始振幅に関しては、図８ｄを参照のこと。ステップサイズに関しては、図８ｅを参照のこと。パルス期間に関しては、図８ｆを参照のこと。パルスの最大許容数に関して、１つの考えられる実施例では、寿命終期のデバイスはより少ないソフトプログラミングパルスでソフトプログラミングを完了できなければならないので、寿命初期のデバイスと比べて寿命終期のデバイスでは最大許容数が低くなる。最大パルス振幅に関して、１つの考えられる実施例では、寿命終期のデバイスはより低い最大振幅プログラミングパルスでソフトプログラミングを完了できなければならないので、寿命初期のデバイスと比べて寿命終期のデバイスでは最大パルス振幅が低くなる。パルス振幅は、プログラミングパルスの電気信号を表す。一般に、プログラミングでは、記憶素子の状態を変更するために、電圧又は電流等の信号が記憶素子に印加される。
【００３２】
図７ａは、隣接する消去パルス間に奇数検証パルス及び偶数検証パルスがある、消去パルスのシリーズ７００を示す。ＶＥＲＡＳＥ１からＶＥＲＡＳＥ８は、１つの実施例において、消去動作中にメモリ素子の基板に印加される消去パルスを表す。消去パルスの振幅は、例えば、固定ステップサイズ又は変化するステップサイズに従って増加してもよいし、消去パルスが固定振幅を有していてもよい。隣接する消去パルスの間では、奇数番号及び偶数番号のビットラインの記憶素子に対する別々の消去検証パルスが記憶素子の制御ゲートに印加される。消去検証パルスはＶＥＲＡＳＥ−ＶＥＲＩＦＹの振幅を有する。パルス７１０は、奇数番号ビットラインの記憶素子のための消去検証パルスの例であり、パルス７１２は、偶数番号ビットラインの記憶素子のための消去検証パルスの例である。
【００３３】
検証動作は、消去動作中であろうと、ソフトプログラミング動作中であろうと、又は、正規のプログラミング動作中であろうと、電圧又は電流が記憶素子に印加されるときにその記憶素子が導電性であるかどうかを判断することを含むことがある。この判定の結果に応じて、１つ又は複数の追加のパルスが印加される。例えば、消去検証パルス７１０が印加されると、奇数番号のビットラインの記憶素子が導電性であるかどうかに関して判定が行われる。記憶素子が導電性である場合には、それらの閾値電圧が十分低いことを意味し、消去動作が完了される。同様に、消去検証パルス７１２が印加されると、偶数番号のビットラインの記憶素子が導電性であるかどうかに関しての判定が行われる。消去パルスの印加とこれに関連する検証動作が、消去ループである。
【００３４】
図７ｂは、隣接する消去パルス間に単一の検証パルスがある消去パルスのシリーズ７１３を示す。この場合、奇数番号のビットライン及び偶数番号のビットラインの記憶素子が、全ビットライン消去検証動作で、同時に検証される。例示の消去検証パルス７１４が印加されると、奇数番号のビットライン及び偶数番号のビットラインの記憶素子が導電性であるかどうかが判定される。
【００３５】
図８ａは、隣接するソフトプログラミングパルス間に奇数検証パルス及び偶数検証パルスがあるソフトプログラミングパルスのシリーズを示しており、ここでは、寿命終期のデバイスにとって適切なように、検証動作がスキップされていない。１５個のソフトプログラミングパルスが、一例として使用されている。用語「ソフト」プログラミングは、データの状態を変更する「正規の」プログラミング又は「ハード」プログラミングとは対照的に、プログラミングが記憶素子のデータ状態を変更しないことを示す。ＶＳＰＧＭ１からＶＳＰＧＭ１５は、一つの実施例において、検証動作中に、記憶素子の制御ゲートに印加されるソフトプログラミングパルスを表す。他のケースでは、電流を印加できる。ソフトプログラミングパルスは、例えばステップサイズに従って振幅が増加することがあり、また、固定振幅を有することもある。隣接するソフトプログラミングパルスの間で、奇数番号ビットラインと偶数番号ビットラインの記憶素子のための別々の検証パルスが記憶素子に印加される。消去検証パルスは、ＶＳＰＧＭ  ＶＥＲＩＦＹという振幅を有する。パルス８１０は、奇数番号のビットラインの記憶素子のためのソフトプログラミング検証パルスの例であり、パルス８１２は、偶数番号ビットラインの記憶素子のためのソフトプログラミング検証パルスの例である。別のオプションとして、奇数番号ビットライン及び偶数番号ビットラインが同時に検証されるように、隣接するソフトプログラミングパルス間でただ１つの検証パルスを有してもよい。
【００３６】
図８ａでは、検証スキップはない。すなわち、検証動作は、最初のソフトプログラミングパルスの後、及び、後の各ソフトプログラミングパルスの後に実行される。このシナリオは、相対的に多数のプログラム−消去サイクルを経験している寿命終期のデバイスにとって適切である。多数のサイクルを経験したメモリ素子にとって検証スキップがないことが適切であることを示す図５を参照されたい。
【００３７】
図８ｂは、寿命初期のデバイスにとって適切であるように、最初の１０個のパルスの後に検証パルスが続かないソフトプログラミングパルスのシリーズを示す。ここでは１０個の検証スキップが行われる。１１番目のソフトプログラミングパルス（ＶＳＰＧＭ１１）及びその後の各プログラミングパルスの後には検証動作が続く。最大数の検証スキップが寿命初期のメモリ素子に適切であることを示す図５を参照されたい。多数の検証動作をスキップすると、電力消費の削減に加えて、ソフトプログラミング時間が大幅に短縮され、よりよい性能につながる。
【００３８】
図８ｃは、寿命中期のデバイスにとって適切であるように、最初の５つのパルスの後に検証パルスが続かないソフトプログラミングパルスのシリーズを示す。ここでは、最初の５つのソフトプログラミングパルスの後には検証動作は続かないため、５つの検証スキップが行われる。６番目のソフトプログラミングパルス（ＶＳＰＧＭ６）及びその後の各プログラミングパルスの後には検証動作が続く。検証スキップの中程度の数が、中程度の数のサイクルを経験したメモリ素子にとって適切であることを示す図５を参照されたい。
【００３９】
図８ｄは、高振幅、中振幅、又は低振幅を有するソフトプログラミングパルスのシリーズ８６０を示しており、ここでは、最初の５つのパルスの後に検証パルスが続かない。図６に関連して言及されたように、ソフトプログラミング動作の少なくとも１つの特徴を、消去動作を完了するために必要とされる消去パルスの数に基づいて設定できる。この例では、特徴はソフトプログラミングパルスの振幅である。第１のソフトプログラミングパルスの振幅は、残りのパルスの振幅を決定するステップサイズとともに指定できる。サイクル数が増加するに従って、メモリ素子はプログラミングするのがより容易になる。したがって、寿命初期のデバイスと比較して、ソフトプログラミングを完了するために、より低い振幅パルスを使用できる。また、より低い振幅パルスを使用することによって、過剰プログラミングを回避又は削減できる。たとえば、高振幅、中振幅及び低振幅を、それぞれ寿命初期のデバイス、寿命中期のデバイス、及び、寿命終期のデバイスに使用できる。ソフトプログラムパルスの振幅を削減すると、電力消費を削減できる。また、ソフトプログラムパルス振幅を増加すると、ソフトプログラミングを高速化できる。さらに、一例として、複数の検証スキップを実施してもよい。一例として、高振幅、中振幅、及び低振幅は、それぞれ１０Ｖ、７．５Ｖ、及び５Ｖであってよい。
【００４０】
図８ｅは、考えられる３つのステップサイズのソフトプログラミングパルスのシリーズ８８０を示しており、ここでは、最初の５つのパルスの後に検証パルスが続かない。△Ｖ１、△Ｖ２、及び△Ｖ３は、それぞれ第１のステップサイズ、第２のステップサイズ、及び第３のステップサイズを示す。ソフトプログラミングのための典型的なステップサイズは、消去動作の場合、約０．２Ｖ又は０．５Ｖである。この例では、消去パルス数に基づいて設定されるソフトプログラミングの特徴は、ソフトプログラミングパルスのステップサイズである。サイクル数が増加するのに従ってメモリ素子はプログラムされ易くなるので、ソフトプログラミングを完了するために寿命初期のデバイスよりも小さいステップサイズを使用できる。例えば、高ステップサイズ、中ステップサイズ、及び、低ステップサイズを、それぞれ、寿命初期のデバイス、寿命中期のデバイス、及び、寿命終期のデバイスに使用できる。ステップサイズを削減すると、プログラミング精度を改善し、電力消費を削減することができる。一方、ステップサイズを増加すると、ソフトプログラミングを高速化できる。さらに、検証のスキップ数も、一例として実施されている。
【００４１】
図８ｆは、考えられる３つのパルス幅のソフトプログラミングパルスのシリーズ８９０を示している。詳細を示すために、３つのパルスだけが示されている。時間期間ｔ１、ｔ２、及びｔ３は、それぞれ第１の、第２の、及び第３のソフトプログラミングパルス幅又は期間を示す。この例では、消去パルス数に基づいて設定されるソフトプログラミングの特徴は、ソフトプログラミングパルスの幅である。サイクル数が増加するにつれてメモリ素子はプログラムされ易くなるので、ソフトプログラミングを完了するために寿命初期のデバイスよりも小さいパルス幅を使用できる。例えば、長パルス、中パルス、及び短パルスを、それぞれ、寿命初期のデバイス、寿命中期のデバイス、及び、寿命終期のデバイスに使用できる。パルス幅を削減すると、電力消費を削減できる。一方、パルス幅を増加すると、ソフトプログラミングを高速化できる。
【００４２】
図９ａは、消去動作で使用される消去パルスの数に基づいてソフトプログラミング動作を調整する記憶素子の消去、及び、プログラミング方法を示している。ステップ９００では、消去動作を開始する。ステップ９０１では、消去動作で使用される消去パルスの数ＮＥＲＡＳＥを特定する。これは、消去パルスのカウントに基づいた測定基準の一例である。このステップは、各消去シーケンスに対して別々に実行可能であり、又は、１つ又は複数の以前の消去シーケンスの履歴データを、例えば過去数回の消去シーケンスにおける消去パルス数の移動平均を得るため等に使用できる。ステップ９０１は、例えばＮＥＲＡＳＥに基づいて、複数のグループＧ１、Ｇ２及びＧ３の内の１つに、メモリ素子、または、メモリ素子の記憶素子のセットを分類するステップをオプションとして有している。例えば、図５を参照すると、少数の消去パルスが寿命初期のデバイス（グループＧ１）と相関し、中程度の消去パルスが寿命中期のデバイス（グループＧ２）と相関し、多数の消去パルスが寿命終期のデバイス（グループＧ３）と相関する。ステップ９０３では、グループに基づいて（又はＮＥＲＡＳＥに直接的に基づいて）、検証動作を実行せずに印加するソフトプログラミングパルスＮＳＰＧＭ−ＳＫＩＰの数が設定される。ステップ９０４では、グループに基づいて（又はＮＥＲＡＳＥに直接的に基づいて）、ソフトプログラミングの特徴が設定される。ステップ９０３と９０４の１方又は両方が実行されてよい。ステップ９００、９０５及び９０６の詳細は、図９ｂ、図９ｃ、及び図１５に関連してそれぞれ説明される。
【００４３】
図９ｂは、消去動作で使用される消去パルスの数をカウントするステップと、後のソフトプログラミング動作でスキップするソフトプログラミング検証動作の数を設定するステップを有する消去動作を実行する方法を示す。消去動作は、ステップ９１０で開始する。消去パルスの数（ＮＥＲＡＳＥ）のカウンタは、ステップ９１２で１に設定される。決定ステップ９１６でＮＥＲＡＳＥが消去パルスの最大許容数を超えている場合には、ステップ９１８でフェールが宣言される。決定ステップ９１６でｎｏと判定されると、ステップ９２０で消去パルスが印加され、ステップ９２２で検証動作が実行される。１つの考えられる実施例では、消去検証動作で図３のＶＶＥＲＩＦＹ−ＥＲＡＳＥが使用されることを留意されたい。決定ステップ９２４では、例えば記憶素子の全て又はほぼ全てが検証レベルＶＥＲＡＳＥ  ＶＥＲＩＦＹに達した場合等のように検証が成功すると、ステップ９２６でＮＥＲＡＳＥの現在の値が記憶され、ステップ９２８で消去動作が終了する。決定ステップ９２４でｙｅｓであることは、第１の検証条件が満たされていることを意味する。決定ステップ９２４で、検証が成功しない場合は、ステップ９１４でＮＥＲＡＳＥが増分され、決定ステップ９１６で消去パルスの最大許容数を超えない限り、追加の消去パルスがステップ９２０で印加される。
【００４４】
図９ｃは、いくつかの検証動作をスキップすることによってソフトプログラミング動作を実行する方法を示す。ステップ９３０で開始するソフトプログラミング動作は、消去動作の完了に応じて、図９ｂの消去動作の直後に行うことができる。ステップ９３２では、ＮＥＲＡＳＥに基づいてスキップするソフトプログラミングパルスの数（ＮＳＰＧＭ−ＳＫＩＰ）を決定する。代わりに、このステップが消去動作と関連して実行されてもよく、この場合には、ＮＳＰＧＭ−ＳＫＩＰが、メモリに記憶され、ソフトプログラミング動作で使用するために取り出されることに留意されたい。実際には、消去動作及びその後のソフトプログラミング動作は消去シーケンスの一部として実行され、したがって、これらは共通プロセスの一部である。オプションのステップ９３４では、ＮＥＲＡＳＥに基づいてソフトプログラミングの１つ又は複数の特徴を設定する。このステップも、代わりに、消去動作と関連して実行されてもよく、この場合には、１つ又は複数の特徴が、メモリに記憶され、ソフトプログラミング動作で使用するために取り出される。
【００４５】
ソフトプログラミングパルス数ＮＳＰＧＭのカウンタは、ステップ９３６で１に設定される。決定ステップ９４０でＮＳＰＧＭがソフトプログラミングパルスの最大許容数を超える場合には、ステップ９４２でフェールが宣言される。決定ステップ９４０でｎｏと判定された場合には、ステップ９４４でソフトプログラミングパルスが印加される。決定ステップ９４６で、ＮＳＰＧＭが検証スキップ数ＮＳＰＧＭ−ＳＫＩＰを超える場合には、ステップ９４８で検証動作が実行される。この場合、ＮＳＰＧＭソフトプログラミングパルスは、以前に検証動作を実行せずに印加されている。ソフトプログラミング検証動作では、図３のＶＶＥＲＩＦＹ−ＳＰＧＭが使用されることに留意されたい。決定ステップ９４６でＮＳＰＧＭが検証スキップ数ＮＳＰＧＭ−ＳＫＩＰを超えていない場合には、検証動作は実行されない。これは、プロセスがまだ検証スキップ段階にあることを意味する。検証動作を実行しないことによって、ソフトプログラミング動作をより高速に実行できる。決定ステップ９４６でＮＯと判定された場合には、ステップ９３８でＮＳＰＧＭが増分され、決定ステップ９４０でソフトプログラミングパルスの最大許容数を超えない限り、ステップ９４４で追加のソフトプログラミングパルスが印加される。
【００４６】
決定ステップ９５０で、例えば、記憶素子の全て、又は、ほとんど全てが検証レベルＶＳＰＧＭ  ＶＥＲＩＦＹを越えている場合等のように検証が成功すると、ソフトプログラミング動作はステップ９５２で終了する。その後、正規のプログラミング動作またはハードプログラミング動作で、記憶素子が、例えばＡ、ＢまたはＣ等のより高いデータ状態にプログラミングされる。決定ステップ９５０でＹＥＳであることは、第２の検証状態が満たされていることを意味する。決定ステップ９５０で検証が成功しないと、ＮＳＰＧＭはステップ９３８で増分され、決定ステップ９４０でソフトプログラミングパルスの最大許容数を超えない限り、ステップ９４４で追加のソフトプログラミングパルスが印加される。
【００４７】
図１０ａは、消去動作においてスキップする検証動作の数を決定する方法を示す。事前の消去動作を完了するために必要とされる消去パルスの数によって決定されるメモリ素子の検出された挙動の関数として、必要ではないときにソフトプログラミング検証動作をスキップすることによってソフトプログラミング時間を短縮できることは前述された。同様に、必要ではないときに消去検証動作を実行しないことによって消去動作時間を短縮することができる。これは、単独で、又は、デバイスの現在の挙動に基づいてソフトプログラミング時間を短縮する、及び／又は、ソフトプログラミングの特徴を調整する前述の技法とともに実行できる。例示のプロセスにおいて、ステップ１０００では、複数の消去動作で使用されたパルスの数が特定される。ステップ１００２では、各動作で使用された消去パルスの平均数ＮＥＲＡＳＥ−ＡＶＧが計算される。ステップ１００４では、ＮＥＲＡＳＥ−ＳＫＩＰ＝ＮＥＲＡＳＥ−ＡＶＧ−ＮＭＡＲＧＩＮによって、次の消去動作で検証動作を実行せずに印加する消去パルスの数が設定される。例えば、ＮＭＡＲＧＩＮは、１つ又は２つのパルスである場合がある。一例として、寿命終期のデバイスでは、平均して４消去パルスが必要とされることがあり、この場合、ＮＥＲＡＳＥ−ＳＫＩＰ＝４−１＝３によってＮＭＡＲＧＩＮは１パルスとして設定される。また、ＮＥＲＡＳＥ−ＳＫＩＰを、以前の複数の消去動作の平均、中間、又は他の測定基準ではなく、１つ前の消去動作に基づいて設定できることにも留意されたい。
【００４８】
将来のデバイスは、例えば最高８個から１５個の消去パルス等、多数の消去パルスを使用することが予想されるので、消去検証動作をスキップすることにより、時間を顕著に節約することができる。電力消費も削減される。
【００４９】
図１０ｂは、複数の検証動作をスキップすることによって消去動作を実行する方法を示す。このプロセスは、図１０ａのプロセスと併せて実行され得る。消去動作は、ステップ１０１０で開始する。ステップ１０１２で、消去パルス数（ＮＥＲＡＳＥ）のカウンタが１に設定される。決定ステップ１０１６でＮＥＲＡＳＥが消去パルスの最大許容数を超える場合には、ステップ１０１８でフェールが宣言される。決定ステップ１０１６でＮＯと判定された場合には、ステップ１０２０で消去パルスが印加される。決定ステップ１０２２でＮＥＲＡＳＥが消去検証スキップ数ＮＥＲＡＳＥ−ＳＫＩＰを超える場合には、ステップ１０２４で検証動作が実行される。この場合、以前にＮＥＲＡＳＥ消去パルスは検証動作を実行せずに印加されている。消去検証動作が、図３のＶＶＥＲＩＦＹ−ＥＲＡＳＥを使用することに留意されたい。決定ステップ１０２２でＮＥＲＡＳＥがＮＥＲＡＳＥ−ＳＫＩＰを超えない場合には、検証動作は実行されない。これは、プロセスが、依然として検証スキップ段階にあることを意味する。検証動作を実行しないことによって、消去動作をより高速に実行できる。
【００５０】
決定ステップ１０２２でＮＯと判定された場合には、ステップ１０１４でＮＥＲＡＳＥが増分され、決定ステップ１０１６で消去パルスの最大許容数を超えない限り、ステップ１０２０で追加の消去パルスが印加される。決定ステップ１０２６で検証が成功すると、消去動作はステップ１０２８で終了する。決定ステップ１０２６で検証が成功しないと、ステップ１０１４でＮＥＲＡＳＥが増分され、決定ステップ１０１６で消去パルスの最大許容数を超えない限り、ステップ１０２０で追加の消去パルスが印加される。
【００５１】
使用される消去パルス数及びソフトプログラミング検証スキップの適切な数を決定するためだけではなく、消去動作時間を短縮するためにも図９ｂ及び図１０ｂのプロセスを結合できることに留意されたい。
【００５２】
前述された技法は、１つの考えられる実施例では、後に詳述されるように、ＮＡＮＤメモリ素子と関連して使用できる。
【００５３】
図１０ｃは、最初の３つのパルスの後に検証パルスが続かない消去パルス１０３０のシリーズを示す。例えば、第１の消去検証パルス１０３２は、シリーズ１０３０の中の第４の消去パルスＶＥＲＡＳＥ４の後で発生し、その後の各消去パルスの後で発生する。
【００５４】
図１１は、図１ａ及び図１ｂに図示されるようなＮＡＮＤ記憶素子のアレイ１１００の例を示す。各列に沿って、ビットライン１１０６が、ＮＡＮＤストリング１１５０のドレイン選択ゲートのドレイン端子１１２６に接続されている。ＮＡＮＤストリングの各行に沿って、ソースライン１１０４が、ＮＡＮＤストリングのソース選択ゲートの全てのソース端子１１２８に接続されている。
【００５５】
記憶素子のアレイは、記憶素子の多数のブロックに分割される。フラッシュＥＥＰＲＯＭシステムでは一般的なように、ブロックは消去の単位である。つまり、各ブロックは、共に消去される最小数の記憶素子を有する。各ブロックは、一般に複数のページに分割される。ページは、プログラミングの最小単位である。１ページまたは複数ページのデータは、通常、記憶素子の１行に記憶される。例えば、１行は、通常、いくつかのインタリーブされたページを含む、あるいは、１行は１ページを構成してよい。ページの全ての記憶素子は、一度に読み出され、または、プログラミングされる。さらに、ページは、１つまたは複数のセクタからユーザデータを記憶できる。セクタは、ユーザデータの便利な単位としてホストによって使用される論理概念である。つまり、セクタは、通常、コントローラに限定されるオーバヘッドデータは含まない。オーバヘッドデータは、セクタのユーザデータから計算されたエラー訂正コード（ＥＣＣ）を含むことができる。（後述される）コントローラの一部は、データがアレイにプログラミングされるときにＥＣＣを計算し、データがアレイから読み出されるときにそれをチェックする。また、ＥＣＣ及び／又は他のオーバヘッドデータは、それらが関連するユーザデータ以外の異なるページに記憶されてもよいし、もしくは、異なるブロックに記憶されてもよい。
【００５６】
ユーザデータのセクタは一般に５１２バイトであり、磁気ディスクドライブ内のセクタのサイズに対応する。オーバヘッドデータは一般に、追加の１６〜２０バイトである。多数のページがブロックを構成し、それは８ページから、例えば最大３２、６４，１２８またはそれ以上のページのいずれであってもよい。いくつかの実施形態では、ＮＡＮＤストリングの列はブロックを含む。
【００５７】
一実施形態では、メモリ記憶素子は、十分な期間に亘ってｐ−ウェルが消去電圧（例えば１４〜２２Ｖ）に上昇され、ソースラインとビットラインがフローティングしている間に、選択されたブロックのワードラインを接地させることによって消去される。容量結合のために、未選択ワードライン、ビットライン、選択ライン、及び、ｃ−ソースも消去電圧のかなりの部分まで引き上げられる。従って、強力な電界が選択された記憶素子のトンネル酸化物層に印加され、ファウラーノルドハイムトンネルメカニズムによってフローティングゲートの電子が基板側に放出されるにつれて選択された記憶素子のデータが消去される。電子がフローティングゲートからｐ−ウェル領域に移されるのにしたがって、選択された記憶素子の閾値電圧は引き下げられる。消去はメモリアレイ全体、別々のブロック、又は、他の記憶素子の単位で実行できる。
【００５８】
図１２は、単一の行／列復号部及び読み出し／書き込み回路を使用する不揮発性メモリシステムのブロック図である。図は、本発明の一実施形態に従って記憶素子のページを同時に読み出し、プログラミングするための読み出し／書き込み回路を有するメモリ素子１２９６を示す。メモリ装置１２９６は、１つ以上のメモリダイ１２９８を有する。メモリダイ１２９８は、２次元のアレイの記憶素子１１００、制御回路１２１０、及び、読み出し／書き込み回路１２６５を有する。いくつかの実施形態では、記憶素子のアレイは３次元であり得る。メモリアレイ１１００は行復号部１２３０を介してワードラインによって、及び、列復号部１２６０を介してビットラインによってアドレスできる。読み出し／書き込み回路１２６５は複数の検出ブロック１２００を有しており、１ページの記憶素子を並列に読み出し又はプログラムすることができる。一般に、制御部１２５０は、１つ以上のメモリダイ１２９８のように同じメモリ装置１２９６（例えば、取り外し可能なストレージカード）内に含まれる。コマンド及びデータは、ライン１２２０を介してホストと制御部１２５０の間、及び、ライン１２１８を介して制御部と１つ以上のメモリダイ１２９８の間で送られる。
【００５９】
制御回路１２１０は、読み出し／書き込み回路１２６５と協調して、メモリアレイ１１００上でメモリ動作を実行する。制御回路１２１０は、状態マシン１２１２、オンチップアドレスデコーダ１２１４、及び電力制御モジュール１２１６を含む。状態マシン１２１２は、プリチャージを制御することを含むメモリ動作のチップレベル制御を提供する。オンチップアドレスデコーダ１２１４は、ホストまたはメモリコントローラによって使用されるとともに、デコーダ１２３０と１２６０によって使用されるハードウェアアドレスの間にアドレスインタフェースを提供する。電力制御モジュール１２１６は、メモリ動作中、ワードライン及びビットラインに供給される電力及び電圧を制御する。
【００６０】
いくつかの実装形態では、図１２の構成要素のいくつかを結合することができる。多様な設計では、記憶素子アレイ１１００以外の構成要素の１つまたは複数を（単独でまたは組み合わせて）１つの管理回路と見なすことができる。例えば、１つ以上の管理回路は、制御回路１２１０、状態マシン１２１２、復号部１２１４／１２６０、電力制御１２１６、検出ブロック１２００、読み出し／書き込み回路１２６５、制御部１２５０等の１つ、またはそれらの組み合わせを有してよい。
【００６１】
言及されたように、適切なデータ構造及び制御論理は、例えばメモリチップの外部にある、又はチップ上にあるコントローラメモリで実現できる。
【００６２】
別の手法では、二重行／列デコーダ及び読み出し／書き込み回路が使用される。多様な周辺回路によるメモリアレイ１１００へのアクセスは、アレイの対向する側で対称的に実現され、したがって、各側でのアクセスライン及び回路の密度が半減される。したがって、行デコーダは２つの行デコーダに分割され、列デコーダは２つの列デコーダに分割されている。同様に、読み出し／書き込み回路は、底部からビットラインに接続する読み出し／書き込み回路と、アレイ１１００の上部からビットラインに接続する読み出し／書き込み回路に分割されている。このようにして、読み出し／書き込みモジュールの密度は、本質的に２分の１、削減される。
【００６３】
図１３は、検出ブロックの一実施形態を示すブロック図である。個々の検出ブロック１２００は、検出モジュール１２８０と呼ばれるコア部と共通部１２９０とに分割される。一実施形態では、各ビットラインの別個の検出モジュール１２８０と、複数の検出モジュール１２８０の集合の１つの共通部１２９０があってもよい。一例では、検出ブロックは、１つの共通部１２９０と８つの検出モジュール１２８０を有することができる。グループ内の各検出モジュールは、データバス１２７２を介して関連する共通部と通信できる。
【００６４】
検出モジュール１２８０は検出回路１２７０を有しており、検出回路１２７０は接続されたビットライン内の伝導電流が所定の閾値レベルより高いか低いかを判定する。検出モジュール１２８０はさらにビットラインラッチ１２８２を有しており、ビットラインラッチ１２８２は接続されたビットライン上の電圧条件を設定するために用いられる。例えば、ビットラインラッチ１２８２内にラッチされる所定の状態によって、接続されたビットラインはプログラム禁止を指定する状態（例えば、１．５〜３Ｖ）とされる。
【００６５】
共通部１２９０は、プロセッサ１２９２、１セットのデータラッチ１２９４、及び１セットのデータラッチ１２９４とデータバス１２２０の間を接続するＩ／Ｏインタフェース１２９６を有する。プロセッサ１２９２は計算を実行する。例えば、その機能の１つは、検出された記憶素子内に記憶されているデータを判定し、判定したデータを１セットのデータラッチ内に記憶することである。１セットのデータラッチ１２９４は、読み出し動作中に、プロセッサ１２９２によって判定されたデータビットを記憶するために用いられる。それは、プログラム動作中に、データバス１２２０から取り込まれたデータビットを記憶するためにも用いられる。取り込まれたデータビットは、メモリ内にプログラムする予定の書き込みデータを表す。Ｉ／Ｏインタフェース１２９６は、データラッチ１２９４とデータバス１２２０の間のインタフェースを提供する。
【００６６】
読み出し又は検出中には、システムの動作は状態マシン１２１２の制御下にあり、状態マシン１２１２はアドレスされた記憶素子への異なる制御ゲート電圧の供給を制御する。メモリによってサポートされた様々なメモリ状態に対応する様々な既定制御ゲート電圧のステップを進む際に、検出モジュール１２８０はこれらの電圧の１つにおいてトリップし、バス１２７２を介して検出モジュール１２８０からプロセッサ１２９２に出力が提供される。その時点で、プロセッサ１２９２は、検出モジュールのトリッピングの発生と、状態マシンから入力ライン１２９３を介して印加された制御ゲート電圧についての情報を考慮することによって得られたメモリ状態を決定する。それから、メモリ状態に対するバイナリ符号化を計算し、得られたデータビットをデータラッチ１２９４に記憶する。コア部の別の実施形態では、ビットラインラッチ１２８２は、検出モジュール１２８０の出力をラッチするラッチ、及び、上記のようなビットラインラッチの両方として、２つの役割を果たす。
【００６７】
当然のことながら、いくつかの実装形態では複数のプロセッサ１２９２を有することができる。一実施形態では、各プロセッサ１２９２は出力ライン（図示せず）を有し、各出力ラインは共にワイヤードＯＲ接続される。いくつかの実施形態では、出力ラインは、ワイヤードＯＲラインに接続する前に反転される。ワイヤードＯＲを受け取る状態マシンはプログラムされる全てのビットがいつ所望のレベルに到達するかを決定できる。したがって、この構成はプログラミング処理がいつ完了するかについてのプログラム検証処理中の素早い決定を可能にする。例えば、各ビットがその所望のレベルに到達すると、そのビット用の論理０がワイヤードＯＲラインに送られる（又はデータ１を反転させる）。全てのビットがデータ０を出力する（又はデータ１を反転させる）と、状態マシンはプログラミング処理を終了することを認識する。各プロセッサが８つの検出モジュールと通信するので、状態マシンはワイヤードＯＲラインを８回読み出す必要があるか、あるいは関連するビットラインの結果を蓄積するために論理がプロセッサ１２９２に追加され、状態マシンがワイヤードＯＲラインを一度だけ読み出せばいいようにする。同様に、論理レベルを正しく選ぶことにより、グローバル状態マシンは、第１のビットがいつその状態を変更し、相応してアルゴリズムを変更するのかを検出できる。
【００６８】
プログラム又は検証中に、プログラムされるデータはデータバス１２２０から１セットのデータラッチ１２９４内に記憶される。状態マシンの制御下のプログラム動作は、アドレスされる記憶素子の制御ゲートに印加されるプログラミング電圧パルスのシリーズを有する。各プログラミングパルスに続いてリードバック（検証）が実行され、記憶素子が所望のメモリ状態にプログラムされたかどうかを判定する。プロセッサ１２９２は、所望のメモリ状態に対するリードバックメモリ状態を監視する。その２つが一致する場合、プロセッサ１２９２はビットラインラッチ１２８２を設定し、プログラム禁止を指定する状態にビットラインを設定する。これにより、たとえプログラミングパルスがその制御ゲートに現れても、ビットラインに接続した記憶素子がさらにプログラムされないようにする。他の実施形態では、プロセッサが最初にビットラインラッチ１２８２をロードし、検出回路が検証処理中に禁止値にそれを設定する。
【００６９】
データラッチスタック１２９４は、検出モジュールに対応するデータラッチのスタックを有する。一実施形態では、検出モジュール１２８０毎に３つのデータラッチが存在する。いくつかの実装形態では、（必須ではないが）データラッチはシフトレジスタとして実装され、内部に記憶されたパラレルデータをデータバス１２２０のシリアルデータに変換したり、その逆を行ったりする。好適実施形態では、ｍ個の記憶素子の読み出し／書き込みブロックに対応する全てのデータラッチを共にリンクさせてブロックシフトレジスタを形成し、シリアル転送によってデータのブロックを入力または出力できるようにする。特に、ｒ個の読み出し／書き込みモジュールのバンクを調整し、そのセットのデータラッチが読み出し／書き込みブロックの全体のシフトレジスタの一部であっても、そのセットのデータラッチのそれぞれが順にデータバスの内外にデータをシフトできるようにする。
【００７０】
図１４は、全ビットラインメモリアーキテクチャのために、および、奇数−偶数メモリアーキテクチャのために、メモリアレイをブロックに編成する例を示す。メモリアレイ１１００の例示的な構造が説明される。一例として、１，０２４個のブロックに分割されるＮＡＮＤフラッシュＥＥＰＲＯＭが説明されている。各ブロックに記憶されるデータは同時に消去できる。一実施形態では、ブロックは、同時に消去される記憶素子の最小単位である。この例では、各ブロックに、ビットラインＢＬ０、ＢＬ１、．．．ＢＬ８５１１に対応する８，５１２の列が存在する。全ビットライン（ＡＢＬ）アーキテクチャ（アーキテクチャ１４１０）と呼ばれる一実施形態では、ブロックの全ビットラインは、読み出し動作及びプログラム動作中に同時に選択される。共通のワードラインに沿っており、任意のビットラインに接続される記憶素子は、同時にプログラミングされる。
【００７１】
示される例では、４個の記憶素子が直列に接続されていることによってＮＡＮＤストリングが形成されている。４個の記憶素子は各ＮＡＮＤストリングに含まれると示されているが、４個より多い、又は、４個未満を使用することもできる（例えば、１６、３２，６４、又は別の数）。ＮＡＮＤストリングの１つの端子は、（選択ゲートドレインラインＳＧＤに接続される）ドレイン選択ゲートを介して対応するビットラインに接続され、別の端子が（ゲートソースラインＳＧＳを選択するために接続される）ソース選択ゲートを介してｃ−ソースに接続される。
【００７２】
奇数−偶数アーキテクチャ（アーキテクチャ１４００）と呼ばれる別の実施形態では、ビットラインは偶数ビットライン（ＢＬｅ）と奇数ビットライン（ＢＬｏ）に分割される。奇数／偶数ビットラインアーキテクチャでは、共通ワードラインに沿っており、奇数ビットラインに接続されている記憶素子はあるタイミングでプログラミングされ、共通ワードラインに沿っており、偶数ビットラインに接続されている記憶素子は別のタイミングでプログラミングされる。この例では、各ブロックに、偶数列と奇数列に分割される８，５１２の列がある。この例では、４個の記憶素子が直列で接続されていることによって、ＮＡＮＤストリングが形成されている。
【００７３】
読み出し動作及びプログラミング動作の１つの構成の間に、４，２５６個の記憶素子が同時に選択される。選択された記憶素子は、同じワードラインと同じ種類のビットライン（例えば、偶数又は奇数）を有する。従って、１論理ページを形成する５３２バイトのデータを同時に読み出し、あるいは、プログラミングすることが可能であり、１ブロックのメモリが少なくとも８論理ページ（それぞれ奇数ページと偶数ページがある４ワードライン）を記憶できる。４個のマルチ状態記憶素子の場合、各記憶素子が２ビットのデータを記憶し、これらの２ビットのそれぞれが別のページに記憶されると、１ブロックは１６の論理ページを記憶する。他のサイズのブロック及びページも使用できる。
【００７４】
ＡＢＬアーキテクチャ又は奇数−偶数アーキテクチャの何れかの場合は、ｐ−ウェルを消去電圧（例えば２０Ｖ）に上昇させ、選択されたブロックのワードラインを接地することによって、記憶素子を消去できる。ソースライン及びビットラインはフローティングされる。消去は、メモリアレイ全体、別々のブロック、又はメモリ素子の一部である記憶素子の別の単位で実行できる。電子は、記憶素子のフローティングゲートからｐ−ウェル領域に移され、記憶素子のＶＴＨが負となる。
【００７５】
読み出し動作及び検証動作では、選択ゲート（ＳＧＤとＳＧＳ）が２．５〜４．５Ｖの範囲の電圧に接続され、未選択ワードライン（例えば、ＷＬ２が選択されたワードラインであるときにＷＬ０、ＷＬ１、及び、ＷＬ３）は読み出しパス電圧ＶＲＥＡＤ（通常、４．５〜６Ｖの範囲の電圧）に上昇され、トランジスタを通過ゲートとして動作させる。選択されたワードラインＷＬ２はある電圧に接続され、電圧のレベルは、関係する記憶素子のＶＴＨがこのようなレベルを超えているのか、あるいは、下回っているのかを決定するために、読み出し動作及び検証動作ごとに指定される。例えば、２レベルの記憶素子のための読み出し動作では、選択されたワードラインＷＬ２が接地されて、ＶＴＨが０Ｖより高いか否かが検出される。２レベル記憶素子の検証動作では、選択されたワードラインＷＬ２が例えば０．８Ｖに接続されて、ＶＴＨが少なくとも０．８Ｖに到達したか否かが検証される。ソース及びｐ−ウェルは０Ｖにある。偶数ビットライン（ＢＬｅ）であると仮定される選択されたビットラインは、例えば０．７Ｖのレベルに事前に充電される。ＶＴＨがワードライン上の読み出しレベル又は検証レベルより高い場合は、対象の記憶素子と関連するビットライン（ＢＬｅ）の電位レベルは、非導電性記憶素子のために高いレベルに維持される。他方、ＶＴＨが読み出しレベル又は検証レベルより低い場合は、導電性記憶素子がビットラインを放電するために、対象のビットライン（ＢＬｅ）の電位レベルは、例えば０．５Ｖ未満等の低いレベルに減少する。これによって、記憶素子の状態が、ビットラインに接続される電圧コンパレータセンス増幅器によって検出される。
【００７６】
図１５は、不揮発性メモリをプログラミングする方法の一実施形態を説明するフローチャートである。上述したように、消去シーケンスが完了した後に、消去状態より高いデータ状態へのプログラミングが行われる。一実施例では、記憶素子が、プログラミング前に（ブロック単位又は他の単位で）消去される。ステップ１５００で、コントローラによって「データロード」コマンドが発行され、制御回路１２１０（図１２を参照）によって入力が受け取られる。ステップ１５０５で、ページアドレスを指定するアドレスデータが、コントローラ又はホストからデコーダ１２１４に入力される。ステップ１５１０では、アドレス指定されたページのプログラムデータのページが、プログラミングのためにデータバッファに入力される。そのデータは、ラッチの適切なセットでラッチされる。ステップ１５１５で、コントローラによって状態マシン１２１２に対し「プログラム」コマンドが発行される。
【００７７】
「プログラム」コマンドによってトリガされることによって、ステップ１５１０でラッチされたデータは、適切な選択ワードラインに印加されたステップされるプログラムパルスを使用して、状態マシン１２１２によって制御される選択された記憶素子にプログラミングされる。ステップ１５２０で、プログラム電圧ＶＰＧＭが開始パルス（例えば、１２Ｖ又は他の値）に初期化され、状態マシン１２１２によって維持されたプログラムカウンタ（ＰＣ）がゼロに初期化される。ステップ１５３０で、第１のＶＰＧＭパルスが選択ワードラインに印加され、選択ワードラインに接続された記憶素子へのプログラミングが開始する。対応する記憶素子がプログラミングされなければならないことを示す論理「０」が特定のデータラッチに記憶されている場合には、対応するビットラインが接地される。他方、対応する記憶素子が現在のデータ状態のままと維持されなければならないことを示す論理「１」が特定のラッチに記憶されている場合には、対応するビットラインが１．５〜３Ｖに接続され、プログラミングが抑制される。
【００７８】
ステップ１５３５で、選択された記憶素子の状態が検証される。選択された記憶素子のターゲット閾値電圧が適切なレベルに達したと検出されると、対応するデータラッチに記憶されているデータは、論理「１」に変更される。閾値電圧が適切なレベルに到達していないことが検出されると、対応するデータラッチに記憶されているデータは変更されない。このように、対応するデータラッチに記憶された論理「１」を有するビットラインは、プログラミングされる必要はない。データラッチの全てが論理「１」を記憶しているときは、状態マシンは（上述されたワイヤードＯＲタイプの機構を介して）全ての選択された記憶素子がプログラミングされたことを知る。ステップ１５４０で、データラッチの全てが論理「１」を記憶するかどうかに関してチェックが行われる。データラッチの全てが論理「１」を記憶している場合、全ての選択された記憶素子がプログラミングされ、検証されたため、プログラミングプロセスは完了であり、成功である。「合格（ＰＡＳＳ）」のステータスが、ステップ１５４５で報告される。いくつかの実施形態では、全ての選択された記憶素子がプログラミングされていると検証されていなくても、プログラミングプロセスが完了し、成功したと見なされる。このような場合、十分にプログラミングされなかった記憶素子のために、後の読み取り動作の間にエラーが発生することがある。ただし、これらのエラーはＥＣＣによって補正できる。
【００７９】
ステップ１５４０で、データラッチの全てが論理「１」を記憶しているわけではないと判断されると、プログラミングプロセスが続行する。いくつかの実施形態では、データラッチのすべてが論理「１」を記憶していなくても、プログラムプロセスは停止する。ステップ１５５０では、プログラムカウンタＰＣが、プログラム限界値ＰＣｍａｘに照らしてチェックされる。プログラム限界値の一例は、２０である。ただし、他の数も使用できる。プログラムカウンタＰＣがＰＣｍａｘ未満ではない場合には、プログラムプロセスは失敗し、ステップ１５５５で「フェール（ＦＡＩＬ）」のステータスが報告される。プログラムカウンタＰＣがＰＣｍａｘ未満である場合には、ＶＰＧＭがステップサイズ分だけ増分され、ステップ１５６０でプログラムカウンタＰＣが増分される。次に、プロセスはステップ１５３０にループバックし、次のＶＰＧＭパルスが印加される。
【００８０】
図１６ａは、プログラミング中に不揮発性記憶素子の制御ゲートに印加されるパルス列の一例を示しており、ここでは、検証動作が奇数ビットラインと偶数ビットラインに対して同時に実行される。パルス列１６００は、プログラミングのために選択されたワードラインに印加されるプログラムパルス１６０２、１６０４、１６０６、１６０８、１６１０、．．．のシリーズを含んでいる。一実施形態では、プログラミングパルスは、１２Ｖで開始し、例えば２０〜２５Ｖの最大値に達するまで、連続するプログラミングパルスごとに、例えば０．５Ｖずつ増加する電圧ＶＰＧＭ１を有する。プログラムパルス間には、例えば３つの検証パルス等の検証パルスがある。いくつかの実施形態では、データが状態Ａ、Ｂ及びＣにプログラミングされている状態ごとに検証パルスがある。他の実施形態では、より多くの、又はより少ない検証パルスがある。各セットの検証パルスは、例えば、ＶＶＥＲＩＦＹ−Ａ、ＶＶＥＲＩＦＹ−Ｂ及びＶＶＥＲＩＦＹ−Ｃ（図３）の振幅を有する。例示の検証パルス１６０３のセットは、奇数番号ビットラインと偶数番号ビットラインの両方の記憶素子に印加される。
【００８１】
図１６ｂは、プログラミング中の不揮発性揮発素子の制御ゲートに印加されるパルス列の例を示しており、ここでは、奇数ビットラインと偶数ビットラインに別々に検証動作が実行される。パルス列１６４０は、プログラミングのために選択されたワードラインに印加されるプログラムパルス１６４２、１６４４、１６４６、１６４８、１６５０．．．のシリーズを含む。例示の検証パルス１６４３のセットは、奇数番号ビットラインの記憶素子に印加され、例示の検証パルス１６４５のセットは偶数番号ビットラインの記憶素子に印加される。
【００８２】
前記発明を実施するための形態は、図解及び説明のために提示された。それは、網羅的であること、または開示されている正確な形式に本発明を制限することを意図していない。上記の教示を鑑みて、多くの修正及び変形が考えられる。説明された実施形態は、本発明及びその実践的な用途の原則を最もよく説明し、それによって当業者が多様な実施例において、及び意図された特定の使用に適するような多様な修正をもって本発明を最もよく活用できるようにするために選ばれた。本発明の範囲は、本明細書に添付される特許請求項の範囲により定められることが意図される。
【図１ａ】
0005250117.tif 000002
【図１ｂ】
0005250117.tif 000003
【図１ｃ】
0005250117.tif 000004
【図２】
0005250117.tif 000005
【図３】
0005250117.tif 000006
【図４】
0005250117.tif 000007
【図５】
0005250117.tif 000008
【図６】
0005250117.tif 000009
【図７ａ】
0005250117.tif 000010
【図７ｂ】
0005250117.tif 000011
【図８ａ】
0005250117.tif 000012
【図８ｂ】
0005250117.tif 000013
【図８ｃ】
0005250117.tif 000014
【図８ｄ】
0005250117.tif 000015
【図８ｅ】
0005250117.tif 000016
【図８ｆ】
0005250117.tif 000017
【図９ａ】
0005250117.tif 000018
【図９ｂ】
0005250117.tif 000019
【図９ｃ】
0005250117.tif 000020
【図１０ａ】
0005250117.tif 000021
【図１０ｂ】
0005250117.tif 000022
【図１０ｃ】
0005250117.tif 000023
【図１１】
0005250117.tif 000024
【図１２】
0005250117.tif 000025
【図１３】
0005250117.tif 000026
【図１４】
0005250117.tif 000027
【図１５】
0005250117.tif 000028
【図１６ａ】
0005250117.tif 000029
【図１６ｂ】
0005250117.tif 000030