(57)【要約】【課題】書き込み性能を向上させることができるメモリシステム及び不揮発性半導体メモリを提供する。【解決手段】実施形態のメモリシステムは、メモリセルを含むＮＡＮＤ型フラッシュメモリ１００と、メモリセルに対する書き込み動作で用いる書き込みパラメータを記憶するメモリを有するコントローラ２００とを備える。コントローラ２００は、ＮＡＮＤ型フラッシュメモリ１００にメモリセルに対する書き込みパラメータを用いた書き込み動作を指示し、書き込み動作から得られる書き込みパラメータの検証結果をＮＡＮＤ型フラッシュメモリ１００から受け取る。コントローラ２００は、書き込みパラメータの検証結果に基づいて、前記メモリに記憶された書き込みパラメータを更新する。【選択図】図１０
2020009511.tif 000002
【特許請求の範囲】
【請求項１】
メモリセルを含む不揮発性半導体メモリと、
前記メモリセルに対する書き込み動作で用いる書き込みパラメータを記憶するメモリを有するコントローラと、
を具備し、
前記コントローラは、前記不揮発性半導体メモリに、前記メモリセルに対する前記書き込みパラメータを用いた前記書き込み動作を指示し、前記書き込み動作から得られる前記書き込みパラメータの検証結果を前記不揮発性半導体メモリから受け取り、
前記コントローラは、前記書き込みパラメータの前記検証結果に基づいて、前記メモリに記憶された前記書き込みパラメータを更新するメモリシステム。
【請求項２】
前記書き込み動作はプログラム動作とプログラムベリファイ動作とを含み、前記書き込みパラメータは書き込み電圧を含み、
前記プログラム動作は、前記メモリセルに対し前記書き込み電圧を印加して書き込みデータを書き込む動作であり、
前記プログラムベリファイ動作は、前記書き込みデータに対応した第１ベリファイ電圧を用いて、前記メモリセルが持つ閾値電圧を検証する第１ベリファイ動作と、前記第１ベリファイ電圧と異なる第２ベリファイ電圧を用いて、前記メモリセルが持つ閾値電圧を検証する第２ベリファイ動作とを有する請求項１に記載のメモリシステム。
【請求項３】
前記第２ベリファイ動作は、複数の前記第２ベリファイ電圧を用いた複数のベリファイ動作を有する請求項２に記載のメモリシステム。
【請求項４】
前記書き込みパラメータの検証結果は、前記メモリセルを含む１個以上のメモリセルのうち、閾値個数以上のメモリセルが持つ閾値電圧が前記第２ベリファイ電圧に達しているか否かの情報を有する請求項２または３に記載のメモリシステム。
【請求項５】
前記第２ベリファイ動作は、前記書き込み動作における最初のプログラムベリファイ動作で行われる請求項２乃至４のいずれかに記載のメモリシステム。
【請求項６】
前記第１ベリファイ動作は、前記メモリセルが持つ閾値電圧が前記第１ベリファイ電圧に達しているか否かを検証し、
前記書き込み動作は、前記メモリセルが持つ閾値電圧が前記第１ベリファイ電圧に達していないとき、前記プログラム動作と前記プログラムベリファイ動作とを繰り返す請求項２乃至５のいずれかに記載のメモリシステム。
【請求項７】
前記コントローラは、前記書き込みパラメータの前記検証結果に基づいて前記メモリセルにオーバープログラムが発生しているかを判定し、
前記オーバープログラムが発生していると判定したとき、オーバープログラムが発生したメモリセルに書き込まれるべきデータを取得し、前記不揮発性半導体メモリに前記取得したデータを書き込む回復処理を行う請求項１乃至６のいずれかに記載のメモリシステム。
【請求項８】
前記メモリセルが持つ閾値電圧が前記第１ベリファイ電圧に達したとき、前記第２ベリファイ動作が行われる請求項２に記載のメモリシステム。
【請求項９】
前記第２ベリファイ電圧は前記第１ベリファイ電圧より低く、
前記メモリセルが持つ閾値電圧が前記第２ベリファイ電圧に達したとき、前記第１ベリファイ動作が行われる請求項２に記載のメモリシステム。
【請求項１０】
前記書き込みパラメータの検証結果は、前記メモリセルが持つ閾値電圧が前記第１ベリファイ電圧に達するまでのプログラム動作とプログラムベリファイ動作を含むループの繰り返し回数と、前記メモリセルが持つ閾値電圧が前記第２ベリファイ電圧に達しているか否かの情報を有する請求項８に記載のメモリシステム。
【請求項１１】
前記第２ベリファイ動作は、前記メモリセルに対する書き込み動作と消去が所定回数に達したときに行われる請求項２乃至６、８、９のいずれかに記載のメモリシステム。
【請求項１２】
前記不揮発性半導体メモリは、前記メモリセルを含む複数のメモリセルを有するグループを備え、前記書き込みパラメータは、前記書き込み動作において前記グループに対して共通に用いられる請求項１乃至１１のいずれかに記載のメモリシステム。
【請求項１３】
前記書き込みパラメータは、前記コントローラが前記メモリから読み出した第１値、または前記第１値から算出した第２値である請求項１乃至１２のいずれかに記載のメモリシステム。
【請求項１４】
前記書き込み動作は、プログラム動作とプログラムベリファイ動作とを含むループを繰り返し、前記メモリセルが持つ閾値電圧が前記第１ベリファイ電圧に達していないとき、次回のループのプログラム動作で、前記書き込み電圧を第１電圧分増加して書き込みを行うステップアップ書き込みを含む請求項２に記載のメモリシステム。
【請求項１５】
メモリセルと、
前記メモリセルに対する書き込み動作で用いる書き込みパラメータを保持する第１レジスタと、
前記書き込み動作で得られた前記書き込みパラメータの検証結果を格納する第２レジスタと、
を具備し、
前記書き込み動作は、プログラム動作とプログラムベリファイ動作とを含み、
前記プログラム動作は、前記メモリセルに対し前記書き込みパラメータを用いて書き込みデータを書き込む動作であり、
前記プログラムベリファイ動作は、前記書き込みデータに対応した第１ベリファイ電圧を用いて、前記メモリセルが持つ閾値電圧を検証する第１ベリファイ動作と、前記第１ベリファイ電圧と異なる第２ベリファイ電圧を用いて、前記メモリセルが持つ閾値電圧を検証する第２ベリファイ動作とを有するメモリシステム。
【請求項１６】
メモリセルを含む不揮発性半導体メモリと、
前記メモリセルに対する書き込み動作で用いる書き込みパラメータを記憶するテーブルを有するコントローラと、
を具備し、
前記コントローラは、前記不揮発性半導体メモリに前記メモリセルに対する前記書き込みパラメータを用いた前記書き込み動作を指示し、前記書き込み動作から得られる前記書き込みパラメータの検証結果を前記不揮発性半導体メモリから受け取り、
前記コントローラは、前記書き込みパラメータの前記検証結果に基づいて前記メモリセルにオーバープログラムが発生しているかを判定し、
前記オーバープログラムが発生していると判定したとき、オーバープログラムが発生したメモリセルに書き込まれるべきデータを取得し、前記不揮発性半導体メモリに前記取得したデータを書き込む回復処理を行うメモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
実施形態は、メモリシステム及び不揮発性半導体メモリに関するものである。
【背景技術】
【０００２】
不揮発性半導体メモリとして、メモリセルが二次元あるいは三次元に配列されたＮＡＮＤ型フラッシュメモリが知られている。ＮＡＮＤ型フラッシュメモリと、ＮＡＮＤ型フラッシュメモリを制御するコントローラとにより、メモリシステムが構成されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平１０−５５６９１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
書き込み性能を向上させることができるメモリシステム及び不揮発性半導体メモリを提供する。
【課題を解決するための手段】
【０００５】
実施形態のメモリシステムは、メモリセルを含む不揮発性半導体メモリと、前記メモリセルに対する書き込み動作で用いる書き込みパラメータを記憶するメモリを有するコントローラとを具備し、前記コントローラは、前記不揮発性半導体メモリに、前記メモリセルに対する前記書き込みパラメータを用いた前記書き込み動作を指示し、前記書き込み動作から得られる前記書き込みパラメータの検証結果を前記不揮発性半導体メモリから受け取り、前記コントローラは、前記書き込みパラメータの前記検証結果に基づいて、前記メモリに記憶された前記書き込みパラメータを更新する。
【図面の簡単な説明】
【０００６】
【図１】図１は、実施形態のメモリシステムの全体構成を示すブロック図である。
【図２】図２は、実施形態におけるメモリセルアレイが含むブロックの回路図である。
【図３】図３は、ブロックの一部領域の断面図である。
【図４】図４は、メモリセルトランジスタの閾値電圧分布及びページを示す図である。
【図５】図５は、検知書き込み及び適用書き込みにおける書き込み電圧とメモリセルトランジスタの閾値電圧分布を示す図である。
【図６】図６は、実施形態におけるコントローラとＮＡＮＤ型フラッシュメモリ間で行われる書き込み動作のシーケンスを示す図である。
【図７Ａ】図７Ａは、コントローラが有するグループ定義テーブルを示す図である。
【図７Ｂ】図７Ｂは、コントローラが有する書き込みパラメータテーブルを示す図である。
【図７Ｃ】図７Ｃは、コントローラが有するサイクル定義テーブルを示す図である。
【図７Ｄ】図７Ｄは、コントローラが有するスケジュールテーブルを示す図である。
【図８】図８は、実施形態の書き込み動作を示すフローチャートである。
【図９】図９は、図８のフローチャートにおいてオーバープログラム発生と判定された場合の回復処理の動作を示すフローチャートである。
【図１０】図１０は、フィードバック付き書き込みにおけるコントローラとＮＡＮＤ型フラッシュメモリ間のインターフェースを示す図である。
【図１１】図１１は、フィードバック付き書き込みにおけるコントローラとＮＡＮＤ型フラッシュメモリ間のインターフェースを示す図である。
【図１２】図１２は、３次元ＮＡＮＤ型フラッシュメモリに２ステージプログラムによりデータを書き込む場合の書き込み順序を示す図である。
【図１３】図１３は、２ステージプログラムによるメモリセルの閾値電圧分布の推移を示す図である。
【図１４】図１４は、実施形態（第１例）のフィードバック付き書き込みのプログラム動作とプログラムベリファイ動作におけるワード線電圧を示す図である。
【図１５】図１５は、プログラム動作によって生じたメモリセルの閾値電圧分布と検証結果を示す図である。
【図１６】図１６は、フィードバック付き書き込みの検証結果とグループ代表値更新及びオーバープログラム発生との関係を示す図である。
【図１７】図１７は、実施形態（第２例）のフィードバック付き書き込みのプログラム動作とプログラムベリファイ動作におけるワード線電圧を示す図である。
【図１８】図１８は、実施形態（第３例）のフィードバック付き書き込みのプログラム動作とプログラムベリファイ動作におけるワード線電圧を示す図である。
【図１９】図１９は、実施形態（第４例）のフィードバック付き書き込みのプログラム動作とプログラムベリファイ動作におけるワード線電圧を示す図である。
【図２０】図２０は、プログラム動作後のメモリセルの閾値電圧分布を示す図である。
【図２１】図２１は、フィードバック付き書き込みの検証結果に基づいて決定されるステータス情報の一例を示す図である。
【図２２】図２２は、フィードバック付き書き込みの検証結果に基づいたグループ代表値の更新及び回復処理の有無を示す図である。
【図２３】図２３は、実施形態（第５例）のフィードバック付き書き込みのプログラム動作とプログラムベリファイ動作におけるワード線電圧を示す図である。
【図２４】図２４は、実施形態（第６例）のフィードバック付き書き込みのプログラム動作とプログラムベリファイ動作におけるワード線電圧を示す図である。
【図２５】図２５は、実施形態（第７例）のフィードバック付き書き込みのプログラム動作とプログラムベリファイ動作におけるワード線電圧を示す図である。
【図２６】図２６は、プログラム動作後のメモリセルの閾値電圧分布を示す図である。
【図２７】図２７は、実施形態（第８例）のフィードバック付き書き込みのプログラム動作とプログラムベリファイ動作におけるワード線電圧を示す図である。
【図２８】図２８は、実施形態（第９例）のフィードバック付き書き込みのプログラム動作とプログラムベリファイ動作におけるワード線電圧を示す図である。
【図２９】図２９は、実施形態の書き込み動作におけるページ書き込みのタイミングチャートである。
【図３０】図３０は、実施形態のフルシーケンスプログラムによる書き込み動作を指示するコマンドシーケンスを示す図である。
【図３１】図３１は、実施形態の２ステージプログラムによる書き込み動作を指示するコマンドシーケンスを示す図である。
【図３２】図３２は、実施形態のfoggy & fineによる書き込み動作を指示するコマンドシーケンスを示す図である。
【図３３】図３３は、ステータスリードコマンドを用いて検知書き込み及びフィードバック付き書き込みの検証結果を取得する一例を示す図である。
【図３４】図３４は、ステータスリードコマンドで出力されるステータス情報の一例を示す図である。
【図３５】図３５は、ゲットフィーチャーコマンドを用いて検知書き込み及びフィードバック付き書き込みの検証結果を取得する一例を示す図である。
【図３６】図３６は、セットフィーチャーコマンドを用いて検知書き込み及びフィードバック付き書き込みの書き込みパラメータをセットする一例を示す図である。
【発明を実施するための形態】
【０００７】
以下、図面を参照して実施形態について説明する。以下の説明において、同一の機能及び構成を有する構成要素については同一符号を付す。また、以下に示す各実施形態は、この実施形態の技術的思想を具体化するための装置や方法を例示するものであって、構成部品の材質、形状、構造、配置等を下記のものに特定するものではない。
【０００８】
各機能ブロックは、ハードウェア、コンピュータソフトウェアのいずれかまたは両者を組み合わせたものとして実現することができる。各機能ブロックが以下の例のように区別されていることは必須ではない。例えば、一部の機能が例示の機能ブロックとは別の機能ブロックによって実行されてもよい。さらに、例示の機能ブロックがさらに細かい機能サブブロックに分割されていてもよい。ここでは、不揮発性半導体メモリとして、メモリセルトランジスタが半導体基板の上方に積層された三次元積層型のＮＡＮＤ型フラッシュメモリを例に挙げて説明する。
【０００９】
１．実施形態
実施形態のメモリシステムについて説明する。以下では、不揮発性半導体メモリとして、ＮＡＮＤ型フラッシュメモリを例に挙げて説明する。
【００１０】
１．１  構成
１．１．１  メモリシステムの全体構成
まず、図１を用いて、本実施形態のメモリシステムの全体構成について説明する。図１は、本実施形態のメモリシステムの全体構成を示すブロック図である。メモリシステム１は、ＮＡＮＤ型フラッシュメモリ１００、及びコントローラ２００を備えている。ＮＡＮＤ型フラッシュメモリ１００とコントローラ２００は、例えばそれらの組み合わせにより一つの半導体装置を構成してもよく、その例としてはＳＤＴＭカードのようなメモリカードや、ＳＳＤ（solid state drive）等が挙げられる。また、コントローラ２００は、例えばＳｏＣ（system-on-a-chip）等であってもよい。
【００１１】
ＮＡＮＤ型フラッシュメモリ１００は、複数のメモリセルを備え、データを不揮発に記憶する。
【００１２】
コントローラ２００は、ＮＡＮＤバスを介してＮＡＮＤ型フラッシュメモリ１００に接続され、ホストバスを介してホストデバイス３００に接続される。コントローラ２００は、ＮＡＮＤ型フラッシュメモリ１００を制御し、またホストデバイス３００から受信した命令に応答して、ＮＡＮＤ型フラッシュメモリ１００にアクセスする。
【００１３】
ホストデバイス３００は、例えばデジタルカメラやパーソナルコンピュータ等であり、ホストバスは、例えばＳＤＴＭインターフェースに従ったバスである。ＮＡＮＤバスは、ＮＡＮＤインターフェースに従った信号の送受信を行う。ＮＡＮＤバスは、例えばチップイネーブル信号／ＣＥ、コマンドラッチイネーブル信号ＣＬＥ、アドレスラッチイネーブル信号ＡＬＥ、ライトイネーブル信号／ＷＥ、リードイネーブル信号／ＲＥ、データストローブ信号ＤＱＳ、Ｉ／Ｏ信号ＤＱｘ（ＤＱ０〜ＤＱ７）、及びレディ／ビジー信号Ｒ／Ｂを通信するバスを含む。Ｉ／Ｏ信号ＤＱｘは、コマンド、アドレス、及びデータ等を通信する。
【００１４】
１．１．２  コントローラの構成
次に、図１を用いて、コントローラ２００の構成について説明する。コントローラ２００は、ホストインターフェース（Ｉ／Ｆ）回路２１０、内蔵メモリ（ＲＡＭ）２２０、プロセッサ（ＣＰＵ）２３０、バッファメモリ２４０、ＮＡＮＤインターフェース（Ｉ／Ｆ）回路２５０、及びＥＣＣ（Error Checking and Correcting）回路２６０を備えている。
【００１５】
ホストインターフェース回路２１０は、ホストバスを介してホストデバイス３００と接続される。ホストインターフェース回路２１０は、ホストデバイス３００から受信した命令及びデータを、それぞれプロセッサ２３０及びバッファメモリ２４０に転送する。また、ホストインターフェース回路２１０は、プロセッサ２３０の命令に応答して、バッファメモリ２４０内のデータをホストデバイス３００へ転送する。
【００１６】
プロセッサ２３０は、コントローラ２００全体の動作を制御する。例えば、プロセッサ２３０は、ホストデバイス３００から書き込み命令を受信した際には、それに応答して、ＮＡＮＤインターフェース回路２５０に対して書き込み命令を発行する。読み出し及び消去の際も同様である。また、プロセッサ２３０は、ウェアレベリング等、ＮＡＮＤ型フラッシュメモリ１００を管理するための様々な処理を実行する。なお、以下で説明するコントローラ２００の動作は、プロセッサ２３０がソフトウェア（またはファームウェア）を実行することによって実現されてもよいし、またはハードウェアで実現されてもよい。
【００１７】
ＮＡＮＤインターフェース回路２５０は、ＮＡＮＤバスを介してＮＡＮＤ型フラッシュメモリ１００と接続され、ＮＡＮＤ型フラッシュメモリ１００との通信を司る。ＮＡＮＤインターフェース回路２５０は、プロセッサ２３０から受信した命令に基づき、種々の信号をＮＡＮＤ型フラッシュメモリ１００へ送信し、また種々の信号をＮＡＮＤ型フラッシュメモリ１００から受信する。
【００１８】
バッファメモリ２４０は、書き込みデータや読み出しデータを一時的に保持する。バッファメモリ２４０はＤＲＡＭやＳＲＡＭ等から構成してもよい。
【００１９】
内蔵メモリ２２０は、例えばＤＲＡＭやＳＲＡＭ等の半導体メモリであり、プロセッサ２３０の作業領域として使用される。内蔵メモリ２２０は、ＮＡＮＤ型フラッシュメモリ１００を管理するためのファームウェアや、各種の管理テーブル等を保持する。
【００２０】
ＥＣＣ回路２６０は、ＮＡＮＤ型フラッシュメモリ１００に記憶されるデータに関する誤り検出及び誤り訂正処理を行う。すなわちＥＣＣ回路２６０は、データの書き込み時には誤り訂正符号を生成して、これを書き込みデータに付与し、データの読み出し時にはこれを復号する。
【００２１】
１．１．３  ＮＡＮＤ型フラッシュメモリの構成
１．１．３．１  ＮＡＮＤ型フラッシュメモリの全体構成
次に、ＮＡＮＤ型フラッシュメモリ１００の構成について説明する。図１に示すように、ＮＡＮＤ型フラッシュメモリ１００は、メモリセルアレイ１１０、ロウデコーダ１２０、ドライバ１３０、センスアンプ１４０、アドレスレジスタ１５０、コマンドレジスタ１６０、レジスタ１７０及びシーケンサ１８０を備える。
【００２２】
メモリセルアレイ１１０は、ロウ及びカラムに対応付けられた複数の不揮発性メモリセルを含む複数のブロックＢＬＫ（ＢＬＫ０，ＢＬＫ１，ＢＬＫ２，ＢＬＫ３，…）を備えている。メモリセルアレイ１１０は、コントローラ２００から与えられたデータを記憶する。
【００２３】
ロウデコーダ１２０は、ブロックＢＬＫのいずれかを選択し、更に選択したブロックＢＬＫにおけるワード線を選択する。
【００２４】
ドライバ１３０は、選択されたブロックＢＬＫに対して、ロウデコーダ１２０を介して電圧を供給する。
【００２５】
センスアンプ１４０は、データの読み出し時には、メモリセルアレイ１１０から読み出されたデータＤＡＴをセンスし、必要な演算を行う。そして、このデータＤＡＴをコントローラ２００に出力する。データの書き込み時には、コントローラ２００から受信した書き込みデータＤＡＴを、メモリセルアレイ１１０に転送する。
【００２６】
アドレスレジスタ１５０は、コントローラ２００から受信したアドレスＡＤＤを保持する。コマンドレジスタ１６０は、コントローラ２００から受信したコマンドＣＭＤを保持する。
【００２７】
レジスタ１７０は複数のレジスタを含む。レジスタ１７０が含む複数のレジスタは、例えば書き込みパラメータ及び検証結果を記憶する。書き込みパラメータ及び検証結果については後述する。
【００２８】
シーケンサ１８０は、アドレスレジスタ１５０、コマンドレジスタ１６０及びレジスタ１７０に保持された種々の情報に基づいて、ＮＡＮＤ型フラッシュメモリ１００全体の動作を制御する。
【００２９】
１．１．３．２  ブロックＢＬＫの構成
次に、図２を用いて、上記ブロックＢＬＫの構成について説明する。図２は、メモリセルアレイ１１０が含むブロックＢＬＫの回路図である。図示するように、ブロックＢＬＫは、例えば４つのストリングユニットＳＵ（ＳＵ０〜ＳＵ３）を含む。また各々のストリングユニットＳＵは、複数のＮＡＮＤストリング１０を含む。
【００３０】
ＮＡＮＤストリング１０の各々は、例えば８個のメモリセルトランジスタ（ＭＴ０〜ＭＴ７）及び選択トランジスタＳＴ１，ＳＴ２を含む。メモリセルトランジスタ（以下、メモリセルとも記す）ＭＴは、制御ゲートと電荷蓄積層とを備え、データを不揮発に保持する。メモリセルトランジスタＭＴは、選択トランジスタＳＴ１のソースと選択トランジスタＳＴ２のドレインとの間に直列接続されている。
【００３１】
ストリングユニットＳＵ０〜ＳＵ３の各々における選択トランジスタＳＴ１のゲートは、それぞれセレクトゲート線ＳＧＤ０〜ＳＧＤ３に接続される。これに対してストリングユニットＳＵ０〜ＳＵ３の各々における選択トランジスタＳＴ２のゲートは、例えばセレクトゲート線ＳＧＳに共通接続される。選択トランジスタＳＴ２のゲートは、ストリングユニット毎に異なるセレクトゲート線ＳＧＳ０〜ＳＧＳ３に接続されてもよい。また、各々のブロックＢＬＫ内にあるメモリセルトランジスタＭＴ０〜ＭＴ７の制御ゲートは、それぞれワード線ＷＬ０〜ＷＬ７に共通接続される。
【００３２】
また、メモリセルアレイ１１０は、複数のブロックＢＬＫ間でビット線ＢＬ（ＢＬ０〜ＢＬ（Ｌ−１）、但しＬは２以上の自然数）を共通にする。各々のブロックＢＬＫ内の複数のストリングユニットＳＵにおいて、各ビット線ＢＬは、同一列にあるＮＡＮＤストリング１０の選択トランジスタＳＴ１のドレインに共通に接続される。すなわち、各ビット線ＢＬは、同一列の複数のストリングユニットＳＵ間でＮＡＮＤストリング１０を共通に接続する。更に、複数の選択トランジスタＳＴ２のソースは、ソース線ＳＬに共通に接続されている。つまり、ストリングユニットＳＵは、異なるビット線ＢＬに接続され、且つ同一のセレクトゲート線ＳＧＤに接続されたＮＡＮＤストリング１０を複数含む。
【００３３】
また、ブロックＢＬＫは、ワード線ＷＬを共通にする複数のストリングユニットＳＵを含む。
【００３４】
図３は、ブロックＢＬＫの一部領域の断面図である。図示するように、ｐ型ウェル領域２０上に、複数のＮＡＮＤストリング１０が形成されている。すなわち、ウェル領域２０上には、セレクトゲート線ＳＧＳとして機能する例えば４層の配線層２７、ワード線ＷＬ０〜ＷＬ７として機能する８層の配線層２３、及びセレクトゲート線ＳＧＤとして機能する例えば４層の配線層２５が、順次積層されている。積層された配線層間には、図示しない絶縁膜が形成されている。
【００３５】
これらの配線層２５、２３、２７を貫通してウェル領域２０に達するピラー状の導電体３１が形成されている。導電体３１の側面には、ゲート絶縁膜３０、電荷蓄積層（絶縁膜）２９、及びブロック絶縁膜２８が順次形成されている。これらによって、メモリセルトランジスタＭＴ、並びに選択トランジスタＳＴ１及びＳＴ２が形成される。導電体３１は、ＮＡＮＤストリング１０の電流経路として機能し、各トランジスタのチャネルが形成される領域となる。導電体３１の上端は、ビット線ＢＬとして機能する金属配線層３２に接続される。
【００３６】
ウェル領域２０の表面領域内には、ｎ＋型不純物拡散層３３が形成されている。拡散層３３上にはコンタクトプラグ３５が形成され、コンタクトプラグ３５は、ソース線ＳＬとして機能する金属配線層３６に接続される。さらに、ウェル領域２０の表面領域内には、ｐ＋型不純物拡散層３４が形成されている。拡散層３４上にはコンタクトプラグ３７が形成され、コンタクトプラグ３７は、ウェル配線ＣＰＷＥＬＬとして機能する金属配線層３８に接続される。ウェル配線ＣＰＷＥＬＬは、ウェル領域２０を介して導電体３１に電位を印加するための配線である。
【００３７】
以上の構成が、図３を記載した紙面に直交する方向（奥行き方向）に複数配列されており、奥行き方向に並ぶ複数のＮＡＮＤストリング１０の集合によってストリングユニットＳＵが形成される。
【００３８】
さらに、メモリセルアレイ１１０の構成についてはその他の構成であってもよい。すなわち、メモリセルアレイ１１０の構成は、例えば、“THREE DIMENSIONAL STACKED NONVOLATILE SEMICONDUCTOR MEMORY”という2009年3月19日に出願された米国特許出願12/407,403号に記載されている。また、“THREE DIMENSIONAL STACKED NONVOLATILE SEMICONDUCTOR MEMORY”という2009年3月18日に出願された米国特許出願12/406,524号、“NON-VOLATILE SEMICONDUCTOR STORAGE DEVICE AND METHOD OF MANUFACTURING THE SAME”という2010年3月25日に出願された米国特許出願12/679,991号、及び“SEMICONDUCTOR MEMORY AND METHOD FOR MANUFACTURING SAME”という2009年3月23日に出願された米国特許出願12/532,030号に記載されている。これらの特許出願は、その全体が本願明細書において参照により援用されている。
【００３９】
また、データの消去は、ブロックＢＬＫ単位、またはブロックＢＬＫよりも小さい単位で行うことができる。消去方法に関しては、例えば“NONVOLATILE SEMICONDUCTOR MEMORY DEVICE”という2011年9月18日に出願された米国特許出願13/235,389号に記載されている。また、“NON-VOLATILE SEMICONDUCTOR STORAGE DEVICE”という2010年1月27日に出願された米国特許出願12/694,690号に記載されている。さらに、“NONVOLATILE SEMICONDUCTOR MEMORY DEVICE AND DATA ERASE METHOD THEREOF”という2012年5月30日に出願された米国特許出願13/483,610号に記載されている。これらの特許出願は、その全体が本願明細書において参照により援用されている。
【００４０】
１．１．３．３  メモリセルトランジスタの閾値電圧分布
図４は、本実施形態におけるメモリセルトランジスタＭＴの取り得るデータとその閾値電圧分布を示す。ここでは、メモリセルが３ビットのデータを記憶するＴＬＣ（Triple-Level Cell）方式を有する場合について説明する。
【００４１】
図示するように、各々のメモリセルトランジスタＭＴは、その閾値電圧に応じて例えば３ビットのデータを保持可能である。この３ビットデータは、閾値電圧の低いものから順番に、例えば“１１１”、“１１０”、“１００”、“０００”、“０１０”、“０１１”、“００１”、“１０１”である。これらデータを保持するメモリセルの閾値電圧のステートは、低いものから順番に、例えば“Ｅｒ”ステート（例えば、電圧ＶＡ未満）、“Ａ”ステート（例えば、電圧ＶＡ以上、ＶＢ未満であり、ＶＡ＜ＶＢ）、“Ｂ”ステート（例えば、電圧ＶＢ以上、ＶＣ未満であり、ＶＢ＜ＶＣ）、“Ｃ”ステート（例えば、電圧ＶＣ以上、ＶＤ未満であり、ＶＣ＜ＶＤ）、“Ｄ”ステート（例えば、電圧ＶＤ以上、ＶＥ未満であり、ＶＤ＜ＶＥ）、“Ｅ”ステート（例えば、電圧ＶＥ以上、ＶＦ未満であり、ＶＥ＜ＶＦ）、“Ｆ”ステート（例えば、電圧ＶＦ以上、ＶＧ未満であり、ＶＦ＜ＶＧ）、“Ｇ”ステート（例えば電圧ＶＧ以上）である。なお、３ビットデータと閾値電圧との関係はこの関係に限定されるものではなく、両者の関係については適宜選択できる。
【００４２】
各々のメモリセルトランジスタＭＴが保持する３ビットデータを、lower（下位）ビット側からそれぞれlowerビット、middle（中位）ビット、及びupper（上位）ビットと呼ぶ。そして、同一のストリングユニットＳＵにおいて、同一のワード線に接続された複数のメモリセルを含むセルユニットＣＵの保持するlowerビットの集合をlowerページと呼び、middleビットの集合をmiddleページと呼び、upperビットの集合をupperページと呼ぶ。つまり、セルユニットＣＵには３ページが割り当てられる。よって、「ページ」とは、セルユニットＣＵによって形成されるメモリ空間の一部、と定義することもできる。
【００４３】
データの書き込み及び読み出しは、ページ単位もしくはセルユニット単位で行われる。本例の場合、１つのストリングユニットＳＵは８本のワード線を含むので、各ストリングユニットＳＵは（３×８）＝２４ページを含み、１つのブロックＢＬＫは４つのストリングユニットＳＵを含むので、各ブロックは（２４×４）＝９６ページを含む。
【００４４】
１．２  動作
１．２．１  ＮＡＮＤ型フラッシュメモリの書き込み
書き込み動作は、プログラム動作（プログラムとも称する）と、プログラムベリファイ動作とを含む。
【００４５】
プログラム動作は、メモリセルトランジスタＭＴのゲート電極に書き込み電圧（プログラム電圧とも称する）を印加することにより、メモリセルトランジスタＭＴの電荷蓄積層に電荷を注入し、メモリセルトランジスタの閾値電圧を上昇させる動作である。
【００４６】
プログラムベリファイ動作は、書き込み電圧の印加によって生じたメモリセルトランジスタの閾値電圧の変化を確認する動作である。プログラムベリファイ動作は、メモリセルトランジスタの閾値電圧が所定の閾値電圧に達したか否かを判定する。
【００４７】
プログラムベリファイによる判定において、メモリセルトランジスタの閾値電圧が所定の閾値電圧に達していない、すなわちプログラムベリファイにフェイルした場合、書き込み電圧が一定電圧ΔＶ増加されてプログラム動作が再び実行され、さらにプログラムベリファイ動作が実行される。そして、プログラム動作とプログラムベリファイ動作を１つの書き込みループとし、プログラムベリファイにパスするまで、書き込みループが繰り返される。なお、増加される電圧ΔＶは一定電圧に限らず、任意に変化する電圧でもよい。このように、書き込み電圧を増加しながら書き込み動作を行うことを、ステップアップ書き込みと称する。
【００４８】
ここで、メモリセルに書き込みを行った場合の書き込み特性について説明する。メモリセルに書き込みを行ったとき、メモリセルごとに書き込まれ易さは異なる。例えば、書き込みパラメータなどの条件を同一にして、複数のメモリセルにステップアップ書き込みを行った場合でも、書き込み完了までの書き込みループ数はメモリセルごとに異なる。書き込みパラメータは、例えば、書き込み電圧、増加電圧ΔＶ、及び書き込み電圧の印加時間等を含む。
【００４９】
また、メモリセルは消去を繰り返すごとに疲弊していき、疲弊するとメモリセルは書き込まれ易くなる。メモリセルの書き込み特性は、ページなどの書き込み単位内のメモリセル、すなわち同一のワードラインにあるメモリセル、また、消去回数の等しいメモリセルなどで似通っていることが知られている。
【００５０】
書き込みに当たって、最も書き込まれ易いメモリセルを基準として書き込みパラメータを決定すると、もっとも書き込まれ難いメモリセルに対しては書き込みループ数が増える傾向にある。その逆に、もっとも書き込まれ難いメモリセルを基準として書き込みパラメータを決定すると、書き込まれ易いメモリセルに対しては、過剰な書き込み、例えばオーバープログラムが発生し、意図したデータを書き込むことができない傾向にある。オーバープログラムとは、意図したデータの閾値電圧より高く、かつ他のデータに対応する閾値電圧、あるいはそれ以上の閾値電圧にメモリセルが書き込まれた状態をいう。
【００５１】
上述した傾向を鑑みて用いられる書き込み方式に、スマートベリファイがある。スマートベリファイは、全てのメモリセルに対して、同一の書き込みパラメータを設定するのではなく、メモリセルの書き込み特性に合わせて書き込みパラメータを動的に調整し設定することで、書き込みループ数を削減する技術である。さらに、スマートベリファイには、書き込み特性の似通ったメモリセルをグループとし、書き込みパラメータをグループ毎に管理して設定する応用例も有る。例えば、１つあるいは複数のワード線に接続された複数のメモリセルがグループとして定義される。
【００５２】
前述した応用例のスマートベリファイでは、グループに対して、オーバープログラムが発生せず、かつ、書き込みループ数の削減が期待できる書き込みパラメータを探索する検知書き込みと、検知書き込みにより探索された書き込みパラメータを用いて、書き込みループ数を削減しつつ、意図したデータを書き込む適用書き込みとを行う。適用書き込みを複数回実行する間に、適宜、検知書き込みを実行することにより、適用書き込みで用いる書き込みパラメータを適切に調整することができるが、検知書き込みに要する時間は適用書き込みより長い。一方、適用書き込みに要する時間は、検知書き込みに要する時間よりも短い。よって、スマートベリファイでは、グループ単位で検知書き込みと適用書き込みとを適時使い分けることにより、書き込み動作にかかる平均書き込み時間を削減できる。
【００５３】
書き込みパラメータは、書き込み電圧以外にも増加電圧ΔＶ及び書き込み電圧の印加時間等も含むが、以下の説明では書き込みパラメータは、プログラム動作時に使用する書き込み電圧とする。
【００５４】
１．２．２  スマートベリファイの検知書き込みと適用書き込み
次に、スマートベリファイにおける検知書き込みと適用書き込みについて詳述する。複数ビットのデータを保持可能なメモリセルトランジスタに対する書き込み方式は、１つのプログラムコマンドによりメモリセルトランジスタに複数ビットのデータを一括して書き込む方式（例えば、フルシーケンスプログラム）と、複数のプログラムコマンドによりメモリセルトランジスタに複数ビットのデータを多段階に分けて書き込む方式（例えば、２ステージプログラムあるいはfoggy & fine）とがある。２ステージプログラムは、第１ステージの書き込み動作でlowerなどの下位ページを書き、第２ステージの書き込み動作でupperとmiddleなどの上位ページを同時に書く方式である。foggy & fineは、第１ステージの書き込み動作でlower/upper/middleなどの全てのページを荒く書き、第２ステージの書き込み動作で、第１ステージの書き込み動作で書いたページを細かく書く方式である。いずれの方式においても、検知書き込みと適用書き込みを用いることができる。
【００５５】
以下に、“Ｅｒ”ステートのメモリセルを“Ａ”ステートに書き込む場合を例に挙げ、検知書き込み及び適用書き込みを説明する。
【００５６】
図５は、検知書き込み及び適用書き込みにおける書き込み電圧とメモリセルトランジスタの閾値電圧分布を示す。図５に示す上側のパルス波形は書き込み電圧の変化を示し、下側の波形は書き込み電圧が印加された時のメモリセルトランジスタの閾値電圧分布を示す。
【００５７】
書き込み電圧ＶＰＧＭがワード線に印加されてプログラム動作が行われ、続いてメモリセルトランジスタの閾値電圧を判定するプログラムベリファイ動作が行われる。プログラムベリファイがフェイルの場合、書き込み電圧ＶＰＧＭが一定電圧ΔＶだけ増加される。メモリセルトランジスタの閾値電圧分布の下裾（最も低い閾値電圧）が書き込みデータに応じたプログラムベリファイ電圧を超えると、プログラムベリファイがパスとなり、書き込み動作が終了する。なお、具体的には、プログラムベリファイによる判定には、書き込み対象のメモリセルであって、閾値電圧がプログラムベリファイ電圧未満であると判定されたメモリセルの数が閾値以下であるか否かという条件が用いられる。閾値電圧がプログラムベリファイ電圧未満であると判定されたメモリセルの数が閾値以下である（０でなくてもよい）とき、プログラムベリファイがパスと判定される。
【００５８】
図５を用いて、スマートベリファイの書き込み動作を説明する。ここでは、例えば“Ａ”ステートを書き込む場合を示す。スマートベリファイの検知書き込みでは、少なくともメモリセルの書き込み特性に応じた初回の書込み電圧が検知されるまでの間、プログラム動作、スマートベリファイ動作、及びプログラムベリファイ動作が１つの書き込みループとして実行される。すなわち、検知書き込みでは、プログラムベリファイ電圧ＡＶを用いたプログラムベリファイ動作以外に、スマートベリファイ電圧ＳＶを用いたスマートベリファイ動作が行われる。このスマートベリファイ電圧ＳＶを用いたスマートベリファイ動作では、適用書き込みで用いられる初回の書き込み電圧が検知される。
以下の説明では、スマートベリファイ電圧ＳＶがプログラムベリファイ電圧ＡＶより低い場合を説明する。
【００５９】
スマートベリファイ動作では、メモリセルトランジスタの閾値電圧分布の上裾（最も高い閾値電圧）がスマートベリファイ電圧ＳＶを超えたときの書き込み電圧が、適用書き込みで用いられる初回の書き込み電圧として記憶される。初回の書き込み電圧が記憶される条件は、書き込み対象のメモリセルであって、閾値電圧がスマートベリファイ電圧ＳＶを超えたと判定されるメモリセルの数が閾値以上になることである。初回の書き込み電圧が記憶された後、“Ａ”ステートに対する初回の書き込み電圧を検知する検知書き込みでは、スマートベリファイ動作は行われず、従来の書き込み動作と同様に、プログラム動作とプログラムベリファイ動作とを含む書き込みループが、メモリセルトランジスタの閾値電圧分布の下裾（最も低い閾値電圧）がプログラムベリファイ電圧ＡＶを超えるまで繰り返される。
【００６０】
前述したように、検知書き込みは、閾値の数のメモリセルの閾値電圧がスマートベリファイ電圧ＳＶを超えた時の書き込み電圧を検知する。適用書き込みは、検知された書き込み電圧を、適用書き込みにおける初回の書き込み電圧として用いて、プログラム動作とプログラムベリファイ動作とを繰り返す。検知書き込みで検知された書き込み電圧を適用書き込みの際の初回の書き込み電圧とすることで、適用書き込みにおける書き込みループ数を削減でき、書き込み時間を短縮することができる。
【００６１】
検知書き込みでは、予め設定された既定の書き込み電圧ＶＰＧＭ、または指定された書き込み電圧ＶＰＧＭを使用し、徐々に書き込み電圧を昇圧することによって書き込みパラメータを検知する。そのため、適用書き込みよりも、プログラムベリファイがパスするまでの書き込みループ数が多く、また書き込みループ内でスマートベリファイ電圧ＳＶによるスマートベリファイ動作も行っているため、スマートベリファイ動作を行わない書き込み動作に比べて時間がかかる。
【００６２】
しかし、検知書き込みを行わず、適用書き込みだけを行っていると、メモリセルの疲弊によって書き込み特性に変化が生じ、オーバープログラムが発生する危険性が高まる。このため、スマートベリファイでは、適用書き込みにおいて適正な書き込みパラメータ使用するために、ある一定の頻度で検知書き込みを行う必要がある。すなわち、適用書き込みでは、書き込みに要する時間を短くできるが、書き込み特性の変化と共に書き込み電圧の信頼性が低下する。このため、書き込み時間を短縮するために、適用書き込みだけを続けることはできない。検知書き込みでは、書き込み時間が長くなるが、書き込み特性の変化に追従することができるので、書き込み電圧の信頼性が高くなる。しかし、書き込み電圧の信頼性を重視して、検知書き込みを頻繁に行うと、書き込み時間を短縮することができない。したがって、適度に検知書き込みを実行しつつ、適用書き込みを実行する必要がある。
【００６３】
そこで、本実施形態では、検知書き込み及び適用書き込みと共に、フィードバック付き書き込みを行う。フィードバック付き書き込みは、検知書き込みと適用書き込みの利点を合わせ持つものであり、検知書き込みによる書き込みパラメータの適正の向上と、適用書き込みによる書き込み時間の短縮とを共に可能にする。フィードバック付き書き込みは、書き込みパラメータが適正であるか否かを検知書き込みに比べて短時間で検証し、その検証結果に基づいて書き込みパラメータを調整する書き込み方式である。
【００６４】
１．２．３  実施形態の書き込み動作
ここで説明する書き込み動作では、検知書き込み、フィードバック付き書き込み、及び適用書き込みが実行される例を述べるが、書き込み動作においてフィードバック付き書き込みだけを実行することも可能である。
【００６５】
１．２．３．１  コントローラとＮＡＮＤ型フラッシュメモリ間のインターフェース
次に、本実施形態の書き込み動作におけるコントローラ２００とＮＡＮＤ型フラッシュメモリ１００間のインターフェースについて説明する。図６は、コントローラ２００とＮＡＮＤ型フラッシュメモリ１００間で行われる書き込み動作のシーケンスを示す図である。
【００６６】
ＮＡＮＤ型フラッシュメモリ１００はレジスタ１７０を有する。レジスタ１７０は、書き込みパラメータが設定される第１レジスタ１７０Ａ、及びフィードバック付き書き込みによる検証結果及び検知書き込みによる検知結果を格納する第２レジスタ１７０Ｂを有する。書き込みパラメータは、検知書き込みによって取得される、あるいはフィードバック付き書き込みによって変更される。
【００６７】
また、例えばメモリセルアレイ１１０内のメモリセル１１０Ａには、プリセット値が記憶されている。プリセット値は、ＮＡＮＤ型フラッシュメモリ１００のＲＯＭ領域に出荷前に記憶された情報であり、例えば検知書き込みで用いる既定の書き込み電圧等を含む。
【００６８】
コントローラ２００は、グループ代表値に関する情報を管理するグループ代表値管理テーブル群２２０Ａを有する。グループ代表値は、複数のメモリセルを含むグループ毎、例えばページ毎あるいはブロック毎に管理された書き込みパラメータ等を含む。コントローラは、グループ毎にグループ代表値を管理する。例えば、グループは、互いに似た書き込み特性を持つことが期待される複数のメモリセルを含むように設定する。なお、コントローラ２００の代わりにＮＡＮＤ型フラッシュメモリ１００がグループ毎に書き込みパラメータを管理してもよい。管理テーブル群２２０Ａは、例えば内蔵メモリ２２０に記憶される。
【００６９】
以下に、コントローラ２００とＮＡＮＤ型フラッシュメモリ１００間のシーケンスを述べる。
【００７０】
ＮＡＮＤ型フラッシュメモリ１００では、書き込み動作として、検知書き込み、フィードバック付き書き込み、及び適用書き込みが実行される。
【００７１】
検知書き込みにおけるシーケンスは以下のようになる。コントローラ２００は、ＮＡＮＤ型フラッシュメモリ１００に検知書き込みを指示する。ＮＡＮＤ型フラッシュメモリ１００は、プリセット値として記憶された既定の書き込み電圧を用いて検知書き込みを実行し、書き込みパラメータを検知する。
【００７２】
ＮＡＮＤ型フラッシュメモリ１００は、検知した書き込みパラメータを第２レジスタ１７０Ｂに格納する。さらに、ＮＡＮＤ型フラッシュメモリ１００は、第２レジスタ１７０Ｂに格納された書き込みパラメータを、コントローラ２００からの取得コマンドに応じて、コントローラ２００に送信する。これにより、コントローラ２００は、検知書き込みで検知された書き込みパラメータを取得し、内蔵メモリ２２０内の管理テーブル群２２０Ａに、書き込みパラメータをグループ代表値として記憶する。取得コマンドとしては、例えば、ステータスリードコマンドあるいはゲットフィーチャーコマンドが用いられる。ステータスリードコマンドあるいはゲットフィーチャーコマンドについては後で詳述する
フィードバック付き書き込みにおけるシーケンスは以下のようになる。コントローラ２００は、内蔵メモリ２２０内の管理テーブル群２２０Ａに記憶されたグループ代表値を書き込みパラメータとしてＮＡＮＤ型フラッシュメモリ１００に送信する。ＮＡＮＤ型フラッシュメモリ１００は、受信した書き込みパラメータを第１レジスタ１７０Ａに記憶する。
【００７３】
続いて、コントローラ２００は、ＮＡＮＤ型フラッシュメモリ１００にフィードバック付き書き込みを指示する。ＮＡＮＤ型フラッシュメモリ１００は、第１レジスタ１７０Ａに記憶された書き込みパラメータを用いてフィードバック付き書き込みを実行し、フィードバック付き書き込みで得られた検証結果を第２レジスタ１７０Ｂに格納する。さらに、ＮＡＮＤ型フラッシュメモリ１００は、コントローラ２００からの取得コマンドに応じて、第２レジスタ１７０Ｂに格納された検証結果をコントローラ２００に送信する。コントローラ２００は、フィードバック付き書き込みで得られた検証結果を取得し、検証結果に基づいてグループ代表値を更新して管理テーブル群２２０Ａに記憶する。検証結果は、フィードバック付き書き込みによって検証された書き込みパラメータの妥当性を表す情報を含む。さらに、コントローラ２００は、検証結果からオーバープログラムが発生していると判定した場合、ＮＡＮＤ型フラッシュメモリ１００に対して回復処理を行う。例えば、コントローラ２００は、ＮＡＮＤ型フラッシュメモリ１００に、回復処理を実行させるためのコマンドを送信する。
【００７４】
適用書き込みにおけるシーケンスは以下のようになる。コントローラ２００は、内蔵メモリ２２０内の管理テーブル群２２０Ａに記憶されたグループ代表値を書き込みパラメータとしてＮＡＮＤ型フラッシュメモリ１００に送信する。ＮＡＮＤ型フラッシュメモリ１００は、書き込みパラメータを第１レジスタ１７０Ａに記憶する。続いて、コントローラ２００は、ＮＡＮＤ型フラッシュメモリ１００に適用書き込みを指示する。ＮＡＮＤ型フラッシュメモリ１００は、第１レジスタ１７０Ａに記憶された書き込みパラメータを用いて適用書き込みを実行する。
【００７５】
１．２．３．２  コントローラの管理テーブル群
次に、コントローラ２００が有する管理テーブル群２２０Ａについて説明する。図７Ａ〜図７Ｄは、コントローラが有する管理テーブル群の一例を示す図である。管理テーブル群２２０Ａは、内蔵メモリ２２０に記憶され、例えば、図７Ａに示すグループ定義テーブル２２０Ａ_１、図７Ｂに示すグループの書き込みパラメータテーブル２２０Ａ_２、図７Ｃに示すフィードバック付き書き込みのサイクル定義テーブル２２０Ａ_３、及び図７Ｄに示すフィードバック付き書き込みのスケジュールテーブル２２０Ａ_４等を含む。
【００７６】
図７Ａに示すグループ定義テーブル２２０Ａ_１は、１つのグループ代表値を共有するメモリセル群（グループ）に含まれるワード線の集合を定義する。例えば、グループは、１つのワード線を含んでもよいし、複数のワード線を含んでもよい。グループは、１つのブロックを含んでもよいし、複数のブロックを含んでもよい。図７Ａでは、グループＧＲ０はワード線ＷＬ０〜ＷＬ７を含み、グループＧＲ１はワード線ＷＬ８〜ＷＬ２３を含む。
【００７７】
図７Ｂに示すグループの書き込みパラメータテーブル２２０Ａ_２は、例えば、各ブロック内のグループ毎に、使用する書き込みパラメータを記憶する。例えば、ブロックＢＬＫ１内のグループＧＲ０には書き込みパラメータＡ１０が対応する。その結果、ブロックＢＬＫ１内のグループＧＲ０に含まれるメモリセルに対するフィードバック付き書き込み及び適用書き込みには、書き込みパラメータＡ１０が用いられる。例えば、ブロックＢＬＫ１内のグループＧＲ０に含まれるメモリセルを書き込み対象とするフィードバック付き書き込みでは、書き込みパラメータＡ１０が第１レジスタ１７０Ａに設定され、書き込みパラメータＡ１０を用いたフィードバック付き書き込みが実行される。図７Ｂに示すように、ブロックＢＬＫ１内のグループＧＲ１，ＧＲ２，ＧＲ３には、書き込みパラメータＡ１１，Ａ１２，Ａ１３がそれぞれ対応する。
【００７８】
図７Ｃに示すフィードバック付き書き込みのサイクル定義テーブル２２０Ａ_３は、フィードバック付き書き込みを行うべき書き込み／消去（Ｐ／Ｅ）のサイクル数を定義する。例えば、書き込み対象グループの書き込み／消去（Ｐ／Ｅ）サイクルが１００，３００，５００，７００回のいずれかに達したとき、すなわちＰ／Ｅサイクルが１００回に達したとき、及びその後２００回増加する毎に、フィードバック付き書き込みを実行することが定義される。図７Ｃのサイクル定義テーブル２２０Ａ_３は、グループ毎に用意してもよいし、フィードバック付き書き込みが実行されるべきサイクル数の間隔は一定回数であってもよいし、一定回数でなくてもよい。
【００７９】
図７Ｄに示すフィードバック付き書き込みのスケジュールテーブル２２０Ａ_４は、フィードバック付き書き込みを行うべき書き込み／消去（Ｐ／Ｅ）サイクル数を記憶する。書き込み対象グループのＰ／Ｅサイクル数がスケジュールテーブル２２０Ａ_４に記憶されたサイクル数に達したとき、フィードバック付き書き込みが実行される。例えば、ブロックＢＬＫ０のグループＧＲ０のＰ／Ｅサイクル数が１００回に達したとき、フィードバック付き書き込みが実行される。
【００８０】
さらに、フィードバック付き書き込みが実行されたら、コントローラ２００は、スケジュールテーブル２２０Ａ_４内のＰ／Ｅサイクル数を、サイクル定義テーブル２２０Ａ_３のタイミング１〜４に定義されたＰ／Ｅサイクル数に更新する。例えば、ブロックＢＬＫ２のグループＧＲ０は、Ｐ／Ｅサイクル数が１００回目でフィードバック付き書き込みが実行され、実行後、図７Ｄに示すように、スケジュールテーブル２２０Ａ_４内のＰ／Ｅサイクル数が１００回から３００回に更新される。
【００８１】
１．２．３．３  書き込み動作の流れ
次に、図８を用いて、本実施形態における書き込み動作について説明する。図８は、本実施形態の書き込み動作を示すフローチャートである。図８に示す書き込み動作はコントローラ２００が実行する。
【００８２】
まず、コントローラ２００は、書き込み対象の複数のメモリセルを含むグループに対するグループ代表値（例えば、書き込み電圧を含む書き込みパラメータ）を、取得済みか否かを判定する。すなわち、コントローラ２００は、書き込み対象グループのグループ代表値が書き込みパラメータテーブル２２０Ａ_２に記憶されているか否かを判定する（ステップＳ１）。グループ代表値が記憶されていない場合（No）、コントローラ２００から第１レジスタ１７０Ａのリセットを指示することで、あるいはコントローラ２００から第１レジスタ１７０Ａに設定すべき書き込みパラメータを指示しないことによって、ＮＡＮＤ型フラッシュメモリ１００では、ＮＡＮＤ型フラッシュメモリ１００に記憶されているプリセット値が第１レジスタ１７０Ａに記憶される。これにより、プリセット値としての書き込みパラメータを、検知書き込みに用いる書き込み電圧ＶＰＧＭとして設定する（ステップＳ２）。
【００８３】
次に、コントローラ２００は、ＮＡＮＤ型フラッシュメモリ１００に検知書き込みを指示する（ステップＳ３）。これにより、ＮＡＮＤ型フラッシュメモリ１００は、既定の書き込み電圧ＶＰＧＭを用いて検知書き込みを実行し、検知結果を得る。コントローラ２００は、検知書き込みにて検知された検知結果を取得する（ステップＳ４）。さらに、コントローラ２００は、検知結果に基づいて求められた初回の電圧ＶＰＧＭを、グループ代表値として書き込みパラメータテーブル２２０Ａ_２に記憶する（ステップＳ５）。その後、書き込み動作を終了する。
【００８４】
ステップＳ１において、書き込みパラメータテーブル２２０Ａ_２に、書き込み対象グループのグループ代表値が既に記憶されている場合（Yes）、コントローラ２００は、ＮＡＮＤ型フラッシュメモリ１００の第１レジスタ１７０Ａにグループ代表値を記憶させることで、グループ代表値を初回の電圧ＶＰＧＭとして設定する（ステップＳ６）。
【００８５】
次に、コントローラ２００は、スケジュールテーブル２２０Ａ_４を参照し、スケジュールテーブル２２０Ａ_４に従ってフィードバック付き書き込みを実行するか否かを判定する（ステップＳ７）。具体的には、Ｐ／Ｅサイクルが１００、１５０、２００あるいは２５０に達したとき、フィードバック付き書き込みの実行が必要であると判定する。
【００８６】
ステップＳ７において、フィードバック付き書き込みを実行すると判定した場合（Yes）、コントローラ２００は、ＮＡＮＤ型フラッシュメモリ１００にフィードバック付き書き込みを指示する（ステップＳ８）。これにより、ＮＡＮＤ型フラッシュメモリ１００は、ステップＳ６で書き込みパラメータとして指示されたグループ代表値を用いてフィードバック付き書き込みを実行し、グループ代表値についての検証結果を得る。コントローラ２００は、フィードバック付き書き込みにて検証された検証結果を取得する（ステップＳ９）。フィードバック付き書き込みの詳細については後述する。
【００８７】
次に、コントローラ２００は、検証結果を判定し、検証結果に基づいてグループ代表値を更新する（ステップＳ１０）。ステップＳ１０の処理の詳細については図１４を用いて後述する。その後、書き込み動作を終了する。
【００８８】
また、ステップＳ７において、フィードバック付き書き込みを実行しないと判定した場合（No）、コントローラ２００は、ＮＡＮＤ型フラッシュメモリ１００に適用書き込みを指示する（ステップＳ１１）。これにより、ＮＡＮＤ型フラッシュメモリ１００は、ステップＳ６で書き込みパラメータとして指示されたグループ代表値を用いて適用書き込みを実行する。その後、書き込み動作を終了する。
【００８９】
なお、ステップＳ１０における検証結果の判定において、コントローラ２００によりオーバープログラムが発生していると判定された場合、以下の回復処理が実行される。図９は、オーバープログラムが発生した場合の回復処理の動作を示すフローチャートである。
【００９０】
まず、回復処理が起動されると、コントローラ２００は、オーバープログラムが発生したメモリセルに書き込まれるべきデータ、すなわち書き込みに失敗したメモリセルのデータを特定する（ステップＳ４１）。
【００９１】
続いて、コントローラ２００は、書き込みに失敗したメモリセルのデータを取得する（ステップＳ４２）。例えば、書き込みが正常に終了するまで書き込みデータをバッファに保持する構成である場合は、書き込みに失敗したメモリセルのデータをバッファから取得する。また、ＳＬＣ（single level cell）バッファに書き込みに失敗したメモリセルのデータがある場合は、ＳＬＣバッファから取得する。コンパクション実行時であり、コンパクションの対象ブロックに書き込みに失敗したメモリセルのデータがある場合は、そのブロックから取得する。ＥＣＣでページ間積符号を構成している場合は、書き込みに失敗したメモリセルのデータを、積符号を用いて回復する。
【００９２】
次に、コントローラ２００は、ＮＡＮＤ型フラッシュメモリ１００に、取得したデータの書き込みを指示する（ステップＳ４３）。取得したデータの書き込み先のメモリセルは、書き込みに失敗したメモリセルとは別のメモリセルに対して行ってもよいし、あるいは、消去動作を行った後に、書き込みに失敗したメモリセルに対して行ってもよい。以上により、回復処理が終了する。
【００９３】
このように、オーバープログラムが発生していると判定された場合、オーバープログラムが発生したメモリセルに書き込まれるべきデータに対して回復処理を行うことにより、データの損失を防ぐことができる。
【００９４】
１．２．３．４  フィードバック付き書き込み
次に、書き込み動作で実行されるフィードバック付き書き込みについて説明する。フィードバック付き書き込みは、前述したように、ＮＡＮＤ型フラッシュメモリにおいて書き込みパラメータが適正であるか否かを検知書き込みに比べて短時間で検証し、その検証結果をコントローラに送信する書き込み方式である。さらに、その応用として、コントローラがその検証結果に基づいて書き込みパラメータを調整するものである。
【００９５】
図１０及び図１１は、フィードバック付き書き込みにおけるコントローラとＮＡＮＤ型フラッシュメモリ間のインターフェースを示す図である。図１０は、プログラム動作によってオーバープログラムが発生しない場合を示し、図１１は、プログラム動作によってオーバープログラムが発生した場合を示す。
【００９６】
コントローラ２００は、書き込みパラメータテーブル２２０Ａ_２に記憶されたグループ代表値Ｖ０を、ＮＡＮＤ型フラッシュメモリ１００の第１レジスタ１７０Ａに設定する（１）。続いて、コントローラ２００は、ＮＡＮＤ型フラッシュメモリ１００にフィードバック付き書き込みを指示する（２）。
【００９７】
ＮＡＮＤ型フラッシュメモリ１００は、コントローラ２００から指示された書き込み対象、例えばブロックＢＬＫ０のグループＧＲ０に含まれるメモリセルに対して、書き込みパラメータとして指示されたグループ代表値Ｖ０を用いてフィードバック付き書き込みを実行する（２-１）。そして、ＮＡＮＤ型フラッシュメモリ１００は、フィードバック付き書き込みにより得られた書き込みパラメータの検証結果を、例えばステータス情報として第２レジスタ１７０Ｂに記憶する（２-２）。
【００９８】
次に、コントローラ２００は、例えば、取得コマンドによって格納レジスタ１７０Ｂから検証結果（例えば、ステータス情報）を取得し（３）、検証結果に基づいて、書き込みパラメータテーブル２２０Ａ_２内に記憶されたグループ代表値Ｖ０をグループ代表値Ｖｘに更新する（４）。
【００９９】
ここで、コントローラ２００は、フィードバック付き書き込みによる検証結果がオーバープログラムの発生を示していないと判定した場合、前述したように、グループ代表値Ｖ０をＶｘに更新して終了する。
【０１００】
一方、フィードバック付き書き込みによる検証結果がオーバープログラムの発生を示していると判定した場合、図１１に示すように、コントローラ２００は、オーバープログラムに対する回復処理を起動し、オーバープログラムが発生したメモリセルに書き込むべきデータを復旧し、そのデータの書き込みをＮＡＮＤ型フラッシュメモリ１００に新たに指示する（５）。
【０１０１】
前述したように、書き込み方式には、フルシーケンスプログラム、及び多段階で書き込む方式（例えば、２ステージプログラムあるいはfoggy & fine）がある。
【０１０２】
メモリセルが二次元に配列された二次元ＮＡＮＤ型フラッシュメモリ、及びメモリセルが三次元に配列された三次元ＮＡＮＤ型フラッシュメモリでは、隣接するワード線ＷＬにおいてセル間干渉などの影響を受けやすいことが知られている。セル間干渉の影響を緩和するため、二次元ＮＡＮＤ型フラッシュメモリ及び三次元ＮＡＮＤ型フラッシュメモリでは、多段階で書き込む方式が提案されている。２ステージプログラムとfoggy & fineでは、データを入力するページの数、印加する初回の電圧ＶＰＧＭ以外に大きな違いは無いので、２ステージプログラムを例に挙げ説明する。
【０１０３】
また、三次元ＮＡＮＤ型フラッシュメモリでの２ステージプログラムは、第１ワード線と、第１ワード線に隣接する第２ワード線がある場合、第１ワード線の第１ステージの書き込み動作が終了すると、第２ワード線の第１ステージの書き込み動作を行う。第２ワード線の第１ステージの書き込み動作が終了すると、第１ワード線の第２ステージの書き込み動作を行う。三次元ＮＡＮＤ型フラッシュメモリでは、ストリングユニットの配列方向にも書き込むページが存在する。
【０１０４】
なお、二次元ＮＡＮＤ型フラッシュメモリでの２ステージプログラムも、三次元ＮＡＮＤ型フラッシュメモリの場合と同様に、第１ワード線と、第１ワード線に隣接する第２ワード線がある場合、第１ワード線の第１ステージの書き込み動作が終了すると、第２ワード線の第１ステージの書き込み動作を行う。第２ワード線の第１ステージの書き込み動作が終了すると、第１ワード線の第２ステージの書き込み動作を行う。すなわち、１つのストリングユニットしか存在しない以外、三次元ＮＡＮＤ型フラッシュメモリの場合と同様であるため、詳細な説明は省略する。
【０１０５】
以下に、三次元ＮＡＮＤ型フラッシュメモリにおける２ステージプログラムの書き込み順序の一例を説明する。
【０１０６】
図１２は、２ステージプログラムにより三次元ＮＡＮＤ型フラッシュメモリにデータを書き込む場合の書き込み順序の一例を示す。１つのブロックは、４つのストリングユニットＳＵ０〜ＳＵ３に分割されている。図１２に示す例は、４本のワード線ＷＬ０〜ＷＬ３に接続されたストリングユニットＳＵ０〜ＳＵ３のメモリセル（セルユニット）に、lowerページ（Ｌ）、middleページ（Ｍ）、及びupperページ（Ｕ）のデータを書き込む場合である。２ステージプログラムでは、第１ステージの書き込み動作でlowerページのデータを書き込み、第２ステージの書き込み動作で残りのページ、ここではmiddle及びupperページのデータを書き込む。
【０１０７】
図示するように、例えば、ワード線ＷＬ０に接続されたストリングユニットＳＵ０〜ＳＵ３のメモリセル（セルユニット）に、lowerページのデータを順に書き込む（０→１→２→３）。続いて、ワード線ＷＬ１に接続されたストリングユニットＳＵ０〜ＳＵ３のメモリセルに、lowerページのデータを順に書き込む（４→５→６→７）。
【０１０８】
次に、ワード線ＷＬ０に接続されたストリングユニットＳＵ０〜ＳＵ３のメモリセルに、middle及びupperページのデータを順に書き込む（８→９→１０→１１）。続いて、ワード線ＷＬ２に接続されたストリングユニットＳＵ０〜ＳＵ３のメモリセルに、lowerページのデータを順に書き込む（１２→１３→１４→１５）。次に、ワード線ＷＬ１に接続されたストリングユニットＳＵ０〜ＳＵ３のメモリセルに、middle及びupperページのデータを順に書き込む（１６→１７→１８→１９）。
【０１０９】
次に、ワード線ＷＬ３に接続されたストリングユニットＳＵ０〜ＳＵ３のメモリセルに、lowerページのデータを順に書き込む（２０→２１→２２→２３）。続いて、ワード線ＷＬ２に接続されたストリングユニットＳＵ０〜ＳＵ３のメモリセルに、middle及びupperページのデータを順に書き込む（２４→２５→２６→２７）。
【０１１０】
次に、図１３（ａ）、図１３（ｂ）及び図１３（ｃ）に、２ステージプログラムによるメモリセルの閾値電圧分布の推移を示す。図１３（ａ）に消去状態、すなわち“Ｅｒ”ステートを持つメモリセルの閾値電圧分布を示す。先に“ＬＭ”ステートを書き込むべきメモリセルの閾値電圧分布を移動させる書き込みを第１ステージで行う。これにより、図１３（ｂ）に示すように、メモリセルの一部は“Ｅｒ”ステートから例えば“Ｃ”ステートと“Ｄ”ステートとの間の“ＬＭ”ステートにシフトする。続いて、第２ステージの書き込みでは、図１３（ｃ）に示すように、メモリセルに書き込むデータに応じて、第１ステージ後の“Ｅｒ”ステートの分布を、“Ｅｒ”、“Ａ”、“Ｂ”、“Ｃ”ステートと分割するように、及び“ＬＭ”ステートの分布を、“Ｄ”、“Ｅ”、“Ｆ”、“Ｇ”ステートに分割するように書き込みを行う。すなわち、第２ステージの書き込みにより、“Ｅｒ”ステートが“Ａ”、“Ｂ”、“Ｃ”ステートとなるように書き込み、その後、“ＬＭ”ステートが“Ｄ”、“Ｅ”、“Ｆ”、“Ｇ”ステートとなるように書き込む。
【０１１１】
以下に、フルシーケンスプログラム、及び２ステージプログラムに、フィードバック付き書き込みを適用した例を説明する。
【０１１２】
＜第１実施形態のフィードバック付き書き込み（第１例〜第３例）＞
次に、第１実施形態のフィードバック付き書き込みを適用した例として、第１例〜第３例を説明する。第１例は、フルシーケンスプログラムにおける１回目の書き込みループのプログラムベリファイ動作に、追加のベリファイ動作を設けたものである。
【０１１３】
図１４は、第１例のフィードバック付き書き込みで行われるプログラム動作とプログラムベリファイ動作におけるワード線電圧を示す。なお、第１例、及び以降の例では、メモリセルを“Ａ”ステートに書き込む場合を表す。
【０１１４】
書き込み動作の１回目の書き込みループにおいて、グループ代表値あるいはグループ代表値に補正をかけた値を、初回の電圧ＶＰＧＭとして用いたプログラム動作を行う。初回の電圧ＶＰＧＭは、検知書き込み、あるいは前回のフィードバック付き書き込みで得られた検証結果に基づいて、更新あるいは補正された書き込み電圧である。非選択ワード線ＷＬには、電圧ＶＰＡＳＳを印加する。なお、この非選択ワード線ＷＬへの電圧ＶＰＡＳＳの印加は以降の例においても同様である。
【０１１５】
次に、選択ワード線ＷＬに、ベリファイ電圧ＳＶ１，ＳＶ２を印加して、スマートベリファイ動作をそれぞれ行う。続いて、“Ａ”ステートについてのベリファイ電圧ＡＶを印加して、プログラムベリファイ動作及びスマートベリファイ動作をそれぞれ行う。さらに、ベリファイ電圧ＳＶ３，ＳＶ４を印加して、スマートベリファイ動作をそれぞれ行う。これらベリファイ電圧の大小関係は、例えば、ＳＶ１＜ＳＶ２＜ＡＶ＜ＳＶ３＜ＳＶ４である。非選択ワード線ＷＬには、電圧ＶＲＥＡＤを印加する。なお、この非選択ワード線ＷＬへの電圧ＶＲＥＡＤの印加は以降の例においても同様である。
【０１１６】
その後、１回目の書き込みループでプログラムベリファイがパスしない場合、電圧ＶＰＧＭに電圧ΔＶが加算されたプログラム動作と、プログラムベリファイ電圧ＡＶを用いたプログラムベリファイ動作とを含む書き込みループが繰り返される。なお、２回目以降の書き込みループでは、スマートベリファイ動作は行わない。
【０１１７】
前述した１回目の書き込みループのプログラムベリファイ動作では、選択ワード線ＷＬにベリファイ電圧ＳＶ１，ＳＶ２，ＡＶ，ＳＶ３，ＳＶ４が順に印加され、スマートベリファイ動作がそれぞれ行われる。これらのスマートベリファイ動作により、フィードバック付き書き込みによる初回の電圧ＶＰＧＭが書き込み対象のメモリセルに対して適正であるか否かが検証される。
【０１１８】
図１５は、プログラム動作によって生じたメモリセルの閾値電圧分布と検証結果に基づいたステータス情報を示す。プログラム動作後、ベリファイ電圧ＳＶ１，ＳＶ２，ＡＶ，ＳＶ３，ＳＶ４を用いてそれぞれスマートベリファイ動作を行うことで、閾値電圧分布の上裾が電圧ＳＶ１，ＳＶ２，ＡＶ，ＳＶ３，ＳＶ４をそれぞれ超えたか否かの情報が得られる。閾値電圧分布の上裾がスマートベリファイ電圧を超えるとは、閾値電圧がスマートベリファイ電圧を超えたと判定されるメモリセルの数が第１閾値以上になることである。これら情報に対して検証結果としてのステータス情報を割り当てる。このようにして、電圧ＶＰＧＭで書き込みを行った後の閾値電圧分布に応じた検証結果に基づいてステータス情報を生成する。
【０１１９】
閾値電圧分布の情報をステータス情報に割り当てた場合の例を図１５に示す。閾値電圧分布の情報は、５ビットのデータ列で表される。５ビットのデータ列のうち、下位ビット側から順に、閾値電圧分布の上裾がベリファイ電圧ＳＶ１，ＳＶ２，ＡＶ，ＳＶ３，ＳＶ４をそれぞれ超えたか否かを示す。０が超えていない場合を示し、１が超えている場合を示す。
【０１２０】
例えば、メモリセルの閾値電圧分布の上裾がベリファイ電圧ＳＶ１を超えていない場合は、“０００００”で表される。閾値電圧分布の上裾がベリファイ電圧ＳＶ１を超え、電圧ＳＶ２を超えていない場合は、“００００１”で表される。閾値電圧分布の上裾がベリファイ電圧ＳＶ２を超え、電圧ＡＶを超えていない場合は、“０００１１”で表される。閾値電圧分布の上裾がベリファイ電圧ＡＶを超え、電圧ＳＶ３を超えていない場合は、“００１１１”で表される。閾値電圧分布の上裾がベリファイ電圧ＳＶ３を超え、電圧ＳＶ４を超えていない場合は、“０１１１１”で表される。さらに、閾値電圧分布の上裾がベリファイ電圧ＳＶ４を超えている場合は、“１１１１１”で表される。
【０１２１】
また、閾値電圧分布の情報は、３ビットのデータ列で表すことも可能である。ここでは、ステータス情報は６つの状態を記憶できればよい。従って、図１５に示すように、３ビットのデータ列を用いれば６つの各状態を記憶できる。
【０１２２】
検証結果としての５ビットまたは３ビットのデータ列は第２レジスタ１７０Ｂに格納される。コントローラ２００は、例えば、取得コマンドによって格納レジスタ１７０Ｂに格納されたデータ列を取得し、データ列に基づいてグループ代表値を更新する。
【０１２３】
図１６は、図８のステップＳ１０で実行されるフィードバック付き書き込みの検証結果に基づいたグループ代表値更新とオーバープログラム発生の判定とを示す図である。コントローラ２００は、図１６に示すように、検証結果に基づいて、グループ代表値の更新、及びメモリセルにオーバープログラムが発生しているか否かの判定を行う。
【０１２４】
図１６に示すように、フィードバック付き書き込みのスマートベリファイ動作時点において、メモリセルの閾値電圧分布の上裾がベリファイ電圧ＳＶ１を超えていない場合、すなわち、ベリファイ電圧ＳＶ１を用いたスマートベリファイ動作でオフ状態となるメモリセルの数が第１閾値未満である場合、コントローラ２００は、例えば、書き込みパラメータテーブル２２０Ａ_２内のグループ代表値を２段階上げて“電圧ＶＰＧＭ＋２×ΔＶ”とし、またオーバープログラムの発生がないと判定する。
【０１２５】
メモリセルの閾値電圧分布の上裾がベリファイ電圧ＳＶ１を超え、電圧ＳＶ２を超えていない場合、すなわち、ベリファイ電圧ＳＶ１を用いたスマートベリファイ動作でオフ状態となるメモリセルの数が第１閾値以上であり、電圧ＳＶ２を用いたスマートベリファイ動作でオフ状態となるメモリセルの数が第１閾値未満である場合、コントローラ２００は、例えば、書き込みパラメータテーブル２２０Ａ_２内のグループ代表値を１段階上げて“電圧ＶＰＧＭ＋ΔＶ”とし、またオーバープログラムの発生がないと判定する。
【０１２６】
メモリセルの閾値電圧分布の上裾がベリファイ電圧ＳＶ２を超え、電圧ＡＶを超えていない場合、すなわち、ベリファイ電圧ＳＶ２を用いたスマートベリファイ動作でオフ状態となるメモリセルの数が第１閾値以上であり、ベリファイ電圧ＡＶを用いたスマートベリファイ動作でオフ状態となるメモリセルの数が第１閾値未満である場合、コントローラ２００は、例えば、書き込みパラメータテーブル２２０Ａ_２内のグループ代表値をそのまま維持し、またオーバープログラムの発生がないと判定する。
【０１２７】
メモリセルの閾値電圧分布の上裾がベリファイ電圧ＡＶを超え、電圧ＳＶ３を超えていない場合、すなわち、ベリファイ電圧ＡＶを用いたスマートベリファイ動作でオフ状態となるメモリセルの数が第１閾値以上であり、電圧ＳＶ３を用いたスマートベリファイ動作でオフ状態となるメモリセルの数が第１閾値未満である場合、コントローラ２００は、例えば、書き込みパラメータテーブル２２０Ａ_２内のグループ代表値を１段階下げて“電圧ＶＰＧＭ−ΔＶ”とし、またオーバープログラムの発生がないと判定する。
【０１２８】
メモリセルの閾値電圧分布の上裾がベリファイ電圧ＳＶ３を超え、電圧ＳＶ４を超えていない場合、すなわち、ベリファイ電圧ＳＶ３を用いたスマートベリファイ動作でオフ状態となるメモリセルの数が第１閾値以上であり、電圧ＳＶ４を用いたスマートベリファイ動作でオフ状態となるメモリセルの数が第１閾値未満である場合、コントローラ２００は、例えば、書き込みパラメータテーブル２２０Ａ_２内のグループ代表値を２段階下げて“電圧ＶＰＧＭ−２×ΔＶ”とし、またオーバープログラムの発生がないと判定する。
【０１２９】
メモリセルの閾値電圧分布の上裾がベリファイ電圧ＳＶ４を超えている場合、すなわち、ベリファイ電圧ＳＶ４を用いたスマートベリファイ動作でオフ状態となるメモリセルが第１閾値以上である場合、コントローラ２００は、例えば、書き込みパラメータテーブル２２０Ａ_２内のグループ代表値を３段階下げて“電圧ＶＰＧＭ−３×ΔＶ”とする。さらに、メモリセルにオーバープログラムが発生している疑いがあるため、コントローラ２００は、オーバープログラムに対する回復処理を起動し、オーバープログラムが発生したメモリセルに書き込むべきデータを復旧し、そのデータの書き込みをＮＡＮＤ型フラッシュメモリ１００に新たに指示する。以上により、処理を終了する。
【０１３０】
このようにして検証結果に基づいて更新されたグループ代表値は、次回の書き込み動作の１回目の書き込みループにおいて初回の電圧ＶＰＧＭとして用いられる。これにより、オーバープログラムの発生を抑制しつつ、メモリセルの特性変化に応じて書き込み電圧を動的に調整することができ、書き込み動作に要する時間を短縮することができる。
【０１３１】
次に、２ステージプログラムにおける第１ステージの書き込み動作に、フィードバック付き書き込みを適用した例を、第２例として説明する。第２例は、第１ステージの書き込み動作における１回目の書き込みループのプログラムベリファイ動作に、追加のスマートベリファイ動作を設けたものである。
【０１３２】
図１７は、第２例のフィードバック付き書き込みで行われるプログラム動作とプログラムベリファイ動作におけるワード線電圧を示す。選択ワード線ＷＬに初回の電圧ＶＰＧＭを印加してプログラム動作を行う。次に、プログラムベリファイ動作において、選択ワード線ＷＬに、ベリファイ電圧ＳＶ１，ＳＶ２を印加して、スマートベリファイ動作をそれぞれ行う。続いて、“ＬＭ”ステートについてのベリファイ電圧ＬＭＶを印加して、プログラムベリファイ動作及びスマートベリファイ動作をそれぞれ行う。さらに、ベリファイ電圧ＳＶ３，ＳＶ４を印加して、スマートベリファイ動作をそれぞれ行う。これらベリファイ電圧の大小関係は、例えば、ＳＶ１＜ＳＶ２＜ＬＭＶ＜ＳＶ３＜ＳＶ４である。
【０１３３】
第２例の図１４に示した第１例と異なる点は、ベリファイ電圧ＡＶがベリファイ電圧ＬＭＶに換わり、ベリファイ電圧ＳＶ１，ＳＶ２，ＳＶ３，ＳＶ４がベリファイ電圧ＬＭＶに応じた電圧になるだけである。その他の構成及び効果は、前述した第１例と同様である。なお、２ステージプログラムでは、第１ステージの書き込み動作の後、第２ステージの書き込み動作が実行されるが、第１ステージと第２ステージの書き込み動作で設定される書き込みパラメータは異なる。このため、コントローラ２００は、第１ステージ及び第２ステージの書き込み動作における書き込みパラメータをそれぞれ管理する。すなわち、コントローラ２００は、第１ステージ及び第２ステージの書き込み動作における書き込みパラメータを別々のテーブルで管理する。
【０１３４】
次に、２ステージプログラムにおける第２ステージの書き込み動作に、フィードバック付き書き込みを適用した例を、第３例として説明する。第３例は、第２ステージの書き込み動作における１回目の書き込みループのプログラムベリファイ動作に、追加のスマートベリファイ動作を設けたものである。
【０１３５】
図１８は、第３例のフィードバック付き書き込みで行われるプログラム動作とプログラムベリファイ動作におけるワード線電圧を示す。第３例では、第２ステージの書き込み動作において８値を書くためにLowerページのデータ、すなわち“ＬＭ”データの復元が必要である。このため、“ＬＭ”データの読み出し電圧ＬＭＲを用いて読み出しを行う。その後、選択ワード線ＷＬに初回の電圧ＶＰＧＭを印加してプログラム動作を行う。次に、プログラムベリファイ動作において、選択ワード線ＷＬに、ベリファイ電圧ＳＶ１，ＳＶ２を印加して、スマートベリファイ動作をそれぞれ行う。続いて、“Ａ”ステートについてのベリファイ電圧ＡＶを印加して、プログラムベリファイ動作及びスマートベリファイ動作をそれぞれ行う。さらに、ベリファイ電圧ＳＶ３，ＳＶ４を印加して、スマートベリファイ動作をそれぞれ行う。これらベリファイ電圧の大小関係は、例えば、ＳＶ１＜ＳＶ２＜ＡＶ＜ＳＶ３＜ＳＶ４である。
【０１３６】
第３例の図１４に示した第１例と異なる点は、“Ａ”ステートの書き込み動作前に、読み出し電圧ＬＭＲでの読み出しがあるだけである。その他の構成及び効果は、前述した第１例と同様である。
【０１３７】
＜第２実施形態のフィードバック付き書き込み（第４例〜第６例）＞
次に、第２実施形態のフィードバック付き書き込みを適用した例として、第４例〜第６例を説明する。第４例では、スマートベリファイによる書き込みパラメータの検知を、“Ａ”ステートのプログラムベリファイ電圧ＡＶを用いて行う。スマートベリファイにパスしたら、オーバープログラムが発生したか否かを判定するベリファイ動作を行う。このベリファイ動作には、ベリファイ電圧ＡＶより高いベリファイ電圧ＡＶＨを用いる。以降、オーバープログラムの発生を判定するベリファイをＯＰベリファイ動作と称する。
【０１３８】
図１９は、第４例のフィードバック付き書き込みで行われるプログラム動作とプログラムベリファイ動作におけるワード線電圧を示す。図２０は、プログラム動作後のメモリセルの閾値電圧分布を示す。第４例では、図１９に示すように、プログラム動作の後、プログラムベリファイ電圧ＡＶをスマートベリファイ電圧として用いてスマートベリファイ動作を行う。閾値電圧がプログラムベリファイ電圧ＡＶ以上であると判定されたメモリセルの数が第１閾値以上であるか否かを判定するスマートベリファイ動作を行い、スマートベリファイにパスしたら、プログラムベリファイ電圧ＡＶより高いベリファイ電圧ＡＶＨを用いたＯＰベリファイ動作を行う。
【０１３９】
図１９に示すように、１回目の書き込みループでは、選択ワード線ＷＬに初回の電圧ＶＰＧＭを印加してプログラム動作を行う。続いて、選択ワード線ＷＬに、“Ａ”ステートのベリファイ電圧ＡＶを印加して、スマートベリファイ動作を行う。例えばここでは、閾値電圧がプログラムベリファイ電圧ＡＶ以上であると判定されたメモリセルの数が第１閾値以上でなく、スマートベリファイがフェイルであるとして、２回目の書き込みループに進む。
【０１４０】
２回目の書き込みループでは、選択ワード線ＷＬに“電圧ＶＰＧＭ＋ΔＶ”を印加して、プログラム動作を行う。続いて、選択ワード線ＷＬに、“Ａ”ステートのベリファイ電圧ＡＶを印加して、スマートベリファイ動作を行う。ここでも、閾値電圧がプログラムベリファイ電圧ＡＶ以上であると判定されたメモリセルの数が第１閾値以上でなく、スマートベリファイがフェイルであるとして、３回目の書き込みループに進む。
【０１４１】
３回目の書き込みループでは、選択ワード線ＷＬに“電圧ＶＰＧＭ＋２ΔＶ”を印加して、プログラム動作を行う。続いて、選択ワード線ＷＬに、“Ａ”ステートのベリファイ電圧ＡＶを印加して、スマートベリファイ動作を行う。例えばここでは、閾値電圧がプログラムベリファイ電圧ＡＶ以上であると判定されたメモリセルの数が第１閾値以上であり、スマートベリファイにパスしたと判定される。スマートベリファイにパスすると、選択ワード線ＷＬにベリファイ電圧ＡＶより高い電圧ＡＶＨを印加して、ＯＰベリファイ動作を行う。電圧ＡＶＨは、オーバープログラムを検出するためのベリファイ電圧である。
【０１４２】
前述したように、図１９に示す例は、書き込み動作の３回目の書き込みループのスマートベリファイ動作において、“Ａ”ステートのベリファイ電圧ＡＶによるスマートベリファイがパスした例である。スマートベリファイにパスすると、追加のベリファイ電圧ＡＶＨによるＯＰベリファイ動作が実行される。コントローラ２００は、ベリファイ電圧ＡＶＨによるＯＰベリファイ動作によって得られる検証結果に基いて、オーバープログラムが発生しているか否かを判定する。ＯＰベリファイ動作では、閾値電圧がベリファイ電圧ＡＶＨを超えたと判定されるメモリセルの数が第２閾値以上であるとき、オーバープログラムが発生していると判定される。
【０１４３】
次に、第４例における検証結果に基づいてステータス情報を決定する手法について説明する。図２１は、フィードバック付き書き込みによって得られた検証結果に基づいて決定されるステータス情報の一例を示す。
【０１４４】
この第４例では、ＮＡＮＤ型フラッシュメモリ１００は、フィードバック付き書き込みの検証結果として、ベリファイ電圧ＡＶを用いたスマートベリファイにパスした書き込みループ数と、ＯＰベリファイ動作によるオーバープログラム発生の有無情報を取得する。なお、ＯＰベリファイ動作によりオーバープログラムの発生有りと判定されるのは、閾値電圧がベリファイ電圧ＡＶＨを超えたと判定されるメモリセルの数が第２閾値以上の場合である。
【０１４５】
ＮＡＮＤ型フラッシュメモリ１００は、書き込みループ数、及びＯＰベリファイ動作によるオーバープログラム発生の有無情報に基づいて、図２１に示すように、８ビットのステータス情報［７：０］を決定する。ステータス情報［７］がオーバープログラムの発生の有無を表し、ステータス情報［６：０］がベリファイ電圧ＡＶのスマートベリファイにパスした書き込みループ数を表す。
【０１４６】
図２１に示す（ａ）行は、ベリファイ電圧ＡＶのスマートベリファイにパスした書き込みループ数が１回で、かつスマートベリファイのパス時にオーバープログラムの発生が有る場合である。この場合、ステータス情報［７：０］は、“１００００００１”となる。
【０１４７】
図２１に示す（ｂ）行は、ベリファイ電圧ＡＶのスマートベリファイにパスした書き込みループ数が１回で、かつスマートベリファイのパス時にオーバープログラムの発生が無い場合である。この場合、ステータス情報［７：０］は、“０００００００１”となる。
【０１４８】
図２１に示す（ｃ）行は、ベリファイ電圧ＡＶのスマートベリファイにパスした書き込みループ数が２回で、かつスマートベリファイのパス時にオーバープログラムの発生が有る場合である。この場合、ステータス情報［７：０］は、“１０００００１０”となる。
【０１４９】
図２１に示す（ｄ）行は、ベリファイ電圧ＡＶのスマートベリファイにパスした書き込みループ数が２回で、かつスマートベリファイのパス時にオーバープログラムの発生が無い場合である。この場合、ステータス情報［７：０］は、“００００００１０”となる。
【０１５０】
図２１に示す（ｅ）行は、ベリファイ電圧ＡＶのスマートベリファイにパスした書き込みループ数が３回で、かつスマートベリファイのパス時にオーバープログラムの発生が有る場合である。この場合、ステータス情報［７：０］は、“１０００００１１”となる。
【０１５１】
図２１に示す（ｆ）行は、ベリファイ電圧ＡＶのスマートベリファイにパスした書き込みループ数が３回で、かつスマートベリファイのパス時にオーバープログラムの発生が無い場合である。この場合、ステータス情報［７：０］は、“００００００１１”となる。
【０１５２】
図２１に示す（ｇ）行は、ベリファイ電圧ＡＶのスマートベリファイにパスした書き込みループ数が４回で、かつスマートベリファイのパス時にオーバープログラムの発生が有る場合である。この場合、ステータス情報［７：０］は、“１００００１００”となる。
【０１５３】
図２１に示す（ｈ）行は、ベリファイ電圧ＡＶのスマートベリファイにパスした書き込みループ数が４回で、かつスマートベリファイのパス時にオーバープログラムの発生が無い場合である。この場合、ステータス情報［７：０］は、“０００００１００”となる。
【０１５４】
ＮＡＮＤ型フラッシュメモリ１００は、フィードバック付き書き込みにより得られた検証結果を、ステータス情報［７：０］として第２レジスタ１７０Ｂに記憶する。続いて、コントローラ２００は、例えば、取得コマンドによって第２レジスタ１７０Ｂからステータス情報を取得し、検証結果としてのステータス情報に基づいてグループ代表値の更新及び回復処理を行う。例えば、コントローラ２００は、回復処理のためのコマンドをＮＡＮＤ型フラッシュメモリ１００に送信する。
【０１５５】
次に、第４例における検証結果に基づいたグループ代表値の更新及び回復処理の有無について説明する。図２２は、検証結果としてのステータス情報に基づいたグループ代表値の更新及び回復処理の実行の有無を示す。図２２に示す（ａ）〜（ｈ）の検証結果は、図２１に示した（ａ）〜（ｈ）のそれらと同様である。
【０１５６】
コントローラ２００は、検証結果が図２２に示す（ａ）の場合、オーバープログラムが発生している懸念が高いため、グループ代表値として設定される電圧ＶＰＧＭを３段階下げて“電圧ＶＰＧＭ−３×ΔＶ”とし、かつ回復処理を行う。図２２に示す（ｂ）の場合、オーバープログラムが発生していないが、他のワード線への適用はできないため、グループ代表値として設定される電圧ＶＰＧＭを２段階下げて“電圧ＶＰＧＭ−２×ΔＶ”とし、また回復処理を行わない。図２２に示す（ｃ）の場合、他のワード線への適用はできないため、グループ代表値として設定される電圧ＶＰＧＭを１段階下げて“電圧ＶＰＧＭ−ΔＶ”とし、かつ回復処理を行う。図２０に示す（ｄ）の場合、他のワード線へ適用して良いとし、グループ代表値として設定されている電圧ＶＰＧＭをそのまま維持し、回復処理を行わない。図２０に示す（ｅ）の場合、他のワード線への適用が可能であるが、グループ代表値として設定される電圧ＶＰＧＭを１段階上げて“電圧ＶＰＧＭ＋ΔＶ”とし、かつ回復処理を行う。図２２に示す（ｆ）の場合、グループ代表値として設定される電圧ＶＰＧＭを１段階上げて“電圧ＶＰＧＭ＋ΔＶ”とし、また回復処理を行わない。図２２に示す（ｇ）の場合、グループ代表値として設定される電圧ＶＰＧＭを２段階上げて“電圧ＶＰＧＭ＋２×ΔＶ”とし、かつ回復処理を行う。さらに、図２２に示す（ｈ）の場合、グループ代表値として設定される電圧ＶＰＧＭを２段階上げて“電圧ＶＰＧＭ＋２×ΔＶ”とし、また回復処理を行わない。
【０１５７】
第４例では、このようにベリファイ電圧ＡＶを用いたスマートベリファイにパスした後、ベリファイ電圧ＡＶより高い電圧ＡＶＨを用いたＯＰベリファイ動作を行うことにより、オーバープログラムが発生したか否かを判定する。これにより、オーバープログラムが発生したメモリセルに書き込まれるべきデータに対して回復処理を行うことができ、メモリシステムとしてのデータの損失を防ぐことができる。
【０１５８】
次に、２ステージプログラムにおける第１ステージの書き込み動作に、第２実施形態を適用した例を、第５例として説明する。第５例では、スマートベリファイによる書き込みパラメータの検知を、“ＬＭ”ステートのプログラムベリファイ電圧ＬＭＶを用いて行う。スマートベリファイにパスしたら、ベリファイ電圧ＬＭＶより高いベリファイ電圧ＬＭＶＨを用いたＯＰベリファイ動作を行う。
【０１５９】
図２３は、第５例のフィードバック付き書き込みで行われるプログラム動作とプログラムベリファイ動作におけるワード線電圧を示す。第５例では、図２３に示すように、プログラム動作の後、プログラムベリファイ電圧ＬＭＶをスマートベリファイ電圧として用いてスマートベリファイ動作を行う。スマートベリファイ動作では、閾値電圧がプログラムベリファイ電圧ＬＭＶ以上であると判定されたメモリセルの数が第１閾値以上であるか否かを判定する。スマートベリファイにパスしたら、プログラムベリファイ電圧ＬＭＶより高いベリファイ電圧ＬＭＶＨを用いたＯＰベリファイ動作によりオーバープログラムが発生しているか否かを判定する。
【０１６０】
第５例は、書き込み動作の３回目の書き込みループにおいて、“ＬＭ”ステートのベリファイ電圧ＬＭＶによるスマートベリファイがパスした例を示す。スマートベリファイにパスすると、追加のベリファイ電圧ＬＭＶＨによるＯＰベリファイ動作が行われる。ＯＰベリファイ動作では、閾値電圧がベリファイ電圧ＬＭＶＨを超えたと判定されるメモリセルの数が第２閾値以上であるとき、オーバープログラムが発生していると判定される。
【０１６１】
ＮＡＮＤ型フラッシュメモリ１００は、ベリファイ電圧ＬＭＶによるスマートベリファイにパスした書き込みループ数と、ＯＰベリファイ動作によるオーバープログラム発生の有無情報に基づいてステータス情報を決定し、第２レジスタ１７０Ｂに記憶する。コントローラ２００は、第２レジスタ１７０Ｂから検証結果としてのステータス情報を取得し、ステータス情報に基づいてグループ代表値の更新及び回復処理を行う。
【０１６２】
第４例における図２０、図２１、及び図２２を用いた説明は、電圧ＡＶを電圧ＬＭＶに、電圧ＡＶＨを電圧ＬＭＶＨに、“Ａ”を“ＬＭ”にそれぞれ置き換えれば、第５例においても同様に適用できるため、それらの説明は省略する。その他の構成及び効果は前述した第４例と同様である。
【０１６３】
次に、２ステージプログラムにおける第２ステージの書き込み動作に、第２実施形態を適用した例を、第６例として説明する。第６例では、スマートベリファイによる書き込みパラメータの検知を、“Ａ”ステートのプログラムベリファイ電圧ＡＶを用いて行う。スマートベリファイにパスしたら、ベリファイ電圧ＡＶＨを用いたＯＰベリファイ動作を行う。
【０１６４】
図２４は、第６例のフィードバック付き書き込みで行われるプログラム動作とプログラムベリファイ動作におけるワード線電圧を示す。第６例では、第２ステージにおいて８値を書くためにLowerページのデータ、すなわち“ＬＭ”データの復元が必要である。このため、“ＬＭ”データの読み出し電圧ＬＭＲを用いて読み出しを行う。その後、第４例と同様に、選択ワード線ＷＬに初回の電圧ＶＰＧＭを印加してプログラム動作を行う。プログラム動作の後、プログラムベリファイ電圧ＡＶをスマートベリファイ電圧として用いてスマートベリファイ動作を行う。スマートベリファイ動作では、閾値電圧がプログラムベリファイ電圧ＡＶ以上であると判定されたメモリセルの数が第１閾値以上であるか否かを判定する。スマートベリファイにパスしたら、プログラムベリファイ電圧ＡＶより高いベリファイ電圧ＡＶＨを用いたＯＰベリファイ動作によりオーバープログラムが発生しているか否かを判定する。
【０１６５】
図１９に示した第４例と異なる点は、“Ａ”ステートの書き込み動作前に、読み出し電圧ＬＭＲでの読み出しがあるだけである。その他の構成及び効果は、前述した第４例と同様である。
【０１６６】
＜第３実施形態のフィードバック付き書き込み（第７例〜第９例）＞
次に、第３実施形態のフィードバック付き書き込みを適用した例として、第７例〜第９例を説明する。第７例では、スマートベリファイによる書き込みパラメータの検知を、スマートベリファイ電圧ＳＶを用いて行う。スマートベリファイにパスしたら、“Ａ”ステートのプログラムベリファイ電圧ＡＶを用いたＯＰベリファイ動作を行う。スマートベリファイ電圧ＳＶは、“Ａ”ステートのプログラムベリファイ電圧ＡＶより低い。
【０１６７】
図２５は、第７例のフィードバック付き書き込みで行われるプログラム動作とプログラムベリファイ動作におけるワード線電圧を示す。図２６は、プログラム動作後のメモリセルの閾値電圧分布を示す。第７例では、図２５に示すように、プログラム動作の後、スマートベリファイ電圧ＳＶを用いたスマートベリファイ動作を行い、スマートベリファイにパスしたら、プログラムベリファイ電圧ＡＶを用いたＯＰベリファイ動作を行う。
【０１６８】
図２５に示すように、１回目の書き込みループでは、選択ワード線ＷＬに初回の電圧ＶＰＧＭを印加してプログラム動作を行う。続いて、選択ワード線ＷＬに、スマートベリファイ電圧ＳＶを印加して、スマートベリファイ動作を行う。例えばここでは、閾値電圧がスマートベリファイ電圧ＳＶ以上であると判定されたメモリセルの数が第１閾値以上でなく、スマートベリファイがフェイルであるとして、２回目の書き込みループに進む。
【０１６９】
２回目の書き込みループでは、選択ワード線ＷＬに“電圧ＶＰＧＭ＋ΔＶ”を印加して、プログラム動作を行う。続いて、選択ワード線ＷＬに、スマートベリファイ電圧ＳＶを印加して、スマートベリファイ動作を行う。ここでも、閾値電圧がスマートベリファイ電圧ＳＶ以上であると判定されたメモリセルの数が第１閾値以上でなく、スマートベリファイがフェイルであるとして、３回目の書き込みループに進む。
【０１７０】
３回目の書き込みループでは、選択ワード線ＷＬに“電圧ＶＰＧＭ＋２ΔＶ”を印加して、プログラム動作を行う。続いて、選択ワード線ＷＬに、スマートベリファイ電圧ＳＶを印加して、スマートベリファイ動作を行う。例えばここでは、閾値電圧がスマートベリファイ電圧ＳＶ以上であると判定されたメモリセルの数が第１閾値以上であり、スマートベリファイにパスしたと判定される。スマートベリファイにパスすると、選択ワード線ＷＬにスマートベリファイ電圧ＳＶより高い、“Ａ”ステートのプログラムベリファイ電圧ＡＶを印加して、プログラムベリファイ電圧ＡＶを用いたＯＰベリファイ動作を行う。プログラムベリファイ電圧ＡＶを用いたＯＰベリファイ動作では、閾値電圧がベリファイ電圧ＡＶを超えたと判定されるメモリセルの数が第２閾値以上であるとき、オーバープログラムが発生したと判定される。
【０１７１】
第７例における検証結果に基づいてステータス情報を決定する手法、及び検証結果に基づいたグループ代表値の更新及び回復処理の有無については、図２１及び図２２における電圧ＡＶを電圧ＳＶに置き換えればよく、その他は第４例と同様である。
【０１７２】
第７例では、このようにスマートベリファイ電圧ＳＶを用いたスマートベリファイにパスした後、スマートベリファイ電圧ＳＶより高いプログラムベリファイ電圧ＡＶを用いたＯＰベリファイ動作を行うことにより、オーバープログラムが発生したか否かを判定する。これにより、オーバープログラムが発生したメモリセルに書き込まれるべきデータに対して回復処理を行うことができ、メモリシステムとしてのデータの損失を防ぐことができる。
【０１７３】
次に、２ステージプログラムにおける第１ステージの書き込み動作に、第３実施形態を適用した例を、第８例として説明する。第８例では、スマートベリファイによる書き込みパラメータの検知を、スマートベリファイ電圧ＳＶを用いて行う。スマートベリファイにパスしたら、“ＬＭ”ステートのプログラムベリファイ電圧ＬＭＶを用いたＯＰベリファイ動作を行う。スマートベリファイ電圧ＳＶは、“ＬＭ”ステートのプログラムベリファイ電圧ＬＭＶより低い。
【０１７４】
図２７は、第８例のフィードバック付き書き込みで行われるプログラム動作とプログラムベリファイ動作におけるワード線電圧を示す。第８例は、書き込み動作の３回目の書き込みループにおいて、スマートベリファイ電圧ＳＶによるスマートベリファイがパスした例を示す。スマートベリファイにパスすると、選択ワード線ＷＬにスマートベリファイ電圧ＳＶより高い、“ＬＭ”ステートのプログラムベリファイ電圧ＬＭＶを印加して、ＯＰベリファイ動作を行う。ＯＰベリファイ動作では、閾値電圧がプログラムベリファイ電圧ＬＭＶを超えたと判定されるメモリセルの数が第２閾値以上であるとき、オーバープログラムが発生していると判定される。
【０１７５】
ＮＡＮＤ型フラッシュメモリ１００は、スマートベリファイ電圧ＳＶを用いたスマートベリファイにパスした書き込みループ数と、ＯＰベリファイ動作によるオーバープログラム発生の有無情報に基づいてステータス情報を決定し、第２レジスタ１７０Ｂに記憶する。コントローラ２００は、例えば、取得コマンドによって第２レジスタ１７０Ｂから検証結果としてのステータス情報を取得し、ステータス情報に基づいてグループ代表値の更新及び回復処理を行う。
【０１７６】
第４例における図２０、図２１、及び図２２を用いた説明は、電圧ＡＶを電圧ＳＶに、電圧ＡＶＨを電圧ＬＭＶに、“Ａ”を“ＬＭ”にそれぞれ置き換えれば、第８例においても同様に適用できるため、それらの説明は省略する。その他の構成及び効果は前述した第４例と同様である。
【０１７７】
次に、２ステージプログラムにおける第２ステージの書き込み動作に、第３実施形態を適用した例を、第９例として説明する。第９例では、スマートベリファイによる書き込みパラメータの検知を、スマートベリファイ電圧ＳＶを用いて行う。スマートベリファイにパスしたら、“Ａ”ステートのプログラムベリファイ電圧ＡＶを用いたＯＰベリファイ動作を行う。スマートベリファイ電圧ＳＶは、“Ａ”ステートのプログラムベリファイ電圧ＡＶより低い。
【０１７８】
図２８は、第９例のフィードバック付き書き込みで行われるプログラム動作とプログラムベリファイ動作におけるワード線電圧を示す。第９例では、第２ステージにおいて８値を書くためにLowerページのデータ、すなわち“ＬＭ”データの復元が必要である。このため、“ＬＭ”データの読み出し電圧ＬＭＲを用いて読み出しを行う。その後、第７例と同様に、選択ワード線ＷＬに初回の電圧ＶＰＧＭを印加してプログラム動作を行う。プログラム動作の後、スマートベリファイ電圧ＳＶを用いてスマートベリファイ動作を行う。スマートベリファイにパスしたら、プログラムベリファイ電圧ＡＶを用いたＯＰベリファイ動作を行う。
【０１７９】
図２５に示した第７例と異なる点は、“Ａ”ステートの書き込み動作前に、読み出し電圧ＬＭＲでの読み出しがあるだけである。その他の構成及び効果は、前述した第７例と同様である。
【０１８０】
１．３  タイミングチャート及びコマンドシーケンス
次に、図２９〜図３６を用いて、実施形態の検知書き込み、適用書き込み、及びフィードバック付き書き込みのタイミングチャート及びコマンドシーケンスについて説明する。
【０１８１】
図２９は、実施形態の検知書き込み、適用書き込み、及びフィードバック付き書き込みによるページ書き込みのタイミングチャートの一例である。このタイミングチャートに従い、コントローラ２００がＮＡＮＤ型フラッシュメモリ１００に検知書き込み、適用書き込み、あるいはフィードバック付き書き込みを指示する。各信号は、ハイアクティブ信号（あるいは正論理信号）とローアクティブ信号（あるいは負論理信号）のいずれか一方により表す場合と、正論理信号と負論理信号の両方により表す場合がある。ローアクティブ信号は、本明細書及び図中では信号を表す記号の前に／を、あるいは信号を表す記号にオーバーライン（又は上線）を付して表現する。
【０１８２】
まず、チップイネーブル信号／ＣＥが活性化されるともに、コマンドラッチイネーブル信号ＣＬＥが活性化され、アドレスラッチイネーブル信号ＡＬＥが非活性化され、相補信号であるリードイネーブル信号／ＲＥ及びＲＥが非活性化される。さらに、ライトイネーブル信号／ＷＥが活性化され、Ｉ／Ｏ信号ＤＱｘによるプレフィックスコマンド“ｙｙｈ”が検知書き込みを指示するコマンドとしてＮＡＮＤ型フラッシュメモリ１００に取り込まれる。Ｉ／Ｏ信号は、複数ビットの信号、例えばＤＱ０〜ＤＱ７からなるが、複数ビットをまとめてＩ／Ｏ信号ＤＱｘと称する。なお、適用書き込みを指示する場合は“ｙｙｈ”と異なる“ｙｘｈ”を用い、フィードバック付き書き込みを指示する場合は“ｙｙｈ”、“ｙｘｈ”と異なる“ｙｚｈ”をそれぞれ用いる。あるいは、プレフィックスコマンドを付加しないことによって、適用書き込みを指示してもよい。
【０１８３】
次に、コマンドラッチイネーブル信号ＣＬＥが非活性化され、アドレスラッチイネーブル信号ＡＬＥが活性化され、ライトイネーブル信号／ＷＥの活性化に同期して、Ｉ／Ｏ信号ＤＱｘにより書き込み先のカラムアドレス(Column Address)とロウアドレス(Row Address)がＮＡＮＤ型フラッシュメモリ１００に取り込まれる。
【０１８４】
この後、アドレスラッチイネーブル信号ＡＬＥが非活性化され、データストローブ信号ＤＱＳ及び／ＤＱＳのトグルに同期して書き込みデータＤ０，Ｄ１，…，ＤＮがＮＡＮＤ型フラッシュメモリ１００に取り込まれる。データＤ０，Ｄ１，…，ＤＮは、１ページ分のデータに相当する。
【０１８５】
データが取り込まれた後、Ｉ／Ｏ信号ＤＱｘによりチップ内部のプログラム開始コマンド“１０ｈ”がＮＡＮＤ型フラッシュメモリ１００に伝送され、プログラム動作が開始される。書き込み期間ｔPROGは、レディ／ビジー信号（Ｒ／Ｂ）がビジーとされる。
【０１８６】
その後、Ｉ／Ｏ信号ＤＱｘによりステータスリードコマンド“７０ｈ”がＮＡＮＤ型フラッシュメモリ１００に伝送される。続いて、例えばＩ／Ｏ信号ＤＱ０がＮＡＮＤ型フラッシュメモリ１００からコントローラ２００に返信される。コントローラ２００は、Ｉ／Ｏ信号ＤＱ０によりプログラム動作が成功したか、失敗したかを判定する。例えば、Ｉ／Ｏ信号ＤＱ０＝０ならばプログラム動作が成功と判定され、Ｉ／Ｏ信号ＤＱ０＝１ならばプログラム動作が失敗と判定される。
【０１８７】
以降の図でも同様であるが、コマンドを示す英数字はあくまでも一例であり、これらの英数字に何ら限定されない。
【０１８８】
図３０は、フルシーケンスプログラムによる検知書き込み、適用書き込み、及びフィードバック付き書き込みを指示するコマンドシーケンスを示す。このコマンドシーケンスに従い、コントローラ２００がＮＡＮＤ型フラッシュメモリ１００に検知書き込み、適用書き込み、あるいはフィードバック付き書き込みを指示する。なお、１行目の時間軸のＡ端は２行目の時間軸のＡ端に続き、２行目の時間軸のＢ端は３行目の時間軸のＢ端に続く。
【０１８９】
前述したように、プレフィックスコマンド“ｙｚｈ”は、フィードバック付き書き込みを示し、図示しないプレフィックスコマンド“ｙｙｈ”は検知書き込みを、プレフィックスコマンド“ｙｘｈ”は適用書き込みをそれぞれ示す。このように、プレフィックスコマンドの種類により、検知書き込み、適用書き込み、あるいはフィードバック付き書き込みのいずれかを指示することができる。あるいは、プレフィックスコマンドを付加しないことによって、適用書き込みを指示してもよい。図３０では、フィードバック付き書き込みを指示する場合を示す。
【０１９０】
Ｉ／Ｏ信号ＤＱｘにより、フィードバック付き書き込みを指示するプレフィックスコマンド“ｙｚｈ”が伝送され、プレフィックスコマンド“ｙｚｈ”に後続してデータが伝送される。このデータは、書き込みパラメータを示す情報を含む。ＮＡＮＤ型フラッシュメモリ１００は、プレフィックスコマンド“ｙｚｈ”に後続するデータを受け取り、このデータに基づいて第１レジスタ１７０Ａに書き込みパラメータを設定する。ここでは、プレフィックスコマンド“ｙｚｈ”の伝送直後に、データにより書き込みパラメータを伝送したが、セットフィーチャー（Set feature）コマンドによって書き込みパラメータを伝送してもよい。セットフィーチャーコマンドについては後述する。
【０１９１】
プレフィックスコマンド“ｙｚｈ”に後続してデータが伝送された後、lowerページを示すコマンド“０１ｈ”が伝送され、その後、データ入力を示すコマンド“８０ｈ”が伝送される。データ入力コマンド“８０ｈ”は、通常の書き込みコマンドと同じであってもよい。
【０１９２】
次に、図２９に示したシーケンスと同様にデータ入力コマンド“８０ｈ”に続いて、カラムアドレスＣＡ１，ＣＡ２、ロウアドレスＲＡ１，ＲＡ２，ＲＡ３が供給される。ロウアドレスＲＡ３に後続するデータ入力は、図２９に示した書き込みデータＤ０，Ｄ１，…，ＤＮに対応する。データＤ０，Ｄ１，…，ＤＮは、１ページ（lowerページ）分のデータに相当する。
【０１９３】
lowerページのデータ入力後のコマンド“１Ａｈ”は、例えば、ＮＡＮＤ型フラッシュメモリ１００内の内部バッファ（図示しない）に書き込みデータを一時的に保持させるコマンドである。書き込みデータの内部バッファへの転送中は、レディ／ビジー信号（Ｒ／Ｂ）がビジーとされる。
【０１９４】
その後、lowerページの場合と同様に、middleページを示すコマンド“０２ｈ”が伝送された後、middleページの書き込みデータが供給され、さらに、upperページを示すコマンド“０３ｈ”が伝送された後、upperページの書き込みデータが供給される。upperページのデータ入力後のコマンド“１０ｈ”は、ＮＡＮＤ型フラッシュメモリ１００内部のプログラム開始コマンドであり、これによりメモリセルアレイ１１０への書き込みデータの一括書き込みが開始される。書き込み期間ｔPROGは、レディ／ビジー信号（Ｒ／Ｂ）がビジーとされる。
【０１９５】
図３１（ａ），（ｂ）は、２ステージプログラムによる検知書き込み、適用書き込み、及びフィードバック付き書き込みを指示するコマンドシーケンスを示す。このコマンドシーケンスに従い、コントローラ２００がＮＡＮＤ型フラッシュメモリ１００に検知書き込み、適用書き込み、あるいはフィードバック付き書き込みを指示する。
【０１９６】
図３１（ａ）は第１ステージの書き込みを表し、図３１（ｂ）は第２ステージの書き込みを表す。前述したように、プレフィックスコマンド“ｙｚｈ”は、フィードバック付き書き込みを示し、図示しないプレフィックスコマンド“ｙｙｈ”は検知書き込みを、プレフィックスコマンド“ｙｘｈ”は適用書き込みをそれぞれ示す。あるいは、プレフィックスコマンドを付加しないことによって、適用書き込みを指示してもよい。図３１（ａ），（ｂ）では、フィードバック付き書き込みを指示する場合を示す。
【０１９７】
第１ステージの書き込みは、図３１（ａ）に示すように実行される。まず、Ｉ／Ｏ信号ＤＱｘにより、フィードバック付き書き込みを指示するプレフィックスコマンド“ｙｚｈ”が伝送され、プレフィックスコマンド“ｙｚｈ”に後続してデータが伝送される。ＮＡＮＤ型フラッシュメモリ１００は、プレフィックスコマンド“ｙｚｈ”に後続するデータを受け取り、このデータに基づいて第１レジスタ１７０Ａに書き込みパラメータを設定する。データによる書き込みパラメータの伝送に換えて、セットフィーチャーコマンドによって書き込みパラメータを伝送してもよい。
【０１９８】
プレフィックスコマンド“ｙｚｈ”に後続してデータが伝送された後、lowerページを示すコマンド“０１ｈ”が伝送され、その後、データ入力を示すコマンド“８０ｈ”が伝送される。データ入力コマンド“８０ｈ”に続いて、カラムアドレスＣＡ１，ＣＡ２、及びロウアドレスＲＡ１，ＲＡ２，ＲＡ３が供給される。さらに、ロウアドレスＲＡ３に後続して、書き込みデータが供給される。
【０１９９】
lowerページの書き込みデータ供給後のコマンド“１０ｈ”は、ＮＡＮＤ型フラッシュメモリ１００内部のプログラム開始コマンドであり、これによりメモリセルアレイ１１０への書き込みデータの書き込みが開始される。書き込み期間ｔPROG1は、レディ／ビジー信号（Ｒ／Ｂ）がビジーとされる。
【０２００】
次に、第２ステージの書き込みは、図３１（ｂ）に示すように実行される。まず、Ｉ／Ｏ信号ＤＱｘにより、フィードバック付き書き込みを指示するプレフィックスコマンド“ｙｚｈ”が伝送され、プレフィックスコマンド“ｙｚｈ”に後続してデータが伝送される。ＮＡＮＤ型フラッシュメモリ１００は、プレフィックスコマンド“ｙｚｈ”に後続するデータを受け取り、このデータに基づいて第１レジスタ１７０Ａに書き込みパラメータを設定する。データによる書き込みパラメータの伝送に換えて、セットフィーチャーコマンドによって書き込みパラメータを伝送してもよい。
【０２０１】
プレフィックスコマンド“ｙｚｈ”に後続してデータが伝送された後、middleページを示すコマンド“０２ｈ”が伝送され、その後、データ入力を示すコマンド“８０ｈ”が伝送される。データ入力コマンド“８０ｈ”に続いて、カラムアドレスＣＡ１，ＣＡ２、及びロウアドレスＲＡ１，ＲＡ２，ＲＡ３が供給される。さらに、ロウアドレスＲＡ３に後続して、書き込みデータが供給される。書き込みデータ供給後のコマンド“１Ａｈ”は、ＮＡＮＤ型フラッシュメモリ１００内のバッファに書き込みデータを一時的に保持させるコマンドである。
【０２０２】
その後、middleページの場合と同様に、upperページを示すコマンド“０３ｈ”が伝送された後、upperページの書き込みデータが供給される。upperページの書き込みデータ供給後のコマンド“１０ｈ”は、ＮＡＮＤ型フラッシュメモリ１００内部のプログラム開始コマンドであり、これによりメモリセルアレイ１１０への書き込みデータの書き込みが開始される。書き込み期間ｔPROG2は、レディ／ビジー信号（Ｒ／Ｂ）がビジーとされる。
【０２０３】
図３２（ａ），（ｂ）は、foggy & fineによる検知書き込み、適用書き込み、及びフィードバック付き書き込みを指示するコマンドシーケンスを示す。foggy & fineでは、第１ステージの書き込みで粗く書き込み、第２ステージの書き込みで詳細に書き込む。このコマンドシーケンスに従い、コントローラ２００がＮＡＮＤ型フラッシュメモリ１００に検知書き込み、適用書き込み、あるいはフィードバック付き書き込みを指示する。
【０２０４】
図３２（ａ）は第１ステージの書き込みを表し、図３２（ｂ）は第２ステージ２段階目の書き込みを表す。前述したように、プレフィックスコマンド“ｙｚｈ”は、フィードバック付き書き込みを示し、図示しないプレフィックスコマンド“ｙｙｈ”は検知書き込みを、プレフィックスコマンド“ｙｘｈ”は適用書き込みをそれぞれ示す。あるいは、プレフィックスコマンドを付加しないことによって、適用書き込みを指示してもよい。図３２（ａ），（ｂ）では、フィードバック付き書き込みを指示する場合を示す。
【０２０５】
第１ステージの書き込みは、図３２（ａ）に示すように実行される。まず、Ｉ／Ｏ信号ＤＱｘにより、フィードバック付き書き込みを指示するプレフィックスコマンド“ｙｚｈ”が伝送され、プレフィックスコマンド“ｙｚｈ”に後続してデータが伝送される。ＮＡＮＤ型フラッシュメモリ１００は、プレフィックスコマンド“ｙｚｈ”に後続するデータを受け取り、このデータに基づいて第１レジスタ１７０Ａに書き込みパラメータを設定する。データによる書き込みパラメータの伝送に換えて、セットフィーチャーコマンドによって書き込みパラメータを伝送してもよい。
【０２０６】
プレフィックスコマンド“ｙｚｈ”に後続してデータが伝送された後、lowerページを示すコマンド“０１ｈ”が伝送され、その後、データ入力を示すコマンド“８０ｈ”が伝送される。データ入力コマンド“８０ｈ”に続いて、カラムアドレスＣＡ１，ＣＡ２、及びロウアドレスＲＡ１，ＲＡ２，ＲＡ３が供給される。さらに、ロウアドレスＲＡ３に後続して、書き込みデータが供給される。lowerページの書き込みデータ供給後のコマンド“１Ａｈ”は、ＮＡＮＤ型フラッシュメモリ１００内の内部バッファに書き込みデータを一時的に保持させるコマンドである。
【０２０７】
その後、lowerページの場合と同様に、middleページを示すコマンド“０２ｈ”が伝送された後、middleページの書き込みデータが供給される。middleページの書き込みデータ供給後のコマンド“１Ａｈ”は、ＮＡＮＤ型フラッシュメモリ１００内の内部バッファに書き込みデータを一時的に保持させるコマンドである。
【０２０８】
その後、middleページの場合と同様に、upperページを示すコマンド“０３ｈ”が伝送された後、upperページの書き込みデータが供給される。upperページの書き込みデータ供給後のコマンド“１０ｈ”は、ＮＡＮＤ型フラッシュメモリ１００内部のプログラム開始コマンドであり、これによりメモリセルアレイ１１０への書き込みデータの書き込みが開始される。書き込み期間ｔPROG2は、レディ／ビジー信号（Ｒ／Ｂ）がビジーとされる。
【０２０９】
次に、第２ステージの書き込みは、図３２（ｂ）に示すように実行される。まず、Ｉ／Ｏ信号ＤＱｘにより、フィードバック付き書き込みを指示するプレフィックスコマンド“ｙｚｈ”が伝送され、プレフィックスコマンド“ｙｚｈ”に後続してデータが伝送される。ＮＡＮＤ型フラッシュメモリ１００は、プレフィックスコマンド“ｙｚｈ”に後続するデータを受け取り、このデータに基づいて第１レジスタ１７０Ａに書き込みパラメータを設定する。データによる書き込みパラメータの伝送に換えて、セットフィーチャーコマンドによって書き込みパラメータを伝送してもよい。
【０２１０】
プレフィックスコマンド“ｙｚｈ”に後続してデータが伝送された後、lowerページを示すコマンド“０１ｈ”が伝送され、その後、データ入力を示すコマンド“８０ｈ”が伝送される。データ入力コマンド“８０ｈ”に続いて、カラムアドレスＣＡ１，ＣＡ２、及びロウアドレスＲＡ１，ＲＡ２，ＲＡ３が供給される。さらに、ロウアドレスＲＡ３に後続して、書き込みデータが供給される。lowerページの書き込みデータ供給後のコマンド“１Ａｈ”は、ＮＡＮＤ型フラッシュメモリ１００内の内部バッファに書き込みデータを一時的に保持させるコマンドである。
【０２１１】
その後、lowerページの場合と同様に、middleページを示すコマンド“０２ｈ”が伝送された後、middleページの書き込みデータが供給される。middleページの書き込みデータ供給後のコマンド“１Ａｈ”は、ＮＡＮＤ型フラッシュメモリ１００内の内部バッファに書き込みデータを一時的に保持させるコマンドである。
【０２１２】
その後、middleページの場合と同様に、upperページを示すコマンド“０３ｈ”が伝送された後、upperページの書き込みデータが供給される。upperページの書き込みデータ供給後のコマンド“１０ｈ”は、ＮＡＮＤ型フラッシュメモリ１００内部のプログラム開始コマンドであり、これによりメモリセルアレイ１１０への書き込みデータの書き込みが開始される。書き込み期間ｔPROG2は、レディ／ビジー信号（Ｒ／Ｂ）がビジーとされる。
【０２１３】
次に、検知書き込み及びフィードバック付き書き込みによる検証結果をコントローラ２００がＮＡＮＤ型フラッシュメモリ１００から取得するための実装例として、ステータスリードコマンドまたはゲットフィーチャー（Get feature）コマンドを用いた場合について説明する。
【０２１４】
まず、ステータスリードコマンドを用いて、コントローラ２００がＮＡＮＤ型フラッシュメモリ１００から検証結果を取得する場合を述べる。図３３は、検知書き込み及びフィードバック付き書き込みによる検証結果を読み出すステータスリードコマンドのタイミングチャートを示す。このタイミングチャートに従い、コントローラ２００はＮＡＮＤ型フラッシュメモリ１００にステータスリードを指示する。図３４は、ステータスリードコマンドで出力されるステータス情報の詳細を示す。
【０２１５】
まず、チップイネーブル信号／ＣＥが活性化されるともに、コマンドラッチイネーブル信号ＣＬＥが活性化され、アドレスラッチイネーブル信号ＡＬＥが非活性化され、相補信号であるリードイネーブル信号／ＲＥ及びＲＥが非活性化される。さらに、ライトイネーブル信号／ＷＥが活性化され、Ｉ／Ｏ信号ＤＱｘによる“７Ｘｈ”がステータスリード動作を指示するコマンドとしてＮＡＮＤ型フラッシュメモリ１００に取り込まれる。
【０２１６】
次に、コマンドラッチイネーブル信号ＣＬＥが非活性化され、リードイネーブル信号／ＲＥ及びＲＥのトグルに同期して、第２レジスタ１７０Ｂからステータス情報が取得される。さらに、データストローブ信号ＤＱＳ及び／ＤＱＳのトグルに同期して、ステータス情報がＮＡＮＤ型フラッシュメモリ１００からコントローラ２００へ出力される。図３４に示すように、コントローラ２００からのステータスリードコマンドで出力されるステータス情報ＩＯ７〜ＩＯ０は、例えばＩＯ４〜ＩＯ２に検証結果を含む。ＩＯ０及びＩＯ１は、例えばそれぞれ、自ら及び他のＮＡＮＤ型フラッシュメモリチップに対する書き込み動作がパスしたか、あるいはフェイルしたかを示す情報であり、その他については説明を省略する。
【０２１７】
次に、ゲットフィーチャーコマンドを用いて、コントローラ２００がＮＡＮＤ型フラッシュメモリ１００から検証結果を取得する場合を述べる。図３５は、検知書き込み及びフィードバック付き書き込みによる検証結果を得るためのゲットフィーチャーコマンドのタイミングチャートを示す。このタイミングチャートに従い、コントローラ２００はＮＡＮＤ型フラッシュメモリ１００にゲットフィーチャーを指示する。ゲットフィーチャーは、第２レジスタ１７０Ｂのアドレス“ＸＸｈ”からデータＲ−Ｂ０、Ｒ−Ｂ１、Ｒ−Ｂ２、Ｒ−Ｂ３を取得するものである。第２レジスタ１７０Ｂのアドレス“ＸＸｈ”には、書き込みパラメータを示す情報が記憶されているものとする。
【０２１８】
まず、チップイネーブル信号／ＣＥが活性化されるともに、コマンドラッチイネーブル信号ＣＬＥと、アドレスラッチイネーブル信号ＡＬＥと、ライトイネーブル信号／ＷＥとリードイネーブル信号／ＲＥ及びＲＥが非活性化される。
【０２１９】
この後、コマンドラッチイネーブル信号ＣＬＥとライトイネーブル信号／ＷＥが活性化され、Ｉ／Ｏ信号ＤＱｘによりコマンド“ＥＥｈ”が伝送される。ライトイネーブル信号／ＷＥの立ち上がりに同期して、Ｉ／Ｏ信号ＤＱｘの“ＥＥｈ”がコマンドとしてＮＡＮＤ型フラッシュメモリ１００に取り込まれる。コマンド“ＥＥｈ”は、ゲットフィーチャー動作の開始を指示する。
【０２２０】
次に、コマンドラッチイネーブル信号ＣＬＥが非活性化され、アドレスラッチイネーブル信号ＡＬＥとライトイネーブル信号／ＷＥが活性化され、Ｉ／Ｏ信号ＤＱｘにより“ＸＸｈ”が伝送される。ライトイネーブル信号／ＷＥの立ち上がりに同期して、Ｉ／Ｏ信号ＤＱｘの“ＸＸｈ”がアドレスとしてフラッシュメモリ１００に取り込まれる。
【０２２１】
その後、アドレスラッチイネーブル信号ＡＬＥが非活性化され、Ｉ／Ｏ信号ＤＱｘによりＲ−Ｂ０、Ｒ−Ｂ１、Ｒ−Ｂ２、Ｒ−Ｂ３がコントローラ２００に伝送される。コントローラ２００がリードイネーブル信号／ＲＥ及びＲＥをトグルすることに応じて、ＮＡＮＤ型フラッシュメモリ１００がデータストローブ信号ＤＱＳ及び／ＤＱＳをトグルさせる。そして、データストローブ信号ＤＱＳ及び／ＤＱＳのトグルに同期して、Ｉ／Ｏ信号ＤＱｘのＲ−Ｂ０、Ｒ−Ｂ１、Ｒ−Ｂ２、Ｒ−Ｂ３がデータとしてコントローラ２００に取得される。コントローラ２００は、取得したデータに基づいた書き込みパラメータをグループ代表値として書き込みパラメータテーブル２２０Ａ_２に記憶する。以上により、ＮＡＮＤ型フラッシュメモリ１００の第２レジスタ１７０Ｂに記憶された書き込みパラメータを示す情報が、ゲットフィーチャーコマンドによってコントローラ２００に伝送される。
【０２２２】
次に、検知書き込み及びフィードバック付き書き込みにおいて、書き込みパラメータをＮＡＮＤ型フラッシュメモリ１００の第１レジスタ１７０Ａにセットするための実装例として、セットフィーチャー（Set feature）コマンドを用いた場合について説明する。
【０２２３】
図３６は、検知書き込み及びフィードバック付き書き込みにおいて書き込みパラメータを第１レジスタ１７０Ａにセットするためのセットフィーチャーコマンドのタイミングチャートを示す。このタイミングチャートに従い、コントローラ２００はＮＡＮＤ型フラッシュメモリ１００にセットフィーチャー動作を指示する。セットフィーチャーコマンドは、ＮＡＮＤ型フラッシュメモリ１００のアドレス“ＸＸｈ”の第１レジスタ１７０Ａに、書き込みパラメータを表すデータＷ−Ｂ０、Ｗ−Ｂ１、Ｗ−Ｂ２、Ｗ−Ｂ３を設定するものである。
【０２２４】
まず、チップイネーブル信号／ＣＥが活性化されるともに、コマンドラッチイネーブル信号ＣＬＥとアドレスラッチイネーブル信号ＡＬＥとライトイネーブル信号／ＷＥとリードイネーブル信号／ＲＥ及びＲＥが非活性化される。
【０２２５】
この後、コマンドラッチイネーブル信号ＣＬＥとライトイネーブル信号／ＷＥが活性化され、Ｉ／Ｏ信号ＤＱｘにより“ＥＦｈ”が伝送される。ライトイネーブル信号／ＷＥの立ち上がりに同期して、Ｉ／Ｏ信号ＤＱｘの“ＥＦｈ”がコマンドとしてＮＡＮＤ型フラッシュメモリ１００に取り込まれる。コマンド“ＥＦｈ”はセットフィーチャー動作の開始を指示する。
【０２２６】
次に、コマンドラッチイネーブル信号ＣＬＥが非活性化され、アドレスラッチイネーブル信号ＡＬＥとライトイネーブル信号／ＷＥが活性化され、Ｉ／Ｏ信号ＤＱｘにより“ＸＸｈ”が伝送される。ライトイネーブル信号／ＷＥの立ち上がりに同期して、Ｉ／Ｏ信号ＤＱｘの“ＸＸｈ”がアドレスとしてＮＡＮＤ型フラッシュメモリ１００に取り込まれる。
【０２２７】
その後、アドレスラッチイネーブル信号ＡＬＥが非活性化され、Ｉ／Ｏ信号ＤＱｘにより書き込みパラメータを表すデータＷ−Ｂ０、Ｗ−Ｂ１、Ｗ−Ｂ２、Ｗ−Ｂ３がＮＡＮＤ型フラッシュメモリ１００に伝送される。データストローブ信号ＤＱＳ及び／ＤＱＳのトグルに同期して、Ｉ／Ｏ信号ＤＱｘのＷ−Ｂ０、Ｗ−Ｂ１、Ｗ−Ｂ２、Ｗ−Ｂ３がデータとしてＮＡＮＤ型フラッシュメモリ１００に取り込まれる。ＮＡＮＤ型フラッシュメモリ１００に取り込まれたデータＷ−Ｂ０、Ｗ−Ｂ１、Ｗ−Ｂ２、Ｗ−Ｂ３は、第１レジスタ１７０Ａのアドレス“ＸＸｈ”に設定される。以上により、コントローラ２００の書き込みパラメータテーブル２２０Ａ_２に記憶されたグループ代表値が、セットフィーチャーによって書き込みパラメータとして第１レジスタ１７０Ａに記憶される。
【０２２８】
１．４  本実施形態の効果
本実施形態によれば、書き込み動作におけるプログラムベリファイ動作に追加のベリファイ電圧によるベリファイ動作を設けることにより、書き込み対象のメモリセルに対して現行の書き込みパラメータが過小、適正、過大、あるいは過大のためにオーバープログラムが発生しているか否かを検証し、検証結果に基づいて次回の書き込み動作で用いる書き込みパラメータを動的に調整する。
【０２２９】
これにより、次回の書き込み動作において、調整した書き込みパラメータを用いてプログラム動作を行うことにより、書き込みループ数を低減でき、書き込み動作を高速化することができる。また、メモリセルにオーバープログラムが発生しているか否かを判定することにより、オーバープログラムが発生していると判定した場合には、オーバープログラムが発生したメモリセルに書き込まれるべきデータに対して回復処理を行うことができ、メモリシステムとしてのデータの損失を防ぐことができる。以上により、書き込み性能を向上させることが可能である。
【０２３０】
２．その他変形例等
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０２３１】
１…メモリシステム、１００…ＮＡＮＤ型フラッシュメモリ、１１０…メモリセルアレイ、１２０…ロウデコーダ、１３０…ドライバ、１４０…センスアンプ、１５０…アドレスレジスタ、１６０…コマンドレジスタ、１７０…レジスタ、１７０Ａ…第１レジスタ、１７０Ｂ…第２レジスタ、１８０…シーケンサ、２００…コントローラ、２１０…ホストインターフェース（Ｉ／Ｆ）回路、２２０…内蔵メモリ（ＲＡＭ）、２２０Ａ…グループ代表値管理テーブル群、２２０Ａ_１…グループ定義テーブル、２２０Ａ_２…書き込みパラメータテーブル、２２０Ａ_３…サイクル定義テーブル、２２０Ａ_４…スケジュールテーブル、２３０…プロセッサ（ＣＰＵ）、２４０…バッファメモリ、２５０…ＮＡＮＤインターフェース（Ｉ／Ｆ）回路、２６０…ＥＣＣ（Error Checking and Correcting）回路、３００…ホストデバイス。
【図１】
2020009511.tif 000003
【図２】
2020009511.tif 000004
【図３】
2020009511.tif 000005
【図４】
2020009511.tif 000006
【図５】
2020009511.tif 000007
【図６】
2020009511.tif 000008
【図７Ａ】
2020009511.tif 000009
【図７Ｂ】
2020009511.tif 000010
【図７Ｃ】
2020009511.tif 000011
【図７Ｄ】
2020009511.tif 000012
【図８】
2020009511.tif 000013
【図９】
2020009511.tif 000014
【図１０】
2020009511.tif 000015
【図１１】
2020009511.tif 000016
【図１２】
2020009511.tif 000017
【図１３】
2020009511.tif 000018
【図１４】
2020009511.tif 000019
【図１５】
2020009511.tif 000020
【図１６】
2020009511.tif 000021
【図１７】
2020009511.tif 000022
【図１８】
2020009511.tif 000023
【図１９】
2020009511.tif 000024
【図２０】
2020009511.tif 000025
【図２１】
2020009511.tif 000026
【図２２】
2020009511.tif 000027
【図２３】
2020009511.tif 000028
【図２４】
2020009511.tif 000029
【図２５】
2020009511.tif 000030
【図２６】
2020009511.tif 000031
【図２７】
2020009511.tif 000032
【図２８】
2020009511.tif 000033
【図２９】
2020009511.tif 000034
【図３０】
2020009511.tif 000035
【図３１】
2020009511.tif 000036
【図３２】
2020009511.tif 000037
【図３３】
2020009511.tif 000038
【図３４】
2020009511.tif 000039
【図３５】
2020009511.tif 000040
【図３６】
2020009511.tif 000041