"互いに交差するビット線及びソース線、前記ビット線及びソース線間配置され且つ制御ゲート及び電荷蓄積層を持つトランジスタからなるメモリセルを複数直列接続させたセルストリング、並びに、前記セルストリングの各メモリセルの制御ゲートに接続されたワード線、を有するセルアレイと、データ書き込みの際、選択された前記ワード線にプログラム電圧を印加すると共に、その他の非選択の前記ワード線に通過電圧を印加するプログラム動作からなる書き込みループを繰り返し実行するデータ書き込み部とを備え、n回目の書き込みループで用いる前記通過電圧とn1回目の書き込みループで用いる前記通過電圧の差をΔVnと表わした場合であって、L<ML及びMは整数が成立する場合、前記データ書き込み部は、ΔVL-1<ΔVL、ΔVL≦ΔVM-1且つΔVM-1<ΔVMとなる前記通過電圧を用いて前記書き込みループを実行することを特徴とする不揮発性半導体記憶装置。実施例1前記データ書き込み部は、ΔV1からΔVL-1までが0となり、ΔVLからΔVM-1までが0より大きい一定の第1電圧値となり、且つ、ΔVMからΔVN-1までが前記第1電圧より大きい一定の第2電圧値となる前記通過電圧を用いて前記書き込みループを実行することを特徴とする請求項1記載の不揮発性半導体記憶装置。実施例2前記データ書き込み部は、ΔV1からΔVNNはMより大きい整数までが指数関数的に上昇する前記通過電圧を用いて前記書き込みループを実行することを特徴とする請求項1記載の不揮発性半導体記憶装置。実施例3前記データ書き込み部は、ΔV1からΔVL-1までが0以上の一定の値となり、且つ、ΔVLからΔVN-1までが指数関数的に上昇する前記通過電圧を用いて前記書き込みループを実行することを特徴とする請求項1記載の不揮発性半導体記憶装置。前記データ書き込み部は、L、M、Nを前記書き込みループの数に基づいて決定することを特徴とする請求項1~4のいずれか1項記載の不揮発性半導体記憶装置。前記データ書き込み部は、L、M、Nを前記プログラム電圧に基づいて決定することを特徴とする請求項1~4のいずれか1項記載の不揮発性半導体記憶装置。前記データ書き込み部は、L、M、Nを前記通過電圧に基づいて決定することを特徴とする請求項1~4のいずれか1項記載の不揮発性半導体記憶装置。前記データ書き込み部は、L、M、Nを前記メモリセルに対する書き込み/消去サイクル数に応じて変更することを特徴とする請求項1~7のいずれか1項記載の不揮発性半導体記憶装置。プログラム動作におけるメモリセルの閾値電圧分布の広がりを抑制した不揮発性半導体記憶装置を提供することを目的とする。実施形態に係る不揮発性半導体記憶装置は、互いに交差するビット線及びソース線、前記ビット線及びソース線間配置され且つ制御ゲート及び電荷蓄積層を持つトランジスタからなるメモリセルを複数直列接続させたセルストリング、並びに、前記セルストリングの各メモリセルの制御ゲートに接続されたワード線、を有するセルアレイと、データ書き込みの際、選択された前記ワード線にプログラム電圧を印加すると共に、その他の非選択の前記ワード線に通過電圧を印加するプログラム動作からなる書き込みループを繰り返し実行するデータ書き込み部とを備え、n回目の書き込みループで用いる前記通過電圧とn1回目の書き込みループで用いる前記通過電圧の差をΔVnと表わした場合であって、L<ML及びMは整数が成立する場合、前記データ書き込み部は、ΔVL-1<ΔVL、ΔVL≦ΔVM-1且つΔVM-1<ΔVMとなる前記通過電圧を用いて前記書き込みループを実行することを特徴とする。以下、図面を参照しながら実施形態に係る不揮発性半導体記憶装置について説明する。[第1の実施形態]<全体構成>先ず、第1の実施形態に係る不揮発性半導体記憶装置の全体構成について説明する。図1は、本実施形態に係る不揮発性半導体記憶装置のブロック図である。このNAND型フラッシュメモリは、NANDチップ10、このNANDチップ10を制御するコントローラ11及びROMヒューズ12を備える。NANDチップ10を構成するメモリセルアレイ1は、後述するように、複数の電荷蓄積層型のメモリセルをマトリクス状に配置して構成される。メモリセルアレイ1の周辺には、ロウデコーダ/ワード線ドライバ2a、カラムデコーダ2b、ページバッファ3、並びに、プログラム電圧発生回路8a及び通過電圧発生回路8bからなる電圧発生回路8が配置されている。これら、ロウデコーダ/ワード線ドライバ2a、カラムデコーダ2b、ページバッファ3及び電圧発生回路8はデータ書き込み部を構成するものであり、メモリセルアレイ1に対してページ単位でデータの書き込み、或いは読み出しを行う。ロウデコーダ/ワード線ドライバ2aは、メモリセルアレイ1のワード線及び選択ゲート線を駆動する。ページバッファ3は、1ページ分のセンスアンプ回路とデータ保持回路を備えている。ページバッファ3の1ページ分の読み出しデータは、カラムデコーダ2bにより順次カラム選択されて、I/Oバッファ9を介して外部I/O端子に出力される。I/O端子から供給される書き込みデータは、カラムデコーダ2bにより選択されてページバッファ3にロードされる。ページバッファ3には、1ページ分の書き込みデータがロードされる。ロウアドレス信号及びカラムアドレス信号はI/Oバッファ9を介して入力され、それぞれ、ロウデコーダ2a及びカラムデコーダ2bに転送される。ロウアドレスレジスタ5aは、消去動作では、消去ブロックアドレスを保持し、書き込み動作や読み出し動作ではページアドレスを保持する。カラムアドレスレジスタ5bには、書き込み動作開始前の書き込みデータロードのための先頭カラムアドレスや、読み出し動作のための先頭カラムアドレスが入力される。書き込みイネーブル/WEや読み出しイネーブル/REなどが入力されるまで、カラムアドレスレジスタ5bは入力されたカラムアドレスを保持する。ロジック制御回路6は、チップイネーブル信号/CE、コマンドイネーブル信号CLE、アドレスラッチイネーブル信号ALE、書き込みイネーブル信号/WE、読み出しイネーブル信号/RE等の制御信号に基づいて、コマンドやアドレスの入力、データの入出力を制御する。読み出し動作や書き込み動作はコマンドで実行される。コマンドを受けて、シーケンス制御回路7は、読み出し動作や、書き込み或いは消去のシーケンス制御を行う。電圧発生回路8は、制御回路7により制御されて、種々の動作に必要な電圧を発生する。コントローラ11は、ROMヒューズ12に記憶された制御に必要な各種情報を用い、NANDチップ10の現在の書込状態に適した条件でデータの書き込み及び読み出しの制御を実行する。なお、後述する書き込み動作の一部は、NANDチップ10側で行うようにしても良い。<メモリセルアレイ>次に、本実施形態に係る不揮発性半導体記憶装置のメモリセルアレイ1について説明する。図2は、メモリセルアレイ1の回路図である。図2の場合、n個nは、自然数の直列接続されたメモリセルMC0~MCn-1とその両端に接続された選択ゲートトランジスタSG1、SG2により、NANDストリング4が構成されている。選択ゲートトランジスタSG1のソースは、共通ソース線CELSRCに接続され、選択ゲートトランジスタSG2のドレインはビット線BLBL0~BLm-1に接続される。メモリセルMC0~MCn-1の制御ゲートはそれぞれワード線WLWL0~WLn-1に接続され、選択ゲートトランジスタSG1、SG2のゲートは、選択ゲート線SL1、SL2に接続される。1つのワード線WLに沿う複数のメモリセルMCの範囲が、一括したデータの読み出し及び書き込みの単位となるページとなる。また、ワード線WL方向に並ぶ複数のNANDストリング4の範囲が、データの一括消去の単位となるブロックBLKを構成する。図2では、ビット線BL方向にビット線BLを共有する複数のブロックBLK0~BLKl-1を配列して、セルアレイ1が構成されている。ワード線WL及び選択ゲート線SL0、SL1は、ロウデコーダ2aにより駆動される。各ビット線BLは、ページバッファ3のセンスアンプ回路S/Aに接続されている。ここで、このようなNAND型フラッシュメモリのアクセス単位であるページについて説明する。以下の説明において、ページとは、異なる2つの意味を有するので注意を要する。第1は、1つのワード線に沿う一括したデータアクセス単位としてのページである。そして、第2は、1つのメモリセルに複数ビットを記憶する場合の記憶データの階層を示すページであり、この場合、LLowerページ、UUpperページなどと呼ぶ。<データ書き込み>先ず、本実施形態のデータ書き込みについて説明する前に、以下で用いる用語について説明しておく。始めに、データ書き込み時に実行される一連の処理を書き込みシーケンスと呼ぶ。この書き込みシーケンスは、実際にメモリセルの閾値電圧を遷移させるプログラム動作と、メモリセルの閾値電圧を確認するベリファイ動作からなる書き込みループによって実行される。各プログラム動作では、選択ワード線WLに対してメモリセルMCの閾値電圧の遷移に必要なプログラム電圧Vpgmが印加され、非選択ワード線WLに対してメモリセルMCが導通する程度の通過電圧Vpassが印加される。次に、本実施形態の書き込みシーケンスについて説明する。図3は、2ビット/セルのメモリセルを用いた場合の書き込みシーケンス時のメモリセル群の閾値電圧分布の遷移の様子を示す図である。始めに、データ消去を実行するステップS101。これは、ブロック全体に対して一括に実行される。その結果、ブロック内の全てのメモリセルの閾値電圧Vthは、最も低いERレベルになる。続いて、Lページ書き込みを実行するステップS102。これは、書き込みデータの下位ビットに基づいて実行される。下位ビットが1の場合、メモリセルの閾値電圧VthはERレベルに維持される。下位ビットが0の場合、メモリセルの閾値電圧VthはERレベルからAレベルとBレベルとの中間レベルであり電圧Vlmよりも高いLMレベルに遷移する。最後に、Uページ書き込みを実行するステップS103。これは、書き込みデータの上位ビットに基づいて実行される。もし、メモリセルの閾値電圧VthがERレベルならば、上位データが1の場合、メモリセルの閾値電圧VthはERレベルのまま維持する。逆に、上位ビットが0の場合、メモリセルの閾値電圧Vthは電圧VaVa<Vlmよりも高いAレベルに遷移する。一方、メモリセルの閾値電圧VthがLMレベルならば、上位ビットが0の場合、メモリセルの閾値電圧Vthは電圧VbVa<Vbよりも高いBレベルに遷移する。逆に、上位ビットが1の場合、メモリセルの閾値電圧Vthは電圧VcVb<Vcよりも高いCレベルまで遷移する。以上のように、メモリセルに対する2ビットデータの書き込みは、Lページ書き込みとUページ書き込みの2段階によって実現される。各ページの書き込みは、例えば、次のような書き込みループの繰り返しによって実現される。書き込みループは、メモリセルMCの閾値電圧Vthを遷移させるプログラム動作と、メモリセルMCの閾値電圧Vthがベリファイ電圧以上であることを確認するベリファイ動作からなる。書き込みシーケンスのプログラム動作は、メモリセルアレイ1を図4に示すようなバイアス状態にすることで実現される。なお、図4に示す例は、ワード線WL1に接続されたメモリセルMC1にデータを書き込む場合を示している。つまり、プログラム動作では、選択メモリセルMC1の制御ゲートワード線WL1にメモリセルMCの閾値電圧Vthの遷移に必要なプログラム電圧Vpgm例えば、20V程度を印加し、それ以外のメモリセルMC0、MC2、、MCn-1の制御ゲートには、それぞれ通過電圧Vpass例えば、10V程度を印加する。この通過電圧Vpassは、メモリセルMCの閾値電圧VthによらずメモリセルMC0、MC2、、MCn-1がオンする程度の電圧且つプログラムされない程度の電圧となる。また、ソース線CELSRC側の選択ゲート線SL1には、接地電圧Vss例えば、0Vを印加し、ビット線BL側の選択ゲート線SL2には、電源電圧Vccを印加する。ビット線BLには0Vを印加する。ソース線CELSRCには電源電圧Vccを印加する。また、セルウエルには、ウエル電圧Vwell例えば、0Vを印加する。これによって、メモリセルMC1のゲート絶縁膜に高電圧が加わり、セルウエルから電荷蓄積層に電子がトンネリングし、電荷蓄積層に電荷が蓄えられる。その結果、メモリセルMC1の閾値電圧Vthは正電圧側にシフトする。ここで、従来の不揮発性半導体記憶装置の書き込みシーケンスでは、プログラム電圧Vpgmについては、書き込みループ毎にステップアップさせ、通過電圧Vpassについては、一定に維持させて書き込みループを繰り返していた。しかし、この場合、書き込みシーケンスが進むにつれ、プログラム電圧Vpgmと通過電圧Vpassとの差が広がってしまう。この場合、選択ワード線WLと非選択ビット線BLに接続された非選択メモリセルMCにおいて、制御ゲートとチャネルとの電位差が大きくなっていき、誤書き込みが発生してしまう恐れがあった。そこで、上記問題を解決するものとして、次のような書き込みシーケンスが考えられる。図27は、第1の実施形態に対する比較例に係る不揮発性半導体記憶装置の書き込みループ数とプログラム電圧Vpgm及び通過電圧Vpassとの関係を示す図である。この書き込みシーケンスの場合、書き込みループ毎にプログラム電圧Vpgmだけでなく、通過電圧Vpassも一定幅でステップアップさせる。この場合、上記問題は解決されるものの、非選択ワード線WL及び選択ビット線BLに接続された非選択メモリセルMCに制御ゲートに大きな電圧通過電圧Vpassが印加されることになるため、閾値電圧Vthが変動してしまう。特に変動しやすい低レベルの閾値電圧分布、例えばAレベルの閾値電圧分布は、図29の矢印a1で示すように、広がってしまう点が問題となる。そこで、この問題を解決するものとして、図28に示す書き込みシーケンスが考えられる。この書き込みシーケンスの場合、図28の矢印a1で示すように、書き込みシーケンスの初期における通過電圧Vpassを低めに設定した上で、書き込みループ毎に、通過電圧Vpassを一定幅でステップアップさせる。これによって、低レベルの閾値電圧分布が変動しまうという問題は解決できる。しかし、この場合、通過電圧Vpassの初期値が低い分、多くの書き込みループを要することになり、書き込みシーケンスの処理時間が長期化する点が問題となる。そこで、第1の実施形態に係る不揮発性半導体記憶装置では、次のような書き込みシーケンスを採用する。図5は、本実施形態に係る不揮発性半導体記憶装置の書き込みシーケンスの原理を説明する図である。本実施形態では、図5に示すように、書き込みシーケンスのうち初期の段階の書き込みループ、つまり、低レベルの閾値電圧Vthのプログラムの期間P1においては、書き込みループ毎の通過電圧Vpassのステップアップ幅を小さめにしておき、高レベルの閾値電圧のプログラムの期間P2においては、書き込みループ毎の通過電圧Vpassのステップアップ幅をプログラムの期間P1よりも大きくする。図5の場合、期間P2の終わりにおいて、通過電圧Vpassが最大の通過電圧Vpsmaxに達している。ここで、最大の通過電圧Vpsmaxは、これ以上通過電圧Vpassが大きくなると、非選択ワード線WLとチャネルとの電位差が大きくなり非選択メモリセルMCに誤書き込みが発生する確率が高くなる通過電圧Vpassである。そのため、仮に、これ以上、通過電圧Vpassをステップアップさせると、非選択ワード線WL及び選択ビット線BLに接続された非選択メモリセルMCの閾値電圧Vthが変動してしまう。そのため、期間P2よりも後の書き込みループでは、通過電圧Vpassは、ステップアップしないようにしている。これによって、図27に示す比較例に比べて、期間P1では、実効的なプログラム電圧Vpgmの増加を抑えることができる。また、低レベルの閾値電圧Vthの変動を防止することができ、低レベルの閾値電圧Vthが広がることを抑制できる。また、図28に示す比較例に比べて、期間P2では、実効的なプログラム電圧Vpgmがより高くなることになるため、選択メモリセルMCの閾値電圧Vthが所望の閾値電圧Vthに遷移し易くなり、書き込みシーケンスの処理時間を短縮することができる。次に図5に示す書き込みシーケンスの制御方法について説明する。図6は、通過電圧Vpassのステップアップ幅ΔVpassを書き込みループ回数で制御する場合の書き込みシーケンスのフローチャートである。フローチャートの動作は、例えば、シーケンス制御回路7が制御する。始めに、ステップS201で、書き込みループ数nlを1で初期化する。また、通過電圧Vpassを初期通過電圧Vpass0で初期化する初期通過電圧Vpass0は、例えば5V。続いて、ステップS202で、書き込みループ数が、nl<Rnl1Rnl1は、例えば10かを判定する。n<Rnl1であればS202のYes、ステップS203において、プログラム電圧Vpgm、通過電圧Vpassでプログラム動作を実行する。一方、n≧Rnl1であればS202のNo、ステップS207に処理を移す。ここで、書き込みループ数はNANDチップ10内に配置されたラッチに記憶することができる。続いて、ステップS204で、ベリファイ動作を実行する。仮に、このステップS204で全てのメモリセルがパスした場合S204のPass、動作を終了する。一方、一部のメモリセルがパスしなかった場合S204のFail、ステップS205で、書き込みループ数nlをインクリメントする。続いて、ステップS206で、通過電圧VpassにΔVpassを加える。ここで、ΔVpassは電圧Vc1である。このとき、プログラム電圧VpgmもΔVpgmだけステップアップさせる。その後、ステップS202に処理を戻す。ステップS207では、プログラム電圧Vpgm、通過電圧Vpassでプログラム動作を実行する。続いて、ステップS208で、ベリファイ動作を実行する。仮に、このステップS208で全てのメモリセルがパスした場合S208のPass、動作を終了する。一方、一部のメモリセルがパスしなかった場合S208のFail、ステップS209で、書き込みループ数nlをインクリメントする。続いて、ステップS210で、通過電圧VpassにΔVpassを加える。ここで、ΔVpassは電圧Vc2>電圧Vc1である。このとき、プログラム電圧VpgmもΔVpgmステップアップさせる。続いて、ステップS211で、書き込みループ数nlが、例えばnl<Rnl2Rnl2は、例えば15かを判定する。nl<Rnl2であればS211のYes、再度ステップS207において、プログラム電圧Vpgm、通過電圧Vpassでプログラム動作を実行する。一方、n≧Rnl2であればS211のNo、ステップS212に処理を移す。なお、Rnl1<Rnl2である。ステップS212では、プログラム電圧Vpgm、通過電圧Vpassでプログラム動作を実行する。ここでの通過電圧Vpassは、最大の通過電圧Vpsmaxとなる。すなわち、以降のプログラム動作では通過電圧Vpassをステップアップさせない。続いて、ステップS213で、ベリファイ動作を実行する。このベリファイ動作でプログラムが完了全てのメモリセルがパスしたかを判定し、完了している場合S213のPass書き込みシーケンスを終了し、完了していない場合S213のFail、ステップS214で書き込みループ数nlが最大ループ回数図中のloopmaxに達したかどうか判断する。このステップS214において、書き込みループ数nlが最大ループ回数に達している場合は、書き込み失敗として書き込みシーケンスを終了する。一方、書き込みループ回数に達していない場合は、S212に処理を戻す。この際、プログラム電圧VpgmはΔVpgmだけステップアップさせるが、通過電圧Vpassはステップアップさせない。図7は、通過電圧Vpassのステップアップ幅ΔVpassをプログラム電圧Vpgmで制御する場合の書き込みシーケンスのフローチャートである。フローチャートの動作は、例えば、シーケンス制御回路7が制御する。始めに、ステップS301で、プログラム電圧Vpgmを、所定の電圧Vpgm0Vpgm0は、例えば13Vで初期化する。また、通過電圧Vpassを初期通過電圧Vpass0で初期化する初期通過電圧Vpass0は、例えば5V。続いて、ステップS302で、プログラム電圧Vpgmが、Vpgm<Rvpg1Rvpg1は、例えば15Vかを判定する。Vpgm<Rvpg1であればS302のYes、ステップS303に処理を移し、Vpgm≧Rvpg1であればS302のNo、ステップS307に処理を移す。続くステップS303及びS304は、図6のステップS203及びS204と同様であるため説明を省略する。続いて、ステップS305で、プログラム電圧Vpgmを所定の電圧ΔVpgmだけステップアップさせる。その後、図6のステップS206と同様のステップS306を処理し、ステップS302に処理を戻す。ステップS307及びS308は、図6のステップS207及びS208と同様であるため説明を省略する。続いて、ステップS309で、プログラム電圧Vpgmを電圧ΔVpgmだけステップアップさせる。その後、図6のステップS210と同様のステップS310を処理する。続いて、ステップS311で、プログラム電圧Vpgmが、Vpgm<Rvpg2Rvpg2は、例えば17Vかを判定する。Vpgm<Rvpg2であればS311のYes、再度ステップS307において、プログラム電圧Vpgm、通過電圧Vpassでプログラム動作を実行する。一方、Vpgm≧Rvpg2であればステップS311のNo、ステップS312に処理を移す。なお、Rvpg1<Rvpg2である。ステップS312~S314は、図6のステップS212~S214と同様であるため説明を省略する。図8は、通過電圧Vpassのステップアップ幅ΔVpassを通過電圧Vpassで制御する場合の書き込みシーケンスのフローチャートである。フローチャートの動作は、例えば、シーケンス制御回路7が制御する。始めに、ステップS401で、通過電圧Vpassを、初期通過電圧Vpasss0初期通過電圧Vpass0は、例えば5Vで初期化する。続いて、ステップS402で、通過電圧Vpassが、Vpass<Rvpa1Rvpa1は、例えば7Vかを判定する。Vpass<Rvpa1であればS402のYes、ステップS403に処理を移し、Vpass≧Rvpa1であればS402のNo、ステップS406に処理を移す。続くステップS403、S404及びS405は、図6のステップS203、S204及びS206と同様であるため説明を省略する。ステップS406、S407及びS408は、図6のステップS207、S208及びS210と同様であるため説明を省略する。続いて、ステップS409で、通過電圧Vpassが、Vpass<Rvpa2Rvpa2は、例えば9Vかを判定する。Vpass<Rvpa2であればS409のYes、再度ステップS406において、プログラム電圧Vpgm、通過電圧Vpassでプログラムを実行する。一方、Vpass≧Rvpa2であればS409のNo、ステップS410に処理を移す。なお、Rvpa1<Rvpa2である。ステップS410~S412は、図6のステップS212~S214と同様であるため説明を省略する。次に、本実施形態に係る書き込みシーケンスを2ビット/セルのメモリセルを用いた不揮発性半導体記憶装置に適用した場合について説明する。例えば、図3のUページ書き込みの場合を想定している。図9は、2ビット/セルのメモリセルMCに対する書き込みシーケンス時における書き込みループ数とプログラム電圧Vpgm及び通過電圧Vpassの関係を示す図である。また、図10は、図9の場合における通過電圧Vpassの様子を示す図である。始めの1~L回目Lは、例えば5の書き込みループは、Aレベルのプログラム期間となる。ここでは、通過電圧Vpassのステップアップ幅ΔVpassを0Vとする。続くL1~M回目Mは、例えば10の書き込みループは、Bレベルのプログラム期間となる。ここでは、通過電圧Vpassのステップアップ幅ΔVpassを一定の電圧Vc1とする。続くM1回目以降の書き込みループは、Cレベルのプログラム期間となる。ここでは、通過電圧Vpassのステップアップ幅ΔVpassを電圧Vc1より大きい一定の電圧Vc2とする。なお、図9及び図10の場合、N回目Nは、例えば15の書き込みループにおいて、通過電圧Vpassが、最大の通過電圧Vpsmaxに達してしまう。そのため、仮に、N1回目以降の書き込みループでも通過電圧Vpassを電圧Vc2ずつステップアップしていくと、通過電圧Vpassが印加される非選択メモリセルMCの閾値電圧Vthもプログラム電圧Vpgmを印加したときと同様、変動することになる。そのため、N1回目以降の書き込みループでは、通過電圧Vpassをステップアップしないようにする。以上のように、本実施形態の書き込みシーケンスでは、ステップアップ幅ΔVpassを、Aレベルのプログラムが終了するL回目の書き込みループの後、Bレベルのプログラムが終了するM回目の書き込みループの後の2回、ステップアップ幅ΔVpassが大きくなるように切り替えている。つまり、n回目の書き込みループで用いる通過電圧Vpassとn1回目の書き込みループで用いる通過電圧Vpassの差ステップアップ幅をΔVnと表現すると、データ書き込み部は、ΔVL-1<ΔVL、ΔVL≦ΔVM-1且つΔVM-1<ΔVMとなるように通過電圧Vpassを用いて書き込みループを実行していると言い換えることができる。このように、図9及び図10に示す実施形態の場合、Aレベルのプログラム期間では、低い通過電圧Vpassを用いることで、Aレベルの閾値電圧分布が広がるのを抑制できると共に、BレベルやCレベルなど閾値電圧Vthが遷移し難いプログラム期間では、そのレベルに応じて通過電圧Vpassをステップアップさせていくこと、メモリセルMCの閾値電圧Vthを遷移し易くすることができる。次に図9及び図10に示す書き込みシーケンスの制御方法について説明する。フローチャートの動作は、例えば、シーケンス制御回路7が制御する。図11は、通過電圧Vpassのステップアップ幅ΔVpassを書き込みループ回数nlで制御する場合の書き込みシーケンスのフローチャートである。ここで、書き込みループ数はNANDチップ10内に配置されたラッチに記憶することができる。始めに、ステップS501で、書き込みループ数nlを1で初期化する。また、通過電圧Vpassを初期通過電圧Vpass0で初期化する初期通過電圧Vpass0は、例えば5V。続いて、ステップS502で、書き込みループ数nlが、例えばnl<L例えばLは5かを判定する。nl<LであればS502のYes、ステップS503において、プログラム電圧Vpgm、通過電圧Vpassでプログラム動作を実行する。一方、nl≧LであればS502のNo、ステップS507に処理を移す。続いて、ステップS504で、ベリファイ動作を実行する。仮に、このステップS504で全てのメモリセルがパスした場合S504のPass、動作を終了する。一方、一部のメモリセルがパスしなかった場合S504のFail、ステップS505で、書き込みループ数nlをインクリメントする。続いて、ステップS506で、通過電圧VpassにΔVpassを加える。但し、ここでは、ΔVpassは0Vであり、実質的に何も処理を行わない。つまり、書き込みループ数がnl<Lである間は、通過電圧Vpassはステップアップされない。その後、ステップS502に処理を戻す。ステップS507では、プログラム電圧Vpgm、通過電圧Vpassでプログラム動作を実行する。続いて、ステップS508で、ベリファイ動作を実行する。仮に、このステップS508で全てのメモリセルがパスした場合S508のPass、動作を終了する。一方、一部のメモリセルがパスしなかった場合S508のFailステップS509で、書き込みループ数nlをインクリメントする。続いて、ステップS510で、通過電圧VpassにΔVpassを加える。ここで、ΔVpassは電圧Vc1である。このとき、プログラム電圧VpgmもΔVpgmだけステップアップさせる。続いて、ステップS511で、書き込みループ数nlが、例えばnl<M例えばMは10かを判定する。nl<MであればS511のYes、再度ステップS507において、プログラム電圧Vpgm、通過電圧Vpassでプログラム動作を実行する。一方、nl≧MであればS511のNo、ステップS512に処理を移す。ステップS512では、プログラム電圧Vpgm、通過電圧Vpassでプログラム動作を実行する。続いて、ステップS513で、ベリファイ動作を実行する。仮に、このステップS513で全てのメモリセルがパスした場合S513のPass、動作を終了する。一方、一部のメモリセルがパスしなかった場合S513のFail、ステップ514で、書き込みループ数nlをインクリメントする。続いて、ステップS515で、通過電圧VpassにΔVpassを加える。ここで、ΔVpassは電圧Vc2>電圧Vc1である。このとき、プログラム電圧VpgmもΔVpgmだけステップアップさせる。続いて、ステップS516で、書き込みループ数nlが、例えばnl<N例えばNは15かを判定する。nl<NであればS516のYes、再度ステップS512において、プログラム電圧Vpgm、通過電圧Vpassでプログラム動作を実行する。一方、nl≧NであればS516のNo、ステップS517に処理を移す。ステップS517では、最大の通過電圧Vpsmaxを用いてプログラム動作を実行する。続いて、ステップS518で、ベリファイ動作を実行する。このベリファイ動作でプログラムが完了全てのメモリセルがパスしたかを判定し、完了している場合S518のPass、書き込みシーケンスを終了し、完了していない場合S518のFail、S519で書き込みループ数nlが最大ループ回数図中のloopmaxに達したかどうか判断する。このステップS519において、書き込みループ数nlが最大ループ回数に達している場合は、書き込み失敗として書き込みシーケンスを終了する。一方、書き込みループ回数に達していない場合は、ステップS517に処理を戻す。この際、プログラム電圧VpgmはΔVpgmだけステップアップさせるが、通過電圧Vpassはステップアップさせない。図11に示す書き込みシーケンスは、通過電圧Vpassのステップアップ幅ΔVpassを書き込みループ回数で制御する場合であったが、図7及び図8と同様、プログラム電圧Vpagm或いは通過電圧Vpassで制御することもできる。また、本実施形態の書き込みシーケンスを用いた場合、低レベルの閾値電圧分布の広がりを抑制できることは前述の通りであるが、その他にも次のような効果を得ることもできる。図12及び図13は、図9のグラフに対してAレベル~Cレベルのプログラム期間を重ね合わせた図である。図12は、書き込み/消去サイクル数が少ないメモリセルMC以下、フレッシュセルと呼ぶの場合であり、図13は、書き込み/消去サイクル数が多いメモリセルMC以下、サイクルドセルと呼ぶの場合である。フレッシュセルに対する書き込みシーケンスの場合、図12に示すように、AレベルのプログラムはL回目Lは、例えば5の書き込みループ、BレベルのプログラムはM回目Lは、例えば10の書き込みループ、CレベルのプログラムはX回目Xは、例えば15の書き込みループで完了するとする。これに対し、サイクルドセルの場合、図13に示すように、AレベルのプログラムはL回目の書き込みループよりも早いL ́回目の書き込みループ、BレベルのプログラムはM回目の書き込みループよりも早いM ́回目の書き込みループ、CレベルのプログラムはX回目の書き込みループよりも早いX ́回目の書き込みループで完了する。これは、一般的に、サイクルドセルの方が、フレッシュセルよりも閾値電圧が上昇し易い以下プログラムし易いと称する場合があるためである。つまり、図12及び図13に示す場合、フレッシュセルにとってのAレベルのプログラム期間1~L回目の書き込みループは、サイクルドセルにとってのAレベル及びBレベルのプログラム期間となる。但し、ここでのBレベルのプログラムとは、サイクルドセルの中でも、プログラムがし易いメモリセルMCが対象となることに注意されたい。同様に、フレッシュセルにとってのBレベルのプログラム期間L1~M回目の書き込みループは、サイクルドセルにとってのBレベル及びCレベルのプログラム期間となる。但し、ここでのCレベルのプログラムとは、サイクルドセルの中でも、プログラムがし易いメモリセルMCが対象となることに注意されたい。また、フレッシュセルに取ってのCレベルのプログラム期間M以降の書き込みループは、サイクルドセルにとってのCレベルのプログラム期間である。但し、ここでのCレベルのプログラムとは、サイクルドセルの中でも、プログラムがし難いメモリセルMCが対象となることに注意されたい。以上のように、図9~図11に示す書き込みシーケンスの場合、サイクルドセルに関しては、Bレベルのプログラムがし易いメモリセルMCは、通過電圧Vpassを低く抑えたステップアップしないL回目までの書き込みループでプログラムされ、また、Cレベルのプログラムがし易いメモリセルMCは、通過電圧Vpassのステップアップ幅ΔVpassが電圧Vc1と低いM回目までの書き込みループでプログラムされることになる。その結果、サイクルドセルに対するBレベル及びCレベルの過プログラムを防ぐことができ、図14の点線で示すように、Bレベル及びCレベルの閾値電圧分布の上裾が広がるのを抑制することができる。以上、本実施形態によれば、前述の書き込みシーケンスを用いることで、書き込みシーケンスの処理時間を増大させることなく低レベルの閾値電圧分布の広がりを抑制することができる。また、サイクルドセルに対するデータ書き込みに関しても、高レベルの閾値電圧分布の広がりを抑制することができる。[第2の実施形態]以下で説明する第2~第4の実施形態は、第1の実施形態の変形例となるものである。第2の実施形態では、書き込みループ毎に通過電圧Vpassを指数関数的にステップアップさせる書き込みシーケンスについて説明する。図15は、本実施形態に係る書き込みシーケンス時における書き込みループ数とプログラム電圧Vpgm及び通過電圧Vpassの関係を示す図である。また、図16及び図17は、本実施形態に係る書き込みシーケンスを用いた場合であって、N=6とした場合の通過電圧Vpassの様子を示す図である。本実施形態の場合、図15に示すように、通過電圧Vpassが、最大の通過電圧Vpsmaxに達するN回目の書き込みループまではステップアップ幅ΔVpass自体を等間隔でステップアップさせながら書き込みループを繰り返し実行する。具体的には、図16に示す場合、通過電圧Vpassが、最大の通過電圧Vpsmaxに達する6回目の書き込みループまで、通過電圧Vpassのステップアップ幅ΔVpass自体を0.1Vずつ増やしながら、書き込みループを繰り返し実行する。つまり、n回目の書き込みループで用いる通過電圧Vpassに対するn1回目の書き込みループで用いる通過電圧Vpassの差ステップアップ幅をΔVnと表現すると、データ書き込み部は、ΔV1=0.1V、ΔV2=0.2V、、ΔV5=0.5Vとなるような通過電圧Vpassを用いて書き込みループを実行していると言い換えることができる。これを一般的な形で表わすと、ΔVn=ΔVn-10.1となる。また、図17は、本実施形態に係る書き込みシーケンスの他の例である。図17に示す場合、1回目の書き込みループから2回目の書き込みループにかけての通過電圧Vpassのステップアップ幅ΔVpassは、0.1Vであるが、それ以降は、通過電圧Vpassがプログラム電圧Vpgmの下限に達する6回目の書き込みループまで、通過電圧Vpassのステップアップ幅ΔVpass自体を0.2Vずつ増やしながら、書き込みループを繰り返し実行する。図16及び図17のステップアップ幅ΔVpass制御は、論理回路による演算により行うことができる。また、NANDチップ10内のROMヒューズなどにステップアップ幅ΔVpassの変動値を記憶することにより行うこともできる。メモリセルMCのプログラムのし易さはメモリセル毎にバラツキがあり、各レベルのプログラム期間も明確に分けられないような場合がある。この点、本実施形態によれば、プログラムする閾値電圧に関係なくプログラムし易いメモリセルMCに対しては低い通過電圧Vpassを用いたプログラム動作を実行し、プログラムし難いメモリセルMCに対しては高い通過電圧Vpassを用いたプログラム動作を実行することになるため、第1の実施形態と比べ、メモリセルのプログラム特性により最適なプログラム動作を実行することができる。[第3の実施形態]第3の実施形態では、早い段階の書き込みループでは、通過電圧Vpassを一定の幅でステップアップさせ、その後の書き込みループでは、通過電圧Vpassを指数関数的にステップアップさせる書き込みシーケンスについて説明する。図18は、本実施形態に係る書き込みシーケンス時における書き込みループ数とプログラム電圧Vpgm及び通過電圧Vpassの関係を示す図である。また、図19は、本実施形態に係る書き込みシーケンスを用いた場合であって、L=2、N=6とした場合の通過電圧Vpassの関係を示す図である。本実施形態の場合、図18に示すように、1~L回目の書き込みループまでは、通過電圧Vpassを一定の幅Vc1でステップアップさせ、L1回目の書き込みループから通過電圧VpassがN回目の書き込みループまではステップアップ幅ΔVpass自体をステップアップさせながら書き込みループを繰り返し実行する。具体的には、図19に示す場合、例えば、1及び2回目の書き込みループでは、通過電圧Vpassを0.1Vずつステップアップし、3回目の書き込みループから通過電圧Vpassが6回目の書き込みループまでは、通過電圧Vpassのステップアップ幅ΔVpass自体を0.1Vずつ増やしながら、書き込みループを繰り返し実行する。つまり、n回目の書き込みループで用いる通過電圧Vpassに対するn1回目の書き込みループで用いる通過電圧Vpassの差ステップアップ幅をΔVnと表現すると、データ書き込み部は、ΔV1=0.1V、ΔV2=0.1V、ΔV3=0.2V、ΔV4=0.3V、ΔV5=0.5Vとなるような通過電圧Vpassを用いて書き込みループを実行していると言える。本実施形態の場合、低レベルの閾値電圧のプログラム期間では、通過電圧Vpassのステップアップを抑えつつプログラム動作を実行するので、第1の実施形態と同様、低レベルの閾値電圧分布の広がりを抑えることができると共に、その後の書き込みループでは、第2の実施形態と同様、メモリセルのプログラム特性に応じた適切な通過電圧Vpassを用いたプログラム動作を実行することができる。[第4の実施形態]第4の実施形態は、図3の書き込みとは異なり、書き込みシーケンスにおいて、A~Cレベルに書き込まれるメモリセルに対して同時に書き込みが行われ、各レベルに達したメモリセルから順に書き込み禁止状態ロックアウト動作となる。この書き込み禁止状態は、ビット線の電圧を変更例えば、0Vから2.5Vに変更することにより行うことができる。図20は、本実施形態に係る書き込みシーケンス時における書き込みループ数とプログラム電圧Vpgm及び通過電圧Vpassの関係を示す図である。また、図21は、本実施形態に係る書き込みシーケンスを用いた場合の通過電圧Vpassの関係を示す図である。ここで、Aレベルのプログラム期間はAレベルに書き込まれるメモリセルのベリファイがパスするまでの期間であり、Bレベルのプログラム期間はBレベルに書き込まれるメモリセルのベリファイがパスするまでの期間であり、Cレベルのプログラム期間はCレベルに書き込まれるメモリセルのベリファイがパスするまでの期間である。本実施形態の場合、図20に示すように、Aレベルのプログラム期間である1~L回目の書き込みループでは、通過電圧Vpassをステップアップさせずにプログラム動作を実行し、Bレベルのプログラム期間であるL1~M回目の書き込みループでは、通過電圧Vpassを所定の電圧Vc1でステップアップさせつつプログラム動作を実行する。その後、Cレベルのプログラム期間であるM1~N回目の書き込みループでは、通過電圧Vpassを指数関数的にステップアップさせつつプログラム動作を実行する。具体的には、図21に示す場合、Aレベルのプログラム期間である1~4回目の書き込みループでは、通過電圧Vpassをステップアップさせずにプログラム動作を実行し、Bレベルのプログラム期間である5及び6回目の書き込みループでは、通過電圧Vpassを0.1Vだけステップアップさせつつプログラム動作を実行する。その後、Cレベルのプログラム期間である7~9回目の書き込みループでは、通過電圧Vpassを、閾値電圧Vpassのステップアップ幅ΔVpass自体を0.1Vずつステップアップさせつつプログラム動作を実行する。つまり、n回目の書き込みループで用いる通過電圧Vpassに対するn1回目の書き込みループで用いる通過電圧Vpassの差ステップアップ幅をΔVnと表現すると、データ書き込み部は、ΔV1~ΔV3=0V、ΔV4,ΔV5=0.1V、ΔV6=0.2V、ΔV7=0.3V、ΔV8=0.4Vとなるような通過電圧Vpassを用いて書き込みループを実行している。本実施形態の場合、Aレベル及びBレベルのプログラム期間では、第1の実施形態と同様、プログラムする閾値電圧に適したプログラム動作を実行することができ、Cレベルのプログラム期間では、第2の実施形態と同様、メモリセルのプログラム特性に適したプログラム動作を実行することができる。図22は、通過電圧Vpassのステップアップ幅ΔVpassをベリファイ動作時のプログラム対象となるメモリセルMCのうちベリファイパスしたメモリセル数の割合以下、ベリファイパス率と呼ぶで制御する場合の書き込みシーケンスのフローチャートである。なお、図22のフローチャートは、2ビット/セルのメモリセルMCに対する書き込みシーケンスを示している。ここで、ベリファイパス率は、ECCで救済できるビットはパスしたものと見なしてベリファイパス率を計算しても良い。始めに、ステップS601で、Aレベルのベリファイパス率raが、ra<RraRraは、例えば100かを判定する。ra<Rraであれば、ステップS602に処理を移し、ra≧Rraであれば、ステップS605に処理を移す。なお、ベリファイパス率は100には限られず、Aレベルに書き込まれるメモリセルの70がパスした時点を、Aレベルのプログラム期間と定義することもできる。以下、Bレベル、Cレベルのベリファイパス率に関しても同様である。続くステップS602及びS603は、図6のステップS203及びS204と同様であるため説明を省略する。なお、ステップS603において、Aレベルのベリファイをパスしたメモリセルは以降のプログラム動作において書き込み禁止状態となる。続いて、ステップS604で、ステップS603におけるベリファイ結果に基づいてAレベルのベリファイパス率raを更新する。その後、ステップS601に処理を戻す。ステップS605で、Bレベルのベリファイパス率rbが、rb<RrbRrbは、例えば100かを判定する。rb<Rrbであれば、ステップS606に処理を移す。一方、rb≧Rrbであれば、ステップS609に処理を移す。続くステップS606及びS607は、図6のステップS207及びS208と同様であるため説明を省略する。続いて、ステップS608で、ステップS607におけるベリファイ結果に基づいてBレベルのベリファイパス率rbを更新する。その後、ステップS605に処理を戻す。ステップS609で、通過電圧Vpassが最大の通過電圧Vpsmaxに達しているかを判定する。通過電圧Vpassが最大の通過電圧Vpsmaxに達している場合、ステップS511に処理を移し、通過電圧Vpassが最大の通過電圧Vpsmaxに達していない場合、ステップS610に処理を移す。続くステップS610、S611、S612及びS613は、図6のステップS207、S210、S211及びS214と同様であるため説明を省略する。最後に、ステップS614で、Cレベルのベリファイパス率rcが、rc<RrcRrcは、例えば100かを判定する。rc<Rrcであれば、書き込みシーケンスを完了する。一方、rc≧Rrcであれば、ステップS615で書き込みループ数nlが最大ループ回数図中のloopmaxに達したかどうか判断した上で、ステップS609に処理を戻す。このように、A~Cレベルまで一括に書き込む方式に対応することもできる。その結果、プログラム動作を高速化することができる。[第5の実施形態]第5の実施形態は、第1の実施形態の変形例である。第1の実施形態では、書き込み/消去サイクル数に関係なく、書き込みループ数、プログラム電圧Vpgm、通過電圧Vpass或いはベリファイパス率によって通過電圧Vpassのステップアップ幅ΔVpassを切り替えていた。しかし、第1の実施形態でも述べたように、一般的に、メモリセルは書き込み/消去サイクル数が増えるにつれてプログラムし易くなる傾向にある。そこで、本実施形態では、書き込み/消去サイクル数に応じて、通過電圧Vpassのステップアップ幅ΔVpassを切り替える判定条件を変える書き込みシーケンスについて説明する。図23は、通過電圧Vpassのステップアップ幅ΔVpassを書き込みループに応じて切り替える書き込みシーケンスのフローチャートの一部であり、図6に示すフローチャートの開始Start及びステップS201間に追加される処理である。図23の場合、始めに、ステップS251において、書き込み/消去サイクル数が所定のサイクル数Rncよりも大きいかを判定し、書き込み/消去回数がサイクル数Rnc以下の場合、ステップS252に処理を移し、図6のステップS202で用いる基準書き込みループ数Rnl1を所定のループ数Cnl1で初期化し、図6のステップS206で用いる基準書き込みループ数Rnl2を所定のループ数Cnl2で初期化する。一方、書き込み/消去サイクル数が所定のサイクル数Rncよりも大きい場合、ステップS253に処理を移し、基準書き込みループ数Rnl1をループ数Cnl1より大きいループ数Cnl1 ́で初期化し、基準書き込みループ数Rnl2をループ数Cnl2より大きいループ数Cnl2 ́で初期化する。なお、この書き込み/消去サイクル数は、NANDチップ10内のROMヒューズに記憶されていても良い。この場合は、シーケンス制御回路7がROMヒューズに記憶された書き込み/消去サイクル数を読み出し、ステップS252の処理を行う。また、この書き込み/消去サイクル数は、ROMヒューズ12に記憶されていても良い。この場合はコントローラ11が書き込みコマンドをNANDチップ10への送付に前後して、書き込み/消去サイクル数の情報をNANDチップ10へ送付しても良い。このように、書き込み/消去サイクル数の増加に伴い、通過電圧Vpassのステップアップを遅らせるようにすることで、プログラム速度が速くなったメモリセルへのアシストを弱くすることができる。これによって、書き込みシーケンス後の閾値電圧分布の広がりを抑制することができる。図24は、通過電圧Vpassのステップアップ幅ΔVpassをプログラム電圧Vpgmに応じて切り替える書き込みシーケンスのフローチャートの一部であり、図7に示すフローチャートの開始Start及びステップS301間に追加される処理である。図24の場合、始めに、ステップS351において、書き込み/消去サイクル数が所定のサイクル数Rncよりも大きいかを判定し、書き込み/消去回数がサイクル数Rnc以下の場合、ステップS352に処理を移し、図7のステップS302で用いる基準プログラム電圧Rvpg1を所定の電圧Cvpg1で初期化し、図7のステップS306で用いる基準プログラム電圧Rvpg2を所定の電圧Cvpg2で初期化する。一方、書き込み/消去サイクル数が所定のサイクル数Rncよりも大きい場合、ステップS353に処理を移し、基準プログラム電圧Vpgm1を電圧Rvpg1より大きい所定の電圧Vpg1 ́で初期化し、基準プログラム電圧Rvpg2を電圧Vpg2より大きい所定の電圧Vpg2 ́で初期化する。図25は、通過電圧Vpassのステップアップ幅ΔVpassを通過電圧Vpassに応じて切り替える書き込みシーケンスのフローチャートの一部であり、図8に示すフローチャートの開始Start及びステップS401間に追加される処理である。図25の場合、始めに、ステップS451において、書き込み/消去サイクル数が所定のサイクル数Rncよりも大きいかを判定し、書き込み/消去サイクル数がサイクル数Rnc以下の場合、ステップS452に処理を移し、図8のステップS402で用いる基準通過電圧Rvpa1を所定の電圧Cvpa1で初期化し、図8のステップS406で用いる基準通過電圧Rvpa2を所定の電圧Cvpa2で初期化する。一方、書き込み/消去サイクル数が所定のサイクル数Rncよりも大きい場合、ステップS453に処理を移し、基準通過電圧Vpga1を電圧Rvpa1より大きい所定の電圧Cvpa1 ́で初期化し、基準通過電圧Rvpa2を電圧Cvpa2より大きい所定の電圧Cvpa2 ́で初期化する。図26は、通過電圧Vpassのステップアップ幅ΔVpassのベリファイパス率に応じて切り替える書き込みシーケンスにおいて、書き込み/消去サイクルと図9に示すフローチャートのステップS501、S505及びS515の判定条件との関係を示す具体例である。例えば、書き込み/消去サイクル数Rncが1000回未満の場合、ステップS501の判定条件をAレベルのベリファイパス率が100か、ステップS505の判定条件をBレベルのベリファイパス率が100か、ステップS515の判定条件をCレベルのベリファイパス率が100かで設定する。書き込み/消去サイクル数Rncが1万回未満の場合、ステップS501の判定条件をBレベルのベリファイパス率が50か、ステップS505の判定条件をBレベルのベリファイパス率が50か、ステップS515の判定条件をCレベルのベリファイパス率が100かで設定する。また、書き込み/消去サイクル数Rncが1万回以上の場合、ステップS501の判定条件をBレベルのベリファイパス率が75か、ステップS505の判定条件をBレベルのベリファイパス率が75か、ステップS515の判定条件をCレベルのベリファイパス率が100かで設定する。以上、図23~図25のいずれも、図22と同様、書き込み/消去サイクル数の増加に伴い、通過電圧Vpassのステップアップを遅らせるようにすることで、プログラム速度が速くなったメモリセルへのアシストを弱くすることができる。これによって、書き込みシーケンス後の閾値電圧分布の広がりを抑制することができる。以上、本実施形態によれば、第1の実施形態と同様の効果を得られるばかりでなく、書き込み/消去サイクル数の増加によってプログラム特性が変化した場合であっても、適切な通過電圧Vpassのステップアップが可能となり閾値電圧分布の広がりを抑制することができる。[その他]以上、本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。"