(57)【特許請求の範囲】
【請求項１】
回路をテストするためのテストパターンの数を圧縮するテストパターン圧縮方法において、
検出しようとする故障が検出されるまでテストパターンの故障シミュレーションを行い、
上記故障シミュレーションを行ったテストパターン夫々について、そのテストパターンを含めｎ（ｎは正整数）個のテストパターンでしか検出できない故障の数であるｎチェックを求め、
ｎが小なるものを優先させてｎチェックの値が大なる順に上記故障シミュレーションを行ったテストパターンを並べ換え、
上記故障シミュレーションを繰り返してテストパターン数を圧縮することを特徴とするテストパターン圧縮方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はテストパターン圧縮方法に関し、半導体集積回路をテストするためのテストパターンの数を圧縮する方法に関する。
【０００２】
【従来の技術】
半導体集積回路をテストするためのテストパターンの生成方法として、ターゲットとなるある１つの故障に対してその故障を検出可能な１つのパターンを作る決定的手法と、乱数を用いてパターンを生成する非決定的手法がある。前者は時間はかかるが確実にターゲットとした故障を検出することが可能であり、後者の方法では、高速なテストパターン生成が可能である。しかし、これらの方法で生成したテストパターンには冗長なパターンが含まれてしまっているため、テストパターンは必要以上に大きくなってしまい、テストパターン生成後、テストパターン圧縮を行う必要がある。
【０００３】
テストパターン圧縮は、通常、テストパターンを順番に故障シミュレーションしていき、そのテストパターンで一度ある故障が検出されると、その故障を故障シミュレーションのターゲットから外していく。この故障シミュレーションにおいて、未検出の故障をまったく検出しないテストパターンは不要なものでありテストセットの圧縮が可能となる。そのため、故障シミュレーションにおけるテストパターンの順序は大変重要である。従来のテストパターンのコンパクション手法は、テストパターン生成順と逆順で故障シミュレーションすることによりコンパクションを行うリバース・フォールト・シミュレーションや、ランダムにパターンを並べ変えるというものであり、テストパターン圧縮方法としてダブルディテクション（Ｓ．Ｋａｊｉｈａｒａ．ｅｔｃ．Ｐｒｏｃ．３０ｔｈ  Ｄｅｓｉｇｎ  Ａｕｔｏｍ．Ｃｏｎｆ．，１９９３，ｐｐ．  １０２−１０６．）がある。
【０００４】
【発明が解決しようとする課題】
リバース・フォールト・シミュレーションは、図５の最上行から順にテストパターンｔ１〜ｔ８を１つ１つ生成及び故障シミュレートして故障ｆ１〜ｆ１０を検出する。次に図中、最下行から順にテストパターンｔ８〜ｔ１を１つ１つ故障シミュレートして不要なテストパターンがないかをチェックする。ここで不要なテストパターンとは、新しい故障を１つも検出しないテストパターンのことである。しかし、この図の例ではテストパターンｔ８〜ｔ１の全てのテストパターンで新しい故障を検出しており、テストパターンを圧縮することは不可能である。
【０００５】
図６（Ａ）〜（Ｄ）はダブルディテクションの手順を示す。まず、同図（Ａ）の最上行から順にテストパターンｔ１〜ｔ８を１つ１つ生成及び故障シミュレートして故障ｆ１〜ｆ１０を検出する。ここで、ワン・チェックの欄には、そのテストパターンでしか検出できない故障を見付け、その数を記入している。例えばテストパターンｔ１のワン・チェックが１というのは、故障ｆ１がテストパターンｔ１でしか検出できないことを表わしている。
【０００６】
同図（Ａ）の状態から、まずワン・チェックの値が大きいテストパターンから順に、かつ、ワン・チェックの値が０のテストパターンについては逆順として並べ換え、同図（Ｂ）に示す並びとする。そして、最上行から順に故障シミュレートを行い、故障ｆ１〜ｆ１０が検出された段階でシミュレートを中止し、残りのチェックパターン（この場合ｔ２）を削除する。各行のワン・チェックの欄の値を記入する。
【０００７】
この後、同様の並べ換えを行って最上行から順に故障シミュレートを行い同図（Ｃ）に示す如く、テストパターンｔ７を削除してワン・チェックの欄を記入する。更に、同様の並べ換えを行って最上行から順に故障シミュレートを行い同図（Ｄ）に示す如く、テストパターンｔ５，ｔ４を削除してワン・チェックの欄を記入する。同図（Ｄ）ではワン・チェックの欄が０であるテストパターンがないためダブルディテクションを終了する。
【０００８】
上記のダブルディテクションでは３回の並べ換えが必要で、かつ、並べ換えをする毎に故障シミュレーションを繰り返さなければならない。並べ換えの回数が多くなるのは最適な並べ換えがなされていないからであり、その結果、故障シミュレーションを行う回数が多く、テストパターン圧縮のために時間がかかるという問題があった。
【０００９】
本発明は上記の点に鑑みなされたもので、テストパターンの並べ換えを最適化して並べ換えの回数を低減でき、故障シミュレーション回数を低減して圧縮に要する時間を低減できるテストパターン圧縮方法を提供することを目的とする。
【００１０】
【課題を解決するための手段】
請求項１に記載の発明は、回路をテストするためのテストパターンの数を圧縮するテストパターン圧縮方法において、
検出しようとする故障が検出されるまでテストパターンの故障シミュレーションを行い、
上記故障シミュレーションを行ったテストパターン夫々について、そのテストパターンを含めｎ（ｎは正整数）個のテストパターンでしか検出できない故障の数であるｎチェックを求め、
ｎが小なるものを優先させてｎチェックの値が大なる順に上記故障シミュレーションを行ったテストパターンを並べ換え、
上記故障シミュレーションを繰り返してテストパターン数を圧縮する。
【００１１】
このように、そのテストパターンを含めｎ個のテストパターンでしか検出できない故障の数であるｎチェックをテストパターン毎に求め、ｎが小なるものを優先させてｎチェックの値が大なる順にテストパターンを並べ換えることにより、次のシミュレーション時に検出しにくい故障を検出可能なテストパターンから順に故障シミュレーションを行って、他の故障も付随的に検出しテストパターン数を減少でき、並べ換え回数及び故障シミュレーション回数を減少できる。
【００１２】
【発明の実施の形態】
図１は本発明方法のフローチャートを示す。この処理を始める以前にテストパターン（例えばｔ１〜ｔ８）が生成されており、この生成されたテストパターンｔ１〜ｔ８をテストパターンセットＡと呼ぶ。同図中、ステップＳ１０ではテストパターンセットＡの先頭のテストパターンｔ１を取り出す。
【００１３】
次にステップＳ１２で取り出したテストパターンの故障シミュレーションを行って故障を検出し、順序決定係数であるｎチェック（ｎは１≦ｎ≦Ｎを満足する整数）を計算する。次に、ステップＳ１４で検出可能な全ての故障（例えば故障ｆ１〜ｆ１０）が検出されたか否かを判別し、未だ全てが検出されてなければステップＳ１６に進み、全てが検出されていればステップＳ１８に進む。ステップＳ１６ではテストパターンセットＡから次のテストパターンを取り出し、ステップＳ１２に進む。
【００１４】
図３は上記のステップＳ１０，Ｓ１２〜Ｓ１６を繰り返して得られた順序決定係数の一例を示す。ここではＮ＝３としている。ワン・チェックとはそのテストパターンでしか検出できない故障の数であり、ツー・チェックとは、そのテストパターンを含め２つのテストパターンでしか検出できない故障の数であり、スリー・チェックとは、そのテストパターンを含め３つのテストパターンでしか検出できない故障の数である。図３において、テストパターンは最上行から順にシミュレーションが行われる。最初にテストパターンｔ１をシミュレートした時点では故障ｆ１，ｆ２がこのテストパターンｔ１でしか検出できないため、この行のワン・チェックの値が２で、ツー・チェック及びスリー・チェック夫々の値が０である。しかし、テストパターンｔ２をシミュレートした時点で故障ｆ２がテストパターンｔ１，ｔ２で検出できることが分り、テストパターンｔ１のワン・チェックの値が１，ツー・チェックの値が１，スリー・チェックの値が０となる。なお、故障毎の検出回数と、どの故障がどのテストパターンで検出されたかを記録しておくことにより、ワン・チェック、ツー・チェック、スリー・チェック夫々を求めることもできる。
【００１５】
図３のテストパターンｔ８のシミュレーションを行うことにより、検出可能な全ての故障ｆ１〜ｆ１０が検出されるとステップＳ１４からステップＳ１７に進む。ステップＳ１７ではテストパターンセットＡの残ったテストパターン、又は１つも新しい故障を検出しないテストパターンをテストパターンセットＡから削除する。次のステップＳ１８ではテストパターンの並べ換え処理を行い、ステップＳ２０に進む。ステップＳ２０ではテストパターンＡの全てのパターンのワン・チェックの値が１以上であるか否かを判別し、全てのワン・チェックの値が１以上でなければステップＳ１０に進んでステップＳ１０〜Ｓ２０を繰り返す。全てのワン・チェックの値が１以上であれば処理を終了する。
【００１６】
図２は並べ換え処理のフローチャートを示す。同図中、ステップＳ３０ではテストパターンセットＡの先頭のテストパターンを取り出す。このテストパターンを（Ｔ）で表わす。次にステップＳ３２でｎを１に設定し、ステップＳ３４で作業用のテストパターンセットＣをクリアした後、ステップＳ３６でテストパターンセットＡのテストパターンを全てテストパターンセットＣに入れる。
【００１７】
次にステップＳ３８で取り出したテストパターン（Ｔ）のｎチェックの値がテストパターンセットＣの中のどのテストパターンのｎチェックの値と比べても大きいかどうかを判別する。この条件を満足すればステップＳ４０に進み、ここで、テストパターン（Ｔ）をテストパターンセットＢに先頭から順に追加する。そしてテストパターン（Ｔ）をテストパターンセットＡから削除する。この後、ステップＳ４２でテストパターンセットＡにまだテストパターンが残っているかどうかを判別し、テストパターンがあればステップＳ３０に進む。
【００１８】
一方、ステップＳ３８の条件を満足しない場合はステップＳ４４に進み、テストパターン（Ｔ）のｎチェックの値がテストパターンセットＣの中のどれかのテストパターンのｎチェックの値より小さいか否かを判別する。この条件を満足しなければステップＳ４６でｎの値が所定値Ｎ（図３の例ではスリー・チェックまでであるのでＮ＝３）と等しいか否かを判別し、ｎ≠Ｎの場合ステップＳ４８に進む。
【００１９】
ステップＳ４８ではテストパターンセットＣの中でテストパターン（Ｔ）とｎチェックの値が同一のテストパターンを取り出してテストパターンセットＣに入れなおす。これはステップＳ３８での比較対象をそれよりｎの小さなｎ＿ｃｈｅｃｋの値が同じものに限定するための処理である。この後、ステップＳ５０でｎを１だけインクリメントしてステップＳ３８に進む。また、ステップＳ４６でｎ＝ＮであればステップＳ４０に進む。
【００２０】
また、ステップＳ４４の条件を満足する場合にはステップＳ５２でテストパターンセットＡの中から次のテストパターン（Ｔ）を取り出してステップＳ３２に進む。また、上記のステップＳ３０〜Ｓ５２の処理を繰り返し、ステップＳ４２でテストパターンセットＡにテストパターンがないと判別されるとステップＳ５４に進み、ここでテストパターンセットＢでテストパターンセットＡを置き換え、テストパターンセットＢ，Ｃをクリアして処理を終了する。
【００２１】
ここで、テストパターンセットＡが図４（Ａ）の状態（図４（Ａ）は図３と同一内容）で並べ換え処理が行われると、まずワン・チェックの値が大きいものを優先して図４（Ａ）でワン・チェックの値が１のテストパターンｔ１がテストパターンセットＢに移動され、次にテストパターンｔ８がテストパターンセットＢに移動される。次にツー・チェックの値が大きいものを優先しツー・チェックの値が２のテストパターンｔ３，ｔ６，ｔ７，ｔ２が順にテストパターンセットＢに移動される。テストパターンｔ２がｔ３，ｔ６よりも後で移動されるのはスリー・チェックの値が他より小さいからである。この後、ツー・チェックの値が１であるものについて、スリー・チェックの値が大きい順にテストパターンセットＢに移動され、このテストパターンセットＢでテストパターンセットＡが置き換えられ図４（Ｂ）に示す順序に並べ換えられる。
【００２２】
この並べ換えの後、図４（Ｂ）に示すテストパターンｔ１，ｔ８，ｔ３，ｔ６が故障シミュレーション（ステップＳ１２）されることによって検出可能な全ての故障ｆ１〜ｆ１０が検出され、残りのテストパターンｔ７，ｔ２，ｔ５，ｔ４夫々の故障シミュレーションは行われずにこれらは削除される。
【００２３】
このように、ｎが小さなｎチェックの値に上位の優先度を与えて、ｎが小なるものを優先させてｎチェックの値が大なる順にテストパターンを並び換えている。これは並び換えた後、先頭に近いテストパターンほど、検出しにくい故障を多く検出可能なテストパターンであることを示しており、このようなテストパターンを先に故障シミュレートすることにより、多くのテストパターンで検出可能な故障を付随的に検出してテストパターン数を減少させることができる。
【００２４】
このようにしてより適切な並べ換えを行っているため、並べ換えの回数を従来に比して大幅に減少させることができ、全体の故障シミュレーションの回数を大幅に減少でき、圧縮に要する時間を大幅に低減することが可能となる。
【００２５】
【発明の効果】
上述の如く、請求項１に記載の発明は、回路をテストするためのテストパターンの数を圧縮するテストパターン圧縮方法において、
検出しようとする故障が検出されるまでテストパターンの故障シミュレーションを行い、
上記故障シミュレーションを行ったテストパターン夫々について、そのテストパターンを含めｎ（ｎは正整数）個のテストパターンでしか検出できない故障の数であるｎチェックを求め、
ｎが小なるものを優先させてｎチェックの値が大なる順に上記故障シミュレーションを行ったテストパターンを並べ換え、
上記故障シミュレーションを繰り返してテストパターン数を圧縮する。
【００２６】
このように、そのテストパターンを含めｎ個のテストパターンでしか検出できない故障の数であるｎチェックをテストパターン毎に求め、ｎが小なるものを優先させてｎチェックの値が大なる順にテストパターンを並べ換えることにより、次のシミュレーション時に検出しにくい故障をより多く検出可能なテストパターンから順に故障シミュレーションを行って、他の故障も付随的に検出しテストパターン数を減少でき、並べ換え回数及び故障シミュレーション回数を減少でき、テストパターン圧縮に要する時間を低減できる。
【図面の簡単な説明】
【図１】本発明方法のフローチャートである。
【図２】並べ換え処理のフローチャートである。
【図３】本発明の順序決定係数を説明するための図である。
【図４】本発明の順序決定係数を説明するための図である。
【図５】従来方法を説明するための図である。
【図６】従来方法を説明するための図である。
【符号の説明】
Ｓ１０〜Ｓ５４  ステップ
ｔ１〜ｔ８  テストパターン
ｆ１〜ｆ１０  故障
【図１】
0003547559.tif 000002
【図２】
0003547559.tif 000003
【図３】
0003547559.tif 000004
【図４】
0003547559.tif 000005
【図５】
0003547559.tif 000006
【図６】
0003547559.tif 000007