(57)【要約】      （修正有）【課題】半導体集積回路の出荷後にメモリの良否判定を行うことができる半導体集積回路を提供する。【解決手段】メモリ５とキャプチャレジスタ６２と書き込み部と制御部とを有する半導体集積回路が提供される。キャプチャレジスタは、複数のメモリセルのうち選択されたメモリセルから読み出されたデータを保持する。書き込み部は、関連データをメモリセルに書き込む。関連データは、キャプチャレジスタに保持されたデータに応じたデータである。制御部は、書き込まれたメモリセルから関連データを読み出し、キャプチャレジスタに保持されたデータに応じた関連データと読み出された関連データとを比較し、比較結果を、上記の書き込まれたメモリセルについての自己テスト結果として上書きで保持するように、キャプチャレジスタを制御し、読み出された関連データに応じた元のデータを選択されたメモリセルに書き戻すように、書き込み部を制御する。【選択図】図１
2015176619.tif 000002
【特許請求の範囲】
【請求項１】
複数のメモリセルを含むメモリと、
前記複数のメモリセルのうち選択されたメモリセルから読み出されたデータを保持するキャプチャレジスタと、
前記キャプチャレジスタに保持されたデータに応じた関連データをメモリセルに書き込む書き込み部と、
前記書き込まれたメモリセルから関連データを読み出し、前記キャプチャレジスタに保持されたデータに応じた関連データと前記読み出された関連データとを比較して、比較結果を前記書き込まれたメモリセルについての自己テスト結果として上書きで保持するように前記キャプチャレジスタを制御し、前記読み出された関連データに応じた元のデータを前記選択されたメモリセルに書き戻すように前記書き込み部を制御する制御部と、
を備えた半導体集積回路。
【請求項２】
前記制御部は、
前記キャプチャレジスタに保持されたデータを論理反転させ、反転データを生成する生成部を有し、
前記書き込み部は、前記生成された反転データを前記選択されたメモリセルに書き込み、
前記制御部は、
前記選択されたメモリセルから読み出された反転データと前記生成された反転データとを比較して、比較結果を前記選択されたメモリセルについての自己テスト結果として前記キャプチャレジスタへ出力する比較部と、
前記保持されたデータが前記生成部へ供給される第１の状態と、前記選択されたメモリセルから読み出された反転データが前記生成部へ供給される第２の状態とを切り替える第１の切り替え部と、
をさらに有する
請求項１に記載の半導体集積回路。
【請求項３】
前記制御部は、前記比較部から受けた比較結果を累積させて保持する第１のモードと前記比較部から受けた比較結果を累積させずに保持する第２のモードとの間で前記キャプチャレジスタの動作を切り替える第２の切り替え部と、
前記複数のメモリセルを制御するシステムの起動時に、前記複数のメモリセルにテストデータを供給するとともに前記第１のモードに切り替えるように前記第２の切り替え部を制御し、前記システムの動作中に、前記複数のメモリセルにテストデータを供給せずに前記第２のモードに切り替えるように前記第２の切り替え部を制御する自己テスト回路と、
をさらに備えた
請求項２に記載の半導体集積回路。
【請求項４】
前記自己テスト回路は、前記システムの動作中において、前記比較部が比較結果を前記キャプチャレジスタへ出力するように、前記第１の切り替え部を前記第１の状態に切り替えさせ、前記比較部の比較結果の前記キャプチャレジスタへの出力が完了した後において、前記選択されたメモリセルに前記読み出されたデータが書き戻されるように、前記第１の切り替え部を前記第２の状態に切り替えさせる
請求項３に記載の半導体集積回路。
【請求項５】
前記キャプチャレジスタは、前記複数のメモリセルのうち選択された第１のメモリセルから読み出された第１のデータを保持し、
前記制御部は、
前記複数のメモリセルのうち選択された第２のメモリセルから読み出された第２のデータを保持するレジスタをさらに有し、
前記書き込み部は、前記キャプチャレジスタに保持された第１のデータを前記選択された第２のメモリセルに書き込み、前記レジスタに保持された第２のデータを前記選択された第１のメモリセルに書き込み、
前記制御部は、
前記選択された第２のメモリセルから読み出された第１のデータと前記キャプチャレジスタに保持された第１のデータとを比較して、比較結果を前記選択された第２のメモリセルについての自己テスト結果として前記キャプチャレジスタへ出力し、前記選択された第１のメモリセルから読み出された第２のデータと前記レジスタに保持された第２のデータとを比較して、比較結果を前記選択された第１のメモリセルについての自己テスト結果として前記キャプチャレジスタへ出力する比較部と、
前記キャプチャレジスタに保持された第１のデータ又は前記レジスタに保持された第２のデータが前記書き込み部へ供給される第１の状態と、前記選択された第２のメモリセルから読み出された第１のデータ又は前記選択された第１のメモリセルから読み出された第２のデータが前記書き込み部へ供給される第２の状態とを切り替える第３の切り替え部と、
をさらに有する
請求項１に記載の半導体集積回路。
【請求項６】
前記制御部は、
前記キャプチャレジスタに保持された第１のデータを論理反転させ、第１の反転データを生成し、前記レジスタに保持された第２のデータを論理反転させ、第２の反転データを生成する生成部をさらに有し、
前記書き込み部は、前記生成された第１の反転データを前記選択された第２のメモリセルに書き込み、前記生成された第２の反転データを前記選択された第１のメモリセルに書き込み、
前記比較部は、前記選択された第２のメモリセルから読み出された第１の反転データと前記生成された第１の反転データとを比較して、比較結果を前記選択された第２のメモリセルについての自己テスト結果として前記キャプチャレジスタへ出力し、前記選択された第１のメモリセルから読み出された第２の反転データと前記生成された第２の反転データとを比較して、比較結果を前記選択された第１のメモリセルについての自己テスト結果として前記キャプチャレジスタへ出力し、
前記第３の切り替え部は、前記キャプチャレジスタに保持された第１のデータ又は前記レジスタに保持された第２のデータが前記生成部へ供給される第１の状態と、前記選択された第２のメモリセルから読み出された第１の反転データ又は前記選択された第１のメモリセルから読み出された第２の反転データが前記生成部へ供給される第２の状態とを切り替える
請求項５に記載の半導体集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、半導体集積回路に関する。
【背景技術】
【０００２】
メモリが搭載された半導体集積回路に自己テスト（ＢＩＳＴ：Ｂｕｉｌｔ  Ｉｎ  Ｓｅｌｆ  Ｔｅｓｔ）回路を組み込み、半導体集積回路の出荷前に自己テスト回路を用いてメモリの検査を行うことで、メモリの良否判定を行う方法がある。しかし、メモリは経年劣化することがあるので、半導体集積回路の出荷後であってもメモリの良否判定を行うことが望まれる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００６−３９８４３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
１つの実施形態は、例えば、半導体集積回路の出荷後にメモリの良否判定を行うことができる半導体集積回路を提供することを目的とする。
【課題を解決するための手段】
【０００５】
１つの実施形態によれば、メモリとキャプチャレジスタと書き込み部と制御部とを有する半導体集積回路が提供される。メモリは、複数のメモリセルを含む。キャプチャレジスタは、複数のメモリセルのうち選択されたメモリセルから読み出されたデータを保持する。書き込み部は、関連データをメモリセルに書き込む。関連データは、キャプチャレジスタに保持されたデータに応じたデータである。制御部は、書き込まれたメモリセルから関連データを読み出す。制御部は、キャプチャレジスタに保持されたデータに応じた関連データと読み出された関連データとを比較する。制御部は、比較結果を、上記の書き込まれたメモリセルについての自己テスト結果として上書きで保持するように、キャプチャレジスタを制御する。制御部は、読み出された関連データに応じた元のデータを選択されたメモリセルに書き戻すように、書き込み部を制御する。
【図面の簡単な説明】
【０００６】
【図１】第１の実施形態にかかる半導体集積回路の構成を示す図。
【図２】第１の実施形態におけるシステム及び半導体集積回路の動作を示すシーケンス図。
【図３】第１の実施形態にかかる半導体集積回路の動作を示すフローチャート。
【図４】第２の実施形態にかかる半導体集積回路の構成を示す図。
【図５】第２の実施形態にかかる半導体集積回路の動作を示すフローチャート。
【図６】第２の実施形態の変形例にかかる半導体集積回路の動作を示すフローチャート。
【図７】基本の形態にかかる半導体集積回路が適用されるシステムの構成を示す図。
【図８】基本の形態にかかる半導体集積回路の構成を示す図。
【図９】基本の形態におけるシステム及び半導体集積回路の動作を示すシーケンス図。
【図１０】基本の形態にかかる半導体集積回路の構成を示す図。
【図１１】基本の形態におけるキャプチャレジスタ、比較回路、及びフラグレジスタの構成を示す図。
【発明を実施するための形態】
【０００７】
以下に添付図面を参照して、実施形態にかかる半導体集積回路を詳細に説明する。なお、これらの実施形態により本発明が限定されるものではない。
【０００８】
（第１の実施形態）
第１の実施形態にかかる半導体集積回路１００について説明する前に、基本の形態にかかる半導体集積回路１について図７を用いて説明する。図７は、半導体集積回路１が適用されたシステムＳＹＳの構成を示す図である。
【０００９】
システムＳＹＳは、例えば図７に示すように、システムボードＳＢとして実装される。システムボードＳＢ上には、複数のチップＣＨＩＰ１〜ＣＨＩＰ６が搭載される。チップＣＨＩＰ１，ＣＨＩＰ２，ＣＨＩＰ４は、ＬＳＩチップであり、ロジック回路及びメモリが混載されている。チップＣＨＩＰ３は、コントローラチップであり、システム論理が実装されシステムＳＹＳを統括的に制御するコントローラＣＴＲが搭載されている。チップＣＨＩＰ５は、ロジックチップであり、ロジック回路が搭載されている。チップＣＨＩＰ６は、メモリチップであり、メモリ（揮発性メモリ）が搭載されている。
【００１０】
半導体集積回路１は、例えば、車載システムなどの高信頼性を要求されるシステムＳＹＳに適用される。システムＳＹＳからの高信頼性の要求に応えるために、半導体集積回路１では、メモリ（揮発性メモリ）が搭載されるとともに、自己テスト（ＢＩＳＴ：Ｂｕｉｌｔ  Ｉｎ  Ｓｅｌｆ  Ｔｅｓｔ）回路が組み込まれている。すなわち、半導体集積回路１の出荷前に自己テスト回路を用いてメモリの検査を行うことでメモリの良否判定を行う。これにより、テスト装置からテストパターンを供給してメモリの検査を行う場合に比べて効率的にメモリの検査を行うことができる。良否判定の結果に応じて得られた不良メモリセル（不良ビット）の情報は、コントローラチップＣＨＩＰ３又は他のチップＣＨＩＰ１，ＣＨＩＰ２，ＣＨＩＰ４〜ＣＨＩＰ６における不揮発性記憶回路におけるフューズ領域に不良管理情報（フェイルビットマップ情報）として格納される。これにより、コントローラＣＴＲは、半導体集積回路１の出荷後におけるシステムＳＹＳの動作中に、メモリセルにアクセスするためのコマンドに応じて、不良管理情報を参照する。そして、コントローラＣＴＲは、不良管理情報に応じて、メモリにおける不良メモリセル（不良ビット）を避けながらメモリセルにアクセスするように制御する。
【００１１】
例えば、半導体集積回路機能１−１は、チップＣＨＩＰ１における複数の回路ブロックＢＬＫ１〜ＢＬＫ４のうち回路ブロックＢＬＫ１内に実装される。半導体集積回路機能１−１は、回路ブロックＢＬＫ１内のＣＰＵ２、複数のメモリカラー４−１〜４−６、及び自己テスト（ＢＩＳＴ）回路３を含む。各メモリカラー４は、メモリを含む。
【００１２】
あるいは、例えば、半導体集積回路機能１−２は、チップＣＨＩＰ１における回路ブロックＢＬＫ２内及び回路ブロックＢＬＫ２，ＢＬＫ３間に実装される。半導体集積回路機能１−２は、回路ブロックＢＬＫ２内のＣＰＵ２及び複数のメモリカラー４−１〜４−３と、回路ブロックＢＬＫ２，ＢＬＫ３間に配置された自己テスト（ＢＩＳＴ）回路３とを含む。各メモリカラー４は、メモリを含む。
【００１３】
あるいは、例えば、半導体集積回路機能１−３は、複数のチップＣＨＩＰ２，ＣＨＩＰ５，ＣＨＩＰ６に跨って実装される。半導体集積回路機能１−３は、チップＣＨＩＰ５内のＣＰＵ２、チップＣＨＩＰ６内の複数のメモリカラー４−１〜４−６、チップＣＨＩＰ２内の自己テスト（ＢＩＳＴ）回路３を含む。各メモリカラー４は、メモリを含む。
【００１４】
ここで、メモリは経年劣化することがあるので、半導体集積回路１の出荷後であってもメモリの良否判定を行うことが望まれる。半導体集積回路１では、半導体集積回路１の出荷後であってもメモリの良否判定を行うために、例えば図８に示すように構成されている。図８は、半導体集積回路１の構成を示す図である。
【００１５】
半導体集積回路１は、ＣＰＵ２、自己テスト（ＢＩＳＴ）回路３及び複数のメモリカラー４を有する。なお、半導体集積回路１は複数のメモリカラー４を有するが（図７参照）、図８では、自己テスト（ＢＩＳＴ）回路３と１つのメモリカラー４とについて例示的に示している。
【００１６】
ＣＰＵ２は、コントローラＣＴＲから所定のコマンド・データを受け、所定のコマンド・データに応じた制御信号・データを生成してメモリカラー４へ供給する。
【００１７】
各メモリカラー４は、メモリ５、セレクタ７ａ〜７ｄ、及び良否判定回路６を有する。メモリ５は、複数のメモリセルを有し、複数のメモリセルのうちアドレス信号で選択されたメモリセルにアクセスしてデータを記憶することができる。メモリ５は、セレクタ７ａを介してアドレス信号がアドレス端子ＡＤに入力され、セレクタ７ｄ［０：ｎ−１］を介してデータＤ［０：ｎ−１］がデータ入力ＤＩＮ［０：ｎ−１］に入力され、セレクタ７ｂを介してラッチイネーブル信号がラッチイネーブル端子ＬＥに入力され、セレクタ７ｃを介してチップイネーブル信号がチップイネーブル端子ＣＥに入力され、クロック信号がクロック端子ＣＫに入力される。メモリ５は、データＤ［０：ｎ−１］がデータ出力ＤＯＵＴ［０：ｎ−１］から出力される。すなわち、各メモリカラー４は、ｎ個（ｎは２以上の整数）のメモリセルの検査を並行して行うことができるように構成されている。
【００１８】
なお、データ入力ＤＩＮ、セレクタ７ｄ、及びデータ出力ＤＯＵＴは、それぞれ、入出力されるデータＤ［０：ｎ−１］のデータ幅がｎビットであることに対応してｎ個設けられている。
【００１９】
コントローラＣＴＲは、図９に示すように、システム論理に従い、システムＳＹＳの起動（Ｐｏｗｅｒ−ｕｐ）時における所定の期間にテストモード信号φＴＥＳＴをアクティブレベルにし、システムＳＹＳの動作（Ｓｙｓｔｅｍ  Ｏｐｅｒａｔｉｏｎ）中にテストモード信号φＴＥＳＴをノンアクティブレベルに維持する。図９は、システムＳＹＳ及び半導体集積回路１の動作を示すシーケンス図である。
【００２０】
これに応じて、図８に示す各セレクタ７ａ〜７ｄは、コントローラＣＴＲから供給されるテストモード信号φＴＥＳＴがアクティブレベルのときに自己テスト回路３側の入力を選択する。テストモード信号φＴＥＳＴがノンアクティブレベルのときにＣＰＵ２側の入力を選択する。すなわち、各セレクタ７ａ〜７ｄは、システムＳＹＳの起動（Ｐｏｗｅｒ−ｕｐ）時における所定の期間に自己テスト回路３側の入力を選択してメモリ５側へ出力し、メモリ５のテスト動作（Ｍｅｍｏｒｙ  ＢＩＳＴ）が行われるようにする。各セレクタ７ａ〜７ｄは、システムＳＹＳの動作（Ｓｙｓｔｅｍ  Ｏｐｅｒａｔｉｏｎ）中にＣＰＵ２側の入力を選択してメモリ５側へ出力し、システムＳＹＳからの制御に従ったメモリ５へのアクセス動作が行われるようにする。
【００２１】
図８に示す良否判定回路６は、メモリ５のテスト動作に必要な各論理要素を含む。良否判定回路６は、良否判定の結果として、不良でない（Ｐａｓｓ）又は不良である（Ｆａｉｌ）を示す良否判定情報（不良フラグ）を出力する。出力された良否判定情報は、コントローラＣＴＲ等により不良管理情報（フェイルビットマップ情報）に反映され不揮発性記憶回路におけるフューズ領域に格納される。
【００２２】
自己テスト（ＢＩＳＴ）回路３は、ＢＩＳＴ制御回路３１、データ生成回路３２、アドレス生成回路３３、制御入力生成回路３４、及び期待値レジスタ（Ｅｘｐｅｃｔａｔｉｏｎ  Ｒｅｇｉｓｔｅｒ）３５を有する。ＢＩＳＴ制御回路３１は、ステートマシンであり、自己テスト回路３の全体的な制御を行う。データ生成回路３２は、メモリ５のデータ入力ＤＩＮへ与えられるテストデータパターンＤｔ［０：ｎ−１］を生成する。アドレス生成回路３３は、テストデータパターンＤｔ［０：ｎ−１］が与えられるメモリ５におけるメモリセルのアドレスを生成する。制御入力生成回路３４は、テスト動作におけるメモリ５の読み書きを制御する制御信号を生成する。期待値レジスタ３５は、データ生成回路３２がメモリ５へテストデータパターンＤｔ［０：ｎ−１］を供給する際に、テストデータパターンＤｔ［０：ｎ−１］をデータ生成回路３２から受けて保持する。期待値レジスタ３５は、保持されたテストデータパターンＤｔ［０：ｎ−１］を期待値Ｄｅ［０：ｎ−１］として良否判定回路６へ供給する。すなわち、期待値レジスタ３５は、データ生成回路３２からメモリ５へ供給されたテストデータパターンＤｔ［０：ｎ−１］と同じデータパターンを、テスト動作における正解のデータパターンを示す期待値Ｄｅ［０：ｎ−１］として良否判定回路６へ供給する。
【００２３】
次に、良否判定回路６の内部構成について図１０及び図１１を用いて説明する。図１０は、半導体集積回路１における良否判定回路６の内部構成を示す図である。図１１は、キャプチャレジスタ６２、フラグ生成回路６４、及びフラグレジスタ６５の構成を示す図である。
【００２４】
各メモリカラー４（図８参照）における良否判定回路６は、比較部６１、キャプチャレジスタ６２、累積部６３、フラグ生成回路６４、及びフラグレジスタ６５を有する。
【００２５】
テストモード信号φＴＥＳＴがアクティブレベルである期間に、自己テスト回路３は、チップイネーブル信号及びラッチイネーブル信号をそれぞれアクティブレベルにする。自己テスト回路３は、メモリ５におけるアドレス信号で選択されたｎ個のメモリセルにテストデータパターンＤｔ［０：ｎ−１］をデータ入力ＤＩＮ［０：ｎ−１］経由で書き込む。
【００２６】
比較部６１は、メモリ５におけるアドレス信号で選択されたｎビットのメモリ出力から読み出されたデータＤｒ［０：ｎ−１］をデータ出力ＤＯＵＴ［０：ｎ−１］経由で受ける。比較部６１は、期待値Ｄｅ［０：ｎ−１］を期待値レジスタ３５から受ける。比較部６１は、読み出されたデータＤｒ［０：ｎ−１］と期待値Ｄｅ［０：ｎ−１］とを比較し、比較結果ＣＲ［０：ｎ−１］をキャプチャレジスタ６２へ出力する。
【００２７】
比較部６１は、図１０に示すように、ｎ個の排他的論理和演算子ＥＸＯＲ１［０：ｎ−１］を有する。各排他的論理和演算子ＥＸＯＲ１は、読み出されたデータＤｒと期待値Ｄｅとが一致する場合に、不良なしを示すビット値「０」を比較結果ＣＲとして出力する。各排他的論理和演算子ＥＸＯＲ１は、読み出されたデータＤｒと期待値Ｄｅとが一致しない場合に、不良ありを示すビット値「１」を比較結果ＣＲとして出力する。
【００２８】
キャプチャレジスタ６２は、キャプチャタイミング信号φＣＰに応じて、比較部６１による比較結果ＣＲ［０：ｎ−１］を保持する。制御入力生成回路３４は、キャプチャレジスタ６２により比較結果ＣＲ［０：ｎ−１］を保持すべきタイミングでキャプチャタイミング信号φＣＰをアクティブレベルにしてキャプチャレジスタ６２へ供給する。キャプチャレジスタ６２は、キャプチャタイミング信号φＣＰがアクティブレベルである期間に、比較部６１による比較結果ＣＲ［０：ｎ−１］を保持する。例えば、キャプチャレジスタ６２は、図１１に示すように、ｎ個のレジスタＲＧ［０：ｎ−１］を有し、比較結果ＣＲ［０：ｎ−１］における対応するビットを保持する。
【００２９】
図１０に示す累積部６３は、キャプチャレジスタ６２に不良検出情報（不良ありを示すビット値「１」）が累積されるようにする。すなわち、テストモード信号φＴＥＳＴがアクティブレベルである期間に、自己テスト回路３は、アドレス信号を初期アドレスにした状態で、「ｎ個のメモリセルへのテストデータパターンＤｔの書き込み→読み出し→期待値との比較」の一連のサイクルのテスト動作を行う。そして、自己テスト回路３は、アドレス信号を最終アドレスまでカウントアップ又はカウントダウンしながら、「ｎ個のメモリセルへのテストデータパターンＤｔの書き込み→読み出し→期待値との比較」のサイクルのテスト動作を繰り返し行う。このとき、ｎビットのそれぞれについて１回でも不良ありを示すビット値「１」が立った場合に、それ以降のサイクルのテスト動作においてもそのビットが引き続きビット値「１」を維持するようにする。
【００３０】
累積部６３は、ｎ個の論理和演算子ＯＲ１［０：ｎ−１］及びｎビット幅のフィードバックラインＦＬ１［０：ｎ−１］を有する。フィードバックラインＦＬ１［０：ｎ−１］は、レジスタＲＧ［０：ｎ−１］の出力を論理和演算子ＯＲ１［０：ｎ−１］の入力へフィードバックする。論理和演算子ＯＲ１［０：ｎ−１］は、フィードバックされたレジスタＲＧ［０：ｎ−１］の出力と排他的論理和演算子ＥＸＯＲ１［０：ｎ−１］の出力との論理和を演算し、演算結果をレジスタＲＧ［０：ｎ−１］に入力する。これにより、累積部６３は、ｎ個のレジスタＲＧ［０：ｎ−１］のそれぞれにおいて不良ありを示すビット値「１」が累積されるようにする。
【００３１】
フラグ生成回路６４は、初期アドレス〜最終アドレスまでのテスト動作が終了したら、キャプチャレジスタ６２に保持された比較結果ＣＲ［０：ｎ−１］から、良否判定の結果として不良でない（Ｐａｓｓ）又は不良である（Ｆａｉｌ）を示す良否判定情報（不良フラグ）を生成する。不良フラグは、１ビットのフラグであり、ビット値「０」であれば不良でない（Ｐａｓｓ）を示し、ビット値「１」であれば不良である（Ｆａｉｌ）を示す。
【００３２】
フラグ生成回路６４は、図１１に示すように、論理和演算子ＯＲ２，ＯＲ３、セレクタＳＬ１、及びフィードバックラインＦＬ２，ＦＬ３を有する。論理和演算子ＯＲ２は、ｎ個のレジスタＲＧ［０：ｎ−１］の出力の論理和を演算し、演算結果を論理和演算子ＯＲ３へ出力する。フィードバックラインＦＬ３は、フラグレジスタ６５の出力を論理和演算子ＯＲ３の入力へフィードバックする。論理和演算子ＯＲ３は、論理和演算子ＯＲ２の出力とフィードバックされたフラグレジスタ６５の出力との論理和を演算し、演算結果をセレクタＳＬ１へ出力する。
【００３３】
フィードバックラインＦＬ２は、フラグレジスタ６５の出力をセレクタＳＬ１の入力へフィードバックする。セレクタＳＬ１は、テスト動作の終了を示す完了信号φＣＯＭＰに応じて、論理和演算子ＯＲ３の出力とフィードバックされたフラグレジスタ６５の出力とを選択する。すなわち、セレクタＳＬ１は、完了信号φＣＯＭＰがノンアクティブレベルである（テスト動作が完了していない）とき、フラグレジスタ６５の出力を選択してフラグレジスタ６５へ供給する。これにより、フラグレジスタ６５に前回の良否判定情報（不良である（Ｆａｉｌ）を示す不良フラグの値「１」）が累積されるようにする。セレクタＳＬ１は、完了信号φＣＯＭＰがアクティブレベルである（テスト動作が完了している）とき、論理和演算子ＯＲ３の出力を選択してフラグレジスタ６５へ供給する。これにより、フラグレジスタ６５が今回のテスト動作の結果に応じた良否判定情報（不良フラグ）を保持するようになる。
【００３４】
このように、自己テスト回路３によるメモリ５の良否判定では、メモリ５における各メモリセルにテストデータパターンＤｔが書き込まれるので、システムＳＹＳの起動（Ｐｏｗｅｒ−ｕｐ）時に行うことができるが、システムＳＹＳの動作（Ｓｙｓｔｅｍ  Ｏｐｅｒａｔｉｏｎ）中に行うことが困難である。システムＳＹＳの動作（Ｓｙｓｔｅｍ  Ｏｐｅｒａｔｉｏｎ）中では、メモリ５における各メモリセルに既にデータが書き込まれている可能性があり、テスト動作を行って各メモリセルにテストデータパターンＤｔを書き込んでしまうと既に書き込まれていたデータが書き換えられて失われてしまう可能性がある。
【００３５】
しかし、システムＳＹＳの起動（Ｐｏｗｅｒ−ｕｐ）後におけるシステムＳＹＳの動作（Ｓｙｓｔｅｍ  Ｏｐｅｒａｔｉｏｎ）の時間が長い場合、その間にメモリ５は経年劣化することがあるので、システムＳＹＳの動作（Ｓｙｓｔｅｍ  Ｏｐｅｒａｔｉｏｎ）中であってもメモリ５の良否判定を行うことが望まれる。
【００３６】
そこで、第１の実施形態では、半導体集積回路１００において、システムＳＹＳの動作中におけるメモリ５にアクセスがない期間に、各メモリセルに既に書き込まれたデータに応じた関連データを用いてテスト動作を行い、その後に関連データに応じた元のデータを元のメモリセルに書き戻す。これにより、システムＳＹＳの動作中に短時間で一部アドレスのテストを行い、データが書き換わらない状態で終了するようにし、システム動作中の自己テスト（ＩＳＳＴ：Ｉｎ  Ｓｙｓｔｅｍ  Ｓｅｌｆ  Ｔｅｓｔ）を可能にする。以下では、基本の形態と異なる部分を中心に説明する。
【００３７】
具体的には、半導体集積回路１００は、自己テスト回路３及び複数のメモリカラー４（図８参照）に代えて、自己テスト（ＢＩＳＴ）回路１０３及び複数のメモリカラー１０４を有する。なお、半導体集積回路１００は複数のメモリカラー１０４を有するが、図１では、自己テスト（ＢＩＳＴ）回路１０３と１つのメモリカラー１０４とについて例示的に示している。
【００３８】
各メモリカラー１０４は、良否判定回路６（図１０参照）に代えて、良否判定回路１０６を有する。良否判定回路１０６は、比較部６１（図１０参照）に代えて制御部１７０を有するとともに、書き込み部１６６をさらに有する。制御部１７０は、切り替え部（第２の切り替え部）１７４、切り替え部（第１の切り替え部）１７３、生成部１７２、及び比較部１７１を有する。
【００３９】
書き込み部１６６は、システムＳＹＳの動作中におけるテスト動作を行うべき期間において、キャプチャレジスタ６２に保持されたデータに応じた関連データを、メモリ５におけるアドレス信号で選択されたメモリセルに書き込む。例えば、書き込み部１６６は、キャプチャレジスタ６２に保持されたデータを論理反転させた反転データを制御部１７０から受け、反転データを選択されたメモリセルに書き込む。
【００４０】
例えば、書き込み部１６６は、ｎ個のセレクタＳＬ２［０：ｎ−１］を有する。ｎ個のセレクタＳＬ２［０：ｎ−１］のそれぞれは、自己テスト信号φＩＳＳＴに応じて、データ生成回路３２の出力と生成部１７２の出力とのいずれかを選択する。
【００４１】
コントローラＣＴＲ（図８参照）は、図２に示すように、システム論理に従い、システムＳＹＳの起動（Ｐｏｗｅｒ−ｕｐ）時における所定の期間にテストモード信号φＴＥＳＴをアクティブレベルにする。
【００４２】
また、コントローラＣＴＲは、システム論理に応じて、複数のメモリカラー１０４のそれぞれについてメモリ５にアクセスがない期間がいつであるのかを把握している。メモリ５にアクセスがない期間は、例えば、システムＳＹＳの動作中における他のメモリ５にアクセスしている期間でもよいし、メモリ５がスリープモードに遷移する直前の期間でもよいし、メモリ５がスリープモードから復帰した直後の期間でもよいし、メモリ５が含まれる回路ブロックの電源が遮断される直前の期間でもよいし、メモリ５が含まれる回路ブロックの電源が遮断された直後の期間でもよい。
【００４３】
コントローラＣＴＲは、図２に示すように、システムＳＹＳの動作（Ｓｙｓｔｅｍ  Ｏｐｅｒａｔｉｏｎ）中におけるテスト動作を行うべきメモリ５にアクセスがない期間にテストモード信号φＴＥＳＴをアクティブレベルにする。図２は、システムＳＹＳ及び半導体集積回路１００の動作を示すシーケンス図である。
【００４４】
自己テスト回路１０３における制御入力生成回路１３４は、テストモード信号φＴＥＳＴをコントローラＣＴＲからＢＩＳＴ制御回路３１経由で受ける。制御入力生成回路１３４は、テストモード信号φＴＥＳＴに応じて自己テスト信号φＩＳＳＴを生成して書き込み部１６６及び切り替え部１７４へ供給する。すなわち、制御入力生成回路１３４は、システムＳＹＳの起動（Ｐｏｗｅｒ−ｕｐ）時であれば自己テスト信号φＩＳＳＴをノンアクティブレベルに維持し、システムＳＹＳの動作中であればテストモード信号φＴＥＳＴに追従して自己テスト信号φＩＳＳＴをアクティブレベル及びノンアクティブレベルの間で遷移させる（図２参照）。
【００４５】
それに応じて、各セレクタＳＬ２［０：ｎ−１］は、システムＳＹＳの起動（Ｐｏｗｅｒ−ｕｐ）時におけるテストモード信号φＴＥＳＴがアクティブレベルになった際に、自己テスト信号φＩＳＳＴがノンアクティブレベルであることに応じてデータ生成回路３２の出力を選択してセレクタ７ｄ経由でメモリ５へ出力する。これにより、各セレクタＳＬ２［０：ｎ−１］は、テストデータパターンＤｔ［０：ｎ−１］を選択メモリセルに書き込む。各セレクタＳＬ２［０：ｎ−１］は、システムＳＹＳの動作（Ｓｙｓｔｅｍ  Ｏｐｅｒａｔｉｏｎ）中における自己テスト信号φＩＳＳＴがアクティブレベルになった際に、生成部１７２の出力を選択してセレクタ７ｄ経由でメモリ５へ出力する。これにより、各セレクタＳＬ２［０：ｎ−１］は、キャプチャレジスタ６２に保持されたデータを生成部１７２で論理反転させた反転データを選択メモリセルに書き込む。
【００４６】
制御部１７０は、キャプチャレジスタ６２に保持されたデータに応じた関連データを生成して書き込み部１６６へ供給する。例えば、制御部１７０は、キャプチャレジスタ６２に保持されたデータを論理反転させ、反転データを生成して書き込み部１６６へ供給する。また、制御部１７０は、選択されたメモリセルから関連データ（反転データ）を読み出す。制御部１７０は、キャプチャレジスタ６２に保持されたデータに応じた関連データ（反転データ）と読み出された関連データ（反転データ）とを比較する。制御部１７０は、比較結果を選択メモリセルについての自己テスト結果として上書きで保持するようにキャプチャレジスタ６２を制御する。制御部１７０は、読み出された関連データ（反転データ）に応じた元のデータを選択されたメモリセルに書き戻すように、書き込み部１６６を制御する。
【００４７】
具体的には、切り替え部１７４は、自己テスト信号φＩＳＳＴに応じて、第１のモードと第２のモードとの間でキャプチャレジスタ６２の動作を切り替える。第１のモードは、比較部１７１から受けた比較結果をキャプチャレジスタ６２が累積させて保持する動作モードである。第２のモードは、比較部１７１から受けた比較結果をキャプチャレジスタ６２が累積させずに保持する動作モードである。切り替え部１７４は、自己テスト信号φＩＳＳＴがノンアクティブレベルである際に第１のモードに切り替え、自己テスト信号φＩＳＳＴがアクティブレベルである際に第２のモードに切り替える。
【００４８】
例えば、切り替え部１７４は、論理否定演算子ＩＮＶ１及び論理積演算子ＡＮＤ２を有する。論理否定演算子ＩＮＶ１は、自己テスト信号φＩＳＳＴを論理反転させ、信号φＩＳＳＴ￣を生成して論理積演算子ＡＮＤ２へ供給する。論理積演算子ＡＮＤ２は、信号φＩＳＳＴ￣とキャプチャレジスタ６２の出力との論理積を演算し、演算結果を論理和演算子ＯＲ１へ供給する。これにより、自己テスト信号φＩＳＳＴがノンアクティブレベルである際にフィードバックラインＦＬ１がアクティブになり、キャプチャレジスタ６２の出力が論理和演算子ＯＲ１の入力側へフィードバックされるので、第１のモードに切り替えることができる。また、自己テスト信号φＩＳＳＴがアクティブレベルである際にフィードバックラインＦＬ１がノンアクティブになり、キャプチャレジスタ６２の出力が論理和演算子ＯＲ１の入力側へフィードバックされなくなるので、第２のモードに切り替えることができる。
【００４９】
制御入力生成回路１３４は、システムＳＹＳの起動時に、選択メモリセルにテストデータパターンＤｔ［０：ｎ−１］を供給するとともに、切り替え部１７４が第１のモードに切り替えるようにノンアクティブレベルの自己テスト信号φＩＳＳＴを切り替え部１７４に供給する。これにより、良否判定回路１０６において基本の形態と同様のテスト動作が行われる。
【００５０】
制御入力生成回路１３４は、システムＳＹＳの動作中に、選択メモリセルにテストデータを供給せずに、切り替え部１７４が第２のモードに切り替えるようにアクティブレベルの自己テスト信号φＩＳＳＴを切り替え部１７４に供給する。これにより、良否判定回路１０６においてシステム動作中の自己テスト（ＩＳＳＴ）を行うことができる。
【００５１】
切り替え部１７４は、セレクト信号φＳＥＬＥＣＴに応じて、第１の状態と第２の状態とを切り替える。第１の状態は、キャプチャレジスタ６２に保持されたデータが生成部１７２へ供給される状態である。第２の状態は、選択メモリセルから読み出された反転データが生成部１７２へ供給される状態である。切り替え部１７４は、セレクト信号φＳＥＬＥＣＴが第１のレベルである際に第１の状態に切り替え、セレクト信号φＳＥＬＥＣＴが第２のレベルである際に第２の状態に切り替える。
【００５２】
例えば、切り替え部１７３は、セレクタＳＬ３を有する。セレクタＳＬ３は、セレクト信号φＳＥＬＥＣＴに応じて、メモリ５のデータ出力ＤＯＵＴ［０：ｎ−１］とキャプチャレジスタ６２の出力と固定ビット値「０」とのいずれかを選択する。セレクタＳＬ３は、セレクト信号φＳＥＬＥＣＴが第１のレベルである際にキャプチャレジスタ６２の出力を選択して生成部１７２へ供給するので、第１の状態に切り替えることができる。セレクタＳＬ３は、セレクト信号φＳＥＬＥＣＴが第２のレベルである際にメモリ５のデータ出力ＤＯＵＴ［０：ｎ−１］を選択して生成部１７２へ供給するので、第２の状態に切り替えることができる。セレクタＳＬ３は、セレクト信号φＳＥＬＥＣＴが第３のレベルである際に固定ビット値「０」を選択して生成部１７２へ供給する。
【００５３】
制御入力生成回路１３４は、自己テスト信号φＩＳＳＴがアクティブレベルである期間において、比較部１７１の比較結果のキャプチャレジスタ６２への出力が完了するまで、切り替え部１７３が第１の状態に切り替えるように、第１のレベルのセレクト信号φＳＥＬＥＣＴを切り替え部１７３へ供給する。これにより、キャプチャレジスタ６２に保持されたデータが生成部１７２へ供給されるようにすることができる。
【００５４】
制御入力生成回路１３４は、自己テスト信号φＩＳＳＴがアクティブレベルである期間において、比較部１７１の比較結果のキャプチャレジスタ６２への出力が完了した後に、切り替え部１７３が第２の状態に切り替えるように、第２のレベルのセレクト信号φＳＥＬＥＣＴを切り替え部１７３へ供給する。これにより、選択メモリセルから読み出された反転データが生成部１７２へ供給されるようにすることができる。
【００５５】
生成部１７２は、アクティブレベルの反転制御信号φＩＮＣに応じて、切り替え部１７３の出力を論理反転させる。例えば、切り替え部１７３が第１の状態に切り替えている際に、生成部１７２は、キャプチャレジスタ６２に保持されたデータを論理反転させ、反転データを生成して書き込み部１６６へ供給する。これに応じて、書き込み部１６６は、反転データを選択メモリセルに書き込む。切り替え部１７３が第２の状態に切り替えている際に、生成部１７２は、選択メモリセルから読み出された反転データを論理反転させて元のデータを復元し、復元された元のデータを書き込み部１６６へ供給する。これに応じて、書き込み部１６６は、元のデータを選択メモリセルに書き戻す。
【００５６】
例えば、生成部１７２は、ｎ個の排他的論理和演算子ＥＸＯＲ２［０：ｎ−１］を有する。各排他的論理和演算子ＥＸＯＲ２は、アクティブレベルの反転制御信号φＩＮＣ（＝ビット値「１」）とセレクタＳＬ３の出力との排他的論理和を演算し、セレクタＳＬ３の出力がビット値「１」である場合にビット値「０」を出力し、セレクタＳＬ３の出力がビット値「０」である場合にビット値「１」を出力する。これにより、各排他的論理和演算子ＥＸＯＲ２は、セレクタＳＬ３の出力を論理反転させることができる。
【００５７】
比較部１７１は、選択メモリセルから読み出された反転データと生成部１７２で生成された反転データとを比較する。比較部１７１は、比較結果を、選択メモリセルについての自己テスト結果としてキャプチャレジスタ６２へ出力する。キャプチャレジスタ６２は、キャプチャタイミング信号φＣＰがアクティブレベルである期間に、比較結果を保持する。
【００５８】
例えば、比較部１７１は、ｎ個の排他的論理和演算子ＥＸＯＲ１［０：ｎ−１］に加えて、ｎ個の論理積演算子ＡＮＤ１［０：ｎ−１］を有する。各論理積演算子ＡＮＤ１は、期待値レジスタ１３５の出力と排他的論理和演算子ＥＸＯＲ２の出力との論理積を演算し、演算結果を排他的論理和演算子ＥＸＯＲ１へ供給する。
【００５９】
期待値レジスタ１３５は、システムＳＹＳの起動時に、テストデータパターンＤｔ［０：ｎ−１］と同一の期待値Ｄｅ［０：ｎ−１］を出力するとともに、制御入力生成回路１３４が第３のレベルのセレクト信号φＳＥＬＥＣＴをセレクタＳＬ３へ供給する。これにより、排他的論理和演算子ＥＸＯＲ２の出力が固定ビット値「１」になるので、同一の期待値Ｄｅ［０：ｎ−１］が排他的論理和演算子ＥＸＯＲ１へ供給されるので、良否判定回路１０６において基本の形態と同様のテスト動作が行われる。
【００６０】
期待値レジスタ１３５は、システムＳＹＳの動作中に、各ビットが固定ビット値「０」である期待値Ｄｅ［０：ｎ−１］を出力する。これにより、選択メモリセルから読み出されたデータをそのままキャプチャレジスタ６２に保持させることができる。キャプチャレジスタ６２は、キャプチャタイミング信号φＣＰがアクティブレベルである期間に、選択メモリセルから読み出されたデータを保持する。その後に、期待値レジスタ１３５は、各ビットが固定ビット値「１」である期待値Ｄｅ［０：ｎ−１］を出力する。これにより、キャプチャレジスタ６２に保持されたデータを生成部１７２で論理反転させた反転データが排他的論理和演算子ＥＸＯＲ１へ供給されるので、排他的論理和演算子ＥＸＯＲ１は、選択メモリセルから読み出された反転データと生成部１７２で生成された反転データとが一致する場合に、不良なしを示すビット値「０」を比較結果ＣＲとして出力する。各排他的論理和演算子ＥＸＯＲ１は、選択メモリセルから読み出された反転データと生成部１７２で生成された反転データとが一致しない場合に、不良ありを示すビット値「１」を比較結果ＣＲとして出力する。すなわち、良否判定回路１０６においてシステム動作中の自己テスト（ＩＳＳＴ）を行うことができる。
【００６１】
次に、半導体集積回路１００の動作について図３を用いて説明する。図３は、半導体集積回路１００の動作を示すフローチャートである。
【００６２】
自己テスト（ＢＩＳＴ）回路１０３は、自己テスト信号φＩＳＳＴをアクティブレベルにして切り替え部１７４へ供給し、キャプチャレジスタ６２の動作モードを第２のモードに設定する（Ｓ１）。
【００６３】
自己テスト回路１０３は、アドレス生成回路３３内のＢＩＳＴ用アドレスカウンタを１つ進めて、システム動作中の自己テスト（ＩＳＳＴ）を行うべきアドレスＡＤ１を指定する。比較部１７１はアドレスＡＤ１で選択されたメモリセルからデータＤ１を読み出すとともに、自己テスト回路１０３は期待値Ｄｅ［０：ｎ−１］の全ビット値を「０」とする。これにより、比較部１７１はメモリセルから読み出されたデータＤ１をそのままキャプチャレジスタ６２に格納する（Ｓ２）。キャプチャレジスタ６２は、キャプチャタイミング信号φＣＰがアクティブレベルである期間にデータＤ１を保持する。
【００６４】
自己テスト（ＢＩＳＴ）回路１０３は、セレクト信号φＳＥＬＥＣＴを第１のレベルにして切り替え部１７３へ供給し、切り替え部１７３を第１の状態に切り替えさせる。自己テスト（ＢＩＳＴ）回路１０３は、反転制御信号φＩＮＣをアクティブレベルにする。これに応じて、生成部１７２は、キャプチャレジスタ６２に保持されたデータＤ１を論理反転させ、反転データＤ１￣を生成して書き込み部１６６へ供給する（Ｓ３）。これに応じて、書き込み部１６６は、反転データＤ１￣を選択メモリセルに書き込む（Ｓ４）。
【００６５】
比較部１７１はアドレスＡＤ１で選択されたメモリセルから反転データＤ１￣を読み出す（Ｓ５）とともに、自己テスト回路１０３は期待値Ｄｅ［０：ｎ−１］の全ビット値を「１」とする。これにより、比較部１７１は、生成部１７２で生成された反転データＤ１￣と選択メモリセルから読み出された反転データＤ１￣とが一致するか否か判断する（Ｓ６）。比較部１７１は、生成部１７２で生成された反転データＤ１￣と選択メモリセルから読み出された反転データＤ１￣とが一致する場合（Ｓ６でＹｅｓ）、不良なしを示すビット値「０」を比較結果ＣＲとしてキャプチャレジスタ６２に出力して格納する（Ｓ７）。キャプチャレジスタ６２は、キャプチャタイミング信号φＣＰがアクティブレベルである期間に比較結果ＣＲを保持する。比較部１７１は、生成部１７２で生成された反転データＤ１￣と選択メモリセルから読み出された反転データＤ１￣とが一致しない場合（Ｓ６でＮｏ）、不良ありを示すビット値「１」を比較結果ＣＲとしてキャプチャレジスタ６２に出力して格納する（Ｓ８）。キャプチャレジスタ６２は、キャプチャタイミング信号φＣＰがアクティブレベルである期間に比較結果ＣＲを保持する。
【００６６】
自己テスト（ＢＩＳＴ）回路１０３は、セレクト信号φＳＥＬＥＣＴを第２のレベルにして切り替え部１７３へ供給し、切り替え部１７３を第２の状態に切り替えさせる。生成部１７２は、選択メモリセルから読み出された反転データＤ１￣を論理反転させ、元のデータＤ１を復元して書き込み部１６６へ供給する（Ｓ９）。これに応じて、書き込み部１６６は、元のデータＤ１を選択メモリセルに書き戻す（Ｓ１０）。
【００６７】
自己テスト回路１０３は、システム動作中の自己テスト（ＩＳＳＴ）を他のアドレスについて行う余裕があるか否かを判断する（Ｓ１１）。例えば、自己テスト回路１０３は、テストモード信号φＴＥＳＴがアクティブレベルからノンアクティブレベルになるタイミングをコントローラＣＴＲから予め通知されていれば、そのタイミングまでの残り時間がＳ２〜Ｓ１０の一連のサイクルのテスト動作に要する時間以上である場合に、他のアドレスについても行う余裕があると判断することができる。自己テスト回路１０３は、他のアドレスについて行う余裕がある場合（Ｓ１１でＹｅｓ）、処理をＳ２へ戻し、他のアドレスについて行う余裕がない場合（Ｓ１１でＮｏ）、処理を終了する。
【００６８】
以上のように、第１の実施形態では、半導体集積回路１００において、キャプチャレジスタ６２が、選択メモリセルから読み出されたデータを保持する。書き込み部１６６は、キャプチャレジスタ６２に保持されたデータに応じた関連データを選択メモリセルに書き込む。例えば、書き込み部１６６は、キャプチャレジスタ６２に保持されたデータが論理反転された反転データを選択メモリセルに書き込む。制御部１７０は、選択メモリセルから関連データ（反転データ）を読み出し、キャプチャレジスタ６２に保持されたデータに応じた関連データ（反転データ）と選択メモリセルから読み出された関連データ（反転データ）とを比較する。制御部１７０は、比較結果を選択メモリセルについての自己テスト結果として上書きで保持するようにキャプチャレジスタ６２を制御する。そして、制御部１７０は、選択メモリセルから読み出された関連データ（反転データ）に応じた元のデータを復元して選択メモリセルに書き戻すように書き込み部１６６を制御する。これにより、システムＳＹＳの動作中に短時間で一部アドレスのテストを行うことができ、データが書き換わらない状態で終了するようにできる。この結果、メモリ５に既に書き込まれていたデータを失うことなく、システム動作中の自己テスト（ＩＳＳＴ：Ｉｎ  Ｓｙｓｔｅｍ  Ｓｅｌｆ  Ｔｅｓｔ）を行うことができる。
【００６９】
なお、第１の実施形態では、自己テスト回路１０３がアドレス生成回路３３内のＢＩＳＴ用アドレスカウンタを１つ進めてシステム動作中の自己テスト（ＩＳＳＴ）を行うべきアドレスＡＤ１を指定する場合について例示しているが、システム動作中の自己テスト（ＩＳＳＴ）を行うべきアドレスＡＤ１は他の方法で指定してもよい。例えば、アドレス生成回路３３内に疑似乱数発生器を設け、疑似乱数発生器で発生された乱数に応じてアドレスＡＤ１を指定してもよい。
【００７０】
また、システムＳＹＳがシャットダウンを行う際は、現在のテストアドレスを不揮発性記憶回路に保存し、次回のシステムＳＹＳ起動後はそのアドレス値を不揮発性記憶回路から読み出して初期値としてテストを継続してもよい。
【００７１】
（第２の実施形態）
次に、第２の実施形態にかかる半導体集積回路２００について説明する。以下では、第１の実施形態と異なる部分を中心に説明する。
【００７２】
第２の実施形態では、半導体集積回路２００の良否判定回路２０６において、図４に示すように、キャプチャレジスタ６２の他に保存レジスタ２７５を設け、それぞれに保持されたデータを用いてメモリ５における複数アドレスへの書き込みを並行して行えるようにする。
【００７３】
具体的には、半導体集積回路２００は、自己テスト回路１０３及び複数のメモリカラー１０４（図１参照）に代えて、自己テスト（ＢＩＳＴ）回路２０３及び複数のメモリカラー２０４を有する。なお、半導体集積回路２００は複数のメモリカラー２０４を有するが、図４では、自己テスト（ＢＩＳＴ）回路２０３と１つのメモリカラー２０４とについて例示的に示している。
【００７４】
自己テスト回路２０３のアドレス生成回路２３３は、複数のアドレス信号ＡＤ１１，ＡＤ１２を並行して発生させることができる。例えば、アドレス生成回路２３３は、ＢＩＳＴ用アドレスカウンタのカウント値とそのカウント値をインクリメントした値とをそれぞれアドレス信号ＡＤ１１，ＡＤ１２とすることができる。あるいは、例えば、アドレス生成回路２３３は、複数のＢＩＳＴ用アドレスカウンタを有し、複数のＢＩＳＴ用アドレスカウンタを用いて複数のアドレス信号ＡＤ１１，ＡＤ１２を並行して発生させることができる。このとき、アドレス生成回路２３３は、複数のＢＩＳＴ用アドレスカウンタで互いに連続したカウント値を複数のアドレス信号ＡＤ１１，ＡＤ１２として発生させることができる。
【００７５】
各メモリカラー２０４は、良否判定回路１０６（図１参照）に代えて、良否判定回路２０６を有する。良否判定回路２０６は、制御部１７０（図１参照）に代えて、制御部２７０を有する。制御部２７０は、切り替え部１７３（図１参照）に代えて切り替え部２７３を有し、保存レジスタ２７５をさらに有する。切り替え部２７３は、第１の状態と第２の状態とを切り替える。第３の状態は、キャプチャレジスタ６２に保持された第１のデータ又は保存レジスタ２７５に保持された第２のデータが書き込み部１６６へ供給される状態である。第２の状態は、選択された第２のメモリセルから読み出された第１のデータ又は選択された第１のメモリセルから読み出された第２のデータが書き込み部１６６へ供給される状態である。
【００７６】
例えば、切り替え部２７３は、ｎ個のセレクタＳＬ３［０：ｎ−１］に加えて、ｎ個のセレクタＳＬ４［０：ｎ−１］を有する。セレクタＳＬ４は、セレクト信号φＳＥＬＥＣＴ２に応じて、保存レジスタ２７５の出力とキャプチャレジスタ６２の出力とを選択してセレクタＳＬ３へ出力する。セレクタＳＬ４は、セレクト信号φＳＥＬＥＣＴ２が第４のレベルであるときに保存レジスタ２７５の出力を選択してセレクタＳＬ３へ出力し、セレクト信号φＳＥＬＥＣＴ２が第５のレベルであるときにキャプチャレジスタ６２の出力を選択してセレクタＳＬ３へ出力する。
【００７７】
保存レジスタ２７５は、保存タイミング信号φＳＴに応じて、選択メモリセルから読み出されたデータを保持する。制御入力生成回路３４は、保存レジスタ２７５によりデータを保持すべきタイミングで保存タイミング信号φＳＴをアクティブレベルにして保存レジスタ２７５へ供給する。保存レジスタ２７５は、保存タイミング信号φＳＴがアクティブレベルである期間に、選択メモリセルから読み出されたデータを保持する。保存レジスタ２７５は、キャプチャレジスタ６２と同様の構造を有しており、例えばｎ個のレジスタＲＧ［０：ｎ−１］を有する（図１１参照）。
【００７８】
また、半導体集積回路２００の動作が図５に示すように、次の点で第１の実施形態と異なる。図５は、半導体集積回路２００の動作を示すフローチャートである。
【００７９】
自己テスト回路２０３は、アドレス生成回路２３３内のＢＩＳＴ用アドレスカウンタを１つ進めて、システム動作中の自己テスト（ＩＳＳＴ）を行うべきアドレスＡＤ１１を指定する。比較部１７１はアドレスＡＤ１１で選択された第１のメモリセルから第１のデータＤ１１を読み出すとともに、自己テスト回路２０３は期待値Ｄｅ［０：ｎ−１］の全ビット値を「０」とする。これにより、比較部１７１は第１のメモリセルから読み出された第１のデータＤ１１をそのままキャプチャレジスタ６２に格納する（Ｓ２１）。キャプチャレジスタ６２は、キャプチャタイミング信号φＣＰがアクティブレベルである期間に第１のデータＤ１１を保持する。このとき、保存タイミング信号φＳＴはノンアクティブレベルになっており、第１のデータＤ１１は保存レジスタ２７５には格納されない。
【００８０】
自己テスト回路２０３は、例えばアドレスＡＤ１１をインクリメントして、システム動作中の自己テスト（ＩＳＳＴ）を行うべきアドレスＡＤ１２（＝「アドレスＡＤ１１」＋１）を指定する。比較部１７１はアドレスＡＤ１２で選択された第２のメモリセルから第２のデータＤ１２を読み出す。これにより、比較部１７１は第２のメモリセルから読み出された第２のデータＤ１２を保存レジスタ２７５に格納する（Ｓ２２）。保存レジスタ２７５は、保存タイミング信号φＳＴがアクティブレベルである期間に第２のデータＤ１２を保持する。このとき、キャプチャタイミング信号φＣＰはノンアクティブレベルになっており、第２のデータＤ１２はキャプチャレジスタ６２には格納されない。
【００８１】
自己テスト回路２０３は、セレクト信号φＳＥＬＥＣＴを第１のレベルにして切り替え部２７３へ供給し、切り替え部２７３を第１の状態に切り替えさせる。自己テスト回路２０３は、セレクト信号φＳＥＬＥＣＴ２を第５のレベルにして切り替え部２７３へ供給し、キャプチャレジスタ６２に保持された第１のデータＤ１１が生成部１７２へ供給されるようにする。また、自己テスト回路２０３は、反転制御信号φＩＮＣをノンアクティブレベル（＝ビット値「０」）にし生成部１７２が第１のデータＤ１１を論理反転せずに書き込み部１６６へ供給するようにする。これにより、第１のデータＤ１１がアドレスＡＤ１２で選択された第２のメモリセルに書き込まれる（Ｓ２３）。なお、第２のメモリセルに書き込まれる第１のデータＤ１１は、第２のメモリセルに書き込まれていた第２のデータＤ１２に対して、例えば隣のアドレスの第１のメモリセルに書き込まれていたデータである点で関連するデータ（関連データ）である。
【００８２】
比較部１７１はアドレスＡＤ１２で選択された第２のメモリセルから第１のデータＤ１１を読み出すとともに、自己テスト回路２０３は期待値Ｄｅ［０：ｎ−１］の全ビット値を「１」とする。これにより、比較部１７１は、生成部１７２から転送された第１のデータＤ１１と選択された第２のメモリセルから読み出された第１のデータＤ１１とが一致するか否か判断する（Ｓ２４）。比較部１７１は、生成部１７２から転送された第１のデータＤ１１と選択された第２のメモリセルから読み出された第１のデータＤ１１とが一致する場合（Ｓ２４でＹｅｓ）、不良なしを示すビット値「０」を比較結果ＣＲとしてキャプチャレジスタ６２に出力して格納する（Ｓ２５）。キャプチャレジスタ６２は、キャプチャタイミング信号φＣＰがアクティブレベルである期間に比較結果ＣＲを保持する。比較部１７１は、生成部１７２から転送された第１のデータＤ１１と選択された第２のメモリセルから読み出された第１のデータＤ１１とが一致しない場合（Ｓ２４でＮｏ）、不良ありを示すビット値「１」を比較結果ＣＲとしてキャプチャレジスタ６２に出力して格納する（Ｓ２６）。キャプチャレジスタ６２は、キャプチャタイミング信号φＣＰがアクティブレベルである期間に比較結果ＣＲを保持する。そして、完了信号φＣＯＭＰをアクティブレベルにする（図１１参照）。これにより、フラグ生成回路６４は、比較結果ＣＲに応じた不良フラグを生成してフラグレジスタ６５に格納する。
【００８３】
自己テスト回路２０３は、セレクト信号φＳＥＬＥＣＴ２を第４のレベルにして切り替え部２７３へ供給し、保存レジスタ２７５に保持された第２のデータＤ１２が生成部１７２へ供給されるようにする。また、自己テスト回路２０３は、反転制御信号φＩＮＣをノンアクティブレベル（＝ビット値「０」）にし生成部１７２が第２のデータＤ１２を論理反転せずに書き込み部１６６へ供給するようにする。これにより、第２のデータＤ１２がアドレスＡＤ１１で選択された第１のメモリセルに書き込まれる（Ｓ２７）。なお、第１のメモリセルに書き込まれる第２のデータＤ１２は、第１のメモリセルに書き込まれていた第１のデータＤ１１に対して、例えば隣のアドレスの第２のメモリセルに書き込まれていたデータである点で関連するデータ（関連データ）である。
【００８４】
比較部１７１はアドレスＡＤ１１で選択された第１のメモリセルから第２のデータＤ１２を読み出すとともに、自己テスト回路２０３は期待値Ｄｅ［０：ｎ−１］の全ビット値を「１」とする。これにより、比較部１７１は、生成部１７２から転送された第２のデータＤ１２と選択された第１のメモリセルから読み出された第２のデータＤ１２とが一致するか否か判断する（Ｓ２８）。比較部１７１は、生成部１７２から転送された第２のデータＤ１２と選択された第１のメモリセルから読み出された第２のデータＤ１２とが一致する場合（Ｓ２８でＹｅｓ）、不良なしを示すビット値「０」を比較結果ＣＲとしてキャプチャレジスタ６２に出力して格納する（Ｓ２９）。キャプチャレジスタ６２は、キャプチャタイミング信号φＣＰがアクティブレベルである期間に比較結果ＣＲを保持する。比較部１７１は、生成部１７２から転送された第２のデータＤ１２と選択された第１のメモリセルから読み出された第２のデータＤ１２とが一致しない場合（Ｓ２８でＮｏ）、不良ありを示すビット値「１」を比較結果ＣＲとしてキャプチャレジスタ６２に出力して格納する（Ｓ３０）。キャプチャレジスタ６２は、キャプチャタイミング信号φＣＰがアクティブレベルである期間に比較結果ＣＲを保持する。そして、完了信号φＣＯＭＰをアクティブレベルにする（図１１参照）。これにより、フラグ生成回路６４は、比較結果ＣＲに応じた不良フラグを生成してフラグレジスタ６５に格納する。
【００８５】
比較部１７１は、アドレスＡＤ１１で選択された第１のメモリセルから第２のデータＤ１２を読み出す。自己テスト（ＢＩＳＴ）回路２０３は、保存タイミング信号φＳＴをアクティブレベルにする。これにより、比較部１７１は第１のメモリセルから読み出された第２のデータＤ１２を保存レジスタ２７５に格納する（Ｓ３１）。このとき、キャプチャタイミング信号φＣＰはノンアクティブレベルになっており、第２のデータＤ１１はキャプチャレジスタ６２には格納されない。
【００８６】
自己テスト（ＢＩＳＴ）回路２０３は、セレクト信号φＳＥＬＥＣＴを第２のレベルにして切り替え部２７３へ供給し、切り替え部２７３を第２の状態に切り替えさせる。比較部１７１は、アドレスＡＤ１２で選択された第２のメモリセルから第１のデータＤ１１を読み出す（Ｓ３２）。
【００８７】
生成部１７２は、第２のメモリセルから読み出された第１のデータＤ１１を書き込み部１６６へ供給する。これに応じて、書き込み部１６６は、第１のデータＤ１１を、アドレスＡＤ１１で選択された第１のメモリセルに書き戻す（Ｓ３３）。
【００８８】
自己テスト回路２０３は、セレクト信号φＳＥＬＥＣＴを第１のレベルにして切り替え部２７３へ供給し、切り替え部２７３を第１の状態に切り替えさせる。自己テスト回路２０３は、セレクト信号φＳＥＬＥＣＴ２を第４のレベルにして切り替え部２７３へ供給し、保存レジスタ２７５に保持された第２のデータＤ１２が生成部１７２へ供給されるようにする。生成部１７２は、第２のデータＤ１２を書き込み部１６６へ供給する。これに応じて、書き込み部１６６は、第２のデータＤ１２を、アドレスＡＤ１２で選択された第２のメモリセルに書き戻す（Ｓ３４）。
【００８９】
以上のように、第２の実施形態では、キャプチャレジスタ６２の他に保存レジスタ２７５を設け、それぞれに保持されたデータを用いてメモリ５における複数アドレスへの書き込みを並行して行う。これにより、連続する複数アドレスについて並行してテスト動作を行うことができ、隣接するメモリセル間の干渉についてテストすることができる。
【００９０】
なお、メモリセルへの書き込み時にデータを反転させることができるようにしてもよい。具体的には、図６に示すように、次のような動作が行われてもよい。図６は、第２の実施形態の変形例にかかる半導体集積回路の動作を示すフローチャートである。
【００９１】
自己テスト回路２０３は、アドレス生成回路２３３内のＢＩＳＴ用アドレスカウンタを１つ進めて、システム動作中の自己テスト（ＩＳＳＴ）を行うべきアドレスＡＤ１１を指定する。比較部１７１はアドレスＡＤ１１で選択された第１のメモリセルから第１のデータＤ１１を読み出すとともに、自己テスト回路２０３は期待値Ｄｅ［０：ｎ−１］の全ビット値を「０」とする。これにより、比較部１７１は第１のメモリセルから読み出された第１のデータＤ１１をそのままキャプチャレジスタ６２に格納する（Ｓ２１）。キャプチャレジスタ６２は、キャプチャタイミング信号φＣＰがアクティブレベルである期間に第１のデータＤ１１を保持する。このとき、保存タイミング信号φＳＴはノンアクティブレベルになっており、第１のデータＤ１１は保存レジスタ２７５には格納されない。
【００９２】
自己テスト回路２０３は、例えばアドレスＡＤ１１をインクリメントして、システム動作中の自己テスト（ＩＳＳＴ）を行うべきアドレスＡＤ１２（＝「アドレスＡＤ１１」＋１）を指定する。比較部１７１はアドレスＡＤ１２で選択された第２のメモリセルから第２のデータＤ１２を読み出す。これにより、比較部１７１は第２のメモリセルから読み出された第２のデータＤ１２を保存レジスタ２７５に格納する（Ｓ２２）。保存レジスタ２７５は、保存タイミング信号φＳＴがアクティブレベルである期間に第２のデータＤ１２を保持する。このとき、キャプチャタイミング信号φＣＰはノンアクティブレベルになっており、第２のデータＤ１２はキャプチャレジスタ６２には格納されない。
【００９３】
自己テスト回路２０３は、セレクト信号φＳＥＬＥＣＴを第１のレベルにして切り替え部２７３へ供給し、切り替え部２７３を第１の状態に切り替えさせる。自己テスト回路２０３は、セレクト信号φＳＥＬＥＣＴ２を第５のレベルにして切り替え部２７３へ供給し、キャプチャレジスタ６２に保持された第１のデータＤ１１が生成部１７２へ供給されるようにする。また、自己テスト回路２０３は、反転制御信号φＩＮＣをアクティブレベルにする。これに応じて、生成部１７２は、キャプチャレジスタ６２に保持された第１のデータＤ１１を論理反転させ、第１の反転データＤ１１￣を生成して書き込み部１６６へ供給する（Ｓ４１）。これに応じて、書き込み部１６６は、第１の反転データＤ１１￣を、アドレスＡＤ１２で選択された第２のメモリセルに書き込む（Ｓ４２）。なお、第２のメモリセルに書き込まれる第１の反転データＤ１１￣は、第２のメモリセルに書き込まれていた第２のデータＤ１２に対して、例えば隣のアドレスの第１のメモリセルに書き込まれていたデータを論理反転させたデータである点で関連するデータ（関連データ）である。
【００９４】
比較部１７１はアドレスＡＤ１２で選択された第２のメモリセルから第１の反転データＤ１１￣を読み出すとともに、自己テスト回路２０３は期待値Ｄｅ［０：ｎ−１］の全ビット値を「１」とする。これにより、比較部１７１は、生成部１７２で生成された第１の反転データＤ１１￣と選択された第２のメモリセルから読み出された第１の反転データＤ１１￣とが一致するか否か判断する（Ｓ４３）。比較部１７１は、生成部１７２で生成された第１の反転データＤ１１￣と選択された第２のメモリセルから読み出された第１の反転データＤ１１￣とが一致する場合（Ｓ４３でＹｅｓ）、不良なしを示すビット値「０」を比較結果ＣＲとしてキャプチャレジスタ６２に出力して格納する（Ｓ４４）。キャプチャレジスタ６２は、キャプチャタイミング信号φＣＰがアクティブレベルである期間に比較結果ＣＲを保持する。比較部１７１は、生成部１７２で生成された第１の反転データＤ１１￣と選択された第２のメモリセルから読み出された第１の反転データＤ１１￣とが一致しない場合（Ｓ４３でＮｏ）、不良ありを示すビット値「１」を比較結果ＣＲとしてキャプチャレジスタ６２に出力して格納する（Ｓ４５）。キャプチャレジスタ６２は、キャプチャタイミング信号φＣＰがアクティブレベルである期間に比較結果ＣＲを保持する。そして、完了信号φＣＯＭＰをアクティブレベルにする（図１１参照）。これにより、フラグ生成回路６４は、比較結果ＣＲに応じた不良フラグを生成してフラグレジスタ６５に格納する。
【００９５】
自己テスト回路２０３は、セレクト信号φＳＥＬＥＣＴ２を第４のレベルにして切り替え部２７３へ供給し、保存レジスタ２７５に保持された第２のデータＤ１２が生成部１７２へ供給されるようにする。また、自己テスト回路２０３は、反転制御信号φＩＮＣをアクティブレベルにする。これに応じて、生成部１７２は、保存レジスタ２７５に保持された第２のデータＤ１２を論理反転させ、第２の反転データＤ１２￣を生成して書き込み部１６６へ供給する（Ｓ４６）。これに応じて、書き込み部１６６は、第２の反転データＤ１２￣を、アドレスＡＤ１１で選択された第１のメモリセルに書き込む（Ｓ４７）。なお、第１のメモリセルに書き込まれる第２の反転データＤ１２￣は、第１のメモリセルに書き込まれていた第１のデータＤ１１に対して、例えば隣のアドレスの第２のメモリセルに書き込まれていたデータを論理反転させたデータである点で関連するデータ（関連データ）である。
【００９６】
比較部１７１はアドレスＡＤ１１で選択された第１のメモリセルから第２の反転データＤ１２￣を読み出すとともに、自己テスト回路２０３は期待値Ｄｅ［０：ｎ−１］の全ビット値を「１」とする。これにより、比較部１７１は、生成部１７２で生成された第２の反転データＤ１２￣と選択された第１のメモリセルから読み出された第２の反転データＤ１２￣とが一致するか否か判断する（Ｓ４８）。比較部１７１は、生成部１７２で生成された第２の反転データＤ１２￣と選択された第１のメモリセルから読み出された第２の反転データＤ１２￣とが一致する場合（Ｓ４８でＹｅｓ）、不良なしを示すビット値「０」を比較結果ＣＲとしてキャプチャレジスタ６２に出力して格納する（Ｓ４９）。キャプチャレジスタ６２は、キャプチャタイミング信号φＣＰがアクティブレベルである期間に比較結果ＣＲを保持する。比較部１７１は、生成部１７２で生成された第２の反転データＤ１２￣と選択された第１のメモリセルから読み出された第２の反転データＤ１２￣とが一致しない場合（Ｓ４８でＮｏ）、不良ありを示すビット値「１」を比較結果ＣＲとしてキャプチャレジスタ６２に出力して格納する（Ｓ５０）。キャプチャレジスタ６２は、キャプチャタイミング信号φＣＰがアクティブレベルである期間に比較結果ＣＲを保持する。そして、完了信号φＣＯＭＰをアクティブレベルにする（図１１参照）。これにより、フラグ生成回路６４は、比較結果ＣＲに応じた不良フラグを生成してフラグレジスタ６５に格納する。
【００９７】
比較部１７１は、アドレスＡＤ１１で選択された第１のメモリセルから第２の反転データＤ１２￣を読み出す。自己テスト（ＢＩＳＴ）回路２０３は、保存タイミング信号φＳＴをアクティブレベルにする。これにより、比較部１７１は第１のメモリセルから読み出された第２の反転データＤ１２￣を保存レジスタ２７５に格納する（Ｓ５１）。このとき、キャプチャタイミング信号φＣＰはノンアクティブレベルになっており、第２の反転データＤ１２￣はキャプチャレジスタ６２には格納されない。
【００９８】
自己テスト（ＢＩＳＴ）回路２０３は、セレクト信号φＳＥＬＥＣＴを第２のレベルにして切り替え部２７３へ供給し、切り替え部２７３を第２の状態に切り替えさせる。比較部１７１は、アドレスＡＤ１２で選択された第２のメモリセルから第１の反転データＤ１１￣を読み出す（Ｓ５２）。
【００９９】
生成部１７２は、第２のメモリセルから読み出された第１の反転データＤ１１￣を論理反転させ、元の第１のデータＤ１１を復元して書き込み部１６６へ供給する（Ｓ５３）。これに応じて、書き込み部１６６は、第１のデータＤ１１を、アドレスＡＤ１１で選択された第１のメモリセルに書き戻す（Ｓ５４）。
【０１００】
自己テスト回路２０３は、セレクト信号φＳＥＬＥＣＴを第１のレベルにして切り替え部２７３へ供給し、切り替え部２７３を第１の状態に切り替えさせる。自己テスト回路２０３は、セレクト信号φＳＥＬＥＣＴ２を第４のレベルにして切り替え部２７３へ供給し、保存レジスタ２７５に保持された第２の反転データＤ１２￣が生成部１７２へ供給されるようにする。生成部１７２は、第２の反転データＤ１２￣を論理反転させ、元の第２のデータＤ１２を復元して書き込み部１６６へ供給する（Ｓ５５）。これに応じて、書き込み部１６６は、第２のデータＤ１２を、アドレスＡＤ１２で選択された第２のメモリセルに書き戻す（Ｓ５６）。
【０１０１】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１０２】
１，１００，２００  半導体集積回路、ＳＹＳ  システム。
【図１】
2015176619.tif 000003
【図２】
2015176619.tif 000004
【図３】
2015176619.tif 000005
【図４】
2015176619.tif 000006
【図５】
2015176619.tif 000007
【図６】
2015176619.tif 000008
【図７】
2015176619.tif 000009
【図８】
2015176619.tif 000010
【図９】
2015176619.tif 000011
【図１０】
2015176619.tif 000012
【図１１】
2015176619.tif 000013