(57)【要約】  本発明に係る半導体装置（９）は、ＦＩＦＯ（９１）と、第１のクロック信号（９１０）に同期して、複数のテストデータをＦＩＦＯ（９１）に順次書き込むテストデータ書込回路（９２）と、テストデータ書込回路（９２）による複数のテストデータのＦＩＦＯ（９１）への書き込みと並行して、第１のクロック信号（９１０）とは同期していない第２のクロック信号（９２０）に同期して、ＦＩＦＯ（９１）に格納された複数のテストデータを順次読み出しての被テスト回路（９４）のスキャンテストを実施するテスト制御回路（９３）と、を備える。
2016166780.tif 000002
【特許請求の範囲】
【請求項１】
ＦＩＦＯと、
第１のクロック信号に同期して、複数のテストデータを前記ＦＩＦＯに順次書き込むテストデータ書込回路と、
前記テストデータ書込回路による前記複数のテストデータの前記ＦＩＦＯへの書き込みと並行して、前記第１のクロック信号とは同期していない第２のクロック信号に同期して、前記ＦＩＦＯに格納された複数のテストデータを順次読み出しての被テスト回路のスキャンテストを実施するテスト制御回路と、
を備えた半導体装置。
【請求項２】
前記半導体装置は、さらに、前記ＦＩＦＯが空であるか否かを判定する空判定回路を備え、
前記テスト制御回路は、前記空判定回路によって前記ＦＩＦＯが空でないと判定された場合、前記ＦＩＦＯからのテストデータの読み出しを行わせる、
請求項１に記載の半導体装置。
【請求項３】
前記テスト制御回路は、前記空判定回路によって前記ＦＩＦＯが空であると判定された場合、前記ＦＩＦＯからのテストデータの読み出しを停止させる、
請求項２に記載の半導体装置。
【請求項４】
前記被テスト回路は、前記スキャンテストを実施するためのスキャンチェーンを有し、前記第２のクロック信号に同期してスキャンシフト動作を行うことで、前記ＦＩＦＯからテストデータを読み出して前記スキャンチェーンにスキャンインするものであり、
前記テスト制御回路は、さらに、前記空判定回路によって前記ＦＩＦＯが空であると判定された場合、前記被テスト回路に対する前記第２のクロック信号の供給を停止することで、前記ＦＩＦＯからのテストデータの読み出しを停止させるクロック制御回路を備える、
請求項３に記載の半導体装置。
【請求項５】
前記被テスト回路は、前記スキャンテストを実施するためのスキャンチェーンを有し、前記第２のクロック信号に同期してスキャンシフト動作を行うことで、前記ＦＩＦＯからテストデータを読み出して前記スキャンチェーンにスキャンインするとともに、前記スキャンチェーンが保持するテスト結果データをスキャンアウトするものであり、
前記テストデータ書込回路は、前記第１のクロック信号に同期して、前記複数のテストデータとともに、当該複数のデータのそれぞれに対応する複数のマスクデータを前記ＦＩＦＯに順次書き込み、
前記半導体装置は、さらに、前記スキャンチェーンからスキャンアウトされたテスト結果データが入力されるテスト結果処理回路を備え、
前記テスト結果処理回路は、前記テストデータが前記スキャンチェーンにスキャンインされるときに、当該テストデータに対応するマスクデータを前記ＦＩＦＯから読み出し、読み出したマスクデータによって、当該テストデータが前記スキャンチェーンにスキャンインされるときにスキャンアウトされるテスト結果データをマスクすることで、Ｌｏｗ又はＨｉｇｈの状態に固定するように変更するマスク回路を有する、
請求項１に記載の半導体装置。
【請求項６】
前記マスク回路は、前記マスク後のテスト結果データを順次出力し、
前記テスト結果処理回路は、前記マスク回路から順次出力されるテスト結果データに基づいて圧縮符号を生成する圧縮回路を有する、
請求項５に記載の半導体装置。
【請求項７】
前記テスト制御回路は、前記第２のクロック信号に同期して、前記スキャンチェーンにスキャンインされたテストデータ数をカウントし、前記スキャンチェーンのサイズ分のテストデータがスキャンインされる度に、前記被テスト回路にスキャンシフト動作に代えてキャプチャ動作を行わせる、
請求項６に記載の半導体装置。
【請求項８】
前記テスト制御回路は、前記スキャンチェーンにスキャンインされたテストデータ数に基づいて、前記複数のテストデータの全てがスキャンインされたと判定したときに終了信号を出力し、
前記半導体装置は、さらに、前記テスト制御回路から出力された終了信号に応じて、前記テスト結果処理回路によって生成された圧縮符号を所定の期待値と比較することで、スキャンテストの結果を判定するテスト結果判定回路を備えた、
請求項７に記載の半導体装置。
【請求項９】
前記半導体装置は、さらに、前記ＦＩＦＯがフルであるか否かを判定するフル判定回路を備え、
前記テストデータ書込回路は、前記フル判定回路によって前記ＦＩＦＯがフルであると判定された場合、前記ＦＩＦＯへのテストデータの書き込みを停止する、
請求項１に記載の半導体装置。
【請求項１０】
前記半導体装置は、さらに、前記複数のテストデータが格納される記憶回路を備え、
前記テストデータ書込回路は、前記記憶回路に格納された複数のテストデータを順次、前記ＦＩＦＯに書き込む、
請求項１に記載の半導体装置。
【請求項１１】
前記半導体装置は、さらに、前記半導体装置に接続される外部記憶装置から、前記複数のテストデータを取得し、前記記憶回路に格納するテストデータ取得回路を有する、
請求項１０に記載の半導体装置。
【請求項１２】
前記半導体装置は、複数の前記被テスト回路を備え、
前記複数の被テスト回路のそれぞれは、前記スキャンテストを実施するためのスキャンチェーンを有し、前記第２のクロック信号に同期してスキャンシフト動作を行うことで、前記テスト制御回路が読み出したテストデータを前記スキャンチェーンにスキャンインするものであり、
前記半導体装置は、さらに、前記ＦＩＦＯから読み出したテストデータの入力先として、前記複数の被テスト回路のうち、前記テスト制御回路によって指示された被テスト回路を選択する入力選択回路を備えた、
請求項１に記載の半導体装置。
【請求項１３】
前記複数の被テスト回路のそれぞれは、前記スキャンインとともに、前記スキャンチェーンが保持するテスト結果データをスキャンアウトするものであり、
前記半導体装置は、さらに、
前記スキャンチェーンからスキャンアウトされたテスト結果データが入力されるテスト結果処理回路と、
前記テスト結果データを前記テスト結果処理回路に出力する出力元として、前記複数の被テスト回路のうち、前記テスト制御回路によって指示された被テスト回路を選択する出力選択回路と、を備えた、
請求項１２に記載の半導体装置。
【請求項１４】
前記半導体装置は、複数の前記被テスト回路と、当該複数の被テスト回路のそれぞれのスキャンテストを実施する複数の前記テスト制御回路と、を備え、
前記半導体装置は、さらに、
前記複数の被テスト回路のうち、いずれか２つ以上の被テスト回路のスキャンテストの実施を指示するテスト指示回路と、
前記テスト指示回路から指示された２つ以上の被テスト回路に対応する２つ以上のテスト制御回路に対して、前記スキャンテストの実施を指示する調停回路と、を備えた、
請求項１に記載の半導体装置。
【請求項１５】
前記被テスト回路は、第１の被テスト回路であり、
前記テスト制御回路は、第１のテスト制御回路であり、
前記半導体装置は、さらに、
前記テストデータ書込回路による前記複数のテストデータの前記ＦＩＦＯへの書き込みと並行して、前記第１のクロック信号及び前記第２のクロック信号とは同期していない第３のクロック信号に同期して、前記ＦＩＦＯに格納された複数のテストデータを順次読み出しての第２の被テスト回路のスキャンテストを実施する第２のテスト制御回路と、
前記スキャンテストを実施するテスト制御回路として、前記第１のテスト制御回路及び前記第２のテスト制御回路のうち、いずれかを選択する選択回路を備えた、
請求項１に記載の半導体装置。
【請求項１６】
前記半導体装置は、さらに、前記ＦＩＦＯが空であるか否かを判定する第１の空判定回路及び第２の空判定回路を備え、
前記第１のテスト制御回路は、前記第１の空判定回路によって前記ＦＩＦＯが空でないと判定された場合、前記ＦＩＦＯからのテストデータの読み出しを行わせ、
前記第２のテスト制御回路は、前記第２の空判定回路によって前記ＦＩＦＯが空でないと判定された場合、前記ＦＩＦＯからのテストデータの読み出しを行わせ、
前記選択回路は、前記ＦＩＦＯが空であるか否かを判定する空判定回路として、前記第１の空判定回路及び前記第２の空判定回路のいずれかを選択することで、前記第１のテスト制御回路及び前記第２のテスト制御回路のうち、いずれかに前記スキャンテストを実施させる、
請求項１５に記載の半導体装置。
【請求項１７】
第１のクロック信号に同期して、複数のテストデータをＦＩＦＯに順次書き込み、
前記複数のテストデータの前記ＦＩＦＯへの書き込みと並行して、前記第１のクロック信号とは同期していない第２のクロック信号に同期して、前記ＦＩＦＯに格納された複数のテストデータを順次読み出しての被テスト回路のスキャンテストを実施する、
スキャンテスト方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体装置及びスキャンテスト方法に関し、特に異なるクロック信号に同期して動作する回路を有する半導体装置に関する。
【背景技術】
【０００２】
半導体装置のテストには、スキャンテストを用いることが一般的である。スキャンテストを実行可能とした半導体装置は、シフトレジスタで構成されるスキャンチェーンを有する。このシフトレジスタは、ロジックを構成するフリップフロップを接続したものである。そして、そのスキャンチェーンの初段のフリップフロップからテストデータを入力することでスキャンテストが行われる。【０００３】
通常、スキャンチェーンは、スキャンテストにかかる時間を短縮するために複数本に分割されている。スキャンチェーンのそれぞれは、テストデータを取り込むための入力と、テスト結果を取り出すための出力を有する。スキャンチェーンの最終段のフリップフロップから順次取り出されて期待値と照合することで、スキャンテストのテスト結果が判定される。【０００４】
上述の動作から分かる通り、スキャンテストは、その性質上、一定速度のクロックに同期して複数のテストデータを、複数のスキャンチェーンに対して同時に供給しなければならない。また、スキャンテストは、その性質上、一定速度のクロックに同期して、それぞれのスキャンチェーンに対して複数のテストデータを連続して供給しなければならない。ここで言う「クロックに同期」とは、スキャンチェーン（２０１０）にスキャンシフト動作を行わせるクロックの１サイクルに対して、セットアップタイム違反及びホールドタイム違反を発生させず、テストデータを次段のフリップフロップに伝搬させることを言う。複数のスキャンチェーンへのテストデータの供給が上記条件を満たさない場合、正しいテストデータを全てのフリップフロップに供給することが出来ず、正しいテスト結果を安定して取り出すことも出来なくなってしまう。【０００５】
しかしながら、上述したようなスキャンテストを実施する回路を含むランタイムテスト機構においては、タイミング設計が困難である場合がある。タイミング設計が困難なケースとして、ＣＰＵ（Central Processing Unit）コアが、ＤＶＦＳ（Dynamic Voltage and Frequency Scaling）領域（電圧・周波数変動領域）にある一方で、ランタイムテストを制御する回路が、ＣＯＮＳＴ領域（電圧・周波数変動なしの領域）にある場合において、ＳＴＡ（Static Timing Analysis：静的タイミング解析）が出来ない場合（条件が複雑すぎて事実上不可能な場合）がある。【０００６】
ここで、伝送タイミングに関する制約を緩めて（つまり、回路の処理速度を落として）、十分なタイミングマージンを持たせることで、上述の問題を回避することは可能であるかもしれない。しかしながら、それでは、ランタイムテストの実行時間（ＦＴＴＩ：フォールト・トレラント・タイム・インターバル）に関する要求事項（例えば、１０ミリ秒以内にランタイムテストを完了させること）を満たせなくなってしまう。【０００７】
スキャンチェーンを構成する複数のフリップフロップにおいて、クロックの同期設計がなされていない問題に対して、特許文献１では、クロックのタイミングに差があるフリップフロップ間の伝送経路に遅延回路を挿入することでホールドタイム違反を回避している。また、特許文献２では、第１のクロック領域と第２のクロック領域の間のスキャンセルにラッチを挿入することでホールドタイム違反を回避している。【０００８】
このように、特許文献１及び特許文献２においては、複数のクロックが互いに同期せず、それぞれのクロックの伝搬にズレがあってホールドタイムが保証できない場合の解決方法が示されている。しかしながら、特許文献１及び特許文献２に開示の技術では、ホールドタイム違反は回避することができても、セットアップタイム違反を回避することは出来ないという問題がある。すなわち、タイミング違反を発生させることなく、スキャンテストを実施することが出来ないという問題がある。【０００９】
また、クロックの同期設計がなされていない問題に対して、特許文献３では、低速なスキャンクロックに同期して全てのスキャンインデータをＦＩＦＯ（First In First Out）に蓄積した後に、高速なシステムクロックに同期してＦＩＦＯに蓄積したスキャンインデータを内部回路ブロックに与えるようにしている。しかしながら、特許文献３に開示の技術では、低速なスキャンクロックで全てのスキャンインデータをロードしてからでないと、スキャンテストを実施することができないため、スキャンテストにかかる時間が大きくなってしまうという問題がある。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２０００−３２１３３１号公報
【特許文献２】特開２００８−５３０５４９号公報
【特許文献３】特許第２７２３９５７号明細書
【発明の概要】
【発明が解決しようとする課題】
【００１１】
上述したように、特許文献１及び特許文献２に開示の技術では、タイミング違反を発生させることなく、スキャンテストを実施することが出来ないという問題がある。また、特許文献３に開示の技術では、スキャンテストにかかる時間が大きくなってしまうという問題がある。【００１２】
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１３】
一実施の形態によれば、半導体装置は、第１のクロック信号に同期した複数のテストデータのＦＩＦＯへの書き込みと並行して、第１のクロック信号とは同期していない第２のクロック信号に同期して、ＦＩＦＯに格納された複数のテストデータを順次読み出しての被テスト回路のスキャンテストを実施するものである。
【発明の効果】
【００１４】
前記一実施の形態によれば、タイミング違反の発生を抑制しつつ、実行時間を低減してスキャンテストを実施することができる。
【図面の簡単な説明】
【００１５】
【図１】実施の形態１に係る半導体装置の第１の構成図である。
【図２】実施の形態１に係る半導体装置の第２の構成図である。
【図３】図１に示したＦＩＦＯの構成図である。
【図４】図２に示したＦＩＦＯに格納されるテストデータの一例を示す図である。
【図５】図１に示したテスト制御装置の構成図である。
【図６】実施の形態１に係る半導体装置の動作波形を示す図である。
【図７】実施の形態２に係る半導体装置の構成図である。
【図８】図７に示したテストクロック制御装置の構成図である。
【図９】図８に示したテストクロック制御装置の動作波形を示す図である。
【図１０】実施の形態２に係る半導体装置の動作波形を示す図である。
【図１１】実施の形態３に係る半導体装置の構成図である。
【図１２】実施の形態３に係る半導体装置の変形例の構成図である。
【図１３】実施の形態４に係る半導体装置の構成図である。
【図１４】実施の形態４に係る半導体装置の動作を示すフロー図である。
【図１５】実施の形態５に係る半導体装置の構成図である。
【図１６】実施の形態５に係る半導体装置の動作を示すフロー図である。
【図１７】実施の形態６に係る半導体装置の構成図である。
【図１８】実施の形態６に係る半導体装置の動作を示すフロー図である。
【図１９】実施の形態７に係る半導体装置の構成図である。
【図２０】他の実施の形態に係る半導体装置の構成図である。
【発明を実施するための形態】
【００１６】
以下、図面を参照しながら、好適な実施の形態について説明する。以下の実施の形態に示す具体的な数値などは、実施の形態の理解を容易とするための例示にすぎず、特に断る場合を除き、それに限定されるものではない。また、以下の記載及び図面では、説明の明確化のため、当業者にとって自明な事項などについては、適宜、省略及び簡略化がなされている。
【００１７】
＜実施の形態１＞
［全体構成］
まず、図１を参照して、本実施の形態１に係る半導体装置（１Ａ）の構成について説明する。図１は、本実施の形態１に係る半導体装置（１Ａ）の構成図である。
【００１８】
図１に示すように、半導体装置（１Ａ）は、テストパターン発生装置（１００）と、ＦＩＦＯ（１０１）と、テスト制御装置（２００）と、被テスト回路（２０１）と、テスト結果圧縮装置（２０２）とを有する。また、半導体装置（１Ａ）は、それぞれにおける電源配線が異なる第１電源領域（１０）と、第２電源領域（２０）とを有する。
【００１９】
第１電源領域（１０）は、テストパターン発生装置（１００）を含む。第２電源領域（２０）は、テスト制御装置（２００）と、被テスト回路（２０１）と、テスト結果圧縮装置（２０２）を含む。ＦＩＦＯ（１０１）における一部の機能ブロック（１０１Ａ）は、第１電源領域（１０）に含まれ、残りの機能ブロック（１０１Ｂ）は、第２電源領域（２０）に含まれる。なお、ＦＩＦＯ（１０１）が、どのような機能ブロックに分割されているかについては、後述のＦＩＦＯ（１０１）の詳細説明において記述する。
【００２０】
第１電源領域（１０）と第２電源領域（２０）は、それぞれにおける電源配線が異なる。すなわち、第１電源領域（１０）と第２電源領域（２０）には、それぞれ独立して異なる電源電圧が供給されている。ここでは、例えば、第１電源領域（１０）は、ＣＯＮＳＴ領域であり、第２電源領域（２０）は、ＤＶＦＳ領域であるものとする。
【００２１】
第１電源領域（１０）に配置される装置及び回路は、第１クロック信号（１１０）によって駆動される。第２電源領域（２０）に配置される装置及び回路は、第２クロック信号（２１０）によって駆動される。ＦＩＦＯ（１０１）についても、一部の機能ブロック（１０１Ａ）は、第１クロック信号（１１０）によって駆動され、残りの機能ブロック（１０１Ｂ）は、第２クロック信号（２１０）によって駆動される。
【００２２】
第１クロック信号（１１０）と、第２クロック信号（２１０）は、第１電源領域（１０）と第２電源領域（２０）との電圧が異なることにより、同期していないもの（周波数及び位相の少なくとも１つが異なる）とする。なお、第１クロック信号（１１０）と第２クロック信号（２１０）は、異なるクロック生成回路によって生成されるクロック信号であることにより、相互に同期していないものであってもよい。
【００２３】
テストパターン発生装置（１００）は、ＦＩＦＯ（１０１）と電気的に接続されている。テストパターン発生装置（１００）は、被テスト回路（２０１）のスキャンテストで使用する複数のスキャンテストデータを、順次、ＦＩＦＯ（１０１）に格納する回路である。
【００２４】
ＦＩＦＯ（１０１）は、複数のスキャンテストデータを格納することができる記憶装置（記憶回路）である。ＦＩＦＯ（１０１）は、テストパターン発生装置（１００）から出力されるスキャンテストデータを一時的に保持した後、被テスト回路（２０１）に出力する。
【００２５】
被テスト回路（２０１）は、半導体装置（１Ａ）を制御する機能論理（論理回路）である。被テスト回路（２０１）は、例えばＣＰＵである。被テスト回路（２０１）は、スキャンテストの手法に則りスキャン化の処理がなされている。すなわち、被テスト回路（２０１）は、複数のスキャンチェーン（２０１０）を有する。図１において、スキャンチェーン（２０１０）のそれぞれは、その機能論理（被テスト回路（２０１））がスキャン化されていることを模式的に示すブロックである。
【００２６】
ＦＩＦＯ（１０１）は、被テスト回路（２０１）に対してスキャンテストデータの供給が出来るように、各スキャンチェーン（２０１０）の最前段（入力段）と電気的に接続されている。各スキャンチェーン（２０１０）の最終段（出力段）は、被テスト回路（２０１）からスキャンテストデータによる動作結果となるデータの取得が出来るように、テスト結果圧縮装置（２０２）と電気的に接続されている。
【００２７】
これにより、被テスト回路（２０１）は、ＦＩＦＯ（１０１）から出力されたスキャンテストデータを、各スキャンチェーン（２０１０）に格納する。また、被テスト回路（２０１）は、スキャンテストデータによる動作後に、各スキャンチェーン（２０１０）に格納された動作結果となるデータを、テスト結果データとしてテスト結果圧縮装置（２０２）に出力する。
【００２８】
なお、図１では、単純なスキャン化の例を示しているが、図２に示す半導体装置（１Ｂ）のように、被テスト回路（２０１）は、さらに、伸長回路（２０１１）と圧縮回路（２０１２）を有していてもよい。言い換えると、被テスト回路（２０１）は、圧縮スキャンを利用した構成とされていてもよい。この場合、ＦＩＦＯ（１０１）は、伸長回路（２０１１）を介して、各スキャンチェーン（２０１０）の最前段と電気的に接続される。また、各スキャンチェーン（２０１０）の最終段は、圧縮回路（２０１２）を介して、テスト結果圧縮装置（２０２）と電気的に接続される。
【００２９】
伸長回路（２０１１）は、ＦＩＦＯ（１０１）から出力されたスキャンテストデータを、スキャンチェーン（２０１０）の数と同数のビット数に伸長してから、各スキャンチェーン（２０１０）に格納する。また、圧縮回路（２０１２）は、各スキャンチェーン（２０１０）に格納されたテスト結果データを、より少ないビット数に圧縮してから、テスト結果圧縮装置（２０２）に出力する。
【００３０】
テスト制御装置（２００）は、ＦＩＦＯ（１０１）と、被テスト回路（２０１）と、テスト結果圧縮装置（２０２）の制御が出来るように、それらの回路（１０１，２０１）及び装置（２０２）と電気的に接続されている。
【００３１】
テスト結果圧縮装置（２０２）は、被テスト回路（２０１）から順次出力される複数のテスト結果データから圧縮符号を生成する。また、テスト結果圧縮装置（２０２）は、生成した圧縮符号に基づいて、テスト結果を判定する。
【００３２】
［テストパターン発生装置（１００）］
図１に示すテストパターン発生装置（１００）は、被テスト回路（２０１）のスキャンテストをするための複数のスキャンテストデータを、シフトサイクル順にＦＩＦＯ（１０１）に書き込む装置（回路）である。スキャンテストデータは、半導体装置（１Ａ）の中に予め格納していてもよい。例えば、半導体装置（１Ａ）が有するＦＬＡＳＨメモリに予め格納してもよい。また、スキャンテストデータは、半導体装置（１Ａ）の外部から供給してもよい。より具体的には、半導体装置（１Ａ）にＡＴＥ（Ａｕｔｏｍａｔｅｄ  Ｔｅｓｔ  Ｅｑｕｉｐｍｅｎｔ）を接続して、そのＡＴＥからスキャンテストデータを供給してもよい。テストパターン発生装置（１００）は、ＡＴＥから供給されたスキャンテストデータをＦＩＦＯ（１０１）に書き込む。この場合、第１クロック信号（１１０）は、ＡＴＥから供給してもよい。また、半導体装置（１Ａ）がテストパターン発生装置（１００）を有さない構成とし、ＡＴＥから直接ＦＩＦＯ（１０１）にスキャンテストデータを書き込むようにしてもよい。
【００３３】
［ＦＩＦＯ（１０１）］
続いて、図３を参照して、本実施の形態１に係るＦＩＦＯ（１０１）の構成について説明する。図３は、本実施の形態１に係るＦＩＦＯ（１０１）のブロック図である。
【００３４】
図３に示すように、ＦＩＦＯ（１０１）は、入力回路（３０）と、出力回路（４０）とを有している。上述したように、ＦＩＦＯ（１０１）は、大きく２つの機能ブロック（１０１Ａ、１０１Ｂ）を有している。１つは書き込み用の機能ブロック（１０１Ａ）であり、入力回路（３０）を有する。もう１つは、読み出し用の機能ブロック（１０１Ｂ）であり、出力回路（４０）を有する。入力回路（３０）は、テストパターン発生装置（１００）から入力された書き込みデータ（スキャンテストデータ）をＦＩＦＯ（１０１）に書き込む回路である。出力回路（４０）は、ＦＩＦＯ（１０１）のデータを読み出し、読み出しデータとして被テスト回路（２０１）に出力する回路である。
【００３５】
入力回路（３０）と出力回路（４０）の間には、境界回路（５０）が配置される場合がある。境界回路（５０）には、第１電源領域（１０）と第２電源領域（２０）の電位差を吸収するためのレベルシフタ（図示せず）、及び、境界の電源を遮断するアイソレーション論理（図示せず）が含まれている。
【００３６】
入力回路（３０）は、フル判定回路（３１）と、グレイコードカウンタ（３２）と、選択回路（３３）と、レジスタ群（３４）とを有する。
【００３７】
フル判定回路（３１）は、グレイコードカウンタ（３２）及びグレイコードカウンタ（４２）のそれぞれから出力されたグレイコードに基づいて、レジスタ群（３４）がフルであるか否かを判定する。言い換えると、フル判定回路（３１）は、レジスタ群（３４）における全てのレジスタにスキャンテストデータが格納されているか否かを判定する。フル判定回路（３１）は、レジスタ群（３４）がフルであると判定した場合、テストパターン発生装置（１００）に出力するフル信号をアサートする。一方、フル判定回路（３１）は、レジスタ群（３４）がフルでないと判定した場合、テストパターン発生装置（１００）に出力するフル信号をネゲートする。
【００３８】
これにより、テストパターン発生装置（１００）は、フル判定回路（３１）から入力されるフル信号がアサートされている場合、スキャンテストデータのＦＩＦＯ（１０１）への入力を停止する。よって、ＦＩＦＯ（１０１）のオーバーフローを防止することができる。一方、テストパターン発生装置（１００）は、フル判定回路（３１）から入力されるフル信号がネゲートされている場合、スキャンテストデータをＦＩＦＯ（１０１）に入力する。
【００３９】
グレイコードカウンタ（３２）は、レジスタ群（３４）のうち、書き込みデータの書き込み先となるレジスタのアドレスを示すグレイコードが格納される。グレイコードカウンタ（３２）は、自身に格納されるグレイコードを、フル判定回路（３１）、選択回路（３３）、及び空判定回路（４１）に出力する。また、グレイコードカウンタ（３２）は、テストパターン発生装置（１００）から入力される書き込み信号がアサートされている間、第１クロック信号（１１０）に同期して、自身に格納されるグレイコードを更新する。すなわち、グレイコードカウンタ（３２）は、書き込み信号がアサートされている間、第１クロック信号（１１０）のエッジが入力される度に、自身に格納されるグレイコードを更新する。
【００４０】
ここで、テストパターン発生装置（１００）は、スキャンテストデータをＦＩＦＯ（１０１）に入力している間、アサートされた書き込み信号をグレイコードカウンタ（３２）に出力し、スキャンテストデータのＦＩＦＯ（１０１）への入力を停止している間、ネゲートされた書き込み信号をグレイコードカウンタ（３２）に出力する。
【００４１】
選択回路（３３）は、レジスタ群（３４）のうち、グレイコードカウンタ（３２）から出力されたグレイコードで示される１つのレジスタを、書き込みデータの書き込み先のレジスタとして選択する。よって、書き込み信号がアサートされている間、第１クロック信号（１１０）に同期して、選択回路（３３）が選択するレジスタが切り替わる。ここで、図３では、レジスタ群（３４）に含まれる複数のレジスタを、「レジスタ１」、・・・、「レジスタＮ」として示している（Ｎは、予め定められた任意の正整数）。グレイコードカウンタ（３２）は、例えば、レジスタ群（３４）における複数のレジスタにおいて選択するレジスタを、サイクリック（例えば「レジスタ１」、・・・、「レジスタＮ」、「レジスタ１」、・・・の順）に切り替える。
【００４２】
レジスタ群（３４）は、書き込みデータ（スキャンテストデータ）が格納される。レジスタ群（３４）は、複数のレジスタを有する。レジスタ群（３４）における各レジスタは、１シフトサイクル分のスキャンテストデータを保持できるだけのサイズのレジスタである。例えば、スキャンテストデータ（書き込みデータ、読み出しデータ）のサイズが６ビットである場合、レジスタ群（３４）における各レジスタのサイズは、６ビットとなる。このように複数のレジスタを用意することにより、レジスタ群（３４）における複数のレジスタのうち、あるレジスタのデータが読み出されているときに、他のレジスタにデータを書き込むことを可能としている。
【００４３】
出力回路（４０）は、空判定回路（４１）と、グレイコードカウンタ（４２）と、選択回路（４３）と、レジスタ（４４）とを有する。
【００４４】
空判定回路（４１）は、グレイコードカウンタ（３２）及びグレイコードカウンタ（４２）のそれぞれから出力されたグレイコードに基づいて、レジスタ群（３４）が空であるか否かを判定する。言い換えると、空判定回路（４１）は、レジスタ群（３４）における全てのレジスタのいずれにもデータが格納されていないか否かを判定する。空判定回路（４１）は、レジスタ群（３４）が空であると判定した場合、テスト制御装置（２００）に出力するエンプティ信号をアサートする。一方、空判定回路（４１）は、レジスタ群（３４）が空でないと判定した場合、テスト制御装置（２００）に出力するエンプティ信号をネゲートする。
【００４５】
グレイコードカウンタ（４２）は、レジスタ群（３４）のうち、読み出しデータの読み出し元となるレジスタのアドレスを示すグレイコードが格納される。グレイコードカウンタ（４２）は、自身に格納されるグレイコードを、フル判定回路（３１）、空判定回路（４１）、及び選択回路（４３）に出力する。また、グレイコードカウンタ（４２）は、テスト制御装置（２００）から入力される読み出し信号がアサートされている間、第２クロック信号（２１０）に同期して、自身に格納されるグレイコードを更新する。すなわち、グレイコードカウンタ（４２）は、読み出し信号がアサートされている間、第２クロック信号（２１０）のエッジが入力される度に、自身に格納されるグレイコードを更新する。なお、後述のスキャンイネーブル信号が読み出し信号として機能する。
【００４６】
選択回路（４３）は、レジスタ群（３４）のうち、グレイコードカウンタ（４２）から出力されたグレイコードで示される１つのレジスタを、読み出しデータの読み出し元のレジスタとして選択する。よって、読み出し信号がアサートされている間、第２クロック信号（２１０）に同期して、選択回路（４３）が選択するレジスタが切り替わる。グレイコードカウンタ（４２）も、例えば、グレイコードカウンタ（３２）と同様に、レジスタ群（３４）における複数のレジスタにおいて選択するレジスタを、サイクリックに切り替える。
【００４７】
レジスタ（４４）は、第２クロック信号（２１０）に同期して、レジスタ群（３４）のうち、選択回路（４３）によって選択されたレジスタに格納されたスキャンテストデータが読み出されて格納される。レジスタ（４４）に格納されたスキャンテストデータは、読み出しデータとして、被テスト回路（２０１）及びテスト結果圧縮装置（２０２）に出力される。これにより、被テスト回路（２０１）は、第２クロック信号（２１０）に同期して、レジスタ（４４）に順次格納されるスキャンテストデータを読み出すことが可能となる。
【００４８】
上述したように、入力回路（３０）に含まれるレジスタ群（３４）は、第１クロック信号（１１０）によって駆動されており、出力回路（４０）に含まれるレジスタ（４４）は、第２クロック信号（２１０）によって駆動されている。すなわち、入力回路（３０）と出力回路（４０）は、互いに同一のクロックで同期されていなくてよい。
【００４９】
ここで、上述したように、グレイコードカウンタ（３２）及びグレイコードカウンタ（４２）は、レジスタ群（３４）における複数のレジスタを選択する順序を、同一の順序でサイクリックに切り替えていく。よって、フル判定回路（３１）は、グレイコードカウンタ（３２）から出力されるグレイコードが示すレジスタが、グレイコードカウンタ（４２）から出力されるグレイコードが示すレジスタの１つ前のレジスタを示す場合、ＦＩＦＯ（１０１）がフルであると判定し、そうでない場合、ＦＩＦＯ（１０１）がフルないと判定する。また、空判定回路（４１）は、グレイコードカウンタ（３２）から出力されるグレイコードが示すレジスタと、グレイコードカウンタ（４２）から出力されるグレイコードが示すレジスタが同一のレジスタを示す場合、ＦＩＦＯ（１０１）が空であると判定し、同一のレジスタを示さない場合、ＦＩＦＯ（１０１）が空でないと判定する。
【００５０】
続いて、図４を参照して、スキャンテストデータの被テスト回路（２０１）及びテスト結果圧縮装置（２０２）への入力例について説明する。なお、図４では、図２に示す半導体装置（１Ｂ）におけるスキャンテストデータの入力例を示している。
【００５１】
図４の左側に示すデータは、図３に示したＦＩＦＯ（１０１）に格納されるスキャンテストデータの内容を模式的に表形式として示したものである。この表には、右側から順にＦＩＦＯ（１０１）に格納された順でスキャンテストデータが並んでいる。つまり、表の各１列は、レジスタ群（３４）のうち、いずれか１つのレジスタと対応する。例えば、図４で、「＃ｎ」で示される列のデータは、図３の「レジスタｎ」に格納されていたデータとなる（ｎは、１〜Ｎのいずれの値にも該当）。なお、図４に示すように、ＦＩＦＯ（１０１）の機能上、一回、スキャンテストデータが読み出しされたレジスタは再利用される。すなわち、上述したように、ＦＩＦＯ（１０１）のレジスタ群（３４）における複数のレジスタはサイクリックに利用される。そのため、スキャンテストデータの書き込み及び読み出しが一巡した後に、再度、同じレジスタから読み出されたスキャンテストデータが出現するようになっている。
【００５２】
スキャンテストデータは、入力データと、マスクデータとから構成される。よって、図４では、スキャンテストデータが６ビットであり、入力データが４ビットであり、マスクデータが２ビットである例について示している。また、図４では、被テスト回路（２０１）が有するスキャンチェーン（２０１０）の数は、入力データのビット数（４ビット）よりも多い。
【００５３】
伸長回路（２０１１）は、ＦＩＦＯ（１０１）から入力された入力データを、より多いビット数（スキャンチェーン（２０１０）の数と同じビット数）に伸長して、伸長後の入力データの各ビットを各スキャンチェーン（２０１０）に出力する。
【００５４】
なお、図１に示す半導体装置（１Ａ）の場合は、入力データのビット数と、複数のスキャンチェーン（２０１０）の数は同じとなる。よって、ＦＩＦＯ（１０１）から入力された入力データの各ビットは、そのまま複数のスキャンチェーン（２０１０）のそれぞれに入力される。そして、被テスト回路（２０１）を動作させることで、各スキャンチェーン（２０１０）は、テスト結果データが格納された状態となる。
【００５５】
圧縮回路（２０１２）は、複数のスキャンチェーン（２０１０）から出力されたテスト結果データを、より少ないビット数のデータに圧縮して、圧縮後のテスト結果データをテスト結果圧縮装置（２０２）に出力する。図４の例では、複数のスキャンチェーン（２０１０）から出力されたデータ（４ビットよりも多いビット数のデータ）が、２ビットに圧縮される。なお、この圧縮回路（２０１２）による圧縮後のデータのビット数は、マスクデータのビット数と同じとなる。ＦＩＦＯ（１０１）から出力されたマスクデータも、圧縮後のデータとともにテスト結果圧縮装置（２０２）に入力される。
【００５６】
上述したように、図４では、複数のスキャンチェーン（２０１０）のそれぞれのサイズがＮビットである例について示している。よって、この例では、Ｎ回のスキャンシフト動作を行って各スキャンチェーン（２０１０）にＮビットのスキャンテストデータ（入力データ）をスキャンインした後、被テスト回路（２０１）においてそのスキャンテストデータを利用したキャプチャ動作（通常動作）が行われる。これにより、各スキャンチェーン（２０１０）は、テスト結果データが格納された状態となる。その後、Ｎ回のスキャンシフト動作を行って各スキャンチェーン（２０１０）にＮビットのテスト結果データをスキャンアウトすることで、テスト結果データがテスト結果圧縮装置（２０２）に出力される。なお、このスキャンアウトのときに、次のＮビットのスキャンテストデータ（入力データ）がスキャンインされることになる。
【００５７】
なお、図４に示す「パターン＃１」、・・・、「パターン＃Ｎ」は、スキャンイン、キャプチャ、スキャンアウトの一連の動作が行われるスキャンテストデータの単位（以下、「テストパターン」とも呼ぶ）を示している。
【００５８】
［テスト結果圧縮装置（２０２）］
引き続き、図４を参照して、本実施の形態１に係るテスト結果圧縮装置（２０２）の構成について説明する。図４の右側に示すブロックは、テスト結果圧縮装置（２０２）を示したブロックである。図４に示すように、テスト結果圧縮装置（２０２）は、ＡＮＤゲート（２０２１，２０２２）と、圧縮回路（２０２３）とを有する。
【００５９】
テスト結果圧縮装置（２０２）は、被テスト回路（２０１）から出力されたテスト結果データを圧縮する装置（回路）である。テスト結果圧縮装置（２０２）は、被テスト回路（２０１）から出力されたテスト結果データと、ＦＩＦＯ（１０１）から出力されたスキャンテストデータにおけるマスクデータとが入力される。すなわち、このマスクデータは、このテスト結果データがスキャンアウトされるときに、スキャンインされる入力データとともにスキャンテストデータを構成していたマスクデータとなる。ＡＮＤゲート（２０２１，２０２２）のそれぞれは、テスト結果データのビットのそれぞれと、マスクデータのビットのそれぞれとをＡＮＤ演算（論理積演算）して、その結果となるデータを圧縮回路（２０２３）に出力する。すなわち、マスク後のテスト結果データが圧縮回路（２０２３）に出力される。
【００６０】
圧縮回路（２０２３）は、ＡＮＤゲート（２０２１，２０２２）から順次入力される一連のテスト結果データを圧縮する。これにより、全てのテスト結果データの合計サイズよりも小さいサイズのデータ（圧縮符号）が、最終的なテスト結果として得られる。圧縮回路（２０２３）の構成については特に言及しないが、例えば、ＬＦＳＲ（Ｌｉｎｅａｒ  ＦｅｅｄＢａｃｋ  Ｓｈｉｆｔ  Ｒｅｇｉｓｔｅｒ）を含む回路としてもよい。
【００６１】
［テスト制御装置（２００）］
続いて、図５を参照して、実施の形態１に係るテスト制御装置（２００）の構成について説明する。図５は、実施の形態１に係るテスト制御装置（２００）のブロック図である。
【００６２】
図５に示すように、テスト制御装置（２００）は、スキャンシフトカウンタ（２０００）と、スキャンシフト回数レジスタ（２００１）と、比較器（２００２）と、セレクタ（２００３）と、ＡＮＤゲート（２００４）と、テストパターンカウンタ（２００５）と、テストパターン数レジスタ（２００６）と、比較器（２００７）と、セレクタ（２００８）と、セレクタ（２００９）とを有する。
【００６３】
スキャンシフトカウンタ（２０００）は、第２クロック信号（２１０）に同期して、スキャンチェーン（２０１０）に対してスキャンシフト動作を行った回数（スキャンインしたスキャンテストデータ数）をカウントするカウンタであり、そのカウント値が格納される。スキャンシフトカウンタ（２０００）は、自身に格納された値を、比較器（２００２）及びセレクタ（２００３）に出力する。
【００６４】
スキャンシフト回数レジスタ（２００１）は、１つのテストパターンにおいて実行されるスキャンシフト動作の回数（１つのテストパターンにおけるスキャンテストデータ数）の値が格納される。スキャンシフト回数レジスタ（２００１）の値は、例えば、スキャンテストを実施する前に、テスト制御装置（２００）の外部から設定される。また、スキャンシフト回数レジスタ（２００１）の値は、予め固定値として設定されていてもよい。スキャンシフト回数レジスタ（２００１）は、自身に格納された値を比較器（２００２）に出力する。
【００６５】
比較器（２００２）は、スキャンシフトカウンタ（２０００）から出力された値と、スキャンシフト回数レジスタ（２００１）から出力された値とを比較し、比較結果に応じた値をＡＮＤゲート（２００４）及びセレクタ（２００８）に出力する。例えば、比較器（２００２）は、比較した値が一致する場合にはネゲートされた信号を出力し、比較した値が一致しない場合にはアサートされた信号を出力する。ここで、ネゲートされた信号は、“０” の値（Ｌｏｗ）の信号であり、アサートされた信号は、“１”の値（Ｈｉｇｈ）の信号である。これは、以降も同様である。
【００６６】
すなわち、比較器（２００２）は、１つのテストパターンにおけるスキャンテストデータのスキャンインを開始してからのスキャンシフト動作の回数が、そのテストパターンに含まれる全てのスキャンテストデータがスキャンチェーン（２０１０）に入力される回数（スキャンチェーン（２０１０）のサイズ）未満である場合には、アサートされた信号（“１”の値）を出力する。一方、比較器（２００２）は、１つのテストパターンにおけるスキャンテストを開始してから実行したスキャンシフト動作の回数が、そのテストパターンに含まれる全てのスキャンテストデータがスキャンチェーン（２０１０）に入力される回数と一致する場合には、ネゲートされた信号（“０”の値）を出力する。例えば、図４に示す例では、比較器（２００２）は、１つのテストパターンにおけるスキャンテストデータのスキャンインを開始してからのスキャンシフト動作の回数が、Ｎ回未満である場合には “１”を出力し、Ｎ回である場合には“０”を出力する。
【００６７】
セレクタ（２００３）は、ＡＮＤゲート（２００４）から出力された値に応じて、スキャンシフトカウンタ（２０００）の値を、インクリメントするか初期化するかを選択する回路である。より具体的には、セレクタ（２００３）は、ＡＮＤゲート（２００４）から出力された値が“１”である場合には、スキャンシフトカウンタ（２０００）の値に“１”を加算し、ＡＮＤゲート（２００４）から出力された値が“０”である場合には、スキャンシフトカウンタ（２０００）の値を初期化する。すなわち、スキャンシフトカウンタ（２０００）の値をインクリメントする場合には、セレクタ（２００３）は、スキャンシフトカウンタ（２０００）の値に“１”を加算した値を、スキャンシフトカウンタ（２０００）に出力して格納する。一方で、スキャンシフトカウンタ（２０００）の値を初期化する場合には、セレクタ（２００３）は、初期値“０”を、スキャンシフトカウンタ（２０００）に出力して格納する。なお、このインクリメント又は初期化は、第２クロック信号（２１０）に同期したタイミングで行われる。言い換えると、このインクリメント又は初期化は、テスト制御装置（２００）に第２クロック信号（２１０）のエッジが入力されたタイミングで行われる。
【００６８】
ＡＮＤゲート（２００４）は、入力される開始信号の値と、比較器（２００２）から出力された値とをＡＮＤ演算（論理積演算）して、その結果となる値を、セレクタ（２００３）及び外部に出力する。この外部に出力された値は、スキャンイネーブル信号として、ＦＩＦＯ（１０１）、被テスト回路（２０１）、及びテスト結果圧縮装置（２０２）に入力される。ここで、ＦＩＦＯ（１０１）に入力されるスキャンイネーブル信号は、上述したように読み出し信号として機能する。
【００６９】
ここで、開始信号は、ＦＩＦＯ（１０１）からテスト制御装置（２００）に入力されたエンプティ信号がネゲートされたときに、アサートされる信号である。例えば、テスト制御装置（２００）は、ＦＩＦＯ（１０１）から入力されるエンプティ信号に応じて、開始信号をＡＮＤゲート（２００４）に出力する回路を有する。この回路は、エンプティ信号がネゲートされたときに、開始信号をアサートして出力する。なお、開始信号は、後述するように、全てのスキャンテストデータがＦＩＦＯ（１０１）から出力された後にネゲートされる。
【００７０】
よって、ＡＮＤゲート（２００４）は、開始信号の値が“１”である場合、比較器（２００２）からの出力値を出力することになるとも言える。そして、比較器（２００２）における比較結果が不一致であり、セレクタ（２００３）に入力される比較器（２００２）からの出力値が“１”である場合には、セレクタ（２００３）はインクリメントを選択する。一方、比較器（２００２）における比較結果が一致であり、セレクタ（２００３）に入力される比較器（２００２）からの出力値が“０”である場合には、セレクタ（２００３）は初期化を選択する。
【００７１】
この動作によれば、ＦＩＦＯ（１０１）が空でなく、スキャンチェーン（２０１０）にスキャンテストデータがスキャンインされている場合に、スキャンシフト動作の回数がカウントされる。そして、１つのテストパターンにおけるスキャンシフト動作の回数が、そのテストパターンに含まれる全てのスキャンテストデータがスキャンチェーン（２０１０）に入力される回数に達した場合、スキャンシフトカウンタ（２０００）の値が初期化される。言い換えると、テスト制御装置（２００）は、１つのテストパターンにおける全てのスキャンテストデータがスキャンチェーン（２０１０）に入力される度に、スキャンシフトカウンタ（２０００）の値が初期化される。よって、スキャンシフトカウンタ（２０００）は、各テストパターンについて、スキャンチェーン（２０１０）に入力されたスキャンテストデータ数のカウントを繰り返すことができる。
【００７２】
また、この動作によれば、テスト制御装置（２００）は、１つのテストパターンにおける全てのスキャンテストデータがスキャンチェーン（２０１０）に入力される度に、一旦、スキャンイネーブル信号をネゲートする。ここで、被テスト回路（２０１）は、テスト制御装置（２００）からアサートされたスキャンイネーブル信号が入力されている場合、スキャンシフト動作を実行する。一方、テスト制御装置（２００）からネゲートされたスキャンイネーブル信号が入力されている場合、キャプチャ動作（通常動作）を実行する。よって、１つのテストパターンにおける全てのスキャンテストデータがスキャンチェーン（２０１０）に入力される度に、１クロックのキャプチャ動作を実行することが可能となる。すなわち、シングルクロック方式のスキャンテストが実行される。
【００７３】
また、テスト結果圧縮装置（２０２）は、テスト制御装置（２００）からアサートされたスキャンイネーブル信号が入力されている場合、テスト結果データの圧縮動作を実行する。一方、テスト結果圧縮装置（２０２）は、テスト制御装置（２００）からネゲートされたスキャンイネーブル信号が入力されている場合、テスト結果データの圧縮動作は実行しない。よって、テスト結果圧縮装置（２０２）は、被テスト回路（２０１）がスキャンシフト動作を行って次のテスト結果データを出力した場合のみ、そのテスト結果データに基づいて圧縮符号を生成するようにすることができる。そのため、被テスト回路（２０１）がキャプチャ動作中に出力するデータの取り込みを防止して、正しいテスト結果を生成することが可能となる。
【００７４】
テストパターンカウンタ（２００５）は、第２クロック信号（２１０）に同期して、スキャンチェーン（２０１０）に対してスキャンインしたテストパターン数をカウントするカウンタである。すなわち、テストパターンカウンタ（２００５）は、スキャンチェーン（２０１０）に対してスキャンインしたテストパターン数の値が格納される。テストパターンカウンタ（２００５）は、自身に格納された値を、比較器（２００７）及びセレクタ（２００８）に出力する。
【００７５】
テストパターン数レジスタ（２００６）は、テストパターン発生装置（１００）によってＦＩＦＯ（１０１）に入力されるテストパターン数の値が格納される。テストパターン数レジスタ（２００６）の値は、例えば、スキャンテストを実施する前に、テスト制御装置（２００）の外部から設定される。また、テストパターン数レジスタ（２００６）の値は、予め固定値として設定されていてもよい。テストパターン数レジスタ（２００６）は、自身に格納された値を比較器（２００７）に出力する。
【００７６】
比較器（２００７）は、テストパターンカウンタ（２００５）から出力された値と、テストパターン数レジスタ（２００６）から出力された値とを比較し、比較結果に応じた値を終了信号としてテスト結果圧縮装置（２０２）に出力する。例えば、比較器（２００７）は、比較した値が一致する場合にはアサートされた信号（“１”の値）を出力し、比較した値が一致しない場合にはネゲートされた信号（“０”の値）を出力する。
【００７７】
セレクタ（２００８）は、比較器（２００２）から出力された値に応じて、テストパターンカウンタ（２００５）の値を、インクリメントするか否かを選択する回路である。より具体的には、セレクタ（２００８）は、比較器（２００２）から出力された値が“０”である場合には、テストパターンカウンタ（２００５）の値に“１”を加算し、比較器（２００２）から出力された値が“１”である場合には、テストパターンカウンタ（２００５）の値に“１”を加算しない。すなわち、テストパターンカウンタ（２００５）の値をインクリメントする場合には、セレクタ（２００８）は、テストパターンカウンタ（２００５）の値に“１”を加算した値を、セレクタ（２００９）に出力する。一方で、テストパターンカウンタ（２００５）の値をインクリメントしない場合には、セレクタ（２００８）は、テストパターンカウンタ（２００５）の値を、そのままセレクタ（２００９）に出力する。
【００７８】
セレクタ（２００９）は、テスト制御装置（２００）の内部で出力される開始信号の値に応じて、テストパターンカウンタ（２００５）の値を、インクリメントするか又はそのままの値とするか、初期化するかを選択する回路である。より具体的には、セレクタ（２００９）は、開始信号の値が“１”である場合には、テストパターンカウンタ（２００５）の値をインクリメント又はそのままの値とし、開始信号の値が“０”である場合には、テストパターンカウンタ（２００５）の値を初期化する。すなわち、テストパターンカウンタ（２００５）の値をインクリメント又はそのままの値とする場合には、セレクタ（２００９）は、セレクタ（２００８）から出力された値を、テストパターンカウンタ（２００５）に出力して格納する。一方で、テストパターンカウンタ（２００５）の値を初期化する場合には、セレクタ（２００９）は、初期値“０”を、テストパターンカウンタ（２００５）に出力して格納する。
【００７９】
なお、このインクリメント、そのままの値の維持、又は、初期化は、第２クロック信号（２１０）に同期したタイミングで行われる。言い換えると、このインクリメント、そのままの値の維持、又は、初期化は、テスト制御装置（２００）に第２クロック信号（２１０）のエッジが入力されたタイミングで行われる。
【００８０】
この動作によれば、ＦＩＦＯ（１０１）が空でなく、スキャンチェーン（２０１０）にスキャンテストデータがスキャンインされている場合にスキャンシフト動作の回数がカウントされる。そして、１つのテストパターンにおけるスキャンテストを開始してからのスキャンシフト動作の回数が、そのテストパターンに含まれる全てのスキャンテストデータがスキャンチェーン（２０１０）に入力される回数に達した場合、テストパターンカウンタ（２００５）の値に“１”が加算される。言い換えると、１つのテストパターンにおける全てのスキャンテストデータがスキャンチェーン（２０１０）に入力される度に、テストパターンカウンタ（２００５）の値に“１”が加算される。そして、ＦＩＦＯ（１０１）から全てのテストパターン（全てのスキャンテストデータ）が出力されると、テストパターンカウンタ（２００５）の値が初期化される。よって、テストパターンカウンタ（２００５）は、スキャンチェーン（２０１０）に入力されたテストパターン数をカウントすることができる。
【００８１】
また、この動作によれば、テスト制御装置（２００）は、スキャンテストを開始してからスキャンチェーン（２０１０）に入力されたテストパターン数が、全てのテストパターンがスキャンチェーン（２０１０）に入力される数に達した場合、アサートされた終了信号をテスト結果圧縮装置（２０２）に出力する。言い換えると、ＦＩＦＯ（１０１）から全てのテストパターン（全てのスキャンテストデータ）が出力されたときに、その旨を終了信号によってテスト結果圧縮装置（２０２）に通知することができる。
【００８２】
［動作フロー］
続いて、図６を参照して、本実施の形態１に係る半導体装置（１Ｂ）の動作について説明する。図６は、本実施の形態１に係る半導体装置（１Ｂ）の動作波形を示す図である。
【００８３】
図６において、上部（線ＨＬより上の波形）は、図１に示す第１電源領域（１０）における回路の波形を示し、下部（線ＨＬより下の波形）は、図１に示す第２電源領域（２０）における回路の波形を示す。この波形において、第１クロック信号と第２クロック信号は、周波数が同じであるが、それぞれのエッジが揃っていない。つまり、第１クロック信号と第２クロック信号は、同期していない。以下、図２に示す半導体装置（１Ｂ）を例として、図３〜図５も参照しながら動作について説明する。
【００８４】
スキャンシフト回数レジスタ（２００１）とテストパターン数レジスタ（２００６）には、被テスト回路（２０１）に供給するスキャンテストデータの内容に合わせて任意の値を予め格納しておく。値の格納の方法としては、例えば、スキャンシフト回数レジスタ（２００１）とテストパターン数レジスタ（２００６）を、データ設定用のシフトレジスタを含む構成とし、外部から順に値を入力することで値を格納するようにしてもよい。なお、この作業は、テスト前のみ実施すればよいため、低速で実施してもテスト時間のオーバヘッドとはならない。
【００８５】
なお、図６は、テストパターン数が“５”であり、１つのテストパターンにおけるスキャンテストデータ数が“３”である例について示している。よって、この例では、スキャンシフト回数レジスタ（２００１）に格納される値は、“３”であり、テストパターン数レジスタ（２００６）に格納される値は、“５”である。
【００８６】
外部からスキャンテストの開始が指示されると、テストパターン発生装置（１００）は、第１クロック信号（１１０）に同期してのスキャンテストデータのＦＩＦＯ（１０１）への書き込みを開始する。図６に示すように、テストパターン発生装置（１００）は、スキャンテストデータ“Ａ”〜“Ｏ”を、順次、ＦＩＦＯ（１０１）に格納する。
【００８７】
スキャンテストデータのＦＩＦＯ（１０１）への書き込みは、テストパターン発生装置（１００）がスキャンテストデータをＦＩＦＯ（１０１）に供給できる状態にあるのであれば、ＦＩＦＯ（１０１）が溢れない限り（フル信号がアサートされていない限り）、全てのスキャンテストデータをＦＩＦＯ（１０１）に書き終わるまで連続して実行される。
【００８８】
なお、スキャンテストデータの入力は、半導体装置（１Ｂ）の外部からその開始を指示する信号をテストパターン発生装置（１００）に入力することで開始されるようにしてもよく、半導体装置（１Ｂ）の内部でその開始を指示する信号を生成してテストパターン発生装置（１００）に入力することで開始されるようにしてもよい。
【００８９】
スキャンテストデータがＦＩＦＯ（１０１）に書き込まれ始めると、ＦＩＦＯ（１０１）の空判定回路（４１）は、空状態であることを示していたエンプティ信号をネゲートし、ＦＩＦＯ（１０１）が空状態でないことを示すように変更する。エンプティ信号がネゲートされると、テスト制御装置（２００）の開始信号がアサートされる。これにより、スキャンイネーブル信号がアサートされて、半導体装置（１Ｂ）のスキャンテスト動作が開始される。
【００９０】
スキャンテストデータは、第２クロック信号（２１０）に同期してＦＩＦＯ（１０１）から読み出され、その一部分は入力データとして伸長回路（２０１１）に入力され、他の部分はマスクデータとしてテスト結果圧縮装置（２０２）に入力される。テスト結果圧縮装置（２０２）に入力されたマスクデータは、圧縮回路（２０１２）の出力値と、ＡＮＤゲート（２０２１，２０２２）によって論理積演算（ＡＮＤ演算）される。これは、スキャンチェーン（２０１０）から圧縮回路（２０１２）を経由して出力されるテスト結果データには、不定値であるものがあり（つまり“０”（Ｌｏｗ）であるか“１”（Ｈｉｇｈ）であるか定まらない値があり）、そのような不定値を強制的に“０”（Ｌｏｗ）の状態に固定するためのものである。
【００９１】
ＡＮＤゲート（２０２１，２０２２）から出力された論理積演算後のテスト結果データは、圧縮回路（２０２３）に入力される。圧縮回路（２０２３）は、テスト制御装置（２００）から入力されるスキャンイネーブル信号がアサートされている間（つまり、スキャンシフト動作が実施されている間）、入力されたテスト結果データを、現在保持している値を引き継ぎながら圧縮符号に変換し続ける。
【００９２】
一方で、第２クロック信号（２１０）に同期してスキャンシフト動作が行われる度に、スキャンシフトカウンタ（２０００）の値に“１”が加算されていく。そして、スキャンシフトカウンタ（２０００）の値がスキャンシフト回数レジスタ（２００１）の値と一致した場合、１つのテストパターンにおけるスキャンテストデータが被テスト回路（２０１）に全て入力されたことになる。このとき、スキャンイネーブル信号がネゲートされる。
【００９３】
例えば、図６においては、読み出しデータとして、３つのスキャンテストデータ“Ａ”〜“Ｃ”が読み出されてスキャンチェーン（２０１０）に入力され、次の読み出しデータがスキャンテストデータ“Ｄ”となっている状態が該当する。
【００９４】
被テスト回路（２０１）は、テスト制御装置（２００）から入力されるスキャンイネーブル信号がネゲートされたとき、スキャンテストにおけるキャプチャ動作を行う。この時、被テスト回路（２０１）は、ＦＩＦＯ（１０１）からのスキャンテストデータの読み出しを中断する。すなわち、図６に示すように、読み出しデータがスキャンテストデータ“Ｄ”である状態が維持される。
【００９５】
そして、スキャンシフトカウンタ（２０００）の値は、初期値に更新される。すなわち、図６に示すように、スキャンシフトカウンタ（２０００）の値が“３”であり、スキャンシフト回数レジスタ（２００１）の値“３”と一致するため、スキャンシフトカウンタ（２０００）の値は“０”に初期化される。また、この時、テストパターンカウンタ（２００５）の値は、インクリメントされる。すなわち、図６に示すように、１つ目のテストパターンにおける全てのスキャンテストデータ“Ａ”〜“Ｃ”がスキャンチェーン（２０１０）に入力されたため、テストパターンカウンタ（２００５）の値は、“０”から“１”に更新される。
【００９６】
スキャンシフトカウンタ（２０００）が初期化されることで、再び、スキャンイネーブル信号がアサートされる。すなわち、スキャンシフトカウンタ（２０００）の値が“０”に初期化されて、スキャンシフト回数レジスタ（２００１）の値“３”と不一致となるため、図６に示すように、その場合の比較器（２００２）の出力値に応じてスキャンイネーブル信号がアサートされる。これにより、被テスト回路（２０１）によるＦＩＦＯ（１０１）からのスキャンテストデータの読み出し及びスキャンシフト動作と、テスト結果圧縮装置（２０２）による圧縮動作とが再開される。すなわち、図６に示すように、スキャンテストデータ“Ｄ”が読み出されて、スキャンチェーン（２０１０）に入力される。なお、これ以降に、スキャンテストデータ“Ｄ”〜“Ｆ”がスキャンチェーン（２０１０）に入力されるのと同時に、スキャンテストデータ“Ａ”〜“Ｃ”によるテスト結果データがスキャンチェーン（２０１０）からテスト結果圧縮装置（２０２）に出力される。
【００９７】
これらの一連の動作は、テストパターンカウンタ（２００５）の値が、テストパターン数レジスタ（２００６）に設定された値と一致し、終了信号がアサートされるまで繰り返される。すなわち、図６に示すように、最後となる５つ目のテストパターン（スキャンテストデータは、“Ｍ”〜“Ｏ”）の入力が完了し、テストパターンカウンタ（２００５）の値“５”が、テストパターン数レジスタ（２００６）の値“５”と一致するため、比較器（２００７）は、テスト結果圧縮装置（２０２）に出力する終了信号をアサートする。
【００９８】
ここで、全てのスキャンテストデータの入力後も、テストパターンカウンタ（２００５）とテストパターンカウンタ（２００５）を更新して終了信号を出力することを可能とするため、図６に示すように、開始信号がネゲートされるタイミングは、エンプティ信号がネゲートされるタイミングよりも若干遅くなる。例えば、上述の開始信号を出力する回路は、比較器（２００７）から終了信号が出力されたときに、開始信号をネゲートする。また、図６に示すように、スキャンシフトカウンタ（２０００）の値が初期化されたとしても、終了信号が出力されているときには、有効でないスキャンシフト動作を防止するために、スキャンイーブル信号をネゲートしたままとする。
【００９９】
終了信号がアサートされると、テスト結果圧縮装置（２０２）は、圧縮回路（２０２３）に格納された圧縮符号を取り出して、予め用意された期待値と照合し、テスト結果を判定する。テスト結果圧縮装置（２０２）は、最終符号と期待値とを照合した結果、最終符号と期待値とが一致している場合、被テスト回路（２０１）が正常と判定し、最終符号と期待値とが不一致である場合、被テスト回路（２０１）が異常と判定する。なお、このテスト結果と期待値との比較は、テストの終了後にのみ実施すればよいため、低速で実施してもテスト時間のオーバヘッドとはならない。
【０１００】
なお、図６では、最後（５つ目）のテストパターンにおけるスキャンテストデータ“Ｍ”〜“Ｏ”はスキャンチェーン（２０１０）に入力されるが、その後、スキャンイネーブル信号はネゲートされたままとなるため、そのテスト結果データは、テスト結果圧縮装置（２０２）における圧縮符号の生成に利用されない。すなわち、最後（５つ目）のテストパターンは、その１つ前（４つ目）のテストパターンにおけるスキャンテストデータ“Ｍ”〜“Ｏ”は、テスト結果データを読み出すためのダミーのスキャンテストデータとして機能する。よって、厳密には、１つ目〜４つ目までのテストパターンに対するテスト結果データによって被テスト回路（２０１）の状態が判定される。
【０１０１】
また、１つ目のテストパターンにおけるスキャンテストデータ“Ａ”〜“Ｃ”では、その前にテストパターンが存在しない。そのため、図４にも示すように、１つ目のテストパターンにおけるスキャンテストデータ“Ａ”〜“Ｃ”のマスクデータは、全て“０”とされる。これにより、１つ目のテストパターンにおけるスキャンテストデータをスキャンチェーン（２０１０）に入力した際に、スキャンチェーン（２０１０）から出力されるデータを“０”に固定して、テスト結果圧縮装置（２０２）における圧縮符号の生成に影響を与えないようにする。
【０１０２】
ここで説明したスキャンテストの動作は、先に説明したテストパターン発生装置（１００）からＦＩＦＯ（１０１）へのスキャンテストデータの書き込みとは独立して、並列に行われる。そのため、実施の形態１においては、ＦＩＦＯ（１０１）からのスキャンテストデータの読み出し速度は、スキャンテストデータのＦＩＦＯ（１０１）への書き込み速度よりも速くないことが好ましい。
【０１０３】
上述したように、被テスト回路と、そのスキャンテストデータを供給する装置とが、それぞれ異なる電源電圧を供給する電圧配線に接続されており、一方の電圧が他方の電圧に比べて相対的に変動する場合がある。この場合、スキャンテストデータの伝送経路において、ホールドタイムが厳しくなるケースと、セットアップタイムが厳しくなるケースの２通りのケースが存在する。
【０１０４】
それに対して、以上に説明したように、本実施の形態１においては、スキャンテストデータの伝送経路が、電源を異にする論理境界を跨る場合におけるタイミング違反の対策として、遅延をつけてホールドタイムマージンを大きく確保するのではなく、非同期ＦＩＦＯを用いている。
【０１０５】
すなわち、本実施の形態１に係る半導体装置（１Ａ，１Ｂ）では、テストパターン発生装置（１００）が、第１のクロック信号（１１０）に同期して、複数のテストデータ（スキャンテストデータの入力データ）をＦＩＦＯ（１０１）に順次書き込む。そして、テスト制御装置（２００）が、複数のテストデータのＦＩＦＯ（１０１）への書き込みと並行して、第１のクロック信号（１１０）とは同期していない第２のクロック信号（２１０）に同期して、ＦＩＦＯ（１０１）に格納された複数のテストデータを順次読み出しての被テスト回路（２０１）のスキャンテストを実施する。
【０１０６】
非同期ＦＩＦＯを用いることによって、スキャンテストデータを供給する回路と、そのスキャンテストデータを用いてスキャンテストを実行する回路とが、異なる電位で回路が駆動される別々の領域に配置されていたとしても、スキャンテストデータの伝送経路における伝搬遅延に律速されることなく、それぞれの領域で最適な速度で回路を駆動させることができる。
【０１０７】
これによれば、テストデータをＦＩＦＯ（１０１）に蓄積することができるため、被テスト回路（２０１）のスキャンテストを、第１のクロック信号（１１０）の影響を受けることなく、第２のクロック信号（２１０）に同期して実施することができる。よって、タイミング違反を発生させることがない。また、全てのスキャンテストデータのロード後に、スキャンテストを実行するといった必要も無い。つまり、スキャンテストデータのロードとスキャンテストとを同時に並行して実施することができるため、スキャンテストにかかる時間を短縮することができる。スキャンテストにかける時間を短縮することで、例えば、ランタイムテストの実行時間（ＦＴＴＩ：フォールト・トレラント・タイム・インターバル）に関する要求事項（例えば、１０ミリ秒以内にランタイムテストを完了させること）を満たすことが出来るようになる。
【０１０８】
なお、本実施の形態１では、相互にクロック信号が非同期である領域を跨る場合におけるスキャンテストの実行時間の改善を明確にするために、説明の都合上、第１電源領域と第２電源領域（第１クロック信号と第２クロック信号）のように、スキャンテストデータの伝送経路が非同期の領域を跨る構成を例として説明したが、同一の電源領域に配置された回路同士の転送、及び、同一のクロック信号で駆動されている回路同士のスキャンテストデータの伝送にも利用することができる。
【０１０９】
本実施の形態１で示した回路図は、本実施の形態１を説明するために各構成要素を模式的に示したものであって、実際に回路を設計する場合には、印加されるクロック及び適用するスキャンテストの仕様に合わせて、スキャンテストデータを供給するクロックサイクルを調整する回路（例えばフリップフロップ）等の付加回路が必要であることは言うまでもない。これは、以降の実施の形態においても同様とする。
【０１１０】
＜実施の形態２＞
続いて、実施の形態２について説明する。以下の実施の形態２の説明では、上述した実施の形態１と同様の内容については、同一の符号を付す等して、適宜、その説明を省略する。
【０１１１】
［全体構成］
図７を参照して、実施の形態２に係る半導体装置（１Ｃ）の構成について説明する。図７は、実施の形態２に係る半導体装置（１Ｃ）の構成図である。
【０１１２】
図７に示すように、実施の形態２に係る半導体装置（１Ｃ）は、実施の形態１に係る半導体装置（１Ｂ）と比較して、さらに、テストクロック制御装置（２０３）を有する点が異なる。
【０１１３】
テストクロック制御装置（２０３）は、第２電源領域（２０）に含まれる。テストクロック制御装置（２０３）は、第２クロック信号（２１０）が入力される。すなわち、テストクロック制御装置（２０３）は、第２クロック信号（２１０）によって駆動される。また、テストクロック制御装置（２０３）は、第２クロック信号（２１０）に基づいて、スキャンテストクロックを生成し、被テスト回路（２０１）に出力する。すなわち、本実施の形態２における被テスト回路（２０１）は、実施の形態１と比較して、第２クロック信号（２１０）に代えて、スキャンテストクロックによって駆動される。また、本実施の形態２では、ＦＩＦＯ（１０１）は、エンプティ信号をテストクロック制御装置（２０３）にも出力する。
【０１１４】
［テストクロック制御装置（２０３）］
続いて、図８を参照して、本実施の形態２に係るテストクロック制御装置（２０３）の構成について説明する。図８は、本実施の形態２に係るテストクロック制御装置（２０３）のブロック図である。
【０１１５】
図８に示すように、テストクロック制御装置（２０３）は、フリップフロップ（２０３Ａ）と、ＡＮＤゲート（２０３Ｂ）とを有する。
【０１１６】
フリップフロップ（２０３Ａ）は、一時停止信号と第２クロック信号（２１０）が入力される。フリップフロップ（２０３Ａ）は、第２クロック信号（２１０）の立ち下りエッジに応じて、一時停止信号の値を自身に格納する。フリップフロップ（２０３Ａ）は、自身に保持している一時停止信号の値を、ＡＮＤゲート（２０３Ｂ）に出力する。
【０１１７】
ここで、一時停止信号は、ＦＩＦＯ（１０１）からテストクロック制御装置（２０３）に入力されるエンプティ信号がアサートされると、ネゲートされる信号である。一方、一時停止信号は、ＦＩＦＯ（１０１）からテストクロック制御装置（２０３）に入力されるエンプティ信号がネゲートされると、アサートされる。例えば、テストクロック制御装置（２０３）は、ＦＩＦＯ（１０１）から入力されるエンプティ信号に応じて、一時停止信号をＡＮＤゲート（２０３Ｂ）に出力する回路を有する。この回路は、エンプティ信号がアサートされたときに、一時停止信号をネゲートし、エンプティ信号がネゲートされたときに、一時停止信号をアサートする。
【０１１８】
ＡＮＤゲート（２０３Ｂ）は、フリップフロップ（２０３Ａ）から出力された値と、第２クロック信号（２１０）とが入力される。ＡＮＤゲート（２０３Ｂ）は、フリップフロップ（２０３Ａ）からの値と、第２クロック信号（２１０）の値とをＡＮＤ演算（論理積演算）して、その結果となる値をスキャンテストクロックとして被テスト回路（２０１）に出力する。よって、ＡＮＤゲート（２０３Ｂ）は、フリップフロップ（２０３Ａ）からの値に応じて、第２クロック信号（２１０）をそのまま出力するか、その出力を停止するかのいずれかの動作をとる。
【０１１９】
これにより、図９に示すように、スキャンテストクロックが出力される。図９は、図８に示すテストクロック制御装置（２０３）における動作波形を示す図である。このように、一時停止信号が“１”（Ｈｉｇｈ）の状態である場合、スキャンテストクロックとして、第２クロック信号（２１０）がそのまま出力される。また、一時停止信号が“０”（Ｌｏｗ）の状態である場合、スキャンテストクロックとして、“０”（Ｌｏｗ）の状態が継続した信号が出力される。すなわち、ＦＩＦＯ（１０１）が空でない場合には、第２クロック信号（２１０）がそのまま被テスト回路（２０１）に出力され、ＦＩＦＯ（１０１）が空である場合には、第２クロック信号（２１０）の被テスト回路（２０１）への出力が抑止される。
【０１２０】
［動作フロー］
続いて、図１０を参照して、本実施の形態２に係る半導体装置（１Ｃ）の動作について説明する。図１０は、実施の形態２に係る半導体装置（１Ｃ）の動作波形を示す図である。
【０１２１】
図１０において、上部（線ＨＬより上の波形）は、図７に示す第１電源領域（１０）における回路の波形を示し、下部（線ＨＬより下の波形）は、図７に示す第２電源領域（２０）における回路の波形を示す。この波形において、第１クロック信号と第２クロック信号は、周波数が同じであるが、それぞれのエッジが揃っていない。つまり、第１クロック信号と第２クロック信号は、同期していない。以下、図７に示す半導体装置（１Ｃ）を例として、図３〜図５も参照しながら動作について説明する。  
【０１２２】
スキャンテストの開始の指示に応じて、ＦＩＦＯ（１０１）へのスキャンテストデータデータの書き込みが始まる。なお、スキャンテスト動作が開始するまでの期間の動作については、実施の形態１と同じであるため、その動作の説明は省略する。
【０１２３】
実施の形態１と同様に、スキャンテストデータは、第２クロック信号（２１０）に同期してＦＩＦＯ（１０１）から取り出され、その一部分は入力データとして伸長回路（２０１１）に入力され、他の部分はマスクデータとしてテスト結果圧縮装置（２０２）に入力される。テスト結果圧縮装置（２０２）では、マスクデータと、圧縮回路（２０１２）の出力値とをＡＮＤゲート（２０２１，２０２２）によって論理積演算し、その結果を圧縮回路（２０２３）によって前値を引き継ぎながら圧縮符号に変換する。
【０１２４】
実施の形態１との違いは、スキャンテストを実行している最中に、ＦＩＦＯ（１０１）からスキャンテストデータが取り出せない状態（つまり、ＦＩＦＯ（１０１）が空の状態）になった時の動作である。なお、本実施の形態２では、この以降に説明する動作によって、実施の形態１において、ＦＩＦＯ（１０１）が空になり、スキャンテストデータが取り出せない状態が発生することで、スキャンチェーン（２０１０）にスキャンインするデータが正常なもので無くなりスキャンテストそのものが成立しなくなってしまうという問題を解決している。
【０１２５】
実施の形態２では、そのような状態を回避するために、半導体装置（１Ｃ）にテストクロック制御装置（２０３）が備えられている。テストクロック制御装置（２０３）は、ＦＩＦＯ（１０１）のエンプティ信号を監視しており、ＦＩＦＯ（１０１）が空になった時、一時停止信号をネゲートしてスキャンテストクロックを停止させる。すなわち、図１０に示すように、スキャンテストクロックを停止させる。
【０１２６】
図１０は、スキャンテストデータ“Ａ”〜“Ｄ”をＦＩＦＯ（１０１）に書き込んだ時点で、何らかの原因で一時的にＦＩＦＯ（１０１）に対してスキャンデータの書き込みができなくなってしまった場合について示している。この場合、ＦＩＦＯ（１０１）からスキャンテストデータ“Ｃ”が読み出されると、グレイコードカウンタ（３２）とグレイコードカウンタ（４２）のそれぞれが示すレジスタが一致するため、エンプティ信号がアサートされる。すなわち、このレジスタは、スキャンテストデータ“Ｄ”が格納されるレジスタとなる。そのため、スキャンテストデータ“Ｄ”がレジスタ（４４）に読み出され、レジスタ群（３４）は空となる。
【０１２７】
これに応じて、一時停止信号がネゲートされるため、テストクロック制御装置（２０３）は、被テスト回路（２０１）に対する第２クロック信号（２１０）の出力を抑止する。すなわち、“０”（Ｌｏｗ）の状態が維持されたスキャンテストクロックが被テスト回路（２０１）に出力される。
【０１２８】
ここで、テスト制御装置（２００）は、ＦＩＦＯ（１０１）からのエンプティ信号がアサートされている間、ＦＩＦＯ（１０１）に読み出し信号として出力しているスキャンイネーブル信号をネゲートする。これにより、ＦＩＦＯ（１０１）は、グレイコードカウンタ（４２）におけるグレイコードの更新を中断する。すなわち、図１０に示すように、ＦＩＦＯ（１０１）が出力する読み出しデータとしてスキャンテストデータ“Ｄ”が維持される。
【０１２９】
また、テスト制御装置（２００）は、ＦＩＦＯ（１０１）からのエンプティ信号がアサートされている間、テスト結果圧縮装置（２０２）に出力しているスキャンイネーブル信号をネゲートする。これにより、テスト結果データの圧縮動作を中断し、被テスト回路（２０１）から新たなテスト結果データが出力されていない場合における圧縮動作を回避する。
【０１３０】
なお、グレイコードの更新の中断と、テスト結果データの圧縮動作を中断は、上述したようなスキャンイネーブル信号のネゲートに代えて、出力回路（４０）とテスト結果圧縮装置（２０２）を、被テスト回路（２０１）と同様に、テストクロック制御装置（２０３）からのスキャンテストクロックに同期して動作させるようにすることで実施してもよい。ただし、エンプティ状態を解除可能とするために（エンプティ信号のネゲートを可能とするために）、空判定回路（４１）には、第２クロック信号（２１０）を供給してその動作を停止させないようにする。
【０１３１】
また、テスト制御装置（２００）は、ＦＩＦＯ（１０１）から入力されるエンプティ信号がネゲートされている間、スキャンシフトカウンタ（２０００）のカウントを中断する。すなわち、図１０に示すように、スキャンシフトカウンタ（２０００）の値として“０”が維持される。
【０１３２】
被テスト回路（２０１）は、スキャンテストクロックによって駆動されているため、スキャンテストクロックが“０”（Ｌｏｗ）の状態で維持されるとスキャンシフト動作が中断される。つまり、正常でないデータをスキャンチェーン（２０１０）に入力するスキャンシフト動作は発生しないことになる。
【０１３３】
ＦＩＦＯ（１０１）に対するスキャンテストデータの書き込みが再開されると、ＦＩＦＯ（１０１）が空の状態で無くなりエンプティ信号がネゲートされる。エンプティ信号がネゲートされると、テストクロック制御装置（２０３）は、一時停止信号をネゲートする。これにより、テストクロック制御装置（２０３）は、スキャンテストクロックとして、第２クロック信号（２１０）の被テスト回路（２０１）への出力を再開する。すなわち、図１０に示すように、被テスト回路（２０１）は、スキャンテストデータ“Ｄ”以降のスキャンテストデータの読み出しを開始する。
【０１３４】
また、このとき、テスト制御装置（２００）は、ＦＩＦＯ（１０１）からのエンプティ信号がネゲートに応じて、ＦＩＦＯ（１０１）に読み出し信号として出力しているスキャンイネーブル信号をアサートする。これにより、ＦＩＦＯ（１０１）は、グレイコードカウンタ（４２）におけるグレイコードの更新を再開する。これにより、ＦＩＦＯ（１０１）は、グレイコードカウンタ（４２）におけるグレイコードの更新を再開する。
【０１３５】
その結果、中断が発生したレジスタからスキャンテストデータの取り出しが行われ、スキャンシフト動作が再開される。すなわち、図１０に示すように、ＦＩＦＯ（１０１）が出力する読み出しデータが、被テスト回路（２０１）からのスキャンテストデータの読み出しに同期して、スキャンテストデータ“Ｅ”以降のスキャンテストデータに順次更新される。
【０１３６】
ここで、本実施の形態２に係るテスト制御装置（２００）の構成は、実施の形態１と殆ど同じであるが、上述したように、スキャンシフトカウンタ（２０００）に対して、前値を保持させる機構を設けた点が実施の形態１とは異なる。本実施の形態２に係るテスト制御装置（２００）には、スキャンシフトカウンタ（２０００）の値の更新を中断するために、エンプティ信号に基づく制御信号をスキャンシフトカウンタ（２０００）に出力する回路（図示せず）が追加されている。
【０１３７】
この制御信号は、テストクロック制御装置（２０３）における一時停止信号と同様の働きをする。この回路は、ＦＩＦＯ（１０１）が空である時に、スキャンシフトカウンタ（２０００）のカウンタの値の更新を中断する。より具体的には、この回路は、ＦＩＦＯ（１０１）からテスト制御装置（２００）に入力されるエンプティ信号がアサートされた場合、スキャンシフトカウンタ（２０００）に出力する制御信号をアサートする。スキャンシフトカウンタ（２０００）は、アサートされた制御信号が入力されている場合、セレクタ（２００２）から出力値に関わらず、自身の値の更新を抑止する。一方、この回路は、ＦＩＦＯ（１０１）からテスト制御装置（２００）に入力されるエンプティ信号がネゲートされた場合、スキャンシフトカウンタ（２０００）に出力する制御信号をネゲートする。スキャンシフトカウンタ（２０００）は、ネゲートされた制御信号が入力されている場合、自身の値を更新する。
【０１３８】
なお、それ以外のテストクロック制御装置（２０３）の動作については、実施の形態１と同様であるため、動作の説明は省略する。また、終了信号がアサートされた後の動作も、実施の形態１と同じであるため、その動作の説明も省略する。
【０１３９】
以上に説明したように、本実施の形態２においては、実施の形態１の構成に対してテストクロック制御装置（２０３）を加えることで、実施の形態１におけるＦＩＦＯ（１０１）が空になった場合における問題を排除することができる。
【０１４０】
すなわち、本実施の形態２では、空判定回路（４１）によってＦＩＦＯ（１０１）が空であると判定された場合、ＦＩＦＯ（１０１）からのテストデータの読み出しを停止させる。より具体的には、テストクロック制御装置（２０３）が、空判定回路（４１）によってＦＩＦＯ（１０１）が空であると判定された場合、被テスト回路（２０１）に対する第２のクロック信号の供給を停止するようにしている。これによれば、被テスト回路（２０１）に対して、空の状態のＦＩＦＯ（１０１）から有効でないテストデータがスキャンインされることを防止することができる。
【０１４１】
実施の形態１では、ＦＩＦＯ（１０１）を空にしないようにするために比較的容量の大きなＦＩＦＯ（１０１）を用いたり、ＦＩＦＯ（１０１）に書き込むスキャンテストデータを取得するリソースを占有する必要があった。しかしながら、実施の形態２では、そのような制約に縛られないため、比較的容量の小さなＦＩＦＯ（１０１）の利用や、データを取得するリソースの共有化による割り込みを許容することが出来るようになる。その結果、システムを構築するための、回路オーバヘッドを削減することができる。
【０１４２】
なお、以上の説明では、図２に示した半導体装置（１Ｂ）に対して、テストクロック制御装置（２０３）を適用した例について説明したが、これに限られない。当然に、図１に示した半導体装置（１Ａ）に対して、テストクロック制御装置（２０３）を適用することもできる。
【０１４３】
＜実施の形態３＞
続いて、実施の形態３について説明する。以下の実施の形態３の説明では、上述した実施の形態２と同様の内容については、同一の符号を付す等して、適宜、その説明を省略する。
【０１４４】
［全体構成］
まず、図１１を参照して、本実施の形態３に係る半導体装置（１Ｄ）の構成について説明する。図１１は、本実施の形態３に係る半導体装置（１Ｄ）の構成図である。本実施の形態３に係る半導体装置（１Ｄ）は、スキャンテスト機構を利用したランタイムテストの実行に適した実施の形態である。
【０１４５】
図１１に示すように、実施の形態３に係る半導体装置（１Ｄ）は、実施の形態２に係る半導体装置（１Ｃ）と比較して、テストパターン発生装置（１００）に代えてテストパターン読み出し装置（１０２）を有し、さらに、システムコントローラ（１０３）及びメモリ装置（１０４）を有する点が異なる。
【０１４６】
テストパターン読み出し装置（１０２）、システムコントローラ（１０３）及びメモリ装置（１０４）は、第１電源領域（１０）に含まれる。テストパターン読み出し装置（１０２）は、メモリ装置（１０４）と電気的に接続されている。テストパターン読み出し装置（１０２）と、システムコントローラ（１０３）と、メモリ装置（１０４）とは、システムバスを介して電気的に接続されている。
【０１４７】
テストパターン読み出し装置（１０２）は、メモリ装置（１０４）に格納された複数のスキャンテストパターンを順次読み出し、ＦＩＦＯ（１０１）に書き込む。
【０１４８】
システムコントローラ（１０３）は、半導体装置（１Ｄ）を統括的に制御する回路である。システムコントローラ（１０３）は、半導体装置（１Ｄ）におけるスキャンテストの開始の制御と、スキャンテスト結果の判定を実施する。すなわち、本実施の形態３では、実施の形態１、２と異なり、テスト結果圧縮装置（２０２）に代えて、システムコントローラ（１０３）がスキャンテスト結果を判定する。
【０１４９】
メモリ装置（１０４）は、複数のスキャンテストデータが格納される記憶装置（記憶回路）である。メモリ装置（１０４）には、全てのスキャンテストデータが格納される。メモリ装置（１０４）は、例えばＲＡＭ（Random Access Memory）、ＲＯＭ（Read Only Memory）、又はＦＬＡＳＨメモリ等の不揮発性の記憶装置である。
【０１５０】
実施の形態３がランタイムテストの実行に適している理由は、スキャンテストの実行の全てを半導体装置（１Ｄ）に内蔵された回路で実行できるからである。より具体的には、ランタイムテスト（スキャンテスト）を開始する前に、システムコントローラ（１０３）は、テスト制御装置（２００）におけるスキャンシフト回数レジスタ（２００１）及びテストパターン数レジスタ（２００６）の値を設定する。例えば、これらの値は、メモリ装置（１０４）に予め格納しておく。システムコントローラ（１０３）は、メモリ装置（１０４）から値を読み出して、読み出した値を、テスト制御装置（２００）に出力する。テスト制御装置（２００）は、システムコントローラ（１０３）から出力された値を、スキャンシフト回数レジスタ（２００１）及びテストパターン数レジスタ（２００６）に設定する。
【０１５１】
スキャンテストを開始する場合、システムコントローラ（１０３）は、スキャンテストの開始を指示する開始指示信号をテストパターン読み出し装置（１０２）に出力する。テストパターン読み出し装置（１０２）は、システムコントローラ（１０３）からの開始指示信号に応じて、メモリ装置（１０４）からスキャンテストデータを取得してＦＩＦＯ（１０１）に書き込んでいく動作を開始する。
【０１５２】
そして、上述したように、ＦＩＦＯ（１０１）にスキャンテストデータが蓄積され、エンプティ信号がネゲートされるとスキャンテストが開始される。ここで、本実施の形態３では、スキャンテストが完了すると、テスト制御装置（２００）は、テスト結果圧縮装置（２０２）に代えて、システムコントローラ（１０３）に終了信号を出力する。また、テスト結果圧縮装置（２０２）は、圧縮回路（２０２３）が生成する圧縮符号を、常時、システムコントローラ（１０３）に出力している。システムコントローラ（１０３）は、テスト制御装置（２００）からの終了信号に応じて、テスト結果圧縮装置（２０２）から出力された最終的な圧縮符号を取得する。そして、システムコントローラ（１０３）は、取得した圧縮符号と期待値とを比較してテスト結果を判定する。
【０１５３】
ここで、例えば、期待値は、スキャンテストデータとともに、メモリ装置（１０４）に予め格納しておく。そして、システムコントローラ（１０３）は、テスト制御装置（２００）からの終了信号に応じて、メモリ装置（１０４）に格納された期待値を取得し、圧縮符号と比較する。
【０１５４】
以上に説明したように、本実施の形態３では、半導体装置（１Ｄ）は、複数のテストデータが格納されるメモリ装置（１０４）を備えている。そして、テストパターン読み出し装置（１０２）は、メモリ装置（１０４）に格納された複数のテストデータを順次、ＦＩＦＯ（１０１）に書き込むようにしている。これによれば、スキャンテストの実行の全てを半導体装置（１Ｄ）に内蔵された回路で実行できる。よって、スキャンテストを実行するために他の装置を必要としないため、ランタイムテストの実行に適している。
【０１５５】
なお、以上の説明では、図７に示した半導体装置（１Ｃ）に対して、各装置（１０２，１０３，１０４）を適用した例について説明したが、これに限られない。当然に、図１、２に示した半導体装置（１Ａ，１Ｂ）に対して、各装置（１０２，１０３，１０４）を適用してもよい。
【０１５６】
＜実施の形態３の変形例＞
続いて、図１２を参照して、実施の形態３の変形例に係る半導体装置（１Ｅ）について説明する。図１２は、実施の形態３の変形例に係る半導体装置（１Ｅ）を示すブロック図である。
【０１５７】
図１２に示すように、実施の形態３の変形例に係る半導体装置（１Ｅ）は、実施の形態３に係る半導体装置（１Ｄ）と比較して、さらに、ＤＭＡコントローラ（１０９）を有する点が異なる。また、実施の形態３の変形例に係る半導体装置（１Ｅ）は、実施の形態３に係る半導体装置（１Ｄ）と比較して、半導体装置（１Ｅ）が外部記憶装置（２）と接続される点が異なる。また、実施の形態３の変形例に係る半導体装置（１Ｅ）は、実施の形態３に係る半導体装置（１Ｄ）と比較して、テストパターン読み出し装置（１０２）と、システムコントローラ（１０３）と、メモリ装置（１０４）と、外部記憶装置（２）とがシステムバスを介して接続される点が異なる。ここで、ＤＭＡコントローラ（１０９）は、第１電源領域（１０）に含まれる。
【０１５８】
外部記憶装置（２）は、全てのスキャンテストデータと、テスト結果データの圧縮符号の期待値とが格納される装置である。外部記憶装置（２）は、例えばＲＯＭ、ＦＬＡＳＨメモリ、又はハードディスク等の不揮発性の記憶装置である。
【０１５９】
図１１に示した実施の形態３に係る半導体装置（１Ｄ）では、スキャンテストデータの読み出しのため、テストパターン読み出し装置（１０２）は、専用のメモリ装置（１０４）（例えばＦＬＡＳＨメモリのような書換え可能な記憶素子）に直接アクセスしていた。それに対して、図１２に示す本実施の形態３の変形例に係る半導体装置（１Ｅ）では、テストパターン読み出し装置（１０２）がメモリ装置（２）に対して直接アクセスするのではなく、システムコントローラ（１０３）の制御に従って、システムバスを介してスキャンテストデータの読み出しが行われる。
【０１６０】
本実施の形態３の変形例では、スキャンテストの開始前に、システムコントローラ（１０３）は、外部記憶装置（２）からメモリ装置（１０４）へのデータの転送を要求する転送要求信号を、システムバスを介してＤＭＡコントローラ（１０９）に出力する。ＤＭＡコントローラ（１０９）は、この転送要求信号に応じて、外部記憶装置（２）に格納された全てのスキャンテストデータと期待値を、システムバスを介してメモリ装置（１０４）に転送する。以降は、上述した実施の形態３と同様に、メモリ装置（１０４）に格納されたスキャンテストデータを利用してスキャンテストが実行されるため、その説明は省略する。
【０１６１】
本実施の形態３の変形例の利点は、メモリ装置（１０４）として汎用のＲＡＭを使用し、スキャンテストデータそのものを、半導体装置（１Ｅ）の外部の記憶装置（２）にもたせることが出来る点である。ＲＡＭは、例えば、ＳＲＡＭ（Static RAM）又はＤＲＡＭ（Dynamic RAM）等である。これは、実施の形態２で説明したように、第２電源領域（２０）に配置されているスキャンテスト機構が、テストパターン読み出し装置（１０２）によるスキャンテストデータの読み出しとは、全く独立して動作することができるためである。
【０１６２】
以上に説明したように、本実施の形態３の変形例では、システムコントローラ（１０３）及びＤＭＡコントローラ（１０９）が、半導体装置（１Ｅ）に接続される外部記憶装置（２）から、複数のテストデータを取得し、メモリ装置（１０４）に格納するようにしている。これによれば、半導体装置（１Ｅ）に備えられたメモリ装置（１０４）ではなく、半導体装置（１Ｅ）の外部に接続する外部記憶装置（２）を交換するだけで、スキャンテストデータを容易に変更することができる。そのため、本実施の形態３の変形例によれば、スキャンテストデータ交換における作業コストを低減することができる。また、半導体装置（１Ｅ）の内部に、全てのスキャンテストデータが格納された記憶装置（メモリ装置１０４）を設けなくてよいため、半導体装置における面積オーバヘッドを削減することができる。
【０１６３】
なお、以上の説明では、図７に示した半導体装置（１Ｃ）に対して、上述の各装置（１０２，１０３，１０４，１０９，２）を適用した例について説明したが、これに限られない。当然に、図１、２に示した半導体装置（１Ａ，１Ｂ）に対して、上述の各装置（１０２，１０３，１０４，１０９，２）を適用してもよい。
【０１６４】
［実施の形態４］
続いて、実施の形態４について説明する。以下の実施の形態４の説明では、上述した実施の形態３の変形例と同様の内容については、同一の符号を付す等して、適宜、その説明を省略する。
【０１６５】
［全体構成］
図１３を参照して、本実施の形態４に係る半導体装置（１Ｆ）の構成について説明する。図１３は、本実施の形態４に係る半導体装置（１Ｆ）のブロック図である。本実施の形態４に係る半導体装置（１Ｆ）は、例えば、複数のＣＰＵコア（被テスト回路（２０１））で構成される回路において、スキャンテスト機構を利用したランタイムテストの実行に適した実施の形態である。なお、図１３では、外部記憶装置（２）の図示は省略している。
【０１６６】
図１３に示すように、実施の形態４に係る半導体装置（１Ｆ）は、実施の形態３の変形例に係る半導体装置（１Ｅ）と比較して、被テスト回路（２０１）及びテストクロック制御装置（２０３）を複数有する点と、さらに、入力選択回路（２０４）と、出力選択回路（２０５）とを有する点が異なる。ここで、入力選択回路（２０４）と、出力選択回路（２０５）は、第２電源領域（２０）に含まれる。
【０１６７】
すなわち、実施の形態４では、１つの被テスト回路（２０１）と、１つのテストクロック制御装置（２０３）とが対応するように、複数対存在する。実施の形態４では、図１３に示すように、被テスト回路（２０１）とテストクロック制御装置（２０３）の対が、４対存在する例について示している。
【０１６８】
これまでの実施の形態と同様に、第１電源領域（１０）に配置される装置及び回路は、第１クロック信号（１１０）によって駆動され、第２電源領域（２０）に配置される装置及び回路は、第２クロック信号（２１０）によって駆動される。
【０１６９】
本実施の形態４では、ＦＩＦＯ（１０１）と、複数対の被テスト回路（２０１）及びテストクロック制御装置（２０３）のうち、いずれか１対の被テスト回路（２０１）及びテストクロック制御装置（２０３）とは、入力選択回路（２０４）を介して電気的に接続される。すなわち、入力選択回路（２０４）は、ＦＩＦＯ（１０１）と、複数対の被テスト回路（２０１）及びテストクロック制御装置（２０３）のうち、いずれか１対の被テスト回路（２０１）及びテストクロック制御装置（２０３）とを選択的に接続する回路である。
【０１７０】
よって、ＦＩＦＯ（１０１）から出力されたスキャンテストデータは、複数の被テスト回路（２０１）のうち、入力選択回路（２０４）によって選択された１つの被テスト回路（２０１）に入力される。また、ＦＩＦＯ（１０１）から出力されたエンプティ信号は、複数のテストクロック制御装置（２０３）のうち、入力選択回路（２０４）によって選択された１つのテストクロック制御装置（２０３）に入力される。
【０１７１】
また、複数対の被テスト回路（２０１）及びテストクロック制御装置（２０３）のうち、いずれか１対における被テスト回路（２０１）と、テスト結果圧縮装置（２０２）とは、出力選択回路（２０５）を介して電気的に接続される。すなわち、出力選択回路（２０５）は、複数対の被テスト回路（２０１）及びテストクロック制御装置（２０３）のうち、いずれか１対における被テスト回路（２０１）と、テスト結果圧縮装置（２０２）とを選択的に接続する回路である。
【０１７２】
よって、複数の被テスト回路（２０１）のうち、出力選択回路（２０５）によって選択された１つの被テスト回路（２０１）から出力されたテスト結果データが、テスト結果圧縮装置（２０２）に入力される。
【０１７３】
テスト制御装置（２００）は、スキャンテスト対象となる１対の被テスト回路（２０１）及びテストクロック制御装置（２０３）を選択するように、入力選択回路（２０４）及び出力選択回路（２０５）を制御する。
【０１７４】
また、テストクロック制御装置（２０３）は、そのテストクロック制御装置（２０３）と対となる被テスト回路（２０１）と電気的に接続されている。すなわち、複数のテストクロック制御装置（２０３）のそれぞれは、複数の被テスト回路（２０１）のうち、自身と対となる被テスト回路（２０１）に対してスキャンテストクロックを供給する。
【０１７５】
［動作フロー］
続いて、図１４を参照して、本実施の形態４に係る半導体装置（１Ｆ）の動作について説明する。図１４は、実施の形態４に係る半導体装置（１Ｆ）の動作を示す動作フロー図である。図１４では、縦線がその上部に記載された名称の回路又は装置の動作を示し、上から下に向かって時間が経過することを示している。横に伸びる矢印は、その起点となる回路又は装置の動作イベントが、その終点となる回路又は装置の動作イベントを発生させることを意味している。
【０１７６】
図１４における「被テスト回路Ａ」から「被テスト回路Ｄ」は、それぞれ、図１３における４つの被テスト回路（２０１）及びテストクロック制御装置（２０３）の対のうち、いずれかを示す。本実施の形態４に係る半導体装置（１Ｆ）の動作について、図１３に示す半導体装置（１Ｆ）の例と、図１４に示す動作フロー図を照らし合わせながら説明する。
【０１７７】
まず、システムコントローラ（１０３）は、ＤＭＡコントローラ（１０９）を制御することで、外部記憶装置（２）から被テスト回路Ａに対するスキャンテストデータと期待値を取得して、メモリ装置（１０４）に格納する。図１４に示すように、最初は、システムコントローラ（１０３）は、テストパターン読み出し装置（１０２）及びテスト制御装置（２００）に対して、被テスト回路Ａのスキャンテストの開始を指示する。
【０１７８】
すなわち、システムコントローラ（１０３）は、被テスト回路Ａのスキャンテストの開始を指示する開始指示信号を、テストパターン読み出し装置（１０２）に出力する。被テスト回路Ａのスキャンテストの開始を指示する開始指示信号に応じて、テストパターン読み出し装置（１０２）は、被テスト回路Ａに対応する被テスト回路（２０１）のスキャンテストデータを、システムバスを介してメモリ装置（１０４）から取得し、ＦＩＦＯ（１０１）に書き込んでいく。
【０１７９】
また、システムコントローラ（１０３）は、被テスト回路Ａのスキャンテストの開始を通知するテスト開始信号を、テスト制御装置（２００）に出力する。より具体的には、システムコントローラ（１０３）とテスト制御装置（２００）との間は、被テスト回路Ａ〜被テスト回路Ｄのそれぞれに対応するテスト開始信号線が４本接続されている。システムコントローラ（１０３）は、被テスト回路Ａに対応するテスト開始信号をアサートする。
【０１８０】
被テスト回路Ａに対応するテスト開始信号のアサートに応じて、テスト制御装置（２００）は、被テスト回路Ａと、それと対となるテストクロック制御装置（２０３）とを選択するように指示する選択指示信号を、入力選択回路（２０４）及び出力選択回路（２０５）に出力する。この選択指示信号に応じて、入力選択回路（２０４）は、被テスト回路Ａ及びそれと対になるテストクロック制御装置（２０３）と、ＦＩＦＯ（１０１）とを電気的に接続する。また、この選択指示信号に応じて、出力選択回路（２０５）は、被テスト回路Ａ及びそれと対になるテストクロック制御装置（２０３）と、テスト結果圧縮装置（２０２）とを電気的に接続する。
【０１８１】
その後、被テスト回路Ａに対して、スキャンテストが実行される。なお、スキャンテストの動作については、実施の形態３及びその変形例と同じであるため、ここでは説明を省略する。
【０１８２】
ここで、テスト制御装置（２００）は、被テスト回路Ａのスキャンテスト中は、エンプティ信号に応じてアサートされたスキャンイネーブル信号を、複数の被テスト回路（２０１）のうち、テスト対象の被テスト回路Ａのみに出力し、他の被テスト回路Ｂ〜Ｄには出力しない。すなわち、テスト対象外の被テスト回路Ｂ〜Ｄには、ネゲートされたスキャンイネーブル信号が出力される。これにより、テスト対象となっていない被テスト回路（２０１）については、スキャンシフト動作は実施されず、通常動作が実施される。
【０１８３】
被テスト回路Ａのスキャンテストが終了すると、テスト制御装置（２００）は、システムコントローラ（１０３）に対して、テスト対象の被テスト回路Ａのスキャンテストの終了を通知する。すなわち、本実施の形態４では、スキャンテストが終了すると、テスト制御装置（２００）は、スキャンテストが終了した被テスト回路Ａのスキャンテストの終了を通知する終了信号を出力する。この終了信号に応じて、システムコントローラ（１０３）は、テスト結果圧縮装置（２０２）から取得した圧縮符号と、その終了信号で終了が通知された被テスト回路Ａに対応する期待値とを比較して、テスト結果を判定する。
【０１８４】
以降、図１４に示すように、被テスト回路Ｂ〜Ｄに対しても、順番に、上述と同様にして、スキャンテストが実行される。すなわち、次は、外部記憶装置（２）から被テスト回路Ｂに対するスキャンテストデータと期待値が、メモリ装置（１０４）に読み出される。なお、被テスト回路Ｂに対するスキャンテストデータと期待値が、被テスト回路Ａのものと同一である場合には、この読み出しは省略してもよい。システムコントローラ（１０３）は、被テスト回路Ｂをテスト対象としてテスト開始信号を出力し、入力選択回路（２０４）及び出力選択回路（２０５）は、被テスト回路Ｂ及びそれと対となるテストクロック制御装置（２０３）を選択する。これにより、被テスト回路Ｂのスキャンテストが実行される。
【０１８５】
そして、終了信号によって被テスト回路Ｂのスキャンテストの終了がシステムコントローラ（１０３）に通知される。システムコントローラ（１０３）は、被テスト回路Ｂに対応するテスト結果圧縮装置（２０２）から取得した圧縮符号と、テスト対象の被テスト回路Ｂに対する期待値とを比較して、テスト結果を判定する。そして、被テスト回路Ｃをテスト対象として同様の動作が実行され、被テスト回路Ｄをテスト対象として同様の動作が実行される。
【０１８６】
なお、被テスト回路Ｄまでのスキャンテストの実行が終了した後、再度、被テスト回路Ａ〜Ｄに対するスキャンテストが実施されるようにしてもよい。すなわち、被テスト回路Ａ〜Ｄに対するスキャンテストを繰り返し実行するようにしてもよい。なお、本実施の形態４では、４つの被テスト回路（２０１）のスキャンテストを実施する例について説明したが、被テスト回路（２０１）の数は、これに限られない。
【０１８７】
以上に説明したように、本実施の形態４では、入力選択回路（２０４）が、ＦＩＦＯ（１０１）から読み出したテストデータの入力先として、複数の被テスト回路（２０１）のうち、テスト制御装置（２００）によって指示された被テスト回路（２０１）を選択するようにしている。また、出力選択回路（２０５）が、テスト結果データをテスト結果圧縮装置（２０２）に出力する出力元として、複数の被テスト回路（２０１）のうち、テスト制御装置（２００）によって指示された被テスト回路（２０１）を選択するようにしている。これによれば、テスト対象として選択した被テスト回路（２０１）のみのスキャンテストを実施して、テスト対象として選択していない被テスト回路（２０１）については処理を継続することができる。システムを停止させることなく、被テスト回路（２０１）のスキャンテストを実施することができる。
【０１８８】
なお、以上の説明では、図１２に示した半導体装置（１Ｅ）において、被テスト回路（２０１）及びテストクロック制御装置（２０３）の対を複数有する例について説明したが、これに限られない。当然に、図１、２、７、１１に示した半導体装置（１Ａ，１Ｂ，１Ｃ，１Ｄ）において、被テスト回路（２０１）及びテストクロック制御装置（２０３）の対を複数有するようにしてもよい。
【０１８９】
［実施の形態５］
続いて、実施の形態５について説明する。以下の実施の形態５の説明では、上述した実施の形態３の変形例と同様の内容については、同一の符号を付す等して、適宜、その説明を省略する。
【０１９０】
［全体構成］
図１５を参照して、本実施の形態５に係る半導体装置（１Ｇ）の構成について説明する。図１５は、本実施の形態５に係る半導体装置（１Ｇ）のブロック図である。本実施の形態５に係る半導体装置（１Ｇ）は、例えば、複数のＣＰＵコア（被テスト回路（２０１））で構成される回路において、スキャンテスト機構を利用したランタイムテストの実行に適した実施の形態である。なお、図１５では、外部記憶装置（２）の図示は省略している。
【０１９１】
図１５に示すように、実施の形態５に係る半導体装置（１Ｇ）は、実施の形態３の変形例に係る半導体装置（１Ｅ）と比較して、テスト制御装置（２００）、被テスト回路（２０１）、テスト結果圧縮装置（２０２）及びテストクロック制御装置（２０３）を複数有する点と、さらに、調停回路（２０６）を有する点が異なる。ここで、調停回路（２０６）は、第２電源領域（２０）に含まれる。
【０１９２】
すなわち、実施の形態５では、１つのテスト制御装置（２００）と、１つの被テスト回路（２０１）と、１つのテスト結果圧縮装置（２０２）と、１つのテストクロック制御装置（２０３）とが対応するように、複数組存在する。実施の形態５では、図１５に示すように、テスト制御装置（２００）と、被テスト回路（２０１）と、テスト結果圧縮装置（２０２）と、テストクロック制御装置（２０３）との組が、４組存在する例について示している。
【０１９３】
これまでの実施の形態と同様に、第１電源領域（１０）に配置される装置及び回路は、第１クロック信号（１１０）によって駆動され、第２電源領域（２０）に配置される装置及び回路は、第２クロック信号（２１０）によって駆動される。
【０１９４】
本実施の形態５では、ＦＩＦＯ（１０１）は、複数の被テスト回路（２０１）及び調停回路（２０６）と電気的に接続される。これにより、本実施の形態５では、ＦＩＦＯ（１０１）は、エンプティ信号を、調停回路（２０６）に出力する。
【０１９５】
また、システムコントローラ（１０３）は、調停回路（２０６）及び複数のテスト結果圧縮装置（２０２）と電気的に接続されている。すなわち、システムコントローラ（１０３）は、テスト開始信号を調停回路（２０６）に出力する。
【０１９６】
複数のテスト制御装置（２００）及び複数のテストクロック制御装置（２０３）は、調停回路（２０６）と接続される。すなわち、複数のテスト制御装置（２００）のそれぞれは、スキャンイネーブル信号を調停回路（２０６）に出力する。調停回路（２０６）は、複数のテスト制御装置（２００）から出力されたスキャンイネーブル信号のうち、テスト対象の被テスト回路（２０１）に対応するテスト制御装置（２００）から出力されたスキャンイネーブル信号を、読み出し信号としてＦＩＦＯ（１０１）に出力する。また、調停回路（２０６）は、エンプティ信号を、複数のテストクロック制御装置（２０３）のうち、テスト対象の被テスト回路（２０１）に対応するテストクロック制御装置（２０３）に出力する。なお、調停回路（２０６）は、テスト開始信号でテスト対象として指定された被テスト回路（２０１）を、テスト対象の被テスト回路（２０１）として認識する。
【０１９７】
調停回路（２０６）は、調停回路（２０６）に接続される回路又は装置の間で入出力される信号を調停する回路である。
【０１９８】
また、同じ組に含まれる、テスト制御装置（２００）、被テスト回路（２０１）、テスト結果圧縮装置（２０２）、及びテストクロック制御装置（２０３）の電気的な接続関係については、実施の形態３の変形例と同様である。
【０１９９】
［動作フロー］
続いて、図１６を参照して、本実施の形態５に係る半導体装置（１Ｇ）の動作について説明する。図１６は、実施の形態５に係る半導体装置（１Ｇ）の動作を示す動作フロー図である。図１６では、縦線がその上部に記載された名称の回路又は装置の動作を示し、上から下に向かって時間が経過することを示している。横に伸びる矢印は、その起点となる回路又は装置の動作イベントが、その終点となる回路又は装置の動作イベントを発生させることを意味している。
【０２００】
図１６における「被テスト回路Ａ」から「被テスト回路Ｄ」は、それぞれ、図１５における４つの被テスト回路（２０１）のうち、いずれかを示す。本実施の形態５に係る半導体装置（１Ｇ）の動作について、図１５に示す半導体装置（１Ｇ）の例と、図１６に示す動作フロー図を照らし合わせながら説明する。
【０２０１】
まず、システムコントローラ（１０３）は、ＤＭＡコントローラ（１０９）を制御することで、外部記憶装置（２）から被テスト回路Ａ及び被テスト回路Ｂに対するスキャンテストデータと期待値を取得して、メモリ装置（１０４）に格納する。ここでは、被テスト回路Ａ及び被テスト回路Ｂのそれぞれに対するスキャンテストデータと期待値が同一であるものとして説明する。すなわち、被テスト回路Ａと被テスト回路Ｂで共通のスキャンテストデータがメモリ装置（１０４）に格納される。図１６に示すように、最初は、システムコントローラ（１０３）は、テストパターン読み出し装置（１０２）及びテスト制御装置（２００）に対して、被テスト回路Ａ及び被テスト回路Ｂのスキャンテストの開始を指示する。
【０２０２】
すなわち、システムコントローラ（１０３）は、被テスト回路Ａ及び被テスト回路Ｂのスキャンテストの開始を指示する開始指示信号を、テストパターン読み出し装置（１０２）に出力する。被テスト回路Ａ及び被テスト回路Ｂのスキャンテストの開始を指示する開始指示信号に応じて、テストパターン読み出し装置（１０２）は、被テスト回路Ａ及び被テスト回路Ｂに対応するスキャンテストデータを、システムバスを介してメモリ装置（１０４）から取得し、ＦＩＦＯ（１０１）に書き込んでいく。
【０２０３】
また、システムコントローラ（１０３）は、被テスト回路Ａ及び被テスト回路Ｂのスキャンテストの開始を通知するテスト開始信号を、調停回路（２０６）に出力する。より具体的には、システムコントローラ（１０３）と調停回路（２０６）との間は、被テスト回路Ａ〜被テスト回路Ｄのそれぞれに対応するテスト開始信号線が４本接続されている。システムコントローラ（１０３）は、被テスト回路Ａ及び被テスト回路Ｂに対応するテスト開始信号をアサートする。
【０２０４】
調停回路（２０６）は、ＦＩＦＯ（１０１）から入力されるエンプティ信号がネゲートされた場合、そのネゲートされたエンプティ信号を、複数のテスト制御装置（２００）のうち、被テスト回路Ａ及び被テスト回路Ｂに対応するテスト制御装置（２００）のそれぞれに出力する。
【０２０５】
ここで、調停回路（２０６）は、いずれかのテスト開始信号がアサートされてから、所定の時間が経過するのを待った時点で、アサートされているテスト開始信号に対応するテスト制御装置（２００）に対して、ネゲートされたエンプティ信号を出力する。４つのテスト開始信号は、非同期に伝送されるため、異なるタイミングでアサートされたテスト開始信号が調停回路（２０６）に到達する場合がある。このような場合であっても、上述したように所定の時間、テスト開始信号を待ち合わせることで、テスト対象の被テスト回路Ａ、Ｂに対応するテスト制御装置（２００）に対して、ネゲートされたエンプティ信号が到達するタイミングを一致させることができる。
【０２０６】
これにより、図１６に示すように、被テスト回路Ａと被テスト回路Ｂに対して、同時並列にスキャンテストが実行される。ＦＩＦＯ（１０１）から出力されたスキャンテストデータは、被テスト回路Ａと被テスト回路Ｂに同時に入力されることになる。なお、スキャンテストの動作については、実施の形態３及びその変形例と同じであるため、ここでは説明を省略する。ここで、被テスト回路Ｃと被テスト回路Ｄに対応するテスト制御装置（２００）は、被テスト回路Ｃと被テスト回路Ｄに対してスキャンテストを実施しないため、被テスト回路Ｃと被テスト回路Ｄは、通常動作を実施する。
【０２０７】
ここで、上述したように、調停回路（２０６）は、テスト対象の被テスト回路（２０１）に対応するテストクロック制御装置（２０３）のみに対して、ＦＩＦＯ（１０１）からのエンプティ信号を出力している。よって、ＦＩＦＯ（１０１）が空になった場合には、テスト対象の被テスト回路（２０１）に対応するテストクロック制御装置（２０３）のみで、被テスト回路（２０１）に対する第２クロック信号（２１０）の供給が停止される。
【０２０８】
また、上述したように、調停回路（２０６）は、テスト対象の被テスト回路（２０１）に対応するテスト制御装置（２００）のみから出力されたスキャンイネーブル信号を、読み出し信号としてＦＩＦＯ（１０１）に出力している。よって、テスト対象の被テスト回路（２０１）がスキャンシフト動作をしているか否かに応じて、ＦＩＦＯ（１０１）のレジスタ群（３４）における読み出し元とするレジスタの更新が行われる。なお、被テスト回路Ａ及び被テスト回路Ｂに対応するテスト制御装置（２００）のそれぞれは、同様のスキャンイネーブル信号を出力することになるため、それらのテスト制御装置（２００）のうち、いずれかのスキャンイネーブル信号をＦＩＦＯ（１０１）に出力するようにすればよい。
【０２０９】
被テスト回路Ａ及び被テスト回路Ｂのスキャンテストが終了すると、被テスト回路Ａ及び被テスト回路Ｂに対応するテスト制御装置（２００）のそれぞれは、調停回路（２０６）に対して、スキャンテストの終了を通知する。すなわち、被テスト回路Ａ及び被テスト回路Ｂに対応するテスト制御装置（２００）のそれぞれは、調停回路（２０６）に終了信号を出力する。この終了信号に応じて、調停回路（２０６）は、被テスト回路Ａと被テスト回路Ｂのスキャンテストの終了を通知する終了信号を、システムコントローラ（１０３）に出力する。なお、調停回路（２０６）は、システムコントローラ（１０３）からスキャンテストの開始が指示された被テスト回路Ａ及び被テスト回路Ｂに対応するテスト制御装置（２００）の全てからの終了信号を待ち合わせてから、終了信号をシステムコントローラ（１０３）に出力する。
【０２１０】
この終了信号に応じて、システムコントローラ（１０３）は、被テスト回路Ａ及び被テスト回路Ｂに対応するテスト結果圧縮装置（２０２）から取得した圧縮符号のそれぞれと、被テスト回路Ａ及び被テスト回路Ｂに対応する期待値のそれぞれとを比較して、テスト結果を判定する。
【０２１１】
以降、図１６に示すように、被テスト回路Ｃ、Ｄに対しても、同様に、スキャンテストが実行される。すなわち、次は、外部記憶装置（２）から被テスト回路Ｃ及び被テスト回路Ｄに対するスキャンテストデータと期待値が、メモリ装置（１０４）に読み出される。なお、被テスト回路Ｃ、Ｄに対するスキャンテストデータと期待値が、被テスト回路Ａ、Ｂのものと同一である場合には、この読み出しは省略してもよい。被テスト回路Ｃ及び被テスト回路Ｄをテスト対象としてテスト開始信号を出力し、調停回路（２０６）は、被テスト回路Ｃ及び被テスト回路Ｄに対してスキャンテストが実行されるように制御する。そして、終了信号によって被テスト回路Ｃ及び被テスト回路Ｄのスキャンテストの終了が調停回路（２０６）を介してシステムコントローラ（１０３）に通知される。システムコントローラ（１０３）は、被テスト回路Ｃ及び被テスト回路Ｄに対応するテスト結果圧縮装置（２０２）から取得した圧縮符号のそれぞれと、被テスト回路Ｃ及び被テスト回路Ｄに対応する期待値とを比較して、テスト結果を判定する。
【０２１２】
なお、被テスト回路Ｃ、Ｄまでのスキャンテストの実行が終了した後、再度、被テスト回路Ａ〜Ｄに対するスキャンテストが実施されるようにしてもよい。すなわち、被テスト回路Ａ〜Ｄに対するスキャンテストを繰り返し実行するようにしてもよい。なお、本実施の形態４では、４つの被テスト回路（２０１）のスキャンテストを実施する例について説明したが、被テスト回路（２０１）の数は、これに限られない。
【０２１３】
なお、本実施の形態５では、２つずつ被テスト回路（２０１）のスキャンテストを実施する例について説明したが、同時にスキャンテストを実行する被テスト回路（２０１）の数は、これに限られない。
【０２１４】
また、以上の説明では、全ての被テスト回路Ａ〜Ｄの構成が同一であり、スキャンテストデータが同一である例について説明したが、被テスト回路Ａ〜Ｄ毎にスキャンテストデータが異なっていてもよい。ただし、同時にスキャンテストを実施する被テスト回路毎に異なるスキャンテストデータを使用する場合は、被テスト回路毎に別々のＦＩＦＯ（１０１）を半導体装置（１Ｇ）に有する必要がある。例えば、同時にスキャンテストを実施する被テスト回路Ａ及び被テスト回路Ｂの構成が異なり、それらに使用されるスキャンテストデータが異なる場合、被テスト回路Ａ及び被テスト回路Ｂのそれぞれに対応するＦＩＦＯ（１０１）を用意する必要がある。すなわち、被テスト回路Ａに対応するＦＩＦＯ（１０１）には、被テスト回路Ａに対するスキャンテストデータが格納され、被テスト回路Ｂに対応するＦＩＦＯ（１０１）には、被テスト回路Ｂに対するスキャンテストデータが格納される。
【０２１５】
以上に説明したように、本実施の形態５では、システムコントローラ（１０３）が、複数の被テスト回路（２０１）のうち、いずれか２つ以上の被テスト回路（２０１）のスキャンテストの実施を指示する。そして、調停回路（２０６）が、システムコントローラ（１０３）から指示された２つ以上の被テスト回路（２０１）に対応する２つ以上のテスト制御装置（２００）に対して、スキャンテストの実施を指示するようにしている。これによれば、複数の被テスト回路（２０１）に対して同時にスキャンテストを実施することができる。また、実施の形態４と同様に、テスト対象でない被テスト回路（２０１）については処理を継続することができる。
【０２１６】
なお、以上の説明では、図１２に示した半導体装置（１Ｅ）において、テスト制御装置（２００）、被テスト回路（２０１）、テスト結果圧縮装置（２０２）、及びテストクロック制御装置（２０３）の組を複数有する例について説明したが、これに限られない。当然に、図１、２、７、１１に示した半導体装置（１Ａ，１Ｂ，１Ｃ，１Ｄ）において、テスト制御装置（２００）、被テスト回路（２０１）、テスト結果圧縮装置（２０２）、及びテストクロック制御装置（２０３）の組を複数有するようにしてもよい。
【０２１７】
［実施の形態６］
続いて、実施の形態６について説明する。以下の実施の形態６の説明では、上述した実施の形態３の変形例と同様の内容については、同一の符号を付す等して、適宜、その説明を省略する。
【０２１８】
［全体構成］
図１７を参照して、本実施の形態６に係る半導体装置（１Ｈ）の構成について説明する。図１７は、本実施の形態６に係る半導体装置（１Ｈ）のブロック図である。実施の形態６に係る半導体装置（１Ｈ）は、例えば、ランタイムテストの対象が複数ある場合に適した実施の形態である。なお、図１７では、外部記憶装置（２）の図示は省略している。
【０２１９】
図１７に示すように、本実施の形態６に係る半導体装置（１Ｈ）は、実施の形態３の変形例に係る半導体装置（１Ｅ）と比較して、さらに、選択回路（１０５）と、ＦＩＦＯの読み出し用の機能ブロック（１０１Ｃ）と、テスト制御装置（３００）と、被テスト回路（３０１）と、テスト結果圧縮装置（３０２）と、テストクロック制御装置（３０３）とを有する点が異なる。また、本実施の形態６に係る半導体装置（１Ｈ）は、実施の形態３の変形例に係る半導体装置（１Ｅ）と比較して、さらに、第３電源領域（３０Ｈ）を有する点が異なる。
【０２２０】
ここで、選択回路（１０５）は、第１電源領域（１０）に含まれ、ＦＩＦＯの読み出し用の機能ブロック（１０１Ｃ）と、テスト制御装置（３００）と、被テスト回路（３０１）と、テスト結果圧縮装置（３０２）と、テストクロック制御装置（３０３）とは、第３電源領域（３０Ｈ）に含まれる。
【０２２１】
第３電源領域（３０Ｈ）は、第１電源領域（１０）及び第２電源領域（２０）とは電源配線が異なる。すなわち、第３電源領域（３０Ｈ）は、第１電源領域（１０）及び第２電源領域（２０）とは独立して異なる電力を供給することができる。例えば、第３電源領域（３０Ｈ）は、ＤＶＦＳ領域である。
【０２２２】
これまでの実施の形態と同様に、第１電源領域（１０）に配置される装置及び回路は、第１クロック信号（１１０）によって駆動され、第２電源領域（２０）に配置される装置及び回路は、第２クロック信号（２１０）によって駆動される。ここで、第３電源領域（３０Ｈ）に配置される装置及び回路は、第３クロック信号（３１０）によって駆動される。
【０２２３】
第１クロック信号（１１０）及び第２クロック信号（２１０）のそれぞれと、第３クロック信号（３１０）は、第１電源領域（１０）及び第２電源領域（２０）のそれぞれと、第３電源領域（３０Ｈ）との電圧が異なることにより、同期していない（周波数及び位相の少なくとも１つが異なる）ものとする。なお、第１クロック信号（１１０）、第２クロック信号（２１０）、及び第３クロック信号（３１０）のそれぞれは、異なるクロック生成回路によって生成されるクロック信号であることにより、相互に同期していないものであってもよい。
【０２２４】
以下、ＦＩＦＯの書き込み用の機能ブロック（１０１Ａ）及びＦＩＦＯの読み出し用の機能ブロック（１０１Ｂ，１０１Ｃ）のそれぞれを、機能ブロック（１０１Ａ）、機能ブロック（１０１Ｂ）、機能ブロック（１０１Ｃ）とも呼ぶ。
【０２２５】
本実施の形態６では、機能ブロック（１０１Ａ）は、選択回路（１０５）を介して、機能ブロック（１０１Ｂ）及び機能ブロック（１０１Ｃ）のうち、選択回路（１０５）によって選択された１つの機能ブロックと電気的に接続される。
【０２２６】
また、システムコントローラ（１０３）は、選択回路（１０５）を介して、テスト制御装置（２００）及びテスト結果圧縮装置（２０２）、もしくは、テスト制御装置（３００）及びテスト結果圧縮装置（３０２）のうち、選択回路（１０５）によって選択されたテスト制御装置及びテスト結果圧縮回路と電気的に接続される。
【０２２７】
第３電源領域（３０Ｈ）に含まれる各要素（１０１Ｃ，３００，３０１，３０２，３０３）の動作及び接続関係は、第２電源領域（２０）に含まれる各要素（１０１Ｂ，２００，２０１，２０２，２０３）の動作及び接続関係と同様であるため、説明を省略する。ただし、第３電源領域（３０Ｈ）に含まれる各要素（１０１Ｃ，３００，３０１，３０２，３０３）は、第２クロック信号（２１０）ではなく、第３クロック信号（３１０）に基づいて動作する。
【０２２８】
［動作フロー］
続いて、図１８を参照して、本実施の形態６に係る半導体装置（１Ｈ）の動作について説明する。図１８は、実施の形態６に係る半導体装置（１Ｈ）の動作を示す動作フロー図である。図１８では、縦線がその上部に記載された名称の回路又は装置の動作を示し、上から下に向かって時間が経過することを示している。横に伸びる矢印は、その起点となる回路又は装置の動作イベントが、その終点となる回路又は装置の動作イベントを発生させることを意味している。
【０２２９】
図１８における「被テスト回路Ａ」及び「被テスト回路Ｂ」は、それぞれ、図１７における２つの被テスト回路（２０１）及び被テスト回路（３０１）のうち、いずれかを示す。本実施の形態６に係る半導体装置（１Ｈ）の動作について、図１７に示す半導体装置（１Ｈ）の例と、図１８に示す動作フロー図を照らし合わせながら説明する。
【０２３０】
まず、システムコントローラ（１０３）は、ＤＭＡコントローラ（１０９）を制御することで、外部記憶装置（２）から被テスト回路Ａに対するスキャンテストデータと期待値を取得して、メモリ装置（１０４）に格納する。図１８に示すように、最初に、システムコントローラ（１０３）は、テストパターン読み出し装置（１０２）に対して、被テスト回路Ａのスキャンテストの開始を指示する。
【０２３１】
すなわち、システムコントローラ（１０３）は、被テスト回路Ａのスキャンテストの開始を指示する開始指示信号を、テストパターン読み出し装置（１０２）に出力する。被テスト回路Ａのスキャンテストの開始を指示する開始指示信号に応じて、テストパターン読み出し装置（１０２）は、被テスト回路Ａに対応するスキャンテストデータを、システムバスを介してメモリ装置（１０４）から取得し、ＦＩＦＯ（１０１）に書き込んでいく。
【０２３２】
また、システムコントローラ（１０３）は、被テスト回路Ａに対応する機能ブロック、テスト制御装置、及びテスト結果圧縮装置が選択されるように選択回路（１０５）を制御する。すなわち、システムコントローラ（１０３）は、被テスト回路Ａに対応する機能ブロック、テスト制御装置、及びテスト結果圧縮装置を選択する選択信号を、選択回路（１０５）に出力する。この選択信号に応じて、選択回路（１０５）は、機能ブロック（１０１Ａ）と、被テスト回路Ａに対応する機能ブロックを接続し、システムコントローラ（１０３）と、被テスト回路Ａに対応するテスト制御装置Ａ及びテスト結果圧縮装置Ａとを接続する。
【０２３３】
これより、機能ブロック（１０１Ａ）と、機能ブロック（１０１Ｂ）及び機能ブロック（１０１Ｃ）のうち、被テスト回路Ａに対応する機能ブロックとの間で信号（スキャンテストデータ、グレイコード値）が伝送されるようになる。また、テスト制御装置（２００）及びテスト制御装置（３００）のうち、被テスト回路Ａに対応するテスト制御装置Ａから出力された終了信号が、システムコントローラ（１０３）に入力されるようになる。また、テスト結果圧縮装置（２０２）及びテスト結果圧縮装置（３０２）のうち、被テスト回路Ａに対応するテスト結果圧縮装置Ａから出力された圧縮符号が、システムコントローラ（１０３）に入力されるようになる。
【０２３４】
よって、機能ブロック（１０１Ｂ）及び機能ブロック（１０１Ｃ）のうち、被テスト回路Ａに対応する機能ブロックによって、機能ブロック（１０１Ａ）からスキャンテストデータが読み出される。そのため、被テスト回路Ａに対応する機能ブロックは、ネゲートしたエンプティ信号をテスト制御装置Ａに出力する。これにより、被テスト回路Ａに対応するテスト制御装置Ａにおける開始信号がアサートされ、被テスト回路Ａのスキャンテストが実行される。なお、スキャンテストの動作については、実施の形態３の変形例と同じであるため、説明を省略する。
【０２３５】
被テスト回路Ａのスキャンテストが終了すると、被テスト回路Ａに対応するテスト制御装置Ａは、選択回路（１０５）を介して、システムコントローラ（１０３）に対して終了信号を出力する。この終了信号に応じて、システムコントローラ（１０３）は、被テスト回路Ａに対応するテスト結果圧縮装置Ａから取得した圧縮符号と、その終了信号で終了が通知された被テスト回路Ａに対応する期待値とを比較して、テスト結果を判定する。
【０２３６】
次に、図１８に示すように、被テスト回路Ｂに対しても、同様にして、スキャンテストが実行される。すなわち、次は、外部記憶装置（２）から被テスト回路Ｂに対するスキャンテストデータと期待値が、メモリ装置（１０４）に読み出される。なお、被テスト回路Ｂに対するスキャンテストデータと期待値が、被テスト回路Ａのものと同一である場合には、この読み出しは省略してもよい。テストパターン読み出し装置（１０２）に対して、被テスト回路Ｂのスキャンテストの開始を指示するとともに、被テスト回路Ｂに対応する機能ブロック、テスト制御装置、及びテスト結果圧縮装置を選択するように選択回路（１０５）を制御する。これにより、上述と同様に、被テスト回路Ｂに対応するテスト制御装置Ｂにおける開始信号がアサートされ、被テスト回路Ｂに対するスキャンテストが実行される。
【０２３７】
なお、被テスト回路Ｂまでのスキャンテストの実行が終了した後、再度、被テスト回路Ａ、Ｂに対するスキャンテストが実施されるようにしてもよい。すなわち、被テスト回路Ａ、Ｂに対するスキャンテストを繰り返し実行するようにしてもよい。なお、本実施の形態６では、２つの被テスト回路（２０１，３０１）のスキャンテストを実施する例について説明したが、被テスト回路（２０１，３０１）の数は、これに限られない。すなわち、第２電源領域（２０）及び第３電源領域（３０Ｈ）と同様の構成であり、電圧が異なる更なる電源領域を有していてもよい。
【０２３８】
以上に説明したように、本実施の形態６では、テスト制御装置（２００）が、第２のクロック信号（２１０）に同期して、ＦＩＦＯ（１０１）に格納された複数のテストデータを順次読み出しての被テスト回路（２０１）のスキャンテストを実施する。テスト制御装置（３００）が、第３のクロック信号（３１０）に同期して、ＦＩＦＯ（１０１）に格納された複数のテストデータを順次読み出しての被テスト回路（３０１）のスキャンテストを実施する。そして、選択回路（１０５）は、スキャンテストを実施するテスト制御装置として、テスト制御装置（２００）及びテスト制御装置（３００）のうち、いずれかを選択する。これによれば、それぞれ異なるクロック信号に同期する複数の被テスト回路のスキャンテストを実施することができる。
【０２３９】
なお、以上の説明では、図１２に示した半導体装置（１Ｅ）において、ＦＩＦＯ読み出し用の機能ブロック、テスト制御装置、被テスト回路、テストクロック制御装置、及びテスト結果圧縮装置のそれぞれを複数有する例について説明したが、これに限られない。当然に、図１、２、７、１１に示した半導体装置（１Ａ，１Ｂ，１Ｃ，１Ｄ）において、ＦＩＦＯ読み出し用の機能ブロック、テスト制御装置、被テスト回路、テストクロック制御装置、及びテスト結果圧縮装置のそれぞれを複数有するようにしてもよい。
【０２４０】
＜実施の形態７＞
ここで、図１９を参照して、上述の実施の形態１乃至６から抽出される一実施の形態について実施の形態７として説明する。図１９を参照して、実施の形態７に係る半導体装置（９）について説明する。図１９は、実施の形態７に係る半導体装置（９）の構成図である。
【０２４１】
図１９に示すように、半導体装置（９）は、ＦＩＦＯ（９１）と、テストデータ書込回路（９２）と、テスト制御回路（９３）と、被テスト回路（９４）とを有する。
【０２４２】
テストデータ書込回路（９２）は、第１のクロック信号（９１０）に同期して、複数のテストデータをＦＩＦＯ（９１）に順次書き込む。テストデータ書込回路（９２）は、テストパターン発生装置（１００）及びテストパターン読み出し装置（１０２）に対応する。ＦＩＦＯ（９１）は、ＦＩＦＯ（１０１）に対応する。第１のクロック信号（９１０）は、第１クロック信号（１１０）に対応する。
【０２４３】
テスト制御回路（９３）は、テストデータ書込回路（９２）による複数のテストデータのＦＩＦＯ（９１）への書き込みと並行して、第１のクロック信号（９１０）とは同期していない第２のクロック信号（９２０）に同期して、ＦＩＦＯ（９１）に格納された複数のテストデータを順次読み出しての被テスト回路（９４）のスキャンテストを実施する。テスト制御回路（９３）は、テスト制御装置（２００，３００）に対応する。被テスト回路（９４）は、被テスト回路（２０１，３０１）に対応する。第２のクロック信号（９２０）は、第２クロック信号（２１０）に対応する。
【０２４４】
＜他の実施の形態＞
以上に説明した実施の形態では、第１電源領域（１０）と第２電源領域（２０）が異なり、第１クロック信号（１１０）と第２クロック信号（２１０）が同期していないものとして説明したが、それらは、次に説明する構成及び動作によって発生し得る。図２０を参照して、その構成及び動作について説明する。図２０は、他の実施の形態に係る半導体装置（１Ｉ）の構成図である。
【０２４５】
図２０に示すように、半導体装置（１Ｉ）は、実施の形態１に係る半導体装置（１Ａ）と比較して、さらに、設定回路（３）と、電圧供給回路（４）と、クロック供給回路（５）とを有する。
【０２４６】
設定回路（３）は、被テスト回路（２０１）からの指示に応じて、電圧供給回路（４）が第２電源領域（２０）に供給する電圧、又は、クロック供給回路（５）が第２電源領域（２０）内の回路及び装置に供給する第２クロック信号（２１０）の周波数を変更する。
【０２４７】
ここで、初期状態では、第１電源領域（１０）の電圧と、第２電源領域（２０）の電圧は、同一であるものとする。以下、この電圧を第１の電圧とする。また、初期状態では、第１クロック信号（１１０）と第２クロック信号（２１０）は、同期している（周波数及び位相が同一である）ものとする。以下、この周波数を第１の周波数とする。
【０２４８】
被テスト回路（２０１）は、上述したように、例えばＣＰＵである。よって、被テスト回路（２０１）は、例えば、プログラムを実行して任意の処理を実行する。被テスト回路（２０１）は、自身の処理負荷を測定し、処理負荷が所定の閾値以下となったか否かを判定する。
【０２４９】
被テスト回路（２０１）は、処理負荷が所定の閾値以下となった場合、電圧供給回路（４）が第２電源領域（２０）に供給する電圧の変更、又は、クロック供給回路（５）が第２電源領域（２０）内の回路及び装置に供給する第２クロック信号（２１０）の周波数の変更を指示する指示信号を設定回路（３）に出力する。
【０２５０】
設定回路（３）は、被テスト回路（２０１）から電圧の変更を指示する指示信号に応じて、電圧供給回路（４）が第２電源領域（２０）に供給する電圧が、第１の電圧よりも低い第２の電圧となるように、電圧供給回路（４）を設定する。この設定に応じて、電圧供給回路（４）は、第２電源領域（２０）に供給する電圧を、第１の電圧から第２の電圧に変更する。これにより、第２電源領域（２０）の電圧は、第１電源領域（１０）よりも低くなる。その結果、電圧差の影響により、第２電源領域（２０）における第２クロック信号（２１０）は、第１電源領域（１０）における第１クロック信号（１１０）とは同期しなくなる。
【０２５１】
また、設定回路（３）は、被テスト回路（２０１）から周波数の変更を指示する指示信号に応じて、クロック供給回路（５）が第２電源領域（２０）に供給する第２クロック信号（２１０）が、第１の周波数よりも周波数の低い第２の周波数となるように、クロック供給回路（５）を設定する。この設定に応じて、クロック供給回路（５）は、第２電源領域（２０）に供給する第２クロック信号（２１０）の周波数を、第１の周波数から第２の周波数に変更する。これにより、第２クロック信号（２１０）の周波数は、第１クロック信号（１１０）よりも低くなる。
【０２５２】
一方、被テスト回路（２０１）は、処理負荷が所定の閾値以下とならない場合、上述の電圧の変更、及び、周波数の変更は指示しない。
【０２５３】
なお、以上の説明では、図１に示した半導体装置（１Ａ）に対して、設定回路（３）、電圧供給回路（４）、及びクロック供給回路（５）を適用した例について説明したが、これに限られない。当然に、図２、７、１１、１２、１３、１５、１７に示した半導体装置（１Ｂ，１Ｃ，１Ｄ，１Ｅ，１Ｆ，１Ｇ，１Ｈ）における第２電源領域２０と、図１７に示した半導体装置（１Ｈ）における第３電源領域３０Ｈに対して、設定回路（３）、電圧供給回路（４）、及びクロック供給回路（５）を適用することもできる。
【０２５４】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【０２５５】
上述した各実施の形態では、テスト結果圧縮装置（２０２，３０２）が、テスト結果圧縮装置（２０２）が、テスト結果データにおける不定値を、マスクデータによって“０”（Ｌｏｗ）に固定する例について説明したが、これに限られない。例えば、テスト結果圧縮装置（２０２，３０２）は、テスト結果データにおける不定値を、マスクデータによって“１”（Ｈｉｇｈ）に固定するようにしてもよい。この場合、テスト結果圧縮装置（２０２，３０２）は、ＡＮＤゲート（２０２１，２０２２）に代えて、ＯＲゲートを有するようにすればよい。
【符号の説明】
【０２５６】
１Ａ、１Ｂ、１Ｃ、１Ｄ、１Ｅ、１Ｆ、１Ｇ、１Ｈ、１Ｉ  半導体装置
２  外部記憶装置
３  設定回路
４  電圧供給回路
５  クロック供給回路
１０  第１電源領域
２０  第２電源領域
３０Ｈ  第３電源領域
３０  入力回路
３１  フル判定回路
３２  グレイコードカウンタ
３３、４３  選択回路
３４  レジスタ群
４０  出力回路
４１  空判定回路
４２  グレイコードカウンタ
４４  レジスタ
１００  テストパターン発生装置
１０１  ＦＩＦＯ
１０１Ａ  ＦＩＦＯ（書き込み用の機能ブロック）
１０１Ｂ、１０１Ｃ  ＦＩＦＯ（読み出し用の機能ブロック）
１０２  テストパターン読み出し装置
１０３  システムコントローラ
１０４  メモリ装置
１０５  選択回路
１０９  ＤＭＡコントローラ
１１０  第１クロック信号
２００  テスト制御装置
２０１、３０１  被テスト回路
２０２、３０２  テスト結果圧縮装置
２０３、３０３  テストクロック制御装置
２０４  入力選択回路
２０５  出力選択回路
２０６  調停回路
２１０  第２クロック信号
３１０  第３クロック信号
２０００  スキャンシフトカウンタ
２００１  スキャンシフト回数レジスタ
２００２  比較器
２００３、２００８、２００９  セレクタ
２００４、２０２１、２０２２  ＡＮＤゲート
２００５  テストパターンカウンタ
２００６  テストパターン数レジスタ
２００７  比較器
２０１０  スキャンチェーン
２０１１  伸長回路
２０１２、２０２３  圧縮回路
【図１】
2016166780.tif 000003
【図２】
2016166780.tif 000004
【図３】
2016166780.tif 000005
【図４】
2016166780.tif 000006
【図５】
2016166780.tif 000007
【図６】
2016166780.tif 000008
【図７】
2016166780.tif 000009
【図８】
2016166780.tif 000010
【図９】
2016166780.tif 000011
【図１０】
2016166780.tif 000012
【図１１】
2016166780.tif 000013
【図１２】
2016166780.tif 000014
【図１３】
2016166780.tif 000015
【図１４】
2016166780.tif 000016
【図１５】
2016166780.tif 000017
【図１６】
2016166780.tif 000018
【図１７】
2016166780.tif 000019
【図１８】
2016166780.tif 000020
【図１９】
2016166780.tif 000021
【図２０】
2016166780.tif 000022
【国際調査報告】
2016166780.tif 000023
2016166780.tif 000024