(57)【要約】      （修正有）【課題】スキャンテスト設計が施された機能ブロックと付加回路とを含む論理回路全体を故障診断を可能とし、診断処理時間を大幅に短縮可能とする装置、方法の提供。【解決手段】論理回路内のスキャンフリップフロップで構成されるスキャンチェーンの構成情報、論理回路の設計情報を入力データ１として入力し、論理回路においてパラレル領域以外の回路部をシリアル領域として抽出することで、前記論理回路を前記パラレル領域とシリアル領域に分割する回路分割手段２と、正常回路における論理値を期待値として求める期待値計算手段３と、テストパタンに対する論理回路のテスト出力を入力データ１として入力し、テスト出力および、シリアル領域とパラレル領域の期待値を用いて、パラレル領域およびシリアル領域を故障診断し、出力部に出力する故障診断手段４とを備える。【選択図】図１
2013019744.tif 000002
【特許請求の範囲】
【請求項１】
スキャンテスト回路を備えた論理回路内のスキャンフリップフロップで構成されるスキャンチェーンの構成情報及び前記論理回路の設計データ情報を入力し、
前記論理回路において、前記スキャンチェーンを含み、前記スキャンチェーンのスキャンフリップフロップの出力によって値が設定されるノード及び前記ノードに接続するゲートを含む１つ又は複数の回路部をそれぞれパラレル領域とし、前記論理回路において前記パラレル領域以外の１つ又は複数の回路部をそれぞれシリアル領域として抽出することで、前記論理回路をパラレル領域とシリアル領域に分割し、分割したパラレル領域とシリアル領域の回路情報を記憶部に記憶する回路分割手段と、
前記記憶部からシリアル領域とパラレル領域の回路情報を読み出し、出力と入力が接続関係にあるシリアル領域とパラレル領域の１つ又は複数の組み合せについて、前記出力を含む一方の領域に対してシリアル又はパラレルシミュレーションのうち対応する一方のシミュレーションを行い、前記シミュレーションの結果得られたパタンを用いて、前記入力を含む他方の領域に対してシリアル又はパラレルシミュレーションのうち対応する他方のシミュレーションを行うことで、前記１つ又は複数の組み合せのシリアル領域とパラレル領域の正常回路における論理値を期待値として求め、前記シリアル領域と前記パラレル領域の期待値を記憶部に記憶する期待値計算手段と、
前記記憶部から前記シリアル領域と前記パラレル領域の期待値を読み出し、前記テストパタンに対する前記論理回路のテスト出力を入力し、前記テスト出力、及び、前記シリアル領域と前記パラレル領域の前記期待値を用いて、前記論理回路の前記パラレル領域及び前記シリアル領域の故障診断を行う故障診断手段と、
を備えた故障箇所推定装置。
【請求項２】
前記回路分割手段は、
前記論理回路の全ノードの状態値を、不定値を含む予め定められた所定の論理値で初期化し、
前記スキャンフリップフロップの保持する状態値を、初期化した前記論理値と異なる論理値に設定し、
前記スキャンフリップフロップの保持する状態値が変化しないように回路動作及び前記テストパタンを制御しながら、前記論理回路のシミュレーションを実行し、
前記論理回路のシミュレーションによって、
前記スキャンフリップフロップの保持する前記状態値と同じ論理値に変化したノード及び前記ノードに接続するゲートを含む１つ又は複数の回路部をそれぞれ前記パラレル領域として抽出し、
前記論理回路中の前記パラレル領域以外の１つ又は複数の回路部をそれぞれ前記シリアル領域として抽出する、請求項１記載の故障箇所推定装置。
【請求項３】
前記期待値計算手段は、
入力されたテストパタンを用いて、予め定められた一つのシリアル領域又はパラレル領域のシリアル又はパラレルシミュレーションを実行し、
前記シリアル又はパラレルシミュレーションの結果得られた前記一つのシリアル領域又はパラレル領域の出力パタンを用いて、前記一つのシリアル領域又はパラレル領域の出力と接続関係にある入力を有する別のパラレル領域又はシリアル領域のパラレル又はシリアルシミュレーションを実行し、
前記パラレル又はシリアルパラレルシミュレーションの結果得られた前記別のシリアル領域又はパラレル領域の出力パタンを用いて、前記別のパラレル領域又はシリアル領域の出力と接続関係にある入力を有するさらに別のシリアル領域又はパラレル領域のシリアル又はパラレルシミュレーションを実行し、
一方の領域のシミュレーション結果を用いた他方の領域のシミュレーションをシリアル領域とパラレル領域で交互に行い、前記シリアル領域と前記パラレル領域の期待値を求める、請求項１又は２記載の故障箇所推定装置。
【請求項４】
前記期待値計算手段は、
前記テストパタンを用いて、前記シリアル領域のうち、少なくとも前記スキャンチェーンの入力ノードと接続関係にある出力ノードを有する第１の回路部のシリアルシミュレーションを実行し、
前記シリアルシミュレーションの結果得られた、前記シリアル領域の前記回路部の前記出力ノードからのパタンを、前記パラレル領域のうち、少なくとも、前記シリアル領域の出力ノードと接続関係にある入力ノードを有する前記スキャンチェーンのスキャンフリップフロップに設定してパラレルシミュレーションを実行し、
前記パラレルシミュレーションの結果得られたパタンを用いて、前記シリアル領域のうち、少なくとも、前記パラレル領域の前記スキャンチェーンの出力ノードと接続関係のある入力ノードを有する第２の回路部のシリアルシミュレーションを実行することで、前記シリアル領域と前記パラレル領域のノードの期待値を求める、請求項１又は２記載の故障箇所推装置。
【請求項５】
前記故障診断手段は、
前記シリアル領域の故障候補を、前記シリアル領域の故障候補と接続関係にある前記パラレル領域の出力ノード又は前記スキャンフリップフロップに設定し、
前記パラレル領域の故障候補を、前記パラレル領域の故障候補と接続関係にある前記シリアル領域の出力ノードに設定する、請求項１乃至４のいずれか１項に記載の故障箇所推定装置。
【請求項６】
前記回路分割手段は、
（Ａ）前記論理回路の全ノードの状態値を不定値を含む任意の論理値で初期化し、
（Ｂ）前記スキャンフリップフロップの保持する状態値を前記初期化した論理値と異なる論理値に設定し、
（Ｃ）前記論理回路のシミュレーションの実行にあたり、
（Ｃ−１）それぞれの前記スキャンチェーンの入力端子と出力端子と前記スキャンチェーンの入力端子と出力端子にそれぞれ接続するノードとの間を切断して前記論理回路のシミュレーションを実行、
（Ｃ−２）前記スキャンフリップフロップへのクロック信号を供給するノードを切断するか、又は前記テストパタンのクロック入力を削除し前記スキャンフリップフロップに対してクロックを供給せずに前記論理回路のシミュレーションを実行、
（Ｃ−３）前記スキャンフリップフロップに設定した状態値の変更を禁止して、前記論理回路のシミュレーションを実行、
の前記（Ｃ−１）乃至（Ｃ−３）のいずれかを行い、
（Ｄ）前記シミュレーションによって、前記スキャンフリップフロップの保持する状態値と同じ論理値に変化したノード及び前記ノードに接続するゲートを前記パラレル領域として抽出し、前記パラレル領域以外の論理回路をシリアル領域として抽出する、請求項１記載の故障箇所推定装置。
【請求項７】
前記シリアル領域が、
入力された前記テストパタンに応答して複数の前記スキャンチェーンの入力ノードへそれぞれ入力するパタンを生成する第１の回路部と、
複数の前記スキャンチェーンの出力ノードからのパタンを受け圧縮して出力する第２の回路部と、
を含み、
前記期待値計算手段は、
前記シリアル領域の前記第１の回路部に、前記テストパタンを印加してシリアルシミュレーションを実行し、前記シリアル領域の前記第１の回路部から生成されるパタン出力データを取得し、
前記パラレル領域の回路情報を読み出し、前記パタン出力データを、前記スキャンチェーンの入力パタンとして、前記パラレル領域のパラレルシミュレーションを実行し、前記パラレル領域の出力を前記パラレル領域の期待値をとして取得し、
前記パラレル領域のシミュレーションで求めた前記パラレル領域の期待値を、前記シリアル領域の前記第２の回路部に与え、且つ、前記シリアル領域の前記第１の回路部には前記テストパタンを与えてシリアルシミュレーションを実行し、前記シリアル領域の期待値を求める、請求項１記載の故障箇所推定装置。
【請求項８】
前記故障診断手段は、
前記テスト出力に含まれる、故障の影響によって正常回路の期待値とは異なる値を出力する端子又は故障の影響によって正常回路の期待値とは異なる値を取り込むスキャンフリップフロップを含む故障出力端子が属する前記シリアル領域又は前記パラレル領域に対して故障診断を行い、
前記故障診断で得られた前記シリアル領域の故障候補に
前記パラレル領域と接続関係にある前記シリアル領域の入力端子が含まれる場合、
前記入力端子と接続関係にある前記パラレル領域の出力端子又は前記スキャンフリップフロップを故障出力端子として、前記パラレル領域内の故障診断を行い、
前記故障診断で得られた前記パラレル領域の故障候補に
スキャンフリップフロップが含まれ、且つ、前記スキャンフリップフロップが属するスキャンチェーンの入力端子が前記シリアル領域と接続関係にある、又は、
前記シリアル領域と接続関係にある前記パラレル領域の入力端子が含まれる場合、
前記入力端子と接続関係にある前記シリアル領域の出力端子を故障出力端子として、前記シリアル領域の故障診断を行い、
前記故障診断で得られた前記シリアル領域の故障候補に、
前記パラレル領域と接続関係にある前記シリアル領域の入力端子が含まれない場合、又は、
前記故障診断で得られた前記パラレル領域の故障候補に、
前記シリアル領域と接続関係にある前記パラレル領域の入力端子が含まれず、且つ、スキャンフリップフロップが含まれない、又は、前記故障候補に含まれるスキャンフリップフロップが属するスキャンチェーンの入力端子が前記シリアル領域と接続関係にない場合、
故障診断を終了する、請求項１記載の故障箇所推定装置。
【請求項９】
前記故障診断手段において、
前記故障出力端子から故障伝播経路を入力側に追跡することで故障箇所を推定する、
故障を定義して論理回路のシミュレーションを実行して、シミュレーション結果と故障出力端子とが一致する箇所を故障箇所として推定する、
故障箇所と故障出力端子との対応が記述された辞書を用いて、テスト出力から故障箇所を推定する、
のいずれかを行う、請求項１又は８記載の故障箇所推定装置。
【請求項１０】
前記論理回路が、
それぞれがスキャンテスト回路を備えた論理回路からなる機能ブロックと、
前記機能ブロックを制御するコントローラ回路と、
を含む、請求項１乃至９のいずれか１項に記載の故障箇所推定装置。
【請求項１１】
前記故障診断手段から出力される前記パラレル領域の故障候補と前記シリアル領域の故障候補とを表示する表示部を備え、
前記表示部は、前記論理回路のレイアウト上に、前記パラレル領域の故障候補と前記シリアル領域の故障候補を、判別を容易化する予め定められた所定の表示形態で表示する、請求項１、５、８、９のいずれか１項に記載の故障箇所推定装置。
【請求項１２】
スキャンテスト回路を備えた論理回路の故障診断を、データ処理装置を用いて行う方法であって、
前記論理回路内のスキャンフリップフロップで構成されるスキャンチェーンの構成情報及び前記論理回路の設計データ情報を入力し、
前記論理回路において、前記スキャンチェーンを含み、前記スキャンチェーンのスキャンフリップフロップの出力によって値が設定されるノード及び前記ノードに接続するゲートを含む１つ又は複数の回路部をそれぞれパラレル領域とし、前記論理回路において前記パラレル領域以外の１つ又は複数の回路部をそれぞれシリアル領域として抽出することで、前記論理回路を前記パラレル領域とシリアル領域に分割し、分割した前記パラレル領域と前記シリアル領域の回路情報を記憶部に記憶する回路分割ステップと、
前記記憶部からシリアル領域とパラレル領域の回路情報を読み出し、出力と入力が接続関係にあるシリアル領域とパラレル領域の１つ又は複数の組み合せについて、前記出力を含む一方の領域に対してシリアル又はパラレルシミュレーションのうち対応する一方のシミュレーションを行い、前記シミュレーションの結果得られたパタンを用いて、前記入力を含む他方の領域に対してシリアル又はパラレルシミュレーションのうち対応する他方のシミュレーションを行うことで、前記１つ又は複数の組み合せのシリアル領域とパラレル領域の正常回路における論理値を期待値として求め、前記シリアル領域と前記パラレル領域の期待値を記憶部に記憶する期待値計算ステップと、
前記記憶部から前記シリアル領域と前記パラレル領域の期待値を読み出し、前記テストパタンに対する前記論理回路のテスト出力を入力し、前記テスト出力、及び、前記シリアル領域と前記パラレル領域の前記期待値を用いて、前記論理回路の前記パラレル領域及び前記シリアル領域の故障診断を行う故障診断ステップと、
を含む故障箇所推方法。
【請求項１３】
前記回路分割ステップにおいて、
前記論理回路の全ノードの状態値を、不定値を含む予め定められた所定の論理値で初期化し、
前記スキャンフリップフロップの保持する状態値を、初期化した前記論理値と異なる論理値に設定し、
前記スキャンフリップフロップの保持する状態値が変化しないように回路動作及び前記テストパタンを制御しながら、前記論理回路のシミュレーションを実行し、
前記論理回路の前記シミュレーションによって、
前記スキャンフリップフロップの保持する前記状態値と同じ論理値に変化したノード及び前記ノードに接続するゲートを含む１つ又は複数の回路部をそれぞれ前記パラレル領域として抽出し、前記論理回路中の前記パラレル領域以外の１つ又は複数の回路部をそれぞれ前記シリアル領域として抽出し、
前記期待値計算ステップにおいて、
前記テストパタンを用いて、前記シリアル領域のうち、少なくとも前記スキャンチェーンの入力ノードと接続関係にある出力ノードを有する第１の回路部のシリアルシミュレーションを実行し、
前記シリアルシミュレーションの結果得られた、前記シリアル領域の前記回路部の前記出力ノードからのパタンを、前記パラレル領域のうち、少なくとも、前記シリアル領域の出力ノードと接続関係にある入力ノードを有する前記スキャンチェーンのスキャンフリップフロップに設定してパラレルシミュレーションを実行し、
前記パラレルシミュレーションの結果得られたパタンを用いて、前記シリアル領域のうち、少なくとも、前記パラレル領域の前記スキャンチェーンの出力ノードと接続関係のある入力ノードを有する第２の回路部のシリアルシミュレーションを実行することで、前記シリアル領域と前記パラレル領域のノードの期待値を求め、
前記故障診断ステップにおいて、
前記シリアル領域の故障候補を、前記シリアル領域の故障候補と接続関係にある前記パラレル領域の出力ノード又は前記スキャンフリップフロップに設定し、
前記パラレル領域の故障候補を、前記パラレル領域の故障候補と接続関係にある前記シリアル領域の出力ノードに設定する、請求項１２記載の故障箇所推方法。
【請求項１４】
前記回路分割ステップにおいて、
（Ａ）前記論理回路の全ノードの状態値を不定値を含む任意の論理値で初期化し、
（Ｂ）前記スキャンフリップフロップの保持する状態値を前記初期化した論理値と異なる論理値に設定し、
（Ｃ）前記論理回路のシミュレーションの実行にあたり、
（Ｃ−１）それぞれの前記スキャンチェーンの入力端子と出力端子と前記スキャンチェーンの入力端子と出力端子にそれぞれ接続するノードとの間を切断して前記論理回路のシミュレーションを実行、
（Ｃ−２）前記スキャンフリップフロップへのクロック信号を供給するノードを切断するか、又は前記テストパタンのクロック入力を削除し前記スキャンフリップフロップに対してクロックを供給せずに前記論理回路のシミュレーションを実行、
（Ｃ−３）前記スキャンフリップフロップに設定した状態値の変更を禁止して、前記論理回路のシミュレーションを実行、
の前記（Ｃ−１）乃至（Ｃ−３）のいずれかを行い、
（Ｄ）前記シミュレーションによって、前記スキャンフリップフロップの保持する状態値と同じ論理値に変化したノード及び前記ノードに接続するゲートを前記パラレル領域として抽出し、前記パラレル領域以外の論理回路をシリアル領域として抽出する、請求項１２記載の故障箇所推方法。
【請求項１５】
前記シリアル領域が、
入力された前記テストパタンに応答して複数の前記スキャンチェーンの入力ノードへそれぞれ入力するパタンを生成する第１の回路部と、
複数の前記スキャンチェーンの出力ノードからのパタンを受け圧縮して出力する第２の回路と、
を含み、
前記期待値計算ステップにおいて、
前記シリアル領域の前記第１の回路部に、前記テストパタンを印加してシリアルシミュレーションを実行し、前記シリアル領域の前記第１の回路部から生成されるパタン出力データを取得し、
前記パラレル領域の回路情報を読み出し、前記パタン出力データを、前記スキャンチェーンの入力パタンとして、前記パラレル領域のパラレルシミュレーションを実行し、前記パラレル領域の出力を前記パラレル領域の期待値をとして取得し、
前記パラレル領域のシミュレーションで求めた前記パラレル領域の期待値を、前記シリアル領域の前記第２の回路部に与え、且つ、前記シリアル領域の前記第１の回路部には前記テストパタンを与えてシリアルシミュレーションを実行し、前記シリアル領域の期待値を求める、請求項１２記載の故障箇所推方法。
【請求項１６】
前記故障診断ステップにおいて、
前記テスト出力に含まれる、故障の影響によって正常回路の期待値とは異なる値を出力する端子又は故障の影響によって正常回路の期待値とは異なる値を取り込むスキャンフリップフロップを含む故障出力端子が属する前記シリアル領域又は前記パラレル領域に対して故障診断を行い、
前記故障診断で得られた前記シリアル領域の故障候補に
前記パラレル領域と接続関係にある前記シリアル領域の入力端子が含まれる場合、
前記入力端子と接続関係にある前記パラレル領域の出力端子又は前記スキャンフリップフロップを故障出力端子として、前記パラレル領域内の故障診断を行い、
前記故障診断で得られた前記パラレル領域の故障候補に、
スキャンフリップフロップが含まれ、且つ、前記スキャンフリップフロップが属するスキャンチェーンの入力端子が前記シリアル領域と接続関係にある、又は、
前記シリアル領域と接続関係にある前記パラレル領域の入力端子が含まれる場合、
前記入力端子と接続関係にある前記シリアル領域の出力端子を故障出力端子として、前記シリアル領域の故障診断を行い、
前記故障診断で得られた前記シリアル領域の故障候補に、
前記パラレル領域と接続関係にある前記シリアル領域の入力端子が含まれない場合、又は、
前記故障診断で得られた前記パラレル領域の故障候補に、
前記シリアル領域と接続関係にある前記パラレル領域の入力端子が含まれず、且つ、スキャンフリップフロップが含まれない、又は、前記故障候補に含まれるスキャンフリップフロップが属するスキャンチェーンの入力端子が前記シリアル領域と接続関係にない場合、
故障診断を終了する、請求項１２記載の故障箇所推方法。
【請求項１７】
スキャンテスト回路を備えた論理回路の故障診断を行う装置を構成するコンピュータに、
前記論理回路内のスキャンフリップフロップで構成されるスキャンチェーンの構成情報及び前記論理回路の設計データ情報を入力し、
前記論理回路において、前記スキャンチェーンを含み、前記スキャンチェーンのスキャンフリップフロップの出力によって値が設定されるノード及び前記ノードに接続するゲートを含む回路部をパラレル領域とし、前記論理回路において前記パラレル領域以外の回路部をシリアル領域として抽出することで、前記論理回路を前記パラレル領域とシリアル領域に分割し、分割した前記パラレル領域と前記シリアル領域の回路情報を記憶部に記憶する回路分割処理と、
前記記憶部からシリアル領域とパラレル領域の回路情報を読み出し、出力と入力が接続関係にあるシリアル領域とパラレル領域の１つ又は複数の組み合せについて、前記出力を含む一方の領域に対してシリアル又はパラレルシミュレーションのうち対応する一方のシミュレーションを行い、前記シミュレーションの結果得られたパタンを用いて、前記入力を含む他方の領域に対してシリアル又はパラレルシミュレーションのうち対応する他方のシミュレーションを行うことで、前記１つ又は複数の組み合せのシリアル領域とパラレル領域の正常回路における論理値を期待値として求め、前記シリアル領域と前記パラレル領域の期待値を記憶部に記憶する期待値計算処理と、
前記記憶部から前記シリアル領域と前記パラレル領域の期待値を読み出し、前記テストパタンに対する前記論理回路のテスト出力を入力し、前記テスト出力、及び、前記シリアル領域と前記パラレル領域の前記期待値を用いて、前記論理回路の前記パラレル領域及び前記シリアル領域の故障診断を行う故障診断処理と、
を実行させるプログラム。
【請求項１８】
前記回路分割処理において、
前記論理回路の全ノードの状態値を不定値を含む予め定められた所定の論理値で初期化し、
前記スキャンフリップフロップの保持する状態値を、初期化した前記論理値と異なる論理値に設定し、
前記スキャンフリップフロップの保持する状態値が変化しないように回路動作及び前記テストパタンを制御しながら、前記論理回路のシミュレーションを実行し、
前記シミュレーションによって、
前記スキャンフリップフロップの保持する前記状態値と同じ論理値に変化したノード及び前記ノードに接続するゲートを含む１つ又は複数の回路部をそれぞれ前記パラレル領域として抽出し、前記論理回路中の前記パラレル領域以外の１つ又は複数の回路部をそれぞれ前記シリアル領域として抽出し、
前記期待値計算処理において、
前記テストパタンを用いて、前記シリアル領域のうち、少なくとも前記スキャンチェーンの入力ノードと接続関係にある出力ノードを有する第１の回路部のシリアルシミュレーションを実行し、
前記シリアルシミュレーションの結果得られた、前記シリアル領域の前記回路部の前記出力ノードからのパタンを、前記パラレル領域のうち、少なくとも、前記シリアル領域の出力ノードと接続関係にある入力ノードを有する前記スキャンチェーンのスキャンフリップフロップに設定してパラレルシミュレーションを実行し、
前記パラレルシミュレーションの結果得られたパタンを用いて、前記シリアル領域のうち、少なくとも、前記パラレル領域の前記スキャンチェーンの出力ノードと接続関係のある入力ノードを有する第２の回路部のシリアルシミュレーションを実行することで、前記シリアル領域と前記パラレル領域のノードの期待値を求め、
前記故障診断処理において、
前記シリアル領域の故障候補を、前記シリアル領域の故障候補と接続関係にある前記パラレル領域の出力ノード又は前記スキャンフリップフロップに設定し、
前記パラレル領域の故障候補を、前記パラレル領域の故障候補と接続関係にある前記シリアル領域の出力ノードに設定する、請求項１７記載のプログラム。
【請求項１９】
前記回路分割処理において、
（Ａ）前記論理回路の全ノードの状態値を不定値を含む任意の論理値で初期化し、
（Ｂ）前記スキャンフリップフロップの保持する状態値を前記初期化した論理値と異なる論理値に設定し、
（Ｃ）前記論理回路のシミュレーションの実行にあたり、
（Ｃ−１）それぞれの前記スキャンチェーンの入力端子と出力端子と前記スキャンチェーンの入力端子と出力端子にそれぞれ接続するノードとの間を切断して前記論理回路のシミュレーションを実行、
（Ｃ−２）前記スキャンフリップフロップへのクロック信号を供給するノードを切断するか、又は前記テストパタンのクロック入力を削除し前記スキャンフリップフロップに対してクロックを供給せずに前記論理回路のシミュレーションを実行、
（Ｃ−３）前記スキャンフリップフロップに設定した状態値の変更を禁止して、前記論理回路のシミュレーションを実行、
の前記（Ｃ−１）乃至（Ｃ−３）のいずれかを行い、
（Ｄ）前記シミュレーションによって、前記スキャンフリップフロップの保持する状態値と同じ論理値に変化したノード及び前記ノードに接続するゲートを前記パラレル領域として抽出し、前記パラレル領域以外の論理回路をシリアル領域として抽出する、請求項１７記載のプログラム。
【請求項２０】
前記シリアル領域が、
入力された前記テストパタンに応答して複数の前記スキャンチェーンの入力ノードへそれぞれ入力するパタンを生成する第１の回路部と、
複数の前記スキャンチェーンの出力ノードからのパタンを受け圧縮して出力する第２の回路部と、
を含み、
前記期待値計算処理において、
前記シリアル領域の前記第１の回路部に、前記テストパタンを印加してシリアルシミュレーションを実行し、前記シリアル領域の前記第１の回路から生成されるパタン出力データを取得し、
前記パラレル領域の回路情報を読み出し、前記パタン出力データを、前記スキャンチェーンの入力パタンとして、前記パラレル領域のパラレルシミュレーションを実行し、前記パラレル領域の出力を前記パラレル領域の期待値をとして取得し、
前記パラレル領域のシミュレーションで求めた前記パラレル領域の期待値を、前記シリアル領域の前記第２の回路部に与え、且つ、前記シリアル領域の前記第１の回路部には前記テストパタンを与えてシリアルシミュレーションを実行し、前記シリアル領域の期待値を求める、請求項１７記載のプログラム。
【請求項２１】
前記故障診断処理において、
前記テスト出力に含まれる、故障の影響によって正常回路の期待値とは異なる値を出力する端子又は故障の影響によって正常回路の期待値とは異なる値を取り込むスキャンフリップフロップを含む故障出力端子が属する前記シリアル領域又は前記パラレル領域に対して故障診断を行い、
前記故障診断で得られた前記シリアル領域の故障候補に、
前記パラレル領域と接続関係にある前記シリアル領域の入力端子が含まれる場合、
前記入力端子と接続関係にある前記パラレル領域の出力端子又は前記スキャンフリップフロップを故障出力端子として、前記パラレル領域内の故障診断を行い、
前記故障診断で得られた前記パラレル領域の故障候補に、
スキャンフリップフロップが含まれ、且つ、前記スキャンフリップフロップが属するスキャンチェーンの入力端子が前記シリアル領域と接続関係にある、又は、
前記シリアル領域と接続関係にある前記パラレル領域の入力端子が含まれる場合、
前記入力端子と接続関係にある前記シリアル領域の出力端子を故障出力端子として、前記シリアル領域の故障診断を行い、
前記故障診断で得られた前記シリアル領域の故障候補に、
前記パラレル領域と接続関係にある前記シリアル領域の入力端子が含まれない場合、又は、
前記故障診断で得られた前記パラレル領域の故障候補に、
前記シリアル領域と接続関係にある前記パラレル領域の入力端子が含まれず、且つ、スキャンフリップフロップが含まれない、又は、前記故障候補に含まれるスキャンフリップフロップが属するスキャンチェーンの入力端子が前記シリアル領域と接続関係にない場合、
故障診断を終了する、請求項１７記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体装置の故障箇所の推定技術に関し、特に、スキャンテスト回路を備えた論理回路の故障箇所の推定方法、推定装置、及びプログラムに関する。
【背景技術】
【０００２】
ＬＳＩのテスト容易化設計（ＤＦＴ：Ｄｅｓｉｇｎ  Ｆｏｒ  Ｔｅｓｔａｂｉｌｉｔｙ）手法として、スキャンテストが用いられている。さらにテストコスト削減のため、半導体製品の論理回路にスキャンテスト手法を応用したパタン圧縮技術が採用されている。パタン圧縮技術は、スキャンチェーンの入出力部分にテストパタン生成器とテスト結果を圧縮する圧縮器とを配置することで、テスタのメモリサイズ、使用ピン数等のオーバーヘッドを小さくして、テストコストの削減を図る。
【０００３】
ＬＳＩの開発効率の向上が求められており、既存製品の回路を機能ブロック単位で再利用可能な形にまとめ、他の製品でも利用可な部分にも流用可能とした階層設計手法が一般的となっている。各機能ブロックには、それぞれ独立したスキャンテスト設計が施されていることが多い。検査対象となる機能ブロックを切り替えるためのコントローラ回路を論理回路に付加することで検査対象の回路全体をテストする。
【０００４】
以下、スキャンテスト、圧縮技術、階層設計について図面を参照して説明する。
【０００５】
＜スキャンテスト＞
スキャンテスト手法は、論理回路の故障検査手法の１つであり、スキャン・テストモード時に、ＬＳＩ回路内に設けられた複数のスキャンフリップフロップ（「スキャンＦＦ」あるいは「ＳＦＦ」と略記される）をシリアルに接続してスキャンチェーンを構成し、外部スキャン入力（Ｓｃａｎ  Ｉｎ）端子からパタンをシリアルに供給し（スキャンイン動作）、被検査対象の組み合わせ回路の入力に出力が接続されたスキャンＦＦからパタンがパラレルに印加され、当該組み合わせ回路の出力が当該組み合わせ回路後段の複数のスキャンＦＦに取り込まれ（キャプチャ動作）、当該組み合せ回路の出力を取り込んだ複数のスキャンＦＦの出力を外部スキャンアウト（Ｓｃａｎ  Ｏｕｔ）端子よりシリアルに出力し（スキャンアウト動作）、ＬＳＩテスタで当該出力パタンを取り込み期待値パタンと比較する。
【０００６】
図３は、スキャンテスト回路を備えた論理回路の典型的な構成の一例を示す図である。図３において、被検査回路３００は、スキャンテスト手法のテスト対象回路となるユーザーロジック回路（ＵＤＬ：Ｕｓｅｒ  Ｄｅｆｉｎｅｄ  Ｌｏｇｉｃ）３０３と、２本のスキャンチェーン３０４、３０５とを含む。スキャンＦＦ３０６ａ、３０６ｂ、３０６ｃ、３０７ａ、３０７ｂ、３０７ｃは、３ビットのスキャンチェーン３０４、３０５を構成し、それぞれの入力端子ＤはＵＤＬ回路３０３と接続している。なお、図３では、あくまで説明の簡単のため、２本のスキャンチェーンからなり各チェーンとも３個のスキャンＦＦを備えた構成を示しており、実際の構成（スキャンテスト回路を備えた論理回路）がかかる構成に制限されるものでないことは勿論である。
【０００７】
スキャンＦＦは、データ端子（Ｄ）とスキャンイン（ＳＩ）端子を有し、データ端子（Ｄ）とスキャンイン（ＳＩ）端子は内部のマルチプレクサに入力され、スキャンモード時（スキャンイン、スキャンアウト動作時）に、ＳＩ端子からの入力が選択され、それ以外（キャプチャ動作時、通常動作時等）は、Ｄ端子からの入力が選択され、マルチプレクサで選択された入力をクロックの例えば立ち上がりエッジに同期してサンプル出力する。なお、図３では簡単のためスキャンＦＦのクロック入力端子は省略されており、またスキャンＦＦの出力端子ＱとＵＤＬ３０３の入力との接続は省略されている。
【０００８】
スキャンチェーン３０４、３０５を構成するそれぞれのスキャンＦＦは、テスト出力端子３０２、３０９から数えて、
スキャンＦＦ３０６ｃとスキャンＦＦ３０７ｃとを１ビット目、
スキャンＦＦ３０６ｂとスキャンＦＦ３０７ｂとを２ビット目、
スキャンＦＦ３０６ａとスキャンＦＦ３０７ａとを３ビット目
とする（テスト入力端子３０１、３０８から数えると、上記３ビット目が初段となり、順番が逆になる。スキャンＦＦの段数は、通常、テスト入力端子３０１、３０８から数える）。３ビット目のスキャンＦＦ３０６ａ、３０７ａの入力端子ＳＩは、テスト入力端子３０１、３０８とそれぞれ接続し、出力端子Ｑは、２ビット目のスキャンＦＦ３０６ｂ、３０７ｂの入力端子ＳＩとそれぞれ接続する。
【０００９】
１ビット目のスキャンＦＦ３０６ｃ、３０７ｃの出力端子Ｑは、テスト出力端子３０２、３０９とそれぞれ接続し、入力端子ＳＩは、２ビット目のスキャンＦＦ３０６ｂ、３０７ｂの出力端子Ｑとそれぞれ接続する。
【００１０】
スキャンシフト動作時に、各スキャンＦＦの出力は、次段のスキャンＦＦのＳＩ端子に供給される（最終段のスキャンＦＦの出力はＳｃａｎ  Ｏｕｔ端子（テスト出力端子３０２、３０９）に出力される）が、通常動作時、各スキャンＦＦの出力はＵＤＬ回路３０３に入力され、ＵＤＬ回路３０３の出力はスキャンＦＦのデータ端子Ｄに入力される。図３におけるスキャンテスト時の動作を具体的に説明する。
【００１１】
ＬＳＩテスタ（不図示）は、テストパタンをそれぞれテスト入力端子３０１、３０８からスキャンチェーン３０４、３０５に印加し、スキャンクロックに同期して、各スキャンＦＦの保持値（出力端子Ｑの値）を次段のスキャンＦＦのシリアル入力端子（ＳＩ）に転送することで、入力側から出力側へテストパタンを次々に受け渡すことを繰り返すことによって（スキャンシフト）、スキャンチェーン３０４、３０５を構成する各スキャンＦＦにテストパタンを設定する。
【００１２】
スキャンシフト動作でスキャンチェーン３０４、３０５を構成する各スキャンＦＦに設定されたテストパタンは、各スキャンＦＦの出力端子ＱからＵＤＬ回路３０３に入力され、ＵＤＬ回路３０３から出力される信号は、ＵＤＬ回路３０３の当該出力にデータ端子Ｄが接続されたスキャンＦＦのデータ端子Ｄに入力され、当該スキャンＦＦでは、スキャンクロックの立ち上がりでデータ端子Ｄの信号を取り込む（キャプチャ動作）。スキャンＦＦが取り込んだ信号をスキャンシフトによってテスト出力端子３０２、３０９より出力する。ＬＳＩテスタは、テスト出力端子３０２、３０９より出力された信号を受け、テストパタンに含まれる期待値と照合して、ＰＡＳＳ（不良）／ＦＡＩＬ（不良）を判定する。
【００１３】
スキャンシフトによって、各スキャンＦＦにテストパタンを設定するタイミングを与えるパタンをシフトパタンという。スキャンＦＦに設定したテストパタンをスキャンＦＦの出力端子Ｑから、一斉に、ＵＤＬ回路に入力し、また、ＵＤＬ回路から出力する信号をスキャンＦＦが取り込むタイミングを与えるパタンをキャプチャパタンという。シフトパタンとキャプチャパタンとはテストパタンに含まれる。
【００１４】
例えば、ＵＤＬ回路３０３中に故障が存在し、スキャンテストを実行した場合について説明する。
【００１５】
まず、シフトクロックによりテストパタンをスキャンＦＦ３０６ａ〜３０６ｃ、３０７ａ〜３０７ｃに設定する。
【００１６】
次に、キャプチャパタンによって、スキャンＦＦ３０６ａ〜３０６ｃ、３０７ａ〜３０７ｃに設定された入力パタンがテスト対象のＵＤＬ回路３０３に入力される。故障の影響を受けたＵＤＬ回路３０３の出力信号は、スキャンＦＦ３０６ａ〜３０６ｃ、３０７ａ〜３０７ｃのうち、該出力信号をデータ端子Ｄに受けるスキャンＦＦにスキャンクロックに応答して取り込まれることになる。
【００１７】
そして、次のシフトパタンにより、テスト出力端子３０２、３０９から１ビットずつスキャンＦＦが取り込んだ信号を出力され、ＬＳＩテスタのコンパレータにて、期待値パタンとテスト出力端子から出力された信号とが比較される。
【００１８】
スキャンテスト回路を備えた論理回路に対する故障検出手法は、スキャンイン（シリアル入力）、キャプチャ、スキャンアウト（シリアルアウト）の繰り返しで行われ、スキャンチェーンの長さに対応してシリアルスキャンのパタンが長大化するため、テスト時間が長大化する、という問題がある。また、これに対応したメモリ容量を備えたテスタが必要とされる。
【００１９】
＜圧縮パタン技術＞
スキャンテスト設計の応用技術として、パタン圧縮技術がある。パタン圧縮技術は、スキャンチェーンの入出力部分に、パタン生成器と圧縮器とを配置することで、テスタのメモリサイズ、使用ピン数等のオーバーヘッドを小さくして、テストコストの削減を図る。
【００２０】
パタン生成器と圧縮器は、論理回路で構成され、通常、組合せ回路や、ＬＦＳＲ（線形フィードバックシフトレジスタ）で構成される。なお、本明細書では、パタン生成器と圧縮器とを合わせて、「パタン圧縮回路」という。
【００２１】
図４は、スキャンテストにおいてパタン圧縮技術を採用した構成例を示す図である。図４を参照すると、パタン圧縮技術を採用した被検査回路４００は、図３と同様に、ＵＤＬ回路４０３と、２つのスキャンチェーン４０４、４０５とを含む。ＵＤＬ回路４０３と、スキャンチェーン４０４、４０５とを合わせて「機能ブロック」４１４という。
【００２２】
スキャンチェーン４０４、４０５の入力端子（スキャン入力端子）４１０、４１２には、パタン生成回路４０１の出力が接続されている。
【００２３】
パタン生成器４０１は、テスト入力端子４０８から入力したテストパタンを元に、スキャンチェーン４０４、４０５にそれぞれシリアルに供給するテストパタンを生成し、生成したテストパタンをスキャン入力端子４１０、４１２にシリアルに出力する。
【００２４】
スキャンチェーン４０４、４０５の出力端子４１１、４１３には、圧縮器４０２が接続されている。
【００２５】
圧縮器４０２は、スキャンチェーン４０４、４０５から出力されるスキャンＦＦが取り込んだ信号をそれぞれ受け、１ビットずつ圧縮してテスト出力端子４０９からテスト結果として出力する。つまり、２つのスキャンチェーン４０４、４０５のテスト結果を１本のテスト結果に圧縮している。
【００２６】
図４の構成において、テスト時には、パタン生成器４０１にてテストパタンを生成し、圧縮器４０２にてスキャンチェーンの出力信号を圧縮して出力する以外は、図３のスキャンテスト時の動作と同様の動作で故障を検出することができる。
【００２７】
図４の構成において、パタン生成器４０１及び／又は圧縮器４０２内に故障が存在した場合であっても、当該故障を検出することができる。
【００２８】
例えば、パタン生成器４０１内に故障が存在すると、スキャンチェーン４０４、４０５に設定される値が既に故障の影響を受けた値となるため、テスト出力端子４０９から出力されるテスト結果出力は、期待値（正常回路の応答）と一致せず、ＦＡＩＬとなる。
【００２９】
また、圧縮器４０２内に故障が生じている場合、スキャンＦＦが取り込んだ信号は必ず圧縮器４０２を通過するため、テスト出力端子４０９から出力されるテスト結果出力は、期待値（正常回路の応答）と一致せず、ＦＡＩＬとなる。
【００３０】
＜階層設計＞
次に、開発効率向上のために用いられる階層設計について説明する。階層設計手法は既存製品の回路を機能ブロック単位で再利用可能な形にまとめ、他の製品に流用する方法である。各機能ブロックには、それぞれの独立したスキャンテスト設計が施されていることが多い。この場合、テスト対象となる機能ブロックを切り替えるためのコントローラ回路を論理回路に付加することで、被検査回路全体をテストする。
【００３１】
図５は、階層設計された被検査回路の構成例を示す図である。被検査回路５００は、スキャンテスト設計が施された２つの機能ブロック５０２、５０３と、テスト対象となる機能ブロックを切り替えるコントローラ回路５０１とを含む。
【００３２】
機能ブロック５０２、５０３は、図３の被検査回路３００、及び、図４の機能ブロック４１４のようなスキャン設計が施された回路から構成されている。コントローラ回路５０１と機能ブロック５０２、５０３とを接続している信号線５０４、５０５、５０６、５０７は、機能ブロック５０２、５０３が持つスキャンチェーンの本数分存在する。例えば、機能ブロック５０３が図３と同じ構成の場合、信号線５０４は２本存在し、図３のテスト入力端子３０１、３０８と接続する。同様に、信号線５０６は、２本存在し、図３のテスト出力端子３０２、３０９と接続する。コントローラ入力端子５０８とコントローラ出力端子５０９とはコントローラ回路５００と、不図示のテスタの出力（ドライバ）と入力（コンパレータ）と接続される。
【００３３】
図５を参照して、階層設計された被検査回路のテスト時の動作を説明する。不図示のテスタからテストパタンがコントローラ入力端子５０８に印加される。コントローラ回路５０１は、そのテストパタンの一部より、テストすべき機能ブロックを選択する。選択された機能ブロックを例えば機能ブロック５０３とすると、コントローラ回路５０１に入力されたテストパタンは、信号線５０４を介して機能ブロック５０３に入力される。
【００３４】
機能ブロック５０３の中では、前述したスキャンテスト手法の動作が行われ、テスト結果は信号線５０６を介して、コントローラ回路５０１に入力される。
【００３５】
コントローラ回路５０１に入力されたテスト結果は、コントローラ出力端子５０９より、不図示のテスタへ出力され、テストパタンの期待値（正常回路の応答）と比較して、ＰＡＳＳ／ＦＡＩＬが判定される。
【００３６】
この間、コントローラ回路５０１によって選択されなかった機能ブロック５０２は動作していない。
【００３７】
［追加１］
図５の構成において、コントローラ回路５０１内に故障が存在した場合であっても、その故障を検出することができる。
【００３８】
［追加２］
例えば、前述した階層設計された被検査回路のテスト時の動作では、機能ブロックの入出力はコントローラ回路を介してテスタへ出力する。このため、コントローラ回路内に故障が存在した場合、機能ブロックへの入力値が故障の影響を受けた値となる。または、機能ブロックの出力値が故障の影響を受けた値となる。そして、それらのテスト結果は、期待値（正常回路の応答）と一致せず、ＦＡＩＬとなる。
【００３９】
＜故障診断＞
次に、スキャンテスト設計が施された論理回路に対する故障診断について説明する。非特許文献１によると、故障診断手法には、
（Ａ）原因−結果型の手法、及び、
（Ｂ）結果−原因型の手法、
がある。
【００４０】
前者（Ａ）は、予め被検査回路の故障シミュレーションを実行することで、故障とそのテスト出力結果との対応を辞書化し、その辞書を参照することで故障箇所を推定する手法である。ただし、大規模回路に対しては作成する辞書が莫大となり現実的でない。
【００４１】
後者（Ｂ）の手法は、大規模回路にも適用可能であり、３つのステップからなる。
【００４２】
（１）まず、故障が存在する領域をすばやく絞り込むため、テスト出力結果の情報から故障の影響を取り込んだスキャンＦＦを特定し、特定したスキャンＦＦからＵＤＬ回路を入力方向へトレースして、トレースした領域を求める。
【００４３】
（２）次に、前記のトレースした領域に対して、複数回の故障シミュレーションを実行し、シミュレーション結果を得る。
【００４４】
（３）最後に、前記のシミュレーション結果から、テスト出力結果と一致度の高い順にランキングして、故障候補を求める。
【００４５】
スキャンテスト設計を備えた論理回路が階層設計のコントローラ回路を含む場合、該被検査回路に対する故障診断については、上記と同様の手法でＵＤＬ回路内の故障を診断することができるが、コントローラ回路内の故障は、診断対象とならない。
【００４６】
＜ＵＤＬ回路及びコントローラ回路の故障診断＞
ＵＤＬ回路だけでなくコントローラ回路も故障診断するための手法として、特許文献１に記載の方法が適用可能である。特許文献１では、実際の故障端子から入出力双方向にトレースを行い組合せ回路を抽出し、論理推定と論理シミュレーションとを組合せ回路の出力境界端子に対して繰返し行うことにより、故障端子からの論理推定だけでは一意に定まらない組合せ回路内部ノードを順次確定し、前記組合せ回路の入力境界での故障伝搬端子状態を推定し、他の組合せ回路の入出力境界値との時間的及び空間的な照合手順により推定の確度をあげつつ順次ＬＳＩ内部へと遡り、故障箇所を推定する。すなわち、特許文献１では、まず、被検査回路全体を順序回路としてとらえ、その順序回路を、スキャンＦＦ、ＦＦ、ラッチ、外部端子を境界として組み合わせ回路単位に分割する。次に、故障検出した外部端子から分割した組合せ回路内を入力方向へトレースし、分割した組合せ回路内の終端に到達すると、その終端に、空間的かつ時間的に接続のある組合せ回路情報を読み出し、入力方向へトレースを行う。この処理を繰り返すことによって故障診断する手法である。この手法によれば、スキャンテスト設計を備えた論理回路が階層設計のコントローラ回路を含む場合であっても、ＵＤＬ回路とコントローラ回路とを同じレベルの組み合わせ回路として分割するため、ＵＤＬ回路だけでなくコントローラ回路も故障診断することができる。
【００４７】
＜パタン圧縮器を具備した論理回路の故障診断＞
また、スキャンテスト設計を備えた論理回路がパタン圧縮技術を採用している場合、その被検査回路に対する故障診断が、例えば特許文献２、３に開示されている。特許文献２では、各スキャンＦＦの出力（つまり、ビット毎）に仮想化した圧縮器を配置し、ＵＤＬ回路内で故障シミュレーションを実行し、そのシミュレーション結果とテスト結果とが一致する仮定故障箇所を故障候補として推測する。特許文献３では、圧縮器の動作を関数化し、その逆関数とテスト結果とから、故障の影響を取り込んだものと推測されるスキャンＦＦを求め、そのスキャンＦＦの候補に関係のあるＵＤＬ回路の領域を対象として、特許文献２と同様に、故障シミュレーションを実行して故障診断を行う。
【００４８】
＜シミュレーション方式：シリアルシミュレーションとパラレルシミュレーション＞
故障診断では、入力されたテストパタンに対する正常論理回路のシミュレーション値（正常回路の出力）を期待値として用いるため、故障診断対象となる論理回路のシミュレーション環境が必要である。シミュレーション環境は、コンピュータ上に被検査回路と同じ構造の論理回路を仮想的に構築する。論理回路のシミュレーション方式には、シリアルシミュレーションとパラレルシミュレーションとが存在する。
【００４９】
シリアルシミュレーションは、回路動作を忠実に再現する方式である。
【００５０】
パラレルシミュレーションは、スキャンチェーンのように、入力パタンに対してスキャンＦＦの値を一意に決定できる回路構造をシミュレーションする場合に用いられる。スキャンＦＦへの入力パタンの値の設定や、故障を検出したスキャンＦＦの特定など、スキャンシフトの処理を簡略化することができる。このため、シリアルシミュレーションよりも高速に処理できる。
【００５１】
例えば、シリアルシミュレーションでは１００個のスキャンＦＦに論理値を設定するのに１００クロック分のシミュレーション時間がかかるところを、パラレルシミュレーションでは、１００個のスキャンＦＦに対して直接論理値を設定できるため、シミュレーション時間を大幅に短縮することができる。そのため、数１０Ｍ（Ｍｅｇａ）ゲート規模の論理回路では、シリアルシミュレーションの処理時間が膨大となるため、パラレルシミュレーション方式が採用される。
【００５２】
具体的に説明するために、図６に、スキャンシフトパタンのシリアルシミュレーションの例を示す。また、図７に、パラレルシミュレーションの例を示す。図６、図７は、スキャンシフトパタン“１１０”を、長さ３（１ビット目から３ビット目のスキャンＦＦ）のスキャンチェーン６０１、７０１に設定する。つまり、シミュレーション完了後（図６の３パタン後）に、スキャンシフトパタン“１１０”の最初の“１”はスキャンチェーンの１ビット目のスキャンＦＦに設定され、最後の“０”は３ビット目のスキャンＦＦに設定される。シリアルシミュレーションでは、スキャンシフトの動作を忠実に再現するため、シリアルビットパタン“１１０”を、長さ３のスキャンチェーン６０１に設定するには、３パタン（３クロック）を要する。一方、パラレルシミュレーションでは、図７に示すように、１パタンで処理が完了する。パタン“１１０”をスキャンチェーン７０１の３つのスキャンＦＦにパラレルに１クロックで設定する。
【先行技術文献】
【特許文献】
【００５３】
【特許文献１】特開平０９−０８０１２６号公報
【特許文献２】特開２００８−２４９６２２号公報
【特許文献３】特表２００７−５３１８７５号公報
【非特許文献】
【００５４】
【非特許文献１】Wu-Tung Cheng et al, "Compactor Independent Direct Diagnosis," Proceedings of the 13th Asian Test Symposium (ATS 2004), IEEE, 2004, 15-17 Nov., pp.204-209
【発明の概要】
【発明が解決しようとする課題】
【００５５】
以下に関連技術の分析を与える。
【００５６】
特許文献１では、被検査回路全体を組み合わせ回路単位に分割して、故障診断するため、被検査回路全体のシリアルシミュレーションが必要となる。しかしながら、階層設計されたスキャンテスト回路を備えた論理回路など、大規模な回路に対してシリアルシミュレーションを実行することは処理時間が膨大となるため、現実的でない。
【００５７】
特許文献２では、主にＵＤＬ回路を故障診断の対象としており、圧縮器を診断するためには特許文献１と同じく、ＵＤＬ回路と圧縮器回路とを含めたシリアルシミュレーションが必要となり処理時間が膨大となる。
【００５８】
特許文献３では、ＵＤＬ回路部のみが故障診断の対象であるため、圧縮器の内部及びパタン生成器の内部は故障診断することができない。
【００５９】
本発明の目的は、スキャンテスト設計が施された機能ブロックと、その付加回路とを含む論理回路全体を故障診断可能とする、装置及びプログラムを提供することにある。
【課題を解決するための手段】
【００６０】
本発明によれば、概略以下の構成が提供される（ただし、以下に制限されるものでないことは勿論である）。
【００６１】
１つの側面によれば、スキャンテスト回路を備えた論理回路内のスキャンフリップフロップで構成されるスキャンチェーンの構成情報及び前記論理回路の設計データ情報を入力し、
前記論理回路において、前記スキャンチェーンを含み、前記スキャンチェーンのスキャンフリップフロップの出力によって値が設定されるノード及び前記ノードに接続するゲートを含む１つ又は複数の回路部をそれぞれパラレル領域とし、前記論理回路において前記パラレル領域以外の１つ又は複数の回路部をそれぞれシリアル領域として抽出することで、前記論理回路をパラレル領域とシリアル領域に分割し、分割したパラレル領域とシリアル領域の回路情報を記憶部に記憶する回路分割手段と、
前記記憶部からシリアル領域とパラレル領域の回路情報を読み出し、出力と入力が接続関係にあるシリアル領域とパラレル領域の対の１つ又は複数の組み合せについて、前記出力を含む一方の領域に対してシリアル又はパラレルシミュレーションのうち対応する一方のシミュレーションを行い、前記シミュレーションの結果得られたパタンを用いて、前記入力を含む他方の領域に対してシリアル又はパラレルシミュレーションのうち対応する他方のシミュレーションを行うことで、前記シリアル領域と前記パラレル領域の正常回路における論理値を期待値として求め、前記１つ又は複数の組み合せのシリアル領域とパラレル領域の期待値を記憶部に記憶する期待値計算手段と、
前記記憶部から前記シリアル領域と前記パラレル領域の期待値を読み出し、前記テストパタンに対する前記論理回路のテスト出力を入力し、前記テスト出力、及び、前記シリアル領域と前記パラレル領域の前記期待値を用いて、前記論理回路の前記パラレル領域及び前記シリアル領域の故障診断を行う故障診断手段と、を備えた故障箇所推定装置が提供される。
【００６２】
あるいは、スキャンテスト回路を備えた論理回路の故障診断を、データ処理装置を用いて行う方法であって、
前記論理回路内のスキャンフリップフロップで構成されるスキャンチェーンの構成情報及び前記論理回路の設計データ情報を入力し、
前記論理回路において、前記スキャンチェーンを含み、前記スキャンチェーンのスキャンフリップフロップの出力によって値が設定されるノード及び前記ノードに接続するゲートを含む１つ又は複数の回路部をそれぞれパラレル領域とし、前記論理回路において前記パラレル領域以外の１つ又は複数の回路部をそれぞれシリアル領域として抽出することで、前記論理回路を前記パラレル領域とシリアル領域に分割し、分割した前記パラレル領域と前記シリアル領域の回路情報を記憶部に記憶する回路分割ステップと、
前記記憶部から前記シリアル領域と前記パラレル領域の回路情報を読み出し、出力と入力が接続関係にあるシリアル領域とパラレル領域の対の１つ又は複数の組み合せについて、前記出力を含む一方の領域に対してシリアル又はパラレルシミュレーションのうち対応する一方のシミュレーションを行い、前記シミュレーションの結果得られたパタンを用いて、前記入力を含む他方の領域に対してシリアル又はパラレルシミュレーションのうち対応する他方のシミュレーションを行うことで、前記１つ又は複数の組み合せのシリアル領域と前記パラレル領域の正常回路における論理値を期待値として求め、前記シリアル領域と前記パラレル領域の期待値を記憶部に記憶する期待値計算ステップと、
前記記憶部から前記シリアル領域と前記パラレル領域の期待値を読み出し、前記テストパタンに対する前記論理回路のテスト出力を入力し、前記テスト出力、及び、前記シリアル領域と前記パラレル領域の前記期待値を用いて、前記論理回路の前記パラレル領域及び前記シリアル領域の故障診断を行う故障診断ステップと、を含む故障箇所推方法が提供される。
【００６３】
あるいは、スキャンテスト回路を備えた論理回路の故障診断を行う装置を構成するコンピュータに、
前記論理回路内のスキャンフリップフロップで構成されるスキャンチェーンの構成情報及び前記論理回路の設計データ情報を入力し、
前記論理回路において、前記スキャンチェーンを含み、前記スキャンチェーンのスキャンフリップフロップの出力によって値が設定されるノード及び前記ノードに接続するゲートを含む回路部をパラレル領域とし、前記論理回路において前記パラレル領域以外の回路部をシリアル領域として抽出することで、前記論理回路を前記パラレル領域とシリアル領域に分割し、分割した前記パラレル領域と前記シリアル領域の回路情報を記憶部に記憶する回路分割処理と、
前記記憶部から前記シリアル領域と前記パラレル領域の回路情報を読み出し、出力と入力が接続関係にあるシリアル領域とパラレル領域の対の１つ又は複数の組み合せについて、前記出力を含む一方の領域に対してシリアル又はパラレルシミュレーションのうち対応する一方のシミュレーションを行い、前記シミュレーションの結果得られたパタンを用いて、前記入力を含む他方の領域に対してシリアル又はパラレルシミュレーションのうち対応する他方のシミュレーションを行うことで、前記１つ又は複数の組み合せのシリアル領域と前記パラレル領域の正常回路における論理値を期待値として求め、前記シリアル領域と前記パラレル領域の期待値を記憶部に記憶する期待値計算処理と、
前記記憶部から前記シリアル領域と前記パラレル領域の期待値を読み出し、前記テストパタンに対する前記論理回路のテスト出力を入力し、前記テスト出力、及び、前記シリアル領域と前記パラレル領域の前記期待値を用いて、前記論理回路の前記パラレル領域及び前記シリアル領域の故障診断を行う故障診断処理と、を実行させるプログラムが提供される。
【００６４】
さらに、本発明によれば、上記プログラムを記録したコンピュータで読み出し可能な記録媒体（コンピュータで読み出し可能である、プログラム情報を担持可能な任意の媒体、任意のストレージ手段を含む）が提供される。
【発明の効果】
【００６５】
本発明によれば、スキャンテスト設計が施された機能ブロックと付加回路とを含む論理回路全体を故障診断することができる。また本発明によれば、診断処理時間を大幅に短縮することができる。本発明の特徴、効果等は上記に限定されるものでなく、以下の記載及び添付図面の内容からも当業者には明らかになるであろう。
【図面の簡単な説明】
【００６６】
【図１】実施形態１を示す図である。
【図２】実施形態１の動作を示す図である。
【図３】スキャンテスト設計が施された論理回路を示す図である。
【図４】パタン圧縮回路を含む論理回路を示す図である。
【図５】階層設計が施された論理回路を示す図である。
【図６】１１０パタンに対するシリアルシミュレーションの例を示す図である。
【図７】１１０パタンに対するパラレルシミュレーションの例を示す図である。
【図８】実施形態１においてテスト結果のフォーマットの例を示す図である。
【図９】実施形態１においてスキャンチェーンの構造情報の例を示す図である。
【図１０】実施形態１においてスキャンテスト設計が施された論理回路に対するテストパタンの例を示す図である。
【図１１】実施形態１においてパタン圧縮回路を含む論理回路に対するテストパタンの例を示す図である。
【図１２】実施形態１においてパタン圧縮回路を含む論理回路に対する分割回路の例を示す図である。
【図１３】実施形態１における期待値計算ステップの処理フローを示す図である。
【図１４】実施形態１における故障診断ステップの処理フローを示す図である。
【図１５】実施形態１の故障診断結果に対する出力データの例を示す図である。
【図１６】実施形態１においてパタン圧縮回路に含まれる圧縮器の構造の例を示す図である。
【図１７】実施形態１において圧縮器に含まれるＸ−ｔｏｌｅｒａｎｔ機構の例を示す図である。
【図１８】実施形態の作用効果を説明する図である。
【発明を実施するための形態】
【００６７】
本発明を実行するための好ましい形態について以下に説明する（但し以下に限定されない）。いくつかの好ましい形態によれば、装置／システムは、回路分割手段（２）と、期待値計算手段（３）と、故障診断手段（４）を含む。
回路分割手段（２）は、スキャンテスト回路を備えた論理回路内のスキャンフリップフロップで構成されるスキャンチェーンの構成情報及び前記論理回路の設計データ情報（入力データ１）を入力し、前記論理回路において、前記スキャンチェーンを含み、前記スキャンチェーンのスキャンフリップフロップの出力によって値が設定されるノード及び前記ノードに接続するゲートを含む回路部をパラレル領域とし、前記論理回路において前記パラレル領域以外の回路部をシリアル領域として抽出することで、前記論理回路を前記パラレル領域とシリアル領域に分割する。回路分割手段（２）は、分割した回路情報を記憶部（９）に記憶する。
期待値計算手段（３）は、前記記憶部（９）から前記シリアル領域と前記パラレル領域の回路情報を読み出し、出力と入力が接続関係にあるシリアル領域とパラレル領域の対の１つ又は複数の組み合せについて、前記出力を含む一方の領域に対してシリアル又はパラレルシミュレーションのうち対応する一方のシミュレーションを行い、前記シミュレーションの結果得られたパタンを用いて、前記入力を含む他方の領域に対してシリアル又はパラレルシミュレーションのうち対応する他方のシミュレーションを行うことで、前記１つ又は複数の組み合せのシリアル領域と前記パラレル領域の正常回路における論理値を期待値として求め、前記シリアル領域と前記パラレル領域の期待値を記憶部に記憶する。
より詳しくは、いくつかの好ましい形態において、期待値計算手段（３）は、例えば、入力したテストパタン（入力データ１）を用いて、予め定められた一つのシリアル領域（又は、一つのパラレル領域であってもよい）のシリアル（又はパラレル）シミュレーションを行い、前記シリアル（又はパラレル）シミュレーションを行った前記一つのシリアル領域（又は前記一つのパラレル領域）の出力に入力が接続された、別のパラレル領域（又は別のシリアル領域）が存在する場合、前記一つのシリアル領域（又は前記一つのパラレル領域）のシリアル（又はパラレル）シミュレーションの結果得られたパタンを用いて、前記別のパラレル領域（又は前記別のシリアル領域）のパラレル（又はシリアル）シミュレーションを行う。さらに、前記別のパラレル領域（又は前記別のシリアル領域）の出力に入力が接続された、さらに別のシリアル領域（又はさらに別のパラレル領域）が存在する場合には、前記別のパラレル領域（又は前記別のシリアル領域）のパラレル（又はシリアル）シミュレーションの結果得られたパタンを用いて、前記さらに別のシリアル領域（又は前記さらに別のパラレル領域）のシリアル（又はパラレル）シミュレーションを行う。このようにして、一方のシミュレーション結果を用いて他方のシミュレーションをシリアル領域とパラレル領域で交互に実行することで、前記シリアル領域と前記パラレル領域の正常回路における論理値を期待値として求め、前記シリアル領域と前記パラレル領域の期待値を記憶部（１０）に記憶する。
故障診断手段（４）は、前記テストパタンに対する前記論理回路のテスト出力（入力データ１）を入力し、前記テスト出力及び、前記シリアル領域と前記パラレル領域の前記期待値を記憶部（１０）から読み出し、前記論理回路の前記パラレル領域及び前記シリアル領域の故障診断を行う。なお、特に制限されるものでないが、いくつかの好ましい形態において、上記各手段（２、３、４等）はデータ処理装置（コンピュータ）上で実行されるプログラムによりその機能・処理を実現するようにしてもよい。この場合、データ処理装置（コンピュータ）には、コンピュータ読み出し可能な媒体（ストレージ媒体、あるいは有線又は無線ネットワーク等の伝送媒体）から当該プログラムをコンピュータに読み出し（ロードし）、当該プログラムを実行することで、上記各手段が実現される。
【００６８】
いくつかの好ましい形態において、前記回路分割手段（２）は、前記論理回路の全ノードの状態値を不定値を含む予め定められた所定の論理値で初期化し、
前記スキャンフリップフロップの保持する状態値を、初期化した前記所定の論理値と異なる論理値に設定し、
前記スキャンフリップフロップの保持する状態値が変化しないように回路動作及び前記テストパタンを制御しながら、前記論理回路のシミュレーションを実行し、
前記シミュレーションによって、前記スキャンフリップフロップの保持する前記状態値と同じ論理値に変化したノード及び前記ノードに接続するゲートを含む回路部（１つ又は複数）をそれぞれ前記パラレル領域として抽出し、前記論理回路中の前記パラレル領域以外の回路部（１つ又は複数）をそれぞれ前記シリアル領域として抽出する構成としてもよい。
【００６９】
いくつかの好ましい形態において、前記期待値計算手段（３）は、前記テストパタンを用いて、前記シリアル領域のうち、少なくとも前記スキャンチェーンの入力ノードと接続関係にある出力ノードを有する第１の回路部のシリアルシミュレーションを実行し、
前記シリアルシミュレーションの結果得られた、前記シリアル領域の前記第１の回路部の前記出力ノードからのパタンを、前記パラレル領域のうち、少なくとも、前記シリアル領域の出力ノードと接続関係にある入力ノードを有する前記スキャンチェーンのスキャンフリップフロップに設定してパラレルシミュレーションを実行し、
前記パラレルシミュレーションの結果得られたパタンを用いて、前記シリアル領域のうち、少なくとも、前記パラレル領域の前記スキャンチェーンの出力ノードと接続関係のある入力ノードを有する第２の回路部のシリアルシミュレーションを実行することで、前記シリアル領域と前記パラレル領域のノードの期待値を求める、構成としてもよい。
【００７０】
いくつかの好ましい形態において、前記故障診断手段（４）は、前記シリアル領域の故障候補を、前記シリアル領域の故障候補と接続関係にある前記パラレル領域の出力ノード又は前記スキャンフリップフロップに設定し、
前記パラレル領域の故障候補を、前記パラレル領域の故障候補と接続関係にある前記シリアル領域の出力ノードに設定する、構成としてもよい。
【００７１】
いくつかの好ましい形態において、前記回路分割手段（２）は、
（Ａ）前記論理回路の全ノードの状態値を不定値を含む任意の論理値で初期化し、
（Ｂ）前記スキャンフリップフロップの保持する状態値を前記初期化した論理値と異なる論理値に設定し、
（Ｃ）前記論理回路のシミュレーションの実行にあたり、
（Ｃ−１）それぞれの前記スキャンチェーンの入力端子と出力端子と前記スキャンチェーンの入力端子と出力端子にそれぞれ接続するノードとの間を切断して前記論理回路のシミュレーションを実行し、
（Ｄ）前記シミュレーションによって、前記スキャンフリップフロップの保持する状態値と同じ論理値に変化したノード及び前記ノードに接続するゲートを前記パラレル領域として抽出し、前記パラレル領域以外の論理回路をシリアル領域として抽出する構成としてもよい。
【００７２】
あるいは、（Ｃ）前記論理回路のシミュレーションの実行にあたり、
（Ｃ−２）前記スキャンフリップフロップへのクロック信号を供給するノードを切断するか、又は前記テストパタンのクロック入力を削除し前記スキャンフリップフロップに対してクロックを供給せずに前記論理回路のシミュレーションを実行するようにしてもよい。
【００７３】
あるいは、（Ｃ）前記論理回路のシミュレーションの実行にあたり、
（Ｃ−３）前記スキャンフリップフロップに設定した状態値の変更を禁止して、前記論理回路のシミュレーションを実行するようにしてもよい。
【００７４】
いくつかの好ましい形態において、前記シリアル領域が、入力された前記テストパタンに応答して複数の前記スキャンチェーンの入力ノードへそれぞれ入力するパタンを生成する第１の回路部と、複数の前記スキャンチェーンの出力ノードからのパタンを受け圧縮して出力する第２の回路部と、を含む。
【００７５】
この形態において、前記期待値計算手段（３）は、前記シリアル領域の前記第１の回路に、前記テストパタンを印加してシリアルシミュレーションを実行し、前記シリアル領域の前記第１の回路から生成されるパタン出力データを取得し、
前記パラレル領域の回路情報を読み出し、前記パタン出力データを、前記スキャンチェーンの入力パタンとして、前記パラレル領域のパラレルシミュレーションを実行し、前記パラレル領域の出力を前記パラレル領域の期待値をとして取得し、
前記パラレル領域のシミュレーションで求めた前記パラレル領域の期待値を、前記シリアル領域の前記第２の回路に与え、且つ、前記シリアル領域の前記第１の回路には前記テストパタンを与えてシリアルシミュレーションを実行し、前記シリアル領域の期待値を求める構成としてもよい。
【００７６】
いくつかの好ましい形態において、前記故障診断手段（４）は、前記テスト出力に含まれる、故障の影響によって正常回路の期待値とは異なる値を出力する端子又は故障の影響によって正常回路の期待値とは異なる値を取り込むスキャンフリップフロップを含む故障出力端子が属する前記シリアル領域又は前記パラレル領域に対して故障診断を行い、
前記故障診断で得られた前記シリアル領域の故障候補に、
前記パラレル領域と接続関係にある前記シリアル領域の入力端子が含まれる場合、
前記入力端子と接続関係にある前記パラレル領域の出力端子又は前記スキャンフリップフロップを故障出力端子として、前記パラレル領域内の故障診断を行い、
前記故障診断で得られた前記パラレル領域の故障候補に、
スキャンフリップフロップが含まれ、かつ、前記スキャンフリップフロップが属するスキャンチェーンの入力端子が前記シリアル領域と接続関係にある、又は、
前記シリアル領域と接続関係にある前記パラレル領域の入力端子が含まれる場合、
前記入力端子と接続関係にある前記シリアル領域の出力端子を故障出力端子として前記シリアル領域の故障診断を行い、
前記故障診断で得られた前記シリアル領域の故障候補に、
前記パラレル領域と接続関係にある前記シリアル領域の入力端子が含まれない場合、
又は、
前記故障診断で得られた前記パラレル領域の故障候補に、
前記シリアル領域と接続関係にある前記パラレル領域の入力端子が含まれず、かつ、スキャンフリップフロップが含まれない、又は、故障候補に含まれるスキャンフリップフロップが属するスキャンチェーンの入力端子が前記シリアル領域と接続関係にない場合、
故障診断を終了する構成としてもよい。
前記故障診断手段（４）において、前記故障出力端子から故障伝播経路を入力側に追跡することで故障箇所を推定する、
故障を定義して論理回路のシミュレーションを実行して、シミュレーション結果と故障出力端子とが一致する箇所を故障箇所として推定する、
故障箇所と故障出力端子との対応が記述された辞書を用いて、テスト出力から故障箇所を推定する、
のいずれかを行うようにしてもよい。
【００７７】
いくつかの好ましい形態において、前記論理回路は、それぞれがスキャンテスト回路を備えた論理回路からなる機能ブロックと、前記機能ブロックを制御するコントローラ回路と、を含む。
【００７８】
いくつかの好ましい形態において、故障診断手段（４）は、前記パラレル領域の故障候補及び前記シリアル領域の故障候補を表示部（７）に出力する。前記表示部（７）は、前記論理回路のレイアウト上に、前記パラレル領域の故障候補と前記シリアル領域の故障候補を、判別を容易化する予め定められた所定の表示形態で表示する構成としてもよい。
【００７９】
好ましい形態によれば、スキャンテスト設計が施された機能ブロックとその他の回路とを含む論理回路に対して、スキャンテスト設計が施された機能ブロック（パラレル領域）と付加回路（シリアル領域）とに回路分割し、スキャンテスト設計が施された機能ブロックには、パラレルシミュレーション方式を採用し、付加回路にはシリアルシミュレーション方式を採用することで、診断処理時間を大幅に短縮することができる。
【００８０】
また、好ましい形態によれば、スキャンテスト設計が施された機能ブロックと付加回路とを含む論理回路全体を故障診断することができる。特に、スキャンテスト回路を有する論理回路がパタン圧縮回路を含んでいても、スキャンテスト設計が施された機能ブロック、及び、パタン圧縮回路を構成する圧縮器及びパタン生成器内を同時に故障診断可能としている。さらに、スキャンテスト回路を有する論理回路が階層設計のコントローラ回路を含む場合、スキャンテスト設計が施された機能ブロック及び、コントローラ回路を同時に故障診断することができる。以下いくつかの例示的な実施形態（exemplary embodiment）を説明する。
【００８１】
＜実施形態１＞
例示的な実施形態１について説明する。図１は、例示的な実施形態１の装置（システム）の構成を示す図である。図１を参照すると、実施形態１は、データ処理部８と、出力部５と、表示部７とを含む。データ処理部８は、回路分割手段２と、期待値計算手段３と、故障診断手段４と、分割回路データ記憶部９と、期待値データ記憶部１０とを備えている。
【００８２】
回路分割手段２は、検査対象の論理回路全体（スキャンテスト設計が施された機能ブロックとその付加回路とを含む）を、スキャンテスト設計が施された機能ブロックとその他の付加回路とに分割し、分割した回路のデータを、分割回路データ記憶部９に記憶する。分割したスキャンテスト設計が施された機能ブロックを「パラレル領域」、その他の付加回路を「シリアル領域」ともいう。
【００８３】
期待値計算手段３は、分割回路データ記憶部９から分割回路データ（スキャンテスト設計が施された機能ブロックとその付加回路）を読み出し、分割した回路（スキャンテスト設計が施された機能ブロックとその付加回路）毎にシミュレーションを行う。分割した回路のシミュレーション結果から、論理回路全体（被検査回路全体）の期待値データを求め、期待値データ記憶部１０に記憶する。
【００８４】
故障診断手段４は、期待値データ記憶部１０の期待値データと、入力データ１に含まれるテスト結果を用いて、被検査回路全体の故障診断を実行する。
【００８５】
出力部５は、故障診断手段４の故障診断結果である被検査回路全体の故障候補をまとめて出力する。
【００８６】
表示部７は、出力部５でまとめた被検査回路全体の故障候補を表示媒体へ表示する。
【００８７】
＜入力データ１＞
入力データ１は、テスト結果と、スキャンチェーン構成データと、テストパタンと、設計データとを含む。以下、それぞれについて説明する。なお、図１では、単に説明の簡単のため、入力データ１を１つにまとめて表しているが、かかる構成に制限されるものでないことは勿論である。例えばテスト結果と、スキャンチェーン構成データと、テストパタンと、設計データを、個別のファイルあるいはデータとして入力する構成としてもよい。入力データ１の情報は記憶部から入力するようにしてもよいし、他のデータサーバ（不図示）等から情報をネットワーク等を介してダウンロードするようにしてもよい。
【００８８】
＜入力データ：テスト結果＞
テスト結果は、テスタにて被検査回路中の故障の有無を判定された結果ファイルである。すなわち、スキャンチェーンからＬＳＩテスタに出力される値が、テストパタンの持つ期待値（正常回路の応答情報）と一致しない場合、その情報（フェイルログ情報）が記録される。
【００８９】
図８は、パラレルシミュレーション方式のテスト結果（情報）の一例を示す図である。テスト結果８００は、
・故障を検出したパラレルシミュレーションのテストパタン番号（Ｔｅｓｔ  ｐａｔ）８０１と、
・該故障影響を取り込んだスキャンＦＦのビット番号（ｓｃａｎ  ｂｉｔ）８０３と、
・該故障を検出したテスト結果出力端子名（ｐｉｎ  ｎａｍｅ）８０２と、
を含む。より詳しくは、図８のテスト結果８００は、
・スキャンチェーンのスキャンビット（ｓｃａｎ  ｂｉｔ）が２のスキャンＦＦ（２ビット目のスキャンＦＦ）が故障影響を取り込み、
・該２ビット目のスキャンＦＦが取り込んだ値がスキャンシフトパタン（Ｔｅｓｔ  ｐａｔ）番号５において出力され、
・端子名（ｐｉｎ  ｎａｍｅ）：テスト出力端子１にて故障が検出された、
ことを示している。図８には、図示されないが、複数のパタン、及び、複数のビットにて故障が検出されている場合、複数行にわたってテスト結果が記述される。また、シリアルシミュレーション方式のテスト結果では、図８において、
・テストパタン番号８０１に故障を検出したシリアルシミュレーションのパタン番号と、その故障を検出したテスト結果出力端子名８０２とが記述され、スキャンＦＦのビット番号８０３は記述されない。
【００９０】
＜入力データ：スキャンチェーン構成データ＞
スキャンチェーン構成データは、
・スキャンチェーンを構成するスキャンＦＦのインスタンス名と、
・その並び順と、
・パタン生成器とスキャンチェーンとの境界の端子名と、
・圧縮器とスキャンチェーンとの境界の端子名と、
を含む。主に、製品の設計過程のテストパタン作成時などでレポートファイルとして得られる。
【００９１】
図９に、スキャンチェーンの構成例を示す。スキャンチェーン構成データ９００は、
・スキャンチェーンを構成するスキャンＦＦのインスタンス名とその並び順９０３（スキャンチェーン１を構成するスキャンＦＦのインスタンス名と並び順  ３：Ｔｏｐ／ｍａｃｒｏＡ／ｓｆｆ３、２：Ｔｏｐ／ｍａｃｒｏＡ／ｓｆｆ２、１：Ｔｏｐ／ｍａｃｒｏＡ／ｓｆｆ１、スキャンチェーン２を構成するスキャンＦＦのインスタンス名と並び順  ３：Ｔｏｐ／ｍａｃｒｏＢ／ｓｆｆ３、２：Ｔｏｐ／ｍａｃｒｏＢ／ｓｆｆ２、１：Ｔｏｐ／ｍａｃｒｏＢ／ｓｆｆ１）と、
・パタン生成器とスキャンチェーンとの境界端子名９０１（スキャンチェーン１  ｄｅｃｏｍｐｒｅｓｓｏｒ１／Ｙ、スキャンチェーン２  ｄｅｃｏｍｐｒｅｓｓｏｒ２／Ｙ）と、
・圧縮器とスキャンチェーンとの境界端子名９０２（スキャンチェーン１  ｃｏｍｐｒｅｓｓｏｒ１／Ａ、スキャンチェーン２  ｃｏｍｐｒｅｓｓｏｒ２／Ａ）と、
を含む。図９において、階層設計のように、スキャンテスト設計が施された機能ブロックが複数存在する場合にはスキャンチェーンの構成データも機能ブロックの数だけ存在する。
【００９２】
＜入力データ：テストパタン＞
テストパタンは、ＬＳＩテスタから、検査対象の論理回路のテスト入力端子へ入力する“０”／“１”の系列と、入力系列に対する正常論理回路の応答情報（期待値）とを含む。また、スキャンテストのテストパタンは、シフトパタンとキャプチャパタンとが交互に配置される。
【００９３】
図１０は、図３の被検査回路に対するテストパタンの構成の一例を示すである。テストパタン１０００は、
・２つのテスト入力端子３０１、３０８に入力する“０”／“１”の系列１００４、１００５と、
・２つのテスト出力端子３０２、３０９から出力される信号に対応した正常論理回路の応答情報（期待値）１００６、１００７と
を含む。正常論理回路の応答情報は、“Ｈ”／“Ｌ”で表現し、“Ｈ”はテスト結果“１、“Ｌ”は“０”に対する応答情報である。
【００９４】
図１０の系列１００４、１００５の同一列の２ビットが、２つのテスト入力端子３０１、３０８（図３参照）にパラレルに印加されるフォースパタンを構成し、同一列の１００６、１００７が、該フォースパタンに対応してテスト出力端子３０２、３０９（図３参照）から出力される信号と比較されるコンペアパタンであり、フォースパタンと対応するコンペアパタンが１つのテストベクトルを構成する。なお、簡単のため、２つのテスト入力端子３０１、３０８（スキャンチェーン３０４、３０５の入力）以外の入力端子に入力される信号（例えばスキャンクロック、制御信号等）のテストパタンは省略されている。テスト入力端子３０１に入力するスキャンシフトパタンの系列１００１、１００２、１００３は、３ビットである。また、シフトパタン１００１、１００２、１００３の隣接パタン間のパタンは、キャプチャパタンとなる。
【００９５】
＜パタン圧縮器のテストパタン＞
パタン圧縮技術に対するテストパタンは、スキャンテスト手法のテストパタンと同様の構成である。図１１は、圧縮器を備えた図４の被検査回路に対するテストパタンを示す図である。
【００９６】
図１１を参照すると、テストパタン１１００はテスト入力端子４０８に入力する“０”／“１”の系列１１０４と、テスト出力端子４０９から出力される正常論理回路の応答情報１１０５（期待値）を備えている。系列１１０４は、パタン生成器４０１の入力パタンに対応し、正常論理回路の応答情報１１０５は、圧縮器４０２の出力値に対応する。
【００９７】
図１の故障診断システムは、入力データ１を用いて、コンピュータ上に、実製品と同じ構造をもつ回路を仮想的に構築し、テスト時の状態をシミュレーションする。特に、スキャンテスト設計が施された機能フロック回路と、その他の回路を含む論理回路全体を対象とした故障個所の推定（故障診断）を行う。
【００９８】
＜実施形態の動作＞
図２は、実施形態１の動作手順を示すフローチャートである。図１、図２、図４を参照して、実施形態１の動作について詳細に説明する。
【００９９】
まず、入力データ１より、
・テストパタンと、
・スキャンチェーンの構成情報と、
・設計データと
をデータ処理部８に入力し、コンピュータ上に、実製品と同じ構造をもつ論理回路を仮想的に構築する。次に、データ処理部８の各手段（処理）を、図２の３ステップ２０１〜２０３で実現する。設計データは、テスト対象となる回路の設計情報である。
【０１００】
＜回路分割ステップ＞
回路分割手段２（図１参照）による回路分割ステップ２０１（図２参照）では、被検査回路（論理回路全体）４００（図４参照）を、パラレルシミュレーションを実行する機能ブロック４１４（パラレル領域）と、シリアルシミュレーションを実行する、機能ブロック４１４以外の付加回路（シリアル領域）とに分割する。そして、分割した回路情報（分割回路データ）を、分割回路データ記憶部９に記憶する。パラレル領域は、少なくとも、ＵＤＬ回路４０３と、スキャンチェーン４０４、４０５とを含む機能ブロック４１４を含む。シリアル領域は、少なくともパタン生成器４０１と圧縮器４０２とを含む。
【０１０１】
特に制限されるものでないが、以下では、回路分割の具体例について、図４のパタン圧縮技術を採用した被検査回路４００を用いて説明する。
【０１０２】
はじめに、被検査回路４００の全てのノードを不定値“Ｘ”で初期化し、機能ブロック４１４の中にあるスキャンＦＦ４０６ａ〜４０６ｃ、４０７ａ〜４０７ｃの保持する状態値を“１”又は“０”に設定する。
【０１０３】
次に、全てのスキャンチェーン（４０４、４０５）の入力端子（４１０、４１２）及びスキャンチェーン（４０４、４０５）の出力端子（４１１、４１３）に接続するノードを全て切断した上で、被検査回路４００の１クロック分のシミュレーションを実行する。すなわち、スキャンチェーン（４０４、４０５）の入力端子（４１０、４１２）に接続するパタン生成器４０１の出力ノードを、該入力端子（４１０、４１２）から切断し、スキャンチェーン（４０４、４０５）の出力端子（４１１、４１３）に接続する圧縮器４０２の入力ノードを、該出力端子（４１１、４１３）から切断した状態で、被検査回路４００の１クロック分のシミュレーションを実行する。このとき、スキャンＦＦ４０６ａ〜４０６ｃ、４０７ａ〜４０７ｃはそれぞれシリアルに接続しなくてもよい（スキャンモードに設定せず、スキャンＦＦ内のマルチプレクサはスキャン入力端子ＳＩでなくデータ端子Ｄを選択してもよい）。
【０１０４】
回路分割手段２（図１参照）は、前記シミュレーションによって、
・スキャンＦＦの保持している状態値と同じ論理値に変化したノード、及び、
・前記ノードに接続するゲート、
をパラレル領域として抽出する。すなわち、被検査回路４００において、スキャンチェーンの複数のスキャンＦＦの状態のパラレル出力の影響が及ぶ範囲の回路部は、パラレルシミュレーションが可能であるため、スキャンチェーンとともに、パラレル領域として抽出する。スキャンチェーンの複数のスキャンＦＦのパラレル値によって値が変化するノードや該ノードに接続するゲートを含む回路部としてスキャンＦＦの出力を入力とする組み合わせ回路（図４のＵＤＬ回路４０３）、及び該組み合せ回路の出力に接続される順序回路（例えばＵＤＬ回路４０３の出力に接続されるＦＦ（スキャンＦＦ））が含まれる。
【０１０５】
回路分割手段２（図１参照）は、被検査回路４００において、前記パラレル領域以外の回路（スキャンチェーン無し）をシリアル領域として抽出する。シリアル領域は、パラレル領域の入力ノードであるスキャンチェーン（図４の４０４、４０５）の入力に出力が接続された回路部（図４の４０１）と、スキャンチェーン（図４の４０４、４０５）の出力に入力が接続された回路部（図４の４０２）とを含む。
【０１０６】
図１２は、回路分割手段２（図１参照）によって、図４の被検査回路４００を回路分割した後の構成を示す図である。パタン生成器１２０４と圧縮器１２０５は、シリアル領域１２０１である。機能ブロックはパラレル領域１２１０である。なお、パタン生成器の出力端子１２０６、１２０８は、パラレル領域の入力端子１２１１、１２１３と接続関係にあり、パラレル領域の出力端子１２１２、１２１４は、圧縮器の入力端子１２０７、１２０９と接続関係にある。
【０１０７】
回路分割手段２では、被検査回路４００をパラレル領域とシリアル領域に分割するために、スキャンＦＦの保持する状態値が変化しないように、回路動作及びテストパタンを制御しながら、シミュレーションを実行し、
・スキャンＦＦの保持する状態値と同じ論理値に変化したノード、及び、
・前記ノードに接続するゲート
をパラレル領域として抽出し、前記パラレル領域以外の論理回路をシリアル領域として抽出する。
【０１０８】
より具体的な例として、例えば、次の（１）、あるいは（２）のような方法を用いても良い（但し、限定されない）。
【０１０９】
＜方法１＞
（１−１）被検査回路４００の全てのノードを“０”又は“１”で初期化し、被検査回路中の機能ブロックの中にある全てのスキャンＦＦの保持する状態値を“Ｘ”に設定する。
【０１１０】
（１−２）次に前記スキャンＦＦへのクロック信号を供給するノードを切断するか、又は、入力データ１のテストパタンのクロック入力を削除して、被検査回路４００の１クロック分のシミュレーションを実行する。
【０１１１】
（１−３）前記シミュレーションによって、
・スキャンＦＦの保持している状態値と同じ論理値に変化したノード、及び、
・前記ノードに接続するゲート
をパラレル領域として抽出し、被検査回路４００において、前記パラレル領域以外の回路をシリアル領域として抽出する。
【０１１２】
＜方法２＞
（２−１）まず、被検査回路４００の全てのノードを“０”又は“１”で初期化し、被検査回路中の機能ブロックの中にある全てのスキャンＦＦの保持する状態値を“Ｘ”に設定する。
【０１１３】
（２−２）次に、前記スキャンＦＦの保持する状態値の書き換えを禁止して、被検査回路の１クロック分のシミュレーションを実行する。
【０１１４】
（２−３）前記シミュレーションによって、
・スキャンＦＦの保持している状態値と同じ論理値に変化したノード、及び、
・前記ノードに接続するゲート
をパラレル領域として抽出し、被検査回路４００において、前記パラレル領域以外の回路をシリアル領域として抽出する。
【０１１５】
＜期待値計算ステップ＞
次に、期待値計算手段３（図１参照）による期待値計算ステップ２０２（図２参照）の一例について説明する。期待値計算ステップ２０２では、分割回路データ記憶部９（図１参照）より、図２の回路分割ステップ２０１で分割した回路情報を読み出す。
【０１１６】
そして、入力データ１（図１参照）のテストパタンを用いてパラレル領域には、パラレルシミュレーションを実行し、シリアル領域には、シリアルシミュレーションを実行することで、シリアル領域とパラレル領域との期待値を求め、期待値データ記憶部１０に記憶する。つまり、期待値データ記憶部１０（図１参照）には、図１２のシリアル領域１２０１の期待値と、図１２のパラレル領域１２１０の期待値とが記憶される。
【０１１７】
期待値計算ステップ２０２は、図１３に示すように、３つのステップ１３０１〜１３０３を含む（期待値計算手段３（図１参照）は、ステップ１３０１〜１３０３を実行する）。図４と図１２とを用いて、各ステップを以下に説明する。
【０１１８】
ステップ１３０１のシリアル領域のシミュレーション（パラレル領域の入力パタン算出）では、分割回路データ記憶部９（図１参照）よりシリアル領域１２０１の回路情報を読み出し、入力データ１（図１参照）に含まれるテストパタンに基づき、シリアル領域１２０１におけるシミュレーションを実行し、シリアル領域１２０１内に存在するパタン生成器１２０４から生成されるパタンを得る。具体的には、入力データ１のテストパタンを、パタン生成器１２０４の入力端子１２０２に印加し、パタン生成器１２０４の出力端子１２０６、１２０８から出力される値を抽出する。
【０１１９】
入力データ１に含まれるテストパタンのそれぞれについてシミュレーションが全て完了すると、ステップ１３０２のパラレル領域のシミュレーション（パラレル領域の期待値算出）へ移行する。
【０１２０】
ステップ１３０２のパラレル領域のシミュレーションでは、まず、分割回路データ記憶部９（図１参照）よりパラレル領域１２１０の回路情報を読み出す。
【０１２１】
次に、ステップ１３０１のシリアル領域のシミュレーションで求めたパタン生成器１２０４の出力端子１２０６、１２０８から出力される値（パタン生成器出力データ）を、スキャンチェーンの入力パタンとして用いることで、パラレル領域１２１０のパラレルシミュレーションを実行し、パラレル領域１２１０の出力（機能ブロックの出力：スキャンチェーンの出力）を、パラレル領域の期待値として、期待値データ記憶部１０（図１参照）に記憶する。
【０１２２】
スキャンチェーンの入力パタンの全てに関するシミュレーションが完了すると、ステップ１３０３のシリアル領域のシミュレーション（シリアル領域の期待値算出）へ移行する。
【０１２３】
ステップ１３０２のパラレル領域のシミュレーションを、図１３を参照して説明する。・ステップ１３０１のシリアル領域のシミュレーションで求めたパタン生成器１２０４の出力端子１２０６の出力値を、当該出力端子１２０６と接続関係にあるパラレル領域１２１０の入力端子１２１１に入力し、パタン生成器１２０４の出力端子１２０８の出力値を、当該出力端子１２０８と接続関係にあるパラレル領域１２１０の入力端子１２１３に入力する。入力データ１のテストパタンがシフトパタンである場合、パラレル領域１２１０内のスキャンチェーンのシフト動作を省略して、スキャンＦＦに、直接、入力パタンを設定する。キャプチャパタン時には、スキャンチェーンの入力端子に入力パタンを設定して、パラレルシミュレーションを行う。パラレル領域１２１０の出力端子１２１２、１２１４の出力は、期待値として、期待値データ記憶部１０（図１参照）に記憶する。
【０１２４】
ステップ１３０３のシリアル領域のシミュレーションでは、まず、分割回路データ記憶部９（図１参照）より、シリアル領域１２０１の回路情報を読み出す。次に、入力データ１（図１参照）のテストパタンを用いて、パタン生成器１２０４の入力１２０２に与え、ステップ１３０２のパラレル領域のシミュレーションで求めたパラレル領域１２１０の期待値（期待値データ記憶部１０（図１参照）に記憶されている）を、圧縮器１２０５の入力１２０７、１２０９に与え、シリアルシミュレーションを実行し、パタン生成器１２０４の出力１２０６、１２０８、圧縮器１２０５の出力１２０３を、シリアル領域１２０１の期待値として求め、期待値データ記憶部１０に記憶する。
【０１２５】
パラレル領域１２１０の期待値を算出した後に、ステップ１３０３で、再び、シリアル領域１２０１のシミュレーションを実行することで、シリアル領域１２０１内の圧縮器１２０５の入力値が決定される。
【０１２６】
ステップ１３０３のシリアル領域のシミュレーションを具体的に説明する。ステップ１３０２のパラレル領域のシミュレーションで求めたパラレル領域１２１０の出力端子１２１２の出力値を、該出力端子１２１２と接続関係にある圧縮器１２０５の入力端子１２０７に設定し、パラレル領域１２１０の出力端子１２１４の出力値を、該出力端子１２１４と接続関係にある圧縮器１２０５の入力端子１２０９に設定してシリアルシミュレーションを行う。このとき、ステップ１３０１のシリアル領域のシミュレーションと同様に、パタン生成器１２０４の入力端子１２０２には、入力データ１（図１参照）のテストパタンが入力される。そして、シリアル領域内の全ノードの期待値は、パラレル領域のシミュレーション１３０２と同様に、期待値データ記憶部１０（図１参照）に記憶する。
【０１２７】
入力データ１（図１参照）のテストパタンの全てのシミュレーションが完了すると、図２の期待値計算ステップ２０２が終了し、図２の故障診断ステップ２０３に移行する。
【０１２８】
なお、図１３では、シリアル領域、パラレル領域、シリアル領域の順で実行され、前段ステップのシミュレーションの結果得られたパタンを後段ステップのシミュレーションの入力パタンとして用いる例を説明したが、回路分割される論理回路の構成、及び回路分割の仕方によっては、パラレル領域、シリアル領域、パラレル領域の順で実行され、前段ステップのシミュレーションの結果得られたパタンを後段ステップのシミュレーションの入力パタンとして用い、シリアル領域、パラレル領域の期待値を取得するようにしてもよい。あるいは、シリアル領域、パラレル領域、シリアル領域、パラレル領域、・・・の順で交互にシミュレーションを行うようにしてもよい。同様に、パラレル領域、シリアル領域、パラレル領域、シリアル領域・・・の順で交互にシミュレーションを行うようにしてもよい。
【０１２９】
＜故障診断ステップ＞
次に、故障診断手段４（図１参照）による故障診断ステップ２０３（図２参照）を説明する。故障診断ステップ２０３では、図２の期待値計算ステップ２０２で求めた期待値データを用いて、図１４に示したフローに従い、スキャンテスト回路を備えた論理回路全体の故障診断を行う（故障診断手段４（図１参照）は図１４に示した各ステップを実行する）。
【０１３０】
まず、ステップ１４０１の診断対象領域の決定処理において、入力データ１（図１参照）のテスト結果に含まれる、
・故障の影響によって正常回路の期待値とは異なる値を出力する端子、又は、
・故障の影響によって正常回路の期待値とは異なる値を取り込むスキャンＦＦ
が属するシリアル領域又はパラレル領域を、故障診断する対象領域（診断対象領域）に決定する。なお、入力データ１（図１参照）のテスト結果には、正常回路の期待値とは異なる値を出力した端子と、正常回路の期待値とは異なる値を出力したスキャンＦＦとが、故障出力端子と記載される。
【０１３１】
次に、診断対象領域の決定ステップ１４０１で決定した診断対象領域が、シリアル領域（図１２の１２０１）である場合、期待値データ記憶部１０（図１参照）より、シリアル領域の期待値（図１３のステップ１３０３のシリアル領域のシミュレーション（シリアル領域の期待値算出）で求められる）を読み出し、入力データ１（図１参照）の前記テスト結果に含まれる故障出力端子に故障を設定して、シリアル領域（図１２の１２０１）の故障診断１４０３を実行する。
【０１３２】
設定した診断対象領域がパラレル領域（図１２の１２１０）である場合、期待値データ記憶部１０（図１参照）よりパラレル領域の期待値（図１３のステップ１３０２のパラレル領域のシミュレーション（パラレル領域の期待値算出）で求められる）を読み出し、入力データ１（図１参照）の前記テスト結果に含まれる故障出力端子に故障を設定して、パラレル領域の故障診断１４０５を実行する。
【０１３３】
シリアル領域の故障診断１４０３の実行後は、シリアル領域の故障診断結果（故障候補）を基に、シリアル領域の終了条件１４０４を評価し、故障診断ステップ２０３を終了するか、パラレル領域の故障診断１４０５へ移行するかを決定する。
【０１３４】
シリアル領域の終了条件１４０４は、
直前のステップ１４０３で求めたシリアル領域の故障診断結果（故障候補）に、
直前のステップ１４０３で求めた前記パラレル領域と接続関係のある前記シリアル領域の入力端子(図１２の圧縮器１２０５の入力端子１２０７、１２０９)が含まれる場合に（シリアル領域の終了条件１４０４が成立せず、ステップ１４０４のＮｏ分岐）、  前記シリアル領域の入力端子と接続関係にあるパラレル領域の出力端子（例えば図１２のパラレル領域１２１０の出力端子１２１２、１２１４）又はスキャンＦＦを、故障出力端子に設定して、パラレル領域の故障診断１４０５へ移行する。
【０１３５】
パラレル領域の故障診断１４０５へ移行しない場合（ステップ１４０４のＹｅｓ分岐、シリアル領域の終了条件１４０４の否定）、すなわち、
直前のステップ１４０３で求めたシリアル領域の故障候補に、直前のステップ１４０３で求めた前記パラレル領域と接続関係のある前記シリアル領域の入力端子（図１２の圧縮器１２０５の入力端子１２０７、１２０９）が含まれない場合に、故障診断ステップ２０３（図２参照）を終了し、終了するまで行った全ての領域の故障候補を出力部５（図１参照）へ出力する。
【０１３６】
一方、パラレル領域の故障診断１４０５の実行後は、パラレル領域の故障候補を元に、パラレル領域の終了条件１４０６を評価し、故障診断ステップ２０３を終了するか、シリアル領域の故障診断１４０３へ移行するかを決定する。
【０１３７】
パラレル領域の終了条件１４０６は、
直前のステップ１４０５で求めたパラレル領域（図１２の１２１０）の故障候補に、
（ｃ）前記パラレル領域と接続関係にあるシリアル領域の入力端子が含まれる、
又は、
直前のステップ１４０５で求めたパラレル領域の故障候補に、
（ｄ−１）スキャンＦＦが含まれ、且つ、（ｄ−２）前記スキャンＦＦが属するスキャンチェーンのスキャン入力端子が前記パラレル領域と接続関係にあるシリアル領域の入力端子である、
場合に、前記（ｃ）、（ｄ−２）の前記入力端子と接続関係にあるシリアル領域の出力端子（図１２の１２０１の出力端子１２０３）を故障出力端子に設定して、シリアル領域の故障診断１４０３へ移行する。
【０１３８】
シリアル領域の故障診断１４０３へ移行しない場合、すなわち、
（ｅ）直前のステップ１４０５で求めたパラレル領域の故障候補に、前記パラレル領域と接続関係にあるシリアル領域の入力端子が含まれない場合、且つ、
（ｆ−１）直前のステップ１４０５で求めたパラレル領域の故障候補にスキャンＦＦが存在しない、または、（ｆ−２）直前のステップ１４０５で求めたパラレル領域の故障候補にスキャンＦＦが存在し、前記スキャンＦＦが属するスキャンチェーンの入力端子が、前記シリアル領域と接続関係にあるパラレル領域の入力端子ではない、
場合に、
故障診断ステップ２０３を終了し、終了するまでに行った全ての領域の故障候補を出力部５（図１参照）へ出力する。
【０１３９】
＜故障診断の詳細例＞
次に、故障診断手段４（図１参照）による故障診断ステップ２０３（図２参照）を説明する。図４の論理回路（被検査回路４００）と、前記論理回路に対して回路分割ステップ２０１を実行した図１２の論理回路とを用いて、故障診断ステップ２０３を詳細に説明する。
【０１４０】
図４において、パタン生成器４０１の内部に故障が生じ、その故障の影響がパタン生成器４０１、機能ブロック４１４、及び、圧縮器４０２を順に通過し、テスト出力端子４０９によって故障検出されたものとする。このとき、入力データ１に相当するテスト結果には、図８のような故障検出情報が含まれる。
【０１４１】
まず、診断対象領域の決定（ステップ１４０１）にて入力データ１（図１参照）のテスト結果に記載の故障出力端子が属する領域を決定する。今回の例では、故障検出したテスト出力端子４０９は、図１２のテスト出力端子１２０３に相当し、シリアル領域（図１２の１２０１）が診断対象領域に決定する。
【０１４２】
次に、シリアル領域の故障診断１４０３を実行する。ここでは、シリアル領域（図１２の１２０１）の期待値を、期待値データ記憶部１０（図１参照）より読み出し、圧縮器（図１２の１２０５）の出力端子（図１２の１２０３）を故障検出端子として、シリアル領域（図１２の１２０１）の故障診断を行い、シリアル領域の故障候補を求める。
【０１４３】
言い変えると、図１２の圧縮器１２０５の故障診断を行い、圧縮器１２０５内の故障候補を求める。そして、シリアル領域の終了条件１４０４（図１４）を判定する。
【０１４４】
図１２の圧縮器１２０５の入力端子１２０７が、シリアル領域１２０１の故障候補に含まれている場合、圧縮器１２０５の入力端子１２０７は、パラレル領域（図１２の１２１０）と接続関係にあるため、図１４のパラレル領域の故障診断１４０５へ移行する。
【０１４５】
パラレル領域の故障診断１４０５は、図１２のパラレル領域１２１０の期待値を期待値データ記憶部１０（図１参照）より読み出し、圧縮器１２０５の入力端子１２０７と接続関係にあるパラレル領域１２１０の出力端子１２１２を故障検出端子として設定して故障診断を行う。パラレル領域１２１０の故障候補にスキャンＦＦが含まれ、そのスキャンＦＦが属するスキャンチェーンの入力端子が、例えばパラレル領域１２１０の入力端子１２１１であったとき、パラレル領域の終了条件１４０６（図１４）を判定して、再度、シリアル領域の診断処理１４０３（図１４）に移行する。
【０１４６】
シリアル領域の故障診断１４０３では、図１２のシリアル領域１２０１の期待値を期待値データ記憶部１０（図１参照）より読み出し、前記故障診断で求まったスキャンチェーンの入力端子がパラレル領域１２１０の入力端子１２１１と接続関係にあるパタン生成器１２０４の出力端子１２０６を、故障検出端子として、パタン生成器１２０４の故障候補を求める。
【０１４７】
そして、シリアル領域の終了条件１４０４を判定して、故障診断ステップ２０３（図２）が終了する。このとき、これまでの故障診断で求めたパラレル領域の故障候補とシリアル領域の故障候補とを全て出力部５（図１参照）へ出力する。
【０１４８】
また、故障診断ステップ２０３（図２）において、シリアル領域とパラレル領域とを跨ぐ故障シミュレーションを実行して、故障診断精度を高めることができる。例えば、図１２のパタン生成器１２０４の故障診断終了後、故障候補となったパタン生成器１２０４内のノードに対して、故障シミュレーションを実行する。
【０１４９】
故障シミュレーションのために仮定した故障の影響は、図１２のパタン生成器１２０４と機能ブロック１２１０と圧縮器１２０５とを通過し、圧縮器１２０５の出力端子１２０３（図４のテスト出力端子４０９）で観測される。
【０１５０】
図４のテスト出力端子４０９で観測された故障シミュレーション結果と入力データ１のテスト結果とを比較し、比較した結果が、
完全に一致している場合、故障シミュレーション時に仮定した故障が真の故障である可能性が高く、
完全に一致していない場合、故障シミュレーション時に仮定した故障は真の故障である可能性が低い。
【０１５１】
出力部５（図１参照）では、故障診断ステップ２０３（図２参照）によって求めたパラレル領域の故障候補と、シリアル領域の故障候補とをまとめ、出力データ６（図１参照）とする。
【０１５２】
表示部７（図１参照）は、出力データ６を表示して、実行例の動作が完了する。表示部７では、出力データ６を、図１５（ａ）のようにテキスト形式で表示し、図１５（ｂ）のように、被検査回路４００のレイアウト図上に、故障候補をハイライトして表示する。図１５（ａ）の故障候補リスト１５００は、２つの領域の故障候補にて構成され、故障候補１５０１はパラレル領域の故障候補を示し、故障候補１５０２はシリアル領域の故障候補を示す。
【０１５３】
また、図１５（ｂ）のレイアウト図１５０３は、パラレル領域の故障候補とシリアル領域の故障候補をハイライト表示した図である。パラレル領域の故障候補ノード１５０４とシリアル領域の故障候補１５０５ノードとは異なるハイライト色で区別して表示してもよい。
【０１５４】
＜実施形態２＞
次に実施形態２について説明する。スキャンテスト回路を有する論理回路がパタン圧縮回路を含み、前記論理回路を故障診断する場合、図２の回路分割ステップ２０１、期待値計算ステップ２０２、故障診断ステップ２０３により、パタン圧縮回路に含まれる圧縮器をシリアル領域として故障診断するため、圧縮器の回路構成に依存せずに故障診断を行い、故障候補を求めることができる。圧縮器としては、例えば図１６（Ａ）の圧縮器１６００のように、複数の２入力ＥＸＯＲ（Ｅｘｃｌｕｓｉｖｅ  ＯＲ：排他的論理和回路）ゲート１６０１のツリー構造であってもよい。初段（ツリー末端）の２入力ＥＸＯＲの入力には、スキャンチェーンの出力端子がそれぞれ接続される（２入力ＥＸＯＲは２入力が一致したとき“０”、不一致のとき“１”を出力する）。図１６（Ａ）の例では、４本のスキャンチェーンの出力（スキャン出力端子）１６０１＿１〜１６０１＿４（２ビット×２の４ビット）が２個の２入力ＥＸＯＲ１６０１＿１、１６０１＿２に入力され、出力１６０３に接続されたＥＸＯＲ１６０１＿３から１ビット情報に圧縮されて出力される。
【０１５５】
あるいは、図１６（Ｂ）の圧縮器１６０４のように、フリップフロップ１６０５とＥＸＯＲゲートで構成されるＭＩＳＲ（Ｍｕｌｔｉｐｌｅ  Ｉｎｐｕｔ  Ｓｉｇｎａｔｕｒｅ  Ｒｅｇｉｓｔｅｒ）回路でもよい。３入力ＥＸＯＲ１６０８＿１には、スキャンチェーンの出力１６０６＿１が入力され、さらにＥＸＯＲ１６０８＿１の出力を入力とするフリップフロップ１６０５＿１の出力（スキャン出力端子）と、ＥＸＯＲ１６０８＿２の出力を入力とするフリップフロップ１６０５＿２の出力が帰還入力され、３入力ＥＸＯＲ１６０８＿２には、スキャンチェーンの出力（スキャン出力端子）１６０６＿２が入力され、さらに、ＥＸＯＲ１６０８＿２の出力を入力とするフリップフロップ１６０５＿２と、フリップフロップ１６０５＿１の出力が帰還入力される。なお、３入力ＥＸＯＲは３入力が一致した場合、“０”、それ以外の場合、“１”を出力する。
【０１５６】
あるいは、圧縮器として、圧縮器回路内に不定値“Ｘ”の伝播を防ぐ仕組みを持つＸ−ｔｏｌｅｒａｎｔ機構を含んでいてもよい。Ｘ−ｔｏｌｅｒａｎｔ機構について、図１７を用いて説明する。Ｘ−ｔｏｒｅｌａｎｔ機構を含む圧縮器１７００は、圧縮器１７０２の入力側にＸ−ｔｏｒｅｌａｎｔ機構１７０１を備える。Ｘ−ｔｏｒｅｌａｎｔ機構１７０１は単純なＡＮＤゲートにて構成され、スキャンチェーンの出力端子（図４の４１１、４１３）に接続するノード１７０３、１７０４と、ＡＮＤゲート１７０８、１７０９を制御するノード１７０５、１７０６とが入力される。スキャンチェーンの出力端子（図４の４１１、４１３）から不定値“Ｘ”が伝搬する場合、Ｘ−ｔｏｒｅｌａｎｔ機構１７０１のＡＮＤゲート１７０８、１７０９には、当該ＡＮＤゲート１７０８、１７０９を制御するノード１７０５、１７０６から制御信号“０”が入力され、ＡＮＤゲート１７０８、１７０９の出力を強制的に“０”とする。ＡＮＤゲートの制御信号は、パタン生成器などスキャンロジック以外のシリアル領域が生成する。このような仕組みにより、不定値“Ｘ”の圧縮器１７０２への入力を防ぐ。
【０１５７】
＜実施形態３＞
次に実施形態３について説明する。スキャンテスト回路を有する論理回路が、階層設計されコントローラ回路を含んでいても、スキャンテスト回路を有する論理回路全体を故障診断可能としている。例えば、図１、図２、図５を参照して、実施形態３の動作について詳細に説明する。
【０１５８】
入力データ１より、テストパタンと、スキャンチェーンの構成情報と、設計データとをデータ処理部８（図１参照）に入力し、コンピュータ上に実製品と同じ構造をもつ論理回路を仮想的に構築する。本実施形態では、コントローラ回路が機能ブロック５０３（図５参照）を選択する入力データ１（図１参照）のテストパタンであるとし、データ処理部８の各手段を、図２に示す３つのステップで実現する。
【０１５９】
回路分割手段２（図２の回路分割ステップ２０１）では、被検査回路５００（図５参照）をパラレルシミュレーションを実行する機能ブロック５０３（図５参照）を含む回路（パラレル領域）、シリアルシミュレーションを実行するコントローラ回路を含む回路（シリアル領域）に分割し、分割回路データ記憶部９に記憶する。
【０１６０】
期待値計算手段３（図２の期待値計算ステップ２０２）では、前記実施形態１と同様に、図１３に示すフローに沿って被検査回路５００全体の期待値を求める。
【０１６１】
シリアル領域のシミュレーション１３０１では、分割回路データ記憶部９（図１参照）よりシリアル領域の回路情報を読み出し、入力データ１（図１参照）のテストパタンを入力としてシリアル領域のシミュレーションを実行してシリアル領域内に存在するコントローラ回路から出力される出力値を得る。例えば、コントローラ回路５０１（図５参照）の出力端子と接続のある信号線５０４（図５参照）を観測して出力値を抽出する。入力データ１の全てのテストパタンのパタンのシミュレーションが完了すると、パラレル領域のシミュレーション１３０２へ移行する。
【０１６２】
パラレル領域のシミュレーション１３０２では、まず、分割回路データ記憶部９（図１参照）よりパラレル領域の回路情報を読み出す。
【０１６３】
次に、シリアル領域のシミュレーション１３０１にて求めたコントローラ回路５０１の出力値を、信号線５０４と接続関係にある機能ブロック５０３中のスキャンチェーンのスキャン入力端子に設定して、パラレル領域のパラレルシミュレーションを実行する。そしてパラレル領域内の全ノードの期待値を期待値データ記憶部１０（図１参照）に記憶する。全ての入力パタンのシミュレーションが完了すると、シリアル領域のシミュレーション１３０３へ移行する。
【０１６４】
シリアル領域のシミュレーション１３０３では、まず、分割回路データ記憶部９（図１参照）よりシリアル領域の回路情報を読み出す。次に、入力データ１（図１参照）のテストパタンと、パラレル領域のシミュレーション１３０２処理にて求めたパラレル領域の期待値とを用いて、シリアルシミュレーションを実行し、シリアル領域の全ノードの期待値を求めて、期待値データ記憶部１０（図１参照）に記憶する。
【０１６５】
故障診断手段４（図２の故障診断ステップ２０３以降）の処理は、前記実施形態１と同様であるため、説明は省略する。
【０１６６】
＜実施形態４＞
実施形態４においては、図５に示すように、スキャンテスト回路を有する論理回路が階層設計されコントローラ回路５０１を含んでおり、機能ブロック５０２、５０３はそれぞれ、パタン生成器（図４の４０１）と圧縮器（図４の４０２）を含んでいる。
【０１６７】
コントローラ回路５０１はテスト対象となる機能ブロックを切り替える。コントローラ回路５０１と機能ブロック５０２、５０３とを接続している信号線５０４、５０５、５０６、５０７について、機能ブロック５０２、５０３が図４と同じ構成の場合、信号線５０４は、機能ブロック５０３のテスト入力端子（図４のテスト入力端子４０８（パタン生成器４０１の入力端子））と接続し、信号線５０６は、機能ブロック５０３のテスト出力端子（図４のテスト出力端子４０９（圧縮器４０２の出力端子））と接続する。信号線５０５は、機能ブロック５０２のテスト入力端子（図４のテスト入力端子４０８（パタン生成器４０１の入力端子））と接続し、信号線５０７は、機能ブロック５０２のテスト出力端子（図４のテスト出力端子４０９（圧縮器４０２の出力端子））と接続される。階層設計された被検査回路のテスト時の動作を説明する。不図示のテスタからテストパタンがコントローラ入力端子５０８に印加される。コントローラ回路５０１は、そのテストパタンの一部より、テストすべき機能ブロックを選択する。選択された機能ブロックを例えば機能ブロック５０３とすると、コントローラ回路５０１に入力されたテストパタンは、信号線５０４を介して機能ブロック５０３に入力される。
【０１６８】
機能ブロック５０２、５０３の各々では、前記実施形態１と同様に動作で、回路分割ステップ２０１、期待値計算ステップ２０２、故障診断ステップ２０３が行われ、スキャンテスト回路を有する論理回路全体を故障診断が行われる。
【０１６９】
＜実施形態５＞
図２の故障診断ステップ２０３において、故障診断は、故障出力端子から入力端子側に故障の伝播経路を推測しながら真の故障を追跡する故障診断法であってもよい。
【０１７０】
また、診断対象の領域に故障を仮定してシミュレーションを行い、そのシミュレーション結果とテスト結果とが一致する箇所を故障候補とする故障シミュレーション法でもよい。
【０１７１】
さらに、図２の故障診断ステップ２０３の実行の前に、分割回路データ記憶部９（図１）の分割回路を対象にした複数個所の故障シミュレーションを実行して故障辞書し、故障診断ステップ２０３時に、前記故障辞書とテスト出力とを比較して、故障箇所を推定することもできる。
【０１７２】
＜実施形態の作用効果＞
図１８は、上記実施形態の作用効果の一例を説明する図である。図１８（Ａ）は、２Ｍゲート規模と６Ｍゲート規模の論理回路の故障シミュレーションにおいて、パラレルシミュレーションとシリアルシミュレーションの実行時間（縦軸、ただし、対数スケール）の一例を示している。パラレルシミュレーションの導入により、シリアルシミュレーションと比較して、１０の２又は３乗のオーダでシミュレーション時間を短縮している（図１８（Ａ））。なお、２Ｍ（Ｍｅｇａ）ゲート規模と６Ｍ（Ｍｅｇａ）ゲート規模のスキャンチェーン数は３２、最大チェーン長は２１５１、５０５９、シミュレーションパタン数はともに１０とされる（図１８（Ｂ））。シミュレーションの実行環境は図１８（Ｃ）に示したものとされる。回路規模が大きくなり、スキャンチェーンの長さが長いほど、パタンシミュレーションのシリアルシミュレーションに対するシミュレーション時間の短縮効果が顕著となる。一方、パタンシミュレーションの実行時間についてみると、６Ｍゲート規模は２Ｍゲート規模の２．５程度とされ、回路規模（最大チェーン数等）にほぼ線形に依存している。
【０１７３】
このように、論理回路中のパラレルシミュレーションが実施可能な領域（パラレル領域）は積極的にパラレルシミュレーションを実施することで、現実的な時間での故障診断が可能となる。このために、論理回路をパラレル領域とシリアル領域とを分割する必要があり、また、シリアル領域に対してシリアルシミュレーションを行うことで、階層設計におけるコントローラ回路や、パタン圧縮回路におけるパタン生成器、圧縮器などの付加回路の故障診断が可能となる。
【０１７４】
なお、上記の特許文献等の各開示を、本書に引用をもって繰り込むものとする。本発明の全開示（請求の範囲を含む）の枠内において、さらにその基本的技術思想に基づいて、実施形態の変更・調整が可能である。また、本発明の請求の範囲の枠内において種々の開示要素の多様な組み合わせないし選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。
【符号の説明】
【０１７５】
１  入力データ
２  回路分割手段
３  期待値計算手段
４  故障診断手段
５  出力部
６  出力データ
７  表示部
８  データ処理部
９  分割回路データ（記憶部）
１０  期待値データ（記憶部）
３００、４００、５００  被検査回路
３０１、３０８、４０８、５０８  テスト入力端子
３０２、３０９、４０９、５０９  テスト出力端子
３０３、４０３  ユーザロジック回路
３０４、３０５、４０４、４０５、６０１、７０１  スキャンチェーン
３０６ａ〜３０６ｃ、３０７ａ〜３０７ｃ、４０６ａ〜４０６ｃ、４０７ａ〜４０７ｃ  スキャンフリップフロップ
４０１  パタン生成器
４０２  圧縮器
４１０、４１２  スキャン入力端子
４１１、４１３  スキャン出力端子
４１４、５０２、５０３  機能ブロック
５０１  コントローラ回路
５０４、５０５、５０６、５０７  信号線
５０８  コントローラ入力端子
６０３、７０３、１０００、１１００  テストパタン
８００  テスト結果
８０１  テストパタン番号
８０２  テスト結果出力端子名
８０３  ビット信号
９００  スキャンチェーン構成データ
９０１  パタン生成器とスキャンチェーンとの境界端子名
９０２  圧縮器とスキャンチェーンとの境界端子名
９０３  スキャンチェーンを構成するスキャンＦＦのインスタンス名とその並び順
１００４、１００５、１１０４  「０／１」の系列
１００６、１００７、１１０５  正常論理回路の応答情報
１００１、１００２、１００３  シフトパタンの系列
１１０６、１１０７  キャプチャパタン系列
１２０１  シリアル領域
１２０２  パタン生成器の入力端子
１２０３  圧縮器の出力端子
１２０４  パタン生成器
１２０５  圧縮器
１２０６、１２０８  パタン生成器の出力端子
１２０７、１２０９  圧縮器の入力端子
１２１０  パラレル領域
１２１１、１２１３  パラレル領域の入力端子
１２１２、１２１４  パラレル領域の出力端子
１５００  故障候補リスト
１５０１、１５０２  故障候補
１５０３  レイアウト図
１５０４  パラレル領域の故障候補ノード  
１５０５  シリアル領域の故障候補ノード
１６００  ＥＸＯＲゲートのツリー構造の圧縮器
１６０１＿１、１６０１＿２、１６０１＿３  ＥＸＯＲゲート
１６０２＿１、１６０２＿２、１６０２＿３、１６０２＿４、１６０６＿１、１６０６＿２  スキャン出力端子
１６０３、１６０７  テスト出力端子
１６０４  ＭＩＳＲ構造をもつ圧縮器
１６０５＿１、１６０５＿２  フリップフロップ
１６０８＿１、１６０８＿２  ３入力ＥＸＯＲ
１７００  Ｘ−ｔｏｒｅｌａｎｔ機構を含む圧縮器
１７０１  Ｘ−ｔｏｒｅｌａｎｔ機構
１７０２  圧縮器
１７０３、１７０４  スキャン出力端子に接続するノード
１７０５、１７０６  ＡＮＤゲートの制御信号を伝搬させるノード
１７０７  テスト出力端子
１７０８、１７０９  ＡＮＤゲート
【図１】
2013019744.tif 000003
【図２】
2013019744.tif 000004
【図３】
2013019744.tif 000005
【図４】
2013019744.tif 000006
【図５】
2013019744.tif 000007
【図６】
2013019744.tif 000008
【図７】
2013019744.tif 000009
【図８】
2013019744.tif 000010
【図９】
2013019744.tif 000011
【図１０】
2013019744.tif 000012
【図１１】
2013019744.tif 000013
【図１２】
2013019744.tif 000014
【図１３】
2013019744.tif 000015
【図１４】
2013019744.tif 000016
【図１５】
2013019744.tif 000017
【図１６】
2013019744.tif 000018
【図１７】
2013019744.tif 000019
【図１８】
2013019744.tif 000020