(57)【要約】【課題】プログラマブルなLSIのテストを行う場合にテストパターンが長大化する。【解決手段】テストパターンを使って内部論理回路の故障を検出させるということは、故障があった時と無かった時で出力結果が変わる入力の組合せが入れられれば良いことであり、個々の故障モードを検証するのに全ての入力信号が必要な訳ではなく、その一部しか使用していないことが多く、故障検出を行うのに冗長な入力信号が存在している可能性があることに着眼した。そこで、故障検出率を下げることなく論理回路の故障を検出させるために必要な入力信号の入力条件の中から共有できる入力端子の組合せ（論理回路２ではin1,in2,in4,in7およびin3,in5,in6）を見つけ、それらの入力信号を結線させた。【選択図】図３
2010266239.tif 000002
【特許請求の範囲】
【請求項１】
プログラマブルに内部設定が可能な半導体集積回路に対するテストパターン生成方法であって、
前記半導体集積回路内蔵のテスト対象回路の入力端子と１対１対応の入力信号の内で出力を決定する入力信号のみを抽出した有効パターンを正常時について求める手順と、
前記有効パターンを前記テスト対象回路に擬似的に設定した少なくとも１つの故障時について求める手順と、
前記正常時の有効パターンと前記各故障時の有効パターンを合成した合成パターンにより前記故障を検出するための入力条件を見出す手順と、
全ての前記入力条件から同値を入力できる入力信号同士を見出す手順を有し、
それらの入力信号を１本に纏めたテスト対象回路について新たにテストパターンを生成可能とすることを特徴とするテストパターン生成方法。
【請求項２】
前記有効パターンは、前記テスト対象回路の入力端子と１対１対応の入力信号の値を順次に不定値に変えて既存のテストパターンにより出力信号の値をシミュレーションし、前記出力信号の値に変化がなければ当該入力信号の値を不定値とし、変化があれば当該入力信号の値を元の値に戻すことにより得ることを特徴とする請求項１に記載のテストパターン生成方法。
【請求項３】
前記入力条件は、前記合成において前記正常時の有効パターンと前記故障時の有効パターンパターンで出力値が異なる前記入力信号の値の組合せを抜き出すことにより見出すことを特徴とする請求項１，２に記載のテストパターン生成方法。
【請求項４】
プログラマブルに内部設定が可能な半導体集積回路に対するテストパターン生成システムであって、
広く論理回路を構成するFunction Block毎に、その真理値表に従った入出力値を定義している表で構成されるFunction Block入出力対応ライブラリと、
前記半導体集積回路内蔵のテスト対象回路をテストするための入力データ群であり既存のテストパターン生成ツールにより生成されるテストパターンと、
前記テスト対象回路をテストするために擬似的に設定される故障を定義するデータである故障定義データと、
前記テスト対象回路の入力信号名とブロック名が定義され、前記テストパターンからの入力データと前記故障定義データとにより、前記Function Block入出力対応ライブラリを参照することで全ての入力信号の値の組合せに対する出力値をシミュレートできるようになっている回路構成データと、
前記テストパターンを前記回路構成データへ出力し、前記回路構成データから故障なし時のシミュレーション結果、また前記テストパターンと前記故障定義データを前記回路構成データへ出力し、前記回路構成データから故障あり時のシミュレーション結果をそれぞれ得るパターン制御マクロと、
前記故障なし時のシミュレーション結果と前記故障あり時のシミュレーション結果とから故障検出入力条件を導出し、全ての前記故障検出入力条件から同値を入力できる入力信号同士を見出すパターン比較マクロを有し、
それらの入力信号を１本に纏めたテスト対象回路について新たにテストパターンを生成可能とすることを特徴とするテストパターン生成システム。
【請求項５】
Function Block入出力対応ライブラリおよび前記回路構成データは表形式で構成され、それらの表の各行が回路を構成するブロック名とブロックの入力値とこれらを連結したユニークな検索コードと出力値から成り、前記参照は該検索コードにより行なうことを特徴とする請求項４に記載のテストパターン生成システム。
【請求項６】
前記パターン比較マクロと前記回路構成データの間に入出力インターフェイスを設け、
該入出力インターフェイスは、前記テスト対象回路の入力信号と出力信号が設定され、該入力信号に前記テストパターンの１パターン分が入力されると、これに対応する出力値が前記回路構成データから前記出力信号に反映されることを特徴とする請求項４，５に記載のテストパターン生成システム。
【請求項７】
前記回路構成データにおけるブロック名の定義は、前記テスト対象回路内の回路接続を忠実に表現するようにブロック名を配置して行なわれることを特徴とする請求項４〜６に記載のテストパターン生成システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、内蔵する演算回路や配線などをプログラマブルに設定できる半導体集積回路に対するテストパターンの作成に関する。
【背景技術】
【０００２】
ＡＳ（Application Specific）ＩＣ等、内部に演算回路や配線などをプログラマブルに設定できる半導体集積回路のテストを行なう場合、半導体集積回路内部の機能の多様さに比べてテストのために使用できる外部端子数が不足することは免れない。
【０００３】
従来の半導体集積回路テスト方法におけるテスト端子削減方法として、ＲＯＭを試験対象回路とした場合に、回路内部に構成される複数のＲＯＭの入力信号を同一入力端子から分配させ、各ＲＯＭの出力信号に対して演算する演算回路を内蔵し、その演算結果をＬＳＩの外部端子へ出力できるようにした例が知られている。
【０００４】
即ち、図２８に示すように、先ず複数のＲＯＭブロックに対してアドレスを外部端子から入力する。この場合の試験対象回路は全てＲＯＭであることから入力信号には共有性があり、１組のアドレスと制御信号を与えるだけで容易に共有／分配が可能である。次に、それぞれのＲＯＭブロックの出力信号については演算回路の結果を外部端子から読み出し、期待値と比較する。こうすることでテスト時の出力信号端子数が削減する。
【０００５】
しかし、この方法では、テスト対象回路が同じ入力信号とテストパターンを使用できる論理回路で構成されている必要がある。言い換えれば、入力信号の内容および信号数に共通性が無く、同じテストパターンが入力できない動作の異なる複数の論理回路をテストする場合は入力信号の削減が困難な手法である。また、各ＲＯＭの出力信号を演算させた結果を外部端子へ出力させるため、テストでエラーが発生した場合に故障個所の解析が困難である上、各論理回路の出力遅延時間を外部端子で直接観測できなくなるので、遅延故障のような個々の論理回路の状態遷移時間に起因する故障検出を難しくさせてしまうという問題もある。
【０００６】
また、半導体集積回路テスト方法におけるテスト端子削減方法のために、図２９に示すように、ＣＰＵと、ＣＰＵに演算を行わせるためのプログラムを記憶する記憶装置と、ＣＰＵと外部端子とのＩ／Ｆと、試験対象であるメモリチップとＣＰＵとメモリを接続するメモリＩ／Ｆを持つ構成とする他の例も公知である。ここでは、外部端子からメモリテスタなどによりテストプログラムを記憶装置に書き込み、そのプログラムをＣＰＵで処理させることでメモリチップをテストさせるテストパターンを生成し、テスト結果をＣＰＵ経由で外部端子へ読み出すことによりテストを行えるようにしている。こうすることでメモリチップの端子を外部端子に引き出すことなくＣＰＵおよび記憶装置への制御端子のみでメモリテストを実現するものである。
【０００７】
しかし、この技術では、テスト回路にＣＰＵと記憶装置を持つことが大前提であり、かつパターンに規則性があることでプログラム化が容易なメモリチップのテストに有効な技術である。よって、入出力信号の共通性が無く、動作の異なる複数の論理回路をテストする場合には、むしろテストプログラムを複雑にし、テストパターンを長大化させることになる。また前述の例と同様に、各論理回路の出力遅延時間を直接観測することができないため遅延故障の検出には不向きなテスト方法である。
【０００８】
以上のことから、機能の異なる複数の論理回路に対して遅延故障を考慮した故障検出試験を行う場合の端子削減手法について有効な従来技術はなく、各テスト対象回路の入出力端子と外部端子とを１対１対応で接続するしかないと言える。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開平８-１８４６４５号公報
【特許文献２】特開２００６−２２８３５７号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
解決しようとする問題点は、入出力信号の内容および信号数に共通性が無く動作の異なる複数の論理回路をテストする場合に、テスト用外部端子数の削減が困難でありテストパターンを長大化させることであり、これを回避しようとすると遅延故障のような個々の論理回路の状態遷移時間に起因する故障の検出を妨げてしまう点である。
【課題を解決するための手段】
【００１１】
本発明は、テスト用外部端子数を削減するため、共通接続しても出力信号の値に違いをもたらさない入力信号の組合せシミュレーションにより見つけることを最も主要な特徴とする。
【発明の効果】
【００１２】
本発明のテストパターン作成方法は、論理回路の故障検出率を下げることなく個々のプログラマブル論理回路をテストするのに必要な入力論理条件を見つけることで入力信号数を削減できるという利点がある。その理由は、テスト対象となる各回路における故障定義箇所に対して故障を検出するために必要な入力条件を見つけ、これらの入力条件から同値を入れられる信号を見つけることで得られた入力条件は、各故障を検出させる条件を満たしていることになるためである。
【００１３】
また、同時にテストを行える論理回路数が増えることでテストパターンを削減／効率化できるという利点もある。その理由は、１つ１つの論理回路をテストするのに必要な入力端子数を削減できることで、限られた数の外部端子に対してより多くの論理回路に接続できるようになるためテストパターン全体で見た場合のテスト効率を高められるためである。また、１つの回路をテストするために必要な入力信号数が減ることで、テストパターンの組み合わせが減るためパターン数の削減に繋がる。
【図面の簡単な説明】
【００１４】
【図１】本発明における外部端子数削減の考え方を説明するための第１の図
【図２】本発明における外部端子数削減の考え方を説明するための第２の図
【図３】本発明における外部端子数削減の考え方を説明するための第３の図
【図４】本発明のテストパターンの作成方法を示す流れ図
【図５】本発明のテストパターン作成方法を実行するための構成を示す図
【図６】テスト対象回路の具体例を示す回路図
【図７】図６の回路における２入力マルチプレクサの真理値表を示す図
【図８】図６の回路における４入力マルチプレクサの真理値表を示す図
【図９】図６の回路におけるバッファの真理値表を示す図
【図１０】図６の回路における３入力論理和回路の真理値表を示す図
【図１１】テストパターン生成ツールで生成したテストパターンＰ０を例示する図
【図１２】図６の回路が故障無し時における有効パターンＰＦ００を示す図
【図１３】図６の回路で０固定故障時における第１の有効パターンＰＦ０１を示す図
【図１４】図６の回路で０固定故障時における第２の有効パターンＰＦ０１を示す図
【図１５】図６の回路で０固定故障時における第３の有効パターンＰＦ０３
【図１６】有効パターンＰＦ００とＰＦ０１との合成パターンＰＭ０１を示す図
【図１７】有効パターンＰＦ００とＰＦ０２との合成パターンＰＭ０２を示す図
【図１８】有効パターンＰＦ００とＰＦ０３との合成パターンＰＭ０３を示す図
【図１９】入力端子を削減した２入力マルチプレクサを示す回路図
【図２０】削減した入力条件で新たに生成したテストパターンＰ１を示す図
【図２１】パターン合成テーブルを示す図
【図２２】図５に示した構成の具体例を示す図
【図２３】Function Block入出力対応ライブラリの一部詳細を例示する図
【図２４】テストパターンＰ０のテストパターン
【図２５】故障定義データの詳細を例示する図
【図２６】入出力インターフェイスの詳細を例示する図
【図２７】回路構成データの詳細を例示する図
【図２８】第１の従来例を示すブロック図
【図２９】第２の従来例を示すブロック図
【発明を実施するための最良の形態】
【００１５】
遅延故障の検出を損なうことなくテスト用外部端子数を削減しテストパターンの長大化を回避するという目的を、入力信号数を削減した入力条件を導出し、この入力条件で新たにテストパターンを生成することにより実現した。
【実施例】
【００１６】
［概要］
FPGA(Field Dinamically Reconfigurable Processor)やDRP(Dinamically Reconfigurable Processor)に代表されるプログラマブル素子は、一般に、演算回路などのブロック回路と、ブロック回路同士および外部端子への配線などを自由に設定するスイッチ群と、これらの設定／切り替えを行うコンフィグレーション回路などで構成されている。
【００１７】
このようなプログラマブル素子は用途に応じて内部回路構成を自由に設定できる。このため、内部論理が固定となっている一般的な論理素子をテストする場合とは異なり、テストを行う前に内部回路構成を設定してからテストを行うことになる。よって、全ての機能を網羅するテストを行うためには、回路設定とテストを繰り返し行う必要があり、テストパターンが非常に長大となる傾向がある。その一方で、出荷検査や特性評価を行うためにテスト用に回路を構成してテストを行うことができる点が大きな特徴でもあり、本発明は、この特徴を有効に利用するものである。
【００１８】
先ず、本発明における外部端子数削減の考え方について図１〜図３を参照して簡単に説明する。プログラマブル素子のテストを行う場合、テスト用に回路を構成し、その回路に対してテストパターンを入力してテストを行う。このとき、プログラマブル素子が持つ外部端子の数は一般的に被テスト対象となる全ての内部回路にパターンを入力するには不足するため、何回かに分けてテストを行うことになる。
【００１９】
例えば、図１に示すように、外部端子５が１６本であり、動作の異なる論理回路２、論理回路３および論理回路４を有するプログラマブル素子１をテストする場合を考える。論理回路２は入力端子１０本と出力端子１本、論理回路３は入力端子４本と出力端子１本、論理回路４は入力端子６本と出力端子１本を持つ回路構成となっている。論理回路２、論理回路３および論理回路４それぞれは動作が異なるため、別々のテストパターンを入力する必要があり、それぞれの回路毎に出力結果を期待値と比較してテストをすることになる。
【００２０】
ここで、各回路の入力／出力端子をプログラマブル素子１の外部端子５と１対１対応で接続しようとすると、論理回路２と論理回路３が持つ入力／出力端子の数だけで１６本に達してしまい、論理回路４に接続できる外部端子５がなくなってしまうため、図１に示すように、先ず論理回路２と論理回路３に対して外部端子５と接続してテストを行った後、図２のように論理回路４と外部端子５との配線に切り替えてテストするといったようにテスト対象回路を分割してテストをすることになる。
【００２１】
ところで、テストパターンを使って内部論理回路の故障を検出させるということは、故障があった時と無かった時で出力結果が変わる入力の組合せが入れられれば良いことであり、個々の故障モードを検証するのに全ての入力信号が必要な訳ではなく、その一部しか使用していないことが多く、故障検出を行うのに冗長な入力信号が存在している可能性があることに着目した。
【００２２】
本発明では、テスト対象回路として構成した論理回路２、論理回路３、論理回路４それぞれの回路に対して故障を検出させるために必要な入力論理条件を導出し、同じ論理関係の信号同士を纏めることで、故障検出率を下げることなく入力端子数を削減できるようにした。
【００２３】
例えば、図３のように、論理回路２は入力端子in1,in2,in4,in7の組とin3,in5,in6の組のそれぞれを1本に纏め、論理回路３はin1,in3、論理回路４はin1,in3およびin2,in4のそれぞれの組を1本に纏められたとすると論理回路２、論理回路３、論理回路４の全てに対してプログラマブル素子１の外部端子５と接続することができるようになり、同時にテストを行えるようになる。この結果、２回に分けて実行していたテストパターンを１回のテストで行えるようになり、テストパターンの効率を高めると共にパターン数の削減を実現できるようにした。また、論理回路２、論理回路３、論理回路４の出力は外部端子５で直接に観測できるので遅延故障の検出もできる。
【００２４】
このような効率的なテストパターンの作成方法について図４を参照しながら説明する。先ず、テストパターンを使ってテスト対象回路の出力値をシミュレーションする環境を用意する。このときの入力信号には０，１の他に不定値Ｘが入った時の出力結果がシミュレートできる仕組みにしておく必要がある。プログラマブル素子のテスト対象回路の構成を決定し（図４のステップＳ１）、入力端子の削減を検討するテスト対象回路を１つ選択し（ステップＳ２）、この回路に対して既存のテストパターン生成ツールを起動する。ここまでは人為的な作業である。テストパターン生成ツールはテストパターンＰ０を生成する（ステップＳ３）。
【００２５】
テストパターンＰ０から１パターン分の入力信号をテスト対象回路に入力すると、テスト対象回路の出力が決まる。この状態において、入力信号の値（入力値）を順に不定値Ｘに置き換えてみる。不定値Ｘを入れても出力値に変化を与えない入力信号の入力値はＸに置き換える。もし出力結果が変化した場合は元の入力値に戻す。これを全てのパターン（入力信号の値の組合せ）に対して行い、正常時に出力を決定させる入力信号要素を見つける。これをテストパターンＰ０の全てのパターンに対して行う。この結果、テスト対象回路が正常に動作した時の出力を決定する入力信号のみを抽出した有効パターンＰＦ００ができあがる（ステップＳ４）。
【００２６】
次に、テスト対象回路の一箇所に対して故障ｅ１を定義し（ステップＳ５）、その故障ｅ１が起きた状態での出力をシミュレーションする。この状態においてテストパターンＰ０を入力し、同様にして出力に影響を与えない入力信号を不定値Ｘに置き換えた有効パターンＰＦ０１を作成する（ステップＳ６）。故障ｅ１が無い時の有効パターンＰＦ００と、故障ｅ１発生時の有効パターンＰＦ０１を合成した合成パターンＰＭ０１を生成する（ステップＳ７）。合成方法は有効パターンＰＦ００と有効パターンＰＦ０１の両方でＸの信号はＸのままとし、どちらか一方にでも２値の入力信号が必要な場合はその値を採用する。
【００２７】
こうしてできた合成パターンＰＭ０１は、テスト対象回路が正常時または故障ｅ１が起きた時に動作するテストパターンとなる。そして、正常時と故障ｅ１発生時とで出力値が異なる入力信号の組合せがあれば、そこで故障ｅ１を検出できることを意味する。合成パターンＰＭ０１から正常時と故障ｅ１発生時とで出力値が異なるパターンを抜き出し、それらの中で入力値の関係を見つける（ステップＳ８）。この入力値の関係が故障ｅ１を検出するための入力条件となる。
【００２８】
次に、同じテスト対象回路に対して別の故障個所ｅ２を定義し（ステップＳ１０）、故障ｅ２が起きた状態での動作を同様にシミュレーションし、出力に影響しない入力信号をＸに置き換えた有効パターンＰＦ０２を作成する（ステップＳ６）。この有効パターンＰＦ０２と故障無時の有効パターンＰＦ００の合成パターンＰＭ０２を生成し（ステップＳ７）、同様にして故障ｅ２を検出するための入力条件を導出する（ステップＳ８）。以下、同様にしてテスト対象回路における全ての故障定義個所に対して（ステップＳ９）、故障無し時の有効パターンＰＦ００との合成パターンから各故障を検出するための入力条件を求めていく（ステップＳ８）。
【００２９】
全ての故障定義個所に対して故障検出入力条件を求めたら（ステップＳ９）、これらの全ての条件を満たす入力条件を導出する（ステップＳ１１）。この結果から、同値を入力できる入力信号同士を見つけると、それらの入力信号は１本に纏めても、それぞれの故障を検出可能なことになる。同値を入力可能な入力信号を１本の入力端子に纏めたテスト対象回路に対して、再度、テストパターン生成ツールにかけて新しいテストパターンＰ１を生成する（ステップＳ１２）。そして、新しい入力接続および新しいテストパターンＰ１で故障検出率が劣化していないことを確認できたら（ステップＳ１３）１つのテスト対象回路に対する入力信号の削減が完了となる。なお、ステップＳ１２とステップＳ１３は人の作業である。
【００３０】
以降、１つのプログラマブル素子に含まれている他のテスト対象回路に対しても同様に処理を行って入力信号の削減を行っていく（ステップＳ１４）。最後に、全てのテスト対象回路に対するテストパターンを並列化／連結させて一連のテストパターンに整形し完成となる（ステップＳ１５）。図４において、点線で囲んだ部分が本発明の特徴的な箇所である。
【００３１】
図５は、本発明のテストパターン作成方法を実行するための構成を示す図であり、この構成は、ほぼ図４におけるステップＳ４〜ステップＳ１１を実行する。Function Block入出力対応ライブラリ６は、広く論理回路を構成するFunction Block（以下、「ブロック」と記す）毎に、真理値表に従った入出力値を定義している表で構成される。この表の各行は、ブロック名とブロックの入力値とこれらを連結したユニークな検索コードと出力値から成り、検索コードを探すことで対応する出力値が導出できるようになっている。
【００３２】
テストパターン７（Ｐ０）は、テスト対象回路をテストするための入力データ群であり、既存のテストパターン生成ツールにより生成される。故障定義データ８は、テスト対象回路をテストするために擬似的に設定される故障を定義するデータである。
【００３３】
回路構成データ９には、テスト対象回路の入力信号名とブロック名が定義され、テストパターン７からの入力データと故障定義データ８から故障定義データとにより、Function Block入出力対応ライブラリ６を参照することで全ての入力信号の値の組合せに対する出力値をシミュレートできるようになっている。
【００３４】
パターン制御マクロ１０は、テストパターン７と回路構成データ９とから故障なし時のシミュレーション結果１１、テストパターン７と故障定義データ８と回路構成データ９とから故障あり時のシミュレーション結果１２をそれぞれ出力する。パターン比較マクロ１３は、故障なし時のシミュレーション結果１２と故障あり時のシミュレーション結果１３とから故障検出入力条件１４を導出する。
［具体例］
次に、図６で示す７入力マルチプレクサ１５をテスト対象回路の具体例として説明する。この７入力マルチプレクサ１５は、例えば、図３における論理回路２の具体例と見做すことができる。図７，図８，図９，図１０は、7入力マルチプレクサ１５を構成する各ブロック、即ち、２入力セレクタ１６，４入力セレクタ１７，バッファ１８，３入力論理和回路１９それぞれの真理値表を示す。これらの真理値表の入力値には、０，１以外に不定値Ｘが入力したときの出力値についても定義しておく。なお、４入力セレクタ１７の真理値表を数値で示すと長大になるため、変数により簡略化して示した。
【００３５】
この７入力マルチプレクサ回路１５に対して既存のテストパターン生成ツールにて生成（ステップＳ３）したテストパターンＰ０の例を図１１に示す。このテストパターンＰ０を使って７入力プレクサ１５の動作をシミュレーションさせる。先ず、７入力マルチプレクサ回路１５に故障のない正常な動作においてテストパターンＰ０を入力した時の出力を求める。続いて、各入力端子に対して信号をＸに置き換えた場合に出力が変化しなかったパターンの値をＸに書き換えたテストパターンを生成する。この結果、図１２に示す有効パターンＰＦ００が出来上がる（図４のステップＳ４）。この有効パターンＰＦ００は故障無しの時のみに動作するテストパターンとなる。
【００３６】
次に、図１３に示すようにsel_0 の入力に対して０固定の故障０１３が発生した場合を定義し（ステップＳ５）、この場合において図６に示したテストパターンＰ０を入力させた時の出力結果を求める。続いて上記と同様に各入力端子に対して信号をＸに置き換えた場合に出力が変化しなかった入力値をＸに書き換えたテストパターンを生成する。この結果、図１３に示す有効パターンＰＦ０１が出来上がる（ステップＳ６）。この有効パターンＰＦ０１はsel_0 において０固定の故障が発生した時に動作するテストパターンとなる。
【００３７】
次に、故障無し時に有効な入力信号を抽出した有効パターンＰＦ００と、sel_0において０固定故障が発生した時に有効な入力信号を抽出した有効パターンＰＦ０１を合成して図１６に示す有効パターンＰＭ０１を生成する（ステップＳ７）。この時の合成条件を図２１に示す。図２１を参照すると、出力値ｙとして、Ｘは、０，１，Ｚの何れにも劣後し、Ｚは、０，１の何れにも劣後する。ＰＦ００の出力値ｙおよびＰＭ０１の出力値ｙが、０または１であって、それらの値が異なる場合は、出力値ｙとして０と１が併記される。
【００３８】
有効パターンＰＭ０１の中から故障無し時とsel_0 における０固定故障時のそれぞれで出力値ｙが異なるパターンを見つけ、in1〜in7の間での入力条件を見つける（ステップＳ８）。この例においては、図１６に示すように、in4=/in5 ,in6=/in7 ,in2=/in3 (/は否定論理(NOT)を意味する）の入力条件２２が得られる。
【００３９】
次に、別の故障としてsel_1において０固定故障を定義した（ステップＳ１０）場合に、出力に影響しない入力をＸに書き換えた（ステップＳ６）有効パターンＰＦ０２を図１４に示す。上記と同じようにして、故障無し時の有効パターンＰＦ００と故障０２における有効パターンＰＦ０２を合成させた（ステップＳ７）合成パターンＰＭ０２を図１７に示す。ＰＭ０２からはin5=/in7 ,in4=/in6 ,in1=/in3の入力条件２３が得られる（図４のステップＳ８）。
【００４０】
更に、別の故障としてsel_2において０固定故障を定義した（ステップＳ１０）場合に、出力に影響しない入力をＸに書き換えた（ステップＳ６）有効パターンＰＦ０３を図１５に示す。これも同じようにして故障無時の有効パターンＰＦ００と合成させた（ステップＳ７）合成パターンＰＭ０３を図１８に示す。ＰＭ０３からはin1=/in5,in3=/in7 ,in2=/in6の入力条件２４が得られる（ステップＳ８）。
【００４１】
入力条件２２、入力条件２３、入力条件２４の全ての条件を満たすように整理する（ステップＳ１１）と以下の関係が導出できる。
in1=in2=in4=in7=/in3=/in5=/in6
このことから、in1,in2,in4,in7 および in3,in5,in6 のそれぞれの組を１本の入力信号にまとめられることがわかり、図１９に示すように、１０本あった入力端子を５本に削減した２入力マルチプレクサ２５を構成することできることになる。図１９の２入力マルチプレクサ２５に対してテストパターンを再生成させた（ステップＳ１２）結果を図２０に示す。図１１に示した当初のテストパターンＰ０とこのテストパターンを比較すると、簡略化されていることが分かる。
【００４２】
図２０のテストパターンを使って図１９の２入力マルチプレクサ２５の故障検出させた結果が、図１１のテストパターンを使って図６の７入力マルチプレクサ１５の故障検出させた結果より劣化していないことを確認できれば（ステップＳ１３）、入力端子を削減しても削減前と同じ故障検出率が得られていることが分かる。
【００４３】
また、in1=in2=in4=in7=/in3=/in5=/in6の関係から分かるように、インバータ回路を挿入してin1=in2=in4=in7の反転値がin3=in5=in6に入力されるようにすれば、更に１本削減できることを示している。但し、この場合はテストパターンの自由度がなくなるためテストパターンが若干長くなる可能性がある。
【００４４】
以上の作業を残りの論理回路３，論理回路４に対しても行う（ステップＳ２）ことで故障検出率を下げることなく各回路の入力端子の削減が行える。その結果、図３に示したように、論理回路２、論理回路３、論理回路４に対して入力端子を削減した配線にしても同じ故障検出率のテストが行えるようになる。
【００４５】
また、回路によっては導出した入力条件が次のように互いに排他的な関係になる場合がある。
inA=inB=/inC=/inD, inA=inB=/inE=/inF , inC=inD=/inE=/inF
このような場合は、inA=inB=/inC=/inD , inE=inFのように１組を分離して関係を成立させる条件を見つければよい。
【００４６】
図２２は、上記具体例に適合するように図５を詳細化したものである。ここでは、パソコン上で本テストパターン作成方法を実行することとし、表計算ソフトを使用するものとする。データ部分はシート形式で示されている。図２２は各シートの列の間の関係を理解するために使用し、各シートの内容の詳細については図２３〜図２７を参照されたい。
【００４７】
図２２においては、Function Block入出力対応ライブラリ６の一部（４入力セレクタ１７対応部分）を抽出して示しており、明瞭化のために図２３に拡大表示する。図２３において、Ｂ列のブロック名「TB4MUXXC」は４入力セレクタ１７のブロック名、Ｃ〜Ｆ列のＤ０〜Ｄ３は入力信号、Ｉ，Ｊ列のＳ０，Ｓ１は制御信号、Ｌ列のＹは出力信号である。Ｋ列の検索コードは、ブロック名「TB4MUXXC」とＤ０〜Ｄ３およびＳ０，Ｓ１の入力値を連結したコードになっている。Ｄ０〜Ｄ３およびＳ０，Ｓ１の入力値は図８の真理値表に数値を代入して得られる。
【００４８】
テストパターン７は、７入力マルチプレクサ１５（図６）に対するテストパターンＰ０（図１１）を表計算ソフトで読み込んだものであって図２４に拡大表示する。故障定義データ８も同様であり、図２５に拡大表示する。図２５において、例えば、故障１はsel_0の０固定故障であることを示している。
【００４９】
入出力インターフェイス２６は、テストパターン７および故障定義データ８と回路構成データ９との間のインターフェイスを採るためのものであって、図２６に示すように、７入力マルチプレクサ１５（図６）の入力信号in1〜sel_2（Ａ列）と出力信号y（Ｄ列）が設定される。入力信号in1〜sel_2に対応するセルＢ４〜Ｂ１３に、テストパターン７の１パターン分が入力されると、これに対応する出力ｙがセルＥ４に反映されるようになっている。
【００５０】
回路構成データ９は、図２７に示すように、７入力マルチプレクサ１５（図６）の入力信号in1〜sel_2と、回路接続を忠実に表現するように配置された各ブロック名がインスタンス名（g2_3b0等）を伴って設定される。配置は、最終段のブロックから逆算した場合の段数に対応した列が割り振られる。即ち、Ｂ列には入力信号が設定され、Ｆ列には３つの２入力セレクタ１６、Ｏ列には４入力セレクタ１７と３入力論理和回路１９、Ｚ列（不図示）には３入力論理和回路１９の各ブロック名が設定される。このときのセルの行は、当該ブロックに対する第１の入力信号が位置するＢ列における行である。
【００５１】
入力信号in1〜sel_2の入力値は、入出力インターフェイス２６のＢ列を参照してＣ列に入力される。各ブロックの入力値はＣ列を参照して入力される。検索コードは、ブロック名とブロックの入力値を連結して生成され、これを検索キーとしてFunction Block入出力対応ライブラリ６のＬ列を参照する。検索の結果により得られた各ブロックの出力信号Ｙの値は、vlookup関数によりセルＬ８，Ｌ１０，Ｌ１２、Ｗ７、ＡＤ１４に入力される。最終の出力信号Ｙの値はセルＡＤ１４がセルＡＩ１０に反映されて得られる。
【００５２】
抽出結果保存データ２７は、図５におけるシミュレーション結果１１，１２と故障検出入出力条件１４を併合したものである。詳細図の提示は省略するが、Ｄ列にＰＦ００、Ｅ列にＰＦ０１、Ｆ列にＰＦ０２、Ｇ列にＰＦ０３が保存され、Ｉ列にＰＭ０１、Ｋ列にＰＭ０２、Ｍ列にＰＭ０３、Ｏ列に入力条件２２〜２４（図１６〜図１８）のリストが保存される。
【００５３】
動作について説明する。操作者はFunction Block入出力対応ライブラリ６とテストパターン７を接続後、例えばパソコンのキーボードから、入出力インターフェイス２６および回路構成データ９の表示画面上で入力信号とブロック名を設定して、パターン制御マクロ１０を起動する。すると、パターン制御マクロ１０は、テストパターン７から１パターン分の入力信号値を読み込み、図２６のように、入出力インターフェイス２６のセルＢ４〜Ｂ１３に貼り付ける。
【００５４】
この１パターンは、図２７のように、回路構成データ９のセルＣ７〜Ｃ１６に反映され検索コードが生成される。検索コードを検索キーとしてFunction Block入出力対応ライブラリ６を検索し、検索結果によって、回路構成データ９、次いで入出力インターフェイス２６の出力信号Ｙの値が更新される。
【００５５】
続いて、パターン制御マクロ１０は、入出力インターフェイス２６のセルＢ４に入力信号の値として不定値Ｘを書き込み、上述の処理を行い、入出力インターフェイス２６の出力信号Ｙの値を得る。この結果、不定値Ｘとした前後で出力信号Ｙの値に変化がなければ、セルＢ４には不定値Ｘを書き込んだままとし、変化があれば元の値に戻す。このような処理をセルＢ５〜Ｂ１３について繰り返すことにより、故障無しの状態で出力を決定するのに必要な入力信号ができあがる。パターン制御マクロ１０は、この結果を抽出結果保存データ２７とする。以上で１パターン分の処理が終了する。パターン制御マクロ１０は、この処理をテストパターン７の全パターンについて繰り返し行い、抽出結果保存データ２７に故障無しの状態で出力を決定するのに必要な入力信号を抽出した有効パターンＰＦ００を保存する。
【００５６】
次に、この回路で故障が起きた状態を構成するために故障定義データ８を用意する。ここで定義する故障は主に制御系信号に対する０固定または１固定の故障で、図６におけるsel_0〜sel_2を０固定または１固定とする。図２５を参照すると、故障定義データ８のセルＤ３〜Ｄ１２の内で、例えば故障１ではsel_0対応のセルＤ１０にのみ０が入っている。
【００５７】
パターン制御マクロ１０は、入出力インターフェイス２６のＢ列の内で、故障定義データ８で定義された故障データ対応のセルＢ１１〜Ｂ１３には、テストデータ７からではなく、故障定義データ８から入力する。従って、入出力インターフェイス２６におけるsel_0対応のセルＢ１１には、故障定義データ８におけるsel_0対応のセルＤ１０の０が入る。
【００５８】
これにより、回路構成データ９におけるsel_0対応のセルＣ１４には０が入るので、０固定故障の状態になり故障１が起きた状態をシミュレーションすることができるようになる。パターン制御マクロ１０は、この状態で上述と同様な手順により、出力を決定するのに必要な入力信号を抽出した有効パターンＰＦ０１を生成し、抽出結果保存データ２７に保存する。
【００５９】
パターン制御マクロ１０は、引き続き、同様にして、sel_1の０固定故障、sel_2の０固定故障についても出力を決定するのに必要な入力信号を抽出した有効パターンＰＦ０２、ＰＦ０３を生成し、抽出結果保存データ２７に保存する。抽出結果保存データ２７のＤ列には故障なし時の有効パターンＰＦ００、Ｅ列にはsel_0の０固定故障時の有効パターンＰＦ０１、Ｆ列にはsel_1の０固定故障時の有効パターンＰＦ０２、Ｇ列にはsel_2の０固定故障時の有効パターンＰＦ０３がそれぞれ保存されている。
【００６０】
パターン比較マクロ１０は、Ｄ列の有効パターンＰＦ００とＥ列の有効パターンＰＦ０１を比較して、図２１に示した対応で合成し、合成パターンＰＭ０１（図１６）を生成する。合成パターンＰＭ０１は、抽出結果保存データ２７のＩ列に保存される。この合成パターンＰＭ０１は、少なくともsel_0の０固定故障を見つけるための条件を抽出したパターンであることを意味する。換言すれば、故障なし時とsel_0の０固定故障時とで出力ｙの値が異なる入力条件を抽出したパターンである。
【００６１】
パターン比較マクロ１３は、Ｉ列の合成パターンＰＭ０１に対して、１行ずつ読み込みながらin1〜in7の内で複数が有効である（Ｘでない）行を検索する。セルＩ７〜Ｉ１５（図１６の１〜９行目）までは、そのような行は無いが、セルＩ１６（図１６の１０行目）では、in4=1、in5=0と２つの入力信号が有効となっている。これは、sel_0の０固定故障を見つけるための入力条件を意味する。つまり、sel_0の０固定故障を見つけるための１入力条件として、in4=/in5（/は論理否定）という関係が導ける。また、セルＩ１７からin2=/in3、セルセルＩ２６からin6=/in7という別の関係が導ける。パターン比較マクロ１３は、これら全ての入力条件をＪ行に記載する。
【００６２】
同様にして、パターン比較マクロ１３は、sel_0の０固定故障を見つけるための入力条件、sel_2の０固定故障を見つけるための入力条件を抽出結果保存データ２７に記載する。更に、抽出結果保存データ２７を見て、合成パターンＰＭ０１全体からsel_0の０固定故障におけるin4=/in5、in2=/in3、in6=/in7という入力条件、合成パターンＰＭ０２からin5=/in7、in4=/in6、in1=/in3という入力条件、合成パターンＰＭ０３からin1=/in5、in3=/in7、in2=/in6という入力条件を導出する。そして、全ての入力条件を整理し、in1=in2=in4=in7=/in3=/in5=/in6という最終的な入力条件を得る。つまり、in1=in2=in4=in7という入力信号の組に対して同一の信号が入るようにし、in3=in5=in6という入力信号の組に対して同一の信号が入るようにし、かつ一方の信号は他方の信号を論理反転した関係とすれば、sel_0〜sel_2の０故障検出が可能であることになる。
【００６３】
以上の結果から、操作者は、図６の回路は図１９のように、in1=in2=in4=in7、in3=in5=in6のそれぞれを電気的に接続しても故障検出率に変りの無いテストパターンＰ１を生成することができる。即ち、図１に示した論理回路２は、図３に示したように、５本の入力信号と１本の出力信号で同じ故障検出率でのテストが可能であることに帰結する。図１に示した論理回路３，４についても、論理回路２と同様にして入力信号の削減を行なうことができる。この結果、論理回路２、論理回路３および論理回路４を同時にテストでき、そのテストパターンも短縮できる。このようにして、プログラマブル素子１をテストするテストパターンの削減と効率化を実現できる。
【産業上の利用可能性】
【００６４】
本発明によれば、プログラマブル素子の出荷検査や評価に使用するテストパターンの効率化および削減といった用途に適用できる。また、論理回路をテストするのに故障検出率を下げることなく入力端子数を削減させるといった用途にも適用できる。
【符号の説明】
【００６５】
１          プログラマブル素子
２〜４      論理回路
５          外部入出力端子
６          Function Block入出力対応ライブラリ
７          テストパターン
８          故障定義データ
９          回路構成データ
１０        パターン制御マクロ
１１〜１２  シミュレーション結果
１３        パターン比較マクロ
１４        故障検出入力条件
１５        ７入力マルチプレクサ
１６        ２入力マルチプレクサ
１７        ４入力マルチプレクサ
１８        バッファ
２０        入力信号
２１        出力信号
２２〜２４  入力条件
２５        ２入力マルチプレクサ
２６        入出力インターフェイス
２７        抽出結果保存データ
【図１】
2010266239.tif 000003
【図２】
2010266239.tif 000004
【図３】
2010266239.tif 000005
【図４】
2010266239.tif 000006
【図５】
2010266239.tif 000007
【図６】
2010266239.tif 000008
【図７】
2010266239.tif 000009
【図８】
2010266239.tif 000010
【図９】
2010266239.tif 000011
【図１０】
2010266239.tif 000012
【図１１】
2010266239.tif 000013
【図１２】
2010266239.tif 000014
【図１３】
2010266239.tif 000015
【図１４】
2010266239.tif 000016
【図１５】
2010266239.tif 000017
【図１６】
2010266239.tif 000018
【図１７】
2010266239.tif 000019
【図１８】
2010266239.tif 000020
【図１９】
2010266239.tif 000021
【図２０】
2010266239.tif 000022
【図２１】
2010266239.tif 000023
【図２２】
2010266239.tif 000024
【図２３】
2010266239.tif 000025
【図２４】
2010266239.tif 000026
【図２５】
2010266239.tif 000027
【図２６】
2010266239.tif 000028
【図２７】
2010266239.tif 000029
【図２８】
2010266239.tif 000030
【図２９】
2010266239.tif 000031