(57)【要約】【課題】データの読み出し信頼性を向上出来る半導体記憶装置を提供すること。【解決手段】半導体記憶装置１は、ロウ及びカラムＣ０〜Ｃ１５に関連付けられた、データ保持可能な複数のメモリセルＭＴと、前記カラムＣ０〜Ｃ１５毎に対応付けて設けられ、対応する前記カラムＣ０〜Ｃ１５に対する書き込みデータまたは読み出しデータを保持可能な、複数のラッチ回路２０−０〜２０−１５とを具備し、前記ラッチ回路２０−０〜２０−１５は選択的に活性化される。【選択図】図４
2011123964.tif 000002
【特許請求の範囲】
【請求項１】
ロウ及びカラムに関連付けられた、データ保持可能な複数のメモリセルと、
前記カラム毎に対応付けて設けられ、対応する前記カラムに対する書き込みデータまたは読み出しデータを保持可能な、複数のラッチ回路と
を具備し、前記ラッチ回路は選択的に活性化され、活性化された前記ラッチ回路はデータを取り込み可能またはデータを出力可能とされる
ことを特徴とする半導体記憶装置。
【請求項２】
第１閾値と、前記第１閾値と異なる第２閾値とを基準にして比較動作を行う比較器を更に備え、
前記カラムは第１カラムと第２カラムとを含み、
前記ラッチ回路は、前記第１カラムに対応付けられた第１ラッチ回路と、前記第２カラムに対応付けられた第２ラッチ回路を含み、
前記比較器は、前記第１ラッチ回路が活性化されている際には、前記第１閾値を基準にして比較動作を行い、第２ラッチ回路が活性化され且つ前記第１ラッチ回路が非活性の際には、第２閾値を基準にして比較動作を行う
ことを特徴とする請求項１記載の半導体記憶装置。
【請求項３】
前記第２カラムは、前記メモリセルが保持する情報量を示すフラグデータを保持し、前記第１カラムは、前記フラグデータ以外のデータを保持し、
データの書き込み時において前記ラッチ回路は、対応する前記カラムについてのプログラムベリファイの結果を保持し、
前記比較器は、前記活性化された前記ラッチ回路から出力される前記プログラムベリファイのフェイル数と、前記第１、第２閾値とを比較する
ことを特徴とする請求項２記載の半導体記憶装置。
【請求項４】
前記データの書き込み時において、前記第１カラムについての前記プログラムベリファイのフェイル数が前記第１閾値以下となり、且つ前記第２カラムについての前記プログラムベリファイのフェイル数が前記第２閾値以下となるまで、プログラム動作が繰り返される
ことを特徴とする請求項３記載の半導体記憶装置。
【請求項５】
前記第１ラッチ回路に接続され、該第１ラッチ回路を活性化する第１信号を伝達する第１配線と、
前記第２ラッチ回路に接続され、該第２ラッチ回路を活性化する第２信号を伝達する第２配線と
を更に備え、前記第２ラッチ回路は、前記第２信号によって常時活性化される
ことを特徴とする請求項２記載の半導体記憶装置。
【請求項６】
前記第１ラッチ回路に対応付けられ、保持するデータに応じて前記第１ラッチ回路を活性化させる第３ラッチ回路と、
前記第２ラッチ回路に対応付けられ、保持するデータに応じて前記第２ラッチ回路を活性化させる第４ラッチ回路と
を更に備えることを特徴とする請求項２記載の半導体記憶装置。
【請求項７】
外部から入力された第１書き込みデータを一時的に保持する第１データ保持部と、
内部で生成された第２書き込みデータを一時的に保持する第２データ保持部と
を更に備え、活性化された前記ラッチ回路は、前記第１書き込みデータと前記第２書き込みデータのいずれかをラッチする
ことを特徴とする請求項１記載の半導体記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、半導体記憶装置に関する。例えば、多値ＮＡＮＤ型フラッシュメモリに関する。
【背景技術】
【０００２】
従来、メモリセルの各々が２ビット以上のデータを保持可能な、多値（multi-level）ＮＡＮＤ型フラッシュメモリが知られている。また多値ＮＡＮＤ型フラッシュメモリでは、各メモリセルがどのページまで書き込まれているか（例えば、下位ページまでしか書き込まれていないのか、それとも上位ページまで書き込まれているのか等）、を示すフラグデータを使用することが知られている（例えば、特許文献１参照）。データの読み出しの際には、予めこのフラグデータを確認しておくことで、適切な読み出し動作が可能となる。
【０００３】
またＮＡＮＤ型フラッシュメモリでは、不良ビットが存在することを前提として、誤り訂正回路（ＥＣＣ回路）が設けられるのが通常である（例えば、特許文献２参照）。そして１ページにつき許容される最大不良ビット数が予め定められている。
【０００４】
しかしながら、この不良ビットが上記フラグデータの格納領域に集中して発生したような場合、正確な読み出しが困難になる、という問題があった。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特許第３９３５１３９号明細書
【特許文献２】特開２００９−０８７４９１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
この発明は、データの読み出し信頼性を向上出来る半導体記憶装置を提供する。
【課題を解決するための手段】
【０００７】
この発明の一態様に係る半導体記憶装置は、ロウ及びカラムに関連付けられた、データ保持可能な複数のメモリセルと、前記カラム毎に対応付けて設けられ、対応する前記カラムに対する書き込みデータまたは読み出しデータを保持可能な、複数のラッチ回路とを具備し、前記ラッチ回路は選択的に活性化され、活性化された前記ラッチ回路はデータを取り込み可能またはデータを出力可能とされる。
【発明の効果】
【０００８】
本発明によれば、データの読み出し信頼性を向上出来る半導体記憶装置を提供出来る。
【図面の簡単な説明】
【０００９】
【図１】この発明の第１実施形態に係るフラッシュメモリのブロック図。
【図２】第１実施形態に係るフラッシュメモリにおけるデータ領域の概念図。
【図３】第１実施形態に係るメモリセルの閾値分布を示すグラフ。
【図４】第１実施形態に係るページバッファ及びパス／フェイル回路のブロック図。
【図５】第１実施形態に係るデータ読み出し時におけるＮＡＮＤセルの回路図。
【図６】第１実施形態に係るデータ書き込み時における状態遷移図。
【図７】第１実施形態に係るデータプログラム時におけるＮＡＮＤセルの回路図。
【図８】第１実施形態に係るフラッシュメモリの動作を示すフローチャート。
【図９】第１実施形態に係るフラッシュメモリの動作を示すフローチャート。
【図１０】第１実施形態に係るパス／フェイル回路のブロック図。
【図１１】第１実施形態に係るパス／フェイル回路のブロック図。
【図１２】この発明の第２実施形態に係るパス／フェイル回路と設定部のブロック図。
【図１３】第２実施形態に係るパス／フェイル回路の動作を示すフローチャート。
【図１４】この発明の第３実施形態に係るパス／フェイル回路とデータバッファのブロック図。
【図１５】第３実施形態に係るパス／フェイル回路とデータバッファの動作を示すフローチャート。
【図１６】第３実施形態に係るパス／フェイル回路とデータバッファのブロック図。
【図１７】第３実施形態に係るパス／フェイル回路とデータバッファのブロック図。
【発明を実施するための形態】
【００１０】
以下、この発明の実施形態につき図面を参照して説明する。この説明に際し、全図にわたり、共通する部分には共通する参照符号を付す。
【００１１】
［第１の実施形態］  
この発明の第１の実施形態に係る半導体記憶装置について、多値ＮＡＮＤ型フラッシュメモリを例に挙げて説明する。
【００１２】
＜ＮＡＮＤ型フラッシュメモリの全体構成について＞  
図１は、本実施形態に係る４値（4-levels）ＮＡＮＤ型フラッシュメモリのブロック図である。図示するようにＮＡＮＤ型フラッシュメモリ１は、メモリセルアレイ２、ロウデコーダ３、カラムデコーダ４、ページバッファ５、パス／フェイル（Pass/fail）回路６、及び制御回路７を備えている。
【００１３】
図示するようにメモリセルアレイ２は、複数のＮＡＮＤセル８を備えている。ＮＡＮＤセル８の各々は、例えば３２個のメモリセルトランジスタＭＴ０〜ＭＴ３１と、選択トランジスタＳＴ１、ＳＴ２とを含んでいる。以下、メモリセルトランジスタＭＴ０〜ＭＴ３１を区別しない場合には、一括してメモリセルトランジスタＭＴと呼ぶことにする。メモリセルトランジスタＭＴは、半導体基板上にゲート絶縁膜を介在して形成された電荷蓄積層（例えば浮遊ゲート）と、電荷蓄積層上にゲート間絶縁膜を介在して形成された制御ゲートとを有する積層ゲート構造を備えている。なお、メモリセルトランジスタＭＴの個数は３２個に限られず、８個や１６個、６４個、１２８個、２５６個等であってもよく、その数は限定されるものではない。また、電荷蓄積層は絶縁物を材料に用いて形成されても良い。メモリセルトランジスタＭＴは、隣接するもの同士でソース、ドレインを共有している。そして、選択トランジスタＳＴ１、ＳＴ２間に、その電流経路が直列接続されるようにして配置されている。直列接続されたメモリセルトランジスタＭＴの一端側のドレインは選択トランジスタＳＴ１のソースに接続され、他端側のソースは選択トランジスタＳＴ２のドレインに接続されている。
【００１４】
同一行にあるメモリセルトランジスタＭＴの制御ゲートはワード線ＷＬ０〜ＷＬ３１のいずれかに共通接続され、同一行にある選択トランジスタＳＴ１、ＳＴ２のゲートは、それぞれセレクトゲート線ＳＧＤ、ＳＧＳに共通接続されている。以下ではワード線ＷＬ０〜ＷＬ３１を単にワード線ＷＬと呼ぶことがある。更に、選択トランジスタＳＴ１のドレインはビット線ＢＬ０〜ＢＬｍ（ｍは２以上の自然数）のいずれかに接続され、選択トランジスタＳＴ２のソースはソース線ＳＬに共通接続される。ビット線ＢＬ０〜ＢＬｍについても、これらを区別しない場合には単にビット線ＢＬと呼ぶ。
【００１５】
以上の構成において、ワード線ＷＬ及びセレクトゲート線ＳＧＤ、ＳＧＳを共通にする複数のＮＡＮＤセル８によって、１つのブロックと呼ばれる単位が形成される。同一のブロック内のメモリセルトランジスタＭＴは、一括してデータが消去される。更に、同一のワード線ＷＬに接続された複数のメモリセルトランジスタＭＴには、一括してデータが書き込まれ、この単位はページと呼ばれる。図１では１つのブロックのみ図示しているが、ブロックはビット線ＢＬに沿った方向に複数設けられても良い。この場合、メモリセルアレイ２内において同一列にあるＮＡＮＤセル８は、同一のビット線ＢＬに共通接続される。
【００１６】
次に、上記メモリセルアレイ２におけるデータの格納方法について、図２を用いて説明する。図２はある１本のワード線ＷＬについて示したデータ領域の模式図である。図示するようにデータ領域は、通常データ領域、ＥＣＣデータ領域、フラグデータ領域、及びリダンダンシカラム領域を含む。
【００１７】
通常データ領域及びＥＣＣデータ領域は、ＮＡＮＤ型フラッシュメモリ１を制御するホスト機器（例えばパーソナルコンピュータやデジタルカメラ等）からＮＡＮＤ型フラッシュメモリ１に転送されたデータを保持する領域である。このうち通常データ領域は、ユーザによって入力された正味のデータを保持する領域である。またＥＣＣデータ領域は、通常データ領域に格納されたデータをＥＣＣ訂正するためのＥＣＣデータ（例えばパリティなど）を保持する領域である。フラグデータ領域は、フラグデータを保持する領域である。フラグデータはＬＭフラグとも呼ばれ、当該ワード線ＷＬに接続されたメモリセルトランジスタＭＴが、下位ページまでしか書き込まれていないのか、または上位ページまで書き込まれているのか、を示す情報である。フラグデータは、例えばＮＡＮＤ型フラッシュメモリ１内部で生成されるデータである。フラグデータについての詳細は後述する。リダンダンシカラム領域は、不良であるメモリセルトランジスタＭＴを置き換えるための領域である。置き換え対象となるデータは、通常データ領域内のデータに限らず、ＥＣＣデータ領域やフラグデータ領域内のデータも含まれる。通常データ領域は、上記ＥＣＣデータ領域、フラグデータ領域、及びリダンダンシカラム領域を除く領域、と言うことも出来る。
【００１８】
次に、上記メモリセルトランジスタＭＴの取り得るデータについて説明する。メモリセルトランジスタＭＴは、閾値電圧に応じて例えば２ビットのデータを保持可能とされている。図３はメモリセルトランジスタＭＴの閾値分布を示すグラフであり、縦軸に閾値電圧Ｖthをとり、横軸にメモリセルトランジスタＭＴの存在確率を示したグラフである。
【００１９】
図示するように、各々のメモリセルトランジスタＭＴは４値（4-levels）のデータを保持出来る。より具体的には、メモリセルトランジスタＭＴは、閾値電圧Ｖthの低い順に“Ｅ”レベル、“Ａ”レベル、“Ｂ”レベル、及び“Ｃ”レベルの４種のデータを保持出来る。
【００２０】
“Ｅ”レベルは消去レベルであり、その閾値電圧ＶthＥはＶthＥ＜ＶＡである。“Ａ”レベルの閾値電圧ＶthＡは、ＶＡ＜ＶthＡ＜ＶＢである。“Ｂ”レベルの閾値電圧ＶthＢは、ＶＢ＜ＶthＢ＜ＶＣである。“Ｃ”レベルの閾値電圧ＶthＣは、ＶＣ＜ＶthＣである。
【００２１】
上記の“Ｅ”、“Ａ”、“Ｂ”、及び“Ｃ”レベルは、２進数表示でそれぞれ“１１”、“０１”、“００”、及び“１０”データに対応づけられる。この２ビットのデータの各ビットを、図３に示すように上位（upper）ビット（または上位データ）及び下位（lower）ビット（下位データ）と呼ぶ。なお、“Ｅ”〜“Ｃ”レベルと“００”〜“１１”データとの関係は図３の場合に限られるものでは無く、適宜選択出来る。
【００２２】
前述の通り、データは同一のワード線ＷＬに接続されたメモリセルトランジスタＭＴに対して、一括して書き込まれ、また読み出される。この際、データは下位ビット毎、または上位ビット毎に書き込まれ、また読み出される。従って、メモリセルトランジスタＭＴが２ビットデータを保持している場合には、１本のワード線ＷＬあたり、２つのページが割り当てられていることになる。そして、下位ビットについて一括して書き込みまたは読み出されるページが下位ページであり、上位ビットについて一括して書き込みまたは読み出されるページが上位ページである。
【００２３】
図３から明らかなように、下位ページまでしか書き込まれていない場合には、メモリセルトランジスタＭＴは、“Ｅ”レベルに相当する閾値を有する状態と、“Ａ”レベル以上に相当する閾値を有する状態との、２つの状態しか取り得ない。これに対して、上位ページまで書き込まれることにより、“Ｅ”、“Ａ”、“Ｂ”、及び“Ｃ”レベルの４つの状態を取り得るようになる。
【００２４】
上記したフラグデータは、対応するメモリセルトランジスタＭＴが、下位ページまでしかデータが書き込まれていない状態（すなわち“Ｅ”レベルと“Ａ”レベル以上のいずれかのデータのみを保持する状態）であるのか、または上位ページまでデータが書き込まれている状態（すなわち“Ａ”レベル、“Ｂ”レベル及び“Ｃ”レベルも取り得る状態）であるのかを示す。言い換えれば、メモリセルトランジスタＭＴの持つ情報量を示すデータである。一例として本実施形態におけるフラグデータは、“Ｅ”レベルと“Ａ”レベルの２つのレベルを用いて書き込まれ、“Ｂ”レベルと“Ｃ”レベルは用いられない。つまりフラグデータは、下位ページのみを用いて書き込まれる。
【００２５】
なお、電圧ＶＣを読み出しレベルに用いて行うデータの読み出し（すなわち、閾値レベルが“Ｃ”レベルなのか、“Ｂ”レベル以下なのかの判定）を、「“Ｃ”読み出し」と呼ぶ。また、電圧ＶＢを用いて行うデータの読み出し（すなわち、閾値レベルが“Ｂ”レベル以上なのか、“Ａ”レベル以下なのかの判定）を、「“Ｂ”読み出し」と呼ぶ。更に、電圧ＶＡを用いて行うデータの読み出し（すなわち、閾値レベルが“Ａ”レベル以上なのか、“Ｅ”レベルなのかの判定）を、「“Ａ”読み出し」と呼ぶ。
【００２６】
図１に戻って説明を続ける。ロウデコーダ３は、メモリセルアレイ２のロウ方向を選択する。すなわち、ワード線ＷＬを選択する。そして、選択したワード線ＷＬ及び非選択のワード線ＷＬに対して、適切な電圧を印加する。
【００２７】
ページバッファ５は、データの書き込み時には、外部から与えられる書き込みデータを一時的に保持し、これをビット線ＢＬに転送して、ページ単位で一括してデータを書き込む。またデータの読み出し時には、ページ単位でビット線ＢＬに読み出されたデータをセンス・増幅し、これを一時的に保持し、外部へ出力する。
【００２８】
カラムデコーダ４は、メモリセルアレイ２のカラム方向を選択する。すなわち、ビット線ＢＬを選択し、例えば読み出し時には、選択したビット線ＢＬに対応するデータを出力するよう、ページバッファ５に命令する。
【００２９】
パス／フェイル回路６は、例えばベリファイ動作時において、メモリセルアレイ２のカラム毎に、ベリファイにパス（pass）したかフェイル（fail）したかの情報を保持する。そして、フェイル数を計数して、予め定められた不良許容量と比較する。
【００３０】
制御回路７は、ＮＡＮＤ型フラッシュメモリ１全体の動作を司る。すなわち、データの書き込み時、読み出し時、及び消去時等において、ロウデコーダ３、カラムデコーダ４、ページバッファ５、及びパス／フェイル回路６の動作を制御する。
【００３１】
＜ページバッファ、パス／フェイル回路、及びメモリセルアレイの詳細について＞  
次に、上記ページバッファ５、パス／フェイル回路６、及びメモリセルアレイ２の詳細について、図４を用いて説明する。図４は、ページバッファ５、パス／フェイル回路６、及びメモリセルアレイ２のブロック図である。
【００３２】
まずメモリセルアレイ２について説明する。メモリセルアレイ２は、１２８本（ｍ＝１２７）のビット線ＢＬを含む。このビット線ＢＬの本数は、あくまで説明を簡潔・簡略化するためのものであって、勿論、１２８本に限定されるものでは無く、実際の製品においては１２８本以上の多数であるのが通常である。そしてビット線ＢＬ０から順に、隣接する８本のビット線ＢＬが、１つのカラムという単位となる。本実施形態では１２８本のビット線ＢＬが含まれるので、１６個のカラムＣ０〜Ｃ１５が含まれる。そしてカラムＣｉ（ｉは０〜１５の整数）には、ビット線ＢＬ８ｉ〜ＢＬ（８ｉ＋７）が属することとなる。以下では、カラムＣ０〜Ｃ１５を区別しない場合には、単にカラムＣと呼ぶことにする。
【００３３】
１６個のカラムＣのうち、カラムＣ０〜Ｃ９が前述の通常データ領域となり、カラムＣ１０、Ｃ１１がＥＣＣデータ領域となり、カラムＣ１２、Ｃ１３がフラグデータ領域となり、カラムＣ１４、Ｃ１５がリダンダンシカラム領域となる。
【００３４】
次にページバッファ５について説明する。ページバッファ５は、カラムＣ０〜Ｃ１５にそれぞれ対応づけられた複数のセンスアンプ１０−０〜１０−１５を備えている。以下において、センスアンプ１０−０〜１０−１５を区別しない場合には、まとめてセンスアンプ１０と呼ぶことがある。
【００３５】
センスアンプ１０−ｉは、カラムＣｉすなわちビット線ＢＬ８ｉ〜ＢＬ（８ｉ＋７）に対応付けられ、データを保持する機能を有する（よってラッチ回路１０とも呼び得る）。そしてセンスアンプ１０−ｉは、データの読み出し時には、ビット線ＢＬ８ｉ〜ＢＬ（８ｉ＋７）に読み出されたデータをセンス・増幅し、これを一時的に保持する。そして、読み出されたデータをパス／フェイル回路６へ出力する。他方、データの書き込み時には、パス／フェイル回路６から与えられるプログラムデータを一時的に保持し、これをビット線ＢＬ８ｉ〜ＢＬ（８ｉ＋７）に転送する。またベリファイ時には、各ビット線ＢＬ８ｉ〜ＢＬ（８ｉ＋７）につきベリファイにパスしたか否かの情報を一時的に保持して、これをパス／フェイル回路６に転送する。
【００３６】
次にパス／フェイル回路６について説明する。パス／フェイル回路６は、ページバッファ５と同様に、カラムＣ０〜Ｃ１５にそれぞれ対応づけられた複数のラッチ回路２０−０〜２０−１５と、カウンタ２１及び比較器２２を有している。以下において、ラッチ回路２０−０〜２０−１５を区別しない場合には、まとめてラッチ回路２０と呼ぶことがある。
【００３７】
ラッチ回路２０−ｉはそれぞれ、センスアンプ１０−ｉに対応付けられている。すなわちラッチ回路２０−０〜２０−１５はそれぞれ、センスアンプ１０−０〜１０−１５に対応付けられている。ラッチ回路２０−ｉは、データの読み出し時には、センスアンプ１０−ｉからそれぞれ転送された８ビットの読み出しデータを一時的に保持する。そして、カラムデコーダ４によって選択されたラッチ回路２０−ｉのいずれかが、データ線ＤＬを介してホスト機器に読み出しデータを出力する。
【００３８】
データの書き込み時には、カラムデコーダ４によって選択されたラッチ回路２０−ｉは、ホスト機器からデータ線ＤＬを介して入力される、または制御回路７から与えられる、８ビットのプログラムデータを保持する。そして対応するセンスアンプ１０−ｉにプログラムデータを転送する。また、センスアンプ１０−ｉにおけるベリファイの結果得られるパス／フェイル情報（具体的には、例えばフェイル数）を保持する。そして、イネーブル信号ＥＮに基づいて、ラッチ回路２０−ｉは保持するフェイル数をカウンタ２１に出力する。フラグデータ領域であるカラムＣ１２、Ｃ１３に対応するラッチ回路２０−１２、２０−１３に対しては、例えば制御回路７から信号ＥＮ１がイネーブル信号ＥＮとして入力され、その他のカラムＣ０〜Ｃ１１、Ｃ１４、Ｃ１５に対応するラッチ回路２０−０〜２０−１１、２０−１４、２０−１５に対しては、例えば制御回路７から信号ＥＮ０がイネーブル信号ＥＮとして入力される。そしてイネーブル信号ＥＮ＝“Ｈ”とされたラッチ回路２０が、保持するフェイル数をカウンタ２１に出力する。フェイル数の転送時、信号ＥＮ１は常時“Ｈ”レベルとされ、信号Ｎ０は制御回路７によって“Ｈ”または“Ｌ”レベルに制御される。この点については後に詳述する。
【００３９】
なお、センスアンプ１０−ｉからラッチ回路２０−ｉに転送されるフェイル情報は、対応する８本のビット線ＢＬ８ｉ〜ＢＬ（８ｉ＋７）に存在する総フェイル数であっても良いし、またはいずれかにフェイルが存在する場合にフェイル数＝“１”とされる情報であっても良い。以下では後者の場合を例にして説明する。
【００４０】
カウンタ２１は、ラッチ回路２０から出力されるフェイル数を計数し、計数結果を比較器２２に出力する。
【００４１】
比較器２２は、例えば制御回路７から与えられる基準値と、カウンタ２１から与えられる計数結果とを比較する。基準値は、カラムＣ０〜Ｃ１５に許容される最大フェイル数（許容不良数）であり、信号ＥＮ０＝“Ｈ”の場合には基準値Ｎ０が与えられ、信号ＥＮ０＝“Ｌ”の場合には基準値Ｎ１（＜Ｎ０）が与えられる。そして比較結果を制御回路７に出力する。
【００４２】
なお、本実施形態では１つのカラムが８本のビット線を含んでいるが、８本に限定されるものでは無い。また、各カラムＣと各ビット線ＢＬとの対応は、図４の場合に限定されるものでは無く、適宜選択出来る。
【００４３】
＜データの読み出し動作について＞  
次に、上記構成のＮＡＮＤ型フラッシュメモリ１におけるデータの読み出し動作について説明する。図５は、データの読み出し時におけるＮＡＮＤセル８の回路図である。以下では、ワード線ＷＬ１に接続されたメモリセルトランジスタＭＴ１からデータが読み出される場合について説明する。
【００４４】
まず、センスアンプ１０が対応するカラムＣのビット線ＢＬをプリチャージし、ビット線ＢＬの電位をＶpre（例えば０．７Ｖ）とする。ソース線ＳＬの電圧は例えば０Ｖとされる。
【００４５】
更に、ロウデコーダ３はワード線ＷＬ１を選択し、選択ワード線ＷＬ１に読み出し電圧ＶＣＧＲを印加する。読み出し電圧ＶＣＧＲは、例えば図３に示したＶＡ、ＶＢ、ＶＣのいずれかであり、“Ａ”〜“Ｃ”読み出しのいずれを行うかによって変化する。更にロウデコーダ３は、非選択ワード線ＷＬ０、ＷＬ２〜ＷＬ３１に電圧ＶＲＥＡＤを印加する。電圧ＶＲＥＡＤは、保持するデータに関わらずメモリセルトランジスタＭＴをオン状態とする電圧である。更にロウデコーダ３は、セレクトゲート線ＳＧＤ、ＳＧＳに電圧ＶＳＧを印加する。電圧ＶＳＧは、選択トランジスタＳＴ１、ＳＴ２をオン状態とする電圧である。
【００４６】
以上の結果、非選択ワード線ＷＬ０、ＷＬ２〜ＷＬ３１に接続されたメモリセルトランジスタＭＴ０、ＭＴ２〜ＭＴ３１はオン状態となり、チャネルが形成される。また選択トランジスタＳＴ１、ＳＴ２もオン状態とされる。
【００４７】
そして、選択ワード線ＷＬ１に接続されたメモリセルトランジスタＭＴがオン状態となれば、ビット線ＢＬとソース線ＳＬとが電気的に導通状態となる。すなわち、ビット線ＢＬからソース線ＳＬへ電流が流れる。他方、オフ状態であれば、ビット線ＢＬとソース線ＳＬとは電気的に非導通状態となる。すなわち、ビット線ＢＬからソース線ＳＬへは電流は流れない。以上の動作により、全ビット線につき一括してデータが読み出される。
【００４８】
そして、ビット線ＢＬに流れる電流をセンスアンプ１０がセンスし、その電流量がある閾値Ｉthを越えたか否かによって、データを判別する。
【００４９】
上記読み出しの際、制御回路７は、カラムＣ１２、Ｃ１３から読み出されたフラグデータによって、読み出しシーケンスを変更する。一例として、カラムＣ１２、Ｃ１３にフラグデータとして“１”が書き込まれていれば、当該ページに対応するメモリセルトランジスタＭＴは２ビットデータを保持し、“０”が書き込まれていれば（フラグデータが書き込まれていなければ、と言うことも出来る）、１ビットデータを保持することが分かる。
【００５０】
そこで制御部７は、フラグデータが書き込まれていれば、下位ビットデータの読み出しを行い、上位ビットデータの読み出しは行わない。他方、フラグデータが書き込まれていれば、下位ビットデータだけでなく、上位ビットデータも読み出す。
【００５１】
＜データの書き込み動作について＞  
次に、書き込み動作について説明する。まず、書き込み動作の大まかな流れについて、図６を用いて説明する。図６は、書き込み動作の流れを示す状態遷移図である。
【００５２】
図示するように書き込み動作は、プログラム動作（図６では“prog”と示す）、プログラムベリファイ動作（図６では“pvfyA”、“pvfyB”、“pvfyC”と示す）、及びパス／フェイル検出動作（図６では“detectA_ALL”、“detectA_LM”、“detectB”、“detectC”と示す）の繰り返しである。プログラム動作は、メモリセルトランジスタＭＴの電荷蓄積層に電荷を注入することにより、メモリセルトランジスタＭＴの閾値を変動させる動作である。プログラムベリファイ動作は、プログラム動作の結果、メモリセルトランジスタＭＴが所望の閾値レベルに達したか否かを確認する動作である。所望の閾値に達すれば、プログラムベリファイにパスし、達していなければフェイルとなる。パス／フェイル検出動作は、プログラムベリファイ動作の結果、フェイル数が予め定められた不良許容数以下であったかどうかを確認する動作である。なおプログラムベリファイ動作は、次に繰り返されるプログラム動作と並行して実行可能である。
【００５３】
以下、上記プログラム動作、プログラムベリファイ動作、及びパス／フェイル検出動作の詳細について説明する。
【００５４】
＜プログラム動作＞  
図７は、プログラム動作時におけるＮＡＮＤセル８の回路図である。以下では、ワード線ＷＬ１に接続されたメモリセルトランジスタＭＴ１にデータをプログラムする場合について説明する。
【００５５】
まず、ホスト機器からデータ線ＤＬを介してプログラムデータがラッチ回路２０に格納される。なお、ラッチ回路２０−１２、２０−１３には、ＮＡＮＤ型フラッシュメモリ１内部で生成されたプログラムデータ、例えば制御回路７で生成されたフラグデータが、プログラムデータとして格納される。引き続き、ラッチ回路２０内のプログラムデータが、センスアンプ１０に転送される。
【００５６】
そしてセンスアンプ１０は、対応するカラムＣのビット線ＢＬに、プログラムデータを転送する。より具体的には、電荷蓄積層に電荷を注入することによりメモリセルトランジスタＭＴの閾値を上昇させる際には、ビット線ＢＬに書き込み電圧（例えば０Ｖ）を印加する。他方、電荷を注入しない際には、書き込み禁止電圧（例えばＶ１＞０Ｖとする）を印加する。
【００５７】
そして、ロウデコーダ３がワード線ＷＬ１を選択し、選択ワード線ＷＬ１に電圧ＶＰＧＭを印加し、非選択ワード線ＷＬ０、ＷＬ２〜ＷＬ３１に電圧ＶＰＡＳＳを印加する。電圧ＶＰＧＭは、電荷蓄積層に電荷を注入するための高電圧（例えば２０Ｖ程度）であり、ＶＰＡＳＳは、保持するデータに関わらずメモリセルトランジスタＭＴをオン状態とする電圧である。
【００５８】
更にロウデコーダ３は、セレクトゲート線ＳＧＤ、ＳＧＳに電圧Ｖ２、０Ｖをそれぞれ印加する。電圧Ｖ２は、ビット線ＢＬに書き込み電圧（０Ｖ）が印加されている場合には選択トランジスタＳＴ１をオンさせ、書き込み禁止電圧（Ｖ１）が印加されている場合には選択トランジスタＳＴ１をカットオフさせる電圧である。
【００５９】
以上の結果、ワード線ＷＬ０〜ＷＬ３１に接続された全メモリセルトランジスタＭＴ０〜ＭＴ３１にチャネルが形成される。そして、もしビット線ＢＬに書き込み電圧（０Ｖ）が印加されていれば、選択トランジスタＳＴ１はオン状態となり、メモリセルトランジスタＭＴ１のチャネルに書き込み電圧が転送される。その結果、メモリセルトランジスタＭＴ１では制御ゲートとチャネルとの間に大きな電位差が生じ、電荷が電荷蓄積層に注入される。他方、ビット線に書き込み禁止電圧Ｖ１が印加されていれば、選択トランジスタＳＴ１はオフ状態となり、メモリセルトランジスタＭＴ１のチャネルは電気的にフローティングとなる。そしてその電位は、制御ゲートとのカップリングにより、ほぼＶＰＧＭまで上昇する。その結果、制御ゲートとチャネルとの電位差が小さくなり、電荷の電荷蓄積層への注入は抑制される。  
＜プログラムベリファイ動作＞  
以上のプログラム動作の後、プログラムベリファイ動作が実行される。プログラムベリファイ動作は、図６に示すように、順次実行される“Ａ”ベリファイ（図６における“pvfyA”）、“Ｂ”ベリファイ（図６における“pvfyB”）、及び“Ｃ”ベリファイ（図６における“pvfyC”）を含む。
【００６０】
“Ａ”ベリファイは、読み出しレベルＶＡを用いたプログラムベリファイである。すなわち、図５において、プログラム動作時に選択されたワード線ＷＬに電圧ＶＡが印加されて（ＶＣＧＲ＝ＶＡ）、データが読み出される。そして、例えば“０１”データをプログラムすべきカラムにおいては、メモリセルトランジスタＭＴがオンすればフェイルと判断され、オフすればパスと判断される。ベリファイにパスしたカラムについては、それ以後、ビット線ＢＬは例えばある正電位に固定され、プログラムは実行されない。
【００６１】
同様にして“Ｂ”ベリファイ及び“Ｃ”ベリファイは、それぞれ読み出しレベルＶＢ、ＶＣを用いたプログラムベリファイである。すなわち、図５において、選択ワード線ＷＬに電圧ＶＢ、ＶＣが印加されて（ＶＣＧＲ＝ＶＢ、ＶＣ）、データが読み出される。
【００６２】
またセンスアンプ１０は、各ビット線ＢＬにつき、内部に有するラッチ回路にパス／フェイル情報を保持する。例えば、対応するビット線ＢＬがフェイルであった場合には、ラッチ回路に“１”を保持する。そしてプログラムベリファイの後、センスアンプ１０の各々は、対応する８本のビット線ＢＬのうち、１本でもフェイルがあれば、対応するラッチ回路２０に“１”を転送する。
【００６３】
なお前述のように、ラッチ回路２０に転送されるデータは“１”に限らず、例えば対応する８本のビット線ＢＬに存在する総フェイル数であっても良い。すなわち、８本のビット線ＢＬのうち４本がフェイルと判断されれば、センスアンプ１０は“４”を、対応するラッチ回路２０に転送しても良い。但し、以下ではいずれかのビット線ＢＬにフェイルがあった場合に“１”を転送する場合を例に説明する。
【００６４】
＜パス／フェイル検出動作＞  
次に、パス／フェイル検出動作について説明する。パス／フェイル検出動作とは、前述の通り、プログラムベリファイ動作の結果、フェイル数（フェイルカラム数、または総フェイルビット数）が、不良許容数以下であるかを判断する動作である。
【００６５】
図６に示すように、パス／フェイル検出動作は、順次実行される“Ａ”フェイル検出（図６における“detectA_ALL”）、フラグフェイル検出（図６における“detectA_LM”）、“Ｂ”フェイル検出（図６における“detectB”）、及び“Ｃ”フェイル検出（図６における“detectC”）を含む。
【００６６】
“Ａ”フェイル検出、“Ｂ”フェイル検出、及び“Ｃ”フェイル検出は、それぞれ“Ａ”ベリファイ、“Ｂ”ベリファイ、及び“Ｃ”ベリファイの結果得られたフェイル数が、不良許容数以下であるか否かを判断する動作である。
【００６７】
またフラグフェイル検出は、上記“Ａ”フラグ検出を、フラグデータを保持するカラムＣ１２、Ｃ１３についてのみ行う動作である。この際、その他のカラムＣ０〜Ｃ１１、Ｃ１４、Ｃ１５に存在するフェイルは考慮されない。
【００６８】
そして、“Ａ”フェイル検出及びフラグフェイルの検出の両方において、フェイル数が不良許容数以下になれば、それ以降、“Ａ”ベリファイは省略される。同様に、“Ｂ”フェイル検出におけるフェイル数が不良許容数以下になれば、それ以降“Ｂ”ベリファイは省略される。そして“Ｃ”フェイル検出におけるフェイル数が不良許容数以下になれば、書き込み動作が完了する。
【００６９】
＜＜パス／フェイル検出動作の詳細について＞＞  
上記パス／フェイル検出動作の詳細について、以下説明する。  
・“Ａ”フェイル検出、“Ｂ”フェイル検出、及び“Ｃ”フェイル検出について  
まず、“Ａ”〜“Ｃ”フェイル検出について、図４及び図８を用いて説明する。図８は、“Ａ”〜“Ｃ”フェイル検出の動作の流れを示すフローチャートである。
【００７０】
図示するように制御回路７は、信号ＥＮ０を“Ｈ”レベルとする（ステップＳ１０）。信号ＥＮ１は、少なくともパス／フェイル検出動作の期間は、常時“Ｈ”レベルである。その結果、ラッチ回路２０−０〜２０−１５の全てが、保持するパス／フェイル情報（本実施形態ではフェイル数）をカウンタ２１に出力する（ステップＳ１１）。そしてカウンタ２１は、ラッチ回路２０−０〜２０−１５から転送されたフェイル数を計数する（ステップＳ１２）。カウンタにおける計数結果をフェイル数Ｎfailと呼ぶ。フェイル数Ｎfailは、比較器２２に与えられる。
【００７１】
また制御回路７は、比較器２２に対して基準値Ｎ０を与える。そして比較器２２は、カウンタ２１から与えられたフェイル数Ｎfailと、制御回路７から与えられた基準値Ｎ０とを比較し、その比較結果を制御回路７に出力する（ステップＳ１４）。
【００７２】
比較の結果、フェイル数Ｎfailが基準値Ｎ０以下であれば（Ｎfail≦Ｎ０）、当該検出動作はパスとなる。すなわち、例えば“Ｂ”フェイル検出についてＮfail≦Ｎ０となれば、以降“Ｂ”ベリファイは省略される。また“Ｃ”フェイル検出についてＮfail≦Ｎ０となれば、この書き込み動作が完了する。なお“Ａ”フェイル検出についてＮfail≦Ｎ０となっても、後述するフラグフェイル検出にパスするまでは、“Ａ”ベリファイが繰り返される。
【００７３】
・フラグフェイル検出について
次に、フラグフェイル検出について図９を用いて説明する。図９は、フラグフェイル検出の動作の流れを示すフローチャートである。
【００７４】
図示するように制御回路７は、信号ＥＮ０を“Ｌ”レベルとする（ステップＳ２０）。先述の通り、信号ＥＮ１は“Ｈ”レベルである。その結果、ラッチ回路２０−１２、２０−１３のみがイネーブル信号ＥＮを“Ｈ”レベルとされ、保持するパス／フェイル情報をカウンタ２１に出力する（ステップＳ２１）。イネーブル信号ＥＮが“Ｌ”レベルとされたラッチ回路２０−０〜２０−１１、２０−１４、２０−１５は、保持するパス／フェイル情報を出力しない。
【００７５】
そしてカウンタ２１は、ラッチ回路２０−１２、２０−１３から転送されたフェイル数を計数する（ステップＳ２２）。そしてカウンタ２１は、その計数結果（フェイル数Ｎfail）を比較器２２に出力する。
【００７６】
また制御回路７は、比較器２２に対して基準値Ｎ１を与える。そして比較器２２は、カウンタ２１から与えられたフェイル数Ｎfailと、制御回路７から与えられた基準値Ｎ１とを比較し、その比較結果を制御回路７に出力する（ステップＳ２４）。
【００７７】
比較の結果、フェイル数Ｎfailが基準値Ｎ１以下であれば（Ｎfail≦Ｎ１）、当該検出動作がパスとなる。よって、以降、“Ａ”レベルへのプログラムは完了されたものとして、“Ａ”ベリファイは省略される。
【００７８】
＜＜パス／フェイル検出動作の具体例について＞＞  
次に、上記パス／フェイル検出動作の具体例について、以下説明する。まず、“Ａ”フェイル検出、“Ｂ”フェイル検出、及び“Ｃ”フェイル検出の場合について、図１０を用いて説明する。図１０は、パス／フェイル動作時におけるパス／フェイル回路６のブロック図である。以下では“Ａ”フェイル検出時において、Ｎ０＝“２”、カラムＣ０、Ｃ１３にフェイルが存在する場合を例に説明する。
【００７９】
図示するように、カラムＣ０、Ｃ１３にフェイルが存在するので、ラッチ回路２０−０、２０−１３に“１”が保持され、その他のラッチ回路２０−１〜２０−１２、２０−１４、２０−１５には“０”が保持されている。
【００８０】
そして制御回路７は、信号ＥＮ０を“Ｈ”レベルとし、また基準値Ｎ０＝“２”を比較器２２に出力する。すると、全ラッチ回路２０においてイネーブル信号ＥＮが“Ｈ”レベルとされ、各ラッチ回路２０の保持するデータ（“０”または“１”）がカウンタ２１に出力される。カウンタ２１は、ラッチ回路２０−０〜２０−１５から出力されたデータをカウントする。本例では、カウンタ２１におけるカウント結果、すなわちフェイル数Ｎfailは“２”となる。すると、比較器２２における比較の結果はＮfail＝Ｎ０となる。この結果を受けて制御回路７は、“Ａ”フェイル検出にパスしたことを認識する。
【００８１】
上記の例は、“Ｂ”フェイル検出及び“Ｃ”フェイル検出の場合も同様である。
【００８２】
次に、フラグフェイル検出の場合について図１１を用いて説明する。図１１はパス／フェイル動作時におけるパス／フェイル回路６のブロック図であり、一例としてＮ１＝“１”、カラムＣ０、Ｃ１３にフェイルが存在する場合を示している。
【００８３】
ラッチ回路２０−０〜２０−１５の保持するデータは、図１０の場合と同様である。図１０の場合と異なる点は、フラグフェイル検出の際には信号ＥＮ０が“Ｌ”レベルとされ、比較器２２に対して基準値Ｎ１が与えられる点である。
【００８４】
信号ＥＮ０＝“Ｌ”とされることで、ラッチ回路２０−０〜２０−１１、２０−１４、２０−１５はデータを出力せず、ラッチ回路２０−１２、２０−１３のみがデータをカウンタ２１に出力する。
【００８５】
よって、カウンタ２１におけるフェイル数Ｎfailは“１”となる。すると、比較器２２における比較の結果はＮfail＝Ｎ１となる。この結果を受けて制御回路７は、フェイル検出にパスしたことを認識する。つまり、“Ａ”レベルまでの書き込みが完了したことになる。
【００８６】
＜効果＞  
上記のように、本実施形態に係る半導体記憶装置であると、データの読み出し信頼性を向上出来る。本効果について、以下説明する。
【００８７】
近年、ＮＡＮＤ型フラッシュメモリでは、メモリセルトランジスタの微細化が進展している。そして微細化の進展に伴い、メモリセルトランジスタＭＴの書き込み特性が悪化することから、書き込み動作時の不良許容数を増やさざるを得ない状況にある。また、不良許容数を増やしてでも、書き込み速度の向上を優先させなければならない場合もある。その結果、この不良許容数と、破壊されたメモリセルトランジスタＭＴ数とを訂正可能な、ＥＣＣ訂正用のデータ（パリティ等、以下ＥＣＣデータと呼ぶ）のビット数も、大きくならざるを得ない。
【００８８】
書き込み動作時の不良許容数が増加していく状況において、外部から入力されるデータに対しては、先述のＥＣＣデータを十分に用意していれば問題は無い。しかし、ＥＣＣデータの増加は、当然ながらカラムの増加などによるチップ面積の増大や、ＥＣＣ訂正による動作速度の悪化という問題の原因となる。
【００８９】
また、メモリセルトランジスタＭＴが２ビット以上のデータを保持する多値ＮＡＮＤ型フラッシュメモリの場合には、メモリセルトランジスタＭＴが何ページまで書き込まれているかを表す情報（フラグデータ）が必要となる。このフラグデータは、ＮＡＮＤ型フラッシュメモリの内部でのみ使用されるデータである。このフラグデータは、例えば“１”であれば上位ページまで書き込まれており、“０”であれば上位ページまでは書き込まれている、という具合に識別出来る。
【００９０】
このように、データが上位ページまで書き込まれている場合と書き込まれていない場合では、データの読み出しシーケンスが異なる。例えば上位ページまで書き込まれているメモリセルトランジスタＭＴに対して、上位ページまで書き込まれていないメモリセルトランジスタＭＴの読み出しシーケンスを適用すると、読み出しデータは誤って判断される。
【００９１】
従って、フラグデータは非常に重要なデータであり、フラグデータについても訂正可能にしておく必要がある。そこで、このフラグデータを訂正するための冗長ビットを設ける方法が考えられる。本方法では、例えば８ビットに“０”を書き込み、読み出し時において４ビット以上が“０”であれば、フラグデータは“１”である、というように判断出来る。
【００９２】
以上のような事情においては、次の問題が生じ得る。ＮＡＮＤ型フラッシュメモリでは、プログラムベリファイ時において、フェイル数が不良許容数以下であるか否かの判断を、全カラムについて一括して行っている。
【００９３】
すると、フラグデータの情報量は１ビットに過ぎないから、フラグデータの訂正に必要な冗長フラグも含めてそれらがフェイルと判断されても、総フェイル数が不良許容数を下回る場合が生じる可能性がある。これは、不良許容数の増加に起因する。すると、プログラムベリファイにパスしても、その後の読み出し動作時においては正しいフラグデータ読み出すことが出来ず、誤読み出しの原因となる。これを解消するには、フラグデータ用の冗長ビットを増やすことが考えられる。しかし、このことは前述のようにチップ面積の増大や動作速度の低下の原因となり得る。
【００９４】
この点、本実施形態に係る構成であると、通常のデータやフラグデータも含めた全カラムについての不良許容数（基準値Ｎ０）と、フラグデータ（及びその冗長データ、以下、特に断らない限り両者をまとめて“フラグデータ”と呼ぶ）のみについての不良許容数（基準値Ｎ１）とを、別個に設定している。そして、全カラムに存在するフェイル数が基準値Ｎ０以下となるだけでなく、フラグデータに含まれるフェイル数が基準値Ｎ１以下となった場合に、フラグデータについての書き込みが完了する。
【００９５】
本動作を実現するため、パス／フェイル情報を保持するラッチ回路２０には、信号ＥＮ０、ＥＮ１が入力される。より具体的には、ラッチ回路２０に接続された配線によって信号ＥＮ０、ＥＮ１を供給し、これにより、フラグデータ用のカラムＣ１２、Ｃ１３のパス／フェイル情報を保持するラッチ回路２０−１２、２０−１３のみを選択（言い換えれば活性化）可能な構成としている。その結果、カウンタ２１ではフラグデータ領域のカラムＣ１２、Ｃ１３に存在するフェイル数のみをカウント出来る。
【００９６】
フラグデータ用の基準値Ｎ１としては、基準値Ｎ０よりも厳しい値（小さいフェイル数）が設定される。これにより、少なくともフラグデータのフェイル数が基準値Ｎ１を満たすまでプログラムを繰り返すことになる。そしてどうしても基準値Ｎ１を満たせない場合には、書き込みフェイルとなる。これにより、不良許容数が増大した場合であっても、フラグデータについての冗長ビットを必要以上に増やすことなく、フラグデータを正しく読み出すことが出来る。言い換えれば正しく書き込むことが出来る。従って、誤読み出しの発生を抑制出来、ＮＡＮＤ型フラッシュメモリの動作信頼性を向上出来る。
【００９７】
なお、フラグフェイル検出を含むパス／フェイル検出動作は、図６に示すように、プログラム動作と同時に行うことが出来る。従って、フラグフェイル検出を行うことは、動作速度に何ら影響を与えるものでは無い。
【００９８】
［第２の実施形態］  
次に、この発明の第２の実施形態に係る半導体記憶装置について説明する。本実施形態は、上記第１の実施形態におけるラッチ回路２０を、ホスト機器による外部入力によって選択可能とするものである。その他の構成は第１の実施形態と同様である。従って以下では、第１の実施形態と異なる点についてのみ説明する。
【００９９】
＜構成＞  
まず、本実施形態に係るＮＡＮＤ型フラッシュメモリ１の構成について説明する。本実施形態に係るＮＡＮＤ型フラッシュメモリ１は、第１の実施形態で説明した図１乃至図４の構成において、更に設定部９を備えている。図１２は、パス／フェイル回路６及び設定部９のブロック図である。
【０１００】
図示するように設定部９は、ラッチ回路２０−０〜２０−１５毎に設けられた選択用ラッチ回路３０−０〜３０−１５を備えている。選択用ラッチ回路３０−０〜３０−１５は、ホスト機器によって外部から入力された信号ＳＥＴを受け付けて、この信号ＳＥＴに応じて例えば“Ｈ”レベルまたは“Ｌ”レベルのデータを保持する。そして、保持するデータに応じてイネーブル信号ＥＮを生成し、それぞれ対応するラッチ回路２０−０〜２０−１５との間を接続する配線を介して、このイネーブル信号ＥＮを転送する。
【０１０１】
パス／フェイル回路６のラッチ回路２０−０〜２０−１５はそれぞれ、パス／フェイル検出動作時には、選択用ラッチ回路３０−０〜３０−１５から転送されるイネーブル信号ＥＮを受信する。そしてラッチ回路２０は、このイネーブル信号ＥＮに基づいて、第１の実施形態と同様の動作をする。つまり本実施形態は、上記第１の実施形態において制御信号７から与えられていたイネーブル信号ＥＮ（信号ＥＮ０、ＥＮ１）を、選択用ラッチ回路３０から供給するものである。その他の構成は第１の実施形態と同様であり、ラッチ回路２０がホスト機器及び制御回路７からプログラムデータを受信可能であること、センスアンプ１０から読み出しデータやパス／フェイル情報を受信可能であること、またパス／フェイル情報をカウンタ２１に出力可能であること等は、第１の実施形態で説明した通りである。
【０１０２】
＜動作＞  
次に、本実施形態に係るＮＡＮＤ型フラッシュメモリの動作について説明する。以下では、パス／フェイル検出動作時におけるラッチ回路２０及び選択用ラッチ回路３０の動作について説明する。図１３は、ラッチ回路２０及び選択用ラッチ回路３０の動作の流れを示すフローチャートである。
【０１０３】
図示するように、設定部９における選択用ラッチ回路３０の保持するデータが全て“Ｈ”レベルであれば（ステップＳ３０、ＹＥＳ）、選択用ラッチ回路３０は、パス／フェイル回路６におけるラッチ回路２０の全てに対するイネーブル信号ＥＮを“Ｈ”レベルとする（ステップＳ３１）。その結果、ラッチ回路２０は全てが選択状態となる。従って、全てのラッチ回路２０がカウンタ２１に対してパス／フェイル情報（具体例としてはフェイル数）を出力する。
【０１０４】
他方、いずれかの選択用ラッチ回路３０が“Ｌ”レベルを保持していれば（ステップＳ３０、ＮＯ）、“Ｈ”レベルを保持する選択用ラッチ回路３０のみがイネーブル信号ＥＮを“Ｈ”レベルとし、“Ｌ”レベルを保持する選択用ラッチ回路３０はイネーブル信号ＥＮを“Ｌ”レベルとする（ステップＳ３３）。その結果、ラッチ回路２０は一部のみが選択状態となる。そして、イネーブル信号ＥＮが“Ｈ”レベルとされたラッチ回路２０のみが、保持するパス／フェイル情報をカウンタ２１に出力する（ステップＳ３４）。
【０１０５】
上記のステップＳ３０で“ＹＥＳ”への分岐は、例えば第１の実施形態で説明した“Ａ”フェイル検出、“Ｂ”フェイル検出、及び“Ｃ”フェイル検出に相当する。他方、“ＮＯ”への分岐は、フラグフェイル検出に相当する。この場合、選択用ラッチ回路３０−１２、３０−１３が“Ｈ”レベルを保持し、その他の選択用ラッチ回路３０−０〜３０−１１、３０−１４、３０−１５は“Ｌ”レベルを保持する。これにより、フラグデータ領域であるカラムＣ１２、Ｃ１３に対応するラッチ回路２０−１２、２０−１３（図４参照）のみが、フェイル数をカウンタ２１に出力する。
【０１０６】
＜効果＞  
本実施形態に係るＮＡＮＤ型フラッシュメモリであると、第１の実施形態と同様の効果が得られる。更に、第１の実施形態で説明したパス／フェイル検出動作の自由度を向上出来る。本効果について、以下説明する。
【０１０７】
フラグデータがページデータの中でも非常に重要な情報であることは、第１の実施形態で説明した通りである。しかしながら、フラグデータ以外にも、ユーザによっては高精度に書き込みを実行したいという要望があり得る。より具体的には、ＥＣＣデータは他のデータよりも高精度に書き込みを実行したいような場合や、ページデータの先頭から数バイトには重要なデータがあり、これを高精度に書き込みたいような場合などである。
【０１０８】
本実施形態に係る構成であれば、このような場合にも対応することが出来る。すなわち本実施形態では、パス／フェイル情報を保持するラッチ回路２０毎に、選択用ラッチ回路３０を設けている。そして選択用ラッチ回路３０に保持された情報に応じてイネーブル信号ＥＮが生成され、イネーブル信号ＥＮによって、選択されたラッチ回路２０のみがパス／フェイル情報をカウンタ２１に出力する。つまり選択用ラッチ回路３０の保持する情報は、ラッチ回路２０の選択情報と言うことが出来る。そして選択用ラッチ回路３０は、ユーザ（ホスト機器）から与えられる信号ＳＥＴによってセット可能である。従って、ユーザの要求するカラムＣについてのフェイル数のみを取り出すことが出来る。そして、選択されたラッチ回路２０に応じて、比較器２２に入力される基準値（図１２の例では基準値Ｎ０、Ｎ１）を変えることで、選択したカラムＣ毎に不良許容数を変更出来る。つまり、データ毎に書き込み精度を変更することが出来る。
【０１０９】
なお、ラッチ回路３０に入力される信号ＳＥＴは、プログラムデータをページバッファ５にセットする場合と同様の方法で実行可能である。
【０１１０】
また、ラッチ回路２０に対してパス／フェイル情報を出力させる際には、選択用ラッチ回路３０に対する信号ＳＥＴの入力を必要としない構成であっても良い。例えば図１２に示すように、制御回路７によって信号ＡＬＬを供給させるようにしても良い。信号ＡＬＬが“Ｈ”レベルとされた際には、ラッチ回路２０は選択用ラッチ回路３０の保持内容にかかわらず、全てが選択状態（ＥＮ＝“Ｈ”）とされる。他方、ＡＬＬ＝“Ｌ”である場合には、ラッチ回路２０は選択用ラッチ回路３０の保持内容に応じて選択される。つまり、図１２において、信号ＡＬＬを転送する信号線とラッチ回路３０とラッチ回路２０とを接続する信号線とのクロスポイントがＯＲ回路として機能する。そして信号ＡＬＬと、ラッチ回路３０の保持内容とのＯＲ演算結果が、信号ＥＮとなるようにしても良い。
【０１１１】
［第３の実施形態］  
次に、この発明の第３の実施形態に係る半導体記憶装置について説明する。本実施形態は、上記第１の実施形態において、ラッチ回路２０からのパス／フェイル情報の読み出し時だけでなく、ラッチ回路２０へのプログラムデータの格納の際にもイネーブル信号ＥＮを用いるものである。以下では、第１の実施形態と異なる点についてのみ説明する。
【０１１２】
＜構成＞  
まず、本実施形態に係るＮＡＮＤ型フラッシュメモリ１の構成について説明する。本実施形態に係るＮＡＮＤ型フラッシュメモリ１は、第１の実施形態で説明した図１乃至図４の構成において、更にデータバッファ４０を備えている。図１４は、パス／フェイル回路６及びデータバッファ４０のブロック図である。
【０１１３】
図示するようにデータバッファ４０は、ラッチ回路２０−０〜２０−１５毎に設けられたデータ用ラッチ回路４１−０〜４１−１５を備えている。データ用ラッチ回路４１−１２、４１−１３以外のデータ用ラッチ回路４１は、データの書き込み時には、ホスト機器からデータ線ＤＬを介して入力されるプログラムデータを、一時的に保持する。他方、データの読み出し時には、ラッチ回路２０から転送された読み出しデータを一時的に保持し、この読み出しデータを、データ線ＤＬを介してホスト機器に出力する。
【０１１４】
すなわちデータバッファ４０は、フラグデータ領域に対応するデータ用ラッチ回路４１−０〜４１−１５を除いては、ホスト機器に対する入出力データの一時的なバッファとして機能する。なお、データ用ラッチ４１−０〜４１−１５を特に区別しない場合には、単にデータ用ラッチ４１と呼ぶ。
【０１１５】
パス／フェイル回路６のカウンタ２１は、データの書き込み時において、第１の実施形態で説明された機能に加えて、ＮＡＮＤ型フラッシュメモリ１内部で生成されたプログラムデータ（例えば制御回路７で生成されたフラグデータ）を受け付けて、一時的に保持することが可能である。そして、受け付けたデータをラッチ回路２０に転送可能とされている。
【０１１６】
またラッチ回路２０は、データの書き込み時には、第１の実施形態で説明された機能に加えて、プログラムデータをデータ用ラッチ４１またはカウンタ２１から受信し、一時的に保持した後、ページバッファ５に転送することが可能とされている。この際ラッチ回路２０は、イネーブル信号ＥＮが“Ｈ”レベルとされることにより、データを内部に取り込み、保持可能となる。
【０１１７】
＜動作＞  
次に、本実施形態に係るＮＡＮＤ型フラッシュメモリの動作について説明する。以下では、ページバッファ５にプログラムデータを転送する際におけるパス／フェイル回路６及びデータバッファ４０の動作について説明する。パス／フェイル検出動作時の動作は第１の実施形態と同様である。図１５は、パス／フェイル回路６及びデータバッファ４０の動作の流れを示すフローチャートである。
【０１１８】
図示するように、まず、ホスト機器から入力されたプログラムデータ（ＥＣＣデータを含む）が、データ線ＤＬを介してデータバッファ４０のデータ用ラッチ回路４１−０〜４１−１１、４１−１４、４１−１５に転送される（ステップＳ４０）。引き続き、制御回路７が信号ＥＮ０＝“Ｈ”とする（ステップＳ４１）。信号ＥＮ１は常時“Ｈ”レベルであるから、全ラッチ回路２０においてイネーブル信号ＥＮが“Ｈ”レベルとされる。つまり全ラッチ回路２０が選択状態となる。従って、ラッチ回路２０−０〜２０−１５は、データ用ラッチ回路４１−０〜４１−１５に保持されているデータを内部に取り込み保持する（ステップＳ４２）。この際、データ用ラッチ回路４１−１２、４１−１３にはホスト機器からのデータは転送されていないので、ラッチ回路２０−０〜２０−１１、２０−１４、２０−１５にのみプログラムデータが保持される。この様子を図１６に示す。図示するように、データ用ラッチ回路４１−０〜４１−１１、４１−１４、４１−１５から、ラッチ回路２０−０〜２０−１１、２０−１４、２０−１５にプログラムデータが転送される。
【０１１９】
引き続き制御回路７は、信号ＥＮ０を“Ｌ”レベルとする（ステップＳ４３）。その結果、フラグデータ領域に対応するカラムＣ１２、Ｃ１３についてのラッチ回路２０−１２、２０−１３のみが選択状態となる。また制御回路７は、カウンタ２１に対してフラグデータを入力し、カウンタ２１がフラグデータをラッチ回路２０に対して出力する（ステップＳ４４）。制御回路７がカウンタ２１にフラグデータを保持させるタイミングは、ステップＳ４０〜Ｓ４４のいずれであっても良いが、カウンタ２１がフラグデータを出力するタイミングは、信号ＥＮ０が“Ｌ”レベルとされるタイミングと同時、またはそれ以降である。
【０１２０】
すると、選択状態とされたラッチ回路２０−１２、２０−１３のみが、カウンタ２１から与えられるフラグデータを内部に取り込み、保持する。この様子を図１７に示す。図示するように、フラグデータＦＤが、ラッチ回路２０−１２、２０−１３に取り込まれる。
【０１２１】
以上により、ラッチ回路２０−０〜２０−１５の全てに、必要なプログラムデータが格納される。よってラッチ回路２０−０〜２０−１５は、保持するプログラムデータをページ単位でページバッファ５に転送する（ステップＳ４６）。以上により、プログラムデータのページバッファ５への転送が完了する。
【０１２２】
＜効果＞  
本実施形態に係るＮＡＮＤ型フラッシュメモリであると、第１の実施形態と同様の効果が得られる。更に、データの高速な書き込みが可能となる。本効果について、以下説明する。
【０１２３】
パス／フェイル回路６内のラッチ回路２０は、パス／フェイル検出動作時においてパス／フェイル情報を保持するだけでなく、データ線ＤＬ（入出力線、Ｉ／Ｏ線）を介して与えられるプログラムデータの保持用としても用いられる。例えば、プログラム動作中にはパス／フェイル情報を格納し、プログラム動作の前にはこれからプログラムすべきデータを格納する。この際、プログラムデータはデータバッファ４０を介してラッチ回路２０に転送される。すると、データバッファ４０からラッチ回路２０にプログラムデータが転送された時点で、データバッファ４０は空となり、次のデータを受け付け可能となる。つまり、まだプログラムが完了していない段階で、次のデータ入力を受け付けることが出来る。これはキャッシュ動作として知られている。
【０１２４】
この点、フラグデータもその他のデータと同様にデータ線ＤＬを介してデータバッファ４０を介して入力する場合、次のような問題が発生する可能性がある。すなわち、ＮＡＮＤ型フラッシュメモリ１にプログラムデータを入力するには、まずホスト機器から与えられるプログラムデータ（ＥＣＣデータを含む）を、データ線ＤＬを用いてデータバッファ４０に入力し、引き続きパス／フェイル回路６のラッチ回路２０に転送する。次に、再度データ線ＤＬを用いてフラグデータをデータバッファ４０に入力し、引き続きパス／フェイル回路６のラッチ回路２０に転送する。このように、パス／フェイル回路６のラッチ回路２０に対するデータ入力は、２段階にわたって行われる。つまり、ホスト機器からのプログラムデータをパス／フェイル回路６に転送しただけでは、ＮＡＮＤ型フラッシュメモリ１は相変わらずビジー（busy）状態（データ受け付けが不可能な状態）であり、フラグデータの転送まで完了しなければレディ（ready）状態（データ受け付けが可能な状態）となることが出来ない。従って、データの入力に時間がかかる。
【０１２５】
しかし、本実施形態に係る構成であると、データ線ＤＬを用いずに、カウンタ２１からフラグデータをラッチ回路２０−１２、２０−１３に入力している。従って、外部からのプログラムデータのパス／フェイル回路６への転送が完了した時点で、ＮＡＮＤ型フラッシュメモリ１はレディ状態となることが出来る。従って、高速なデータ入力が可能となり、ＮＡＮＤ型フラッシュメモリの動作速度を向上出来る。
【０１２６】
以上のように、この発明の第１乃至第３の実施形態によれば、ロウ及びカラムＣ０〜Ｃ１５に関連付けられた、データ保持可能な複数のメモリセルＭＴと、カラムＣ０〜Ｃ１５毎に対応付けて設けられ、対応するカラムに対する書き込みデータまたは読み出しデータを保持可能な、複数のラッチ回路２０とを具備し、ラッチ回路２０は選択的に活性化され、活性化されたラッチ回路２０はデータを取り込み可能またはデータを出力可能とされる。
【０１２７】
そして第１、第２の実施形態では、第１閾値Ｎ０と、第１閾値Ｎ０と異なる第２閾値Ｎ１とを基準にして比較動作を行う比較器２２を更に備える。またカラムは第１カラムＣ０〜Ｃ１１、Ｃ１４、Ｃ１５と第２カラムＣ１２、Ｃ１３とを含み、ラッチ回路２０は、第１カラムＣ０〜Ｃ１１、Ｃ１４、Ｃ１５に対応付けられた第１ラッチ回路２０−０〜２０−１１、２０−１４、２０−１５と、第２カラムＣ１２、Ｃ１３に対応付けられた第２ラッチ回路２０−１２、２０−１３を含む。比較器２２は、第１ラッチ回路２０−０〜２０−１１、２０−１４、２０−１５が活性化されている際には、第１閾値Ｎ０を基準にして比較動作を行い、第２ラッチ回路２０−１２、２０−１３が活性化され且つ第１ラッチ回路２０−０〜２０−１１、２０−１４、２０−１５が非活性の際には、第２閾値Ｎ１を基準にして比較動作を行う。
【０１２８】
更に第１、第２の実施形態では、第２カラムＣ１２、Ｃ１３は、メモリセルＭＴが保持する情報量を示すフラグデータを保持し、第１カラムＣ０〜Ｃ１１、Ｃ１４、Ｃ１５は、フラグデータ以外のデータを保持する。そしてデータの書き込み時においてラッチ回路２０は、対応するカラムＣ０〜Ｃ１５についてのプログラムベリファイの結果を保持し、比較器２２は、活性化されたラッチ回路２０−０〜２０−１５から出力されるプログラムベリファイのフェイル数Ｎfailと、第１、第２閾値Ｎ０、Ｎ１とを比較する。
【０１２９】
上記の構成により、同一ページに含まれる複数のデータブロックにつき、ベリファイのパス／フェイルを異なる閾値で判断出来る。例えば第２カラムＣ１２、Ｃ１３にフラグデータを保持させた場合には、フラグデータについてのパス／フェイルの判定閾値をその他のデータについてよりも、より厳しくすることが出来る。そして本効果を得るためには、特にリダンダンシカラムを増やす必要も無い。従って、面積増加を招くことなく、ＮＡＮＤ型フラッシュメモリ１における書き込み信頼性を向上させることが出来、その結果誤読み出しの発生を抑制出来る。
【０１３０】
また第３の実施形態では、外部から入力された第１書き込みデータを一時的に保持する第１データ保持部４０−０〜４０−１１、４０−１４、４０−１５と、内部で生成された第２書き込みデータを一時的に保持する第２データ保持部２１とを更に備え、活性化されたラッチ回路２０−０〜２０−１５は、第１書き込みデータと第２書き込みデータのいずれかをラッチする。
【０１３１】
本構成によれば、ＮＡＮＤ型フラッシュメモリ１を制御するホスト機器との間でデータの授受を行うＩ／Ｏ線（データ線ＤＬ）を用いることなく、第２書き込みデータをラッチ回路２０に入力出来る。従って、Ｉ／Ｏ線の占有頻度を低減させることが出来、特にキャッシュ動作時においてＮＡＮＤ型フラッシュメモリ１の動作速度を向上出来る。
【０１３２】
なお、上記第１乃至第３の実施形態では、フラグデータはメモリセルトランジスタＭＴに対して“Ａ”レベルを用いて書き込まれる場合を例に用いて説明した。しかし、“Ｂ”レベルや“Ｃ”レベルを用いて書き込まれる場合であっても良い。例えば“Ｂ”レベルを用いる場合には、図６において、“Ｂ”フェイル検出の後に、読み出しレベルとして電圧ＶＢを用いて前述のフラグフェイル検出を行えば良い。この場合、“Ｂ”フェイル検出とフラグフェイル検出との両方においてフェイル数が不良許容数以下になれば、以降、“Ｂ”ベリファイは省略される。また“Ｃ”レベルを用いる場合には、図６において、“Ｃ”フェイル検出の後に、読み出しレベルとして電圧ＶＣを用いて前述のフラグフェイル検出を行えば良い。この場合、“Ｃ”フェイル検出とフラグフェイル検出との両方においてフェイル数が不良許容数以下になれば、書き込み動作が完了する。勿論、メモリセルトランジスタＭＴは２ビット（４値）だけでなく、３ビット（８値）や４ビット（１６値）のデータを保持可能とされても良い。フラグデータも同様である。
【０１３３】
また、第１の実施形態において、ラッチ回路２０−１２、２０−１３に対応するカラムＣ１２、Ｃ１３が保持するデータはフラグデータである場合を例に説明した。しかし、ページ内において重要なデータであって、最大欠陥許容数に対する制約の大きいデータであれば、フラグデータに限定されるものでは無い。例えばＥＣＣデータであっても良い。このことは第２、第３の実施形態でも同様である。例えば第３の実施形態においてカウンタ２１から入力されるデータはフラグデータに限らず、ＮＡＮＤ型フラッシュメモリ１内部で生成されるデータであれば限定されるものでは無い。
【０１３４】
また第１、第２の実施形態では、ページデータをフラグデータとそれ以外の２種類に分けて、それぞれについて比較器２２における基準値を設定する場合について説明した。しかし、３種類以上に分け、そしてそれぞれについて基準値を設けても良い。そしていくつかの基準値が同じ値となる場合があっても良い。この場合、例えばイネーブル信号ＥＮとして、信号ＥＮ０、ＥＮ１に加えて更なる信号を用いても良い。
【０１３５】
更に第２の実施形態においては、選択用ラッチ回路３０に格納したデータと、ラッチ回路３０内のデータとを例えばＡＮＤ演算する構成であっても良い。この場合、ＡＮＤ演算の結果、フラグ用のラッチ回路２０−１２、２０−１３においてのみフェイル数が残り、その他のラッチ回路２０−０〜２０−１１、２０−１４、２０−１５内のデータは“０”となる。従って、全ラッチ回路２０がデータをカウンタ２１に出力した際に、カウンタではフラグ用のカラムにおけるフェイル数のみをカウント出来る。このような方法であっても、ラッチ回路２０を選択的に活性化出来る。
【０１３６】
更に第１乃至第３の実施形態では、フラグデータがリダンダンシカラムに置き換えられた場合にも適用可能である。この場合、フラグフェイル検出はリダンダンシカラムについて行われ、またカウンタ２１からのフラグデータの転送は、リダンダンシカラムに対応するラッチ回路２０に対して行われる。
【０１３７】
更に第１、第２の実施形態ではプログラムベリファイ時の動作を例に説明したが、消去動作時に行う消去ベリファイ時にも適用出来る。
【０１３８】
また、第３の実施形態は第２の実施形態に適用することも出来る。すなわち、第３の実施形態で説明した図１４の構成において、ラッチ回路２０−０〜２０−１５のイネーブル信号ＥＮを、ラッチ回路３０−０〜３０−１５及び／または信号ＡＬＬによって制御しても良い。そして、複数のデータをカウンタ２１から各ラッチ回路２０に転送しても良い。例えば、データバッファ４０からデータを転送した後、ラッチ回路３０によって第１のラッチ回路２０を選択し、カウンタ２１から第１のデータを第１のラッチ回路２０に転送し、次にラッチ回路３０によって第２のラッチ回路２０を選択し、カウンタ２１から第２のデータを第２のラッチ回路２０に転送する、という方法を用いても良い。
【０１３９】
また、第３の実施形態は第１、第２の実施形態を前提とすることなく、独立して実施することも可能である。すなわちパス／フェイル回路６は、、パス／フェイル検出動作時は従来と同様の動作を行い、ラッチ回路２０へのデータ転送時のみ、ラッチ回路２０がイネーブル信号ＥＮに基づいて動作するようにしても良い。
【０１４０】
また、上記第１乃至第３の実施形態ではＮＡＮＤ型フラッシュメモリの場合を例に挙げたが、例えばＮＯＲ型、ＤＩＮＯＲ型、ＡＮＤ型フラッシュメモリであっても良い。またフラッシュメモリに限らず、磁気抵抗素子をメモリセルに用いた磁気ランダムアクセスメモリ（Magnetic Random Access Memory）や、可変抵抗素子を用いたＲｅＲＡＭ（Resistance Random Access Memory）等、半導体メモリ全般に適用可能である。特に、フラグデータを用いる場合には、１つのメモリセルが２ビット以上のデータを保持可能な半導体メモリ全般に適用出来る。
【０１４１】
なお、本願発明は上記実施形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で種々に変形することが可能である。更に、上記実施形態には種々の段階の発明が含まれており、開示される複数の構成要件における適宜な組み合わせにより種々の発明が抽出されうる。例えば、実施形態に示される全構成要件からいくつかの構成要件が削除されても、発明が解決しようとする課題の欄で述べた課題が解決でき、発明の効果の欄で述べられている効果が得られる場合には、この構成要件が削除された構成が発明として抽出されうる。
【符号の説明】
【０１４２】
１…フラッシュメモリ、２…メモリセルアレイ、３…ロウデコーダ、４…カラムデコーダ、５…ページバッファ、６…パス／フェイル回路、７…制御回路、８…ＮＡＮＤセル、９…設定部、１０−０〜１０−１５、２０−０〜２０−１５、３０−０〜３０−１５、４１−０〜４１−１５…ラッチ回路、２１…カウンタ、２２…比較器、４０…データバッファ
【図１】
2011123964.tif 000003
【図２】
2011123964.tif 000004
【図３】
2011123964.tif 000005
【図４】
2011123964.tif 000006
【図５】
2011123964.tif 000007
【図６】
2011123964.tif 000008
【図７】
2011123964.tif 000009
【図８】
2011123964.tif 000010
【図９】
2011123964.tif 000011
【図１０】
2011123964.tif 000012
【図１１】
2011123964.tif 000013
【図１２】
2011123964.tif 000014
【図１３】
2011123964.tif 000015
【図１４】
2011123964.tif 000016
【図１５】
2011123964.tif 000017
【図１６】
2011123964.tif 000018
【図１７】
2011123964.tif 000019