(57)【要約】  徐々に増大する１連のプログラム電圧パルスとして実現されるプログラム電圧信号が、不揮発性記憶要素の集合に印加される。メモリセルをプログラミングする際にそのメモリ状態が異なれば、用いることが可能な増加値も異なる。より低いしきい値電圧のメモリ状態にメモリセルをプログラミングする場合には小さい増加値を用いればよく、より高いしきい値電圧のメモリ状態にメモリセルをプログラミングする場合には、ある実施例における最も高いメモリ状態のような、より大きい増加値を用いればよい。ある集合を成す不揮発性記憶要素を、１つのプログラム電圧信号を同時に印加した状態で互いに異なったメモリ状態にプログラムする場合、プログラミングを監視することによって、低い状態をプログラミングする動作が完了したかを判定することが可能である。これで、増加値を増加させて、最も高いメモリ状態にプログラミングする動作を完了させることができる。しきい値分布を妥当な範囲内に維持するために増加値を増大させる場合には、最も高いメモリ状態に対して粗／密プログラミング方法を組み入れることが可能である。
2008535145.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性記憶要素の集合にプログラム電圧信号を印加する工程と、
前記不揮発性記憶要素の集合のうちの第１の部分集合を、その第１の部分集合のそれぞれの不揮発性記憶要素が第１の目標状態に到達するまで前記プログラム電圧信号を第１の増加値だけ増加させることによって、前記第１の目標状態にプログラミングする工程と、
前記不揮発性記憶要素の集合のうちの第２の部分集合をプログラミングする工程と、を備え、
前記第２の部分集合をプログラミングする工程が、
前記第１の部分集合のそれぞれの不揮発性記憶要素が前記第１の目標状態に到達するまで前記プログラム電圧信号を前記第１の増加値だけ前記のように増加させ、前記第１の部分集合のそれぞれの不揮発性記憶要素が前記第１の目標状態に到達した後で前記プログラム電圧信号を第２の増加値だけ増加させる、
不揮発性記憶装置をプログラミングする方法。
【請求項２】
前記不揮発性記憶要素の集合が、４つの状態のうちの１つにデータを記憶するように適合した不揮発性記憶要素の集合であり、
前記第１の目標状態が、前記第２の目標状態のしきい値電圧範囲未満のしきい値電圧範囲を含む、
請求項１に記載の方法。
【請求項３】
前記第２の目標状態が、前記４つの状態のうちの最も高いしきい値電圧範囲を含み、
前記第１の目標状態が、前記４つの状態のうちの二番目に高いしきい値電圧範囲を含む、
請求項２に記載の方法。
【請求項４】
前記第１の部分集合をプログラミングする前記工程が、
前記第１の部分集合の個々の不揮発性記憶要素が、前記プログラム電圧信号を前記第１の増加値だけ増加させる工程に先立って、
前記第１の目標状態に対する第１の目標レベルに到達したか否かをベリファイする工程と、
前記第１の目標レベルに到達する前記第１の部分集合の個々の不揮発性記憶要素のプログラミングを禁止する工程と、
前記第１の部分集合のそれぞれ不揮発性記憶要素が前記第１の目標レベルに到達するまで、前記ベリファイする工程と、前記プログラム電圧信号を前記第１の増加値だけ増加させる工程と、前記禁止する工程を繰り返す工程と、
を含む、請求項１に記載の方法。
【請求項５】
前記第２の部分集合をプログラミングする工程が、前記第１の部分集合のそれぞれの不揮発性記憶要素が前記第１の目標状態に到達するのに先立って、
前記第２の部分集合の個々の不揮発性記憶要素が、前記第２の目標状態に対する第２の目標レベルに到達したか否かをベリファイする工程と、
前記第２の部分集合のうち、前記第２の目標レベルに到達する個々の不揮発性記憶要素のプログラミングを禁止する工程と、
前記第１の部分集合のそれぞれ不揮発性記憶要素が前記第１の目標レベルに到達するまで、前記ベリファイする工程と、前記禁止する工程と、前記プログラム電圧信号を前記第１の増加値だけ増加させる工程を繰り返す工程と、
を含み、
前記ベリファイする工程と前記禁止する工程が、前記プログラム電圧を前記第１の増加値だけ増加させるのに先立って実行される、請求項１に記載の方法。
【請求項６】
前記第２の部分集合をプログラミングする工程が、前記第１の部分集合のそれぞれの不揮発性記憶要素が前記第１の目標状態に到達した後で、
前記プログラム電圧信号を前記第２の増加値だけ増加させる工程に先立って、
前記ベリファイする工程を実行する工程と、
前記禁止する工程と、
前記第２の部分集合のそれぞれ不揮発性記憶要素が前記第２の目標状態に到達するまで、前記プログラム電圧信号を前記第２の増加値だけ増加させる工程に先立って前記ベリファイする工程と、前記禁止する工程と、前記プログラム電圧信号を前記第２の増加値だけ増加させる前記工程を繰り返す工程と、
をさらに含む、請求項５に記載の方法。
【請求項７】
前記第２の部分集合をプログラミングする工程が、前記第１の部分集合のそれぞれの不揮発性記憶要素が前記第１の目標状態に到達した後で、
前記第２の部分集合の個々の不揮発性記憶要素が前記第２の目標状態の前記第２の目標レベルに到達したか否かを判定し、前記第２の部分集合のうち、前記第２の目標レベルに到達しなかった個々の不揮発性記憶要素が前記第２の状態の粗／密目標レベルに到達したか否かを判定することによって前記第２の部分集合をベリファイする工程と、
前記禁止する工程を実行する工程と、
前記粗／密目標レベルに到達しなかった前記第２の部分集合の個々の記憶要素に第１のビット線電圧をプログラミングする工程と、
前記粗／密目標レベルには到達したが、前記第２の目標レベルには到達しなかった前記第２の部分集合の個々の記憶要素に第２のビット線電圧をプログラミングする工程と、
前記第２の部分集合のそれぞれ不揮発性記憶要素が前記第２の目標レベルに到達するまで、判定に基づいて前記第２の部分集合をベリファイする前記工程と、前記第２の部分集合の個々の記憶要素をプログラミングする工程を繰り返す工程と、
をさらに含む、請求項５に記載の方法。
【請求項８】
前記第２の部分集合をプログラミングする工程が、前記第１の部分集合のそれぞれの不揮発性記憶要素が前記第１の目標状態に到達した後で、
前記第２の部分集合の個々の不揮発性記憶要素が前記第２の目標状態の前記第２の目標レベルに到達したか否かを判定し、前記第２の目標レベルに到達しなかった前記第２の部分集合の個々の不揮発性記憶要素が前記第２の状態の粗／密目標レベルに到達したか否かを判定することによって前記第２の部分集合をベリファイする工程と、
前記禁止する工程と、
前記粗／密目標レベルに到達しなかった前記第２の部分集合の個々の記憶要素に第１のビット線電圧をプログラミングする工程と、
前記粗／密目標レベルには到達したが、前記第２の目標レベルには到達しなかった前記第２の部分集合の個々の記憶要素に第２のビット線電圧をプログラミングする工程であり、前記粗／密目標レベルには到達したが、前記第２の目標レベルには到達しなかった前記第２の部分集合の個々の記憶要素に第２のビット線電圧をプログラミングする工程が、これら個々の記憶要素が実際に前記第２の目標レベルに到達したかどうかとは無関係に前記プログラム電圧単一パルスを印加して、これらが前記第２の目標レベルに到達したことをベリファイする工程を含む、工程と、
前記第２の部分集合のそれぞれの不揮発性記憶要素が前記第２の目標レベルに到達したとベリファイされるまで、前記判定に基づいて前記第２の部分集合をベリファイする工程と、前記禁止する工程と、前記第２の部分集合の個々の記憶要素をプログラミングする工程を繰り返す工程と、
をさらに含む、請求項５に記載の方法。
【請求項９】
前記第２の部分集合をプログラミングする工程が、前記第１の部分集合のそれぞれの不揮発性記憶要素が前記第１の目標状態に到達した後で、
前記第１の部分集合のそれぞれの不揮発性記憶要素が前記第１の目標状態に到達した後で、前記プログラム電圧信号を第１のパルスを第３の増加値だけ増大させ、次に、前記プログラム電圧信号を前記第２の増加値だけ増大させる工程を含み、
前記第３の増加値が前記第２の増加値より大きい、請求項１に記載の方法。
【請求項１０】
前記第２の増加値が前記第１の増加値より大きい、請求項１に記載の方法。
【請求項１１】
前記プログラム電圧信号が、前記不揮発性記憶要素の集合中のすべての不揮発性記憶要素によって受信される共通の制御ゲート電圧信号である、請求項１に記載の方法。
【請求項１２】
前記プログラム電圧信号が、前記第１の増加値または前記第２の増加値にしたがった大きさで増加するパルスの集合を含む、請求項１１に記載の方法。
【請求項１３】
前記不揮発性記憶要素の集合が、データのページに対応する、請求項１に記載の方法。
【請求項１４】
前記不揮発性記憶要素の集合が、ＮＡＮＤ型のフラッシュメモリデバイスを含む、請求項１に記載の方法。
【請求項１５】
前記不揮発性記憶要素の集合が、マルチステートのフラッシュメモリデバイスを含む、請求項１に記載の方法。
【請求項１６】
前記不揮発性記憶要素の集合が、ＮＡＮＤ型のマルチステートフラッシュメモリデバイスを含む、請求項１に記載の方法。
【請求項１７】
前記不揮発性記憶要素の集合が、前記第１の目標状態にプログラミングされることになっている前記集合の不揮発性記憶要素のより大きい部分集合の一部であり、
前記より大きい部分集合が、前記第１の目標状態に対するプログラミングが成功しなかった不揮発性記憶要素を含み、
前記第１の目標状態に対するプログラミングが成功しなかった前記不揮発性記憶要素が、読み出し動作中にエラー訂正を用いて取り扱われる、
請求項１に記載の方法。
【請求項１８】
前記方法が、第３の部分集合のそれぞれの不揮発性記憶要素が第３の目標状態に到達するまで、前記プログラム電圧信号を前記第１の増加値だけ増加させることによって前記不揮発性記憶要素の集合の前記第３の部分集合を前記第３の目標状態にプログラミングする工程をさらに含み、
前記第２の部分集合をプログラミングする前記工程が、前記第１の部分集合のそれぞれの不揮発性記憶要素が前記第１の目標状態に到達し、前記第３の部分集合のそれぞれの不揮発性記憶要素が前記第３の目標状態に到達した後で、前記プログラム電圧信号を前記第２の増加値だけ増大させる工程だけを含む、
請求項１に記載の方法。
【請求項１９】
前記第１の部分集合をプログラミングする前記工程が、前記第１の部分集合の一部分が第１のベリファイレベルに到達するまで前記プログラム電圧信号を第３の増加値だけ増加させ、次に、前記第１の部分集合のそれぞれの不揮発性記憶要素が前記第１の目標状態に到達するまで前記プログラム電圧信号を前記第１の増加値だけ増加させる工程を含み、
前記第３の増加値が前記第１の増加値より大きく、
前記第１のベリファイレベルが、不揮発性記憶要素が前記第１の目標状態にプログラムされたか否かを判定するベリファイレベルより低い、
請求項１に記載の方法。
【請求項２０】
不揮発性記憶要素の集合と、
前記不揮発性記憶要素の集合と通信する１つ以上の制御回路とを備え、
前記１つ以上の制御回路が前記不揮発性記憶要素の集合を、
前記不揮発性記憶要素の集合にプログラム電圧信号を印加する工程と、
前記不揮発性記憶要素の集合の第１の部分集合を、前記第１の部分集合のそれぞれの不揮発性記憶要素が第１の目標状態に到達するまで前記プログラム電圧信号を第１の増加値だけ増加させることによって、前記第１の目標状態にプログラミングする工程と、
前記不揮発性記憶要素の集合の第２の部分集合をプログラミングする工程と、によってプログラムし、
前記第２の部分集合をプログラミングする工程が、前記第１の部分集合のそれぞれの不揮発性記憶要素が前記第１の目標状態に到達するまで前記プログラム電圧信号を前記第１の増加値だけ前記のように増加させ、前記第１の部分集合のそれぞれの不揮発性記憶要素が前記第１の目標状態に到達した後で前記プログラム電圧信号を第２の増加値だけ増加させる、不揮発性記憶システム。
【請求項２１】
前記第２の目標状態が、前記第１の状態より高いしきい値電圧範囲を含む、請求項２０に記載の不揮発性記憶システム。
【請求項２２】
前記第２の部分集合をプログラミングする工程が、前記第１の部分集合のそれぞれの不揮発性記憶要素が前記第１の目標状態に到達した後で、
前記プログラム電圧信号を前記第２の増加値だけ増加させる前記工程に先立って、前記第２の部分集合の個々の不揮発性記憶要素が前記第２の目標状態の第２の目標レベルに到達したかどうかベリファイする工程と、
前記第２の部分集合のうち、前記第２の目標レベルに到達した個々の不揮発性記憶要素のプログラミングを禁止する工程と、
前記第２の部分集合のそれぞれ不揮発性記憶要素が前記第２の目標レベルに到達するまで、前記ベリファイする工程と、前記禁止する工程と、前記プログラム電圧信号を前記第２の増加値だけ増加させる工程を繰り返す工程と、
をさらに含む、請求項２０に記載の不揮発性記憶システム。
【請求項２３】
前記第２の部分集合をプログラミングする工程が、前記第１の部分集合のそれぞれの不揮発性記憶要素が前記第１の目標状態に到達した後で、
前記第２の部分集合の個々の不揮発性記憶要素が前記第２の目標状態の第２の目標レベルに到達したか否かを判定し、前記第２の目標レベルに到達しなかった前記第２の部分集合の個々の不揮発性記憶要素が前記第２の状態の粗／密目標レベルに到達したかどうか判定することによって前記第２の部分集合をベリファイする工程と、
前記第２の目標レベルに到達した前記第２の部分集合の個々の記憶要素に第２の目標レベルをプログラミングすることを禁止する工程と、
前記粗／密目標レベルに到達しなかった前記第２の部分集合の個々の記憶要素に第１のビット線電圧をプログラミングする工程と、
前記粗／密目標レベルには到達したが、前記第２の目標レベルには到達しなかった前記第２の部分集合の個々の記憶要素に第２のビット線電圧をプログラミングする工程と、
前記第２の部分集合のそれぞれ不揮発性記憶要素が前記第２の目標レベルに到達するまで、前記ベリファイする工程と、前記禁止する工程と、前記第２の部分集合の個々の記憶要素をプログラミングする工程を繰り返す工程と、
をさらに含む、請求項２０に記載の不揮発性記憶システム。
【請求項２４】
前記第２の目標状態が、前記第１の目標状態より高いしきい値電圧範囲を含み、
前記第２の増加値が前記第１の増加値より大きい、
請求項２０に記載の不揮発性記憶システム。
【請求項２５】
前記プログラム電圧信号が、前記不揮発性記憶要素の集合中のすべての不揮発性記憶要素によって受信される共通の制御ゲート電圧信号である、請求項２０に記載の不揮発性記憶システム。
【請求項２６】
前記不揮発性記憶要素の集合が、データのページに対応する、請求項２０に記載の不揮発性記憶システム。
【請求項２７】
前記不揮発性記憶要素の集合が、ＮＡＮＤ型のマルチステートフラッシュメモリデバイスを含む、請求項２０に記載の不揮発性記憶システム。
【請求項２８】
前記１つ以上の制御回路が、コマンド回路、状態マシン、行制御回路、列制御回路、ウェル制御回路、ソース制御回路、データ入／出力回路およびコントローラのうちの少なくとも１つを含む、請求項２０に記載の不揮発性記憶システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性メモリのプログラミングに関する。
【０００２】
（優先権請求事項）
本出願は、その全体を参照してここに組み込む、２００４年１１月１６日に提出された「ＨＩＧＨ  ＳＰＥＥＤ  ＰＲＯＧＲＡＭＭＩＮＧ  ＳＹＳＴＥＭ  ＷＩＴＨ  ＲＥＤＵＣＥＤ  ＯＶＥＲＰＲＯＧＲＡＭＭＩＮＧ」という題名の米国特許出願第１０／９９０，７０２号の部分継続出願である。
【０００３】
半導体メモリデバイスは、さまざまな電子装置内で、ますます多く使用されるようになっている。例えば、不揮発性半導体メモリは、携帯電話、デジタルカメラ、パーソナルデジタルアシスタント、モバイルコンピューティング装置、非モバイルコンピューティング装置、およびその他の装置の中で使用されている。電気的に消去可能でプログラム可能な読み出し専用メモリ（ＥＥＰＲＯＭ）およびフラッシュメモリは、特に普及している不揮発性半導体メモリである。
【０００４】
ＥＥＰＲＯＭとフラッシュメモリは共に、半導体基板中のチャネル領域の上方に位置し、チャネル領域と絶縁されている浮遊ゲートを利用している。この浮遊ゲートは、ソース領域とドレイン領域の間に位置されている。制御ゲートは、浮遊ゲートの上方にあって浮遊ゲートとは絶縁されている。トランジスタのしきい値電圧は、浮遊ゲートに保持されている電荷の量によって制御される。すなわち、ソースとドレイン間を導通させる目的でトランジスタをオンさせるために制御ゲートに印加しなければならない電圧の最小値は、浮遊ゲート上の電荷のレベルによって制御される。
【０００５】
ＥＥＰＲＯＭデバイスまたはフラッシュメモリデバイスをプログラミングするとき、一般的には、制御ゲートにはプログラム電圧が印加され、ビット線は接地される。チャネルからの電子は浮遊ゲートに注入される。電子が浮遊ゲート中に蓄積されると、浮遊ゲートは負に帯電して、メモリセルのしきい値電圧が引き上げられ、これで、メモリセルはプログラムされた状態になる。プログラミングに関するさらなる情報は、双方ともそれらの全体を参照してここに組み込む２００３年３月５日に提出された「Ｓｅｌｆ  Ｂｏｏｓｔｉｎｇ  Ｔｅｃｈｎｉｑｕｅ」という題名の米国特許出願第１０／３７９，６０８号および２００３年７月２９日に提出された「Ｄｅｔｅｃｔｉｎｇ  Ｏｖｅｒ  Ｐｒｏｇｒａｍｍｅｄ  Ｍｅｍｏｒｙ」という題名の米国特許出願第１０／６２９，０６８号に見受けられる。
【０００６】
ＥＥＰＲＯＭデバイスおよびフラッシュメモリデバイスのなかには、２つの範囲の電荷を記憶させるために使う浮遊ゲートを有し、したがって、メモリセルを、２つの状態（消去された状態とプログラムされた状態）のどちらかとしてプログラム／消去することを可能としたものがある。たとえば、図１に、２つのしきい値電圧分布を示すグラフを図示する。ｘ軸にはしきい値電圧をプロットし、ｙ軸にはメモリセルの数をプロットしている。しきい値電圧分布２は、ゼロボルト未満となっている。一つの実施形態では、しきい値電圧分布２は、データ“１”を記憶する消去されたメモリセルに対応している。しきい値電圧分布４はゼロボルトより大きくなっている。一つの実施形態では、しきい値電圧分布４は、データ“０”を記憶するプログラムされたメモリセルに対応している。
【０００７】
マルチステートフラッシュメモリセルは、禁止電圧範囲によって分離されている複数の異なる許容しきい値電圧範囲を特定することによって実現される。異なるしきい値電圧範囲のそれぞれは、データビットの集合の所定の値に対応している。図２に、２ビットのデータ（すなわち、４つのデータ状態）を記憶しているメモリセルのしきい値電圧分布を示す。一つの実施形態では、しきい値電圧分布２は、消去された状態（すなわち“１１”を記憶している）にあるメモリセルを表しており、負のしきい値電圧レベルを有している。しきい値電圧分布１０は、データ“１０”を記憶するメモリセルを表しており、正のしきい値電圧レベルを有している。しきい値電圧分布１２は、データ“００”を記憶するメモリセルを表している。しきい値電圧分布１４は、データ“０１”を記憶しているメモリセルを表している。いくつかの実施（上に例示したようなもの）では、これらのデータ値（たとえば論理状態）を、グレイコード割り当て方法を用いてしきい値範囲に割り当てることによって、浮遊ゲートのしきい値電圧が間違ってその隣の物理状態にずれても、たった１つの論理ビットしか影響されないようにしている。これら分布のそれぞれを、上記の状態とは異なったデータ状態に対応させることが可能な実施形態もある。メモリセルにプログラムされたデータとセルのしきい値電圧範囲との間の具体的な関係は、メモリセルに対して採用されるデータ符号化スキームによって異なる。たとえば、その双方の全体を参照してここに組み込む、２００３年６月１３日に提出された「Ｔｒａｃｋｉｎｇ  Ｃｅｌｌｓ  Ｆｏｒ  Ａ  Ｍｅｍｏｒｙ  Ｓｙｓｔｅｍ」という題名の米国特許第６，２２２，７６２号と米国特許出願第１０／４６１，２４４号には、マルチステートフラッシュメモリセルのさまざまなデータ符号化スキームが記載されている。くわえて、本発明に関わる実施形態は、２ビットのデータより多いデータを記憶するメモリセルにも適用可能である。
【０００８】
しきい値電圧分布２と４は、ベリファイ動作が成されないときの消去された電圧分布とプログラムされた電圧分布をそれぞれ示している。これらの分布は、単一のプログラミングパルスまたは消去パルスによってメモリセルをプログラミングまたは消去することによって得ることが可能である。メモリアレイのサイズと生産プロセス中の変動しだいで、しきい値電圧分布４は、Ｖｔｈの自然幅として知られているある幅を有する。
【０００９】
図２から分かるように、分布１０、１２、１４（マルチステートデバイスのプログラミングに対応している）は、分布４のＶｔｈの自然幅よりはるかに狭くする必要がある。このようは狭いしきい値電圧分布を達成するには、図３（Ａ）、３（Ｂ）、３（Ｃ）に示すような複数のプログラミングパルスとベリファイ動作を使用するプロセスを用いればよい。
【００１０】
図３（Ａ）に、１連のパルスとして制御ゲートに印加されるプログラミング電圧信号Ｖｐｇｍを示す。パルスの大きさは、それぞれ次のパルスに従って、図３（Ａ）でΔＶｐｇｍと示されている所定のステップサイズ（たとえば０．２〜０．４Ｖ）だけ増大する。パルス間の期間では、ベリファイ動作が実行される。プログラム可能状態の数が増大するに連れて、ベリファイ動作の数が増大し、より多くの時間が必要とされる。時間の負荷を低減させる１つの手段は、より効率的なベリファイプロセスを用いることであるが、このプロセスの例が、その全体を参照してここに組み込む２００２年１２月５日に提出された「Ｓｍａｒｔ  Ｖｅｒｉｆｙ  Ｆｏｒ  Ｍｕｌｔｉ−Ｓｔａｔｅ  Ｍｅｍｏｒｉｅｓ」という題名の米国特許出願第１０／３１４，０５５号に開示されている。実際には、図３（Ａ）のパルスは、ベリファイのための時間分だけ互いに分離されている。しかしながら、図３をより読みやすくするために、このベリファイのための時間間隔は図面では省略されている。
【００１１】
図３（Ｂ）は、プログラミングされる関連のメモリセルのビット線に印加される電圧信号を示している。図３（Ｃ）は、プログラミングされるメモリセルのしきい値電圧を示している。ここで、図３（Ｃ）のグラフは、読みやすいように平滑化されている。プログラミングパルスごとに、ベリファイ動作が実行される（図示せず）。このベリファイ動作中に、プログラムされるメモリセルのしきい値電圧がチェックされる。このメモリセルのしきい値電圧が目標値（たとえばＶｖｅｒｉｆｙ）より大きければ、ビット線電圧を０ＶからＶｉｎｈｉｂｉｔ（たとえば時点ｔ４で）引き上げることによって、このメモリセルに対するプログラミングが、次のサイクルでは禁止される。
【００１２】
他の電子デバイスの場合と同じように、できるだけ早くプログラムされるメモリデバイスに対する消費者からの需要が存在する。たとえば、フラッシュメモリカードに画像を記憶するデジタルカメラのユーザは、写真を撮るたびに不必要に長い時間を待つことを望まない。妥当な速度でプログラミングできることに加えて、マルチステートメモリセルに対してデータを正しく記憶させるためには、メモリセルのレベルを明瞭な方法でプログラミングし、読み出すことが可能となるように、マルチステートメモリセルのしきい値電圧の複数の範囲を十分な余裕をもって互いに引き離すべきである。しきい値電圧分布は緊密であることが推奨される。緊密なしきい値電圧分布達成するために、一般的には、小さいプログラムステップを用い、これによって、セルのしきい値電圧をより低速でプログラミングするようにされていた。所望のしきい値電圧分布がより緊密であるほど、このステップは小さくなり、プログラミングプロセスは低速となる。
【００１３】
プログラミングプロセス速度を不当に低速にすることなく、緊密なしきい値電圧分布を達成するための１つの解決策として、２フェーズ式プログラミングプロセスを用いるものがある。第１フェーズである粗いプログラミングフェーズでは、緊密なしきい値電圧分布を達成することにはあまり注意を払うことなく、しきい値電圧を迅速に引き上げようとする。第２フェーズである密なプログラミングフェーズでは、低速でしきい値電圧を引き上げて目標しきい値電圧にまで到達させ、これによって、緊密なしきい値電圧分布を達成しようとする。粗／密プログラミング方法の１例が、その全体を参照してここに組み込む米国特許第６，６４３，１８８号に見受けられる。
【００１４】
図４と図５に、粗／密プログラミング方法の１例の詳細を示す。図４（Ａ）と図５（Ａ）は、制御ゲートに印加されるプログラミング電圧Ｖｐｇｍを示している。図４（Ｂ）と図５（Ｂ）は、プログラムされているメモリセルに対するビット線電圧を示している。図４（Ｃ）と図５（Ｃ）は、プログラムされているメモリセルのしきい値電圧を示している。図４と図５の例は、図中ではＶｖＡｉとＶｖＡとして示す２つのベリファイレベルを用いてメモリセルを状態Ａにプログラミングする様子を示している。最終的な目標電圧はＶｖＡである。メモリセルのしきい値電圧がＶｖＡに到達すると、このメモリセルに対応するビット線に対して禁止電圧を印加することによって、このメモリセルをさらにプログラミングすることを禁止する。たとえば、ビット線電圧はＶｉｎｈｉｂｉｔにまで引き上げることが可能である（図４（Ｂ）と図５（Ｂ）を参照）。しかしながら、あるメモリセルが目標値ＶｖＡに近い（しかしこれより低い）しきい値電圧に到達すると、後続のプログラミングパルスの期間中におけるこのメモリセルのしきい値電圧の変動を、一般的には０．３〜０．８Ｖ台のあるバイアス電圧をビット線に印加することによって遅らせる。しきい値電圧の変動の速度は次の数発のプログラミングパルスの間に減少するため、最終的なしきい値電圧分布を、図３に示す方法による場合よりも狭いものとすることが可能である。この方法を実施するためには、ＶｖＡより低い第２のベリファイレベルが用いられる。図４と図５では、この第２のベリファイレベルは、ＶｖＡ１と示されている。メモリセルのしきい値電圧がＶｖＡ１より大きく、しかしなおＶｖＡより低い場合、メモリセルに対するしきい値電圧変動は、ビット線バイアス電圧ＶＳ（図５Ｂ）を印加することによって後続のプログラミングパルスの期間中に減少する。ここで、この場合、それぞれの状態に対して２つのベリファイ動作が必要とされる。粗／密プログラミング方法が適用される対象である状態ごとに対応する最終的なベリファイレベル（たとえばＶｖＡ）で実行される１つのベリファイ動作と、状態ごとに対応する第２のベリファイレベル（たとえばＶｖＡ１）で実行される１つのベリファイ動作である。これによって、メモリセルをプログラムするために必要とされる合計時間が増大する。しかしながら、このプロセスをスピードアップするには、ステップサイズΔＶｐｇｍを大きくすればよい。
【００１５】
図４（Ａ）、４（Ｂ）、４（Ｃ）に、単一のプログラミングパルスでしきい値電圧がＶｖＡ１とＶｖＡを越えるメモリセルの動作を示す。たとえば、ｔ２からｔ３の間でＶｖＡ１とＶｖＡを越えるしきい値電圧が図４（Ｃ）に示されている。したがって、ｔ３以前ではメモリセルは粗いフェーズにある。ｔ３を過ぎると、メモリセルは禁止モードに入る。
【００１６】
図５（Ａ）、５（Ｂ）、５（Ｃ）に、粗いプログラミングフェーズと密なプログラミングフェーズの双方となるメモリセルを示す。メモリセルのしきい値電圧は、ｔ２からｔ３の間でＶｖＡ１を横切る。ｔ３以前ではメモリセルは粗いフェーズにある。ｔ３を過ぎると、ビット線電圧がＶＳに引き上げられて、メモリセルが密なフェーズとなる。ｔ３からｔ４の間に、メモリセルのしきい値電圧がＶｖＡを越える。したがって、ビット線電圧をＶｉｎｈｉｂｉｔに引き上げることによって、メモリセルの更なるプログラミングが禁止される。
【００１７】
一般的に、妥当なプログラミング時間を維持するために、粗／密プログラミングアルゴリズムは、最も高いメモリ状態（最も高い正のしきい値電圧範囲に対応する状態）には適用しない。図２で、分布１４で表す状態Ｃのような最も高い状態を、より高い状態と区別する必要はない。一般的には、次に低い状態（たとえば、分布１２で表す状態Ｂ）と区別するには、最小のしきい値レベルより上のレベルでこの状態にセルをプログラムするだけでよい。したがって、これらのセルの分布は、デバイスの性能に悪い影響を与えることなく、より広いしきい値電圧範囲を占めることが可能である。粗／密プログラミング方法では、上記のようにより多くのベリファイステップを必要とする。そのうえ、粗／密プログラミング方法を用いると、必要とされるプログラミングパルスの総数が増加する。最も高いしきい値電圧状態では、たいていの場合、それほど密なしきい値電圧分布を必要とはしないため、全体的なプログラミング時間を減少させるために、一般的に粗／密プログラミングは用いない。
【００１８】
プログラミング時間が増大することに加えて、最も高いしきい値電圧状態に対して粗／密プログラミング方法を用いると、ＮＡＮＤアーキテクチャ（以下により詳細に説明する）で実現されているフラッシュメモリデバイス内でプログラムディスターブの発生頻度が増加しかねない。選択されたＮＡＮＤストリング上の選択されたセルの制御ゲートにプログラム電圧を印加するときには、このプログラム電圧は適切なワード線に印加される。このワード線もまた、選択されたメモリセルのブロック中の一つおきのＮＡＮＤストリングのメモリセルに接続される。これらのメモリセルのいくつかは、プログラミングされないことになっている。あるワード線の１つのセルを、同じワード線に接続されている他のセルをプログラミングすることなくプログラムしようとする場合に、ある問題が発生する。プログラム電圧はワード線に接続されているすべてのセルに印加されるため、このワード線に接続されている選択されなかったセル（プログラムされないことになっているセル）が、不注意にプログラムされるようになる。選択されたワード線上の選択されなかったセルが意図しないにもかかわらずプログラムされる現象を、「プログラムディスターブ」と呼ぶ。
【００１９】
プログラムディスターブを解消するまたは制限するさまざまな技法が存在するが、多くの設計者は、プログラムディスターブが発生する可能性をさらに低減させるために、最も高いしきい値電圧のメモリ状態に対して粗／密プログラミングアルゴリズムは用いないようにする。プログラムディスターブは、ワード線に対して高いプログラム電圧を印加しているときにもっとも頻繁に発生する。粗／密プログラミングでは必要とされるプログラミングパルスの数が増加するため、プログラム電圧が、粗／密プログラミングを用いない場合に到達するより高いレベルに到達しかねない。したがって、ＮＡＮＤアーキテクチャの多くの実施例は、プログラムディスターブの発生を最小に抑えるため、最も高いしきい値電圧状態に対しては粗／密プログラミングを適用しないようにしている。
【００２０】
フラッシュメモリのプログラミング時間を低減する目的で粗／密プログラミングなどの技法が用いられているが、プログラミング時間を低減させることによってデバイス性能をさらに向上させる必要性が存在する。
【発明の開示】
【発明が解決しようとする課題】
【００２１】
本書に記載する技術は、不揮発性メモリと関連するプログラミング時間を低減しようとするものである。
【課題を解決するための手段】
【００２２】
一つの実施形態では、徐々に増大する１連のプログラム電圧パルスとして実現されるプログラム電圧信号が、不揮発性記憶要素の集合に印加される。メモリセルをプログラミングする際にそのメモリ状態が異なれば、異なる増加値を用いてもよい。低いしきい値電圧のメモリ状態にメモリセルをプログラミングする場合には小さい増加値を用いればよく、高いしきい値電圧のメモリ状態にメモリセルをプログラミングする場合には、ある実施例における最も高いメモリ状態などの大きい増加値を用いればよい。ある集合を成す不揮発性記憶要素を、１つのプログラム電圧信号を同時に印加した状態で互いに異なったメモリ状態にプログラムする場合、低い状態をプログラミングする動作が完了したか部分的に完了したかを判定するためにプログラミングを監視してもよい。これで、増加値を増加させて、最も高いメモリ状態にプログラミングする動作を完了させることが可能である。しきい値分布を妥当な範囲内に維持するために増加値を増大させる場合には、最も高いメモリ状態に対して粗／密プログラミング方法を組み入れることが可能である。
【００２３】
一実施形態によれば、不揮発性記憶要素の集合に対してプログラム電圧信号を印加するステップを含む、不揮発性記憶装置をプログラミングする方法が提供される。この不揮発性記憶要素集合の第１の部分集合は、第１の部分集合のそれぞれの不揮発性記憶要素が第１の目標状態に到達するまで、プログラム電圧信号を第１の増加値だけ増大させることによって第１の目標状態にプログラムされる。不揮発性記憶素子集合の第２の部分集合は、第２の目標状態にプログラムされる。この第２の部分集合をプログラミングするステップは、第１の部分集合のそれぞれの不揮発性記憶要素が第１の目標状態に到達するまでプログラム電圧信号を第１の増加値だけ増大させるステップと、次に、第１の部分集合のそれぞれの不揮発性記憶要素が第１の目標状態に到達するとプログラム電圧信号を第２のステップサイズだけ増大させるステップを含んでいる。一実施形態では、第１の部分集合は、第１の目標状態にプログラミングすることになっている集合のうちの不揮発性記憶要素の大きい部分集合の一部であってもよい。第１の目標状態に対するプログラムが不成功に終わったこの大きい部分集合の不揮発性記憶要素は、読み出し動作中にエラー訂正を用いることによって取り扱うことが可能である。
【００２４】
本発明の上記の目的と他の目的は、本発明の好ましい実施形態が図面を参照して記載されている以下の説明を読むことによってより明瞭となるであろう。
【発明を実施するための最良の形態】
【００２５】
本発明の実施に適したフラッシュメモリシステムの一例では、ＮＡＮＤ構造を使用する。ＮＡＮＤ構造では、２つの選択ゲートの間に複数のトランジスタが直列に配置されている。直列のトランジスタと選択ゲートは、ＮＡＮＤストリングと呼ばれる。図６は、１つのＮＡＮＤストリングを示す上面図である。図７は、その等価回路である。図５および図６に示すＮＡＮＤストリングは、選択ゲート１２０と第２の選択ゲート１２２との間に挟まれている直列の４つのトランジスタ１００、１０２、１０４、１０６を備えている。選択ゲート１２０は、ＮＡＮＤストリングをビット線接点１２６に接続する。選択ゲート１２２は、ＮＡＮＤストリングをソース線接点１２８に接続する。選択ゲート１２０は、制御ゲート１２０ＣＧに適切な電圧を印加することによって制御される。選択ゲート１２２は、制御ゲート１２２ＣＧに適切な電圧を印加することによって制御される。トランジスタ１００、１０２、１０４、１０６のそれぞれは、制御ゲートと浮遊ゲートを有する。トランジスタ１００は、制御ゲート１００ＣＧと浮遊ゲート１００ＦＧを有する。トランジスタ１０２は、制御ゲート１０２ＣＧと浮遊ゲート１０２ＦＧを有する。トランジスタ１０４は、制御ゲート１０４ＣＧと浮遊ゲート１０４ＦＧを有する。トランジスタ１０６は、制御ゲート１０６ＣＧと浮遊ゲート１０６ＦＧを有する。制御ゲート１００ＣＧは、ワード線ＷＬ３に接続されている。制御ゲート１０２ＣＧは、ワード線ＷＬ２に接続されている。制御ゲート１０４ＣＧは、ワード線ＷＬ１に接続されている。制御ゲート１０６ＣＧは、ワード線ＷＬ０に接続されている。一実施形態では、トランジスタ１００、１０２、１０４、１０６のそれぞれがメモリセルとなる。他の実施形態では、メモリセルが複数のトランジスタを含んでいてもよく、図５および図６に示した構成と異なっていてもよい。選択ゲート１２０は、選択線ＳＧＤに接続され、選択ゲート１２２は、選択線ＳＧＳに接続される。
【００２６】
図８は、上記のＮＡＮＤストリングの断面図を示す。図８に示すように、ＮＡＮＤストリングのトランジスタはｐ−ウェル領域１４０に形成される。各トランジスタは、制御ゲート（１００ＣＧ、１０２ＣＧ、１０４ＣＧ、および１０６ＣＧ）と浮遊ゲート（１００ＦＧ、１０２ＦＧ、１０４ＦＧ、および１０６ＦＧ）からなるスタックゲート構造を含む。浮遊ゲートは、ｐ−ウェルの表面上の酸化膜上に形成される。制御ゲートは、浮遊ゲートの上に位置している。制御ゲートと浮遊ゲートは、ポリシリコン間誘電体層によって分離されている。メモリセル（１００、１０２、１０４、１０６）の制御ゲートは、ワード線を形成する。Ｎ＋拡散層１３０、１３２、１３４、１３６、１３８は隣接するセル間で共有されており、それによりセルは相互に直列に接続されてＮＡＮＤストリングを形成する。これらのＮ＋拡散層は、各セルのソースおよびドレインを形成する。例えば、Ｎ＋拡散層１３０は、トランジスタ１２２のドレイン、およびトランジスタ１０６のソースとして働く。Ｎ＋拡散層１３２は、トランジスタ１０６のドレイン、およびトランジスタ１０４のソースとして働く。Ｎ＋拡散層１３４は、トランジスタ１０４のドレイン、およびトランジスタ１０２のソースとして働く。Ｎ＋拡散層１３６は、トランジスタ１０２のドレイン、およびトランジスタ１００のソースとして働く。Ｎ＋拡散層１３８は、トランジスタ１００のドレイン、およびトランジスタ１２０のソースとして働く。Ｎ＋拡散層１２６は、ＮＡＮＤストリングのビット線につながっており、Ｎ＋拡散層１２８は、複数のＮＡＮＤストリングの共通ソース線につながっている。
【００２７】
図６〜図８では、ＮＡＮＤストリング内に４つのメモリセルを示しているが、４つのトランジスタの使用する構成は、一例であることに留意されたい。ＮＡＮＤストリングは、４つ未満のメモリセルを有していてもよく、又は、４つを超えるメモリセルを有していてもよい。例えば、８つのメモリセル、１６のメモリセル、３２のメモリセルなどを含むことができるＮＡＮＤストリングがある。本明細書における説明は、ＮＡＮＤストリング内のメモリセルがいかなる数でも有効である。
【００２８】
各メモリセルは、アナログ又はデジタル形式で表されたデータを記憶することが可能である。１ビットのデジタルデータを記憶する場合、メモリセルの可能なしきい値電圧の範囲は、論理データ「１」および「０」が割り当てられる２つの範囲に分割される。ＮＡＮＤ型フラッシュメモリの一例では、メモリセルの消去された後のしきい値電圧は負となり、論理「１」と定義される。プログラム後のしきい値電圧は正となり、論理「０」と定義される。しきい値電圧が負の状態でワード線に０Ｖを印加することによって読み出しが試みられた場合、メモリセルはオンになり、論理１が記憶されていることを示す。しきい値電圧が正の状態でワード線に０Ｖを印加することによって読み出しが試みられた場合、メモリセルはオンにならず、これは論理０が記憶されていることを示す。また、メモリセルは、複数のレベルの情報を記憶することも可能であり、それにより複数ビットのデジタルデータを記憶することも可能である。複数のレベルのデータを記憶する場合、可能なしきい値電圧の範囲は、記憶するレベルの数に分割される。例えば、４つのレベルの情報が記憶される場合、４つのしきい値電圧範囲が存在し、それぞれにデータ値「１１」、「１０」、「０１」、「００」が割り当てられる。ＮＡＮＤ型メモリの一例では、消去動作の後のしきい値電圧は負となり、「１１」と定義される。正のしきい値電圧は、「１０」、「０１」、「００」の状態のために使用される。
【００２９】
ＮＡＮＤ型フラッシュメモリおよびそれらの動作に関連する例は、次の米国特許／特許出願（それらのすべては、それらの全体が参照により本明細書に援用されるものとする）で提供されている。米国特許第５，５７０，３１５号明細書、米国特許第５，７７４，３９７号明細書、米国特許第６，０４６，９３５号明細書、米国特許第５，３８６，４２２号明細書、米国特許第６，４５６，５２８号明細書、および米国特許出願第０９／８９３，２７７号明細書（公開番号ＵＳ２００３／０００２３４８）。自己昇圧技術を含む、ＮＡＮＤフラッシュメモリのプログラミングに関する情報は、２００３年３月５日出願の「Ｓｅｌｆ  Ｂｏｏｓｔｉｎｇ  Ｔｅｃｈｎｉｑｕｅ」と題した米国特許出願第１０／３７９，６０８号明細書、および２００３年７月２９日出願の「Ｄｅｔｅｃｔｉｎｇ  Ｏｖｅｒ  Ｐｒｏｇｒａｍｍｅｄ  Ｍｅｍｏｒｙ」と題した米国特許出願第１０／６２９，０６８号明細書（両方の出願は、それらの全体が参照により本明細書に援用されるものとする）に記載されている。他のタイプのフラッシュメモリデバイスも、本発明とともに使用されてもよい。例えば、次の特許（それらの全体が参照により本明細書に援用されるものとする）にはＮＯＲ型のフラッシュメモリが記載されている。米国特許第５，０９５，３４４号明細書、米国特許第５，１７２，３３８号明細書、米国特許第５，８９０，１９２号明細書、および米国特許第６，１５１，２４８号明細書。別のフラッシュメモリタイプの例は、米国特許第６，１５１，２４８号明細書（その全体が参照により本明細書に援用されるものとする）に記載されている。
【００３０】
本書に記載する技術は、浮遊ゲートタイプのメモリに限られるものではなく、他のタイプの電荷蓄積用材料を用いているメモリセルにも適用可能である。たとえば、本書に記載する技術は、ナノクリスタルとして良く知られている、窒化物層や小型シリコンアイランドなどの、制御ゲート（またはワード線）とサブストレート間でさまざまなタイプの電荷蓄積領域／層を用いているメモリデバイスで用いることが可能である。
【００３１】
図９は、本発明を実施したフラッシュメモリシステムの一実施形態のブロック図である。メモリセルアレイ２０２は、列制御回路２０４と、行制御回路２０６と、ｃ−ソース制御回路２１０と、ｐ−ウェル制御回路２０８によって制御される。列制御回路２０４は、メモリセル内に記憶されたデータを読み出すために、プログラム動作中のメモリセルの状態を判定するために、およびビット線の電位レベルを制御してプログラミングを促進又はプログラミングを抑止するために、メモリセルアレイ２０２のビット線に接続されている。行制御回路２０６は、ワード線のうちのいずれかを選択するために、読み出し電圧を印加するために、プログラム電圧を印加するために、および消去電圧を印加するために、ワード線に接続されている。Ｃ−ソース制御回路２１０は、メモリセルに接続された共通ソース線（図１０に「Ｃ−ソース」として示す）を制御する。Ｐ−ウェル制御回路２０８は、ｐ−ウェル電圧を制御する。
【００３２】
メモリセル内に記憶されたデータは、列制御回路２０４によって読み出され、データ入力／出力バッファ２１２を経由して、外部Ｉ／Ｏ線に出力される。メモリセル内に記憶されるプログラムデータは、外部Ｉ／Ｏ線を経由してデータ入力／出力バッファ２１２に入力され、列制御回路２０４に転送される。外部Ｉ／Ｏ線は、コントローラ２１８に接続される。
【００３３】
フラッシュメモリデバイスを制御するためのコマンドデータは、コントローラ２１８に入力される。コマンドデータは、どのような動作が要求されているのかをフラッシュメモリに通知する。入力コマンドは、列制御回路２０４と、行制御回路２０６と、ｃ−ソース制御２１０と、ｐ−ウェル制御回路２０８と、データ入力／出力バッファ２１２とを制御する状態マシン２１６に転送される。状態マシン２１６は、さらに、レディ（ＲＥＡＤＹ）／ビジー（ＢＵＳＹ）や、パス（ＰＡＳＳ）／フェイル（ＦＡＩＬ）などの、フラッシュメモリのステータスデータを出力してもよい。
【００３４】
コントローラ２１８は、パーソナルコンピュータ、デジタルカメラ、パーソナルデジタルアシスタントなどのホストシステムに接続されている、又は、接続可能である。コントローラ２１８は、ホストからコマンドを受信するために、ホストからデータを受信するために、ホストにデータを提供するために、およびホストにステータス情報を提供するために、ホストと通信を行う。コントローラ２１８は、ホストからのコマンドを、状態マシン２１６と通信するコマンド回路２１４が解読して実行可能なコマンド信号に変換する。コントローラ２１８は、通常、メモリアレイに書き込まれる、又はメモリアレイから読み出されるユーザデータのためのバッファメモリを有している。
【００３５】
一例のメモリシステムは、コントローラ２１８を含む１つの集積回路と、１つ以上の集積回路チップ（それぞれがメモリアレイと、関連する制御、入力／出力、および状態マシン回路とを含む）を備える。メモリアレイとシステムのコントローラ回路は、１つ以上の集積回路チップ上に一緒に統合される傾向にある。メモリシステムは、ホストシステムの一部として組み込まれていてもよく、又は、ホストシステムに着脱可能に挿入されるメモリカード（又はその他のパッケージ）内に含まれていてもよい。そのような着脱可能なカードは、メモリシステム全体（例えば、コントローラを含む）を含んでいてもよく、又は、メモリアレイおよび関連する周辺回路のみを含んでいてもよい（コントローラはホスト内に組み込まれる）。このように、コントローラ（または制御機能）は、ホスト内に組み込まれることも、又は着脱可能なメモリシステム内に含まれることも可能である。
【００３６】
一部の実施形態では、図９のコンポーネントのうちのいくつかは、組み合わせることが可能である。さまざまな設計で、図９のコンポーネントのうちで、メモリセルアレイ２０２以外の１つ以上のコンポーネントが、制御回路と考えることが可能である。たとえば、１つ以上の制御回路は、コマンド回路、状態マシン、行制御回路、列制御回路、ウェル制御回路、ソース制御回路、データ入／出力回路およびコントローラのうちのどれか１つまたはこれらを組み合わせたものを含んでいてもよい。
【００３７】
図１０を参照して、メモリセルアレイ２０２の構造の例を説明する。１例として、１０２４個のブロックに区分けされているＮＡＮＤ型フラッシュＥＥＰＲＯＭを説明する。それぞれのブロックに記憶されたデータは同時に消去される。一実施形態では、ブロックは、同時に消去されるセルの最小単位である。ブロックはそれぞれが、一般的には、プログラミング単位となりえる多くのページに分割される。他のプログラミング用のデータ単位もまた可能であり、考えられている。一実施形態では、個々のページをセグメントに分割し、このセグメントが、基本的なプログラミング動作として一度に書き込まれる最小の数のセルを含んでいてもよい。一般的に、１ページ以上のデータを、メモリセルの１行中に記憶する。
【００３８】
図１０の例のそれぞれのブロックには、８５１２の列があり、これらは偶数列と奇数列に分けられる。ビット線もまた、偶数ビット線（ＢＬｅ）と奇数ビット線（ＢＬｏ）に分けられる。偶数／奇数ビット線アーキテクチャでは、共通のワード線に沿っていて、奇数ビット線に接続されているメモリセルはある１つの時点でプログラムされ、共通のワード線に沿っていて、偶数ビット線に接続されているメモリセルは別の時点でプログラムされる。図１０には、ＮＡＮＤストリングを形成するように接続された４つのメモリセルを示す。４つのセルがそれぞれのＮＡＮＤストリングに含まれているところが示されているが、用いられるメモリセルの数は４つより多くても少なくてもよい。ＮＡＮＤストリングの１つの端子は選択トランジスタＳＧＤを介して対応するビット線に接続されており、もう１つの端子は第２の選択トランジスタＳＧＳを介してｃ−ソースに接続されている。
【００３９】
ビット線が偶数ビット線と奇数ビット線に分けられていない別の実施形態もある。このようなアーキテクチャは一般に全ビット線アーキテクチャと呼ばれている。全ビット線アーキテクチャでは、あるブロックのすべてのビット線が、読み出し動作やプログラム動作で同時に選択される。共通のワード線に沿っていて、いずれかのビット線に接続されているメモリセルは同時にプログラムされる。
【００４０】
奇数／偶数ビット線アーキテクチャにおける読み出しおよびプログラミング動作の一実施形態の間は、４２５６のメモリセルが同時に選択される。選択されるメモリセルは、同じワード線と、同じ種類のビット線（例えば、偶数ビット線又は奇数ビット線）とを有する。したがって、５３２バイトのデータが同時に読み出し又はプログラムされることが可能である。同時に読み出し又はプログラムされるこれらの５３２バイトのデータは、一つの論理ページを形成する。したがって、１つのブロックは、少なくとも８つの論理ページを記憶することが可能である（４本のワード線、それぞれが奇数および偶数ページを有する）。各メモリセルが２ビットのデータを記憶する場合（例えば、マルチステートメモリセル）、これら２ビットのそれぞれが異なるページを記憶して、１つのブロックは１６の論理ページを記憶する。他のサイズのブロックおよびページも、本発明とともに使用されてもよい。さらに、図９および図１０に示す構造以外の構造を、本発明を実施するために使用することもできる。
【００４１】
メモリセルの消去は、ｐ−ウェルを消去電圧（例えば、２０ボルト）まで引き上げるとともに、選択されたブロックのワード線を接地することによって行われる。ソースおよびビット線はフローティングとする。消去は、メモリアレイ全体、独立したブロック、又は別の単位のセルに対して実行することができる。浮遊ゲートから電子がｐ−ウェル領域に移動し、しきい値電圧は負になる（一つの実施形態において）。
【００４２】
読み出しおよびベリファイ動作では、トランジスタをパスゲートとして動作させるために、選択ゲート（ＳＧＤおよびＳＧＳ）と、選択されないワード線（例えば、ＷＬ０、ＷＬ２、およびＷＬ３）が、読み出しパス電圧（例えば、４．５ボルト）まで引き上げられる。選択されるワード線（例えば、ＷＬ１）は、各読み出しおよびベリファイ動作について指定されたレベルの電圧に接続され、関連するメモリセルのしきい値電圧がそのレベルの電圧より上か下かが判定される。例えば、２レベル型のメモリセルの読み出し動作では、選択されるワード線ＷＬ１を接地してもよく、それによってしきい値電圧が０Ｖよりも高いのか否かを検出することができる。２レベル型のメモリセルのベリファイ動作では、選択されるワード線ＷＬ１を例えば０．８Ｖに接続し、それによってしきい値電圧が少なくとも０．８Ｖに到達しているのか否かをベリファイすることができる。ソースおよびｐ−ウェルは０ボルトである。選択されるビット線（ＢＬｅ）は、例えば０．７Ｖのレベルに、プリチャージされる。しきい値電圧が、ワード線上の読み出し又はベリファイレベルよりも高い場合、所望のセルに関連するビット線（ＢＬｅ）の電位レベルは、非導電性のメモリセルのため、ハイレベルを維持する。他方、しきい値電圧が、読み出し又はベリファイレベルよりも低い場合、関連するビット線（ＢＬｅ）の電位レベルは、ビット線に放電する導電性のメモリセルによって、例えば０．５Ｖ未満のローレベルに減少する。それによって、メモリセルの状態は、ビット線に接続された電圧コンパレータセンス増幅器により検出される。
【００４３】
上記の消去、読み出しおよびベリファイ動作は、当業界で知られた技術に従って実行される。したがって、説明した詳細の多くについては、当業者によって変更されることが可能である。当業界で知られた他の消去、読み出しおよびベリファイ技術を使用することもできる。
【００４４】
あるプログラムプロセスが成功すればその終了時に、メモリセルのしきい値電圧は、必要に応じて、プログラムされたメモリセルのしきい値電圧の１つ以上の分布の内部かまたは消去されたメモリセルのしきい値電圧の分布の内部に収まるはずである。図１１に、それぞれのメモリセルが２ビットのデータを記憶している場合のメモリセルアレイのしきい値電圧分布を示す。図１１には、消去されたメモリセルの第１のしきい値電圧分布Ｅが示されている。プログラムされたメモリセルの３つのしきい値電圧分布Ａ、Ｂ、Ｃも示されている。一実施形態では、分布Ｅ中のしきい値電圧は負であり、分布Ａ、Ｂ、Ｃ中のしきい値電圧は正である。
【００４５】
図１１の異なるしきい値電圧範囲のそれぞれが、データビットの集合の所定の値に対応している。メモリセルにプログラムされたデータとセルのしきい値電圧レベルとの間の具体的な関係は、セルに対して採用されるデータ符号化スキームに依存する。一実施形態では、データ値を、グレイコード割り当て方法を用いてしきい値範囲に割り当てることによって、浮遊ゲートのしきい値電圧が間違ってその隣の物理状態にずれても、たった１つのビットしか影響されないようにしている。しかしながら、グレイ符号化を用いていない別の実施形態もある。１つの例では、“１１”をしきい値電圧範囲Ｅ（状態Ｅ）に割り当て、“１０”をしきい値電圧範囲Ａ（状態Ａ）に割り当て、“００”をしきい値電圧範囲Ｂ（状態Ｂ）に割り当て、“０１”をしきい値電圧範囲Ｃ（状態Ｃ）に割り当てている。図１１では４つの状態を示しているが、本発明は、４つより多いまたは少ない数の状態を含んでいる構造を含む他のマルチステート構造でも用いることが可能である。
【００４６】
図１１はまた、メモリセルからデータを読み出すための３つの基準電圧ＶｒＡ、ＶｒＢ、ＶｒＣを示している。所与のメモリセルのしきい値電圧がＶｒＡ、ＶｒＢおよびＶｒＣより大きいか小さいかをテストすることによって、本システムは、メモリセルがどの状態にあるかを判定することが可能である。図１１はまた、３つのベリファイ基準電圧ＶｖＡ、ＶｖＢ、ＶｖＣを示している。メモリセルを状態Ａにプログラミングする際には、本システムは、これらのメモリセルのしきい値電圧がＶｖＡ以上であるか否かをテストする。メモリセルを状態Ｂにプログラミングする際には、本システムは、これらのメモリセルのしきい値電圧がＶｖＢ以上であるか否かをテストする。メモリセルを状態Ｃにプログラミングする際には、本システムは、これらのメモリセルのしきい値電圧がＶｖＣ以上であるか否かをテストする。
【００４７】
図１１は、総シーケンスプログラミングを利用している一実施形態を示している。総シーケンスプログラミングでは、メモリセルは、消去状態Ｅからプログラム状態Ａ、Ｂ、Ｃのうちのいずれにも直接にプログラムすることが可能である。たとえば、プログラムされることになっているメモリセルの集団は、最初に消去されることにより、集団中のすべてのメモリセルが消去された状態Ｅとなるようにする。次に、選択されたメモリセルの制御ゲートに印加される１連のプログラム電圧パルスを用いて、図１５を参照して以下に説明するプロセスによって、メモリセルを直接に状態Ａ、ＢまたはＣにプログラムする。いくつかのメモリセルが状態Ｅから状態Ａにプログラムされている間に、他のメモリセルは状態Ｅから状態Ｂにおよび／または状態Ｅから状態Ｃにプログラムされている。
【００４８】
図１２には、異なった２つのページ、すなわち、下位ページと上位ページのデータを記憶するマルチステートメモリセルをプログラミングする２パス式技法の例を示す。４つの状態、すなわち、状態Ｅ（１１）、状態Ａ（１０）、状態Ｂ（００）および状態Ｃ（０１）が示されている。状態Ｅの場合、両ページとも“１”を記憶している。状態Ａの場合、下位ページは“０”を記憶し、上位ページは“１”を記憶している。状態Ｂの場合、両ページとも“０”を記憶している。状態Ｃの場合、下位ページは“１”を記憶し、上位ページは“０”を記憶している。ここで、特定のビットパターンがそれぞれの状態に割り当てられているが、別のビットパターンを割り当ててもよい。第１のプログラミングパスでは、セルのしきい値電圧レベルは、下位の論理ページにプログラムされるビットにしたがって設定される。このビットが論理“１”であれば、前に消去されている結果として適切な状態にあるため、しきい値電圧は変更されない。しかしながら、プログラムされるビットが論理“０”であれば、このセルのしきい値電圧は、矢印３０２で示すように状態Ａにまで引き上げられる。これで、第１のプログラミングパスが完結する。
【００４９】
第２のプログラミングパスでは、セルのしきい値電圧レベルが、上位の論理ページにプログラムされるビットにしたがって設定される。上位論理ページビットが論理“１”を記憶するのであれば、なんらプログラミングされないが、これは、セルが、双方ともが“１”という上位ページビットを有しており、下位ページビットのプログラミングしだいで決まる状態ＥまたはＡのうちの一方の状態にあるからである。上位ページビットが論理“０”となるのであれば、しきい値電圧はずれる。第１のパスの結果、セルが消去状態Ｅのままであれば、第２のフェーズで、このセルは、しきい値電圧が、矢印３０６で示すように状態Ｃ内に入るように増加されるようにプログラムされる。セルが、第１のプログラミングパスの結果として状態Ａにプログラムされた場合、メモリセルは、矢印３０４で示すようにしきい値電圧が状態Ｂ内に入るように、第２のパスでさらにプログラムされる。第２のパスの結果、下位ページのデータを変更することなく、上位ページの論理“０”を記憶するように指定された状態にセルをプログラムすることになる。
【００５０】
一実施形態では、ページ全体を満たすのに十分なデータを書き込まれた場合に、総シーケンス書き込みを実行するようにシステムをセットアップすることが可能である。ページ全体を満たすに十分なデータが書き込まれない場合、プログラミングプロセスは、受信したデータによる下位ページのプログラミングをプログラムすることが可能である。続いてデータが受信されると、本システムは、上位ページをプログラムする。別の実施形態では、このシステムは、最初に２パス式技法を用いてデータの書き込みを開始し、次に、ワード線のメモリセルの全部（またはほとんど）を満たすのに十分なデータが続いて受信されると、総シーケンスプログラミングモードに変換する。このような実施形態のより詳細が、その全体を参照してここに組み込む、発明者サージー・アナトリビッチ・ゴロベッツ（Ｓｅｒｇｙ  Ａｎａｔｏｌｉｅｖｉｃｈ  Ｇｏｒｏｂｅｔｓ）とヤン・リー（Ｙａｎ  Ｌｉ）による、２００４年１２月１４日に提出された「Ｐｉｐｅｌｉｎｅｄ  Ｐｒｏｇｒａｍｍｉｎｇ  ｏｆ  Ｎｏｎ−Ｖｏｌａｔｉｌｅ  Ｍｅｍｏｒｉｅｓ  Ｕｓｉｎｇ  Ｅａｒｌｙ  Ｄａｔａ」という題名の米国特許出願第１１／０１３，１２５号に開示されている。
【００５１】
図１３（Ａ）〜１３（Ｃ）に、前のページの隣のメモリセルに書き込んだ後に特定のページに関する特定のメモリセルに書き込み動作を実行することによって、この特定のメモリセルに対する、浮遊ゲート同士のカップリングを軽減する不揮発性メモリをプログラミングする別のプロセスを開示する。図１３（Ａ）〜１３（Ｃ）が教示するプロセスの１実施例では、不揮発性メモリセルは、４つのデータ状態を用いてメモリセルごとに２ビットのデータを記憶する。たとえば、状態Ｅが消去された状態で、状態Ａ、ＢおよびＣがプログラムされた状態と仮定する。状態Ｅはデータ１１を記憶している。状態Ａはデータ０１を記憶している。状態Ｂはデータ１０を記憶している。状態Ｃはデータ００を記憶している。データをデータの物理状態に符号化する他の方法も用いることが可能である。それぞれのメモリセルは２ページ分のデータを記憶している。参照目的で、データのこれらのページを下位ページと上位ページと呼ぶが、別のラベルを付けることも可能である。図１３（Ａ）〜１３（Ｃ）のプロセスに対する状態Ａに関して、上位ページはビット０を記憶し、下位ページはビット１を記憶する。状態Ｂに関して、上位ページはビット１を記憶し、下位ページはビット０を記憶する。状態Ｃを関して、双方のページはビットデータ０を記憶する。図１３（Ａ）〜１３（Ｃ）のプログラミングプロセスは、２つのステップから成るプロセスである。第１のステップでは、下位ページをプログラムする。この下位ページがデータ１の状態のままである場合、メモリセルの状態は状態Ｅのままである。このデータが０にプログラムされることになっている場合、メモリセルが中間状態Ｂ’にプログラムされるように、メモリセルのしきい値電圧を引き上げる。図１３（Ｂ）に、状態Ｅから状態Ｂ’にメモリセルをプログラミングする様子を示す。図１３（Ａ）に示す状態Ｂ’は中間状態Ｂ’である。したがって、ベリファイポイントを、ＶｖＢより低いＶｖＢ’として示す。
【００５２】
一実施形態では、あるメモリセルが状態Ｅから状態Ｂにプログラムされると、ＮＡＮＤストリング中のその隣のメモリセルはその下位ページに関してプログラムされる。たとえば、戻って図７を参照すると、メモリセル１０６の下位ページがプログラムされたら、メモリセル１０４の下位ページがプログラムされる。メモリセル１０４をプログラミングした後で、メモリセル１０４のしきい値電圧が状態Ｅから状態Ｂに引き上げられていれば、浮遊ゲート同士間のカップリング作用によって、メモリセル１０６の見かけ上のしきい値電圧が引き上げられる。これによって、状態Ｂのしきい値電圧分布の幅を図１３（Ｂ）のしきい値電圧分布３２０として示す分布にまで広げる作用がある。このしきい値電圧分布の見かけ上の拡大は、上位ページをプログラミングするときに修正される。
【００５３】
図１３（Ｃ）は、上位ページをプログラミングするプロセスを示している。メモリセルが消去された状態Ｅにあって上位ページが１のままであれば、メモリセルは状態Ｅのままである。メモリセルが状態Ｅにあってその上位ページデータを０にプログラミングすることになっているのであれば、メモリセルのしきい値電圧を引き上げて、メモリセルが状態Ａとなるようにする。メモリセルが中間しきい値電圧分布３２０中にあって、上位ページデータが１ままである場合、このメモリセルは最終状態Ｂにプログラムされる。メモリセルが中間しきい値電圧分布３２０中にあって、上位ページデータがデータ０になることになっている場合、このメモリセルのしきい値電圧を引き上げて、メモリセルが状態Ｃとなるようにする。図１３（Ａ）〜１３（Ｃ）に示すプロセスによって浮遊ゲート同士間のカップリング作用が低減されるが、これは、隣接したメモリセルの上位ページをプログラミングした場合にのみ、所与のメモリセルの見かけ上のしきい値電圧が影響されるからである。
【００５４】
図１３（Ａ）〜１３（Ｃ）に４つのデータ状態と２ページ分のデータに関する例を示すが、図１３（Ａ）〜１３（Ｃ）が教示する概念は、状態が４つより多いまたは少なく、ページの数が異なっている他の実施例にも適用可能である。
【００５５】
図１４（Ａ）と１４（Ｂ）に、図１３（Ａ）〜１３（Ｃ）のプログラミング方法を使用して、メモリセルをプログラミングする順序を示す。図１４（Ａ）は、すべてのビット線をプログラミングするアーキテクチャに関する。ワード線ＷＬ０に接続されているメモリセルでは、下位ページはページ０を形成し、上位ページはページ２を形成する。ワード線ＷＬ１に接続されているメモリセルでは、下位ページはページ１を形成し、上位ページはページ４を形成する。ワード線ＷＬ２に接続されているメモリセルでは、下位ページはページ３を形成し、上位ページはページ６を形成する。ワード線ＷＬ３に接続されているメモリセルでは、下位ページはページ５を形成し、上位ページはページ７を形成する。メモリセルは、ページ０からページ７までのページ番号にしたがった数値順序でプログラムされる。
【００５６】
図１４（Ｂ）の表は、偶数／奇数プログラミングを実行するアーキテクチャに関する。ワード線ＷＬ０に接続されている偶数ビット線上のメモリセルでは、下位ページはページ０を形成し、上位ページはページ４を形成する。ワード線ＷＬ０に接続されている奇数ビット線上のメモリセルでは、下位ページはページ１を形成し、上位ページはページ５を形成する。ワード線ＷＬ１に接続されている偶数ビット線上のメモリセルでは、下位ページはページ２を形成し、上位ページはページ８を形成する。ワード線ＷＬ１に接続されている奇数ビット線上のメモリセルでは、下位ページはページ３を形成し、上位ページはページ９を形成する。ワード線ＷＬ２に接続されている偶数ビット線上のメモリセルでは、下位ページはページ６を形成し、上位ページはページ１２を形成する。ワード線ＷＬ２に接続されている奇数ビット線上のメモリセルでは、下位ページはページ７を形成し、上位ページはページ１３を形成する。ワード線ＷＬ３に接続されている偶数ビット線上のメモリセルでは、下位ページはページ１０を形成し、上位ページはページ１４を形成する。ワード線ＷＬ３に接続されている奇数ビット線上のメモリセルでは、下位ページはページ１１を形成し、上位ページはページ１５を形成する。メモリセルは、ページ０からページ１５までのページ番号にしたがった数値順序でプログラムされる。ここで、図１４（Ａ）〜１４（Ｂ）の実施形態では、メモリセルは、ソース側からドレイン側にＮＡＮＤストリングに沿ってプログラムされる。また、この表は、ワード線が４つある実施形態のみ示している。この表の中で示されているさまざまな方法は、ワード線の数が４つより多いまたは少ないシステムに対して適用可能である。
【００５７】
図１１、１２、１３に記載する方法に対するさまざまな実施形態に関わるさまざまなプログラミング順序は、用いるプログラミングアーキテクチャのタイプに基づいて実施することが可能である。偶数／奇数ビット線プログラミングを用いるアーキテクチャの例は、双方とも、その全体を参照してここに組み込む米国特許第６，５２２，５８０号と第６，６４３，１８８号に見受けられる。全ビット線プログラミングを用いているアーキテクチャに関する更なる情報は、それらの全体を参照してここに組み込む次の米国特許文書に向けられる、米国特許出願公報第ＵＳ２００４／００５７２８３、米国特許出願公報第ＵＳ２００４／００６００３１、米国特許出願公報第ＵＳ２００４／００５７２８５、米国特許出願公報第ＵＳ２００４／００５７２８７、米国特許出願公報第ＵＳ２００４／００５７３１８、米国特許出願公報第ＵＳ２００３／０１６１１８２、および米国特許出願公報第ＵＳ２００４／００４７１８２。加えて、これらと同時並行して提出され、その全体を参照してここに組み込む、「ＣＯＭＰＥＮＳＡＴＩＮＧ  ＦＯＲ  ＦＬＯＡＴＩＮＧ  ＧＡＴＥ  ＣＯＵＰＬＩＮＧ  ＤＵＲＩＮＧ  ＲＥＡＤ  ＯＰＥＲＡＴＩＯＮＳ」という題名の米国特許出願第ＸＸ＼ＸＸＸ、ＸＸＸ号［弁理士整理番号、ＳＡＮＤ−０１０４０ＵＳ０］には、全ビット線アーキテクチャと偶数／奇数プログラミングアーキテクチャの双方の場合の総シーケンスと２パス式プログラミングの例が記載されている。
【００５８】
上述したように、メモリアレイ中のメモリセルのプログラミングは、プログラム電圧Ｖｐｇｍを１連のパルスとしてメモリセルの制御ゲートに印加することによって実行される。Ｖｐｇｍの大きさとΔＶｐｇｍの増加値は互いに譲歩して選択される。たとえば、ΔＶｐｇｍの値が高すぎると高速のメモリセルが過剰プログラミングされる結果となりかねず、この値が低すぎるとプログラミング速度が不当に減少しかねない。
【００５９】
先行技術による技法は、プログラミングされているメモリ状態を考慮しないで同じ増加値を適用する傾向がある。総シーケンスプログラミングにおいては、メモリセルは、共通の１連のプログラム電圧パルスを印加した状態で異なったメモリ状態に同時にプログラムされる。これは、共通のプログラム電圧を印加した状態で、セルをたとえば消去された状態から状態Ｃに、他のセルを状態Ａから状態Ｂに同時にプログラミングする２パス式プログラミングの場合も同様である。その結果、プログラムされている実際のメモリ状態とは無関係に１つのプログラム電圧増加値を利用することは先行技術による技法においては通例のことであった。すでに述べたように、この結果、より高いまたは最も高いしきい値電圧値のメモリ状態を考えると、性能が失われるということになりかねない。たとえば、すでに述べた理由によって、最も高いメモリ状態では、低いメモリ状態ほどしきい値電圧分布が密である必要はない。密な分布を維持するために低いメモリ状態をプログラミングする際に、小さい増加値を利用することが必要である。しかしながら、最も高いメモリ状態をプログラミングする際に小さい増加値を用いると、貴重なプログラミング時間が無駄に失われるという結果となりかねない。
【００６０】
さまざまな実施形態によれば、このような先行技術による技法の欠点は、最も高いメモリ状態の特有の特徴を利用することによって克服される。一実施形態では、メモリセルを最も高いメモリ状態にプログラミングする際には別の増加値が用いられる。たとえば、いったん低い状態のすべてのメモリセルがその目標レベルにプログラムされたら（またはいったん所定の最大数のセル以外のほとんどすべてのメモリセルがその目標レベルにプログラムされたら）、増加プログラミング速度を上げて、プログラム電圧増加値を増加させることが可能である。たとえば、４状態式の総シーケンスプログラミング実施例では、最下位の２つのプログラム状態（ＡとＢ）に対するプログラミングが完了した場合に、より大きいＶｐｇｍの増加値を用いることが可能である。４状態の２パス式（たとえば上位／下位ページプログラミング）のプログラミング実施例では、上から２番目に高い状態（Ｂ）に対するプログラミングが完了した場合に、より大きい増加値を用いることが可能である。これらの技法の多くの変更例が存在し、実施形態にしたがって遂行することが可能である。より高い増加値を用いると、最高位のメモリ状態に対する粗／密プログラミングが可能となる実施形態もある。これによって、（たとえば、小さい増加値を用い、粗／密プログラミングを用いない場合に）しきい値電圧分布をその通常範囲を超えて増大させることを回避することが可能である。
【００６１】
図１５は、一実施形態に関わる不揮発性メモリシステムをプログラミングする方法を説明するフローチャートである。通常の当業者には明らかなように、本発明の範囲と精神から逸脱することなく特定の応用例または実施例によって、さまざまなステップを修正したり、付け加えたり、削除したりすることが可能である。さまざまな実施例では、メモリセルは、プログラミングに先立って（ブロック単位または他の単位で）消去される。図１５のステップ４００で（また、図９を参照して）、データロードコマンドがコントローラ２１８によって出力されてコマンド回路２１４に入力され、データをデータ入／出力バッファ２１２に入力することが可能となる。この入力されたデータは、コマンド回路２１４に入力されたコマンドラッチ信号（図示せず）を介して状態マシン２１６によってコマンドとして認識されてラッチされる。ステップ４０２で、ページアドレスを指定するアドレスデータがコントローラ２１８から行コントローラ２０６に入力される。この入力されたデータは、状態マシン２１６を介してページアドレスとして認識されてラッチされるが、これは、コマンド回路２１４に入力されたアドレスラッチ信号によって達成される。ステップ４０４で、５３２バイトのプログラムデータがデータ入／出力バッファ２１２に入力される。５３２バイトのプログラムデータはここに述べる特定の実施例に固有の値であり、他のサイズのプログラムデータを必要または利用する実施例もある。このデータは、選択されたビット線に対するレジスタにラッチすることが可能である。データがベリファイ動作で用いられるように、選択されたビット線に対する第２のレジスタにもラッチされる実施形態もある。ステップ４０６で、プログラムコマンドがコントローラ２１８によって出力されて、データ入／出力バッファ３１２に入力される。このコマンドは、コマンド回路２１４に入力されたコマンドラッチ信号を介して状態マシン２１６によってラッチされる。
【００６２】
このプログラムコマンドがトリガーとなって、ステップ４０４でラッチされたデータが、状態マシン２１６によって制御されて、選択されたメモリセルにプログラムされる。総シーケンス式プログラミング技法を利用する一実施形態では、後述するように、データは、図１６の階段状パルスを用いて、選択されたメモリセルにプログラムされる。ステップ４０８で、選択されたワード線に印加されるプログラミングパルス電圧レベルＶｐｇｍが開始パルス（たとえば１２ボルト）に初期設定され、状態マシン５１６によって維持されているプログラムカウンタＰＣが０に初期設定される。加えて、プログラム電圧増加値すなわちステップサイズΔＶｐｇｍが、第１の増加値ΔＶｐｇｍ１に設定される。
【００６３】
ステップ４１０で、プログラム電圧（Ｖｐｇｍ）が選択されたワード線に印加される。プログラミングパルスの印加中、プログラムされることになっているメモリセルを含んでいるビット線はプログラミング可能に接地されており、プログラムされない他のビット線はプログラミングを禁止するようにＶｄｄに接続される。
【００６４】
ステップ４１２で、選択されたメモリセルの状態がベリファイされる。選択されたセルの目標しきい値電圧が適切なレベルに到達したことが検出されたら、選択されたセルは、その目標とする状態にプログラムされたものとベリファイされる。しきい値電圧が適切なレベルに到達していないことが検出されたら、選択されたセルは、目標とする状態にプログラムされたものとはベリファイされない。自身の目標状態にプログラムされたものとステップ４１２でベリファイされたセルは、更なるプログラミング対象からは除外される。ステップ４１４で、プログラムされるはずのセルがすべて、自身の対応する状態にプログラムされたことがベリファイされているかどうかを、このようなステータスを検出して信号で通知するように設計された適切なデータ記憶レジスタをチェックすることによって判定する。ベリファイされていれば、選択されたメモリセルのすべてが、自身の目標状態にプログラムされ、ベリファイされたため、プログラミングプロセスは成功裏に完了したことになる。パスのステータスがステップ４１６で報告される。
【００６５】
ステップ４１４で、全てのメモリセルがベリファイされていないと判定されたら、プロセスはステップ４１８に進む。ステップ４１８で、プログラムカウンタＰＣが、プログラム制限値に照らし合わせてチェックされる。プログラム制限値の１例として２０であるが、さまざまな実施例では他の値を用いることも可能である。プログラムカウンタＰＣが２０以上であれば、ステップ４１９で、成功裏にプログラムされなかったビットの数が所定の数以下であるか否かが判定される。プログラムが不成功であったビットの数がこの所定の数以下であれば、ステップ４２１で、プログラムプロセスはパスした旨のフラグが設定されて、パスのステータスが報告される。しかしながら、プログラムが不成功であったビットの数がこの所定の数より大きければ、ステップ４２０で、プログラムプロセスはフェイルした旨のフラグが設定されて、フェイルのステータスが報告される。プログラムが不成功であったビットは、読み出しプロセスでエラー訂正によって訂正することが可能である。
【００６６】
プログラムカウンタＰＣが２０（またはいずれかの適切な値）未満であれば、ステップ４２２でメモリセルの下位の状態へのプログラミングが完了したか否か判定される。以降により詳しく説明するように、ステップ４２２には、用いられるプログラミングアーキテクチャのタイプによって実施形態に関わるさまざまなオプションが含まれることがある。たとえば、４状態の総シーケンス式プログラミング実施例（たとえば図１１）では、ステップ４２２が、下位の２状態（ＡとＢ）に対するプログラミングが完了したか否かを判定するステップを含むことがある。状態ＢとＣが単一のプログラム電圧信号で同時にプログラムされる４状態の２パス式プログラミング実施例（たとえば図１２）では、ステップ４２２が、状態Ｂに対するプログラミングが完了したか否かを判定するステップを含むことがある。一実施形態では、プログラミングが完了したか否かの判定は、すべてのセルが目標状態にプログラムされたか否かの判定を含む。別の実施形態では、このような判定が、所定の最大数のセルを除いてほとんどすべてのメモリセルがその目標状態にプログラムされたか否かの判定を含んでいる。この後者の実施形態では、一般的に、エラー訂正制御（ＥＣＣ）技法を用いて、自身の目標状態に完全にはプログラムされなかったセルを訂正するようにしている。
【００６７】
下位の状態のすべてのセル（または、所定の最大数を除外した数などの他のいずれかの使用されている数のセル）がその目標レベルに到達したものとベリファイされていない場合、ステップ４２４で、プログラム電圧を第１の増加値ΔＶｐｇｍ１だけ増加し、プログラムカウンタＰＣを１つだけ増加する。下位の状態のすべて（またはほとんどすべて）のセルがその目標レベルに到達しているものとベリファイされた場合、ステップ４２６で、プログラム電圧を第２の増加値ΔＶｐｇｍ２だけ段階を付ける、すなわち増加し、プログラムカウンタＰＣを１だけ増加する。ここで、一部の実施形態では、より大きいステップサイズを反映するために１とは異なる値だけプログラムカウンタを増加させることが好ましい。たとえば、この大きいステップサイズが小さいステップサイズより２倍大きい場合、ループカウンタを２という値だけ増加させるようにすることも可能である。ΔＶｐｇｍ２は、最上位の状態がプログラムされる速度を増加させるためにΔＶｐｇｍ１より大きい。限定的ではない例として、それぞれΔＶｐｇｍ１を０．２Ｖまたは０．４Ｖとし、ΔＶｐｇｍ２を０．４Ｖまたは０．８Ｖとすることが可能である。このようにプログラミング速度が増しても、プログラミングの信頼性と正確度に悪影響はないが、これは、最高位状態が、大きいしきい値電圧分布を有する能力という点で特異だからである。ΔＶｐｇｍ１に対するΔＶｐｇｍ２のサイズ比率は、用いられている原理が組み入れられているアーキテクチャのタイプと実施形態とによって変動し得る。一実施形態では、ΔＶｐｇｍ２のサイズを、さまざまな電圧を印加した状態でメモリセルのプログラミング特徴を検査することによって実験的に選択することが可能である。分布を妥当な範囲に維持しながらも速度を最大化するような値を選ぶことが可能である。さまざまな増加値のサイズに関する更なる詳細を、図１６と図１７を参照して説明する。
【００６８】
ステップ４２６またはステップ４２４の後、プロセスはステップ４１０に戻って、次のＶｐｇｍのプログラムパルスを印加する。プログラムプロセスが成功した終了時に、メモリセルのしきい値電圧は、プログラムされたメモリセルのしきい値電圧の１つ以上の分布内、または消去されたメモリセルのしきい値電圧の分布内にあるはずである。
【００６９】
ここで、図１５は、総シーケンス式プログラミング（図１１）を用いている場合などの１パス式技法でプログラミングする方法を示している。しかしながら、具体化原理を２パス式プログラミング方法にまで拡大することは、通常の当業者にとっては明らかである。たとえば、図１２に示すような４状態の２パス式プログラミングプロセスにおいては、ステップ４１０〜４２６の第１の反復を実行して、必要なセルを消去状態Ｅから第１のプログラム状態Ａに移動させることによってデータの下位ページをプログラムすることが可能である。選択されたセルを状態Ａにプログラミングしている期間はどの時点においても、ΔＶｐｇｍに対するより大きい増加値は用いられないため、ステップ４２２と４２６を省略することが可能であり、また、Ｖｐｇｍはステップ４２４では常にΔＶｐｇｍ１だけ増加される。いったん下位ページのプログラミングが下位ページに対するステップ４１６で報告されたパスのステータスによって示されるように完了すれば、ステップ４１０〜４２６の反復の第２セットを上位ページのプログラミングのために実行して、一部のセルを状態Ａから状態Ｂにプログラムし、一部のセルを状態Ｅから状態Ｃにプログラムすることが可能である。この反復の第２セットには、ステップ４２２とステップ４２６が含まれる。いったん状態Ｂに対するプログラミングが完了し、ステップ４２２でそのように判定されたら、Ｖｐｇｍは、反復動作の残りの部分でステップ４２６においてΔＶｐｇｍ２だけ増加されて、状態Ｃに対するプログラミングが完了する。実現原理は、４つの状態より多い状態（たとえば６状態、８状態、またはより多くの状態）にプログラムされるデバイスにも等しく応用可能である。
【００７０】
図１６は、さまざまなプログラム電圧ステップサイズを用いてさまざまな状態をプログラミングする一実施形態に関わるプログラム電圧信号を示す。図１６に示す信号は単に例示の信号であり、さまざまなレベルのプログラミングを完了するために必要とされるパルスの数は実施形態によって変動する。図１６に示すプログラム電圧シーケンスは、３つのプログラム状態がそれぞれ同時にプログラムされる総シーケンス式プログラミングを用いて４つの状態デバイスがプログラミングされることを前提としている。しかしながら、図１６の実現原理は、２パス式プログラミングなどの他のプログラミング方法にも等しく応用可能である。たとえば、４状態の２パス式実施形態では、Ｖｐｇｍのパルスの第１の集合が印加されて、消去状態から状態Ａ（またはすでに述べた中間状態Ｂ）にプログラムする。ΔＶｐｇｍ１という１つの増加値が第１のパス全体にわたって用いられる。選択されたセルを状態Ｅから状態Ｃに、また、状態Ａから状態Ｂにプログラムする第２のパスについては、Ｖｐｇｍを開始値（オプション）に再度初期化して、第２のパスプログラミングを開始すればよい。このような実施形態では、図１６などの関連する図では、ＢレベルとＣレベルのプログラミングしか図示されないが、これは、増加値がＢレベルのプログラミングの完了によってのみ変化するからである。加えて、図１６のプログラム電圧信号の原理は状態の数がいくつでも応用可能であり、また、この拡張性は通常の当業者には明らかである。
【００７１】
図１６に示す単一パルスを、ステップ４１０〜４２６を反復するごとに図１５のステップ４１０で、選択されたワード線に印加することが可能である。プログラム電圧Ｖｐｇｍが、ｔ０でＶ１（たとえば１２Ｖ）という開始値に初期化され（ステップ４０８）、選択されたワード線に印加される。ｔ０での第１のＶｐｇｍのパルスとｔｉでの第２のＶｐｇｍのパルスとを互いに照らし合わせてベリファイする。ｔ１５において、Ｖｐｇｍを第１のステップサイズΔＶｐｇｍ１だけ増加するが、これは状態ＡとＢに対するセルが必ずしもすべて成功裏にプログラムされているわけではないからである。Ｖｐｇｍを、反復するごとに、ステップ４１０でより高い値を印加するために状態Ａにメモリセルをプログラミングしている間全般にわたってΔＶｐｇｍ１だけ連続的に増加させる。Ｂレベルのプログラミングはｔ６で開始される。ここで、Ｂレベルのプログラミングの開始は、第１のメモリセルが状態Ｂに到達した時点を示すのであって、プログラム電圧が、状態Ｂを目標状態とするメモリセルに最初に印加された時点を示すのではないことに注意すべきである。図１５から明らかなように、いくつかのセルは、他のセルが状態Ａに到達するに先立って状態Ｂに到達する。状態Ａと状態Ｂに対するすべて（または、所定の最大数を除外したほとんどすべて）のメモリセルがそれぞれの目標レベルに到達するまで、ＶｐｇｍはΔＶｐｇｍ１だけ増加され続ける。状態Ａに対するすべて（またはほとんどすべて）のメモリセルが、ｔπでＶｐｇｍのパルスを印加された後でその目標レベルに到達している。状態Ｂに対するＡＵ（またはほとんどすべて）のメモリセルが、ｔ１７でＶｐｇｍのパルスを印加された後でその目標レベルに到達している。したがって、ｔ１７とｔ１８の間の期間で、状態Ａと状態Ｂに対するすべて（またはほとんどすべて）のメモリセルが成功裏にプログラムされたものと判定される（ステップ４２２）。次に、プログラム電圧増加値がΔＶｐｇｍ２に変更され、時点ｔ１８でＶｐｇｍが印加される以前にプログラム電圧がこの値だけ増加される。状態Ｃに対するすべて（またはほとんどすべて）のセルがその目標レベルにｔ２３で到達するまで、ＶｐｇｍはΔＶｐｇｍ２だけ増加され続ける。ここで、一部の実施形態では、状態ＡとＢにあるすべて（またはほとんどすべて）のセルが成功裏にプログラムされたかどうか検出するために必要とされる時間は、２つのプログラミングパルス間の利用可能時間より長いことがある。このような場合、ステップサイズを増加させたプログラミングは、遅れて、たとえば、上記の例より１パルス分だけ遅れて開始される。
【００７２】
より大きいΔＶｐｇｍ２を用いることによって、状態ＡとＢのプログラミングが完了すると、プログラミング速度が増す。これによって、下位状態に対するしきい値電圧分布を狭く維持して、また、最高位のメモリ状態の固有の特徴によるデバイス性能に対する悪影響を及ぼすことなく、全体的なプログラミング時間を増すことが可能である。
【００７３】
図１７に、別の実施形態に関わるプログラム電圧信号を示す。繰り返すと、図１６では、４状態のデバイスを総シーケンス式でプログラミングすることを前提としているが、その原理は、４つより多い状態を持つデバイスや、複数パス式のプログラミング技法などの他のプログラミングアーキテクチャにも等しく適用可能である。図１７では、状態ＡとＢに対するすべてのセルが成功裏にプログラムされたことをベリファイした後で、第１のパルスに対して第３のプログラム電圧ステップサイズΔＶｐｇｍ３が用いられている。
【００７４】
一部の不揮発性記憶要素は、最初はゆっくりとプログラムされ（電荷がゆっくりと浮遊ゲートに注入され）、徐々に増すプログラム電圧を印加された状態になると非線形にプログラムされる。パルスを数発印加すると、印加されるプログラム電圧パルスが徐々に増加するに連れて、メモリセルは、その蓄積電荷がほぼ線形に増加することになる。プログラミングサイクルに開始時に発生することに加えて、この現象は、プログラム電圧ステップサイズのサイズを切り替える際にも発生することがある。プログラム電圧ステップサイズがより大きい結果、プログラミング速度の増加の遅延を最小化するには、ΔＶｐｇｍ２より大きい１つ以上の増分を、ΔＶｐｇｍ２だけプログラム電圧を増加させる以前に適用すればよい。このようにして、単一パルスを印加した状態でも、デバイスの浮遊ゲートに移される電荷の量を即座に増加させることが可能である。このような技法によって、蓄積された電荷が、プログラム電圧ステップサイズが変化しても実質的に増加することがない時間を最小化または消去することによって、プログラミング時間をさらに減少させることが可能である。
【００７５】
図１７では、状態ＡとＢに対するセルのプログラミングが、ｔπでＶｐｇｍのパルスが印加された後で再度完了する。Ｖｐｇｍはｔ１８でΔＶｐｇｍ３だけ増加される。ＶｐｇｍをＡ~Ｖｖｇｍ３だけ増加させた後で、残りのパルスに対するＶｐｇｍを、状態Ｃに対するすべてのセルが成功裏にプログラムされるまでΔＶｐｇｍ２だけ増加させる。一実施形態では、ΔＶｐｇｍ３はΔＶｐｇｍ２より大きいが、同様に、実施形態では、ΔＶｐｇｍ２より小さいΔＶｐｇｍ３を用いることも可能である。一実施形態では、ΔＶｐｇｍ３＝２・ΔＶｐｇｍ２である。限定的でない例として、ΔＶｐｇｍ１が０．２Ｖ、ΔＶｐｇｍ２が０．４Ｖ、ΔＶｐｇｍ３が０．８Ｖであってもよい。ΔＶｐｇｍ３の値は、所望のプログラミング速度を達成するために、実施形態と実施例によって変動することがある。ΔＶｐｇｍ２より大きいΔＶｐｇｍ３を用いることによって、プログラム電圧増加値が増加すると、プログラミング速度がより迅速に増加するようにすることが可能となる。
【００７６】
変動するプログラム電圧ステップサイズを組み入れると、粗／密プログラミング方法と組み合わせることによって、プログラミングの際の恩典をより多く受けることが可能となる。図１８（Ａ）〜１８（Ｃ）に、４つの状態にプログラムされたメモリセルの母集団のしきい値電圧分布を示す。図１８（Ａ）では、状態Ａ、Ｂ、Ｃはすべて、同じＶｐｇｍというステップサイズを用いてプログラムされている。粗／密プログラミング方法は、状態ＡとＢをプログラミングする際に用いられるが、状態Ｃをプログラミングする際には用いられない。状態ＡとＢに対するセルの分布は、粗／密プログラミングを用いているため、状態Ｃにあるセルの分布より狭い。プログラミングのプロセスがより制御され、より正確なものとなるため、粗／密プログラミングによって、これらの状態に対する分布が効果的に縮小する。参考として、状態Ｃの分布内にあるどのメモリセルもその最も高いしきい値電圧は、Ｖｍａｘｃｉと示される。
【００７７】
図１８（Ｂ）では、（状態ＡとＢのプログラミングが完了した後で）セルを状態Ｃにプログラミングする際に、より大きいＶｐｇｍのステップサイズを用いている一実施形態にしたがってさまざまな状態がプログラムされる。繰り返すと、状態ＡとＢに対するセルは粗／密プログラミングを用いてプログラムされるが、状態Ｃに対するセルにはされない。状態Ｃをプログラミングする際には大きいステップサイズを用いるため、これらのセルに対するしきい値電圧分布は、図１８（Ａ）の状態Ｃの分布を超えて大きくなる。図１８（Ｂ）の状態Ｃにあるいずれのメモリセルの最も高いしきい値電圧は、ＶｍａｘＣ２と示される。見れば分かるように、図１８（Ｂ）の状態Ｃに対する最も高い電圧は、図１８（Ａ）の状態Ｃに対する最も高いしきい値電圧より高い。多くの実施例では、これは容認可能である。最高位状態に対する分布のほうが大きいということは、状態の高低を識別する必要がないため、デバイスの性能に影響（または大きく影響）しない。しかしながら、Ｃ状態に対するしきい値電圧があまり高すぎると、その結果、ＮＡＮＤストリング中の読み出し電流が減少する。このため、ＮＡＮＤストリングの電流があまりに低くなって、選択されたメモリセルを正確に読み出すことが不可能となりかねない。
【００７８】
しかしながら、プログラミング時間を減少させるために、より大きいステップサイズを用いながらも、状態Ｃに対するしきい値電圧分布をある範囲内に抑えることが望ましいような実施形態もある。したがって、粗／密プログラミング技法を、最高位のプログラム状態に対するプログラム電圧のステップサイズを大きくした状態で利用することによって、プログラム電圧ステップサイズが大きいことによって引き起こされるしきい値電圧分布の増大の一部または全部を相殺することが可能である。図１８（Ｃ）に、状態Ｃを大きいプログラム電圧ステップサイズで、また、粗／密プログラミングでプログラムした結果として得られるしきい値電圧分布を示す。図示するように、結果として得られる分布は図１８（Ａ）の分布にかなり類似していて、状態Ｃに対しては粗／密プログラミングも、より大きいステップサイズも用いられていない。図１８（Ｃ）で状態Ｃにプログラムされるどのメモリセルの最も高いしきい値電圧も、図１８（Ａ）のそれと同じである。より大きいステップサイズを利用したことによる状態Ｃの分布の増大は、粗／密プログラミングを用いることによって相殺される。
【００７９】
さまざまな実施形態では、最も高いメモリ状態の粗／密プログラミングが、さまざまな時点で開始することが可能である。たとえば、一実施形態では、最も高い状態にプログラムされるセルの粗／密プログラミングは、プログラミングを通して実行することが可能である。粗／密プログラミングが、ステップサイズが増加する‐低い状態レベルに対するセルのすべて（またはほとんどすべて）が成功裏にプログラムされた―のと同時に開始することが可能であるような実施形態もある。
【００８０】
図１９は、低い状態のプログラミングが完了したときに粗／密プログラミングが開始される一実施形態に関わるフローチャートである。図１９は、図１５のベリファイステップ４１２の一部として実行することが可能である。図１９は、個々のメモリセルをベリファイするプロセスを示している。複数のメモリセルが、図１９の方法にしたがって並行にベリファイされることが理解されるであろう。図１５のステップ４１０でプログラム電圧が印加された後、粗いプログラミングから密なプログラミングへの移行を促進するために用いられる低いベリファイレベル（粗／密プログラミングレベル）である第１のしきい値電圧レベルＶｖｅｒ２（たとえばＶＶＡｉ）に照らし合わせてステップ４５０でメモリセルのしきい値電圧をベリファイする。メモリセルのしきい値電圧がベリファイレベルＶｖｅｒ２未満であれば、選択されたメモリセルのプログラムステータスをステップ４５２でフェイルに設定する。しかしながら、メモリセルのしきい値電圧がベリファイレベルＶｖｅｒ２より大きければ、セルのしきい値電圧が、目標状態に対する最終のベリファイレベルＶｖｅｒｉ（たとえばＶＶＡ）より大きいかどうかステップ４５４で判定される。このしきい値電圧がＶｖｅｒ１より大きければ、選択されたセルのステータスはステップ４６０でパスに設定される。さらなるプログラム電圧パルスを印加している間はセルのプログラミングを禁止するために、選択されたセルのビット線をＶｉｎｈｉｂｉｔに引き上げるなどの適切な応答がなされる。メモリセルのしきい値電圧がＶｖｅｒ２より大きいがＶｖｅｒｉより大きくはない場合、セルは、ステップ４５６でのセルのビット線をＶＳに引き上げることによって密なプログラミングモードにされる。すでに述べたように、ＶＳはＶｉｎｈｉｂｉｔより低く、したがって、さらなるプログラムパルスの印加中にセルのチャネルの両端の電位差を減少させることによって、セルのプログラミングが低速となる。ステップ４５８で、選択されたセルのステータスがフェイルに設定される。図１９のさまざまなステップは、図１５のステップ４１２でベリファイ中でない時点で実行可能であることが理解されるであろう。たとえば、選択されたセルのビット線は、図１５のステップ４１０でプログラムパルスを印加する直前にＶｉｎｈｉｂｉｔまたはＶＳに引き上げることが可能である。
【００８１】
一実施形態では、今まで説明した粗／密プログラミング方法を修正した形態を用いることが可能である。この修正形態では、選択されたメモリセルがベリファイレベル（Ｖｖｅｒ２）を超えて粗いプログラミングから密なプログラミングに遷移したら、粗／密プログラミングに対して通常用いられる速度より低いプログラミング速度に落とす低い電圧（ＶＳ）をビット線に印加することが可能である。一実施形態では、この修正形態において、電圧ＶＳは、次のパルスが印加された後のセルのしきい値電圧のズレがΔＶｐｇｍ２／２に等しく（またはほとんど等しく）なるように選ばれる。このように配慮することによって、次のプログラム電圧パルスが印加された後にしきい値電圧が最終的ベリファイレベル（Ｖｖｅｒｉ）をパスすることが実質的に保証される。この修正された粗／密プログラミング技法では、たった１発の追加のパルスが選択されたメモリセルに対して、Ｖｖｅｒ２に到達したことがベリファイされたあとで印加されるが、これは、この１発のさらなるパルスの後でのメモリセルのしきい値電圧が最終ベリファイレベルＶｖｅｒ１より高いか低いかとは無関係に行われる。この修正技法には、選択されたメモリセルに印加されるプログラミングパルスの数が少ないという利点がある。これは、プログラミング時間が短縮される結果だけではなく、特にメモリが最も高い状態にプログラムされる場合に用いられると、プログラムディスターブが減る。
【００８２】
複数のプログラム電圧ステップサイズおよび／または最高状態レベルに対する粗／密プログラミングを組み込んだ実施形態を他の技法と組み合わせることによって、プログラム効率および／または信頼性をさらに向上させることが可能である。図２０〜２３に、ページまたは他のデータ単位に対するプログラミングプロセスが、高速のプログラミングセルを検出して、そのプログラムステップサイズを調整し、これによって、妥当なプログラミング時間を維持しながらもこれらのセルの過剰プログラミングを回避する技法を組み込んだ実施形態を示す。
【００８３】
上に述べたように、メモリアレイ中のメモリセルのプログラミングは、これらメモリセルの制御ゲートに対して１連のパルスとしてプログラム電圧Ｖｐｇｍを印加することによって実行される。Ｖｐｇｍの大きさの選択は妥協される。値があまりに大きすぎると、高速のセルが過剰プログラミングされる結果となり、他方、あまりにこの値が小さすぎると、プログラミング速度が不当に減少するという結果となる。過剰プログラミングを引き起こす高速のセルの数は、メモリシステム中のメモリセルの総数と比べれば比較的少ない。その結果、メモリセルのページがプログラムされると、このようなページ中に１つ以上の高速のメモリセルが存在する確率はあまり高くない。これは、過剰プログラミングを回避するために低いＶｐｇｍを用いると、ほとんどのページは、そのプログラミング速度が不必要なほどに落ちるが、これは、必要とされるプログラミングパルスの数が主としてＶｐｇｍの開始値によって決まるからである。現実には、メモリシステム中のすべてのページのうちで低い値のＶｐｇｍを必要とするのはほんの少数のページに過ぎず、他のページは高い値のＶｐｇｍでプログラムすれば性能の劣化を回避することが可能である。このジレンマを解決するため、次のプロセスを提案する。
【００８４】
最初に、第１発目のプログラミングパルスのＶｐｇｍに対して低い初期値を用いて、これにより、この第１のプログラミングパルス（または最初の２、３発のパルス）の期間中にどのメモリセルも（またはほとんどのメモリセルが）過剰プログラムされないようにする。高速のメモリセルがまったくないページに対するプログラミング時間に対する影響を低減するために、後続のプログラミングパルスの値をより大きいステップサイズ（たとえば、０．３Ｖという一般的な値ではなく０．６Ｖ）に増大させる。１つ以上（または他の最小数）のセルの第１の集合が初期ベリファイ値（Ｖｖｓｔａｒｔ）に到達するまで、Ｖｐｇｍの値をより大きいステップサイズに急速に増加させる。このようにして、あまり多くの時間が失われず、プログラミングパルスの総数が、他のシステムと同じようなまたは未満の数となる。
【００８５】
プログラミングされるページに１つ以上の高速のメモリセルが存在する場合、これら高速のメモリセルは、最初のパルスの経過後に検出される。しかしながら、用いられるＶｐｇｍの値しだいでは、どの高速セルを検出するにも２発以上のプログラムパルスが必要である。１つ以上の高速のセルが最初のパルス以降に検出されるページもある。１つ以上の高速のセルが２発以上のパルス以降に検出されるページもあれば、高速のセルがまったく検出されないページもある。このような高速なメモリセルの過剰プログラミングを回避するために、後続のプログラミングパルスを小さいステップサイズだけ増大させる。高速のメモリセルがあるこのようなページは多くのプログラミングパルスを必要とするが、これは、ステップサイズが最初から小さいからである。メモリアレイ中のページの大多数はなんら高速セルを有していないので、あまり速度が落ちず、このため、全体的なプログラミング速度が不当に下がることはない。必要とされるページに対してだけ、過剰プログラミングを回避するために、プログラミング速度が遅くなる。
【００８６】
図２０は、セルのプログラミングを高速化するためにプログラムステップサイズを調整する場合の、データページをプログラミングする一実施形態を説明するフローチャートである。図２０はまた、上に述べたような最も高いメモリ状態をプログラミングする技法を組み込んでいる。
【００８７】
ステップ５００で、特定のページにプログラムされるデータをロードする。ステップ５０２で、プログラム電圧Ｖｐｇｍを初期の低い値に設定し、増加値ΔＶｐｇｍは第１の増加値ΔＶｐｇｍｉに設定され、プログラムカウンタＰＣはゼロに初期化される。最初のプログラムパルスの値は、プログラムされる不揮発性記憶要素（高速の不揮発性記憶要素でさえ）がまったくないまたは十分少ない数しか過剰プログラムされないような十分低い大きさが設定される（たとえば１５Ｖ）。ステップ５０４で、最初のプログラムパルスが印加される。その大きさは十分低く設定されているため、最初のプログラミングパルスの後に、過剰プログラムされているメモリセルはまったくないまたは十分少ない数でしかないはずである。上に述べたように、一実施形態では、あるデータページ中のメモリセルは共通のワード線を共有しており、したがって、それらそれぞれの制御ゲートに同じプログラミングパルスが印加される。このプログラムパルス後に、ステップ５０６で、これらメモリセルは電圧Ｖｖｓｔａｒｔに照らし合わせてベリファイされる。電圧Ｖｖｓｔａｒｔはメモリセルが高速のメモリセルであるか判定するために用いられる。これは、単一プログラミングパルスの後でＶｖｓｔａｒｔにパスしたどのセルも高速のメモリセルと考えられるようにデバイスの特徴に基づいて選ばれる。プログラムされる特定のページのメモリセルのどれもがＶｖｓｔａｒｔより大きいしきい値電圧を有しない場合（ステップ５０８）、ステップ５１０で、プログラム電圧をΔＶｐｇｍｉだけ増加し、プログラムカウンタＰＣを１だけ増加する。ここで、一部の実施形態では、より大きいステップサイズを反映するために、プログラムカウンタの増分を１と異なる値にすることが好ましい。たとえば、大きいステップサイズが小さいステップサイズの２倍である場合に、プログラムカウンタを２という値だけ増加させることもある。ステップ５１０の後で、プロセスはステップ５０４に復帰して、次のプログラムパルスを印加する。少なくとも１つのメモリセルがＶｖｓｔａｒｔより大きいしきい値電圧を有するようになるまで、ステップ５０４〜５０８を反復する。
【００８８】
ここで、一実施形態では、ステップ５０８では、異なる最小数（１つのメモリセル以外の数）を用いて、Ｖｖｓｔａｒｔより大きいしきい値電圧を持つメモリセルが十分な数だけあるかどうかテストする。用いる数は実施例によって異なる。
【００８９】
ステップ５０８で、１つ以上（または別の最小数）のメモリセルがＶｖｓｔａｒｔより大きいしきい値電圧を有しているものと判定されると、プロセスは続いてステップ５１４で、メモリセルのすべてをさまざまなベリファイレベルに照らし合わせて、さまざまなプログラム状態をベリファイする。一実施形態では、ステップ５０４〜５１０が反復される際には、Ｖｖｓｔａｒｔより大きいしきい値電圧を有する１つ以上（または別の最小数）のメモリセルを発見するためにメモリセルをＶｖｓｔａｒｔに照らし合わせてベリファイするだけである。Ｖｖｓｔａｒｔより大きいしきい値電圧を有している１つ以上のメモリセルが発見されたら、すべてのメモリセルをさまざまな目標値（または、実施例しだいで適切に目標値と粗／密ベリファイレベル）に照らし合わせてベリファイする。たとえば、粗／密プログラミングを用いる場合、メモリセルそれぞれを、さまざまなプログラム状態のそれぞれに対して粗／密ベリファイレベルと最終目標のベリファイレベルに照らし合わせてベリファイする（ステップ５１４）。
【００９０】
ここで、さまざまなタイプの粗／密プログラミングを実施可能であり、たとえば、最初にある所望の状態の粗いレベルに照らし合わせてベリファイして、第１のセルがこの状態の粗いレベルをパスした後で密なレベルに照らし合わせてのベリファイを開始することが可能である。さらに、複数のレベルが同時にプログラムされると、より高いレベルに対する粗／密プログラミングをある数のプログラミングパルス分だけ延期され得る。さらに、低い状態に対する粗いベリファイによって１つ以上のセルがこの低い状態の粗いレベルをパスしたことが検出された後、ある数のパルスが経過した後で、高いレベルに対する粗いベリファイを開始することも可能である。上記の方法を用いることによって、必要とされるベリファイ動作の総数を最小化し、これによって、必要とされる総プログラミング時間を減少させることが可能である。２００２年１２月５月に提出された「Ｓｍａｒｔ  Ｖｅｒｉｆｙ  Ｆｏｒ  Ｍｕｌｔｉ−Ｓｔａｔｅ  Ｍｅｍｏｒｉｅｓ」という題名の米国特許第１０／３１４，０５５号には、上述したような効率的なベリファイのためのさまざまな技法が記載されている。
【００９１】
すべてのメモリセルがその意図する目標レベルに到達したことがベリファイされると（ステップ５１６）、プロセスは完了し、ステータスがパスに設定される（ステップ５１８）。すべてのメモリセルのうちでその意図する目標に到達していないものがあっても、このプログラミングプロセスが成功裏に完了しえる実施形態もある。たとえば、一部の実施形態では、ほとんどすべてのメモリセルがその意図する目標に到達すれば（すなわち、目標に到達しないメモリセルが所定の数以下であれば）、このプロセスは成功とされる。その目標に到達しなかったメモリセルは、エラー訂正によって読み出す際に処理可能であったり、または、あまりに多くのセルがその目標に到達しなかった場合に、データをメモリアレイのどこか別のところにプログラムすることが可能であったりする。ベリファイされないメモリセルがある場合（これはステップ５１４を実行した際に発生しやすい）、プログラムカウンタが２０（または別の適当な値）未満であるかどうかステップ５２０で判定される。プログラムカウンタが２０（または別の適当な値）以上であれば、プロセスはステップ５２１に進んで、プログラムが不成功であったビットの数が所定の数以下であるかどうか判定される。プログラムが不成功であったビットの数が所定の数以下であれば、このプログラムプロセスはパスした旨のフラグが設定され、パスのステータスがステップ５２３で報告される。しかしながら、プログラムが不成功であったビットの数が所定の数より大きい場合、プログラムプロセスはフェイルした旨のフラグが設定され、フェイルのステータスがステップ５２２で報告される。プログラムが不成功であったビットは、読み出しプロセス中にエラー訂正によって補正することが可能である。プログラムカウンタが未だ２０（または他のいずれかの適切な値）未満であれば、低い状態に対するすべてのセル（または実施形態によっては、所定の数のセルのうちのほとんどすべて）がその目標レベルに到達したかどうか判定される（ステップ５２４）。ステップ５２４では、実施形態しだいでさまざまな判定が実行されることがある。たとえば、４状態のデバイスの総シーケンス式プログラミングを実施している場合、ステップ５２４では、最も低い２つのプログラム状態（たとえば状態ＡとＢ）に対するすべてのセルがその目標レベルに到達したか否か判定されることがある。下位ページ（および、その結果としての、状態Ａ）が最初のパスの際にプログラムされる４状態メモリに対する複数パス式のプログラミングプロセスが実施されている場合、ステップ５１２〜５２８の第１の反復集合を第１のパスに対して実行することが可能であり、第２の反復集合を第２のパスに対して実行することが可能である。このようなシナリオにおいては、状態Ｂに対するすべてのセルがその目標レベルにプログラムされたかどうか判定するために、ステップ５２４と５２６は、第２のパスの際に実行されることのみを必要とする。第１のパスの反復の際、すべて（またはほとんどすべて）のセルが状態Ａに到達するかまたはフェイルしたという判定がステップ５２２でなされるまでは、ＶｐｇｍはΔＶｐｇｍ２だけ増加される。
【００９２】
低い状態のすべてがプログラムされていない場合、ステップ５２８で、ＶｐｇｍがΔＶｐｇｍ２だけ増加され、プログラムカウンタＰＣが１だけ増加される。すべての低い状態がプログラムされたら、ステップ５２６で、ＶｐｇｍをΔＶｐｇｍ３だけ増加して、プログラムカウンタを１だけ増加する。ここで、一部の実施形態では、より大きいステップサイズを反映するために１とは異なる値だけプログラムカウンタを増加させることが好ましい。たとえば、この大きいステップサイズが小さいステップサイズより２倍大きい場合、ループカウンタを２という値だけ増加させるようにすることも可能である。プロセスはステップ５２６または５２８からステップ５１２にループし、増大したプログラム電圧パルスが選択されたワード線に印加される。ここで、ΔＶｐｇｍ２はΔＶｐｇｍ１より小さいステップサイズである。したがって、プログラム電圧Ｖｐｇｍは、増加値ΔＶｐｇｍ２を用いている場合、ステップ５１２〜５２８を反復している際のプログラム電圧Ｖｐｇｍの遅い立ち上がり時間と比較して、ステップ５０４〜５１０を反復している際のほうがはるかに迅速に増加する。高い状態をプログラミングするために大きいステップサイズを用いることに関してすでに説明した実施形態の場合のように、ΔＶｐｇｍ３はΔＶｐｇｍ２より大きいステップサイズである。一実施形態では、ステップ５０４〜５１０を反復している際にプログラミング速度を初期速度に戻すために、ΔＶｐｇｍ３がΔＶｐｇｍｉと同じサイズであってもよい。他の実施形態では、ΔＶｐｇｍ３がΔＶｐｇｍ１より小さい、あるいは大きい。最も高いレベル状態をプログラミングする際のプログラミング速度を所望の通りに増加させるために、ΔＶｐｇｍ１に対するΔＶｐｇｍ３のサイズをさまざまな値に選ぶことが可能である。図１９を参照して説明したような粗／密プログラミング技法を、図２０の方法に追加的に組み込むことが可能な実勢形態もある。
【００９３】
図２０を参照して説明した技法を組み込んだ方法にしたがってプログラムされたメモリセルの動作を、図２１（Ａ）、２１（Ｂ）、２１（Ｃ）を参照して説明する。図２１（Ａ）に、２ビット式マルチステートセルのしきい値電圧分布２、１０、１２および１４を示す。しかしながら、ここで、ここに説明する技術は、２ビットのデータ状態を記憶するメモリセルにも２ビットより少ないビット数のデータ状態を記憶するメモリセルにも当てはまる。また、図２１Ａに、読み出しベリファイポイントＶｒＢおよびＶｒＣを示す。読み出しベリファイポイントＶｒＢはしきい値電圧分布１０と１２を識別する。読み出しベリファイポイントＶｒＣはしきい値電圧分布１２と１４を識別するためにある。ゼロボルトを用いて、しきい値電圧分布２と１０を識別することも可能である。図２１（Ａ）はまた、電圧レベルＶｖＡをしきい値電圧分布１０の最小電圧として示し、電圧レベルＶｍａｘＡをしきい値電圧分布１０の上限電圧として示している。
【００９４】
図２１（Ｂ）に、ページ内に高速メモリセルがまったくない場合の消去しきい値電圧分布２とプログラムしきい値電圧分布６０２および６０４を示す。この場合、ベリファイレベルＶｖＡは最終の目標ベリファイレベルを表し、ゼロボルトをＶｖｓｔａｒｔとして用いることが可能である。最初のパルスの後のしきい値電圧分布６０２が、消去レベルからある程度上昇していることが分かる。しかしながら、Ｖｖｓｔａｒｔ（０Ｖ）に到達しているメモリセルはいまだないので、増加値ΔＶｐｇｍｉだけ増加されたＶｐｇｍを有する第２のパルスでプログラミングは継続される。その結果、しきい値電圧分布はΔＶｐｇｍｉに近い値だけ上昇する。ここで、この上昇する量は変動し、また、初期パルスＶｐｇｍの大きさに大きく依存する。第２のパルスの後、分布６０４中のメモリセルの数はＶｖｓｔａｒｔ（０ボルト）を上回るしきい値電圧に到達している。したがって、Ｖｐｇｍは、小さいステップサイズΔＶｐｇｍ２だけ増加するだろう。
【００９５】
図２１（Ｃ）に、高速メモリセルが存在する場合の消去しきい値電圧分布２とプログラムしきい値電圧分布６１０を示す。最初のプログラミングパルス（たとえば、しきい値電圧分布６１０）の後では、多くのセルのしきい値電圧がＶｖｓｔａｒｔ（０ボルト）より大きい。一部のメモリセルでは、そのしきい値電圧がＶｖＡより大きい。したがって、後続のプログラミングパルスのステップサイズは、過剰プログラミングを回避するためにΔＶｐｇｍ２に等しくなる。
【００９６】
図２２と図２３は、粗／密プログラミングに関連して図２０を参照して説明した技術の用い方を示すグラフを含んでいる。図２２（Ａ）、２２（Ｂ）、２２（Ｃ）は、自身が高速モードに入らないように同じパルス中で粗いベリファイレベルと目標ベリファイレベルの双方をパスするしきい値電圧を有する高速メモリセルの動作を示している。図２３（Ａ）、２３（Ｂ）、２３（Ｃ）は、粗いモードと密なモードの双方に関わる低速のメモリセルを示している。図２２（Ａ）〜２２（Ｃ）と図２３（Ａ）〜２３（Ｃ）では、メモリセルを最も高い状態レベルにプログラミングをする様子が図示されている。この例の目的上、低い状態に対するメモリセルのプログラミングはｔ７で完了すると仮定されている。図２２（Ａ）と図２３（Ａ）は、プログラムされているメモリセルの制御ゲートに印加されるプログラミングパルスＶｐｇｍを示している。図２２（Ｂ）と図２３（Ｂ）は、プログラムされるメモリセルに対するビット線間電圧ＶＢＬを示している。図２２（Ｃ）と図２３（Ｃ）は、プログラムされているメモリセルのしきい値電圧を示している。
【００９７】
図２２（Ａ）〜２２（Ｃ）を参照して、高速メモリセルが示されている。ｔ０から開始される最初のパルスに応答して、メモリセルのしきい値電圧がＶｖｓｔａｒｔを上回る。したがって、このメモリセルを含んでいるページは、よりゆっくりとプログラムされる。このように、後続のプログラミングパルスの大きさはΔＶｐｇｍ２だけ増大する。ここで、一実施形態では、Ｖｖｓｔａｒｔは、ＶｖＡ１より０．２〜０．３Ｖだけ低い。ｔ６からｔ７に移るに連れて、メモリセルのしきい値電圧は、ＶｖＣｉとＶｖＣの双方を上回る。ｔ７で、これ以上のプログラミングを禁止するために、ビット線の電圧をＶｉｎｈｉｂｉｔに引き上げる。加えて、ｔ６でプログラム電圧を印加した後ではメモリセルのしきい値電圧がＶｖＣｉとＶｖＣの双方を上回っているため、このセルは密なプログラミングモードには入らない。メモリセルのしきい値電圧は、ｔ７以前にＶｖＣを上回っているため、この時点以降でセルのプログラミングを完了するためにΔＶｐｇｍ２より大きいプログラム電圧ステップサイズを用いることはない。
【００９８】
図２３（Ａ）〜２３（Ｃ）の低速のメモリセルを参照すると、メモリセルのしきい値電圧は、ｔ１とｔ２の間の期間ではＶｖｓｔａｒｔを上回らない。したがって、プログラミングパルスは、ｔ２以前にΔＶｐｇｍ１だけ増加する。ｔ２においては、メモリセルのしきい値電圧はＶｖｓａｒｔより大きいため、増加値はｔ２でΔＶｐｇｍ２に変更される。ｔ７においては、低いメモリ状態に対するすべてのセルがその目標レベルに到達している。したがって、次に、増加値はΔＶｐｇｍ３に変更され、後続のパルスの大きさはΔＶｐｇｍ３だけ増加する。メモリセルのしきい値電圧は、ｔ７からｔ８の間にＶｖＣｉを上回る。したがって、メモリセルは密なプログラミングフェーズに入り、ビット線はｔ８でＶＳに引き上げられる。ｔ８からｔ９の間に、ビット線電圧が増加するためにしきい値電圧の増加は遅れる。ｔ８からｔ９の間に、しきい値電圧はＶｖＣより大きくなる。しきい値電圧はその目標レベルに到達したのだから、ｔ９で、これ以上のプログラミングを禁止するために、ビット線の電圧をＶｉｎｈｉｂｉｔに引き上げられる。
【００９９】
ここで、図２２（Ａ）と図２３（Ａ）は、グラフを見やすくするために、互いに隣接したプログラミングパルスを示している。しかしながら、図１６と図１７に示すようにベリファイ動作を見込んでパルス同士間には時間間隔がある。
【０１００】
本発明に関する前述の詳細な説明は、例証と説明のために提示されたものである。本発明を開示する形態そのもので尽きたり、これに限ることを意図するものではない。上記の教示に照らし合わせて、多くの修正例や変更例が可能である。説明した実施形態は、本発明とその実際の応用例の原理がもっともよく説明され、これによって、他の当業者が、想定される特定に用途に適しているさまざまな実施形態で、また、さまざまな修正をもって、本発明を利用することが可能となるように選ばれたものである。本発明の範囲は添付特許請求の範囲によって定義されることを意図するものである。
【図面の簡単な説明】
【０１０１】
【図１】２つのしきい値電圧分布を示すグラフである。
【図２】４つのしきい値電圧分布を示すグラフである。
【図３】プログラミングプロセスを示す。（Ａ）は、不揮発性記憶要素の制御ゲートに印加されるプログラミング電圧信号を示している。（Ｂ）は、ＮＡＮＤストリングのビット線に印加される電圧信号を示している。（Ｃ）は、プログラミングされる不揮発性記憶要素のしきい値電圧を示している。
【図４】粗／密プログラミングの一部として実行されるプログラミングプロセスの一実施形態を示している。
【図５】粗／密プログラミングの一部として実行されるプログラミングプロセスの一実施形態を示している。
【図６】ＮＡＮＤストリングの上面図である。
【図７】図６のＮＡＮＤストリングの等価回路図である。
【図８】図６のＮＡＮＤストリングの断面図である。
【図９】不揮発性メモリシステムの一実施形態のブロック図である。
【図１０】メモリアレイの組織の１例を示す図である。
【図１１】しきい値電圧分布の例示の集合と総シーケンスプログラミングプロセスを示す図である。
【図１２】しきい値電圧分布の例示の集合と２パス式プログラミングプロセスを示す図である。
【図１３】しきい値電圧分布の例示の集合と別の２パス式プログラミングプロセスを示す図である。
【図１４】さまざまな実施形態における不揮発性メモリをプログラミングする順序を示す表である。
【図１５】メモリシステムのページをプログラミングするプロセスの一実施形態を説明するフローチャートである。
【図１６】一実施形態に関わるプログラム電圧信号を示す図である。
【図１７】一実施形態に関わるプログラム電圧信号を示す図である。
【図１８】一実施形態に関わるしきい値分布の例示の集合を示す図である。
【図１９】一実施形態に関わる粗／密プログラミングプロセスを説明するフローチャートである。
【図２０】メモリシステムのページをプログラミングするプロセスの一実施形態を説明するフローチャートである。
【図２１】しきい値電圧分布を示す図である。
【図２２】プログラミングプロセスの一実施形態を示す図である。
【図２３】プログラミングの一実施形態を示す図である。
【図１】
2008535145.tif 000003
【図２】
2008535145.tif 000004
【図３】
2008535145.tif 000005
【図４】
2008535145.tif 000006
【図５】
2008535145.tif 000007
【図６】
2008535145.tif 000008
【図７】
2008535145.tif 000009
【図８】
2008535145.tif 000010
【図９】
2008535145.tif 000011
【図１０】
2008535145.tif 000012
【図１１】
2008535145.tif 000013
2008535145.tif 000014
【図１３】
2008535145.tif 000015
【図１４】
2008535145.tif 000016
【図１５】
2008535145.tif 000017
【図１６】
2008535145.tif 000018
【図１７】
2008535145.tif 000019
【図１８】
2008535145.tif 000020
【図１９】
2008535145.tif 000021
【図２０】
2008535145.tif 000022
【図２１】
2008535145.tif 000023
【図２２】
2008535145.tif 000024
【図２３】
2008535145.tif 000025
【国際調査報告】
2008535145.tif 000026
2008535145.tif 000027
2008535145.tif 000028