(57)【要約】【課題】      論理回路に対するテストパターンにおける外部入力値に含まれるドントケア値の数を多くし、テストパターンの最適化を図ることが可能な抽出方法を提供する。【解決手段】  ステップＳＴ５７６ではステップＳＴ５７５で選択された信号線を正当化するのに関係のある信号線がマークされる。ステップＳＴ５７７ではステップＳＴ５７５で選択された信号線を正当化する論理関数が作成されて割り当てられる。この論理関数はマークされた信号線のうち外部入力信号線から選択された信号線までの論理回路の信号線に対して適用される論理関数であって選択された信号線を正当化するための所定の演算規則に従って割り当てられたものである。ステップＳＴ５７８ではステップＳＴ５７７で作成された各信号線を正当化する論理関数の積をとった論理関数が作成されて割り当てられる。ステップＳＴ５７９ではステップＳＴ５７８で作成された論理関数の従属問題が解かれる。【選択図】  図５
2006126027.tif 000002
【特許請求の範囲】
【請求項１】
論理回路に対するテストパターンにおける外部入力値に含まれる確定値を抽出する方法であって、
選択手段が、前記論理回路における正当化すべき所定の信号線を選択するステップと、
マーク手段が、前記選択された所定の信号線を正当化するために関係がある信号線を所定の追跡規則に従ってマークするステップと、
割当手段が、前記マークされた信号線のうち外部入力信号線から前記選択された所定の信号線までの論理回路の信号線に対して適用される論理関数であって前記選択された所定の信号線を正当化するための所定の演算規則に従う論理関数を割り当てるステップと、
演算手段が、前記割り当てられた論理関数を用いた従属問題を解いて前記外部入力値に含まれる確定値の個数が最小となる信号値の組み合わせを求めるステップと、を含む抽出方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、抽出方法に関し、特に論理回路に対するテストパターンにおける外部入力値に含まれる確定値を抽出する方法に関するものである。
【背景技術】
【０００２】
通常、製造されたＬＳＩのチップに対しては、出荷前にそのチップが不良品でないことが確認され、良品と判定されたものは市場へ出荷され、不良品と判定されたものは廃棄されるという出荷テストが行われる。出荷テストで行われるテストのひとつとして、ＬＳＩテスタを用いて、ＬＳＩの外部入力ピンから値を印加して、外部出力ピンでの応答値が正しいか否かを判定するというものがある。このとき外部入力ピンに印加する値は、一般に自動テストパターン生成と呼ばれるツールで作成されたテストパターンが使用される。これまでは、主に回路中の単一縮退故障を仮定し、テストパターン生成が行われていた。ここで、単一縮退故障とは、実際にＬＳＩ中におこる物理的欠陥をモデル化したもののひとつで、論理回路中の一箇所のみで論理回路を構成する論理ゲートの入出力信号線の値が０または１に固定する故障をいう。
【０００３】
テストパターン生成時にはＬＳＩのテスト時に入力する値が０でも１でもよいドントケアの信号値があるものの、ＬＳＩの検査を行う際はドントケアの信号値部分が０か１で埋められたテストパターンが使用される。そのため、通常、テストパターン生成において出力されるテストパターンは、０と１で埋められており、ドントケアは含まれない。
【０００４】
そして、テストパターンから故障検出率を低下させることなくドントケアを抽出する方法についての技術も開示されている（非特許文献１、非特許文献２参照）。以下、非特許文献１に記載されている技術を説明する。
【０００５】
図１４は、従来のドントケア抽出処理を含んだテストパターン抽出処理と故障シミュレーション処理についてのフローチャートである。
【０００６】
ステップＳ１０では、ドントケア入りテストパターンの初期化が行われる。テストパターンの初期状態では全ての信号値がドントケアとされる。ステップＳ２０では、テストパターン生成において出力されたテストパターン（以下、「元のテストパターン」とよぶ。なお、ここでの元のテストパターンは０と１とで埋められたテストパターンである。）が使用され、故障シミュレーションが実行される。通常の故障シミュレーションでは、テストパターン中のテストベクトル順に、故障が設定され、シミュレーションが行われる。１つのテストベクトルにおいて、１つの故障が１回検出されるとそれ以降のテストベクトルでは、その故障に関してシミュレーションは行われず、故障リストから削除される（以下、「故障ドロップ」とよぶ。）。但し、このステップＳ２０では、２回検出された後、故障ドロップが行われる。ステップＳ３０では、ステップＳ２０の故障シミュレーションにおいて、１回以上検出された故障のリストが作成される。なお、ドントケア入りテストパターン抽出の目的は、ここで作成された故障リストを全て検出するドントケア入りのテストパターンを元のテストパターンから抽出する処理を行うことであるが、そのために以下のような処理をここでは実行することにしている。
【０００７】
ステップＳ４０では、ステップＳ２０の処理で１回しか検出されなかった故障（以下、「必須故障」とよぶ。）のリストが抽出される。ステップＳ５０では、ステップＳ４０で抽出された必須故障に対して、ドントケア入りのテストパターンが抽出される。ステップＳ６０では、ステップＳ５０で作成されたドントケア入りテストパターンが使用されて故障シミュレーションが実行される。
【０００８】
ステップＳ７０では、ステップＳ６０で検出されなかった故障（以下、「未検出故障」とよぶ。）のリストが抽出される。ステップＳ８０では、ステップＳ７０で抽出された未検出故障に対して、ドントケア入りのテストパターンが抽出される。ステップＳ９０では、ステップＳ８０で作成されたドントケア入りテストパターンが使用されて故障シミュレーションが実行される。
【０００９】
ステップＳ１００では、ステップＳ９０で検出されなかった故障（以下、「見逃し故障」とよぶ。）のリストが抽出される。ステップＳ１１０では、ステップＳ１００で抽出された見逃し故障に対して、ドントケア入りのテストパターンが抽出される。ステップＳ１２０では、ステップＳ１１０で作成されたドントケア入りテストパターンが使用されて故障シミュレーションが実行される。
【００１０】
図１５は、図１４のステップＳ５０の処理を詳細に示したフローチャートである。
【００１１】
ステップＳ５１では、全テストベクトルについて処理を行ったか否かが確認される。行っていれば処理は終了し、行っていなければステップＳ５２に進む。ステップＳ５２では、現在のテストベクトルにおける全必須故障に対して処理を行ったか否かが確認される。行っていればステップＳ５１に戻り、行っていなければステップＳ５３に進む。ステップＳ５３では、必須故障が並列に設定される。ステップＳ５４では、ステップＳ５３で設定された故障に対して、故障シミュレーションが行われる。ステップＳ５５では、ステップＳ５４で行った故障シミュレーションの結果を元に故障伝搬経路が決定される。通常、設定された故障の伝搬経路はひとつとは限らず、複数の経路を伝搬する可能性がある。しかし、故障伝搬経路の決定では、各故障についてひとつの伝搬経路をとおして、外部出力および擬似外部出力まで故障の影響が伝搬すればよいので、ステップＳ５３で設定された故障の影響が多く伝搬している外部出力および擬似外部出力から優先的に選択し、選択された外部出力および擬似外部出力から設定した故障箇所までの経路を故障伝搬経路とする。故障の影響が多く伝搬している外部出力および擬似外部出力から優先的に処理することにより、同じ伝搬経路を多くの故障が伝搬することになり、結果的に設定された故障の検出に必要な信号値の割当が少なくなると考えられる。ステップＳ５６では後述する前方含意操作、限定後方含意操作、或いは限定正当化操作が行われ、外部入力及び擬似外部入力の値が決定される。
【００１２】
図１６は、限定後方含意操作、限定正当化操作を説明するための図であって、図１６（ａ）は限定後方含意操作を説明するための図であり、図１６（ｂ）は限定正当化操作を説明するための図である。図１７は拡張後方含意操作を説明するための図である。ここで、図１６及び図１７では、全ての図において、信号線ｄに値０が設定される場合が示されており、各図に書かれている値は、左側の値がドントケア入りテストパターンの論理値、括弧で書かれている右側の値が元のテストパターンの論理値を表している。
【００１３】
ドントケア抽出では、元のテストパターンの論理値を参照して必要な値割当が行われるため、各信号線の値はドントケア値か或いは元のテストパターンでの論理値になる。
【００１４】
図１６（ａ）を参照して、限定後方含意操作では、信号線ｄの値を０にする場合、信号線ａの値を０にするという選択しかない。このように、選択の余地がないものを「含意操作」とよぶ。
【００１５】
図１６（ｂ）を参照して、限定正当化操作では、信号線ｄの値を０にする場合、信号線ａの値を０にする又は信号線ｃの値を０にするという選択がある。このように、選択の余地があるものを「正当化操作」とよぶ。
【００１６】
図１７を参照して、詳細は後述する拡張後方含意操作は、信号線ｄの値を０にする場合、その信号線に対する入力の信号線全ての値を元のテストパターンでの論理値にする操作である。
【００１７】
図１５に戻って、ステップＳ５５で決定された故障伝搬経路上の信号線は、限定後方含意操作用のスタック（以下、「限定後方含意スタック」とよぶ。）に記憶される。また、故障伝搬経路上の信号線で信号線が複数に分岐している元の信号線は、前方含意操作用のスタック（以下、「前方含意スタック」とよぶ。）に記憶される。なお、前方含意操作は、テストパターン生成で用いられる操作と原理は同じものである。
【００１８】
ステップＳ５６では、前述したような前方含意操作、限定後方含意操作、或いは限定正当化操作が行われるが、その際には前方含意スタック、限定後方含意スタック、限定正当化スタックに記憶されている情報が使用される。
【００１９】
図１８から図２０は、図１５のステップＳ５６の処理を詳細に示したフローチャートである。
【００２０】
ステップＳ５６１では、前方含意スタックに記憶されている信号線があるか否かが確認される。空の場合にはステップＳ５６６に進み、空ではない場合にはステップＳ５６２に進む。
【００２１】
ステップＳ５６２では、前方含意スタックに記憶されている信号線が一つ選択される。ステップＳ５６３では、ステップＳ５６２で選択された信号線に対して、前方含意操作が行われる。ステップＳ５６４では、ステップＳ５６３の処理により、ステップＳ５６２で選択された信号線の出力信号値が更新されるか否かが確認される。更新不要の場合にはステップＳ５６１に戻り、更新される場合にはステップＳ５６５に進む。ステップＳ５６５では、ステップＳ５６４において出力信号値が更新されることが確認された信号線が前方含意スタックに記憶される。なお、出力信号線が外部出力又は擬似外部出力の場合は、前方含意スタックへの記憶は行われない。ステップＳ５６５の処理の後は、ステップＳ５６１に戻る。
【００２２】
ステップＳ５６６では、限定後方含意スタックに記憶されている信号線があるか否かが確認される。空の場合にはステップＳ５７４に進み、空ではない場合にはステップＳ５６７に進む。ステップＳ５６７では、限定後方含意スタックに記憶されている信号線が一つ選択される。ステップＳ５６８では、ステップＳ５６７で選択された信号線が限定後方含意操作可能か否かについて確認される。可能ではない場合にはステップＳ５７３に進み、可能な場合にはステップＳ５６９に進んでステップＳ５６７で選択された信号線に対して限定後方含意操作が行われる。ステップＳ５７０では、ステップＳ５６９の処理により、ステップＳ５６７で選択された信号値を含意した入力信号線が限定後方含意スタックに記憶される。なお、ステップＳ５６７で選択された信号値を含意した入力信号線が外部入力又は擬似外部入力の場合は、限定後方含意スタックへの記憶は行われない。ステップＳ５７１では、ステップＳ５６９の処理により、ステップＳ５６７で選択された信号値を含意した入力信号線が、又は後述するステップＳ５７６の処理により正当化した入力信号線が（図２０参照）、複数に分岐しているか否かが確認される。分岐していない場合にはステップＳ５６６に戻り、分岐している場合にはステップＳ５７２に進む。ステップＳ５７２では、ステップＳ５７１で複数に分岐しているか確認された信号線が前方含意スタックに記憶され、それに引き続く処理としてステップＳ５６１に戻る。
【００２３】
ステップＳ５７３では、ステップＳ５６７で選択された信号線が限定正当化スタックに記憶され、それに引き続く処理としてステップＳ５６６に戻る。
【００２４】
ステップＳ５７４では、限定正当化スタックに記憶されている信号線があるか否かが確認され、空の場合には処理が終了し、空ではない場合にはステップＳ５７５に進む。ステップＳ５７５では、限定正当化スタックに記憶されている信号線が一つ選択される。ステップＳ５７６では、ステップＳ５７５で選択された信号線に対して、限定正当化操作が行われる。ステップＳ５７７では、ステップＳ５７６の処理により、ステップＳ５７５で選択された信号値を正当化した入力信号線が限定後方含意スタックに記憶される。なお、ステップＳ５７５で選択された信号値を正当化した入力信号線が外部入力又は擬似外部入力の場合は、限定後方含意スタックへの記憶は行われない。これに引き続く処理としては、ステップＳ５７１に進む。
【００２５】
ところで、図１４のステップＳ８０の処理はステップＳ５０の処理と同様であり、ステップＳ５０およびＳ８０の値割当時（ステップＳ５６参照）、（ａ）限定後方含意操作、（ｂ）限定正当化操作を使用することで、元のテストパターンで検出できる故障のほとんどを検出可能なドントケア入りのテストパターンが得られる。しかし、稀に見逃される故障があり、この見逃し故障に関しては、図１４のステップＳ１１０の値割当時に、（ｂ）限定正当化操作を使用せず、（ａ）限定後方含意操作と（ｃ）拡張後方含意操作が使用される。
【００２６】
図２１は、図１４におけるステップＳ１１０での値割当処理（図１５のステップＳ５６に対応する。）を詳細に示したフローチャートである。なお、図１５のステップＳ５５に対応するステップＳ１１０内の処理では、限定後方含意スタックに記憶していた信号線を後方含意操作用スタックに記憶し、前方含意スタックへの記憶は行われないものとしている。
【００２７】
ステップＳ１１０１では、後方含意スタックに記憶されている信号線があるか否かが確認される。空の場合には処理が終了し、空ではない場合にはステップＳ１１０２に進む。ステップＳ１１０２では、後方含意スタックに記憶されている信号線が一つ選択される。ステップＳ１１０３では、ステップＳ１１０２で選択された信号線に故障の影響が伝搬しているか否かが確認される。伝搬していることが確認された場合にはステップＳ１１０６に進み、伝搬していることが確認されない場合にはステップＳ１１０４に進む。ステップＳ１１０４では、ステップＳ１１０２で選択された信号線に対して、限定後方含意操作が行われる。ステップＳ１１０５では、ステップＳ１１０４の処理により、ステップＳ１１０２で選択された信号値を含意した入力信号線が後方含意スタックに記憶される。なお、ステップＳ１１０２で選択された信号値を含意した入力信号線が外部入力又は擬似外部入力の場合は行われない。ステップＳ１１０６では、ステップＳ１１０２で選択された信号線に対して、拡張後方含意操作が行われる。ステップＳ１１０７では、ステップＳ１１０４の処理により、ステップＳ１１０２で選択された信号値を含意した入力信号線が後方含意スタックに記憶される。なお、ステップＳ１１０２で選択された信号値を含意した入力信号線が外部入力又は擬似外部入力の場合は、後方含意スタックへの記憶は行われない。
【００２８】
【非特許文献１】S.  Kajihara  and  K.  Miyase,“On  Identifying  Don't  Care  Inputs  of  Test  Patterns  for  Combinational  Circuits”，Proc.  Of  Int'l  Conf.  on  Computer-Aided  Design，pp.364-369，2001.
【非特許文献２】K.  Miyase  et  al.,  "Don't-Care  Identification  on  Specific  Bits  of  Test  Patterns"，Proc.  Of  Int'l  Conf.  on  Computer  Design，pp.194-199，2002.
【発明の開示】
【発明が解決しようとする課題】
【００２９】
ところで、ＬＳＩの大規模化・高速化・微細化に伴い、これまでにはなかったテストへの様々な要求や問題が生じてきている。例えば、単一縮退故障に対して生成されたテストパターンでは検出できない遅延故障などの他の故障モデルへの対応、テストデータ量やテスト時間の削減、テスト時の消費電力の低減が挙げられる。このような問題等は、ドントケアの数が多いほど解決される可能性が高い。
【００３０】
しかしながら、従来の方法では、図１６に示すとおり、（ａ）限定後方含意操作、（ｃ）拡張後方含意操作では値が一意に決定するが、（ｂ）限定正当化操作では選択の余地がある。そのため、（ｂ）限定正当化操作を用いた場合、図１４のステップＳ５０およびＳ８０内の値割当の結果、得られるドントケア入りのテストパターンはドントケア数が最多のものとはいえない。
【００３１】
ゆえに、本発明の目的は、論理回路に対するテストパターンにおける外部入力値に含まれるドントケア値の数を多くし、テストパターンの最適化を図ってテスト時の消費電力の削減等を実現可能な抽出方法を提供することである。
【課題を解決するための手段】
【００３２】
本発明は、論理回路に対するテストパターンにおける外部入力値に含まれる確定値を抽出する方法であって、選択手段が、前記論理回路における正当化すべき所定の信号線を選択するステップと、マーク手段が、前記選択された所定の信号線を正当化するために関係がある信号線を所定の追跡規則に従ってマークするステップと、割当手段が、前記マークされた信号線のうち外部入力信号線から前記選択された所定の信号線までの論理回路の信号線に対して適用される論理関数であって前記選択された所定の信号線を正当化するための所定の演算規則に従う論理関数を割り当てるステップと、演算手段が、前記割り当てられた論理関数を用いた従属問題を解いて前記外部入力値に含まれる確定値の個数が最小となる信号値の組み合わせを求めるステップと、を含む。
【００３３】
これにより、外部入力値に含まれる確定値の個数が最小となる信号値の組み合わせを求めることができ、言い換えればドントケア値の個数が最大となる信号値の組み合わせを求めることができる。
【００３４】
なお、上記選択される所定の信号線が単数の場合には割り当てられた論理関数の従属問題を解けばよいが、上記選択される所定の信号線が複数の場合にはそれぞれに対して割り当てられた論理関数の積によって定まる論理関数の従属問題を解けばよい。
【００３５】
また、上記発明は論理回路に対するテストパターンにおける外部入力値に含まれる確定値を抽出する方法としているが、論理回路に対するテストパターンにおける外部入力値に含まれるドントケア値を抽出する方法発明として捉えなおしてもよく、テストパターン生成方法という方法発明として捉えなおしてもよい。
【００３６】
さらに、本発明を含む上記これらの方法発明に対し、その方法をコンピュータに実行させることが可能なプログラムという発明として捉えなおしてもよく、そのプログラムを記録した記録媒体という発明として捉えなおしてもよい。
【００３７】
さらに、本発明を含む上記これらの方法発明ではなく、装置発明として捉えなおしてもよい。
【発明の効果】
【００３８】
本発明によれば、外部入力値に含まれる確定値の個数が最小となる信号値の組み合わせを求めることができ、言い換えればドントケア値の個数が最大となる信号値の組み合わせを求めることができる。それにより、単一縮退故障の検出は保証したうえで、テストベクトルの統合によるテスト圧縮、テストパターンの符号化やＬＦＳＲを用いたテストパターン発生によるテスト圧縮、テスト時の消費電力の削減、単一縮退故障以外の故障検出能力の向上、精確な故障位置指摘等において、その効果を最大限に引き出すテストパターンを求めることができる。
【発明を実施するための最良の形態】
【００３９】
図１は本発明の実施の形態にかかるテストパターン生成装置を示したブロック図であり、図２は図１のドントケア入りテストパターン抽出部の内部構成を示した図である。
【００４０】
テストパターン生成装置１は、処理部３と、メモリ部５とを備える。処理部３は、ネットリスト読込み部７と、初期故障リスト生成部９と、検出目標故障リスト選択部１１と、故障シミュレーション部１３と、ドントケア入りテストパターン抽出部１５と、テストパターン読込み部１７とを備える。
【００４１】
図２に示すようにドントケア入りテストパターン抽出部１５は確定値抽出部１５１を備え、確定値抽出部１５１は、選択部１５１１と、マーク部１５１２と、割当部１５１３と、演算部１５１４とを備える。
【００４２】
図１に戻って、メモリ部５は、回路情報部１９と、故障リスト部２１と、ドントケア入りテストパターン部２３と、テストパターン部２５とを備える。
【００４３】
テストパターン生成装置１は、データ記憶装置２７との間においてデータ通信を行え得る。具体的には、データ記憶装置２７に記憶されているネットリストを示すデータが処理部３のネットリスト読込み部７により読み込まれ、データ記憶装置２７に記憶されているテストパターンを示すデータが処理部３のテストパターン読込み部１７により読み込まれ、処理部３のドントケア入りテストパターン抽出部１５が抽出したドントケア抽出テストパターンを示すデータがデータ記憶装置２７に記憶される。ネットリスト読込み部７から回路情報部１９には読み込まれたネットリストを示すデータが送られ、回路情報部１９には回路情報が蓄積され、その回路情報が初期故障リスト生成部９及び故障シミュレーション部１３に送られる。初期故障リスト生成部９で生成された初期故障リストを示すデータは故障リスト部２１に送られる。故障リスト部２１は、検出目標故障リスト選択部１１及び故障シミュレーション部１３とデータ交換をして故障リストを更新するとともに、故障リストを示すデータをドントケア入りテストパターン抽出部１５に送る。また、テストパターン読込み部１７で読み込まれたテストパターンを示すデータは、テストパターン部２５に送られ、それからさらにドントケア入りテストパターン抽出部１５及び故障シミュレーション部１３に送られる。ドントケア入りテストパターン抽出部１５は、テストパターン部２５から受け取ったテストパターンについての情報と故障リスト部２１から受け取った故障リストについての情報から抽出したドントケア入りテストパターンを示すデータをドントケア入りテストパターン部２３に送る。故障シミュレーション部１３はこのドントケア入りテストパターン部２３からのドントケア入りテストパターンを示すデータも受け取っており、上記した他の入力されたデータをも用いてシミュレーションを実行する。なお、テストパターン生成装置１は、入出力制御装置２９を介して入力装置３１からのデータ入力を受けることができ、入出力制御装置２９を介して出力装置３３に対してデータ出力を行える。
【００４４】
図３から図５は、本発明の実施の形態にかかる抽出方法を説明するためのフローチャートである。
【００４５】
図３から図５は、図１８から図２０に対応しており、図１９及び図２０に示すステップＳ５７３以降の処理に代えてステップＳＴ５７３以降の処理が図４及び図５では採用されている。なお、以下の図３から図５に示す処理説明において、ステップＳ５６１からステップＳ５７２までの処理は共通であるため説明を省略する。
【００４６】
ステップＳＴ５７３とステップＳＴ５７４の処理は図１９のステップＳ５７３と図２０のステップＳ５７４と同様であるが、ステップＳＴ５７４において正当化が必要な信号線を記憶するスタック（以下、「正当化スタック」とよぶ。）に記憶されている信号線があるか否かが確認される。空の場合にはステップＳＴ５７８に進み、空ではない場合にはステップＳＴ５７５に進む。ステップＳＴ５７５では、図２の選択部１５１１により正当化スタックに記憶されている信号線が一つ選択される。ステップＳＴ５７６では、図２のマーク部１５１２により、ステップＳＴ５７５で選択された信号線を正当化するのに関係のある信号線がマークされる。ステップＳＴ５７７では、割当部１５１３により、ステップＳＴ５７５で選択された信号線を正当化する論理関数が作成されて割り当てられる。この論理関数は、マークされた信号線のうち外部入力信号線から選択された信号線までの論理回路の信号線に対して適用される論理関数であって、選択された信号線を正当化するための所定の演算規則に従って割り当てられたものである。そして、ステップＳＴ５７７の処理に引き続く処理はステップＳＴ５７４の処理であり、このループ処理が行われた結果、正当化スタックが空であると確認されるとステップＳＴ５７８では、ステップＳＴ５７７で作成された各信号線を正当化する論理関数の積をとった論理関数が作成されて割り当てられる。そして、ステップＳＴ５７９では、図２の演算部１５１４により、ステップＳＴ５７８で作成された論理関数の従属問題が解かれる。
【００４７】
図６は、図５のステップＴＳ５７６の処理を詳細に示したフローチャートである。図７は上記マークに使われる追跡規則の一例を示した図である。
【００４８】
図５のステップＳＴ５７６では、ステップＳＴ５７５で選択された信号線を正当化するために関係がある信号線を所定の追跡規則に従ってマークするため、入力側に向かって追跡を行う。ここでの追跡規則は図７のようなものであり、図中に書かれている値は元のテストパターンの論理値を表している。
【００４９】
図７に示すように、基本的には、追跡規則は（ａ）出力値が制御されているとき、（ｂ）出力値が制御されていないときに分けられる。ここで、出力値が制御されているときとは、あるゲートにおいて、入力値が一つでもある値ならば他の入力値に関わらず、出力値が決定する状態のことをいう。例えば、ＡＮＤゲートの場合、一つでも入力値が０ならば、出力値は０になる。このような状態を出力値が制御されているという。図７（ａ）の出力値が制御されているときは、入力が制御値の信号線がマークされる。図７の（ａ）において、ｄの出力値は０で制御されているので、入力で制御値をもっている信号線ａとｃがマークされる。一方、図７の（ｂ）の出力値が制御されていないときは、全ての入力信号線がマークされる。図７の（ｂ）において、ｄの出力値は１で制御されていないので、全ての入力信号線ａ、ｂ、ｃがマークされる。なお、ＸＯＲゲートのように出力値が制御されていないゲートやＮＯＴゲートのように出力信号線に対して、入力信号線が一つしかないゲートについては、全ての入力信号線がマークされる。つまり、（ｂ）の出力値が制御されていないときと同様な処理が行われる。
【００５０】
図６を用いて、このような追跡規則を考慮した処理を説明する。
【００５１】
ステップＳＴ５７６１では、正当化信号線が追跡スタックに格納される。追跡スタックとは、正当化に関係のある信号線を格納するためのスタックであり、格納されている信号線について、図７のような追跡規則を適用する。ステップＳＴ５７６２では、追跡スタックが空であるか否かが確認される。空の場合には処理が終了し、空ではない場合にはステップＳＴ５７６３に進み、追跡スタックに記憶されている信号線が一つ選択される。ステップＳＴ５７６４では、ステップＳＴ５７６３で選択された信号線がマークされる。ステップＳＴ５７６５では、ステップＳＴ５７６３で選択された信号線が外部入力または擬似外部入力であるか否かが確認される。外部入力または擬似外部入力である場合にはステップＳＴ５７６２に戻り、外部入力または擬似外部入力でない場合にはステップＳＴ５７６６へ進む。ステップＳＴ５７６６では、ステップＳＴ５７６３で選択された信号線の値が制御されているか否かが確認される。制御されている場合にはステップＳＴ５７６８に進み、制御されていない場合にはステップＳＴ５７６７に進む。ステップＳＴ５７６７では、ステップＳ５７６３で選択された信号線の全入力信号線が追跡スタックに格納される。ステップＳ５７６８では、ステップＳ５７６４で選択された信号線の入力信号線のうち、信号値が制御値である信号線が追跡スタックに格納される。
【００５２】
図８は、正当化信号線がｌの時に図７の追跡規則に従って図６のフローを適用したときの例を示した図であり、結果として信号線ｂ、ｃ、ｅ、ｇ、ｈ、ｊ、ｌがマークされる。具体的には、以下のような処理となる。ステップＳＴ５７６１において追跡スタックに信号線ｌが格納される。ステップＳＴ５７６２において追跡スタックに信号線ｌが格納されているため、空でないことが確認される。ステップＳＴ５７６３において追跡スタックから信号線ｌが選択される。ステップＳＴ５７６４において信号線ｌがマークされる。ステップＳＴ５７６５において信号線ｌが外部入力および擬似外部入力でないことが確認される。ステップＳＴ５７６６において信号線ｌの値０は制御されていることが確認される。ステップＳＴ５７６８において信号線ｌの入力信号線ｅおよびｊが制御値であるため、信号線ｅ、ｊが追跡スタックに格納される。ステップＳＴ５７６２において追跡スタックに信号線ｅ、ｊが格納されているため、空でないことが確認される。ステップＳＴ５７６３において追跡スタックから信号線ｅが選択される。ステップＳＴ５７６４において信号線ｅがマークされる。ステップＳＴ５７６５において信号線ｅが外部入力であることが確認される。ステップＳＴ５７６２において追跡スタックに信号線ｊが格納されているため、空でないことが確認される。ステップＳＴ５７６３において追跡スタックから信号線ｊが選択される。ステップＳＴ５７６４において信号線ｊがマークされる。ステップＳＴ５７６５において信号線ｊが外部入力および擬似外部入力でないことが確認される。ステップＳＴ５７６６において信号線ｊの値０はＯＲゲートの出力であり、ｇ，ｈによって制御されていないことが確認される。ステップＳＴ５７６７において信号線ｊの全入力信号線ｇおよびｈが追跡スタックに格納される。以上のような操作を繰り返すことにより、信号線ｂ、ｃ、ｅ、ｇ、ｈ、ｊ、ｌがマークされる。
【００５３】
図９は、図５のステップＳＴ５７７の詳細を示すフローチャートである。図１０は前述した論理関数の割当に使われる演算規則の一例を示した図である。
【００５４】
図５のステップＳＴ５７７では、ステップＳＴ５７５で選択された信号線を正当化するために確定しなければならない外部出力および擬似外部出力の組合せを判定する論理関数を求めるため、ステップＳＴ５７６でマークされた外部入力および擬似外部入力からＳ５７５で選択された信号線までの集合演算が行われる。ここでの演算規則は、図１０のようになる。図中に書かれている値は、元のテストパターンの論理値を表している。図中の太線の信号線は、図５のステップＳＴ５７６でマークされた信号線を表している。また、Ｌａという表記は、入力側から図１０の演算規則により信号線ａに伝搬されてきた要素を表す。
【００５５】
図１０に示すように、基本的に、演算規則は、（ａ）出力値が制御されているとき、（ｂ）出力値が制御されていないときにわけられる。図１０（ａ）の出力値が制御されているときは、マークされておりかつ制御値をもつ入力信号線に伝搬している要素の和演算が行われる。図１０（ａ）において、ｄの出力値は０で制御されているので、マークされておりかつ制御値をもっている入力信号線ａとｃに伝搬している要素ＬａとＬｃの和がとられる。一方、図１０（ｂ）の出力値が制御されていないときは、マークされている全入力信号線に伝搬している要素の積演算が行われる。図１０（ｂ）において、ｄの出力値は１で制御されていないので、マークされている入力信号線ａ、ｂ、ｃに伝搬している要素ＬａとＬｂとＬｃの積がとられる。なお、ＸＯＲゲートのように出力値が制御されないゲートやＮＯＴゲートのように出力信号線に対して入力信号線が１つしかないゲートについては、マークされている全入力信号線に伝搬している要素の積演算が行われる。つまり、（ｂ）の出力値が制御されていないときと同じ処理が行われる。
【００５６】
図９を用いて、このような演算規則を考慮した処理について説明する。
【００５７】
ステップＳＴ５７７１では、図５のステップ５７６によりマークされた外部入力および擬似外部入力の要素がその信号線自身とされる。ステップＳＴ５７７２では、図５のステップＳＴ５７６によりマークされた外部入力および擬似外部入力の出力でマークがある信号線がイベントリストに登録される。ステップＳＴ５７７３では、イベントリストが空であるか否かが確認される。空である場合にはステップＳＴ５７７９に進み、空ではない場合にはステップＳＴ５７７４に進む。ステップＳＴ５７７４では、イベントリスト順に登録されている適当な信号線が一つ選択される。信号線は、外部入力および擬似外部入力に近いものから順番に選択される。ステップＳＴ５７７５では、ステップＳＴ５７７４で選択された信号線の値が制御されているか否かが確認される。制御されている場合にはステップＳＴ５７７７に進み、制御されていない場合にはステップＳＴ５７７６に進む。ステップＳＴ５７７６では、ステップＳＴ５７７４で選択された信号線の入力信号線のうちマークがある全信号線に伝搬している要素の積集合がとられる。ステップＳＴ５７７７では、ステップＳＴ５７７４で選択された信号線の入力信号線のうちマークがあり制御値をもつ全信号線に伝搬している要素の和集合がとられる。ステップＳＴ５７７８では、ステップＳＴ５７７４で選択された信号線の出力信号線のうちマークがある全信号線がインベントリストへ登録される。ステップＳＴ５７７９では、正当化したい信号線に伝搬している要素の和集合がひとつの論理関数として記憶され、処理が終了する。
【００５８】
図１１は、正当化信号線がｌの時に、図１０の演算規則に従い、図９のフローを適用したときの例を説明するための図であり、結果として得られる論理関数は、Ｆl=（ｂｃ）v（ｅ）である。具体的には、以下のような処理となる。ステップＳＴ５７７１において、マークがある外部入力線ｂとｃとｅに自分自身Ｌｂ＝｛ｂ｝、Ｌｃ＝｛ｃ｝、Ｌｅ＝｛ｅ｝が記憶される。ステップＳＴ５７７２において、マークがある外部入力線ｂとｃとｅの出力でマークがある信号線ｇ、ｈ、ｌがベントリストに登録される。ステップＳＴ５７７３において、信号線ｇ、ｈ、ｌが登録されているため、空でないことが確認される。ステップＳＴ５７７４において、イベントリストに登録されている信号線のうち外部入力に近い信号線ｇが選択される。ステップＳＴ５７７５において、信号線ｇは信号線ｂが枝分かれしており、出力値が制御されていないと確認される。ステップＳＴ５７７６において、選択信号線ｇの入力信号線でマークがある信号線ｂに伝搬している要素Ｌｂ＝｛ｂ｝の積集合がとられ、Ｌｇ＝｛ｂ｝とする。選択信号線ｇの出力でマークがある信号線ｊがイベントリストへ登録される。ステップＳＴ５７７３において、信号線ｈ、ｊ、ｌが登録されているため、空でないことが確認される。ステップＳＴ５７７４において、イベントリストに登録されている信号線のうち外部入力に近い信号線ｈが選択される。ステップＳＴ５７７５において、信号線ｈはＡＮＤゲートの出力で値が０なので、制御されていると確認される。ステップＳＴ５７７７において、選択信号線ｈの入力信号線でマークがあり制御値をもつ信号線ｃに伝搬している要素Ｌｃ＝｛ｃ｝の和集合がとられ、Ｌｈ＝｛ｃ｝とする。以上のような操作を繰り返すことにより、正当化信号線ｌに伝搬している要素はＬｌ＝｛ｂｃ、ｅ｝となる。ステップＳＴ５７７９において、正当化信号線ｌに伝搬している要素Ｌｌ＝｛ｂｃ、ｅ｝の和演算が行われ、論理関数Ｆl=（ｂｃ）v（ｅ）が得られる。ここで、得られる論理関数を正当化積和形論理関数とよぶ。正当化積和形論理関数ＦについてＦ＝１とする信号線の組合せが、正当化したい信号線を正当化するために設定必要な信号線となる。この例の場合、Ｆｌ=（ｂｃ）v（ｅ）＝１となるのは、（ｂ，ｃ）＝（１，１）または（ｅ）＝（１）なので、外部入力ｂ，ｃまたは外部入力ｅを元の値、つまり、（ｂ，ｃ）＝（０，０）または（ｅ）＝（０）と設定することで、信号線ｌを値０に正当化することができる。このことにより、信号線ｌを正当化するために必要な確定値の数を最小とする割当は、（ｅ）＝（０）とすればよいことがわかる。
【００５９】
図１２は、図１１に示した例示の場合（正当化する信号線が１つの場合）と異なり、複数の正当化する信号線が存在する場合において、図１０の演算規則に従い、図９のフローを適用したときの例を説明するための図である。ここでの正当化する信号線はｋ、ｌと複数存在している。正当化する信号線ｋおよびｌのそれぞれに対して、図５のステップＳ５７５からステップＳＴ５７７が適用される。その結果、それぞれの正当化積和形論理関数が下記のように求まる。
【００６０】
信号線ｋを正当化する正当化積和形論理関数Ｆｋ＝（ａ）v（ｂ）
信号線ｌを正当化する正当化積和形論理関数Ｆｌ＝（ｂｃ）v（ｅ）
【００６１】
正当化する信号線全ての正当化積和形論理関数の積をとったものを正当化積和積形論理関数とよぶ。この例の場合の正当化積和積形論理関数は、Ｆ＝（（ａ）v（ｂ））・（（ｂｃ）v（ｅ））であり、Ｆ=１を満たす入力組合せを列挙することにより、複数の信号線を正当化するのに必要な確定値の数を最小とする外部入力の割当を求めることができる。
【００６２】
なお、正当化積和積形論理関数を解く方法としては、ＢＤＤ（binary  decision  diagram）の他、真理値表を作成して調べる方法、ＳＡＴ-solver（Boolean  Satisfiablity  solver）を用いた方法などが考えられる。そして、Ｆ＝（（ａ）v（ｂ））・（（ｂｃ）v（ｅ））＝１となる最小の組合せは（ｂ，ｃ）＝（１，１）なので、外部入力ｂ、ｃに元の値、つまり、（ｂ，ｃ）＝（０，０）を設定することで、信号線ｋを値１に、信号線ｌを値０に正当化することができる。
【００６３】
このように、外部入力値に含まれる確定値の個数が最小となる信号値の組み合わせを求めることができ、言い換えればドントケア値の個数が最大となる信号値の組み合わせを求めることができる。それにより、単一縮退故障の検出は保証したうえで、テストベクトルの統合によるテスト圧縮、テストパターンの符号化やＬＦＳＲを用いたテストパターン発生によるテスト圧縮、テスト時の消費電力の削減、単一縮退故障以外の故障検出能力の向上、精確な故障位置指摘等において、その効果を最大限に引き出すテストパターンを求めることができる。具体的には、例えば以下のことが効果として挙げられる。
【００６４】
図１３には、テストベクトルの統合によるテスト圧縮の例が示されている。以下、具体的に説明する。図１３（ａ）のテストベクトル番号の列がそのテストベクトル番号を、元のテストベクトルの列が０と１で埋められた元のテストベクトルを、ドントケア入りテストベクトルの列が元のテストテストパターンに対して、ドントケア抽出をしたときに得られるテストベクトルを表している。また、図中のＸはドントケアを表している。ドントケア部分は、値が０と１どちらでもいいので、できるだけテストベクトル同士を圧縮するようにする。例えば、図１３（ａ）におけるテストベクトル番号ｔ１のテストベクトル１Ｘ１０１とｔ２のテストベクトル１０ＸＸ１は、圧縮されたテストベクトル（圧縮テストベクトルとよぶ）１０１１１に圧縮可能である。このような圧縮を行うと、図１３（ａ）のドントケア入りテストパターンから図１３（ｂ）の圧縮されたテストパターンが得られる。これは、元のテストパターンでは、７個のテストベクトルで検出できる故障が、圧縮テストパターンでは、４個のテストベクトルで検出できることを意味する。この例のように、ドントケアを利用して、テストベクトルの圧縮を行うことにより、テストデータ量の削減やテスト時間の削減が期待できる。
【００６５】
また、図１３に示した場合のほか、ハフマン符号やランレングス符号などのデータ圧縮方法を用いて、元のテストパターンを符号化し、圧縮されたデータをデコードする回路を元の回路に付加し、テストデータ量を削減する方法があるが、元のテストパターンに対して、ドントケアを抽出し、データ圧縮が最も有効となるように、ドントケア部に０と１を再割当することにより、さらなるテストデータ量の削減が期待できる。さらに、ドントケア抽出されたテストパターンに０または１を再割当することにより、テスト時の消費電力の低減するテストパターン、単一縮退故障以外の故障検出能力の向上するテストパターン、精確な故障位置指摘が可能なテストパターンなどを生成できる効果がある。
【図面の簡単な説明】
【００６６】
【図１】本発明の実施の形態にかかるテストパターン生成装置を示したブロック図である。
【図２】図１のドントケア入りテストパターン抽出部の内部構成を示した図である。
【図３】本発明の実施の形態にかかる抽出方法を説明するための第１のフローチャートである。
【図４】本発明の実施の形態にかかる抽出方法を説明するための第２のフローチャートである。
【図５】本発明の実施の形態にかかる抽出方法を説明するための第３のフローチャートである。
【図６】図５のステップＴＳ５７６の処理を詳細に示したフローチャートである。
【図７】マークに使われる追跡規則の一例を示した図である。
【図８】正当化信号線がｌの時に図７の追跡規則に従って図６のフローを適用したときの例を示した図である。
【図９】図５のステップＳＴ５７７の詳細を示すフローチャートである。
【図１０】論理関数の割当に使われる演算規則の一例を示した図である。
【図１１】正当化信号線がｌの時に、図１０の演算規則に従い、図９のフローを適用したときの例を説明するための図である。
【図１２】図１１に示した例示の場合（正当化する信号線が1つの場合）と異なり、複数の正当化する信号線が存在する場合において、図１０の演算規則に従い、図９のフローを適用したときの例を説明するための図である。
【図１３】本発明の効果の一例を説明するための図である。
【図１４】従来のドントケア抽出処理を含んだテストパターン抽出処理と故障シミュレーション処理のフローチャートである。
【図１５】図１４のステップＳ５０の処理を詳細に示したフローチャートである。
【図１６】限定後方含意操作、限定正当化操作を説明するための図であって、図１６（ａ）は限定後方含意操作を説明するための図であり、図１６（ｂ）は限定正当化操作を説明するための図である。
【図１７】拡張後方含意操作を説明するための図である。
【図１８】図１５のステップＳ５６の処理を詳細に示した第１のフローチャートである。
【図１９】図１５のステップＳ５６の処理を詳細に示した第２のフローチャートである。
【図２０】図１５のステップＳ５６の処理を詳細に示した第３のフローチャートである。
【図２１】図１４におけるステップＳ１１０での値割当処理（図１５のステップＳ５６に対応する。）を詳細に示したフローチャートである
【図１】
2006126027.tif 000003
【図２】
2006126027.tif 000004
【図３】
2006126027.tif 000005
【図４】
2006126027.tif 000006
【図５】
2006126027.tif 000007
【図６】
2006126027.tif 000008
【図７】
2006126027.tif 000009
【図８】
2006126027.tif 000010
【図９】
2006126027.tif 000011
【図１０】
2006126027.tif 000012
【図１１】
2006126027.tif 000013
【図１２】
2006126027.tif 000014
【図１３】
2006126027.tif 000015
【図１４】
2006126027.tif 000016
【図１５】
2006126027.tif 000017
【図１６】
2006126027.tif 000018
【図１７】
2006126027.tif 000019
【図１８】
2006126027.tif 000020
【図１９】
2006126027.tif 000021
【図２０】
2006126027.tif 000022
【図２１】
2006126027.tif 000023