(57)【特許請求の範囲】
【請求項１】
バウンダリスキャンテストの実行により入力された値を順次に保持して出力する複数段のレジスタ回路と、
前記複数段のレジスタ回路の各々の入力値と出力値を比較する比較回路と、
前記複数段のレジスタ回路のうち、前記比較回路による比較の結果、前記入力値と前記出力値が不一致であるレジスタ回路の前記出力値を固定して、該固定値が出力された後、前記固定値を他の値に切り替える制御回路とを有することを特徴とする電子回路装置。
【請求項２】
前記制御回路は、前記比較回路の比較結果に基づいて複数の制御信号を生成して、前記複数段のレジスタ回路にそれぞれ出力し、
前記複数段のレジスタ回路は、前記複数の制御信号にそれぞれ従って前記出力値を制御することを特徴とする請求項１に記載の電子回路装置。
【請求項３】
前記複数段のレジスタ回路には、第１フリップフロップ及び第２フリップフロップが交互に設けられ、
前記第１フリップフロップは、クロック信号の立ち上がりエッジを検出したとき、前記入力値を保持して出力し、
前記第２フリップフロップは、前記クロック信号の立ち下がりエッジを検出したとき、前記入力値を保持して出力し、
前記比較回路は、前記第１フリップフロップ及び前記第２フリップフロップごとに、前記入力値と前記出力値の排他的論理和を演算する演算回路を有することを特徴とする請求項１または２に記載の電子回路装置。
【請求項４】
入力された値を順次に保持して出力する複数段のレジスタ回路が設けられた電子回路装置のバウンダリスキャンテストを行う試験装置において、
前記複数段のレジスタ回路に、所定のパタンに従って値を順次に出力する出力部と、
前記電子回路装置に対し、前記複数段のレジスタ回路のうち、入力された値と出力した値が不一致であるレジスタ回路の出力値を固定し、該固定値が出力された後、前記固定値が他の値に切り替えるように指示する指示部と、
前記複数段のレジスタ回路から順次に出力された値が切り替わる境界を検出することにより、前記複数段のレジスタ回路のうち、入力された値と出力した値が不一致であるレジスタ回路を特定する特定部とを有することを特徴とする試験装置。
【請求項５】
前記出力部は、前記特定部において前記境界が検出されない場合、前記所定のパタンを変更し、変更後のパタンに従って値を出力することを特徴とする請求項４に記載の試験装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本件は、電子回路装置及び試験装置に関する。
【背景技術】
【０００２】
ＩＥＥＥ（The Institute of Electrical and Electronics Engineers, Inc.）１１４９．１に規定されたバウンダリスキャンテスト（boundary scan test）は、例えば、回路基板に実装されたＬＳＩ（Large Scale Integration）同士の端子間接続の確認を可能とする（例えば特許文献１、２参照）。バウンダリスキャンテストによれば、例えばＢＧＡ（Ball Grid Array）タイプのように、端子状態を直接目視できないＬＳＩであっても、端子のはんだ不良や配線のショート及びオープンを検出できる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００４−３２５１２４号公報
【特許文献２】特開平７−１５２５９５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかし、ＬＳＩのバウンダリスキャンテスト機能自体が故障状態または不安定状態である場合、正常な確認は不可能である。例えば、ＪＴＡＧ（Joint Test Action Group）チェーン上に、バウンダリスキャンレジスタに異常があるＬＳＩが存在する場合、接続不良と判定される箇所が、バウンダリスキャンテストを行うたびに変わるため、不良のＬＳＩを特定することができない。この場合、ＬＳＩを回路基板ごと廃棄せざるを得ず、異常なＬＳＩだけを廃棄する場合より損失が大きい。さらに、測定機器を用いた解析により異常なＬＳＩを特定できても、多くの時間を費やしてしまうという問題がある。
【０００５】
そこで本件は上記の課題に鑑みてなされたものであり、異常なバウンダリスキャンレジスタを検出する電子回路装置及び試験装置を提供することを目的とする。
【課題を解決するための手段】
【０００６】
本明細書に記載の電子回路装置は、バウンダリスキャンテストの実行により入力された値を順次に保持して出力する複数段のレジスタ回路と、前記複数段のレジスタ回路の各々の入力値と出力値を比較する比較回路と、前記複数段のレジスタ回路のうち、前記比較回路による比較の結果、前記入力値と前記出力値が不一致であるレジスタ回路の前記出力値を固定して、該固定値が出力された後、前記固定値を他の値に切り替える制御回路とを有する。
【０００７】
本明細書に記載の試験装置は、入力された値を順次に保持して出力する複数段のレジスタ回路が設けられた電子回路装置のバウンダリスキャンテストを行う試験装置において、前記複数段のレジスタ回路に、所定のパタンに従って値を順次に出力する出力部と、前記電子回路装置に対し、前記複数段のレジスタ回路のうち、入力された値と出力した値が不一致であるレジスタ回路の出力値を固定し、該固定値が出力された後、前記固定値が他の値に切り替えるように指示する指示部と、前記複数段のレジスタ回路から順次に出力された値が切り替わる境界を検出することにより、前記複数段のレジスタ回路のうち、入力された値と出力した値が不一致であるレジスタ回路を特定する特定部とを有する。
【発明の効果】
【０００８】
異常なバウンダリスキャンレジスタを検出できる。
【図面の簡単な説明】
【０００９】
【図１】バウンダリスキャンテストの試験システムの一例を示す構成図である。
【図２】試験対象のデバイスの一例を示す構成図である。
【図３】デバイス同士の端子間の接続が正常である場合の動作及びシリアルデータの入力値、出力値、及び期待値の一例を示す図である。
【図４】デバイス同士の端子間の接続が異常である場合の動作及びシリアルデータの入力値、出力値、及び期待値の一例を示す図である。
【図５】バウンダリスキャンレジスタが異常である場合の動作及びシリアルデータの入力値、出力値、及び期待値の一例を示す図である。
【図６】バウンダリスキャンレジスタが異常である場合の動作及びシリアルデータの入力値、出力値、及び期待値の他例を示す図である。
【図７】バウンダリスキャンセルの比較例を示す構成図である。
【図８】バウンダリスキャンレジスタの入力値及び出力値の比較手段の一例を示す構成図である。
【図９】正常時及び異常時のシフト動作を示す表である。
【図１０】バウンダリスキャンセルに比較回路を追加した構成の一例を示す構成図である。
【図１１】バウンダリスキャンレジスタの入力値及び出力値の比較手段の他例を示す構成図である。
【図１２】バウンダリスキャンセルに比較回路を追加した構成の他例を示す構成図である。
【図１３】バウンダリスキャンレジスタの入力値及び出力値の比較手段の他例を示す構成図である。
【図１４】バウンダリスキャンセルに比較回路を追加した構成の他例を示す構成図である。
【図１５】正常時及び異常時のシフト動作を示す表である。
【図１６】バウンダリスキャンセルに制御回路を追加した構成の一例を示す構成図である。
【図１７】試験装置の処理を示すフローチャートである。
【図１８】初期化時、異常再現時、及び出力制御時のバウンダリスキャンレジスタのセット値を示す図である。
【図１９】デバイスの処理を示すフローチャートである。
【図２０】試験装置の一例を示す構成図である。
【発明を実施するための形態】
【００１０】
図１は、バウンダリスキャンテストの試験システムの一例を示す構成図である。試験システムは、パーソナルコンピュータなどの端末装置９０と、バウンダリスキャンテスト用の試験装置９１と、試験対象の回路基板９２とを有する。
【００１１】
端末装置９０は、回路基板９２に実装されたデバイス及び配線に関する情報に基づいて生成された各種の試験パタンデータを、例えばネットワークを介してサーバなどから取得する。端末装置９０は、試験パタンデータを試験装置９１に送信し、また、試験結果のデータを試験装置９１から受信して、結果をディスプレイなどの表示装置に表示する。
【００１２】
試験装置９１は、端末装置９０から入力された試験パタンデータに基づいて、データ信号ＴＤＩ（Test Data In）及びクロック信号ＴＣＫ（Test Clock）を生成し、回路基板９２に出力する。また、試験装置９１は、試験パタンデータに基づいて、ＴＡＰ（Test Access Port）コントローラの状態制御信号ＴＭＳ（Test Mode Select）及びリセット信号ＴＲＳＴ（Test Reset）を生成し、回路基板９２に出力する。試験装置９１は、回路基板９２から出力されたデータ信号ＴＤＯ（Test Data Out）を受信して、データ信号ＴＤＯに基づいて試験結果のデータを生成し、端末装置９０に出力する。
【００１３】
回路基板９２は、試験装置９１から入力された各信号ＴＤＩ，ＴＣＫ，ＴＭＳ，ＴＲＳＴに従って、試験モードに移行し、バウンダリスキャンレジスタのデータシフトなどを実行する。回路基板９２は、試験結果としてデータ信号ＴＤＯを試験装置９１に出力する。回路基板９２には、状態制御信号ＴＭＳに従って状態が遷移するＴＡＰコントローラを備えた複数のデバイスが実装されている。
【００１４】
図２は、試験対象のデバイスの一例を示す構成図である。図２には、一例として、互いに接続された２つのデバイス１ａ，１ｂが示されているが、接続されたデバイス数及び接続形態に限定はない。
【００１５】
デバイス１ａ，１ｂは、バウンダリスキャンテストに対応するＬＳＩなどの電子回路装置の一例である。デバイス１ａ，１ｂは、複数の外部端子Ｔと、複数の外部端子Ｔにそれぞれ接続された複数段のバウンダリスキャンセルＢＣと、各バウンダリスキャンセルＢＣに接続された内部ロジック回路１０と、ＴＡＰコントローラ１１とを有する。
【００１６】
また、デバイス１ａ，１ｂには、外部端子Ｔとは別に、バウンダリスキャンテストの各信号ＴＤＩ，ＴＣＫ，ＴＭＳ，ＴＲＳＴ，ＴＤＯに対応する端子が設けられている。なお、以降の説明では、データ信号ＴＤＩ，ＴＤＯの端子を、ＴＤＩ，ＴＤＯとそれぞれ表記する。
【００１７】
内部ロジック回路１０は、デバイス１ａ，１ｂの機能を実現する論理回路である。内部ロジック回路１０には、複数の外部端子Ｔを介して信号が入出力される。デバイス１ａ，１ｂの外部端子Ｔの一部は、回路基板９２上の配線Ｗを介して互いに接続されている。
【００１８】
ＴＡＰコントローラ１１には、状態制御信号ＴＭＳ、リセット信号ＴＲＳＴ、及びクロック信号ＴＣＫが入力される。ＴＡＰコントローラ１１は、複数のバウンダリスキャンセルＢＣと接続され、状態制御信号ＴＭＳに従って状態遷移することでバウンダリスキャンテストのシーケンスを実行する。なお、ＴＡＰコントローラ１１は、リセット信号ＴＲＳＴの入力により初期状態に遷移する。
【００１９】
複数段のバウンダリスキャンセルＢＣは、バウンダリスキャンテストの実行により入力された値を順次に保持して出力する複数段のレジスタ回路の一例である。複数段のバウンダリスキャンセルＢＣは、入力端子ＴＤＩと出力端子ＴＤＯの間に直列に接続され、クロック信号ＴＣＫのエッジをトリガとして入力値をラッチすることにより、バウンダリスキャンレジスタとして保持する。
【００２０】
デバイス１ａ，１ｂは、ＪＴＡＧチェーン上で互いに接続されている。つまり、一方のデバイス１ａの出力端子ＴＤＯは、他方のデバイス１ｂの入力端子ＴＤＩに接続されている。このため、各デバイス１ａ，１ｂの複数段のバウンダリスキャンセルＢＣは、両方のデバイス１ａ，１ｂにわたるシフトレジスタとして機能する。
【００２１】
より具体的には、バウンダリスキャンセルＢＣは、クロック信号ＴＣＫに同期して、入力端子ＴＤＩまたは前段のバウンダリスキャンセルＢＣから入力されたシリアルデータをバウンダリスキャンレジスタとして保持し、後段のバウンダリスキャンセルＢＣに出力し、あるいは後段のバウンダリスキャンセルＢＣ及び出力端子ＴＤＯに出力する。つまり、複数のバウンダリスキャンセルＢＣは、前段から後段に向けて、順次にバウンダリスキャンレジスタの値をシフトさせる。デバイス１ｂの出力端子ＴＤＯから出力されたシリアルデータは、試験装置９１に入力される。
【００２２】
本実施例のバウンダリスキャンテストでは、デバイス１ａ，１ｂ同士の端子Ｔ間の接続が検査される。以下に、バウンダリスキャンセルＢＣの動作を説明する。
【００２３】
図３（ａ）は、デバイス１ａ，１ｂ同士の端子Ｔ間の接続が正常である場合の動作の一例を示す。図３（ａ）には、図２のデバイス１ａ，１ｂの端子Ｔの一部分が表されている。また、図３（ｂ）には、バウンダリスキャンセルＢＣごとのシリアルデータの入力値、出力値、及び期待値の一例が示されている。
【００２４】
デバイス１ａには、直列に接続されたバウンダリスキャンセルＢＣ＃１〜＃５が設けられ、デバイス１ｂには、直列に接続されたバウンダリスキャンセルＢＣ＃６〜＃１０が設けられている。デバイス１ａのバウンダリスキャンセルＢＣ＃１〜＃５は、配線Ｗを介して、他方のデバイス１ｂのバウンダリスキャンセルＢＣ＃６〜＃１０とそれぞれ接続されている。また、バウンダリスキャンセルＢＣ＃５，＃６は、端子ＴＤＩ，ＴＤＯを介して互いに接続されている。
【００２５】
バウンダリスキャンセルＢＣ＃１〜＃５には、シリアルデータの入力値の一例として、「１」，「０」，「１」，「０」，「１」（２進数）がそれぞれ入力される。デバイス１ａバウンダリスキャンセルＢＣ＃１〜＃５の入力値は、バウンダリスキャンレジスタとして保持された後、端子Ｔ間の配線Ｗを介してデバイス１ｂのバウンダリスキャンセルＢＣ＃６〜＃１０に出力される。例えば、入力値「１」は、ハイ（High）レベルの電圧‘Ｈ’として出力され、入力値「０」は、ロー（Low）レベルの電圧‘Ｌ’として出力される。
【００２６】
これにより、バウンダリスキャンセルＢＣ＃６〜＃１０は、「１」，「０」，「１」，「０」，「１」を保持する。バウンダリスキャンセルＢＣ＃１〜＃１０に保持されたバウンダリスキャンレジスタの値は、シフト動作によりデバイス１ｂの出力端子ＴＤＯから出力され、試験装置９１において所定の期待値と照合される。なお、期待値は、予め試験装置９１に保持されている。
【００２７】
試験装置９１は、シリアルデータの出力値「１」，「０」，「１」，「０」・・・が期待値「１」，「０」，「１」，「０」・・・と一致するため、デバイス１ａ，１ｂの端子Ｔ間の接続は正常であると判定する。
【００２８】
一方、図４（ａ）は、デバイス１ａ，１ｂ同士の端子Ｔ間の接続が異常である場合の動作の一例を示す。図４（ａ）において、図３（ａ）と共通する構成については同一の符号を付し、その説明を省略する。また、図４（ｂ）には、バウンダリスキャンセルＢＣごとのシリアルデータの入力値、出力値、及び期待値の一例が示されている。
【００２９】
本例において、バウンダリスキャンセルＢＣ＃１，＃１０の端子Ｔ間の接続は、配線Ｗの不良（×印参照）のためにオープン状態である。このため、バウンダリスキャンセルＢＣ＃１に保持されたバウンダリスキャンレジスタの値「１」は、ハイレベルの電圧‘Ｈ’としてバウンダリスキャンセルＢＣ＃１０に出力されるが、バウンダリスキャンセルＢＣ＃１０は「０」を保持する。
【００３０】
したがって、バウンダリスキャンセルＢＣ＃１０から試験装置９１への出力値は「０」となる。試験装置９１は、バウンダリスキャンセルＢＣ＃１０の出力値「０」が当該期待値「１」に一致しないため（符号Ｅ１参照）、バウンダリスキャンセルＢＣ＃１，＃１０の端子Ｔ間の接続の異常を検出する。これにより、試験結果として、バウンダリスキャンセルＢＣ＃１，＃１０の各端子Ｔまたは端子Ｔ間の配線Ｗに、はんだ不良、切断、またはグランドショートが存在するとの判定がなされる。
【００３１】
しかし、デバイス１ａ，１ｂのバウンダリスキャンテスト機能自体が故障状態または不安定状態である場合、正常な確認は不可能である。例えば、デバイス１ａのバウンダリスキャンレジスタに異常がある場合でも、接続不良と判定される箇所が、バウンダリスキャンテストを行うたびに変わるため、不良のデバイス１ａを特定することができない。以下にバウンダリスキャンレジスタが異常である場合の動作を、例を挙げて説明する。
【００３２】
図５（ａ）は、バウンダリスキャンレジスタが異常である場合の動作の一例を示す。図５（ａ）において、図３（ａ）と共通する構成については同一の符号を付し、その説明を省略する。また、図５（ｂ）には、バウンダリスキャンセルＢＣごとのシリアルデータの入力値、出力値、及び期待値の一例が示されている。
【００３３】
バウンダリスキャンセルＢＣ＃３は、不安定状態であるとき、シフト動作を行うたびに、正常な値を保持する場合と、異常な値を保持する場合とがランダムに発生する。本例において、バウンダリスキャンセルＢＣ＃３は、後段のバウンダリスキャンセルＢＣ＃４，ＢＣ＃５の各入力値「０」，「１」を保持するシフト動作では、正常な値「０」，「１」を保持する。しかし、バウンダリスキャンセルＢＣ＃３は、自己の入力値「１」を保持するシフト動作では、異常な値「０」を保持する。
【００３４】
すなわち、バウンダリスキャンセルＢＣ＃３は、バウンダリスキャンセルＢＣ＃４，ＢＣ＃５の各入力値を保持するシフト動作には成功したが、自己の入力値「１」を保持するシフト動作には、ラッチ不良のために失敗している。これにより、バウンダリスキャンセルＢＣ＃３は、誤ったバウンダリスキャンレジスタの値「０」（正しい値は「１」）を保持する。該バウンダリスキャンレジスタの値「０」は、ローレベルの電圧‘Ｌ’としてバウンダリスキャンセルＢＣ＃８に出力されるので、バウンダリスキャンセルＢＣ＃８は「０」を保持する。
【００３５】
したがって、バウンダリスキャンセルＢＣ＃８から試験装置９１への出力値は「０」となる。試験装置９１は、バウンダリスキャンセルＢＣ＃８の出力値「０」が当該期待値「１」に一致しないため（符号Ｅ２参照）、正常であるにもかかわらず、バウンダリスキャンセルＢＣ＃３，＃８の端子Ｔ間の接続の異常を検出する。
【００３６】
また、図６（ａ）は、バウンダリスキャンレジスタの保持値が異常である場合の動作の他例を示す。図６（ａ）において、図３（ａ）と共通する構成については同一の符号を付し、その説明を省略する。また、図６（ｂ）には、バウンダリスキャンセルＢＣごとのシリアルデータの入力値、出力値、及び期待値の他例が示されている。
【００３７】
本例において、バウンダリスキャンセルＢＣ＃３は、図５（ａ）及び図５（ｂ）の場合とは異なり、自己と後段のバウンダリスキャンセルＢＣ＃４の各入力値「１」，「０」を保持するシフト動作では、正常な値「１」，「０」を保持する。しかし、バウンダリスキャンセルＢＣ＃３は、後段のバウンダリスキャンセルＢＣ＃５の入力値「１」を保持するシフト動作では、異常な値「０」を保持する。つまり、バウンダリスキャンセルＢＣ＃５にセットされるべき値「１」が、不安定状態のバウンダリスキャンセルＢＣ＃３を通過したときに発生したラッチ不良によるシフト動作の失敗のため、異常な値「０」として後段のバウンダリスキャンセルＢＣ＃４にシフトされる。
【００３８】
これにより、バウンダリスキャンセルＢＣ＃５は、誤ったバウンダリスキャンレジスタの値「０」（正しい値は「１」）を保持している。このため、該バウンダリスキャンレジスタの値「０」は、ローレベルの電圧‘Ｌ’としてバウンダリスキャンセルＢＣ＃６に出力されるので、バウンダリスキャンセルＢＣ＃６は「０」を保持する。
【００３９】
したがって、バウンダリスキャンセルＢＣ＃６から試験装置９１への出力値は「０」となる。試験装置９１は、バウンダリスキャンセルＢＣ＃６の出力値「０」が当該期待値「１」に一致しないため（符号Ｅ３参照）、正常であるにもかかわらず、バウンダリスキャンセルＢＣ＃５，＃６の端子Ｔ間の接続の異常を検出する。
【００４０】
次に、バウンダリスキャンセルＢＣの構成を説明する。図７は、バウンダリスキャンセルＢＣの比較例を示す構成図である。図７には、バウンダリスキャンセルＢＣの一例としてＢＣ＿１を上げるが、これに限定されず、ＢＣ＿２〜ＢＣ＿１０であってもよい。
【００４１】
バウンダリスキャンセルＢＣは、セレクタ２０，２３及びフリップフロップ２１，２２を有する。セレクタ２０は、ＴＡＰコントローラ１１からの制御信号ＳｈｉｆｔＤＲ（Shift Data Register）に従って、外部端子Ｔからの入力値と前段のバウンダリスキャンセルＢＣ（または入力端子ＴＤＩ）からの入力値の一方を選択してフリップフロップ２１に出力する。フリップフロップ２１は、ＴＡＰコントローラ１１からのクロック信号ＣｌｏｃｋＤＲ（Clock Data Register）の立ち上がりエッジを検出したとき、セレクタ２０からの入力値をラッチすることにより、バウンダリスキャンレジスタとして保持する。
【００４２】
フリップフロップ２１が保持する値は、後段のバウンダリスキャンセルＢＣ（または出力端子ＴＤＯ）及び他のフリップフロップ２２に出力される。フリップフロップ２２は、ＴＡＰコントローラ１１からの制御信号ＵｐｄａｔｅＤＲ（Update Data Register）の立ち上がりエッジを検出したとき、フリップフロップ２１からの入力値を保持してセレクタ２３に出力する。
【００４３】
セレクタ２３は、ＴＡＰコントローラ１１からの制御信号Ｍｏｄｅに従って、内部ロジック回路１０からの入力値とフリップフロップ２２からの入力値の一方を選択して外部端子Ｔに出力する。なお、制御信号ＳｈｉｆｔＤＲ，ＵｐｄａｔｅＤＲ，Ｍｏｄｅは、ＴＡＰコントローラ１１の状態遷移に応じて出力され、クロック信号ＣｌｏｃｋＤＲは、クロック信号ＴＣＫに基づいて生成される。
【００４４】
バウンダリスキャンセルＢＣがシリアルデータのシフト動作を行うとき、セレクタ２０は、実線で示されるように、前段のバウンダリスキャンセルＢＣ（または入力端子ＴＤＩ）からの入力値を選択してフリップフロップ２１に出力する。フリップフロップ２１は、該入力値を保持して後段のバウンダリスキャンセルＢＣ（または出力端子ＴＤＯ）に出力する。
【００４５】
また、上述した例において、一方のデバイス１ａのバウンダリスキャンセルＢＣが、配線Ｗを介して他方のデバイス１ｂのバウンダリスキャンセルＢＣに値を出力するとき、フリップフロップ２２は、点線で示されるように、他のフリップフロップ２１からの入力値を保持してセレクタ２３に出力する。セレクタ２３は、フリップフロップ２２からの入力値を選択して外部端子Ｔに出力する。これにより、フリップフロップ２１に保持された値が、配線Ｗを介して他方のデバイス１ｂの当該バウンダリスキャンセルＢＣに入力される。
【００４６】
また、一方のデバイス１ｂが他方のデバイス１ａからの入力値をバウンダリスキャンセルＢＣに保持するとき、セレクタ２０は、一点鎖線で示されるように、外部端子Ｔからの入力値を選択してフリップフロップ２１に出力する。フリップフロップ２１は、該入力値を保持する。
【００４７】
このように、バウンダリスキャンセルＢＣは、フリップフロップ２１にシフトデータの入力値を、バウンダリスキャンレジスタとして保持する。このため、フリップフロップ２１が不良である場合、上述したようにバウンダリスキャンレジスタが異常となる。
【００４８】
そこで、本実施例のデバイス１ａ，１ｂには、異常なバウンダリスキャンレジスタを検出するため、各バウンダリスキャンレジスタの入力値及び出力値を比較して、該比較結果を出力する比較回路が設けられている。
【００４９】
図８は、バウンダリスキャンレジスタの入力値及び出力値の比較手段の一例を示す構成図である。図８には、複数段のバウンダリスキャンセルＢＣの各フリップフロップ２１が、直列に接続された形態で示されている。複数のフリップフロップ２１は、入力端子ＴＤＩから入力されたシリアルデータのシフト動作を行い、出力端子ＴＤＯから出力する。
【００５０】
比較回路３ａは、各バウンダリスキャンセルＢＣのフリップフロップ２１（＃１，＃２，・・・，＃Ｎ（Ｎ：正の整数））に対応して設けられたフリップフロップ３０（＃１，＃２，・・・，＃Ｎ）及びＸＯＲ（排他的論理和）回路３１を有する。各フリップフロップ３０は、クロック信号ＣｌｏｃｋＤＲの立ち上がりエッジを検出したとき、当該フリップフロップ２１の入力値を保持してＸＯＲ回路３１に出力する。
【００５１】
ＸＯＲ回路３１は、当該フリップフロップ３０からの入力値とバウンダリスキャンセルＢＣの当該フリップフロップ２１からの入力値の排他的論理和を演算し、演算結果として演算値ＥＸ１，ＥＸ２，・・・，ＥＸｎを出力する。つまり、ＸＯＲ回路３１は、クロック信号ＣｌｏｃｋＤＲに同期して、当該フリップフロップ２１の入力値及び出力値（保持値）の排他的論理和を演算する。これにより、比較回路３ａは、複数段のバウンダリスキャンセルＢＣの各々の入力値及び出力値を比較する。
【００５２】
図９（ａ）及び図９（ｂ）には、正常時及び異常時のシフト動作がそれぞれ示されている。図９（ａ）及び図９（ｂ）は、入力端子ＴＤＩから入力されたシリアルデータの入力値ａ，ｂ，・・・，ｆ（２進数）、各フリップフロップ２１，３０（＃１，＃２，＃Ｎ）の出力値（保持値）、及びＸＯＲ回路３１の演算値ＥＸ１，ＥＸ２，ＥＸｎを示す。なお、本例では、フリップフロップ２１，３０の段数を３段（つまりＮ＝３）とする。
【００５３】
本例において、入力端子ＴＤＩには、クロック信号ＣｌｏｃｋＤＲに同期してシリアルデータａ，ｂ，・・・，ｆが順次に入力される。シフト動作が正常である場合、図９（ａ）に示されるように、各フリップフロップ２１，３０（＃１，＃２，＃Ｎ）は、クロック信号ＣｌｏｃｋＤＲに同期してシリアルデータａ，ｂ，・・・，ｆを順次に保持して出力する。ＸＯＲ回路３１の演算値ＥＸ１，ＥＸ２，ＥＸｎは、当該フリップフロップ２１，３０（＃１，＃２，＃Ｎ）からの各入力値が常に一致するため、全て「０」となる。
【００５４】
一方、シフト動作が異常である場合、図９（ｂ）に示されるように、例えば、フリップフロップ２１（＃１）は、入力端子ＴＤＩから入力値ｂが入力されたとき、入力値ｂとは異なる入力値ｘを保持する（符号Ｅ４参照）。これにより、当該ＸＯＲ回路３１の演算値ＥＸ１は、フリップフロップ２１，３０（＃１）からの各入力値が一致しないため、「１」となる（符号Ｅ５参照）。
【００５５】
図１０は、バウンダリスキャンセルＢＣに比較回路３ａを追加した構成の一例を示す構成図である。図１０は、１つのバウンダリスキャンセルＢＣに対応する比較回路３ａの構成を示す。比較回路３ａは、上記のフリップフロップ３０及びＸＯＲ回路３１に加えて、フリップフロップ３２を有する。
【００５６】
フリップフロップ３０は、クロック信号ＣｌｏｃｋＤＲに同期して、セレクタ２０からの入力値を保持し、ＸＯＲ回路３１に出力する。ＸＯＲ回路３１は、フリップフロップ２１，３０の各入力値の排他的論理和を演算し、演算値ＥＸｎをフリップフロップ３２に出力する。フリップフロップ３２は、クロック信号ＣｌｏｃｋＤＲの立ち上がりエッジを検出したとき、演算値ＥＸｎを保持して出力する。
【００５７】
このように、比較回路３ａは、シフト動作中、ＸＯＲ回路３１によりフリップフロップ２１の入力値及び出力値を比較して、比較結果（ＥＸ１，ＥＸ２，・・・，ＥＸｎ）を出力する。
【００５８】
また、図１１は、バウンダリスキャンレジスタの入力値及び出力値の比較手段の他例を示す構成図である。図１１には、複数段のバウンダリスキャンセルＢＣの各フリップフロップ２１が、直列に接続された形態で示されている。複数のフリップフロップ２１は、入力端子ＴＤＩから入力されたシリアルデータのシフト動作を行い、出力端子ＴＤＯから出力する。
【００５９】
比較回路３ｂは、各バウンダリスキャンセルＢＣのフリップフロップ２１（＃１，＃２，・・，＃Ｎ）に対応して設けられたフリップフロップ３０（＃１，＃２，・・，＃Ｎ）及びＸＯＲ回路３１を有する。フリップフロップ３０（＃１，＃２，・・，＃Ｎ）は、図８の例とは異なり、互いに直列に接続されている。このため、フリップフロップ３０（＃１，＃２，・・，＃Ｎ）は、フリップフロップ２１（＃１，＃２，・・，＃Ｎ）と同期してシリアルデータのシフト動作を行う。
【００６０】
フリップフロップ３０（＃１）は、クロック信号ＣｌｏｃｋＤＲの立ち上がりエッジを検出したとき、当該フリップフロップ２１（＃１）の入力値を保持して当該ＸＯＲ回路３１及び後段のフリップフロップ３０（＃２）に出力する。該ＸＯＲ回路３１は、フリップフロップ３０（＃１）からの入力値とフリップフロップ２１（＃１）からの入力値の排他的論理和を演算し、演算値ＥＸ１を出力する。
【００６１】
フリップフロップ３０（＃２）は、クロック信号ＣｌｏｃｋＤＲの立ち上がりエッジを検出したとき、前段のフリップフロップ３０（＃１）からの入力値を保持して当該ＸＯＲ回路３１及び後段のフリップフロップ３０（＃３）に出力する。該ＸＯＲ回路３１は、フリップフロップ３０（＃２）からの入力値とフリップフロップ２１（＃２）からの入力値の排他的論理和を演算し、演算値ＥＸ２を出力する。なお、フリップフロップ３０（＃１）より後段のフリップフロップ３０（＃２，・・・，＃Ｎ）も、上記と同様に動作する。
【００６２】
このように、ＸＯＲ回路３１は、クロック信号ＣｌｏｃｋＤＲに同期して、当該フリップフロップ２１，３０の出力値（保持値）同士の排他的論理和を演算する。これにより、比較回路３ａは、複数段のバウンダリスキャンセルＢＣの各々の入力値及び出力値を比較する。なお、本例におけるシフト動作は、図９（ａ）及び図９（ｂ）と同様である。
【００６３】
図１２は、バウンダリスキャンセルＢＣに比較回路３ｂを追加した構成の一例を示す構成図である。図１２には、一例として１段目及び２段目のバウンダリスキャンセルＢＣに対応する比較回路３ｂの構成が示されている。比較回路３ｂは、上記のフリップフロップ３０及びＸＯＲ回路３１に加えて、フリップフロップ３２を有する。
【００６４】
１段目のフリップフロップ３０（＃１）は、クロック信号ＣｌｏｃｋＤＲに同期して、セレクタ２０からの入力値を保持し、当該ＸＯＲ回路３１及び後段のフリップフロップ３０（＃２）に出力する。該ＸＯＲ回路３１は、フリップフロップ２１，３０（＃１）の各入力値の排他的論理和を演算し、演算値ＥＸ１をフリップフロップ３２（＃１）に出力する。フリップフロップ３２（＃１）は、クロック信号ＣｌｏｃｋＤＲの立ち上がりエッジを検出したとき、演算値ＥＸ１を保持して出力する。
【００６５】
２段目のフリップフロップ３０（＃２）は、クロック信号ＣｌｏｃｋＤＲに同期して、前段のフリップフロップ３０（＃１）からの入力値を保持し、当該ＸＯＲ回路３１及び後段のフリップフロップ３０（＃３）に出力する。該ＸＯＲ回路３１は、フリップフロップ２１，３０（＃２）の各入力値の排他的論理和を演算し、演算値ＥＸ２をフリップフロップ３２（＃２）に出力する。フリップフロップ３２（＃２）は、クロック信号ＣｌｏｃｋＤＲの立ち上がりエッジを検出したとき、演算値ＥＸ２を保持して出力する。
【００６６】
また、図１３は、バウンダリスキャンレジスタの入力値及び出力値の比較手段の他例を示す構成図である。図１３には、複数段のバウンダリスキャンセルＢＣの各フリップフロップ２１，２１ａが、直列に接続された形態で示されている。複数のフリップフロップ２１，２１ａは、入力端子ＴＤＩから入力されたシリアルデータのシフト動作を行い、出力端子ＴＤＯから出力する。
【００６７】
本例では、偶数番号のバウンダリスキャンセルＢＣ＃２，＃４，・・・には、第１フリップフロップ２１が設けられ、奇数番号のバウンダリスキャンセルＢＣ＃１，＃３，・・・には、第１フリップフロップ２１とはトリガが異なる第２フリップフロップ２１ａが設けられている。つまり、複数段のバウンダリスキャンセルＢＣには、第１フリップフロップ２１及び第２フリップフロップ２１ａが交互に設けられている。
【００６８】
第１フリップフロップ２１は、クロック信号ＣｌｏｃｋＤＲの立ち上がりエッジを検出したとき、入力値を保持して出力する。一方、第２フリップフロップ２１ａは、クロック信号ＣｌｏｃｋＤＲの立ち下がりエッジを検出したとき、入力値を保持して出力する。
【００６９】
比較回路３ｃは、各第１フリップフロップ２１及び各第２フリップフロップ２１ａに接続されたＸＯＲ回路３１を有する。ＸＯＲ回路３１は、第１フリップフロップ２１及び第２フリップフロップ２１ａごとに、入力値と出力値の排他的論理和を演算する演算回路の一例である。
【００７０】
ＸＯＲ回路３１は、第１フリップフロップ２１及び第２フリップフロップ２１ａの入力値と出力値の排他的論理和を演算し、演算値ＥＸ１，ＥＸ２，ＥＸ３，ＥＸ４，・・・を出力する。これにより、比較回路３ｃは、複数段のバウンダリスキャンセルＢＣの各々の入力値及び出力値を比較する。
【００７１】
図１４は、バウンダリスキャンセルＢＣに比較回路３ｃを追加した構成の他例を示す構成図である。図１４には、互いに接続された一組の奇数段及び偶数段のバウンダリスキャンセルＢＣ＃ｉ，＃ｉ＋１（ｉ：奇数）に対応する比較回路３ｃの構成が示されている。比較回路３ｃは、上記のＸＯＲ回路３１に加えて、フリップフロップ３２ａ，３２ｂを有する。
【００７２】
奇数段のＸＯＲ回路３１は、当該第２フリップフロップ２１ａ（＃ｉ）からの入力値と、前段（偶数段）のバウンダリスキャンセルＢＣの第１フリップフロップ２１（＃ｉ−１）からの入力値との排他的論理和を演算し、演算値ＥＸｉをフリップフロップ３２ａに出力する。フリップフロップ３２ａは、クロック信号ＣｌｏｃｋＤＲの立ち上がりエッジを検出したとき、演算値ＥＸｉを保持して出力する。
【００７３】
偶数段のＸＯＲ回路３１は、当該第１フリップフロップ２１（＃ｉ＋１）からの入力値と、前段（奇数段）のバウンダリスキャンセルＢＣの第１フリップフロップ２１ａ（＃ｉ）からの入力値との排他的論理和を演算し、演算値ＥＸｉ＋１をフリップフロップ３２ｂに出力する。フリップフロップ３２ｂは、クロック信号ＣｌｏｃｋＤＲの立ち下がりエッジを検出したとき、演算値ＥＸｉ＋１を保持して出力する。
【００７４】
図１５（ａ）及び図１５（ｂ）には、本例における正常時及び異常時のシフト動作がそれぞれ示されている。図１５（ａ）及び図１５（ｂ）は、クロック信号ＣｌｏｃｋＤＲ、入力端子ＴＤＩから入力されたシリアルデータの入力値ａ，ｂ，・・・，ｆと、第１フリップフロップ２１（＃２，＃４）及び第２フリップフロップ２１ａ（＃１，＃３）の出力値とを示す。さらに、図１５（ａ）及び図１５（ｂ）は、比較回路３ｃの各フリップフロップ３２ａ（＃１，＃３），３２ｂ（＃２，＃４）の出力値と、各ＸＯＲ回路３１の演算値ＥＸ１〜ＥＸ４とを示す。
【００７５】
本例において、入力端子ＴＤＩには、クロック信号ＣｌｏｃｋＤＲに同期してシリアルデータａ，ｂ，・・・，ｆが順次に入力される。シフト動作が正常である場合、図１５（ａ）に示されるように、各フリップフロップ２１，２１ａ（＃１〜＃４）は、クロック信号ＣｌｏｃｋＤＲに同期してシリアルデータａ，ｂ，・・・，ｆを順次に保持して出力する。これにより、シリアルデータａ，ｂ，・・・，ｆは、クロック信号ＣｌｏｃｋＤＲの半周期ごとにシフトする。
【００７６】
したがって、第１フリップフロップ２１（＃２，＃４）及び第２フリップフロップ２１ａ（＃１，＃３）は、クロック信号ＣｌｏｃｋＤＲの半周期ごとに入力値及び出力値（保持値）が一致する。このため、各ＸＯＲ回路３１の演算値ＥＸ１〜ＥＸ４は、クロック信号ＣｌｏｃｋＤＲの半周期ごとに「１」（不一致状態）及び「０」（一致状態）を繰り返す。
【００７７】
しかし、奇数段のフリップフロップ３２ａ（＃１，＃３）は、クロック信号ＣｌｏｃｋＤＲの立ち上がりエッジをトリガにラッチ動作を行うため、正しい状態である「０」を演算値ＥＸ１，ＥＸ３として保持して出力する。同様に、偶数段のフリップフロップ３２ｂ（＃２，＃４）は、クロック信号ＣｌｏｃｋＤＲの立ち下がりエッジをトリガにラッチ動作を行うため、正しい状態である「０」を演算値ＥＸ２，ＥＸ４として保持して出力する。
【００７８】
シフト動作が異常である場合、例えば、フリップフロップ２１ａ（＃１）は、入力端子ＴＤＩから入力値ａが入力されたとき、入力値ａとは異なる入力値ｘを保持する（符号Ｅ６参照）。これにより、当該ＸＯＲ回路３１の演算値ＥＸ１は、フリップフロップ２１ａ（＃１）の入力値及び出力値が一致しないため、「１」となる（符号Ｅ７参照）。フリップフロップ３２ａ（＃１）は、クロック信号ＣｌｏｃｋＤＲの立ち上がりエッジを検出したとき、該演算値ＥＸ１（＝「１」）を保持して出力する。
【００７９】
このように、比較回路３ｃは、シフト動作中、ＸＯＲ回路３１によりフリップフロップ２１，２１ａの入力値及び出力値を比較して、比較結果（ＥＸ１〜ＥＸ４）を出力する。
【００８０】
また、本例では、入力値を保持するためのトリガが相違する第１フリップフロップ２１及び第２フリップフロップ２１ａが交互に設けられているため、図８〜図１２に示された例とは異なり、比較回路３ｃからフリップフロップ３０を省くことができる。
【００８１】
上述した構成により得られた演算値ＥＸ１〜ＥＸｎは、例えば専用端子から試験装置９１に出力される。例えば、デバイス１ａ，１ｂは、全ての演算値ＥＸ１〜ＥＸｎをＡＮＤ演算し、該演算値をクロック信号ＣｌｏｃｋＤＲでリタイミングして専用端子に出力するか、あるいはラッチして保持してもよい。これにより、異常なバウンダリスキャンレジスタがデバイス１ａ，１ｂ単位で特定される。
【００８２】
一方、異常なバウンダリスキャンレジスタをバウンダリスキャンセルＢＣ単位で特定する場合、デバイス数が多いほど、特定に多くの時間がかかるため、デバイス１ａ，１ｂは、バウンダリスキャンセルＢＣの番号（＃１，＃２，・・・）をコード化して試験装置９１に通知してもよい。この場合、例えば、デバイス１ａ，１ｂごとに、バウンダリスキャンセル数に応じたビット数分の専用端子が設けられる。例えば、２５６個のバウンダリスキャンセルＢＣの場合、２５６の２進数表示に必要な８ビット分（８個）の専用端子が設けられ、また、１０２４個のバウンダリスキャンセルＢＣの場合、１０２４の２進数表示に必要な１０ビット分（１０個）の専用端子が設けられる。
【００８３】
しかし、上述した手法では、デバイス１ａ，１ｂに、上記のＡＮＤ演算及びコード化などを実行する論理回路と複数の専用端子とが追加される。このような大規模なハードウェアの追加を避けるため、例えば、以下に述べる簡単な制御回路を追加することにより、試験装置９１は、出力端子ＴＤＯから出力されるシリアルデータに基づいて、異常なバウンダリスキャンレジスタを特定してもよい。
【００８４】
図１６は、バウンダリスキャンセルＢＣに制御回路を追加した構成の一例を示す構成図である。図１６には、図１０に示された比較回路３ａが例示されているが、図１２または図１４に示された比較回路３ｂ，３ｃが用いられてもよい。なお、図１６において、図１０と共通する構成については同一の符号を付し、その説明を省略する。また、図１６には、１つのバウンダリスキャンセルＢＣに対応する制御回路４の構成が示されているが、制御回路４は、各バウンダリスキャンセルＢＣについて同様の構成を備える。
【００８５】
制御回路４は、ラッチ回路４０と、ＡＮＤ回路４１，４２と、切替制御部４３とを有する。制御回路４は、比較回路３ａと接続され、比較回路３ａから出力された演算値ＥＸｎに応じてバウンダリスキャンセルＢＣの出力値を制御する。このため、バウンダリスキャンセルＢＣにおいて、フリップフロップ２１と後段のバウンダリスキャンセルＢＣ（または出力端子ＴＤＯ）への出力端の間にセレクタ２４が追加されている。
【００８６】
ラッチ回路４０は、比較回路３ａのフリップフロップ３２から出力された演算値ＥＸｎを保持する。ラッチ回路４０に保持された演算値ＥＸｎは、ＡＮＤ回路４１，４２の入力端子の一方にそれぞれ入力される。切替制御部４３は、ＴＡＰコントローラ１１の制御に従った制御値Ｃ０，Ｃ１を生成して出力する論理回路である。
【００８７】
切替制御部４３は、制御値Ｃ０，Ｃ１をＡＮＤ回路４１，４２の入力端子の他方にそれぞれ出力する。ＡＮＤ回路４１，４２は、制御値Ｃ０，Ｃ１及び演算値ＥＸｎのＡＮＤ演算をそれぞれ行い、該演算結果を示す選択信号ＳＥＬ＿０，ＳＥＬ＿１をバウンダリスキャンセルＢＣ内のセレクタ２４にそれぞれ出力する。なお、選択信号ＳＥＬ＿０，ＳＥＬ＿１は、複数段のバウンダリスキャンセルＢＣをそれぞれ制御する複数の制御信号の一例である。
【００８８】
セレクタ２４は、選択信号ＳＥＬ＿０，ＳＥＬ＿１のレベル（「０」または「１」）に応じた出力値を選択して、後段のバウンダリスキャンセルＢＣ（または出力端子ＴＤＯ）に出力する。より具体的には、セレクタ２４は、選択値ＳＥＬ＿０，ＳＥＬ＿１がともに「０」である場合、フリップフロップ２１からの入力値を選択して出力する。
【００８９】
また、セレクタ２４は、選択値ＳＥＬ＿０が「１」であり、ＳＥＬ＿１が「０」である場合、固定値「０」を選択して出力する。一方、選択値ＳＥＬ＿０が「０」であり、ＳＥＬ＿１が「１」である場合、セレクタ２４は、固定値「１」を選択して出力する。
【００９０】
上記の構成により、制御回路４は、ＴＡＰコントローラ１１の制御に従ってバウンダリスキャンセルＢＣの出力値を制御する。これにより、バウンダリスキャンセルＢＣは、演算値ＥＸｎが「０」である場合、保持しているシリアルデータを後段のバウンダリスキャンセルＢＣ（または出力端子ＴＤＯ）に出力する。一方、演算値ＥＸｎが「１」である場合、バウンダリスキャンセルＢＣは、固定値「０」または「１」を後段のバウンダリスキャンセルＢＣ（または出力端子ＴＤＯ）に出力する。
【００９１】
制御回路４は、比較回路３ａ〜３ｃによる比較の結果、複数段のバウンダリスキャンセルＢＣのうち、入力値と出力値が不一致であるバウンダリスキャンセルＢＣの出力値を「０」に固定し、該固定値が出力された後、固定値を「１」に切り替える。これにより、試験装置９１は、出力端子ＴＤＯから出力されたシリアルデータから、固定値「０」及び「１」の境界を検出することにより、異常なバウンダリスキャンレジスタを特定する。以下に、試験装置９１の処理について述べる。
【００９２】
図１７は、試験装置９１の処理を示すフローチャートである。本処理は、図５及び図６に例示したように、バウンダリスキャンレジスタのシフト動作の異常が発生した場合に実行される。また、図１８（ａ）〜図１８（ｃ）には、図３〜図６に例示されたデバイス１ａ，１ｂに対して本処理を行った場合における初期化時、異常再現時、及び出力制御時のバウンダリスキャンレジスタの値が示されている。
【００９３】
試験装置９１は、デバイス１ａの入力端子ＴＤＩにＡｌｌ「０」（２進数）のシリアルデータを出力する（ステップＳｔ１）。これにより、各バウンダリスキャンセルＢＣ＃１〜＃１０のバウンダリスキャンレジスタが、図１８（ａ）に示されるように「０」に初期化される。
【００９４】
次に、試験装置９１は、デバイス１ａの入力端子ＴＤＩにトグルパタンのシリアルデータを出力する（ステップＳｔ２）。トグルパタンのシリアルデータとしては、例えば、「０１０１０１・・・」、「１０１０１０・・・」、「００１１００１１・・・」、及び「１１００１１００・・・」（２進数）などが挙げられる。これにより、バウンダリスキャンレジスタの異常なシフト動作が再現しやすくなる。
【００９５】
異常なシフト動作が再現すると、例えば、図１８（ｂ）に示されるように、異常なバウンダリスキャンセルＢＣ＃４より後段の全バウンダリスキャンセルＢＣ＃５〜＃１０のバウンダリスキャンレジスタが異常値「ｘ」となる。異常なバウンダリスキャンセルＢＣ＃４は、異常状態を演算値ＥＸ４＝「１」としてラッチしておく。
【００９６】
次に、試験装置９１は、「Instruction OPCODE」のコマンドを用いて、ＴＡＰコントローラ１１に、異常なバウンダリスキャンレジスタの出力を「０」に固定するように指示する（ステップＳｔ３）。このとき、ＴＡＰコントローラ１１は、切替制御部４３の制御値Ｃ０を「１」とし、制御値Ｃ１を「０」とする。このため、演算値ＥＸｎが「１」である異常なバウンダリスキャンセルＢＣの出力値は、「０」に固定される。一方、演算値ＥＸｎが「０」である正常なバウンダリスキャンセルＢＣの出力値は、固定されず、フリップフロップ２１に保持されたシリアルデータの値となる。
【００９７】
次に、試験装置９１は、デバイス１ａの入力端子ＴＤＩにＡｌｌ「１」（２進数）のシリアルデータを出力する（ステップＳｔ４）。これにより、図１８（ｃ）に示されるように、異常なバウンダリスキャンセルＢＣ＃４及び当該バウンダリスキャンセルＢＣ＃４より前段のバウンダリスキャンセルＢＣ＃１〜＃３の各バウンダリスキャンレジスタの値は「１」となる。一方、異常なバウンダリスキャンセルＢＣ＃４より後段のバウンダリスキャンセルＢＣ＃５〜＃１０の各バウンダリスキャンレジスタの値は、上記のステップＳｔ３における出力値の固定制御により「０」となる。
【００９８】
次に、試験装置９１は、「Instruction OPCODE」のコマンドを用いて、ＴＡＰコントローラ１１に、異常なバウンダリスキャンレジスタの出力を「１」に固定するように指示する（ステップＳｔ５）。このとき、ＴＡＰコントローラ１１は、切替制御部４３の制御値Ｃ０を「０」とし、制御値Ｃ１を「１」とする。このため、演算値ＥＸｎが「１」である異常なバウンダリスキャンセルＢＣの出力値は、「１」に固定される。一方、演算値ＥＸｎが「０」である正常なバウンダリスキャンセルＢＣの出力値は、固定されず、フリップフロップ２１に保持されたシリアルデータの値となる。
【００９９】
このように、制御回路４は、比較回路３ａ〜３ｃの比較結果に基づいて複数の選択信号ＳＥＬ＿０，ＳＥＬ＿１を生成して、複数段のバウンダリスキャンセルＢＣにそれぞれ出力する。複数段のバウンダリスキャンセルＢＣは、複数の選択信号ＳＥＬ＿０，ＳＥＬ＿１にそれぞれ従って出力値を制御する。このため、制御回路４は、複数段のバウンダリスキャンセルＢＣから、入力値と出力値が不一致であるバウンダリスキャンセルＢＣを選択して制御する手間が省かれる。
【０１００】
次に、試験装置９１は、バウンダリスキャンセルＢＣ＃１〜＃１０から全てのバウンダリスキャンレジスタを読み出す（ステップＳｔ６）。これにより、出力端子ＴＤＯから試験装置９１にシリアルデータが入力される。このとき、仮にバウンダリスキャンセルＢＣ＃４が異常なシフト動作を行っても、出力値が「１」に固定されているため、異常値「ｘ」が後段のバウンダリスキャンセルＢＣに出力されることはない。
【０１０１】
次に、試験装置９１は、読み出したバウンダリスキャンレジスタの値（図１８（ｃ）の符号Ｈ参照）から、異常なシフト動作の再現の成否を判定する（ステップＳｔ７）。試験装置９１は、バウンダリスキャンレジスタの値が全て「１」である場合、再現に失敗したと判定し（ステップＳｔ７のＮｏ）、トグルパタンを変更したうえで（ステップＳｔ１０）、再びステップＳｔ１の処理を行う。
【０１０２】
一方、試験装置９１は、バウンダリスキャンレジスタの値が全て「１」ではない場合、再現に成功したと判定する（ステップＳｔ７のＹｅｓ）。この場合、試験装置９１は、読み出したバウンダリスキャンレジスタの「０」及び「１」の境界を検出して（ステップＳｔ８）、異常なデバイス１ａ，１ｂ及び異常なバウンダリスキャンレジスタを特定する（ステップＳｔ９）。
【０１０３】
図１８（ｃ）の符号Ｈで示された例では、「０」及び「１」の境界は、デバイス１ａのバウンダリスキャンセルＢＣ＃４，＃５の間に存在する。したがって、試験装置９１は、デバイス１ａのバウンダリスキャンセルＢＣ＃４のバウンダリスキャンレジスタが異常であることを検出する。このようにして、試験装置９１は処理を行う。
【０１０４】
また、図１９は、デバイス１ａ，１ｂの処理を示すフローチャートである。より具体的には、図１９は、図１７に示された処理に対応するデバイス１ａ，１ｂ側の処理を示す。
【０１０５】
各バウンダリスキャンセルＢＣは、上記のステップＳｔ１の処理に応じて、Ａｌｌ「０」のシリアルデータをシフトする（ステップＳｔ２１）。次に、各バウンダリスキャンセルＢＣは、上記のステップＳｔ２の処理に応じて、トグルパタンのシリアルデータをシフトする（ステップＳｔ２２）。このとき、異常なシフト動作が再現すれば、図８（ｂ）に例示されるように、異常なバウンダリスキャンセルＢＣ＃４より後段のバウンダリスキャンセルＢＣ＃５〜＃１０は異常値「ｘ」を保持する。
【０１０６】
上記のステップＳｔ３以降の処理に応じたデバイス１ａ，１ｂの動作は、バウンダリスキャンセルＢＣごとに、バウンダリスキャンレジスタが正常である場合と異常である場合に分かれる。バウンダリスキャンレジスタが正常である場合（ステップＳｔ２３のＮｏ）、バウンダリスキャンセルＢＣ＃１〜＃３，＃５〜＃１０は、セレクタ２４がフリップフロップ２１の保持値を選択するため、入力されたシリアルデータをシフトする（ステップＳｔ２７）。
【０１０７】
また、バウンダリスキャンレジスタが異常である場合（ステップＳｔ２３のＹｅｓ）、バウンダリスキャンセルＢＣ＃４は、上記のステップＳｔ３の処理に応じて、セレクタ２４が固定値「０」を選択することにより、出力値を「０」に固定する（ステップＳｔ２４）。次に、該バウンダリスキャンセルＢＣ＃４は、上記のステップＳｔ４の処理に応じて、シフト動作を行う（ステップＳｔ２５）。これにより、該バウンダリスキャンセルＢＣ＃４は、後段のバウンダリスキャンセルＢＣ＃５に「０」を出力するため、図１８（ｃ）に例示されるように、バウンダリスキャンセルＢＣ＃５〜＃１０は「０」を保持する。
【０１０８】
次に、該バウンダリスキャンセルＢＣ＃４は、上記のステップＳｔ５の処理に応じて、セレクタ２４が固定値「１」を選択することにより、出力値を「１」に固定する（ステップＳｔ２６）。このため、上記のステップＳｔ６の処理により読み出されたバウンダリスキャンレジスタの値は、図１８（ｃ）の符号Ｈに示されるように、バウンダリスキャンセルＢＣ＃１〜＃４が「１」で、バウンダリスキャンセルＢＣ＃５〜＃１０が「０」となる。このようにして、デバイス１ａ，１ｂは、処理を行う。
【０１０９】
このように、複数段のバウンダリスキャンセルＢＣ＃１〜＃１０から読み出されたバウンダリスキャンレジスタの値は、連続する「１」と連続する「０」の境界を有する。そして、「０」及び「１」の境界は、バウンダリスキャンレジスタが異常なバウンダリスキャンセルＢＣ＃４を示す。
【０１１０】
したがって、試験装置９１は、出力端子ＴＤＯから出力されるシリアルデータから「０」及び「１」の境界を検出することにより、異常なバウンダリスキャンセルＢＣ＃４を特定できるため、大規模なハードウェアの変更が不要である。一方、デバイス１ａ，１ｂも、先に述べた手法のような大規模なハードウェアの追加が不要である。よって、上記の手法によると、コストアップを抑制しつつ、異常なバウンダリスキャンレジスタを検出できる。
【０１１１】
なお、本実施例において、制御回路４は、異常なバウンダリスキャンセルＢＣ＃４の出力値を「０」に固定し、シフト動作の後、該出力値を「１」に固定したが、これに限定されない。これとは逆に、制御回路４は、異常なバウンダリスキャンセルＢＣ＃４の出力値を「１」に固定し、シフト動作の後、該出力値を「０」に固定してもよい。
【０１１２】
次に、試験装置９１の構成を説明する。図２０は、試験装置９１の一例を示す構成図である。試験装置９１は、上述したように、複数段のバウンダリスキャンセルＢＣ＃１〜＃１０が設けられたデバイス１ａ，１ｂのバウンダリスキャンテストを行う。
【０１１３】
試験装置９１は、出力部９１０と、制御部９１１と、特定部９１２と、比較部９１３と、期待値格納部９１４とを有する。制御部９１１は、端末装置９０からコマンドを受け付けて、該コマンドに従って出力部９１０と、特定部９１２と、比較部９１３とを制御する。例えば、制御部９１１は、バウンダリスキャンテストを行う場合、比較部９１３を起動し、図１７に示されるように、異常なバウンダリスキャンレジスタの特定処理を行う場合、特定部９１２を起動する。
【０１１４】
出力部９１０は、バウンダリスキャンセルＢＣ＃１〜＃１０に所定のパタンに従って値を順次に出力する。出力された値は、データ信号ＴＤＩとしてデバイス１ａ，１ｂに入力される。図１７に示された処理において、出力部９１０は、Ａｌｌ「０」（２進数）のシリアルデータを出力し（ステップＳｔ１）、トグルパタンのシリアルデータを出力し（ステップＳｔ２）、さらにＡｌｌ「１」（２進数）のシリアルデータを出力する（ステップＳｔ４）。
【０１１５】
制御部９１１は、受け付けたコマンドに従い、クロック信号ＴＣＫ、状態制御信号ＴＭＳ、及びリセット信号ＴＲＳＴを生成してデバイス１ａ，１ｂのＴＡＰコントローラ１１に出力する。図１７に示された処理において、制御部９１１は、デバイス１ａ，１ｂに、異常なバウンダリスキャンレジスタの出力を、「０」に固定するように指示し（ステップＳｔ３）、また、「１」に固定するように指示する（ステップＳｔ５）。このとき、制御部９１１は、上記の「Instruction OPCODE」のコマンドに応じた状態制御信号ＴＭＳを生成して、デバイス１ａ，１ｂのＴＡＰコントローラ１１に出力する。
【０１１６】
このように、制御部９１１は、指示部として機能し、デバイス１ａ，１ｂに対し、バウンダリスキャンセルＢＣ＃１〜＃１０のうち、入力された値と出力した値が不一致であるバウンダリスキャンセルの出力値を「０」に固定し、該固定値が出力された後、固定値が他の値「１」に切り替えるように指示する。
【０１１７】
特定部９１２は、図１７に示された処理において、バウンダリスキャンセルＢＣ＃１〜＃１０から全てのバウンダリスキャンレジスタを読み出して（ステップＳｔ６）、異常なシフト動作の再現の成否を判定する（ステップＳｔ７）。特定部９１２は、再現に成功したと判定した場合（ステップＳｔ７のＹｅｓ）、読み出したバウンダリスキャンレジスタの「０」及び「１」の境界を検出して（ステップＳｔ８）、異常なデバイス１ａ，１ｂ及び異常なバウンダリスキャンレジスタを特定する（ステップＳｔ９）。
【０１１８】
すなわち、特定部９１２は、バウンダリスキャンセルＢＣ＃１〜＃１０から順次に出力された値が切り替わる境界を検出することにより、入力された値と出力した値が不一致であるバウンダリスキャンセルを特定する。特定部９１２は、特定した異常なデバイス１ａ，１ｂ及び異常なバウンダリスキャンレジスタを、特定結果として端末装置９０に通知する。
【０１１９】
また、特定部９１２は、再現に失敗したと判定した場合（ステップＳｔ７のＮｏ）、つまり読み出したバウンダリスキャンレジスタの「０」及び「１」の境界を検出できない場合、その旨を制御部９１１に通知する。制御部９１１は、該通知を受けると、出力部９１０にトグルパタンを変更するように指示する（ステップＳｔ１０）。
【０１２０】
出力部９１０は、変更後のトグルパタンで再度シリアルデータを出力する。すなわち、出力部９１０は、特定部９１２において境界が検出されない場合、所定のパタンを変更し、変更後のパタンに従って値を出力する。これにより、バウンダリスキャンレジスタの異常なシフト動作が再現される。
【０１２１】
比較部９１３は、図３〜図６を参照して述べたように、デバイス１ａ，１ｂから、バウンダリスキャンセルＢＣ＃１〜＃１０に保持されたバウンダリスキャンレジスタを読み出して、期待値格納部９１４から読み出した期待値と比較する。期待値格納部９１４は、例えばメモリなどの情報格納手段であり、バウンダリスキャンセルＢＣ＃１〜＃１０の出力値の期待値を格納する。比較部９１３は、比較により得た試験結果を端末装置９０に出力する。
【０１２２】
なお、出力部９１０、制御部９１１、特定部９１２、及び比較部９１３は、ＬＳＩなどのハードウェアで構成されてもよいし、ソフトウェアで構成されてもよい。出力部９１０、制御部９１１、特定部９１２、及び比較部９１３は、ソフトウェアで構成される場合、ＣＰＵ（Central Processing Unit）などのプロセッサに読み込まれたプログラムの機能の一部としてそれぞれ形成される。
【０１２３】
これまで述べたように、実施例に係る電子回路装置１ａ，１ｂは、複数段のレジスタ回路ＢＣと、比較回路３ａ〜３ｃと、制御回路４とを有する。複数段のレジスタ回路ＢＣは、バウンダリスキャンテストの実行により入力された値を順次に保持して出力する。
【０１２４】
比較回路３ａ〜３ｃは、複数段のレジスタ回路ＢＣの各々の入力値と出力値を比較する。制御回路４は、複数段のレジスタ回路ＢＣのうち、比較回路３ａ〜３ｃによる比較の結果、入力値と出力値が不一致であるレジスタ回路ＢＣの出力値を固定して、該固定値が出力された後、固定値を他の値に切り替える。
【０１２５】
上記の構成によると、比較回路３ａ〜３ｃは、複数段のレジスタ回路ＢＣの各々の入力値と出力値を比較するので、入力値と出力値が不一致であるレジスタ回路ＢＣを検出できる。制御回路４は、該レジスタ回路ＢＣの出力値を固定して、該固定値が出力された後、固定値を他の値に切り替える。
【０１２６】
したがって、複数段のレジスタ回路ＢＣから順次に出力される値が切り替わる箇所を検出することにより、異常なバウンダリスキャンレジスタを検出することができる。
【０１２７】
また、実施例に係る試験装置９１は、入力された値を順次に保持して出力する複数段のレジスタ回路ＢＣが設けられた電子回路装置１ａ，１ｂのバウンダリスキャンテストを行う。試験装置９１は、出力部９１０と、制御部９１１と、特定部９１２とを有する。
【０１２８】
出力部９１０は、複数段のレジスタ回路ＢＣに、所定のパタンに従って値を順次に出力する。制御部９１１は、電子回路装置１ａ，１ｂに対し、複数段のレジスタ回路ＢＣのうち、入力された値と出力した値が不一致であるレジスタ回路の出力値を固定し、該固定値が出力された後、固定値が他の値に切り替えるように指示する。特定部９１２は、複数段のレジスタ回路ＢＣから順次に出力された値が切り替わる境界を検出することにより、複数段のレジスタ回路ＢＣのうち、入力された値と出力した値が不一致であるレジスタ回路を特定する。
【０１２９】
したがって、試験装置９１は、異常なバウンダリスキャンレジスタを検出することができる。
【０１３０】
上述した実施形態は本発明の好適な実施の例である。但し、これに限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々変形実施可能である。
【符号の説明】
【０１３１】
１ａ，１ｂ      デバイス
３ａ〜３ｃ      比較回路
４       制御回路
１１       ＴＡＰコントローラ
９１       試験装置
９１０      出力部
９１１      制御部
９１２      特定部
ＢＣ       バウンダリスキャンセル
【図１】
0006413777.tif 000002
【図２】
0006413777.tif 000003
【図３】
0006413777.tif 000004
【図４】
0006413777.tif 000005
【図５】
0006413777.tif 000006
【図６】
0006413777.tif 000007
【図７】
0006413777.tif 000008
【図８】
0006413777.tif 000009
【図９】
0006413777.tif 000010
【図１０】
0006413777.tif 000011
【図１１】
0006413777.tif 000012
【図１２】
0006413777.tif 000013
【図１３】
0006413777.tif 000014
【図１４】
0006413777.tif 000015
【図１５】
0006413777.tif 000016
【図１６】
0006413777.tif 000017
【図１７】
0006413777.tif 000018
【図１８】
0006413777.tif 000019
【図１９】
0006413777.tif 000020
【図２０】
0006413777.tif 000021