(57)【特許請求の範囲】
【請求項１】
複数のメモリセルが行列状に配置され、書き込みデータに応じて、同一のワード線に接続された一ページ分のメモリセルに対して、書き込みを行った後、読み出しにより各メモリセルのしきい値電圧が所定の基準しきい値に達したか否かを判定し、全ての書き込みメモリセルのしきい値電圧が上記基準しきい値に達するまで、書き込み動作を繰り返して行う不揮発性半導体記憶装置であって、
上記書き込みデータに応じた書き込み動作を終えた一ページ分のメモリセルに対して、各書き込みメモリセルのしきい値電圧が上記基準しきい値に達したか否かについて、読み出しにより再度検証を行い、全ての書き込みメモリセルのしきい値電圧が上記基準しきい値に達するまで、上記書き込みおよび読み出しによる検証を繰り返して行う制御手段
を有する不揮発性半導体記憶装置。
【請求項２】
上記書き込みデータを保持するデータ保持手段を有し、上記書き込みおよび上記検証開始時に、上記書き込みデータを上記データ保持手段に格納させるデータ格納手段
を有する請求項１記載の不揮発性半導体記憶装置。
【請求項３】
上記制御手段は、上記書き込み動作時に、上記データ保持手段に格納されたデータに応じて、各メモリセルに書き込みパルスを印加するか否かを決定する
請求項１記載の不揮発性半導体記憶装置。
【請求項４】
上記制御手段は、上記書き込みメモリセルに対応する書き込みデータを第１のデータに設定し、消去メモリセルに対応する書き込みデータを第２のデータに設定する
請求項１に記載の不揮発性半導体記憶装置。
【請求項５】
上記制御手段は、上記読み出し結果に応じて、しきい値電圧が上記基準しきい値に達した書き込みメモリセルに対応する書き込みデータを上記第２のデータに設定する
請求項４記載の不揮発性半導体記憶装置。
【請求項６】
上記制御手段は、上記書き込み動作時に、上記第１のデータに対応するメモリセルのみに所定の電圧レベルに保持された書き込みパルスを印加する
請求項４記載の不揮発性半導体記憶装置。
【請求項７】
上記書き込みパルスの電圧レベルは、初回の書き込みから徐々に高く設定され、一定の書き込み回数に達したとき、当該書き込みパルスの電圧レベルが一定に保持される
請求項６記載の不揮発性半導体記憶装置。
【請求項８】
上記制御手段に、書き込み回数を計数するカウンタを有し、
書き込み開始時、上記カウンタの計数値を初期化する初期化手段と、
一回の書き込み毎に、上記カウンタの計数値を一回カウントアップするカウントアップ手段と、を有し、
上記制御手段は、上記書き込みおよび上記検証動作時に、上記カウンタの計数値が所定の値に達したとき、書き込み対象に欠陥があると判断し、上記プログラム動作を終了させる
請求項１記載の不揮発性半導体記憶装置。
【請求項９】
上記初期化手段は、上記検証動作開始時に、上記カウンタの計数値を初期化する
請求項８記載の不揮発性半導体記憶装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、不揮発性半導体記憶装置、例えば、フラッシュＥＥＰＲＯＭに関するものである。
【０００２】
【従来の技術】
ＦＮ(Fowler-Nordheim) トンネル注入により書き込みを行うフラッシュＥＥＰＲＯＭにおいては、書き込みの速度が遅いため、一般的に、同時に多数のメモリセルに対してプログラムを行う。具体的に、一つのワード線に接続されている一ページ分のメモリセル全てに対して同時にプログラムを行う。
【０００３】
書き込み後のメモリセルのしきい値電圧分布のバラツキを抑えたいページプログラム動作においては、細かいプログラムパルスを何回も与えて、かつメモリセル毎に書き込み後のしきい値電圧Ｖthを検証（ベリファイ）し、書き込みペリファイしきい値電圧ＶTHに到達次第プログラムパルスの印加を停止するように制御を行う。
【０００４】
図６は従来のメモリセル毎プログラムを行うページプログラムの一例を示すフローチャートである。
図６に示すように、ページプログラム動作は、データロード、プログラム、ベリファイ読み出し、判定結果に応じて再プログラムなどの動作により構成されている。
以下、図６を参照しつつ、ページプログラム動作について説明する。
【０００５】
まず、ステップＳＳ１に示すように、プログラムの対象メモリセルに書き込む１ページ分のデータをプログラム制御装置、例えば、ＣＰＵからフラッシュＥＥＰＲＯＭにロード（読み込み）し、各ビット線に設けられたラッチ回路によりラッチする。データロード後、次のステップＳＳ２に進む。
【０００６】
ステップＳＳ２において、ロードしたデータに応じて書き込み動作を行う。即ち、最初のプログラムパルスをロードしたデータに応じて、各メモリセルに印加する。
【０００７】
書き込みステップＳＳ２の後、ステップＳＳ３に示すベリファイ動作を行う。このステップにおいて、メモリセル毎に書き込みベリファイしきい値電圧ＶTHに達したか否かについて検証するため、ベリファイ読み出しを行う。書き込みベリファイしきい値電圧ＶTHに達すれば、ラッチ回路のデータは自動的に“１”に設定され、その後のプログラムパルスの印加を止める。一方、消去メモリセルにおいて、ラッチ回路のデータが最初から“１”に設定されている。
【０００８】
そして、ステップＳＳ４において、ラッチ回路のデータが全て“１”になっているか否かについて調べる。そうである場合にページプログラムは終了となる。そうでない場合は、ステップＳＳ５の動作に進み、再びプログラムパルスを印加する。なお、この再プログラム動作において、書き込み不足のメモリセルに対してのみプログラムパルスを印加する。
【０００９】
そして、ステップＳＳ５の再プログラム動作の後、ステップＳＳ３の動作に戻り、ラッチ回路のデータが全て“１”になるまでベリファイ読み出しとプログラムパルスを印加する再プログラム動作を繰り返して行う。
【００１０】
このようなページプログラム動作により、書き込み対象となる一ページのメモリセルが、消去メモリセルを除き、全て書き込みベリファイしきい値電圧ＶTHに設定される。
【００１１】
【発明が解決しようとする課題】
ところで、上述した従来のページプログラムにおいては、ソース線寄生抵抗の影響により、書き込み後メモリセルのしきい値電圧Ｖthが書き込みベリファイしきい値電圧ＶTHに達しないことがあり、書き込み後メモリセルのしきい値電圧にバラツキが生じるという問題がある。
【００１２】
図７は書き込み後のベリファイ読み出し時の状態を示す回路図である。
図７において、Ｖr は読み出し電圧、ＬＡＴ1 ，ＬＡＴ2 ，ＬＡＴ3 ，…，ＬＡＴn はラッチ回路、ＹＣ1 ，ＹＣ2 ，ＹＣ3 ，…，ＹＣn はカラム選択信号線、ＮＣ1 ，ＮＣ2 ，ＮＣ3 ，…，ＮＣn はカラム選択トランジスタ、ＢＬ1 ，ＢＬ2 ，ＢＬ3 ，…，ＢＬn はビット線、Ｍ1 ，Ｍ2 ，Ｍ3 ，…，Ｍn は書き込み対象となる一ページ分のメモリセル、ＷＬ1 はワード線、Ｒ1 ，Ｒ2 ，Ｒ3 ，…，Ｒn はソース線寄生抵抗をそれぞれ示している。
【００１３】
カラム選択信号線ＹＣ1 ，ＹＣ2 ，ＹＣ3 ，…，ＹＣn は図示しないカラムデータに接続され、ページ読み出し時に、選択されたページのカラム選択信号線が全てハイレベル、例えば、電源電圧ＶCCレベルに保持される。
選択されたページにある全てのメモリセルＭ1 ，Ｍ2 ，Ｍ3 ，…，Ｍn の制御ゲートがワード線ＷＬ1 に接続され、各メモリセルの一方の拡散層はそれぞれビット線ＢＬ1 ，ＢＬ2 ，ＢＬ3 ，…，ＢＬn に接続され、他方の拡散層はソース線ＳＬに接続されている。
【００１４】
なお、ビット線ＢＬ1 ，ＢＬ2 ，ＢＬ3 ，…，ＢＬn はそれぞれカラム選択トランジスタＮＣ1 ，ＮＣ2 ，ＮＣ3 ，…，ＮＣn を介して、ラッチ回路ＬＡＴ1 ，ＬＡＴ2 ，ＬＡＴ3 ，…，ＬＡＴn に接続され、これらのラッチ回路は、読み出し電圧Ｖr の供給端子Ｔr に接続されている。
ソース線ＳＬは、例えば、接地されている。
【００１５】
図７に示すように、メモリセルの拡散層と接地電位間にソース線の寄生抵抗が存在する。このため、ベリファイ読み出し時に、ワード線ＷＬ1 に接続された一ページ分のメモリセルＭ1 ，Ｍ2 ，Ｍ3 ，…，Ｍn に対して、同時に読み出しを行い、消去メモリセルと書き込み不足のメモリセルに読み出し電流が流れる。なおここで、消去メモリセルのしきい値電圧が低い値に設定され、書き込みメモリセルのしきい値電圧が高い値に設定されると仮定する。
【００１６】
ベリファイ読み出し時に、ワード線ＷＬ1 に読み出し電圧が印加され、ワード線ＷＬ1 に接続された一ページ分のメモリセルＭ1 ，Ｍ2 ，Ｍ3 ，…，Ｍn の内、消去メモリセルと書き込み不足のメモリセルが導通状態となり、それに読み出し電流が流れる。
通常、一ページのメモリセルの数は、６４〜２５６に設定されているので、これらのメモリセルに生じた読み出し電流がまとめて接続された同一のソース線ＳＬを介して、接地点に流れ込む。
【００１７】
このため、書き込み不足のメモリセルが存在する一回目のベリファイ読み出し時と書き込み不足メモリセルが存在しない最終回のベリファイ読み出し時にソース線ＳＬに流れる電流の合計値が異なる。ソース線ＳＬの寄生抵抗により、ソース線電位が浮き上がり、即ち、ソース線電位が接地電位より高くなる。ソース線電位の上昇分は寄生抵抗とソース線に流れる電流値との積で決まるので、一回目のベリファイ読み出しと最終回のベリファイ読み出し時のソース線電位の上昇が異なる。
【００１８】
最終のベリファイ読み出し時にソース線に流れる電流の合計値が減少し、それに従ってソース線の電位上昇分も低下する。
このため、一回目のベリファイ読み出し時に書き込みベリファイしきい値電圧ＶTHに達したが、その後のプログラムパルス印加を止めたメモリセルのソース電位は最終回のベリファイ読み出し時に低下しがちである。
【００１９】
この場合、一回目のベリファイ読み出し時のメモリセルのしきい値電圧Ｖthには基板バイアス効果の大きいしきい値であり、最終回のベリファイ読み出し時のメモリセルのしきい値電圧Ｖthには、基板バイアス効果の小さいしきい値である。
【００２０】
即ち、図８に示すように、一回目のベリファイ読み出し時にメモリセルのしきい値電圧ＶTH1 が書き込みベリファイしきい値電圧ＶTHに達したと判定されても、最終回のベリファイ読み出し時に基板バイアス効果が小さくなることにより、メモリセルのしきい値電圧ＶTHN がベリファイしきい値電圧ＶTHを下回ることが起きる。
このため、従来のページプログラムでは、ソース線の寄生抵抗の影響により、メモリセルのしきい値電圧Ｖthが書き込みベリファイしきい値電圧ＶTHに達しないことがあり、書き込み後のメモリセルのしきい値電圧分布にはバラツキが避けられない。
【００２１】
本発明は、かかる事情に鑑みてなされたものであり、その目的は、ベリファイ読み出し時にソース線の寄生抵抗によるソース線電位上昇の影響を回避でき、プログラム後メモリセルのしきい値分布のバラツキを抑制できる不揮発性半導体記憶装置を提供することにある。
【００２２】
【課題を解決するための手段】
上記目的を達成するため、本発明は、複数のメモリセルが行列状に配置され、プログラム動作は同一のワード線に接続された一ページ分のメモリセルに対して行い、書き込みデータに応じた書き込み動作の後、読み出しにより各メモリセルのしきい値電圧が所定の基準しきい値に達したか否かを判定し、全ての書き込みメモリセルのしきい値電圧が上記基準しきい値に達するまで、書き込み動作を繰り返して行う不揮発性半導体記憶装置であって、上記書き込みデータに応じた書き込み動作を終えた一ページ分のメモリセルに対して、各書き込みメモリセルのしきい値電圧が上記基準しきい値に達したか否かについて、読み出しにより再度検証を行い、全ての書き込みメモリセルのしきい値電圧が上記基準しきい値に達するまで、上記書き込みおよび読み出しによる検証を繰り返して行う制御手段を有する。
【００２３】
また、本発明では、上記書き込みデータを保持するデータ保持手段を有し、上記書き込みおよび上記検証開始時に、上記書き込みデータを上記データ保持手段に格納させるデータ格納手段を有する。
【００２４】
さらに、本発明では、上記制御手段は、上記書き込み動作時に、上記データ保持手段に格納されたデータに応じて、各メモリセルに書き込みパルスを印加するか否かを決定し、上記読み出し結果に応じて、しきい値電圧が上記基準しきい値に達した書き込みメモリセルに対応する書き込みデータを改めて設定する。
【００２５】
本発明によれば、プログラム対象となる一ページ分のメモリセルに対して、書き込みデータに応じて書き込みが行われ、制御手段により書き込み結果が検証され、書き込みメモリセルのしきい値電圧が所定の基準しきい値に達するまで、書き込みおよび検証動作が繰り返して行われる。
【００２６】
そして、全ての書き込みメモリセルのしきい値電圧が所定のしきい値に達したあと、読み出しによる検証動作が再度行われ、全ての書き込みメモリセルのしきい値電圧が所定のしきい値に達するまで、再度書き込みと検証動作が繰り返して行われる。
これにより、ソース線の寄生抵抗によるメモリセルしきい値電圧の誤判断を回避でき、書き込みメモリセルのしきい値電圧分布のバラツキを抑制できる。
【００２７】
【発明の実施の形態】
図１は本発明に係る不揮発性半導体記憶装置の一実施形態を示すブロック図である。
図１において、１０はアドレスバッファ、２０はロウデコーダ、３０はカラムデコーダ、４０はメモリセルアレイ、５０は周辺回路、６０はプログラムステートマシン、１００は入出力バッファをそれぞれ示している。
【００２８】
アドレスバッファ１０は入力アドレスＡＤＲを保持し、保持したアドレスＡＤＲをロウデコーダ２０およびカラムデコーダ３０に出力する。
ロウデコーダ２０は、アドレスバッファ１０からのアドレスＡＤＲR に応じて、ワード線ＷＬの中から、ページプログラム対象となる一ページ分に対応するワード線を選択する。
カラムデコーダ３０は、アドレスバッファ１０からのアドレスＡＤＲC に応じて、カラム選択信号線ＹＣの中から、ページプログラム対象となる一ページ分に対応するカラム選択信号線を選択する。
【００２９】
メモリセルアレイ４０は行列状に配置されたメモリセルにより構成され、各行のメモリセルは、同一のワード線に接続され、各列のメモリセルは同一のビット線に接続されている。そして、ページプログラムは、同一ワード線に接続されている一ページ分のメモリセルに対して行われる。
【００３０】
周辺回路５０は、例えば、カラムセレクタ、ラッチ回路、センスアンプにより構成されている。
カラムセレクタは、カラム選択信号線ＹＣより入力されたカラム選択信号に応じて、ページプログラムの対象となる一ページ分のメモリセルに対応するビット線を選択する。
ラッチ回路は、プログラムステートマシン６０からのデータをロードし、保持する。そして、プログラム動作時に、ロードしたデータに応じて、メモリセルにプログラムパルスを印加するか否かを制御する。そして、ベリファイ読み出し時に、ベリファイしきい値電圧ＶTHに達したメモリセルに応じたデータを“１”に設定し、次回の再プログラム動作において、データが“１”に設定されているメモリセルにプログラムパルスの印加を止める。
【００３１】
プログラムステートマシン６０は、コマンドレジスタ７０、ループカウンタ８０およびプログラム制御回路９０により構成されている。
コマンドレジスタ７０は、プログラム動作にかかるコマンドを格納し、プログラム動作時に、格納したコマンドに対応する動作を指示する。
ループカウンタ８０は、プログラム動作の回数をカウントし、カウント値Ｘをプログラム動作の制御に用いる。
プログラム制御回路９０は、コマンドレジスタ７０、ループカウンタ８０からの情報に基づき、プログラム動作を制御するための各信号を発生し、それぞれの部分回路に出力する。
【００３２】
入出力バッファ１００は、外部からのプログラムデータを受けて、それを保持して、プログラムステートマシン６０または周辺回路へ出力する。さらに、プログラムステートマシン６０と周辺回路５０の間に転送されたデータを一時保持して転送先へ出力する。
【００３３】
プログラムステートマシン６０は、プログラムにおける各動作およびそのタイミングを自動的に制御する。プログラムステートマシン６０には、外部回路から書き込みイネーブル信号／ＷＥ、チップイネーブル信号／ＣＥおよび出力イネーブル信号／ＯＥが入力される。また、入出力バッファ１００を介して、外部からプログラムコマンドを受けて、これらのコマンドをコマンドレジスタ７０に格納する。
また、プログラムステートマシン６０からプログラム動作状態を示す信号Ｒ／Ｂを外部に出力される。Ｒ／Ｂ信号がハイレベルの場合、プログラム動作が終了して、新しいコマンドを受けられる状態を示し、Ｒ／Ｂ信号がローレベルの場合、プログラム動作中であることを示す。
【００３４】
プログラム動作時に、プログラムステートマシン６０は、上述した外部信号の状態に応じて、コマンドレジスタ７０に格納したコマンドに応じて、プログラム動作を制御する。
【００３５】
以下、上述した構成を有する不揮発性半導体記憶装置におけるプログラム動作を、図２〜５を参照しつつ、詳細に説明する。
図２および図３は、プログラム動作の第１の実施例を示し、図４および図５はプログラム動作の第２の実施例を示す。
【００３６】
実施例１
図２はプログラム動作の実施例１におけるプログラム動作時に、書き込みメモリセルに印加されるプログラムパルスを示す波形図である。
図示のように、プログラムにおける各回の書き込み動作時に、書き込みメモリセルに同レベルの書き込みパルスが印加される。これに応じて、書き込みメモリセルのしきい値電圧が高い値、例えば、電源電圧ＶCC以上に設定される。
【００３７】
そして、書き込み後、ベリファイ読み出しにより、書き込みメモリセルに対して、読み出しによる書き込み結果の検証が行われる。検証の結果、全ての書き込みメモリセルのしきい値電圧がベリファイしきい値電圧ＶTHに達した場合、プログラム動作が終了するが、そうでない場合、メモリセルに対して再プログラムが行われる。
【００３８】
プログラムデータに基づく書き込み、プログラム結果の検証および再プログラム動作の制御は、図１に示すプログラムステートマシン６０により制御され、その動作フローチャートは、図３に示している。
図３に示すように、本実施例のプログラム動作は、第１のフローと第２フローからなる。以下、図３のフローチャートを参照しつつ、本実施例におけるメモリセルのプログラム動作について説明する。
【００３９】
プログラム動作開始後、まず、ステップＳ１に示すように、ループカウンタ８０のカウント値Ｘが“０”に初期化される。そして、ステップＳ２に示すように、選択された一ページ分のメモリセルのプログラムデータがラッチ回路にロードされ、ラッチ回路により保持される。
【００４０】
ステップＳ３において、ラッチ回路にロードされたデータに応じて、選択された一ページ分のメモリセルに対して、プログラム動作が行われる。ここで、例えば、書き込みメモリセルに対応するロードデータが“０”に設定され、消去メモリセルに対応するロードデータが“１”に設定されている。プログラム時に、ロードデータ“０”に対応するメモリセル、即ち、書き込みメモリセルに図２に示す最初のプログラムパルスＰ1 が印加され、ロードデータ“１”に対応するメモリセル、即ち、消去メモリセルにプログラムパルスが印加されない。
【００４１】
プログラム動作後、ステップＳ４に示すベリファイ読み出し動作が行われる。ベリファイ読み出し時に、ステップＳ３でプログラムされた一ページ分のメモリセルに対して読み出しが行われる。読み出しの結果、書き込みメモリセルのしきい値電圧がベリファイしきい値電圧ＶTHに達すれば、それに応じたラッチ回路のデータが“１”に設定される。なお、消去メモリセルに対応するラッチ回路のデータが、上述したように、ステップＳ２のデータロードのとき、予め“１”に設定されている。
【００４２】
ベリファイ読み出し動作後、ステップＳ５に示す判定動作が行われる。判定動作において、ラッチ回路のデータが全て“１”になっているか否かについて判定を行う。ラッチデータが全て“１”になっている場合、ステップＳ１０に示すようにループカウンタ８０のカウント値Ｘに対して判定を行い、ループカウンタ８０のカウント値Ｘが“０”であるとき、即ち、プログラム動作が一回のみ行われ、全ての書き込みメモリセルのしきい値電圧がベリファイしきい値電圧ＶTHに達した場合、プログラム動作が成功したと判定し、プログラム動作を終了させる。
【００４３】
一方、ループカウンタ８０のカウント値Ｘが“０”ではない場合、即ち、プログラム動作が二回以上が行われて、ラッチデータが全て“１”に達した場合、図３に示すように、第２フローの動作に進む。
【００４４】
なお、ステップＳ５の判定動作において、ラッチ回路のデータが全て“１”に達していないと判定されたとき、ステップＳ６に進み、ループカウンタ８０のカウント値Ｘを一回カウントアップする。
そして、ステップＳ７において、ループカウンタ８０のカウント値Ｘが所定の値ｎになっているかどうかについて判定する。カウント値Ｘがｎに達したとき、メモリ装置に欠陥があるとして、プログラムステートマシン６０により、メモリ不良を示す情報が出力され、プログラム動作が終了する。一方、カウント値Ｘがｎに達していないとき、ステップＳ９に進み、選択された一ページ分のメモリセルに対して、ラッチ回路のデータに基づき、再プログラムが行われる。
【００４５】
なお、ステップＳ７の判定時に用いられたデータｎは、プログラム時間の上限および酸化膜などのデバイス欠陥により見積もられ、プログラム動作開始前に、予めプログラムステートマシン６０に設定される。ここで、ｎの値は、例えば、数１０から数１０００程度に設定されることが望ましい。
【００４６】
ステップＳ９の再プログラム動作後、ステップＳ４に戻り、再プログラム後のメモリセルに対して、もう一度ベリファイ読み出しが行われる。そして、前回のベリファイ読み出し動作と同様に、ベリファイ読み出しの結果に応じて、ラッチ回路のデータが設定される。
【００４７】
このように、ラッチ回路のデータが全て“１”になるまで、上述した再プログラム動作が繰り返して行われる。ラッチデータが全て“１”に達したとき、第２フローに進む。
【００４８】
第２フローにおいて、まず、ステップＳ１１に示すように、ループカウンタ８０のカウント値Ｘがクリアされ、“０”に設定される。そして、ステップＳ１２に示すように、選択された一ページ分のメモリセルのプログラムデータがラッチ回路にロードされ、ラッチ回路に保持される。
【００４９】
そして、ステップＳ１３に示すように、一ページ分のメモリセルに対して、ベリファイ読み出しが行われる。ベリファイ読み出しの結果に応じて、書き込みメモリセルのしきい値電圧がベリファイしきい値電圧ＶTHに達すれば、それに応じたラッチ回路のデータが“１”に設定される。
【００５０】
ベリファイ読み出し動作後、ステップＳ１４に示す判定動作が行われる。ステップＳ１４において、ラッチ回路のデータが全て“１”になっているか否かについて判定を行う。ラッチデータが全て“１”になっている場合、ステップＳ１５に示すように、ループカウンタ８０のカウント値Ｘに対して判定を行い、ループカウンタ８０のカウント値Ｘが所定の値ｍを越えていないとき、プログラムが成功したと判定し、プログラム動作が終了する。一方、カウント値Ｘが値ｍを越えた場合、第２フロー始めのステップＳ１１に戻り、ループカウンタ８０のカウント値Ｘを“０”に設定して、再びデータロード、ベリファイ読み出しおよびラッチ回路のデータに対する判定動作が行われる。
【００５１】
なお、上述したステップＳ１５に用いられている値ｍは、例えば、０〜１０の範囲内に設定されている。ｍの値が小さいほどベリファイ読み出しの回数が少なくなり、ソース線の寄生抵抗で生じた電圧降下によるしきい値電圧変動の影響が小さく抑制される。
【００５２】
ステップＳ１４において、ラッチ回路の全てのデータが“１”に達していないと判定されたとき、ステップＳ１６に示すように、カウント値Ｘが所定の値ｎに達したかどうかについて判定し、カウント値Ｘが値ｎに達したとき、メモリ装置が不良と判定され、ステップＳ１７に示すように、プログラムステートマシン６０により、メモリ不良を示す情報が出力され、プログラム動作が終了する。一方、カウント値Ｘがｎに達していないとき、ステップＳ１８に進み、選択された一ページ分のメモリセルに対して、ラッチ回路のデータに基づき、再プログラムが行われる。
なお、ステップＳ１６におけるカウント値Ｘの判定値ｎは、ステップＳ７で用いられている値ｎと同様に設定されている。
【００５３】
再プログラム動作の後、ステップＳ１９に示すように、ループカウンタ８０のカウント値Ｘを一回カウントアップした後、ステップＳ１３のベリファイ読み出し動作に戻る。
このように、ラッチ回路のデータが全て“１”になるまで、再プログラムとベリファイ読み出し動作が繰り返して行われる。ラッチ回路のデータが全て“１”に達したとき、ステップＳ１５におけるカウント値Ｘの判定結果により、プログラム動作が終了するか、または、第２フローの始めに戻り、ラッチ回路のデータロードおよびベリファイ読み出し、ラッチ回路データの判定動作が再び行われる。
【００５４】
以上説明したように、本実施例によれば、第１と第２フローからなるプログラム動作を行い、プログラム時に、同電圧のプログラムパルスを書き込みメモリセルに印加し、第１フローにおいて、選択された一ページ分のメモリセルに対するプログラムデータをラッチ回路にロードした後、ロードデータに応じてプログラムし、ベリファイ読み出しにより、書き込みメモリセルのしきい値電圧を検証し、ベリファイしきい値電圧ＶTH以上に達した場合、それに対応するラッチ回路のデータを“１”に設定する。ラッチ回路のデータが全て“１”に達するまで、再プログラムおよびベリファイ読み出しを繰り返して行い、ラッチ回路のデータが全て“１”に達したとき、ループカウンタ８０のカウント値Ｘに応じて、プログラムを終了させ、または第２フローの動作に進む。第２のフローにおいて、プログラムデータをもう一度ラッチ回路にロードし、ベリファイ読み出しにより、ラッチ回路のデータを設定し、ラッチ回路のデータが全て“１”になるまで、再プログラムとベリファイ読み出しが繰り返して行い、ラッチ回路のデータが全て“１”に達したとき、ループカウンタ８０のカウント値Ｘに応じて、第２フローの動作を始めからやり直し、またはプログラム動作を終了させるので、ソース線寄生抵抗に基づくソース電位の上昇によるしきい値電圧の誤判断を回避でき、書き込みメモリセルのしきい値電圧分布のバラツキを抑えることができる。
【００５５】
実施例２
図４および図５は本発明に係る不揮発性半導体記憶装置の第２の実施例を示す図である。
図４は、本実施例２におけるプログラム動作時に、書き込みメモリセルに印加されるプログラムパルスを示す波形図である。
図示のように、プログラムにおける各回の書き込み動作時に、書き込みメモリセルに印加される書き込みパルスの電圧レベルが段々高く設定される。例えば、一回目のプログラムパルスの電圧が１５Ｖに設定され、ｐ回目のプログラムパルスの電圧が２０Ｖに設定される。ｐ回目以降のパルス電圧が全て２０Ｖに保持されている。即ち、ｐ回目のプログラムまでに、書き込みメモリセルに階段状のプログラムパルスが印加され、それ以降のプログラム動作において、書き込みメモリセルに一定の電圧に保持されたパルスが印加される。
これは、プログラムパルスによるメモリセルのゲート破壊を防ぐため、プログラムパルスの上限が設定されるからである。
【００５６】
上述したプログラムパルスが書き込みメモリセルに印加されることにより、書き込みメモリセルのしきい値電圧が高い値に設定される。そして、プログラム動作後、ベリファイ読み出しにより、書き込みメモリセルのしきい値電圧に対して検証が行われる。検証の結果、全ての書き込みメモリセルのしきい値電圧がベリファイしきい値電圧ＶTHに達した場合、プログラム動作が終了するが、そうでない場合、メモリセルに対して再プログラムが行われる。
【００５７】
以下、図５のフローチャートを参照しつつ、本実施例におけるメモリセルのプログラム動作について説明する。
図５に示すように、本実施例のプログラム動作は第１フローと第２フローの２段階で行われる。
【００５８】
第１フローにおいて、まず、プログラム動作開始後、ループカウンタ８０のカウント値Ｘが初期値“０”に設定され、そして、選択された一ページ分のメモリセルのプログラムデータがラッチ回路にロードされる。
図示のように、ステップＳ１〜ステップＳ５までの動作は、図３に示す第１の実施例と同様であるため、これらの動作について詳細の説明を省略する。
【００５９】
ステップＳ５において、ラッチ回路のデータが全て“１”に達したか否かについて判定する。判定結果、ラッチ回路のデータが全て“１”に達したとき、図示のように、第１フローの動作が完了し、第２フローの動作に進む。
【００６０】
一方、判定の結果、ラッチ回路のデータが全て“１”に達していないとき、ステップＳ６に示すように、ループカウンタ８０のカウント値Ｘを一回カウントアップして、即ち、カウント値Ｘに１を加算して、ステップＳＮ７に示すカウント値Ｘの判定動作に進む。
【００６１】
ステップＳＮ７において、カウント値Ｘが予め設定された値ｊに達したか否かについて判定を行う。カウント値Ｘが値ｊに達した場合、メモリ装置に欠陥があるとして、プログラムステートマシン６０により、メモリ不良を示す情報が出力され、プログラム動作が終了する。一方、カウント値Ｘがｊに達していないとき、ステップＳ９に進み、選択された一ページ分のメモリセルに対して、ラッチ回路のデータに基づき、再プログラムが行われる。
【００６２】
なお、ステップＳＮ７の判定時に用いられたデータｊは、書き込みメモリセルに印加された階段状のプログラムパルスの数、プログラム時間の上限および酸化膜などのデバイス欠陥により見積もられ、プログラム動作開始前に、予めプログラムステートマシン６０に設定される。
図４の波形図に示すように、プログラムパルスの電圧が一定の電圧値、例えば２０Ｖに達するまで、階段状のパルスが合計ｐ回印加されるとすると、ステップＳＮ７に用いられる判定の値ｊは、階段状パルス数ｐより数回〜数１００回を加えた値とする。例えば、ここで一例として、（ｊ＝ｐ＋５０）とする。
【００６３】
ステップＳ９の再プログラム動作後、ステップＳ４に戻り、再プログラム後のメモリセルに対して、もう一度ベリファイ読み出しが行われる。そして、前回のベリファイ読み出し動作と同様に、ベリファイ読み出しの結果に応じて、ラッチ回路のデータが設定される。
【００６４】
このように、ラッチ回路のデータが全て“１”になるまで、上述した再プログラム動作が繰り返して行われる。ラッチデータが全て“１”に達したとき、第２フローに進む。
【００６５】
第２フローにおけるステップＳ１１〜Ｓ１４までの動作は、図３に示す第１の実施例のステップＳ１１〜Ｓ１４と同様であり、ここで、これらの動作について説明を省略する。
ステップＳ１４において、ラッチ回路のデータを判定する。そして、判定結果、ラッチ回路のデータが全て“１”である場合、ステップＳＮ１５に示すように、ループカウンタ８０のカウント値Ｘに対して判定を行い、ループカウンタ８０のカウント値Ｘが所定の値ｉを越えていないとき、プログラムが成功したと判定し、プログラム動作が終了する。一方、カウント値Ｘが値ｉを越えた場合、第２フロー始めのステップＳ１１に戻り、ループカウンタ８０のカウント値Ｘを“０”に設定して、再びデータロード、ベリファイ読み出しおよびラッチ回路のデータに対して判定動作が行われる。
【００６６】
なお、上述したステップＳＮ１５に用いられている値ｉは、図４に示すプログラムパルスの内、階段状のパルスの数ｐに基づき設定され、（ｐ＋１）〜（ｐ＋１０）の範囲内に設定されている。ここで、一例として、（ｉ＝ｐ＋５）とする。
【００６７】
ステップＳ１４において、判定結果がラッチ回路の全てのデータが“１”に達していない場合、ステップＳＮ１６に示すように、カウント値Ｘが所定の値ｊに達したかどうかについて判定し、カウント値Ｘが値ｊに達したとき、メモリ装置が不良と判定され、ステップＳ１７に示すように、プログラムステートマシン６０により、メモリ不良を示す情報が出力され、プログラム動作が終了する。一方、カウント値Ｘがｊに達していないとき、ステップＳ１８に進み、選択された一ページ分のメモリセルに対して、ラッチ回路のデータに基づき、再プログラムが行われる。
なお、ステップＳＮ１６におけるカウント値Ｘの判定値ｊは、ステップＳＮ７で用いられている値ｊと同様に設定されている。
【００６８】
再プログラム動作の後、ステップＳ１９に示すように、ループカウンタ８０のカウント値Ｘを一回カウントアップした後、ステップＳ１３のベリファイ読み出し動作に戻る。
このように、ラッチ回路のデータが全て“１”になるまで、再プログラムとベリファイ読み出し動作が繰り返して行われる。ラッチ回路のデータが全て“１”に達したとき、ステップＳＮ１５におけるカウント値Ｘの判定結果により、プログラム動作が終了するか、または、第２フローの始めに戻り、ラッチ回路のデータロードおよびベリファイ読み出し、ラッチ回路データの判定動作が再び行われる。
【００６９】
以上説明したように、本実施例によれば、第１と第２フローからなるプログラム動作を行い、プログラム時に、電圧レベルが階段状に設定されたプログラムパルスを書き込みメモリセルに印加し、第１フローにおいて、選択された一ページ分のメモリセルに対するプログラムデータをラッチ回路にロードした後、ロードデータに応じてプログラムし、ベリファイ読み出しにより、書き込みメモリセルのしきい値電圧を検証し、ベリファイしきい値電圧ＶTH以上に達した場合、それに対応するラッチ回路のデータを“１”に設定する。ラッチ回路のデータが全て“１”に達するまで、再プログラムおよびベリファイ読み出しを繰り返して行い、ラッチ回路のデータが全て“１”に達したとき、第２フローの動作に進む。第２のフローにおいて、プログラムデータをもう一度ラッチ回路にロードし、ベリファイ読み出しにより、ラッチ回路のデータを設定し、ラッチ回路のデータが全て“１”になるまで、再プログラムとベリファイ読み出しが繰り返して行い、ラッチ回路のデータが全て“１”に達したとき、ループカウンタ８０のカウント値Ｘに応じて、第２フローの動作を始めからやり直し、またはプログラム動作を終了させるので、ソース線寄生抵抗に基づくソース電位の上昇による書き込みメモリセルのしきい値電圧の誤判断を回避でき、メモリセルのしきい値電圧分布のバラツキを抑えることができる。
【００７０】
なお、以上においては、消去メモリセルのしきい値電圧を低い値に設定し、書き込みメモリセルのしきい値電圧を高い値に設定するものとして説明したが、本発明はこれに限定されるものではなく、消去メモリセルのしきい値電圧を高い値に設定し、書き込みメモリセルのしきい値電圧を低い値に設定する場合においても、本発明のプログラム動作が有効であることはいうまでもない。
【００７１】
【発明の効果】
以上説明したように、本発明の不揮発性半導体記憶装置によれば、メモリセルの拡散層と接地電位間の寄生抵抗によるソース線電位上昇の影響を回避でき、書き込み後メモリセルしきい値電圧がベリファイしきい値電圧に達しないことを防止でき、メモリセルのしきい値電圧分布のバラツキを抑制できる利点がある。
【図面の簡単な説明】
【図１】本発明に係る不揮発性半導体記憶装置の一実施形態を示すブロック図である。
【図２】本発明の第１の実施例のプログラムパルス波形図である。
【図３】第１の実施例のフローチャートである。
【図４】本発明の第２の実施例のプログラムパルス波形図である。
【図５】第２の実施例のフローチャートである。
【図６】従来のプログラム動作のフローチャートである。
【図７】ベリファイ読み出し回路の一例を示す回路図である。
【図８】ベリファイ読み出し回数としきい値電圧の変化を示すグラフである。
【符号の説明】
１０…アドレスバッファ、２０…ロウデコーダ、３０…カラムデコーダ、４０…メモリセルアレイ、５０…周辺回路、６０…プログラムステートマシン、７０…コマンドレジスタ、８０…ループカウンタ、９０…プログラム制御回路、１００…入出力バッファ、ＶCC…電源電圧、ＧＮＤ…接地電位。
【図１】
0003796851.tif 000002
【図２】
0003796851.tif 000003
【図３】
0003796851.tif 000004
【図４】
0003796851.tif 000005
【図５】
0003796851.tif 000006
【図６】
0003796851.tif 000007
【図７】
0003796851.tif 000008
【図８】
0003796851.tif 000009