(57)【要約】  データを記憶するために、不揮発性記憶素子の集合に対してプログラミング処理が行われる。プログラミング処理の間において、１つ以上の検証作業が行われ、不揮発性記憶素子が目標に達したか否かが決定される。１つ以上の目標の第１集合にプログラムされている不揮発性記憶素子は目標に達したか否かの決定が検証され、目標に達したと決定されれば、さらなるプログラムから除外される。１つ以上の目標の第２集合にプログラムされている不揮発性記憶素子は、高速プログラミングビットの数の決定がテストされる。特定の目標における高速ビットの数が閾値を越えると、その特定の目標にプログラムされている不揮発性記憶素子のプログラムが停止される。【選択図】図１４
2013514601.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性記憶をプログラミングする方法であって、
目標の第１集合にプログラムされている不揮発性記憶素子の第１集合、及び１つ以上の目標の第２集合にプログラムされている不揮発性記憶素子の第２集合をプログラミングする工程と、
前記不揮発性記憶素子の前記第１集合が各々の目標に達したか否かをテストする工程と、
前記不揮発性記憶素子の前記第１集合のうちの各々の目標に達したと決定された不揮発性記憶素子をさらにプログラミングすることから除外する工程と、
１つ以上の目標の前記第２集合の各目標において、前記不揮発性記憶素子の前記第２集合のうちの高速プログラミング不揮発性記憶素子の数を検出する工程と、
前記不揮発性記憶素子の前記第２集合のうちの不揮発性記憶素子をさらにプログラムすることから除外する工程であって、前記不揮発性記憶素子は前記１つ以上の目標の前記第２集合のうちの１つ以上の目標にプログラムされており、前記１つ以上の目標には閾値数を越える前記高速プログラミング不揮発性記憶素子がプログラムされている、工程と、を備える方法。
【請求項２】
前記プログラミングする工程は、プログラムパルスを印加することを含んでおり、
前記テストする工程と前記検出する工程は、前記プログラムパルスに応答して実行される請求項１の方法。
【請求項３】
前記高速プログラミング不揮発性記憶素子の数を検出する工程は、１つ以上の目標の前記第２集合の各目標において、前記不揮発性記憶素子の前記第２集合のうちの前記高速プログラミング不揮発性記憶素子の数を前記プログラムパルス間で計測することを含む請求項２に記載の方法。
【請求項４】
前記不揮発性記憶素子の前記第２集合のうちの前記不揮発性記憶素子をさらにプログラムすることから除外する工程は、前記不揮発性記憶素子の前記第２集合のうちの全ての不揮発性記憶素子をさらにプログラムすることから除外することを含み、前記全ての不揮発性記憶素子は前記１つ以上の目標の前記第２集合のうちの１つ以上の目標にプログラムされており、前記１つ以上の目標には閾値数を越える前記高速プログラミング不揮発性記憶素子がプログラムされている請求項１〜３のいずれか一項に記載の方法。
【請求項５】
前記高速プログラミング不揮発性記憶素子の数を検出する工程は、前記不揮発性記憶素子の前記第２集合のうちの前記不揮発性記憶素子が、各々の目標よりも大きなレベルに達したか否かをテストすることを含む請求項１〜４のいずれか一項に記載の方法。
【請求項６】
前記高速プログラミング不揮発性記憶素子の数を検出する工程は、前記不揮発性記憶素子の前記第２集合のうちの前記不揮発性記憶素子が、各々の目標に達したか否かを検証する以外のテストを実行することを含む請求項１〜５のいずれか一項に記載の方法。
【請求項７】
前記高速プログラミング不揮発性記憶素子の数を検出する工程は、前記不揮発性記憶素子の前記第２集合のうちの前記不揮発性記憶素子が、前記不揮発性記憶素子の前記第１集合に対する１つ以上の目標に達したか否かをテストすることを含む請求項１〜６のいずれか一項に記載の方法。
【請求項８】
１つ以上の目標の前記第２集合は、第１目標を含み、
１つ以上の目標の前記第１集合は、第２目標を含み、
前記不揮発性記憶素子の前記第１集合が各々の目標に達したか否かをテストする工程は、前記不揮発性記憶素子の前記第１集合の部分集合が前記第２目標に達したか否かをテストすることを含み、
前記不揮発性記憶素子の前記第２集合のちの前記高速プログラミング不揮発性記憶素子の数を検出する工程は、前記不揮発性記憶素子の前記第２集合の部分集合が前記第２目標に達したか否かをテストすることを含む請求項１−７のいずれか一項に記載の方法。
【請求項９】
前記高速プログラミング不揮発性記憶素子の数を検出する工程は、前記不揮発性記憶素子の前記第２集合のちの前記不揮発性記憶素子がオーバープログラムされたか否かをテストすることを含む請求項１〜８のいずれか一項に記載の方法。
【請求項１０】
１つ以上の目標の前記第２集合は、目標の前記第１集合にインターリーブされる複数の目標を含む請求項１〜９のいずれか一項に記載の方法。
【請求項１１】
前記プログラムする工程、前記不揮発性記憶素子の第１集合が各々の目標に達したか否かをテストする工程、前記不揮発性記憶素子の前記第１集合のうちの前記不揮発性記憶素子をさらにプログラムすることから除外する工程、前記検出する工程、及び前記不揮発性記憶素子の前記第２集合のうちの前記不揮発性記憶素子をさらにプログラムすることから除外する工程は、前記不揮発性記憶素子の前記第１集合と前記不揮発性記憶素子の前記第２集合を暫定状態にプログラムする暫定プログラム段階の一部として実行され、
方法はさらに、前記不揮発性記憶素子の前記第１集合と前記不揮発性記憶素子の前記第２集合を前記暫定状態とは異なる目標状態にプログラムすることを含む後続のプログラム段階を含み、
前記後続のプログラム段階はさらに、前記不揮発性記憶素子の前記第１集合と前記不揮発性記憶素子の前記第２集合が各々の目標状態に達したか否かをテストすることを備える請求項１〜１０のいずれか一項に記載の方法。
【請求項１２】
前記不揮発性記憶素子の少なくとも前記第１集合に対しては、前記暫定段階に先立って予備プログラム段階を実行する工程をさらに備える請求項１１に記載の方法。
【請求項１３】
不揮発性記憶システムであって、
１つ以上の目標の第１集合にプログラムされる不揮発性記憶素子の第１集合及び１つ以上の目標の第２集合にプログラムされる不揮発性記憶素子の第２集合を含む複数の不揮発性記憶素子と、
前記複数の不揮発性記憶素子と通信するとともに、前記不揮発性記憶素子の前記第１集合及び前記不揮発性記憶素子の前記第２集合に複数回のプログラムを行う１つ以上の管理回路と、
前記複数回のプログラムの少なくとも一部に応答して、１つ以上の前記管理回路が、前記不揮発性記憶素子の前記第１集合が各々の目標に達したか否かをテストし、前記不揮発性記憶素子の前記第１集合のうちの各々の目標に達したと決定された不揮発性記憶素子をさらにプログラミングすることから除外し、１つ以上の目標の前記第２集合の各目標において前記不揮発性記憶素子の前記第２集合のうちの高速プログラミング不揮発性記憶素子の数を検出し、前記不揮発性記憶素子の前記第２集合のうちの不揮発性記憶素子をさらにプログラムすることから除外し、ここで、前記不揮発性記憶素子は前記１つ以上の目標の前記第２集合のうちの１つ以上の目標にプログラムされており、前記１つ以上の目標には閾値数を越える前記高速プログラミング不揮発性記憶素子がプログラムされている、不揮発性記憶システム。
【請求項１４】
前記複数回のプログラムは、プログラムパルスを含む請求項１３に記載の不揮発性記憶システム。
【請求項１５】
１つ以上の前記管理回路は、１つ以上の目標の前記第２集合の各目標において、前記不揮発性記憶素子の前記第２集合のうちの前記高速プログラミング不揮発性記憶素子の数を前記プログラムパルス間で計測することで、前記高前記速プログラミング不揮発性記憶素子の数を検出する請求項１４に記載の不揮発性記憶システム。
【請求項１６】
１つ以上の前記管理回路は、前記不揮発性記憶素子の前記第２集合のうちの全ての不揮発性記憶素子をさらにプログラムすることから除外し、前記全ての不揮発性記憶素子は前記１つ以上の目標の前記第２集合のうちの１つ以上の目標にプログラムされており、前記１つ以上の目標には閾値数を越える前記高速プログラミング不揮発性記憶素子がプログラムされている請求項１３〜１５のいずれか一項に記載の不揮発性記憶システム。
【請求項１７】
１つ以上の前記管理回路は、前記不揮発性記憶素子が、各々の目標よりも大きなレベルに達したか否かをテストすることで、前記高速プログラミング不揮発性記憶素子の数を検出する請求項１３〜１６のいずれか一項に記載の不揮発性記憶システム。
【請求項１８】
１つ以上の前記管理回路は、前記不揮発性記憶素子の前記第２集合が、前記不揮発性記憶素子の前記第１集合に対する１つ以上の目標に達したか否かをテストすることで、前記高速プログラミング不揮発性記憶素子の数を検出する請求項１３〜１７のいずれか一項に記載の不揮発性記憶システム。
【請求項１９】
１つ以上の目標の前記第２集合は、第１目標を含み、
１つ以上の目標の前記第１集合は、第２目標と第３目標を含み、
１つ以上の前記管理回路は、前記不揮発性記憶素子の前記第１集合の部分集合が前記第２目標に達したか否かをテストすることで、前記不揮発性記憶素子の前記第１集合が各々の目標に達したか否かをテストし、
１つ以上の前記管理回路は、前記不揮発性記憶素子の前記第２集合の部分集合が前記第２目標に達したか否かをテストすることで、前記不揮発性記憶素子の前記第２集合のうちの前記高速プログラミング不揮発性記憶素子の数を検出する請求項１３〜１８のいずれか一項に記載の不揮発性記憶システム。
【請求項２０】
１つ以上の前記管理回路は、前記不揮発性記憶素子の前記第２集合がオーバープログラムされたか否かをテストすることで、前記高速プログラミング不揮発性記憶素子の数を検出する請求項１３〜１９のいずれか一項に記載の不揮発性記憶システム。
【請求項２１】
１つ以上の目標の前記第２集合は、目標の前記第１集合にインターリーブされる複数の目標を含む請求項１３〜２０のいずれか一項に記載の不揮発性記憶システム。
【請求項２２】
１つ以上の前記管理回路は、前記不揮発性記憶素子の前記第１集合と前記不揮発性記憶素子の前記第２集合を暫定状態にプログラムする暫定プログラム段階の一部として、複数回のプログラムを行い、前記不揮発性記憶素子の前記第１集合が各々の目標に達したか否かをテストし、前記不揮発性記憶素子の前記第１集合のうちの前記不揮発性記憶素子をさらにプログラムすることから除外し、前記高速プログラミング不揮発性記憶素子を検出し、及び前記不揮発性記憶素子の前記第２集合のうちの前記不揮発性記憶素子をさらにプログラムすることから除外し、
１つ以上の前記管理回路はまた、前記不揮発性記憶素子の前記第１集合と前記不揮発性記憶素子の前記第２集合を前記暫定状態とは異なる目標状態にプログラムすることを含む後続のプログラム段階を実行し、
前記後続のプログラム段階はさらに、１つ以上の前記管理回路が、前記不揮発性記憶素子の前記第１集合と前記不揮発性記憶素子の前記第２集合が各々の前記目標状態に達したか否かをテストすることを含む請求項１３〜２１のいずれか一項に記載の不揮発性記憶システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性記憶の技術に関する。
【背景技術】
【０００２】
半導体メモリ装置は、様々な電子デバイスで使われることが一般的になってきている。例えば、不揮発性半導体メモリは、携帯電話、デジタルカメラ、パーソナル・デジタル・アシスタント、モバイルコンピュータ、非モバイルコンピュータ、及び他の装置に使用されている。電気的消去・再書込み可能型読取専用メモリ（ＥＥＰＲＯＭ）とフラッシュメモリは、最も普及している不揮発性半導体メモリである。
【０００３】
ＥＥＰＲＯＭとフラッシュメモリは、半導体基板内のチャネル領域上に配置され、そのチャネル領域から絶縁されているフローティングゲートを採用している。フローティングゲートは、ソース領域とドレイン領域の間に配置されている。フローティングゲートの上に、そのフローティングゲートから絶縁されている制御ゲートが設けられている。トランジスタの閾値電圧は、フローティングゲートに保持されている電荷量によって制御される。即ち、そのソースとドレインの間の導通を可能にすべくトランジスタをオンするために制御ゲートに印加すべき電圧の最小量は、そのフローティングゲートの電荷量レベルにより制御される。
【０００４】
ＥＥＰＲＯＭ又はフラッシュメモリデバイスにプログラミングを行う場合、典型的には、ビットラインが接地されるとともに、制御ゲートにプログラム電圧が加えられる。チャネルからの電子がフローティングゲートへ注入される。フローティングゲートに電子が蓄積されると、フローティングゲートが負値に帯電し、メモリセルの閾値電圧が上昇し、メモリセルがプログラムされた状態となる。プログラミングに関するさらなる情報は、「Source Side Self Boosting Technique for Non-Volatile Memory」と題した米国特許第６，８５９，３９７号、および、「Detecting Over Programmed Memory」と題した米国特許第６，９１７，５４２号に開示されている。両文献の内容は、その全体を参照することにより本明細書に組み込まれる。
【０００５】
一部のＥＥＰＲＯＭおよびフラッシュメモリ装置は、電荷の２つの範囲を記憶するために使用されるフローティングゲートを備える。従って、メモリセルは、２つの状態の間で、プログラムまたは消去される。消去状態およびプログラム状態の各々は、データ「１」およびデータ「０」に相当する。そのような装置は、バイナリ装置または２状態装置と呼ばれることがある。
【０００６】
マルチステートフラッシュメモリセルは、多数の、明確な許容されている閾値電圧範囲を特定することによって実施される。明確な閾値電圧範囲の各々は、データビットの集合に関する所定の値に相当する。メモリセルにプログラムされたデータと、メモリセルの閾値電圧範囲との間の詳細な関係は、セルのために採用されるデータ符号化方式に依存する。例えば、両方ともその全体を参照することにより本明細書に組み込まれる、米国特許第６，２２２，７６２号及び米国特許出願公表第２００４／０２５５０９０号は、マルチ状態フラッシュメモリセルの多様なデータ符号化方式を説明する。
【０００７】
いくつかの実施形態では、制御ゲートに印加されるプログラム電圧は、連続するパルスの各々で所定のステップサイズ（例：０．２ボルト、０．３ボルト、０．４ボルト、または他の電圧）で大きさが増加していく、一連のパルスを含んでいる。パルスの間においてメモリシステムは、個々のメモリセルが、各メモリセルが目標とする閾値電圧範囲に到達したか否かを検証することができる。各自の目標とする閾値電圧範囲に到達したこれらのメモリセルは、（例えば、ビットライン電圧をＶｄｄへ上昇させることによって、）以後のプログラミングから除外される。全てのメモリセルが目標とする閾値電圧範囲に到達した場合には、プログラミングが完了する。
【０００８】
マルチステート不揮発性記憶装置では、許容されている閾値電圧範囲にプログラムされたセルをプログラミングパルス間で検証するシステムがある。許容されている閾値電圧範囲が多いと、検証を実行するための時間が長くなる。長時間の検証動作は、プログラミングプロセスを低速化させる。
【図面の簡単な説明】
【０００９】
【図１】ＮＡＮＤストリングの平面図である。
【図２】ＮＡＮＤストリングの等価回路図である。
【図３】不揮発性メモリシステムのブロック図である。
【図４】検出ブロックの一実施例を示すブロック図である。
【図５Ａ】メモリアレイの一実施例を示すブロック図である。
【図５Ｂ】データの１ページを示す図である。
【図６Ａ】閾値電圧分布の集合の一例および不揮発性メモリのプログラミングの処理を表わす図である。
【図６Ｂ】３つのプログラミングパルスと、プログラミングパルス間で印加される検証パルスを表す。
【図７Ａ】種々の閾値電圧分布、及び、不揮発性メモリをプログラミングする処理を説明する図である。
【図７Ｂ】種々の閾値電圧分布、及び、不揮発性メモリをプログラミングする処理を説明する図である。
【図７Ｃ】種々の閾値電圧分布、及び、不揮発性メモリをプログラミングする処理を説明する図である。
【図７Ｄ】種々の閾値電圧分布、及び、不揮発性メモリをプログラミングする処理を説明する図である。
【図７Ｅ】種々の閾値電圧分布、及び、不揮発性メモリをプログラミングする処理を説明する図である。
【図８Ａ】粗／密プログラミングスキームの一例を示す。
【図８Ｂ】粗／密プログラミングスキームの一例を示す。
【図８Ｃ】粗／密プログラミングスキームの一例を示す。
【図９Ａ】粗／密プログラミングスキームの一例を示す。
【図９Ｂ】粗／密プログラミングスキームの一例を示す。
【図９Ｃ】粗／密プログラミングスキームの一例を示す。
【図１０】不揮発性メモリを動作させるための処理の一実施形態を示すフローチャートである。
【図１１】不揮発性メモリをプログラミングするための処理の一実施形態を示すフローチャートである。
【図１２Ａ】プログラミング中に不揮発性メモリを検証するための処理の一実施形態を示すフローチャートである。
【図１２Ｂ】３つのプログラミングパルスと、プログラミングパルス間で印加される検証パルスを表す。
【図１３】プログラム中に不揮発性メモリを検証するための処理の一実施形態を示すフローチャートである。
【図１４】プログラム中に不揮発性メモリを検証するための処理の一実施形態を示すフローチャートである。
【図１５Ａ】プログラム中に不揮発性メモリを検証するための処理の一実施形態を示すフローチャートである。
【図１５Ｂ】プログラミングパルスと、プログラミングパルス間で印加される検証パルスを表す。
【図１６Ａ】不揮発性メモリをプログラミングするための処理の一実施形態を示すフローチャートである。
【図１６Ｂ】プログラミングパルスと、プログラミングパルス間で印加される検証パルスを表す。
【発明を実施するための形態】
【００１０】
不揮発性記憶素子の集合は、データを保存するためのプログラミング処理に用いられる。プログラミング処理中において、不揮発性記憶素子が各自の目標に到達したか否かを決定するために、１つ又は複数の検証作業が実行される。１つ又は複数の目標の第１集合にプログラムされている不揮発性記憶素子は、それらが目標に達したか否かが検証され、それらが目標に達したと決定されると、更なるプログラミングから除外される。１つ又は複数の目標の第２集合にプログラムされている不揮発性記憶素子は、高速プログラミングビットの数を決定するためにテストされる。特定の目標に対する高速ビットの数が閾値よりも大きいと、特定の目標にプログラムされている不揮発性記憶素子のプログラムを停止する。
【００１１】
本願に開示される技術を実行可能な不揮発性記憶システムの一例は、２つの選択ゲートの間に複数のトランジスタの直列接続を含むＮＡＮＤ構造を用いるフラッシュメモリシステムである。直列に接続されたトランジスタと選択ゲートは、ＮＡＮＤストリングと呼ばれる。図１は、１つのＮＡＮＤストリングを示す平面図である。図２は、その等価回路である。図１と図２に示すＮＡＮＤストリングは、（ドレイン側）選択ゲート１２０と（ソース側）選択ゲート１２２の間に挟まれている、直列に接続されている４つのトランジスタ１００、１０２、１０４及び１０６を有する。選択ゲート１２０は、ビットコンタクト１２６を介してＮＡＮＤストリングをビットラインに接続している。選択ゲート１２２は、ＮＡＮＤストリングをソースライン１２８に接続している。選択ゲート１２０は、選択ラインＳＧＤに適切な電圧を加えることによって制御される。選択ゲート１２２は、選択ラインＳＧＳに適切な電圧を加えることによって制御される。トランジスタ１００、１０２、１０４、及び１０６の夫々は、制御ゲートとフローティングゲートを有している。例えば、トランジスタ１００は、制御ゲート１００ＣＧとフローティングゲート１００ＦＧを備えている。トランジスタ１０２は、制御ゲート１０２ＣＧとフローティングゲート１０２ＦＧを備えている。トランジスタ１０４は、制御ゲート１０４ＣＧとフローティングゲート１０４ＦＧを備えている。トランジスタ１０６は、制御ゲート１０６ＣＧとフローティングゲート１０６ＦＧを備えている。制御ゲート１００ＣＧはワードラインＷＬ３に接続されており、制御ゲート１０２ＣＧはワードラインＷＬ２に接続されており、制御ゲート１０４ＣＧはワードラインＷＬ１に接続されており、制御ゲート１０６ＣＧはワードラインＷＬ０に接続されている。
【００１２】
図１と図２は、ＮＡＮＤストリング内の４個のメモリセルを示しているが、４個のメモリセルの使用は単に一例として提示されている点に留意されたい。ＮＡＮＤストリングは、４個よりも少ない、或いは、４個よりも多いメモリセルを有していてよい。例えば、ＮＡＮＤストリングによっては８個、１６個、３２個、６４個、１２８個などの数のメモリセルを有していてよい。本明細書の説明は、いかなる特定個数のメモリセルを有するＮＡＮＤストリングにも限定されない。一実施形態は、６６個のメモリセルを備えたＮＡＮＤストリングを使用する。６６個のメモリセルのうち、６４個のメモリセルはデータを記憶し、メモリセルの２個はデータを記憶しないためダミーメモリセルとされる。
【００１３】
ＮＡＮＤ構造を用いたフラッシュメモリシステムの一般的なアーキテクチャは、いくつかのＮＡＮＤストリングを含んでいる。各ＮＡＮＤストリングは、選択ラインＳＧＳによって制御されるソース選択ゲートによって共通ソースラインに接続されているとともに、選択ラインＳＧＤによって制御されるドレイン選択ゲートによって関連するビットラインに接続されている。各ビットラインとそのビットラインにビットラインコンタクトを介して接続されている夫々のＮＡＮＤストリングは、メモリセルアレイの列を構成する。ビットラインは、複数のＮＡＮＤストリングによって共有されている。典型的には、ビットラインは、ワードラインと直交する方向でＮＡＮＤストリング上を通っており、１のセンスアンプと接続されている。
【００１４】
ＮＡＮＤタイプのフラッシュメモリおよびそれらの動作に関連する例は、以下の米国特許／特許出願に記載されており、それらの引用文献は、その全体が参照により本明細書に組み込まれる。米国特許第５，５７０，３１５号、米国特許第５，７７４，３９７号、米国特許第６，０４６，９３５号、米国特許第６，４５６，５２８号、及び、米国公開公報第ＵＳ２００３／０００２３４８号。
【００１５】
ＮＡＮＤフラッシュメモリに加えて、不揮発性記憶装置の他のタイプもまた本明細書で開示される新技術に用いることができる。例えば、基本的に（フローティングゲートの代わりに）窒化物層内に電荷をトラッピングするメモリセルである、ＴＡＮＯＳ構造（シリコン基板上のＴａＮ−Ａｌ2Ｏ3−ＳｉＮ−ＳｉＯ2の積層から構成される構造）は、本明細書で述べる技術に適用できる。フラッシュＥＥＰＲＯＭシステムで有用な別のタイプのメモリセルは、不揮発方式で電荷を蓄積するために、導電性フローティングゲートの代わりに非導電性の誘電物質を活用する。そのようなセルは、Chanらによる記事、「A True Single-Transistor Oxide-Nitride-Oxide EEPROM Device」、IEEE ELECTRON DEVICE Letters、ＥＤＬ−８巻、第３号、１９８７年３月の９３から９５ページに説明されている。酸化ケイ素、窒化ケイ素、及び酸化ケイ素（「ＯＮＯ」）から形成される三層の誘電体が、メモリセルチャネル上で半導電性基板の表面と導電性制御ゲートとの間に挟まれている。セルは、セルチャネルから窒化物の中に電子を注入することにより書込みが行われ、窒化物内において電子が制限領域内にトラッピングされ蓄積される。この蓄積された電荷は、次に、検出可能な方法で、セルのチャネルの一部の閾値電圧を変更する。セルは、窒化物中にホットホールを注入することによって消去される。Nozakiら、「A 1-Mb EEPROM with MONOS Memory Cell for Semiconductor Disk Application」、IEEE Journal of Solid-State Circuits、第２６巻、第４号、１９９１年４月、４９７から５０１ページに、分離した選択トランジスタを形成するためにドーピングされたポリシリコンゲートがメモリセルチャネルの一部に拡がっている分割ゲート構成における同様のセルが説明されている。その文献も参照されたい。
【００１６】
他の例が、「NROM: A Novel Localized Trapping, 2-Bit Nonvolatile Memory Cell」、IEEE Electron Device Letters、２１巻、１１号、２０００年１１月、５４３から５４５ページに、Eitanらによって開示されている。ＯＮＯ誘電層は、ソース拡散領域とドレイン拡散領域の間のチャンネルを横切って伸びている。あるデータビットの電荷がドレインに近接した誘電層内に局在し、他のデータビットの電荷がドレインに近接した誘電層内に局在する。米国特許第５，７６８，１９２号および６，０１１，７２５号では、２つの酸化シリコン層に挟まれたトラップ用の誘電層を有する不揮発性メモリセルが開示されている。マルチステートのデータ記憶は、誘電層内の空間的に離れた電荷蓄積領域の２値の状態を、別々に読み出すことで行われる。他のタイプのメモリ素子も使用できる。
【００１７】
図３は、メモリセル（例えば、ＮＡＮＤマルチ状態フラッシュメモリ）の１ページに対して読み出しおよびプログラミングを行う、読み出し／書き込み回路を備える不揮発性記憶デバイス２１０を示している。記憶デバイス２１０は、１つ以上のメモリダイ又はチップ２１２を有していてもよい。メモリダイ２１２は、メモリセルの（２次元又は３次元の）アレイ２００、制御回路２２０、及び、読み出し／書き込み回路２３０Ａと２３０Ｂを有する。一実施形態では、様々な周辺回路によるメモリアレイ２００へのアクセスはアレイの両側で対称的に実装されており、これにより、各側のアクセスライン及び回路の密度が半分に低減される。読み出し／書き込み回路２３０Ａ及び２３０Ｂは、複数のセンスブロック３００を有しており、それらのセンスブロック３００によって１ページのメモリセルを並列に読み出し又はプログラムすることができる。メモリアレイ２００は、行デコーダ２４０Ａと２４０Ｂを介したワードラインと、列デコーダ２４２Ａと２４２Ｂを介したビットラインによってアドレス指定される。典型的な実施形態では、コントローラ２４４は、１つ以上のメモリダイ２１２のような同じメモリデバイス２１０（例えば、取り外し可能なストレージカード又はパッケージ）内に含まれる。命令及びデータは、ライン２３２を介してホストとコントローラ２４４の間で転送され、また、ライン２３４を介してコントローラと１つ以上のメモリダイ２１２の間で転送される。
【００１８】
制御回路２２０は、読み出し／書き込み回路２３０Ａと２３０Ｂと協調して、メモリアレイ２００に対してメモリ動作を実行する。制御回路２２０は、ステートマシン２２２、オンチップアドレスデコーダ２２４、及び電力制御モジュール２２６を有している。ステートマシン２２２は、メモリ動作のチップレベルの制御を提供する。オンチップアドレスデコーダ２２４は、ホスト又はメモリコントローラによって用いられるアドレスと、デコーダ２４０Ａ、２４０Ｂ、２４２Ａ及び２４２Ｂによって用いられるハードウェアアドレスとの間にアドレスインタフェースを提供する。電力制御モジュール２２６は、メモリ動作中のワードライン及びビットラインに供給される電力及び電圧を制御する。一実施形態では、電力制御モジュール２２６は、供給電力より大きな電圧を作り出すことができる一つ以上のチャージポンプを有する。制御回路２２０、デコーダ２４０Ａ／２４０Ｂおよび２４２Ａ／２４２Ｂ、読み出し／書き込み回路２３０Ａ／２３０Ｂ、コントローラ２４４は、集団でまたは個々で、１つ以上の管理回路としてみなすことができる。
【００１９】
図４は、センスモジュール４８０と呼ばれるコア部と共通部４９０に分割された個々のセンスブロック３００のブロック図である。一実施形態では、各ビットラインに対して個別のセンスモジュール４８０を用意し、複数の複数センスモジュール４８０に対して一つの共通部４９０を用意してもよい。一例として、１個のセンスブロックは、１個の共通部４９０と８個のセンスモジュール４８０を有している。グループ内の各センスモジュールは、データバス４７２を介して協働する共通部と通信する。さらなる詳細としては、その全体を参照することにより本明細書に組み込まれる米国特許出願公開公報２００６／０１４０００７号を参照されたい。
【００２０】
センスモジュール４８０は、接続されたビットライン内の伝導電流が予め決められた閾値レベルより高いか低いかを判定するセンス回路４７０を備えている。幾つかの実施形態では、センスモジュール４８０は、センスアンプと一般に呼ばれる回路を有する。センスモジュール４８０は、さらに、接続されたビットラインに電圧状態を設定するために用いられるビットラインラッチ４８２を有している。例えば、ビットラインラッチ４８２内で予め決められた状態がラッチされることによって、接続されたビットラインを、プログラム禁止を指定する状態（例えば、Ｖｄｄ）に引き上げる（プル）する。
【００２１】
共通部４９０は、プロセッサ４９２、複数のデータラッチ４９４、及び、複数のデータラッチ４９４とデータバス４２０の間を接続するＩ／Ｏインタフェース４９６を備えている。プロセッサ４９２は計算を実行する。例えば、その機能の１つは、センスされたメモリセル内に記憶されているデータを特定し、特定されたデータを複数のデータラッチ内に記憶することである。複数のデータラッチ４９４は、読み出し動作において、プロセッサ４９２によって特定されたデータビット群を記憶するために用いられる。複数のデータラッチ４９４は、プログラム動作において、データバス４２０から取り込んだデータビット群を記憶するためにも用いられる。取り込まれるデータビット群は、メモリ内に書き込む予定のライトデータ（書き込みデータ）を表す。Ｉ／Ｏインタフェース４９６は、データラッチ４９４とデータバス４２０の間のインタフェースを提供する。
【００２２】
読み出し又は検出中には、システムの動作はステートマシン２２２の制御下にあり、ステートマシン２２２はアドレス指定されたセルへの種々の制御ゲート電圧の供給を制御する。メモリに用意された様々なメモリ状態に対応する様々な既定制御ゲート電圧（読み出し参照電圧または検証参照電圧）のステップを進む毎に、センスモジュール４８０はこれらの電圧の１つに遷移し、バス４７２を介してセンスモジュール４８０からプロセッサ４９２に出力が提供される。その時点で、プロセッサ４９２は、センスモジュールの遷移イベントと、ステートマシンから入力ライン４９３を介して加えられた制御ゲート電圧についての情報によって、結果としてのメモリ状態を特定する。それから、プロセッサは、メモリ状態に対するバイナリ符号化を計算し、得られたデータビット群をデータラッチ４９４に格納する。コア部の別の実施形態では、ビットラインラッチ４８２は、センスモジュール４８０の出力をラッチするラッチ、及び、上記のようなビットラインラッチの二つの役割を持つ。
【００２３】
当然のことながら、いくつかの実装形態では複数のプロセッサ４９２を有することができる。一実施形態では、各プロセッサ４９２は出力ライン（図４には示されていない）を有し、各出力ラインは共にワイヤードＯＲ（配線論理和）接続される。いくつかの実施形態では、出力ラインは、ワイヤードＯＲラインに接続される前段階で反転される。この構成は、ワイヤードＯＲの結果を受け取るステートマシンが、プログラムされる全てのビットがいつ所望のレベルに到達したかを判断できるので、プログラム処理の完了時点を判定するプログラム検証処理における素早い判定を可能にする。例えば、各ビットがその所望のレベルに到達すると、そのビット用の論理「０」がワイヤードＯＲラインに送られる（又はデータ「１」が反転される）。全てのビットがデータ「０」を出力すると（又はデータ「１」が反転されると）、ステートマシンはプログラミング処理の完了を知る。各プロセッサが８個のセンスモジュールと通信する実施形態では、（いくつかの実施形態において）ステートマシンはワイヤードＯＲラインを８回読み出す必要があってもよいし、あるいは、協働するビットラインの結果を蓄積するための論理をプロセッサ４９２に追加し、ステートマシンがワイヤードＯＲラインを一度だけ読み出せば良いようにしてもよい。センスモジュールを多数備える一部の実施形態では、多数のセンスモジュールの複数のワイヤードＯＲラインは、Ｎ個のセンスモジュールの集合にグループ分けされていても良い。そのグループは、２分木（a binary tree）を形成するようにグループ分けされていても良い。
【００２４】
プログラム又は検証の間、プログラムされるべきデータはデータバス４２０から複数のデータラッチ４９４内に記憶される。ステートマシン制御下のプログラム処理は、メモリセルが同時にプログラムされるように、アドレス指定されるメモリセルの制御ゲートに同時に加えられる、一連の（値の増加を伴う）プログラミング電圧パルスを伴う。各プログラミングパルスに続いて検証処理が実行され、メモリセルが所望の状態にプログラムされたかどうかを判定する。プロセッサ４９２は、所望のメモリ状態に対する検証メモリ状態を監視する。その２つが一致したとき、プロセッサ４９２は、プログラム禁止を指定する状態にビットラインを引き上げる（プルする）ようにビットラインラッチ４８２を設定する。これにより、たとえプログラミングパルスがその制御ゲートに影響しても、ビットラインに接続したメモリセルがさらにプログラミングされないようにすることができる。他の実施形態では、プロセッサが最初にビットラインラッチ４８２をロードし、センス回路が検証処理中にそれに禁止値を設定する。
【００２５】
データラッチスタック４９４は、センスモジュールに対応するデータラッチのスタックを有する。一実施形態では、センスモジュール４８０毎に３個（または４個、或いはその他の数の）データラッチが存在する。いくつかの実装形態では、（必須ではないが）データラッチはシフトレジスタとして実装され、内部に記憶されたパラレルデータをデータバス４２０用にシリアルデータに変換したり、その逆を行ったりする。好適な一実施形態では、ｍ個のメモリセルの読み出し／書き込みブロックに対応する全てのデータラッチを相互にリンクしてブロックシフトレジスタを構成し、シリアル転送によってデータのブロックを入力または出力できるようにする。特に、読み出し／書き込みモジュールの一群のデータラッチのそれぞれが、データバスへ或いはデータバスからデータを順に転送するように読み出し／書き込みモジュールのバンクを構成し、一群のデータラッチがあたかも読み出し／書き込みブロック全体のシフトレジスタの一部であるかのようにしてもよい。
【００２６】
不揮発性記憶装置の様々な実施形態の構造および／または動作についての、さらなる情報は、次の文献に記載されている。（１）米国特許出願公開公報第２００４／００５７２８７号、「Non-Volatile Memory And Method With Reduced Source Line Bias Errors」、２００４年３月２５日発行、（２）米国特許出願公開公報第２００４／０１０９３５７号、「Non-Volatile Memory And Method with Improved Sensing」、２００４年６月１０日発行、（３）米国特許出願公開公報第２００５０１６９０８２号、（４）米国特許出願公開公報第２００６／０２２１６９２号、タイトルは「Compensating for Coupling During Read Operations of Non-Volatile Memory」、発明者Jian Chen、２００５年４月５日出願、及び、（５）米国特許出願公開公報第２００６／０１５８９４７号、タイトルは「Reference Sense Amplifier For Non-Volatile Memory」、発明者Siu Lung ChanおよびRaul-Adrian Cernea、２００５年１２月２８日出願。これら５個の特許文献の全ては、その全体を参照することにより本明細書に組み込まれる。
【００２７】
図５Ａは、メモリセルアレイ２００の例示的な構造を示す。一実施形態においては、メモリセルのアレイは、数多くのブロックに分割される。フラッシュＥＥＰＲＯＭシステムに一般的であるように、ブロックは消去の単位である。すなわち、各ブロックは共に消去される最小数のメモリセルを含む。
【００２８】
一例として、図５Ａに図示されているＮＡＮＤフラッシュＥＥＰＲＯＭは１０２４個のブロックに分割されている。しかしながら、１０２４個より多いまたは少ないブロックを用いることもできる。この例では、各ブロックには、ビットラインＢＬ０、ＢＬ１、．．．ＢＬ６９６２３に対応する６９６２４個の列が存在する。一実施形態では、読み出しおよびプログラム処理の間に、１つのブロック内の全てのビットラインを同時に選択することができる。１本の共通ワードラインに沿っているとともに、いずれかのビットラインに接続されている複数のメモリセルは、同時にプログラム（または読み出し）することができる。他の実施形態では、複数のビットラインは、偶数ビットラインと奇数ビットラインに分けられる。奇数／偶数ビットライン・アーキテクチャでは、ある共通ワードラインに沿っているとともに奇数ビットラインに接続されている複数のメモリセルは、ある時にプログラムされる一方、ある共通ワードラインに沿っているとともに偶数ビットラインに接続されている複数のメモリセルは、別の時にプログラムされる。
【００２９】
図５Ａは、直列接続されることでＮＡＮＤストリングを形成している、４つのメモリセルを示している。各々のＮＡＮＤストリングに４つのセルが含まれているが、４個よりも少ない、或いは、４個よりも多いメモリセルを有していてよい（例えば、ＮＡＮＤストリングによっては、１６個、３２個、６４個、１２８個やその他の数のメモリセルを有していてもよい。）各ＮＡＮＤストリングの一端は、（選択ラインＳＧＤに接続されている）ドレイン選択ゲートを介して対応するビットラインに接続されており、他端は、（選択ラインＳＧＳに接続されている）ソース選択ゲートを介してソースラインに接続されている。
【００３０】
各ブロックは、通常、複数のページに分割される。ページはプログラムの単位である。通常、１つ又は複数ページのデータが１列のメモリセルに記憶される。１つのページは、１つ又は複数のセクタを記憶できる。１つのセクタは、ユーザデータとオーバヘッドデータを含む。オーバヘッドデータは、通常、セクタのユーザデータから算出される誤り訂正符号（Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｏｎ  Ｃｏｄｅ：ＥＣＣ）を含む。コントローラが、データがアレイにプログラムされているときにＥＣＣを計算し、データがアレイから読み出されているときにＥＣＣのチェックも行う。ステートマシン、コントローラ、または他の構成要素が、ＥＣＣを計算してチェックすることができる実施形態もある。幾つかの他の方法では、ＥＣＣ及び／又は他のオーバヘッドデータはそれらが関係するユーザデータとは異なるページに記憶され、または異なるブロックに記憶されることがある。ユーザデータのセクタは通常、磁気ディスクドライブ内のセクタサイズに相当する５１２バイトである。例えば８ページから３２、６４、１２８、或いはそれ以上のページまでの多数のページが１ブロックを形成する。１つのブロックの各ワード線が１つのページに関連する実施形態もある。また、１つのブロックの各ワード線が３つのページに関連する実施形態もある。あるいは、ワード線が他のページ数に関連することが可能な実施形態もある。
【００３１】
図５Ｂは、１ページに対するデータを示している。ページのサイズに応じて、ページは多数のセクタを備える。各セクタは、ユーザデータ、誤り訂正符号（ＥＣＣ）、およびヘッダ情報を含んでいる。
【００３２】
マルチステートメモリセルを使用している、幾つかのメモリシステムでは、１つのメモリセル内のデータの各ビットは、異なるページに属している。例えば、メモリセルのアレイが、１つのメモリセル当りデータの３ビット（データの８つの状態またはレベル）を記憶する場合、各メモリセルは、３ビットの各々が異なるページになるように、データを３ページに記憶する。従ってこの例の１つのブロック内では、各ワードラインは、３ページまたは３ページの整数倍に関連付けられる。他の配置も可能である。
【００３３】
大規模なデータ記憶デバイスおよび記憶システムでの誤り訂正コーディング（ＥＣＣ）の使用は、データ通信システムと同様に、よく知られている。この技術分野の基本として、誤り訂正コーディングは、付加ビット（一般的に、パリティビット、コードビット、チェックサム・ディジット（checksum digits）、ＥＣＣビットなどと呼ばれる）の記憶または通信を伴う。付加ビットは、符号化される「ペイロード（payload）」データビット（または元データビット）から、決定または算出される。例えば、メモリ資源内への誤り訂正符号化されたデータの記憶は、実データと付加コードビット（the additional code bits）を含ませるために、選択されたコードを用いた１つ以上のコードワード（code words）の符号化を伴う。記憶されたデータの修復は、記憶されたコードワードの符号化に用いられたコードと同一のコードに従った、記憶されたコードワードの復号化を伴う。コードビットは、コードワードの実データ部を「必要以上に詳述（ｏｖｅｒ−ｓｐｅｃｉｆｙ）」するため、復号の後に実データを欠損することなく、誤りビットの幾つかを許容することができる。
【００３４】
この分野では、多くのＥＣＣコード手法が良く知られている。これらの従来の誤り訂正符号は、フラッシュ（および他の不揮発性）メモリなどの大規模なメモリにおいて、特に有益である。それは、このようなコード手法が与えることができる、製造歩留まりやデバイスの信頼性に与える大きな影響のために、幾つかのプログラムできないセルまたは欠陥セルを有するデバイスを使用可能にするためである。もちろん、歩留まり向上と、コードビット（即ち、コード「レート」）を記憶するためのメモリセルを付加的に備えることのコストとの間に、トレードオフが存在する。フラッシュメモリデバイスのための幾つかのＥＣＣコードは、データ通信アプリケーションで用いられるコード（１／２まで低いコードレートを有することがある）に比して、より高いコードレート（即ち、コードビットのデータビットに対するより低い比率）を有する傾向がある。
【００３５】
複数のセル間の製造バラツキのために、他のメモリセルよりも前に低い閾値電圧に消去されたために、１ページ内の複数セル間の不均一な消耗やその他の理由のために、一部のメモリセルは、他のメモリセルよりもプログラムまたは消去が遅い。当然、一部のセルは、欠陥または他の理由によって、プログラムまたは消去することが一切できない。さらに、一部のメモリセルは高速でプログラムされてオーバープログラムされ、エラーを引き起こすかもしれない。上述したように、誤り訂正コーディングは、メモリを使用可能に維持しながら、遅いまたは機能不全の幾つかのセルを許容する能力を与える。一部のアプリケーションでは、１ページ上の全てのメモリセルが所望のプログラム状態であることが検証されるまで、プログラミングパルスを繰り返し印加することによって、データの１ページがプログラムされる。一部の実装では、まだ完全にプログラムされていないまたは消去されていないエラーのセル数が、訂正可能なビット数よりも少ない場合に、一連のプログラミングパルスまたは消去パルスを打ち切ることによって、プログラミング時間および消去時間が短縮される。
【００３６】
誤り訂正は、典型的には、セクタごとに実行される。従って、各セクタは、各自のＥＣＣコードの集合を有することがある。一実施形態では、セクタは、ホストシステムとの間の通信の望ましいデータの単位であるため、この誤り訂正は便利で有用である。
【００３７】
成功したプログラミング処理（検証を含む）の最後に、メモリセルの閾値電圧は、必要に応じて、プログラムされたメモリセルについての１つ以上の閾値電圧の分布の範囲内、または、消去されたメモリセルについての１つの閾値電圧の分布の範囲内である必要がある。図６Ａは、各メモリセルがデータの３ビットを記憶する場合の、メモリセルアレイについての閾値電圧分布の例を示している。しかしながら他の実施形態では、１メモリセル当り、データの３ビットよりも多いまたは少ないビットを用いることができる（例：１メモリセル当りデータの３ビット）。
【００３８】
図６Ａの例では、各々のメモリセルは３ビットのデータを保持する。よって、８つの有効なデータ状態Ｓ０、Ｓ１、Ｓ２、Ｓ３、Ｓ４、Ｓ５、Ｓ６、Ｓ７が存在する。一実施形態では、データ状態Ｓ０は０ボルトより低く、データ状態Ｓ１−Ｓ７は０ボルトより高い。他の実施形態として、８つのデータ状態の全てが０ボルトより高い場合や、その他のアレンジが可能である。一実施形態では、Ｓ０の閾値電圧分布がＳ１−Ｓ７の分布よりも広い。一実施形態では、Ｓ０は消去されたメモリセルのためのものである。データはＳ０からＳ１−Ｓ７へプログラムされる。
【００３９】
各々のデータ状態は、メモリセルに記憶された３データビットの固有の値に対応する。一実施形態では、Ｓ０=１１１，Ｓ１=１１０，Ｓ２=１０１，Ｓ３=１００，Ｓ４=０１１，Ｓ５=０１０，Ｓ６=００１，Ｓ７=０００，である。データ状態Ｓ０−Ｓ７の他のマッピングも使用することができる。メモリセルにプログラムされたデータとセルの閾値電圧レベルの間の特別な関係は、セルに適用されるデータ符号化スキームに依存する。例えば、両方ともその全体を参照することにより本明細書に組み込まれる、米国特許第６，２２２，７６２号、及び、「Tracking Cells For A Memory System,」と題する２００３年７月１３日出願の米国特許出願公表第2004/0255090号は、マルチ状態フラッシュメモリセルの多様なデータ符号化方式を説明する。一実施形態では、フローティングゲートの閾値電圧が誤ってその近傍の閾値電圧分布にシフトした場合に１ビットだけが影響を受けるように、データ値がグレーコード割り当てを使用して閾値電圧範囲に割り当てられる。しかしながら、グレーコードが用いられない実施形態もある。
【００４０】
一実施形態では、１つのメモリセルに記憶されている全てのビットのデータは、同一の論理ページに記憶される。他の実施形態では、１つのメモリセルに記憶されているビットのデータの各々は、異なる論理ページに対応する。従って、データの３ビットを記憶している１つのメモリセルは、第１ページ内のデータ、第２ページ内のデータ、第３ページ内のデータを含んでいる。いくつかの実施形態では、同一のワードラインに接続された全てのメモリセルが、同一の３ページのデータを記憶するとされる。いくつかの実施形態では、１つのワードラインに接続されたメモリセルが異なるセットのページに分類される（例えば、偶数および奇数ビットラインや、他の配列によって）。
【００４１】
いくつかの装置では、メモリセルが消去されて状態Ｓ０となる。メモリセルは、状態Ｓ０から状態Ｓ１−Ｓ７の何れかへプログラムされてもよい。一実施形態では、フルシーケンスプログラミングとして知られている、消去された状態Ｓ０からプログラムされた状態Ｓ１−Ｓ７の何れかに直接にプログラムする方法を行うことができる。例えば、メモリセル群内の大多数のメモリセルが消去状態Ｓ０になるように、プログラム対象のメモリセル群が最初に消去されてもよい。あるメモリセルが状態Ｓ０から状態Ｓ１へプログラムされる間に、他のメモリセルが状態Ｓ０から状態Ｓ２へ、状態Ｓ０から状態Ｓ３へ、状態Ｓ０から状態Ｓ４へ、状態Ｓ０から状態Ｓ５へ、状態Ｓ０から状態Ｓ６へ、状態Ｓ０から状態Ｓ７へ、プログラムされる。フルシーケンスプログラミングは、図６Ａの７つの曲線状の矢印を用いて図示されている。
【００４２】
図６Ａは、検証目標レベルＶｖ１、Ｖｖ２、Ｖｖ３、Ｖｖ４、Ｖｖ５、Ｖｖ６およびＶｖ７の集合を示している。これらの検証レベルは、プログラミング処理の間に、比較レベルとして用いられる。例えば、メモリセルを状態Ｓ１にプログラミングする場合には、システムは、メモリセルの閾値電圧がＶｖ１に到達したかをチェックすることができる。あるメモリセルの閾値電圧がＶｖ１に到達していない場合には、その閾値電圧がＶｖ１以上になるまで、そのメモリセルに対してプログラミングを続行することができる。あるメモリセルの閾値電圧がＶｖ１に到達した場合には、そのメモリセルに対するプログラミングを終了することができる。目標検証レベルＶｖ２は、状態Ｓ２にプログラムされるメモリセルに対して用いられる。目標検証レベルＶｖ３は、状態Ｓ３にプログラムされるメモリセルに対して用いられる。目標検証レベルＶｖ４は、状態Ｓ４にプログラムされるメモリセルに対して用いられる。目標検証レベルＶｖ５は、状態Ｓ５にプログラムされるメモリセルに対して用いられる。目標検証レベルＶｖ６は、状態Ｓ６にプログラムされるメモリセルに対して用いられる。目標検証レベルＶｖ７は、状態Ｓ７にプログラムされるメモリセルに対して用いられる。
【００４３】
図６Ａは、読み出し比較レベルＶｒ１、Ｖｒ２、Ｖｒ３、Ｖｒ４、Ｖｒ５、Ｖｒ６およびＶｒ７の集合も示している。これらの読み出し比較レベルは、読み出し処理の間に、比較レベルとして用いられる。メモリセルの制御ゲートに独立して印加される読み出し比較レベルＶｒ１、Ｖｒ２、Ｖｒ３、Ｖｒ４、Ｖｒ５、Ｖｒ６およびＶｒ７に応じて、メモリセルがターンオンするかオフのままであるかをテストすることによって、システムは、メモリセルが何れの状態をデータのために記憶しているかを判断することができる。
【００４４】
一般的に、検証作業および読み出し作業の間では、選択ワードラインはある電圧に接続される。その電圧のレベルは、読み出し作業（例えば、図６Ａの読出し比較レベルＶｒ１、Ｖｒ２、Ｖｒ３、Ｖｒ４、Ｖｒ５、Ｖｒ６、Ｖｒ７を参照）、または、検証作業（例えば、図６Ａの検証目標レベルＶｖ１、Ｖｖ２、Ｖｖ３、Ｖｖ４、Ｖｖ５、Ｖｖ６、Ｖｖ７を参照）の各々に対して規定されており、関連するメモリセルの閾値電圧がそれらのレベルに到達したか否かが判断される。ワードライン電圧を印加した後に、ワードラインに印加された電圧に応じてメモリセルがターンオンしたか否かを判断するために、メモリセルの導電電流が測定される。
【００４５】
読み出しまたは検証作業の間にメモリセルの導電電流を測定する、多くの方法が存在する。一例では、メモリセルの導電電流は、センスアンプ内の専用のキャパシタが放電または充電される速度によって、測定される。他の例では、選択メモリセルの導電電流は、メモリセルを備えているＮＡＮＤストリングが、対応するビットラインを放電することを許容する（または放電することを許容しない）。しばらくすると、ビットラインが放電されたか否かを見るために、ビットライン上の電圧が測定される。ここで記述した技術は、検証／読み出しのために当技術分野で周知の他の方法に対して、用いることができることに留意されたい。検証／読み出しについての更なる情報は、その全体を参照することにより本明細書に組み込まれる、次の特許文献に記載されている。（１）米国特許出願公開公報第２００４／００５７２８７号、（２）米国特許出願公開公報第２００４／０１０９３５７号、（３）米国特許出願公開公報第２００５／０１６９０８２号、および（４）米国特許出願公開公報第２００６／０２２１６９２号。上述した読み出しおよび検証処理は、当技術分野で周知の技術によって実行される。従って、説明した詳細の大部分は、当業者によって変更することができる。他の周知の読み出しおよび検証技術を用いることもできる。
【００４６】
いくつかの実施形態では、制御ゲートに印加されるプログラム電圧は、特定のステップサイズ（例えば、０．２Ｖ、０．３Ｖ、０．４Ｖ又はその他）毎に増加する一連のパルスを含む。パルス間において、あるメモリシステムが、メモリセルがその目標閾値電圧範囲に達したか否かを検証してもよい。例えば、図６Ｂは、共通のワードラインに接続される複数のメモリセルの制御ゲートに印加される信号の一部を示す。図６Ｂは、プログラミングパルス間に検証パルスの集合を有するプログラミングパルス５２６、５２８及び５３０を示す。一実施形態のフルシーケンスプログラミングを実行する場合、プログラミングパルス間の検証処理は、各閾値電圧範囲（データ状態）Ｓ１−Ｓ７に対してテストをしてもよい。したがって、図６Ｂは、検証目標レベルＶｖ１、Ｖｖ２、Ｖｖ３、Ｖｖ４、Ｖｖ５、Ｖｖ６、Ｖｖ７に対応した大きさを有する７つの検証パルスを示す。検証作業が必要でなく又は過剰なので、１つ以上の検証作業をスキップ（したがって、１つ以上の検証パルスをスキップ）することができる実施形態もある。例えば、図６Ａに応じてプログラムされるメモリセルがＶｖ２に達していない場合、Ｖｖ７で検証する理由がない。１つ以上の状態の検証をスキップするインテリジェント検証スキームに関する更なる情報は、その全体を参照することにより本明細書に組み込まれる、以下の特許書類で見られる。米国特許第７，０７３，１０３号；米国特許第７，２２２，６１４号；米国特許第７，３１０，２５５号；米国特許第７，３０１，８１７号；米国特許出願第２００４／０１０９３６２号；及び米国特許出願第２００９／０１４７５７３号。
【００４７】
図６Ａは、同一のワードラインに接続される全てのメモリセルが同時にプログラムされる１つのフェーズを含むプログラミング処理を示す。図７は、複数フェーズプログラミングのアプローチを示す。この実施形態では、プログラミング処理は３つのフェーズを含む。プログラミングに先立って、メモリセルは消去され、共通ワードラインに接続される全てのメモリセルは、図７Ａに示される消去閾値電圧範囲Ｅに存在する。プログラミングの第１フェーズにおいて、データ状態Ｓ４、Ｓ５、Ｓ６、Ｓ７が目標（これらのメモリセルに保存されるデータによる）であるこれらのメモリセルが中間状態ＩＭにプログラムされる。データ状態Ｓ０、Ｓ１、Ｓ２、Ｓ３が目標であるメモリセルは、消去閾値電圧範囲Ｅに留まる。第１フェーズは、図７Ｂにおいて図示される。中間状態ＩＭにプログラムされたメモリセルは、目標閾値電圧ＶｖＩＭにプログラムされる。
【００４８】
図７Ａ−Ｅのプログラム処理の第２フェーズでは、消去閾値電圧範囲Ｅにあるメモリセルがそれらの目標データ状態にプログラムされる。例えば、データ状態Ｓ３にプログラムされるメモリセルは消去閾値電圧Ｅからデータ状態Ｓ３にプログラムされ、データ状態Ｓ２にプログラムされるメモリセルは消去閾値電圧Ｅからデータ状態Ｓ２にプログラムされ、データ状態Ｓ１にプログラムされるメモリセルは消去閾値電圧Ｅからデータ状態Ｓ１にプログラムされ、データ状態Ｓ０にプログラムされるメモリセルはプログラム処理の第２フェーズにおいてプログラムされない。これにより、消去閾値電圧範囲Ｅがデータ状態Ｓ０になる。また、第２フェーズにおいて、メモリセルは中間状態ＩＭから様々なデータ状態Ｓ４−Ｓ７にプログラムされる。例えば、データ状態Ｓ７にプログラムされるメモリセルは中間状態ＩＭからデータ状態Ｓ７にプログラムされ、データ状態Ｓ６を目標とするメモリセルは中間状態ＩＭからデータ状態Ｓ６にプログラムされ、データ状態Ｓ５にプログラムされるメモリセルは中間状態ＩＭからデータ状態Ｓ５にプログラムされ、データ状態Ｓ４にプログラムされるメモリセルは中間状態ＩＭからデータ状態Ｓ４にプログラムされる。プログラミングの第２フェーズは図７Ｃに図示される。
【００４９】
図７Ｃに見られるように、プログラミングの第２フェーズの最後では、データ状態Ｓ１−Ｓ７は隣のデータ状態とオーバーラップする。例えば、データ状態Ｓ１はデータ状態Ｓ２にオーバーラップし、データ状態Ｓ２はデータ状態Ｓ１及びＳ３にオーバーラップし、データ状態Ｓ３はデータ状態Ｓ２及びＳ４にオーバーラップし、データ状態Ｓ４はデータ状態Ｓ３及びＳ５にオーバーラップし、データ状態Ｓ５がデータ状態Ｓ４及びＳ６にオーバーラップし、データ状態Ｓ６がデータ状態Ｓ５及びＳ７にオーバーラップする。
【００５０】
プログラミングの第３フェーズでは、データ状態Ｓ１−Ｓ７の各々が絞られ、隣りの状態とオーバーラップしないこととなる。これは、図７Ｄに図示される。プログラミング処理の３つのフェーズの最終結果が図７Ｅに示されており、データ状態Ｓ０−Ｓ７が示されている。データ状態Ｓ０がデータ状態Ｓ１−Ｓ７よりも広い実施形態であってもよい。
【００５１】
データ状態Ｓ４にプログラムされるメモリセルが第２フェーズでプログラムされず、中間状態ＩＭに留まる実施形態であってもよい。第３プログラミングフェーズにおいて、メモリセルはＩＭからＳ４にプログラムされる。他の実施形態では、他の状態を目的とするメモリセルが第２フェーズにおいてＩＭ又はＥに留まってもよい。
【００５２】
いくつかのプログラミング処理では、租／密プログラミング技術が行われてもよい。例えば、目標条件（例えばＶｖ２）にプログラムされているメモリセルは、最初に租条件（例えばＶｖ２よりも小さい電圧）に高速にプログラムされる。租条件は、目標条件よりも僅かに小さい閾値電圧条件に対応する。次に、メモリセルは、より低速な方法（及び、より正確な方法）でプログラムされる。
【００５３】
図８（Ａ）−（Ｃ）と図９（Ａ）−（Ｃ）は、租／密プログラミング技法の一例の詳細を示す図である。図８（Ａ）と９（Ａ）は、制御ゲートに印加されるプログラミングパルスＶｐｇｍを示している。図８（Ｂ）と９（Ｂ）は、プログラムされるメモリセルのビットライン電圧を示している。図８（Ｃ）と９（Ｃ）は、プログラムされるメモリセルの閾値電圧を示している。この例は、図中Ｖｖｅｒ１、Ｖｖｅｒ２で示される２つの検証レベルを使用している。最終的な目標レベル（例えば、図６Ａの検証レベルＶｖ１、Ｖｖ２、Ｖｖ３、Ｖｖ４、Ｖｖ５、Ｖｖ６、Ｖｖ７）はＶｖｅｒ１である。メモリセルの閾値電圧がＶｖｅｒ１に到達すると、そのメモリセルに対応するビットラインに禁止電圧を印加することによって、そのメモリセルはそれ以上のプログラミングが禁止される。例えば、ビットライン電圧はＶｉｎｈｉｂｉｔに引き上げられる（図８（Ｂ）、９（Ｂ）を参照）。一実施形態では、ＶｉｎｈｉｂｉｔはＶｄｄである。しかしながら、メモリセルが目標値Ｖｖｅｒ１に近い閾値電圧に達すると（しかし目標値よりは低い）、ビットラインに所定の大きさ、典型的には０．３Ｖから０．８Ｖのオーダーのバイアス電圧が印加され、その後のプログラミングパルスの間のそのメモリセルの閾値電圧シフトは遅くなる。次のいくつかのプログラミングパルスの間は閾値電圧シフトの速度が遅くなるので、最終的な閾値電圧分布は他の場合よりも狭くすることができる。この方法を実装する場合、Ｖｖｅｒ１よりも低い第２検証レベルが用いられる。この第２検証レベルは、Ｖｖｅｒ２として示されている。メモリセルの閾値電圧がＶｖｅｒ２よりも大きく、しかしまだＶｖｅｒ１より小さい場合、ビットラインバイアスＶｓ（図９（Ｂ））を印加することによって、その後のプログラミングパルスにおけるメモリセルの閾値電圧シフトが小さくなる。この場合、各状態に対して２つの検証作業が必要であることに留意されたい。各状態に対するＶｖｅｒ１に対応する検証作業が一つであり、各状態に対するＶｖｅｒ２に対応する検証作業が一つである。このことは、メモリセルをプログラムするために必要とされる総時間を増加させる。しかしながら、このプロセスをスピードアップするために、より大きいΔＶｐｇｍステップサイズを用いることができる。
【００５４】
図８（Ａ）、８（Ｂ）、８（Ｃ）は、一つのプログラミングパルスで閾値電圧がＶｖｅｒ２とＶｖｅｒ１を超えて移動するメモリセルの振る舞いを示している。例えば、図８（Ｃ）では、ｔ２とｔ３の間でＶｖｅｒ２とＶｖｅｒ１を通過する閾値電圧が示されている。従って、ｔ３以前は、メモリセルは租段階にある。ｔ３の後、メモリセルは禁止モードとなる。
【００５５】
図９（Ａ）、９（Ｂ）、９（Ｃ）は、租／密プログラミング段階の双方に入るメモリセルを示している。メモリセルの閾値電圧は、時刻ｔ２と時刻ｔ３の間にＶｖｅｒ２を超える。ｔ３以前はメモリセルが租段階にある。ｔ３の後、ビットライン電圧はＶｓに引き上げられる。従って、メモリセルは密段階に入る。ｔ３とｔ４の間で、メモリセルの閾値電圧は、Ｖｖｅｒ１を超える。そのため、ビットライン電圧がＶｉｎｈｉｂｉｔに引き上げられ、メモリセルはそれ以降のプログラミングが禁止される。
【００５６】
いくつかの実施形態では、租／密プログラミング技術が図７Ａ−Ｅの複数フェーズのプログラミング処理の第３フェーズで用いられるが、最初の２つのフェーズでは用いられない。他の実施形態では、租／密プログラミング技術が全てのフェーズで用いられる。租／密プログラミング技術がまた、フルシーケンスプログラミングで用いられることができる。
【００５７】
図１０は、不揮発性記憶システムを動作させるための処理を示すフローチャートである。一実施形態では、図１０の処理は、メモリセルのブロックをプログラムするために用いられる。図１０の処理の一の実装形態では、メモリセルの劣化を均一に維持するために、メモリセルには事前プログラムが行われる（ステップ５５０）。一実施形態では、メモリセルは、最高データ状態や、ランダムパターンや、その他のパターンに事前プログラムされる。いくつかの実装形態では、事前プログラムを行う必要がない。
【００５８】
ステップ５５２では、プログラムに先立って、メモリセルが（ブロック単位又は他の単位で）消去される。一実施形態では、ソースとビットラインをフローティング状態にしておきながら、選択されたブロックのワードラインを接地し、十分な時間の間ｐウェルを消去電圧（例えば２０ボルト）にまで上昇させることによってメモリセルが消去される。消去対象として選択されなかったブロックでは、ワードラインがフロートされる。容量結合のため、非選択ワードライン、ビットライン、選択ライン、及び、共通ソースラインもまた、消去電圧のかなりの割合の電圧まで上昇する。これにより、消去対象に選択されなかったブロックの消去が妨げられる。消去対象として選択されたブロック内では、選択されたメモリセルのトンネル酸化物層に強力な電場が加わり、主としてファウラ−ノルドハイムトンネル効果によってフローティングゲートの電子が基板側に放出されて、選択されたメモリセルのデータが消去される。電子がフローティングゲートからｐ−ウェル領域に移動するにつれて、選択されたセルの閾値電圧が低下する。消去は、メモリアレイ全体、別々のブロック、又はセルの他の単位で行うことができる。一実施形態では、メモリセルが消去された後、全ての消去済みのメモリセルが状態Ｓ０となる。消去処理の一実施態様は、幾つかの消去パルスをｐウェルに印加するステップと、ＮＡＮＤストリングが適切に消去されたか否かを、消去パルスと消去パルスの間に検証するステップを備えている。
【００５９】
ステップ５５４では、消去されたメモリセルの消去閾値電圧の分布を狭めるために、ソフトプログラムが（随意に）実行される。いくつかのメモリセルは、消去処理の結果として必要以上に低い消去状態にあってよい。ソフトプログラムがプログラミングパルスを印加することにより、より深く消去されたメモリセルの閾値電圧を消去閾値分布（例えば、Ｓ０）の方へ移動させることができる。
【００６０】
ステップ５５６では、ブロックのメモリセルがプログラムされる。ホストからのプログラムの要求に応答して、又は、内部処理に応答して、プログラミングが実行されてもよい。プログラミングの後、ブロックのメモリセルは読み出しが可能とされる（ステップ５５８）。当技術分野で周知の、多くの異なる読み出し処理を、データの読み出しに用いることができる。一部の実施形態では、読み出し処理は、誤りを訂正するためにＥＣＣを用いるステップを備える。読み出されたデータは、読み出し処理が要求されたホストへ出力される。ＥＣＣ処理は、ステートマシン、コントローラ、または他の装置で実施することができる。
【００６１】
図１０は、読み出し無し又は独立して消去−プログラムサイクルが何度も発生することができること、プログラミング無し又は独立して読出し処理が何度も発生することができること、プログラミング後に読出し処理が何度も発生することができること、を示している。図１０の処理は、上述した様々な回路を使用するステートマシンの指示で、実行することができる。他の実施形態では、図１０の処理は、上述した様々な回路を使用するコントローラの指示で、実行することができる。
【００６２】
図１１は、共通ワードラインに接続されているメモリセルを１つ以上の目標状態（例えば、データ状態または閾値電圧範囲）にプログラムすることを実行する処理の一実施形態を表すフローチャートである。図１１の処理は、図１０のステップ５５６において１回または複数回実施され得る。例えば、図１１の処理は、メモリセルを、状態Ｓ０から、直接に状態Ｓ１−Ｓ７にプログラム（例えば、フルシーケンスプログラミング）するために使用することができる。あるいは、図１１の処理は、図７Ａ−Ｅの処理のフェーズの１つまたは各々を実行するために用いることができる。例えば、図７Ａの処理を実行する場合、一部のメモリセルを状態Ｅから状態ＩＭへプログラミングするステップを備える第１フェーズを実行するために、図１１の処理が用いられる。図１１の処理は、一部のメモリセルを状態Ｅから状態Ｓ１−Ｓ３へプログラミングし、状態ＩＭから状態Ｓ４−Ｓ７へプログラミングするステップを備える第２フェーズを実行するために、図１１の処理を再度用いることができる。図１１の処理は、第３フェーズで状態Ｓ１−Ｓ７を調整するために再度用いることができる。図１１の処理はまた、他の複数フェーズのプログラミング処理とともに用いることができる。
【００６３】
通常、プログラム作業において制御ゲートに印加されるプログラム電圧は、一連のパルスとして印加される。プログラムパルスの合間には、検証を可能とするための複数の検証パルスが存在する。多くの実装形態では、一連のパルスの各々の大きさが、所定のステップサイズで増加する。図１１のステップ５７０では、プログラム電圧（Ｖｐｇｍ）が初期値（例えば、１２−１６ボルトまでの電圧、又は、その他の適切な値）に初期化されるとともに、ステートマシン２２２によって維持されるプログラムカウンタＰＣが１に初期化される。ステップ５７２において、プログラム信号Ｖｐｇｍのプログラムパルスが、選択ワードライン（プログラム用に選択されたワードライン）に印加される。一実施形態では、プログラムされるメモリセルのグループは、全て同一のワードライン（選択ワードライン）に接続されている。非選択ワードラインは、従来知られる昇圧方法を実行することで、１以上の昇圧電圧（例えば、９ボルトまでの電圧）を受ける。メモリセルがプログラムされる場合には、対応するビットラインが接地される。一方、メモリセルが現在の閾値電圧を維持する場合には、プログラムを禁止するために、対応するビットラインがＶｄｄに接続される。ステップ５７２では、選択ワードラインに接続されている全てのメモリセルが同時にプログラムされるように、選択ワードラインに接続されている全てのメモリセルにプログラムパルスが一斉に印加される。すなわち、全てのメモリセルは、同一時間（または重複した時間）にプログラムされる。このようにして、選択ワードラインに接続されている全てのメモリセルは、プログラム対象から除外されない限り、一斉に閾値電圧を変更することができる。
【００６４】
ステップ５７４では、適切な一組の目標レベルを使用して、選択メモリセルのデータ状態が検証される。ステップ５７４の更なる詳細は、図１２Ａ、１３、１４、１５Ａ及び１６Ａに関して以下に説明される。
【００６５】
ステップ５７６において、全てのメモリセルが目標閾値電圧に到達したか否かが決定される。到達している場合には、全ての選択メモリセルがプログラムされているとともに目標状態が検証されているため、プログラム処理が完了し成功している。ステップ５７８において「合格」ステータスが通知される。ステップ５７６において、全てのメモリセルが目標閾値電圧に到達していないと判断された場合、プログラム処理はステップ５８０へ進む。
【００６６】
ステップ５８０において、システムは、まだ各自の目標閾値電圧分布に到達していないメモリセルの数をカウントする。すなわち、システムは、検証処理に不合格となったセルの数をカウントする。このカウントするステップは、ステートマシン、コントローラ、または他のロジックによって行うことができる。一実施態様では、センスブロック３００の各々（図３参照）は、各セルの状態（合格／不合格）を記憶することができる。これらの値は、デジタルカウンタを用いてカウントすることができる。前述した通り、複数のセンスブロックの多くは、共にワイヤードＯＲ（配線論理和）接続された出力信号を有している。従って、１本のラインをチェックすることで、セルの大きなグループの何れのセルも検証に不合格になっていないことを判明させることができる。一緒にワイヤードＯＲ接続される複数のラインを適切に編成することによって（例えば、２分木（a binary tree）のような構造）、不合格となったセルの数を測定するために二分探索方法（a binary search method）を用いることができる。このようにして、少数のセルが不合格になった場合には、カウントするステップは迅速に完了する。多数のセルが不合格になった場合には、カウントするステップには長時間かかる。更なる情報は、参照することにより本明細書に組み込まれる、米国特許公報２００８／０１２６６７６号に記載されている。他の方法として、センスアンプの各々が、関連するセルが不合格になった場合にアナログ電圧または電流を出力することができる。そして、アナログ電圧または電流の加算回路を、不合格となったセルの数をカウントするために用いることができる。
【００６７】
一実施形態では、直近の検証ステップで不合格となり、現在プログラムされるメモリセルの総数を反映する、１つのカウント総計値が存在する。他の実施形態では、データ状態の各々について、別個のカウント値が保持される。
【００６８】
ステップ５８２では、ステップ５８０からのカウントが、予め定められた限界値以下であるか否かが判断される。一実施形態では、予め定められた限界値は、メモリセルのページに対する読み出し処理の間にＥＣＣによって訂正された、ビットの数である。不合格セルの数が予め定められた限界値以下である場合には、プログラミング処理を終了することができ、ステップ５７８で「合格」の状態が通知される。この状況では、読み出し処理においてＥＣＣを用いて、完全にプログラムされていない残りの僅かなメモリセルを訂正することができるように、十分な数のメモリセルが正常にプログラムされている。ステップ５８０が各セクター、各目標データ状態又は他のユニットにおいて不合格のセルの数を計測し、ステップ５８２においてそれらの計測値が個々に又は集合して閾値と比較される実施形態もある。
【００６９】
他の実施形態では、予め定められた限界値は、将来のエラーを許容するために、読み出し処理の間にＥＣＣによって訂正できるビットの数よりも小さくできる。１ページの全てのメモリセルよりも少ないメモリセルにプログラミングする場合、または、１つのデータ状態（または全ての状態よりも少ない状態）に対してカウントを比較する場合、予め定められた限界値は、メモリセルのページに対する読み出し処理の間にＥＣＣによって訂正できるビットの数の一部（比例配分（pro-rata）または非比例配分（not pro-rata））にすることができる。一部の実施形態では、限界値は予め定められない。代わりに、ページに対して既にカウントされた誤りの数、プログラム−消去サイクルの実行数、温度、または他の基準に基づいて、限界値は変化する。
【００７０】
不合格のセルの数が予め定められた限界値よりも少なくない場合には、プログラミング処理はステップ５８４へ進み、プログラムカウンタＰＣがプログラム限度値（ＰＬ）に対してチェックされる。プログラム限度値の一例は２０である。しかしながら、これ以外の値の使用も可能である。プログラムカウンタＰＣがプログラム限度値ＰＬよりも小さくない場合には、プログラム処理は失敗したと見なされ、ステップ５８８において不合格の状態が通知される。プログラムカウンタＰＣがプログラム限度値ＰＬよりも小さい場合には、処理はステップ５８６へ進む。ステップ５８６において、プログラムカウンタＰＣが１増加され、プログラム電圧Ｖｐｇｍが次の大きさに増大される。例えば、次のパルスは、前のパルスよりも１ステップサイズ（例えば、０．１−０．４ボルトの１ステップサイズ）だけ大きくても良い。ステップ５８６の後、処理はステップ５７２へ戻り、別のプログラムパルスが選択ワードラインに印加される。
【００７１】
図１１のステップ５７４は、プログラムされているメモリセルに対する検証処理を行うこと、及び、適切なメモリセルをさらにプログラムすることから除外すること、を含む。プログラミング中のメモリセルを検証する従来の方法は様々であり、それらは適切なものである。図１２Ａは、図７Ａ−７Ｅの方法に応じてプログラムする工程を含む実施形態のプログラミング処理を第１フェーズにおいて、検証処理（例えば、ステップ５７４）を実行するための処理の１つの実施形態を示すフローチャートである。ステップ６００では、プログラムされている様々なメモリセルがＶｖＩＭ（図７Ｂ参照）以上の閾値電圧を有するか否かを決定するためにテストが行われる。閾値電圧分布Ｅに留まっているメモリセルは検証される必要がない。中間閾値電圧分布ＩＭにプログラムされているメモリセルは、閾値電圧がＶｖＩＭに達したか否かを決定することによって検証される。一実施形態では、プログラムされているメモリセルの制御ゲートに接続されているワードラインはＶｖＩＭの電圧を受け取り、システムはメモリセルがターンオンするか否か（又は、導通するか否か）をテストする。テスト結果はステップ６０２で決定される。例えば、システムは、制御ゲートに印加されるＶｖＩＭに応答してターンオン又は導通するメモリセルがどれなのかを決定する。ＶｖＩＭに達した閾値電圧を有していると決定されたメモリセル（状態Ｓ４、Ｓ５、Ｓ６、Ｓ７にプログラムされているメモリセル）は、ステップ６０４で更なるプログラミングから外される。上述したように、プログラムから外す工程の一例は、ビットラインをＶｉｎｈｉｂｉｔ（例えばＶＤＤ）に昇圧することを含む。ステップ６０６では、特定の実装に合致するように、検証結果がステートマシン又はコントローラに通知される。
【００７２】
図１２Ｂは、図１１のステップ５７２の連続反復で印加されるプログラミングパルス６３０、６３２、６３４のサンプルを示す。一組のプログラミングパルス間に単一検証パルスが存在する。検証パルスの大きさは、図１２Ａの処理用のＶｖＩＭである。連続プログラミングパルス間に実行される検証作業が１つのみなので（例えば、ＶｖＩＭの検証作業）、検証作業はかなり速い。
【００７３】
図１３は、図７Ａ−７Ｅの３フェーズプログラミング処理の第３フェーズにおいて、メモリセルの検証を実施するとともにメモリセルを除外する一実施形態を示すフローチャートである。すなわち、図１３の処理は、図７Ｄで示されるプログラミング処理を実行するときに、ステップ５７４を行う。この場合、状態Ｓ１にプログラムされているメモリセルが、データ状態のうちで最も低い電圧Ｖｖ１で検証される。状態Ｓ２にプログラムされているメモリセルはＶｖ２で検証され、状態Ｓ３にプログラムされているメモリセルはＶｖ３で検証され、状態Ｓ４にプログラムされているメモリセルはＶｖ４で検証され、状態Ｓ５にプログラムされているメモリセルはＶｖ５で検証され、状態Ｓ６にプログラムされているメモリセルはＶｖ６で検証され、状態Ｓ７にプログラムされているメモリセルはＶｖ７で検証される。
【００７４】
図１３のステップ７００において、システムは、メモリセルがＶｖ１よりも大きな閾値電圧を有するか否かをテストする。ステップ７０２において、システムは、データ状態Ｓ１にプログラムされている各メモリセルのテスト結果を決定する。Ｖｖ１よりも大きな閾値電圧を有する状態Ｓ１にプログラムされたメモリセルは、ステップ７０４で更なるプログラムから除外される。
【００７５】
ステップ７０６において、システムは、メモリセルがＶｖ２よりも大きな閾値電圧を有するか否かをテストする。ステップ７０８において、ステップ７０６のテスト結果が決定される。Ｖｖ２よりも大きな閾値電圧を有する状態Ｓ２にプログラムされたメモリセルは、ステップ７１０で更なるプログラミングから除外される。
【００７６】
ステップ７１２において、システムは、メモリセルがＶｖ３よりも大きな閾値電圧を有するか否かをテストする。ステップ７１４において、ステップ７１２のテスト結果が決定される。Ｖｖ３よりも大きな閾値電圧を有する状態Ｓ３にプログラムされたメモリセルは、ステップ７１６で更なるプログラミングから除外される。
【００７７】
ステップ７１８において、システムは、メモリセルがＶｖ４よりも大きな閾値電圧を有するか否かをテストする。ステップ７２０において、ステップ７１８のテスト結果が決定される。Ｖｖ４よりも大きな閾値電圧を有する状態Ｓ４にプログラムされたメモリセルは、ステップ７２２で更なるプログラミングから除外される。
【００７８】
ステップ７２４において、システムは、メモリセルがＶｖ５よりも大きな閾値電圧を有するか否かをテストする。ステップ７２６において、ステップ７２４のテスト結果が決定される。Ｖｖ５よりも大きな閾値電圧を有する状態Ｓ５にプログラムされたメモリセルは、ステップ７２８で更なるプログラミングから除外される。
【００７９】
ステップ７３０において、システムは、メモリセルがＶｖ６よりも大きな閾値電圧を有するか否かをテストする。ステップ７３２において、ステップ７３０のテスト結果が決定される。Ｖｖ６よりも大きな閾値電圧を有する状態Ｓ６にプログラムされたメモリセルは、ステップ７２４で更なるプログラミングから除外される。
【００８０】
ステップ７３６において、システムは、メモリセルがＶｖ７よりも大きな閾値電圧を有するか否かをテストする。ステップ７３８において、ステップ７３６のテスト結果が決定される。Ｖｖ７よりも大きな閾値電圧を有する状態Ｓ７にプログラムされたメモリセルは、ステップ７４０で更なるプログラミングから除外される。ステップ７４２において、特定の実装の通りに、図１３の検証処理の結果がステートマシン、コントローラ又は他の処理装置に通知される。
【００８１】
図１３の処理に関連して印加されるプログラミングパルス及び検証パルスの波形は、図６Ｂで示される波形と同一である。確認できるように、７つの検証処理が行われるので、７つの検証パルスが印加される。多くの検証処理が行われるので、プログラミングパルスが低速化する。プログラミング処理を高速化させることは有用である。
【００８２】
プログラミング処理を高速化する１つの提案は、実行される検証処理の数を減らすことである。本願で開示される我々の提案は、検証処理がデータ状態の第１集合に対しては実施されるが、データ状態の第２集合に対しては実施されない。データ状態の第２集合に対しては、検証処理の実施に代えて、システムが特定データ状態の各々のうちの高速ビットの数を決定することができる。高速ビットの数が閾値よりも大きい場合、その特定データ状態にプログラムされている全てのメモリセルを除外することで、その特定データ状態にプログラムされている全てのメモリセルのプログラミングを停止する。一実施形態では、高速ビットをテストすることは、（データ状態の第２集合にプログラムされているメモリセルの）閾値電圧をデータ状態の第１集合の検証目標レベルと比較することによって実施される。この方法では、データ状態の第２集合に対して追加の処理が行われない。さらに、データ状態の第２集合の高速ビットであるメモリセルの数を計測することは、その後のプログラミングパルス中に実施することができる。
【００８３】
図１４は、前述の段落で説明した検証処理の高速化の技術を用いてステップ５７４の検証と除外を実行する処理の一例を示すフローチャートである。一実施形態では、図１４の処理は、図７Ａ−７Ｅの３フェーズのプログラミング処理のうちの第２フェーズのための図１１のステップ５７４を実行するために用いられる。すなわち、図７Ｃの処理を実行する場合、図１４の方法がステップ５７４の検証と除外を実行するために用いられる。図１４の処理は、３フェーズのプログラミング処理の第３フェーズにおいてステップ５７４の検証と除外の処理を行うために用いられてもよい。さらに、図１４の処理は、図６Ａのフルシーケンスプログラミング、他の複数フェーズプログラミング処理、及び他のプログラミング処理とともに用いられてもよい。
【００８４】
図１４のステップ７７０では、データ状態の第１集合にプログラムされているメモリセルは、それらの個々の目標に達したか否かを見るためにテストされる。上記したように、データ状態（例えばＳ１−Ｓ７）は、第１集合と第２集合に分割される。データ状態の第１集合にプログラムされているメモリセルは、上記したように検証される。例えば、ステップ７７０では、データ状態の第１集合にプログラムされているメモリセルは、閾値電圧がそれらの個々の検証目標レベルに達したか否かを決定するためにテストされる。一例では、データ状態の第１集合は、データ状態Ｓ２、Ｓ４、Ｓ６、Ｓ７を含んでおり、データ状態の第２集合は、データ状態Ｓ１、Ｓ３、Ｓ５を含んでいる。他のグループ化を用いてもよい。したがって、ステップ７７０では、図７Ｃの処理を用いてデータ状態Ｓ２、Ｓ４、Ｓ６、Ｓ７にプログラムされているメモリセルは、それらの対象目標に達したか否かを決定するために、比較されるＶｖ２'、Ｖｖ４'、Ｖｖ６'、Ｖｖ７'の閾値電圧を有する。ステップ７７０のテストに基づいて対象目標に達したこれらのメモリセルは、ステップ７７２においてさらにプログラムされることから除外される。
【００８５】
１つ以上のデータ状態の第２集合にプログラムされるメモリセルに対して、システムは、ステップ７７４においてデータ状態の第２集合のうちの各々のデータ状態にプログラムされている高速ビットの数を検出する。一実施形態では、どれが高速ビットなのかを決定するために用いられる１つ以上の比較レベルが存在する。データ状態の第２集合にプログラムされているメモリセルは、ステップ７７４において高速ビットに対する１つ以上の比較レベルと比較される閾値電圧を有する。一例では、高速ビットを決定するための比較レベルは、次に高いデータ状態に対する検証比較レベルである。例えば、データ状態Ｓ１にプログラムされている高速ビットを決定するために、システムは、データ状態Ｓ１にプログラムされているメモリセルの閾値電圧がＶｖ２'よりも大きいか否かをテストする。データ状態Ｓ３にプログラムされている高速ビットを決定するために、システムは、メモリセルの閾値電圧がＶｖ４'よりも大きいか否かをテストする。データ状態Ｓ５にプログラムされている高速ビットを決定するために、システムは、メモリセルの閾値電圧がＶｖ６'よりも大きいか否かをテストする。他の実施形態では、ビットが高速ビットか否かを決定するために異なる比較値が用いられてもよい。例えば、次の状態の目標検証レベルとは異なる比較値が用いられてもよい。典型的には、そのデータ状態の目標検証レベルよりも大きい比較値が用いられる。また、特定状態Ｘの高速ビットのテストが状態Ｘの検証処理とは異なることに留意されたい。ビットが高速ビットか否かを決定するために他の処理が用いられてもよいことに留意されたい。
【００８６】
ステップ７７４の一部として、システムは、各データ状態の高速ビットの数を決定する。データ状態の第２集合のうちの予測される高速ビットの数よりも多いデータ状態に対しては、そのデータ状態にプログラムされているメモリセルの全てが、ステップ７７６において特定のプログラミングパスにおけるさらなるプログラミングから除外される。ステップ７７８では、検証処理の結果がステートマシン、コントローラ、又は他の処理装置に通知される。
【００８７】
図７Ｃに戻ると、様々なデータ状態がどれほどオーバーラップしているのかが見られる。データ状態Ｓ１のうちのデータ状態Ｓ２にオーバーラップする部分が高速ビットを示す。したがって、どのメモリセルがＶｖ２'よりも大きいか否かをテストすることによって、どのメモリセルが高速ビットかが決定される。状態Ｓ１の閾値電圧分布が適切な状態の場合、予め閾値電圧分布を特徴付けることによって、メモリセルの大部分ではどれほどの数の高速ビットがあるのかが予測されるだろう（例えば、どれほどのビットがＶｖ２'よりも大きい閾値電圧を有するのか）。したがって、適切なときにプログラムを停止するために、ステップ７７６で比較される予測数は、装置特性に基づいて決定される。データ状態Ｓ１がデータ状態Ｓ２の同値と比較されるので、たった１つの検証パルス及び検証作業が存在する。これは、検証時に、したがってプログラム時に、かなりの時間を節約する。
【００８８】
一実施形態では、データ状態の第１集合はデータ状態の第２集合にインターリーブされる。例えば、データ状態の第１集合は、データ状態Ｓ２、Ｓ４、Ｓ６を含んでおり、データ状態の第２集合は、データ状態Ｓ１、Ｓ３、Ｓ５を含んでいる。
【００８９】
他の実施形態では、データ状態の第１集合はデータ状態Ｓ２−Ｓ７を含んでおり、データ状態の第２集合はデータ状態Ｓ１のみを含んでいる。したがって、検証処理は、データ状態Ｓ１においてスキップされるのみである。図１５Ａは、図７Ａ−７Ｅのプログラミングの第２フェーズに対してステップ５７４の検証及び除外を実行する処理の一実施形態を示すフローチャートである。この例では、データ状態の第２集合はデータ状態Ｓ１を含むのみである。図１５Ａの処理は、図１４の処理を実行する一例である。ステップ８００では、システムは、メモリセルがＶｖ２'よりも大きい閾値電圧を有するか否かをテストする。ステップ８０２では、システムは、データ状態Ｓ２にプログラムされているメモリセルに対するテスト結果を決定する。ステップ８０４では、Ｖｖ２'よりも大きい閾値電圧を有する状態Ｓ２にプログラムされたメモリセルは、さらなるプログラムから除外される。ステップ８０６では、システムは、状態Ｓ１にプログラムされているメモリセルに対するステップ８０２のテスト結果を決定する。ステップ８０８では、Ｖｖ２'よりも大きい閾値電圧を有する状態Ｓ１にプログラムされているメモリセルの数を計測する。一実施形態では、ステップ８０８は、次のプログラミングパルス中に実行される（このことは、図１５Ａの全てのステップ後に実行されることを意味する）。他の実施形態では、図１２、１３、１４及び１５Ａの全てのステップと同様に、先のプログラミングパルスに応答して実行される。ステップ８０８で計測されたメモリセルの数が数Ｋよりも大きい場合（例えば、ステップ７７６で参照される予測数）、ステップ８１２において、状態Ｓ１にプログラムされている全てのメモリセルが、プログラミング処理のこのフェーズではさらなるプログラムから除外される。ステップ８０６−８１２はステップ７７４−７７６の実行の一例であることに留意されたい。
【００９０】
ステップ８０２及び８０６を実行する順序を逆にし、Ｓ１にプログラムされているメモリセルのテストをＳ２にプログラムされているメモリセルのテストの前、その最中、又はその後に実行することができることに留意されたい。
【００９１】
ステップ８１２が実行された後に、ステップ８１４が実行される。ステップ８１０において、ステップ８０８で計測されたメモリセルの数がＫよりも大きくないことを決定すると、処理はステップ８１２をスキップし、ステップ８１４に行く。ステップ８１０で比較される数Ｋは、いくつかの実施形態で予測される必要がないことに留意されたい。
【００９２】
ステップ８１４では、システムは、メモリセルがＶｖ３'よりも大きい閾値電圧を有するか否かをテストする。ステップ８１６では、システムは、データ状態Ｓ３にプログラムされているメモリセルに対するテスト結果を決定する。ステップ８１８では、Ｖｖ３'よりも大きい閾値電圧を有する状態Ｓ３にプログラムされたメモリセルは、さらなるプログラムから除外される。ステップ８２０では、メモリセルがＶｖ４'よりも大きい閾値電圧を有するか否かをテストする。ステップ８２２では、システムは、データ状態Ｓ４にプログラムされているメモリセルに対するテスト結果を決定する。Ｖｖ４'よりも大きい閾値電圧を有する状態Ｓ４にプログラムされたメモリセルは、ステップ８２４においてさらなるプログラムから除外される。ステップ８２６において、システムは、メモリセルがＶｖ５'よりも大きい閾値電圧を有するか否かを決定するためのテストを行う。ステップ８２８では、システムは、データ状態Ｓ５にプログラムされているメモリセルに対するテスト結果を決定する。ステップ８３０では、データ状態Ｓ５にプログラムされてＶｖ５'よりも大きい閾値電圧を有するメモリセルはさらなるプログラムから除外される。
【００９３】
ステップ８３２では、システムは、どのメモリセルがＶｖ６'よりも大きい閾値電圧を有するか否かを決定するためのテストを行う。ステップ８３４では、システムは、データ状態Ｓ６にプログラムされているメモリセルのテスト結果を決定する。ステップ８３６では、状態Ｓ６にプログラムされてＶｖ６'よりも大きい閾値電圧を有するメモリセルは、さらなるプログラムから除外される。ステップ８３８では、どのメモリセルがＶｖ７'よりも大きい閾値電圧を有するか否かを決定するためのテストを行う。ステップ８４０では、システムは、データ状態Ｓ７にプログラムされているメモリセルに対するテスト結果を決定する。ステップ８４２では、データ状態Ｓ７にプログラムされてＶｖ７'よりも大きい閾値電圧を有するメモリセルはさらなるプログラムから除外される。ステップ８４４では、検証処理の結果は、実装により、ステートマシン、コントローラ、又は他の処理装置に提供される。
【００９４】
図１５Ｂは、図１５Ａの処理中において、３つのプログラムパルスとその３つのプログラムパルスの間で印加される検証パルスの集合を示す。プログラムパルス８６０、８６２、及び８６４の間には、たった６つの検証パルスが存在する。６つの検証パルスの大きさは、Ｖｖ２'、Ｖｖ３'、Ｖｖ４'、Ｖｖ５'、Ｖｖ６'、Ｖｖ７'である。状態Ｓ１の検証はスキップされているので、Ｖｖ１'の検証パルスが存在しない。
【００９５】
図１６Ａは、図７Ａ−７Ｅのプログラミングの第２フェーズに対してステップ５７４の検証及び除外を実行する処理の一実施形態を示すフローチャートである。この例では、データ状態の第２集合はデータ状態Ｓ１、Ｓ３、Ｓ５を含む。図１６Ａの処理は、データ状態Ｓ１、Ｓ３、Ｓ５に対する検証をスキップする。図１６Ａの一実施形態では、データ状態Ｓ１、Ｓ３、Ｓ５に対する検証がスキップされる。したがって、データ状態Ｓ１、Ｓ３、Ｓ５はデータ状態の第２集合に存在し、データ状態の第２集合はデータ状態の第１集合にインターリーブされる。データ状態の第１集合はＳ２、Ｓ４、Ｓ６、Ｓ７を含む。
【００９６】
図１６Ａのステップ９０２では、システムは、メモリセルがＶｖ２'よりも大きい閾値電圧を有するか否かを決定するためのテストを行う。ステップ９０４では、システムは、データ状態Ｓ２にプログラムされているメモリセルに対するテスト結果を決定する。ステップ９０６では、Ｖｖ２'よりも大きい閾値電圧を有する状態Ｓ２にプログラムされたメモリセルは、さらなるプログラムから除外される。ステップ９０８では、システムは、状態Ｓ１にプログラムされているメモリセルに対するステップ９０４のテスト結果を決定する。ステップ９１０では、Ｖｖ２'よりも大きい閾値電圧を有する状態Ｓ１にプログラムされているメモリセルの数を計測する。一実施形態では、ステップ９１０は、次のプログラミングパルス中に実行される（このことは、図１６Ａの全てのステップ後に実行されることを意味する）。ステップ９１２では、システムは、Ｖｖ２'よりも大きい閾値電圧を有するステップ９１０で計測されるメモリセルの数がＫよりも大きいか否かを決定する。そうでなければ、ステップ９１６に進む。Ｖｖ２'よりも大きい閾値電圧を有する状態Ｓ１にプログラムされているメモリセルの数がＫよりも大きい場合、状態Ｓ１にプログラムされているメモリセルの全てがステップ９１４でさらなるプログラムから除外される。ステップ９０８−９１４はステップ７７４−７７６の実行の一例であることに留意されたい。
【００９７】
ステップ９０４及び９０８を実行する順序を逆にし、Ｓ１にプログラムされているメモリセルのテストをＳ２にプログラムされているメモリセルのテストの前、その最中、又はその後に実行することができることに留意されたい。
【００９８】
図１６Ａのステップ９１６では、システムは、メモリセルがＶｖ４'よりも大きい閾値電圧を有するか否かを決定するためのテストを行う。ステップ９１８では、システムは、データ状態Ｓ４にプログラムされているメモリセルに対するテスト結果を決定する。ステップ９２０では、Ｖｖ４'よりも大きい閾値電圧を有する状態Ｓ４にプログラムされたメモリセルは、さらなるプログラムから除外される。ステップ９２２では、システムは、データ状態Ｓ３にプログラムされているメモリセルに対するステップ９１６のテスト結果を決定する。この実施形態では、データ状態Ｓ１、Ｓ３、Ｓ５に対する検証がスキップされる。したがって、データ状態Ｓ３にプログラムされているメモリセルは、データ状態Ｓ４の検証目標レベルＶｖ４'と比較される。ステップ９２４では、Ｖｖ４'よりも大きい閾値電圧を有する状態Ｓ３にプログラムされたメモリセルの数が計測される。その数が数Ｋ（ステップ９２６）よりも大きい場合、データ状態Ｓ３でプログラムされる全てのメモリセルがステップ９２８で除外される。ステップ９２２−９２８はステップ７７４−７７６の実行の一例であることに留意されたい。
【００９９】
ステップ９１８及び９２２を実行する順序を逆にし、Ｓ３にプログラムされているメモリセルのテストをＳ４にプログラムされているメモリセルのテストの前、その最中、又はその後に実行することができることに留意されたい。
【０１００】
ステップ９３０では、閾値電圧がＶｖ６'よりも大きいか否かを決定するために、メモリセルがテストされる。ステップ９３２では、データ状態Ｓ６にプログラムされているメモリセルに対するテスト結果が決定される。ステップ９３４では、Ｖｖ６'よりも大きい閾値電圧を有する状態Ｓ６にプログラムされているメモリセルは、さらなるプログラムから除外される。ステップ９３６では、データ状態Ｓ５にプログラムされているメモリセルの各々に対して、ステップ９３０のテスト結果が決定される。上述したように、データ状態Ｓ５の検証がスキップされることを思い出して欲しい。ステップ９３８では、Ｖｖ６'の閾値電圧を有する状態Ｓ５にプログラムされているメモリセルの数が計測される。その数が数Ｋ（ステップ９４０）よりも大きい場合、データ状態Ｓ５にプログラムされている全てのメモリセルがさらなるプログラムから除外される。計測数が数Ｋよりも大きくない場合、処理がステップ９４２でスキップされ、ステップ９４４に進む。ステップ９３６−９４２はステップ７７４−７７６の実行の一例であることに留意されたい。
【０１０１】
ステップ９３２及び９２６を実行する順序を逆にし、Ｓ５にプログラムされているメモリセルのテストをＳ６にプログラムされているメモリセルのテストの前、その最中、又はその後に実行することができることに留意されたい。
【０１０２】
ステップ９４４では、閾値電圧がＶｖ７'よりも大きいか否かを決定するために、メモリセルがテストされる。ステップ９４６では、データ状態Ｓ７にプログラムされているメモリセルに対するステップ９４４のテスト結果が決定される。ステップ９４８では、Ｖｖ７'よりも大きい閾値電圧を有する状態Ｓ７にプログラムされているメモリセルは、さらなるプログラムから除外される。ステップ９５０では、上述の検証処理の結果がステートマシン、コントローラ、又は他の処理装置に提供される。ステップ９１２、９２６、９４０は同値Ｋを利用する。しかしながら、他の実施形態では、ステップ９１２、９２６、９４０の比較のために異なる値が用いられてもよい。
【０１０３】
図１６Ｂは、３つのプログラミングパルスを示す。連続するプログラミングパルス間に、Ｖｖ２'、Ｖｖ４'、Ｖｖ６'、Ｖｖ７'の大きさを有する４つの検証パルスが存在する。図１６Ａの処理中に図１６Ｂのパルスが印加される。検証がデータ状態Ｓ１、Ｓ３、Ｓ５をスキップするので、Ｖｖ１'、Ｖｖ３'、Ｖｖ４'の大きさの検証パルスが存在しない。特定のデータ状態に対する検証をスキップすることで、プログラミング処理が高速で完了する。図１６Ａの方法が、図７Ａ−Ｅの第３のプログラミングパスに対して利用されると、システムは、Ｖｖ１'、Ｖｖ２'、Ｖｖ３'、Ｖｖ４'、Ｖｖ５'、Ｖｖ６'、Ｖｖ７'の利用ではなく、Ｖｖ１、Ｖｖ２、Ｖｖ３、Ｖｖ４、Ｖｖ５、Ｖｖ６、Ｖｖ７を利用する。さらに、図１５Ａ及び図１６Ａの処理は、図６及び図７Ａ−Ｅの処理に加えて他のプログラミング処理に利用してもよい。
【０１０４】
他の実施形態では、データ状態の第２集合は、データ状態Ｓ１、Ｓ４、Ｓ６を含むことができ、これにより、上述した原理に基づいて、検証がデータ状態Ｓ１、Ｓ４、Ｓ６をスキップし、検証がデータ状態Ｓ２、Ｓ３、Ｓ５、Ｓ７に対して実行される。Ｓ２を検証すると、システムはＳ１の高速ビットをテストする。Ｓ５を検証すると、システムはＳ４の高速ビットをテストする。Ｓ７を検証すると、システムはＳ６の高速ビットをテストする。他の形態もまた実装することが可能である。
【０１０５】
一実施形態は、目標の第１集合にプログラムされている不揮発性記憶素子の第１集合、及び１つ以上の目標の第２集合にプログラムされている不揮発性記憶素子の第２集合をプログラミングする工程と、前記不揮発性記憶素子の前記第１集合が各々の目標に達したか否かをテストする工程と、前記不揮発性記憶素子の前記第１集合のうちの各々の目標に達したと決定された不揮発性記憶素子をさらにプログラミングすることから除外する工程と、１つ以上の目標の前記第２集合の各目標において、前記不揮発性記憶素子の前記第２集合のうちの高速プログラミング不揮発性記憶素子の数を検出する工程と、前記不揮発性記憶素子の前記第２集合のうちの不揮発性記憶素子をさらにプログラムすることから除外する工程であって、前記不揮発性記憶素子は前記１つ以上の目標の前記第２集合のうちの１つ以上の目標にプログラムされており、前記１つ以上の目標には閾値数を越える前記高速プログラミング不揮発性記憶素子がプログラムされている、工程と、を備える。
【０１０６】
一実施形態は、１つ以上の目標の第１集合にプログラムされる不揮発性記憶素子の第１集合及び１つ以上の目標の第２集合にプログラムされる不揮発性記憶素子の第２集合を含む複数の不揮発性記憶素子と、前記複数の不揮発性記憶素子と通信する１つ以上の管理回路と、を備える。１つ以上の管理回路は、前記不揮発性記憶素子の前記第１集合及び前記不揮発性記憶素子の前記第２集合に複数回のプログラムを行う。１つ以上の管理回路は、前記複数回のプログラムの少なくとも一部に応答して、前記不揮発性記憶素子の前記第１集合が各々の目標に達したか否かをテストし、前記不揮発性記憶素子の前記第１集合のうちの各々の目標に達したと決定された不揮発性記憶素子をさらにプログラミングすることから除外し、１つ以上の目標の前記第２集合の各目標において前記不揮発性記憶素子の前記第２集合のうちの高速プログラミング不揮発性記憶素子の数を検出し、前記不揮発性記憶素子の前記第２集合のうちの不揮発性記憶素子をさらにプログラムすることから除外し、ここで、前記不揮発性記憶素子は前記１つ以上の目標の前記第２集合のうちの１つ以上の目標にプログラムされており、前記１つ以上の目標には閾値数を越える前記高速プログラミング不揮発性記憶素子がプログラムされている。
【０１０７】
一実施形態は、複数の不揮発性記憶素子を暫定目標にプログラムする工程を含む。複数の不揮発性記憶素子は、暫定目標の第１集合にプログラムされている不揮発性記憶素子の第１集合と、１つ以上の暫定目標の第２集合にプログラムされている不揮発性記憶素子の第２集合と、を含む。暫定目標に複数の不揮発性記憶素子をプログラムする工程は、前記第１集合の不揮発性記憶素子が各々の暫定目標に達したか否かの検出に基づいて前記第１集合の不揮発性記憶素子を除外することと、前記第２集合の高速にプログラムされた不揮発性記憶素子の検出に基づいて前記第２集合の不揮発性記憶素子を除外すること、を含む。方法はさらに、複数の不揮発性記憶素子を暫定目標から最終目標にプログラムすることを備える。ここで、最終目標にプログラムすることは、前記第１集合の不揮発性記憶素子が各々の目標に達したか否かの検出に基づいて前記第１集合の不揮発性記憶素子を除外することと、前記第２集合の不揮発性記憶素子が各々の目標に達したか否かの検出に基づいて前記第２集合の不揮発性記憶素子を除外すること、を含む。
【０１０８】
一実施形態は、暫定目標の第１集合にプログラムされている不揮発性記憶素子の第１集合及び１つ以上の暫定目標の第２集合にプログラムされている不揮発性記憶素子の第２集合を含む複数の不揮発性記憶素子と、その複数の不揮発性記憶素子と通信する１つ以上の管理回路と、を備える。１つ以上の管理回路は、複数の不揮発性記憶素子を暫定目標にプログラムする。複数の不揮発性記憶素子を暫定目標にプログラムすることの一部として、１つ以上の管理回路は、不揮発性記憶素子が各々の暫定目標に達したか否かの検出に基づいて前記第１集合の不揮発性記憶素子を除外することと、前記第２集合の高速にプログラムされた不揮発性記憶素子の閾値数の検出に基づいて前記第２集合の不揮発性記憶素子を除外すること、を含む。１つ以上の管理回路は、複数の不揮発性記憶素子を暫定目標から最終目標にプログラムする。ここで、最終目標にプログラムすることは、前記第１集合の不揮発性記憶素子が各々の目標に達したか否かの検出に基づいて前記第１集合の不揮発性記憶素子を除外することと、前記第２集合の不揮発性記憶素子が各々の目標に達したか否かの検出に基づいて前記第２集合の不揮発性記憶素子を除外すること、を含む。
【０１０９】
一実施形態は、不揮発性記憶素子の第１集合を第１目標にプログラムするためにプログラム信号を不揮発性記憶素子の第１集合に印加する工程と、不揮発性記憶素子の第１集合が第１目標よりも大きな異なる目標に達しなか否かをテストする工程と、異なる目標に達した第１集合の不揮発性記憶素子の数が第１数よりも大きいか否かを決定する工程と、異なる目標に達した第１集合の不揮発性記憶素子の数が第１数よりも大きいか否かの決定に応答して不揮発性記憶素子の第１集合のプログラムの結論を出す工程と、を含む。
【０１１０】
上記本発明の詳細な説明は、説明のための例示にすぎない。上記本発明の詳細な説明は、詳細に開示した範囲に限定するものではない。本明細書が開示する技術は、様々に変形、変更し得る。上記説明した実施形態は、本発明の原理とその具体的な適用例をよく説明するために選ばれたものであり、当業者は、具体的な事例に則して本発明を様々に変更し得る。本発明の技術的範囲は、添付された特許請求の範囲によって定まるものである。
【図１】
2013514601.tif 000003
【図２】
2013514601.tif 000004
【図３】
2013514601.tif 000005
【図４】
2013514601.tif 000006
【図５Ａ】
2013514601.tif 000007
【図５Ｂ】
2013514601.tif 000008
【図６Ａ】
2013514601.tif 000009
【図６Ｂ】
2013514601.tif 000010
【図７Ａ】
2013514601.tif 000011
【図７Ｂ】
2013514601.tif 000012
【図７Ｃ】
2013514601.tif 000013
【図７Ｄ】
2013514601.tif 000014
【図７Ｅ】
2013514601.tif 000015
【図８Ａ】
2013514601.tif 000016
【図８Ｂ】
2013514601.tif 000017
【図８Ｃ】
2013514601.tif 000018
【図９Ａ】
2013514601.tif 000019
【図９Ｂ】
2013514601.tif 000020
【図９Ｃ】
2013514601.tif 000021
【図１０】
2013514601.tif 000022
【図１１】
2013514601.tif 000023
【図１２Ａ】
2013514601.tif 000024
【図１２Ｂ】
2013514601.tif 000025
【図１３】
2013514601.tif 000026
【図１４】
2013514601.tif 000027
【図１５Ａ】
2013514601.tif 000028
【図１５Ｂ】
2013514601.tif 000029
【図１６Ａ】
2013514601.tif 000030
【図１６Ｂ】
2013514601.tif 000031
【国際調査報告】
2013514601.tif 000032
2013514601.tif 000033