(57)【特許請求の範囲】
【請求項１】
故障シミュレーションの対象となる回路と複数のテストプログラムを入力する入力手段と、
この入力手段により入力された前記故障シミュレーションの対象となる回路を演算器と記憶手段とを含むブロックに分割する回路分割手段と、
この回路分割手段により分割された前記ブロック毎に前記入力手段により入力された前記テストプログラムによって故障シミュレーションを行い、前記テストプログラム毎の第１の故障検出率を計算する故障シミュレーション手段と、
この故障シミュレーション手段によって計算された前記第１の故障検出率の中から観測性のあるものを利用するために、前記テストプログラムの各命令を解析して観測性を判定し、前記観測可能であると判定されたテストプログラムにおける第１の故障検出率を利用して、第２の故障検出率を計算する命令解析手段と、
この命令解析手段により計算された前記第２の故障検出率を出力する出力手段と
から構成されることを特徴とする故障シミュレーション装置。
【請求項２】
前記命令解析手段は、
前記ブロックを試験し故障を検出する第１の命令群と試験した結果を回路の外部へ伝搬させる第２の命令群とを選び出し、
前記第１の命令群の出力が前記記憶手段の内容を変更する命令を経ることなく前記第２の命令群に入力されているときには観測可能であると判定し、
前記第１の命令群の出力が前記記憶手段の内容を変更する命令を経て前記第２の命令群に入力されているときには観測できる可能性があると判定し、
前記観測可能であるときと、前記観測できる可能性があるとき以外は観測不可能であると判定し、
前記観測可能であると判定されたテストプログラムにおける第１の故障検出率を利用して、第２の故障検出率を計算することを特徴とする請求項１に記載の故障シミュレーション装置。
【請求項３】
前記命令解析手段が、観測できる可能性があると判定したときは、さらに命令の解析を行い観測可能であるか不可能であるかをさらに判定することを特徴とする請求項２に記載の故障シミュレーション装置。
【請求項４】
回路分割手段、故障シミュレーション手段及び命令解析手段を備える故障シミュレーション装置において、
前記回路分割手段が、故障シミュレーションの対象となる回路を演算器と記憶手段とを含むブロックに分割する回路分割ステップと、
前記故障シミュレーション手段が、この回路分割ステップにより分割された前記ブロック毎にテストプログラムによって故障シミュレーションを行い、前記テストプログラム毎の第１の故障検出率を計算する故障シミュレーションステップと、
前記命令解析手段が、この故障シミュレーションステップによって計算された前記第１の故障検出率の中から観測性のあるものを利用するために、前記テストプログラムの各命令を解析して観測性を判定し、第２の故障検出率を計算する命令解析ステップと
を含むことを特徴とする故障シミュレーション方法。
【請求項５】
故障シミュレーションの対象となる回路を演算器と記憶手段とを含むブロックに分割する回路分割処理と、
この回路分割処理により分割された前記ブロック毎にテストプログラムによって故障シミュレーションを行い、前記テストプログラム毎の第１の故障検出率を計算する故障シミュレーション処理と、
この故障シミュレーション処理によって計算された前記第１の故障検出率の中から観測性のあるものを利用するために、前記テストプログラムの各命令を解析して観測性を判定し、第２の故障検出率を計算する命令解析処理と
を含み、これら処理をコンピュータに実行させることを特徴とする故障シミュレーションプログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、マイクロプロセッサにおける故障シミュレーション装置、故障シミュレーション方法、及びそのシミュレーションプログラムを記録したコンピュータ読み取り可能な記録媒体に関し、特に大規模な回路を分割することによって故障シミュレーションを高速に行うことのできる故障シミュレーション装置、故障シミュレーション方法、及びそのシミュレーションプログラムを記録したコンピュータ読み取り可能な記録媒体に関する。
【０００２】
【従来の技術】
故障シミュレーションは膨大な時間のかかるlogicシミュレーションである。そのため、大規模な回路に対して故障シミュレーションを行う場合には、回路を幾つかのブロックに分けて、回路の一部を切り出して部分的にシミュレーションを行えると効率的である。
【０００３】
【発明が解決しようとする課題】
しかしながら、実際には回路をいくつかのブロックに分割してしまうと故障の伝播していく経路が実際のチップの場合と異なってしまうため、大規模な回路であってもブロックに分割することができなかった。
【０００４】
本発明は上記事情に鑑みてなされたものであり、その目的は、命令を解析することによって故障の伝搬していく経路についても考慮することができ、これによって大規模な回路を分割して高速な故障シミュレーションを実現することのできる故障シミュレーション装置、故障シミュレーション方法、及びそのシミュレーションプログラムを記録したコンピュータ読み取り可能な記録媒体を提供することにある。
【０００５】
【課題を解決するための手段】
上記目的を達成するために、第１の発明である故障シミュレーション装置は、故障シミュレーションの対象となる回路とテストプログラムを入力する入力手段と、この入力手段により入力された前記故障シミュレーションの対象となる回路を演算器と記憶手段とを含むブロックに分割する回路分割手段と、この回路分割手段により分割された前記ブロック毎に前記入力手段により入力された前記テストプログラムによって故障シミュレーションを行い、前記テストプログラム毎の第１の故障検出率を計算する故障シミュレーション手段と、この故障シミュレーション手段によって計算された前記第１の故障検出率の中から観測性のあるものを利用するために、前記テストプログラムの各命令を解析して観測性を判定し、第２の故障検出率を計算する命令解析手段と、この命令解析手段により計算された前記第２の故障検出率を出力する出力手段とから構成されることを特徴とする。
【０００６】
この第１の発明によれば、観測性を考慮して故障シミュレーションを行うことによって、ブロック毎に故障シミュレーションを行うことができるので、高速に故障検出率を求めることが可能になる。
【０００７】
第２の発明である故障シミュレーション装置の命令解析手段は、前記ブロックを試験し故障を検出する第１の命令群と試験した結果を回路の外部へ伝搬させる第２の命令群とを選び出し、前記第１の命令群の出力が前記記憶手段の内容を変更する命令を経ることなく前記第２の命令群に入力されているときには観測可能であると判定し、前記第１の命令群の出力が前記記憶手段の内容を変更する命令を経て前記第２の命令群に入力されているときには観測できる可能性があると判定し、前記観測可能であるときと、前記観測できる可能性があるとき以外は観測不可能であると判定し、前記観測可能であると判定されたテストプログラムにおける第１の故障検出率を利用して、第２の故障検出率を計算することを特徴とする。
【０００８】
この第２の発明によれば、第１の命令群と第２の命令群とを選び出して観測性を判定し、観測可能であると判定したときの第１の故障検出率のみを利用して第２の故障検出率を計算するので、高速に第２の故障検出率を求めることが可能になる。
【０００９】
第３の発明である故障シミュレーション装置の命令解析手段は、観測できる可能性があると判定したときは、さらに命令の解析を行い観測可能であるか不可能であるかをさらに判定することを特徴とする。
【００１０】
この第３の発明によれば、観測できる可能性があると判定したときには、さらに命令の解析を行い観測可能であるか否かをさらに判定して第２の故障検出率の計算を行うので、より正確な第２の故障検出率の計算を行うことができる。
【００１１】
第４の発明である故障シミュレーション方法は、故障シミュレーションの対象となる回路を演算器と記憶手段とを含むブロックに分割する回路分割ステップと、この回路分割ステップにより分割された前記ブロック毎にテストプログラムによって故障シミュレーションを行い、前記テストプログラム毎の第１の故障検出率を計算する故障シミュレーションステップと、この故障シミュレーションステップによって計算された前記第１の故障検出率の中から観測性のあるものを利用するために、前記テストプログラムの各命令を解析して観測性を判定し、第２の故障検出率を計算する命令解析ステップとを含むことを特徴とする。
【００１２】
この第４の発明によれば、観測性を考慮して故障シミュレーションを行うことによって、ブロック毎に故障シミュレーションを行うことができるので、高速に故障検出率を求めることが可能になる。
【００１３】
第５の発明である故障シミュレーションプログラムを記録したコンピュータ読み取り可能な記録媒体は、故障シミュレーションの対象となる回路を演算器と記憶手段とを含むブロックに分割する回路分割処理と、この回路分割処理により分割された前記ブロック毎にテストプログラムによって故障シミュレーションを行い、前記テストプログラム毎の第１の故障検出率を計算する故障シミュレーション処理と、この故障シミュレーション処理によって計算された前記第１の故障検出率の中から観測性のあるものを利用するために、前記テストプログラムの各命令を解析して観測性を判定し、第２の故障検出率を計算する命令解析処理とを含み、これら処理をコンピュータに実行させることを特徴とする。
【００１４】
この第５の発明によれば、観測性を考慮して故障シミュレーションを行うことによって、ブロック毎に故障シミュレーションを行うことができるので、高速に故障検出率を求めることが可能になる。
【００１５】
【発明の実施の形態】
以下、本発明に係る故障シミュレーション装置、故障シミュレーション方法及びそのシミュレーションプログラムを記録したコンピュータ読み取り可能な記録媒体の一実施形態を図面に基づいて説明する。
【００１６】
図１は本実施形態の故障シミュレーション装置の構成を示すブロック図である。図１に示すように、本実施形態の故障シミュレーション装置は、故障シミュレーションの対象となる回路やテストプログラムを入力する入力手段１００と、この入力手段１００によって入力された故障シミュレーションの対象となる回路を演算器と記憶手段とを含むブロックに分割する回路分割手段２１０と、この回路分割手段２１０によって分割されたブロックを、入力手段１００により入力されたテストプログラムで故障シミュレーションを行い、各テストプログラム毎に故障検出率を計算する故障シミュレーション手段２２０と、この故障シミュレーション手段２２０によって計算された各テストプログラム毎の故障検出率の中から観測性のあるものを利用するために、テストプログラムの各命令を解析して観測性を判定し、最終的な故障検出率を計算する命令解析手段２３０と、この命令解析手段２３０によって計算された故障検出率を出力する出力手段３００とから構成されている。
【００１７】
なお、入力手段１００は、キーボード、マウス、ライトペン、又はフレキシブルディスク装置等が含まれ、処理手段２００は、各種の処理を行うためのＣＰＵと、この処理の命令を記憶する記憶手段とを含む通常のコンピュータシステムが含まれ、また、出力手段３００は、ディスプレイ装置やプリンタ装置等が含まれる。上記処理手段２００に含まれる回路分割手段２１０、故障シミュレーション手段２２０、命令解析手段２３０の各処理の命令やタイミング制約は記憶手段に保持されており、必要に応じてＣＰＵにロードされ、実行がなされる。通常の場合、実行の制御は、操作者が入力手段１００に対して命令（コマンド）の入力を行うことにより行われる。
【００１８】
次に、本実施形態の故障シミュレーション装置の動作及び故障シミュレーション方法について図２のフローチャートに基づいて説明する。
【００１９】
まず、故障シミュレーションの対象となる回路が入力されて故障シミュレーションが開始されると、回路分割手段２１０では、ＲＴＬ（Register Transfer Level）モデルによって、全体のシミュレーションを行い、分割する各ブロックへの入出力端子の信号を保存しておく（Ｓ２１）。
【００２０】
そして次に、故障シミュレーションの対象となる回路全体を各ブロックに分割する（Ｓ２２）。この分割するときの様子を図３をもとに説明する。
【００２１】
図３（ａ）は故障シミュレーションの対象となる回路全体を示しており、この回路にはＡＬＵ（Arithmetic and Logic Unit）、ＦＰＵ（Floating point Processing Unit）ＩＭＡＣ（Integer Multiplier Accumlater）などの演算器と記憶手段としてのレジスタファイルＲＦが含まれている。
【００２２】
この回路全体からＡＬＵなどの演算器を１つのブロックとして分割するのであるが、このとき演算器からの出力は故障情報を持っているため、故障の検出が可能な端子までその故障情報が伝わらなくてはならない。ところが、レジスタファイルやキャッシュメモリなどの記憶手段にまで故障情報が伝われば、その後記憶手段の内容をチップ外部へ取り出すことができるため、故障の検出が可能である。
【００２３】
そこで、ＡＬＵ、ＩＭＡＣ、ＦＰＵなどの演算器だけで切り出すのではなく、図３（ｂ）に示すようにレジスタファイルなどの記憶手段と一緒にして切り出し、演算器から記憶手段までの信号の伝搬をシミュレーションすることにより、故障情報が記憶手段まで伝搬したことを確認し、これにより故障情報の外部への検出が可能であると判断する。
【００２４】
次に、故障シミュレーション手段２２０では、テストプログラムによって各ブロック毎に故障シミュレーションを行う。
【００２５】
まずテストプログラムを入力する（Ｓ２３）。この入力するテストプログラムは、１つのテストプログラムによって全ての故障を検出できるわけではないので多くのテストプログラムを入力する。
【００２６】
そして、ステップＳ２１の全体のシミュレーションで保存しておいた入出力端子の信号を用いて、各ブロックごとに故障シミュレーションをして各ブロック毎の故障検出率を計算する（Ｓ２４）。
【００２７】
この故障検出率を計算する様子を図４を用いて説明する。
【００２８】
まず、ステップＳ２３でテストプログラムが入力されると、ステップＳ２２で分割されたＡＬＵのブロックでは、入力信号Ｓ１を用いてＡＬＵの故障シミュレーションを行う。このとき、データベース４１に保存された回路図をネットアウト４２でネットリストに変換して故障シミュレーションで利用する。
【００２９】
故障シミュレーションが終了すると出力信号Ｓ２を出力する。しかし、この出力信号Ｓ２には外部から観測できないサイクル（出力信号Ｓ２の’×’で表示されているサイクルなど）についても出力されているため、この出力信号Ｓ２により故障検出率を計算すると正しい故障検出率が計算できない。そこで、セレクト信号Ｓ３とレジスタファイルのライトイネーブル信号Ｓ４を考慮して、レジスタファイルに書き込まれないサイクル、即ち外部で観測できないサイクルをマスクした出力信号Ｓ５を出力する。出力信号Ｓ５の’Ｉ’で表示されたサイクルはマスクされたサイクルである。こうすることによって、外部で観測できないサイクルを考慮して故障検出率を計算することがなくなるので、正しい故障検出率を計算することができる。
【００３０】
こうして、全てのテストプログラムについて故障シミュレーションを行い、故障検出率を計算したら、図５に示すように各テストプログラムに対して各ブロック毎に故障検出率を出力すると故障シミュレーション手段２２０の処理は終了し、入力されていないテストプログラムがある場合にはステップＳ２３に戻り、故障シミュレーションを再び行う（Ｓ２５）。
【００３１】
次に、命令解析手段２３０では、命令を解析することで試験した各ブロックの故障情報がチップの外部へ伝播したか否かをトレースして観測性を判定し、その結果をもとに全てのテストプログラムの故障検出率を総合した最終的な故障検出率を計算する。
【００３２】
まず、テストプログラムの各命令の中から、ブロックを試験する命令群と試験した結果を観測するための命令群とを選び出す（Ｓ２６）。
【００３３】
ここで、ブロックを試験する命令群とは、各ブロックにあるＡＬＵなどの演算器で実行される命令のことをいい、例えば、図６（ａ）に示すプログラムの中では、add（加算命令）、sub（減算命令）がＡＬＵ、madd.s（浮動小数点系の乗加算命令）がＦＰＵ、madd（整数系の乗加算命令）がＩＭＡＣでそれぞれ実行される命令なのでブロックを試験する命令群に該当する。
【００３４】
また、試験した結果を観測できる命令群とは、レジスタファイルなどの記憶手段の内容を外部に取り出すことのできる命令をいう。例えば、図６（ａ）に示すプログラムの中ではsw（ストアワード命令）やbeq（条件分岐命令）等である。これらの命令が実行されると、レジスタの値によって外部のデータ信号やアドレス信号が変化し、データが正しかったか否かが判定できるので、試験した結果を観測できる命令群に該当する。
【００３５】
各命令を選び出したところで、次に命令をトレースして観測性を判定する（Ｓ２７）。
【００３６】
ここで、観測性とは、故障がチップの外部まで伝搬し観測できるか否かについての性質をいう。具体的には、ブロックを試験する命令群の結果が、試験した結果を観測できる命令群まで到達すれば、故障が外部まで伝播したと考えて観測可能であると判定する。
【００３７】
例えば、図６（ａ）に示すプログラムで説明すると、図６（ｂ）に示すように試験した結果を観測できる命令群であるｓｗ命令のレジスタｒ１からプログラムをトレースしていくと、途中で論理演算などの命令を経ることなく、ａｄｄ命令まで到達することができる。即ち、ａｄｄ命令の結果は論理演算などの命令を経ることなく、試験した結果を観測できる命令群であるｓｗ命令まで到達しているので、ａｄｄ命令を実行するＡＬＵは「観測可能である」と判定することができる。
【００３８】
同様に、試験した結果を観測できる命令群であるｂｅｑ命令のレジスタｒ１１からトレースしていくと、途中で論理演算などの命令を経ることなく、ｍａｄｄ．ｓ命令まで到達することができるので、ｍａｄｄ．ｓ命令を実行するＦＰＵは「観測可能である」と判定することができる。
【００３９】
これに対して、試験した結果を観測できる命令群まで到達する途中で算術演算や論理演算をする命令を経てしまった場合には、演算器を試験した結果が変更されていることが考えられるので、「観測可能」ではなく、「観測できる可能性がある」と判定する。ここで、可能性があるとしたのは、論理演算などの命令を経てしまった場合でも、例外的に単なるデータ転送や１との論理積や排他的論理和の演算などの場合には故障をマスクすることなく伝播するので、途中でそれらの命令を経てしまった場合でも「観測可能である」と判定することができるからである。
【００４０】
例えば、図６（ａ）のプログラムでは、図６（ｂ）に示すように試験した結果を観測できる命令群であるｂｅｑ命令のレジスタｒ３からプログラムをトレースしていくと、途中でｌｗ（ロード命令）を経てからｓｕｂ命令まで到達している。即ち、ｓｕｂ命令の結果は論理演算などの命令を経た後に、試験した結果を観測できる命令群であるｂｅｑ命令まで到達している。従って、故障が途中でマスクされている可能性があるので、ｓｕｂ命令を実行するＡＬＵは「観測できる可能がある」と判定する。
【００４１】
そして、その他の場合には、観測不可能であると判定する。
【００４２】
このように、各命令のソースレジスタとディスティネーションレジスタをプログラムに従ってトレースし演算結果がどのように移動するかを追跡して観測性を判断し、図７に示すような各テストプログラム毎の観測性の結果を出力する。図７において、○は観測可能であるとき、△は観測できる可能性があるとき、×は観測不可能であるときを示している。
【００４３】
次に、全てのテストプログラムについて観測性の結果が得られたかどうかを判断し（Ｓ２８）、全てのテストプログラムについて終了していない場合にはステップＳ２６に戻り、終了している場合にはその観測性の結果を利用して、故障検出率を計算して出力する（Ｓ２９）。
【００４４】
このとき、図５の故障検出率と図７の観測性とを考慮して、最終的な故障検出率を計算する。例えば、ＦＰＵのブロックの故障検出率を計算する場合には、テストプログラム１、３は観測不可能なので考慮せず、観測可能であるテストプログラム２、４の故障検出率のみを考慮して故障検出率を計算する。
【００４５】
また、「観測できる可能性がある」と判定されたテストプログラムがある場合には、「観測可能である」と判定されたテストプログラムの故障検出率のみを考慮して、最終的な故障検出率を計算してもよいが、さらに命令の解析を行い、観測が可能であるか、不可能であるかをさらに判定して最終的な故障検出率を計算してもよい。
【００４６】
例えば、論理演算などの命令を経たことによって「観測できる可能性がある」と判定された場合でも、例外的に単なるデータ転送や１との論理積や排他的論理和の演算などの場合には故障をマスクすることなく伝播するので、「観測可能である」と判定でき、最終的な故障検出率の計算に考慮することができるからである。その他の場合には「観測不可能である」ので、故障検出率の計算には考慮しない。
【００４７】
従って、図７の観測性でＩＭＡＣの故障検出率を計算する場合には、テストプログラム３、４の故障検出率のみを考慮して最終的な故障検出率を計算してもよいが、さらに命令の解析を行ってテストプログラム２についての観測性を判定し「観測可能である」と判定されたときにはテストプログラム２、３、４の故障検出率を考慮して最終的な故障検出率を計算し、「観測不可能である」と判定されたときにはテストプログラム３、４の故障検出率のみを考慮して最終的な故障検出率を計算してもよい。
【００４８】
このように、「観測できる可能性がある」と判定された場合に、観測可能なテストプログラムの故障検出率のみを考慮して最終的な故障検出率を計算した場合には、高速に故障検出率を計算することができ、とくに命令の解析をさらに行った場合でも故障検出率の改善が望めないような場合には有効である。
【００４９】
また、「観測できる可能性がある」と判定されたテストプログラムについてさらに命令の解析を行った場合には、観測可能であるか否かをさらに判定して最終的な故障検出率の計算を行うので、より正確な故障検出率の計算を行うことができる。
【００５０】
なお、上述した故障シミュレーション方法を実現するためのプログラムは記録媒体に保存することができ、この記録媒体をコンピュータシステムによって読み込ませることにより、前記プログラムを実行してコンピュータを制御しながら上述した故障シミュレーション方法を実現することができる。ここで、前記記録媒体とは、メモリ装置、磁気ディスク装置、光ディスク装置等、プログラムを記録することができるような装置が含まれる。
【００５１】
【発明の効果】
以上説明したように、本発明の故障シミュレーション装置、故障シミュレーション方法及びそのシミュレーションプログラムを記録したコンピュータ読み取り可能な記録媒体によれば、従来数千時間とかけていた故障シミュレーションを高速に実行することができる。
【００５２】
即ち、回路を分割することにより故障シミュレーションを行う規模を数Ｍ（メガ）のオーダーから数Ｋ（キロ）のオーダーにすることができ、故障シミュレーションの速度に置き換えてみると１０００〜１００万倍の高速化が可能になる。このとき、分割したことにより故障シミュレーションを数多く流す必要はあるものの、対象となる回路に最も有効なテストプログラムを選択できるため、例えば１０００本のテストプログラムを１０個のブロックに対して行うことを考えた場合、単純に１０００×１０＝１００００回の故障シミュレーションを行うのではなく、１０００本のテストプログラムのうち５００本は特定の３つのブロックに対して故障シミュレーションを行い、２００本は別の５つのブロック、３００本はさらに別の２つのブロックに対して故障シミュレーションを行うようにすることができるので、結果的に５００×３＋２００×５＋３００×２＝３１００のように故障シミュレーションの回数の増加を抑えることができる。
【００５３】
また、回路規模が大きすぎて故障シミュレーションの実行が不可能だった回路に対しても、従来は無限大に時間が必要であると考えられていたものが、有限の時間で故障シミュレーションを行うことができるようになるので有効であり、また分割することでシミュレーションを並列に実行することが可能になるため、全体では更に高速化を図ることができる。
【図面の簡単な説明】
【図１】本発明による故障シミュレーション装置の一実施形態の構成を示すブロック図である。
【図２】本発明による故障シミュレーション方法の一実施形態を示すフローチャートである。
【図３】図１に示す回路分割手段における回路の分割を説明するための図である。
【図４】図１に示す故障シミュレーション手段における故障シミュレーションを説明するためのブロック図である。
【図５】図１に示す故障シミュレーション手段における故障シミュレーションの結果である故障検出率の一例を示す図である。
【図６】図１に示す命令解析手段における処理を説明するための図である。
【図７】図１に示す命令解析手段における処理の結果である観測性の一例を示す図である。
【符号の説明】
４１  データベース
４２  ネットアウト
１００  入力手段
２００  処理手段
２１０  回路分割手段
２２０  故障シミュレーション手段
２３０  命令解析手段
３００  出力手段
【図１】
0003688479.tif 000002
【図２】
0003688479.tif 000003
【図３】
0003688479.tif 000004
【図４】
0003688479.tif 000005
【図５】
0003688479.tif 000006
【図６】
0003688479.tif 000007
【図７】
0003688479.tif 000008