(57)【要約】【課題】信頼性の向上を図ることができる不揮発性半導体記憶装置を実現する。【解決手段】不揮発性半導体記憶装置は、複数の不揮発性メモリセルを含むメモリセルアレイと、前記メモリセルアレイに対するデータ書き込み動作を制御する制御回路とを具備する。制御回路は、第１の書き込みモードにおいては、書き込みデータに応じて前記複数のビット線内の一つ以上のビット線を充電する動作と、前記アドレスに応じて選択される前記複数のワード線内の選択ワード線に書き込み電圧を印加する動作とを含む第１の書き込み動作し、第２の書き込みモードにおいては、前記書き込みデータに応じて前記一つ以上のビット線を充電する動作を含む第２の書き込み動作であって、前記選択ワード線に前記書き込み電圧を印加する動作が省略された第２の書き込み動作を実行する。【選択図】図１０
2018147543.tif 000002
【特許請求の範囲】
【請求項１】
複数の不揮発性メモリセルを含み、複数のビット線と複数のワード線に接続されたメモリセルアレイと、
外部から受信されるアドレスおよび書き込みデータに応じて前記メモリセルアレイに対するデータ書き込み動作を制御する制御回路を具備し、
前記制御回路は、第１の書き込みモードにおいては、前記書き込みデータに応じて前記複数のビット線内の一つ以上のビット線を充電する動作と、前記アドレスに応じて選択される前記複数のワード線内の選択ワード線に書き込み電圧を印加する動作とを含む第１の書き込み動作し、第２の書き込みモードにおいては、書き込みデータに応じて前記一つ以上のビット線を充電する動作を含む第２の書き込み動作であって、前記選択ワード線に前記書き込み電圧を印加する動作が省略された第２の書き込み動作を実行する不揮発性半導体記憶装置。
【請求項２】
前記第２の書き込み動作においては、前記一つ以上のビット線を充電する動作と、前記一つ以上のビット線を基準電圧にリセットする動作とが繰り返される請求項１記載の不揮発性半導体記憶装置。
【請求項３】
前記制御回路は、前記第１の書き込みモードにおいては、前記第１の書き込み動作と、前記選択ワード線に接続されたメモリセル群に書き込まれたデータを検証するベリファイ動作とを実行し、前記第２の書き込みモードにおいては、前記第２の書き込み動作を実行し、前記ベリファイ動作の実行を省略する請求項１記載の不揮発性半導体記憶装置。
【請求項４】
前記制御回路は、前記第２の書き込みモードにおいては、書き込みデータを自動生成し、前記自動生成された書き込みデータに応じて前記一つ以上のビット線を充電する請求項１記載の不揮発性半導体記憶装置。
【請求項５】
外部とのデータ入出力を実行する入出力回路と、
データパスを介して前記入出力回路に接続され、書き込みデータまたは読み出しデータを一時的に保持するデータバッファをさらに具備し、
前記制御回路は、前記第２の書き込み動作の実行中に、前記データバッファに第１のデータをロードし、前記データパスを介して前記データバッファから内部レジスタへのデータ転送を実行し、前記データパスを介して前記内部レジスタから前記データバッファへデータを戻し、前記データバッファに戻されたデータと前記第１のデータとを比較することによって得られる結果をステータスレジスタに設定する請求項１記載の不揮発性半導体記憶装置。
【請求項６】
前記制御回路は、前記第２の書き込み動作の完了後に前記不揮発性半導体記憶装置内の温度を取得し、前記取得した温度を、外部からのコマンドに応じて出力する請求項１記載の不揮発性半導体記憶装置。
【請求項７】
複数の不揮発性メモリセルを含み、複数のビット線と複数のワード線に接続されたメモリセルアレイと、
前記複数のワード線内の選択ワード線に接続された第１の不揮発性メモリセル群にｍ（ｍは２以上の整数）ページのデータを書き込んで前記第１の不揮発性メモリセル群の各不揮発性メモリセルを互いに閾値電圧レベルが異なる２ｍ個の状態のいずれかに設定する制御回路とを具備し、
前記制御回路は、
前記２ｍ個の状態内の第１の状態に対応する第１の読み出し電圧を前記選択ワード線に印加して、前記第１の不揮発性メモリセル群から第１のデータを読み出し、
前記第１の状態よりも閾値電圧レベルの高い第２の状態に対応する第２の読み出し電圧を前記選択ワード線に印加して前記第１の不揮発性メモリセル群から第２のデータを読み出し、
前記第１の状態に対応し且つ前記第１の読み出し電圧よりも高い第３の読み出し電圧を前記選択ワード線に印加して、前記第１の不揮発性メモリセル群から第３のデータを読み出し、
前記第２の状態に対応し且つ前記第２の読み出し電圧よりも高い第４の読み出し電圧を前記選択ワード線に印加して前記第１の不揮発性メモリセル群から第４のデータを読み出し、
前記第１、第２、第３、第４のデータに基づいて、前記選択ワード線に印加される読み出し電圧の値に応じて変化する、オンした不揮発性メモリセルの数を計数するように構成され、
前記第２のデータの読み出し動作から前記第３のデータの読み出し動作への遷移時に、前記選択ワード線および前記複数のビット線は放電され、前記複数のビット線の電圧は基準電圧からプリチャージ電圧に上昇される、不揮発性半導体記憶装置。
【請求項８】
前記制御回路は、前記第２のデータの読み出し動作の期間中に、前記第１のデータに基づいて、前記第１の読み出し電圧の印加によってオンした不揮発性メモリセルの数を示すオン・セル数を計数し、前記第３のデータの読み出し動作の期間中に、前記第２のデータに基づいて、前記第２の読み出し電圧の印加によってオンした不揮発性メモリセルの数を示すオン・セル数を計数し、前記第４のデータの読み出し動作の期間中に、前記第３のデータに基づいて、前記第３の読み出し電圧の印加によってオンした不揮発性メモリセルの数を示すオン・セル数を計数し、前記選択ワード線および前記複数のビット線をリセットする動作の期間中に、前記第４のデータに基づいて、前記第４の読み出し電圧の印加によってオンした不揮発性メモリセルの数を示すオン・セル数を計数する請求項７記載の不揮発性半導体記憶装置。
【請求項９】
前記制御回路は、前記第４のデータの読み出し動作の期間中に、前記第１のデータおよび前記第３のデータに基づいて、前記第１の読み出し電圧の印加によってオンした不揮発性メモリセルの数を示すオン・セル数と前記第３の読み出し電圧の印加によってオンした不揮発性メモリセルの数を示すオン・セル数との差分を計数し、前記選択ワード線および前記複数のビット線をリセットする動作の期間中に、前記第２のデータおよび前記第４のデータに基づいて、前記第２の読み出し電圧の印加によってオンした不揮発性メモリセルの数を示すオン・セル数と前記第４の読み出し電圧の印加によってオンした不揮発性メモリセルの数を示すオン・セル数との差分を計数する請求項７記載の不揮発性半導体記憶装置。
【請求項１０】
前記制御回路は、メモリコントローラからの第１のコマンドに応じて、前記第１、第２、第３、第４のデータを読み出し且つ前記オン・セル数それぞれを計数し、前記メモリコントローラからの第２のコマンドに応じて、前記オン・セル数それぞれを示すデジタル値を前記メモリコントローラに出力する請求項７記載の不揮発性半導体記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、不揮発性半導体記憶装置に関する。
【背景技術】
【０００２】
近年、ＮＡＮＤ型フラッシュメモリのような不揮発性半導体記憶装置においては、その信頼性の向上を図るための技術が求められている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００６−１２３６７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明が解決しようとする課題は、信頼性の向上を図ることができる不揮発性半導体記憶装置を提供することである。
【課題を解決するための手段】
【０００５】
実施形態によれば、不揮発性半導体記憶装置は、複数の不揮発性メモリセルを含み、複数のビット線と複数のワード線に接続されたメモリセルアレイと、外部から受信されるアドレスおよび書き込みデータに応じて前記メモリセルアレイに対するデータ書き込み動作を制御する制御回路とを具備する。前記制御回路は、第１の書き込みモードにおいては、前記書き込みデータに応じて前記複数のビット線内の一つ以上のビット線を充電する動作と、前記アドレスに応じて選択される前記複数のワード線内の選択ワード線に書き込み電圧を印加する動作とを含む第１の書き込み動作し、第２の書き込みモードにおいては、書き込みデータに応じて前記一つ以上のビット線を充電する動作を含む第２の書き込み動作であって、前記選択ワード線に前記書き込み電圧を印加する動作が省略された第２の書き込み動作を実行する。
【０００６】
また、実施形態によれば、不揮発性半導体記憶装置は、複数の不揮発性メモリセルを含み、複数のビット線と複数のワード線に接続されたメモリセルアレイと、前記複数のワード線内の選択ワード線に接続された第１の不揮発性メモリセル群にｍ（ｍは２以上の整数）ページのデータを書き込んで前記第１の不揮発性メモリセル群の各不揮発性メモリセルを互いに閾値電圧レベルが異なる２ｍ個の状態のいずれかに設定する制御回路とを具備する。前記制御回路は、前記２ｍ個の状態内の第１の状態に対応する第１の読み出し電圧を前記選択ワード線に印加して、前記第１の不揮発性メモリセル群から第１のデータを読み出す。前記制御回路は、前記第１の状態よりも閾値電圧レベルの高い第２の状態に対応する第２の読み出し電圧を前記選択ワード線に印加して前記第１の不揮発性メモリセル群から第２のデータを読み出す。前記制御回路は、前記第１の状態に対応し且つ前記第１の読み出し電圧よりも高い第３の読み出し電圧を前記選択ワード線に印加して、前記第１の不揮発性メモリセル群から第３のデータを読み出す。前記制御回路は、前記第２の状態に対応し且つ前記第２の読み出し電圧よりも高い第４の読み出し電圧を前記選択ワード線に印加して前記第１の不揮発性メモリセル群から第４のデータを読み出す。前記制御回路は、前記第１、第２、第３、第４のデータに基づいて、前記選択ワード線に印加される読み出し電圧の値に応じて変化する、オンした不揮発性メモリセルの数を計数する。前記第２のデータの読み出し動作から前記第３のデータの読み出し動作への遷移時に、前記選択ワード線および前記複数のビット線は放電され、前記複数のビット線の電圧は基準電圧からプリチャージ電圧に上昇される。
【図面の簡単な説明】
【０００７】
【図１】第１実施形態の不揮発性半導体記憶装置を含むメモリシステムの構成例を示すブロック図。
【図２】第１実施形態の不揮発性半導体記憶装置とメモリコントローラとの関係を示すブロック図。
【図３】第１実施形態の不揮発性半導体記憶装置の構成例を示すブロック図。
【図４】第１実施形態の不揮発性半導体記憶装置内に設けられるメモリセルアレイの一部を示す図。
【図５】第１実施形態の不揮発性半導体記憶装置内に設けられるキャシュの構成例を示すブロック図。
【図６】第１実施形態の不揮発性半導体記憶装置によって実行される書き込み動作を示す図。
【図７】プログラムコマンドシーケンスと第１実施形態の不揮発性半導体記憶装置によって実行される書き込み動作との関係を示す図。
【図８】第１実施形態の不揮発性半導体記憶装置によって実行される書き込み動作とコア動作波形との関係を示す図。
【図９】書き込み動作とこの書き込み動作の期間中に実行可能なデータ入出力動作との関係を示す図。
【図１０】第１実施形態の不揮発性半導体記憶装置によって実行される、プログラムパルスの印加をスキップする書き込み動作と、コア動作波形との関係を示す図。
【図１１】第１実施形態の不揮発性半導体記憶装置によって実行される、プログラムパルスの印加とプログラムベリファイの双方をスキップする書き込み動作を示す図。
【図１２】第１実施形態の不揮発性半導体記憶装置によって実行される、プログラムパルスの印加とプログラムベリファイの双方をスキップする書き込み動作と、コア動作波形との関係を示す図。
【図１３】第１実施形態の不揮発性半導体記憶装置によって実行される、プログラムパルスの印加をスキップし且つプログラムデータパターンを自動生成する書き込み動作と、コア動作波形との関係を示す図。
【図１４】プログラムデータパターン自動生成で使用されるデータパターンの例を示す図。
【図１５】第１実施形態の不揮発性半導体記憶装置によって実行される、プログラムパルスの印加をスキップし且つデータパスを自動的にチェックする書き込み動作と、コア動作波形との関係を示す図。
【図１６】第１実施形態の不揮発性半導体記憶装置によって実行される、プログラムパルスの印加をスキップし且つチップ内の温度を自動的にチェックする書き込み動作を示す図。
【図１７】第１実施形態の不揮発性半導体記憶装置によって実行される、リード期間を外部から制御でき且つチップ内の温度を自動的にチェックする読み出し動作を示す図。
【図１８】第２実施形態の不揮発性半導体記憶装置におけるトリプルレベルセル（ＴＬＣ）に対応する８つの閾値電圧レベルと３ビットデータとの関係の例を示す図。
【図１９】第２実施形態の不揮発性半導体記憶装置におけるマルチレベルセル（ＭＬＣ）に対応する４つの閾値電圧レベルと２ビットデータとの関係の例を示す図。
【図２０】第２実施形態の不揮発性半導体記憶装置におけるシングルレベルセル（ＳＬＣ）に対応する２つの閾値電圧レベルと１ビットデータとの関係の例を示す図。
【図２１】第２実施形態の不揮発性半導体記憶装置が有するフェイルビットカウント機能を示す図。
【図２２】第２実施形態の不揮発性半導体記憶装置によって実行されるフェイルビットカウント動作とフェイルビットカウント出力動作とを示す図。
【図２３】リードコマンドに応じて第２実施形態の不揮発性半導体記憶装置によって実行されるデータ読み出し／フェイルビットカウント動作を示す図。
【図２４】メモリセルの閾値電圧レベルの変動を示す図。
【図２５】第２実施形態の不揮発性半導体記憶装置によって実行されるリード動作ＡＲおよびフェイルビットカウント動作を示す図。
【図２６】第２実施形態の不揮発性半導体記憶装置によってサポートされる複数の動作モードを示す図。
【図２７】テストモードにおいて第２実施形態の不揮発性半導体記憶装置によって実行されるデータ読み出し／フェイルビットカウント動作を示す図。
【図２８】データ読み出し／フェイルビットカウント動作の例を示す図。
【図２９】ステート分離しない場合の閾値電圧分布とステート分離した場合の閾値電圧分布とを示す図。
【図３０】メモリコントローラによってスタートカラムおよびエンドカラムを指定することが可能なフェイルビットカウント機能を示す図。
【図３１】指定されたスタートカラムおよびエンドカラムによって規定されるカウント範囲内のデータに基づいて実行されるフェイルビットカウント動作を示す図。
【図３２】ユーザデータとＥＣＣとの関係の例を示す図。
【図３３】第２実施形態の不揮発性半導体記憶装置によって実行される、ステート毎にデータを複数回リードする動作を示す図。
【図３４】ステート毎にデータを複数回リードする動作のために使用されるＶＣＧステップ幅を示す図。
【図３５】ステート毎にデータを複数回リードする時に第２実施形態の不揮発性半導体記憶装置によって実行されるデータ読み出し／フェイルビットカウント動作の例を示す図。
【図３６】読み出し電圧に応じて変化するオン・セルの数から、２つのステートの交点に対応する最適な読み出し電圧を求める動作を示す図。
【図３７】第２実施形態の不揮発性半導体記憶装置によって実行される、ステート毎にデータを複数回リードする動作の別の例を示す図
【図３８】ステート毎にデータを複数回リードする時に第２実施形態の不揮発性半導体記憶装置によって実行されるデータ読み出し／フェイルビットカウント動作の別の例を示す図。
【図３９】第２実施形態の不揮発性半導体記憶装置によって実行される、温度計測動作とデータ読み出し／フェイルビットカウント動作を示す図。
【図４０】Ｖｔｈトラッキングと第２実施形態の不揮発性半導体記憶装置によって実行されるデータ読み出し／フェイルビットカウント動作との違いを説明する図。
【図４１】メモリコントローラと第２実施形態の不揮発性半導体記憶装置とによって実行される読み出し電圧調整処理の手順を示すフローチャート。
【図４２】メモリシステムの他の構成例を示すブロック図。
【図４３】図４２のメモリシステムで用いられるメモリパッケージの断面図。
【発明を実施するための形態】
【０００８】
以下、図面を参照して、実施形態を説明する。  
（第１実施形態）
まず、図１を参照して、第１実施形態に係る不揮発性半導体記憶装置を含むメモリシステムの構成を説明する。
【０００９】
図１は、第１実施形態の不揮発性半導体記憶装置１０とメモリコントローラ２００とを含むメモリシステム１を示す。このメモリシステム１は、ホスト装置２からの指示に基づいて、不揮発性半導体記憶装置１０にデータを書き込み、不揮発性半導体記憶装置１０からデータを読み出すように構成されたストレージデバイスとして機能し得る。このメモリシステム１の例は、限定されないが、例えば、ソリッドステートドライブ（ＳＳＤ）、ユニバーサル・フラッシュ・ストレージ（ＵＦＳ）デバイス、メモリカード、ＵＳＢメモリ等を含む。ホスト装置２の例は、限定されないが、例えば、サーバ、パーソナルコンピュータのようなコンピューティングデバイス、携帯電話、スマートフォンのような携帯端末等を含む。
【００１０】
図１では、メモリシステム１に８個の不揮発性半導体記憶装置１０が含まれる場合が例示されている。各不揮発性半導体記憶装置１０は、不揮発性メモリであり、例えば、ＮＡＮＤ型フラッシュメモリである。
【００１１】
メモリコントローラ２００は、ホスト装置２からＩ／Ｏ要求（読み出し要求、書き込み要求）のような様々な要求を受信し、受信した要求に基づいて不揮発性半導体記憶装置１０それぞれを制御する。具体的には、メモリコントローラ２００は、ホスト装置２からの書き込み要求に応じてデータを不揮発性半導体記憶装置１０に書き込み、ホスト装置２からの読み出し要求に応じて不揮発性半導体記憶装置１０からデータを読み出してホスト装置２に送信する。
【００１２】
メモリコントローラ２００は、ホストインターフェイス２１０、プロセッサ（ＣＰＵ）２２０、ＲＡＭ２３０、メモリインターフェイス２４０、およびＥＣＣ回路２５０等を含む。
【００１３】
ホストインターフェイス２１０は、通信インタフェースを介してホスト装置２と接続される。通信インタフェースの規格としては、例えばＰＣＩｅ（ＰＣＩ  Ｅｘｐｒｅｓｓ）、ＳＡＴＡ（Ｓｅｒｉａｌ  Ａｄｖａｎｃｅｄ  Ｔｅｃｈｎｏｌｏｇｙ  Ａｔｔａｃｈｍｅｎｔ）、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）、ＳＡＳ（Ｓｅｒｉａｌ  Ａｔｔａｃｈｅｄ  ＳＣＳＩ）、ＭＩＰＩ（Ｍｏｂｉｌｅ  Ｉｎｄｕｓｔｒｙ  Ｐｒｏｃｅｓｓｏｒ  Ｉｎｔｅｒｆａｃｅ）、ＵｎｉＰｒｏ等を使用し得る。
【００１４】
プロセッサ（ＣＰＵ）２２０は、図示しないＲＯＭに保持されているファームウェア（プログラム）を実行することによって、ホストインターフェイス２１０、メモリインターフェイス２４０、およびＥＣＣ回路２５０を制御する。
【００１５】
ＲＡＭ２３０は、書き込みデータまたはリードデータを一時的に保持するランダムアクセスメモリである。メモリインターフェイス２４０は、プロセッサ（ＣＰＵ）２２０の制御に従って、不揮発性半導体記憶装置１０それぞれを制御する。
【００１６】
メモリインターフェイス２４０は、コマンド生成部２４１を含む。コマンド生成部２４１は、プロセッサ（ＣＰＵ）２２０の制御に従い、不揮発性半導体記憶装置１０に送出されるべき様々なコマンドを生成する。ＥＣＣ回路２５０は、ＥＣＣエンコーダとＥＣＣデコーダとを含む。ＥＣＣエンコーダは、書き込みデータ（ユーザデータ）を符号化して、ユーザデータと誤り訂正符号（ＥＣＣ）とを含むメモリ書き込みデータを生成する。ＥＣＣデコーダは、ユーザデータと誤り訂正符号（ＥＣＣ）とを含むメモリ読み出しデータを復号して、ユーザデータの誤りを訂正する。
【００１７】
メモリインターフェイス２４０は、メモリバス１１を介して複数の不揮発性半導体記憶装置１０にそれぞれ接続される。メモリインターフェイス２４０と各不揮発性半導体記憶装置１０との間の通信においては、チップイネーブル信号ＣＥｎ、コマンドラッチイネーブル信号ＣＬＥ、アドレスラッチイネーブル信号ＡＬＥ、ライトイネーブル信号ＷＥｎ、リードイネーブル信号ＲＥｎ、ライトプロテクト信号ＷＰｎ、レディー／ビジー信号ＲＹ／ＢＹｎ、Ｉ／Ｏ信号ＤＱ０〜ＤＱ７，ＤＱｎ０〜ＤＱｎ７、データストローブ信号ＤＱＳ、ＤＱＳｎが使用されてもよい。ここで、信号の名称の末尾の「ｎ」は、この信号が負論理の信号であることを意味する。メモリバス１１には、Ｉ／Ｏ信号ＤＱ０〜ＤＱ７，ＤＱｎ０〜ＤＱｎ７等を運ぶためのＩ／Ｏバス、および複数の制御信号線が含まれている。これら制御信号線は、上述の信号ＣＥｎ、ＣＬＥ、ＡＬＥ、ＷＥｎ、ＲＥｎ、ＷＰｎ、ＲＹ／ＢＹｎ等を運ぶために使用される。
【００１８】
チップイネーブル信号ＣＥｎは、不揮発性半導体記憶装置（ここではＮＡＮＤ型フラッシュメモリ）１０を選択するための信号である。コマンドラッチイネーブル信号ＣＬＥは、信号ＣＬＥと並行して不揮発性半導体記憶装置１０に流れるＩ／Ｏ信号ＤＱ０〜ＤＱ７，ＤＱｎ０〜ＤＱｎ７がコマンドであることを不揮発性半導体記憶装置１０に通知するための信号である。アドレスラッチイネーブル信号ＡＬＥは、アサートされている信号ＡＬＥと並行して不揮発性半導体記憶装置１０に流れるＩ／Ｏ信号ＤＱ０〜ＤＱ７，ＤＱｎ０〜ＤＱｎ７がアドレスであることを不揮発性半導体記憶装置１０に通知するための信号である。ライトイネーブル信号ＷＥｎは、アサートされている信号ＷＥｎと並行して不揮発性半導体記憶装置１０に流れるＩ／Ｏ信号ＤＱ０〜ＤＱ７，ＤＱｎ０〜ＤＱｎ７を取り込むことを不揮発性半導体記憶装置１０に指示するための信号である。リードイネーブル信号ＲＥｎは、Ｉ／Ｏ信号ＤＱ０〜ＤＱ７，ＤＱｎ０〜ＤＱｎ７を出力すべきことを不揮発性半導体記憶装置１０に指示するための信号である。ライトプロテクト信号ＷＰｎは、データ書き込みおよび消去の禁止を不揮発性半導体記憶装置１０に指示するための信号である。レディー／ビジー信号ＲＹ／ＢＹｎは、不揮発性半導体記憶装置１０がレディー状態／ビジー状態のいずれであるかを示す信号である。不揮発性半導体記憶装置１０は、レディー状態においてはメモリコントローラ２００からのコマンドを受け付け、ビジー状態においてはメモリコントローラ２００からのコマンドを受け付けない。
【００１９】
Ｉ／Ｏ信号ＤＱ０〜ＤＱ７，ＤＱｎ０〜ＤＱｎ７は、例えば８ビット幅を有する差動信号対である。これらＩ／Ｏ信号ＤＱ０〜ＤＱ７，ＤＱｎ０〜ＤＱｎ７は、メモリコントローラ２００から不揮発性半導体記憶装置１０へのコマンド、アドレス、データの伝送、および不揮発性半導体記憶装置１０からメモリコントローラ２００へのデータ、ステータスの伝送に使用される。データストローブ信号ＤＱＳ、ＤＱＳｎは、Ｉ／Ｏ信号ＤＱ０〜ＤＱ７，ＤＱｎ０〜ＤＱｎ７の入出力タイミングを示す。
【００２０】
メモリコントローラ２００は、各不揮発性半導体記憶装置１０内のデータパスおよびメモリバス１１を含む伝送経路全体の状態をチェックするためのテスト機能を有する。このテスト機能には、不揮発性半導体記憶装置１０間のデータ出力タイミングの差を測定して各種信号の入出力タイミングを調整するトレーニング機能も含まれる。
【００２１】
図２は、一つの不揮発性半導体記憶装置１０とコントローラ２００との関係を示す。
【００２２】
不揮発性半導体記憶装置１０は、メモリコア（メモリセルアレイ）１２、センスアンプ（Ｓ／Ａ）１３、キャッシュ１４、データパス１５、Ｉ／Ｏ制御回路１６等を含む。メモリコア（メモリセルアレイ）１２は、複数の不揮発性メモリセル（以下、単にメモリセルと称する）を含む。メモリセルアレイは複数のブロックを含む。ブロックは消去動作の単位である。各ブロックは、複数のページを含む。一つのページは、同一ワード線に接続された複数のメモリセルを含む。
【００２３】
メモリ書き込みデータは、Ｉ／Ｏ制御回路１６、データパス１５、キャッシュ１４を介してセンスアンプ（Ｓ／Ａ）１３に送られ、そしてメモリセルアレイ１２内のメモリセル群に書き込まれる。データパス１５はＩ／Ｏ制御回路１６とキャッシュ１４との間に配置された内部配線であり、メモリ書き込みデータ／メモリ読み出しデータの伝送に使用される。以下では、メモリ書き込みデータ、メモリ読み出しデータを、単に書き込みデータ／読み出しデータと称する。
【００２４】
図３は、不揮発性半導体記憶装置１０の構成例を示す。以下では、不揮発性半導体記憶装置１０がＮＡＮＤ型フラッシュメモリである場合を想定する。
【００２５】
ＮＡＮＤ型フラッシュメモリチップは、メモリセルアレイ１２、センスアンプ１３、キャッシュ１４、データパス１５、Ｉ／Ｏ制御回路１６、論理制御回路１７、状態検出回路１８、ステータスレジスタ１９、アドレスレジスタ２０、コマンドレジスタ２１、高電圧発生回路２２、制御回路２３、カラムアドレスバッファ２４、カラムデコーダ２５、ロウアドレスバッファ２６、ロウデコーダ２７、温度センサ２８等の要素を含む。
【００２６】
Ｉ／Ｏ制御回路１６は、メモリコントローラ２００からＩ／Ｏ信号ＤＱ０〜ＤＱ７，ＤＱｎ０〜ＤＱｎ７を受け取り、またＩ／Ｏ信号ＤＱ０〜ＤＱ７，ＤＱｎ０〜ＤＱｎ７をメモリコントローラ２００に送信する。Ｉ／Ｏ信号ＤＱ０〜ＤＱ７，ＤＱｎ０〜ＤＱｎ７によって受信されたコマンドは、コマンドレジスタ２１に格納される。Ｉ／Ｏ信号ＤＱ０〜ＤＱ７，ＤＱｎ０〜ＤＱｎ７によって受信されたアドレスは、アドレスレジスタ２０に格納される。また、データ、またはステータスレジスタ１９内のステータスを送信する際、Ｉ／Ｏ制御回路１６は、データストローブ信号ＤＱＳ、ＤＱＳｎも送信する。
【００２７】
論理制御回路１７は、メモリコントローラ２００から種々の制御信号を受け取り、制御信号に基づいて、Ｉ／Ｏ制御回路１６を制御する。制御信号は、チップイネーブル信号ＣＥｎ、コマンドラッチイネーブル信号ＣＬＥ、アドレスラッチイネーブル信号ＡＬＥ、ライトイネーブル信号ＷＥｎ、リードイネーブル信号ＲＥｎ、ライトプロテクト信号ＷＰｎ、およびデータストローブ信号ＤＱＳ、ＤＱＳｎを含む。
【００２８】
制御回路２３は、コマンドレジスタ２１からコマンドを受け取り、このコマンドに基づいてＮＡＮＤ型フラッシュメモリチップ内の各要素を制御するように構成されたシーケンサとして機能する。制御回路２３は、書き込み／読み出し／消去動作のみならず、他の様々な機能を実行することができる。制御回路２３は、カウンタ２３Ａ、レジスタ２３Ｂ等を含む。カウンタ２３Ａは、後述するオン・チップ・ＦＢＣ（フェイルビットカウント）機能を実行するために使用される。レジスタ２３Ｂは、オン・チップ・ＦＢＣによってカウントされたフェイルビットの数を保持するための内部レジスタである。オン・チップ・ＦＢＣの詳細は図１８以降で説明する。
【００２９】
高電圧発生回路２２は、ＮＡＮＤ型フラッシュメモリチップの外部から電源電圧を受け取り、電源電圧から種々の電圧を生成する。生成された電圧は、メモリセルアレイ１２、センスアンプ１３、ロウデコーダ２７等の要素に供給される。
【００３０】
ロウデコーダ２７は、ロウアドレスバッファ２６を介してアドレスレジスタ２０からロウアドレスを受け取り、このロウアドレス信号に基づいて、あるブロック内の一つのワード線を選択する。センスアンプ１３は、データの読み出し時には、選択ワード線に接続されたメモリセル群からビット線それぞれに読み出されたデータをセンスする。またデータの書き込み時には、センスアンプ１３は、書き込みデータをビット線それぞれに出力する。メモリセルアレイ１２へのデータの読み出し及び書き込みは、同一ワード線に接続された複数のメモリセルの単位で行われ、この単位がページとなる。
【００３１】
キャッシュ１４は、データパス１５を介してＩ／Ｏ制御回路１６に接続される。キャッシュ１４は、書き込みデータまたは読み出しデータ等を保持可能な複数段のデータラッチを含む。キャッシュ１４は、Ｉ／Ｏ制御回路１６からの書き込みデータを保持し、書き込みデータをセンスアンプ１３に供給する。また、キャッシュ１４は、センスアンプ１３から読み出しデータを受け取り、カラムデコーダ２５の制御に従って、読み出しデータをＩ／Ｏ制御回路１６に送出する。
【００３２】
なお、ＮＡＮＤ型フラッシュメモリチップは複数のプレーンを含むマルチプレーン構成であってもよい。ＮＡＮＤ型フラッシュメモリチップがプレーン＃１、＃２を含む場合には、各プレーンは、メモリセルアレイとその周辺回路を含む。周辺回路は、例えば、ロウデコーダ、ロウアドレスバッファ、センスアンプ、キャッシュ、カラムデコーダ、カラムアドレスバッファ、等を含んでもよい。
【００３３】
図４は、メモリセルアレイ１２内の複数のブロック一つの構成例を示す。
【００３４】
一つのブロックＢＬＫ（ここではＢＬＫ０）は、ストリングユニットＳＵ０〜ＳＵ３を含んでもよい。これらストリングユニットＳＵ０〜ＳＵ３は同一の構成を有するので、ここでは、ストリングユニットＳＵ０の構成を説明する。
【００３５】
ストリングユニットＳＵ０は、複数のワード線ＷＬ０〜ＷＬ７、および複数のビット線ＢＬ０〜ＢＬ（Ｌ−１）に接続されている。ストリングユニットＳＵ０は、複数のＮＡＮＤストリングＳＴＲを含む。
【００３６】
各ＮＡＮＤストリングＳＴＲは、１つの選択ゲートトランジスタＳＴ０と、複数（例えば８つ）のメモリセルトランジスタＭＴ０〜ＭＴ７と、１つの選択ゲートトランジスタＤＴ０とを含む。選択ゲートトランジスタＳＴ０、メモリセルトランジスタＭＴ０〜ＭＴ７、選択ゲートトランジスタＤＴ０は、この順で、ソース線ＣＥＬＳＲＣと１つのビット線ＢＬとの聞に直列に接続されている。各メモリセルトランジスタＭＴは、メモリセルとして機能する。各メモリセルトランジスタＭＴは、制御ゲート、および電荷蓄積層を含む。メモリセルトランジスタＭＴ０〜ＭＴ７の制御ゲートは、ワード線ＷＬ０〜ＷＬ７にそれぞれ接続されている。選択ゲートトランジスタＳＴ０のゲートは、選択ゲート線ＳＧＳＬ０に接続されている。選択ゲートトランジスタＤＴ０のゲートは、選択ゲート線ＳＧＤＬ０に接続されている。
【００３７】
ストリングユニットＳＵ０中で、同一ワード線ＷＬに接続されるメモリセルトランジスタＭＴの組はページと称される。データ書き込み／読み出しは、ページ単位で実行される。
【００３８】
図５は、キャッシュ１４の構成例を示す。
【００３９】
キャッシュ１４は、データラッチＤＬ０、ＤＬ１、ＤＬ２、ＤＬ３、ＸＤＬと、算術演算回路ＯＰとを含む。データラッチＤＬ０、ＤＬ１、ＤＬ２、ＤＬ３、ＸＤＬの各々は、ビット線ＢＬ０〜ＢＬ（Ｌ−１）の数と同数のラッチ回路を含む。データラッチＤＬ０、ＤＬ１、ＤＬ２、ＤＬ３は、センスアンプ（Ｓ／Ａ）１３からの読み出しデータまたはセンスアンプ（Ｓ／Ａ）１３への書き込みデータを一時的に保持する。ＸＤＬは、外部とのインタフェース用のデータラッチ（データキャッシュ）として機能する。メモリコントローラ２００からの書き込みデータは、ＸＤＬを介して、データラッチＤＬ０、ＤＬ１、ＤＬ２、ＤＬ３、またはセンスアンプ（Ｓ／Ａ）１３に転送される。また、読み出しデータは、ＸＤＬを介して、メモリコントローラ２００に出力される。
【００４０】
算術演算回路ＯＰは、データラッチＤＬ０、ＤＬ１、ＤＬ２、ＤＬ３、ＸＤＬ内のデータに基づいてＮＯＴ演算、ＯＲ演算、ＡＮＤ演算、ＸＯＲ演算、ＸＮＯＲ演算のような様々な論理演算を実行する。
【００４１】
図６は、書き込み動作を示す。
【００４２】
センスアンプ１３は、書き込みデータに応じて、ビット線ＢＬに０Ｖまたは正電源電圧ＶＤＤを印加する。すなわち、メモリセルトランジスタＭＴの電荷蓄積層に電荷を注入してメモリセルトランジスタもかの閾値電圧を上昇させる場合（“０”プログラム）には、センスアンプ１３は、ビット線ＢＬに例えば０Ｖを印加する。一方、メモリセルトランジスタＭＴの閾値電圧を消去状態に対応する閾値電圧レベルに維持する場合（“１”プログラム）には、センスアンプ１３は、ビット線ＢＬに例えば正電源電圧ＶＤＤを印加する。
【００４３】
更にロウデコーダ２７は、例えばワード線ＷＬ２を選択し、この選択ワード線ＷＬ２に正の高電圧ＶＰＧＭを印加し、その他の非選択ワード線ＷＬ０、ＷＬ１、及びＷＬ３〜ＷＬ７に正電圧ＶＰＡＳＳを印加する。電圧ＶＰＧＭは、ＦＮトンネリングにより選択トランジスタＭＴ２の電荷蓄積層に電荷を注入するためのプログラムパルスである。ＶＰＡＳＳは、非選択のメモリセルトランジスタＭＴ０、ＭＴ１、ＭＴ３〜ＭＴ７をその保持データにかかわらずオンさせるための電圧であり、ＶＰＧＭ＞ＶＰＡＳＳである。
【００４４】
またロウデコーダ２７は、選択したストリングユニットＳＵの選択ゲート線ＳＧＤＬに正電圧ＶＳＧＤを印加し、セレクトゲート線ＳＧＳＬにＶＳＧＳを印加する。
【００４５】
この結果、メモリセルトランジスタＭＴ０〜ＭＴ７はオン状態となる。また、ビット線ＢＬに０Ｖが印加された選択トランジスタＤＴはオン状態となり、ビット線ＢＬにＶＤＤが印加された選択トランジスタＤＴはカットオフする。選択トランジスタＳＴはオフ状態である。
【００４６】
従って、選択トランジスタＤＴがオンされたＮＡＮＤストリングでは、選択ワード線ＷＬ２に接続されたメモリセルトランジスタＭＴ２の電荷蓄積層に電荷が注入され、メモリセルトランジスタＭＴ２の閾値電圧は上昇される。
【００４７】
一方、選択トランジスタＤＴがオフされたＮＡＮＤストリングでは、メモリセルトランジスタＭＴ２のチャネルは電気的にフローティングとなり、ワード線ＷＬ２とのカップリングにより、その電圧はＶＰＡＳＳに近い電圧まで上昇する。この結果、メモリセルトランジスタＭＴ２では、制御ゲートとチャネルとの間の電圧差が小さくなり、電荷が電荷蓄積層に注入されず、メモリセルトランジスタＭＴ２の閾値電圧は消去状態に対応する低い閾値電圧レベルに維持される。
【００４８】
図７は、プログラムコマンドシーケンスと不揮発性半導体記憶装置（ＮＡＮＤ型フラッシュメモリ）１０によって実行される書き込み動作（プログラム動作）との関係を示す。
【００４９】
メモリコントローラ２００は、Ｉ／Ｏ信号ＤＱ０〜ＤＱ７，ＤＱｎ０〜ＤＱｎ７を介してプログラムコマンドシーケンス（例えば、コマンド８０ｈ、アドレスＡｄｄ、データＤｉｎ、コマンド１５ｈ）をＮＡＮＤ型フラッシュメモリ１０に送信する。８０ｈはシリアル入力のためのコマンドである。コマンド１５ｈは利用可能な数種類のプログラムコマンドの一つである。コマンド１５ｈが受信された場合、ＮＡＮＤ型フラッシュメモリ１０は、キャッシュ１４（ＸＤＬ）からセンスアンプ１３または他のデータラッチに書き込みデータ（Ｄｉｎ）が転送される期間中のみビジー状態となり、書き込みデータがキャッシュ１４（ＸＤＬ）からセンスアンプ（Ｓ／Ａ）１３または他のデータラッチに転送された後は次のコマンドを受け付け可能なレディー状態となる。なお、コマンド８０ｈの代わりに、複数のプレーンに同時にデータを書き込むためのコマンド８１ｈが利用されてもよい。
【００５０】
（１）まず、コマンド８０ｈに後続して入力される書き込みデータ（Ｄｉｎ）は、データパス１５を介してＩ／Ｏ制御回路１６からキャッシュ１４（ＸＤＬ）に転送される。
【００５１】
（２）コマンド１５ｈが受信された時、レディー／ビジー信号ＲＹ／ＢＹｎは、状態検出回路１８によってロウレベルに設定される（ビジー状態）。そして、書き込みデータ（Ｄｉｎ）はキャッシュ１４（ＸＤＬ）から他のデータラッチまたはセンスアンプ（Ｓ／Ａ）１３に転送される。書き込みデータ（Ｄｉｎ）の転送が完了すると、レディー／ビジー信号ＲＹ／ＢＹｎはハイレベルに戻される（レディー状態）。
【００５２】
（３）プログラム動作が開始され、アドレス（Ａｄｄ）によって指定されたメモリセル群（ページＮ）にデータが書き込まれる。そして、プログラム動作が成功したか否かを検証するためのプログラムベリファイ動作が実行される。プログラムおよびプログラムベリファイ動作は、プログラム動作が成功するか、あるいはプログラムおよびプログラムベリファイ動作のループ回数が設定された最大ループ回数に達するまで繰り返される。もしプログラムおよびプログラムベリファイ動作の実行中に次のプログラムコマンドシーケンス（例えば、コマンド８０ｈ、アドレスＡｄｄ、データＤｉｎ）がメモリコントローラ２００から受信されたならば、書き込みデータ（Ｄｉｎ）がＩ／Ｏ制御回路１６からキャッシュ１４（ＸＤＬ）に転送される。
【００５３】
図８は、ＮＡＮＤ型フラッシュメモリ１０によって実行される書き込み動作と、コア動作波形との関係を示す。ここで、コア動作波形は、選択ワード線ＷＬｎの電圧およびビット線ＢＬ０〜ＢＬ（Ｌ−１）それぞれの電圧を表している。
【００５４】
メモリコントローラ２００は、Ｉ／Ｏ信号ＤＱ０〜ＤＱ７，ＤＱｎ０〜ＤＱｎ７を介してプログラムコマンドシーケンス（例えば、コマンド８ｘｈ（８０ｈまたは８１ｈ）、アドレスＡｄｄ、データＤｉｎ、コマンド１５ｈ）をＮＡＮＤ型フラッシュメモリ１０に送信する。
【００５５】
ＮＡＮＤ型フラッシュメモリ１０においては、メモリコントローラ２００から受信される書き込みデータ（Ｄｉｎ）は、データパス１５を介してＩ／Ｏ制御回路１６からキャッシュ１４（ＸＤＬ）に転送される。コマンド１５ｈが受信されると、書き込みデータ（Ｄｉｎ）は、キャッシュ１４（ＸＤＬ）からセンスアンプ（Ｓ／Ａ）１３に転送され、そして書き込み動作（プログラムシーケンス）が開始される。プログラムシーケンスは、プログラム（Ｐｒｏｇ）動作とプログラムベリファイ（Ｐｖｒｆ）動作とを含む。プログラム（Ｐｒｏｇ）動作とプログラムベリファイ（Ｐｖｒｆ）動作は、繰り返し実行される。
【００５６】
プログラム動作は、ビット線充電期間ｔ１と、書き込みパルス印加期間ｔ２と、ワード線／ビット線リセット期間ｔ３とを含む。
【００５７】
ビット線充電期間ｔ１においては、制御回路２３は、センスアンプ（Ｓ／Ａ）１３を制御することによってビット線ＢＬ０〜ＢＬ（Ｌ−１）を充電する。ビット線ＢＬ０〜ＢＬ（Ｌ−１）の充電は書き込みデータに応じて実行される。つまり、データ“１”が書き込まれるべきメモリセルトランジスタＭＴ（消去状態に維持されるべきメモリセルトランジスタＭＴ）に接続されたビット線ＢＬは、センスアンプ（Ｓ／Ａ）１３によって電圧ＶＤＤが充電される。この結果、このビット線ＢＬには電流が流れる。一方、データ“０”が書き込まれるべきメモリセルトランジスタＭＴ（消去状態からプログラム状態に遷移されるべきメモリセルトランジスタＭＴ）に接続されたビット線ＢＬは、センスアンプ（Ｓ／Ａ）１３によって０Ｖに設定される。結果、このビット線ＢＬには電流が流れない。
【００５８】
書き込みパルス印加期間ｔ２においては、制御回路２３は、ロウデコーダ２７を制御することによって選択ワード線ＷＬｎに書き込みパルス（プログラムパルス）を印加し、選択ワード線ＷＬｎを電圧ＶＰＧＭに設定する。また、制御回路２３は、ロウデコーダ２７を制御することによって各非選択ワード線に電圧ＶＰＡＳＳを印加する。通常、書き込みパルス印加期間ｔ２は、ビット線充電期間ｔ１よりも遙かに長い。
【００５９】
ワード線／ビット線リセット期間ｔ３においては、制御回路２３は、センスアンプ（Ｓ／Ａ）１３を制御することによってビット線ＢＬ０〜ＢＬ（Ｌ−１）を放電するとともに、ロウデコーダ２７を制御することによってワード線ＷＬ０〜ＷＬ８を放電する。これにより、ビット線ＢＬ０〜ＢＬ（Ｌ−１）は０Ｖに戻され、またワード線ＷＬ０〜ＷＬ８も０Ｖに戻される。
【００６０】
このようにメモリセルアレイ１２にデータが書き込まれるコア動作期間中は、ビット線ＢＬ０〜ＢＬ（Ｌ−１）の充電によって多くのノイズ（消費電流）が発生する。ビット線ＢＬ０〜ＢＬ（Ｌ−１）の充電によるノイズの量は、書き込みパルスの印加によるノイズの量よりも多い。
【００６１】
多くの量のノイズが発生している期間中は、データパス１５を介したデータ転送、またはメモリバス１１を介したデータ転送に影響が与えられる場合がある。したがって、多くの量のノイズをＮＡＮＤ型フラッシュメモリ１０に発生させることは、ＮＡＮＤ型フラッシュメモリ１０の信頼性のテストに有用である。例えば、伝送路全体の状態をチェックするためのテスト動作は、実際にデータ書き込み動作を実行しながら実行されてもよい。これにより、ノイズの影響を考慮した状態で、伝送路全体の状態をチェックすることが可能となる。
【００６２】
図９は、書き込み動作とこの書き込み動作の期間中に実行可能なデータ入出力動作との関係を示す。
【００６３】
上述したように、コマンド１５ｈを利用して書き込み動作を実行するケースにおいては、ＮＡＮＤ型フラッシュメモリ１０は、書き込み動作中に、メモリコントローラ２００からの次のコマンドを受け付けることができる。したがって、ＮＡＮＤ型フラッシュメモリ１０は、書き込み動作（プログラムシーケンス）を実行しながら、メモリコントローラ２００から受信されるデータをキャッシュ１４（ＸＤＬ）へ転送すること、またはキャッシュ１４（ＸＤＬ）からメモリコントローラ２００へデータを転送することができる。
【００６４】
図９においては、メモリコントローラ２００は、まず、プログラムコマンドシーケンス（例えば、コマンド８ｘｈ、アドレスＡｄｄ、データＤｉｎ、コマンド１５ｈ）をＮＡＮＤ型フラッシュメモリ１０に送信する。そしてメモリコントローラ２００は、レディー／ビジー信号ＲＹ／ＢＹｎを監視し、ＮＡＮＤ型フラッシュメモリ１０がビジー状態からレディー状態に復帰するのを待つ。
【００６５】
ＮＡＮＤ型フラッシュメモリ１０においては、メモリコントローラ２００から受信される書き込みデータ（Ｄｉｎ）は、データパス１５を介してＩ／Ｏ制御回路１６からキャッシュ１４（ＸＤＬ）に転送される。コマンド１５ｈが受信されると、書き込みデータ（Ｄｉｎ）は、キャッシュ１４（ＸＤＬ）からセンスアンプ（Ｓ／Ａ）１３に転送される。センスアンプ（Ｓ／Ａ）１３への書き込みデータ（Ｄｉｎ）の転送が完了すると、レディー／ビジー信号ＲＹ／ＢＹｎがハイレベルに戻され、そして書き込み動作（プログラムシーケンス）が開始される。書き込み動作中は、プログラム（Ｐｒｏｇ）およびプログラムベリファイ（Ｐｖｒｆ）動作が繰り返し実行される。
【００６６】
この書き込み動作中に、コマンドシーケンス（例えば、コマンド８ｘｈ、アドレスＡｄｄ、データＤａｔａ−Ｉｎ）がメモリコントローラ２００から受信された場合、新たなデータ（Ｄａｔａ−Ｉｎ）がデータパス１５を介してＩ／Ｏ制御回路１６からキャッシュ１４（ＸＤＬ）に転送される。また、コマンドシーケンス（例えば、コマンド０５ｈ、アドレスＡｄｄ、コマンドＥ０ｈ）がメモリコントローラ２００から受信されたならば、アドレスＡｄｄによって指定されるデータがキャッシュ１４（ＸＤＬ）から読み出され、このデータがデータパス１５、Ｉ／Ｏ制御回路１６を介してメモリコントローラ２００に送信される。
【００６７】
以上の動作により、データ書き込み動作を実行しながら、メモリコントローラ２００とキャッシュ１４（ＸＤＬ）との間でデータを入出力することができる。例えば、メモリコントローラ２００は、テスト用のデータを準備し、このデータをコマンドシーケンス（例えば、コマンド８ｘｈ、アドレスＡｄｄ、データＤａｔａ−Ｉｎ）によってＮＡＮＤ型フラッシュメモリ１０に入力し、そしてコマンドシーケンス（例えば、コマンド０５ｈ、アドレスＡｄｄ、コマンドＥ０ｈ）によってこのデータをＮＡＮＤ型フラッシュメモリ１０に出力させてもよい。この場合、メモリコントローラ２００は、ＮＡＮＤ型フラッシュメモリ１０から出力されたデータを上述のテスト用のデータと比較することにより、メモリコントローラ２００とＮＡＮＤ型フラッシュメモリ１０のキャッシュ１４（ＸＤＬ）との間のデータ伝送が正しく実行できたか否かをチェックすることができる。このように、伝送路の状態をチェックするためのテスト動作を、データ書き込み動作を実行しながら実行することができる。なお、テスト動作の例は上述の例に限定されるものではない。
【００６８】
上述したように、ビット線の充電に起因するノイズの量は、書き込みパルスの印加に起因するノイズの量よりも多い。つまり、ビット線充電期間ｔ１に高ノイズが発生する。
【００６９】
しかしながら、ビット線充電期間ｔ１よりも書き込みパルス印加期間ｔ２が遙かに長い。したがって、プログラムおよびプログラムベリファイ動作が繰り返される書き込み動作の期間全体に占めるビット線充電期間ｔ１の割合は低い。この結果、高ノイズはある長い時間間隔毎にしか発生しないので、コア動作中に高ノイズが発生する頻度は低くなる。
【００７０】
本実施形態では、メモリセルトランジスタＭＴそれぞれに対してストレスを与えること無く、高ノイズの発生頻度を高くできるようにするために、ＮＡＮＤ型フラッシュメモリ１０は、「プログラムパルススキップ」モードと称される特別な書き込みモードを有している。「プログラムパルススキップ」モードは、選択ワード線へプログラムパルスを印加する動作をスキップする書き込みモードである。「プログラムパルススキップ」モードにおいては、制御回路２３は、書き込みデータに応じてビット線ＢＬ０〜ＢＬ（Ｌ−１）を充電する動作を含み、選択ワード線ＷＬｎにプログラムパルスを印加する動作については省略された、書き込み動作を実行する。
【００７１】
メモリコントローラ２００は、「プログラムパルススキップ」機能を有効にすべきことをＮＡＮＤ型フラッシュメモリ１０に指示することができる。例えば、メモリコントローラ２００は、セットフィーチャコマンドシーケンス（コマンドＥＦｈ、アドレスＡＤＤ、データＤａｔａ−Ｉｎ）をＮＡＮＤ型フラッシュメモリ１０に送信することによって、「プログラムパルススキップ」機能を有効にすることができる。
【００７２】
ここで、コマンドＥＦｈは、ＮＡＮＤ型フラッシュメモリ１０によってサポートされる追加機能の設定のために使用されるコマンドである。コマンドＥＦｈに後続するアドレスＡＤＤは、設定対象の追加機能を指定するために使用される。コマンドＥＦｈおよびアドレスＡＤＤに後続するデータＤａｔａ−Ｉｎは、設定対象の追加機能の有効／無効を指定するために使用される。
【００７３】
図１０は、「プログラムパルススキップ」モードとコア動作波形との関係を示す。
【００７４】
メモリコントローラ２００は、まず、「プログラムパルススキップ」機能を有効にするために、セットフィーチャコマンドシーケンス（コマンドＥＦｈ、アドレスＡＤＤ、データＤａｔａ−Ｉｎ）をＮＡＮＤ型フラッシュメモリ１０に送信する。次いで、メモリコントローラ２００は、プログラムコマンドシーケンス（例えば、コマンド８ｘｈ、アドレスＡｄｄ、データＤｉｎ、コマンド１５ｈ）をＮＡＮＤ型フラッシュメモリ１０に送信する。そしてメモリコントローラ２００は、レディー／ビジー信号ＲＹ／ＢＹｎを監視し、ＮＡＮＤ型フラッシュメモリ１０がビジー状態からレディー状態に復帰するのを待つ。ＮＡＮＤ型フラッシュメモリ１０がレディー状態に復帰すると、メモリコントローラ２００は、コマンドシーケンス（例えば、コマンド８ｘｈ、アドレスＡｄｄ、データＤａｔａ−Ｉｎ）、またはコマンドシーケンス（例えば、コマンド０５ｈ、アドレスＡｄｄ、コマンドＥ０ｈ）をＮＡＮＤ型フラッシュメモリ１０に送信する。
【００７５】
ＮＡＮＤ型フラッシュメモリ１０においては、セットフィーチャコマンドシーケンスに応じて「プログラムパルススキップ」機能が有効にされる。メモリコントローラ２００から受信される書き込みデータ（Ｄｉｎ）は、データパス１５を介してＩ／Ｏ制御回路１６からキャッシュ１４（ＸＤＬ）に転送される。コマンド１５ｈが受信されると、書き込みデータ（Ｄｉｎ）は、キャッシュ１４（ＸＤＬ）からセンスアンプ（Ｓ／Ａ）１３に転送される。センスアンプ（Ｓ／Ａ）１３への書き込みデータ（Ｄｉｎ）の転送が完了すると、レディー／ビジー信号ＲＹ／ＢＹｎがハイレベルに戻され、そして「プログラムパルススキップ」モードで書き込み動作が開始される。
【００７６】
「プログラムパルススキップ」モードの書き込み動作では、第１の動作と第２の動作とが繰り返し実行される。この場合、第１の動作は、ビット線充電期間ｔ１とワード線／ビット線リセット期間ｔ３のみを含み、書き込みパルス印加期間ｔ２は省略される。
【００７７】
ビット線充電期間ｔ１においては、制御回路２３は、センスアンプ（Ｓ／Ａ）１３を制御することによってビット線ＢＬ０〜ＢＬ（Ｌ−１）を充電する。ビット線ＢＬ０〜ＢＬ（Ｌ−１）の充電は書き込みデータに応じて実行される。ビット線の充電が完了すると、書き込みパルス印加期間ｔ２はスキップされ、すぐにビット線ＢＬ０〜ＢＬ（Ｌ−１）の放電が開始される（期間ｔ３）。
【００７８】
この結果、第１の動作および第２の動作が繰り返される書き込み動作の期間全体に占めるビット線充電期間ｔ１の割合を高くすることができる。よって、あるビット線充電期間ｔ１と次のビット線充電期間ｔ１との間の時間間隔が短くなり、高ノイズが高い頻度で発生する。
【００７９】
第２の動作は、実際にはデータをプログラムしない第１の動作の後に実行される動作であり、一種のプログラムベリファイ（Ｐｖｒｆ）動作に対応する。第２の動作は、ビット線充電期間ｔ１１と、読み出し期間ｔ１２と、ワード線／ビット線リセット期間ｔ１３とを含む。
【００８０】
ビット線充電期間ｔ１１においては、全てのビット線ＢＬ０〜ＢＬ（Ｌ−１）は充電されてあるプリチャージ電圧（＜ＶＤＤ）に設定される。読み出し期間ｔ１２においては、制御回路２３は、ロウデコーダ２７を制御することによって選択ワード線ＷＬｎに所定の読み出し電圧を印加すると共に、各非選択ワード線に電圧Ｖｒｅａｄを印加する。読み出し電圧は、メモリセルトランジスタＭＴの閾値電圧の分布に応じて定められる電圧である。電圧Ｖｒｅａｄは、メモリセルトランジスタＭＴが保持するデータに関わらずこれらメモリセルトランジスタＭＴをオンさせる電圧である。そして、選択ワード線ＷＬｎに接続されたメモリセルトランジスタＭＴそれぞれからＢＬ０〜ＢＬ（Ｌ−１）に読み出されるデータがセンスアンプ１３によってセンスされる。ワード線／ビット線リセット期間ｔ１３では、ビット線ＢＬ０〜ＢＬ（Ｌ−１）およびワード線ＷＬ０〜ＷＬ７が放電される。
【００８１】
このように、「プログラムパルススキップ」モードの書き込み動作では、選択ワード線ＷＬｎに書き込みパルス（プログラムパルス）が印加されないので、選択ワード線ＷＬｎに接続されたメモリセルトランジスタＭＴそれぞれに対してストレスを与えずに、コア動作（つまり、書き込みデータに応じてビット線ＢＬ０〜ＢＬ（Ｌ−１）を充電する動作）によって高ノイズを発生することができる。
【００８２】
図１１は、プログラムパルスの印加および第２の動作の双方をスキップする書き込み動作を示す。
【００８３】
本実施形態では、高ノイズの発生頻度をさらに高くできるようにするために、ＮＡＮＤ型フラッシュメモリ１０は、「プログラムパルススキップ」機能のみならず、「プログラムベリファイスキップ」機能も有している。「プログラムパルススキップ」機能と「プログラムベリファイスキップ」機能の双方が有効にされた場合、書き込みパルス（プログラムパルス）を印加する動作が省略され、さらに、第２の動作も省略される。
【００８４】
メモリコントローラ２００は、「プログラムパルススキップ」機能および「プログラムベリファイスキップ」機能を有効にすべきことをＮＡＮＤ型フラッシュメモリ１０に指示することができる。例えば、メモリコントローラ２００は、セットフィーチャコマンドシーケンス（コマンドＥＦｈ、アドレスＡＤＤ、データＤａｔａ−Ｉｎ）をＮＡＮＤ型フラッシュメモリ１０に送信することによって、「プログラムパルススキップ」機能および「プログラムベリファイスキップ」機能を有効にすることができる。なお、メモリコントローラ２００は、「プログラムパルススキップ」機能を有効にするためのセットフィーチャコマンドシーケンスと、「プログラムベリファイスキップ」機能を有効にするためのセットフィーチャコマンドシーケンスとをＮＡＮＤ型フラッシュメモリ１０にそれぞれ送信してもよい。
【００８５】
「プログラムパルススキップ」機能と「プログラムベリファイスキップ」機能の双方が有効にされた場合、書き込み動作（プログラムシーケンス）においては、第１の動作だけが繰り返し実行される（「プログラムパルススキップ＋プログラムベリファイスキップ」モード）。第１の動作のループ回数はセットフィーチャコマンドシーケンスによって設定されてもよい。各第１の動作では、書き込みパルス（プログラムパルス）を印加する動作が省略される。
【００８６】
図１２は、「プログラムパルススキップ＋プログラムベリファイスキップ」モードとコア動作波形との関係を示す。
【００８７】
メモリコントローラ２００は、まず、「プログラムパルススキップ」機能と「プログラムベリファイスキップ」機能とを有効にするために、セットフィーチャコマンドシーケンス（コマンドＥＦｈ、アドレスＡＤＤ、データＤａｔａ−Ｉｎ）をＮＡＮＤ型フラッシュメモリ１０に送信する。次いで、メモリコントローラ２００は、プログラムコマンドシーケンス（例えば、コマンド８ｘｈ、アドレスＡｄｄ、データＤｉｎ、コマンド１５ｈ）をＮＡＮＤ型フラッシュメモリ１０に送信する。そしてメモリコントローラ２００は、レディー／ビジー信号ＲＹ／ＢＹｎを監視し、ＮＡＮＤ型フラッシュメモリ１０がビジー状態からレディー状態に復帰するのを待つ。ＮＡＮＤ型フラッシュメモリ１０がレディー状態に復帰すると、メモリコントローラ２００は、コマンドシーケンス（例えば、コマンド８ｘｈ、アドレスＡｄｄ、データＤａｔａ−Ｉｎ）、またはコマンドシーケンス（例えば、コマンド０５ｈ、アドレスＡｄｄ、コマンドＥ０ｈ）をＮＡＮＤ型フラッシュメモリ１０に送信する。
【００８８】
ＮＡＮＤ型フラッシュメモリ１０においては、セットフィーチャコマンドシーケンスに応じて「プログラムパルススキップ」機能と「プログラムベリファイスキップ」機能とが有効にされる。メモリコントローラ２００から受信される書き込みデータ（Ｄｉｎ）は、データパス１５を介してＩ／Ｏ制御回路１６からキャッシュ１４（ＸＤＬ）に転送される。コマンド１５ｈが受信されると、書き込みデータ（Ｄｉｎ）は、キャッシュ１４（ＸＤＬ）からセンスアンプ（Ｓ／Ａ）１３に転送される。センスアンプ（Ｓ／Ａ）１３への書き込みデータ（Ｄｉｎ）の転送が完了すると、レディー／ビジー信号ＲＹ／ＢＹｎがハイレベルに戻され、そして「プログラムパルススキップ＋プログラムベリファイスキップ」モードで書き込み動作が開始される。
【００８９】
「プログラムパルススキップ＋プログラムベリファイスキップ」モードの書き込み動作では、第１の動作だけが繰り返し実行される。この場合、第１の動作は、ビット線充電期間ｔ１とワード線／ビット線リセット期間ｔ３のみを含み、書き込みパルス印加期間ｔ２は省略される。
【００９０】
この結果、書き込み動作の期間全体に占めるビット線充電期間ｔ１の割合をさらに高くすることができる。つまり、期間ｔ３の経過の度に高ノイズを発生することができ、高ノイズが発生する頻度をさらに高くすることができる。また、第２の動作（一種のプログラムベリファイ動作）がスキップされることによって、テストに要する時間を短縮することも可能となる。
【００９１】
図１３は、プログラムパルスの印加をスキップし且つプログラムデータパターンを自動生成する書き込み動作と、コア動作波形との関係を示す。
【００９２】
本実施形態では、メモリコントローラ２００からＮＡＮＤ型フラッシュメモリ１０への書き込みデータ（１ページ分のデータ）の入力もスキップできるようにするために、ＮＡＮＤ型フラッシュメモリ１０は、「プログラムパルススキップ」機能、「プログラムベリファイスキップ」機能のみならず、「自動データパターン生成」機能も有している。「自動データパターン生成」機能は、チップ内部で書き込みデータ（データパターン）を生成する機能である。つまり、ＮＡＮＤ型フラッシュメモリ１０は、書き込みデータ（データパターン）を自動生成し、この自動生成された書き込みデータを、上述の「プログラムパルススキップ」モードまたは「プログラムパルススキップ＋プログラムベリファイスキップ」モードにおいてビット線充電のために使用する。また、ＮＡＮＤ型フラッシュメモリ１０は、幾つか種類のデータパターンを自動生成する機能を有していてもよい。この場合、使用すべきデータパターンはセットフィーチャコマンドシーケンスによって指定されてもよい。
【００９３】
メモリコントローラ２００は、「プログラムパルススキップ」機能と「自動データパターン生成」機能の双方を有効にすべきことをＮＡＮＤ型フラッシュメモリ１０に指示することができる。例えば、メモリコントローラ２００は、セットフィーチャコマンドシーケンス（コマンドＥＦｈ、アドレスＡＤＤ、データＤａｔａ−Ｉｎ）をＮＡＮＤ型フラッシュメモリ１０に送信することによって、「プログラムパルススキップ」機能および「自動データパターン生成」機能を有効にすることができる。この場合、メモリコントローラ２００は、「自動データパターン生成」機能で生成すべきデータパターンをセットフィーチャコマンドシーケンスによって指定してもよい。
【００９４】
なお、メモリコントローラ２００は、「プログラムパルススキップ」機能を有効にするためのセットフィーチャコマンドシーケンスと、「自動データパターン生成」機能を有効にするためのセットフィーチャコマンドシーケンスとをＮＡＮＤ型フラッシュメモリ１０にそれぞれ送信してもよい。
【００９５】
あるいは、メモリコントローラ２００は、「プログラムパルススキップ」機能、「プログラムベリファイスキップ」機能、および「自動データパターン生成」機能のすべてを有効にすべきことをＮＡＮＤ型フラッシュメモリ１０に指示してもよい。
【００９６】
「プログラムパルススキップ」機能と「プログラムベリファイスキップ」機能の双方が有効にされた場合、各第１の動作動作では、ＮＡＮＤ型フラッシュメモリ１０内部で自動生成された書き込みデータがビット線充電のために使用され、且つ書き込みパルス（プログラムパルス）を印加する動作は省略される（「プログラムパルススキップ＋自動データパターン生成」モード）。
【００９７】
すなわち、図１３に示されているように、メモリコントローラ２００は、まず、「プログラムパルススキップ」機能と「自動データパターン生成」機能とを有効にするために、セットフィーチャコマンドシーケンス（コマンドＥＦｈ、アドレスＡＤＤ、データＤａｔａ−Ｉｎ）をＮＡＮＤ型フラッシュメモリ１０に送信する。次いで、メモリコントローラ２００は、プログラムコマンドシーケンス（例えば、コマンド８ｘｈ、アドレスＡｄｄ、コマンド１５ｈ）をＮＡＮＤ型フラッシュメモリ１０に送信する。データＤｉｎはチップ内部で自動生成されるため、メモリコントローラ２００は、データＤｉｎの送信を省略することができる。そしてメモリコントローラ２００は、レディー／ビジー信号ＲＹ／ＢＹｎを監視し、ＮＡＮＤ型フラッシュメモリ１０がビジー状態からレディー状態に復帰するのを待つ。ＮＡＮＤ型フラッシュメモリ１０がレディー状態に復帰すると、メモリコントローラ２００は、コマンドシーケンス（例えば、コマンド８ｘｈ、アドレスＡｄｄ、データＤａｔａ−Ｉｎ）、またはコマンドシーケンス（例えば、コマンド０５ｈ、アドレスＡｄｄ、コマンドＥ０ｈ）をＮＡＮＤ型フラッシュメモリ１０に送信する。
【００９８】
ＮＡＮＤ型フラッシュメモリ１０においては、セットフィーチャコマンドシーケンスに応じて「プログラムパルススキップ」機能と「自動データパターン生成」機能とが有効にされる。制御回路２３は、書き込みデータ（データパターン）を自動生成する。この書き込みデータは、データパス１５を介してキャッシュ１４（ＸＤＬ）に転送される。コマンド１５ｈが受信されると、書き込みデータは、キャッシュ１４（ＸＤＬ）からセンスアンプ（Ｓ／Ａ）１３に転送される。センスアンプ（Ｓ／Ａ）１３への書き込みデータの転送が完了すると、レディー／ビジー信号ＲＹ／ＢＹｎがハイレベルに戻され、そして「プログラムパルススキップ＋自動データパターン生成」モードで書き込み動作が開始される。
【００９９】
「プログラムパルススキップ＋自動データパターン生成」モードの書き込み動作では、第１の動作および第２の動作が繰り返し実行される。この場合、第１の動作は、ビット線充電期間ｔ１とワード線／ビット線リセット期間ｔ３のみを含み、書き込みパルス印加期間ｔ２は省略される。ビット線充電期間ｔ１では、自動生成された書き込みデータ（データパターン）に応じてビット線ＢＬ０〜ＢＬ（Ｌ−１）が充電される。
【０１００】
このように、「自動データパターン生成」機能を有効にすることにより、メモリコントローラ２００からＮＡＮＤ型フラッシュメモリ１０への１ページ分のデータ（Ｄｉｎ）の送信を省略することができる。これにより、テストに要する時間を短縮することができる。さらには、メモリコントローラ２００と１つのＮＡＮＤ型フラッシュメモリ１０との間の通信のためにＩ／Ｏバスが専有される時間を短縮することができるので、複数のＮＡＮＤ型フラッシュメモリ１０を効率良く並列駆動することが可能となる。
【０１０１】
ＮＡＮＤ型フラッシュメモリ１０によって自動生成可能なデータパターンの例は、例えば、以下の通りである。
【０１０２】
（１）ビット線ストライプ
（２）オール“１”
（３）オール“０”
（４）ランダム
ビット線ストライプは、図１４に示すように、隣合う任意の２つのビット線の一方に電圧ＶＤＤが印加され、他方に０Ｖが印加されるデータパターン（例えば、０１０１０１０１０１０１…）である。このデータパターンを使用することにより、隣合うビット線間の容量結合を最大化することができる。この結果、ビット線ＢＬ０〜ＢＬ（Ｌ−１）に流れる電流（消費電流）の量を増やすことができるので、ビット線ＢＬ０〜ＢＬ（Ｌ−１）の充電に起因するノイズの量を最大化することができる。
【０１０３】
オール“１”は、全てのビット線ＢＬ０〜ＢＬ（Ｌ−１）に電圧ＶＤＤが印加されるデータパターン（１１１１１１１１１１１１…）である。オール“０”は、全てのビット線ＢＬ０〜ＢＬ（Ｌ−１）に０Ｖが印加されるデータパターン（００００００００００００…）である。ランダムは、メモリコントローラ２００からのアドレスＡｄｄ（例えば、ロウアドレス）に基づいて特定のデータパターンをランダマイズすることによって得られるデータパターンである。
【０１０４】
なお、使用すべきデータパターンがセットフィーチャコマンドシーケンスによって指定されなかった場合には、ビット線ストライプのデータパターンまたはオール“１”のデータパターン等が自動的に選択されるようにしてもよい。
【０１０５】
図１５は、プログラムパルスの印加をスキップし且つデータパスを自動的にチェックする書き込み動作と、コア動作波形との関係を示す。
【０１０６】
本実施形態では、データパス１５を介したデータ転送を自動的に実行できるようにするために、ＮＡＮＤ型フラッシュメモリ１０は、「プログラムパルススキップ」機能、「プログラムベリファイスキップ」機能、「自動データパターン生成」機能のみならず、「自動データパスチェック」機能も有している。「自動データパスチェック」機能は、コア動作と並行して、データパス１５をチェックする機能である。
【０１０７】
メモリコントローラ２００は、「プログラムパルススキップ」機能と「自動データパスチェック」機能の双方を有効にすべきことをＮＡＮＤ型フラッシュメモリ１０に指示することができる。例えば、メモリコントローラ２００は、セットフィーチャコマンドシーケンス（コマンドＥＦｈ、アドレスＡＤＤ、データＤａｔａ−Ｉｎ）をＮＡＮＤ型フラッシュメモリ１０に送信することによって、「プログラムパルススキップ」機能および「自動データパスチェック」機能を有効にすることができる。なお、メモリコントローラ２００は、「プログラムパルススキップ」機能を有効にするためのセットフィーチャコマンドシーケンスと、「自動データパスチェック」機能を有効にするためのセットフィーチャコマンドシーケンスとをＮＡＮＤ型フラッシュメモリ１０にそれぞれ送信してもよい。
【０１０８】
あるいは、メモリコントローラ２００は、以下の機能の組み合わせのいずれかを有効にすべきことをＮＡＮＤ型フラッシュメモリ１０に指示することができる。
【０１０９】
（１）「プログラムパルススキップ」機能と「自動データパスチェック」機能の組み合わせ
（２）「プログラムパルススキップ」機能と「プログラムベリファイスキップ」機能と「自動データパスチェック」機能の組み合わせ
（３）「プログラムパルススキップ」機能と「自動データパターン生成」機能と「自動データパスチェック」機能の組み合わせ
（４）「プログラムパルススキップ」機能と「プログラムベリファイスキップ」機能と「自動データパターン生成」機能と「自動データパスチェック」機能の組み合わせ
以下では、「プログラムパルススキップ」機能と「自動データパスチェック」機能の双方が有効にされた場合の動作（「プログラムパルススキップ＋自動データパスチェック」モード）について説明する。
【０１１０】
すなわち、図１５に示されているように、メモリコントローラ２００は、まず、「プログラムパルススキップ」機能と「自動データパスチェック」機能とを有効にするために、セットフィーチャコマンドシーケンス（コマンドＥＦｈ、アドレスＡＤＤ、データＤａｔａ−Ｉｎ）をＮＡＮＤ型フラッシュメモリ１０に送信する。次いで、メモリコントローラ２００は、プログラムコマンドシーケンス（例えば、コマンド８ｘｈ、アドレスＡｄｄ、コマンド１ｘｈ）をＮＡＮＤ型フラッシュメモリ１０に送信する。コマンド１ｘｈは、上述のコマンド１５ｈであってもよいし、コマンド１０ｈであってもよい。コマンド１０ｈが使用された場合には、書き込み動作（プログラムシーケンス）が実行されている間は、ＮＡＮＤ型フラッシュメモリ１０はビジー状態に維持される。
【０１１１】
ＮＡＮＤ型フラッシュメモリ１０においては、セットフィーチャコマンドシーケンスに応じて「プログラムパルススキップ」機能と「自動データパスチェック」機能とが有効にされる。メモリコントローラ２００から受信された書き込みデータ（Ｄｉｎ）は、データパス１５を介してキャッシュ１４（ＸＤＬ）に転送される。コマンド１０ｈが受信されると、書き込みデータ（Ｄｉｎ）は、キャッシュ１４（ＸＤＬ）からセンスアンプ（Ｓ／Ａ）１３に転送され、そして「プログラムパルススキップ＋自動データパスチェック」モードで書き込み動作が開始される。
【０１１２】
「プログラムパルススキップ＋自動データパスチェック」モードの書き込み動作では、第１の動作および第２の動作が繰り返し実行される。この場合、第１の動作は、ビット線充電期間ｔ１とワード線／ビット線リセット期間ｔ３のみを含み、書き込みパルス印加期間ｔ２は省略される。
【０１１３】
この書き込み動作と並行して、以下のデータ転送が実行される。
【０１１４】
（１）データのロード
制御回路２３は、データパスチェックに用いられるデータをキャッシュ１４（ＸＤＬ）にロードする。データパスチェックに用いられるデータは、ＮＡＮＤ型フラッシュメモリ１０内部で自動生成できる。このデータのデータパターンは、上述したビット線ストライプ、オール“１”、オール“０”、ランダムのいずれであってもよい。
【０１１５】
（２）データの転送
制御回路２３は、キャッシュ１４（ＸＤＬ）にロードされたデータを、データパス１５を介して内部レジスタに転送する。この内部レジスタは、Ｉ／Ｏ制御回路１６内のレジスタであってもよいし、別のプレーン内のキャッシュ（ここではプレーン＃２内のキャッシュ）であってもよい。
【０１１６】
（３）データをキャッシュへ戻す
制御回路２３は、内部レジスタ内のデータをデータパス１５を介してキャッシュ１４（ＸＤＬ）に戻す。
【０１１７】
（４）期待値のチェック
制御回路２３は、キャッシュ１４（ＸＤＬ）に戻されたデータを自動生成されたデータと比較して、キャッシュ１４（ＸＤＬ）に戻されたデータが自動生成されたデータと一致するか否かを検証する。つまり、自動生成されたデータは、キャッシュ１４（ＸＤＬ）に戻されたデータを検証するための期待値データとして使用される。制御回路２３は、比較結果、つまり検証結果を、ステータスレジスタ１９に設定する。
【０１１８】
メモリコントローラ２００は、ステータスリードコマンドをＮＡＮＤ型フラッシュメモリ１０に送出することによってステータスレジスタ１９から検証結果を読むことができる。
【０１１９】
キャッシュ１４（ＸＤＬ）に戻されたデータが期待値データと一致する（検証結果＝パス）ということは、データパス１５が正常であることを意味する。一方、キャッシュ１４（ＸＤＬ）に戻されたデータが期待値データと一致しない（検証結果＝フェイル）ということは、データパス１５に障害があることを意味する。
【０１２０】
なお、データパス１５のチェックにおいて、（１）〜（３）でキャッシュ１４と内部レジスタとの間を往復させるデータとして、キャッシュ１４に残存しているデータを用いてもよい。この場合、キャッシュ１４に残存しているデータは、メモリコントローラ２００から受信される書き込みデータ（Ｄｉｎ）であってもよい。
【０１２１】
このように、「自動データパスチェック」機能を有効にすることにより、書き込み動作をしながらＮＡＮＤ型フラッシュメモリ１０内のデータパス１５の状態をチェックすることができる。
【０１２２】
図１６は、プログラムパルスの印加をスキップし且つチップ内の温度を自動的にチェックする書き込み動作を示す。
【０１２３】
本実施形態では、ＮＡＮＤ型フラッシュメモリ１０内の温度を自動的にチェックできるようにするために、ＮＡＮＤ型フラッシュメモリ１０は、「プログラムパルススキップ」機能、「プログラムベリファイスキップ」機能、「自動データパターン生成」機能、「自動データパスチェック」機能のみならず、「自動温度チェック」機能も有している。「自動温度チェック」機能は、ＮＡＮＤ型フラッシュメモリ１０内部の温度をチェックする機能である。
【０１２４】
メモリコントローラ２００は、「プログラムパルススキップ」機能および「自動温度チェック」機能を有効にすべきことをＮＡＮＤ型フラッシュメモリ１０に指示することができる。例えば、メモリコントローラ２００は、セットフィーチャコマンドシーケンス（コマンドＥＦｈ、アドレスＡＤＤ、データＤａｔａ−Ｉｎ）をＮＡＮＤ型フラッシュメモリ１０に送信することによって、「プログラムパルススキップ」機能および「自動温度チェック」機能を有効にすることができる。なお、メモリコントローラ２００は、「プログラムパルススキップ」機能を有効にするためのセットフィーチャコマンドシーケンスと、「自動温度チェック」機能を有効にするためのセットフィーチャコマンドシーケンスとをＮＡＮＤ型フラッシュメモリ１０にそれぞれ送信してもよい。
【０１２５】
あるいは、メモリコントローラ２００は、以下の機能の組み合わせのいずれかを有効にすべきことをＮＡＮＤ型フラッシュメモリ１０に指示することができる。
【０１２６】
（１）「プログラムパルススキップ」機能と「自動温度チェック」機能の組み合わせ
（２）「プログラムパルススキップ」機能と「プログラムベリファイスキップ」機能と「自動温度チェック」機能の組み合わせ
（３）「プログラムパルススキップ」機能と「自動データパターン生成」機能と「自動温度チェック」機能の組み合わせ
（４）「プログラムパルススキップ」機能と「プログラムベリファイスキップ」機能と「自動データパターン生成」機能と「自動温度チェック」機能の組み合わせ
以下では、「プログラムパルススキップ」機能と「自動温度チェック」機能の双方が有効にされた場合の動作（「プログラムパルススキップ＋自動温度チェック」モード）について説明する。
【０１２７】
すなわち、図１６に示されているように、メモリコントローラ２００は、まず、「プログラムパルススキップ」機能と「自動温度チェック」機能とを有効にするために、セットフィーチャコマンドシーケンス（コマンドＥＦｈ、アドレスＡＤＤ、データＤａｔａ−Ｉｎ）をＮＡＮＤ型フラッシュメモリ１０に送信する。次いで、メモリコントローラ２００は、プログラムコマンドシーケンス（例えば、コマンド８ｘｈ、アドレスＡｄｄ、データＤｉｎ、コマンド１ｘｈ）をＮＡＮＤ型フラッシュメモリ１０に送信する。コマンド１ｘｈは、上述のコマンド１５ｈであってもよいし、コマンド１０ｈであってもよい。コマンド１０ｈが使用された場合には、書き込み動作が実行されている間は、ＮＡＮＤ型フラッシュメモリ１０はビジー状態に維持される。
【０１２８】
ＮＡＮＤ型フラッシュメモリ１０においては、セットフィーチャコマンドシーケンスに応じて「プログラムパルススキップ」機能と、「自動データパスチェック」機能とが有効にされる。メモリコントローラ２００から受信された書き込みデータ（Ｄｉｎ）は、データパス１５を介してキャッシュ１４（ＸＤＬ）に転送される。コマンド１０ｈが受信されると、書き込みデータ（Ｄｉｎ）は、キャッシュ１４（ＸＤＬ）からセンスアンプ（Ｓ／Ａ）１３に転送され、そして「プログラムパルススキップ＋自動温度チェック」モードで書き込み動作が開始される。
【０１２９】
この書き込み動作は、以下の手順で実行される。
【０１３０】
（１）チップ内温度の計測
プログラムコマンドシーケンスの最初に、制御回路２３は、温度センサ２８によってＮＡＮＤ型フラッシュメモリ１０内の温度を計測する。これにより、現在の温度のデータ（Ｔｅｍｐ  Ｃｏｄｅ）が更新される。ここで計測された温度の値は、この後に実行されるプログラム（Ｐｒｏｇ）およびプログラムベリファイ（Ｐｖｆｙ）動作において、選択ワード線ＷＬｎに印加されるプログラムパルスの電圧およびビット線ＢＬ０〜ＢＬ（Ｌ−１）に印加される電圧等を決定するために用いられる。
【０１３１】
温度の計測が完了すると、第１の動作および第２の動作が繰り返し実行される。この場合、第１の動作は、ビット線充電期間ｔ１とワード線／ビット線リセット期間ｔ３のみを含み、書き込みパルス印加期間ｔ２は省略される。
【０１３２】
（２）チップ内温度の再計測
プログラムコマンドシーケンスが完了すると、レディー／ビジー信号ＲＹ／ＢＹｎがハイレベルに戻される。その後、メモリコントローラ２００からＮＡＮＤ型フラッシュメモリ１０にコマンドＢ９ｈが送信される。このコマンドＢ９ｈは、温度の計測を指示するコマンドである。このコマンドＢ９ｈの受信に応答して、制御回路２３は、温度センサ２８によってＮＡＮＤ型フラッシュメモリ１０内の温度を再計測する。これは、第１の動作および第２の動作によってどの程度、ＮＡＮＤ型フラッシュメモリ１０内の温度が上昇したか判断するために実行される。
【０１３３】
（３）温度の値の出力
ＮＡＮＤ型フラッシュメモリ１０内の温度の再計測が完了すると、レディー／ビジー信号ＲＹ／ＢＹｎがハイレベルに戻される。その後、ＮＡＮＤ型フラッシュメモリ１０がメモリコントローラ２００からコマンド７Ｃｈを受信すると、制御回路２３は、再計測された温度の値をメモリコントローラ２００に出力する。
【０１３４】
メモリコントローラ２００に出力された温度の値が所望の温度（テスト動作を実施したい温度）に到達していたならば、図１６のコマンドシーケンスは終了する。一方、メモリコントローラ２００に出力された温度の値が所望の温度（テスト動作を実行したい温度）に到達していないならば、図１６のコマンドシーケンス全体が再び実行される。この図１６のコマンドシーケンス全体は、ＮＡＮＤ型フラッシュメモリ１０内の温度が所望の温度に到達するまで繰り返される。
【０１３５】
このように、「自動温度チェック」機能を有効することにより、所望の温度までＮＡＮＤ型フラッシュメモリ１０のチップ内温度を上昇させることができる。また、「自動温度チェック」機能と「プログラムパルススキップ」機能とを組み合わせることで、選択ワード線への書き込みパルスの印加をスキップできるため、メモリコア（メモリセルアレイ）１２に負担をかけずに温度を上昇させることができる。
【０１３６】
図１７は、リード期間を外部から制御でき且つチップ内の温度を自動的にチェックする読み出し動作を示す。
【０１３７】
メモリコントローラ２００は、リードコマンドシーケンス（例えば、コマンド２Ａｈ、コマンド４Ｆｈ、コマンド００ｈ、アドレスＡｄｄ、コマンドＡＥｈ）をＮＡＮＤ型フラッシュメモリ１０に送信する。ここで、コマンド２Ａｈは全てのプレーンからのデータ読み出し動作を要求するためのコマンドである。また、コマンド４Ｆｈは、読み出し動作の時間を外部から制御するためのモードを有効にするためのコマンドである。
【０１３８】
ＮＡＮＤ型フラッシュメモリ１０がリードコマンドシーケンスを受信すると、以下に示す動作が実行される。
【０１３９】
（１）温度の計測
リードコマンドシーケンスの最初に、制御回路２３は、温度センサ２８によってＮＡＮＤ型フラッシュメモリ１０内の温度を計測される。これにより、現在の温度のデータ（Ｔｅｍｐ  Ｃｏｄｅ）が更新される。
【０１４０】
温度の計測が実行された後、コア動作が実行される。このコア動作では、計測された温度に応じた読み出し電圧が選択ワード線に印加される。ターンオンしたメモリセルトランジスタＭＴに接続されているビット線にはセル電流が流れる。この状態は、ＮＡＮＤ型フラッシュメモリ１０がメモリコントローラ２００からコマンド７Ｆｈを受信するまで維持される。つまり、コマンド７Ｆｈが受信されるまでビット線にはセル電流が流れ続ける。このコマンド７Ｆｈは、読み出し動作を終了するためのコマンドである。メモリコントローラ２００がコマンド７Ｆｈを送信するタイミングを制御することで、メモリコア（メモリセルアレイ）１２のリード状態が維持される時間を制御することができる。
【０１４１】
ＮＡＮＤ型フラッシュメモリ１０がコマンド７Ｆｈを受信すると、読み出し動作が終了され、ワード線ＷＬ０〜ＷＬ７、およびビット線ＢＬ０〜ＢＬ（Ｌ−１）が初期状態にリセットされる（コアリセット）。
【０１４２】
（２）チップ内温度の再計測
ワード線ＷＬ０〜ＷＬ７、およびビット線ＢＬ０〜ＢＬ（Ｌ−１）が初期状態にリセットされると、レディー／ビジー信号ＲＹ／ＢＹｎがハイレベルに戻される。その後、メモリコントローラ２００からＮＡＮＤ型フラッシュメモリ１０にコマンドＢ９ｈが送信される。制御回路２３は、温度センサ２８によってＮＡＮＤ型フラッシュメモリ１０内の温度を再計測する。これは、コア動作（読み出し動作）によってどの程度、ＮＡＮＤ型フラッシュメモリ１０内の温度が上昇したか判断するために実行される。
【０１４３】
（３）温度の値の出力
ＮＡＮＤ型フラッシュメモリ１０内の温度の再計測が完了すると、レディー／ビジー信号ＲＹ／ＢＹｎがハイレベルに戻される。その後、ＮＡＮＤ型フラッシュメモリ１０がメモリコントローラ２００からコマンド７Ｃｈを受信すると、制御回路２３は、再計測された温度の値をメモリコントローラ２００に出力する。
【０１４４】
メモリコントローラ２００に出力された温度の値が所望の温度（テスト動作を実施したい温度）に到達していたならば、図１７のコマンドシーケンスは終了する。一方、メモリコントローラ２００に出力された温度の値が所望の温度（テスト動作を実行したい温度）に到達していないならば、図１７のコマンドシーケンス全体が再び実行される。この図１７のコマンドシーケンス全体は、ＮＡＮＤ型フラッシュメモリ１０内の温度が所望の温度に到達するまで繰り返される。
【０１４５】
このように、読み出し動作の時間を外部から制御することで、ＮＡＮＤ型フラッシュメモリ１０内の温度を効率的に上げることができる。
【０１４６】
（第２実施形態）
次に、上述のオン・チップ・ＦＢＣ機能を有するＮＡＮＤ型フラッシュメモリ１０を第２実施形態として説明する。
【０１４７】
この第２実施形態のＮＡＮＤ型フラッシュメモリ１０は、図３で説明した第１実施形態のＮＡＮＤ型フラッシュメモリと同様のハードウェア構成を有している。第２実施形態のＮＡＮＤ型フラッシュメモリ１０は、メモリセル当たりに１ビットを格納するシングルレベルセル（ＳＬＣ）−フラッシュメモリ、メモリセル当たりに２ビットを格納可能なマルチレベルセル（ＭＬＣ）−フラッシュメモリ、またはメモリセル当たりに３ビットを格納可能なトリプルレベルセル（ＴＬＣ）−フラッシュメモリとして実現されている。第２実施形態のＮＡＮＤ型フラッシュメモリ１０のメモリセルアレイ１２は、図４で説明した第１実施形態のＮＡＮＤ型フラッシュメモリのメモリセルアレイ１２の同様の構成を有している。
【０１４８】
図１８は、トリプルレベルセル（ＴＬＣ）に対応する８つの閾値電圧レベルと８つの閾値電圧レベルにマッピングされる３ビットデータとの関係の例を示す。
【０１４９】
メモリセルアレイ１２内のメモリセルトランジスタＭＴそれぞれは、８つのステート（一つの消去ステート、および７つのプログラムステート）のいずれかに設定される。これら８つのステートは、“Ｅｒ”ステート、“Ａ”ステート、“Ｂ”ステート、“Ｃ”ステート、“Ｄ”ステート、“Ｅ”ステート、“Ｆ”ステート、“Ｇ”ステートとして参照される。これら“Ｅｒ”、“Ａ”、“Ｂ”、“Ｃ”、“Ｄ”、“Ｅ”、“Ｆ”、“Ｇ”ステートは、互いに異なる閾値電圧レベルを有している。このため、これらステートは、“Ｅｒ”レベル、“Ａ”レベル、“Ｂ”レベル、“Ｃ”レベル、“Ｄ”レベル、“Ｅ”レベル、“Ｆ”レベル、“Ｇ”レベルとしても参照される。閾値電圧レベルは、“Ｅｒ”、“Ａ”、“Ｂ”、“Ｃ”、“Ｄ”、“Ｅ”、“Ｆ”、“Ｇ”ステートの順で高くなる。
【０１５０】
読み出し動作においては、“Ｅｒ”、“Ａ”、“Ｂ”、“Ｃ”、“Ｄ”、“Ｅ”、“Ｆ”、“Ｇ”ステートを互いに分離するための７つの電圧ＶＡ、ＶＢ、ＶＣ、ＶＤ、ＶＥ、ＶＦ、ＶＧのいずれかが読み出し電圧（ＶＣＧＲＶ）として使用される。読み出し電圧（ＶＣＧＲＶ）は、選択ワード線に印加される電圧である。電圧ＶＡは“Ｅｒ”ステートと“Ａ”ステートとの境界に対応する電圧であり、電圧ＶＢは“Ａ”ステートと“Ｂ”ステートとの境界に対応する電圧であり、電圧ＶＣは“Ｂ”ステートと“Ｃ”ステートとの境界に対応する電圧であり、電圧ＶＤは“Ｃ”ステートと“Ｄ”ステートとの境界に対応する電圧であり、電圧ＶＥは“Ｄ”ステートと“Ｅ”ステートとの境界に対応する電圧であり、電圧ＶＥは“Ｄ”ステートと“Ｅ”ステートとの境界に対応する電圧であり、電圧ＶＦは“Ｅ”ステートと“Ｆ”ステートとの境界に対応する電圧であり、電圧ＶＧは“Ｆ”ステートと“Ｇ”ステートとの境界に対応する電圧である（ＶＡ＜ＶＢ＜ＶＣ＜ＶＤ＜ＶＥ＜ＶＦ＜ＶＧ）。読み出し動作において、非選択ワード線には電圧Ｖｒｅａｄが印加される。電圧Ｖｒｅａｄは、保持データに関係なくメモリセルトランジスタＭＴをオンさせることが可能な電圧である（ＶＧ＜Ｖｒｅａｄ）。
【０１５１】
書き込み動作においては、同一ワード線に接続されたメモリセルトランジスタＭＴ群には、データの３つのページ（ロアーページデータ、ミドルページデータ、アッパーページデータ）が書き込まれる。これにより、これらメモリセルトランジスタＭＴの各々の閾値電圧は、それが保持する３ビットデータ（アッパーページビット、ミドルページビット、ロアーページビット）に応じて、“Ｅｒ”、“Ａ”、“Ｂ”、“Ｃ”、“Ｄ”、“Ｅ”、“Ｆ”、または“Ｇ”ステートのいずれかに設定される。
【０１５２】
例えば、“Ｅｒ”、“Ａ”、“Ｂ”、“Ｃ”、“Ｄ”、“Ｅ”、“Ｆ”、“Ｇ”ステートには、３ビットデータ“１１１”、“１１０”、“１００”、“０００”、“０１０”、“０１１”、“００１”、“１０１”がそれぞれマッピングされてもよい。３ビットデータを“ｘｙｚ”として表す時、ｘはアッパーページに対応するビット（上位ビット）を表し、ｙはミドルページに対応するビット（中位ビット）を表し、ｚはロアーページに対応するビット（下位ビット）を表す。
【０１５３】
ロアーページにおいては、“Ｅｒ”ステートと“Ａ”ステートとの間の境界および“Ｄ”ステートと“Ｅ”ステートとの間の境界にそれぞれ“０”と“１”の間の境界が存在する。したがって、ロアーページの読み出し動作においては、“Ａ”ステートに対応する読み出し電圧ＶＡを使用する読み出し動作ＡＲと、“Ｅ”ステートに対応する読み出し電圧ＶＥを使用する読み出し動作ＥＲとが実行される。読み出し動作ＡＲは、選択ワード線ＷＬｎに接続されたメモリセルトランジスタＭＴそれぞれが、“Ｅｒ”ステート未満の閾値電圧を有するか、あるいは“Ａ”ステート以上の閾値電圧を有するかを判定するための読み出し動作である。読み出し動作ＥＲは、選択ワード線ＷＬｎに接続されたメモリセルトランジスタＭＴそれぞれが、“Ｄ”ステート未満の閾値電圧を有するか、あるいは“Ｅ”ステート以上の閾値電圧を有するかを判定するための読み出し動作である。ロアーページデータは、読み出し動作ＡＲによって読み出されたデータと読み出し動作ＥＲによって読み出されたデータとによって確定される。
【０１５４】
ロアーページの読み出し動作においては、最初に、電圧ＶＡが読み出し電圧（ＶＣＧＲＶ）として選択ワード線ＷＬｎに印加されてメモリセルトランジスタＭＴそれぞれからビット線ＢＬ０〜ＢＬ（Ｌ−１）にデータが読み出される（読み出し動作ＡＲ）。次いで、電圧ＶＥが読み出し電圧（ＶＣＧＲＶ）として選択ワード線ＷＬｎに印加されてメモリセルトランジスタＭＴそれぞれからビット線ＢＬ０〜ＢＬ（Ｌ−１）にデータが読み出される（読み出し動作ＥＲ）。
【０１５５】
ミドルページにおいては、“Ａ”ステートと“Ｂ”ステートとの間の境界と、“Ｃ”ステートと“Ｄ”ステートとの間の境界と、“Ｅ”ステートと“Ｆ”ステートとの間の境界にそれぞれ “０”と“１”の間の境界が存在する。したがって、ミドルページの読み出し動作においては、“Ｂ”ステートに対応する読み出し電圧ＶＢを使用する読み出し動作ＢＲと、“Ｄ”ステートに対応する読み出し電圧ＶＤを使用する読み出し動作ＤＲと、“Ｆ”ステートに対応する読み出し電圧ＶＦを使用する読み出し動作ＦＲとが実行される。ミドルページデータは、読み出し動作ＢＲによって読み出されたデータと、読み出し動作ＤＲによって読み出されたデータと、読み出し動作ＦＲによって読み出されたデータとによって確定される。
【０１５６】
ミドルページの読み出し動作においては、最初に、電圧ＶＢが読み出し電圧（ＶＣＧＲＶ）として選択ワード線ＷＬｎに印加されてメモリセルトランジスタＭＴそれぞれからビット線ＢＬ０〜ＢＬ（Ｌ−１）にデータが読み出される（読み出し動作ＢＲ）。次いで、電圧ＶＤが読み出し電圧（ＶＣＧＲＶ）として選択ワード線ＷＬｎに印加されてメモリセルトランジスタＭＴそれぞれからビット線ＢＬ０〜ＢＬ（Ｌ−１）にデータが読み出される（読み出し動作ＤＲ）。そして、電圧ＶＦが読み出し電圧（ＶＣＧＲＶ）として選択ワード線ＷＬｎに印加されてメモリセルトランジスタＭＴそれぞれからビット線ＢＬ０〜ＢＬ（Ｌ−１）にデータが読み出される（読み出し動作ＦＲ）。
【０１５７】
アッパーページにおいては、“Ｂ”ステートと“Ｃ”ステートとの間の境界および“Ｆ”ステートと“Ｇ”ステートとの間の境界にそれぞれ“０”と“１”の間の境界が存在する。したがって、アッパーページの読み出し動作においては、“Ｃ”ステートに対応する読み出し電圧ＶＣを使用する読み出し動作ＣＲと、“Ｇ”ステートに対応する読み出し電圧ＶＧを使用する読み出し動作ＧＲとが実行される。アッパーページデータは、読み出し動作ＣＲによって読み出されたデータと読み出し動作ＧＲによって読み出されたデータとによって確定される。
【０１５８】
アッパーページの読み出し動作においては、最初に、電圧ＶＣが読み出し電圧（ＶＣＧＲＶ）として選択ワード線ＷＬｎに印加されてメモリセルトランジスタＭＴそれぞれからビット線ＢＬ０〜ＢＬ（Ｌ−１）にデータが読み出される（読み出し動作ＣＲ）。次いで、電圧ＶＧが読み出し電圧（ＶＣＧＲＶ）として選択ワード線ＷＬｎに印加されてメモリセルトランジスタＭＴそれぞれからビット線ＢＬ０〜ＢＬ（Ｌ−１）にデータが読み出される（読み出し動作ＧＲ）。
【０１５９】
図１９は、マルチレベルセル（ＭＬＣ）に対応する４つの閾値電圧レベルと２ビットデータとの関係の例を示す。
【０１６０】
メモリセルアレイ１２内のメモリセルトランジスタＭＴそれぞれは、４つのステート（一つの消去ステート、および３つのプログラムステート）のいずれかに設定される。これら４つのステートは、“Ｅｒ”ステート、“Ａ”ステート、“Ｂ”ステート、“Ｃ”ステートとして参照される。“Ｅｒ”ステート（消去ステート）は“Ｅ”ステートとして参照される場合もある。これら“Ｅｒ”、“Ａ”、“Ｂ”、“Ｃ”ステートは、互いに異なる閾値電圧レベルを有している。このため、これらステートは、また、“Ｅｒ”レベル、“Ａ”レベル、“Ｂ”レベル、“Ｃ”レベルとしても参照される。閾値電圧レベルは、“Ｅｒ”、“Ａ”、“Ｂ”、“Ｃ”ステートの順で高くなる。
【０１６１】
読み出し動作においては、“Ｅｒ”、“Ａ”、“Ｂ”、“Ｃ”ステートを互いに分離するための３つの電圧ＶＡ、ＶＢ、ＶＣのいずれかが読み出し電圧（ＶＣＧＲＶ）として使用される。
【０１６２】
書き込み動作においては、同一ワード線に接続されたメモリセルトランジスタＭＴ群には、データの２つのページ（ロアーページデータ、アッパーページデータ）が書き込まれる。これにより、これらメモリセルトランジスタＭＴの各々の閾値電圧は、それが保持する２ビットデータ（アッパーページビット、ロアーページビット）に応じて、“Ｅｒ”、“Ａ”、“Ｂ”、または“Ｃ”ステートのいずれかに設定される。
【０１６３】
例えば、“Ｅｒ”、“Ａ”、“Ｂ”、“Ｃ”ステートには、２ビットデータ“１１”、“０１”、“００”、“１０”がマッピングされてもよい。２ビットデータを“ｘｙ”として表す時、ｘはアッパーページに対応するビット（上位ビット）を表し、ｙはロアーページに対応するビット（下位ビット）を表す。
【０１６４】
ロアーページにおいては、“Ａ”ステートと“Ｂ”ステートとの間の境界にのみ“０”と“１”の間の境界が存在する。したがって、ロアーページの読み出し動作においては、“Ｂ”ステートに対応する読み出し電圧ＶＢを使用する読み出し動作ＢＲのみが実行される。ロアーページデータは、読み出し動作ＢＲによって読み出されたデータのみによって確定される。
【０１６５】
ロアーページの読み出し動作においては、電圧ＶＢが読み出し電圧（ＶＣＧＲＶ）として選択ワード線ＷＬｎに印加されてメモリセルトランジスタＭＴそれぞれからビット線ＢＬ０〜ＢＬ（Ｌ−１）にデータが読み出される（読み出し動作ＢＲ）。
【０１６６】
アッパーページにおいては、“Ｅｒ”ステートと“Ａ”ステートとの間の境界と、“Ｂ”ステートと“Ｃ”ステートとの間の境界にそれぞれ“０”と“１”の間の境界が存在する。したがって、アッパーページの読み出し動作においては、“Ａ”ステートに対応する読み出し電圧ＶＡを使用する読み出し動作ＡＲと、“Ｃ”ステートに対応する読み出し電圧ＶＣを使用する読み出し動作ＣＲとが実行される。アッパーページデータは、読み出し動作ＡＲによって読み出されたデータと、読み出し動作ＣＲによって読み出されたデータとよって確定される。
【０１６７】
アッパーページの読み出し動作においては、最初に、電圧ＶＡが読み出し電圧（ＶＣＧＲＶ）として選択ワード線ＷＬｎに印加されてメモリセルトランジスタＭＴそれぞれからビット線ＢＬ０〜ＢＬ（Ｌ−１）にデータが読み出される（読み出し動作ＡＲ）。次いで、電圧ＶＣが読み出し電圧（ＶＣＧＲＶ）として選択ワード線ＷＬｎに印加されてメモリセルトランジスタＭＴそれぞれからビット線ＢＬ０〜ＢＬ（Ｌ−１）にデータが読み出される（読み出し動作ＣＲ）。
【０１６８】
ＴＬＣ／ＭＬＣにおいては、制御回路２３は、選択ワード線ＷＬｎに接続されたメモリセルトランジスタＭＴ群にｍ（ｍは２以上の整数）ページのデータを書き込んでこれらメモリセルトランジスタＭＴの各々を２ｍ個の状態（２ｍ個の閾値電圧レベル）のいずれかに設定する。ＴＬＣのロアーページ／ミドルページ／アッパーページデータの読み出し動作においては、少なくとも２回の読み出し動作（２ｍ個の状態内の第１の状態に対応する読み出し電圧を選択ワード線ＷＬｎに印可する読み出し動作と、２ｍ個の状態内の第２の状態に対応する読み出し電圧を選択ワード線ＷＬｎに印可する読み出し動作）が実行される。ＭＬＣのアッパーページデータの読み出し動作においても、２回の読み出し動作が実行される。
【０１６９】
図２０は、シングルレベルセル（ＳＬＣ）に対応する２つの閾値電圧レベルと１ビットデータとの関係の例を示す。
【０１７０】
メモリセルアレイ１２内のメモリセルトランジスタＭＴそれぞれは、２つのステート（一つの消去ステート、および一つのプログラムステート）のいずれかに設定される。読み出し動作においては、電圧ＶＡが読み出し電圧（ＶＣＧＲＶ）として使用される。つまり、読み出し動作においては、電圧ＶＡが読み出し電圧（ＶＣＧＲＶ）として選択ワード線ＷＬｎに印加されてメモリセルトランジスタＭＴそれぞれからビット線ＢＬ０〜ＢＬ（Ｌ−１）にデータが読み出される（読み出し動作ＡＲ）。
【０１７１】
図２１は、オン・チップ・ＦＢＣ機能の概要を示す。なお、以下では、ＮＡＮＤ型フラッシュメモリ１０がＴＬＣ−フラッシュメモリである場合を例示してオン・チップ・ＦＢＣ機能を説明するが、ＮＡＮＤ型フラッシュメモリ１０は、ＴＬＣ−フラッシュメモリに限定されず、ＭＬＣ−フラッシュメモリであってもよいし、ＳＬＣ−フラッシュメモリであってもよい。あるいは、ＴＬＣ／ＭＬＣ−フラッシュメモリ内の特定のブロックをＳＬＣブロックとして使用してよい。この場合、ＳＬＣブロックへのデータ書き込み動作においては、選択ワード線に接続されたメモリセルトランジスタＭＴ群にロアーページデータのみを書き込んでもよい。
【０１７２】
ＮＡＮＤ型フラッシュメモリ１０においては、時間の経過あるいはメモリセルトランジスタＭＴそれぞれに加わるストレスに起因して、メモリセルトランジスタＭＴの閾値電圧が変動する場合がある。この結果、上述の各ステートの閾値分布は拡張又はシフトするので、読み出しデータに含まれる誤りの数が増大する。誤りの数を減らすための方法の一つとして、読み出し電圧を適切な値に調整する方法がある。例えば、隣接する２つのステートに対応する２つの閾値電圧分布が重なっているケースでは、読み出し電圧を、これら２つの閾値電圧分布間の交点（閾値電圧分布間の谷間）に対応する電圧に調整することが好ましい。
【０１７３】
通常、メモリコントローラ２００は、閾値電圧分布間の交点（閾値電圧分布間の谷間）に対応する最適な電圧を求めるために、ＮＡＮＤ型フラッシュメモリ１０からページデータを読み出して、このページデータに基づいてフェイルビットの数（Fail Bit Count）をカウントすることが必要となる。この場合、図２１の上部に示すように、例えば、メモリコントローラ２００は、コマンドシーケンス（例えば、コマンド０５ｈ、アドレスＡＤＤ、コマンドＥ０ｈ）をＮＡＮＤ型フラッシュメモリ１０に発行し、キャッシュ１４（ＸＤＬ）から１ページ分のデータを読み出す。このデータは、例えば、１８Ｋバイトのデータ長を有する（１８Ｋバイトのユーザデータ、および２ＫバイトのＥＣＣ）。このため、キャッシュ１４（ＸＤＬ）からメモリコントローラ２００へのデータの読み出しには多くの時間、例えば約２０マイクロ秒、が要される。この長い期間中、メモリバス（Ｉ／Ｏバス）１１はこのデータ読み出しに専有されてしまい、メモリコントローラ２００は、他のＮＡＮＤ型フラッシュメモリ１０をアクセスすることができない。
【０１７４】
最近では、パッケージ内の積層されたＮＡＮＤ型フラッシュメモリチップの内部を垂直に貫通する電極を使用するＴＳＶ（スルー・シリコン・ビア）技術によって、データ入出力の高速化と消費電力の低減を可能にしたメモリパッケージが開発されている。このメモリパッケージはインタフェースチップを含んでおり、外部とのデータ入出力はインタフェースチップを介して実行される。また、インタフェースチップと各ＮＡＮＤ型フラッシュメモリチップとの間の通信は多数の垂直ビア（多数の貫通電極）を介して実行される。このため、個々のＮＡＮＤ型フラッシュメモリチップから高速の外部Ｉ／Ｏインタフェースを排除することが可能となる。しかし、このＮＡＮＤ型フラッシュメモリチップをチップ単体でテストするケースにおいては、このＮＡＮＤ型フラッシュメモリチップは１ビット幅の外部Ｉ／Ｏフェースしか有していない場合があるので、キャッシュ１４（ＸＤＬ）からメモリコントローラ２００へのデータの読み出しにはさらに多くの時間が必要とされる。
【０１７５】
オン・チップ・ＦＢＣ機能は、フェイルビットの数（Fail Bit Count）をＮＡＮＤ型フラッシュメモリ１０内のカウンタ２３Ａによってチップ内で計数し、そしてフェイルビットの数を示すデジタル値のみをメモリコントローラ２００に出力する機能である。ここで、フェイルビットの数とは、オンしたメモリセルトランジスタＭＴの数、つまりオン・セルの数を示す。選択ワード線ＷＬｎに接続されたメモリセルトランジスタＭＴ群の内、ビット線ＢＬ０に対応するメモリセルトランジスタＭＴがオンした場合、このメモリセルトランジスタＭＴからビット線ＢＬ０に“０”データが読み出される。一方、ビット線ＢＬ１に対応するメモリセルトランジスタＭＴがオフした場合、このメモリセルトランジスタＭＴからビット線ＢＬ１に“１”データが読み出される。したがって、あるページ（選択ワード線ＷＬｎに接続されたメモリセルトランジスタＭＴ群）においては、オン・セルの数は、メモリセルトランジスタＭＴ群からの読み出しデータに含まれる“０”データの数に相当する。
【０１７６】
図３で説明したように、オン・チップ・ＦＢＣ機能は、制御回路２３内に設けられたカウンタ２３Ａとレジスタ２３Ｂとを使用して実行することができる。
【０１７７】
メモリコントローラ２００は、図２１の下部に示すように、オン・セルの数の計数を要求するコマンド（例えばＭＭｈ）と、計数されたオン・セルの数の出力を要求するコマンド（例えばＸＸｈ）とをＮＡＮＤ型フラッシュメモリ１０に送信することができる。
【０１７８】
コマンド（例えばＭＭｈ）の受信に応答して、ＮＡＮＤ型フラッシュメモリ１０は、ビジー状態となり、キャッシュ１４（ＸＤＬ）内に保持されている読み出しデータに基づいて、オン・セルの数を計数するフェイルビットカウント動作を実行する。計数されたオン・セルの数を示すデジタル値は、レジスタ２３Ｂに格納される。オン・セルの数の計数が完了すると、ＮＡＮＤ型フラッシュメモリ１０は、レディー状態にもどる。そして、コマンド（例えばＸＸｈ）の受信に応答して、ＮＡＮＤ型フラッシュメモリ１０は、フェイルビットカウント出力動作を実行して、レジスタ２３Ｂに格納されているデータをメモリコントローラ２００に送信する。レジスタ２３Ｂに格納されているデータは、読み出しデータそのものではなく、オン・セルの数を示すデジタル値である。したがって、このレジスタ２３Ｂに格納されているデータの長さは、たかだか数バイトである。レジスタ２３Ｂからメモリコントローラ２００へのこのデジタル値の読み出しは即座に完了する。よって、メモリバス（Ｉ／Ｏバス）１１がある特定のＮＡＮＤ型フラッシュメモリからのオン・セルの数の取得のために長い間専有されてしまうことを防止することができる。例えば、図１のように、メモリコントローラ２００に複数のＮＡＮＤ型フラッシュメモリ１０が接続される構成においては、特定のＮＡＮＤ型フラッシュメモリによるバス専有によって他のＮＡＮＤ型フラッシュメモリへのアクセスが長い間実行できなくなるという事態が起こることを防止することができる。
【０１７９】
図２２は、フェイルビットカウント動作とフェイルビットカウント出力動作とを示す。
【０１８０】
コマンド（例えばＭＭｈ）が受信された時、図２２の左部に示すように、制御回路２３内のカウンタ２３Ａは、キャッシュ１４（ＸＤＬ）内の読み出しデータ内の“０”データの数を計数し、これによってオン・セルの数を求める。そして、制御回路２３は、求められたオン・セルの数を示すデジタル値をフェイルビット数としてレジスタ２３Ｂに格納する。
【０１８１】
コマンド（例えばＸＸｈ）が受信された時、図２２の右部に示すように、制御回路２３は、レジスタ２３Ｂからメモリコントローラ２００にフェイルビット数（オン・セルの数）を出力する。
【０１８２】
図２３は、リードコマンドに応じて実行されるデータ読み出し／フェイルビットカウント動作を示す。
【０１８３】
このデータ読み出し／フェイルビットカウント動作は、リードコマンドによって指定されたデータを読み出す読み出し動作のバックグラウンドで、この読み出されたデータ内に含まれる“０”データの数（オン・セルの数）を計数する。
【０１８４】
メモリコントローラ２００は、セットフィーチャコマンドシーケンスを使用することによって、フェイルビットカウント動作に関する様々なモードを指定することができる。これらモードには、ステート（閾値電圧レベル）毎にオン・セルの数を計数するモードが含まれている。このモードにおいては、一つのリードコマンドの受信に応答して、幾つかのステート（複数の閾値レベル）に対応する複数のフェイルビットカウント動作が実行される。例えば、ＴＬＣ−フラッシュメモリにおいて、リードコマンドによって指定されるページがロアーページである場合には、“Ａ”ステートに対応する読み出し電圧ＶＡを使用した読み出し動作ＡＲと“Ｅ”ステートに対応する読み出し電圧ＶＥを使用した読み出し動作ＥＲとが実行されると共に、“Ａ”ステートに対応するオン・セルの数と“Ｅ”ステートに対応するオン・セルの数とが計数される。また、ＴＬＣ−フラッシュメモリにおいて、リードコマンドによって指定されるページがアッパーページである場合には、“Ｃ”ステートに対応する読み出し電圧ＶＣを使用した読み出し動作ＣＲと“Ｇ”ステートに対応する読み出し電圧ＶＧを使用した読み出し動作ＧＲとが実行されると共に、“Ｃ”ステートに対応するオン・セルの数と“Ｇ”ステートに対応するオン・セルの数とが計数される。
【０１８５】
メモリコントローラ２００は、リードコマンドシーケンス（００ｈ、アドレスＡＤＤ、３０ｈ）を発行する前に、プリフィックスコマンド（例えばＹＹｈ）を発行する。プリフィックスコマンド（例えばＹＹｈ）とこれに後続するリードコマンドシーケンス（００ｈ、アドレスＡＤＤ、３０ｈ）は、アドレスＡＤＤによって指定されたページ（メモリセル群）からデータを読み出すことのみならず、このページに対応するオン・セルの数を計数すべきことをＮＡＮＤ型フラッシュメモリ１０に要求する。
【０１８６】
以下では、アドレスＡＤＤによって指定されたページがＴＬＣのロアーページである場合を例示して、データ読み出し／フェイルビットカウント動作を説明する。
【０１８７】
ロアーページデータを読み出す読み出し動作においては、ＮＡＮＤ型フラッシュメモリ１０内の制御回路２３は、“Ａ”ステートに対応する読み出し電圧ＶＡを使用した読み出し動作ＡＲと、“Ｅ”ステートに対応する読み出し電圧ＶＥを使用した読み出し動作ＡＥとを実行する。
【０１８８】
読み出し動作ＡＲ（Ａ  Ｒｅａｄ）では、読み出し電圧ＶＡが選択ワード線ＷＬｎに印加され、アドレスＡＤＤによって指定されたページ（選択ワード線ＷＬｎに接続されたメモリセル群）からデータ（Ａ  Ｄａｔａ）が読み出される。読み出し動作ＥＲ（Ｅ  Ｒｅａｄ）では、読み出し電圧ＶＥが選択ワード線ＷＬｎに印加され、選択ワード線ＷＬｎに接続されたメモリセル群からデータ（Ｅ  Ｄａｔａ）が読み出される。
【０１８９】
読み出し動作ＥＲ（Ｅ  Ｒｅａｄ）の期間中においては、データ（Ａ  Ｄａｔａ）がＸＤＬに転送され、そして制御回路２３が、このデータ（Ａ  Ｄａｔａ）内の“０”データの数（ＦＢＣ（Ａ））を計数する。ＦＢＣ（Ａ）は、レジスタ２３Ｂに格納される。
【０１９０】
リードリカバリ動作の期間中においては、データ（Ｅ  Ｄａｔａ）がＸＤＬに転送され、そして制御回路２３が、このデータ（Ｅ  Ｄａｔａ）内の“０”データの数（ＦＢＣ（Ｅ））を計数する。ＦＢＣ（Ｅ）も、レジスタ２３Ｂの残りの空き領域に格納される。データ（Ａ  Ｄａｔａ）とデータ（Ｅ  Ｄａｔａ）とから求められるロアーページデータはＸＤＬに格納される。
【０１９１】
リードリカバリ動作が完了すると、ＮＡＮＤ型フラッシュメモリ１０はビジー状態からレディー状態に戻る。メモリコントローラ２００からコマンド（例えばＸＸｈ）が受信されたならば、制御回路２３は、レジスタ２３Ｂ内のＦＢＣ（Ａ）およびＦＢＣ（Ｅ）をメモリコントローラ２００に出力する。なお、メモリコントローラ２００は、信号ＲＥｎをアサートすることによって、ＸＤＬからロアーページデータを読み出すこともできる。
【０１９２】
次に、図２４、図２５を参照して、リード動作ＡＲおよびフェイルビットカウント動作の例を説明する。
【０１９３】
図２４に示すように、ＮＡＮＤ型フラッシュメモリ１０においては、各ステートの閾値分布は、時間の経過またはメモリセルトランジスタＭＴに加わるストレスによって、拡張又はシフトする場合がある。
【０１９４】
これにより、“Ａ”ステート（“Ａ”レベル）にプログラムされた幾つかのメモリセルトランジスタＭＴの閾値電圧は、読み出し電圧ＶＡよりも低下する場合がある。“Ａ”ステートに対応する正規分布曲線の下と電圧ＶＡとによって囲まれる領域（ハッチング領域）は、その閾値電圧が読み出し電圧ＶＡ未満の閾値電圧に低下されたメモリセルトランジスタＭＴの数を表している（これらメモリセルトランジスタＭＴのステートは“Ａ’”ステートとして参照される）。読み出し動作ＡＲの期間において、“Ａ’”ステートのメモリセルトランジスタＭＴがターンオンしてしまい、これによって読み出しデータが誤りを含むことになる。
【０１９５】
同様に、“Ｅ”ステートにプログラムされた幾つかのメモリセルトランジスタＭＴの閾値電圧が読み出し電圧ＶＥよりも低下してしまう場合もある。“Ｅ”ステートに対応する正規分布曲線の下と電圧ＶＥとによって囲まれる領域（ハッチング領域）は、その閾値電圧が読み出し電圧ＶＥ未満の閾値電圧に低下されたメモリセルトランジスタＭＴの数を表している（これらメモリセルトランジスタＭＴのステートは“Ｅ’”ステートとして参照される）。
【０１９６】
図２５は、リード動作ＡＲおよびフェイルビットカウント動作を示す。
【０１９７】
図２５では、図示の簡単化のために、選択ワード線ＷＬｎに８つのメモリセルトランジスタＭＴが接続されている場合が想定されている。ビット線ＢＬ０に対応するメモリセルトランジスタＭＴは“Ａ’”ステートであり、ビット線ＢＬ１に対応するメモリセルトランジスタＭＴは“Ｅｒ”ステートであり、ビット線ＢＬ２に対応するメモリセルトランジスタＭＴは“Ａ”ステートであり、ビット線ＢＬ３に対応するメモリセルトランジスタＭＴは“Ｅｒ”ステートであり、ビット線ＢＬ４に対応するメモリセルトランジスタＭＴは“Ａ’”ステートであり、ビット線ＢＬ５に対応するメモリセルトランジスタＭＴは“Ｂ”ステートであり、ビット線ＢＬ６に対応するメモリセルトランジスタＭＴは“Ｃ”ステートであり、ビット線ＢＬ７に対応するメモリセルトランジスタＭＴは“Ｄ”ステートである。
【０１９８】
リード動作ＡＲの間、電圧ＶＡが読み出し電圧（ＶＣＧＲＶ）として選択ワード線ＷＬｎに印加される。ビット線ＢＬ０に対応するメモリセルトランジスタＭＴはオンする。ビット線ＢＬ１に対応するメモリセルトランジスタＭＴはオンする。ビット線ＢＬ２に対応するメモリセルトランジスタＭＴはオフする。ビット線ＢＬ３に対応するメモリセルトランジスタＭＴはオンする。ビット線ＢＬ４に対応するメモリセルトランジスタＭＴはオンする。ビット線ＢＬ５〜ＢＬ７に対応するメモリセルトランジスタＭＴはそれぞれオフする。結果、選択ワード線ＷＬｎに接続されたメモリセルトランジスタＭＴからビット線ＢＬ０〜ＢＬ７に読み出されるデータ（Ａ  Ｄａｔａ）は、“０，０，１，０，０，１，１，１”である。このデータ（Ａ  Ｄａｔａ）内の“０”データの数（ＦＢＣ（Ａ））が計数される。ＦＢＣ（Ａ）は、オン・セルの数を示す。ここでは、ＦＢＣ（Ａ）は４である。ＦＢＣ（Ａ）の値は、レジスタ２３Ｂに格納される。
【０１９９】
図２６は、セットフィーチャコマンドによって設定可能なモード（機能）の例を示す。
【０２００】
制御回路２３は、「ＸＮＯＲ」機能、「Ｓｔａｔｅ毎」機能、「Ｓｔａｒｔ  ａｎｄ  Ｅｎｄ  Ｃｏｌ」機能、「Ｒｅａｄ回数」機能、「ＶＣＧ  Ｓｔｅｐ」機能、「ＴＥＭＰＣＯＤＥ  Ｕｐｄａｔｅ  Ｏｐｔｉｏｎ」機能を有している。
【０２０１】
ステート毎にデータを複数回リードする動作において、「ＸＮＯＲ」機能が有効である場合には、あるステートに対応する最初の読み出し動作で得られるオン・セルの数と、このステートに対応する次の読み出し動作で得られるオン・セルの数との差分が求められる。
【０２０２】
「Ｓｔａｔｅ毎」機能が有効である場合には、ステート毎にオン・セルの数が計数される。
【０２０３】
「Ｓｔａｒｔ  ａｎｄ  Ｅｎｄ  Ｃｏｌ」機能が有効である場合には、ＸＤＬ内のデータ全体ではなく、指定されたデータ範囲内にのみ含まれるオン・セルの数が計数される。
【０２０４】
「Ｒｅａｄ回数」機能は、例えば、１〜１５の内の任意の数値をリード回数として指定することを可能にする。２以上のリード回数が指定された場合には、データを複数回リードする動作が実行される。
【０２０５】
「ＶＣＧ  Ｓｔｅｐ」機能は、読み出し電圧（ＶＣＧＲＶ）を上昇するためのステップ幅を選択する。スモールステップ幅が選択された場合、読み出し電圧（ＶＣＧＲＶ）は、このスモールステップ幅の単位で段階的に上昇される。ラージステップ幅が選択された場合、読み出し電圧（ＶＣＧＲＶ）は、このラージステップ幅の単位で段階的に上昇される。なお、ステップ幅の候補は３以上であってもよい。
【０２０６】
「ＴＥＭＰＣＯＤＥ  Ｕｐｄａｔｅ  Ｏｐｔｉｏｎ」機能は、データを複数回リードする動作中において実行すべき温度計測回数を指定する。
【０２０７】
図２７は、テストモードにおいてＮＡＮＤ型フラッシュメモリ１０によって実行されるデータ読み出し／フェイルビットカウント動作を示す。
【０２０８】
テストモードにおいては、ＮＡＮＤ型フラッシュメモリ１０は、期待値データによって指定されるオン・セルの数と実際のオン・セルの数との差分をフェイルビット数として計数することができる。
【０２０９】
図２７に示すように、まず、メモリコントローラ２００は、メモリコア（メモリセルアレイ）１２から読み出されるべきデータ（以下、データＸと称す。）に対応する期待値データ（Ｄａｔａ  Ｉｎ）をＮＡＮＤ型フラッシュメモリ１０に送信する。例えば、あるロアーページに対する読み出し動作ＡＲ（Ａ  Ｒｅａｄ）が実行された時にオンするメモリセルトランジスタＭＴの数をチェックするテストにおいては、メモリコントローラ２００は、読み出し動作ＡＲ（Ａ  Ｒｅａｄ）によって読み出されるべきデータパターンを期待値データとしてＮＡＮＤ型フラッシュメモリ１０に送信すればよい。
【０２１０】
ＮＡＮＤ型フラッシュメモリ１０においては、メモリコントローラ２００から受信された期待値データ（Ｄａｔａ  Ｉｎ）は、ＸＤＬを介してＩ／Ｏ制御回路１６からデータラッチＤＬ３に転送される。以下では、この期待値データ（Ｄａｔａ  Ｉｎ）は、期待値データＥｘｐｅｃｔ（Ａ）として参照される。Ｅｘｐｅｃｔ（Ａ）は、読み出し動作ＡＲ（Ａ  Ｒｅａｄ）によって読み出されることが期待されるデータパターンである。
【０２１１】
次に、メモリコントローラ２００は、データリードとフェイルビットカウント動作とを指定するリードコマンドシーケンス（コマンドＹＹｈ、コマンド００ｈ、アドレスＡＤＤ、コマンド３０ｈ）をＮＡＮＤ型フラッシュメモリ１０に送信する。
【０２１２】
ＮＡＮＤ型フラッシュメモリ１０においては、読み出し動作ＡＲ（Ａ  Ｒｅａｄ）が実行される。読み出し動作ＡＲ（Ａ  Ｒｅａｄ）では、電圧ＶＡが読み出し電圧（ＶＣＧＲＶ）として選択ワード線ＷＬｎに印加される。選択ワード線ＷＬｎに接続されたメモリセルトランジスタＭＴ群から読み出されたデータ（Ａ  ＤＡＴＡ）は、ＤＬ０に保持される。
【０２１３】
続いて、読み出し動作ＥＲ（Ｅ  Ｒｅａｄ）が実行される。読み出し動作ＥＲ（Ｅ  Ｒｅａｄ）では、電圧ＶＥが読み出し電圧（ＶＣＧＲＶ）として選択ワード線ＷＬｎに印加される。選択ワード線ＷＬｎに接続されたメモリセルトランジスタＭＴ群から読み出されたデータ（Ｅ  ＤＡＴＡ）は、ＤＬ１に保持される。
【０２１４】
この読み出し動作ＥＲ（Ｅ  Ｒｅａｄ）の期間中において、期待値データＥｘｐｅｃｔ（Ａ）とデータ（Ａ  ＤＡＴＡ）との差分データ（ｄｅｌｔａ（Ａ））がＯＰによって求められ、差分データ（ｄｅｌｔａ（Ａ））がＸＤＬに保持される。差分データ（ｄｅｌｔａ（Ａ））は、Ｅｘｐｅｃｔ（Ａ）とＡ  ＤＡＴＡとのＸＮＯＲ演算によって求めてもよい。制御回路２３は、ＸＤＬ内の差分データ（ｄｅｌｔａ（Ａ））に基づいてフェイルビット数（ＦＢＣ  ｄｅｌｔａ（Ａ））を計数する。フェイルビット数（ＦＢＣ  ｄｅｌｔａ（Ａ））は、期待値データによって示されるオン・セルの数と実際のオン・セルの数との差分を示す。フェイルビット数（ＦＢＣ  ｄｅｌｔａ（Ａ））は、レジスタ２３Ｂに格納される。
【０２１５】
読み出し動作ＥＲ（Ｅ  Ｒｅａｄ）が完了すると、ワード線ＷＬ０〜ＷＬ７およびビット線ＢＬ０〜ＢＬ（Ｌ−１）をリセットするリードリカバリ動作が実行される。このリードリカバリ動作の期間中、データ（Ａ  ＤＡＴＡ）とデータ（Ｅ  ＤＡＴＡ）とからロアーページデータが生成され、このロアーページデータが差分データ（ｄｅｌｔａ（Ａ））の代わりにＸＤＬに格納される。
【０２１６】
そして、ＮＡＮＤ型フラッシュメモリ１０がメモリコントローラ２００からコマンドＸＸｈを受信すると、レジスタ２３Ｂに格納されているフェイルビット数（ＦＢＣ  ｄｅｌｔａ（Ａ））がメモリコントローラ２００に出力される。
【０２１７】
なお、図２７では、“Ａ”ステートに対応するオン・セルの数（ここでは、ＦＢＣ  ｄｅｌｔａ（Ａ））を計数する場合を説明したが、“Ｅ”ステートに対応するオン・セルの数（例えば、ＦＢＣ  ｄｅｌｔａ（Ｅ））を計数してもよいし、ＦＢＣ  ｄｅｌｔａ（Ａ）とＦＢＣ  ｄｅｌｔａ（Ｅ）の双方を計数してもよい。
【０２１８】
図２８は、データ読み出し／フェイルビットカウント動作の例を示す。
【０２１９】
図２８の最上段には、選択ワード線ＷＬｎに接続されたメモリセルトランジスタＭＴそれぞれに対応するステートが示されている。ビット線ＢＬ０に対応するメモリセルトランジスタＭＴは“Ａ’”ステート、ビット線ＢＬ１に対応するメモリセルトランジスタＭＴは“Ｅｒ”ステート、ビット線ＢＬ２に対応するメモリセルトランジスタＭＴは“Ａ”ステート、ビット線ＢＬ３に対応するメモリセルトランジスタＭＴは“Ｅｒ”ステート、ビット線ＢＬ４に対応するメモリセルトランジスタＭＴは“Ａ’”ステート、ビット線ＢＬ５に対応するメモリセルトランジスタＭＴは“Ｂ”ステート、ビット線ＢＬ６に対応するメモリセルトランジスタＭＴは“Ｃ”ステート、ビット線ＢＬ７に対応するメモリセルトランジスタＭＴは“Ｄ”ステートである。
【０２２０】
読み出し動作ＡＲ（Ａ  Ｒｅａｄ）が実行される。これにより、これらメモリセルトランジスタＭＴからデータ（Ａ  ＤＡＴＡ）が読み出される。オンされたメモリセルトランジスタＭＴからは“０”データが読み出され、オフ状態に維持されているメモリセルトランジスタＭＴからは“１”データが読み出される。選択ワード線ＷＬｎに接続されたメモリセルトランジスタＭＴからビット線ＢＬ０〜ＢＬ７に読み出されるデータ（Ａ  Ｄａｔａ）は、“０，０，１，０，０，１，１，１”である。他方、期待値データＥｘｐｅｃｔ（Ａ）のデータパターンは、“１，０，１，０，１，１，１，１”である。なぜなら、ビット線ＢＬ０，ＢＬ４にそれぞれ対応するメモリセルトランジスタＭＴは“Ａ”ステートであることが期待されているからである。
【０２２１】
そして、期待値データＥｘｐｅｃｔ（Ａ）とデータ（Ａ  ＤＡＴＡ）との差分データ（ｄｅｌｔａ（Ａ））が求められる。差分データ（ｄｅｌｔａ（Ａ））は、Ｅｘｐｅｃｔ（Ａ）とＡ  ＤＡＴＡとのＸＮＯＲ演算によって求めてもよい。制御回路２３は、差分データ（ｄｅｌｔａ（Ａ））内の“１”の数（ここでは、２）をフェイルビット数（ＦＢＣ  ｄｅｌｔａ（Ａ））として計数する。このフェイルビット数（ＦＢＣ  ｄｅｌｔａ（Ａ））は、期待値データによって示されるオン・セルの数と実際のオン・セルの数との差分を示す。
【０２２２】
あるいは、データ（Ａ  Ｄａｔａ）に含まれる“０”データの数から期待値データＥｘｐｅｃｔ（Ａ）に含まれる“０”データの数を減算することによって得られる値をフェイルビット数として算出してもよい。
【０２２３】
図２９は、ステート分離しない場合の閾値電圧分布イメージとステート分離した場合の閾値電圧分布イメージとを示す。
【０２２４】
ここで、ステート分離とは、複数ステートの読み出しデータから生成されるページデータに基づいてオン・セルの数を計数するのでは無く、個々のステートに対応する読み出しデータに基づいてオン・セルの数を計数することを意味する。例えば、ＴＬＣのロアーページデータを読み出す場合には、読み出し動作ＡＲ（Ａ  Ｒｅａｄ）によって読み出されたデータ（Ａ  Ｄａｔａ）のみに基づいてオン・セルの数が計数されてもよいし、読み出し動作ＥＲ（Ｅ  Ｒｅａｄ）によって読み出されたデータ（Ｅ  Ｄａｔａ）のみに基づいてオン・セルの数が計数されてもよい。
【０２２５】
ステート分離しない場合の閾値電圧Ｖｔｈの分布は、図２９の左側に示すようになる。この場合、“Ａ”レベルの分布が“Ｅｒ”レベルの分布に侵食しているのか、あるいは“Ｅｒ”レベルの分布が“Ａ”レベルの分布に侵食しているのかが判別できない。
【０２２６】
ステート分離した場合、図２９の右側に示すようになる。この場合、“Ａ”レベルの分布が“Ｅｒ”レベルの分布に侵食しているのか、“Ｅｒ”レベルの分布が“Ａ”レベルの分布に侵食しているかが判別できる。図２９の右側の例は、“Ｅｒ”レベルの分布が“Ａ”レベルの分布に侵食しているものである。
【０２２７】
図３０は、メモリコントローラ２００によってスタートカラムおよびエンドカラムを指定することが可能なフェイルビットカウント機能を示す。
【０２２８】
メモリコントローラ２００は、セットフィーチャコマンドシーケンスをＮＡＮＤ型フラッシュメモリ１０に送信することによって、「Ｓｔａｒｔ  ａｎｄ  Ｅｎｄ  Ｃｏｌ」機能を有効にすることができる。「Ｓｔａｒｔ  ａｎｄ  Ｅｎｄ  Ｃｏｌ」機能は、フェイルビットカウント動作の際に、１ページ分のデータ全体に基づいてオン・セルの数を計数するのではなく、指定された範囲のデータのみに基づいてオン・セルの数を計数する機能である。
【０２２９】
メモリコントローラ２００は、データ範囲を指定したフェイルビットカウント動作を実行するためのリードコマンドシーケンス（コマンドＹＹｈ、コマンド００ｈ、スタートカラムアドレスＡ（Ｓ）、コマンド００ｈ、エンドカラムアドレスＡ（Ｅ）、コマンド３０ｈ）をＮＡＮＤ型フラッシュメモリ１０に送信する。ここで、スタートカラムアドレスＡ（Ｓ）は、フェイルビットカウント動作が実行されるべきカウント範囲の開始位置を指定するために用いられる。エンドカラムアドレスＡ（Ｅ）は、カウント範囲の終了位置を指定するために用いられる。
【０２３０】
以下では、ロアーページデータを読み出す場合を例示してフェイルビットカウント動作を説明する。
【０２３１】
ＮＡＮＤ型フラッシュメモリ１０内の制御回路２３は、電圧ＶＡを選択ワード線ＷＬｎに印加する読み出し動作ＡＲ（Ａ  Ｒｅａｄ）と、電圧ＶＥを選択ワード線ＷＬｎに印加する読み出し動作ＥＲ（Ｅ  Ｒｅａｄ）と、ワード線ＷＬ０〜ＷＬ７およびビット線ＢＬ０〜ＢＬ（Ｌ−１）をリセットするリードリカバリ動作とを実行する。読み出し動作ＡＲ（Ａ  Ｒｅａｄ）では、選択ワード線ＷＬｎに接続されたメモリセルトランジスタＭＴ群からデータ（Ａ  Ｄａｔａ）が読み出される。読み出し動作ＥＲ（Ｅ  Ｒｅａｄ）では、これらメモリセルトランジスタＭＴ群からデータ（Ｅ  Ｄａｔａ）が読み出される。
【０２３２】
読み出し動作ＥＲ（Ｅ  Ｒｅａｄ）の期間中においては、データ（Ａ  Ｄａｔａ）がＸＤＬに転送され、そして制御回路２３が、このデータ（Ａ  Ｄａｔａ）内のカウント範囲に含まれる“０”データの数（ＦＢＣ（Ａ））を計数するためのフェイルビットカウント動作を実行する。ＦＢＣ（Ａ）は、レジスタ２３Ｂに格納される。
【０２３３】
リードリカバリ動作の期間中においては、データ（Ｅ  Ｄａｔａ）がＸＤＬに転送され、そして制御回路２３が、このデータ（Ｅ  Ｄａｔａ）内のカウント範囲に含まれる“０”データの数（ＦＢＣ（Ｅ））を計数するためのフェイルビットカウント動作を実行する。ＦＢＣ（Ｅ）も、レジスタ２３Ｂの残りの空き領域に格納される。データ（Ａ  Ｄａｔａ）とデータ（Ｅ  Ｄａｔａ）とから求められるロアーページデータはＸＤＬに格納される。
【０２３４】
リードリカバリ動作が完了すると、ＮＡＮＤ型フラッシュメモリ１０はビジー状態からレディー状態に戻る。メモリコントローラ２００からコマンド（例えばＸＸｈ）が受信されたならば、制御回路２３は、レジスタ２３Ｂ内のＦＢＣ（Ａ）およびＦＢＣ（Ｅ）をメモリコントローラ２００に出力する。なお、メモリコントローラ２００は、信号ＲＥｎをアサートすることによって、ＸＤＬからロアーページデータを読み出すこともできる。
【０２３５】
図３１は、指定されたスタートカラムおよびエンドカラムによって規定されるカウント範囲内のデータに基づいて実行されるフェイルビットカウント動作を示す。
【０２３６】
キャッシュ１４（ＸＤＬ）に格納されているデータの中からスタートカラムアドレスＡ（Ｓ）とエンドカラムアドレスＡ（Ｅ）で指定された範囲のデータ部が特定される。そして、その特定されたデータ部に含まれる“０”データの数がフェイルビット数としてカウントされ、その結果がレジスタ２３Ｂに格納される。
【０２３７】
図３２は、ユーザデータとＥＣＣとの関係の例を示す。
【０２３８】
通常、ＥＣＣは、ある設定されたデータサイズ毎に生成される。例えば、ＥＣＣが１Ｋバイトのデータ毎に生成される場合には、ユーザデータｄ１、ユーザデータｄ２、ユーザデータｄ３、…ユーザデータｄ１６にそれぞれ対応するＥＣＣ１、ＥＣＣ２、ＥＣＣ３、…ＥＣＣ１６が生成される。例えば、ユーザデータｄ２とユーザデータｄ３とを含むデータ範囲のみにおいて発生するエラー数が訂正可能なエラー数を超過していることがあらかじめ分かっている場合には、ユーザデータｄ２とユーザデータｄ３を含むデータ範囲をスタートカラムアドレスＡ（Ｓ）とエンドカラムアドレスＡ（Ｅ）によってカウント範囲として指定し、その指定したカウント範囲に対するフェイルビットカウント動作を実行することができる。この場合、制御回路２３のカウンタ２３Ａは、カウント範囲に属するデータに含まれる“０”データの数をオン・セルの数として計数するフェイルビットカウント動作を実行する。このようにカウント範囲を指定することで、効率的にフェイルビットカウント動作を実行することができる。
【０２３９】
図３３は、ＮＡＮＤ型フラッシュメモリ１０によって実行される、ステート毎にデータを複数回リードする動作を示す。
【０２４０】
例えば、３回のリード回数が指定されて、ロアーページのリード動作が実行される場合、読み出し動作ＡＲ（Ａ  Ｒｅａｄ）、読み出し動作ＥＲ（Ｅ  Ｒｅａｄ）、読み出し動作ＡＲ（Ａ＋  Ｒｅａｄ）、読み出し動作ＥＲ（Ｅ＋  Ｒｅａｄ）、読み出し動作ＡＲ（Ａ＋＋  Ｒｅａｄ）、読み出し動作ＥＲ（Ｅ＋＋  Ｒｅａｄ）が、この順に実行される。
【０２４１】
読み出し動作ＡＲ（Ａ  Ｒｅａｄ）、読み出し動作ＡＲ（Ａ＋  Ｒｅａｄ）、読み出し動作ＡＲ（Ａ＋＋  Ｒｅａｄ）では、図３３の左下に示すように、電圧ＶＡの近傍の３つの電圧値ＶＡ１、ＶＡ２、ＶＡ３がそれぞれ用いられる（ＶＡ１＜ＶＡ２＜ＶＡ３，ＶＡ３＜ＶＢ）。
【０２４２】
同様に、読み出し動作ＥＲ（Ｅ  Ｒｅａｄ）、読み出し動作ＥＲ（Ｅ＋  Ｒｅａｄ）、読み出し動作ＥＲ（Ｅ＋＋  Ｒｅａｄ）では、電圧ＶＥの近傍の３つの電圧値ＶＥ１、ＶＥ２、ＶＥ３がそれぞれ用いられる（ＶＥ１＜ＶＥ２＜ＶＥ３，ＶＤ＜ＶＥ１，ＶＥ３＜ＶＦ）。
【０２４３】
メモリコントローラ２００は、選択ワード線に印加される読み出し電圧の値に応じて変化するオン・セル数を計数するためのリードコマンドシーケンス（コマンドＹＹｈ、コマンド００ｈ、アドレスＡＤＤ、コマンド３０ｈ）をＮＡＮＤ型フラッシュメモリ１０に送信する。
【０２４４】
制御回路２３は、読み出し動作ＡＲ（Ａ  Ｒｅａｄ）を実行する。読み出し動作ＡＲ（Ａ  Ｒｅａｄ）では、電圧ＶＡ１がアドレスＡＤＤによって指定された選択ワード線ＷＬｎに印加される。そして、選択ワード線ＷＬｎに接続されたメモリセルトランジスタＭＴ群からビット線ＢＬ０〜ＢＬ（Ｌ−１）にデータ（Ａ  Ｄａｔａ）が読み出される。データ（Ａ  Ｄａｔａ）はデータラッチＤＬ０に保持される。
【０２４５】
制御回路２３は、読み出し動作ＥＲ（Ｅ  Ｒｅａｄ）を実行する。読み出し動作ＥＲ（Ｅ  Ｒｅａｄ）では、電圧ＶＥ１が選択ワード線ＷＬｎに印加される。選択ワード線ＷＬｎに接続されたメモリセルトランジスタＭＴ群からビット線ＢＬ０〜ＢＬ（Ｌ−１）にデータ（Ｅ  Ｄａｔａ）が読み出される。ＤＬ０はデータ（Ａ  Ｄａｔａ）を保持し、ＤＬ１はデータ（Ｅ  Ｄａｔａ）を保持し、ＸＤＬはデータ（Ａ  Ｄａｔａ）を保持する。制御回路２３はＸＤＬのデータ（Ａ  Ｄａｔａ）内の“０”データの数（ＦＢＣ（Ａ））を計数する。このＦＢＣ（Ａ）は、レジスタ２３Ｂに格納される。
【０２４６】
制御回路２３は、読み出し動作ＡＲ（Ａ＋  Ｒｅａｄ）を実行する。読み出し動作ＡＲ（Ａ＋  Ｒｅａｄ）では、電圧ＶＡ２が選択ワード線ＷＬｎに印加される。選択ワード線ＷＬｎに接続されたメモリセルトランジスタＭＴ群からビット線ＢＬ０〜ＢＬ（Ｌ−１）にデータ（Ａ＋  Ｄａｔａ）が読み出される。ＤＬ０はデータ（Ａ＋  Ｄａｔａ）を保持し、ＤＬ１はデータ（Ｅ  Ｄａｔａ）を保持し、ＤＬ２はデータ（Ａ  Ｄａｔａ）を保持し、ＸＤＬはデータ（Ｅ  Ｄａｔａ）を保持する、制御回路２３はＸＤＬのデータ（Ｅ  Ｄａｔａ）内の“０”データの数（ＦＢＣ（Ｅ））を計数する。このＦＢＣ（Ｅ）は、レジスタ２３Ｂの残り空き領域に格納される。
【０２４７】
制御回路２３は、読み出し動作ＥＲ（Ｅ＋  Ｒｅａｄ）を実行する。読み出し動作ＥＲ（Ｅ＋  Ｒｅａｄ）では、電圧ＶＥ２が選択ワード線ＷＬｎに印加される。選択ワード線ＷＬｎに接続されたメモリセルトランジスタＭＴ群からビット線ＢＬ０〜ＢＬ（Ｌ−１）にデータ（Ｅ＋  Ｄａｔａ）が読み出される。ＤＬ０はデータ（Ｅ＋  Ｄａｔａ）を保持し、ＤＬ１はデータ（Ｅ  Ｄａｔａ）を保持し、ＤＬ２はデータ（Ｂｅｓｔ  Ｄａｔａ（Ａ））を保持し、ＸＤＬはデータ（Ａ＋  Ｄａｔａ）を保持する。制御回路２３はＸＤＬのデータ（Ａ＋  Ｄａｔａ）内の“０”データの数（ＦＢＣ（Ａ＋））を計数する。このＦＢＣ（Ａ＋）は、レジスタ２３Ｂの残り空き領域に格納される。Ｂｅｓｔ  Ｄａｔａ（Ａ）は、データ（Ａ＋  Ｄａｔａ）またはデータ（Ａ  Ｄａｔａ）から選択される。例えば、
FBC(A+) − FBC(A) < X
が成立するならば、データ（Ａ＋  Ｄａｔａ）がＢｅｓｔ  Ｄａｔａ（Ａ）として選択されてもよい。成立しないならば、データ（Ａ  Ｄａｔａ）がＢｅｓｔ  Ｄａｔａ（Ａ）として選択されてもよい。Xは定数である。
【０２４８】
制御回路２３は、読み出し動作ＡＲ（Ａ＋＋  Ｒｅａｄ）を実行する。読み出し動作ＡＲ（Ａ＋＋  Ｒｅａｄ）では、電圧ＶＡ３が選択ワード線ＷＬｎに印加される。選択ワード線ＷＬｎに接続されたメモリセルトランジスタＭＴ群からビット線ＢＬ０〜ＢＬ（Ｌ−１）にデータ（Ａ＋＋  Ｄａｔａ）が読み出される。ＤＬ０はデータ（Ａ＋＋  Ｄａｔａ）を保持し、ＤＬ２はデータ（Ｂｅｓｔ  Ｄａｔａ（Ａ））を保持し、ＤＬ３はデータ（Ｂｅｓｔ  Ｄａｔａ（Ｅ））を保持し、ＸＤＬはデータ（Ｅ＋  Ｄａｔａ）を保持する。制御回路２３はＸＤＬのデータ（Ｅ＋  Ｄａｔａ）内の“０”データの数（ＦＢＣ（Ｅ＋））を計数する。このＦＢＣ（Ｅ＋）は、レジスタ２３Ｂの残り空き領域に格納される。Ｂｅｓｔ  Ｄａｔａ（Ｅ）は、データ（Ｅ＋  Ｄａｔａ）またはデータ（Ｅ  Ｄａｔａ）から選択される。例えば、
FBC(E+) − FBC(E) < X
が成立するならば、データ（Ｅ＋  Ｄａｔａ）がＢｅｓｔ  Ｄａｔａ（Ｅ）として選択されてもよい。成立しないならば、データ（Ｅ  Ｄａｔａ）がＢｅｓｔ  Ｄａｔａ（Ｅ）として選択されてもよい。
【０２４９】
制御回路２３は、読み出し動作ＥＲ（Ｅ＋＋  Ｒｅａｄ）を実行する。読み出し動作ＥＲ（Ｅ＋＋  Ｒｅａｄ）では、電圧ＶＥ３が選択ワード線ＷＬｎに印加される。選択ワード線ＷＬｎに接続されたメモリセルトランジスタＭＴ群からビット線ＢＬ０〜ＢＬ（Ｌ−１）にデータ（Ｅ＋＋  Ｄａｔａ）が読み出される。ＤＬ０はデータ（Ｅ＋＋  Ｄａｔａ）を保持し、ＤＬ２はデータ（Ｂｅｓｔ  Ｄａｔａ（Ａ））を保持し、ＤＬ３はデータ（Ｂｅｓｔ  Ｄａｔａ（Ｅ））を保持し、ＸＤＬはデータ（Ａ＋＋  Ｄａｔａ）を保持する。制御回路２３はＸＤＬのデータ（Ａ＋＋  Ｄａｔａ）内の“０”データの数（ＦＢＣ（Ａ＋＋））を計数する。このＦＢＣ（Ａ＋＋）は、レジスタ２３Ｂの残り空き領域に格納される。Ｂｅｓｔ  Ｄａｔａ（Ａ）は、現在のＢｅｓｔ  Ｄａｔａ（Ａ）またはデータ（Ａ＋＋  Ｄａｔａ）から選択される。例えば、
(FBC(A++) − FBC(A+)) < (FBC(A+) − FBC(A))
が成立するならば、Ｂｅｓｔ  Ｄａｔａ（Ａ）が更新されてもよく、これによってデータ（Ａ＋＋  Ｄａｔａ）が新たなＢｅｓｔ  Ｄａｔａ（Ａ）となってもよい。成立しないならば、現在のＢｅｓｔ  Ｄａｔａ（Ａ）がそのまま維持されてもよい。
【０２５０】
リードリカバリ動作の期間中においては、ＤＬ０はデータ（Ｅ＋＋  Ｄａｔａ）を保持し、ＤＬ２はデータ（Ｂｅｓｔ  Ｄａｔａ（Ａ））を保持し、ＤＬ３はデータ（Ｂｅｓｔ  Ｄａｔａ（Ｅ））を保持し、ＸＤＬはデータ（Ｅ＋＋  Ｄａｔａ）を保持する。制御回路２３はＸＤＬのデータ（Ｅ＋＋  Ｄａｔａ）内の“０”データの数（ＦＢＣ（Ｅ＋＋））を計数する。このＦＢＣ（Ｅ＋＋）は、レジスタ２３Ｂの残り空き領域に格納される。Ｂｅｓｔ  Ｄａｔａ（Ｅ）は、現在のＢｅｓｔ  Ｄａｔａ（Ｅ）またはデータ（Ｅ＋＋  Ｄａｔａ）から選択される。例えば、
(FBC(E++) − FBC(E+)) < (FBC(E+) − FBC(E))
が成立するならば、Ｂｅｓｔ  Ｄａｔａ（Ｅ）が更新されてもよく、これによってデータ（Ｅ＋＋  Ｄａｔａ）が新たなＢｅｓｔ  Ｄａｔａ（Ｅ）となってもよい。成立しないならば、現在のＢｅｓｔ  Ｄａｔａ（Ｅ）がそのまま維持されてもよい。ＸＤＬのデータは、データ（Ｅ＋＋  Ｄａｔａ）からロアーページデータに変更される。ロアーページデータは、Ｂｅｓｔ  Ｄａｔａ（Ａ）とＢｅｓｔ  Ｄａｔａ（Ｅ）から生成される。
【０２５１】
図３４は、ステート毎にデータを複数回リードする動作のために使用されるＶＣＧステップ幅を示す。
【０２５２】
メモリコントローラ２００は、ＶＣＧステップ幅＃１またはＶＣＧステップ幅＃２の任意の一方を選択することができる（ＶＣＧステップ幅＃１＜ＶＣＧステップ幅＃２）。ＶＣＧステップ幅＃１およびＶＣＧステップ幅＃２は、上述のスモールステップ幅およびラージステップ幅にそれぞれ対応する。
【０２５３】
ステート毎にデータを複数回リードする動作において、ＶＣＧステップ幅＃１が選択された時は、読み出し電圧（ＶＣＧＲＶ）は、データを読み出す度にＶＣＧステップ幅＃１に対応する電圧ΔＶ＃１だけ上昇される。一方、ＶＣＧステップ幅＃２が選択された時は、読み出し電圧（ＶＣＧＲＶ）は、データを読み出す度にＶＣＧステップ幅＃２に対応する電圧ΔＶ＃２だけ上昇される（電圧ΔＶ＃１＜電圧ΔＶ＃２）。ΔＶ＃１、ΔＶ＃２の各々は、ＶＣＧステップ幅を示すデジタル値のみから求められてもよい。あるいは、ΔＶ＃１、ΔＶ＃２の各々は、ＶＣＧステップ幅を示すデジタル値と温度との関数Ｆ（ＶＣＧステップ幅，温度）を使用して求められてもよい。
【０２５４】
図３５は、ステート毎にデータを複数回リードする時に実行されるデータ読み出し／フェイルビットカウント動作の例を示す。
【０２５５】
図３５では、図示の簡単化のために、選択ワード線ＷＬｎに８つのメモリセルトランジスタＭＴが接続されている場合が想定されている。
【０２５６】
ビット線ＢＬ０に対応するメモリセルトランジスタＭＴは“Ｅｒ”ステート、ビット線ＢＬ１に対応するメモリセルトランジスタＭＴは“Ａ”ステート、ビット線ＢＬ２に対応するメモリセルトランジスタＭＴは“Ｅｒ”ステート、ビット線ＢＬ３に対応するメモリセルトランジスタＭＴは“Ａ”ステート、ビット線ＢＬ４に対応するメモリセルトランジスタＭＴは“Ａ”ステート、ビット線ＢＬ５に対応するメモリセルトランジスタＭＴは “Ａ”ステート、ビット線ＢＬ６に対応するメモリセルトランジスタＭＴは“Ｅｒ”ステート、ビット線ＢＬ７に対応するメモリセルトランジスタＭＴは“Ａ”ステートである。
【０２５７】
以下では、図３４で示したように、ＶＡ１、ＶＡ２、ＶＡ３が、“Ｅｒ”ステートの閾値電圧分布と“Ａ”ステートの閾値分布との間のオーバーラップ領域上に設定されている場合を想定する。
【０２５８】
まず、電圧ＶＡ１が選択ワード線ＷＬｎに印加される。電圧ＶＡ１は“Ｅｒ”ステートの最大閾値電圧よりも低い。したがって、“Ｅｒ”ステートに属するメモリセルトランジスタＭＴの内、電圧ＶＡ１未満の閾値電圧を有するメモリセルトランジスタＭＴそれぞれはオンするが、電圧ＶＡ１以上の閾値電圧を有するメモリセルトランジスタＭＴ（“Ｅｒ”ステートの正規分布曲線の下と電圧ＶＡ１とによって囲まれた領域に属するメモリセルトランジスタＭＴ）それぞれはオフする。したがって、“Ｅｒ”ステートに対応する比較的多くの数のメモリセルトランジスタＭＴがオフする。また、“Ａ”ステートに属するメモリセルトランジスタＭＴの殆どすべてがオフする。したがって、例えば、１，１，１，１，１，１，０，１がデータ（Ａ  ＤＡＴＡ）として読み出される。電圧ＶＡ１が印加された時のオン・セル数（ＦＢＣ（Ａ））は、１となる。
【０２５９】
電圧ＶＡ２が選択ワード線ＷＬｎに印加される。“Ｅｒ”ステートに属するメモリセルトランジスタＭＴについては、オンするメモリセルトランジスタＭＴの数が増える。したがって、例えば、１，１，０，１，１，１，０，１がデータ（Ａ＋  ＤＡＴＡ）として読み出される。電圧ＶＡ２が印加された時のオン・セル数（ＦＢＣ（Ａ＋））は、２となる。
【０２６０】
電圧ＶＡ３が選択ワード線ＷＬｎに印加される。“Ｅｒ”ステートに属するメモリセルトランジスタＭＴの殆どすべてがオンする。“Ａ”ステートに属するメモリセルトランジスタＭＴについても、幾つかのメモリセルトランジスタＭＴはオンする。したがって、例えば、０，０，０，０，１，１，０，１がデータ（Ａ＋＋  ＤＡＴＡ）として読み出される。電圧ＶＡ３が印加された時のオン・セル数（ＦＢＣ（Ａ＋＋））は、５となる。
【０２６１】
図３６は、読み出し電圧に応じて変化するオン・セルの数から、２つのステートの交点に対応する最適な読み出し電圧を求める動作を示す。
【０２６２】
図３６の上部は、読み出し電圧（ＶＣＧＲＶ）とオン・セル数との関係を示す。図３６の下部は、読み出し電圧（ＶＣＧＲＶ）と、隣接する読み出し電圧間のオン・セル数の差との関係を示す。
【０２６３】
ここでは、電圧ＶＡ０、ＶＡ１、ＶＡ２、ＶＡ３が読み出し電圧ＣＶＧＲＶとして使用された場合を想定する（ＶＡ０＜ＶＡ１＜ＶＡ２＜ＶＡ３）。Ｎ０は、電圧ＶＡ０が選択ワード線ＷＬｎに印加された時のオン・セル数を示し、Ｎ１は、電圧ＶＡ１が選択ワード線ＷＬｎに印加された時のオン・セル数を示し、Ｎ２は、電圧ＶＡ２が選択ワード線ＷＬｎに印加された時のオン・セル数を示し、Ｎ３は、電圧ＶＡ３が選択ワード線ＷＬｎに印加された時のオン・セル数を示す。オン・セル数の差（Ｎ１−Ｎ０）は、読み出し電圧（ＶＣＧＲＶ）をＶＡ０からＶＡ１に上昇させることによって増えたオン・セルの数を示す。同様に、オン・セル数の差（Ｎ２−Ｎ１）は、読み出し電圧（ＶＣＧＲＶ）をＶＡ１からＶＡ２に上昇させることによって増えたオン・セルの数を示し、オン・セル数の差（Ｎ３−Ｎ２）は、読み出し電圧（ＶＣＧＲＶ）をＶＡ２からＶＡ３に上昇させることによって増えたオン・セルの数を示す。オン・セル数の差（Ｎ１−Ｎ０）、（Ｎ２−Ｎ１）、（Ｎ３−Ｎ２）をそれぞれ図３６のグラフ上にプロットすることにより、メモリセルトランジスタＭＴの閾値電圧分布を描くことができる。この閾値電圧分布から、“Ｅｒ”ステートの閾値電圧分布と“Ａ”ステートの閾値分布との交点（谷間）に対応する最適な読み出し電圧を求めることができる。
【０２６４】
図３７は、ステート毎にデータを複数回リードする動作の別の例を示す。
【０２６５】
制御回路２３は、読み出し動作ＡＲ（Ａ  Ｒｅａｄ）を実行する。読み出し動作ＡＲ（Ａ  Ｒｅａｄ）では、電圧ＶＡ１が選択ワード線ＷＬｎに印加される。そして、選択ワード線ＷＬｎに接続されたメモリセルトランジスタＭＴ群からビット線ＢＬ０〜ＢＬ（Ｌ−１）にデータ（Ａ  Ｄａｔａ）が読み出される。
【０２６６】
制御回路２３は、読み出し動作ＥＲ（Ｅ  Ｒｅａｄ）を実行する。読み出し動作ＥＲ（Ｅ  Ｒｅａｄ）では、電圧ＶＥ１が選択ワード線ＷＬｎに印加される。選択ワード線ＷＬｎに接続されたメモリセルトランジスタＭＴ群からビット線ＢＬ０〜ＢＬ（Ｌ−１）にデータ（Ｅ  Ｄａｔａ）が読み出される。
【０２６７】
制御回路２３は、読み出し動作ＡＲ（Ａ＋  Ｒｅａｄ）を実行する。読み出し動作ＡＲ（Ａ＋  Ｒｅａｄ）では、電圧ＶＡ２が選択ワード線ＷＬｎに印加される。選択ワード線ＷＬｎに接続されたメモリセルトランジスタＭＴ群からビット線ＢＬ０〜ＢＬ（Ｌ−１）にデータ（Ａ＋  Ｄａｔａ）が読み出される。
【０２６８】
制御回路２３は、読み出し動作ＥＲ（Ｅ＋  Ｒｅａｄ）を実行する。読み出し動作ＥＲ（Ｅ＋  Ｒｅａｄ）では、電圧ＶＥ２が選択ワード線ＷＬｎに印加される。選択ワード線ＷＬｎに接続されたメモリセルトランジスタＭＴ群からビット線ＢＬ０〜ＢＬ（Ｌ−１）にデータ（Ｅ＋  Ｄａｔａ）が読み出される。この読み出し動作ＥＲの期間中において、制御回路２３は、データ（Ａ＋  Ｄａｔａ）とデータ（Ａ  Ｄａｔａ）との差分データに含まれる“０”データの数（ＦＢＣ（ΔＡ））をカウントする。ＦＢＣ（ΔＡ）は、レジスタ２３Ｂに格納される。ＦＢＣ（ΔＡ）は、電圧ＶＡ１の印加によってオンしたメモリセルトランジスタＭＴの数を示すオン・セル数と電圧ＶＡ２の印加によってオンしたメモリセルトランジスタＭＴの数を示すオン・セル数との差分を示す。
【０２６９】
制御回路２３は、読み出し動作ＡＲ（Ａ＋＋  Ｒｅａｄ）を実行する。読み出し動作ＡＲ（Ａ＋＋  Ｒｅａｄ）では、電圧ＶＡ３が選択ワード線ＷＬｎに印加される。選択ワード線ＷＬｎに接続されたメモリセルトランジスタＭＴ群からビット線ＢＬ０〜ＢＬ（Ｌ−１）にデータ（Ａ＋＋  Ｄａｔａ）が読み出される。この読み出し動作ＡＲの期間中において、制御回路２３は、データ（Ｅ＋  Ｄａｔａ）とデータ（Ｅ  Ｄａｔａ）との差分データに含まれる“０”データの数（ＦＢＣ（ΔＥ））をカウントする。ＦＢＣ（ΔＥ）は、レジスタ２３Ｂに格納される。ＦＢＣ（ΔＥ）は、電圧ＶＥ１の印加によってオンしたメモリセルトランジスタＭＴの数を示すオン・セル数と電圧ＶＥ２の印加によってオンしたメモリセルトランジスタＭＴの数を示すオン・セル数との差分を示す。
【０２７０】
制御回路２３は、読み出し動作ＥＲ（Ｅ＋＋  Ｒｅａｄ）を実行する。読み出し動作ＥＲ（Ｅ＋＋  Ｒｅａｄ）では、電圧ＶＥ３が選択ワード線ＷＬｎに印加される。選択ワード線ＷＬｎに接続されたメモリセルトランジスタＭＴ群からビット線ＢＬ０〜ＢＬ（Ｌ−１）にデータ（Ｅ＋＋  Ｄａｔａ）が読み出される。この読み出し動作ＥＲの期間中において、制御回路２３は、データ（Ａ＋＋  Ｄａｔａ）とデータ（Ａ＋  Ｄａｔａ）との差分データに含まれる“０”データの数（ＦＢＣ（ΔＡ＋＋））をカウントする。ＦＢＣ（ΔＡ＋＋）は、レジスタ２３Ｂに格納される。ＦＢＣ（ΔＡ＋＋）は、電圧ＶＡ２の印加によってオンしたメモリセルトランジスタＭＴの数を示すオン・セル数と電圧ＶＡ３の印加によってオンしたメモリセルトランジスタＭＴの数を示すオン・セル数との差分を示す。
【０２７１】
リードリカバリ動作の期間中においては、制御回路２３は、データ（Ｅ＋＋  Ｄａｔａ）とデータ（Ｅ＋  Ｄａｔａ）との差分データに含まれる“０”データの数（ＦＢＣ（ΔＥ＋＋））をカウントする。ＦＢＣ（ΔＥ＋＋）は、レジスタ２３Ｂに格納される。ＦＢＣ（ΔＥ＋＋）は、電圧ＶＥ２の印加によってオンしたメモリセルトランジスタＭＴの数を示すオン・セル数と電圧ＶＥ３の印加によってオンしたメモリセルトランジスタＭＴの数を示すオン・セル数との差分を示す。
【０２７２】
メモリコントローラ２００からコマンド（ＸＸｈ）を受信すると、制御回路２３は、レジスタ２３Ｂに格納されているＦＢＣ（ΔＡ）、ＦＢＣ（ΔＥ）、ＦＢＣ（ΔＡ＋＋）、ＦＢＣ（ΔＥ＋＋）をメモリコントローラ２００に出力する。
【０２７３】
図３８は、図３７のデータ読み出し／フェイルビットカウント動作において計数されるＦＢＣ（ΔＡ）、ＦＢＣ（ΔＡ＋＋）の例を示す。
【０２７４】
図３８では、図示の簡単化のために、選択ワード線ＷＬｎに８つのメモリセルトランジスタＭＴが接続されている場合が想定されている。
【０２７５】
ビット線ＢＬ０に対応するメモリセルトランジスタＭＴは、“Ｅｒ”ステート、ビット線ＢＬ１に対応するメモリセルトランジスタＭＴは、“Ａ”ステート、ビット線ＢＬ２に対応するメモリセルトランジスタＭＴは、“Ｅｒ”ステート、ビット線ＢＬ３に対応するメモリセルトランジスタＭＴは、“Ａ”ステート、ビット線ＢＬ４に対応するメモリセルトランジスタＭＴは、“Ａ”ステート、ビット線ＢＬ５に対応するメモリセルトランジスタＭＴは、“Ａ”ステート、ビット線ＢＬ６に対応するメモリセルトランジスタＭＴは、“Ｅｒ”ステート、ビット線ＢＬ７に対応するメモリセルトランジスタＭＴは、“Ａ”ステートである。
【０２７６】
まず、電圧ＶＡ１が選択ワード線ＷＬｎに印加される。この場合、“Ｅｒ”ステートの正規分布曲線の下と電圧ＶＡ１とによって囲まれた領域に属するメモリセルトランジスタＭＴそれぞれはオフする。また、“Ａ”ステートに属するメモリセルトランジスタＭＴの殆どすべてがオフする。したがって、例えば、１，１，１，１，１，１，０，１がデータ（Ａ  ＤＡＴＡ）として読み出される。
【０２７７】
電圧ＶＡ２が選択ワード線ＷＬｎに印加される。“Ｅｒ”ステートに属するメモリセルトランジスタＭＴについては、オンするメモリセルトランジスタＭＴの数が増える。したがって、例えば、１，１，０，１，１，１，０，１がデータ（Ａ＋  ＤＡＴＡ）として読み出される。
【０２７８】
データ（Ａ  ＤＡＴＡ）とデータ（Ａ＋  ＤＡＴＡ）とのＸＮＯＲ演算が実行され、データ（Ａ  Ｄａｔａ）とデータ（Ａ＋  Ｄａｔａ）との差分データ（ｄｅｌｔａ（Ａ＋））が求められる。ｄｅｌｔａ（Ａ＋）は０，０，１，０，０，０，０，０となる。ｄｅｌｔａ（Ａ＋）に含まれる“１”の数がＦＢＣ（ΔＡ＋）となる。ＦＢＣ（ΔＡ＋）は１である。
【０２７９】
電圧ＶＡ３が選択ワード線ＷＬｎに印加される。“Ｅｒ”ステートに属するメモリセルトランジスタＭＴのほとんど全てがオンする。“Ａ”ステートに属するメモリセルトランジスタＭＴについても、幾つかのメモリセルトランジスタＭＴはオンする。したがって、例えば、０，０，０，０，１，１，０，１がデータ（Ａ＋＋  ＤＡＴＡ）として読み出される。
【０２８０】
データ（Ａ＋  ＤＡＴＡ）とデータ（Ａ＋＋  ＤＡＴＡ）とのＸＮＯＲ演算が実行され、データ（Ａ＋  Ｄａｔａ）とデータ（Ａ＋＋  Ｄａｔａ）との差分データ（ｄｅｌｔａ（Ａ＋＋））が求められる。ｄｅｌｔａ（Ａ＋＋）は１，１，０，１，０，０，０，０となる。ｄｅｌｔａ（Ａ＋＋）に含まれる“１”の数がＦＢＣ（ΔＡ＋＋）となる。ＦＢＣ（ΔＡ＋＋）は３である。
【０２８１】
図３９は、温度計測動作とデータ読み出し／フェイルビットカウント動作を示す。
【０２８２】
上述したように、本実施形態では、読み出し電圧（ＶＣＧＲＶ）をシフトさせながら、ステート毎にデータを複数回リードする動作が実行される。読み出し電圧（ＶＣＧＲＶ）は、ＶＡ１、ＶＡ２（＝ＶＡ１＋ΔＶ）、ＶＡ３（＝ＶＡ２＋ΔＶ）、ＶＥ１、ＶＥ２（＝ＶＥ１＋ΔＶ）、ＶＥ３（＝ＶＥ２＋ΔＶ）のように、データリードの度にＶＣＧステップ幅に対応する電圧ΔＶだけ上昇される（ＶＣＧシフト）。
【０２８３】
図３４で説明したように、実際の電圧ΔＶは、計測された温度に依存する場合がある。このため、もし図３９の左部に示すように、データリードの毎に温度（ＴＥＭＰＣＯＤＥ）を取得すると、ＶＣＧステップ幅（電圧ΔＶ）がデータリードの毎に変動してしまう場合がある。なぜなら、複数回リードする動作の期間中に、チップ内の温度が変化するからである。よって、読み出し電圧（ＶＣＧＲＶ）の変化のみに起因するオン・セルの数の差を取得したいにもかかわらず、取得されるオン・セルの数の差には、温度の変化に起因するノイズが含まれてしまう。結果、閾値電圧分布を精度よく描くことができず、最適な読み出し電圧を求めることが困難となる。
【０２８４】
本実施形態では、読み出し電圧（ＶＣＧＲＶ）をシフトさせながら、ステート毎にデータを複数回リードする動作においては、図３９の右部に示すように、制御回路２３は、初回の読み出し動作時に一度だけ温度を取得し、２回目以降の読み出し動作においては温度を取得しない。したがって、読み出し電圧（ＶＣＧＲＶ）がシフトされる量（つまり電圧ΔＶ）を、一定にすることができる。取得されるオン・セルの数の差には、温度の変化に起因するノイズが含まれない。結果、メモリコントローラ２００は、閾値電圧分布を精度よく描くことができ、最適な読み出し電圧を求めることが可能となる。
【０２８５】
制御回路２３は、以下のデータ読み出し／フェイルビットカウント動作を実行する。以下では、ＦＢＣ（Ａ）、ＦＢＣ（Ａ＋）、ＦＢＣ（Ａ＋＋）を求める場合を例示する。
【０２８６】
制御回路２３は、温度センサ２８によって温度を取得する。制御回路２３は、電圧ＶＡ１を選択ワード線ＷＬｎに印加する読み出し動作（Ａ  Ｒｅａｄ）を実行し、次いで電圧ＶＥ１を選択ワード線ＷＬｎに印加する読み出し動作（Ｅ  Ｒｅａｄ）を実行する。Ｅ  Ｒｅａｄの間、制御回路２３は、ＦＢＣ（Ａ）をカウントする。制御回路２３は、リードリカバリ動作を実行した後、読み出し電圧（ＶＣＧＲＶ）をＶＣＧステップ幅だけ上昇させる制御を行う。この場合、取得された温度とＶＣＧステップ幅とによって電圧ΔＶが決定される。
【０２８７】
制御回路２３は、電圧ＶＡ２（＝ＶＡ１＋ΔＶ）を選択ワード線ＷＬｎに印加する読み出し動作（Ａ＋  Ｒｅａｄ）を実行し、次いで電圧ＶＥ２（＝ＶＥ１＋ΔＶ）を選択ワード線ＷＬｎに印加する読み出し動作（Ｅ＋  Ｒｅａｄ）を実行する。Ｅ＋  Ｒｅａｄの間、制御回路２３は、ＦＢＣ（Ａ＋）をカウントする。制御回路２３は、リードリカバリ動作を実行した後、読み出し電圧（ＶＣＧＲＶ）をＶＣＧステップ幅だけ上昇させる制御を行う。この場合、温度は更新されていないので、最初に取得された温度とＶＣＧステップ幅とによって電圧ΔＶが決定される。
【０２８８】
制御回路２３は、電圧ＶＡ３（＝ＶＡ２＋ΔＶ）を選択ワード線ＷＬｎに印加する読み出し動作（Ａ＋＋  Ｒｅａｄ）を実行し、次いで電圧ＶＥ３（＝ＶＥ２＋ΔＶ）を選択ワード線ＷＬｎに印加する読み出し動作（Ｅ＋＋  Ｒｅａｄ）を実行する。Ｅ＋＋  Ｒｅａｄの間、制御回路２３は、ＦＢＣ（Ａ＋＋）をカウントする。
【０２８９】
次に、図４０を参照して、Ｖｔｈトラッキングと本実施形態のデータ読み出し／フェイルビットカウント動作（Ｏｎ  Ｃｈｉｐ  ＦＢＣ）との違いについて説明する。
【０２９０】
Ｖｔｈトラッキングは、読み出し電圧（ＶＣＧＲＶ）を上昇しながらデータを複数回リードする動作である。図４０の上部は、Ｖｔｈトラッキングの動作を示す。
【０２９１】
Ｖｔｈトラッキングを使用してロアーページデータを複数回リードするケースにおいては、ＶＡ１を使用した読み出し動作（Ａ  Ｒｅａｄ）、ＶＡ２を使用した読み出し動作（Ａ＋  Ｒｅａｄ）、ＶＡ３を使用した読み出し動作（Ａ＋＋  Ｒｅａｄ）、ＶＥ１を使用した読み出し動作（Ｅ  Ｒｅａｄ）、ＶＥ２を使用した読み出し動作（Ｅ＋  Ｒｅａｄ）、ＶＥ３を使用した読み出し動作（Ｅ＋＋  Ｒｅａｄ）が、この順に実行される。
【０２９２】
読み出し動作（Ａ  Ｒｅａｄ）のみ、選択ワード線ＷＬｎおよびビット線ＢＬ０〜ＢＬ（Ｌ−１）は第１の制御モードで制御される（ここでは、第１の制御モードをＲ＿ＣＬＫと称する）。他の全ての読み出し動作の間は、選択ワード線ＷＬｎおよびビット線ＢＬ０〜ＢＬ（Ｌ−１）は第２の制御モードで制御される（ここでは、第２の制御モードをＲＷＬ＿ＣＬＫと称する）。第１の制御モード（Ｒ＿ＣＬＫ）では、選択ワード線ＷＬｎおよびビット線ＢＬ０〜ＢＬ（Ｌ−１）は基準電圧ＶＳＳ（ＶＳＳ＝グランド電圧）から上昇されるが、第２の制御モード（Ｒ＿ＣＬＫ）では、選択ワード線ＷＬｎおよびビット線ＢＬ０〜ＢＬ（Ｌ−１）は基準電圧ＶＳＳには設定されない。
【０２９３】
ビット線ＢＬ０〜ＢＬ（Ｌ−１）の電圧は、ビット線制御信号ＢＬＣによって制御される。ビット線ＢＬ０〜ＢＬ（Ｌ−１）の電圧はビット線制御信号ＢＬＣによってクランプされ、ビット線制御信号ＢＬＣの電圧の上限はビット線制御信号ＢＬＣの電圧に制限される。このため、例えば、ビット線制御信号ＢＬＣが基準電圧ＶＳＳである時、ビット線ＢＬ０〜ＢＬ（Ｌ−１）の電圧も基準電圧ＶＳＳとなる。
【０２９４】
Ｖｔｈトラッキングでは、各ビット線ＢＬの制御および選択ワード線ＷＬｎの制御がＡ  ＲｅａｄとＡ＋  Ｒｅａｄ（またはＡ＋＋  Ｒｅａｄ）との間で異なる。各ビット線ＢＬは、Ａ  Ｒｅａｄの開始時には、基準電圧ＶＳＳから所望の電圧に上昇される。しかし、Ａ＋  Ｒｅａｄの開始時（またはＡ＋＋  Ｒｅａｄの開始時）には、各ビット線ＢＬは、基準電圧ＶＳＳに設定されない。また、選択ワード線ＷＬｎは、Ａ  Ｒｅａｄの開始時に一旦放電されるが、Ａ＋  Ｒｅａｄの開始時（またはＡ＋＋  Ｒｅａｄの開始時）には放電されない。
【０２９５】
したがって、読み出し電圧（ＶＣＧＲＶ）の変化のみに起因するオン・セルの数の差を取得したいにもかかわらず、取得されるオン・セルの数の差には、各ビット線ＢＬ／選択ワード線ＷＬｎの制御の違い起因するノイズが含まれてしまう。結果、閾値電圧分布を精度よく描くことができず、最適な読み出し電圧を求めることが困難となる。
【０２９６】
本実施形態のデータ読み出し／フェイルビットカウント動作（Ｏｎ  Ｃｈｉｐ  ＦＢＣ）では、Ａ  ＲｅａｄとＥ  Ｒｅａｄのセット、Ａ＋  ＲｅａｄとＥ＋  Ｒｅａｄのセット、Ａ＋＋  ＲｅａｄとＥ＋＋  Ｒｅａｄのセットが、この順で実行される。そして、選択ワード線ＷＬｎに印加される読み出し電圧の値に応じて変化するオン・セルの数が計数される。
【０２９７】
各セットにおいて、“Ａ”ステートの読み出し動作（Ａ  Ｒｅａｄ、Ａ＋  Ｒｅａｄ、およびＡ＋＋  Ｒｅａｄ）は第１の制御モード（Ｒ＿ＣＬＫ）によって制御され、“Ｅ”ステートの読み出し動作（Ｅ  Ｒｅａｄ、Ｅ＋  Ｒｅａｄ、およびＥ＋＋  Ｒｅａｄ）は第２の制御モード（ＲＷＬ＿ＣＬＫ）によって制御される。
【０２９８】
つまり、各セットの開始時（つまり、あるセットから次のセットへの遷移時）には、Ａ  Ｒｅａｄ、Ａ＋  Ｒｅａｄ、またはＡ＋＋  Ｒｅａｄが実行される。この場合、選択ワード線ＷＬｎおよびビット線ＢＬ０〜ＢＬ（Ｌ−１）は一旦放電された後に上昇される。例えば、ビット線ＢＬ０〜ＢＬ（Ｌ−１）の電圧は基準電圧ＶＳＳまで放電され、そして基準電圧ＶＳＳからプリチャージ電圧に上昇される。
【０２９９】
より詳しくは、あるセットから次のセットへの遷移時においては、ビット線制御信号ＢＬＣが基準電圧ＶＳＳに下げられ、そして基準電圧ＶＳＳから上昇する。このため、各ビット線ＢＬは一旦放電されて基準電圧ＶＳＳにまで低下され、そして各ビット線ＢＬの電圧は、基準電圧ＶＳＳから所定のプリチャージ電圧に上昇される。
【０３００】
各セットの開始時（つまり、あるセットから次のセットへの遷移時）には、選択ワード線ＷＬｎも一旦放電される。例えば、Ｅ  ＲｅａｄからＡ＋  Ｒｅａｄへの遷移時には、選択ワード線ＷＬｎの電圧は、まず、ＶＥ１からＶＡ１まで低下され、そしてＶＡ１からＶＡ２に上昇する。Ｅ＋  ＲｅａｄからＡ＋＋  Ｒｅａｄへの遷移時には、選択ワード線ＷＬｎの電圧は、まずも、ＶＥ２からＶＡ２まで低下され、そしてＶＡ２からＶＡ３に上昇する。
【０３０１】
よって、各ビット線ＢＬの制御をＡ  ＲｅａｄとＡ＋  Ｒｅａｄ（またはＡ＋＋  Ｒｅａｄ）との間で同じにすることができる。さらに、選択ワード線ＷＬｎの制御もＡ  ＲｅａｄとＡ＋  Ｒｅａｄ（またはＡ＋＋  Ｒｅａｄ）との間で同じにすることができる。同様に、各ビット線ＢＬの制御をＥ  ＲｅａｄとＥ＋  Ｒｅａｄ（またはＥ＋＋  Ｒｅａｄ）との間で同じにすることができる。さらに、選択ワード線ＷＬｎの制御もＥ  ＲｅａｄとＥ＋  Ｒｅａｄ（またはＥ＋＋  Ｒｅａｄ）との間で同じにすることができる。
【０３０２】
したがって、各読み出し動作において取得されるオン・セルの数には、各ビット線ＢＬ／選択ワード線ＷＬｎの制御の違いに起因するノイズが含まれない。よって、読み出し電圧（ＶＣＧＲＶ）の変化のみに起因するオン・セルの数の差を取得することが可能となる。メモリコントローラ２００は、閾値電圧分布を精度よく描くことができ、最適な読み出し電圧を求めることが可能となる。
【０３０３】
図４１のフローチャートは、メモリコントローラ２００とＮＡＮＤ型フラッシュメモリ１０とによって実行される読み出し電圧調整処理の手順を示す。
【０３０４】
メモリコントローラ２００は、あるページを指定するアドレスを含むリードコマンドをＮＡＮＤ型フラッシュメモリ１０に送信する。このリードコマンドの受信に応答して、ＮＡＮＤ型フラッシュメモリ１０の制御回路２３は、アドレスによって指定されたページからデータを読み出す（ステップＳ１０１）。例えば、アドレスによって指定されたページがロアーページであるならば、読み出し動作ＡＲと読み出し動作ＡＥとが実行され、ロアーページデータがメモリコントローラ２００に返される。
【０３０５】
メモリコントローラ２００では、ロアーページデータに含まれるエラー数がＥＣＣによって訂正可能なエラー数を超過しているか否かが判定される（ステップＳ１０２）。ロアーページデータ内のエラー数がＥＣＣ訂正可能なエラー数を超過していないならば（ステップＳ１０２のＮＯ）、処理は終了する。一方、ロアーページデータ内のエラー数がＥＣＣ訂正可能なエラー数を超過しているならば（ステップＳ１０２のＹＥＳ）、メモリコントローラ２００は、このロアーページのフェイルビットカウント動作を実行するためのコマンドシーケンス（コマンドＹＹｈ、コマンド００ｈ、アドレスＡＤＤ、コマンド３０ｈ）をＮＡＮＤ型フラッシュメモリ１０に送信する。
【０３０６】
ＮＡＮＤ型フラッシュメモリ１０の制御回路２３は、例えば、ステート毎にデータを複数回リードする動作を実行して、Ａ  Ｒｅａｄ、Ａ＋  Ｒｅａｄ、Ａ＋＋  Ｒｅａｄ、Ｅ  Ｒｅａｄ、Ｅ＋  Ｒｅａｄ、Ｅ＋＋  Ｒｅａｄそれぞれに対応するオン・セル数を計数する（ステップＳ１０３）。そして、メモリコントローラ２００からのコマンド（ＸＸｈ）の受信に応答して、制御回路２３は、これらオン・セル数をメモリコントローラ２００に送信する（ステップＳ１０４）。メモリコントローラ２００は、これらオン・セル数に基づいて、読み出し電圧ＶＡの最適値および読み出し電圧ＶＥの最適値を求める。そして、メモリコントローラ２００は、読み出し電圧ＶＡ、ＶＥをそれぞれ最適値に変更することを指示するコマンドをＮＡＮＤ型フラッシュメモリ１０に送信する。
【０３０７】
なお、以上の説明では、ロアーページデータを読み出す時に実行されるデータ読み出し／フェイルビットカウント動作を説明したが、データ読み出し／フェイルビットカウント動作はミドルページデータ／アッパーページデータの読み出しにも適用できる。例えば、アッパーページに対するデータ読み出し／フェイルビットカウント動作では、読み出し電圧ＶＣ１を使用した読み出し動作ＣＲ（Ｃ  Ｒｅａｄ）、読み出し電圧ＶＧ１を使用した読み出し動作ＧＲ（Ｇ  Ｒｅａｄ）、読み出し電圧ＶＣ２を使用した読み出し動作ＣＲ（Ｃ＋  Ｒｅａｄ）、読み出し電圧ＶＧ２を使用した読み出し動作ＧＲ（Ｇ＋  Ｒｅａｄ）、読み出し電圧ＶＣ３を使用した読み出し動作ＣＲ（Ｃ＋＋  Ｒｅａｄ）、読み出し電圧ＶＧ３を使用した読み出し動作ＧＲ（Ｇ＋＋  Ｒｅａｄ）が実行される。
【０３０８】
以上説明したように、第２実施形態のオン・チップ・ＦＢＣ機能は、オン・セル数をＮＡＮＤ型フラッシュメモリ１０内のカウンタ２３Ａによってチップ内で計数し、そしてオン・セル数を示すデジタル値のみをメモリコントローラ２００に出力することができる。よって、メモリバス（Ｉ／Ｏバス）１１がオン・セルの数の取得のために長い間専有されてしまうことを防止することができる。また、１回のリードコマンドの受信に応答して、ステート毎にオン・セルの数を取得することができる。さらに、あるステートに対応するオン・セル数は、別のステートに対応するデータ読み出し動作のバックグラウンドで効率良く実行することができる。またさらに、ステート毎にデータを複数回リードする動作では、例えば、各ビット線ＢＬおよび選択ワード線ＷＬｎの制御をＡ  ＲｅａｄとＡ＋  Ｒｅａｄ（またはＡ＋＋  Ｒｅａｄ）との間で同じにすることができ、さらに、各ビット線ＢＬおよび選択ワード線ＷＬｎの制御をＥ  ＲｅａｄとＥ＋  Ｒｅａｄ（またはＥ＋＋  Ｒｅａｄ）との間で同じにすることができる。したがって、各読み出し動作において取得されるオン・セルの数には、各ビット線ＢＬ／選択ワード線ＷＬｎの制御の違いに起因するノイズが含まれない。よって、読み出し電圧（ＶＣＧＲＶ）の変化のみに起因するオン・セルの数の差を精度よく取得することが可能となる。
【０３０９】
（メモリシステムの他の構成例）
図４２は、メモリシステム１の他の構成例を示す。
【０３１０】
図４２のメモリシステム１では、メモリパッケージ３００が上述の複数のＮＡＮＤ型フラッシュメモリ１０として使用される。メモリパッケージ３００は、インタフェースチップ１０６とコアチップ１−８−０〜１０８−ｎとを含む。コアチップ１−８−０〜１０８−ｎの各々は、ＮＡＮＤ型フラッシュメモリ１０として機能する。なお、図３で説明したＮＡＮＤ型フラッシュメモリ１０の回路構成の一部分は、インタフェースチップ１０６に設けられていてもよい。
【０３１１】
インタフェースチップ１０６およびコアチップ１−８−０〜１０８−ｎは、メモリパッケージ３００内に積層されている。メモリパッケージ３００は、このパッケージ内において積層されたコアチップ１−８−０〜１０８−ｎを垂直に貫通するシリコン貫通電極を使用するＴＳＶ（スルー・シリコン・ビア）技術によって、データ入出力の高速化と消費電力の低減を可能にしたメモリパッケージとして実現され得る。コアチップ１０８−０〜１０８−１５は、多数のシリコン貫通電極（多数の垂直ビア）によって相互接続される。
【０３１２】
メモリコントローラ２００内のメモリインターフェイス２４０は、一つ以上のチャンネルを介してメモリパッケージ３００に接続される。なお、メモリインターフェイス２４０は、複数のメモリパッケージ３００に接続されてもよい。
【０３１３】
一つ以上のチャンネルは上述のメモリバス１１として機能する。ここでは、メモリインターフェイス２４０が２つのチャンネルＣＨ０、ＣＨ０を介してメモリパッケージ３００に接続される構成が例示されているが、メモリインターフェイス２４０は、１つのチャンネルのみを介してメモリパッケージ３００に接続されてもよいし、３以上のチャンネルを介してメモリパッケージ３００に接続されてもよい。
【０３１４】
各チャンネルは、上述のチップイネーブル信号ＣＥｎ、コマンドラッチイネーブル信号ＣＬＥ、アドレスラッチイネーブル信号ＡＬＥ、ライトイネーブル信号ＷＥｎ、リードイネーブル信号ＲＥｎ、ライトプロテクト信号ＷＰｎ、レディー／ビジー信号ＲＹ／ＢＹｎ、Ｉ／Ｏ信号ＤＱ０〜ＤＱ７，ＤＱｎ０〜ＤＱｎ７、データストローブ信号ＤＱＳ、ＤＱＳｎ等を含む。一つのチャンネル当たりのチップイネーブル信号ＣＥｎおよびレディー／ビジー信号ＲＹ／ＢＹｎそれぞれ数は複数であってもよい。
【０３１５】
メモリコントローラ２００は、インタフェースチップ１０６を介してコアチップ１０８−０〜１０８−１５をそれぞれ制御する。これらコアチップ１０８−０〜１０８−１５の各々は、第１実施形態で説明した各機能、第２実施形態で説明した各機能を実行するように構成されている。
【０３１６】
インタフェースチップ１０６は、メモリコントローラ２００から供給されたコマンド、データ、アドレス等をコアチップ１０８−０〜１０８−１５に送信し、またコアチップ１０８−０〜１０８−１５から受信したデータ等をメモリコントローラ２００へ送信する。インタフェースチップ１０６とコアチップ１０８−０〜１０８−１５間の通信は、多数のシリコン貫通電極を介して実行される。
【０３１７】
図４３は、メモリパッケージ３００の構成の一例を示す断面図である。
【０３１８】
ここでは、８つのコアチップ１０８−０〜１０８−７が積層されている場合が例示されているが、積層されるコアチップの数は８に限らず、２以上の任意の数でよい。
【０３１９】
パッケージ基板５２の上部にインタフェースチップ１０６が配置される。パッケージ基板５２は、ＢＧＡ（Ball Grid Array）基板であってもよい。この場合、パッケージ基板５２は、外部機器と接続される端子となる多数の半田ボール（半田バンプとも称する）６２を備える。インタフェースチップ１０６は封止樹脂２０で封止されている。
【０３２０】
コアチップ１０８−０〜１０８−７は、インタフェースチップ１０６の上方において積層される。隣接する２枚のコアチップ１０８の間にはスペーサ４６が配置されている。各コアチップ１０８は表面配線と裏面配線を有する。各コアチップ１０８は、その表面配線が形成される面が下側（フェイスダウン）となる向きで積層される。
【０３２１】
最も上のコアチップ１０８−０の上側の面（裏面配線が形成される面）は、接着剤３４を介して支持板３２に接着されている。
【０３２２】
コアチップ１０８−１〜１０８−７の半導体基板には多数のシリコン貫通電極（以下、単に貫通電極と称する）４２が設けられる。各コアチップ１０８は、メモリセルが形成されるセル領域と、センスアンプ、デコーダ等が形成される周辺領域を含む。貫通電極４２は周辺領域に設けられもよい。
【０３２３】
コアチップ１０８−１〜１０８−７の貫通電極４２は、半田ボール４４を介して上側のコアチップ１０８−０〜１０８−６の貫通電極４２に接続される。これによりコアチップ１０８−１〜１０８−７の同じ位置にある貫通電極４２は互いに接続され、コアチップ１０８−０〜１０８−７が貫通電極４２と半田ボール４４とにより互いに接続される。
【０３２４】
最も下のコアチップ１０８−７の下側の面（表面配線が形成される面）には再配線層３０が設けられる。パッケージ基板５２の上側表面には配線層６４が設けられる。再配線層３０と配線層６４との間には半田ボール６６が設けられる。インタフェースチップ１０６の表面上に設けられた多数のパッドは、多数の半田ボール（例えば、半田ボール６８−１、６８−２、６８−３等）を介して再配線層３０に接続される。
【０３２５】
インタフェースチップ１０６は、例えば、半田ボール６８−１、再配線層３０を介してコアチップ１０８の積層体に接続される。インタフェースチップ１０６は、例えば、半田ボール６８−２、６８−３、再配線層３０、半田ボール６６、配線層６４、配線６３、半田ボール６２を介してメモリコントローラ２００に電気的に接続される。コアチップ１０８の積層体は、再配線層３０、半田ボール６６、配線層６４、配線６３、半田ボール６２を介してメモリコントローラ２００に電気的に接続される。メモリコントローラ２００からの電源電圧はインタフェースチップ１０６を介さず各コアチップ１０８に直接に供給されてもよい。上記の構造体は封止樹脂２０が充填される樹脂パッケージ３６内に配置される。樹脂パッケージ３６は封止樹脂６０と同じ材料で構成してもよい。
【０３２６】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０３２７】
１０…不揮発性半導体記憶装置（ＮＡＮＤ型フラッシュメモリ）、１２…メモリセルアレイ、２３…制御回路、ＢＬ…ビット線、ＷＬ…ワード線、ＭＴ…メモリセルトランジスタ。
【図１】
2018147543.tif 000003
【図２】
2018147543.tif 000004
【図３】
2018147543.tif 000005
【図４】
2018147543.tif 000006
【図５】
2018147543.tif 000007
【図６】
2018147543.tif 000008
【図７】
2018147543.tif 000009
【図８】
2018147543.tif 000010
【図９】
2018147543.tif 000011
【図１０】
2018147543.tif 000012
【図１１】
2018147543.tif 000013
【図１２】
2018147543.tif 000014
【図１３】
2018147543.tif 000015
【図１４】
2018147543.tif 000016
【図１５】
2018147543.tif 000017
【図１６】
2018147543.tif 000018
【図１７】
2018147543.tif 000019
【図１８】
2018147543.tif 000020
【図１９】
2018147543.tif 000021
【図２０】
2018147543.tif 000022
【図２１】
2018147543.tif 000023
【図２２】
2018147543.tif 000024
【図２３】
2018147543.tif 000025
【図２４】
2018147543.tif 000026
【図２５】
2018147543.tif 000027
【図２６】
2018147543.tif 000028
【図２７】
2018147543.tif 000029
【図２８】
2018147543.tif 000030
【図２９】
2018147543.tif 000031
【図３０】
2018147543.tif 000032
【図３１】
2018147543.tif 000033
【図３２】
2018147543.tif 000034
【図３３】
2018147543.tif 000035
【図３４】
2018147543.tif 000036
【図３５】
2018147543.tif 000037
【図３６】
2018147543.tif 000038
【図３７】
2018147543.tif 000039
【図３８】
2018147543.tif 000040
【図３９】
2018147543.tif 000041
【図４０】
2018147543.tif 000042
【図４１】
2018147543.tif 000043
【図４２】
2018147543.tif 000044
【図４３】
2018147543.tif 000045