隣接するメモリセルのプログラミングの後にオーバー・プログラミングされたメモリセルを検出する技術
非揮発性半導体メモリシステム(又は他のタイプのメモリシステム)において、メモリセルは、その閾電圧を変更することによってプログラミングされる。システム内の様々なメモリセルに対するプログラミングのタイミングが異なることが原因で、いくつかのメモリセルは、オーバー・プログラミングされてしまう可能性がある。即ち、例えば、セルの閾電圧が、目的とされた値、又は、目的とされた範囲から外れてしまう可能性がある。本発明は、セルに対するプログラミングが原因で、それに隣接する行のメモリセルがオーバー・プログラミングされたか否かを判断することを含んでいる。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、Jian Chen、Yan Li、及びJeffrey W. Lutzeによって本出願と同日に出願された「DETECTING OVER PROGRAMMED MEMORY」と題する特許出願に関連する。この内容は、本明細書に組み込まれる。
本発明は、一般的にメモリデバイスのために技術に関し、特に、メモリデバイスがオーバー・プログラミングされたか否かを検知する技術に関する。
【背景技術】
【0002】
半導体メモリデバイスは、様々な電子装置に利用される。例えば、非揮発性半導体メモリは、携帯電話、デジタルカメラ、パーソナルデジタルアシスタント、モバイルコンピュータデバイス、非モバイルコンピュータデバイス等に利用されている。EEPROMとフラッシュメモリは、最もポピュラーな非揮発性半導体メモリである。
【0003】
典型的なEEPROMとフラッシュメモリは、浮遊ゲートを有するメモリセルを利用する。浮遊ゲートは、半導体基板のチャネル領域から絶縁された状態でそのチャネル領域上に配置されている。浮遊ゲートは、ソース領域とドレイン領域の間に配置されている。制御ゲートは、浮遊ゲートから絶縁された状態でその浮遊ゲート上に配置されている。メモリの閾電圧は、浮遊ゲートに帯電している電荷量によってコントロールされる。即ち、メモリセルをターンオンしてソースとドレインの間を導通する前に制御ゲートに印加されるべき最小限の電圧量は、浮遊ゲートの電荷レベルによってコントロールされる。
【0004】
EEPROMとフラッシュメモリデバイスの中には、2つの電荷範囲を保存するために使用される浮遊ゲートを備えるものがある。この場合、メモリセルは、2つの状態の間でプログラム又は消去されることが可能である。EEPROM又はフラッシュメモリデバイスをプログラミングする際に、制御ゲートにプログラミング電圧が印加され、ビット線が接地される。Pウェルからの電子は、浮遊ゲートに注入される。浮遊ゲートに電子が溜まると、浮遊ゲートは負に帯電し、メモリセルの閾電圧が上がる。
【0005】
一般的に、制御ゲートに印加されるプログラミング電圧は、連続パルスとして印加される。各パルスの大きさは、所定のステップサイズずつ増加する。パルスとパルスの間の期間に検証操作が行われる。即ち、並列にプログラミングされている各セルのプログラミングレベルは各プログラミングパルスの間に読み取られ、その読み取ったレベルがプログラミングされるべき検証レベル以上であるか否かが判断される。プログラミングを検証する1つの手法では、特定の比較点で導通性をテストする。
【0006】
上記の「導通」は、デバイスのチャネルの電流の流れに対応し、デバイスのON状態を意味する。OFF状態は、ソースとドレインの間のチャネルに電流が流れていないことを意味する。一般的に、フラッシュメモリセルは、制御ゲートに印加された電圧が閾電圧より大きければ導通し、制御ゲートに印加された電圧が閾電圧より低ければ導通しない。セルの閾電圧を適当な値に設定することによって、特定の印加電圧に対して導通する(あるいは導通しない)セルをつくりだすことができる。特定の印加電圧でセルが電流を導通するか否かを判断することによって、セルの状態が特定される。
【0007】
マルチビットあるいはマルチ状態フラッシュメモリセルは、デバイス内の複数の個別の閾電圧の範囲を指定することによってつくりだされる。指定された各個別閾電圧範囲は、データビット群の所定の値に相当する。メモリセルにプログラミングされるデータとセルの閾電圧レベルの関係は、セルに対して採用されるデータコード化スキームに依存する。例えば、米国特許第6222762号と、2003年6月13日に出願された米国特許出願第10/461244号(Tracking Cells For A Memory System)は、様々なデータコード化スキームを開示している。これらの内容は、本明細書に組み込まれる。
データを適切に保存するためには、マルチ状態メモリセルの複数の閾電圧レベル範囲の間隔を十分にあけて、メモリセルのレベルを明確な作法でプログラミング又は消去することが要求される。
【0008】
多くの場合、複数のメモリセルを並列にプログラミングする必要がある。これは、例えば、社会的に望まれている「短時間でプログラミングできるメモリシステム」を実現するためである。しかしながら、複数のメモリセルが同時にプログラミングされると問題が生じる。メモリセルを備える半導体装置の構造及び操作の些細な違いによって、各メモリセルの特徴がかわるからである。通常、異なるセルに対するプログラミングタイミングに差が生じる。この結果、あるメモリセルが別のメモリセルよりも速くプログラミングされてしまい、いくつかのメモリセルが意図した状態とは異なる状態にプログラミングされてしまう可能性が生じる。複数のメモリセルが他より速くプログラミングされてしまうと、保存されるべきデータが意図された閾電圧範囲を超えてエラーが生じる。
【0009】
通常、データがプログラミングされる場合、デバイスの検証処理では、メモリセルの閾電圧が最低レベルよりも高いことを保証する。しかしながら、デバイスは、閾電圧の上限を保証しない。いくつかのデバイスは、ソフトプログラミング処理(下記参照)が閾電圧を大きくし過ぎていないかをチェックする。しかしながら、これらのデバイスは、標準のプログラミング処理が閾電圧を大きくし過ぎてしないかはチェックしない。従って、閾電圧が所望の状態の範囲を超えるオーバー・プログラミングが、認識されないままに発生し得る。オーバー・プログラミングはメモリセルに誤ったデータを保存させてしまうことになるので、その後の読取操作でエラーが生じる。オーバー・プログラミングに関するさらなる情報は、米国特許第5321699号、同第5386422号、同第5469444号、同第6134140号、及び同第5602789号に記載されている。
【発明の開示】
【発明が解決しようとする課題】
【0010】
多くのメモリシステムは、後に行われる読取操作中にエラー訂正コード(ECC)を用いて、オーバー・プログラミングに対処する。デバイスからデータが読取られる時に、エラーが起こったか否かを確認するためにECCが使用される。エラーが些細であれば、ECCを用いてエラーを訂正することができる。しかしながら、オーバー・プログラミングに起因したエラーを訂正するためにECCを用いると、少なくとも3つの問題が生じる。
まず、ECC処理が長い処理時間を必要とするため、メモリシステムの操作の速度が極端に下がる。
また、ECCを妥当な時間内で実行するためには、付加的な専用ハードウェアが要求される。このような専用ハードウェアをメモリシステムチップ内に配置するためには、多くの空間が必要になる。より小さなホストデバイスにフィットする小さなシステムを実現するために、メモリシステムのサイズを小さくすることが現在のトレンドである。従って、新しいメモリのデザインは、ECCのために使用されるスペースを減らす傾向がある。
また、複数のエラーがある場合、ECCではそれらのエラーの全てを訂正できない可能性がある。
従って、メモリセルのオーバー・プログラミングを検知するためのより優れた手法が必要とされている。
【課題を解決するための手段】
【0011】
本発明は、概略的に言うと、メモリデバイスがオーバー・プログラミングされたか否かを検知するための技術に関する。1つ又は複数のメモリデバイスがオーバー・プログラミングされたと検知されると、システムは、データを訂正するための公知の手法の1つを用いて事態を改善することができる。例えば、システムは、同じメモリデバイス又は別のメモリデバイスにデータを再び書き込むことができる。オーバー・プログラミングの検知は、オーバー・プログラミングに起因したエラーがデータにないことを保証し、結果的にECCの必要性を軽減することができる。
【0012】
本発明の1つの実施形態は、複数の論理ページを用いるメモリシステムにおけるオーバー・プログラミングを検知する方法を含んでいる。この方法は、特定の論理ページのためのデータを第1マルチ状態記憶素子にプログラミングすることと、異なる論理ページからのデータを利用して第1マルチ状態記憶素子がオーバー・プログラミングされたか否かを判断することを含んでいる。
1つの実施例では、システムは、第1マルチ状態記憶素子の閾電圧が比較値より大きいか否かを判断する。第1マルチ状態記憶素子の閾電圧が比較値より大きく、異なる論理ページのためのデータが、第1マルチ状態記憶素子の閾電圧がその比較値を超えるべきではないと示唆した場合に、システムは第1マルチ状態記憶素子がオーバー・プログラミングされたと結論づける。オーバー・プログラミングの検知は、両方の論理ページがプログラミングされた後に実行される。
【0013】
本発明の他の実施形態は、第1制御線に関連する1つ又は複数のマルチ状態記憶素子にプログラミングを実行し、その後に、第2制御線に関連する1つ又は複数のマルチ状態記憶素子にプログラミングを実行することを含んでいる。第2制御線に関連する1つ又は複数のマルチ状態記憶素子にプログラミングを実行した後に、第1制御線に関連する1つ又は複数のマルチ状態記憶素子がオーバー・プログラミングされたか否かの判断が実行される。制御線は、ワード線、ビット線、又は他の種類の制御線でもよい。技術に応じて制御線の種類が決まる。
【0014】
1つの実施形態では、1つ又は複数のオーバー・プログラミング範囲のエッジについて、第1制御線に関連するマルチ状態記憶素子に対して読取操作を実行することによって、オーバー・プログラミングの判断が行なわれる。第1制御線に関連するマルチ状態記憶素子の閾電圧がいずれかのオーバー・プログラミング範囲に含まれる場合に、第1制御線に関連するマルチ状態記憶素子がオーバー・プログラミングされたと判断される。
別の実施形態では、1つ又は複数の読取比較点について、第1制御線に関連するマルチ状態記憶素子に対して読取操作を実行することによって、オーバー・プログラミングの判断が行なわれる。これにより、第1制御線に関連するマルチ状態記憶素子の初期状態が判断される。第1制御線に関連するマルチ状態記憶素子と初期状態のためのエラー訂正コード処理が実行される。マルチ状態記憶素子のためのエラー訂正コード処理が失敗した場合に、そのマルチ状態記憶素子がオーバー・プログラミングされたと判断される。
【0015】
さらに別の実施形態は、第1マルチ状態記憶素子と第2マルチ状態記憶素子をプログラミングすることを含んでいる。このシステムは、第2マルチ状態記憶素子をプログラミングした後に、第1マルチ状態記憶素子がオーバー・プログラミングされたか否かを判断する。
【0016】
1つの実施形態のシステムは、記憶素子のアレイと管理回路を含む。管理回路は、専用ハードウェアを含んでいてもよい。また管理回路は、1つ又は複数の記憶装置(例えば非揮発性メモリ(例えばフラッシュメモリ、EEPROM等))や他のメモリデバイスに保存されたソフトウェアによってプログラミングされるハードウェアを含んでよい。
1つの実施形態では、管理回路は、制御装置と状態機械を含む。別の実施形態では、管理回路は、状態機械のみを含み、制御装置を含まない。管理回路は、上記した工程を実行することができる。
1つの実施形態では、記憶素子がオーバー・プログラミングされたか否かを確認するための処理は、状態機械によって実行される。実施例では、状態機械は、記憶素子のアレイと同じ集積回路チップ上に配置される。
【0017】
本発明の目的及び利点は、図面とともに下記の実施形態を参照することによって、より明確になるものと思われる。
【発明を実施するための最良の形態】
【0018】
フラッシュメモリシステムの一例は、2つの選択ゲートの間に複数のトランジスタが直列に配列されたNAND構造を利用する。直列に配列されたトランジスタ群と選択ゲート群は、NANDストリングと呼ばれる。
図1は、1つのNANDストリングの平面図を示す。図2は、NANDストリングの等価回路を示す。図1と図2のNANDストリングは、第1選択ゲート120と、第2選択ゲート122と、それらの間で直列に配列された4つのトランジスタ100,102,104,106を含む。
選択ゲート120は、NANDストリングをビット線126に接続する。選択ゲート122は、NANDストリングをソース線128に接続する。選択ゲート120は、制御ゲート120CGに適当な電圧を印加することによって制御される。選択ゲート122は、制御ゲート122CGに適当な電圧を印加することによって制御される。
各トランジスタ100,102,104,106は、制御ゲートと浮遊ゲートを有する。トランジスタ100は、制御ゲート100CGと浮遊ゲート100FGを有する。トランジスタ102は、制御ゲート102CGと浮遊ゲート102FGを有する。トランジスタ104は、制御ゲート104CGと浮遊ゲート104FGを有する。トランジスタ106は、制御ゲート106CGと浮遊ゲート106FGを有する。
制御ゲート100CGはワード線WL3に接続されており、制御ゲート102CGはワード線WL2に接続されており、制御ゲート104CGはワード線WL1に接続されており、制御ゲート106CGはワード線WL0に接続されている。
【0019】
図3は、上記のNANDストリングの断面図を示す。図3に示すように、NANDストリングの各トランジスタ(セル又はメモリセルとも呼ばれる)は、Pウェル領域140に形成されている。各トランジスタは、制御ゲート(100CG,102CG,104CG,106CG)と浮遊ゲート(100FG,102FG,104FG,106FG)を含む積層ゲート構造を有する。各浮遊ゲートは、酸化膜上のPウェルの表面に形成される。制御ゲートは浮遊ゲートの上方に位置し、それらの間には制御ゲートと浮遊ゲートを分離する酸化膜が存在する。図3では、トランジスタ120,122のための制御ゲート及び浮遊ゲートを示しているように見える。しかしながら、トランジスタ120及び122においては、制御ゲートと浮遊ゲートは互いに接続されている。
メモリセル群の制御ゲート群(100,102,104,106)は、ワード線を構成する。N+拡散層130,132,134,136,138は、隣接するセルによって共有される。これにより、各セルが互いに直列に接続されたNANDストリングが構成される。これらのN+拡散層は、各セルのソース及びドレインを構成する。例えば、N+拡散層130は、トランジスタ122のドレインであるとともに、トランジスタ106のソースである。N+拡散層132は、トランジスタ106のドレインであるとともに、トランジスタ104のソースである。N+拡散層134は、トランジスタ104のドレインであるとともに、トランジスタ102のソースである。N+拡散層136は、トランジスタ102のドレインであるとともに、トランジスタ100のソースである。N+拡散層138は、トランジスタ100のドレインであるとともに、トランジスタ120のソースである。N+拡散層126は、NANDストリングのビット線に接続される。N+拡散層128は、複数のNANDストリングの共有ソース線に接続される。
【0020】
図1〜3は、NANDストリングに含まれるメモリセルを4個示す。しかしながら、この4つのトランジスタの使用は例に過ぎない。NANDストリングは、4個より多いメモリセルを含んでいてもよいし、4個より少ないメモリセルを含んでもよい。例えば、NANDストリングは、8個のメモリセルを含むことができるし、16個のメモリセルを含むこともできる。32個のメモリセルを含むこともできる。NANDストリングに含まれるメモリセルの数は、本明細書の説明によって限定されることはない。
【0021】
NAND構造を用いるフラッシュメモリシステムに対する通常のアーキテクチャは、複数のNANDストリングを含む。例えば、図4は、多数のNANDストリングを有するメモリアレイの中の3つのNANDストリング202,204,206を示す。図4の各NANDストリングは、2個の選択トランジスタと4個のメモリセルを含む。例えば、NANDセル202は、選択トランジスタ220,230と、メモリセル222,224,226,228を有する。NANDセル204は、選択トランジスタ240,250と、メモリセル242,244,246,248を有する。各ストリングは、各自の選択トランジスタ(例えば選択トランジスタ230と選択トランジスタ250)によってソース線に接続される。
選択線SGSは、ソース側の選択ゲートを制御するために利用される。各NANDストリングは、選択線SGDによって制御される選択トランジスタ220,240等によって各自のビット線に接続される。他の実施形態では、選択線は必ずしも共有されていなくてよい。
ワード線WL3は、メモリセル222の制御ゲートとメモリセル242の制御ゲートに接続される。ワード線WL2は、メモリセル224の制御ゲートとメモリセル244の制御ゲートとメモリセル250の制御ゲートに接続される。ワード線WL1は、メモリセル226の制御ゲートとメモリセル246の制御ゲートに接続される。ワード線WL0は、メモリセル228の制御ゲートとメモリセル248の制御ゲートに接続される。
図示されるように、各ビット線とそのNANDストリングは、メモリセルアレイの列を構成する。ワード線(WL3,WL2,WL1,WL0)は、アレイの行を構成する。
【0022】
各メモリセルは、データ(アナログあるいはデジタル)を保存することができる。デジタルデータの1ビットを保存する場合、メモリセルの可能な閾電圧の範囲は、2つの範囲に分けられる。一方の範囲は論理データ「1」が割り当てられ、他方の範囲は論理データ「0」が割り当てられる。
NANDタイプのフラッシュメモリの一例では、メモリセルが消去された後の閾電圧は負であり、論理「1」と定義される。プログラミング操作後の閾電圧は正であり、論理「0」と定義される。閾電圧が負の時に読取りが行なわれると、メモリセルはターンオンし、論理「1」が保存されていることを示す。閾電圧が正の時に読取が行なわれると、メモリセルはターンオンせず、論理「0」が保存されていることを示す。
メモリセルは、複数レベルの情報(例えば複数ビットのデジタルデータ)を保存することもできる。複数レベルのデータを保存する場合、可能な閾電圧の範囲はデータのレベルの数に分けられる。例えば、4つのレベルの情報が保存される場合、閾電圧は4つの範囲に分けられ、その4つの範囲はデータ値「11」、「10」、「01」、「00」が割り当てられる。NANDタイプのメモリの一例では、消去操作後の閾電圧は負であり、「11」と定義される。状態「10」、「01」、「00」には、正の閾電圧が使用される。
【0023】
NANDタイプのフラッシュメモリと操作の例は、米国特許第5570315号、同第5774397号、同第6046935号、同第6456528号、及び米国特許出願第09/893277号(公報第2003/0002348号)に記載されている。これらの内容は、本明細書に組み込まれる。
他のタイプのフラッシュメモリデバイスも本発明を利用することができる。例えば、米国特許第5095344号、同第5172338号、同第5890192号、及び同第6151248号は、NORタイプのフラッシュメモリを開示する。これらの内容は、本明細書に組み込まれる。また、米国特許第6151248号は、フラッシュメモリの他の例が記載されている。この内容は、本明細書に組み込まれる。
【0024】
図5は、本発明を実施するために使用されるフラッシュメモリシステムの1つの実施形態のブロック図を示す。メモリセル302は、列制御回路304、行制御回路306、Cソース制御回路310、及びPウェル制御回路308によって制御される。
列制御回路304は、メモリセルアレイ302のビット線に接続されている。列制御回路304は、メモリセルに保存されたデータを読取る。また、プログラミング操作中のメモリセルの状態を判断する。また、ビット線の電位レベルを制御してプログラミングを促進あるいは禁止する。
行制御回路306は、ワード線群の中から1つを選択するために各ワード線に接続されている。行制御回路306は、読取電圧、プログラミング電圧、及び消去電圧を印加することができる。
Cソース制御回路310は、メモリセルに接続された共有ソース線(図6では「Cソース」と称する)を制御する。
Pウェル制御回路308は、Pウェル電圧を制御する。
【0025】
メモリセルに保存されているデータは、列制御回路304に読取られ、データ入出力バッファ312を介して外部I/O線に出力される。メモリセルに保存されるプログラミングデータは、外部I/O線を介してデータ入出力バッファ312に入力され、列制御回路304に転送される。外部I/O線は、制御装置318に接続されている。
【0026】
フラッシュメモリデバイスを制御するための命令データは、制御装置318に入力される。命令データは、どの操作がリクエストされているのかをフラッシュメモリに伝える。入力命令は、状態機械316に転送される。状態機械316は、列制御回路304、行制御回路306、Cソース制御回路310、Pウェル制御回路308、及びデータ入出力バッファ312を制御する。状態機械316は、フラッシュメモリのステータスデータ(READY/BUSYやPASS/FAIL等)を出力することもできる。
【0027】
制御装置318は、パソコン、デジタルカメラ、パーソナルデジタルアシスタント等のホストシステムに接続されている(あるいは接続可能である)。制御装置318は、ホストから命令やデータを受信したり、ホストにデータやステータス情報を提供したりするために、ホストと通信している。制御装置318は、ホストからの命令を命令信号に変換する。命令信号は、状態機械316と通信している命令装置314によって受信可能及び実行可能な信号である。通常、制御装置318は、メモリアレイから読取られたりメモリアレイに書き込まれたりするユーザデータのためのバッファメモリを含んでいる。
【0028】
メモリシステムの典型的な例は、制御装置318を含む1つの集積回路と、1つ又は複数の集積回路チップを有する。各集積回路チップは、メモリアレイと、それに関連する制御回路、入出力回路、及び状態機械回路を含んでいる。システムのメモリアレイ群と制御回路群を1つ又は複数の集積回路チップに統合することが近年のトレンドである。
メモリシステムは、ホストシステムの一部として埋め込まれてもよい。あるいは、メモリシステムは、ホストシステムにリムーバブルに差し入れできるメモリカード(又は他のパッケージ)に含まれていてもよい。このようなリムーバブルカードは、メモリシステム全体(例えば制御装置を含む)を含んでいてもよい。あるいは、メモリアレイとそのメモリアレイに関連する周辺回路のみを含んでもよい。従って、制御装置は、ホストに埋め込まれていてもよいし、リムーバブルメモリシステムに含まれていてもよい。
【0029】
図6を参照して、メモリセルアレイ302の構造の例を説明する。一例として、1024個のブロックに区分けされたNANDフラッシュEEPROMについて説明する。
1つのブロックに保存されたデータは同時に消去される。1つの実施形態では、1つのブロックは、同時に消去できるセルの最小単位である。この例では、各ブロックが、偶数列と奇数列に分けられた8512個の列を有する。ビット線は、偶数ビット線(BLe)と奇数ビット線(BLo)に分けられる。
図6は、4個のメモリセルを直列に接続することによって構成されたNANDストリングを示す。各NANDストリングに4個のセルが含まれているように示されているが、4個以上あるいは4個以下にしてもよい。NANDストリングの一端は、第1選択トランジスタSGDを介して対応するビット線に接続されている。他端は、第2選択トランジスタSGSを介してCソースに接続されている。
【0030】
読取およびプログラミング操作の間に、4256個のメモリセルが同時に選択される。選択されたメモリセル群は、同じワード線と同じ種類のビット線(例えば偶数のビット線)を有する。従って、532バイトのデータが同時に読取又はプログラミングされる。同時に読取又はプログラミングされた532バイトのデータは、1つの論理ページを構成する。従って、1つのブロックは、少なくとも8つの論理ページ(4つのワード線と奇数又は偶数の組合せ)を保存することができる。各メモリセルが2ビットのデータ(例えばマルチレベルセル)を保存する場合、1つのブロックは16ページを保存する。別のサイズのブロックやページについても、本発明を適用することができる。
【0031】
Pウェルを消去電圧(例えば20V)まで上げるとともに選択されたブロックのワード線を接地することによって、メモリセルが消去される。ソース線とビット線は浮遊している。消去は、メモリアレイの全体、個々のブロック、又は他の単位において実行することができる。電子は、浮遊ゲートからPウェル領域に移動し、閾電圧は負になる。
【0032】
読取検証操作では、トランジスタをパスゲートとして操作するために、選択ゲート(SGDとSGS)と選択されていないワード線(例えばWL0,WL1,WL3)が読取パス電圧(例えば4.5V)まで上げられる。選択されたワード線(例えばWL2)の電圧レベルは、関連しているメモリセルの閾電圧がそのレベルに到達しているか否かを確認するために、それぞれの読取検証操作に対して特定される。例えば、2レベルのメモリセルに対する読取操作では、閾電圧が0Vより高いか否かを判断するために、選択されたワード線WL2を接地してもよい。検証操作では、選択されたワード線WL2を例えば2.4Vに接続する。これにより、閾電圧が少なくとも2.4Vに達したか否かが検証される。
ソースとPウェルは0Vである。選択されたビット線(BLe)は、例えば0.7Vのレベルに予備チャージされる。閾電圧が読取レベル又は検証レベルよりも大きい場合、非導電メモリセルになるために、関連するビット線(BLe)の電位レベルは高レベルに維持される。一方において、閾電圧が読取レベル又は検証レベルよりも小さい場合、導電性メモリセル(M)になるために、関連しているビット線(BLe)の電位レベルは、例えば0.5V以下という低レベルに下がる。メモリセルの状態は、ビット線に接続されているセンス増幅器によって検知される。メモリセルが消去されるか又はプログラミングされるかは、浮遊ゲートに負電荷が帯電しているか否かに依存する。例えば、浮遊ゲートに負電荷が帯電している場合、閾電圧は上昇し、トランジスタは促進モードになることができる。
上記した消去、読取、及び検証操作は、この技術分野における公知のテクニックに基づいて実行される。従って、上記の各説明は、当業者が変更することができる。
【0033】
図7は、図5の列制御回路304の一部を示す。ビット線の各ペア(例えばBLeとBLo)は、センス増幅器に接続される。このセンス増幅器は、3つのデータラッチに接続されている。即ち、第1データラッチ402と第2データラッチ404と第3データラッチ406に接続されている。3つのデータラッチのそれぞれは、1ビットのデータを保存することができる。
センス増幅器は、読取操作又は検証操作中に選択されたビット線の電位レベルを検知し、検地したデータを二値データとして保存し、プログラミング操作中にビット線電圧を制御する。センス増幅器は、「evenBL」と「oddBL」の信号のいずれかを選択することによって、選択されたビット線に選択的に接続される。
データラッチ402,404,406は、読取データを出力したりプログラミングデータを保存したりするために、I/O線408に接続されている。I/O線408は、図5のデータ入出力バッファ312に接続されている。データラッチ402,404,406は、ステータス情報を入出力するために、ステータス線410にも接続されている。この実施形態では、1つのビット線のペア(偶数と奇数)に対して、センス増幅器、第1データラッチ402、第2データラッチ404、及び第3データラッチ406が備えられている。
【0034】
図8は、2ビットのデータ(例えば4つのデータ状態)を保存するメモリセルの閾電圧の区分を示す。区分460は、消去状態(「11」を保存している状態)のセルの閾電圧の区分を示す。このセルは、負の閾電圧レベルを持っている。区分462は、「10」を保存しているセルの閾電圧の区分を示す。区分464は「00」を保存しているセルの閾電圧の区分を示す。区分466は、「01」を保存しているセルの閾電圧の区分を示す。
2ビットは単一のメモリセルに保存され、この例では、各ビットは異なる論理ページの一部である。四角内に示すビットは、下側ページに対応する。丸内に示すビットは上側ページに対応する。1つの実施形態では、これらの論理状態は、グレイコードオリエンテーション(11、10、00、01)を利用して物理的状態に割り当てられる。その結果、浮遊ゲートの閾電圧が誤ってシフトしても、1ビットのみが影響を受ける。
なお、図8では4つの状態を示しているが、本発明は4つ以上あるいは4つ以下の状態を利用してもよい。
【0035】
狭い区分は幅広い読取マージン(状態間の距離)をもたらすために、信頼性を高めるためには各区分を狭くする方が好ましい。「Fast and Accurate Programming Method for Multi-level NAND EEPROMs, pp129-130, Digest of 1995 Symposium on VLSI Technology,")」によると、原理上、区分を幅0.2Vに制限するためには、通常の反復プログラミングパルスをステップ間で0.2V増加することが必要とされる。また、区分を幅0.05Vに狭めるためには、0.05Vステップが必要とされる。プログラミング電圧の増加ステップを小さくしてセルをプログラミングすることは、結果的にプログラミング時間を長くしてしまう。なお、上記の文献の内容は、本明細書に組み込まれる。
【0036】
図8は、4状態NANDメモリセルをプログラミングするツー・パス技術の例を示す。第1プログラミングパスでは、セルの閾電圧レベルは、下側論理ページにプログラミングされるビットに基づいて設定される。そのビットが論理「1」の場合、閾電圧は変更されない。そのビットが以前に消去されたことによって、既に適切な状態にあるためである。しかしながら、プログラミングされるビットが論理「0」の場合、矢印470で示されるように、セルの閾電圧レベルが閾電圧区分462まで上げられる。これにより、第1プログラミングパスは完了する。
【0037】
第2プログラミングパスでは、セルの閾電圧レベルは、上側論理ページにプログラミングされるビットに基づいて設定される。上側論理ページのビットが論理「1」を保存している場合、セルは閾電圧区分460又は462に対応する状態にあるので、プログラミングは行われない。閾電圧区分460と462はどちらも上側ビット「1」を有しており、セルの状態が閾電圧区分460と462のどちらに対応するかは、下側ページのプログラミングに依存する。
上側ページのビットが論理「0」の場合、閾電圧はシフトされる。第1パスの結果、セルの状態が閾区分460に対応する消去状態のままだった場合、第2パスでは、そのセルが矢印474で示すように閾電圧が上げられるようにプログラミングされる。具体的には、その閾電圧が閾電圧区分466内に収まるようプログラミングされる。一方、第1パスの結果、セルの状態が閾区分462に対応する状態にプログラミングされた場合、第2パスでは、そのセルが矢印472で示すように、閾電圧が上げられるようプログラミングされる。具体的には、その閾電圧が閾電圧区分464内に収まるようにプログラミングされる。第2パスでは、下側ページのデータは変更されずに、上側ページに論理「0」を保存するよう指定された状態にプログラミングされる。
なお、各区分には特定のビットパターンが割り当てられているが、これと異なるビットパターンが割り当てられてもよい。その場合、プログラミングが実行される状態は、図8に示すものと異なってよい。
【0038】
通常、並列にプログラミングされるセルは、ワード線に1つ置きに配置されているセルである。例えば、図4は、ワード線WL2に沿う多数のセルのうち3つのメモリセル224,244,250を示す。1つ置きのセルの1つの組は、セル224と250を含んでおり、論理ページ0と2(偶数)からのビットを保存する。一方、別の1つ置きのセルのセットは、セル244を含んでおり、論理ページ1と3(奇数)からのビットを保存する。上記の例では、論理ページ0と1は下側ページであり、論理ページ2と3は上側ページである。
【0039】
図8は、読取比較点と検証比較点も示している。例えば、読取比較点は、Vr10,Vr00,Vr01を含んでいる。Vr10,Vr00,Vr01に対応する電圧は、読取操作の間にメモリセルの制御ゲートに印加され、それによって、メモリセルがどの時点で導通しどの時点で導通しないのかを判断をする。3つの読取操作に基づいて、メモリシステムは、メモリセルがどの閾区分(どの状態)に当てはまるのかを判断することができる。例えば、3つの読取操作のいずれにおいてもメモリセルが導通しない場合、そのメモリセルは状態01にある。メモリセルが、Vr01を制御ゲートに印加した場合にのみに導通する場合、そのメモリセルは状態00にある。メモリセルが、Vr00を印加した時には導通し、Vr10を印加した時には導通しない場合、そのメモリセルは状態10にある。メモリセルが、Vr10,Vr00,Vr01を印加した時に導通する場合、そのメモリセルは状態11にある。
1つの実施形態では、読取比較点Vr10,Vr00,Vr01のそれぞれは、閾区分の隣接する2つの状態の中間点である。検証比較点Vv10,Vv00,Vv01は、セルが十分にプログラミングされたことを確認するためにプログラミング処理の間に利用される。
【0040】
図8は、オーバー・プログラミング検証比較点VopSP,Vop10,Vop00,Vop01も示している。これらのオーバー・プログラミング検証比較点は、特定のメモリセルがオーバー・プログラミングされたか否かを判断するために使用される。
例えば、状態11にあるはずのメモリセルの制御ゲートにVopSPを印加してもそのメモリセルが導通しない場合に、そのセルはオーバー・プログラミング(あるいはオーバー・ソフト・プログラミング)されたと判断できる。
状態10にあるはずのメモリセルの制御ゲートにVop10を印加してもそのセルが導通(例えばターンオン)しない場合に、そのメモリセルがオーバー・プログラミングされたと結論づけることができる。
状態00にあるはずのメモリセルの制御ゲートにVop00を印加した時にそのメモリセルが導通(例えばターンオン)しない場合に、そのセルがオーバー・プログラミングされたと判断することができる。
状態01にあるはずのメモリセルの制御ゲートにVop01を印加した時にそのメモリセルが導通(例えばターンオン)しない場合に、そのセルがオーバー・プログラミングされたと結論づけることができる。
オーバー・プログラミング検証比較点のそれぞれは、隣接する読取比較点より若干低い。例えば、1つの実施形態では、各検証比較点は、隣接する読取比較点よりも50mV低い。他の実施形態では、検証比較点と隣接する読取比較点の違いは、50mV以上あるいは50mV以下でもよい。1つの実施形態では、オーバー・プログラミング検証処理は、状態機械316によって実行される。
【0041】
プログラミング処理の1つの実施形態では、まず、下側ページのプログラミングの前にメモリセルが消去される(ブロック単位あるいは他の単位で消去される)。プログラミング処理を開始する場合、ホストからのデータ読込命令又は書込命令が制御装置によって受信される。制御装置は、適当な命令をデータ入出力バッファ312と状態機械316に提供する。制御装置318は、データを書き込むアドレスを受信する。このアドレスは、メモリアレイ302内の特定の論理ページ(複数でもよい)と物理的アドレスにマッピングされる。アドレスデータは、制御装置318からデータ入出力バッファ312に送信される。いくつかの実施形態では、データ入出力バッファ312に加えて状態機械316にも送信される。そして、データは、プログラミング操作のためのアドレスに基づいて、適当な第1データラッチ402に送信される。その第1データラッチ402からのデータは、対応する第2データラッチ404にロードされる。制御装置からのプログラミング命令に応じて、状態機械316は、図9のフローチャートに表示されるプログラミング処理を開始する。
【0042】
ステップ594では、状態機械316は、上側ページと下側ページのどちらにデータが書き込まれるのかを判断する。データが下側ページに書き込まれる場合、処理はステップ600に進む。
データが上側ページに書き込まれる場合、状態機械は、ステップ596の下側ページのデータを確認するために、下側ページ読取操作を実行する。図8を参照すると、上側ページのプログラミングは、メモリセルを状態00又は状態01にプログラミングすることを含む。下側ページのデータが論理「1」の場合、上側ページのプログラミング処理は、メモリセルを状態01にプログラミングすることを含む(図8の矢印474参照)。従って、システムは、上側ページのプログラミング処理の間に、メモリセルがどの状態にプログラミングされなければならないかを判断するために下側ページのデータを知る必要がある。
【0043】
ステップ596の1つの実施形態では、状態機械は、Vr10で読取操作を実行する。メモリセルが導通すれば(ターンオンすれば)、下側ページに対する読取データは「1」である。メモリセルが導通しなければ(ターンオンしなければ)、下側ページに対する読取データは「0」である。下側ページのデータは、第3データラッチ406に保存される。他の読取処理を用いて下側ページを読取ることも可能であり、第3データラッチ406以外の場所に下側ページのデータを保存することもできる。下側ページのデータを第3データラッチ406に保存した後に、処理はステップ600に進む。
【0044】
ステップ600では、状態機械は、適当なワード線(複数でもよい)にプログラミングパルスを印加する。第1パルスが印加される前に、プログラミング電圧は開始パルス(例えば12V)に初期化され、状態機械に整備されているプログラムカウンタは0に初期化される。
1回目のステップ600では、選択されたワード線に第1プログラミングパルスが印加される。特定の第1データラッチに論理「0」が保存されている場合、そのメモリセルに対応するビット線は接地される。一方において、特定の第1データラッチに論理「1」が保存されている場合、そのメモリセルに対応するビット線はVddに接続され、プログラミングは禁止される。プログラミングを禁止することに関するさらなる情報は、「Improved Self Boosting Technique(2003年3月5日に出願された米国特許出願第10/379608号)」に開示されている。この内容は、本明細書に組み込まれる。
【0045】
ステップ602では、選択されたメモリセルが検証される。(例えばセンス増幅器の出力を第2データラッチと比較することによって)選択されたセルのターゲット閾電圧がターゲットレベルに到達したと検知された場合、第2データラッチ404に保存されているデータは論理「1」に変更される。閾電圧が適当なレベルに到達していないと検知された場合、第2データラッチ404に保存されているデータは変更されない。このように、対応する第2データラッチ404に論理「1」が保存されているメモリセルは、プログラミングされる必要はない。全ての第2データラッチが論理「1」を保存した場合、状態機械は、選択された全てのセルにプログラミングが行われたと(ライン410を介して)認識する。
ステップ604は、全ての第2データラッチ404が論理「1」を保存しているか否かを確認することを含んでいる。全ての第2データラッチ404が論理「1」を保存している場合、プログラミングの第1ステージが完了し、適当なステータスメッセージがステップ610で報告される。
【0046】
ステップ604において、全ての第2データラッチ404が論理「1」を保存していないと判断された場合、プログラミング処理は続行される。ステップ606では、プログラムカウンタがプログラミング制限値と比較される。1つの例では、プログラミング制限値は20である。プログラムカウンタが20(例えばプログラミングを試みた最大回数)に達している場合、プログラミング処理は失敗であり(ステップ608)、適当なステータスメッセージが報告される。
プログラムカウンタが最大値より低い場合、プログラミング電圧は次のステップサイズ分だけ増加され、プログラムカウンタはインクリメントされ、プログラミング処理は次のパルスを印加するためにステップ600に進む。
【0047】
ステップ604の検証が成功した場合、プログラミングされた各メモリセルの閾電圧は、図8に示す区分のいずれか1つに当てはまるはずである。しかしながら、上記の処理は、プログラミングされたセルの閾電圧が、少なくとも適当な検証比較点よりも高いことのみを検証している。ステップ602で用いた検証比較点は、ターゲット閾区分内で許容できる最低限の電圧レベルである。例えば、図8を参照すると、ステップ604において、セルが状態10にプログラミングされたと検証するための検証比較点はVv10であり、状態00にプログラミングされたと検証するための検証比較点はVv00であり、状態01にプログラミングされたと検証するための検証比較点はVv01である。即ち、上述の処理は、プログラミング処理が所望の状態を下回らないことを検証する。
これまでは、プログラミング処理が所望の状態を上回ってしまったことを確認することはなかった。例えば、メモリを状態10にプログラミングするのが目的である場合、そのメモリセルの閾電圧がVop10より高い値にプログラミングされてしまったら、そのメモリセルはオーバー・プログラミングされたことになる。ステップ620〜676は、プログラミング処理がメモリセルをオーバー・プログラミングしたか否かを判断するために利用される。
【0048】
ステップ610の後、図9の処理は2つの並列経路に分かれる。プログラミング処理が下側ページをプログラミングした場合、処理はステップ620〜644を実行する。プログラミング処理が上側ページをプログラミングした場合、処理はステップ660〜676を実行する。いくつかのセルが下側ページにプログラミングされるとともに、同じプログラミング処理の間に他のセルが上側ページにプログラミングされる可能性がある。従って、異なるメモリセル群に対して異なるステップが実行されてもよい。他の実施形態では、上側ページと下側ページのどちらがプログラミングされているのかを問わず、ステップ620〜644とステップ660〜676を、プログラミングされている全てのセルに対して実行することができる。
【0049】
下側ページがプログラミングされている場合、ステップ620が実行される。ステップ620は、ソフトプログラミングに起因するオーバー・プログラミングを検証する処理を含んでいる。即ち、ステップ620は、消去処理の後に実行された(又は消去処理の一部として実行された)ソフトプログラミング処理が、消去されたメモリセルの許容範囲以上に閾電圧を上げたのか否かを判断する処理を実行することを含んでいる。
メモリセルが消去される場合、そのメモリセルの閾電圧が低すぎる場合がある。閾電圧が低すぎる問題を改善するために、ソフトプログラミング処理が実行され、その消去されたメモリセルの閾電圧を適当なレベルに上げる。ソフトプログラミング処理が閾電圧を上げすぎて、そのセルをオーバー・プログラミングしてしまう可能性がある(閾電圧がVopSPより高くなる可能性がある)。ステップ620では、このようにオーバー・プログラミングされたセルを検知する。
ステップ622では、各セルが、ソフトプログラミングに起因するオーバー・プログラミング検証処理(ステップ620)をパスしたか否かを判断する。全てのセルがパスしなかった場合、ステップ624では、ソフトプログラミングに起因するオーバー・プログラミング検証が失敗した旨を示すステータスがリターンされる。ステップ620の処理をパスした場合(ソフトプログラミングの間にオーバー・プログラミングされたセルがなかった場合)、ステップ638では、状態10のオーバー・プログラミング検証処理が実行される。
【0050】
ステップ638は、状態10のオーバー・プログラミング検証処理を実行することを含んでいる。状態機械は、状態10にあるはずのセルの閾電圧がVop10より高いか否かを判断する。閾電圧がVop10より高ければ、セルはテスト(ステップ640)をパスすることができず、オーバー・プログラミングによる失敗を示すステータスがリターンされる(ステップ642)。1つの実施形態では、このステータスは、オーバー・プログラミングが失敗である旨のみを示していてもよい。他の実施形態では、閾電圧が許容レベルをどれだけ上回ったのかを示す値をリターンすることもできる。
ステップ638の処理において、メモリセルがオーバー・プログラミングされたと判断されなければ、ステップ644で「パス」のステータスがリターンされる。ステップ644の他の実施形態では、状態10のオーバー・プログラミング検証がパスであった旨を示すステータスをリターンすることができる。
【0051】
上側ページがプログラミングされた場合、状態00のオーバー・プログラミング検証処理をステップ660で実行する。システムは、状態00にあるはずのメモリセルの閾電圧がVop00より高いか否かを判断するためにチェックする。セルがパスしない場合(状態00にあるはずのメモリセルの閾電圧がVop00より高い場合)、ステップ664において、オーバー・プログラミングによる失敗を示すステータスが提供される。他の実施形態では、このステータスは、状態00のオーバー・プログラミングによる失敗を示してもよい。セルがオーバー・プログラミングされていないと判断された場合、処理はステップ670に進み、状態01のオーバー・プログラミング検証処理を実行する。
【0052】
ステップ670では、システムは、状態01にあるはずのセルの閾電圧がVop01より高いか否かを判断する。状態01にあるはずのセルの閾電圧が検証比較点Vop01より高い場合は、そのセルがテストに失敗したことを意味し、ステップ674において失敗のステータスが報告される。全てのセルがテストをパスした場合(セルがオーバー・プログラミングされていない場合、あるいはセルが状態01にない場合)、ステップ676においてパスのステータスが報告される。1つの実施形態では、ステップ670〜676は省略されてもよい。
【0053】
図10は、ソフトプログラミングに起因するオーバー・プログラミングの検証(図9のステップ620)を実行するための処理の1つの実施形態のフローチャートを示す。
ステップ700では、以前にメモリセルにプログラミングされたデータが、第1データラッチ402にまだ存在している。このデータは、そのメモリセルに対応する第1データラッチ402から第2データラッチ404にロードされる。
ステップ702では、VopSPを用いて検証処理が実行される。即ち、システムは、制御ゲートが電圧VopSPを持つ読取操作を実行することができる。メモリセルが導通した場合、センス増幅器は論理「1」をリターンする。メモリセルが導通しなかった場合、センス増幅器は論理「0」をリターンする。検証データが第2データラッチ404のデータと一致した場合(ステップ704)、第2データラッチ404のデータは「1」に設定される(ステップ706)。ステップ700〜706は、各セルに対して並列に行われる。
メモリセルに対する全ての第2データラッチが「1」に設定された場合(ステップ708)、ソフトプログラミングに起因するオーバー・プログラミングの検証処理は「パス」の結果をリターンする(ステップ710)。全ての第2データラッチ404が「1」に設定されていない場合、処理は失敗する(ステップ712)。
セルが状態10にあった場合は、ステップ700で第2データラッチにロードされるデータは論理「0」となり、検証ステップ702はVopSP電圧を印加してもトランジスタは導通せず、センスデータは「0」を示す。従って、読取データは、第2データラッチ404のデータと一致し、第2データラッチ404は論理「1」に設定され、処理はパスすることになる。
【0054】
図11は、状態10のオーバー・プログラミング検証(図9のステップ638)を実行するための処理のフローチャートである。
図11のステップ764では、システムは、Vop10を用いて検証処理を実行する。即ち、Vop10を様々なメモリセルの制御ゲートに印加して読取操作を実行する。セルがオーバー・プログラミングされておらず状態11又は10にある場合、そのセルは導通するはずである。従って、論理「1」が受信されるはずである。
ステップ766では、検証ステップからの結果が第2データラッチ404にロードされる。全てのセルがオーバー・プログラミングされていない場合、その全てのセルは、各自の第2データラッチに論理「1」を保存しているはずである。全ての第2データラッチが論理「1」の場合(ステップ768)、処理はパスする(ステップ770)。全ての第2データラッチが論理「1」ではない場合、処理は失敗する(ステップ772)。
【0055】
図12は、状態00のオーバー・プログラミング検証処理(図9のステップ660)を実行するための処理のフローチャートである。
図12のステップ802では、Vop00を用いて検証処理が実行される。即ち、Vop00をメモリセルの制御ゲートに印加して、読取操作が実行される。1つの実施形態では、メモリセルの閾電圧がVop00より高い場合、そのメモリセルはターンオンせず、論理「0」がリターンされる。メモリセルの閾電圧がVop00より低い場合、そのメモリセルはターンオンし、論理「1」がリターンされる。
ステップ802の検証でリターンされた結果は、対応する第2データラッチ404に保存される。ステップ804では、システムは、検証ステップ802の結果と、第3データラッチ406に保存してある下側ページのデータを比較する。図12の処理は、上側ページのプログラミングの後に実行される。上述したように、上側ページのプログラミングは、まず下側ページのデータを読取り、その下側ページのデータを第3データラッチ406に保存することによって開始される(ステップ596と598を参照)。第3データラッチに保存された下側ページのデータは、検証ステップ802の結果と比較される。
上側ページのプログラミングの後に、状態機械は、メモリセルが状態00にあるはずなのか、それとも状態01にあるはずなのかを知る必要がある。下側ページのデータは、その情報を提供する。下側ページのデータが「0」の場合、上側ページのプログラミングが行われる前に、そのメモリセルが状態10にあったことを意味する。メモリセルが状態10にあった場合、上側ページのプログラミングを実行することによって、そのメモリセルは状態00に移動する(図8の矢印472を参照)。下側ページのデータが「1」の場合、上側ページのプログラミングが行われる前に、そのメモリセルが状態11にあったことを意味する。メモリセルが状態11にあった場合、上側ページのプログラミングを実行することによって、そのメモリセルは状態01に移動する(図8の矢印474を参照)。従って、下側ページのデータが論理「0」の場合、状態機械は、メモリセルがオーバー・プログラミングされたか確認する必要がある。論理ページが論理「1」の場合、メモリセルが状態00であることはない。従って、状態00のオーバー・プログラミング検証に失敗はありえない。
【0056】
1つの実施形態では、第3データラッチ406の下側ページのデータが論理「0」であり、第2データラッチ404に保存されている「ステップ802の検証からリターンされた結果」が論理「0」である場合、そのメモリセルは、ステップ806においてオーバー・プログラミングされたと判断される。これは、メモリセルが状態00にあるべきであることを意味する(しかしながら、そのセルの閾電圧はVop00より高い)。
下側ページのデータが論理「1」の場合、又は、ステップ802の検証処理からリターンされた結果(第2データラッチ404に保存されている結果)が論理「1」である場合、そのメモリセルは状態00に対してオーバー・プログラミングされていないと判断される。
ステップ806では、状態00に対してオーバー・プログラミングされていない各セルに対応する第2データラッチ404が論理「1」に設定される。なお、上側ページのプログラミング処理が、上側ページを論理「1」に維持しようとする場合(例えば状態11あるいは状態10)、対応する第2データラッチは既に論理「1」である。
全ての第2データラッチ404が論理「1」に設定されている場合(ステップ808)、図12の処理はパスする(ステップ810)。全ての第2データラッチが論理「1」に設定されていない場合、状態00に対してオーバー・プログラミングされたメモリセルが1つ又は複数存在するために、図12の処理は失敗する(ステップ812)。
【0057】
図13は、状態01のための上側ページのオーバー・プログラミング検証(図9のステップ670)を実行するための処理の一例のフローチャートである。
ステップ862では、比較点Vop01を用いて検証処理を実行する。セルが導通した場合(論理「1」の検証結果がリターンされた場合)、第2データラッチ404は論理「1」に設定される。セルが導通しない場合、第2データラッチは論理「0」に設定される。
全ての第2データラッチが論理「1」に設定された場合(ステップ864)、図13の処理はパスする(ステップ866)。全ての第2データラッチが論理「1」に設定されていない場合、図13の処理はパスしない(ステップ868)。
【0058】
上述のフローチャートは、検証処理によって制御ゲートに特定の電圧を印加し、メモリセルがターンオンしたのか、あるいはターンオフしたのかを確認することによって実行される。しかしながら、本発明では、メモリセルの状態を判断するために他の検証(読取)手段を用いることができる。例えば、電流感知システムを用いることができる。これは、特定の読取コンディションにある記憶ユニットの電流を基準電流のセットと比較する。
他の実施形態では、記憶ユニットの状態は、複数の異なるパラメータを用いることによって判断することができる。例えば、セルに帯電している電荷レベルの確認は、バイアスコンディションを利用して、その状態のマグニチュードが検知される電流センシングによって実行されてよい。
一方において、コンディションのオンセットが様々なステアリングゲートバイアスコンディションを利用して検知される場合、閾電圧をセンシングすることによって判断することもできる。
また、セルの電荷レベルに定められた駆動力を利用して、(例えばプリチャージされたコンデンサによって)動的にホールドされたセンスノードの放電率を制御することによって、上記の確認を動的に行うこともできる。与えられた放電レベルに達するまでの時間を検知することによって、帯電している電荷レベルが特定される。この場合、セルのコンディションを示すパラメータは時間である。この方法は、米国特許第6222762号に説明されている。この内容は、本明細書に組み込まれる。
さらに、他の技術では、記憶ユニットの状態が周波数をパラメータとして利用することによって判断される。この方法は、米国特許第6044019号に説明されている。この内容は、本明細書に組み込まれる。なお、電流センシングの方法は、米国特許第5172338号により詳しく説明されている。この内容も、本明細書に組み込まれる。
【0059】
隣接する浮遊ゲートの電荷によって生じる電界の存在が原因で、浮遊ゲートに保存されている電荷がシフトすることがある。ここでの問題は、現在読取られているセルがプログラミングされた後に、隣接するメモリセルがプログラミングあるいは消去される可能性があることである。1つのセットのデータに対応するために、浮遊ゲートに電荷のレベルが加えられて1つのセットのセルをプログラミングすることを例にする。第2セットのセル(第1セットと隣接するセット)に対して第2セットのデータがプログラミングされた後に、第1セットのセルの浮遊ゲートから読取られる電荷レベルは、プログラミングされたものと異なることがある。第2セットの浮遊ゲートから生じる電界の影響を受けるからである。即ち、観測されるエラーの原因は、隣接する浮遊ゲートの電界が、読取られているセルの浮遊ゲートの電圧レベルに影響するためである。これは、Yupin効果として知られ、米国特許第5867429号と同第5930167号に詳しく説明されている。これらの内容は、本明細書に組み込まれる。これらの特許文献は、浮遊ゲートの2つのセットを物理的に隔離すること、あるいは、浮遊ゲートの第1セットを読み取る際に、浮遊ゲートの第2セットの電荷の効果をいかに考慮するのかを説明している。
【0060】
第1セットのメモリセルを正しくプログラミングすることは可能だが、続けて隣接するセルがプログラミングされると、Yupin効果によって第1セットのメモリセルがオーバー・プログラミングされることがある。例えば、状態10にプログラミングされるはずの第1セル(図8を参照)に対して、閾電圧がVv10より高く(プログラミング検証)、Vop10より低い(オーバー・プログラミング検証)ことを検証するための確認が行われる。隣接するメモリセルがプログラミングされた後は、第1セルから読取られた閾電圧が、当初にプログラミングされた値より高くなることがある(例えば0.2V高くなることがある)。第1メモリセルが、Vop10より若干低い値にプログラミングされた場合、隣接するセルがプログラミングされた後に、第1セルはVop10より高い閾電圧を持つことがある。この場合、第1メモリセルは、オーバー・プログラミングされたことになる。この閾電圧が読取比較点(例えばVr00)より高いのが理由で、データエラーが生じることもありえる。
隣接するセルは、隣接するワード線あるいは隣接するビット線に存在していてもよい。例えば、図4のセル244は、セル224、242、250、及び246と隣接している。いくつかの実施例では、セル244に隣接していないメモリセルが、セル244から読取られた電荷に影響を与える電界を持つこともありえる。
【0061】
このYupin効果を対処するために、第1制御線(例えばワード線あるいはビット線)を用いてプログラミングを行った後に、本発明の1つの実施形態は、以前にプログラミングされているとともに第1制御線に隣接する制御線に関連するページにオーバー・プログラミング検証チェックを実行する。これらの実施形態は、図14A〜15Cを用いて説明する。
【0062】
図14Aは、以前に選択されたワード線に関連している論理ページにオーバー・プログラミング検証を実行するための処理の1つの実施形態を示す。
図14Aのステップ902では、メモリセルのセットは、第1ワード線を用いてプログラミングされる。例えば、図4を参照すると、ワード線WL1を用いて論理ページをプログラミングすることができる。ステップ902の処理は、図9の処理を実行することを含んでおり、図10〜13に示される「オーバー・プログラミングされたメモリセルを確認すること」も含んでいる。
ステップ904では、第2ワード線(例えば図4のワード線WL2)を用いて第2セットのメモリセルにプログラミング操作を実行する。ステップ904の処理は、図9の処理を実行することを含んでおり、オーバー・プログラミングされたメモリセルを確認することも含んでいる。
ステップ906では、システムは、第1ワード線(例えばワード線WL1)に関連する論理ページのメモリセルに対して、上述のYupin効果が原因で生じたオーバー・プログラミングをチェックする。
ステップ908では、システムは、第3ワード線(例えばワード線WL3)を用いて第3セットのメモリセルをプログラミングする。ステップ908の処理は、図9の処理を実行することを含んでおり、オーバー・プログラミングされたメモリセルを確認することも含んでおり。
ステップ910では、システムは、第2ワード線(例えばワード線WL2)に関連する論理ページのメモリセルに対して、上述のYupin効果が原因で生じたオーバー・プログラミングをチェックする。
その後、処理は続行し(あるいは続行しなくてもよい)、付加的なワード線に関連する付加的なメモリセルをプログラミングし、以前にプログラミングされたワード線においてオーバー・プログラミングされたメモリセルのための確認を実行することができる。
【0063】
いくつかの実施例では、ワード線はNANDストリングに沿って順番にプログラミングされる。従って、プログラミングに第1ワード線が使用された後、次のプログラミング操作では第1ワード線に隣接しているワード線が使用される。
NANDストリングは、通常(必ずとは言えないが)、ソース側からドレイン側にプログラミングされる。例えば、メモリセル228からメモリセル222(図4参照)にプログラミングされる。従って、WL0を用いてプログラミングした後に、システムは、WL1(WL0に隣接するワード線)を利用する。従って、図14Aの例では、オーバー・プログラミング検証が、直前のワード線に対して実行される。しかしながら、他の実施形態では、直前にプログラミングされたメモリセルではなくて、それより前にプログラミングされた他のメモリセルを確認するようにしてもよい。
【0064】
図14Bは、以前に選択されたビット線に対してオーバー・プログラミングされたメモリセルを確認することによって、Yupin効果に対処する1つの実施形態のフローチャートを示す。
1つの実施形態では、ビット線は奇数ビット線と偶数ビット線にグループ分けされる。この実施形態では、奇数ビット線がプログラミングされ、次いで偶数ビット線がプログラミングされ、次いで奇数ビット線がプログラミングされ、次いで偶数ビット線がプログラミングされることが続いていく。他の実施形態では、ビット線の異なるセットは、異なるプログラミング操作が使用されてよい。
図14Bでは、一方のセットのビット線でプログラミングされた後に、その前にプログラミングされた他方のセットのビット線に対してオーバー・プログラミングの確認が行われる。ステップ950では、偶数ビット線を用いてプログラミング操作が実行される。ステップ950の処理は、図9の処理を実行することを含んでおり、図10〜13に示す「オーバー・プログラミングされたメモリセルを確認すること」を含んでいる。
ステップ952では、プログラミング操作は奇数ビット線を用いて実行される。ステップ952の処理は、図9の処理を実行することを含んでおり、オーバー・プログラミングされたメモリセルを確認することを含んでいる。
ステップ954では、システムは、以前にプログラミングされた偶数ビット線に関連する論理ページに対して、上述のYupin効果によって生じるオーバー・プログラミングを確認する。
ステップ956では、偶数ビット線を用いてプログラミングが実行される。ステップ956の処理は、図9の処理を実行することを含んでおり、オーバー・プログラミングされたメモリセルを確認することを含んでいる。
ステップ958では、システムは、以前にプログラミングされた奇数ビット線に関連する論理ページに対して、上述のYupin効果によって生じるオーバー・プログラミングを確認する。
この処理は、プログラミングと、以前にプログラミングされたビット線に対するオーバー・プログラミングの確認とを交互に行いながら続行することができる。
【0065】
図14Aと14Bの処理は、状態機械や制御装置によって実行されてもよい。あるいは、図14Aと14Bの処理を実施するための特定論理によって実行されてよい。あるいは、これらの装置の組み合わせによって実行されてよい。
図14Aと14Bの処理の一部としてシステムが用いる方法は、多種多様である。以前にプログラミングされた制御線に関連する論理ページに対して、上述のYupin効果が原因で生じるオーバー・プログラミングを確認するための方法は、多種多様である。図15A〜Cは、その適切な方法を二つ説明するが、他の適切な方法も用いることもできる。
【0066】
図15Aは、図8と同じように、2ビットのデータを保存しているメモリセルの閾電圧区分460,462,464,466を示す。読取比較点(Vr10,Vr00,Vr01)、検証比較点(Vv10,Vv00,Vv01)、及びオーバー・プログラミング比較点(VopSP,Vop10,Vop00,Vop01)に加えて、オーバー・プログラミングテスト点VopA,VopB,VopCを示す。
第1セルと隣接する第2セルをプログラミングした後に、第2セルからのYupin効果によって、第1セルの閾電圧が0.2Vほど上がる。技術、規模、スペース等に依存し、0.2V以上あるいは0.2V以下でもよい。
このデータは、予想通り破損しているが、完全に破損してはいない。1つのシナリオは、初めのプログラミングによって第1セルの閾電圧がオーバー・プログラミング検証電圧(例えばVop10)をわずかに下回る値になった場合に、セルが最大Yupin効果(例えば約0.2V又は上述した別の値)の影響にさらされることである。Yupin効果が原因でセルがオーバー・プログラミングされたことを示す閾電圧の範囲を象徴するオーバー・プログラミング領域が確立される。
図15Aは、3つのオーバー・プログラミング領域を示す。第1オーバー・プログラミング領域は、VopSPとVopAの間の領域を含んでいる。第2オーバー・プログラミング領域は、Vop10とVopBの間の領域を含んでいる。第3オーバー・プログラミング領域は、Vop00とVopCの間の領域を含んでいる。
なお、オーバー・プログラミング比較点とオーバー・プログラミングテスト点は、図15Aとは異なる値でもよい。
【0067】
Yupin効果が原因でメモリセルがオーバー・プログラミングされたか否かを確認するための1つの処理では、そのセルの閾電圧が、いずれか1つのオーバー・プログラミング領域内にあるか否かをチェックする。セルの閾電圧が、いずれか1つのオーバー・プログラミング領域内にある場合、そのセルはYupin効果が原因でオーバー・プログラミングされたと推定することができる。例えば、セルの閾電圧が、第2オーバー・プログラミング領域にあると判断された場合、区分462内にあったはずのセルがYupin効果によってオーバー・プログラミングされたと推定される。
図15Aは、4つの閾区分(2ビットのデータを保存する)を示すが、本発明の実施には、4つ以上あるいは4つ以下の区分(2ビット以上あるいは2ビット以下のデータ)を利用してもよい。
【0068】
図15Bは、上述のYupin効果が原因で生じるオーバー・プログラミングに対してチェックを行う処理の1つの実施形態のフローチャートを示す。図15Bの処理は、図14Aと14Bのステップ906,910,954,958のオーバー・プログラミングに対する確認の一部として実行される。
ステップ1002では、各オーバー・プログラミング領域のエッジで読取操作が実行される。例えば、VopSP,VopA,Vop10,VopB,Vop00,VopCで読取操作が実行される。これらの読取操作に基づいて、いずれか1つのオーバー・プログラミング領域内にセルの閾電圧があるか否かを判断する。例えば、Vop10がワード線に印加された時にメモリセルはターンオンし、VopBがワード線に印加された時にターンオンしない場合、そのセルは第2オーバー・プログラミング領域内にあると推定される。
メモリセルの閾電圧が、いずれか1つのオーバー・プログラミング領域内にある場合(ステップ1006)、そのセルは隣接するセルの影響(Yupin効果)が原因でオーバー・プログラミングされたと結論づけられる(ステップ1008)。
ステップ1010では、オーバー・プログラミングされたデータが修正される。閾電圧を適当な区分まで下げるために、セルを部分的に消去することができる。また、セルを完全に消去して再び書き込みを行なうこともできる。また、データを別の場所に書き込むこともできる。また、セルがオーバー・プログラミングされたことを示すエラー情報を保存し、オーバー・プログラミングを考慮して以後の読取を行なうこともできる。また、他の適切な処理を実行してよい。
【0069】
ステップ1006において、閾電圧がいずれのオーバー・プログラミング領域内にも当てはまらないと判断された場合、オーバー・プログラミング比較点Vop01について読取操作が実行される。メモリセルの閾電圧がVop01より高い場合(ステップ1022)、そのメモリセルはオーバー・プログラミングされたと推測され、処理はステップ1008に進む。メモリセルの閾電圧がVop01より低い場合(ステップ1022)、そのメモリセルはオーバー・プログラミングされていないと推測される(ステップ1024)。
【0070】
図15Cは、Yupin効果が原因で生じるオーバー・プログラミングのチェックを行なう処理の別の実施形態のフローチャートを示す。図15Cの処理は、図14Aと14Bのステップ906,910,954,958のオーバー・プログラミングの確認の一部として実行することができる。
ステップ1060では、読取比較点Vr10,Vr00,Vr01のそれぞれで読取操作が実行される。読取操作に基づいて、メモリセルの初期状態の確認が行われる。ステップ1062では、公知の手法に基づいてECC処理が実行される。ECCエラーがない場合(ステップ1064)、メモリセルはYupin効果によってオーバー・プログラミングされなかったと推定される(ステップ1066)。ECCエラーが検知された場合(ステップ1064)、そのエラーはYupin効果によってメモリセルがオーバー・プログラミングされたことが原因で生じたものだと推定される(ステップ1070)。ステップ1072では、データが修正される(図15Bのステップ1010と同様)。
例えば、ステップ1060で行った読取操作によって、閾電圧がVr00より高くVr01より低いと判断されたものとする。メモリセルは、閾区分464にあり、論理データ00を保存していると推定される。ECCが失敗した場合、メモリセルは閾区分462にあり、論理データ10を保存していると推定される(ただし、メモリセルはオーバー・プログラミングされている)。従って、ステップ1072の1つの実施形態では、メモリセルの閾電圧が、閾区分462内に含まれるよう修正される。
【0071】
図17〜22は、図16に対応しており、オーバー・プログラミング検証を実行するための別の実施形態を示す真理値表である。図8と同様に、図16は、2ビットのデータを保存するメモリセルの閾電圧区分460,462,464,466を示す。しかしながら、図16は、異なるオーバー・プログラミング検証比較点VopSP’,Vop10’,Vop00’,Vop01’を示す。
比較点VopSP’は、閾電圧区分460の最高電圧を若干上回る値である。比較点Vop10’は、閾電圧区分462の最高電圧を若干上回る値である。比較点Vop00’は、閾電圧区分464の最高電圧を若干上回る値である。比較点Vop01’は、閾電圧区分466の最高電圧を若干上回る値である。
図16のVopSP’は図8のVopSPより低く、図16のVop10’は図8のVop10より低く、図16のVop00’は図8のVop00より低く、図16のVop01’は図8のVop01より低い。
他の実施形態では、比較点VopSP’,Vop10’,Vop00’,Vop01’は、個々の閾電圧区分より高い他の値が使用されてよい。
【0072】
図17は、下側ページのプログラミングの後に、ソフトプログラミングに起因するオーバー・プログラミング検証を実行するための実施形態を説明する。
図17の真理値表は、以前の下側ページのプログラミングにおいてプログラミングされたデータが、「0」データなのか、あるいは「1」データなのかを示す2つの列を示す。真理値表の2行目(「VopSP’で読み取り」)は、オーバー・プログラミングのための検証が行なわれたメモリセルから読取られたデータに対応している。3行目は、第2データラッチ404に保存されたデータを示す。4行目は、第1データラッチ402に保存されたデータを示す。5行目は、状態11のオーバー・プログラミング検証の結果を示す。
【0073】
「1」がプログラミングされた場合(図17の左側の列)、メモリセルは、状態11を維持する。「0」がプログラミングされた場合、セルは、状態10にプログラミングされるべきである。
真理値表の2行目は、メモリセルの制御ゲートにVopSP’を印加することを含んでいる読取操作の結果を示す。読取られたメモリセルの閾電圧がVopSP’より高い場合、そのメモリセルはターンオンせず、論理「0」が読取られる。メモリセルの閾電圧がVopSP’より低い場合、そのメモリセルはターンオンし、論理「1」が読取られる。
メモリセルに論理「1」がプログラミングされることに対応する列では、読取ステップで論理「1」(正常にプログラミングされた)、又は、論理「0」(オーバー・プログラミングされた)が読取られる。セルが状態10にプログラミングされた場合、プログラミング中の検証ステップで、電圧が少なくともVv10より高いことが検証されるので、読取ステップは論理「0」を読取る。読取られたデータは第2データラッチ404に保存される。第1データラッチ402は、以前に下側ページにプログラミングされたデータを保存している。状態機械は、第1データラッチ402と第2データラッチ404の内容を確認する。第1データラッチ402が論理「1」を保存しており、第2データラッチ404が論理「0」を保存している場合、オーバー・プログラミングテストは失敗である。即ち、状態機械は、メモリセルがオーバー・プログラミングされたと判断する。
【0074】
図18は、下側ページのプログラミングと上側ページのプログラミングの両方が実行された後に、ソフトプログラミングに起因するオーバー・プログラミング検証を実行する実施形態を説明するための真理値表を示す。このようなタスクに対応するためには、下側ページのデータと上側ページのデータを考慮する必要がある。下側ページのプログラミング操作と上側ページのプログラミング操作の両方が既に実行されているために、真理値表は、4つの状態に対応する列を含んでいる。4つの状態とは、11,10,00,01である。
真理値表の2行目は、制御ゲートにVopSP’を印加して読取られたデータを示す。セルが状態11を目的としていた場合、読取操作は、セルがオーバー・プログラミングされていなければ「1」をリターンし、オーバー・プログラミングされていたら「0」をリターンする。セルが他の3つの状態のいずれかにある場合は、「0」がリターンされるはずである。プログラミング処理の間に行われた以前の検証ステップが、そのセルの閾電圧が適当な検証点より十分に高いことを保証したからである。
真理値表の3行目は、上述の読取操作の結果を保存している第2データラッチ404のコンテンツを示す。4行目は、第3データラッチのコンテンツを示す。第3データラッチは、上述したように、下側ページのデータを保存する。5行目は、状態11のオーバー・プログラミング検証の結果を示す。
状態機械は、第3データラッチ406が論理「1」を保存しているとともに第2データラッチが論理「0」を保存しているか否かを確認する。そのように保存している場合、メモリセルがオーバー・プログラミングされたことを意味するために、オーバー・プログラミングテストは失敗する。そのように保存していなければ、テストはパスする。
【0075】
別の実施形態では、システムは、以前に第3データラッチに保存されたデータを使用せず、Vr10で再度の読取りを実行する。この読取操作は、セルの閾電圧がVopSP’より高くてVr10より低いことを確認する。そうであれば、状態機械は、そのメモリセルがオーバー・プログラミングされたと判断する。そうでなければ、状態機械は、メモリセルはオーバー・プログラミングされていないと推定する。
【0076】
図19は、セルを状態10にプログラミングする場合に、そのセルがオーバー・プログラミングされたか否かを検証する処理を説明するための真理値表を示す。図19に関連する検証処理は、下側ページのプログラミングの後であって上側ページのプログラミングの前に実行される。
真理値表には2つの列があり、一方の列は下側ページに論理「0」がプログラミングされた場合に対応し、他方の列は下側ページに論理「1」がプログラミングされた場合に対応する。2行目は、制御ゲートにVop10’を印加した場合の読取操作から得たデータを示す。メモリセルを状態11に維持することが目的だった場合、あるいはメモリセルが正常に状態10にプログラミングされた場合、Vop10’での読取操作は、メモリセルがターンオンし、論理「1」が報告される。この読取操作の結果は、第2データラッチ404に保存される(真理値表の3行目参照)。メモリセルを状態10にプログラミングすることが目的であったのにそのセルがオーバー・プログラミングされた場合、Vop10’での読取操作は、メモリセルはターンオンせず、それが原因で論理「0」が報告される。この読取操作の結果は、第1データラッチ402に保存される(4行目を参照)。
論理「1」がプログラミングされた場合(例えばプログラミングが実行されなかった場合)、第2データラッチ404と第1データラッチ402は両方とも論理「1」を保存し、テストはパスする(5行目を参照)。
論理「0」が適切にプログラミングされた場合、第1データラッチ404は論理「0」を保存し、第2データラッチは論理「1」を保存し、テストはパスする。第2データラッチ404が論理「0」であって第1データラッチ402が論理「1」の場合は、セルがオーバー・プログラミングされたことを意味するために、テストは失敗である。
【0077】
図20は、下側ページと上側ページの両方がプログラミングされた後に、状態10のオーバー・プログラミング検証を実行する処理を説明するための真理値表を示す。両方のページがプログラミングされたために4つの列が存在し、各列はセルがプログラミングされる1つの状態に対応している。4つの状態とは、11,10,00,01である。
2行目は、制御ゲートにVop10’を印加した読取操作から得られたデータを示す。この読取操作の結果は、第2データラッチ404(3行目)に保存される。メモリセルが状態11の維持される場合、あるいは、状態10に正常にプログラミングされた場合、メモリセルはターンオンして論理「1」が読取られる。メモリセルを状態10にプログラミングすることが目的だったことにもかかわらず、そのセルをオーバー・プログラミングしてしまった場合、セルはターンオンせず、論理「0」がリターンされる。上側ページのプログラミングの間にセルが状態00又は状態01にプログラミングされた場合、セルはターンオンせず、論理「0」が読取られる。
第1データラッチ402は、直前に実行された上側ページのプログラミング操作から得られたデータを保存する(4行目)。例えば、セルが状態11又は10の場合、第1データラッチは論理「1」を保存する。セルが状態00又は01の場合、第1データラッチは論理「0」を保存する。その後、システムはテストを実行し、第1データラッチ402が論理「1」を保存していて第2データラッチ404が論理「0」を保存していることを確認する。もしそうであれば、セルがオーバー・プログラミングされたことを意味するために、検証処理は失敗である。そうでなければ、検証処理はパスする(5行目)。
【0078】
図21は、状態00のオーバー・プログラミング検証を実行する処理を説明するための真理値表を示す。状態00の検証処理は、下側ページと上側ページの両方がプログラミングされた後に実行される。従って、図21の真理値表は4つの列を示す(各列はセルがプログラミングされる1つの状態に対応する)。
まず、制御ゲートにVop00’を印加することを含む読取操作が実行される(真理値表の2行目を参照)。メモリセルが正常に状態11,10,00にプログラミングされた場合、メモリセルはターンオンし、論理「1」がリターンされる。メモリセルが状態01にプログラミングされた場合、セルはターンオンせず、論理「0」がリターンされる。メモリセルを状態00にプログラミングすることが目的だったことにもかかわらずセルをオーバー・プログラミングしてしまった場合、セルはターンオンせず、論理「0」がリターンされる。この読取操作からリターンされたデータは、第2データラッチ404に保存される(真理値表の3行目参照)。
4行目は、第3データラッチ402のコンテンツを示す。第3データラッチは、上述したように、下側ページのデータを保存する。5行目は、状態00に対するオーバー・プログラミング検証の結果を示す。
状態機械は、第3データラッチ406が論理「0」を保存しているとともに第2データラッチ404が論理「0」を保存しているか否かを判断するためにチェックする。そのように保存されていれば、それはメモリセルがオーバー・プログラミングされたことを意味するために、オーバー・プログラミングテストは失敗である。そうでなければ、テストはパスする。
【0079】
別の実施形態では、システムは、以前に第3データラッチに保存されたデータを使用せずに、Vr01で再度の読取りを実行する。この読取操作は、セルの閾電圧がVop00’より高くてVr01より低いことを確認する。もしそうであれば、状態機械は、そのメモリセルがオーバー・プログラミングされたと判断する。そうでなければ、状態機械は、メモリセルはオーバー・プログラミングされていないと推定する。
【0080】
図22は、状態01のオーバー・プログラミング検証を実行する処理を説明するための真理値表を示す。上側ページがプログラミングされた後に実行される処理であるために、4つの列が存在し、各列はセルがプログラミングされる1つの状態に対応する。
図22の2行目は、制御ゲートにVop01’を印加することを含む読取操作から得られた結果を示す。この読取操作から得られたデータは、第2データラッチ404に保存される(3行目)。この読取操作から得られたデータは、セルの状態を問わずに必ず論理「1」であるべきである。従って、論理「0」がリターンされた場合、検証ステップは失敗である。論理「0」がリターンされなかった場合、検証ステップはパスする(4行目)。
【0081】
図9のフローチャートでは、下側ページのプログラミング操作が実行された場合に、ソフトプログラミング検証と状態10のオーバー・プログラミング検証が実行される。さらに、上側ページのプログラミング操作が実行された場合に、状態00のオーバー・プログラミング検証と状態01のオーバー・プログラミング検証が実行される。この手法は、図17,19,21,22を用いて説明した処理において利用することができる。
別の手法では、下側ページと上側ページの両方が書き込まれた後に、図18,20,21,22の真理値表を用いて説明した処理を用いて、全てのオーバー・プログラミング検証を実行することができる。
さらに別の手法では、下側ページのプログラミング処理が実行された後に、図17を用いて説明した検証処理を実行することができる。上側ページがプログラミングされた時に、システムは、図20,21,22の真理値表を用いて、状態10,00,01のオーバー・プログラミング検証を実行することもできる。
【0082】
上記の例は、NANDタイプのフラッシュメモリに関するものである。しかしながら、本発明の原理は、他のタイプのフラッシュメモリや他のタイプの非揮発性メモリに対しても適用できる。本発明の原理は、現存するものに対してだけでなく、今後に発達する新しい技術に対しても使用される。
【0083】
本発明の上記の詳細な説明は、図解と説明を目的に提供している。本発明を枯渇させる意図はないし、開示された通りのものに制限する意図もない。上述の教示に照らせば、様々な変更が可能である。記載した実施形態は、本発明の原理とその実用的な応用を最適に説明し、それにより当業者が、特定の使用に適応する様々な変更および実施形態を活用できるように選ばれたものである。本発明の技術的範囲は、本書に添付された請求項によって定義される。
【図面の簡単な説明】
【0084】
【図1】NANDストリングの平面図を示す。
【図2】図1のNANDストリングの等価回路図を示す。
【図3】図1のNANDストリングの断面図を示す。
【図4】3つのNANDストリングの回路図を示す。
【図5】本発明の様々な態様が実施される非揮発性メモリシステムの1つの実施形態のブロック図を示す。
【図6】メモリアレイの構成の例を示す。
【図7】列制御回路の一部を示す。
【図8】メモリセルの閾区分を示し、マルチ状態メモリセルをプログラミングする技術の一例を示す。
【図9】メモリアレイをプログラミングする処理の1つの実施形態のフローチャートを示す。
【図10】オーバー・プログラミングの検知を実行するための処理の1つの実施形態のフローチャートを示す。
【図11】オーバー・プログラミングの検知を実行するための処理の1つの実施形態のフローチャートを示す。
【図12】オーバー・プログラミングの検知を実行するための処理の1つの実施形態のフローチャートを示す。
【図13】オーバー・プログラミングの検知を実行するための処理の1つの実施形態のフローチャートを示す。
【図14A】プログラミングとオーバー・プログラミングの検知を実行するための処理の1つの実施形態のフローチャートを示す。
【図14B】プログラミングとオーバー・プログラミングの検知を実行するための処理の他の実施形態のフローチャートを示す。
【図15A】メモリの閾区分を示す。
【図15B】オーバー・プログラミングの検知を実行するための処理の1つの実施形態のフローチャートを示す。
【図15C】オーバー・プログラミングの検知を実行するための処理の他の実施形態のフローチャートを示す。
【図16】オーバー・プログラミングの検知を実行するためのメモリの閾区分を比較点の変形例とともに示す。
【図17】オーバー・プログラミングの検知を実行するための他の実施形態に対応する真理値表を示す。
【図18】オーバー・プログラミングの検知を実行するための他の実施形態に対応する真理値表を示す。
【図19】オーバー・プログラミングの検知を実行するための他の実施形態に対応する真理値表を示す。
【図20】オーバー・プログラミングの検知を実行するための他の実施形態に対応する真理値表を示す。
【図21】オーバー・プログラミングの検知を実行するための他の実施形態に対応する真理値表を示す。
【図22】オーバー・プログラミングの検知を実行するための他の実施形態に対応する真理値表を示す。
【技術分野】
【0001】
本発明は、Jian Chen、Yan Li、及びJeffrey W. Lutzeによって本出願と同日に出願された「DETECTING OVER PROGRAMMED MEMORY」と題する特許出願に関連する。この内容は、本明細書に組み込まれる。
本発明は、一般的にメモリデバイスのために技術に関し、特に、メモリデバイスがオーバー・プログラミングされたか否かを検知する技術に関する。
【背景技術】
【0002】
半導体メモリデバイスは、様々な電子装置に利用される。例えば、非揮発性半導体メモリは、携帯電話、デジタルカメラ、パーソナルデジタルアシスタント、モバイルコンピュータデバイス、非モバイルコンピュータデバイス等に利用されている。EEPROMとフラッシュメモリは、最もポピュラーな非揮発性半導体メモリである。
【0003】
典型的なEEPROMとフラッシュメモリは、浮遊ゲートを有するメモリセルを利用する。浮遊ゲートは、半導体基板のチャネル領域から絶縁された状態でそのチャネル領域上に配置されている。浮遊ゲートは、ソース領域とドレイン領域の間に配置されている。制御ゲートは、浮遊ゲートから絶縁された状態でその浮遊ゲート上に配置されている。メモリの閾電圧は、浮遊ゲートに帯電している電荷量によってコントロールされる。即ち、メモリセルをターンオンしてソースとドレインの間を導通する前に制御ゲートに印加されるべき最小限の電圧量は、浮遊ゲートの電荷レベルによってコントロールされる。
【0004】
EEPROMとフラッシュメモリデバイスの中には、2つの電荷範囲を保存するために使用される浮遊ゲートを備えるものがある。この場合、メモリセルは、2つの状態の間でプログラム又は消去されることが可能である。EEPROM又はフラッシュメモリデバイスをプログラミングする際に、制御ゲートにプログラミング電圧が印加され、ビット線が接地される。Pウェルからの電子は、浮遊ゲートに注入される。浮遊ゲートに電子が溜まると、浮遊ゲートは負に帯電し、メモリセルの閾電圧が上がる。
【0005】
一般的に、制御ゲートに印加されるプログラミング電圧は、連続パルスとして印加される。各パルスの大きさは、所定のステップサイズずつ増加する。パルスとパルスの間の期間に検証操作が行われる。即ち、並列にプログラミングされている各セルのプログラミングレベルは各プログラミングパルスの間に読み取られ、その読み取ったレベルがプログラミングされるべき検証レベル以上であるか否かが判断される。プログラミングを検証する1つの手法では、特定の比較点で導通性をテストする。
【0006】
上記の「導通」は、デバイスのチャネルの電流の流れに対応し、デバイスのON状態を意味する。OFF状態は、ソースとドレインの間のチャネルに電流が流れていないことを意味する。一般的に、フラッシュメモリセルは、制御ゲートに印加された電圧が閾電圧より大きければ導通し、制御ゲートに印加された電圧が閾電圧より低ければ導通しない。セルの閾電圧を適当な値に設定することによって、特定の印加電圧に対して導通する(あるいは導通しない)セルをつくりだすことができる。特定の印加電圧でセルが電流を導通するか否かを判断することによって、セルの状態が特定される。
【0007】
マルチビットあるいはマルチ状態フラッシュメモリセルは、デバイス内の複数の個別の閾電圧の範囲を指定することによってつくりだされる。指定された各個別閾電圧範囲は、データビット群の所定の値に相当する。メモリセルにプログラミングされるデータとセルの閾電圧レベルの関係は、セルに対して採用されるデータコード化スキームに依存する。例えば、米国特許第6222762号と、2003年6月13日に出願された米国特許出願第10/461244号(Tracking Cells For A Memory System)は、様々なデータコード化スキームを開示している。これらの内容は、本明細書に組み込まれる。
データを適切に保存するためには、マルチ状態メモリセルの複数の閾電圧レベル範囲の間隔を十分にあけて、メモリセルのレベルを明確な作法でプログラミング又は消去することが要求される。
【0008】
多くの場合、複数のメモリセルを並列にプログラミングする必要がある。これは、例えば、社会的に望まれている「短時間でプログラミングできるメモリシステム」を実現するためである。しかしながら、複数のメモリセルが同時にプログラミングされると問題が生じる。メモリセルを備える半導体装置の構造及び操作の些細な違いによって、各メモリセルの特徴がかわるからである。通常、異なるセルに対するプログラミングタイミングに差が生じる。この結果、あるメモリセルが別のメモリセルよりも速くプログラミングされてしまい、いくつかのメモリセルが意図した状態とは異なる状態にプログラミングされてしまう可能性が生じる。複数のメモリセルが他より速くプログラミングされてしまうと、保存されるべきデータが意図された閾電圧範囲を超えてエラーが生じる。
【0009】
通常、データがプログラミングされる場合、デバイスの検証処理では、メモリセルの閾電圧が最低レベルよりも高いことを保証する。しかしながら、デバイスは、閾電圧の上限を保証しない。いくつかのデバイスは、ソフトプログラミング処理(下記参照)が閾電圧を大きくし過ぎていないかをチェックする。しかしながら、これらのデバイスは、標準のプログラミング処理が閾電圧を大きくし過ぎてしないかはチェックしない。従って、閾電圧が所望の状態の範囲を超えるオーバー・プログラミングが、認識されないままに発生し得る。オーバー・プログラミングはメモリセルに誤ったデータを保存させてしまうことになるので、その後の読取操作でエラーが生じる。オーバー・プログラミングに関するさらなる情報は、米国特許第5321699号、同第5386422号、同第5469444号、同第6134140号、及び同第5602789号に記載されている。
【発明の開示】
【発明が解決しようとする課題】
【0010】
多くのメモリシステムは、後に行われる読取操作中にエラー訂正コード(ECC)を用いて、オーバー・プログラミングに対処する。デバイスからデータが読取られる時に、エラーが起こったか否かを確認するためにECCが使用される。エラーが些細であれば、ECCを用いてエラーを訂正することができる。しかしながら、オーバー・プログラミングに起因したエラーを訂正するためにECCを用いると、少なくとも3つの問題が生じる。
まず、ECC処理が長い処理時間を必要とするため、メモリシステムの操作の速度が極端に下がる。
また、ECCを妥当な時間内で実行するためには、付加的な専用ハードウェアが要求される。このような専用ハードウェアをメモリシステムチップ内に配置するためには、多くの空間が必要になる。より小さなホストデバイスにフィットする小さなシステムを実現するために、メモリシステムのサイズを小さくすることが現在のトレンドである。従って、新しいメモリのデザインは、ECCのために使用されるスペースを減らす傾向がある。
また、複数のエラーがある場合、ECCではそれらのエラーの全てを訂正できない可能性がある。
従って、メモリセルのオーバー・プログラミングを検知するためのより優れた手法が必要とされている。
【課題を解決するための手段】
【0011】
本発明は、概略的に言うと、メモリデバイスがオーバー・プログラミングされたか否かを検知するための技術に関する。1つ又は複数のメモリデバイスがオーバー・プログラミングされたと検知されると、システムは、データを訂正するための公知の手法の1つを用いて事態を改善することができる。例えば、システムは、同じメモリデバイス又は別のメモリデバイスにデータを再び書き込むことができる。オーバー・プログラミングの検知は、オーバー・プログラミングに起因したエラーがデータにないことを保証し、結果的にECCの必要性を軽減することができる。
【0012】
本発明の1つの実施形態は、複数の論理ページを用いるメモリシステムにおけるオーバー・プログラミングを検知する方法を含んでいる。この方法は、特定の論理ページのためのデータを第1マルチ状態記憶素子にプログラミングすることと、異なる論理ページからのデータを利用して第1マルチ状態記憶素子がオーバー・プログラミングされたか否かを判断することを含んでいる。
1つの実施例では、システムは、第1マルチ状態記憶素子の閾電圧が比較値より大きいか否かを判断する。第1マルチ状態記憶素子の閾電圧が比較値より大きく、異なる論理ページのためのデータが、第1マルチ状態記憶素子の閾電圧がその比較値を超えるべきではないと示唆した場合に、システムは第1マルチ状態記憶素子がオーバー・プログラミングされたと結論づける。オーバー・プログラミングの検知は、両方の論理ページがプログラミングされた後に実行される。
【0013】
本発明の他の実施形態は、第1制御線に関連する1つ又は複数のマルチ状態記憶素子にプログラミングを実行し、その後に、第2制御線に関連する1つ又は複数のマルチ状態記憶素子にプログラミングを実行することを含んでいる。第2制御線に関連する1つ又は複数のマルチ状態記憶素子にプログラミングを実行した後に、第1制御線に関連する1つ又は複数のマルチ状態記憶素子がオーバー・プログラミングされたか否かの判断が実行される。制御線は、ワード線、ビット線、又は他の種類の制御線でもよい。技術に応じて制御線の種類が決まる。
【0014】
1つの実施形態では、1つ又は複数のオーバー・プログラミング範囲のエッジについて、第1制御線に関連するマルチ状態記憶素子に対して読取操作を実行することによって、オーバー・プログラミングの判断が行なわれる。第1制御線に関連するマルチ状態記憶素子の閾電圧がいずれかのオーバー・プログラミング範囲に含まれる場合に、第1制御線に関連するマルチ状態記憶素子がオーバー・プログラミングされたと判断される。
別の実施形態では、1つ又は複数の読取比較点について、第1制御線に関連するマルチ状態記憶素子に対して読取操作を実行することによって、オーバー・プログラミングの判断が行なわれる。これにより、第1制御線に関連するマルチ状態記憶素子の初期状態が判断される。第1制御線に関連するマルチ状態記憶素子と初期状態のためのエラー訂正コード処理が実行される。マルチ状態記憶素子のためのエラー訂正コード処理が失敗した場合に、そのマルチ状態記憶素子がオーバー・プログラミングされたと判断される。
【0015】
さらに別の実施形態は、第1マルチ状態記憶素子と第2マルチ状態記憶素子をプログラミングすることを含んでいる。このシステムは、第2マルチ状態記憶素子をプログラミングした後に、第1マルチ状態記憶素子がオーバー・プログラミングされたか否かを判断する。
【0016】
1つの実施形態のシステムは、記憶素子のアレイと管理回路を含む。管理回路は、専用ハードウェアを含んでいてもよい。また管理回路は、1つ又は複数の記憶装置(例えば非揮発性メモリ(例えばフラッシュメモリ、EEPROM等))や他のメモリデバイスに保存されたソフトウェアによってプログラミングされるハードウェアを含んでよい。
1つの実施形態では、管理回路は、制御装置と状態機械を含む。別の実施形態では、管理回路は、状態機械のみを含み、制御装置を含まない。管理回路は、上記した工程を実行することができる。
1つの実施形態では、記憶素子がオーバー・プログラミングされたか否かを確認するための処理は、状態機械によって実行される。実施例では、状態機械は、記憶素子のアレイと同じ集積回路チップ上に配置される。
【0017】
本発明の目的及び利点は、図面とともに下記の実施形態を参照することによって、より明確になるものと思われる。
【発明を実施するための最良の形態】
【0018】
フラッシュメモリシステムの一例は、2つの選択ゲートの間に複数のトランジスタが直列に配列されたNAND構造を利用する。直列に配列されたトランジスタ群と選択ゲート群は、NANDストリングと呼ばれる。
図1は、1つのNANDストリングの平面図を示す。図2は、NANDストリングの等価回路を示す。図1と図2のNANDストリングは、第1選択ゲート120と、第2選択ゲート122と、それらの間で直列に配列された4つのトランジスタ100,102,104,106を含む。
選択ゲート120は、NANDストリングをビット線126に接続する。選択ゲート122は、NANDストリングをソース線128に接続する。選択ゲート120は、制御ゲート120CGに適当な電圧を印加することによって制御される。選択ゲート122は、制御ゲート122CGに適当な電圧を印加することによって制御される。
各トランジスタ100,102,104,106は、制御ゲートと浮遊ゲートを有する。トランジスタ100は、制御ゲート100CGと浮遊ゲート100FGを有する。トランジスタ102は、制御ゲート102CGと浮遊ゲート102FGを有する。トランジスタ104は、制御ゲート104CGと浮遊ゲート104FGを有する。トランジスタ106は、制御ゲート106CGと浮遊ゲート106FGを有する。
制御ゲート100CGはワード線WL3に接続されており、制御ゲート102CGはワード線WL2に接続されており、制御ゲート104CGはワード線WL1に接続されており、制御ゲート106CGはワード線WL0に接続されている。
【0019】
図3は、上記のNANDストリングの断面図を示す。図3に示すように、NANDストリングの各トランジスタ(セル又はメモリセルとも呼ばれる)は、Pウェル領域140に形成されている。各トランジスタは、制御ゲート(100CG,102CG,104CG,106CG)と浮遊ゲート(100FG,102FG,104FG,106FG)を含む積層ゲート構造を有する。各浮遊ゲートは、酸化膜上のPウェルの表面に形成される。制御ゲートは浮遊ゲートの上方に位置し、それらの間には制御ゲートと浮遊ゲートを分離する酸化膜が存在する。図3では、トランジスタ120,122のための制御ゲート及び浮遊ゲートを示しているように見える。しかしながら、トランジスタ120及び122においては、制御ゲートと浮遊ゲートは互いに接続されている。
メモリセル群の制御ゲート群(100,102,104,106)は、ワード線を構成する。N+拡散層130,132,134,136,138は、隣接するセルによって共有される。これにより、各セルが互いに直列に接続されたNANDストリングが構成される。これらのN+拡散層は、各セルのソース及びドレインを構成する。例えば、N+拡散層130は、トランジスタ122のドレインであるとともに、トランジスタ106のソースである。N+拡散層132は、トランジスタ106のドレインであるとともに、トランジスタ104のソースである。N+拡散層134は、トランジスタ104のドレインであるとともに、トランジスタ102のソースである。N+拡散層136は、トランジスタ102のドレインであるとともに、トランジスタ100のソースである。N+拡散層138は、トランジスタ100のドレインであるとともに、トランジスタ120のソースである。N+拡散層126は、NANDストリングのビット線に接続される。N+拡散層128は、複数のNANDストリングの共有ソース線に接続される。
【0020】
図1〜3は、NANDストリングに含まれるメモリセルを4個示す。しかしながら、この4つのトランジスタの使用は例に過ぎない。NANDストリングは、4個より多いメモリセルを含んでいてもよいし、4個より少ないメモリセルを含んでもよい。例えば、NANDストリングは、8個のメモリセルを含むことができるし、16個のメモリセルを含むこともできる。32個のメモリセルを含むこともできる。NANDストリングに含まれるメモリセルの数は、本明細書の説明によって限定されることはない。
【0021】
NAND構造を用いるフラッシュメモリシステムに対する通常のアーキテクチャは、複数のNANDストリングを含む。例えば、図4は、多数のNANDストリングを有するメモリアレイの中の3つのNANDストリング202,204,206を示す。図4の各NANDストリングは、2個の選択トランジスタと4個のメモリセルを含む。例えば、NANDセル202は、選択トランジスタ220,230と、メモリセル222,224,226,228を有する。NANDセル204は、選択トランジスタ240,250と、メモリセル242,244,246,248を有する。各ストリングは、各自の選択トランジスタ(例えば選択トランジスタ230と選択トランジスタ250)によってソース線に接続される。
選択線SGSは、ソース側の選択ゲートを制御するために利用される。各NANDストリングは、選択線SGDによって制御される選択トランジスタ220,240等によって各自のビット線に接続される。他の実施形態では、選択線は必ずしも共有されていなくてよい。
ワード線WL3は、メモリセル222の制御ゲートとメモリセル242の制御ゲートに接続される。ワード線WL2は、メモリセル224の制御ゲートとメモリセル244の制御ゲートとメモリセル250の制御ゲートに接続される。ワード線WL1は、メモリセル226の制御ゲートとメモリセル246の制御ゲートに接続される。ワード線WL0は、メモリセル228の制御ゲートとメモリセル248の制御ゲートに接続される。
図示されるように、各ビット線とそのNANDストリングは、メモリセルアレイの列を構成する。ワード線(WL3,WL2,WL1,WL0)は、アレイの行を構成する。
【0022】
各メモリセルは、データ(アナログあるいはデジタル)を保存することができる。デジタルデータの1ビットを保存する場合、メモリセルの可能な閾電圧の範囲は、2つの範囲に分けられる。一方の範囲は論理データ「1」が割り当てられ、他方の範囲は論理データ「0」が割り当てられる。
NANDタイプのフラッシュメモリの一例では、メモリセルが消去された後の閾電圧は負であり、論理「1」と定義される。プログラミング操作後の閾電圧は正であり、論理「0」と定義される。閾電圧が負の時に読取りが行なわれると、メモリセルはターンオンし、論理「1」が保存されていることを示す。閾電圧が正の時に読取が行なわれると、メモリセルはターンオンせず、論理「0」が保存されていることを示す。
メモリセルは、複数レベルの情報(例えば複数ビットのデジタルデータ)を保存することもできる。複数レベルのデータを保存する場合、可能な閾電圧の範囲はデータのレベルの数に分けられる。例えば、4つのレベルの情報が保存される場合、閾電圧は4つの範囲に分けられ、その4つの範囲はデータ値「11」、「10」、「01」、「00」が割り当てられる。NANDタイプのメモリの一例では、消去操作後の閾電圧は負であり、「11」と定義される。状態「10」、「01」、「00」には、正の閾電圧が使用される。
【0023】
NANDタイプのフラッシュメモリと操作の例は、米国特許第5570315号、同第5774397号、同第6046935号、同第6456528号、及び米国特許出願第09/893277号(公報第2003/0002348号)に記載されている。これらの内容は、本明細書に組み込まれる。
他のタイプのフラッシュメモリデバイスも本発明を利用することができる。例えば、米国特許第5095344号、同第5172338号、同第5890192号、及び同第6151248号は、NORタイプのフラッシュメモリを開示する。これらの内容は、本明細書に組み込まれる。また、米国特許第6151248号は、フラッシュメモリの他の例が記載されている。この内容は、本明細書に組み込まれる。
【0024】
図5は、本発明を実施するために使用されるフラッシュメモリシステムの1つの実施形態のブロック図を示す。メモリセル302は、列制御回路304、行制御回路306、Cソース制御回路310、及びPウェル制御回路308によって制御される。
列制御回路304は、メモリセルアレイ302のビット線に接続されている。列制御回路304は、メモリセルに保存されたデータを読取る。また、プログラミング操作中のメモリセルの状態を判断する。また、ビット線の電位レベルを制御してプログラミングを促進あるいは禁止する。
行制御回路306は、ワード線群の中から1つを選択するために各ワード線に接続されている。行制御回路306は、読取電圧、プログラミング電圧、及び消去電圧を印加することができる。
Cソース制御回路310は、メモリセルに接続された共有ソース線(図6では「Cソース」と称する)を制御する。
Pウェル制御回路308は、Pウェル電圧を制御する。
【0025】
メモリセルに保存されているデータは、列制御回路304に読取られ、データ入出力バッファ312を介して外部I/O線に出力される。メモリセルに保存されるプログラミングデータは、外部I/O線を介してデータ入出力バッファ312に入力され、列制御回路304に転送される。外部I/O線は、制御装置318に接続されている。
【0026】
フラッシュメモリデバイスを制御するための命令データは、制御装置318に入力される。命令データは、どの操作がリクエストされているのかをフラッシュメモリに伝える。入力命令は、状態機械316に転送される。状態機械316は、列制御回路304、行制御回路306、Cソース制御回路310、Pウェル制御回路308、及びデータ入出力バッファ312を制御する。状態機械316は、フラッシュメモリのステータスデータ(READY/BUSYやPASS/FAIL等)を出力することもできる。
【0027】
制御装置318は、パソコン、デジタルカメラ、パーソナルデジタルアシスタント等のホストシステムに接続されている(あるいは接続可能である)。制御装置318は、ホストから命令やデータを受信したり、ホストにデータやステータス情報を提供したりするために、ホストと通信している。制御装置318は、ホストからの命令を命令信号に変換する。命令信号は、状態機械316と通信している命令装置314によって受信可能及び実行可能な信号である。通常、制御装置318は、メモリアレイから読取られたりメモリアレイに書き込まれたりするユーザデータのためのバッファメモリを含んでいる。
【0028】
メモリシステムの典型的な例は、制御装置318を含む1つの集積回路と、1つ又は複数の集積回路チップを有する。各集積回路チップは、メモリアレイと、それに関連する制御回路、入出力回路、及び状態機械回路を含んでいる。システムのメモリアレイ群と制御回路群を1つ又は複数の集積回路チップに統合することが近年のトレンドである。
メモリシステムは、ホストシステムの一部として埋め込まれてもよい。あるいは、メモリシステムは、ホストシステムにリムーバブルに差し入れできるメモリカード(又は他のパッケージ)に含まれていてもよい。このようなリムーバブルカードは、メモリシステム全体(例えば制御装置を含む)を含んでいてもよい。あるいは、メモリアレイとそのメモリアレイに関連する周辺回路のみを含んでもよい。従って、制御装置は、ホストに埋め込まれていてもよいし、リムーバブルメモリシステムに含まれていてもよい。
【0029】
図6を参照して、メモリセルアレイ302の構造の例を説明する。一例として、1024個のブロックに区分けされたNANDフラッシュEEPROMについて説明する。
1つのブロックに保存されたデータは同時に消去される。1つの実施形態では、1つのブロックは、同時に消去できるセルの最小単位である。この例では、各ブロックが、偶数列と奇数列に分けられた8512個の列を有する。ビット線は、偶数ビット線(BLe)と奇数ビット線(BLo)に分けられる。
図6は、4個のメモリセルを直列に接続することによって構成されたNANDストリングを示す。各NANDストリングに4個のセルが含まれているように示されているが、4個以上あるいは4個以下にしてもよい。NANDストリングの一端は、第1選択トランジスタSGDを介して対応するビット線に接続されている。他端は、第2選択トランジスタSGSを介してCソースに接続されている。
【0030】
読取およびプログラミング操作の間に、4256個のメモリセルが同時に選択される。選択されたメモリセル群は、同じワード線と同じ種類のビット線(例えば偶数のビット線)を有する。従って、532バイトのデータが同時に読取又はプログラミングされる。同時に読取又はプログラミングされた532バイトのデータは、1つの論理ページを構成する。従って、1つのブロックは、少なくとも8つの論理ページ(4つのワード線と奇数又は偶数の組合せ)を保存することができる。各メモリセルが2ビットのデータ(例えばマルチレベルセル)を保存する場合、1つのブロックは16ページを保存する。別のサイズのブロックやページについても、本発明を適用することができる。
【0031】
Pウェルを消去電圧(例えば20V)まで上げるとともに選択されたブロックのワード線を接地することによって、メモリセルが消去される。ソース線とビット線は浮遊している。消去は、メモリアレイの全体、個々のブロック、又は他の単位において実行することができる。電子は、浮遊ゲートからPウェル領域に移動し、閾電圧は負になる。
【0032】
読取検証操作では、トランジスタをパスゲートとして操作するために、選択ゲート(SGDとSGS)と選択されていないワード線(例えばWL0,WL1,WL3)が読取パス電圧(例えば4.5V)まで上げられる。選択されたワード線(例えばWL2)の電圧レベルは、関連しているメモリセルの閾電圧がそのレベルに到達しているか否かを確認するために、それぞれの読取検証操作に対して特定される。例えば、2レベルのメモリセルに対する読取操作では、閾電圧が0Vより高いか否かを判断するために、選択されたワード線WL2を接地してもよい。検証操作では、選択されたワード線WL2を例えば2.4Vに接続する。これにより、閾電圧が少なくとも2.4Vに達したか否かが検証される。
ソースとPウェルは0Vである。選択されたビット線(BLe)は、例えば0.7Vのレベルに予備チャージされる。閾電圧が読取レベル又は検証レベルよりも大きい場合、非導電メモリセルになるために、関連するビット線(BLe)の電位レベルは高レベルに維持される。一方において、閾電圧が読取レベル又は検証レベルよりも小さい場合、導電性メモリセル(M)になるために、関連しているビット線(BLe)の電位レベルは、例えば0.5V以下という低レベルに下がる。メモリセルの状態は、ビット線に接続されているセンス増幅器によって検知される。メモリセルが消去されるか又はプログラミングされるかは、浮遊ゲートに負電荷が帯電しているか否かに依存する。例えば、浮遊ゲートに負電荷が帯電している場合、閾電圧は上昇し、トランジスタは促進モードになることができる。
上記した消去、読取、及び検証操作は、この技術分野における公知のテクニックに基づいて実行される。従って、上記の各説明は、当業者が変更することができる。
【0033】
図7は、図5の列制御回路304の一部を示す。ビット線の各ペア(例えばBLeとBLo)は、センス増幅器に接続される。このセンス増幅器は、3つのデータラッチに接続されている。即ち、第1データラッチ402と第2データラッチ404と第3データラッチ406に接続されている。3つのデータラッチのそれぞれは、1ビットのデータを保存することができる。
センス増幅器は、読取操作又は検証操作中に選択されたビット線の電位レベルを検知し、検地したデータを二値データとして保存し、プログラミング操作中にビット線電圧を制御する。センス増幅器は、「evenBL」と「oddBL」の信号のいずれかを選択することによって、選択されたビット線に選択的に接続される。
データラッチ402,404,406は、読取データを出力したりプログラミングデータを保存したりするために、I/O線408に接続されている。I/O線408は、図5のデータ入出力バッファ312に接続されている。データラッチ402,404,406は、ステータス情報を入出力するために、ステータス線410にも接続されている。この実施形態では、1つのビット線のペア(偶数と奇数)に対して、センス増幅器、第1データラッチ402、第2データラッチ404、及び第3データラッチ406が備えられている。
【0034】
図8は、2ビットのデータ(例えば4つのデータ状態)を保存するメモリセルの閾電圧の区分を示す。区分460は、消去状態(「11」を保存している状態)のセルの閾電圧の区分を示す。このセルは、負の閾電圧レベルを持っている。区分462は、「10」を保存しているセルの閾電圧の区分を示す。区分464は「00」を保存しているセルの閾電圧の区分を示す。区分466は、「01」を保存しているセルの閾電圧の区分を示す。
2ビットは単一のメモリセルに保存され、この例では、各ビットは異なる論理ページの一部である。四角内に示すビットは、下側ページに対応する。丸内に示すビットは上側ページに対応する。1つの実施形態では、これらの論理状態は、グレイコードオリエンテーション(11、10、00、01)を利用して物理的状態に割り当てられる。その結果、浮遊ゲートの閾電圧が誤ってシフトしても、1ビットのみが影響を受ける。
なお、図8では4つの状態を示しているが、本発明は4つ以上あるいは4つ以下の状態を利用してもよい。
【0035】
狭い区分は幅広い読取マージン(状態間の距離)をもたらすために、信頼性を高めるためには各区分を狭くする方が好ましい。「Fast and Accurate Programming Method for Multi-level NAND EEPROMs, pp129-130, Digest of 1995 Symposium on VLSI Technology,")」によると、原理上、区分を幅0.2Vに制限するためには、通常の反復プログラミングパルスをステップ間で0.2V増加することが必要とされる。また、区分を幅0.05Vに狭めるためには、0.05Vステップが必要とされる。プログラミング電圧の増加ステップを小さくしてセルをプログラミングすることは、結果的にプログラミング時間を長くしてしまう。なお、上記の文献の内容は、本明細書に組み込まれる。
【0036】
図8は、4状態NANDメモリセルをプログラミングするツー・パス技術の例を示す。第1プログラミングパスでは、セルの閾電圧レベルは、下側論理ページにプログラミングされるビットに基づいて設定される。そのビットが論理「1」の場合、閾電圧は変更されない。そのビットが以前に消去されたことによって、既に適切な状態にあるためである。しかしながら、プログラミングされるビットが論理「0」の場合、矢印470で示されるように、セルの閾電圧レベルが閾電圧区分462まで上げられる。これにより、第1プログラミングパスは完了する。
【0037】
第2プログラミングパスでは、セルの閾電圧レベルは、上側論理ページにプログラミングされるビットに基づいて設定される。上側論理ページのビットが論理「1」を保存している場合、セルは閾電圧区分460又は462に対応する状態にあるので、プログラミングは行われない。閾電圧区分460と462はどちらも上側ビット「1」を有しており、セルの状態が閾電圧区分460と462のどちらに対応するかは、下側ページのプログラミングに依存する。
上側ページのビットが論理「0」の場合、閾電圧はシフトされる。第1パスの結果、セルの状態が閾区分460に対応する消去状態のままだった場合、第2パスでは、そのセルが矢印474で示すように閾電圧が上げられるようにプログラミングされる。具体的には、その閾電圧が閾電圧区分466内に収まるようプログラミングされる。一方、第1パスの結果、セルの状態が閾区分462に対応する状態にプログラミングされた場合、第2パスでは、そのセルが矢印472で示すように、閾電圧が上げられるようプログラミングされる。具体的には、その閾電圧が閾電圧区分464内に収まるようにプログラミングされる。第2パスでは、下側ページのデータは変更されずに、上側ページに論理「0」を保存するよう指定された状態にプログラミングされる。
なお、各区分には特定のビットパターンが割り当てられているが、これと異なるビットパターンが割り当てられてもよい。その場合、プログラミングが実行される状態は、図8に示すものと異なってよい。
【0038】
通常、並列にプログラミングされるセルは、ワード線に1つ置きに配置されているセルである。例えば、図4は、ワード線WL2に沿う多数のセルのうち3つのメモリセル224,244,250を示す。1つ置きのセルの1つの組は、セル224と250を含んでおり、論理ページ0と2(偶数)からのビットを保存する。一方、別の1つ置きのセルのセットは、セル244を含んでおり、論理ページ1と3(奇数)からのビットを保存する。上記の例では、論理ページ0と1は下側ページであり、論理ページ2と3は上側ページである。
【0039】
図8は、読取比較点と検証比較点も示している。例えば、読取比較点は、Vr10,Vr00,Vr01を含んでいる。Vr10,Vr00,Vr01に対応する電圧は、読取操作の間にメモリセルの制御ゲートに印加され、それによって、メモリセルがどの時点で導通しどの時点で導通しないのかを判断をする。3つの読取操作に基づいて、メモリシステムは、メモリセルがどの閾区分(どの状態)に当てはまるのかを判断することができる。例えば、3つの読取操作のいずれにおいてもメモリセルが導通しない場合、そのメモリセルは状態01にある。メモリセルが、Vr01を制御ゲートに印加した場合にのみに導通する場合、そのメモリセルは状態00にある。メモリセルが、Vr00を印加した時には導通し、Vr10を印加した時には導通しない場合、そのメモリセルは状態10にある。メモリセルが、Vr10,Vr00,Vr01を印加した時に導通する場合、そのメモリセルは状態11にある。
1つの実施形態では、読取比較点Vr10,Vr00,Vr01のそれぞれは、閾区分の隣接する2つの状態の中間点である。検証比較点Vv10,Vv00,Vv01は、セルが十分にプログラミングされたことを確認するためにプログラミング処理の間に利用される。
【0040】
図8は、オーバー・プログラミング検証比較点VopSP,Vop10,Vop00,Vop01も示している。これらのオーバー・プログラミング検証比較点は、特定のメモリセルがオーバー・プログラミングされたか否かを判断するために使用される。
例えば、状態11にあるはずのメモリセルの制御ゲートにVopSPを印加してもそのメモリセルが導通しない場合に、そのセルはオーバー・プログラミング(あるいはオーバー・ソフト・プログラミング)されたと判断できる。
状態10にあるはずのメモリセルの制御ゲートにVop10を印加してもそのセルが導通(例えばターンオン)しない場合に、そのメモリセルがオーバー・プログラミングされたと結論づけることができる。
状態00にあるはずのメモリセルの制御ゲートにVop00を印加した時にそのメモリセルが導通(例えばターンオン)しない場合に、そのセルがオーバー・プログラミングされたと判断することができる。
状態01にあるはずのメモリセルの制御ゲートにVop01を印加した時にそのメモリセルが導通(例えばターンオン)しない場合に、そのセルがオーバー・プログラミングされたと結論づけることができる。
オーバー・プログラミング検証比較点のそれぞれは、隣接する読取比較点より若干低い。例えば、1つの実施形態では、各検証比較点は、隣接する読取比較点よりも50mV低い。他の実施形態では、検証比較点と隣接する読取比較点の違いは、50mV以上あるいは50mV以下でもよい。1つの実施形態では、オーバー・プログラミング検証処理は、状態機械316によって実行される。
【0041】
プログラミング処理の1つの実施形態では、まず、下側ページのプログラミングの前にメモリセルが消去される(ブロック単位あるいは他の単位で消去される)。プログラミング処理を開始する場合、ホストからのデータ読込命令又は書込命令が制御装置によって受信される。制御装置は、適当な命令をデータ入出力バッファ312と状態機械316に提供する。制御装置318は、データを書き込むアドレスを受信する。このアドレスは、メモリアレイ302内の特定の論理ページ(複数でもよい)と物理的アドレスにマッピングされる。アドレスデータは、制御装置318からデータ入出力バッファ312に送信される。いくつかの実施形態では、データ入出力バッファ312に加えて状態機械316にも送信される。そして、データは、プログラミング操作のためのアドレスに基づいて、適当な第1データラッチ402に送信される。その第1データラッチ402からのデータは、対応する第2データラッチ404にロードされる。制御装置からのプログラミング命令に応じて、状態機械316は、図9のフローチャートに表示されるプログラミング処理を開始する。
【0042】
ステップ594では、状態機械316は、上側ページと下側ページのどちらにデータが書き込まれるのかを判断する。データが下側ページに書き込まれる場合、処理はステップ600に進む。
データが上側ページに書き込まれる場合、状態機械は、ステップ596の下側ページのデータを確認するために、下側ページ読取操作を実行する。図8を参照すると、上側ページのプログラミングは、メモリセルを状態00又は状態01にプログラミングすることを含む。下側ページのデータが論理「1」の場合、上側ページのプログラミング処理は、メモリセルを状態01にプログラミングすることを含む(図8の矢印474参照)。従って、システムは、上側ページのプログラミング処理の間に、メモリセルがどの状態にプログラミングされなければならないかを判断するために下側ページのデータを知る必要がある。
【0043】
ステップ596の1つの実施形態では、状態機械は、Vr10で読取操作を実行する。メモリセルが導通すれば(ターンオンすれば)、下側ページに対する読取データは「1」である。メモリセルが導通しなければ(ターンオンしなければ)、下側ページに対する読取データは「0」である。下側ページのデータは、第3データラッチ406に保存される。他の読取処理を用いて下側ページを読取ることも可能であり、第3データラッチ406以外の場所に下側ページのデータを保存することもできる。下側ページのデータを第3データラッチ406に保存した後に、処理はステップ600に進む。
【0044】
ステップ600では、状態機械は、適当なワード線(複数でもよい)にプログラミングパルスを印加する。第1パルスが印加される前に、プログラミング電圧は開始パルス(例えば12V)に初期化され、状態機械に整備されているプログラムカウンタは0に初期化される。
1回目のステップ600では、選択されたワード線に第1プログラミングパルスが印加される。特定の第1データラッチに論理「0」が保存されている場合、そのメモリセルに対応するビット線は接地される。一方において、特定の第1データラッチに論理「1」が保存されている場合、そのメモリセルに対応するビット線はVddに接続され、プログラミングは禁止される。プログラミングを禁止することに関するさらなる情報は、「Improved Self Boosting Technique(2003年3月5日に出願された米国特許出願第10/379608号)」に開示されている。この内容は、本明細書に組み込まれる。
【0045】
ステップ602では、選択されたメモリセルが検証される。(例えばセンス増幅器の出力を第2データラッチと比較することによって)選択されたセルのターゲット閾電圧がターゲットレベルに到達したと検知された場合、第2データラッチ404に保存されているデータは論理「1」に変更される。閾電圧が適当なレベルに到達していないと検知された場合、第2データラッチ404に保存されているデータは変更されない。このように、対応する第2データラッチ404に論理「1」が保存されているメモリセルは、プログラミングされる必要はない。全ての第2データラッチが論理「1」を保存した場合、状態機械は、選択された全てのセルにプログラミングが行われたと(ライン410を介して)認識する。
ステップ604は、全ての第2データラッチ404が論理「1」を保存しているか否かを確認することを含んでいる。全ての第2データラッチ404が論理「1」を保存している場合、プログラミングの第1ステージが完了し、適当なステータスメッセージがステップ610で報告される。
【0046】
ステップ604において、全ての第2データラッチ404が論理「1」を保存していないと判断された場合、プログラミング処理は続行される。ステップ606では、プログラムカウンタがプログラミング制限値と比較される。1つの例では、プログラミング制限値は20である。プログラムカウンタが20(例えばプログラミングを試みた最大回数)に達している場合、プログラミング処理は失敗であり(ステップ608)、適当なステータスメッセージが報告される。
プログラムカウンタが最大値より低い場合、プログラミング電圧は次のステップサイズ分だけ増加され、プログラムカウンタはインクリメントされ、プログラミング処理は次のパルスを印加するためにステップ600に進む。
【0047】
ステップ604の検証が成功した場合、プログラミングされた各メモリセルの閾電圧は、図8に示す区分のいずれか1つに当てはまるはずである。しかしながら、上記の処理は、プログラミングされたセルの閾電圧が、少なくとも適当な検証比較点よりも高いことのみを検証している。ステップ602で用いた検証比較点は、ターゲット閾区分内で許容できる最低限の電圧レベルである。例えば、図8を参照すると、ステップ604において、セルが状態10にプログラミングされたと検証するための検証比較点はVv10であり、状態00にプログラミングされたと検証するための検証比較点はVv00であり、状態01にプログラミングされたと検証するための検証比較点はVv01である。即ち、上述の処理は、プログラミング処理が所望の状態を下回らないことを検証する。
これまでは、プログラミング処理が所望の状態を上回ってしまったことを確認することはなかった。例えば、メモリを状態10にプログラミングするのが目的である場合、そのメモリセルの閾電圧がVop10より高い値にプログラミングされてしまったら、そのメモリセルはオーバー・プログラミングされたことになる。ステップ620〜676は、プログラミング処理がメモリセルをオーバー・プログラミングしたか否かを判断するために利用される。
【0048】
ステップ610の後、図9の処理は2つの並列経路に分かれる。プログラミング処理が下側ページをプログラミングした場合、処理はステップ620〜644を実行する。プログラミング処理が上側ページをプログラミングした場合、処理はステップ660〜676を実行する。いくつかのセルが下側ページにプログラミングされるとともに、同じプログラミング処理の間に他のセルが上側ページにプログラミングされる可能性がある。従って、異なるメモリセル群に対して異なるステップが実行されてもよい。他の実施形態では、上側ページと下側ページのどちらがプログラミングされているのかを問わず、ステップ620〜644とステップ660〜676を、プログラミングされている全てのセルに対して実行することができる。
【0049】
下側ページがプログラミングされている場合、ステップ620が実行される。ステップ620は、ソフトプログラミングに起因するオーバー・プログラミングを検証する処理を含んでいる。即ち、ステップ620は、消去処理の後に実行された(又は消去処理の一部として実行された)ソフトプログラミング処理が、消去されたメモリセルの許容範囲以上に閾電圧を上げたのか否かを判断する処理を実行することを含んでいる。
メモリセルが消去される場合、そのメモリセルの閾電圧が低すぎる場合がある。閾電圧が低すぎる問題を改善するために、ソフトプログラミング処理が実行され、その消去されたメモリセルの閾電圧を適当なレベルに上げる。ソフトプログラミング処理が閾電圧を上げすぎて、そのセルをオーバー・プログラミングしてしまう可能性がある(閾電圧がVopSPより高くなる可能性がある)。ステップ620では、このようにオーバー・プログラミングされたセルを検知する。
ステップ622では、各セルが、ソフトプログラミングに起因するオーバー・プログラミング検証処理(ステップ620)をパスしたか否かを判断する。全てのセルがパスしなかった場合、ステップ624では、ソフトプログラミングに起因するオーバー・プログラミング検証が失敗した旨を示すステータスがリターンされる。ステップ620の処理をパスした場合(ソフトプログラミングの間にオーバー・プログラミングされたセルがなかった場合)、ステップ638では、状態10のオーバー・プログラミング検証処理が実行される。
【0050】
ステップ638は、状態10のオーバー・プログラミング検証処理を実行することを含んでいる。状態機械は、状態10にあるはずのセルの閾電圧がVop10より高いか否かを判断する。閾電圧がVop10より高ければ、セルはテスト(ステップ640)をパスすることができず、オーバー・プログラミングによる失敗を示すステータスがリターンされる(ステップ642)。1つの実施形態では、このステータスは、オーバー・プログラミングが失敗である旨のみを示していてもよい。他の実施形態では、閾電圧が許容レベルをどれだけ上回ったのかを示す値をリターンすることもできる。
ステップ638の処理において、メモリセルがオーバー・プログラミングされたと判断されなければ、ステップ644で「パス」のステータスがリターンされる。ステップ644の他の実施形態では、状態10のオーバー・プログラミング検証がパスであった旨を示すステータスをリターンすることができる。
【0051】
上側ページがプログラミングされた場合、状態00のオーバー・プログラミング検証処理をステップ660で実行する。システムは、状態00にあるはずのメモリセルの閾電圧がVop00より高いか否かを判断するためにチェックする。セルがパスしない場合(状態00にあるはずのメモリセルの閾電圧がVop00より高い場合)、ステップ664において、オーバー・プログラミングによる失敗を示すステータスが提供される。他の実施形態では、このステータスは、状態00のオーバー・プログラミングによる失敗を示してもよい。セルがオーバー・プログラミングされていないと判断された場合、処理はステップ670に進み、状態01のオーバー・プログラミング検証処理を実行する。
【0052】
ステップ670では、システムは、状態01にあるはずのセルの閾電圧がVop01より高いか否かを判断する。状態01にあるはずのセルの閾電圧が検証比較点Vop01より高い場合は、そのセルがテストに失敗したことを意味し、ステップ674において失敗のステータスが報告される。全てのセルがテストをパスした場合(セルがオーバー・プログラミングされていない場合、あるいはセルが状態01にない場合)、ステップ676においてパスのステータスが報告される。1つの実施形態では、ステップ670〜676は省略されてもよい。
【0053】
図10は、ソフトプログラミングに起因するオーバー・プログラミングの検証(図9のステップ620)を実行するための処理の1つの実施形態のフローチャートを示す。
ステップ700では、以前にメモリセルにプログラミングされたデータが、第1データラッチ402にまだ存在している。このデータは、そのメモリセルに対応する第1データラッチ402から第2データラッチ404にロードされる。
ステップ702では、VopSPを用いて検証処理が実行される。即ち、システムは、制御ゲートが電圧VopSPを持つ読取操作を実行することができる。メモリセルが導通した場合、センス増幅器は論理「1」をリターンする。メモリセルが導通しなかった場合、センス増幅器は論理「0」をリターンする。検証データが第2データラッチ404のデータと一致した場合(ステップ704)、第2データラッチ404のデータは「1」に設定される(ステップ706)。ステップ700〜706は、各セルに対して並列に行われる。
メモリセルに対する全ての第2データラッチが「1」に設定された場合(ステップ708)、ソフトプログラミングに起因するオーバー・プログラミングの検証処理は「パス」の結果をリターンする(ステップ710)。全ての第2データラッチ404が「1」に設定されていない場合、処理は失敗する(ステップ712)。
セルが状態10にあった場合は、ステップ700で第2データラッチにロードされるデータは論理「0」となり、検証ステップ702はVopSP電圧を印加してもトランジスタは導通せず、センスデータは「0」を示す。従って、読取データは、第2データラッチ404のデータと一致し、第2データラッチ404は論理「1」に設定され、処理はパスすることになる。
【0054】
図11は、状態10のオーバー・プログラミング検証(図9のステップ638)を実行するための処理のフローチャートである。
図11のステップ764では、システムは、Vop10を用いて検証処理を実行する。即ち、Vop10を様々なメモリセルの制御ゲートに印加して読取操作を実行する。セルがオーバー・プログラミングされておらず状態11又は10にある場合、そのセルは導通するはずである。従って、論理「1」が受信されるはずである。
ステップ766では、検証ステップからの結果が第2データラッチ404にロードされる。全てのセルがオーバー・プログラミングされていない場合、その全てのセルは、各自の第2データラッチに論理「1」を保存しているはずである。全ての第2データラッチが論理「1」の場合(ステップ768)、処理はパスする(ステップ770)。全ての第2データラッチが論理「1」ではない場合、処理は失敗する(ステップ772)。
【0055】
図12は、状態00のオーバー・プログラミング検証処理(図9のステップ660)を実行するための処理のフローチャートである。
図12のステップ802では、Vop00を用いて検証処理が実行される。即ち、Vop00をメモリセルの制御ゲートに印加して、読取操作が実行される。1つの実施形態では、メモリセルの閾電圧がVop00より高い場合、そのメモリセルはターンオンせず、論理「0」がリターンされる。メモリセルの閾電圧がVop00より低い場合、そのメモリセルはターンオンし、論理「1」がリターンされる。
ステップ802の検証でリターンされた結果は、対応する第2データラッチ404に保存される。ステップ804では、システムは、検証ステップ802の結果と、第3データラッチ406に保存してある下側ページのデータを比較する。図12の処理は、上側ページのプログラミングの後に実行される。上述したように、上側ページのプログラミングは、まず下側ページのデータを読取り、その下側ページのデータを第3データラッチ406に保存することによって開始される(ステップ596と598を参照)。第3データラッチに保存された下側ページのデータは、検証ステップ802の結果と比較される。
上側ページのプログラミングの後に、状態機械は、メモリセルが状態00にあるはずなのか、それとも状態01にあるはずなのかを知る必要がある。下側ページのデータは、その情報を提供する。下側ページのデータが「0」の場合、上側ページのプログラミングが行われる前に、そのメモリセルが状態10にあったことを意味する。メモリセルが状態10にあった場合、上側ページのプログラミングを実行することによって、そのメモリセルは状態00に移動する(図8の矢印472を参照)。下側ページのデータが「1」の場合、上側ページのプログラミングが行われる前に、そのメモリセルが状態11にあったことを意味する。メモリセルが状態11にあった場合、上側ページのプログラミングを実行することによって、そのメモリセルは状態01に移動する(図8の矢印474を参照)。従って、下側ページのデータが論理「0」の場合、状態機械は、メモリセルがオーバー・プログラミングされたか確認する必要がある。論理ページが論理「1」の場合、メモリセルが状態00であることはない。従って、状態00のオーバー・プログラミング検証に失敗はありえない。
【0056】
1つの実施形態では、第3データラッチ406の下側ページのデータが論理「0」であり、第2データラッチ404に保存されている「ステップ802の検証からリターンされた結果」が論理「0」である場合、そのメモリセルは、ステップ806においてオーバー・プログラミングされたと判断される。これは、メモリセルが状態00にあるべきであることを意味する(しかしながら、そのセルの閾電圧はVop00より高い)。
下側ページのデータが論理「1」の場合、又は、ステップ802の検証処理からリターンされた結果(第2データラッチ404に保存されている結果)が論理「1」である場合、そのメモリセルは状態00に対してオーバー・プログラミングされていないと判断される。
ステップ806では、状態00に対してオーバー・プログラミングされていない各セルに対応する第2データラッチ404が論理「1」に設定される。なお、上側ページのプログラミング処理が、上側ページを論理「1」に維持しようとする場合(例えば状態11あるいは状態10)、対応する第2データラッチは既に論理「1」である。
全ての第2データラッチ404が論理「1」に設定されている場合(ステップ808)、図12の処理はパスする(ステップ810)。全ての第2データラッチが論理「1」に設定されていない場合、状態00に対してオーバー・プログラミングされたメモリセルが1つ又は複数存在するために、図12の処理は失敗する(ステップ812)。
【0057】
図13は、状態01のための上側ページのオーバー・プログラミング検証(図9のステップ670)を実行するための処理の一例のフローチャートである。
ステップ862では、比較点Vop01を用いて検証処理を実行する。セルが導通した場合(論理「1」の検証結果がリターンされた場合)、第2データラッチ404は論理「1」に設定される。セルが導通しない場合、第2データラッチは論理「0」に設定される。
全ての第2データラッチが論理「1」に設定された場合(ステップ864)、図13の処理はパスする(ステップ866)。全ての第2データラッチが論理「1」に設定されていない場合、図13の処理はパスしない(ステップ868)。
【0058】
上述のフローチャートは、検証処理によって制御ゲートに特定の電圧を印加し、メモリセルがターンオンしたのか、あるいはターンオフしたのかを確認することによって実行される。しかしながら、本発明では、メモリセルの状態を判断するために他の検証(読取)手段を用いることができる。例えば、電流感知システムを用いることができる。これは、特定の読取コンディションにある記憶ユニットの電流を基準電流のセットと比較する。
他の実施形態では、記憶ユニットの状態は、複数の異なるパラメータを用いることによって判断することができる。例えば、セルに帯電している電荷レベルの確認は、バイアスコンディションを利用して、その状態のマグニチュードが検知される電流センシングによって実行されてよい。
一方において、コンディションのオンセットが様々なステアリングゲートバイアスコンディションを利用して検知される場合、閾電圧をセンシングすることによって判断することもできる。
また、セルの電荷レベルに定められた駆動力を利用して、(例えばプリチャージされたコンデンサによって)動的にホールドされたセンスノードの放電率を制御することによって、上記の確認を動的に行うこともできる。与えられた放電レベルに達するまでの時間を検知することによって、帯電している電荷レベルが特定される。この場合、セルのコンディションを示すパラメータは時間である。この方法は、米国特許第6222762号に説明されている。この内容は、本明細書に組み込まれる。
さらに、他の技術では、記憶ユニットの状態が周波数をパラメータとして利用することによって判断される。この方法は、米国特許第6044019号に説明されている。この内容は、本明細書に組み込まれる。なお、電流センシングの方法は、米国特許第5172338号により詳しく説明されている。この内容も、本明細書に組み込まれる。
【0059】
隣接する浮遊ゲートの電荷によって生じる電界の存在が原因で、浮遊ゲートに保存されている電荷がシフトすることがある。ここでの問題は、現在読取られているセルがプログラミングされた後に、隣接するメモリセルがプログラミングあるいは消去される可能性があることである。1つのセットのデータに対応するために、浮遊ゲートに電荷のレベルが加えられて1つのセットのセルをプログラミングすることを例にする。第2セットのセル(第1セットと隣接するセット)に対して第2セットのデータがプログラミングされた後に、第1セットのセルの浮遊ゲートから読取られる電荷レベルは、プログラミングされたものと異なることがある。第2セットの浮遊ゲートから生じる電界の影響を受けるからである。即ち、観測されるエラーの原因は、隣接する浮遊ゲートの電界が、読取られているセルの浮遊ゲートの電圧レベルに影響するためである。これは、Yupin効果として知られ、米国特許第5867429号と同第5930167号に詳しく説明されている。これらの内容は、本明細書に組み込まれる。これらの特許文献は、浮遊ゲートの2つのセットを物理的に隔離すること、あるいは、浮遊ゲートの第1セットを読み取る際に、浮遊ゲートの第2セットの電荷の効果をいかに考慮するのかを説明している。
【0060】
第1セットのメモリセルを正しくプログラミングすることは可能だが、続けて隣接するセルがプログラミングされると、Yupin効果によって第1セットのメモリセルがオーバー・プログラミングされることがある。例えば、状態10にプログラミングされるはずの第1セル(図8を参照)に対して、閾電圧がVv10より高く(プログラミング検証)、Vop10より低い(オーバー・プログラミング検証)ことを検証するための確認が行われる。隣接するメモリセルがプログラミングされた後は、第1セルから読取られた閾電圧が、当初にプログラミングされた値より高くなることがある(例えば0.2V高くなることがある)。第1メモリセルが、Vop10より若干低い値にプログラミングされた場合、隣接するセルがプログラミングされた後に、第1セルはVop10より高い閾電圧を持つことがある。この場合、第1メモリセルは、オーバー・プログラミングされたことになる。この閾電圧が読取比較点(例えばVr00)より高いのが理由で、データエラーが生じることもありえる。
隣接するセルは、隣接するワード線あるいは隣接するビット線に存在していてもよい。例えば、図4のセル244は、セル224、242、250、及び246と隣接している。いくつかの実施例では、セル244に隣接していないメモリセルが、セル244から読取られた電荷に影響を与える電界を持つこともありえる。
【0061】
このYupin効果を対処するために、第1制御線(例えばワード線あるいはビット線)を用いてプログラミングを行った後に、本発明の1つの実施形態は、以前にプログラミングされているとともに第1制御線に隣接する制御線に関連するページにオーバー・プログラミング検証チェックを実行する。これらの実施形態は、図14A〜15Cを用いて説明する。
【0062】
図14Aは、以前に選択されたワード線に関連している論理ページにオーバー・プログラミング検証を実行するための処理の1つの実施形態を示す。
図14Aのステップ902では、メモリセルのセットは、第1ワード線を用いてプログラミングされる。例えば、図4を参照すると、ワード線WL1を用いて論理ページをプログラミングすることができる。ステップ902の処理は、図9の処理を実行することを含んでおり、図10〜13に示される「オーバー・プログラミングされたメモリセルを確認すること」も含んでいる。
ステップ904では、第2ワード線(例えば図4のワード線WL2)を用いて第2セットのメモリセルにプログラミング操作を実行する。ステップ904の処理は、図9の処理を実行することを含んでおり、オーバー・プログラミングされたメモリセルを確認することも含んでいる。
ステップ906では、システムは、第1ワード線(例えばワード線WL1)に関連する論理ページのメモリセルに対して、上述のYupin効果が原因で生じたオーバー・プログラミングをチェックする。
ステップ908では、システムは、第3ワード線(例えばワード線WL3)を用いて第3セットのメモリセルをプログラミングする。ステップ908の処理は、図9の処理を実行することを含んでおり、オーバー・プログラミングされたメモリセルを確認することも含んでおり。
ステップ910では、システムは、第2ワード線(例えばワード線WL2)に関連する論理ページのメモリセルに対して、上述のYupin効果が原因で生じたオーバー・プログラミングをチェックする。
その後、処理は続行し(あるいは続行しなくてもよい)、付加的なワード線に関連する付加的なメモリセルをプログラミングし、以前にプログラミングされたワード線においてオーバー・プログラミングされたメモリセルのための確認を実行することができる。
【0063】
いくつかの実施例では、ワード線はNANDストリングに沿って順番にプログラミングされる。従って、プログラミングに第1ワード線が使用された後、次のプログラミング操作では第1ワード線に隣接しているワード線が使用される。
NANDストリングは、通常(必ずとは言えないが)、ソース側からドレイン側にプログラミングされる。例えば、メモリセル228からメモリセル222(図4参照)にプログラミングされる。従って、WL0を用いてプログラミングした後に、システムは、WL1(WL0に隣接するワード線)を利用する。従って、図14Aの例では、オーバー・プログラミング検証が、直前のワード線に対して実行される。しかしながら、他の実施形態では、直前にプログラミングされたメモリセルではなくて、それより前にプログラミングされた他のメモリセルを確認するようにしてもよい。
【0064】
図14Bは、以前に選択されたビット線に対してオーバー・プログラミングされたメモリセルを確認することによって、Yupin効果に対処する1つの実施形態のフローチャートを示す。
1つの実施形態では、ビット線は奇数ビット線と偶数ビット線にグループ分けされる。この実施形態では、奇数ビット線がプログラミングされ、次いで偶数ビット線がプログラミングされ、次いで奇数ビット線がプログラミングされ、次いで偶数ビット線がプログラミングされることが続いていく。他の実施形態では、ビット線の異なるセットは、異なるプログラミング操作が使用されてよい。
図14Bでは、一方のセットのビット線でプログラミングされた後に、その前にプログラミングされた他方のセットのビット線に対してオーバー・プログラミングの確認が行われる。ステップ950では、偶数ビット線を用いてプログラミング操作が実行される。ステップ950の処理は、図9の処理を実行することを含んでおり、図10〜13に示す「オーバー・プログラミングされたメモリセルを確認すること」を含んでいる。
ステップ952では、プログラミング操作は奇数ビット線を用いて実行される。ステップ952の処理は、図9の処理を実行することを含んでおり、オーバー・プログラミングされたメモリセルを確認することを含んでいる。
ステップ954では、システムは、以前にプログラミングされた偶数ビット線に関連する論理ページに対して、上述のYupin効果によって生じるオーバー・プログラミングを確認する。
ステップ956では、偶数ビット線を用いてプログラミングが実行される。ステップ956の処理は、図9の処理を実行することを含んでおり、オーバー・プログラミングされたメモリセルを確認することを含んでいる。
ステップ958では、システムは、以前にプログラミングされた奇数ビット線に関連する論理ページに対して、上述のYupin効果によって生じるオーバー・プログラミングを確認する。
この処理は、プログラミングと、以前にプログラミングされたビット線に対するオーバー・プログラミングの確認とを交互に行いながら続行することができる。
【0065】
図14Aと14Bの処理は、状態機械や制御装置によって実行されてもよい。あるいは、図14Aと14Bの処理を実施するための特定論理によって実行されてよい。あるいは、これらの装置の組み合わせによって実行されてよい。
図14Aと14Bの処理の一部としてシステムが用いる方法は、多種多様である。以前にプログラミングされた制御線に関連する論理ページに対して、上述のYupin効果が原因で生じるオーバー・プログラミングを確認するための方法は、多種多様である。図15A〜Cは、その適切な方法を二つ説明するが、他の適切な方法も用いることもできる。
【0066】
図15Aは、図8と同じように、2ビットのデータを保存しているメモリセルの閾電圧区分460,462,464,466を示す。読取比較点(Vr10,Vr00,Vr01)、検証比較点(Vv10,Vv00,Vv01)、及びオーバー・プログラミング比較点(VopSP,Vop10,Vop00,Vop01)に加えて、オーバー・プログラミングテスト点VopA,VopB,VopCを示す。
第1セルと隣接する第2セルをプログラミングした後に、第2セルからのYupin効果によって、第1セルの閾電圧が0.2Vほど上がる。技術、規模、スペース等に依存し、0.2V以上あるいは0.2V以下でもよい。
このデータは、予想通り破損しているが、完全に破損してはいない。1つのシナリオは、初めのプログラミングによって第1セルの閾電圧がオーバー・プログラミング検証電圧(例えばVop10)をわずかに下回る値になった場合に、セルが最大Yupin効果(例えば約0.2V又は上述した別の値)の影響にさらされることである。Yupin効果が原因でセルがオーバー・プログラミングされたことを示す閾電圧の範囲を象徴するオーバー・プログラミング領域が確立される。
図15Aは、3つのオーバー・プログラミング領域を示す。第1オーバー・プログラミング領域は、VopSPとVopAの間の領域を含んでいる。第2オーバー・プログラミング領域は、Vop10とVopBの間の領域を含んでいる。第3オーバー・プログラミング領域は、Vop00とVopCの間の領域を含んでいる。
なお、オーバー・プログラミング比較点とオーバー・プログラミングテスト点は、図15Aとは異なる値でもよい。
【0067】
Yupin効果が原因でメモリセルがオーバー・プログラミングされたか否かを確認するための1つの処理では、そのセルの閾電圧が、いずれか1つのオーバー・プログラミング領域内にあるか否かをチェックする。セルの閾電圧が、いずれか1つのオーバー・プログラミング領域内にある場合、そのセルはYupin効果が原因でオーバー・プログラミングされたと推定することができる。例えば、セルの閾電圧が、第2オーバー・プログラミング領域にあると判断された場合、区分462内にあったはずのセルがYupin効果によってオーバー・プログラミングされたと推定される。
図15Aは、4つの閾区分(2ビットのデータを保存する)を示すが、本発明の実施には、4つ以上あるいは4つ以下の区分(2ビット以上あるいは2ビット以下のデータ)を利用してもよい。
【0068】
図15Bは、上述のYupin効果が原因で生じるオーバー・プログラミングに対してチェックを行う処理の1つの実施形態のフローチャートを示す。図15Bの処理は、図14Aと14Bのステップ906,910,954,958のオーバー・プログラミングに対する確認の一部として実行される。
ステップ1002では、各オーバー・プログラミング領域のエッジで読取操作が実行される。例えば、VopSP,VopA,Vop10,VopB,Vop00,VopCで読取操作が実行される。これらの読取操作に基づいて、いずれか1つのオーバー・プログラミング領域内にセルの閾電圧があるか否かを判断する。例えば、Vop10がワード線に印加された時にメモリセルはターンオンし、VopBがワード線に印加された時にターンオンしない場合、そのセルは第2オーバー・プログラミング領域内にあると推定される。
メモリセルの閾電圧が、いずれか1つのオーバー・プログラミング領域内にある場合(ステップ1006)、そのセルは隣接するセルの影響(Yupin効果)が原因でオーバー・プログラミングされたと結論づけられる(ステップ1008)。
ステップ1010では、オーバー・プログラミングされたデータが修正される。閾電圧を適当な区分まで下げるために、セルを部分的に消去することができる。また、セルを完全に消去して再び書き込みを行なうこともできる。また、データを別の場所に書き込むこともできる。また、セルがオーバー・プログラミングされたことを示すエラー情報を保存し、オーバー・プログラミングを考慮して以後の読取を行なうこともできる。また、他の適切な処理を実行してよい。
【0069】
ステップ1006において、閾電圧がいずれのオーバー・プログラミング領域内にも当てはまらないと判断された場合、オーバー・プログラミング比較点Vop01について読取操作が実行される。メモリセルの閾電圧がVop01より高い場合(ステップ1022)、そのメモリセルはオーバー・プログラミングされたと推測され、処理はステップ1008に進む。メモリセルの閾電圧がVop01より低い場合(ステップ1022)、そのメモリセルはオーバー・プログラミングされていないと推測される(ステップ1024)。
【0070】
図15Cは、Yupin効果が原因で生じるオーバー・プログラミングのチェックを行なう処理の別の実施形態のフローチャートを示す。図15Cの処理は、図14Aと14Bのステップ906,910,954,958のオーバー・プログラミングの確認の一部として実行することができる。
ステップ1060では、読取比較点Vr10,Vr00,Vr01のそれぞれで読取操作が実行される。読取操作に基づいて、メモリセルの初期状態の確認が行われる。ステップ1062では、公知の手法に基づいてECC処理が実行される。ECCエラーがない場合(ステップ1064)、メモリセルはYupin効果によってオーバー・プログラミングされなかったと推定される(ステップ1066)。ECCエラーが検知された場合(ステップ1064)、そのエラーはYupin効果によってメモリセルがオーバー・プログラミングされたことが原因で生じたものだと推定される(ステップ1070)。ステップ1072では、データが修正される(図15Bのステップ1010と同様)。
例えば、ステップ1060で行った読取操作によって、閾電圧がVr00より高くVr01より低いと判断されたものとする。メモリセルは、閾区分464にあり、論理データ00を保存していると推定される。ECCが失敗した場合、メモリセルは閾区分462にあり、論理データ10を保存していると推定される(ただし、メモリセルはオーバー・プログラミングされている)。従って、ステップ1072の1つの実施形態では、メモリセルの閾電圧が、閾区分462内に含まれるよう修正される。
【0071】
図17〜22は、図16に対応しており、オーバー・プログラミング検証を実行するための別の実施形態を示す真理値表である。図8と同様に、図16は、2ビットのデータを保存するメモリセルの閾電圧区分460,462,464,466を示す。しかしながら、図16は、異なるオーバー・プログラミング検証比較点VopSP’,Vop10’,Vop00’,Vop01’を示す。
比較点VopSP’は、閾電圧区分460の最高電圧を若干上回る値である。比較点Vop10’は、閾電圧区分462の最高電圧を若干上回る値である。比較点Vop00’は、閾電圧区分464の最高電圧を若干上回る値である。比較点Vop01’は、閾電圧区分466の最高電圧を若干上回る値である。
図16のVopSP’は図8のVopSPより低く、図16のVop10’は図8のVop10より低く、図16のVop00’は図8のVop00より低く、図16のVop01’は図8のVop01より低い。
他の実施形態では、比較点VopSP’,Vop10’,Vop00’,Vop01’は、個々の閾電圧区分より高い他の値が使用されてよい。
【0072】
図17は、下側ページのプログラミングの後に、ソフトプログラミングに起因するオーバー・プログラミング検証を実行するための実施形態を説明する。
図17の真理値表は、以前の下側ページのプログラミングにおいてプログラミングされたデータが、「0」データなのか、あるいは「1」データなのかを示す2つの列を示す。真理値表の2行目(「VopSP’で読み取り」)は、オーバー・プログラミングのための検証が行なわれたメモリセルから読取られたデータに対応している。3行目は、第2データラッチ404に保存されたデータを示す。4行目は、第1データラッチ402に保存されたデータを示す。5行目は、状態11のオーバー・プログラミング検証の結果を示す。
【0073】
「1」がプログラミングされた場合(図17の左側の列)、メモリセルは、状態11を維持する。「0」がプログラミングされた場合、セルは、状態10にプログラミングされるべきである。
真理値表の2行目は、メモリセルの制御ゲートにVopSP’を印加することを含んでいる読取操作の結果を示す。読取られたメモリセルの閾電圧がVopSP’より高い場合、そのメモリセルはターンオンせず、論理「0」が読取られる。メモリセルの閾電圧がVopSP’より低い場合、そのメモリセルはターンオンし、論理「1」が読取られる。
メモリセルに論理「1」がプログラミングされることに対応する列では、読取ステップで論理「1」(正常にプログラミングされた)、又は、論理「0」(オーバー・プログラミングされた)が読取られる。セルが状態10にプログラミングされた場合、プログラミング中の検証ステップで、電圧が少なくともVv10より高いことが検証されるので、読取ステップは論理「0」を読取る。読取られたデータは第2データラッチ404に保存される。第1データラッチ402は、以前に下側ページにプログラミングされたデータを保存している。状態機械は、第1データラッチ402と第2データラッチ404の内容を確認する。第1データラッチ402が論理「1」を保存しており、第2データラッチ404が論理「0」を保存している場合、オーバー・プログラミングテストは失敗である。即ち、状態機械は、メモリセルがオーバー・プログラミングされたと判断する。
【0074】
図18は、下側ページのプログラミングと上側ページのプログラミングの両方が実行された後に、ソフトプログラミングに起因するオーバー・プログラミング検証を実行する実施形態を説明するための真理値表を示す。このようなタスクに対応するためには、下側ページのデータと上側ページのデータを考慮する必要がある。下側ページのプログラミング操作と上側ページのプログラミング操作の両方が既に実行されているために、真理値表は、4つの状態に対応する列を含んでいる。4つの状態とは、11,10,00,01である。
真理値表の2行目は、制御ゲートにVopSP’を印加して読取られたデータを示す。セルが状態11を目的としていた場合、読取操作は、セルがオーバー・プログラミングされていなければ「1」をリターンし、オーバー・プログラミングされていたら「0」をリターンする。セルが他の3つの状態のいずれかにある場合は、「0」がリターンされるはずである。プログラミング処理の間に行われた以前の検証ステップが、そのセルの閾電圧が適当な検証点より十分に高いことを保証したからである。
真理値表の3行目は、上述の読取操作の結果を保存している第2データラッチ404のコンテンツを示す。4行目は、第3データラッチのコンテンツを示す。第3データラッチは、上述したように、下側ページのデータを保存する。5行目は、状態11のオーバー・プログラミング検証の結果を示す。
状態機械は、第3データラッチ406が論理「1」を保存しているとともに第2データラッチが論理「0」を保存しているか否かを確認する。そのように保存している場合、メモリセルがオーバー・プログラミングされたことを意味するために、オーバー・プログラミングテストは失敗する。そのように保存していなければ、テストはパスする。
【0075】
別の実施形態では、システムは、以前に第3データラッチに保存されたデータを使用せず、Vr10で再度の読取りを実行する。この読取操作は、セルの閾電圧がVopSP’より高くてVr10より低いことを確認する。そうであれば、状態機械は、そのメモリセルがオーバー・プログラミングされたと判断する。そうでなければ、状態機械は、メモリセルはオーバー・プログラミングされていないと推定する。
【0076】
図19は、セルを状態10にプログラミングする場合に、そのセルがオーバー・プログラミングされたか否かを検証する処理を説明するための真理値表を示す。図19に関連する検証処理は、下側ページのプログラミングの後であって上側ページのプログラミングの前に実行される。
真理値表には2つの列があり、一方の列は下側ページに論理「0」がプログラミングされた場合に対応し、他方の列は下側ページに論理「1」がプログラミングされた場合に対応する。2行目は、制御ゲートにVop10’を印加した場合の読取操作から得たデータを示す。メモリセルを状態11に維持することが目的だった場合、あるいはメモリセルが正常に状態10にプログラミングされた場合、Vop10’での読取操作は、メモリセルがターンオンし、論理「1」が報告される。この読取操作の結果は、第2データラッチ404に保存される(真理値表の3行目参照)。メモリセルを状態10にプログラミングすることが目的であったのにそのセルがオーバー・プログラミングされた場合、Vop10’での読取操作は、メモリセルはターンオンせず、それが原因で論理「0」が報告される。この読取操作の結果は、第1データラッチ402に保存される(4行目を参照)。
論理「1」がプログラミングされた場合(例えばプログラミングが実行されなかった場合)、第2データラッチ404と第1データラッチ402は両方とも論理「1」を保存し、テストはパスする(5行目を参照)。
論理「0」が適切にプログラミングされた場合、第1データラッチ404は論理「0」を保存し、第2データラッチは論理「1」を保存し、テストはパスする。第2データラッチ404が論理「0」であって第1データラッチ402が論理「1」の場合は、セルがオーバー・プログラミングされたことを意味するために、テストは失敗である。
【0077】
図20は、下側ページと上側ページの両方がプログラミングされた後に、状態10のオーバー・プログラミング検証を実行する処理を説明するための真理値表を示す。両方のページがプログラミングされたために4つの列が存在し、各列はセルがプログラミングされる1つの状態に対応している。4つの状態とは、11,10,00,01である。
2行目は、制御ゲートにVop10’を印加した読取操作から得られたデータを示す。この読取操作の結果は、第2データラッチ404(3行目)に保存される。メモリセルが状態11の維持される場合、あるいは、状態10に正常にプログラミングされた場合、メモリセルはターンオンして論理「1」が読取られる。メモリセルを状態10にプログラミングすることが目的だったことにもかかわらず、そのセルをオーバー・プログラミングしてしまった場合、セルはターンオンせず、論理「0」がリターンされる。上側ページのプログラミングの間にセルが状態00又は状態01にプログラミングされた場合、セルはターンオンせず、論理「0」が読取られる。
第1データラッチ402は、直前に実行された上側ページのプログラミング操作から得られたデータを保存する(4行目)。例えば、セルが状態11又は10の場合、第1データラッチは論理「1」を保存する。セルが状態00又は01の場合、第1データラッチは論理「0」を保存する。その後、システムはテストを実行し、第1データラッチ402が論理「1」を保存していて第2データラッチ404が論理「0」を保存していることを確認する。もしそうであれば、セルがオーバー・プログラミングされたことを意味するために、検証処理は失敗である。そうでなければ、検証処理はパスする(5行目)。
【0078】
図21は、状態00のオーバー・プログラミング検証を実行する処理を説明するための真理値表を示す。状態00の検証処理は、下側ページと上側ページの両方がプログラミングされた後に実行される。従って、図21の真理値表は4つの列を示す(各列はセルがプログラミングされる1つの状態に対応する)。
まず、制御ゲートにVop00’を印加することを含む読取操作が実行される(真理値表の2行目を参照)。メモリセルが正常に状態11,10,00にプログラミングされた場合、メモリセルはターンオンし、論理「1」がリターンされる。メモリセルが状態01にプログラミングされた場合、セルはターンオンせず、論理「0」がリターンされる。メモリセルを状態00にプログラミングすることが目的だったことにもかかわらずセルをオーバー・プログラミングしてしまった場合、セルはターンオンせず、論理「0」がリターンされる。この読取操作からリターンされたデータは、第2データラッチ404に保存される(真理値表の3行目参照)。
4行目は、第3データラッチ402のコンテンツを示す。第3データラッチは、上述したように、下側ページのデータを保存する。5行目は、状態00に対するオーバー・プログラミング検証の結果を示す。
状態機械は、第3データラッチ406が論理「0」を保存しているとともに第2データラッチ404が論理「0」を保存しているか否かを判断するためにチェックする。そのように保存されていれば、それはメモリセルがオーバー・プログラミングされたことを意味するために、オーバー・プログラミングテストは失敗である。そうでなければ、テストはパスする。
【0079】
別の実施形態では、システムは、以前に第3データラッチに保存されたデータを使用せずに、Vr01で再度の読取りを実行する。この読取操作は、セルの閾電圧がVop00’より高くてVr01より低いことを確認する。もしそうであれば、状態機械は、そのメモリセルがオーバー・プログラミングされたと判断する。そうでなければ、状態機械は、メモリセルはオーバー・プログラミングされていないと推定する。
【0080】
図22は、状態01のオーバー・プログラミング検証を実行する処理を説明するための真理値表を示す。上側ページがプログラミングされた後に実行される処理であるために、4つの列が存在し、各列はセルがプログラミングされる1つの状態に対応する。
図22の2行目は、制御ゲートにVop01’を印加することを含む読取操作から得られた結果を示す。この読取操作から得られたデータは、第2データラッチ404に保存される(3行目)。この読取操作から得られたデータは、セルの状態を問わずに必ず論理「1」であるべきである。従って、論理「0」がリターンされた場合、検証ステップは失敗である。論理「0」がリターンされなかった場合、検証ステップはパスする(4行目)。
【0081】
図9のフローチャートでは、下側ページのプログラミング操作が実行された場合に、ソフトプログラミング検証と状態10のオーバー・プログラミング検証が実行される。さらに、上側ページのプログラミング操作が実行された場合に、状態00のオーバー・プログラミング検証と状態01のオーバー・プログラミング検証が実行される。この手法は、図17,19,21,22を用いて説明した処理において利用することができる。
別の手法では、下側ページと上側ページの両方が書き込まれた後に、図18,20,21,22の真理値表を用いて説明した処理を用いて、全てのオーバー・プログラミング検証を実行することができる。
さらに別の手法では、下側ページのプログラミング処理が実行された後に、図17を用いて説明した検証処理を実行することができる。上側ページがプログラミングされた時に、システムは、図20,21,22の真理値表を用いて、状態10,00,01のオーバー・プログラミング検証を実行することもできる。
【0082】
上記の例は、NANDタイプのフラッシュメモリに関するものである。しかしながら、本発明の原理は、他のタイプのフラッシュメモリや他のタイプの非揮発性メモリに対しても適用できる。本発明の原理は、現存するものに対してだけでなく、今後に発達する新しい技術に対しても使用される。
【0083】
本発明の上記の詳細な説明は、図解と説明を目的に提供している。本発明を枯渇させる意図はないし、開示された通りのものに制限する意図もない。上述の教示に照らせば、様々な変更が可能である。記載した実施形態は、本発明の原理とその実用的な応用を最適に説明し、それにより当業者が、特定の使用に適応する様々な変更および実施形態を活用できるように選ばれたものである。本発明の技術的範囲は、本書に添付された請求項によって定義される。
【図面の簡単な説明】
【0084】
【図1】NANDストリングの平面図を示す。
【図2】図1のNANDストリングの等価回路図を示す。
【図3】図1のNANDストリングの断面図を示す。
【図4】3つのNANDストリングの回路図を示す。
【図5】本発明の様々な態様が実施される非揮発性メモリシステムの1つの実施形態のブロック図を示す。
【図6】メモリアレイの構成の例を示す。
【図7】列制御回路の一部を示す。
【図8】メモリセルの閾区分を示し、マルチ状態メモリセルをプログラミングする技術の一例を示す。
【図9】メモリアレイをプログラミングする処理の1つの実施形態のフローチャートを示す。
【図10】オーバー・プログラミングの検知を実行するための処理の1つの実施形態のフローチャートを示す。
【図11】オーバー・プログラミングの検知を実行するための処理の1つの実施形態のフローチャートを示す。
【図12】オーバー・プログラミングの検知を実行するための処理の1つの実施形態のフローチャートを示す。
【図13】オーバー・プログラミングの検知を実行するための処理の1つの実施形態のフローチャートを示す。
【図14A】プログラミングとオーバー・プログラミングの検知を実行するための処理の1つの実施形態のフローチャートを示す。
【図14B】プログラミングとオーバー・プログラミングの検知を実行するための処理の他の実施形態のフローチャートを示す。
【図15A】メモリの閾区分を示す。
【図15B】オーバー・プログラミングの検知を実行するための処理の1つの実施形態のフローチャートを示す。
【図15C】オーバー・プログラミングの検知を実行するための処理の他の実施形態のフローチャートを示す。
【図16】オーバー・プログラミングの検知を実行するためのメモリの閾区分を比較点の変形例とともに示す。
【図17】オーバー・プログラミングの検知を実行するための他の実施形態に対応する真理値表を示す。
【図18】オーバー・プログラミングの検知を実行するための他の実施形態に対応する真理値表を示す。
【図19】オーバー・プログラミングの検知を実行するための他の実施形態に対応する真理値表を示す。
【図20】オーバー・プログラミングの検知を実行するための他の実施形態に対応する真理値表を示す。
【図21】オーバー・プログラミングの検知を実行するための他の実施形態に対応する真理値表を示す。
【図22】オーバー・プログラミングの検知を実行するための他の実施形態に対応する真理値表を示す。
【特許請求の範囲】
【請求項1】
オーバー・プログラミングを検知する方法であり、
第1制御線に関連する1つ又は複数のマルチ状態記憶素子をプログラミングする工程と、
前記の「第1制御線に関連する1つ又は複数のマルチ状態記憶素子」をプログラミングする工程の後に、第2制御線に関連する1つ又は複数のマルチ状態記憶素子をプログラミングする工程と、
前記の「第2制御線に関連する1つ又は複数のマルチ状態記憶素子」をプログラミングする工程の後に、前記の「第1制御線に関連する1つ又は複数のマルチ状態記憶素子」がオーバー・プログラミングされたか否かを判断する工程
を備える方法。
【請求項2】
第1制御線は、第1ビット線であり、
第2制御線は、第1ビット線に隣接する第2ビット線であることを特徴とする請求項1の方法。
【請求項3】
第1制御線は、第1ワード線であり、
第2制御線は、第1ワード線に隣接する第2ワード線であることを特徴とする請求項1の方法。
【請求項4】
オーバー・プログラミングされたと判断された記憶素子に対してデータを修正する工程をさらに備えることを特徴とする請求項1の方法。
【請求項5】
前記修正工程は、所定の記憶素子の閾電圧を次に低い閾区分まで下げることを含んでいることを特徴とする請求項4の方法。
【請求項6】
前記判断工程は、所定の記憶素子に隣接する記憶素子の電荷から生じる電界の存在を原因として前記所定の記憶素子がオーバー・プログラミングされたか否かを検知することを含んでいることを特徴とする請求項1の方法。
【請求項7】
前記判断工程は、1つ又は複数のオーバー・プログラミング範囲のいずれかに含まれる閾電圧を所定の記憶素子が有するか否かを検知することを含んでいることを特徴とする請求項1の方法。
【請求項8】
前記判断工程は、1つ又は複数のオーバー・プログラミング範囲のいずれかに含まれる閾電圧を所定の記憶素子が有するか否かを検知することを含んでおり、
オーバー・プログラミング範囲は、前記所定の記憶素子に隣接する記憶素子の電荷から生じる電界の影響を推定することによって決定されることを特徴とする請求項1の方法。
【請求項9】
前記判断工程は、
1つ又は複数のオーバー・プログラミング範囲のエッジについて、前記の「第1制御線に関連するマルチ状態記憶素子」に対して読取操作を実行する工程と、
第1制御線に関連する所定のマルチ状態記憶素子が前記の「1つ又は複数のオーバー・プログラミング範囲」のいずれかに含まれる閾電圧を有する場合に、前記所定のマルチ状態記憶素子がオーバー・プログラミングされたと判断する工程
を有する方法を実行することを含んでおり、
前記所定のマルチ状態記憶素子は、前記の「第2制御線に関連するマルチ状態記憶素子」の少なくとも1つに隣接することを特徴とする請求項1の方法。
【請求項10】
第1制御線は、第1ワード線であり、
第2制御線は、第2ワード線であることを特徴とする請求項9の方法。
【請求項11】
前記判断工程は、
前記の「第1制御線に関連するマルチ状態記憶素子」の初期状態を判断するために、1つ又は複数の読取比較点について、前記の「第1制御線に関連するマルチ状態記憶素子」に対して読取操作を実行する工程と、
前記の「第1制御線に関連するマルチ状態記憶素子」と前記初期状態のためのエラー訂正コード処理を実行する工程と、
第1制御線に関連する所定のマルチ状態記憶素子のためのエラー訂正コード処理が失敗した場合に、前記所定のマルチ状態記憶素子がオーバー・プログラミングされたと判断する工程
を有する方法を実行することを含んでおり、
前記所定のマルチ状態記憶素子は、前記の「第2制御線に関連するマルチ状態記憶素子」の少なくとも1つに隣接することを特徴とする請求項1の方法。
【請求項12】
第1制御線は、第1ワード線であり、
第2制御線は、第2ワード線であることを特徴とする請求項11の方法。
【請求項13】
前記所定のマルチ状態記憶素子がオーバー・プログラミングされた場合に、前記所定のマルチ状態記憶素子に対してデータを修正する工程をさらに備えることを特徴とする請求項10の方法。
【請求項14】
前記の「第1制御線に関連する1つ又は複数のマルチ状態記憶素子」と、前記の「第2制御線に関連する1つ又は複数のマルチ状態記憶素子」は、NANDフラッシュメモリ素子であることを特徴とする請求項1の方法。
【請求項15】
前記の「第1制御線に関連する1つ又は複数のマルチ状態記憶素子」は、記憶素子のアレイの一部であり、
記憶素子のアレイは、集積回路チップ上にあり、
前記判断工程は、集積回路チップ上にある1つ又は複数の回路によって実行されることを特徴とする請求項1の方法。
【請求項16】
オーバー・プログラミングを検知する方法であり、
第1マルチ状態記憶素子をプログラミングする工程と、
第1マルチ状態記憶素子をプログラミングする工程の後に、第1マルチ状態記憶素子に対して影響を及ぼすことができる電界を有する第2マルチ状態記憶素子をプログラミングする工程と、
第2マルチ状態記憶素子をプログラミングする工程の後に、第1マルチ状態記憶素子がオーバー・プログラミングされたか否かを判断する工程
を備える方法。
【請求項17】
第1マルチ状態記憶素子は、第1ワード線に接続されており、
第2マルチ状態記憶素子は、第2ワード線に接続されており、
第2マルチ状態記憶素子は、第1マルチ状態記憶素子に隣接していることを特徴とする請求項16の方法。
【請求項18】
第1マルチ状態記憶素子は、第1ビット線に接続されている第1NANDチェーンの一部であり、
第2マルチ状態記憶素子は、第2ビット線に接続されている第2NANDチェーンの一部であることを特徴とする請求項16の方法。
【請求項19】
前記判断工程は、第2マルチ状態記憶素子の電荷から生じる電界の存在を原因として第1マルチ状態記憶素子がオーバー・プログラミングされたか否かを検知することを含んでおり、
第2マルチ状態記憶素子は、第1マルチ状態記憶素子に隣接していることを特徴とする請求項16の方法。
【請求項20】
前記判断工程は、
1つ又は複数のオーバー・プログラミング範囲のエッジについて、第1マルチ状態記憶素子に対して読取操作を実行する工程と、
第1マルチ状態記憶素子が前記の「1つ又は複数のオーバー・プログラミング範囲」のいずれかに含まれる閾電圧を有する場合に、第1マルチ状態記憶素子がオーバー・プログラミングされたと判断する工程
を有する方法を実行することを含んでおり、
第2マルチ状態記憶素子は、第1マルチ状態記憶素子に隣接することを特徴とする請求項16の方法。
【請求項21】
前記判断工程は、
第1マルチ状態記憶素子の初期状態を判断するために、1つ又は複数の読取比較点について、第1マルチ状態記憶素子に対して読取操作を実行する工程と、
第1マルチ状態記憶素子と前記初期状態のためのエラー訂正コード処理を実行する工程と、
エラー訂正コード処理が失敗した場合に、第1マルチ状態記憶素子がオーバー・プログラミングされたと判断する工程
を有する方法を実行することを含んでおり、
第2マルチ状態記憶素子は、第1マルチ状態記憶素子に隣接することを特徴とする請求項16の方法。
【請求項22】
第1制御線に関連する1つ又は複数のマルチ状態記憶素子をプログラミングする手段と、
前記の「第1制御線に関連する1つ又は複数のマルチ状態記憶素子」をプログラミングする処理の後に、第2制御線に関連する1つ又は複数のマルチ状態記憶素子をプログラミングする手段と、
前記の「第2制御線に関連する1つ又は複数のマルチ状態記憶素子」をプログラミングする処理の後に、前記の「第1制御線に関連する1つ又は複数のマルチ状態記憶素子」がオーバー・プログラミングされたか否かを判断する手段
を備えるメモリシステム。
【請求項23】
前記判断手段は、
1つ又は複数のオーバー・プログラミング範囲のエッジについて、前記の「第1制御線に関連する1つ又は複数のマルチ状態記憶素子」に対して読取操作を実行する手段と、
前記の「第1制御線に関連する1つ又は複数のマルチ状態記憶素子」がオーバー・プログラミング範囲のいずれかに含まれる閾電圧を有する場合に、前記の「第1制御線に関連する1つ又は複数のマルチ状態記憶素子」がオーバー・プログラミングされたと判断する手段を有することを特徴とする請求項22のメモリシステム。
【請求項24】
第1制御線は、第1ワード線であり、
第2制御線は、第2ワード線であることを特徴とする請求項23のメモリシステム。
【請求項25】
前記判断手段は、
前記の「第1制御線に関連する1つ又は複数のマルチ状態記憶素子」の初期状態を判断するために、1つ又は複数の読取比較点について、前記の「第1制御線に関連する1つ又は複数のマルチ状態記憶素子」に対して読取操作を実行する手段と、
前記の「第1制御線に関連する1つ又は複数のマルチ状態記憶素子」のためのエラー訂正コード処理を実行する手段と、
エラー訂正コード処理が失敗した場合に、前記の「第1制御線に関連する1つ又は複数のマルチ状態記憶素子」がオーバー・プログラミングされたか否かを判断する手段を含んでいることを特徴とする請求項22のメモリシステム。
【請求項26】
第1制御線は、第1ワード線であり、
第2制御線は、第2ワード線であることを特徴とする請求項25のメモリシステム。
【請求項27】
マルチ状態記憶素子のアレイと、マルチ状態記憶素子のアレイと通信する管理回路を備えるメモリシステムであり、
管理回路は、第1制御線に関連する1つ又は複数のマルチ状態記憶素子をプログラミングするとともに、その後に第2制御線に関連する1つ又は複数のマルチ状態記憶素子をプログラミングすることを含むプログラミング操作を実行し、
管理回路は、前記の「第2制御線に関連する1つ又は複数のマルチ状態記憶素子」をプログラミングした後に、前記の「第1制御線に関連する1つ又は複数のマルチ状態記憶素子」がオーバー・プログラミングされたか否かを判断し、
前記の「第2制御線に関連するマルチ状態記憶素子」の少なくとも一部は、前記の「第1制御線に関連するマルチ状態記憶素子」に隣接していることを特徴とするメモリシステム。
【請求項28】
第1制御線は、第1ビット線であり、
第2制御線は、第1ビット線に隣接する第2ビット線であることを特徴とする請求項27のメモリシステム。
【請求項29】
第1制御線は、第1ワード線であり、
第2制御線は、第1ワード線に隣接する第2ワード線であることを特徴とする請求項27のメモリシステム。
【請求項30】
前記の「第1制御線に関連する1つ又は複数のマルチ状態記憶素子」と、前記の「第2制御線に関連する1つ又は複数のマルチ状態記憶素子」は、NANDフラッシュメモリ素子であることを特徴とする請求項27のメモリシステム。
【請求項31】
前記の「1つ又は複数のマルチ状態記憶素子」は、記憶素子のアレイの一部であり、
記憶素子のアレイは、集積回路チップ上にあり、
管理回路は、状態機械を含んでおり、
状態機械は、集積回路チップ上にあり、
状態機械は、前記の「第1制御線に関連する1つ又は複数のマルチ状態記憶素子」がオーバー・プログラミングされたか否かの判断を実行することを特徴とする請求項27のメモリシステム。
【請求項32】
管理回路は、オーバー・プログラミングされたと判断された記憶素子に対してデータを修正することを特徴とする請求項27のメモリシステム。
【請求項33】
管理回路は、所定の記憶素子に隣接する記憶素子の電荷から生じる電界の存在を原因として前記所定の記憶素子がオーバー・プログラミングされたか否かを検知することを特徴とする請求項27のメモリシステム。
【請求項34】
管理回路は、所定の記憶素子が1つ又は複数のオーバー・プログラミング範囲のいずれかに含まれる閾電圧を有するか否かを検知し、
オーバー・プログラミング範囲は、前記所定の記憶素子に隣接する記憶素子の電荷から生じる電界の影響を推定することによって決定されることを特徴とする請求項27のメモリシステム。
【請求項35】
管理回路は、1つ又は複数のオーバー・プログラミング範囲のエッジについて、前記の「第1制御線に関連するマルチ状態記憶素子」に対して読取操作を実行し、
第1制御線に関連する所定のマルチ状態記憶素子が前記の「1つ又は複数のオーバー・プログラミング範囲」のいずれかに含まれる閾電圧を有する場合に、前記所定のマルチ状態記憶素子はオーバー・プログラミングされたと判断することを特徴とする請求項27のメモリシステム。
【請求項36】
第1制御線は、第1ワード線であり、
第2制御線は、第1ワード線に隣接する第2ワード線であることを特徴とする請求項35のメモリシステム。
【請求項37】
管理回路は、
前記の「第1制御線に関連するマルチ状態記憶素子」の初期状態を判断するために、1つ又は複数の読取比較点について、前記の「第1制御線に関連するマルチ状態記憶素子」に対して読取操作を実行し、
前記の「第1制御線に関連するマルチ状態記憶素子」のためのエラー訂正コード処理を実行し、
第1制御線に関連する所定のマルチ状態記憶素子のためのエラー訂正コード処理が失敗した場合に、前記所定のマルチ状態記憶素子がオーバー・プログラミングされたと判断することを特徴とする請求項27のメモリシステム。
【請求項38】
第1制御線は、第1ワード線であり、
第2制御線は、第1ワード線に隣接する第2ワード線であることを特徴とする請求項37のメモリシステム。
【請求項1】
オーバー・プログラミングを検知する方法であり、
第1制御線に関連する1つ又は複数のマルチ状態記憶素子をプログラミングする工程と、
前記の「第1制御線に関連する1つ又は複数のマルチ状態記憶素子」をプログラミングする工程の後に、第2制御線に関連する1つ又は複数のマルチ状態記憶素子をプログラミングする工程と、
前記の「第2制御線に関連する1つ又は複数のマルチ状態記憶素子」をプログラミングする工程の後に、前記の「第1制御線に関連する1つ又は複数のマルチ状態記憶素子」がオーバー・プログラミングされたか否かを判断する工程
を備える方法。
【請求項2】
第1制御線は、第1ビット線であり、
第2制御線は、第1ビット線に隣接する第2ビット線であることを特徴とする請求項1の方法。
【請求項3】
第1制御線は、第1ワード線であり、
第2制御線は、第1ワード線に隣接する第2ワード線であることを特徴とする請求項1の方法。
【請求項4】
オーバー・プログラミングされたと判断された記憶素子に対してデータを修正する工程をさらに備えることを特徴とする請求項1の方法。
【請求項5】
前記修正工程は、所定の記憶素子の閾電圧を次に低い閾区分まで下げることを含んでいることを特徴とする請求項4の方法。
【請求項6】
前記判断工程は、所定の記憶素子に隣接する記憶素子の電荷から生じる電界の存在を原因として前記所定の記憶素子がオーバー・プログラミングされたか否かを検知することを含んでいることを特徴とする請求項1の方法。
【請求項7】
前記判断工程は、1つ又は複数のオーバー・プログラミング範囲のいずれかに含まれる閾電圧を所定の記憶素子が有するか否かを検知することを含んでいることを特徴とする請求項1の方法。
【請求項8】
前記判断工程は、1つ又は複数のオーバー・プログラミング範囲のいずれかに含まれる閾電圧を所定の記憶素子が有するか否かを検知することを含んでおり、
オーバー・プログラミング範囲は、前記所定の記憶素子に隣接する記憶素子の電荷から生じる電界の影響を推定することによって決定されることを特徴とする請求項1の方法。
【請求項9】
前記判断工程は、
1つ又は複数のオーバー・プログラミング範囲のエッジについて、前記の「第1制御線に関連するマルチ状態記憶素子」に対して読取操作を実行する工程と、
第1制御線に関連する所定のマルチ状態記憶素子が前記の「1つ又は複数のオーバー・プログラミング範囲」のいずれかに含まれる閾電圧を有する場合に、前記所定のマルチ状態記憶素子がオーバー・プログラミングされたと判断する工程
を有する方法を実行することを含んでおり、
前記所定のマルチ状態記憶素子は、前記の「第2制御線に関連するマルチ状態記憶素子」の少なくとも1つに隣接することを特徴とする請求項1の方法。
【請求項10】
第1制御線は、第1ワード線であり、
第2制御線は、第2ワード線であることを特徴とする請求項9の方法。
【請求項11】
前記判断工程は、
前記の「第1制御線に関連するマルチ状態記憶素子」の初期状態を判断するために、1つ又は複数の読取比較点について、前記の「第1制御線に関連するマルチ状態記憶素子」に対して読取操作を実行する工程と、
前記の「第1制御線に関連するマルチ状態記憶素子」と前記初期状態のためのエラー訂正コード処理を実行する工程と、
第1制御線に関連する所定のマルチ状態記憶素子のためのエラー訂正コード処理が失敗した場合に、前記所定のマルチ状態記憶素子がオーバー・プログラミングされたと判断する工程
を有する方法を実行することを含んでおり、
前記所定のマルチ状態記憶素子は、前記の「第2制御線に関連するマルチ状態記憶素子」の少なくとも1つに隣接することを特徴とする請求項1の方法。
【請求項12】
第1制御線は、第1ワード線であり、
第2制御線は、第2ワード線であることを特徴とする請求項11の方法。
【請求項13】
前記所定のマルチ状態記憶素子がオーバー・プログラミングされた場合に、前記所定のマルチ状態記憶素子に対してデータを修正する工程をさらに備えることを特徴とする請求項10の方法。
【請求項14】
前記の「第1制御線に関連する1つ又は複数のマルチ状態記憶素子」と、前記の「第2制御線に関連する1つ又は複数のマルチ状態記憶素子」は、NANDフラッシュメモリ素子であることを特徴とする請求項1の方法。
【請求項15】
前記の「第1制御線に関連する1つ又は複数のマルチ状態記憶素子」は、記憶素子のアレイの一部であり、
記憶素子のアレイは、集積回路チップ上にあり、
前記判断工程は、集積回路チップ上にある1つ又は複数の回路によって実行されることを特徴とする請求項1の方法。
【請求項16】
オーバー・プログラミングを検知する方法であり、
第1マルチ状態記憶素子をプログラミングする工程と、
第1マルチ状態記憶素子をプログラミングする工程の後に、第1マルチ状態記憶素子に対して影響を及ぼすことができる電界を有する第2マルチ状態記憶素子をプログラミングする工程と、
第2マルチ状態記憶素子をプログラミングする工程の後に、第1マルチ状態記憶素子がオーバー・プログラミングされたか否かを判断する工程
を備える方法。
【請求項17】
第1マルチ状態記憶素子は、第1ワード線に接続されており、
第2マルチ状態記憶素子は、第2ワード線に接続されており、
第2マルチ状態記憶素子は、第1マルチ状態記憶素子に隣接していることを特徴とする請求項16の方法。
【請求項18】
第1マルチ状態記憶素子は、第1ビット線に接続されている第1NANDチェーンの一部であり、
第2マルチ状態記憶素子は、第2ビット線に接続されている第2NANDチェーンの一部であることを特徴とする請求項16の方法。
【請求項19】
前記判断工程は、第2マルチ状態記憶素子の電荷から生じる電界の存在を原因として第1マルチ状態記憶素子がオーバー・プログラミングされたか否かを検知することを含んでおり、
第2マルチ状態記憶素子は、第1マルチ状態記憶素子に隣接していることを特徴とする請求項16の方法。
【請求項20】
前記判断工程は、
1つ又は複数のオーバー・プログラミング範囲のエッジについて、第1マルチ状態記憶素子に対して読取操作を実行する工程と、
第1マルチ状態記憶素子が前記の「1つ又は複数のオーバー・プログラミング範囲」のいずれかに含まれる閾電圧を有する場合に、第1マルチ状態記憶素子がオーバー・プログラミングされたと判断する工程
を有する方法を実行することを含んでおり、
第2マルチ状態記憶素子は、第1マルチ状態記憶素子に隣接することを特徴とする請求項16の方法。
【請求項21】
前記判断工程は、
第1マルチ状態記憶素子の初期状態を判断するために、1つ又は複数の読取比較点について、第1マルチ状態記憶素子に対して読取操作を実行する工程と、
第1マルチ状態記憶素子と前記初期状態のためのエラー訂正コード処理を実行する工程と、
エラー訂正コード処理が失敗した場合に、第1マルチ状態記憶素子がオーバー・プログラミングされたと判断する工程
を有する方法を実行することを含んでおり、
第2マルチ状態記憶素子は、第1マルチ状態記憶素子に隣接することを特徴とする請求項16の方法。
【請求項22】
第1制御線に関連する1つ又は複数のマルチ状態記憶素子をプログラミングする手段と、
前記の「第1制御線に関連する1つ又は複数のマルチ状態記憶素子」をプログラミングする処理の後に、第2制御線に関連する1つ又は複数のマルチ状態記憶素子をプログラミングする手段と、
前記の「第2制御線に関連する1つ又は複数のマルチ状態記憶素子」をプログラミングする処理の後に、前記の「第1制御線に関連する1つ又は複数のマルチ状態記憶素子」がオーバー・プログラミングされたか否かを判断する手段
を備えるメモリシステム。
【請求項23】
前記判断手段は、
1つ又は複数のオーバー・プログラミング範囲のエッジについて、前記の「第1制御線に関連する1つ又は複数のマルチ状態記憶素子」に対して読取操作を実行する手段と、
前記の「第1制御線に関連する1つ又は複数のマルチ状態記憶素子」がオーバー・プログラミング範囲のいずれかに含まれる閾電圧を有する場合に、前記の「第1制御線に関連する1つ又は複数のマルチ状態記憶素子」がオーバー・プログラミングされたと判断する手段を有することを特徴とする請求項22のメモリシステム。
【請求項24】
第1制御線は、第1ワード線であり、
第2制御線は、第2ワード線であることを特徴とする請求項23のメモリシステム。
【請求項25】
前記判断手段は、
前記の「第1制御線に関連する1つ又は複数のマルチ状態記憶素子」の初期状態を判断するために、1つ又は複数の読取比較点について、前記の「第1制御線に関連する1つ又は複数のマルチ状態記憶素子」に対して読取操作を実行する手段と、
前記の「第1制御線に関連する1つ又は複数のマルチ状態記憶素子」のためのエラー訂正コード処理を実行する手段と、
エラー訂正コード処理が失敗した場合に、前記の「第1制御線に関連する1つ又は複数のマルチ状態記憶素子」がオーバー・プログラミングされたか否かを判断する手段を含んでいることを特徴とする請求項22のメモリシステム。
【請求項26】
第1制御線は、第1ワード線であり、
第2制御線は、第2ワード線であることを特徴とする請求項25のメモリシステム。
【請求項27】
マルチ状態記憶素子のアレイと、マルチ状態記憶素子のアレイと通信する管理回路を備えるメモリシステムであり、
管理回路は、第1制御線に関連する1つ又は複数のマルチ状態記憶素子をプログラミングするとともに、その後に第2制御線に関連する1つ又は複数のマルチ状態記憶素子をプログラミングすることを含むプログラミング操作を実行し、
管理回路は、前記の「第2制御線に関連する1つ又は複数のマルチ状態記憶素子」をプログラミングした後に、前記の「第1制御線に関連する1つ又は複数のマルチ状態記憶素子」がオーバー・プログラミングされたか否かを判断し、
前記の「第2制御線に関連するマルチ状態記憶素子」の少なくとも一部は、前記の「第1制御線に関連するマルチ状態記憶素子」に隣接していることを特徴とするメモリシステム。
【請求項28】
第1制御線は、第1ビット線であり、
第2制御線は、第1ビット線に隣接する第2ビット線であることを特徴とする請求項27のメモリシステム。
【請求項29】
第1制御線は、第1ワード線であり、
第2制御線は、第1ワード線に隣接する第2ワード線であることを特徴とする請求項27のメモリシステム。
【請求項30】
前記の「第1制御線に関連する1つ又は複数のマルチ状態記憶素子」と、前記の「第2制御線に関連する1つ又は複数のマルチ状態記憶素子」は、NANDフラッシュメモリ素子であることを特徴とする請求項27のメモリシステム。
【請求項31】
前記の「1つ又は複数のマルチ状態記憶素子」は、記憶素子のアレイの一部であり、
記憶素子のアレイは、集積回路チップ上にあり、
管理回路は、状態機械を含んでおり、
状態機械は、集積回路チップ上にあり、
状態機械は、前記の「第1制御線に関連する1つ又は複数のマルチ状態記憶素子」がオーバー・プログラミングされたか否かの判断を実行することを特徴とする請求項27のメモリシステム。
【請求項32】
管理回路は、オーバー・プログラミングされたと判断された記憶素子に対してデータを修正することを特徴とする請求項27のメモリシステム。
【請求項33】
管理回路は、所定の記憶素子に隣接する記憶素子の電荷から生じる電界の存在を原因として前記所定の記憶素子がオーバー・プログラミングされたか否かを検知することを特徴とする請求項27のメモリシステム。
【請求項34】
管理回路は、所定の記憶素子が1つ又は複数のオーバー・プログラミング範囲のいずれかに含まれる閾電圧を有するか否かを検知し、
オーバー・プログラミング範囲は、前記所定の記憶素子に隣接する記憶素子の電荷から生じる電界の影響を推定することによって決定されることを特徴とする請求項27のメモリシステム。
【請求項35】
管理回路は、1つ又は複数のオーバー・プログラミング範囲のエッジについて、前記の「第1制御線に関連するマルチ状態記憶素子」に対して読取操作を実行し、
第1制御線に関連する所定のマルチ状態記憶素子が前記の「1つ又は複数のオーバー・プログラミング範囲」のいずれかに含まれる閾電圧を有する場合に、前記所定のマルチ状態記憶素子はオーバー・プログラミングされたと判断することを特徴とする請求項27のメモリシステム。
【請求項36】
第1制御線は、第1ワード線であり、
第2制御線は、第1ワード線に隣接する第2ワード線であることを特徴とする請求項35のメモリシステム。
【請求項37】
管理回路は、
前記の「第1制御線に関連するマルチ状態記憶素子」の初期状態を判断するために、1つ又は複数の読取比較点について、前記の「第1制御線に関連するマルチ状態記憶素子」に対して読取操作を実行し、
前記の「第1制御線に関連するマルチ状態記憶素子」のためのエラー訂正コード処理を実行し、
第1制御線に関連する所定のマルチ状態記憶素子のためのエラー訂正コード処理が失敗した場合に、前記所定のマルチ状態記憶素子がオーバー・プログラミングされたと判断することを特徴とする請求項27のメモリシステム。
【請求項38】
第1制御線は、第1ワード線であり、
第2制御線は、第1ワード線に隣接する第2ワード線であることを特徴とする請求項37のメモリシステム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14A】
【図14B】
【図15A】
【図15B】
【図15C】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14A】
【図14B】
【図15A】
【図15B】
【図15C】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【公表番号】特表2007−500412(P2007−500412A)
【公表日】平成19年1月11日(2007.1.11)
【国際特許分類】
【出願番号】特願2006−521858(P2006−521858)
【出願日】平成16年7月7日(2004.7.7)
【国際出願番号】PCT/US2004/021699
【国際公開番号】WO2005/013283
【国際公開日】平成17年2月10日(2005.2.10)
【出願人】(592012513)サンディスク コーポレイション (173)
【氏名又は名称原語表記】SanDisk Corporation
【Fターム(参考)】
【公表日】平成19年1月11日(2007.1.11)
【国際特許分類】
【出願日】平成16年7月7日(2004.7.7)
【国際出願番号】PCT/US2004/021699
【国際公開番号】WO2005/013283
【国際公開日】平成17年2月10日(2005.2.10)
【出願人】(592012513)サンディスク コーポレイション (173)
【氏名又は名称原語表記】SanDisk Corporation
【Fターム(参考)】
[ Back to top ]