(57)【要約】【課題】ベリファイ処理の回数を低減し、プログラムに必要な時間を短縮する。【解決手段】複数の状態に対応する互いに異なる複数のしきい値電圧を各メモリセルに設定することにより多値の状態を記録する不揮発性のメモリセルアレイへの書き込みを制御する不揮発性半導体記憶装置において、所定のプログラム開始電圧からプログラム電圧を所定の増分電圧だけ順次増加させながらベリファイして上記メモリセルをプログラムするときに、前に行ったプログラムにおけるベリファイ処理がパスしたときのプログラムパルス数に基づいて、上記プログラム開始電圧を決定して設定しプログラムする。【選択図】図９
2010102751.tif 000002
【特許請求の範囲】
【請求項１】
複数の状態に対応する互いに異なる複数のしきい値電圧を各メモリセルに設定することにより多値の状態を記録する不揮発性のメモリセルアレイと、上記メモリセルアレイへの書き込みを制御する制御回路とを備えた不揮発性半導体記憶装置において、
上記制御回路は、所定のプログラム開始電圧からプログラム電圧を所定の増分電圧だけ順次増加させながらベリファイして上記メモリセルをプログラムするときに、前に行ったプログラムにおけるベリファイ処理がパスしたときのプログラムパルス数に基づいて、上記プログラム開始電圧を決定して設定しプログラムすることを特徴とする不揮発性半導体記憶装置。
【請求項２】
上記ベリファイ処理がパスしたときのプログラムパルス数は、書き込み完了時のプログラムパルス数であることを特徴とする請求項１記載の不揮発性半導体記憶装置。
【請求項３】
上記制御回路は、上記プログラム開始電圧を、上記書き込み完了時のプログラムパルス数とその予め決められた基準値との差分に基づいて決定することを特徴とする請求項２記載の不揮発性半導体記憶装置。
【請求項４】
上記ベリファイ処理がパスしたときのプログラムパルス数は、最初に書き込みパスしたときのプログラムパルス数であることを特徴とする請求項１記載の不揮発性半導体記憶装置。
【請求項５】
上記制御回路は、上記プログラム開始電圧を、上記最初の書き込みパスしたときのプログラムパルス数とその予め決められた基準値との差分に基づいて決定することを特徴とする請求項４記載の不揮発性半導体記憶装置。
【請求項６】
上記制御回路は、上記プログラムするときの増分電圧を、上記書き込み完了時のプログラムパルス数と、上記最初の書き込みパスしたときのプログラムパルス数とに基づいて決定して設定することを特徴とする請求項１乃至５のうちのいずれか１つに記載の不揮発性半導体記憶装置。
【請求項７】
複数の状態に対応する互いに異なる複数のしきい値電圧を各メモリセルに設定することにより多値の状態を記録する不揮発性のメモリセルアレイと、上記メモリセルアレイへの書き込みを制御する制御回路とを備えた不揮発性半導体記憶装置の書き込み方法において、
所定のプログラム開始電圧からプログラム電圧を所定の増分電圧だけ順次増加させながらベリファイして上記メモリセルをプログラムするときに、前に行ったプログラムにおけるベリファイ処理がパスしたときのプログラムパルス数に基づいて、上記プログラム開始電圧を決定して設定しプログラムするステップを含むことを特徴とする不揮発性半導体記憶装置の書き込み方法。
【請求項８】
上記ベリファイ処理がパスしたときのプログラムパルス数は、書き込み完了時のプログラムパルス数であることを特徴とする請求項７記載の不揮発性半導体記憶装置の書き込み方法。
【請求項９】
上記プログラムするステップは、上記プログラムするためのプログラム開始電圧を、上記書き込み完了時のプログラムパルス数とその予め決められた基準値との差分に基づいて決定することを特徴とする請求項８記載の不揮発性半導体記憶装置の書き込み方法。
【請求項１０】
上記ベリファイ処理がパスしたときのプログラムパルス数は、最初に書き込みパスしたときのプログラムパルス数であることを特徴とする請求項７記載の不揮発性半導体記憶装置の書き込み方法。
【請求項１１】
上記プログラムするステップは、上記プログラムするためのプログラム開始電圧を、上記最初の書き込みパスしたときのプログラムパルス数とその予め決められた基準値との差分に基づいて決定することを特徴とする請求項１０記載の不揮発性半導体記憶装置の書き込み方法。
【請求項１２】
上記プログラムするステップは、上記プログラムするときの増分電圧を、上記書き込み完了時のプログラムパルス数と、上記最初の書き込みパスしたときのプログラムパルス数とに基づいて決定して設定することを特徴とする請求項７乃至１１のうちのいずれか１つに記載の不揮発性半導体記憶装置の書き込み方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えばフラッシュメモリなどの電気的書き換え可能な不揮発性半導体記憶装置（ＥＥＰＲＯＭ）とその書き込み方法に関する。
【背景技術】
【０００２】
ビット線とソース線との間に複数のメモリセルトランジスタ（以下、メモリセルという）を直列に接続してＮＡＮＤストリングを構成し、高集積化を実現したＮＡＮＤ型不揮発性半導体記憶装置が知られている（例えば、非特許文献１−４参照。）。
【０００３】
一般的なＮＡＮＤ型不揮発性半導体記憶装置において、消去は、半導体基板に例えば２０Ｖの高電圧を印加し、ワード線に０Ｖを印加する。これにより、例えばポリシリコンなどからなる電荷蓄積層であるフローティングゲートより電子を引き抜いて、しきい値を消去しきい値（例えば、−３Ｖ）よりも低くする。一方、書き込み（プログラム）においては、半導体基板に０Ｖを与え、制御ゲートに例えば２０Ｖの高電圧を印加する。これにより、半導体基板よりフローティングゲートに電子を注入することにより、しきい値を書き込みしきい値（例えば、１Ｖ）よりも高くする。これらのしきい値をとるメモリセルは、書き込みしきい値と読み出ししきい値の間の読み出し電圧（例えば、０Ｖ）を制御ゲートに印加することにより、そのメモリセルに電流が流れるか否かにより、その状態を判断することができる。
【０００４】
以上のように構成された不揮発性半導体記憶装置において、書き込み対象であるメモリセルにプログラム動作により書き込みを行うと、メモリセルトランジスタのフローティングゲートに電荷が注入されしきい値電圧が上昇する。これにより、ゲートにしきい値以下の電圧を印加しても電流が流れなくなり、データ「０」を書き込んだ状態が達成される。一般に、消去状態のメモリセルのしきい値電圧にはバラツキがある。従って、所定の書き込み電圧を印加してプログラム動作を実行し、しきい値電圧がベリファイレベル以上になるようにベリファイすると、書き込み後のメモリセルのしきい値電圧はベリファイレベル以上である程度分布を有するものとなる。
【０００５】
メモリセルを異なるしきい値電圧に設定することで多値を表現する多値メモリセルの不揮発性半導体記憶装置の場合には、しきい値電圧が広い分布を有すると、隣り合うレベル値の間の間隔が狭くなり確実なデータ記録を実行することが困難になる。この問題点を解決するために、特許文献５においては、メモリセルに複数の異なるしきい値を設定することにより多値を記録する不揮発性のメモリコア回路と、上記メモリコア回路への書き込みを制御する制御回路を含み、上記制御回路は、ある１つのしきい値にメモリセルをプログラムする際に上記１つのしきい値に設定されるメモリセル及び上記１つのしきい値より高いしきい値に設定されるメモリセルを上記１つのしきい値にプログラムし、上記複数の異なるしきい値の低い方のしきい値から順番にプログラムすることを特徴としている。
【０００６】
また、特許文献６においては、不揮発性半導体メモリのプログラム精度を向上するとともに、プログラム時間を短縮するための不揮発性半導体メモリが提案されている。この不揮発性半導体メモリでは、不揮発性のメモリセルにデータをプログラムするときに、プログラム電圧を徐々に増加させながらこのプログラム電圧がメモリセルに複数回印加される。この際、プログラムするすべてのメモリセルの閾値電圧が初期値に達するまで、プログラム電圧の増分は第１電圧に設定される。その後、閾値電圧が目標値に達するまで、プログラム電圧の増分は第２電圧に設定される。プログラム電圧をその増分を変えることなく上昇させることで、少ないプログラムパルス数で、メモリセルの閾値電圧を目標値に近づけることができる。また、閾値電圧が初期値を超えた後、プログラム電圧の増分を第２電圧に設定することで、閾値電圧の目標値に対する誤差を最小限にできる。この結果、メモリセルのプログラム時間を削減できる。
【０００７】
さらに、特許文献７においては、書き込みを完了する段階が状態毎に異ならないように初期の制御ゲート電圧及び段階が進む場合における制御ゲート電圧の増分の設定を適切に行い、閾値電圧を精度よく制御することができる不揮発性半導体記憶装置が提案されている。この不揮発性半導体記憶装置では、メモリセルアレイと制御回路とを備える不揮発性半導体記憶装置であって、書き込み動作において、制御回路が、書き込み対象のメモリセルの制御ゲートに印加する各書き込み状態に対応した制御ゲート電圧を、制御ゲート電圧の各書き込み状態間での電圧差が、各書き込み状態を判定するための閾値電圧の各書き込み状態間での電圧差に等しくなるように設定し、未書き込みメモリセルに対し書き込み状態に対応した制御ゲート電圧を印加する電圧印加処理と、メモリセルの閾値電圧が対応する書き込み状態の閾値電圧範囲内にあるか否かを判定するベリファイ処理を繰り返し実行する。
【０００８】
【特許文献１】特開平９−１４７５８２号公報。
【特許文献２】特開２０００−２８５６９２号公報。
【特許文献３】特開２００３−３４６４８５号公報。
【特許文献４】特開２００１−０２８５７５号公報。
【特許文献５】特開２００１−３２５７９６号公報。
【特許文献６】特開２００３−１７３６８８号公報。
【特許文献７】特開２００７−１９３８８５号公報。
【発明の開示】
【発明が解決しようとする課題】
【０００９】
図４は従来技術に係るＭＬＣ（Multi Level Cell）フラッシュメモリのしきい値電圧の確率分布（Ｖｔ分布）を示す図であり、図５は図４のしきい値電圧の確率分布（Ｖｔ分布）において状態（１０Ｌ）から状態（００）にプログラムするときの状態を示す図である。この従来例では、４値のフラッシュメモリの場合を示しており、一例として、図４に示すように、しきい値の低い方から状態（１１）、（０１）、（００）、（１０）の順序で並置している。なお、（１０Ｌ）はＬＳＢ（最下位ビット）プログラム時の状態であり、（１０Ｕ）はＭＳＢ（最上位ビット）プログラム後の状態である。また、Ｒ１は読み出し電圧であり、ＶＰＶ１は状態（０１）のベリファイ電圧であり、ＶＰＶ２は状態（００）のベリファイ電圧であり、ＶＰＶ３は状態（１０Ｕ）のベリファイ電圧である。
【００１０】
図６は従来技術に係るＩＳＰＰ（Increment Step Pulse Program）法を用いて状態（００）をプログラムした後、状態（１０）をプログラムするときの書き込み電圧の時間経過を示す図である。図６において、状態（００）のプログラムにおいて５つのプログラムパルス１０１−１０５が用いられ、それらの印加直後でベリファイ処理１１１−１１５が行われている。また、状態（１０）のプログラムにおいて５つのプログラムパルス２０１−２０５が用いられ、それらの印加直後でベリファイ処理２１１−２１５が行われている。
【００１１】
図４において、矢印３０１，３０２はそれぞれ、メモリセルを状態（１０Ｌ）（ＬＳＢプログラム状態）から状態（１０Ｕ）及び状態（００）（ＭＳＢプログラム状態）へプログラムする場合を示している。後者の場合において、図５に示すように、最初のプログラムパルスはセル分布をより高いしきい値電圧にシフトさせる。次いで、ＩＳＰＰ法により次の昇圧されたプログラムパルスはしきい値分布を狭めることを可能にする。従って、最初のプログラムパルスは、可能な限り最低電圧に維持する方がよいと考えられる。しかしながら、この方法はメモリセルの性能が劣化する場合の幾つかの制限事項を有する。
【００１２】
そして、メモリセルの劣化は、書き込み速度性能に直接に影響を与えるであろう。メモリセルが劣化すると、プログラムされるすべてのメモリセルのしきい値分布を望ましいものにするためにより多くのＩＳＰＰステップが必要となる。従って、しきい値分布をシフトするためにより多くの時間が必要である。
【００１３】
図７は従来技術において状態（００）のプログラムのために１つ以上のステップが必要であり付加的な時間が必要であることを示す書き込み電圧の時間経過図である。なお、図７の符号は図６と同様である。最初のプログラムパルスに使用される初期電圧は変わらないことから、メモリセルの劣化は書き込み速度に直接に影響を与えることになる。そして最終的には、書き込み速度は仕様により決定されていることから、図７に示すように、所要時間が長くなり書き込み動作がフェイルとなる可能性が高くなる。
【００１４】
図８は従来技術に係るプログラム処理の一例を示すフローチャートである。図８において、ステップＳ１において所定のプログラム開始電圧Ｖｓｔａｒｔｄｅｆ（ｎ）を設定し、ステップＳ２においてプログラム開始電圧Ｖｓｔａｒｔｄｅｆ（ｎ）をプログラム電圧Ｖｐｇｍ（ｎ）に設定する。そして、ステップＳ３においてプログラム電圧Ｖｐｇｍ（ｎ）を有するプログラムパルスを印加し、ステップＳ４においてプログラムされたか否かについてベリファイし、ステップＳ５においてすべてのメモリセルについてパスしたか否かについて判断し、ＹＥＳのときはステップＳ７に進む一方、ＮＯのときはステップＳ６に進む。ステップＳ６では、プログラム電圧Ｖｐｇｍ（ｎ）を増分Ｖｓｔｅｐだけインクリメントしてプログラム電圧Ｖｐｇｍ（ｎ）を設定してステップＳ３に戻る。
【００１５】
次いで、ステップＳ７において所定のプログラム開始電圧Ｖｓｔａｒｔｄｅｆ（ｎ＋１）を設定し、ステップＳ８においてプログラム開始電圧Ｖｓｔａｒｔｄｅｆ（ｎ＋１）をプログラム電圧Ｖｐｇｍ（ｎ＋１）に設定する。そして、ステップＳ９においてプログラム電圧Ｖｐｇｍ（ｎ＋１）を有するプログラムパルスを印加し、ステップＳ１０においてプログラムされたか否かについてベリファイし、ステップＳ１１においてすべてのメモリセルについてパスしたか否かについて判断し、ＹＥＳのときは当該プログラム処理を終了して次の所定の処理を行うが、ＮＯのときはステップＳ１２に進む。ステップＳ１２では、プログラム電圧Ｖｐｇｍ（ｎ＋１）を増分Ｖｓｔｅｐだけインクリメントしてプログラム電圧Ｖｐｇｍ（ｎ＋１）を設定してステップＳ３に戻る。
【００１６】
図８のプログラム処理において、ステップＳ１からステップＳ６までの処理は、例えば状態（１０Ｌ）からより高いしきい値の状態（００）にプログラムするための処理であり、ステップＳ７からステップＳ１２までの処理は、例えば状態（１０Ｌ）からより高いしきい値の状態（１０Ｕ）にプログラムするための処理である。
【００１７】
上記のフローチャートは、従来技術に係るＩＳＰＰ法を使用すればプログラム動作がどのようにしてフェイルするかという可能性を例示しており、状態（００）のプログラムに６パルス以上が必要とされれば、劣化したセルのプログラムに必要な追加時間を回復できず、メモリはフェイルとなる。
【００１８】
すなわち、従来技術に係るＭＬＣ形フラッシュメモリにおいて、プログラムアルゴリズムは、プログラムパルスとベリファイステップとを組み合わせの連続からなる。ベリファイがフェイルすると、前のパルス電圧よりも高い電圧を用いて選択されたワード線を介してメモリセルに印加する。このプロセスは、ベリファイ処理がすべてのプログラムされるメモリセルがパスするまで繰り返される。このプロセスはＩＳＰＰ法と呼ばれている。
【００１９】
多くの消去又は書き込みサイクル後、並びに、プロセスのばらつきのために、多くのベリファイ処理が変化する。もしベリファイ処理が多くなれば、メモリの書き込み速度は低下し、最後には仕様値から離れた状態となる。
【００２０】
本発明の目的は以上の問題点を解決し、ベリファイ処理の回数を低減し、プログラムに必要な時間を短縮することができる不揮発性半導体記憶装置とその書き込み方法を提供することにある。
【課題を解決するための手段】
【００２１】
第１の発明に係る不揮発性半導体記憶装置は、複数の状態に対応する互いに異なる複数のしきい値電圧を各メモリセルに設定することにより多値の状態を記録する不揮発性のメモリセルアレイと、上記メモリセルアレイへの書き込みを制御する制御回路とを備えた不揮発性半導体記憶装置において、
上記制御回路は、所定のプログラム開始電圧からプログラム電圧を所定の増分電圧だけ順次増加させながらベリファイして上記メモリセルをプログラムするときに、前に行ったプログラムにおけるベリファイ処理がパスしたときのプログラムパルス数に基づいて、上記プログラム開始電圧を決定して設定しプログラムすることを特徴とする。
【００２２】
上記不揮発性半導体記憶装置において、上記ベリファイ処理がパスしたときのプログラムパルス数は、書き込み完了時のプログラムパルス数であることを特徴とする。
【００２３】
ここで、上記制御回路は、上記プログラムするためのプログラム開始電圧を、上記書き込み完了時のプログラムパルス数とその予め決められた基準値との差分に基づいて決定することを特徴とする。
【００２４】
また、上記不揮発性半導体記憶装置において、上記ベリファイ処理がパスしたときのプログラムパルス数は、最初に書き込みパスしたときのプログラムパルス数であることを特徴とする。
【００２５】
ここで、上記制御回路は、上記プログラムするためのプログラム開始電圧を、上記最初の書き込みパスしたときのプログラムパルス数とその予め決められた基準値との差分に基づいて決定することを特徴とする。
【００２６】
さらに、上記不揮発性半導体記憶装置において、上記制御回路は、上記プログラムするときの増分電圧を、上記書き込み完了時のプログラムパルス数と、上記最初の書き込みパスしたときのプログラムパルス数とに基づいて決定して設定することを特徴とする。
【００２７】
第２の発明に係る不揮発性半導体記憶装置の書き込み方法は、複数の状態に対応する互いに異なる複数のしきい値電圧を各メモリセルに設定することにより多値の状態を記録する不揮発性のメモリセルアレイと、上記メモリセルアレイへの書き込みを制御する制御回路とを備えた不揮発性半導体記憶装置の書き込み方法において、
所定のプログラム開始電圧からプログラム電圧を所定の増分電圧だけ順次増加させながらベリファイして上記メモリセルをプログラムするときに、前に行ったプログラムにおけるベリファイ処理がパスしたときのプログラムパルス数に基づいて、上記プログラム開始電圧を決定して設定しプログラムするステップを含むことを特徴とする。
【００２８】
上記不揮発性半導体記憶装置の書き込み方法において、上記ベリファイ処理がパスしたときのプログラムパルス数は、書き込み完了時のプログラムパルス数であることを特徴とする。
【００２９】
ここで、上記プログラムするステップは、上記プログラムするためのプログラム開始電圧を、上記書き込み完了時のプログラムパルス数とその予め決められた基準値との差分に基づいて決定することを特徴とする。
【００３０】
また、上記不揮発性半導体記憶装置の書き込み方法において、上記ベリファイ処理がパスしたときのプログラムパルス数は、最初に書き込みパスしたときのプログラムパルス数であることを特徴とする。
【００３１】
ここで、上記プログラムするステップは、上記プログラムするためのプログラム開始電圧を、上記最初の書き込みパスしたときのプログラムパルス数とその予め決められた基準値との差分に基づいて決定することを特徴とする。
【００３２】
さらに、上記不揮発性半導体記憶装置の書き込み方法において、上記プログラムするステップは、上記プログラムするときの増分電圧を、上記書き込み完了時のプログラムパルス数と、上記最初の書き込みパスしたときのプログラムパルス数とに基づいて決定して設定することを特徴とする。
【発明の効果】
【００３３】
従って、本発明に係る不揮発性半導体記憶装置とその書き込み方法によれば、所定のプログラム開始電圧からプログラム電圧を所定の増分電圧だけ順次増加させながらベリファイして上記メモリセルをプログラムするときに、前に行ったプログラムにおけるベリファイ処理がパスしたときのプログラムパルス数に基づいて、上記プログラム開始電圧を決定して設定しプログラムするので、ベリファイの処理数に依存するプログラム動作に用いられるプログラム電圧の動的な調整を行い、これにより、メモリアレイの歩留まりを向上でき、メモリセルの寿命を向上させることができる。当該装置及び方法により、「より遅い」プログラム特性を示すセルについて必要とされる場合に、プログラム電圧を動的に増大させることができる。従って、ベリファイ処理の回数を低減し、プログラムに必要な時間を短縮することができる。
【発明を実施するための最良の形態】
【００３４】
以下、本発明に係る実施形態について図面を参照して説明する。なお、以下の各実施形態において、同様の構成要素については同一の符号を付している。
【００３５】
図１は本発明の一実施形態に係るＮＡＮＤ型フラッシュＥＥＰＲＯＭの全体構成を示すブロック図である。また、図２は図１のメモリセルアレイ１０とその周辺回路の構成を示す回路図である。さらに、図３は図２のページバッファ（２本のビットライン分）の詳細構成を示す回路図である。まず、本実施形態に係るＮＡＮＤ型フラッシュＥＥＰＲＯＭの構成について以下に説明する。
【００３６】
図１において、本実施形態に係るＮＡＮＤ型フラッシュＥＥＰＲＯＭは、メモリセルアレイ１０と、その動作を制御する制御回路１１と、ロウデコーダ１２と、高電圧発生回路１３と、データ書き換え及び読み出し回路１４と、カラムデコーダ１５と、コマンドレジスタ１７と、アドレスレジスタ１８と、動作ロジックコントローラ１９と、データ入出力バッファ５０と、データ入出力端子５１とを備えて構成される。
【００３７】
メモリセルアレイ１０は、図２に示すように、例えば１６個のスタックト・ゲート構造の電気的書き換え可能な不揮発性メモリセルＭＣ０〜ＭＣ１５を直列接続してＮＡＮＤセルユニットＮＵ（ＮＵ０，ＮＵ１， …）が構成される。各ＮＡＮＤセルユニットＮＵは、ドレイン側が選択ゲートトランジスタＳＧ１を介してビット線ＢＬに接続され、ソース側が選択ゲートトランジスタＳＧ２を介して共通ソース線ＣＥＬＳＲＣに接続される。ロウ方向に並ぶメモリセルＭＣの制御ゲートは共通にワード線ＷＬに接続され、選択ゲートトランジスタＳＧ１，ＳＧ２のゲート電極はワード線ＷＬと平行して配設される選択ゲート線ＳＧＤ，ＳＧＳに接続される。１本のワード線ＷＬにより選択されるメモリセルの範囲が書き込み及び読み出しの単位となる１ページである。１ページ又はその整数倍の範囲の複数のＮＡＮＤセルユニットＮＵの範囲がデータ消去の単位である１ブロックとなる。書き換え及び読み出し回路１４は、ページ単位のデータ書き込み及び読み出しを行うために、ビット線毎に設けられたセンスアンプ回路（ＳＡ）及びラッチ回路（ＤＬ）を含み、以下、ページバッファという。
【００３８】
図２のメモリセルアレイ１０は、簡略化した構成を有し、複数のビット線でページバッファを共有してもよい。この場合は、データ書き込み又は読み出し動作時にページバッファに選択的に接続されるビット線数が１ページの単位となる。また、図２は、１個の入出力端子５２との間でデータの入出力が行われるセルアレイの範囲を示している。メモリセルアレイ１０のワード線ＷＬ及びビット線ＢＬの選択を行うために、それぞれロウデコーダ１２及びカラムデコーダ１５が設けられている。制御回路１１は、データ書き込み、消去及び読み出しのシーケンス制御を行う。制御回路１１により制御される高電圧発生回路１３は、データ書き換え、消去、読み出しに用いられる昇圧された高電圧や中間電圧を発生する。
【００３９】
入出力バッファ５０は、データの入出力及びアドレス信号の入力に用いられる。すなわち、入出力バッファ５０及びデータ線５２を介して、入出力端子５１とページバッファ１４の間でデータの転送が行われる。入出力端子５２から入力されるアドレス信号は、アドレスレジスタ１８に保持され、ロウデコーダ１２及びカラムデコーダ１５に送られてデコードされる。入出力端子５２からは動作制御のコマンドも入力される。入力されたコマンドはデコードされてコマンドレジスタ１７に保持され、これにより制御回路１１が制御される。チップイネーブル信号ＣＥＢ、コマンドラッチイネーブルＣＬＥ、アドレスラッチイネーブル信号ＡＬＥ、書き込みイネーブル信号ＷＥＢ、読み出しイネーブル信号ＲＥＢ等の外部制御信号は動作ロジックコントロール回路１９に取り込まれ、動作モードに応じて内部制御信号が発生される。内部制御信号は、入出力バッファ５０でのデータラッチ、転送等の制御に用いられ、さらに制御回路１１に送られて、動作制御が行われる。
【００４０】
ページバッファ１４は、２個のラッチ回路１４ａ，１４ｂを備え、多値動作の機能とキャッシュの機能を切り換えて実行できるように構成されている。すなわち、１つのメモリセルに１ビットの２値データを記憶する場合に、キャッシュ機能を備え、１つのメモリセルに２ビットの４値データを記憶する場合には、キャッシュ機能とするか、又はアドレスによって制限されるがキャッシュ機能を有効とすることができる。そのような機能を実現するための具体的なページバッファ１４Ａ（２本のビットライン分）の詳細構成を図３に示す。
【００４１】
図３において、ページバッファ１４Ａは、２個のインバータ６１，６２にてなるラッチＬ１と、２個のインバータ６３，６４にてなるラッチＬ２と、ベリファイ用キャパシタ７０と、プリチャージ用トランジスタ７１と、ベリファイ用トランジスタ７２乃至７５と、ベリファイ・パスフェイル判定トランジスタ７６，７７と、カラムゲートトランジスタ８１，８２と、転送スイッチトランジスタ８３乃至８５，８８，８９と、ビットライン選択トランジスタ８６，８７と、ラッチイコライズトランジスタ９０と、リセットトランジスタ９１とを備えて構成される。
【００４２】
図３において、２本のビット線ＢＬｅ，ＢＬｏがページバッファ１４Ａに選択的に接続されるようになっている。この場合、ビット線選択信号ＢＬＳＥ又はＢＬＳＯによって、ビットライン選択トランジスタ８６又は８７を導通させ、ビット線ＢＬｅ又はビット線ＢＬｏの一方を選択的にページバッファ１４Ａに接続する。なお、一方のビット線が選択されている間、非選択状態である他方のビット線は、固定の接地電位や電源電圧電位にすることによって、隣接ビット線間のノイズを削減することが好ましい。
【００４３】
図３のページバッファ１４Ａは、第１のラッチＬ１と、第２のラッチＬ２とを有する。ページバッファ１４Ａは所定の動作制御によって、主に読み出し、書き込み動作に寄与する。また、第２のラッチＬ２は、２値動作においては、キャッシュ機能を実現する二次的なラッチ回路であり、キャッシュ機能を使用しない場合には当該ページバッファ１４Ａの動作に補助的に寄与して多値動作を実現する。
【００４４】
ラッチＬ１は、クロックト・インバータ６１，６２を逆並列接続して構成されている。メモリセルアレイ１０のビット線ＢＬは、転送スイッチトランジスタ８５を介してセンスノードＮ４に接続され、センスノードＮ４はさらに転送スイッチトランジスタ８３を介してラッチＬ１のデータ保持ノードＮ１に接続されている。センスノードＮ４には、プリチャージ用トランジスタ７１が設けられている。ノードＮ１は、転送スイッチトランジスタ７４，７５を介してノードＮ１のデータを一時記憶するための一時記憶ノードＮ３に接続されている。さらに、ノードＮ４には、ビット線に対して電圧Ｖ１をプリチャージするためのプリチャージ用トランジスタ７１も接続されている。ノードＮ４にはレベル保持のためのキャパシタ７０が接続されている。キャパシタ７０の他端は接地される。
【００４５】
第２のラッチＬ２は、第１のラッチＬ１と同様に、クロックト・インバータ６３，６４を逆並列接続して構成されている。ラッチＬ２の２つのデータノードＮ５，Ｎ６は、カラム選択信号ＣＳＬにより制御されるカラムゲートトランジスタ８１，８２を介して、データ入出力バッファ５０に接続されるデータ線５２に接続される。ノードＮ５は、転送スイッチトランジスタ８４を介して、ノードＮ４に接続される。
【００４６】
図３は、メモリセルアレイ１０と、ページバッファ１４と、データ入出力バッファ５０の接続関係を示す。ＮＡＮＤ型フラッシュＥＥＰＲＯＭの読み出し、書き込みの処理単位は、あるロウアドレスでの同時に選択される１ページ分の容量（例えば５１２バイト）となっている。８個のデータ入出力端子５２があるため、１つのデータ入出力端子５２に対しては、５１２ビットとなっており、図３ではその５１２ビット分の構成を示している。
【００４７】
データをメモリセルに書き込む場合には、データ信号線５２から書き込みデータを第２のラッチＬ２に取り込む。書き込み動作を開始するには、書き込みデータが第１のラッチＬ１になければならないので、続いて、ラッチＬ２に保持したデータをラッチ回路Ｌ１に転送する。また、読み出し動作においては、データ入出力端子５１にデータを出力するには、読み出したデータがラッチＬ２になければならないので、ラッチＬ１で読み出したデータをラッチＬ２に転送する必要がある。従って、転送スイッチトランジスタ８３，８４を導通状態にしてラッチＬ１とラッチＬ２の間でデータを転送を行うことが可能なように構成されている。このとき、転送先のラッチ回路を非活性状態にしてからデータを転送し、その後転送先のラッチ回路を活性状態に戻してデータを保持することなる。
【００４８】
なお、図１乃至図３において、メモリセルアレイ１０へのデータの書き込み、消去の基本動作は例えば非特許文献４−５において開示されており周知技術であり、詳細説明を省略する。
【００４９】
本実施形態では、フラッシュＥＥＰＲＯＭにおいて、ベリファイ処理の回数を低減し、プログラムに必要な時間を短縮することができる改良されたＩＳＰＰ法を用いた書き込み方法を提案する。
【００５０】
図９は実施形態に係るプログラム処理の一例を示すフローチャートである。図９のプログラム処理は、ワード線毎に実行される処理であって、図８の従来技術に係るプログラム処理に比較して、ステップＳ２１，Ｓ２２，Ｓ２３を追加するとともに、ステップＳ７をステップＳ７Ａの処理に置き換えたことを特徴としている。本実施形態では、特に、制御回路１１は、メモリセルに対して例えば状態（１１）から状態（０１）にプログラムするときに（もしくは、例えば状態（１０Ｌ）から状態（００）にプログラムするときに）順次プログラム電圧を所定の増分電圧Ｖｓｔｅｐだけ順次増加させながらベリファイし、すべてのメモリセルについてベリファイ処理がパスしたときの回数（図９の例では、プログラムパルス数Ｎｐａｃｔｌａｓｔ（ｎ））に依存して例えば次に状態（１０Ｕ）にプログラムするためのプログラム開始電圧Ｖｓｔａｒｔ（ｎ＋１）（＝Ｖｓｔａｒｔｄｅｆ（ｎ＋１）＋Δ（Ｎｐａｃｔｌａｓｔ（ｎ）））；ここで、Δ（Ｎｐａｃｔｌａｓｔ（ｎ））はプログラムパルス数Ｎｐａｃｔｌａｓｔ（ｎ））に依存する増分電圧である。）を設定し、当該プログラム開始電圧Ｖｓｔａｒｔ（ｎ＋１）からプログラム電圧を所定の増分電圧Ｖｓｔｅｐだけ順次増加させながらベリファイして上記メモリセルを例えば状態（１０Ｕ）にプログラムすることを特徴としている。
【００５１】
図９において、ステップＳ１において所定のプログラム開始電圧Ｖｓｔａｒｔｄｅｆ（ｎ）を設定し、ステップＳ２１においてプログラムパルス数を計数するパラメータＮｐａｃｔ（ｎ）を１に初期化し、ステップＳ２においてプログラム開始電圧Ｖｓｔａｒｔｄｅｆ（ｎ）をプログラム電圧Ｖｐｇｍ（ｎ）に設定する。そして、ステップＳ３においてプログラム電圧Ｖｐｇｍ（ｎ）を有するプログラムパルスを印加し、ステップＳ４においてプログラムされたか否かについてベリファイし、ステップＳ５においてすべてのメモリセルについてパスしたか否かについて判断し、ＹＥＳのときはステップＳ２３に進む一方、ＮＯのときはステップＳ６に進む。ステップＳ６では、プログラム電圧Ｖｐｇｍ（ｎ）を増分Ｖｓｔｅｐだけインクリメントした後、パラメータＮｐａｃｔ（ｎ）を１だけインクリメントしてプログラム電圧Ｖｐｇｍ（ｎ）を設定してステップＳ３に戻る。
【００５２】
次いで、ステップＳ２３においてパラメータＮｐａｃｔ（ｎ）を書き込み完了時のプログラムパルス数Ｎｐａｃｔｌａｓｔに設定し、ステップＳ７Ａにおいて書き込み完了時のプログラムパルス数Ｎｐａｃｔｌａｓｔに基づいてプログラム開始電圧Ｖｓｔａｒｔ（ｎ＋１）を決定して設定し、ステップＳ８においてプログラム開始電圧Ｖｓｔａｒｔ（ｎ＋１）をプログラム電圧Ｖｐｇｍ（ｎ＋１）に設定する。そして、ステップＳ９においてプログラム電圧Ｖｐｇｍ（ｎ＋１）を有するプログラムパルスを印加し、ステップＳ１０においてプログラムされたか否かについてベリファイし、ステップＳ１１においてすべてのメモリセルについてパスしたか否かについて判断し、ＹＥＳのときは当該プログラム処理を終了して次の所定の処理を行うが、ＮＯのときはステップＳ１２に進む。ステップＳ１２では、プログラム電圧Ｖｐｇｍ（ｎ＋１）を増分Ｖｓｔｅｐだけインクリメントしてプログラム電圧Ｖｐｇｍ（ｎ＋１）を設定してステップＳ３に戻る。
【００５３】
図９において、例えば、書き込み完了時のプログラムパルス数Ｎｐａｃｔｌａｓｔ＝５のとき増分電圧Δ（Ｎｐａｃｔｌａｓｔ（ｎ））＝０であり、書き込み完了時のプログラムパルス数Ｎｐａｃｔｌａｓｔ＝５のとき増分電圧Δ（Ｎｐａｃｔｌａｓｔ（ｎ））＝０．５である。状態（１０Ｕ）のプログラムパルスの初期電圧を調整することができれば、状態（００）のより長いプログラム時間をリカバーできる。なお、Ｎは制御回路１１の内蔵メモリに格納される。
【００５４】
図１０は、実施形態に係る改良形ＩＳＰＰ（Increment Step Pulse Program）法を用いて状態（００）をプログラムした後、状態（１０）をプログラムするときの書き込み電圧の時間経過を示す図である。図１０では、状態（００）のプログラム時のプログラム開始電圧はＶｓｔａｒｔ２であるが、当該状態（００）のプログラム時のパス時のプログラムパルス数に依存して次の状態（１０）のプログラム時のプログラム開始電圧Ｖｓｔａｒｔ３を決定して設定している。この設定はワード線毎に設定することもでき、メモリセルの寿命を通じて一定のプログラム時間を維持するために、各しきい値分布のプログラム電圧は動的に調整されるべきである。先行するプログラム時のＩＳＰＰ法によるプログラムパルス数に依存して書き込み電圧が動的に調整されれば、全体的なプログラム時間を仕様値内に保つことができる。一般に、この方法は他のしきい値分布のプログラムにも適用することができる。
【００５５】
図１１は実施形態に係る４値フラッシュＥＥＰＲＯＭのしきい値電圧の確率分布（Ｖｔ分布）を示す図である。図１１において、ＶＰＶ１は状態（０１）のベリファイ電圧であり、ＶＰＶ２は状態（００）のベリファイ電圧であり、ＶＰＶ３は状態（１０Ｕ）のベリファイ電圧である。１つのメモリセル当り２ビットのＭＬＣ型ＮＡＮＤフラッシュメモリの場合は、４つの状態（１１）、（０１）、（１０）及び（００）のしきい値分布が存在する。
【００５６】
図１１（ａ）のＬＳＢのプログラムでは、状態（１１）をそのままの状態とするか、もしくはプログラム処理４０１により状態（１１）を状態（１０Ｌ）にプログラムする。また、図１１（ｂ）のＭＳＢのプログラムでは、状態（１１）をそのままの状態とするか、もしくはプログラム処理４０２により状態（１１）を状態（０１）にプログラムする。さらに、プログラム処理４０３により状態（１０Ｌ）を状態（００）にプログラムするか、もしくはプログラム処理４０４により状態（１０Ｌ）を状態（１０Ｕ）にプログラムする。
【００５７】
ここで、書き込み電圧の自動調整は、あらゆる状況に適用することができる。先の詳細な実施形態は、１つのＭＳＢ動作（１つのユーザコマンドに相当）の間に発生することから実装が容易である。書き込み電圧の自動調整方法の別の実装方法は、各分布毎にプログラム検証サイクル数を規則的に保存し、このデータを使用して各分布のプログラム開始電圧を調整するというものである。書き込み電圧の自動調整は、１つのメモリセル当り２ビットのＭＬＣ形ＮＡＮＤフラッシュメモリのすべてのしきい値分布に適用可能である。すなわち、本発明では、所定のプログラム開始電圧からプログラム電圧を所定の増分電圧だけ順次増加させながらベリファイして上記メモリセルをプログラムするときに、前に行ったプログラム（直前のプログラムに限定されない。）におけるベリファイ処理がパスしたときのプログラムパルス数に基づいて、上記プログラム開始電圧を決定して設定しプログラムすることを特徴としている。例えば、プログラム処理４０４において、プログラム処理４０１〜４０３のいずれか１つのプログラム処理におけるベリファイ処理がパスしたときのプログラムパルス数に基づいて、上記プログラム開始電圧を決定して設定しプログラムしてもよい。
【００５８】
実施形態のまとめ．
以上説明したように、本実施形態によれば、「遅い」セルのプログラムが、プログラム及びベリファイのサイクル数を増加させることにより書き込み性能を過度に低減するのを回避するために、プログラム電圧の自己調整法が用いられている。すなわち、グレイコードを用いたＭＬＣ分布において状態（００）が最初にプログラムされる場合、制御回路１１がプログラム及びベリファイのサイクル数を記録する。この数が一定の限度を超える場合は、状態（１０）に対するプログラム開始電圧を増大すべきである。このメカニズムを使用して、状態（１０）のプログラムに用いられるプログラム及びベリファイのサイクルが次いで減じられ、これは全体のプログラム時間を、状態（００）のプログラムが一定の限度より少ない数のサイクルを要する場合と同一に保持するという効果を有する。
【００５９】
例えば、典型的な５つのパルスが状態（００）及び（１０）のプログラムに用いられ得る。状態（００）及び（１０）の両方のプログラムが、所望のＶ番目の分布においてすべてのセルのプログラムに最大５つのパルスを要する場合、書き込み性能は最低（仕様により許容される最高の時間に近い）になる（図６参照。）。
【００６０】
次いで、メモリセルの性能が耐久性の問題や処理のばらつきにより低下すると、状態（００）のプログラムについて、さらにもう１つのプログラム及びベリファイのサイクルが必要となり得る（図７参照。）。しかしながら、書き込み速度の仕様は常に維持される必要があるため、６番目のプログラムパルスがパスせず、プログラムの最後の状態でフェイルとなる。
【００６１】
他方、制御回路１１が最大５サイクルの代わりにプログラム及びベリファイの６サイクルを許容する場合、状態（００）のプログラムはパスの可能性がより高い。そして、状態（１０）のプログラムのためのプログラム開始電圧が増大することにより、プログラム及びベリファイのサイクル数は例えば４に減少することができる。従って、全体のプログラム時間は仕様を超えることなく、最後の状態でパスする（図１０参照。）。
【００６２】
当該実施形態に係る書き込み方法は、ベリファイのプロセス数に依存するプログラム動作に用いられるプログラム電圧の動的な調整を示しており、メモリアレイの歩留まりを向上でき、メモリセルの寿命を向上させることができる。当該方法により、「より遅い」プログラム特性を示すセルについて必要とされる場合のみに、プログラム電圧を動的に増大させることができる。
【００６３】
変形例．
以上の実施形態においては、各ワード線毎に実行されるプログラム処理において、書き込み完了時（図９のステップＳ５でＹＥＳ）のプログラムパルス数Ｎｐａｃｔｌａｓｔに基づいてプログラム開始電圧Ｖｓｔａｒｔ（ｎ＋１）を決定して設定しているが、本発明はこれに限らず、図１３の変形例に示すように、最初に書き込みパスしたプログラムパルス数Ｎｐａｃｔｆｉｒｓｔ（ｎ）（図１３のステップＳ３１及びＳ３２により計数する。）及び書き込み完了時のプログラムパルス数Ｎｐａｃｔｌａｓｔに基づいてプログラム開始電圧Ｖｓｔａｒｔ（ｎ＋１）を決定して設定してもよい（図１３のステップＳ７Ｂ参照。）。これについては、製造ばらつきが大きい場合においてプログラム電圧を適切に調整することができ、詳細後述する。
【００６４】
さらに、実施形態及び変形例に係るプログラム開始電圧Ｖｓｔａｒ（ｎ＋１）の種々の実施例について以下に説明する。
【００６５】
［表１］
各パラメータの定義とその値の一例
―――――――――――――――――――――――――――――――――――――――
第ｎの状態のベリファイ電圧（設定値）Ｖｐｖ（ｎ）＝０．５Ｖ；
第ｎの状態のプログラム開始電圧（設定値）Ｖｓｔａｒｔｄｅｆ（ｎ）＝１６．５Ｖ；
第ｎ＋１の状態のベリファイ電圧（設定値）Ｖｐｖ（ｎ＋１）＝２．０Ｖ；
第ｎ＋１の状態のプログラム開始電圧（設定値）Ｖｓｔａｒｔｄｅｆ（ｎ＋１）＝１８．０Ｖ；
増分電圧（設定値）Ｖｓｔｅｐ＝０．４Ｖ；
―――――――――――――――――――――――――――――――――――――――
第ｎの状態のプログラムパルス数（書き込み完了時の基準値）Ｎｐｄｅｆｌａｓｔ（ｎ）＝１２；
第ｎの状態のプログラムパルス数（最初に書き込みパスした時の基準値）Ｎｐｄｅｆｆｉｒｓｔ（ｎ）＝３；
―――――――――――――――――――――――――――――――――――――――
第ｎの状態のプログラムパルス数（書き込み完了時の実際値）Ｎｐａｃｔｌａｓｔ（ｎ）＝１４；
第ｎの状態のプログラムパルス数（最初に書き込みパスした時の実際値）Ｎｐａｃｔｆｉｒｓｔ（ｎ）＝４；
―――――――――――――――――――――――――――――――――――――――
（注）状態の一例：
第１の状態＝状態（０１）、第２の状態＝状態（００）である。
【実施例１】
【００６６】
各状態にプログラムパルス数の基準値がある場合のプログラム開始電圧は次式で表される。
【００６７】
［数１］
Ｖｓｔａｒｔ（ｎ＋１）
＝Ｖｓｔａｒｔｄｅｆ（ｎ＋１）
＋（Ｎｐａｃｔｌａｓｔ（ｎ）−Ｎｐｄｅｆｌａｓｔ（ｎ）−０．５］×Ｖｓｔｅｐ
【００６８】
実施例１における数値例は次式の通りである。
【００６９】
［数２］
Ｖｓｔａｒｔ（ｎ＋１）
＝１８＋（１４−１２−０．５）×０．４＝１８．６（Ｖ）
【００７０】
実施例１では、動作速度が少し遅めのページバッファ１４やメモリブロックに対して、書き込み電圧が補正される。補正係数（−０．５）は補正しすぎるのを防ぐためで、プログラムパルスの半分に対応することを意味する。
【実施例２】
【００７１】
直接にプログラムパルス数から算出する場合のプログラム開始電圧は次式で表される。
【００７２】
［数３］
Ｖｓｔａｒｔ（ｎ＋１）
＝Ｖｓｔａｒｔ（ｎ）
＋（Ｎｐａｃｔｌａｓｔ（ｎ）−Ｎｐｄｅｆｌａｓｔ（ｎ）−０．５）×Ｖｓｔｅｐ
＋α×（Ｖｐｖ（ｎ＋１）−Ｖｐｖ（ｎ））
【００７３】
ここで、αは所定の定数であり、例えば１．４である。実施例２における数値例は次式の通りである。
【００７４】
［数４］
Ｖｓｔａｒｔ（ｎ＋１）
＝１６．５＋（１４−１２−０．５）×０．４＋１．４×（２．０−０．５）
＝１８．２（Ｖ）
【００７５】
実施例２では、実施例１と同様にプログラム電圧が補正される。
【実施例３】
【００７６】
最初に書き込みパスしたときのプログラムパルス数に基づいてプログラム開始電圧を決定する場合であって、各状態に基準値のある場合のプログラム開始電圧は次式で表される。
【００７７】
［数５］
Ｖｓｔａｒｔ（ｎ＋１）
＝Ｖｓｔａｒｔｄｅｆ（ｎ）
＋（Ｎｐａｃｔｆｉｒｓｔ（ｎ）−Ｎｐｄｅｆｆｉｒｓｔ（ｎ）−０．５）×Ｖｓｔｅｐ
【００７８】
実施例３における数値例は次式の通りである。
【００７９】
［数６］
Ｖｓｔａｒｔ（ｎ＋１）
＝１８＋（５−３−０．５）×０．４＝１８．６（Ｖ）
【００８０】
実施例３では、書き込み完了時のプログラムパルス数の代わりに、最初に書き込みパスしたときのプログラムパルス数を用いてプログラム開始電圧を決定しているが、実施例１と同様の結果を得ることができる。
【実施例４】
【００８１】
最初に書き込みパスしたときのプログラムパルス数に基づいてプログラム開始電圧を決定する場合であって、直接にプログラムパルス数から算出する場合のプログラム開始電圧は次式で表される。
【００８２】
［数７］
Ｖｓｔａｒｔ（ｎ＋１）
＝Ｖｓｔａｒｔ（ｎ）
＋（Ｎｐａｃｔｆｉｒｓｔ（ｎ）−Ｎｐｄｅｆｆｉｒｓｔ（ｎ）−０．５）×Ｖｓｔｅｐ
＋α×（Ｖｐｖ（ｎ＋１）−Ｖｐｖ（ｎ））
【００８３】
実施例４における数値例は次式の通りである。
【００８４】
［数８］
Ｖｓｔａｒｔ（ｎ＋１）
＝１６．５＋（５−３−０．５）×０．４＋１．４×（２．０−０．５）
＝１８．２（Ｖ）
【００８５】
実施例４では、書き込み完了時のプログラムパルス数の代わりに、最初に書き込みパスしたときのプログラムパルス数を用いてプログラム開始電圧を決定しているが、実施例２と同様の結果を得ることができる。
【実施例５】
【００８６】
実施例５では、最初の書き込みパスしたプログラムパルス数と書き込み完了時のプログラムパルス数に基づいて増分電圧Ｖｓｔｅｐを決定して設定する場合において、増分電圧は次式で表される。
【００８７】
［数９］
Ｖｓｔｅｐ（ｎ＋１）
＝（Ｎｐａｃｔｌａｓｔ（ｎ）−Ｎｐａｃｔｆｉｒｓｔ（ｎ））
／（Ｎｐｄｅｆｌａｓｔ（ｎ）−Ｎｐｄｅｆｆｉｒｓｔ（ｎ））×Ｖｓｔｅｐ（ｎ）
【００８８】
実施例５における数値例は次式の通りである。
【００８９】
［数１０］
Ｖｓｔｅｐ（ｎ＋１）
＝（１４−５）／（１２−３）×０．４＝０．４
【００９０】
従って、設定値であるＶｓｔｅｐと同様の値を得ることができる。
【００９１】
応用例．
図１２は変形例に係る８値フラッシュＥＥＰＲＯＭのしきい値電圧の確率分布（Ｖｔ分布）を示す図である。図１２において、ＶＰＶ１は状態（０１１）のベリファイ電圧であり、ＶＰＶ２は状態（１０１Ｕ）のベリファイ電圧であり、ＶＰＶ３は状態（００１）のベリファイ電圧である。また、ＶＰＶ４は状態（１００Ｕ）のベリファイ電圧であり、ＶＰＶ５は状態（０００）のベリファイ電圧であり、ＶＰＶ６は状態（１１０Ｕ）のベリファイ電圧であり、ＶＰＶ７は状態（０１０）のベリファイ電圧である。
【００９２】
図１２の（ａ）のＬＳＢのプログラムでは、状態（１１１）をそのままの状態とするか、もしくはプログラム処理５０１により状態（１１１）を状態（１１０Ｌ）にプログラムする。また、図１２（ｂ）の中間ビット（最下位ビットと最上位ビットの中間のビットをいい、以下、ＭＩＢという。）のプログラムでは、状態（１１１）をそのままの状態とするか、もしくはプログラム処理５０２により状態（１１１）を状態（１０１Ｍ）にプログラムする。さらに、プログラム処理５０３により状態（１１０Ｌ）を状態（１００Ｍ）にプログラムするか、もしくはプログラム処理５０４により状態（１１０Ｌ）を状態（１１０Ｍ）にプログラムする。
【００９３】
さらに、図１２（ｃ）のＭＳＢのプログラムでは、状態（１１１）をそのままの状態とするか、もしくはプログラム処理５０５により状態（１１１）を状態（０１１）にプログラムする。また、プログラム処理５０６により状態（１０１Ｍ）を状態（１０１Ｕ）にプログラムするか、もしくはプログラム処理５０７により状態（１０１Ｍ）を状態（００１）にプログラムする。また、プログラム処理５０８により状態（１００Ｍ）を状態（１００Ｕ）にプログラムするか、もしくはプログラム処理５０９により状態（１００Ｍ）を状態（０００）にプログラムする。また、プログラム処理５１０により状態（１１０Ｍ）を状態（１１０Ｕ）にプログラムするか、もしくはプログラム処理５１１により状態（１１０Ｍ）を状態（０１０）にプログラムする。
【００９４】
このように、本発明によれば、１メモリセル当り３ビットのＮＡＮＤフラッシュメモリに適用することができる。これによりメモリアレイのシリコン面積を増大することなく密度を増加させることができる。この場合、８つの状態（１１１）、（１１０）、（１００）、（１０１）、（００１）、（０１１）、（００１）及び（０００）のしきい値分布が存在する。しきい値分布を４値から８値（ＭＳＢプログラム）に変更する場合も、必要な先のプログラムパルス数に依存して書き込み電圧の自動調整を各しきい値分布に適用することができる。３ビットのＭＬＣ形フラッシュメモリの場合、より多くの分布タイプが存在することから、書き込み電圧の自動調整は将来のＮＡＮＤメモリ設計にとってこそより大きな意味を有する。すなわち、本発明では、所定のプログラム開始電圧からプログラム電圧を所定の増分電圧だけ順次増加させながらベリファイして上記メモリセルをプログラムするときに、前に行ったプログラム（直前のプログラムに限定されない。）におけるベリファイ処理がパスしたときのプログラムパルス数に基づいて、上記プログラム開始電圧を決定して設定しプログラムすることを特徴としている。例えば、プログラム処理５１１において、プログラム処理５０１〜５１０のいずれか１つのプログラム処理におけるベリファイ処理がパスしたときのプログラムパルス数に基づいて、上記プログラム開始電圧を決定して設定しプログラムしてもよい。
【００９５】
以上の実施形態及び変形例においては、複数の状態に対応する互いに異なる複数のしきい値電圧を各メモリセルに設定することにより多値の状態を記録する不揮発性のメモリセルアレイと、上記メモリセルアレイへの書き込みを制御する制御回路とを備えた不揮発性半導体記憶装置において、上記制御回路は、所定のプログラム開始電圧からプログラム電圧を所定の増分電圧だけ順次増加させながらベリファイして上記メモリセルをプログラムするときに、前に行ったプログラムにおけるベリファイ処理がパスしたときのプログラムパルス数に基づいて、上記プログラム開始電圧を決定して設定しプログラムすることを特徴としており、このように構成してもよい。
【００９６】
以上の実施形態においては、ＮＡＮＤ型フラッシュＥＥＰＲＯＭについて説明しているが、本発明はこれに限らず、ＮＯＲ型フラッシュＥＥＰＲＯＭなどのフローティングゲートにデータを書き込むことが可能な不揮発性半導体記憶装置に広く適用できる。以上の説明では、書き換えに伴いプログラムのスピードが遅くなる例をとって説明したが、書き込み及び消去原理により、スピードが逆に早くなるものがあり、ＮＡＮＤ型フラッシュＥＥＰＲＯＭもその１つである。このスピードが早くなる場合、それを見込んでプログラム開始電圧Ｖｓｔａｒｔを低くしておかないとＶｔｈ分布幅が設定より大きくなってしまい、読み出しフェイルとなってしまう。プログラム開始電圧Ｖｓｔａｒｔを低く設定するということはそれだけプログラム時間が長くかかるわけで、その短縮にも本発明の適用が効果的である。書き換えが少ない間は、実際はもう少し高いプログラム開始電圧Ｖｓｔａｒｔからプログラムできるのに対して、本発明は１つのレベルを書いた実績からそれを自動的に検出して、次のレベルは補正した少し高いプログラム開始電圧Ｖｓｔａｒｔからプログラムするからである。
【００９７】
以上の実施形態においては、図４のしきい値分布を仮定して、最低の電圧を有するデータをプログラムすることを説明しているが、本発明はこれに限らず、多値のいずれかのデータをプログラムするときに適用できる。
【産業上の利用可能性】
【００９８】
以上詳述したように、本発明に係る不揮発性半導体記憶装置とその書き込み方法によれば、所定のプログラム開始電圧からプログラム電圧を所定の増分電圧だけ順次増加させながらベリファイして上記メモリセルをプログラムするときに、前に行ったプログラムにおけるベリファイ処理がパスしたときのプログラムパルス数に基づいて、上記プログラム開始電圧を決定して設定しプログラムするので、ベリファイの処理数に依存するプログラム動作に用いられるプログラム電圧の動的な調整を行い、これにより、メモリアレイの歩留まりを向上でき、メモリセルの寿命を向上させることができる。当該装置及び方法により、「より遅い」プログラム特性を示すセルについて必要とされる場合に、プログラム電圧を動的に増大させることができる。従って、ベリファイ処理の回数を低減し、プログラムに必要な時間を短縮することができる。
【図面の簡単な説明】
【００９９】
【図１】本発明の一実施形態に係るＮＡＮＤ型フラッシュＥＥＰＲＯＭの全体構成を示すブロック図である。
【図２】図１のメモリセルアレイ１０とその周辺回路の構成を示す回路図である。
【図３】図２のページバッファ（２本のビットライン分）の詳細構成を示す回路図である。
【図４】従来技術に係るＭＬＣ（Multi Level Cell）フラッシュメモリのしきい値電圧の確率分布（Ｖｔ分布）を示す図である。
【図５】図４のしきい値電圧の確率分布（Ｖｔ分布）において状態（１０Ｌ）から状態（００）にプログラムするときの状態を示す図である。
【図６】従来技術に係るＩＳＰＰ（Increment Step Pulse Program）法を用いて状態（００）をプログラムした後、状態（１０）をプログラムするときの書き込み電圧の時間経過を示す図である。
【図７】従来技術において状態（００）のプログラムのために１つ以上のステップが必要であり付加的な時間が必要であることを示す書き込み電圧の時間経過図である。
【図８】従来技術に係るプログラム処理の一例を示すフローチャートである。
【図９】実施形態に係るプログラム処理の一例を示すフローチャートである。
【図１０】実施形態に係る改良形ＩＳＰＰ（Increment Step Pulse Program）法を用いて状態（００）をプログラムした後、状態（１０）をプログラムするときの書き込み電圧の時間経過を示す図である。
【図１１】実施形態に係る４値フラッシュＥＥＰＲＯＭのしきい値電圧の確率分布（Ｖｔ分布）を示す図である。
【図１２】変形例に係る８値フラッシュＥＥＰＲＯＭのしきい値電圧の確率分布（Ｖｔ分布）を示す図である。
【図１３】変形例に係るプログラム処理の一例を示すフローチャートである。
【符号の説明】
【０１００】
１０…メモリセルアレイ、
１１…制御回路、
１２…ロウデコーダ、
１３…高電圧発生回路、
１４，１４Ａ…データ書き換え及び読み出し回路（ページバッファ）、
１４ａ，１４ｂ…ラッチ回路、
１５…カラムデコーダ、
１７…コマンドレジスタ、
１８…アドレスレジスタ、
１９…動作ロジックコントローラ、
５０…データ入出力バッファ、
５１…データ入出力端子、
５２…データ線、
Ｌ１，Ｌ２…ラッチ。
【図１】
2010102751.tif 000003
【図２】
2010102751.tif 000004
【図３】
2010102751.tif 000005
【図４】
2010102751.tif 000006
【図５】
2010102751.tif 000007
【図６】
2010102751.tif 000008
【図７】
2010102751.tif 000009
【図８】
2010102751.tif 000010
【図９】
2010102751.tif 000011
【図１０】
2010102751.tif 000012
【図１１】
2010102751.tif 000013
【図１２】
2010102751.tif 000014
【図１３】
2010102751.tif 000015