(57)【特許請求の範囲】
【請求項１】
複数のメモリセルが行列方向に形成されたメモリアレイと、
メモリアレイの選択されたページに１つまたはそれ以上の書込みパルスを印加することで選択されたページにデータをプログラムするプログラム手段と、
メモリアレイの選択されたブロックに１つまたはそれ以上の消去パルスを印加することで選択されたブロックのデータを消去する消去手段と、
前記消去手段による消去前に消去前書込みを行う手段と、
前記消去手段による消去後に消去後書込みを行う手段とを有し、
前記消去後書込み手段は、選択されたブロック内の予め決められた領域に、当該ブロックの各ページの書込みパルスに関する電圧情報と当該ブロックの消去パルスに関する電圧情報を書込み、
前記消去前書込み手段は、前記予め決められた領域に記憶された書込みパルスに関する電圧情報に基づき選択されたブロックの各ページに消去前書込みを行い、
前記消去手段は、前記予め決められた領域に記憶された消去パルスに関する電圧情報に基づき選択されたブロックの消去を行う、不揮発性半導体メモリ。
【請求項２】
前記消去後書込み手段は、前記書込みパルスに関する電圧情報に基づき書込みを行った時のベリファイの結果に基づき前記書込みパルスに関する電圧情報を更新し、当該更新された電圧情報を書込む、請求項１に記載の不揮発性半導体メモリ。
【請求項３】
前記消去後書込み手段は、選択されたページのいずれかのメモリセルのしきい値が基準値を超えた場合には、書込みパルスの初期値が下がるように前記書込みパルスに関する電圧情報を更新する、請求項２に記載の不揮発性半導体メモリ。
【請求項４】
前記書込みパルスに関する電圧情報は、ワード線毎に書込みパルスの初期値を２値データで表したｎビットの正コードと、当該正コードを反転したｎビットの反転コードとを含み、
前記消去後書込み手段は、前記予め決められた領域に前記正コードおよび反転コードを書込む際に、前記正コードおよび前記反転コードの２値データで特定されたメモリセルを対象としたベリファイを行う、請求項２または３に記載の不揮発性半導体メモリ。
【請求項５】
前記消去後書込み手段は、前記消去手段による消去パルスの数に応じて前記消去パルスに関する電圧情報を更新し、当該更新された電圧情報を書込む、請求項１に記載の不揮発性半導体メモリ。
【請求項６】
前記消去後書込み手段は、前記消去手段による消去パルスの数が一定数を超えたか否かを判定し、一定数を超えた場合には、消去パルスの初期値が上昇するように消去パルスに関する電圧情報を更新する、請求項５に記載の不揮発性半導体メモリ。
【請求項７】
前記消去前書込み手段は、前記書込みパルスに関する電圧情報からブロック内の各ページの書込みパルスの初期値の最小値を抽出し、当該最小値に一定の電圧値を加えた書込みパルスによりブロックの消去前書込みを行う、請求項１に記載の不揮発性半導体メモリ。
【請求項８】
前記消去前書込み手段は、前記予め決められた領域に記憶された書込みパルスに関する電圧情報および消去パルスに関する電圧情報を読出し、少なくとも前記消去手段により消去が行われる期間、読み出された電圧情報をレジスタに保持する、請求項１に記載の不揮発性半導体メモリ。
【請求項９】
複数のメモリセルが行列方向に形成されたメモリアレイを有する不揮発性半導体メモリのデータの消去方法であって、
消去コマンドおよびアドレス情報に基づきブロックを選択し、
選択されたブロックの予め決められた領域から、各ページをプログラムするときの書込みパルスに関する電圧情報と当該ブロックを消去するときの消去パルスに関する電圧情報を読出し、
読み出された書込みパルスに関する電圧情報に基づき前記選択されたブロックの各ページに対し消去前書込みを行い、
前記消去パルスに関する情報に基づき前記選択されたブロックを消去し、
一定の条件に基づき前記書込みパルスに関する電圧情報および前記消去パルスに関する電圧情報を更新し、
前記更新された書込みパルスに関する電圧情報および消去パルスに関する電圧情報を前記予め決められた領域に消去後書込みを行う、ステップを備えた消去方法。
【請求項１０】
前記一定の条件は、消去に用いられた消去パルスの数が一定数を超えたか否かであり、一定数を超えた場合には、消去パルスの初期値が上昇するように前記消去パルスに関する電圧情報を更新する、請求項９に記載の消去方法。
【請求項１１】
前記一定の条件は、前記書込みパルスの電圧情報に基づく書込みパルスの初期値による書込みを行った後のベリファイにおいて、選択されたページのいずれかのメモリセルのしきい値が基準値を超えたか否かであり、しきい値が基準値を超えた場合には、書込みパルスの初期値が下がるように前記書込みパルスに関する電圧情報を更新する、請求項９に記載の消去方法。
【請求項１２】
前記書込みパルスに関する電圧情報は、ワード線毎に書込みパルスの初期値を２値データで表したｎビットの正コードと、当該正コードを反転したｎビットの反転コードとを含み、
前記消去後書込みは、前記予め決められた領域に前記正コードおよび反転コードを書込む際に、前記正コードおよび前記反転コードの２値データで特定されたメモリセルを対象としたベリファイを行う、請求項１１に記載の消去方法。
【請求項１３】
前記消去前書込みは、選択されたブロックの各ページの書込みパルスに関する電圧情報の中から最小値を抽出し、当該最小値に一定値を加えた書込みパルスにより消去前書込みを行う、請求項９に記載の消去方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性半導体メモリに関し、特に、フラッシュメモリのプログラムおよび消去に関する。
【背景技術】
【０００２】
ＮＡＮＤ型フラッシュメモリは、複数のＮＡＮＤストリングを行列方向に配置したメモリアレイを含んで構成される。１つのストリングは、直列に接続された複数のメモリセルとその両端に接続された選択トランジスタとを有し、一方の端部は、選択トランジスタを介してビット線に接続され、他方の端部は、選択トランジスタを介してソース線に接続される。
【０００３】
典型的なメモリセルは、ｎ型のソース／ドレインと、ソース／ドレイン間のチャンネル上に形成された酸化膜と、酸化膜上に形成された電荷を蓄積するフローティングゲート（電荷蓄積層）と、フローティングゲート上に誘電体膜を介して形成されたコントロールゲートとを含む。プログラム（書込み）を行う場合には、コントロールゲートに高電圧を印加し、チャンネルに０Ｖを供給し、これにより電子が酸化膜をＦＮトンネリングし、フローティングゲートに電子が蓄積される。フローティングゲートに電子が蓄積されたとき、つまりデータ「０」が記憶されているとき、しきい値は正にシフトし、メモリセルは、ノーマリオフである。他方、消去を行う場合には、ｐウエルに高電圧を印加し、コントロールゲートに０Ｖを印加し、これによりフローティングゲートに蓄積されていた電子が酸化膜を介してＦＮトンネルリングし、基板に引き抜かれる。フローティングゲートに電荷が蓄積されていないとき、つまりデータ「１」が記憶されるとき、しきい値は負状態にあり、メモリセルは、ノーマリオンである。
【０００４】
上記したように、プログラムでは、フローティングゲートに電子を蓄積させ、メモリセルのしきい値電圧を正方向にシフトさせ、消去では、フローティングゲートから電子を放出させ、メモリセルのしきい値電圧を負方向にシフトさせるが、このようなプログラムおよび消去は、メモリセルのしきい値が「０」、「１」の分布幅内に入るように制御されなければならない。また、メモリセルに多ビットを記憶させる場合には、さらに「００」、「０１」、「１０」、「１１」の分布幅に入るように制御しなければならない。
【０００５】
しかし、各メモリセルのサイズや形状には、製造工程のパラメータの変動によってバラツキがあり、さらにプログラムや消去の回数等によりトンネル酸化膜が劣化するなどの要因があり、その結果、メモリセル間でデータが消去しやすいものと、そうでないものが生じる。つまり、あるメモリセルでは電子が放出され易く、「１」のしきい値分布幅内に容易に到達するが、あるメモリセルでは電子が放出がされ難く、「１」のしきい値分布幅内に到達しない事態が生じる。このため、消去ベリファイにおいて、電子の放出が不十分なメモリセルが検証された場合には、再度、選択されたブロックに消去電圧を印加し、「１」のしきい値分布幅内に到達させなければならない。
【０００６】
メモリセルからの電子の放出をより正確にまたは効果的に行うために、ISPE（Incremental Step Pulse Erase）方式が用いられる。この方式は、図１（Ａ）に示すように、選択されたブロックのメモリセルに初期の消去パルスVers0を印加し、消去ベリファイにより消去が不合格と判定された場合には、消去パルスVers0よりも１ステップ電圧だけ高い消去パルスVers1を印加し、ブロック内のすべてのメモリセルの消去が合格と判定されるまで消去パルスの電圧が順次増加されていく。
【０００７】
プログラムの場合も同様に、ページ内のすべてのメモリセルのフローティングゲートに均一に電子が蓄積されるとは限らない。あるメモリセルでは電子が注入され易く、あるメモリセルでは電子の注入がされ難ければ、両者に同一のプログラム電圧を印加しても、両者のしきい値のシフト量は相対的に異なる。例えば、あるメモリセルには十分に電子が蓄積され、「０」のしきい値分布幅内に到達するが、あるメモリセルには十分な電子が蓄積されず、「０」のしきい値分布幅内に到達しない事態が生じる。このため、プログラムベリファイにより、電子の注入が不十分なメモリセルが識別され、そのようなメモリセルには、再度、プログラム電圧を印加し、「０」のしきい値分布幅内に到達させている。
【０００８】
メモリセルへの電子の注入を正確にまたは効果的に行うために、ISPP（Incremental Step Pulse Program）方式が用いられる。この方式は、図１（Ｂ）に示すように、選択されたページに初期の書込みパルスVpgm0を印加し、プログラムベリファイにより不合格と判定された場合には、初期の書込みパルスVpgm0よりも１ステップ電圧だけ高い書込みパルスVpgm1を印加し、ページ内のすべてのメモリセルのプログラムが合格と判定されるまで書込みパルスの電圧が順次増加されていく。
【０００９】
また、フラッシュメモリの高集積化のためにメモリセルの小型化が進むと、ワード線やビット線は、微細化により高抵抗化され、ワード線やビット線の電圧降下が大きくなり、ワード線やビット線を充電するための時間が長くなるという問題がある。特許文献１は、データの書込み時間を短縮できるようにするため、しきい値電圧レベルよりも低い暫定レベルの予備データを書込み、読みデータについての書込みベリファイを行い、その際のワード線の待ち時間を、最終データの書込みベリファイ読出し時の待ち時間よりも短くしている。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２０１０−３０２９６０号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
フラッシュメモリには、一定のエンデュランス（データ書換え回数）やデータ保持特性が求められる。ＦＮトンネル電流が酸化膜を流れるとき、酸化膜に一部の電子がトラップされ、それが蓄積されると、コントロールゲートに電圧を印加してもＦＮトンネル電流が流れ難くなり、これがデータ書換え回数に制限を与える。また、フローティングゲートに蓄積された電荷が時間経過に伴い漏洩すると、記憶されたデータが失われる。このため、フローティングゲートを取り囲む絶縁膜は、特性が劣化しないように工夫されることが望ましい。
【００１２】
フラッシュメモリでは、メモリセルの小型化が進むと、エンデュランスやデータ保持特性の劣化が顕著になることが知られている。図２は、プログラム／消去のサイクル特性を示すグラフであり、縦軸は、メモリセルのしきい値、横軸は、プログラム／消去のサイクル数である（出典：The new program/Erase Cycling Degradation Mechanism of NAND Flash Memory Devices, Albert Fayrushin, et al. Flash Core Technology Lab, Samsung Electronics Co, Ltd, IEDM09-823, P34.2.1-2.4”。同図からも明らかなように、１０−２０Ｋサイクル付近までは、プログラム／消去のメモリセルのしきい値Ｖｔはほとんど変化しないが、数千回を越えるあたりから、徐々にしきい値Ｖｔが正の方向にシフトしていることがわかる。これは、プログラム／消去のサイクル数が増加するにつれ、ゲート酸化膜に電子がトラップされたり、電子のトンネリングによりゲート酸化膜そのものが劣化することが原因の一つと推測されている。
【００１３】
フラッシュメモリの消去では、同じ消去条件にてサイクル後についても要求を満たすためには、１パルスで合格となるようのパルス期間を増やさなければならない。また、１Ｋサイクルを越えるあたりからしきい値Ｖｔが高くなるため、消去時間を維持するには消去電圧を上げる必要がある。他方、パルスの回数を増やせば、消去自身の時間は長くなってしまう。プログラムの場合には、プログラム速度がサイクルにより加速してしまうため、パルス数を減らす方向で動作させているが、初期のプログラムパルス電位から変化されるものではない。
【００１４】
しかしながら、プログラム／消去サイクル数の増加に伴う、パルス回数の増加や高電圧の印加は、メモリセルへの過剰なストレスとなることがあり、これが原因で、ゲート酸化膜やフローティングゲートを取り巻く絶縁膜の劣化が加速されてしまうという課題がある。
【００１５】
本発明は、このような課題を解決するものであり、メモリセルの急速な劣化を抑制した不揮発性半導体メモリを提供することを目的とする。
さらに本発明は、メモリセルの摩耗状態に応じて適切なプログラム電圧および消去電圧を与えることができる不揮発性半導体メモリを提供することを目的とする。
【課題を解決するための手段】
【００１６】
本発明に係る不揮発性半導体メモリは、複数のメモリセルが行列方向に形成されたメモリアレイと、メモリアレイの選択されたページに１つまたはそれ以上の書込みパルスを印加することで選択されたページにデータをプログラムするプログラム手段と、メモリアレイの選択されたブロックに１つまたはそれ以上の消去パルスを印加することで選択されたブロックのデータを消去する消去手段と、前記消去手段による消去前に消去前書込みを行う手段と、前記消去手段による消去後に消去後書込みを行う手段とを有し、前記消去後書込み手段は、選択されたブロック内の予め決められた領域に、当該ブロックの各ページの書込みパルスに関する電圧情報と当該ブロックの消去パルスに関する電圧情報を書込み、前記消去前書込み手段は、前記予め決められた領域に記憶された書込みパルスに関する電圧情報に基づき選択されたブロックの各ページに消去前書込みを行い、前記消去手段は、前記予め決められた領域に記憶された消去パルスに関する電圧情報に基づき選択されたブロックの消去を行う。
【００１７】
好ましくは前記消去後書込み手段は、前記書込みパルスに関する電圧情報に基づき書込みを行った時のベリファイの結果に基づき前記書込みパルスに関する電圧情報を更新し、当該更新された電圧情報を書込む。好ましくは前記消去後書込み手段は、選択されたページのいずれかのメモリセルのしきい値が基準値を超えた場合には、書込みパルスの初期値が下がるように前記書込みパルスに関する電圧情報を更新する。好ましくは前記書込みパルスに関する電圧情報は、ワード線毎に書込みパルスの初期値を２値データで表したｎビットの正コードと、当該正コードを反転したｎビットの反転コードとを含み、前記消去後書込み手段は、前記予め決められた領域に前記正コードおよび反転コードを書込む際に、前記正コードおよび前記反転コードの２値データで特定されたメモリセルを対象としたベリファイを行う。好ましくは前記消去後書込み手段は、前記消去手段による消去パルスの数に応じて前記消去パルスに関する電圧情報を更新し、当該更新された電圧情報を書込む。好ましくは前記消去後書込み手段は、前記消去手段による消去パルスの数が一定数を超えたか否かを判定し、一定数を超えた場合には、消去パルスの初期値が上昇するように消去パルスに関する電圧情報を更新する。好ましくは前記消去前書込み手段は、前記書込みパルスに関する電圧情報からブロック内の各ページの書込みパルスの初期値の最小値を抽出し、当該最小値に一定の電圧値を加えた書込みパルスによりブロックの消去前書込みを行う。好ましくは前記消去前書込み手段は、前記予め決められた領域に記憶された書込みパルスに関する電圧情報および消去パルスに関する電圧情報を読出し、少なくとも前記消去手段により消去が行われる期間、読み出された電圧情報をレジスタに保持する。
【００１８】
本発明に係る不揮発性半導体メモリは、複数のメモリセルが行列方向に形成されたメモリアレイと、メモリアレイの選択されたページに１つまたはそれ以上の書込みパルスを印加することで選択されたページにデータをプログラムするプログラム手段と、メモリアレイの選択されたブロックのデータを消去する消去手段と、前記消去手段によりブロックのデータが消去されたとき、当該ブロックの各ページの書込みパルスに関する電圧情報を予め決められた領域に格納する格納手段とを有し、前記プログラム手段は、前記予め決められた領域から選択されたページの書込みパルスに関する電圧情報を読出し、当該電圧情報に基づき１回目の書込みパルスを印加し、その後のベリファイを行った結果に基づき２回目の書込みパルスの電圧を決定する。
【００１９】
好ましくは選択されたページのいずれかのメモリセルのしきい値が基準値を超えた場合の２回目の書込みパルスの電圧をＶ１、選択されたページのいずれのメモリセルのしきい値が基準値を超えない場合の２回目以降の書込みパルスの電圧をＶ２としたとき、Ｖ１＜Ｖ２の関係である。
【００２０】
本発明に係る、複数のメモリセルが行列方向に形成されたメモリアレイを有する不揮発性半導体メモリのデータの消去方法は、消去コマンドおよびアドレス情報に基づきブロックを選択し、選択されたブロックの予め決められた領域から、各ページをプログラムするときの書込みパルスに関する電圧情報と当該ブロックを消去するときの消去パルスに関する電圧情報を読出し、読み出された書込みパルスに関する電圧情報に基づき前記選択されたブロックの各ページに対し消去前書込みを行い、前記消去パルスに関する情報に基づき前記選択されたブロックを消去し、一定の条件に基づき前記書込みパルスに関する電圧情報および前記消去パルスに関する電圧情報を更新し、前記更新された書込みパルスに関する電圧情報および消去パルスに関する電圧情報を前記予め決められた領域に消去後書込みを行う。
【００２１】
好ましくは前記一定の条件は、消去に用いられた消去パルスの数が一定数を超えたか否かであり、一定数を超えた場合には、消去パルスの初期値が上昇するように前記消去パルスに関する電圧情報を更新する。好ましくは前記一定の条件は、前記書込みパルスの電圧情報に基づく書込みパルスの初期値による書込みを行った後のベリファイにおいて、選択されたページのいずれかのメモリセルのしきい値が基準値を超えたか否かであり、しきい値が基準値を超えた場合には、書込みパルスの初期値が下がるように前記書込みパルスに関する電圧情報を更新する。好ましくは前記書込みパルスに関する電圧情報は、ワード線毎に書込みパルスの初期値を２値データで表したｎビットの正コードと、当該正コードを反転したｎビットの反転コードとを含み、前記消去後書込みは、前記予め決められた領域に前記正コードおよび反転コードを書込む際に、前記正コードおよび前記反転コードの２値データで特定されたメモリセルを対象としたベリファイを行う。好ましくは前記消去前書込みは、選択されたブロックの各ページの書込みパルスに関する電圧情報の中から最小値を抽出し、当該最小値に一定値を加えた書込みパルスにより消去前書込みを行う。
【００２２】
本発明に係る、複数のメモリセルが行列方向に形成されたメモリアレイを有する不揮発性半導体メモリのデータのプログラム方法は、ブロックのデータが消去されたとき、当該ブロックの各ページをプログラムするときの書込みパルスに関する情報を予め決められた領域に記憶しておき、プログラムコマンドおよびアドレス情報に基づきページを選択し、選択されたページの予め決められた領域から前記書込みパルスに関する情報を読み出し、読み出された書込みパルスに関する情報に従い選択されたページに１回目の書込みパルスを印加し、所定の電圧で選択されたページのベリファイを行い、ベリファイ結果に基づき２回目の書込みパルスの電圧値を決定する。
【００２３】
好ましくは選択されたページのいずれかのメモリセルのしきい値が基準値を超えた場合の２回目の書込みパルスの電圧をＶ１、選択されたページのいずれのメモリセルのしきい値が基準値を超えない場合の２回目以降の書込みパルスの電圧をＶ２としたとき、Ｖ１＜Ｖ２の関係である。
【発明の効果】
【００２４】
本発明によれば、プログラム／消去のサイクル特性に応じた最適なプログラム電圧および消去電圧を提供することができる。これにより、データ書換え回数およびデータ保持特性の局所的な劣化を防止し、長寿命のフラッシュメモリを提供することができる。
【図面の簡単な説明】
【００２５】
【図１】ＮＡＮＤ型フラッシュメモリのデータ書換え回数とメモリセルのしきい値との関係を示すグラフである。
【図２】図２（Ａ）は、ＩＳＰＥを説明する図、図２（Ｂ）は、ＩＳＰＰを説明する図である。
【図３】本発明の実施例に係るフラッシュメモリの一構成例を示すブロック図である。
【図４】メモリブロック内に形成されるセルユニットの構成を示す図である。
【図５】本発明の実施例に係る消去モードの動作フローチャートである。
【図６】図５のPre-Programの詳細な動作を示すフローチャートである。
【図７】メモリブロックのスペア領域に記憶されるトリミングコードの一例を示す図である。
【図８】図５のErase-Latencyの詳細な動作を示すフローチャートである。
【図９】図５のPost-Eraseの詳細な動作を示すフローチャートである。
【図１０】図１０（Ａ）は、ISPEの消去パルスの例、図１０（Ｂ）は、ISPPのプログラムパルスの例である。
【図１１】図５のPost-Eraseにおいて更新されたコード表の一例である。
【図１２】本実施例のプログラムモードの動作フローである。
【図１３】本実施例のプログラムモードにおける通常のISPPのパルス電圧と、プログラム速度減速時のISPPのパルス電圧の例を示す図である。
【図１４】本発明の実施例における効果の一例を説明する図である。
【発明を実施するための形態】
【００２６】
次に、本発明の実施の形態について図面を参照して詳細に説明する。本発明の好ましい形態では、ＮＡＮＤ型のフラッシュメモリを例示する。なお、図面は、分かり易くするために各部を強調して示してあり、実際のデバイスのスケールとは異なることに留意すべきである。また、本明細書中で使用される「プログラム」と「書込み」の用語は同義である。
【実施例】
【００２７】
図３は、本発明の実施例に例示されるフラッシュメモリの構成を示すブロック図である。但し、ここに示すフラッシュメモリの構成は例示であって、本発明は、必ずしもこのような構成に限定されるものではない。
【００２８】
本実施例のフラッシュメモリ１０は、行列状に配列された複数のメモリセルを有するメモリアレイ１００と、外部入出力端子Ｉ／Ｏに接続された入出力バッファ１１０と、入出力バッファ１１０からアドレスデータを受け取るアドレスレジスタ１２０と、入出力されるデータを保持するデータレジスタ１３０、入出力バッファ１１０からのコマンドデータや外部制御信号に基づき各部を制御する制御信号C1、C2、C3等を供給するコントローラ１４０と、アドレスレジスタ１２０からの行アドレス情報Ａｘをデコードしデコード結果に基づきブロックの選択およびワード線の選択等を行うワード線選択回路１５０と、ワード線選択回路１５０によって選択されたページから読み出されたデータを保持したり、選択されたページへの書込みデータを保持するページバッファ／センス回路１６０と、アドレスレジスタ１２０からの列アドレス情報Ａｙをデコードし当該デコード結果に基づきページバッファ内の列データを選択する列選択回路１７０と、データの読出し、プログラムおよび消去、ベリファイ等のために必要な電圧（ISPPのプログラム電圧Vpgm、パス電圧Vpass、読出しパス電圧Vread、ISPEの消去電圧Vers）などを生成する内部電圧発生回路１８０とを含んで構成される。
【００２９】
メモリアレイ１００は、列方向に配置された複数のメモリブロックBLK(0)、BLK(1)、・・・、BLK(m)を有する。図４は、メモリブロック内に形成されるＮＡＮＤストリングの構成を示す回路図である。１つのメモリブロックには、複数のメモリセルを直列に接続したＮＡＮＤストリング（以下、セルユニットＮＵという）が複数形成され、そのようなセルユニットＮＵが行方向に配列される。図４では、１つのメモリブロック内にｎ＋１個のセルユニットＮＵが行方向に配列されている。
【００３０】
セルユニットＮＵは、直列に接続された複数のメモリセルMCi(i=０、１、・・・、３１)と、メモリセルMC31のドレイン側に接続された選択トランジスタBSTと、メモリセルMC0のソース側に接続された選択トランジスタSSTとを含んで構成される。選択トランジスタBSTのドレインは、対応する１つのビット線GBLに接続され、選択トランジスタSSTのソースは、共通ソース線SLに接続される。メモリセルMCiのコントロールゲートは、ワード線WLiに接続され、選択トランジスタBST、SSTのゲートは、ワード線WLと並行する選択ゲート線SGD、SGSに接続される。ワード線選択回路１５０は、行アドレスＡｘに基づきメモリブロックを選択するとき、当該メモリブロックの選択ゲート信号SGS、SGDを介して選択トランジスタBST、SSTを選択的に駆動する。
【００３１】
プログラム／消去のサイクル数が増加すると、図２に示したように、トンネル酸化膜の劣化やトンネル酸化膜への電子のトラップ等の原因により、プログラムまたは消去されるメモリセルのしきい値電圧Ｖｔは正の方向へシフトする。つまり、プログラムおよび消去に要する電圧を高くしなければならない。
【００３２】
プログラムおよび消去では、メモリセルのしきい値が「０」、「１」の分布幅内に入るように制御されるが、その分布幅またはマージン、プログラム時のベリファイおよび消去時のベリファイによって担保される。例えば、データ「０」、「１」の分布幅を狭くするのであれば、しきい値電圧の正の方向のシフトに合わせて、ベリファイ電圧も正の方向にシフトされ、プログラム電圧および消去電圧も増加されることになる。他方、分布幅の許容範囲が広いのであれば、ベリファイ電圧を必ずしも高くする必要はなく、高いプログラム電圧および消去電圧を抑制することができる。この場合には、メモリセルへのストレスも緩和され、メモリセルの急速な劣化を防止することができる。
【００３３】
フラッシュメモリの用途の一つに、大容量のデータの記憶がある。例えば、ＤＶＤに記録されたデータのダビングやディジタルカメラ等で撮像されたデータの保存である。このような用途に用いられるフラッシュメモリは、大容量のデータを書き換える回数が比較的少ないため、必ずしも厳しいエンデュランスを求められない反面、優れたデータ保持特性が要求される。他方、電源の監視やセキュリティ向けに使用されるフラッシュメモリにとっては、厳しいエンデュランスが求められる。本実施例では、メモリセルにとって最適なプログラム電圧および消去電圧を提供し、フラッシュメモリの急激な劣化を抑制する。さらに本実施例では、用途に応じたエンデュランスおよびデータ保持特性を有するフラッシュメモリを提供することができる。
【００３４】
図５は、本実施例のフラッシュメモリの消去モードを表したフローチャートである。本実施例の消去モードは、同図に示すように、Pre-Program（Ｓ１０）、Erase-Latency（Ｓ２０）、およびPost-Erase（Ｓ３０）の３つのステップを含んで構成される。
【００３５】
図６は、Pre-program（Ｓ１０）の詳細を動作を説明するフローチャートである。まず、フラッシュメモリ１０は、消去コマンドおよび消去すべきアドレス情報（例えば、行アドレスの上位ビット情報）を外部コントローラから受け取る（Ｓ１００）。フラッシュメモリ１０のコントローラ１４０は、消去コマンドを解読し、Pre-Programのシーケンスを起動する（Ｓ１０２）。コントローラ１４０は、アドレスレジスタ１２０から提供されたアドレス情報に基づき、ワード線選択回路１５０にメモリアレイ１００内の所定のメモリブロックを選択させる（Ｓ１０４）。さらにコントローラ１４０は、選択されたメモリブロックのスペア領域に記憶されたデータの読み出しを行う（Ｓ１０６）。読み出されたデータは、当該ブロックの各ワード線をISPPによりプログラムしたときの書込みパルス電圧の最小値Vpgm-initと、当該ブロックをISPEにより消去するときの消去パルス電圧の初期値Vers-initとを含む。
【００３６】
図７に、スペア領域に記憶されるデータの一例としてトリミングコードを示す。トリミングコードは、ブロック内の各ページにデータをプログラムするときの書込みパルスの初期値Vpgm-initを表した２値データであり、００〜０７の８ビットの正コードと、１０〜１７の８ビットの反転コードとを含む。ここには、一例として、プログラム電圧１６．４Ｖ〜１７．８Ｖとワード線３１〜２５との関係が示され、データ「０」の中で最も小さい電圧がISPPの初期値Vpgm-initである。例えば、ワード線２５のプログラム電圧の初期値Vpgm-initは１６．８Ｖ、ワード線２６、２７、２９、３１の初期値Vpgm-initは１７Ｖ、ワード線３０の初期値Vpgm-initは１７．２Ｖ、ワード線２８の初期値Vpgm-initは１７．４Ｖである。Verifiedの「０」は、合格、「１」は不合格である。
【００３７】
トリミングコードは、後述するPost-erase（Ｓ３０）においてスペア領域に書込まれるが、その書込みの際に、データ「０」は、メモリセルのプログラミング状態をチェックするための指標に利用される。すなわち、各ページについて、ベリファイ電圧＝０Ｖの検証が行われ、データ「０」が表れたか否かが監視される。
【００３８】
正コードのみを利用した場合、各ページに含まれる「０」のビット数は異なる。例えば、ワード線３１は、「０」の数は５ビットであるが、ワード線２８は、「０」の数は３ビットである。各ページの異なる「０」のビット数を用いて、実際には数千ないし数万ビットを含む各ページのプログラム状態を推測することになる。このため、各ページのプログラム状態は、より多くのビット数を参照することが、その推測の精度を向上させる上で好ましい。さらに各ページのプログラム状態の推測において、判断にバラツキが生じないようにすることが望ましい。本実施例では、反転コードを用意することで、各ワード線には、８ビットの「０」が均等に含まれるので、各ワード線のプログラム状態をチェックするために参照されるビット数を増やし、推測の精度を向上させることができる。また、各ワード線の「０」の母数を均一にすることで、ワード線間の判断のバラつきを抑制することができる。なお、トリミングコードには、当該メモリブロックを消去するときのISPEの初期値Vers-initがいずれか１つのワード線に関連付けして記憶されている。
【００３９】
コントローラ１４０は、スペア領域からトリミングコードを読み出すと、このコードをレジスタに記憶させる（Ｓ１０８）。もし、スペア領域に正コードのみを記憶させている場合には、コントローラ１４０は、正コードの反転コードを作成し、正コードとともに反転コードを一緒にレジスタに記憶させるようにしてもよい。なお、レジスタは、フラッシュメモリ内のＳＲＡＭやＤＲＡＭ等で構成される内部メモリであってもよいし、あるいはメモリブロック１００内の所定の記憶領域を割り当てるものであってもよい。
【００４０】
コントローラ１４０は、図７に示すトリミングコードのＮＡＮＤ演算を行い、ブロック中のプログラム電圧の初期値の最小値Vpgm-minを抽出する（Ｓ１１０）。図７の例では、ブロック内の最小値Vpgm-minは、１６．８Ｖである。さらにコントローラ１４０は、ブロックを消去するときのISPEの初期値Vers-initをトリミングコードから読み出す。
【００４１】
次に、コントローラ１４０は、消去対象として選択されたブロックの全ワード線に、ISPPの初期値の最小値Vpgm-min＋αの１パルスを印加し、ブロック全体（スペア領域を含む）のPre-Programを実行する（Ｓ１１２）。αは、予め決定される値であり、ブロック内の全てのメモリセルにデータ「０」が書込まれるような期待値に設定される。例えば、αは、３ステップ電圧に相当する電圧、あるいは、トリミングコードのISPPの初期値の最大値Vpgm-max（Vpgm-min＋α＝Vpgm-max、図７の例では、１７．４Ｖ）、または最小値Vpgm-minと最大値Vpgm-maxの中間値などにすることができる。こうして、選択されたブロックは、消去される前にPre-Programによってプログラムが経験される。
【００４２】
コントローラ１４０は、Pre-Programのシーケンスを終了すると、次に、Erase-Latencyのシーケンスへ移行する。図８は、Erase-Latency（Ｓ２０）の詳細な動作フローを示す図である。コントローラ１４０は、Pre-Programを終了すると（Ｓ２００）、レジスタから消去電圧の初期値Vers-initを読出し、これを消去パルスの初期値に設定する（Ｓ２０２）。次に、コントローラ１４０の制御により、選択されたブロックの全ワード線に０Ｖが印加され、基板のウエルに消去電圧Vers-initが印加され、ブロックのデータが消去される（Ｓ２０４）。
【００４３】
次に、Verify＝０Ｖで消去ベリファイが行われる（Ｓ２０６）。つまり、消去されたブロックの全ワード線に０Ｖを印加し、ビット線の導通の有無が検証される。全てのページにおいて、しきい値Ｖｔ＜０が確認されれば、合格と判定され（Ｓ２０８）、ブロック消去は終了となる（Ｓ２１２）。いずれかのページにおいて、消去が不十分であった場合には、ステップ電圧として０．２Ｖが増加され、すなわち消去電圧Vers＝Vers＋０．２Ｖが設定され（Ｓ２１０）、再び消去パルスが印加される。もし、これでも消去が不十分であれば、同様の処理が繰り返される。消去に要した消去パルス数は、カウンタによってカウントされ、そこに保持される。Verify＝０Ｖで消去ベリファイを行うことで、消去ストレスが緩和される。
【００４４】
コントローラ１４０は、Erase-Latencyが終了すると、次に、Post-Eraseのシーケンスに移行する。図９は、Post-Erase（Ｓ３０）の詳細な動作フローを示す図である。選択されたブロックの消去が終了すると（Ｓ３００）、コントローラ１４０は、消去に要した消去パルスの数をチェックする（Ｓ３０２）。消去パルスの数は、上記したように、Erase-Latencyのときにカウンタ等に保持される。コントローラ１４０は、消去パルスが２パルスまたは３パルスかを判別し（Ｓ３０４）、２パルスであれば、選択されたブロックのスペア領域に、レジスタに記憶された消去電圧の初期値Vers-initをそのまま書込む（Ｓ３０６）。他方、消去パルスが３パルスでれば、スペア領域に書込む消去パルスの初期値vers-initを、次のテップ電圧だけ増加した電圧、例えば０．２Ｖに更新して書込む（Ｓ３０８）。
【００４５】
図１０（Ａ）は、消去パルスが３パルスであるときの消去パルスの初期値Vers-initの更新例を示している。すなわち、消去１では、Erase-Latencyのシーケンスにより、３度の消去パルス１８．４Ｖが印加されたときにベリファイにおいて合格と判定されたことを示している。この場合、Post-Eraseモードにおいて、スペア領域には、消去電圧の初期値Vers-initが１８．２Ｖに更新されて記憶される。将来、このブロックの消去２が行われるとき、消去パルスの初期値Vers-initは１８．２Ｖから始まり、次に、１８．４Ｖの消去パルスが印加される。１つの消去パルスの印加時間は、約３００μｓであるため、消去１で消去電圧が印加される時間の合計は、約９００μｓである。消去２では、初期値が１８．２Ｖに高くなる反面、消去電圧が印加される全体の時間を約６００μｓに減らすことが可能であり、ブロックに与える消去ストレスを緩和することができる。なお、ここでは、パルス回数が２回または３回の例を示しているが、これ以外にもパルス回数が一定数を超えるか否かを判定し、その判定結果に基づき初期値Vers-initを変更するようにしてもよい。
【００４６】
再び、図９を参照すると、コントローラ１４０は、消去されたブロックの各ワード線に、レジスタに記憶されたワード線毎の初期値Vpgm-initを印加し、ブロック内のスペア領域へのトリミングコードのプログラムを行う（Ｓ３１０）。この際、トリミングコードは、正コードおよび反転コードを含むものであるから、各ワード線につき、８ビット分の「０」のプログラム状態をベリファイにおいて監視することになる。各ワード線について書込みパルスの初期値Vpgm-initを用いてプログラムを行った後に、ワード線に０Ｖを印加してビット線の導通の有無を検証する、すなわち、Verify＝０Ｖでのベリファイが行われる。もし、プログラムされたページのいずれか１つのメモリセルのしきい値がＶｔ＞０Ｖであれば、言い換えれば、８ビットのうちのいずれか１つのベリファイが合格となれば、コントローラ１４０は、そのページのプログラム電圧の初期値Vpgm-initが１ステップ下がるように、レジスタに記憶されているコードを更新し、更新されたコードをスペア領域に書込む（Ｓ３１６）。これは、ブロック消去により、トンネル酸化膜が劣化しメモリセルへのプログラムが高速になったと考えられ、これを抑制するために初期値を下げる。
【００４７】
他方、プログラムされたページの全てのメモリセルのしきい値がＶｔ≦０Ｖであれば、つまり、８ビットのすべてのベリファイが不合格であれば、メモリセルのデータ保持特性が通常に戻っていると考えられるので、コントローラ１４０は、レジスタに記憶されているコードをスペア領域にそのまま書込む（Ｓ３１８）。なお、ここには示さないが、トリミングコードをスペア領域にプログラムするためのシーケンスは、その後も、継続される。すなわち、所定のベリファイ電圧によってプログラムが合格と判定されるまで、ISPPによる書込みパルスが順次印加され、スペア領域にトリミングコードが記憶される。その際、トリミングコードには、更新された正コードとその反転コードが含まれる。
【００４８】
図１１は、更新されたコードの一例を表している。もし、ワード線２８に対してプログラム電圧の初期値Vpgm-initでプログラムを行ったときに、そのベリファイにおいてＶｔ＞０Ｖであった場合には、ステップＳ３１６に記載のように、初期値Vpgm-initが１ステップだけ下げられ、ワード線２８の１７．２Ｖのデータは「１」から「０」に更新される。つまり、ワード線の初期値Vpgm-initは、１７．０Ｖに更新される。
【００４９】
図１０（Ｂ）は、ISPPによる書込みパルスの例を示している。仮に、Post-eraseにおいて、ワード線２８に初期値Vpgm-init＝１７．２Ｖが印加され、ベリファイでＶｔ＞０となったならば、初期値Vpgm-initは、１７．０Ｖに１ステップ下げられる。この初期値は、プログラムモードにおいてプログラムが行われるときに読出され、このページへのプログラムは、初期値Vpgm-initとして１７．０Ｖの書込みパルスから印加が開始される。
【００５０】
次に、本実施例のプログラムモードについて説明する。図１２は、プログラムモードの詳細を示すフローチャートである。プログラムモードでは、ブロックのスペア領域に記憶されたプログラム電圧の初期値Vpgm-initを読出し、この初期値を利用してISPPにより書込みを行う。
【００５１】
コントローラ１４０は、プログラム命令とアドレス情報を外部コントローラから受け取ると（Ｓ４００）、プログラム命令を解読し、Program-Modeを起動する（Ｓ４０２）。コントローラ１４０は、アドレス情報に基づきブロックおよびページを選択し（Ｓ４０４）、選択されたページのスペア領域に記憶されたプログラム電圧の初期値Vpgm-init（データ「０」の中で最小となる電圧）を抽出する（Ｓ４０６）。次に、コントローラ１４０は、選択ページに初期値Vpgm-initを印加し、選択ページへのデータの書込みを行う（Ｓ４０８）。次に、コントローラ１４０は、Verify=0Ｖ、すなわち、選択ページに０Ｖを印加して、選択ページのベリファイを行い（Ｓ４１０）、選択ページのいずれかのメモリセルのしきい値がＶｔ＞０であるか否かを判定する（Ｓ４１２）。
【００５２】
選択ページのいずれかのメモリセルにおいて、しきい値Ｖｔ＞０が発生している場合には、プログラム速度が速くなっていると判定し、Vpgm＝Vpgm＋０．８Ｖ（Ｓ４１４）とし、ステップ電圧が０．８Ｖとなる電圧が抑制されたISPPのプログラムが続けられる。他方、選択ページのいずれのメモリセルにおいて、しきい値Ｖｔ＞０が生じていない場合、すなわち、データ「０」が現れない場合には、消去後の状態からの時間経過によりデータ保持特性が改善されたと考えられ、次のプログラム電圧は、Vpgm＝Vpgm＋０．２Ｖ（Ｓ４１４）、Vpgm＝Vpgm＋０．８Ｖ（Ｓ４１６）のシーケンスにより、ステップ電圧を１Ｖに上昇させて２回目以降のISPPが続けられる。なお、図１２には示していないが、以後の選択ページのプログラムのベリファイは、０Ｖよりも高い所定の電圧で行われ、ベリファイで合格と判定されたとき、選択ページへのプログラムは完了する。
【００５３】
図１３は、ISPPのパルス波形の例である。図１３（Ａ）は、初期値Vpgm-init＝１６．２Ｖであり、ステップ電圧が０．８Ｖずつ増加する通常のISPPを示している。図１３（Ｂ）では、上記したようにプログラム速度が減速したと考えられた場合に、ステップ電圧が１Ｖ上昇され、２回目のプログラム電圧が１７．２ＶとなったISPPを示している。
【００５４】
フラッシュメモリでは、データをプログラムするとき、未だデータのプログラムが行われていない領域、あるいはデータを消去した領域が用意される。好ましくは、特定の領域の摩耗が急速に進行しないように、プログラム／消去の回数が均等になるようなアルゴリズムによって記憶領域が選択される。図１４は、あるブロックに対してプログラムと消去が繰り返された例を示している。すなわち、ブロックの消去１が行われ、その後、ブロック内のページにプログラム（書込み）が行われ、その後、ブロックの消去２が行われる。
【００５５】
本実施例では、ブロックの消去１を行う場合、消去前書込み（Pre-Program）が行われる。ブロック内には、過去に一度もプログラムされたことがないメモリセル、あるいは比較的少ない回数でしたプログラムされたことがないメモリセルが含まれることがある。消去前書込みは、各ページの書込みパルスの初期値Vpgm-initを参照し、これより２ないし３ステップ大きな書込みパルスを印加することで、ブロック内のすべてのメモリセル、あるいは大部分のメモリセルは、データ「０」にプログラムされる。メモリセルのしきい値のシフトは、図２に示すように消去／プログラムのサイクル回数に比例するものであり、サイクル回数を均一化することで、ブロック内のメモリセルのしきい値が均一化され、あるいは差が大きくならないようにされる。
【００５６】
ブロックの消去１が終了すると、消去後書込み（Post-Erase）が行われる。消去後書込みでは、消去前の書込みパルスおよび消去パルスが更新される。上記したように、ブロックを消去するときの消去パルスの回数が増加（例えば、上記の例では、２回から３回に増加）した場合、消去パルスの初期値は、例えば、図１０（Ａ）に示すように、１ステップ電圧だけ増加される。従って、このブロックの次回の消去パルスの初期値は、１ステップ電圧高くなるが、その反面、消去パルスの回数は２回に減少されるであろう。２回の消去パルスの印加時間は、３回の消去パルスを印加するときよりも短くなるため、メモリセルへの実質的なストレスを緩和することができ、メモリセルの劣化を抑制し得る。
【００５７】
さらに、消去後書込み(Post-Erase)では、レジスタに記憶されたトリミングコードの初期値Vpgm-initを用いて、ブロック内のスペア領域の各ページにトリミングコードのプログラムが行われ、Ｖｔ＝０Ｖのベリファイ電圧を基準に、メモリセルがプログラムがされ易くなったか否かがチェックされる。データ保持特性が良好な通常のメモリセルであれば、初期値Vpgm-initのパルスの印加ではプログラムされず、データ「０」は現れない。正コードおよび反転コードの８ビットのデータ「０」に対応するビット線のいずれかに「０」が現れた場合には、プログラムがされ易い状態にあると判定され、１ステップ電圧だけ下げられた初期値に更新される。その後、更新されたトリミングコードは、通常のISPPのシーケンスによりスペア領域にプログラムされる。
【００５８】
ブロックの消去１が完了すると、当該ブロックの領域は、プログラムに使用可能となる。プログラムが行われるとき、アドレス情報に基づきページが選択され、選択されたページのスペア領域に記憶された書込みパルスの初期値Vpgm-initが読み出される。この書込みパルスの初期値は、消去１の直後にPost-Eraseにおいてスペア領域に成された消去後書込みのプログラム状態を反映して更新されたものである。読み出された書込みパルスの初期値Vpgm-initに基づき選択されたページへのプログラムが実行され、Verify＝０Ｖで検証が行われる。消去直後にはプログラム速度が速くなる傾向があるが、消去１から書込みまでの時間が経過すると、メモリセルのデータ保持特性が回復する。消去後と同じ書込みパルスの初期値Vpgm-initを用いて、Verify=0Ｖでの検証を行った結果、選択ページのいずれかにデータ「０」が現れた場合には、メモリセルがプログラムされ易い状態にあり、２回目以降に大きな書込みパルス電圧を印加すると、メモリセルの劣化が急速に進行すると考えられるため、２回目の書込みパルス電圧が抑制される（例えば、図１３（Ａ）に示すように、０．８Ｖ）。他方、データ「０」が現れなければ、メモリセルのデータ保持特性は改善されていると考えられるので、２回目の書込みパルス電圧は、相対的に大きくされる（例えば、図１３（Ｂ）に示すように、１Ｖ）。
【００５９】
書込みが行われた後、当該ブロックは、再び消去されることになる。ブロック内のすべてのページがプログラムされているとは限らないし、１ページがすべてデータ「０」であるとは限らない。つまり、ブロック内には、データ「１」とデータ「０」とが混在している。上記したように、ブロックの消去２が行われる前に、消去前書込みによって、ブロック内がすべてあるいは大部分がデータ「０」にされる。
【００６０】
このように本実施例によれば、プログラム／消去のサイクル特性の均一化を図ることができ、メモリセル間のストレスを均一化させ、データ書換え回数およびデータ保持特性の局所的な劣化を防止し、長寿命のフラッシュメモリを提供することができる。また、消去の前後のプログラム状態を監視することで、サイクル数の進行度に応じた最適なプログラム電圧および／または消去電圧を提供することができる。
【００６１】
本発明の好ましい実施の形態について詳述したが、本発明は、特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【００６２】
上記実施例では、１つのメモリセルに１つのしきい値（単データ）を設定する例を示したが、２値、４値などの多ビットデータを記憶する半導体メモリにも適用することができる。さらに、当業者であれば、消去パルスの生成は、公知の回路技術を用いて容易に成し得るものであり、上記の消去パルスの数、消去電圧、パルス幅は、単なる例示であり、半導体メモリの設計仕様等に応じて適宜変更することが可能である。さらに上記実施例では、電荷蓄積層としてフローティングゲートを用いたメモリセルを例示したが、フローティングゲート以外の電荷蓄積層を用いた、例えばＯＮＯ（酸化膜−窒化膜−酸化膜）のような界面トラップ型の不揮発性メモリセルであってもよい。
【符号の説明】
【００６３】
１０：フラッシュメモリ
１００：メモリアレイ
１１０：入出力バッファ
１２０：アドレスレジスタ
１３０：データレジスタ
１４０：コントローラ
１５０：ワード線選択回路
１６０：ページバッファ／センス回路
１７０：列選択回路
【図１】
0005583185.tif 000002
【図２】
0005583185.tif 000003
【図３】
0005583185.tif 000004
【図４】
0005583185.tif 000005
【図５】
0005583185.tif 000006
【図６】
0005583185.tif 000007
【図７】
0005583185.tif 000008
【図８】
0005583185.tif 000009
【図９】
0005583185.tif 000010
【図１０】
0005583185.tif 000011
【図１１】
0005583185.tif 000012
【図１２】
0005583185.tif 000013
【図１３】
0005583185.tif 000014
【図１４】
0005583185.tif 000015