(57)【特許請求の範囲】
【請求項１】
読み出し及び書き込みをパラレルに行う第１の単位のメモリセルを有するメモリセルアレイと、ｎ（ｎは、２以上の自然数）個のセンスアンプと、前記ｎ個のセンスアンプに対応するｎ個の検知回路と、前記メモリセルアレイから読み出される前記第１の単位のデータをｚ（ｚは、自然数）個の第２の単位のデータに分け、各第２の単位のデータについて前記書き込みが完了していないフェイルビットを累積するアキュムレータと、前記書き込み後に前記フェイルビットを検知する動作を制御する制御回路とを具備し、
前記制御回路は、
各第２の単位のデータについて、そのうちの第３の単位のデータを前記ｎ個のセンスアンプのうちの１つに記憶させ、前記ｎ個のセンスアンプのうちの１つから、各第２の単位のデータを１ビットずつ、合計ｚビットずつパラレルに読み出し、前記ｎ個の検知回路のうちの１つを用いて前記ｚビットから前記フェイルビットを検知し、前記ｚビットを前記アキュムレータに転送することにより、各第２の単位のデータについて前記フェイルビットを累積する
不揮発性半導体メモリ。
【請求項２】
前記ｚビットをシリアルデータに変換するシリアル変換回路をさらに具備し、
前記ｚビットは、前記シリアルデータに変換された後に前記アキュムレータに転送され、前記シリアルデータを前記アキュムレータに転送している最中に、前記ｎ個のセンスアンプのうちの１つから前記ｚビットを読み出し、前記ｚビットから前記フェイルビットを検知する次の動作が行われる
請求項１に記載の不揮発性半導体メモリ。
【請求項３】
前記ｎ個のセンスアンプの全てからデータを読み出した後、前記フェイルビットが所定値以上の第２の単位のデータについては、前記書き込みの未完了と判断し、前記フェイルビットが所定値よりも少ない第２の単位のデータについては、前記書き込みの完了と判断する請求項１又は２に記載の不揮発性半導体メモリ。
【請求項４】
前記フェイルビットが所定値以上になった第２の単位のデータについては、その後、前記フェイルビットの累積を行わない請求項１乃至３のいずれか１項に記載の不揮発性半導体メモリ。
【請求項５】
前記第３の単位は、偶数バイト及び奇数バイトを備える２バイトであり、前記ｎ個のセンスアンプのうちの１つからは、１６回の読み出しが繰り返して行われる請求項１乃至４のいずれか１項に記載の不揮発性半導体メモリ。
【請求項６】
読み出し及び書き込みをパラレルに行う第１の単位のメモリセルを有するメモリセルアレイと、ｎ（ｎは、２以上の自然数）個のセンスアンプと、前記ｎ個のセンスアンプに対応するｎ個の検知回路と、前記メモリセルアレイから読み出される前記第１の単位のデータをｚ（ｚは、自然数）個の第２の単位のデータに分け、各第２の単位のデータについて前記書き込みが完了していないフェイルバイトを累積するアキュムレータと、前記書き込み後に前記フェイルバイトを検知する動作を制御する制御回路とを具備し、
前記制御回路は、
各第２の単位のデータについて、そのうちの第３の単位のデータを前記ｎ個のセンスアンプのうちの１つに記憶させ、前記ｎ個のセンスアンプのうちの１つから、各第２の単位のデータのうちの１バイトをワイヤードオア接続することにより１ビットずつ、合計ｚビットずつパラレルに読み出し、前記ｎ個の検知回路のうちの１つを用いて前記ｚビットから前記フェイルバイトを検知し、前記ｚビットを前記アキュムレータに転送することにより、各第２の単位のデータについて前記フェイルバイトを累積する
不揮発性半導体メモリ。
【発明の詳細な説明】
【技術分野】
【０００１】
実施形態は、不揮発性半導体メモリに関する。
【背景技術】
【０００２】
不揮発性半導体メモリの書き込み動作においては、書き込みと、書き込み後にフェイルビット数が所定値よりも少ないか否かを検知するベリファイとが繰り返し行なわれる。しかし、メモリセルの微細化によりフェイルビット数が増えると、この繰り返し回数も増加するため、これが書き込み動作の高速化の支障となる。
【０００３】
また、メモリセルの多値化により１つのメモリセルに書き込むビット数が増えると、各ビットの閾値分布を狭い範囲に収めなければならない。そのためには、メモリセルの閾値を少しずつシフトさせる制御が必要となり、これも、書き込みとベリファイの繰り返し回数を増加させる。
【０００４】
このように、書き込みとベリファイの繰り返し回数が増加するなか、フェイルビット数を高速に検知することは、書き込み動作の高速化にとって重要なファクターとなる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００８−４１７８号公報
【特許文献２】特開２０１０−１７６７６１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
実施形態は、フェイルビット数を高速に検知する技術を提案する。
【課題を解決するための手段】
【０００７】
実施形態によれば、不揮発性半導体メモリは、読み出し及び書き込みをパラレルに行う第１の単位のメモリセルを有するメモリセルアレイと、ｎ（ｎは、２以上の自然数）個のセンスアンプと、前記ｎ個のセンスアンプに対応するｎ個の検知回路と、前記メモリセルアレイから読み出される前記第１の単位のデータをｚ（ｚは、自然数）個の第２の単位のデータに分け、各第２の単位のデータについて前記書き込みが完了していないフェイルビットを累積するアキュムレータと、前記書き込み後に前記フェイルビットを検知する動作を制御する制御回路とを備え、前記制御回路は、各第２の単位のデータについて、そのうちの第３の単位のデータを前記ｎ個のセンスアンプのうちの１つに記憶させ、前記ｎ個のセンスアンプのうちの１つから、各第２の単位のデータを１ビットずつ、合計ｚビットずつパラレルに読み出し、前記ｎ個の検知回路のうちの１つを用いて前記ｚビットから前記フェイルビットを検知し、前記ｚビットを前記アキュムレータに転送することにより、各第２の単位のデータについて前記フェイルビットを累積する。
【図面の簡単な説明】
【０００８】
【図１】不揮発性半導体メモリの基本構成を示す図。
【図２】センスアンプを示す図。
【図３】ローカルカラムデコーダを示す図。
【図４】検知回路を示す図。
【図５】シリアル変換回路及びアキュムレータを示す図。
【図６】センスアンプの構成例を示す図。
【図７】センスアンプからのデータ読み出し方法を示す図。
【図８】データ転送の例を示す図。
【図９】シリアル変換回路の構成例を示す図。
【図１０】センスアンプからのデータ読み出し方法を示す図。
【図１１】センスアンプの構成例を示す図。
【図１２】フェイルビットの検知動作を示す図。
【図１３】フェイルビットの検知動作を示す図。
【図１４】フェイルビットの検知動作を示す図。
【図１５】センスアンプからのデータ読み出し方法を示す図。
【図１６】データ転送の例を示す図。
【図１７】シリアル変換回路の構成例を示す図。
【図１８】フェイルビットスキャン方法を示すフローチャート。
【図１９】データ転送の例を示す図。
【図２０】シリアル変換回路の構成例を示す図。
【図２１】フェイルビットスキャン動作を示す波形図。
【図２２】フェイルビットスキャン方法を示すフローチャート。
【図２３】フェイルバイトの検知動作を示す図。
【図２４】フェイルバイトの検知動作を示す図。
【図２５】センスアンプからのデータ読み出し方法を示す図。
【図２６】適用例としてのＮＡＮＤフラッシュメモリを示す図。
【図２７】メインカラムデコーダの構成例を示す図。
【発明を実施するための形態】
【０００９】
以下、図面を参照しながら実施形態を説明する。
【００１０】
図１は、実施形態の不揮発性半導体メモリの基本構成を示している。
【００１１】
メモリセルアレイＭＡに対する書き込み動作は、制御回路１０により制御される。
【００１２】
書き込み動作は、第１の単位で行なわれる。即ち、書き込み及びベリファイ（ベリファイリード）は、第１の単位の複数ビットに対してパラレルに行なわれる。第１の単位は、例えば、ＮＡＮＤフラッシュメモリの場合、ページである。１ページは、例えば、８キロバイトである。
【００１３】
第１の単位は、複数の第２の単位を備える。第２の単位は、第１の単位よりも小さく、エラー訂正を行う単位となる。例えば、第２の単位内のフェイルビット数が所定値よりも少ないときは、ＥＣＣ（Error-correcting code）によりエラー訂正可能であるため、書き込み動作を終了することができる。
【００１４】
ここでは、第２の単位をセグメントと称することにする。１セグメントは、例えば、５１２バイトである。
【００１５】
書き込み後のベリファイにおいて、メモリセルアレイＭＡからパラレルに読み出された第１の単位は、第２の単位ごとに、ローカルカラムデコーダＬＣＤ０，ＬＣＤ１，ＬＣＤ３，ＬＣＤ４，…ＬＣＤｎ−２，ＬＣＤｎ−１内のセンスアンプＳＡ０，ＳＡ１，ＳＡ２，ＳＡ３，…ＳＡｎ−２，ＳＡｎ−１に一時的に記憶される。
【００１６】
また、第２の単位は、第３の単位×ｎ（ｎは、２以上の自然数）に等しく、センスアンプＳＡ０，ＳＡ１，ＳＡ２，ＳＡ３，…ＳＡｎ−２，ＳＡｎ−１の各々には、第２の単位の一部を構成する第３の単位が記憶される。
【００１７】
例えば、第２の単位が５１２バイトのとき、第３の単位は、２バイトであり、ｎは、２５６である。
【００１８】
ここで、図２を参照しつつ、センスアンプＳＡ０，ＳＡ１，ＳＡ２，ＳＡ３，…ＳＡｎ−２，ＳＡｎ−１に記憶される第２の単位の例について説明する。
【００１９】
この例では、第１の単位（１ページ）を８キロバイトとし、第２の単位（１セグメント）を５１２バイトとし、第３の単位を２バイトとする。この時、１ページ内のセグメント数は、１６個であり、１つのセンスアンプＳＡｉ（ｉ＝０〜ｎ−１）は、３２バイト（＝第３の単位×セグメント数）となる。
【００２０】
アドレスアサインの例としては、セグメントＳｅｇ０は、カラムアドレスＣ０〜Ｃ５１１、セグメントＳｅｇ１は、カラムアドレスＣ５１２〜Ｃ１０２３、…セグメントＳｅｇ１５は、カラムアドレスＣ７８６１〜Ｃ８１９１である。
【００２１】
但し、１つのカラムアドレスＣｊ（ｊ＝０〜８１９１）は、第４の単位、本例では、１バイト（８ビット）を備えるものとする。このような例としては、１ページ内に１つのカラムアドレスにより選択されるメモリセルが８個存在するメモリ（２値又は多値を問わない）を挙げることができる。
【００２２】
セグメントＳｅｇ０を例にとると、カラムアドレスＣ０のデータ（１バイト）は、偶数バイト（Even byte）として、センスアンプＳＡ０に記憶され、カラムアドレスＣ１のデータ（１バイト）は、奇数バイト（Odd byte）として、センスアンプＳＡ０に記憶される。また、カラムアドレスＣ２のデータ（１バイト）は、偶数バイトとして、センスアンプＳＡ１に記憶され、カラムアドレスＣ３のデータ（１バイト）は、奇数バイトとして、センスアンプＳＡ１に記憶される。
【００２３】
同様に、カラムアドレスＣ５１０のデータ（１バイト）は、偶数バイトとして、センスアンプＳＡｎ−１に記憶され、カラムアドレスＣ５１１のデータ（１バイト）は、奇数バイトとして、センスアンプＳＡｎ−１に記憶される。
【００２４】
センスアンプＳＡ０，ＳＡ１，…ＳＡｎ−１に記憶されたカラムアドレスＣ０〜Ｃ５１１のデータ（５１２バイト）は、ティアーＴｉｅｒ０とし、センスアンプＳＡ０、ＳＡ１，…ＳＡｎ−１に記憶されたカラムアドレスＣ５１２〜Ｃ１０２３のデータ（５１２バイト）は、ティアーＴｉｅｒ１とする。
【００２５】
同様に、センスアンプＳＡ０，ＳＡ１，…ＳＡｎ−１に記憶されたカラムアドレスＣ７６８１〜Ｃ８１９１のデータ（５１２バイト）は、ティアーＴｉｅｒ１５とする。
【００２６】
次に、センスアンプＳＡ０，ＳＡ１，…ＳＡｎ−１からシリアル変換回路１１にデータを転送する技術について説明する。
【００２７】
例えば、図３乃至図５に示すように、１つのセンスアンプＳＡｉ（ｉ＝０〜ｎ−１）からは、第３の単位（本例では、２バイト）のデータＤＢＵＳ＜１５：０＞がパラレルに読み出される。
【００２８】
検知回路ＤＴＣＴ０，ＤＴＣＴ１，…ＤＴＣＴｎ−１は、センスアンプＳＡ０，ＳＡ１，…ＳＡｎ−１に対応する。活性化信号Ｅ０，Ｅ１，…Ｅｎ−１は、検知回路ＤＴＣＴ０，ＤＴＣＴ１，…ＤＴＣＴｎ−１を活性化させる信号である。
【００２９】
例えば、活性化信号Ｅ０が“Ｈ”、その他の活性化信号Ｅ１，…Ｅｎ−１が“Ｌ”のとき、検知回路ＤＴＣＴ０が活性化され、センスアンプＳＡ０からの第３の単位のデータＤＢＵＳ＜１５：０＞が、第３の単位のデータＦＢＵＳ＜１５：０＞として、シリアル変換回路１１に転送される。
【００３０】
同様に、活性化信号Ｅ１が“Ｈ”、その他の活性化信号Ｅ０，Ｅ２，…Ｅｎ−１が“Ｌ”のとき、検知回路ＤＴＣＴ１が活性化され、センスアンプＳＡ１からの第３の単位のデータＤＢＵＳ＜１５：０＞が、第３の単位のデータＦＢＵＳ＜１５：０＞として、シリアル変換回路１１に転送される。
【００３１】
１つの検知回路ＤＴＣＴｉ（ｉ＝０〜ｎ−１）は、図４に示すように、例えば、複数のＮチャネルＭＯＳトランジスタから構成されるデータ反転回路である。Ｅｉは、検知回路ＤＴＣＴｉの活性化信号であり、φpreは、検知回路ＤＴＣＴｉによるフェイルビットの検知動作前に、ＦＢＵＳ＜１５：０＞を“Ｈ（例えば、電源電位Ｖｄｄ）”にプリチャージしておくための制御信号である。
【００３２】
書き込みが完了しているビットに関しては、センスアンプＳＡｉに記憶されるデータが“Ｈ”であり、書き込みが完了していないフェイルビットに関しては、センスアンプＳＡｉに記憶されるデータが“Ｌ”であると仮定すると、データＤＢＵＳ＜１５：０＞のうち書き込みが完了しているビットは、“Ｈ”であり、書き込みが完了していないフェイルビットは、“Ｌ”である。
【００３３】
従って、検知回路ＤＴＣＴｉから出力されるデータＦＢＵＳ＜１５：０＞のうち書き込みが完了しているビットは、“Ｌ”であり、書き込みが完了していないフェイルビットは、“Ｈ”である。
【００３４】
シリアル変換回路１１は、パラレルデータＦＢＵＳ＜１５：０＞をシリアルデータに変換する。また、アキュムレータ１２は、フェイルビットカウンタを含む。フェイルビットカウンタは、セグメントＳｅｇ０〜Ｓｅｇ１５内のフェイルビット数をカウントする。
【００３５】
次に、センスアンプＳＡｉからのデータ読み出し技術を説明する。
【００３６】
センスアンプＳＡｉからのデータＤＢＵＳ＜１５：０＞の読み出し技術としては、以下の第１及び第２の例がある。
【００３７】
第１の例は、図６に示すように、１つのセンスアンプＳＡ０から１回で読み出される第３の単位（本例では、２バイト）のデータを、同一の第２の単位（セグメント）内に含まれる第３の単位（例えば、カラムアドレスＣ０，Ｃ１）とする技術である。
【００３８】
この技術によれば、例えば、セグメントＳｅｇ０のフェイルビット数の検知を行なった後に、セグメントＳｅｇ１のフェイルビット数の検知を行なう、といった具合に、セグメントＳｅｇ０〜Ｓｅｇ１５に対して、１つずつ、順番に、フェイルビット数の検知を行なうことが可能である。
【００３９】
例えば、図７に示すように、１回目の検知では、セグメントＳｅｇ０内のカラムアドレスＣ０，Ｃ１のデータ（センスアンプＳＡ０内の第３の単位のデータ）を読み出し、検知回路ＤＴＣＴ０によりカラムアドレスＣ０，Ｃ１内のフェイルビットを検知する。
【００４０】
２回目の検知では、セグメントＳｅｇ０内のカラムアドレスＣ２，Ｃ３のデータ（センスアンプＳＡ１内の第３の単位のデータ）を読み出し、検知回路ＤＴＣＴ１によりカラムアドレスＣ２，Ｃ３内のフェイルビットを検知する。
【００４１】
この動作を、ｎ（本例では、ｎ＝２５６）個のセンスアンプＳＡ０〜ＳＡｎ−１を１個ずつ選択することによりｎ回（ｎ回の検知）行なうと、セグメントＳｅｇ０内のカラムアドレスＣ０〜Ｃ５１１のデータについてフェイルビットの検知を行なうことができる。
【００４２】
セグメントＳｅｇ１〜Ｓｅｇ１５についても、同様にして、ｎ個のセンスアンプＳＡ０〜ＳＡｎ−１を１個ずつ選択するｎ回の検知を行なうことにより、フェイルビットの検知を行なうことができる。
【００４３】
従って、第１の単位（例えば、ページ）内の全てのセグメントＳｅｇ０〜Ｓｅｇ１５についてのフェイルビットの検知は、セグメント数（本例では、１６個）×ｎ（本例では、２５６）回の検知動作の繰り返し、即ち、４０９６回の検知動作の繰り返しにより行なうことができる。
【００４４】
各検知動作において検知されたフェイルビットは、例えば、図８に示すように、シリアル変換回路１１に入力される。ここでは、セグメントＳｅｇ０内のカラムアドレスＣ０，Ｃ１のデータＣ０＜７：０＞，Ｃ１＜７：０＞が、ＦＢＵＳ＜１５：０＞として、シリアル変換回路１１に入力される例を説明する。
【００４５】
図９は、シリアル変換回路の例を示している。
【００４６】
まず、カラムアドレスＣ０，Ｃ1のデータＦＢＵＳ＜１５：０＞（＝Ｃ０＜７：０＞，Ｃ１＜７：０＞）は、ラッチ回路ＬＡＴに入力される。ラッチ信号φLATが“Ｈ”になると、カラムアドレスＣ０，Ｃ１のデータＦＢＵＳ＜１５：０＞（＝Ｃ０＜７：０＞，Ｃ１＜７：０＞）は、ラッチ回路ＬＡＴにラッチされる。この後、セレクタＳＥＬにより、ラッチ回路ＬＡＴにラッチされたデータＦＢＬＡＴ＜１５：０＞を順次選択し、加算器ＡＤＤにより、フェイルビット数を加算する。
【００４７】
同様の動作をセグメントＳｅｇ０（ティアーＴｉｅｒ０）内のカラムアドレスＣ２，Ｃ３，…Ｃ５１０，Ｃ５１１について行う。そして、セグメントＳｅｇ０内に存在するフェイルビット数の合計を、ＳＵＭ＜４：０＞として、アキュムレータ１２内のフェイルビットカウンタＦＢＣに転送する。
【００４８】
制御回路１０は、アキュムレータ１２内のフェイルビットカウンタＦＢＣの値を参酌することにより、書き込み動作（書き込み及びベリファイ）を終了するか、又は、繰り返すか、を判断する。
【００４９】
尚、この例では、１６個のセグメントＳｅｇ０〜Ｓｅｇ１５（ティアーＴｉｅｒ０〜Ｔｉｅｒ１５）に対して、１つずつ、順番に、フェイルビットの検知を行っているが、図１０に示すように、ｎ個のセンスアンプＳＡ０〜ＳＡｎ−１に対して、１つずつ、順番に、フェイルビットの検知を行ってもよい。
【００５０】
この読み出し技術の問題点は、リダンダンシイ置き換え技術との相性が悪いことにある。例えば、ＤＢＵＳ＜０＞が不良である場合を考える。この不良とは、例えば、図４の検知回路ＤＴＣＴｉ内のＤＢＵＳ＜０＞に接続されるトランジスタが不良である、などの物理的不良を意味する。
【００５１】
この時、リダンダンシイ置き換え技術により、不良となるカラムをリダンダンシイカラムに置き換える必要がある。しかし、ＤＢＵＳ＜０＞は、例えば、図６のセンスアンプＳＡ０の構成から明らかなように、１６個のカラムアドレスＣ０，Ｃ５１２，…Ｃ７６８１のデータＣ０＜０＞，Ｃ５１２＜０＞，…Ｃ７６８１＜０＞のフェイルビットを検知するために用いられる。
【００５２】
従って、これらカラムアドレスＣ０，Ｃ５１２，…Ｃ７６８１の全てをリダンダンシイカラムアドレスに置き換えなければならない。現実的には、これらカラムドレスＣ０，Ｃ５１２，…Ｃ７６８１の置き換えを制御するのは困難なため、センスアンプＳＡ０内に含まれるカラムアドレスＣ０，Ｃ１，Ｃ５１２，Ｃ５１３，…Ｃ７６８１、Ｃ７６８２を、センスアンプ単位で、リダンダンシイカラムアドレスに置き換える制御を行っている。
【００５３】
このように、読み出し技術の第１の例では、センスアンプ単位（３２バイト）、即ち、本例では、３２カラムアドレス単位で、リダンダンシイ置き換えを行う必要があるため、リダンダンシイ置き換え効率が悪い。
【００５４】
そこで、以下に説明する第２の例では、リダンダンシイ置き換え効率を改善するセンスアンプＳＡｉからのデータＤＢＵＳ＜１５：０＞の読み出し技術を提案する。
【００５５】
また、この読み出し技術を採用することにより、後段に配置されるシリアル変換回路１１及びアキュムレータ１２の構成についても変更する必要があるため、それについても説明する。
【００５６】
第２の例は、図１１に示すように、１つのセンスアンプＳＡ０から１回で読み出される第３の単位（本例では、２バイト）のデータを、異なる複数の第２の単位（本例では、１６個のセグメント）内の各１ビット（合計２バイト）とする技術である。
【００５７】
この技術によれば、第一に、リダンダンシイ置き換え効率が向上する。例えば、上述の第１例と同様に、ＤＢＵＳ＜０＞が不良である場合を考える。この時、リダンダンシイ置き換え技術により、ＤＢＵＳ＜０＞を使用する１つのセグメントＳｅｇ０内の２個のカラムアドレスＣ０，Ｃ２をリダンダンシイカラムアドレスに置き換えればよい。
【００５８】
このように、例えば、１つのセンスアンプＳＡｉからＤＢＵＳ＜０＞が読み出せなくなるという不良に対して、第１の例では、センスアンプ（３２カラムアドレス）単位で、リダンダンシイ置き換えを行う必要があるのに対し、第２例では、２カラムアドレスのみを置き換えればよい。このため、第２の例によれば、リダンダンシイ置き換え効率が非常に良くなる。
【００５９】
また、この技術によれば、全てのセグメントＳｅｇ０〜Ｓｅｇ１５に対して、パラレルに、フェイルビット数の検知を行うことが可能である。
【００６０】
例えば、図１２に示すように、１回目の検知では、セグメントＳｅｇ０内のカラムアドレスＣ０の１ビットＣ０＜０＞、セグメントＳｅｇ１内のカラムアドレスＣ５１２の１ビットＣ５１２＜０＞、…セグメントＳｅｇ１５内のカラムアドレスＣ７６８０の１ビットＣ７６８０＜０＞を備えるデータ（センスアンプＳＡ０内の第３の単位のデータ）を読み出し、検知回路ＤＴＣＴ０により、これらデータＣ０＜０＞，Ｃ５１２＜０＞，…Ｃ７６８０＜０＞に対してフェイルビットの検知を行う。
【００６１】
また、図１３に示すように、２回目の検知では、セグメントＳｅｇ０内のカラムアドレスＣ０の１ビットＣ０＜１＞、セグメントＳｅｇ１内のカラムアドレスＣ５１２の１ビットＣ５１２＜１＞、…セグメントＳｅｇ１５内のカラムアドレスＣ７６８０の１ビットＣ７６８０＜１＞を備えるデータ（センスアンプＳＡ０内の第３の単位のデータ）を読み出し、検知回路ＤＴＣＴ０により、これらデータＣ０＜１＞，Ｃ５１２＜１＞，…Ｃ７６８０＜１＞に対してフェイルビットの検知を行う。
【００６２】
この動作を、１つのセンスアンプＳＡ０内の全てのカラムアドレスのデータについて行う。１つのセンスアンプＳＡ０内の全てのカラムアドレスのデータについてフェイルビットの検知を行うには、本例の場合、１６回の検知動作を繰り返す必要がある。
【００６３】
即ち、図１４に示すように、１６回目の検知では、セグメントＳｅｇ０内のカラムアドレスＣ１の１ビットＣ１＜７＞、セグメントＳｅｇ１内のカラムアドレスＣ５１３の１ビットＣ５１３＜７＞、…セグメントＳｅｇ１５内のカラムアドレスＣ７６８１の１ビットＣ７６８１＜７＞を備えるデータ（センスアンプＳＡ０内の第３の単位のデータ）を読み出し、検知回路ＤＴＣＴ０により、これらデータＣ１＜７＞，Ｃ５１３＜７＞，…Ｃ７６８１＜７＞に対してフェイルビットの検知を行う。
【００６４】
そして、例えば、図１５に示すように、この動作を、ｎ（本例では、ｎ＝２５６）個のセンスアンプＳＡ０〜ＳＡｎ−１を１個ずつ選択することによりｎ回（ｎ回の検知）行なうと、全てのセグメントＳｅｇ０〜Ｓｅｇ１５に対して、パラレルに、フェイルビット数の検知を行うことができる。
【００６５】
各検知動作において検知されたフェイルビットは、例えば、図１６に示すように、シリアル変換回路１１に入力される。ここでは、セグメントＳｅｇ０〜Ｓｅｇ１５内のカラムアドレスＣ０，Ｃ５１２，…Ｃ７６８０のデータＣ０＜０＞，Ｃ５１２＜０＞，…Ｃ７６８０＜０＞が、ＦＢＵＳ＜１５：０＞として、シリアル変換回路１１に入力される例を説明する。
【００６６】
ここで、図１１に示すセンスアンプの構成、及び、図１２〜図１６に示すデータの読み出し技術を採用するとき、シリアル変換回路及びアキュムレータの構成によってフェイルビットの検知効率が大きく変わるため、これについて説明する。
【００６７】
まず、比較例として、図９のシリアル変換回路を用いる場合を説明する。
【００６８】
図１７は、図９のシリアル変換回路を用いたときの動作の概要を示している。
【００６９】
読み出し動作の第２の例を採用したことに伴い、シリアル変換回路における動作も以下のように変更する必要がある。
【００７０】
まず、上述の１回目の検知動作の後、データＦＢＵＳ＜１５：０＞（＝Ｃ０＜０＞，Ｃ５１２＜０＞，…Ｃ７６８０＜０＞）は、ラッチ回路ＬＡＴに入力される。ラッチ信号φLATが“Ｈ”になると、データＦＢＵＳ＜１５：０＞（＝Ｃ０＜０＞，Ｃ５１２＜０＞，…Ｃ７６８０＜０＞）は、ラッチ回路ＬＡＴにラッチされる。
【００７１】
また、セレクタＳＥＬは、ラッチ回路ＬＡＴにラッチされたデータのうちＦＢＬＡＴ＜０＞のみを選択し、加算器ＡＤＤは、フェイルビット数を加算する。この後、ラッチ回路ＬＡＴは、リセットされる。即ち、ＦＢＬＡＴ＜０＞のみが有効データとなり、それ以外のＦＢＬＡＴ＜１５：１＞は、無効データとなる。
【００７２】
上述の２回目の検知動作の後、データＦＢＵＳ＜１５：０＞（＝Ｃ０＜１＞，Ｃ５１２＜１＞，…Ｃ７６８０＜１＞）は、ラッチ回路ＬＡＴに入力される。ラッチ信号φLATが“Ｈ”になると、データＦＢＵＳ＜１５：０＞（＝Ｃ０＜１＞，Ｃ５１２＜１＞，…Ｃ７６８０＜１＞）は、ラッチ回路ＬＡＴにラッチされる。
【００７３】
また、セレクタＳＥＬは、ラッチ回路ＬＡＴにラッチされたデータのうちＦＢＬＡＴ＜１＞のみを選択し、加算器ＡＤＤは、フェイルビット数を加算する。この後、ラッチ回路ＬＡＴは、リセットされる。即ち、ＦＢＬＡＴ＜１＞のみが有効データとなり、それ以外のＦＢＬＡＴ＜１５：２＞及びＦＢＬＡＴ＜０＞は、無効データとなる。
【００７４】
同様の動作を１６回繰り返し、１つのセンスアンプＳＡ０内のカラムアドレスＣ０，Ｃ１のデータＣ０＜７：０＞，Ｃ１＜７：０＞について、フェイルビット数の加算を行う。さらに、以上の動作をｎ（ｎ＝２５６）個のセンスアンプＳＡ０〜ＳＡｎ−１について行うことにより、セグメントＳｅｇ０内のフェイルビット数を検知する。
【００７５】
そして、セグメントＳｅｇ０内のフェイルビット数を、ＳＵＭ＜４：０＞として、アキュムレータ１２内のフェイルビットカウンタＦＢＣに転送する。また、この転送後、加算器ＡＤＤをリセットする。
【００７６】
この後、以上の動作と全く同じ動作を１５回繰り返す。即ち、残りのセグメントＳｅｇ１〜Ｓｅｇ１５について、フェイルビット数の検知を行う。
【００７７】
これは、図１１の１つのセンスアンプの構成に起因し、各検知動作でその１つのセンスアンプから読み出されるＦＢＵＳ＜１５：０＞のうち、１ビットのみが有効となり、残りの１５ビットが無効になることに起因する。
【００７８】
以上の動作をフローチャートに表したものが図１８である。
【００７９】
まず、ｘ、ｙ及びｚを初期値（＝０）に設定する（ステップＳＴ１〜ＳＴ３）。
【００８０】
ｘは、１つのセンスアンプ内で行うフェイルビットの検知回数に相当する。１つのセンスアンプが３２バイトを有し、１回の検知動作で２バイトのデータをその１つのセンスアンプから読み出すときは、１つのセンスアンプ内の全てのデータを読み出すためには、１６回の検知動作の繰り返しが必要になる。この時、ｘ＝０〜１５の範囲で変化する。
【００８１】
ｙは、センスアンプ数に相当する。１ページが８キロバイト、１セグメントが５１２バイト、１ページ内のセグメント数が１６個、１つのセンスアンプ内に１つのセグメントの２バイトを記憶させるときは、２５６個のセンスアンプが必要になる。この時、ｙ＝０〜２５５の範囲で変化する。
【００８２】
ｚは、セグメント数に相当する。本例では、１回の検知動作で１つのセンスアンプから読み出されるＦＢＵＳ＜１５：０＞のうち、１ビットのみが有効となり、残りの１５ビットが無効になる。このため、１つのセンスアンプから１６個のセグメントの各々の２バイトを読み出すためには、同じ動作を１６回繰り返す必要がある。この時、ｚ＝０〜１５の範囲で変化する。
【００８３】
ｘ、ｙ及びｚを初期値に設定した後、まず、センスアンプＳＡ０を選択し、このセンスアンプＳＡ０についてフェイルビットの検知動作を行う（ステップＳＴ４〜ＳＴ５）。
【００８４】
但し、この検知動作は、ＦＢＵＳ＜０＞（ＤＢＵＳ＜０＞）のみ、即ち、セグメントＳｅｇ０（ティアーＴｉｅｒ０）のみを対象とする。
【００８５】
具体的には、センスアンプＳＡ０から読み出されたＤＢＵＳ＜１５：０＞のうちＤＢＵＳ＜０＞のみを図１７の加算器ＡＤＤに転送し、セグメントＳｅｇ０（ティアーＴｉｅｒ０）内のフェイルビットの合計数をカウントする。また、フェイルビット数が所定値以上になるまで、センスアンプＳＡ０からのデータ読み出しを、最大１６回（ｘ＝０〜１５）繰り返す（ステップＳＴ７〜ＳＴ８）。
【００８６】
センスアンプＳＡ０からのデータ読み出しを最大１６回繰り返しても、フェイルビット数が所定値以上にならないときは、次のセンスアンプＳＡ１について、上記と同じ動作を行う。そして、フェイルビット数が所定値以上になるまで、選択されるセンスアンプをＳＡ１、ＳＡ２、…という具合に、順次シフトさせ、この動作をＳＡ２５５に達するまで最大２５６回（ｙ＝０〜２５５）繰り返す（ステップＳＴ９〜ＳＴ１０）。
【００８７】
以上の動作の途中で、フェイルビット数が所定値以上となったときは、書き込み未完了として、例えば、フラグＦＬＡＧを“Ｌ”のままとし、次のセグメントＳｅｇ１（ティアーＴｉｅｒ１）に対するフェイルビットの検知動作に移る（ステップＳＴ１１）。
【００８８】
また、全てのセンスアンプＳＡ０〜ＳＡ２５５からセグメントＳｅｇ０（ティアーＴｉｅｒ０）に関する全てのデータ（ＦＢＵＳ＜０＞）を読み出しても、フェイルビット数が所定値よりも少ないときは、エラー訂正回路によりエラービットの訂正が可能であるため、書き込み完了として、例えば、フラグＦＬＡＧを“Ｈ”に変更し、次のセグメントＳｅｇ１（ティアーＴｉｅｒ１）に対するフェイルビットの検知動作に移る（ステップＳＴ１２）。
【００８９】
本例では、セグメント数を１６個（Ｓｅｇ０〜Ｓｅｇ１５）としているため、上記と同じ動作を１６回（ｚ＝０〜１５）繰り返す（ステップＳＴ１３〜ＳＴ１４）。
【００９０】
尚、図１８のステップＳＴ６において、１つ又はそれ以上のセグメントのフェイルビットが所定値以上になったときに、セグメントビットスキャン（図１８のフロー）を終了することで、それ以降のセグメントのフェイルビット検知を省略することも可能である。
【００９１】
以上の比較例での問題点は、各検知動作で１つのセンスアンプから読み出されるＦＢＵＳ＜１５：０＞のうち、１ビットのみが有効となり、残りの１５ビットが無効になることにある。このため、図１８のフローチャートを例にとると、ｚを０〜１５の範囲で変化させるステップＳＴ１３〜ＳＴ１４が必要になり、フェイルビットの検知効率が低下し、フェイルビット数を高速に検知することが難しくなる。
【００９２】
そこで、以下の例では、各検知動作で１つのセンスアンプから読み出されるＦＢＵＳ＜１５：０＞の全てを有効とし、全てのセグメントＳｅｇ０〜Ｓｅｇ１５（ティアーＴｉｅｒ０〜Ｔｉｅｒ１５）のフェイルビット数をパラレルに蓄積していくためのシリアル変換回路及びアキュムレータの構成、並びに、フェイルビットの合計数のカウント方法について説明する。
【００９３】
図１２〜図１５に示す各検知動作において検知されたフェイルビットは、例えば、図１９に示すように、シリアル変換回路１１に入力される。ここでは、セグメントＳｅｇ０〜Ｓｅｇ１５内のカラムアドレスＣ０，Ｃ５１２，…Ｃ７６８０のデータＣ０＜０＞，Ｃ５１２＜０＞，…Ｃ７６８０＜０＞が、ＦＢＵＳ＜１５：０＞として、シリアル変換回路１１に入力される例を説明する。
【００９４】
シリアル変換回路１１からアキュムレータ１２には、Ｑ（Ｑは自然数）ビットのデータバスを介してデータ転送が行われる。データバスのビット数は、本例では、１ビット（最小）から１６ビット（最大）の範囲内（望ましくは、１、２、４、８、１６ビットのうちの１つ）で設定可能である。データバスのビット数が少ないと、配線面積に関しては有利であるが、データの高速転送には不利である。逆に、データバスのビット数が多いと、データの高速転送には有利であるが、配線面積に関しては不利である。
【００９５】
図２０は、シリアル変換回路及びアキュムレータの例を示している。
【００９６】
本例では、シリアル変換回路１１及びアキュムレータ１２は、２ビットのデータバスＳＲ＜０＞，ＳＲ＜１＞により互いに接続される。
【００９７】
ＦＢＬＡＴ＜７：０＞は、データバスＳＲ＜０＞を介して、アキュムレータ１２内のフェイルビットカウンタＦＢＣ７〜ＦＢＣ０に転送され、ＦＢＬＡＴ＜１５：８＞は、データバスＳＲ＜１＞を介して、アキュムレータ１２内のフェイルビットカウンタＦＢＣ１５〜ＦＢＣ８に転送される。
【００９８】
シリアル変換回路１１内のセレクタＳＥＬ１は、セレクト信号ＣＳＲにより、ＦＢＬＡＴ＜７：０＞のうちの１ビット及びＦＢＬＡＴ＜１５：８＞のうちの１ビットを選択する。また、アキュムレータ１２内のセレクタＳＥＬ２は、セレクト信号ＣＳＲにより、ＦＢＣ７〜ＦＢＣ０のうちの１つ及びＦＢＣ１５〜ＦＢＣ８のうちの１つを選択する。
【００９９】
図２１は、図２０のシステムの動作を示す波形図である。
【０１００】
同図では、ＦＢＵＳ＜７：０＞のみについて示す。ＦＢＵＳ＜１５：８＞については、ＦＢＵＳ＜７：０＞と同じであるため、ここでの説明は省略する。
【０１０１】
また、ＣＬＫは、システム全体の動作を制御するシステムクロックである。ＦＢＵＳ＜７：０＞、ＦＢＬＡＴ＜７：０＞及びＳＲ＜０＞は、図２０のＦＢＵＳ＜７：０＞、ＦＢＬＡＴ＜７：０＞及びＳＲ＜０＞に相当する。
【０１０２】
活性化信号Ｅｉ及びプリチャージ信号φpreは、図４に示すセンスアンプＳＡｉの活性化信号Ｅｉ及びＦＢＵＳ＜１５：０＞のプリチャージ信号φpreに相当する。φLAT及びＣＳＲは、図２０に示すラッチ信号φLAT及びセレクト信号ＣＳＲに相当する。
【０１０３】
・  1st-フェイルビット検知  
まず、１回目の検知動作（1st-フェイルビット検知）では、プリチャージ信号φpreが一時的に“Ｈ”となり、ＦＢＵＳ＜１５：０＞が“Ｈ”にプリチャージされる。この後、検知回路ＤＴＣＴｉの活性化信号Ｅｉが“Ｈ”になり、フェイルビット検知が実行される。即ち、センスアンプＳＡｉから読み出されたＤＢＵＳ＜１５：０＞（＝Ｃ０＜０＞，Ｃ５１２＜０＞，…Ｃ７６８０＜０＞）のフェイルビット検知が行われ、かつ、その結果がＦＢＵＳ＜１５：０＞に出力される。
【０１０４】
・  1st-フェイルビット転送及び2nd-フェイルビット検知  
次に、１回目のフェイルビット転送（1st-フェイルビット転送）では、ラッチ信号φLATが“Ｈ”になり、データＦＢＵＳ＜１５：０＞（＝Ｃ０＜０＞，Ｃ５１２＜０＞，…Ｃ７６８０＜０＞）は、ラッチ回路ＬＡＴにラッチされる。
【０１０５】
また、セレクタＳＥＬ１は、セレクト信号ＣＳＲに同期して、ＦＢＬＡＴ＜７：０＞のうちの１つを、順次、選択し、セレクタＳＥＬ２は、セレクト信号ＣＳＲに同期して、ＦＢＣ７〜ＦＢＣ０のうちの１つを、順次、選択する。
【０１０６】
例えば、最初に、ＦＢＬＡＴ＜０＞及びＦＢＣ０が選択され、ＦＢＬＡＴ＜０＞（＝Ｃ０＜０＞）がデータバスＳＲ＜０＞を介して、フェイルビットカウンタＦＢＣ０に転送される。フェイルビットカウンタＦＢＣ０は、セグメントＳｅｇ０（ティアーＴｉｅｒ０）内のフェイルビットの合計数をカウントする。
【０１０７】
次に、ＦＢＬＡＴ＜１＞及びＦＢＣ１が選択され、ＦＢＬＡＴ＜１＞（＝Ｃ５１２＜０＞）がデータバスＳＲ＜０＞を介して、フェイルビットカウンタＦＢＣ１に転送される。フェイルビットカウンタＦＢＣ１は、セグメントＳｅｇ１（ティアーＴｉｅｒ１）内のフェイルビットの合計数をカウントする。
【０１０８】
同様の動作をＦＢＬＡＴ＜２＞からＦＢＬＡＴ＜７＞まで行う。
【０１０９】
尚、ＦＢＬＡＴ＜１５：８＞についても、ＦＢＬＡＴ＜７：０＞における転送動作と同じ動作により、フェイルビットカウンタＦＢＣ１５〜ＦＢＣ８に転送される。
【０１１０】
以上の１回目のフェイルビット転送にパラレルに２回目の検知動作（2nd-フェイルビット検知）が行われる。
【０１１１】
２回目の検知動作では、プリチャージ信号φpreが一時的に“Ｈ”となり、ＦＢＵＳ＜１５：０＞が“Ｈ”にプリチャージされる。この後、検知回路ＤＴＣＴｉの活性化信号Ｅｉが“Ｈ”になり、フェイルビット検知が実行される。即ち、センスアンプＳＡｉから読み出されたＤＢＵＳ＜１５：０＞（＝Ｃ０＜１＞，Ｃ５１２＜１＞，…Ｃ７６８０＜１＞）のフェイルビット検知が行われ、かつ、その結果がＦＢＵＳ＜１５：０＞に出力される。
【０１１２】
・  2nd-フェイルビット転送及び3rd-フェイルビット検知  
次に、２回目のフェイルビット転送（2nd-フェイルビット転送）では、ラッチ信号φLATが“Ｈ”になり、データＦＢＵＳ＜１５：０＞（＝Ｃ０＜１＞，Ｃ５１２＜１＞，…Ｃ７６８０＜１＞）は、ラッチ回路ＬＡＴにラッチされる。
【０１１３】
また、セレクタＳＥＬ１は、セレクト信号ＣＳＲに同期して、ＦＢＬＡＴ＜７：０＞のうちの１つを、順次、選択し、セレクタＳＥＬ２は、セレクト信号ＣＳＲに同期して、ＦＢＣ７〜ＦＢＣ０のうちの１つを、順次、選択する。
【０１１４】
例えば、最初に、ＦＢＬＡＴ＜０＞及びＦＢＣ０が選択され、ＦＢＬＡＴ＜０＞（＝Ｃ０＜１＞）がデータバスＳＲ＜０＞を介して、フェイルビットカウンタＦＢＣ０に転送される。フェイルビットカウンタＦＢＣ０は、セグメントＳｅｇ０（ティアーＴｉｅｒ０）内のフェイルビットの合計数をカウントする。
【０１１５】
次に、ＦＢＬＡＴ＜１＞及びＦＢＣ１が選択され、ＦＢＬＡＴ＜１＞（＝Ｃ５１２＜１＞）がデータバスＳＲ＜０＞を介して、フェイルビットカウンタＦＢＣ１に転送される。フェイルビットカウンタＦＢＣ１は、セグメントＳｅｇ１（ティアーＴｉｅｒ１）内のフェイルビットの合計数をカウントする。
【０１１６】
同様の動作をＦＢＬＡＴ＜２＞からＦＢＬＡＴ＜７＞まで行う。
【０１１７】
尚、ＦＢＬＡＴ＜１５：８＞についても、ＦＢＬＡＴ＜７：０＞における転送動作と同じ動作により、フェイルビットカウンタＦＢＣ１５〜ＦＢＣ８に転送される。
【０１１８】
以上の２回目のフェイルビット転送にパラレルに３回目の検知動作（3rd-フェイルビット検知）が行われる。
【０１１９】
３回目の検知動作では、プリチャージ信号φpreが一時的に“Ｈ”となり、ＦＢＵＳ＜１５：０＞が“Ｈ”にプリチャージされる。この後、検知回路ＤＴＣＴｉの活性化信号Ｅｉが“Ｈ”になり、フェイルビット検知が実行される。即ち、センスアンプＳＡｉから読み出されたＤＢＵＳ＜１５：０＞（＝Ｃ０＜２＞，Ｃ５１２＜２＞，…Ｃ７６８０＜２＞）のフェイルビット検知が行われ、かつ、その結果がＦＢＵＳ＜１５：０＞に出力される。
【０１２０】
以上の図２０及び図２１の例によれば、シリアル変換回路１１及びアキュムレータ１２は、２ビットのデータバスＳＲ＜０＞，ＳＲ＜１＞により互いに接続され、かつ、ＦＢＵＳ＜７：０＞の検知動作／転送動作と、ＦＢＵＳ＜１５：８＞の検知動作／転送動作とが、いわゆるパイプライン動作により、パラレルに実行される。
【０１２１】
従って、フェイルビット検知を高速に行うことができる。
【０１２２】
以上の動作をフローチャートに表したものが図２２である。
【０１２３】
まず、ｘ及びｙを初期値（＝０）に設定する（ステップＳＴ１〜ＳＴ２）。
【０１２４】
ｘは、１つのセンスアンプ内で行うフェイルビットの検知回数に相当する。１つのセンスアンプが３２バイトを有し、１回の検知動作で２バイトのデータをその１つのセンスアンプから読み出すときは、１つのセンスアンプ内の全てのデータを読み出すためには、１６回の検知動作の繰り返しが必要になる。この時、ｘ＝０〜１５の範囲で変化する。
【０１２５】
ｙは、センスアンプ数に相当する。１ページが８キロバイト、１セグメントが５１２バイト、１ページ内のセグメント数が１６個、１つのセンスアンプ内に１つのセグメントの２バイトを記憶させるときは、２５６個のセンスアンプが必要になる。この時、ｙ＝０〜２５５の範囲で変化する。
【０１２６】
ｘ及びｙを初期値に設定した後、まず、センスアンプＳＡ０を選択し、このセンスアンプＳＡ０についてフェイルビットの検知動作を行う（ステップＳＴ３〜ＳＴ４）。
【０１２７】
この検知動作は、ＦＢＵＳ＜１５：０＞の全て、即ち、セグメントＳｅｇ１５〜Ｓｅｇ０（ティアーＴｉｅｒ１５〜Ｔｉｅｒ０）の全てを対象とする。
【０１２８】
具体的には、センスアンプＳＡ０から読み出されたＤＢＵＳ＜１５：０＞の全てを、図２０に示すように、シリアル変換回路１１を介して、アキュムレータ１２内のフェイルビットカウンタＦＢＣ１５〜ＦＢＣ０に転送する。フェイルビットカウンタＦＢＣ１５〜ＦＢＣ０は、セグメントＳｅｇ１５〜Ｓｅｇ０（ティアーＴｉｅｒ１５〜Ｔｉｅｒ０）内のフェイルビットの合計数をカウントする。
【０１２９】
フェイルビット数が所定値以上になったセグメントに関しては、例えば、フェイルビット数の加算を終了し、フェイルビット数が所定値よりも少ないセグメントに関しては、フェイルビット数の加算を継続する（ステップＳＴ５〜ＳＴ６）。
【０１３０】
また、全てのセグメントＳｅｇ１５〜Ｓｅｇ０（ティアーＴｉｅｒ１５〜Ｔｉｅｒ０）について、フェイルビット数が所定値以上になるまで、センスアンプＳＡ０からのデータ読み出しを、最大１６回（ｘ＝０〜１５）繰り返す（ステップＳＴ７〜ＳＴ８）。
【０１３１】
センスアンプＳＡ０からのデータ読み出しを最大１６回繰り返しても、全てのセグメントＳｅｇ１５〜Ｓｅｇ０（ティアーＴｉｅｒ１５〜Ｔｉｅｒ０）について、フェイルビット数が所定値以上にならないときは、次のセンスアンプＳＡ１について、上記と同じ動作を行う。そして、フェイルビット数が所定値以上になるまで、選択されるセンスアンプをＳＡ１、ＳＡ２、…という具合に、順次シフトさせ、この動作をＳＡ２５５に達するまで最大２５６回（ｙ＝０〜２５５）繰り返す（ステップＳＴ９〜ＳＴ１０）。
【０１３２】
以上の動作の途中で、全てのセグメントＳｅｇ１５〜Ｓｅｇ０（ティアーＴｉｅｒ１５〜Ｔｉｅｒ０）について、フェイルビット数が所定値以上となったときは、書き込み未完了として、例えば、全てのフラグＦＬＡＧを“Ｌ”のままとし、書き込み動作を継続する（ステップＳＴ１１）。
【０１３３】
また、全てのセンスアンプＳＡ０〜ＳＡ２５５から全てのデータを読み出しても、全てのセグメントＳｅｇ１５〜Ｓｅｇ０（ティアーＴｉｅｒ１５〜Ｔｉｅｒ０）について、フェイルビット数が所定値以上にならないときは、フェイルビット数が所定値以上になったセグメントに関しては、書き込み未完了（ＦＬＡＧ＝“Ｌ”）とし、フェイルビット数が所定値よりも少ないセグメントに関しては、書き込み完了（ＦＬＡＧ＝“Ｈ”）とする（ステップＳＴ１２）。
【０１３４】
尚、フラグＦＬＡＧは、書き込み完了／未完了を示すもので、初期状態では、全てのセグメントのフラグＦＬＡＧが、例えば、“Ｌ（書き込み未完了）”となっており、書き込みが完了したセグメントに対してのみ、フラグＦＬＡＧが“Ｈ”になる。
【０１３５】
また、図２２のステップＳＴ６において、フェイルビット数が所定値以上のセグメントが１つ又はそれ以上になったときに、セグメントビットスキャン（図２２のフロー）を終了し、それ以降のセグメントのフェイルビット検知を省略することも可能である。
【０１３６】
本例では、各検知動作で１つのセンスアンプから読み出されるＦＢＵＳ＜１５：０＞の全てを有効とし、全てのセグメントＳｅｇ０〜Ｓｅｇ１５（ティアーＴｉｅｒ０〜Ｔｉｅｒ１５）のフェイルビット数をパラレルに蓄積していくため、図１８に示すようなセグメント数（Ｓｅｇ０〜Ｓｅｇ１５）に相当する同じ動作の繰り返し（ｚ＝０〜１５）が必要なくなる。従って、フェイルビットを高速に検知することが可能になる。
【０１３７】
次に、図１１に示す構成を持つセンスアンプを採用したときのフェイルビット検知の変形例について説明する。
【０１３８】
図２３及び図２４は、バイト検知動作を示している。
【０１３９】
いままで述べてきた実施例では、１つのセグメントに対し、１ビット毎に、そのビットが書き込み完了（パス状態）であるか、又は、書き込み未完了（フェイル）であるか、を検知し、フェイルビット数の合計をカウントして、そのセグメントに対する書き込み動作を継続するか、又は、終了するか、を決定した。
【０１４０】
これに対し、本例では、１つのセグメントに対し、１バイト（８ビット）毎に、そのバイト内の全ビットが書き込み完了（パス状態）であるか、又は、書き込み未完了（フェイル）であるか、を検知し、フェイルビット数の合計をカウントして、そのセグメントに対する書き込み動作を継続するか、又は、終了するか、を決定する。
【０１４１】
まず、図２３に示すように、１回目の検知では、センスアンプＳＡ０内の偶数バイト（Even bite）を読み出す。
【０１４２】
即ち、セグメントＳｅｇ０内のカラムアドレスＣ０の１バイトＣ０＜７：０＞、セグメントＳｅｇ１内のカラムアドレスＣ５１２の１バイトＣ５１２＜７：０＞、…セグメントＳｅｇ１５内のカラムアドレスＣ７６８０の１バイトＣ７６８０＜７：０＞を読み出し、検知回路ＤＴＣＴ０により、これらデータＣ０＜７：０＞，Ｃ５１２＜７：０＞，…Ｃ７６８０＜７：０＞に対して、バイト単位でのフェイルビット検知を行う。
【０１４３】
この時、センスアンプＳＡ０は、偶数バイト（Even bite）が同時にＤＢＵＳ＜１５：０＞に読み出されるように、各ビットの読み出しを制御する。また、この時、奇数バイト（Odd bite）は、ＤＢＵＳ＜１５：０＞に読み出されない。
【０１４４】
１つのセグメント内の偶数バイト（Even bite）は、ワイヤードオア接続され、１つのＤＢＵＳに共通接続されるため、その１バイトのうちの少なくとも１ビットが書き込み未完了（フェイル＝“Ｌ”）であると、ＤＢＵＳは、書き込み未完了を示す値“Ｌ”になる。
【０１４５】
例えば、セグメントＳｅｇ０内の偶数バイトＣ０＜７：０＞のうちの少なくとも１ビットが書き込み未完了（フェイル＝“Ｌ”）であると、ＤＢＵＳ＜０＞は、書き込み未完了を示す値“Ｌ”になる。これに対し、セグメントＳｅｇ０内の偶数バイトＣ０＜７：０＞の全てが書き込み完了（パス＝“Ｈ”）であると、ＤＢＵＳ＜０＞は、書き込み完了を示す値“Ｈ”になる。
【０１４６】
また、セグメントＳｅｇ１内の偶数バイトＣ５１２＜７：０＞のうちの少なくとも１ビットが書き込み未完了（フェイル＝“Ｌ”）であると、ＤＢＵＳ＜１＞は、書き込み未完了を示す値“Ｌ”になる。これに対し、セグメントＳｅｇ１内の偶数バイトＣ５１２＜７：０＞の全てが書き込み完了（パス＝“Ｈ”）であると、ＤＢＵＳ＜１＞は、書き込み完了を示す値“Ｈ”になる。
【０１４７】
さらに、セグメントＳｅｇ１５内の偶数バイトＣ７６８０＜７：０＞のうちの少なくとも１ビットが書き込み未完了（フェイル＝“Ｌ”）であると、ＤＢＵＳ＜１５＞は、書き込み未完了を示す値“Ｌ”になる。これに対し、セグメントＳｅｇ１５内の偶数バイトＣ７６８０＜７：０＞の全てが書き込み完了（パス＝“Ｈ”）であると、ＤＢＵＳ＜１５＞は、書き込み完了を示す値“Ｈ”になる。
【０１４８】
ＤＢＵＳ＜１５：０＞は、例えば、図４の検知回路ＤＴＣＴｉを経由すると、ＦＢＵＳ＜１５：０＞になる。例えば、Ｃ０＜７：０＞がフェイルバイトであると仮定すると、ＦＢＵＳ＜０＞は、“Ｈ”になる。同様に、Ｃ５１２＜７：０＞がフェイルバイトであると仮定すると、ＦＢＵＳ＜１＞は、“Ｈ”になり、Ｃ７６８０＜７：０＞がフェイルバイトであると仮定すると、ＦＢＵＳ＜１５＞は、“Ｈ”になる。
【０１４９】
ＦＢＵＳ＜１５：０＞は、例えば、図２０のシリアル変換回路１１を介して、図２０のアキュムレータ１２内のフェイルビットカウンタＦＢＣ１５〜ＦＢＣ０に転送される。即ち、１６個のセグメントＳｅｇ１５〜Ｓｅｇ０のフェイルバイト数は、フェイルビットカウンタＦＢＣ１５〜ＦＢＣ０に蓄積される。
【０１５０】
次に、図２４に示すように、２回目の検知では、センスアンプＳＡ０内の奇数バイト（Odd bite）を読み出す。
【０１５１】
即ち、セグメントＳｅｇ０内のカラムアドレスＣ１の１バイトＣ１＜７：０＞、セグメントＳｅｇ１内のカラムアドレスＣ５１３の１バイトＣ５１３＜７：０＞、…セグメントＳｅｇ１５内のカラムアドレスＣ７６８１の１バイトＣ７６８１＜７：０＞を読み出し、検知回路ＤＴＣＴ０により、これらデータＣ１＜７：０＞，Ｃ５１３＜７：０＞，…Ｃ７６８１＜７：０＞に対して、バイト単位でのフェイルビット検知を行う。
【０１５２】
この時、センスアンプＳＡ０は、奇数バイト（Odd bite）が同時にＤＢＵＳ＜１５：０＞に読み出されるように、各ビットの読み出しを制御する。また、この時、偶数バイト（Even bite）は、ＤＢＵＳ＜１５：０＞に読み出されない。
【０１５３】
１つのセグメント内の奇数バイト（Odd bite）は、ワイヤードオア接続され、１つのＤＢＵＳに共通接続されるため、その１バイトのうちの少なくとも１ビットが書き込み未完了（フェイル＝“Ｌ”）であると、ＤＢＵＳは、書き込み未完了を示す値“Ｌ”になる。
【０１５４】
例えば、セグメントＳｅｇ０内の偶数バイトＣ１＜７：０＞のうちの少なくとも１ビットが書き込み未完了（フェイル＝“Ｌ”）であると、ＤＢＵＳ＜０＞は、書き込み未完了を示す値“Ｌ”になる。これに対し、セグメントＳｅｇ０内の偶数バイトＣ１＜７：０＞の全てが書き込み完了（パス＝“Ｈ”）であると、ＤＢＵＳ＜０＞は、書き込み完了を示す値“Ｈ”になる。
【０１５５】
また、セグメントＳｅｇ１内の偶数バイトＣ５１３＜７：０＞のうちの少なくとも１ビットが書き込み未完了（フェイル＝“Ｌ”）であると、ＤＢＵＳ＜１＞は、書き込み未完了を示す値“Ｌ”になる。これに対し、セグメントＳｅｇ１内の偶数バイトＣ５１３＜７：０＞の全てが書き込み完了（パス＝“Ｈ”）であると、ＤＢＵＳ＜１＞は、書き込み完了を示す値“Ｈ”になる。
【０１５６】
さらに、セグメントＳｅｇ１５内の偶数バイトＣ７６８１＜７：０＞のうちの少なくとも１ビットが書き込み未完了（フェイル＝“Ｌ”）であると、ＤＢＵＳ＜１５＞は、書き込み未完了を示す値“Ｌ”になる。これに対し、セグメントＳｅｇ１５内の偶数バイトＣ７６８１＜７：０＞の全てが書き込み完了（パス＝“Ｈ”）であると、ＤＢＵＳ＜１５＞は、書き込み完了を示す値“Ｈ”になる。
【０１５７】
ＤＢＵＳ＜１５：０＞は、例えば、図４の検知回路ＤＴＣＴｉを経由すると、ＦＢＵＳ＜１５：０＞になる。例えば、Ｃ１＜７：０＞がフェイルバイトであると仮定すると、ＦＢＵＳ＜０＞は、“Ｈ”になる。同様に、Ｃ５１３＜７：０＞がフェイルバイトであると仮定すると、ＦＢＵＳ＜１＞は、“Ｈ”になり、Ｃ７６８１＜７：０＞がフェイルバイトであると仮定すると、ＦＢＵＳ＜１５＞は、“Ｈ”になる。
【０１５８】
ＦＢＵＳ＜１５：０＞は、例えば、図２０のシリアル変換回路１１を介して、図２０のアキュムレータ１２内のフェイルビットカウンタＦＢＣ１５〜ＦＢＣ０に転送される。即ち、１６個のセグメントＳｅｇ１５〜Ｓｅｇ０のフェイルバイト数は、フェイルビットカウンタＦＢＣ１５〜ＦＢＣ０に蓄積される。
【０１５９】
そして、この動作を、ｎ（本例では、ｎ＝２５６）個のセンスアンプＳＡ０〜ＳＡｎ−１を１個ずつ選択することによりｎ回（ｎ回の検知）行なうと、全てのセグメントＳｅｇ０〜Ｓｅｇ１５に対して、パラレルに、フェイルバイト数の検知を行うことができる。
【０１６０】
本例のバイト検知によれば、センスアンプ数を２５６個とすると、１つのセンスアンプに対して２回の検知動作が必要になるため、合計、５１２回の検知動作を繰り返せばよい。これに対し、図１２〜図１４のビット検知動作では、１つのセンスアンプに対して１６回の検知動作が必要であるため、センスアンプ数を２５６個とすると、合計、４０９６回の検知動作を繰り返す必要がある。
【０１６１】
このように、バイト検知動作によれば、検知回数を減らすことができるため、書き込み動作の高速化には有効である。
【０１６２】
尚、図１５の例では、１個のセンスアンプＳＡ０内の全てのデータを読み出した後に、次のセンスアンプＳＡ１内の全てのデータを読み出す、といった具合に、センスアンプＳＡ０〜ＳＡｎ−１を、１つずつ、順番に、選択するが、図２５に示すように、１個のセンスアンプＳＡ０から１回データを読み出した後に、次のセンスアンプＳＡ１から１回データを読み出す、といった具合に、センスアンプＳＡ０〜ＳＡｎ−１を、１つずつ、順番に、選択してもよい。
【０１６３】
次に、実施形態に係わる不揮発性半導体メモリの適用例について説明する。
【０１６４】
図２６は、ＮＡＮＤフラッシュメモリの全体構成を示している。  
ＮＡＮＤフラッシュメモリ２１は、汎用メモリであっても、混載メモリ内の一部であっても、どちらでも構わない。また、１つのメモリセルに２値（１ビット）を記憶させる２値型でも、１つのメモリセルに３値以上を記憶させる多値型であっても、どちらでもよい。
【０１６５】
メモリセルアレイ２２は、例えば、複数のＮＡＮＤブロックＢＫ０，…ＢＫｊを備え、各ＮＡＮＤブロックは、直列接続される複数のメモリセルから構成されるＮＡＮＤ列と、その両端に１つずつ接続される２つのセレクトトランジスタとを有する。
【０１６６】
ワード線ＷＬは、第１方向に延び、ビット線ＢＬは、第２方向に延びる。１本のワード線ＷＬに接続される複数のメモリセルは、例えば、１ページを構成する。１つのＮＡＮＤブロックは、複数ページを含む。読み出し／書き込みは、例えば、ページ単位で行われ、消去は、例えば、ＮＡＮＤブロック単位で行われる。
【０１６７】
ワード線・セレクトゲート線ドライバ２３は、読み出し／書き込み／消去時に、ワード線及びセレクトゲート線の電位を制御する。セレクトゲート線は、セレクトトランジスタのゲート電極に接続される導電線のことである。
【０１６８】
データラッチ２４は、読み出し／書き込み時に、データを一時的にラッチする。
【０１６９】
ローカルカラムデコーダ（ＬＣＤ）２５は、例えば、図１のローカルカラムデコーダＬＣＤ０〜ＬＣＤｎ−１に相当する。ローカルカラムデコーダ２５は、センスアンプ及びフェイルビット検知回路を含む。
【０１７０】
本例では、アドレス信号のうちロウアドレス信号は、アドレスバッファ２６を経由して、ワード線・セレクトゲート線ドライバ２３に入力される。
【０１７１】
また、アドレス信号のうちカラムアドレス信号は、アドレスバッファ２６及びメインカラムデコーダ（ＭＣＤ）２７を経由して、ローカルカラムデコーダ２５に入力される。即ち、カラムアドレス信号をデコードするに当たって、メインカラムデコーダ２７及びローカルカラムデコーダ２５を用いる２段構成を採用する。
【０１７２】
シリアル変換回路１１及びアキュムレータ１２は、例えば、図２０のシリアル変換回路１１及びアキュムレータ１２に相当する。
【０１７３】
データ入出力バッファ２８は、ＮＡＮＤフラッシュメモリ２１に対するデータ入出力のインターフェイスとなる。コマンドインターフェイス回路２９は、ＮＡＮＤフラッシュメモリ２１に入力されるデータがコマンドを表しているか否かを判断し、そのデータがコマンドを表しているときは、制御信号に基づき、ステートマシン３０に、ＮＡＮＤフラッシュメモリ２１が行うべき動作を指示する。
【０１７４】
ウェル・ソース線電位制御回路３１は、読み出し／書き込み／消去時に、ウェル及びソース線の電位を制御する。
【０１７５】
電位生成回路３２は、ＮＡＮＤフラッシュメモリ２１の動作に必要な電位を生成する。例えば、電位生成回路３２は、読み出し／書き込み／消去時に、ワード線・セレクトゲート線ドライバ２３及びウェル・ソース線電位制御回路３１に所定の電位を転送する。
【０１７６】
制御回路１０は、図１の制御回路１０に相当する。制御回路１０は、ＮＡＮＤフラッシュメモリ２１の動作の全体を制御する。
【０１７７】
図２７は、図２６のメインカラムデコーダ２７の構成例を示している。
【０１７８】
本例は、例えば、図２２のフローチャートにおいて、フェイルビットスキャン中に、フェイルビット数が所定値以上になったセグメントに対してフェイルビットの加算を終了することにより、フェイルビットスキャン時間を短縮するための回路例に関する。
【０１７９】
制御回路１０は、アキュムレータ１２に蓄積されたセグメント毎のフェイルビット数に基づいて、フェイルビットスキャン中に、フェイルビット数が所定値以上になったセグメントに対しては、そのアドレスをラッチするように、メインカラムデコーダ２７内にフェイルセグメントアドレスラッチ回路３４に指示を出す。
【０１８０】
フェイルセグメントアドレスラッチ回路３４は、この指示に基づき、フェイルビット数が所定値以上になったセグメントのアドレスをラッチする。そして、その後、そのフェイルセグメントに対するフェイルビットの加算を禁止する非選択信号を、カラムアドレス駆動回路３５に出力する。
【０１８１】
従って、フェイルビットスキャン中に、フェイルビット数が所定値以上になったセグメントに対してのみ、フェイルビットの加算を終了することができる。
【０１８２】
また、書き込みが完了したセグメントのフラグＦＬＡＧは、例えば、“Ｈ”であり、書き込みが未完了であるセグメントのフラグＦＬＡＧは、例えば、“Ｌ”である。フラグ検知回路３３は、セグメント毎に、このフラグＦＬＡＧの値（“Ｌ”／“Ｈ”）を検知し、書き込みが完了したセグメントに対しては、その後、フェイルビットスキャン（例えば、図２２のフローチャート）を実行しないように、書き込みが完了したセグメントを非選択とする非選択信号を、カラムアドレス駆動回路３５に出力する。
【０１８３】
従って、書き込みが完了したセグメントに対しては、フェイルビットスキャンを禁止し、書き込みが未完了であるセグメントに対してのみ、フェイルビットスキャンを実行することができる。
【０１８４】
尚、制御回路１０は、例えば、１ページ分の書き込み動作が終了した後に、アキュムレータ１２及びメインカラムデコーダ２７に対して、それらをリセットするためのリセット信号を出力する。
【０１８５】
４．  むすび  
実施形態によれば、フェイルビット数を高速に検知することができる。
【０１８６】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１８７】
１０：  制御回路、  １１：  シリアル変換回路、  １２：  アキュムレータ、  ２１：  ＮＡＮＤフラッシュメモリ、  ２２：  メモリセルアレイ、  ２３：  ワード線・セレクトゲート線ドライバ、  ２４：  データラッチ、  ２５：  ローカルカラムデコーダ、  ２６：  アドレスバッファ、  ２７：  メインカラムデコーダ、  ２８：  データ入出力バッファ、  ２９：  コマンドインターフェイス回路、  ３０：  ステートマシン、  ３１：  ウェル・ソース線電位制御回路、  ３２：  電位生成回路、  ３３：  フラグ検知回路、  ３４：  フェイルセグメントアドレスラッチ回路、  ３５：  カラムアドレス駆動回路。
【図１】
0005259765.tif 000002
【図２】
0005259765.tif 000003
【図３】
0005259765.tif 000004
【図４】
0005259765.tif 000005
【図５】
0005259765.tif 000006
【図６】
0005259765.tif 000007
【図７】
0005259765.tif 000008
【図８】
0005259765.tif 000009
【図９】
0005259765.tif 000010
【図１０】
0005259765.tif 000011
【図１１】
0005259765.tif 000012
【図１２】
0005259765.tif 000013
【図１３】
0005259765.tif 000014
【図１４】
0005259765.tif 000015
【図１５】
0005259765.tif 000016
【図１６】
0005259765.tif 000017
【図１７】
0005259765.tif 000018
【図１８】
0005259765.tif 000019
【図１９】
0005259765.tif 000020
【図２０】
0005259765.tif 000021
【図２１】
0005259765.tif 000022
【図２２】
0005259765.tif 000023
【図２３】
0005259765.tif 000024
【図２４】
0005259765.tif 000025
【図２５】
0005259765.tif 000026
【図２６】
0005259765.tif 000027
【図２７】
0005259765.tif 000028