(57)【特許請求の範囲】
【請求項１】
各々が電荷蓄積部を有するＭＯＳＦＥＴ構造からなる複数のメモリセルを有する不揮発性半導体メモリであって、
書込データに対応した書込電圧を段階的に増加させつつ前記メモリセルのいずれかのドレイン領域又はソース領域に印加することにより前記電荷蓄積部に電荷を注入する書込電圧印加部と、
前記電荷蓄積部に蓄積された電荷量が所定の電荷量を超えた場合には、前記書込電圧を低下させた後に、段階的に増加させる制御部と、を有することを特徴とする不揮発性半導体メモリ。
【請求項２】
前記制御部は、
前記書込電圧として第１電圧及び当該第１電圧よりも低い第２電圧を夫々生成する書込電圧発生部と、
前記メモリセルから読み出された読出電流値に基づき、前記電荷蓄積部に蓄積された電荷量が前記書込データの値に対応した第１電荷量よりも低い第２電荷量を超えたか否かを判定する第１判定部と、
前記第１判定部が前記電荷蓄積部に蓄積された電荷量が前記第２電荷量を超えたと判定するまでは前記書込電圧として前記第１電圧を設定する一方、前記第１判定部が前記第２電荷量を超えたと判定した場合には前記書込電圧を前記第１電圧から前記第２電圧に切り替える電圧切換部と、を有することを特徴とする請求項１記載の不揮発性半導体メモリ。
【請求項３】
前記第２電圧を有する前記書込電圧が前記メモリセルのドレイン領域又はソース領域に印加された際に前記メモリセルから読み出された読出電流値に基づき、前記電荷蓄積部に蓄積された電荷量が前記第１電荷量に到達したか否かを判定する第２判定部を更に備え、
前記電圧切換部は、前記第２判定部が前記電荷蓄積部に蓄積された電荷量が前記第１電荷量に到達したと判定した場合に前記メモリセルのドレイン領域又はソース領域をハイインピーダンス状態に設定することを特徴とする請求項２記載の不揮発性半導体メモリ。
【請求項４】
各々が電荷蓄積部を有するＭＯＳＦＥＴ構造からなる複数のメモリセルを有する不揮発性半導体メモリにデータを書き込むデータ書き込み方法であって、
書込データの値に対応した第１書込電圧を段階的に増加させつつ前記メモリセルのドレイン又はソース領域に印加することにより、前記電荷蓄積部に対して前記書込データの値に対応した第１電荷量よりも低い第２電荷量を超えるまで電荷を注入する第１ステップと、
前記電荷蓄積部に蓄積された電荷量が前記第２電荷量を超えた場合には前記第１書込電圧に代えて前記第１書込電圧よりも低い第２書込電圧を前記メモリセルのドレイン又はソース領域に印加した後に前記第２書込電圧を増加して行くことにより前記電荷蓄積部に電荷を注入してその電荷蓄積量を前記第１電荷量に到らせる第２ステップと、を順次実行することを特徴とするデータ書き込み方法。
【請求項５】
夫々が異なる値を示す前記書込データの書き込み対象となる複数のメモリセル各々に対して同時に前記第１ステップ及び前記第２ステップを実行することを特徴とする請求項４記載のデータ書き込み方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体不揮発性メモリ及び、この半導体不揮発性メモリにおけるデータ書き込み方法に関する。
【背景技術】
【０００２】
現在、半導体不揮発性メモリとして、夫々が単一のＭＯＳ（Metal Oxide Semiconductor）トランジスタからなるメモリセルのドレイン領域及びソース領域の各々に電荷蓄積部を設け、各電荷蓄積部に電荷を蓄積させることにより、２値（０、１）のビットデータを２系統分、つまり２ビットのデータを記憶できるようにしたものが知られている（例えば、非特許文献１、特許文献１参照）。
【０００３】
かかる半導体不揮発性メモリでは、上記電荷蓄積部に電荷（電子）が蓄積されていない状態が初期状態であり、この電荷が蓄積されていない状態がデータ"１"に対応しており、電荷が蓄積された状態がデータ"０"に対応している。
【０００４】
この半導体不揮発性メモリに対するデータの書き込み・読み出し・消去は夫々以下の如く実施される。
【０００５】
まず、ドレイン側の電荷蓄積部に対するデータ"０"の書き込みは、ドレイン領域に正電圧、ゲート電極に正電圧、ソース領域に接地電圧を夫々印加することにより行う。これにより、ホットエレクトロンがドレイン側の電荷蓄積部に注入され、データ"０"が書き込まれることとなる。一方、ドレイン側のデータ読み出しは、ソース領域に正電圧、ゲート電極に正電圧、ドレイン領域に接地電圧を夫々印加することにより行う。この際、ドレイン側の電荷蓄積部に電荷が蓄積されていない場合には、所定閾値よりも大なる電流が読み出されるので、データ"１"が読み出されたと判別する。一方、ドレイン側の電荷蓄積部に電荷が蓄積されている場合には、読み出される電流値は所定閾値を下回るので、データ"０"が読み出されたと判別する。このように、読み出し電流値が所定閾値以上であるか否かにより、２値のデータ"０"又は"１"の判別が為される。
【０００６】
このように、上記した半導体不揮発性メモリにおいては、読み出された電流値の大きさによって、２値のデータ"０"又は"１"を判別するようにしている。ところで、データ"０"及び"１"の各々に対応した読み出し電流値は、半導体不揮発性メモリに形成されている全メモリセルにおいて均一となることが望ましいが、製造上のバラツキ等により、実際にはメモリセル毎にバラツキが生じる。
【０００７】
そこで、このようなバラツキに伴いデータ"１"に対応した読み出し電流値が分布する範囲と、データ"０"に対応した読み出し電流値が分布する範囲と、の間に存在する領域（以下、電流ウィンドウと称する）内において、データ"０"及び"１"を判別する為の閾値を設定するようにする。この際、精度良く２値のデータ"０"及び"１"の判別を行う為には、電流ウィンドウの幅が広い程良い。
【０００８】
ところで、上記した如き半導体不揮発性メモリでは、単一のメモリセルに設けられた２つの電荷蓄積部の各々に対して、４値のデータ"００"、"０１"、"１０"、"１１"の書き込み及び読み出しが実施されている。４値のデータ"００"、"０１"、"１０"、"１１"を書き込んで読み出す場合には、２値のデータ"０"、"１"を書き込んで読み出す場合に比して、電流ウィンドウの幅が狭くなる。よって、メモリセルから読み出された電流値がデータ"００"、"０１"、"１０"、"１１"のいずれに該当するのかを、精度良く判別することが困難になるという問題が生じる。
【０００９】
そこで、このような半導体不揮発性メモリでは、上記した電流ウィンドウの幅を広げるべく、以下の如き２段階の書き込みを行うようにしている。先ず、第１段階では、メモリセルのドレイン電極に対して段階的に増加するドレイン電圧を印加することにより迅速に電荷を注入するドレイン・ステッピング処理を実行し、この間、読出電流値が所定閾値の近傍に到った時点で上記ドレイン・ステッピング処理を停止する。次に、第２段階では、メモリセルのゲート電極に対して段階的に増加するゲート電圧を印加することにより微量ずつ電荷を注入するゲート・ステッピング処理を実行し、この間、読出電流値が所定閾値より低下したらメモリセルに対する書き込みが終了したと判断する。すなわち、第１段階のドレイン・ステッピング処理により迅速な電荷注入を行い、読出電流値が所定閾値の近傍に到達したら、ゲート・ステッピング処理による微量な電荷注入動作に切り替えることにより、正確にその蓄積電荷量を所望量に到らせるのである。なお、メモリセルに対して２段階の書き込みを行うにあたり、第１段階ではメモリセルに印加する電圧を高電圧とし、第２段階ではメモリセルに印加する電圧を低電圧に切り替えるようにした書込方法が知られている（特許文献２参照）。
【００１０】
上記の如き２段階の書き込みによれば、１回の電圧印加によって所望の蓄積電荷量に到らせようとする書込方法に比べて、正確に各メモリセルに所望量の電荷を蓄積させることが可能となる。よって、書込データにおける各値毎の読出電流値の分布幅が狭まるので、電流ウィンドウの幅を広げることが可能となる。
【００１１】
しかしながら、上記したゲート・ステッピング処理によると、電荷の蓄積量を正確に所望量に到らせることができるが、１回分の書込処理で注入できる電荷の量が微量である為、書込回数が多くなり、データ書き込みに費やされる時間が増大するという問題があった。
【先行技術文献】
【非特許文献】
【００１２】
【非特許文献１】Ｂｏａｚ Ｅｉｔａｎほか１１名著、“４−ｂｉｔ ｐｅｒ Ｃｅｌｌ ＮＲＯＭ Ｒｅｌｉａｂｉｌｉｔｙ”、ＩＥＥＥ Ｉｎｔｅｒｎａｔｉｏｎａｌ Ｅｌｅｃｔｒｏｎ Ｄｅｖｉｃｅｓ Ｍｅｅｔｉｎｇ ２００５：ｉｅｄｍ Ｔｅｃｈｎｉｃａｌ Ｄｉｇｅｓｔ：Ｗａｓｈｉｎｇｔｏｎ，ＤＣ：Ｄｅｃｅｍｂｅｒ ５−７，２００５、米国、ＩＥＥＥ、２００５年、Ｓｅｓｓｉｏｎ ２２．１
【特許文献】
【００１３】
【特許文献１】特表２００８−５２７６１１
【特許文献２】特開平１０−２７５８４２
【発明の概要】
【発明が解決しようとする課題】
【００１４】
本発明は、各メモリセルに電荷蓄積部が設けられた半導体不揮発性メモリにおいて、迅速に且つ精度良く書込データに対応した所定量の電荷をメモリセルの電荷蓄積部に蓄積させることが可能な半導体不揮発性メモリ及びデータ書き込み方法を提供することを目的とする。
【課題を解決するための手段】
【００１５】
本発明による半導体不揮発性メモリは、各々が電荷蓄積部を有するＭＯＳＦＥＴ構造からなる複数のメモリセルを有する不揮発性半導体メモリであって、書込データに対応した書込電圧を段階的に増加させつつ前記メモリセルのいずれかのドレイン領域又はソース領域に印加することにより前記電荷蓄積部に電荷を注入する書込電圧印加部と、前記電荷蓄積部に蓄積された電荷量が所定の電荷量を超えた場合には、前記書込電圧を低下させた後に、段階的に増加させる制御部と、を有する。
【００１６】
また、本発明によるデータ書き込み方法は、各々が電荷蓄積部を有するＭＯＳＦＥＴ構造からなる複数のメモリセルを有する不揮発性半導体メモリにデータを書き込むデータ書き込み方法であって、書込データの値に対応した第１書込電圧を段階的に増加させつつ前記メモリセルのドレイン又はソース領域に印加することにより、前記電荷蓄積部に対して前記書込データの値に対応した第１電荷量よりも低い第２電荷量を超えるまで電荷を注入する第１ステップと、前記電荷蓄積部に蓄積された電荷量が前記第２電荷量を超えた場合には前記第１書込電圧に代えて前記第１書込電圧よりも低い第２書込電圧を前記メモリセルのドレイン又はソース領域に印加した後に前記第２書込電圧を増加して行くことにより前記電荷蓄積部に電荷を注入してその電荷蓄積量を前記第１電荷量に到らせる第２ステップと、を順次実行する。
【発明の効果】
【００１７】
本発明においては、書込データに対応した書込電圧をメモリセルのドレイン領域又はソース領域に印加することによりメモリセルに形成されている電荷蓄積部に電荷を注入するにあたり、電荷蓄積部に蓄積された電荷量の増加に応じて書込電圧を低減することにより、電荷蓄積部に蓄積された電荷量を書込データの値に対応した電荷量に到らせる。
【００１８】
よって、本発明によれば、電荷蓄積量を所定量に到らせるまでの書き込み回数が比較的多くなるゲート・ステッピング処理、つまり書込データに対応した書込電圧をメモリセルのゲート領域に印加することによって電荷を注入する処理、を併用する従来のデータ書き込み方法に比べて、その書き込み回数を減らすことができる。
【００１９】
更に、本発明においては、複数のメモリセルの各々に対して夫々異なる値の書込データを同時に書き込むことができるので、書込データの値毎に時分割でその書込データに対応した量の電荷を注入する場合に比して、書き込みに費やされる時間を短縮させることが可能となる。
【図面の簡単な説明】
【００２０】
【図１】半導体不揮発性メモリの内部構成を示すブロック図である。
【図２】メモリセル１０の構造を示す断面図である。
【図３】カラムデコーダ１０６に含まれるデータ書き込み回路を示すブロック図である。
【図４】状態判定回路２２の動作を示す真理値表である。
【図５】データ書き込みプログラムを示すフロー図である。
【図６】データ書き込み動作中における読出電流値の推移を表す図である。
【発明を実施するための形態】
【００２１】
本発明による半導体不揮発性メモリにおいては、書込データに対応した書込電圧をメモリセルのドレイン領域又はソース領域に印加することによりメモリセルに形成されている電荷蓄積部に電荷を注入するにあたり、電荷蓄積部に蓄積された電荷量の増加に応じて書込電圧を低減する。すなわち、書込データの値に対応した書込電圧として第１電圧をメモリセルのドレイン又はソース領域に印加することにより、電荷蓄積部に対して書込データの値に対応した第１電荷量よりも低い第２電荷量を超えるまで電荷を注入し、第２電荷量を超えたら、第１電圧よりも低い第２電圧を有する書込電圧をメモリセルのドレイン又はソース領域に印加することにより電荷蓄積部に電荷を注入してその電荷蓄積量を第１電荷量に到らせる。
【実施例】
【００２２】
図１は、半導体不揮発性メモリの全体構成を示すブロック図である。
【００２３】
図１に示すように、かかる半導体不揮発性メモリは、メモリセルアレイ１００、ロウデコーダ１０４、カラムデコーダ１０６及びコントローラ１０８を有する。
【００２４】
メモリセルアレイ１００には、列方向に配列された複数のビット線ＢＬ１〜ＢＬＭ（Ｍは２以上の整数）及びこれと交差して行方向に配列された複数のワード線ＷＬ１〜ＷＬＮ（Ｎは２以上の整数）が設けられている。ビット線ＢＬ及びワード線ＷＬによる各交叉部にはメモリセル１０が設けられている。メモリセル１０は、例えばｎチャネル型のＭＯＳＦＥＴ（Metal-Oxide-Semiconductor Field-Effect Transistor)から構成されている。
【００２５】
図２は、かかるメモリセル１０の主要部を示す断面図である。
【００２６】
図２に示す如く、ｐ型のシリコン基板１２の上面には、ＳｉＯ2からなるゲート酸化膜１６を介してポリシリコンからなるゲート電極１７（以下、ゲート端子とも言う）が形成されている。このゲート電極１７が図１に示すようにワード線ＷＬに接続されている。シリコン基板１２表面のゲート電極１７を挟む位置にｎ型不純物を高濃度に含有するソース領域１３およびドレイン領域１４が形成されている。これらソース領域１３（以下、ソース端子とも言う）及びドレイン領域１４（以下、ドレイン端子とも言う）が夫々、図１に示す如く互いに異なるビット線ＢＬに接続されている。ゲート電極１７直下のシリコン基板１２の表面領域はＭＯＳＦＥＴの動作時において電流路が形成されるチャンネル領域１５である。チャンネル領域１５とソース領域１３およびドレイン領域１４との間にはソース領域１３およびドレイン領域１４に隣接して比較的不純物濃度の低いｎ型のエクステンション領域１８および１９が形成されている。このエクステンション領域１８および１９は、後述する電荷蓄積部に効率的に電荷を注入するために設けられるものである。ソース側のエクステンション領域１８の上部には電荷蓄積部３０が設けられ、ドレイン側のエクステンション領域１９の上部には電荷蓄積部３２が設けられている。電荷蓄積部３０及び３２の各々は、シリコン酸化膜３０１、シリコン窒化膜３０３、シリコン酸化膜３０５からなるＯＮＯ積層絶縁膜により構成される。電荷蓄積部３０及び電荷蓄積部３２は、それぞれエクステンション領域１８および１９からゲート電極１７の側壁に亘って延在している。これにより、電荷の蓄積および保持を確実に行うことができる。また、電荷蓄積部３０及び電荷蓄積３２は、物理的に連続せず、互いに離間して形成されているので、各電荷蓄積部に対して別個独立に電荷を蓄積保持できる。
【００２７】
かかる構成により、各メモリセル１０は、ワード線ＷＬを介してそのゲート端子に印加された電圧、及び一対のビット線ＢＬを介してドレイン端子及びソース端各々に印加された電圧に応じて、このビット線ＢＬを介してデータの書込及び読出が為されることになる。
【００２８】
コントローラ１０８は、メモリセルアレイ１００に書き込むべきデータが外部より入力されると、データ書き込みプログラム（後述する）を実行し、その書き込み先を示すアドレス情報及びワード線ＷＬに印加すべき電圧を指定する情報を含む制御信号を、ロウデコーダ１０４に供給する。更に、コントローラ１０８は、このアドレス情報及び書き込むべきデータに対応したビット線ＢＬに印加すべき電圧を指定する電圧指定信号ＶＴ（後述する）を含む制御信号を、カラムデコーダ１０６に供給する。この際、コントローラ１０８は、後述するように、第１ベリファイ（verification）処理における検証をパス（合格）、つまり書込データの値に対応した十分な量の電荷蓄積が為されたと判定した場合には論理レベル１、電荷蓄積量が不十分であると判定した場合には論理レベル０の第１ベリファイ結果信号Ｖｅｒｉｆｙをカラムデコーダ１０６に供給する。また、コントローラ１０８は、後述するように、第２ベリファイ処理における検証をパスした場合には論理レベル１、それ以外の場合には論理レベル０の第２ベリファイ結果信号ＶｅｒｉｆｙＮをカラムデコーダ１０６に供給する。尚、第１ベリファイ処理では、後述するように、書込データの値に対応した閾電流値Ｉｔｈをリファレンス電流値Ｉｒｅｆとして用いて電荷蓄積量の検証を行い、第２ベリファイ処理では、この閾電流値Ｉｔｈにオフセットαを加えたものをリファレンス電流値Ｉｒｅｆとして用いて電荷蓄積量の検証を行うものである。
【００２９】
ロウデコーダ１０４は、コントローラ１０８より供給された制御信号に基づいて、メモリセルアレイ１００に形成されているワード線ＷＬ１〜ＷＬＮの内の１のワード線ＷＬを選択し、このワード線ＷＬにゲート電圧を供給する。これにより、ゲート電圧が供給された１のワード線ＷＬに接続されているメモリセル１０の各々がデータの書込又は読出対象となる。
【００３０】
カラムデコーダ１０６は、コントローラ１０８より供給された制御信号に基づいて少なくとも１対のビット線ＢＬを選択し、選択したビット線ＢＬに接続されたメモリセル１０のドレインソース端子間に書込電圧を供給する。又、カラムデコーダ１０６は、ビット線ＢＬを接地電位に設定することにより、メモリセル１０の電荷蓄積部３２に蓄積された電荷に伴う電流をビット線ＢＬ上に送出させ、このビット線ＢＬ上に送出された電流値を表す読出電流値をコントローラ１０８に供給する。
【００３１】
図３は、カラムデコーダ１０６に含まれるデータ書き込み回路の一例を示すブロック図である。尚、図３においては、メモリセルアレイ１００に形成されているビット線ＢＬ１〜ＢＬＭの各々毎に設けられているＭブロック分のデータ書き込み回路の内の１ブロック分の構成を示すものである。
【００３２】
図３に示すように、かかるデータ書き込み回路は、プログラムデータレジスタ２１、状態判定回路２２、書込電圧発生回路２３、及びレベルシフタ２４１〜２４６からなる。
【００３３】
プログラムデータレジスタ２１は、外部供給されたデータの内から、そのビット線ＢＬに接続されているメモリセル１０に書き込むべきビット桁に対応した２ビットのデータ（以下、書込データと称する）を抽出し、この書込データによって表される値を３ビットで表すプログラムデータＤＴ０〜ＤＴ２を生成する。
【００３４】
例えば書込データが"００"を表す場合には、プログラムデータレジスタ２１は、
ＤＴ０：１
ＤＴ１：０
ＤＴ２：０
なるプログラムデータＤＴ０〜ＤＴ２を生成する。
【００３５】
又、書込データが"０１"を表す場合には、プログラムデータレジスタ２１は、
ＤＴ０：０
ＤＴ１：１
ＤＴ２：０
なるプログラムデータＤＴ０〜ＤＴ２を生成する。
【００３６】
又、書込データが"１０"を表す場合には、プログラムデータレジスタ２１は、
ＤＴ０：０
ＤＴ１：０
ＤＴ２：１
なるプログラムデータＤＴ０〜ＤＴ２を生成する。
【００３７】
又、書込データが"１１"を表す場合には、プログラムデータレジスタ２１は、
ＤＴ０：０
ＤＴ１：０
ＤＴ２：０
なるプログラムデータＤＴ０〜ＤＴ２を生成する。
【００３８】
プログラムデータレジスタ２１は、上記したプログラムデータＤＴ０〜ＤＴ２を保持すると共に、これを状態判定回路２２に供給する。
【００３９】
状態判定回路２２は、図４に示す真理値表に従って、上記プログラムデータＤＴ０〜ＤＴ２の値、及び第１ベリファイ結果信号Ｖｅｒｉｆｙ及び第２ベリファイ結果信号ＶｅｒｉｆｙＮに基づいて、電荷蓄積部３０及び３２の書込状態を判定し、その判定結果を示す判定結果信号Ｓ０〜Ｓ２及びＮＳ０〜ＮＳ２を、図３に示す如くレベルシフタ２４1〜２４6に夫々供給する。
【００４０】
書込電圧発生回路２３は、書込データとして"００"を書き込む際に用いるドレイン電圧として、ドレイン電圧ＰＤＶ０と、このドレイン電圧ＰＤＶ０よりも低いドレイン電圧ＮＰＤＶ０とを生成する。また、書込電圧発生回路２３は、書込データとして"０１"を書き込む際に用いるドレイン電圧として、ドレイン電圧ＰＤＶ１と、このドレイン電圧ＰＤＶ１よりも低いドレイン電圧ＮＰＤＶ１とを生成する。更に、書込電圧発生回路２３は、書込データとして"１０"を書き込む際に用いるドレイン電圧として、ドレイン電圧ＰＤＶ２と、このドレイン電圧ＰＤＶ２よりも低いドレイン電圧ＮＰＤＶ２とを生成する。書込電圧発生回路２３は、これらドレイン電圧ＰＤＶ０〜ＰＤＶ２、ＮＰＤＶ０〜ＮＰＤＶ２を、図３に示す如くレベルシフタ２４1〜２４6に夫々供給する。
【００４１】
レベルシフタ２４1〜２４6の各々は、夫々に供給される判定結果信号Ｓ０〜Ｓ２、ＮＳ０〜ＮＳ２が論理レベル１である場合には、そのレベルシフタ２４に供給されたドレイン電圧（ＰＤＶ０〜２、ＮＰＤＶ０〜２）を書込電圧としてビット線ＢＬに印加する。尚、レベルシフタ２４1〜２４6の各々は、夫々に供給される判定結果信号Ｓ０〜Ｓ２、ＮＳ０〜ＮＳ２が論理レベル０である場合には、ビット線ＢＬをハイインピーダンス状態に設定する。よって、例えば、図４に示されるように、判定結果信号Ｓ０〜Ｓ２及びＮＳ０〜ＮＳ２の内でＳ０のみが論理レベル１、その他の全ての判定結果信号が論理レベル０である場合には、レベルシフタ２４1〜２４6の内の２４3のみが、この２４3に供給されているドレイン電圧ＰＤＶ０をビット線ＢＬに印加する。更に、レベルシフタ２４1〜２４6の各々は、コントローラ１０８から供給された電圧指定信号ＶＴに応じて、これらドレイン電圧ＰＤＶ０〜ＰＤＶ２、ＮＰＤＶ０〜ＮＰＤＶ２各々の電圧値を変更する。
【００４２】
以下に、図３に示す構成を有するデータ書き込み回路の動作について説明する。
【００４３】
図５は、かかるデータ書き込み回路を動作させるべく、コントローラ１０８によって実行されるデータ書き込みプログラムの一例を示す図である。
【００４４】
このデータ書き込みプログラムは、書込データに基づくプログラムデータＤＴ０〜ＤＴ２がプログラムデータレジスタ２１に保持される度に、書き込み対象となったワード線ＷＬに接続されているメモリセル１０の各々対して個別に実行される。
【００４５】
図５において、先ず、コントローラ１０８は、リフアレンス電流値Ｉｒｅｆとして、上記した書込データの値（"００"、"０１"、"１０"、又は"１１"）に対応した閾電流値Ｉｔｈを設定する（ステップＳＴ１）。例えば、書込データの値である"００"、"０１"、"１０"の各々に対応した、夫々異なる値を有する第１〜第３の閾電流値Ｉｔｈが割り当てられており、これら第１〜第３の閾電流値Ｉｔｈの内から、実際に供給された書込データの値に対応した閾電流値Ｉｔｈが選択され、この選択された閾電流値Ｉｔｈが設定されるのである。この際、上記閾電流値Ｉｔｈとは、書込データの値に対応した十分な量の電荷（第１電荷量）がメモリセル１０の電荷蓄積部３０（又は３２）に蓄積されている際に、このメモリセル１０から読み出された電流値として取り得る最低の電流値である。つまり、閾電流値Ｉｔｈとは、電荷蓄積部３０（又は３２）に蓄積されている電荷の量が、書込データの値に対応した第１電荷量に達したが否かを判別する為の閾値なのである。
【００４６】
次に、コントローラ１０８は、ロウデコーダ１０４によって書込対象となる１つのワード線ＷＬに高電圧を印加させると共に、カラムデコーダ１０６によってビット線ＢＬを接地電位に設定させることにより、電荷蓄積部３２に蓄積された電荷に伴う電流（以下、読出電流と称する）をビット線ＢＬ上に読み出す（ステップＳＴ２）。この際、カラムデコーダ１０６は、ビット線ＢＬ上に読み出された読出電流を検出し、その電流値を示す読出電流値ＲＤをコントローラ１０８に供給する。
【００４７】
次に、コントローラ１０８は、この読出電流値ＲＤがリフアレンス電流値Ｉｒｅｆよりも低いか否かを判定する、第１ベリファイを実行する（ステップＳＴ３）。すなわち、第１ベリファイでは、量電荷蓄積部３２に蓄積された電荷量が書込データに対応した量を超えたた否かを、その読出電流値に基づいて判定するのである。この際、電荷蓄積部３２に蓄積された電荷量が書込データに対応した量を超えたと判定された場合に、この第１ベリファイをパスしたことになる。
【００４８】
上記ステップＳＴ３において、読出電流値ＲＤがリフアレンス電流値Ｉｒｅｆよりも大であると判定された場合、つまり電荷蓄積部３２に蓄積された電荷量が不十分であると判定された場合、コントローラ１０８は、リフアレンス電流値Ｉｒｅｆとして、上記閾電流値Ｉｔｈに所定のオフセットαを加算して得られた閾電流値（Ｉｔｈ＋α）を設定する（ステップＳＴ４）。尚、閾電流値（Ｉｔｈ＋α）とは、上記した如き書込データの値に対応した第１電荷量よりも低い第２電荷量の分だけ電荷蓄積部に電荷が蓄積されたか否かを、読出電流に基づいて判別する為の閾値である。
【００４９】
次に、コントローラ１０８は、閾電流値（Ｉｔｈ＋α）を有するリフアレンス電流値Ｉｒｅｆよりも上記読出電流値ＲＤが低いか否かを判定する、第２ベリファイを実行する（ステップＳＴ５）。すなわち、第２ベリファイでは、電荷蓄積部３２に蓄積された電荷量が、書込データに対応した第１電荷量よりもオフセットαの分だけ小なる第２電荷量を超えたか否かを、その読出電流値に基づいて判定するのである。この際、電荷蓄積部３２に蓄積された電荷量が、書込データに対応した第１電荷量よりもオフセットαの分だけ小なる第２電荷量を超えたと判定された場合に、この第２ベリファイをパスしたことになるのである。
【００５０】
上記ステップＳＴ５において、読出電流値ＲＤがリフアレンス電流値Ｉｒｅｆよりも大であると判定された場合、つまり第２ベリファイにおいて電荷蓄積量が不十分であると判定された場合、コントローラ１０８は、上記した第１及び第２ベリファイ共にパスしなかったことを表す夫々論理レベル０の第１ベリファイ結果信号Ｖｅｒｉｆｙ及び第２ベリファイ結果信号ＶｅｒｉｆｙＮを状態判定回路２２に供給する（ステップＳＴ６）。ステップＳＴ６の実行により、状態判定回路２２は、図４に示す真理値表に基づき、論理レベル０の第１ベリファイ結果信号Ｖｅｒｉｆｙ、論理レベル０の第２ベリファイ処理信号ＶｅｒｉｆＮ、及びプログラムデータＤＴ０〜ＤＴ２に応じた判定結果信号Ｓ０〜Ｓ２、ＮＳ０〜ＮＳ２を得る。この際、プログラムデータＤＴ０〜ＤＴ２が例えば書込データ"００"に対応した論理レベル、つまり、
ＤＴ０：１
ＤＴ１：０
ＤＴ２：０
である場合には、論理レベル１の判定結果信号Ｓ０に応じてレベルシフタ２４３が、書込電圧としてのドレイン電圧ＰＤＶ０をビット線ＢＬに印加する。
【００５１】
また、プログラムデータＤＴ０〜ＤＴ２が例えば書込データ"０１"に対応した論理レベル、つまり、
ＤＴ０：０
ＤＴ１：１
ＤＴ２：０
である場合には、論理レベル１の判定結果信号Ｓ１に応じてレベルシフタ２４２が、書込電圧としてのドレイン電圧ＰＤＶ１をビット線ＢＬに印加する。
【００５２】
また、プログラムデータＤＴ０〜ＤＴ２が例えば書込データ"１０"に対応した論理レベル、つまり、
ＤＴ０：０
ＤＴ１：０
ＤＴ２：１
である場合には、論理レベル１の判定結果信号Ｓ２に応じてレベルシフタ２４１が、書込電圧としてのドレイン電圧ＰＤＶ２をビット線ＢＬに印加する。
【００５３】
上記の如き書込電圧（ＰＤＶ０、ＰＤＶ１、又はＰＤＶ２）の印加により、選択されたワード線ＷＬ及びビット線ＢＬの交叉部に形成されているメモリセル１０の電荷蓄積部３２には、その書込電圧値に対応した電荷が注入される。
【００５４】
かかるステップＳＴ６の実行後、コントローラ１０８は、以下のステップＳＴ７の実行に移る。すなわち、コントローラ１０８は、レベルシフタ２４1〜２４6に対して、現在出力しているドレイン電圧ＰＤＶ０〜ＰＤＶ２各々の電圧値を所定のステップ電圧ＶＳＰ１だけ高めると共に、ドレイン電圧ＮＰＤＶ０〜ＮＰＤＶ２各々の電圧値を所定のステップ電圧ＶＳＰ２だけ高めるべき電圧指定信号ＶＴを供給する（ステップＳＴ７）。
【００５５】
ステップＳＴ７の実行後、コントローラ１０８は、上記ステップＳＴ１の実行に戻り、前述した如き動作を繰り返し実行する。
【００５６】
すなわち、ステップＳＴ５において、リフアレンス電流値Ｉｒｅｆよりも読出電流値ＲＤが低い、つまり電荷蓄積部３２に蓄積された電荷量が、書込データに対応した第１電荷量よりもオフセットαの分だけ小なる第２電荷量を超えたと判定されるまで、上記ステップＳＴ１〜ＳＴ７なる処理を繰り返し実行するのである。要するに、第２ベリファイをパスするまで、ビット線ＢＬに印加するドレイン電圧ＰＤＶを段階的に増加させつつ、メモリセル１０から読み出された読出電流値に基づいて、電荷蓄積部３２に蓄積された電荷量が第２電荷量に達したか否かの判定を行うのである。
【００５７】
この間、ステップＳＴ５において、リフアレンス電流値Ｉｒｅｆ（Ｉｔｈ＋α）よりも読出電流値ＲＤが低いと判定された場合、つまり第２ベリファイをパスした場合、コントローラ１０８は、第２ベリファイがパスしたことを表す論理レベル１の第２ベリファイ結果信号ＶｅｒｉｆｙＮ、及び第１ベリファイがパスしなかったことを表す論理レベル０の第１ベリファイ結果信号Ｖｅｒｉｆｙを状態判定回路２２に供給する（ステップＳＴ８）。ステップＳＴ８の実行により、状態判定回路２２は、図４に示す真理値表に基づき、論理レベル０の第１ベリファイ結果信号Ｖｅｒｉｆｙ、論理レベル１の第２ベリファイ処理信号ＶｅｒｉｆＮ、及びプログラムデータＤＴ０〜ＤＴ２に応じた判定結果信号Ｓ０〜Ｓ２、ＮＳ０〜ＮＳ２を得る。この際、プログラムデータＤＴ０〜ＤＴ２が例えば書込データ"００"に対応した論理レベル、つまり、
ＤＴ０：１
ＤＴ１：０
ＤＴ２：０
である場合には、論理レベル１の判定結果信号ＮＳ０に応じてレベルシフタ２４６が、書込電圧としてのドレイン電圧ＮＰＤＶ０をビット線ＢＬに印加する。
【００５８】
また、プログラムデータＤＴ０〜ＤＴ２が例えば書込データ"０１"に対応した論理レベル、つまり、
ＤＴ０：０
ＤＴ１：１
ＤＴ２：０
である場合には、論理レベル１の判定結果信号ＮＳ１に応じてレベルシフタ２４５が、書込電圧としてのドレイン電圧ＮＰＤＶ１をビット線ＢＬに印加する。
【００５９】
また、プログラムデータＤＴ０〜ＤＴ２が例えば書込データ"１０"に対応した論理レベル、つまり、
ＤＴ０：０
ＤＴ１：０
ＤＴ２：１
である場合には、論理レベル１の判定結果信号ＮＳ２に応じてレベルシフタ２４４が、書込電圧としてのドレイン電圧ＮＰＤＶ２をビット線ＢＬに印加する。
【００６０】
上記の如き書込電圧（ＮＰＤＶ０、ＮＰＤＶ１、又はＮＰＤＶ２）の印加により、選択されたワード線ＷＬ及びビット線ＢＬの交叉部に形成されているメモリセル１０の電荷蓄積部３２には、その書込電圧値に対応した電荷が注入される。
【００６１】
ステップＳＴ８の実行後、コントローラ１０８は、上記ステップＳＴ７の実行に移り、ステップＳＴ１〜ＳＴ５、ＳＴ８、ＳＴ７なる処理を繰り返し実行する。
【００６２】
すなわち、第２ベリファイをパスした場合には、ビット線ＢＬに印加するドレイン電圧を、ＰＤＶよりも低いＮＰＤＶに切り替え（ＳＴ８）、その電圧値を段階的に増加させつつ（ＳＴ７）、メモリセル１０から読み出された読出電流値ＲＤに基づき、電荷蓄積部３２に蓄積された電荷量が、書込データの値に対応した第１電荷量に達したか否かの判定（ＳＴ３）、つまり第１ベリファイを行うのである。
【００６３】
この間、ステップＳＴ３において、読出電流値ＲＤがリフアレンス電流値Ｉｒｅｆ（閾電流値Ｉｔｈ）よりも低いと判定された場合、つまり書込データに対応した十分な量の電荷が電荷蓄積部３２に蓄積されたと判定された場合、コントローラ１０８は、第１ベリファイをパスしたことを表す論理レベル１の第１ベリファイ結果信号Ｖｅｒｉｆｙを状態判定回路２２に供給する（ステップＳＴ９）。ステップＳＴ９の実行により、第１ベリファイ結果信号Ｖｅｒｉｆｙ及び第２ベリファイ結果信号ＶｅｒｉｆｙＮは共に論理レベル１となるので、状態判定回路２２は、図４に示す真理値表に基づき、全てが論理レベル０となる判定結果信号Ｓ０〜Ｓ２、ＮＳ０〜ＮＳ２を得る。これにより、ビット線ＢＬに対するドレイン電圧の印加が為されなくなるので、ビット線ＢＬはハイインピーダンス状態に設定される。
【００６４】
ステップＳＴ９の実行後、コントローラ１０８は、選択されたワード線ＷＬに接続されているメモリセル１０各々の内で書込対象となった全てのメモリセル１０に対して、第１ベリファイ結果信号Ｖｅｒｉｆｙ及び第２ベリファイ結果信号ＶｅｒｉｆｙＮが共に論理レベル１となったか否かを判定する（ステップＳＴ１０）。すなわち、書込対象となった全てのメモリセル１０の電荷蓄積部３２に、書込データに対応した十分な量の電荷が蓄積されたか否かを判定するのである。この際、ステップＳＴ１０において、書込対象となった全てのメモリセル１０に対する第１ベリファイ結果信号Ｖｅｒｉｆｙ及び第２ベリファイ結果信号ＶｅｒｉｆｙＮが論理レベル１となったと判定されるまで、書込対象となった全てのメモリセル１０に対して、ステップＳＴ１〜ＳＴ１０の動作を繰り返し実行する。
【００６５】
以下に、図５に示されるデータ書き込みプログラムの実行によって為されるデータ書き込み動作ついて、図６に示す如き読出電流値の推移を表す図を参照しつつ説明する。
【００６６】
先ず、初期状態時には、書込対象となったメモリセル１０各々の電荷蓄積部３２（又は３０）には電荷の蓄積が為されていないので、各メモリセル１０から読み出された読出電流として取り得る読出電流値の分布ＶＰは、図６（ａ）に示す如く、閾電流値Ｉｔｈよりも大幅に大なる電流値を中心としたものとなる。よって、この初期段階では、第１ベリファイ（ＳＴ３）及び第２ベリファイ（ＳＴ５）を共にパスすることはない。
【００６７】
ここで、図５に示すステップＳＴ１〜ＳＴ７なる一連の処理を繰り返し実行することにより、ビット線ＢＬに印加するドレイン電圧ＰＤＶをステップ電圧ＶＳＰ１ずつ段階的に高めて行くと、メモリセル１０の電荷蓄積部に蓄積される電荷の量が増加して行く。それに伴い各メモリセル１０から読み出された読出電流値の分布ＶＰも図６（ｂ）に示すように、閾電流値Ｉｔｈに近づいて行く。
【００６８】
この際、第２ベリファイ（ＳＴ５）において、図６（ｃ）に示す如く、読出電流値が、閾電流値（Ｉｔｈ＋α）よりも低くなったと判定された場合には、ビット線ＢＬに印加するドレイン電圧をＰＤＶから、このＰＤＶよりも低い電圧であるドレイン電圧ＮＰＤＶに切り替える（ＳＴ８）。つまり、読出電流値が閾電流値Ｉｔｈより高いものの閾電流値（Ｉｔｈ＋α）よりも低くなった場合には、ドレイン電圧を一旦、ＰＤＶからＮＰＤＶに低下させ、このＮＰＤＶの状態から段階的に電圧を高めて行くことにより、その読出電流値を精密に閾電流値Ｉｔｈに到らせるべき電荷注入動作（ＳＴ８、ＳＴ７、ＳＴ１〜ＳＴ５）に切り替えるのである。この一連の処理により、書込対象となったメモリセル１０各々の内の一部において、図６（ｄ）に示す如く、その読出電流値が閾電流値Ｉｔｈよりも低くなる、つまり書込データの値に対応した十分な量（第１電荷量）の電荷蓄積が完了する。この際、第１ベリファイ（ＳＴ３）において読出電流値が閾電流値Ｉｔｈよりも低くなったと判定されるので、このメモリセル１０が接続されているビット線ＢＬはハイインピーダンス状態に設定される（ＳＴ９）。
【００６９】
その後、上記ステップＳＴ８、ＳＴ７、ＳＴ１〜ＳＴ５なる一連の処理を繰り返すことにより、書込対象となった全てのメモリセル１０から読み出された読出電流値が、図６（ｅ）に示すように閾電流値（Ｉｔｈ＋α）よりも低くなり、やがて、図６（ｆ）に示すように閾電流値Ｉｔｈよりも低くなる。すなわち、書込対象となった全てのメモリセル１０に対して、書込データの値に対応した十分な量（第１電荷量）の電荷蓄積が完了するのである。
【００７０】
以上の如く、図５に示すプログラムによるデータ書き込みでは、先ず、書込電圧として第１のドレイン電圧ＰＤＶを印加することにより一度に多量の電荷を注入する動作を行う（第１電荷注入ステップ）。これにより、電荷蓄積部に対して書込データの値に対応した第１電荷量よりも低い第２電荷量まで迅速に電荷の蓄積を行う。ここで、電荷蓄積部に蓄積された電荷量が上記第２電荷量を超えたら、上記ＰＤＶよりも低い第２のドレイン電圧ＮＰＤＶを印加することにより一度に微量の電荷を注入する動作（第２電荷注入ステップ）に切り替える。これにより、電荷蓄積量を精度良く第１電荷量に到らせるようにしている。この第２電荷注入ステップの実行によれば、各メモリセルに蓄積される電荷量のバラツキが抑制され、それ故、各メモリセルによる読出電流値の分布幅が狭くなるので、電流ウィンドウの幅を広げることが可能となる。
【００７１】
このように、上記の如きデータ書き込みによれば、ドレイン・ステッピング処理だけで、迅速に且つ精度良く電荷蓄積量を所定量に到らせることが可能となる。よって、電荷蓄積量を所定量に到らせるまでの書き込み回数が比較的多くなるゲート・ステッピング処理を併用する従来のデータ書き込み方法に比べて、その書き込み回数を減らすことができるので、書込処理時間の短縮を図ることが可能となる。
【００７２】
また、図１に示される半導体不揮発性メモリにおいては、図５に示す如きデータ書き込み処理を、ビット線ＢＬ１〜ＢＬＭ各々に対して個別に実行するようにしている。よって、１つのワード線ＷＬ上に接続されている複数のメモリセル１０の各々に対して、夫々異なる値を表す書込データを同時に書き込むことが可能となる。例えば、ビット線ＢＬ１に接続されているメモリセル１０に対して書込データ"００"の書き込みを実行している間に、ビット線ＢＬ３に接続されているメモリセル１０に対する書込データ"０１"の書き込み処理を実行しつつ、ビット線ＢＬ５に接続されているメモリセル１０に対する書込データ"１０"の書き込み処理を実行することができるのである。
【００７３】
尚、上記実施例においては、各メモリセル１０に形成されている２つの電荷蓄積部３０及び３２の内のドレイン側の電荷蓄積部３２にデータを書き込む際の動作を説明したが、ソース側に形成されている電荷蓄積部３０に対しても同様にデータの書き込みが為される。この際、第１電荷注入ステップでは、書込電圧としてソース電圧ＰＤＶをメモリセル１０のソース端子に印加し、第２電荷注入ステップでは、書込電圧として、上記ソース電圧ＰＤＶよりも低いソース電圧ＮＰＤＶをメモリセル１０のソース端子に印加するのである。
【００７４】
要するに、書込電圧としての第１電圧（ＰＤＶ）をメモリセルのドレイン又はソース領域に印加することによって多量の電荷を注入する第１電荷注入ステップと、第１電圧よりも低い第２電圧（ＮＰＤＶ）をメモリセルのドレイン又はソース領域に印加することによって微量の電荷を注入する第２電荷注入ステップと、を実行すれば良いのである。
【００７５】
また、図５に示すデータ書き込み処理では、ドレイン電圧ＰＤＶの印加による第１電荷注入ステップと、上記ＰＤＶよりも低いドレイン電圧ＮＰＤＶの印加による第２電荷注入ステップとの２段階でデータの書き込みを行うようにしているが、これを３段階以上で実行するようにしても良い。
【００７６】
要するに、書込データに対応した書込電圧をメモリセルのドレイン領域又はソース領域に印加することによりメモリセルの電荷蓄積部に電荷を注入するにあたり、この電荷蓄積部に蓄積された電荷量の増加に応じて、ドレイン領域又はソース領域に印加する書込電圧を低減するのである。この際、第１電荷注入ステップをｎ段階の工程に分ける場合には、閾電流値Ｉｔｈに加算するオフセットαをｎ系統分用意し、ｎ個の閾値（Ｉｔｈ＋α）各々毎に第２ベリファイ（ＳＴ４、ＳＴ５）を実行する。更に、書込電圧発生回路２３で発生させるべきドレイン電圧ＮＰＤＶとして、夫々異なる電圧値からなるｎ系統分のＮＰＤＶを用意する。
【符号の説明】
【００７７】
１０          メモリセル
２２          状態判定回路
２３          書込電圧発生回路
２４１〜２４６  レベルシフタ
３０、３２    電荷蓄積部
１０６        カラムデコーダ
１０８        コントローラ  
【図１】
0005755909.tif 000002
【図２】
0005755909.tif 000003
【図３】
0005755909.tif 000004
【図４】
0005755909.tif 000005
【図５】
0005755909.tif 000006
【図６】
0005755909.tif 000007