(57)【要約】不揮発性記憶素子の集合は、データを記憶するためにプログラミング処理を受ける。プログラミング処理の間、不揮発性記憶素子が適切なデータを記憶するために目標状態に到達したか否かを判断するために、１つ以上の検証処理が行われる。プログラミングは、全ての不揮発性記憶素子が各自の目標レベルに到達した場合や、各自の目標レベルに到達していない不揮発性記憶素子の数が、読み出し処理（または他の処理）の間に誤り訂正処理を用いて訂正することができるメモリセルの数よりも少ない場合に、終了することができる。各自の目標レベルに到達していない不揮発性記憶素子の数は、目標レベルと異なる状態（例：低い状態）に到達していない不揮発性記憶素子の数をカウントすることで、推測することができる。
2012531694.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性記憶装置をプログラミングする方法であって、
不揮発性記憶素子の第１集合を第１の目標状態へプログラムするために、不揮発性記憶素子の前記第１集合にプログラミング信号を印加するステップと、
中間状態にまだ到達していない前記第１集合の不揮発性記憶素子の数が、比較値よりも少ないか否かを判断するステップと、
ここで前記中間状態は、前記第１の目標状態とは異なる状態であり、
中間状態にまだ到達していない前記第１集合の不揮発性記憶素子の数が前記比較値よりも少ないと判断することに応じて、前記不揮発性記憶素子の第１集合のプログラミングを終了するステップと、
を備えることを特徴とする方法。
【請求項２】
不揮発性記憶素子の前記第１集合が前記第１の目標状態に到達したか否かを検証するステップをさらに備えることを特徴とする請求項１に記載の方法。
【請求項３】
中間状態にまだ到達していない前記第１集合の不揮発性記憶素子の数が、比較値よりも少ないか否かを判断する前記ステップは、
前記中間状態にまだ到達していない前記第１集合の不揮発性記憶素子をカウントするステップと、
カウントされた不揮発性記憶素子の数を予め定められた値と比較するステップと、
を備えることを特徴とする請求項１または２に記載の方法。
【請求項４】
前記第１の目標状態は、閾値電圧範囲であり、
前記中間状態は、前記第１の目標状態よりも低い電圧レベルの閾値電圧レベルであることを特徴とする請求項１〜３の何れか１項に記載の方法。
【請求項５】
不揮発性記憶素子の前記第１集合は、マルチステート・フラッシュメモリデバイスであることを特徴とする請求項１〜４の何れか１項に記載の方法。
【請求項６】
不揮発性記憶素子の前記第１集合は、閾値電圧範囲の集合に関連しており、
前記第１の目標状態は、前記閾値電圧範囲の集合内の最も高い閾値電圧であり、
前記中間状態は、前記最も高い閾値電圧を下回る閾値電圧であることを特徴とする請求項１〜５の何れか１項に記載の方法。
【請求項７】
前記プログラミング信号は、パルスの集合を含んでおり、
前記検証するステップは、パルスの間に１つ以上の検証処理を実行するステップを備えており、
前記判断するステップは、少なくとも前記パルスの幾つかの間に、前記中間状態にまだ到達していない前記第１集合の不揮発性記憶素子をカウントするステップを備えることを特徴とする請求項２〜６の何れか１項に記載の方法。
【請求項８】
プログラム信号を印加する前記ステップは、複数の不揮発性記憶素子を異なる目標状態に同時にプログラムし、
前記異なる目標状態は、最も低い目標状態と最も高い目標状態を備えており、
前記複数の不揮発性記憶素子は、不揮発性記憶素子の前記第１集合を含んでおり、
前記第１の目標状態は、前記最も高い目標状態であることを特徴とする請求項１〜７の何れか１項に記載の方法。
【請求項９】
前記プログラミング信号は、パルスの集合を含んでおり、
前記検証するステップは、パルスの間に１つ以上の検証処理を実行するステップを備えており、
前記判断するステップは、前記パルスの間に、前記中間状態にまだ到達していない前記第１集合の不揮発性記憶素子をカウントするステップを備えることを特徴とする請求項２〜６または８の何れか１項に記載の方法。
【請求項１０】
前記プログラミング信号は、パルスの集合を含んでおり、
不揮発性記憶素子の前記第１集合は、データ状態の集合に関連しており、
前記第１の目標状態は、前記データ状態の集合のうちの１つであり、
前記中間状態は、前記データ状態の集合の異なるデータ状態のための検証値であり、
前記方法は、前記中間状態にまだ到達していない前記第１集合の不揮発性記憶素子の数が前記比較値よりも少ないと判断することに応じて、所定数の１つ以上のパルスを不揮発性記憶素子の前記第１集合に印加するステップをさらに備え、
不揮発性記憶素子の前記第１集合をプログラミングする前記ステップは、前記所定数の１つ以上のパルスを不揮発性記憶素子の前記第１集合に印加するステップの後に終了することを特徴とする請求項１〜９の何れか１項に記載の方法。
【請求項１１】
不揮発性記憶素子の第１集合と、
不揮発性記憶素子の前記第１集合と通信する１つ以上の管理回路と、を備え、
前記１つ以上の管理回路は、不揮発性記憶素子の前記第１集合を第１の目標状態にプログラムするために、不揮発性記憶素子の前記第１集合に対してプログラミング処理を実行し、
前記プログラミング処理は、前記１つ以上の管理回路が不揮発性記憶素子の前記第１集合にプログラミング信号を印加するステップと、前記１つ以上の管理回路が不揮発性記憶素子の前記第１集合が前記第１の目標状態に到達したか否かを検証するステップを備えており、
前記１つ以上の管理回路は、前記プログラミング処理の間に中間状態にまだ到達していない前記第１集合の不揮発性記憶素子の数を測定し、
前記中間状態は前記第１の目標状態とは異なっており、
前記１つ以上の管理回路は、前記中間状態にまだ到達していない前記第１集合の不揮発性記憶素子の数が前記比較値よりも小さい場合に、不揮発性記憶素子の前記第１集合に対する前記プログラミング処理を終了する、不揮発性記憶装置。
【請求項１２】
前記プログラミング信号はパルスの集合を含んでおり、
前記１つ以上の管理回路はパルス間に前記検証するステップを実行することを特徴とする請求項１１に記載の不揮発性記憶装置。
【請求項１３】
不揮発性記憶素子の前記第１集合は、マルチステート・フラッシュメモリデバイスであることを特徴とする請求項１１または１２に記載の不揮発性記憶装置。
【請求項１４】
不揮発性記憶素子の第２集合と、不揮発性記憶素子の第３集合とをさらに備え、
前記１つ以上の管理回路は、不揮発性記憶素子の前記第２集合を第２の目標状態にプログラムし、
前記１つ以上の管理回路は、不揮発性記憶素子の前記第３集合を第３の目標状態にプログラムし、
前記第１の目標状態は、前記第２の目標状態および前記第３の目標状態と比較して最も極端な目標状態であることを特徴とする請求項１１〜１３の何れか１項に記載の不揮発性記憶装置。
【請求項１５】
不揮発性記憶素子の第２集合と、不揮発性記憶素子の第３集合とをさらに備え、
前記１つ以上の管理回路は、不揮発性記憶素子の前記第１集合を前記第１の目標状態にプログラムするのと同時に、不揮発性記憶素子の前記第２集合を第２の目標状態にプログラムし、
前記１つ以上の管理回路は、不揮発性記憶素子の前記第１集合を前記第１の目標状態にプログラムするのと同時に、不揮発性記憶素子の前記第３集合を第３の目標状態にプログラムすることを特徴とする請求項１１〜１３の何れか１項に記載の不揮発性記憶装置。
【請求項１６】
前記プログラミング信号はパルスの集合を含んでおり、
不揮発性記憶素子の前記第１集合は、データ状態の集合に関連しており、
前記第１の目標状態は、前記データ状態の集合のうちの１つであり、
前記中間状態は、前記データ状態の集合の異なるデータ状態のための検証値であり、
前記１つ以上の管理回路は、前記中間状態にまだ到達していない前記第１集合の不揮発性記憶素子の数が前記比較値よりも少ないと判断することに応じて、所定数の１つ以上のパルスを不揮発性記憶素子の前記第１集合に印加し、
不揮発性記憶素子の前記第１集合をプログラミングする前記ステップは、前記所定数の１つ以上のパルスを不揮発性記憶素子の前記第１集合に印加するステップの後に終了することを特徴とする請求項１１〜１３の何れか１項に記載の不揮発性記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性記憶装置のための技術に関する。
【背景技術】
【０００２】
半導体メモリは、様々な電子デバイスで使われることが一般的になってきている。例えば、不揮発性半導体メモリは、携帯電話、デジタルカメラ、パーソナル・デジタル・アシスタント、モバイルコンピュータ、非モバイルコンピュータ、及び他の装置に使用されている。電気的消去・再書込み可能型読取専用メモリ（ＥＥＰＲＯＭ）とフラッシュメモリは、最も普及している不揮発性半導体メモリである。
【０００３】
ＥＥＰＲＯＭとフラッシュメモリは、半導体基板内のチャネル領域上に配置され、そのチャネル領域から絶縁されているフローティングゲートを採用している。フローティングゲートは、ソース領域とドレイン領域の間に配置されている。フローティングゲートの上に、そのフローティングゲートから絶縁されている制御ゲートが設けられている。トランジスタの閾値電圧は、フローティングゲート上に保持されている電荷量によって制御される。即ち、そのソースとドレインの間の導通を可能にすべくトランジスタをオンするために制御ゲートに印加すべき電圧の最小量は、そのフローティングゲート上の電荷量レベルにより制御される。
【０００４】
ＥＥＰＲＯＭやフラッシュメモリデバイスにプログラミングを行う場合、典型的には、ビットラインが接地されるとともに、制御ゲートにプログラム電圧が加えられる。チャネルからの電子がフローティングゲートへ注入される。フローティングゲートに電子が蓄積されると、フローティングゲートが負値に帯電し、メモリセルの閾値電圧が上昇し、メモリセルがプログラムされた状態となる。プログラミングに関するさらなる情報は、「Source Side Self Boosting Technique for Non-Volatile Memory」と題した米国特許第６，８５９，３９７号、および、「Detecting Over Programmed Memory」と題した米国特許第６，９１７，５４２号に開示されている。両文献の内容は、その全体を参照することにより本明細書に組み込まれる。
【０００５】
一部のＥＥＰＲＯＭおよびフラッシュメモリ装置は、電荷の２つの範囲を記憶するために使用されるフローティングゲートを備える。従って、メモリセルは、２つの状態の間で、プログラムまたは消去される。消去状態およびプログラム状態の各々は、データ「１」およびデータ「０」に相当する。そのような装置は、バイナリ装置または２状態装置と呼ばれることがある。
【０００６】
マルチステートフラッシュメモリセルは、多数の、明確な許容されている複数の閾値電圧範囲によって、実施される。明確な閾値電圧範囲の各々は、データビットの集合に関する所定の値に相当する。メモリセルにプログラムされたデータと、セルの閾値電圧範囲との間の詳細な関係は、セルのために採用されるデータ符号化方式に依存する。例えば、両方ともその全体を参照することにより本明細書に組み込まれる、米国特許第６，２２２，７６２号及び米国特許出願公表第２００４／０２５５０９０号は、マルチ状態フラッシュメモリセルの多様なデータ符号化方式を説明する。
【０００７】
いくつかの実施形態では、制御ゲートに印加されるプログラム電圧は、連続するパルスの各々で所定のステップサイズ（例：０．２ボルト、０．３ボルト、０．４ボルト、または他の電圧）で大きさが増加していく、一連のパルスを含んでいる。パルスの間においてメモリシステムは、個々のメモリセルが、各メモリセルが目標とする閾値電圧範囲に到達したか否かを検証することができる。各自の目標とする閾値電圧範囲に到達したこれらのメモリセルは、（例えば、ビットライン電圧をＶｄｄへ上昇させることによって、）以後のプログラミングから除外される。全てのメモリセルが目標とする閾値電圧範囲に到達した場合には、プログラミングが完了する。
【図面の簡単な説明】
【０００８】
【図１】ＮＡＮＤストリングの平面図である。
【図２】ＮＡＮＤストリングの等価回路図である。
【図３】不揮発性メモリシステムのブロック図である。
【図４】センスブロックの一実施例を示すブロック図である。
【図５Ａ】メモリアレイの一実施例を示すブロック図である。
【図５Ｂ】データの１ページを示す図である。
【図６】閾値電圧分布の集合の一例および不揮発性メモリのプログラミングの処理を表わす図である。
【図７】閾値電圧分布の集合の一例および不揮発性メモリのプログラミングの処理を表わす図である。
【図８Ａ】種々の閾値電圧分布、及び、不揮発性メモリをプログラミングする処理を説明する図である。
【図８Ｂ】種々の閾値電圧分布、及び、不揮発性メモリをプログラミングする処理を説明する図である。
【図８Ｃ】種々の閾値電圧分布、及び、不揮発性メモリをプログラミングする処理を説明する図である。
【図９】一実施形態における不揮発性メモリのプログラミング順序を表すテーブルを示す図である。
【図１０】閾値電圧分布の集合の一例および不揮発性メモリのプログラミングの処理を表わす図である。
【図１１Ａ】種々の閾値電圧分布、及び、不揮発性メモリをプログラミングする処理を説明する図である。
【図１１Ｂ】種々の閾値電圧分布、及び、不揮発性メモリをプログラミングする処理を説明する図である。
【図１１Ｃ】種々の閾値電圧分布、及び、不揮発性メモリをプログラミングする処理を説明する図である。
【図１１Ｄ】種々の閾値電圧分布、及び、不揮発性メモリをプログラミングする処理を説明する図である。
【図１１Ｅ】種々の閾値電圧分布、及び、不揮発性メモリをプログラミングする処理を説明する図である。
【図１１Ｆ】種々の閾値電圧分布、及び、不揮発性メモリをプログラミングする処理を説明する図である。
【図１１Ｇ】種々の閾値電圧分布、及び、不揮発性メモリをプログラミングする処理を説明する図である。
【図１１Ｈ】種々の閾値電圧分布、及び、不揮発性メモリをプログラミングする処理を説明する図である。
【図１１Ｉ】種々の閾値電圧分布、及び、不揮発性メモリをプログラミングする処理を説明する図である。
【図１２】不揮発性メモリの動作のための処理の一実施形態を表すフローチャートを示す図である。
【図１２】不揮発性メモリのプログラミングのための処理の一実施形態を表すフローチャートを示す図である。
【図１４】不揮発性メモリの一実施形態における制御ゲート信号を示す図である。
【図１５】不揮発性メモリの一実施形態における制御ゲート信号を示す図である。
【図１６】不揮発性メモリの一実施形態における制御ゲート信号を示す図である。
【図１７】不揮発性メモリの一実施形態における制御ゲート信号を示す図である。
【図１８】閾値電圧分布の集合の一例を示す図である。
【図１９】閾値電圧分布の集合の一例を示す図である。
【図２０】不揮発性メモリの一実施形態に対する制御ゲート信号を示す図である。
【図２１】不揮発性メモリの一実施形態に対する制御ゲート信号を示す図である。
【図２２】不揮発性メモリの一実施形態に対する制御ゲート信号を示す図である。
【図２３】不揮発性メモリの一実施形態に対する制御ゲート信号を示す図である。
【図２４】不揮発性メモリをプログラミングするための処理の一実施形態を示すフローチャート図である。
【図２５】不揮発性メモリをプログラミングするための処理の一実施形態を示すフローチャート図である。
【図２６】雑／高精度プログラミングの一部として実行される処理の一実施形態を示す図である。
【図２７】雑／高精度プログラミングの一部として実行される処理の一実施形態を示す図である。
【発明を実施するための形態】
【０００９】
不揮発性記憶システムでは、データの集合を記憶するために、不揮発性記憶素子の集合にプログラミング処理が行われる。プログラミングは、全ての不揮発性記憶素子が各自の目標レベルに到達した場合や、各自の目標レベルに到達していない不揮発性記憶素子の数が、読み出し処理（または他の処理）の間に誤り訂正処理を用いて訂正することができるメモリセルの数よりも少ない場合に、終了することができる。各自の目標レベルに到達していない不揮発性記憶素子の数は、目標レベルと異なる状態に到達していない不揮発性記憶素子の数をカウントすることで、推測することができる。
【００１０】
不揮発性記憶システムの一例は、ＮＡＮＤ構造を用いるフラッシュメモリシステムであり、２つの選択ゲートの間に複数のトランジスタの直列接続を含んでいる。直列に接続されたトランジスタと選択ゲートは、ＮＡＮＤストリングと呼ばれる。図１は、１つのＮＡＮＤストリングを示す平面図である。図２は、その等価回路である。図１と図２に示すＮＡＮＤストリングは、（ドレイン側）選択ゲート１２０と（ソース側）選択ゲート１２２の間に挟まれている、直列に接続されている４つのトランジスタ１００、１０２、１０４及び１０６を有する。選択ゲート１２０は、ビットコンタクト１２６を介してＮＡＮＤストリングをビットラインに接続している。選択ゲート１２２は、ＮＡＮＤストリングをソースライン１２８に接続している。選択ゲート１２０は、選択ラインＳＧＤに適切な電圧を加えることによって制御される。選択ゲート１２２は、選択ラインＳＧＳに適切な電圧を加えることによって制御される。トランジスタ１００、１０２、１０４、及び１０６の夫々は、制御ゲートとフローティングゲートを有している。例えば、トランジスタ１００は、制御ゲート１００ＣＧとフローティングゲート１００ＦＧを備えている。トランジスタ１０２は、制御ゲート１０２ＣＧとフローティングゲート１０２ＦＧを備えている。トランジスタ１０４は、制御ゲート１０４ＣＧとフローティングゲート１０４ＦＧを備えている。トランジスタ１０６は、制御ゲート１０６ＣＧとフローティングゲート１０６ＦＧを備えている。制御ゲート１００ＣＧはワードラインＷＬ３に接続されており、制御ゲート１０２ＣＧはワードラインＷＬ２に接続されており、制御ゲート１０４ＣＧはワードラインＷＬ１に接続されており、制御ゲート１０６ＣＧはワードラインＷＬ０に接続されている。
【００１１】
図１と図２は、ＮＡＮＤストリング内の４個のメモリセルを示しているが、４個のメモリセルの使用は単に一例として提示されている点に留意されたい。ＮＡＮＤストリングは、４個よりも少ない、或いは、４個よりも多いメモリセルを有していてよい。例えば、ＮＡＮＤストリングによっては８個、１６個、３２個、６４個、１２８個などの数のメモリセルを有していてよい。本明細書の説明は、いかなる特定個数のメモリセルを有するＮＡＮＤストリングにも限定されない。一実施形態は、６６個のメモリセルを備えたＮＡＮＤストリングを使用する。６６個のメモリセルのうち、６４個のメモリセルはデータを記憶し、メモリセルの２個はデータを記憶しないためダミーメモリセルとされる。
【００１２】
ＮＡＮＤ構造を用いたフラッシュメモリシステムの一般的なアーキテクチャは、いくつかのＮＡＮＤストリングを含んでいる。各ＮＡＮＤストリングは、選択ラインＳＧＳによって制御されるソース選択ゲートによって共通ソースラインに接続されているとともに、選択ラインＳＧＤによって制御されるドレイン選択ゲートによって関連するビットラインに接続されている。各ビットラインとそのビットラインにビットラインコンタクトを介して接続されている夫々のＮＡＮＤストリングは、メモリセルアレイの列を構成する。ビットラインは、複数のＮＡＮＤストリングによって共有されている。典型的には、ビットラインは、ワードラインと直交する方向でＮＡＮＤストリング上を通っており、１のセンスアンプと接続されている。
【００１３】
ＮＡＮＤタイプのフラッシュメモリおよびそれらの動作に関連する例は、以下の米国特許／特許出願に記載されており、それらの引用文献は、その全体が参照により本明細書に組み込まれる。米国特許第５，５７０，３１５号、米国特許第５，７７４，３９７号、米国特許第６，０４６，９３５号、米国特許第６，４５６，５２８号、及び、米国公開公報第ＵＳ２００３／０００２３４８号。
【００１４】
ＮＡＮＤフラッシュメモリに加えて、不揮発性記憶装置の他のタイプもまた用いることができる。例えば、基本的に（フローティングゲートの代わりに）窒化物層内に電荷をトラッピングするメモリセルである、ＴＡＮＯＳ構造（ＴａＮ−Ａｌ２Ｏ３−ＳｉＮ−ＳｉＯ２の積層から構成される構造）にも、本明細書で述べる技術は適用できる。フラッシュＥＥＰＲＯＭシステムで有用な別のタイプのメモリセルは、不揮発方式で電荷を蓄積するために、導電性フローティングゲートの代わりに非導電性の誘電物質を活用する。そのようなセルは、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号は、マルチ状態フラッシュメモリセルの多様なデータ符号化方式を説明する。一実施形態では、フローティングゲートの閾値電圧が誤ってその近傍の閾値電圧分布にシフトした場合に１ビットだけが影響を受けるように、データ値がグレーコード割り当てを使用して閾値電圧範囲に割り当てられる。一例は、閾値電圧範囲Ｅ（状態Ｅ）に「１１」を、閾値電圧範囲Ａ（状態Ａ）に「１０」を、閾値電圧範囲Ｂ（状態Ｂ）に「００」を、及び閾値電圧範囲Ｃ（状態Ｃ）に「０１」を割り当てる。しかしながら、他の実施形態では、グレーコードは使用されない。図６では４つの状態が示されているが、本発明は、４つの状態より多い、又は、少ない構造を含む他のマルチステート構造に使用することもできる。
【００３７】
図６は、メモリセルからデータを読み出すための読み出し参照電圧Ｖｒａ、Ｖｒｂ、及び、Ｖｒｃを示している。既定のメモリセルの閾値電圧がＶｒａ、Ｖｒｂ及びＶｒｃを上回っているのか、あるいは下回っているのかをテストすることによって、システムは、メモリセルが存在する状態を判定することができる。すなわち、あるメモリセルがＶｒａ、ＶｒｂおよびＶｒｃに応じてターンオンするか否かを知ることによって、プロセッサは、そのメモリセルが何れの状態にあるかを解明することができる。例えば、あるメモリセルを読み出す場合に、そのメモリセルがＶｒｃを受信することに応じてターンオンするが、Ｖｒｂに応じてターンオンしない場合には、そのメモリセルは状態Ｂにある。
【００３８】
図６は、３つの検証参照電圧Ｖｖａ、Ｖｖｂ、及び、Ｖｖｃを示している。メモリセルを状態Ａにプログラミングするとき、システムは、それらのメモリセルがＶｖａ以上の閾値電圧を有するかどうかをテストする。メモリセルを状態Ｂにプログラミングするとき、システムは、メモリセルがＶｖｂ以上の閾値電圧を有するかどうかをテストする。メモリセルを状態Ｃにプログラミングするとき、システムは、メモリセルがＶｖｃ以上の閾値電圧を有するかどうかをテストする。
【００３９】
一般的に、検証処理および読み出し処理の間では、選択されたワードラインはある電圧に接続される。その電圧のレベルは、読み出し処理（例：図６の読み出し比較レベルＶｒａ，ＶｒｂおよびＶｒｃを参照）、または、検証処理（例：図６の検証レベルＶｖａ，ＶｖｂおよびＶｖｃを参照）の各々に対して規定されており、関連するメモリセルの閾値電圧がそれらのレベルに到達したか否かが判断される。ワードライン電圧を印加した後に、ワードラインに印加された電圧に応じてメモリセルがターンオンしたか否かを判断するために、メモリセルの伝導電流が測定される。導電電流がある一定値よりも大きいことが測定される場合には、メモリセルがターンオンし、ワードラインに印加された電圧はメモリセルの閾値電圧よりも大きいと見なされる。導電電流がある一定値よりも大きいことが測定されない場合には、メモリセルがターンオンせず、ワードラインに印加された電圧はメモリセルの閾値電圧よりも大きくないと見なされる。
【００４０】
読み出しまたは検証処理の間にメモリセルの導電電流を測定する、多くの方法が存在する。一例では、メモリセルの導電電流は、センスアンプ内の専用のキャパシタが放電または充電される速度によって、測定される。他の例では、選択されたメモリセルの導電電流は、メモリセルを備えているＮＡＮＤストリングが、対応するビットラインを放電することを許容する（または放電することを許容しない）。しばらくすると、ビットラインが放電されたか否かを見るために、ビットライン上の電圧が測定される。ここで記述した技術は、検証／読み出しのために当技術分野で周知の他の方法に対して、用いることができることに留意されたい。検証／読み出しについての更なる情報は、その全体を参照することにより本明細書に組み込まれる、次の特許文献に記載されている。（１）米国特許出願公開公報第２００４／００５７２８７号、（２）米国特許出願公開公報第２００４／０１０９３５７号、（３）米国特許出願公開公報第２００５／０１６９０８２号、および（４）米国特許出願公開公報第２００６／０２２１６９２号。上述した読み出しおよび検証処理は、当技術分野で周知の技術によって実行される。従って、説明した詳細の大部分は、当業者によって変更することができる。他の周知の読み出しおよび検証技術を用いることもできる。
【００４１】
フルシーケンスプログラミングとして知られている一実施形態においては、メモリセルは、消去状態Ｅからプログラミンされた状態Ａ、Ｂ又はＣの何れかに直接的にプログラミングされる。例えば、まず、プログラミングされるメモリセルの集合中の全てのメモリセルが消去状態Ｅとなるように、集合が消去される場合がある。メモリセルの第１の集合が状態Ｅから状態Ａにプログラムされる一方で、メモリセルの第２の集合が状態Ｅから状態Ｂにプログラムされ、メモリセルの第３の集合が状態Ｅから状態Ｃにプログラムされる。フルシーケンスプログラミングは、図６の３本の曲線の矢印によって図示されている。
【００４２】
図７は、２つの異なるページ（下位ページと上位ページ）に対してデータを記憶するマルチステートメモリセルにプログラムする、２パス技術の一例を示している。状態Ｅ（１１）、状態Ａ（１０）、状態Ｂ（００）及び状態Ｃ（０１）の４つの状態（閾値電圧分布）が示されている。状態Ｅの場合、両方のページが「１」を記憶する。状態Ａの場合、下位ページが「０」を記憶し、上位ページが「１」を記憶する。状態Ｂの場合、両方のページが「０」を記憶する。状態Ｃの場合、下位ページが「１」を記憶し、上位ページが「０」を記憶する。なお、各状態に対して特定のビットパターンが割り当てられているが、異なるビットパターンを割り当てることも可能であることに留意されたい。
【００４３】
第１プログラミングパスでは、メモリセルの閾値電圧レベルは下位の論理ページにプログラムされるビットに従って設定される。そのデータビットが論理「１」であれば、以前に消去された結果として適切な状態にあるので閾値電圧は変更されない。しかし、プログラムされるデータビットが論理「０」であれば、矢印５３０で示したように、セルの閾値レベルは状態Ａになるように増大される。
【００４４】
第２プログラミングパスでは、メモリセルの閾値電圧レベルは上位論理ページ内にプログラムされるビットに従って設定される。上位論理ページビットが論理「１」を記憶する場合、セルは下位ページビットのプログラミングに依存する状態Ｅ又はＡの一方であり、どちらも上位ページビットは「１」を保持するのでプログラミングは生じない。上位ページビットが論理「０」となる場合、閾値電圧はシフトされる。第１パスによってメモリセルが消去状態Ｅに留まっていれば第２段階でメモリセルをプログラムし、矢印５３４で示したように閾値電圧が状態Ｃ内になるように増大させる。第１プログラミングパスの結果としてメモリセルが状態Ａ内にプログラムされれば、メモリセルはさらに第２パスでプログラムされ、矢印５３２で示したように閾値電圧が状態Ｂ内になるように増大させる。第２パスの結果は、下位ページ用のデータを変更することなく、上位ページの論理「０」を記憶するように指定した状態にセルをプログラムすることである。
【００４５】
一実施形態では、１本のワードラインを充填するのに十分なデータを書き込まれた場合、システムは全シーケンス書き込みを実行するように設定される。十分ではないデータが書き込まれる場合、プログラミング処理は、受け取ったデータを用いて下位ページをプログラムすることができる。次のデータを受け取ったときは、システムは上位ページをプログラミングする。さらに別の実施形態では、システムは下位ページをプログラムするモードで書き込みを開始し、ワードラインのメモリセルの全体（又は大部分）を充填するために次の十分なデータを受け取った場合、全シーケンスプログラミングモードに変換する。このような実施形態のさらなる詳細は、米国特許出願第2006/0126390号、シリアル番号11/013,125号、「Pipelined Programming of Non-Volatile Memories Using Early Data」、出願日２００４年１２月１４日、発明者Sergy Anatolievich Gorobets および Yan Li、に開示されている。その全体は参照することによって本明細書に組み込まれる。
【００４６】
図８Ａ〜Ｃは、フローティングゲート間結合の影響を低減する、不揮発性メモリをプログラムする別の方法を開示している。図８Ａ〜Ｃによって示される処理の実装形態の一例では、不揮発性メモリセルは、４つのデータ状態を用いてメモリセル毎に２ビットのデータを記憶する。例えば、状態Ｅが消去状態であり、状態Ａ、Ｂ及びＣがプログラムされた状態であると仮定する。状態Ｅはデータ１１を記憶している。状態Ａはデータ０１を記憶している。状態Ｂはデータ１０を記憶している。状態Ｃはデータ００を記憶している。両方のビットは隣接する状態Ａ及びＢの間で変化するので、これは非グレイ符号化の一例である。データの物理的データ状態への他の符号化を用いることもできる。各メモリセルは２ページ分のデータを記憶する。参照のために、これらのページのデータは上位ページ及び下位ページと呼ばれるが、他のラベルを与えることもできる。図８Ａ−Ｃの処理における状態Ａを参照すると、上位ページはビット０を記憶し、下位ページはビット１を記憶している。状態Ｂを参照すると、上位ページはビット１を記憶し、下位ページはビット０を記憶している。状態Ｃを参照すると、両方のページがビットデータ０を記憶している。
【００４７】
図８Ａ−Ｃのプログラミング処理は、２つのステップの処理である。第１ステップでは、下位ページをプログラムする。下位ページがデータ１のままである場合、メモリセル状態は状態Ｅに留まる。データが０にプログラムされる場合、メモリセルの閾値電圧は上昇し、メモリセルは状態Ｂ’にプログラムされる。従って、図８Ａは、状態Ｅから状態Ｂ’へのメモリセルのプログラミングを示している。図８Ａに図示されている状態Ｂ’は中間状態Ｂであり、従って、検証点はＶｖｂ’として示され、Ｖｖｂより低い。
【００４８】
一実施形態では、ワードラインＷＬｎ上のメモリセルを状態Ｅから状態Ｂ’にプログラムした後、ＮＡＮＤストリング内の（ワードラインＷＬｎ＋１上の）隣接メモリセルの、その下位ページに対してプログラムする。例えば、ＷＬ０に接続されたメモリセルの下位ページをプログラムした後、同一のＮＡＮＤストリング上のメモリセルであってＷＬ１に接続されたメモリセル（隣接メモリセル）の下位ページをプログラムすることができる。隣接メモリセルをプログラムした後、前にプログラムされたメモリセルが状態Ｅから状態Ｂ’に上昇した閾値電圧を有していた場合、フローティングゲート間結合の影響によって、前にプログラムされたメモリセルの見かけの閾値電圧が上昇する。これは、図８Ｂの閾値電圧分布５５０に示したように、状態Ｂ’の閾値電圧分布を拡大する影響を有する。閾値電圧分布のこの見かけの拡大は、上位ページをプログラムする際に修正される。
【００４９】
図８Ｃは、上位ページをプログラムする工程を示している。メモリセルが消去状態Ｅであって上位ページが１に留まる場合、メモリセルは状態Ｅに留まる。メモリセルが状態Ｅであり、その上位ページデータが０にプログラムされる場合、メモリセルの閾値電圧は上昇し、メモリセルは状態Ａになる。記憶素子が中間の閾値電圧分布５５０であって上位ページデータが１に留まる場合、記憶素子は最終状態Ｂにプログラムされる。メモリセルが中間の閾値電圧分布５５０であって上位ページデータがデータ０になる場合、メモリセルの閾値電圧は上昇し、メモリセルは状態Ｃになる。隣接記憶素子の上位ページプログラミングだけが所定のメモリセルの見かけの閾値電圧に影響を与えるので、図８Ａ〜Ｃで示した工程は、フローティングゲート間結合影響を低減する。
【００５０】
図８Ａ〜Ｃは４つのデータ状態と２つのページデータに対する一例を提供するが、図８Ａ〜Ｃによって開示された概念は、４つの状態より多い又は少ない状態、２つのページとは異なるページを備えた他の実装形態、および／または他のデータ符号化に適用することもできる。
【００５１】
図９は、図８Ａ−Ｃのプログラミング方法を用いたメモリセルのプログラミングについての、順序の一実施形態を示すテーブルである。ワードラインＷＬ０に接続されたメモリセルに関して、下位ページがページ０を形成し、上位ページがページ２を形成する。ワードラインＷＬ０に接続されたメモリセルに関して、下位ページがページ０を形成し、上位ページがページ２を形成する。ワードラインＷＬ２に接続されたメモリセルに関して、下位ページがページ３を形成し、上位ページがページ６を形成する。ワードラインＷＬ３に接続されたメモリセルに関して、下位ページがページ５を形成し、上位ページがページ７を形成する。メモリセルは、ページ０からページ７へ、ページナンバーに従ってプログラムされる。他の実施形態では、プログラミングの他の順序も使用可能である。
【００５２】
各メモリセルがマルチステートデータの３ビットを記憶する場合における、メモリセルアレイについての閾値電圧分布（データ状態とも呼ばれる）の例を、図１０に示す。この一方で、他の実施形態では、１メモリセルあたり３ビットよりも多い、或いは３ビットよりも少ないデータを記憶するとしてもよい（例えば、１メモリセルあたり４ビット以上のデータを記憶するなど）。
【００５３】
図１０の例では、各々のメモリセルは３ビットのデータを保持する。よって、８つの有効なデータ状態Ｓ０−Ｓ７が存在する。一実施形態では、データ状態Ｓ０は０ボルトより低く、データ状態Ｓ１−Ｓ７は０ボルトより高い。他の実施形態として、８つのデータ状態の全てが０ボルトより高い場合や、その他のアレンジが実行可能である。一実施形態では、Ｓ０の閾値電圧分布がＳ１−Ｓ７の分布よりも広い。
【００５４】
一実施形態では、Ｓ０は消去されたメモリセルのためのものである。データはＳ０からＳ１−Ｓ７へプログラムされる。図１０のＳ１−Ｓ７から分かるように、Ｓ１の高さが最も低く、Ｓ７の高さが最も高い（例：最も極端な高さ）。
【００５５】
各々のデータ状態は、メモリセルに記憶された３データビットの固有の値に対応する。一実施形態では、Ｓ０=１１１，Ｓ１=１１０，Ｓ２=１０１，Ｓ３=１００，Ｓ４=０１１，Ｓ５=０１０，Ｓ６=００１，Ｓ７=０００，である。データ状態Ｓ０−Ｓ７の他のマッピングも使用することができる。一実施形態では、１つのメモリセルに記憶されている全てのビットのデータは、同一の論理ページに記憶される。他の実施形態では、１つのメモリセルに記憶されているビットのデータの各々は、異なる論理ページに対応する。従って、データの３ビットを記憶している１つのメモリセルは、第１ページ内のデータ、第２ページ内のデータ、第３ページ内のデータを含んでいる。いくつかの実施形態では、同一のワードラインに接続された全てのメモリセルが、同一の３ページのデータを記憶するとされる。いくつかの実施形態では、１つのワードラインに接続されたメモリセルが異なるセットのページに分類される（例えば、偶数および奇数ビットラインや、他の配列によって）。
【００５６】
いくつかの先行技術の装置では、メモリセルが消去されて状態Ｓ０となる。メモリセルは、状態Ｓ０から状態Ｓ１−Ｓ７の何れかへプログラムされてもよい。一実施形態では、フルシーケンスプログラミングとして知られている、消去された状態Ｓ０からプログラムされた状態Ｓ１−Ｓ７の何れかに直接にプログラムする方法を行うことができる。例えば、メモリセル群内の大多数のメモリセルが消去状態Ｓ０になるように、プログラム対象のメモリセル群が最初に消去されてもよい。あるメモリセルが状態Ｓ０から状態Ｓ１へプログラムされる間に、他のメモリセルが状態Ｓ０から状態Ｓ２へ、状態Ｓ０から状態Ｓ３へ、状態Ｓ０から状態Ｓ４へ、状態Ｓ０から状態Ｓ５へ、状態Ｓ０から状態Ｓ６へ、状態Ｓ０から状態Ｓ７へ、プログラムされる。フルシーケンスプログラミングは、図１０の７つの曲線状の矢印を用いて図示されている。
【００５７】
図１０は、目標検証レベルＶｖ１、Ｖｖ２、 Ｖｖ３、 Ｖｖ４、 Ｖｖ５、 Ｖｖ６およびＶｖ７の集合を示している。これらの目標検証レベルは、プログラミング処理の間に、比較レベルとして用いられる。例えば、メモリセルを状態１にプログラミングする場合には、システムは、メモリセルの閾値電圧がＶｖ１に到達したかをチェックすることができる。あるメモリセルの閾値電圧がＶｖ１に到達していない場合には、その閾値電圧がＶｖ１以上になるまで、そのメモリセルに対してプログラミングを続行することができる。あるメモリセルの閾値電圧がＶｖ１に到達した場合には、そのメモリセルに対するプログラミングを終了することができる。目標検証レベルＶｖ２は、状態２にプログラムされるメモリセルに対して用いられる。目標検証レベルＶｖ３は、状態３にプログラムされるメモリセルに対して用いられる。目標検証レベルＶｖ４は、状態４にプログラムされるメモリセルに対して用いられる。目標検証レベルＶｖ５は、状態５にプログラムされるメモリセルに対して用いられる。目標検証レベルＶｖ６は、状態６にプログラムされるメモリセルに対して用いられる。目標検証レベルＶｖ７は、状態７にプログラムされるメモリセルに対して用いられる。
【００５８】
図１０は、読み出し比較レベルＶｒ１、 Ｖｒ２、 Ｖｒ３、 Ｖｒ４、 Ｖｒ５、 Ｖｒ６およびＶｒ７の集合も示している。これらの読み出し比較レベルは、読み出し処理の間に、比較レベルとして用いられる。メモリセルの制御ゲートに独立して印加される読み出し比較レベルＶｒ１、 Ｖｒ２、 Ｖｒ３、 Ｖｒ４、 Ｖｒ５、 Ｖｒ６およびＶｒ７に応じて、メモリセルがターンオンするかオフのままであるかをテストすることによって、システムは、メモリセルが何れの状態をデータのために記憶しているかを判断することができる。
【００５９】
図１１Ａ−１１Ｉは、マルチステートデータをプログラムするための他の処理を示している。第１ステップの前に、状態Ｓ０の消去閾値分布となるように、メモリセルが消去される。図１１Ａ−１１Ｉの処理では、各々のメモリセルが３ビットのデータを記憶しており、ある１つのメモリセルの各々のビットは異なるページに属すると仮定する。データの第１ビット（一番左のビット）は、第１ページと関連する。真ん中のビットは、第２ページと関連する。一番右のビットは、第３ページと関連する。一実施形態では、データとデータ状態との相関は、以下の通りである：Ｓ０=１１１，Ｓ１=１１０，Ｓ２=１０１，Ｓ３=１００，Ｓ４=０１１，Ｓ５=０１０，Ｓ６=００１，Ｓ７=０００。しかしながら他の実施形態では、他のデータコード化配列も使用可能である。
【００６０】
（図１１Ａに示すように）第１ページにプログラムする際において、ビットをデータ“１”にする場合には、メモリセルは状態Ｓ０が維持される（閾値電圧分布６０２）。ビットをデータ“０”にする場合には、メモリセルにプログラムが行われ、状態Ｓ４となる（閾値電圧分布６０４）。隣接するメモリセルがプログラムされた後、隣接するフローティングゲート間の容量結合により、図１１Ｂに示すように、状態Ｓ４が広くなることがある。状態Ｓ０も広くなることがあるが、Ｓ０とＳ１の間には十分な余裕があるため、その影響を無視できる。フローティングゲート間の結合現象についての詳細は、米国特許第５，８６７，４２９号および米国特許第６，６５７，８９１号に開示されており、両公報は全体を参照することにより本明細書に組み込まれる。
【００６１】
第２ページをプログラムする際において（図１１Ｃを参照）、メモリセルが状態Ｓ０であり第２ページのビットをデータ“１”にする場合には、メモリセルは状態Ｓ０が維持される。いくつかの実施形態では、第２ページのプログラム処理は閾値電圧分布６０１を狭めて新たなＳ０とすることができる。メモリセルが状態Ｓ０であり第２ページにプログラムするデータが“０”である場合には、メモリセルは状態Ｓ０へ移される（閾値電圧分布６０６）。状態Ｓ２は、Ｃ＊の検証ポイントを有する。メモリセルが状態Ｓ４でありメモリセルにプログラムするデータが “１”である場合には、メモリセルは状態Ｓ４が維持される。しかしながら図１１Ｃに示すように、状態Ｓ４についてメモリセルを閾値電圧分布６０４から閾値電圧分布６０８へ移動することによって、状態Ｓ４は狭められる。閾値電圧分布６０８は、（閾値電圧分布６０４のＥ＊＊と比較して）Ｅ＊の検証ポイントを有する。メモリセルが状態Ｓ４であり第２ページにプログラムするデータが“０”である場合には、メモリセルの閾値電圧は、Ｇ＊の検証ポイントを有する状態Ｓ６（閾値電圧分布６１０）へ移動される。
【００６２】
隣接するメモリセルがプログラムされた後、隣接するフローティングゲート間の結合により、図１１Ｄの閾値電圧分布６０２、６０６，６０８，６１０に示すように、状態Ｓ０，Ｓ２，Ｓ４，Ｓ６が広くされる。
【００６３】
図１１Ｅ，１１Ｆ，１１Ｇおよび１１Ｈは、第３ページのプログラムを示している。プログラムを表すために１つの図を用いてもよいが、見やすくするために、処理を４つの図に示す。第２ページがプログラムされた後では、夫々のメモリセルは状態Ｓ０、Ｓ２，Ｓ４、Ｓ６の何れかとなる。図１１Ｅは、第３ページにプログラムが行われる、状態Ｓ０のメモリセルを表している。図１１Ｆは、第３ページにプログラムが行われる、状態Ｓ２のメモリセルを表している。図１１Ｇは、第３ページにプログラムが行われる、状態Ｓ４のメモリセルを表している。図１１Ｈは、第３ページにプログラムが行われる、状態Ｓ６のメモリセルを表している。図１１Ｉは、メモリセル群に図１１Ｅ、１１Ｆ、１１Ｇ、１１Ｈの処理が（一斉に、または連続的に）実行された後における、閾値電圧分布を示している。
【００６４】
メモリセルが状態Ｓ０であり、第３ページのデータが“１”である場合には、メモリセルは状態Ｓ０が維持される。第３ページのデータが“０”である場合には、メモリセルの閾値電圧がＢの検証ポイントを有する状態Ｓ１へ上昇される（図１１Ｅ参照）。
【００６５】
メモリセルが状態Ｓ２であり、第３ページにプログラムされるデータが“１”である場合には、メモリセルは状態Ｓ２が維持される（図１１Ｆ参照）。しかしながら幾つかのプログラムでは、閾値分布６０６を狭めて、Ｃの検証ポイントを有する新たな状態Ｓ２とすることができる。第３ページにプログラムされるデータが“０”である場合には、メモリセルはＤの検証ポイントを有する状態Ｓ３にプログラムされる。
【００６６】
メモリセルが状態Ｓ４であり、第３ページにプログラムされるデータが“１”である場合には、メモリセルは状態Ｓ４が維持される（図１１Ｇ参照）。しかしながら幾つかのプログラムでは、閾値分布６０８を狭めて、Ｅの検証ポイントを有する新たな状態Ｓ４とすることができる。メモリセルが状態Ｓ４であり、第３ページにプログラムされるデータが“０”である場合には、メモリセルの閾値電圧がＦの検証ポイントを有する状態Ｓ５へ上昇される（図１１Ｇ参照）。
【００６７】
メモリセルが状態Ｓ６であり、第３ページにプログラムされるデータが“１”である場合には、メモリセルは状態Ｓ６が維持される（図１１Ｈ参照）。しかしながら幾つかのプログラムでは、閾値分布６１０を狭めて、Ｇの検証ポイントを有する新たな状態Ｓ６とすることができる。第３ページのデータが“０”である場合には、メモリセルの閾値電圧がＨの検証ポイントを有する状態Ｓ７へプログラムされる（図１１Ｈ参照）。第３ページのプログラムが終了すると、メモリセルは図１１Ｉに示す８つの状態のうち、何れか１つの状態となる。
【００６８】
図１２は、選択されたワードラインに接続されているメモリセルを動作させる処理を説明するフローチャートである。図１２の処理の一の実装形態では、メモリセルの劣化を均一に維持するために、メモリセルには事前プログラムが行われる（ステップ６５０）。一実施形態では、メモリセルは、状態７や、ランダムパターンや、その他のパターンに事前プログラムされる。いくつかの実装形態では、事前プログラムを行う必要がない。
【００６９】
ステップ６５２では、プログラムに先立って、メモリセルが（ブロック単位又は他の単位で）消去される。一実施形態では、ソースとビットラインをフローティング状態にしておきながら、選択されたブロックのワードラインを接地し、十分な時間の間ｐウェルを消去電圧（例えば２０ボルト）にまで上昇させることによってメモリセルが消去される。消去対象として選択されなかったブロックでは、ワードラインがフロートされる。容量結合のため、非選択ワードライン、ビットライン、選択ライン、及び、ソースもまた、消去電圧のかなりの割合の電圧まで上昇する。これにより、消去対象に選択されなかったブロックの消去が妨げられる。消去対象として選択されたブロック内では、選択されたメモリセルのトンネル酸化物層に強力な電場が加わり、主としてファウラ−ノルドハイムトンネル効果によってフローティングゲートの電子が基板側に放出されて、選択されたメモリセルのデータが消去される。電子がフローティングゲートからｐ−ウェル領域に移動するにつれて、選択されたセルの閾値電圧が低下する。消去は、メモリアレイ全体、別々のブロック、又はセルの他の単位で行うことができる。一実施形態では、メモリセルが消去された後、全ての消去済みのメモリセルが状態Ｓ０となる。消去処理の一実施態様は、幾つかの消去パルスをｐウェルに印加するステップと、ＮＡＮＤストリングが適切に消去されたか否かを、消去パルスと消去パルスの間に検証するステップを備えている。
【００７０】
ステップ６５４では、消去されたメモリセルの消去閾値電圧の分布を狭めるために、ソフトプログラムが実行される。いくつかのメモリセルは、消去処理の結果として必要以上に低い消去状態にあってよい。ソフトプログラムにより、より深く消去されたメモリセルの閾値電圧ほど、消去閾値分布（例：状態ＥまたはＳ０）の方へ移動させることができる。
【００７１】
ステップ６５６では、ブロックのメモリセルがプログラムされる。プログラミングの後、ブロックのメモリセルは読み出しが可能とされる（ステップ６５８）。当技術分野で周知の、多くの異なる読み出し処理を、データの読み出しに用いることができる。一部の実施形態では、読み出し処理は、誤りを訂正するためにＥＣＣを用いるステップを備える。読み出されたデータは、読み出し処理が要求されたホストへ出力される。ＥＣＣ処理は、ステートマシン、コントローラ、または他の装置で実施することができる。
【００７２】
図１２は、読み出しなしで、または読み出しと独立して、消去−プログラムサイクルが何度も発生することができることを示している。図１２の処理は、上述した様々な回路を使用するステートマシンの指示で、実行することができる。他の実施形態では、図１２の処理は、上述した様々な回路を使用するコントローラの指示で、実行することができる。
【００７３】
図１３は、共通ワードラインに接続されているメモリセルを１つ以上の目標状態（例：データ状態または閾値電圧範囲）にプログラムを実行する際のプロセスの一実施形態を表すフローチャートである。図１３のプロセスは、図１２のステップ６５６において１回または複数回実施されうる。例えば、図１３の処理は、メモリセルを、状態ＥまたはＳ０から、直接に状態Ａ−Ｃ（図６参照）またはＳ１−Ｓ７（図１０参照）にプログラム（例：フルシーケンスプログラミング）するために使用することができる。あるいは、図１３の処理は、図７の処理の段階の１つまたは各々を実行するため、図８Ａ−Ｃの処理のステップの１つまたは各々を実行するため、図１１Ａ−Ｉの処理のステップの１つまたは各々を実行するため、に用いることができる。例えば図７の処理を実行する場合、一部のメモリセルを状態Ｅから状態Ａへプログラミングするステップを備える第１段階を実行するために、図１３の処理が用いられる。図１３の処理は、一部のメモリセルを状態Ｅから状態Ｃへプログラミングしながら、他のメモリセルを状態Ａから状態Ｂへプログラミングするステップを備える第２段階を実行するために、図１３の処理を再度用いることができる。
【００７４】
通常、プログラム処理において制御ゲートに印加されるプログラム電圧は、連続するパルスとして印加される。プログラムパルスの合間には、検証処理を可能とするための複数の検証パルスが存在する。多くの実装形態では、連続するパルスの各々の大きさが、所定のステップサイズで増加する。図１３のステップ６７０では、プログラム電圧（Ｖｐｇｍ）が初期値（例えば、１２ボルトまでの電圧など、その他の適切な値）に初期化されると共に、ステートマシン２２２によって維持されるプログラムカウンタＰＣが１に初期化される。ステップ６７２において、プログラム信号Ｖｐｇｍのプログラムパルスが、選択ワードライン（プログラム用に選択されたワードライン）に印加される。一実施形態では、プログラムされるメモリセルのグループは、全て同一のワードライン（選択されたワードライン）に接続されている。非選択ワードラインは、従来知られる昇圧方法を実行することで、１以上の昇圧電圧（例えば、９ボルトまでの電圧）を受ける。メモリセルがプログラムされる場合には、対応するビットラインが接地される。一方、メモリセルが現在の閾値電圧を維持する場合には、プログラムを禁止するために、対応するビットラインがＶｄｄに接続される。ステップ６７２では、選択ワードラインに接続されている全てのメモリセルが同時にプログラムされるように、選択ワードラインに接続されている全てのメモリセルにプログラムパルスが一斉に印加される。すなわち、全てのメモリセルは、同一時間（または重複した時間）にプログラムされる。このようにして、選択ワードラインに接続されている全てのメモリセルは、プログラム対象から除外されない限り、一斉に閾値電圧を変更することができる。
【００７５】
ステップ６７４では、適切な一組の目標レベルを使用して、選択されたメモリセルのデータ状態が検証される。ステップ６７４は、１つ以上の検証処理を実行するステップを備える。あるメモリセルの閾値電圧が適切な目標レベルに到達したことが検出された場合には、例えば、後続のプログラミングパルスの間そのビットライン電圧をＶｄｄへ上昇させることによって、そのメモリセルは更なるプログラミングから除外（locked out）される。
【００７６】
ステップ６７６において、全てのメモリセルが目標閾値電圧に到達したか否かが確認される。到達している場合には、全ての選択されたメモリセルがプログラムされていると共に目標状態が検証されているため、プログラム処理が完了し成功している。ステップ６７８において「合格」ステータスが通知される。ステップ６７６において、全てのメモリセルが目標閾値電圧に到達しているのではないと判断された場合、プログラム処理はステップ６８０へ進む。
【００７７】
ステップ６８０において、システムは、まだ各自の目標閾値電圧分布に到達していないメモリセルの数をカウントする。すなわち、システムは、検証処理に不合格となったセルの数をカウントする。このカウントするステップは、ステートマシン、コントローラ、または他のロジックによって行うことができる。一実施態様では、センスブロック３００の各々（図３参照）は、各セルの状態（合格／不合格）を記憶することができる。これらの値は、デジタルカウンタを用いてカウントすることができる。前述した通り、複数のセンスブロックの多くは、共にワイヤードＯＲ（配線論理和）接続された出力信号を有している。従って、１本のラインをチェックすることで、セルの大きなグループの何れのセルも検証に不合格になっていないことを判明させることができる。一緒にワイヤードＯＲ接続される複数のラインを適切に編成することによって（例えば、２分木（a binary tree）のような構造）、不合格となったセルの数を測定するために二分探索方法（a binary search method）を用いることができる。このようにして、少数のセルが不合格になった場合には、カウントするステップは迅速に完了する。多数のセルが不合格になった場合には、カウントするステップには長時間かかる。更なる情報は、参照することにより本明細書に組み込まれる、米国特許公報２００８／０１２６６７６号に記載されている。他の方法として、センスアンプの各々が、関連するセルが不合格になった場合にアナログ電圧または電流を出力することができる。そして、アナログ電圧または電流の加算回路を、不合格となったセルの数をカウントするために用いることができる。
【００７８】
一実施形態では、直近の検証ステップで不合格となり、現在プログラムされるメモリセルの総数を反映する、１つのカウント総計値が存在する。他の実施形態では、データ状態の各々について、別個のカウント値が保持される。
【００７９】
ステップ６８２では、ステップ６８０からのカウントが、予め定められた限界値以下であるか否かが判断される。一実施形態では、予め定められた限界値は、メモリセルのページに対する読み出し処理の間にＥＣＣによって訂正された、ビットの数である。不合格セルの数が予め定められた限界値以下である場合には、プログラミング処理を終了することができ、ステップ６７８で「合格」の状態が報知される。この状況では、読み出し処理（図１２のステップ６５８参照）の間にＥＣＣを用いて、完全にプログラムされていない残りの僅かなメモリセルを訂正することができるように、十分な数のメモリセルが正常にプログラムされている。
【００８０】
他の実施形態では、予め定められた限界値は、将来のエラーを許容するために、読み出し処理の間にＥＣＣによって訂正できるビットの数よりも小さくできる。１ページの全てのメモリセルよりも少ないメモリセルにプログラミングする場合、または、１つのデータ状態（または全ての状態よりも少ない状態）に対してカウントを比較する場合、予め定められた限界値は、メモリセルのページに対する読み出し処理の間にＥＣＣによって訂正できるビットの数の一部（比例配分（pro-rata）または非比例配分（not pro-rata））にすることができる。一部の実施形態では、限界値は予め定められない。代わりに、ページに対して既にカウントされた誤りの数、プログラム−消去サイクルの実行数、温度、または他の基準に基づいて、限界値は変化する。
【００８１】
不合格のセルの数が予め定められた限界値よりも少なくない場合には、プログラミング処理はステップ６８４へ進み、プログラムカウンタＰＣがプログラム限度値（ＰＬ）に対してチェックされる。プログラム限度値の一例は２０である。しかしながら、これ以外の値の使用も可能である。プログラムカウンタＰＣがプログラム限度値ＰＬよりも小さくない場合には、プログラム処理は失敗したと見なされ、ステップ６８８において不合格の状態が報知される。プログラムカウンタＰＣがプログラム限度値ＰＬよりも小さい場合には、処理はステップ６８６へ進む。ステップ６８６において、プログラムカウンタＰＣが１増加され、プログラム電圧Ｖｐｇｍが次の大きさに増大される。例えば、次のパルスは、前のパルスよりも１ステップサイズ（例：０．１−０．４ボルトの１ステップサイズ）だけ大きくても良い。ステップ６８６の後、処理はステップ６７２へ戻り、別のプログラムパルスが選択されたワードラインに印加される。
【００８２】
図１４は、図１３の処理についてのプログラミングの間に、選択されたワードライン、および、選択されたワードラインに接続されたメモリセルの制御ゲートに印加される電圧波形の一部を示している。波形は、図１３のステップ６７２〜６８６で構成されるループの３回の繰り返しにおける一部分として、ステップ６７２の間に印加されるプログラミングパルス（プログラム）、ステップ６７４の間に印加される検証パルス（検証）、および、ステップ６８０の間に不合格となったセルをカウントする期間（不合格セルのカウント）を示している。図１４の例は、メモリセルごとに２ビットおよび４つのデータ状態を記憶する実施形態に対応する。従って、検証処理は、Ｖｖａの検証パルス、Ｖｖｂの検証パルス、Ｖｖｃの検証パルスを備えている。１メモリセルあたり３ビットおよび８つのデータ状態を記憶する実施形態では、８つまでの検証パルスが存在しうる。幾つかの実施形態では、正確なデータ状態がテストされる必要のあるメモリセルが存在しないことが明らかな場合には、３つまたは８つよりも少ない検証パルスを、幾つかの繰り返し処理で用いることができることに留意されたい。また、データ状態の数が異なる実施形態では、検証パルスの異なる数を用いることができる。図１４の実施形態では、検証処理（ステップ６７４）および不合格のセルをカウントするステップ（ステップ６８０）は、プログラミングパルスの間に実行される。従って、全てのメモリセルが検証されたこと、または、検証に不合格となったメモリセルの数が予め定められた限界値（または予め定められていない限界値）よりも少ないこと、が検出されるとすぐに、次のプログラミングパルスを印加することなく、プログラミング処理を終了することができる。
【００８３】
図１５は、図１３の処理についてのプログラミングの間に、選択されたワードライン、および、選択されたワードラインに接続されたメモリセルの制御ゲートに印加される、他の実施形態における電圧波形の一部を示している。波形は、図１３のステップ６７２〜６８６で構成されるループの３回の繰り返しにおける一部分として、ステップ６７２の間に印加されるプログラミングパルス（プログラム）、ステップ６７４の間に印加される検証パルス（検証）、および、ステップ６８０の間に不合格となったセルをカウントする期間（不合格セルのカウント）を示している。図１５の実施形態では、検証処理（ステップ６７４）は、プログラミングパルスの間に実行される。しかしながら、不合格のセルをカウントするステップは、次のプログラムパルスの期間に実行されるため、時間を節約できる。全てのメモリセルが検証されたこと、または、検証に不合格となったメモリセルの数が予め定められた限界値（または予め定められていない限界値）よりも少ないこと、が検出されると、プログラミング処理を終了することができる。しかしながら、次のプログラミングパルスは既に印加されている。上述したように、検証処理の結果は、ラッチ４９４に記憶することができる。これらのラッチは、次のプログラムパルスの間に読み出すことができる。
【００８４】
図１６は、選択されたワードライン、および、選択されたワードラインに接続されたメモリセルの制御ゲートに印加される、他の実施形態における電圧波形の一部を示している。波形は、図１３のステップ６７２〜６８６で構成されるループの３回の繰り返しにおける一部分として、ステップ６７２の間に印加されるプログラミングパルス（プログラム）、ステップ６７４の間に印加される検証パルス（検証）、および、ステップ６８０の間に不合格となったセルをカウントする期間（不合格セルのカウント）を示している。図１６の実施形態は、１つの状態を検証するだけのプログラミング処理に関連する。例えば、４つ、８つ、またはそれ以上の状態にデータをプログラミングする場合、最も高い状態（例：状態Ｃまたは状態Ｓ７）にプログラムされるメモリセルを除いて、メモリセルが全て目標状態に到達した状態になることがある。その時点では、検証処理は、Ｖｖｃ（図６参照）またはＶｖ７（図１０参照）で、検証を実行するだけでよい。従って、図１６は、メモリセルが最も高いデータ状態（または最も高くない他の状態）であるか否かをテストするための検証パルスのみを示している。他の例では、図１６の波形は、１つの状態のみをプログラミングするプログラミング処理に用いることができる。例えば、図７の処理の第１段階、図８Ａの処理、図１１Ａの処理、または他の処理などに用いることができる。２つ以上の状態をプログラムするプログラミング処理のために、付加的な検証パルスを、必要に応じて波形に追加することができる。図１６の実施形態では、検証処理（ステップ６７４）および不合格のセルをカウントするステップ（ステップ６８０）は、プログラミングパルスの間に実行される。
【００８５】
図１７は、選択されたワードライン、および、選択されたワードラインに接続されたメモリセルの制御ゲートに印加される、他の実施形態における電圧波形の一部を示している。波形は、図１３のステップ６７２〜６８６で構成されるループの３回の繰り返しにおける一部分として、ステップ６７２の間に印加されるプログラミングパルス（プログラム）、ステップ６７４の間に印加される検証パルス（検証）、および、ステップ６８０の間に不合格となったセルをカウントする期間（不合格セルのカウント）を示している。図１６のように、図１７の波形は、１つの状態を検証するだけのプログラミング処理に関連する。図１７の実施形態では、検証処理（ステップ６７４）は、プログラミングパルスの間に実行される。しかしながら、不合格のセルをカウントするステップは、次のプログラミングパルスの期間に実行される。
【００８６】
プログラム電圧は、１本のワードラインに接続されている全てのメモリセルに印加されるため、ワードライン上の非選択のメモリセル（プログラムされないメモリセル）が、意図せずにプログラムされてしまうことがある。選択されたワードライン上の非選択のセルの、意図しないプログラミングは、「プログラム外乱」と呼ばれる。例えば、状態Ｅ内にあるメモリセルにおいて、その閾値電圧が状態Ｅの外側まで増加することがある。図１８は、プログラミング処理中のメモリセルに対する、閾値電圧と、状態Ｅ、Ａ、ＢおよびＣのメモリセルの数との比較である。状態Ｅは、通常は状態Ｅの一部に含まれるとされるレベルを超えるようにプログラム外乱による影響を受けている、メモリセルの部分集合（網掛け領域７０２で示されている）を有するように図示されている。プログラム外乱は、メモリセルを最も高い（最も極端な高さの）状態（例：状態ＣまたはＳ７）にプログラミングする場合に、より問題である。メモリセルを最も高い状態にプログラムするために、通常、より多くの電圧パルスが必要となり、より多くのパルスが印加されるとプログラム外乱の可能性が高まるためである。さらに、電圧の大きさがパルスごとに増加するため、最も高いデータ状態はより高い電圧でプログラムされ、それによってもプログラム外乱の可能性が高まるためである。
【００８７】
図１８は、最も高い状態Ｃにプログラムされている複数のメモリセルのうちの一部（網掛け領域７０４を参照）が、まだＶｖｃに到達していない状態も示している。この場合、網掛け領域７０４で示されるメモリセルに対するプログラムを続行すると、網掛け領域７０２内のメモリセルのプログラム外乱を深刻化させるだけになることがある。従って、上述したプログラミング処理は、プログラム外乱を減少させる（またはより深刻化することを防止する）ために、全てのメモリセルが目標に到達（例：Ｖｖｃに到達）する前に、メモリセルの最も高い状態（および他のデータ状態）へのプログラミングを終了する。しかしながら、図１３のステップ６８０および６８２について前述したように、十分にプログラムされていないメモリセルの数が、ＥＣＣによって訂正することができるセルの数よりも少ない場合には、プログラミングは終了されるだけである。
【００８８】
一実施形態では、検証比較値（例：Ｖｖｃ）を下回るセルの数をカウントする代わりに、システムは、中間比較値を下回るセルの数をカウントし、そのカウントを、検証比較値を下回っているセルの数の推定値として用いることができる。例えば図１９は、検証比較値Ｖｖｃおよび読み出し比較値Ｖｒｃを有する、データ状態Ｃについての閾値電圧分布を示している。図１９は、中間比較電圧ＶｖｃＬも示している。図１３のステップ６８０の一実施形態では、状態Ｃにプログラムされることになっているが、閾値電圧がＶｖｃよりも小さいメモリセルの数を推定するために、システムは、状態Ｃにプログラムされることになっているが、閾値電圧がＶｖｃＬよりも小さいメモリセルの数をカウントすることができる。
【００８９】
閾値電圧がＶｖｃＬよりも小さいメモリセルの数は、閾値電圧がＶｖｃよりも小さいメモリセルの数に比例する。例えば、ＶｖｃＬがＶｖｃよりも０．４〜０．５ボルト低い場合には、閾値電圧がＶｖｃＬよりも小さいメモリセルの数は、閾値電圧がＶｖｃよりも小さいメモリセルの数に対して、約１０分の１（１／１０）である。ＶｖｃＬがＶｖｃよりも０．８〜１．０ボルト低い場合には、閾値電圧がＶｖｃＬよりも小さいメモリセルの数は、閾値電圧がＶｖｃよりも小さいメモリセルの数に対して、約１００分の１（１／１００）である。幾つかの実施形態では、比較値よりも低いとしてカウントされたメモリセルの数は、０．４〜０．５ボルトごとに１０分の１の割合で減少することがある。図１９には、閾値電圧がＶｖｃより小さくＶｒｃよりも大きいメモリセルを表す、網掛け領域７１２が表示されている。網掛け領域７１４は、閾値電圧がＶｒｃより小さくＶｖｃＬよりも大きいメモリセルを表している。網掛け領域７１６は、閾値電圧がＶｖｃＬより小さいメモリセルを表している。従って、閾値電圧がＶｖｃよりも小さいメモリセルの数は、網掛け領域７１２＋７１４＋７１６の合計である。以上のように、閾値電圧がＶｖｃよりも小さいメモリセルの数は、閾値電圧がＶｖｃＬよりも小さいメモリセルの数よりも、非常に多い。幾つかの実施形態では、中間比較値ＶｖｃＬよりも小さいメモリセルの数をカウントするステップは、Ｖｖｃよりも小さいメモリセルの数をカウントするステップよりも早く行うことができる。
【００９０】
図２０は、図１３の処理についてのプログラミングの間に、選択されたワードライン（および、選択されたワードラインに接続されたメモリセルの制御ゲート）に印加される電圧波形の一部を示している。これは、状態Ｃにプログラムされることになっているが、閾値電圧が中間比較電圧ＶｖｃＬよりも小さいメモリセルの数をシステムがカウントするという、ステップ６８０の実施形態に対するものである。状態Ｃにプログラムされることになっているが、閾値電圧がＶｖｃＬよりも小さいメモリセルの数が、特定の限界値（図１３のステップ６８２を参照）以下である場合には、プログラミング処理は終了する。ＶｖｃＬがＶｖｃよりも低いため、ＶｖｃＬと比較される特定の限界値は、Ｖｖｃと比較する場合より低い。上述した２つの例では、ＶｖｃＬについて用いられる限界値は、Ｖｖｃについて用いられる限界値よりも、１０倍または１００倍小さい。図２０の波形は、図１３のステップ６７２〜６８６で構成されるループの３回の繰り返しの一部である、ステップ６７２の間に印加されるプログラミングパルス（プログラム）、ステップ６７４の間に印加される複数の検証パルス（検証）、および、ステップ６８０の間に不合格となったセルをカウントする期間（不合格セルのカウント）を示している。この実施形態では、ステップ６８０（不合格セルのカウント）は、複数のメモリセルが少なくともＶｖｃＬの閾値電圧を有するか否かをテストするために、ＶｖｃＬの電圧パルスを印加するステップを備える。閾値電圧をテストする、他の方法を用いることもできる。電圧パルスは完全な方形波で図示されているが、実際には、電圧パルス（および、この図や他の図に図示されている他のパルス）は、完全な方形波ではないことがあり、一部のケースでは方形波とは異なる波形であることがあることにも留意されたい。
【００９１】
図２０の例は、１メモリセル当りに、２ビットおよび４つのデータ状態を記憶する実施形態に対応している。従って、検証処理は、Ｖｖａの検証パルス、Ｖｖｂの検証パルス、Ｖｖｃの検証パルスを備えている。１メモリセルあたり３ビットおよび８つのデータ状態を記憶する実施形態では、８つまでの検証パルスが存在しうる。幾つかの実施形態では、正確なデータ状態がテストされる必要のあるメモリセルが存在しないことが明らかな場合には、３つまたは８つよりも少ない検証パルスを、幾つかの繰り返し処理で用いることができることに留意されたい。また、データ状態の数が異なる実施形態では、検証パルスの異なる数を用いることができる。図２０の実施形態では、検証処理（ステップ６７４）および不合格のセルをカウントするステップ（ステップ６８０）は、プログラミングパルスの間に実行される。従って、全てのメモリセルが検証されたこと、または、検証に不合格となったメモリセルの数がある限界値よりも少ないこと、が検出されるとすぐに、次のプログラミングパルスを印加することなく、プログラミング処理を終了することができる。
【００９２】
図２１は、図１３のステップ６８０の別の実施形態に関して、選択されたワードライン（および、選択されたワードラインに接続されたメモリセルの制御ゲート）に印加される電圧波形の一部を示している。この実施形態では、システムは、状態Ｃにプログラムされることになっているが、閾値電圧がＶｖｃＬよりも小さいメモリセルの数をカウントすることができる。この波形は、図１３のステップ６７２〜６８６で構成されるループの３回の繰り返しの一部である、ステップ６７２の間に印加されるプログラミングパルス（プログラム）、ステップ６７４の間に印加される複数の検証パルス（検証）、および、ステップ６８０の間に不合格となったセルをカウントする期間（不合格セルのカウント）を示している。この実施形態では、ステップ６８０（不合格セルのカウント）は、複数のメモリセルが少なくともＶｖｃＬの閾値電圧を有するか否かをテストするために、ＶｖｃＬの電圧パルスを印加するステップを備える。閾値電圧をテストする他の方法を用いることもできる。図１５の実施形態では、検証処理（ステップ６７４）は、プログラミングパルスの間に実行される。しかしながら、不合格のセルをカウントするステップ（ステップ６８０）は、次のプログラミングパルスの期間に実行される。上述したように、検証処理の結果は、ラッチ４９４に記憶することができる。これらのラッチは、次のプログラムパルスの間に読み出すことができる。
【００９３】
図２２は、図１３のステップ６８０の別の実施形態に関して、選択されたワードライン（および、選択されたワードラインに接続されたメモリセルの制御ゲート）に印加される電圧波形の一部を示している。この実施形態では、システムは、状態Ｃにプログラムされることになっているが、閾値電圧がＶｖｃＬよりも小さいメモリセルの数をカウントすることができる。この波形は、図１３のステップ６７２〜６８６で構成されるループの３回の繰り返しの一部である、ステップ６７２の間に印加されるプログラミングパルス（プログラム）、ステップ６７４の間に印加される複数の検証パルス（検証）、および、ステップ６８０の間に不合格となったセルをカウントする期間（不合格セルのカウント）を示している。図１６の実施形態は、１つの状態を検証するだけのプログラミング処理に関連する。例えば、４つ、８つ、またはそれ以上の状態にデータをプログラミングする場合、最も高い状態（例：状態Ｃまたは状態Ｓ７）にプログラムされるメモリセルを除いて、メモリセルが全て目標状態に到達した状態になることがある。その時点では、検証処理は、Ｖｖｃ（図６参照）またはＶｖ７（図１０参照）で、検証を実行するだけでよい。従って、図２２は、メモリセルが最も高いデータ状態（または最も高くない他の状態）であるか否かをテストするための検証パルスのみを示している。図２２の波形は、１つの状態のみをプログラミングするプログラミング処理に用いることができる。例えば、図７の処理の第１段階、図８Ａの処理、図１１Ａの処理、または他の処理などに用いることができる。２つ以上の状態をプログラムするプログラミング処理のために、付加的な検証パルスを、必要に応じて波形に追加することができる。図２２の実施形態では、検証処理（ステップ６７４）および不合格のセルをカウントするステップ（ステップ６８０）は、プログラミングパルスの間に実行される。この実施形態では、図２１の実施形態と同様に、ステップ６８０（不合格セルのカウント）は、複数のメモリセルが少なくともＶｖｃＬの閾値電圧を有するか否かをテストするために、ＶｖｃＬの電圧パルスを印加するステップを備える。閾値電圧をテストする他の方法を用いることもできる。
【００９４】
図２３は、図１３のステップ６８０の別の実施形態に関して、選択されたワードライン（および、選択されたワードラインに接続されたメモリセルの制御ゲート）に印加される電圧波形の一部を示している。この実施形態では、システムは、状態Ｃにプログラムされることになっているが、閾値電圧がＶｖｃＬよりも小さいメモリセルの数をカウントすることができる。この波形は、図１３のステップ６７２〜６８６で構成されるループの３回の繰り返しの一部である、ステップ６７２の間に印加されるプログラミングパルス（プログラム）、ステップ６７４の間に印加される複数の検証パルス（検証）、および、ステップ６８０の間に不合格となったセルをカウントする期間（不合格セルのカウント）を示している。図２２と同様に、図２３の波形は、１つの状態を検証するだけのプログラミング処理に関連する。図２３の実施形態では、検証処理（ステップ６７４）は、プログラミングパルスの間に実行される。しかしながら、ステップ６８０の不合格のセルをカウントするステップ（不合格セルのカウント）は、次のプログラムパルスの期間に実行される。この実施形態では、図２１の実施形態と同様にして、ステップ６８０（不合格セルのカウント）は、複数のメモリセルが少なくともＶｖｃＬの閾値電圧を有するか否かをテストするために、ＶｖｃＬの電圧パルスを印加するステップを備える。一実施形態では、ＶｖｃＬの電圧パルスが次のプログラムパルスの前に印加され、不合格のセルをカウントするステップが次のプログラムパルスと同時に実行される。閾値電圧をテストする、他の方法を用いることもできる。
【００９５】
図２０―２３は、状態Ｃにプログラムされるメモリセルに対してステップ６８０を実行する場合の、中間比較値レベル（例：ＶｖｃＬ）の使用について図示している。一実施形態では、各検証比較レベル（例：ＶｖａおよびＶｖｂ）に到達していないメモリセルの数をカウントすることで、ステップ６８０を、状態Ｃ（最も高い状態、または最も極端な状態）以外の状態にプログラムされるメモリセルに実行することができる。従って、状態Ａにプログラムされることが意図されている複数のメモリセルのうち、第１の所定数よりも少ないメモリセルがＶｖａに到達していない場合に、状態Ａへプログラミングするステップを終了することができる。状態Ａにプログラムされることが意図されている複数のメモリセルのうち、第２の所定数（第１の所定数と同一であってもよいし異なっていてもよい）よりも少ないメモリセルがＶｖｂに到達していない場合に、状態Ｂへプログラミングするステップを終了することができる。状態Ｃにプログラムされることが意図されている複数のメモリセルのうち、第１の所定数よりも少ないメモリセルがＶｖｃＬに到達していない場合に、状態Ｃへプログラミングするステップを終了することができる。
【００９６】
他の実施形態では、ステップ６８０および６８２は、最も高い状態または最も極端な状態（例：状態Ｃまたは状態Ｓ７）にプログラムされるメモリセルのみに、実行されてもよい。
【００９７】
他の実施形態では、ステップ６８０は、各状態に対して中間比較値を用いることができる。例えば、ステップ６８０は、Ｖｖａよりも低い状態Ａにプログラムされるメモリセルに対して、中間比較値を使用することができる。またステップ６８０は、Ｖｖｂよりも低い状態Ｂにプログラムされるメモリセルに対して、中間比較値を使用することができる。
【００９８】
一部の実施形態では、例えば、プログラミングに対して閾値電圧が低下され、消去の間に閾値電圧が上昇される場合には、中間比較値は検証比較値よりも高くてもよい。
【００９９】
図２０−２３は、データの２ビットを記憶するメモリセルについての、データ中間比較レベル（例：ＶｖｃＬ）の使用について図示している。しかしながら、図２０−２３によって教唆される概念は、データの２ビットより多くを記憶するメモリセルに適用することができる。例えば、ステップ６８０で中間値よりも小さい閾値電圧を有するメモリセルをカウントするステップは、図１０および１１のプログラミング工程に用いることができる。データの３ビットを記憶するメモリセルを備える一例では、ステップ６８０は、Ｓ１−Ｓ６にプログラムされるメモリセルに対して、Ｓ１−Ｓ６に対する各検証レベル（例：Ｖｖ１，Ｖｖ２，Ｖｖ３，Ｖｖ４，Ｖｖ５，Ｖｖ６）よりも小さい閾値電圧を有するメモリセルをカウントすることができる。そしてステップ６８０は、状態Ｓ７にプログラムされるメモリセルについて、Ｖｖ７Ｌよりも小さいメモリセルをカウントする。ここでＶｖ７Ｌは、Ｖｖ７よりも０．５ボルト（または他の値）だけ小さい。ある変形例では、Ｖｖ７Ｌは、Ｖｖ６、Ｖｖ５、またはそれらの値に近い他の値と等しくすることができる。
【０１００】
データの３ビットを記憶するメモリセルを備える他の例では、ステップ６８０は、Ｓ１−Ｓ５にプログラムされるメモリセルに対して、Ｓ１−Ｓ５に対する各検証レベル（例：Ｖｖ１，Ｖｖ２，Ｖｖ３，Ｖｖ４，及びＶｖ５）よりも小さい閾値電圧を有するメモリセルをカウントすることができる。ステップ６８０は、状態Ｓ６にプログラムされるメモリセルについて、Ｖｖ６Ｌよりも小さいメモリセルをカウントする。そしてステップ６８０は、状態Ｓ７にプログラムされるメモリセルについて、Ｖｖ７Ｌよりも小さいメモリセルをカウントする。ここでＶｖ６Ｌは、Ｖｖ６よりも０．５ボルト（または他の値）だけ小さい。
【０１０１】
図２４は、ＶｖｃＬがＶｖｂと等しくなる、または、Ｖｖ７ＬがＶｖ６となる場合の他の実施形態を示している。また、不合格のセル（例：中間比較値よりも小さい閾値電圧を有するセル）の数が所定数よりも少ないことを検出した後に、所定数の１つ以上の追加のプログラミングパルスが印加される。次のプログラムパルスの間にステップ６８０を実行する実施形態（図２１および２３を参照）では、所定数の１つ以上の追加のプログラミングパルスは、次のプログラムパルスの後に印加される。図２４の処理は、図１３の処理と同様である（同一のステップには同様の符号が振られている）。しかしながら、ステップ６８０および６８２は、ステップ７４０−７４４に置換されている。ステップ７４０は、ＶｖｃＬ＝Ｖｖｂ又はＶｖ７Ｌ＝Ｖｖ６の点を除いて、ステップ６８０と同様である。ステップ７４２は、不合格のセルと比較される予め定められた限界値が異なることがある点を除いて、ステップ６８２と同様である。不合格のセルの数が予め定められた限界値よりも大きい場合には、処理はステップ６８４へ進む。不合格のセルの数が予め定められた限界値以下である場合には、処理はステップ７４４へ進む。ステップ７４４において、所定数のプログラミングパルスが、選択されたワードラインを介してメモリセルに印加される。これら所定数のプログラミングパルスの間に、検証処理（検証が成功したメモリセルの除外（ｌｏｃｋｏｕｔ）とともに）が実行される。予め定められた限界値およびプグラミングパルスの所定数は、シミュレーションまたはデバイス特性評価に基づいて決定することができる。一実施形態では、限界値およびプログラミングパルスの数は、予め定められるというよりも、プログラム−消去サイクルの数、温度、または他の要因に基づいて動的に設定される。
【０１０２】
図２５は、所定数のプログラミングパルスを印加するステップ、および、状態Ｂにプログラムすることが意図された全てのメモリセルが状態Ｂに十分にプログラムされた後のプログラミングを終了するステップ、を備える他の実施形態を示している。状態Ｂにプログラムすることが意図された全てのメモリセルが十分に状態Ｂにプログラムされた後の時点において、状態Ｃにプログラムすることが意図されたわずかなメモリセルの閾値電圧がまだＶｖｂに到達していない場合を想定する。「十分にプログラムされる」という文言は、十分な数のメモリセルが状態Ｂに到達し、プログラミング処理が成功したと見なせることを意味している。例えば、メモリセルのグループを状態Ｂにプログラムするステップが図１３の処理に用いられる場合、検証に不合格となったメモリセルの数が予め定められた限界値（例：ＥＣＣで修復することができる所定の限界値）よりも少ないなど、十分な数のメモリセルの検証が成功した場合に、メモリセルのグループは十分にプログラムされる。このとき、状態Ｃにプログラムすることが意図されたメモリセルのうち、予め定められた限界値よりも少ない数のメモリセルが、テストをした場合には状態Ｂについての検証が不合格になる場合を想定する。従って、所定の追加の１つ以上のプログラミングパルスのみが印加され、プログラミングが終了する。（この実施形態、または図２４の実施形態で）追加の１つ以上のプログラミングパルスを印加する場合に、追加の１つ以上のプログラミングパルス中またはパルス間で、不合格のセルをカウントするステップは行わないとすることができる。この実施形態を実現するために、状態ＡおよびＢにプログラムされるメモリセルが図１３の処理を実行することができる一方で、状態Ｃにプログラムされるメモリセルは図２５の処理を実行することができる。
【０１０３】
図２５の処理は、以下の例外を除いて、図１３の処理と同様である。ステップ６７６において、全てのメモリセルが適切に検証されていないと判断された場合には、ステップ７８０において、状態Ｂにプログラムすることが意図された全てのメモリセルが十分に状態Ｂにプログラムされたか否かが判断される。プログラムされていない場合には、処理はステップ６８４へ進む。状態Ｂにプログラムすることが意図された全てのメモリセルが十分に状態Ｂにプログラムされた場合には、ステップ７８２において、所定数のプログラミングパルスが選択されたワードラインを介してメモリセルに印加される。これら所定数のプログラミングパルスの間に、検証処理（検証が成功したメモリセルの除外（ｌｏｃｋｏｕｔ）を含む）が実行される。ステップ７８２の間にメモリセルに印加されたプログラミングパルスの数は、実験、シミュレーション、および／またはデバイス特性評価に基づいて決定することができる。プログラミングパルス間の増加量は、ステップ７８２の間にメモリセルに印加されるプログラミングパルスの数に影響することがある。
【０１０４】
図２５の実施形態は、データの２ビットより多くを記憶するメモリセルに適用することができる。例えば、図２５の処理は、他のプログラミング処理と同様に、図１０および１１Ｈに示されるようにプログラムされるメモリセルに用いることができる。一実施形態では、データの３ビットを記憶するメモリセルに図２５の処理を用いる場合に、状態Ｓ６（２番目に高い状態）にプログラムすることが意図された全てのメモリセルが状態Ｓ６に十分にプログラムされたか否かを、ステップ７８０がテストする。
【０１０５】
プログラミングプロセスを不用意に遅くすることなく、狭帯の閾値電圧分布を得る一つの方法は、２段階プログラミング処理を用いることである。第１段階、雑プログラミング段階は、狭帯の閾値電圧分布を得ることにはさほど注意を払わず、より早く閾値電圧を引き上げようとするものである。第２段階、高精度（ファイン）プログラミング段階は、目的の閾値電圧に到達するためにより遅い手法で閾値電圧を引き上げる。その結果、狭帯域氏閾値電圧分布が得られる。雑／高精度プログラミング技法の一例は、米国特許第６，６４３，１８８に開示されており、その全体は参照により本明細書に組み込まれる。
【０１０６】
図２６（Ａ）‐（Ｃ）と図２７（Ａ）−（Ｃ）は、雑／高精度プログラミング技法の一例の詳細を示す図である。図２６（Ａ）と２７（Ａ）は、制御ゲートに印加されるプログラミングパルスＶｐｇｍを示している。図２６（Ｂ）と２７（Ｂ）は、プログラムされるメモリセルのビットライン電圧を示している。図２６（Ｃ）と２７（Ｃ）は、プログラムされるメモリセルの閾値電圧を示している。この例は、図中Ｖｖｅｒ１、Ｖｖｅｒ２で示される２つの検証レベルを使用している。最終的な目標レベルはＶｖｅｒ１である。メモリセルの閾値電圧がＶｖｅｒ１に到達すると、そのメモリセルに対応するビットラインに禁止電圧を印加することによって、そのメモリセルはそれ以上のプログラミングが禁止される。例えば、ビットライン電圧はＶｉｎｈｉｂｉｔに引き上げられる（図２６（Ｂ）、２７（Ｂ）を参照）。一実施形態では、ＶｉｎｈｉｂｉｔはＶｄｄである。しかしながら、メモリセルが目標値Ｖｖｅｒ１に近づくと（しかし目標値よりは低い）、ビットラインに所定の大きさ、典型的には０．３Ｖから０．８Ｖのオーダーのバイアス電圧が印加され、その後のプログラミングパルスの間のそのメモリセルの閾値電圧シフトは遅くなる。次のいくつかのプログラミングパルスの間は閾値電圧シフトの速度が遅くなるので、最終的な閾値電圧分布は他の場合よりも狭くすることができる。この方法を実装する場合、Ｖｖｅｒ１よりも低い第２検証レベルが用いられる。この第２検証レベルは、Ｖｖｅｒ２として示されている。メモリセルの閾値電圧がＶｖｅｒ２よりも大きく、しかしまだＶｖｅｒ１より小さい場合、ビットラインバイアスＶｓ（図２７（Ｂ））を印加することによって、その後のプログラミングパルスにおけるメモリセルの閾値電圧シフトが小さくなる。この場合、各状態に対して２つの検証動作が必要であることに留意されたい。各状態に対するＶｖｅｒ１に対応する検証処理が一つであり、各状態に対するＶｖｅｒ２に対応する検証処理が一つである。このことは、メモリセルをプログラムするために必要とされる総時間を増加させる。しかしながら、このプロセスをスピードアップするために、より大きいΔＶｐｇｍステップサイズを用いることができる。
【０１０７】
図２６（Ａ）、２６（Ｂ）、２６（Ｃ）は、一つのプログラミングパルスで閾値電圧がＶｖｅｒ２とＶｖｅｒ１を超えて移動するメモリセルの振る舞いを示している。例えば、図２６（Ｃ）では、ｔ２とｔ３の間でＶｖｅｒ２とＶｖｅｒ１を通過する閾値電圧が示されている。従って、ｔ３以前は、メモリセルは雑段階にある。ｔ３の後、メモリセルは禁止モードとなる。
【０１０８】
図２７（Ａ）、２７（Ｂ）、２７（Ｃ）は、雑／高精度プログラミング段階の双方に入るメモリセルを示している。メモリセルの閾値電圧は、時刻ｔ２と時刻ｔ３の間にＶｖｅｒ２を超える。ｔ３以前はメモリセルは雑段階にある。ｔ３の後、ビットライン電圧はＶｓに引き上げられる。従って、メモリセルは高精度段階に入る。ｔ３とｔ４の間で、メモリセルの閾値電圧は、Ｖｖｅｒ１を超える。そのため、ビットライン電圧がＶｉｎｈｉｂｉｔに引き上げられ、メモリセルはそれ以降のプログラミングが禁止される。
【０１０９】
検証に不合格となったメモリセルの推定された数がある限界値よりも少ない場合に、プログラミングを終了することに関する上記の技術は、図２６（Ａ）−（Ｃ）および図２７（Ａ）−（Ｃ）に関して述べた雑／高精度プログラミング（または他のタイプの雑／高精度プログラミング）に用いることができる。検証に不合格となったメモリセルの数を推定するために用いられる中間値は、Ｖｖｅｒ２とすることができる。
【０１１０】
一実施形態は、不揮発性記憶素子の第１集合を第１の目標状態へプログラムするために、不揮発性記憶素子の前記第１集合にプログラミング信号を印加するステップと、中間状態にまだ到達していない前記第１集合の不揮発性記憶素子の数が、比較値よりも少ないか否かを判断するステップと、中間状態にまだ到達していない前記第１集合の不揮発性記憶素子の数が前記比較値よりも少ないと判断することに応じて、前記不揮発性記憶素子の第１集合のプログラミングを終了するステップと、を備える。前記中間状態は、前記第１の目標状態とは異なる状態である。
【０１１１】
一実施形態は、不揮発性記憶素子の第１集合と、不揮発性記憶素子の前記第１集合と通信する１つ以上の管理回路と、を備える。前記１つ以上の管理回路は、不揮発性記憶素子の前記第１集合を第１の目標状態にプログラムするために、不揮発性記憶素子の前記第１集合に対してプログラミング処理を実行する。前記プログラミング処理は、前記１つ以上の管理回路が不揮発性記憶素子の前記第１集合にプログラミング信号を印加するステップと、前記１つ以上の管理回路が不揮発性記憶素子の前記第１集合が前記第１の目標状態に到達したか否かを検証するステップを備えている。前記１つ以上の管理回路は、前記プログラミング処理の間に中間状態にまだ到達していない前記第１集合の不揮発性記憶素子の数を測定する。前記中間状態は前記第１の目標状態とは異なっている。前記１つ以上の管理回路は、前記中間状態にまだ到達していない前記第１集合の不揮発性記憶素子の数が前記比較値よりも小さい場合に、不揮発性記憶素子の前記第１集合に対する前記プログラミング処理を終了する。
【０１１２】
一実施形態は、複数の不揮発性記憶素子を異なる目標状態へ同時にプログラムするために、複数の不揮発性記憶素子にプログラミング信号を印加するステップを備える。複数の不揮発性記憶素子が各自の目標状態に到達したか否かを検証するステップを備える。最も高い目標状態に関して、中間状態にまだ到達していない第１の部分集合の不揮発性記憶素子をカウントするステップを備える。第１の部分集合の不揮発性記憶素子の所定数よりも少ない数が中間状態にまだ到達していないことをカウントすることに応じて、複数の不揮発性記憶素子のプログラミングを終了するステップを備える。異なる目標状態の他の目標状態向けである他の不揮発性記憶素子が、十分にプログラムされていると判断するステップを備える。最も高い目標状態に到達している不揮発性記憶素子は、中間状態を通過している。異なる目標状態は、最も低い目標状態および最も高い目標状態を含んでいる。プログラミング信号は、パルスの集合を含んでいる。複数の不揮発性記憶素子は、最も高い目標状態にプログラムされる不揮発性記憶素子の第１部分集合を含んでいる。検証するステップは、パルス間に１つ以上の検証処理を実行するステップを含んでいる。
【０１１３】
一実施形態は、複数の不揮発性記憶素子を複数の異なる目標状態へプログラムするために、複数の不揮発性記憶素子にプログラミング信号を印加するステップを備える。プログラミング信号は、パルスの集合を含んでいる。複数の異なる目標状態は、第１の目標状態と第２の目標状態を含んでいる。複数の不揮発性記憶素子は、第１の目標状態にプログラムされる不揮発性記憶素子の第１部分集合と、第２の目標状態にプログラムされる不揮発性記憶素子の第２部分集合とを含んでいる。その方法は、不揮発性記憶素子の第２部分集合が、第２の目標状態に十分に到達したか否かを検証するステップを備える。その方法は、不揮発性記憶素子の第２部分集合が第２の目標状態に十分に到達したと判断することに応じて、１つ以上の所定数のパルスを不揮発性記憶素子の第１部分集合に印加するステップを備える。その方法は、１つ以上の所定数のパルスを不揮発性記憶素子の第１部分集合に印加するステップが行われることに応じて、そのステップの後に、不揮発性記憶素子の第１部分集合のプログラミングを終了するステップを備える。
【０１１４】
上記本発明の詳細な説明は、説明のための例示にすぎない。上記本発明の詳細な説明は、詳細に開示した範囲に限定するものではない。本明細書が開示する技術は、様々に変形、変更し得る。上記説明した実施形態は、本発明の原理とその具体的な適用例をよく説明するために選ばれたものであり、当業者は、具体的な事例に則して本発明を様々に変更し得る。本発明の技術的範囲は、添付された特許請求の範囲によって定まるものである。
【図１】
2012531694.tif 000003
【図２】
2012531694.tif 000004
【図３】
2012531694.tif 000005
【図４】
2012531694.tif 000006
【図５Ａ】
2012531694.tif 000007
【図５Ｂ】
2012531694.tif 000008
【図６】
2012531694.tif 000009
【図７】
2012531694.tif 000010
【図８Ａ】
2012531694.tif 000011
【図８Ｂ】
2012531694.tif 000012
【図８Ｃ】
2012531694.tif 000013
【図９】
2012531694.tif 000014
【図１０】
2012531694.tif 000015
【図１１Ａ】
2012531694.tif 000016
【図１１Ｂ】
2012531694.tif 000017
【図１１Ｃ】
2012531694.tif 000018
【図１１Ｄ】
2012531694.tif 000019
【図１１Ｅ】
2012531694.tif 000020
【図１１Ｆ】
2012531694.tif 000021
【図１１Ｇ】
2012531694.tif 000022
【図１１Ｈ】
2012531694.tif 000023
【図１１Ｉ】
2012531694.tif 000024
【図１２】
2012531694.tif 000025
【図１３】
2012531694.tif 000026
【図１４】
2012531694.tif 000027
【図１５】
2012531694.tif 000028
【図１６】
2012531694.tif 000029
【図１７】
2012531694.tif 000030
【図１８】
2012531694.tif 000031
【図１９】
2012531694.tif 000032
【図２０】
2012531694.tif 000033
【図２１】
2012531694.tif 000034
【図２２】
2012531694.tif 000035
【図２３】
2012531694.tif 000036
【図２４】
2012531694.tif 000037
【図２５】
2012531694.tif 000038
【図２６】
2012531694.tif 000039
【図２７】
2012531694.tif 000040
【国際調査報告】
2012531694.tif 000041
2012531694.tif 000042
2012531694.tif 000043