(57)【要約】【課題】テスト動作の高速化を図ることが可能な半導体記憶装置を提供する。【解決手段】半導体記憶装置は、主記憶部として機能する不揮発性メモリ１と、前記不揮発性メモリのバッファ部として機能する揮発性メモリ２と、前記不揮発性メモリと前記揮発性メモリとの間のデータ転送を制御するコントローラ３と、ＥＣＣバッファ２４と、本体データおよびパリティデータからシンドローム生成を行うパリティシンドローム回路４２と、前記パリティシンドローム回路を制御するＥＣＣ制御回路４１と、前記コントローラからの制御信号（ECCTEST）が入力されると、前記パリティシンドローム回路の出力から前記ＥＣＣバッファの出力に切り替えて出力するマルチプレクサ４３と、入力が前記マルチプレクサの出力に接続され、出力が前記ＥＣＣバッファに接続されるＥＣＣエラーポジションデコーダ４４と備える。【選択図】      図９
2010009642.tif 000002
【特許請求の範囲】
【請求項１】
主記憶部として機能する不揮発性メモリと、
前記不揮発性メモリのバッファ部として機能する揮発性メモリと、
前記不揮発性メモリと前記揮発性メモリとの間のデータ転送を制御するコントローラと、
前記不揮発性メモリと前記揮発性メモリとの間に設けられ、本体データおよびパリティデータを保持することが可能なＥＣＣバッファと、
前記揮発性メモリから前記ＥＣＣバッファに書き込まれた本体データを用いてパリティ生成を行い、前記不揮発性メモリから前記ＥＣＣバッファに読み出された本体データおよびパリティデータからシンドローム生成を行うパリティシンドローム回路と、
前記パリティシンドローム回路を制御し、パリティデータ生成およびシンドローム生成のタイミング制御を行うＥＣＣ制御回路と、
前記コントローラからの制御信号が入力されると、前記パリティシンドローム回路の出力から前記ＥＣＣバッファの出力に切り替えて出力するマルチプレクサと、
入力が前記マルチプレクサの出力に接続され、出力が前記ＥＣＣバッファに接続されるＥＣＣエラーポジションデコーダと、
を備えることを特徴とする半導体記憶装置。
【請求項２】
前記コントローラは、
前記揮発性メモリに対してタイミング発生を行うタイミング発生回路と、
本体データのアドレスを出力するメインアドレス発生回路と、
パリティデータのアドレスを出力するパリティアドレス発生回路と、
テストコマンドが入力されると本体データのアドレスからパリティデータのアドレスに切り替えて前記揮発性メモリに出力するマルチプレクサと、
を更に備えることを特徴とする請求項１に記載の半導体記憶装置。
【請求項３】
主記憶部として機能する不揮発性メモリと、バッファ部として機能する揮発性メモリと、前記不揮発性メモリと前記揮発性メモリとの間のデータ転送を制御するコントローラと、前記不揮発性メモリと前記揮発性メモリとの間に設けられ、本体データおよびパリティデータを保持することが可能なＥＣＣバッファと、本体データおよびパリティデータのエラー位置を特定することが可能なＥＣＣエラーポジションデコーダと、を具備する半導体記憶装置のテスト方法であって、
前記揮発性メモリにテストパターンを書き込むステップと、
前記揮発性メモリから前記ＥＣＣバッファに前記テストパターンを書き込むステップと、
前記ＥＣＣバッファから前記不揮発性メモリのページバッファに前記テストパターンを転送するステップと、
前記ページバッファから前記不揮発性メモリのメモリセルアレイにテストパターンを書き込むことなく、前記ページバッファから前記ＥＣＣバッファに前記テストパターンを書き込むステップと、
前記ＥＣＣバッファに書き込まれたテストパターンを前記ＥＣＣエラーポジションデコーダに入力するステップと、
を備えることを特徴とする半導体記憶装置のテスト方法。
【請求項４】
主記憶部として機能する不揮発性メモリと、バッファ部として機能する揮発性メモリと、前記不揮発性メモリと前記揮発性メモリとの間のデータ転送を制御するコントローラと、前記不揮発性メモリと前記揮発性メモリとの間に設けられ、本体データおよびパリティデータを保持することが可能なＥＣＣバッファと、前記揮発性メモリから前記ＥＣＣバッファに書き込まれた本体データを用いてパリティ生成を行い、前記不揮発性メモリから前記ＥＣＣバッファに読み出された本体データおよびパリティデータからシンドローム生成を行うパリティシンドローム回路と、を具備する半導体記憶装置のテスト方法であって、
前記揮発性メモリにテストパターンを書き込むステップと、
前記揮発性メモリから前記ＥＣＣバッファに前記テストパターンを書き込むステップと、
前記ＥＣＣバッファに書き込まれた前記テストパターンを用いてパリティデータを生成するステップと、
前記ＥＣＣバッファから前記不揮発性メモリのページバッファに前記テストパターンおよびパリティデータを転送するステップと、
前記ページバッファから前記不揮発性メモリのメモリセルアレイにテストパターンおよびパリティデータを書き込むことなく、前記ページバッファから前記ＥＣＣバッファに前記テストパターンおよびパリティデータを書き込むステップと、
少なくとも前記ＥＣＣバッファに書き込まれたパリティデータを前記揮発性メモリに転送するステップと、
を備えることを特徴とする半導体記憶装置のテスト方法。
【請求項５】
主記憶部として機能する不揮発性メモリと、
前記不揮発性メモリのバッファ部として機能する揮発性メモリと、
前記不揮発性メモリと前記揮発性メモリとの間のデータ転送を制御するコントローラと、
前記不揮発性メモリと前記揮発性メモリとの間に設けられ、本体データおよびパリティデータを保持することが可能なＥＣＣバッファと、
スキャン情報を送信する論理回路と、
ベクタ情報を格納するベクタ記憶回路と、
前記ベクタ記憶回路から読み出したベクタ情報と前記論理回路から送信されるスキャン情報とを出力するベクタ読み出し回路と、
期待値を読み出す期待値読み出し回路と、
前記ベクタ読み出し回路の出力と期待値とを比較する比較回路と、
前記比較回路の出力を判定する判定回路と、
を備えることを特徴とする半導体記憶装置。
【請求項６】
前記論理回路は、前記揮発性メモリから前記ＥＣＣバッファに書き込まれた本体データを用いてパリティを生成し、前記不揮発性メモリから前記ＥＣＣバッファに読み出された本体データおよびパリティデータからシンドロームを生成することでエラー訂正を行うＥＣＣエンジンであること
を特徴とする半導体記憶装置。
【請求項７】
前記期待値は、前記不揮発性メモリ、前記揮発性メモリ、または前記コントローラのいずれかに格納されることを特徴とする請求項５又は６に記載の半導体記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、半導体記憶装置およびそのテスト方法に関し、例えば、複数種類のメモリを１チップに集積した半導体メモリ等に適用されるものである。
【背景技術】
【０００２】
複数種類のメモリを１チップに集積した半導体メモリシステムの一例として、ＯｎｅＮＡＮＤ（登録商標）がある（例えば、特許文献１参照）。このＯｎｅＮＡＮＤは、主記憶部としてのＮＡＮＤ型フラッシュメモリと、バッファ部としてのＳＲＡＭ、またはＤＲＡＭとを１チップで集積したものである。このようなメモリシステムでは、上記ＮＡＮＤ型フラッシュメモリとＳＲＡＭ間のデータ転送を行うために、ステートマシンを搭載したコントローラがその制御を行う（例えば、特許文献２参照）。
【０００３】
ここで、既存のＮＡＮＤ型フラッシュメモリチップを流用してメモリシステムへ組み込もうとする際、外部インターフェイス（Ｉ／Ｆ）回路も流用することで回路再設計が少なく済み、組み込み性が向上する。しかし、ステートマシンは、ＮＡＮＤ型フラッシュメモリチップの外部動作仕様に従って命令を送る必要があるため、ステートマシンの設計が複雑化し、回路面積が増大する、という問題がある。
【０００４】
また、バッファ部を備えるメモリシステムにおいて、メモリセルアレイのテスト効率を高める方法が知られている（例えば、特許文献３参照）。一方で、近年メモリシステムでは、その面積が増大傾向にある論理回路のテスト効率を高める手法が求められている。ＯｎｅＮＡＮＤに代表されるメモリシステムにおいて、ＥＣＣ回路等の各種論理回路のテスト方法については、以下のような問題点がある。
【０００５】
（ａ）ＥＣＣ（error correcting code）回路テスト方法
ＮＡＮＤ型フラッシュメモリは、一般的にデータのエラー訂正が必要である。従って、ＮＡＮＤ型フラッシュメモリを含むメモリシステムは、エラー訂正（ＥＣＣ）回路も内蔵しており、ＮＡＮＤ型フラッシュメモリからデータを読み出す際にはエラー訂正を、ＮＡＮＤ型フラッシュメモリへデータを書き込む際にはパリティ発生を行っている。
【０００６】
ここで、エラー訂正回路を構成する主要回路は一般的に大規模な論理回路である。さらに、内部の個々の論理ゲートの動作状態は、エラーを訂正しようとする入力データパターンに依存するため、そのデータの組み合わせは膨大な数になる。そのため、この回路の不良を検出するために、データパターンを幾通りも入力するのは現実的ではない。
【０００７】
そうした大規模論理回路の不良をテストする一手法として、スキャンテストがある。スキャンテストは、不良検出するデータパターンを容易に作り出すことが出来、不良検出が高精度で出来る。しかしながら、Ｆ／ＦをスキャンＦ／Ｆに置き換える必要があるため、回路面積が増大し、メモリテスタではスキャンテストに対応しづらい点で不利である。
【０００８】
（ｂ）自己テスト（Bist：Built in self test）方法
メモリデバイスのテストでは、そのほとんどの不良がメモリセルの不良であることから、例えば、ウェハ（Wafer）テストでは、メモリを全面テストすることに重点がおかれることが多い。一方で、このテストの際、メモリを動かすためのＥＣＣエンジン等の論理回路は、動かす程度である。ＥＣＣエンジン等の論理回路の不良率は、それが十分少ないことから、製品レベル段階でのパッケージテストにて実施するテスト工程を構成することが多かった。
【０００９】
しかしながら、メモリデバイスは、ＥＣＣエンジン等の論理回路部の回路規模が多くなる傾向にあるため、比較的小容量のメモリデバイスでは、論理回路の不良率が無視できなくなりつつある。そのため、ウェハテストの段階で、効率よく論理回路のスクリーニングをする機能を搭載する要求が強くなる傾向がある。
【００１０】
ただし、ウェハテストでは、同時測定数を増やすために、入力ピン数を極力減らし、テストシーケンスや判定も内部で実施できる自己テスト（Bistテスト）が主流である。よって、ロジックデバイスでよく用いられるスキャンテスト手法をそのまま導入しにくい環境である点で不利である。そのため、メモリデバイスの自己テストに適したスキャンテスト回路を構成する必要がある。
【特許文献１】特開２００６−２８６１７９号公報
【特許文献２】特開２００５−１９６７６４号公報
【特許文献３】特開２００６−７９８０９号公報
【発明の開示】
【発明が解決しようとする課題】
【００１１】
この発明は、テスト動作の高速化を図ることが可能な半導体記憶装置およびそのテスト方法を提供する。
【課題を解決するための手段】
【００１２】
この発明の一態様によれば、主記憶部として機能する不揮発性メモリと、前記不揮発性メモリのバッファ部として機能する揮発性メモリと、前記不揮発性メモリと前記揮発性メモリとの間のデータ転送を制御するコントローラと、前記不揮発性メモリと前記揮発性メモリとの間に設けられ、本体データおよびパリティデータを保持することが可能なＥＣＣバッファと、前記揮発性メモリから前記ＥＣＣバッファに書き込まれた本体データを用いてパリティ生成を行い、前記不揮発性メモリから前記ＥＣＣバッファに読み出された本体データおよびパリティデータからシンドローム生成を行うパリティシンドローム回路と、前記パリティシンドローム回路を制御し、パリティデータ生成およびシンドローム生成のタイミング制御を行うＥＣＣ制御回路と、前記コントローラからの制御信号が入力されると、前記パリティシンドローム回路の出力から前記ＥＣＣバッファの出力に切り替えて出力するマルチプレクサと、入力が前記マルチプレクサの出力に接続され、出力が前記ＥＣＣバッファに接続されるＥＣＣエラーポジションデコーダとを備える半導体記憶装置を提供できる。
【００１３】
この発明の一態様によれば、主記憶部として機能する不揮発性メモリと、バッファ部として機能する揮発性メモリと、前記不揮発性メモリと前記揮発性メモリとの間のデータ転送を制御するコントローラと、前記不揮発性メモリと前記揮発性メモリとの間に設けられ、本体データおよびパリティデータを保持することが可能なＥＣＣバッファと、本体データおよびパリティデータのエラー位置を特定することが可能なＥＣＣエラーポジションデコーダと、を具備する半導体記憶装置のテスト方法であって、前記揮発性メモリにテストパターンを書き込むステップと、前記揮発性メモリから前記ＥＣＣバッファに前記テストパターンを書き込むステップと、前記ＥＣＣバッファから前記不揮発性メモリのページバッファに前記テストパターンを転送するステップと、前記ページバッファから前記不揮発性メモリのメモリセルアレイにテストパターンを書き込むことなく、前記ページバッファから前記ＥＣＣバッファに前記テストパターンを書き込むステップと、前記ＥＣＣバッファに書き込まれたテストパターンを前記ＥＣＣエラーポジションデコーダに入力するステップとを備える半導体記憶装置のテスト方法を提供できる。
【００１４】
この発明の一態様によれば、主記憶部として機能する不揮発性メモリと、バッファ部として機能する揮発性メモリと、前記不揮発性メモリと前記揮発性メモリとの間のデータ転送を制御するコントローラと、前記不揮発性メモリと前記揮発性メモリとの間に設けられ、本体データおよびパリティデータを保持することが可能なＥＣＣバッファと、前記揮発性メモリから前記ＥＣＣバッファに書き込まれた本体データを用いてパリティ生成を行い、前記不揮発性メモリから前記ＥＣＣバッファに読み出された本体データおよびパリティデータからシンドローム生成を行うパリティシンドローム回路と、を具備する半導体記憶装置のテスト方法であって、前記揮発性メモリにテストパターンを書き込むステップと、前記揮発性メモリから前記ＥＣＣバッファに前記テストパターンを書き込むステップと、前記ＥＣＣバッファに書き込まれた前記テストパターンを用いてパリティデータを生成するステップと、前記ＥＣＣバッファから前記不揮発性メモリのページバッファに前記テストパターンおよびパリティデータを転送するステップと、前記ページバッファから前記不揮発性メモリのメモリセルアレイにテストパターンおよびパリティデータを書き込むことなく、前記ページバッファから前記ＥＣＣバッファに前記テストパターンおよびパリティデータを書き込むステップと、少なくとも前記ＥＣＣバッファに書き込まれたパリティデータを前記揮発性メモリに転送するステップとを備える半導体記憶装置のテスト方法を提供できる。
【００１５】
この発明の一態様によれば、主記憶部として機能する不揮発性メモリと、前記不揮発性メモリのバッファ部として機能する揮発性メモリと、前記不揮発性メモリと前記揮発性メモリとの間のデータ転送を制御するコントローラと、前記不揮発性メモリと前記揮発性メモリとの間に設けられ、本体データおよびパリティデータを保持することが可能なＥＣＣバッファと、スキャン情報を送信する論理回路と、ベクタ情報を格納するベクタ記憶回路と、前記ベクタ記憶回路から読み出したベクタ情報と前記論理回路から送信されるスキャン情報とを出力するベクタ読み出し回路と、期待値を読み出す期待値読み出し回路と、前記ベクタ読み出し回路の出力と期待値とを比較する比較回路と、前記比較回路の出力を判定する判定回路とを備える半導体記憶装置を提供できる。
【発明の効果】
【００１６】
この発明によれば、テスト動作の高速化を図ることが可能な半導体記憶装置およびそのテスト方法が得られる。
【発明を実施するための最良の形態】
【００１７】
以下、この発明の実施形態について図面を参照して説明する。また、以下の説明においては、主記憶部としてのＮＡＮＤ型フラッシュメモリと、バッファ部としてのＳＲＡＭとを１チップに集積された半導体記憶装置を一例に挙げて説明する。尚、この説明においては、全図にわたり共通の部分には共通の参照符号を付す。
【００１８】
［第１の実施形態］  
図１乃至図８を用いて、この発明の第１の実施形態に係る半導体記憶装置について説明する。  
１．構成例  
１−１．全体構成例  
まず、図１を用いて、本例に係る半導体記憶装置の全体構成例について説明する。  
図示するように、本例に係る半導体記憶装置は、主記憶部としてのＮＡＮＤ型フラッシュメモリ１と、バッファ部としてのＳＲＡＭ２と、上記ＮＡＮＤ型フラッシュメモリ１およびＳＲＡＭ２を制御する制御部としてのコントローラ３とを１つのチップに集積するものである。  
ＮＡＮＤ型フラッシュメモリ１について  
ＮＡＮＤ型フラッシュメモリ１は、メモリセルアレイ１１、センスアンプ１２、ページバッファ１３、ロウデコーダ１４、電圧供給回路１５、シーケンサ１６、およびオシレータ１７、１８を備える。  
ＮＡＮＤメモリセルアレイ（NAND Cell Array）１１は、ＮＡＮＤ型フラッシュメモリ１のメモリセルアレイであって、後述する複数のブロック（ＢＬＯＣＫ）により構成される。上記ブロックのそれぞれは、ビット線とワード線との交差位置にマトリクス状に配置された複数のメモリセルを備える。  
複数のメモリセルのそれぞれは、半導体基板上に順次積層されるトンネル絶縁膜、電荷蓄積層（浮遊電極）、ゲート間絶縁膜、および制御電極を備える積層構造である（図示せず）。各々のメモリセルは、例えば、浮遊電極に注入された電子の多寡による閾値電圧の変化に応じて、１ビットのデータを保持することが可能である。尚、閾値電圧の制御を細分化し、各々のメモリセルに２ビット以上のデータを保持する構成としても良い。また、メモリセルは、窒化膜に電子をトラップさせる方式を用いたＭＯＮＯＳ（Metal Oxide Nitride Oxide Silicon）構造であっても良い。  
センスアンプ（Ｓ／Ａ）１２は、上記メモリセルアレイ１１の１ページ分の読み出しデータを読み出す。ここでページ（ＰＡＧＥ）とは、ＮＡＮＤ型フラッシュメモリ１において一括してデータが書き込まれ、または読み出される単位を指し、例えば、同一のワード線に接続された複数のメモリセルが１ページを構成する。ページに関する詳細は後述する。  
ページバッファ（Page Buffer）１３は、シーケンサ１６の制御に従い、１ページ分の読み出しまたは書き込みデータを一時的に格納する。即ち、読み出しの際はメモリセルアレイ１１から読み出した１ページ分のデータを一時的に保持し、書き込みの際はメモリセルアレイ１１に書き込むべき１ページ分のデータを一時的に保持する。  
ロウデコーダ（Row Dec.）１４は、メモリセルアレイ１１のワード線を選択する。また、ロウデコーダ１４は、読み出し、書き込み、消去等に必要な電圧をワード線に対して印加する。
【００１９】
電圧供給回路（Voltage Supply）１５は、シーケンサ１６の制御に従い、読み出し、書き込み、消去等に必要な内部電圧（Internal Voltage）を生成し、例えば、ロウデコーダ１４に供給する。  
ＮＡＮＤシーケンサ（NAND Sequencer）１６は、ＮＡＮＤアドレス／コマンド発生回路（NAND Add/Command Generator）３１で発行されたＮＡＮＤ型フラッシュメモリ１へのコマンド信号（NAND I/F Command）を受けて、ＮＡＮＤ型フラッシュメモリ１への書き込み、読み出し、消去等のＮＡＮＤ型フラッシュメモリ１全体の制御を行う。  
オシレータ（ＯＳＣ）１７は、ＮＡＮＤシーケンサ（NAND Sequencer）１６の内部制御のための内部クロック（Clock）を発生する。  
オシレータ（ＯＳＣ）１８は、メインステートマシン（State Machine）３３の内部制御のための内部クロック（Clock）を発生する。  
ＳＲＡＭ２について  
ＳＲＡＭ２は、メモリセルアレイ２１、ロウデコーダ２２、センスアンプ２３、ＥＣＣバッファ２４、ＥＣＣエンジン２５、ＳＲＡＭバッファ２６、アクセスコントローラ２７、バースト読み出し／書き込みバッファ２８、およびユーザインターフェイス２９を備える。  
ＳＲＡＭメモリセルアレイ（SRAM Cell Array）２１は、ＮＡＮＤ型フラッシュメモリ１へプログラムする書き込みデータや、ＮＡＮＤ型フラッシュメモリ１からロードした読み出しデータを一時的に保持し、外部ホスト装置とやり取りするためのバッファとして使用するためのものである。ＳＲＡＭメモリセルアレイ２１は、ワード線とビット線対との交差位置にマトリクス状に配置された複数のメモリセル（ＳＲＡＭセル）を備える。  
ロウデコーダ（Row Dec.）２２は、ＳＲＡＭメモリセルアレイ（SRAM Cell Array）２１のワード線を選択するデコーダである。  
センスアンプ（Ｓ／Ａ）２３は、ＳＲＡＭセルからビット線に読み出したデータをセンス・増幅する。また、このセンスアンプ２３は、ＳＲＡＭバッファ２６内のデータをＳＲＡＭセルに書き込む際の負荷としても働く。  
ＥＣＣバッファ（ECC Buffer）２４は、ＳＲＡＭ２とＮＡＮＤページバッファ（NAND Page Buffer）１３との間に位置し、ＥＣＣ処理用（データロード時は誤り訂正，データプログラム時はパリティ発生）に一時的にデータを格納する。  
ＥＣＣエンジン（ECC Engine）２５は、ＥＣＣバッファ２４から入力されたデータ（Data）を誤り訂正し、訂正したデータ（Correct）を再びＥＣＣバッファ２４に出力する。  
ＳＲＡＭバッファ（SRAM Buffer）２６は、ＳＲＡＭメモリセルアレイ（SRAM Cell Array）２１へのデータ読み出し、書き込みを行うために、データを一時的に格納する。  
アクセスコントローラ（Access Controller）２７は、ユーザインターフェイス（User I/F）２９から入力されたアドレス、制御信号を受け、各内部回路に必要な制御を行う。  
バースト読み出し／書き込みバッファ（Burst Read/Write Buffer）２８は、データ読み出し／書き込みのために、データを一時的に保存するバッファである。  
ユーザインターフェイス（User I/F）２９は、ＮＯＲ型フラッシュメモリと同様のインターフェイス規格をサポートしている。ユーザインターフェイス２９は、外部ホスト装置との間で、アドレス、制御信号、データの入出力を行う。制御信号の一例は、半導体記憶装置全体を活性化するチップイネーブル信号／ＣＥ、アドレスをラッチさせるためのアドレスバリッド信号／ＡＶＤ、バースト読み出し用のクロックＣＬＫ、書き込み動作を活性化するライトイネーブル信号／ＷＥ、データの外部への出力を活性化するアウトプットイネーブル信号／ＯＥなどである。
【００２０】
コントローラ３について  
コントローラ３は、ＮＡＮＤアドレス／コマンド発生回路３１、ＮＡＮＤインターフェイスステートマシン（第２ステートマシン）３２、メインステートマシン（第１ステートマシン）３３、ＳＲＡＭアドレス／タイミング発生回路３４、レジスタ３５、およびコマンドユーザインターフェイス３６を備える。
【００２１】
ＮＡＮＤアドレス／コマンド発生回路（NAND Add/Command Generator）３１は、ＮＡＮＤインターフェイスステートマシン３２が制御する内部シーケンス動作において、必要に応じ、ＮＡＮＤシーケンサ１６に対するアドレス・コマンドなどの制御信号（NAND I/F Command）を発行する。ＮＡＮＤアドレス／コマンド発生回路３１は、ＮＡＮＤ型フラッシュメモリ１の外部インターフェイス規格に従って、アドレス・コマンドなどを発行する。
【００２２】
例えば、ＮＡＮＤアドレス／コマンド発生回路３１は、チップイネーブル信号線（CEn_NAND）、ライトイネーブル信号線（WEn_NAND）、コマンドラッチイネーブル信号線（CLEn_NAND）、アドレスラッチイネーブル信号線（ALEn_NAND）、リードイネーブル信号線（REn_NAND）などを介して、ＮＡＮＤ型フラッシュメモリ１を制御する。また、ＮＡＮＤアドレス／コマンド発生回路３１は、データ入力信号線（DIN_NAND：NAND Data Bus）を介して、ＮＡＮＤ型フラッシュメモリ１にアドレスおよびコマンドを転送する。
【００２３】
ＮＡＮＤインターフェイスステートマシン（NAND I/F State Machine）３２は、メインステートマシン３３の制御に応じ、オシレータ１８からの内部クロック（Clock）に同期して、ＮＡＮＤアドレス／コマンド発生回路３１が生成する後述の制御信号（NAND I/F Commamd）の発行について制御を行う。即ち、ＮＡＮＤインターフェイスステートマシン３２は、ＮＡＮＤ型フラッシュメモリ１へのコマンドサイクル発生機能を持つ。換言すれば、ＮＡＮＤインターフェイスステートマシン３２は、データ転送を司るメインステートマシン３３の下階層に位置し、主記憶部であるＮＡＮＤ型フラッシュメモリ１への命令発行を司るステートマシンである。
【００２４】
より具体的には、このＮＡＮＤインターフェイスステートマシン３２は、メインステートマシン３３の状態遷移のうち、ＮＡＮＤ型フラッシュメモリ１へコマンドを発行する必要のある状態であることを検知して起動し、その状態に応じたコマンドサイクルを発生する。
【００２５】
一方、メインステートマシン３３は、ＮＡＮＤインターフェイスステートマシン３２のコマンドサイクル発生が完了したことを受けて次の状態へ遷移する。メインステートマシン３３の状態遷移が発生すると、ＮＡＮＤインターフェイスステートマシン３２の全てのレジスタをクリアし、動作を初期化させておく。これにより、メインステートマシン３３の１つの状態の中で、ＮＡＮＤインターフェイスステートマシン３２の状態遷移が完結するという階層構造になっている。
【００２６】
メインステートマシン３３がサポートするファンクションは、例えば、ロード（Load）、プログラム（Program）、消去（Erase）など多数あり、これらのファンクション動作中に、ＮＡＮＤ型フラッシュメモリ１へ発行するコマンドとしても種類が多数あるが、同様の仕組みで、メインステートマシン３３と、ＮＡＮＤ用ステートマシンであるＮＡＮＤインターフェイスステートマシン３２との階層構造を実現できる。
【００２７】
メインステートマシン（Main State Machine）３３は、上記のように、コマンドユーザインターフェイス３６から発行された内部コマンド信号（Command）を受けて、内部コマンド信号の種類に応じた内部シーケンス動作を制御する。
【００２８】
本実施形態に係る半導体記憶装置では、ＮＡＮＤ型フラッシュメモリ１が主記憶部として機能し、ＳＲＡＭ２がバッファ部として機能する。従って、ＮＡＮＤ型フラッシュメモリ１からデータを外部に読み出す際には、まずＮＡＮＤ型フラッシュメモリ１のメモリセルアレイ１１から読み出されたデータが、ページバッファ１３を介してＳＲＡＭメモリセルアレイ２１に格納される。その後、ＳＲＡＭメモリセルアレイ２１内のデータがユーザインターフェイス２９に転送されて、外部に出力される。
【００２９】
他方、データをＮＡＮＤ型フラッシュメモリ１に記憶させる際には、まず外部から与えられたデータが、ユーザインターフェイス２９を介してＳＲＡＭメモリセルアレイ２１に格納される。その後、ＳＲＡＭメモリセルアレイ２１内のデータがページバッファ１３へ転送されて、メモリセルアレイ１１に書き込まれる。
【００３０】
以下では、データがメモリセルアレイ１１から読み出されてから、ページバッファ１３を介してＳＲＡＭメモリセルアレイ２１に転送されるまでの動作を、データの“ロード（Load）”と呼ぶ。また、ＳＲＡＭメモリセルアレイ２１内のデータが、ユーザインターフェイス２９内において後述するバースト読み出し／書き込みバッファ２８を介してユーザインターフェイス２９に転送されるまでの動作を、データの“リード（Read）”と呼ぶ。
【００３１】
更に、ＮＡＮＤ型フラッシュメモリ１に記憶させるべきデータが、ユーザインターフェイス２９からバースト読み出し／書き込みバッファ２８を介してＳＲＡＭメモリセルアレイ２１に転送されるまでの動作を、データの“ライト（Write）”と呼ぶ。また、ＳＲＡＭメモリセルアレイ２１内のデータがページバッファ１３に転送されて、ＮＡＮＤ型フラッシュメモリ１のメモリセルアレイ１１に書き込まれるまでの動作を、データの“プログラム（Program）”と呼ぶ。
【００３２】
ＳＲＡＭアドレス／タイミング発生回路（SRAM Add/Timing）３４は、メインステートマシン３３が制御する内部シーケンス動作において必要に応じ、ＳＲＡＭ２に対するアドレス／タイミングなどの制御信号を生成する。
【００３３】
レジスタ（Register）３５は、ファンクションの動作状態を設定するためのレジスタである。レジスタ３５に対しては外部アドレス空間の一部が割り当てられ、ユーザインターフェイス２９を介して外部から送信されたコマンドなどが保持される。
【００３４】
コマンドユーザインターフェイス（CUI）３６は、所定のデータがレジスタ（Register）３５に書き込まれることで、ファンクション実行コマンドが与えられたことを認識し、内部コマンド信号（Command）を発行する。
【００３５】
１−２．メインステートマシン３３について  
次に、図２を用いて、メインステートマシン３３の状態遷移について説明する。ここでは、ロードファンクションを一例として説明するが、その他のファンクション（例えば、プログラムファンクション）についても同様の仕組みで、メインステートマシン３３と、ＮＡＮＤ用ステートマシンであるＮＡＮＤインターフェイスステートマシン３２の階層構造を実現できる。  
図示するように、まず、ユーザインターフェイス２９を介してレジスタ３５にロード（Load）コマンドが設定されると、コマンドユーザインターフェイス３６がこのコマンド設定を検知し、内部コマンド（Command）を生成する。これにより、ロードコマンドが成立する。ロードコマンドが成立すると、メインステートマシン３３は、停止状態（Idle）から回路初期化状態に遷移する。回路初期化状態において、メインステートマシン３３は、ロードファンクションに必要とされる各回路の初期化を行う。
【００３６】
続いて、メインステートマシン３３は、ＮＡＮＤセンスコマンド発行状態に遷移する。メインステートマシン３３がＮＡＮＤセンスコマンド発行状態に遷移したことを検知して、ＮＡＮＤインターフェイスステートマシン３２が起動する。ＮＡＮＤインターフェイスステートマシン３２はセンスコマンドサイクルを生成し、ＮＡＮＤアドレス／コマンド発生回路３１に対して、センスコマンド発行を要求する。
【００３７】
ＮＡＮＤアドレス／コマンド発生回路３１からセンスコマンドを受けたＮＡＮＤシーケンサ１６は、ＮＡＮＤ型フラッシュメモリ１の内部回路を初期化し、メモリセルアレイ１１から読み出した１ページ分のデータをページバッファ１３に格納する。ページバッファ１３へのデータ格納が終了すると、ＮＡＮＤシーケンサ１６は、メインステートマシン３３にＮＡＮＤready（RDY）を通知する。
【００３８】
ＮＡＮＤインターフェイスステートマシン３２のセンスコマンドサイクル発生終了およびＮＡＮＤシーケンサ１６からのＮＡＮＤready通知を受けたメインステートマシン３３は、ＮＡＮＤリードコマンド発行状態に遷移する。メインステートマシン３３の状態遷移が発生したので、ＮＡＮＤインターフェイスステートマシン３２の全てのレジスタをクリアし、動作を初期化させる。
【００３９】
続いて、ＮＡＮＤインターフェイスステートマシン３２は、メインステートマシン３３がＮＡＮＤリードコマンド発行状態に遷移したことを検知して、リードコマンドサイクルを生成し、ＮＡＮＤアドレス／コマンド発生回路３１に対して、リードコマンド発行を要求する。ＮＡＮＤインターフェイスステートマシン３２のリードコマンドサイクル生成が終了すると、メインステートマシン３３は、ＮＡＮＤリードデータ取り出し状態に遷移する。
【００４０】
メインステートマシン３３がＮＡＮＤリードデータ取り出し状態に遷移した場合は、ＮＡＮＤ型フラッシュメモリ１へコマンドを発行する必要はないので、ＮＡＮＤインターフェイスステートマシン３２はコマンドサイクルを生成しない。メインステートマシン３３は、データバス（NAND Data Bus）を介してバッファ部２へデータを取り込むために必要な内部動作を行う。
【００４１】
バッファ部２へのデータ取出しが終了すると、メインステートマシン３３はＥＣＣデータ訂正状態に遷移する。メインステートマシン３３がＥＣＣデータ訂正状態に遷移した場合は、ＮＡＮＤ型フラッシュメモリ１へコマンドを発行する必要はないので、ＮＡＮＤインターフェイスステートマシン３２はコマンドサイクルを生成しない。
【００４２】
メインステートマシン３３は、ＥＣＣバッファ２４に格納されたデータのエラー訂正に必要な動作を行う。エラー訂正が終了し、ＳＲＡＭメモリセルアレイ２１にデータが格納されると、メインステートマシン３３は停止状態に戻る。以上の状態遷移により、メインステートマシン３３はロードファンクションを実行している。
【００４３】
１−３．ＮＡＮＤインターフェイスステートマシン３２について  
次に、図３乃至図７を用いて、ＮＡＮＤインターフェイスステートマシン３２について説明する。ＮＡＮＤインターフェイスステートマシン３２は、メインステートマシン３３の状態遷移を検知して、ＮＡＮＤ型フラッシュメモリ１へのコマンド発行が必要であれば、所定のコマンドサイクルを生成する。  
状態遷移  
ＮＡＮＤインターフェイスステートマシン３２の状態遷移は、図３のように示される。図示するように、メインステートマシン３３がＮＡＮＤセンスコマンド発行状態に遷移したことを検知した場合、ＮＡＮＤインターフェイスステートマシン３２は、ＮＡＮＤ型フラッシュメモリ１の内部回路の初期化が終了した後、順次、コマンドＣＭＤ０、アドレスＡＤＤ０〜ＡＤＤ３、コマンドＣＭＤ１のシーケンスによりコマンドサイクルを発生する。コマンドサイクルの発生が終了すると、ＮＡＮＤインターフェイスステートマシン３２は、コマンド発行終了処理を行う。
【００４４】
一方、メインステートマシン３３がＮＡＮＤリードコマンド発行状態に遷移したことを検知した場合、ＮＡＮＤインターフェイスステートマシン３２は、ＮＡＮＤ型フラッシュメモリ１の内部回路の初期化が終了した後、順次、コマンドＣＭＤ０、アドレスＡＤＤ０、ＡＤＤ１、コマンドＣＭＤ１のシーケンスによりコマンドサイクルを発生する。コマンドサイクルの発生が終了すると、ＮＡＮＤインターフェイスステートマシン３２は、コマンド発行終了処理を行う。
【００４５】
また、図３では示していないが、メインステートマシン３３がＮＡＮＤプログラムコマンド発行状態（ＮＡＮＤページバッファロードコマンド状態）に遷移したことを検知した場合は、ＮＡＮＤインターフェイスステートマシン３２は、ＮＡＮＤ型フラッシュメモリ１の内部回路の初期化が終了した後、順次、コマンドＣＭＤ０、アドレスＡＤＤ０〜ＡＤＤ３のシーケンスによりコマンドサイクルを発生する。コマンドサイクルの発生が終了すると、ＮＡＮＤインターフェイスステートマシン３２は、コマンド発行終了処理を行う。
【００４６】
尚、これらのアドレスおよびコマンドは、ＮＡＮＤインターフェイスステートマシン３２の制御を受けたＮＡＮＤアドレス／コマンド発生回路３１が、ＮＡＮＤ型フラッシュメモリ１に対して発行する。
【００４７】
出力信号真理値  
ＮＡＮＤアドレス／コマンド発生回路３１は、ＮＡＮＤインターフェイスステートマシン３２の制御を受けて、ＮＡＮＤシーケンサ１６に対するアドレス・コマンドなどの制御信号（NAND I/F Command）を生成する。上記制御信号（NAND I/F Command）の出力信号真理値は、図４のように示される。
【００４８】
図示するように、ＮＡＮＤ型フラッシュメモリ１に対してコマンドＣＭＤ０、ＣＭＤ１、アドレスＡＤＤ０〜ＡＤＤ３を入力する場合、チップイネーブル信号線（CEn_NAND）を”０”状態とする。チップイネーブル信号線（CEn_NAND）を”０”状態とすることで、ＮＡＮＤ型フラッシュメモリ１が活性化する。尚、チップイネーブル信号線（CEn_NAND）が”１”状態の場合、ＮＡＮＤ型フラッシュメモリ１はスタンバイ状態となる。
【００４９】
ＮＡＮＤ型フラッシュメモリ１に対してコマンドＣＭＤ０、ＣＭＤ１、アドレスＡＤＤ０〜ＡＤＤ３を入力する場合、ライトイネーブル信号線（WEn_NAND）を”０”状態とする。ライトイネーブル信号線（WEn_NAND）は、データ入力信号線（DIN_NAND）からデータの取り込みを制御する。
【００５０】
ＮＡＮＤ型フラッシュメモリ１に対してコマンドＣＭＤ０、ＣＭＤ１を入力する場合、コマンドラッチイネーブル信号線（CLEn_NAND）を”１”状態とする。一方、ＮＡＮＤ型フラッシュメモリ１に対してアドレスＡＤＤ０〜ＡＤＤ３を入力する場合、コマンドラッチイネーブル信号線（CLEn_NAND）を”０”状態とする。コマンドラッチイネーブル信号線（CLEn_NAND）は、ＮＡＮＤ型フラッシュメモリ１内部のコマンドレジスタ（図示略）へのコマンドの取り込みを制御する。
【００５１】
ＮＡＮＤ型フラッシュメモリ１に対してコマンドＣＭＤ０、ＣＭＤ１を入力する場合、アドレスラッチイネーブル信号線（ALEn_NAND）を”０”状態とし、ＮＡＮＤ型フラッシュメモリ１に対してアドレスＡＤＤ０〜ＡＤＤ３を入力する場合、アドレスラッチイネーブル信号線（ALEn_NAND）を”１”状態とする。アドレスラッチイネーブル信号線（ALEn_NAND）は、ＮＡＮＤ型フラッシュメモリ１内部のアドレスレジスタ（図示略）へのアドレスの取り込みを制御する。
【００５２】
データ入力信号線（DIN_NAND）には、各コマンドに応じたデータが入力される。コマンドＣＭＤ０、ＣＭＤ１を取り込む場合、センスコマンド、リードコマンドなどに応じたデータが入力される。また、アドレスＡＤＤ０〜ＡＤＤ３を取り込む場合、メモリセルアレイ１１内でのデータ格納位置を示すブロックアドレス、ページアドレス、カラムアドレスなどのデータが入力される。
【００５３】
ＮＡＮＤ型フラッシュメモリ１に対してコマンドＣＭＤ０、ＣＭＤ１、またはアドレスＡＤＤ０〜ＡＤＤ３を入力する場合、リードイネーブル信号線（REn_NAND）を”１”状態とする。尚、リードイネーブル信号線（REn_NAND）は、ＮＡＮＤ型フラッシュメモリ１からのデータ出力を制御し、データ出力を行う際は”０”状態とする。
【００５４】
以下、より具体的に、ＮＡＮＤアドレス／コマンド発生回路３１のセンス、リード、プログラムコマンドシーケンスについて説明する。
【００５５】
センスコマンドシーケンス  
センスコマンドシーケンスは、図５のように示される。メインステートマシン３３がＮＡＮＤセンスコマンド発行状態に遷移したことをＮＡＮＤインターフェイスステートマシン３２が検知し、ＮＡＮＤアドレス／コマンド発生回路３１からＮＡＮＤシーケンサ１６にセンスコマンドおよびアドレスが入力されると、ページバッファ１３に１ページ分のデータが読み出される。尚、図示するように、このコマンドシーケンスにおいて、リードイネーブル信号線（REn_NAND）は、常に”１”状態である。  
時刻ｔ１の際、チップイネーブル信号線（CEn_NAND）が”０”状態、ライトイネーブル信号線（WEn_NAND）が”１”状態、アドレスラッチイネーブル信号線（ALE_NAND）が”０”状態で、コマンドラッチイネーブル信号線（CLE_NAND）が”１”状態となると、データ入力信号線（DIN_NAND<7:0>）からコマンドＣＭＤ０（００ｈ）が取り込まれる。  
続いて、時刻ｔ２の際、チップイネーブル信号線（CEn_NAND）が”０”状態、ライトイネーブル信号線（WEn_NAND）が”１”状態、コマンドラッチイネーブル信号線（CLE_NAND）が”０”状態で、アドレスラッチイネーブル信号線（ALE_NAND）が”１”状態となると、データ入力信号線（DIN_NAND<7:0>）からアドレスＡＤＤ０が取り込まれる。  
続いて、時刻ｔ２と同様のコマンドシーケンスにより、順次、アドレスＡＤＤ１〜ＡＤＤ３が取り込まれる。尚、本例では、４サイクルでメモリセルアレイ１１から読み出すデータのアドレスを指定しているが、アドレス指定のサイクル数はこれに限定されるものではなく、ＮＡＮＤ型フラッシュメモリ１の容量などに応じて適宜定められるものである。  
続いて、時刻ｔ３の際、チップイネーブル信号線（CEn_NAND）が”０”状態、ライトイネーブル信号線（WEn_NAND）が”１”状態、アドレスラッチイネーブル信号線（ALE_NAND）が”０”状態で、コマンドラッチイネーブル信号線（CLE_NAND）が”１”状態となると、データ入力信号線（DIN_NAND<7:0>）からコマンドＣＭＤ１（３０ｈ）が取り込まれる。
【００５６】
続いて、時刻ｔ４の際、チップイネーブル信号線（CEn_NAND）が”１”状態、ライトイネーブル信号線（WEn_NAND）が”１”状態、コマンドラッチイネーブル信号線（CLE_NAND）が”０”状態、アドレスラッチイネーブル信号線（ALE_NAND）が”０”状態で、センスコマンドシーケンスを終了する。  
リードコマンドシーケンス  
リードコマンドシーケンスは、図６のように示される。メインステートマシン３３がＮＡＮＤリードコマンド発行状態に遷移したことをＮＡＮＤインターフェイスステートマシン３２が検知し、ＮＡＮＤアドレス／コマンド発生回路３１からＮＡＮＤシーケンサ１６にリードコマンドおよびアドレス（カラムアドレス）が入力されると、ページバッファ１３に格納されたデータが、入力されたカラムアドレスから順にシリアルに出力される。尚、図示するように、このコマンドシーケンスにおいて、リードイネーブル信号線（REn_NAND）は、常に”１”状態である。  
時刻ｔ１の際、チップイネーブル信号線（CEn_NAND）が”０”状態、ライトイネーブル信号線（WEn_NAND）が”１”状態、アドレスラッチイネーブル信号線（ALE_NAND）が”０”状態で、コマンドラッチイネーブル信号線（CLE_NAND）が”１”状態となると、データ入力信号線（DIN_NAND<7:0>）からコマンドＣＭＤ０（０５ｈ）が取り込まれる。
【００５７】
続いて、時刻ｔ２の際、チップイネーブル信号線（CEn_NAND）が”０”状態、ライトイネーブル信号線（WEn_NAND）が”１”状態、コマンドラッチイネーブル信号線（CLE_NAND）が”０”状態で、アドレスラッチイネーブル信号線（ALE_NAND）が”１”状態となると、データ入力信号線（DIN_NAND<7:0>）からアドレスＡＤＤ０が取り込まれる。  
続いて、時刻ｔ２と同様のコマンドシーケンスにより、アドレスＡＤＤ１が取り込まれる。リードコマンドシーケンスでは、ページバッファ１３に格納された１ページ分のデータに対応するカラムアドレスを指定するので、アドレス指定に必要なサイクル数はセンスコマンドシーケンスよりも少なく、例えば２サイクルで取り込みが終了する。  
続いて、時刻ｔ３の際、チップイネーブル信号線（CEn_NAND）が”０”状態、ライトイネーブル信号線（WEn_NAND）が”１”状態、アドレスラッチイネーブル信号線（ALE_NAND）が”０”状態で、コマンドラッチイネーブル信号線（CLE_NAND）が”１”状態となると、データ入力信号線（DIN_NAND<7:0>）からコマンドＣＭＤ１（Ｅ０ｈ）が取り込まれる。
【００５８】
続いて、時刻ｔ４の際、チップイネーブル信号線（CEn_NAND）が”０”状態、ライトイネーブル信号線（WEn_NAND）が”１”状態、コマンドラッチイネーブル信号線（CLE_NAND）が”０”状態、アドレスラッチイネーブル信号線（ALE_NAND）が”０”状態で、リードコマンドシーケンスを終了する。  
プログラムコマンドシーケンス  
プログラムコマンドシーケンスは、図７のように示される。メインステートマシン３３がＮＡＮＤプログラムコマンド発行状態（ＮＡＮＤページバッファロードコマンド状態）に遷移したことをＮＡＮＤインターフェイスステートマシン３２が検知し、ＮＡＮＤ型フラッシュメモリ１にプログラムコマンド（ページバッファロードコマンド）、アドレス、およびデータが入力されると、ページバッファ１３にデータが転送される。尚、図示するように、このコマンドシーケンスにおいて、リードイネーブル信号線（REn_NAND）は、常に”１”状態である。  
時刻ｔ１の際、チップイネーブル信号線（CEn_NAND）が”０”状態、ライトイネーブル信号線（WEn_NAND）が”１”状態、アドレスラッチイネーブル信号線（ALE_NAND）が”０”状態で、コマンドラッチイネーブル信号線（CLE_NAND）が”１”状態となると、データ入力信号線（DIN_NAND<7:0>）からコマンドＣＭＤ０（８０ｈ）が取り込まれる。  
続いて、時刻ｔ２の際、チップイネーブル信号線（CEn_NAND）が”０”状態、ライトイネーブル信号線（WEn_NAND）が”１”状態、コマンドラッチイネーブル信号線（CLE_NAND）が”０”状態で、アドレスラッチイネーブル信号線（ALE_NAND）が”１”状態となると、データ入力信号線（DIN_NAND<7:0>）からアドレスＡＤＤ０が取り込まれる。  
続いて、時刻ｔ２と同様のコマンドシーケンスにより、順次、アドレスＡＤＤ１〜ＡＤＤ３が取り込まれる。  
続いて、時刻ｔ３の際、チップイネーブル信号線（CEn_NAND）が”１”状態、ライトイネーブル信号線（WEn_NAND）が”１”状態、コマンドラッチイネーブル信号線（CLE_NAND）が”０”状態、アドレスラッチイネーブル信号線（ALE_NAND）が”０”状態となる。  
以降、図３および図７では省略しているが、データ入力信号線（DIN_NAND<7:0>）を介してページバッファ１３にデータが格納され、プログラムコマンド（セルアレイプログラムコマンド：１０ｈ）が入力された後、メモリセルアレイ１１への書き込みが開始される。メモリセルアレイ１１への書き込みは、ページバッファ１３への読み出しおよびベリファイの繰り返しを伴い、書き込みが終了した場合、または、規定の繰り返し回数に達した場合、プログラムコマンドシーケンスを終了する。  
＜２．第１の実施形態に係る効果＞  
第１の実施形態に係る半導体記憶装置によれば、少なくとも下記（１）の効果が得られる。  
（１）設計を容易化でき、回路面積の低減に有利である。
【００５９】
上記のように、本例に係る半導体記憶装置は、ＮＡＮＤ型フラッシュメモリ１へのコマンドサイクル発生機能を持つＮＡＮＤインターフェイスステートマシン３２を備えている。換言すれば、このＮＡＮＤインターフェイスステートマシン３２は、データ転送を司るメインステートマシン３３の下階層に位置し、主記憶部であるＮＡＮＤ型フラッシュメモリ１への命令発行を司るステートマシンである。
【００６０】
より具体的には、図２、図３に示したように、このＮＡＮＤインターフェイスステートマシン３２は、メインステートマシン３３の状態遷移のうち、ＮＡＮＤ型フラッシュメモリ１へコマンドを発行する必要のある状態であることを検知して起動し、その状態に応じたコマンドサイクルを発生する。
【００６１】
図２、図３に示すように、メインステートマシン３３は、ＮＡＮＤインターフェイスステートマシン３２のコマンドサイクル発生が完了したことを受けて次の状態へ遷移する。メインステートマシン３３の状態遷移が発生すると、ＮＡＮＤインターフェイスステートマシン３２の全てのレジスタをクリアし、動作を初期化させておく。これにより、メインステートマシン３３の１つの状態の中で、ＮＡＮＤインターフェイスステートマシン３２の状態遷移が完結するという階層構造になっている。
【００６２】
メインステートマシン３３がサポートするファンクションは、ロード（Load）の他にプログラム（Program）、消去（Erase）など多数あり、これらのファンクション動作中に、ＮＡＮＤ型フラッシュメモリ１へ発行するコマンドとしても種類が多数あるが、同様の仕組みで、メインステートマシン３３と、ＮＡＮＤ用ステートマシンであるＮＡＮＤインターフェイスステートマシン３２との階層構造を実現できる。
【００６３】
例えば、ＮＡＮＤインターフェイスステートマシン３２を備えていない構成の場合、メインステートマシン３３の状態遷移は、図８のように示される。尚、ここでは、ロードファンクションを一例として説明するが、その他のファンクション（例えば、プログラムファンクション）についても同様である。  
ＮＡＮＤインターフェイスステートマシン３２を備えていない構成では、図８中に破線で囲って示す部分のＮＡＮＤセンスコマンドサイクル１〜ＮＡＮＤセンスコマンドサイクル６、およびＮＡＮＤリードコマンドサイクル１〜ＮＡＮＤリードコマンドサイクル４を逐一記述する必要があり、異なるファンクション間でこれらコマンドサイクルを共有することは困難である。これにより、ステート数の大幅な増大を招き、ステートマシンの設計が複雑化し、回路面積も増大してしまう点で不利である。
【００６４】
しかし、本例では、データ転送を司るメインステートマシン３３の下階層に、主記憶部であるＮＡＮＤ型フラッシュメモリ１への命令発行を司るＮＡＮＤインターフェイスステートマシン３２を備えているため、少なくとも、図８中に破線で囲って示す部分のＮＡＮＤセンスコマンドサイクル１〜ＮＡＮＤセンスコマンドサイクル６、およびＮＡＮＤリードコマンドサイクル１〜ＮＡＮＤリードコマンドサイクル４を、それぞれＮＡＮＤセンスコマンド発行状態、およびＮＡＮＤリードコマンド発行状態として単純化して記述することができる。
【００６５】
その結果、メインステートマシン３３の下階層を構成するＮＡＮＤインターフェイスステートマシン３２において、図３に示したように、ＮＡＮＤ型フラッシュメモリ１に対して発生させる必要があるコマンドサイクルを異なるファンクション間で共有化することが可能となる。従って、ステートマシン３２、３３の設計を容易化でき、回路面積を低減できる点で有利である。
【００６６】
［第２の実施形態（ＥＣＣ回路テストに関する一例）］  
次に、第２の実施形態に係る半導体記憶装置について、図９および図１０を用いて説明する。この実施形態は、誤り訂正符号（ＥＣＣ：error correcting code）回路のテストに関するものである。この説明において、上記第１の実施形態と重複する部分の詳細な説明を省略する。
【００６７】
＜構成例（ＥＣＣエンジン２５）＞  
図９を用いて、本実施形態に係る半導体記憶装置の構成例について説明する。図示するように、本例に係るＥＣＣエンジン２５は、ＥＣＣ制御回路４１、パリティシンドローム４２、マルチプレクサ４３、およびエラーポジションデコーダ４４により構成される。
【００６８】
ＥＣＣ制御回路（ECC Control）４１は、ＳＲＡＭアドレス／タイミング発生回路３４より受けたアドレスおよびタイミングに従い、ＥＣＣバッファ２４のデータ入出力やパリティまたはシンドローム発生のタイミング制御を行うように、パリティシンドローム４２を制御する。
【００６９】
パリティシンドローム（Parity Syndrome）４２は、ＥＣＣ制御回路４１の制御を受けて、プログラムに際してはＥＣＣバッファ２４からＥＣＣ処理用のデータ（Data）の入力を受けパリティ生成を行う。生成したパリティは、ＥＣＣバッファ２４のパリティ保持領域に転送され、データバス（NAND Data Bus）を介してページバッファ１３に格納される。また、パリティシンドローム４２は、ＥＣＣ制御回路４１の制御を受けて、ロードに際してはＥＣＣバッファ２４からＥＣＣ処理用のデータ（Data）およびパリティの入力を受けてシンドローム生成を行う。
【００７０】
マルチプレクサ４３は、メインステートマシン３３から入力される制御信号（ECCTEST）に応じて、パリティシンドローム４２またはＥＣＣバッファ２４の出力を切り替えてエラーポジションデコーダ４４に出力する。より具体的には、マルチプレクサ４３は、通常のエラー訂正動作ではパリティシンドローム４２のシンドローム出力を受けて、エラーポジションデコーダ４４に出力する。
【００７１】
一方、後述するテスト時には、制御信号（ECCTEST）に応じて、ＥＣＣバッファ２４から不良検出率とデコーダの出力値があらかじめ分かっているデータパターンを、エラーポジションシンデコーダ４４に切り替えて出力する。エラーポジションシンデコーダ４４の出力結果はＥＣＣバッファ２４を介してＳＲＡＭメモリセルアレイ２１へ書き戻される。ＳＲＡＭメモリセルアレイ２１から読み出した（Read）出力値を、外部テスタにおいて期待値と比較することにより、エラーポジションデコーダ４４のテストを行うことができる。
【００７２】
エラーポジションデコーダ（Error Position Dec.）４４は、マルチプレクサ４３を介して、パリティシンドローム４２からのシンドローム入力を受け、データ誤りがあったビット（bit）のアドレス（Correct）をＥＣＣバッファ２４に出力する。
【００７３】
＜テストシーケンス＞  
次に、第２の実施形態に係る半導体記憶装置のＥＣＣテストシーケンスについて、図１０に則して説明する。尚、本実施形態に係るテストシーケンスでは、プログラムファンクション動作およびロードファンクション動作を流用しているため、両ファンクション動作中の、テストでは実行されないステップについても説明を加えている。  
（ＳＴ１−１）  
まず、ＳＲＡＭ２にテストパターンを書き込む。  
より具体的には、ユーザの指示を受けた外部テスタは、ユーザインターフェイス２９を介して、ＳＲＡＭ２内へテストパターンを書き込む。続いて、アクセスコントローラ２７は、プログラムするNANDアドレス・SRAMアドレス（Add）をレジスタ３５に設定する。続いて、外部テスタがユーザインターフェイス２９を通じて、プログラムコマンドをレジスタ３５に設定する。続いて、レジスタ３５にコマンドが書かれると、コマンドユーザインターフェイス３６が、コマンドであることを検知し、内部コマンド信号（Command）を生成する。ここで、プログラムコマンドが成立する。
【００７４】
プログラムファンクション動作  
（ＳＴ１−２）  
続いて、ＳＲＡＭ２からＮＡＮＤページバッファ１３へ、データ転送を行う。  
より具体的には、上記プログラムコマンド信号成立を受けて、メインステートマシン３３が起動する。続いて、メインステートマシン３３は、必要な回路初期化を行った後、ＮＡＮＤプログラムコマンド発行状態（具体的には、ＮＡＮＤページバッファロードコマンド状態）に遷移する。ここで、ＮＡＮＤページバッファロードコマンド状態とは、ＳＲＡＭ２からページバッファ１３へのデータ転送を制御する状態である。
【００７５】
ＮＡＮＤインターフェイスステートマシン３２は、メインステートマシン３３がＮＡＮＤページバッファロードコマンド発行状態に遷移したことを検知して、プログラムコマンドサイクル（ページバッファロードコマンドサイクル）を生成し、ＮＡＮＤアドレス／コマンド発生回路３１に対して、プログラムコマンド（ページバッファロードコマンド）発行を要求する。
【００７６】
続いて、メインステートマシン３３は、リードクロックをＳＲＡＭ２へ発行し、ＥＣＣデータバス２６へＳＲＡＭ２内のデータを読み出し、そのデータをＥＣＣバッファ２４へ転送する。
【００７７】
（ＳＴ１−３）  
続いて、メインステートマシン３３は、テストか否かの判断を行う。テストと判断された場合には、プログラムファンクション動作を終了し、ステップＳＴ１−６に続く。
【００７８】
（ＳＴ１−４）  
ステップＳＴ１−３でテストと判断されなかった場合には、メインステートマシン３３は、パリティデータ発生状態に遷移する。即ち、通常のプログラムファンクション動作を継続する。本実施形態に係るテストシーケンスでは、このようにプログラムファンクション動作を一部流用している。  
より具体的には、メインステートマシン３３は、ＳＲＡＭアドレス／タイミング発生回路３４を介して、ＥＣＣ制御回路４１に、ECC Parity発生開始制御信号を発行する。パリティシンドローム４２は、生成したパリティをＥＣＣバッファ２４へ書き込む。ＥＣＣバッファ２４に書き込まれたパリティデータは、ページバッファ１３に転送される。
【００７９】
（ＳＴ１−５）  
続いて、メインステートマシン３３は、ＮＡＮＤプログラムコマンド発行状態（具体的には、ＮＡＮＤセルアレイプログラムコマンド状態）に遷移する。ＮＡＮＤインターフェイスステートマシン３２は、メインステートマシン３３がＮＡＮＤセルアレイプログラムコマンド状態に遷移したことを検知して、プログラムコマンドサイクル（セルアレイプログラムコマンドサイクル）を生成し、ＮＡＮＤアドレス／コマンド発生回路３１に対して、プログラムコマンド（セルアレイプログラムコマンド）発行を要求する。
【００８０】
ＮＡＮＤアドレス／コマンド発生回路３１からプログラムコマンド（セルアレイプログラムコマンド）を受けたＮＡＮＤシーケンサ１６は、ＮＡＮＤページバッファ１３に格納されたデータをメモリセルアレイ１１へ書き込む。  
より具体的には、メインステートマシン３３およびＮＡＮＤインターフェイスステートマシン３２は、ＮＡＮＤデータバスへ、上記パリティデータを追加したデータを読み出し、ページバッファ１３へ転送する。続いて、ＮＡＮＤアドレス／コマンド発生回路３１は、レジスタ３５に設定されたＮＡＮＤアドレスへプログラムするよう、ＮＡＮＤシーケンサ１６に対してコマンドを発行する。
【００８１】
続いて、上記プログラムコマンド（セルアレイプログラムコマンド）を受けて、ＮＡＮＤシーケンサ１６は、必要な回路初期化を行った後、指定されたアドレスへのプログラム動作を行うために、電圧供給回路１５、ロウデコーダ１４、センスアンプ１２、ページバッファ１３を制御し、ページバッファ１３のデータを、ＮＡＮＤセルアレイ１１にプログラムする。
【００８２】
続いて、ＮＡＮＤシーケンサ１６は、ＮＡＮＤ型フラッシュメモリ１の上記プログラム動作が終了したことを、メインステートマシン３３へ通知する。続いて、メインステートマシン３３は、ユーザがモニタするためのステータスなどをセットして、プログラムファンクション動作を終了する。
【００８３】
ロードファンクション動作  
（ＳＴ１−６）  
続いて、メインステートマシン３３は、テストか否かの判断を行う。テストと判断された場合には、ステップＳＴ１−８に続く。
【００８４】
（ＳＴ１−７）  
ステップＳＴ１−６でテストと判断されなかった場合には、メインステートマシン３３は、ＮＡＮＤセルアレイ１１中のセルをセンスしてページバッファ１３へ、センスデータを格納する。  
より具体的には、まず、ユーザの指示を受けた外部テスタは、ユーザインターフェイス２９を介して、ロードするNANDアドレス・SRAMアドレスをレジスタ３５に設定する。
【００８５】
続いて、ユーザから指示を受けた外部ホスト装置は、ユーザインターフェイス２９を通じて、ロードコマンドをレジスタ３５に設定する。続いて、レジスタ３５にコマンドが書かれると、コマンドユーザインターフェイス３６がコマンドであることを検知し、内部コマンド信号を生成する。ここで、ロードコマンドが成立する。
【００８６】
続いて、ロードコマンド信号成立を受けて、メインステートマシン３３が起動する。続いて、メインステートマシン３３は、必要な回路初期化を行った後、ＮＡＮＤセンスコマンド状態に遷移する。
【００８７】
ＮＡＮＤインターフェイスステートマシン３２は、メインステートマシン３３がＮＡＮＤセンスコマンド状態に遷移したことを検知して、センスコマンドサイクルを生成し、ＮＡＮＤアドレス／コマンド発生回路３１に対して、センスコマンドを発行するよう要求する。
【００８８】
続いて、ＮＡＮＤコマンド発生回路３１は、レジスタ３５に設定されたＮＡＮＤアドレスをセンスするようＮＡＮＤシーケンサ１６へセンスコマンドを発行する。続いて、上記センスコマンドを受けてＮＡＮＤシーケンサ１６が起動する。
【００８９】
続いて、ＮＡＮＤシーケンサ１６は、必要な回路初期化を行った後、指定されたアドレスのセンス動作を行うために、電圧供給回路１６、ロウデコーダ１４、センスアンプ１２、ページバッファ１３を制御し、センスデータをページバッファ１３へ格納する。
【００９０】
続いて、ＮＡＮＤシーケンサ１６は、センス動作が終了したことを、メインステートマシン３３へ通知する。
【００９１】
（ＳＴ１−８）  
続いて、メインステートマシン３３は、ＮＡＮＤページバッファ１３からＳＲＡＭ２へデータ転送を行う。  
より具体的には、メインステートマシン３３は、ＮＡＮＤインターフェイスステートマシン３２のセンスコマンドサイクル発生が終了したことを受けて、ＮＡＮＤリードコマンド状態に遷移する。ここで、メインステートマシン３３の状態遷移が発生したので、ＮＡＮＤインターフェイスステートマシン３２の全てのレジスタをクリアし、動作を初期化させる。
【００９２】
ＮＡＮＤインターフェイスステートマシン３２は、メインステートマシン３３がＮＡＮＤリードコマンド状態に遷移したことを検知して、リードコマンドサイクルを生成し、ＮＡＮＤアドレス／コマンド発生回路３１に対して、リードコマンドを発行するよう要求する。
【００９３】
続いて、ＮＡＮＤコマンド発生回路３１からリードコマンドを受けて、ＮＡＮＤシーケンサ１６が、ページバッファ１３をリード可能なようにセットする。
【００９４】
続いて、メインステートマシン３３はＮＡＮＤリードデータ取り出し状態に遷移し、リードコマンド（クロック）をＮＡＮＤシーケンサ１６へ発行し、ＮＡＮＤデータバス（NAND Data Bus）へページバッファ１３内のデータを読み出し、そのデータをＥＣＣバッファ２４へ転送する。
【００９５】
続いて、メインステートマシン３３はＥＣＣデータ訂正状態に遷移し、ＥＣＣ訂正開始制御信号を発行する。続いて、パリティシンドローム４２が、上記制御信号を受けて、シンドロームを生成する。
【００９６】
続いて、マルチプレクサ４３は、メインステートマシン３３から入力される制御信号（ECCTEST）に応じて、パリティシンドローム４２またはＥＣＣバッファ２４の出力を切り替えてエラーポジションデコーダ４４に出力する。
【００９７】
続いて、パリティシンドローム回路４２が生成したシンドロームを元に、エラーポジションデコーダ４４がデータ誤り位置を決定し、誤ったデータを反転させる。
【００９８】
続いて、ＥＣＣデータバスへ、エラー訂正されたデータを読み出し、ＳＲＡＭバッファ２６へ転送する。
【００９９】
続いて、ＳＲＡＭメモリセルアレイ２１へエラー訂正されたデータを書き込む。
【０１００】
上記ステップＳＴ１−６〜ＳＴ１−８にて、ロードファンクション動作を終了する。
【０１０１】
（ＳＴ１−９）  
最後に、ＳＲＡＭメモリセルアレイ２１から、エラー訂正されたデータを読み出す。
【０１０２】
より具体的には、ユーザから指示を受けた外部テスタは、ユーザインターフェイス２９を通じて、ＳＲＡＭメモリセルアレイ２１から、エラー訂正されたデータを読み出す。
【０１０３】
＜第２の実施形態に係る効果＞  
上記のように、第２の実施形態に係る半導体記憶装置およびそのテスト方法によれば、上記（１）と同様の効果が得られる。さらに、本例では、少なくとも下記（２）の効果が得られる。
【０１０４】
（２）テスト動作の高速化に対して有利である。  
本例では、ＥＣＣ制御回路４１、パリティシンドローム４２、マルチプレクサ４３、およびエラーポジションデコーダ４４により構成されるＥＣＣエンジン２５を備えている。
【０１０５】
そのため、マルチプレクサ４３は、メインステートマシン３３から入力される制御信号（ECCTEST）に応じて、パリティシンドローム４２またはＥＣＣバッファ２４の出力を切り替えてエラーポジションデコーダ４４に出力する。より具体的には、マルチプレクサ４３は、通常のステップＳＴ１−１〜ＳＴ１−５の際のプログラムファンクション動作のエラー訂正動作では、パリティシンドローム４２の出力をエラーポジションデコーダ４４に出力する。
【０１０６】
しかしながら、ステップＳＴ１−６〜ＳＴ１−８の際のロードファンクション動作のテスト時には、制御信号（ECCTEST）に応じて、ＥＣＣバッファ４４から不良検出率とデコーダの出力値があらかじめ分かっているデータパターンを、エラーポジションシンデコーダ４４に切り替えて出力する。出力値を期待値と比較することにより、エラーポジションデコーダ４４のテストを行うことができる。
【０１０７】
より具体的には、図１０のシーケンス（ＳＴ１−１〜ＳＴ１−５）に示すプログラムファンクション動作では、ＮＡＮＤ型フラッシュメモリ１へのデータ書き込みシーケンスを流用し、ＳＲＡＭ２からページバッファ１３へデータ転送する。通常の動作では、この後ページバッファ１３からＮＡＮＤ型フラッシュメモリ１のセルへ書き込みを行うが、テスト時はそれを行わないようにする。
【０１０８】
また、ＥＣＣエンジン２５を経由してＳＲＡＭ２からページバッファ１３へデータ転送する際、通常はＥＣＣエンジン２５で発生したパリティデータを入力データに付加してＮＡＮＤページバッファ１３へ転送する。しかしながら、本例のテスト方法の際は、パリティデータ追加は行わず、入力データそのものをページバッファ１３へ転送するようにする。
【０１０９】
次に、図１０のシーケンス（ＳＴ１−６〜ＳＴ１−８）に示すロードファンクション動作では、ＮＡＮＤ型フラッシュメモリ１のデータ読み出しシーケンスを流用し、ページバッファ１３からＳＲＡＭ２へデータを転送する。通常の動作ではＮＡＮＤ型フラッシュメモリ１のメモリセルをセンスして、そのデータをページバッファ１３に格納する。しかしながら、本例のテスト時では、それを行わないようにする。また、エラーポジションシンデコーダ４４の入力として、制御信号（ECCTEST）に応じて、パリティシンドローム４２の出力から、ページバッファ１３からのデータに切り替える。これにより、ページバッファ１３に最初に格納されていたデータを入力としたエラーポジションシンデコーダ４４の出力を、ＳＲＡＭ２へ転送される。
【０１１０】
以上のシーケンスにより、あらかじめＳＲＡＭ２へ格納しておいたデータをテストパターンとして、エラーポジションシンデコーダ４４の出力値がＳＲＡＭ２へ書き戻され、そのデータを期待値と比較することで、エラーポジションシンデコーダ４４の不良を検出することが可能となる。
【０１１１】
このように、本例によれば、ＮＡＮＤ型フラッシュメモリ１経由でなく、ＥＣＣバッファ２４経由で、エラーポジションデコーダ４４の不良を検出することができる。その結果、テスト動作の高速化に対して有利である。
【０１１２】
例えば、本例の場合、ＮＡＮＤ型フラッシュメモリ１経由の際のテスト時間の２５０μｓ程度と比較すると、テスト時間を１０μｓ程度まで、高速化することができる。即ち、本例の場合では、テスト時間を、１／２５程度まで短縮化できる点で有利である。
【０１１３】
［第３の実施形態（ＥＣＣテストに関するその他の例）］  
次に、第３の実施形態に係る半導体記憶装置およびそのテスト方法について、図１１乃至図１３を用いて説明する。本例は、第２の実施形態と同様に、誤り訂正符号（ＥＣＣ：error correcting code）回路のテストに関するものである。この説明において、上記第２の実施形態と重複する部分の詳細な説明を省略する。
【０１１４】
＜構成例（ＥＣＣエンジン２５）＞  
図１１を用いて、本例に係る半導体記憶装置の構成例について、説明する。図示するように、本例は、ＳＲＡＭ２が備えるＥＣＣエンジン２５の構成について、上記第２の実施形態と相違する。
【０１１５】
ＥＣＣエンジン２５は、ＥＣＣ制御回路４１、パリティシンドローム４２、およびエラーポジションデコーダ４４により構成される。即ち、本例のＥＣＣエンジン２５は、第２の実施形態と異なり、マルチプレクサ４３を必要としない。ＥＣＣ制御回路４１、パリティシンドローム４２、およびエラーポジションデコーダ４４の各回路の機能は、第２の実施形態と同様である。
【０１１６】
本例は、後述するテストシーケンスにより、ＥＣＣエンジン２５内部におけるパリティシンドローム４２のテストを高速に行うことを可能とする。
【０１１７】
＜構成例（ＳＲＡＭアドレス／タイミング発生回路３４）＞  
図１２に示すように、本例に係るＳＲＡＭアドレス／タイミング発生回路３４は、タイミング発生回路４５、メインアドレス発生回路４６、パリティアドレス発生回路４７、およびマルチプレクサ４９により構成されている。
【０１１８】
タイミング発生回路４５は、ＳＲＡＭ２に対して所定のタイミング（Timing）を出力する。  
メインアドレス発生回路４６は、メインアドレス（Add Main）をマルチプレクサ４９に出力する。  
パリティアドレス発生回路４７は、パリティアドレス（Add Parity）をマルチプレクサ４９に出力する。  
マルチプレクサ４９は、レジスタ３５よりテストコマンドが制御信号として入力されると、メインアドレス（Add Main）からパリティアドレス（Add Parity）を、ＳＲＡＭ２に対して切り替えて出力する。
【０１１９】
上記の構成によれば、テストシーケンスにおいて詳述するが、通常は本体データを転送すべきＳＲＡＭ２のアドレスに、パリティビット（Parity Bitまたはパリティデータ）を転送するようデータを入れ替えることができる。
【０１２０】
そのため、図１３に示すように、外部仕様としてパリティビット（Parity Bit）に割り当てられたＳＲＡＭ領域はあるが、実際のパリティビットはその領域以上のサイズを必要とする場合であっても、パリティデータを全てＳＲＡＭ２へ転送することができる。
【０１２１】
例えば、図１３（ａ）はＮＡＮＤ型フラッシュメモリ１の単位記憶領域（ページ）、図１３（ｂ）はＳＲＡＭ２の単位記憶領域を示している。図示するように、単位記憶領域は、データ領域５１、５５と、冗長領域５２、５６により構成されている。ここで、ＮＡＮＤ型フラッシュメモリ１の冗長領域５２のサイズは、ＳＲＡＭ２の冗長領域５６のサイズよりも大きい（冗長領域５２＞冗長領域５６）。そのため、パリティビット（Parity Bit）の全てをＳＲＡＭ２へ転送できない場合が起こり得る。
【０１２２】
しかしながら、本例の構成によれば、パリティビット（Parity Bit）の一部をＳＲＡＭ２のデータ領域５５にも転送することができる。そのため、転送するパリティビットが、ＳＲＡＭ２の冗長領域５６の以上のサイズの場合であっても、パリティデータを全てＳＲＡＭ２へ転送することができる。
【０１２３】
＜テストシーケンス＞  
次に、本実施形態に係る半導体記憶装置のテストシーケンスについて、図１４に則して説明する。この説明においては、上記第２の実施形態と実質的に重複する部分についての説明を省略する。  
ステップＳＴ２−１については、上記第２の実施形態と実質的に同様であるため、詳細な説明を省略する。ただし、本例では、パリティデータの出力値があらかじめ分かっているデータパターンを入力する。
【０１２４】
プログラムファンクション動作
本例では、ステップ２−３およびステップ２−４について、上記第２の実施形態と相違する。パリティシンドローム４２のテストを行うためには、入力データに基づいてパリティシンドローム４２が生成したパリティデータを、ページバッファ１３に一度転送する必要がある。従って、ステップＳＴ２−３でパリティデータ発生およびページバッファ１３へのデータ転送を行い、ページバッファ１３に本体データおよびパリティデータが格納された後、ステップＳＴ２−４でテストか否かの判断を行う。
【０１２５】
ステップＳＴ２−４でテストと判断された場合は、上記第２の実施形態と同様に、ステップＳＴ２−５におけるページバッファ１３からメモリセルアレイ１１内のセルへの本体データおよびパリティビットの書き込みを省略する。
【０１２６】
ロードファンクション動作
本例では、ステップＳＴ２−７について、上記第２の実施形態と相違する。即ち、ステップＳＴ２−７の際、ＳＲＡＭ２は、ＳＲＡＭアドレス／タイミング発生回路３４の出力を受けて、転送アドレスをパリティデータ領域に変更する。  
より具体的には、マルチプレクサ４９は、レジスタ３５よりテストコマンドが制御信号として入力されると、メインアドレス（Add Main）からパリティアドレス（Add Parity）を、ＳＲＡＭ２に対して切り替えして出力する。そのため、通常は本体データを転送すべきＳＲＡＭ２のアドレスに、パリティビット（Parity Bitまたはパリティデータ）を転送するようデータを入れ替えることができる。
【０１２７】
その結果、図１３に示すように、外部仕様としてパリティビット（Parity Bit）に割り当てられたＳＲＡＭ領域はあるが、実際のパリティビットはその領域以上のサイズを必要とする場合であっても、パリティデータを全てＳＲＡＭ２へ転送することができる。
【０１２８】
続いて、ステップＳＴ２−９の際に、ＮＡＮＤページバッファ１３からＳＲＡＭ２へパリティデータを転送する。
【０１２９】
続いて、ステップＳＴ２−１０の際に、ＳＲＡＭメモリセルアレイ２１から読み出した（Read）出力値を、外部テスタにおいて期待値と比較することにより、パリティシンドローム４２のテストを行うことができる。
【０１３０】
尚、ステップＳＴ２−６でテストと判断された場合は、上記第２の実施形態と同様に、ステップＳＴ２−８におけるメモリセルアレイ１１内のセルのセンス、ページバッファ１３へのセンスデータの格納を省略する。
【０１３１】
＜第３の実施形態に係る効果＞  
上記のように、この実施形態に係る半導体記憶装置によれば、上記（１）および（２）と同様の効果が得られる。さらに、本例によれば、少なくとも下記（３）の効果が得られる。
【０１３２】
（３）転送するパリティビットが、ＳＲＡＭ２の冗長領域５６の以上のサイズの場合であっても、パリティデータを全てＳＲＡＭ２へ転送することができ、信頼性を向上できる。
【０１３３】
本例に係る構成では、タイミング発生回路４５、メインアドレス発生回路４６、パリティアドレス発生回路４７、およびマルチプレクサ４９により構成されるＳＲＡＭアドレス／タイミング発生回路３４を備えている。
【０１３４】
そのため、ステップＳＴ２−６の際に、マルチプレクサ４９は、レジスタ３５よりテストコマンドが制御信号として入力されると、メインアドレス（Add Main）からパリティアドレス（Add Parity）を、ＳＲＡＭ２に対して切り替えして出力する。そのため、通常は本体データを転送すべきＳＲＡＭ２のアドレスに、パリティビット（Parity Bitまたはパリティデータ）を転送するようデータを入れ替えることができる。
【０１３５】
ここで、図１３示すように、ＮＡＮＤ型フラッシュメモリ１の冗長領域５２のサイズは、ＳＲＡＭ２の冗長領域５６のサイズよりも大きい（冗長領域５２＞冗長領域５６）。そのため、パリティビット（Parity Bit）の全てをＳＲＡＭ２へ転送できない場合が起こりえる。
【０１３６】
しかしながら、本例の構成によれば、パリティビット（Parity Bit）の一部をＳＲＡＭ２のデータ領域５５にも転送することができる。そのため、転送するパリティビットが、ＳＲＡＭ２の冗長領域５６の以上のサイズの場合であっても、パリティデータを全てＳＲＡＭ２へ転送することができるため、信頼性を向上できる点で有利である。
【０１３７】
［第４の実施形態（Bistに適したスキャンテスト回路を更に備える一例）］  
次に、第４の実施形態に係る半導体記憶装置について、図１５および図１６を用いて説明する。この実施形態は、Bistに適したスキャンテスト回路７１を更に備える一例に関するものである。この説明において、上記第１の実施形態と重複する部分の詳細な説明を省略する。
【０１３８】
＜全体構成例＞  
図１５に図示するように、本例に係る半導体記憶装置は、ビストスキャン回路（Bist Scan）７１を更に備える点で、上記第１の実施形態と相違する。
【０１３９】
＜ビストスキャン回路７１の構成例＞  
次に、図１６を用いて、ビストスキャン回路７１の構成例について説明する。図示するように、本例のビストスキャン回路７１は、ベクタ記憶回路７５、ベクタ読み出し回路７６、期待値読み出し回路７７、比較回路７８、および判定回路７９により構成されている。
【０１４０】
ベクタ記憶回路７５は、スキャンテスト用のベクタを格納する。
【０１４１】
ベクタ読み出し回路７６は、メインステートマシン３３の制御に従い、オシレータ１８のクロック（Clock）に同期して、ベクタ記憶回路７５から読み出したベクタ情報、およびＥＣＣエンジン２５等の論理回路から送信されるスキャン情報を比較回路７８に出力する。
【０１４２】
期待値読み出し回路７７は、メインステートマシン３３およびＮＡＮＤインターフェイスステートマシン３２の制御に従い、例えば、ＮＡＮＤ型フラッシュメモリ１に格納された期待値を読み出し、比較回路７８に出力する。
【０１４３】
比較回路７８は、入力されたベクタ読み出し回路７６に係るスキャン情報と、期待値読み出し回路７７の出力である期待値とを比較する。
【０１４４】
判定回路７９は、比較回路７８の出力を判定し、判定結果をメインステートマシン３３へ出力する。
【０１４５】
＜ビストスキャンテスト方法＞  
本例に係るビストスキャンテスト方法は、以下のように行われる。  
まず、外部からユーザインターフェイス２９を介してスキャンテストコマンドが入力されると、コマンドレジスタ３５にその命令情報がラッチされる。
【０１４６】
続いて、ラッチされたスキャンテストコマンドが制御回路であるメインステートマシン３３に入力される。メインステートマシン３３は、オシレータ１８を制御して、内部クロックを起動させる。
【０１４７】
オシレータ１８から内部クロック（Clock）が、ビストスキャン回路（Bist Scan）７１に入力されると、ビストスキャンテストが開始される。
【０１４８】
即ち、メインステートマシン３３の制御に従い、ベクタ読み出し回路７６は、ベクタ情報記憶回路７５から、順にベクタ情報を読み出す。
【０１４９】
続いて、ベクタ読み出し回路７６は、オシレータ１８からの内部クロックに同期して、読み出したベクタ情報および論理回路であるＥＣＣエンジン２５等からのスキャン情報を、比較回路７８にデータ転送する。上記のように、ベクタ情報は、内部クロックに同期して、チェーン化され比較回路７８へ送られる。また、ベクタ読み出し回路７６からは、ベクタとＥＣＣエンジン２５等の論理回路に応じたスキャン情報とからなるスキャン出力が順次出力される。
【０１５０】
続いて、期待値読み出し回路７７は、メインステートマシン３３の制御に従い、ＮＡＮＤ型フラッシュメモリ１等から読み出した期待値を比較回路７８に出力する。
【０１５１】
続いて、比較回路７８は、ベクタ読み出し回路７６から入力されるスキャン出力と、期待値読み出し回路７７から出力される期待値情報とを比較し、例えば、一致している場合には”０”データ、不一致の場合には”１”データとし、一度でも”１”データが出力された場合には、結果”１”データに固定する出力を、判定回路７９に入力する。
【０１５２】
続いて、判定回路７９の判定回路出力が、例えば、”１”データであればＥＣＣエンジン２５等の論理回路のテスト不良の判定を、判定回路出力が”０”データであればテストＯＫの判定を、メインステートマシン３３を介して外部の既存のビスト（Bist）テスタ等に送信し、テスト終了となる。
【０１５３】
上記スキャンテスト命令を受けてからテスト終了するまでの期間は、レディ／ビジィ（Ready/Busy）回路として働くメインステートマシン３３は、ビジィ（Busy）情報を外部に出力する。テスト終了後、メインステートマシン３３は、ビジィ（Busy）情報からレディ（Ready）情報に切り替えて、外部に出力する。
【０１５４】
そのため、例えば、既存のビスト（Bist）テスタ等を用いる場合、ビストテスタ等は、スキャンテスト命令を、ビストスキャン回路７１に送り、ビジィ状態からレディ状態（Busy→Ready）にステータスが変わるのを待って、判定回路７９からのOK/NGの判定結果を受け取るだけで良い。そのため、既存のビストテスタでのスクリーニングテストを行うことができ、ＥＣＣエンジン２５等の論理回路を含めたビストスキャンテストを行うことが可能となる。
【０１５５】
また、上記オシレータ１８からの内部クロックClockは、外部クロックに、ベクタ読み出し回路７６から読み出された情報を外部入力とし、比較回路７８へ送られるデータをそのまま外部に出力することで通常のスキャンテストが可能となる。この際、故障解析シミュレーション等を適用すれば、不良品の故障箇所を特定し、物理解析等などにより、不良レイヤの特定や生産工程への対策へとつなげることができる点でもメリットがある。
【０１５６】
尚、ベクタ情報および期待値が格納される場所は、本例の場合に限られるものではない。ベクタ情報および期待値は、その記憶容量に応じて、例えば、レジスタ３５、マスクＲＯＭ、ＳＲＡＭメモリ２などに格納することができる。
【０１５７】
＜第４の実施形態に係る効果＞  
上記のように、本実施形態に係る半導体記憶装置によれば、上記（１）と同様の効果が得られる。さらに、本例によれば、少なくとも下記（４）の効果が得られる。
【０１５８】
（４）論理回路に対しても自己テストを行うことができ、ピン数の増大を防止できる。
【０１５９】
ここで、メモリデバイスのテストは、そのほとんどの不良はメモリセルの不良であることから、例えば、ウェハ（Wafer）テストでは、メモリを全面テストすることに重点がおかれることが多い。一方で、このテストの際、メモリを動かすためのＥＣＣエンジン２５等論理回路は、動かす程度である。ＥＣＣエンジン２５等の論理回路の不良率は、それが十分少ないことから、製品レベル段階でのパッケージテストにて実施するテスト工程を構成することが多い。
【０１６０】
しかしながら、メモリデバイスは、ＥＣＣエンジン２５等の論理回路部の回路規模が多くなる傾向にあるため、比較的小容量のメモリデバイスでは、論理回路の不良率が無視できなくなりつつある。そのため、ウェハテストの段階で、効率よく論理回路のスクリーニングをする機能を搭載する要求が強くなりつつある。
【０１６１】
ただし、ウェハテストでは、同時測定数を増やすために、入力ピン数を極力減らし、テストシーケンスや判定も内部で実施できる自己テスト（Bistテスト）が主流である。よってロジックデバイスでよく用いられるスキャンテスト手法をそのまま導入しにくい環境にあり、メモリのBistテストに適したスキャンテスト回路を構成する必要がある。
【０１６２】
上記のような傾向があるところ、本例では、ベクタ記憶部７５、ベクタ部読み出し回路７６、期待値読み出し回路７７、比較回路７８、および判定回路７９により構成されるビストスキャン回路７１を備えている。
【０１６３】
上記の構成およびビストスキャンテスト方法によれば、例えば、既存のビスト（Bist）テスタ等を用いる場合、ビストテスタ等は、スキャンテスト命令を、ビストスキャン回路７１に送り、ビジィ状態からレディ状態（Busy→Ready）にステータスが変わるのを待って、判定回路７９からのOK/NGの判定結果を受け取るだけで良い。そのため、既存のビストテスタでのスクリーニングテストを行うことができ、ＥＣＣエンジン２５等の論理回路を含めたビストスキャンテストを行うことが可能となる。
【０１６４】
ここで、スキャンテストを行う場合には、専用ピン（例えば、ピン数×１）が更に必要となるところ、本例では、かかるスキャンテストを自己テストピン（例えば、ピン数×３）のみで行うことができる。そのため、専用ピン（例えば、ピン数×１）を削減することができ、ピン数の増大を防止することができる点で有利である。
【０１６５】
また、上記オシレータ１８からの内部クロックClockは、外部クロックに、ベクタ読み出し回路７６から読み出された情報を外部入力とし、比較回路７８へ送られるデータをそのまま外部に出力することで通常のスキャンテストが可能となる。この際、故障解析シミュレーション等を適用すれば、不良品の故障箇所を特定し、物理解析等などにより、不良レイヤの特定や生産工程への対策へとつなげることができる点でもメリットがある。
【０１６６】
また、ピン数の増大を防止することで、多数チップの同時テストが可能となる。また、テストコマンド入力後は個々のチップ内部で自動的に論理回路のテストが行われるため、テスト時間が長いチップによってその他のチップが律則されることは無い。従って、テスト動作の高速化を図ることが可能となる。
【０１６７】
［ＮＡＮＤセルアレイ１１のブロックＢＬＯＣＫの構成例］  
次に、ＮＡＮＤセルアレイ１１を構成するブロックＢＬＯＣＫの構成例について、図１７を用いて説明する。ここでは、１つのブロックＢＬＯＣＫ１を例に挙げて説明する。また、このブロックＢＬＯＣＫ１中のメモリセルトランジスタは、一括して消去される。即ち、ブロックは消去単位である。
【０１６８】
ブロックＢＬＯＣＫ１は、ワード線方向（ＷＬ方向）に配置された複数のメモリセル列（メモリセルユニット）ＭＵから構成される。メモリセル列ＭＵは、電流経路が直列接続される８個のメモリセルトランジスタＭＴからなるＮＡＮＤストリングと、ＮＡＮＤストリングの一端に接続される選択ランジスタＳ１と、ＮＡＮＤストリングの他端に接続される選択トランジスタＳ２とから構成される。
【０１６９】
尚、本例では、ＮＡＮＤストリングは、８個のメモリセルＭＴから構成されるが、２つ以上のメモリセルから構成されていればよく、特に、８個に限定されるというものではない。
【０１７０】
選択トランジスタＳ２の電流経路の他端はビット線ＢＬｍに接続され、選択トランジスタＳ１の電流経路の他端はソース線ＳＬに接続される。
【０１７１】
ワード線ＷＬ１〜ＷＬ８は、ＷＬ方向に延び、ＷＬ方向の複数のメモリセルトランジスタに共通に接続される。セレクトゲート線ＳＧＤは、ＷＬ方向に延び、ＷＬ方向の複数の選択トランジスタＳ２に共通に接続される。セレクトゲート線ＳＧＳも、ＷＬ方向に延び、ＷＬ方向の複数の選択トランジスタＳ１に共通に接続される。
【０１７２】
また、ワード線ＷＬ１〜ＷＬ８ごとに、ページ（ＰＡＧＥ）と呼ばれる単位を構成している。例えば、図中の破線で囲って示すように、ワード線ＷＬ１には、ページ１（ＰＡＧＥ１）が割り当てられている。このページごとに読み出し動作、書き込み動作が行われるため、ページは読み出し単位であり、書き込み単位である。尚、１つのメモリセルに複数ビットのデータを保持可能な多値メモリセルの場合は、１つのワード線に複数ページが割り当てられる。
【０１７３】
メモリセルＭＴは、ビット線ＢＬとワード線ＷＬとの交差位置にそれぞれ設けられ、半導体基板上に順次、トンネル絶縁膜、電荷蓄積層としての浮遊電極ＦＧ、ゲート間絶縁膜、および制御電極ＣＧが設けられた積層構造である。メモリセルＭＴの電流経路であるソース／ドレインは、隣接するメモリセルＭＴのソース／ドレインに直列接続されている。電流経路の一端は選択トランジスタＳ２を介してビット線ＢＬｍに接続され、電流経路の他端は選択トランジスタＳ１を介してソース線ＳＬに接続される。
【０１７４】
また、メモリセルＭＴのそれぞれは、積層構造の側壁上に沿って設けられたスペーサ、および上記積層構造を挟むように半導体基板（Ｓｉ基板（Ｓｉ−ｓｕｂ）またはＰウェル）中に設けられたソース／ドレインを備えている。
【０１７５】
選択トランジスタＳ１、Ｓ２は、ゲート絶縁膜、ゲート間絶縁膜、ゲート電極を備えている。選択トランジスタＳ１、Ｓ２のゲート間絶縁膜は、その中央が分離され、その上下層が電気的に接続するように設けられている。選択トランジスタＳ１、Ｓ２は、同様に、ゲート電極の側壁上に沿って設けられたスペーサ、およびゲート電極を挟むように半導体基板中に設けられたソース／ドレインを備えている。
【０１７６】
以上、第１乃至第４の実施形態を用いて本発明の説明を行ったが、この発明は上記各実施形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で種々に変形することが可能である。また、上記各実施形態には種々の段階の発明が含まれており、開示される複数の構成要件の適宜な組み合わせにより種々の発明が抽出され得る。例えば各実施形態に示される全構成要件からいくつかの構成要件が削除されても、発明が解決しようとする課題の欄で述べた課題の少なくとも１つが解決でき、発明の効果の欄で述べられている効果の少なくとも１つが得られる場合には、この構成要件が削除された構成が発明として抽出され得る。
【図面の簡単な説明】
【０１７７】
【図１】この発明の第１の実施形態に係る半導体記憶装置の全体構成例を示すブロック図。
【図２】第１の実施形態に係るメインステートマシンの状態遷移図。
【図３】第１の実施形態に係るＮＡＮＤインターフェイスステートマシンの状態遷移図。
【図４】第１の実施形態に係るＮＡＮＤインターフェイスステートマシンの出力信号真理値を示す図。
【図５】第１の実施形態に係るＮＡＮＤインターフェイスステートマシンのセンスコマンドシーケンスを示す図。
【図６】第１の実施形態に係るＮＡＮＤインターフェイスステートマシンのリードコマンドシーケンスを示す図。
【図７】第１の実施形態に係るＮＡＮＤインターフェイスステートマシンのプログラムコマンドシーケンスを示す図。
【図８】ＮＡＮＤインターフェイスステートマシンを備えていない構成の場合の、メインステートマシンの状態遷移図。
【図９】第２の実施形態に係るＥＣＣエンジンを示すブロック図。
【図１０】第２の実施形態に係る半導体記憶装置のテストシーケンスを示すフロー図。
【図１１】第３の実施形態に係る半導体記憶装置のＥＣＣエンジンを示すブロック図。
【図１２】第３の実施形態に係るＳＲＡＭアドレス／タイミング発生回路を示すブロック図。
【図１３】第３の実施形態に係るＮＡＮＤ型フラッシュメモリおよびＳＡＲＭの単位記憶領域を示す図。
【図１４】第３の実施形態に係るテストシーケンスを示すフロー図。
【図１５】第４の実施形態に係る半導体記憶装置の全体構成例を示すブロック図。
【図１６】第４の実施形態に係る半導体記憶装置のビストスキャン回路の構成例を示す図。
【図１７】図１中のＮＡＮＤセルアレイを構成するブロックの構成例を示す等価回路図。
【符号の説明】
【０１７８】
１…ＮＡＮＤ型フラッシュメモリ、２…ＳＡＲＭ、３…コントローラ、３２…ＮＡＮＤインターフェイスステートマシン（第２ステートマシン）、３３…メインステートマシン（第１ステートマシン）、７１…ビストスキャン回路、７５…ベクタ記憶回路、７６…ベクタ読み出し回路、７７…期待値読み出し回路、７８…比較回路、７９…判定回路。
【図１】
2010009642.tif 000003
【図２】
2010009642.tif 000004
【図３】
2010009642.tif 000005
【図４】
2010009642.tif 000006
【図５】
2010009642.tif 000007
【図６】
2010009642.tif 000008
【図７】
2010009642.tif 000009
【図８】
2010009642.tif 000010
【図９】
2010009642.tif 000011
【図１０】
2010009642.tif 000012
【図１１】
2010009642.tif 000013
【図１２】
2010009642.tif 000014
【図１３】
2010009642.tif 000015
【図１４】
2010009642.tif 000016
【図１５】
2010009642.tif 000017
【図１６】
2010009642.tif 000018
【図１７】
2010009642.tif 000019