(57)【特許請求の範囲】
【請求項１】
各プログラム電圧が漸次増加するか等しい大きさを有する複数のプログラムパルスからなるパルス列を、単数または複数のメモリセルの制御端子に入力して、このメモリセルをプログラムする不揮発性半導体メモリの制御方法であって、
上記パルス列は、プログラム電圧の大きさが漸次増加する複数のプログラムパルスを有し、
さらに、上記パルス列は、その最終プログラムパルスと同じプログラム電圧を有するプログラムパルスを単数もしくは複数だけ有し、
上記最終プログラムパルスと同じプログラム電圧を有する単数もしくは複数のプログラムパルスのパルス幅の合計を、上記不揮発性半導体メモリを上記最終プログラムパルスのプログラム電圧のプログラムパルスのみでプログラムするのに必要な時間の２分の１以上の時間とすることを特徴とする不揮発性半導体メモリの制御方法。
【請求項２】
請求項１に記載の不揮発性半導体メモリの制御方法において、
上記パルス列の最終プログラムパルスのプログラム電圧に達するまでの各プログラムパルスにおいて、
隣接する２つのプログラムパルス間のプログラム電圧の絶対値の上げ幅と、上記プログラムパルスのパルス幅と比を、
上記不揮発性半導体メモリのメモリセルの閾値の分布幅と、上記メモリセルをプログラムするのに必要な時間との比に、等しくすることを特徴とする不揮発性半導体メモリの制御方法。
【請求項３】
請求項２に記載の不揮発性半導体メモリの制御方法において、
上記パルス列よりも前に、
上記パルス列の最初のプログラムパルスの電圧に等しいか低い大きさを持つ単数もしくは複数の追加プログラムパルスを有し、この追加プログラムパルスのプログラム電圧の絶対値は漸次増加するか等しい大きさを有していて、
上記追加プログラムパルスと上記パルス列を上記メモリセルに入力して、このメモリセルをプログラムすることを特徴とする不揮発性半導体メモリの制御方法。
【請求項４】
請求項３に記載の不揮発性半導体メモリの制御方法において、
上記追加プログラムパルスのパルス幅に対する上記追加プログラムパルスのプログラム電圧の絶対値の上げ幅の比を、上記パルス列のパルス幅に対する上記パルス列のプログラムパルス毎のプログラム電圧の絶対値の上げ幅の比に等しくすることを特徴とする不揮発性半導体メモリの制御方法。
【請求項５】
請求項１に記載の不揮発性半導体メモリの制御方法において、
上記パルス列の最終プログラム電圧に達するまでの各プログラムパルスにおいて、
上記プログラムパルス毎のプログラム電圧の絶対値の上げ幅と、そのプログラムパルスのパルス幅との比を、
上記メモリセルの閾値の分布幅と、プログラム状態に設定されたメモリセルの閾値とイレース状態に設定されたメモリセルの閾値の間に挟まれたメモリセルの遷移状態の閾値の幅との和に対する上記不揮発性半導体メモリ内をプログラムするのに必要な時間の比に等しくすることを特徴とする不揮発性半導体メモリの制御方法。
【請求項６】
請求項１に記載の不揮発性半導体メモリの制御方法において、
上記パルス列の各プログラムパルスのパルス幅を等しくすることを特徴とする不揮発性半導体メモリの制御方法。
【請求項７】
請求項５に記載の不揮発性半導体メモリの制御方法において、
上記パルス列の各プログラムパルスのパルス幅を等しくすることを特徴とする不揮発性半導体メモリの制御方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、制御端子,浮遊ゲート,ドレイン端子,および,ソース端子を有する単数または複数のメモリセルからなる不揮発性半導体メモリを制御する制御方法において、特にプログラムの際のプログラムパルスのアルゴリズムに特徴がある不揮発性半導体メモリの制御方法に関する。
【０００２】
【従来の技術】
浮遊ゲートを有する不揮発性半導体メモリは、例えば、フラッシュメモリとして利用される。そのメモリセルは、制御端子,浮遊ゲート,ドレイン端子,および,ソース端子から成り立っている。図１０に、その１例の構成断面を示す。
【０００３】
この１例のメモリセルでは、浮遊ゲート２に蓄積される電荷量によって、書き込み状態と消去状態とを取り得る。すなわち、制御端子１に所定の大きさの正の電界を印加した時、浮遊ゲート２の電荷量が平衡もしくはそれに近い場合と浮遊ゲート２に負の電荷(電子)が蓄積された場合とでは、ソース４とドレイン３の間にできるチャネル層を流れる電流に大小の差が生じる。この電流の大小は、制御端子１に適当な電圧を選択することによって、導通,非導通とすることができる。例えば、チャネルが導通している前者の場合のデータを「１」、チャネルが非導通の後者の場合を「０」と定義すると、浮遊ゲート２に蓄積される電荷量に応じて、２値のデータを保持し、読み出すことができる。
【０００４】
この場合、浮遊ゲート２に蓄積される電荷量をさらに細かく制御できれば、２値にかぎらず多値のデータを保持し、読み出すことが可能である。
【０００５】
メモリセルアレイにはこのようなメモリセルが多数存在している。あらかじめ、メモリセルアレイ全体、もしくは、メモリセルセルアレイの必要な領域にのみ、浮遊ゲート２に過剰な負の電荷を注入することによって、消去状態「０」にしておく。この過程では、例えば、制御端子１に正の電圧を印加し、基板５,ドレイン端子３,および,ソース端子４に負の電圧を印加することで、ソース４とドレイン３の間にできたチャネル層から電子がFowler - Nordhiemトンネル現象を通して、浮遊ゲート２に注入される。
【０００６】
このまず消去状態にしたメモリセルアレイにデータを書き込む(プログラムする)には、例えば、図１１に示すように、制御端子１が接続されたワード線に負の電圧−Ｖｇを印加し、データ「１」を書き込むメモリセルのドレイン３に接続されたビット線に正の電圧＋Ｖｄを印加し、データ「０」を書き込むメモリセルのドレイン３'に接続されたビット線はフローティング状態(図１１ではＦ)にする。この場合、データ「１」を書き込むメモリセルのトンネル酸化膜６には、Fowler - Nordhiemトンネル現象が生じるのに十分な電界が生じて、負の電荷が浮遊ゲート２からドレイン３に移動し、メモリセルの閾値が低下する。一方、データ「０」を書き込むメモリセルのトンネル酸化膜６'には、Fowler - Nordhiemトンネル現象が生じるのに十分な電界が生じず、負の電荷がドレイン３'から浮遊ゲート２'に移動しない。よって、メモリセルの閾値は高い状態を維持する。したがって、データに応じて浮遊ゲートに蓄積される電荷量に差が生じ、メモリセルアレイにデータが書き込まれる。
【０００７】
メモリセルアレイには多数のメモリセルが存在し、製造ばらつきなどに起因して、それらのメモリセルの特性は均一ではない。したがって、プログラム動作時に、メモリセルの特性に合わせて、プログラムパルスを制御する必要が生じる。
【０００８】
具体的には、例えば、ワード線毎にプログラムを実施する場合、プログラムを行うワード線に複数のパルスを印加し、各プログラムパルスの印加後にメモリセルの閾値を検出(ベリファイ)し、次のプログラムパルスを印加する時に、所定の閾値に達したメモリセルに接続されたビット線をフローティング状態にし、書き込みは行わず、所定の閾値に達していないメモリセルに接続されたビット線には電圧を印加する。これにより、浮遊ゲートに注入される電荷量を制御して、各メモリセルの閾値をあるばらつき範囲にまで揃えるという操作が行われる。なお、この操作はベリファイ操作と一般に呼ばれる。また、上記一連のプログラムパルスの列はある一つのアルゴリズムを形成する。
【０００９】
プログラムパルスのアルゴリズムはそれ自体フラッシュメモリの種類にかかわらず本質的なものである。すなわち、電圧の極性等を最適化することで、フラッシュメモリの種類(例えば、ＮＯＲ型,ＮＡＮＤ型,ＤＩＮＯＲ型,あるいは、バーチャルグランドＮＯＲ型など)によらず適用可能である。
【００１０】
プログラムパルスのアルゴリズムを形成するパルス列には、Ｔ.Ｋawahara et al.：IEEE J. of Ｓolid - Ｓtate Circuit30(1995)1554、Ｇ,J,Ｈemink et al.：Ｓymp.on ＶLSI Ｔechnology(1995)129、あるいは、桝岡富士雄：「フラッシュメモリの高集積化技術」第４３回半導体専門講習会予稿集(1996)137に記載されているような従来方法がある。これらの文献に記載された従来方法は、図１２(Ａ),(Ｂ)および、図１３(Ａ),(Ｂ),(Ｃ),(Ｄ)に示されているプログラムパルス列を用いたアルゴリズムによる方法である。これらの従来例はワード線電圧およびワード線に印加するプログラムパルス幅を制御する方法である。これらのどの従来例の場合も、図中には示されていないが、各プログラムパルスを印加した直後にベリファイ動作が行われる。
【００１１】
【発明が解決しようとする課題】
メモリアレイ内のメモリセルの閾値を必要とされる分布幅に抑えるには、プログラムパルスを印加したときにメモリセルの閾値がシフトする量を、上記必要とされる分布幅に常に等しくする必要がある。もしくは、上記閾値シフト量を、上記閾値分布幅よりも小さくする必要がある。
【００１２】
さらに、必要とされるプログラム状態のメモリセルの閾値分布幅は、通常、プログラムパルスを単純に印加したとき(すなわち、ベリファイ動作を伴わずにプログラムパルスを印加したとき)のメモリセルの閾値分布幅よりも小さく設定される。このため、プログラムパルスを単純に印加した時のメモリセルの閾値分布幅が大きくなればなる程、必要なプログラムパルス数はより多くなる。
【００１３】
これらの条件を満足するために、図１２(Ａ)あるいは図１３(Ｂ)に示されるような従来方法がある。これらの方法では、ワード線電圧ＶｇmaxもしくはＶｇを一定に設定して、(図示していないプログラムパルス毎にベリファイ動作を行うような)パルス幅を変えたプログラムパルス列から成るアルゴリズムによりプログラムを行っている。
【００１４】
これらの方法では、メモリセルの閾値がシフトする量を正確に制御するために、各プログラムパルス毎にパルス幅を設定する必要が生じる。これには、メモリセルの特性を把握するために、プログラムに関するデータを多数集める、あるいは、正確なシミュレーションを実行するというような、困難な作業を必要とする。
【００１５】
さらに、これらの方法では、より正確に閾値を合わせ込むためにプログラムパルス数を増加させた場合、プログラムアルゴリズムが進むにしたがって、印加するプログラムパルスのパルス幅を順に大きくする必要があり、結果としてプログラム時間がほぼ指数関数的に増大するという問題が生じる。
【００１６】
このような課題を改善するために、図１３(Ｃ)に示されるように、ワード線電圧を波形上斜めに上昇させて、プログラムパルス毎にベリファイ動作行うようなアルゴリズムでプログラムする従来方法がある。さらには、図１２(Ｂ)と図１３(Ｄ)に示されるように、ワード線電圧を階段状に上昇させて、プログラムパルス毎に、図示していないベリファイ動作を行うようなアルゴリズムでプログラムする従来方法がある。
【００１７】
これらの方法では、ベリファイ動作を伴うプログラムパルスのパルス幅を固定した状態で、メモリセルの閾値がシフトする量をほぼ一定に揃えることが可能である。したがって、各プログラムパルス毎にパルス幅を設定する必要がなくなり、この点では改善されている。
【００１８】
ところが、これらの方法では、プログラムパルスの電圧の大きさを、逐次大きくしていく必要がある。実際のデバイスでは、設定できるプログラムパルスの電圧の大きさの最大値は、メモリセルのトンネル酸化膜の耐圧、もしくは、プログラム動作に必要な回路の耐圧などによって制限を受けるので、必要とする値に設定できない場合が多い。
【００１９】
したがって、プログラム速度が遅いメモリセルをプログラムする場合、これらの耐圧によって、最終パルスとして設定できる電圧は、制限を受ける。メモリセルのプログラム速度が遅くなると、それに応じてプログラムパルスのパルス幅を広げる必要が生じる。メモリセルのプログラム速度が遅い場合、最終プログラムパルス以外のプログラムパルスのパルス幅も広げておく必要があるので、結果としてプログラム時間が長くなるという問題を生じる。
【００２０】
プログラム時のメモリセルの閾値をより正確に揃えるため、図１２(Ｂ)に示されるように、階段状のプログラムパルスの各ステップをさらに分割したようなプログラムパルスからなるアルゴリズムによる従来方法がある。この方法を用いると、所定の閾値になったメモリセルへの書き込みを停止する操作をきめ細かくできることからメモリセルの閾値分布をさらに狭くできるという点では改善されている。
【００２１】
しかし、プログラムパルス印加後、ベリファイを行なうためプログラムパルスの数だけベリファイ動作が必要になるので、ベリファイに要する時間が無視できず、結果としてプログラム時間が増加するという問題が生じる。
【００２２】
さらに、プログラムパルスの電圧が増加したときのメモリセルの閾値のシフト量と、同じプログラム電圧のパルスを続けて印加した時のメモリセルの閾値のシフト量との間の整合性をとる必要が生じる。不揮発性半導体メモリチップ毎にこのような条件を満足するプログラムパルスを発生させることのできる回路は複雑になるという問題がある。
【００２３】
また、図１３(Ｃ)に示すプログラムパルス波形のように、一つのパルス中でワード線電圧を斜めに上昇させるような電圧発生回路は複雑になるという問題がある。
【００２４】
先の設定できる最大電圧が耐圧等により制限を受けるという問題に対して、図１３(Ａ)で示されるように、最大電圧Ｖｇmaxのプログラムパルスの数を増加させて、かつ、パルス幅を広げて対応するという従来方法がある。
【００２５】
この場合、最大電圧のプログラムパルスのパルス数、および、パルス幅の設定が新たに必要となる。この際、図１２(Ａ)あるいは図１３(Ｂ)で示されるような従来方法に伴う問題(パルス幅設定の困難さ)と同じ問題を再び考慮する必要が生じる。
【００２６】
さらに、図１３(Ａ)で示されるような従来方法の場合には、図１２(Ｂ)で示されるような従来方法に伴う問題(プログラム時間が長くなる)と同じ問題も含んでいる。
【００２７】
そこで、この発明の目的は、メモリセルアレイの各セルの閾値のばらつきを抑制でき、この閾値分布の制御性を向上でき、プログラム速度も向上できる不揮発性半導体メモリの制御方法を提供することにある。
【００２８】
【課題を解決するための手段】
上記目的を達成するため、この発明の不揮発性半導体メモリの制御方法は、各プログラム電圧が漸次増加するか等しい大きさを有する複数のプログラムパルスからなるパルス列を、単数または複数のメモリセルの制御端子に入力して、このメモリセルをプログラムする不揮発性半導体メモリの制御方法であって、
上記パルス列は、プログラム電圧の大きさが漸次増加する複数のプログラムパルスを有し、
さらに、上記パルス列は、その最終プログラムパルスと同じプログラム電圧を有するプログラムパルスを単数もしくは複数だけ有し、
上記最終プログラムパルスと同じプログラム電圧を有する単数もしくは複数のプログラムパルスのパルス幅の合計を、上記不揮発性半導体メモリを上記最終プログラムパルスのプログラム電圧のプログラムパルスのみでプログラムするのに必要な時間の２分の１以上の時間とすることを特徴としている。
【００２９】
この発明の不揮発性半導体メモリの制御方法は、漸次電圧の大きさが増加する複数のプログラムパルスをメモリセルの制御端子に入力し、最大電圧時のプログラムパルス(最終プログラムパルス)のパルス幅の合計を、その最大電圧のみでメモリセルをプログラムするのに必要な時間の２分の１以上にする。これにより、メモリセルアレイの各セルの閾値のばらつきを抑制でき、この閾値分布の制御性を向上でき、プログラム速度も向上できることを実験で確認できた。
【００３０】
また、一実施形態の不揮発性半導体メモリの制御方法は、上記パルス列の最終プログラムパルスのプログラム電圧に達するまでの各プログラムパルスにおいて、
隣接する２つのプログラムパルス間のプログラム電圧の絶対値の上げ幅と、上記プログラムパルスのパルス幅と比を、
上記不揮発性半導体メモリのメモリセルの閾値の分布幅と、上記メモリセルをプログラムするのに必要な時間との比に、等しくする。
【００３１】
この一実施形態では、プログラムパルスの電圧の大きさの上げ幅とプログラムパルス幅との比を所定値(閾値分布幅とプログラム所要時間との比)に保つ。これにより、プログラム時間を不必要に増加させることなく、メモリセルの閾値のシフト量を可能な範囲で自由に制御でき、したがって、メモリセルのプログラム時の閾値の分布幅を可能な範囲で自由に制御できる。
【００３２】
また、他の実施形態の不揮発性半導体メモリの制御方法は、
上記パルス列よりも前に、
上記パルス列の最初のプログラムパルスの電圧に等しいか低い大きさを持つ単数もしくは複数の追加プログラムパルスを有し、この追加プログラムパルスのプログラム電圧の絶対値は漸次増加するか等しい大きさを有していて、
上記追加プログラムパルスと上記パルス列を上記メモリセルに入力して、このメモリセルをプログラムする。
【００３３】
この実施形態では、上記パルス列とその前の追加プログラムパルスでもって、メモリセルをプログラムするので、このプログラム時にメモリセルのトンネル酸化膜に印加される電界を緩和することができ、メモリセルの信頼性を向上できる。
【００３４】
また、一実施形態の不揮発性半導体メモリの制御方法は、上記追加プログラムパルスのパルス幅に対する上記追加プログラムパルスのプログラム電圧の絶対値の上げ幅の比を、上記パルス列のパルス幅に対する上記パルス列のプログラムパルス毎のプログラム電圧の絶対値の上げ幅の比に等しくする。
【００３５】
この実施形態では、追加プログラムパルスのパルス幅に対する上げ幅の比を、パルス列のパルス幅に対する上げ幅の比に等しくするから、追加プログラムパルスを存在させても、プログラム時間の増加を最小限に抑制できる。
【００３６】
また、他の実施形態の不揮発性半導体メモリの制御方法は、上記パルス列の最終プログラム電圧に達するまでの各プログラムパルスにおいて、
上記プログラムパルス毎のプログラム電圧の絶対値の上げ幅と、そのプログラムパルスのパルス幅との比を、
上記メモリセルの閾値の分布幅と、プログラム状態に設定されたメモリセルの閾値とイレース状態に設定されたメモリセルの閾値の間に挟まれたメモリセルの遷移状態の閾値の幅との和に対する上記不揮発性半導体メモリ内をプログラムするのに必要な時間の比に等しくする。
【００３７】
この実施形態では、プログラムパルスの電圧の大きさの上げ幅とプログラムパルス幅との比を、所定値((閾値分布幅＋遷移状態の閾値幅)：プログラム所要時間)に保つ。これにより、プログラム時間を不必要に増加させることなく、メモリセルの閾値のシフト量を可能な範囲で自由に制御でき、したがって、メモリセルのプログラム時の閾値の分布幅を可能な範囲で自由に制御できる。
【００３８】
また、一実施形態の不揮発性半導体メモリの制御方法は、上記パルス列の各プログラムパルスのパルス幅を等しくする。
【００３９】
この実施形態では、上記パルス列の各プログラムパルスのパルス幅を等しくするので、パルス発生回路の構成を簡単にすることができる。
【００４０】
また、他の実施形態の不揮発性半導体メモリの制御方法は、上記パルス列の各プログラムパルスのパルス幅を等しくする。
【００４１】
この実施形態では、上記パルス列の各プログラムパルスのパルス幅を等しくするので、パルス発生回路の構成を簡単にできる。
【００４２】
【発明の実施の形態】
以下、この発明の不揮発性半導体メモリの制御方法を、図示の実施の形態に基いて詳細に説明する。
【００４３】
〔第１の実施形態〕
図１に、この発明の第１実施形態の制御方法によるプログラムアルゴリズムのプログラムパルス列を模式的に示す。このパルス列は、ワード線に印加する電圧を表わしており、図１０および図１１に示されたメモリセルに適合した一つの例であるため、ワード線電圧は負電圧になっている。また、より詳細な説明のためにベリファイパルスＢＰをも描写されている。
【００４４】
この実施形態の制御方法による各プログラムパルスＰ1,Ｐ2,Ｐ3…,Ｐｎ−１,Ｐｎの幅tppは、その最終パルスＰｎにおける電圧(図１,図２(Ａ)における−Ｖｇend)のみでプログラムした場合に必要なプログラム時間ｔpgmの２分の１の大きさ(ｔpgm/２)になっている(幅ｔpp＝ｔpgm／２)。
【００４５】
このパルス幅tppは、図２に模式的に表わされているように、メモリセルアレイ内で最もプログラム速度の遅いメモリセルの特性によって決定される。図２において、縦軸はメモリセルのしきい値電圧ＶＴを示し、横軸はプログラム(書き込み)時間ｔをlog表示したものである。
【００４６】
最終的に、電圧(−Ｖｇend)のプログラムパルスＰｎを、制御端子につながるワード線に印加することによって、メモリセルアレイの中で最もプログラム速度の遅いメモリセルが、所定の消去(Erase)状態から所定の書き込み(Program)状態に達するのに要する時間ｔpgmを、図２(Ｂ)に表している。上記所定の消去状態とは、例えば、しきい値が４Ｖ以上の状態であり、上記所定の書き込み状態とは、例えば、しきい値が２Ｖ以下の状態である。
【００４７】
図１に示すように、この実施形態の制御方法では、一定の電圧Ｖgstepを増分として、ワード線にステップ状にパルスＰ1,Ｐ2,Ｐ3,…,Ｐｎ−１,Ｐｎを印加する。ここで、上記各パルスＰ1〜Ｐｎのパルス幅ｔppを上記プログラム時間ｔpgmの２分の１(ｔpp＝ｔpgm／２)に設定することによって、メモリセルアレイの各セルの閾値のばらつきを抑制でき、この閾値分布の制御性を向上でき、プログラム速度も向上できることを実験で確認できた。
【００４８】
また、この実施形態では、上記パルス幅ｔppを、上記プログラム時間ｔpgmの２分の１に一義的に設定するので、プログラムアルゴリズムのパルス幅設定を容易化することができる。なお、上記パルス幅ｔppを上記プログラム時間ｔpgmの２分の１以上にしてもよい。この場合、プログラム速度が減少するが、しきい値のばらつきはより小さくなる。
【００４９】
図３に、上記実施形態によるアルゴリズムでプログラムした場合のメモリセル群の閾値分布を模式的に示す。図３に、Ｅ部で示すように、消去状態のメモリセル群の閾値分布幅は、通常、ベリファイ動作を行って揃えようとするメモリセル群の閾値分布幅より広い。
【００５０】
このＥ部のように、消去状態のしきい値分布を持つメモリセル群に、最初のプログラムパルスＰ1を印加すると、各メモリセルの書き込み特性の違いに起因して、図３のＡ部に示すように、しきい値分布幅が上記消去状態のメモリセル群のしきい値分布幅よりも大きくなることもありえる。
【００５１】
次に、このメモリセル群のしきい値分布幅を狭めるために、ベリファイを行い、メモリセル群のしきい値電圧を検証する。ここで、しきい値が２Ｖ以下になっており、所定の書き込み状態になっているメモリセルのドレインはフローティング状態として、さらなる書き込みを行わない。一方、しきい値が２Ｖ以上であり、書き込みを行うべきメモリセルには、パルスＰ1(−Ｖｇstart)よりもＶｇstepだけ高い電圧である第２のプログラムパルスＰ2を印加し書き込みを行う。この結果、書き込むべきメモリセルのしきい値分布幅は、図３に示すＢ部のように狭くなる。
【００５２】
同様に、図１に示すプログラムパルス波形にしたがって、順次、ステップ状にＶｇstepずつ増加するプログラムパルスＰ3,…と、ベリファイパルスＢＰとを交互に、メモリセルに印加し、図３のＤ部に示すように、書き込むべきメモリセルのしきい値が、全て所定の電圧(図３では２Ｖ)以下になるまでこの動作を続ける。
【００５３】
このように、メモリセル群の閾値の広い分布幅を、目的とする狭い分布幅に揃えるには、しきい値を確認するベリファイ動作が必要である。このベリファイ動作時のメモリセルの閾値分布のシフト量は、最大でも、目的とするプログラム後のしきい値分布幅程度に抑える必要がある。
【００５４】
このベリファイ動作時のメモリセルのしきい値のシフト量が大き過ぎると、図３に示す書き込み状態のメモリセルのしきい値分布の下限値(ＶＰL)がさらに下がるので、しきい値分布幅が広がってしまう。
【００５５】
本出願人らによるシュミレーション実験では、プログラムパルスの電圧増分Ｖｇstepとこれによるメモリセルのしきい値のシフト量はほぼ一致していた。したがって、プログラムパルスの増加電圧Ｖｇstepを制御することによって、目的とするメモリセルのしきい値分布幅を制御することができる。
【００５６】
図３に示すように、この実施形態では、第２パルスＰ2以降のパルスＰ3…をメモリセルに印加したとき、メモリセルの閾値は、その直前のパルスの電圧との差Ｖｇstepだけシフトする。したがって、図１の波形に示すように、増分Ｖｇstepを一定にして、メモリセルのプログラムを行うことによって、図３にＢ→Ｃ→Ｄで示すように、第２パルスＰ2以降のパルス毎のメモリセルのしきい値のシフト量を一定にすることができる。これによって、目的とするメモリセルの閾値の分布幅を達成できる。
【００５７】
上記実施形態の制御方法では、図１に示すアルゴリズムプログラムパルス列において、各プログラムパルスＰ1,Ｐ2…のパルス幅ｔppを一定値にしている。ただし、このパルス幅ｔppを変化させることによっても、第２パルスＰ2以降のパルスＰ3,…毎のメモリセルのしきい値シフト量をほぼ一定にできる。この実施形態では、プログラムパルス幅を一定に設定するから、プログラムパルスを発生させる制御回路等が簡単な構成により実現可能となる。
【００５８】
ただし、上記パルス幅ｔppを小さくし過ぎると、上記実施形態のような階段状のパルス列の最終パルスＰｎですべてのメモリセルのプログラムを終了できなくなる。その理由は、プログラムパルスの幅を狭くしてパルス印加回数を増やすと、プログラムパルス印加後に行うメモリセルのしきい値電圧を検証するためのベリファイ回数も同様に増加して、ベリファイに要する時間がプログラム時間の中で無視できなくなるからである。
【００５９】
この第１実施形態のように、階段状のパルス列の最終パルスＰｎですべてのメモリセルのプログラムを終了するのに必要なパルス幅ｔppは、その電圧(Ｖｇend)のみでプログラムするのに必要なプログラム時間ｔpgmの半分である。すなわち、
ｔpp＝ｔpgm／２            (式１)
次に、図４に、この実施形態の制御方法によって、プログラムパルスのパルス幅を決定するためのアルゴリズムを示す。
【００６０】
まず、ステップＳ１に示すように、予め、最も書き込み速度の遅いメモリセルに対して、ワード線に印加する最終プログラム電圧Ｖｇendを求め、ビット線電圧Ｖｄを求める。この最終プログラム電圧Ｖｇendは、例えば、メモリセルのトンネル酸化膜の耐圧と信頼性を考慮して設定する。次に、ステップＳ２に進み、最も書き込み速度の遅いメモリセルに対して、プログラム時間ｔpgmを求める。次に、ステップＳ３に進み、このプログラム時間ｔpgmの２分の１の時間(ｔpgm／２)を、パルス幅ｔppとする。そして、ステップＳ４で、最終パルス幅を上記パルス幅ｔppに設定する。
【００６１】
そして、この期間ｔppの間だけ、先の最終プログラム電圧Ｖｇendをワード線に印加し、このときの書き込み状態のメモリセルのしきい値分布幅(ベリファイしない状態のメモリセルのしきい値分布に相当)を求めておく。このしきい値の分布は、図３に符号Ａで示す状態に相当する。
【００６２】
このメモリセルのしきい値分布幅は、例えば、先述の読み出し動作のように、ワード線に所定の電圧を印加し、このワード線ヘの印加電圧を変えながらドレインとソース間に電流が流れるか否かを測定することで、求めることができる。
【００６３】
この実施形態の制御方法では、図４に示すアルゴリズムをまず実施し、プログラム対象とするメモリセル群のうち、最も書き込み速度の遅いメモリセルに対して、ワード線に印加する最終プログラム電圧Ｖｇendとプログラム時間ｔpgmを求めることから、書き込むべきメモリセルの書き込みを確実に行うことができる。
【００６４】
また、従来技術のように、最終プログラム電圧がメモリセルの耐圧により制限を受け、所定の書き込みができなかったり、プログラム時間が不必要に長くなることもない。
【００６５】
次に、図５,図６および図７に、この実施形態の制御方法によって、プログラムパルス電圧を決定するためのアルゴリズムを例示する。
【００６６】
まず、図５に示すフローチャートを参照しながら、この第１実施形態を具体的な数値を用いて説明する。ここでは、メモリセルの閾値が４Ｖ以上であるときに消去状態とし、メモリセルの閾値が２Ｖ以下であるときにプログラム状態とする。
【００６７】
まず、ステップＳ１１で、メモリセルの制御端子につながるワード線への印加電圧Ｖｇを−１２Ｖとし、ビット線(ドレイン)電圧としてＶｄ＝４Ｖを印加する。
【００６８】
このとき、メモリセルアレイ中で最も遅いメモリセルが時間ｔpgm＝２(ミリ秒)でプログラムを終了した場合、プログラムパルス幅ｔppを１ミリ秒に設定する。
【００６９】
次に、ステップＳ１２に進み、ベリファイを実施しない場合のメモリセルアレイ内の閾値分布幅ＶＴrangeを求める。ここでは、図３に符号Ａで示すように、この閾値分布幅ＶＴrangeを４Ｖとする。次に、ステップＳ１３に進み、ベリファイ後のメモリセルの目的とする閾値分布幅ＶＴrange-vを決める。ここでは、図３に符号Ｄで示すように、目的とする閾値分布幅ＶＴrange-vを０.５Ｖとする。
【００７０】
次に、ステップＳ１４に進み、プログラムパルスの増分Ｖｇstepを、−０.５Ｖ(−ＶＴrange-v)に設定する。
【００７１】
次に、ステップＳ１５に進み、プログラムパルス数Ｎpulseを、８(ＶＴrange/(Ｖｇstep)＝４÷０.５)に設定する。
【００７２】
次に、ステップＳ１６に進み、Ｖｇstart＝Ｖｇend＋(８−１)・(０.５)として、Ｖｇstartを求める。ここでは、Ｖｇendを−１２.０Ｖとしたので、Ｖｇstartは−８.５Ｖである。
【００７３】
すなわち、ステップＳ１７で、上記ワード線に印加するプログラムパルス電圧の開始電圧を、Ｖｇ(Ｐ1)＝−８.５Ｖとし、ステップＳ１８で、このプログラムパルス電圧の増分を−０.５Ｖに設定し、ステップＳ１９で、パルス数を８に設定する。
【００７４】
これにより、プログラムパルス電圧は、順に、Ｖｇ(Ｐ1)＝−８.５Ｖ，Ｖｇ(Ｐ2)＝−９.０Ｖ，Ｖｇ(Ｐ3)＝−９.５Ｖ，Ｖｇ(Ｐ4)＝−１０.０Ｖ，Ｖｇ(Ｐ5)＝−１０.５Ｖ，Ｖｇ(Ｐ6)＝−１１.０Ｖ，Ｖｇ(Ｐ7)＝−１１.５Ｖ，Ｖｇ(Ｐ8)＝−１２.０Ｖとなる。
【００７５】
そして、ドレイン電圧Ｖｄを４Ｖに設定し、パルス幅ｔppを１ミリ秒に設定する。
【００７６】
また、必要に応じて、このパルス列Ｐ1〜Ｐ8の前部に、パルスを追加してもよい。例えば、１パルスを追加する場合、図５のフローチャートに替えて、図６のフローチャートを採用する。この図６のフローチャートは、ステップＳ２５で、Ｎpulseを、(ＶＴrange/Ｖｇstep)よりも１だけ増やした点だけが、前述の図５のフローチャートと異なる。
【００７７】
したがって、この図５のフローチャートによれば、パルス数が(８＋１)＝９である。すなわち、ワード線に印加するプログラムパルス電圧は、順に、Ｖｇ(ＰA)＝−８.０Ｖ，Ｖｇ(Ｐ1)＝−８.５Ｖ，Ｖｇ(Ｐ2)＝−９.０Ｖ，Ｖｇ(Ｐ3)＝−９.５Ｖ，Ｖｇ(Ｐ4)＝−１０.０Ｖ，Ｖｇ(Ｐ5)＝−１０.５Ｖ，Ｖｇ(Ｐ6)＝−１１.０Ｖ，Ｖｇ(Ｐ7)＝−１１.５Ｖ，Ｖｇ(Ｐ8)＝−１２.０Ｖとなる。また、ドレイン電圧Ｖｄ＝４Ｖ，パルス幅ｔpp＝１ミリ秒となる。
【００７８】
さらにまた、イレース状態からのメモリセルの閾値分布のシフト量をできるだけ均一にしたければ、４パルス追加する。この場合、ワード線に印加するプログラムパルス電圧を、順に、Ｖｇ(ＰB1)＝−６.５Ｖ，Ｖｇ(ＰB2)＝−７.０Ｖ，Ｖｇ(ＰB3)＝−７.５Ｖ，Ｖｇ(ＰB4)＝−８.０Ｖ，Ｖｇ(Ｐ1)＝−８.５Ｖ，Ｖｇ(Ｐ2)＝−９.０Ｖ，Ｖｇ(Ｐ3)＝−９.５Ｖ，Ｖｇ(Ｐ4)＝−１０.０Ｖ，Ｖｇ(Ｐ5)＝−１０.５Ｖ，Ｖｇ(Ｐ6)＝−１１.０Ｖ，Ｖｇ(Ｐ7)＝−１１.５Ｖ，Ｖｇ(Ｐ8)＝−１２.０Ｖとする。また、ドレイン電圧Ｖｄ＝４Ｖ，パルス幅ｔpp＝１ミリ秒とする。
【００７９】
このように、追加パルスを採用した場合には、プログラムパルスをより低いプログラムパルス電圧から開始することとなるので、メモリセルのトンネル酸化膜に印加される電界をより緩和でき、メモリセルの信頼性を高めたい場合に有効である。
【００８０】
なお、前述のプログラムパルスの具体例で挙げた数値は、あくまでも一例であることは勿論である。
【００８１】
次に、図７に示すフローチャートを参照して、上記第１実施形態の不揮発性半導体メモリの制御方法において、プログラムパルス電圧を決定するための３例目のアルゴリズムを説明する。
【００８２】
このフローチャートでは、まず、ステップＳ３１で、ビット線電圧をＶｄとする。
【００８３】
次に、ステップＳ３２に進み、図３に符号Ｄで例示するような所望のプログラム状態と図３に符号Ｅで示すような所望の消去状態との間のメモリセルのしきい値差ＶＴinhibit(２Ｖ)を決める。図３では、上記所望のプログラム状態とは、しきい値電圧ＶＴがＶｐ(＝２Ｖ)以下の状態であり、所望の消去状態とは、しきい値電圧ＶＴがＶＥＬ(＝４Ｖ)以上の状態である。
【００８４】
その後は、図５および図６に示したフローチャートと同様に、ステップＳ３３において、ベリファイを実施しない時の閾値分布幅ＶＴrangeを求め、次いで、ステップＳ３４において、ベリファイ後の閾値分布幅ＶＴrange-Ｖを決定し、次に、ステップＳ３５において、プログラムパルス間の電圧増分Ｖｇstepを、(−ＶＴrange-Ｖ)に決める。
【００８５】
そして、ステップＳ３６に進み、プログラムパルスの数Ｎpulseは、
Ｎpulse＝(ＶＴrange＋ＶＴinhibit)／Ｖｇstep          …(式２)
で求める。これは、メモリセルのしきい値を、図３に示す消去状態のしきい値分布の上限ＶEH＝６Ｖから書き込み状態のしきい値分布の上限Ｖｐ＝２Ｖにすることに近似するが、実際のＶＴrangeは、図３のＥ状態のしきい値分布ではなくＡ状態でのしきい値分布である。
【００８６】
次に、ステップＳ３７に進み、図１に示す第１番目のプログラムパルスＰ1の電圧Ｖｇstartを、
Ｖｇstat＝Ｖｇend＋(Ｎpulse−１)・Ｖｇstep      …(式３)
とする。
【００８７】
次に、ステップＳ３８に進み、ワード線電圧の開始電圧を上記(Ｖｇstart)に設定する。次に、ステップＳ３９に進み、ワード線電圧の変化分(増分)を、上記Ｖｇstepに設定する。次に、ステップＳ４０に進み、プログラムパルスのパルス数を、上記Ｎpulseに設定する。
【００８８】
図５,図６,図７に示した上述の３つのフローを見ても分かるように、
▲１▼ ワード線への最終パルス電圧Ｖｇendと、所望の書き込み状態のしきい値分布幅ＶＴrange-Ｖを決め、
▲２▼ 最も書き込み特性の遅いメモリセルのプログラム時間ｔpgmおよびベリファイを行わない時での書き込み状態のしきい値分布幅ＶＴrangeを求める。
【００８９】
この▲１▼,▲２▼だけで、後は、パルス回数Ｎpulseやワード線への最初のパルス電圧Ｖｇstartを一義的に決めることができ、複雑な手順は不用である。
これら図５,図６,図７に示したフローを実施することで、書き込み状態のメモリセルのしきい値分布幅をプログラムパルス電圧の増加分Ｖｇstepで制御することができ、さらに、書き込み状態のしきい値分布幅を狭く設定できる。このことは、読み出し時の読み出しマージンの確保につながり、読み出し誤りの発生を抑えることができる。このことは、読み出しマージンが少なくなる多値しきい値の場合に、特に有効になる。
【００９０】
また、しきい値が２値の場合でも、メモリセルを低消費電力化するために、低電圧で駆動する場合には、読み出し誤りの発生を抑える効果を発揮できる。
【００９１】
〔第２の実施の形態〕
次に、図８に、この発明の不揮発性半導体メモリの制御方法の第２実施形態によるプログラムアルゴリズムのプログラムパルス列の波形を示す。このパルス列は、ワード線に印加する電圧波形を表わしており、図１０および図１１に示されたメモリセルに適合した一例である。したがって、ワード線電圧は負電圧になっている。また、図８に示す波形では、より詳細な説明のためにベリファイパルスＢＰも描かれている。
【００９２】
ベリファイを行ないながらプログラムを行なったときのメモリセルの閾値分布は、前述の通り、少なくとも上げ幅Ｖｇstepの大きさだけ幅を持つ。しかし、実際には、回路マージン、あるいは、メモリセルの特性のばらつきなどが原因で、この値(Ｖｇstep)よりも大きくなる問題がある。この第２実施形態によるプログラムアルゴリズムは、この問題を解決するものである。すなわち、プログラム時間をほとんど増加させることなく、上げ幅Ｖｇstepの大きさを小さくすることによって、メモリセルのしきい値分布幅を更に狭くすることができる。
【００９３】
本出願人によるシミュレーション実験によれば、プログラムパルス幅ｔ'ppとパルス間の変化分Ｖｇ'stepとの間の比は、プログラムパルスのパルス幅の総和ｔprgとベリファイしない場合のメモリセルの閾値分幅ＶＴrangeとの比にほぼ等しくなることを確認できた。すなわち、
[Ｖｇ'step]／ｔ'pp＝ＶＴrange／ｔprg                  …(式４)
である。なお、[Ｖｇ'step]は、Ｖｇ'stepの絶対値を表す。ところで、この発明の第１の実施形態も同様に、
[Ｖｇstep]／ｔpp＝ＶＴrange／ｔprg                    …(式５)
が成立する。[Ｖｇstep]は、Ｖｇstepの絶対値を表す。したがって、
[Ｖｇ'step]／ｔ'pp＝[Ｖｇstep]／ｔpp                    …(式６)
を満足すれば、最終パルスＰENDまででプログラムが終了する。ただし、最もプログラムの遅いメモリセルのプログラムを終了させるために、最終パルスに限っては広いパルス幅ｔpp(＞ｔ'pp)が必要に成る。しかし、プログラムパルスが実際に印加されている時間の総和ｔprgは、第１実施形態と変わることがなく一定である。
【００９４】
そこで、(式６)の条件を満足しつつ、Ｖｇ'stepの大きさをＶｇstepよりも小さく設定することで、(式４),(式５)を参照すれば分かるように、第１実施形態と同じプログラム時間ｔprgで、より狭いメモリセルの閾値分布幅を得ることができる。これにより、メモリセルアレイの各セルの閾値のばらつきを抑制でき、この閾値分布の制御性を向上でき、プログラム速度も向上できる。
【００９５】
〔第３の実施の形態〕
次に、図９に、この発明の第３実施形態の制御方法によるプログラムアルゴリズムのプログラムパルス列の模式図を示す。このプログラムパルス列は、前述の第２実施形態による図８のプログラムパルス列において、最終パルスＰENDを、Ｐe1,Ｐe2,…に分割したものである。この分割された最終パルス列Ｐe1,Ｐe2,…は、最終電圧(−Ｖｇend)であり、分割された各パルス幅の和は、ｔppに設定されている。この最終電圧(−Ｖｇend)における各パルスＰe1,Ｐe2,…のパルス幅は例えば、ｔ'ppに設定できる。ここで、(ｔ'pp＋ｔ'pp＋…＋ｔ'pp)＝ｔpp である。この第３実施形態によるプログラムアルゴリズムによれば、メモリセルの閾値分布を、第２実施形態に比べてさらに狭く制御できる。
【００９６】
また、この第３実施形態によれば、プログラムパルス列全体にわたってパルス幅ｔ'ppが一定であるので、プログラムパルスを発生させる制御回路等を簡単な構成にすることができる。しかも、最初のパルスから最後のパルスまで、短いパルス幅ｔ'ppでメモリセルのしきい値のシフト量を制御するので、メモリセルのしきい値分布幅を、第２実施形態よりもさらに狭く制御することができる。
【００９７】
ところで、上記第２実施形態および第３実施形態では、プログラムパルス幅ｔ'ppを細かく設定し過ぎると、ベリファイ動作に要する時間が大きくなることに起因して、実際のプログラム時間が延びるという問題が生じる。しかし、ベリファイに要する時間がプログラムパルス幅ｔ'ppに比べて十分に短ければ、この実際のプログラム時間の増加分は問題にならない。
【００９８】
なお、上記第２,第３の実施形態においても、第１実施形態と同様に、プログラムパルス列の前部に、必要に応じて適当なパルスを追加することによって、プログラム時にメモリセルのトンネル酸化膜に印加される電界を緩和でき、メモリセルの信頼性を向上できる。
【００９９】
【発明の効果】
以上より明らかなように、この発明の不揮発性半導体メモリの制御方法は、漸次電圧の大きさが増加する複数のプログラムパルスをメモリセルの制御端子に入力し、最大電圧時のプログラムパルス(最終プログラムパルス)のパルス幅の合計を、その最大電圧のみでメモリセルをプログラムするのに必要な時間の２分の１以上にする。これにより、メモリセルアレイの各セルの閾値のばらつきを抑制でき、この閾値分布の制御性を向上でき、プログラム速度も向上できることを実験で確認できた。
【０１００】
また、一実施形態の不揮発性半導体メモリの制御方法は、プログラムパルスの電圧の大きさの上げ幅とプログラムパルス幅との比を所定値(閾値分布幅とプログラム所要時間との比)に保つ。これにより、プログラム時間を不必要に増加させることなく、メモリセルの閾値のシフト量を可能な範囲で自由に制御でき、したがって、メモリセルのプログラム時の閾値の分布幅を可能な範囲で自由に制御できる。
【０１０１】
また、他の実施形態の不揮発性半導体メモリの制御方法において、上記パルス列とその前の追加プログラムパルスでもって、メモリセルをプログラムするので、このプログラム時にメモリセルのトンネル酸化膜に印加される電界を緩和することができ、メモリセルの信頼性を向上できる。
【０１０２】
また、一実施形態の不揮発性半導体メモリの制御方法は、上記追加プログラムパルスのパルス幅に対する上記追加プログラムパルスのプログラム電圧の絶対値の上げ幅の比を、上記パルス列のパルス幅に対する上記パルス列のプログラムパルス毎のプログラム電圧の絶対値の上げ幅の比に等しくする。この実施形態では、追加プログラムパルスのパルス幅に対する上げ幅の比を、パルス列のパルス幅に対する上げ幅の比に等しくするから、追加プログラムパルスを存在させても、プログラム時間の増加を最小限に抑制できる。
【０１０３】
また、他の実施形態は、プログラムパルスの電圧の大きさの上げ幅とプログラムパルス幅との比を、所定値((閾値分布幅＋遷移状態の閾値幅)：プログラム所要時間)に保つ。これにより、プログラム時間を不必要に増加させることなく、メモリセルの閾値のシフト量を可能な範囲で自由に制御でき、したがって、メモリセルのプログラム時の閾値の分布幅を可能な範囲で自由に制御できる。
【０１０４】
また、一実施形態の不揮発性半導体メモリの制御方法は、上記パルス列の各プログラムパルスのパルス幅を等しくするので、パルス発生回路の構成を簡単にすることができる。
【０１０５】
また、他の実施形態の不揮発性半導体メモリの制御方法は、上記パルス列の各プログラムパルスのパルス幅を等しくするので、パルス発生回路の構成を簡単にできる。
【０１０６】
この発明に係るアルゴリズムにより浮遊ゲートを有する不揮発性半導体メモリのメモリセルをプログラムすることによって、プログラム時間を増大させることなく、メモリセルの閾値分布をある範囲で自由に制御できることができる。この発明は２値のみならず多値の浮遊ゲートを有する不揮発性半導体メモリのメモリセルをプログラムする時にも有効である。
【図面の簡単な説明】
【図１】  この発明の不揮発性半導体メモリの制御方法の第１実施形態によるプログラムアルゴリズムのプログラムパルス列の模式図である。
【図２】  図２(Ａ)は、メモリセルアレイのうちで最も遅いメモリセルをプログラムするのに必要なプログラムパルス波形の一例であり、図２(Ｂ)はプログラムパルスのパルス幅を横軸に、閾値電圧を縦軸に取り、最も遅いメモリセルの閾値曲線を描いた特性図である。
【図３】  消去状態における閾値分布からプログラム状態における閾値分布へ移行する様子を示すベリファイ動作の説明図である。
【図４】  この発明の第１実施形態によって、パルス幅を決定するためのプログラムアルゴリズムを表すフローチャートである。
【図５】  上記第１実施形態によってプログラムパルスの電圧を決定するための１例目のプログラムアルゴリズムを表すフローチャートである。
【図６】  上記第１実施形態によってプログラムパルスの電圧を決定するための２例目のプログラムアルゴリズムを表すフローチャートである。
【図７】  上記第１実施形態によってプログラムパルスの電圧を決定するための３例目のプログラムアルゴリズムを表すフローチャートである。
【図８】  この発明の第２の実施形態によるプログラムアルゴリズムのプログラムパルス列の模式図である。
【図９】  この発明の第３の実施形態によるプログラムアルゴリズムのプログラムパルス列の模式図である。
【図１０】  この発明に関連する浮遊ゲートを有する不揮発性半導体メモリの一例としてのメモリセルの断面構成略図である。
【図１１】  この発明に関連する浮遊ゲートを有する不揮発性半導体メモリのメモリセルアレイを部分的に示し、書き込みデータの一例を部分的に示す模式図である。
【図１２】  図１２(Ａ)は、従来のプログラムパルス列の第１例を示す波形図であり、図１２(Ｂ)は、従来のプログラムパルス列の第２例を示す波形図である。
【図１３】  図１３(Ａ)は従来のプログラムパルス列の第３例を示す波形図であり、図１３(Ｂ)は従来のプログラムパルス列の第４例を示す波形図であり、図１３(Ｃ)は従来のプログラムパルス列の第５例を示す波形図であり、図１３(Ｄ)は従来のプログラムパルス列の第５例を示す波形図である。
【符号の説明】
１…制御端子、２…浮遊ゲート、３…ドレイン、４…ソース、５…基板、
６…トンネル酸化膜。
【図１】
0003790654.tif 000002
【図２】
0003790654.tif 000003
【図３】
0003790654.tif 000004
【図４】
0003790654.tif 000005
【図５】
0003790654.tif 000006
【図６】
0003790654.tif 000007
【図７】
0003790654.tif 000008
【図８】
0003790654.tif 000009
【図９】
0003790654.tif 000010
【図１０】
0003790654.tif 000011
【図１１】
0003790654.tif 000012
【図１２】
0003790654.tif 000013
【図１３】
0003790654.tif 000014