(57)【特許請求の範囲】
【請求項１】
テスト対象回路と、
実質的に通常の機能動作を行わせるテストにおいて検出されない故障に対応する前記テスト対象回路内のノード、または端子を観測ポイントとし、該観測ポイントにおけるデータを入力とする、複数個のフリップフロップを備える観測用回路と、
外部クロック信号、外部リセット信号、及び外部動作モード信号を入力され、前記各信号に応じて、前記観測用回路を制御するための内部クロック信号、内部リセット信号、及び動作モード信号を生成する制御回路と
を具備し、前記観測用回路は、
前記内部リセット信号に応じて前記各フリップフロップをリセットし、
前記動作モード信号に応じて、前記観測ポイントにおけるデータを入力とするシグネチャ圧縮動作、または前記フリップフロップがシリアル接続され、データをシリアルに転送するシリアル動作を行い、
前記シリアル動作は前記シグネチャ圧縮動作の結果を前記テスト対象回路外部に読み出すために用いられ、
前記シグネチャ圧縮動作時に入力される前記データは、前記テスト対象回路に実質的に通常の機能動作を行わせるテストパターンに従って、前記テスト対象回路内部で生成されるものであり、
前記観測ポイントは、故障シミュレーションで得られた未検出故障の内の、前記半導体集積回路の機能レベルの回路接続情報上のノード名と対応付け可能なノード、または端子である
ことを特徴とする半導体集積回路。
【請求項２】
前記観測ポイントは、前記内部リセット信号入力後から該観測ポイントにおけるデータが確定値を取るまでに必要な時刻毎にグループ化され、
前記観測用回路は、前記グループ化された各観測ポイント群毎に複数設けられ、
前記制御回路は、前記観測ポイント群毎に設けられた複数の前記観測用回路毎に、異なる前記内部リセット信号を供給する
ことを特徴とする請求項１記載の半導体集積回路。
【請求項３】
前記制御回路は、前記内部リセット信号を生成する制御ロジックを含み、
前記制御ロジックは、シリアル動作を利用して前記観測用回路をリセットできるように構成されている
ことを特徴とする請求項１または２記載の半導体集積回路。
【請求項４】
前記観測用回路は、特定の前記観測ポイントからの入力データを強制的に無効とし、該データを固定の値とする
ことを特徴とする請求項１乃至３いずれか１項記載の半導体集積回路。
【請求項５】
前記観測ポイントの各々が、相異なるクロック信号に同期している場合、
前記観測ポイントは同じクロック信号毎にグループ化され、
前記観測用回路は、前記グループ化された観測ポイント群毎に設けられ、前記グループ化された観測ポイントが同期するクロック信号と同一の内部クロック信号で動作する
ことを特徴とする請求項１乃至４いずれか１項記載の半導体集積回路。
【請求項６】
前記観測ポイントの各々は、相異なるクロック信号に同期し、前記観測ポイントの少なくとも１つは、該観測ポイントが同期している前記クロック信号と異なる前記内部クロック信号に同期して動作する前記観測用回路に接続されている
ことを特徴とする請求項１乃至４いずれか１項記載の半導体集積回路。
【請求項７】
前記観測用回路に接続されている前記各観測ポイントのデータは、前記テスト対象回路に実質的に通常の機能動作を行わせる前記テストパターンに応じて選択的に該観測用回路に入力される
ことを特徴とする請求項１乃至６いずれか１項記載の半導体集積回路。
【請求項８】
第１故障シミュレーションにより得られ、該第１故障シミュレーションでは検出されなかった故障を列挙した第１未検出故障リストから観測ポイント候補、及び該観測ポイントにおける故障の未検出の種類を含む観測ポイント情報を抽出するステップと、
前記観測ポイント候補を選別して第１観測ポイントを得るステップと、
前記第１観測ポイント、第１ゲートレベルの回路接続情報、及びテスト対象回路における通常動作用の第１テストパターンを用いて第２故障シミュレーションを行い、前記第１観測ポイント挿入の効果を確認すると共に、第２未検出故障リストを得るステップと、
前記第２故障シミュレーションにより、挿入効果の少ない前記第１観測ポイントを削除して、第２観測ポイントを得るステップと
を具備し、前記観測ポイント候補は、前記機能レベルの回路接続情報上のノード名と対応付け可能なノード、または端子であることを特徴とする半導体集積回路のテスト方法。
【請求項９】
前記第１観測ポイントを得るステップの後、
前記第１観測ポイント、第１ゲートレベルの回路接続情報、及びテストパターンを用いて論理シミュレーションを行い、該第１観測ポイントにおけるシミュレーション期待値を得るステップと、
得られた前記シミュレーション期待値に応じて、前記テスト結果を受ける観測用回路及び該観測用回路を制御する制御回路の構成、接続、並びに該回路の動作タイミングを決定するステップと
を更に備えることを特徴とする請求項８記載の半導体集積回路のテスト方法。
【請求項１０】
前記テスト結果を受ける観測用回路及び該観測用回路を制御する制御回路の構成、並びに該回路の動作タイミングを決定するステップの後、
前記第２観測ポイント、前記観測用回路及び前記制御回路の構成、該回路の動作タイミング、並びに機能レベルの回路接続情報を用いて前記第１ゲートレベルの回路接続情報の変更を行い、第２ゲートレベルの回路接続情報を得るステップを更に備える
ことを特徴とする請求項９記載の半導体集積回路のテスト方法。
【請求項１１】
前記第２観測ポイントを得るステップの後、
前記第２観測ポイント、第１ゲートレベルの回路接続情報、第１未検出故障リスト、及び第１テストパターンを用いて第３故障シミュレーションを行い、第３未検出故障リスト及び故障検出率を得るステップを更に備える
ことを特徴とする請求項８乃至１０いずれか１項記載の半導体集積回路のテスト方法。
【請求項１２】
前記観測ポイント候補及び前記観測ポイント情報を抽出するステップの前に、
テスト対象回路内部に仮定される故障を列挙した第４未検出故障リストを得るステップと、
前記第４未検出故障リストから、前記機能レベルの回路接続情報上のノード名と対応付け不可能なノード、または端子を除くことにより第５未検出故障リストを得るステップと、
前記第５未検出故障リスト、第１ゲートレベルの回路接続情報、及び第１テストパターンを用いて前記第１故障シミュレーションを行うステップと
を更に備えることを特徴とする
ことを特徴とする請求項８乃至１１いずれか１項記載の半導体集積回路のテスト方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、半導体集積回路及びそのテスト方法に関するもので、特に半導体集積回路の面積効率を向上させ、且つ故障検出率を向上させるための技術に係るものである。
【０００２】
【従来の技術】
従来、マイコン等のLSI（Large Scale Integrated circuit）製品では、機能検証目的のために人手で作成した通常動作用のテストパターンを、量産での出荷テストにも用いることが一般的に行われてきた。この方法における故障検出率の向上は、テストパターンを用いて対象とするLSIの故障シミュレーションを実施し、その結果得られる未検出故障リストを調べ、その未検出故障を検出できそうなテストパターンを追加して再度故障シミュレーションを行い、その効果を確認する、という形を基本として進められる。この方法は、テスト回路の付加が全く必要ないという意味で、最も面積コストの低い方法である。しかし、比較的高い故障検出率（８５％〜９２％程度）の達成は容易なものの、LSI内部の深いロジックや、LSIのテスト環境の設定により検出困難な未検出故障を外部からのテストパターンだけによって完全に検出することは極めて困難であった。そのため、最近のLSI商品に要求されている、例えば９５％以上という高い故障検出率の達成には膨大な労力を費やす必要があり、しかも必ず目標値に到達できるという保証が得られないと言う点が大きな問題であった。
【０００３】
一方、大規模なシステムLSI製品に用いられている、フルスキャン設計をベースとするテスト容易化設計手法では、ATPG(Automatic Test Pattern Generation)ツールによって９５％以上の故障検出率のテストパターンを容易に達成することができる。しかし、この方法では内部のほぼ全てのフリップフロップ、ラッチのスキャン化（スキャン動作可能な回路構成への変更）が必要で、これに伴う面積増加が５％から２０％にも及ぶ場合がある。そのため、長期に亙って生産され、コスト競争の厳しいマイコン製品等では必ずしも満足の出来る解決法とはなっていなかった。
【０００４】
基本的なスキャン設計手法につき図１７を用いて説明する。図１７はLSI内部の概略構成を示している。本手法は、スキャン用のクロックシステムがシステムクロックと共通に使用される方式である。
【０００５】
図示するように、LSI100内部には組み合わせロジック（ランダムロジック）200と、LSI100のメモリ要素であるフリップフロップ210-1〜210-4が設けられている。また、各フリップフロップ210-1〜210-4の各入力Dの直前には、テストモード信号TESTにより制御されるマルチプレクサ220-1〜220-4が設けられている。１段目のマルチプレクサ220-1には、スキャンイン端子SIから入力されるテストパターンと、組み合わせロジック200からの出力とが入力され、TEST信号により選択されたいずれかがフリップフロップ210-1に入力される。次段のマルチプレクサ220-2には、フリップフロップ210-1の出力Qと組み合わせロジック200からの出力が入力され、選択されたいずれかがフリップフロップ210-2の入力となる。以降、フリップフロップ210-3、210-4についても同様であり、最終段のフリップフロップ210-4の出力がスキャンアウト端子SOとなる。
【０００６】
上記回路において、TEST=0の時は通常動作が行われる。すなわち、各フリップフロップ210-1〜210-4には通常動作の組み合わせロジック200からの出力がクロックに同期して格納される。一方、TEST=1の時はスキャン動作が行われる。すなわち、全てのフリップフロップ210-1〜210-4が、スキャンイン端子SIを入力、スキャンアウト端子SOを出力とするシフトレジスタとして動作する。そして、LSI100外部からフリップフロップ210-1〜210-4に任意のテストデータをシリアルに入力できると共に、それらの内容をLSI100外部に読み出せるように（スキャン動作可能に）なる。スキャンテストは、
（１）TEST=1として必要なテストデータの設定とテスト結果の読み出しをシリアルに実施、
（２）TEST=0として通常動作のテスト結果を各フリップフロップに格納、
という２種類のステップを繰り返し行うことによって実行される。このように、スキャン設計手法によりLSI内部のフリップフロップ、ラッチは仮想的に外部の端子と同等に扱えるようになる。そのため、テストパターン発生には組み合わせ回路に対するテスト発生アルゴリズムが適用できることになり、現在では市販のATPGツールを活用して高い故障検出率を比較的容易に得ることが出来るようになっている。但し、既に触れたように、スキャン設計手法では、高い故障検出率を確実に得るためにはほぼ全てのフリップフロップ、ラッチのスキャン化が必要で、面積増加が大きいことが問題である。また、例えば図１７の例でマルチプレクサが挿入されているように、インプリメントの方法によっては通常動作の性能（動作周波数）が低下してしまうという問題もあった。
【０００７】
さて、テスト対象のLSIの故障検出率を向上させるために観測ポイントを追加するという手法そのものは従来からあった。最も単純なものは、観測したいノードをLSIの外部端子に引き出し、テスト実行時に直接観測するというものである。しかし、このような方法では端子数が観測ポイントの数だけ増加してしまい、現実的な解とは言えない。この問題への対策として、複数の観測ポイントを排他的論理和（exclusive OR : XOR）ゲートに入力し、その出力だけを観測するという方法も考案されている。しかし、この考案であっても故障が発生した場合の解析が依然として困難である。そのため、多数の観測ポイントを１つに纏めることは出来ず、観測ポイントを増加させるとそれに応じて外部端子数が増加するという問題を本質的に解決するものではなかった。
【０００８】
そこで、LSI内部に多数の観測ポイントが存在する場合に、LSIの端子数を増加させない従来の方法としては、並列シグネチャ圧縮レジスタが一般的に用いられてきており、マイクロプロセッサ等の内部に観測用レジスタとして設けると言った形で利用されてきた。図１８にシグネチャ圧縮以外の動作も含んだ基本的な構成例（４ビット幅）を示す。これは、BILBO(Built-In Block Observer)として知られる回路とほぼ同じである。
【０００９】
図示するように、本回路はクロックCLKにより動作する４つのフリップフロップ210-5〜210-8を備えている。３段目のフリップフロップ210-7と４段目のフリップフロップ210-8の出力は、XORゲート230-1により排他的論理和演算が行われ、この演算結果及びスキャンイン端子SIからのテストパターンのいずれかが、信号Aによりマルチプレクサ240で選択される。スキャンイン端子SIは例えばLSI100の外部入力端子である。
【００１０】
各観測ポイントにおいて観測された信号をそれぞれ信号D[0]〜D[3]とすると、これらの信号D[0]〜D[3]は信号AとANDゲート250-1〜250-4にてそれぞれ論理積演算が行われる。
【００１１】
マルチプレクサ240により選択された信号は、信号BとANDゲート250-5にて論理積演算が行われる。そして、この論理積演算結果とANDゲート250-1の出力との排他的論理和演算がXORゲート230-2にて行われ、その排他的論理和演算結果がフリップフロップ210-5の入力Dとなる。フリップフロップ210-5の出力Qは、ANDゲート250-2における演算結果との排他的論理和演算がXORゲート230-3で行われ、この演算結果がフリップフロップ210-6の入力Dとなる。
【００１２】
以降、フリップフロップ210-6、210-7の出力QはANDゲート250-7、250-8により信号Bとの論理積演算が行われ、この演算結果はXORゲート230-4、230-5によりANDゲート250-3、250-4の出力との排他的論理和演算が行われ、その出力がそれぞれ次段のフリップフロップ210-7、210-8の各入力Dとなる。そして、フリップフロップ210-8の出力Qはバッファ260を経由してスキャンアウト端子SOより出力される。スキャンアウト端子SOは、例えばLSI100の外部出力端子である。
【００１３】
また、各フリップフロップ210-5〜210-8の出力Q[0]〜Q[3]は、通常、LSI100内の別の回路ブロックへの入力となる。
【００１４】
さて、上記回路の動作は信号A、Bにより表１に示すように制御される。
【００１５】
【表１】
0003851782.tif 000002
【００１６】
以下、各動作につき、本図のビット１（フリップフロップ210-6）を中心に説明する。A=0、B=0の時、ANDゲート250-2、250-6の出力は共に”0”となり、XORゲート230-3の出力も”0”となる。従って、フリップフロップ210-6を含めた全てのフリップフロップに０が入力され、リセット動作が行われる。
【００１７】
次に、A=0、B=1の時、マルチプレクサ240はスキャンイン端子SIから入力されたデータを選択する。また、XORゲート230-3の出力は、ANDゲート250-6の出力（１個手前のフリップフロップ210-5の出力）と同じになり、全体としては４個のフリップフロップ210-5〜210-8がシリアル接続されたのと同じになり、クロックに同期したシリアル動作をすることになる。
【００１８】
次に、A=1、B=0の時、D[1]と同じ値がフリップフロップ210-6に格納されることになり、全体としては観測ポイントの出力をキャプチャする動作を行う。
【００１９】
また、A=1、B=1の時、D[1]と１個手前のフリップフロップ210-5の出力Qとの排他的論理和がフリップフロップ210-6に格納され、同時にXORゲート230-1の出力とD[0]との排他的論理和がビット０のフリップフロップ210-5に格納される。すなわち、全体としてはシグネチャ圧縮レジスタとなり、シグネチャ圧縮動作が行われる。この動作では、フリップフロップ内のデータと新たに印加される観測ポイントからの出力とにより、疑似乱数化されたデータがフリップフロップ内に生成される。そしてテスト終了後は、テスト結果として、観測ポイントからの出力データの時系列に固有なデータがフリップフロップに格納されていることとなる。
【００２０】
テストの順序としては、まず観測すべき最初のデータが出力される前に、A=0、B=0に設定することで、フリップフロップの内部を０にしておく。次に、A=1、B=1として、観測ポイントからの全ての有効な出力をシグネチャ圧縮する。テスト終了後、A=0、B=1として、内部のフリップフロップにシリアル動作を行わせる。そして、テスト結果をシリアルにLSI外部に読み出し、正常回路での期待値と比較して故障の有無を判断する。この読み出しについては、テストモード信号との関連も含め、種々の論理的な実現方法があり得る。なお、A=1、B=0の時は、観測ポイントからの出力をそのままフリップフロップに格納することが出来るため、通常動作時の任意の１サイクルにおいて、A=1、B=0として通常動作での観測ポイントからのデータを格納した後、A=0、B=1として格納したデータをLSI外部にシリアル出力することにより、LSIの観測ポイントに関わる故障診断を行うことが可能である。
【００２１】
しかしながら、上記従来の観測ポイント挿入方法は、適当な観測用回路を用いて観測性を向上させ、ある程度の故障検出率の向上を期待するという形で適用されてきたに過ぎない。すなわち、検出対象とすべき故障を明確に意識して、当該観測ポイントが設けられているわけではない。そのため従来の方法は、観測用の付加回路の最適化（最小化）という面で満足できるものではなかった。また、テスト対象のLSIに印加されるテストパターンの特性を十分考慮した制御方式の決定法が考えられていなかったため、観測用回路を設けても期待通りの故障検出率の向上効果が得られない恐れもあった。
【００２２】
【発明が解決しようとする課題】
上記のように、従来のLSIの故障診断における観測ポイントの挿入方法は、検出対象とすべき故障を明確に意識して設けられているものではなかった。そのため、故障検出率の向上のためにLSIの面積効率が悪化するという問題があった。
【００２３】
また、テストパターンの特性を十分考慮して制御方式を選択するということが行われていなかったため、故障検出率の向上効果が十分でないという問題があった。
【００２４】
この発明は、上記事情に鑑みてなされたもので、その目的は、面積効率及び故障検出率を向上出来る半導体集積回路及びそのテスト方法を提供することにある。
【００２５】
【課題を解決するための手段】
この発明の一態様に係る半導体集積回路は、テスト対象回路と、実質的に通常の機能動作を行わせるテストにおいて検出されない故障に対応する前記テスト対象回路内のノード、または端子を観測ポイントとし、該観測ポイントにおけるデータを入力とする、複数個のフリップフロップを備える観測用回路と、外部クロック信号、外部リセット信号、及び外部動作モード信号を入力され、前記各信号に応じて、前記観測用回路を制御するための内部クロック信号、内部リセット信号、及び動作モード信号を生成する制御回路とを具備し、前記観測用回路は、前記内部リセット信号に応じて前記各フリップフロップをリセットし、前記動作モード信号に応じて、前記観測ポイントにおけるデータを入力とするシグネチャ圧縮動作、または前記フリップフロップがシリアル接続され、データをシリアルに転送するシリアル動作を行い、前記シリアル動作は前記シグネチャ圧縮動作の結果を前記テスト対象回路外部に読み出すために用いられ、前記シグネチャ圧縮動作時に入力される前記データは、前記テスト対象回路に実質的に通常の機能動作を行わせるテストパターンに従って、前記テスト対象回路内部で生成されるものであり、前記観測ポイントは、故障シミュレーションで得られた未検出故障の内の、前記半導体集積回路の機能レベルの回路接続情報上のノード名と対応付け可能なノード、または端子である。
【００３３】
また、この発明の一態様に係る半導体集積回路のテスト方法は、第１故障シミュレーションにより得られ、該第１故障シミュレーションでは検出されなかった故障を列挙した第１未検出故障リストから観測ポイント候補、及び該観測ポイントにおける故障の未検出の種類を含む観測ポイント情報を抽出するステップと、前記観測ポイント候補を選別して第１観測ポイントを得るステップと、前記第１観測ポイント、第１ゲートレベルの回路接続情報、及びテスト対象回路における通常動作用の第１テストパターンを用いて第２故障シミュレーションを行い、前記第１観測ポイント挿入の効果を確認すると共に、第２未検出故障リストを得るステップと、前記第２故障シミュレーションにより、挿入効果の少ない前記第１観測ポイントを削除して、第２観測ポイントを得るステップとを具備し、前記観測ポイント候補は、前記機能レベルの回路接続情報上のノード名と対応付け可能なノード、または端子である。
【００４０】
【発明の実施の形態】
以下、この発明の実施形態を図面を参照して説明する。この説明に際し、全図にわたり、共通する部分には共通する参照符号を付す。
【００４１】
この発明の第１の実施形態に係る半導体集積回路及びそのテスト方法について図１を用いて説明する。図１はLSIの内部構成を示すブロック図であり、特にテスト時に使用される回路について示したものである。
【００４２】
図示するように、LSI10内にはテスト用の複数の観測ポイント（黒丸印）と、各観測ポイントにおけるテスト結果が入力される観測用回路20と、観測用回路20を制御する制御回路30が設けられている。観測ポイントは、LSI10内のテスト対象回路、例えば組み合わせロジックや、フリップフロップ、ラッチ等を含むランダムロジック内のノードや端子である。制御回路はSystem_CLOCK信号、System_RESET信号、RESET_OBS信号、SHIFT_OBS信号がLSI10の外部から入力され、リセット信号RST、クロック信号CLK、及びシフト信号SHIFTを出力する。そして、このRST信号、CLK信号、及びSHIFT信号により観測用回路20が制御される。なお観測用回路20は、LSI10の通常動作に影響を与えないようにして設けられている。観測用回路20の４ビットの構成例を図２に示す。
【００４３】
図示するように観測用回路20は、CLK信号及びRST信号により動作する４つのフリップフロップ21-1〜21-4を備えている。２段目のフリップフロップ21-2と３段目のフリップフロップ21-3の出力Q2、Q3は、XORゲート22-1により排他的論理和演算が行われ、この演算結果及びスキャンイン端子SIから入力されるテストパターンが、インバータ23で反転されたシフト信号SHIFTによりマルチプレクサ25で選択される。
【００４４】
各観測ポイントにおいて観測された信号をそれぞれ信号DI0〜DI3とすると、信号DI0、DI1、DI3はインバータ23にて反転されたシフト信号SHIFTと、ANDゲート24-1、24-2、24-4にてそれぞれ論理積演算が行われる。信号DI2は、外部から入力されるDI2_disable信号の反転信号とSHIFT信号の反転信号とがANDゲート24-5で論理積演算された結果と、ANDゲート24-3にて論理積演算が行われる。DI2_disable信号については後に詳細に説明する。
【００４５】
さて、マルチプレクサ25により選択された信号は、ANDゲート24-1の出力とXORゲート22-2にて排他的論理和演算が行われ、その演算結果がフリップフロップ21-1の入力D1となる。フリップフロップ21-1の出力Q1は、ANDゲート24-2における演算結果と、XORゲート22-3で排他的論理和演算が行われ、この演算結果がフリップフロップ21-2の入力D2となる。フリップフロップ21-2の出力Q2は前述の通りXORゲート22-1へ入力されると共に、XORゲート22-4にてANDゲート24-3の出力との論理積演算が行われ、その演算結果がフリップフロップ21-2の入力D3となる。フリップフロップ21-3の出力Q3もまたXORゲート22-1へ入力されると共に、XORゲート22-5にてANDゲート24-4の出力との論理積演算が行われ、その演算結果がスキャンアウト信号SOとなる。
【００４６】
上記観測用回路20は制御回路30からの入力によって制御され、表２に示すように非同期リセット信号RSTによってリセットし、シフト信号SHIFTによってシフト動作を行う。
【００４７】
【表２】
0003851782.tif 000003
【００４８】
観測ポイントの値のキャプチャは、キャプチャが必要な１つ手前のサイクルで観測用回路20をリセットし、１サイクルシグネチャ圧縮動作させた後、シリアル動作させることによって可能である。さて、本観測用回路20は、その中心的な機能をシグネチャ圧縮レジスタとしての動作によって実現している。ここで注意すべき点は、テスト対象のLSI10内部に故障が存在し、観測ポイントから正常な場合と異なる出力が出たにもかかわらず、最終のテスト結果が正常動作時と同じになる「aliasing」確率が１／２n（ｎはフリップフロップの数）あることである。よって、実際の利用に際して、観測ポイントの数が少ない場合は、少なくともｎ＞２０程度になるような工夫をしておくことが必要となる。また、最適なフィードバック回路（フィードバックするビット位置）は、一般にシグネチャ圧縮レジスタのビット数に依存して変化するため、この点の配慮も必要である。
【００４９】
制御回路30は前述の通り、LSI10の通常動作用とは別にRESET_OBS信号とSHIFT_OBS信号を入力され、その他、System_RESET信号とSystem_CLOCK信号が入力される。そして、観測用回路20を制御するRST信号、SHIFT信号及びCLK信号を出力する。
【００５０】
次に、各観測ポイントの決定方法について説明する。各観測ポイントは基本的に通常動作用のテストパターンでのテストによって検出されなかった故障に対して、図３に示す処理フローによって決定されるものである。観測ポイントの決定フローについて図３を用いて説明する。
【００５１】
まず、未検出故障リスト40（第１未検出故障リスト）は、LSI10の通常動作モードのテストパターンを用いて行った故障シミュレーション（第１故障シミュレーション）において検出されなかった故障を列挙したものである。そして、観測ポイント候補抽出ツールが、未検出故障リスト40に記載された未検出故障に対応するLSI10内部のノードの内、観測ポイントとして効果のありそうな観測ポイント候補を抽出し（ステップS10）、観測ポイント候補41を得る。未検出故障リスト40はLSI10内の一部でスキャン設計乃至はBIST(Built In Self Test)を適用して、その未検出故障に対して通常動作用のテストパターンでの故障シミュレーションを実行した結果として得られた未検出故障のリストであっても差し支えない。
【００５２】
抽出ツールは、観測ポイントとして抽出したノードに対応する故障の未検出が、０縮退か、１縮退か、またはそのいずれもかであるかといった観測ポイント情報42も出力する（ステップS10）。観測ポイント候補としては、RTL(Register Transfer Level) ネット上のノード名が認識できるものが選ばれる。RTL ネットとは、レジスタ転送レベルの論理記述により得られた回路網の接続情報（機能レベルの回路接続情報）のことである。こうしたノードが多数に及ぶ場合は、等価な故障数が多いものから優先的に選ぶようにする。ここで、観測ポイント候補としてRTL ネット上のノード名が認識できるものを選ぶ理由について触れておく。最近のLSIは、殆どの場合、RTL記述によってLSIの機能を記述したRTL ネットを作成し、動作検証用テストパターンを作成して検証し、所定の動作を確認した後、論理合成ツールを利用することにより、ゲートレベルネットデータに変換するようになっている。ゲートレベルネットとは、ゲートレベルの論理記述により得られた回路網の接続情報のことである。故障シミュレーションは、ゲートレベルネットデータに対して実施される。なお、論理合成の手間を省くため、論理合成ツールは、タイミングなどの最適化を施す前の中間的なゲートレベルネットを作成することが出来る。今後のシステムLSI開発においてキーになる再利用(reuse)においては、殆どの場合、LSIのネットはRTL ネット（合成及びタイミング最適化の方法についての情報付き）、またはこの中間的なゲートレベルネット（タイミング最適化の方法についての情報付き）の形で提供されることになると見られる。この場合、ゲートレベルネットには、RTL ネット名との対応が判別できるノードと、論理合成ツールが任意に名前を割り付けたノードが混在することになるが、後者については、再論理合成したり、別の最適化を行った場合に名前が保存されない可能性があり、一度行った観測ポイント設定の結果が利用できなくなる恐れがある。観測ポイントの設定は、こうした事情を十分ふまえておく必要がある。そこで本発明では、原則としてRTL ネット名との対応が判別できるノードに対応した未検出故障に対し、そのノードを観測ポイントとして設定するようにする。なお、最近はより高品質を目標として、LSI内部の基本セルの入出力端子に故障（ピン故障）を仮定して故障シミュレーションを実施することも行われている。この場合、故障そのものからは、RTL ネットのノード名が明確に判定できない場合があるため、ピン名とネット名の対応付けをするツールが必要になる。
【００５３】
ステップS10において抽出ツールにより選択した観測ポイント候補41は、更に設計者が内容をチェックし、実際には効果の薄そうな候補を削除し、故障シミュレーションで確認するための観測ポイント43（第１観測ポイント）を決定する（ステップS11）。効果の薄そうな候補とは、例えば特定のレジスタの入力側と出力側のノードがいずれも選ばれている場合のいずれかのノード、といったものがある。この場合、いずれの方が効果が薄いかは必ずしもはっきり決められないため、それぞれを削除した故障シミュレーションでの確認をする必要がある。以上により選別された観測ポイント43とLSI10の入出力端子44を故障の検出ポイントとして、LSI10のゲートレベルネット45（第１ゲートレベルの回路接続情報）と通常動作用テストパターン46（第１テストパターン）とにより、故障シミュレーション（第２故障シミュレーション）を実行（ステップS12）し、未検出故障リスト47（第２未検出故障リスト）を得る。これは、基本的には観測ポイント挿入の効果を見積もるためのものであるが、故障リスト47と観測ポイント情報42を、低効果ポイント削除ツールに入力して、観測ポイントとして設定したが、故障の追加検出効果の無かったもの、例えばある０縮退故障に対応するノードを観測ポイントに設定したにもかかわらず検出がなされなかったものを観測ポイントから除外し（ステップS13）、最終的な観測ポイント48（第２観測ポイント）を出力する。
【００５４】
さて、最終的に正確な故障検出率を求めるためには、観測用回路をどのようなタイミングで初期化するか決定する必要がある。本実施形態では、通常動作用テストパターンの活用を考慮している。一般に通常動作用のテストパターン全体は多数の個々のテストパターンより構成されており、それぞれLSI10内部の特定の領域をテストしている。この結果、複数本あるテストパターンではいくつかの観測ポイントは初期化されなかったり、各テストパターンにおいても、LSI10のシステムリセットと相前後して確定値を取る観測ポイントがあったり、システムリセット後特定のテストパターンだけでしか確定値を取らないものがあったりする。この例を表３に示す。これは、ある特定のテストパターンにてLSI10の論理シミュレーションを実行し、観測ポイントP1〜P7の値の変化をモニターにしたものである。T1〜T10はシミュレーション時刻である。
【００５５】
【表３】
0003851782.tif 000004
【００５６】
表３に示すように、基本的にP1、P2、P3、P5はシステムリセット後比較的速やかに確定値をとるが、P4、P6、P7はシステムリセット後に確定値を取るまでしばらくの時間が必要である。特にP4は、システムリセット後のかなり長い期間不定のままであることが分かる。このため、観測ポイント挿入の効果（故障検出率向上）を最大にするには、まずはP1、P2、P3、P5とP4、P6、P7を別のグループにして、独立にリセット可能な異なる観測用回路にそれぞれ入力するようにすることが望ましいことが分かる（第２の実施形態として後述する）。実際には、こうした論理シミュレーション出力を全てのテストパターンについて調べ、観測ポイントをリセットロジックからの面からグループ化することになる。上記のようにグループ化された観測ポイントの各グループに対してそれぞれ独立したリセット信号が割り当てられるが、これらリセット信号はテストパターン毎に所定の時刻にアクティブになるように制御する必要がある。この制御ロジックは、テストパターン毎のリセット信号がアクティブになる時間的順序を全てのテストパターンにつき重ね合わせ、実際に存在しているリセット信号の時間的順序の組み合わせ情報に基づいて作成することにより、必要十分（最適）な規模のものが得られる。
【００５７】
ここまでが図３のフロー中で、観測ポイント43、LSI10のゲートレベルネット45、テストパターン46を用いた論理シミュレーションを実行し（ステップS14）、期待値49を得て、それを基に観測用回路・制御ロジック・タイミング決定支援ツールにより、観測用回路・制御ロジックの構成、各テストパターン毎の制御タイミング情報50を得る（ステップS15）までに相当している。なお、本実施形態における観測用回路の構成は、各観測ポイントの観測用回路の特定の入力端子への接続情報も含んでいる。制御タイミング情報50とは、例えばリセット信号を如何なるサイクルで入力するかといった情報を含むものである。
【００５８】
観測ポイントと観測用回路のタイミング関係については、例えば図４（ａ）乃至（ｃ）に示したようにする。図４（ａ）は観測対象と観測用回路の一部を示すブロック図であり、（ｂ）、（ｃ）は観測ポイントがそれぞれラッチ出力から組み合わせロジックを経由した出力、及びフリップフロップ出力から組み合わせロジックを経由した出力である場合の、クロックとデータのタイミングチャートである。また、図中CLKはシステムクロックを示している。
【００５９】
図示するように、観測ポイントがラッチ出力から組み合わせロジックを経由してなる回路の出力であった場合、そのラッチがホールド(Hold)からスルー(through)になるクロックのエッジでその出力はキャプチャされる。また、観測ポイントがフリップフロップ出力から組み合わせロジックを経由してなる回路の出力であった場合、そのフリップフロップの出力が更新されるクロックのエッジでその出力がキャプチャされる。
【００６０】
本実施形態の観測用回路は、通常動作用のロジックに対し、殆どディレイ増加等の悪影響を及ぼすことはないが、観測ポイントの実際のレイアウトへのインプリメントにおいては、観測ポイントから観測用回路内のフリップフロップまでのデータ転送時のホールドタイム(Hold Time)違反と、観測用回路内部でシリアルに接続された２個のフリップフロップ間でのデータ転送時のホールドタイム違反（スキャンクロックがシステムクロックと同じタイプのスキャン設計での注意点と同じ）に十分に注意する必要がある。観測用ポイントの値が各々異なるクロックに同期して変化している場合は、勿論異なるクロック毎に観測用回路を構成する必要がある。
【００６１】
ここで、図２に少し触れたdisable信号について説明する。上述したように、観測ポイントの中には、他と比較して少数のパターンでしか確定値を取らず、しかもシステムリセット後かなり時間が経過してから漸く確定値となるようなものが含まれる可能性がある。こうしたものはごく少数と見られ、これらだけに対して１個の観測用回路を設けるのは、テスト回路の無駄な増加を招くことになる。このため、こうした観測ポイントについては、似通った振る舞いをしている観測ポイントのグループに含め、確定値とならないテストパターンではdisable=1とすることで、その観測ポイントからの出力が観測用回路に入力されないようにして、観測用回路の内容が不定になるのを防ぐようにしている。disable信号の発生回路を図５（ａ）に、System_CLOCK信号、System_RESET信号、SET_DISABLE信号、及びdisable信号のタイミングチャートを図５（ｂ）に示す。
【００６２】
図示するように、disable信号発生回路60は、フリップフロップ61とマルチプレクサ62とにより構成される。マルチプレクサ62は、外部から入力されるSystem_RESET信号により、フリップフロップ61の出力と、外部から入力されるSET_DISABLE信号とを選択する。そしてマルチプレクサ62で選択された信号がフリップフロップ61の入力となり、その出力がdisable信号となる。このように、システムリセット中だけアクティブになるフリップフロップに適当な通常動作用入力端子から値を設定することで容易に実現可能である。
【００６３】
さて、以上により観測ポイント48、観測用回路・制御ロジックの構成50が得られる。これらの情報と、LSI10のRTL ネット51、または論理最適化前のゲートレベルネット45とを入力として、論理合成ツールまたはネット変更補助ツールを用いて、観測ポイント、観測用回路及び制御ロジックの付加されたLSI10のネットの変更を行い（ステップS16）、新たなゲートレベルネット52（第２ゲートレベルの回路接続情報）を得る。一方、テストパターン46については、情報50を利用し、パターン変更ツールにより、変更後のゲートレベルネット52に対応した変換を行い（ステップS17）、新たなテストパターン53（第２テストパターン）を作成する。また、最終的な故障検出率と未検出故障リスト54は、次のようにして得ることが出来る。
【００６４】
すなわち、観測ポイント48とLSI10の入出力端子55を故障の検出ポイントとして、未検出故障リスト40と、元のゲートレベルネット45とテストパターン46（一般に複数のテストパターンで構成される）を故障シミュレータに入力して最終故障シミュレーション（第３故障シミュレーション）を実行する（ステップS18）。なお、テストパターン46については、制御ロジックとリセットタイミング（時刻）の情報に基づき、テストパターン46の各テストパターンにおいて各観測ポイントで故障の検出が開始される時刻を抽出して、これを各観測ポイントに関わる付加情報として故障シミュレータに入力して故障シミュレーションを行う。これにより、実際に行われるリセットタイミングに基づいた故障シミュレーションが実行されることになり、最終的な故障検出率と未検出故障リスト54（第３未検出故障リスト）が得られることになる。なお、上記のような情報を直接利用できない故障シミュレータについては、例えばゲートレベルネット45の観測ポイントに仮のバッファを付加したネットを作成し、その出力を観測ポイントとし、リセット時刻まで強制的に不定状態に設定するといった形でも同様の効果を得ることが出来る。
【００６５】
なお、全てのテストパターンを連続的にLSI10に印加し、２番目以降のテストパターンでは観測ポイントに不定値で出現しないことが確認できているのであれば、リセットタイミング別に観測ポイントをグループ化する必要が無くなる。但し、テストの途中で故障が検出された場合の解析効率が低下し、また故障シミュレーションを長大なテストパターンにより実行する必要が生じ、故障シミュレータによっては困難となる場合がある。そのため、テスト用付加回路量について極めて厳しい制約がある場合を除けば、前述のようなリセットロジックを付加することが望ましいと考えられる。また、観測用回路20へのクロック入力については、通常動作モードを観測用回路20を動作させない（CLKを変化させない）モードと観測用回路20を動作させるモードに分け、テスト以外の場合は前者のモードで使用するようにすれば、低消費電力化が実現される。
【００６６】
上記実施形態によれば、故障シミュレーションの結果得られた未検出故障に基づいて観測ポイントを設定している。また、テストパターンは通常動作用のものを使用することが出来る。そのため、従来の手法に比べてテスト回路の付加を最小限に抑えつつ、故障検出率の向上を図ることが出来る。
【００６７】
なお、本実施形態では、未検出故障リスト40は、LSI10のゲートレベルネット45に対し、テストパターン46を用いて故障シミュレーションを実施して得られた結果となっている。しかしながら、一般に故障シミュレーションは極めて長いCPU時間（計算時間）を要するものであり、未検出故障40を本発明の目的のために効率よく得ることも本発明の一部として重要である。
【００６８】
図６は本実施形態の第１の変形例について説明するためのものであり、観測ポイントの決定フローを示している。
【００６９】
すなわち、本変形例では図３のフローの入力となる未検出故障リスト40（第１未検出故障リスト）を得るために次の処理を行っている。まず、予めLSI10のゲートレベルネット45の未検出故障56（第４未検出故障リスト）の内、RTL ネットのノード名が判別できるものだけ選別して（ステップS19）、未検出故障リスト57を得る。そして、この未検出故障リスト57を用いて故障シミュレーション（第１故障シミュレーション）を実行する（ステップS20）ことにより未検出故障40（第１未検出故障リスト）を得るようにしても良い。
【００７０】
本変形例によれば、未検出故障リスト40を得るまでのCPU時間（計算時間）を大幅に削減できる。なお、この故障シミュレーション及び観測ポイント追加の効果を見積もるために実行する故障シミュレーションと、最終確認用の故障シミュレーションに用いる故障シミュレータは、必ずしも同じである必要はない。後者の故障シミュレーションは、RTL ネットのノード名が判別できる故障以外の故障も含めて実行するため、多くのCPU時間が必要となる。一般に市販の故障シミュレーションは、故障シミュレーションの実行環境を整えるまでの準備が容易なものと、性能が高いもの（CPU時間がより少ないもの）とがある。よって、最初の未検出故障リストを求めるため及び観測ポイント追加の効果を見積もるための故障シミュレーションは前者の故障シミュレータで行い、最終確認用の故障シミュレーションは後者の故障シミュレータで行うことにより、テスト全体の効率を向上させることが出来る。
【００７１】
次に本実施形態の第２の変形例について図７のLSIのブロック図を用いて説明する。本変形例は、LSI10内部のノードすなわち観測ポイントが、異なるクロックに同期して変化する複数のグループに分かれる場合について示している。この場合は、基本的に各クロックに同期して変化する観測ポイントのグループ毎に観測用回路とテスト制御ロジックを設けるようにする。
【００７２】
図示するように、制御回路30は、System_CLOCK信号から２種類のクロック信号CLK1、CLK2を生成するクロック発生回路30-1と、クロック信号CLK1により動作する制御ロジック30-2と、クロック信号CLK2により動作する制御ロジック30-3とを備えている。制御ロジック30-2、30-3はRESET_OBS信号及びSHIFT_OBS信号に従って、リセット信号RST1、シフト信号SHIFT1、及びリセット信号RST2、シフト信号SHIFT2信号をそれぞれ生成する。
【００７３】
LSI10の内部はクロックCLK1、CLK2に同期して動作しており、CLK1に同期して動作する観測ポイント（黒丸印）はCLK1に同期して動作する観測用回路20-1に接続されている。観測用回路20-1は、CLK1に同期して動作する制御ロジック30-2によって制御される。同様に、CLK2に同期して動作する観測ポイント（黒三角印）はCLK2に同期して動作する観測用回路20-2に接続されている。観測用回路20-2は、CLK2に同期して動作する制御ロジック30-3によって制御される（制御ロジックは見かけ上１個の制御ロジックのように構成される場合もある）。但し、例えばLSI10内部のノードが同一周期で位相が反転した２種類のクロックに同期して動作している場合に、ある観測ポイントが一方のクロックに同期して動作するフリップフロップ出力であれば、その観測ポイントをもう一方クロックに同期して動作する観測用回路に接続しても差し支えないように、観測ポイントが同期して動作しているクロックと異なるクロックに同期して動作している観測用回路に接続しても、確定した値がその観測用回路に入力されることが明確である場合は、そのように接続しても差し支えない。
【００７４】
次にこの発明の第２の実施形態に係る半導体集積回路及びそのテスト方法について図８を用いて説明する。図８はLSIの内部構成の概念図である。
【００７５】
図示するように、本実施形態に係るLSI10では、第１の実施形態で説明した観測ポイントのグループ化に従って３つの観測用回路20-3〜20-5が設けられている。観測用回路20-3及び20-4は制御回路30が出力するRST_OBS0信号によって同じ制御を受けるが、インプリメント及び故障解析の容易性を考慮して２個の観測用回路に分割されている。なお、各観測用回路20-3〜20-5の内部構成は図２に示したものと同様である。観測用回路20-3〜20-5におけるシグネチャ圧縮動作は、各観測用回路毎に行われ、シフト動作は観測用回路20-3〜20-5全てがシリアル接続された状態で行われる。
【００７６】
また、制御回路30の内部のリセットロジックの構成及びその動作タイミングはそれぞれ図９（ａ）、（ｂ）に示したようになっている。
【００７７】
図示するようにリセットロジックは、２つのフリップフロップ70、71と、インバータ72と、２個のORゲート73、74とから構成されている。フリップフロップ70はSystem_CLOCK信号により制御され、RESET_OBS信号が入力される。フリップフロップ71は、フリップフロップ70の出力Q1及びSystem_RESET信号により制御され、インバータ72により反転された当該フリップフロップ71の出力Q2が入力される。そしてフリップフロップ71の出力Q2の反転信号とRESET_OBS信号の論理和演算がORゲート74により行われ、このORゲート74の出力がRST_OBS1信号となる。更に、フリップフロップ71の出力Q1とRESET_OBS信号の論理和演算がORゲート73により行われ、このORゲート73の出力がRST_OBS0信号となる。
【００７８】
上記回路は、System_RESET信号により初期化され、図９（ｂ）に示すように、RESET_OBS信号をアクティブ（”L”レベル）にする毎に、RST_OBS0、RST_OBS1信号の順にアクティブとなる。
【００７９】
また、リセット信号が３個必要となった場合のリセットロジックの構成例とタイミング図をそれぞれ図１０（ａ）、（ｂ）に示す。
【００８０】
図示するようにリセットロジックは、３つのフリップフロップ75〜77、２つのマルチプレクサ78、79、１つのインバータ80、及び３つのORゲート81〜83とを有している。フリップフロップ75はSystem_CLOCK信号により制御され、RESET_OBS信号が入力される。そして、この出力Q1がフリップフロップ76、77のクロックとして機能する。フリップフロップ76、77はそれぞれマルチプレクサ78、79の出力を入力とする。
【００８１】
マルチプレクサ78は、外部から入力されインバータ80により反転されたSTD_ORDER信号と、フリップフロップ77の出力とをSystem_RESET信号に基づいて選択する。また、マルチプレクサ79はSTD_ORDER信号と、フリップフロップ76の出力とをSystem_RESET信号に基づいて選択する。
【００８２】
そして、ORゲート81による、System_RESET信号とRESET_OBS信号の論理和演算結果がRST_OBS0信号となる。また、ORゲート82による、RESET_OBS信号と、フリップフロップ76の出力Q2の反転信号と、フリップフロップ77の出力Q3との論理和演算結果がRST_OBS1信号となる。更に、ORゲート83によるRESET_OBS信号と、フリップフロップ76の出力Q2と、フリップフロップ77の出力Q3の反転信号との論理和演算結果がRST_OBS2信号となる。
【００８３】
上記構成では、System_RESET信号により初期化が行われ、STD_ORDER=1の場合、RST_OBS信号をアクティブにする毎に、RST_OBS0、RST_OBS1、RST_OBS2信号の順にアクティブとなる。逆に、STD_ORDER=0の場合は（図１０（ｂ））、RST_OBS0、RST_OBS2、RST_OBS1信号の順にアクティブとなる。このように、RST_OBS1信号とRST_OBS2信号は初期設定に応じていずれを先にアクティブにする事も可能であり、より細かいリセット設定が可能である。
【００８４】
なお、図９（ａ）、（ｂ）及び図１０（ａ）、（ｂ）においては、リセットロジックの出力であるRST_OBSi（i=0,1…）信号は全てRESET_OBS信号との論理和により構成しているが、単にクロックCLKに同期したフリップフロップの出力の組み合わせで構成しても良い。
【００８５】
次に、この発明の第３の実施形態に係る半導体集積回路及びそのテスト方法について図１１を用いて説明する。図１１は本実施形態に係るLSIの内部構成を示す概念図である。なお本実施形態は、観測用回路のリセットを非同期リセットにて行わず、SI入力を介してシリアルに実行するものである。
【００８６】
図示するように、制御回路30はSFT/RST_0、SFT/RST_1信号を生成し、ANDゲート90によるSFT/RST_0信号とGNDとの論理積演算結果が、観測用回路20-6のスキャンイン端子SIへ入力される。観測用回路20-7のSIには、観測用回路20-6の出力SOと、SFT/RST_0信号とのANDゲート91における論理積演算結果が入力される。また、観測用回路20-8のSIには、観測用回路20-7の出力SOと、SFT/RST_1信号とのANDゲート92における論理積演算結果が入力される。
【００８７】
上記観測用回路20-6〜20-8の構成について図１２に示す。図示するように、本構成は、図２の構成において、リセット信号RSTに関わる部分を無くしたものである。
【００８８】
また、制御回路30におけるリセットロジックの構成例を図１３に示す。図示するように、本リセットロジックは図１０に示すリセットロジックにおいて、ORゲート81〜83をNORゲート84〜86に変更すると共に、NORゲート87〜89を追加したものである。すなわち、RST_OBS0〜RST_OBS2信号とSHIFT_OBS信号との論理和演算結果が、それぞれSFT/RST_0、SFT/RST_1、SFT/RST_2信号となる。
【００８９】
本リセットロジックはSystem_RESET信号により初期化がなされ、STD_ORDER=1の場合、RESET_OBS信号をアクティブにする毎に、SFT/RST_0、SFT/RST_1、SFT/RST_2信号の順に”0”となる。逆にSTD_ORDER=0の場合、SFT/RST_0、SFT/RST_2、SFT/RST_1信号の順に”0”となる。RESET_OBS信号は、観測用回路20-6〜20-8を確実にリセットするため、少なくともこれらの回路の内、最大のビット数に対応するサイクル数分をアクティブにする必要がある。但し、本実施形態によれば、リセット入力無しのフリップフロップを利用できるため、観測用回路の負荷量を軽減できるという利点がある。
【００９０】
次にこの発明の第４の実施形態に係る半導体集積回路及びそのテスト方法について説明する。上記実施形態では、基本的に観測ポイント１個に対し、観測用回路のフリップフロップ１ビットが対応する構成になっていた。しかしながら、実際のところは、観測ポイントを追加した場合に、故障が追加検出されるテストパターンは、全体の一部であり、且つ実際に故障を検出している観測ポイントは全体の一部である。更に、異なるテストパターンだけで故障検出される観測ポイントの組がある場合がある。従って、各テストパターンによる未検出故障の検出に関する詳細情報（検出時刻、検出した観測ポイント）を解析することにより、構成の冗長な部分を割り出すことが出来、その結果に基づいて、よりテスト用付加回路の少ない観測用回路を構成することが可能となる。
【００９１】
上記の点についての修正を行った観測ポイント決定フローについて図１４を用いて説明する。図示するように、本フローでは、詳細な情報を含む故障シミュレーション結果リスト47と観測ポイント情報42、観測ポイントに関する各テストパターンでの論理シミュレーション実行結果49に基づいて、最適なポイント・観測用回路・制御ロジックを決定する（ステップS21）ようになっている。
【００９２】
図１５はLSIの内部構成の概念図であり、各テストパターンにおいて、ある観測用回路では故障の検出がない点に注目したものである。すなわち、LSI10のシステムリセット中に適当な通常動作用入力端子を経由して制御回路32に値を設定しておくことにより、故障検出の無かった観測用回路内のフリップフロップはスキップしてシリアル転送が出来るようにしたものである（制御回路32の構成はdisable信号設定用のものと同様）。本図の例では、観測用回路20-11において故障の検出が見られなかったため、制御回路32の対応するビットに”0”を設定し、この部分のデータがシリアル転送時にスキップされるようにしている。これにより、テスト結果の読み出し時間が短縮されるという効果がある。
【００９３】
次にこの発明の第５の実施形態に係る半導体集積回路及びそのテスト方法について図１６を用いて説明する。図１６はLSIの内部構成を示す概略図である（本実施形態に関わる部分以外は省略）。観測ポイント決定フローは図１４と同様である。この例はいくつかの観測ポイントに対応する観測用回路のビット数を削減する方法を示している。
【００９４】
対象のLSIに対するテストパターンと、観測ポイントでの検出状況が表４に示すようなものであったとする。
【００９５】
【表４】
0003851782.tif 000005
【００９６】
TPi(i=1〜5)はテストパターンの種類を示し、Pj(j=1〜6)は観測ポイントを示す。Dnは、n個の故障が検出されたことを示し、Uは検出された故障がなかったことを示している。表４から容易に読みとれるように、観測ポイントの組(P2,P5)、(P3,P6)では故障が検出されるテストパターンに重なりが無く、且つ同一のテストパターン内では(P2,P5)、(P5,P6)の検出、未検出は排他的になっている。従って、図１６に示すように、これらの組を２入力マルチプレクサ35-1、35-2の各入力に接続した上、その出力を観測用回路20-13の入力に接続するようにしてもよい。そしてその出力がLSI10内部の観測用回路20-13へ入力される。また、回路34は既に説明した、システムリセット中に適当な通常動作用入力端子を経由して、”0”または”1”を設定できる回路であり、この回路の出力が上記のマルチプレクサの選択信号として利用されている。
【００９７】
上記の手順を詳細に記述すると以下のようになる。
【００９８】
（１）まず、故障を検出するテストパターンに重なりがない観測ポイントの組を全て抽出する。本実施形態の場合では、(P1,P4)、(P1,P5)、(P1,P6)、(P2,P5)、(P2,P6)、(P3,P5)、(P3,P6)、(P4,P6)が該当する。これらは、２入力マルチプレクサの入力の候補となる。
【００９９】
（２）上記（１）で抽出された観測ポイントの組(Pi,Pj)において、Piで検出、Pjで未検出の場合は”0”、その逆の場合は”1”、いずれも検出がなかった場合は”x”とする。本実施形態の場合は表５のようになる。これらは（１）のマルチプレクサの選択信号を与える。”x”は選択信号がいずれの値でも良いことを示す。
【０１００】
【表５】
0003851782.tif 000006
【０１０１】
（３）上記（２）で得た表に基づき、全てのテストパターンにおいて、互いに矛盾のない観測ポイントの組を選択する。”x”は”0”及び”1”のいずれとも適合する。また、特定の組において、全テストパターンで”0”→”1”、”1”→”0”に変更したものとその他の組が矛盾しない場合も、観測ポイントの左右位置を交換し、選択しても良い。本実施形態では、
(P1,P5)、(P2,P6)
(P1,P6)、(P2,P5)
(P2,P5)、(P3,P6)
(P2,P6)、(P3,P5)
が該当する。面積削減の効果ではいずれも同等であり、図１６は上記の内３番目の構成を実現したものになっている。この構成でのマルチプレクサ（フリップフロップ34に設定される）の選択信号の値は、TP1〜TP5に対し、それぞれ”0”、”1”、”0”、”1”、”0”となる。
【０１０２】
本実施形態によれば、観測用回路内のフリップフロップの数を観測ポイントの数より減少させることが可能となり、テスト回路の付加に伴う面積の増加は更に抑えられることになる。
【０１０３】
上記第１乃至第５の実施形態で説明したように、この発明によれば通常動作用のテストパターンを用いて実行した故障シミュレーションの結果得られる未検出故障に対応するノードに対してのみ観測ポイント（観測用回路）を追加している。そのため、基本的に全てのレジスタをスキャン動作可能とするためのテスト回路追加が必要なスキャン設計手法に比べ、大幅に少ないテスト回路の付加で済む。更に、テストパターンは通常動作用のものをわずかに変更するだけで利用でき、テストも通常動作とほぼ同じクロック周波数で実行出来、従来に比べて大幅に少ない労力で十分に高い故障検出率を達成できるため、従来の手法より低コストまたは効率的に高い故障検出率を達成できる。
【０１０４】
なお、本願発明は上記実施形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で種々に変形することが可能である。更に、上記実施形態には種々の段階の発明が含まれており、開示される複数の構成要件における適宜な組み合わせにより種々の発明が抽出されうる。例えば、実施形態に示される全構成要件からいくつかの構成要件が削除されても、発明が解決しようとする課題の欄で述べた課題が解決でき、発明の効果の欄で述べられている効果が得られる場合には、この構成要件が削除された構成が発明として抽出されうる。
【０１０５】
【発明の効果】
以上説明したように、この発明によれば、面積効率及び故障検出率を向上出来る半導体集積回路及びそのテスト方法を提供できる。
【図面の簡単な説明】
【図１】この発明の第１の実施形態に係る半導体集積回路のブロック図。
【図２】この発明の第１の実施形態に係る半導体集積回路における観測用回路の回路図。
【図３】この発明の第１の実施形態に係る半導体集積回路における観測ポイントを決定するためのフローチャート。
【図４】この発明の第１の実施形態に係る半導体集積回路のテスト方法について説明するためのもので、（ａ）図は観測対象回路と観測用回路路の接続を示す回路図であり、（ｂ）図、（ｃ）図はクロックと観測ポイントから出力されるデータのタイムチャート。
【図５】この発明の第１の実施形態に係る半導体集積回路において、（ａ）図はdisable信号の発生回路の回路図であり、（ｂ）図は各信号のタイムチャート。
【図６】この発明の第１の実施形態の第１の変形例に係る半導体集積回路における観測ポイントを決定するためのフローチャート。
【図７】この発明の第１の実施形態の第２の変形例に係る半導体集積回路のブロック図。
【図８】この発明の第２の実施形態に係る半導体集積回路のブロック図。
【図９】この発明の第２の実施形態に係る半導体集積回路において、（ａ）図はリセットロジックの回路図であり、（ｂ）図は各信号のタイムチャート。
【図１０】この発明の第２の実施形態に係る半導体集積回路において、（ａ）図はリセットロジックの回路図であり、（ｂ）図は各信号のタイムチャート。
【図１１】この発明の第３の実施形態に係る半導体集積回路のブロック図。
【図１２】この発明の第３の実施形態に係る半導体集積回路における観測用回路の回路図。
【図１３】この発明の第３の実施形態に係る半導体集積回路におけるリセットロジックの回路図。
【図１４】この発明の第４、第５の実施形態に係る半導体集積回路における観測ポイントを決定するためのフローチャート。
【図１５】この発明の第４の実施形態に係る半導体集積回路のブロック図。
【図１６】この発明の第５の実施形態に係る半導体集積回路のブロック図。
【図１７】従来の半導体集積回路のブロック図。
【図１８】従来の半導体集積回路における観測用回路の回路図。
【符号の説明】
10、100…LSI
20、20-1〜20-13…観測用回路
21-1〜21-4、61、70、71、75〜77、210-1〜210-8…フリップフロップ
22-1〜22-5、230-1〜230-5…XORゲート
23、72、80…インバータ
24-1〜24-5、90〜92、250-1〜250-8…ANDゲート
25、33-1、33-2、35-1、35-2、62、78、79、220-1〜220-4、240…マルチプレクサ
30、30-1、30-2、32、34…制御回路
40、47、56、57…未検出故障リスト
41…観測ポイント候補
42…観測ポイント情報
43、48…観測ポイント
44、55…入出力端子
45、52…ゲートレベルネット
46、53…テストパターン
49…観測ポイントシミュレーション期待値
50…制御ロジック・タイミング情報
51…RTL ネット
54…故障検出率、未検出故障リスト
73、74、81〜83、87〜89…ORゲート
84〜86…NORゲート
260…バッファ
【図１】
0003851782.tif 000007
【図２】
0003851782.tif 000008
【図３】
0003851782.tif 000009
【図４】
0003851782.tif 000010
【図５】
0003851782.tif 000011
【図６】
0003851782.tif 000012
【図７】
0003851782.tif 000013
【図８】
0003851782.tif 000014
【図９】
0003851782.tif 000015
【図１０】
0003851782.tif 000016
【図１１】
0003851782.tif 000017
【図１２】
0003851782.tif 000018
【図１３】
0003851782.tif 000019
【図１４】
0003851782.tif 000020
【図１５】
0003851782.tif 000021
【図１６】
0003851782.tif 000022
【図１７】
0003851782.tif 000023
【図１８】
0003851782.tif 000024