(57)【要約】【課題】スキャンテスト回路上の故障箇所を特定する際に、通常データラインの遅延が増大し、ロジック回路のセットアップタイムに関する設計制約が厳しくなるという問題点がある。そのため、スキャンフリップフロップのセットアップタイムに関する設計制約が厳しくなることなく、スキャンチェーン上の故障箇所を特定するスキャンテスト回路及びスキャンテスト方法、スキャンテスト回路を備える半導体集積回路が、望まれる。【解決手段】スキャンテスト回路は、スキャンチェーンを形成する複数のスキャンフリップフロップを備えている。複数のスキャンフリップフロップは、スキャン入力端子から受け付けるスキャンテストデータ、又は、スキャンフリップフロップのデータ出力端子から出力されるデータを反転させた反転出力データをスキャンデータ入力端子により受け付け、スキャンテストデータ又は反転データのいずれかの保持が可能である。【選択図】図１
2012230036.tif 000002
【特許請求の範囲】
【請求項１】
スキャンチェーンを形成する複数のスキャンフリップフロップを備え、
前記スキャンフリップフロップは、スキャン入力端子から受け付けるスキャンテストデータ、又は、前記スキャンフリップフロップのデータ出力端子から出力されるデータを反転させた反転出力データをスキャンデータ入力端子により受け付け、前記スキャンテストデータ又は前記反転データのいずれかを保持することを特徴とするスキャンテスト回路。
【請求項２】
さらに、前記スキャンデータ入力端子と接続され、前記スキャンテストデータと、前記反転出力データと、を切り替え可能なセレクタを複数含む請求項１のスキャンテスト回路。
【請求項３】
さらに、前記スキャンフリップフロップのデータ出力端子から出力されるデータを反転する否定論理回路を複数含むと共に、前記セレクタの出力の切り替えと前記スキャンフリップフロップの動作モードの切り替えが、外部から可能である請求項２のスキャンテスト回路。
【請求項４】
スキャンチェーンを形成する複数のスキャンフリップフロップを備えたスキャンテスト回路において、
前記複数のスキャンフリップフロップはスキャン入力端子からスキャンテストデータを受け付け、保持できる状態で、前記スキャンテスト回路をシフト動作させる第１の工程と、
前記複数のスキャンフリップフロップはデータ出力端子から出力されるデータを反転させた反転出力データを受け付け、保持できる状態で、前記第１の工程で保持した前記スキャンテストデータを反転した値を保持させる第２の工程と、を含み、
前記第２の工程後、前記複数のスキャンフリップフロップは前記スキャンテストデータを受け付け、保持できる状態で、前記スキャンテスト回路をシフト動作させる第３の工程を含むことを特徴とするスキャンテスト方法。
【請求項５】
さらに、前記第３の工程において、スキャン出力端子から得られるスキャンテストの結果に基づいて、前記スキャンチェーン上の故障箇所を特定する第４の工程を含む請求項４のスキャンテスト方法。
【請求項６】
前記第４の工程は、前記スキャンテストの結果から得られるデータの論理レベルが変化するタイミング及び変化値に基づいて、前記故障箇所及びその故障値を特定する請求項５のスキャンテスト方法。
【請求項７】
前記第１の工程は、少なくても前記複数のスキャンフリップフロップの個数に等しい数のクロックを入力し、
前記第２の工程は、１クロックを入力する請求項４乃至６のいずれか一に記載のスキャンテスト方法。
【請求項８】
請求項１乃至３のいずれか一に記載のスキャンテスト回路を備えることを特徴とする半導体集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、スキャンテスト回路及びスキャンテスト方法、スキャンテスト回路を備える半導体集積回路に関する。特に、スキャンチェーン上の故障箇所の特定が可能なスキャンテスト回路及びスキャンテスト方法、スキャンテスト回路を備える半導体集積回路に関する。
【背景技術】
【０００２】
製造後の半導体集積回路の不良の有無を検出するためのテスト手法としてスキャンテストが広く使用されている。スキャンテストは、半導体集積回路内に配置されたフリップフロップをシリアルに接続してシフトレジスタ構成のスキャンチェーンを構築し、半導体集積回路の外部端子からシフトレジスタを制御・観測することで実施される。スキャンテストを実施することによって、半導体集積回路の不良箇所（故障箇所）の特定を行う。故障箇所の特定後は、故障の原因の解析を行い、その対策を製造工程へ反映させることで、半導体集積回路の歩留り向上を図る。このように、スキャンテストは半導体集積回路の製造工程において重要な意味を持っている。
【０００３】
一方、近年の製造技術の向上に伴って、半導体集積回路のプロセスの微細化が進み、半導体集積回路の大規模化が顕著になってきている。このような大規模な半導体集積回路では、内部のフリップフロップが１００万個を超える場合もある。上述のように、スキャンフリップフロップをシリアルに接続することで、シフトレジスタ構成のスキャンチェーンを構築しているスキャンテスト回路においては、スキャンフリップフロップの数が増加するに伴って、スキャンチェーン上に故障が生じる可能性が高まることになる。
【０００４】
半導体集積回路の故障箇所の特定には、スキャンチェーン上に故障がないことが前提であり、スキャンチェーン上に故障がないからこそ半導体集積回路内部の回路（ロジック回路）の故障箇所を特定することができる。しかし、スキャンチェーン上に故障が存在すると、その故障箇所に関わらずスキャンチェーンを動作させることができない。その結果、スキャンテストが行えず、スキャンテストを利用した半導体集積回路の故障箇所の特定ができない。スキャン入力端子を経由して入力されるスキャンテストデータが必ずその故障箇所を通って伝達されるためである。このような場合には、スキャン出力端子からは常に故障値が観測されてしまい、故障箇所が特定できない。
【０００５】
ここで、特許文献１において、全てのスキャンフリップフロップにセット・リセット機能を持たせることで、スキャンチェーン上の故障箇所を特定する技術が開示されている。特許文献１で開示された技術では、スキャンチェーン上に故障があったとしても、故障箇所より後段にあるスキャンフリップフロップに故障値の反転値を保持させることで、スキャン出力端子から保持値の反転値が観測されるタイミングに基づいてスキャンチェーン上の故障箇所を特定している。
【０００６】
特許文献１で開示された技術では、故障箇所を含むスキャンチェーンの経路を使用して値を設定するのではなく、セット端子、又は、リセット端子を使用して全てのスキャンフリップフロップに１又は０の設定を行っている。そして、スキャンチェーン上の故障箇所より後段（スキャン出力端子に近い側）にあるスキャンフリップフロップに故障値と逆の値を設定させる。その結果、スキャン出力端子から故障値を反転した値が観測された後、あるタイミング（時刻）を境に故障値が観測されることになる。この観測値が変わるタイミングからスキャンチェーン上の故障を特定している。
【０００７】
さらに、特許文献２において、半導体集積回路内部のロジック回路上の遅延故障を容易に検出する技術が開示されている。特許文献２で開示された回路は、スキャンフリップフロップに入力するデータを、反転出力データ、又は、ロジック回路から出力されるデータ（以下、通常データと呼ぶ）に切り替えるセレクタを含んでいる。
【０００８】
また、特許文献３において、スキャンテストパタンを容易に作成する技術が開示されている。特許文献３で開示された回路においても、スキャンフリップフロップに入力するデータを、出力データを反転したデータ、又は、通常データに切り替えるセレクタを含んでいる。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開平９−２８１１９４号公報
【特許文献２】特開２００１−００４７１０号公報
【特許文献３】特開２００８−２９２３６８号公報
【特許文献４】特許第３５６５２５７号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
なお、上記先行技術文献の各開示を、本書に引用をもって繰り込むものとする。以下の分析は、本発明の観点からなされたものである。
【００１１】
上述のように、特許文献１で開示された技術は、全てのスキャンフリップフロップがセット・リセット機能を有する必要がある。そのため、セット・リセット機能を持たないスキャンフリップフロップから、セット・リセット機能を有するスキャンフリップフロップに置き換える必要がある。その結果、ユーザ回路（ロジック回路）のセットアップタイムに関する設計制約が厳しくなり、半導体集積回路のレイアウト設計時のロジック回路に関するタイミングの設計が困難になるという問題がある。
【００１２】
図２は、特許文献４の図７である。図２は、セット・リセット機能を有さないフリップフロップの回路構成である。図３は、特許文献４の図５である。図３は、セット・リセット機能を有するフリップフロップの回路構成である。
【００１３】
ここで、図２及び図３の通常データライン上の素子を検証する。セット・リセット機能を有さないフリップフロップ（図２）では、トランスファ（トランスミッション）ゲート間はインバータで構成されている。一方、セット・リセット機能を有するフリップフロップ（図３）では、トランスファ（トランスミッション）ゲート間はＮＡＮＤ回路で構成されている。ＮＡＮＤ回路はインバータよりも遅延が大きいため、セット・リセット機能を有さないフリップフロップからセット・リセット機能を有するフリップフロップに置き換えると、通常データラインの遅延もまた大きくなる。
【００１４】
フリップフロップの通常データは、クロックが変化する前に一定期間、確定している必要がある（セットアップタイムに関する設計制約）が、通常データラインの遅延が大きくなるとこのセットアップタイムに関する設計制約が守れないことが考えられる。即ち、特許文献１で開示された回路では、ロジック回路のセットアップタイムに関する設計制約が厳しくなり、ロジック回路のタイミングの設計（タイミングの収束）を困難にする。
【００１５】
以上のとおり、従来技術には、解決すべき問題点が存在する。本発明の一側面において、スキャンフリップフロップの通常データライン上のセットアップタイムに関する設計制約が厳しくなることなく、スキャンチェーン上の故障箇所を特定するスキャンテスト回路及びスキャンテスト方法、スキャンテスト回路を備える半導体集積回路が、望まれる。
【課題を解決するための手段】
【００１６】
本発明の第１の視点によれば、スキャンチェーンを形成する複数のスキャンフリップフロップを備え、前記スキャンフリップフロップは、スキャン入力端子から受け付けるスキャンテストデータ、又は、前記スキャンフリップフロップのデータ出力端子から出力されるデータを反転させた反転出力データをスキャンデータ入力端子により受け付け、前記スキャンテストデータ又は前記反転データのいずれかを保持するスキャンテスト回路が提供される。
【００１７】
本発明の第２の視点によれば、スキャンチェーンを形成する複数のスキャンフリップフロップを備えたスキャンテスト回路において、前記複数のスキャンフリップフロップはスキャン入力端子からスキャンテストデータを受け付け、保持できる状態で、前記スキャンテスト回路をシフト動作させる第１の工程と、前記複数のスキャンフリップフロップはデータ出力端子から出力されるデータを反転させた反転出力データを受け付け、保持できる状態で、前記第１の工程で保持した前記スキャンテストデータを反転した値を保持させる第２の工程と、を含み、前記第２の工程後、前記複数のスキャンフリップフロップは前記スキャンテストデータを受け付け、保持できる状態で、前記スキャンテスト回路をシフト動作させる第３の工程を含むスキャンテスト方法が提供される。
【００１８】
本発明の第３の視点によれば、上述のスキャンテスト回路を備える半導体集積回路が提供される。
【発明の効果】
【００１９】
本発明の各視点によれば、スキャンフリップフロップのセットアップタイムに関する設計制約が厳しくなることなく、スキャンチェーン上の故障箇所を特定するスキャンテスト回路及びスキャンテスト方法、スキャンテスト回路を備える半導体集積回路が、提供される。
【図面の簡単な説明】
【００２０】
【図１】本発明の実施形態の概要を説明するための図である。
【図２】従来のセット・リセット機能を有さないフリップフロップの回路構成図である（特許文献４の図７）。
【図３】従来のセット・リセット機能を有するフリップフロップの回路構成図である（特許文献４の図５）。
【図４】本発明の第１の実施形態のスキャンテスト回路の内部構成の一例を示す図である。
【図５】図４に示すスキャンテスト回路を用いて故障箇所を特定する際のテスト手順の一例を示すフローチャートである。
【発明を実施するための形態】
【００２１】
初めに、図１を用いて実施形態の概要について説明する。なお、この概要に付記した図面参照符号は、理解を助けるための一例として各要素に便宜上付記したものであり、本発明を図示の態様に限定することを意図するものではない。
【００２２】
上述のように、スキャンテスト回路上の故障箇所を特定しようとすれば、通常データラインの遅延が増大し、ロジック回路のセットアップタイムに関する設計制約が厳しくなるという問題点がある。そのため、スキャンフリップフロップのセットアップタイムに関する設計制約が厳しくなることなく、スキャンチェーン上の故障箇所を特定するスキャンテスト回路及びスキャンテスト方法、スキャンテスト回路を備える半導体集積回路が、望まれる。
【００２３】
そこで、一例として図１に示すスキャンテスト回路を提供する。図１に示すスキャンテスト回路は、スキャンチェーンを形成する複数のスキャンフリップフロップを備え、スキャンフリップフロップは、スキャン入力端子から受け付けるスキャンテストデータ、又は、スキャンフリップフロップのデータ出力端子から出力されるデータを反転させた反転出力データをスキャンデータ入力端子により受け付け、スキャンテストデータ又は反転データのいずれかを保持する。スキャンテスト回路をこのような構成にすることによって、スキャンチェーン上の故障箇所の特定をすることが可能になる。
【００２４】
例えば、図１に示す箇所に故障が存在するとする。この場合に、故障箇所よりも後段にあるスキャンフリップフロップでは、スキャンテストデータが故障箇所を通過してくるため、故障値及びその反転値を保持することができる。従って、各スキャンフリップフロップの出力データの反転値を保持させた後に、シフト動作を行えば故障値を反転させたデータが出力されてくる。しかし、故障箇所よりも前段のスキャンフリップフロップは保持しているデータを後段に伝達することはできず、シフト動作の結果としては故障値が出力されてくる。
【００２５】
このように、一度、各スキャンフリップフロップの反転出力データを保持させてシフト動作を行うと、スキャン出力端子から出力されるデータには、故障箇所よりも後段では故障値を反転したデータ、故障箇所よりも前段では故障値そのもののデータ、といった違いが現れる。即ち、この違いが現れるタイミングと入力したクロック数から、スキャンチェーン上の故障箇所を特定することができる。その際に、各スキャンフリップフロップの通常データ入力に対して、セットアップタイムを悪化させるような回路を挿入しておらず、スキャンテスト回路を含む半導体集積回路のタイミング設計が困難になることもない。
【００２６】
［第１の実施形態］
次に、本発明の第１の実施形態について、図面を用いてより詳細に説明する。図４は、本実施形態に係るスキャンテスト回路１の内部構成の一例を示す図である。図４に示すスキャンテスト回路１は、スキャンフリップフロップＳＦＦ０１乃至ＳＦＦ０３と、インバータＩＮＶ０１乃至ＩＮＶ０３と、セレクタＳＥＬ０１乃至ＳＥＬ０３から構成されている。図４には、スキャンテスト回路１のテスト対象であるロジック回路１０乃至３０も示されている。
【００２７】
スキャンテスト回路１は、スキャン入力端子ＳＩＮと、スキャンモード制御入力端子ＳＭＣと、スキャンデータ制御入力端子ＣＮＴと、クロック端子ＣＬＫの各入力端子と、スキャン出力端子ＳＯＴを備える。スキャン入力端子ＳＩＮからスキャンテストデータをスキャンテスト回路１に入力し、スキャン出力端子ＳＯＴからスキャンテストの結果を出力する。スキャンモード制御入力端子ＳＭＣは、スキャンフリップフロップＳＦＦ０１乃至ＳＦＦ０３の各スキャンデータ入力制御端子ＳＥと接続される。スキャンデータ制御入力端子ＣＮＴは、セレクタＳＥＬ０１乃至ＳＥＬ０３のセレクト端子と接続される。クロック端子ＣＬＫは、スキャンフリップフロップＳＦＦ０１乃至ＳＦＦ０３のクロック入力端子ＣＫと接続される。
【００２８】
スキャンフリップフロップＳＦＦ０１の通常データ入力端子Ｄは、ロジック回路１０と接続されている。スキャンフリップフロップＳＦＦ０１のスキャンデータ入力端子ＳＩは、セレクタＳＥＬ０１の出力端子と接続されている。さらに、スキャンフリップフロップＳＦＦ０１のデータ出力端子Ｑは、セレクタＳＥＬ０２の入力端子Ｉｎ１に接続されている。スキャンフリップフロップＳＦＦ０１は、スキャンモード制御入力端子ＳＭＣに０（Ｌレベル）が設定されると、通常データ入力端子Ｄにより受け付けるロジック回路１０の出力を選択し、クロック端子ＣＬＫに入力されたクロックに同期してデータ出力端子Ｑから出力する。スキャンモード制御入力端子ＳＭＣに１（Ｈレベル）が設定されると、スキャンデータ入力端子ＳＩにより受け付けるセレクタＳＥＬ０１の出力を選択し、クロックに同期してデータ出力端子Ｑから出力する。スキャンフリップフロップＳＦＦ０２及びＳＦＦ０３も同様に接続され、スキャンフリップフロップＳＦＦ０３のデータ出力端子Ｑがスキャン出力端子ＳＯＴと接続される。
【００２９】
インバータＩＮＶ０１の入力端子は、スキャンフリップフロップＳＦＦ０１のデータ出力端子Ｑと接続され、出力端子はセレクタＳＥＬ０１の入力端子Ｉｎ２と接続される。インバータＩＮＶ０２及びＩＮＶ０３についても同様である。
【００３０】
セレクタＳＥＬ０１は、スキャンデータ制御入力端子ＣＮＴに０（Ｌレベル）が設定されると入力端子Ｉｎ１を選択し、出力端子からスキャン入力端子ＳＩＮを経由してスキャンテストデータを出力する。スキャンデータ制御入力端子ＣＮＴに１（Ｈレベル）が設定されると入力端子Ｉｎ２を選択し、出力端子からインバータＩＮＶ０１が出力する信号を出力する。セレクタＳＥＬ０２及びＳＥＬ０３についても同様である。
【００３１】
なお、説明の便宜上、本実施形態ではスキャンフリップフロップを３段としているが、スキャンテストの対象となるロジック回路に適応させてスキャンフリップフロップの段数を拡張できることは当然である。
【００３２】
次に、図４に示すスキャンテスト回路１の動作について説明する。図５は、スキャンテスト回路１を用いてスキャンチェーン上の故障箇所を特定する際のテスト手順の一例を示すフローチャートである。動作の説明にあたり、スキャンフリップフロップＳＦＦ０１のデータ出力端子Ｑの直後に故障（以降、ＦＡＩＬ０１と呼ぶ）が存在するものとする。なお、この際の故障とは、信号の値が常に０又は１のいずれかの値から変化しない縮退故障とし、故障ＦＡＩＬ０１は値が常に１となる縮退故障とする。
【００３３】
図５のステップＳ０１においては、スキャンモード制御入力端子ＳＭＣを１に設定することで、スキャンテスト回路１のスキャンチェーンをシフトモードに設定する。図４のスキャンフリップフロップＳＦＦ０１乃至ＳＦＦ０３では、スキャンデータ入力端子ＳＩから受け付けるスキャンテストデータをデータ出力端子Ｑに出力する設定に切り替わる。
【００３４】
ステップＳ０２において、スキャンデータ制御入力端子ＣＮＴに０を設定することで、スキャンフリップフロップＳＦＦ０１乃至ＳＦＦ０３のスキャン入力端子ＳＩにスキャンテストデータを伝達する設定にセレクタＳＥＬ０１乃至ＳＥＬ０３を切り替える。セレクタＳＥＬ０１はスキャン入力端子ＳＩＮを、セレクタＳＥＬ０２はスキャンフリップフロップＳＦＦ０１のデータ出力端子Ｑを、セレクタＳＥＬ０３はスキャンフリップフロップＳＦＦ０２のデータ出力端子Ｑを、それぞれ選択する。
【００３５】
ステップＳ０３において、スキャン入力端子ＳＩＮから入力するスキャンテストデータを０に固定した状態で、スキャンテスト回路１のスキャンチェーン上に存在するスキャンフリップフロップの個数と同数のクロックをクロック端子ＣＬＫから入力する。スキャンテスト回路１には、３個のスキャンフリップフロップが存在するので３クロックを入力する。
【００３６】
スキャンテスト回路１にクロックを入力することで、シフト動作を実施する。スキャンテスト回路１には、スキャンフリップフロップＳＦＦ０１のデータ出力端子Ｑの直後に故障値が１である故障ＦＡＩＬ０１が存在している。ここで、シフト動作が完了した際に、スキャンフリップフロップＳＦＦ０１はスキャン入力端子ＳＩＮから入力するスキャンテストデータである０を保持している。スキャンフリップフロップＳＦＦ０１は故障ＦＡＩＬ０１よりも前段であるためである。しかし、故障ＦＡＩＬ０１の後段にあるスキャンフリップフロップＳＦＦ０２及びＳＦＦ０３では故障ＦＡＩＬ０１の縮退故障値である１を保持している。
【００３７】
ステップＳ０４において、スキャンデータ制御入力端子ＣＮＴに１を設定することで、スキャンフリップフロップＳＦＦ０１乃至ＳＦＦ０３のスキャンデータ入力端子ＳＩに各スキャンフリップフロップが保持している値の反転値を伝達する設定にセレクタＳＥＬ０１乃至ＳＥＬ０３を切り替える。セレクタＳＥＬ０１乃至ＳＥＬ０３は、それぞれインバータＩＮＶ０１乃至ＩＮＶ０３の出力を選択する。
【００３８】
ステップＳ０５において、クロック端子ＣＬＫから１クロック入力する。この際、セレクタＳＥＬ０１乃至ＳＥＬ０３は、スキャンフリップフロップＳＦＦ０１乃至ＳＦＦ０３が保持している値の反転値であるインバータＩＮＶ０１乃至ＩＮＶ０３の出力を選択している（ステップＳ０４）。従って、スキャンフリップフロップＳＦＦ０１乃至ＳＦＦ０３は、ステップＳ０３において取り込んだ値の反転値を取り込むことになる。ステップＳ０３において、スキャンフリップフロップＳＦＦ０１は０を保持し、スキャンフリップフロップＳＦＦ０２及びＳＦＦ０３は１を保持している。従って、ステップＳ０５で、スキャンフリップフロップＳＦＦ０１が保持する値は１に更新され、スキャンフリップフロップＳＦＦ０２及びＳＦＦ０３が保持する値は０に更新される。
【００３９】
ステップＳ０６において、スキャンデータ制御入力端子ＣＮＴを０に設定することで、スキャンフリップフロップＳＦＦ０１乃至ＳＦＦ０３のスキャンデータ入力端子ＳＩにスキャンテストデータを伝達する設定にセレクタＳＥＬ０１乃至ＳＥＬ０３を切り替える。セレクタＳＥＬ０１はスキャン入力端子ＳＩＮを、セレクタＳＥＬ０２はスキャンフリップフロップＳＦＦ０１のデータ出力端子Ｑを、セレクタＳＥＬ０３はスキャンフリップフロップＳＦＦ０２のデータ出力端子Ｑを、それぞれ選択する。
【００４０】
ステップＳ０７において、再びスキャンテスト回路１のシフト動作を行う。その際に、ステップＳ０３と同様に、スキャンテストデータを０に固定した状態で、スキャンテスト回路１のスキャンチェーン上に存在するスキャンフリップフロップの個数と同数のクロックをクロック端子ＣＬＫから入力する。
【００４１】
その後、スキャン出力端子ＳＯＴから出力される値を観測する。スキャン出力端子ＳＯＴからは、スキャンフリップフロップＳＦＦ０３、ＳＦＦ０２、ＳＦＦ０１の順でそれぞれが保持していた値が出力される。しかし、スキャンテスト回路１上に故障箇所が存在する場合、故障よりも後段にあるスキャンフリップフロップの保持値が出力された後は、故障値が出力されることになる。故障箇所より前段にあるスキャンフリップフロップの保持値は出力されないためである。即ち、ステップＳ０５において更新されたスキャンフリップフロップＳＦＦ０３の保持値である０が最初に観測される。続いて、スキャンフリップフロップＳＦＦ０２の保持値である０が観測される。最後に、ステップＳ０５で更新されたスキャンフリップフロップＳＦＦ０１の保持値ではなく、故障ＦＡＩＬ０１の故障値である１が観測される。
【００４２】
ステップＳ０８において、ステップＳ０７でスキャン出力端子ＳＯＴから観測した値に基づいて、故障箇所が存在するスキャンチェーン、その故障値、及び、スキャンチェーン上の故障箇所等を特定する。スキャンテスト回路１に故障箇所が存在しない場合、全てのスキャンフリップフロップＳＦＦ０１乃至ＳＦＦ０３には、０が取り込まれる（ステップＳ０３）。その後、ステップＳ０５において１に更新されるため、スキャン出力端子ＳＯＴから１、１、１の順で３つのスキャンテストデータが観測される（ステップＳ０７）。
【００４３】
しかし、本実施形態のように、スキャンフリップフロップＳＦＦ０１のデータ出力端子Ｑの直後に故障ＦＡＩＬ０１が存在すると、スキャン入力端子ＳＩＮから入力するスキャンテストデータを０に固定したとしても、故障ＦＡＩＬ０１より後段にあるスキャンフリップフロップＳＦＦ０２及びＳＦＦ０３は故障値である１しか取り込むことができない（故障ＦＡＩＬ０１より前段にあるスキャンフリップフロップＳＦＦ０１は０を取り込むことができる）。
【００４４】
その後、故障ＦＡＩＬ０１より後段にあるスキャンフリップフロップＳＦＦ０２及びＳＦＦ０３の保持値は０に更新され（ステップＳ０５）、ステップＳ０７のシフト動作によって、スキャン出力端子ＳＯＴから、０、０、１の順で３つのスキャンテストデータが観測される。従って、スキャンテストデータを０に固定した状態で、スキャン出力端子ＳＯＴから、０、０、１の順に３つのスキャンテストデータが観測されれば、スキャン出力端子ＳＯＴから数えて３番目（観測される値が反転値になる箇所）の位置にあるスキャンフリップフロップＳＦＦ０１のデータ出力端子Ｑに、故障値が１である故障ＦＡＩＬ０１が存在することが特定できる。
【００４５】
なお、本実施形態においては、スキャン入力端子ＳＩＮから入力するスキャンテストデータを０に固定する場合について説明したが、スキャンテストデータを１に固定しても故障ＦＡＩＬ０１の故障値とその箇所を特定することが可能である。この場合においても、ステップＳ０３で、スキャンフリップフロップＳＦＦ０２及びＳＦＦ０３の保持値は１となるため、ステップＳ０４以降の結果は変わらない。
【００４６】
即ち、ステップＳ０５において、スキャンフリップフロップＳＦＦ０２及びＳＦＦ０３の保持値は０に更新されるため、ステップＳ０７でスキャン出力端子ＳＯＴから観測される値は、０、０、１の３つのスキャンテストデータとなる。このように、ステップＳ０３でスキャン入力端子ＳＩＮから入力するスキャンテストデータを１に固定した場合であっても、ステップＳ０８で特定される結果は同じである。
【００４７】
本実施形態においては、スキャンフリップフロップＳＦＦ０１のデータ出力端子Ｑの直後に故障値が１である故障ＦＡＩＬ０１が存在する場合について説明した。次に、故障ＦＡＩＬ０１以外の故障であってもその故障箇所及び故障値の特定が可能であることを説明する。
【００４８】
初めに、故障ＦＡＩＬ０１の故障値が１ではなく、０である場合について説明する。この場合であっても、図５を用いて説明した手順によって故障ＦＡＩＬ０１の故障値とその故障箇所の特定が可能である。故障ＦＡＩＬ０１の故障値が０の場合、ステップＳ０３において、スキャンフリップフロップＳＦＦ０１乃至ＳＦＦ０３の保持値は全て０になる。その後、ステップＳ０５において、スキャンフリップフロップＳＦＦ０２及びＳＦＦ０３の保持値は、１に更新される。すると、ステップＳ０７において、スキャン出力端子ＳＯＴから、１、１、０の順に３つのスキャンテストデータが観測される。従って、ステップＳ０８では、スキャン出力端子ＳＯＴから数えて３番目（観測される値が反転値になる箇所）の位置にあるスキャンフリップフロップＳＦＦ０１のデータ出力端子Ｑに、故障値が０である故障ＦＡＩＬ０１が存在することが特定できる。
【００４９】
次に、スキャンフリップフロップＳＦＦ０２のデータ出力端子Ｑに故障値が１である故障ＦＡＩＬ０２が存在する場合であっても、故障ＦＡＩＬ０２の故障値と故障箇所の特定が可能であることを説明する。この場合、ステップＳ０３では、故障ＦＡＩＬ０２より前段にあるスキャンフリップフロップＳＦＦ０１及びＳＦＦ０２の保持値は０となる。スキャンフリップフロップＳＦＦ０３の保持値は１となる。その後、ステップＳ０５において、スキャンフリップフロップＳＦＦ０３に限り保持値が０に更新される。その結果、ステップＳ０７でスキャン出力端子ＳＯＴから、０、１、１の順で３つのスキャンテストデータが観測される。従って、ステップＳ０８において、スキャン出力端子ＳＯＴから数えて２番目（観測される値が反転値になる箇所）の位置にあるスキャンフリップフロップＳＦＦ０２のデータ出力端子Ｑに、故障値が１である故障ＦＡＩＬ０２が存在することが特定できる。
【００５０】
以上のように、スキャンテスト回路１と図５に示すスキャンテスト方法によりスキャンテスト回路上の故障箇所及びその故障値を特定することができる。即ち、スキャンテスト回路１のスキャンフリップフロップＳＦＦ０１乃至ＳＦＦ０３の前段に、スキャンテストデータとスキャンフリップフロップの出力データの反転値を選択可能なセレクタＳＥＬ０１乃至ＳＥＬ０３を配置する。このセレクタＳＥＬ０１乃至ＳＥＬ０３を適宜切り替えて、スキャンフリップフロップＳＦＦ０１乃至ＳＦＦ０３の各出力データの反転値を各スキャンフリップフロップに保持させる。すると、故障が存在するスキャンフリップフロップは、出力データを反転させて保持することができないため、正常なスキャンフリップフロップと区別をすることができる。その結果、スキャン出力端子ＳＯＴから出力されるスキャンテストデータにおいて、当初出力されていた値から反転する箇所が故障箇所と特定することができる。
【００５１】
このように、スキャンテスト回路１では、特許文献１で開示された技術のようにスキャンフリップフロップをセット・リセット機能付きスキャンフリップフロップに置き換える必要はなく、ロジック回路のセットアップタイムに関する設計制約を悪化させることはない。そのため、半導体集積回路のレイアウト設計時におけるロジック回路のタイミングに関する設計が困難になることもない。
【００５２】
また、スキャンテスト回路１では、通常データラインにセレクタを挿入しておらず、セレクタの挿入が原因となってロジック回路のセットアップタイムに関する設計制約を悪化させることはない。このことは、特許文献２及び３で開示された技術が、通常データラインにセレクタを挿入し、ロジック回路に対するセットアップタイムに関する設計制約を悪化させているのとは対照的である。
【００５３】
さらに、特許文献３で開示された技術では、挿入したセレクタの制御にテスト用のスキャンフリップフロップを用いている。しかし、スキャンフリップフロップはスキャンチェーンに含まれており、スキャンチェーン上に故障がある場合には、セレクタの制御ができず、始点となるスキャンフリップフロップが自身の反転値を取り込むことができない可能性がある。そのような場合、スキャンチェーン上の故障箇所が特定できないという問題点がある。一方、本実施形態に係るスキャンテスト回路１では、セレクタの制御にスキャンフリップフロップを使用しておらず、そのような事象が発生することはない。
【００５４】
また、特許文献１で開示された技術では、スキャンチェーン上の故障値が０である場合には、セット機能を有効にした解析パタンを実行し、故障値が１の場合には、リセット機能を有効にした解析パタンを実行することで、故障箇所の特定を行う。そのため、予め故障値が０又は１のいずれかであるかを調査しておき、その値に応じて解析パタンを実行する必要があるため、少なくても２回以上（故障値の調査に１回、解析に１回）のテストパタンの実行が必要である。しかし、本実施形態に係るスキャンテスト回路１では、故障値に依存することなく、１回の解析パタンの実行により、故障値と故障箇所の特定が可能である。従って、特許文献１で開示されたスキャンテスト方法と比較して、解析工程が簡易化されるという利点がある。このことは、スキャンテストを実行する際のテストパタンが小規模であることを意味し、テストパタンの実行に必要な資源（ハードディスクやメモリ）が大規模になることがない。
【００５５】
さらに、半導体集積回路内部にスキャンテスト回路をレイアウトする際において、ロジック回路の信号伝播経路と同様に、スキャンチェーン上の信号伝播経路に対してもタイミング調整が必要である。その際、スキャンチェーン上のホールドタイムに関する設計制約が守れていない場合に、ホールドバッファを挿入してタイミング調整を行うことになるが、スキャンテスト回路１に挿入される各セレクタの遅延量が、ホールドバッファを挿入することによる全遅延量の一部を補うことができるため、ホールドバッファの削減が可能であるという利点もある。
【００５６】
なお、引用した上記の特許文献等の各開示は、本書に引用をもって繰り込むものとする。本発明の全開示（請求の範囲を含む）の枠内において、さらにその基本的技術思想に基づいて、実施形態の変更・調整が可能である。また、本発明の請求の範囲の枠内において種々の開示要素の多様な組み合わせ乃至選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。
【符号の説明】
【００５７】
１  スキャンテスト回路
１０〜３０  ロジック回路
ＩＮＶ０１〜ＩＮＶ０３  インバータ
ＳＥＬ０１〜ＳＥＬ０３  セレクタ
ＳＦＦ０１〜ＳＦＦ０３  スキャンフリップフロップ
【図１】
2012230036.tif 000003
【図２】
2012230036.tif 000004
【図３】
2012230036.tif 000005
【図４】
2012230036.tif 000006
【図５】
2012230036.tif 000007