(57)【特許請求の範囲】
【請求項１】
複数のフリップフロップからなる第１のスキャンチェーンと、
前記スキャンチェーンの外部から生成されるテストデータまたは前記第１のスキャンチェーンの出力データを選択的に前記第１のスキャンチェーンの入力に与えるセレクタとを備え、
前記第１のスキャンチェーンは、シフトモードおよびキャプチャモードを有し、シフトモードのときは、前記セレクタによって入力に与えられた前記テストデータを第１のクロックに同期してシフトした後に、前記セレクタによって入力に与えられた前記第１のスキャンチェーンの前記出力データを前記第１のクロックの周波数よりも高い周波数を有する第２のクロックに同期してシフトし、前記第２のクロックに同期して行われるシフトに続いて実行されるキャプチャモードのときは、テスト対象の組み合わせ回路からの出力を前記第２のクロックに同期して前記複数のフリップフロップに取り込むことを特徴とするスキャンテスト回路。
【請求項２】
請求項１に記載のスキャンテスト回路において、前記セレクタによって前記第１のスキャンチェーンの入力に与えられるデータが前記テストデータから前記第１のスキャンチェーンの出力データに切り替わってから第１の期間が経過した後に活性のキャプチャ信号を第２の期間出力するキャプチャ信号発生手段をさらに備え、前記第１のスキャンチェーンは、前記キャプチャ信号発生手段からの活性のキャプチャ信号に応答してキャプチャモードとなり、不活性のキャプチャ信号に応答してシフトモードとなることを特徴とするスキャンテスト回路。
【請求項３】
請求項１に記載のスキャンテスト回路において、前記第１のクロックまたは前記第２のクロックを選択的に前記第１のスキャンチェーンに供給するクロック切り替え手段をさらに備えることを特徴とするスキャンテスト回路。
【請求項４】
請求項３に記載のスキャンテスト回路において、前記クロック切り替え手段は、前記セレクタによって前記第１のスキャンチェーンの入力に与えられるデータが前記テストデータから前記第１のスキャンチェーンの出力データへ切り替わるのに応答して所定期間 前記第２のクロックを前記第１のスキャンチェーンに供給し、前記所定期間が経過すると前記第１のクロックを前記第１のスキャンチェーンに供給することを特徴とするスキャンテスト回路。
【請求項５】
請求項１に記載のスキャンテスト回路において、前記第１のスキャンチェーンがキャプチャモードからシフトモードに変わって所定期間が経過した後から前記第１のスキャンチェーンによるスキャンアウトの直前までの期間 前記第１のスキャンチェーンに活性のホールド信号を与えるホールド信号発生手段をさらに備え、前記第１のスキャンチェーンは、前記ホールド信号発生手段からの活性のホールド信号を受けている間はシフト動作を行わずにデータを保持し続けることを特徴とするスキャンテスト回路。
【請求項６】
請求項１に記載のスキャンテスト回路において、前記第１のスキャンチェーンがキャプチャモードからシフトモードに変わった後に前記第１のスキャンチェーンに与えられる前記第２のクロックの数をカウントするクロック計数手段をさらに備えることを特徴とするスキャンテスト回路。
【請求項７】
請求項６に記載のスキャンテスト回路において、前記クロック計数手段は、前記第１のスキャンチェーンに直列に接続され、前記第１のスキャンチェーンに前記第２のクロックが与えられるときは、カウントされる前記第２のクロックの数を保持し、前記第１のスキャンチェーンに前記第１のクロックが与えられるときは、保持する値を前記第１のクロックに同期してシフトする第２のスキャンチェーンを含むことを特徴とするスキャンテスト回路。
【請求項８】
第１のクロックに同期してテストデータを複数のフリップフロップからなるスキャンチェーンにスキャンインするステップ（ａ）と、
前記スキャンチェーンからの出力を前記スキャンチェーンの入力に与えることによってループを形成し、前記第１のクロックよりも高い周波数を有する第２のクロックに同期して前記テストデータを前記ループ上で所定期間シフトするステップ（ｂ）と、
テスト対象の組み合わせ回路からの出力を前記第２のクロックに同期して前記複数のフリップフロップに取り込むステップ（ｃ）と、
前記テスト結果をスキャンアウトするステップ（ｄ）とを備え、
前記ステップ（ｂ）は前記ステップ（ａ）に続いて実行され、前記ステップ（ｃ）は前記ステップ（ｂ）に続いて実行され、前記ステップ（ｄ）は前記ステップ（ｃ）に続いて実行されることを特徴とするスキャンテスト方法。
【請求項９】
スキャンチェーンを有する半導体集積回路であって、
前記スキャンチェーンは、前記スキャンチェーンの外部からデータが入力される第１のシフト動作と、前記スキャンチェーンの出力からデータが入力される第２のシフト動作が可能であり、
前記第１のシフト動作は、第１のクロックに同期して行われ、
前記第２のシフト動作は、前記第１シフト動作に続いて、前記第１のクロックの周波数よりも高い周波数を有する第２のクロックに同期して行われ、
前記第２のシフト動作に続いて、前記第２のクロックに同期してキャプチャ動作が行われる半導体集積回路。
【請求項１０】
第１のスキャンチェーンと第２のスキャンチェーンを有する半導体集積回路であって、
前記第１のスキャンチェーンは、前記スキャンチェーンの外部からデータが入力される第１のシフト動作と、前記第１のスキャンチェーンの出力からデータが入力される第２のシフト動作が可能であり、
前記第２のスキャンチェーンは、前記第１のスキャンチェーンの出力からデータが入力される前記第１のシフト動作と、前記第２のスキャンチェーンの出力からデータが入力される前記第２のシフト動作が可能であり、
前記第１のシフト動作は、第１のクロックに同期して行われ、
前記第２のシフト動作は、前記第１シフト動作に続いて前記第１のクロックの周波数よりも高い周波数を有する第２のクロックに同期して行われ、
前記第２のシフト動作に続いて、前記第２のクロックに同期してキャプチャ動作が行われる半導体集積回路。
【請求項１１】
スキャンテスト設計された半導体集積回路であって、
スキャンチェーンの出力から入力へのフィードバックループを形成されない状態で、第１のクロックに同期して第１のシフト動作を行った後に、前記スキャンチェーンの出力から入力へのフィードバックループを形成した状態で、前記第１のクロックよりも周波数の高い第２のクロックに同期して、第２のシフト動作とキャプチャ動作を連続して行うことができる半導体集積回路。
【請求項１２】
請求項９乃至１１のいずれか１項に記載の半導体集積回路であって、前記第２のシフト動作が、前記第２のクロックの２サイクル以上実行可能であることを特徴とする半導体集積回路。
【請求項１３】
前記第１のシフト動作と前記第２のシフト動作の切り替えを行うセレクタを有する請求項９乃至１２のいずれか１項に記載の半導体集積回路。
【請求項１４】
前記第１のクロックと前記第２のクロックを選択的に前記スキャンチェーンに供給するクロック切り替え手段を有する請求項９乃至１３のいずれか１項に記載の半導体集積回路。
【請求項１５】
スキャンチェーンの出力から入力へのフィードバックループを形成されない状態で、第１のクロックに同期して第１のシフト動作を行った後に、
前記スキャンチェーンの出力から入力へのフィードバックループを形成した状態で、前記第１のクロックよりも周波数の高い第２のクロックに同期して、第２のシフト動作とキャプチャ動作を連続して行うことを特徴とする半導体集積回路のスキャンテスト方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明はスキャンテスト回路およびスキャンテスト方法に関し、さらに詳しくは、半導体集積回路（ＬＳＩ）を実際の動作速度でテストするスキャンテスト回路およびスキャンテスト方法に関する。
【０００２】
【従来の技術および発明が解決しようとする課題】
ＬＳＩの内部をテストする方法としてスキャンテストが知られている。一般に、スキャンテストは、ＬＳＩの内部回路と外部入出力部とを同じクロックに同期させて行う。通常、ＬＳＩの内部回路は高速で動作できるのに対してＬＳＩの外部入出力部の動作速度はより低速である。このため、スキャンテストの速度はＬＳＩの外部入出力部の動作速度によって制限される。したがって高速で動作するＬＳＩの場合、実際の動作速度で内部回路が正しく動くかどうかを調べるタイミングテスト（例えば、遅延故障検査など）をスキャンテストによって行うことは困難である。一方、タイミングテストをスキャンテスト以外の方法で行う場合にはテストパターンが膨大となる。また、高価なテスタが必要となる。
【０００３】
近年、遅延故障検査などのタイミングテストをスキャンテストによって行うためのアプローチがいくつかなされている。そのためには、テストを高速で行えることだけでなく高精度のサイクルタイムが要求される。
【０００４】
なお、特開平２−２４７５８６号公報には、スキャンチェーンの前後にＦＩＦＯメモリを設けることによってスキャンテストを高速化する技術が開示されている。
【０００５】
この発明の目的は、高速で動作するＬＳＩを実際の動作速度でテストすることができるスキャンテスト回路およびスキャンテスト方法を提供することである。
【０００６】
【課題を解決するための手段】
この発明の１つの局面に従うと、スキャンテスト回路は、第１のスキャンチェーンと、セレクタとを備える。セレクタは、テストデータまたは第１のスキャンチェーンの出力データを選択的に第１のスキャンチェーンの入力に与える。第１のスキャンチェーンは、シフトモードおよびキャプチャモードを有する。シフトモードのとき第１のスキャンチェーンは、セレクタによって入力に与えられたデータを第１のクロックまたは第２のクロックに同期してシフトする。第２のクロックは、第１のクロックの周波数よりも高い周波数を有する。キャプチャモードのとき第１のスキャンチェーンは、テスト対象からのテストデータに対する出力を第２のクロックに同期して取り込む。
【０００７】
上記スキャンテスト回路では、まず、セレクタによってテストデータが第１のスキャンチェーンの入力に与えられる。第１のスキャンチェーンはシフトモードとなり、セレクタによって入力に与えられたテストデータを第１のクロックに同期してシフトする。これにより、第１のスキャンチェーンにテストデータがセットされる。
【０００８】
次いで、セレクタは第１のスキャンチェーンの出力データを第１のスキャンチェーンの入力に与える。これにより、（第１のスキャンチェーンの出力）−（セレクタ）−（第１のスキャンチェーンの入力）間でループが形成される。第１のスキャンチェーンはシフトモードのままであり、セットされたテストデータを第２のクロックに同期してシフトする。ここでは（第１のスキャンチェーンの出力）−（セレクタ）−（第１のスキャンチェーンの入力）間でループが形成されているため、第１のスキャンチェーンから出力されたテストデータはセレクタを介してスキャンチェーンの入力に与えられる。すなわち、第１のスキャンチェーンにセットされたテストデータは第２のクロックに同期して上記ループ上を巡回する。テストデータが上記ループ上を巡回している間に第２のクロックが安定する。
【０００９】
次いで、第１のスキャンチェーンがキャプチャモードとなり、テスト対象からのテストデータに対する出力（テスト結果）を第２のクロックに同期して取り込む。これにより、第１のスキャンチェーンに格納されていたテストデータはテスト結果に置き換えられる。そして第１のスキャンチェーンがふたたびシフトモードとなり、第１のクロックに同期してテスト結果を外部へ出力する。
【００１０】
以上のように、上記スキャンテスト回路では、第１のクロックに同期して第１のスキャンチェーンにテストデータをセットし、第１のクロックの周波数よりも高い周波数を有する第２のクロックに同期して第１のスキャンチェーンにテスト結果を取り込むことができる。したがって、テスト対象となる半導体集積回路（ＬＳＩ）の動作速度が高速であっても、実際の動作速度で内部回路が正しく動くかどうかを調べるタイミングテスト（例えば、遅延故障検査など）を行うことができる。
【００１１】
また、（第１のスキャンチェーンの出力）−（セレクタ）−（第１のスキャンチェーンの入力）間でループを形成し、第１のスキャンチェーンにセットされたテストデータをこのループ上で巡回させることができる。これにより、第２のクロックが安定した状態で高精度なタイミングテストを行うことができる。
【００１２】
また、高価なテスタを必要としないため、テストコストの上昇を抑えることができる。
【００１３】
好ましくは、上記スキャンテスト回路はさらに、キャプチャ信号発生手段を備える。キャプチャ信号発生手段は、セレクタによって第１のスキャンチェーンの入力に与えられるデータがテストデータから第１のスキャンチェーンの出力データに切り替わってから第１の期間が経過した後に活性のキャプチャ信号を第２の期間出力する。そして上記第１のスキャンチェーンは、キャプチャ信号発生手段からの活性のキャプチャ信号に応答してキャプチャモードとなり、不活性のキャプチャ信号に応答してシフトモードとなる。
【００１４】
上記スキャンテスト回路では、まず、セレクタによってテストデータが第１のスキャンチェーンの入力に与えられる。キャプチャ信号発生手段は不活性のキャプチャ信号を出力する。不活性のキャプチャ信号に応答して第１のスキャンチェーンはシフトモードとなり、セレクタによって入力に与えられたテストデータを第１のクロックに同期してシフトする。これにより、第１のスキャンチェーンにテストデータがセットされる。
【００１５】
次いで、セレクタは第１のスキャンチェーンの出力データを第１のスキャンチェーンの入力に与える。これにより、（第１のスキャンチェーンの出力）−（セレクタ）−（第１のスキャンチェーンの入力）間でループが形成される。引き続きキャプチャ信号発生手段は不活性のキャプチャ信号を出力する。第１のスキャンチェーンはシフトモードのままであり、セットされたテストデータを第２のクロックに同期してシフトする。すなわち、第１のスキャンチェーンにセットされたテストデータは第２のクロックに同期して上記ループ上を巡回する。
【００１６】
第１のスキャンチェーンの出力データが第１のスキャンチェーンの入力に与えられるようになってから第１の期間が経過すると、キャプチャ信号発生手段は活性のキャプチャ信号を出力する。活性のキャプチャ信号に応答して第１のスキャンチェーンがキャプチャモードとなり、テスト対象からのテストデータに対する出力（テスト結果）を第２のクロックに同期して取り込む。これにより、第１のスキャンチェーンに格納されていたテストデータはテスト結果に置き換えられる。
【００１７】
活性のキャプチャ信号を第２の期間出力するとキャプチャ信号発生手段は、不活性のキャプチャ信号を出力する。不活性のキャプチャ信号に応答して第１のスキャンチェーンがふたたびシフトモードとなり、第１のクロックに同期してテスト結果を外部へ出力する。
【００１８】
高速で動作するＬＳＩでは、スキャンチェーンのシフトモード／キャプチャモードの切り替えをＬＳＩの実際の動作速度に応答して外部から制御することは困難である。しかし、上記スキャンテスト回路では、キャプチャ信号発生手段からのキャプチャ信号に応答して第１のスキャンチェーンのシフトモード／キャプチャモードが切り替わる。このため、第１のスキャンチェーンのシフトモード／キャプチャモードの切り替えを外部から直接に制御する必要がない。したがって、高速で動作するＬＳＩであっても実際の動作速度でのテストを容易に行うことができる。
【００１９】
好ましくは、上記スキャンテスト回路はさらに、クロック切り替え手段を備える。クロック切り替え手段は、第１のクロックまたは第２のクロックを選択的に第１のスキャンチェーンに供給する。
【００２０】
好ましくは、上記クロック切り替え手段は、セレクタによって第１のスキャンチェーンの入力に与えられるデータがテストデータから第１のスキャンチェーンの出力データへ切り替わるのに応答して所定期間  第２のクロックを第１のスキャンチェーンに供給し、当該所定期間が経過すると第１のクロックを第１のスキャンチェーンに供給する。
【００２１】
上記スキャンテスト回路では、クロック切り替え手段を設けたため、第１のスキャンチェーンに供給するクロックの切り替えを外部から直接に制御する必要がない。したがって、高速で動作するＬＳＩであっても実際の動作速度でのテストを容易に行うことができる。
【００２２】
好ましくは、上記スキャンテスト回路はさらに、ホールド信号発生手段を備える。ホールド信号発生手段は、第１のスキャンチェーンがキャプチャモードからシフトモードに変わって所定期間が経過した後から第１のスキャンチェーンによるスキャンアウトの直前までの期間  第１のスキャンチェーンに活性のホールド信号を与える。そして上記第１のスキャンチェーンは、ホールド信号発生手段からの活性のホールド信号を受けている間はシフト動作を行わずにデータを保持し続ける。
【００２３】
上記スキャンテスト回路では、第１のスキャンチェーンがキャプチャモードからシフトモードに変わると、第１のスキャンチェーンに取り込まれたテスト結果は（第１のスキャンチェーンの出力）−（セレクタ）−（第１のスキャンチェーンの入力）間で形成されるループ上を第２のクロックに同期して巡回する。第１のスキャンチェーンがキャプチャモードからシフトモードに変わって所定期間が経過すると、ホールド信号発生手段は活性のホールド信号を第１のスキャンチェーンに与える。活性のホールド信号を受けている間第１のスキャンチェーンは、テスト結果をシフトせずに保持し続ける。そしてホールド信号発生手段からのホールド信号が活性から不活性に切り替わった後、第１のスキャンチェーンは、保持しているテスト結果を第１のクロックに同期して外部へシリアルに出力（スキャンアウト）する。スキャンアウト（外部へ出力）されるテスト結果の順序は、第１のスキャンチェーンに活性のホールド信号が与えられた時点でスキャンチェーンに格納されているテスト結果の順となる。したがって、上記所定期間（第１のスキャンチェーンがキャプチャモードからシフトモードに変わってから活性のホールド信号を第１のスキャンチェーンに与えるまでの期間）を適切な期間に設定することによって、外部へ出力されるテスト結果の順序を所望の順序にすることができる。
【００２４】
好ましくは、上記スキャンテスト回路はさらに、クロック計数手段を備える。クロック計数手段は、第１のスキャンチェーンがキャプチャモードからシフトモードに変わった後に第１のスキャンチェーンに与えられる第２のクロックの数をカウントする。
【００２５】
上記スキャンテスト回路では、第１のスキャンチェーンがキャプチャモードからシフトモードに変わると、第１のスキャンチェーンに取り込まれたテスト結果は（第１のスキャンチェーンの出力）−（セレクタ）−（第１のスキャンチェーンの入力）間で形成されるループ上を第２のクロックに同期して巡回する。第１のスキャンチェーンがキャプチャモードからシフトモードに変わってから所定の期間が経過すると、第１のスキャンチェーンは、保持しているテスト結果を第１のクロックに同期して外部へシリアルに出力（スキャンアウト）する。外部へ出力されるテスト結果の順序は、上記所定の期間に第１のスキャンチェーンに与えられた第２のクロックの数に応じてずれている。上記所定の期間に第１のスキャンチェーンに与えられた第２のクロックの数はクロック計数手段によってカウントされている。したがって、外部へ出力されるテスト結果の順序のずれを補正することができる。
【００２６】
好ましくは、上記クロック計数手段は、第２のスキャンチェーンを含む。第２のスキャンチェーンは第１のスキャンチェーンに直列に接続される。第１のスキャンチェーンに第２のクロックが与えられるとき第２のスキャンチェーンは、カウントされる第２のクロックの数を保持する。第１のスキャンチェーンに第１のクロックが与えられるとき第２のスキャンチェーンは、保持する値を第１のクロックに同期してシフトする。
【００２７】
上記スキャンテスト回路では、上記所定の期間に第１のスキャンチェーンに与えられた第２のクロックの数は第２のスキャンチェーンに保持される。そして、直列に接続された第１および第２のスキャンチェーンは、テスト結果および上記所定の期間に第１のスキャンチェーンに与えられた第２のクロックの数を第１のクロックに同期して外部へシリアルに出力する。
【００２８】
この発明のもう１つの局面に従うと、スキャンテスト方法はステップ（ａ）−ステップ（ｄ）を備える。ステップ（ａ）では、第１のクロックに同期してテストデータをスキャンチェーンにスキャンインする。ステップ（ｂ）では、スキャンチェーンからの出力をスキャンチェーンの入力に与えることによってループを形成し、第１のクロックよりも高い周波数を有する第２のクロックに同期してテストデータを当該ループ上で所定期間シフトする。ステップ（ｃ）では、テスト対象からのテストデータに対する出力すなわちテスト結果を第２のクロックに同期してスキャンチェーンに取り込む。ステップ（ｄ）では、テスト結果をスキャンアウトする。
【００２９】
上記スキャンテスト方法では、第１のクロックに同期してテストデータをスキャンチェーンにスキャンインし、第１のクロックの周波数よりも高い周波数を有する第２のクロックに同期して第１のスキャンチェーンにテスト結果を取り込む。したがって、テスト対象となる半導体集積回路（ＬＳＩ）の動作速度が高速であっても、実際の動作速度で内部回路が正しく動くかどうかを調べるタイミングテスト（例えば、遅延故障検査など）を行うことができる。
【００３０】
また、スキャンチェーンからの出力をスキャンチェーンの入力に与えることによってループを形成し、第２のクロックに同期してテストデータを当該ループ上で所定期間シフトする。これにより、第２のクロックが安定した状態で高精度なタイミングテストを行うことができる。
【００３１】
【発明の実施の形態】
以下、この発明の実施の形態を図面を参照して詳しく説明する。なお、図中同一または相当部分には同一符号を付し、その説明は繰り返さない。
【００３２】
（第１の実施形態）
＜構成＞
図１は、この発明の第１の実施形態による半導体集積回路装置（ＬＳＩ）の構成を示すブロック図である。図１に示すＬＳＩ１はスキャン設計されており、順序回路１００と、セレクタ２０１と、テスト制御回路２０２と、スキャン入力端子１１と、制御信号入力端子１２と、クロック入力端子１３と、スキャン出力端子１４とを備える。
【００３３】
スキャン入力端子１１には外部からテストデータＳＩＮが与えられる。制御信号入力端子１２には外部から制御信号ＳＴＡＲＴが与えられる。クロック入力端子１３には外部からクロックＣＫが与えられる。スキャン出力端子１４からテスト結果ＳＯＵＴが外部に出力される。
【００３４】
テスト制御回路２０２は、制御信号入力端子１２からの制御信号ＳＴＡＲＴに基づいてループ信号ＬＰおよびキャプチャ信号ＣＡＰＴを生成する。具体的には、テスト制御回路２０２は、制御信号ＳＴＡＲＴがＨレベル（論理ハイレベル）のときにはＨレベルのループ信号ＬＰを出力し、制御信号ＳＴＡＲＴがＬレベル（論理ローレベル）のときにはＬレベルのループ信号ＬＰを出力する。またテスト制御回路２０２は、制御信号ＳＴＡＲＴがＬレベルからＨレベルに変化した時点から第１の期間（ここでは、クロックＣＫの６クロックサイクルとする。）が経過した後に第２の期間（ここでは、クロックＣＫの１クロックサイクルとする。）Ｈレベルのキャプチャ信号ＣＡＰＴを出力し、それ以外のときはＬレベルのキャプチャ信号ＣＡＰＴを出力する。
【００３５】
順序回路１００はスキャンテストの対象となる回路であり、組み合わせ回路１１０と、スキャンフリップフロップｆｆ１−ｆｆ６とを含む。スキャンフリップフロップｆｆ１−ｆｆ６は、順序回路１００に含まれていた通常のフリップフロップをスキャン動作が可能となるように置き換えたものである。このように置き換えることによって、順序回路１００内のフリップフロップに完全な可制御性・可観測性が付加され、順序回路１００を組み合わせ回路１１０として取り扱うことができる。スキャンフリップフロップｆｆ１−ｆｆ６は、スキャン動作が可能なフリップフロップである。スキャンフリップフロップｆｆ１−ｆｆ６は、シフトレジスタのように直列に接続され、クロック入力端子１３からのクロックＣＫに同期して動作する。このように接続されたスキャンフリップフロップｆｆ１−ｆｆ６をスキャンチェーン１２０と呼ぶ。スキャンチェーン１２０は、スキャンテストのシフトモードではシフトレジスタとして働き、キャプチャモードおよび通常動作時には、順序回路１００の機能を実現するための単なるフリップフロップとして働く。スキャンチェーン１２０は、テスト制御回路２０２からのキャプチャ信号ＣＡＰＴに応答してシフトモードまたはキャプチャモードとなる。具体的には、スキャンチェーン１２０は、Ｈレベルのキャプチャ信号ＣＡＰＴに応答してキャプチャモードとなり、Ｌレベルのキャプチャ信号ＣＡＰＴに応答してシフトモードとなる。
【００３６】
セレクタ２０１は、テスト制御回路２０２からのループ信号ＬＰに応答して、スキャン入力端子１１からのテストデータＳＩＮまたはスキャンチェーン１２０の出力（スキャンフリップフロップｆｆ６の出力）をスキャンチェーン１２０の入力（スキャンフリップフロップｆｆ１の入力）に与える。具体的には、セレクタ２０１はＬレベルのループ信号ＬＰに応答してスキャン入力端子１１からのテストデータＳＩＮをスキャンチェーン１２０の入力に与え、Ｈレベルのループ信号ＬＰに応答してスキャンチェーン１２０の出力をスキャンチェーン１２０の入力に与える。
【００３７】
以上のように構成されたＬＳＩ１のうちのスキャンチェーン１２０、セレクタ２０１およびテスト制御回路２０２によってスキャンテスト回路が構成される。
【００３８】
＜スキャンテストの手順＞
図１に示したスキャンテスト回路によるスキャンテストの手順について図２を参照しつつ説明する。
【００３９】
（１）時刻ｔ０から時刻ｔ１までの期間
ＬＳＩ１の実際の動作速度よりも低い周波数のクロックＣＫがクロック入力端子１３に与えられる。また、Ｌレベルの制御信号ＳＴＡＲＴが制御信号入力端子１２に与えられる。Ｌレベルの制御信号ＳＴＡＲＴに応答して、テスト制御回路２０２はＬレベルのループ信号ＬＰおよびＬレベルのキャプチャ信号ＣＡＰＴを出力する。クロックＣＫに同期してテストデータＳＩＮ（ここでは、Ｄ１−Ｄ６）がシリアルにスキャン入力端子１１に与えられる。セレクタ２０１は、スキャン入力端子１１からのテストデータＤ１−Ｄ６をスキャンチェーン１２０の入力に与える。スキャンチェーン１２０は、セレクタ２０１からのテストデータＤ１−Ｄ６をクロックＣＫに同期してシフトする。これにより、スキャンフリップフロップｆｆ６−ｆｆ１にはテストデータＤ１−Ｄ６がセットされる。
【００４０】
以上のように、このスキャンテスト回路では、スキャン入力端子１１に与えられたテストデータＳＩＮ（Ｄ１−Ｄ６）を、ＬＳＩ１の実際の動作速度よりも低い周波数のクロックＣＫに同期してスキャンチェーン１２０に設定する。このように、スキャン入力端子１１に与えられたテストデータＳＩＮをクロックＣＫに同期してスキャンチェーン１２０に設定することを「スキャンイン」という。
【００４１】
（２）時刻ｔ１から時刻ｔ２までの期間
外部からクロック入力端子１３へのクロックの供給が停止される。これは、クロック切り替え時のＬＳＩ１の誤動作を防ぐためである。また、この期間内に、制御信号入力端子１２に与えられている制御信号ＳＴＡＲＴがＬレベルからＨレベルに切り替わる。これに応答してテスト制御回路２０２は、ループ信号ＬＰをＬレベルからＨレベルに切り替える。Ｈレベルのループ信号ＬＰに応答して、セレクタ２０１は、スキャンチェーン１２０の出力をスキャンチェーン１２０の入力に与える。これにより、（スキャンチェーン１２０の出力）−（セレクタ２０１）−（スキャンチェーン１２０の入力）間でループが形成される。
【００４２】
（３）時刻ｔ２から時刻ｔ３までの期間
ＬＳＩ１の実際の動作速度に等しい周波数のクロックＣＫがクロック入力端子１３に与えられる。制御信号ＳＴＡＲＴおよびループ信号ＬＰはＨレベルであり、キャプチャ信号ＣＡＰＴはＬレベルである。スキャンチェーン１２０のスキャンフリップフロップｆｆ６−ｆｆ１に格納されたテストデータＤ１−Ｄ６は、ＬＳＩ１の実際の動作速度に等しい周波数のクロックＣＫに同期してシフトされる。ここでは（スキャンチェーン１２０の出力）−（セレクタ２０１）−（スキャンチェーン１２０の入力）間でループが形成されているため、スキャンフリップフロップｆｆ６から出力されたデータはセレクタ２０１を介してスキャンフリップフロップｆｆ１に入力される。すなわち、スキャンチェーン１２０上のテストデータＤ１−Ｄ６は、ＬＳＩ１の実際の動作速度に等しいクロックＣＫに同期して上述のループ上を巡回する。ここでは第１の期間を６クロックサイクルとしているため、時刻ｔ２から時刻ｔ３までの期間は６クロックサイクルとなる。したがって、時刻ｔ３においてスキャンフリップフロップｆｆ６−ｆｆ１には再びテストデータＤ１−Ｄ６が設定される。
【００４３】
テストデータＤ１−Ｄ６が上述のループ上を巡回している間に、ＬＳＩ１の実際の動作速度に等しい周波数のクロックＣＫが安定する。これにより、タイミングテスト（例えば、遅延故障検査など）を安定してかつ高精度に行うことができる。
【００４４】
なお、ここでは第１の期間を６クロックサイクルとしたが、この期間は任意に設定することができる。例えば、クロックＣＫが安定するまでにさらに長い期間を必要とするときには、１２クロックサイクル、１８クロックサイクルのようにすることができる。また、時刻ｔ３においてスキャンフリップフロップｆｆ１−ｆｆ６に格納されるテストデータは第１の期間に応じて変わる。例えば第１の期間を７クロックサイクルとしたときには、時刻ｔ３においてスキャンフリップフロップｆｆ６−ｆｆ１にはテストデータＤ２−Ｄ６，Ｄ１が格納される。したがって、クロックＣＫが安定するために必要な期間、スキャンフリップフロップｆｆ１−ｆｆ６に格納するテストデータに応じて第１の期間を設定することができる。
【００４５】
（４）時刻ｔ３から時刻ｔ４までの期間
引き続き、ＬＳＩ１の実際の動作速度に等しい周波数のクロックＣＫがクロック入力端子１３に与えられる。制御信号ＳＴＡＲＴがＬレベルからＨレベルに変化した時点から第１の期間（６クロックサイクル）が経過したため、テスト制御回路２０２は、第２の期間（ここでは、時刻ｔ３から時刻ｔ４までの１クロックサイクル）Ｈレベルのキャプチャ信号ＣＡＰＴを出力する。Ｈレベルのキャプチャ信号ＣＡＰＴに応答してスキャンチェーン１２０はキャプチャモードとなる。キャプチャモードとなったスキャンチェーン１２０では、テストデータＤ１−Ｄ６に対する組み合わせ回路１１０の出力Ｒ１−Ｒ６（テスト結果）がスキャンフリップフロップｆｆ６−ｆｆ１に取り込まれる。これにより、スキャンフリップフロップｆｆ６−ｆｆ１に格納されていたテストデータＤ１−Ｄ６がテスト結果Ｒ１−Ｒ６に置き換えられる。このように、テストデータＤ１−Ｄ６に対する組み合わせ回路１１０の出力Ｒ１−Ｒ６（テスト結果）をスキャンフリップフロップｆｆ６−ｆｆ１に取り込むことを「キャプチャ」という。
【００４６】
（５）時刻ｔ４から時刻ｔ５までの期間
テスト制御手段２０２は、Ｌレベルのキャプチャ信号ＣＡＰＴを出力する。ループ信号ＬＰはＨレベルのままである。したがって、時刻ｔ３から時刻ｔ４までの期間にスキャンフリップフロップｆｆ６−ｆｆ１に取り込まれたテスト結果Ｒ１−Ｒ６は、（スキャンチェーン１２０の出力）−（セレクタ２０１）−（スキャンチェーン１２０の入力）間で形成されたループ上を、ＬＳＩ１の実際の動作速度に等しい周波数のクロックＣＫに同期して巡回する。ここでは時刻ｔ４から時刻ｔ５までの期間を６クロックサイクルとしている。したがって、時刻ｔ５においてスキャンフリップフロップｆｆ６−ｆｆ１には再びテスト結果Ｒ１−Ｒ６が設定される。
【００４７】
（６）時刻ｔ５から時刻ｔ６までの期間
外部からクロック入力端子１３へのクロックの供給が停止される。これは、クロック切り替え時のＬＳＩ１の誤動作を防ぐためである。また、この期間内に、制御信号入力端子１２に与えられている制御信号ＳＴＡＲＴがＨレベルからＬレベルに切り替わる。これに応答してテスト制御回路２０２は、ループ信号ＬＰをＨレベルからＬレベルに切り替える。
【００４８】
（７）時刻ｔ６から時刻ｔ７までの期間
ＬＳＩ１の実際の動作速度よりも遅い周波数のクロックＣＫがクロック入力端子１３に与えられる。また、制御信号ＳＴＡＲＴ、ループ信号ＬＰおよびキャプチャ信号ＣＡＰＴはＬレベルである。スキャンチェーン１２０は、スキャンフリップフロップｆｆ６−ｆｆ１に格納されているテスト結果Ｒ１−Ｒ６をクロックＣＫに同期してシフトする。これにより、スキャン出力端子１４から外部へテスト結果ＳＯＵＴ（Ｒ１−Ｒ６）が、クロックＣＫに同期してシリアルに出力される。
このように、スキャンフリップフロップｆｆ６−ｆｆ１に格納されているテスト結果Ｒ１−Ｒ６をスキャン出力端子１４から外部へ出力することを「スキャンアウト」という。
【００４９】
＜効果＞
この発明の第１の実施形態によるＬＳＩ１におけるスキャンテスト回路によれば以下の効果が得られる。
【００５０】
ＬＳＩ１の実際の動作速度よりも低い周波数のクロックに同期してスキャンインおよびスキャンアウトを行い、ＬＳＩ１の実際の動作速度に等しい周波数のクロックに同期してキャプチャを行う。したがって、ＬＳＩ１の動作速度が高速であっても、実際の動作速度で内部回路が正しく動くかどうかを調べるタイミングテスト（例えば、遅延故障検査など）を行うことができる。
【００５１】
また、（スキャンチェーン１２０の出力）−（セレクタ２０１）−（スキャンチェーン１２０の入力）間でループを形成し、スキャンインしたテストデータＤ１−Ｄ６を所定期間このループ上で巡回させる。これにより、クロックが安定した状態で高精度なタイミングテストを行うことができる。
【００５２】
また、高価なテスタを必要としないため、テストコストの上昇を抑えることができる。
【００５３】
＜なお書き＞
ここでは６段のスキャンフリップフロップｆｆ１−ｆｆ６によってスキャンチェーン１２０を構成したけれどもスキャンチェーンを構成するスキャンフリップフロップの数は６段に限られない。
【００５４】
また、ここでは、（スキャンチェーン１２０の出力）−（セレクタ２０１）−（スキャンチェーン１２０の入力）間で、６クロックサイクルで一巡するループを１つ形成した。これに代えて、スキャンチェーン１２０を複数のスキャンチェーンに分割し、複数のスキャンチェーンの各々についてループを形成してもよい。これにより、ループを一巡するのに要するクロックサイクル数を少なくすることができる。例えば、図３に示すように、スキャンチェーン１２０（図１）を、スキャンフリップフロップｆｆ１−ｆｆ３で構成されるスキャンチェーン３０１とスキャンフリップフロップｆｆ４−ｆｆ６で構成されるスキャンチェーン３０２とに分割する。また、セレクタ２０１と同様のセレクタ２０３を設ける。これにより、（スキャンチェーン３０１の出力）−（セレクタ２０１）−（スキャンチェーン３０１の入力）間、および（スキャンチェーン３０２の出力）−（セレクタ２０３）−（スキャンチェーン３０２の入力）間で、３クロックサイクルで一巡するループが形成される。
【００５５】
（第２の実施形態）
＜構成＞
図４は、この発明の第２の実施形態による半導体集積回路装置（ＬＳＩ）の構成を示すブロック図である。図４に示すＬＳＩ４は、図１に示した制御信号入力端子１２およびテスト制御回路２０２に代えて、ループ信号入力端子１５およびテスト制御回路４００を備える。その他の構成は図１に示したＬＳＩ１と同様である。
【００５６】
ループ信号入力端子１５には外部からループ信号ＬＰが与えられる。外部からループ信号入力端子１５に与えられたループ信号ＬＰは、セレクタ２０１およびテスト制御回路４００に供給される。
【００５７】
テスト制御回路４００は、内部クロック発生回路４０１と、クロック切り替え器４０２と、キャプチャ信号発生回路４０３とを含む。内部クロック発生回路４０１は、ＬＳＩ４の動作速度に等しい周波数のクロックＣＫｂを生成する。クロック切り替え器４０２は、ループ信号入力端子１５からのループ信号ＬＰおよびキャプチャ信号発生回路４０３からのクロック制御信号ＳＬに応答して、クロック入力端子１３からのクロックＣＫａまたは内部クロック発生回路４０１からのクロックＣＫｂをクロックＣＫとして出力する。具体的には、クロック切り替え器４０２は、ループ信号ＬＰおよびクロック制御信号ＳＬがともにＨレベルのとき内部クロック発生回路４０１からのクロックＣＫｂをクロックＣＫとして出力し、それ以外のときはクロック入力端子１３からのクロックＣＫａをクロックＣＫとして出力する。キャプチャ信号発生回路４０３は、ループ信号入力端子１５からのループ信号ＬＰおよびクロック切り替え器４０２からのクロックＣＫに基づいてキャプチャ信号ＣＡＰＴおよびクロック制御信号ＳＬを生成する。具体的には、キャプチャ信号発生回路４０３は、ループ信号ＬＰがＬレベルからＨレベルに変化した時点から第１の期間（ここでは、クロックＣＫの６クロックサイクルとする。）が経過した後に第２の期間（ここでは、クロックＣＫの１クロックサイクルとする。）Ｈレベルのキャプチャ信号ＣＡＰＴを出力し、それ以外のときはＬレベルのキャプチャ信号ＣＡＰＴを出力する。また、キャプチャ信号発生回路４０３は、ループ信号ＬＰのＬレベルからＨレベルへの変化に応答して第３の期間（ここでは、クロックＣＫの１３クロックサイクルとする。）Ｈレベルのクロック制御信号ＳＬを出力し、それ以外のときはＬレベルのクロック制御信号ＳＬを出力する。
【００５８】
以上のように構成されたＬＳＩ４のうちのスキャンチェーン１２０、セレクタ２０１およびテスト制御回路４００によってスキャンテスト回路が構成される。
【００５９】
＜スキャンテストの手順＞
図４に示したスキャンテスト回路によるスキャンテストの手順について図５を参照しつつ説明する。
【００６０】
（１）時刻ｔ０から時刻ｔ１までの期間
ＬＳＩ４の実際の動作速度よりも低い周波数のクロックＣＫａがクロック入力端子１３に与えられる。また、Ｌレベルのループ信号ＬＰがループ信号入力端子１５に与えられる。Ｌレベルのループ信号ＬＰに応答して、クロック切り替え器４０２はクロック入力端子１３からのクロック信号ＣＫａをクロックＣＫとして出力する。またキャプチャ信号発生回路４０３は、Ｌレベルのキャプチャ信号ＣＡＰＴを出力する。テストデータＳＩＮ（ここでは、Ｄ１−Ｄ６）がシリアルにスキャン入力端子１１に与えられる。セレクタ２０１は、スキャン入力端子１１からのテストデータＤ１−Ｄ６をスキャンチェーン１２０の入力に与える。スキャンチェーン１２０は、セレクタ２０１からのテストデータＤ１−Ｄ６をクロックＣＫに同期してシフトする。これにより、スキャンフリップフロップｆｆ６−ｆｆ１にはテストデータＤ１−Ｄ６がセットされる。
【００６１】
（２）時刻ｔ１から時刻ｔ２までの期間
外部からクロック入力端子１３へのクロックＣＫａの供給が停止される。これは、クロック切り替え時のＬＳＩ４の誤動作を防ぐためである。なお、これ以降時刻ｔ６までの期間、外部からクロック入力端子１３へのクロックＣＫａの供給が停止される。時刻ｔ１から時刻ｔ２までの期間内に、ループ信号入力端子１５に与えられるループ信号ＬＰがＬレベルからＨレベルに切り替わる。これに応答してキャプチャ信号発生回路４０３は、クロック制御信号ＳＬをＬレベルからＨレベルに切り替える。また、セレクタ２０１は、スキャンチェーン１２０の出力をスキャンチェーン１２０の入力に与える。これにより、（スキャンチェーン１２０の出力）−（セレクタ２０１）−（スキャンチェーン１２０の入力）間でループが形成される。
【００６２】
（３）時刻ｔ２から時刻ｔ３までの期間
Ｈレベルのループ信号ＬＰおよびＨレベルのクロック制御信号ＳＬに応答してクロック切り替え器４０２は、内部クロック発生回路４０１からのクロックＣＫｂをクロックＣＫとして出力する。キャプチャ信号発生回路４０３からのキャプチャ信号ＣＡＰＴはＬレベルである。スキャンチェーン１２０に格納されたテストデータＤ１−Ｄ６は、ＬＳＩ４の実際の動作速度に等しいクロックＣＫに同期して上述のループ上を巡回する。ここでは第１の期間を６クロックサイクルとしているため、時刻ｔ２から時刻ｔ３までの期間は６クロックサイクルとなる。したがって、時刻ｔ３においてスキャンフリップフロップｆｆ６−ｆｆ１には再びテストデータＤ１−Ｄ６が設定される。
【００６３】
（４）時刻ｔ３から時刻ｔ４までの期間
引き続きクロック切り替え器４０２は、内部クロック発生回路４０１からのクロックＣＫｂをクロックＣＫとして出力する。ループ信号ＬＰがＬレベルからＨレベルに変化した時点から第１の期間（６クロックサイクル）が経過したため、キャプチャ信号発生回路４０３は、第２の期間（ここでは、時刻ｔ３から時刻ｔ４までの１クロックサイクル）Ｈレベルのキャプチャ信号ＣＡＰＴを出力する。Ｈレベルのキャプチャ信号ＣＡＰＴに応答してスキャンチェーン１２０はキャプチャモードとなる。キャプチャモードとなったスキャンチェーン１２０では、テストデータＤ１−Ｄ６に対する組み合わせ回路１１０の出力Ｒ１−Ｒ６（テスト結果）がスキャンフリップフロップｆｆ６−ｆｆ１に取り込まれる。
【００６４】
（５）時刻ｔ４から時刻ｔ５までの期間
引き続きクロック切り替え器４０２は、内部クロック発生回路４０１からのクロックＣＫｂをクロックＣＫとして出力する。キャプチャ信号発生回路４０３は、Ｌレベルのキャプチャ信号ＣＡＰＴを出力する。ループ信号ＬＰはＨレベルのままである。したがって、時刻ｔ３から時刻ｔ４までの期間にスキャンフリップフロップｆｆ６−ｆｆ１に取り込まれたテスト結果Ｒ１−Ｒ６は、ＬＳＩ４の実際の動作速度に等しい周波数のクロックＣＫに同期して上述のループ上を巡回する。
【００６５】
ループ信号ＬＰがＬレベルからＨレベルに変化してから第３の期間（クロックＣＫの１３クロックサイクル）が経過すると、キャプチャ信号発生回路４０３は、クロック制御信号ＳＬをＨレベルからＬレベルへ切り替える。時刻ｔ４からこの時点までの期間は６クロックサイクルとなるため、スキャンフリップフロップｆｆ６−ｆｆ１には再びテスト結果Ｒ１−Ｒ６が設定される。
【００６６】
なお、ここでは第３の期間を１３クロックサイクルとしたけれども第３の期間はこれに限られない。例えば第３の期間を１４クロックサイクルとしたときには時刻ｔ４から第３の期間の終わりまでの期間は７クロックサイクルとなり、第３の期間が経過した時点でスキャンフリップフロップｆｆ６−ｆｆ１にはテスト結果Ｒ２−Ｒ６，Ｒ１が格納される。このように、第３の期間が経過した時点のスキャンフリップフロップｆｆ１−ｆｆ６に格納すべきテスト結果に応じて第３の期間を設定することができる。
【００６７】
（６）時刻ｔ５から時刻ｔ６までの期間
Ｌレベルのクロック制御信号ＳＬに応答してクロック切り替え器４０２は、クロック入力端子１３からのクロックＣＫａをクロックＣＫとして出力する。ところがこの期間は外部からクロック入力端子１３へのクロックＣＫａの供給が停止しているため、クロック切り替え器４０２からのクロックＣＫの出力も停止する。また、この期間内に、ループ信号入力端子１５に与えられるループ信号ＬＰがＨレベルからＬレベルに切り替わる。
【００６８】
（７）時刻ｔ６から時刻ｔ７までの期間
外部からクロック入力端子１３へふたたびクロックＣＫａが与えられる。クロック切り替え器４０２は、クロック入力端子１３からのクロックＣＫａをクロックＣＫとして出力する。また、ループ信号ＬＰおよびキャプチャ信号ＣＡＰＴはＬレベルである。スキャンチェーン１２０は、スキャンフリップフロップｆｆ６−ｆｆ１に格納されているテスト結果Ｒ１−Ｒ６をクロックＣＫに同期してシフトする。これにより、スキャン出力端子１４から外部へテスト結果ＳＯＵＴ（Ｒ１−Ｒ６）が、クロックＣＫに同期してシリアルに出力される。スキャン出力端子１４から外部へシリアルに出力されるテスト結果ＳＯＵＴは、第３の期間が経過した時点でスキャンフリップフロップｆｆ６−ｆｆ１に格納されているテスト結果の順となる。
【００６９】
＜効果＞
この発明の第２の実施形態によるＬＳＩ４におけるスキャンテスト回路では、第１の実施形態において説明した効果に加えてさらに以下の効果が得られる。
【００７０】
一般に、高速で動作するＬＳＩでは、スキャンチェーンのシフトモード／キャプチャモードの切り替えをＬＳＩの実際の動作速度に応答して外部から制御するのは困難である。しかし、このスキャンテスト回路ではキャプチャ信号発生回路４０３を設けたため、スキャンチェーン１２０のシフトモード／キャプチャモードの切り替えを外部から制御する必要がない。したがって、高速で動作するＬＳＩであっても実際の動作速度でのテストを容易に行うことができる。
【００７１】
また一般に、ＬＳＩの内部クロックを高速なクロックから低速なクロックへ切り替えるタイミングをＬＳＩの外部から直接正確に制御するのは困難である。しかしこのスキャンテスト回路では、キャプチャ信号発生回路４０３は、ループ信号ＬＰがＬレベルからＨレベルに変化してから第３の期間が経過すると自動的にクロック制御信号ＳＬをＨレベルからＬレベルに切り替え、これに応答してクロック切り替え器４０２は、クロック入力端子１３からのクロックＣＫａをクロックＣＫとして出力する。これにより、時刻ｔ５から時刻ｔ６までの期間におけるクロックＣＫの切り替え（高速なクロックから低速なクロックへの切り替え）を外部から直接に制御する必要がない。したがって、高速で動作するＬＳＩであっても実際の動作速度でのテストを容易に行うことができる。
【００７２】
また、第３の期間を適切な期間に設定することによって、スキャン出力端子１４から外部へシリアルに出力されるテスト結果の順序を所望の順序にすることができる。
【００７３】
＜なお書き＞
ここでは、時刻ｔ１からｔ２までの期間および時刻ｔ５からｔ６までの期間、外部からクロック入力端子１３へのクロックＣＫａの供給が停止しかつクロック切り替え器４０２はクロック入力端子１３からのクロックＣＫａをクロックＣＫとして出力する。これにより、クロックＣＫの停止状態を実現している。これに代えて、Ｌレベルのクロック制御信号ＳＬに応答してクロックＣＫｂの発生を停止するように内部クロック発生回路４０１を構成し、かつ、内部クロック発生回路４０１からのクロックＣＫｂをクロックＣＫとして出力するようにクロック切り替え器４０２を構成することによっても実現できる。
【００７４】
（第３の実施形態）
＜構成＞
図６は、この発明の第３の実施形態による半導体集積回路装置（ＬＳＩ）の構成を示すブロック図である。図６に示すＬＳＩ６は、図４に示したテスト制御回路４００およびスキャンフリップフロップｆｆ１−ｆｆ６に代えて、テスト制御回路６００およびスキャンフリップフロップｆｆ６１−ｆｆ６６を備える。その他の構成は図４に示したＬＳＩ４と同様である。
【００７５】
テスト制御回路６００は、内部クロック発生回路４０１と、クロック切り替え器６０１と、キャプチャ信号およびホールド信号発生回路６０２とを含む。クロック切り替え器６０１は、ループ信号入力端子１５からのループ信号ＬＰに応答して、クロック入力端子１３からのクロックＣＫａまたは内部クロック発生回路４０１からのクロックＣＫｂをクロックＣＫとして出力する。具体的には、クロック切り替え器６０１は、ループ信号ＬＰがＨレベルのときは内部クロック発生回路４０１からのクロックＣＫｂをクロックＣＫとして出力し、ループ信号ＬＰがＬレベルのときはクロック入力端子１３からのクロックＣＫａをクロックＣＫとして出力する。キャプチャ信号およびホールド信号発生回路６０２は、ループ信号入力端子１５からのループ信号ＬＰおよびクロック切り替え器６０１からのクロックＣＫに基づいてキャプチャ信号ＣＡＰＴおよびホールド信号ＨＤを生成する。具体的には、キャプチャ信号およびホールド信号発生回路６０２は、ループ信号ＬＰがＬレベルからＨレベルに変化した時点から第１の期間（ここでは、クロックＣＫの６クロックサイクルとする。）が経過した後に第２の期間（ここでは、クロックＣＫの１クロックサイクルとする。）Ｈレベルのキャプチャ信号ＣＡＰＴを出力し、それ以外のときはＬレベルのキャプチャ信号ＣＡＰＴを出力する。また、キャプチャ信号発生回路４０３は、ループ信号ＬＰがＬレベルからＨレベルに変化した時点から第３の期間（ここでは、クロックＣＫの１３クロックサイクルとする。）が経過してからループ信号ＬＰがＬレベルに変化するまでの期間Ｈレベルのホールド信号ＨＤを出力し、それ以外のときはＬレベルのホールド信号ＨＤを出力する。
【００７６】
スキャンフリップフロップｆｆ６１−ｆｆ６６は、順序回路１００に含まれていた通常のフリップフロップをスキャン動作が可能となるように置き換えたものである。スキャンフリップフロップｆｆ６１−ｆｆ６６は、シフトレジスタのように直列に接続され、クロック入力端子１３からのクロックＣＫに同期して動作する。このように接続されたスキャンフリップフロップｆｆ６１−ｆｆ６６をスキャンチェーン１２０と呼ぶ。スキャンフリップフロップｆｆ６１−ｆｆ６６は、シフトモード（キャプチャ信号ＣＡＰＴがＬレベルのとき）においてキャプチャ信号およびホールド信号発生回路６０２からのホールド信号ＨＤがＬレベルのときはシフト動作を行い、シフトモードにおいてホールド信号ＨＤがＨレベルのときはシフト動作を行わずに値を保持し続ける。このようにスキャンフリップフロップｆｆ６１−ｆｆ６６が値を保持し続ける状態を以下「ホールドモード」という。
【００７７】
以上のように構成されたＬＳＩ６のうちのスキャンチェーン１２０、セレクタ２０１およびテスト制御回路６００によってスキャンテスト回路が構成される。
【００７８】
＜スキャンフリップフロップｆｆ６１−ｆｆ６６の構成および動作＞
図７は、図６に示したスキャンフリップフロップｆｆ６１−ｆｆ６６の内部構成を示すブロック図である。図７を参照して、スキャンフリップフロップｆｆ６１−ｆｆ６６は、セレクタ７０１，７０２と、マスタラッチ７０３と、スレーブラッチ７０４と、インバータ７０５とを含む。セレクタ７０１は、Ｌレベルのホールド信号ＨＤに応答して前段のスキャンフリップフロップからのデータＳＤをセレクタ７０２に出力し、Ｈレベルのホールド信号ＨＤに応答してスレーブラッチ７０４の出力Ｑをセレクタ７０２に出力する。セレクタ７０２は、Ｌレベルのキャプチャ信号ＣＡＰＴに応答してセレクタ７０１からのデータをマスタラッチ７０３に出力し、Ｈレベルのキャプチャ信号ＣＡＰＴに応答して組み合わせ回路１１０（図６）からのデータＤをマスタラッチ７０３に出力する。マスタラッチ７０３は、クロックＣＫに応答してセレクタ７０２からのデータをラッチし当該データをスレーブラッチ７０４に出力する。インバータ７０５はクロックＣＫを反転する。スレーブラッチ７０４は、インバータ７０５からのクロックに応答してマスタラッチ７０３からのデータをラッチし当該データを出力Ｑとして出力する。
【００７９】
以上のように構成されたスキャンフリップフロップｆｆ６１−ｆｆ６６では、キャプチャ信号ＣＡＰＴがＬレベルの場合においてホールド信号ＨＤがＬレベルのときは、前段のスキャンフリップフロップからのデータＳＤがマスタラッチ７０３に与えられる。したがって、スキャンフリップフロップｆｆ６１−ｆｆ６６はシフトレジスタとして働く。一方、キャプチャ信号ＣＡＰＴがＬレベルの場合においてホールド信号ＨＤがＨレベルのときは、スレーブラッチ７０４の出力Ｑがマスタラッチ７０３に与えられる。したがって、スキャンフリップフロップｆｆ６１−ｆｆ６６は１サイクル前の値を保ち続ける。
【００８０】
＜スキャンテストの手順＞
図６に示したスキャンテスト回路によるスキャンテストの手順について図８を参照しつつ説明する。
【００８１】
（１）時刻ｔ０から時刻ｔ１までの期間
ＬＳＩ６の実際の動作速度よりも低い周波数のクロックＣＫａがクロック入力端子１３に与えられる。また、Ｌレベルのループ信号ＬＰがループ信号入力端子１５に与えられる。Ｌレベルのループ信号ＬＰに応答して、クロック切り替え器６０１はクロック入力端子１３からのクロック信号ＣＫａをクロックＣＫとして出力する。キャプチャ信号およびホールド信号発生回路６０２は、Ｌレベルのキャプチャ信号ＣＡＰＴを出力する。テストデータＳＩＮ（ここでは、Ｄ１−Ｄ６）がシリアルにスキャン入力端子１１に与えられる。セレクタ２０１は、スキャン入力端子１１からのテストデータＤ１−Ｄ６をスキャンチェーン１２０の入力に与える。スキャンチェーン１２０は、セレクタ２０１からのテストデータＤ１−Ｄ６をクロックＣＫに同期してシフトする。これにより、スキャンフリップフロップｆｆ６６−ｆｆ６１には、それぞれテストデータＤ１−Ｄ６がセットされる。
【００８２】
（２）時刻ｔ１から時刻ｔ２までの期間
外部からクロック入力端子１３へのクロックＣＫａの供給が停止される。これは、クロック切り替え時のＬＳＩ６の誤動作を防ぐためである。なお、これ以降時刻ｔ６までの期間、外部からクロック入力端子１３へのクロックＣＫａの供給が停止される。時刻ｔ１から時刻ｔ２までの期間内に、ループ信号入力端子１５に与えられるループ信号ＬＰがＬレベルからＨレベルに切り替わる。これに応答してセレクタ２０１は、スキャンチェーン１２０の出力をスキャンチェーン１２０の入力に与える。これにより、（スキャンチェーン１２０の出力）−（セレクタ２０１）−（スキャンチェーン１２０の入力）間でループが形成される。
【００８３】
（３）時刻ｔ２から時刻ｔ３までの期間
Ｈレベルのループ信号ＬＰに応答してクロック切り替え器６０１は、内部クロック発生回路４０１からのクロックＣＫｂをクロックＣＫとして出力する。キャプチャ信号およびホールド信号発生回路６０２からのキャプチャ信号ＣＡＰＴはＬレベルである。スキャンチェーン１２０に格納されたテストデータＤ１−Ｄ６は、ＬＳＩ６の実際の動作速度に等しいクロックＣＫに同期して上述のループ上を巡回する。ここでは時刻ｔ２から時刻ｔ３までの期間を６クロックサイクルとしている。したがって、時刻ｔ３においてスキャンフリップフロップｆｆ６６−ｆｆ６１には再びテストデータＤ１−Ｄ６が設定される。
【００８４】
（４）時刻ｔ３から時刻ｔ４までの期間
引き続きクロック切り替え器６０１は、内部クロック発生回路４０１からのクロックＣＫｂをクロックＣＫとして出力する。ループ信号ＬＰがＬレベルからＨレベルに変化した時点から第１の期間（６クロックサイクル）が経過したため、キャプチャ信号およびホールド信号発生回路６０２は、第２の期間（ここでは、時刻ｔ３から時刻ｔ４までの１クロックサイクル）Ｈレベルのキャプチャ信号ＣＡＰＴを出力する。Ｈレベルのキャプチャ信号ＣＡＰＴに応答してスキャンチェーン１２０はキャプチャモードとなる。キャプチャモードとなったスキャンチェーン１２０では、テストデータＤ１−Ｄ６に対する組み合わせ回路１１０の出力Ｒ１−Ｒ６（テスト結果）がスキャンフリップフロップｆｆ６６−ｆｆ６１に取り込まれる。
【００８５】
（５）時刻ｔ４から時刻ｔ５までの期間
引き続きクロック切り替え器６０１は、内部クロック発生回路４０１からのクロックＣＫｂをクロックＣＫとして出力する。キャプチャ信号およびホールド信号発生回路６０２は、Ｌレベルのキャプチャ信号ＣＡＰＴを出力する。ループ信号ＬＰはＨレベルのままである。したがって、時刻ｔ３から時刻ｔ４までの期間にスキャンフリップフロップｆｆ６６−ｆｆ６１に取り込まれたテスト結果Ｒ１−Ｒ６は、ＬＳＩ６の実際の動作速度に等しい周波数のクロックＣＫに同期して上述のループ上を巡回する。
【００８６】
ループ信号ＬＰがＬレベルからＨレベルに変化してから第３の期間（クロックＣＫの１３クロックサイクル）が経過すると、キャプチャ信号発生回路４０３は、ホールド信号ＨＤをＬレベルからＨレベルへ切り替える。時刻ｔ４からこの時点までの期間は６クロックサイクルとなるため、スキャンフリップフロップｆｆ６６−ｆｆ６１には再びテスト結果Ｒ１−Ｒ６が設定されている。これ以降、ホールド信号ＨＤがＨレベルである間スキャンフリップフロップｆｆ６６−ｆｆ６１はシフト動作を行わずにテスト結果Ｒ１−Ｒ６を保持し続ける。このようにスキャンフリップフロップｆｆ６６−ｆｆ６１がシフト動作を行わずにテスト結果Ｒ１−Ｒ６を保持し続ける状態を「ホールドモード」という。
【００８７】
ここでは、第３の期間をクロックＣＫの１３クロックサイクルとしたため、ホールド信号ＨＤがＨレベルになった時点でスキャンフリップフロップｆｆ６６−ｆｆ６１にはテスト結果Ｒ１−Ｒ６が設定される。第３の期間を変えることによって、ホールド信号ＨＤがＨレベルになった時点でスキャンフリップフロップｆｆ６１−ｆｆ６６に設定されるテスト結果が変わる。例えば、第３の期間をクロックＣＫの１２クロックサイクルとすると、ホールド信号ＨＤがＨレベルになった時点でスキャンフリップフロップｆｆ６６−ｆｆ６１にはテスト結果Ｒ６，Ｒ１−Ｒ５が設定される。したがって、第３の期間を適切に設定することによって、ホールド信号ＨＤがＨレベルになった時点のスキャンフリップフロップｆｆ６１−ｆｆ６６に所望のテスト結果を設定することができる。
【００８８】
（６）時刻ｔ５から時刻ｔ６までの期間
この期間内に、ループ信号入力端子１５に与えられるループ信号ＬＰがＨレベルからＬレベルに切り替わる。これに応答してキャプチャ信号およびホールド信号発生回路６０２はホールド信号ＨＤをＨレベルからＬレベルに切り替える。これにより、スキャンフリップフロップｆｆ６１−ｆｆ６６はホールドモードではなくなる。また、クロック切り替え器６０１は、クロック入力端子１３からのクロックＣＫａをクロックＣＫとして出力する。ところがこの期間は外部からクロック入力端子１３へのクロックＣＫａの供給が停止しているため、クロック切り替え器６０１からのクロックＣＫの出力も停止する。
【００８９】
（７）時刻ｔ６から時刻ｔ７までの期間
外部からクロック入力端子１３へふたたびクロックＣＫａが与えられる。クロック切り替え器６０１は、クロック入力端子１３からのクロックＣＫａをクロックＣＫとして出力する。また、ループ信号ＬＰ、ホールド信号ＨＤおよびキャプチャ信号ＣＡＰＴはＬレベルである。スキャンチェーン１２０は、スキャンフリップフロップｆｆ６６−ｆｆ６１に格納されているテスト結果Ｒ１−Ｒ６をクロックＣＫに同期してシフトする。これにより、スキャン出力端子１４から外部へテスト結果ＳＯＵＴ（Ｒ１−Ｒ６）が、クロックＣＫに同期してシリアルに出力される。スキャン出力端子１４から外部へシリアルに出力されるテスト結果ＳＯＵＴは、ホールド信号ＨＤがＨレベルになった時点でスキャンフリップフロップｆｆ６−ｆｆ１に格納されているテスト結果の順となる。
【００９０】
＜効果＞
この発明の第３の実施形態によるＬＳＩ６におけるスキャンテスト回路では、第１の実施形態において説明した効果に加えてさらに以下の効果が得られる。
【００９１】
キャプチャ信号およびホールド信号発生回路６０２を設けたため、スキャンチェーン１２０のシフトモード／キャプチャモードの切り替えを外部から制御する必要がない。したがって、高速で動作するＬＳＩであっても実際の動作速度でのテストを容易に行うことができる。
【００９２】
また、第３の期間を適切な期間に設定することによって、スキャン出力端子１４から外部へシリアルに出力されるテスト結果の順序を自動的に所望の順序にすることができる。
【００９３】
また、キャプチャ信号およびホールド信号発生回路６０２と、スキャンフリップフロップｆｆ６１−ｆｆ６６とを設けたため、スキャン出力端子１４から外部へシリアルに出力されるテスト結果の順序を時刻ｔ４から時刻ｔ５までの期間の長さ（クロックサイクル数）にかかわらず一定の順序にすることができる。
【００９４】
（第４の実施形態）
＜構成＞
図９は、この発明の第４の実施形態による半導体集積回路装置（ＬＳＩ）の構成を示すブロック図である。図９に示すＬＳＩ９は、図４に示したテスト制御回路４００およびスキャンフリップフロップｆｆ１−ｆｆ６に代えて、テスト制御回路９００およびスキャンフリップフロップｆｆ１−ｆｆ４を備える。その他の構成は図４に示したＬＳＩ４と同様である。
【００９５】
テスト制御回路９００は、内部クロック発生回路４０１と、クロック切り替え器９０１と、キャプチャ信号発生回路９０２と、クロック計数器９１０とを含む。クロック切り替え器９０１は、ループ信号入力端子１５からのループ信号ＬＰに応答して、クロック入力端子１３からのクロックＣＫａまたは内部クロック発生回路４０１からのクロックＣＫｂをクロックＣＫとして出力する。またクロック切り替え器９０１は、出力するクロックＣＫに応じたクロックモード信号ＣＭを出力する。具体的には、クロック切り替え器９０１は、ループ信号ＬＰがＨレベルのときは内部クロック発生回路４０１からのクロックＣＫｂをクロックＣＫとして出力し、ループ信号ＬＰがＬレベルのときはクロック入力端子１３からのクロックＣＫａをクロックＣＫとして出力する。またクロック切り替え器９０１は、内部クロック発生回路４０１からのクロックＣＫｂをクロックＣＫとして出力するときはＨレベルのクロックモード信号ＣＭを出力し、クロック入力端子１３からのクロックＣＫａをクロックＣＫとして出力するときはＬレベルのクロックモード信号ＣＭを出力する。キャプチャ信号発生回路９０２は、クロック切り替え器９０１からのクロックモード信号ＣＭおよびクロックＣＫに基づいてキャプチャ信号ＣＡＰＴを生成する。具体的には、キャプチャ信号発生回路９０２は、クロックモード信号ＣＭがＬレベルからＨレベルに変化した時点から第１の期間（ここでは、クロックＣＫの４クロックサイクルとする。）が経過した後に第２の期間（ここでは、クロックＣＫの１クロックサイクルとする。）Ｈレベルのキャプチャ信号ＣＡＰＴを出力し、それ以外のときはＬレベルのキャプチャ信号ＣＡＰＴを出力する。
【００９６】
スキャンフリップフロップｆｆ１−ｆｆ４は、順序回路１００に含まれていた通常のフリップフロップをスキャン動作が可能となるように置き換えたものである。スキャンフリップフロップｆｆ１−ｆｆ４は、シフトレジスタのように直列に接続され、クロック入力端子１３からのクロックＣＫに同期して動作する。このように接続されたスキャンフリップフロップｆｆ１−ｆｆ４をスキャンチェーン１２０と呼ぶ。スキャンチェーン１２０は、Ｈレベルのキャプチャ信号ＣＡＰＴに応答してキャプチャモードとなり、Ｌレベルのキャプチャ信号ＣＡＰＴに応答してシフトモードとなる。
【００９７】
クロック計数器９１０は、レジスタ９１１を含む。レジスタ９１１は、スキャンフリップフロップｆｆ１１，ｆｆ１２を含む。スキャンフリップフロップｆｆ１１，ｆｆ１２は、スキャン動作が可能なフリップフロップである。スキャンフリップフロップｆｆ１１，ｆｆ１２はシフトレジスタのように直列に接続されてスキャンチェーン９１２を構成する。スキャンチェーン９１２は、スキャンチェーン１２０の出力とスキャン出力端子１４との間に接続される。スキャンチェーン９１２は、クロック切り替え器９０１からのクロックモード信号ＣＭがＬレベルのときにはシフトレジスタとして働き、クロック切り替え器９０１からのクロックモード信号ＣＭがＨレベルのときには２ビットのレジスタとして働く。スキャンフリップフロップｆｆ１１，ｆｆ１２は、キャプチャ信号発生回路９０２からのキャプチャ信号ＣＡＰＴがＨレベルのとき、保持している値をクロック切り替え器９０１からのクロックＣＫに同期してリセットする（０にする）。
【００９８】
クロック計数器９１０は、クロック切り替え器９０１からのクロックモード信号ＣＭがＨレベルのとき、クロック切り替え器９０１からのクロックＣＫの立ち上がりに応答して、レジスタ９１１に格納されている値に１を加算しその結果をレジスタ９１１に格納する。このようにしてクロック計数器９１０はクロックＣＫの数をカウントする。
【００９９】
以上のように構成されたＬＳＩ９のうちのスキャンチェーン１２０、セレクタ２０１およびテスト制御回路９００によってスキャンテスト回路が構成される。
【０１００】
＜スキャンテストの手順＞
図９に示したスキャンテスト回路によるスキャンテストの手順について図１０を参照しつつ説明する。
【０１０１】
（１）時刻ｔ０から時刻ｔ１までの期間
ＬＳＩ９の実際の動作速度よりも低い周波数のクロックＣＫａがクロック入力端子１３に与えられる。また、Ｌレベルのループ信号ＬＰがループ信号入力端子１５に与えられる。Ｌレベルのループ信号ＬＰに応答してクロック切り替え器９０１は、クロック入力端子１３からのクロック信号ＣＫａをクロックＣＫとして出力するとともにＬレベルのクロックモード信号ＣＭを出力する。キャプチャ信号発生回路９０２は、Ｌレベルのキャプチャ信号ＣＡＰＴを出力する。レジスタ９１１の初期値（ここでは、０，０）およびテストデータＳＩＮ（ここでは、Ｄ１−Ｄ４）がシリアルにスキャン入力端子１１に与えられる。セレクタ２０１は、スキャン入力端子１１からの初期値０，０およびテストデータＤ１−Ｄ４をスキャンチェーン１２０の入力に与える。直列に接続されたスキャンチェーン１２０，９１２は、セレクタ２０１からの初期値０，０およびテストデータＤ１−Ｄ４をクロックＣＫに同期してシフトする。これにより、スキャンフリップフロップｆｆ１２，ｆｆ１１には初期値０，０が、スキャンフリップフロップｆｆ４−ｆｆ１にはテストデータＤ１−Ｄ４がセットされる。
【０１０２】
（２）時刻ｔ１から時刻ｔ２までの期間
外部からクロック入力端子１３へのクロックＣＫａの供給が停止される。これは、クロック切り替え時のＬＳＩ９の誤動作を防ぐためである。なお、これ以降時刻ｔ６までの期間、外部からクロック入力端子１３へのクロックＣＫａの供給が停止される。時刻ｔ１から時刻ｔ２までの期間内に、ループ信号入力端子１５に与えられるループ信号ＬＰがＬレベルからＨレベルに切り替わる。これに応答してセレクタ２０１は、スキャンチェーン１２０の出力をスキャンチェーン１２０の入力に与える。これにより、（スキャンチェーン１２０の出力）−（セレクタ２０１）−（スキャンチェーン１２０の入力）間でループが形成される。ＬレベルからＨレベルへのループ信号ＬＰの切り替わりに応答して、クロック切り替え器９０１は、クロックモード信号ＣＭをＬレベルからＨレベルに切り替える。
【０１０３】
（３）時刻ｔ２から時刻ｔ３までの期間
Ｈレベルのループ信号ＬＰに応答してクロック切り替え器９０１は、内部クロック発生回路４０１からのクロックＣＫｂをクロックＣＫとして出力する。キャプチャ信号発生回路９０２からのキャプチャ信号ＣＡＰＴはＬレベルである。スキャンチェーン１２０に格納されたテストデータＤ１−Ｄ４は、ＬＳＩ９の実際の動作速度に等しいクロックＣＫに同期して上述のループ上を巡回する。ここでは時刻ｔ２から時刻ｔ３までの期間を４クロックサイクルとしている。したがって、時刻ｔ３においてスキャンフリップフロップｆｆ４−ｆｆ１には再びテストデータＤ１−Ｄ４が設定される。
【０１０４】
クロック計数器９１０は、クロック切り替え器９０１からのクロックＣＫの立ち上がりごとに、レジスタ９１１内のスキャンチェーン９１２に格納されている値に１を加算しその結果をスキャンチェーン９１２に格納する。時刻ｔ２より前の時点でスキャンチェーン９１２には初期値として０（１０進表示）が格納されている。したがって、スキャンチェーン９１２に格納される値ＣＮＴは、クロックＣＫの立ち上がりごとに１，２，３，０（すべて１０進表示）となる。
【０１０５】
（４）時刻ｔ３から時刻ｔ４までの期間
引き続きクロック切り替え器９０１は、内部クロック発生回路４０１からのクロックＣＫｂをクロックＣＫとして出力する。クロックモード信号ＣＭがＬレベルからＨレベルに変化した時点から第１の期間（４クロックサイクル）が経過したため、キャプチャ信号発生回路９０２は、第２の期間（ここでは、時刻ｔ３から時刻ｔ４までの１クロックサイクル）Ｈレベルのキャプチャ信号ＣＡＰＴを出力する。Ｈレベルのキャプチャ信号ＣＡＰＴに応答してスキャンチェーン１２０はキャプチャモードとなる。キャプチャモードとなったスキャンチェーン１２０では、テストデータＤ１−Ｄ４に対する組み合わせ回路１１０の出力Ｒ１−Ｒ４（テスト結果）がスキャンフリップフロップｆｆ４−ｆｆ１に取り込まれる。スキャンフリップフロップｆｆ１１，ｆｆ１２は、保持している値をクロックＣＫに同期してリセットする（０にする）。
【０１０６】
（５）時刻ｔ４から時刻ｔ５までの期間
引き続きクロック切り替え器９０１は、内部クロック発生回路４０１からのクロックＣＫｂをクロックＣＫとして出力する。キャプチャ信号発生回路９０２は、Ｌレベルのキャプチャ信号ＣＡＰＴを出力する。ループ信号ＬＰおよびクロックモード信号ＣＭはＨレベルのままである。したがって、時刻ｔ３から時刻ｔ４までの期間にスキャンフリップフロップｆｆ４−ｆｆ１に取り込まれたテスト結果Ｒ１−Ｒ４は、ＬＳＩ９の実際の動作速度に等しい周波数のクロックＣＫに同期して上述のループ上を巡回する。ここでは、時刻ｔ４から時刻ｔ５までの期間を５クロックサイクルとしている。したがって時刻ｔ５においてスキャンフリップフロップｆｆ４−ｆｆ１にはテスト結果Ｒ２−Ｒ４，Ｒ１が格納される。
【０１０７】
時刻ｔ４においてスキャンチェーン９１２には０（１０進表示）が格納されている。したがって、スキャンチェーン９１２に格納される値ＣＮＴは、クロックＣＫの立ち上がりごとに１，２，３，０，１（すべて１０進表示）となる。
【０１０８】
（６）時刻ｔ５から時刻ｔ６までの期間
この期間内に、ループ信号入力端子１５に与えられるループ信号ＬＰがＨレベルからＬレベルに切り替わる。これに応答してクロック切り替え器９０１は、クロックモード信号ＣＭをＨレベルからＬレベルに切り替える。またクロック切り替え器９０１は、クロック入力端子１３からのクロックＣＫａをクロックＣＫとして出力する。ところがこの期間は外部からクロック入力端子１３へのクロックＣＫａの供給が停止しているため、クロック切り替え器９０１からのクロックＣＫの出力も停止する。
【０１０９】
（７）時刻ｔ６から時刻ｔ７までの期間
外部からクロック入力端子１３へふたたびクロックＣＫａが与えられる。クロック切り替え器９０１は、クロック入力端子１３からのクロックＣＫａをクロックＣＫとして出力する。また、ループ信号ＬＰ、クロックモード信号ＣＭおよびキャプチャ信号ＣＡＰＴはＬレベルである。直列に接続されたスキャンチェーン９１２，１２０は、スキャンフリップフロップｆｆ１２，ｆｆ１１，ｆｆ４−ｆｆ１に格納されている計数値Ｃ１２，Ｃ１１およびテスト結果Ｒ２−Ｒ４，Ｒ１をクロックＣＫに同期してシフトする。これにより、スキャン出力端子１４から外部へ計数値Ｃ１２，Ｃ１１およびテスト結果Ｒ２−Ｒ４，Ｒ１が、クロックＣＫに同期してシリアルに出力される。ここで出力される２ビットの計数値（Ｃ１２，Ｃ１１）を１０進数で表わすと１である。この計数値（Ｃ１２，Ｃ１１）は、出力されるテスト結果Ｒ２−Ｒ４，Ｒ１の順序が１クロック分ずれていることを示している。したがって、出力されたテスト結果Ｒ２−Ｒ４，Ｒ１の順序をＲ１−Ｒ４に補正する。そして補正した順序のテスト結果Ｒ１−Ｒ４と期待値とを比較する。
【０１１０】
ＬＳＩ９の実際の動作速度が高速な場合、所望の数のクロックサイクルが経過した時点でループ信号ＬＰをＨレベルからＬレベルに外部から直接に切り替えるのは困難である。実際には、ループ信号ＬＰをＬレベルからＨレベルに切り替えた後、ＬＳＩ９の内部でキャプチャが行われるのに十分な時間が経過するのを待ってからループ信号ＬＰをＬレベルに切り替える。したがって、ここでは時刻ｔ４から時刻ｔ５までの期間はクロックＣＫの５クロックサイクルとなっているけれどもこの期間が３クロックサイクルや１００クロックサイクルとなることもある。そしてスキャンアウトされるテスト結果の順序は、時刻ｔ４から時刻ｔ５までの期間のクロックサイクル数に応じてずれる。例えば時刻ｔ４から時刻ｔ５までの期間が３クロックサイクルの場合、スキャンアウトされる計数値（Ｃ１２，Ｃ１１）は３（１０進表記）、テスト結果の順序はＲ４，Ｒ１−Ｒ３となる。この計数値（Ｃ１２，Ｃ１１）は、出力されるテスト結果Ｒ４，Ｒ１−Ｒ３の順序が３クロック分ずれていることを示している。したがって、出力されたテスト結果Ｒ４，Ｒ１−Ｒ３の順序をＲ１−Ｒ４に補正する。このように、計数値（Ｃ１２，Ｃ１１）を用いてテスト結果の順序のずれを補正する。
【０１１１】
＜効果＞
この発明の第４の実施形態によるＬＳＩ９におけるスキャンテスト回路では、第１の実施形態において説明した効果に加えてさらに以下の効果が得られる。
【０１１２】
すなわち、クロック計数器９１０を設けたため、スキャンアウトされるテスト結果の順序のずれを補正することができる。
【０１１３】
＜なお書き＞
ここでは４段のスキャンフリップフロップｆｆ１−ｆｆ４によってスキャンチェーン１２０を構成したけれどもスキャンチェーン１２０を構成するスキャンフリップフロップの段数は４段に限られない。さらにスキャンチェーン１２０を構成するスキャンフリップフロップの段数に応じて、スキャンチェーン９１２を構成するスキャンフリップフロップの段数も適宜変えることが望ましい。
【０１１４】
また、ここではキャプチャ信号ＣＡＰＴを用いてスキャンフリップフロップｆｆ１１，ｆｆ１２をリセットしたけれどもスキャンフリップフロップｆｆ１１，ｆｆ１２をリセットするための信号はこれに限られない。何クロック目に発生したかを外部から特定できる信号であればよい。このような信号であればそのクロック数を用いて計数値を補正できるためである。
【０１１５】
また、内部クロック発生回路４０１からのクロックＣＫｂにクロックＣＫが切り替わってからキャプチャまでのクロックサイクル数はあらかじめ決まっている。したがって、スキャンフリップフロップｆｆ１１，ｆｆ１２をリセットしなくとも、スキャンインの際にスキャンフリップフロップｆｆ１１，ｆｆ１２に初期値を設定しておけば計数値を補正することができる。
【０１１６】
また、スキャンインの際にスキャンフリップフロップｆｆ１１，ｆｆ１２を０で初期化し、キャプチャ信号ＣＡＰＴがＨレベルになるまではスキャンフリップフロップｆｆ１１，ｆｆ１２をシフト動作させて初期値０を保持させる。キャプチャ信号ＣＡＰＴがＨレベルになった以降は、クロックＣＫの数を保持するレジスタとしてスキャンフリップフロップｆｆ１１，ｆｆ１２を機能させる。そしてスキャンアウトのときはスキャンフリップフロップｆｆ１１，ｆｆ１２をシフト動作させてクロックＣＫの数を読み出すというようにしてもよい。
【０１１７】
【発明の効果】
この発明の１つの局面に従ったスキャンテスト回路では、第１のクロックに同期して第１のスキャンチェーンにテストデータをセットし、第１のクロックの周波数よりも高い周波数を有する第２のクロックに同期して第１のスキャンチェーンにテスト結果を取り込むことができる。したがって、テスト対象となる半導体集積回路（ＬＳＩ）の動作速度が高速であっても、実際の動作速度で内部回路が正しく動くかどうかを調べるタイミングテスト（例えば、遅延故障検査など）を行うことができる。
【０１１８】
また、（第１のスキャンチェーンの出力）−（セレクタ）−（第１のスキャンチェーンの入力）間でループを形成し、第１のスキャンチェーンにセットされたテストデータをこのループ上で巡回させることができる。これにより、第２のクロックが安定した状態で高精度なタイミングテストを行うことができる。
【０１１９】
また、高価なテスタを必要としないため、テストコストの上昇を抑えることができる。
【０１２０】
また、キャプチャ信号発生手段を設けたため、第１のスキャンチェーンのシフトモード／キャプチャモードの切り替えを外部から直接に制御する必要がない。したがって、高速で動作するＬＳＩであっても実際の動作速度でのテストを容易に行うことができる。
【０１２１】
また、クロック切り替え手段を設けたため、第１のスキャンチェーンに供給するクロックの切り替えを外部から直接に制御する必要がない。したがって、高速で動作するＬＳＩであっても実際の動作速度でのテストを容易に行うことができる。
【０１２２】
また、ホールド信号発生手段を設け、第１のスキャンチェーンは活性のホールド信号を受けている間はシフト動作を行わずにデータを保持し続けるため、第１のスキャンチェーンがキャプチャモードからシフトモードに変わってから活性のホールド信号を第１のスキャンチェーンに与えるまでの期間を適切な期間に設定することによって、外部へ出力されるテスト結果の順序を所望の順序にすることができる。
【０１２３】
また、クロック計数手段を設けたため、外部へ出力されるテスト結果の順序のずれを補正することができる。
【０１２４】
この発明のもう１つの局面に従ったスキャンテスト方法では、第１のクロックに同期してテストデータをスキャンチェーンにスキャンインし、第１のクロックの周波数よりも高い周波数を有する第２のクロックに同期して第１のスキャンチェーンにテスト結果を取り込む。したがって、テスト対象となる半導体集積回路（ＬＳＩ）の動作速度が高速であっても、実際の動作速度で内部回路が正しく動くかどうかを調べるタイミングテスト（例えば、遅延故障検査など）を行うことができる。
【０１２５】
また、スキャンチェーンからの出力をスキャンチェーンの入力に与えることによってループを形成し、第２のクロックに同期してテストデータを当該ループ上で所定期間シフトする。これにより、第２のクロックが安定した状態で高精度なタイミングテストを行うことができる。
【図面の簡単な説明】
【図１】この発明の第１の実施形態によるＬＳＩの構成を示すブロック図である。
【図２】図１に示したスキャンテスト回路の動作を説明するためのタイミングチャートである。
【図３】図１に示したスキャンチェーンを分割して２つのループを形成する場合の例を示す図である。
【図４】この発明の第２の実施形態によるＬＳＩの構成を示すブロック図である。
【図５】図４に示したスキャンテスト回路の動作を説明するためのタイミングチャートである。
【図６】この発明の第３の実施形態によるＬＳＩの構成を示すブロック図である。
【図７】図６に示したスキャンフリップフロップの内部構成を示すブロック図である。
【図８】図６に示したスキャンテスト回路の動作を説明するためのタイミングチャートである。
【図９】この発明の第４の実施形態によるＬＳＩの構成を示すブロック図である。
【図１０】図９に示したスキャンテスト回路の動作を説明するためのタイミングチャートである。
【符号の説明】
１２０，９１２  スキャンチェーン
２０１  セレクタ
４０２，６０１，９０１  クロック切り替え器
４０３，９０２  キャプチャ信号発生回路
６０２  キャプチャ信号およびホールド信号発生回路
９１０  クロック係数器
ｆｆ１−ｆｆ６，ｆｆ６１−ｆｆ６６，ｆｆ１１，ｆｆ１２  スキャンフリップフロップ
ＣＫ，ＣＫａ，ＣＫｂ  クロック
ＣＡＰＴ  キャプチャ信号
ＨＤ  ホールド信号
【図１】
0004662520.tif 000002
【図２】
0004662520.tif 000003
【図３】
0004662520.tif 000004
【図４】
0004662520.tif 000005
【図５】
0004662520.tif 000006
【図６】
0004662520.tif 000007
【図７】
0004662520.tif 000008
【図８】
0004662520.tif 000009
【図９】
0004662520.tif 000010
【図１０】
0004662520.tif 000011