"不揮発性記憶装置をプログラムする方法であって、プログラミング信号を用いて第1のグループの不揮発性記憶素子および第2のグループの不揮発性記憶素子を同時にプログラムして同時に検証することと、前記第1の状態が存在すると判断することと、前記第1の状態が存在するとの判断に応じて前記プログラミング信号を低下させることと、前記第1の状態が存在するとの判断に応じて、前記低下されたプログラミング信号を用いて前記第1のグループの不揮発性記憶素子を、前記第2のグループの不揮発性記憶素子をプログラムすることとは別にプログラムすることと、を備える方法。前記第1のグループの不揮発性記憶素子および前記第2のグループの不揮発性記憶素子は、共通の制御ラインに接続され、前記プログラミング信号を前記共通の制御ライン上で受け取る、請求項1に記載の方法。前記第1の状態が存在すると判断した後、前記第1のグループの不揮発性記憶素子を前記第2のグループの不揮発性記憶素子とともに検証することをさらに備える、請求項1または2に記載の方法。第2の状態が存在すると判断することと、前記第2の状態が存在するとの判断に応じて前記プログラミング信号を上昇させることと、前記第2の状態が存在するとの判断に応じてプログラムするために前記上昇されたプログラミング信号を用いて、前記第1のグループの不揮発性記憶素子および前記第2のグループの不揮発性記憶素子を同時にプログラムして同時に検証することと、をさらに備える、請求項1~3のいずれかに記載の方法。前記第2の状態が存在すると前記判断することは、前記第1のグループの不揮発性記憶素子の少なくとも所定量の不揮発性記憶素子を決定することを備え、1つ以上のデータ状態のサブセットにプログラムされるべき前記第2のグループの不揮発性記憶素子は、1つ以上のデータ状態の前記サブセットへのプログラムが成功している、請求項4に記載の方法。前記第2の状態が存在すると判断することは、所定量のプログラミングが実施されていると判断することを備える、請求項4に記載の方法。前記第2の状態が存在するとの判断に応じて、前記プログラミング信号は、プログラム-検証の複数回の反復にわたって上昇される、請求項1~6のいずれかに記載の方法。第1の状態が存在するとの前記判断の前に、前記プログラミング信号は特定の割合で増加している振幅を有しており、前記プログラミング信号を前記上昇させることは、前記プログラミング信号を、前記第1の状態が存在するとの判断に応じて前記プログラミング信号が低下されなかった場合おける前記プログラミング信号の振幅に基づいた値まで上昇させることを備える、請求項7に記載の方法。前記プログラミング信号は特定の割合で増加している振幅を有している前記第1の状態が存在するとの前記判断の前に、前記第2の状態が存在すると判断することと、前記第2の状態が存在するとの判断に応じて、前記プログラミング信号を、前記第1の状態が存在するとの判断に応じて前記プログラミング信号が低下されなかった場合における前記プログラミング信号の振幅に基づいた値まで上昇させることと、前記第2の状態が存在するとの判断に応じて前記上昇されたプログラミング信号を用いて、前記第1のグループの不揮発性記憶素子および前記第2のグループの不揮発性記憶素子を同時にプログラムして同時に検証することと、をさらに備える、請求項1~3のいずれかに記載の方法。前記第1の状態が存在すると前記判断することは、前記第1のグループの不揮発性記憶素子の少なくとも所定量の不揮発性記憶素子を決定することを備え、特定の組の1つ以上のデータ状態にプログラムされるべき前記第2のグループの不揮発性記憶素子は、前記特定の組の1つ以上のデータ状態へのプログラムが成功しており、前記第1のグループの不揮発性記憶素子および前記第2のグループの不揮発性記憶素子は、データ状態のグループにプログラムされており、前記特定の組の1つ以上のデータ状態は、前記消去された状態に最も近いデータ状態の前記グループのサブセットである、請求項1~9のいずれかに記載の方法。第1のグループの不揮発性記憶素子および第2のグループの不揮発性記憶素子を含む複数の不揮発性記憶素子と、前記不揮発性記憶素子と通信する1つ以上の管理回路と、を備え、前記1つ以上の管理回路は、プログラミング信号を用いて前記第1のグループの不揮発性記憶素子および前記前記第2のグループの不揮発性記憶素子を同時にプログラムして同時に検証し、第1の状態が存在すると判断する前記1つ以上の管理回路は、第1の状態が存在するとの判断に応じてプログラミング信号を低下させ、前記1つ以上の管理回路は、前記第1の状態が存在するとの判断に応じて前記低下されたプログラミング信号を用いて、第1のグループの不揮発性記憶素子を第2のグループの不揮発性記憶素子のプログラミングとは別にプログラムする、不揮発性記憶装置。前記第1のグループの不揮発性記憶素子および前記第2のグループの不揮発性記憶素子は、共通制御ラインに接続され、前記プログラミング信号を前記共通制御ライン上で受け取る、請求項11に記載の装置。前記第1のグループの不揮発性記憶素子および前記第2のグループの不揮発性記憶素子は、多状態不揮発性記憶素子である、請求項11または12に記載の装置。前記1つ以上の管理回路は、前記第1の状態が存在すると判断した後、前記第1のグループの不揮発性記憶素子を前記第2のグループの不揮発性記憶素子とともに検証する、請求項11、12、または13に記載の装置。前記1つ以上の管理回路は、第2の状態が存在すると判断し、前記1つ以上の管理回路は、第2の状態が存在するとの判断に応じて前記プログラミング信号を用いて、前記第1のグループの不揮発性記憶素子および前記第2のグループの不揮発性記憶素子を同時にプログラムして同時に検証する、請求項11~14のいずれかに記載の装置。前記1つ以上の管理回路は、前記第2の状態が存在するとの判断に応じて前記プログラミング信号を上昇させる、請求項15に記載の装置。前記1つ以上の管理回路は、前記第2の状態が存在するとの判断に応じて、プログラム-検証の複数回の反復にわたって前記プログラミング信号を上昇させる、請求項16に記載の装置。第1の状態が存在するとの前記判断の前に、前記プログラミング信号は、特定の割合で増加している振幅を有しており、前記1つ以上の管理回路は、前記プログラミング信号を、前記第1の状態が存在するとの判断に応じて前記プログラミング信号が低下されなかった場合における前記プログラミング信号の振幅に基づいた値まで上昇させる、請求項17に記載の装置。前記1つ以上の管理回路は、第2の状態が存在すると判断し、前記第1の状態が存在するとの前記判断の前に、前記プログラミング信号は特定の割合で増加している振幅を有しており、前記1つ以上の管理回路は、前記第2の状態が存在するとの判断に応じて、前記プログラミング信号を、前記第1の状態が存在するとの判断に応じて前記プログラミング信号が低下されなかった場合における前記プログラミング信号の振幅に基づいてある値まで上昇させ、前記1つ以上の管理回路は、前記第2の状態が存在するとの判断に応じて前記上昇されたプログラミング信号を用いて、前記第1のグループの不揮発性記憶素子および前記第2のグループの不揮発性記憶素子を同時にプログラムして同時に検証する、請求項11に記載の装置。プログラミング中に隣接メモリセル間での干渉の影響を減少させることができる技術について詳述する。一組の実施形態では、メモリセルは2つまたはそれ以上のグループに分割される。一例では、メモリセルは奇数および偶数のメモリセルに分割されるが、他のグループ分けも採用されうる。第1のトリガの前に、第1のグループのメモリセルは時間の経過とともに増加するプログラミング信号を用いて、第2のグループのメモリセルとともにプログラムされる。第1のトリガに引き続いて第2のトリガの前に、第1のグループのメモリセルは、第1のトリガに応じて、振幅が低下されているプログラミング信号を用いて第2のグループのメモリセルとは別にプログラムされる。第2のトリガに引き続いて、第1のグループのメモリセルは、第2のトリガに応じて上昇されているプログラミング信号で第2のグループのメモリセルとともにプログラムされる。両トリガの前後で、第1のグループのメモリセルは、第2のグループのメモリセルとともに検証される。一部の実施形態では、第2のトリガを利用せずに第1のトリガを使用してもよい。本明細書で説明されている技術は、多様なタイプの不揮発性メモリについて利用され得る。フラッシュメモリシステムの一例は、NAND構造を用いており、2つの選択ゲートの間に挟まれた複数のトランジスタの直列接続を含んでいる。直列に接続されたトランジスタと選択ゲートは、NANDストリングと呼ばれる。図1は、1つのNANDストリングを示す平面図である。図2は、その等価回路である。図1と図2に示すNANDストリングは、第1又はドレイン側選択ゲート120と第2又はソース側選択ゲート122の間に挟まれている、直列に接続されている4つのトランジスタ100、102、104及び106を有する。選択ゲート120は、ビットコンタクト126を介してNANDストリングをビットラインに接続している。選択ゲート122は、NANDストリングをソースライン128に接続している。選択ゲート120は、選択ラインSGDに適切な電圧を加えることによって制御される。選択ゲート122は、選択ラインSGSに適切な電圧を加えることによって制御される。トランジスタ100、102、104、及び106の各々は、制御ゲートとフローティングゲートを有している。例えば、トランジスタ100は、制御ゲート100CGとフローティングゲート100FGを備えている。トランジスタ102は、制御ゲート102CGとフローティングゲート102FGを備えている。トランジスタ104は、制御ゲート104CGとフローティングゲート104FGを備えている。トランジスタ106は、制御ゲート106CGとフローティングゲート106FGを備えている。制御ゲート100CGはワードラインWL3に接続されており、制御ゲート102CGはワードラインWL2に接続されており、制御ゲート104CGはワードラインWL1に接続されており、制御ゲート106CGはワードラインWL0に接続されている。図1と図2は、NANDストリング内の4個のメモリセルを示しているが、4個のトランジスタの使用は単に一例として提示されている点に留意されたい。NANDストリングは、4個よりも少ない、或いは、4個よりも多いメモリセルを有していてよい。例えば、NANDストリングによっては8個、16個、32個、64個、128個などの数のメモリセルを有していてよい。本明細書の説明は、いかなる特定個数のメモリセルを有するNANDストリングにも限定されない。NAND構造を用いたフラッシュメモリシステムの一般的なアーキテクチャは、いくつかのNANDストリングを含んでいる。各NANDストリングは、選択ラインSGSによって制御されるソース選択ゲートによってソースラインに接続されているとともに、選択ラインSGDによって制御されるドレイン選択ゲートによって関連するビットラインに接続されている。各ビットラインと、ビットラインコンタクトを介してそのビットラインに接続されている各々のNANDストリングと、は、メモリセルアレイの列を構成する。ビットラインは、複数のNANDストリングによって共有されている。典型的には、ビットラインは、ワードラインと直交する方向でNANDストリング上を通っており、1以上のセンスアンプと接続されている。NANDタイプのフラッシュメモリおよびそれらの動作に関連する例は、以下の米国特許/特許出願に記載されており、それらの引用文献は、その全体が参照により本明細書に組み込まれる。米国特許第5,570,315号、米国特許第5,774,397号、米国特許第6,046,935号、米国特許第6,456,528号、及び、米国公開公報第US2003/0002348号。本明細書における説明は、他のタイプの不揮発性記憶素子と同様に、NANDを加えた他のタイプのフラッシュメモリにも適用可能である。NANDフラッシュメモリに加えて、不揮発性記憶装置の他のタイプもまた用いることができる。例えば、不揮発性装置は、電荷を貯めるための誘電体層を用いたメモリセルによって製造されてもよい。前述した導電性のフローティングゲート素子の代わりに、誘電体層が用いられる。誘電体記憶素子を用いたメモリ装置が、NROMANovelLocalizedTrapping2BitNonvolatileMemoryCell、IEEEElectronDeviceLetters、21巻、11号、2000年11月、543から545ページに、Eitanらによって開示されている。ONO誘電層は、ソース拡散領域とドレイン拡散領域との間のチャンネルを横切って伸びている。あるデータビットの電荷がドレインに近接した誘電層内に局在し、他のデータビットの電荷がソースに近接した誘電層内に局在する。例えば、米国特許第5,768,192号および6,011,725号では、2つの酸化シリコン層に挟まれたトラップ用の誘電層を有する不揮発性メモリセルが開示されている。マルチステートのデータ記憶は、誘電層内の空間的に離れた電荷蓄積領域のバイナリ状態を、別々に読み出すことで行われる。他のタイプのメモリ素子も使用できる。図3は、複数のメモリセル例えば、NANDマルチステートフラッシュメモリなどのページまたは他のユニットに平行して読み出しおよびプログラミングを行うリード/ライト回路を有する記憶デバイス210を示している。記憶デバイス210は1以上のメモリダイまたはチップ212を備えていてもよい。メモリダイ212は、メモリセルの2次元又は3次元のアレイ200、制御回路220、及び、リード/ライト回路230Aと230Bとを有する。一実施形態では、様々な周辺回路によるメモリアレイ200へのアクセスはアレイの両側で対称的に実装されており、これにより、各側のアクセスライン及び回路の密度が半分に低減される。リード/ライト回路230A及び230Bは、複数のセンスブロック300を有しており、それらのセンスブロック300によって1ページのメモリセルを並列に読み出し又はプログラムすることができる。メモリアレイ200は、行デコーダ240Aと240Bを介したワードラインと、列デコーダ242Aと242Bを介したビットラインによってアドレス指定される。ワードラインおよびビットラインは、コントロールラインの一例である。典型的な実施形態では、コントローラ244は、1つ以上のメモリダイ212のような同じメモリデバイス210例えば、取り外し可能なストレージカード又はパッケージ内に含まれる。命令、及びデータは、ライン232を介してホストとコントローラ244との間で転送され、また、ライン234を介してコントローラと1つ以上のメモリダイ212との間で転送される。制御回路220は、リード/ライト回路230Aと230Bと協調して、メモリアレイ200に対してメモリ動作を実行する。制御回路220は、ステートマシン222、オンチップアドレスデコーダ224、及び電力制御モジュール226を有している。ステートマシン222は、メモリ動作のチップレベルの制御を提供する。オンチップアドレスデコーダ224は、ホスト又はメモリコントローラによって用いられるアドレスと、デコーダ240A、240B、242A及び242Bによって用いられるハードウェアアドレスと、の間のアドレスインタフェースを提供する。電力制御モジュール226は、メモリ動作中のワードライン及びビットラインに供給される電力及び電圧を制御する。一実施形態では、電力制御モジュール226は、供給電力より大きな電圧を作り出すことができる一つ以上のチャージポンプを有する。一実施形態では、制御回路220、電力制御回路226、デコーダ回路224、ステートマシン回路222、デコーダ回路242A、デコーダ回路242B、デコーダ回路240A、デコーダ回路240B、リード/ライト回路230A、リード/ライト回路230B、及び/又はコントローラ244の一つ又は幾つかの組合せは、1つ以上の管理回路と称されることがある。1以上の管理回路は、本明細書で記述する処理を実行する。図4は、メモリセルアレイ200の例示的な構造を示す。一実施形態においては、メモリセルのアレイは、数多くのメモリセルのブロックに分割される例えば、ブロック0-1023や、その他の量など。フラッシュEEPROMシステムに一般的であるように、ブロックは消去の単位である。すなわち、各ブロックは共に消去される最小数のメモリセルを含む。その他の消去の単位を用いた装置も使用可能である。ブロックは、ビットライン例えばビットラインBL0-BL69623およびワードラインWL0、WL1、WL2、WL3を介してアクセスされるNANDストリングのセットを備えている。図4は、直列接続されることでNANDストリングを形成している、4つのメモリセルを示している。各々のNANDストリングに4つのセルが含まれることが示されているが、4個よりも少ない、或いは、4個よりも多いメモリセルを有していてよい例えば、NANDストリングによっては、16個、32個、64個、128個やその他の数のメモリセルを有していてもよい。各NANDストリングの一端は、選択ラインSGDに接続されているドレイン選択ゲートを介して対応するビットラインに接続されており、他端は、選択ラインSGSに接続されているソース選択ゲートを介してソースラインに接続されている。各ブロックは、通常、複数のページに分割される。一実施形態においては、ページはプログラムの単位である。その他のプログラムの単位も使用可能である。通常、1つ以上のページのデータが1列のメモリセルに記憶される。例えば、データの1以上のページが、共通ワードラインに接続されたメモリセルに記憶されてもよい。1つのページは、1つ以上のセクタを記憶できる。1つのセクタは、ユーザデータとオーバヘッドデータシステムデータとも呼ばれるを含む。オーバヘッドデータは、通常、ヘッダ情報と、セクタのユーザデータから算出される誤り訂正符号ErrorCorrectionCode:ECCと、を含む。コントローラまたは他の構成要素は、データがアレイにプログラムされているときにECCを計算し、データがアレイから読み出されているときにECCのチェックも行う。代わりに、ECC及び/又は他のオーバヘッドデータは、それらが関係するユーザデータとは異なるページに記憶され、または異なるブロックに記憶される。ユーザデータのセクタは通常、磁気ディスクドライブ内のセクタサイズに相当する512バイトである。例えば8ページから32、64、128、或いはそれ以上のページまでの多数のページが1ブロックを形成する。異なるサイズのブロックと、異なるサイズのページと、異なるサイズのセクタと、を採用することもできる。図5は、センスモジュール480と呼ばれるコア部と共通部490とに分割された個々のセンスブロック300のブロック図である。一実施形態では、各ビットラインに対して個別のセンスモジュール480を用意し、一組の複数センスモジュール480に対して一つの共通部490を用意してもよい。一例として、1個のセンスブロックは、1個の共通部490と8個のセンスモジュール480とを有している。グループ内の各センスモジュールは、データバス472を介して協働する共通部と通信する。一例としては、その全体を参照することにより本明細書に組み込まれる米国特許出願公開公報2006/0140007号を参照されたい。センスモジュール480は、接続されたビットライン内の伝導電流が予め決められたレベルより高いか低いかを判定するセンス回路470を備えている。幾つかの実施形態では、センスモジュール480は、センスアンプと一般に呼ばれる回路を有する。センスモジュール480は、さらに、接続されたビットラインに電圧状態を設定するために用いられるビットラインラッチ482を有している。例えば、予め決められた状態がビットラインラッチ482内でラッチされることによって、接続されたビットラインを、プログラム禁止を指定する状態例えば、Vddに引き上げるプルする。共通部490は、プロセッサ492、データラッチ群494、及び、データラッチ群494とデータバス420との間を接続するI/Oインタフェース496を備えている。プロセッサ492は計算を実行する。例えば、その機能の1つは、センスされたメモリセル内に記憶されているデータを特定し、特定されたデータをデータラッチ群内に記憶することである。データラッチ群494は、読み出し動作において、プロセッサ492によって特定されたデータビット群を記憶するために用いられる。データラッチ群494は、プログラム動作において、データバス420から取り込んだデータビット群を記憶するためにも用いられる。取り込まれるデータビット群は、メモリ内にプログラムする予定のライトデータプログラムデータを表す。I/Oインタフェース496は、データラッチ群494とデータバス420との間のインタフェースを提供する。読み出し又はセンス中には、システムの動作はステートマシン222の制御下にあり、ステートマシン222は電力制御モジュール226を用いてアドレス指定されたセルへの種々の制御ゲート電圧の供給を制御する。メモリに用意された様々なメモリ状態に対応する様々な既定制御ゲート電圧を受けるなかで、センスモジュール480はこれらの電圧の1つに遷移し、バス472を介してセンスモジュール480からプロセッサ492に出力が提供される。その時点で、プロセッサ492は、センスモジュールの遷移イベントと、ステートマシンから入力ライン493を介して加えられた制御ゲート電圧についての情報と、によって、結果としてのメモリ状態を特定する。それから、プロセッサは、メモリ状態に対するバイナリ符号化を計算し、得られたデータビット群をデータラッチ群494に格納する。コア部の別の実施形態では、ビットラインラッチ482は、センスモジュール480の出力をラッチするラッチ、及び、上記のようなビットラインラッチの二つの役割を持つ。当然のことながら、いくつかの実装形態では複数のプロセッサ492を有することができる。一実施形態では、各プロセッサ492は出力ライン図5には示されていないを有し、各出力ラインは共にワイヤードOR配線論理和接続される。いくつかの実施形態では、出力ラインは、ワイヤードORラインに接続される前段階で反転される。この構成は、ワイヤードORの結果を受け取るステートマシンが、プログラムされる全てのビットがいつ所望のレベルに到達したかを判断できるので、プログラム処理の完了時点を検証するプログラム検証処理における素早い判定を可能にする。例えば、各ビットがその所望のレベルに到達すると、そのビット用の論理0がワイヤードORラインに送られる又はデータ1が反転される。全てのビットがデータ0を出力すると又はデータ1が反転されると、ステートマシンはプログラム処理の完了を知る。各プロセッサが8個のセンスモジュールと通信する実施形態では、いくつかの実施形態においてステートマシンはワイヤードORラインを8回読み出す必要があってもよいし、あるいは、協働するビットラインの結果を蓄積するために論理をプロセッサ492に追加し、ステートマシンがワイヤードORラインを一度だけ読み出せば良いようにしてもよい。データラッチスタック494は、センスモジュールに対応するデータラッチのスタックを有する。一実施形態では、センスモジュール480毎に3個或いは4個或いはその他の数のデータラッチが存在する。一実施形態では、ラッチは各々1ビットである。プログラム又は検証処理の間、プログラムされるべきデータはデータバス420から1組のデータラッチ494内に記憶される。検証処理の間、プロセッサ492は、所望のメモリ状態に対する検証メモリ状態を監視する。その2つが一致したとき、プロセッサ492は、プログラム禁止を指定する状態にビットラインを引き上げるプルするようにビットラインラッチ482を設定する。これにより、たとえプログラムパルスがその制御ゲートに影響しても、ビットラインに接続したメモリセルがさらにプログラムされないようにすることができる。他の実施形態では、プロセッサが最初にビットラインラッチ482をロードし、センス回路が検証処理中にそれに禁止値を設定する。いくつかの実装形態では、必須ではないがデータラッチ群はシフトレジスタとして実装され、内部に記憶されたパラレルデータをデータバス420用にシリアルデータに変換したり、その逆を行ったりする。好適な一実施形態では、m個のメモリセルのリード/ライトブロックに対応する全てのデータラッチを相互にリンクしてブロックシフトレジスタを構成し、シリアル転送によってデータのブロックを入力または出力できるようにする。特に、リード/ライトモジュールの一群のデータラッチのそれぞれが、データバスへ或いはデータバスからデータを順に転送するようにリード/ライトモジュールのバンクを構成し、一群のデータラッチがあたかもリード/ライトブロック全体のためのシフトレジスタの一部であるかのようにしてもよい。読み出し動作やセンスアンプについてのさらなる情報は次の文献に記載されている。1米国特許出願公開2004/0057287号、NonVolatileMemoryAndMethodWithReducedSourceLineBiasErrors、2004年3月25日公開、2米国特許出願公開2004/0109357号、NonVolatileMemoryAndMethodwithImprovedSensing、2004年6月10日公開、3米国特許出願公開20050169082号、4米国特許出願公開2006/0221692号、CompensatingforCouplingDuringReadOperationsofNonVolatileMemory、発明者JianChen、2005年4月5日出願、及び、5米国特許出願公開2006/0158947号、ReferenceSenseAmplifierForNonVolatileMemory、発明者SiuLungChan及びRaul-AdrianCernea、2005年12月28日出願。これら5個の特許文献の全ては、その全体を参照することにより本明細書に組み込まれる。成功した検証を含むプログラム処理の最後において、メモリセルの閾値電圧は、必要に応じて、プログラムされたメモリセルの1つ以上についての閾値電圧の分布の範囲内、或いは、消去されたメモリセルについての閾値電圧の分布の範囲内となる。各メモリセルが3ビットデータを記憶する場合における、メモリセルアレイについての閾値電圧区分或いはデータ状態の例を図6に示す。この一方で、他の実施形態では、1メモリセルあたり3ビットよりも多い、或いは3ビットよりも少ないデータを記憶するとしてもよい例えば、1メモリセルあたり4ビット以上のデータを記憶するなど。図6の例では、各々のメモリセルは3ビットのデータを保持する。よって、8つの有効なデータ状態S0-S7が存在する。一実施形態では、データ状態S0は0ボルトより低く、データ状態S1-S7は0ボルトより高い。他の実施形態として、8つのデータ状態の全てが0ボルトより高い場合や、その他のアレンジが実装可能である。一実施形態では、S0の閾値電圧分布がS1-S7の分布よりも広い。各々のデータ状態は、メモリセルに記憶された3ビットデータの固有の値に対応する。一実施形態では、S0111,S1110,S2101,S3100,S4011,S5010,S6001,S7000,である。データ状態S0-S7の他のマッピングも使用することができる。一実施形態では、1つのメモリセルに記憶されている全てのビットのデータは、同一の論理ページに記憶される。他の実施形態では、メモリセルに記憶されているデータの各ビットは、異なるページに対応する。従って、3ビットのデータを記憶している1つのメモリセルは、第1ページ、第2ページ、第3ページのデータを含んでいる。いくつかの実施形態では、同一のワードラインに接続された全てのメモリセルが、同一の3ページのデータを記憶するとされる。いくつかの実施形態では、1つのワードラインに接続されたメモリセルが異なるセットのページに分類される例えば、偶数および奇数ビットラインや、他の配列によって。いくつかの先行技術の装置では、メモリセルが消去されて状態S0となる。メモリセルは、状態S0から状態S1-S7の何れかへプログラムされてもよい。一実施形態では、フルシーケンスプログラミングとして知られている、消去された状態S0からプログラムされた状態S1-S7の何れかに直接にプログラムする方法を行うことができる。例えば、メモリセル群内のすべてのメモリセルが消去状態S0になるように、プログラム対象のメモリセル群が最初に消去されてもよい。あるメモリセルが状態S0から状態S1へプログラムされる間に、他のメモリセルが状態S0から状態S2へ、状態S0から状態S3へ、状態S0から状態S4へ、状態S0から状態S5へ、状態S0から状態S6へ、状態S0から状態S7へ、プログラムされる。フルシーケンスプログラミングは、図6の7つの曲線状の矢印を用いて図示されている。図7A-7Iは、何れの特定のメモリセルについても、前のページの隣接メモリセルに書き込みが行われた後で、その特定ページに関連する特定のメモリセルに書き込みを行うことによってフローティングゲート間の結合現象を低減する、不揮発性記憶素子のプログラムの他の処理方法を示している。図7A-Iの処理は、3つのプログラム処理ステップである。第1ステップに先立ち、状態S0の消去閾値分布にするために、メモリセルを消去する。図7A-7Iの処理では、各々のメモリセルが3ビットのデータを記憶しており、各々のビットは異なるページに属すると仮定する。データの第1ビット一番左のビットは、第1ページと関連する。真ん中のビットは、第2ページと関連する。一番右のビットは、第3ページと関連する。データとデータ状態との相関は、以下の通りである:S0=111、S1=110、S2=101、S3=100、S4=011、S5=010、S6=001、S7=000。しかしながら他の実施形態では、例えば、隣接状態間で、1ビットのみ変化するようにしたグレイコードのような他のデータコード化方式も使用可能である。図7Aに示すように第1ページにプログラムする際において、ビットをデータ1にする場合には、メモリセルは状態S0が維持される閾値電圧分布502。ビットをデータ0にする場合には、メモリセルにプログラムが行われ、状態S4となる閾値電圧分布504。隣接するメモリセルがプログラムされた後、隣接するフローティングゲート間の容量性カップリングにより、図7Bに示すように、状態S4が広くなることがある。状態S0も広くなることがあるが、S0とS1の間には十分な余裕があるため、その影響を無視できる。フローティングゲート間の結合現象についての詳細は、米国特許第5,867,429号および米国特許第6,657,891号に開示されており、両公報は全体を参照することにより本明細書に組み込まれる。第2ページをプログラムする際において図7Cを参照、メモリセルが状態S0であり第2ページのビットをデータ1にする場合には、メモリセルは状態S0が維持される。いくつかの実施形態では、第2ページのプログラム処理は閾値電圧分布501を狭めて新たなS0とすることができる。メモリセルが状態S0であり第2ページにプログラムすべきデータが0である場合には、メモリセルは状態S2へ移される閾値電圧分布506。状態S2は、Cの検証ポイント最低電圧を有する。メモリセルが状態S4でありメモリセルに書き込みすべきデータが1である場合には、メモリセルは状態S4が維持される。しかしながら図7Cに示すように、状態S4についてメモリセルを閾値電圧分布504から閾値電圧分布508へ移動することによって、状態S4は狭められる。閾値電圧分布508は、閾値電圧分布504のEと比較してEの検証ポイントを有する。メモリセルが状態S4であり第2ページにプログラムすべきデータが0である場合には、メモリセルの閾値電圧は、Gの検証ポイントを有する状態S6閾値電圧分布510へ移動される。隣接するメモリセルがプログラムされた後、隣接するフローティングゲート間の結合により、図7Dの閾値電圧分布506,508,510に示すように、状態S2,S4,S6が広くされる。時には、状態S0も広くなる場合がある。図7E,7F,7Gおよび7Hは、第3ページのプログラムを示している。プログラムを表すために1つの図を用いてもよいが、見やすくするために、処理を4つの図に示す。第2ページがプログラムされた後では、メモリセルは状態S0,S2,S4,S6の何れかとなる。図7Eは、第3ページにプログラムが行われる、状態S0のメモリセルを表している。図7Fは、第3ページにプログラムが行われる、状態S2のメモリセルを表している。図7Gは、第3ページにプログラムが行われる、状態S4のメモリセルを表している。図7Hは、第3ページにプログラムが行われる、状態S6のメモリセルを表している。図7Iは、メモリセル群に図7E,7F,7G,7Hの処理が一斉に、または連続的に実行された後における、閾値電圧分布を示している。メモリセルが状態S0であり、第3ページのデータが1である場合には、メモリセルは状態S0が維持される。第3ページのデータが0である場合には、メモリセルの閾値電圧がBの検証ポイントを有する状態S1へ上昇される図7E参照。メモリセルが状態S2であり、第3ページにプログラムされるデータが1である場合には、メモリセルは状態S2が維持される図7F参照。しかしながら幾つかのプログラムでは、閾値区分506を狭めて、Cボルトの検証ポイントを有する新たな状態S2とする。第3ページにプログラムされるデータが0である場合には、メモリセルはDボルトの検証ポイントを有する状態S3にプログラムされる。メモリセルが状態S4であり、第3ページに書き込みされるデータが1である場合には、メモリセルは状態S4が維持される図7G参照。しかしながら幾つかのプログラムでは、閾値区分508を狭めて、Eの検証ポイントを有する新たな状態S4とする。メモリセルが状態S4であり、第3ページにプログラムされるデータが0である場合には、メモリセルの閾値電圧がFの検証ポイントを有する状態S5へ上昇される。メモリセルが状態S6であり、第3ページに書き込みされるデータが1である場合には、メモリセルは状態S6が維持される図7H参照。しかしながら幾つかのプログラムでは、閾値分布510を狭めて、Gの検証ポイントを有する新たな状態S6とする。第3ページのデータが0である場合には、メモリセルの閾値電圧がHの検証ポイントを有する状態S7へプログラムされる。第3ページのプログラムが終了すると、メモリセルは図7Iに示す8つの状態のうち、何れか1つの状態となる。図8は、セットまたは複数のメモリセルのページに対するプログラム順序の一例を示す図である。このテーブルは、図4の4本のワードラインWL0、WL1、WL2およびWL3についてのプログラム順序を表している。しかしながら、このテーブルは、4本より多いまたは少ないワードラインについても適用可能である。WL0に接続されたメモリセルの第1ページがプログラムされ、続いてWL1に接続されたメモリセルの第1ページがプログラムされ、続いてWL0に接続されたメモリセルの第2ページがプログラムされ、続いてWL2に接続されたメモリセルの第1ページがプログラムされ、続いてWL1に接続されたメモリセルの第2ページがプログラムされ、などとなる。図9は、選択されたワードラインに接続されているメモリセルのプログラム処理を説明するフローチャートである。一の実施形態では、図9の処理はメモリセルのブロックをプログラムするために用いられる。図9の処理の一の実装形態では、メモリセルの劣化を均一に維持するために、メモリセルには事前プログラムが行われるステップ550。一実施形態では、メモリセルは、状態7や、ランダムパターンや、その他のパターンに事前プログラムされる。いくつかの実装形態では、事前プログラムを行う必要がない。ステップ552では、プログラムに先立って、メモリセルがブロック単位又は他の単位で消去される。一実施形態では、ソースとビットラインをフローティング状態にしておきながら、選択されたブロックのワードラインを接地し、かつ、十分な時間の間、pウェルを消去電圧例えば20ボルトにまで上昇させることによってメモリセルが消去される。容量性カップリングのため、非選択ワードライン、ビットライン、選択ライン、及び、共通ソースラインもまた、消去電圧のかなりの割合の電圧まで上昇する。そのため、選択されたメモリセルのトンネル酸化物層に強力な電場が加わり、主としてファウラ-ノルドハイムトンネル効果によってフローティングゲートの電子が基板側に放出されて、選択されたメモリセルのデータが消去される。電子がフローティングゲートからp-ウェル領域に移動するにつれて、選択されたセルの閾値電圧が低下する。消去は、メモリアレイ全体、個々のブロック、又はセルの他の単位で行うことができる。一実施形態では、メモリセルが消去された後、全ての消去済みのメモリセルが状態S0となる図6参照。ステップ554では、消去されたメモリセルの消去閾値電圧の分布を狭めるために、ソフトプログラムが実行される。いくつかのメモリセルは、消去処理の結果として必要以上に低い消去状態にあってよい。ソフトプログラムにより、より深く消去されたメモリセルの閾値電圧ほど、消去検証レベルに近づくように移動させることができる。例えば図6に示すように、ステップ554は、状態S0と関連する閾値電圧分布を狭めるステップを含むことがあり得る。ステップ556では、本明細書で述べたとおり、ブロックのメモリセルにプログラムが行われる。図9の処理は、上述した多様な回路を用いたステートマシンの指示によって実行されうる。他の実施形態では、図9の処理は、上述した多様な回路を用いたコントローラの指示によって実行されうる。図9の処理の実行後に、ブロックのメモリセルは読み出し可能となる。図10は共通ワードラインに接続されているメモリセルにプログラムを実行する際のプロセスの一実施形態を表すフローチャートである。図10のプロセスは、図9のステップ556において1回または複数回実施されうる。例えば、図10の処理は、図6のフルシーケンスプログラミングを実行するために使用することができ、その場合には図10の処理は各々のワードラインについて1回実行されうる。一実施形態では、プログラムプロセスは、ソースラインの最も近くに位置するワードラインから開始して、ビットライン側へ向かって順番に実施される。図10のプロセスは、図7A-Iのプログラム処理に対して、ワードラインのデータのページにプログラムを行うためにも使用しうる。この場合には、各々のワードラインについて図10の処理を3回行うことができる。他の変更形態もまた使用可能である。図10の処理はステートマシン222の指示によって実行される。通常、プログラム信号プログラム電圧とも呼ばれるは、プログラム動作の間に、連続するパルスとして制御ゲートに印加される。プログラムパルスの合間には、検証処理を可能とするための複数の検証パルスが存在する。多くの実装形態では、連続する各々のパルスの大きさが、所定のステップサイズで増加する。図10のステップ608では、プログラム電圧Vpgmが初期値例えば、~12―16ボルトの電圧など、その他の適切な値に初期化されると共に、ステートマシン222によって維持されるプログラムカウンタPCが1に初期化される。ステップ610において、プログラム信号Vpgmのプログラムパルスが、選択ワードラインプログラム用に選択されたワードラインに印加される。非選択ワードラインは、従来知られる昇圧方法を実行することで、1以上の昇圧電圧例えば、9ボルトまでの電圧を受ける。メモリセルがプログラムされる場合には、対応するビットラインが接地される。一方、メモリセルが現在の閾値電圧を維持する場合には、プログラムを禁止するために、対応するビットラインがVDDに接続される。昇圧方式に関するさらなる情報は、米国特許第6,859,397号、および、米国特許出願公開公報第2008/0123425号に記載されている。これらの両方の文献の内容は、その全体を参照することにより本明細書に組み込まれる。ステップ610では、選択ワードラインに接続されている全てのメモリセルが一緒にプログラムされるように、選択ワードラインに接続されている全てのメモリセルにプログラムパルスが一斉に印加される。すなわち、全てのメモリセルは、同一時間または重複した時間にプログラムされる。このようにして、選択ワードラインに接続されている全てのメモリセルは、プログラム対象から除外されない限り、一斉に閾値電圧を変更することができる。ステップ612では、適切な一組の目標レベルを使用して、選択されたメモリセルの状態が検証される。図10のステップ612は、1つ以上の検証動作を有している。一般的に、検証動作および読み出し動作の期間では、関連するメモリセルの閾値電圧がそれらのレベルに到達しているか否かを判断するために、選択されたワードラインが電圧に接続され、その電圧レベルが、各々の読み出し動作および各々の検証動作において特定される例えば、図7IのB,C,D,E,F,GおよびHを参照。ワードライン電圧を印加した後に、ワードラインに印加された電圧に応じてメモリセルがターンオンしたか否かを判定するために、メモリセルの伝導電流が測定される。所定値よりも大きい伝導電流が測定される場合には、メモリセルがターンオンしていると推定され、かつ、ワードラインに印加された電圧がメモリセルの閾値電圧よりも大きいと推定される。所定値よりも大きい伝導電流が測定されない場合には、メモリセルがターンオンしていないと推定され、かつ、ワードラインに印加された電圧がメモリセルの閾値電圧よりも大きくないと推定される。読み出し動作または検証動作において、メモリセルの伝導電流を測定するためには多くの方法がある。一例としては、センスアンプの専用キャパシタへの伝導電流の放電速度または充電速度によって、メモリセルの伝導電流を測定する。別の例としては、選択したメモリセルの伝導電流が、メモリセルを備えるNANDストリングの対応するビットラインを放電させるまたは放電させない。ビットラインが放電されたか否かを調べるために、一定期間後に、ビットラインの電圧が測定される。ここで述べる技術は、検証および読み出しについての他の周知技術と共に利用しうることに留意されたい。検証および読み出しに関する更なる情報は、その全体を参照することにより本明細書に組み込まれる下記の特許文献に開示されている。1米国特許出願公開2004/0057287号、NonVolatileMemoryAndMethodWithReducedSourceLineBiasErrors、2004年3月25日公開、2米国特許出願公開2004/0109357号、NonVolatileMemoryAndMethodwithImprovedSensing、2004年6月10日公開、3米国特許出願公開20050169082号、4米国特許出願公開2006/0221692号、CompensatingforCouplingDuringReadOperationsofNonVolatileMemory。選択されたメモリセルの閾値電圧が適切な目標レベルに達していることが検知された場合には、例えばそのメモリセルのビットライン電圧がその後のプログラムパルスの間にVddまで高められることにより、そのメモリセルは以後のプログラムから除外される。加えて、プログラミング動作の間に、パス電圧例えば、10ボルトまでの電圧が非選択ワードラインに印加される。パス電圧とされている非選択ワードラインは電圧がVddの非選択ビットラインに接続され、非選択ビットラインのチャンネルに例えば、約8ボルトの電圧を発生させる。これにより、プログラムが防止される。メモリセルをプログラミングと昇圧から除外するための他の手法も、本明細書で述べられている技術に用いることが可能である。図10へ戻り、ステップ614において、全てのメモリセルが目標閾値電圧に到達したか否かが確認される。到達している場合には、全ての選択されたメモリセルがプログラムされていると共に目標状態が検証されているため、プログラム処理が完了し成功している。ステップ616において合格ステータスが通知される。ステップ614の幾つかの実装形態では、少なくとも予め決められた数のメモリセルが適切にプログラムされたことが検証されたか否かがチェックされることに留意されたい。この予め決められた数は、全メモリセル数よりも少なくてもよく、従って、全メモリセルが適切な検証レベルに到達する前にプログラム処理が終了し得る。プログラムに成功しなかったメモリセルは、読み出し処理におけるエラー訂正によって訂正され得る。ステップ614において、全てのメモリセルが目標閾値電圧に到達しているのではないと判断された場合、プログラム処理は継続する。ステップ618では、プログラムカウンタPCがプログラム限度値PLに対してチェックされる。プログラム限度値の一例は20である。しかしながら、これ以外の値の使用も可能である。プログラムカウンタPCがプログラム限度値未満でない場合には、ステップ630にて、プログラムに成功していないメモリセルの数が既定数以下かどうかが判定される。プログラムに失敗したメモリセルの数が既定数以下の場合には、プログラム処理に合格のフラグが立てられ、合格のステータスが通知される。多くの場合、プログラムに失敗したメモリセルは、読み出し処理においてエラー訂正を使って訂正され得る。しかし、プログラムに失敗したメモリセルの数が既定数よりも多い場合には、ステップ634にて、プログラム処理に失敗したことを示すフラグが立てられ、失格ステータスが通知される。ステップ618において、プログラムカウンタPCがプログラム制限値PLよりも小さいと判断されると、プロセスはステップ619に進み、その期間にプログラムカウンタPCは1だけインクリメントされる。ステップ620において、前のプログラムパルスがすべてのビットライン関連するメモリセルの各々はその目標に達しているかそれとも消去状態に保たれているはずであるかのいずれかであるので除外されたビットライン以外のビットラインに印加されたかそれともプログラミングをまだ必要とするビットラインのサブセットに印加されただけであるかが判断される。後述するように、システムが奇数ビットラインしかプログラムしないときや、偶数ビットラインしかプログラムしないときには、特定の状況がある。システムがプログラミングを必要とするすべてのビットラインをプログラムしている場合、次のステップは622であるステップ620の同時together結果を参照。システムがプログラミングを必要とする偶数ビットラインのみまたは奇数ビットラインのみをプログラムしている場合、ステップ620の次のステップはステップ640であるステップ620の単独separate結果を参照。ステップ622において、トリガが発生しているかどうかが判断される。一実施形態では、プログラム電圧Vpgmたとえば、プログラムパルスの振幅がトリガ電圧に達するとトリガが発生する。他の実施形態では、他のトリガたとえば、時間による基準、プログラムされたビット数、パルス数、電流などが採用されうる。トリガが発生していなければ、プログラム電圧Vpgmは、ステップ624において、次の振幅にステップアップされる。たとえば、次のパルスは、前のパルスよりもあるステップサイズたとえば、0.1~0.4Vのステップサイズだけ大きい振幅を有することになる。プログラム電圧Vpgmをステップした後、プロセスはステップ610にループバックし、全ビットライン目標状態にあるために除外されたメモリセルを除くに対するプログラミングが行われるように、次のプログラムパルスステップ624において設定された新たな振幅のが選択ワードラインに印加される。上述のように、プロセスはステップ610から進む。ステップ622のトリガは、容量結合を伴う除外状態を伝逹するか別の方法で示すように設定される。一般に、隣接フローティングゲート間には容量結合がある。両方の隣接フローティングゲート第1のフローティングゲートおよび第2のフローティングゲートがプログラムされているとき、容量結合は一定かつ/または予測可能な状態にある。第1のフローティングゲートがその目標状態に達しているためにプログラミングから除外すると、その第1のフローティングゲートの電位はブースティングによって上昇することになる。第1のフローティングゲートは比較的高い電位を有するので、第2のフローティングゲートに対する容量結合は増す。比較的高い容量結合は、第2のフローティングゲートに対する電圧を増加し、第2のフローティングゲートのプログラミング速度を増す。このため、オーバープログラミングを招くおそれがある。オーバープログラミングに対するリスクは、低速プログラミング両方の隣接メモリセルがまだプログラムされているときから高速プログラミングあるメモリセルがプログラムされておりその隣接メモリセルがプログラミングを禁止されているときに遷移すると大きくなる。図11Aは、2つの隣接するフローティングゲート806および810を示している。フローティングゲート806および810の各々は、アクティブエリア804および808の各々の上方に位置している。共通ワードラインポリシリコン層802は、両方のフローティングゲートのコントロールゲートとして機能し、また、フローティングゲート間のシールド805を形成する。図11Aは、両方のフローティングゲートがプログラムされている状態を示している。そのため、アクティブエリアは0ボルトにされている。上述したように、一方のフローティングゲートがプログラムから除外されると、そのアクティブエリアは7から10ボルトの値まで昇圧される。それにより、各フローティングゲートの電位が上昇すると共に、隣接するフローティングゲートへの容量性カップリングが増大する。その結果、隣接するフローティングゲートのプログラムが速くなる。速いプログラミングは、オーバープログラミングを発生させることがある。フローティングゲート806と810の間のシールド805は、容量性カップリングを縮小させる働きをする。しかし、大きな電圧がワードラインに印加されると、ポリシリコンのシールド805が空乏化する。例えば、図11Bは、同一の2つのフローティングゲート806と810を示している。併せて、点線812が引かれたワードラインポリシリコン層802も示している。点線812の下側の領域は、空乏化されている。点線812の下側の領域が空乏化されているため、上述した容量性カップリングが十分に遮蔽されない。図11Cは、点線812の下方に空乏化された領域を有する、同一の2つのフローティングゲート806と810を示している。しかしながら、図11Cは、フローティングゲート806がプログラムから除外されている状態を示している。よって、アクティブエリア804が高電圧となることで、フローティングゲート806が高電圧となる。フローティングゲート806が高電圧となりシールド805が空乏化されるため、フローティングゲート806と810との間の容量性カップリングにより、フローティングゲート810がより高電位となり、その結果プログラムが高速化する。一実施形態では、図11Cに関して説明したように、どの程度のワードライン電圧でワードラインポリシリコン層802が空乏化してカップリングが発生するのかを突き止めるために、デバイス特性シミュレーションを含むが使用される。他の実施形態では、実際のシリコンチップをテストすることで、ワードライン電圧を測定することができる。いくつかの実施形態では、シリコンチップの全てを検査することができる。他の実施形態では、部品のサンプルを検査し、測定された電圧を部品のグループ全体に使用することもできる。空乏化が始まる電圧を決定する他の方法を使用することもできる。上述した、プログラム速度を増加させるために十分な空乏化を発生させるワードライン電圧は、トリガ電圧であって、トリガ電圧は、図10のステップ622で使用される。Vpgmのプログラムパルスの大きさが、ワードラインポリシリコン層に十分な空乏を発生させてカップリングを許容するトリガ電圧まで到達すると、トリガ条件が満たされ、処理が図10のステップ630へ進む。ワードラインポリシリコン層が空乏化しカップリングを許容する状態で、一方の隣接メモリセルが除外され、他方の隣接メモリセルがまだプログラム中である場合、即ち、プログラムの速度が上昇する可能性がある場合を、ここでは除外状態と呼ぶ。ステップ622に対するトリガの別の実施形態では、少なくとも所定量のメモリセルたとえば、奇数ワードラインおよび偶数ワードラインの両方に接続されたメモリセルが特定の1組の1つ以上のデータ状態にプログラムされるべきときに、特定の1組の1つ以上のデータ状態へのプログラムが成功している。たとえば、トリガは、状態S1にプログラムしようとするメモリセルのすべてがデータ状態S1に達することに成功していることが検証されているとき、とすることができる。別の方法では、システムは、状態S1にプログラムしようとするすべてのあるいは所定数のメモリセルであって、データ状態S1に達することに成功していることが検証されているものに対して試験することができる。所定数とは、データ状態1に達するべきメモリセルのすべてであって、エラー訂正コードまたは、他のエラー回復プロセスを用いて読出しプロセス中に訂正されうる一部の数を除くものということになる。さらに別の方法では、1つのデータ状態たとえば、データ状態S1に達するメモリセルに基づいてトリガせずに、システムはデータ状態S1、S2、およびS3最も低い3つの状態など、複数のデータ状態に達するメモリセルに基づいてトリガすることができる。他データ状態の組も採用されうる。除外状態が存在するステップ622のトリガによって伝達される十分な機会があるとき、システムは奇数ビットラインに接続されたメモリセルを偶数ビットラインに接続されたビットラインとは別にプログラムすることになる。このように、次のプログラミングパルスによってプログラムされる所与のメモリセルに対して、同じワードライン上の隣接セルは禁止されることが保証されるので、隣接セルからの結合は完全に予測可能である。両方の隣接セルが禁止され、しかも両方の隣接セルを禁止することでプログラミングが高速化されるこれはオーバープログラミングを招く可能性があることは周知であるので、システムは除外状態を補償するためにVpgmのプログラムパルスの電圧振幅を低減することになる。すなわち、Vpgmのプログラムパルスの電圧振幅を低下させることによってプログラミングが低速化され、これによってプログラミングを高速化する除外状態が補償されるはずである。図10のステップ630において、プログラミング信号たとえば、プログラムパルスの電圧振幅が低減される。一部の実施形態では、電圧振幅は0.5V低減される。他の実施形態では、電圧の低減は0.5Vと異なる場合がある。一部の実施形態では、プログラム信号の電圧振幅の低減は、製造の時点、製品設計の時点、試験の時点、またはその他の時点に設定されるパラメータに基づいている。サンプルの1組の部品が所与のプロセスまたは設計に対して製造された後、エンジニアは、除外状態がプログラミングの速度に及ぼす影響の大きさを試験してから、適切な量の電圧を選定してプログラム信号を低下させ、除外状態を防ぐことができる。適切な量の電圧を決定してプログラム信号を低下させ、除外状態を防ぐために、デバイスシミュレーションも採用されうる。ステップ632において、偶数ビットラインに接続されたメモリセルのみにプログラムするために、プログラムパルスが選択ワードラインに印加される。よって、偶数ビットラインは0ボルトとされ、奇数ビットラインはVddが印加される。ステップ626の期間では、偶数ビットラインのみがプログラムされる。ステップ632が実行された後、同一の選択ワードラインにプログラムパルスを印加するステップを含んだステップ634が実行される。ステップ634の期間では、奇数ビットラインに接続されたメモリセルのみがプログラムされる。よって、ステップ634は、奇数ビットラインに0ボルトを印加し、偶数ビットラインにVddを印加するステップを含む。従って、ステップ632と634とでは、2つの連続するプログラムパルスが、同一のワードラインによって、そのワードラインに接続された同一のメモリセルのセットに印加される。しかしながら、偶数メモリセルのみが第1のパルスの間にプログラムされステップ632、奇数メモリセルのみが第2のパルスの間にプログラムされるステップ634。従って、偶数ビットラインに接続されたメモリセル群偶数メモリセルは、奇数ビットラインに接続されたメモリセル群奇数メモリセルとは別にプログラムされる。例えば、WL2_iが選択ワードラインとされ図4参照、ステップ632においてBL0,BL2,BL4およびWL2_iに接続されたメモリセルがプログラムされ、ステップ634においてBL1,BL3,BL5およびWL2_iに接続されたメモリセルがプログラムされる。奇数メモリセルにステップ632のプログラムパルスが印加されていても、それらのメモリセルはステップ632の間はプログラムされることが抑制される。ステップ634で偶数メモリセルにプログラムパルスを印加されていても、それらのメモリセルはステップ634の間はプログラムされることが抑制される。ステップ634の後、処理はステップ612へ戻り、偶数ビットラインおよび奇数ビットラインのメモリセルは全て一緒に検証される。ただし、いくつかの実施形態では、目標に到達することでメモリセルがすでに除外されている。ステップ612以降は、上述したように処理が続行される。ステップ632と634との間では、検証動作は行われない。メモリセルのブロックブロックiが記載されている図4へ戻る。一実施形態では、ワードラインに沿ったメモリセルは、2つのグループに分割される。第1のグループは、奇数ビットライン例:BL1、BL3、BL5、に接続されている全てのメモリセルで形成される。第2のグループは、偶数ビットライン例:BL0、BL2、BL4、に接続されている全てのメモリセルで形成される。図4に示されるように、偶数ビットラインと奇数ビットラインは、交互に配置される。よって、偶数ビットラインに接続されたメモリセルのグループは、奇数ビットラインに接続されたメモリセルと交互に配置される。偶数ビットラインのみがプログラムされている場合には、奇数ビットラインに接続されている全てのメモリセルは除外される。これにより、プログラムされている何れのメモリセルにおいても、その両隣のメモリセルが除外されている状態を保証しうる。たとえカップリングを生じても、両隣が除外されていることが保証されているため、カップリングが予測可能であり一定である。その結果、オーバープログラミングの可能性が低くなる。ワードラインに接続された複数のメモリセルが、2以上のグループに分割可能とされ、奇数および偶数グループ以外の種類のグループに分類しうる。ステップ620において、プログラム-検証の前の反復が、偶数ビットラインと奇数ビットラインに対して別々のパルスを印加したと判断されると、プロセスはステップ640に進み、システムは潜在的な除外状態の補償を証明し続けるかどうかを判断する。ステップ640の一実施形態では、プログラミングパルスまたはプログラム-検証反復の数が所定数に達すると、システムは補償たとえば、奇数及び偶数のビットラインプログラミングに対する別々のパルスを終了する。たとえば、システムはPCが所定数よりも少ないかどうかを試験することができる。ステップ640の別の実施形態では、1つ以上のデータ状態である特定のセットにプログラムされるべき少なくとも所定量のメモリセルたとえば、奇数ワードラインと偶数ワードラインの両方に接続されたメモリセルが、1つ以上のデータ状態である当該特定の組へのプログラムに成功していると、システムは補償たとえば、奇数と偶数とのビットラインプログラミングに対する別々のパルスを終了する。たとえば、データ状態S6にプログラムするよう意図されているすべてまたはほとんどすべてのメモリセルがS6にあることの検証に成功しているとき、システムは補償を終了しうる。あるいは、データ状態S5およびS6にプログラムするよう意図されているすべてまたはほとんどすべてのメモリセルがそれぞれS5およびS6にあることの検証に成功しているとき、システムは補償を終了しうる。システムは、プログラムに成功しているデータ状態にプログラムするよう意図されているすべてのメモリセル、あるいはエラー訂正コードまたは、他のエラー回復プロセスを用いて読出しプロセス中に訂正されうる小さい所定数を引いたすべてを試験することができるステップ640の別の実施形態では、追加的な除外状態の可能性が低いか否かが判断されると、システムは補償たとえば、奇数及び偶数のビットラインプログラミングに対する別々のパルスを終了する。上述したように、除外状態は、あるメモリセルがプログラムされ、隣接するメモリセルがプログラムから除外され、ワードライン電圧が十分に高くなることで発生する。除外状態は、プログラムの高速化を招く。オーバープログラミングは、低速なプログラムから高速なプログラムへの移行時に発生しうる。よって一実施形態では、システムは、除外状態の発現によって低速プログラムから高速プログラムへの移行が発生する可能性があるかを確認する。システムは、新しい除外状態または追加的な除外状態の潜在的な数を確認することで、低速から高速プログラムへの移行の可能性を確認する。いくつかの実施形態では、読み出し処理において周知のエラー訂正手法を用いてエラーが訂正されるため、システムは少数のエラーを許容しうる。それゆえ、潜在的な除外状態の数が十分少ない場合には、システムはエラーの可能性を許容でき、プログラムの際にエラーを訂正する必要がない。ステップ640において、この時点で補償が終了しないと判断される場合、プロセスは先に進み、偶数ビットラインのメモリセルを奇数ビットラインのメモリセルのプログラミングとは別に、かつ、時を異にしてプログラムするステップを含む、ステップ632および634を実施する。ステップ640において、この時点で補償が終了すると判断される場合、メモリシステムは奇数および偶数のビットラインを同時にプログラムすることによってプログラミングプロセスを継続することになる。一実施形態では、奇数および偶数のビットラインを同時にプログラムするステップに切替え復帰するとき、システムはプログラミング電圧の振幅をさらに上昇させることになるステップ642。ステップ642において、プログラミング電圧の振幅を上昇させた後、プロセスはステップ610に進み、奇数および偶数のビットラインの両方のメモリセルをプログラムするために次のプログラミングパルスを印加する。一部の実施形態では、奇数および偶数ビットラインを同時にプログラムするステップに切替え復帰するときプログラミング電圧の振幅が上昇されないようにステップ642はスキップされる。ステップ642は、プログラミング電圧の振幅を上昇させるステップを含む。一実施形態では、プログラミング電圧の振幅は、プログラミングの所望速度を得るために所定の一定量上昇される。別の実施形態では、プログラミング電圧の振幅は、トリガが存在するとの判断に応じてプログラミング信号が低下されなかった場合に一定の割合で増加していたプログラミング信号の振幅に基づいてある値まで上昇されるステップ622。そして、ステップ630において、プログラミング電圧Vpgmの振幅が低下されなかった場合に、ここでは振幅がXVになるであろう。したがって、ステップ642は、Vpgmの振幅をXVに上昇させるステップを含む。一実施態様例では、プログラミング電圧Vpgmの振幅は、1ステップにおいてその目標まで上昇されるステップ642。別の実施態様では、プログラミング電圧Vpgmの振幅は、複数のステップにわたってその目標まで上昇される。たとえば、プログラミング電圧Vpgmの振幅は、複数のプログラム-検証反復のセットにわたってその目標電圧まで上昇されうるステップ610および612。ステップ640において、補償を終了することが決定される時点で、プログラミング電圧Vpgmがステップ630において低下されなかった場合よりもプログラム電圧Vpgmが0.7V低いものであるとする。この別の方法では、プログラミング電圧Vpgmは、ステップ610において次のプログラミングパルスに対して0.45V上昇可能であり、この後、ステップ610の次の反復における後続のプログラミングパルスに対してさらに0.45V上昇可能である。プログラミング電圧Vpgmは、プログラミングパルス間の0.2Vのステップに対応するために0.7Vでなく0.9V上昇される。これを達成するために、後続のステップ624は、プログラミング電圧Vpgmを0.2Vのステップではなく0.45V上昇するように修正されなければならない。さらに別の方法では、プログラミング電圧Vpgmは、2ステップ以上たとえば、3ステップ以上にわたってその目標まで上昇される。ステップ640において、新たな/追加的な除外状態の潜在的な数が小さいと判断される場合、補償は継続することになり、メモリシステムは奇数および偶数のビットラインを別にプログラムすることによってプログラミングプロセスを継続することになる。それゆえ、プロセスは、ステップ632および634を実施することによって継続することになり、これらのステップは偶数ビットラインのメモリセルを奇数ビットラインのメモリセルのプログラミングとは別にかつ時を異にしてプログラムするステップを含む。図12はプログラム電圧Vpgmの波形の一例である。図12の信号は、パルス702,704,706,708,710,712,714,716,718,720,722,724,726,728,730,732,734そして736を有している。プログラムパルス702-720は、トリガに先立って印加される。これらの各パルスの大きさは、トリガ電圧よりも小さくされている。パルス702-720は、図10のステップ610の反復の一部として印加される。パルス720を印加した後、例えば、Vpgmの大きさがトリガ電圧よりも大きくなるなどしてトリガ電圧に到達し、奇数ビットラインと分離して、偶数ビットラインのプログラムが実行されるステップ632およびステップ634。従って、図12には722および724の、振幅が同じ2つのパルスが示されている。プログラミングパルス722は、偶数ビットラインに接続されたメモリセル群をプログラムするためのパルスであるステップ632。プログラミングパルス724は、奇数ビットラインに接続されたメモリセル群をプログラムするためのパルスであるステップ634。しかしながら、722および724の両パルスは、同一の選択ワードラインに印加される。ステップ630のとおり、パルス722および724の振幅はパルス720の振幅よりも小さい。図12の例では、奇数および偶数ビットラインを別々にプログラムする処理が継続される偶数ビットラインへの第1のプログラミングと、その後の奇数ビットラインへのプログラム。例えば、互いに同一の振幅であるが、パルス722および724より振幅が大きいパルス726および728は、図10のステップ632および634の次の反復である。パルス730および732は、ステップ632および634のその次の反復である。パルス734および736は、図12の例におけるステップ632および634の最期の反復である。パルス734および736の印加後において、処理が無事に完了するように、全てのメモリセルが適切に検証されるまたは十分なメモリセルが検証される。図13は、Vpgmのプログラミングパルスの他の波形例である。図13の例は、全てのビットラインのプログラムステップ610から、偶数および奇数ビットラインの個別のプログラムステップ632および634へのプログラム処理の遷移と、その後に全てのビットラインのプログラムステップ640および642経由へ戻る遷移を含んでいる。プログラミングパルス750,752,754,756,758,760,762,764,766及び768がステップ610の反復の間に印加される。プログラミングパルス768の後に、トリガ電圧に到達し、偶数ビットラインに接続されたメモリセルをプログラミングパルス770でプログラムし、奇数ビットラインに接続されたメモリセルをプログラミングパルス772でプログラムするために、ステップ632および634の処理が行われる。図10のステップ630のため、パルス770および772の電圧振幅は、パルス768の電圧振幅よりも小さい。図13は、ステップ632および634の3回の反復を示している。ステップ632および634の2回目の反復において、プログラミングパルス774が偶数ビットラインに接続されたメモリセルのプログラミングに使用され、プログラミングパルス776が奇数ビットラインに接続されたメモリセルのプログラミングに使用される。ステップ632および634の3回目の反復において、プログラミングパルス778が偶数ビットラインに接続されたメモリセルのプログラミングに使用され、プログラミングパルス780が奇数ビットラインに接続されたメモリセルのプログラミングに使用される。ステップ634においてプログラミングパルス780が印加された後は、除外状態の発生率が低いか否かが判断される。従って、処理はステップ642を実行し、プログラム電圧Vpgmの振幅を、補償が提供されない場合の値まで再び上昇する。そして、プログラミングパルス782が、目標とする状態に到達したために除外されたメモリセルを除く全てのビットラインに接続されたメモリセルにステップ610で印加される。図10の処理の次の反復では、ステップ610において1つのプログラミングパルス784が印加される。プログラミングパルス784の印加後において、十分な数のメモリセルが検証され、プログラム処理が無事に完了したか否かが判断される。なお、破線785は、プログラミング信号Vpgmの振幅が補償前たとえば、奇数/偶数ビットラインを別々にプログラムする前に上昇していることを示し、トリガが存在するとの判断に応じてプログラミング信号が低下されなかった場合に、プログラムパルス782の振幅がプログラミング信号の振幅と等しいことを示す。上述したように、検証処理のセットが、プログラミングパルスの合間に実行される。一実施形態では、検証パルスが選択ワードラインに検証処理ごとに印加される。例えば、メモリセルが取りうる可能性のある8つのデータ状態がある場合には、7つの検証処理がある。従って、7つの検証パルスが存在する。図14は、プログラミングパルス706、708および710の例を示している図12も参照のこと。検証パルスが、プログラミングパルス706、708および710の間に印加されている。図14の検証パルスの各々は、上述したように、検証処理に関連する。図15もまた、プログラミングパルスを示していており、そのプログラミングパルス間には検証パルスが存在する。図15は、図12のプログラミングパルス722,724,726,728,730および732を示している。これらの6つのプログラミングパルスは、トリガ電圧に到達した後に印加されるプログラミングパルスに関連している。よって、奇数および偶数のメモリセルが個別にプログラムされる。上述したように、プログラミングパルス722は偶数ビットラインに接続されたメモリセルをプログラムし、プログラミングパルス724は奇数ビットラインに接続されたメモリセルをプログラムする。一実施形態では、プログラミングパルス722と724との間には、検証動作は行われない。プログラミングパルス724の後であって、次の対のパルス726および728の前に、検証動作を行うための複数の検証パルスのセットが印加される。パルス726と728との間には、検証動作は行われない。パルス728の後であって、次の対のパルス730、732の前に、対応する検証処理のセットを行うために、検証パルスのセットが印加される。図16は、プログラム時における、様々な信号の動きを示した図である。さらに具体的には、図16は、図10のステップ610632または634における1回の反復の間での動作を示している。図示されたプログラム動作は、ビットラインプリチャージフェーズ、プログラムフェーズ、および放電フェーズにグループ分けすることができる。ビットラインプリチャージフェーズの期間1では、SGSを0ボルトに維持することで、ソース選択トランジスタはターンオフされ、SGDがVSGまで高まることで、ドレイン選択トランジスタはターンオンされる。それゆえ、ビットラインがNANDストリングにアクセスすることが許可される。ビットラインプリチャージフェーズの期間2では、プログラムが禁止されたNANDストリングBLinhibitのビットライン電圧を、VDDで与えられた所定電圧まで上昇させることが許可される。プログラムが禁止されたNANDストリングのビットライン電圧がVDDまで上昇すると、期間3においてドレイン選択トランジスタのゲート電圧SGDがVDDまで低下したときに、NANDストリングがフロートする。プログラムされるNANDストリングBLpgmのビットライン電圧は積極的に0ボルトへ引き下げられる。幾つかの別の実施形態では、プログラムされるNANDストリングのビットライン電圧は、一方または両方の隣接メモリセルがプログラム禁止モードか否かに基づいて、バイアスがかけられている。バイアスに関するさらなる情報は、米国特許第7,187,585号に記載されており、この文献の内容は、その全体を参照することにより本明細書に組み込まれる。プログラムフェーズの期間4では、NANDストリングを昇圧できるように、非選択ワードラインWL_unselがVPASSにセットされる。プログラムが禁止されたNANDストリングがフロートしているため、アドレス指定されていないメモリトランジスタのコントロールゲートに印加されている高VPASSは、チャンネルおよび電荷蓄積素子の電圧を上昇させる。よって、プログラムが禁止される。VPASSは、一般的には、Vpgm例えば、~12-24ボルトに対する中間電圧例えば、~10ボルトに設定される。プログラムフェーズの期間5では、プログラミング電圧Vpgmがプログラミングパルスとして、選択ワードラインWL_selに印加される。期間5のプログラミングパルスは、図12のパルス702-736の何れか、または図13のパルス750-784の何れかに対応する。例えば、昇圧されたチャンネルおよび電荷蓄積ユニットを有する禁止されているメモリセルには、プログラムが行われない。選択ワードラインに接続された選択メモリセルが、プログラムされる。放電フェーズの期間6では、様々なコントロールラインとビットラインとが放電することが許可される。図17は、追加的に除外状態となる可能性が低いために補償を終了させるか否かを決定する処理の一実施形態のフローチャートである図10のステップ640の間で実行される。ステップ850において、同一ワードラインに沿って、各メモリセルが隣接するメモリセルと比較される。ステップ852において、システムが除外状態へ移行する可能性があるものの数Xをカウントする。2つの隣接メモリセルが両方ともまだプログラムされている場合には、隣接メモリセルの一方が除外される前に隣接メモリセルの他方が目標に到達する可能性があるため、潜在的な除外状態が存在する。従って一実施形態では、ステップ852は、まだプログラムが行われている隣接メモリセルのペアの数を数えることを含んでいる。潜在的な除外状態の数が閾値よりも大きい場合にはステップ854、追加的に除外状態となる可能性が低くないステップ858。潜在的な除外状態の数が閾値よりも大きくない場合には、追加的に除外状態となる可能性が低いステップ856。ステップ854の閾値は、エラー訂正符号あるいは他のエラー回復処理によって訂正されたビット数に基づいて設定される。例えば、一実施形態では、7ビットまでの誤ったデータデータの約0.01パーセントを訂正できるエラー訂正符号が備えられている。従って、潜在的な除外状態の数が7未満である場合には、追加的に除外状態となる可能性が低いステップ856。他の閾値を使用することもできる。他の実施形態では、ステップ850は、隣接するメモリセルと比較されるメモリセルの一部のみについて実行されうる。そして、比較結果からメモリセル全体についての推定が行われ、閾値と比較される。図18は、図17の処理を実行可能なハードウェアの一例を示すブロック図である。全メモリセルのデータラッチ494図5参照が、シフトレジスタ880へデータを供給する。一実施形態では、シフトレジスタ880は、実際のデータラッチ494を含んでいてもよい。シフトレジスタ880は、全てのビットラインの全データを保持する。データは1回につき1ビットずつシフトする。よってデータは、まず1ビットレジスタ882にシフトアウトされ、その後に1ビットレジスタ884にシフトアウトされる。レジスタ882内のデータと、レジスタ884からのデータは、NORゲート886へ送られる。NORゲート886の出力は、加算器888に送られる。加算器888の出力はステートマシン222に供給される。ステートマシン222は、潜在的な除外状態の数が閾値よりも大きくないか否かを判断する。図18の回路は、隣接するビットラインが0-0を記憶していることの発生数をカウントする。一例では、特定のメモリセルがプログラムされるべきか禁止されるべきかの指示を記憶するためにデータラッチが使用されることで、センス回路によって適切な電圧がビットラインに印加されるように構成されている。一実施形態では、それぞれのデータラッチは、ビットラインが禁止されるべき場合は1を記憶し、ビットラインがプログラムされるように設定されるべき場合には0を記憶する。反対の極性も使用可能である。従って、図18の回路は、データが0-0である隣り合うビットラインを探し、探し出した回数を加算器888を用いてカウントする。加算器888が0-0をカウントした回数が閾値よりも大きい場合には、ステートマシンは、追加的に除外状態となる可能性が低くないと結論を出す。図19は、追加的に除外状態となる可能性が低いか否かを判断する他の実施形態についての記載である図10のステップ640の間に実行される。ステップ902において、まだプログラム中のメモリセルの数がカウントされる。別の手段として、除外されたメモリセルの数がカウントされる。ステップ904において、まだプログラム中のメモリセルの数が閾値未満か否かが判断される。プログラム中のメモリセルの数が閾値未満である場合にはステップ904、追加的に除外状態となる可能性が低いステップ906。除外されたメモリセルの数が閾値未満でない場合には、追加的に除外状態となる可能性が低くないステップ908。一実施形態では、0.4だけのメモリセルがまだプログラム中の場合または99.6のメモリセルが除外されている場合に、追加的に除外状態となる可能性が低くなるように、閾値が設定される。なお、他の閾値も使用可能である。図20は、図19の処理を実行可能なハードウェアの一例を示すブロック図である。図20は、コンパレータ回路920と通信し、ビットラインの各々のグループのために備えられた各々のプロセッサ492例えば、8本のビットラインのために1つのプロセッサ492が備えられるを示している。プロセッサの各々は、各ビットラインがプログラムされるか除外されるかを指示する。コンパレータ920は、除外されたビットラインの数をカウントする回路を含んでいる。一実施形態では、上述したラッチ群からデータが供給されることで、カウントが遂行される。コンパレータ920は、閾値ステップ904参照を示すパラメータ922にアクセス可能であり、また、その閾値を除外されたビットラインの総数と比較することが可能である。コンパレータ920の出力は、ステートマシン222に送られる。図10に戻り、奇数および偶数メモリセルの同時プログラミングから、奇数および偶数メモリセルの個別のプログラミングへプログラム処理を変更するために、トリガが使用されているステップ622。一実施形態では、適切なトリガ電圧を決定するために、デバイス特性シミュレーションを含むを使用することを備えている。幾つかの実施形態では、トリガ電圧は各々の集積回路で個別に調整されてもよい。すなわち、集積回路の製造に引き続いて、各集積回路がテストされるとしてもよい。当該テストに基づき、トリガ電圧が設定または調整されうる。図21、22および23は、トリガ値の調整または設定を行う3つの実施形態を示すフローチャートである。図21-23の処理は1つのブロックで実行しうる。1つのブロックからのデータが、メモリデバイスの全てのブロックに使用されることが可能である。ある代替的手法では、多数のブロックがテストされ、その結果が全てのブロックに適用されるとすることもできる。他の代替的手法では、図21-23の処理が全てのブロックで行われ、それぞれのブロックが独自のトリガ値を有することもできる。一実施形態では、1つのブロックにおいて1つのワードラインのみがテストされるとすることができる。他の実施形態では、1本よりも多いワードラインがテストされ、その結果が平均されるかまたは一体とされてもよい。他の実装形態では、ワードライン、ワードラインのグループ、ページ、セクタ、などの他のユニットがテストのために選択されるとすることもできる。図21のステップ1002では、テスト用の特定の1ブロックまたは複数ブロックが消去される。次に、1本の選択ワードライン上の偶数セルがプログラムされる。一実施形態では、1本のワードラインのみがプログラムされる。その1本のワードラインに基づき、ブロック全体、チップ全体またはメモリシステム全体のための新たなトリガ値が決定される。他の実施形態では、多数のワードラインがプログラムされ、そのデータが平均化されるか、それぞれのワードラインが独自のトリガ値を有するとすることができる。ステップ1004では、選択ワードラインに接続されたメモリセルがプログラムされる。ステップ1004のプログラム処理は、奇数ビットラインおよび偶数ビットラインに接続されたメモリセルの全てについて、プログラムすることと、振幅が増加していくプログラミングパルス群を、それらのプログラミングパルスがVpgm_testの大きさに到達するまで印加することと、を可能にするステップを含んでいる。一実施形態では、デバイス特性から決定されるトリガ電圧を2ボルト下回るように、Vpgm_testが初期設定される。ステップ1004のプログラム処理は、ステップ620の後を除いて図10の処理に類似しており、処理はステップ624に続くステップ622、630-642はない。ステップ1004のプログラム処理の終了後、ステップ1006において、偶数ビットラインに接続されたメモリセルの閾値電圧分布の最大値および最小値が測定される。ステップ1008では、ブロックが消去される。ステップ1010では、偶数ビットラインに接続されたメモリセルが再度プログラムされる。しかしながらステップ1010では、奇数ビットラインに接続されたメモリセルは、全てのプログラミングパルスによるプログラムが禁止される。ステップ1010は、ステップ1004のように、プログラミングパルスの振幅がVpgm_testと等しくなるまで、振幅を増加させながら連続してプログラミングパルスを印加することを含んでいる。ステップ1012では、偶数ビットラインに接続されたメモリセルの閾値電圧分布が測定される。ステップ1014では、ステップ1012および1006で測定された閾値電圧分布の最大値および最小値が比較される。一実施形態では、2つの閾値電圧分布の下限が比較される。他の実施形態では、それぞれの閾値電圧分布の上限が比較される。閾値電圧分布の下限または上限間の差分値が閾値よりも大きくない場合には、Vpgm_testが所定量例えば、0.5ボルト等の値ずつ増加され、処理がステップ1002へ戻る。2つの閾値電圧分布の最下点間の差分値が閾値よりも大きい場合には、ステップ1020において、デバイス特性によって決定される値から求められるトリガ電圧は、Vpgm_testの現在の値になるように変更される。幾つかの実施形態では、サンプルのサイズが実際のワーストケースを捉えられていない点を考慮するために、マージンを取るためのオフセットをさらに追加することで、Vpgm_testがさらに変更されるとすることもできる。一実施形態では、ステップ1016の閾値は0.5ボルトに等しくされ、ステップ1004および1010でプログラミングに使用されるプログラムパルスのステップサイズは0.4ボルトとされる。図22は、トリガ電圧の決定または調整のための処理の他の実施形態である。ステップ1050では、検討中のブロックが消去される。ステップ1052において、プログラム処理の反復処理の各々においてプログラム対象に選択された奇数ビットラインに接続されたメモリセルと共に、偶数ビットラインに接続されたメモリセルが、閾値電圧が目標値のVxボルトに到達するまでプログラムされる。Vxは実験により設定しうる。Vxの一例として、3.5ボルトが挙げられる。ステップ1054において、ステップ2052の間に偶数ビットラインに接続されたメモリセルに適切にプログラムするために必要なプログラミングパルスの数が記録される。ステップ1056では、検討中のブロックが消去される。ステップ1058では、偶数ビットラインに接続されたメモリセルが、それらの閾値電圧がVxボルトに到達するまで、再度プログラムされる。ステップ1058では、奇数ビットラインに接続されたメモリセルが各サイクルにおいて常に禁止される。ステップ1060では、ステップ1058においてメモリセルをプログラムするために必要なプログラムパルスの数が記録される。ステップ1062では、各々のテストステップ1054および1060におけるパルスの数が比較される。ステップ1060で測定されたパルス数が、ステップ1054で測定されたパルス数よりも少なくなることが予測されている。パルス数における当該差分量は、上述した除外状態に関連する干渉効果の大きさを意味している。差分量が閾値よりも大きい場合には、トリガ電圧は、ステップ1058のプログラミング処理で用いられた最後のパルスの大きさに設定される。差分量が閾値よりも大きくない場合には、電圧Vxが例えば0.5ボルト分増加され、テストを繰り返すために処理がステップ1050へ戻る。一例として、ステップ1064の閾値は、1つのパルスと同等である。なお、他の閾値を使用することもできる。図23は、トリガ電圧を決定または調整するための他の実施形態である。ステップ1102において、選択された1ブロックまたは複数ブロックが消去される。ステップ1104において、偶数ビットラインに接続されたメモリセルが、それらの閾値電圧が電圧Vyに等しくなるまでプログラムされる。ステップ1104のプログラミング処理の間、奇数ビットラインに接続されたメモリセルがプログラミングのために常に選択される。ステップ1106において、偶数ビットラインに接続され、かつ、オーバープログラムされたメモリセルの数が測定される。例えば、理想的な閾値電圧分布がシミュレーションに基づいて推定され、その理想的な閾値電圧分布に対する上位基準値を決定することができる。メモリセルの閾値電圧が理想的な分布の上限値を上回る場合には、メモリセルがオーバープログラムされている。例えば図7Iを参照すると、状態S6は、下側境界Gおよび上側境界OPを備える。メモリセルがOPよりも大きな閾値電圧を有する場合には、メモリセルはオーバープログラムされている。他の実施形態では、オーバープログラミングのための比較レベルを異ならせることができる。図23に戻り、ステップ1108において、選択ワードラインにもう一つのプログラミングパルスが印加される。プログラミングパルスがステップ1108で印加される一方、奇数ビットラインに接続されている全てのメモリセルのプログラミングが禁止される。ステップ1104においてVyの閾値電圧に到達したメモリセルは、ステップ1108の期間において除外されたままとされる。ステップ1108のプログラミングパルスは、Vyの閾値電圧にまだ到達していないメモリセルのみをプログラムする。ステップ1110において、オーバープログラムされたメモリセルの数が再度測定される。ステップ1112において、ステップ1110で測定されたオーバープログラムされたセル数が、ステップ1106で測定されたオーバープログラムされたセル数と比較される。オーバープログラムされたセル数の差分量が閾値よりも大きい場合には、トリガ電圧の大きさが、ステップ1108で印加されたパルスの大きさに設定される。ステップ1114の閾値の一例として、5つのメモリセルが挙げられる。差分量が閾値ステップ1114よりも大きくない場合には、ステップ1116においてVyの電圧レベルが例えば5ボルトなどに増加され、処理がステップ1102へ戻って繰り返される。幾つかの実施形態では、環境条件又は使用条件による変化に対応するために、不揮発性記憶装置システムは、トリガ電圧に対して動的な調整を行うとすることができる。環境条件又は使用条件による変化とは、サイクルの履歴、温度等である。図24は、プログラム/消去サイクルの数に基づいてトリガ電圧を動的に変更する実施形態を示すフローチャートである。プログラム/消去サイクルは、消去処理およびプログラム処理を行うステップを含んでいる。不揮発性記憶装置システムは多数のプログラム/消去サイクルを実行するため、電荷がフローティングゲートとチャンネルとの間の誘電領域にトラップされることがある。この状態は、図11A-Cにおいて、上述した空乏領域を減少させることがある。よって、デバイスで何度もサイクルが行われると、奇数メモリセルと偶数メモリセルとを別々のプログラムするステップをプログラミング処理において遅く発生させるために、トリガ電圧を上昇させることが可能となる。図24のステップ1240では、メモリデバイスは、プログラム/消去サイクルをX回実行する。一例では、X回のプログラムサイクルは、10000回のプログラム/イレースサイクルであってもよい。なお、Xには他の値を使用しうる。X回のプログラム/イレースサイクルを実行した後、ステップ1242において、トリガ電圧が例えば0.5ボルト分上昇される。ステップ1242においてトリガ電圧が上昇された後、ステップ1244においてメモリシステムは、プログラム/消去サイクルをY回実行する。一例では、Y回のプログラム/消去サイクルは、5000回のプログラム/イレースサイクルであってもよい。ステップ1246において、トリガ電圧が例えば0.2ボルト単位で再度上昇される。ステップ1246におけるトリガ電圧の上昇後に、メモリシステムは、プログラム/消去サイクルの実行を続行するステップ1248。図24は、トリガ電圧が2回上昇されたメモリデバイスを示している。しかしながら、他の実施形態では、トリガ電圧は1回のみ上昇されてもよいし、2回よりも多い回数上昇されてもよい。XとYの異なる値は、デバイス特性または実験的手段によって決定することができる。図25は、図24の処理を実行するために使用される要素の一例を示すブロック図である。図25は、トリガパラメータを記憶しているレジスタ1282およびサイクルパラメータを記憶しているレジスタ1284と通信するステートマシン222を示している。補償回路1286もまた、レジスタ1282およびレジスタ1284と通信を行う。トリガパラメータは、当該トリガの電圧または他のトリガ電圧を指示するものである。トリガパラメータは、電圧の大きさや、パルス数等を特定しうるものである。サイクルパラメータは、実行されたプログラム/消去サイクルの数を指示することができる。サイクルパラメータの値に基づいて、適切な場合には、補償回路がトリガパラメータを更新する。例えば、図24のステップ1242および1246の一部として、補償回路1286がトリガパラメータを更新することができる。ステートマシン222は、図10のステップ622の期間において、トリガパラメータを使用することもできる。図26は、温度に基づいてトリガ電圧を動的に調整する実施形態を示すフローチャートである。ステップ1302において、メモリシステムは温度を測定する。一実施形態では、メモリシステムは温度センサを含むことができる。測定された温度に基づいて、ステップ1304において、トリガ電圧が調整される。空乏領域は低温では悪化することが予測されるため、プログラム処理においてトリガがより早く発生しうる。低温の時にはトリガ電圧を低下させることで、これに対応しうる。ステップ1302で測定された温度がプリセット値よりも低い場合には、トリガ電圧を低下させうる。ステップ1302で測定された温度がプリセット値よりも高い場合には、トリガ電圧を上昇させうる。他の実施形態では、ステートマシン222が、温度範囲とトリガ電圧とを関連付けるテーブルを記憶するとしてもよい。ステップ1302において、ステートマシン222は温度を読み出す。ステップ1304において、ステートマシン222は、温度をテーブルの手掛かりとして使用して、テーブルからトリガ値を検索する。テーブルから見つかったトリガ電圧は、プログラミング処理で使用するために、パラメータ内に記憶される。他の実施形態では、ステップ1304において、補償回路は測定された温度を読み出し、トリガ電圧を調整することもできる。ステップ1306では、システムは、ステップ1304で設定されたトリガ電圧を用いてプログラミングを実行する。一定量のプログラミングが行われた後、処理はステップ1302へ戻り、温度が再度測定され、ステップ1304において、任意でトリガ値が調整されうる。一実施形態では、ステップ1302-1306のループは、全てのプログラミング処理について実行することができる。代替的な実施形態では、処理がNサイクルごとまたはN回の期間ごとに実行されてもよい。図27は、図26の処理を実行しうる要素の一例を記載したブロック図である。図27は、トリガパラメータを記憶しているレジスタ1350と通信するステートマシン222を示している。トリガパラメータは、当該トリガの電圧または他のトリガ電圧を指示するものである。トリガパラメータは、電圧の大きさや、パルス数等を特定しうるものである。補償回路1352は、レジスタ1350および温度センサ1354と通信する。温度センサ1354は、温度の指標となる信号電圧または電流を出力する。温度センサ1354の出力に基づき、補償回路1352はトリガパラメータを更新する。例えば、補償回路1352は、図26のステップ1304の一部として、トリガパラメータを更新するとしてもよい。トリガパラメータの更新は、継続的か、一定期間ごとか、要求に応じて実行されるとしてもよい。一実施形態は、プログラミング信号を用いて第1のグループの不揮発性記憶素子と第2グループの不揮発性記憶素子とを同時にプログラムして同時に検証することと、第1の状態が存在すると判断することと、第1の状態が存在するとの判断に応じてプログラム信号を低下させることと、第1の状態が存在するとの判断に応じて低下されたプログラミング信号を用いて第1のグループの不揮発性記憶素子を第2のグループの不揮発性記憶素子のプログラミングとは別にプログラムすることとを含む。一例では、第1のグループの不揮発性記憶素子および第2のグループの不揮発性記憶素子は、共通の制御ラインに接続され、プログラミング信号を共通の制御ライン上で受け取る。共通の制御ラインの一例はワードラインである。一実施形態は、第1のグループの不揮発性記憶素子および第2のグループを含む複数の不揮発性記憶素子と、不揮発性記憶素子と通信している1つ以上複数の管理回路と、を含む。1つ以上の管理回路は、プログラミング信号を用いて、第1のグループの不揮発性記憶素子および第2のグループの不揮発性記憶素子を同時にプログラムして同時に検証する。第1の状態が存在すると判断する1つ以上の管理回路は、第1の状態が存在するとの判断に応じてプログラム信号を低下させる。1つ以上の管理回路は、第1の状態が存在するとの判断に応じて低下されたプログラム信号を用いて、第1のグループの不揮発性記憶素子を第2のグループの不揮発性記憶素子のプログラミングとは別にプログラムする。一実施形態は、不揮発性記憶装置をプログラムする方法を含む。第1のトリガの前に、方法は、第1のトリガにおける基準振幅に対して時間とともに増加するプログラミングパルスを含む共通プログラミング信号を用いて、第1のグループの不揮発性記憶素子および第2のグループの不揮発性記憶素子を同時にプログラムして、同時に検証することを含む。第1のトリガの後、方法は、基準振幅よりも振幅が低い別のプログラミングパルスを用いて、第1のグループの不揮発性記憶素子を第2のグループの不揮発性記憶素子のプログラミングとは別にプログラムすることと、第1のグループの不揮発性記憶素子を第2のグループの不揮発性記憶素子とともに検証することとを含む。上記本発明の詳細な説明は、説明と例示とを目的として提示されたものである。これは網羅的なものではなく、本発明を開示されたとおりの明確な形態に限定するものではない。上記の教示に照らして多くの改変および変形が可能である。説明した実施形態は、本発明の原理とその実用的な適用例とを最もよく説明し、当業者が様々な実施形態で、検討される特定の使用に適するように様々に修正して本発明を最もよく利用し得るように選定された。本発明の技術的範囲は、本明細書に添付された特許請求の範囲によって定まるものである。"