(57)【要約】【課題】テスト回路を挿入する際のＴＡＴの増大や反復処理を抑制する。【解決手段】テストポイント挿入方法は、ネットリストから複数のロジックコーンを抽出する工程と、複数のロジックコーンの各々に示される論理セルの接続関係に基づいて、複数のロジックコーンに対して一の順序を生成する工程と、その順序に従って順に複数のロジックコーンの各々にテストポイントを設定する工程とを備える。【選択図】図１
2011028465.tif 000002
【特許請求の範囲】
【請求項１】
ネットリストから複数のロジックコーンを抽出する工程と、
前記複数のロジックコーンの各々に示される論理セルの接続関係に基づいて、前記複数のロジックコーンに対して一の順序を生成する工程と、
前記順序に従って順に前記複数のロジックコーンの各々にテストポイントを設定する工程
とを具備するテストポイント挿入方法。
【請求項２】
請求項１に記載されたテストポイント挿入方法であって、
前記順序は、前記複数のロジックコーンの各々を構成する少なくとも一つのパスの総数と前記少なくとも一つのパスの各々の論理段数の総和とに基づいて生成される
テストポイント挿入方法。
【請求項３】
請求項２に記載されたテストポイント挿入方法であって、
前記順序は、前記複数のロジックコーンの各々を構成する少なくとも一つのパスの総数をＰ（Ｇ）とし、前記少なくとも一つのパスの各々の論理段数の総和をＰ（Ｌ）とし、α及びβを係数として、以下の式：
（Ｐ（Ｌ）×α）×（Ｐ（Ｇ）×β）
によって生成される数値によって決定される
テストポイント挿入方法。
【請求項４】
請求項１から３のいずれかに記載されたテストポイント挿入方法であって、
更に、予め決められたテスト回路挿入可能数Ｎ１と、１回の処理で設定される前記テストポイントの数Ｎ２と、既に設定された前記テストポイントの数Ｎ３とに基づいて、Ｎ１−Ｎ２≧Ｎ３が満たされた場合にテストポイントの挿入を終了する工程を具備し、
前記設定する工程において、Ｎ１−Ｎ２＜Ｎ３が満たされている間、前記順序に従った前記テストポイントの設定が繰り返される
テストポイント挿入方法。
【請求項５】
請求項１から４のいずれかに記載されたテストポイント挿入方法をコンピュータに実行させるためのプログラム。
【請求項６】
ネットリストから複数のロジックコーンを抽出する抽出部と、
前記複数のロジックコーンの各々に示される論理セルの接続関係に基づいて、前記複数のロジックコーンの各々に対して一の順序を生成する生成部と、
前記順序に従って順に前記複数のロジックコーンの各々にテストポイントを設定する設定部
とを具備するテストポイント挿入システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＬＳＩ（大規模集積回路）等の故障検出に用いられるテスト容易化設計手法および装置に関する。
【背景技術】
【０００２】
ＬＳＩ等の集積回路の複雑化、大規模化に伴い、高い故障検出率を実現するテストパタンの生成には、ＤＦＴ（Ｄｅｓｉｇｎ  Ｆｏｒ  Ｔｅｓｔ）設計が必要になって来ている。ＤＦＴの１つの手段として、スキャン設計を行い且つＡＴＰＧ（Ａｕｔｏｍａｔｉｃ  Ｔｅｓｔ  Ｐａｔｔｅｒｎ  Ｇｅｎｅｒａｔｉｏｎ）を実施することにより、高い検出率のパタンを作成することが出来る。さらに検出率が高いパタンを生成する為には、回路の制御性あるいは観測性を上げるようなＤＦＴ手法（ここでは、テストポイント挿入手法と呼ぶ）が必要となる。
【０００３】
テストポイント挿入方法として、幾つかの方法が知られている。一般的な方法では、ＡＴＰＧによってパタン生成を行い、故障シミュレーションによって制御性及び観測性の悪い部分（故障検出が出来ない部分、あるいは故障検出が難しい部分）を特定する。特定された部分に、制御性及び観測性を向上させるためのテスト回路を挿入する。
【０００４】
しかし、この一般的な方法では、テスト回路を挿入する箇所がＤＦＴ、ＡＴＰＧの後に特定される。従ってテスト回路を挿入するためにＤＦＴ前工程に戻る必要がある。このような方法ではイタレーションの規模が大きい為、設計ＴＡＴの短い製品などには適していない。
【０００５】
背景技術の一例として、特許文献１を挙げる。この文献の図１の処理フローでは、乱数的なパタンを生成し、故障シミュレーションを実施している。そこで得られた回路の故障検出率が十分で無い場合に、テストポイント特定処理が行われる。テストポイントの特定は、以下のように行われる。テストポイント挿入候補を選定し、そのテストポイントに“仮定的に”テスト回路を挿入する。故障シミュレーションを実施し、検出率が改善されるかどうかを見る。検出率が改善された場合に、そのテストポイント挿入候補をテストポイントとして特定する。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０００−２５０９４６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
上に挙げた技術では、パタン生成や故障シミュレーションを用いて故障検出が不可能あるいは困難な箇所を特定する。もしそのような箇所にテスト回路を挿入することで制御性及び観測性が向上すれば、その箇所をテストポイントとして特定する。このような処理においては、テストポイント挿入によって高い改善効果が得られるが、テストポイント挿入箇所を特定するための時間が必要となる。
【０００８】
またＤＦＴ（特にスキャン設計）を行った回路の場合、テストポイント特定後にテスト回路を挿入するためにはＤＦＴ前の工程に戻らなければならない。なぜならば、制御性及び観測性を向上する為のテスト回路にＦＦを使用している場合には、一般的なスキャン設計ツールを用いて自動的にテスト回路のＦＦをスキャンチェインに組み込む為には、スキャン挿入の前段階に戻らなければならないからである。
【課題を解決するための手段】
【０００９】
以下に、［発明を実施するための形態］で使用される番号を括弧付きで用いて、課題を解決するための手段を説明する。これらの番号は、［特許請求の範囲］の記載と［発明を実施するための形態］との対応関係を明らかにするために付加されたものである。ただし、それらの番号を、［特許請求の範囲］に記載されている発明の技術的範囲の解釈に用いてはならない。
【００１０】
本発明の一側面によるテストポイント挿入方法は、ネットリストから複数のロジックコーンを抽出する工程（Ｓ１）と、複数のロジックコーンの各々に示される論理セルの接続関係に基づいて、複数のロジックコーンに対して一の順序を生成する工程（Ｓ２、Ｓ３）と、その順序に従って順に複数のロジックコーンの各々にテストポイントを設定する工程（Ｓ５）とを備える。
【００１１】
本発明の一側面によるテストポイント挿入システムは、ネットリストから複数のロジックコーンを抽出する抽出部（１０−１）と、複数のロジックコーンの各々に示される論理セルの接続関係に基づいて、複数のロジックコーンの各々に対して一の順序を生成する生成部（１０−２）と、その順序に従って順に複数のロジックコーンの各々にテストポイントを設定する設定部（１０−３）とを備える。
【発明の効果】
【００１２】
本発明によれば、設計の初期段階で入手可能なネットリストを用いてロジックコーンの構造や構成を解析し、その解析結果に基づいてテストポイントの特定とテスト回路の挿入を行う。そのためテストポイントを特定するためのＴＡＴの増大や、テスト回路を挿入するための大きな手戻りを伴うイタレーティヴ処理を抑制することができる。
【図面の簡単な説明】
【００１３】
【図１】図１は、本発明の一実施形態におけるテストポイント挿入手法を示すフローチャートである。
【図２】図２は、図３、図４で示すロジックコーン構成を持つ回路例である。
【図３】図３は、図２の回路例を用いて、外部入力端子、ＦＦのデータ出力端子を始点とした場合のロジックコーンを示した回路図である。
【図４】図４は、図２の回路例を用いて、外部出力端子、ＦＦのデータ入力端子を始点とした場合のロジックコーンを示した回路図である。
【図５】図５は、ロジックコーンと論理段数を示した回路例である。
【図６Ａ】図６Ａは、テストポイントが挿入される回路の例である。
【図６Ｂ】図６Ｂは、制御性、観測性の両方を向上させるためにテストポイントに挿入するテスト回路例である。
【図７】図７は、ロジックコーンリストである。（Ａ）、（Ｂ）、（Ｃ）、（Ｄ）はロジックコーン名を示している。
【図８】図８は、ロジックコーン（Ｃ）を削除したロジックコーンリストである。
【図９】図９は、テストポイント特定例を示した図である。
【図１０】図１０は、テストポイント挿入システムの構成を示す。
【発明を実施するための形態】
【００１４】
以下、図面を参照して本発明の実施形態について説明する。図１は本実施形態におけるテストポイント挿入方法のフローチャートである。図５に示したロジックコーン例を用いてこの方法を説明する。
【００１５】
図５は（Ａ）、（Ｂ）、（Ｃ）、（Ｄ）の４つのロジックコーンを持つ回路の例を示す。ロジックコーン（Ａ）は、論理段数２段のＰａｔｈ“ＩＮ１→ＦＦ１”、論理段数３段のＰａｔｈ“ＩＮ１→ＦＦ２”、論理段数４段のＰａｔｈ“ＩＮ１→ＦＦ３”の３つのＰａｔｈで構成されている。ロジックコーン（Ｂ）は、論理段数４段のＰａｔｈ“ＯＵＴ１→ＦＦ１０”、論理段数４段のＰａｔｈ“ＯＵＴ１→ＦＦ１１”の２つのＰａｔｈで構成されている。ロジックコーン（Ｃ）は、論理段数１段のＰａｔｈ“ＦＦ７→ＦＦ６”、論理段数１段のＰａｔｈ“ＦＦ７→ＦＦ５”、論理段数６段のＰａｔｈ“ＦＦ７→ＦＦ２”、論理段数４段のＰａｔｈ“ＦＦ７→ＦＦ４”の４つのＰａｔｈで構成されている。ロジックコーン（Ｄ）は、論理段数４段のＰａｔｈ“ＦＦ７→ＦＦ８”、論理段数４段のＰａｔｈ“ＦＦ７→ＦＦ９”、論理段数８段の“ＦＦ７→ＦＦ１１”の３つのＰａｔｈで構成されている。
【００１６】
図１のフローチャートに示されるように、本実施形態のテストポイント挿入方法は、以下の工程を有する。
ステップＳ１：入力されたネットリストからロジックコーンを抽出する。
ステップＳ２：各ロジックコーンを数値化する。
ステップＳ３：ロジックコーンリストを作成する。図７はロジックコーンリストの一例を示す。
ステップＳ４：終了条件を判定する。
ステップＳ５：テスト回路を挿入する。
ステップＳ６：ロジックコーンリスト修正の動作を繰り返す。
【００１７】
図２は、ここで言うロジックコーンを説明する為に用意した回路例であり、図３及び図４に示された回路図の元回路として使用する。この回路は、外部入力端子ＩＮ１、ＩＮ２及びＩＮ３、外部出力端子ＯＵＴ１及びＯＵＴ２、フロップフロップ（以降ＦＦと呼ぶ）ＦＦ１、ＦＦ２、ＦＦ３、ＦＦ４を有する。外部入力端子、外部出力端子、ＦＦの間に描かれた雲形の記号は任意の組み合わせ回路を表現している。
【００１８】
図３は、回路の信号出力側の各端子から出力側に向う経路（Ｐａｔｈ）の集まりによって形成されるロジックコーンを示す。各経路の始点は、外部入力端子ＩＮ１、ＩＮ２、ＩＮ３とＦＦ１、ＦＦ２、ＦＦ３、ＦＦ４の各々のデータ出力端子である。各経路の終点は、始点から外部出力端子ＯＵＴ１、ＯＵＴ２の方向にトレースして、外部出力端子ＯＵＴ１、ＯＵＴ２あるいは、ＦＦ１、ＦＦ２、ＦＦ３、ＦＦ４のいずれかのデータ入力端子まで到達する経路の到達点である。例えば、図３のロジックコーンＣｏｕｔ＿１は、外部入力端子ＩＮ１を始点とし、ＦＦ１のデータ入力端子、ＦＦ２のデータ入力端子をそれぞれ終点とするＰａｔｈの集まりである。
【００１９】
図４は、回路の信号入力側の各端子から入力側に向う経路の集まりによって形成されるロジックコーンを示す。この経路の始点は、外部出力端子ＯＵＴ１、ＯＵＴ２とＦＦ１、ＦＦ２、ＦＦ３、ＦＦ４の各々のデータ入力端子である。各経路の終点は、始点から外部入力端子ＩＮ１、ＩＮ２、ＩＮ３の方向にトレースして、外部入力端子ＩＮ１、ＩＮ２、ＩＮ３あるいはＦＦ１、ＦＦ２、ＦＦ３、ＦＦ４のデータ出力端子のいずれかに到達する経路の到達点である。例えば、図４のロジックコーンＣｉｎ＿３は、ＦＦ３のデータ入力端子を始点とし、ＦＦ１のデータ出力端子、ＦＦ２のデータ出力端子をそれぞれ終点とするＰａｔｈの集まりである。
【００２０】
図６Ａは、本実施形態のテストポイント挿入方法が適用される回路の例を示す。図６Ａのフリップフロップ素子６−１とフリップフロップ素子６−２との間に図６Ｂに示すように制御性・観測性テスト回路６−３を挿入することにより、制御性及び観測性を向上する事が可能である。
【００２１】
図７は、図５を例とした場合のロジックコーンリストを示している。このようなロジックコーンリストの上位からテストポイントの設定が行われる。図５の例では、（Ｃ）、（Ｄ）、（Ａ）、（Ｂ）の順序でテストポイントの設定が行われる。図８はロジックコーン（Ｃ）に対してテスト回路を挿入した後のロジックコーンリストを示している。ロジックコーン（Ｃ）がリストから外されることにより、次にロジックコーン（Ｄ）に対してテストポイントの設定が行われる。
【００２２】
図９は、テストポイント特定例を示している。素子Ｅ１〜Ｅ６が存在する経路ＦＦ７→ＦＦ２を３等分した位置Ｐ１、Ｐ２にテストポイントが設定された例が示されている。
【００２３】
以下、図１に示したテストポイント挿入方法の各工程の詳細について説明する。
ステップＳ１：ロジックコーン抽出
予め記憶装置に保存したネットリストから全ての外部入出力端子、全てのＦＦのデータ入力端子、出力端子を始点、終点として複数のロジックコーンを抽出する。図５に示された（Ａ）、（Ｂ）、（Ｃ）、（Ｄ）の４つのロジックコーンのみを抽出できたと仮定する。
【００２４】
ステップＳ２：ロジックコーン数値化
抽出された（Ａ）、（Ｂ）、（Ｃ）、（Ｄ）の複数のロジックコーンの各々に示される論理セルの接続関係（接続関係の情報はネットリストから得ることができる）に基づいて、複数のロジックコーンの各々に対してロジックコーン値ＣｏｒｎＶを与える。この処理により各ロジックコーンが数値化される。
【００２５】
ロジックコーンの数値化は、各ロジックコーンを構成するパスの総数と、各パスの論理段数の総和とに基づいて行われる。例えば以下のロジックコーン値算出式によってロジックコーン値ＣｏｒｎＶを決めることができる。
ＣｏｒｎＶ（Ｃｏｒｎ名）＝（Ｐ（Ｌ）×α）×（Ｐ（Ｇ）×β）
Ｐ（Ｌ）は当該ロジックコーンを構成する全てのＰａｔｈの論理段数の総和、Ｐ（Ｇ）は当該ロジックコーンを構成するＰａｔｈの総数を示す。このような全てのＰａｔｈの論理段数の総和とＰａｔｈの総数との積は、各ロジックコーンについてのテストの必要性を表すために好適な指標である。
【００２６】
αはＰａｔｈの論理段数の総和が制御性及び観測性に与える影響度を示す。βはＰａｔｈの数が制御性及び観測性に与える影響度を示す。αとβは、“０＜α、β＜＝１”を満たす係数であり、例えば設計者が入力装置に対して行う入力操作によって設定される。本例では、α＝β＝１としてＣｏｒｎＶ（Ａ）〜ＣｏｒｎＶ（Ｄ）を計算する。
【００２７】
まずロジックコーン（Ａ）の値ＣｏｒｎＶ（Ａ）は以下のように計算される。
ロジックコーン（Ａ）は、論理段数２段のＰａｔｈ“ＩＮ１→ＦＦ１”、論理段数３段のＰａｔｈ“ＩＮ１→ＦＦ２”及び論理段数４段のＰａｔｈ“ＩＮ１→ＦＦ３”の３つのＰａｔｈで構成されている。即ちＰ（Ｌ）＝２＋３＋４＝９、Ｐ（Ｇ）＝３
である。従ってロジックコーン値は以下のようになる。
ＣｏｒｎＶ（Ａ）＝９α×３β＝２７
【００２８】
同様に（Ｂ）、（Ｃ）、（Ｄ）のＣｏｒｎＶは以下のように算出される。
ＣｏｒｎＶ（Ｂ）＝（４＋４）α×２β＝８α×２β＝１６
ＣｏｒｎＶ（Ｃ）＝（１＋１＋４＋６）α×４β＝１２α×４β＝４８
ＣｏｒｎＶ（Ｄ）＝（４＋４＋８）α×３β＝１２α×３β＝４８
【００２９】
ステップＳ３：ロジックコーンリスト作成
ステップＳ２の計算結果より、数値化されたロジックコーンの値の大きい順に並べてリスト化することにより、複数のロジックコーンに対して一の順序（ロジックコーン間ランキング）が生成される。同じ数値同士のロジックコーンについては、その中での順番付けは予め設定された任意のアルゴリズムにより自動的に行われる。本例ではロジックコーン（Ｃ）とロジックコーン（Ｄ）の数値が共に４８となる。その為、この２つのロジックコーン間で順番付けを行う必要がある。以下の説明においては、図７に示すようにロジックコーン（Ｃ）の方がロジックコーン（Ｄ）よりも順序が上であるようにロジックコーンリストを作成する事とした。
【００３０】
ステップＳ４：終了条件判定
予め決められたテスト回路挿入可能数をＮ１とし、１回の処理で挿入されるテストポイント（テスト回路）の数をＮ２とし、既に設定され挿入されたテストポイント数をＮ３とする。Ｎ１−Ｎ２＜Ｎ３が満たされる場合はステップＳ５に進む。Ｎ１−Ｎ２≧Ｎ３の場合は、テストポイント挿入処理が終了される。
【００３１】
テスト回路挿入可能数Ｎ１は、予め決められたテスト回路によるオーバヘッド面積の上限値とテスト回路１つの面積から算出する。例えば、“テスト回路によるオーバヘッド面積の上限値”を１０００Ｇｒｉｄｓ、“テスト回路１つの面積”を１００Ｇｒｉｄｓとした場合、１０００／１００＝１０となる。従って、テスト回路挿入可能数は、１０個となる。１回の処理で挿入するテスト回路数Ｎ２は、１回のステップＳ５の処理で挿入されるテスト回路数である。挿入したテスト回路数Ｎ３は、本処理で実際に挿入したテスト回路の総数である。
【００３２】
ステップＳ５：テスト回路挿入
ステップＳ３で作成されたリストの順序に従って順に、複数のロジックコーンの各々にテストポイントが設定される。具体的には、ロジックコーンリストの一番上（順序が最上位）のロジックコーンがテスト回路挿入対象のロジックコーンとして選択され設定される。本例ではロジックコーン（Ｃ）がテスト回路の挿入対象として設定される。
【００３３】
ロジックコーン（Ｃ）の中で最も論理段数の多いＰａｔｈを選択する。この場合、論理段数６のＰａｔｈ“ＦＦ７→ＦＦ２”が対象Ｐａｔｈとなる。対象Ｐａｔｈを“１回の処理で挿入するテスト回路数＋１”等分し、分割されたＰａｔｈにテスト回路を挿入する（本例では、“１回の処理で挿入するテスト回路数”を“２”とする）。つまり、図９のように論理段数６のＰａｔｈ“ＦＦ７→ＦＦ２”を３等分し、分割されたＰａｔｈに図６のテスト回路を２つ挿入する。等分できない場合は、可能な限り等分に近い分割が行われ、各分割点にテスト回路が挿入される。
【００３４】
ステップＳ６：ロジックコーンリスト修正
ロジックコーンリストから、ステップＳ５でテスト回路を挿入したロジックコーンを削除する。つまり図８のように最上位のロジックコーンを削除し、第２位以下のロジックコーンの順序を繰り上げる。
【００３５】
上記ステップＳ４からステップＳ６の処理を“テスト回路挿入可能数”を超えるまで繰り返し実施する。もしステップＳ６でロジックコーンリストが“空”になったが、“テスト回路挿入可能数”を超えていない場合、テスト回路挿入済みのネットリストを入力ネットリストとして、再度、ステップＳ１からステップＳ６の処理を繰り返す。
【００３６】
以上のように、設計の初期段階で入手可能なネットリストを使用して、そのロジックコーンの構造、構成を解析した結果から、テストポイントを挿入するロジックコーンの優先順位の決定と、ロジックコーン内部のどの部分にテスト回路を挿入するかの決定を行う事が出来る。
【００３７】
設計の初期段階で入手可能な情報を元に、設計初期段階にテストポイント挿入を実施する事で、テストポイント挿入処理に伴うイタレーティヴ処理を回避できる。またロジックコーンの解析に基づいてテストポイントの特定とテスト回路の挿入が可能である為、短時間でテスト回路挿入が可能である。この２つの特徴から、設計ＴＡＴの短いＬＳＩ製品に対してもテストポイント挿入が実施できる。
【００３８】
図１０は、以上に説明した処理を行うためのテストポイント挿入システム１０を示す。テストポイント挿入システム１０は、抽出部１０−１、生成部１０−２、設定部１０−３、終了判定部１０−４の各部を含む。テストポイント挿入システム１０は、コンピュータによって実現することができる。これら各部は、記憶媒体に格納されたコンピュータ可読なプログラムをＣＰＵが読み出して実行するによって実現することができる。
【００３９】
このようなテストポイント挿入システム１０においては、ネットリストが予め記憶媒体に格納される。抽出部１０はステップＳ１の処理を行うことにより、ネットリストからロジックコーンを自動的に抽出する。生成部１０−２は、予め記憶媒体に格納されたロジックコーン値算出式に基づいて、抽出された各ロジックコーンを数値化してロジックコーンリストを生成する（ステップＳ２、ステップＳ３）。終了判定部１０−４はステップＳ４の判定処理を行う。設定部１０−３は、ステップＳ５の処理によりテスト回路を自動的に挿入する。設定部１０−３は更に、テスト回路を挿入したロジックコーンをロジックコーンリストの最上位から外し、第２位以下のロジックコーンを繰り上げるリスト更新処理を行って、ステップＳ４の処理に戻す。このような動作を行うテストポイント挿入システム１０により、テストポイントの挿入を実現することができる。
【符号の説明】
【００４０】
６−１、６−２  フリップフロップ素子
６−３  制御性・観測性テスト回路
１０  テストポイント挿入システム
１０−１  抽出部
１０−２  生成部
１０−３  設定部
１０−４  終了判定部
【図１】
2011028465.tif 000003
【図２】
2011028465.tif 000004
【図３】
2011028465.tif 000005
【図４】
2011028465.tif 000006
【図５】
2011028465.tif 000007
【図６Ａ】
2011028465.tif 000008
【図６Ｂ】
2011028465.tif 000009
【図７】
2011028465.tif 000010
【図８】
2011028465.tif 000011
【図９】
2011028465.tif 000012
【図１０】
2011028465.tif 000013