(57)【特許請求の範囲】
【請求項１】
ゲート端子（ＣＧ）を有する不揮発性メモリセルをプログラムする方法であって、
前記方法は、一組のプログラミングパルスを印加する工程を含み、
各プログラミングパルスにおいて、前記ゲート端子には、以前のプログラミングパルスに対して値が増加されたゲート電圧が印加され、
前記印加する工程は、検証工程に追従する検証なしで、複数（Ｂｉ）の連続したプログラミングパルスを周期的に印加することを含み、
前記複数の連続したプログラミングパルスは、前記不揮発性メモリセルを現在のプログラミングレベルから次のプログラミングレベルにするのに必要な公称数（Ｎ）のパルスに等しい、方法。
【請求項２】
各プログラミングパルスにおいて、前記ゲート電圧が以前のプログラミングレベルに対して一定の増加（ΔＶＧＰ）を示す、請求項１に記載の方法。
【請求項３】
現在のプログラミングレベルｉと次のプログラミングレベルｉ＋１との間に、整数ではないが前記一定の増加の倍数（Ｃｉ）に等しい閾値電圧差（ΔＶＤＩＳＴｉ）が存在し、
前記プログラミングパルスの数（Ｂｉ）は、前記倍数を切捨てることにより得られる整数値に等しい、請求項２に記載の方法。
【請求項４】
前記現在のプログラミングレベルｉと次のプログラミングレベルｉ＋１との間の閾値電圧差（ΔＶＤＩＳＴｉ）は、ｉの関数である、請求項３に記載の方法。
【請求項５】
前記印加する工程は、第１のプログラミングレベルで消去状態から始まる第１のプログラミング工程をさらに含み、
前記第１のプログラミング工程は、複数の工程を含み、前記複数の工程のそれぞれは、プログラミング工程と検証工程とを含み、
プログラムされるべき全てのセルに対して、前記第１のプログラミングレベルに相当する閾値電圧となるまで前記第１のプログラミング工程が実行され、
その後、前記第１のプログラミングレベルより上のレベルでプログラムされるべき全てのセルに対して、検証工程に追従する検証なしで複数（Ｂｉ）の連続したプログラミングパルスを周期的に印加することが行われる、請求項１〜４のいずれか一項に記載の方法。
【請求項６】
複数のメモリセルを並列にプログラムする工程を有することを特徴とする請求項１〜５のいずれか一項に記載の方法。
【請求項７】
現在のプログラミングレベルと次のプログラミングレベルとの間に含まれる第１の公称数（Ｎｉ，Ｃｉ）のプログラミングパルスを検出する工程（１０５，１０５’）と、
前記第１の公称数（Ｎｉ，Ｃｉ）のプログラミングパルスのバイアス時に印加されるべきプログラミングパルスの数（Ｂｉ）を計算する工程（１０６，１０６’，１３２〜１３５）と、
検証することなしに印加されるべき複数（Ｂｉ）のプログラミングパルスを供給する工程（１０８）と、
検証工程を実行する工程（１１０）と、
少なくとも一つのセルが所望の閾値に達するまで、プログラミングパルスを供給する工程と検証工程を実行する工程とを繰り返す工程と、
全てのセルが所望の閾値に達するまで、プログラミングパルスを供給する工程と検証工程を実行する工程とを繰り返す工程と
を反復することを特徴とする請求項１〜６のいずれか一項に記載の方法。
【請求項８】
最大プログラミングレベルまで前記工程の反復を繰り返すことを特徴とする請求項７に記載の方法。
【請求項９】
印加されるべき複数（Ｂｉ）のプログラミングパルスが前記公称数（Ｎｉ）のプログラミングパルスに等しいことを特徴とする請求項７または８に記載の方法。
【請求項１０】
前記繰り返す工程が、前記所望の閾値に達している前記次のプログラミングレベル時にプログラムされるべきセルへのプログラミングパルスの供給を停止する工程（１１５）をさらに含むことを特徴とする請求項７〜９のいずれか一項に記載の方法。
【請求項１１】
前記計算する工程が、
前記次のプログラミングレベル時にプログラムされるべきセルが存在するかどうかを検査する工程（１３２）と、
プログラムされるべきセルが存在する場合に、前記印加されるべきプログラミングパルスの数（Ｂｉ）を、前記プログラミングパルスの第１の公称数（Ｃｉ）を切捨てることで得られた整数値に等しくなるように設定する工程（１０６’）と、
プログラムされるべきセルが存在しない場合に、現在のレベルインデックスを増大し（１３３）、前記現在のプログラミングレベルと前記現在のプログラミングレベルに続くプログラミングレベルとの間に含まれるプログラミングパルスの第２の公称数（Ｃｉ）を計算し（１３４）、前記プログラミングパルスの第１、第２の公称数を合計（１３５）する工程と、
前記次のプログラミングレベル時にプログラムされるべきセルが存在するかどうかを検査する前記工程と、現在のレベルインデックスを増大する工程と、プログラミングパルスの第２の公称数（Ｃｉ）を計算する工程と、前記次のプログラミングレベル時にプログラムされるべき少なくとも一つのセルが存在することを検証するまで合計する工程とを繰り返す工程と、
前記印加されるべきプログラミングパルスの数（Ｂｉ）を、前記プログラミングパルス第２の公称数（Ｃｉ）を切捨てることで得られた整数値に等しくなるように設定する工程（１０６’）と
を備えていることを特徴とする請求項７に記載の方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ゲート電圧の制御よるマルチレベル不揮発性メモリのプログラミング方法に関するものである。本発明は特に、セルの閾値電圧の変更、すなわちフローティングゲート領域に記憶された電荷量の変更によりセルプログラミングが実行されるフローティングゲートセルからなる不揮発性メモリ（ＥＰＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ）に関するものである。しかしながら、本発明は、異なる形式のメモリセル（例えばＭＮＯＳ、すなわち金属−窒化物−酸化物−半導体技術セル）にも適用することができる。
【０００２】
【従来の技術】
一層良く理解するために、図１においてドレイン端子Ｄ、ソース端子Ｓ、制御ゲート端子ＣＧ（以下ゲート端子と記載する）及びボディ端子Ｂを備えた典型的なフローティングゲートメモリセルとの電気的な関係を図で示す。図１にはさらに、フローティングゲート領域ＦＧを示している。図面においては異なるメモリセルの記号すなわちいわゆる“分割ゲータ”を示している。
【０００３】
一般に、データ記憶密度を高め、従って物理的メモリアレイサイズを減少するために、マルチレベルプログラミング技術が研究されてきており、各メモリセルの閾値電圧は、ｍ個の所定のレベルのうち一のレベルにプログラミングすることができる。ｍ＝２nの場合、メモリセルはｎ＝ｌｏｇ2ｍに等しい多数の情報ビットを記憶でき、二つのレベルだけ（“高い”レベル及び“低い”レベル）をプログラミングでき、その結果単位セル当たり単一ビット（ｍ＝２及びその結果ｎ＝１）を記憶する従来の２レベルメモリに対し密度において明らかに有利である。
【０００４】
プログラム可能な閾値レベルは、読取り時にエラーなしで認識できるようにするために、一定の相互距離に配置されなければならない。さらに、閾値電圧は正確に所望の値ではプログラミングされず、４−レベルプログラム可能なセルに関して図２ａと図２ｂとの比較によって示されるように、各レベルでは実際にある一定の閾値電圧間隔に相応している。図２ａは理想的な例を示し、そこでは４つの閾値電圧レベルの各々の正確なプログラミングが得られると考えられ、一方、図２ｂはより現実的な場合を示し、各論理値はある一定の閾値電圧間隔に相応している。図２ａはまた、異なる閾値電圧値とプログラムされたレベル（それぞれ０，１，２，３）との間の限定しない例示として割当てられた対応関係を示している。
【０００５】
各プログラム可能なレベルに相応する閾値電圧の間隔は十分に減少されなければならず、それによりセルに記憶されたデータを安全に維持し認識することを保証するような相互距離に配置することができ、しかも過度に広いグローバルな間隔を用いることなく全て所望の論理レベルを割当てることができる。事実、実際の理由と信頼性の理由とで決められたこの全体的な間隔について下方限界と上方限界との両方が存在する。種々の記憶レベルに相応する閾値電圧間隔間の最適距離を計算するために、読取りプログラミング回路の不正確さ及び環境条件の変動、記憶電荷の縮退時間、並びに読取り及びプログラミングノイズのような影響は、当業者に知られるように、望ましくない記憶電荷変動をもたらすので考慮されなければならない。
【０００６】
適切なセルプログラミングを得るために、一般にマルチレベル・セル・プログラミングは“プログラム及び検証（ベリファイ）”として定義される技術により実行される。この技術により、プログラミング操作は連続したプログラミングパルスにより実行され、そして各プログラミングパルスを加えた後、プログラムしたセル閾値電圧が、図３に概略的に示されるように、それぞれの所望値に達したかどうかが検証され、あるセルが所望の閾値レベルに到達すると、そのセルはプログラミングパルスをさらに受けることはない。検証は、並列にプログラムされる一群のセル（一以上のワード）における全てのセルに対して同時に実行され、そして任意の所望のプログラミングレベルについて、それはセル閾値電圧を予め設定した基準値Ｖref,iと直接又は間接に比較することにある。プログラミング及び検証操作は、グループ内の全てのセルがそれぞれ所望のレベルでプログラムされるまで続く。
【０００７】
一定時間長の一組のプログラミングパルスが不揮発性メモリセルに加えられると、ドレイン端子電圧は一定に保持され、ゲート端子電圧は各パルスで一定の値ΔＶGP（ステップゲート電圧）分増大され、最初の遷移ステップの後（一般には最初のパルス中にゲート端子に適切な電圧が供給される場合には数パルスの後）、セル閾値電圧は各パルスについてΔＶGPに等しいΔＶTH分増加することが立証されてきた（例えば、文献Procedings of Internal Conference on Electronic Circuits and Systems Rhodes, Greece, pp.1003-1008 中のC. Calligaro, A. Manstretta, A. Modelli, G. Torelli 著“Technological and design constraints for multilevel flash memories”参照）。従って、最初の遷移ステップの後、関係式、
ΔＶTH＝ΔＶGP  （１）
が得られる。
【０００８】
この関係式は、プログラミングパルスがプロセス及びセルの形式に依存しかつ一般的なセルの場合に数百ｎｓ〜１μｓの範囲に含まれ得る最小値より大きな時間長をもつ場合に有効である。
【０００９】
関係式（１）は任意のセルについて有効であるが、最後のプログラミングパルス中にセルゲート端子に印加された電圧値とそのようなパルスの終了時にセルの到達した閾値電圧値ΔＶTHとの関係は特定のセルの場合には先駆的には決めることができない。言い換えれば、関係式（１）は、絶対値ではなく各プログラミングパルスにおける閾値電圧増加を示している。このような絶対値は事実、製造プロセスに関連した種々のファクタに依存する（例えばホットチャンネル電子注入によるプログラム可能なセルの場合、第１に有効セルチャンネル長さに依存する）。
【００１０】
これは、図４に概略的に示され、各プログラミングパルスＮを印加した後の閾値電圧を座標に沿って表し（横座標に沿って示し）、そしてそれによって得られた点を結ぶことによって得られた三つの異なるセルについての閾値電圧ＶTHの反応を示す（特に曲線Ａ，Ｂ，Ｃは、それぞれチャネル長が増大したセルに関する）。最初の初期ステップの後、認められ得るように、閾値電圧は三本の相互に平行な直線に沿って各プログラミングパルスにおいて増加ΔＶGPで線形的に増加する。実際には、上記関係式（１）から三本の直線のうちのどれにおいて特定のセルの閾値電圧がプログラミング中に動くかを知ることはできず、その結果、各パルスの後に到達した絶対閾値電圧値ＶTHを計算することはできない。
【００１１】
このような原理をプログラミング及び検証技法に適用することにより、メモリセルは、一定の長さと、一定のドレイン電圧と、二つの後続のパルス間のΔＶGPに等しく一定に増加する漸増ゲート電圧とを有するプログラミングパルスを印加することによりプログラムされる。その結果、図５に示すようなゲート端子電圧が得られる。理想的条件のもとでは、この技法は、プログラムしたレベルに相応する間隔の幅（以下プログラムレベル幅と記載する）はΔＶGPに等しい。実際、プログラミング中に所望のプログラミングレベル（ｉ番目のレベル）に相応する閾値電圧に到達し、そして検証操作中の比較基準レベルがＶref,iに等しいパルスの前のｉ−１番目のプログラミングパルスはＶref.iより低くしかもこれの次の閾値電圧を決め、ｉ番目のプログラミングパルスが供給されると、閾値電圧は前の値にΔＶGPを加えた値に等しくなり、Ｖref,i＋ΔＶGPより大きくない。実際に、レベルＶTH,iにおけるプログラムセル対する閾値電圧は、０とΔＶGPとの間に含まれる量だけ基準値Ｖref,iより大きい。
【００１２】
その結果、例えば検証中の読取り回路の不正確さのようなプログラムレベルを広げさせる他の影響があるが、一般に、セルゲート端子に加えられるプログラミング電圧の増分ΔＶGPの減少はプログラミングレベルの幅の減少をもたらし、上記のように予め決められた間隔内でレベル自体を良好に割当てることができる。
【００１３】
【発明が解決しようとする課題】
他方、増分ΔＶGPの減少は、予定の初期値から始まって予め設定した最終閾値電圧に達するのに必要なプログラミング及び検証パルスの数を対応させて増加する必要がある。
【００１４】
プログラミングパルス及び検証パルスの数の増加は、予め設定した閾値レベルでメモリセルをプログラムするのに要する全体時間を増大させる。事実、完全なプログラミング工程及び検証工程に必要な時間は、上記の短時間プログラミングパルス（１μｓ以下）の全ての場合に単一のプログラミングパルスに対する時間より大きい。事実、各プログラミングパルスと次の検証操作工程との間において、プログラミング回路を非活性化し、集積回路内の読取り回路を付勢し、そしてある一定の長さの時間を必要とする精度の十分な所望値に到達するようにセルに加えるべき読取り電圧を待つ必要がある。さらに、バイアス電圧に必要な精度は隣接プログラムレベルに相応する閾値電圧間の距離の減少と共に増加する（セル電流は読取り時及び従って検証操作時に、ドレイン及びゲート端子に加えられる電圧の値に正確に依存する）。
【００１５】
同様に、検証工程の後にプログラミング工程が続く場合、読取り回路を非活性化し、そしてさらに時間の損失を伴ってプログラミング回路を付勢する必要がある。従って完全なプログラミング工程及び検証工程の時間はＴGP（１＋η）に等しく、ここでＴGPはプログラミングパルスの長さであり、ηは０より大きく、通常１台であり得る。
【００１６】
従って、特殊な要求に関連して、プログラムレベルの正確さ（増分ΔＶGPが小さく、従って完全なプログラミング及び検証工程の数が多い）と全体操作速度との間の妥協の選択を行う必要がある。
【００１７】
従って、本発明の目的は、同じ数のプログラミングパルスで完全なプログラミング操作を実行するのに必要な全体時間を最少化し、正確さと全体プログラミング時間との妥協を改善できるプログラミング方法を提供することにある。
【００１８】
【課題を解決するための手段】
本発明によれば、一組のプログラミングパルスを印加する工程を備え、各プログラミングパルスにおいてゲート端子に前プログラミングパルスより値の大きいゲート電圧を印加し、検証工程に追従する検証なしで複数の連続したプログラミングパルスを周期的に印加することを特徴とする不揮発性メモリセルのプログラミング方法が提供される。
【００１９】
【発明の実施の形態】
本発明をさらに良く理解するために、以下単に本発明を限定しない例として、添付図面を参照して本発明の幾つかの好ましい実施の形態について説明する。
【００２０】
全体のプログラミング時間を減少しそして十分に正確なプログラムレベルを得る課題を解決するために、二つの続くレベルの公称値間の間隔は多数の間隔に分割され、これらの間隔の幅は、プログラミング中に印加されたゲート電圧増加に、この増加より小さい幅の間隔を加えたものに等しい。レベル間の間隔が一定であるか又は加えられたゲート電圧増分ΔＶGPの正確な整数倍であることは強制的ではない。そしてプログラミングは、中間で検証工程を実行することなしに、多数の予め設定した増分に等しい多数のプログラミングパルスを印加することにより実施され、また到達した閾値電圧の検証は、おそらく、到達した閾値電圧がプログラミングされるセルの少なくも一つに対して考察したレベルに対する所望の最少閾値電圧に等しいか又はそれより僅かに高い時に、多数のプログラミング工程が実行された後にのみ実行される。慎重には、検証操作は、提供されたプログラミングレベルに相応する達成されるべき所望の閾値電圧の直前のものであると考えられるプログラミングパルスの後に実施することができる。
【００２１】
実際には、プログラムレベル形態及び増分値ΔＶGPは、ΔＶGPの増分によるレベルの拡張はレベルの公称値間の距離より非常に小さい。例えば、一つのプログラミングレベルから別のプログラミングレベルへ移るのに、７つのプログラミング工程が実行される。このような形態は、既存の不正確な条件を考慮するように隣接したプログラム可能なレベル間に適切な分離ギャップを割当てるために高いプログラムレベル精度が望まれる、単位セル当たり複数のプログラム可能なレベルをもつメモリの場合に有利に使用される。
【００２２】
このような形態は図６に示され、続くレベルの公称値間の距離はΔＶDISTで表され、レベルの幅はΔＶGPで表される。図６において、容易に理解するため（しかし本発明を限定するようにではなく）、異なるレベルの公称値間には常に同じ距離ΔＶDISTが存在する。ΔＶGPの関数としての項ΔＶDISTは、
ΔＶDIST＝ＣΔＶGP＝（Ｎ＋α）ΔＶGP    （２）
ここで、Ｃ＝ΔＶDIST／ΔＶGP、ＮはＣを打切ることにより得られた整数値であり、またαは０≦α＜１の結果としての十進値に等しく、続くレベル間の距離がプログラミング工程の正確な倍数である場合にのみ、０に等しい。例えば、ΔＶDIST＝１ＶでΔＶGP＝０．１４Ｖである場合には、α＝０．０２である。
【００２３】
レベルｉからレベルｉ＋１へメモリセルをプログラムするために、式（２）に従ってΔＶTHとΔＶGPとの間の直線関係が有効である特性領域にすでにあると仮定すると、ｉ番目のレベルに関する前に到達した有効電圧がＶｍ、１＋αΔＶGPより大きいか小さいかに関連するＮ個又はＮ＋１個のプログラミングパルスを加える必要があり、Ｖm,1はｉ番目のレベルの最大値（すなわち理想的に基準レベル値Ｖref,i）である。特に、上記の考察した例では、レベル“１”の到達閾値電圧が公称値１Ｖに等しいとすると、Ｖm,1＝１Ｖ、Ｖm,2＝２Ｖ、Ｖm,3＝３Ｖである場合、レベル“１”からレベル  “２”へ移るのに、Ｎ＋１＝８個のパルスが必要であり、その後、有効到達閾値電圧は２．１２Ｖとなり、またレベル“２”のこの値からレベル“３”へ移るのには７個のパルスが必要であり、そして到達する有効閾値電圧は３．１Ｖに等しくなる。
【００２４】
その結果、レベルｉからレベルｉ＋１へのセルの閾値を得るために、各パルスの後いかなる検証も実施することなしに、増分ΔＶGPで増大するゲート電圧によりＮ−１個のプログラミングパルスが加えられるが、これではセルがまだレベルｉ＋１番目に達し得ていない。そこでゲート電圧増分ΔＶGPをもつ別のパルス（Ｎ番目）が加えられ、検証操作が実行される。閾値電圧がまだ到達してない場合には、厳格には必要でないにしても閾値電圧がすでにレベルｉ＋１番目に到達してなければならないので、設けられた増加をもってさらに増加したゲート電圧をもつさらに別のパルス（Ｎ＋１番目）が加えられ、そして結果的に、別の検証工程が続いて行われる。
【００２５】
このような構成は図７に例として示され、Ｎが４であり、検証工程が直ちに正の結果をもたらすものとして、本発明によるセルのプログラミング中のゲート電圧が示されている。図７は図５と比較されなければならず、本発明によりいかに同じ全体時間を有するより多くの数のプログラミングパルスを加えることができるかが示されている。
【００２６】
このようにして、各プログラミング工程について検証工程を実行する公知の解決方法に対して、高い時間的利点が得られる。事実、一つのプログラム値から次のプログラム値へ移るのにＮ個のプログラミング工程が要求される場合には、公知の解決法ではＮ（１＋η）ＴGPに等しい時間が必要であるが、本発明の方法では（Ｎ＋η）ＴGPに等しい時間が必要であり、（Ｎ−１）ηＴGPに等しい時間の節約が得られる。代わりにＮ＋１個のプログラミング工程が必要な場合には、必要な時間は各レベルについての最終プログラミング工程に続いて検証工程が行われるかどうかに関連して（Ｎ＋１＋２η）ＴGP又は（Ｎ＋１＋η）ＴGPに等しく、それぞれ（Ｎ−１）ηＴGP又はＮηＴGPに等しい時間節約が得られる。
【００２７】
セル閾値電圧がレベルｉからレベルｉ＋ｊ（ｊ＞１）へ移らなければならない場合、単一の中間レベルに達する毎に検証することによりレベルｉ＋ｊに達するまで次のレベルｉ＋１、ｉ＋２、・・・についてセルをプログラムし、又はＺ−１（Ｚは数ｊ（Ｎ＋α）を打切ることにより得られた整数である）個のパルスを加え、そして完全なプログラミング及び検証工程を実行することができ、またセルがまだ所望のレベルに達していないと、（前に説明してきたものと同様に最終検証を伴って又は伴わずに）最後のプログラミングパルスを加えることができる。
【００２８】
消去レベルから始まって最初のプログラムレベル（レベル１）に達するためには、関係式（１）が有効である閾値が未知であり、すなわち図４に示す直線のうちどれにおいて伴うセルが動いているのかが未知であるので、先駆的に未知である多数のプログラミングをセルに供給する必要がある。従って、レベル１に相応する閾値電圧に達するまで各プログラミング工程後に検証工程を実行する必要があり、その後、上記の解決方法に従うことができる（線形関係式（１）が有効である領域においてセルがすでに動作している時にレベル１１に達するようにプログラミング条件が決められている場合）。
【００２９】
最小閾値状態（すなわち消去状態）から始めて一群のセル（例えば、同じアレイ線に属する８又は１６）において並列にプログラミングが実行される場合には、最小閾値レベルから異なるレベルでプログラムされなければならないセルに上記したようにして同時にプログラミングパルスが加えられる。セルが所望のプログラミングレベルに達すると、それ以上のプログラミングパルスを受けず（そのような中断は、例えばドレイン端子に接続した関連ビット線がプログラミング電圧でそれ以上バイアスされない、といった公知の方法で得られる）、そしてプログラミングは他のセルについて、提供されたレベルで全てプログラムされるまで行われる。明らかに、消去状態になければならないセルにはプログラミングパルスは加えられない。
【００３０】
同じ線に属するプログラムすべきセルの場合、これらのセルは良好な物理的な整合レベルを示し、それにより一般には関係式（１）が有効となる閾値電圧値は同じであり、上記の方法を適用するのに問題はない。
【００３１】
実際には、セルの少なくとも一つの閾値電圧が第１のレベルに相応した値に達するまで、プログラムされなければならないセルには、各々検証工程が後に続く一組のプログラミングパルスが供給される。プログラムすべき全てのセルがレベル“１”に相応する閾値電圧となるまで、各々検証工程が後に続く多数（Ａ1）のプログラミングパルスが供給される（Ａ1は先駆的に決められ得ない）。明らかに、レベル“１”でプログラムされなければならないセルは、それらの閾値電圧が所望値に達した後は、プログラミングパルスを受けない。
【００３２】
その後、１より上のレベルでプログラムされなければならない全てのセルは、検証なしにＮ−（１＋Ａ1）＝Ｎ−１−Ａ1個のパルスを受ける（事実、これらのパルスの後にレベル２でセルはプログラムされない）。そして、少なくとも一つのセルの閾値電圧が第２のレベルに達するまで各々検証工程が後に続く別のパルスが供給され、その後、少なくとも第２のレベルでプログラムされるべき全てのセルの閾値電圧が所望の値に達するまで、検証が後に続く他のＡ2個のプログラミングパルスが供給される。
【００３３】
この手順が繰り返され、レベルｉ＋１に達するように、Ｎ−Ａi−１個のプログラミングパルスが検証なしに各時に加えられ、そして少なくとも一つのセルがレベルｉ＋１番目に達するまで検証を伴う適切な数のプログラミングパルスが続き、そして少なくともレベルｉ＋１でプログラムすべき全てのセルがこのレベルに達するまで検証を伴うＡi＋１個のプログラミングパルスが続き、そして提供したレベルで全てセルがプログラムされるまで続く。
【００３４】
このようにして、全てのプログラミングパルスに続いて検証工程が続く解決方法に関し、各レベルに対してＮ−１−Ａi個の検証工程が節約される。その結果、全体的に節約時間は以下に等しい。
0004469475.tif 000002
【００３５】
プログラムすべき隣接レベルΔＶDIST間の距離が一定でない場合に、その操作は上述したように、印加すべきパルスの数を提供する式（Ｎi−Ａi−１）に挿入されるＮi値が一定ではなくレベルに従って変化するという事実とは明確に異なる。
【００３６】
本発明によるプログラミング方法について、以下、可能な実施のフローチャートを示す図８により詳細に説明する。以下の説明において、プログラミングは電気的にプログラムされる不揮発性メモリにおいて、通常行われるように最初に消去したグループのセルにおいて行われると仮定する。
【００３７】
最初に、検証工程がブロック１００で実行され、そしてプログラムすべきレベルに関連するレベルカウンタｉは、プログラミングパルスに対するパルスカウンタＫ１と共にゼロに設定される（ブロック１０２）。
【００３８】
そして、ｉ番目より大きなレベルでプログラムすべきセルが存在するかどうか検証される（条件“ＡＮＹ＞ｉ”ブロック１０３）。結果がノーである場合には、プログラミング手順は終了し、結果がイエスである（ブロック１０３からの出力がイエスである）場合には、レベルカウンタｉはブロック１０４で増大され、レベルｉ−１からレベルｉへセルをプログラムするのに理論的に必要であるプログラミングパルスの数Ｎｉはブロック１０５で決められる。好ましくは、記憶テーブルからＮｉを読取ることにより検出が行なわれ、上記で説明したように各プログラミングパルスの後に検証操作を行うためにｉ＝１の場合、Ｎｉは１に等しい。
【００３９】
その後、ブロック１０６においてＢｉ（連続して加えられることになるパルスの数）はＮｉに等しく設定される。
【００４０】
そして、ブロック１２０において、プログラムされてはならない一又は複数のセルにプログラミングパルスを加えることは停止され、ブロック１０７においてパルスカウンタｋは増大され、ブロック１０８において、上記のようにして、ゲート電圧ＶGPに対し第１のプログラミングパルス（ｊ＝１）での始動値から始まりそして前工程に対しΔＶGP分だけ各工程で増大するプログラミングパルスが加えられ、そしてブロック１０９でＮｉ個のプログラミングパルスがすでに加えられているかどうかが検証され、ノーの場合、出力はＮＯであり、パルスカウンタｋは再び増加され、ブロック１０７に戻り、そして上記したように処理し、イエスの場合（ｉ＝１の場合に第１のプログラミングパルスが加えられた直後にブロック１０９から出力ＹＥＳが生じる）には、ブロック１１０で検証工程が実行される。そして、ブロック１１１において少なくとも一つのセルの閾値電圧が条件“ＯＮＥｉ”＝１に相応するレベルｉ番目に達したかどうかが検証され、ノーの場合にはブロック１１２において新しいプログラミングパルスが加えられ、イエスの場合（ブロック１１１から出力ＹＥＳが生じる）には、ブロック１１３でパルスカウンタｋはリセットされ、そしてブロック１１４においてレベル≧ｉでプログラムすべき全てのセルの閾値電圧が条件“ＡＬＬｉ”＝１の検証に相応したレベルｉ番目に相応する値に達したかどうかが検証される。
【００４１】
結果がイエスの場合（ブロック１１４から出力ＹＥＳが生じる）には、ブロック１０３に戻り、プログラムすべき全てのセルのプログラミングが終了されるかどうかを検証し、結果がノー（出力ＮＯ）の場合、ブロック１１５において、レベルｉ番目でプログラムされなければならない一または複数のセルがすでにそのようなレベルに達しているので、一または複数のセルへの別のプログラミングパルスの印加は停止され、ブロック１１６において、パルスカウンタｋは増加され、ブロック１１７において、プログラミングパルスが加えられ、ブロック１１８において、検証工程が実行され、そして再びレベル≧ｉでプログラムすべき全てのセルの閾値電圧がレベルｉ番目に相応する値に達したかどうかが検証され、ブロック１１４に戻る。
【００４２】
図９には図８のフロー図の変形を示し、プログラムすべきセルの存在しない中間レベルの検証は実施されない。
【００４３】
その結果、図８及び図９における等しい工程は同じ符号で示され、図９において図８における工程と同じ工程は同じ符号にプライム符号を付して示される。
【００４４】
特に、プログラムすべきレベルのレベルカウンタｉが増大されるブロック１０４の後、ブロック１０５’において、ｉ番目のレベルについて式（２）により得られるパルスの数Ｎｉ及び打ち切りαｉが検出される。そしてブロック１３０において、Ｎiとαiとを加えることによりｉ番目のレベルについてΔＶDIST,IとΔＶGPの間の比に等しい数Ｃiが計算される。そしてｉ＝１であるかどうかが検証され、そうである場合（ブロック１３１から出力ＹＥＳが生じる）には、ブロック１０６’において、Ｃiの整数値に等しい連続して加えられべきプログラミングパルスの数Ｂiが計算され、そうでない場合（ブロック１３１から出力ＮＯが生じる）には、ブロック１３２において、幾つかのセルがレベルｉ番目でプログラムされなければならないかどうかが検証され、そうである場合（ブロック１３２から出力ＹＥＳが生じる）には、Ｂiが計算され、ブロック１０６’に戻り、そうでない場合（ブロック１３２から出力ＮＯが生じる）には、ブロック１３３において、レベルカウンタｉが増加され、ブロック１３４において、次のレベルに関連したＮiとαiが検出され、そして前の値に新たに検出された値Ｎi、αiを加えたものに等しいＣｉの新たな値が計算され、そして再び、ｉ＋１番目のレベルで少なくとも一つのセルがプログラムされなければならないかどうかが検証され、ブロック１３２に戻る。
【００４５】
残りついては、図９のフロー図は図８のフロー図と同様であり、従ってここでは再度説明しない。
【００４６】
第１のプログラミングレベルの下方端（状態１）に対して消去セル（状態０）を得るのに必要なパルスの最少数Ｄが前もつて知られている場合に、さらなる全体的な時間節約を得ることができる。この数は電気ウエハソート中に各ダイについて計算され得る。そのような場合、プログラミングが始まると、検証工程なしのＤ個のパルスが、プログラムされなければならないセルに最初に加えられ、そしてセルの少なくとも一つがレベル“１”に達するまで、検証工程有りのパルスが加えられる。そしてプログラミングは前にの述べたように行われる。
【００４７】
図１０には、図８の方法を実施するハードウエア回路をブロック図で示す。回路は信号ＣＬＯＣＫ及び信号ＣＬＯＣＫに対して遅延した信号ＣＬＯＣＫ’によってタイミングが取られる。
【００４８】
プログラミング操作は、信号ＰＲ ＭＯＤＥ（“プログラムモード”）及び信号Ｐ＆Ｖ（“プログラム＆検証”）を得る二つのフリップフロップ１，２を高い状態に設定する、信号ＣＬＯＣＫと同期したプログラムスタートパルス（ＰＲ ＳＴ）を受けることにより開始される。
【００４９】
動作条件のもとで、以下の説明から一層明瞭になるように、検証工程とプログラミング工程との交互の設定は、遅延フリップフロップ３の出力スイッチングによって保証され、この遅延フリップフロップ３は、マルチプレクサ４の制御入力Ｃに供給された信号Ｐ＆Ｖが高いレベルにある場合に遅延フリップフロップ３の入力Ｄが遅延フリップフロップ３の信号／Ｑ３を受けるので、各パルスＣＬＯＣＫで切替わる。
【００５０】
プログラミング操作の開始時には、遅延フリップフロップ３の信号Ｑ３は、検証工程を実行するために信号ＰＲ ＳＴによって１に設定される。
【００５１】
回路が“プログラムモード”にある時には、出力Ｑ３における高いレベルは“検証”（信号ＶＲ）を駆動し、一方低いレベルは“プログラム”信号ＰＲＧを駆動する。信号ＶＲ又は信号ＰＲＧの駆動により、適当な信号が発生され（ブロック５）、それ自体公知の仕方で検証操作及びプログラミング操作をそれぞれ実行するようにメモリアレイに供給される。発生装置５は入力に、上述のように増加の法則により正しい閾値電圧値を設定するために現在のプログラミングサイクル中に既に実行されたプログラミング工程の数の値Ｐに加えて信号ＣＬＯＣＫ’（メモリアレイに供給されるべき信号をタイミングするのに用いられる）も受ける。全体的なプログラミング工程の値Ｐは、新しいプログラミング操作の開始時に信号ＰＲ ＳＴによってリセットされる第１のカウンタ６によって発生される。
【００５２】
信号Ｐ＆Ｖは、プログラミング工程の後、検証工程を実行すべきかを決定する。実際、信号Ｐ＆Ｖが高い値にある時には上述のように、出力Ｑ３は各パルスＣＬＯＣＫ毎に切替わり、信号ＶＥＲ及び信号ＰＲＯＧを交互に駆動し、逆に、信号Ｐ＆Ｖの値が０である時には、遅延フリップフロップ３の入力Ｄは出力Ｑ３と一致し、切替わらない。その結果、回路は“プログラム”状態に保持される。
【００５３】
マルチプレクサ４の制御信号は次のようにして発生される。
【００５４】
図示するように、始動時にフリップフロップ２は設定され、その出力は高い状態にある。検証工程の後、条件“ＡＬＬｉ”＝１が検証される（図８及び図９のブロック１１４）。すなわち少なくともレベルｉ番目においてプログラムすべき全てのセルがそのようなレベルに達すると、信号ＡＬＬｉは、フリップフロップ２をリセットして信号Ｐ＆Ｖを低い状態に切り換えるパルスを備える。
【００５５】
回路が“プログラム＆検証”状態にあり、そして少なくとも一つのセル（少なくともｉ番目のレベルでプログラムされなければならないセルのうち）がｉ番目のレベルに達したことが判ると、信号“ＯＮＥｉ”においてパルスが発生され（図８及び図９のブロック１１１に関して説明したように）、ステップカウンタの値ｋを記憶している第２のカウンタ７の内容はリセットされる。第２のカウンタ７は各プログラミングパルス毎に一単位増加され、そしてデジタル比較器８でレジスタ９からの比較値Ｂｉ（連続して加えられるべきプログラミングパルスの数）と比較される。
【００５６】
デジタル比較器８で等値Ｂi＝ｋをチェックすると、デジタル比較器８は、フリップフロップ２を設定するパルスＯＵＴＣを出力し、回路を“プログラム＆検証”状態に戻す（Ｐ＆Ｖ＝１）。
【００５７】
第３のカウンタ１０は、プログラムしたレベルのを計数し、そして出力にｉの値を供給する。第３のカウンタ１０は、信号ＰＲ ＳＴによってプログラミング操作の開始時に状態１に初期化され、そしてその出力は論理ブロック１１に接続され、この論理ブロック１１はレジスタ９にｉに依存した値Ｂiを供給する。
【００５８】
値Ｂiのローディングは、第３のカウンタ１０を増加させそしてＢiの新しい値を発生させる信号ＡＬＬｉのパルスによって信号供給されるように、前のサイクルの終了時にｉ番目のレベルに関係するプログラミングサイクルの開始時に実行される。第１のプログラミングサイクル（ｉ＝１）において、レジスタ９におけるＢiのローディングは、信号ＰＲ ＳＴにより得られる。ブロックＤＥＬはローディング信号に適当な遅延を発生する。
【００５９】
フリップフロップ１は、回路が導通され（信号ＰＯＲ）そして全体プログラミング操作の終了時に信号ＰＲ ＥＮＤが高い状態に切替わる時にリセットされ、回路状態を表す０に信号ＰＲ ＭＯＤＥを切替えさせ、それ以上プログラミングは行われない。
【００６０】
図１０の回路においては、メモリセンシングネットワークに接続される適宜な回路によって信号ＯＮＥｉ、ＡＬＬｉが発生すると仮定される。
【００６１】
さらに明らかなように、記載し図示してきた方法においては種々の変更及び変形がなされ得、これらの変更及び変形は全て特許請求の範囲で定義された発明の範囲内である。特に、慎重には連続した組のプログラミングパルスの後の最初の検証工程は、プログラムすべき一つ又は複数のセルが既に所望の閾値電圧に達しており、実際に図８におけるブロック１０６においてＢi＝Ｎｉ−１をまた図９におけるブロック１０６’においてＢi＝ＩＮＴ（Ｃｉ−１）を設定すると思われるものを処理するプログラミングパルスの後に生じ得る。
【００６２】
【発明の効果】
本方法の効果は上記より明らかである。すなわち、本方法により一方では閾値電圧の増加を適当な値に設定することにより所望のプログラミングを正確に行うことができ、また他方では少なくとも一つのセルが所望の閾値レベルに達した時に検証操作を行うので、全体的なプログラミング時間が過剰に長くなるをさけることができる。本方法は、プログラムすべきレベルの数が多い（例えば１６から）場合に特に有利である。上記の解決法によればプログラミング時間をさらに低減することができ、それにより、セルがプログラムされない中間レベルにおいて検証操作が避けられ、そして各停止の間に、グローバルなプログラミング操作の開始時に線形関係式（１）が有効である状態に達するのに必要なパルス数が記憶される。
【図面の簡単な説明】
【図１ａ】フローティングゲートメモリセルの二つの電気記号を示す図である。
【図１ｂ】フローティングゲートメモリセルの二つの電気記号を示す図である。
【図２ａ】異なる閾値とそれぞれのプログラミング値との間の関係を示す図である。
【図２ｂ】図２ａにおける閾値と組合さった分布を示す図である。
【図３】プログラミング及び検証操作パルスのシーケンスを示す図である。
【図４】プログラミングモードにおける閾値電圧の変化を示す図である。
【図５】続くプログラミング及び検証操作工程中に印加されたゲート電圧の反応を示す図である。
【図６】異なるプログラミングレベルに関連する閾値電圧の間隔を示す図である。
【図７】本方法のその後の工程中で印加されたゲート電圧を示す図である。
【図８】本方法の第１の実施の形態を示すフロー図である。
【図９】本方法の第２の実施の形態を示すフロー図である。
【図１０】図８の方法の実施可能なハードウエアのブロック図である。
【符号の説明】
１  フリップフロップ
２  フリップフロップ
３  遅延フリップフロップ
４  マルチプレクサ
５  発生装置
６  第１のカウンタ
７  第２のカウンタ
８  デジタル比較器
９  レジスタ
１０  第３のカウンタ
１１  論理ブロック
【図１ａ】
0004469475.tif 000003
【図１ｂ】
0004469475.tif 000004
【図２ａ】
0004469475.tif 000005
【図２ｂ】
0004469475.tif 000006
【図３】
0004469475.tif 000007
【図４】
0004469475.tif 000008
【図５】
0004469475.tif 000009
【図６】
0004469475.tif 000010
【図７】
0004469475.tif 000011
【図８】
0004469475.tif 000012
【図９】
0004469475.tif 000013
【図１０】
0004469475.tif 000014