(57)【要約】【課題】大規模化、多層配線化する論理回路に対して、機能レベルで、短時間に、期待値を算出し、また故障個所を推定する。【解決手段】本故障診断装置は、故障論理回路のテスト結果から取得されたフェイル情報に基づき論理回路の故障個所を推定する装置であり、例えば、入力装置１と、フェイル抽出装置２と、論理回路を決定グラフに変換する変換装置３と、論理回路の期待値を算出する期待値算出装置４と、論理回路の故障個所を推定する故障個所推定装置５と、情報を記憶する記憶装置６と、出力装置７とを備えた構成である。【選択図】      図１
2004309261.tif 000002
【特許請求の範囲】
【請求項１】
論理回路の構造あるいは動作を設計言語で回路ブロック単位に機能記述した記述情報から、フェイル抽出装置により抽出したフェイル推定出力ポートを有するフェイル推定回路ブロックごとに作成した状態遷移表に基づき、入力ノード、演算子で構成される操作ノード、複数の入力値の組から１つの出力値を選択する選択ノードおよび出力ノードとこれらの各ノードの結線を行い、表示手段にデータフロー表示して前記各ノードに対する動作を決定する決定グラフを作成し、データ系故障と制御系故障とを別々に想定しながら、前記決定グラフを用いたフェイル伝搬経路推定を行うことで、機能レベルでデータ系と制御系の故障個所を推定する機能を有することを特徴とする論理回路の故障診断装置。
【請求項２】
論理回路のテスト結果から取得されたフェイル情報に基づき前記論理回路の故障個所を推定する論理回路の故障診断装置において、入力装置と、前記論理回路を設計言語で回路ブロック単位に機能記述した記述情報、前記フェイル情報およびフェイル伝搬推定情報により、フェイル出力ポートおよびフェイル推定出力ポートを有するフェイル推定回路ブロックを抽出するフェイル抽出装置と、前記記述情報を基に前記フェイル推定回路ブロックの処理順序に従って複数の状態を持つ状態遷移表を作成し、前記状態遷移表を基に、入力ノード、演算子で構成される操作ノード、複数の入力値の組から１つの出力値を選択する選択ノードおよび出力ノードと前記各ノードの結線とを行うとともにデータフロー表示して全条件に対する動作を決定するための決定グラフを作成する変換装置と、前記論理回路の期待値を算出する期待値算出装置と、前記論理回路の故障個所を推定する故障個所推定装置と、前記装置それぞれの情報を記憶する記憶装置と、前記故障個所推定装置の出力データを表示する出力装置とを備えることを特徴とする論理回路の故障診断装置。
【請求項３】
前記設計言語は、論理回路の構造あるいは動作を記述した言語である請求項２記載の論理回路の故障診断装置。
【請求項４】
前記変換装置は、前記論理回路の処理を複数の遷移状態に分割し、現状態、状態遷移条件、次状態および動作の各項目で構成される状態遷移表を作成する手段と、前記状態遷移表に記述された入力ポート、状態変数または数値を読み出す処理を入力ノードとして設定し、演算子の処理を操作ノードとして設定し、出力ポート、前記状態変数または前記数値を書き込む処理を出力ノードとして設定し、前記入力ノードおよび前記操作ノードをデータフローとして接続することで状態を計算する制御パートを作成し、作成した前記状態の結果をＴＲＵＥ／ＦＡＬＳＥの２値で与え、かつ、前記入力ノードおよび前記操作ノードを前記データフローとして接続することで出力値を計算するデータパートを作成し、前記状態の結果に応じて、与えられた組の中から前記ＴＲＵＥの状態に対応した一つの前記出力値を出力ノードに選択出力するための選択ノードを設定する手段とを有する請求項２記載の論理回路の故障診断装置。
【請求項５】
前記期待値算出装置は、前記決定グラフに基づき、状態が遷移するごとに、前記入力ノード、前記操作ノード、前記選択ノードおよび前記出力ノードの出力値を算出して、ノード名および算出値の組で構成されるノードテーブルを作成するノード期待値取得手段と、前記ノードテーブルから前記論理回路の出力値を抽出する出力値抽出手段とを有する請求項２記載の論理回路の故障診断装置。
【請求項６】
前記期待値算出装置におけるノード期待値取得手段は、テストパターンもしくは一つ前の状態の出力パターンを読み込み、前記入力ノードを設定する入力パターン読み込み手段と、全入力値が設定され、かつ出力値が未設定の操作ノードを抽出する操作ノード抽出手段と、抽出された前記操作ノードに対して、入力値をもとに出力値を算出する操作ノード設定手段と、全操作ノードの設定が完了したか否かを判定し、完了していなければ操作ノード抽出手段へ戻り、完了していれば次の手段へ進む操作ノード判定手段と、選択ノードの出力値を算出する選択ノード設定手段と、前記出力ノードの出力値を算出する出力ノード設定手段と、次状態が有り、かつ次状態が最初の遷移状態でなければ次状態の前記入力パターン読み込み手段へ行き、次状態が無いか、もしくは次状態が最初の遷移状態であれば、処理を終了する状態判定手段とを有する請求項５記載の論理回路の故障診断装置。
【請求項７】
前記期待値算出装置における出力値抽出手段は、前記ノード期待値取得手段で作成したノードテーブルから、テストパターンごとの最終状態における出力ポートの出力値を抽出する手段により、前記論理回路の出力値を抽出する機能を有する請求項５記載の論理回路の故障診断装置。
【請求項８】
前記故障個所推定装置は、制御系故障とデータ系故障とを別々に想定しながら故障個所を推定する故障モード選択手段と、前記フェイル出力ポートおよび前記フェイル推定出力ポートに対応したノードを起点として、フェイルベクタに基づき各ノードの出力推定および期待値比較により各ノードのフェイル推定を入力方向に行い、フェイル伝搬経路を推定するノード推定手段と、このフェイル伝搬経路のノードの情報を故障個所推定情報として登録する推定情報登録手段と、出力ポートにフェイルを伝搬する可能性のある全ての組み合わせを算出するまで、これらの処理を繰り返す終了判定手段と、前記故障個所推定情報をリスト出力する故障候補出力手段とを有する請求項２記載の論理回路の故障診断装置。
【請求項９】
前記故障個所推装置における前記ノード推定手段は、各ノードの出力推定をする際に、前記ノードの値が多ビットの場合は、推定可能なビットの値のみを推定する機能を有する請求項２記載の論理回路の故障診断装置。
【請求項１０】
論理回路のテスト結果から取得されたフェイル情報に基づき前記論理回路の故障個所を推定する論理回路の故障診断方法において、前記論理回路を設計言語で回路ブロック単位に機能記述した記述情報、前記フェイル情報およびフェイル伝搬推定情報により、フェイル出力ポートおよびフェイル推定出力ポートを有するフェイル推定回路ブロックを抽出するフェイル抽出工程と、前記記述情報により、前記フェイル推定回路ブロックの処理順序に従って複数の状態を持つ状態遷移表を作成し、前記状態遷移表を基に入力ノード、演算子で構成される操作ノード、複数の入力値の組から１つの出力値を選択する選択ノードおよび出力ノードと前記各ノードの結線とを行うとともに、データフロー表示して全条件に対する動作を決定する決定グラフを作成する変換工程と、前記論理回路の期待値を算出する期待値算出工程と、故障個所を推定する故障個所推定工程とを有することを特徴とする論理回路の故障診断方法。
【請求項１１】
前記設計言語は、論理回路の構造あるいは動作を記述した言語である請求項１０記載の論理回路の故障診断方法。
【請求項１２】
前記変換工程は、前記論理回路の処理を複数の遷移状態に分割し、現状態、状態遷移条件、次状態および動作の各項目で構成される状態遷移表を作成する工程と、
前記状態遷移表に記述された入力ポート、状態変数または数値を読み出す処理を入力ノードとして設定し、演算子の処理を操作ノードとして設定し、出力ポート、前記状態変数または前記数値を書き込む処理を出力ノードとして設定し、前記入力ノードと前記操作ノードとをデータフローとして接続することで状態を計算する制御パートを作成し、作成した前記状態の結果をＴＲＵＥ／ＦＡＬＳＥの２値で与え、かつ、前記入力ノードおよび前記操作ノードをデータフローとして接続することで出力値を計算するデータパートを作成し、前記状態の結果において、与えられた組の中から前記ＴＲＵＥ状態に対応した一つの前記出力値を出力ノードに選択出力するための選択ノードを設定する工程とを有する請求項１０記載の論理回路の故障診断方法。
【請求項１３】
前記期待値算出工程は、前記決定グラフを用いて、状態が遷移するごとに、前記入力ノード、前記操作ノード、前記選択ノードおよび前記出力ノードの出力値を算出して、ノード名および算出値の組で構成されるノードテーブルを作成するノード期待値取得工程と、前記ノードテーブルから前記論理回路の出力値を抽出する出力値抽出工程とを有する請求項１０記載の論理回路の故障診断方法。
【請求項１４】
前記期待値算出工程におけるノード期待値取得工程は、テストパターンもしくは一つ前の状態の出力パターンを読み込み、前記入力ノードを設定する入力パターン読み込み工程と、全入力値が設定され、かつ出力値が未設定の操作ノードを抽出する操作ノード抽出工程と、
抽出された前記操作ノードに対して、入力値をもとに出力値を算出する操作ノード設定工程と、
全操作ノードの設定が完了したか否かを判定し、完了していなければ操作ノード抽出工程へ戻り、完了していれば次の工程へ行く操作ノード判定工程と、
選択ノードの出力値を算出する選択ノード設定工程と、前記出力ノードの出力値を算出する出力ノード設定工程と、
次状態が有り、かつ次状態が最初の遷移状態でなければ次状態の前記入力パターン読み込み工程へ行き、次状態が無いか、もしくは次状態が最初の遷移状態であれば、処理を終了する状態判定工程とを有する請求項１３記載の論理回路の故障診断方法。
【請求項１５】
前記期待値算出処理工程における出力値抽出工程は、前記ノード期待値取得工程で作成したノードテーブルから、テストパターンごとの最終状態における出力ポートの出力値を抽出する工程により、前記論理回路の出力値を抽出する請求項１３記載の論理回路の故障診断方法。
【請求項１６】
前記故障個所推定工程は、制御系故障とデータ系故障とを別々に想定しながら故障個所を推定する故障モード選択工程と、
前記フェイル出力ポートおよび前記フェイル推定出力ポートに対応したノードを起点として、フェイルベクタに基づき各ノードの出力推定および期待値比較により各ノードのフェイル推定を入力方向に行い、フェイル伝搬経路を推定するノード推定工程と、
このフェイル伝搬経路のノードの情報を故障個所推定情報として登録する推定情報登録工程と、
出力ポートにフェイルを伝搬する可能性のある全ての組み合わせを算出するまで、これらの処理を繰り返す終了判定工程と、前記故障個所推定情報をリスト出力する故障候補出力工程とを有する請求項１０記載の論理回路の故障診断方法。
【請求項１７】
前記故障個所推定工程におけるノード推定工程は、各ノードの出力推定をする際に、前記ノードの値が多ビットの場合は、推定可能なビットの値のみを推定する請求項１６記載の論理回路の故障診断方法。
【請求項１８】
論理回路のテスト結果から取得されたフェイル情報に基づき前記論理回路の故障個所を推定する論理回路の故障診断方法において、前記論理回路を設計言語で回路ブロック単位に機能記述した記述情報、前記フェイル情報およびフェイル伝搬推定情報により、フェイル出力ポートおよびフェイル推定出力ポートを有するフェイル推定回路ブロックを抽出するフェイル抽出工程と、前記記述情報により、前記フェイル推定回路ブロックの処理順序に従って複数の状態を持つ状態遷移表を作成し、前記状態遷移表を基に入力ノード、演算子で構成される操作ノード、複数の入力値の組から１つの出力値を選択する選択ノードおよび出力ノードと前記各ノードの結線とを行うとともに、データフロー表示して全条件に対する動作を決定する決定グラフを作成する変換工程と、
前記論理回路の期待値を算出する期待値算出工程と、故障個所を推定する故障個所推定工程とをコンピュータに実行させるためのプログラム。
【請求項１９】
前記設計言語は、論理回路の構造あるいは動作を記述した言語である請求項１８記載のプログラム。
【請求項２０】
前記変換工程は、前記論理回路の処理を複数の遷移状態に分割し、現状態、状態遷移条件、次状態および動作の各項目で構成される状態遷移表を作成する工程と、
前記状態遷移表に記述された入力ポート、状態変数または数値を読み出す処理を入力ノードとして設定し、演算子の処理を操作ノードとして設定し、出力ポート、前記状態変数または前記数値を書き込む処理を出力ノードとして設定し、前記入力ノードと前記操作ノードとをデータフローとして接続することで状態を計算する制御パートを作成し、作成した前記状態の結果をＴＲＵＥ／ＦＡＬＳＥの２値で与え、かつ、前記入力ノードおよび前記操作ノードをデータフローとして接続することで出力値を計算するデータパートを作成し、前記状態の結果において、与えられた組の中から前記ＴＲＵＥ状態に対応した一つの前記出力値を出力ノードに選択出力するための選択ノードを設定する工程とを有する請求項１８記載のプログラム。
【請求項２１】
前記期待値算出工程は、前記決定グラフを用いて、状態が遷移するごとに、前記入力ノード、前記操作ノード、前記選択ノードおよび前記出力ノードの出力値を算出して、ノード名および算出値の組で構成されるノードテーブルを作成するノード期待値取得工程と、前記ノードテーブルから前記論理回路の出力値を抽出する出力値抽出工程とを有する請求項１８記載のプログラム。
【請求項２２】
前記期待値算出工程におけるノード期待値取得工程は、テストパターンもしくは一つ前の状態の出力パターンを読み込み、前記入力ノードを設定する入力パターン読み込み工程と、全入力値が設定され、かつ出力値が未設定の操作ノードを抽出する操作ノード抽出工程と、抽出された前記操作ノードに対して、入力値をもとに出力値を算出する操作ノード設定工程と、全操作ノードの設定が完了したか否かを判定し、完了していなければ操作ノード抽出工程へ戻り、完了していれば次の工程へ行く操作ノード判定工程と、選択ノードの出力値を算出する選択ノード設定工程と、前記出力ノードの出力値を算出する出力ノード設定工程と、次状態が有り、かつ次状態が最初の遷移状態でなければ次状態の前記入力パターン読み込み工程へ行き、次状態が無いか、もしくは次状態が最初の遷移状態であれば、処理を終了する状態判定工程とを有する請求項２１記載のプログラム。
【請求項２３】
前記期待値算出処理工程における出力値抽出工程は、前記ノード期待値取得工程で作成したノードテーブルから、テストパターンごとの最終状態における出力ポートの出力値を抽出する工程により、前記論理回路の出力値を抽出する請求項２１記載のプログラム。
【請求項２４】
前記故障個所推定工程は、制御系故障とデータ系故障とを別々に想定しながら故障個所を推定する故障モード選択工程と、前記フェイル出力ポートおよび前記フェイル推定出力ポートに対応したノードを起点として、フェイルベクタに基づき各ノードの出力推定および期待値比較により各ノードのフェイル推定を入力方向に行い、フェイル伝搬経路を推定するノード推定工程と、このフェイル伝搬経路のノードの情報を故障個所推定情報として登録する推定情報登録工程と、出力ポートにフェイルを伝搬する可能性のある全ての組み合わせを算出するまで、これらの処理を繰り返す終了判定工程と、前記故障個所推定情報をリスト出力する故障候補出力工程とを有する請求項１８記載のプログラム。
【請求項２５】
前記故障個所推定工程におけるノード推定工程は、各ノードの出力推定をする際に、前記ノードの値が多ビットの場合は、推定可能なビットの値のみを推定する請求項２４記載のプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、論理回路の故障診断装置、故障診断方法およびそのプログラムに係わり、特に論理回路のテスト結果から取得されたフェイル情報に基づき、論理回路の故障個所を推定する論理回路の故障診断装置、故障診断方法およびそのプログラムに関する。
【０００２】
【従来の技術】
近年、半導体素子の微細化技術の進展に伴い、その半導体素子で構成する半導体装置も大規模化しているので、設計時の論理検証や製造された半導体装置のテスト効率化とともに故障解析のさらなる効率化も要求されている。
【０００３】
従来から、半導体装置における論理回路設計時には、その論理動作およびタイミング検証のツールとして論理シミュレーション装置が用いられているが、一方、製造された半導体装置の故障解析時に適用されるツールとしては例えば故障診断装置がある。
【０００４】
この種の論理回路の故障診断は、論理回路の故障個所を推定するための手法として、一般的な構成のコンピュータに論理回路の故障診断プログラムをインストールして各コマンド入力に応じて実行させることにより行う。
【０００５】
その一例が特願２００１−３８３３３５の従来例に記載されている。この従来の論理回路の故障診断における概略処理のフローチャートを示した図１４を参照すると、まずステップＳ３１において、故障シミュレータを用いて、論理回路内部に故障を仮定して機能もしくは論理シミュレーションを行い、そのシミュレーション結果と期待値とを照合し、仮定した故障個所と、その故障を検出したテストベクタとを対応付けた故障辞書を作成し、ステップＳ３２において、論理回路の実際のテスト結果からフェイル情報を取得する（特許文献１参照）。
【０００６】
次にステップＳ３３において、フェイル情報のフェイルピンおよびフェイルベクタに対応して、故障辞書をそれぞれ検索し、仮定の故障個所を求め、ステップＳ３４において、複数得られた仮定の故障候補の中から、優先順位付けを行って故障個所の推定を行う。
【０００７】
また、他の従来の論理回路の故障個所特定方法として、例えば、電子ビームテスタを用いて、論理回路の上位階層から故障個所を推定し、階層境界の内部信号を観察し、故障個所を論理回路の下位階層へ順に絞り込んでいく方法もある。
【０００８】
さらに、別の従来の論理回路の故障診断方法として、特開平８−１４６０９３号公報に記載されているように、論理回路をラッチと組み合わせ回路とに分割しゲートレベルで故障個所を推定する方法もある（特許文献２参照）。
【０００９】
この方法では、故障出力に故障を伝搬する可能性のある組み合わせ回路をダイナミックに抽出して、組み合わせ回路毎に論理状態および故障の伝搬する経路を推定し、入力方法に遡ることにより故障個所を推定している。
【００１０】
ここで組み合わせ回路の論理状態とは、ひとつの信号線の論理値だけでなく、回路内部の全ノード、すなわち信号線、ゲート、ゲート端子、入出力端子が０／１／Ｘ（Ｄｏｎ‘ｔ  Ｃａｒｅ）／Ｚ（ハイインピーダンス）／Ｕ（不定）などの論理値を持っている状態のことである。
【００１１】
一方、前述した特願２００１−３８３３３５の「論理回路の故障箇所推定方法、および、論理回路の故障箇所推定プログラム」における手法は、論理回路を決定グラフに変換し、テストパターンに対応した各ノードの期待値と推定値を比較追跡しながら、機能レベルで故障箇所を推定している。
【００１２】
【特許文献１】
特願２００１−３８３３３５（段落「０００３」、図１、図５。）。
【００１３】
【特許文献２】
特開平８−１４６０９３号公報（段落「００１３」、「００１６」、「００１７」、図１、図２。）。
【００１４】
【発明が解決しようとする課題】
上述したように従来の故障シミュレータによる論理回路の故障診断方法では、故障辞書を予め作成しておく必要があるが、故障辞書の作成は多大な故障シミュレーション時間を要するため、論理回路が大規模化すればするほど計算時間も膨大となり、故障辞書のファイルも非常に大きくなるという問題があった。
【００１５】
また、故障シミュレーションで用いる故障モデルは単一縮退故障が一般的であるため、ブリッジ故障などの多重故障では実際と一致しないこともあり、また、故障シミュレーションモデルを多重故障に拡張すると、故障シミュレーションの処理時間の点で実用的でないという問題が挙げられる。
【００１６】
さらに、従来の、電子ビームテスタを用いた論理回路の故障個所推定方法では、論理回路の上位階層から下位階層へ故障個所を逐次観測しながら絞り込んでいくため有効な手段であるが、論理回路が大規模化し、多層配線構造になると、下層配線の電位が観測不可能になるという問題がある。
【００１７】
さらにまた、従来のゲートレベルでの故障診断方法の場合は、組み合わせ回路毎に故障個所を推定できるため有効な手段であるが、ゲート単位での推定処理のため、大規模な論理回路に対する精度と処理時間が問題となる。
【００１８】
本発明の目的は、上述した問題点に鑑みてなされたものであって、大規模化、多層配線化する論理回路に対して、機能レベルで、短時間に、期待値を算出し、また故障個所を推定することにある。
【００１９】
【課題を解決するための手段】
そのため、本発明は、論理回路の構造あるいは動作を設計言語で回路ブロック単位に機能記述した記述情報から、フェイル抽出装置により抽出したフェイル推定出力ポートを有するフェイル推定回路ブロックごとに作成した状態遷移表に基づき、入力ノード、演算子で構成される操作ノード、複数の入力値の組から１つの出力値を選択する選択ノードおよび出力ノードとこれらの各ノードの結線を行い、表示手段にデータフロー表示して前記各ノードに対する動作を決定する決定グラフを作成し、データ系故障と制御系故障とを別々に想定しながら、前記決定グラフを用いたフェイル伝搬経路推定を行うことで、機能レベルでデータ系と制御系の故障個所を推定する機能を有することを特徴とする。
【００２０】
本発明の他の特徴は、論理回路のテスト結果から取得されたフェイル情報に基づき前記論理回路の故障個所を推定する論理回路の故障診断装置において、入力装置と、前記論理回路を設計言語で回路ブロック単位に機能記述した記述情報、前記フェイル情報およびフェイル伝搬推定情報により、フェイル出力ポートおよびフェイル推定出力ポートを有するフェイル推定回路ブロックを抽出するフェイル抽出装置と、前記記述情報を基に前記フェイル推定回路ブロックの処理順序に従って複数の状態を持つ状態遷移表を作成し、前記状態遷移表を基に、入力ノード、演算子で構成される操作ノード、複数の入力値の組から１つの出力値を選択する選択ノードおよび出力ノードと前記各ノードの結線とを行うとともにデータフロー表示して全条件に対する動作を決定するための決定グラフを作成する変換装置と、前記論理回路の期待値を算出する期待値算出装置と、前記論理回路の故障個所を推定する故障個所推定装置と、前記装置それぞれの情報を記憶する記憶装置と、前記故障個所推定装置の出力データを表示する出力装置とを備えることにある。
【００２１】
また、設計言語は、論理回路の構造あるいは動作を記述した言語である。
【００２２】
さらに、前記変換装置は、前記論理回路の処理を複数の遷移状態に分割し、現状態、状態遷移条件、次状態および動作の各項目で構成される状態遷移表を作成する手段と、前記状態遷移表に記述された入力ポート、状態変数または数値を読み出す処理を入力ノードとして設定し、演算子の処理を操作ノードとして設定し、出力ポート、前記状態変数または前記数値を書き込む処理を出力ノードとして設定し、前記入力ノードおよび前記操作ノードをデータフローとして接続することで状態を計算する制御パートを作成し、作成した前記状態の結果をＴＲＵＥ／ＦＡＬＳＥの２値で与え、かつ、前記入力ノードおよび前記操作ノードを前記データフローとして接続することで出力値を計算するデータパートを作成し、前記状態の結果に応じて、与えられた組の中から前記ＴＲＵＥの状態に対応した一つの前記出力値を出力ノードに選択出力するための選択ノードを設定する手段とを有する。
【００２３】
さらにまた、前記期待値算出装置は、前記決定グラフに基づき、状態が遷移するごとに、前記入力ノード、前記操作ノード、前記選択ノードおよび前記出力ノードの出力値を算出して、ノード名および算出値の組で構成されるノードテーブルを作成するノード期待値取得手段と、前記ノードテーブルから前記論理回路の出力値を抽出する出力値抽出手段とを有する。
【００２４】
また、前記期待値算出装置におけるノード期待値取得手段は、テストパターンもしくは一つ前の状態の出力パターンを読み込み、前記入力ノードを設定する入力パターン読み込み手段と、全入力値が設定され、かつ出力値が未設定の操作ノードを抽出する操作ノード抽出手段と、抽出された前記操作ノードに対して、入力値をもとに出力値を算出する操作ノード設定手段と、全操作ノードの設定が完了したか否かを判定し、完了していなければ操作ノード抽出手段へ戻り、完了していれば次の手段へ進む操作ノード判定手段と、選択ノードの出力値を算出する選択ノード設定手段と、前記出力ノードの出力値を算出する出力ノード設定手段と、次状態が有り、かつ次状態が最初の遷移状態でなければ次状態の前記入力パターン読み込み手段へ行き、次状態が無いか、もしくは次状態が最初の遷移状態であれば、処理を終了する状態判定手段とを有する。
【００２５】
さらに、前記期待値算出装置における出力値抽出手段は、前記ノード期待値取得手段で作成したノードテーブルから、テストパターンごとの最終状態における出力ポートの出力値を抽出する手段により、前記論理回路の出力値を抽出する機能を有する。
【００２６】
本発明の論理回路の故障診断方法の特徴は、論理回路のテスト結果から取得されたフェイル情報に基づき前記論理回路の故障個所を推定する論理回路の故障診断方法において、前記論理回路を設計言語で回路ブロック単位に機能記述した記述情報、前記フェイル情報およびフェイル伝搬推定情報により、フェイル出力ポートおよびフェイル推定出力ポートを有するフェイル推定回路ブロックを抽出するフェイル抽出工程と、前記記述情報により、前記フェイル推定回路ブロックの処理順序に従って複数の状態を持つ状態遷移表を作成し、前記状態遷移表を基に入力ノード、演算子で構成される操作ノード、複数の入力値の組から１つの出力値を選択する選択ノードおよび出力ノードと前記各ノードの結線とを行うとともに、データフロー表示して全条件に対する動作を決定する決定グラフを作成する変換工程と、前記論理回路の期待値を算出する期待値算出工程と、故障個所を推定する故障個所推定工程とを有することにある。
【００２７】
また、前記設計言語は、論理回路の構造あるいは動作を記述した言語である。
【００２８】
さらに、前記変換工程は、前記論理回路の処理を複数の遷移状態に分割し、現状態、状態遷移条件、次状態および動作の各項目で構成される状態遷移表を作成する工程と、前記状態遷移表に記述された入力ポート、状態変数または数値を読み出す処理を入力ノードとして設定し、演算子の処理を操作ノードとして設定し、出力ポート、前記状態変数または前記数値を書き込む処理を出力ノードとして設定し、前記入力ノードと前記操作ノードとをデータフローとして接続することで状態を計算する制御パートを作成し、作成した前記状態の結果をＴＲＵＥ／ＦＡＬＳＥの２値で与え、かつ、前記入力ノードおよび前記操作ノードをデータフローとして接続することで出力値を計算するデータパートを作成し、前記状態の結果において、与えられた組の中から前記ＴＲＵＥ状態に対応した一つの前記出力値を出力ノードに選択出力するための選択ノードを設定する工程とを有する。
【００２９】
さらにまた、前記期待値算出工程は、前記決定グラフを用いて、状態が遷移するごとに、前記入力ノード、前記操作ノード、前記選択ノードおよび前記出力ノードの出力値を算出して、ノード名および算出値の組で構成されるノードテーブルを作成するノード期待値取得工程と、前記ノードテーブルから前記論理回路の出力値を抽出する出力値抽出工程とを有する。
【００３０】
また、前記期待値算出工程におけるノード期待値取得工程は、テストパターンもしくは一つ前の状態の出力パターンを読み込み、前記入力ノードを設定する入力パターン読み込み工程と、全入力値が設定され、かつ出力値が未設定の操作ノードを抽出する操作ノード抽出工程と、抽出された前記操作ノードに対して、入力値をもとに出力値を算出する操作ノード設定工程と、全操作ノードの設定が完了したか否かを判定し、完了していなければ操作ノード抽出工程へ戻り、完了していれば次の工程へ行く操作ノード判定工程と、選択ノードの出力値を算出する選択ノード設定工程と、前記出力ノードの出力値を算出する出力ノード設定工程と、次状態が有り、かつ次状態が最初の遷移状態でなければ次状態の前記入力パターン読み込み工程へ行き、次状態が無いか、もしくは次状態が最初の遷移状態であれば、処理を終了する状態判定工程とを有する。
【００３１】
また、前記期待値算出処理工程における出力値抽出工程は、前記ノード期待値取得工程で作成したノードテーブルから、テストパターンごとの最終状態における出力ポートの出力値を抽出する工程により、前記論理回路の出力値を抽出する。
【００３２】
さらに、前記故障個所推定工程は、制御系故障とデータ系故障とを別々に想定しながら故障個所を推定する故障モード選択工程と、前記フェイル出力ポートおよび前記フェイル推定出力ポートに対応したノードを起点として、フェイルベクタに基づき各ノードの出力推定および期待値比較により各ノードのフェイル推定を入力方向に行い、フェイル伝搬経路を推定するノード推定工程と、このフェイル伝搬経路のノードの情報を故障個所推定情報として登録する推定情報登録工程と、出力ポートにフェイルを伝搬する可能性のある全ての組み合わせを算出するまで、これらの処理を繰り返す終了判定工程と、前記故障個所推定情報をリスト出力する故障候補出力工程とを有する。
【００３３】
さらにまた、前記故障個所推定工程におけるノード推定工程は、各ノードの出力推定をする際に、前記ノードの値が多ビットの場合は、推定可能なビットの値のみを推定する。
【００３４】
本発明の論理回路の故障診断方法のプログラムは、論理回路のテスト結果から取得されたフェイル情報に基づき前記論理回路の故障個所を推定する論理回路の故障診断方法において、前記論理回路を設計言語で回路ブロック単位に機能記述した記述情報、前記フェイル情報およびフェイル伝搬推定情報により、フェイル出力ポートおよびフェイル推定出力ポートを有するフェイル推定回路ブロックを抽出するフェイル抽出工程と、前記記述情報により、前記フェイル推定回路ブロックの処理順序に従って複数の状態を持つ状態遷移表を作成し、前記状態遷移表を基に入力ノード、演算子で構成される操作ノード、複数の入力値の組から１つの出力値を選択する選択ノードおよび出力ノードと前記各ノードの結線とを行うとともに、データフロー表示して全条件に対する動作を決定する決定グラフを作成する変換工程と、前記論理回路の期待値を算出する期待値算出工程と、故障個所を推定する故障個所推定工程とをコンピュータに実行させることにある。
【００３５】
また、前記設計言語は、論理回路の構造あるいは動作を記述した言語である。
【００３６】
さらに、前記変換工程は、前記論理回路の処理を複数の遷移状態に分割し、現状態、状態遷移条件、次状態および動作の各項目で構成される状態遷移表を作成する工程と、前記状態遷移表に記述された入力ポート、状態変数または数値を読み出す処理を入力ノードとして設定し、演算子の処理を操作ノードとして設定し、出力ポート、前記状態変数または前記数値を書き込む処理を出力ノードとして設定し、前記入力ノードと前記操作ノードとをデータフローとして接続することで状態を計算する制御パートを作成し、作成した前記状態の結果をＴＲＵＥ／ＦＡＬＳＥの２値で与え、かつ、前記入力ノードおよび前記操作ノードをデータフローとして接続することで出力値を計算するデータパートを作成し、前記状態の結果において、与えられた組の中から前記ＴＲＵＥ状態に対応した一つの前記出力値を出力ノードに選択出力するための選択ノードを設定する工程とをコンピュータに実行させるためのプログラムである。
【００３７】
さらにまた、前記期待値算出工程は、前記決定グラフを用いて、状態が遷移するごとに、前記入力ノード、前記操作ノード、前記選択ノードおよび前記出力ノードの出力値を算出して、ノード名および算出値の組で構成されるノードテーブルを作成するノード期待値取得工程と、前記ノードテーブルから前記論理回路の出力値を抽出する出力値抽出工程とをコンピュータに実行させるためのプログラムである。
【００３８】
また、前記期待値算出工程におけるノード期待値取得工程は、テストパターンもしくは一つ前の状態の出力パターンを読み込み、前記入力ノードを設定する入力パターン読み込み工程と、全入力値が設定され、かつ出力値が未設定の操作ノードを抽出する操作ノード抽出工程と、抽出された前記操作ノードに対して、入力値をもとに出力値を算出する操作ノード設定工程と、全操作ノードの設定が完了したか否かを判定し、完了していなければ操作ノード抽出工程へ戻り、完了していれば次の工程へ行く操作ノード判定工程と、選択ノードの出力値を算出する選択ノード設定工程と、前記出力ノードの出力値を算出する出力ノード設定工程と、次状態が有り、かつ次状態が最初の遷移状態でなければ次状態の前記入力パターン読み込み工程へ行き、次状態が無いか、もしくは次状態が最初の遷移状態であれば、処理を終了する状態判定工程とをコンピュータに実行させるためのプログラムである。
【００３９】
さらに、前記期待値算出処理工程における出力値抽出工程は、前記ノード期待値取得工程で作成したノードテーブルから、テストパターンごとの最終状態における出力ポートの出力値を抽出する工程により、前記論理回路の出力値を抽出する工程をコンピュータに実行させるためのプログラムである。
【００４０】
さらにまた、前記故障個所推定工程は、制御系故障とデータ系故障とを別々に想定しながら故障個所を推定する故障モード選択工程と、前記フェイル出力ポートおよび前記フェイル推定出力ポートに対応したノードを起点として、フェイルベクタに基づき各ノードの出力推定および期待値比較により各ノードのフェイル推定を入力方向に行い、フェイル伝搬経路を推定するノード推定工程と、このフェイル伝搬経路のノードの情報を故障個所推定情報として登録する推定情報登録工程と、出力ポートにフェイルを伝搬する可能性のある全ての組み合わせを算出するまで、これらの処理を繰り返す終了判定工程と、前記故障個所推定情報をリスト出力する故障候補出力工程とをコンピュータに実行させるためのプログラムである。
【００４１】
また、前記故障個所推定工程におけるノード推定工程は、各ノードの出力推定をする際に、前記ノードの値が多ビットの場合は、推定可能なビットの値のみを推定する工程をコンピュータに実行させるためのプログラムである。
【００４２】
【発明の実施の形態】
本発明の実施の形態を、図面を参照しながら詳細に説明する。
【００４３】
図１は、本発明の一実施の形態として、論理回路のテスト結果から取得されたフェイル情報に基づき論理回路の故障個所を推定する論理回路の故障診断装置におけるシステム構成を示すブロック図である。図１を参照すると、キーボード等入力装置１と、フェイル推定回路ブロックを抽出するフェイル抽出装置２、論理回路を決定グラフに変換する変換装置３と、論理回路の期待値を算出する期待値算出装置４と、論理回路の故障個所を推定する故障個所推定装置５と、ハードディスクやメモリ等からなり、情報を記憶する記憶装置６と、ディスプレイ装置や印刷装置等の出力装置７とを備えた構成である。
【００４４】
フェイル抽出装置２は、論理回路を設計言語で回路ブロック単位に機能記述した記述情報、フェイル情報およびフェイル伝搬推定情報により、フェイル出力ポートおよびフェイル推定出力ポートを有するフェイル推定回路ブロックを抽出する。
【００４５】
変換装置３は、記述情報により、フェイル推定回路ブロックの処理順序に従って複数の状態を持つ状態遷移表を作成し、作成した状態遷移表をもとに入力ノード、演算子で構成される操作ノード、複数の入力値の組から１つの出力値を選択する選択ノードおよび出力ノードとこれらの各ノードの結線とにより、データフロー表示して全条件に対する動作を決定する決定グラフを作成する。
【００４６】
期待値算出装置４は、決定グラフを用いて、状態が遷移するごとに、入力ノード、操作ノード、選択ノードおよび出力ノードの出力値を算出して、ノード名と算出値の組で構成されるノードテーブルを作成するノード期待値取得手段４１と、ノードテーブルから論理回路の出力値を抽出する出力値抽出手段４２とにより、論理回路の期待値を算出する。
【００４７】
故障個所推定装置５は、制御系故障とデータ系故障とを別々に想定しながら故障個所を推定する故障モード選択手段５１と、フェイル出力ポートおよびフェイル推定出力ポートに対応したノードを起点として、フェイルベクタに基づき各ノードの出力推定および期待値比較により各ノードのフェイル推定を入力方向に行い、フェイル伝搬経路を推定するノード推定手段５２と、このフェイル伝搬経路のノードの情報を故障個所推定情報として登録する推定情報登録手段５３と、出力ポートにフェイルを伝搬する可能性のある全ての組み合わせを算出するまで、これらの処理を繰り返す終了判定手段５４と、故障個所推定情報をリスト出力する故障候補出力手段５５とにより、故障個所を推定する。これにより、データ系と制御系の故障箇所を推定することができる。
【００４８】
設計言語は、論理回路の構造あるいは動作を記述した言語である。Ｖｅｒｉｌｏｇ−ＨＤＬやＶＨＤＬなどのハードウェア記述言語やＣ言語などで記述された論理回路に対して、故障個所を推定できる。
【００４９】
また、図示しないが、変換装置３は、論理回路の処理を複数の遷移状態に分割し、現状態、状態遷移条件、次状態および動作で構成される状態遷移表を作成する手段と、状態遷移表に記述された入力ポート、状態の変数または値を読み出す処理を入力ノードとして設定し、演算子の処理を操作ノードとして設定し、出力ポート、状態変数または値を書き込む処理を出力ノードとして設定し、入力ノードと操作ノードとをデータフローとして接続することで状態を計算する制御パートを作成し、状態の結果をＴＲＵＥ／ＦＡＬＳＥの２値で与え、また、入力ノードと操作ノードとをデータフローとして接続することで出力値を計算するデータパートを作成し、前述した状態の結果において、与えられた組の中からＴＲＵＥ状態に対応した一つの出力値を選択し、その値を出力ノードに選択出力するための選択ノードを設定する手段とを備えて決定グラフを作成する。これにより、故障箇所推定に必要な、決定グラフを作成することができる。
【００５０】
期待値算出装置４におけるノード期待値取得手段４１は、テストパターンもしくは一つ前の状態の出力パターンを読み込み、入力ノードを設定する入力パターン読み込み手段（不図示）と、全入力値が設定され、かつ出力値が未設定の操作ノードを抽出する操作ノード抽出手段（不図示）と、抽出された操作ノードに対して、入力値をもとに出力値を算出する操作ノード設定手段（不図示）と、全操作ノードの設定が完了したか否かを判定し、完了していなければ操作ノード抽出手段へ戻り、完了していれば次の手段へ行く操作ノード判定手段（不図示）と、選択ノードの出力値を算出する選択ノード設定手段（不図示）と、出力ノードの出力値を算出する出力ノード設定手段（不図示）と、次状態が有り、かつ次状態が最初の遷移状態でなければ次状態の入力パターン読み込み手段へ行き、次状態が無い、もしくは次状態が最初の遷移状態であれば、処理を終了する状態判定手段（不図示）とにより、各ノードの出力値を算出して、ノード名と算出値の組で構成されるノードテーブルを作成できる。
【００５１】
また、期待値算出装置４における出力値抽出手段４２は、ノード期待値取得手段４１で作成したノードテーブルから、テストパターンごとの最終状態における出力ポートの出力値を抽出する手段（不図示）により、論理回路の出力値を抽出する。これにより、故障診断に必要な期待値を算出できる。
【００５２】
故障個所推定装置５におけるノード推定手段５２は、各ノードの出力推定をする際に、ノードの値が多ビットの場合は、推定可能なビットの値のみを推定する。これにより、全てのビットの値を推定しなくても、フェイル推定ができる。
【００５３】
故障個所推定装置５の終了判定手段５４において制御系故障とデータ系故障との故障個所推定が終了したと判定され、フェイル伝搬入力ポートが抽出された場合には、フェイル抽出装置２において、上述したフェイル伝搬入力ポートが出力ポートとなる回路ブロックを抽出し、その回路ブロックに対して、故障個所を推定する。
【００５４】
フェイル伝搬入力ポートがない場合は、故障個所出力手段５５によって、故障個所推定情報を出力装置７に出力する。
【００５５】
次に、本実施の形態における変換装置３について、図２、図３および図４を参照しながら説明する。
【００５６】
図２は、カウンター回路のＶｅｒｉｌｏｇ−ＨＤＬ記述であり、図３は、図２で示したカウンター回路の状態遷移表である。図４は、カウンター回路の決定グラフである。
【００５７】
本実施の形態のカウンター回路は、クロック信号ｃｌｋが変化を検出したらカウントアップし、信号ｏｕｔにカウントを出力する回路である。
【００５８】
まず、Ｖｅｒｉｌｏｇ−ＨＤＬ記述の処理順序に従って状態遷移表を作成する。
【００５９】
最初の遷移状態として、ａｌｗａｙｓブロックのイベント発生の判断処理を状態ＳＴ０に割り当てる。ここで、信号ｃｌｋの変化を＠ｃｌｋと表現するものとする。次に、ａｌｗａｙｓブロック内に記述された処理を状態ＳＴ１に割り当てる。
【００６０】
また、状態ＳＴ１では、ノンブロッキング代入式（ｏｕｔ＜＝４’ｂ００００、ｏｕｔ＜＝ｏｕｔ＋１’ｂ１）における右辺の式の評価を一時的なレジスタ：＿ｒｅｇに代入する処理を割り当てる。
【００６１】
次に、一時的なレジスタ：＿ｒｅｇに保持した値をノンブロッキング代入式の左辺の信号：ｏｕｔへ代入する処理を状態ＳＴ２に割り当てる。
【００６２】
状態ＳＴ０では、処理が終了したら次の状態として状態ＳＴ１へ行く。状態ＳＴ１では、処理が終了したら次の状態として状態ＳＴ２へ行く。状態ＳＴ２では、処理が終了したら次の状態として状態ＳＴ０へ行く。
【００６３】
次に、状態遷移表を参照した決定グラフの作成について説明する。
【００６４】
入力ポートであるｃｌｋを入力ノードとして設定する。状態変数ＳＴＡＴＥ、状態番号ＳＴ０、ＳＴ１、ＳＴ２を入力ノードとして設定する。また、条件式における変数、定数であるｃｌｋ、ｏｕｔ、“１１１１”を入力ノードとして設定する。
【００６５】
代入式の右辺において式の評価で使用されている変数と定数である“００００”、ｏｕｔ、“１”、＿ｒｅｇを入力ノードとして設定する。信号の変化を判断するイベントノード“＿ｅｖｅｎｔ”を入力ノードとして設定する。
【００６６】
出力ポートであるｏｕｔおよび状態変数ＳＴＡＴＥを出力ノードとして設定する。代入式の左辺において代入される変数である＿ｒｅｇ、ｏｕｔを出力ノードとして設定する。
【００６７】
状態遷移表で使用されている演算子として等号（＝）、加算（＋）、否定（！）および論理演算子ａｎｄ（＆）を操作ノードとして設定する。
【００６８】
出力ノードｏｕｔ、ｓｔａｔｅおよび＿ｒｅｇのそれぞれに対応したｓｔａｔｅ＿ａ、＿ｒｅｇ＿ａ、ｏｕｔ＿ａを選択ノードとして設定する。
【００６９】
次に、各ノードのリンクについて説明する。
【００７０】
状態変数である入力ノードＳＴＡＴＥと、状態番号である入力ノードＳＴ０、ＳＴ１およびＳＴ２とをそれぞれ操作ノード“＝”でリンクする。
【００７１】
出力ノードＳＴＡＴＥは選択ノードＳＴＡＴＥ＿ａの出力先としてリンクする。選択ノードｓｔａｔｅ＿ａは、出力値として、状態番号である入力ノードＳＴ０、ＳＴ１およびＳＴ２とリンクする。
【００７２】
状態ＳＴ０では、条件ｔｅｍｐがｔｒｕｅの場合の次状態が状態ＳＴ１であるため、選択ノードＳＴＡＴＥ＿ａの出力値ＳＴ１に対応した状態結果として、「入力ノードＳＴ０とリンクした等号“＝”」と「ｃｌｋおよび＿ｅｖｅｎｔとリンクした等号“＝”」とを、操作ノード“＆”にリンクし、操作ノード“＆”の出力先として選択ノードＳＴＡＴＥ＿ａがリンクされる。
【００７３】
状態ＳＴ１の次状態は状態ＳＴ２であるため、選択ノードＳＴＡＴＥ＿ａの出力値ＳＴ２に対応した状態結果として、入力ノードＳＴ１とリンクした等号“＝”が選択ノードＳＴＡＴＥ＿ａとリンクされる。
【００７４】
状態ＳＴ２の次状態は状態ＳＴ０であるため、選択ノードＳＴＡＴＥ＿ａの出力値ＳＴ０に対応した状態結果として、入力ノードＳＴ２とリンクした等号“＝”を選択ノードＳＴＡＴＥ＿ａとリンクする。
【００７５】
選択ノード＿ｒｅｇ＿ａは出力先として、出力ノード＿ｒｅｇとリンクする。ここで、出力値の一つである“００００”に対応した状態結果として、「入力ノードＳＴ１とリンクした操作ノード“＝”」と、「入力ノードｏｕｔと“１１１１”をリンクした操作ノード“＝”」とを操作ノード“＆”でリンクし、操作ノード“＆”が選択ノード＿ｒｅｇ＿ａとリンクされる。
【００７６】
また、入力ノードｏｕｔと“１”を操作ノード“＋”でリンクし、操作ノード“＋”をもう一方の出力値として、＿ｒｅｇ＿ａにリンクする。
【００７７】
出力ｏｕｔ＋“１”に対応した状態結果として、「入力ノードｏｕｔと“１１１１”をリンクした操作ノード“＝”」を操作ノード“！”（否定）とリンクし、操作ノード“！”と「入力ノードＳＴ１とリンクした操作ノード“＝”」とを操作ノード“＆”でリンクし、操作ノード“＆”を選択ノード＿ｒｅｇ＿ａとリンクする。
【００７８】
入力ノード＿ｒｅｇは、出力値として選択ノードｏｕｔ＿ａとリンクする。選択ノードｏｕｔ＿ａは出力先として、出力ノードｏｕｔとリンクする。ここで、出力値である＿ｒｅｇに対応した状態結果として、入力ノードＳＴ２とリンクした等号“＝”が選択ノードｏｕｔ＿ａとリンクされる。
【００７９】
以上により、図４に示した決定グラフが作成される。
【００８０】
次に、本実施の形態におけるノード期待値取得手段４１について、図４、図５および図６を参照しながら説明する。
【００８１】
図５はノード期待値取得手段４１における処理順序を示すフローチャートであり、図６は、図４で示した決定グラフのノードテーブルである。
【００８２】
テストパターンによって、ｏｕｔに“０１１０”が設定され、また、ｃｌｋに“ｐ”（立ち上がり）が入力されたとする。
【００８３】
まず入力パターン読み込み手段では、テストパターンから入力ノードＩ３を“０１１０”に設定し、入力ノードＩ１に“ｐ”を設定する。また、本回路は状態ＳＴ０から処理が始まるため、入力ノードＩ２に“ＳＴ０”を設定する（処理ステップＳ１１）。
【００８４】
操作ノード抽出手段において、全入力値が設定され、かつ出力値が未設定の操作ノードとして、Ｘ１、Ｘ２、Ｘ３、Ｘ４、Ｘ５およびＸ７を抽出する（処理ステップＳ１２）。
【００８５】
操作ノード設定手段において、操作ノード抽出手段で抽出された各操作ノードの出力値を算出する（処理ステップＳ１３）。Ｘ１の入力ノードは、ｃｌｋと＿ｅｖｅｎｔであるから、ｃｌｋの出力値が変化していればＸ１を“１”に、変化していなければ“０”に設定する。
【００８６】
ここでは、ｃｌｋの出力値は“ｐ”（立ち上がり）であり、値が変化しているから、Ｘ１を“１”に設定する。ＳＴＡＴＥ＝＝”ＳＴ０”であるから、Ｘ２を“１”に、Ｘ３を“０”に、Ｘ４を“０”にそれぞれ設定する。ｏｕｔ＝＝“０１１０”であるから、Ｘ５を“０”に、Ｘ７を“０１１１”に設定する。
【００８７】
操作ノード判定手段において、全操作ノードの設定が完了したか否かを判定する。操作ノードＸ６、Ｘ８、Ｘ９およびＸ１０の設定が完了していないため、操作ノード抽出手段へ戻る（処理ステップＳ１４）。
【００８８】
操作ノード抽出手段において、全入力値が設定され、かつ出力値が未設定の操作ノードとして、Ｘ６、Ｘ８、Ｘ９を抽出する（処理ステップＳ１２）。
【００８９】
操作ノード設定手段において、Ｘ５＝＝“０”であるからＸ６を“１”に設定する。Ｘ１＝＝“１”、Ｘ２＝＝“１”であるからＸ８を“１”に設定する。Ｘ３＝＝“０”、Ｘ５＝＝“０”であるからＸ９を“０”に設定する（処理ステップＳ１３）。
【００９０】
操作ノード判定手段において、全操作ノードの設定が完了したか否かを判定する。操作ノードＸ１０の設定が完了していないため、操作ノード抽出手段へ戻る（処理ステップＳ１４）。
【００９１】
操作ノード抽出手段において、全入力値が設定され、かつ出力値が未設定の操作ノードとして、Ｘ１０を抽出する（処理ステップＳ１２）。
【００９２】
操作ノード設定手段において、Ｘ６＝＝“１”、Ｘ３＝＝“０”であるからＸ１０を“０”に設定する（処理ステップＳ１３）。
【００９３】
操作ノード判定手段において、全操作ノードの設定が完了したか否かを判定する。全操作ノードの設定が完了しているため次の処理手段へ行く（処理ステップＳ１４）。
【００９４】
選択ノード設定手段では、選択ノードＡ１、Ａ２およびＡ３を設定する（処理ステップＳ１５）。選択ノードＡ１では、０番目の条件Ｘ４＝＝“０”、１番目の条件Ｘ８＝＝“１”、２番目の条件Ｘ３＝＝“０”であるため、値が“１”である１番目の条件Ｘ８に対応して、Ａ１を“１”に設定する。
【００９５】
選択ノードＡ２では、０番目の条件Ｘ１０＝＝“０”、１番目の条件Ｘ９＝＝“０”であり、値が“１”である条件が無いため、Ｏ２に値を出力しないという意味で、Ａ２を“−１”に設定する。
【００９６】
選択ノードＡ３では、０番目の条件Ｘ４＝＝“０”であり、値が“１”である条件が無いため、Ａ３を“−１”に設定する。
【００９７】
出力ノード設定手段では、出力ノードＯ１、Ｏ２およびＯ３を設定する（処理ステップＳ１６）。出力ノードＯ１では、選択ノードＡ１＝＝“１”であるため、選択ノードＡ１の１番目の入力値である“ＳＴ１”を設定する。出力ノードＯ２では、選択ノードＡ２＝“−１”で値が出力されないため、値が設定されない。出力ノードＯ３では、選択ノードＡ３＝＝“−１”で値が出力されないため、値が設定されない。
【００９８】
以上の処理により、最初の状態ｎｏ１のノードテーブルが作成される。
【００９９】
次に状態判定手段では、次状態が有り、かつ次状態が最初の遷移状態ＳＴ０ではないため、入力パターン読み込み手段へ行く（処理ステップＳ１７）。
【０１００】
次に、次状態の入力パターン読み込み手段では、状態ｎｏ１における出力ノードＯ１＝＝“ＳＴ１”であるから、状態ｎｏ２において、出力ノードＯ１に対応する入力ノードＩ２を“ＳＴ１”に設定する（処理ステップＳ１１）。
【０１０１】
状態ｎｏ１における出力ノードＯ２は設定されていないため、状態ｎｏ２において、対応する入力ノードＩ４は設定しない。状態ｎｏ１における出力ノードＯ３は設定されていないため、状態ｎｏ２において、対応する入力ノードＩ３は新規に値を設定せず、状態ｎｏ１における入力ノードＩ３の値“０１１０”を設定する。
【０１０２】
すなわち、状態ｎｏ２において、入力ノードＩ３に“０１１０”を設定する。状態ｎｏ２において、入力ノードＩ１は、対応する出力ノードが無いため、状態ｎｏ１における値“ｐ”を設定する。
【０１０３】
全操作ノードの設定が完了するまで、操作ノード抽出手段（処理ステップＳ１２）、操作ノード設定手段（処理ステップＳ１３）および操作ノード判定手段（処理ステップＳ１４）を繰り返すことで、
Ｘ１＝＝“１”
Ｘ２＝＝“０”
Ｘ３＝＝“１”
Ｘ４＝＝“０”
ｘ５＝＝“０”
Ｘ６＝＝“１”
Ｘ７＝＝“０１１１”
Ｘ８＝＝“０”
Ｘ９＝＝“０”
Ｘ１０＝＝“１”
が設定される。
【０１０４】
選択ノード設定手段では、選択ノードＡ１、Ａ２およびＡ３を設定する（処理ステップＳ１５）。選択ノードＡ１では、
０番目の条件Ｘ４＝＝“０”
１番目の条件Ｘ８＝＝“０”
２番目の条件Ｘ３＝＝“１”
であるため、値が“１”である２番目の条件Ｘ３に対応して、Ａ１を“２”に設定する。
【０１０５】
選択ノードＡ２では、
０番目の条件Ｘ１０＝＝“１”
１番目の条件Ｘ９＝＝“０”
であり、値が“１”である０番目の条件Ｘ１０に対応して、Ａ２を“０”に設定する。
【０１０６】
選択ノードＡ３では、
０番目の条件Ｘ４＝＝“０”
であり、値が“１”である条件が無いため、Ａ３を“−１”に設定する。
【０１０７】
出力ノード設定手段では、出力ノードＯ１、Ｏ２およびＯ３を設定する（処理ステップＳ１６）。
【０１０８】
出力ノードＯ１では、選択ノードＡ１＝＝“２”であるため、選択ノードＡ１の２番目の入力値である“ＳＴ２”を設定する。
【０１０９】
出力ノードＯ２では、選択ノードＡ２＝＝“０”であるため、選択ノードＡ２の０番目の入力値であるＸ７の値“０１１１”を設定する。
【０１１０】
出力ノードＯ３では、選択ノードＡ３＝＝“−１”で値が出力されないため、値が設定されない。
【０１１１】
以上の処理により、状態ｎｏ２のノードテーブルが作成される。
【０１１２】
次に状態判定手段では、次状態が有り、かつ次状態が最初の遷移状態ＳＴ０ではないため、入力パターン読み込み手段へ行く（処理ステップＳ１７）。
【０１１３】
次に、次状態の入力パターン読み込み手段では、状態ｎｏ２における出力ノードＯ１＝＝“ＳＴ２”であるから、状態ｎｏ３において、出力ノードＯ１に対応する入力ノードＩ２を“ＳＴ２”に設定する。
【０１１４】
状態ｎｏ２における出力ノードＯ２＝＝“０１１１”であるから、状態ｎｏ３において、対応する入力ノードＩ４を“０１１１”に設定する。状態ｎｏ２における出力ノードＯ３は設定されていないため、状態ｎｏ３において、対応する入力ノードＩ３は新規に値を設定せず、状態ｎｏ２における入力ノードＩ３の値“０１１０”を設定する。
【０１１５】
すなわち、状態ｎｏ３において、入力ノードＩ３に“０１１０”を設定する。状態ｎｏ３において、入力ノードＩ１は、対応する出力ノードが無いため、一つ前の状態ｎｏ２における値“ｐ”を設定する。
【０１１６】
全操作ノードの設定が完了するまで、操作ノード抽出手段（処理ステップＳ１２）、操作ノード設定手段（処理ステップＳ１３）および操作ノード判定手段（処理ステップＳ１４）を繰り返すことで、
Ｘ１＝＝“１”
Ｘ２＝＝“０”
Ｘ３＝＝“０”
Ｘ４＝＝“１”
ｘ５＝＝“０”
Ｘ６＝＝“１”
Ｘ７＝＝“０１１１”
Ｘ８＝＝“０”
Ｘ９＝＝“０”
Ｘ１０＝＝“０”
が設定される。
【０１１７】
選択ノード設定手段では、選択ノードＡ１、Ａ２およびＡ３を設定する（処理ステップＳ１５）。
【０１１８】
選択ノードＡ１では、
０番目の条件Ｘ４＝＝“１”
１番目の条件Ｘ８＝＝“０”
２番目の条件Ｘ３＝＝“０”
であるため、値が“１”である０番目の条件Ｘ４に対応して、Ａ１を“０”に設定する。
【０１１９】
選択ノードＡ２では、
０番目の条件Ｘ１０＝＝“０”
１番目の条件Ｘ９＝＝“０”
であり、値が“１”である条件が無いため、Ａ２を“−１”に設定する。
【０１２０】
選択ノードＡ３では、０番目の条件Ｘ４＝＝“１”であり、値が“１”である０番目の条件Ｘ４に対応して、Ａ２を“０”に設定する。
【０１２１】
出力ノード設定手段では、出力ノードＯ１、Ｏ２およびＯ３を設定する（処理ステップＳ１６）。
【０１２２】
出力ノードＯ１では、選択ノードＡ１＝＝“０”であるため、選択ノードＡ１の０番目の入力値である“ＳＴ０”を設定する。
【０１２３】
出力ノードＯ２では、選択ノードＡ２＝“−１”で値が出力されないため、一つ前の状態ｎｏ２における値“０１１１”を設定する。
【０１２４】
出力ノードＯ３では、選択ノードＡ３＝＝“０”であるため、選択ノードＡ３の０番目の入力値であるＩ４の値“０１１１”を設定する。
【０１２５】
以上の処理により、状態ｎｏ３のノードテーブルが作成される。
【０１２６】
次に、状態判定手段では、次状態が最初の遷移状態ＳＴ０であるため、処理を終了する（処理ステップＳ１７）。
【０１２７】
以上の処理により、一つのテストパターンに対応したノードテーブルが作成される。ここで、複数のテストパターンを使用する場合には、上記の処理を繰り返すことで、テストパターンごとにノードテーブルを作成する。
【０１２８】
次に、本実施の形態における出力値抽出手段４２について、図２、図４および図６を参照しながら説明する。
【０１２９】
カウンター回路の出力ポートｏｕｔに対応した決定グラフのノードは出力ノードＯ３であるから、本実施の形態での一例として記載したテストパターンにおいて、最終状態ｎｏ３における出力ノードＯ３の値“０１１１”を、出力ポートｏｕｔの出力値として抽出する。
【０１３０】
ここで、複数のテストパターンを使用する場合は、テストパターンごとの最終状態における出力ポートの出力値を抽出することにより、論理回路の出力値を抽出することができる。
【０１３１】
次に、本実施の形態における故障診断装置について、図４と図７〜１２とを参照しながら説明する。
【０１３２】
図７は、カウンター回路のテスト結果の一例であり、図８は、期待値算出装置で得た決定グラフのノードテーブルである。図９および図１０は、データ系の故障に対して、ノード推定手段で得られるノード推定結果であり、図１１および図１２は、制御系の故障に対して、ノード推定手段で得られるノード推定結果である。
【０１３３】
図７に示すように、テストパターンＶ１では、ｏｕｔの出力値は“１０００”であり、期待値が“１０００”であるためテストをパスした。テストパターンＶ１と連続するテストパターンＶ２では、ｏｕｔの出力値は“００００”であり、期待値が“１００１”であるためテストでフェイルした。
【０１３４】
テストパターンＶ１およびＶ２に対して期待値算出装置のノード期待値取得手段によって、図８に示すテストパターンＶ２におけるノードテーブルが作成される。
【０１３５】
まず、故障モード選択手段によって、データ系の故障探索を選択する。
【０１３６】
テストパターンからｃｌｋは“ｐ”であり、読み出しノードにｃｌｋは存在しないので、各遷移状態では、ノードＩ１は“ｐ”と設定する。
【０１３７】
ここでＩ２、“ＳＴ０”、“ＳＴ１”、“ＳＴ２”、Ｘ２、Ｘ３、Ｘ４、Ｘ６、Ｘ８、Ｘ９、Ｘ１０、Ａ１、Ａ２、Ａ３、Ｏ１の各ノードは、設計言語を決定グラフに変換する際に発生したノードであるため、故障候補として抽出しない。
【０１３８】
ノード推定手段５２では、まず制御系には故障は存在しないと仮定して、制御系を推定する。正常出力ノードＯ１、Ｏ２から各ノードの出力値を決定する。
【０１３９】
テストパターンＶ２が終了する時に遷移状態は“０”であるから、Ｏ１を“ＳＴ０”に設定する。
【０１４０】
Ｏ１の出力値からＡ１の出力値が“０”となり、Ｘ４が“１”、Ｉ２が“ＳＴ２”、Ｘ３が“０”、Ｘ８が“０”が決まる。Ｘ８の値からＸ１もしくはＸ２が“０”と推定される。
【０１４１】
Ｘ１を“０”と仮定する。Ｉ１は“ｐ”であり、信号が変化しているから、Ｘ１は“１”であるが矛盾が起こる。そのためＸ１＝＝“１”、Ｘ２＝＝“０”と仮定する。この場合は矛盾は起こらない。
【０１４２】
Ａ２は、“−１”、“０”、“１”のいずれかの値を取る。Ａ２＝＝“１”と仮定すると、Ｘ９＝＝“１”と推定されるが、Ｘ３＝＝“０”であり矛盾する。
【０１４３】
Ａ２＝＝“０”と仮定すると、Ｘ１０＝＝“１”と推定されるが、Ｘ３＝＝“０”であり矛盾する。
【０１４４】
Ａ２＝＝“−１”と仮定すると、Ｘ９＝＝“０”、Ｘ１０＝＝“０”、Ｘ５＝＝“ｘ”（０でも１でもよい）、Ｘ６＝＝“ｘ”、Ｉ３＝＝“ｘｘｘｘ”、Ｘ７＝＝“ｘｘｘｘ”、Ｏ２＝＝“ｘｘｘｘ”と推定され、矛盾は起こらない。
【０１４５】
次にフェイル出力ポートを起点に各ノードを推定する。テスト結果からフェイル出力ポートＯ３＝＝“００００”である。Ｘ４＝＝“１”であるから、Ａ３＝＝“０”と推定され、Ｉ４＝＝“００００”が推定される。故障個所推定情報として、Ｏ３、Ｉ４を登録する。
【０１４６】
以上で、状態ｎｏ１におけるノードテーブルが作成される。
【０１４７】
状態ｎｏ１のＩ２＝＝“ＳＴ２”であるから、Ｏ１を“ＳＴ２”に設定し、状態ｎｏ２の推定を行う。Ｏ１＝＝“ＳＴ２”であるから、Ａ１＝＝“２”、Ｘ３＝＝“１”、Ｉ２＝＝“ＳＴ１”、Ｘ４＝＝“０”、Ｘ８＝＝“０”が決まる。
【０１４８】
状態ｎｏ１の時と同様にして、Ｘ１＝＝“１”、Ｘ２＝＝“０”が決まる。Ａ３＝＝“−１”、Ｏ３＝＝“ｘｘｘｘ”、Ｉ４＝＝“ｘｘｘｘ”が決まる。
【０１４９】
次にフェイル出力ポートを起点に各ノードを推定する。状態ｎｏ１のＩ４の値から、フェイル推定出力ポートＯ２＝＝“００００”である。Ａ２は“−１”、“０”、“１”のいつれかの値を取る。
【０１５０】
Ａ２＝＝“−１”と仮定すると、Ｘ９＝＝“０”であるからＸ５＝＝“０”となる。Ｘ１０＝＝“０”であるから、Ｘ６＝＝“０”、Ｘ５＝＝“１”となる。Ｘ５が矛盾するのでＡ２は“−１”ではない。
【０１５１】
Ａ２＝＝“０”と仮定すると、Ｘ９＝＝“０”、Ｘ５＝＝“０”、Ｘ１０＝＝“１”、Ｘ６＝＝“１”となる。従って、Ｏ２＝＝“００００”、Ａ２＝＝“０”とから、Ｘ７＝＝“００００”、Ｉ３＝＝“１１１１”となる。Ｉ３＝＝“１１１１”からＸ５＝＝“０”が矛盾する。
【０１５２】
出力パターンを満たす入力パターンが存在しないため、故障個所推定情報として、Ｏ２、Ｘ７、Ｉ３を登録する。図９に示すノードテーブルを得る。
【０１５３】
一方、Ａ２＝＝“１”と仮定すると、Ｘ９＝＝“１”、Ｘ５＝＝“１”、Ｉ３＝＝“１１１１”、Ｘ１０＝＝“０”、Ｘ６＝＝“０”となる。故障個所推定情報として、Ｏ２を登録する。
【０１５４】
以上で状態ｎｏ２におけるノードテーブルが作成される。
【０１５５】
状態ｎｏ２のＩ２＝＝“ＳＴ１”であるから、Ｏ１を“ＳＴ１”に設定し、状態ｎｏ３の推定を行う。Ｏ１＝＝“ＳＴ１”であるから、Ｘ８＝＝“１”、Ｘ１＝＝“１”、Ｘ２＝＝“１”、Ｘ３＝＝“０”、Ｘ４＝＝“０”、Ｉ２＝＝“ＳＴ０”が決まる。
【０１５６】
Ａ３＝＝“−１”、Ｏ３＝＝“ｘｘｘｘ”、Ｉ４＝＝“ｘｘｘｘ”が決まる。Ｘ９＝＝“０”、Ｘ１０＝＝“０”、Ａ２＝＝“−１”、Ｏ２＝＝“ｘｘｘｘ”が決まる。Ｘ５＝“ｘ”、Ｘ６＝＝“ｘ”が決まる。Ｉ３は、状態ｎｏ２とｎｏ３で値が更新されないので、故障個所推定情報としてＩ３を登録する。
【０１５７】
以上で状態ｎｏ３におけるノードテーブルが作成される。図１０に示すノードテーブルを得る。
【０１５８】
終了判定手段でデータ系の故障個所推定が終了したので、故障候補出力手段にて、遷移状態ＳＴ２におけるＯ３、Ｉ４、遷移状態ＳＴ１におけるＯ２、Ｘ７、Ｉ３、遷移状態ＳＴ０におけるＩ３をリスト出力する。
【０１５９】
次に、故障モード選択手段で制御系の故障推定を選択し、ノード推定手段５２で制御系の故障推定を行う。
【０１６０】
テストパターンからｃｌｋは“ｐ”であり、読み出しノードにｃｌｋは存在しないので、各遷移状態では、ノードＩ１は“ｐ”と設定する。
【０１６１】
ここでＩ２、“ＳＴ０”、“ＳＴ１”、“ＳＴ２”、Ｘ２、Ｘ３、Ｘ４、Ｘ６、Ｘ８、Ｘ９、Ｘ１０、Ａ１、Ａ２、Ａ３、Ｏ１の各ノードは、設計言語を決定グラフに変換する際に発生したノードであるため、故障候補として抽出しない。
【０１６２】
まず、データ系には故障は存在しないと仮定して、データ系を推定する。正常出力ノードＯ１、Ｏ２から各ノードの出力値を決定する。テストパターンＶ２が終了する時に遷移状態は“０”であるから、Ｏ１を“ＳＴ０”に設定する。
【０１６３】
Ｏ１の出力値からＡ１の出力値が“０”となり、Ｘ４が“１”、Ｉ２が“ＳＴ２”、Ｘ３が“０”、Ｘ８が“０”が決まる。Ｘ８の値からＸ１もしくはＸ２が“０”と推定される。Ｘ１を“０”と仮定する。
【０１６４】
Ｉ１は“ｐ”であり、信号が変化しているから、Ｘ１は“１”であるが矛盾が起こる。そのためＸ１＝＝“１”、Ｘ２＝＝“０”と仮定する。この場合は矛盾は起こらない。
【０１６５】
Ａ２は、“−１”、“０”、“１”のいずれかの値を取る。Ａ２＝＝“１”と仮定すると、Ｘ９＝＝“１”と推定されるが、Ｘ３＝＝“０”であり矛盾する。
【０１６６】
Ａ２＝＝“０”と仮定すると、Ｘ１０＝＝“１”と推定されるが、Ｘ３＝＝“０”であり矛盾する。
【０１６７】
Ａ２＝＝“−１”と仮定すると、Ｘ９＝＝“０”、Ｘ１０＝＝“０”、Ｘ５＝＝“ｘ”、Ｘ６＝＝“ｘ”、Ｉ３＝＝“ｘｘｘｘ”、Ｘ７＝＝“ｘｘｘｘ”、Ｏ２＝＝“ｘｘｘｘ”と推定され、矛盾は起こらない。
【０１６８】
次にフェイル出力ポートを起点に各ノードを推定する。テスト結果からフェイル出力ポートＯ３＝＝“００００”である。Ｘ４＝＝“１”であり、Ｘ４およびＡ３は故障候補とではないため、Ａ３＝＝“０”であり、Ｉ４＝＝“００００”が推定される。故障個所推定情報として、Ｏ３、Ｉ４を登録する。
【０１６９】
以上で、状態ｎｏ１におけるノードテーブルが作成される。
【０１７０】
状態ｎｏ１のＩ２＝＝“ＳＴ２”であるから、Ｏ１を“ＳＴ２”に設定し、状態ｎｏ２の推定を行う。Ｏ１＝＝“ＳＴ２”であるから、Ａ１＝＝“２”、Ｘ３＝＝“１”、Ｉ２＝＝“ＳＴ１”、Ｘ４＝＝“０”、Ｘ８＝＝“０”が決まる。
【０１７１】
状態ｎｏ１の時と同様にして、Ｘ１＝＝“１”、Ｘ２＝＝“０”が決まる。Ａ３＝＝“−１”、Ｏ３＝＝“ｘｘｘｘ”、Ｉ４＝＝“ｘｘｘｘ”が決まる。
【０１７２】
次にフェイル出力ポートを起点に各ノードを推定する。状態ｎｏ１のＩ４の値から、フェイル推定出力ポートＯ２＝＝“００００”である。Ａ２は“−１”、“０”、“１”のいつれかの値を取る。
【０１７３】
Ａ２＝＝“−１”と仮定すると、制御系のノードは、Ｘ９＝＝“０”、Ｘ１０＝＝“０”となる。Ｘ９＝＝“０”から経路を遡ると、Ｘ５＝＝“０”となる。
【０１７４】
Ｘ５から別の経路の出力方向に推定すると、Ｘ６＝＝“１”、Ｘ１０＝＝“１”となり、Ｘ９＝＝“０”、Ｘ１０＝＝“０”が同時に成立しない。
【０１７５】
一方、Ｘ１０＝＝“０”から経路を遡ると、Ｘ６＝＝“０”、Ｘ５＝＝“１”となる。Ｘ５から別の経路の出力方向に推定すると、Ｘ９＝＝“１”となり、Ｘ９＝＝“０”、Ｘ１０＝＝“０”が同時に成立しない。すなわち、Ａ２＝＝“−１”ではない。
【０１７６】
Ａ２＝＝“０”と仮定すると、データ系のノードはＸ７＝＝“００００”、Ｉ３＝＝“１１１１”となる。
【０１７７】
制御系のノードは、Ｘ９＝＝“０”、Ｘ１０＝＝“１”、Ｘ６＝＝“１”、Ｘ５＝＝“０”となる。Ｉ３＝＝“１１１１”からＸ５＝＝“０”が矛盾し、出力パターンを満たす入力パターンが存在しないため、故障個所推定情報として、Ｏ２、Ｘ５を登録する。図１１に示すノードテーブルを得る。
【０１７８】
一方、Ａ２＝＝“１”と仮定すると、Ｏ２の入力はノード“００００”であり、データ系のノードは矛盾なく成立する。
【０１７９】
制御系のノードは、Ｘ９＝＝“１”、Ｘ１０＝＝“０”、Ｘ６＝＝“０”、Ｘ５＝＝“１”、Ｉ３＝＝“１１１１”となる。故障個所推定情報として、Ｏ２、Ｉ３を登録する。
【０１８０】
以上で状態ｎｏ２におけるノードテーブルが作成される。
【０１８１】
状態ｎｏ２のＩ２＝＝“ＳＴ１”であるから、Ｏ１を“ＳＴ１”に設定し、状態ｎｏ３の推定を行う。
【０１８２】
Ｏ１＝＝“ＳＴ１”であるから、Ｘ８＝＝“１”、Ｘ１＝＝“１”、Ｘ２＝＝“１”、Ｘ３＝＝“０”、Ｘ４＝＝“０”、Ｉ２＝＝“ＳＴ０”が決まる。Ａ３＝＝“−１”、Ｏ３＝＝“ｘｘｘｘ”、Ｉ４＝＝“ｘｘｘｘ”が決まる。
【０１８３】
Ｘ９＝＝“０”、Ｘ１０＝＝“０”、Ａ２＝＝“−１”、Ｏ２＝＝“ｘｘｘｘ”が決まる。Ｘ５＝“ｘ”、Ｘ６＝＝“ｘ”が決まる。
【０１８４】
Ｉ３は、状態ｎｏ２とｎｏ３で値が更新されないので、故障個所推定情報としてＩ３を登録する。
【０１８５】
以上で状態ｎｏ３におけるノードテーブルが作成される。図１２に示すノードテーブルを得る。
【０１８６】
終了判定手段で制御系の故障個所推定が終了したので、故障候補出力手段にて、遷移状態ＳＴ２におけるＯ３、Ｉ４、遷移状態ＳＴ１における、Ｏ２、Ｉ３、Ｘ５、遷移状態ＳＴ０におけるＩ３をリスト出力する。
【０１８７】
上記処理をテストパターン毎に施し、テストパターン毎に故障個所推定を行い、カウンター回路の故障個所推定を終了する。
【０１８８】
次にフェイル抽出装置２で、カウンター回路のフェイル伝搬推定情報により、フェイル推定出力ポート“ｏｕｔ”を有するフェイル推定回路ブロックを抽出し、故障個所を推定する。フェイル推定出力ポート“ｏｕｔ”を有する推定回路ブロックがなければ、全ての処理を終了する。
【０１８９】
また、故障個所推定装置５におけるノード推定手段は、各ノードの出力推定をする際に、前記ノードの値が多ビットの場合は、推定可能なビットの値のみを推定しても良い。
【０１９０】
図１３は、本発明の論理回路の故障診断方法の処理手順を示すフローチャートである。
【０１９１】
図１３を参照すると、論理回路の故障診断方法は、処理ステップ１として、論理回路を設計言語で回路ブロック単位に機能記述した記述情報、フェイル情報およびフェイル伝搬推定情報により、フェイル出力ポートおよびフェイル推定出力ポートを有するフェイル推定回路ブロックを抽出するフェイル抽出工程Ｓ２１を有する。
【０１９２】
また、処理ステップ２として、記述情報により、フェイル推定回路ブロックの処理順序に従って複数の状態を持つ状態遷移表を作成し、状態遷移表をもとに入力ノード、演算子で構成される操作ノード、複数の入力値の組から１つの出力値を選択する選択ノードおよび出力ノードと各ノードの結線とにより、データフロー表示して全条件に対する動作を決定する決定グラフを作成する変換工程Ｓ２２を有する。
【０１９３】
さらに、処理ステップ３として、決定グラフを用いて、期待値を算出する期待値算出工程Ｓ２３を有する。
【０１９４】
期待値算出工程Ｓ２３は、図示しないが以下の２工程を含む。すなわち、状態が遷移するごとに、入力ノード、操作ノード、選択ノードおよび出力ノードの出力値を算出して、ノード名と算出値の組で構成されるノードテーブルを作成するノード期待値取得工程と、ノードテーブルから論理回路の出力値を抽出する出力値抽出工程とを有する。
【０１９５】
さらにまた、処理ステップ４として、故障箇所を推定する故障箇所推定工程Ｓ２４を有する。故障箇所推定工程Ｓ２４は、データ系故障と制御系故障とを別々に想定しながら故障個所を推定する故障モード選択工程（不図示）と、フェイル出力ポートおよび前記フェイル推定出力ポートに対応したノードを起点として、フェイルベクタに基づき各ノードの出力推定および期待値比較により各ノードのフェイル推定を入力方向に行い、フェイル伝搬経路を推定するノード推定工程（不図示）と、このフェイル伝搬経路のノードの情報を故障個所推定情報として登録する推定情報登録工程（不図示）とからなる工程Ｓ２５と、出力ポートにフェイルを伝搬する可能性のある全ての組み合わせを算出するまで、これらの処理を繰り返す終了判定工程Ｓ２６と、前述した故障個所推定情報をリスト出力する故障候補出力工程Ｓ２７とを有する。
【０１９６】
変換工程Ｓ２２は、図示しないが以下の諸工程を含む。すなわち、処理ステップ１として、論理回路の処理を複数の遷移状態に分割し、現状態、状態遷移条件、次状態および動作で構成される状態遷移表を作成する工程を有する。
【０１９７】
処理ステップ２として、状態遷移表に記述された入力ポート、状態の変数または値を読み出す処理を入力ノードとして設定し、演算子の処理を操作ノードとして設定し、出力ポート、状態変数または値を書き込む処理を出力ノードとして設定し、入力ノードと操作ノードとをデータフローとして接続することで状態を計算する制御パートを作成し、状態の結果をＴＲＵＥ／ＦＡＬＳＥの２値で与え、また、入力ノードと操作ノードとをデータフローとして接続することで出力値を計算するデータパートを作成し、前記状態の結果において、与えられた組の中からＴＲＵＥ状態に対応した一つの前記出力値を選択し、その値を出力ノードに選択出力するための選択ノードを設定する工程を有する。
【０１９８】
変換工程Ｓ２２は、これらの処理ステップ１および２により、決定グラフを作成する。
【０１９９】
また、期待値算出工程Ｓ２３におけるノード期待値取得工程は、図示しないが以下の諸工程を含む。すなわち、処理ステップ１として、テストパターンもしくは一つ前の状態の出力パターンを読み込み、入力ノードを設定する入力パターン読み込み工程を有する。
【０２００】
処理ステップ２として、全入力値が設定され、かつ出力値が未設定の操作ノードを抽出する操作ノード抽出工程を有する。
【０２０１】
処理ステップ３として、抽出された操作ノードに対して、入力値をもとに出力値を算出する操作ノード設定工程を有する。
【０２０２】
処理ステップ４として、全操作ノードの設定が完了したか否かを判定し、完了していなければ操作ノード抽出工程へ戻り、完了していれば次の工程へ行く操作ノード判定工程を有する。
【０２０３】
処理ステップ５として、選択ノードの出力値を算出する選択ノード設定工程と、処理ステップ６として、出力ノードの出力値を算出する出力ノード設定工程を有する。
【０２０４】
処理ステップ７として、次状態が有り、かつ次状態が最初の遷移状態でなければ次状態の入力パターン読み込み工程へ行き、次状態が無い、もしくは次状態が最初の遷移状態であれば、処理を終了する状態判定工程を有する。
【０２０５】
ノード期待値取得工程は上述した処理ステップ１〜７により、各ノードの出力値を算出して、ノード名と算出値の組で構成されるノードテーブルを作成する。
【０２０６】
また、期待値算出工程Ｓ２３における出力値抽出工程は、ノード期待値取得工程で作成したノードテーブルから、テストパターンごとの最終状態における出力ポートの出力値を抽出する工程により、論理回路の出力値を抽出する。
【０２０７】
また、故障個所推定工程Ｓ２４におけるノード推定工程は、各ノードの出力推定をする際に、ノードの値が多ビットの場合は、推定可能なビットの値のみを推定する。
【０２０８】
本発明において、処理手順Ｓ２１〜Ｓ２４の各処理は、論理回路の故障診断装置を構成するコンピュータでプログラムを実行することで、その処理が実現される。このプログラムを記録したコンピュータで機械読み取り可能な記録媒体（例えば、磁気ディスク、光ディスク、半導体メモリ、その他の任意の記録媒体）から、該プログラムを論理回路の故障診断装置に読み取り、主記憶にロードして実行することで、本発明を実施することができる。あるいはプログラムを記録した記録媒体を備えたサーバ等から通信回線を介してプログラムを論理回路の故障診断装置のコンピュータにダウンロードするようにしてもよい。このように記録媒体を用いることで、プログラムの管理が容易となる。
【０２０９】
本発明において、設計言語として、本実施例記載のＶｅｒｉｌｏｇ−ＨＤＬのみならず、ＶＨＤＬ等のハードウェア記述言語、Ｃ言語などの、論理回路の構造あるいは動作を記述した言語を用いても良い。
【０２１０】
【発明の効果】
以上説明したように、本発明による論理回路の故障診断装置、故障診断方法およびそのプログラムは、論理回路の構造あるいは動作を記述した設計言語から、フェイル推定回路ブロックを抽出し、抽出したフェイル推定回路ブロックごとに、決定グラフを作成し、データ系故障と制御系故障とを別々に想定しながら、決定グラフを用いたフェイル伝搬経路推定を行うことで、機能レベルでデータ系と制御系の故障個所を推定することができるので、大規模化、多層配線化する論理回路に対して、期待値の算出および故障個所の推定の効率向上に寄与するという効果がある。
【図面の簡単な説明】
【図１】本発明の論理回路の故障診断装置のシステム構成を示すブロック図である。
【図２】論理回路のＶｅｒｉｌｏｇ−ＨＤＬ記述例である。
【図３】本発明の一実施の形態における状態遷移表である。
【図４】本発明の一実施の形態における決定グラフである。
【図５】本発明のノード期待値取得手段における処理順序を示すフローチャートである。
【図６】本発明の一実施の形態におけるノードテーブルである。
【図７】本発明の一実施の形態におけるテスト結果である。
【図８】本発明の一実施の形態における他の例のノードテーブルである。
【図９】本発明の一実施の形態におけるデータ系故障を想定した場合のノード推定結果である。
【図１０】本発明の一実施の形態における他の例のデータ系故障を想定した場合のノード推定結果である。
【図１１】本発明の一実施の形態における制御系故障を想定した場合のノード推定結果である。
【図１２】本発明の一実施の形態における他の例の制御系故障を想定した場合のノード推定結果である。
【図１３】本発明の論理回路の故障診断方法の処理手順を示すフローチャートである。
【図１４】従来の論理回路の故障箇所推定方法の概要処理を示すフローチャートである。
【符号の説明】
１    入力装置
２    フェイル抽出装置
３    変換装置
４    期待値算出装置
５    故障個所推定装置
６    記憶装置
７    出力装置
４１    ノード期待値取得手段
４２    出力値抽出手段
５１    故障モード選択手段
５２    ノード推定手段
５３    推定情報登録手段
５４    終了判定手段
５５    故障候補出力手段
【図１】
2004309261.tif 000003
【図２】
2004309261.tif 000004
【図３】
2004309261.tif 000005
【図４】
2004309261.tif 000006
【図５】
2004309261.tif 000007
【図６】
2004309261.tif 000008
【図７】
2004309261.tif 000009
【図８】
2004309261.tif 000010
【図９】
2004309261.tif 000011
【図１０】
2004309261.tif 000012
【図１１】
2004309261.tif 000013
【図１２】
2004309261.tif 000014
【図１３】
2004309261.tif 000015
【図１４】
2004309261.tif 000016