(57)【要約】【課題】プログラム後のしきい値電圧分布のバラツキを最小化し、高速の書き換え特性を得る。【解決手段】不揮発性のメモリセルアレイと、上記メモリセルアレイへの書き込みを制御する制御回路とを備えた不揮発性半導体記憶装置において、上記制御回路は、書き込むメモリセルのデータを消去する消去処理の前において、上記メモリセルアレイに書き込むときのプログラム速度を検出し、当該プログラム速度に対応するプログラム開始電圧をブロック毎又はワード線毎に決定して、上記決定したプログラム開始電圧を上記メモリセルアレイに格納し、上記メモリセルアレイからプログラム開始電圧を読み出して所定のデータを書き込む。【選択図】図１９
2014132512.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性のメモリセルアレイと、上記メモリセルアレイへの書き込みを制御する制御回路とを備えた不揮発性半導体記憶装置において、
上記制御回路は、書き込むメモリセルのデータを消去する消去処理のための消去パルスを印加する前の段階において、上記メモリセルアレイに書き込むときのプログラム速度を検出し、当該プログラム速度に対応するプログラム開始電圧をブロック毎又はワード線毎に決定して、上記決定したプログラム開始電圧を上記メモリセルアレイに格納し、上記メモリセルアレイからプログラム開始電圧を読み出して所定のデータを書き込み、
上記制御回路は、上記書き込むメモリセルのデータを消去する消去処理のための消去パルスを印加する前の段階において、上記メモリセルアレイのワード線上のメモリセルに格納されたデータを用いて上記プログラム速度を検出することを特徴とする不揮発性半導体記憶装置。
【請求項２】
上記制御回路は、上記各消去処理に対して、１本のみのワード線上のデータを用いてプログラム速度を検出することを特徴とする請求項１記載の不揮発性半導体記憶装置。
【請求項３】
前記１本のみのワード線上のデータを用いてプログラム速度を検出する場合、このプログラム速度を検出するワード線のメモリセルストリング内の位置を上記消去処理毎にシフトさせて、所定の消去処理回数で１サイクルとすることを特徴とする請求項２記載の不揮発性半導体記憶装置。
【請求項４】
前記プログラム速度の検出チェックは、上記消去処理毎に消去回数をカウントしてその情報をフラグビットとしてプログラム速度データと同様に格納し、前記消去回数が所定の回数になったときにプログラム速度チェックを行いそのデータを更新することを特徴とする請求項２又は３記載の不揮発性半導体記憶装置。
【請求項５】
上記制御回路は、上記決定したプログラム開始電圧を上記メモリセルアレイのダミーのワード線上のメモリセルに格納することを特徴とする請求項１〜４のうちのいずれか１つに記載の不揮発性半導体記憶装置。
【請求項６】
上記制御回路は、上記決定したプログラム開始電圧を上記メモリセルアレイのワード線上の付加的なメモリセルに格納することを特徴とする請求項１〜４のうちのいずれか１つに記載の不揮発性半導体記憶装置。
【請求項７】
前記決定したプログラム開始電圧を格納するために、各ワード線に対して、プログラム速度の検出を行うワード線数Ｎに対応する少なくともＮバイトのメモリ領域を準備し、上記各消去処理に対応するプログラム速度の検出において用いたワード線上のメモリセルに上記決定したプログラム開始電圧を格納することを特徴とする請求項６記載の不揮発性半導体記憶装置。
【請求項８】
上記制御回路は、上記プログラム速度を検出するワード線として複数のワード線の配置方向の中央部のワード線を選択して上記プログラム速度を検出して、上記中央部のワード線の両隣にそれぞれ位置する複数本のワード線のプログラム速度として用いることを特徴とする請求項７記載の不揮発性半導体記憶装置。
【請求項９】
上記制御回路は、上記プログラム速度を検出するワード線を上記中央部のワード線として用いて上記プログラム速度を検出し、その検出データに対応するプログラム開始電圧データを当該ワード線の両隣にそれぞれ位置する複数本のワード線のうちの１本に書き込むときに、メモリセルのデータを消去する消去処理毎に、ワード線を１本ずつシフトさせながら選択することを特徴とする請求項８記載の不揮発性半導体記憶装置。
【請求項１０】
上記制御回路は、上記決定したプログラム開始電圧を上記メモリセルアレイのダミーのワード線上又はワード線上のメモリセルに格納するときに、当該プログラム開始電圧のデータの１ビットに対して３ビットのビットセルを用いて多数決論理で書き込むことを特徴とする請求項１〜９のうちのいずれか１つに記載の不揮発性半導体記憶装置。
【請求項１１】
上記制御回路は、上記格納されたプログラム開始電圧を１回の読み出しサイクルで読み出して、上記読み出したプログラム開始電圧を用いて所定のデータを書き込むことを特徴とする請求項１〜１０のうちのいずれか１つに記載の不揮発性半導体記憶装置。
【請求項１２】
上記制御回路は、上記格納されたプログラム開始電圧を１回の読み出しサイクルで読み出して、上記読み出したすべてのプログラム開始電圧をレジスタに記憶して、所定のデータを書き込むプログラム処理が該当ブロック内であれば、そのレジスタから該当ワード線のプログラム開始電圧を読み出して所定のデータを書き込むことを特徴とする請求項１〜１１のうちのいずれか１つに記載の不揮発性半導体記憶装置。
【請求項１３】
不揮発性のメモリセルアレイと、上記メモリセルアレイへの書き込みを制御する制御回路とを備えた不揮発性半導体記憶装置の書き込み方法において、
上記制御回路は、書き込むメモリセルのデータを消去する消去処理のための消去パルスを印加する前の段階において、上記メモリセルアレイに書き込むときのプログラム速度を検出し、当該プログラム速度に対応するプログラム開始電圧をブロック毎又はワード線毎に決定して、上記決定したプログラム開始電圧を上記メモリセルアレイに格納し、上記メモリセルアレイからプログラム開始電圧を読み出して所定のデータを書き込み、
上記制御回路は、上記書き込むメモリセルのデータを消去する消去処理のための消去パルスを印加する前の段階において、上記メモリセルアレイのワード線上のメモリセルに格納されたデータを用いて上記プログラム速度を検出することを特徴とする不揮発性半導体記憶装置の書き込み方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えばフラッシュメモリなどの電気的書き換え可能な不揮発性半導体記憶装置（ＥＥＰＲＯＭ）とその書き込み方法に関する。
【背景技術】
【０００２】
ビット線とソース線との間に複数のメモリセルトランジスタ（以下、メモリセルという）を直列に接続してＮＡＮＤストリングを構成し、高集積化を実現したＮＡＮＤ型不揮発性半導体記憶装置が知られている（例えば、特許文献１〜４参照。）。
【０００３】
一般的なＮＡＮＤ型不揮発性半導体記憶装置において、消去は、半導体基板に例えば２０Ｖの高電圧を印加し、ワード線に０Ｖを印加する。これにより、例えばポリシリコンなどからなる電荷蓄積層であるフローティングゲートより電子を引き抜いて、しきい値を消去しきい値（例えば、−３Ｖ）よりも低くする。一方、書き込み（プログラム）においては、半導体基板に０Ｖを与え、制御ゲートに例えば２０Ｖの高電圧を印加する。これにより、半導体基板よりフローティングゲートに電子を注入することにより、しきい値を書き込みしきい値（例えば、１Ｖ）よりも高くする。これらのしきい値をとるメモリセルは、書き込みしきい値と読み出ししきい値の間の読み出し電圧（例えば、０Ｖ）を制御ゲートに印加することにより、そのメモリセルに電流が流れるか否かにより、その状態を判断することができる。
【０００４】
以上のように構成された不揮発性半導体記憶装置において、書き込み対象であるメモリセルにプログラム動作により書き込みを行うと、メモリセルトランジスタのフローティングゲートに電荷が注入されしきい値電圧が上昇する。これにより、ゲートにしきい値以下の電圧を印加しても電流が流れなくなり、データ「０」を書き込んだ状態が達成される。一般に、消去状態のメモリセルのしきい値電圧にはバラツキがあり、プロセスバラツキにより書き込み速度にもバラツキがある。従って、所定の書き込み電圧を印加してプログラム動作を実行し、しきい値電圧がベリファイレベル以上になるようにベリファイすると、書き込み後のメモリセルのしきい値電圧はベリファイレベル以上である程度分布を有するものとなる。
【０００５】
ところで、プロセスバラツキにより、書き込み速度のバラツキが大きなメモリに対して、より効果的に書き込む方法としてＩＳＰＰ（Increment Step Pulse Program）法が用いられている。すなわち、プロセス上の加工バラツキが大きいと、１パルスによるメモリセルの書き込み後のしきい値電圧分布は大きくなる。単に、ビット毎にベリファイ技術を用いても、しきい値電圧を狭く制御しようとすると、木目細かく書き込み／ベリファイを繰り返さねばならず、結果として書き込みに長い時間が必要となる。そこで、図４に示すように、プログラムパルスＰＰの電圧をプログラム開始電圧Ｖｓｔａｒｔから開始して、所定のステップ電圧Ｖｓｔｅｐだけ上昇させつつかつビット毎にベリファイする方法が用いられている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平９−１４７５８２号公報
【特許文献２】特開２０００−２８５６９２号公報
【特許文献３】特開２００３−３４６４８５号公報
【特許文献４】特開２００１−０２８５７５号公報
【特許文献５】特開２００１−３２５７９６号公報
【特許文献６】特開２０１０−１０２７５１号公報
【特許文献７】特開２００９−２８３１１７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
ここで、ＮＡＮＤ型フラッシュＥＥＰＲＯＭをプログラムして所定のしきい値電圧分布を得るためには、プログラム開始電圧Ｖｓｔａｒｔは以下に示すように、重要なパラメータである。図５に示すように、プログラム開始電圧Ｖｓｔａｒｔはしきい値電圧分布の幅を決定し、ここで、しきい値電圧分布を狭くするためには、より低いプログラム開始電圧Ｖｓｔａｒｔを用いることが好ましいが、プログラム時間が長くなる。一方、より高いプログラム開始電圧Ｖｓｔａｒｔを用いると、プログラム時間は短くなるが、しきい値電圧分布が広くなるという問題点があった。また、プログラム及び消去のサイクルの後、もしプログラム開始電圧Ｖｓｔａｒｔが同一であれば、しきい値電圧分布の幅は広くなり、プログラム速度はメモリセルアレイのブロックにおけるワード線に依存してばらつくという問題点があった。従って、プログラム開始電圧Ｖｓｔａｒｔの最適化は重要な課題である。
【０００８】
従来技術では、一般的に、１つのチップに対して同一のプログラム開始電圧Ｖｓｔａｒｔを用いている。出願人の製造過程でも、１つのチップに対してブロック毎又はワード線毎のプログラム速度のバラツキを考慮に入れていないのが実情である（例えば、特許文献６参照。）。また、上述のように、プログラム速度が高速であるときは、各該当ブロックに対してしきい値電圧分布が広くなる。従って、データ書き換えに伴う酸化膜自身の劣化の耐久性が悪化し、高速な多回数の書き換え特性を得ることが難しいという問題点があった。
【０００９】
図６は図４のＩＳＰＰ（Increment Step Pulse Program）法を用いてＮＡＮＤ型フラッシュＥＥＰＲＯＭをプログラムするときに同一のプログラム開始電圧Ｖｓｔａｒｔを用いてプログラムしたときのしきい値電圧Ｖｔｈ分布を示す図である。図１１は従来技術で用いるプログラム開始電圧Ｖｓｔａｒｔを示す表である。図１１のごとく、各ブロックで同一のプログラム開始電圧Ｖｓｔａｒｔを用いてプログラムした場合、図６から明らかなように、しきい値電圧分布がばらつくという問題点があった。
【００１０】
この問題点を解決するために、例えば特許文献７においてプログラム開始電圧を変化する方法が開示されている。特許文献７において開示された不揮発性メモリ装置のプログラム方法は、各セルのプログラム速度に応じてプログラム開始電圧を異なって設定する不揮発性メモリ装置のプログラム方法を提供することを目的としており、第１頁に対してプログラム動作を行う段階と、前記第１頁に対するプログラム動作が完了するまでプログラムパルス印加回数をカウントする段階と、前記カウントされたプログラムパルス印加回数としきい値を比較してプログラム開始電圧を再設定する段階と、第２頁に対して前記再設定されたプログラム開始電圧に応じてプログラム動作を行う段階とを含む構成としたことを特徴としている。
【００１１】
上記の特許文献７のプログラム方法では、第１頁においては最適なプログラム開始電圧を用いることができず、ページ間の書き込みバラツキは補正されず、また、プログラムパルスの計数のみでは、しきい値電圧分布のバラツキがなくなるようにプログラム開始電圧を最適化することは難しいという問題点があった。
【００１２】
本発明の目的は以上の問題点を解決し、プログラム後のしきい値電圧分布のバラツキを最小化し、高速で多回数の書き換え特性を得ることができる不揮発性半導体記憶装置とその書き込み方法を提供することにある。
【課題を解決するための手段】
【００１３】
第１の発明に係る不揮発性半導体記憶装置は、
不揮発性のメモリセルアレイと、上記メモリセルアレイへの書き込みを制御する制御回路とを備えた不揮発性半導体記憶装置において、
上記制御回路は、書き込むメモリセルのデータを消去する消去処理のための消去パルスを印加する前の段階において、上記メモリセルアレイに書き込むときのプログラム速度を検出し、当該プログラム速度に対応するプログラム開始電圧をブロック毎又はワード線毎に決定して、上記決定したプログラム開始電圧を上記メモリセルアレイに格納し、上記メモリセルアレイからプログラム開始電圧を読み出して所定のデータを書き込むことを特徴とする。
【００１４】
上記不揮発性半導体記憶装置において、上記制御回路は、上記書き込むメモリセルのデータを消去する消去処理のための消去パルスを印加する前の段階において、上記メモリセルアレイのワード線上のメモリセルに格納されたデータを用いて上記プログラム速度を検出することを特徴とする。
【００１５】
もしくは、上記制御回路は、上記書き込むメモリセルのデータを消去する消去処理のための消去パルスを印加する前の段階において、上記メモリセルアレイのダミーワード線上の所定のメモリセルを用いて上記プログラム速度を検出することを特徴とする。
【００１６】
もしくは、上記制御回路は、上記書き込むメモリセルのデータを消去する消去処理のための消去パルスを印加する前の段階において、上記メモリセルアレイのワード線上の所定のメモリセルを用いて上記プログラム速度を検出することを特徴とする。
【００１７】
また、上記不揮発性半導体記憶装置において、上記制御回路は、上記各消去処理に対して、１本のみのワード線上のデータを用いてプログラム速度を検出することを特徴とする。
【００１８】
ここで、前記１本のみのワード線上のデータを用いてプログラム速度を検出する場合、このプログラム速度を検出するワード線のメモリセルストリング内の位置を上記消去処理毎にシフトさせて、所定の消去処理回数で１サイクルとすることを特徴とする。
【００１９】
さらに、上記不揮発性半導体記憶装置において、前記プログラム速度の検出チェックは、上記消去処理毎に消去回数をカウントしてその情報をフラグビットとしてプログラム速度データと同様に格納し、前記消去回数が所定の回数になったときにプログラム速度チェックを行いそのデータを更新することを特徴とする。
【００２０】
またさらに、上記不揮発性半導体記憶装置において、上記制御回路は、上記決定したプログラム開始電圧を上記メモリセルアレイのダミーのワード線上のメモリセルに格納することを特徴とする。
【００２１】
またさらに、上記不揮発性半導体記憶装置において、上記制御回路は、上記決定したプログラム開始電圧を上記メモリセルアレイのダミーのワード線上のメモリセルに格納することを特徴とする。
【００２２】
またさらに、上記不揮発性半導体記憶装置において、上記制御回路は、上記決定したプログラム開始電圧を上記メモリセルアレイのワード線上の付加的なメモリセルに格納し、当該メモリセルからプログラム開始電圧を読み出すときに、上記決定したプログラム開始電圧を格納するために、各ワード線に対して、プログラム速度の検出を行うワード線数Ｎに対応するＮバイトのメモリ領域を準備し、上記各消去処理に対応するプログラム速度の検出において用いたワード線上のメモリセルに上記決定したプログラム開始電圧を格納することを特徴とする。
【００２３】
ここで、前記決定したプログラム開始電圧を格納するために、各ワード線に対して、プログラム速度の検出を行うワード線数Ｎに対応する少なくともＮバイトのメモリ領域を準備し、上記各消去処理に対応するプログラム速度の検出において用いたワード線上のメモリセルに上記決定したプログラム開始電圧を格納することを特徴とする。
【００２４】
ここで、前記プログラム速度を検出するワード線がストリングの両隣等の少なくとも１本以上のワード線のデータも兼ねる場合は、前記速度の検出を行ったワード線上に格納するのではなく、それが代表したワード線上の（Ｎ＋１）バイトのメモリ領域を使用して、消去処理毎にシフトさせることを特徴とする。
【００２５】
上記不揮発性半導体記憶装置において、上記制御回路は、上記決定したプログラム開始電圧を上記メモリセルアレイのダミーのワード線上あるいはワード線上のメモリセルに格納するにあたり、当該プログラム開始電圧のデータにＥＣＣ（Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｎｇ  Ｃｏｄｅ）のビットを付加して書き込み、前記ＥＣＣのビットを付加して書き込むときに、データ１ビットに対して３ビット以上のビットセルを用いて書き込むことを特徴とする。
【００２６】
また、上記不揮発性半導体記憶装置において、上記制御回路は、上記格納されたプログラム開始電圧を１回の読み出しサイクルで読み出して、上記読み出したプログラム開始電圧を用いて所定のデータを書き込むことを特徴とする。
【００２７】
さらに、上記不揮発性半導体記憶装置において、上記制御回路は、上記格納されたプログラム開始電圧を１回の読み出しサイクルで読み出して、上記読み出したすべてのプログラム開始電圧をレジスタに記憶して、所定のデータを書き込むプログラム処理が該当ブロック内であれば、そのレジスタから該当ワード線のプログラム開始電圧を読み出して所定のデータを書き込むことを特徴とする。
【００２８】
第２の発明に係る不揮発性半導体記憶装置の書き込み方法は、不揮発性のメモリセルアレイと、上記メモリセルアレイへの書き込みを制御する制御回路とを備えた不揮発性半導体記憶装置の書き込み方法において、
上記制御回路は、書き込むメモリセルのデータを消去する消去処理のための消去パルスを印加する前の段階において、上記メモリセルアレイに書き込むときのプログラム速度を検出し、当該プログラム速度に対応するプログラム開始電圧をブロック毎又はワード線毎に決定して、上記決定したプログラム開始電圧を上記メモリセルアレイに格納し、上記メモリセルアレイからプログラム開始電圧を読み出して所定のデータを書き込むことを特徴とする。
【発明の効果】
【００２９】
従って、本発明に係る不揮発性半導体記憶装置とその書き込み方法によれば、書き込むメモリセルのデータを消去する消去処理の前又は後において、上記メモリセルアレイに書き込むときのプログラム速度を検出し、当該プログラム速度に対応するプログラム開始電圧をブロック毎又はワード線毎に決定して、上記決定したプログラム開始電圧を上記メモリセルアレイに格納し、上記メモリセルアレイからプログラム開始電圧を読み出して所定のデータを書き込む。従って、プログラム後のしきい値電圧分布のバラツキを最小化し、高速及び多回数の書き換え特性を得ることができる。
【図面の簡単な説明】
【００３０】
【図１】本発明の一実施形態に係るＮＡＮＤ型フラッシュＥＥＰＲＯＭの全体構成を示すブロック図である。
【図２】図１のメモリセルアレイ１０とその周辺回路の構成を示す回路図である。
【図３】図２のページバッファ（２本のビットライン分）の詳細構成を示す回路図である。
【図４】従来技術に係るＩＳＰＰ（Increment Step Pulse Program）法を用いてＮＡＮＤ型フラッシュＥＥＰＲＯＭをプログラムするときの書き込み方法を示すタイミングチャートである。
【図５】図４のＩＳＰＰ（Increment Step Pulse Program）法を用いてＮＡＮＤ型フラッシュＥＥＰＲＯＭをプログラムするときにプログラム開始電圧Ｖｓｔａｒｔを変化させたときのしきい値電圧Ｖｔｈ分布を示す図である。
【図６】図４のＩＳＰＰ（Increment Step Pulse Program）法を用いてＮＡＮＤ型フラッシュＥＥＰＲＯＭをプログラムするときに同一のプログラム開始電圧Ｖｓｔａｒｔを用いてプログラムしたときのしきい値電圧Ｖｔｈ分布を示す図である。
【図７】一般的なＮＡＮＤ型フラッシュＥＥＰＲＯＭにおけるページとブロックの概念を示す３次元概念図である。
【図８】本発明の実施形態に係る、プログラム開始電圧Ｖｓｔａｒｔを各ブロック又はワード線毎に最適化する書き込み方法を用いたときの作用効果を示すしきい値電圧Ｖｔｈ分布図である。
【図９】図８の書き込み方法で用いるプログラム速度チェック処理の作用効果を示すしきい値電圧Ｖｔｈ分布図である。
【図１０】図９のプログラム速度チェック処理のためのワード線の選択方法を示す図である。
【図１１】従来技術で用いるプログラム開始電圧Ｖｓｔａｒｔを示す表である。
【図１２】本発明の実施形態で用いるプログラム開始電圧Ｖｓｔａｒｔを示す表である。
【図１３】本発明の第１の実施形態に係るプログラム処理を示すフローチャートである。
【図１４】図１３のサブルーチンであるプログラム処理（Ｓ４）を示すフローチャートである。
【図１５】第１の実施形態のプログラム処理に先立って実行される消去処理を示すフローチャートを示す。
【図１６】図１５のサブルーチンであるプログラム速度チェック処理（Ｓ２１）を示すフローチャートである。
【図１７】第１の実施形態のプログラム処理に先立って実行される消去処理（実施例２）を示すフローチャートを示す。
【図１８】図１７のサブルーチンであるプログラム速度チェック処理（Ｓ４２）を示すフローチャートである。
【図１９】本発明の第２の実施形態に係る消去処理を示すフローチャートである。
【図２０】本発明の変形例に係る処理であって、上記プログラム処理において、通常のワード線上の付加的なメモリセルを用いてプログラム開始電圧及びフラグデータを格納するためのプログラム開始電圧及びフラグデータ格納処理（Ｓ２３，Ｓ４３，Ｓ６５）を示すフローチャートである。
【図２１】本発明の変形例に係る処理（Ｓ６１）であって、上記プログラム処理において、通常のワード線上の付加的なメモリセルからプログラム開始電圧及びフラグデータを読み出すためのプログラム開始電圧及びフラグデータ読み出しを示すフローチャートである。
【発明を実施するための形態】
【００３１】
以下、本発明に係る実施形態について図面を参照して説明する。なお、以下の各実施形態において、同様の構成要素については同一の符号を付している。
【００３２】
図１は本発明の一実施形態に係るＮＡＮＤ型フラッシュＥＥＰＲＯＭの全体構成を示すブロック図である。また、図２は図１のメモリセルアレイ１０とその周辺回路の構成を示す回路図である。さらに、図３は図２のページバッファ（２本のビットライン分）の詳細構成を示す回路図である。まず、本実施形態に係るＮＡＮＤ型フラッシュＥＥＰＲＯＭの構成について以下に説明する。
【００３３】
図１において、本実施形態に係るＮＡＮＤ型フラッシュＥＥＰＲＯＭは、メモリセルアレイ１０と、その動作を制御する制御回路１１と、ロウデコーダ１２と、高電圧発生回路１３と、データ書き換え及び読み出し回路１４と、カラムデコーダ１５と、コマンドレジスタ１７と、アドレスレジスタ１８と、動作ロジックコントローラ１９と、データ入出力バッファ５０と、データ入出力端子５１とを備えて構成される。
【００３４】
メモリセルアレイ１０は、図２に示すように、例えば１８個のスタックト・ゲート構造の電気的書き換え可能な不揮発性メモリセルＭＣ０〜ＭＣ１５，ＭＣＤ０，ＭＣＤ１を直列接続してＮＡＮＤセルユニットＮＵ（ＮＵ０，ＮＵ１， …）が構成される。各ＮＡＮＤセルユニットＮＵは、ドレイン側が選択ゲートトランジスタＳＧ１を介してビット線ＢＬに接続され、ソース側が選択ゲートトランジスタＳＧ２を介して共通ソース線ＣＥＬＳＲＣに接続される。ロウ方向に並ぶメモリセルＭＣの制御ゲートは共通にワード線ＷＬに接続され、選択ゲートトランジスタＳＧ１，ＳＧ２のゲート電極はワード線ＷＬと平行して配設される選択ゲート線ＳＧＤ，ＳＧＳに接続される。ここで、選択ゲート線ＳＧＳとワード線ＷＬ０との間に、各ワード線と平行してダミーワード線ＤＷＬ０が形成され、選択ゲート線ＳＧＤとワード線ＷＬ１５との間に、各ワード線と平行してダミーワード線ＤＷＬ１が形成される。１本の各ワード線ＷＬにより選択されるメモリセルの範囲が書き込み及び読み出しの単位となる１ページである。１ページ又はその整数倍の範囲の複数のＮＡＮＤセルユニットＮＵの範囲がデータ消去の単位である１ブロックとなる。書き換え及び読み出し回路１４は、ページ単位のデータ書き込み及び読み出しを行うために、ビット線毎に設けられたセンスアンプ回路（ＳＡ）及びラッチ回路（ＤＬ）を含み、以下、ページバッファという。
【００３５】
図２のメモリセルアレイ１０は、簡略化した構成を有し、複数のビット線でページバッファを共有してもよい。この場合は、データ書き込み又は読み出し動作時にページバッファに選択的に接続されるビット線数が１ページの単位となる。また、図２は、１個の入出力端子５２との間でデータの入出力が行われるセルアレイの範囲を示している。メモリセルアレイ１０のワード線ＷＬ及びビット線ＢＬの選択を行うために、それぞれロウデコーダ１２及びカラムデコーダ１５が設けられている。制御回路１１は、データ書き込み、消去及び読み出しのシーケンス制御を行う。制御回路１１により制御される高電圧発生回路１３は、データ書き換え、消去、読み出しに用いられる昇圧された高電圧や中間電圧を発生する。
【００３６】
入出力バッファ５０は、データの入出力及びアドレス信号の入力に用いられる。すなわち、入出力バッファ５０及びデータ線５２を介して、入出力端子５１とページバッファ１４の間でデータの転送が行われる。入出力端子５２から入力されるアドレス信号は、アドレスレジスタ１８に保持され、ロウデコーダ１２及びカラムデコーダ１５に送られてデコードされる。入出力端子５２からは動作制御のコマンドも入力される。入力されたコマンドはデコードされてコマンドレジスタ１７に保持され、これにより制御回路１１が制御される。チップイネーブル信号ＣＥＢ、コマンドラッチイネーブルＣＬＥ、アドレスラッチイネーブル信号ＡＬＥ、書き込みイネーブル信号ＷＥＢ、読み出しイネーブル信号ＲＥＢ等の外部制御信号は動作ロジックコントロール回路１９に取り込まれ、動作モードに応じて内部制御信号が発生される。内部制御信号は、入出力バッファ５０でのデータラッチ、転送等の制御に用いられ、さらに制御回路１１に送られて、動作制御が行われる。
【００３７】
ページバッファ１４は、２個のラッチ回路１４ａ，１４ｂを備え、多値動作の機能とキャッシュの機能を切り換えて実行できるように構成されている。すなわち、１つのメモリセルに１ビットの２値データを記憶する場合に、キャッシュ機能を備え、１つのメモリセルに２ビットの４値データを記憶する場合には、キャッシュ機能とするか、又はアドレスによって制限されるがキャッシュ機能を有効とすることができる。そのような機能を実現するための具体的なページバッファ１４Ａ（２本のビットライン分）の詳細構成を図３に示す。
【００３８】
図３において、ページバッファ１４Ａは、２個のインバータ６１，６２にてなるラッチＬ１と、２個のインバータ６３，６４にてなるラッチＬ２と、ベリファイ用キャパシタ７０と、プリチャージ用トランジスタ７１と、ベリファイ用トランジスタ７２乃至７５と、ベリファイ・パスフェイル判定トランジスタ７６，７７と、カラムゲートトランジスタ８１，８２と、転送スイッチトランジスタ８３乃至８５，８８，８９と、ビットライン選択トランジスタ８６，８７と、ラッチイコライズトランジスタ９０と、リセットトランジスタ９１とを備えて構成される。
【００３９】
図３において、２本のビット線ＢＬｅ，ＢＬｏがページバッファ１４Ａに選択的に接続されるようになっている。この場合、ビット線選択信号ＢＬＳＥ又はＢＬＳＯによって、ビットライン選択トランジスタ８６又は８７を導通させ、ビット線ＢＬｅ又はビット線ＢＬｏの一方を選択的にページバッファ１４Ａに接続する。なお、一方のビット線が選択されている間、非選択状態である他方のビット線は、固定の接地電位や電源電圧電位にすることによって、隣接ビット線間のノイズを削減することが好ましい。
【００４０】
図３のページバッファ１４Ａは、第１のラッチＬ１と、第２のラッチＬ２とを有する。ページバッファ１４Ａは所定の動作制御によって、主に読み出し、書き込み及び消去動作に寄与する。また、第２のラッチＬ２は、２値動作においては、キャッシュ機能を実現する二次的なラッチ回路であり、キャッシュ機能を使用しない場合には当該ページバッファ１４Ａの動作に補助的に寄与して多値動作を実現する。
【００４１】
ラッチＬ１は、クロックト・インバータ６１，６２を逆並列接続して構成されている。メモリセルアレイ１０のビット線ＢＬは、転送スイッチトランジスタ８５を介してセンスノードＮ４に接続され、センスノードＮ４はさらに転送スイッチトランジスタ８３を介してラッチＬ１のデータ保持ノードＮ１に接続されている。センスノードＮ４には、プリチャージ用トランジスタ７１が設けられている。ノードＮ１は、転送スイッチトランジスタ７４，７５を介してノードＮ１のデータを一時記憶するための一時記憶ノードＮ３に接続されている。さらに、ノードＮ４には、ビット線に対して電圧Ｖ１をプリチャージするためのプリチャージ用トランジスタ７１も接続されている。ノードＮ４にはレベル保持のためのキャパシタ７０が接続されている。キャパシタ７０の他端は接地される。
【００４２】
第２のラッチＬ２は、第１のラッチＬ１と同様に、クロックト・インバータ６３，６４を逆並列接続して構成されている。ラッチＬ２の２つのデータノードＮ５，Ｎ６は、カラム選択信号ＣＳＬにより制御されるカラムゲートトランジスタ８１，８２を介して、データ入出力バッファ５０に接続されるデータ線５２に接続される。ノードＮ５は、転送スイッチトランジスタ８４を介して、ノードＮ４に接続される。
【００４３】
図２は、メモリセルアレイ１０と、ページバッファ１４と、データ入出力バッファ５０の接続関係を示す。ＮＡＮＤ型フラッシュＥＥＰＲＯＭの読み出し、書き込みの処理単位は、あるロウアドレスでの同時に選択される１ページ分の容量（例えば５１２バイト）となっている。８個のデータ入出力端子５２があるため、１つのデータ入出力端子５２に対しては、５１２ビットとなっており、図２ではその５１２ビット分の構成を示している。
【００４４】
データをメモリセルに書き込む場合には、データ信号線５２から書き込みデータを第２のラッチＬ２に取り込む。書き込み動作を開始するには、書き込みデータが第１のラッチＬ１になければならないので、続いて、ラッチＬ２に保持したデータをラッチ回路Ｌ１に転送する。また、読み出し動作においては、データ入出力端子５１にデータを出力するには、読み出したデータがラッチＬ２になければならないので、ラッチＬ１で読み出したデータをラッチＬ２に転送する必要がある。従って、転送スイッチトランジスタ８３，８４を導通状態にしてラッチＬ１とラッチＬ２の間でデータを転送できるように構成されている。このとき、転送先のラッチ回路を非活性状態にしてからデータを転送し、その後転送先のラッチ回路を活性状態に戻してデータを保持することなる。
【００４５】
なお、図１乃至図３において、メモリセルアレイ１０へのデータの書き込み、消去の基本動作は例えば特許文献４〜５において開示されており周知技術であり、詳細説明を省略する。
【００４６】
本実施形態では、ＮＡＮＤ型フラッシュＥＥＰＲＯＭにおいて、プログラム後のしきい値電圧分布のバラツキを最小化し、高速で多回数の書き換え特性を得ることができる改良されたＩＳＰＰ法を用いた書き込み方法を提案する。ここで、本実施形態に係る書き込み方法は、各ブロック毎又は各ワード線毎に、プログラム開始電圧Ｖｓｔａｒｔを変化する機能を有し、プログラム速度をチェックした後、当該プログラム速度の検出結果に基づいてプログラム開始電圧を決定して格納し、その情報を読み出して所定のデータの書き込むことを行うことを特徴としている。
【００４７】
図７は一般的なＮＡＮＤ型フラッシュＥＥＰＲＯＭ（ＳＬＣ２Ｇビット）におけるページとブロックの概念を示す３次元概念図である。図７から明らかなように、１ページは２０６４バイト×８ビットから構成され、６４ページで１ブロックを構成し、全体で１２８Ｋページを有する。書き込みと読み出しはページバッファ１４を用いて１ぺージ毎に実行され、消去は１つのブロック毎に実行される。
【００４８】
図１１は従来技術で用いるプログラム開始電圧Ｖｓｔａｒｔを示す表であり、図１２は本発明の実施形態で用いるプログラム開始電圧Ｖｓｔａｒｔを示す表である。従来技術では、各ブロックでプログラム開始電圧Ｖｓｔａｒｔは同一であるが、本実施形態では、図１２に示すように、各ブロック毎に最適なプログラム開始電圧Ｖｓｔａｒｔを決定して用いる。なお、図１２において、プログラム開始電圧Ｖｓｔａｒｔ（・）の括弧内のデータは所定の基準プログラム開始電圧Ｖｓｔａｒｔ（０）からのオフセットデータをいう。例えば、１単位のオフセット電圧を０．３Ｖとすると、Ｖｓｔａｒｔ（＋２）＝Ｖｓｔａｒｔ（０）＋２×０．３Ｖとなる。
【００４９】
図８は本発明の実施形態に係る、プログラム開始電圧Ｖｓｔａｒｔを各ブロック毎又は各ワード線毎に最適化する書き込み方法を用いたときの作用効果を示すしきい値電圧Ｖｔｈ分布図である。本実施形態によれば、各ブロック毎又は各ワード線毎にプログラム開始電圧Ｖｓｔａｒｔが最適化され、各ブロック毎又は各ワード線毎にしきい値電圧分布のゆらぎが、図８に示すように最小化され、従来例に比較して、データ書き換えに伴う酸化膜自身の劣化の耐久性が向上し、高速及び多回数な書き換え特性を得ることができるという特有の効果を有する。
【００５０】
図９は図８の書き込み方法で用いるプログラム速度チェック処理の作用効果を示すしきい値電圧Ｖｔｈ分布図である。プログラム速度チェックは以下のようにして行われる。図９に示すように、テストのために、各ブロック毎又は各ワード線毎に特定ビット（テストビット）のメモリセルに対してプログラムストレスを印加し、いくつかの電圧レベル（図９では、４つの電圧レベルであり、ΔＶｓｔｅｐ毎にオフセットする。）を用いてベリファイ読み出しを行って当該特定ビットのしきい値電圧分布を検出し、当該テストのための特定ビットの中で最速ビットの最大しきい値電圧に基づいて、当該ブロック又は当該ワード線のためのプログラム開始電圧Ｖｓｔａｒｔを決定する。例えば、プログラム開始電圧Ｖｓｔａｒｔ（０）＝１５〜１６Ｖであり、ＭＬＣ（Ｍｕｌｔｉ  Ｌｅｖｅｌ  Ｃｅｌｌ）ではＶｓｔｅｐ＝０．３Ｖ及びΔＶｓｔｅｐ＝０．１Ｖであり、ＳＬＣ（Ｓｉｎｇｌｅ  Ｌｅｖｅｌ  Ｃｅｌｌ）ではＶｓｔｅｐ＝１．１Ｖ及びΔＶｓｔｅｐ＝０．２〜０．５Ｖである。
【００５１】
上記決定されたプログラム開始電圧Ｖｓｔａｒｔ（・）のデータについては、各ブロックのダミーのワード線上の特定ビットのメモリセルに、対応するオフセット値を格納することが好ましい。例えば、プログラム開始電圧Ｖｓｔａｒｔ（−２）にはビット（１１０）を対応させ、プログラム開始電圧Ｖｓｔａｒｔ（−１）にはビット（１０１）を対応させ、プログラム開始電圧Ｖｓｔａｒｔ（０）にはビット（１００）を対応させ、プログラム開始電圧Ｖｓｔａｒｔ（＋１）にはビット（０１１）を対応させ、プログラム開始電圧Ｖｓｔａｒｔ（＋２）にはビット（０１０）を対応させ、該特定ビットに格納する。ここで、プログラム開始電圧は重要な値なのでエラーは許されないので、例えば上記３ビットの各１ビットに３ビット以上のビットセルを用いて書き込み、多数決ルールを用いて読み出すようにしてもよい。また、例えば電圧（Ｖｓｔａｒｔ＋ｎ×Ｖｓｔｅｐ）を用いて１発の書き込みパルスでのプログラム処理によりデータを書き込んでプログラムし、ダミーのワード線上のプログラム開始電圧Ｖｓｔａｒｔ（・）のデータを多数決ルールの決定方法を用いて読み出してプログラムするように構成してもよい。この場合においては、各ワード線に設定されたプログラム開始電圧Ｖｓｔａｒｔ（・）のデータを当該ブロックのダミーワード線上のメモリセルにともに格納される。もし、通常の書き込み用ワード線上の特定ビットのメモリセルに上記決定されたプログラム開始電圧Ｖｓｔａｒｔ（・）のデータを格納してもよいが、当該目的のための付加的なメモリセルを必要とする。
【００５２】
図１３は本発明の第１の実施形態に係るプログラム処理を示すフローチャートである。図１３において、まず、ステップＳ１において、プログラムデータをロードし、ステップＳ２において、プログラムパルスを印加する前に、書き込みに選択されたブロックの特定ビットのデータを読み出す。このデータには該ブロック又は該ブロックの各ワード線毎のＶｓｔａｒｔが格納されている。具体的には、まず、上述したしたように、ダミーワード線に格納した場合はダミーワード線を選択して読み出し、あるいは通常のワード線に付加メモリセルを設けて格納した場合は、所定の読出用ワード線電圧Ｖｓｐをすべてのワード線に印加した後、１回で読み出し処理を行う。次に、該選択されたワード線に対応する特定のビットのデータに基づいて、プログラム開始電圧及びフラグデータを一時レジスタ（バッファメモリ）にセットする。次いで、ステップＳ３において、プログラムデータをバッファメモリ１４ａにセットする。さらに、ステップＳ４において、特定ビットに基づいて設定されたプログラム開始電圧を用いてＩＳＰＰ法を用いてプログラム処理を実行する。本実施形態に係る書き込み方法に対する１つの大きな必要条件は、プログラムのスループットを維持するためのプログラム時間を増大させないことであり、この理由のために、プログラム速度チェック処理は消去動作において実行される。
【００５３】
図１３のステップＳ２において、基本的には、メモリセルの特定ビットからデータを読み出すことでプログラム開始電圧Ｖｓｔａｒｔ（・）を決定するが、ワード線ＷＬ３〜ＷＬ２８の連続したプログラムなどの場合においては、ワード線ＷＬ３のプログラムのときのみ、メモリセルの特定ビットからデータを読み出し、残りのワード線ＷＬ４〜ＷＬ２８のときは一時レジスタからプログラム開始電圧Ｖｓｔａｒｔ（・）を読み出すことで余分なプログラム時間を削減してもよい。
【００５４】
図１４は図１３のサブルーチンであるプログラム処理（Ｓ４）を示すフローチャートである。図１４において、ステップＳ１１において上記設定されたプログラム開始電圧Ｖｓｔａｒｔ（・）をプログラム電圧Ｖｐｇｍ（ｎ）に設定し、ステップＳ１２においてプログラム電圧Ｖｐｇｍ（ｎ）を有するプログラムパルスを印加し、ステップＳ１３においてプログラムされたか否かについてベリファイし、ステップＳ１４においてすべてのメモリセルについてパスしたか否かについて判断し、ＹＥＳのときは元のメインルーチンに戻る一方、ＮＯのときはステップＳ１５に進む。ステップＳ１５では、プログラム電圧Ｖｐｇｍ（ｎ）を増分Ｖｓｔｅｐだけインクリメントしてプログラム電圧Ｖｐｇｍ（ｎ）を設定してステップＳ１２に戻る。
【００５５】
図１５は第１の実施形態のプログラム処理に先立って実行される消去処理を示すフローチャートであるが、この消去処理中にてプログラム開始電圧設定処理（実施例１）が実行される。図１５において、ステップＳ２１においてプログラム速度チェック処理（図１６）を実行し、ステップＳ２２において消去パルスを用いてデータを消去する。次いで、ステップＳ２３において、上記プログラム速度チェックで得られて一時レジスタにセットされたプログラム開始電圧及びフラグデータをメモリセルの所定の特定ビットに格納する。具体的には、一時レジスタに格納されたプログラム開始電圧及びフラグデータをページバッファ１４にセットした後、対応するワード線（又はダミーワード線）を選択して、例えば通常のＳＬＣプログラム処理を実行することでプログラムを行う。
【００５６】
図１６は図１５のサブルーチンであるプログラム速度チェック処理（Ｓ２１）を示すフローチャートである。図１６において、まず、ステップＳ３１において、メモリセルの特定ビットに対してデータをバッファメモリ１４にセットする。具体的には、特定のワード線からデータを読み出して、１のデータであればチェックビットとし、０のデータであればマスクビットとする。次いで、ステップＳ３２において、プログラムパルスを用いてプログラム処理を行う。さらに、ステップＳ３３において、上記特定ビットにおいて最大のしきい値電圧Ｖｔｈを取得してそのときのプログラム開始電圧のオフセットデータを一時レジスタに格納して元のメインルーチンに戻る。ここで、上記特定ビットにおいて最大のしきい値電圧Ｖｔｈを取得するためには、データビットが例えばすべて１のデータとなるまでベリファイ電圧を所定のステップ電圧で上昇させながら、ベリファイ読み出しを行う。
【００５７】
図１６のステップＳ３１ではチェックビットを得るのにユーザのデータの１を用いているが、ユーザのデータは常に１のビットをチェックに充分な数を含むとは限らない。そこで、このようにユーザデータを使用する場合は、図１３に示したプログラム処理のステップＳ１において０のデータ数をカウントして、もし０のデータ数がページサイズの半分より大きかったら、反転フラグビットをセットして、Ｓ３においてデータを反転する。この処理により、常に１のデータ数をページサイズの半分以上とすることができる。なお、読出し時には、当然、データ中の反転フラグが立っていたら、反転して出力する。
【００５８】
図１７は第１の実施形態のプログラム処理に先立って実行される別の形態の消去処理を示すフローチャートである。この中でプログラム開始電圧設定処理（実施例２）が実行される。図１７において、まず、ステップＳ４１において、消去パルスを用いてデータを消去し、ステップＳ４２において、ソフトプログラム処理を用いてプログラム速度チェック処理を実行する。そして、ステップＳ４３上記プログラム速度チェックで得られて一時レジスタにセットされたプログラム開始電圧及びフラグデータをメモリセルの所定の特定ビットに格納する。
【００５９】
図１８は図１７のサブルーチンであるプログラム速度チェック処理（Ｓ４２）を示すフローチャートである。図１８において、まず、ステップＳ５１においてダミーワード線上の特定ビットに対してデータをバッファメモリ１４にセットする。次いで、ステップＳ５２において、ダミーワード線上の特定ビットに対してプログラムパルスを用いてプログラム処理を行う。そして、ステップＳ５３において、上記特定ビットにおいて、すべて１のデータとなるかをベリファイ電圧を変化させてベリファイ読み出しを行うことにより、最大のしきい値電圧Ｖｔｈを取得してそのときのプログラム開始電圧のオフセットデータを一時レジスタに格納し、元のメインルーチンに戻る。
【００６０】
図１９は本発明の第２の実施形態に係る消去処理を示すフローチャートである。図１９において、まず、ステップＳ６１において、メモリセルの特定ビットから古いプログラム開始電圧及びフラグデータを読み出す。ここで、フラグはプログラム速度チェックのためのワード線を表す。次いで、ステップＳ６２において、プログラム速度チェック処理を実行し、ステップＳ６３において、消去パルスを用いてデータを消去する。そして、ステップＳ６４において上記プログラム速度チェックで設定されたプログラム開始電圧を基準としたソフトプログラム開始電圧又は他の所定の方式で決められたソフトプログラム開始電圧を用いてソフトプログラム処理を実行する。さらに、ステップＳ６５において、上記セットされたプログラム開始電圧及びフラグデータを特定ビットに格納するここで、修正されたフラグはプログラム速度チェックのための次のチェック用ワード線を表す。
【００６１】
図１９のプログラム速度チェック処理では、プログラム速度チェック処理のための余分な時間を削減するために、各消去処理毎に、特定の１本のワード線に対してプログラム速度チェック処理が行われる。従って、あるワード線のプログラム速度チェックの１つのサイクルは１つのストリングにおけるセル数に等しくなる。具体的には、ワード線上のユーザデータを読み出して、１のビット（又は１１のビット）を得て当該データをプログラムビットとしてセットする。そして、プログラムパルスを印加して、ベリファイ電圧を変化しながらベリファイ読み出しを行って最大のしきい値電圧Ｖｔｈを検出し、それを予測値と比較することでそれに対応するプログラム開始電圧Ｖｓｔａｒｔ（・）を決定することができる。
【００６２】
図１０は上述のプログラム速度チェック処理のための変形例に係るワード線の選択方法を示す図である。プログラム速度チェック処理は、すべての、あるいはいくつかの特定のワード線に対して順番に各消去毎にシフトさせながら実行される。ここで、まず第１に、プログラム開始電圧Ｖｓｔａｒｔのデータ格納場所の確保及び準備のために、各ワード線に対して（Ｎ＋１）バイトを用意する。ここで、Ｎはプログラム速度チェックを行うワード線の本数である。Ｖｓｔａｒｔ（・）のオフセット値を１バイトで格納する。図１９の消去処理のステップＳ６５では、プログラム速度チェックが行われたワード線の該（Ｎ＋１）バイトに対して、ベリファイ電圧Ｖｒｅａｄ＝ＰＶを用いて通常のＳＬＣプログラムを用いて、プログラム開始電圧データ及びフラグデータが格納される。この格納処理のフローは図２０で説明される。そして、このようにして書き込まれたプログラム開始電圧データ及びフラグデータを読み出すステップＳ６１では、すべてのワード線に対して読出用ワード線電圧Ｖｓｐ（図１０では１Ｖ）を印加し、前回格納したワード線からプログラム開始電圧Ｖｓｔａｒｔのデータ及び、今回測定すべきワード線の番号が格納されたフラグデータを読み出す。データが書いてあるのは１本のワード線上の該（Ｎ＋１）バイトのみなので、１回の読み出し動作でデータが読み出せる。
【００６３】
次いで、例えばＥＣＣ（Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｎｇ  Ｃｏｄｅ）などを用いて当該データをデコードし、デコードされたデータを一時レジスタに格納する。この読出し処理のフローは図２１で説明される。さらに、プログラム速度チェック処理のためのワード線として、上記フラグデータのワード線にセットする。ワード線の選択方法の一例としては、すべてのワード線を速度チェックする方法もあるが、端部を除いたワード線については通常は良くそろっているので、例えばＷＬ０，１，２，１６，２９，３０，３１（ストリングの両エッジ及び中央部）を選択すればよい。ＷＬ１６については、ＷＬ３〜２８をカバーするとしてもよい。これらのワード線の選択は、ワード線に依存したプログラム特性によって決定されるからである。ここで、ワード線数については、例えば、プログラム開始電圧データを通常のワード上の付加的なメモリセルに格納する場合において、余分なビット数を増大させ、これにより、チップサイズを相対的に増大させる。なお、プログラム開始電圧データの読み出しにおいては、１つの読み出しサイクルでベリファイ電圧ＶｐａｓｓＲ＝Ｖｒｅａｄ＝Ｖｓｐを用いて読み出し及びベリファイが行われ、フラグはプログラム速度チェックのための次のチェック用ワード線を表す。
【００６４】
図２０は本発明の変形例に係る処理（Ｓ６５）であって、上記消去処理において、通常のワード線上の付加的なメモリセルを用いてプログラム開始電圧及びフラグデータを格納するためのプログラム開始電圧及びフラグデータ格納処理（Ｓ２３，Ｓ４３，Ｓ６５）を示すフローチャートである。図２０において、まず、ステップＳ７１において、メモリセルの特定ビットに対して、プログラム開始電圧及びフラグデータを一時レジスタからページバッファ１４にセットし、ステップＳ７２において、上記セットされたデータを選択されたワード線にプログラムすることでプログラム開始電圧及びフラグデータをメモリセルの特定ビットに格納する。図１０に示したように、選択ワード線以外のワード線のセルはすべて消去状態なので、書き込んだ後のしきい値電圧Ｖｔｈはリードパス電圧（ＶｐａｓｓＲ）よりも高くなっても問題ないので、通常のプログラムよりも書き込みのパルス数を少なくしてプログラム時間を短くすることが可能となる。具体的には、通常のＳＬＣ書き込みには３〜４発のパルスを使い書き込み時間として２００μｓ程度がかかるが、これを１〜２発にして１００μｓ程度と半減できる。
【００６５】
図２１は本発明の変形例に係る処理（Ｓ６１）であって、上記プログラム処理において、通常のワード線上の付加的なメモリセルからプログラム開始電圧及びフラグデータを読み出すためのプログラム開始電圧及びフラグデータ読み出しを示すフローチャートである。図２１において、ステップＳ８１において、すべてのワード線に対して、読出用ワード線電圧Ｖｓｐをセットする。次いで、ステップＳ８２において、メモリセルの特定のビットのデータを読み出し、ステップＳ８３において、特定ビットのデータからの、プログラム開始電圧及びフラグデータを一時レジスタにセットする。フラグデータを読み出す前においてはどのワード線にプログラム開始電圧データとフラグデータが書いてあるかわからないので、通常であればワード線を１本ずつ読み出す必要があるが、図１０に示すように、１本のワード線の特定ビット以外のメモリセルは消去状態なので、Ｓ８１のようにすべてのワード線に読出し電圧Ｖｓｐ（図１０では１Ｖ）を印加する方法で１回（２０μｓ程度）で読み出せる。なお、これらのデータを格納するワード線は例えばＷＬ１６に固定してもよいが、毎回シフトした方がワード線毎の書き換え回数を減少することができるので信頼性をより向上させることができる。
【００６６】
以上説明したように、本実施形態によれば、各ブロック毎又は各ワード線毎にプログラム速度チェックを行って最適なプログラム開始電圧を決定して、プログラム開始電圧を変化させてデータの書き込みを行うので、プログラム後のしきい値電圧分布のバラツキを最小化し、高速の書き換え特性を得ることができる。
【００６７】
以上説明した中で、「各ブロック毎又は各ワード線毎」にプログラム開始電圧を設定するとしているが、理想的にはすべてのブロックのすべてのワード線について速度チェック＆開始電圧設定するのが望ましいが、上述したように、メモリセルのストリングの中ほどのワード線の書き込み速度はほとんど同じであり、それはブロックについても言えるので、プログラム速度チェックはそれぞれ必要な部分のブロックとワード線について行い、チェックは行わないブロックとワード線についてはそれらのうちの対応する値を使用することでも良い。これにより、プログラム速度チェックに伴う消去処理時間の増大が軽減される。
【００６８】
また、プログラム速度チェックを行うワード線について、図１８ではダミーワード線を使用したが、この場合は各ワード線のプログラム開始電圧は初期特性あるいは標準的特性をもとに計算した値が使用されることになり、バラツキは完全には補正されないが、ブロック間のバラツキは補正される。この他、主に説明したワード線のユーザデータ領域を使用する方法と、チェック用の付加ビットをメモリセルアレイに付け加える方法がある。
【００６９】
さらに、プログラム速度チェックは書き込み後の最大のしきい値電圧Ｖｔｈで決めるとする方法の他、異常に書き込みの速いビットのデータを拾うのをさけるために、２番目に高いしきい値電圧Ｖｔｈを採用するというような方法も良い。回路的にも２〜３ビットは特に問題ない。
【００７０】
さらに、プログラム速度チェックに使うビットについては、通常ワード線を使用する場合にはユーザデータを使用する方法を提示したが、本発明はこれに限らず、ダミーワード線の特定ビットを使う場合はすべて書き込みはされていないのですべて使用できる。上述した（Ｎ＋１）バイト×多数決ビットのような構成であれば、プログラム速度チェック対象のワード線のビットはすべて消去状態であるので、これもそのまま使用できる。このように必ずしもユーザデータを使用しなくてもよい。
【００７１】
さらに、プログラム開始電圧データを格納するメモリセルは、実施例のとおり、ダミーワード線あるいは通常ワード線の付加ビットがあるが、ダミーワード線については、付加ビットなしの通常ビット領域、付加ビット領域に加え、選択ゲート線ＳＧＤ側のダミーワード線を使うか、選択ゲート線ＳＧＳ側のダミーワード線を使うかの選択が取りえる。従って、選択ゲート線ＳＧＳ側は格納用、選択ゲート線ＳＧＤ側はプログラム速度チェック用と分けることもよい。
【００７２】
さらに、上記においてプログラム速度チェックを行うワード線は１本として、毎消去処理時に１本ずつシフトする方法を説明し、ワード線０，１，２，１６，２９，３０，３１についてプログラム速度チェックを行う実施例を説明したが、本発明はこれに限らず、すべてのワード線について速度チェックをすれば速度チェックの周期の１サイクルは３２回になるが、上記のように７本のワード線のみ速度チェックを行う場合は、そのまま１サイクルを７回とするほかに、ワード線３〜１５，１７〜２８はカウントのみ行い（フラグビットのみ更新）、１サイクルを３２回とする方法もあり、データ格納を行うワード線も３〜２８にシフトしつつ行う方法と合わせ、メモリセルの書き換え回数に伴う信頼性劣化を抑える好ましい方法といえる。また、図１８のようにプログラム速度チェックをダミーワード線で行う場合も同様に消去処理回数をカウントしフラグビットとして格納することにより、速度チェックの１サイクルを３２回とか所定の好適な数に設定することができる。
【００７３】
以上の実施形態においては、ＮＡＮＤ型フラッシュＥＥＰＲＯＭについて説明しているが、本発明はこれに限らず、ＮＯＲ型フラッシュＥＥＰＲＯＭなどのフローティングゲートにデータを書き込むことが可能な不揮発性半導体記憶装置に広く適用できる。
【産業上の利用可能性】
【００７４】
以上詳述したように、本発明に係る不揮発性半導体記憶装置とその書き込み方法によれば、各ブロック毎又は各ワード線毎にプログラム速度チェックを行って最適なプログラム開始電圧を決定して、プログラム開始電圧を変化させてデータの書き込みを行うので、プログラム後のしきい値電圧分布のバラツキを最小化し、高速の書き換え特性を得ることができる。
【符号の説明】
【００７５】
１０…メモリセルアレイ、
１１…制御回路、
１２…ロウデコーダ、
１３…高電圧発生回路、
１４，１４Ａ…データ書き換え及び読み出し回路（ページバッファ）、
１４ａ，１４ｂ…ラッチ回路、
１５…カラムデコーダ、
１７…コマンドレジスタ、
１８…アドレスレジスタ、
１９…動作ロジックコントローラ、
５０…データ入出力バッファ、
５１…データ入出力端子、
５２…データ線、
Ｌ１，Ｌ２…ラッチ。
【図１】
2014132512.tif 000003
【図２】
2014132512.tif 000004
【図３】
2014132512.tif 000005
【図４】
2014132512.tif 000006
【図５】
2014132512.tif 000007
【図６】
2014132512.tif 000008
【図７】
2014132512.tif 000009
【図８】
2014132512.tif 000010
【図９】
2014132512.tif 000011
【図１０】
2014132512.tif 000012
【図１１】
2014132512.tif 000013
【図１２】
2014132512.tif 000014
【図１３】
2014132512.tif 000015
【図１４】
2014132512.tif 000016
【図１５】
2014132512.tif 000017
【図１６】
2014132512.tif 000018
【図１７】
2014132512.tif 000019
【図１８】
2014132512.tif 000020
【図１９】
2014132512.tif 000021
【図２０】
2014132512.tif 000022
【図２１】
2014132512.tif 000023