"複数の不揮発性メモリセルを直列接続してなるメモリストリングとその両端に接続された第1及び第2の選択ゲートトランジスタとを備えたNANDセルユニットの集合により構成されるブロックを複数個配列して構成されるメモリセルアレイと、第1の方向に並ぶ前記メモリセルの制御ゲートを共通接続するワード線と、前記NANDセルユニットの第1の端部に接続されるビット線と、前記NANDセルユニットの第2の端部に接続されるソース線と、前記ビット線の電位を検知して前記メモリセルに保持されるデータを判定するセンスアンプ回路と、選択ワード線に書き込みパルス電圧を印加することにより前記選択ワード線に沿った1ページのメモリセルに対する書き込み動作を実行した後、前記1ページのメモリセルに対するデータ書き込みが完了したか否かを確認するベリファイ読み出し動作を実行し、データ書き込みが完了しなかった場合に前記書き込みパルス電圧を所定のステップアップ電圧の分だけ上昇させるステップアップ動作を実行する制御回路と、前記ベリファイ読み出し動作の結果前記センスアンプ回路に保持された読み出しデータに基づいて、同時に読み出された複数の前記メモリセルのうち、所定の閾値電圧に達したと判定されるメモリセルの数が所定数以上となったか否かを判定するビットスキャン回路とを備え、前記制御回路は、前記ビットスキャン回路の判定結果に基づいて、前記ステップアップ電圧の大きさを変化させるように構成されたことを特徴とする不揮発性半導体記憶装置。前記制御回路は、1つのワード線に沿った複数のメモリセルにおいて、第1の閾値電圧に達したと判定されるメモリセルの数が第1の数以上となった場合に、前記ステップアップ電圧の大きさを第1の値から、これよりも小さい第2の値に変更する第1の制御と、1つのワード線に沿った複数のメモリセルにおいて、前記第1の閾値電圧に達したと判定されるメモリセルの数が前記第1の数よりも大きい第2の数以上となった場合に、前記ステップアップ電圧の大きさを前記第2の値から前記第1の値に変更する第2の制御とを実行可能に構成されたことを特徴とする請求項1記載の不揮発性半導体記憶装置。前記第2の制御では、前記第1の閾値電圧よりも大きい第2の閾値電圧に達したと判定されるメモリセルの数が前記第1の数に達している場合には、前記ステップアップ電圧の大きさを前記第2の値から前記第1の値に変更せず、第2の値のまま維持することを特徴とする請求項2記載の不揮発性半導体記憶装置。複数の不揮発性メモリセルを直列接続してなるメモリストリングとその両端に接続された第1及び第2の選択ゲートトランジスタとを備えたNANDセルユニットの集合により構成されるブロックを複数個配列して構成されるメモリセルアレイと、第1の方向に並ぶ前記メモリセルの制御ゲートを共通接続するワード線とを備えた不揮発性半導体装置に対する書き込み方法において、選択ワード線に書き込みパルス電圧を印加することにより前記選択ワード線に沿った1ページのメモリセルに対する書き込み動作を実行するステップと、前記1ページのメモリセルに対するデータ書き込みが完了したか否かを確認するベリファイ読み出し動作を実行するステップと、前記ベリファイ読み出し動作の結果に基づいて、同時に読み出された複数の前記メモリセルのうち、所定の閾値電圧に達したと判定されるメモリセルの数が所定数以上となったか否かを判定するビットスキャン動作を実行するステップと、データ書き込みが完了しなかった場合において、前記書き込みパルス電圧を所定のステップアップ電圧の分だけ上昇させると共に、そのステップアップ電圧の大きさを、前記ビットスキャン動作の結果に従い変動させるステップとを備えたことを特徴とする書き込み方法。1つのワード線に沿った複数のメモリセルにおいて、第1の閾値電圧に達したと判定されるメモリセルの数が第1の数以上となった場合に、前記ステップアップ電圧の大きさを第1の値からこれよりも小さい第2の値に変更すると共に、1つのワード線に沿った複数のメモリセルにおいて、前記第1の閾値電圧に達したと判定されるメモリセルの数が前記第1の数よりも大きい第2の数以上となった場合に、前記ステップアップ電圧の大きさを前記第2の値から前記第1の値に変更することを特徴とする請求項4記載の書き込み方法。この発明は、データの信頼性を維持しつつ、書き込み時間を短縮することができる不揮発性半導体記憶装置を提供することを目的とする。以下に説明する実施の形態の不揮発性半導体記憶装置は、複数の不揮発性メモリセルを直列接続してなるメモリストリングとその両端に接続された第1及び第2の選択ゲートトランジスタとを備えたNANDセルユニットの集合により構成されるブロックを複数個配列して構成されるメモリセルアレイを備える。ワード線は、第1の方向に並ぶ前記メモリセルの制御ゲートを共通接続する。ビット線は、前記NANDセルユニットの第1の端部に接続され、ソース線は、前記NANDセルユニットの第2の端部に接続される。センスアンプ回路は、前記ビット線の電位を検知して前記メモリセルに保持されるデータを判定する。制御回路は、選択ワード線に書き込みパルス電圧を印加することにより前記選択ワード線に沿った1ページのメモリセルに対する書き込み動作を実行した後、前記1ページのメモリセルに対するデータ書き込みが完了したか否かを確認するベリファイ読み出し動作を実行し、データ書き込みが完了しなかった場合に前記書き込みパルス電圧を所定のステップアップ電圧の分だけ上昇させるステップアップ動作を実行する。ビットスキャン回路は、前記ベリファイ読み出し動作の結果前記センスアンプ回路に保持された読み出しデータに基づいて、同時に読み出された複数の前記メモリセルのうち、所定の閾値電圧に達したと判定されるメモリセルの数が所定数以上となったか否かを判定する。前記制御回路は、前記ビットスキャン回路の判定結果に基づいて、前記ステップアップ電圧の大きさを変化させるように構成されている。次に、本発明の実施の形態を、図面を参照して詳細に説明する。第1の実施の形態図1は、本発明の第1の実施の形態によるNAND型フラッシュメモリ21の概略構成を示している。図1に示すように、このNAND型フラッシュメモリ21は、メモリセルアレイ1と、センスアンプ回路2と、ロウデコーダ3と、ビットスキャン回路4と、入出力バッファ5と、制御回路6と、ROMフューズ7と、電圧発生回路8から構成されている。制御回路6は、メモリセルアレイ1に対する制御部を構成するものである。メモリセルアレイ1は、NANDセルユニット10がマトリクス配列されて構成されている。一つのNANDセルユニット10は、複数個直列に接続されたメモリセルMCMC0、MC1、...、MC31と、その両端に接続される選択ゲートトランジスタS1、S2により構成されている。図示は省略するが、1つのメモリセルMCは、周知の通り、ドレインとソースとの間に形成されたゲート絶縁膜トンネル絶縁膜上に電荷蓄積層としてのフローティングゲート電極を有し、そのフローティングゲート電極上に、ゲート間絶縁膜を介してコントロールゲート電極を形成したものとすることができる。コントロールゲートは、ワード線の1つに接続される。選択ゲートトランジスタS1のソースは共通ソース線CELSRCに接続され、選択ゲートトランジスタS2のドレインはビット線BLに接続されている。NANDセルユニット10内のメモリセルMCの制御ゲートはそれぞれ異なるワード線WLWL0、WL1、...、WL31に接続されている。選択ゲートトランジスタS1、S2のゲートはワード線WLと並行する選択ゲート線SG1、SG2にそれぞれ接続されている。1ワード線を共有する複数のメモリセルの集合は、1メモリセルに格納されるビット数に応じて、1ページ又は複数ページを構成する。書き込み動作はページ単位で行われる。すなわち、同時に複数のメモリセルに対してデータの書き込みが行われる。ワード線WLと選択ゲート線SG1、SG2を共有する複数のNANDセルユニット10の集合は、データ消去の単位となるブロックBLKを構成する。図1に示すように、メモリセルアレイ1には、ビット線BL方向に複数のブロックBLKBLK0、BLK1、...、BLKnが構成される。これらの複数ブロックを含むメモリセルアレイ1は、シリコン基板の一つのセルウェル内に形成されている。メモリセルアレイ1のビット線BLには、読み出しデータをセンスし書き込みデータを保持するためのページバッファを構成する、複数のセンスアンプSAを有するセンスアンプ回路2が接続されている。センスアンプ回路2はカラム選択ゲートを有する。ロウデコーダワード線ドライバを含む3は、ワード線WL及び選択ゲート線SG1、SG2を選択して駆動する。ビットスキャン回路4は、プログラム動作後のベリファイ読み出し動作の結果、センスアンプ回路2のページバッファ2に保持されている読み出しデータに基づいて、ベリファイパスビット数をカウントし、そのカウント数が所定数以上になったか否かを判定する。制御回路6は、このビットスキャン回路4の判定結果に従って、1つのワード線WLに沿ったメモリセルへの書き込みの完了を判定する。また、制御回路6は、ビットスキャン回路4の判定結果に従って、後述するように、書き込み電圧VPGMのステップアップ電圧ΔVPGMを変更する。図2は、このビットスキャン回路4の回路構成の一例を示している。ビットスキャン回路4は、センス電流パス87と、リファレンス定電流パス88と、インバータ90と、出力ノード92とを備えている。1ページ分のセンスアンプ回路2は、ベリファイ読み出し結果であるパス/フェイルデータを保持する。ここでは、ベリファイ読み出し結果がパスPASSのときにHレベルが保持され、フェイルFAILのときにLレベルが保持されるものとする。このような構成のビットスキャン回路4は、センス電流パス87を流れる電流Isumと、リファレンス定電流パス88を流れるリファレンス電流Irefとの間の差動電流を、インバータ90の出力ノード92から検出するという動作を行っている。リファレンス定電流パス88内のMOSトランジスタのゲート端子に供給される信号B0,B1は、ベリファイパスビット数と比較すべき基準値に応じて設定される信号である。図1に戻って説明を続ける。データ入出力バッファ5は、センスアンプ回路2、ビットスキャン回路4と外部入出力端子との間でデータ授受を行う他、コマンドデータやアドレスデータを受け取る。制御回路6は、書き込みイネーブル信号WEn、読み出しイネーブル信号REn、アドレスラッチイネーブル信号ALE、コマンドラッチイネーブル信号CLE等の外部制御信号を受けて、メモリ動作の全般の制御を行う。具体的に、制御回路6は、コマンドインタフェースやアドレス保持、転送回路を含み、供給されたデータが書き込みデータであるかアドレスデータであるかを判定する。この判定結果に応じて、書き込みデータはセンスアンプ回路2に転送され、アドレスデータはロウデコーダ3やセンスアンプ回路2に転送される。また制御回路6は、外部制御信号に基づいて、読み出し、書き込み消去のシーケンス制御、印加電圧の制御等を行う。電圧発生回路7は、昇圧回路11と、パルス発生回路12とを備えている。図3は、この実施の形態でのNAND型フラッシュメモリに対し2値データ記憶方式を採用する場合の閾値電圧分布の一例を示している。2値データは、負の閾値電圧分布Eと、正の閾値電圧分布Aにより規定される。データ書き込みは、選択ワード線に書き込み電圧VPGMを与え、非選択ワード線に書き込みパス電圧Vpassを与え、ビット線にVss閾値電圧を上昇させる0書き込みの場合またはVdd閾値電圧を上昇させない書き込み禁止の場合を与えて、選択的にメモリセルの浮游ゲートに電子を注入する動作として行う。即ち、0書き込みの場合、ビット線に与えたVssがNANDセルユニットのチャネルまで転送され、書き込み電圧VPGMが与えられたときにチャネルから浮游ゲートにトンネル電流による電子が注入される。1書き込み書き込み禁止の場合、NANDセルチャネルはVdd-Vt選択ゲートトランジスタの閾値電圧まで充電されてフローティングになり、書き込み電圧VPGMが与えられたときセルチャネルは容量結合によりブーストされて、電子注入が起こらない。また、データ書き込みには、書き込み電圧を書き込みサイクル毎に少しずつ高くするステップアップ書き込み方式を利用する。メモリセルの閾値電圧は、ほとんどの場合、閾値電圧分布を正規分布と見た場合、正規分布の所定の分散値の範囲内以下、これを主分布というに収まるが図3の点線で示す、一部のメモリセルの閾値電圧は、この主分布から外れた範囲に分布する。以下では、このような主分布よりも高い位置の分布を上裾部分、低い位置の分布を下裾部分という。ステップアップ電圧ΔVPGMを小さく設定すれば、この上裾部分、下裾部分の大きさを小さくすることはできるが、それはプログラム動作速度の低下を招く。このような上裾部分、下裾部分が、1つの閾値電圧分布において数程度であれば、制御回路6中の誤り訂正回路6Aによる訂正が可能である。すなわち、このような上裾部分、下裾部分を無理に主分布内に含めるようにステップアップ電圧ΔVPGMを一律に小さくする書き込みステップを採用する必要はない。そこで、本実施の形態では、そのステップアップ動作を行う場合のステップアップ電圧ΔVPGMを次のように制御する。なお、複数のメモリセルが同時に書き込まれるため、ベリファイ読み出し動作により、読み出し結果がパスしたメモリセルは書き込み禁止となり、読み出し結果がフェイルしたメモリセルはステップ動作により上昇した書き込み電圧によって再度書き込みが行われる。図4A~図4Cは、このステップアップ電圧ΔVPGMの制御を説明する概念図である。まず、閾値電圧分布EからAに向けてのプログラム動作を行う場合、ステップアップ電圧ΔVPGMを少なくとも2つの値例えばΔVPGM1、ΔVPGM2<ΔVPGM1の間で切り換える。プログラム動作開示直後は、図4Aに示すように、ステップアップ電圧ΔVPGMを、高い値ΔVPGM1に設定する。この間、ビットスキャン回路4は、ベリファイ電圧VAVに基づいて行われたベリファイ読み出し動作による読み出しデータのうち、PASSとなった数をカウントしている。そして、PASSとなった1ワード線に沿ったメモリセルMCの数が、全体のα以上となった場合、制御回路6は、ステップアップ電圧ΔVPGMを、ΔVPGM1から、これより小さいΔVPGM2に切り換える。ここでのαは、誤り訂正回路6Aにより救済可能なビット数に基づいて決定される。一例としてαは、10かそれ以下である。すなわち、制御回路6は、閾値電圧分布Aの上裾部分がベリファイ電圧VAVを超えた場合に、ステップアップ電圧ΔVPGMの値をより低い値に切り換えるものである。これにより、閾値電圧分布Aのうち、主分布を形成する部分は、小さなステップアップ電圧により書かれることになる。これにより主分布の分布幅を小さくすることができる。その後、プログラム動作が進み、図4Cに示すように、閾値電圧分布Aの90-β以上がベリファイ電圧VAVより大となったら、再びステップアップ電圧ΔVPGMをΔVPGM1に設定する。ここでのβは、例えば10かそれ以下であり、誤り訂正回路6Aによる誤り訂正が可能なビット数を考慮して設定される。すなわち、制御回路6は、閾値電圧分布Aの下裾部分以外の部分がベリファイ電圧VAVを超えた場合に、ステップアップ電圧ΔVPGMの値をより高い値に切り換えるものである。このようにして、1つの閾値電圧分布Aが書き上がるまでの間において、分布Aの上裾部分の書き上がるタイミング、主分布が書き上がるタイミングにおいて、ステップアップ電圧ΔVPGMを切り換えている。これにより、主分布の幅を狭く書き上げることができ、且つ全体としてプログラム動作の速度も高速にすることができる。一方、ΔVPGMの値が比較的高い状態で書き込まれた上裾部分、下裾部分に存在するメモリセルMCの数は、誤り訂正回路6Aにより救済可能なビット数である。これは、PASSしたメモリセルMCの数によってΔVPGMの値を決定しているからである。すなわち、NAND型フラッシュメモリに保存されたデータの信頼性を損なうことはない。次に、本実施の形態のNAND型フラッシュメモリにおけるプログラム動作を、図5のフローチャートを参照して説明する。プログラム動作の開始直後は、ステップアップ電圧ΔVPGMの初期値はΔVPGM1に設定される。そして、制御回路6は、選択ワード線WLに対し、プログラム電圧VPGMとして初期値VPGM1を印加して、選択ワード線WLに沿ったプログラム動作を実行するS11。続いて、選択ワード線WLに対し、ベリファイ電圧VAVを印加して、選択ワード線WLに沿ったメモリセルMCに対するベリファイ読み出し動作を実行するS12。このベリファイ読み出し動作の結果に従い、ビットスキャン回路4によってPASSと判定されたメモリセルのMCの数をカウントするビットスキャン動作が実行されるS14。すなわち、PASSと判定されたメモリセルの数が判定される。PASSと判定されたメモリセルMCの数がα未満である場合には、ステップアップ電圧ΔVPGMは初期値ΔVPGM1のままとされるS15。そして、プログラム電圧VPGMとして、直前の値VPGM’よりもΔVPGM1だけ大きな電圧を設定しステップアップ動作:S18、このステップアップされたプログラム電圧を用いたプログラム動作が実行される。ビットスキャン回路4においてPASSと判定されたメモリセルMCの数がα以上でありかつ100-β未満である場合には、ステップアップ電圧ΔVPGMは初期値ΔVPGM1からΔVPGM2に切り換えられS16、再びプログラム電圧VPGMとして直前の値VPGM’よりもΔVPGM2だけ大きな電圧VPGM’ΔVPGM2を印加したプログラム動作が実行されるS18。以後、ビットスキャン回路4でPASSと判定されるメモリセルMCの数が100-β以上となるまでの期間は、このステップアップ電圧ΔVPGM2が用いられる。ビットスキャン回路4においてPASSと判定されたメモリセルMCの数が100-β以上である場合には、ステップアップ電圧ΔVPGMは、再度ΔVPGM2からΔVPGM1に戻されS17、再びプログラム電圧VPGMとして直前の値VPGM’よりもΔVPGM1だけ大きな電圧VPGM’ΔVPGM1を印加したプログラム動作が実行されるS18。その後は、ステップアップ電圧ΔVPGMはΔVPGM1に固定され、ステップアップ動作、プログラム動作及びベリファイ読み出し動作が、全てのメモリセルがPASSとみなされるまで繰り返されるS19~S22。なお、ECCで救済できることを前提として、数個のメモリセルがPASSしなくても動作終了する場合もある。[第2の実施の形態]次に、第2の実施の形態に係るNAND型フラッシュメモリを、図6を参照しつつ説明する。この実施の形態のNAND型フラッシュメモリの構造は、第1の実施の形態と同様である図1。ただし、この実施の形態では、図6に示すように、4値データ記憶方式2ビット/セルを採用する場合の閾値電圧分布の一例を示している。4値データは、負の閾値電圧分布Eと、正の閾値電圧分布A~Cにより規定される。各閾値電圧分布A~Cは、ベリファイ電圧VAV、VBV、VCVを用いて書き上げられる。すなわち、プログラム電圧VPGMを用いたプログラム動作の後は、3通りのベリファイ電圧VAV、VBV、VCVを用いたベリファイ読み出し動作が実行され、その結果がセンスアンプ回路2及びビットスキャン回路4に供給される。閾値電圧分布A~Cのいずれも、主分布から外れた上裾部分、下裾部分を有している場合がある。本実施形態でも、誤り訂正回路6Aを用いて訂正できる範囲でこのような上裾部分、下裾部分の存在は許容することができる。そして、本実施形態においても、第1の実施の形態と同様に、ステップアップ動作を行う場合のステップアップ電圧ΔVPGMを制御する。図7A~図7Dは、このステップアップ電圧ΔVPGMの制御を説明する概念図である。プログラム動作開示直後は、図7Aに示すように、ステップアップ電圧ΔVPGMを、高い値ΔVPGM1に設定する。この間、ビットスキャン回路4は、ベリファイ電圧VAVに基づいて行われたベリファイ読み出し動作による読み出しデータのうち、PASSとなった数をカウントしている。そして、PASSとなった1ワード線に沿ったメモリセルMCの数が、全体のα以上となった場合、制御回路6は、ステップアップ電圧ΔVPGMを、ΔVPGM1からΔVPGM2に切り換える図7B。その後、プログラム動作が進み、図7Cに示すように、閾値電圧分布Aの100-β以上がベリファイ電圧VAVより大となった場合には、閾値電圧分布Bの書き込みの進行度合いに従って、ステップアップ電圧ΔVPGMをΔVPGM2からΔVPGM1に戻すか否かを決定する。閾値電圧分布Bの書き込みの度合いは、ビットスキャン回路4において判断する。閾値電圧分布Bの書き込みが十分進んでおらず、未だα未満しかPASSでないベリファイ電圧VBVに達していない場合には、ステップアップ電圧ΔVPGMをΔVPGM2からΔVPGM1に戻す図7C。一方、閾値電圧分布Bの書き込みが十分進んでおり、既にα以上のメモリセルがベリファイ電圧VBV以上まで書き込まれている場合には、ステップアップ電圧ΔVPGMをΔVPGM2からΔVPGM1に戻さず、ΔVPGM2によるステップアップ動作を継続する図7D。この場合に、ΔVPGM1に戻すと、閾値電圧分布Bの主分布の幅が広がってしまうからである。次に、本実施の形態のNAND型フラッシュメモリにおけるプログラム動作を、図8A、図8Bのフローチャートを参照して説明する。プログラム動作の開始直後は、ステップアップ電圧ΔVPGMの初期値はΔVPGM1に設定される。そして、制御回路6は、選択ワード線WLに対し、プログラム電圧VPGMとして初期値VPGM1を印加して、選択ワード線WLに沿ったプログラム動作を実行するS11。続いて、選択ワード線WLに対し、ベリファイ電圧VAVを印加して、選択ワード線WLに沿ったメモリセルMCに対するベリファイ読み出し動作を実行するS12。このベリファイ電圧VAVを用いたベリファイ読み出し動作の結果に従い、ビットスキャン回路4によってPASSと判定されたメモリセルのMCの数をカウントするビットスキャン動作Aレベルビットスキャンが実行されるS14。すなわち、PASSと判定されたメモリセルの数が判定される。PASSと判定されたメモリセルMCの数がα未満である場合には、ステップアップ電圧ΔVPGMは初期値ΔVPGM1のままとされるS15。そして、プログラム電圧VPGMとして、直前の値VPGM’よりもΔVPGM1だけ大きな電圧を設定しステップアップ動作:S18、このステップアップされたプログラム電圧を用いたプログラム動作が実行される。ビットスキャン回路4においてPASSと判定されたメモリセルMCの数がα以上でありかつ100-β未満である場合には、ステップアップ電圧ΔVPGMは初期値ΔVPGM1からΔVPGM2に切り換えられS16、再びプログラム電圧VPGMとして直前の値VPGM’よりもΔVPGM2だけ大きな電圧VPGM’ΔVPGM2を印加したプログラム動作が実行されるS18。以後、ビットスキャン回路4でPASSと判定されるメモリセルMCの数が100-β以上となるまでの期間は、このステップアップ電圧ΔVPGM2が用いられる。ビットスキャン回路4においてPASSと判定されたメモリセルMCの数が100-β以上である場合には、選択ワード線WLに対し、ベリファイ電圧VBVを印加して、選択ワード線WLに沿ったメモリセルMCに対するベリファイ読み出し動作を実行するS22。このベリファイ電圧VBVを用いたベリファイ読み出し動作の結果に従い、ビットスキャン回路4によってPASSと判定されたメモリセルのMCの数をカウントするビットスキャン動作Bレベルビットスキャンが実行されるS24。すなわち、PASSと判定されたメモリセルの数が判定される。PASSと判定されたメモリセルMCの数がα未満である場合には、ステップアップ電圧ΔVPGMは初期値ΔVPGM1に切り換えられるS25。そして、プログラム電圧VPGMとして、直前の値VPGM’よりもΔVPGM1だけ大きな電圧を設定しステップアップ動作:S28、このステップアップされたプログラム電圧を用いたプログラム動作が実行されるS29。その後、再度ベリファイ読み出し動作、ビットスキャン動作が行われる。ビットスキャン回路4においてPASSと判定されたメモリセルMCの数がα以上でありかつ100-β未満である場合には、ステップアップ電圧ΔVPGMはΔVPGM2とされS26、再びプログラム電圧VPGMとして直前の値VPGM’よりもΔVPGM2だけ大きな電圧VPGM’ΔVPGM2を印加したプログラム動作が実行されるS28、S29。その後、再度ベリファイ読み出し動作、ビットスキャン動作が行われる。ビットスキャン回路4においてBレベルビットスキャンによりPASSと判定されたメモリセルMCの数が100-β以上である場合には、図8Bに示すように、選択ワード線WLに対し、ベリファイ電圧VCVを印加して、選択ワード線WLに沿ったメモリセルMCに対するベリファイ読み出し動作を実行するS32。このベリファイ電圧VCVを用いたベリファイ読み出し動作の結果に従い、ビットスキャン回路4によってPASSと判定されたメモリセルのMCの数をカウントするビットスキャン動作Cレベルビットスキャンが実行されるS34。すなわち、PASSと判定されたメモリセルの数が判定される。PASSと判定されたメモリセルMCの数がα未満である場合には、ステップアップ電圧ΔVPGMは初期値ΔVPGM1に切り換えられるS35。そして、プログラム電圧VPGMとして、直前の値VPGM’よりもΔVPGM1だけ大きな電圧を設定しステップアップ動作:S38、このステップアップされたプログラム電圧を用いたプログラム動作が実行されるS39。ビットスキャン回路4においてPASSと判定されたメモリセルMCの数がα以上でありかつ100-β未満である場合には、ステップアップ電圧ΔVPGMはΔVPGM2とされS36、再びプログラム電圧VPGMとして直前の値VPGM’よりもΔVPGM2だけ大きな電圧VPGM’ΔVPGM2を印加したプログラム動作が実行されるS38、S39。ビットスキャン回路4においてCレベルビットスキャンによりPASSと判定されたメモリセルMCの数が100-β以上である場合には、ステップアップ電圧ΔVPGMはΔVPGM1に固定されS41、ステップアップ動作、プログラム動作及びベリファイ読み出し動作が、全てのメモリセルがPASSとみなされるまで繰り返されるS43~S45。このようなフローに従い、図8A~図8Dで説明した動作が得られる。このような動作の結果、プログラム電圧VPGMは、閾値電圧分布Aの書込み、Bの書込み、Cの書込みが順に完了していく過程において、例えば図9に示すように変化する。ステップアップ電圧ΔVPGMは、固定ではなく、プログラム動作の進行度合に従って変化する。以上、本発明のいくつかの実施の形態を説明したが、これらの実施の形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施の形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施の形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。例えば、上記の実施の形態では、閾値電圧分布Eから、順次閾値電圧分布A,B,Cを書き込んでいくプログラム動作を説明したが、これに限らず、例えば図10に示すように、下位ページ書き込みにおいて閾値電圧分布Eから中間分布LMへの書き込みを行い、続く上位ページ書き込みにおいて、閾値電圧分布EからAへの書き込み、中間分布LMから閾値電圧分布B,Cへの書き込みを実行することにより、閾値電圧分布A,B,Cを得る書き込み方式においても、上記実施の形態を適用可能である。また、図11に示すように、最終的なベリファイ電圧VAV,VBV,VCVよりも低いベリファイ電圧VAV’,VBV’,VCV’を用いて分布幅の広い閾値電圧分布A’,B’,C’を得るプログラム動作を行った後フォギー書き込み、その後、これらの分布A’、B’、C’から、ベリファイ電圧VAV,VBV,VCVを用いて最終的な閾値電圧分布A,B,Cを得るプログラム動作ファイン書き込みを実行することも可能でありフォギー/ファイン書き込み、このようなフォギー/ファインプログラム動作にも、上記実施の形態を適用可能である。"