(57)【要約】【課題】データの書き込み時間を短縮した半導体記憶装置を提供する。【解決手段】半導体記憶装置は、複数のメモリセルを備えたメモリセルアレイと、複数のメモリセルのゲートに接続されたワード線と、複数のメモリセルの一端にそれぞれ接続された複数のビット線と、制御回路と、を有し、制御回路は、各々が第１の閾値分布幅を有する複数のステートのデータを複数のメモリセルへ書き込む第１書き込み動作、及び、第１書き込み動作の後に行われ各々が第１の閾値分布幅よりも狭い第２の閾値分布幅を有する複数のステートのデータを複数のメモリセルへ書き込む第２書き込み動作を行うように、ワード線ドライバおよびセンスアンプ回路を制御し、第１書き込み動作は、所定のべリファイ動作と所定の追加プログラム動作を含む。【選択図】図１０
2020095767.tif 000002
【特許請求の範囲】
【請求項１】
各々が複数レベルの閾値電圧のいずれかに設定可能な複数のメモリセルを備えたメモリセルアレイと、
前記複数のメモリセルのゲートに接続されたワード線と、
前記ワード線に電圧を印加するワード線ドライバと、
前記複数のメモリセルの一端にそれぞれ接続された複数のビット線と、
前記複数のビット線を介して、前記複数のメモリセルのデータを検出するセンスアンプ回路と、
前記複数のメモリセルへデータを書き込むために、前記ワード線ドライバと前記センスアンプ回路を制御する制御回路と、
を有し、
前記制御回路は、各々が第１の閾値分布幅を有する複数のステートのデータを前記複数のメモリセルへ書き込む第１書き込み動作、及び、前記第１書き込み動作の後に行われ各々が前記第１の閾値分布幅よりも狭い第２の閾値分布幅を有する前記複数のステートのデータを前記複数のメモリセルへ書き込む第２書き込み動作を行うように、前記ワード線ドライバおよび前記センスアンプ回路を制御し、
前記第１書き込み動作は、
前記センスアンプ回路により判定された各メモリセルの閾値電圧が第１のベリファイレベルと前記第１のベリファイレベルよりも低い第２のベリファイレベルとの間にあるか否かの判定を行うベリファイ動作と、
前記第１のベリファイレベルよりも高い目標ステートとする各メモリセルに対して実行される予め決められたループ回数の追加プログラム動作とを含み、
前記追加プログラム動作の回数と、各ループにおいて前記ビット線に印加される電圧が、前記ベリファイ動作における判定結果と、前記各メモリセルの前記目標ステートとに応じて設定される、半導体記憶装置。
【請求項２】
前記ワード線ドライバは、前記第１書き込み動作において、前記ワード線に前記プログラム電圧を印加し、
前記制御回路は、前記追加プログラム動作において、前記プログラム電圧のステップアップ幅を、各メモリセルの閾値の上昇幅が隣り合う２つのステート間の閾値電圧差の２以上の整数倍に対応する値となるように設定する、請求項１に記載の半導体記憶装置。
【請求項３】
前記第１のベリファイレベルと前記第２のベリファイレベルは、前記複数のステートの中で、閾値レベルが最も低い第１ステートの次に閾値レベルが低い第２ステートのためのベリファイレベルである、請求項２に記載の半導体記憶装置。
【請求項４】
前記複数のステートは、第１、第２及び第３つのグループにグループ分けされ、
前記追加プログラム動作における前記ビット線電圧の印加は、グループ毎に異なっている、請求項１から３のいずれか１つに記載の半導体記憶装置。
【請求項５】
前記目標ステートが前記第１のグループに属するステートの場合、前記制御回路２２は、前記閾値電圧が前記第１のベリファイレベルと前記第２のベリファイレベルの間にあるときは、次の書き込みにおいて前記ビット線電圧を所定の正の電圧とし、前記閾値電圧が前記第１のベリファイレベル以上であるときは、次の書き込みは禁止し、
前記目標ステートが前記第２のグループに属するステートの場合、前記制御回路２２は、前記閾値電圧が前記第１のベリファイレベルと前記第２のベリファイレベルの間にあるときは、前記ビット線電圧を前記所定の正の電圧とした後、前記予め決められたループ回数の書き込みを行い、前記閾値電圧が前記第１のベリファイレベル以上であるときは、前記予め決められたループ回数の書き込みを行い、
前記目標ステートが前記第３のグループに属するステートの場合、前記制御回路２２は、前記閾値電圧が前記第１のベリファイレベルと前記第２のベリファイレベルの間にあるときは、前記予め決められたループ回数の書き込みを行い、前記閾値電圧が前記第１のベリファイレベル以上であるときは、前記ビット線電圧を前記所定の正の電圧とした後、前記予め決められたループ回数の書き込みを行う、請求項４に記載の半導体記憶装置。
【請求項６】
前記第２のグループに属するステートは、前記複数のステートの中で前記第１のグループに属するステートから１つおきに離れた複数の閾値分布のステートであり、
前記第３のグループに属するステートは、前記複数のステートの中で前記第１のグループに属するステートの隣のステートと、該隣のステートから１つおきに離れた複数の閾値分布のステートである、請求項４又は５に記載の半導体記憶装置。
【請求項７】
前記判定は、前記閾値レベルが前記第２ステートよりも高いステートのための第３のベリファイレベルと前記第３のベリファイレベルよりも低い第４のベリファイレベルとの間にあるか否かの判定を含む、請求項１に記載の半導体記憶装置。
【請求項８】
前記ステップアップ幅は、前記隣り合うステート間の閾値電圧差に対応する値の略２倍である、請求項２又は３に記載の半導体記憶装置。
【請求項９】
前記第１のベリファイレベルと前記第２のベリファイレベルの差は、前記隣り合うステート間の閾値電圧差に対応する値と略同じである、請求項２又は３に記載の半導体記憶装置。
【請求項１０】
前記制御回路は、前記第１書き込み動作において、前記判定後の前記追加プログラム動作では、ベリファイ動作は行わない、請求項１〜９のいずれか１つに記載の半導体記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、半導体記憶装置に関する。
【背景技術】
【０００２】
ＮＡＮＤ型ＦＬＡＳＨメモリでは、メモリセルを、１ビット（２値）のデータを保持可能なＳＬＣ（Ｓｉｎｇｌｅ  Ｌｅｖｅｌ  Ｃｅｌｌ）とする場合だけでなく、２ビット（４値）のデータを保持可能なＭＬＣ（Ｍｕｌｔｉ  Ｌｅｖｅｌ  Ｃｅｌｌ）、３ビット（８値）のデータを保持可能なＴＬＣ（Ｔｒｉｐｌｅ  Ｌｅｖｅｌ  Ｃｅｌｌ）または４ビット（１６値）のデータを保持可能なＱＬＣ（Ｑｕａｄ  Ｌｅｖｅｌ  Ｃｅｌｌ）として構成する場合がある。
【０００３】
メモリセルへデータを書き込むための書き込み動作においては、プログラム動作とベリファイ動作が、複数回実行される。メモリセルが多値化されるほど各値の閾値分布幅を狭くする必要がある。このため、書き込み動作において実行されるプログラム動作とベリファイ動作の回数が増える傾向にあり、データの書き込み時間が長くなってしまう。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１１−５２４６００号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本実施形態は、データの書き込み時間を短縮した半導体記憶装置を提供する。
【課題を解決するための手段】
【０００６】
実施形態の半導体記憶装置は、各々が複数レベルの閾値電圧のいずれかに設定可能な複数のメモリセルを備えたメモリセルアレイと、前記複数のメモリセルのゲートに接続されたワード線と、前記ワード線に電圧を印加するワード線ドライバと、前記複数のメモリセルの一端にそれぞれ接続された複数のビット線と、前記複数のビット線を介して、前記複数のメモリセルのデータを検出するセンスアンプ回路と、前記複数のメモリセルへデータを書き込むために、前記ワード線ドライバと前記センスアンプ回路を制御する制御回路と、を有し、前記制御回路は、各々が第１の閾値分布幅を有する複数のステートのデータを前記複数のメモリセルへ書き込む第１書き込み動作、及び、前記第１書き込み動作の後に行われ各々が前記第１の閾値分布幅よりも狭い第２の閾値分布幅を有する前記複数のステートのデータを前記複数のメモリセルへ書き込む第２書き込み動作を行うように、前記ワード線ドライバおよび前記センスアンプ回路を制御し、前記第１書き込み動作は、前記センスアンプ回路により判定された各メモリセルの閾値電圧が第１のベリファイレベルと前記第１のベリファイレベルよりも低い第２のベリファイレベルとの間にあるか否かの判定を行うベリファイ動作と、前記第１のベリファイレベルよりも高い目標ステートとする各メモリセルに対して実行される予め決められたループ回数の追加プログラム動作とを含み、前記追加プログラム動作の回数と、各ループにおいて前記ビット線に印加される電圧が、前記ベリファイ動作における判定結果と、前記各メモリセルの前記目標ステートとに応じて設定される、半導体記憶装置。
【図面の簡単な説明】
【０００７】
【図１】実施形態に関わるメモリシステムの構成例を示すブロック図である。
【図２】実施形態の不揮発性メモリの構成例を示すブロック図である。
【図３】実施形態に関わる、３次元構造のＮＡＮＤメモリセルアレイのブロックの構成例を示す図である。
【図４】実施形態に関わる、３次元構造のＮＡＮＤメモリセルアレイの一部領域の断面図である。
【図５】実施形態に関わる閾値領域の一例を示す図である。
【図６】本実施形態のデータコーディングを示す図である。
【図７】実施形態に関わる、書き込み動作時における各配線の電位変化を示す図である。
【図８】実施形態に関わる、書き込み動作時のストリングの様子を示す回路図である。
【図９】実施形態に関わる、ＱＰＷ動作時における各配線の電位変化を示す図である。
【図１０】実施形態に関わる、ベリファイ動作時における各配線の電位変化を示す図である。
【図１１】実施形態に関わる、書き込み動作を説明するための図である。
【図１２】実施形態に関わる、一つのワード線についての書き込みシーケンスを模式的に示す図である。
【図１３】実施形態に関わる、第１書き込み動作および第２書き込み動作の実行順序の例を示す図である。
【図１４】実施形態に関わる、第１書き込み動作におけるループ回数と選択メモリセルの閾値電圧Ｖｔｈとの関係を説明するための図である。
【図１５】実施形態に関わる、第１書き込み動作におけるループ回数と選択メモリセルの閾値電圧Ｖｔｈとの関係を説明するための図である。
【図１６】実施形態に関わる、書き込みステートのグループ分けと、各グループの追加プログラム動作におけるビット線電圧の設定の例を示す表である。
【図１７】実施形態に関わる、各ステートのメモリセルにおける追加プログラム動作実行回数及びビット線電圧の設定を示す表である。
【図１８】実施形態の変形例１に関わる、ベリファイ動作を所定の２ステートについて実行する場合の書き込みステートのグループ分けと、各グループの追加プログラム動作におけるビット線電圧の設定の例を示す表である。
【図１９】実施形態の変形例１に関わる、各ステートのメモリセルにおける追加プログラム動作実行回数及びビット線電圧の設定を示す表である。
【図２０】実施形態の変形例１の２段階書き込み方式を用いないときの、時間経過に伴うプログラム電圧Ｖｐｇｍのパルス波形の変化を示すグラフである。
【図２１】実施形態の変形例１の２段階書き込み方式を用いたときの、時間経過に伴うプログラム電圧Ｖｐｇｍのパルス波形の変化を示すグラフである。
【図２２】実施形態の変形例１に関わる、シミュレーションの結果得られた閾値電圧の分布を示すグラフである。
【図２３】実施形態の変形例２に関わる、ベリファイ動作を所定の４ステートについて実行する場合の書き込みステートのグループ分けと、各グループの追加プログラム動作におけるビット線電圧の設定の例を示す表である。
【図２４】実施形態の変形例２に関わる、各ステートのメモリセルにおける追加プログラム動作実行回数及びビット線電圧の設定を示す表である。
【図２５】実施形態の変形例３に関わる、ベリファイ動作を所定の２ステートについて実行する場合の各ステートのメモリセルにおける追加プログラム動作実行回数を示す表である。
【発明を実施するための形態】
【０００８】
以下、図面を参照して実施形態を説明する。
（メモリシステムの構成）
図１は、実施形態に関わるメモリシステムの構成例を示すブロック図である。本実施形態のメモリシステムは、メモリコントローラ１と不揮発性メモリ２とを備える。メモリシステムは、ホストと接続可能である。ホストは、例えば、パーソナルコンピュータ、携帯端末などの電子機器である。
【０００９】
不揮発性メモリ２は、データを不揮発に記憶する半導体記憶装置であり、例えば、ＮＡＮＤフラッシュメモリを備えている。本実施形態では、不揮発性メモリ２は、メモリセルあたり４ｂｉｔを記憶可能なメモリセルを有するＮＡＮＤメモリ、すなわち４ｂｉｔ／Ｃｅｌｌ（ＱＬＣ：Ｑｕａｄ  Ｌｅｖｅｌ  Ｃｅｌｌ）のＮＡＮＤメモリであるとして説明する。不揮発性メモリ２は、３次元化されている。
【００１０】
メモリコントローラ１は、ホストからの書き込みリクエストに従って不揮発性メモリ２へのデータの書き込みを制御する。また、メモリコントローラ１は、ホストからの読み出しリクエストに従って不揮発性メモリ２からのデータの読み出しを制御する。メモリコントローラ１は、ＲＡＭ（Ｒａｎｄｏｍ Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１１、プロセッサ１２、ホストインターフェイス１３、ＥＣＣ（Ｅｒｒｏｒ  Ｃｈｅｃｋ  ａｎｄ  Ｃｏｒｒｅｃｔ）回路１４およびメモリインターフェイス１５を備える。ＲＡＭ１１、プロセッサ１２、ホストインターフェイス１３、ＥＣＣ回路１４およびメモリインターフェイス１５は、互いに内部バス１６で接続される。
【００１１】
ホストインターフェイス１３は、ホストから受信したリクエスト、ユーザデータである書き込みデータなどを内部バス１６に出力する。また、ホストインターフェイス１３は、不揮発性メモリ２から読み出されたユーザデータ、プロセッサ１２からの応答などをホストへ送信する。  
メモリインターフェイス１５は、プロセッサ１２の指示に基づいてユーザデータ等を不揮発性メモリ２へ書き込む処理および不揮発性メモリ２から読み出す処理を制御する。
【００１２】
プロセッサ１２は、メモリコントローラ１を統括的に制御する。プロセッサ１２は、例えば、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、ＭＰＵ（Ｍｉｃｒｏ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）等である。プロセッサ１２は、ホストからホストインターフェイス１３経由でリクエストを受けた場合に、そのリクエストに従った制御を行う。例えば、プロセッサ１２は、ホストからのリクエストに従って、不揮発性メモリ２へのユーザデータおよびパリティの書き込みをメモリインターフェイス１５へ指示する。また、プロセッサ１２は、ホストからのリクエストに従って、不揮発性メモリ２からのユーザデータおよびパリティの読み出しを、メモリインターフェイス１５へ指示する。
【００１３】
プロセッサ１２は、ＲＡＭ１１に蓄積されるユーザデータに対して、不揮発性メモリ２上の格納領域（以下、メモリ領域という）を決定する。ユーザデータは、内部バス１６経由でＲＡＭ１１に格納される。プロセッサ１２は、メモリ領域の決定を、書き込み単位であるページ単位のデータ、すなわちページデータ、に対して実施する。本明細書では、不揮発性メモリ２の１ページに格納されるユーザデータをユニットデータと定義する。ユニットデータは、例えば、符号化されて符号語として不揮発性メモリ２に格納される。
【００１４】
なお、符号化は必須ではない。メモリコントローラ１は、符号化せずにユニットデータを不揮発性メモリ２に格納してもよいが、図１では、一構成例として符号化を行う構成を示している。メモリコントローラ１が符号化を行わない場合には、ページデータはユニットデータと一致する。また、１つのユニットデータに基づいて１つの符号語が生成されてもよいし、ユニットデータが分割された分割データに基づいて１つの符号語が生成されてもよい。また、複数のユニットデータを用いて１つの符号語が生成されてもよい。
【００１５】
プロセッサ１２は、ユニットデータごとに書き込み先の不揮発性メモリ２のメモリ領域を決定する。不揮発性メモリ２のメモリ領域には物理アドレスが割当てられている。プロセッサ１２は、ユニットデータの書き込み先のメモリ領域を、物理アドレスを用いて管理する。プロセッサ１２は、決定したメモリ領域の物理アドレスを指定してユーザデータを不揮発性メモリ２へ書き込むようメモリインターフェイス１５へ指示する。プロセッサ１２は、ユーザデータの論理アドレス（ホストが管理する論理アドレス）と物理アドレスとの対応を管理する。プロセッサ１２は、ホストからの論理アドレスを含む読み出しリクエストを受信した場合は、論理アドレスに対応する物理アドレスを特定し、物理アドレスを指定してユーザデータの読み出しをメモリインターフェイス１５へ指示する。
【００１６】
ＥＣＣ回路１４は、ＲＡＭ１１に格納されたユーザデータを符号化して符号語を生成する。また、ＥＣＣ回路１４は、不揮発性メモリ２から読み出された符号語を復号する。  
ＲＡＭ１１は、ホストから受信したユーザデータを不揮発性メモリ２へ記憶するまでに一時格納したり、不揮発性メモリ２から読み出したデータをホストへ送信するまでに一時格納する。ＲＡＭ１１は、例えば、ＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）やＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）などの汎用メモリである。
【００１７】
図１では、メモリコントローラ１が、ＥＣＣ回路１４とメモリインターフェイス１５をそれぞれ備える構成例を示した。しかしながら、ＥＣＣ回路１４がメモリインターフェイス１５に内蔵されていてもよい。また、ＥＣＣ回路１４が、不揮発性メモリ２に内蔵されていてもよい。
【００１８】
ホストから書き込みリクエストを受信した場合、メモリコントローラ１は次のように動作する。プロセッサ１２は、書き込みデータをＲＡＭ１１に一時記憶させる。プロセッサ１２は、ＲＡＭ１１にストアされたデータを読み出し、ＥＣＣ回路１４に入力する。ＥＣＣ回路１４は、入力されたデータを符号化し、符号語をメモリインターフェイス１５に入力する。メモリインターフェイス１５は、入力された符号語を不揮発性メモリ２に書き込む。
【００１９】
ホストから読み出しリクエストを受信した場合、メモリコントローラ１は次のように動作する。メモリインターフェイス１５は、不揮発性メモリ２から読み出した符号語をＥＣＣ回路１４に入力する。ＥＣＣ回路１４は、入力された符号語を復号し、復号されたデータをＲＡＭ１１にストアする。プロセッサ１２は、ＲＡＭ１１にストアされたデータを、ホストインターフェイス１３を介してホストに送信する。
【００２０】
図２は、本実施形態の不揮発性メモリの構成例を示すブロック図である。不揮発性メモリ２は、ＮＡＮＤ  Ｉ／Ｏインターフェイス２１、制御部２２、ＮＡＮＤメモリセルアレイ２３、センスアンプ回路２４及びワード線ドライバ２５を備える。不揮発性メモリ２は、例えば１チップの半導体基板（例えば、シリコン基板）からなる。
【００２１】
ＮＡＮＤ  Ｉ／Ｏインターフェイス２１は、メモリコントローラ１から出力された、書き込みイネーブル信号ＷＥｎ、読み出しイネーブル信号ＲＥｎ、アドレスラッチイネーブル信号ＡＬＥ、コマンドラッチイネーブル信号ＣＬＥなどの制御信号を受け取る。また、ＮＡＮＤ  Ｉ／Ｏインターフェイス２１は、メモリコントローラ１から出力された、コマンド、アドレス、データを受け取る。
【００２２】
制御部（制御回路）２２は、ＮＡＮＤ  Ｉ／Ｏインターフェイス２１から制御信号、コマンド、アドレス、データを受け取り、それらに基づいて、不揮発性メモリ２の動作を制御する制御部２２は、例えば、制御信号、コマンド、アドレス、データに基づいてワード線ドライバ２５やセンスアンプ回路２４を制御し、書き込み動作、読み出し動作、消去動作等を実行する。
【００２３】
制御部２２は、書き込みコマンドが入力された場合、書き込みコマンドに伴って入力されたデータをＮＡＮＤメモリセルアレイ２３上の指定されたアドレスへ書き込むようセンスアンプ回路２４とワード線ドライバ２５を制御する。また、制御部２２は、読み出しコマンドが入力された場合ＮＡＮＤメモリセルアレイ２３上の指定されたアドレスからデータを読み出すようセンスアンプ回路２４とワード線ドライバ２５を制御する。
【００２４】
例えば、制御部２２は、ＮＡＮＤメモリセルアレイ２３に含まれるメモリセル（メモリセルトランジスタ）ＭＴへデータを書き込むために、ワード線ドライバ２５によって複数のワード線ＷＬへ印加される電圧や、センスアンプ回路２４によって複数のビット線ＢＬに印加される電圧（ビット線電圧）を制御する。
【００２５】
センスアンプ回路２４は、複数のビット線ＢＬに独立して電圧（または電流）を印加し、また、複数のビット線ＢＬの電圧（または電流）を独立して検出することができるように構成されている。
【００２６】
ワード線ドライバ２５は、複数のワード線および選択ゲート線に独立して電圧を印加することができるように構成されている。
（ＮＡＮＤメモリセルアレイの構成）
図３は、３次元構造のＮＡＮＤメモリセルアレイ２３のブロックの構成例を示す図である。図３は、３次元構造のＮＡＮＤメモリセルアレイ（以下、メモリセルアレイという）２３を構成する複数のブロックのうちの１つのブロックＢＬＫを示している。メモリセルアレイの他のブロックも図３と同様の構成を有する。なお、本実施形態は、２次元構造のメモリセルアレイにも適用可能である。
【００２７】
図示するように、ブロックＢＬＫは、例えば４つのストリングユニット（ＳＵ０〜ＳＵ３）を含む。また各々のストリングユニットＳＵは、複数のＮＡＮＤストリングＮＳを含む。ＮＡＮＤストリングＮＳの各々は、ここでは８個のメモリセルＭＴ（ＭＴ０〜ＭＴ７）と、選択トランジスタＳＴ１，ＳＴ２とを含む。なお、ＮＡＮＤストリングＮＳに含まれるメモリセルＭＴの個数は、ここでは８個であるが、８個に限られず、例えば、３２個、４８個、６４個、９６個でもよい。選択トランジスタＳＴ１，ＳＴ２は、電気回路上は１つのトランジスタとして示しているが、構造上はメモリセルトランジスタと同じでもよい。また、例えばカットオフ特性を高めるために、選択トランジスタＳＴ１，ＳＴ２として、それぞれ複数の選択トランジスタを用いてもよい。 さらに、メモリセルＭＴと選択トランジスタＳＴ１，ＳＴ２との間には、ダミーセルトランジスタが設けられていてもよい。
【００２８】
メモリセルＭＴは、選択トランジスタＳＴ１，ＳＴ２間において、直列接続されるようにして配置されている。一端側のメモリセルＭＴ７が、選択トランジスタＳＴ１接続され、他端側のメモリセルＭＴ０が、選択トランジスタＳＴ２に接続されている。
【００２９】
ストリングユニットＳＵ０〜ＳＵ３の各々の選択トランジスタＳＴ１のゲートは、それぞれセレクトゲート線ＳＧＤ０〜ＳＧＤ３に接続される。他方で、選択トランジスタＳＴ２のゲートは、同一のブロックＢＬＫ内にある複数のストリングユニットＳＵ間で同一のセレクトゲート線ＳＧＳに共通接続される。また、同一のブロックＢＬＫ内にあるメモリセルＭＴ０〜ＭＴ７のゲートは、それぞれワード線ＷＬ０〜ＷＬ７に共通接続される。すなわち、ワード線ＷＬ０〜ＷＬ７及びセレクトゲート線ＳＧＳは、同一ブロックＢＬＫ内の複数のストリングユニットＳＵ０〜ＳＵ３間で共通に接続されているのに対し、セレクトゲート線ＳＧＤは、同一ブロックＢＬＫ内であってもストリングユニットＳＵ０〜ＳＵ３毎に独立している。
【００３０】
ＮＡＮＤストリングＮＳを構成するメモリセルＭＴ０〜ＭＴ７のゲートには、それぞれワード線ＷＬ０〜ＷＬ７が接続されている。ブロックＢＬＫ内において同一行にあるメモリセルＭＴｉのゲートは、同一のワード線ＷＬｉに接続される。なお、以下の説明では、ＮＡＮＤストリングＮＳを単に「ストリング」という場合がある。
【００３１】
各ＮＡＮＤストリングＮＳは、対応するビット線に接続されている。従って、各メモリセルＭＴは、ＮＡＮＤストリングＮＳに含ませる選択トランジスタＳＴや他のメモリセルＭＴを介して、ビット線に接続されている。上述した通り、同一のブロックＢＬＫ内にあるメモリセルＭＴのデータは、一括して消去される。一方、データの読み出し及び書き込みは、メモリセルグループＭＧ単位（またはページ単位）で行われる。本明細書では、１つのワード線ＷＬｉに接続され、かつ１つのストリングユニットＳＵに属する複数のメモリセルＭＴをメモリセルグループＭＧと定義する。本実施形態では、不揮発性メモリ２は４ビット（１６値）のデータを保持可能なＱＬＣ（Ｑｕａｄ  Ｌｅｖｅｌ  Ｃｅｌｌ）のＮＡＮＤメモリである。従って、１つのメモリセルグループＭＧが、４ページ分のデータを保持することができる。各メモリセルＭＴが保持することができる４ビットは、それぞれこの４ページに対応する。
【００３２】
図４は、３次元構造のＮＡＮＤメモリセルアレイの一部領域の断面図である。図４に示すように、ｐ型ウェル領域（Ｐ−ｗｅｌｌ）上に複数のＮＡＮＤストリングＮＳが形成されている。すなわち、ｐ型ウェル領域上には、セレクトゲート線ＳＧＳとして機能する複数の配線層３３３、ワード線ＷＬｉとして機能する複数の配線層３３２、およびセレクトゲート線ＳＧＤとして機能する複数の配線層３３１が積層されている。
【００３３】
そして、これらの配線層３３３，３３２，３３１を貫通してｐ型ウェル領域に達するメモリホール３３４が形成されている。メモリホール３３４の側面には、ブロック絶縁膜３３５、電荷蓄積膜（電荷保持領域）３３６、およびゲート絶縁膜３３７が順次形成され、更にメモリホール３３４内に導電体柱３３８が埋め込まれている。導電体柱３３８は、例えばポリシリコンからなり、ＮＡＮＤストリングＮＳに含まれるメモリセルＭＴ並びに選択トランジスタＳＴ１及びＳＴ２の動作時にチャネルが形成される領域として機能する。すなわち、配線層３３１と導電体柱３３８とそれらの間の膜３３５〜３３７がそれぞれ選択トランジスタＳＴ１として機能し、配線層３３２と導電体柱３３８とそれらの間の膜３３５〜３３７がそれぞれメモリセルＭＴとして機能し、配線層３３３と各導電体柱３３８とそれらの間の膜３３５〜３３７が選択トランジスタＳＴ２として機能する。
【００３４】
各ＮＡＮＤストリングＮＳにおいて、ｐ型ウェル領域上に選択トランジスタＳＴ２、複数のメモリセルＭＴ、及び選択トランジスタＳＴ１が順に形成されている。導電体柱３３８よりも上側には、ビット線ＢＬとして機能する配線層が形成される。導電体柱３３８の上端には、導電体柱３３８とビット線ＢＬとを接続するコンタクトプラグ３３９が形成されている。
【００３５】
さらに、ｐ型ウェル領域の表面内には、ｎ＋型不純物拡散層およびｐ＋型不純物拡散層が形成されている。ｎ＋型不純物拡散層上にはコンタクトプラグ３４０が形成され、コンタクトプラグ３４０上には、ソース線ＳＬとして機能する配線層が形成される。
【００３６】
以上の図４に示した構成が、図４の紙面の奥行き方向に複数配列されており、奥行き方向に一列に並ぶ複数のＮＡＮＤストリングの集合によって、１つのストリングユニットＳＵが形成される。
【００３７】
図５は、本実施形態に関わる閾値領域の一例を示す図である。図５では、４ｂｉｔ／Ｃｅｌｌの不揮発性メモリ２の閾値分布例を示している。不揮発性メモリ２において、各メモリセルＭＴの閾値電圧Ｖｔｈは、電荷蓄積膜に蓄えられた電荷量に応じて、変化する。不揮発性メモリ２は、メモリセルＭＴの閾値電圧Ｖｔｈが電荷蓄積膜に蓄えられた電荷量に応じて変化することを利用して、情報を記憶する。具体的には、メモリセルＭＴに記憶する複数のデータ値を、閾値電圧Ｖｔｈの複数の領域（閾値領域）にそれぞれ対応させる。
【００３８】
図５の、Ｅｒ，ＤＳ１，ＤＳ２，ＤＳ３，・・・，ＤＳ１３，ＤＳ１４，ＤＳ１５と記載した１６個の分布（山型）は、１６個の閾値領域内のそれぞれの閾値分布を示している。図５の上段は、データの書き込み動作の途中に得られる、すなわち後述するフォギー書き込みにより得られる１６個の閾値分布を示している。図５の下段は、データの書き込み動作において最終的に得られる、すなわち後述するファイン書き込みにより得られる１６個の閾値分布を示している。電荷蓄積膜（電荷保持領域）への電荷量の注入は、確率的であるため、各メモリセルＭＴの閾値分布も統計的に分布する。ここでは、各メモリセルＭＴは、１５個の境界、すなわち１５個の電圧レベル、によって仕切られた閾値分布を有している。図５の横軸は閾値電圧Ｖｔｈを示し、縦軸はメモリセル数（セル数）を示している。
【００３９】
本実施形態では、後述するファイン書き込みのときに用いられる閾値電圧Ｖｔｈが電圧Ｖｒ１以下となる領域をステートＥｒとよび、閾値電圧が電圧Ｖｒ１より大きく電圧Ｖｒ２以下となる領域をステートＳ１とよび、閾値電圧が電圧Ｖｒ２より大きく電圧Ｖｒ３以下となる領域をステートＳ２とよび、閾値電圧が電圧Ｖｒ３より大きく電圧Ｖｒ４以下となる領域をステートＳ３とよぶ。以下同様に、図５に示すように、ステートＳ４からＳ１５が、それぞれの電圧に応じて設定される。すなわち、ステートは、閾値電圧のレベルを示し、電圧は、Ｖｒ１＜Ｖｒ２＜Ｖｒ３＜Ｖｒ４＜Ｖｒ５＜Ｖｒ６＜Ｖｒ７＜Ｖｒ８＜Ｖｒ９＜Ｖｒ１０＜Ｖｒ１１＜Ｖｒ１２＜Ｖｒ１３＜Ｖｒ１４＜Ｖｒ１５の関係を有する。
【００４０】
また、ステートＥｒ，Ｓ１，Ｓ２，Ｓ３，・・・，Ｓ１３，Ｓ１４，Ｓ１５に対応する閾値分布をそれぞれ分布ＤＥｒ，ＤＳ１，ＤＳ２，ＤＳ３，・・・，ＤＳ１３，ＤＳ１４，ＤＳ１５（第１〜第１６の分布）と呼ぶ。電圧Ｖｒ１〜Ｖｒ１５は、各領域の境界となる基準電圧である。
【００４１】
図５の上段に示すＶｒｆ１，Ｖｒｆ２，・・・Ｖｒｆ１５は、フォギー書き込みのときに用いられる閾値電圧であり、それぞれフォギー書き込みの結果得られるステートＦＳ１，ＦＳ２，・・・ＦＳ１５に対応する。
【００４２】
目標ステートがＳ１のメモリセルＭＴは、フォギー書き込みにおいて、ステートＦＳ１まで書き込まれ、目標ステートがＳ２のメモリセルＭＴは、フォギー書き込みにおいて、ステートＦＳ２まで書き込まれ、以下同様に、目標ステートがＳ３からＳ１５のメモリセルＭＴは、それぞれフォギー書き込みにおいて、ステートＦＳ３からＦＳ１５まで書き込まれる。
【００４３】
隣り合う２つの分布ＤＳの中心間には、閾値電圧差ＶＲがある。閾値電圧差ＶＲは、隣り合う２つのステート間の閾値電圧差である。なお、本実施形態では、全ステートＥｒ〜Ｓ１５が略等間隔で分布している例を示しているが、閾値電圧差ＶＲは厳密に等間隔でなくてもよい。
【００４４】
不揮発性メモリ２では、複数の分布ＤＳに対応する複数のステートＳに複数のデータ値をそれぞれ対応させる。この対応をデータコーディングという。このデータコーディングのルールをあらかじめ定めておき、データの書き込み時、すなわちプログラム時には、データコーディングに従って記憶するデータ値に応じた閾値領域内となるようにメモリセルＭＴに電荷が注入される。
【００４５】
図６は、本実施形態のデータコーディングを示す図である。本実施形態では、図５に示した１６個の分布ＤＳを４ｂｉｔの１６個のデータ値にそれぞれ対応させる。各分布と、Ｈｉｇｈｅｒ，Ｕｐｐｅｒ，Ｍｉｄｄｌｅ，Ｌｏｗｅｒの４つの論理ページに対応するビットのデータ値との関係は、図６に示すように、例えば、閾値電圧ＶｔｈがＤＥｒ領域内にあるメモリセルは“１１１１”を記憶しているステートであり、閾値電圧ＶｔｈがＤＳ１領域内にあるメモリセルは“１０１１”を記憶しているステートである。
【００４６】
このように、閾値電圧Ｖｔｈの領域毎に、すなわち分布ＤＳ毎に、各メモリセルの４ｂｉｔのデータの状態を表すことが出来る。なお、メモリセルが未書き込みの状態（「消去」の状態）では、メモリセルの閾値電圧Ｖｔｈは分布ＤＥｒ領域内にある。また、ここに示した符号では、分布ＤＥｒ（消去）は、”１１１１”というデータを記憶し、分布ＤＳ１は、”１０１１”というデータを記憶するといったように、任意の２つの隣接する状態間で１ｂｉｔのみデータが変化する。このように、図６に示したコーディングは、任意の２つの隣接するステート間で１ｂｉｔのみデータが変化するグレイ符号である。
（データの書き込み動作）
まず、本実施形態に係る書き込み動作について簡単に説明する。まず、書き込み動作は、大まかにはプログラム動作とベリファイ動作とを含む。
【００４７】
プログラム動作は、電子を電荷蓄積膜に注入することにより閾値を上昇させる（または注入を禁止することで閾値を維持させる）動作のことである。以下では、閾値を上昇させる動作を「“０”プログラム」または「“０”書き込み」と呼び、“０”プログラム対象とされたビット線ＢＬには“０”データが与えられる。他方で、閾値を維持させる動作を「“１”プログラム」、「“１”書き込み」、または「書き込み禁止」と呼び、“１”プログラム対象とされたビット線ＢＬには“１”データが与えられる。
【００４８】
ベリファイ動作は、プログラム動作の後、データを読み出すことで、メモリセル（メモリセルトランジスタ）の閾値がターゲットレベルまで達したか否かを判定する動作である。ターゲットレベルまで達したメモリセルは、その後、書き込み禁止とされる。
【００４９】
以上のプログラム動作とベリファイ動作の組み合わせを繰り返すことで、メモリセルの閾値がターゲットレベルまで上昇される。
【００５０】
図７は、書き込み動作時における各配線の電位変化を示す図である。図７は、プログラム動作時における各配線の電位変化を示している。図示するように、まずセンスアンプ回路２４が各ビット線ＢＬにプログラムデータを転送する。“０”データが与えられたビット線ＢＬには“Ｌ”レベルとして接地電圧Ｖｓｓ（例えば０Ｖ）が印加される。“１”データが与えられたビット線ＢＬには“Ｈ”レベルとして書き込み禁止電圧Ｖｉｎｈｉｂｉｔ（例えば２．５Ｖ）が印加される。
【００５１】
またワード線ドライバ２５は、いずれかのブロックＢＬＫを選択し、更にいずれかのストリングユニットＳＵを選択する。そして、選択されたストリングユニットＳＵにおけるセレクトゲート線ＳＧＤに例えば５Ｖを印加して、選択トランジスタＳＴ１をオン状態とさせる。他方で、セレクトゲート線ＳＧＳに電圧Ｖｓｓを印加することで、選択トランジスタＳＴ２をオフ状態とさせる。
【００５２】
更にワード線ドライバ２５は、選択ブロックＢＬＫにおける非選択ストリングユニットＳＵ及び非選択ブロックＢＬＫにおける非選択ストリングユニットＳＵのセレクトゲート線ＳＧＤ及びＳＧＳに電圧Ｖｓｓを印可して、選択トランジスタＳＴ１及びＳＴ２をオフ状態とさせる。
【００５３】
またソース線ＳＬは、例えば１Ｖ（セレクトゲート線ＳＧＳの電位よりも高い電位）とされる。
【００５４】
その後、ワード線ドライバ２５は、選択ブロックＢＬＫにおける選択ストリングユニットＳＵにおけるセレクトゲート線ＳＧＤの電位を、例えば２．５Ｖとする。この電位は、“０”データ（０Ｖ）が与えられたビット線ＢＬに対応する選択トランジスタＳＴ１はオンさせるが、“１”データ（２．５Ｖ）が与えられたビット線ＢＬに対応する選択トランジスタＳＴ１はカットオフさせる電圧である。
【００５５】
そしてワード線ドライバ２５は、選択ブロックＢＬＫにおいていずれかのワード線ＷＬを選択し、選択ワード線に電圧Ｖｐｇｍを印加し、その他の非選択ワード線ＷＬに電圧Ｖｐａｓｓ＿ｐｇｍを印加する。電圧Ｖｐｇｍは、トンネル現象により電子を電荷蓄積膜に注入するための高電圧であり、Ｖｐｇｍ＞Ｖｐａｓｓ＿ｐｇｍである。この際のストリングユニットＳＵの様子を図８に示す。図８は、書き込み動作時のストリングの様子を示す回路図である。
【００５６】
図８では、“０”書き込み対象のビット線ＢＬ、及び、“１”書き込み対象のビット線ＢＬに対応する２つのＮＡＮＤストリングを図示している。また、ワード線ＷＬ３が選択された際の様子を示している。
【００５７】
図示するように、選択ワード線ＷＬ３には電圧Ｖｐｇｍが印加され、非選択ワード線ＷＬ０〜ＷＬ２及びＷＬ４〜ＷＬ７には電圧Ｖｐａｓｓ＿ｐｇｍが印加される。
【００５８】
そして、“０”書き込み対象のビット線ＢＬに対応するＮＡＮＤストリングでは、選択トランジスタＳＴ１がオン状態となる。そのため、選択ワード線ＷＬ３に接続されたメモリセルＭＴ３のチャネル電位Ｖchは０Ｖとなる。すなわち、ゲートとチャネルとの間の電位差が大きくなり、その結果、電子が電荷蓄積膜に注入されて、メモリセルＭＴ３の閾値が上昇される。
【００５９】
“１”書き込み対象のビット線ＢＬに対応するＮＡＮＤストリングでは、選択トランジスタＳＴ１がカットオフ状態となる。そのため、選択ワード線ＷＬ３に接続されたメモリセルＭＴ３のチャネルは電気的にフローティングとなり、ワード線ＷＬ等との容量カップリングによりチャネル電位Ｖchは電圧Ｖｐｇｍ近くまで上昇される。すなわち、ゲートとチャネルとの間の電位差が小さくなり、その結果、電子は電荷蓄積膜に注入されず、メモリセルＭＴ３の閾値は維持される（閾値分布レベルがより高い分布に遷移するほどには閾値は変動しない）。
【００６０】
なお、プログラム動作として、ＱＰＷ（Ｑｕｉｃｋ  ｐａｓｓ ｗｒｉｔｅ）動作がなされる場合もある。
【００６１】
上述した（通常の）プログラム動作では、図７に示すように、閾値を上昇させたいメモリセル（メモリセルトランジスタ）ＭＴに対応する（“０”データが与えられた）ビット線ＢＬには“Ｌ”レベル（例えば接地電圧Ｖｓｓ、０Ｖ）を印加し、閾値を上昇させたくないメモリセル（メモリセルトランジスタ）ＭＴに対応する（“１”データが与えられた）ビット線ＢＬには“Ｈ”レベル（例えば２．５Ｖ）を印加した。この場合、メモリセルグループＭＧに含まれる複数のメモリセルＭＴに対して、閾値を上昇させるか維持させるという２通りの制御しか行えない。図９は、ＱＰＷ動作時における各配線の電位変化を示す図である。
【００６２】
そこで、ＱＰＷ動作では、図９に示すように、閾値を小さい変化幅で上昇させたいメモリセルＭＴに対応するビット線ＢＬには、例えば、“Ｌ”レベル（接地電圧Ｖｓｓ、例えば０Ｖ）より高く“Ｈ”レベル（書き込み禁止電圧Ｖｉｎｈｉｂｉｔ、例えば２．５Ｖ）より低い電圧を印加する。すなわち、閾値を上昇させたいメモリセルＭＴに対応する（“０”データが与えられた）ビット線ＢＬよりも、ビット線ＢＬの充電レベルを上げる。これにより、対象となるメモリセルＭＴにおいては、チャネル電位Ｖchが“Ｌ”レベル（接地電圧Ｖｓｓ、例えば０Ｖ）よりも上昇する。従って、このチャネル電圧Ｖchの上昇分だけ、選択ワード線ＷＬに印加される電圧Ｖｐｇｍによる電荷蓄積膜への電子の注入が緩和される。従って、ＱＰＷ動作では、メモリセルグループＭＧに含まれる複数のメモリセルに対して、閾値を上昇させる、閾値を維持させる、あるいは、閾値を小さい変化幅で上昇させる、という３通りの制御を行うことができる。以下では、このＱＰＷ動作のためにビット線ＢＬに印加する電圧を、ＱＰＷ電圧Ｖｂｌ＿ｑｐｗと呼ぶ。
【００６３】
ベリファイ動作は、選択メモリセルの閾値電圧がベリファイレベルに達したか否か、即ち、選択メモリセルに所望のデータが書き込まれたか否かを検証する動作である。すなわち、ベリファイ動作は、書き込み動作の一環として、選択メモリセルの閾値電圧を検証するために実行される、読み出し動作である。
【００６４】
図１０は、ベリファイ動作時における各配線の電位変化を示す図である。ワード線ドライバ２５が、プログラム動作がなされたブロックＢＬＫおよびストリングユニットＳＵを選択し、選択されたブロックＢＬＫにおけるセレクトゲート線ＳＧＳおよび選択されたストリングユニットＳＵにおけるセレクトゲート線ＳＧＤに、例えば５Ｖを印加する。これにより、選択されたストリングユニットＳＵに含まれるＮＡＮＤストリングでは、選択トランジスタＳＴ１と選択トランジスタＳＴ２の両方がオン状態となる。
【００６５】
一方で、非選択のブロックＢＬＫにおけるセレクトゲート線ＳＧＳおよび、選択されたブロックＢＬＫにおける非選択のストリングユニットＳＵにおけるセレクトゲート線ＳＧＤには電圧Ｖｓｓを印可して、選択トランジスタＳＴ１および／またはＳＴ２をオフ状態とさせる。これにより、非選択のストリングユニットＳＵに含まれるＮＡＮＤストリングでは、少なくとも選択トランジスタＳＴ１がオフ状態となる。また、非選択のブロックＢＬＫに含まれるＮＡＮＤストリングでは、選択トランジスタＳＴ１と選択トランジスタＳＴ２の両方がオフ状態となる。
【００６６】
また、ワード線ドライバ２５は、選択ブロックＢＬＫにおいていずれかのワード線ＷＬを選択し、選択ワード線に電圧Ｖｒｅａｄを印加し、その他の非選択ワード線ＷＬに電圧Ｖｐａｓｓ＿ｒｅａｄを印加する。例えば、メモリセルＭＴの閾値電圧をステートＳ１にするためのプログラム動作を行った場合、ベリファイ動作では電圧Ｖｒｅａｄとして電圧Ｖｒ１を用いる。同様に、メモリセルＭＴの閾値電圧をステートＳ２にするためのプログラム動作を行った場合、ベリファイ動作では電圧Ｖｒｅａｄとして電圧Ｖｒ２を用いる。電圧Ｖｐａｓｓ＿ｒｅａｄは、非選択ワード線ＷＬに接続されたメモリセルＭＴをそれらの閾値電圧にかかわらずオンさせるための電圧であり、Ｖｐａｓｓ＿ｒｅａｄ＞Ｖｒｅａｄ（Ｖｒ１５）である。
【００６７】
そして、センスアンプ回路２４が各ビット線ＢＬを電圧Ｖｂｌに充電する。電圧Ｖｂｌは、ソース線の電圧Ｖｓｌよりも大きく、Ｖｂｌ＞Ｖｓｌである。これにより、選択されたストリングユニットＳＵに含まれるＮＡＮＤストリングでは、選択ワード線ＷＬに接続されたメモリセルＭＴの閾値電圧に応じて、ビット線ＢＬ側からソース線ＳＬ側へ、電流が流れる（あるいは流れない）。これにより、閾値電圧が所望のレベルまで上昇しているかどうかを検証することができる。
【００６８】
より詳細には、書き込み動作は、プログラム動作とベリファイ動作とを含むループを繰り返すことにより実行される。図１１は、書き込み動作を説明するための図である。図１１に示すように、プログラム動作では、選択ワード線ＷＬにプログラム電圧Ｖｐｇｍが印加される。続くベリファイ動作では、検証する閾値レベルに対応して、電圧Ｖｒ１〜Ｖｒ１５のうち少なくとも１つが印加される。なお、各ループにおいて、プログラム動作が実行された後、ベリファイ動作が複数回実行されることがある。反対に、各ループにおいて、プログラム動作が実行された後、ベリファイ動作が実行されないこともある。
（２段階書き込み方式）
次に、不揮発性メモリ２へのデータの書き込み動作について説明する。
【００６９】
不揮発性メモリ２へのデータの書き込み動作は、２段階書き込み方式による。２段階書き込み方式は、データの書き込みを行うセルを含むブロックＢＬＫに対する一括消去の実行後、第１書き込み動作によって各ステートのデータを大まかに書き込んだ後、第２書き込み動作によって各ステートのデータを精度よく書き込む方式である。
【００７０】
メモリセルアレイ２３へのデータの書き込みは、制御部２２により行われる。制御部２２は、第１書き込み動作と第２書き込み動作を行うように、プログラム電圧Ｖｐｇｍ及びビット線電圧を制御する。第１書き込み動作では、図５の上段に示すような閾値分布幅を有する複数のステートＦＳ１〜ＦＳ１５のデータが、複数のメモリセルＭＴへ書き込まれる。第２書き込み動作は、第１書き込み動作の後に行われ、図５の下段に示すような閾値分布幅を有する複数のステートＳ１〜Ｓ１５のデータが、複数のメモリセルＭＴへ書き込まれる。
【００７１】
すなわち、制御部２２は、各々が第１の閾値分布幅（図５の上段）を有する複数のステートのデータを複数のメモリセルＭＴへ書き込む第１書き込み動作、及び、その第１書き込み動作の後に行われ各々が第１の閾値分布幅よりも狭い第２の閾値分布幅（図５の下段）を有する複数のステートのデータを複数のメモリセルＭＴへ書き込む第２書き込み動作を行うように、プログラム電圧Ｖｐｇｍ及びビット線電圧を制御する。
【００７２】
図１２は、一つのワード線ＷＬについての書き込みシーケンスを模式的に示す図である。時刻ｔ１で第１書き込み動作が開始され、時刻ｔ２で第１書き込み動作が終了した後に第２書き込み動作が開始され、時刻ｔ３で第２書き込み動作が終了する。
【００７３】
以下、第１書き込み動作を、フォギー書き込みといい、第２書き込み動作を、ファイン書き込みという。
【００７４】
なお、実際には、フォギー書き込みとファイン書き込みは、隣接ワード線干渉を低減するために、ｋを０〜７の整数のいずれかとすれば、ワード線ＷＬｋのフォギー書き込みをした後の次には、ワード線ＷＬ（ｋ＋１）のフォギー書き込みをし、その後に、ワード線ＷＬｋのファイン書き込みを実行する、というような順序で実行される。図１２では、模式的に、時刻ｔ２で第１書き込み動作が終了した後に第２書き込み動作が開始される様子を示している。しかし、実際には、あるワード線ＷＬｋに対応するあるメモリセルＭＴ（メモリセルグループＭＧ）に対して第１書き込み動作が終了する時刻と、第２書き込み動作が開始される時刻との間には、少なくとも、同じストリングユニットＳＵｊ（ｊは０〜３の整数のいずれか）においてワード線ＷＬ（ｋ＋１）に対応する他のメモリセルＭＴ（メモリセルグループＭＧ）に対する第１書き込み動作が実行される。
【００７５】
図１３は、第１書き込み動作および第２書き込み動作の実行順序の例を示す図である。例えば、１番目から４番目の動作として、ワード線ＷＬ０に対応したメモリセルグループＭＧに対する第１書き込み動作が実行される。次に、５番目から８番目の動作として、ワード線ＷＬ１に対応したメモリセルグループＭＧに対する第１書き込み動作が実行される。
【００７６】
次に、９番目から１２番目の動作として、ワード線ＷＬ０に対応したメモリセルグループＭＧに対する第２書き込み動作が実行される。以下同様の実行順序で、動作が繰り返される。例えば、このような動作順序の場合、ストリングユニットＳＵ０においてワード線ＷＬ０に対応するメモリセルグループＭＧに対するデータの書き込みが完了するのは、９番目の動作が終了した時刻である。
（第１書き込み動作：フォギー書き込み）
フォギー書き込みの書き込みシーケンスは、ループ（プログラムループ）を繰り返すことにより実行される。例えば、データの書き込みを行うワード線（以下、選択ワード線ともいう）へプログラム電圧Ｖｐｇｍを印加し、データの書き込みが行われる選択されたメモリセルＭＴ（以下、選択メモリセルＭＴともいう）の閾値電圧Ｖｔｈを上昇させてデータを書き込む。
【００７７】
本実施形態では、フォギー書き込み（第１書き込み動作）において、目標ステートがステートＦＳ１からＦＳ１５の各メモリセルＭＴに対して、閾値電圧ＶｔｈがステートＦＳ１のフォギーのベリファイレベルに到達したか否かの判定をするときにのみ、後述する２つのベリファイレベルを用いたベリファイ動作が実行される。ベリファイ動作は、ＥｒステートのメモリセルＭＴ、またはＦＳ１のベリファイレベルに到達したメモリセルＭＴ以外の全てのメモリセルＭＴに対して実行される。
【００７８】
なお、後述するように、例えば、ステートＦＳ１およびＦＳ８の閾値分布に対応して設定された、閾値分布の直下に設定されたそれぞれ２つのベリファイレベルも含む４つのベリファイレベルを用いたベリファイ動作を実行してもよい。
【００７９】
記憶されるデータに応じた目標ステートが、各メモリセルＭＴに設定され、その目標ステートに応じた電荷量が各メモリセルＭＴに蓄積される。
【００８０】
複数のステートは、第１、第２及び第３のグループにグループ分けされ、各ステートは、いずれかのグループに属している。
【００８１】
ここでは、目標ステートがステートＦＳ１のメモリセルＭＴは、グループ１に属し、グループ１のステートＦＳ１については、２つのベリファイ電圧を用いたベリファイ動作が行われる。具体的には、電圧Ｖｒｆ１と、それよりも低い電圧Ｖｒｆ１ｌｏｗとの比較によるベリファイ動作が行われる。以下、電圧Ｖｒｆ１を、ベリファイハイレベルともいい、電圧Ｖｒｆ１ｌｏｗを、ベリファイローレベルともいう。
【００８２】
目標ステートがステートＦＳ３、ＦＳ５、ＦＳ７、ＦＳ９、ＦＳ１１、ＦＳ１３、ＦＳ１５の各メモリセルＭＴは、グループ２に属し、目標ステートがステートＦＳ２、ＦＳ４、ＦＳ６、ＦＳ８、ＦＳ１０、ＦＳ１２、ＦＳ１４の各メモリセルＭＴは、グループ３に属し、グループ２と３の各ステートについては、それぞれのフォギー状態ＦＳ２〜ＦＳ１５の閾値分布に対応して設定された、閾値分布の直下の電圧値を用いたベリファイ動作は行われない。
【００８３】
グループ２に属するステートＦＳ３、ＦＳ５、ＦＳ７、ＦＳ９、ＦＳ１１、ＦＳ１３、ＦＳ１５は、１６個の複数のステートの中で第１のグループに属するステートＦＳ１から１つおきに離れた複数の閾値分布のステートである。グループ３に属するステートＦＳ２、ＦＳ４、ＦＳ６、ＦＳ８、ＦＳ１０、ＦＳ１２、ＦＳ１４は、複数のステートの中で第１のグループに属するステートＦＳ１の隣のステートＦＳ２と、隣のステートＦＳ２から１つおきに離れた複数の閾値分布のステートである。
【００８４】
以下、ステートＦＳ１からＦＳ１５のメモリセルＭＴの書き込みについて説明する。  
選択メモリセルＭＴを含むページデータに対して、始めにフォギー書き込みが実行される。
（１）グループ１（ステートＦＳ１）のメモリセルＭＴに対する書き込み動作
一括消去の実行後、選択メモリセルＭＴの閾値電圧Ｖｔｈが、ベリファイハイレベルＶｒｆ１に到達したかすなわちベリファイハイレベルＶｒｆ１以上になったか、あるいはベリファイハイレベルＶｒｆ１とベリファイローレベルＶｒｆ１ｌｏｗの間にあるかが判定される。ここでは、ベリファイハイレベルＶｒｆ１は、図５に示す、フォギー書き込みにおける閾値分布の電圧Ｖｒｆ１と同じである。
【００８５】
すなわち、ベリファイローレベルＶｒｆ１ｌｏｗを用いたベリファイ動作にパスし、ベリファイハイレベルＶｒｆ１を用いたベリファイ動作にフェイルした（閾値電圧ＶｔｈがベリファイローレベルＶｒｆ１ｌｏｗとベリファイハイレベルＶｒｆ１との間にある））メモリセルＭＴについては、後続するループ（すなわち次のループ）において、ビット線ＢＬにＱＰＷ電圧Ｖｂｌ＿ｑｐｗを印加する。
【００８６】
このＱＰＷ電圧Ｖｂｌ＿ｑｐｗの印加は、後続するループにおいて、選択メモリセルＭＴの閾値電圧Ｖｔｈが、ベリファイハイレベルＶｒｆ１をパスすると期待される。  
なお、ＱＰＷ電圧Ｖｂｌ＿ｑｐｗの印加は、後続するループにおいて、選択メモリセルＭＴの閾値電圧Ｖｔｈが、ベリファイハイレベルＶｒｆ１を実際にパスするまで行われるようにしてもよい。
【００８７】
目標ステートがステートＦＳ１のメモリセルＭＴについては、ベリファイハイレベルＶｒｆ１を用いたベリファイ動作にパスした（閾値電圧がベリファイハイレベルＶｒｆ１に到達した）メモリセルＭＴについては、以降のループでは、書き込み禁止（ｉｎｈｉｂｉｔ）の状態となる。
【００８８】
図１４は、第１書き込み動作（フォギー書き込み）におけるループ回数と選択メモリセルＭＴの閾値電圧Ｖｔｈとの関係を説明するための図である。図１４では、縦軸は、メモリセルＭＴの閾値電圧Ｖｔｈであり、横軸は、ループ回数を示す。図１４では、縦軸に沿って、第１書き込み動作において得られる、すなわちフォギー書き込みにより得られる閾値分布の一部が示されている。
【００８９】
図１４の閾値電圧の分布は、フォギー書き込みにおける分布であるため、図５に示した分布ＤＳよりは、幅が広い。図１４では、ステートＦＳ１からＦＳ５までの各ステートＦＳの分布が示されている。
【００９０】
図１４において、Ｖｒｆ１は、ステートＦＳ１のベリファイハイレベルであり、Ｖｒｆ１ｌｏｗは、ベリファイハイレベルＶｒｆ１よりも、２つのステート間の閾値電圧差ＶＲだけ低いベリファイローレベルである。なお、電圧Ｖｒｆ１と閾値電圧差ＶＲの値によっては、このベリファイローレベルＶｒｆ１ｌｏｗ（Ｖｒｆ１ｌｏｗ＝Ｖｒｆ１−ＶＲ）は、負の値になり得る。この場合、ベリファイローレベルＶｒｆ１ｌｏｗを用いるベリファイ動作では、ワード線ドライバ２５が選択ワード線ＷＬに負の電圧を供給してもよい。あるいは、選択ワード線ＷＬに電圧Ｖｒｆ１を供給した上で、センスアンプ回路２４が動作パラメータを変更して（例えば、センス時間を短くして）、実質的に選択ワード線ＷＬに印加された電圧が低い場合と等価になる条件を作り出して、検証するようにしてもよい。
【００９１】
初めに、ブロック消去によって、ブロックＢＬＫ内の全てのメモリセルＭＴは、消去状態（ステートＥｒ）になっている。従って、ブロックＢＬＫ内のメモリセルＭＴの閾値電圧Ｖｔｈは、論理データの中で最も低いステートＥｒとなっている。
【００９２】
一括消去の実行後、フォギー書き込みにおいては、制御部２２は、データの書き込みのために選択されたワード線（以下、選択ワード線という）ＷＬに、プログラム電圧Ｖｐｇｍを印加する。
【００９３】
図１４において、丸マークＰ１は、閾値電圧ＶｔｈがベリファイローレベルＶｒｆ１ｌｏｗを超えてベリファイハイレベルＶｒｆ１まで直接到達したメモリセルＭＴの閾値電圧Ｖｔｈを示している。
【００９４】
図１４において、三角マークＰ３は、閾値電圧ＶｔｈがベリファイローレベルＶｒｆ１ｌｏｗに到達したものの、ベリファイハイレベルＶｒｆ１には到達していないメモリセルＭＴの閾値電圧を示している。
【００９５】
目標ステートがステートＦＳ１のメモリセルＭＴの場合、閾値電圧ＶｔｈがＰ１であるとき、以降のループでは、書き込み禁止（ｉｎｈｉｂｉｔ）の状態となる。
【００９６】
目標ステートがステートＦＳ１のメモリセルＭＴの場合、閾値電圧ＶｔｈがＰ３であるとき、次のループにおいて、ビット線ＢＬにＱＰＷ電圧Ｖｂｌ＿ｑｐｗを印加した状態でプログラム電圧Ｖｐｇｍが印加され、以降のループでは、書き込み禁止（ｉｎｈｉｂｉｔ）の状態となる。
【００９７】
制御部２２は、目標ステートがステートＦＳ１であって、電圧Ｖｒｆ１、Ｖｒｆ１ｌｏｗを用いたベリファイ動作にパスした各セルに対しては、後続するループでは、ベリファイ動作を行わない。
（２）グループ２（ステートＦＳ３、ＦＳ５、ＦＳ７、ＦＳ９、ＦＳ１１、ＦＳ１３、ＦＳ１５）のメモリセルＭＴに対する書き込み動作
選択メモリセルＭＴの閾値電圧Ｖｔｈが、ベリファイローレベルＶｒｆ１ｌｏｗを超えてベリファイハイレベルＶｒｆ１に直接到達したメモリセルＭＴについては、プログラム電圧Ｖｐｇｍのステップアップ幅ΔＶｐｇｍを、１ループあたりの閾値電圧Ｖｔｈの上昇量（ΔＶｔｈ）が隣り合う２つのステート間の閾値電圧差ＶＲの２倍（すなわち２ＶＲ）程度になるように設定する。そして、そのように設定されたステップアップ幅ΔＶｐｇｍを用いて、ビット線ＢＬに接地電圧Ｖｓｓ（例えば０Ｖ）を印加した状態で、ステート毎に設定されたループ回数の追加プログラム動作が行われる。
【００９８】
また、選択メモリセルＭＴの閾値電圧Ｖｔｈが、ベリファイローレベルＶｒｆ１ｌｏｗに到達したものの、ベリファイハイレベルＶｒｆ１には到達していないメモリセルＭＴについては、次のループにおいて、ビット線ＢＬにＱＰＷ電圧Ｖｂｌ＿ｑｐｗを印加した状態でプログラム電圧Ｖｐｇｍが印加される。ビット線ＢＬにＱＰＷ電圧Ｖｂｌ＿ｑｐｗを印加することにより、対応するメモリセルＭＴにおいては、チャネル電圧が接地電圧Ｖｓｓ（例えば０Ｖ）ではなくＱＰＷ電圧Ｖｂｌ＿ｑｐｗとなり、電荷蓄積膜にかかる電位差が「Ｖｐｇｍ−Ｖｓｓ」から「Ｖｐｇｍ−Ｖｂｌ＿ｑｐｗ（Ｖｂｌ＿ｑｐｗ＞Ｖｓｓ）」へと緩和されるため、当該メモリセルＭＴにとっての実効的なステップアップ幅ΔＶｐｇｍは、ΔＶｔｈ＝２ＶＲとなる値ではなく、ΔＶｔｈ＝ＶＲとなる値に設定される。
【００９９】
その後のループにおいては、ビット線ＢＬにＱＰＷ電圧Ｖｂｌ＿ｑｐｗを印加した状態で、プログラム電圧Ｖｐｇｍのステップアップ幅ΔＶｐｇｍを、ΔＶｔｈ＝２ＶＲとなる値に設定して、ステート毎に設定されたループ回数の追加プログラム動作が行われる。
【０１００】
すなわち、フォギー書き込みにおいては、制御部２２は、選択メモリセルＭＴの書き込みデータと、ステートＦＳ１についての２つの電圧レベルを用いたベリファイ動作の結果とに応じて、追加プログラム動作における選択ワード線ＷＬへのプログラム電圧Ｖｐｇｍのステップアップ幅ΔＶｐｇｍを、１ループあたりの閾値電圧Ｖｔｈの上昇量（ΔＶｔｈ）が２ＶＲになる値又はＶＲになる値に設定する。
【０１０１】
なお、ここでは、ステップアップ幅ΔＶｐｇｍをΔＶｔｈ＝２ＶＲになる値に設定する例を示しているが、閾値電圧差ＶＲの３倍に対応する値（ΔＶｔｈ＝３ＶＲになる値）、閾値電圧差ＶＲの４倍に対応する値（ΔＶｔｈ＝４ＶＲになる値）等、すなわち、閾値電圧差ＶＲの整数倍に対応する値（ΔＶｔｈ＝ｎＶＲになる値）に設定してもよい。この場合、ベリファイローレベルの個数、ＱＰＷ電圧Ｖｂｌ＿ｑｐｗの個数、及びＱＰＷ電圧Ｖｂｌ＿ｑｐｗを印加して行うプログラム動作の回数を、それぞれ対応して設定すればよい。
【０１０２】
上述したように、制御部２２は、第１書き込み動作において、ステートＦＳ１について２つのベリファイ電圧を用いたベリファイ動作をして、その結果に基づいてＱＰＷ動作を実行し、その後にプログラム電圧ＶｐｇｍをΔＶｔｈ＝２ＶＲになるステップアップ幅ΔＶｐｇｍで増加させながらプログラム動作を繰り返すように制御する。これにより、第１書き込み動作において必要となるループ回数を、閾値分布の谷の数（例えば、ＱＬＣの場合、閾値分布の山の数は１６なので、谷の数は１５となる）よりも少ない回数で行うことができる。
【０１０３】
制御部２２は、ビット線ＢＬの電圧を所定量だけ上げてＱＰＷ電圧Ｖｂｌ＿ｑｐｗとすることによって、対応するメモリセルＭＴにとっての実効的なプログラム電圧Ｖｐｇｍのステップアップ幅ΔＶｐｇｍを、ビット線ＢＬに接地電圧Ｖｓｓ（例えば０Ｖ）を印加する場合と比べて、半分にすることができる。
【０１０４】
上述したように、図１４において、丸マークＰ１は、閾値電圧がベリファイローレベルＶｒｆ１ｌｏｗを超えてベリファイハイレベルＶｒｆ１に直接到達したメモリセルＭＴの閾値電圧を示している。その場合、選択メモリセルＭＴの目標ステートがステートＦＳ３の場合、丸マークＰ２で示すように、選択メモリセルＭＴは、次の１回の追加プログラム動作によりステートＦＳ３になり、以降のループでは、書き込み禁止（ｉｎｈｉｂｉｔｔ）の状態となる。
【０１０５】
図１４において、三角マークＰ３は、閾値電圧がベリファイローレベルＶｒｆ１ｌｏｗに到達したものの、ベリファイハイレベルＶｒｆ１には到達していないメモリセルＭＴの閾値電圧を示している。この場合、ベリファイハイレベルＶｒｆ１に到達していないメモリセルＭＴについては、後続するループにおいて、ＱＰＷ電圧Ｖｂｌ＿ｑｐｗを印加した状態で書き込まれる。この結果、選択メモリセルＭＴの閾値電圧が、ベリファイハイレベルＶｒｆ１に到達すると期待される。これ以降のループでは書き込み禁止の状態となる。
【０１０６】
図１４の例では、後続するループ（２）において、三角マークＰ４のように閾値電圧Ｖｔｈが、ベリファイハイレベルＶｒｆ１に到達している。よって、次のループ（３）では、１回の追加プログラム動作により三角マークＰ５のようにステートＦＳ３になり、以降のループでは、書き込み禁止（ｉｎｈｉｂｉｔｔ）の状態となる。
【０１０７】
三角マークＰ３は、閾値電圧がベリファイローレベルＶｒｆ１ｌｏｗに到達したものの、ベリファイハイレベルＶｒｆ１には到達していないメモリセルＭＴの閾値電圧を示している。目標ステートがステートＦＳ３の場合、三角マークＰ３の状態から、次の１回の追加プログラム動作により三角マークＰ４で示すようにステートＦＳ１になり、続くループ（３）で三角マークＰ５で示すようにステートＦＳ３になり、それ以降のループでは、書き込み禁止（ｉｎｈｉｂｉｔｔ）の状態となる。よって、図１４において、三角マークＰ４および三角マークＰ５で示すように、ステートは、次のループ（３）における１回の追加プログラム動作によりステートＦＳ３になる。
【０１０８】
また、図１４の例では、選択メモリセルＭＴの目標ステートがステートＦＳ５の場合、丸マークＰ２あるいは三角マークＰ５の状態から追加プログラム動作を実行することにより、丸マークＰ６あるいは三角マークＰ７で示すように、ステートは、次のループ（３）あるいは（４）における１回の追加プログラム動作によりステートＦＳ５になる。
【０１０９】
目標ステートがステートＦＳ７の選択メモリセルＭＴについては、図示しないが、ステートＦＳ５である丸マークＰ６あるいは三角マークＰ７の状態から、１回の追加プログラム動作によりステートＦＳ７になる。
【０１１０】
その他のステートＦＳ９，ＦＳ１１，ＦＳ１３，ＦＳ１５についても、同様に、各追加プログラム動作では、１ループあたりの閾値電圧Ｖｔｈの上昇量（ΔＶｔｈ）が閾値電圧差ＶＲの２倍になるようなステップアップ幅ΔＶｐｇｍでステップアップしつつ、プログラム電圧Ｖｐｇｍの印加が行われるので、短時間でフォギー書き込み（第１書き込み動作）をすることができる。
【０１１１】
よって、グループ２のステートの各メモリセルＭＴについては、追加プログラム動作におけるプログラム電圧Ｖｐｇｍのステップアップ幅ΔＶｐｇｍを、１回の追加プログラム動作あたりの閾値電圧Ｖｔｈの上昇量（ΔＶｔｈ）が２ＶＲになる値に設定してフォギー書き込みをすることができるので、フォギー書き込みを短時間で行うことができる。
（３）グループ３（ステートＦＳ２、ＦＳ４、ＦＳ６、ＦＳ８、ＦＳ１０、ＦＳ１２、ＦＳ１４）のメモリセルＭＴに対する書き込み動作
グループ３の各メモリセルＭＴについても、グループ２と同様に、選択メモリセルＭＴの閾値電圧Ｖｔｈが、ベリファイローレベルＶｒｆ１ｌｏｗには到達したものの、ベリファイハイレベルＶｒｆ１には到達しないか、あるいはベリファイローレベルＶｒｆ１ｌｏｗを超えてベリファイハイレベルＶｒｆ１に直接到達したかに応じて、動作が異なる。
【０１１２】
図１５は、第１書き込み動作におけるループ回数と選択メモリセルＭＴの閾値電圧Ｖｔｈとの関係を説明するための図である。図１５は、グループ３のステートＦＳ２及びＦＳ４のメモリセルＭＴについての、フォギー書き込み（第１書き込み動作）におけるループ回数と選択メモリセルＭＴの閾値電圧Ｖｔｈとの関係を説明するための図である。図１５では、縦軸は、メモリセルＭＴの閾値電圧Ｖｔｈであり、横軸は、ループ回数を示す。  
図１５において、四角マークＰ１１は、閾値電圧ＶｔｈがベリファイローレベルＶｒｆ１ｌｏｗに到達したものの、ベリファイハイレベルＶｒｆ１には到達していないメモリセルＭＴの閾値電圧を示している。
【０１１３】
目標ステートがステートＦＳ２の場合、四角マークＰ１１の状態から、次の１回の追加プログラム動作により四角マークＰ１２で示すようにステートＦＳ２になり、以降のループでは、書き込み禁止（ｉｎｈｉｂｉｔｔ）の状態となる。このとき、追加プログラム動作は、ビット線ＢＬに接地電圧Ｖｓｓ（例えば０Ｖ）を印加した状態で、プログラム電圧Ｖｐｇｍのステップアップ幅ΔＶｐｇｍを、１ループあたりの閾値電圧Ｖｔｈの上昇量（ΔＶｔｈ）が隣り合う２つのステート間の閾値電圧差ＶＲの２倍程度になるように（すなわちΔＶｔｈ＝２ＶＲとなるように）設定して、実行される。
【０１１４】
図１５において、×マークＰ１３は、閾値電圧ＶｔｈがベリファイローレベルＶｒｆ１ｌｏｗと超えて、ベリファイハイレベルＶｒｆ１に直接到達したメモリセルＭＴの閾値電圧を示している。
【０１１５】
目標ステートがステートＦＳ２の場合、ＱＰＷ電圧Ｖｂｌ＿ｑｐｗを印加した状態で、次の１回の追加プログラム動作により×マークＰ１４で示すようにステートＦＳ２になり、以降のループでは、書き込み禁止（ｉｎｈｉｂｉｔ）の状態となる。ビット線ＢＬにＱＰＷ電圧Ｖｂｌ＿ｑｐｗを印加することにより、対応するメモリセルＭＴにおいては、チャネル電圧が接地電圧Ｖｓｓ（例えば０Ｖ）ではなくＱＰＷ電圧Ｖｂｌ＿ｑｐｗとなり、電荷蓄積膜にかかる電位差が「Ｖｐｇｍ−Ｖｓｓ」から「Ｖｐｇｍ−Ｖｂｌ＿ｑｐｗ（Ｖｂｌ＿ｑｐｗ＞Ｖｓｓ）」へと緩和される。従って、当該メモリセルＭＴにとっての実効的なステップアップ幅ΔＶｐｇｍは、ΔＶｔｈ＝２ＶＲとなる値ではなく、ΔＶｔｈ＝ＶＲとなる値に設定される。
【０１１６】
また、図１５では、目標ステートがステートＦＳ４の場合、ステートＦＳ２と同様に、Ｐ１２あるいはＰ１４に後続する追加プログラム動作により、四角マークＰ１５あるいは×マークＰ１６で示すように、次のループ（３）における１回の追加プログラム動作によりステートＦＳ４になる。
【０１１７】
目標ステートがステートＦＳ６の選択メモリセルＭＴについては、ステートＦＳ４の後の１回の追加プログラム動作によりステートＦＳ６になる。
【０１１８】
その他のステートＦＳ８，ＦＳ１０，ＦＳ１２，ＦＳ１４についても、同様に、各追加プログラム動作では、ΔＶｔｈ＝２ＶＲとなるようなステップアップ幅ΔＶｐｇｍでステップアップしつつ、プログラム電圧Ｖｐｇｍの印加が行われるので、短時間でフォギー書き込み（第１書き込み動作）をすることができる。
【０１１９】
よって、グループ３のステートの各メモリセルＭＴについては、１回の追加プログラム動作あたりΔＶｔｈ＝２ＶＲとなるようなステップアップ幅ΔＶｐｇｍでプログラム電圧Ｖｐｇｍを上昇させつつフォギー書き込みをすることができるので、フォギー書き込みを短時間で行うことができる。
【０１２０】
図１６は、書き込みステートのグループ分けと、各グループの追加プログラム動作におけるビット線電圧の設定の例を示す表である。
【０１２１】
図１６に示すように、目標ステートがステートＦＳ１のメモリセルＭＴの場合、書き込み動作の過程で、閾値電圧ＶｔｈがベリファイハイレベルＶｒｆ１に直接到達したメモリセルＭＴについては、その後の書き込みは禁止される。一方で、閾値電圧ＶｔｈがベリファイローレベルＶｒｆ１ｌｏｗに到達したものの、ベリファイハイレベルＶｒｆ１に到達していないメモリセルＭＴについては、後続するループにおいて、ビット線ＢＬに所定のＱＰＷ電圧Ｖｂｌ＿ｑｐｗを印加する。
【０１２２】
すなわち、目標ステートがグループ１に属するステートの場合、制御回路２２は、閾値電圧ＶｔｈがベリファイハイレベルＶｒｆ１とベリファイローレベルＶｒｆ１ｌｏｗの間にあるときは、ビット線ＢＬに、所定の正の電圧としてＱＰＷ電圧Ｖｂｌ＿ｑｐｗを印加して次の書き込みを行う。一方で、閾値電圧ＶｔｈがベリファイハイレベルＶｒｆ１以上であるときは、次の書き込みは禁止する。
【０１２３】
目標ステートがステートＦＳ３、ＦＳ５、ＦＳ７、ＦＳ９、ＦＳ１１、ＦＳ１３、ＦＳ１５のメモリセルＭＴの場合、書き込み動作の過程で閾値電圧Ｖｔｈが、ベリファイハイレベルＶｒｆ１に直接到達したメモリセルＭＴについては、後続するループにおいてビット線ＢＬに接地電圧Ｖｓｓ（例えば０Ｖ）を印加する。一方で、閾値電圧ＶｔｈがベリファイローレベルＶｒｆ１ｌｏｗに到達したものの、ベリファイハイレベルＶｒｆ１に到達していないメモリセルＭＴについては、後続するループにおいて、ビット線ＢＬに、所定の正の電圧としてＱＰＷ電圧Ｖｂｌ＿ｑｐｗを印加する。
【０１２４】
すなわち、目標ステートがグループ２に属するステートの場合、制御回路２２は、閾値電圧ＶｔｈがベリファイハイレベルＶｒｆ１とベリファイローレベルＶｒｆ１ｌｏｗの間にあるときは、ビット線ＢＬにＱＰＷ電圧Ｖｂｌ＿ｑｐｗを印加して書き込みを行い、その後、ビット線ＢＬにＱＰＷ電圧Ｖｂｌ＿ｑｐｗを印加して予め決められたループ回数の書き込みを行う。一方で、閾値電圧ＶｔｈがベリファイハイレベルＶｒｆ１以上であるときは、ビット線ＢＬに接地電圧Ｖｓｓを印加して予め決められたループ回数の書き込みを行う。
【０１２５】
目標ステートがステートＦＳ２、ＦＳ４、ＦＳ６、ＦＳ８、ＦＳ１０、ＦＳ１２、ＦＳ１４のメモリセルＭＴの場合、書き込み動作の過程で閾値電圧Ｖｔｈが、ベリファイハイレベルＶｒｆ１に直接到達したメモリセルＭＴについては、後続するループにおいて、ビット線ＢＬにＱＰＷ電圧Ｖｂｌ＿ｑｐｗを印加する。一方で、閾値電圧ＶｔｈがベリファイローレベルＶｒｆ１ｌｏｗに到達したものの、ベリファイハイレベルＶｒｆ１に到達していないメモリセルＭＴについては、後続するループにおいてビット線ＢＬに接地電圧Ｖｓｓを印加する。
【０１２６】
すなわち、目標ステートがグループ３に属するステートの場合、制御回路２２は、ベリファイ動作の結果、閾値電圧ＶｔｈがベリファイハイレベルＶｒｆ１とベリファイローレベルＶｒｆ１ｌｏｗの間にあるときは、ビット線ＢＬに接地電圧Ｖｓｓを印加して予め決められたループ回数の書き込みを行う。一方で、閾値電圧ＶｔｈがベリファイハイレベルＶｒｆ１以上であるときは、ビット線ＢＬに、所定の正の電圧としてＱＰＷ電圧Ｖｂｌ＿ｑｐｗを印加して書き込みを行い、その後の追加プログラムにおいてもビット線ＢＬに所定の正の電圧としてＱＰＷ電圧Ｖｂｌ＿ｑｐｗを印加して書き込みを行う。
【０１２７】
図１７は、上述した各ステートのメモリセルＭＴにおける追加プログラム動作実行回数及びビット線電圧の設定を示す表である。制御部２２は、図１７の表データに基づいて、メモリセルアレイ２３を制御する。
【０１２８】
図１７において、ステート毎に、属するグループ番号、追加プログラム動作実行回数、後続するループにおけるビット線電圧を示している。ビット線電圧は、閾値電圧ＶｔｈがベリファイローレベルＶｒｆ１ｌｏｗに到達したものの、ベリファイハイレベルＶｒｆ１に到達していない場合と、ベリファイハイレベルＶｒｆ１に直接到達した場合に分けて示されている。
【０１２９】
なお、図１７において、グループ１と２のステートについては、閾値電圧ＶｔｈがベリファイハイレベルＶｒｆ１に到達したループ（ベリファイローレベルＶｒｆ１ｌｏｗに到達したもののベリファイハイレベルＶｒｆ１に到達していないセルについては、ベリファイハイレベルに到達すると期待される、ベリファイローレベルＶｒｆ１ｌｏｗに到達したループの次のループ）を追加プログラム動作のカウント基準点（０回目）とし、グループ３のステートについては、閾値電圧ＶｔｈがベリファイローレベルＶｒｆ１ｌｏｗに到達したもののベリファイハイレベルＶｒｆ１に到達していないセルについては、閾値電圧ＶｔｈがベリファイローレベルＶｒｆ１ｌｏｗに到達したループを、及び閾値電圧ＶｔｈがベリファイハイレベルＶｒｆ１に直接到達したループを、追加プログラム動作のカウント基準点（０回目）としている。また、表において、「０」は、ビット線ＢＬに接地電圧Ｖｓｓを印加することを示し、「＋」は、ビット線ＢＬにＱＰＷ電圧Ｖｂｌ＿ｑｐｗを印加することを示し、「Ｉ」は、ビット線ＢＬに書き込み禁止電圧Ｖｉｎｈｉｂｉｔを印加することを意味する。
【０１３０】
例えば、ステートＦＳ１は、グループ１に属し、追加プログラム動作実行回数は０である。閾値電圧ＶｔｈがベリファイローレベルＶｒｆ１ｌｏｗに到達したものの、ベリファイハイレベルＶｒｆ１に到達していない場合は、ビット線ＢＬにＱＰＷ電圧Ｖｂｌ＿ｑｐｗを印加して書き込みを行う。一方で、閾値電圧ＶｔｈがベリファイハイレベルＶｒｆ１に直接到達した場合は、ビット線ＢＬに書き込み禁止電圧Ｖｉｎｈｉｂｉｔを印加して、その後の書き込みを禁止する。
【０１３１】
例えば、ステートＦＳ２は、グループ３に属し、追加プログラム動作実行回数は１である。閾値電圧ＶｔｈがベリファイローレベルＶｒｆ１ｌｏｗに到達したものの、ベリファイハイレベルＶｒｆ１に到達していない場合は、ビット線ＢＬに接地電圧Ｖｓｓを印加して追加プログラム動作を１回実行する。一方で、閾値電圧ＶｔｈがベリファイハイレベルＶｒｆ１に直接到達した場合は、ビット線ＢＬにＱＰＷ電圧Ｖｂｌ＿ｑｐｗを印加して追加プログラム動作を１回実行する。
【０１３２】
例えば、ステートＦＳ３は、グループ２に属し、追加プログラム動作実行回数は１である。閾値電圧ＶｔｈがベリファイローレベルＶｒｆ１ｌｏｗに到達したものの、ベリファイハイレベルＶｒｆ１に到達していない場合は、ビット線ＢＬにＱＰＷ電圧Ｖｂｌ＿ｑｐｗを印加して書き込みを行う。この結果、そのメモリセルＭＴの閾値電圧Ｖｔｈは、ベリファイハイレベルＶｒｆ１に到達すると期待される。その後、ビット線ＢＬにＱＰＷ電圧Ｖｂｌ＿ｑｐｗを印加して追加プログラム動作を１回実行する。一方で、閾値電圧ＶｔｈがベリファイハイレベルＶｒｆ１に直接到達した場合は、ビット線ＢＬに接地電圧Ｖｓｓを印加して追加プログラム動作を１回実行する。
【０１３３】
例えば、ステートＦＳ４は、グループ３に属し、追加プログラム動作実行回数は２である。閾値電圧ＶｔｈがベリファイローレベルＶｒｆ１ｌｏｗに到達したものの、ベリファイハイレベルＶｒｆ１に到達していない場合は、ビット線ＢＬに接地電圧Ｖｓｓを印加して追加プログラム動作を２回実行する。一方で、閾値電圧ＶｔｈがベリファイハイレベルＶｒｆ１に直接到達した場合は、ビット線ＢＬにＱＰＷ電圧Ｖｂｌ＿ｑｐｗを印加して追加プログラム動作を２回実行する。
【０１３４】
例えば、ステートＦＳ５は、グループ２に属し、追加プログラム動作実行回数は２である。閾値電圧ＶｔｈがベリファイローレベルＶｒｆ１ｌｏｗに到達したものの、ベリファイハイレベルＶｒｆ１に到達していない場合は、ビット線ＢＬにＱＰＷ電圧Ｖｂｌ＿ｑｐｗを印加して書き込みを行う。この結果、そのメモリセルＭＴの閾値電圧Ｖｔｈは、ベリファイハイレベルＶｒｆ１に到達すると期待される。その後、ビット線ＢＬにＱＰＷ電圧Ｖｂｌ＿ｑｐｗを印加して追加プログラム動作を２回実行する。一方で、閾値電圧ＶｔｈがベリファイハイレベルＶｒｆ１に直接到達した場合は、ビット線ＢＬに接地電圧Ｖｓｓを印加して追加プログラム動作を２回実行する。
【０１３５】
以降も同様に、例えば、ステートＦＳ１０は、グループ３に属し、追加プログラム動作実行回数は５である。閾値電圧ＶｔｈがベリファイローレベルＶｒｆ１ｌｏｗに到達したものの、ベリファイハイレベルＶｒｆ１に到達していない場合は、ビット線ＢＬに接地電圧Ｖｓｓを印加して追加プログラム動作を５回実行する。一方で、閾値電圧Ｖｔｈがベリファイハイレベルに直接到達した場合は、ビット線ＢＬにＱＰＷ電圧Ｖｂｌ＿ｑｐｗを印加して追加プログラム動作を５回実行する。
【０１３６】
また、例えば、ステートＦＳ１１は、グループ２に属し、追加プログラム動作実行回数は５である。閾値電圧ＶｔｈがベリファイローレベルＶｒｆ１ｌｏｗに到達したものの、ベリファイハイレベルＶｒｆ１に到達していない場合は、ビット線ＢＬにＱＰＷ電圧Ｖｂｌ＿ｑｐｗを印加して書き込みを行う。この結果ベリファイハイレベルＶｒｆ１に到達すると期待される。その後、ビット線ＢＬにＱＰＷ電圧Ｖｂｌ＿ｑｐｗを印加して追加プログラム動作を５回実行する。一方で、閾値電圧ＶｔｈがベリファイハイレベルＶｒｆ１に直接到達した場合は、ビット線ＢＬに接地電圧Ｖｓｓを印加して追加プログラム動作を５回実行する。
【０１３７】
以上のように、選択ワード線ＷＬに関わるメモリセルＭＴに、複数のステートの中のいずれかのステートを目標ステートとして、その目標ステートに対応するデータを書き込むときに、制御部２２は、フォギー書き込みにおいては、センスアンプ回路２４により検出された各ビット線ＢＬに流れる電流により判定された各メモリセルＭＴの閾値電圧ＶｔｈがベリファイハイレベルＶｒｆ１とベリファイハイレベルよりも低いベリファイローレベルＶｒｆ１ｌｏｗとの間にあるか否かの判定を行う。そして、制御部２２は、その判定の結果に応じて、各メモリセルＭＴの目標ステート毎に予め決められたビット線電圧の印加と、各メモリセルＭＴの目標ステート毎に予め決められたループ回数で、後続する書き込み（プログラム）を行うように、複数のワード線ＷＬ及び複数のビット線ＢＬを制御する。
【０１３８】
そして、ベリファイハイレベルＶｒｆ１とベリファイローレベルＶｒｆ１ｌｏｗは、複数のステートの中で、閾値レベルが最も低いステートＥｒの次に閾値レベルが低いステートＦＳ１のためのベリファイレベルである。
【０１３９】
また、複数のステートの各ステートは、第１、第２及び第３のグループにグループ分けされ、後続する書き込み（プログラム）におけるビット線電圧の印加は、グループ毎に異なっている。
【０１４０】
ファイン書き込みは、以上のフォギー書き込みが実行された後に、実行される。
（第２書き込み動作：ファイン書き込み）
ファイン書き込みの書き込みシーケンスは、プログラム動作とベリファイ動作とを含むループを繰り返すことにより実行される。ファイン書き込みでは、データの書き込みを行う選択ワード線へ、フォギー書き込みにおけるプログラム電圧のステップアップ幅ΔＶｐｇｍよりも小さいステップアップ幅でプログラム電圧Ｖｐｇｍを印加しながら、データの書き込みが行われる選択された選択メモリセルＭＴの閾値電圧Ｖｔｈを上昇させてデータを書き込む。
【０１４１】
目標ステートがＳ１のメモリセルＭＴは、フォギー書き込みにおいてステートＦＳ１まで書き込まれたメモリセルＭＴは、ファイン書き込みにおいてＳ１まで書き込まれ、目標ステートがＳ２のメモリセルＭＴは、フォギー書き込みにおいてステートＦＳ２まで書き込まれたメモリセルＭＴは、ファイン書き込みにおいてＳ２まで書き込まれ、以下同様に、目標ステートがＳ３からＳ１５のメモリセルＭＴは、それぞれフォギー書き込みにおいて、ステートＦＳ３からＦＳ１５まで書き込まれたメモリセルＭＴは、ファイン書き込みにおいてＳ３からＳ１５まで書き込まれる。
【０１４２】
ベリファイ動作は、選択メモリセルＭＴの閾値電圧がベリファイレベルに達したか否か、即ち、選択メモリセルＭＴに所望のデータが書き込まれたか否かを検証する動作である。すなわち、ベリファイ動作は、書き込み動作の一環として、選択メモリセルＭＴの閾値電圧を検証するために実行される、読み出し動作である。
【０１４３】
選択メモリセルＭＴの閾値電圧が徐々に上昇するため、ベリファイ動作において、選択メモリセルＭＴの閾値電圧Ｖｔｈは、ベリファイレベル（基準電圧）に徐々に接近し、いずれ目標ステートのベリファイレベルに到達する。このとき、その選択メモリセルＭＴはベリファイをパスしたことになる。
【０１４４】
閾値電圧Ｖｔｈが目標ステートのベリファイをパスすると、その選択メモリセルＭＴへの書き込みは終了し、その選択メモリセルＭＴに対応するビット線は非選択状態（書き込み禁止状態）となる。例えば、センスアンプ回路２４は、ベリファイをパスした選択メモリセルＭＴに対応するビット線の電圧を書き込み禁止電圧Ｖｉｎｈｉｂｉｔ上昇させ、選択ワード線にプログラム電圧が印加されても、電圧差がその選択メモリセルＭＴに印加されないようにする。これにより、その後のループにおいて、ベリファイをパスした選択メモリセルＭＴには、データがそれ以上書き込まれない。従って、選択メモリセルＭＴの閾値電圧は、ベリファイレベル（基準電圧）以上で、かつ、その近傍に分布することになる。
【０１４５】
尚、選択状態とは、選択ワード線ＷＬにプログラム電圧Ｖｐｇｍが印加されたときに、電圧が選択メモリセルＭＴのチャネルとワード線ＷＬとの間に印加されるようにビット線ＢＬの電圧を低下させた状態である。非選択状態とは、選択ワード線ＷＬにプログラム電圧Ｖｐｇｍが印加されても、その選択メモリセルＭＴのチャネルとワード線ＷＬとの間の電圧が減圧されるようにビット線ＢＬの電圧を固定した状態である。
【０１４６】
書き込みシーケンスの制御は、制御部２２、センスアンプ回路２４およびワード線ドライバ２５により行われる。また、書き込みシーケンスは、ワード線ＷＬ０、ＷＬ１、・・・ＷＬ７、ＷＬ８の順に行う。
【０１４７】
その結果、選択メモリセルＭＴの閾値電圧Ｖｔｈは、図５の下段に示すような閾値電圧分布内に含まれる。
【０１４８】
以上のように、上述した実施形態によれば、データの書き込みの精度が良く、かつデータの書き込み時間を短縮したデータの書き込みができる半導体記憶装置を実現することができる。
【０１４９】
特に、プログラム電圧Ｖｐｇｍのステップアップ幅ΔＶｐｇｍを、１ループあたりの閾値電圧Ｖｔｈの上昇量（ΔＶｔｈ）が隣り合う２つのステート間の閾値電圧差ＶＲの２倍程度になるように（すなわちΔＶｔｈ＝２ＶＲとなるように）、設定する。これにより、フォギー書き込みにおける１ワード線当たりの書き込み時間を半分とすることができる。
【０１５０】
なお、以上の説明では、プログラム電圧Ｖｐｇｍのステップアップ幅ΔＶｐｇｍを、ΔＶｔｈ＝２ＶＲとなるように設定する例を示したがが、ステップアップ幅ΔＶｐｇｍは、ΔＶｔｈ≒２ＶＲとなるように設定してもよい。すなわち、プログラム電圧Ｖｐｇｍのステップアップ幅ΔＶｐｇｍは、閾値電圧Ｖｔｈの上昇量（ΔＶｔｈ）が隣り合う２つのステート間の閾値電圧差ＶＲの２倍（すなわち２ＶＲ）に厳密に対応するように設定されていなくてもよく、それらが十分な相関関係を有していればそれでよい。
【０１５１】
さらになお、上述した例では、ベリファイハイレベルとベリファイローレベルの差は、隣り合うステート間の閾値電圧差ＶＲに対応する値としているが、閾値電圧差ＶＲに対応する値と略同じでもよい。
【０１５２】
また、上述した例では、目標ステートがグループ１および２のステートで、かつベリファイローレベルＶｒｆ１ｌｏｗに到達したもののベリファイハイレベルＶｒｆ１に到達していないセルについては、１回のプログラム電圧ＶｐｇｍおよびＱＰＷ電圧Ｖｂｌ＿ｑｐｗの印加によりベリファイハイレベルに到達すると期待される、ベリファイローレベルＶｒｆ１ｌｏｗに到達したループの次のループを追加プログラム動作のカウント基準点（０回目）としたが、実際にベリファイ動作によってベリファイハイレベルＶｒｆ１に到達したことが確認されたループを基準点としてもよい。この場合、ベリファイローレベルＶｒｆ１ｌｏｗに到達したループの次のループが基準点になるとは限らない。また、グループ３のステートが目標ステートであるセルについても、ベリファイハイレベルに到達したことが実際に確認されたループを基準点としてその後の追加書込みループ数をカウントしてもよい。
【０１５３】
次に、上述した実施形態の変形例を説明する。
（変形例１）
上述した実施形態では、目標ステートがステートＦＳ１からＦＳ１５の各メモリセルＭＴにおいて、フォギー書き込み（第１書き込み動作）のとき、ステートＦＳ１のための２つのベリファイレベルを用いたベリファイ動作が実行されているが、他のステート（例えばステートＦＳ８）のための別の２つのベリファイレベルも含む４つのベリファイレベルを用いたベリファイ動作を実行するようにしてもよい。
【０１５４】
その場合、例えば、目標ステートがステートＦＳ１とＦＳ８の各メモリセルＭＴは、グループ１に属し、グループ１の２つのステートについては、２つのベリファイ電圧を用いたベリファイ動作が行われる。具体的には、電圧Ｖｒｆとそれより低いＶｒｆｌｏｗとの比較によるベリファイ動作が行われる。
【０１５５】
すなわち、制御部２２では、目標ステートがステートＦＳ１である各メモリセルＭＴに対しては、閾値電圧ＶｔｈがベリファイハイレベルＶｒｆ１とベリファイハイレベルよりも低いベリファイローレベルＶｒｆ１ｌｏｗとの間にあるか否かの判定と、目標ステートがステートＦＳ８である各メモリセルＭＴに対しては、閾値レベルＶｔｈがステートＦＳ１よりも高いステートＦＳ８のためのベリファイハイレベルＶｒｆ８とベリファイハイレベルＶｒｆ８よりも低いベリファイレベルＶｒｆ８ｌｏｗとの間にあるか否かの判定とが行われる。
【０１５６】
目標ステートがステートＦＳ３、ＦＳ５、ＦＳ７、ＦＳ１０、ＦＳ１２、ＦＳ１４の各メモリセルＭＴは、グループ２に属し、ステートＦＳ２、ＦＳ４、ＦＳ６、ＦＳ９、ＦＳ１１、ＦＳ１３、ＦＳ１５の各メモリセルＭＴは、グループ３に属し、グループ２と３の各ステートについては、ステートＦＳ１とＦＳ８のフォギーのベリファイレベルに到達したか否かの判定をするときのみ、ステートＦＳ１とＦＳ８のための２つのベリファイレベルを用いたベリファイ動作が行われる。
【０１５７】
各グループのメモリセルＭＴに対する書き込み動作は、上述した実施形態と同様であるが、ループ回数、ビット線ＢＬ電圧の設定は、上述した実施形態とは異なる。
【０１５８】
また、目標ステートがステートＦＳ８のメモリセルＭＴについては、ステートＦＳ１〜ＦＳ７のフォギー書き込みに続いて、ステートＦＳ１と同様に、選択メモリセルＭＴの閾値電圧レベルが、ベリファイハイレベルＶｒｆ８に到達したか、あるいはベリファイハイレベルＶｒｆ８とベリファイローレベルＶｒｆ８ｌｏｗの間にあるかが判定される。
【０１５９】
ステートＦＳ９〜ＦＳ１５についても、上述したＦＳ２〜ＦＳ７と同様に、その後の追加プログラム動作は、ビット線ＢＬに接地電圧Ｖｓｓ（例えば０Ｖ）あるいはＱＰＷ電圧Ｖｂｌ＿ｑｐｗを印加した状態で、プログラム電圧Ｖｐｇｍのステップアップ幅ΔＶｐｇｍを、ΔＶｔｈ＝２ＶＲとなるように設定して実行されるので、フォギー書き込みを短時間で行われる。
【０１６０】
図１８は、ベリファイ動作を所定の２ステートについて実行する場合の書き込みステートのグループ分けと、各グループの追加プログラム動作におけるビット線電圧の設定の例を示す表である。
【０１６１】
図１８に示すように、目標ステートがステートＦＳ１とＦＳ８のメモリセルＭＴの場合、閾値電圧Ｖｔｈが、ベリファイハイレベルＶｒｆ１、Ｖｒｆ８に直接到達したメモリセルＭＴについては、その後の書き込みは禁止される。一方で、閾値電圧ＶｔｈがベリファイローレベルＶｒｆ１ｌｏｗ、Ｖｒｆ８ｌｏｗに到達したものの、ベリファイハイレベルＶｒｆ１、Ｖｒｆ８に到達していないメモリセルＭＴについては、後続するループにおいて、ビット線ＢＬにＱＰＷ電圧Ｖｂｌ＿ｑｐｗを印加する。
【０１６２】
目標ステートがステートＦＳ３、ＦＳ５、ＦＳ７、ＦＳ１０、ＦＳ１２、ＦＳ１４のメモリセルＭＴの場合、閾値電圧Ｖｔｈが、ステートＦＳ１、ＦＳ８におけるベリファイハイレベルＶｒｆ１、Ｖｒｆ８に直接到達したメモリセルＭＴについては、後続するループにおいてビット線ＢＬに接地電圧Ｖｓｓ（例えば０Ｖ）が印加され、ステート毎に設定されたループ回数だけ追加プログラム動作行われる。
【０１６３】
閾値電圧Ｖｔｈが、ステートＦＳ１、ＦＳ８におけるベリファイローレベルＶｒｆ１ｌｏｗ、Ｖｒｆ８ｌｏｗに到達したものの、ベリファイハイレベルＶｒｆ１、Ｖｒｆ８に到達していないメモリセルＭＴについては、後続するループにおいて、ビット線ＢＬにＱＰＷ電圧Ｖｂｌ＿ｑｐｗを印加する。
【０１６４】
すなわち、目標ステートがステートＦＳ３、ＦＳ５、ＦＳ７のメモリセルＭＴについては、ステートＦＳ１についてのベリファイ動作の結果（閾値電圧ＶｔｈがステートＦＳ１のベリファイローレベルＶｒｆ１ｌｏｗまたはベリファイハイレベルＶｒｆ１に到達したか否か）に応じて、ビット線電圧及びループ回数が設定される。
【０１６５】
目標ステートがステートＦＳ１０、ＦＳ１５、ＦＳ１７のメモリセルＭＴについては、ステートＦＳ８についてのベリファイ動作の結果（閾値電圧ＶｔｈがステートＦＳ８のベリファイローレベルＶｒｆ８ｌｏｗまたはベリファイハイレベルＶｒｆ８に到達したか否か）に応じて、ビット線電圧及びループ回数が設定される。
【０１６６】
目標ステートがステートＦＳ２、ＦＳ４、ＦＳ６、ＦＳ９、ＦＳ１１、ＦＳ１３、ＦＳ１５のメモリセルＭＴの場合、閾値電圧ＶｔｈがベリファイローレベルＶｒｆ１ｌｏｗ、Ｖｒｆ８ｌｏｗに到達したものの、ベリファイハイレベルＶｒｆ１、Ｖｒｆ８に到達していないメモリセルＭＴについては、後続のループにおいてビット線ＢＬに接地電圧Ｖｓｓ（０Ｖ）を印加する。一方で、閾値電圧Ｖｔｈが、ベリファイハイレベルＶｒｆ１、Ｖｒｆ８に直接到達したメモリセルＭＴについては、後続のループにおいて、ビット線ＢＬにＱＰＷ電圧Ｖｂｌ＿ｑｐｗを印加する。
【０１６７】
図１９は、上述した各ステートのメモリセルＭＴにおける追加プログラム動作実行回数及びビット線電圧の設定を示す表である。制御部２２は、図１９の表データに基づいて、メモリセルアレイ２３を制御する。
【０１６８】
図１９は、図１７と同様に、ステート毎に、属するグループ番号、追加プログラム動作実行回数、後続するループにおけるビット線電圧を示している。ビット線電圧は、閾値電圧ＶｔｈがベリファイローレベルＶｒｆ１ｌｏｗ、Ｖｒｆ８ｌｏｗに到達したものの、ベリファイハイレベルＶｒｆ１、Ｖｒｆ８に到達していない場合と、ベリファイハイレベルＶｒｆ１、Ｖｒｆ８に直接到達した場合に分けて示されている。
【０１６９】
なお、図１９において、グループ１と２のステートについては、閾値電圧ＶｔｈがベリファイハイレベルＶｒｆ１、Ｖｒｆ８に到達したループ（ベリファイローレベルＶｒｆ１ｌｏｗ、Ｖｒｆ８ｌｏｗに到達したもののベリファイハイレベルＶｒｆ１、Ｖｒｆ８に到達していないセルについては、ベリファイハイレベルに到達すると期待される、ベリファイローレベルＶｒｆ１ｌｏｗ、Ｖｒｆ８ｌｏｗに到達したループの次のループ）を追加プログラム動作のカウント基準点（０回目）とし、グループ３のステートについては、閾値電圧ＶｔｈがベリファイローレベルＶｒｆ１ｌｏｗ，Ｖｒｆ８ｌｏｗに到達したもののベリファイハイレベルＶｒｆ１、Ｖｒｆ８に到達していないセルについては、閾値電圧ＶｔｈがベリファイローレベルＶｒｆ１ｌｏｗ，Ｖｒｆ８ｌｏｗに到達したループを、及び閾値電圧ＶｔｈがベリファイハイレベルＶｒｆ１，Ｖｒｆ８に直接到達したループを、追加プログラム動作のカウント基準点（０回目）０としている。また、表において、「０」は、ビット線ＢＬに接地電圧Ｖｓｓを印加することを示し、「＋」は、ビット線ＢＬにＱＰＷ電圧Ｖｂｌ＿ｑｐｗを印加することを示し、「Ｉ」は、ビット線ＢＬに書き込み禁止電圧Ｖｉｎｈｉｂｉｔを印加することを意味する。
【０１７０】
例えば、ステートＦＳ８は、グループ１に属し、追加プログラム動作実行回数は０である。閾値電圧がベリファイローレベルＶｒｆ８ｌｏｗに到達したものの、ベリファイハイレベルＶｒｆ８に到達していない場合は、ビット線ＢＬにはＱＰＷ電圧Ｖｂｌ＿ｑｐｗを印加して書き込みを行う。この結果ベリファイハイレベルＶｒｆ８に到達すると期待される。その後はビット線ＢＬに書込み禁止（Ｉｎｈｉｂｉｔ）電圧を印加して、その後の書き込みを禁止する。一方で、閾値電圧がベリファイハイレベルに直接到達した場合は、ビット線ＢＬに書き込み禁止（Ｉｎｈｉｂｉｔ）電圧を印加して、その後の書き込みを禁止する。
【０１７１】
同様に、例えば、ステートＦＳ１１は、グループ３に属し、追加プログラム動作実行回数は２である。閾値電圧がベリファイローレベルＶｒｆ８ｌｏｗに到達したものの、ベリファイハイレベルＶｒｆ８に到達していない場合は、ビット線ＢＬに接地電圧Ｖｓｓを印加して追加プログラム動作を２回実行する。一方で、閾値電圧Ｖｔｈがベリファイハイレベルに直接到達した場合は、ビット線ＢＬにＱＰＷ電圧Ｖｂｌ＿ｑｐｗを印加して追加プログラム動作を２回実行する。
【０１７２】
以上のように、フォギー書き込み（第１書き込み動作）が実行された後、ファイン書き込み（第２書き込み動作）が実行される。  
図２０は、本変形例１の２段階書き込み方式を用いずに、１ループあたりの閾値電圧Ｖｔｈの上昇量（ΔＶｔｈ）が隣り合う２つのステート間の閾値電圧差ＶＲの２倍ではなく１倍程度になるように（すなわちΔＶｔｈ＝ＶＲとなるように）設定し、かつ書込み中にビット線に印加する電圧を目標ステート毎に分けずに全ステートで共通にして書き込み動作を行ったときの、時間経過に伴うプログラム電圧Ｖｐｇｍのパルス波形の変化を示すグラフである。図２１は、本変形例１の２段階書き込み方式を用いて書き込み動作を行ったときの、時間経過に伴うプログラム電圧Ｖｐｇｍのパルス波形の変化を示すグラフである。
【０１７３】
なお、上述したように、実際には、フォギー書き込みとファイン書き込みは、隣接ワード線干渉を低減するために、隣接するワード線において交互に実行されるが、ここでは、便宜上、隣接ワード線への書込み時のパルス波形は除き、ある着目するワード線への書込み時のパルス波形のシミュレーション結果のみ記載している。
【０１７４】
図２０と図２１は、シミュレーションによって計算して得られたプログラム電圧Ｖｐｇｍのパルス波形の変化を示す。
【０１７５】
図２１に示すように、本変形例におけるプログラム電圧Ｖｐｇｍのステップアップ幅ΔＶｐｇｍは、ΔＶｔｈ＝２ＶＲとなるように設定されるため、図２１のフォギーの書き込み時間は、図２０のフォギーの書き込み時間に比べて大幅に短い。
【０１７６】
図２２は、シミュレーションの結果得られた閾値電圧の分布を示すグラフである。図２２の縦軸は、セル数の対数値を示し、横軸は、閾値電圧を示す。図２２において、実線は、本実施形態の２段階書き込みを用いずに、図２０の書き込み電圧波形で書き込み動作を行ったときの、ファイン書き込み後の閾値電圧の分布を示すグラフである。図２２において、点線は、本実施形態の２段階書き込みを用い、図２１の書き込み電圧波形で書き込み動作を行ったときの、ファイン書き込み後の閾値電圧の分布を示すグラフである。
【０１７７】
図２２に示すように、閾値電圧の分布の悪化は、見られない。  
以上のように、上述した変形例１によっても、データの書き込み速度を速めることができる。
【０１７８】
なお、上述した変形例１では、目標ステートがグループ１および２のステートで、かつベリファイローレベルＶｒｆ１ｌｏｗまたはＶｒｆ８ｌｏｗに到達したもののベリファイハイレベルＶｒｆ１またはＶｒｆ８に到達していないセルについては、１回のプログラム電圧ＶｐｇｍおよびＱＰＷ電圧Ｖｂｌ＿ｑｐｗの印加によりベリファイハイレベルに到達すると期待される、ベリファイローレベルＶｒｆ１ｌｏｗまたはＶｒｆ８ｌｏｗに到達したループの次のループを追加プログラム動作のカウント基準点（０回目）としたが、実際にベリファイ動作によってベリファイハイレベルＶｒｆ１またはＶｒｆ８に到達したことが確認されたループを基準点としてもよい。この場合、ベリファイローレベルＶｒｆ１ｌｏｗまたはＶｒｆ８ｌｏｗに到達したループの次のループが基準点になるとは限らない。また、グループ３のステートが目標ステートであるセルについても、ベリファイハイレベルに到達したことが実際に確認されたループを基準点としてその後の追加書込みループ数をカウントしてもよい。
（変形例２）
上述した変形例１では、目標ステートがステートＦＳ１からＦＳ１５の各メモリセルＭＴにおいて、フォギー書き込み（第１書き込み動作）のとき、ステートＦＳ１とＦＳ８のための４つのベリファイレベルを用いたベリファイ動作が実行されているが、複数の他のステート（例えばステートＦＳ４，ＦＳ１２）のための別の４つのベリファイレベルを含む８つのベリファイレベルを用いたベリファイ動作を実行するようにしてもよい。
【０１７９】
その場合、ステートＦＳ１、ＦＳ４、ＦＳ８及びＦＳ１２の各メモリセルＭＴをグループ１に属するとし、グループ１の４つのステートの各々については、２つのベリファイ電圧を用いたベリファイ動作が行われる。具体的には、電圧Ｖｒｆとそれよりも低いＶｒｆｌｏｗとの比較によるベリファイ動作が行われる。
【０１８０】
目標ステートがステートＦＳ１、ＦＳ４、ＦＳ８及びＦＳ１２のメモリセルＭＴの場合、それぞれ閾値電圧ＶｔｈがベリファイローレベルＶｒｆ１ｌｏｗ、Ｖｒｆ４ｌｏｗ、Ｖｒｆ８ｌｏｗ、Ｖｒｆ１２ｌｏｗに到達したものの、ベリファイハイレベルＶｒｆ１、Ｖｒｆ４、Ｖｒｆ８、Ｖｒｆ１２に到達していないメモリセルＭＴについては、ビット線ＢＬにＱＰＷ電圧Ｖｂｌ＿ｑｐｗを印加する。
【０１８１】
なお、ＱＰＷ電圧Ｖｂｌ＿ｑｐｗの印加は、後続するループにおいて、目標ステートがステートＦＳ１、ＦＳ４、ＦＳ８及びＦＳ１２の選択メモリセルＭＴの閾値電圧が、それぞれベリファイハイレベルＶｒｆ１、Ｖｒｆ４、Ｖｒｆ８、Ｖｒｆ１２に到達したことがベリファイ動作で確認されるまで行われる。
【０１８２】
なお、目標ステートがグループ１および２のステートで、かつベリファイローレベルＶｒｆ１ｌｏｗ、Ｖｒｆ４ｌｏｗ、Ｖｒｆ８ｌｏｗ、またはＶｒｆ１２ｌｏｗに到達したもののベリファイハイレベルＶｒｆ１、Ｖｒｆ４、Ｖｒｆ８、またはＶｒｆ１２に到達していないセルについては、ベリファイハイレベルに到達すると期待される場合は、選択メモリセルＭＴの閾値電圧が、それぞれベリファイハイレベルＶｒｆ１、Ｖｒｆ４、Ｖｒｆ８、Ｖｒｆ１２に到達したことを確認しなくてもよい。
【０１８３】
目標ステートがステートＦＳ１、ＦＳ４、ＦＳ８及びＦＳ１２のメモリセルＭＴについては、それぞれベリファイ動作において、閾値電圧がベリファイハイレベルＶｒｆ１、Ｖｒｆ４、Ｖｒｆ８、Ｖｒｆ１２に直接到達したメモリセルＭＴについては、以降のループでは、書き込み禁止（ｉｎｈｉｂｉｔ）の状態となる。
【０１８４】
目標ステートがステートＦＳ３、ＦＳ６、ＦＳ１０、ＦＳ１４の各メモリセルＭＴは、グループ２に属し、目標ステートがステートＦＳ２、ＦＳ４、ＦＳ６、ＦＳ９、ＦＳ１１、ＦＳ１３、ＦＳ１５の各メモリセルＭＴは、グループ３に属し、グループ２と３の各ステートについては、ステートＦＳ１、ＦＳ４，ＦＳ８及びＦＳ１２のフォギーのベリファイレベルに到達したか否かの判定をするときのみ、ステートＦＳ１、ＦＳ４、ＦＳ８及びＦＳ１２のための４つのベリファイレベルを用いたベリファイ動作が行われる。
【０１８５】
目標ステートがステートＦＳ３、ＦＳ６、ＦＳ１０及びＦＳ１４のメモリセルＭＴの場合、それぞれ閾値電圧ＶｔｈがベリファイローレベルＶｒｆ１ｌｏｗ、Ｖｒｆ４ｌｏｗ、Ｖｒｆ８ｌｏｗ及びＶｒｆ１２ｌｏｗに到達したものの、ベリファイハイレベルＶｒｆ１、Ｖｆｒ４、Ｖｒｆ８及びＶｒｆ１２に到達していないメモリセルＭＴについては、後続するループにおいて、ＱＰＷ電圧Ｖｂｌ＿ｑｐｗを印加した状態で、選択メモリセルＭＴの閾値電圧Ｖｔｈが、ベリファイハイレベルＶｒｆ１、Ｖｒｆ４、Ｖｒｆ８及びＶｒｆ１２に到達するまで行われる。
【０１８６】
閾値電圧ＶｔｈがベリファイハイレベルＶｒｆ１、Ｖｒｆ４、Ｖｒｆ８及びＶｒｆ１２に到達した後は、ステート毎に設定されたループ回数の追加プログラム動作が行われる。追加プログラム動作のプログラム電圧Ｖｐｇｍのステップアップ幅ΔＶｐｇｍは、ΔＶｔｈ＝２ＶＲとなるように、設定される。
【０１８７】
また、選択メモリセルＭＴの閾値電圧Ｖｔｈが、ベリファイローレベルＶｒｆ１ｌｏｗ、Ｖｒｆ４ｌｏｗ、Ｖｒｆ８ｌｏｗ及びＶｒｆ１２ｌｏｗの状態を経ずに、ベリファイハイレベルＶｒｆ１、Ｖｒｆ４、Ｖｒｆ８及びＶｒｆ１２に直接到達したメモリセルＭＴについては、ビット線ＢＬには、接地電圧Ｖｓｓ（例えば０Ｖ）を印加した状態で、ステート毎に設定されたループ回数の追加プログラム動作が行われる。
【０１８８】
目標ステートがステートＦＳ３のメモリセルＭＴの場合には、ステートＦＳ１についてのベリファイ動作の結果（閾値電圧がステートＦＳ１のベリファイローレベルＶｒｆ１ｌｏｗまたはベリファイハイレベルＶｒｆ１に到達したか否か）に応じて、ビット線電圧及びループ回数が設定される。
【０１８９】
目標ステートがステートＦＳ６のメモリセルＭＴの場合には、ステートＦＳ４についてベリファイ動作の結果（の閾値電圧ＶｔｈがステートＦＳ４のベリファイローレベルＶｒｆ４ｌｏｗまたはベリファイハイレベルＶｒｆ４に到達したか否か）に応じて、ビット線電圧及びループ回数が設定される。
【０１９０】
目標ステートがステートＦＳ１０のメモリセルＭＴの場合には、ステートＦＳ８についてのベリファイ動作の結果（閾値電圧ＶｔｈがベリファイローレベルＶｒｆ８ｌｏｗまたはベリファイハイレベルＶｒｆ８に到達したか否か）に応じて、ビット線電圧及びループ回数が設定される。
【０１９１】
目標ステートがステートＦＳ１４のメモリセルＭＴの場合には、ステートＦＳ１２についてのベリファイ動作の結果（閾値電圧ＶｔｈがベリファイローレベルＶｒｆ１２ｌｏｗまたはベリファイハイレベルＶｒｆ１２に到達したか否か）に応じて、ビット線電圧及びループ回数が設定される。
【０１９２】
ここでは、目標ステートがＦＳ３、ＦＳ６、ＦＳ１０、ＦＳ１４の各セルに対しては、それぞれＦＳ１、ＦＳ４、ＦＳ８、ＦＳ１２のＶｒｆ１、Ｖｒｆ４、Ｖｒｆ８及びＶｒｆ１２に到達した後１ループだけ追加プログラム動作が行われる。
【０１９３】
グループ３のステートＦＳ２、ＦＳ５、ＦＳ７、ＦＳ９、ＦＳ１１、ＦＳ１３、ＦＳ１５のメモリセルＭＴの場合、それぞれ閾値電圧ＶｔｈがベリファイローレベルＶｒｆ１ｌｏｗ、Ｖｒｆ４ｌｏｗ、Ｖｒｆ８ｌｏｗ及びＶｒｆ１２ｌｏｗに到達したものの、ベリファイハイレベルＶｒｆ１、Ｖｒｆ４、Ｖｒｆ８及びＶｒｆ１２に到達していないメモリセルＭＴについては、直ちに次のループにおいて追加プログラム動作を行う。
【０１９４】
後続する書き込みでは、ビット線ＢＬに接地電圧Ｖｓｓ（例えば０Ｖ）を印加した状態で、ステート毎に定められたループ回数だけ追加プログラム動作が行われる。
【０１９５】
また、選択メモリセルＭＴの閾値電圧Ｖｔｈが、ベリファイローレベルＶｒｆ１ｌｏｗ、Ｖｒｆ４ｌｏｗ、Ｖｒｆ８ｌｏｗ及びＶｒｆ１２ｌｏｗの状態を経ずに、ベリファイハイレベルＶｒｆ１、Ｖｒｆ４、Ｖｒｆ８及びＶｒｆ１２に直接到達したメモリセルＭＴについては、ビット線ＢＬにＱＰＷ電圧Ｖｂｌ＿ｑｐｗを印加した状態で、ステート毎に設定されたループ回数の追加プログラム動作が行われる。
【０１９６】
すなわち、目標ステートがステートＦＳ２のメモリセルＭＴの場合には、ステートＦＳ１についてのベリファイ動作の結果（閾値電圧ＶｔｈがベリファイローレベルＶｒｆ１ｌｏｗまたはベリファイハイレベルＶｒｆ１に到達したか否か）に応じて、ビット線電圧及びループ回数が設定される。目標ステートがステートＦＳ５とＦＳ７のメモリセルＭＴの場合には、それぞれステートＦＳ４についてのベリファイ動作の結果（閾値電圧ＶｔｈがベリファイローレベルＶｒｆ４ｌｏｗまたはベリファイハイレベルＶｒｆ４に到達したか否か）に応じて、ビット線電圧及びループ回数が設定される。
【０１９７】
目標ステートがステートＦＳ９及びＦＳ１１のメモリセルＭＴの場合には、ステートＦＳ８についてのベリファイ動作の結果（閾値電圧ＶｔｈがベリファイローレベルＶｒｆ８ｌｏｗまたはベリファイハイレベルＶｒｆ８に到達したか否か）に応じて、ビット線電圧及びループ回数が設定される。目標ステートがステートＦＳ１３及びＦＳ１５のメモリセルＭＴの場合には、ステートＦＳ１２についてのベリファイ動作の結果（閾値電圧ＶｔｈがベリファイローレベルＶｒｆ１２ｌｏｗまたはベリファイハイレベルＶｒｆ１２に到達したか否か）に応じて、ビット線電圧及びループ回数が設定される。
【０１９８】
目標ステートがＦＳ２、ＦＳ５、ＦＳ９、ＦＳ１３の各セルに対しては、それぞれＦＳ１、ＦＳ４、ＦＳ８、ＦＳ１２のＶｒｆ４、Ｖｒｆ８及びＶｒｆ１２に到達した後１ループだけ追加プログラム動作が行われる。目標ステートがＦＳ７、ＦＳ１１、ＦＳ１５の各セルに対しては、それぞれＦＳ４，ＦＳ８、ＦＳ１２のＶｒｆ４、Ｖｒｆ８及びＶｒｆ１２に到達した後２ループだけ追加プログラム動作が行われる。
【０１９９】
図２３は、ベリファイ動作を所定の４ステートについて実行する場合の書き込みステートのグループ分けと、各グループの追加プログラム動作におけるビット線電圧の設定の例を示す表である。
【０２００】
図２３に示すように、目標ステートがステートＦＳ１、ＦＳ４、ＦＳ８、ＦＳ１２のメモリセルＭＴの場合、閾値電圧Ｖｔｈが、ベリファイハイレベルＶｒｆ１、Ｖｒｆ４、Ｖｒｆ８、Ｖｒｆ１２に直接到達したメモリセルＭＴについては、その後の書き込みは禁止される。一方で、閾値電圧ＶｔｈがベリファイローレベルＶｒｆ１ｌｏｗ、Ｖｒｆ４ｌｏｗ、Ｖｒｆ８ｌｏｗ、Ｖｒｆ１２ｌｏｗに到達したものの、ベリファイハイレベルＶｒｆ１、Ｖｒｆ４、Ｖｒｆ８、Ｖｒｆ１２に到達していないメモリセルＭＴについては、後続するループにおいて、ビット線ＢＬにＱＰＷ電圧Ｖｂｌ＿ｑｐｗを印加する。
【０２０１】
目標ステートがステートＦＳ３、ＦＳ６、ＦＳ１０、ＦＳ１４のメモリセルＭＴの場合、閾値電圧Ｖｔｈが、ベリファイハイレベルＶｒｆ１、Ｖｒｆ４、Ｖｒｆ８、Ｖｒｆ１２に直接到達したメモリセルＭＴについては、後続するループにおいてビット線ＢＬに接地電圧Ｖｓｓ（例えば０Ｖ）を印加する。一方で、閾値電圧レベルがベリファイローレベルＶｒｆ１ｌｏｗ、Ｖｒｆ４ｌｏｗ、Ｖｒｆ８ｌｏｗ、Ｖｒｆ１２ｌｏｗに到達したものの、ベリファイハイレベルＶｒｆ１、Ｖｒｆ４、Ｖｒｆ８、Ｖｒｆ１２に到達していないメモリセルＭＴについては、後続するループにおいて、ビット線ＢＬにＱＰＷ電圧Ｖｂｌ＿ｑｐｗを印加する。
【０２０２】
目標ステートがステートＦＳ２、ＦＳ５、ＦＳ７、ＦＳ９、ＦＳ１１、ＦＳ１３、ＦＳ１５のメモリセルＭＴの場合、閾値電圧が、ベリファイハイレベルＶｒｆ１、Ｖｒｆ４、Ｖｒｆ８、Ｖｒｆ１２に直接到達したメモリセルＭＴについては、後続するループにおいて、ビット線ＢＬにＱＰＷ電圧Ｖｂｌ＿ｑｐｗを印加する。一方で、閾値電圧レベルがベリファイローレベルＶｒｆ１ｌｏｗ、Ｖｒｆ４ｌｏｗ、Ｖｒｆ８ｌｏｗ、Ｖｒｆ１２ｌｏｗに到達したものの、ベリファイハイレベルＶｒｆ１、Ｖｒｆ４，Ｖｒｆ８、Ｖｒｆ１２に到達していないメモリセルＭＴについては、後続するループにおいてビット線ＢＬに接地電圧Ｖｓｓ（例えば０Ｖ）を印加する。
【０２０３】
図２４は、上述した各ステートのメモリセルにおける追加プログラム動作実行回数及びビット線電圧の設定を示す表である。
【０２０４】
図２４において、上述した図１７と同様に、ステート毎に、属するグループ番号、追加プログラム動作実行回数、後続するループにおけるビット線電圧を示している。ビット線電圧は、閾値電圧ＶｔｈがベリファイローレベルＶｒｆ１ｌｏｗ、Ｖｒｆ４ｌｏｗ、Ｖｒｆ８ｌｏｗ、Ｖｒｆ１２ｌｏｗに到達したものの、ベリファイハイレベルＶｒ１ｆ、Ｖｒｆ４、Ｖｒｆ８、Ｖｒｆ１２に到達していない場合と、ベリファイハイレベルＶｒｆ１、Ｖｒｆ４、Ｖｒｆ８、Ｖｒｆ１２に直接到達した場合に分けて示されている。
【０２０５】
なお、図２４において、グループ１と２のステートについては、閾値電圧ＶｔｈがベリファイハイレベルＶｒｆ１、Ｖｒｆ４、Ｖｒｆ８、Ｖｒｆ１２に到達したループを追加プログラム動作のカウント基準点（０回目）とし、グループ３のステートについては、閾値電圧ＶｔｈがベリファイローレベルＶｒｆ１ｌｏｗ、Ｖｒｆ４ｌｏｗ、Ｖｒｆ８ｌｏｗ、Ｖｒｆ１２ｌｏｗに到達したもののベリファイハイレベルＶｒｆ１、Ｖｒｆ４、Ｖｒｆ８、Ｖｒｆ１２に到達していないセルについては、閾値電圧ＶｔｈがベリファイローレベルＶｒｆ１ｌｏｗ，Ｖｒｆ４ｌｏｗ、Ｖｒｆ８ｌｏｗ、Ｖｒｆ１２ｌｏｗに到達したループを、及び閾値電圧ＶｔｈがベリファイハイレベルＶｒｆ１、Ｖｒｆ４、Ｖｒｆ８、Ｖｒｆ１２に直接到達したループを追加プログラム動作のカウント基準点（０回目）としている。また、表において、「０」は、ビット線ＢＬに接地電圧Ｖｓｓを印加することを示し、「＋」は、ビット線ＢＬにＱＰＷ電圧Ｖｂｌ＿ｑｐｗを印加することを示し、「Ｉ」は、ビット線ＢＬに書き込み禁止電圧Ｖｉｎｈｉｂｉｔを印加することを意味する。
【０２０６】
例えば、ステートＦＳ４は、グループ１に属し、追加プログラム動作実行回数は０である。閾値電圧ＶｔｈがベリファイローレベルＶｒｆ４ｌｏｗに到達したものの、ベリファイハイレベルＶｒｆ４に到達していない場合は、ビット線ＢＬにＱＰＷ電圧Ｖｂｌ＿ｑｐｗを印加した状態で、ベリファイハイレベルＶｒｆ４に到達するまで書き込みを行う。その後はビット線ＢＬに書込み禁止（Ｉｎｈｉｂｉｔ）電圧を印加して、その後の書き込みを禁止する。一方で、閾値電圧ＶｔｈがベリファイハイレベルＶｒｆ４に直接到達した場合は、ビット線ＢＬに書き込み禁止電圧Ｖｉｎｈｉｂｉｔを印加して、その後の書き込みを禁止する。
【０２０７】
同様に、例えば、ステートＦＳ７は、グループ３に属し、追加プログラム動作実行回数は２である。閾値電圧ＶｔｈがベリファイローレベルＶｒｆ４ｌｏｗに到達したものの、ベリファイハイレベルＶｒｆ４に到達していない場合は、ビット線ＢＬに接地電圧Ｖｓｓを印加して追加プログラム動作を２回実行する。一方で、閾値電圧ＶｔｈがベリファイハイレベルＶｒｆ４に直接到達した場合は、ビット線ＢＬにＱＰＷ電圧Ｖｂｌ＿ｑｐｗを印加して追加プログラム動作を２回実行する。
【０２０８】
そして、ベリファイ動作を所定の４ステートについて実行する場合においても、実施形態と同様に、フォギー書き込み（第１書き込み動作）とその後に実行されるファイン書き込み（第２書き込み動作）とのうち、フォギー書き込みにおいて、データの書き込み速度を速めることができる。
【０２０９】
ベリファイ動作を所定の４ステートについて実行する場合においても、シミュレーションによれば、閾値電圧の分布の悪化は、見られなかった。
（変形例３）
上述した実施形態（目標ステートがステートＦＳ１からＦＳ１５の各メモリセルＭＴにおいて、フォギー書き込みのとき、ステートＦＳ１のための２つのベリファイレベルを用いたベリファイ動作を実行する場合）、変形例１（目標ステートがステートＦＳ１からＦＳ１５の各メモリセルＭＴにおいて、フォギー書き込みのとき、ステートＦＳ１とＦＳ８のための４つのベリファイレベルを用いたベリファイ動作を実行する場合）及び変形例２（目標ステートがステートＦＳ１からＦＳ１５の各メモリセルＭＴにおいて、フォギー書き込みのとき、ステートＦＳ１、ＦＳ４、ＦＳ８、ＦＳ１２のための８つのベリファイレベルを用いたベリファイ動作を実行する場合）では、グループ１と２に属するメモリセルＭＴについては、ベリファイハイレベルに到達したときから追加プログラム動作の回数カウントを開始している。これに対して、グループ１と２のメモリセルＭＴについては、ベリファイローレベルに到達したときから追加プログラム動作の回数をカウントするようにしてもよい。
【０２１０】
図２５は、ベリファイ動作を所定の２ステートについて実行する場合の上述した各ステートのメモリセルＭＴにおける追加プログラム動作実行回数を示す表である。変形例１と同様に、ステートＦＳ１とステートＦＳ８について、ベリファイ動作が実行される。
【０２１１】
図２５において、ステート毎に、追加プログラム動作実行回数、後続するループにおけるビット線電圧を示している。追加プログラム動作実行回数は、閾値電圧Ｖｔｈがベリファイローレベルに到達したものの、ベリファイハイレベルに到達していない場合と、ベリファイハイレベルに直接到達した場合に分けて示されている。ビット線電圧も、閾値電圧Ｖｔｈがベリファイローレベルに到達したものの、ベリファイハイレベルに到達していない場合と、ベリファイハイレベルに直接到達した場合に分けて示されている。
【０２１２】
図２５において、いずれのグループについても、閾値電圧が少なくともベリファイローレベルに到達したループを追加プログラム動作のカウント基準点（０回目）としている。また、表において、「０」は、ビット線ＢＬに接地電圧Ｖｓｓを印加することを示し、「＋」は、ビット線ＢＬにＱＰＷ電圧Ｖｂｌ＿ｑｐｗを印加することを示し、「Ｉ」は、ビット線ＢＬに書き込み禁止電圧Ｖｉｎｈｉｂｉｔを印加することを意味する。
【０２１３】
例えば、ステートＦＳ４は、ステートＦＳ１についてのベリファイ動作において、閾値電圧Ｖｔｈがベリファイローレベルに到達したものの、ベリファイハイレベルに到達していない場合、ビット線に接地電圧Ｖｓｓを印加して追加プログラム動作を２回実行する。一方で、閾値電圧Ｖｔｈがベリファイハイレベルに直接到達した場合は、ビット線ＢＬにＱＰＷ電圧Ｖｂｌ＿ｑｐｗを印加して追加プログラム動作を２回実行する。
【０２１４】
同様に、例えば、ステートＦＳ７は、ステートＦＳ１についてのベリファイ動作において、閾値電圧Ｖｔｈがベリファイローレベルに到達したものの、ベリファイハイレベルに到達していない場合、ビット線ＢＬにＱＰＷ電圧Ｖｂｌ＿ｑｐｗを印加して追加プログラム動作を４回実行する。一方で、閾値電圧Ｖｔｈがベリファイハイレベルに直接到達した場合は、ビット線ＢＬに接地電圧Ｖｓｓを印加して追加プログラム動作を３回実行する。
【０２１５】
このような設定によっても、フォギー書き込みにおいて、データの書き込み速度を速めることができる。
（変形例４）
上述した実施の形態及び各変形例では、閾値電圧Ｖｔｈがベリファイローレベルに達したか否かの検出は、ベリファイローレベルとベリファイハイレベルに対応する２種類の電圧をワード線ＷＬに印加して、それぞれの状態でセンスアンプ回路２４にセンス動作を実行させることにより行われているが、ベリファイハイレベルに対応する電圧のみをワード線ＷＬに印加した状態で、センスアンプ回路２４の動作パラメータ（例えば、センス時間）を変更しつつ２回のセンス動作を実行させることによって行ってもよい。
【０２１６】
以上のように、上述した実施形態及び各変形例によれば、データの書き込み時間を短縮した半導体記憶装置を提供することができる。
【０２１７】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として例示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると共に、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０２１８】
１  メモリコントローラ、２  不揮発性メモリ、１１  ＲＡＭ、１２  プロセッサ、１３  ホストインターフェイス、１４  ＥＣＣ回路、１５  メモリインターフェイス、１６  内部バス、２１  ＮＡＮＤ  Ｉ／Ｏインターフェイス、２２  制御部、２３  メモリセルアレイ、２４  センスアンプ回路、２４ａ  回路、２５  ワード線ドライバ、３３１、３３２、３３３  配線層、３３４  メモリホール、３３５  ブロック絶縁膜、３３６  電荷蓄積膜、３３７  ゲート絶縁膜、３３８  導電体柱、３３９、３４０  コンタクトプラグ。
【図１】
2020095767.tif 000003
【図２】
2020095767.tif 000004
【図３】
2020095767.tif 000005
【図４】
2020095767.tif 000006
【図５】
2020095767.tif 000007
【図６】
2020095767.tif 000008
【図７】
2020095767.tif 000009
【図８】
2020095767.tif 000010
【図９】
2020095767.tif 000011
【図１０】
2020095767.tif 000012
【図１１】
2020095767.tif 000013
【図１２】
2020095767.tif 000014
【図１３】
2020095767.tif 000015
【図１４】
2020095767.tif 000016
【図１５】
2020095767.tif 000017
【図１６】
2020095767.tif 000018
【図１７】
2020095767.tif 000019
【図１８】
2020095767.tif 000020
【図１９】
2020095767.tif 000021
【図２０】
2020095767.tif 000022
【図２１】
2020095767.tif 000023
【図２２】
2020095767.tif 000024
【図２３】
2020095767.tif 000025
【図２４】
2020095767.tif 000026
【図２５】
2020095767.tif 000027