(57)【特許請求の範囲】
【請求項１】
組込み自己試験法によるテスト機構を備えた半導体集積回路の故障を診断する診断テストにおける診断テストパターン数を最適化するプログラムであって、
前記半導体集積回路におけるクロックの種別ごとにグループ化したテストグループに割り当てられた診断テストパターン数の内で診断テストパターンとして発生した擬似乱数の各々で新たに検出される故障数が０又は所定の基準値以下であるかを判定するステップと、
前記テストグループに割り当てられた診断テストパターン数の内で診断テストパターンとして最後に発生した擬似乱数で新たに検出される故障数が任意の基準値以上であるかを判定するステップと、
前記診断テストパターンとして発生した擬似乱数の各々で新たに検出される故障数が０又は所定の基準値以下となるテストグループに割り当てられた診断テストパターン数を削減するステップと、
新たに検出される故障数が０又は所定の基準値以下となっていて削減したテストグループに割り当てられた診断テストパターン数を、テストグループに割り当てられた診断テストパターン数で新たに検出される故障数が所定の基準値以上となっているテストグループに追加するステップと、
前記診断テストパターン数の再割り当て後の故障検出率が目標とする故障検出率を満足しているかを判定するステップとをコンピュータに実行させることを特徴とする診断テストパターン数最適化プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、組込み自己試験法（Built-In-Self-Test、BIST）によるテスト機構を備えた半導体集積回路を診断するための診断テストにおける診断テストパターン数を最適化するプログラムに関するものである。
【背景技術】
【０００２】
従来、BIST技術によるテスト機構を備えた半導体集積回路としては、まず、フリップフロップに供給されるクロックの種別ごとにBIST論理を自動生成し、次に、BIST論理中の擬似乱数発生器において、診断するための診断テストパターンとして擬似乱数を発生させ、被テスト回路を経て圧縮器へと伝搬させ、受信したデータが期待値と合っているか比較し、故障の有無を判断する。そして、この診断テストパターンを使用し、半導体集積回路が壊れていないかどうかの診断を実施する。すなわち、BIST技術を使用して自動生成されたBIST論理と、擬似乱数による診断テストパターンを使用して、半導体集積回路が壊れていないかどうかの診断を実施することが行われていた。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平7-55895号公報
【特許文献２】特開2004-219186号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
まず、LSI設計のフローチャートを図６に示す。LSI設計では、設計仕様601に基づき、S601においてLSIの機能設計をする。
S601の機能設計では、実現する機能の設計および、機能を実装するための機能分割をする。分割した機能モジュールごとにS602において論理設計し、RTL（Register Transfer Level）論理602を作成する。
S602の論理設計において作成したRTL論理602を入力し、S603において論理検証をする。
S603の論理検証では、論理動作を確認する。S603の論理検証において動作確認したRTL論理602を入力し、S604において論理合成をする。
S604の論理合成では、ゲートレベル論理603を作成する。S604の論理合成において作成したゲートレベル論理603を入力し、S605においてTPI（Test-Point-Insertion、TPI技術については後述する）をする。
S605のTPIでは、TPI後のゲートレベル論理604を作成する。S605のTPIにおいて作成したTPI後のゲートレベル論理604を入力し、S606においてBIST論理生成をする。
S606のBIST論理生成では、BIST論理付きのゲートレベル論理605を作成する。S606のBIST論理生成において作成したBIST論理付きのゲートレベル論理605を入力し、S607においてレイアウト設計をする。
S607のレイアウト設計では、配置配線後に発生した信号波形のスルーレート違反に対して、ゲートの高駆動力化や、負荷分散をして調整する。S607のレイアウト設計において作成した信号波形のスルーレート調整後ゲートレベル論理606を入力し、S608においてタイミング検証をする。
S608のタイミング検証では、目標動作周波数を達成することを確認する。S607のレイアウト設計において作成した信号波形のスルーレート調整後ゲートレベル論理606を入力し、S609において診断テストパターン生成処理をする。
S609の診断テストパターン生成処理では、診断テストパターン607を生成する。S609の診断テストパターン生成処理において作成した診断テストパターン607および、信号波形スルーレート調整後ゲートレベル論理606を入力し、S610において故障シミュレーションをする。
S610の故障シミュレーションでは、故障検出数・故障検出率608を作成する。S611の故障検出数の確認において、作成した故障検出数・故障検出率608を確認する。
S612のLSI製造工程においてLSIを製造した後、診断テストパターン607を入力し、S613においてLSI診断をする。
【０００５】
上述したBIST技術によるテスト機構を備えた半導体集積回路では、診断テストパターンが擬似乱数であるため、未活性分岐回路やテストされない回路が残ってしまい、十分な故障検出率が得られないという問題があった。そこで、活性化頻度の偏りを分散させるために、テストポイントインサーション（Test-Point-Insertion、TPI）技術を用いることが行われている。TPI技術は、ゲートレベルのネットリストを用いて一旦故障シミュレーションを実施し、可制御性・可観測性の解析を行い、可制御性・可観測性が悪い箇所にテスト回路を挿入するという技術である。
【０００６】
特開平7-55895号公報（特許文献１）では、BIST技術を使用しない場合の高効率故障検出用診断テストパターンの作成方法が開示されている。
【０００７】
特開2004-219186号公報（特許文献２）では、TPI技術は使用せず、擬似乱数を使用した診断テストパターンでは活性化が困難なエンコーダやデコーダ等の回路に対して、人手で補助回路を設けることによりテスト効率を向上させる方法が開示されている。
【０００８】
従来技術では、まず、フリップフロップを、接続されるクロックの種別ごとにグループ化し、このクロックの種別ごとにグループ化したフリップフロップ群をテストグループと呼び、テストグループ番号という追い番を付けて区分している。
図２のBIST回路の構成図に示すごとく、例えば、クロック信号線207であるCK1が接続されるフリップフロップ群をテストグループ１と呼び、クロック信号線207であるCK2が接続されるフリップフロップ群をテストグループ２と呼ぶ。
次に、診断テストパターン数を、テスタのメモリの制約範囲内という条件の下で、テストグループごとのパス数比に応じて自動配分する。診断テストパターン数の総数は、パターン数が多いとLSIテスト時間が長くなり製造コストが高くなるため、少ないパターン数で目標とする故障検出率が得られるようにテスタのメモリの制約範囲内という条件の下で、LSIの回路規模から見積り、１回に発生させられる診断テストパターンの数は、乱数発生器の回路構成から決められる。
診断テストパターン数の総数を、１回に発生させられる診断テストパターンの数で割った値が診断テストパターンの発生回数であり、これをテストグループごとのパス数比で自動配分する。この時、検出できる故障数は、診断テストパターンとして最初に発生される擬似乱数では多数の故障を検出するが、２回目、３回目・・・ｎ回目と擬似乱数を発生させる回数が増加するにつれ、新たに検出される故障数は徐々に減少し、最終的に０又はそれに近い値となる。
【０００９】
図７は、従来技術である診断テストパターン数をクロック種別ごとのパス数比で配分した時のフローチャートを示している。S701でTPI回路を挿入し、S702でBIST論理を生成し、S703でレイアウト設計を実施し、S704で診断テストパターン生成処理を実施し、そしてS705で故障シミュレーションを実施する。S706の故障検出数確認では、S705の結果として得られる故障検出数と故障検出率を確認し、S706で故障検出率が目標故障検出率を達成しているか判定し、未達成の場合はS701へ戻りTPI回路の挿入から再実行する。
【００１０】
図８のパス数比で診断テストパターン数を配分した検出故障数のイメージ図において、一例として、テストグループ４の検出故障数801では、検出故障数が１回目の約１００件から徐々に減少し、割り当てられた診断テストパターンの発生回数が終了した時点の７回目でほぼ０件となり、次のテストグループ５に切り替る。一方、テストグループ５の検出故障数802では、１回目の約４０００件から徐々に減少しているが、５回目の約５００件まで減少したところで、割り当てられた診断テストパターンの発生回数が終了し、テストグループ６に切り替ってしまう。このようにして、テストグループ１からテストグループ１０までの故障検出数累計804は、約１５６０００件となっている。
【００１１】
また図８において、テストグループ８〜テストグループ１０の検出故障数803では、テストグループ８の４回目〜８回目、テストグループ９の３回目〜５回目、テストグループ１０の３回目〜４回目において検出故障数が０件となっている。
【００１２】
このように、クロックの種別ごとに区分したテストグループごとに診断テストパターン数をパス数比で自動配分した場合に、テストグループごとにパスごとの論理構造は異なるため、各テストグループの故障検出率には偏りが発生していた。すなわち、パス数が多く、診断テストパターン数が多く割り当てられたテストグループであっても、論理構造が単純で、故障を検出し易い論理の場合、少ない診断テストパターン数で全ての故障を検出してしまい、残りの診断テストパターンが無駄になることがある。逆に、パス数が少なく、診断テストパターン数の割り当てが少ないテストグループであっても、論理構造が複雑で故障を検出し難い論理の場合、与えられた診断テストパターン数では十分な故障数を検出できないことがある。
【００１３】
そこで診断テストパターンとして発生させる擬似乱数を多く発生させ、多くの故障を検出することも可能ではあるが、それでは診断テストパターンのデータ量が増加してテスト時間が増加するという問題があった。
【００１４】
そこで、本発明が解決しようとする課題は、診断テストパターン数を増加させずに故障検出率を向上させることができるプログラムを提供することである。
【課題を解決するための手段】
【００１５】
本発明は、組込み自己試験法によるテスト機構を備えた半導体集積回路の故障を診断する診断テストにおける診断テストパターン数を最適化するプログラムであって、前記半導体集積回路におけるクロックの種別ごとにグループ化したテストグループに割り当てられた診断テストパターン数の内で診断テストパターンとして発生した擬似乱数の各々で新たに検出される故障数が０又は所定の基準値以下であるかを判定するステップと、前記テストグループに割り当てられた診断テストパターン数の内で診断テストパターンとして最後に発生した擬似乱数で新たに検出される故障数が任意の基準値以上であるかを判定するステップと、前記診断テストパターンとして発生した擬似乱数の各々で新たに検出される故障数が０又は所定の基準値以下となるテストグループに割り当てられた診断テストパターン数を削減するステップと、前記診断テストパターンとして最後に発生した擬似乱数で新たに検出される故障数が所定の基準値以上となるテストグループに診断テストパターン数を追加するステップと、前記診断テストパターン数の再割り当て後の故障検出率が目標とする故障検出率を満足しているかを判定するステップとをコンピュータに実行させることを特徴とする。
【００１６】
また、新たに検出される故障数が０又は所定の基準値以下となっていて削減したテストグループに割り当てられた診断テストパターン数を、テストグループに割り当てられた診断テストパターン数で新たに検出される故障数が所定の基準値以上となっている箇所に追加することを特徴とする。
【発明の効果】
【００１７】
本発明によれば、診断テストパターン数が過剰に配分されているテストグループを判別するステップと、診断テストパターン数が不足しているパスグループを判別するステップと、故障の検出のし易さ（難易度）に応じて診断テストパターン数を再配分するステップを有することにより、診断テストパターン数を増やすことなく故障検出数を向上させることができる。
【図面の簡単な説明】
【００１８】
【図１】診断テストパターン生成するためのハードウエア構成図である。
【図２】BIST回路の概略構成図である。
【図３】本発明の実施例における故障数比で診断テストパターン数を配分するフローチャート図である。
【図４】本発明の実施例における診断テストパターン数を再配分するフローチャート図である。
【図５】本発明の実施例における故障数比で診断テストパターン数を配分した検出故障数のイメージ図である。
【図６】LSI設計の概略フローチャート図である。
【図７】従来のパス数比で診断テストパターン数を配分するフローチャート図である。
【図８】従来のパス数比で診断テストパターン数を配分した検出故障数のイメージ図である。
【発明を実施するための形態】
【００１９】
以下、本発明の実施例を図面に基づいて説明する。
図１は、本発明を実施するための装置の構成図の例である。装置は、コンピュータネットワーク上で接続される複数のサーバコンピュータ101と、複数のクライアントコンピュータ102とから構成されている。本発明の診断テストパターン数の最適化プログラムは、通常ハードディスクとして存在するサーバコンピュータ101の補助記憶装置に記憶されている。
本発明を実施するには、クライアントコンピュータ102を構成する入力装置の一つであるキーボードによりコマンドを入力し、サーバコンピュータ101の補助記憶装置上に存在する診断テストパターン生成プログラムおよび、検出故障数確認プログラムの実行を指示する。そしてサーバコンピュータ101の補助記憶装置にあったプログラムが主記憶装置にロードされて、制御装置により実行される。実行後は、故障の検出のし易さに応じて再配分した診断テストパターン数と故障シミュレーション結果を、例えばクライアントコンピュータ102を構成する出力装置ディスプレイ等で確認できる。
【００２０】
図２は、BIST論理の構成の概略を示す説明図である。BIST論理206は、乱数発生器203、圧縮器204、制御回路205から構成される。乱数発生器203と圧縮器204の間には被テスト回路202および、フリップフロップ201が接続されている。BIST論理206とフリップフロップ201は接続線208で接続され、被テスト回路202とフリップフロップ201は接続線209で接続され、フリップフロップにはクロック信号線207が接続されている。乱数発生器203で生成した診断テストパターンを、被テスト回路202および、フリップフロップ201を経由して圧縮器204へ伝搬させ、圧縮器204内で受信したデータが期待値と合っているか比較し、被テスト回路202が故障しているかどうかを判断する。
【００２１】
図３に診断テストパターン数の配分を、故障の検出のし易さに応じて再配分するフローチャートを示す。S301〜S305は、図７のS701〜S705と同一の処理である。
S301でTPI回路を挿入し、S302でBIST論理を生成し、S303でレイアウト設計を実施し、S304で診断テストパターン生成処理を実施し、そしてS305で故障シミュレーションを実施する。S306の故障検出率の確認では、S305の結果として得られる故障検出数・故障検出率302の確認から故障検出率が目標以上かを判定し、目標以上であれば終了し、目標未満の場合はS307において、前記故障検出数・故障検出率302の確認および故障検出数のｍａｘ基準値とｍｉｎ基準値303の確認から故障検出数が０又はｍｉｎ基準値以下のテストグループ、及び故障検出数がｍａｘ基準値以上のテストグループが存在するかを判定し、存在しない場合はS301へ戻りTPI回路の挿入から再実行し、存在する場合はS308において、故障検出数・故障検出率302の確認および故障検出数のｍａｘ基準値とｍｉｎ基準値303の確認から診断テストパターン数の再配分を行い、前記S304に戻って、S308の処理の結果で得られるテストパターン配分指示301により診断テストパターン生成処理を実施する。
【００２２】
図４は、図３のS308の診断テストパターン数の再配分の処理のフローチャートである。
S401においてカウンターｉ、カウンターｊを０にセットし、S403において故障検出数が０又は所定のｍｉｎ基準値以下かどうかを判定し、０又は所定のｍｉｎ基準値以下の場合は、S404においてテストパターン削除用データベースのｉ番目にテストグループ名を記憶した上で、S405においてカウンターｉに＋１を加え、故障検出数が未確認のテストグループがなくなるまでS403からのステップを繰り返すべく前記S402に戻る。
S403において、故障検出数が所定のｍｉｎ基準値を超えている場合は、S406において各テストグループにおけるテストパターン発生時の故障検出数がｍａｘ基準値以上かどうかを判定し、ｍａｘ基準値以上の場合は、S407においてテストパターン追加用データベースのｊ番目にテストグループ名と基準超過分の故障検出数（故障検出数−ｍａｘ基準値）を記憶した上で、S408においてカウンターｊに１を加え、故障検出数が未確認のテストグループがなくなるまでS403からのステップを繰り返すべく前記S402に戻る。
S406において、故障検出数が所定のｍａｘ基準値より少ない場合は、故障検出数が未確認のテストグループがなくなるまでS403からのステップを繰り返すべく前記S402に戻る。
故障検出数が未確認のテストグループがなくなった場合には、S409においてカウンターｊが０を超える場合に、S410において、前記S407のテストパターン追加用データベースに基準値超過分の故障検出数が少ないグループから順に、テストパターン数を下記式で配分する。
配分するテストパターン数＝ｉ×基準値超過分の故障検出数÷基準値超過分の総故障検出数（小数点以下は切り捨て）
ただし、
基準値超過分の故障検出数が最も多いテストグループに配分するパターン数＝ｉ−配分済パターン数
とする。
S411において、カウンターｊから１を減算して、テストパターンを配分するテストグループがなくなるまでS410からのステップを繰り返すべく、前記S409に戻る。そして、テストパターンを配分するテストグループがなくなったところで、S412においてカウンターiが０を超える場合に、S413において、テストパターン削除用データベースのｉ番目に記憶したグループのパターン割り当て分を削除して、S414において、カウンターｉから１を減算して、カウンターｉが０になるまで、S413からのステップを繰り返して、終了する。
【００２３】
このようにして、例えば、ｍｉｎ基準値を１０と設定し、診断テストパターンの発生回数が１００回可能であった場合でも、５０回診断テストパターンを発生させた時点で新規に検出される故障数が１０以下であれば、これ以上診断テストパターンを発生させても検出される故障はわずかであると判断し、残りの５０回分を他のテストグループへの振り分け対象とする。
また、割り当てられた診断テストパターン発生回数の最後で発生した擬似乱数で新たに検出される故障数が任意の基準値以上であった場合、別のテストグループから振り分ける。例えば、ｍａｘ基準値を１００と設定し、診断テストパターンの発生回数が５０回であった場合、５０回診断テストパターンを発生させた時点で新規に検出される故障数が１００件以上であれば、そのテストグループは、更に診断テストパターンを発生させることで故障を検出する可能性があると判断し、他のテストグループからの振り分け対象とする。
【００２４】
このようにして、図８のテストグループ８の４回目以降の５回分、テストグループ９の３回目以降の３回分、テストグループ１０の３回目目以降の２回分の計１０回分の診断テストパターン発生回数を、テストグループ２へ３回分、テストグループ５へ５回分、テストグループ７へ２回分割り当てる。
【００２５】
図５に診断テストパターン発生回数を故障の検出のし易さで診断テストパターン数の配分を見直した後のテストグループと検出故障数のイメージ図を示す。テストグループ８〜テストグループ１０の検出故障数504において、検出故障数が０件となる箇所がテストグループ９の２回目だけとなり、テストグループ２の検出故障数501、テストグループ５の検出故障数502、テストグループ７の検出故障数503において、診断テストパターン発生回数が、それぞれ３回、５回、２回追加されたことにより故障がより多く検出されている。これにより、故障検出数累計505は、約１５８０００件となり、再配分前の図８の故障検出数累計804と比較して約２０００件増加している。
【産業上の利用可能性】
【００２６】
本発明は、BIST技術によるテスト機構を備えた半導体集積回路の診断テストに適用することができる。
【符号の説明】
【００２７】
101  サーバコンピュータ
102  クライアントコンピュータ
201  フリップフロップ
202  被テスト回路
203  乱数発生器
204  圧縮器
205  制御回路
206  BIST論理
207  クロック信号線
208、209  接続線
505  検出故障数累計
804  検出故障数累計
【図１】
0005522380.tif 000002
【図２】
0005522380.tif 000003
【図３】
0005522380.tif 000004
【図４】
0005522380.tif 000005
【図６】
0005522380.tif 000006
【図７】
0005522380.tif 000007
【図５】
0005522380.tif 000008
【図８】
0005522380.tif 000009