(57)【特許請求の範囲】
【請求項１】
電気的にデータを書き換え可能な複数の不揮発性のメモリセルと、
前記メモリセルに複数回印加されるプログラム電圧を生成する際に、前記プログラム電圧の増分を、プログラムする全ての前記メモリセルの閾値電圧が初期値に達するまで第１電圧に設定し、これ等メモリセルの閾値電圧がその後目標値に達するまで前記第１電圧より小さい第２電圧に設定するプログラム電圧生成回路とを備え、
前記プログラム電圧生成回路は、
第１スイッチをそれぞれ介して電圧生成ノードに並列に接続された複数の第１容量と、
第２スイッチをそれぞれ介して前記電圧生成ノードに並列に接続され、前記第１容量より容量値の小さい複数の第２容量と、
ブースト電源線と接地線の間に前記電圧生成ノードを介して直接に接続された第３容量および第４容量と、
前記電圧生成ノードに生成される前記プログラム電圧と参照電圧とを比較する差動増幅回路と、
前記差動増幅回路の出力に基づいて、前記プログラム電圧が前記参照電圧より低いときに、前記ブースト電圧線から接地線に流れる電流を小さくし、前記プログラム電圧が前記参照電圧より高いときに、前記ブースト電圧線から接地線に流れる電流を大きくする電圧調整回路とを備え、
プログラムする全ての前記メモリセルの閾値電圧が前記初期値に達するまで、前記第１スイッチを順次オンすることにより前記第１容量を１つずつ前記電圧生成ノードに接続し、
前記メモリセルの閾値電圧が前記初期値に達した後目標値に達するまで、前記第２スイッチを順次オンすることにより前記第２容量を１つずつ前記電圧生成ノードに接続することを特徴とする不揮発性半導体メモリ。
【請求項２】
請求項１記載の不揮発性半導体メモリにおいて、
前記電圧調整回路は、
前記差動増幅回路の出力をゲートで受けるトランジスタと、
前記メモリセルのプログラム時に前記トランジスタのドレインを前記ブースト電圧線に接続する制御スイッチとを備えていることを特徴とする不揮発性半導体メモリ。
【請求項３】
請求項１記載の不揮発性半導体メモリにおいて、
前記メモリセルのソースおよびドレインにそれぞれ接続されたソース線およびビット線と、
前記閾値電圧の検出時に、前記メモリセルの制御ゲートおよび前記ソース線に所定のゲート電圧およびソース電圧を与える電圧設定回路と、
前記ビット線にそれぞれ接続され、前記ビット線を流れるメモリセル電流によって前記閾値電圧を検出する閾値電圧検出回路とを備えていることを特徴とする不揮発性半導体メモリ。
【請求項４】
請求項３記載の不揮発性半導体メモリにおいて、
前記電圧設定回路は、前記閾値電圧が、前記初期値および前記目標値に達したことを検出するときに、前記ゲート電圧を一定にし、前記ソース電圧を相違させることを特徴とする不揮発性半導体メモリ。
【請求項５】
請求項３記載の不揮発性半導体メモリにおいて、
前記各閾値電圧検出回路は、
プログラムするプログラムデータを保持し、前記メモリセルのプログラム時に出力が前記ビット線に接続されるラッチ回路と、
前記閾値電圧が前記初期値および前記目標値にそれぞれ達したことを、前記ビット線の電圧によって検出し、前記ラッチ回路を反転するラッチ制御回路とを備えていることを特徴とする不揮発性半導体メモリ。
【請求項６】
請求項５記載の不揮発性半導体メモリにおいて、
前記閾値電圧が前記初期値に達して前記ラッチ回路が反転された後、前記ラッチ回路に転送するための前記プログラムデータを保持するデータ保持回路を前記ラッチ回路に対応してそれぞれ備えていることを特徴とする不揮発性半導体メモリ。
【請求項７】
請求項６記載の不揮発性半導体メモリにおいて、
前記メモリセルは、複数ビットのデータを記憶する多値メモリセルであり、
前記データ保持回路は、前記多値メモリセルが保持するデータのビット数と同数形成されていることを特徴とする不揮発性半導体メモリ。
【請求項８】
請求項１記載の不揮発性半導体メモリにおいて、
前記目標値と前記初期値との差は、プログラムする全ての前記メモリセルの閾値電圧が、前記初期値に達したときに、これ等メモリセルの閾値電圧のばらつきより大きくなるように設定されていることを特徴とする不揮発性半導体メモリ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、不揮発性半導体メモリに関し、特に、プログラム電圧を徐々に増加させてメモリセルをプログラムする技術に関する。
【０００２】
【従来の技術】
プログラム電圧を徐々に増加させてメモリセルをプログラムする不揮発性半導体メモリとして、特開平１１−３１３９１号公報に開示される技術が知られている。この公報では、メモリセルの閾値電圧を高い精度で目標値に設定するために、メモリセルに印加するプログラム電圧を、その増分が徐々に小さくしている。
【０００３】
【発明が解決しようとする課題】
しかしながら、上述した技術では、プログラム電圧の増分が徐々に小さくなるため、閾値電圧の変化量は、目標値に近づくにつれて小さくなってしまう。すなわち、閾値電圧の変化量は、プログラム回数の増加とともに小さくなっていく。このため、閾値電圧の設定精度を高くするほど、閾値電圧が目標値に到達するまでのプログラム回数が増加するという問題があった。換言すれば、閾値電圧の設定精度の向上とプログラム時間の短縮とを両立することが困難であった。
【０００４】
また、プログラム電圧の増分が、プログラム毎に異なるため、プログラム電圧を生成する回路が複雑になり、レイアウト設計が複雑になるという問題があった。
一方、近時、１つのメモリセルに複数ビットのデータを記憶する多値メモリセルを有する不揮発性半導体メモリが開発されている。この種の多値メモリセルでは、メモリセルの閾値電圧を複数通りに設定することで、１つのメモリセルに複数ビットのデータを記憶する。例えば、４値メモリセルでは、データに応じてメモリセルに３通りの閾値電圧をプログラムする必要がある。したがって、多値メモリセルでは、２値メモリセルよりも高い精度で設定する必要がある。同時に、多値メモリセルのプログラム時間を、極力短縮する必要がある。
【０００５】
本発明の目的は、不揮発性半導体メモリのプログラム時間を短縮することにある。
本発明の別の目的は、多値メモリセルを有する不揮発性半導体メモリにおいて、メモリセルの閾値電圧を高い精度で制御するとともに、プログラム時間を短縮することにある。
【０００６】
【課題を解決するための手段】
本発明の不揮発性半導体メモリおよび不揮発性半導体メモリのプログラム電圧制御方法では、電気的にデータを書き換え可能な複数の不揮発性のメモリセルにデータをプログラムするときに、プログラム電圧を徐々に増加させながらこのプログラム電圧がメモリセルに複数回印加される。この際、プログラムする全てのメモリセルの閾値電圧が初期値に達するまで、プログラム電圧の増分は第１電圧に設定される。その後、閾値電圧が目標値に達するまで、プログラム電圧の増分は第２電圧に設定される。第１電圧および第２電圧の設定およびプログラム電圧の生成は、例えば、プログラム電圧生成回路により行われる。
【０００７】
このように、プログラムする全てのメモリセルの閾値電圧が初期値に達するまで、プログラム電圧をその増分を変えることなく上昇させることで、少ないプログラム回数で、メモリセルの閾値電圧を目標値に近づけることができる。また、閾値電圧が初期値を超えた後、プログラム電圧の増分を第２電圧に設定することで、閾値電圧の目標値に対する誤差を最小限にできる。この結果、少ないプログラム回数で、メモリセルの閾値電圧を高い精度でプログラムできる。プログラム回数が少なくなるため、メモリセルのプログラム時間を削減できる。
【０００８】
また、プログラム電圧の増分の種類は、第１電圧および第２電圧の２種類と少ないため、プログラム電圧生成回路を簡易に構成できる。特に、プログラム電圧生成回路に形成される素子の種類を少なくできるため、レイアウト設計が容易になる。
本発明の不揮発性半導体メモリでは、第１電圧は、第２電圧より大きいため、メモリセルの閾値電圧が目標値に近づくまでのプログラム回数を少なくできる。閾値電圧が目標値に近づいてからは、プログラム電圧の増分が小さくなるため、プログラムされるメモリセルの閾値電圧のばらつきを小さくできる。
【０００９】
本発明の不揮発性半導体メモリでは、ソース線およびビット線が、メモリセルのソースおよびドレインにそれぞれ接続されている。閾値電圧の検出時に、電圧設定回路は、メモリセルの制御ゲートおよびソース線に所定のゲート電圧およびソース電圧を与える。このとき、メモリセルのソース・ドレイン間にメモリセル電流が流れることで、ビット線に電流が発生する。閾値電圧検出回路は、ビット線を流れるメモリセル電流によって閾値電圧を検出する。閾値電圧検出回路は、ビット線にそれぞれ接続されている。このため、プログラムする全てのメモリセルの閾値電圧を、同時に検出できる。したがって、プログラム電圧の印加および閾値電圧の検出を複数回行う場合にも、プログラム時間が増加することを防止できる。
【００１０】
本発明の不揮発性半導体メモリでは、電圧設定回路は、閾値電圧が初期値および目標値に達したことを検出するときに、ゲート電圧を一定にし、ソース電圧を相違させる。閾値電圧の検出時にゲート電圧を一定とすることで、メモリセルトランジスタの利得を一定にできる。このため、閾値電圧を高い精度で検出できる。
【００１１】
また、初期値は目標値より低いため、メモリセル電流は、初期値のほうが目標値より大きくなる。このため、例えば、初期値を検出するときのソース電圧を、目標値を検出するときのソース電圧より高くした場合、メモリセル電流が相対的に減るため、ソース線の過渡的な電圧上昇を小さくできる。
本発明の不揮発性半導体メモリでは、閾値電圧検出回路は、ラッチ回路とラッチ制御回路とを有している。ラッチ回路は、プログラムするプログラムデータを保持する。ラッチ回路は、メモリセルのプログラム時に保持しているデータをビット線に出力する。ラッチ制御回路は、閾値電圧が初期値および目標値にそれぞれ達したことをビット線の電圧変化によって検出したときに、ラッチ回路のデータを反転する。このため、ラッチ回路に保持されているデータを読むだけで、メモリセルの閾値電圧が初期値（または目標値）に達したことが分かる。すなわち、次のプログラムで印加すべきプログラム電圧を容易に求めることができる。また、データが反転されたラッチ回路は、その後のプログラム時にビット線に出力するレベルを反転する。このため、閾値電圧が初期値（または目標値）に達したメモリセルについては、その後プログラム電圧が印加されることを防止できる。この結果、閾値電圧がばらつくことを防止できる。
【００１２】
本発明の不揮発性半導体メモリでは、データ保持回路が、ラッチ回路に対応してそれぞれ形成されている。データ保持回路は、メモリセルにプログラムされるプログラムデータを保持する。そして、メモリセルの閾値電圧が初期値に達し、ラッチ回路が反転された後、保持しているプログラムデータをラッチ回路に転送する。すなわち、ラッチ回路に保持されているプログラムデータが、初期値の検出により反転された後に、ラッチ回路に再び正しいプログラムデータが転送される。このため、その後プログラム電圧が、増分を第２電圧にしてメモリセルに印加されるときに、プログラムが必要なメモリセルのみにプログラム電圧を印加できる。
【００１３】
本発明の不揮発性半導体メモリでは、複数ビットのデータを記憶する多値メモリセルにデータがプログラムされる。データ保持回路は、多値メモリセルが保持するデータのビット数と同数形成されている。各ビットに対応してデータ保持回路を形成することで、ラッチ回路のデータが反転した後に、多値データに対応するプログラムデータをラッチ回路に転送できる。すなわち、多値データに応じて複数種の閾値電圧をメモリセルに設定できる。
【００１４】
なお、本発明では、目標値に対するメモリセルの閾値電圧のばらつきを小さくできるため、多値メモリセルにおいても、複数種の閾値電圧を高精度に設定できる。閾値電圧のばらつきが小さくなるため、多値データを確実にプログラムできる。また、プログラム回数が少なくなるため、多値メモリセルにおいても、プログラム時間を短縮できる。
【００１５】
本発明の不揮発性半導体メモリでは、目標値と初期値との差は、プログラムする全てのメモリセルの閾値電圧が、初期値に達したときに、これ等閾値電圧のばらつきより大きくなるように設定されている。このため、プログラム電圧の増分が第１電圧のときに、閾値電圧が目標値を超えることが防止される。換言すれば、閾値電圧が目標値を超えた一部のメモリセルについて、増分を第１電圧としてさらにプログラムされることを防止できる。この結果、閾値電圧が目標値から大幅にずれることを防止できる。
【００１６】
【発明の実施の形態】
以下、本発明の実施形態を図面を用いて説明する。
図１は、本発明の不揮発性半導体メモリおよび不揮発性半導体メモリのプログラム制御方法の一実施形態を示している。この実施形態の不揮発性半導体メモリは、シリコン基板上に、CMOSプロセスを使用して、６４メガビットのNAND型フラッシュメモリとして形成されている。
フラッシュメモリは、高電圧発生回路１０、ソース電圧発生回路１１、状態制御回路１２、コマンドレジスタ１４、アドレスレジスタ１６、メモリコア１８、およびデータ入出力バッファ２０を有している。メモリコア１８は、メモリセルアレイ２２、メモリセルアレイ２２の両側（図の左右）に形成されたロウデコーダ２４、メモリセルアレイ２２の両側（図の上下）に形成されたページバッファ２６、ロウデコーダ２４の一端（図の上側）に形成されたストリングデコーダ２８、およびロウデコーダ２４の他端（図の下側）に形成されたブロックデコーダ３０を有している。
【００１７】
高電圧発生回路１０は、状態制御回路１２からの制御信号を受け、プログラム電圧等の高電圧を発生し、この電圧をロウデコーダ２４、ページバッファ２６、およびストリングデコーダ２８に供給している。ソース電圧発生回路１１は、状態制御回路１２からの制御信号を受け、ソース電圧ARVSSを発生し、この電圧をメモリセルアレイ２２に供給している。ソース電圧発生回路１１は、後述するメモリセルMCのソース線にソース電圧ARVSSを与える電圧設定回路として動作する。状態制御回路１２は、外部から供給される制御信号CNT（チップイネーブル信号、書き込みイネーブル信号など）、およびコマンドレジスタ１４からの制御信号を受け、これ等制御信号に応じて読み出し動作、書き込み動作（プログラム動作）、および消去動作を実行するためのタイミング信号を生成する。
【００１８】
コマンドレジスタ１４は、入出力端子I/Oに供給されるコマンド信号を、データ入出力バッファ２０を介して受け、受けた信号を状態制御回路１２に出力している。アドレスレジスタ１６は、入出力端子I/Oに供給されるアドレス信号を、データ入出力バッファ２０を介して受け、受けた信号をロウデコーダ２６およびコラムデコーダ（図示せず）に出力している。データ入出力バッファ２０は、入出力端子I/Oを介してコマンド信号、アドレス信号、およびデータ信号を受ける。データ信号は、ページバッファ２６に入出力される。
【００１９】
メモリセルアレイ２２は、マトリックス状に配置された電気的に書き換え可能な不揮発性のメモリセルMC、ロウデコーダ２４に接続されたワード線WL、およびページバッファ２６に接続されたビット線BLを有している。ワード線WLは、図の左右のロウデコーダ２４に交互に接続されている。１本のワード線WLには、例えば１Ｋバイト（２ページ分）のメモリセルMCが接続されている。ビット線BLは、図の上下のページバッファ２６に交互に接続されている。ページバッファ２６は、５１２バイト（１ページ）のデータを入出力する。メモリセルMCのプログラムは、２ページ単位で行われる。また、１６個のメモリセルMCが、ビット線BLとソース線ARVSSとの間に直列に接続されている。そして、１６本のワード線WLに接続されたメモリセルMCにより、ブロックが構成されている。ブロックについては、後述する図２で説明する。
【００２０】
ブロックデコーダ３０は、アドレス信号に応じて、ブロックを選択するためのデコード信号を生成する。ロウデコーダ２４は、ブロックデコーダ３０から出力されるデコード信号に応じてブロックを選択する。ストリングデコーダ２８は、アドレス信号に応じて、選択されたブロック内の１６本のワード線WLのいずれかを選択する。
【００２１】
図２は、メモリセルアレイ２２およびロウデコーダ２４の要部を示している。なお、図２では説明を簡単にするため、図１に示した２つのロウデコーダ２４を１つにまとめて表している。
メモリセルアレイ２２は、複数のブロックBLK（BLK0、BLK1、...）で構成されている。各ブロックBLKは、ビット線BLに対応してNAND型のメモリセル列２２ａを有している。各メモリセル列２２ａには、制御ゲートおよびフローティングゲートを有するメモリセルが直列に１６個配置されている。メモリセルMCの制御ゲートは、ワード線WL（WL0-15）にそれぞれ接続されている。メモリセル列２２ａの両端は、選択トランジスタを介して、ビット線BLまたはソース線ARVSSに接続されている。選択トランジスタのゲートは、選択線SG（SG01、SG02）にそれぞれ接続されている。
【００２２】
ワード線WL0-15は、ロウデコーダ２４のトランスファスイッチ２４ａ（nMOSトランジスタ）を介してストリング線XT0-15にそれぞれ接続されている。ストリング線XT0-15は、ストリングデコーダ２８の出力に接続されており、複数のブロックBLKに共通の信号線である。トランスファスイッチ２４ａのゲートは、ロウデコーダ２４のデコード信号XDEC（XDEC0、XDEC1、...）を受けている。デコード信号XDECは、ブロックデコーダ３０から出力されるデコード信号Z0、Z1、Z2により活性化される。ロウデコーダ２４は、メモリセルMCの制御ゲートにゲート電圧を与える電圧設定回路としても動作する。
【００２３】
以下、メモリセルMCの動作について簡単に説明する。
メモリセルMCのプログラム動作は、プログラムするデータを入力後、プログラムを開始するコマンドを入力することで開始される。プログラムするメモリセルMCに対応するワード線WLには、高電圧（例えば１８Ｖ）が供給される。ビット線BLには、０Ｖが供給される。そして、ＦＮトンネル現象によりメモリセルMCのフローティングゲートに電子を注入することで、メモリセルMCがプログラムされる（論理０の書き込み。閾値電圧は高くなる）。
【００２４】
メモリセルMCの読み出し動作は、データを読み出すためのコマンドを入力することで開始される。データを読み出すメモリセルMCに対応するワード線WLには、低電圧（例えば０Ｖ）が供給される。それ以外のワード線WLおよび選択線SGには、高レベル（例えば４Ｖ）が供給される。ソース線ARVSSには、低電圧（例えば０Ｖ）が供給される。フローティングゲートに電子が蓄積されているときには（プログラム状態）、メモリセルMCにチャネルが形成されず、ソース線ARVSSとビット線BLとは導通しない。フローティングゲートに電子が蓄積されていないときには（消去状態）、メモリセルMCにチャネルが形成され、ソース線ARVSSとビット線BLとが導通する。そして、ワード線WLに接続された１ｋバイトのメモリセルMCからデータが読み出される。実際には、ビット線BLを流れるメモリセル電流が、ページバッファ２６により検出され、メモリセルMCに記憶されているデータの論理レベルが判定される。
【００２５】
メモリセルMCの消去動作は、データを消去するコマンドを入力することで開始される。データを消去するメモリセルMCの制御ゲートには、低電圧（例えば０Ｖ）が供給される。メモリセルMCのウエル領域には、高電圧（例えば２０Ｖ）が供給される。そして、フローティングゲートに蓄積されている電子が放出されて、メモリセルMCのデータが消去される（論理０から論理１に変化。閾値電圧は低くなる。）。このとき、データを消去するメモリセルMCに接続されたワード線WLを除くワード線WL（メモリセルMCの制御ゲート）は、例えば、フローティング状態にされる。
【００２６】
図３は、図１に示したページバッファ２６内に形成される閾値電圧検出回路３２を示している。閾値電圧検出回路３２は、メモリセルMCにプログラムするためのデータを保持するデータラッチとしての機能も有している。
閾値電圧検出回路３２は、ラッチ回路３２ａ、データ保持回路３２ｂ、およびスイッチとして動作するnMOSトランジスタ３２ｃ、３２ｄ、３２ｅ、３２ｆ、３２ｇ、３２ｈ、pMOSトランジスタ３２ｉを有している。以下、nMOSトランジスタ、pMOSトランジスタを単にnMOS、pMOSと称する。ラッチ回路３２ａおよびデータ保持回路３２ｂは、２つのインバータの入力と出力とを互いに接続して構成されている。
【００２７】
ラッチ回路３２ａの出力（ノードND01）は、nMOS３２ｃ、３２ｄを介してデータバスBUSに接続されている。nMOS３２ｃのゲートは、ロード信号LD1により制御されている。nMOS３２ｄのゲートは、ロード信号LD2により制御されている。ラッチ回路３２ａのノードND01は、nMOS３２ｅを介してノードND02に接続されている。nMOS３２ｅのゲートは、プログラム制御信号PGMにより制御されている。ラッチ回路３２ａのノード/ND01は、nMOS３２ｆ、３２ｇを介して接地線VSSに接続されている。nMOS３２ｆのゲートは、ノードND02に接続されている。nMOS３２ｇのゲートは、セット信号SETにより制御されている。nMOS３２ｆ、３２ｇは、ビット線BLの電圧に応じてラッチ回路３２ａのデータを反転させるラッチ制御回路として動作する。
【００２８】
ノードND02は、nMOS３２ｈを介してビット線BLに接続されている。nMOS３２ｈのゲートは、ビット線制御信号BLCNTにより制御されている。また、ノードND02は、pMOS３２ｉを介して電源線VCCに接続されている。pMOS３２ｉのゲートは、バイアス信号PBIASにより制御されている。データ保持回路３２ｂは、nMOS３２ｃを介してデータバスBUSに接続されている。
【００２９】
図４は、図１に示した高電圧発生回路１０内に形成されるプログラム電圧生成回路３４を示している。プログラム電圧生成回路３４は、一端がノードVDIVに接続された容量CA、CBと、nMOSを介してノードVDIVに接続された複数の容量CC（CC10、CC11、CC12、...)、CD（CD20、CD21、CD22、...）と、ノードVDIVを接地線VSSに接続するためのnMOS３４ａと、差動増幅回路３４ｂと、VPP調整回路３４ｃとを有している。
【００３０】
容量CAは、pMOSで構成され、容量CB、CC、CDは、nMOSで構成されている。容量CCは、制御信号REG（REG10、11、12、...）で制御されるnMOSを介してノードVDIVに接続されている。容量CDは、制御信号REG（REG20、21、22、...）で制御されるnMOSを介してノードVDIVに接続されている。nMOS３４ａは、セット信号SETBで制御されている。容量CA、CBの他端は、それぞれブースト電圧VPP、接地電圧VSSに接続されている。
【００３１】
差動増幅回路３４ｂは、参照電圧VREF（１.３Ｖ)およびノードVDIVの電圧（以下、分圧電圧VDIV）を受け、制御電圧VOUTを出力する。制御電圧VOUTは、分圧電圧VDIVが参照電圧VREFより高いときに高くなり、分圧電圧VDIVが参照電圧VREFより低いときに低くなる。VPP調整回路３４ｃは、ブースト電圧線VPPと接地線VSSの間に直列に接続されたpMOSおよびnMOSを有している。pMOSのゲートには、フラッシュメモリのプログラム時に低レベルに変化するイネーブル信号ENBが供給されている。nMOSのゲートには、制御電圧VOUTが供給されている。
【００３２】
このプログラム電圧生成回路３４では、制御信号REGを高レベルに変化させ、ノードVDIVに新たな容量CCまたは容量CDを接続することで、付加された容量値に応じて分圧電圧VDIVは下降する。差動増幅回路３４ｂおよびVPP調整回路３４ｃは、分圧電圧VDIVが常に参照電圧VREFに等しくなるように帰還制御する。この結果、容量CCが一つ接続される毎に、ブースト電圧VPP（プログラム電圧PVPP）は、ΔV1（第１電圧）だけ上昇する。また、容量CDが一つ接続される毎に、ブースト電圧VPP（プログラム電圧PVPP）は、ΔV2（第２電圧）だけ上昇する。本実施形態では、プログラム電圧の増分の種類を２種類にしたので、プログラム電圧生成回路３４に形成される容量の種類を少なくでき、レイアウト設計が容易になる。
【００３３】
次に、上述したフラッシュメモリのプログラム動作の説明をする。
図５は、メモリセルMCの制御ゲートに印加されるプログラム電圧PVPPを示している。プログラム電圧PVPPは、図４に示したノードVDIVの電圧である。この実施形態では、メモリセルMCのプログラム時に、プログラム電圧PVPPを徐々に増加させながら、プログラム電圧PVPPがメモリセルMCに複数回印加される。プログラム電圧PVPPの増分は、プログラムする全てのメモリセルMCの閾値電圧が初期値VTiに達するまでΔV1（第１電圧）に設定され、これ等メモリセルMCの閾値電圧がその後目標値VTに達するまでΔV2（第２電圧）に設定される。
【００３４】
まず、プログラム開始時に、プログラム電圧PVPPは、電圧V0に設定される。電圧V0は、図４に示したプログラム電圧生成回路３４の容量CA、CBの容量分割により得られる電圧である。そして、１回目のプログラムは、電圧V0をプログラムするメモリセルMCの制御ゲートに印加することで行われる。以下、プログラムするメモリセルMCを、プログラムセルPMCとも称する。電圧V0は、プログラムが不要なメモリセルMCにも印加される。このため、これ等メモリセルMCについては、ビット線BLを高レベルにし、メモリセルMCのゲート・チャネル間電圧を下げることで、プログラム電圧が印加されることを防止する。このとき、図３に示した閾値電圧検出回路３２のラッチ回路３２ａに論理１をラッチさせることで、ビット線BLに高レベルが与えられる。実際には、ビット線BLの高レベルは、図２に示したメモリセル列２２ａの選択トランジスタの寄生容量のカップリングによりさらに上昇し、メモリセルMCのドレインに与えられる。
【００３５】
電圧V0でのプログラム後、プログラムセルPMCの閾値電圧が検出される。閾値電圧の検出は、図３に示した閾値電圧検出回路３２により行われる。プログラムセルPMCに対応するラッチ回路３２ａおよびデータ保持回路３２ｂには、データバスを介して論理０（低レベル）が取り込まれている。プログラムしないメモリセルMCに対応するラッチ回路３２ａおよびデータ保持回路３２ｂには、データバスを介して論理１（高レベル）が取り込まれている。
【００３６】
まず、nMOS３２ｈをオフした状態で、pMOS３２ｉが所定の期間オンし、ノードND02が高レベルにプリチャージされる。このとき、nMOS３２ｇはオフしているため、ラッチ回路３２ａのデータが破壊されることはない。
次に、図６に示すように、プログラムセルPMCに接続されたワード線WLに１.０Ｖが与えられ、その他のワード線に３.６Ｖが与えられ、ソース線ARVSSに０.２Ｖが与えられる。この後、図３に示したビット線制御信号BLCNTおよびセット信号SETが高レベルに変化され、nMOS３２ｈ、３２ｇはオンする。メモリセルMCの閾値電圧が初期値VTi（この例では、０.８Ｖ）に達している場合、プログラムセルPMCのソース・ドレインは導通しない。すなわち、ビット線BLとソース線ARVSSとは導通しないため、ノードND02は高レベルに保持される。ノードND02の高レベルにより、nMOS３２ｆがオンする。したがって、プログラムするメモリセルMCに対応するラッチ回路３２ａのノード/ND01は、低レベルに変化し、ノードND01は、高レベルに変化する。すなわち、閾値電圧が初期値VTiに達したメモリセルMCに対応するラッチ回路３２ａのデータは反転する。この結果、増分がΔV1にされるその後のプログラム時に、ビット線BLは高レベルになる。したがって、閾値電圧が初期値VTiに達したメモリセルMCについては、プログラム電圧PVPPによりプログラムが実行されることが防止される。
【００３７】
一方、メモリセルMCの閾値電圧が初期値VTiに達していない場合、プログラムセルPMCのソース・ドレインは導通する。すなわち、ビット線BLとソース線ARVSSとは導通するため、ノードND02は低レベルに変化する。nMOS３２ｆはオンしないため、ラッチ回路３２ａのデータは変化しない。この例では、１回目のプログラム電圧の印加では、プログラムセルPMCの閾値電圧は、初期値VTiに達していないと判定される。
【００３８】
なお、閾値電圧検出回路３２は、ビット線BLに対応してそれぞれ形成されているため、ワード線WLに接続された全てのメモリセルMCの閾値電圧を同時に検出できる。すなわち、プログラム時間の増加が防止される。
次に、高電圧発生回路１０は、図４に示した制御信号REG10を高レベルに変化させ、容量CC10をノードVDIVに接続する。この接続により、分圧電圧VDIVは、所定値だけ下がり参照電圧VREFより低くなる。差動増幅回路３４ｂは、分圧電圧VDIVの変化に応じて制御電圧VOUTを下げる。制御電圧VOUTの低下により、VPP調整回路３４ｃのnMOSのオン抵抗が上昇し、ブースト電圧線VPPから接地線VSSへのリーク量は減少する。この結果、ブースト電圧VPPは上昇する。
【００３９】
ブースト電圧VPPの上昇により、分圧電圧VDIVが上昇する。このようにして、分圧電圧VDIVは、差動増幅回路３４ｂおよびVPP調整回路３４ｃの帰還制御により、参照電圧VREFに等しくなるまで上昇する。この結果、ブースト電圧VPP（プログラム電圧PVPP）は、ΔV1（第１電圧）だけ上昇する。そして、上述と同様に、２回目のプログラムが実行され、プログラムセルPMCの閾値電圧の検出が行われる。この例では、２回目のプログラム後、プログラムセルPMCの閾値電圧が、初期値VTiに達していないことが検出される。
【００４０】
次に、高電圧発生回路１０は、制御信号REG10に加え、制御信号REG11を高レベルに変化させ、容量CC10、CC11をノードVDIVに接続する。この接続により、分圧電圧VDIVは、所定値だけ下がり参照電圧VREFより低くなる。そして、上述と同様に、差動増幅回路３４ｂおよびVPP調整回路３４ｃの帰還制御により、ブースト電圧VPP（プログラム電圧PVPP）は、さらにΔV1（第１電圧）だけ上昇する。そして、３回目のプログラム電圧PVPPがプログラムセルPMCに印加される。
【００４１】
３回目のプログラムにより、全プログラムセルPMCの閾値電圧が、初期値VTiを超えたことが検出される。このように、プログラムセルPMCの閾値電圧が初期値VTiに達するまで、プログラム電圧の増分を変えることなく、プログラム電圧PVPPを上昇させることで、少ないプログラム回数で、プログラムセルPMCの閾値電圧を目標値VTに近づけることができる。
【００４２】
全プログラムセルPMCの閾値電圧が、初期値VTiを超えたことが検出されたため、全てのラッチ回路３２ａ（図３）のデータは、反転している。このため、nMOS３２ｄをオンさせて、データ保持回路３２ｂのデータ（正しいプログラムデータ）がラッチ回路３２ａに転送される。ラッチ回路３２ａに正しいプログラムデータをラッチさせるため、データ保持回路３２ｂの駆動能力は、ラッチ回路３２ａの駆動能力に比べ高くする必要がある。
【００４３】
次に、高電圧発生回路１０は、制御信号REG10、11に加え、制御信号REG22を高レベルに変化させ、容量CC10、CC11と容量CD22をノードVDIVに接続する。この接続により、ブースト電圧VPP（プログラム電圧PVPP）は、さらにΔV2（第２電圧）だけ上昇する。このプログラム電圧PVPPがプログラムセルPMCに印加され、４回目のプログラムが行われた後、図７に示すように、プログラムセルPMCに接続されたワード線WLに１.０Ｖが与えられ、その他のワード線に３.６Ｖが与えられ、ソース線ARVSSに０Ｖが与えられる。そして、プログラムセルPMCのソース・ドレインを流れるメモリセル電流IREFに応じて、ビット線BLの電圧が変化することで、プログラムセルPMCの閾値電圧が、目標値に達しているかどうかが検出される。
【００４４】
ここで、閾値電圧を検出するときに、ゲート電圧は一定（１.０Ｖ）にし、ソース電圧を変化させている（０.２Ｖと０Ｖ）。ゲート電圧を一定にすることで、メモリセルトランジスタの利得は一定になる。このため、閾値電圧を高い精度で検出できる。また、初期値VTiを検出するときのソース電圧を、目標値VTを検出するときのソース電圧より高くすることで、メモリセル電流IREFは相対的に減り、ソース線の過渡的な電圧上昇が小さくなる。
【００４５】
この後、プログラムセルPMCの閾値電圧が目標値VTを超えるまで、プログラム電圧PVPPがΔV2ずつ増加され、５回目、６回目のプログラムが行われる。なお、閾値電圧が目標値VTを超えたプログラムセルPMCについては、対応するラッチ回路３２ａのデータは、反転する。データの反転された後、ビット線BLには高レベルが供給されるため、閾値電圧が目標値VTを超えたプログラムセルPMCのプログラムは行われない。
【００４６】
そして、ラッチ回路３２ａに保持されているデータにより、プログラムする全てのメモリセルMCの閾値電圧が目標値VTに達したことが検出されたとき（６回目のプログラム後）、メモリセルMCのプログラムが完了する。
図８は、図５に示したメモリセルMCのプログラム動作時における、プログラムセルPMCの閾値電圧の分布の変化例を示している。分布(1)-(6)は、それぞれ図５の１回目から６回目のプログラム後の閾値電圧の分布を示している。初期のプログラム電圧V0は、０.３Ｖに設定されている。プログラム電圧の増分ΔV1、ΔV2は、それぞれ０.３Ｖ、０.１Ｖに設定されている。また、初期値VTiおよび目標値VTは、それぞれ０.８Ｖおよび１.０Ｖに設定されている。
【００４７】
この例では、３回目のプログラム後に、全プログラムセルPMCの閾値電圧は、初期値VTi（０.８Ｖ）を超える。このとき、分布の端（高電圧側）が目標値VT（１.０Ｖ）を超えないように、初期値VTiおよび目標値VTが設定されている。換言すれば、全プログラムセルPMCの閾値電圧が初期値VTiに達したとき、目標値VTと初期値VTiとの差が、閾値電圧のばらつきより大きくなるように、目標値VTと初期値VTiとが設定されている。このため、プログラム電圧PVPPの増分がΔV1のときのプログラムで、閾値電圧が目標値VTを超えることはない。したがって、閾値電圧が目標値VTから大幅にずれることが防止される。
【００４８】
この結果、この例では、最終的なプログラムセルPMCの閾値電圧のばらつきを約０.１Ｖに抑えることができる。すなわち、プログラムセルPMCの閾値電圧を高い精度で制御できる。これに対して、目標値VTと初期値VTiとの差が、上記閾値電圧のばらつきより小さい場合、増分をΔV1としたプログラムにおいて、一部のプログラムセルPMCの閾値電圧が目標値VTを超えてしまう。このとき、別の一部のプログラムセルPMCの閾値電圧は、初期値VTiに達していない。このため、閾値電圧が目標値VTを超えたプログラムセルPMCについて、プログラム電圧PVPPの増分をΔV1としてさらにプログラムされてしまう。この結果、閾値電圧のばらつきは、約０.３Ｖと大きくなる。
【００４９】
なお、初期値VTiおよび目標値VTの設定は、製造されたフラッシュメモリの特性に応じて微調整することで、より確実に閾値電圧を設定できる。この場合、初期値VTiおよび目標値VTを複数通り設定可能な閾値電圧調整回路およびこの閾値電圧調整回路内の回路の接続を設定するヒューズ回路を形成すればよい。あるいは、ヒューズ回路の代わりに不揮発性のメモリを利用してもよい。そして、例えば、製造ロット毎にフラッシュメモリの特性を測定し、ヒューズの溶断仕様を決めることで、最適な初期値VTiおよび目標値VTを設定できる。
【００５０】
４回目以降のプログラムでは、全プログラムセルPMCの閾値電圧が、初期値VTiを超えているため、プログラム電圧の増分は、ΔV2（０.１Ｖ）に設定される。４回目のプログラムにより、プログラムするメモリセルMCのうち約半数の閾値電圧が、目標値VTに達する。閾値電圧が目標値VTに達したプログラムセルPMCは、以後プログラムされない。５回目のプログラムにより、全プログラムセルの閾値電圧が、目標値VTに達し、プログラムが完了する。
【００５１】
以上、本実施形態の不揮発性半導体メモリおよび不揮発性半導体メモリのプログラム制御方法では、プログラムセルPMCの閾値電圧が初期値VTiに達するまで、プログラム電圧PVPPの増分をΔV1に固定した。このため、少ないプログラム回数で、プログラムセルPMCの閾値電圧を目標値VTに近づけることができる。また、全プログラムセルPMCの閾値電圧が初期値VTiを超えた後、プログラム電圧PVPPの増分をΔV1より小さいΔV2に変更したので、閾値電圧が目標値に近づいてからは、プログラム電圧の増分を小さくできる。したがって、閾値電圧の目標値VTに対する誤差を最小限にできる。この結果、少ないプログラム回数で、メモリセルの閾値電圧を高い精度でプログラムできる。一例として、閾値電圧のばらつきを約０.１Ｖにできる。プログラム回数が少なくなるため、メモリセルのプログラム時間を削減できる。
【００５２】
プログラム電圧PVPPの増分の種類を２種類にした。このため、プログラム電圧生成回路３４を簡易に構成できる。特に、プログラム電圧生成回路３４に形成される容量の種類を少なくできるため、レイアウト設計が容易になる。
閾値電圧検出回路３２を、ビット線BL毎に形成した。このため、プログラムセルPMCの閾値電圧を、同時に検出できる。したがって、プログラム時間が増加することを防止できる。
【００５３】
閾値電圧を検出するときに、ゲート電圧を一定にし、ソース電圧のみを相違させた。このため、メモリセルトランジスタの利得を一定にでき、閾値電圧を高い精度で検出できる。また、初期値VTiを検出するときのソース電圧を、目標値VTを検出するときのソース電圧より高くすることで、メモリセル電流IREFが相対的に減るため、ソース線の過渡的な電圧上昇を小さくできる。
【００５４】
閾値電圧が初期値VTiおよび目標値VTにそれぞれ達したときに、ラッチ回路３２ａのデータを反転した。このため、ラッチ回路３２ａに保持されているデータを読むだけで、プログラムセルPMCの閾値電圧が初期値VTi（または目標値VT）に達したことを確認できる。また、データが反転されたラッチ回路３２ａにより、閾値電圧が初期値VTi（または目標値VT）に達したプログラムセルPMCについては、その後プログラム電圧PVPPが印加されることを防止できる。この結果、閾値電圧がばらつくことを防止できる。
【００５５】
ラッチ回路３２ａに対応してプログラムデータを保持するデータ保持回路３２ｂを形成した。このため、ラッチ回路３２ａのデータが反転した後に、ラッチ回路３２ａに再び正しいプログラムデータを転送できる。この結果、その後のプログラムを正常に行うことができる。
目標値と初期値との差を、プログラムセルPMCの閾値電圧が、初期値に達したときに、これ等閾値電圧のばらつきより大きくなるように設定した。このため、閾値電圧が目標値VTを超えた一部のプログラムセルPMCについて、増分をΔV1としてさらにプログラムされることを防止できる。この結果、閾値電圧が目標値VTから大幅にずれることを防止できる。
【００５６】
なお、上述した実施形態では、本発明を２値を記憶する不揮発性メモリセルを有するフラッシュメモリに適用した例について述べた。本発明はこれに限定されるものではない。例えば、４値以上を記憶する不揮発性メモリセルを有するフラッシュメモリに適用してもよい。この場合、データ保持回路は、多値メモリセルが保持するデータのビット数と同数形成される。各ビットに対応してデータ保持回路を形成することで、ラッチ回路のデータが反転した後に、多値データに対応するプログラムデータをラッチ回路に転送できる。すなわち、多値データに応じて複数種の閾値電圧をメモリセルに設定できる。
【００５７】
なお、本発明では、目標値に対するメモリセルの閾値電圧のばらつきを小さくできるため、多値メモリセルにおいても、複数種の閾値電圧を高精度に設定できる。閾値電圧のばらつきが小さくなるため、多値データを確実にプログラムできる。また、プログラム回数が少なくなるため、多値メモリセルにおいても、プログラム時間を短縮できる。
【００５８】
上述した実施形態では、本発明をフラッシュメモリに適用した例について述べた。本発明はこれに限定されるものではない。例えば、システムLSIに搭載されるフラッシュメモリコアに適用してもよい。
上述した実施形態では、本発明をNAND型のフラッシュメモリに適用した例について述べた。本発明はこれに限定されるものではない。例えば、NOR型のフラッシュメモリに適用してもよい。さらに、フラッシュメモリ以外の不揮発性半導体メモリに適用してもよい。
【００５９】
以上、本発明について詳細に説明してきたが、上記の実施形態およびその変形例は発明の一例に過ぎず、本発明はこれに限定されるものではない。本発明を逸脱しない範囲で変形可能であることは明らかである。
【００６０】
【発明の効果】
本発明の不揮発性半導体メモリおよび不揮発性半導体メモリのプログラム電圧制御方法では、少ないプログラム回数で、メモリセルの閾値電圧を目標値に近づけることができる。閾値電圧の目標値に対する誤差を最小限にできる。プログラム回数が少なくなるため、メモリセルのプログラム時間を削減できる。
本発明の不揮発性半導体メモリでは、プログラムされるメモリセルの閾値電圧のばらつきを小さくできる。
【００６１】
本発明の不揮発性半導体メモリでは、プログラムする全てのメモリセルの閾値電圧を、同時に検出できる。したがって、プログラム電圧の印加および閾値電圧の検出を複数回行う場合にも、プログラム時間が増加することを防止できる。
本発明の不揮発性半導体メモリでは、閾値電圧を高い精度で検出できる。閾値電圧を検出するときに、ソース線の過渡的な電圧上昇を小さくできる。
【００６２】
本発明の不揮発性半導体メモリでは、次のプログラムで印加すべきプログラム電圧を容易に求めることができる。閾値電圧が初期値（または目標値）に達したメモリセルについては、その後プログラム電圧が印加されることを防止できる。この結果、閾値電圧がばらつくことを防止できる。
本発明の不揮発性半導体メモリでは、メモリセルの閾値電圧が初期値に達し、ラッチ回路が反転された後、プログラム電圧を、増分を第２電圧にしてメモリセルに印加するときに、プログラムが必要なメモリセルのみにプログラム電圧を印加できる。
【００６３】
本発明の不揮発性半導体メモリでは、複数ビットのデータを記憶する多値メモリセルにデータがプログラムされる。データ保持回路は、前記多値メモリセルが保持するデータのビット数と同数形成されている。各ビットに対応してデータ保持回路を形成することで、ラッチ回路のデータが反転した後に、多値データに対応するプログラムデータをラッチ回路に転送できる。すなわち、多値データに応じて複数種の閾値電圧をメモリセルに設定できる。
【００６４】
多値メモリセルにおいても、複数種の閾値電圧を高精度に設定できる。閾値電圧のばらつきが小さくなるため、多値データを確実にプログラムできる。また、プログラム回数が少なくなるため、多値メモリセルにおいても、プログラム時間を短縮できる。
本発明の不揮発性半導体メモリでは、プログラム電圧の増分が第１電圧のときに、閾値電圧が目標値を超えることを防止できる。この結果、閾値電圧が目標値から大幅にずれることを防止できる。
【図面の簡単な説明】
【図１】本発明の一実施形態を示すブロック図である。
【図２】図１のメモリセルアレイおよびロウデコーダの要部を示す回路図である。
【図３】閾値電圧検出回路を示す回路図である。
【図４】プログラム電圧生成回路を示す回路図である。
【図５】メモリセルに印加されるプログラム電圧を示す説明図である。
【図６】メモリセルの閾値電圧が初期値に達したことを確認するための主要なノードの電圧を示す説明図である。
【図７】メモリセルの閾値電圧が目標値に達したことを確認するための主要なノードの電圧を示す説明図である。
【図８】メモリセルのプログラム時におけるメモリセルの閾値電圧の分布の変化を示す説明図である。
【符号の説明】
１０  高電圧発生回路
１１  ソース電圧発生回路
１２  状態制御回路
１４  コマンドレジスタ
１６  アドレスレジスタ
１８  メモリコア
２０  データ入出力バッファ
２２  メモリセルアレイ
２２ａ  メモリセル列
２４  ロウデコーダ
２６  ページバッファ
２８  ストリングデコーダ
３０  ブロックデコーダ
３２ａ  ラッチ回路
３２ｂ  データ保持回路
３４  プログラム電圧生成回路
ARVSS  ソース電圧、ソース線
BL  ビット線
BLK  ブロック
CNT  制御信号
I/O  入出力端子
MC  メモリセル
WL  ワード線
【図１】
0003987715.tif 000002
【図２】
0003987715.tif 000003
【図３】
0003987715.tif 000004
【図４】
0003987715.tif 000005
【図５】
0003987715.tif 000006
【図６】
0003987715.tif 000007
【図７】
0003987715.tif 000008
【図８】
0003987715.tif 000009