(57)【要約】  非揮発性半導体メモリシステム（又は他のタイプのメモリシステム）において、メモリセルは、その閾電圧を変更することによってプログラミングされる。システム内の様々なメモリセルに対するプログラミングのタイミングが異なることが原因で、いくつかのメモリセルは、オーバー・プログラミングされてしまう可能性がある。即ち、例えば、セルの閾電圧が、目的とされた値、又は、目的とされた範囲から外れてしまう可能性がある。本発明は、メモリセルがオーバー・プログラミングされたか否かを判断することを含んでいる。
2007500411.tif 000002
【特許請求の範囲】
【請求項１】
複数の論理ページを利用するメモリシステム内でのオーバー・プログラミングを検知する方法であり、
所定の論理ページのためのデータを第１マルチ状態記憶素子にプログラミングする工程と、
第１マルチ状態記憶素子にプログラミングする前記工程がそのマルチ状態記憶素子をオーバー・プログラミングしたか否かを判断するために、前記所定の論理ページと異なる論理ページからのデータを利用する工程を備える方法。
【請求項２】
前記所定の論理ページのためのデータを第１マルチ状態記憶素子にプログラミングする前に、前記所定の論理ページと異なる前記論理ページのためのデータを第１マルチ状態記憶素子にプログラミングする工程をさらに備えることを特徴とする請求項１の方法。
【請求項３】
前記データ利用工程は、
第１マルチ状態記憶素子の閾電圧が比較値より大きいか否かを判断する工程と、
第１マルチ状態記憶素子の閾電圧が前記比較値より大きく、かつ、前記所定の論理ページと異なる前記論理ページのためのデータが、第１マルチ状態記憶素子の閾電圧が前記比較値より大きくなるべきではないことを示す場合に、第１マルチ状態記憶素子がオーバー・プログラミングされたと判断する工程を含んでいることを特徴とする請求項２の方法。
【請求項４】
第１マルチ状態記憶素子は、状態０、状態１、状態２、及び状態３を示す少なくとも４つの状態の中で少なくとも２ビットのデータを記憶することが可能であり、
その２ビットのデータの第１ビットは、前記所定の論理ページに対応し、
その２ビットのデータの第２ビットは、前記所定の論理ページと異なる前記論理ページに対応し、
第１ビットは、状態２と状態３の中でプログラミングされ、
第２ビットは、状態１と状態２の中でプログラミングされ、
前記比較値は、状態２と状態３の間にあり、
第１マルチ状態記憶素子が状態２にあるように第２ビットがプログラミングされた場合に、前記所定の論理ページと異なる前記論理ページのためのデータが、第１マルチ状態記憶素子の閾電圧が前記比較値より大きくなるべきではないことを示すことを特徴とする請求項３の方法。
【請求項５】
前記データ利用工程は、
第１マルチ状態記憶素子の閾電圧を判断するために検証操作を実行する工程と、
その閾電圧が第１比較点以上になるべきか否かを判断するために、前記所定の論理ページと異なる前記論理ページからのデータを利用する工程を含んでいることを特徴とする請求項１の方法。
【請求項６】
第１マルチ状態記憶素子は、複数の状態の中で複数のビットのデータを記憶することが可能であり、
複数のビットのデータの第１ビットは、前記所定の論理ページに対応し、
複数のビットのデータの第２ビットは、前記所定の論理ページと異なる前記論理ページに対応し、
前記データ利用工程は、前記所定の論理ページのためのデータを第１マルチ状態記憶素子にプログラミングする前記工程が、第１マルチ状態記憶素子を第１状態にプログラミングしようとしたけれども前記第１状態を超えてプログラミングしたか否かを判断することを含んでいることを特徴とする請求項１の方法。
【請求項７】
前記データ利用工程の後に、第１マルチ状態記憶素子が第２状態を超えてプログラミングされたか否かを判断する工程をさらに備えることを特徴とする請求項６の方法。
【請求項８】
前記所定の論理ページのためのデータを第１マルチ状態記憶素子にプログラミングする前に、前記所定の論理ページと異なる前記論理ページのためのデータを第１マルチ状態記憶素子にプログラミングする工程と、
前記所定の論理ページと異なる前記論理ページのためのデータを第１マルチ状態記憶素子にプログラミングする前記工程に応じて、第１マルチ状態記憶素子が第３状態を超えてプログラミングされたか否かを判断する工程をさらに備え、
前記所定の論理ページは、上側ページであり、
前記所定の論理ページと異なる前記論理ページは、下側ページであり、
前記第３状態は、前記第２ビットをプログラミングすることに関連しており、
前記データ利用工程と第１マルチ状態記憶素子が第２状態を超えてプログラミングされたか否かを判断する前記工程は、前記所定の論理ページのためのデータを第１マルチ状態記憶素子にプログラミングする前記工程に応じて実行されることを特徴とする請求項７の方法。
【請求項９】
第１マルチ状態記憶素子をプログラミングした後であって前記データ利用工程の前に、第２マルチ状態記憶素子をプログラミングする工程をさらに備え、
第１マルチ状態記憶素子は、第１ワード線に接続されており、
第２マルチ状態記憶素子は、第２ワード線に接続されていることを特徴とする請求項１の方法。
【請求項１０】
第１マルチ状態記憶素子は、グレイコードに基づいて設定された複数の状態を利用することによってデータを記憶することを特徴とする請求項１の方法。
【請求項１１】
前記プログラミング工程と前記データ利用工程は、状態機械によって実行されることを特徴とする請求項１の方法。
【請求項１２】
第１マルチ状態記憶素子は、記憶素子のアレイの一部であり、
記憶素子のアレイは、集積回路チップ上に配置されており、
前記プログラミング工程と前記データ利用工程は、状態機械によって実行され、
状態機械は、前記集積回路チップ上に配置されていることを特徴とする請求項１の方法。
【請求項１３】
第１マルチ状態記憶素子は、記憶素子のアレイの一部であり、
記憶素子のアレイは、集積回路チップ上に配置されており、
メモリシステムは、制御装置を含んでおり、
制御装置は、前記集積回路チップ上に配置されておらず、
前記プログラミング工程と前記データ利用工程は、状態機械によって実行され、
状態機械は、前記集積回路チップ上に配置されていることを特徴とする請求項１の方法。
【請求項１４】
第１マルチ状態記憶素子は、記憶素子のアレイの一部であり、
記憶素子のアレイは、集積回路チップ上に配置されており、
前記プログラミング工程と前記データ利用工程は、前記集積回路チップ上の回路によって実行されることを特徴とする請求項１の方法。
【請求項１５】
第１マルチ状態記憶素子は、記憶素子のアレイの一部であり、
前記プログラミング工程は、記憶素子のアレイと通信するホストシステムからの命令に応じて実行され、
記憶素子のアレイは、ホストシステムから着脱可能であることを特徴とする請求項１の方法。
【請求項１６】
第１マルチ状態記憶素子は、フラッシュメモリ素子であることを特徴とする請求項１の方法。
【請求項１７】
第１マルチ状態記憶素子は、ＮＡＮＤフラッシュメモリ素子であることを特徴とする請求項１の方法。
【請求項１８】
複数の論理ページを利用するメモリシステム内でのオーバー・プログラミングを検知する方法であり、
第１マルチ状態記憶素子の閾電圧が比較値より大きいか否かを判断する工程と、
第１マルチ状態記憶素子がオーバー・プログラミングされたか否かを判断する工程を備え、
第１マルチ状態記憶素子は、少なくとも第１論理ページと第２論理ページのための情報を記憶し、
第１マルチ状態記憶素子の閾電圧が比較値より大きいか否かを判断する前記工程は、第２論理ページにデータを書き込んだ後に実行され、
第１マルチ状態記憶素子がオーバー・プログラミングされたか否かを判断する前記工程は、第１論理ページからのデータと第１マルチ状態記憶素子の閾電圧が比較値より大きいか否かを判断する前記工程とに基づいて実行されることを特徴とする方法。
【請求項１９】
第１マルチ状態記憶素子は、複数の状態を利用してデータを記憶し、
複数の状態の中の少なくとも第１状態と第２状態は、第２論理ページのためのデータをプログラミングすることに関連し、
第１論理ページからの前記データは、第１マルチ状態記憶素子に記憶されており、
第１論理ページからの前記データは、第１マルチ状態記憶素子が第１状態と第２状態のどちらにあるべきなのかを示し、
第１マルチ状態記憶素子が第１状態にあるべきなのに第１状態を超えてプログラミングされている場合に、第１マルチ状態記憶素子がオーバー・プログラミングされていることを特徴とする請求項１８の方法。
【請求項２０】
第１マルチ状態記憶素子は、記憶素子のアレイの一部であり、
記憶素子のアレイは、集積回路チップ上に配置されており、
第１マルチ状態記憶素子の閾電圧が比較値より大きいか否かを判断する前記工程と、第１マルチ状態記憶素子がオーバー・プログラミングされたか否かを判断する前記工程は、前記集積回路チップ上に配置されている１つ又は複数の回路によって実行されることを特徴とする請求項１８の方法。
【請求項２１】
第１マルチ状態記憶素子は、ＮＡＮＤフラッシュメモリ素子であることを特徴とする請求項１８の方法。
【請求項２２】
記憶素子のアレイと、記憶素子のアレイと通信する管理回路を備えるメモリシステムであり、
管理回路は、所定の論理ページのためのデータを第１マルチ状態記憶素子にプログラミングすることを含むプログラミング操作を実行し、
管理回路は、前記所定の論理ページと異なる論理ページからのデータを利用することを含むオーバー・プログラミングの検知を実行し、第１マルチ状態記憶素子に対する前記所定の論理ページのためのデータのプログラミングが第１マルチ状態記憶素子をオーバー・プログラミングしたか否かを判断することを特徴とするメモリシステム。
【請求項２３】
管理回路は、状態機械を含むことを特徴とする請求項２２のメモリシステム。
【請求項２４】
制御装置をさらに備え、
状態機械と記憶素子のアレイは、第１集積回路チップ上に配置されており、
制御装置は、第１集積回路チップ上に配置されていないことを特徴とする請求項２３のメモリシステム。
【請求項２５】
状態機械は、前記の「オーバー・プログラミングの検知」を実行することを特徴とする請求項２４のメモリシステム。
【請求項２６】
管理回路は、前記所定の論理ページのためのデータを第１マルチ状態記憶素子にプログラミングする前に、前記所定の論理ページと異なる前記論理ページのためのデータを第１マルチ状態記憶素子にプログラミングすることを特徴とする請求項２３のメモリシステム。
【請求項２７】
管理回路は、
第１マルチ状態記憶素子の閾電圧が比較値より大きいか否かを判断すること、及び、
第１マルチ状態記憶素子の閾電圧が前記比較値より大きく、かつ、前記所定の論理ページと異なる前記論理ページのデータが、第１マルチ状態記憶素子の閾電圧が前記比較値より大きくなるべきではないことを示す場合に、第１マルチ状態記憶素子がオーバー・プログラミングされたと判断すること
によって前記の「オーバー・プログラミングの検知」を実行することを特徴とする請求項２６のメモリシステム。
【請求項２８】
複数の論理ページを利用するメモリシステムであり、
所定の論理ページのためのデータを第１マルチ状態記憶素子にプログラミングする手段と、
第１マルチ状態記憶素子がオーバー・プログラミングされたか否かを判断するために、前記所定の論理ページと異なる論理ページからのデータを利用する手段を備えるメモリシステム。
【請求項２９】
第１マルチ状態記憶素子をプログラミングした後であって前記データを利用する前に、第２マルチ状態記憶素子をプログラミングする手段をさらに備え、
第１マルチ状態記憶素子は、制御線に接続されており、
第２マルチ状態記憶素子は、制御線に接続されていることを特徴とする請求項２８のメモリシステム。
【請求項３０】
第１マルチ状態記憶素子は、ＮＡＮＤフラッシュメモリ素子であることを特徴とする請求項２９のメモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、Jian Chen、Yan Li、及びJeffrey W. Lutzeによって本出願と同日に出願された「DETECTING OVER PROGRAMMED MEMORY AFTER FURTHER PROGRAMMING」と題する特許出願に関連する。この内容は、本明細書に組み込まれる。
本発明は、一般的にメモリデバイスのために技術に関し、特に、メモリデバイスがオーバー・プログラミングされたか否かを検知する技術に関する。
【背景技術】
【０００２】
半導体メモリデバイスは、様々な電子装置に利用される。例えば、非揮発性半導体メモリは、携帯電話、デジタルカメラ、パーソナルデジタルアシスタント、モバイルコンピュータデバイス、非モバイルコンピュータデバイス等に利用されている。ＥＥＰＲＯＭとフラッシュメモリは、最もポピュラーな非揮発性半導体メモリである。
【０００３】
典型的なＥＥＰＲＯＭとフラッシュメモリは、浮遊ゲートを有するメモリセルを利用する。浮遊ゲートは、半導体基板のチャネル領域から絶縁された状態でそのチャネル領域上に配置されている。浮遊ゲートは、ソース領域とドレイン領域の間に配置されている。制御ゲートは、浮遊ゲートから絶縁された状態でその浮遊ゲート上に配置されている。メモリの閾電圧は、浮遊ゲートに帯電している電荷量によってコントロールされる。即ち、メモリセルをターンオンしてソースとドレインの間を導通する前に制御ゲートに印加されるべき最小限の電圧量は、浮遊ゲートの電荷レベルによってコントロールされる。
【０００４】
ＥＥＰＲＯＭとフラッシュメモリデバイスの中には、２つの電荷範囲を保存するために使用される浮遊ゲートを備えるものがある。この場合、メモリセルは、２つの状態の間でプログラム又は消去されることが可能である。ＥＥＰＲＯＭ又はフラッシュメモリデバイスをプログラミングする際に、制御ゲートにプログラミング電圧が印加され、ビット線が接地される。Ｐウェルからの電子は、浮遊ゲートに注入される。浮遊ゲートに電子が溜まると、浮遊ゲートは負に帯電し、メモリセルの閾電圧が上がる。
【０００５】
一般的に、制御ゲートに印加されるプログラミング電圧は、連続パルスとして印加される。各パルスの大きさは、所定のステップサイズずつ増加する。パルスとパルスの間の期間に検証操作が行われる。即ち、並列にプログラミングされている各セルのプログラミングレベルは各プログラミングパルスの間に読み取られ、その読み取ったレベルがプログラミングされるべき検証レベル以上であるか否かが判断される。プログラミングを検証する１つの手法では、特定の比較点で導通性をテストする。
【０００６】
上記の「導通」は、デバイスのチャネルの電流の流れに対応し、デバイスのＯＮ状態を意味する。ＯＦＦ状態は、ソースとドレインの間のチャネルに電流が流れていないことを意味する。一般的に、フラッシュメモリセルは、制御ゲートに印加された電圧が閾電圧より大きければ導通し、制御ゲートに印加された電圧が閾電圧より低ければ導通しない。セルの閾電圧を適当な値に設定することによって、特定の印加電圧に対して導通する（あるいは導通しない）セルをつくりだすことができる。特定の印加電圧でセルが電流を導通するか否かを判断することによって、セルの状態が特定される。
【０００７】
マルチビットあるいはマルチ状態フラッシュメモリセルは、デバイス内の複数の個別の閾電圧の範囲を指定することによってつくりだされる。指定された各個別閾電圧範囲は、データビット群の所定の値に相当する。メモリセルにプログラミングされるデータとセルの閾電圧レベルの関係は、セルに対して採用されるデータコード化スキームに依存する。例えば、米国特許第６２２２７６２号と、２００３年６月１３日に出願された米国特許出願第１０／４６１２４４号（Tracking Cells For A Memory System）は、様々なデータコード化スキームを開示している。これらの内容は、本明細書に組み込まれる。
データを適切に保存するためには、マルチ状態メモリセルの複数の閾電圧レベル範囲の間隔を十分にあけて、メモリセルのレベルを明確な作法でプログラミング又は消去することが要求される。
【０００８】
多くの場合、複数のメモリセルを並列にプログラミングする必要がある。これは、例えば、社会的に望まれている「短時間でプログラミングできるメモリシステム」を実現するためである。しかしながら、複数のメモリセルが同時にプログラミングされると問題が生じる。メモリセルを備える半導体装置の構造及び操作の些細な違いによって、各メモリセルの特徴がかわるからである。通常、異なるセルに対するプログラミングタイミングに差が生じる。この結果、あるメモリセルが別のメモリセルよりも速くプログラミングされてしまい、いくつかのメモリセルが意図した状態とは異なる状態にプログラミングされてしまう可能性が生じる。複数のメモリセルが他より速くプログラミングされてしまうと、保存されるべきデータが意図された閾電圧範囲を超えてエラーが生じる。
【０００９】
通常、データがプログラミングされる場合、デバイスの検証処理では、メモリセルの閾電圧が最低レベルよりも高いことを保証する。しかしながら、デバイスは、閾電圧の上限を保証しない。いくつかのデバイスは、ソフトプログラミング処理（下記参照）が閾電圧を大きくし過ぎていないかをチェックする。しかしながら、これらのデバイスは、標準のプログラミング処理が閾電圧を大きくし過ぎてしないかはチェックしない。従って、閾電圧が所望の状態の範囲を超えるオーバー・プログラミングが、認識されないままに発生し得る。オーバー・プログラミングはメモリセルに誤ったデータを保存させてしまうことになるので、その後の読取操作でエラーが生じる。オーバー・プログラミングに関するさらなる情報は、米国特許第５３２１６９９号、同第５３８６４２２号、同第５４６９４４４号、同第６１３４１４０号、及び同第５６０２７８９号に記載されている。
【発明の開示】
【発明が解決しようとする課題】
【００１０】
多くのメモリシステムは、後に行われる読取操作中にエラー訂正コード（ＥＣＣ）を用いて、オーバー・プログラミングに対処する。デバイスからデータが読取られる時に、エラーが起こったか否かを確認するためにＥＣＣが使用される。エラーが些細であれば、ＥＣＣを用いてエラーを訂正することができる。しかしながら、オーバー・プログラミングに起因したエラーを訂正するためにＥＣＣを用いると、少なくとも３つの問題が生じる。
まず、ＥＣＣ処理が長い処理時間を必要とするため、メモリシステムの操作の速度が極端に下がる。
また、ＥＣＣを妥当な時間内で実行するためには、付加的な専用ハードウェアが要求される。このような専用ハードウェアをメモリシステムチップ内に配置するためには、多くの空間が必要になる。より小さなホストデバイスにフィットする小さなシステムを実現するために、メモリシステムのサイズを小さくすることが現在のトレンドである。従って、新しいメモリのデザインは、ＥＣＣのために使用されるスペースを減らす傾向がある。
また、複数のエラーがある場合、ＥＣＣではそれらのエラーの全てを訂正できない可能性がある。
従って、メモリセルのオーバー・プログラミングを検知するためのより優れた手法が必要とされている。
【課題を解決するための手段】
【００１１】
本発明は、概略的に言うと、メモリデバイスがオーバー・プログラミングされたか否かを検知するための技術に関する。１つ又は複数のメモリデバイスがオーバー・プログラミングされたと検知されると、システムは、データを訂正するための公知の手法の１つを用いて事態を改善することができる。例えば、システムは、同じメモリデバイス又は別のメモリデバイスにデータを再び書き込むことができる。オーバー・プログラミングの検知は、オーバー・プログラミングに起因したエラーがデータにないことを保証し、結果的にＥＣＣの必要性を軽減することができる。
【００１２】
本発明の１つの実施形態は、複数の論理ページを用いるメモリシステムにおけるオーバー・プログラミングを検知する方法を含んでいる。この方法は、特定の論理ページのためのデータを第１マルチ状態記憶素子にプログラミングすることと、異なる論理ページからのデータを利用して第１マルチ状態記憶素子がオーバー・プログラミングされたか否かを判断することを含んでいる。
１つの実施例では、システムは、第１マルチ状態記憶素子の閾電圧が比較値より大きいか否かを判断する。第１マルチ状態記憶素子の閾電圧が比較値より大きく、異なる論理ページのためのデータが、第１マルチ状態記憶素子の閾電圧がその比較値を超えるべきではないと示唆した場合に、システムは第１マルチ状態記憶素子がオーバー・プログラミングされたと結論づける。オーバー・プログラミングの検知は、両方の論理ページがプログラミングされた後に実行される。
【００１３】
本発明の他の実施形態は、第１制御線に関連する１つ又は複数のマルチ状態記憶素子にプログラミングを実行し、その後に、第２制御線に関連する１つ又は複数のマルチ状態記憶素子にプログラミングを実行することを含んでいる。第２制御線に関連する１つ又は複数のマルチ状態記憶素子にプログラミングを実行した後に、第１制御線に関連する１つ又は複数のマルチ状態記憶素子がオーバー・プログラミングされたか否かの判断が実行される。制御線は、ワード線、ビット線、又は他の種類の制御線でもよい。技術に応じて制御線の種類が決まる。
【００１４】
１つの実施形態では、１つ又は複数のオーバー・プログラミング範囲のエッジについて、第１制御線に関連するマルチ状態記憶素子に対して読取操作を実行することによって、オーバー・プログラミングの判断が行なわれる。第１制御線に関連するマルチ状態記憶素子の閾電圧がいずれかのオーバー・プログラミング範囲に含まれる場合に、第１制御線に関連するマルチ状態記憶素子がオーバー・プログラミングされたと判断される。
別の実施形態では、１つ又は複数の読取比較点について、第１制御線に関連するマルチ状態記憶素子に対して読取操作を実行することによって、オーバー・プログラミングの判断が行なわれる。これにより、第１制御線に関連するマルチ状態記憶素子の初期状態が判断される。第１制御線に関連するマルチ状態記憶素子と初期状態のためのエラー訂正コード処理が実行される。マルチ状態記憶素子のためのエラー訂正コード処理が失敗した場合に、そのマルチ状態記憶素子がオーバー・プログラミングされたと判断される。
【００１５】
さらに別の実施形態は、第１マルチ状態記憶素子と第２マルチ状態記憶素子をプログラミングすることを含んでいる。このシステムは、第２マルチ状態記憶素子をプログラミングした後に、第１マルチ状態記憶素子がオーバー・プログラミングされたか否かを判断する。
【００１６】
１つの実施形態のシステムは、記憶素子のアレイと管理回路を含む。管理回路は、専用ハードウェアを含んでいてもよい。また管理回路は、１つ又は複数の記憶装置（例えば非揮発性メモリ（例えばフラッシュメモリ、ＥＥＰＲＯＭ等））や他のメモリデバイスに保存されたソフトウェアによってプログラミングされるハードウェアを含んでよい。
１つの実施形態では、管理回路は、制御装置と状態機械を含む。別の実施形態では、管理回路は、状態機械のみを含み、制御装置を含まない。管理回路は、上記した工程を実行することができる。
１つの実施形態では、記憶素子がオーバー・プログラミングされたか否かを確認するための処理は、状態機械によって実行される。実施例では、状態機械は、記憶素子のアレイと同じ集積回路チップ上に配置される。
【００１７】
本発明の目的及び利点は、図面とともに下記の実施形態を参照することによって、より明確になるものと思われる。
【発明を実施するための最良の形態】
【００１８】
フラッシュメモリシステムの一例は、２つの選択ゲートの間に複数のトランジスタが直列に配列されたＮＡＮＤ構造を利用する。直列に配列されたトランジスタ群と選択ゲート群は、ＮＡＮＤストリングと呼ばれる。
図１は、１つのＮＡＮＤストリングの平面図を示す。図２は、ＮＡＮＤストリングの等価回路を示す。図１と図２のＮＡＮＤストリングは、第１選択ゲート１２０と、第２選択ゲート１２２と、それらの間で直列に配列された４つのトランジスタ１００，１０２，１０４，１０６を含む。
選択ゲート１２０は、ＮＡＮＤストリングをビット線１２６に接続する。選択ゲート１２２は、ＮＡＮＤストリングをソース線１２８に接続する。選択ゲート１２０は、制御ゲート１２０ＣＧに適当な電圧を印加することによって制御される。選択ゲート１２２は、制御ゲート１２２ＣＧに適当な電圧を印加することによって制御される。
各トランジスタ１００，１０２，１０４，１０６は、制御ゲートと浮遊ゲートを有する。トランジスタ１００は、制御ゲート１００ＣＧと浮遊ゲート１００ＦＧを有する。トランジスタ１０２は、制御ゲート１０２ＣＧと浮遊ゲート１０２ＦＧを有する。トランジスタ１０４は、制御ゲート１０４ＣＧと浮遊ゲート１０４ＦＧを有する。トランジスタ１０６は、制御ゲート１０６ＣＧと浮遊ゲート１０６ＦＧを有する。
制御ゲート１００ＣＧはワード線ＷＬ３に接続されており、制御ゲート１０２ＣＧはワード線ＷＬ２に接続されており、制御ゲート１０４ＣＧはワード線ＷＬ１に接続されており、制御ゲート１０６ＣＧはワード線ＷＬ０に接続されている。
【００１９】
図３は、上記のＮＡＮＤストリングの断面図を示す。図３に示すように、ＮＡＮＤストリングの各トランジスタ（セル又はメモリセルとも呼ばれる）は、Ｐウェル領域１４０に形成されている。各トランジスタは、制御ゲート（１００ＣＧ，１０２ＣＧ，１０４ＣＧ，１０６ＣＧ）と浮遊ゲート（１００ＦＧ，１０２ＦＧ，１０４ＦＧ，１０６ＦＧ）を含む積層ゲート構造を有する。各浮遊ゲートは、酸化膜上のＰウェルの表面に形成される。制御ゲートは浮遊ゲートの上方に位置し、それらの間には制御ゲートと浮遊ゲートを分離する酸化膜が存在する。図３では、トランジスタ１２０，１２２のための制御ゲート及び浮遊ゲートを示しているように見える。しかしながら、トランジスタ１２０及び１２２においては、制御ゲートと浮遊ゲートは互いに接続されている。
メモリセル群の制御ゲート群（１００，１０２，１０４，１０６）は、ワード線を構成する。Ｎ＋拡散層１３０，１３２，１３４，１３６，１３８は、隣接するセルによって共有される。これにより、各セルが互いに直列に接続されたＮＡＮＤストリングが構成される。これらのＮ＋拡散層は、各セルのソース及びドレインを構成する。例えば、Ｎ＋拡散層１３０は、トランジスタ１２２のドレインであるとともに、トランジスタ１０６のソースである。Ｎ＋拡散層１３２は、トランジスタ１０６のドレインであるとともに、トランジスタ１０４のソースである。Ｎ＋拡散層１３４は、トランジスタ１０４のドレインであるとともに、トランジスタ１０２のソースである。Ｎ＋拡散層１３６は、トランジスタ１０２のドレインであるとともに、トランジスタ１００のソースである。Ｎ＋拡散層１３８は、トランジスタ１００のドレインであるとともに、トランジスタ１２０のソースである。Ｎ＋拡散層１２６は、ＮＡＮＤストリングのビット線に接続される。Ｎ＋拡散層１２８は、複数のＮＡＮＤストリングの共有ソース線に接続される。
【００２０】
図１〜３は、ＮＡＮＤストリングに含まれるメモリセルを4個示す。しかしながら、この４つのトランジスタの使用は例に過ぎない。ＮＡＮＤストリングは、４個より多いメモリセルを含んでいてもよいし、４個より少ないメモリセルを含んでもよい。例えば、ＮＡＮＤストリングは、８個のメモリセルを含むことができるし、１６個のメモリセルを含むこともできる。３２個のメモリセルを含むこともできる。ＮＡＮＤストリングに含まれるメモリセルの数は、本明細書の説明によって限定されることはない。
【００２１】
ＮＡＮＤ構造を用いるフラッシュメモリシステムに対する通常のアーキテクチャは、複数のＮＡＮＤストリングを含む。例えば、図４は、多数のＮＡＮＤストリングを有するメモリアレイの中の３つのＮＡＮＤストリング２０２，２０４，２０６を示す。図４の各ＮＡＮＤストリングは、2個の選択トランジスタと4個のメモリセルを含む。例えば、ＮＡＮＤセル２０２は、選択トランジスタ２２０，２３０と、メモリセル２２２，２２４，２２６，２２８を有する。ＮＡＮＤセル２０４は、選択トランジスタ２４０，２５０と、メモリセル２４２，２４４，２４６，２４８を有する。各ストリングは、各自の選択トランジスタ（例えば選択トランジスタ２３０と選択トランジスタ２５０）によってソース線に接続される。
選択線ＳＧＳは、ソース側の選択ゲートを制御するために利用される。各ＮＡＮＤストリングは、選択線ＳＧＤによって制御される選択トランジスタ２２０，２４０等によって各自のビット線に接続される。他の実施形態では、選択線は必ずしも共有されていなくてよい。
ワード線ＷＬ３は、メモリセル２２２の制御ゲートとメモリセル２４２の制御ゲートに接続される。ワード線ＷＬ２は、メモリセル２２４の制御ゲートとメモリセル２４４の制御ゲートとメモリセル２５０の制御ゲートに接続される。ワード線ＷＬ１は、メモリセル２２６の制御ゲートとメモリセル２４６の制御ゲートに接続される。ワード線ＷＬ０は、メモリセル２２８の制御ゲートとメモリセル２４８の制御ゲートに接続される。
図示されるように、各ビット線とそのＮＡＮＤストリングは、メモリセルアレイの列を構成する。ワード線（ＷＬ３，ＷＬ２，ＷＬ１，ＷＬ０）は、アレイの行を構成する。
【００２２】
各メモリセルは、データ（アナログあるいはデジタル）を保存することができる。デジタルデータの1ビットを保存する場合、メモリセルの可能な閾電圧の範囲は、２つの範囲に分けられる。一方の範囲は論理データ「１」が割り当てられ、他方の範囲は論理データ「０」が割り当てられる。
ＮＡＮＤタイプのフラッシュメモリの一例では、メモリセルが消去された後の閾電圧は負であり、論理「１」と定義される。プログラミング操作後の閾電圧は正であり、論理「０」と定義される。閾電圧が負の時に読取りが行なわれると、メモリセルはターンオンし、論理「１」が保存されていることを示す。閾電圧が正の時に読取が行なわれると、メモリセルはターンオンせず、論理「０」が保存されていることを示す。
メモリセルは、複数レベルの情報（例えば複数ビットのデジタルデータ）を保存することもできる。複数レベルのデータを保存する場合、可能な閾電圧の範囲はデータのレベルの数に分けられる。例えば、４つのレベルの情報が保存される場合、閾電圧は４つの範囲に分けられ、その４つの範囲はデータ値「１１」、「１０」、「０１」、「００」が割り当てられる。ＮＡＮＤタイプのメモリの一例では、消去操作後の閾電圧は負であり、「１１」と定義される。状態「１０」、「０１」、「００」には、正の閾電圧が使用される。
【００２３】
ＮＡＮＤタイプのフラッシュメモリと操作の例は、米国特許第５５７０３１５号、同第５７７４３９７号、同第６０４６９３５号、同第６４５６５２８号、及び米国特許出願第０９／８９３２７７号（公報第２００３／０００２３４８号）に記載されている。これらの内容は、本明細書に組み込まれる。
他のタイプのフラッシュメモリデバイスも本発明を利用することができる。例えば、米国特許第５０９５３４４号、同第５１７２３３８号、同第５８９０１９２号、及び同第６１５１２４８号は、ＮＯＲタイプのフラッシュメモリを開示する。これらの内容は、本明細書に組み込まれる。また、米国特許第６１５１２４８号は、フラッシュメモリの他の例が記載されている。この内容は、本明細書に組み込まれる。
【００２４】
図５は、本発明を実施するために使用されるフラッシュメモリシステムの１つの実施形態のブロック図を示す。メモリセル３０２は、列制御回路３０４、行制御回路３０６、Ｃソース制御回路３１０、及びＰウェル制御回路３０８によって制御される。
列制御回路３０４は、メモリセルアレイ３０２のビット線に接続されている。列制御回路３０４は、メモリセルに保存されたデータを読取る。また、プログラミング操作中のメモリセルの状態を判断する。また、ビット線の電位レベルを制御してプログラミングを促進あるいは禁止する。
行制御回路３０６は、ワード線群の中から１つを選択するために各ワード線に接続されている。行制御回路３０６は、読取電圧、プログラミング電圧、及び消去電圧を印加することができる。
Ｃソース制御回路３１０は、メモリセルに接続された共有ソース線（図6では「Ｃソース」と称する）を制御する。
Ｐウェル制御回路３０８は、Ｐウェル電圧を制御する。
【００２５】
メモリセルに保存されているデータは、列制御回路３０４に読取られ、データ入出力バッファ３１２を介して外部Ｉ／Ｏ線に出力される。メモリセルに保存されるプログラミングデータは、外部Ｉ／Ｏ線を介してデータ入出力バッファ３１２に入力され、列制御回路３０４に転送される。外部Ｉ／Ｏ線は、制御装置３１８に接続されている。
【００２６】
フラッシュメモリデバイスを制御するための命令データは、制御装置３１８に入力される。命令データは、どの操作がリクエストされているのかをフラッシュメモリに伝える。入力命令は、状態機械３１６に転送される。状態機械３１６は、列制御回路３０４、行制御回路３０６、Ｃソース制御回路３１０、Ｐウェル制御回路３０８、及びデータ入出力バッファ３１２を制御する。状態機械３１６は、フラッシュメモリのステータスデータ（ＲＥＡＤＹ／ＢＵＳＹやＰＡＳＳ／ＦＡＩＬ等）を出力することもできる。
【００２７】
制御装置３１８は、パソコン、デジタルカメラ、パーソナルデジタルアシスタント等のホストシステムに接続されている（あるいは接続可能である）。制御装置３１８は、ホストから命令やデータを受信したり、ホストにデータやステータス情報を提供したりするために、ホストと通信している。制御装置３１８は、ホストからの命令を命令信号に変換する。命令信号は、状態機械３１６と通信している命令装置３１４によって受信可能及び実行可能な信号である。通常、制御装置３１８は、メモリアレイから読取られたりメモリアレイに書き込まれたりするユーザデータのためのバッファメモリを含んでいる。
【００２８】
メモリシステムの典型的な例は、制御装置３１８を含む１つの集積回路と、１つ又は複数の集積回路チップを有する。各集積回路チップは、メモリアレイと、それに関連する制御回路、入出力回路、及び状態機械回路を含んでいる。システムのメモリアレイ群と制御回路群を１つ又は複数の集積回路チップに統合することが近年のトレンドである。
メモリシステムは、ホストシステムの一部として埋め込まれてもよい。あるいは、メモリシステムは、ホストシステムにリムーバブルに差し入れできるメモリカード（又は他のパッケージ）に含まれていてもよい。このようなリムーバブルカードは、メモリシステム全体（例えば制御装置を含む）を含んでいてもよい。あるいは、メモリアレイとそのメモリアレイに関連する周辺回路のみを含んでもよい。従って、制御装置は、ホストに埋め込まれていてもよいし、リムーバブルメモリシステムに含まれていてもよい。
【００２９】
図６を参照して、メモリセルアレイ３０２の構造の例を説明する。一例として、１０２４個のブロックに区分けされたＮＡＮＤフラッシュＥＥＰＲＯＭについて説明する。
１つのブロックに保存されたデータは同時に消去される。１つの実施形態では、１つのブロックは、同時に消去できるセルの最小単位である。この例では、各ブロックが、偶数列と奇数列に分けられた８５１２個の列を有する。ビット線は、偶数ビット線（ＢＬｅ）と奇数ビット線（ＢＬｏ）に分けられる。
図６は、４個のメモリセルを直列に接続することによって構成されたＮＡＮＤストリングを示す。各ＮＡＮＤストリングに４個のセルが含まれているように示されているが、４個以上あるいは４個以下にしてもよい。ＮＡＮＤストリングの一端は、第１選択トランジスタＳＧＤを介して対応するビット線に接続されている。他端は、第２選択トランジスタＳＧＳを介してＣソースに接続されている。
【００３０】
読取およびプログラミング操作の間に、４２５６個のメモリセルが同時に選択される。選択されたメモリセル群は、同じワード線と同じ種類のビット線（例えば偶数のビット線）を有する。従って、５３２バイトのデータが同時に読取又はプログラミングされる。同時に読取又はプログラミングされた５３２バイトのデータは、１つの論理ページを構成する。従って、１つのブロックは、少なくとも８つの論理ページ（４つのワード線と奇数又は偶数の組合せ）を保存することができる。各メモリセルが２ビットのデータ（例えばマルチレベルセル）を保存する場合、１つのブロックは１６ページを保存する。別のサイズのブロックやページについても、本発明を適用することができる。
【００３１】
Ｐウェルを消去電圧（例えば２０Ｖ）まで上げるとともに選択されたブロックのワード線を接地することによって、メモリセルが消去される。ソース線とビット線は浮遊している。消去は、メモリアレイの全体、個々のブロック、又は他の単位において実行することができる。電子は、浮遊ゲートからＰウェル領域に移動し、閾電圧は負になる。
【００３２】
読取検証操作では、トランジスタをパスゲートとして操作するために、選択ゲート（ＳＧＤとＳＧＳ）と選択されていないワード線（例えばＷＬ０，ＷＬ１，ＷＬ３）が読取パス電圧（例えば４．５Ｖ）まで上げられる。選択されたワード線（例えばＷＬ２）の電圧レベルは、関連しているメモリセルの閾電圧がそのレベルに到達しているか否かを確認するために、それぞれの読取検証操作に対して特定される。例えば、２レベルのメモリセルに対する読取操作では、閾電圧が０Ｖより高いか否かを判断するために、選択されたワード線ＷＬ２を接地してもよい。検証操作では、選択されたワード線ＷＬ２を例えば２.４Ｖに接続する。これにより、閾電圧が少なくとも２．４Ｖに達したか否かが検証される。
ソースとＰウェルは０Ｖである。選択されたビット線（ＢＬｅ）は、例えば０．７Ｖのレベルに予備チャージされる。閾電圧が読取レベル又は検証レベルよりも大きい場合、非導電メモリセルになるために、関連するビット線（ＢＬｅ）の電位レベルは高レベルに維持される。一方において、閾電圧が読取レベル又は検証レベルよりも小さい場合、導電性メモリセル（Ｍ）になるために、関連しているビット線（ＢＬｅ）の電位レベルは、例えば０．５Ｖ以下という低レベルに下がる。メモリセルの状態は、ビット線に接続されているセンス増幅器によって検知される。メモリセルが消去されるか又はプログラミングされるかは、浮遊ゲートに負電荷が帯電しているか否かに依存する。例えば、浮遊ゲートに負電荷が帯電している場合、閾電圧は上昇し、トランジスタは促進モードになることができる。
上記した消去、読取、及び検証操作は、この技術分野における公知のテクニックに基づいて実行される。従って、上記の各説明は、当業者が変更することができる。
【００３３】
図７は、図５の列制御回路３０４の一部を示す。ビット線の各ペア（例えばＢＬｅとＢＬｏ）は、センス増幅器に接続される。このセンス増幅器は、３つのデータラッチに接続されている。即ち、第１データラッチ４０２と第２データラッチ４０４と第３データラッチ４０６に接続されている。３つのデータラッチのそれぞれは、１ビットのデータを保存することができる。
センス増幅器は、読取操作又は検証操作中に選択されたビット線の電位レベルを検知し、検地したデータを二値データとして保存し、プログラミング操作中にビット線電圧を制御する。センス増幅器は、「ｅｖｅｎＢＬ」と「ｏｄｄＢＬ」の信号のいずれかを選択することによって、選択されたビット線に選択的に接続される。
データラッチ４０２，４０４，４０６は、読取データを出力したりプログラミングデータを保存したりするために、Ｉ／Ｏ線４０８に接続されている。Ｉ／Ｏ線４０８は、図５のデータ入出力バッファ３１２に接続されている。データラッチ４０２，４０４，４０６は、ステータス情報を入出力するために、ステータス線４１０にも接続されている。この実施形態では、１つのビット線のペア（偶数と奇数）に対して、センス増幅器、第１データラッチ４０２、第２データラッチ４０４、及び第３データラッチ４０６が備えられている。
【００３４】
図８は、２ビットのデータ（例えば４つのデータ状態）を保存するメモリセルの閾電圧の区分を示す。区分４６０は、消去状態（「１１」を保存している状態）のセルの閾電圧の区分を示す。このセルは、負の閾電圧レベルを持っている。区分４６２は、「１０」を保存しているセルの閾電圧の区分を示す。区分４６４は「００」を保存しているセルの閾電圧の区分を示す。区分４６６は、「０１」を保存しているセルの閾電圧の区分を示す。
２ビットは単一のメモリセルに保存され、この例では、各ビットは異なる論理ページの一部である。四角内に示すビットは、下側ページに対応する。丸内に示すビットは上側ページに対応する。１つの実施形態では、これらの論理状態は、グレイコードオリエンテーション（１１、１０、００、０１）を利用して物理的状態に割り当てられる。その結果、浮遊ゲートの閾電圧が誤ってシフトしても、１ビットのみが影響を受ける。
なお、図８では４つの状態を示しているが、本発明は４つ以上あるいは４つ以下の状態を利用してもよい。
【００３５】
狭い区分は幅広い読取マージン（状態間の距離）をもたらすために、信頼性を高めるためには各区分を狭くする方が好ましい。「Fast and Accurate Programming Method for Multi-level NAND EEPROMs, pp129-130, Digest of 1995 Symposium on VLSI Technology,"）」によると、原理上、区分を幅０．２Ｖに制限するためには、通常の反復プログラミングパルスをステップ間で０．２Ｖ増加することが必要とされる。また、区分を幅０．０５Ｖに狭めるためには、０．０５Ｖステップが必要とされる。プログラミング電圧の増加ステップを小さくしてセルをプログラミングすることは、結果的にプログラミング時間を長くしてしまう。なお、上記の文献の内容は、本明細書に組み込まれる。
【００３６】
図８は、４状態ＮＡＮＤメモリセルをプログラミングするツー・パス技術の例を示す。第１プログラミングパスでは、セルの閾電圧レベルは、下側論理ページにプログラミングされるビットに基づいて設定される。そのビットが論理「１」の場合、閾電圧は変更されない。そのビットが以前に消去されたことによって、既に適切な状態にあるためである。しかしながら、プログラミングされるビットが論理「０」の場合、矢印４７０で示されるように、セルの閾電圧レベルが閾電圧区分４６２まで上げられる。これにより、第１プログラミングパスは完了する。
【００３７】
第２プログラミングパスでは、セルの閾電圧レベルは、上側論理ページにプログラミングされるビットに基づいて設定される。上側論理ページのビットが論理「１」を保存している場合、セルは閾電圧区分４６０又は４６２に対応する状態にあるので、プログラミングは行われない。閾電圧区分４６０と４６２はどちらも上側ビット「１」を有しており、セルの状態が閾電圧区分４６０と４６２のどちらに対応するかは、下側ページのプログラミングに依存する。
上側ページのビットが論理「０」の場合、閾電圧はシフトされる。第１パスの結果、セルの状態が閾区分４６０に対応する消去状態のままだった場合、第２パスでは、そのセルが矢印４７４で示すように閾電圧が上げられるようにプログラミングされる。具体的には、その閾電圧が閾電圧区分４６６内に収まるようプログラミングされる。一方、第１パスの結果、セルの状態が閾区分４６２に対応する状態にプログラミングされた場合、第２パスでは、そのセルが矢印４７２で示すように、閾電圧が上げられるようプログラミングされる。具体的には、その閾電圧が閾電圧区分４６４内に収まるようにプログラミングされる。第２パスでは、下側ページのデータは変更されずに、上側ページに論理「０」を保存するよう指定された状態にプログラミングされる。
なお、各区分には特定のビットパターンが割り当てられているが、これと異なるビットパターンが割り当てられてもよい。その場合、プログラミングが実行される状態は、図８に示すものと異なってよい。
【００３８】
通常、並列にプログラミングされるセルは、ワード線に１つ置きに配置されているセルである。例えば、図４は、ワード線ＷＬ２に沿う多数のセルのうち３つのメモリセル２２４，２４４，２５０を示す。１つ置きのセルの１つの組は、セル２２４と２５０を含んでおり、論理ページ０と２（偶数）からのビットを保存する。一方、別の１つ置きのセルのセットは、セル２４４を含んでおり、論理ページ１と３（奇数）からのビットを保存する。上記の例では、論理ページ０と１は下側ページであり、論理ページ２と３は上側ページである。
【００３９】
図８は、読取比較点と検証比較点も示している。例えば、読取比較点は、Ｖｒ１０，Ｖｒ００，Ｖｒ０１を含んでいる。Ｖｒ１０，Ｖｒ００，Ｖｒ０１に対応する電圧は、読取操作の間にメモリセルの制御ゲートに印加され、それによって、メモリセルがどの時点で導通しどの時点で導通しないのかを判断をする。３つの読取操作に基づいて、メモリシステムは、メモリセルがどの閾区分（どの状態）に当てはまるのかを判断することができる。例えば、３つの読取操作のいずれにおいてもメモリセルが導通しない場合、そのメモリセルは状態０１にある。メモリセルが、Ｖｒ０１を制御ゲートに印加した場合にのみに導通する場合、そのメモリセルは状態００にある。メモリセルが、Ｖｒ００を印加した時には導通し、Ｖｒ１０を印加した時には導通しない場合、そのメモリセルは状態１０にある。メモリセルが、Ｖｒ１０，Ｖｒ００，Ｖｒ０１を印加した時に導通する場合、そのメモリセルは状態１１にある。
１つの実施形態では、読取比較点Ｖｒ１０，Ｖｒ００，Ｖｒ０１のそれぞれは、閾区分の隣接する２つの状態の中間点である。検証比較点Ｖｖ１０，Ｖｖ００，Ｖｖ０１は、セルが十分にプログラミングされたことを確認するためにプログラミング処理の間に利用される。
【００４０】
図８は、オーバー・プログラミング検証比較点ＶｏｐＳＰ，Ｖｏｐ１０，Ｖｏｐ００，Ｖｏｐ０１も示している。これらのオーバー・プログラミング検証比較点は、特定のメモリセルがオーバー・プログラミングされたか否かを判断するために使用される。
例えば、状態１１にあるはずのメモリセルの制御ゲートにＶｏｐＳＰを印加してもそのメモリセルが導通しない場合に、そのセルはオーバー・プログラミング（あるいはオーバー・ソフト・プログラミング）されたと判断できる。
状態１０にあるはずのメモリセルの制御ゲートにＶｏｐ１０を印加してもそのセルが導通（例えばターンオン）しない場合に、そのメモリセルがオーバー・プログラミングされたと結論づけることができる。
状態００にあるはずのメモリセルの制御ゲートにＶｏｐ００を印加した時にそのメモリセルが導通（例えばターンオン）しない場合に、そのセルがオーバー・プログラミングされたと判断することができる。
状態０１にあるはずのメモリセルの制御ゲートにＶｏｐ０１を印加した時にそのメモリセルが導通（例えばターンオン）しない場合に、そのセルがオーバー・プログラミングされたと結論づけることができる。
オーバー・プログラミング検証比較点のそれぞれは、隣接する読取比較点より若干低い。例えば、１つの実施形態では、各検証比較点は、隣接する読取比較点よりも５０ｍＶ低い。他の実施形態では、検証比較点と隣接する読取比較点の違いは、５０ｍＶ以上あるいは５０ｍＶ以下でもよい。１つの実施形態では、オーバー・プログラミング検証処理は、状態機械３１６によって実行される。
【００４１】
プログラミング処理の１つの実施形態では、まず、下側ページのプログラミングの前にメモリセルが消去される（ブロック単位あるいは他の単位で消去される）。プログラミング処理を開始する場合、ホストからのデータ読込命令又は書込命令が制御装置によって受信される。制御装置は、適当な命令をデータ入出力バッファ３１２と状態機械３１６に提供する。制御装置３１８は、データを書き込むアドレスを受信する。このアドレスは、メモリアレイ３０２内の特定の論理ページ（複数でもよい）と物理的アドレスにマッピングされる。アドレスデータは、制御装置３１８からデータ入出力バッファ３１２に送信される。いくつかの実施形態では、データ入出力バッファ３１２に加えて状態機械３１６にも送信される。そして、データは、プログラミング操作のためのアドレスに基づいて、適当な第１データラッチ４０２に送信される。その第１データラッチ４０２からのデータは、対応する第２データラッチ４０４にロードされる。制御装置からのプログラミング命令に応じて、状態機械３１６は、図９のフローチャートに表示されるプログラミング処理を開始する。
【００４２】
ステップ５９４では、状態機械３１６は、上側ページと下側ページのどちらにデータが書き込まれるのかを判断する。データが下側ページに書き込まれる場合、処理はステップ６００に進む。
データが上側ページに書き込まれる場合、状態機械は、ステップ５９６の下側ページのデータを確認するために、下側ページ読取操作を実行する。図８を参照すると、上側ページのプログラミングは、メモリセルを状態００又は状態０１にプログラミングすることを含む。下側ページのデータが論理「１」の場合、上側ページのプログラミング処理は、メモリセルを状態０１にプログラミングすることを含む（図８の矢印４７４参照）。従って、システムは、上側ページのプログラミング処理の間に、メモリセルがどの状態にプログラミングされなければならないかを判断するために下側ページのデータを知る必要がある。
【００４３】
ステップ５９６の１つの実施形態では、状態機械は、Ｖｒ１０で読取操作を実行する。メモリセルが導通すれば（ターンオンすれば）、下側ページに対する読取データは「１」である。メモリセルが導通しなければ（ターンオンしなければ）、下側ページに対する読取データは「０」である。下側ページのデータは、第３データラッチ４０６に保存される。他の読取処理を用いて下側ページを読取ることも可能であり、第３データラッチ４０６以外の場所に下側ページのデータを保存することもできる。下側ページのデータを第３データラッチ４０６に保存した後に、処理はステップ６００に進む。
【００４４】
ステップ６００では、状態機械は、適当なワード線（複数でもよい）にプログラミングパルスを印加する。第１パルスが印加される前に、プログラミング電圧は開始パルス（例えば１２Ｖ）に初期化され、状態機械に整備されているプログラムカウンタは０に初期化される。
１回目のステップ６００では、選択されたワード線に第１プログラミングパルスが印加される。特定の第１データラッチに論理「０」が保存されている場合、そのメモリセルに対応するビット線は接地される。一方において、特定の第１データラッチに論理「１」が保存されている場合、そのメモリセルに対応するビット線はＶｄｄに接続され、プログラミングは禁止される。プログラミングを禁止することに関するさらなる情報は、「Improved Self Boosting Technique（２００３年３月5日に出願された米国特許出願第１０／３７９６０８号）」に開示されている。この内容は、本明細書に組み込まれる。
【００４５】
ステップ６０２では、選択されたメモリセルが検証される。（例えばセンス増幅器の出力を第２データラッチと比較することによって）選択されたセルのターゲット閾電圧がターゲットレベルに到達したと検知された場合、第２データラッチ４０４に保存されているデータは論理「１」に変更される。閾電圧が適当なレベルに到達していないと検知された場合、第２データラッチ４０４に保存されているデータは変更されない。このように、対応する第２データラッチ４０４に論理「１」が保存されているメモリセルは、プログラミングされる必要はない。全ての第２データラッチが論理「１」を保存した場合、状態機械は、選択された全てのセルにプログラミングが行われたと（ライン４１０を介して）認識する。
ステップ６０４は、全ての第２データラッチ４０４が論理「１」を保存しているか否かを確認することを含んでいる。全ての第２データラッチ４０４が論理「１」を保存している場合、プログラミングの第１ステージが完了し、適当なステータスメッセージがステップ６１０で報告される。
【００４６】
ステップ６０４において、全ての第２データラッチ４０４が論理「１」を保存していないと判断された場合、プログラミング処理は続行される。ステップ６０６では、プログラムカウンタがプログラミング制限値と比較される。１つの例では、プログラミング制限値は２０である。プログラムカウンタが２０（例えばプログラミングを試みた最大回数）に達している場合、プログラミング処理は失敗であり（ステップ６０８）、適当なステータスメッセージが報告される。
プログラムカウンタが最大値より低い場合、プログラミング電圧は次のステップサイズ分だけ増加され、プログラムカウンタはインクリメントされ、プログラミング処理は次のパルスを印加するためにステップ６００に進む。
【００４７】
ステップ６０４の検証が成功した場合、プログラミングされた各メモリセルの閾電圧は、図８に示す区分のいずれか１つに当てはまるはずである。しかしながら、上記の処理は、プログラミングされたセルの閾電圧が、少なくとも適当な検証比較点よりも高いことのみを検証している。ステップ６０２で用いた検証比較点は、ターゲット閾区分内で許容できる最低限の電圧レベルである。例えば、図８を参照すると、ステップ６０４において、セルが状態１０にプログラミングされたと検証するための検証比較点はＶｖ１０であり、状態００にプログラミングされたと検証するための検証比較点はＶｖ００であり、状態０１にプログラミングされたと検証するための検証比較点はＶｖ０１である。即ち、上述の処理は、プログラミング処理が所望の状態を下回らないことを検証する。
これまでは、プログラミング処理が所望の状態を上回ってしまったことを確認することはなかった。例えば、メモリを状態１０にプログラミングするのが目的である場合、そのメモリセルの閾電圧がＶｏｐ１０より高い値にプログラミングされてしまったら、そのメモリセルはオーバー・プログラミングされたことになる。ステップ６２０〜６７６は、プログラミング処理がメモリセルをオーバー・プログラミングしたか否かを判断するために利用される。
【００４８】
ステップ６１０の後、図９の処理は２つの並列経路に分かれる。プログラミング処理が下側ページをプログラミングした場合、処理はステップ６２０〜６４４を実行する。プログラミング処理が上側ページをプログラミングした場合、処理はステップ６６０〜６７６を実行する。いくつかのセルが下側ページにプログラミングされるとともに、同じプログラミング処理の間に他のセルが上側ページにプログラミングされる可能性がある。従って、異なるメモリセル群に対して異なるステップが実行されてもよい。他の実施形態では、上側ページと下側ページのどちらがプログラミングされているのかを問わず、ステップ６２０〜６４４とステップ６６０〜６７６を、プログラミングされている全てのセルに対して実行することができる。
【００４９】
下側ページがプログラミングされている場合、ステップ６２０が実行される。ステップ６２０は、ソフトプログラミングに起因するオーバー・プログラミングを検証する処理を含んでいる。即ち、ステップ６２０は、消去処理の後に実行された（又は消去処理の一部として実行された）ソフトプログラミング処理が、消去されたメモリセルの許容範囲以上に閾電圧を上げたのか否かを判断する処理を実行することを含んでいる。
メモリセルが消去される場合、そのメモリセルの閾電圧が低すぎる場合がある。閾電圧が低すぎる問題を改善するために、ソフトプログラミング処理が実行され、その消去されたメモリセルの閾電圧を適当なレベルに上げる。ソフトプログラミング処理が閾電圧を上げすぎて、そのセルをオーバー・プログラミングしてしまう可能性がある（閾電圧がＶｏｐＳＰより高くなる可能性がある）。ステップ６２０では、このようにオーバー・プログラミングされたセルを検知する。
ステップ６２２では、各セルが、ソフトプログラミングに起因するオーバー・プログラミング検証処理（ステップ６２０）をパスしたか否かを判断する。全てのセルがパスしなかった場合、ステップ６２４では、ソフトプログラミングに起因するオーバー・プログラミング検証が失敗した旨を示すステータスがリターンされる。ステップ６２０の処理をパスした場合（ソフトプログラミングの間にオーバー・プログラミングされたセルがなかった場合）、ステップ６３８では、状態１０のオーバー・プログラミング検証処理が実行される。
【００５０】
ステップ６３８は、状態１０のオーバー・プログラミング検証処理を実行することを含んでいる。状態機械は、状態１０にあるはずのセルの閾電圧がＶｏｐ１０より高いか否かを判断する。閾電圧がＶｏｐ１０より高ければ、セルはテスト（ステップ６４０）をパスすることができず、オーバー・プログラミングによる失敗を示すステータスがリターンされる（ステップ６４２）。１つの実施形態では、このステータスは、オーバー・プログラミングが失敗である旨のみを示していてもよい。他の実施形態では、閾電圧が許容レベルをどれだけ上回ったのかを示す値をリターンすることもできる。
ステップ６３８の処理において、メモリセルがオーバー・プログラミングされたと判断されなければ、ステップ６４４で「パス」のステータスがリターンされる。ステップ６４４の他の実施形態では、状態１０のオーバー・プログラミング検証がパスであった旨を示すステータスをリターンすることができる。
【００５１】
上側ページがプログラミングされた場合、状態００のオーバー・プログラミング検証処理をステップ６６０で実行する。システムは、状態００にあるはずのメモリセルの閾電圧がＶｏｐ００より高いか否かを判断するためにチェックする。セルがパスしない場合（状態００にあるはずのメモリセルの閾電圧がＶｏｐ００より高い場合）、ステップ６６４において、オーバー・プログラミングによる失敗を示すステータスが提供される。他の実施形態では、このステータスは、状態００のオーバー・プログラミングによる失敗を示してもよい。セルがオーバー・プログラミングされていないと判断された場合、処理はステップ６７０に進み、状態０１のオーバー・プログラミング検証処理を実行する。
【００５２】
ステップ６７０では、システムは、状態０１にあるはずのセルの閾電圧がＶｏｐ０１より高いか否かを判断する。状態０１にあるはずのセルの閾電圧が検証比較点Ｖｏｐ０１より高い場合は、そのセルがテストに失敗したことを意味し、ステップ６７４において失敗のステータスが報告される。全てのセルがテストをパスした場合（セルがオーバー・プログラミングされていない場合、あるいはセルが状態０１にない場合）、ステップ６７６においてパスのステータスが報告される。１つの実施形態では、ステップ６７０〜６７６は省略されてもよい。
【００５３】
図１０は、ソフトプログラミングに起因するオーバー・プログラミングの検証（図９のステップ６２０）を実行するための処理の１つの実施形態のフローチャートを示す。
ステップ７００では、以前にメモリセルにプログラミングされたデータが、第１データラッチ４０２にまだ存在している。このデータは、そのメモリセルに対応する第１データラッチ４０２から第２データラッチ４０４にロードされる。
ステップ７０２では、ＶｏｐＳＰを用いて検証処理が実行される。即ち、システムは、制御ゲートが電圧ＶｏｐＳＰを持つ読取操作を実行することができる。メモリセルが導通した場合、センス増幅器は論理「１」をリターンする。メモリセルが導通しなかった場合、センス増幅器は論理「０」をリターンする。検証データが第２データラッチ４０４のデータと一致した場合（ステップ７０４）、第２データラッチ４０４のデータは「１」に設定される（ステップ７０６）。ステップ７００〜７０６は、各セルに対して並列に行われる。
メモリセルに対する全ての第２データラッチが「１」に設定された場合（ステップ７０８）、ソフトプログラミングに起因するオーバー・プログラミングの検証処理は「パス」の結果をリターンする（ステップ７１０）。全ての第２データラッチ４０４が「１」に設定されていない場合、処理は失敗する（ステップ７１２）。
セルが状態１０にあった場合は、ステップ７００で第２データラッチにロードされるデータは論理「０」となり、検証ステップ７０２はＶｏｐＳＰ電圧を印加してもトランジスタは導通せず、センスデータは「０」を示す。従って、読取データは、第２データラッチ４０４のデータと一致し、第２データラッチ４０４は論理「１」に設定され、処理はパスすることになる。
【００５４】
図１１は、状態１０のオーバー・プログラミング検証（図９のステップ６３８）を実行するための処理のフローチャートである。
図１１のステップ７６４では、システムは、Ｖｏｐ１０を用いて検証処理を実行する。即ち、Ｖｏｐ１０を様々なメモリセルの制御ゲートに印加して読取操作を実行する。セルがオーバー・プログラミングされておらず状態１１又は１０にある場合、そのセルは導通するはずである。従って、論理「１」が受信されるはずである。
ステップ７６６では、検証ステップからの結果が第２データラッチ４０４にロードされる。全てのセルがオーバー・プログラミングされていない場合、その全てのセルは、各自の第２データラッチに論理「１」を保存しているはずである。全ての第２データラッチが論理「１」の場合（ステップ７６８）、処理はパスする（ステップ７７０）。全ての第２データラッチが論理「１」ではない場合、処理は失敗する（ステップ７７２）。
【００５５】
図１２は、状態００のオーバー・プログラミング検証処理（図９のステップ６６０）を実行するための処理のフローチャートである。
図１２のステップ８０２では、Ｖｏｐ００を用いて検証処理が実行される。即ち、Ｖｏｐ００をメモリセルの制御ゲートに印加して、読取操作が実行される。１つの実施形態では、メモリセルの閾電圧がＶｏｐ００より高い場合、そのメモリセルはターンオンせず、論理「０」がリターンされる。メモリセルの閾電圧がＶｏｐ００より低い場合、そのメモリセルはターンオンし、論理「１」がリターンされる。
ステップ８０２の検証でリターンされた結果は、対応する第２データラッチ４０４に保存される。ステップ８０４では、システムは、検証ステップ８０２の結果と、第３データラッチ４０６に保存してある下側ページのデータを比較する。図１２の処理は、上側ページのプログラミングの後に実行される。上述したように、上側ページのプログラミングは、まず下側ページのデータを読取り、その下側ページのデータを第３データラッチ４０６に保存することによって開始される（ステップ５９６と５９８を参照）。第３データラッチに保存された下側ページのデータは、検証ステップ８０２の結果と比較される。
上側ページのプログラミングの後に、状態機械は、メモリセルが状態００にあるはずなのか、それとも状態０１にあるはずなのかを知る必要がある。下側ページのデータは、その情報を提供する。下側ページのデータが「０」の場合、上側ページのプログラミングが行われる前に、そのメモリセルが状態１０にあったことを意味する。メモリセルが状態１０にあった場合、上側ページのプログラミングを実行することによって、そのメモリセルは状態００に移動する（図８の矢印４７２を参照）。下側ページのデータが「１」の場合、上側ページのプログラミングが行われる前に、そのメモリセルが状態１１にあったことを意味する。メモリセルが状態１１にあった場合、上側ページのプログラミングを実行することによって、そのメモリセルは状態０１に移動する（図８の矢印４７４を参照）。従って、下側ページのデータが論理「０」の場合、状態機械は、メモリセルがオーバー・プログラミングされたか確認する必要がある。論理ページが論理「１」の場合、メモリセルが状態００であることはない。従って、状態００のオーバー・プログラミング検証に失敗はありえない。
【００５６】
１つの実施形態では、第３データラッチ４０６の下側ページのデータが論理「０」であり、第２データラッチ４０４に保存されている「ステップ８０２の検証からリターンされた結果」が論理「０」である場合、そのメモリセルは、ステップ８０６においてオーバー・プログラミングされたと判断される。これは、メモリセルが状態００にあるべきであることを意味する（しかしながら、そのセルの閾電圧はＶｏｐ００より高い）。
下側ページのデータが論理「１」の場合、又は、ステップ８０２の検証処理からリターンされた結果（第２データラッチ４０４に保存されている結果）が論理「１」である場合、そのメモリセルは状態００に対してオーバー・プログラミングされていないと判断される。
ステップ８０６では、状態００に対してオーバー・プログラミングされていない各セルに対応する第２データラッチ４０４が論理「１」に設定される。なお、上側ページのプログラミング処理が、上側ページを論理「１」に維持しようとする場合（例えば状態１１あるいは状態１０）、対応する第２データラッチは既に論理「１」である。
全ての第２データラッチ４０４が論理「１」に設定されている場合（ステップ８０８）、図１２の処理はパスする（ステップ８１０）。全ての第２データラッチが論理「１」に設定されていない場合、状態００に対してオーバー・プログラミングされたメモリセルが１つ又は複数存在するために、図１２の処理は失敗する（ステップ８１２）。
【００５７】
図１３は、状態０１のための上側ページのオーバー・プログラミング検証（図９のステップ６７０）を実行するための処理の一例のフローチャートである。
ステップ８６２では、比較点Ｖｏｐ０１を用いて検証処理を実行する。セルが導通した場合（論理「１」の検証結果がリターンされた場合）、第２データラッチ４０４は論理「１」に設定される。セルが導通しない場合、第２データラッチは論理「０」に設定される。
全ての第２データラッチが論理「１」に設定された場合（ステップ８６４）、図１３の処理はパスする（ステップ８６６）。全ての第２データラッチが論理「１」に設定されていない場合、図１３の処理はパスしない（ステップ８６８）。
【００５８】
上述のフローチャートは、検証処理によって制御ゲートに特定の電圧を印加し、メモリセルがターンオンしたのか、あるいはターンオフしたのかを確認することによって実行される。しかしながら、本発明では、メモリセルの状態を判断するために他の検証（読取）手段を用いることができる。例えば、電流感知システムを用いることができる。これは、特定の読取コンディションにある記憶ユニットの電流を基準電流のセットと比較する。
他の実施形態では、記憶ユニットの状態は、複数の異なるパラメータを用いることによって判断することができる。例えば、セルに帯電している電荷レベルの確認は、バイアスコンディションを利用して、その状態のマグニチュードが検知される電流センシングによって実行されてよい。
一方において、コンディションのオンセットが様々なステアリングゲートバイアスコンディションを利用して検知される場合、閾電圧をセンシングすることによって判断することもできる。
また、セルの電荷レベルに定められた駆動力を利用して、（例えばプリチャージされたコンデンサによって）動的にホールドされたセンスノードの放電率を制御することによって、上記の確認を動的に行うこともできる。与えられた放電レベルに達するまでの時間を検知することによって、帯電している電荷レベルが特定される。この場合、セルのコンディションを示すパラメータは時間である。この方法は、米国特許第６２２２７６２号に説明されている。この内容は、本明細書に組み込まれる。
さらに、他の技術では、記憶ユニットの状態が周波数をパラメータとして利用することによって判断される。この方法は、米国特許第６０４４０１９号に説明されている。この内容は、本明細書に組み込まれる。なお、電流センシングの方法は、米国特許第５１７２３３８号により詳しく説明されている。この内容も、本明細書に組み込まれる。
【００５９】
隣接する浮遊ゲートの電荷によって生じる電界の存在が原因で、浮遊ゲートに保存されている電荷がシフトすることがある。ここでの問題は、現在読取られているセルがプログラミングされた後に、隣接するメモリセルがプログラミングあるいは消去される可能性があることである。１つのセットのデータに対応するために、浮遊ゲートに電荷のレベルが加えられて１つのセットのセルをプログラミングすることを例にする。第２セットのセル（第１セットと隣接するセット）に対して第２セットのデータがプログラミングされた後に、第１セットのセルの浮遊ゲートから読取られる電荷レベルは、プログラミングされたものと異なることがある。第２セットの浮遊ゲートから生じる電界の影響を受けるからである。即ち、観測されるエラーの原因は、隣接する浮遊ゲートの電界が、読取られているセルの浮遊ゲートの電圧レベルに影響するためである。これは、Ｙｕｐｉｎ効果として知られ、米国特許第５８６７４２９号と同第５９３０１６７号に詳しく説明されている。これらの内容は、本明細書に組み込まれる。これらの特許文献は、浮遊ゲートの２つのセットを物理的に隔離すること、あるいは、浮遊ゲートの第１セットを読み取る際に、浮遊ゲートの第２セットの電荷の効果をいかに考慮するのかを説明している。
【００６０】
第１セットのメモリセルを正しくプログラミングすることは可能だが、続けて隣接するセルがプログラミングされると、Ｙｕｐｉｎ効果によって第１セットのメモリセルがオーバー・プログラミングされることがある。例えば、状態１０にプログラミングされるはずの第１セル（図８を参照）に対して、閾電圧がＶｖ１０より高く（プログラミング検証）、Ｖｏｐ１０より低い（オーバー・プログラミング検証）ことを検証するための確認が行われる。隣接するメモリセルがプログラミングされた後は、第１セルから読取られた閾電圧が、当初にプログラミングされた値より高くなることがある（例えば０．２Ｖ高くなることがある）。第１メモリセルが、Ｖｏｐ１０より若干低い値にプログラミングされた場合、隣接するセルがプログラミングされた後に、第１セルはＶｏｐ１０より高い閾電圧を持つことがある。この場合、第１メモリセルは、オーバー・プログラミングされたことになる。この閾電圧が読取比較点（例えばＶｒ００）より高いのが理由で、データエラーが生じることもありえる。
隣接するセルは、隣接するワード線あるいは隣接するビット線に存在していてもよい。例えば、図４のセル２４４は、セル２２４、２４２、２５０、及び２４６と隣接している。いくつかの実施例では、セル２４４に隣接していないメモリセルが、セル２４４から読取られた電荷に影響を与える電界を持つこともありえる。
【００６１】
このＹｕｐｉｎ効果を対処するために、第１制御線（例えばワード線あるいはビット線）を用いてプログラミングを行った後に、本発明の１つの実施形態は、以前にプログラミングされているとともに第１制御線に隣接する制御線に関連するページにオーバー・プログラミング検証チェックを実行する。これらの実施形態は、図１４Ａ〜１５Ｃを用いて説明する。
【００６２】
図１４Ａは、以前に選択されたワード線に関連している論理ページにオーバー・プログラミング検証を実行するための処理の１つの実施形態を示す。
図１４Ａのステップ９０２では、メモリセルのセットは、第１ワード線を用いてプログラミングされる。例えば、図４を参照すると、ワード線ＷＬ１を用いて論理ページをプログラミングすることができる。ステップ９０２の処理は、図９の処理を実行することを含んでおり、図１０〜１３に示される「オーバー・プログラミングされたメモリセルを確認すること」も含んでいる。
ステップ９０４では、第２ワード線（例えば図４のワード線ＷＬ２）を用いて第２セットのメモリセルにプログラミング操作を実行する。ステップ９０４の処理は、図９の処理を実行することを含んでおり、オーバー・プログラミングされたメモリセルを確認することも含んでいる。
ステップ９０６では、システムは、第１ワード線（例えばワード線ＷＬ１）に関連する論理ページのメモリセルに対して、上述のＹｕｐｉｎ効果が原因で生じたオーバー・プログラミングをチェックする。
ステップ９０８では、システムは、第３ワード線（例えばワード線ＷＬ３）を用いて第３セットのメモリセルをプログラミングする。ステップ９０８の処理は、図９の処理を実行することを含んでおり、オーバー・プログラミングされたメモリセルを確認することも含んでおり。
ステップ９１０では、システムは、第２ワード線（例えばワード線ＷＬ２）に関連する論理ページのメモリセルに対して、上述のＹｕｐｉｎ効果が原因で生じたオーバー・プログラミングをチェックする。
その後、処理は続行し（あるいは続行しなくてもよい）、付加的なワード線に関連する付加的なメモリセルをプログラミングし、以前にプログラミングされたワード線においてオーバー・プログラミングされたメモリセルのための確認を実行することができる。
【００６３】
いくつかの実施例では、ワード線はＮＡＮＤストリングに沿って順番にプログラミングされる。従って、プログラミングに第１ワード線が使用された後、次のプログラミング操作では第１ワード線に隣接しているワード線が使用される。
ＮＡＮＤストリングは、通常（必ずとは言えないが）、ソース側からドレイン側にプログラミングされる。例えば、メモリセル２２８からメモリセル２２２（図４参照）にプログラミングされる。従って、ＷＬ０を用いてプログラミングした後に、システムは、ＷＬ１（ＷＬ０に隣接するワード線）を利用する。従って、図１４Ａの例では、オーバー・プログラミング検証が、直前のワード線に対して実行される。しかしながら、他の実施形態では、直前にプログラミングされたメモリセルではなくて、それより前にプログラミングされた他のメモリセルを確認するようにしてもよい。
【００６４】
図１４Ｂは、以前に選択されたビット線に対してオーバー・プログラミングされたメモリセルを確認することによって、Ｙｕｐｉｎ効果に対処する１つの実施形態のフローチャートを示す。
１つの実施形態では、ビット線は奇数ビット線と偶数ビット線にグループ分けされる。この実施形態では、奇数ビット線がプログラミングされ、次いで偶数ビット線がプログラミングされ、次いで奇数ビット線がプログラミングされ、次いで偶数ビット線がプログラミングされることが続いていく。他の実施形態では、ビット線の異なるセットは、異なるプログラミング操作が使用されてよい。
図１４Ｂでは、一方のセットのビット線でプログラミングされた後に、その前にプログラミングされた他方のセットのビット線に対してオーバー・プログラミングの確認が行われる。ステップ９５０では、偶数ビット線を用いてプログラミング操作が実行される。ステップ９５０の処理は、図９の処理を実行することを含んでおり、図１０〜１３に示す「オーバー・プログラミングされたメモリセルを確認すること」を含んでいる。
ステップ９５２では、プログラミング操作は奇数ビット線を用いて実行される。ステップ９５２の処理は、図９の処理を実行することを含んでおり、オーバー・プログラミングされたメモリセルを確認することを含んでいる。
ステップ９５４では、システムは、以前にプログラミングされた偶数ビット線に関連する論理ページに対して、上述のＹｕｐｉｎ効果によって生じるオーバー・プログラミングを確認する。
ステップ９５６では、偶数ビット線を用いてプログラミングが実行される。ステップ９５６の処理は、図９の処理を実行することを含んでおり、オーバー・プログラミングされたメモリセルを確認することを含んでいる。
ステップ９５８では、システムは、以前にプログラミングされた奇数ビット線に関連する論理ページに対して、上述のＹｕｐｉｎ効果によって生じるオーバー・プログラミングを確認する。
この処理は、プログラミングと、以前にプログラミングされたビット線に対するオーバー・プログラミングの確認とを交互に行いながら続行することができる。
【００６５】
図１４Ａと１４Ｂの処理は、状態機械や制御装置によって実行されてもよい。あるいは、図１４Ａと１４Ｂの処理を実施するための特定論理によって実行されてよい。あるいは、これらの装置の組み合わせによって実行されてよい。
図１４Ａと１４Ｂの処理の一部としてシステムが用いる方法は、多種多様である。以前にプログラミングされた制御線に関連する論理ページに対して、上述のＹｕｐｉｎ効果が原因で生じるオーバー・プログラミングを確認するための方法は、多種多様である。図１５Ａ〜Ｃは、その適切な方法を二つ説明するが、他の適切な方法も用いることもできる。
【００６６】
図１５Ａは、図８と同じように、2ビットのデータを保存しているメモリセルの閾電圧区分４６０，４６２，４６４，４６６を示す。読取比較点（Ｖｒ１０，Ｖｒ００，Ｖｒ０１）、検証比較点（Ｖｖ１０，Ｖｖ００，Ｖｖ０１）、及びオーバー・プログラミング比較点（ＶｏｐＳＰ，Ｖｏｐ１０，Ｖｏｐ００，Ｖｏｐ０１）に加えて、オーバー・プログラミングテスト点ＶｏｐＡ，ＶｏｐＢ，ＶｏｐＣを示す。
第１セルと隣接する第２セルをプログラミングした後に、第２セルからのＹｕｐｉｎ効果によって、第１セルの閾電圧が０．２Ｖほど上がる。技術、規模、スペース等に依存し、０．２Ｖ以上あるいは０．２Ｖ以下でもよい。
このデータは、予想通り破損しているが、完全に破損してはいない。１つのシナリオは、初めのプログラミングによって第１セルの閾電圧がオーバー・プログラミング検証電圧（例えばＶｏｐ１０）をわずかに下回る値になった場合に、セルが最大Ｙｕｐｉｎ効果（例えば約０．２Ｖ又は上述した別の値）の影響にさらされることである。Ｙｕｐｉｎ効果が原因でセルがオーバー・プログラミングされたことを示す閾電圧の範囲を象徴するオーバー・プログラミング領域が確立される。
図１５Ａは、３つのオーバー・プログラミング領域を示す。第１オーバー・プログラミング領域は、ＶｏｐＳＰとＶｏｐＡの間の領域を含んでいる。第２オーバー・プログラミング領域は、Ｖｏｐ１０とＶｏｐＢの間の領域を含んでいる。第３オーバー・プログラミング領域は、Ｖｏｐ００とＶｏｐＣの間の領域を含んでいる。
なお、オーバー・プログラミング比較点とオーバー・プログラミングテスト点は、図１５Ａとは異なる値でもよい。
【００６７】
Ｙｕｐｉｎ効果が原因でメモリセルがオーバー・プログラミングされたか否かを確認するための１つの処理では、そのセルの閾電圧が、いずれか１つのオーバー・プログラミング領域内にあるか否かをチェックする。セルの閾電圧が、いずれか１つのオーバー・プログラミング領域内にある場合、そのセルはＹｕｐｉｎ効果が原因でオーバー・プログラミングされたと推定することができる。例えば、セルの閾電圧が、第２オーバー・プログラミング領域にあると判断された場合、区分４６２内にあったはずのセルがＹｕｐｉｎ効果によってオーバー・プログラミングされたと推定される。
図１５Ａは、４つの閾区分（2ビットのデータを保存する）を示すが、本発明の実施には、４つ以上あるいは４つ以下の区分（2ビット以上あるいは2ビット以下のデータ）を利用してもよい。
【００６８】
図１５Ｂは、上述のＹｕｐｉｎ効果が原因で生じるオーバー・プログラミングに対してチェックを行う処理の１つの実施形態のフローチャートを示す。図１５Ｂの処理は、図１４Ａと１４Ｂのステップ９０６，９１０，９５４，９５８のオーバー・プログラミングに対する確認の一部として実行される。
ステップ１００２では、各オーバー・プログラミング領域のエッジで読取操作が実行される。例えば、ＶｏｐＳＰ，ＶｏｐＡ，Ｖｏｐ１０，ＶｏｐＢ，Ｖｏｐ００，ＶｏｐＣで読取操作が実行される。これらの読取操作に基づいて、いずれか１つのオーバー・プログラミング領域内にセルの閾電圧があるか否かを判断する。例えば、Ｖｏｐ１０がワード線に印加された時にメモリセルはターンオンし、ＶｏｐＢがワード線に印加された時にターンオンしない場合、そのセルは第２オーバー・プログラミング領域内にあると推定される。
メモリセルの閾電圧が、いずれか１つのオーバー・プログラミング領域内にある場合（ステップ１００６）、そのセルは隣接するセルの影響（Ｙｕｐｉｎ効果）が原因でオーバー・プログラミングされたと結論づけられる（ステップ１００８）。
ステップ１０１０では、オーバー・プログラミングされたデータが修正される。閾電圧を適当な区分まで下げるために、セルを部分的に消去することができる。また、セルを完全に消去して再び書き込みを行なうこともできる。また、データを別の場所に書き込むこともできる。また、セルがオーバー・プログラミングされたことを示すエラー情報を保存し、オーバー・プログラミングを考慮して以後の読取を行なうこともできる。また、他の適切な処理を実行してよい。
【００６９】
ステップ１００６において、閾電圧がいずれのオーバー・プログラミング領域内にも当てはまらないと判断された場合、オーバー・プログラミング比較点Ｖｏｐ０１について読取操作が実行される。メモリセルの閾電圧がＶｏｐ０１より高い場合（ステップ１０２２）、そのメモリセルはオーバー・プログラミングされたと推測され、処理はステップ１００８に進む。メモリセルの閾電圧がＶｏｐ０１より低い場合（ステップ１０２２）、そのメモリセルはオーバー・プログラミングされていないと推測される（ステップ１０２４）。
【００７０】
図１５Ｃは、Ｙｕｐｉｎ効果が原因で生じるオーバー・プログラミングのチェックを行なう処理の別の実施形態のフローチャートを示す。図１５Ｃの処理は、図１４Ａと１４Ｂのステップ９０６，９１０，９５４，９５８のオーバー・プログラミングの確認の一部として実行することができる。
ステップ１０６０では、読取比較点Ｖｒ１０，Ｖｒ００，Ｖｒ０１のそれぞれで読取操作が実行される。読取操作に基づいて、メモリセルの初期状態の確認が行われる。ステップ１０６２では、公知の手法に基づいてＥＣＣ処理が実行される。ＥＣＣエラーがない場合（ステップ１０６４）、メモリセルはＹｕｐｉｎ効果によってオーバー・プログラミングされなかったと推定される（ステップ１０６６）。ＥＣＣエラーが検知された場合（ステップ１０６４）、そのエラーはＹｕｐｉｎ効果によってメモリセルがオーバー・プログラミングされたことが原因で生じたものだと推定される（ステップ１０７０）。ステップ１０７２では、データが修正される（図１５Ｂのステップ１０１０と同様）。
例えば、ステップ１０６０で行った読取操作によって、閾電圧がＶｒ００より高くＶｒ０１より低いと判断されたものとする。メモリセルは、閾区分４６４にあり、論理データ００を保存していると推定される。ＥＣＣが失敗した場合、メモリセルは閾区分４６２にあり、論理データ１０を保存していると推定される（ただし、メモリセルはオーバー・プログラミングされている）。従って、ステップ１０７２の１つの実施形態では、メモリセルの閾電圧が、閾区分４６２内に含まれるよう修正される。
【００７１】
図１７〜２２は、図１６に対応しており、オーバー・プログラミング検証を実行するための別の実施形態を示す真理値表である。図８と同様に、図１６は、2ビットのデータを保存するメモリセルの閾電圧区分４６０，４６２，４６４，４６６を示す。しかしながら、図１６は、異なるオーバー・プログラミング検証比較点ＶｏｐＳＰ’，Ｖｏｐ１０’，Ｖｏｐ００’，Ｖｏｐ０１’を示す。
比較点ＶｏｐＳＰ’は、閾電圧区分４６０の最高電圧を若干上回る値である。比較点Ｖｏｐ１０’は、閾電圧区分４６２の最高電圧を若干上回る値である。比較点Ｖｏｐ００’は、閾電圧区分４６４の最高電圧を若干上回る値である。比較点Ｖｏｐ０１’は、閾電圧区分４６６の最高電圧を若干上回る値である。
図１６のＶｏｐＳＰ’は図８のＶｏｐＳＰより低く、図１６のＶｏｐ１０’は図８のＶｏｐ１０より低く、図１６のＶｏｐ００’は図８のＶｏｐ００より低く、図１６のＶｏｐ０１’は図８のＶｏｐ０１より低い。
他の実施形態では、比較点ＶｏｐＳＰ’，Ｖｏｐ１０’，Ｖｏｐ００’，Ｖｏｐ０１’は、個々の閾電圧区分より高い他の値が使用されてよい。
【００７２】
図１７は、下側ページのプログラミングの後に、ソフトプログラミングに起因するオーバー・プログラミング検証を実行するための実施形態を説明する。
図１７の真理値表は、以前の下側ページのプログラミングにおいてプログラミングされたデータが、「０」データなのか、あるいは「１」データなのかを示す２つの列を示す。真理値表の２行目（「ＶｏｐＳＰ’で読み取り」）は、オーバー・プログラミングのための検証が行なわれたメモリセルから読取られたデータに対応している。３行目は、第２データラッチ４０４に保存されたデータを示す。４行目は、第１データラッチ４０２に保存されたデータを示す。５行目は、状態１１のオーバー・プログラミング検証の結果を示す。
【００７３】
「１」がプログラミングされた場合（図１７の左側の列）、メモリセルは、状態１１を維持する。「０」がプログラミングされた場合、セルは、状態１０にプログラミングされるべきである。
真理値表の２行目は、メモリセルの制御ゲートにＶｏｐＳＰ’を印加することを含んでいる読取操作の結果を示す。読取られたメモリセルの閾電圧がＶｏｐＳＰ’より高い場合、そのメモリセルはターンオンせず、論理「０」が読取られる。メモリセルの閾電圧がＶｏｐＳＰ’より低い場合、そのメモリセルはターンオンし、論理「１」が読取られる。
メモリセルに論理「１」がプログラミングされることに対応する列では、読取ステップで論理「１」（正常にプログラミングされた）、又は、論理「０」（オーバー・プログラミングされた）が読取られる。セルが状態１０にプログラミングされた場合、プログラミング中の検証ステップで、電圧が少なくともＶｖ１０より高いことが検証されるので、読取ステップは論理「０」を読取る。読取られたデータは第２データラッチ４０４に保存される。第１データラッチ４０２は、以前に下側ページにプログラミングされたデータを保存している。状態機械は、第１データラッチ４０２と第２データラッチ４０４の内容を確認する。第１データラッチ４０２が論理「１」を保存しており、第２データラッチ４０４が論理「０」を保存している場合、オーバー・プログラミングテストは失敗である。即ち、状態機械は、メモリセルがオーバー・プログラミングされたと判断する。
【００７４】
図１８は、下側ページのプログラミングと上側ページのプログラミングの両方が実行された後に、ソフトプログラミングに起因するオーバー・プログラミング検証を実行する実施形態を説明するための真理値表を示す。このようなタスクに対応するためには、下側ページのデータと上側ページのデータを考慮する必要がある。下側ページのプログラミング操作と上側ページのプログラミング操作の両方が既に実行されているために、真理値表は、４つの状態に対応する列を含んでいる。４つの状態とは、１１，１０，００，０１である。
真理値表の２行目は、制御ゲートにＶｏｐＳＰ’を印加して読取られたデータを示す。セルが状態１１を目的としていた場合、読取操作は、セルがオーバー・プログラミングされていなければ「１」をリターンし、オーバー・プログラミングされていたら「０」をリターンする。セルが他の３つの状態のいずれかにある場合は、「０」がリターンされるはずである。プログラミング処理の間に行われた以前の検証ステップが、そのセルの閾電圧が適当な検証点より十分に高いことを保証したからである。
真理値表の３行目は、上述の読取操作の結果を保存している第２データラッチ４０４のコンテンツを示す。4行目は、第３データラッチのコンテンツを示す。第３データラッチは、上述したように、下側ページのデータを保存する。５行目は、状態１１のオーバー・プログラミング検証の結果を示す。
状態機械は、第３データラッチ４０６が論理「１」を保存しているとともに第２データラッチが論理「０」を保存しているか否かを確認する。そのように保存している場合、メモリセルがオーバー・プログラミングされたことを意味するために、オーバー・プログラミングテストは失敗する。そのように保存していなければ、テストはパスする。
【００７５】
別の実施形態では、システムは、以前に第３データラッチに保存されたデータを使用せず、Ｖｒ１０で再度の読取りを実行する。この読取操作は、セルの閾電圧がＶｏｐＳＰ’より高くてＶｒ１０より低いことを確認する。そうであれば、状態機械は、そのメモリセルがオーバー・プログラミングされたと判断する。そうでなければ、状態機械は、メモリセルはオーバー・プログラミングされていないと推定する。
【００７６】
図１９は、セルを状態１０にプログラミングする場合に、そのセルがオーバー・プログラミングされたか否かを検証する処理を説明するための真理値表を示す。図１９に関連する検証処理は、下側ページのプログラミングの後であって上側ページのプログラミングの前に実行される。
真理値表には２つの列があり、一方の列は下側ページに論理「０」がプログラミングされた場合に対応し、他方の列は下側ページに論理「１」がプログラミングされた場合に対応する。２行目は、制御ゲートにＶｏｐ１０’を印加した場合の読取操作から得たデータを示す。メモリセルを状態１１に維持することが目的だった場合、あるいはメモリセルが正常に状態１０にプログラミングされた場合、Ｖｏｐ１０’での読取操作は、メモリセルがターンオンし、論理「１」が報告される。この読取操作の結果は、第２データラッチ４０４に保存される（真理値表の３行目参照）。メモリセルを状態１０にプログラミングすることが目的であったのにそのセルがオーバー・プログラミングされた場合、Ｖｏｐ１０’での読取操作は、メモリセルはターンオンせず、それが原因で論理「０」が報告される。この読取操作の結果は、第１データラッチ４０２に保存される（４行目を参照）。
論理「１」がプログラミングされた場合（例えばプログラミングが実行されなかった場合）、第２データラッチ４０４と第１データラッチ４０２は両方とも論理「１」を保存し、テストはパスする（５行目を参照）。
論理「０」が適切にプログラミングされた場合、第１データラッチ４０４は論理「０」を保存し、第２データラッチは論理「１」を保存し、テストはパスする。第２データラッチ４０４が論理「０」であって第１データラッチ４０２が論理「１」の場合は、セルがオーバー・プログラミングされたことを意味するために、テストは失敗である。
【００７７】
図２０は、下側ページと上側ページの両方がプログラミングされた後に、状態１０のオーバー・プログラミング検証を実行する処理を説明するための真理値表を示す。両方のページがプログラミングされたために４つの列が存在し、各列はセルがプログラミングされる１つの状態に対応している。４つの状態とは、１１，１０，００，０１である。
２行目は、制御ゲートにＶｏｐ１０’を印加した読取操作から得られたデータを示す。この読取操作の結果は、第２データラッチ４０４（３行目）に保存される。メモリセルが状態１１の維持される場合、あるいは、状態１０に正常にプログラミングされた場合、メモリセルはターンオンして論理「１」が読取られる。メモリセルを状態１０にプログラミングすることが目的だったことにもかかわらず、そのセルをオーバー・プログラミングしてしまった場合、セルはターンオンせず、論理「０」がリターンされる。上側ページのプログラミングの間にセルが状態００又は状態０１にプログラミングされた場合、セルはターンオンせず、論理「０」が読取られる。
第１データラッチ４０２は、直前に実行された上側ページのプログラミング操作から得られたデータを保存する（４行目）。例えば、セルが状態１１又は１０の場合、第１データラッチは論理「１」を保存する。セルが状態００又は０１の場合、第１データラッチは論理「０」を保存する。その後、システムはテストを実行し、第１データラッチ４０２が論理「１」を保存していて第２データラッチ４０４が論理「０」を保存していることを確認する。もしそうであれば、セルがオーバー・プログラミングされたことを意味するために、検証処理は失敗である。そうでなければ、検証処理はパスする（５行目）。
【００７８】
図２１は、状態００のオーバー・プログラミング検証を実行する処理を説明するための真理値表を示す。状態００の検証処理は、下側ページと上側ページの両方がプログラミングされた後に実行される。従って、図２１の真理値表は４つの列を示す（各列はセルがプログラミングされる１つの状態に対応する）。
まず、制御ゲートにＶｏｐ００’を印加することを含む読取操作が実行される（真理値表の２行目を参照）。メモリセルが正常に状態１１，１０，００にプログラミングされた場合、メモリセルはターンオンし、論理「１」がリターンされる。メモリセルが状態０１にプログラミングされた場合、セルはターンオンせず、論理「０」がリターンされる。メモリセルを状態００にプログラミングすることが目的だったことにもかかわらずセルをオーバー・プログラミングしてしまった場合、セルはターンオンせず、論理「０」がリターンされる。この読取操作からリターンされたデータは、第２データラッチ４０４に保存される（真理値表の３行目参照）。
４行目は、第３データラッチ４０２のコンテンツを示す。第３データラッチは、上述したように、下側ページのデータを保存する。５行目は、状態００に対するオーバー・プログラミング検証の結果を示す。
状態機械は、第３データラッチ４０６が論理「０」を保存しているとともに第２データラッチ４０４が論理「０」を保存しているか否かを判断するためにチェックする。そのように保存されていれば、それはメモリセルがオーバー・プログラミングされたことを意味するために、オーバー・プログラミングテストは失敗である。そうでなければ、テストはパスする。
【００７９】
別の実施形態では、システムは、以前に第３データラッチに保存されたデータを使用せずに、Ｖｒ０１で再度の読取りを実行する。この読取操作は、セルの閾電圧がＶｏｐ００’より高くてＶｒ０１より低いことを確認する。もしそうであれば、状態機械は、そのメモリセルがオーバー・プログラミングされたと判断する。そうでなければ、状態機械は、メモリセルはオーバー・プログラミングされていないと推定する。
【００８０】
図２２は、状態０１のオーバー・プログラミング検証を実行する処理を説明するための真理値表を示す。上側ページがプログラミングされた後に実行される処理であるために、４つの列が存在し、各列はセルがプログラミングされる１つの状態に対応する。
図２２の２行目は、制御ゲートにＶｏｐ０１’を印加することを含む読取操作から得られた結果を示す。この読取操作から得られたデータは、第２データラッチ４０４に保存される（３行目）。この読取操作から得られたデータは、セルの状態を問わずに必ず論理「１」であるべきである。従って、論理「０」がリターンされた場合、検証ステップは失敗である。論理「０」がリターンされなかった場合、検証ステップはパスする（４行目）。
【００８１】
図９のフローチャートでは、下側ページのプログラミング操作が実行された場合に、ソフトプログラミング検証と状態１０のオーバー・プログラミング検証が実行される。さらに、上側ページのプログラミング操作が実行された場合に、状態００のオーバー・プログラミング検証と状態０１のオーバー・プログラミング検証が実行される。この手法は、図１７，１９，２１，２２を用いて説明した処理において利用することができる。
別の手法では、下側ページと上側ページの両方が書き込まれた後に、図１８，２０，２１，２２の真理値表を用いて説明した処理を用いて、全てのオーバー・プログラミング検証を実行することができる。
さらに別の手法では、下側ページのプログラミング処理が実行された後に、図１７を用いて説明した検証処理を実行することができる。上側ページがプログラミングされた時に、システムは、図２０，２１，２２の真理値表を用いて、状態１０，００，０１のオーバー・プログラミング検証を実行することもできる。
【００８２】
上記の例は、ＮＡＮＤタイプのフラッシュメモリに関するものである。しかしながら、本発明の原理は、他のタイプのフラッシュメモリや他のタイプの非揮発性メモリに対しても適用できる。本発明の原理は、現存するものに対してだけでなく、今後に発達する新しい技術に対しても使用される。
【００８３】
本発明の上記の詳細な説明は、図解と説明を目的に提供している。本発明を枯渇させる意図はないし、開示された通りのものに制限する意図もない。上述の教示に照らせば、様々な変更が可能である。記載した実施形態は、本発明の原理とその実用的な応用を最適に説明し、それにより当業者が、特定の使用に適応する様々な変更および実施形態を活用できるように選ばれたものである。本発明の技術的範囲は、本書に添付された請求項によって定義される。
【図面の簡単な説明】
【００８４】
【図１】ＮＡＮＤストリングの平面図を示す。
【図２】図１のＮＡＮＤストリングの等価回路図を示す。
【図３】図１のＮＡＮＤストリングの断面図を示す。
【図４】３つのＮＡＮＤストリングの回路図を示す。
【図５】本発明の様々な態様が実施される非揮発性メモリシステムの１つの実施形態のブロック図を示す。
【図６】メモリアレイの構成の例を示す。
【図７】列制御回路の一部を示す。
【図８】メモリセルの閾区分を示し、マルチ状態メモリセルをプログラミングする技術の一例を示す。
【図９】メモリアレイをプログラミングする処理の１つの実施形態のフローチャートを示す。
【図１０】オーバー・プログラミングの検知を実行するための処理の１つの実施形態のフローチャートを示す。
【図１１】オーバー・プログラミングの検知を実行するための処理の１つの実施形態のフローチャートを示す。
【図１２】オーバー・プログラミングの検知を実行するための処理の１つの実施形態のフローチャートを示す。
【図１３】オーバー・プログラミングの検知を実行するための処理の１つの実施形態のフローチャートを示す。
【図１４Ａ】プログラミングとオーバー・プログラミングの検知を実行するための処理の１つの実施形態のフローチャートを示す。
【図１４Ｂ】プログラミングとオーバー・プログラミングの検知を実行するための処理の他の実施形態のフローチャートを示す。
【図１５Ａ】メモリの閾区分を示す。
【図１５Ｂ】オーバー・プログラミングの検知を実行するための処理の１つの実施形態のフローチャートを示す。
【図１５Ｃ】オーバー・プログラミングの検知を実行するための処理の他の実施形態のフローチャートを示す。
【図１６】オーバー・プログラミングの検知を実行するためのメモリの閾区分を比較点の変形例とともに示す。
【図１７】オーバー・プログラミングの検知を実行するための他の実施形態に対応する真理値表を示す。
【図１８】オーバー・プログラミングの検知を実行するための他の実施形態に対応する真理値表を示す。
【図１９】オーバー・プログラミングの検知を実行するための他の実施形態に対応する真理値表を示す。
【図２０】オーバー・プログラミングの検知を実行するための他の実施形態に対応する真理値表を示す。
【図２１】オーバー・プログラミングの検知を実行するための他の実施形態に対応する真理値表を示す。
【図２２】オーバー・プログラミングの検知を実行するための他の実施形態に対応する真理値表を示す。
【図１】
2007500411.tif 000003
【図２】
2007500411.tif 000004
【図３】
2007500411.tif 000005
【図４】
2007500411.tif 000006
【図５】
2007500411.tif 000007
【図６】
2007500411.tif 000008
【図７】
2007500411.tif 000009
【図８】
2007500411.tif 000010
【図９】
2007500411.tif 000011
【図１０】
2007500411.tif 000012
【図１１】
2007500411.tif 000013
【図１２】
2007500411.tif 000014
【図１３】
2007500411.tif 000015
【図１４Ａ】
2007500411.tif 000016
【図１４Ｂ】
2007500411.tif 000017
【図１５Ａ】
2007500411.tif 000018
【図１５Ｂ】
2007500411.tif 000019
【図１５Ｃ】
2007500411.tif 000020
【図１６】
2007500411.tif 000021
【図１７】
2007500411.tif 000022
【図１８】
2007500411.tif 000023
【図１９】
2007500411.tif 000024
【図２０】
2007500411.tif 000025
【図２１】
2007500411.tif 000026
【図２２】
2007500411.tif 000027
【国際調査報告】
2007500411.tif 000028
2007500411.tif 000029