本発明は、抽出装置、抽出方法及びプログラムに関し、特に論理回路に対するテストパターンにおける外部入力値に含まれる確定値を抽出する装置等に関する。
通常、製造されたLSIのチップに対しては、出荷前にそのチップが不良品でないことが確認され、良品と判定されたものは市場へ出荷され、不良品と判定されたものは廃棄されるという出荷テストが行われる。出荷テストで行われるテストのひとつとして、LSIテスタを用いて、LSIの外部入力ピンから値を印加して、外部出力ピンでの応答値が正しいか否かを判定するというものがある。このとき外部入力ピンに印加する値は、一般に自動テストパターン生成と呼ばれるツールで作成されたテストパターンが使用される。これまでは、主に回路中の単一縮退故障を仮定し、テストパターン生成が行われていた。ここで、単一縮退故障とは、実際にLSI中におこる物理的欠陥をモデル化したもののひとつで、論理回路中の一箇所のみで論理回路を構成する論理ゲートの入出力信号線の値が0または1に固定する故障をいう。
テストパターン生成時にはLSIのテスト時に入力する値が0でも1でもよいドントケアの信号値があるものの、LSIの検査を行う際はドントケアの信号値部分が0か1で埋められたテストパターンが使用される。そのため、通常、テストパターン生成において出力されるテストパターンは、0と1で埋められており、ドントケアは含まれない。
そして、テストパターンから故障検出率を低下させることなくドントケアを抽出する方法についての技術も開示されている(非特許文献1、非特許文献2参照)。以下、非特許文献1に記載されている技術を説明する。
図14は、従来のドントケア抽出処理を含んだテストパターン抽出処理と故障シミュレーション処理についてのフローチャートである。
ステップS10では、ドントケア入りテストパターンの初期化が行われる。テストパターンの初期状態では全ての信号値がドントケアとされる。ステップS20では、テストパターン生成において出力されたテストパターン(以下、「元のテストパターン」とよぶ。なお、ここでの元のテストパターンは0と1とで埋められたテストパターンである。)が使用され、故障シミュレーションが実行される。通常の故障シミュレーションでは、テストパターン中のテストベクトル順に、故障が設定され、シミュレーションが行われる。1つのテストベクトルにおいて、1つの故障が1回検出されるとそれ以降のテストベクトルでは、その故障に関してシミュレーションは行われず、故障リストから削除される(以下、「故障ドロップ」とよぶ。)。但し、このステップS20では、2回検出された後、故障ドロップが行われる。ステップS30では、ステップS20の故障シミュレーションにおいて、1回以上検出された故障のリストが作成される。なお、ドントケア入りテストパターン抽出の目的は、ここで作成された故障リストを全て検出するドントケア入りのテストパターンを元のテストパターンから抽出する処理を行うことであるが、そのために以下のような処理をここでは実行することにしている。
ステップS40では、ステップS20の処理で1回しか検出されなかった故障(以下、「必須故障」とよぶ。)のリストが抽出される。ステップS50では、ステップS40で抽出された必須故障に対して、ドントケア入りのテストパターンが抽出される。ステップS60では、ステップS50で作成されたドントケア入りテストパターンが使用されて故障シミュレーションが実行される。
ステップS70では、ステップS60で検出されなかった故障(以下、「未検出故障」とよぶ。)のリストが抽出される。ステップS80では、ステップS70で抽出された未検出故障に対して、ドントケア入りのテストパターンが抽出される。ステップS90では、ステップS80で作成されたドントケア入りテストパターンが使用されて故障シミュレーションが実行される。
ステップS100では、ステップS90で検出されなかった故障(以下、「見逃し故障」とよぶ。)のリストが抽出される。ステップS110では、ステップS100で抽出された見逃し故障に対して、ドントケア入りのテストパターンが抽出される。ステップS120では、ステップS110で作成されたドントケア入りテストパターンが使用されて故障シミュレーションが実行される。
図15は、図14のステップS50の処理を詳細に示したフローチャートである。
ステップS51では、全テストベクトルについて処理を行ったか否かが確認される。行っていれば処理は終了し、行っていなければステップS52に進む。ステップS52では、現在のテストベクトルにおける全必須故障に対して処理を行ったか否かが確認される。行っていればステップS51に戻り、行っていなければステップS53に進む。ステップS53では、必須故障が並列に設定される。ステップS54では、ステップS53で設定された故障に対して、故障シミュレーションが行われる。ステップS55では、ステップS54で行った故障シミュレーションの結果を元に故障伝搬経路が決定される。通常、設定された故障の伝搬経路はひとつとは限らず、複数の経路を伝搬する可能性がある。しかし、故障伝搬経路の決定では、各故障についてひとつの伝搬経路をとおして、外部出力および擬似外部出力まで故障の影響が伝搬すればよいので、ステップS53で設定された故障の影響が多く伝搬している外部出力および擬似外部出力から優先的に選択し、選択された外部出力および擬似外部出力から設定した故障箇所までの経路を故障伝搬経路とする。故障の影響が多く伝搬している外部出力および擬似外部出力から優先的に処理することにより、同じ伝搬経路を多くの故障が伝搬することになり、結果的に設定された故障の検出に必要な信号値の割当が少なくなると考えられる。ステップS56では後述する前方含意操作、限定後方含意操作、或いは限定正当化操作が行われ、外部入力及び擬似外部入力の値が決定される。
図16は、限定後方含意操作、限定正当化操作を説明するための図であって、図16(a)は限定後方含意操作を説明するための図であり、図16(b)は限定正当化操作を説明するための図である。図17は拡張後方含意操作を説明するための図である。ここで、図16及び図17では、全ての図において、信号線dに値0が設定される場合が示されており、各図に書かれている値は、左側の値がドントケア入りテストパターンの論理値、括弧で書かれている右側の値が元のテストパターンの論理値を表している。
ドントケア抽出では、元のテストパターンの論理値を参照して必要な値割当が行われるため、各信号線の値はドントケア値か或いは元のテストパターンでの論理値になる。
図16(a)を参照して、限定後方含意操作では、信号線dの値を0にする場合、信号線aの値を0にするという選択しかない。このように、選択の余地がないものを「含意操作」とよぶ。
図16(b)を参照して、限定正当化操作では、信号線dの値を0にする場合、信号線aの値を0にする又は信号線cの値を0にするという選択がある。このように、選択の余地があるものを「正当化操作」とよぶ。
図17を参照して、詳細は後述する拡張後方含意操作は、信号線dの値を0にする場合、その信号線に対する入力の信号線全ての値を元のテストパターンでの論理値にする操作である。
図15に戻って、ステップS55で決定された故障伝搬経路上の信号線は、限定後方含意操作用のスタック(以下、「限定後方含意スタック」とよぶ。)に記憶される。また、故障伝搬経路上の信号線で信号線が複数に分岐している元の信号線は、前方含意操作用のスタック(以下、「前方含意スタック」とよぶ。)に記憶される。なお、前方含意操作は、テストパターン生成で用いられる操作と原理は同じものである。
ステップS56では、前述したような前方含意操作、限定後方含意操作、或いは限定正当化操作が行われるが、その際には前方含意スタック、限定後方含意スタック、限定正当化スタックに記憶されている情報が使用される。
図18から図20は、図15のステップS56の処理を詳細に示したフローチャートである。
ステップS561では、前方含意スタックに記憶されている信号線があるか否かが確認される。空の場合にはステップS566に進み、空ではない場合にはステップS562に進む。
ステップS562では、前方含意スタックに記憶されている信号線が一つ選択される。ステップS563では、ステップS562で選択された信号線に対して、前方含意操作が行われる。ステップS564では、ステップS563の処理により、ステップS562で選択された信号線の出力信号値が更新されるか否かが確認される。更新不要の場合にはステップS561に戻り、更新される場合にはステップS565に進む。ステップS565では、ステップS564において出力信号値が更新されることが確認された信号線が前方含意スタックに記憶される。なお、出力信号線が外部出力又は擬似外部出力の場合は、前方含意スタックへの記憶は行われない。ステップS565の処理の後は、ステップS561に戻る。
ステップS566では、限定後方含意スタックに記憶されている信号線があるか否かが確認される。空の場合にはステップS574に進み、空ではない場合にはステップS567に進む。ステップS567では、限定後方含意スタックに記憶されている信号線が一つ選択される。ステップS568では、ステップS567で選択された信号線が限定後方含意操作可能か否かについて確認される。可能ではない場合にはステップS573に進み、可能な場合にはステップS569に進んでステップS567で選択された信号線に対して限定後方含意操作が行われる。ステップS570では、ステップS569の処理により、ステップS567で選択された信号値を含意した入力信号線が限定後方含意スタックに記憶される。なお、ステップS567で選択された信号値を含意した入力信号線が外部入力又は擬似外部入力の場合は、限定後方含意スタックへの記憶は行われない。ステップS571では、ステップS569の処理により、ステップS567で選択された信号値を含意した入力信号線が、又は後述するステップS576の処理により正当化した入力信号線が(図20参照)、複数に分岐しているか否かが確認される。分岐していない場合にはステップS566に戻り、分岐している場合にはステップS572に進む。ステップS572では、ステップS571で複数に分岐しているか確認された信号線が前方含意スタックに記憶され、それに引き続く処理としてステップS561に戻る。
ステップS573では、ステップS567で選択された信号線が限定正当化スタックに記憶され、それに引き続く処理としてステップS566に戻る。
ステップS574では、限定正当化スタックに記憶されている信号線があるか否かが確認され、空の場合には処理が終了し、空ではない場合にはステップS575に進む。ステップS575では、限定正当化スタックに記憶されている信号線が一つ選択される。ステップS576では、ステップS575で選択された信号線に対して、限定正当化操作が行われる。ステップS577では、ステップS576の処理により、ステップS575で選択された信号値を正当化した入力信号線が限定後方含意スタックに記憶される。なお、ステップS575で選択された信号値を正当化した入力信号線が外部入力又は擬似外部入力の場合は、限定後方含意スタックへの記憶は行われない。これに引き続く処理としては、ステップS571に進む。
ところで、図14のステップS80の処理はステップS50の処理と同様であり、ステップS50およびS80の値割当時(ステップS56参照)、(a)限定後方含意操作、(b)限定正当化操作を使用することで、元のテストパターンで検出できる故障のほとんどを検出可能なドントケア入りのテストパターンが得られる。しかし、稀に見逃される故障があり、この見逃し故障に関しては、図14のステップS110の値割当時に、(b)限定正当化操作を使用せず、(a)限定後方含意操作と(c)拡張後方含意操作が使用される。
図21は、図14におけるステップS110での値割当処理(図15のステップS56に対応する。)を詳細に示したフローチャートである。なお、図15のステップS55に対応するステップS110内の処理では、限定後方含意スタックに記憶していた信号線を後方含意操作用スタックに記憶し、前方含意スタックへの記憶は行われないものとしている。
ステップS1101では、後方含意スタックに記憶されている信号線があるか否かが確認される。空の場合には処理が終了し、空ではない場合にはステップS1102に進む。ステップS1102では、後方含意スタックに記憶されている信号線が一つ選択される。ステップS1103では、ステップS1102で選択された信号線に故障の影響が伝搬しているか否かが確認される。伝搬していることが確認された場合にはステップS1106に進み、伝搬していることが確認されない場合にはステップS1104に進む。ステップS1104では、ステップS1102で選択された信号線に対して、限定後方含意操作が行われる。ステップS1105では、ステップS1104の処理により、ステップS1102で選択された信号値を含意した入力信号線が後方含意スタックに記憶される。なお、ステップS1102で選択された信号値を含意した入力信号線が外部入力又は擬似外部入力の場合は行われない。ステップS1106では、ステップS1102で選択された信号線に対して、拡張後方含意操作が行われる。ステップS1107では、ステップS1104の処理により、ステップS1102で選択された信号値を含意した入力信号線が後方含意スタックに記憶される。なお、ステップS1102で選択された信号値を含意した入力信号線が外部入力又は擬似外部入力の場合は、後方含意スタックへの記憶は行われない。
ところで、LSIの大規模化・高速化・微細化に伴い、これまでにはなかったテストへの様々な要求や問題が生じてきている。例えば、単一縮退故障に対して生成されたテストパターンでは検出できない遅延故障などの他の故障モデルへの対応、テストデータ量やテスト時間の削減、テスト時の消費電力の低減が挙げられる。このような問題等は、ドントケアの数が多いほど解決される可能性が高い。
しかしながら、従来の方法では、図16に示すとおり、(a)限定後方含意操作、(c)拡張後方含意操作では値が一意に決定するが、(b)限定正当化操作では選択の余地がある。そのため、(b)限定正当化操作を用いた場合、図14のステップS50およびS80内の値割当の結果、得られるドントケア入りのテストパターンはドントケア数が最多のものとはいえない。
ゆえに、本発明の目的は、論理回路に対するテストパターンにおける外部入力値に含まれるドントケア値の数を多くし、テストパターンの最適化を図ってテスト時の消費電力の削減等を実現可能な抽出方法を提供することである。
本発明は、請求項1に係る発明が、論理回路に対するテストパターンにおける外部入力値に含まれる確定値を抽出する装置であって、前記論理回路における正当化すべき所定の信号線を選択する選択手段と、前記選択された所定の信号線を正当化するために関係がある信号線を所定の追跡規則に従ってマークするマーク手段と、前記マークされた信号線のうち、外部入力信号線及びその出力となる信号線に対して、当該信号線が制御されている場合には、マークがあり制御値をもつ入力信号線に伝播している要素の和集合をとり、当該信号線が制御されていない場合には、マークがある全入力信号に伝播している要素の積集合をとり、さらに、前記和集合及び前記積集合をとる処理の終了後に、前記選択された所定の信号線に伝播している要素の和をとって正当化積和形論理関数とすることにより、外部入力信号線から前記選択された所定の信号線までの論理回路の信号線に対して論理関数を割り当てる割当手段と、前記割り当てられた論理関数を用いた従属問題を解いて前記外部入力値に含まれる確定値の個数が最小となる信号値の組み合わせを求める演算手段と、を備える。また、請求項2に係る発明は、論理回路に対するテストパターンにおける外部入力値に含まれる確定値を抽出する方法であって、選択手段が、前記論理回路における正当化すべき所定の信号線を選択するステップと、マーク手段が、前記選択された所定の信号線を正当化するために関係がある信号線を所定の追跡規則に従ってマークするステップと、割当手段が、前記マークされた信号線のうち、外部入力信号線及びその出力となる信号線に対して、当該信号線が制御されている場合には、マークがあり制御値をもつ入力信号線に伝播している要素の和集合をとり、当該信号線が制御されていない場合には、マークがある全入力信号に伝播している要素の積集合をとり、さらに、前記和集合及び前記積集合をとる処理の終了後に、前記選択された所定の信号線に伝播している要素の和をとって正当化積和形論理関数とすることにより、外部入力信号線から前記選択された所定の信号線までの論理回路の信号線に対して論理関数を割り当てるステップと、演算手段が、前記割り当てられた論理関数を用いた従属問題を解いて前記外部入力値に含まれる確定値の個数が最小となる信号値の組み合わせを求めるステップと、を含む。さらに、請求項3に係る発明は、コンピュータに、選択手段が、前記論理回路における正当化すべき所定の信号線を選択するステップと、マーク手段が、前記選択された所定の信号線を正当化するために関係がある信号線を所定の追跡規則に従ってマークするステップと、割当手段が、前記マークされた信号線のうち、外部入力信号線及びその出力となる信号線に対して、当該信号線が制御されている場合には、マークがあり制御値をもつ入力信号線に伝播している要素の和集合をとり、当該信号線が制御されていない場合には、マークがある全入力信号に伝播している要素の積集合をとり、さらに、前記和集合及び前記積集合をとる処理の終了後に、前記選択された所定の信号線に伝播している要素の和をとって正当化積和形論理関数とすることにより、外部入力信号線から前記選択された所定の信号線までの論理回路の信号線に対して論理関数を割り当てるステップと、演算手段が、前記割り当てられた論理関数を用いた従属問題を解いて前記外部入力値に含まれる確定値の個数が最小となる信号値の組み合わせを求めるステップと、を実行させて、前記論理回路に対するテストパターンにおける外部入力値に含まれる確定値を抽出するためのプログラムである。
これにより、外部入力値に含まれる確定値の個数が最小となる信号値の組み合わせを求めることができ、言い換えればドントケア値の個数が最大となる信号値の組み合わせを求めることができる。
なお、上記選択される所定の信号線が単数の場合には割り当てられた論理関数の従属問題を解けばよいが、上記選択される所定の信号線が複数の場合にはそれぞれに対して割り当てられた論理関数の積によって定まる論理関数の従属問題を解けばよい。
また、上記発明は論理回路に対するテストパターンにおける外部入力値に含まれる確定値を抽出する方法としているが、論理回路に対するテストパターンにおける外部入力値に含まれるドントケア値を抽出する方法発明として捉えなおしてもよく、テストパターン生成方法という方法発明として捉えなおしてもよい。
さらに、本発明を含む上記これらの方法発明に対し、その方法をコンピュータに実行させることが可能なプログラムという発明として捉えなおしてもよく、そのプログラムを記録した記録媒体という発明として捉えなおしてもよい。
さらに、本発明を含む上記これらの方法発明ではなく、装置発明として捉えなおしてもよい。
本発明によれば、外部入力値に含まれる確定値の個数が最小となる信号値の組み合わせを求めることができ、言い換えればドントケア値の個数が最大となる信号値の組み合わせを求めることができる。それにより、単一縮退故障の検出は保証したうえで、テストベクトルの統合によるテスト圧縮、テストパターンの符号化やLFSRを用いたテストパターン発生によるテスト圧縮、テスト時の消費電力の削減、単一縮退故障以外の故障検出能力の向上、精確な故障位置指摘等において、その効果を最大限に引き出すテストパターンを求めることができる。
図1は本発明の実施の形態にかかるテストパターン生成装置を示したブロック図であり、図2は図1のドントケア入りテストパターン抽出部の内部構成を示した図である。
テストパターン生成装置1は、処理部3と、メモリ部5とを備える。処理部3は、ネットリスト読込み部7と、初期故障リスト生成部9と、検出目標故障リスト選択部11と、故障シミュレーション部13と、ドントケア入りテストパターン抽出部15と、テストパターン読込み部17とを備える。
図2に示すようにドントケア入りテストパターン抽出部15は確定値抽出部151を備え、確定値抽出部151は、選択部1511と、マーク部1512と、割当部1513と、演算部1514とを備える。
図1に戻って、メモリ部5は、回路情報部19と、故障リスト部21と、ドントケア入りテストパターン部23と、テストパターン部25とを備える。
テストパターン生成装置1は、データ記憶装置27との間においてデータ通信を行え得る。具体的には、データ記憶装置27に記憶されているネットリストを示すデータが処理部3のネットリスト読込み部7により読み込まれ、データ記憶装置27に記憶されているテストパターンを示すデータが処理部3のテストパターン読込み部17により読み込まれ、処理部3のドントケア入りテストパターン抽出部15が抽出したドントケア抽出テストパターンを示すデータがデータ記憶装置27に記憶される。ネットリスト読込み部7から回路情報部19には読み込まれたネットリストを示すデータが送られ、回路情報部19には回路情報が蓄積され、その回路情報が初期故障リスト生成部9及び故障シミュレーション部13に送られる。初期故障リスト生成部9で生成された初期故障リストを示すデータは故障リスト部21に送られる。故障リスト部21は、検出目標故障リスト選択部11及び故障シミュレーション部13とデータ交換をして故障リストを更新するとともに、故障リストを示すデータをドントケア入りテストパターン抽出部15に送る。また、テストパターン読込み部17で読み込まれたテストパターンを示すデータは、テストパターン部25に送られ、それからさらにドントケア入りテストパターン抽出部15及び故障シミュレーション部13に送られる。ドントケア入りテストパターン抽出部15は、テストパターン部25から受け取ったテストパターンについての情報と故障リスト部21から受け取った故障リストについての情報から抽出したドントケア入りテストパターンを示すデータをドントケア入りテストパターン部23に送る。故障シミュレーション部13はこのドントケア入りテストパターン部23からのドントケア入りテストパターンを示すデータも受け取っており、上記した他の入力されたデータをも用いてシミュレーションを実行する。なお、テストパターン生成装置1は、入出力制御装置29を介して入力装置31からのデータ入力を受けることができ、入出力制御装置29を介して出力装置33に対してデータ出力を行える。
図3から図5は、本発明の実施の形態にかかる抽出方法を説明するためのフローチャートである。
図3から図5は、図18から図20に対応しており、図19及び図20に示すステップS573以降の処理に代えてステップST573以降の処理が図4及び図5では採用されている。なお、以下の図3から図5に示す処理説明において、ステップS561からステップS572までの処理は共通であるため説明を省略する。
ステップST573とステップST574の処理は図19のステップS573と図20のステップS574と同様であるが、ステップST574において正当化が必要な信号線を記憶するスタック(以下、「正当化スタック」とよぶ。)に記憶されている信号線があるか否かが確認される。空の場合にはステップST578に進み、空ではない場合にはステップST575に進む。ステップST575では、図2の選択部1511により正当化スタックに記憶されている信号線が一つ選択される。ステップST576では、図2のマーク部1512により、ステップST575で選択された信号線を正当化するのに関係のある信号線がマークされる。ステップST577では、割当部1513により、ステップST575で選択された信号線を正当化する論理関数が作成されて割り当てられる。この論理関数は、マークされた信号線のうち外部入力信号線から選択された信号線までの論理回路の信号線に対して適用される論理関数であって、選択された信号線を正当化するための所定の演算規則に従って割り当てられたものである。そして、ステップST577の処理に引き続く処理はステップST574の処理であり、このループ処理が行われた結果、正当化スタックが空であると確認されるとステップST578では、ステップST577で作成された各信号線を正当化する論理関数の積をとった論理関数が作成されて割り当てられる。そして、ステップST579では、図2の演算部1514により、ステップST578で作成された論理関数の従属問題が解かれる。
図6は、図5のステップST576の処理を詳細に示したフローチャートである。図7は上記マークに使われる追跡規則の一例を示した図である。
図5のステップST576では、ステップST575で選択された信号線を正当化するために関係がある信号線を所定の追跡規則に従ってマークするため、入力側に向かって追跡を行う。ここでの追跡規則は図7のようなものであり、図中に書かれている値は元のテストパターンの論理値を表している。
図7に示すように、基本的には、追跡規則は(a)出力値が制御されているとき、(b)出力値が制御されていないときに分けられる。ここで、出力値が制御されているときとは、あるゲートにおいて、入力値が一つでもある値ならば他の入力値に関わらず、出力値が決定する状態のことをいう。例えば、ANDゲートの場合、一つでも入力値が0ならば、出力値は0になる。このような状態を出力値が制御されているという。図7(a)の出力値が制御されているときは、入力が制御値の信号線がマークされる。図7の(a)において、dの出力値は0で制御されているので、入力で制御値をもっている信号線aとcがマークされる。一方、図7の(b)の出力値が制御されていないときは、全ての入力信号線がマークされる。図7の(b)において、dの出力値は1で制御されていないので、全ての入力信号線a、b、cがマークされる。なお、XORゲートのように出力値が制御されていないゲートやNOTゲートのように出力信号線に対して、入力信号線が一つしかないゲートについては、全ての入力信号線がマークされる。つまり、(b)の出力値が制御されていないときと同様な処理が行われる。
図6を用いて、このような追跡規則を考慮した処理を説明する。
ステップST5761では、正当化信号線が追跡スタックに格納される。追跡スタックとは、正当化に関係のある信号線を格納するためのスタックであり、格納されている信号線について、図7のような追跡規則を適用する。ステップST5762では、追跡スタックが空であるか否かが確認される。空の場合には処理が終了し、空ではない場合にはステップST5763に進み、追跡スタックに記憶されている信号線が一つ選択される。ステップST5764では、ステップST5763で選択された信号線がマークされる。ステップST5765では、ステップST5763で選択された信号線が外部入力または擬似外部入力であるか否かが確認される。外部入力または擬似外部入力である場合にはステップST5762に戻り、外部入力または擬似外部入力でない場合にはステップST5766へ進む。ステップST5766では、ステップST5763で選択された信号線の値が制御されているか否かが確認される。制御されている場合にはステップST5768に進み、制御されていない場合にはステップST5767に進む。ステップST5767では、ステップS5763で選択された信号線の全入力信号線が追跡スタックに格納される。ステップS5768では、ステップS5764で選択された信号線の入力信号線のうち、信号値が制御値である信号線が追跡スタックに格納される。
図8は、正当化信号線がlの時に図7の追跡規則に従って図6のフローを適用したときの例を示した図であり、結果として信号線b、c、e、g、h、j、lがマークされる。具体的には、以下のような処理となる。ステップST5761において追跡スタックに信号線lが格納される。ステップST5762において追跡スタックに信号線lが格納されているため、空でないことが確認される。ステップST5763において追跡スタックから信号線lが選択される。ステップST5764において信号線lがマークされる。ステップST5765において信号線lが外部入力および擬似外部入力でないことが確認される。ステップST5766において信号線lの値0は制御されていることが確認される。ステップST5768において信号線lの入力信号線eおよびjが制御値であるため、信号線e、jが追跡スタックに格納される。ステップST5762において追跡スタックに信号線e、jが格納されているため、空でないことが確認される。ステップST5763において追跡スタックから信号線eが選択される。ステップST5764において信号線eがマークされる。ステップST5765において信号線eが外部入力であることが確認される。ステップST5762において追跡スタックに信号線jが格納されているため、空でないことが確認される。ステップST5763において追跡スタックから信号線jが選択される。ステップST5764において信号線jがマークされる。ステップST5765において信号線jが外部入力および擬似外部入力でないことが確認される。ステップST5766において信号線jの値0はORゲートの出力であり、g,hによって制御されていないことが確認される。ステップST5767において信号線jの全入力信号線gおよびhが追跡スタックに格納される。以上のような操作を繰り返すことにより、信号線b、c、e、g、h、j、lがマークされる。
図9は、図5のステップST577の詳細を示すフローチャートである。図10は前述した論理関数の割当に使われる演算規則の一例を示した図である。
図5のステップST577では、ステップST575で選択された信号線を正当化するために確定しなければならない外部出力および擬似外部出力の組合せを判定する論理関数を求めるため、ステップST576でマークされた外部入力および擬似外部入力からS575で選択された信号線までの集合演算が行われる。ここでの演算規則は、図10のようになる。図中に書かれている値は、元のテストパターンの論理値を表している。図中の太線の信号線は、図5のステップST576でマークされた信号線を表している。また、Laという表記は、入力側から図10の演算規則により信号線aに伝搬されてきた要素を表す。
図10に示すように、基本的に、演算規則は、(a)出力値が制御されているとき、(b)出力値が制御されていないときにわけられる。図10(a)の出力値が制御されているときは、マークされておりかつ制御値をもつ入力信号線に伝搬している要素の和演算が行われる。図10(a)において、dの出力値は0で制御されているので、マークされておりかつ制御値をもっている入力信号線aとcに伝搬している要素LaとLcの和がとられる。一方、図10(b)の出力値が制御されていないときは、マークされている全入力信号線に伝搬している要素の積演算が行われる。図10(b)において、dの出力値は1で制御されていないので、マークされている入力信号線a、b、cに伝搬している要素LaとLbとLcの積がとられる。なお、XORゲートのように出力値が制御されないゲートやNOTゲートのように出力信号線に対して入力信号線が1つしかないゲートについては、マークされている全入力信号線に伝搬している要素の積演算が行われる。つまり、(b)の出力値が制御されていないときと同じ処理が行われる。
図9を用いて、このような演算規則を考慮した処理について説明する。
ステップST5771では、図5のステップ576によりマークされた外部入力および擬似外部入力の要素がその信号線自身とされる。ステップST5772では、図5のステップST576によりマークされた外部入力および擬似外部入力の出力でマークがある信号線がイベントリストに登録される。ステップST5773では、イベントリストが空であるか否かが確認される。空である場合にはステップST5779に進み、空ではない場合にはステップST5774に進む。ステップST5774では、イベントリスト順に登録されている適当な信号線が一つ選択される。信号線は、外部入力および擬似外部入力に近いものから順番に選択される。ステップST5775では、ステップST5774で選択された信号線の値が制御されているか否かが確認される。制御されている場合にはステップST5777に進み、制御されていない場合にはステップST5776に進む。ステップST5776では、ステップST5774で選択された信号線の入力信号線のうちマークがある全信号線に伝搬している要素の積集合がとられる。ステップST5777では、ステップST5774で選択された信号線の入力信号線のうちマークがあり制御値をもつ全信号線に伝搬している要素の和集合がとられる。ステップST5778では、ステップST5774で選択された信号線の出力信号線のうちマークがある全信号線がインベントリストへ登録される。ステップST5779では、正当化したい信号線に伝搬している要素の和集合がひとつの論理関数として記憶され、処理が終了する。
図11は、正当化信号線がlの時に、図10の演算規則に従い、図9のフローを適用したときの例を説明するための図であり、結果として得られる論理関数は、Fl=(bc)v(e)である。具体的には、以下のような処理となる。ステップST5771において、マークがある外部入力線bとcとeに自分自身Lb={b}、Lc={c}、Le={e}が記憶される。ステップST5772において、マークがある外部入力線bとcとeの出力でマークがある信号線g、h、lがベントリストに登録される。ステップST5773において、信号線g、h、lが登録されているため、空でないことが確認される。ステップST5774において、イベントリストに登録されている信号線のうち外部入力に近い信号線gが選択される。ステップST5775において、信号線gは信号線bが枝分かれしており、出力値が制御されていないと確認される。ステップST5776において、選択信号線gの入力信号線でマークがある信号線bに伝搬している要素Lb={b}の積集合がとられ、Lg={b}とする。選択信号線gの出力でマークがある信号線jがイベントリストへ登録される。ステップST5773において、信号線h、j、lが登録されているため、空でないことが確認される。ステップST5774において、イベントリストに登録されている信号線のうち外部入力に近い信号線hが選択される。ステップST5775において、信号線hはANDゲートの出力で値が0なので、制御されていると確認される。ステップST5777において、選択信号線hの入力信号線でマークがあり制御値をもつ信号線cに伝搬している要素Lc={c}の和集合がとられ、Lh={c}とする。以上のような操作を繰り返すことにより、正当化信号線lに伝搬している要素はLl={bc、e}となる。ステップST5779において、正当化信号線lに伝搬している要素Ll={bc、e}の和演算が行われ、論理関数Fl=(bc)v(e)が得られる。ここで、得られる論理関数を正当化積和形論理関数とよぶ。正当化積和形論理関数FについてF=1とする信号線の組合せが、正当化したい信号線を正当化するために設定必要な信号線となる。この例の場合、Fl=(bc)v(e)=1となるのは、(b,c)=(1,1)または(e)=(1)なので、外部入力b,cまたは外部入力eを元の値、つまり、(b,c)=(0,0)または(e)=(0)と設定することで、信号線lを値0に正当化することができる。このことにより、信号線lを正当化するために必要な確定値の数を最小とする割当は、(e)=(0)とすればよいことがわかる。
図12は、図11に示した例示の場合(正当化する信号線が1つの場合)と異なり、複数の正当化する信号線が存在する場合において、図10の演算規則に従い、図9のフローを適用したときの例を説明するための図である。ここでの正当化する信号線はk、lと複数存在している。正当化する信号線kおよびlのそれぞれに対して、図5のステップS575からステップST577が適用される。その結果、それぞれの正当化積和形論理関数が下記のように求まる。
信号線kを正当化する正当化積和形論理関数Fk=(a)v(b)
信号線lを正当化する正当化積和形論理関数Fl=(bc)v(e)
正当化する信号線全ての正当化積和形論理関数の積をとったものを正当化積和積形論理関数とよぶ。この例の場合の正当化積和積形論理関数は、F=((a)v(b))・((bc)v(e))であり、F=1を満たす入力組合せを列挙することにより、複数の信号線を正当化するのに必要な確定値の数を最小とする外部入力の割当を求めることができる。
なお、正当化積和積形論理関数を解く方法としては、BDD(binary decision diagram)の他、真理値表を作成して調べる方法、SAT-solver(Boolean Satisfiablity solver)を用いた方法などが考えられる。そして、F=((a)v(b))・((bc)v(e))=1となる最小の組合せは(b,c)=(1,1)なので、外部入力b、cに元の値、つまり、(b,c)=(0,0)を設定することで、信号線kを値1に、信号線lを値0に正当化することができる。
このように、外部入力値に含まれる確定値の個数が最小となる信号値の組み合わせを求めることができ、言い換えればドントケア値の個数が最大となる信号値の組み合わせを求めることができる。それにより、単一縮退故障の検出は保証したうえで、テストベクトルの統合によるテスト圧縮、テストパターンの符号化やLFSRを用いたテストパターン発生によるテスト圧縮、テスト時の消費電力の削減、単一縮退故障以外の故障検出能力の向上、精確な故障位置指摘等において、その効果を最大限に引き出すテストパターンを求めることができる。具体的には、例えば以下のことが効果として挙げられる。
図13には、テストベクトルの統合によるテスト圧縮の例が示されている。以下、具体的に説明する。図13(a)のテストベクトル番号の列がそのテストベクトル番号を、元のテストベクトルの列が0と1で埋められた元のテストベクトルを、ドントケア入りテストベクトルの列が元のテストテストパターンに対して、ドントケア抽出をしたときに得られるテストベクトルを表している。また、図中のXはドントケアを表している。ドントケア部分は、値が0と1どちらでもいいので、できるだけテストベクトル同士を圧縮するようにする。例えば、図13(a)におけるテストベクトル番号t1のテストベクトル1X101とt2のテストベクトル10XX1は、圧縮されたテストベクトル(圧縮テストベクトルとよぶ)10101に圧縮可能である。このような圧縮を行うと、図13(a)のドントケア入りテストパターンから図13(b)の圧縮されたテストパターンが得られる。これは、元のテストパターンでは、7個のテストベクトルで検出できる故障が、圧縮テストパターンでは、4個のテストベクトルで検出できることを意味する。この例のように、ドントケアを利用して、テストベクトルの圧縮を行うことにより、テストデータ量の削減やテスト時間の削減が期待できる。
また、図13に示した場合のほか、ハフマン符号やランレングス符号などのデータ圧縮方法を用いて、元のテストパターンを符号化し、圧縮されたデータをデコードする回路を元の回路に付加し、テストデータ量を削減する方法があるが、元のテストパターンに対して、ドントケアを抽出し、データ圧縮が最も有効となるように、ドントケア部に0と1を再割当することにより、さらなるテストデータ量の削減が期待できる。さらに、ドントケア抽出されたテストパターンに0または1を再割当することにより、テスト時の消費電力の低減するテストパターン、単一縮退故障以外の故障検出能力の向上するテストパターン、精確な故障位置指摘が可能なテストパターンなどを生成できる効果がある。
本発明の実施の形態にかかるテストパターン生成装置を示したブロック図である。
図1のドントケア入りテストパターン抽出部の内部構成を示した図である。
本発明の実施の形態にかかる抽出方法を説明するための第1のフローチャートである。
本発明の実施の形態にかかる抽出方法を説明するための第2のフローチャートである。
本発明の実施の形態にかかる抽出方法を説明するための第3のフローチャートである。
図5のステップTS576の処理を詳細に示したフローチャートである。
マークに使われる追跡規則の一例を示した図である。
正当化信号線がlの時に図7の追跡規則に従って図6のフローを適用したときの例を示した図である。
図5のステップST577の詳細を示すフローチャートである。
論理関数の割当に使われる演算規則の一例を示した図である。
正当化信号線がlの時に、図10の演算規則に従い、図9のフローを適用したときの例を説明するための図である。
図11に示した例示の場合(正当化する信号線が1つの場合)と異なり、複数の正当化する信号線が存在する場合において、図10の演算規則に従い、図9のフローを適用したときの例を説明するための図である。
本発明の効果の一例を説明するための図である。
従来のドントケア抽出処理を含んだテストパターン抽出処理と故障シミュレーション処理のフローチャートである。
図14のステップS50の処理を詳細に示したフローチャートである。
限定後方含意操作、限定正当化操作を説明するための図であって、図16(a)は限定後方含意操作を説明するための図であり、図16(b)は限定正当化操作を説明するための図である。
拡張後方含意操作を説明するための図である。
図15のステップS56の処理を詳細に示した第1のフローチャートである。
図15のステップS56の処理を詳細に示した第2のフローチャートである。
図15のステップS56の処理を詳細に示した第3のフローチャートである。
図14におけるステップS110での値割当処理(図15のステップS56に対応する。)を詳細に示したフローチャートである