(57)【要約】  不揮発性記憶をプログラムするシステムであって、フレッシュ部分に対しては第１レベルである開始プログラミング電圧を設定し、メモリが繰返されるにつれてその開始プログラミング電圧を調整することによって、特性を改善する。例えば、システムは、第１の初期値を持つ増加するプログラム信号を用いて、第１の期間中に不揮発性記憶素子の集合をプログラミングし、その後に、第２の初期値を持つ増加するプログラム信号を用いて、第２の期間中に前記不揮発性記憶素子の集合をプログラミングする。第２の期間は第１の期間の後であり、第２の初期値が第１の初期値とは異なっている。
2008542968.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性記憶を操作する方法であって、
１つ以上のプログラミングパラメータの第１の集合を用いて、第１の期間中に不揮発性記憶素子の集合をプログラミングする工程と、
１つ以上のプログラミングパラメータの第２の集合を用いて、第２の期間中に前記不揮発性記憶素子の集合をプログラミングする工程と、を備えている方法。
【請求項２】
前記第１の期間が第１の時間期間であり、
前記第２の期間が、前記第１の時間期間の後である第２の時間期間である請求項１に記載の方法。
【請求項３】
前記第１の時間期間が、あまり使用されていないデバイスと関連しており、
前記第２の時間期間が、使用量閾値後の前記デバイスと関連する請求項１に記載の方法。
【請求項４】
不揮発性記憶を操作する方法であって、
第１の初期値を持つ増加するプログラム信号を用いて、第１の期間中に不揮発性記憶素子の集合をプログラミングする工程と、
第２の初期値を持つ増加するプログラム信号を用いて、第２の期間中に前記不揮発性記憶素子の集合をプログラミングする工程と、を備えており、
前記第２の期間が前記第１の期間の後であり、前記第２の初期値が前記第１の初期値とは異なる方法。
【請求項５】
前記第１の初期値が第１の電圧であり、
前記第２の初期値が、前記第１の電圧より低い第２の電圧であり、
前記プログラム信号が、大きさが増加する一連の電圧パルスである請求項４に記載の方法。
【請求項６】
第３の初期値を持つ増加するプログラム信号を用いて、第３の期間中に前記不揮発性記憶素子の集合をプログラミングする工程をさらに備えており、
前記第３の期間が前記第２の期間の後であり、前記第３の初期値が前記第２の初期値とは異なる請求項４に記載の方法。
【請求項７】
前記第１の期間がプログラミングサイクルの数に関連する請求項４に記載の方法。
【請求項８】
前記不揮発性記憶素子の集合が、不揮発性記憶素子のブロックである請求項４に記載の方法。
【請求項９】
前記不揮発性記憶素子の集合が、不揮発性記憶素子のアレイ全体である請求項４に記載の方法。
【請求項１０】
前記不揮発性記憶素子の集合が所定回数のプログラミングサイクルを受けたかどうかをテストする工程と、
前記不揮発性記憶素子の集合が前記所定回数のプログラミングサイクルを受けたかどうかの指示を記憶する工程と、
データをプログラムする要求を受信する工程と、
前記要求に応答して前記指示を読み取る工程と、
前記不揮発性記憶素子の集合が前記所定回数のプログラミングサイクルを受けていないことを前記指示が示している場合に、前記第１の初期値を持つ前記増加するプログラム信号を用いて前記第１の期間中に前記不揮発性記憶素子の集合のプログラミングを実行する工程と、
前記不揮発性記憶素子の集合が前記所定回数のプログラミングサイクルを受けたことを前記指示が示している場合に、前記第２の初期値を持つ前記増加するプログラム信号を用いて前記第２の期間中に前記不揮発性記憶素子の集合のプログラミングを実行する工程と、をさらに備えている請求項４に記載の方法。
【請求項１１】
データをプログラムする要求を受信する工程と、
前記要求に応答して前記不揮発性記憶素子の集合を消去する工程と、
前記消去に続いて前記不揮発性記憶素子の集合をソフトプログラミングする工程と、
用いられるソフトプログラミングの量に基づいて指示を設定する工程と、をさらに備えており、
前記指示がソフトプログラミングの第１の量を示していれば、前記第１の期間中に前記不揮発性記憶素子の集合をプログラミングする工程が、前記第１の初期値を持つ前記増加するプログラム信号を用いて実行され、前記指示がソフトプログラミングの第１の量を示していれば、前記第２の期間中に前記不揮発性記憶素子の集合をプログラミングする工程が、前記第２の初期値を持つ前記増加するプログラム信号を用いて実行される請求項４に記載の方法。
【請求項１２】
前記第１の期間中に前記不揮発性記憶素子の集合をプログラミングする工程は、
前記プログラミングが完了するまで、前記不揮発性記憶素子の集合の少なくとも部分集合にプログラムパルスを印加する工程と、
前記プログラムパルスが閾値に到達したかどうか判定する工程と、を有し、
前記プログラムパルスが前記閾値に到達していれば、前記第１の期間が終了し、前記第２の期間が開始される請求項４に記載の方法。
【請求項１３】
前記閾値は所定の数のプログラムパルスである請求項１２に記載の方法。
【請求項１４】
前記不揮発性記憶素子の集合からデータを読み取る工程と、
前記データにエラーが存在するかどうか判定する工程と、
前記エラーが閾値レベルを満足するかどうか判定する工程と、をさらに備えており、
前記エラーが前記閾値レベルを満足していれば、前記第１の期間が終了し、前記第２の期間が開始される請求項４に記載の方法。
【請求項１５】
２つ以上のビットにエラーがあれば、前記エラーは前記閾値を満足する請求項１４に記載の方法。
【請求項１６】
前記不揮発性記憶素子の集合がフラッシュメモリの素子である請求項４に記載の方法。
【請求項１７】
不揮発性記憶装置を操作する方法であって、
データをプログラムする要求を受信する工程と、
不揮発性記憶素子の集合の使用量の指示を読み取る工程であって、前記不揮発性記憶素子の集合がプログラム信号を用いてプログラムされ、前記プログラム信号が開始値を有している工程と、
前記使用量の指示が、使用量の第１の閾値を示している場合に、前記開始値を変更する工程と、
前記初期値を持つ前記プログラミング信号を用いて前記不揮発性記憶素子の集合をプログラミングする工程と、を備えている方法。
【請求項１８】
前記プログラム信号が、大きさが増加するパルスの集合を有しており、
前記初期値が第１のパルスの大きさに関連する請求項１７に記載の方法。
【請求項１９】
前記不揮発性記憶素子の集合がフラッシュメモリの素子である請求項１７に記載の方法。
【請求項２０】
前記指示が前記不揮発性記憶素子の集合に記憶される請求項１７に記載の方法。
【請求項２１】
前記指示が前記不揮発性記憶素子の集合のコントローラに記憶される請求項１７に記載の方法。
【請求項２２】
前記指示が前記不揮発性記憶素子の集合の状態マシンに記憶され、
前記使用量の前記指示がプログラミング動作の回数に対応する請求項１７に記載の方法。
【請求項２３】
前記不揮発性記憶素子の集合を消去する工程と、
前記不揮発性記憶素子の集合の少なくとも部分集合をソフトプログラミングする工程と、
実行された前記ソフトプログラミングの量に基づいて前記指示を設定する工程と、をさらに備えている請求項１７に記載の方法。
【請求項２４】
前記指示が１つ以上のビットで表されるフラグであり、
前記指示を設定する工程は、前記ソフトプログラミングが所定の数を上回る回数の繰り返しを必要とする場合に、前記フラグを変更する請求項２３に記載の方法。
【請求項２５】
前記プログラミングする工程が所定の回数の繰り返しを必要としたかどうかに基づいて前記指示を設定する工程をさらに備えている請求項１７に記載の方法。
【請求項２６】
データを読み取る要求を受信する工程と、
前記データにエラーが存在するかどうか判定する工程と、
前記エラーが閾値レベルを満足するかどうかに基づいて前記指示を設定する工程と、をさらに備えている請求項１７に記載の方法。
【請求項２７】
前記開始値を変更する工程が、前記開始値を低下させることである請求項１７に記載の方法。
【請求項２８】
不揮発性記憶システムであって、
不揮発性記憶素子と、
前記不揮発性記憶素子と通信している１つ以上の管理回路と、を備えており、
前記１つ以上の管理回路は、データをプログラムする要求を受信しており、
前記１つ以上の管理回路は、前記不揮発性記憶素子の使用量の指示が第１の使用量を示している場合には、第１の開始値を有するプログラミング信号を用いて前記要求に応答して前記不揮発性記憶素子をプログラムし、前記使用量の指示が第２の使用量を示している場合には、第２の開始値を有するプログラミング信号を用いて前記不揮発性記憶素子をプログラムする不揮発性記憶システム。
【請求項２９】
前記１つ以上の管理回路が、前記要求に応答して前記使用量の指示を読み取り、
前記１つ以上の管理回路が、前記不揮発性記憶システムの所定の動作に応答して前記使用量の指示を更新する請求項２８に記載の不揮発性記憶システム。
【請求項３０】
前記使用量の指示がプログラミングサイクルの数に対応する請求項２９に記載の不揮発性記憶システム。
【請求項３１】
前記１つ以上の管理回路が、前記不揮発性記憶素子を消去するとともに、前記消去に続いて前記不揮発性記憶素子をソフトプログラムしており、
前記ソフトプログラミングがある閾値の繰り返し回数を必要とする場合に、前記１つ以上の管理回路が、前記使用量の指示を、前記第１の使用量の指示から前記第２の使用量の指示に変更する請求項２８に記載の不揮発性記憶システム。
【請求項３２】
前記特定のプログラミングサイクルがある閾値の繰り返し回数を必要とする場合に、前記１つ以上の管理回路が、前記使用量の指示を、前記第１の使用量の指示から前記第２の使用量の指示に変更する請求項２８に記載の不揮発性記憶システム。
【請求項３３】
前記１つ以上の管理回路が、前記不揮発性記憶素子からデータを読み出して、前記データになんらかのエラーがあるかどか判定しており、
前記データが所定量を超えるエラーを含んでいる場合に、前記１つ以上の管理回路が、前記使用量の指示を、前記第１の使用量の指示から前記第２の使用量の指示に変更する請求項２８に記載の不揮発性記憶システム。
【請求項３４】
前記使用量の指示が第３の使用量を示している場合に、前記１つ以上の管理回路が、第３の開始値を有するプログラミング信号を用いて前記不揮発性記憶素子をプログラムする請求項２８に記載の不揮発性記憶システム。
【請求項３５】
前記１つ以上の不揮発性記憶素子が、不揮発性記憶素子のブロックである請求項２８に記載の不揮発性記憶システム。
【請求項３６】
前記１つ以上の不揮発性記憶素子が、複数のブロックを含むフラッシュメモリデバイスのアレイである請求項２８に記載の不揮発性記憶システム。
【請求項３７】
前記１つ以上の不揮発性記憶素子が、フラッシュメモリデバイスである請求項２８に記載の不揮発性記憶システム。
【請求項３８】
前記１つ以上の管理回路が、状態マシン、デコーダ、感知回路およびコントローラのうちの１つ以上を有しており、
前記不揮発性記憶素子がフラッシュメモリデバイスのアレイの一部であり、フラッシュメモリデバイスの前記アレイがワードラインとビットラインを有している請求項２８に記載の不揮発性記憶システム。
【請求項３９】
不揮発性記憶システムであって、
不揮発性記憶素子と、
前記不揮発性記憶素子と通信している１つ以上の管理回路と、を備えており、
前記１つ以上の管理回路は、第１の開始プログラミング信号値を用いて、プログラミングサイクルの第１の集合中に前記不揮発性記憶素子をプログラムしており、
前記１つ以上の管理回路は、第２の開始プログラミング信号値を用いて、プログラミングサイクルの第２の集合中に不揮発性記憶素子の前記集合をプログラムしており、
前記第１の開始プログラミング信号値が前記第２のプログラミング信号値とは異なり、プログラミングサイクルの前記第２の集合がプログラミングサイクルの前記第１の集合の後である不揮発性記憶システム。
【請求項４０】
前記第１の開始プログラミング電圧が、増加する大きさを有する一連のパルスのうちの最初のパルスの大きさに対応する請求項３９に記載の不揮発性記憶システム。
【請求項４１】
前記１つ以上の管理回路は、プログラミングサイクルの前記第１の集合が完了したことを判定して、プログラミングサイクルが所定の数だけ実行されるとこれに応答してプログラミングサイクルの前記第２の集合を開始することを決定する請求項３９に記載の不揮発性記憶システム。
【請求項４２】
前記１つ以上の管理回路は、プログラミングサイクルの前記第１の集合が完了したことを判定して、特定のプログラミングサイクルがある閾値量だけ繰り返されるとこれに応答してプログラミングサイクルの前記第２の集合を開始することを決定する請求項３９に記載の不揮発性記憶システム。
【請求項４３】
前記１つ以上の管理回路は、前記不揮発性記憶素子を消去しており、
前記１つ以上の管理回路は、前記不揮発性記憶素子を消去した後で、前記不揮発性記憶素子に対してソフトプログラミングを実行しており、
前記１つ以上の管理回路は、プログラミングサイクルの前記第１の集合が完了したことを判定して、前記ソフトプログラミングがある閾値量だけ繰り返されるとこれに応答してプログラミングサイクルの前記第２の集合を開始することを決定する請求項３９に記載の不揮発性記憶システム。
【請求項４４】
前記１つ以上の管理回路は、前記不揮発性記憶素子からデータを読み取っており、
前記１つ以上の管理回路は、前記データ中のエラーを発見しており、
前記１つ以上の管理回路は、プログラミングサイクルの前記第１の集合が完了したことを判定して、前記データ中にあるエラーの閾値量に応答してプログラミングサイクルの前記第２の集合を開始することを決定する請求項３９に記載の不揮発性記憶システム。
【請求項４５】
前記不揮発性記憶素子がフラッシュメモリを有する請求項３９に記載の不揮発性記憶システム。
【請求項４６】
フラッシュメモリシステムであって、
フラッシュメモリ素子と、
前記フラッシュメモリ素子と通信している１つ以上の管理回路と、を備えており、
前記１つ以上の管理回路は、時間の経過に連れて第１の電圧から電圧値が増加するプログラミング信号を用いて前記フラッシュメモリ素子をプログラムしており、
前記１つ以上の管理回路は、その後に、時間の経過に連れて第２の電圧から電圧値が増加するプログラミング信号を用いて前記フラッシュメモリ素子をプログラムしており、
前記第２の電圧が前記第１の電圧より低いフラッシュメモリシステム。
【請求項４７】
前記１つ以上の管理回路が、前記フラッシュメモリシステムに対する所定の使用条件が検出された後に、時間が経過するに連れて第２の電圧から電圧値が増加する前記プログラミング信号を用い始める請求項４６に記載の不揮発性記憶システム。
【請求項４８】
前記所定の使用条件が、プログラミングサイクルのカウント動作、プログラミングサイクルの繰り返し回数のカウント動作、ソフトプログラミングサイクルの繰り返し回数のカウント動作およびエラーの数のカウント動作のうちのどれか１つによって検出される請求項４７に記載の不揮発性記憶システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性メモリのプログラミングに関する。
【背景技術】
【０００２】
半導体メモリデバイスは、さまざまな電子装置内で、ますます多く使用されるようになっている。例えば、不揮発性半導体メモリは、携帯電話、デジタルカメラ、パーソナルデジタルアシスタント、モバイルコンピューティング装置、非モバイルコンピューティング装置、およびその他の装置の中で使用されている。電気的に消去可能でプログラム可能な読み出し専用メモリ（ＥＥＰＲＯＭ）およびフラッシュメモリは、特に普及している不揮発性半導体メモリである。
【０００３】
ＥＥＰＲＯＭとフラッシュメモリは共に、半導体基板中のチャネル領域の上方に位置するとともにチャネル領域から絶縁されている浮遊ゲートを利用している。この浮遊ゲートは、ソース領域とドレイン領域の間に位置している。制御ゲートが、浮遊ゲートの上方に設けられているとともに浮遊ゲートから絶縁されている。トランジスタの閾値電圧は、浮遊ゲートに保持されている電荷の量によって制御される。すなわち、ソースとドレイン間を導通させてトランジスタをオンさせるために制御ゲートに印加しなければならない電圧の最小値は、浮遊ゲート上の電荷のレベルによって制御される。
【０００４】
ＥＥＰＲＯＭデバイスまたはＮＡＮＤフラッシュメモリデバイスなどのフラッシュメモリデバイスをプログラミングするとき、一般的には、制御ゲートにプログラム電圧を印加して、ビット線を接地する。チャネルからの電子は浮遊ゲートに注入される。電子が浮遊ゲート中に蓄積されると、浮遊ゲートは負に帯電して、メモリセルの閾値電圧が引き上げられ、これで、メモリセルはプログラムされた状態になる。プログラミングに関するさらなる情報は、双方ともそれらの全体を参照してここに組み込む「不揮発性メモリのソース側自己昇圧技法」という名称の米国特許第６，８５９，３９７号および２００３年７月２９日に出願された「過剰プログラムされたメモリの検出」という名称の米国特許出願公開２００７／００２４９３９に見受けられる。
【０００５】
ＥＥＰＲＯＭデバイスおよびフラッシュメモリデバイスのなかには、２つの範囲の電荷を記憶させるために使う浮遊ゲートを有するものがある。したがって、メモリセルは、２つの状態（消去された状態とプログラムされた状態）のどちらかにプログラム／消去することが可能である。このようなフラッシュメモリは、バイナリフラッシュメモリデバイスと呼ばれることもある。
【０００６】
マルチステート（マルチレベルとも呼ばれる）フラッシュメモリデバイスは、禁止電圧範囲によって分離されている複数の異なる許容された、または有効な、プログラムされた閾値電圧範囲を特定することによって実現される。これら異なる閾値電圧範囲のそれぞれは、メモリデバイスの中に符号化されたデータビットの集合の所定の値に対応している。
【０００７】
一般的に、プログラムが動作している間に制御ゲートに印加されるプログラム電圧は、一連のパルスとして印加される。１つの実施形態では、これらパルスの大きさは、連続するパルスごとに所定のステップサイズだけ（たとえば、０．２Ｖ、０．３Ｖ、０．２Ｖまたはその他の値）だけ増加する。図１に、フラッシュメモリセルの制御ゲート（または、場合によってはステアリングゲート）に印加することが可能なプログラム電圧信号Ｖｐｇｍを示す。このプログラム電圧信号Ｖｐｇｍは、時間とともに大きさが増加する一連のパルスを含んでいる。プログラムパルス同士間の期間に、検証動作が実行される。すなわち、並列にプログラムされているセルグループ中の各セルのプログラミングレベルを、連続するプログラミングパルス同士間で読み取って、このレベルが、プログラムすべき検証レベル以上であるかどうか判定する。マルチステートフラッシュメモリセルを含むアレイの場合、これらメモリセルは、おのおのの状態に対する検証ステップを実行して、セルが自身のデータに関連した検証レベルに到達したかどうかを判定可能とする。たとえば、データを４つの状態で記憶することが可能なマルチステートメモリセルは、３つの比較ポイントに対して検証動作を実行する必要がありうる。
【０００８】
プログラム電圧Ｖｐｇｍの大きさの選択は、妥協の問題である。この値があまりに高いと、一部のメモリセルがオーバープログラムされる結果となり、この値があまりに低すぎると、プログラミング時間が長くなるという結果となる。一般的に、不揮発性メモリのユーザは、メモリプログラムが高速であることを望む。
【発明の開示】
【発明が解決しようとする課題】
【０００９】
先行技術においては、あまり使用実績のない新しいデバイス（フレッシュデバイスとも呼ばれる）に対しても、頻繁に使用されたデバイスに対しても同じプログラム信号が用いられる。しかしながら、不揮発性メモリデバイスの場合、プログラミングサイクルをたくさん経過するに連れて、浮遊ゲートとチャネル領域間の絶縁体に電荷が捕獲される。電荷がこのように捕獲されることによって、閾値電圧のレベルが高くなって、メモリセルをより迅速にプログラムすることが可能となる。プログラム信号の大きさをあまり高く設定した場合、たとえフレッシュデバイスがオーバープログラミングされるという結果にならなくても、このデバイスは、頻繁に使用するに連れて、オーバープログラミングされるようになる。したがって、新しいデバイスは、長く使用されるに連れてオーバープログラミングされることがないように、そのプログラム電圧を十分低く設定する。プログラム電圧の大きさをこのように低くすると、フレッシュデバイスがデータをプログラムする速度が低下する。
【課題を解決するための手段】
【００１０】
本書に記載する技術は、オーバープログラミングする危険性を増すことなく、データをより早くプログラミングするための解決策を提供する。この成果を達成するために、プログラミング特徴の１つの集合を用いて新しいデバイスをプログラムし、一方、プログラミング特徴の別の集合を用いて、このデバイスを使用後にプログラムする。
【００１１】
１つの実施形態では、第１の初期値を持つ増加プログラム信号を用いて第１の期間中に不揮発性記憶素子の集合をプログラムし、次いで、第２の初期値を持つ増加プログラム信号を用いてこの不揮発性記憶素子集合を第２の期間中にプログラムする。ここで、第２の期間は第１の期間の後に来る期間であり、第２の初期値は第１の初期値とは異なる。
【００１２】
１つの実施例は、不揮発性記憶素子の集合と、前記不揮発性記憶素子と通信している１つ以上の管理回路とを備えている。１つ以上の管理回路は、データをプログラムする要求を受信する。この要求に応答して、１つ以上の管理回路は、不揮発性記憶素子に対する使用量指示が第１の使用量を示している場合には第１の開始値を有するプログラミング信号を用いて不揮発性記憶素子をプログラムし、この使用量指示が第２の使用量を示している場合には第２の開始値を有するプログラミング信号を用いて不揮発性記憶素子をプログラムする。使用量指示の一例として、不揮発性記憶素子、コントローラ、状態マシンまたは他のところに記憶されるフラグ（１ビット以上）がある。このフラグが、不揮発性記憶素子の使用量の尺度を反映するデータを記憶する。
【発明を実施するための最良の形態】
【００１３】
本発明の実施に適した不揮発性メモリシステムの一例では、ＮＡＮＤフラッシュメモリ構造を使用する。ＮＡＮＤフラッシュメモリ構造では、２つの選択ゲートの間に複数のトランジスタが直列に配置されている。直列のトランジスタと選択ゲートは、ＮＡＮＤストリングと呼ばれる。図２は、１つのＮＡＮＤストリングを示す上面図である。図３は、その等価回路である。図２および図３に示すＮＡＮＤストリングは、直列の４つのトランジスタ１００、１０２、１０４、１０６を備え、第１の選択ゲート１２０と第２の選択ゲート１２２との間に挟まれている。選択ゲート１２０は、ＮＡＮＤストリングをビット線１２６に接続する。選択ゲート１２２は、ＮＡＮＤストリングをソース線１２８に接続する。選択ゲート１２０は、制御ゲート１２０ＣＧに適切な電圧を印加することによって制御される。選択ゲート１２２は、制御ゲート１２２ＣＧに適切な電圧を印加することによって制御される。トランジスタ１００、１０２、１０４、１０６のそれぞれは、制御ゲートと浮遊ゲートを有する。トランジスタ１００は、制御ゲート１００ＣＧと浮遊ゲート１００ＦＧを有する。トランジスタ１０２は、制御ゲート１０２ＣＧと浮遊ゲート１０２ＦＧとを有する。トランジスタ１０４は、制御ゲート１０４ＣＧと浮遊ゲート１０４ＦＧを有する。トランジスタ１０６は、制御ゲート１０６ＣＧと浮遊ゲート１０６ＦＧを有する。制御ゲート１００ＣＧは、ワード線ＷＬ３に接続されている。制御ゲート１０２ＣＧは、ワード線ＷＬ２に接続されている。制御ゲート１０４ＣＧは、ワード線ＷＬ１に接続されている。制御ゲート１０６ＣＧは、ワード線ＷＬ０に接続されている。１つの実施形態では、トランジスタ１００、１０２、１０４、１０６のそれぞれがメモリセルとなる。他の実施形態では、メモリセルが複数のトランジスタを含んでいてもよく、図２および図３に示した構成と異なっていてもよい。選択ゲート１２０は、選択線ＳＧＤに接続され、選択ゲート１２２は、選択線ＳＧＳに接続される。
【００１４】
図４は、上記のＮＡＮＤストリングの断面図を示す。図４に示すように、ＮＡＮＤストリングのトランジスタはｐ−ウェル領域１４０に形成される。各トランジスタは、制御ゲート（１００ＣＧ、１０２ＣＧ、１０４ＣＧ、および１０６ＣＧ）と浮遊ゲート（１００ＦＧ、１０２ＦＧ、１０４ＦＧ、および１０６ＦＧ）からなるスタックゲート構造を備えている。浮遊ゲートは、酸化膜または他の誘電体膜の上にあるｐ−ウェルの表面上に形成される。制御ゲートは、浮遊ゲートの上に位置している。制御ゲートと浮遊ゲートは、ポリシリコン間誘電体層によって分離されている。メモリセル（１００、１０２、１０４、１０６）の制御ゲートは、ワード線を形成する。Ｎ＋拡散層１３０、１３２、１３４、１３６、１３８は隣接するセル間で共有されており、それによりセルは相互に直列に接続されてＮＡＮＤストリングを形成する。これらのＮ＋拡散層は、各セルのソースおよびドレインを形成する。例えば、Ｎ＋拡散層１３０は、トランジスタ１２２のドレイン、およびトランジスタ１０６のソースとして働く。Ｎ＋拡散層１３２は、トランジスタ１０６のドレイン、およびトランジスタ１０４のソースとして働く。Ｎ＋拡散層１３４は、トランジスタ１０４のドレイン、およびトランジスタ１０２のソースとして働く。Ｎ＋拡散層１３６は、トランジスタ１０２のドレイン、およびトランジスタ１００のソースとして働く。Ｎ＋拡散層１３８は、トランジスタ１００のドレイン、およびトランジスタ１２０のソースとして働く。Ｎ＋拡散層１２６は、ＮＡＮＤストリングのビット線につながっており、Ｎ＋拡散層１２８は、複数のＮＡＮＤストリングの共通ソース線につながっている。
【００１５】
図２〜図４では、ＮＡＮＤストリング内に４つのメモリセルを示しているが、４つのトランジスタの使用する構成は、一例であることに留意されたい。ここに記載される技術によって使用されるＮＡＮＤストリングは、４つ未満のメモリセルを有していてもよく、又は、４つを超えるメモリセルを有していてもよい。例えば、一部のＮＡＮＤストリングは、８つのメモリセル、１６のメモリセル、３２のメモリセルなどを含むことができる。本明細書における説明は、ＮＡＮＤストリング内のメモリセルがいかなる数でも有効である。
【００１６】
各メモリセルは、アナログ又はデジタル形式で表されたデータを記憶することが可能である。１ビットのデジタルデータを記憶する場合、メモリセルの可能な閾値電圧の範囲は、論理データ「１」および「０」が割り当てられる２つの範囲に分割される。ＮＡＮＤ型フラッシュメモリの一例では、メモリセルの消去された後の閾値電圧は負となり、論理「１」と定義される。プログラム後の閾値電圧は正となり、論理「０」と定義される。閾値電圧が負の状態で制御ゲートに０Ｖを印加することによって読み出しが試みられた場合、メモリセルはオンになり、論理１が記憶されていることを示す。閾値電圧が正の状態で制御ゲートに０Ｖを印加することによって読み出しが試みられた場合、メモリセルはオンにならず、これは論理「０」が記憶されていることを示す。
【００１７】
また、メモリセルは、複数の状態の情報を記憶することも可能であり、それにより例えば複数ビットのデジタルデータを記憶することも可能である。複数の状態のデータを記憶する場合、可能な閾値電圧の範囲は、記憶する状態の数に分割される。例えば、４つの状態の情報が記憶される場合、４つの閾値電圧範囲が存在し、それぞれにデータ値「１１」、「１０」、「０１」、「００」が割り当てられる。ＮＡＮＤ型メモリの一例では、消去動作の後の閾値電圧は負となり、「１１」と定義される。正の閾値電圧は、「１０」、「０１」、「００」の状態のために使用される。一部の実施例では（上に例示したようなもの）、これらのデータ値（たとえば論理状態）を、グレイコード割り当て方法を用いて閾値範囲に割り当て、これで、浮遊ゲートの閾値電圧が間違ってその隣接する物理状態にずれても、たった１つの論理ビットしか影響されないようにしている。これら分布のそれぞれを、上記の状態とは異なったデータ状態に対応させることが可能な実施形態もある。メモリセルにプログラムされたデータとこのセルの閾値電圧範囲との間の具体的な関係は、メモリセルに対して採用されるデータ符号化スキームによって異なる。たとえば、その双方の全体を参照してここに組み込む、２００３年６月１３日に出願された「メモリシステムのセルの追跡」という名称の米国特許第６，２２２，７６２号と米国特許出願第１０／４６１，２４４号には、マルチステート式フラッシュメモリセルのさまざまなデータ符号化スキームが記載されている。くわえて、本発明に関わる実施形態は、２ビットのデータより多いデータを記憶するメモリセルにも適用可能である。
【００１８】
ＮＡＮＤ型フラッシュメモリおよびそれらの動作に関連する例は、次の米国特許／特許出願（それらのすべては、それらの全体が参照により本明細書に援用されるものとする）で提供されている。米国特許第５，５７０，３１５号明細書、米国特許第５，７７４，３９７号明細書、米国特許第６，０４６，９３５号明細書、米国特許第５，３８６，４２２号明細書、米国特許第６，４５６，５２８号明細書、および米国特許出願第０９／８９３，２７７号明細書（公開番号ＵＳ２００３／０００２３４８）である。ＮＡＮＤ型フラッシュメモリに加え、その他のタイプの不揮発性フラッシュメモリも本発明とともに使用されてもよい。
【００１９】
フラッシュＥＥＰＲＯＭシステムで役に立つ別のタイプのメモリセルは、導電性の浮遊ゲートの代わりに非導電性の誘電性材料を利用して、電荷を不揮発式に蓄積している。このようなセルが、１９８７年３月に発行されたＩＥＥＥのエレクトロン・デバイス・レターの第ＥＤＬ−８巻の第３号の、チャンらによる「真性の酸化物・窒化物・酸化物型の１トランジスタ式ＥＥＰＲＯＭデバイス」という記事の９３〜９５ページに記載されている。シリコン酸化物、シリコン窒化物、シリコン酸化物（“ＯＮＯ”）で形成された三層誘電体を、メモリセルのチャネル上で、導電性の制御ゲートと半導体基板の表面とで挟んでいる。このセルは、セルのチャネルから窒素中に電子を注入し、この窒素中でこれらの電子が限られた領域中に捕獲されて蓄積されることによってプログラムされる。すると、この蓄積された電荷のため、このセルのチャネルのある部分の閾値電圧が変化するが、この変化は検出可能である。このセルは、ホットホールを窒素中に注入することによって消去される。また、１９９１年４月に発行されたソリッドステート回路に関するＩＥＥＥジャーナルの第２６巻の第４号のノザキらによる「半導体ディスクに応用されるＭＯＮＯＳメモリセルを持つ１ＭビットのＥＥＰＲＯＭ」の４９７〜５０１ページを読めば、ドーピングされた多結晶シリコンゲートがメモリセルチャネルのある部分上を伸張して、互いに分離された選択トランジスタを形成している分離ゲート構造の類似のセルが記述されている。前述の２つの記事の全体を参照してここに組み込む。参照して個々に組み込む、１９９８年のＩＥＥＥプレスのウイリアム・ブラウン（Ｗｉｌｌｉａｍ  Ｄ．  Ｂｒｏｗｎ）とジョー・ブルーワ（Ｊｏｅ  Ｅ．  Ｂｒｅｗｅｒ）によって編集された「不揮発性半導体メモリ技術」の１．２章に言及されているプログラミング技法もまた、誘電性電荷捕獲デバイスに応用可能であるとこの章に記述されている。このパラグラフに記述されているメモリセルもまた、本発明で用いることが可能である。したがって、本書に記載する技術もまた、互いに異なったメモリセルの誘電体領域同士間でのカップリングに当てはまる。
【００２０】
おのおののセルに２ビットを記憶する別の方式が、２０００年１１月に発行されたＩＥＥＥのエレクトロン・デバイス・レターの第２１巻の第１１号のエイタン（Ｅｉｔａｎ）らによる「ＮＲＯＭ：新規な選択的捕獲、２ビット式の不揮発性メモリセル」の５４３〜５４５ページに記載されている。ＯＮＯ誘電体層が、ソース拡散層とドレイン拡散層間のチャネル上を伸張している。一方のデータビットに対する電荷がドレインに隣り合った誘電体層中で局所化され、他方のデータビット用の電荷がソースに隣り合った誘電体層中で局所化される。マルチステートデータ記憶装置は、誘電体内部の空間的に分離された電荷蓄積領域のバイナリ状態を別々に読み取ることによって記憶される。このパラグラフに記述するメモリセルもまた、本発明で用いることが可能である。
【００２１】
図５は、本発明を実施するために使用できるフラッシュメモリシステムの１つの実施形態のブロック図である。メモリセルアレイ２０２は、列制御回路２０４と、行制御回路２０６と、ｃ−ソース制御回路２１０と、ｐ−ウェル制御回路２０８によって制御される。列制御回路２０４は、メモリセル内に記憶されたデータを読み出すために、プログラム動作中のメモリセルの状態を判定するために、およびビット線の電位レベルを制御してプログラミングを促進又はプログラミングを抑止するために、メモリセルアレイ２０２のビット線に接続されている。行制御回路２０６は、ワード線のうちのいずれかを選択するために、読み出し電圧を印加するために、プログラム電圧を印加するために、および消去電圧を印加するために、ワード線に接続されている。例えば、ＥＰＲＯＭおよびフラッシュメモリ回路で使用するプログラム電圧レベルは、メモリ回路で通常使用される電圧より高い。これらは回路に供給される電圧より高いことがよくある。これらの高い電圧は、好ましくは行制御回路２０６（あるいは別の場所）内の電荷ポンプによって生成される。行制御回路２０６は、一つの例において、本質的に容量性ワード線に電荷を投入し、電圧を高くする。電荷ポンプは入力を電圧Ｖｉｎで受け取り、入力された電圧を電圧増倍の過程において徐々に高くし、より高い電圧Ｖｏｕｔを出力する。出力された電圧は負荷、例えばＥＰＲＯＭメモリ回路ワード線に供給する。いくつかの実施例においては、負荷から電荷ポンプへフィードバック信号が送られる。従来技術のポンプは、負荷が所定の電圧に達したことを示す信号に応答して停止する。また、負荷が所定の電圧に達すると、過電荷を防ぐために分路が使用される。しかし、これはより多くの電力を消費し、低電圧印加の際には望ましくない。電荷ポンプに関する詳細な情報は、参照として本発明の全体に組み込まれる米国特許第６，７３４，７１８号に記載されている。
【００２２】
Ｃ−ソース制御回路２１０は、メモリセルに接続された共通ソース線（図６に「Ｃ−ソース」として示す）を制御する。Ｐ−ウェル制御回路２０８は、ｐ−ウェル電圧を制御する。
【００２３】
メモリセル内に記憶されたデータは、列制御回路２０４によって読み出され、データ入力／出力バッファ２１２を経由して、外部Ｉ／Ｏ線に出力される。メモリセル内に記憶されるプログラムデータは、外部Ｉ／Ｏ線を経由してデータ入力／出力バッファ２１２に入力され、列制御回路２０４に転送される。外部Ｉ／Ｏ線は、コントローラ２１８に接続される。
【００２４】
フラッシュメモリデバイスを制御するためのコマンドデータは、コントローラ２１８に入力される。コマンドデータは、どのような動作が要求されているのかをフラッシュメモリに通知する。入力コマンドは、列制御回路２０４と、行制御回路２０６と、ｃ−ソース制御２１０と、ｐ−ウェル制御回路２０８と、データ入力／出力バッファ２１２とを制御する状態マシン２１６に転送される。状態マシン２１６は、さらに、レディ（ＲＥＡＤＹ）／ビジー（ＢＵＳＹ）や、パス（ＰＡＳＳ）／フェイル（ＦＡＩＬ）などの、フラッシュメモリのステータスデータを出力してもよい。いくつかの実施例において、状態マシン２１６は、以下に説明するフローチャートに描かれる工程を含むプログラミングプロセスの管理を担う。
【００２５】
コントローラ２１８は、パーソナルコンピュータ、デジタルカメラ、パーソナルデジタルアシスタントなどのホストシステムに接続されている、又は、接続可能である。コントローラ２１８は、ホストからコマンドを受信するために、ホストからデータを受信するために、ホストにデータを提供するために、およびホストにステータス情報を提供するために、ホストと通信を行う。コントローラ２１８は、ホストからのコマンドを、状態マシン２１６と通信するコマンド回路２１４が解読して実行可能なコマンド信号に変換する。コントローラ２１８は、通常、メモリアレイに書き込まれる、又はメモリアレイから読み出されるユーザデータのためのバッファメモリを有している。いくつかの実施例においては、プログラミングプロセスはこのコントローラによって管理できる。
【００２６】
一例のメモリシステムは、コントローラ２１８を含む１つの集積回路と、１つ以上の集積回路チップ（それぞれがメモリアレイと、関連する制御、入力／出力、および状態マシン回路とを含む）を備える。メモリアレイとシステムのコントローラ回路は、１つ以上の集積回路チップ上に一緒に統合される傾向にある。メモリシステムは、ホストシステムの一部として組み込まれていてもよく、又は、ホストシステムに着脱可能に挿入されるメモリカード（又はその他のパッケージ）内に含まれていてもよい。そのような着脱可能なカードは、メモリシステム全体（例えば、コントローラを含む）を含んでいてもよく、又は、メモリアレイおよび関連する周辺回路のみを含んでいてもよい（コントローラはホスト内に組み込まれる）。このように、コントローラ（または制御機能）は、ホスト内に組み込まれることも、又は着脱可能なメモリシステム内に含まれることも可能である。
【００２７】
いくつかの実施形態では、図５のコンポーネントのうちのあるものは、組み合わせることが可能である。さまざまな設計で、図５のコンポーネントのうちで、メモリセルアレイ２０２以外の１つ以上のコンポーネントが、管理回路と考えることが可能である。たとえば、１つ以上の管理回路は、コマンド回路、状態マシン、行制御回路、列制御回路、ウエル制御回路、ソース制御回路、データ入／出力回路およびコントローラのうちのどれか１つまたはこれらを組み合わせたものを含んでいる。
【００２８】
図６を参照して、メモリセルアレイ２０２の構造の例を説明する。一例として、１,０２４個のブロックに区分けされているＮＡＮＤ型フラッシュＥＥＰＲＯＭを説明する。それぞれのブロックに記憶されたデータは同時に消去される。１つの実施形態では、ブロックは、同時に消去されるセルの最小単位である。本実施形態において、各ブロックには８，５１２カラムあり、偶数および奇数カラムに分割される。ビット線はまた偶数のビット線（ＢＬｅ）および奇数のビット線（ＢＬｏ）に分割される。図６は、直列に接続され、ＮＡＮＤストリングを形成する４つのメモリセルを示す。４つのセルは各ＮＡＮＤストリングに含まれるように図示されているが、使用するセルの数は４つ以上でも４つ以下でもよい。ＮＡＮＤストリングの一方の端子は、選択トランジスタＳＧＤを介して対応するビット線に接続され、もう一方の端子は、第２の選択トランジスタＳＧＳを介してｃ-ソースに接続される。
【００２９】
読み出しおよびプログラミング動作の１つの実施形態では、４，２５６のメモリセルが同時に選択される。選択されるメモリセルは、同じワード線と、同じ種類のビット線（例えば、偶数ビット線又は奇数ビット線）とを有する。したがって、５３２バイトのデータが同時に読み出し又はプログラムされることが可能である。同時に読み出し又はプログラムされるこれらの５３２バイトのデータは、一つの論理ページを形成する。したがって、１つのブロックは、少なくとも８つの論理ページを記憶することが可能である（４本のワード線、それぞれが奇数および偶数ページを有する）。各メモリセルが２ビットのデータを記憶し、これら２ビットがそれぞれ異なったページに記憶する場合（例えば、マルチステートメモリセル）、１つのブロックは１６の論理ページを記憶する。他のサイズのブロックおよびページも、本発明とともに使用されてもよい。さらに、図５および図６に示す構造以外の構造を、本発明を実施するために使用することもできる。例えば、１つの実施例において、ビット線は、全てのビット線がプログラムされかつ同時に（あるいは非同時に）読み取りされるように奇数と偶数の線に分割されない。
【００３０】
メモリセルの消去は、ｐ−ウェルを消去電圧（例えば、２０ボルト）まで引き上げるとともに、選択されたブロックのワード線を接地することによって行われる。ソースおよびビット線はフローティングとする。消去は、メモリアレイ全体、独立したブロック、又は別の単位のセルに対して実行することができる。浮遊ゲートから電子がｐ−ウェル領域に移動し、閾値電圧は負になる（一つの実施形態において）。
【００３１】
読み出しおよび検証動作では、トランジスタをパスゲートとして動作させるために、選択ゲート（ＳＧＤおよびＳＧＳ）と、選択されないワード線（例えば、ＷＬ０、ＷＬ２、およびＷＬ３）が、読み出しパス電圧（例えば、４．５ボルト）まで引き上げられる。選択されるワード線（例えば、ＷＬ１）は、各読み出しおよび検証動作について指定されたレベルの電圧に接続され、関連するメモリセルの閾値電圧が指定されたレベルの電圧より上なのか下なのかが判定される。例えば、２レベル型のメモリセルの読み出し動作では、選択されるワード線ＷＬ１を接地してもよく、それによって閾値電圧が０Ｖよりも高いのか否かを検出することができる。２レベル型のメモリセルの検証動作では、選択されるワード線ＷＬ１を例えば０．８Ｖに接続し、それによって閾値電圧が少なくとも０．８Ｖに到達しているのか否かを検証することができる。ソースおよびｐ−ウェルは０ボルトである。選択されるビット線（ＢＬｅ）は、例えば０．７Ｖのレベルに、プリチャージされる。閾値電圧が、ワード線上の読み出し又は検証レベルよりも高い場合、関連するビット線（ＢＬｅ）の電位レベルは、非導電性のメモリセルのため、ハイレベルを維持する。他方、閾値電圧が、読み出し又は検証レベルよりも低い場合、関連するビット線（ＢＬｅ）の電位レベルは、導電性のメモリセルの放電によって、例えば０．５Ｖ未満のローレベルに減少する。メモリセルの状態は、それによって、ビット線に接続されたセンス増幅器により検出される。
【００３２】
上記の消去、読み出し、および検証動作は、当業界で知られた技術に従って実行される。したがって、説明した詳細の多くについては、当業者によって変更されることが可能である。当業界で知られた他の読み出しおよび検証技術を使用することもできる。
【００３３】
上述したように、おのおののブロックを多くのページに分割することが可能である。１つの実施形態では、１ページがプログラミングの単位である。いくつかの実施例では、個々のページがセグメントに分割される。セグメントは、基本的なプログラミング動作として一度に書き込まれる最少のセルの数を有している。一般的に、１ページ以上分のデータが１行のメモリセルに記憶される。１ページに１つ以上のセクターを記憶することが可能である。セクターには、ユーザデータとオーバヘッドデータが含まれる。オーバヘッドデータは、一般的に、セクターのうちのユーザデータから計算されたエラー訂正符号（ＥＣＣ）を含んでいる。コントローラの一部が、データがアレイ中にプログラミングされている間にＥＣＣを計算し、また、データがアレイから読み出されている間にこれをチェックする。代替例では、ＥＣＣおよび／または他のオーバヘッドデータを、自身が属すユーザデータとは異なったページ、さらには異なったブロックに記憶される。メモリデバイスの他の部分（たとえば状態マシン）がＥＣＣを計算可能である実施形態もある。
【００３４】
ユーザデータを含むセクターは、一般に、磁気ディスクドライブ中のセクターのサイズに対応して５１２バイトである。オーバヘッドデータは、一般的には追加の１６〜２０バイトである。多くのページがブロックを形成しているが、その数値は、たとえば、８ページから３２ページ、６４ページ、さらにこれ以上の数値の間のいずれかの数値である。
【００３５】
図７に、それぞれのメモリセルが２ビットのデータを記憶している場合のメモリセルアレイの閾値電圧分布を示す。図７は、消去されたメモリセルの第１の閾値電圧分布Ｅを示している。プログラムされたメモリセルの３つの閾値電圧分布Ａ、Ｂ、Ｃもまた、示されている。１つの実施形態では、分布Ｅ中の閾値電圧は負であり、分布Ａ、Ｂ、Ｃ中の閾値電圧は正である。
【００３６】
図７の異なる閾値電圧範囲はそのそれぞれが、データビットの集合の所定の値に対応している。メモリセルにプログラムされたデータとこのセルの閾値電圧レベルとの間の具体的な関係は、セルに対して採用されるデータ符号化スキームによって異なる。１つの例では、“１１”を閾値電圧範囲Ｅ（状態Ｅ）に割り当て、“１０”を閾値電圧範囲Ａ（状態Ａ）に割り当て、“００”を閾値電圧範囲Ｂ（状態Ｂ）に割り当て、“０１”を閾値電圧範囲Ｃ（状態Ｃ）に割り当てている。しかしながら、他のスキームを用いている実施形態もある。
【００３７】
図７はまた、メモリセルからデータを読み出すための３つの基準電圧Ｖｒａ、Ｖｒｂ、Ｖｒｃを示している。所与のメモリセルの閾値電圧がＶｒａ、ＶｒｂおよびＶｒｃより大きいか小さいかをテストすることによって、本システムは、メモリセルがどの状態にあるかを判定することが可能である。図７はまた、３つの検証基準電圧Ｖｖａ、Ｖｖｂ、Ｖｖｃを示している。メモリセルを状態Ａにプログラミングする際には、本システムは、これらのメモリセルの閾値電圧がＶｖａ以上であるかどうかテストする。メモリセルを状態Ｂにプログラミングする際には、本システムは、これらのメモリセルの閾値電圧がＶｖｂ以上であるかどうかテストする。メモリセルを状態Ｃにプログラミングする際には、本システムは、これらのメモリセルの閾値電圧がＶｖｃ以上であるかどうかを決定する。
【００３８】
１つの実施形態では、フルシーケンスプログラミングとして知られているが、メモリセルを、消去状態Ｅからプログラム済み状態Ａ、Ｂ、Ｃ（曲線矢印で示されている）のうちのどれにでも直接的にプログラムすることが可能である。たとえば、プログラムされるメモリセルの母集団を最初に消去し、これで、この母集団中のすべてのメモリセルが消去状態Ｅとなるようにする。一部のメモリセルが状態Ｅから状態Ａにプログラムされている間に、他のメモリセルを状態Ｅから状態Ｂにプログラムしたりおよび／または状態Ｅから状態Ｃにプログラムしたりする。
【００３９】
図８に、互いに異なった２つのページ、すなわち、下位ページと上位ページ分のデータを記憶しているマルチステートメモリセルをプログラミングする２パス式技法の例を示す。４つの状態、すなわち、状態Ｅ（１１）、状態Ａ（１０）、状態Ｂ（００）および状態Ｃ（０１）が示されている。状態Ｅの場合、両ページとも“１”を記憶している。状態Ａの場合、下位ページは“０”を記憶し、上位ページは“１”を記憶している。状態Ｂの場合、両ページとも“０”を記憶している。状態Ｃの場合、下位ページは“１”を記憶し、上位ページは“０”を記憶している。ここで、特定のビットパターンがそれぞれの状態に割り当てられているが、別のビットパターンを割り当ててもよい。第１のプログラミングパスでは、セルの閾値電圧レベルを、下位の論理ページにプログラムされるビットにしたがって設定される。このビットが論理“１”であれば、この閾値電圧は変更されないが、これは、前に消去されている結果として適切な状態にあるからである。しかしながら、このプログラムされるビットが論理“０”であれば、このセルの閾値電圧は、矢印２３０で示すように状態Ａにまで引き上げられる。これで、第１のプログラミングパスが完結する。
【００４０】
第２のプログラミングパスでは、セルの閾値電圧レベルが、上位の論理ページにプログラムされるビットにしたがって設定される。この上位論理ページビットが論理“１”を記憶するのであれば、なんらプログラミングされないが、これは、このセルが、双方ともが“１”という上位ページビットを有している、下位ページビットのプログラミングしだいで決まる状態ＥまたはＡの内の一方の状態にあるからである。上位ページビットが論理“０”となるのであれば、閾値電圧はずれる。第１のパスの結果、セルが消去状態Ｅのままであれば、第２のフェーズで、このセルは、閾値電圧が、矢印２３４で示すように状態Ｃ内に来るように増大されるようにプログラムされる。このセルが、第１のプログラミングパスの結果として状態Ａにプログラムされた場合、メモリセルは、矢印２３２で示すように閾値電圧が状態Ｂ内に来るように、第２のパスでさらにプログラムされる。第２のパスの結果、下位ページのデータを変更することなく、上位ページの論理“０”を記憶するように指定された状態にセルをプログラムすることになる。
【００４１】
１つの実施形態では、ページ全体を満たすに十分なデータを書き込まれた場合に、総シーケンス書き込みを実行するようにシステムをセットアップすることが可能である。ページ全体を満たすに十分なデータが書き込まれない場合、プログラミングプロセスは、受信したデータによる下位ページのプログラミングをプログラムすることが可能である。さらにその後にデータが受信されると、本システムは、上位ページをプログラムする。別の実施形態では、このシステムは、下位ページをプログラムするモードで書き込みを始め、次に、ワード線のメモリセルの全部（またはほとんど）を満たすに十分なデータがその後で受信されれば総シーケンスプログラミングモードに変換することが可能である。このような実施形態のより詳細が、その全体を参照してここに組み込む、発明者サージー・アナトリビッチ・ゴロベッツ（Ｓｅｒｇｙ  Ａｎａｔｏｌｉｅｖｉｃｈ  Ｇｏｒｏｂｅｔｓ）とヤン・リー（Ｙａｎ  Ｌｉ）による、２００４年１２月１４日に出願された「早期のデータを用いる不揮発性メモリのパイプライン型プログラミング」という名称の米国特許出願第１１／０１３，１２５号に開示されている。
【００４２】
図９Ａ〜１３Ｃに、前のページの隣り合ったのメモリセルに書き込んだ後に特定のページに関するなんらかの特定のメモリセルに書き込み動作を実行することによって、この特定のメモリセルに対する、浮遊ゲート同士のカップリングを軽減する不揮発性メモリをプログラミングする別のプロセスを開示する。図９Ａ〜９Ｃが教示するこのプロセスの１つの実施例では、この不揮発性メモリセルのそれぞれが、４つのデータ状態を用いて２ビットのデータを記憶する。たとえば、状態Ｅが消去された状態で、状態Ａ、ＢおよびＣがプログラムされた状態と仮定する。状態Ｅはデータ１１を記憶している。状態Ａはデータ０１を記憶している。状態Ｂはデータ１０を記憶している。状態Ｃはデータ００を記憶している。隣り合った状態Ａと状態Ｂの間で双方のビットが変化するので、これはノングレイコーディングの例である。データをデータの物理状態に符号化する他の方法も用いることが可能である。それぞれのメモリセルが２ページ分のデータを記憶している。参照目的で、これらのページのデータを下位ページと上位ページと呼ぶが、別のラベルを付けることも可能である。図９のプロセスに対する状態Ａを参照して、上位ページはビット０を記憶し、下位ページはビット１を記憶する。状態Ｂを参照して、上位ページはビット１を記憶し、下位ページはビット０を記憶する。状態Ｃを参照して、双方のページはビットデータ０を記憶する。図９のプログラミングプロセスは、２つのステップのプロセスである。第１のステップでは、下位ページをプログラムする。この下位ページがデータ１の状態にとどまることになっている場合、メモリセルの状態は状態Ｅのままである。このデータが０にプログラムされることになっている場合、メモリセルが状態Ｂ’にプログラムされるように、メモリセルの閾値電圧を引き上げる。図９Ａに、状態Ｅから状態Ｂ’にメモリセルをプログラミングする様子を示す。図９Ａに示す状態Ｂ’は中間状態Ｂ’である。したがって、検証ポイントを、Ｖｖｂより低いＶｖｂ‘として示す。
【００４３】
１つの実施形態では、あるメモリセルが状態Ｅから状態Ｂ’にプログラムされると、隣り合ったワードライン上のその隣接したメモリセルがその下位ページに関してプログラムされる。その隣接したメモリセルをプログラミングした後で、浮遊ゲート同士間のカップリング作用によって、状態Ｂである検討中のメモリセルの見かけ上の閾値電圧が引き上げられる。これによって、状態Ｂの閾値電圧分布の幅を図９Ｂのしきい値電圧分布２５０として示す分布にまで広げる作用がある。この閾値電圧分布の見かけ上の拡大は、上位ページをプログラミングするときに修正される。
【００４４】
図９Ｃは、上位ページをプログラミングするプロセスを示している。メモリセルが消去された状態Ｅにあって上位ページが１のままとどまるのであれば、このメモリセルは状態Ｅのままである。メモリセルが状態Ｅにあってその上位ページデータを０にプログラミングすることになっているのであれば、このメモリセルの閾値電圧を引き上げて、メモリセルが状態Ａとなるようにする。メモリセルが中間閾値電圧分布２５０中にあって、上位ページデータが１にとどまることになっている場合、このメモリセルは最終状態Ｂにプログラムされる。メモリセルが中間閾値電圧分布２５０中にあって、上位ページデータがデータ０になることになっている場合、このメモリセルの閾値電圧を引き上げて、メモリセルが状態Ｃとなるようにする。図９Ａ〜９Ｃに示すプロセスによって浮遊ゲート同士間のカップリング作用が低減されるが、これは、隣接したメモリセルの上位ページをプログラミングした場合にしか、所与のメモリセルの見かけ上の閾値電圧が影響されないからである。別の状態のコーディングの例として、上位ページデータが１の時に閾値電圧分布２５０から状態Ｃへ移動する、および上位ページデータが０の時には状態Ｂで移動することが挙げられる。図９Ａ〜９Ｃに４つのデータ状態と２ページ分のデータに関する例を示すが、図１９Ａ〜１９Ｃが教示する概念は、状態が４つより多いまたは少なく、ページの数が異なっている他の実施例にも適用可能である。様々なプログラミング方法および浮遊ゲート間のカップリングについては、２００５年４月５日に出願された米国特許第１１/０９９，１３３号の「Ｃｏｍｐｅｎｓａｔｉｎｇ  Ｆｏｒ  Ｃｏｕｐｌｉｎｇ  Ｄｕｒｉｎｇ  Ｒｅａｄ  Ｏｐｅｒａｔｉｏｎｓ  Ｏｆ  Ｎｏｎ−Ｖｏｌａｔｉｌｅ  Ｍｅｍｏｒｙ」に記載されている。
【００４５】
図１０に、不揮発性メモリをプログラミングしている間での実行例を記述する表を示す。データは、フレッシュデバイス（未使用デバイス）と、すでに１０，０００のプログラミングサイクルを実行したデバイスに対して提供される。１つの実施形態では、プログラミングサイクルには、プログラミングする動作と消去する動作（または消去してからプログラミングする動作）が含まれる。他の実施形態では、プログラミングサイクルが、消去動作なしのプログラミング動作を含むことがある。図１０の表は、上述した図８に係る方法に従って下位ページと上位ページにデータをプログラムするために、どれだけのプログラミングパルス（Ｖｐｇｍ）の数が用いられたかを示している。また、上述した図７に係る方法に従ってフルシーケンスプログラミングを実行するためのデータもある。どちらの場合も、初期パルスの大きさは１６．０ボルト、ステップサイズは０．３ボルトである。図１０に示すように、フレッシュデバイスの場合の平均プログラミング時間は８００マイクロ秒であり、使用済みデバイスのそれは６５０マイクロ秒である。フレッシュデバイスは、繰り返し使用されているデバイスより約３発多いプログラミングパルスを必要とした。くわえて、フレッシュデバイスは、ソフトプログラミングプロセス（以下に説明する）ではより多くのプログラムパルスを必要とした。
【００４６】
オーバープログラミングの危険性を不当に増すことなく、プログラミングプロセスの速度を増すために、フレッシュデバイスをプログラミングする際に１集合のプログラミングパラメータを用い、ある程度の分量使用されたデバイスをプログラミングする際には別の集合のプログラミングパラメータを用いることを提案する。
【００４７】
１つの実施形態では、フレッシュデバイスと使用済みデバイスは、プログラミング信号Ｖｐｇｍの初期プログラミングパルスの大きさを変化させることによって、さまざまなプログラミングパラメータでプログラムすることが可能である（たとえば図１を参照）。図１１は、初期プログラミングパルスの大きさを時間とともに変化させることによって不揮発性メモリをプログラミングするプロセスの１つの実施形態を記述するフローチャートである。ステップ３００で、初期プログラミング電圧を設定する。すなわち、本デバイスは、プログラム信号Ｖｐｇｍの最初のパルスの大きさを決定する。図１１Ａに示す１つの例では、制御ゲートに印加されるプログラム電圧の最初のパルスの大きさは１６．９Ｖである。連続するパルスはそれぞれ、その大きさが、直前のパルスと比較して０．３Ｖだけ増加している。ステップ３０２で、本デバイスは、Ｎサイクルにわたって動作するが、ここでＮは、あらかじめ決定されるかまたはリアルタイムで決定される。ステップ３０４で、Ｎサイクル経過したら、Ｖｐｇｍの初期プログラミングパルスの大きさは減少する。図１１Ｂに示す１つの例では、制御ゲートに印加されるプログラム電圧Ｖｐｇｍの最初のパルスの大きさは１６．６Ｖまで減少している。連続するパルスはそれぞれ、その大きさが、直前のパルスと比較して０．３Ｖだけ増加している。ステップ３０６で、本デバイスは、Ｍサイクルにわたって動作するが（ＭはＮと同じであったり異なったりする）、ここで数字Ｍの大きさは、あらかじめ決定されるかまたはリアルタイムで決定される。ステップ３０８で、（Ｎ＋Ｍ）サイクル経過したら、初期プログラミング電圧は新しい値にまで減少する。図１１Ｃに示す１つの例では、制御ゲートに印加されるプログラム電圧Ｖｐｇｍの最初のパルスの大きさは１６．３Ｖまで減少している。連続するパルスはそれぞれ、その大きさが、直前のパルスと比較して０．３Ｖだけ増加している。ステップ３１０で、本デバイスは、さらなるＰサイクルにわたって動作するが、ここでＰの大きさは、あらかじめ周知であるかまたはリアルタイムで決定される。ステップ３１２で、プログラム電圧Ｖｐｇｍの初期パルスの大きさが減少する。図１１Ｄに示す１つの例では、制御ゲートに印加されるプログラム電圧Ｖｐｇｍの最初のパルスの大きさは１６．０Ｖまで減少している。連続するパルスはそれぞれ、その大きさが、直前のパルスと比較して０．３Ｖだけ増加している。ステップ３１４で、本デバイスは、この新しい初期パルスで操作される。初期プログラミングパルスの大きさを減少させるこのプロセスは、望むだけの数のパルスにわたって継続させることが可能である。
【００４８】
図１２は、図１１のプロセスに対応する、例示の性能測定基準を示す表である。１つの実施形態では、初期プログラミングパルスの大きさは、ステップ３００で１６．９ボルトに設定される。１Ｋ回のプログラミングサイクル（ステップ３０２）の後では、初期パルスの大きさは１６．６ボルトに減少される（ステップ３０４）。約３，０００サイクルにわたって動作したら、初期パルスは１６．３ボルトにまで低下され、プログラミング電圧はパルスごとに０．３ボルトだけ増加する。１０，０００サイクル動作したら、初期プログラムパルスの大きさは１６．０ボルトに設定される。この方式では、下位ページをプログラミングするためのパルスの数は１０であり、上位ページをプログラミングするためのパルスの数は１５であり、フルシーケンスをプログラミングするためのパルスの数は１９である。このプログラミングプロセス中での性能は、本デバイスの寿命全体にわたって一定である。フレッシュな部品のプログラミング性能は、オーバープログラミングが増加することなく向上した。
【００４９】
図１３〜２０は、図１１と関連する概念を実施するさまざまな実施形態のさらなる詳細を示す図である。プログラミングサイクルの数をカウントすることに加えて、図１２を参照して上に説明したように、他の実施例では、ソフトプログラミングを実行するために必要とされるソフトプログラムパルスの数をカウントする動作も含んでいる。ソフトプログラミングパルスの数が閾値に到達すると、初期プログラミングパルスの大きさが変更される。別の実施形態では、特定のプログラミングサイクル中にプログラミングの繰り返し（またはパルス）の数をカウントする。この繰り返し（またはパルス）の数が閾値を超えると、初期プログラミングパルスの大きさが変わる。さらに別の実施形態では、読み取りプロセス中に用いられるエラー訂正の量に基づいて初期の大きさを変更することを決定する。プログラミング特徴を調整するこれらの方式のどれでも、デバイス全体（たとえば、メモリアレイ全体）に対して、またはブロックごとに、またはメモリの別の部分集合に対して適用することが可能である。このプロセスは、コントローラ、状態マシン、これら双方の組み合わせまたは別の構造体によって実行可能である。
【００５０】
図１３は、プログラムサイクルの数をカウントして、これにしたがって初期プログラミングパルスの大きさを調整する、メモリセルのプログラミングをより詳細に説明するフローチャートである。図１３のプロセスは、データをプログラムする要求を受信するとこれに応答して実行することが可能である。ステップ４０２で、メモリのうちのプログラムすべき適切な部分を選択する。この動作には、書き込み先のブロックおよび／またはページおよび／またはセクターを選択する動作が含まれる。ステップ４０４で、サイクルカウント値を増加する。このサイクルカウント値は、プログラミングサイクルの数のカウント値である。サイクルカウント値は、フラッシュメモリアレイ、状態マシン、コントローラまたは別のロケーションに記憶することが可能である。１つの実施形態では、カウント値は、状態マシンと結合したレジスタに記憶される。ステップ４０６で、メモリの選択部分が事前プログラムされるが、この動作はフラッシュメモリがたとえ消耗してもよいようにする備えである。この選ばれたセクターまたはページ内のすべてのメモリセルが、同じ閾値電圧範囲にプログラムされる。ステップ４０６はオプションである。ステップ４０８で、プログラムされる予定のメモリセルをすべて消去する。たとえば、ステップ４０８は、古いメモリセルを状態Ｅにシフトさせる動作を含むことがある（図７〜９を参照）。ステップ４１０で、本システムは、ソフトプログラミングプロセスを実行する。上記の消去プロセスで、メモリセルのうちの一部のセルの閾値電圧を分布Ｅより下の値に下げることが可能である（図７〜９を参照）。このソフトプログラミングプロセスでは、図１に類似したプログラム電圧パルスをメモリセルに印加し、これで、その閾値電圧が閾値電圧分布Ｅ以内に入るまで増加させるようにする。ステップ４１２で、初期プログラムパルスの大きさを示すフラグにアクセスする。たとえば、図１２の表を用いて、部品が１，０００サイクル実行した場合、初期パルスに対するプログラムパルスの大きさは１６．６ボルトとなる。この初期値を、電荷ポンプを適切にプログラミングすることによって、ステップ４１２で設定する。ステップ４１４で、プログラムカウント値ＰＣを初期値としてのゼロに設定する。ステップ４１６で、プログラムパルスを適切なワードラインに印加する。ステップ４１８で、このワードライン上のメモリセルを、その目標閾値電圧レベルに到達したかどうか検証する。これらメモリセルのすべてが目標閾値電圧レベルに到達した場合（ステップ４２０）、このプログラミングプロセスはステップ４２２で成功裏に（ステータス＝パス）完了したことになる。これらメモリセルのすべてが目標閾値電圧レベルに到達したわけではない場合、ステップ４２４で、プログラムカウント値ＰＣが２０未満であるかどうか判定される。プログラムカウント値ＰＣが２０以上であれば、プログラミングプロセスは失敗したことになる（ステップ４２６）。プログラムカウント値ＰＣが２０未満であれば、ステップ４２８で、プログラム電圧信号Ｖｐｇｍの大きさを次のパルスのためにステップサイズ（たとえば０．３Ｖ）だけ増加して、プログラムカウント値ＰＣを増加する。ここで、自身の目標閾値電圧に到達したメモリセルは、現在のプログラミングサイクルの残りの時間でのプログラミングの対象から外される。ステップ４２８の後、図１３のプロセスはステップ４１６に進んで、次のプログラムパルスが印加される。
【００５１】
図１４は、図１３のステップ４０４の一部として実行される、サイクルカウント値を増加してフラグを調整するプロセスを説明するフローチャートである。ステップ４６０で、サイクルカウント値（ＣＯと記されている）を増加する。このサイクルカウント値は、この特定のデバイス、ブロックなどに対して実行されたプログラムサイクルの数を表している。ステップ４６２では、サイクルカウント値が第１の閾値未満であるかどうか判定される。第１の閾値の一例は１，０００である。サイクルカウント値が第１の閾値未満であれば、ステップ４６４でフラグが変更されることはない。フラグは、初期プログラムパルスに対してどの大きさを採用するかの指示を記憶する１つ以上のビットの集合である。１つの実施形態では、フラグはフラッシュメモリアレイに記憶することが可能である。別の実施形態では、フラグは、状態マシンまたはコントローラと結合したレジスタに記憶することが可能である。開始パルスの取りえる大きさが４つある実施形態では、フラグは４つの値を記憶することが可能である必要があり、したがって、フラグは２ビットフラグであればよい。設計を容易にするために、フラグを１バイトのフラグとすることが望ましい。サイクルカウント値が第１の閾値以上であるとステップ４６２で判定された場合、サイクルカウント値が第２の閾値未満であるかどうかステップ４６６で判定される。第２の閾値の例は３，０００である。サイクルカウント値が第２の閾値未満であれば、初期プログラムパルスの大きさを、少しだけシフトされたフレッシュデバイスと関連した大きさであると特定する指示でフラグが上書きされる。たとえば、デバイスが第１の閾値をパスした場合、ステップ４６８で、初期Ｖｐｇｍ（たとえば１６．９ボルト）を小さいシフト値（０．３ボルト）だけ減少させて１６．６ボルトとする。サイクルカウント値ＣＯが第２の閾値以上であるとステップ４６６で判定された場合、サイクルカウント値が第３の閾値未満であるかどうかステップ４７０で判定される。サイクルカウント値が第３の閾値未満であれば、このカウント値は第２の閾値と第３の閾値の中間にあり、したがって、フレッシュデバイスと関連する初期プログラムパルスの大きさから中程度だけシフトした値を特定する指示でフラグを上書きする。たとえば、この初期プログラム電圧は２ステップ（たとえば０．６ボルト）だけシフトダウンされる。サイクルカウント値が第３の閾値以上であれば、フレッシュデバイスの初期プログラム電圧は、３ステップ（たとえば０．９ボルト）を含むことがある大幅なステップ値だけシフトダウンされる。したがって、ステップ４７４では、フラグは、図１２の例では初期プログラムパルスの大きさは１６．０ボルトになるはずであることを示している。フラグの値が変化しなければ、このフラグを上書きする必要がないような実施形態もある。図１４で書き込まれたフラグは、図１３のステップ４１２でチェックされたフラグである。
【００５２】
図１５は、図１３のステップ４１２の一部として実行される、プログラミング信号Ｖｐｇｍの初期パルスの大きさを設定するプロセスを説明するフローチャートである。ステップ５００では、図１４のプロセスで書き込みされたフラグを読み取る。フラグが大きいシフト値を示していれば（ステップ５０２）、プログラミング信号Ｖｐｇｍの初期パルスの大きさは大きいシフト値だけ低い初期値の大きさに設定される。図１２の例を用いれば、フレッシュデバイスと関連する初期のプログラミング電圧Ｖｐｇｍ０は１６．９ボルトであり、大きいシフト値は０．９ボルトであり、したがって、ステップ５０４で、初期パルスの大きさは１６．０ボルトにシフトされる。フラグが大きいシフト値を示していなければ（ステップ５０２）、フラグが中程度シフト値を示しているかどうか判定する（ステップ５０６）。そうであれば、最初のパルスの大きさは、中程度シフト値（たとえば０．６Ｖ）だけ低いＶｐｇｍ０（たとえば１６．９Ｖ）に設定される。図１２の例では、ステップ５０８で、初期パルスの大きさは１６．３ボルトに設定される。フラグが中程度サイズ値を示していない場合、フラグが小さいシフト値を示しているかどうか判定される（ステップ５１０）。フラグが小さいシフト値を示していれば、最初のパルスの大きさは、ステップ５１２で、小さいシフト値（たとえば０．３Ｖ）だけ低いＶｐｇｍ０に設定される。フラグが小さいシフト値を示していなければ、最初のパルスの大きさは、Ｖｐｇｍ０（たとえば１６．９Ｖ）のままである。
【００５３】
図１６は、ソフトプログラミングプロセス中での性能に基づいて初期プログラミングパルスの大きさを判定する実施形態のプログラミングプロセスを説明するフローチャートである。図１６のステップ５３２、５３４、５３６は、図１３のステップ４０２、４０６、４０８とそれぞれ類似している。図１６のステップ５４０は、図１３のステップ４１２と類似している。図１６のステップ５４２、５４４、５４６、５４８、５５０、５５２、５５４、５５６は、図１３のステップ４１４、４１６、４１８、４２０、４２２、４２４、４２６、４２８とそれぞれ類似している。
【００５４】
図１７は、図１６のステップ５３８の一部として実行される、ソフトプログラミングとフラグの適切な調整とのプロセスを説明するフローチャートである。図１７のプロセスは、図１の信号に類似した増加するパルスの集合を用いている。これはソフトプログラミング中に用いられるため、信号はＶｓｐｇｍと呼ばれ、これらパルスはソフトプログラミングパルスと呼ばれる。図１７のステップ５６０で、初期パルスの大きさが設定される。１つの実施形態では、ソフトプログラミング中、初期パルスの大きさは約１４ボルトである。他の値を用いることも可能である。くわえて、ループカウント値ＬＣがゼロに設定される。ステップ５６２で、ソフトプログラムパルスが、選択されたメモリセルのワードラインに印加される。ステップ５６４で、検証プロセスを実行して、メモリセルの閾値電圧が分布Ｅ内にあるかどうかチェックする（図７〜９を参照）。すべてのメモリセルの閾値電圧が分布Ｅ中にあるわけではないことが検証された場合、ソフトプログラム電圧信号Ｖｓｐｇｍを次のパルスにまで増加して、ループカウント値ＬＣを１だけ増す。ステップ５６８の後、５６２に戻る。ステップ５６２、５６４、５６６、５６８のループは、すべてのメモリセルが検証されるまで、または、エラーが発生したと結論されて処理がストップするまでは継続される。たとえば、繰り返しの回数を２０以下に制限する。繰り返し回数が２０を超えた場合、閾値電圧がいまだ閾値分布Ｅより下方にあるメモリセルが損傷を負ったものと結論付けて、これらのメモリセルを通常の動作での使用対象から除外する。
【００５５】
ひとたびすべてのメモリセルが検証されたら（ステップ５６６）、ステップ５７０に進んで、ループカウント値ＬＣが１５未満であるかどうか判定する。１５未満でなければ、Ｖｐｇｍ０からシフトすべきではないという指示をフラグに書き込む。これはフレッシュデバイスの場合に相当する。ループカウント値が１５未満であれば、ステップ５７４で、ループカウント値が１３未満であるかどうか判定される。ループカウント値が１３以上であれば（たとえば、ＬＣ＝１３または１４）、Ｖｐｇｍ０から小さいシフト値を示す内容がフラグに書き込まれる。ループカウント値ＬＣが１３未満であれば、ステップ５７８で、ループカウント値が１１未満であるかどうかテストされる。ループカウント値が１１以上であれば、ステップ５８０で、Ｖｐｇｍ０からの中程度のシフト値を用いるべきであるという指示をフラグに書き込む。ループカウント値ＬＣが１１未満であれば、初期プログラミングパルスの大きさに対してＶｐｇｍ０からの大きいシフト値を用いるべきであることを示す内容がフラグに記憶される。
【００５６】
図１８は、フラグビットに書き込むプロセスの１つの実施形態を説明するするフローチャートである。この実施形態は、フラグによって初期プログラミングパルスの大きさが増してしまうことを防止する。すなわち、いったん中程度のシフトが用いられると、フラグは、小さいシフトが用いられることを許容しないことになる。このようにして、プログラム信号の初期の大きさは不変のままであるか、または減少するが、決して増加しない。他の動作を用いることが可能な実施形態もある。図１８のステップ６００で、Ｖｐｇｍ０からの特定のシフトを示すようにフラグに書き込みをする必要があるかどうか判定する。１つの実施形態では、ステップ６００には、図１４または図１７のプロセスを実行する動作が含まれる。ステップ６０２で、この分量だけまたはこれ以上の分量だけシフトすることを、フラグがすでに示しているかどうか判定する。その場合、フラグはステップ６０４では書き込みされない。そうでない場合、Ｖｐｇｍ０からの新たなシフトを示すようにフラグに書き込みをする。
【００５７】
図１９は、将来のプログラミングサイクルで初期のプログラミングパルスの大きさをどのようにして設定するかを決定するために、プログラミングサイクルごとの繰り返し数をカウントする不揮発性メモリをプログラミングするプロセスの１つの実施形態を説明するフローチャートである。図１９のステップ６５０、６５２、６５４、６５６、６５８、６６０、６６２、６６４、６６６、６６８、６７０、６７２は、それぞれ、図１３の４０２、４０６、４０８、４１０、４１２、４１４、４１６、４１８、４２０、４２４、４２６、４２８と同じである。相異が１つあるが、それは、ステップ６６４の検証の後、すべてのメモリセルが検証されたら（ステップ６６６）、ステップ６８０で、プログラムカウント値ＰＣが９未満であるかどうか判定されることである。ステップ６６２、６６４、６６６、６６８、６７２はループを形成するが、このループは、すべてのプログラムセルがプログラムされるまで、または、プログラムカウント値が２０（別の数値が用いられる実施形態もある）に到達するまでは継続的に繰り返される。このループの繰り返し回数が９未満であれば、フラグをステップ６８４で増加する。この繰り返し回数が９以上であれば、このプログラミングプロセスはフラグを変更することなく完了する。フラグがステップ６８４で増加されるごとに、プログラミング信号の初期パルスの大きさを変更（たとえば減少）させる。次回に図１９のプロセスが実行される際に、ステップ６５８でフラグをチェックする。したがって、たとえば、初期プログラミング電圧パルスの大きさが１６．９ボルトである場合、プログラム電圧信号が用いられ続けるが、ここで、メモリをプログラムするために必要とされる繰り返し回数が９未満になるまで、初期パルスの大きさは１６．９ボルトである。いったん繰り返し回数が９未満になると、フラグを増加する。次回にプログラミングプロセスを実行する際に、ステップ６５８で、フラグが増加されていることを確認して、初期プログラムパルスの大きさの値を１６．９から下げて１６．６に変更する。これによって、繰り返し回数が再度上昇する。最終的には、図１９のプロセスの繰り返し回数は９未満となるが、その場合、フラグが増加され、初期パルスの大きさが、１６．３にまで減少される等となる。ここで、図１９で、ステップ６８０での９という値は他の値に変更することが可能である。
【００５８】
図２０は、直前の読み取り動作中に検出されたエラーの量に基づいて、初期プログラミングパルスの大きさを下げるべきであるかどうかを判定するようなプロセスの一実施形態を説明するフローチャートである。図２０のプロセスは、データ読み取り要求に応答して実行される。ステップ７００で、データページに対して通常の読み取り動作を実行する。この動作は、技術上周知であるさまざまな技法によって実行される。ステップ７０２で、読み取られたデータと一緒に記憶されているエラー訂正符号をチェックして、なんらかのエラーがあるかどうか判定する。エラーがなければ、このデータがステップ７０４で報告される。エラーがあれば、ステップ７０６で、このエラーが訂正可能であるかどうか判定される。このエラーが訂正可能でない場合、ステップ７０８で、エラーが報告される。エラーが訂正可能であれば、ステップ７１０でこのエラーを訂正して、ステップ７１２でこのデータを報告する。ステップ７１４で、エラー訂正の量が閾値を超えているかどうか判定する。閾値の一例として、セクター１つ当たり２ビット以上にエラーがあったかどうかという基準がある。他の閾値を用いることも可能である。エラーが閾値を超えていれば、ステップ７１８でフラグを増加する。エラーが閾値を超えていなければ、フラグは増加されない。デバイスがフレッシュである場合、フラグはゼロである。フラグを増加したら、次回にプログラミングプロセスを実行する際に、初期プログラミングパルスの大きさを変更する。たとえば、図１３のプロセスを（ステップ４０４なしで）、プログラミングするために用いることが可能である。ステップ４１２を実行する場合、フラグにアクセスして、最後にアクセスされて以来増加されていれば、最初のプログラムパルスの大きさは、直前に用いられた大きさより１ステップ低くなる。
【００５９】
プログラミングパラメータを変更する事例の多くで、初期プログラミングパルスの大きさが低下されるが、他のパラメータを変更することも可能である。くわえて、他のタスクを用いて、初期パルスの大きさをいつ低下されるべきか、または、別様にプログラミングパラメータを変更すべきであるかを判定するようにすることも可能である。
【００６０】
代替実施形態では、制御ゲート／ワードラインに印加されるプログラム信号の波形を、大きさが増加するパルスの集合とは異なったものとすることが可能である。
【００６１】
本発明に関する上述の詳細な説明は、例証と説明目的で提示したものである。本発明を、開示した形態そのもので尽きるとかこれに限るとかを意図するものではない。上記の教示に照らし合わせて、多くの修正例や変更例が可能である。説明した実施形態は、本発明とその実際の応用例の原理がもっともよく説明され、これによって、他の当業者が、想定される特定の用途に適しているさまざまな実施形態で、また、さまざまな修正をもって、本発明を利用することが可能となるように選ばれたものである。本発明の範囲は添付クレームによって定義されることを意図するものである。
【図面の簡単な説明】
【００６２】
【図１】図１は、フラッシュメモリデバイスの１つ以上の制御ゲートに印加することが可能なプログラム電圧信号の一例を示す図である。
【図２】図２は、ＮＡＮＤストリングの上面図である。
【図３】図３は、ＮＡＮＤストリングの等価回路図である。
【図４】図４は、ＮＡＮＤストリングの断面図である。
【図５】図５は、不揮発性メモリシステムのブロック図である。
【図６】図６は、不揮発性メモリアレイのブロック図である。
【図７】図７は、閾値電圧分布の例示の集合を示す図。
【図８】図８は、閾値電圧分布の例示の集合を示す図である。
【図９】図９Ａ〜９Ｃは、さまざまな閾値電圧分布を示し、不揮発性メモリをプログラミングするプロセスを説明する図である。
【図１０】図１０は、プログラミングの実行を説明するチャートである。
【図１１】図１１は、不揮発性記憶装置をプログラミングするプロセスの一実施形態を説明するフローチャートである。
【図１１Ａ】図１１Ａは、初期パルスを持つプログラム信号を示す図である。
【図１１Ｂ】図１１Ｂは、初期パルスを持つプログラム信号を示す図である。
【図１１Ｃ】図１１Ｃは、初期パルスを持つプログラム信号を示す図である。
【図１１Ｄ】図１１Ｄは、初期パルスを持つプログラム信号を示す図である。
【図１２】図１２は、プログラミングの実行を説明するチャートである。
【図１３】図１３は、不揮発性記憶装置をプログラミングするプロセスの１つの実施形態を説明するフローチャートである。
【図１４】図１４は、サイクルのカウント値を増加するプロセスの１つの実施形態を説明するフローチャートである。
【図１５】図１５は、プログラム信号Ｖｐｇｍの初期値を設定するプロセスの１つの実施形態を説明するフローチャートである。
【図１６】図１６は、不揮発性記憶装置をプログラミングするプロセスの１つの実施形態を説明するフローチャートである。
【図１７】図１７は、ソフトプログラミングプロセスを実行するプロセスの１つの実施形態を説明するフローチャートである。
【図１８】図１８は、データをフラグに書き込むプロセスの１つの実施形態を説明するフローチャートである。
【図１９】図１９は、不揮発性記憶装置をプログラミングするプロセスの１つの実施形態を説明するフローチャートである。
【図２０】図２０は、データを読み取るプロセスの１つの実施形態を説明するフローチャートである。
【図１】
2008542968.tif 000003
【図２】
2008542968.tif 000004
【図３】
2008542968.tif 000005
【図４】
2008542968.tif 000006
【図５】
2008542968.tif 000007
【図６】
2008542968.tif 000008
【図７】
2008542968.tif 000009
【図８】
2008542968.tif 000010
【図９】
2008542968.tif 000011
【図１０】
2008542968.tif 000012
【図１１】
2008542968.tif 000013
【図１１Ａ】
2008542968.tif 000014
【図１１Ｂ】
2008542968.tif 000015
【図１１Ｃ】
2008542968.tif 000016
【図１１Ｄ】
2008542968.tif 000017
【図１２】
2008542968.tif 000018
【図１３】
2008542968.tif 000019
【図１４】
2008542968.tif 000020
【図１５】
2008542968.tif 000021
【図１６】
2008542968.tif 000022
【図１７】
2008542968.tif 000023
【図１８】
2008542968.tif 000024
【図１９】
2008542968.tif 000025
【図２０】
2008542968.tif 000026
【手続補正書】
【提出日】平成20年2月7日(2008.2.7)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
不揮発性記憶を操作する方法であって、
１つ以上のプログラミングパラメータの第１の集合を用いて、第１の期間中に不揮発性記憶素子の集合をプログラミングする工程と、
１つ以上のプログラミングパラメータの第２の集合を用いて、第２の期間中に不揮発性記憶素子の前記集合をプログラミングする工程と、を備えている方法。
【請求項２】
前記第１の期間が第１の時間期間であり、
前記第２の期間が、前記第１の時間期間の後である第２の時間期間である請求項１に記載の方法。
【請求項３】
前記第１の時間期間が、あまり使用されていないデバイスと関連しており、
前記第２の時間期間が、使用量閾値後の前記デバイスと関連する請求項１に記載の方法。
【請求項４】
不揮発性記憶を操作する方法であって、
第１の初期値を持つ増加するプログラム信号を用いて、第１の期間中に不揮発性記憶素子の集合をプログラミングする工程と、
第２の初期値を持つ増加するプログラム信号を用いて、第２の期間中に前記不揮発性記憶素子の集合をプログラミングする工程と、を備えており、
前記第２の期間が前記第１の期間の後であり、前記第２の初期値が前記第１の初期値とは異なる方法。
【請求項５】
前記第１の初期値が第１の電圧であり、
前記第２の初期値が、前記第１の電圧より低い第２の電圧であり、
前記プログラム信号が、大きさが増加する一連の電圧パルスである請求項４に記載の方法。
【請求項６】
第３の初期値を持つ増加するプログラム信号を用いて、第３の期間中に前記不揮発性記憶素子の集合をプログラミングする工程をさらに備えており、
前記第３の期間が前記第２の期間の後であり、前記第３の初期値が前記第２の初期値とは異なる請求項４に記載の方法。
【請求項７】
前記第１の期間がプログラミングサイクルの数に関連する請求項４に記載の方法。
【請求項８】
前記不揮発性記憶素子の集合が、不揮発性記憶素子のブロックである請求項４に記載の方法。
【請求項９】
前記不揮発性記憶素子の集合が、不揮発性記憶素子のアレイ全体である請求項４に記載の方法。
【請求項１０】
前記不揮発性記憶素子の集合が所定回数のプログラミングサイクルを受けたかどうかをテストする工程と、
前記不揮発性記憶素子の集合が前記所定回数のプログラミングサイクルを受けたかどうかの指示を記憶する工程と、
データをプログラムする要求を受信する工程と、
前記要求に応答して前記指示を読み取る工程と、
前記不揮発性記憶素子の集合が前記所定回数のプログラミングサイクルを受けていないことを前記指示が示している場合に、前記第１の初期値を持つ前記増加するプログラム信号を用いて前記第１の期間中に前記不揮発性記憶素子の集合のプログラミングを実行する工程と、
前記不揮発性記憶素子の集合が前記所定回数のプログラミングサイクルを受けたことを前記指示が示している場合に、前記第２の初期値を持つ前記増加するプログラム信号を用いて前記第２の期間中に前記不揮発性記憶素子の集合のプログラミングを実行する工程と、をさらに備えている請求項４に記載の方法。
【請求項１１】
データをプログラムする要求を受信する工程と、
前記要求に応答して前記不揮発性記憶素子の集合を消去する工程と、
前記消去に続いて前記不揮発性記憶素子の集合をソフトプログラミングする工程と、
用いられるソフトプログラミングの量に基づいて指示を設定する工程と、をさらに備えており、
前記指示がソフトプログラミングの第１の量を示していれば、前記第１の期間中に前記不揮発性記憶素子の集合をプログラミングする工程が、前記第１の初期値を持つ前記増加するプログラム信号を用いて実行され、前記指示がソフトプログラミングの第２の量を示していれば、前記第２の期間中に前記不揮発性記憶素子の集合をプログラミングする工程が、前記第２の初期値を持つ前記増加するプログラム信号を用いて実行される請求項４に記載の方法。
【請求項１２】
前記第１の期間中に前記不揮発性記憶素子の集合をプログラミングする工程は、
前記プログラミングが完了するまで、前記不揮発性記憶素子の集合の少なくとも部分集合にプログラムパルスを印加する工程と、
前記プログラムパルスが閾値に到達したかどうか判定する工程と、を有し、
前記プログラムパルスが前記閾値に到達していれば、前記第１の期間が終了し、前記第２の期間が開始される請求項４に記載の方法。
【請求項１３】
前記閾値は所定の数のプログラムパルスである請求項１２に記載の方法。
【請求項１４】
前記不揮発性記憶素子の集合からデータを読み取る工程と、
前記データにエラーが存在するかどうか判定する工程と、
前記エラーが閾値レベルを満足するかどうか判定する工程と、をさらに備えており、
前記エラーが前記閾値レベルを満足していれば、前記第１の期間が終了し、前記第２の期間が開始される請求項４に記載の方法。
【請求項１５】
２つ以上のビットにエラーがあれば、前記エラーは前記閾値を満足する請求項１４に記載の方法。
【請求項１６】
不揮発性記憶システムであって、
不揮発性記憶素子と、
前記不揮発性記憶素子と通信している１つ以上の管理回路と、を備えており、
前記１つ以上の管理回路は、データをプログラムする要求を受信しており、
前記１つ以上の管理回路は、前記不揮発性記憶素子の使用量の指示が第１の使用量を示している場合には、第１の開始値を有するプログラミング信号を用いて前記要求に応答して前記不揮発性記憶素子をプログラムし、前記使用量の指示が第２の使用量を示している場合には、第２の開始値を有するプログラミング信号を用いて前記不揮発性記憶素子をプログラムする不揮発性記憶システム。
【請求項１７】
前記１つ以上の管理回路が、前記要求に応答して前記使用量の指示を読み取り、
前記１つ以上の管理回路が、前記不揮発性記憶システムの所定の動作に応答して前記使用量の指示を更新する請求項１６に記載の不揮発性記憶システム。
【請求項１８】
前記使用量の指示がプログラミングサイクルの数に対応する請求項１７に記載の不揮発性記憶システム。
【請求項１９】
前記１つ以上の管理回路が、前記不揮発性記憶素子を消去するとともに、前記消去に続いて前記不揮発性記憶素子をソフトプログラムしており、
前記ソフトプログラミングがある閾値の繰り返し回数を必要とする場合に、前記１つ以上の管理回路が、前記使用量の指示を、前記第１の使用量の指示から前記第２の使用量の指示に変更する請求項１６に記載の不揮発性記憶システム。
【請求項２０】
前記特定のプログラミングサイクルがある閾値の繰り返し回数を必要とする場合に、前記１つ以上の管理回路が、前記使用量の指示を、前記第１の使用量の指示から前記第２の使用量の指示に変更する請求項１６に記載の不揮発性記憶システム。
【請求項２１】
前記１つ以上の管理回路が、前記不揮発性記憶素子からデータを読み出して、前記データになんらかのエラーがあるかどか判定しており、
前記データが所定量を超えるエラーを含んでいる場合に、前記１つ以上の管理回路が、前記使用量の指示を、前記第１の使用量の指示から前記第２の使用量の指示に変更する請求項１６に記載の不揮発性記憶システム。
【請求項２２】
前記使用量の指示が第３の使用量を示している場合に、前記１つ以上の管理回路が、第３の開始値を有するプログラミング信号を用いて前記不揮発性記憶素子をプログラムする請求項１６に記載の不揮発性記憶システム。
【請求項２３】
前記１つ以上の不揮発性記憶素子が、不揮発性記憶素子のブロックである請求項１６に記載の不揮発性記憶システム。
【請求項２４】
前記１つ以上の不揮発性記憶素子が、複数のブロックを含むフラッシュメモリデバイスのアレイである請求項１６に記載の不揮発性記憶システム。
【請求項２５】
前記１つ以上の不揮発性記憶素子が、フラッシュメモリデバイスである請求項１６に記載の不揮発性記憶システム。
【請求項２６】
前記１つ以上の管理回路が、状態マシン、デコーダ、感知回路およびコントローラのうちの１つ以上を有しており、
前記不揮発性記憶素子がフラッシュメモリデバイスのアレイの一部であり、フラッシュメモリデバイスの前記アレイがワードラインとビットラインを有している請求項１６に記載の不揮発性記憶システム。
【国際調査報告】
2008542968.tif 000027
2008542968.tif 000028