(57)【要約】【課題】設計時間や設計コストを増大させずに故障検出率を向上させることができる半導体集積回路を提供する。【解決手段】選択制御信号ＳＥＬ１に応じて、スキャンテスト時に出力が不定値であるＸソース１０１の出力又はクロック信号ＣＬＫＡを選択して出力するセレクタ１０８と、セレクタ１０８の出力が入力される組み合わせ回路１０２と、クロック信号ＣＬＫＢに応じて組み合わせ回路１０２の出力を保持するフリップフロップ１０３と、セレクタ１０８の出力をクロックとして動作しセレクタ１０８の出力に応じて出力を反転させるフリップフロップ１０５と、クロック信号ＣＬＫＢに応じてフリップフロップ１０５の出力を保持するフリップフロップ１０６とを有し、信号線Ｓ１０２に１縮退故障があると、スキャンテストのキャプチャー動作時にフリップフロップ１０５の出力が反転することで縮退故障が検出可能になる。【選択図】図１
2014224725.tif 000002
【特許請求の範囲】
【請求項１】
第１信号を出力する第１の回路と、
前記第１の回路の出力が入力されるとともに、第１のクロック信号又は固定信号が入力され、第１の選択制御信号に応じて一方の入力を選択して出力する第１のセレクタと、
前記第１のセレクタの出力が入力される組み合わせ回路、及びスキャンチェーンに組み込まれ第２のクロック信号により動作して前記組み合わせ回路の出力を保持する第１のフリップフロップを含む第２の回路と、
前記第１のセレクタの出力をクロックとして動作し、前記第１のセレクタの出力に応じて出力を反転させる第２のフリップフロップと、
前記スキャンチェーンに組み込まれ、前記第２のクロック信号により動作して前記第２のフリップフロップの出力を保持する第３のフリップフロップとを有することを特徴とする半導体集積回路。
【請求項２】
前記第１のクロック信号及び前記固定信号が入力され、第２の選択制御信号に応じて一方の入力を選択して出力する第２のセレクタを有し、
前記第２のセレクタの出力が、前記第１のセレクタに入力されることを特徴とする請求項１記載の半導体集積回路。
【請求項３】
前記スキャンチェーンに組み込まれ、スキャンテストのシフト動作によって設定された値を前記固定信号として出力する第４のフリップフロップを有することを特徴とする請求項２記載の半導体集積回路。
【請求項４】
テストにおける状態を、外部からの入力に応じて制御するテスト制御回路と、
前記テスト制御回路の出力から、前記第１のクロック信号、前記第１の選択制御信号、前記第２の選択制御信号、及びスキャンテストに係るスキャンイネーブル信号を生成する信号生成回路とを有することを特徴とする請求項２又は３記載の半導体集積回路。
【請求項５】
前記第１の選択制御信号が伝送される第１の信号線及び前記第２の選択制御信号が伝送される第２の信号線の少なくとも一方の信号線に縮退故障がある場合には、前記スキャンテストのキャプチャー動作時に前記第１のセレクタから前記第１のクロック信号が出力され、前記第１の信号線及び前記第２の信号線に縮退故障がない場合には、前記キャプチャー動作時に前記第１のセレクタから前記第１の回路の出力又は前記固定信号が出力されるように、前記第１の選択制御信号及び前記第２の選択制御信号を制御することを特徴とする請求項２〜４の何れか１項に記載の半導体集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体集積回路に関する。
【背景技術】
【０００２】
半導体集積回路のテストを容易にする設計手法であるＤＦＴ（Design For Testability）技術の一つに、スキャンテストがある。スキャンテスト時には、回路内のフリップフロップ（スキャンフリップフロップ）がシリアルに接続されて１つ以上のシフトレジスタを形成し、半導体集積回路の外部端子からフリップフロップを制御したり観測したりできるようにする。これにより、フリップフロップが仮想的に外部端子と見なせるため、テスト対象が順序回路から組み合わせ回路に帰着される。組み合わせ回路に対するテストパターンは、ＡＴＰＧ（Automatic Test Pattern Generation）技術により効率良く自動生成することが可能である。
【０００３】
半導体集積回路におけるテスト対象の回路内に信号値の制御や観測が困難な信号線がある場合に、故障検出率を向上させることを目的として、信号値を制御したり観測したりするためのテストポイントが挿入されることがある。信号値を制御する仕組みは制御点と呼ばれ、制御点は、信号値が変化しにくい信号線に、フリップフロップや入力端子、及び制御素子を挿入することで、信号値をフリップフロップ等で制御可能にする。信号値を観測する仕組みは観測点と呼ばれ、観測点は、外部端子やフリップフロップへ信号値が到達しにくい信号線に、フリップフロップや出力端子を分岐し接続することで、信号値をフリップフロップ等で観測可能にする。
【０００４】
半導体集積回路の故障に、回路中の信号線の値が固定してしまう縮退故障がある。縮退故障には、信号線の値が“０”に固定する０縮退故障及び信号線の値が“１”に固定する１縮退故障がある。縮退故障は、０縮退故障又は１縮退故障を仮定して、対象の信号線が故障値とは反対の値になるような信号値をテストパターンにより設定し、観測される信号値が期待値と異なることを利用して故障検出される。
【０００５】
また、後段のフリップフロップのクロック信号やクリア信号に、通常動作時には前段のフリップフロップや論理回路の出力信号を供給し、スキャンテスト時には他のフリップフロップと共通のクロック信号やクリア信号を供給するセレクタを有する半導体集積回路が提案されている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１０−１８１１６７号公報
【特許文献２】特開２００４−１６３２８７号公報
【特許文献３】特開平６−１６０４９１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
半導体集積回路のスキャンテストでは、テスト時に出力が“０”か“１”かどちらかわからない不定値Ｘである、つまり出力信号値が一意に決まらないマクロなどの回路（以下、「Ｘソース」とも称す。）があると、縮退故障を検出できない場合があり、故障検出率の低下の一要因となる。例えば、図１３に示すように、スキャンテスト時の出力が不定値ＸであるＸソース４０１と、ユーザ定義の論理回路（ＵＤＬ）４０２とが接続されるとする。ここで、論理回路４０２は、例えば、Ｘソース４０１の出力及び信号Ａが入力される論理和演算回路（ＯＲ回路）４０３と、ＯＲ回路４０３の出力が入力されるインバータ４０４と、インバータ４０４の出力及び信号Ｂが入力される論理積演算回路（ＡＮＤ回路）４０５とを有する。
【０００８】
図１３に示した回路構成において、スキャンテスト時にＸソース４０１の出力が不定値Ｘであるので、それが伝送される、論理回路４０２の入力である信号線Ｓ４０１の０縮退故障及び１縮退故障はともに検出することができない。また、信号Ａを制御してもＯＲ回路４０３の出力が伝送される信号線Ｓ４０２の信号値を“０”に確定することができないので、信号線Ｓ４０２の１縮退故障は検出することができない。また、信号Ｂを制御してもＡＮＤ回路４０５の出力が伝送される信号線Ｓ４０３の信号値を“１”に確定することができないので、信号線Ｓ４０３の０縮退故障は検出することができない。
【０００９】
それを解決する１つの方法として、図１４に示すようにＸソース４１１とユーザ定義の論理回路４１２の間に、Ｘソース４１１の出力及びテストモード信号ＴＭが入力されるＯＲ回路４１３を設け、テストモード信号ＴＭでＸソース４１１の出力をマスクする方法がある。テストモード信号ＴＭは、スキャンテスト時に“１”となり、システム動作時（通常動作時）に“０”となる。これにより、スキャンテスト時にＸソース４１１が出力する不定値Ｘが論理回路４１２に伝搬されないようにする。
【００１０】
しかし、図１４に示した回路構成において、スキャンテスト時には論理回路４１２の入力である信号線Ｓ４１１の信号値はテストモード信号ＴＭにより“０”に確定することができないので、信号線Ｓ４１１の１縮退故障は検出することができない。また、スキャンテスト時にはテストモード信号ＴＭが伝送される信号線Ｓ４１２は“０”に確定することができないので、信号線Ｓ４１２の１縮退故障は検出することができない。そのため、図１４に示した回路構成では、ＡＴＰＧが生成するテストパターンだけで故障検出を行うことは不可能であり、スキャンテストとは別にユーザファンクション試験で故障検出が行われる。これは、手作業でのテストパターンの作成と検証が必要なため、設計時間や設計コストが増大してしまう。
【００１１】
また、解決する他の方法として、図１５に示すようにＸソース４１１とユーザ定義の論理回路４１２の間に、制御用のスキャンフリップフロップ４１４及びセレクタ４１５を有するテストポイントを挿入する方法がある。セレクタ４１５は、テストモード信号ＴＭが“０”であるとき、すなわちシステム動作時（通常動作時）には、Ｘソース４１１の出力を選択して論理回路４１２に出力する。また、セレクタ４１５は、テストモード信号ＴＭが“１”であるとき、すなわちスキャンテスト時には、スキャンフリップフロップ４１４の出力を選択して論理回路４１２に出力する。なお、スキャンフリップフロップ４１４は、スキャンテスト時において値“０”又は“１”がテストパターンに応じて設定される。これにより、スキャンテスト時にＸソース４１１が出力する不定値Ｘが論理回路４１２に伝搬されないようにする。また、スキャンテストにより論理回路４１２の入力である信号線Ｓ４２１の０縮退故障及び１縮退故障が検出可能になる。
【００１２】
しかし、図１５に示した回路構成においても、スキャンテスト時にはテストモード信号ＴＭが伝送される信号線Ｓ４２２は“０”に確定することができないので、信号線Ｓ４２２の１縮退故障は検出することができない。そのため、図１５に示した回路構成においても、ＡＴＰＧが生成するテストパターンだけで故障検出を行うことは不可能である。信号線Ｓ４２２の１縮退故障の検出は、スキャンテストとは別にユーザファンクション試験で行われるので、手作業でのテストパターンの作成と検証が必要となり、設計時間や設計コストが増大してしまう。
【００１３】
本発明の目的は、設計時間や設計コストを増大させずに故障検出率を向上させることができる半導体集積回路を提供することにある。
【課題を解決するための手段】
【００１４】
半導体集積回路の一態様は、第１信号を出力する第１の回路の出力が入力されるとともに、第１のクロック信号又は固定信号が入力され、第１の選択制御信号に応じて一方の入力を選択して出力する第１のセレクタと、第１のセレクタの出力が入力される組み合わせ回路及び第２のクロック信号により動作して組み合わせ回路の出力を保持する第１のフリップフロップを含む第２の回路と、第１のセレクタの出力をクロックとして動作し、第１のセレクタの出力に応じて出力を反転させる第２のフリップフロップと、第２のクロック信号により動作して第２のフリップフロップの出力を保持する第３のフリップフロップとを有する。
【発明の効果】
【００１５】
開示の半導体装置は、第１の選択制御信号が伝送される信号線に縮退故障があると、スキャンテストのキャプチャー動作時に第１のセレクタから第１のクロック信号が出力され、第２のフリップフロップの出力が反転して期待値とは異なる値になる。これにより、スキャンテストによって第１の選択制御信号が伝送される信号線の縮退故障を検出することができ、設計時間や設計コストを増大させずに故障検出率を向上させることができる。
【図面の簡単な説明】
【００１６】
【図１】本発明の実施形態における半導体集積回路の構成例を示す図である。
【図２】本実施形態における半導体集積回路の動作を説明するための図である。
【図３】本実施形態における半導体集積回路の動作例を示す図である。
【図４】本実施形態における半導体集積回路の他の動作例を示す図である。
【図５】本実施形態における半導体集積回路の他の動作例を示す図である。
【図６】本実施形態における半導体集積回路の他の動作例を示す図である。
【図７】本実施形態における半導体集積回路の例を示す図である。
【図８】本実施形態における半導体集積回路の他の構成例を示す図である。
【図９】本実施形態における半導体集積回路の他の構成例を示す図である。
【図１０】本実施形態における半導体集積回路の他の構成例を示す図である。
【図１１】本実施形態をクロックライン上に適用する場合の例を示す図である。
【図１２】テスト制御回路の出力を用いた制御信号の生成例を示す図である。
【図１３】縮退故障を検出できない場合の例を示す図である。
【図１４】従来技術の例を示す図である。
【図１５】従来技術の他の例を示す図である。
【発明を実施するための形態】
【００１７】
以下、本発明の実施形態を図面に基づいて説明する。
【００１８】
図１は、本発明の一実施形態における半導体集積回路の構成例を示す図である。図１には、本実施形態における半導体集積回路の要素的特徴を含む一部構成を図示している。本実施形態における半導体集積回路１００は、Ｘソース１０１、組み合わせ回路１０２、フリップフロップ（スキャンフリップフロップ）１０３、１０４、１０５、１０６、セレクタ１０７、１０８、インバータ１０９、論理和演算回路（ＯＲ回路）１１１、バッファ１１３、スリーステートバッファ１１４、及びハードマクロ１１５を有する。半導体集積回路１００には、制御信号ＣＬＫＡ、ＣＬＫＢ、ＳＥＬ１、ＳＥＬ２、ＳＥＮ、ＴＭ、ＴＰＲＳＴがそれぞれ外部端子より入力される。
【００１９】
図１において、フリップフロップ１０３は、通常のスキャンフリップフロップであり、フリップフロップ１０４、１０５、１０６は、テストポイントとして挿入するスキャンフリップフロップである。また、図１において、破線はスキャンチェーンの一部を示しており、図１に示す例では、フリップフロップ１０４、１０３、１０６がスキャンチェーンＡに組み込まれ、フリップフロップ１０５がスキャンチェーンＢに組み込まれている。
【００２０】
Ｘソース１０１は、第１の回路の一例としてのデジタル信号を出力する回路であり、スキャンテスト時に出力が“０”又は“１”に確定せずに不定値Ｘである、つまり出力信号値が一意に決まらないマクロなどの回路である。なお、Ｘソース１０１は、システム動作時（通常動作時）には、図示しない入力等に応じた動作結果を出力する。本実施形態では、Ｘソース１０１から出力される信号はデジタル信号である。
【００２１】
Ｘソース１０１が出力する信号値は、後述するようにスキャンテストでのキャプチャー動作において一定期間（少なくとも期間ＴＫの間）、“０”又は“１”の一定値に維持されれば良く、スキャンテストの全期間に亘って一定でなくとも良い。Ｘソース１０１は、例えばＤＲＡＭ（Dynamic Random Access Memory）マクロ、ＳＲＡＭ（Static Random Access Memory）マクロ、スキャンチェーンに組み込まないＤフリップフロップやＤラッチを含むマクロなどである。
【００２２】
組み合わせ回路１０２は、ユーザ定義の組み合わせ回路であり、セレクタ１０８の出力が入力される。フリップフロップ１０３〜１０６は、入力されるスキャンイネーブル信号（スキャンモード信号）ＳＥＮが“１”であるときにシフトモードとなり、スキャンイネーブル信号ＳＥＮが“０”であるときに非シフトモードとなる。フリップフロップ１０３、１０４、１０６は、入力されるクロック信号ＣＬＫＢをクロックとして動作して入力される値を保持し、フリップフロップ１０５は、入力されるセレクタ１０８の出力の反転信号をクロックとして動作して入力される値を保持する。
【００２３】
フリップフロップ１０３は、シフトモード時にはスキャンチェーンＡにおける前段のフリップフロップの出力を入力として受け、非シフトモード時（シフトモード時以外）には組み合わせ回路１０２の出力を入力として受ける。フリップフロップ１０４は、シフトモード時にはスキャンチェーンＡにおける前段のフリップフロップの出力を入力として受け、非シフトモード時には接続される組み合わせ回路の出力を入力として受ける。
【００２４】
また、フリップフロップ１０５は、シフトモード時にはスキャンチェーンＢにおける前段のフリップフロップの出力を入力として受け、非シフトモード時にはインバータ１０９により反転された自らの出力を入力として受ける。すなわち、フリップフロップ１０５は、非シフトモード時にはセレクタ１０８の出力が立ち下がる度に出力を反転させる。フリップフロップ１０６は、シフトモード時にはスキャンチェーンＡにおける前段のフリップフロップの出力を入力として受け、非シフトモード時にはフリップフロップ１０５の出力を入力として受ける。
【００２５】
また、フリップフロップ１０５は、リセット信号ＴＰＲＳＴが入力され、リセット信号ＴＰＲＳＴが“０”であるときにリセットされて出力値が“０”になる。なお、リセット信号ＴＰＲＳＴは、テストポイントとして挿入されるフリップフロップ１０５用のリセット信号であり、半導体集積回路１００内の各回路をリセットするための通常のリセット信号とは異なる信号である。
【００２６】
セレクタ１０７は、バッファ１１３を介して入力される選択制御信号ＳＥＬ２に応じて、フリップフロップ１０４の出力又はクロック信号ＣＬＫＡの一方を選択して出力する。セレクタ１０７は、選択制御信号ＳＥＬ２が“０”であるときにはフリップフロップ１０４の出力を選択して出力し、選択制御信号ＳＥＬ２が“１”であるときにはクロック信号ＣＬＫＡを選択して出力する。セレクタ１０８は、入力される選択制御信号ＳＥＬ１に応じて、Ｘソース１０１の出力又はセレクタ１０７の出力の一方を選択して出力する。セレクタ１０８は、選択制御信号ＳＥＬ１が“０”であるときにはＸソース１０１の出力を選択して出力し、選択制御信号ＳＥＬ１が“１”であるときにはセレクタ１０７の出力を選択して出力する。
【００２７】
ＯＲ回路１１１は、テストモード信号ＴＭ及び図示しないユーザ定義の論理回路からの信号が入力され、その演算結果を出力する。ＯＲ回路１１１の出力は、例えば図１に例示した信号ＳＥＬ２が入力される入出力端子のように双方向制御回路が有するバッファ１１３、スリーステートバッファ１１４の制御に用いられる。本実施形態では、例えばテストモード信号ＴＭが“１”であるときにスリーステートバッファ１１４がオフ状態になり、信号ＳＥＬ２の入出力端子について入力状態に固定する。ハードマクロ１１５は、テストモード信号ＴＭが“１”であるときにテストモードに設定されてテスト用の動作に切り替わるマクロである。
【００２８】
図２（Ａ）は、本実施形態における半導体集積回路の各動作での制御信号ＳＥＬ１、ＳＥＬ２、ＳＥＮ、ＴＰＲＳＴを説明するための図である。動作モードＭＤａは、システム動作（通常動作）を行う動作モードであり、選択制御信号ＳＥＬ１は“０”にし、スキャンイネーブル信号ＳＥＮは“０”にし、リセット信号ＴＰＲＳＴは“０”にする。なお、選択制御信号ＳＥＬ２は任意であり、テストモード信号ＴＭは“０”である。
【００２９】
動作モードＭＤｂは、スキャンテストにおけるシフト動作を行う動作モードであり、選択制御信号ＳＥＬ１は“１”にし、選択制御信号ＳＥＬ２は“１”にし、スキャンイネーブル信号ＳＥＮは“１”にし、リセット信号ＴＰＲＳＴは“１”にする。なお、テストモード信号ＴＭは“１”である。動作モードＭＤｃは、スキャンテストにおける第１のキャプチャー動作を行う動作モードであり、選択制御信号ＳＥＬ１は“０”にし、選択制御信号ＳＥＬ２は“１”にし、スキャンイネーブル信号ＳＥＮは“０”にし、リセット信号ＴＰＲＳＴは“１”にする。なお、テストモード信号ＴＭは“１”である。
【００３０】
動作モードＭＤｄは、スキャンテストにおける第２のキャプチャー動作を行う動作モードであり、選択制御信号ＳＥＬ１は“１”にし、選択制御信号ＳＥＬ２は“０”にし、スキャンイネーブル信号ＳＥＮは“０”にし、リセット信号ＴＰＲＳＴは“１”にする。なお、テストモード信号ＴＭは“１”である。動作モードＭＤｅは、スキャンテストにおけるスキャンフリップフロップの非同期リセット故障検出を行う動作モードであり、選択制御信号ＳＥＬ１は“１”にし、選択制御信号ＳＥＬ２は“１”にし、リセット信号ＴＰＲＳＴは“０”にする。なお、スキャンイネーブル信号ＳＥＮは任意であり、テストモード信号ＴＭは“１”である。
【００３１】
本実施形態によれば、各動作モードＭＤｂ〜ＭＢｅを適宜組み合わせてスキャンテストを実行することで、図２（Ｂ）に示すように各信号線における０縮退故障及び１縮退故障を検出することができる。例えば、本実施形態では、従来の手法で検出できなかった信号線Ｓ１０２（図１４や図１５に示したテストモードＴＭが伝送される信号線に相当）の１縮退故障を検出することができる。また、本実施形態では、追加した回路部分の信号線Ｓ１０１、Ｓ１０３の０縮退故障及び１縮退故障も検出することができる。したがって、半導体集積回路における未検出故障を減らし、半導体集積回路（チップ）の品質を向上させることが可能になる。また、スキャンテストでの故障検出が可能であるので、ＡＴＰＧでテストパターンを効率良く自動生成することが可能になり、半導体集積回路の設計時間や設計コストを削減することができる。
【００３２】
以下に、図２（Ｂ）に示した各縮退故障の検出を行う際の動作についてそれぞれ説明する。なお、以下の説明において、本実施形態における半導体集積回路の構成は簡略して示し、スキャンイネーブル信号ＳＥＮと、テストモード信号ＴＭ及びそれを受ける回路とは図示を省略し、選択制御信号ＳＥＬ２が入力される入出力端子を入力端子として図示する。また、各動作のタイミングチャートにおいて、スキャンテストのシフト動作におけるクロック信号ＣＬＫＡ、ＣＬＫＢは、１パルスだけを図示しているが、スキャンチェーンＡ、Ｂに組み込まれたフリップフロップの数に応じた複数のパルスが入力される。
【００３３】
図３は、本実施形態における半導体集積回路の動作例を示す図である。図３に例示する動作は、信号線Ｓ１０１、Ｓ１０２、Ｓ１０３の０縮退故障と、信号線Ｓ１０４の０縮退故障及び１縮退故障とを検出することができる。
【００３４】
図３（Ａ）に示すように、まず、時刻Ｔ１１〜Ｔ１２において、半導体集積回路を動作モードＭＤｂで動作させる。すなわち、選択制御信号ＳＥＬ１は“１”にし、選択制御信号ＳＥＬ２は“１”にし、スキャンイネーブル信号ＳＥＮは“１”にし、リセット信号ＴＰＲＳＴは“１”にする。このとき、フリップフロップ１０３、１０４、１０６は、シフトモードとなってスキャンチェーンＡにおける前段のフリップフロップの出力を入力として受け、クロック信号ＣＬＫＢに応じてシフト動作を行う。また、フリップフロップ１０５は、シフトモードとなってスキャンチェーンＢにおける前段のフリップフロップの出力を入力として受け、図３（Ｂ）に示すようにセレクタ１０７及び１０８を介して供給されるクロック信号ＣＬＫＡに応じてシフト動作を行う。これにより、フリップフロップ１０３、１０４、１０５、１０６のそれぞれに値を設定する。
【００３５】
ここで、信号線Ｓ１０１、Ｓ１０２、Ｓ１０３の少なくとも１つにおいて０縮退故障があると、フリップフロップ１０５は、クロック信号ＣＬＫＡが供給されない、あるいは常にリセットされている状態となる。この場合には、スキャンチェーンＢにおいては値を正しくシフトさせることができない。したがって、チェーンテストによって、信号線Ｓ１０１、Ｓ１０２、Ｓ１０３における０縮退故障が検出可能になる。また、例えばフリップフロップ１０５に設定された値を、次のキャプチャー動作によってフリップフロップ１０６に取り込み、期待値と比較することでも検出可能である。
【００３６】
次に、時刻Ｔ１２〜Ｔ１３において、半導体集積回路を動作モードＭＤｄで動作させる。すなわち、選択制御信号ＳＥＬ１は“１”にし、選択制御信号ＳＥＬ２は“０”にし、スキャンイネーブル信号ＳＥＮは“０”にし、リセット信号ＴＰＲＳＴは“１”にする。このとき、フリップフロップ１０３、１０４、１０５、１０６は、キャプチャーモードとなる。また、図３（Ｃ）に示すようにフリップフロップ１０４の出力がセレクタ１０７及び１０８を介して組み合わせ回路１０２に入力される。そして、時刻Ｔ１６において、クロック信号ＣＬＫＢが入力されると、フリップフロップ１０３は、組み合わせ回路１０２の出力を取り込んで保持する。
【００３７】
つまり、フリップフロップ１０４がフリップフロップ１０３の制御用のテストポイントとして機能する。したがって、前述した時刻Ｔ１１〜Ｔ１２のシフト動作によりフリップフロップ１０４に“０”を設定することで信号線Ｓ１０４の１縮退故障が検出可能になり、“１”を設定することで信号線Ｓ１０４の０縮退故障が検出可能になる。
【００３８】
次に、時刻Ｔ１３〜Ｔ１４において、半導体集積回路を動作モードＭＤｅで動作させる。すなわち、選択制御信号ＳＥＬ１は“１”にし、選択制御信号ＳＥＬ２は“１”にし、リセット信号ＴＰＲＳＴは“０”にする。フリップフロップ１０５にクロック信号として反転入力される信号は、フリップフロップ１０４の値によっては時刻Ｔ１３、Ｔ１６において立ち下がる可能性があり、フリップフロップ１０５の出力値も変わる可能性がある。そこで、フリップフロップ１０５の出力値を確定させるためにリセット信号ＴＰＲＳＴを“０”にして、フリップフロップ１０５をリセットし、その出力値を“０”にする。
【００３９】
続いて、時刻Ｔ１４〜Ｔ１５において、半導体集積回路を動作モードＭＤｂで動作させる。すなわち、選択制御信号ＳＥＬ１は“１”にし、選択制御信号ＳＥＬ２は“１”にし、スキャンイネーブル信号ＳＥＮは“１”にし、リセット信号ＴＰＲＳＴは“１”にする。これにより、スキャンチェーンＡではクロック信号ＣＬＫＢに応じたシフト動作を行ってフリップフロップ１０３、１０４、１０６の値を取り出し、スキャンチェーンＢではクロック信号ＣＬＫＡに応じたシフト動作を行ってフリップフロップ１０５の値を取り出す。
【００４０】
以上のように、図３（Ａ）のタイミングチャートに示すようにしてスキャンテストを実行することで、信号線Ｓ１０１、Ｓ１０２、Ｓ１０３の０縮退故障と、信号線Ｓ１０４の０縮退故障及び１縮退故障の検出を行うことができる。
【００４１】
図４は、本実施形態における半導体集積回路の他の動作例を示す図である。図４に例示する動作は、信号線Ｓ１０３の１縮退故障を検出することができる。時刻Ｔ２１〜Ｔ２２において、半導体集積回路を動作モードＭＤｂで動作させ、図３に示した時刻Ｔ１１〜Ｔ１２と同様にしてスキャンチェーンＡ、Ｂでシフト動作を行う。
【００４２】
次に、時刻Ｔ２２〜Ｔ２３において、半導体集積回路を動作モードＭＤｅで動作させ、リセット信号ＴＰＲＳＴを“０”にして、フリップフロップ１０５をリセットし、フリップフロップ１０５の出力値を“０”にする。続いて、時刻Ｔ２３〜Ｔ２４において、半導体集積回路を動作モードＭＤｂで動作させ、図３に示した時刻Ｔ１４〜Ｔ１５と同様にしてスキャンチェーンＡ、Ｂでシフト動作を行い、フリップフロップ１０３〜１０６の値を取り出す。
【００４３】
図４のタイミングチャートに示すようにしてスキャンテストを実行したとき、信号線Ｓ１０３において１縮退故障があると、リセット信号ＴＰＲＳＴを“０”にしてもフリップフロップ１０５がリセットされない。したがって、フリップフロップ１０５に“１”を設定し、リセット信号ＴＰＲＳＴを“０”にした後のフリップフロップ１０５の出力値を観測することで、信号線Ｓ１０３の１縮退故障の検出を行うことができる。
【００４４】
図５は、本実施形態における半導体集積回路の他の動作例を示す図である。図５に例示する動作は、信号線Ｓ１０２の１縮退故障を検出することができる。なお、Ｘソース１０１は、キャプチャー動作の開始から次にクロック信号ＣＬＫＢが立ち上がるまでの期間ＴＫにおいては、出力する信号値が一定値（“０”又は“１”）であるとする。図５（Ａ）に示すように、時刻Ｔ３１〜Ｔ３２において、半導体集積回路を動作モードＭＤｂで動作させ、図３に示した時刻Ｔ１１〜Ｔ１２と同様にしてスキャンチェーンＡ、Ｂでシフト動作を行う。
【００４５】
次に、時刻Ｔ３２〜Ｔ３４において、半導体集積回路を動作モードＭＤｃで動作させる。すなわち、選択制御信号ＳＥＬ１は“０”にし、選択制御信号ＳＥＬ２は“１”にし、スキャンイネーブル信号ＳＥＮは“０”にし、リセット信号ＴＰＲＳＴは“１”にする。このとき、フリップフロップ１０３〜１０６は、キャプチャーモードとなる。そして、時刻Ｔ３２〜Ｔ３３においてクロック信号ＣＬＫＡを入力し（１パルス）、その後の時刻Ｔ３３〜Ｔ３４においてクロック信号ＣＬＫＢを入力する（１パルス）。
【００４６】
この時刻Ｔ３２〜Ｔ３４においては、信号線Ｓ１０２において１縮退故障がなければ、図５（Ｂ）に点線で示すようにＸソース１０１の出力がセレクタ１０８を介してフリップフロップ１０５にクロック信号として入力される。期間ＴＫにおいては、Ｘソース１０１が出力する信号値は一定であるので、フリップフロップ１０５にクロック信号として入力される信号が立ち下がることはなく、フリップフロップ１０５は時刻Ｔ３１〜Ｔ３２のシフト動作により設定された値を保持している。したがって、クロック信号ＣＬＫＢが立ち上がる時刻Ｔ３８において、時刻Ｔ３１〜Ｔ３２のシフト動作によりフリップフロップ１０５に設定された値が、フリップフロップ１０６に取り込まれて保持される。
【００４７】
一方、信号線Ｓ１０２において１縮退故障があると、図５（Ｂ）に一点鎖線で示すようにクロック信号ＣＬＫＡがセレクタ１０７及び１０８を介してフリップフロップ１０５にクロック信号として入力される。そのため、時刻Ｔ３７において、フリップフロップ１０５にクロック信号として入力されるクロック信号ＣＬＫＡが立ち下がることで、フリップフロップ１０５は時刻Ｔ３１〜Ｔ３２のシフト動作により設定された値を反転した値を保持する。したがって、その後にクロック信号ＣＬＫＢが立ち上がる時刻Ｔ３８において、時刻Ｔ３１〜Ｔ３２のシフト動作により設定された値を反転した値が、フリップフロップ１０６に取り込まれて保持される。
【００４８】
次に、時刻Ｔ３４〜Ｔ３５において、半導体集積回路を動作モードＭＤｅで動作させ、リセット信号ＴＰＲＳＴを“０”にして、フリップフロップ１０５をリセットし、フリップフロップ１０５の出力値を“０”にする。続いて、時刻Ｔ３５〜Ｔ３６において、半導体集積回路を動作モードＭＤｂで動作させ、図３に示した時刻Ｔ１４〜Ｔ１５と同様にしてスキャンチェーンＡ、Ｂでシフト動作を行い、フリップフロップ１０３〜１０６の値を取り出す。
【００４９】
以上のように、図５（Ａ）のタイミングチャートに示すようにしてスキャンテストを実行し、フリップフロップ１０６から取り出された値と期待値とを比較する。信号線Ｓ１０２において１縮退故障がある場合には、フリップフロップ１０６から取り出された値は期待値とは異なるので、信号線Ｓ１０２の１縮退故障の検出を行うことができる。
【００５０】
図６は、本実施形態における半導体集積回路の他の動作例を示す図である。図６に例示する動作は、信号線Ｓ１０１の１縮退故障を検出することができる。図６（Ａ）に示すように、時刻Ｔ４１〜Ｔ４２において、半導体集積回路を動作モードＭＤｂで動作させ、図３に示した時刻Ｔ１１〜Ｔ１２と同様にしてスキャンチェーンＡ、Ｂでシフト動作を行う。次に、時刻Ｔ４２〜Ｔ４４において、半導体集積回路を動作モードＭＤｄで動作させ、時刻Ｔ４２〜Ｔ４３においてクロック信号ＣＬＫＡを入力し（１パルス）、その後の時刻Ｔ４３〜Ｔ４４においてクロック信号ＣＬＫＢを入力する（１パルス）。
【００５１】
この時刻Ｔ４２〜Ｔ４４においては、信号線Ｓ１０１において１縮退故障がなければ、図６（Ｂ）に点線で示すようにフリップフロップ１０４の出力がセレクタ１０７及び１０８を介してフリップフロップ１０５にクロック信号として入力される。期間ＴＫにおいては、フリップフロップ１０４の出力値は一定であるので、フリップフロップ１０５にクロック信号として入力される信号が立ち下がることはなく、フリップフロップ１０５は時刻Ｔ４１〜Ｔ４２のシフト動作により設定された値を保持している。したがって、クロック信号ＣＬＫＢが立ち上がる時刻Ｔ４８において、時刻Ｔ４１〜Ｔ４２のシフト動作によりフリップフロップ１０５に設定された値が、フリップフロップ１０６に取り込まれて保持される。
【００５２】
一方、信号線Ｓ１０１において１縮退故障があると、図６（Ｂ）に一点鎖線で示すようにクロック信号ＣＬＫＡがセレクタ１０７及び１０８を介してフリップフロップ１０５にクロック信号として入力される。そのため、時刻Ｔ４７において、フリップフロップ１０５にクロック信号として入力されるクロック信号ＣＬＫＡが立ち下がることで、フリップフロップ１０５は時刻Ｔ４１〜Ｔ４２のシフト動作により設定された値を反転した値を保持する。したがって、その後にクロック信号ＣＬＫＢが立ち上がる時刻Ｔ４８において、時刻Ｔ４１〜Ｔ４２のシフト動作により設定された値を反転した値が、フリップフロップ１０６に取り込まれて保持される。
【００５３】
次に、時刻Ｔ４４〜Ｔ４５において、半導体集積回路を動作モードＭＤｅで動作させ、リセット信号ＴＰＲＳＴを“０”にして、フリップフロップ１０５をリセットし、フリップフロップ１０５の出力値を“０”にする。続いて、時刻Ｔ４５〜Ｔ４６において、半導体集積回路を動作モードＭＤｂで動作させ、図３に示した時刻Ｔ１４〜Ｔ１５と同様にしてスキャンチェーンＡ、Ｂでシフト動作を行い、フリップフロップ１０３〜１０６の値を取り出す。
【００５４】
以上のように、図６（Ａ）のタイミングチャートに示すようにしてスキャンテストを実行し、フリップフロップ１０６から取り出された値と期待値とを比較する。信号線Ｓ１０１において１縮退故障がある場合には、フリップフロップ１０６から取り出された値は期待値とは異なるので、信号線Ｓ１０１の１縮退故障の検出を行うことができる。
【００５５】
なお、前述した信号線Ｓ１０３の１縮退故障の検出を行う図４に示した動作以外の動作では、スキャンテストにおけるキャプチャー動作とシフト動作との間のリセット動作を省略することが可能である。この場合には、フリップフロップ１０５については期待値をとらないように設定し、ＡＴＰＧがフリップフロップ１０５の期待値をとらないようマスクする処理を行うようにすれば良い。
【００５６】
また、スキャンテストにおけるキャプチャー動作の開始前に、フリップフロップ１０５に“０”又は“１”の値が設定可能であれば、フリップフロップ１０５はスキャンチェーンに組み込まなくとも良い。例えば、シフト動作とキャプチャー動作との間に、フリップフロップ１０５をリセットするリセット動作を追加することで、キャプチャー動作の開始前にフリップフロップ１０５の値を“０”に設定することができる。また、信号線Ｓ１０１の１縮退故障及び信号線Ｓ１０２の１縮退故障の検出については、スキャンテストのＡＴＰＧを用いずに、専用のツールを用いてテストパターンを生成して行うようにしても良い。信号線Ｓ１０１の１縮退故障及び信号線Ｓ１０２の１縮退故障の検出については入力するテストパターンが決まっているので、ＡＴＰＧを用いなくとも、設計時間や設計コストが大きく増大することはない。
【００５７】
また、テスト対象とする複数の回路のそれぞれに対してテストポイントを別々に挿入せずに、複数の回路でテストポイントを共有するようにしても良い。すなわち、テスト対象の複数の回路のそれぞれに対して、図１に示したフリップフロップ１０４〜１０６、セレクタ１０７、１０８、及びインバータ１０９を設けずに、これらの一部を複数の回路で共有するようにしても良い。
【００５８】
例えば、図７に示すように、フリップフロップ１０４とセレクタ１０７とをブロック０（１５１）、フリップフロップ１０５とインバータ１０９とをブロック１（１５２）、フリップフロップ１０６をブロック２（１５３）とする。そして、図８〜図１０に示すように、第１の対象回路（ＸソースＡ１０１Ａ、組み合わせ回路１０２Ａ、フリップフロップ１０３Ａ）及び第２の対象回路（ＸソースＢ１０１Ｂ、組み合わせ回路１０２Ｂ、フリップフロップ１０３Ｂ）に前述のテストポイントを挿入するとする。
【００５９】
このとき、第１の対象回路及び第２の対象回路のそれぞれに対してテストポイントを別々に挿入すると、図８（Ａ）、図９（Ａ）、図１０（Ａ）に示す構成となる。すなわち、第１の対象回路に対してブロック０（１５１Ａ）、ブロック１（１５２Ａ）、ブロック２（１５３Ａ）、及びセレクタ１０８Ａを設け、第２の対象回路に対してブロック０（１５１Ｂ）、ブロック１（１５２Ｂ）、ブロック２（１５３Ｂ）、及びセレクタ１０８Ｂを設けた構成となる。このような構成とはせずに、第１の対象回路と第２の対象回路とで、例えばブロック０を共有したり、ブロック１及びブロック２を共有したり、ブロック２を共有したりするようにしても良い。
【００６０】
図８（Ｂ）は、第１の対象回路と第２の対象回路とでブロック０を共有している例を示している。第１の対象回路に対してブロック１（１５２Ａ）、ブロック２（１５３Ａ）、及びセレクタ１０８Ａを設け、第２の対象回路に対してブロック１（１５２Ｂ）、ブロック２（１５３Ｂ）、及びセレクタ１０８Ｂを設ける。ブロック０（１５１Ｃ）は、第１の対象回路と第２の対象回路とで共有し、ブロック０（１５１Ｃ）のセレクタ１０７の出力がセレクタ１０８Ａ及び１０８Ｂに入力される。
【００６１】
また、図９（Ｂ）は、第１の対象回路と第２の対象回路とでブロック１及びブロック２を共有している例を示している。第１の対象回路に対してブロック０（１５１Ａ）及びセレクタ１０８Ａを設け、第２の対象回路に対してブロック０（１５１Ｂ）及びセレクタ１０８Ｂを設ける。ブロック１（１５２Ｃ）及びブロック２（１５３Ｃ）は、第１の対象回路と第２の対象回路とで共有する。第１の対象回路に対して設けたセレクタ１０８Ａの出力及び第２の対象回路に対して設けた１０８Ｂの出力がＯＲ回路１５４に入力され、そのＯＲ回路１５４の出力がブロック１（１５２Ｃ）のフリップフロップ１０５にクロック信号として入力される。
【００６２】
また、図１０（Ｂ）は、第１の対象回路と第２の対象回路とでブロック２を共有している例を示している。第１の対象回路に対してブロック０（１５１Ａ）、ブロック１（１５２Ａ）、及びセレクタ１０８Ａを設け、第２の対象回路に対してブロック０（１５１Ｂ）、ブロック１（１５２Ｂ）、及びセレクタ１０８Ｂを設ける。ブロック２（１５３Ｄ）は、第１の対象回路と第２の対象回路とで共有する。第１の対象回路に対して設けたブロック１（１５２Ａ）のフリップフロップ１０５の出力、及び第２の対象回路に対して設けたブロック１（１５２Ｂ）のフリップフロップ１０５の出力が、排他的論理和演算回路（ＥＸＯＲ回路）１５５に入力される。ＥＸＯＲ回路１５５の出力が、ブロック２（１５３Ｄ）のフリップフロップ１０６に入力される。
【００６３】
なお、第１の対象回路と第２の対象回路とで、ブロック０を共有するとともにブロック１及びブロック２を共有するようにしても良いし、ブロック０を共有するとともにブロック２を共有するようにしても良い。このようにテスト対象とする複数の回路でテストポイントを共有することで、テストポイントの挿入による回路面積の増大を抑制することができる。
【００６４】
また、図１１（Ａ）に示すようなクロックライン上に本実施形態による試験技術を適用することも可能である。図１１（Ａ）に示す例は、フリップフロップ２０１に対し、セレクタ２０２が、選択制御信号ＳＥＬ１に応じて、クロック信号Ｓｙｓｔｅｍ  ｃｌｏｃｋ又はクロック信号ＴＣＬＫの一方を選択しクロック信号として出力するものである。セレクタ２０２は、選択制御信号ＳＥＬ１が“０”であるときにはクロック信号Ｓｙｓｔｅｍ  ｃｌｏｃｋを選択して出力し、選択制御信号ＳＥＬ１が“１”であるときにはクロック信号ＴＣＬＫを選択して出力する。スキャンテスト時にはクロック信号ＴＣＬＫが使用され、クロック信号Ｓｙｓｔｅｍ  ｃｌｏｃｋは不定である。
【００６５】
ここで、クロック信号ＴＣＬＫがクロック信号ＣＬＫＢと異なり、かつクロック信号Ｓｙｓｔｅｍ  ｃｌｏｃｋが、スキャンテスト時にキャプチャー動作の開始から次にクロック信号ＣＬＫＢが立ち上がるまでの期間ＴＫにおいて出力値が一定であれば、図１１（Ｂ）に示すように構成することで各信号線の縮退故障を検出することができる。クロック信号ＣＬＫＢは、フリップフロップ２０４の動作クロックである。
【００６６】
図１１（Ｂ）において、フリップフロップ２０３、２０４は、テストポイントとして挿入するスキャンフリップフロップであり、任意のスキャンチェーンに組み込まれている。フリップフロップ２０３、２０４は、入力されるスキャンイネーブル信号ＳＥＮが“１”であるときにシフトモードとなり、スキャンイネーブル信号ＳＥＮが“０”であるときに非シフトモードとなる。フリップフロップ２０３には、セレクタ２０２の出力の反転信号が動作クロックとして入力され、フリップフロップ２０４には、クロック信号ＣＬＫＢが動作クロックとして入力される。
【００６７】
フリップフロップ２０３は、シフトモード時にはスキャンチェーンにおける前段のフリップフロップの出力を入力として受け、非シフトモード時にはインバータ２０５により反転された自らの出力を入力として受ける。フリップフロップ２０４は、シフトモード時にはスキャンチェーンにおける前段のフリップフロップの出力を入力として受け、非シフトモード時にはフリップフロップ２０３の出力を入力として受ける。
【００６８】
図１１（Ｂ）に示した回路構成において、図５（Ａ）に示したタイミングチャートと同様にしてスキャンテストを実行することで、選択制御信号ＳＥＬ１が伝送される信号線の１縮退故障の検出を行うことができる。ただし、図５（Ａ）に示したタイミングチャートにおけるクロック信号ＣＬＫＡをクロック信号ＴＣＬＫに置き換え、選択制御信号ＳＥＬ２を削除する。また、そのスキャンテストでは、フリップフロップ２０４の値について期待値との比較を行い、フリップフロップ２０１、２０３の期待値はマスクする。また、図３（Ａ）に示したタイミングチャートと同様にしてスキャンテストを実行することで、他の信号線の縮退故障及び選択制御信号ＳＥＬ１が伝送される信号線の１縮退故障の検出を行うことができる。ただし、図３（Ａ）に示したタイミングチャートにおけるクロック信号ＣＬＫＡをクロック信号ＴＣＬＫに置き換え、選択制御信号ＳＥＬ２を削除するとともに、リセット動作は行わない。
【００６９】
また、前述した実施形態では、制御信号ＣＬＫＡ、ＳＥＬ１、ＳＥＬ２、ＳＥＮ、ＴＭ、ＴＲＳＴは、半導体集積回路の外部端子より入力しているが、これらの制御信号は、所定の順序で制御されれば良いので半導体集積回路の内部で生成するようにしても良い。例えば、制御信号ＣＬＫＡ、ＳＥＬ１、ＳＥＬ２、ＳＥＮ、ＴＭ、ＴＲＳＴを生成する信号生成回路を半導体集積回路内に設け、ステートマシン等のテスト制御回路の出力からそれらの制御信号を生成するようにしても良い。
【００７０】
図１２に、ＩＥＥＥ１１４９．１規格に準拠したＴＡＰ（Test Access Port）コントローラを用いて制御信号ＣＬＫＡ、ＳＥＬ１、ＳＥＬ２、ＳＥＮ、ＴＭ、ＴＲＳＴを生成する信号生成回路の構成例を示す。図１２に示すＴＡＰコントローラ３０１及び回路素子３０４〜３１８からなる信号生成回路は、半導体集積回路内に設けられる。図１２に示す信号の内の信号ＴＣＫ、ＴＭＳ、ＴＤＩ、ＴＲＳＴ、ＣＬＫＢは、半導体集積回路の外部端子より入力され、信号ＴＤＯは、半導体集積回路の外部端子より出力される。
【００７１】
ＴＡＰコントローラ３０１は、インストラクションを保持するインストラクションレジスタ３０２、及びステートマシン３０３を有する。ＴＡＰコントローラ３０１は、テストクロック信号ＴＣＫ、テストモードステート信号ＴＭＳ、テストモードイン信号ＴＤＩ、及びテストリセット信号ＴＲＳＴが入力され、これらの信号に基づいてテストにおける状態を制御する。
【００７２】
テストクロック信号ＴＣＫは、ステートマシン３０３の動作を同期させるクロック信号であり、テストモードステート信号ＴＭＳは、次の状態を規定するための信号である。また、テストデータイン信号ＴＤＩは、テスト用入力データであり、テストリセット信号ＴＲＳＴは、ステートマシン３０３をリセットするための信号である。フリップフロップ３０４、３０５は、スキャンクロック信号ＣＬＫＢで動作する、スキャンチェーンに組み込まれたスキャンフリップフロップである。
【００７３】
図１２に示す例では、前述した本実施形態におけるスキャンテストを実行するときには、ユーザ定義インストラクションを設定してスキャンテスト状態にする。このとき、ＴＡＰコントローラ３０１のインストラクションレジスタ３０２には値“００１０１”が保持される。また、ステートマシン３０３が、テストモードステート信号ＴＭＳに応じてＳｈｉｆｔ−ＤＲ状態（シフト動作）とＲｕｎ−Ｔｅｓｔ／Ｉｄｌｅ状態（キャプチャー動作）との状態遷移を制御してスキャンテストが行われる。ステートマシン３０３は、信号Ｓｔａｔｅ及び信号Ｓｈｉｆｔ−ＤＲを出力しており、Ｒｕｎ−Ｔｅｓｔ／Ｉｄｌｅ状態のときにステート信号Ｓｔａｔｅを“１１１１”にし、Ｓｈｉｆｔ−ＤＲ状態であるときに信号Ｓｈｉｆｔ−ＤＲを“１”にする。
【００７４】
ＡＮＤ回路３０６は、ＴＡＰコントローラ３０１のインストラクションレジスタ３０２に保持された値が入力され、入力された値の演算結果をテストモード信号ＴＭとして出力する。ＡＮＤ回路３０６は、入力される値が“００１０１”のときに出力を“１”にし、それ以外は出力を“０”にする。すなわち、スキャンテスト状態になると、テストモード信号ＴＭが“１”になる。
【００７５】
ＡＮＤ回路３０７は、ＡＮＤ回路３０６の出力（テストモード信号ＴＭ）及びＴＡＰコントローラ３０１のステートマシン３０３から出力された信号Ｓｈｉｆｔ−ＤＲが入力され、演算結果をスキャンイネーブル信号ＳＥＮとして出力する。テストモード信号ＴＭが“１”（スキャンテスト状態）であるときには、ＡＮＤ回路３０７により信号Ｓｈｉｆｔ−ＤＲと等しい信号がスキャンイネーブル信号ＳＥＮとして出力される。したがって、テストモード信号ＴＭが“１”であり、ステートがＳｈｉｆｔ−ＤＲ状態（シフト動作）である場合に、スキャンイネーブル信号ＳＥＮが“１”になる。
【００７６】
ＡＮＤ回路３０８は、ＴＡＰコントローラ３０１のステートマシン３０３から出力された信号Ｓｔａｔｅ及びフリップフロップ３０４の出力が入力され、その演算結果を出力する。ＯＲ回路３０９は、ＡＮＤ回路３０７の出力（スキャンイネーブル信号ＳＥＮ）及びＡＮＤ回路３０８の出力が入力され、その演算結果を出力する。ＡＮＤ回路３１０は、ＯＲ回路３０９の出力及びテストクロック信号ＴＣＫが入力され、演算結果をクロック信号ＣＬＫＡとして出力する。シフト動作によりフリップフロップ３０４に“１”が設定された後に信号Ｓｔａｔｅが“１１１１”であるとき、もしくはスキャンイネーブル信号ＳＥＮが“１”であるときにＯＲ回路３０９の出力が“１”となり、ＡＮＤ回路３１０によりテストクロック信号ＴＣＫと等しい信号がクロック信号ＣＬＫＡとして出力される。
【００７７】
フリップフロップ３１１は、ＡＮＤ回路３０７の出力（スキャンイネーブル信号ＳＥＮ）が入力され、テストクロックＴＣＫを動作クロックとして動作する。また、フリップフロップ３１２は、フリップフロップ３１１の出力が入力され、テストクロックＴＣＫの反転信号を動作クロックとして動作する。ＯＲ回路３１３は、フリップフロップ３１１の出力が反転入力されるとともにフリップフロップ３１２の出力が入力され、その演算結果を出力する。ＡＮＤ回路３１４は、ＡＮＤ回路３０６の出力（テストモード信号ＴＭ）及びＯＲ回路３１３の出力が入力され、演算結果をリセット信号ＴＰＲＳＴとして出力する。スキャンイネーブル信号ＳＥＮが“０”（キャプチャー動作）から“１”（シフト動作）に変化したとき、テストクロックＴＣＫの次の立ち上がりから立ち下がりの期間においてＯＲ回路３１３の出力が“０”となり、リセット信号ＴＰＲＳＴが同様に変化する。
【００７８】
ＡＮＤ回路３１５は、ＡＮＤ回路３０６の出力（テストモード信号ＴＭ）及びＡＮＤ回路３０７の出力（スキャンイネーブル信号ＳＥＮ）が入力され、その演算結果を出力する。ＡＮＤ回路３１６は、ＡＮＤ回路３０６の出力（テストモード信号ＴＭ）及びフリップフロップ３０５の出力が入力されるとともに、ＡＮＤ回路３０７の出力（スキャンイネーブル信号ＳＥＮ）が反転入力され、その演算結果を出力する。ＯＲ回路３１７は、ＡＮＤ回路３１５の出力及びＡＮＤ回路３１６の出力が入力され、演算結果を選択制御信号ＳＥＬ１として出力する。また、ＯＲ回路３１８は、ＡＮＤ回路３０７の出力（スキャンイネーブル信号ＳＥＮ）が入力されるとともに、ＡＮＤ回路３０６の出力（テストモード信号ＴＭ）及びフリップフロップ３０５の出力が反転入力され、演算結果を選択制御信号ＳＥＬ２として出力する。
【００７９】
したがって、スキャンテスト時にスキャンイネーブル信号ＳＥＮが“１”（シフト動作）である場合に、選択制御信号ＳＥＬ１、ＳＥＬ２はともに“１”となる。また、スキャンテスト時にスキャンイネーブル信号ＳＥＮが“０”（キャプチャー動作）である場合に、シフト動作によりフリップフロップ３０５に“０”が設定されていれば、選択制御信号ＳＥＬ１は“０”となり、選択制御信号ＳＥＬ２は“１”となる。また、スキャンテスト時にスキャンイネーブル信号ＳＥＮが“０”（キャプチャー動作）である場合に、シフト動作によりフリップフロップ３０５に“１”が設定されていれば、選択制御信号ＳＥＬ１は“１”となり、選択制御信号ＳＥＬ２は“０”となる。
【００８０】
なお、前記実施形態は、何れも本発明を実施するにあたっての具体化のほんの一例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
本発明の諸態様を付記として以下に示す。
【００８１】
（付記１）
第１信号を出力する第１の回路と、
前記第１の回路の出力が入力されるとともに、第１のクロック信号又は固定信号が入力され、第１の選択制御信号に応じて一方の入力を選択して出力する第１のセレクタと、
前記第１のセレクタの出力が入力される組み合わせ回路、及びスキャンチェーンに組み込まれ第２のクロック信号により動作して前記組み合わせ回路の出力を保持する第１のフリップフロップを含む第２の回路と、
前記第１のセレクタの出力をクロックとして動作し、前記第１のセレクタの出力に応じて出力を反転させる第２のフリップフロップと、
前記スキャンチェーンに組み込まれ、前記第２のクロック信号により動作して前記第２のフリップフロップの出力を保持する第３のフリップフロップとを有することを特徴とする半導体集積回路。
（付記２）
前記第１のクロック信号及び前記固定信号が入力され、第２の選択制御信号に応じて一方の入力を選択して出力する第２のセレクタを有し、
前記第２のセレクタの出力が、前記第１のセレクタに入力されることを特徴とする付記１記載の半導体集積回路。
（付記３）
前記スキャンチェーンに組み込まれ、スキャンテストのシフト動作によって設定された値を前記固定信号として出力する第４のフリップフロップを有することを特徴とする付記２記載の半導体集積回路。
（付記４）
テストにおける状態を、外部からの入力に応じて制御するテスト制御回路と、
前記テスト制御回路の出力から、前記第１のクロック信号、前記第１の選択制御信号、前記第２の選択制御信号、及びスキャンテストに係るスキャンイネーブル信号を生成する信号生成回路とを有することを特徴とする付記２又は３記載の半導体集積回路。
（付記５）
前記第１の選択制御信号が伝送される第１の信号線及び前記第２の選択制御信号が伝送される第２の信号線の少なくとも一方の信号線に縮退故障がある場合には、前記スキャンテストのキャプチャー動作時に前記第１のセレクタから前記第１のクロック信号が出力され、前記第１の信号線及び前記第２の信号線に縮退故障がない場合には、前記キャプチャー動作時に前記第１のセレクタから前記第１の回路の出力又は前記固定信号が出力されるように、前記第１の選択制御信号及び前記第２の選択制御信号を制御することを特徴とする付記２〜４の何れか１項に記載の半導体集積回路。
（付記６）
前記第１の回路と前記第２の回路との組を複数有し、
前記第２のセレクタと前記第４のフリップフロップとを前記第１の回路と前記第２の回路との複数の組で共有していることを特徴とする付記３記載の半導体集積回路。
（付記７）
前記第１の回路と前記第２の回路との組を複数有し、
前記第２のフリップフロップと前記第３のフリップフロップとを前記第１の回路と前記第２の回路との複数の組で共有していることを特徴とする付記３又は６記載の半導体集積回路。
（付記８）
前記第１の回路と前記第２の回路との組を複数有し、
前記第３のフリップフロップを前記第１の回路と前記第２の回路との複数の組で共有していることを特徴とする付記３又は６記載の半導体集積回路。
【符号の説明】
【００８２】
１００  半導体集積回路
１０１  回路（Ｘソース）
１０２  組み合わせ回路
１０４〜１０６  フリップフロップ（スキャンフリップフロップ）
１０７、１０８  セレクタ
１０９  インバータ
１１１  論理和演算回路（ＯＲ回路）
【図１】
2014224725.tif 000003
【図２】
2014224725.tif 000004
【図３】
2014224725.tif 000005
【図４】
2014224725.tif 000006
【図５】
2014224725.tif 000007
【図６】
2014224725.tif 000008
【図７】
2014224725.tif 000009
【図８】
2014224725.tif 000010
【図９】
2014224725.tif 000011
【図１０】
2014224725.tif 000012
【図１１】
2014224725.tif 000013
【図１２】
2014224725.tif 000014
【図１３】
2014224725.tif 000015
【図１４】
2014224725.tif 000016
【図１５】
2014224725.tif 000017