説明

半導体集積回路の診断テストパターン数最適化プログラム

【課題】
組込み自己試験法によるテスト機構を備えた半導体集積回路において、診断テストパターン数を増加させずに故障検出率を向上させることができるプログラムを提供する。
【解決手段】
診断テストパターンとして発生した擬似乱数の各々で新たに検出される故障数が0又は、所定の基準値以下であるかを判定するステップと、テストグループに割り当てられた診断テストパターン発生回数の最後で発生した擬似乱数で新たに検出される故障数が任意の基準値以上であるかを判定するステップとから、パス数比でテストグループに割り当てられた診断テストパターン数を、故障の検出のし易さ(難易度)に応じて再配分することで診断テストパターン数を最適化し、故障検出率を向上させる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、組込み自己試験法(Built-In-Self-Test、BIST)によるテスト機構を備えた半導体集積回路を診断するための診断テストにおける診断テストパターン数を最適化するプログラムに関するものである。
【背景技術】
【0002】
従来、BIST技術によるテスト機構を備えた半導体集積回路としては、まず、フリップフロップに供給されるクロックの種別ごとにBIST論理を自動生成し、次に、BIST論理中の擬似乱数発生器において、診断するための診断テストパターンとして擬似乱数を発生させ、被テスト回路を経て圧縮器へと伝搬させ、受信したデータが期待値と合っているか比較し、故障の有無を判断する。そして、この診断テストパターンを使用し、半導体集積回路が壊れていないかどうかの診断を実施する。すなわち、BIST技術を使用して自動生成されたBIST論理と、擬似乱数による診断テストパターンを使用して、半導体集積回路が壊れていないかどうかの診断を実施することが行われていた。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開平7-55895号公報
【特許文献2】特開2004-219186号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
まず、LSI設計のフローチャートを図6に示す。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診断をする。
【0005】
上述したBIST技術によるテスト機構を備えた半導体集積回路では、診断テストパターンが擬似乱数であるため、未活性分岐回路やテストされない回路が残ってしまい、十分な故障検出率が得られないという問題があった。そこで、活性化頻度の偏りを分散させるために、テストポイントインサーション(Test-Point-Insertion、TPI)技術を用いることが行われている。TPI技術は、ゲートレベルのネットリストを用いて一旦故障シミュレーションを実施し、可制御性・可観測性の解析を行い、可制御性・可観測性が悪い箇所にテスト回路を挿入するという技術である。
【0006】
特開平7-55895号公報(特許文献1)では、BIST技術を使用しない場合の高効率故障検出用診断テストパターンの作成方法が開示されている。
【0007】
特開2004-219186号公報(特許文献2)では、TPI技術は使用せず、擬似乱数を使用した診断テストパターンでは活性化が困難なエンコーダやデコーダ等の回路に対して、人手で補助回路を設けることによりテスト効率を向上させる方法が開示されている。
【0008】
従来技術では、まず、フリップフロップを、接続されるクロックの種別ごとにグループ化し、このクロックの種別ごとにグループ化したフリップフロップ群をテストグループと呼び、テストグループ番号という追い番を付けて区分している。
図2のBIST回路の構成図に示すごとく、例えば、クロック信号線207であるCK1が接続されるフリップフロップ群をテストグループ1と呼び、クロック信号線207であるCK2が接続されるフリップフロップ群をテストグループ2と呼ぶ。
次に、診断テストパターン数を、テスタのメモリの制約範囲内という条件の下で、テストグループごとのパス数比に応じて自動配分する。診断テストパターン数の総数は、パターン数が多いとLSIテスト時間が長くなり製造コストが高くなるため、少ないパターン数で目標とする故障検出率が得られるようにテスタのメモリの制約範囲内という条件の下で、LSIの回路規模から見積り、1回に発生させられる診断テストパターンの数は、乱数発生器の回路構成から決められる。
診断テストパターン数の総数を、1回に発生させられる診断テストパターンの数で割った値が診断テストパターンの発生回数であり、これをテストグループごとのパス数比で自動配分する。この時、検出できる故障数は、診断テストパターンとして最初に発生される擬似乱数では多数の故障を検出するが、2回目、3回目・・・n回目と擬似乱数を発生させる回数が増加するにつれ、新たに検出される故障数は徐々に減少し、最終的に0又はそれに近い値となる。
【0009】
図7は、従来技術である診断テストパターン数をクロック種別ごとのパス数比で配分した時のフローチャートを示している。S701でTPI回路を挿入し、S702でBIST論理を生成し、S703でレイアウト設計を実施し、S704で診断テストパターン生成処理を実施し、そしてS705で故障シミュレーションを実施する。S706の故障検出数確認では、S705の結果として得られる故障検出数と故障検出率を確認し、S706で故障検出率が目標故障検出率を達成しているか判定し、未達成の場合はS701へ戻りTPI回路の挿入から再実行する。
【0010】
図8のパス数比で診断テストパターン数を配分した検出故障数のイメージ図において、一例として、テストグループ4の検出故障数801では、検出故障数が1回目の約100件から徐々に減少し、割り当てられた診断テストパターンの発生回数が終了した時点の7回目でほぼ0件となり、次のテストグループ5に切り替る。一方、テストグループ5の検出故障数802では、1回目の約4000件から徐々に減少しているが、5回目の約500件まで減少したところで、割り当てられた診断テストパターンの発生回数が終了し、テストグループ6に切り替ってしまう。このようにして、テストグループ1からテストグループ10までの故障検出数累計804は、約156000件となっている。
【0011】
また図8において、テストグループ8〜テストグループ10の検出故障数803では、テストグループ8の4回目〜8回目、テストグループ9の3回目〜5回目、テストグループ10の3回目〜4回目において検出故障数が0件となっている。
【0012】
このように、クロックの種別ごとに区分したテストグループごとに診断テストパターン数をパス数比で自動配分した場合に、テストグループごとにパスごとの論理構造は異なるため、各テストグループの故障検出率には偏りが発生していた。すなわち、パス数が多く、診断テストパターン数が多く割り当てられたテストグループであっても、論理構造が単純で、故障を検出し易い論理の場合、少ない診断テストパターン数で全ての故障を検出してしまい、残りの診断テストパターンが無駄になることがある。逆に、パス数が少なく、診断テストパターン数の割り当てが少ないテストグループであっても、論理構造が複雑で故障を検出し難い論理の場合、与えられた診断テストパターン数では十分な故障数を検出できないことがある。
【0013】
そこで診断テストパターンとして発生させる擬似乱数を多く発生させ、多くの故障を検出することも可能ではあるが、それでは診断テストパターンのデータ量が増加してテスト時間が増加するという問題があった。
【0014】
そこで、本発明が解決しようとする課題は、診断テストパターン数を増加させずに故障検出率を向上させることができるプログラムを提供することである。
【課題を解決するための手段】
【0015】
本発明は、組込み自己試験法によるテスト機構を備えた半導体集積回路の故障を診断する診断テストにおける診断テストパターン数を最適化するプログラムであって、前記半導体集積回路におけるクロックの種別ごとにグループ化したテストグループに割り当てられた診断テストパターン数の内で診断テストパターンとして発生した擬似乱数の各々で新たに検出される故障数が0又は所定の基準値以下であるかを判定するステップと、前記テストグループに割り当てられた診断テストパターン数の内で診断テストパターンとして最後に発生した擬似乱数で新たに検出される故障数が任意の基準値以上であるかを判定するステップと、前記診断テストパターンとして発生した擬似乱数の各々で新たに検出される故障数が0又は所定の基準値以下となるテストグループに割り当てられた診断テストパターン数を削減するステップと、前記診断テストパターンとして最後に発生した擬似乱数で新たに検出される故障数が所定の基準値以上となるテストグループに診断テストパターン数を追加するステップと、前記診断テストパターン数の再割り当て後の故障検出率が目標とする故障検出率を満足しているかを判定するステップとをコンピュータに実行させることを特徴とする。
【0016】
また、新たに検出される故障数が0又は所定の基準値以下となっていて削減したテストグループに割り当てられた診断テストパターン数を、テストグループに割り当てられた診断テストパターン数で新たに検出される故障数が所定の基準値以上となっている箇所に追加することを特徴とする。
【発明の効果】
【0017】
本発明によれば、診断テストパターン数が過剰に配分されているテストグループを判別するステップと、診断テストパターン数が不足しているパスグループを判別するステップと、故障の検出のし易さ(難易度)に応じて診断テストパターン数を再配分するステップを有することにより、診断テストパターン数を増やすことなく故障検出数を向上させることができる。
【図面の簡単な説明】
【0018】
【図1】診断テストパターン生成するためのハードウエア構成図である。
【図2】BIST回路の概略構成図である。
【図3】本発明の実施例における故障数比で診断テストパターン数を配分するフローチャート図である。
【図4】本発明の実施例における診断テストパターン数を再配分するフローチャート図である。
【図5】本発明の実施例における故障数比で診断テストパターン数を配分した検出故障数のイメージ図である。
【図6】LSI設計の概略フローチャート図である。
【図7】従来のパス数比で診断テストパターン数を配分するフローチャート図である。
【図8】従来のパス数比で診断テストパターン数を配分した検出故障数のイメージ図である。
【発明を実施するための形態】
【0019】
以下、本発明の実施例を図面に基づいて説明する。
図1は、本発明を実施するための装置の構成図の例である。装置は、コンピュータネットワーク上で接続される複数のサーバコンピュータ101と、複数のクライアントコンピュータ102とから構成されている。本発明の診断テストパターン数の最適化プログラムは、通常ハードディスクとして存在するサーバコンピュータ101の補助記憶装置に記憶されている。
本発明を実施するには、クライアントコンピュータ102を構成する入力装置の一つであるキーボードによりコマンドを入力し、サーバコンピュータ101の補助記憶装置上に存在する診断テストパターン生成プログラムおよび、検出故障数確認プログラムの実行を指示する。そしてサーバコンピュータ101の補助記憶装置にあったプログラムが主記憶装置にロードされて、制御装置により実行される。実行後は、故障の検出のし易さに応じて再配分した診断テストパターン数と故障シミュレーション結果を、例えばクライアントコンピュータ102を構成する出力装置ディスプレイ等で確認できる。
【0020】
図2は、BIST論理の構成の概略を示す説明図である。BIST論理206は、乱数発生器203、圧縮器204、制御回路205から構成される。乱数発生器203と圧縮器204の間には被テスト回路202および、フリップフロップ201が接続されている。BIST論理206とフリップフロップ201は接続線208で接続され、被テスト回路202とフリップフロップ201は接続線209で接続され、フリップフロップにはクロック信号線207が接続されている。乱数発生器203で生成した診断テストパターンを、被テスト回路202および、フリップフロップ201を経由して圧縮器204へ伝搬させ、圧縮器204内で受信したデータが期待値と合っているか比較し、被テスト回路202が故障しているかどうかを判断する。
【0021】
図3に診断テストパターン数の配分を、故障の検出のし易さに応じて再配分するフローチャートを示す。S301〜S305は、図7のS701〜S705と同一の処理である。
S301でTPI回路を挿入し、S302でBIST論理を生成し、S303でレイアウト設計を実施し、S304で診断テストパターン生成処理を実施し、そしてS305で故障シミュレーションを実施する。S306の故障検出率の確認では、S305の結果として得られる故障検出数・故障検出率302の確認から故障検出率が目標以上かを判定し、目標以上であれば終了し、目標未満の場合はS307において、前記故障検出数・故障検出率302の確認および故障検出数のmax基準値とmin基準値303の確認から故障検出数が0又はmin基準値以下のテストグループ、及び故障検出数がmax基準値以上のテストグループが存在するかを判定し、存在しない場合はS301へ戻りTPI回路の挿入から再実行し、存在する場合はS308において、故障検出数・故障検出率302の確認および故障検出数のmax基準値とmin基準値303の確認から診断テストパターン数の再配分を行い、前記S304に戻って、S308の処理の結果で得られるテストパターン配分指示301により診断テストパターン生成処理を実施する。
【0022】
図4は、図3のS308の診断テストパターン数の再配分の処理のフローチャートである。
S401においてカウンターi、カウンターjを0にセットし、S403において故障検出数が0又は所定のmin基準値以下かどうかを判定し、0又は所定のmin基準値以下の場合は、S404においてテストパターン削除用データベースのi番目にテストグループ名を記憶した上で、S405においてカウンターiに+1を加え、故障検出数が未確認のテストグループがなくなるまでS403からのステップを繰り返すべく前記S402に戻る。
S403において、故障検出数が所定のmin基準値を超えている場合は、S406において各テストグループにおけるテストパターン発生時の故障検出数がmax基準値以上かどうかを判定し、max基準値以上の場合は、S407においてテストパターン追加用データベースのj番目にテストグループ名と基準超過分の故障検出数(故障検出数−max基準値)を記憶した上で、S408においてカウンターjに1を加え、故障検出数が未確認のテストグループがなくなるまでS403からのステップを繰り返すべく前記S402に戻る。
S406において、故障検出数が所定のmax基準値より少ない場合は、故障検出数が未確認のテストグループがなくなるまでS403からのステップを繰り返すべく前記S402に戻る。
故障検出数が未確認のテストグループがなくなった場合には、S409においてカウンターjが0を超える場合に、S410において、前記S407のテストパターン追加用データベースに基準値超過分の故障検出数が少ないグループから順に、テストパターン数を下記式で配分する。
配分するテストパターン数=i×基準値超過分の故障検出数÷基準値超過分の総故障検出数(小数点以下は切り捨て)
ただし、
基準値超過分の故障検出数が最も多いテストグループに配分するパターン数=i−配分済パターン数
とする。
S411において、カウンターjから1を減算して、テストパターンを配分するテストグループがなくなるまでS410からのステップを繰り返すべく、前記S409に戻る。そして、テストパターンを配分するテストグループがなくなったところで、S412においてカウンターiが0を超える場合に、S413において、テストパターン削除用データベースのi番目に記憶したグループのパターン割り当て分を削除して、S414において、カウンターiから1を減算して、カウンターiが0になるまで、S413からのステップを繰り返して、終了する。
【0023】
このようにして、例えば、min基準値を10と設定し、診断テストパターンの発生回数が100回可能であった場合でも、50回診断テストパターンを発生させた時点で新規に検出される故障数が10以下であれば、これ以上診断テストパターンを発生させても検出される故障はわずかであると判断し、残りの50回分を他のテストグループへの振り分け対象とする。
また、割り当てられた診断テストパターン発生回数の最後で発生した擬似乱数で新たに検出される故障数が任意の基準値以上であった場合、別のテストグループから振り分ける。例えば、max基準値を100と設定し、診断テストパターンの発生回数が50回であった場合、50回診断テストパターンを発生させた時点で新規に検出される故障数が100件以上であれば、そのテストグループは、更に診断テストパターンを発生させることで故障を検出する可能性があると判断し、他のテストグループからの振り分け対象とする。
【0024】
このようにして、図8のテストグループ8の4回目以降の5回分、テストグループ9の3回目以降の3回分、テストグループ10の3回目目以降の2回分の計10回分の診断テストパターン発生回数を、テストグループ2へ3回分、テストグループ5へ5回分、テストグループ7へ2回分割り当てる。
【0025】
図5に診断テストパターン発生回数を故障の検出のし易さで診断テストパターン数の配分を見直した後のテストグループと検出故障数のイメージ図を示す。テストグループ8〜テストグループ10の検出故障数504において、検出故障数が0件となる箇所がテストグループ9の2回目だけとなり、テストグループ2の検出故障数501、テストグループ5の検出故障数502、テストグループ7の検出故障数503において、診断テストパターン発生回数が、それぞれ3回、5回、2回追加されたことにより故障がより多く検出されている。これにより、故障検出数累計505は、約158000件となり、再配分前の図8の故障検出数累計804と比較して約2000件増加している。
【産業上の利用可能性】
【0026】
本発明は、BIST技術によるテスト機構を備えた半導体集積回路の診断テストに適用することができる。
【符号の説明】
【0027】
101 サーバコンピュータ
102 クライアントコンピュータ
201 フリップフロップ
202 被テスト回路
203 乱数発生器
204 圧縮器
205 制御回路
206 BIST論理
207 クロック信号線
208、209 接続線
505 検出故障数累計
804 検出故障数累計

【特許請求の範囲】
【請求項1】
組込み自己試験法によるテスト機構を備えた半導体集積回路の故障を診断する診断テストにおける診断テストパターン数を最適化するプログラムであって、
前記半導体集積回路におけるクロックの種別ごとにグループ化したテストグループに割り当てられた診断テストパターン数の内で診断テストパターンとして発生した擬似乱数の各々で新たに検出される故障数が0又は所定の基準値以下であるかを判定するステップと、
前記テストグループに割り当てられた診断テストパターン数の内で診断テストパターンとして最後に発生した擬似乱数で新たに検出される故障数が任意の基準値以上であるかを判定するステップと、
前記診断テストパターンとして発生した擬似乱数の各々で新たに検出される故障数が0又は所定の基準値以下となるテストグループに割り当てられた診断テストパターン数を削減するステップと、
前記診断テストパターンとして最後に発生した擬似乱数で新たに検出される故障数が所定の基準値以上となるテストグループに診断テストパターン数を追加するステップと、
前記診断テストパターン数の再割り当て後の故障検出率が目標とする故障検出率を満足しているかを判定するステップとをコンピュータに実行させることを特徴とする診断テストパターン数最適化プログラム。
【請求項2】
新たに検出される故障数が0又は所定の基準値以下となっていて削減したテストグループに割り当てられた診断テストパターン数を、テストグループに割り当てられた診断テストパターン数で新たに検出される故障数が所定の基準値以上となっている箇所に追加することを特徴とする請求項1記載の診断テストパターン数最適化プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図6】
image rotate

【図7】
image rotate

【図5】
image rotate

【図8】
image rotate


【公開番号】特開2011−185847(P2011−185847A)
【公開日】平成23年9月22日(2011.9.22)
【国際特許分類】
【出願番号】特願2010−53274(P2010−53274)
【出願日】平成22年3月10日(2010.3.10)
【出願人】(000233295)日立情報通信エンジニアリング株式会社 (195)
【Fターム(参考)】