(57)【要約】      （修正有）【課題】故障箇所を容易に特定することができる半導体集積回路を提供する。【解決手段】半導体集積回路２１は、論理回路内の記憶素子により構成された複数のシフトレジスタ（スキャンチェーン）５２ａ，５２ｂ，５２ｃ，・・と、スキャンチェーン５２ａ，５２ｂ，５２ｃ，・・入力段に接続されたテストパタン発生器２９と、スキャンチェーン５２ａ，５２ｂ，５２ｃ，・・の出力段に接続されたテスト結果圧縮部１１０ａと、テストパタン発生器２９およびテスト結果圧縮部１１０ａに接続されたＢＩＳＴ制御化路２２ａと、ＢＩＳＴ制御回路２２ａに接続されたシフトカウンタ２３と、ＢＩＳＴ制御回路２２ａに接続されたパタンカウンタ２４とを有する。【選択図】      図１
2004294224.tif 000002
【特許請求の範囲】
【請求項１】
論理回路内の記憶素子により構成された複数のシフトレジスタと、
前記シフトレジスタの入力段に接続されたテストパタン発生器と、
前記シフトレジスタの出力段に接続された、前記シフトレジスタを個別に選択するテスト結果圧縮部
とを有することを特徴とする半導体集積回路。
【請求項２】
前記テスト結果圧縮部は、前記シフトレジスタのそれぞれの出力に個別に接続された複数のデータ圧縮器を有することを特徴とする請求項１記載の半導体集積回路。
【請求項３】
前記テスト結果圧縮部は、
前記シフトレジスタの出力に接続された、前記シフトレジスタを個別に選択する第１のセレクタと、
前記第１のセレクタに接続されたデータ圧縮器
とを有することを特徴とする請求項１記載の半導体集積回路。
【請求項４】
前記テスト結果圧縮部は、
前記シフトレジスタから送信されるテスト結果を圧縮するデータ圧縮器と、
前記シフトレジスタと前記データ圧縮器の間に接続され、総ての前記シフトレジスタと前記データ圧縮器とを直接又は空間的圧縮して接続する自己試験モードと、前記シフトレジスタを個別に前記データ圧縮器に接続する故障解析モードとを切り換えるモード切換回路
とを有することを特徴とする請求項１記載の半導体集積回路。
【請求項５】
前記シフトレジスタのそれぞれは複数のブロックを有し、
前記ブロックのそれぞれの最終段の出力に個別に接続された複数のデータ圧縮器を更に有することを特徴とする請求項１乃至４何れか１項記載の半導体集積回路。
【請求項６】
前記シフトレジスタのそれぞれは複数のブロックを有し、
前記ブロックの最終段の出力に接続された、前記ブロックを個別に選択する第２のセレクタと、
前記第２のセレクタに接続されたデータ圧縮器
とを更に有することを特徴とする請求項１乃至４何れか１項記載の半導体集積回路。
【請求項７】
前記第２のセレクタと前記データ圧縮器の間に接続され、総ての前記第２のセレクタと前記データ圧縮器とを直接又は空間的圧縮して接続する自己試験モードと、前記第２のセレクタを個別に前記データ圧縮器に接続する故障解析モードとを切り換えるモード切換回路を更に有することを特徴とする請求項６記載の半導体集積回路。
【請求項８】
前記記憶素子は、通常動作モードとシフト動作モードの他に、前記記憶素子が有する値を保持する第１の解析モードと、前記記憶素子が有する値の逆値を取り込む第２の解析モードとを持つことを特徴とする請求項１乃至４何れか１項記載の半導体集積回路。
【請求項９】
前記記憶素子を個別に選択し、選択した前記記憶素子を前記第１或いは第２の解析モードに設定する第１のシフトカウンタと、
前記第１の解析モードと前記第２の解析モードとを切り換えるトグルＦ／Ｆ回路
とを更に有することを特徴とする請求項８記載の半導体集積回路。
【請求項１０】
前記第１のシフトカウンタは、自己試験を実行するための第２のシフトカウンタと共有されていることを特徴とする請求項９記載の半導体集積回路。
【請求項１１】
故障の影響が伝搬する２以上の前記記憶素子は、異なる前記シフトレジスタに属することを特徴とする請求項８記載の半導体集積回路。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は半導体集積回路に関わり、特に、組み込み自己テストを実行する半導体集積回路に関する。
【０００２】
【従来の技術】
大規模かつ複雑な半導体集積回路のテストの困難性を解決するテスト容易化手法のひとつとして、ロジックＢＩＳＴ（Ｂｕｉｌｔ−Ｉｎ  Ｓｅｌｆ  Ｔｅｓｔ：組み込み自己テスト）が用いられている。ロジックＢＩＳＴは、被テストロジックへ与えるテストパタンの生成と、被テストロジックからのテスト結果の解析を、被テストロジックの周辺に構成された論理回路により、半導体集積回路内部で全て自動的に行うものである（例えば、非特許文献１参照。）。
【０００３】
【非特許文献１】
パラグ  Ｋ．ララ  “デジタル・サーキット・テスティング・アンド・テスタビリティ”アカデミック・プレス（Ｐａｒａｇ  Ｋ．  Ｌａｌａ  “Ｄｉｇｉｔａｌ  Ｃｉｒｃｕｉｔ  Ｔｅｓｔｉｎｇ  ａｎｄ  Ｔｅｓｔａｂｉｌｉｔｙ”  Ａｃａｄｅｍｉｃ  ｐｒｅｓｓ．
【０００４】
【発明が解決しようとする課題】
ロジックＢＩＳＴにより、被テスト半導体集積回路内における故障の有無の判定を行うことができる。さらに、ロジックＢＩＳＴにより、故障が存在する半導体集積回路に対して、故障解析を行う場合がある。しかしながら、ロジックＢＩＳＴでの故障解析には大きな問題がある。ロジックＢＩＳＴは半導体集積回路内部でテストの結果を圧縮するため、そのままでは故障解析に必要な情報が得られない。故障解析には、故障を検出するテストパタン（フェイルパタン）と、故障の影響を取り込むスキャンフリップフロップ回路（フェイルスキャンＦ／Ｆ回路）の情報が必要であるので、通常のロジックＢＩＳＴとは異なる動作でこれらの情報を得る必要がある。
【０００５】
例えば、テストパタン毎にロジックＢＩＳＴの動作を分割することにより、フェイルパタンを特定する方法がある。この方法ではいくつかの問題がある。ひとつは、フェイルパタンを得るためにテスタの実行結果を解析しなければならないことである。この解析時間に加え、通常のロジックＢＩＳＴの動作モードとは異なるスキャンテストモードに切り換えて複数回テストを行う必要があるために、テスタ時間が長くなってしまう。また、スキャンテストパタンを別途用意する必要と、スキャン設計を作りこむ必要があるため設計時間が伸びてしまう。さらには、スキャンテストモードに切り換えてしまうために、ロジックＢＩＳＴでないと検出できない故障に対しては故障解析が行えない問題（不良の再現性）もある。この不良の再現性の問題は、ロジックＢＩＳＴによって実動作速度テストを行っている場合は重大な問題となる。
【０００６】
本発明はこのような従来技術の問題点を解決するために成されたものであり、その目的は、故障箇所を容易に特定することができる半導体集積回路を提供することである。
【０００７】
【課題を解決するための手段】
上記目的を達成するため、本発明の特徴は、論理回路内の記憶素子により構成された複数のシフトレジスタと、シフトレジスタの入力段に接続されたテストパタン発生器と、シフトレジスタの出力段に接続された、シフトレジスタを個別に選択するテスト結果圧縮部とを有する半導体集積回路であることを要旨とする。
【０００８】
【発明の実施の形態】
以下図面を参照して、本発明の実施の形態を説明する。図面の記載において同一あるいは類似の部分には同一あるいは類似な符号を付している。
【０００９】
（第１の実施の形態）
図１に示すように、本発明の第１の実施の形態に係る半導体集積回路２１は、論理回路内の記憶素子により構成された複数のシフトレジスタ（スキャンチェーン）５２ａ、５２ｂ、５２ｃ、・・・と、スキャンチェーン５２ａ、５２ｂ、５２ｃ、・・・の入力に接続されたテストパタン発生器２９と、スキャンチェーン５２ａ、５２ｂ、５２ｃ、・・・の出力に接続されたテスト結果圧縮部１１０ａと、テストパタン発生器２９及びテスト結果圧縮部１１０ａに接続されたＢＩＳＴ制御回路２２ａと、ＢＩＳＴ制御回路２２ａに接続されたシフトカウンタ２３と、ＢＩＳＴ制御回路２２ａに接続されたパタンカウンタ２４とを有する。ＢＩＳＴ制御回路２２ａ及びテスト結果圧縮部１１０ａは、半導体集積回路２１の外部に配置されたテスタ１５にそれぞれ接続されている。テスト結果圧縮部１１０ａは、スキャンチェーン５２ａ、５２ｂ、５２ｃ、・・・を個別に選択する。スキャンチェーン５２ａ、５２ｂ、５２ｃ、・・・は、被テストロジック２１１を構成する。
【００１０】
スキャンチェーン５２ａ、５２ｂ、５２ｃ、・・・のそれぞれは、直列に接続された複数のスキャンフリップフロップ回路（スキャンＦ／Ｆ回路）を有する。言い換えれば、各スキャンチェーン５２ａ、５２ｂ、５２ｃ、・・・は、シフトレジスタ状に接続されたスキャンＦ／Ｆ回路を有する。スキャンＦ／Ｆ回路は、論理回路内の記憶素子の一例であり、スキャンチェーン５２ａ、５２ｂ、５２ｃ、・・・は、シフトレジスタの一例である。
【００１１】
第１の実施の形態において、テスト結果圧縮部１１０ａは、スキャンチェーン５２ａ、５２ｂ、５２ｃ、・・・のそれぞれの出力に個別に接続された複数のデータ圧縮器２８ａ、２８ｂ、２８ｃ、・・・を備える。即ち、各スキャンチェーン５２ａ、５２ｂ、５２ｃ、・・・の出力にそれぞれデータ圧縮器２８ａ、２８ｂ、２８ｃ、・・・が接続されている。
【００１２】
テスタ１５は、ＢＩＳＴ制御回路２２ａに対してテストモード設定用の外部入力信号Ｉｎ１を送信する。ＢＩＳＴ制御回路２２ａは、外部入力信号Ｉｎ１を受信して、被テストロジック２１１を含む半導体集積回路２１を自己試験モードに設定する。自己試験モードにおいて特にスキャンチェーンを直列に動作させる間、スキャンチェーン５２ａ〜５２ｃ内のスキャンＦ／Ｆ回路は、通常動作時とは異なり、テストパタン発生器（２９）とデータ圧縮器（１１０ａ）と接続される。ロジックＢＩＳＴ回路を初期化した後、ロジックＢＩＳＴ用のクロック（ＢＩＳＴクロック）を定められた数入力することにより、自己テストが実行される。自己試験モード信号やＢＩＳＴクロックの供給は、外部入力信号Ｉｎ１から直接行われたり、ＢＩＳＴ制御回路２２ａを介して行われたりする。自己テストの実行中、スキャンチェーン５２ａ、５２ｂ、５２ｃ、・・・への直列入力はテストパタン発生器２９により自動的に生成される。即ち、テストパタン発生器２９は、スキャンテストパタンを生成し、スキャンチェーン５２ａ、５２ｂ、５２ｃ、・・・へ送信する。スキャンチェーン５２ａ、５２ｂ、５２ｃ、・・・は、スキャンテストパタンを受信し、テスト対象の論理回路から並列にテスト結果を取り込み、そのテスト結果をデータ圧縮器２８ａ、２８ｂ、２８ｃ、・・・へそれぞれ送信する。データ圧縮器２８ａ、２８ｂ、２８ｃ、・・・は、入力データ（テスト結果）を特定のビット長のデータ（シグネチャ）に圧縮し、被テストロジック１８のテスト解析結果Ｏｔ１をテスタ１５へそれぞれ送信する。テスト解析結果Ｏｔ１により、被テストロジック２１１についての良否が判定される。なお、シフトカウンタ２３は、スキャンチェーンの直列動作回数を管理する。パタンカウンタ２４は、スキャンテストパタンを個別に選択する。
【００１３】
ロジックＢＩＳＴでは、図１のテストパタン発生器２９として乱数的なパタン発生器（擬似乱数発生器）を用いる。なぜなら、テスト対象の論理回路の動作が一般的にランダムだからである。第１の実施の形態においては、乱数的なパタン発生器の一例として、図２（ａ）に示すようなＬｉｎｅａｒ  Ｆｅｅｄｂａｃｋ  Ｓｈｉｆｔ  Ｒｅｇｉｓｔｅｒ（ＬＦＳＲ）を用いる。
【００１４】
図２（ａ）は、５ビットのＬＦＳＲの回路構成の一例を示す。ＬＦＳＲは、直列に接続された５つのレジスタ３７ａ〜３７ｅと、レジスタ３７ａ〜３７ｅのうち特定のレジスタ（フィードバックポイント）３７ａ、３７ｃの出力端子及び最終段のレジスタ３７ｅの出力端子に接続された排他的論理和回路４７とを有する。レジスタ３７ａ〜３７ｅのクロック端子にはクロック信号ＣＬＫが供給され、レジスタ３７ａ〜３７ｅはクロック信号ＣＬＫに同期してシフト動作を行う。排他的論理和回路４７は、特定のレジスタ（フィードバックポイント）３７ａ、３７ｃの出力及び最終段のレジスタ３７ｅの出力を演算し、その演算結果を先頭レジスタ３７ａの入力端子へ供給する。
【００１５】
ＬＦＳＲを図１のテストパタン発生器２９として使用する為には、初期化すること、即ち、全ビットを０以外の適当な値に設定することが必要である。初期化動作には、半導体集積回路２１内部に保持している初期値に設定する場合と、半導体集積回路２１外部から初期値を設定する場合とがある。初期化されたＬＦＳＲにおいて、レジスタ３７ａ〜３７ｅにクロック信号ＣＬＫを供給することにより、レジスタ３７ａ〜３７ｅの値は、排他的論理和回路４７による演算を行いながらシフトされていく。その結果、レジスタ３７ａ〜３７ｅの値はランダムに変化する。このランダムに変化するレジスタ３７ａ〜３７ｅの値は、スキャンテストパタンとして、被テストロジック２１１に供給される。
【００１６】
一方、図１のスキャンチェーン５２ａ、５２ｂ、５２ｃ、・・・によるテスト結果は、データ圧縮器２８ａ、２８ｂ、２８ｃ、・・・によりそれぞれ解析される。第１の実施の形態においては、データ圧縮器２８ａ、２８ｂ、２８ｃ、・・・の一例として、図２（ｂ）に示すような回路をそれぞれ用いる。
【００１７】
図２（ｂ）に示すように、データ圧縮器２８ａは、５つのレジスタ３１３ａ〜３１３ｅと、１つの排他的論理和回路２１３ａとを有する。５つのレジスタ３１３ａ〜３１３ｅは直列に接続されている。レジスタ３１３ａ、３１３ｃ及び３１３ｅの出力は、排他的論理和回路２１３ａの入力に接続されている。排他的論理和回路２１３ａの入力には、さらに被テストロジック２１１からのテスト結果のデータが供給される。排他的論理和回路２１３ａの出力は、先頭のレジスタ３１３ａの入力に接続されている。
【００１８】
レジスタ３１３ａ〜３１３ｅのクロック端子にはクロック信号ＣＬＫが供給され、レジスタ３１３ａ〜３１３ｅはクロック信号ＣＬＫに同期してシフト動作を行う。レジスタ３１３ｂ〜３１３ｅのそれぞれの入力には、レジスタ３１３ａ〜３１３ｄの値が供給される。先頭のレジスタ３１３ａの入力には、排他的論理和回路２１３ａの演算結果が供給される。排他的論理和回路２１３ａには、被テストブロック２１１からのテスト結果のデータが入力される。
【００１９】
レジスタ３１３ａ〜３１３ｄにクロック信号ＣＬＫを供給すると、データ圧縮器は、被テストブロック２１１からテスト結果を取り込みながらデータを圧縮していく。最終的にレジスタ３１３ａ〜３１３ｅに残ったデータが圧縮結果である。圧縮結果をあらかじめ計算により求められている期待値（シグネチャ）と比較することで、故障の判定を行う。
【００２０】
図１に示したロジックＢＩＳＴによるテストにおいては、スキャンテストパタンを半導体集積回路２１外部に配置されたテスタ１５のメモリ上に用意する必要がなくなり、テスタ１５のコストが削減される。また、総ての動作をＢＩＳＴクロックに同期して半導体集積回路１の内部で行う。したがって、ＢＩＳＴクロックを高速で動作させることにより、テスタ１５によるテスト動作周波数よりも速い動作速度でのテストが可能になる。これにより、実動作での製造テストを行うことができる。また、ロジックＢＩＳＴによるテストは、少数のテスト用外部入出力信号Ｉｎ１しか必要としないので、複数のブロックを並列的にテストすることも可能となる。これにより、全体のテスト時間が大幅に削減できる。更に、ロジックＢＩＳＴはテスタ１５によるスキャン入出力数の制約を受けないため、一般的なスキャン設計よりも多数本のスキャンチェーン５２ａ、５２ｂ、５２ｃ、・・・を構築することができる。スキャンチェーン５２ａ、５２ｂ、５２ｃ、・・・の本数を増やすことで、一本当りのスキャンチェーン長が短くなるので、テスト時間を削減することが可能になる。
【００２１】
以上説明したように、各スキャンチェーン５２ａ、５２ｂ、５２ｃ、・・・の出力にそれぞれデータ圧縮器２８ａ、２８ｂ、２８ｃ、・・・が接続されているため、スキャンチェーン５２ａ、５２ｂ、５２ｃ、・・・毎に期待値シグネチャをもつことができる。したがって、スキャンチェーン５２ａ、５２ｂ、５２ｃ、・・・毎に期待値シグネチャの比較を行うだけで、故障の影響が伝搬したスキャンチェーンを特定することができる。よって、故障が伝搬するスキャンチェーンを容易に特定することが可能である。期待値シグネチャの比較は、半導体集積回路２１内部に用意した期待値比較回路で行っても良いし、テスタ１５内で行っても良い。いずれにしても、テスタ１５のメモリは、スキャンチェーン５２ａ、５２ｂ、５２ｃ、・・・毎の期待値シグネチャを持つだけでよい。即ち、テスタ１５のメモリには期待値シグネチャだけが必要とされる為、テスタ１５のメモリに関するコストが削減できる。故障解析に利用するのは自己試験時のパタンであるため、不良の再現性の問題が起こらない。また、実速度テスト（ａｔ−ｓｐｅｅｄテスト）にも対応ができる。図８を参照して後述する既存の回路を共有できるため、エリアペナルティも少ない。この回路構成は、自己試験と故障解析に共通な構造としても利用でき、又は故障解析専用の回路としても利用可能である。このように、ロジックＢＩＳＴを用いて半導体集積回路のテスト及び故障解析を行う際に、故障の影響が伝搬するスキャンＦ／Ｆ回路の位置情報を半導体集積回路から出力することにより、容易に故障解析作業を行うことが出来る。
【００２２】
なお、図１ではテスタ１５側で期待値シグネチャを比較する例を示した。この場合、各データ圧縮器２８ａ、２８ｂ、２８ｃ、・・・は、テスト解析結果Ｏｔ１として、シグネチャをそれぞれ出力する。テスタ１５は、メモリにロードされている期待値シグネチャと比較を行い良否を記録する。
【００２３】
図１に示した半導体集積回路２１において故障の影響が伝搬したスキャンチェーン（フェイルスキャンチェーン）を特定する手順を、図３を参照して示す。先ず、Ｓ１００段階において、図１を参照して説明したロジックＢＩＳＴを実行する。ロジックＢＩＳＴの結果としてフェイルログ２５０が得られる。そしてＳ１１０段階において、フェイルログ２５０を解析する。解析結果としてフェイルパタン２５２及びフェイルスキャンチェーン２５４の情報が得られる。
【００２４】
（第１の実施の形態の第１の変形例）
図４に示すように、本発明の第１の実施の形態の第１の変形例に係る半導体集積回路３１は、複数のスキャンチェーン５２ａ、５２ｂ、５２ｃ、・・・と、スキャンチェーン５２ａ、５２ｂ、５２ｃ、・・・の入力に接続されたテストパタン発生器２９と、スキャンチェーン５２ａ、５２ｂ、５２ｃ、・・・の出力に接続されたテスト結果圧縮部１１０ｂと、テストパタン発生器２９及びテスト結果圧縮部１１０ｂに接続されたＢＩＳＴ制御回路２２ｂと、ＢＩＳＴ制御回路２２ｂに接続されたシフトカウンタ２３と、ＢＩＳＴ制御回路２２ｂに接続されたパタンカウンタ２４とを有する。ＢＩＳＴ制御回路２２ｂ及びテスト結果圧縮部１１０ｂは、半導体集積回路３１の外部に配置されたテスタ１５にそれぞれ接続されている。テスト結果圧縮部１１０ｂは、スキャンチェーン５２ａ、５２ｂ、５２ｃ、・・・を個別に選択する。スキャンチェーン５２ａ、５２ｂ、５２ｃ、・・・は、被テストロジック２１１を構成する。
【００２５】
第１の実施の形態の第１の変形例において、テスト結果圧縮部１１０ｂは、スキャンチェーン５２ａ、５２ｂ、５２ｃの出力に接続されたセレクタ３１４ａ、・・・と、セレクタ３１４ａ、・・・にそれぞれ接続されたデータ圧縮器３８ａ、・・・とを有する。セレクタ３１４ａ、・・・は、スキャンチェーン５２ａ、５２ｂ、５２ｃ、・・・を個別に選択する。複数のスキャンチェーン５２ａ、５２ｂ、５２ｃと１つのデータ圧縮器３８ａとの間にセレクタ３１４ａ、・・・が接続されている。複数のスキャンチェーン５２ａ、５２ｂ、５２ｃは１つのデータ圧縮器３８ａを兼用している。ＢＩＳＴ制御回路２２ｂは、セレクタ３１４ａ、・・・に接続されている。図４においては、３つのスキャンチェーン５２ａ、５２ｂ、５２ｃが１つのデータ圧縮器３８ａを兼用している例を示す。
【００２６】
故障解析の手順を図４に示した半導体集積回路３１を例として説明する。
【００２７】
最初に、テストパタン発生器２９をフェイルパタンの初期状態にセットする。ＢＩＳＴ制御回路２２ｂは各セレクタ３１４ａ、・・・に対して制御信号を送信する。各セレクタ３１４ａ、・・・は、１番目のスキャンチェーン５２ａ、・・・を選択してデータ圧縮器３８ａ、・・・と接続する。総てのスキャンチェーン５２ａ、５２ｂ、５２ｃ、・・・へフェイルパタンをロードし、キャプチャを終える。そして、データ圧縮器３８ａ、・・・は、各セレクタ３１４ａ、・・・の１番目のスキャンチェーン５２ａ、・・・のキャプチャデータに対してシグネチャを作成し、シグネチャをテスト解析結果Ｏｔ１としてテスタ１５へ送信する。テスタ１５は、テスタ１５が持つ期待値シグネチャと比較して良否を記録する。
【００２８】
次に、ＢＩＳＴ制御回路２２ｂは、２番目のスキャンチェーン５２ｂ、・・・とデータ圧縮器３８ａ、・・・とを接続するようにセレクタ３１４ａ、・・・を制御する。テストパタン発生器２９は、先と同様にフェイルパタンの初期状態にセットされ、総てのスキャンチェーン５２ａ、５２ｂ、５２ｃ、・・・へフェイルパタンをロードし、キャプチャを行う。そして、データ圧縮器３８ａ、・・・は、２番目のスキャンチェーン５２ｂ、・・・のキャプチャデータに対してシグネチャを作成する。作成されたシグネチャは、テスト解析結果Ｏｔ１としてテスタ１５に出力され、テスタ１５において期待値シグネチャと比較される。各セレクタ３１４ａ、・・・の３番目のスキャンチェーンに対しても同様に行う。
【００２９】
このように、逐次的な処理をおこなうことで、複数のスキャンチェーン５２ａ、５２ｂ、５２ｃ、・・・が１つデータ圧縮器３８ａ、・・・を兼用しても、容易に故障が伝搬したスキャンチェーンを特定することが出来る。即ち、データ圧縮器３８ａ、・・・を兼用する場合でも、期待値シグネチャはスキャンチェーン５２ａ、５２ｂ、５２ｃ、・・・毎に持つことになる。総てのスキャンチェーン５２ａ、５２ｂ、５２ｃ、・・・に個別にデータ圧縮器３８ａ、・・・が接続される図１に示した半導体集積回路２１に比べて、エリアペナルティを減らすことができる。なお、図１に示した半導体集積回路２１に比べて、不良解析時間は兼用本数倍（３倍）である。実行時間とエリアペナルティはトレードオフの関係にある。
【００３０】
図４に示した半導体集積回路におけるスキャンチェーン特定手順の一例を図５を参照して説明する。先ず、Ｓ２００段階において、初期化（ｉ＝１）を行うことにより、セレクタ３１４ａ、・・・毎の１番目のスキャンチェーン５２ａ、・・・を選択する。なお、選択されたスキャンチェーン５２ａ、・・・の数は、セレクタ３１４ａ、・・・の数とデータ圧縮器３８ａの組の数と等しい。次に、Ｓ２１０段階において、ロジックＢＩＳＴを実行する。ロジックＢＩＳＴの結果としてフェイルログ２５１が得られる。なお、選択された１番目のスキャンチェーン５２ａ、・・・のテスト結果のみを圧縮し、期待値シグネチャと比較する。
【００３１】
次に、Ｓ２２０段階において、ｉが１つのデータ圧縮器を兼用するスキャンチェーンの数（セレクト数）より小さいか否かを判断する。ｉがセレクト数よりも小さい場合（Ｓ２２０段階にてＹｅｓ）、Ｓ２３０段階において、ｉに１加えたものを新たにｉと定義する。そして、Ｓ２１０段階に戻り、２番目のスキャンチェーン５２ｂ、・・・について、Ｓ２１０及びＳ２２０段階を実施する。以下同様にして、１つのデータ圧縮器を兼用する総てのスキャンチェーン５２ａ〜５２ｃについて、Ｓ２１０及びＳ２２０段階を繰り返し実施する。そして、ｉがセレクト数と同じである場合（Ｓ２２０段階にてＮｏ）、Ｓ２４０段階において、最終的なフェイルログ２５１を解析する。解析結果としてフェイルスキャンチェーン２５５の情報が得られる。このようにして、フェイルスキャンチェーンを特定することが出来る。
【００３２】
（第１の実施の形態の第２の変形例）
図６に示すように、本発明の第１の実施の形態の第２の変形例に係る半導体集積回路４１は、複数のスキャンチェーン５２ａ、５２ｂ、５２ｃ、・・・と、スキャンチェーン５２ａ、５２ｂ、５２ｃ、・・・の入力に接続されたテストパタン発生器２９と、スキャンチェーン５２ａ、５２ｂ、５２ｃ、・・・の出力に接続されたテスト結果圧縮部１１０ｃと、テストパタン発生器２９及びテスト結果圧縮部１１０ｃに接続されたＢＩＳＴ制御回路２２ｃと、ＢＩＳＴ制御回路２２ｃに接続されたシフトカウンタ２３と、ＢＩＳＴ制御回路２２ｃに接続されたパタンカウンタ２４とを有する。ＢＩＳＴ制御回路２２ｃ及びテスト結果圧縮部１１０ｃは、半導体集積回路４１の外部に配置されたテスタ１５にそれぞれ接続されている。テスト結果圧縮部１１０ｃは、スキャンチェーン５２ａ、５２ｂ、５２ｃ、・・・を個別に選択する。スキャンチェーン５２ａ、５２ｂ、５２ｃ、・・・は、被テストロジック２１１を構成する。
【００３３】
第１の実施の形態の第２の変形例において、テスト結果圧縮部１１０ｃは、スキャンチェーン５２ａ、５２ｂ、５２ｃ、・・・の出力に接続されたモード切換回路４１４と、モード切換回路４１４に接続されたデータ圧縮器４８とを有する。スキャンチェーン５２ａ、５２ｂ、５２ｃ、・・・とデータ圧縮器４８との間にはモード切換回路４１４が接続されている。モード切換回路４１４は、スキャンチェーン５２ａ、５２ｂ、５２ｃ、・・・とデータ圧縮器４８と間の接続関係を切り替えることが出来る。具体的には、モード切換回路４１４は、スキャンチェーン５２ａ、５２ｂ、５２ｃ、・・・を個別に選択し、選択されたスキャンチェーン５２ａ、５２ｂ、５２ｃ、・・・とデータ圧縮器４８とを接続することが出来る。また、モード切換回路４１４は、総てのスキャンチェーン５２ａ、５２ｂ、５２ｃ、・・・を同時に選択し、総てのスキャンチェーン５２ａ、５２ｂ、５２ｃ、・・・とデータ圧縮器４８とを接続することも出来る。即ち、テスト結果圧縮部１１０ｃは、データ圧縮器４８が総てのスキャンチェーン５２ａ、５２ｂ、５２ｃ、・・・によって共有された構成を有する。
【００３４】
通常の自己試験時には、モード切換回路４１４はスキャンチェーン５２ａ、５２ｂ、５２ｃ、・・・とデータ圧縮器４８をそのまま、もしくは空間的な圧縮（スペースコンパクト）をして接続する。自己試験の結果、不良があることが判明した場合、故障解析モードによって解析を行う。検査対象の半導体集積回路４１内のＢＩＳＴ制御回路２２ｃは、テスタ１５から制御信号Ｉｎ３を受信し、通常の自己試験から故障解析モードへ切り換える。故障解析モードに切り換わると、ＢＩＳＴ制御回路２２ｃはモード切換回路４１４へ指示信号を送信する。指示信号を受信したモード切換回路４１４は、スキャンチェーン５２ａ、５２ｂ、５２ｃ、・・・とデータ圧縮器４８とをＢＩＳＴ制御回路２２ｃの指示に従って選択し接続する。その結果、モード切換回路４１４及びデータ圧縮器４８は、図４に示したセレクタ３１４ａ、・・・及びデータ圧縮器３８ａ、・・・と同じ構成を有する。したがって、図５に示した不良解析手順と同様にして、フェイルスキャンチェーンを特定することが出来る。
【００３５】
図７に示すように、モード切換回路４１４は、スキャンチェーン５２ａ〜５２ｅに接続されたセレクタ２４０と、排他的論理和回路２４２と、論理積回路２４６ｂ〜２４６ｅと、スキャンチェーン５２ａ及び排他的論理和回路２４２に接続されたセレクタ２４４とを有する。スキャンチェーン５２ａ〜５２ｅの出力は、セレクタ２４０の入力に接続されている。スキャンチェーン５２ｂ〜５２ｅの出力は、論理積回路２４６ｂ〜２４６ｅの入力にそれぞれ接続されている。セレクタ２４０の出力は、排他的論理和回路２４２の入力に接続されている。排他的論理和回路２４２の出力及びスキャンチェーン５２ａの出力は、セレクタ２４４の入力に接続されている。セレクタ２４４は、モード制御信号Ｃｔ１に従って動作が制御される。モード制御信号Ｃｔ１は、論理積回路２４６ｂ〜２４６ｅの入力にも送信される。
【００３６】
一方、データ圧縮器４８は、５つのレジスタ２３２ａ〜２３２ｅと、５つの排他的論理和回路２３０ａ〜２３０ｅとを有する。５つのレジスタ２３２ａ〜２３２ｅと、５つの排他的論理和回路２３０ａ〜２３０ｅとは、交互に直列に接続されている。具体的には、排他的論理和回路２３０ａの出力はレジスタ２３２ａの入力に接続され、レジスタ２３２ａの出力は、排他的論理和回路２３０ｂの一方の入力に接続されている。以下同様にして、排他的論理和回路２３０ｂ〜２３０ｅと、レジスタ２３２ｂ〜２３２ｅとは、交互に直列に接続されている。最終段のレジスタ２３２ｅの出力は、先頭の排他的論理和回路２３０ａの一方の入力に接続されている。排他的論理和回路２３０ａの他方の入力には、モード切換回路４１４内のセレクタ２４４の出力が接続されている。排他的論理和回路２３０ｂ〜２３０ｅの他方の入力には、モード切換回路４１４内の論理積回路２４６ｂ〜２４６ｅの出力が接続されている。最終段のレジスタ２３２ｅの出力は、特定の排他的論理和回路２３０ｃの入力にも接続されている。レジスタ２３２ａ〜２３２ｄの出力は、モード切換回路４１４内の排他的論理和回路２４２の入力に接続されている。
【００３７】
セレクタ２４０は、スキャンチェーン選択信号Ｓｌ１に従ってスキャンチェーン５２ａ〜５２ｅを選択する。セレクタ２４０は、選択したスキャンチェーン５２ａ〜５２ｅと排他的論理和回路２４２の入力とを接続する。セレクタ２４４は、モード制御信号Ｃｔ１に従って、排他的論理和回路２４２の出力或いはスキャンチェーン５２ａの出力を選択する。
【００３８】
モード制御信号Ｃｔ１が１の時、セレクタ２４４は、スキャンチェーン５２ａの出力と排他的論理和回路２３０ａの入力とを接続する。排他的論理和回路２３０ａ〜２３０ｅの入力は、スキャンチェーン５２ａ〜５２ｅの出力に接続される。従って、データ圧縮器４８は、スキャンチェーン５２ａ〜５２ｅからパラレルにテスト結果を取り込みながら、テスト結果のデータを圧縮していく。最終的にレジスタ２３２ａ〜２３２ｅに残った出力データ２３４ａ〜２３４ｅが圧縮結果である。このように、自己試験実行時においては、モード制御信号Ｃｔ１を１に設定される。この自己試験モードにおいて、スキャンチェーン選択信号Ｓｌ１は回路動作に影響を与えない。
【００３９】
モード制御信号Ｃｔ１が０の時、セレクタ２４４は、排他的論理和回路２４２の出力と排他的論理和回路２３０ａの入力とを接続する。排他的論理和回路２３０ａ〜２３０ｅの入力は、スキャンチェーン５２ａ〜５２ｅの出力に接続されない。レジスタ２３２ａ〜２３２ｄの出力の排他的論理和の演算結果が排他的論理和回路２３０ａに入力され、同時に、レジスタ２３２ｅの出力も排他的論理和回路２３０ａに入力される。即ち、データ圧縮器４８は、図２（ａ）に示したＬＦＳＲと同様な構成を有する。したがって、排他的論理和回路２３０ａは、セレクタ２４０によって選択されたスキャンチェーン５２ａ〜５２ｅからのデータと、各レジスタ２３２ａ〜２３２ｄの出力データ２３４ａ〜２３４ｅとの排他的論理和を取り込む。なお、データを取り込むスキャンチェーン５２ａ〜５２ｅは、セレクタ２４０及びスキャンチェーン選択信号Ｓｌ１により選ばれる。
【００４０】
なお、図７においては、説明を容易にするため、スペースコンパクタが無い場合の例を示したが、スペースコンパクタがあっても基本的な動作は変わらない。
【００４１】
このように、モード切換回路４１４は、自己試験モードと故障解析モードとを切り換えることが出来るため、複数のスキャンチェーン５２ａ、５２ｂ、５２ｃ、・・・が１つデータ圧縮器４８を兼用することが出来る。よって、容易に故障が伝搬したスキャンチェーンを特定することが出来る。即ち、データ圧縮器４８を兼用する場合でも、期待値シグネチャはスキャンチェーン５２ａ、５２ｂ、５２ｃ、・・・毎に持つことになる。総てのスキャンチェーン５２ａ、５２ｂ、５２ｃ、・・・に個別にデータ圧縮器３８ａ、・・・が接続される図１に示した半導体集積回路２１に比べて、エリアペナルティを減らすことができる。
【００４２】
（比較例）
図８に示すように、本発明の第１の実施の形態の比較例に係る半導体集積回路１１は、複数のスキャンチェーン１７ａ、１７ｂ、１７ｃ、・・・と、スキャンチェーン１７ａ、１７ｂ、１７ｃ、・・・の入力に接続されたテストパタン発生器１９と、スキャンチェーン１７ａ、１７ｂ、１７ｃ、・・・の出力に接続されたテスト結果圧縮器１６と、テストパタン発生器１９及びテスト結果圧縮器１６に接続されたＢＩＳＴ制御回路１２と、ＢＩＳＴ制御回路１２に接続されたシフトカウンタ１３と、ＢＩＳＴ制御回路１２に接続されたパタンカウンタ１４とを有する。ＢＩＳＴ制御回路１２及びテスト結果圧縮器１６は、半導体集積回路１１の外部に配置されたテスタ１５にそれぞれ接続されている。スキャンチェーン１７ａ、１７ｂ、１７ｃ、・・・は、被テストロジック１８を構成する。
【００４３】
テスタ１５から入力される自己試験モード設定用の外部入力信号Ｉｎ４により、半導体集積回路１１は、自己試験モードに設定され、自己テストが実行される。スキャンチェーン１７への入力はテストパタン発生器１９により自動的に生成される。また、スキャンチェーン１７からのテスト結果出力は、テスト結果圧縮器１６に送信される。テスト結果圧縮器１６は、入力データをある特定のビット長のデータ（シグネチャ）に圧縮する。最終的に被テストロジック１８のテスト解析結果が出力され、良否の判定が行われる。
【００４４】
しかしながら、図８に示したロジックＢＩＳＴでは、ロジックＢＩＳＴは半導体集積回路１１内部で故障の有無を判定するため、そのままでは故障解析に必要な情報が得られない。故障解析には、フェイルパタン及びフェイルスキャンＦ／Ｆ回路の情報が必要であるので、図８に示した通常のロジックＢＩＳＴとは異なる動作でこれらの情報を得る必要がある。
【００４５】
例えば、ロジックＢＩＳＴで故障解析を行う場合、１パタン毎に動作を分割する手法がある。ここで１パタンとは、並列的にスキャンＦ／Ｆ回路に取り込んだ論理値を、直列的に外部へ出力までの動作を指す。スキャンＦ／Ｆ回路に並列的に論理値を取り込むことをパラレルキャプチャと呼ぶ。また、スキャンＦ／Ｆ回路の論理値を直列的に外部へ出力することをシリアルシフトアウトと呼び、これに対して外部から直列的に入力することをシリアルシフトインと呼ぶ。一般的に、第ｎ番目のパタンのシリアルシフトアウトと第ｎ＋１番目のパタンのシリアルシフトインは同時に行う。ここでは、パラレルキャプチャからシリアルシフトアウトが終了するまでを１パタンの区切りとする。このとき、１パタン毎にテスト結果解析器の状態をテスタ１５で比較すれば、どのパタンで期待値とシグネチャが異なるかがわかるため、故障を検出するテストパタンを特定できる。
【００４６】
次に、フェイルスキャンＦ／Ｆ回路の位置を知る必要がある。このために、図８に示した半導体集積回路１１を図９に示すようなスキャンテストモードに切り換える。図９に示すように、半導体集積回路１１は、テスタ１５から送信される制御信号Ｉｎ５によりスキャンテストモードに切り換わる。すると、被テストロジック１８は、テストパタン発生器１９及びテスト結果圧縮器１６から切り離され、替わりにテスタ１５と接続される。具体的には、スキャンチェーン１７ａ、１７ｂ、１７ｃ、・・・は、互いに直列に接続され、初段のスキャンチェーン１７ａの入力及び最終段のスキャンチェーンの出力がそれぞれテスタ１５のスキャンチャネルに接続される。
【００４７】
図９に示したスキャンテストモードにおいて、自己試験モードにて特定されたフェイルパタンを外部からスキャンイン、スキャンアウトすることでフェイルスキャンＦ／Ｆ回路を特定する。
【００４８】
図８及び図９に示した半導体集積回路１１は、いくつかの問題を有する。ひとつは、テストパタンを得るためにテスタの実行結果を解析しなければならないことである。この解析時間に加え、図９に示したように、スキャンテストモードに切り換えての複数回テストを行うためにテスタ時間が長くなってしまう。また、スキャンテストパタンを別途用意する必要と、スキャン設計を作りこむ必要があるため設計時間が伸びてしまう。さらには、スキャンテストモードに切り換えてしまうために、ロジックＢＩＳＴでないと検出できない故障に対しては故障解析が行えない不良の再現性の問題もある。これは、ロジックＢＩＳＴによって実動作速度テストを行っている場合は重大な問題となる。
【００４９】
（第２の実施の形態）
図１０に示すように、本発明の第２の実施の形態において、スキャンチェーン５２ａ、５２ｂ、・・・のそれぞれは複数のブロック５２ａａ、５２ａｂ、・・・、５２ｂａ、５２ｂｂ、・・・を有する。即ち、テストパタン発生器２９に接続された各スキャンチェーン５２ａ、５２ｂ、・・・は、複数のブロック５２ａａ、５２ａｂ、・・・、５２ｂａ、５２ｂｂ、・・・に分割されている。また、半導体集積回路は、これらのブロック５２ａａ、５２ａｂ、・・・、５２ｂａ、５２ｂｂ、・・・のそれぞれの最終段の出力に個別に接続された複数のデータ圧縮器５３ａａ、５３ａｂ、・・・、５３ｂａ、５３ｂｂ、・・・を更に有する。第２の実施の形態においては、１つのスキャンチェーン５２ａ、５２ｂ、・・・を、５つのブロック５２ａａ〜５２ａｄ、５２ｂａ〜５２ｂｄにそれぞれ分割し、５つのデータ圧縮器５３ａａ〜５３ａｄ、５３ｂａ〜５３ｂｄを個別に接続した場合を例に取り説明する。なお、各スキャンチェーン５２ａ、５２ｂ、・・・の最終段のブロック５２ａｄ、５２ｂｄ、・・・に接続されたデータ圧縮器５３ａｄ、５３ｂｄ、・・・は、図１に示したデータ圧縮器２８ａ、２８ｂ、２８ｃ、・・・をそのまま使用することは可能である。また、分割するブロックの数は、５に限らず、１〜４或いは６以上であっても構わない。
【００５０】
図１０に示した回路構成により、ブロック５２ａａ、５２ａｂ、・・・、５２ｂａ、５２ｂｂ、・・・のそれぞれに対する期待値シグネチャを用意するだけで、故障が伝搬するスキャンＦ／Ｆ回路が属するブロック（フェイルブロック）５２ａａ、５２ａｂ、・・・、５２ｂａ、５２ｂｂ、・・・を特定することができる。故障が伝搬するスキャンＦ／Ｆ回路が属するブロック５２ａａ、５２ａｂ、・・・、５２ｂａ、５２ｂｂ、・・・を特定することができれば、特定のブロック５２ａａ、５２ａｂ、・・・、５２ｂａ、５２ｂｂ、・・・のキャプチャデータのみをテスト結果のデータとして図１のテスタ１５に戻せばよい。したがって、フェイルメモリの少ないテスタ１５であっても問題なくロジックＢＩＳＴを実施し、フェイルログを解析することが出来る。
【００５１】
図１１を参照して、図１０に示した回路構成によってフェイルスキャンチェーン内のフェイルブロックを特定する手順を説明する。先ず、Ｓ３００段階において、フェイルスキャンチェーン２５４の情報とフェイルパタン２５２を基にロジックＢＩＳＴを実行する。この結果、フェイルログ２５７が得られる。そして、Ｓ３１０段階において、フェイルログ２５７を解析して、フェイルスキャンチェーン２５４内で故障が伝搬するスキャンＦ／Ｆ回路が属するブロック２６０を特定する。
【００５２】
図１２を参照して、図１０に示した回路構成によってフェイルスキャンチェーン内のブロックを特定し、ブロック内のテスト結果をテスタ１５に出力する手順を説明する。先ず、図１１のフローチャートと同様にして、Ｓ４００段階において、フェイルスキャンチェーン２５６の情報とフェイルパタン２５３を基にロジックＢＩＳＴを実行する。この結果、フェイルログ２５８が得られる。フェイルログ２５８には、ブロック内のテスト結果のデータが含まれる。なぜなら、シグネチャを比較した結果が不一致であった場合は、ブロック内のテスト結果のデータをテスタ１５に出力するからである。そして、Ｓ４１０段階において、フェイルログ２５８を解析して、フェイルスキャンチェーン２５６内で故障が伝搬するスキャンＦ／Ｆ回路が属するブロック２６０及びスキャンＦ／Ｆ回路２６２を特定する。
【００５３】
（第２の実施の形態の第１の変形例）
図１３に示すように、本発明の第２の実施の形態の第１の変形例において、スキャンチェーン５２ａ、５２ｂ、・・・のそれぞれは複数のブロック５２ａａ、５２ａｂ、・・・、５２ｂａ、５２ｂｂ、・・・を有する。即ち、テストパタン発生器２９に接続された各スキャンチェーン５２ａ、５２ｂ、・・・は、複数のブロック５２ａａ、５２ａｂ、・・・、５２ｂａ、５２ｂｂ、・・・に分割されている。また、半導体集積回路は、ブロック５２ａａ、５２ｂａ、５２ａｂ、５２ｂｂ、・・・の最終段の出力に接続されたセレクタ６６ａａ、６６ａｂ、・・・と、セレクタ６６ａａ、６６ａｂ、・・・に接続されたデータ圧縮器５３ａａ、５３ａｂ、・・・とを有する。セレクタ６６ａａ、６６ａｂ、・・・は、ブロック５２ａａ、５２ｂａ、５２ａｂ、５２ｂｂ、・・・を個別に選択する。複数のブロック５２ａａ、５２ｂａ、５２ａｂ、５２ｂｂ、・・・と１つのデータ圧縮器５３ａａ、５３ａｂ、・・・との間には、セレクタ６６ａａ、６６ａｂ、・・・が接続されている。複数のブロック５２ａａ、５２ｂａ、５２ａｂ、５２ｂｂ、・・・は、１つのデータ圧縮器５３ａａ、５３ａｂ、・・・を兼用している。図１３においては、隣り合う２つのブロック５２ａａ、５２ｂａが１つのデータ圧縮器５３ａａを兼用している場合を例に取り説明する。
【００５４】
複数のブロックが１つのデータ圧縮器を兼用することで、エリアペナルティを減らすことが可能である。セレクタがデータ圧縮器を兼用するブロックを個別に選択することにより、逐次的にシグネチャを比較して、総てのブロックに対して故障の伝搬を確認することが出来る。
【００５５】
なお、解析時間は、データ圧縮器を兼用するブロックの増加に伴い増加し、エリアペナルティとトレードオフの関係にある。また、１つの圧縮器を兼用するブロックの数は、２つの場合に限らず、３つ以上であっても構わない。
【００５６】
（第２の実施の形態の第２の変形例）
図１４に示すように、本発明の第２の実施の形態の第２の変形例において、スキャンチェーン５２ａ、５２ｂ、・・・のそれぞれは複数のブロック５２ａａ、５２ａｂ、・・・、５２ｂａ、５２ｂｂ、・・・を有する。即ち、テストパタン発生器２９に接続された各スキャンチェーン５２ａ、５２ｂ、・・・は、複数のブロック５２ａａ、５２ａｂ、・・・、５２ｂａ、５２ｂｂ、・・・に分割されている。また、半導体集積回路は、ブロック５２ａａ、５２ｂａ、５２ａｂ、５２ｂｂ、・・・のそれぞれの最終段の出力に接続されたセレクタ７５ａ、・・・と、セレクタ７５ａ、・・・に接続されたデータ圧縮器７６ａ、・・・とを有する。セレクタ７５ａ、・・・は、ブロック５２ａａ、５２ａｂ、・・・５２ｂａ、５２ｂｂ、・・・を個別に選択する。複数のブロック５２ａａ、５２ａｂ、・・・５２ｂａ、５２ｂｂ、・・・と１つのデータ圧縮器７６ａ、・・・との間には、セレクタ７５ａ、・・・が接続されている。複数のブロック５２ａａ、５２ａｂ、・・・５２ｂａ、５２ｂｂ、・・・は、１つのデータ圧縮器７６ａ、・・・を兼用している。図１４においては、隣り合う２つのスキャンチェーン５２ａ、５２ｂに属する総てのブロック５２ａａ〜５２ａｅ、５２ｂａ〜５２ｂｅが１つのデータ圧縮器７６ａを兼用する場合を例に取り説明する。
【００５７】
図１３に示したデータ圧縮器５３ａａ、・・・は、２つのブロック５２ａａ、５２ｂａ、・・・に兼用されている。これに比して、図１４に示したデータ圧縮器７６ａａ、・・・は、１０個のブロック５２ａａ〜５２ａｅ、５２ｂａ〜５２ｂｅに兼用されている。したがって、大幅にエリアペナルティを減らすことが可能である。なお、各ブロック５２ａａ〜５２ａｅ、５２ｂａ〜５２ｂｅからのデータは、セレクタ７５ａによって選択されてデータ圧縮器７６ａに入力され、シグネチャをそれぞれ生成する。
【００５８】
なお、２つのスキャンチェーン５２ａ、５２ｂに属する総てのブロック５２ａａ〜５２ａｅ、５２ｂａ〜５２ｂｅが１つのデータ圧縮器７６ａを兼用する場合を示したが、３つ以上のスキャンチェーンに属する総てのブロックが１つのデータ圧縮器７６ａを兼用しても構わない。
【００５９】
（第２の実施の形態の第３の変形例）
図１５に示すように、本発明の第２の実施の形態の第３の変形例において、スキャンチェーン５２ａ、５２ｂ、・・・のそれぞれは複数のブロック５２ａａ、５２ａｂ、・・・、５２ｂａ、５２ｂｂ、・・・を有する。即ち、テストパタン発生器２９に接続された各スキャンチェーン５２ａ、５２ｂ、・・・は、複数のブロック５２ａａ、５２ａｂ、・・・、５２ｂａ、５２ｂｂ、・・・に分割されている。また、半導体集積回路は、ブロック５２ａａ、５２ａｂ、・・・５２ｂａ、５２ｂｂ、・・・のそれぞれの最終段の出力に接続されたセレクタ８９ａ、・・・と、セレクタ８９ａ、・・・に接続されたモード切替回路４１４と、モード切替回路４１４に接続されたデータ圧縮器４８とを有する。セレクタ８９ａ、・・・は、ブロック５２ａａ、５２ａｂ、・・・５２ｂａ、５２ｂｂ、・・・を個別に選択する。複数のブロック５２ａａ、５２ａｂ、・・・５２ｂａ、５２ｂｂ、・・・と１つのデータ圧縮器４８との間には、セレクタ８９ａ、・・・及びモード切換回路４１４が接続されている。複数のブロック５２ａａ、５２ａｂ、・・・５２ｂａ、５２ｂｂ、・・・は、１つのデータ圧縮器４８を兼用している。図１５においては、隣り合う２つのスキャンチェーン５２ａ、５２ｂに属する総てのブロック５２ａａ〜５２ａｅ、５２ｂａ〜５２ｂｅが１つのデータ圧縮器４８を兼用する場合を例に取り説明する。
【００６０】
複数のセレクタ８９ａ、・・・と１つのデータ圧縮器４８との間にモード切換回路４１４を配置することにより、データ圧縮器４８は自己試験モードで用いるテスト結果圧縮器としても兼用でき、エリアペナルティが大幅に減少することが出来る。自己試験モードのとき、セレクタ８９ａ、・・・及びモード切換回路４１４は、総てのスキャンチェーン５２ａ、５２ｂ、・・・とデータ圧縮器４８とを直接もしくは空間的圧縮（スペースコンパクト）して接続する。これに対して、故障解析モードのとき、セレクタ８９ａ、・・・及びモード切換回路４１４は、特定のブロック５２ａａ〜５２ａｅ、５２ｂａ〜５２ｂｅ、・・・とデータ圧縮器４８とを直接に接続する。したがって、データ圧縮器４８はブロック５２ａａ〜５２ａｅ、５２ｂａ〜５２ｂｅ、・・・ごとのシグネチャを生成可能である。モード切換回路４１４の回路構成は、例えば、図７に示した回路構成と同じである。
【００６１】
（第２の実施の形態の第４の変形例）
図１６に示すように、本発明の第２の実施の形態の第４の変形例において、スキャンチェーン５２ａ、５２ｂ、・・・のそれぞれは複数のブロック５２ａａ、５２ａｂ、・・・、５２ｂａ、５２ｂｂ、・・・を有する。即ち、テストパタン発生器２９に接続された各スキャンチェーン５２ａ、５２ｂ、・・・は、複数のブロック５２ａａ、５２ａｂ、・・・、５２ｂａ、５２ｂｂ、・・・に分割されている。また、半導体集積回路は、ブロック５２ａａ、５２ｂａ、５２ａｂ、５２ｂｂ、・・・の最終段の出力に接続された排他的論理和回路６７ａａ、６７ａｂ、・・・と、排他的論理和回路６７ａａ、６７ａｂ、・・・に接続されたデータ圧縮器５３ａａ、５３ａｂ、・・・とを有する。複数のブロック５２ａａ、５２ｂａ、５２ａｂ、５２ｂｂ、・・・と１つのデータ圧縮器５３ａａ、５３ａｂ、・・・との間には、排他的論理和回路６７ａａ、６７ａｂ、・・・が接続されている。複数のブロック５２ａａ、５２ｂａ、５２ａｂ、５２ｂｂ、・・・は、１つのデータ圧縮器５３ａａ、５３ａｂ、・・・を共有している。図１６においては、隣り合う２つのブロック５２ａａ、５２ｂａが１つのデータ圧縮器５３ａａを兼用している場合を例に取り説明する。
【００６２】
図１３に示した２つのブロック５２ａａ、５２ｂａ、・・・は、セレクタ６６ａａ、６６ａｂ、・・・を介してデータ圧縮器５３ａａ、・・・を兼用している。これを「セレクタ方式」という。このセレクタ方式に比して、図１６に示した２つのブロック５２ａａ、５２ｂａ、・・・は、排他的論理和回路６７ａａ、６７ａｂ、・・・を介してデータ圧縮器５３ａａ、・・・を共有している。したがって、複数のスキャンチェーンのブロックを単位（フェイルスキャンブロック）として、故障が伝搬するスキャンＦ／Ｆ回路を特定することが出来る。例えば、故障が伝搬するスキャンチェーン５２ａ或いはスキャンチェーン５２ｂを特定できない状態であっても、ブロック５２ａａ或いはブロック５２ｂａのどちらかに故障が伝搬していることを特定することが出来る。
【００６３】
図１７を参照して、図１６に示した回路構成によってフェイルスキャンチェーン内で故障が伝搬するブロック（フェイルスキャンブロック）を特定し、ブロック内のテスト結果をテスタ１５に出力する手順を説明する。先ず、Ｓ６００段階において、フェイルパタン１６３に対してロジックＢＩＳＴを実行する。この結果、フェイルログ１６４が得られる。フェイルログ１６４には、ブロック内のテスト結果のデータが含まれる。そして、Ｓ６１０段階において、フェイルログ１６４を解析して、フェイルスキャンブロック１６５を特定する。
【００６４】
（第３の実施の形態）
図１８に示すように、本発明の第３の実施の形態において、複数のスキャンＦ／Ｆ回路９９ａ、９９ｂ、９９ｃ、・・・は、シフトレジスタ状に直列に接続され、スキャンチェーン９２を構成する。スキャンＦ／Ｆ回路９９ａ、９９ｂ、９９ｃ、・・・の出力は、排他的論理和回路（ＸＯＲ回路）９６ａ、９６ｂ、９６ｃ、・・・の一方の入力に接続されている。ＸＯＲ回路９６ａ、９６ｂ、９６ｃ、・・・の出力は、セレクタ（ＭＵＸ）９３ａ、９３ｂ、９３ｃ、・・・の一方の入力に接続されている。排他的論理和回路（ＸＯＲ回路）９６ａ、９６ｂ、９６ｃ、・・・の他方の入力には、制御信号９７ａ、９７ｂ、９７ｃ、・・・が供給される。ＭＵＸ９３ａ、９３ｂ、９３ｃ、・・・の他方の入力には、第１の組み合せ回路９１に接続されている。スキャンＦ／Ｆ回路９９ａ、９９ｂ、９９ｃ、・・・の出力には、第２の組み合せ回路９１２が接続されている。ＭＵＸ９３ａ、９３ｂ、９３ｃ、・・・は、セレクト信号９４ａ、９４ｂ、９４ｃ、・・・に従って何れかの入力を選択する。このように、図１８においては、各スキャンＦ／Ｆ回路９９ａ、９９ｂ、９９ｃ、・・・に、１つのＸＯＲ回路９６ａ、９６ｂ、９６ｃ、・・・及び１つのＭＵＸ９３ａ、９３ｂ、９３ｃ、・・・が付されている。
【００６５】
セレクト信号９４ａ、９４ｂ、９４ｃ、・・・が論理値１である時、ＭＵＸ９３ａ、９３ｂ、９３ｃ、・・・は、第１の組み合せ回路９１からのデータを受け取り、スキャンＦ／Ｆ回路９９ａ、９９ｂ、９９ｃ、・・・へ送信する。セレクト信号９４ａ、９４ｂ、９４ｃ、・・・が論理値０である時、ＭＵＸ９３ａ、９３ｂ、９３ｃ、・・・は、ＸＯＲ回路９６ａ、９６ｂ、９６ｃ、・・・の出力を受け取り、スキャンＦ／Ｆ回路９９ａ、９９ｂ、９９ｃ、・・・へ送信する。
【００６６】
制御信号９７ａ、９７ｂ、９７ｃ、・・・が論理値１である時、ＸＯＲ回路９６ａ、９６ｂ、９６ｃ、・・・は、スキャンＦ／Ｆ回路９９ａ、９９ｂ、９９ｃ、・・・が保持する論理値の逆値をＭＵＸ９３ａ、９３ｂ、９３ｃ、・・・へ送信する。この時に、スキャンＦ／Ｆ回路９９ａ、９９ｂ、９９ｃ、・・・にクロック信号が入ると、スキャンＦ／Ｆ回路９９ａ、９９ｂ、９９ｃ、・・・の論理値は反転される。制御信号９７ａ、９７ｂ、９７ｃ、・・・が論理値０である時、ＸＯＲ回路９６ａ、９６ｂ、９６ｃ、・・・は、スキャンＦ／Ｆ回路９９ａ、９９ｂ、９９ｃ、・・・が保持する論理値をそのままＭＵＸ９３ａ、９３ｂ、９３ｃ、・・・へ送信する。この時に、スキャンＦ／Ｆ回路９９ａ、９９ｂ、９９ｃ、・・・にクロック信号が入ると、スキャンＦ／Ｆ回路９９ａ、９９ｂ、９９ｃ、・・・の論理値は保持（ホールド）される。この回路構成において、セレクト信号９４ａ、９４ｂ、９４ｃ、・・・と制御信号９７ａ、９７ｂ、９７ｃ、・・・によって、各スキャンＦ／Ｆ回路９９ａ、９９ｂ、９９ｃ、・・・の動作（ホールド、反転、取り込み）を決定できる。
【００６７】
本発明の第３の実施の形態によれば、故障が伝搬しているスキャンＦ／Ｆ回路を半導体集積回路内部で特定することが可能である。テスタ１５のフェイルメモリへは、故障が伝搬したスキャンＦ／Ｆ回路の情報のみを送信すればよいため、必要なフェイルメモリはさらに小さくて良い。
【００６８】
（第３の実施の形態の変形例）
図１９に示すように、本発明の第３の実施の形態の変形例において、図１０及び図１３〜１６に示した１つのブロック（例えば、ブロック５２ａａ）は、複数のスキャンＦ／Ｆ回路９９ａ、９９ｂ、９９ｃ、・・・を有する。複数のスキャンＦ／Ｆ回路９９ａ、９９ｂ、９９ｃ、・・・は、シフトレジスタ状に直列に接続され、スキャンチェーン９２を構成する。スキャンＦ／Ｆ回路９９ａ、９９ｂ、９９ｃ、・・・の出力は、ＸＯＲ回路９６ａ、９６ｂ、９６ｃ、・・・の一方の入力に接続されている。ＸＯＲ回路９６ａ、９６ｂ、９６ｃ、・・・の出力は、ＭＵＸ９３ａ、９３ｂ、９３ｃ、・・・の一方の入力に接続されている。ＸＯＲ回路９６ａ、９６ｂ、９６ｃ、・・・の他方の入力は、トグルＦ／Ｆ回路１０１に接続されている。ＭＵＸ９３ａ、９３ｂ、９３ｃ、・・・の他方の入力には、第１の組み合せ回路９１に接続されている。スキャンＦ／Ｆ回路９９ａ、９９ｂ、９９ｃ、・・・の出力には、第２の組み合せ回路９１２が接続されている。ＭＵＸ９３ａ、９３ｂ、９３ｃ、・・・は、シフトカウンタ１０２に接続されている。トグルＦ／Ｆ回路１０１及びシフトカウンタ１０２は、制御線１０３、１０４によってそれぞれ制御回路５９に接続されている。
【００６９】
トグルＦ／Ｆ回路１０１は、制御信号９５をＸＯＲ回路９６ａ、９６ｂ、９６ｃ、・・・の他方の入力へそれぞれ供給する。シフトカウンタ１０２は、セレクト信号１００ａ、１００ｂ、１００ｃ、・・・を用いてＭＵＸ９３ａ、９３ｂ、９３ｃ、・・・を制御する。ＭＵＸ９３ａ、９３ｂ、９３ｃ、・・・は、セレクト信号１００ａ、１００ｂ、１００ｃ、・・・に従って何れかの入力を選択する。制御回路５９は、トグルＦ／Ｆ回路１０１及びシフトカウンタ１０２の動作を制御する。
【００７０】
シフトカウンタ１０２が０である時、スキャンＦ／Ｆ回路９９ａがセレクト信号１００ａにより選択される。シフトカウンタ１０２がひとつカウントアップすると、スキャンＦ／Ｆ回路９９ｂがセレクト信号１００ｂにより選択される。シフトカウンタ１０２が更にひとつカウントアップすると、スキャンＦ／Ｆ回路９９ｃがセレクト信号１００ｃにより選択される。このように、シフトカウンタ１０２は、シフトレジスタに属する始点から終点までのスキャンＦ／Ｆ回路９９ａ、９９ｂ、９９ｃ、・・・を一つづつ選択する。トグルＦ／Ｆ回路１０１は、クロックが入る度に０と１とを反転する機能を有する。
【００７１】
図１、図４及び図６に示したスキャンチェーン５２ａ、５２ｂ、５２ｃ、・・・に対して、図１９に示したスキャンチェーン９２を適用することにより、故障が伝搬しているスキャンＦ／Ｆ回路を特定することが出来る。ただし、故障が伝搬するスキャンＦ／Ｆ回路は探索範囲中に高々一つのみとする。スキャンチェーンが比較的長い場合、このような条件を満たすのは一般的に難しい。そこで、図１０、図１３〜１６に示したスキャンチェーンのブロック分割を利用する。この結果、特定ブロック内に高々一つのスキャンＦ／Ｆ回路のみに故障の影響が伝搬する場合には、フェイルスキャンＦ／Ｆ回路を特定することが出来る。
【００７２】
なお、図１９に示したシフトカウンタ１０２は、ロジックＢＩＳＴが通常もっているシフトカウンタと兼用することができる。
【００７３】
図２０及び図２１を参照して、図１９に示した回路構成によって故障が伝搬するスキャンＦ／Ｆ回路を特定する手順を説明する。ここでは、対象ブロックに３つのスキャンＦ／Ｆ回路９９ａ、９９ｂ、９９ｃが属しており、故障１２０の影響はスキャンＦ／Ｆ回路９９ｂに伝搬している。スキャンチェーン９２によって、スキャンＦ／Ｆ回路９９ａ、９９ｂ、９９ｃにスキャンインする論理値は、［０１０］である。その結果、スキャンＦ／Ｆ回路９９ａには論理値０が登録され、スキャンＦ／Ｆ回路９９ｂには論理値１が登録され、スキャンＦ／Ｆ回路９９ｃには論理値０が登録される。故障が無い場合（第１の組合せ回路９１が正常な場合）、スキャンＦ／Ｆ回路９９ａ、９９ｂ、９９ｃが第１の組合せ回路９１から取り込む論理値は、［１０１］である。これに対して、故障１２０が発生した場合、スキャンＦ／Ｆ回路９９ｂは、０でなく、１を取り込む。この様子を図２０において「０／１」と表す。この結果、故障１２０が有る（第１の組み合せ回路９１が異常である）場合、スキャンＦ／Ｆ回路９９ａ、９９ｂ、９９ｃは、それぞれ［１１１］の信号を取り込む。このブロックに対してシグネチャ比較を行うと、期待値と一致しない為、スキャンＦ／Ｆ回路９９ａ、９９ｂ、９９ｃの少なくとも１つに故障１２０が伝搬していることが分る。
【００７４】
以下に、故障１２０が伝搬するスキャンＦ／Ｆ回路を特定する方法を説明する。
【００７５】
（イ）先ず、制御回路５９は、シフトカウンタ１０２を論理値０に（Ｓ７００段階）、トグルＦ／Ｆ回路１０１を論理値０に（Ｓ７０１）、それぞれ設定する。セレクト信号１００ａは論理値０に、セレクト信号１００ｂ、１００ｃは論理値１になる。また、制御信号９５は論理値０になる。Ｓ７０２段階において、フラグに０を設定する。
【００７６】
（ロ）次に、Ｓ７０３段階において、スキャンチェーン９２を用いて、３つのスキャンＦ／Ｆ回路９９ａ、９９ｂ、９９ｃに、［０１０］の信号をスキャンシフトインする。
【００７７】
（ハ）次に、Ｓ７０４段階において、クロックを印加して第１の組合せ回路９１から信号を取り込む。スキャンＦ／Ｆ回路９９ｂ、９９ｃは、第１の組み合せ回路９１から信号［１１］をＭＵＸ９３ｂ、９３ｃを介して取り込む。スキャンＦ／Ｆ回路９９ａは、ＸＯＲ回路９６ａを介して自己の論理値０を保持する。この結果、故障１２０が有るため、スキャンＦ／Ｆ回路９９ａ、９９ｂ、９９ｃには、それぞれ［０１１］の信号が登録される。
【００７８】
（ニ）そして、Ｓ７０５段階において、スキャンＦ／Ｆ回路９９ａ、９９ｂ、９９ｃの論理値［０１１］をシフトアウトし、圧縮する。Ｓ７０６段階において、シグネチャ（圧縮結果）と期待値と比較する。シグネチャが期待値と一致する場合（Ｓ７０７段階においてＹｅｓ）、スキャンＦ／Ｆ回路９９ａに故障１２０が伝搬していることが分る（Ｓ７０８段階）。なぜなら、スキャンＦ／Ｆ回路９９ａだけが第１の組合せ回路９１から信号を取り込まず、自己の論理値を保持することで、故障１２０の影響が解消されているからである。
【００７９】
（ホ）シグネチャが期待値と一致しない場合（Ｓ７０７段階においてＮｏ）、Ｓ７０９段階において、フラグを確認する。トグルＦ／Ｆ回路１０１が０のままである場合、フラグも０である。この場合、制御回路５９は、トグルＦ／Ｆ回路１０１の論理値を反転させて１に設定し（Ｓ７１３段階）、フラグを１に設定する（Ｓ７１４段階）。この結果、制御信号９５は論理値１となる。シフトカウンタ１０２の状態は変更しない為、セレクト信号１００ａ〜１００ｃは変化しない。そして、Ｓ７０３段階に戻り、Ｓ７０３〜７０９段階を実施する。即ち、この状態で、スキャンチェーン９２を用いて、３つのスキャンＦ／Ｆ回路９９ａ、９９ｂ、９９ｃに、フェイルパタン［０１０］をスキャンシフトインし、クロックを入れる。なお、制御信号９５は１である為、スキャンＦ／Ｆ回路９９ａは、スキャンシフトインしている論理値０を反転して論理値１を登録する。スキャンＦ／Ｆ回路９９ｂ、９９ｃは、第１の組み合せ回路９１から論理値  ［１１］をそれぞれ取り込む。この結果、スキャンＦ／Ｆ回路９９ａ、９９ｂ、９９ｃに登録されている論理値は、［１１１］となる。Ｓ７０７段階においてＹｅｓであれば、先ほどと同様に、スキャンＦ／Ｆ回路９９ａに故障１２０の影響が伝搬していることが判明する。しかし、第１の組み合せ回路９１に故障１２０が無い場合に期待される論理値は［１０１］であり、スキャンシフトアウトされた論理値［１１１］と異なるため、圧縮結果も異なる。よって、Ｓ７０９へ進む。
【００８０】
（へ）フラグを確認する（Ｓ７０９）。フラグは１である為（Ｓ７０９にてＮｏ）、スキャンＦ／Ｆ回路９９ａに故障１２０の影響が伝搬していないことが判明する。このように、スキャンＦ／Ｆ回路９９ａが論理値をそのまま保持する第１の動作及びスキャンＦ／Ｆ回路９９ａが論理値を反転させる第２の動作から、第１の組み合せ回路９１に発生した故障１２０の影響は、スキャンＦ／Ｆ回路９９ａに伝搬していないことが分る。なぜならば、スキャンＦ／Ｆ回路９９ａの論理値が０であっても１であっても期待値と一致しないことは、他のスキャンＦ／Ｆ回路９９ｂ、９９ｃの何れかに故障１２０の影響が伝搬していることを示しているからである。即ち、スキャンＦ／Ｆ回路９９ａの論理値に関わらず期待値シグネチャが一致しないことは、他のスキャンＦ／Ｆ回路９９ｂ、９９ｃの論理値に誤りがあることを示しているからである。
【００８１】
（ト）そして、Ｓ７００段階でまだ設定していないスキャンＦ／Ｆ回路の有無を確認する（Ｓ７１１）。Ｓ７１１段階においてＮＯであれば、対象スキャンＦ／Ｆ回路をスキャンＦ／Ｆ回路９９ａからスキャンＦ／Ｆ回路９９ｂ、９９ｃに変更し（Ｓ７１２）、Ｓ７０１段階に戻る。具体的には、制御回路５９はシフトカウンタ１０２をカウントアップする。同時に、トグルＦ／Ｆ回路１０１の論理値を０に制御する。その結果、セレクト信号１００ｂは論理値０に、セレクト信号１００ａ、１００ｃは論理値１になる。また、制御信号９５は論理値０になる。この状態で、フェイルパタン［０１０］をスキャンシフトインしてクロックを入れると、スキャンＦ／Ｆ回路９９ａ、９９ｂ、９９ｃの論理値はそれぞれ［１１１］になる。この状態で、フェイルパタン［０１０］をスキャンシフトイン（Ｓ７０３）してクロックを入れる（Ｓ７０４）と、スキャンＦ／Ｆ回路９９ａ、９９ｂ、９９ｃの論理値はそれぞれ［１１１］になる。
【００８２】
（チ）スキャンＦ／Ｆ回路９９ａ、９９ｂ、９９ｃは、論理値［１１１］をデータ圧縮器へスキャンシフトアウトする（Ｓ７０５）。第１の組み合せ回路９１に故障１２０が無い場合に期待される論理値は［１０１］であり、スキャンシフトアウトされた論理値［１１１］と異なるため、圧縮結果も異なる（Ｓ７０７）。制御回路５９は、トグルＦ／Ｆ回路１０１の論理値を反転させて１に設定する（Ｓ７１３）。この結果、制御信号９２は論理値１となる。シフトカウンタ１０２の状態は変更しない為、セレクト信号１００ａ〜１００ｃは変化しない。
【００８３】
（リ）この状態で、スキャンチェーン９２を用いて、３つのスキャンＦ／Ｆ回路９９ａ、９９ｂ、９９ｃに、フェイルパタン［０１０］をスキャンシフトインし（Ｓ７０３）、クロックを入れる（Ｓ７０４）。制御信号９５は１である為、スキャンＦ／Ｆ回路９９ｂは、スキャンシフトインしている論理値１を反転して論理値０を登録する。スキャンＦ／Ｆ回路９９ａ、９９ｃは、第１の組み合せ回路９１から論理値  ［１１］をそれぞれ取り込む。この結果、スキャンＦ／Ｆ回路９９ａ、９９ｂ、９９ｃに登録されている論理値は、［１０１］となる。データ圧縮器へこの論理値値［１０１］をスキャンシフトアウトすると、期待値と同じであるのでデータ圧縮値も一致することになる（Ｓ７０７段階においてＹｅｓ）。
【００８４】
この結果から、スキャンＦ／Ｆ回路９９ｂに故障１２０の影響が伝搬していることがわかる（Ｓ７０８）。なぜならば、第１の組合せ回路９１からデータを取り込んでいるスキャンＦ／Ｆ回路９９ａ、９９ｃに故障１２０の影響が伝搬しているのであれば、期待値は一致しないからである。スキャンＦ／Ｆ回路９９ｂの論理値をホールド（論理値１）した場合に期待値の不一致が起こり、反転した場合（論理値０）に一致していることから、スキャンＦ／Ｆ回路９９ｂは、期待値０に対して１が伝播していることもわかる。
【００８５】
なお、第３の実施の形態で示した方法では、ブロック内にある故障１２０の影響が伝搬したスキャンＦ／Ｆ回路９９ｂを特定することが出来る。しかしながら、図２２に示すように、故障１２１の影響が伝搬するスキャンＦ／Ｆ回路１２５、１２７が対象ブロック内に２つ以上存在する場合もあり得る。即ち、組合せ回路１２３には、インバータ１３３を介してスキャンＦ／Ｆ回路１２５が接続され、論理積回路１３５を介してスキャンＦ／Ｆ回路１２７が接続されている。スキャンＦ／Ｆ回路１２５、１２７は、１つのスキャンチェーン１２６に属する。故障１２１の影響が同一ブロックに属するスキャンＦ／Ｆ回路１２５、１２７の両方に伝搬する場合、図２０及び図２１に示した方法で故障１２１の影響が伝搬するスキャンＦ／Ｆ回路を特定することが出来ない。
【００８６】
しかし、図２３に示すように、故障１２１の影響が伝搬するスキャンＦ／Ｆ回路１２５、１２７を異なるスキャンチェーン１３７、１３９にそれぞれ属させることで、スキャンＦ／Ｆ回路１２５、１２７をそれぞれ個別に特定することが出来る。即ち、図２３に示すスキャンチェーンの構成により、提案方式よるスキャンＦ／Ｆ回路の特定が可能となる。提案方式よるスキャンＦ／Ｆ回路の特定方法については、第４の実施の形態において後述する。
【００８７】
また、第１乃至第３の実施の形態は互いに組み合せることができる。先ず、図２４に示すように、Ｓ５００段階において、第１の実施の形態及びその変形例で示した方法を用いて、フェイルスキャンチェーン２５４及びフェイルパタン２５２を特定する。Ｓ５１０段階において、第２の実施の形態及びその変形例で示した方法を用いて、フェイルスキャンチェーン２５４内で故障の影響が伝搬するブロック（フェイルスキャンブロック）２６０を特定する。最後に、Ｓ５２０段階において、第３の実施の形態及びその変形例で示した方法を用いて、故障の影響が伝搬するスキャンＦ／Ｆ回路（フェイルスキャンＦ／Ｆ回路）２５６を特定する。
【００８８】
（第４の実施の形態）
図２５に示すように、本発明の第４の実施の形態に係るスキャンチェーン設計支援装置は、被テストロジック内のスキャンチェーンのネット構成を構築する機能を有する演算部と、演算部に接続された記憶装置を有する。記憶装置には、ネットリスト１５０、スキャンＦ／Ｆ依存情報１５２及び処理済みネットリスト１５４などの各種データが固定的に記録される。また、演算部は、スキャンチェーンを構成するスキャンＦ／Ｆ回路のそれぞれの論理コーンを抽出する論理コーン抽出部１６６と、抽出された論理コーン同士の依存関係を抽出するスキャンＦ／Ｆ依存関係抽出部１５１と、スキャンＦ／Ｆ依存情報１５２及びネットリスト１５０に基づいてスキャンチェーンを構築するスキャンチェーン構築部１５３とを有する。
【００８９】
演算部は、通常のコンピュータシステムの中央処理装置（ＣＰＵ）の一部として構成すればよい。論理コーン抽出部１６６、スキャンＦ／Ｆ依存関係抽出部１５１及びスキャンチェーン構築部１５３は、それぞれ専用のハードウェアで構成しても良く、通常のコンピュータシステムのＣＰＵを用いて、ソフトウェアで実質的に等価な機能を有していても構わない。記憶装置は、それぞれ、半導体ＲＯＭ、半導体ＲＡＭ等の半導体メモリ装置、磁気ディスク装置、磁気ドラム装置、磁気テープ装置などの補助記憶装置で構成してもよく、ＣＰＵの内部の主記憶装置で構成しても構わない。演算装置には、入出力制御部を介して、操作者からのデータや命令などの入力を受け付ける入力装置と、処理済みネットリスト１５４のデータを出力する出力装置とが接続されている。入力装置には、キーボード、マウス、ライトペンまたはフレキシブルディスク装置などが含まれる。出力装置には、プリンタ装置、表示装置などが含まれる。表示装置には、ＣＲＴ、液晶などのディスプレイ装置が含まれる。演算部で実行される各処理のプログラム命令はプログラム記憶装置に記憶されている。プログラム命令は必要に応じてＣＰＵに読み込まれ、ＣＰＵの内部の演算部によって、演算処理が実行される。また同時に、一連の演算処理の各段階で発生した数値情報などのデータは、ＣＰＵ内の主記憶装置に一時的に記憶される。
【００９０】
図２５に示すように、まず、論理コーン抽出部１６６は、スキャンＦ／Ｆ回路の接続関係を示すネットリスト１５０から、スキャンＦ／Ｆ回路ごとの論理コーンを抽出する。そして、スキャンＦ／Ｆ依存関係抽出部１５１は、抽出された論理コーンに基づいて、スキャンＦ／Ｆ依存情報１５２を抽出する。スキャンＦ／Ｆ依存情報１５２には、論理コーン同士の依存関係、即ち、論理コーン同士の重なり合い関係が含まれる。その後、スキャンチェーン構築部１５３は、スキャンＦ／Ｆ依存情報１５２及びネットリスト１５０に基づいて、処理済みネットリスト１５４を作成する。具体的には、スキャンチェーン構築部１５３は、論理コーン同士が重なり合うスキャンＦ／Ｆ回路を、同じスキャンチェーンで接続することが無く、論理コーンの依存関係を持たないスキャンＦ／Ｆ回路同士で１つのスキャンチェーンを構成するように、ネットリスト１５０を修正し、処理済みネットリスト１５４を作成する。
【００９１】
図２５に示すスキャンチェーン設計支援装置によれば、論理コーンが重なり合う部分で故障が発生した場合であっても、論理コーンを有するスキャンＦ／Ｆ回路を異なるスキャンチェーンに属させることが出来る。したがって、図２２に示したように１つのスキャンチェーン１２６に属する２以上のスキャンＦ／Ｆ回路１２５、１２７に故障１２１の影響が伝搬するようなスキャンチェーンを構成することが無くなり、図２３に示したように、故障１２１の影響が伝搬するスキャンＦ／Ｆ回路１２９、１３１を異なるスキャンチェーン１３７、１３９にそれぞれ属させることが出来る。また、フィジカルレイアウト情報を合わせて利用することにより、最適なスキャンチェーンを構築できる。
【００９２】
（第５の実施の形態）
図２６に示すように、本発明の第５の実施の形態に係る半導体設計支援装置は、図１、４、６に示すような被テストロジックに対してロジックＢＩＳＴを実行する為の周辺回路を挿入する為の機能を備えた演算部と、演算部に接続された記憶装置とを有する。記憶装置には、被テストロジックに係る回路データ１５５、ロジックＢＩＳＴの実行を制御する為の制御ファイル１５６、ロジックＢＩＳＴ回路データ１５８、ロジックＢＩＳＴ挿入後回路データ１６０、テストパタン１６１及びロジックＢＩＳＴ回路関連情報１６２などの各種データが固定的に記録される。また、演算部は、ロジックＢＩＳＴ回路を生成するロジックＢＩＳＴ回路生成部１５７と、回路データ１５５に対してロジックＢＩＳＴ回路データ１５８を挿入するロジックＢＩＳＴ挿入部１５９とを有する。
【００９３】
演算部は、通常のコンピュータシステムの中央処理装置（ＣＰＵ）の一部として構成すればよい。ロジックＢＩＳＴ回路生成部１５７及びロジックＢＩＳＴ挿入部１５９は、それぞれ専用のハードウェアで構成しても良く、通常のコンピュータシステムのＣＰＵを用いて、ソフトウェアで実質的に等価な機能を有していても構わない。記憶装置は、それぞれ、半導体ＲＯＭ、半導体ＲＡＭ等の半導体メモリ装置、磁気ディスク装置、磁気ドラム装置、磁気テープ装置などの補助記憶装置で構成してもよく、ＣＰＵの内部の主記憶装置で構成しても構わない。演算装置には、入出力制御部を介して、操作者からのデータや命令などの入力を受け付ける入力装置と、処理済みネットリスト１５４のデータを出力する出力装置とが接続されている。演算部で実行される各処理のプログラム命令はプログラム記憶装置に記憶されている。プログラム命令は必要に応じてＣＰＵに読み込まれ、ＣＰＵの内部の演算部によって、演算処理が実行される。また同時に、一連の演算処理の各段階で発生した数値情報などのデータは、ＣＰＵ内の主記憶装置に一時的に記憶される。
【００９４】
図２６に示すように、先ず、ロジックＢＩＳＴ回路生成部１５７は、回路データ１５５及び制御ファイル１５６に基づいて、回路データ１５５に係る被テストロジックに適したロジックＢＩＳＴ回路データ１５８を生成する。そして、ロジックＢＩＳＴ挿入部１５９は、回路データ１５５、ロジックＢＩＳＴ回路データ１５８及び制御ファイル１５６に基づいて、ロジックＢＩＳＴ挿入後回路データ１６０、テストパタン１６１及びロジックＢＩＳＴ回路関連情報１６２を生成する。具体的には、回路データ１５５に係る被テストロジックに対してロジックＢＩＳＴ回路を挿入する。その結果、ロジックＢＩＳＴ挿入後回路が生成されると同時に、ロジックＢＩＳＴを実行する為のテストパタン１６１及びロジックＢＩＳＴ回路関連情報１６２も生成される。
【００９５】
なお、第４の実施の形態と第５の実施の形態とは、組み合せて実施することが出来る。即ち、図２５に示したスキャンチェーン設計支援装置を用いて被テストロジック内のスキャンチェーンを構築する。そして、図２６に示した半導体設計支援装置を用いてこの被テストロジックに係る回路データ１５５に基づいて、ロジックＢＩＳＴ回路を生成及び挿入することが出来る。また、第４の実施の形態と第５の実施の形態を組み合せて実施する場合、実施する順番は問わない。何れを先に行っても良い。
【００９６】
【発明の効果】
以上説明したように、本発明によれば、故障箇所を容易に特定することができる半導体集積回路を提供することができる。
【図面の簡単な説明】
【図１】本発明の第１の実施の形態に係る半導体集積回路を示すブロック図である。
【図２】図２（ａ）は、図１のテストパタン発生器２９の一例を示す回路図である。図２（ｂ）は、図１のデータ圧縮器２８ａの一例を示す回路図である。
【図３】フェイルスキャンチェーンを特定する手順の一例を示すフローチャートである。
【図４】本発明の第１の実施の形態の第１の変形例に係る半導体集積回路を示すブロック図である。
【図５】図４に示した半導体集積回路３１におけるスキャンチェーンを特定する手順の一例を示すフローチャートである。
【図６】本発明の第１の実施の形態の第２の変形例に係る半導体集積回路を示すブロック図である。
【図７】図６に示したモード切換回路４１４及びデータ圧縮器４８の一例を示す回路図である。
【図８】ＳＴＵＭＰＳ方式によるロジックＢＩＳＴの一般的な構成を示すブロック図である。
【図９】スキャンテストモードにおける図８に示した半導体集積回路１１を示すブロック図である。
【図１０】本発明の第２の実施の形態に係る半導体集積回路の一部分を示すブロック図である。
【図１１】図１０に示した回路構成によってフェイルスキャンチェーン内のフェイルブロックを特定する手順の一例を示すフローチャートである。
【図１２】図１０に示した回路構成によって故障が伝搬するスキャンＦ／Ｆ回路が属するブロックを特定し、ブロック内のテスト結果をテスタ１５に出力する手順の一例を示すフローチャートである。
【図１３】本発明の第２の実施の形態の第１の変形例に係る半導体集積回路の一部分を示すブロック図である。
【図１４】本発明の第２の実施の形態の第２の変形例に係る半導体集積回路の一部分を示すブロック図である。
【図１５】本発明の第２の実施の形態の第３の変形例に係る半導体集積回路の一部分を示すブロック図である。
【図１６】本発明の第２の実施の形態の第４の変形例に係る半導体集積回路の一部分を示すブロック図である。
【図１７】図１６に示した回路構成によって故障が伝搬するスキャンＦ／Ｆ回路が属するブロックを特定し、ブロック内のテスト結果をテスタ１５に出力する手順の一例を示すフローチャートである。
【図１８】本発明の第３の実施の形態に係る半導体装置の一部分を示すブロック図である。
【図１９】本発明の第３の実施の形態の変形例に係る半導体装置の一部分を示すブロック図である。
【図２０】図１９に示した回路構成によって故障が伝搬するスキャンＦ／Ｆ回路を特定する手順の一例を説明する回路図である。
【図２１】図１９に示した回路構成によって故障が伝搬するスキャンＦ／Ｆ回路を特定する手順の一例を示すフローチャートである。
【図２２】故障１２１の影響が１つのブロック内に属する２つのスキャンＦ／Ｆ回路１２５、１２７に伝搬している様子を示す回路図である。
【図２３】故障１２１の影響が異なるブロック内に属する２つのスキャンＦ／Ｆ回路１２５、１２７に伝搬している様子を示す回路図である。
【図２４】第１乃至第３の実施の形態を組み合せた一連の故障箇所特定方法を示すフローチャートである。
【図２５】本発明の第４の実施の形態に係るスキャンチェーン設計支援装置の一例を示すブロック図である。
【図２６】本発明の第５の実施の形態に係る半導体設計支援装置の一例を示すブロック図である。
【符号の説明】
１、１１、２１、３１、４１…半導体集積回路
１２、２２ａ〜２２ｃ…ＢＩＳＴ制御回路
１３、２３、１０２…シフトカウンタ
１４、２４…パタンカウンタ
１５…テスタ
１６…テスト結果圧縮器
１７ａ〜１７ｃ、５２ａ〜５２ｅ、９２、１２６、１３７…スキャンチェーン
１８、２１１…被テストロジック
１９、２９…テストパタン発生器
２８ａ、３８ａ、４８、５３ａａ〜５３ａｄ、７６ａ、７６ａａ…データ圧縮器
３７ａ〜３７ｅ、２３２ａ〜２３２ｅ、３１３ａ〜３１３ｅ…レジスタ
４７、６７ａａ、９６ａ〜９６ｃ、２１３ａ、２３０ａ〜２３０ｅ、２４２…排他的論理和回路（ＸＯＲ回路）
５２ａａ〜５２ａｅ、５２ｂａ、２６０…ブロック
５９…制御回路
６６ａａ、７５ａ、８９ａ、２４０、２４４、３１４ａ、…セレクタ
９１…第１の組合せ回路
９３ａ〜９３ｃ…ＭＵＸ
９４ａ、１００ａ〜１００ｃ…セレクト信号
９５、９７ａ〜９７ｃ…制御信号
９９ａ〜９９ｃ、１２５、１２７、１２９、１３１…スキャンＦ／Ｆ回路
１０１…トグルＦ／Ｆ回路
１０３…制御線
１１０ａ〜１１０ｃ…テスト結果圧縮部
１２０、１２１…故障
１２３…組合せ回路
１３３…インバータ
１３５、２４６ｂ〜２４６ｅ…論理積回路
１５０、１５４…ネットリスト
１５１…依存関係抽出部
１５２…依存情報
１５３…スキャンチェーン構築部
１５５、１５８…回路データ
１５６…制御ファイル
１５７…回路生成部
１５９…挿入部
１６０…挿入後回路データ
１６１…テストパタン
１６２…回路関連情報
１６３、２５２、２５３…フェイルパタン
１６４、２５０、２５１、２５７、２５８…フェイルログ
１６５…フェイルスキャンブロック
１６６…論理コーン抽出部
２１１…被テストブロック
２３４ａ〜２３４ｅ…出力データ
２５４〜２５６…フェイルスキャンチェーン
４１４…モード切換回路
９１２…第２の組合せ回路
【図１】
2004294224.tif 000003
【図２】
2004294224.tif 000004
【図３】
2004294224.tif 000005
【図４】
2004294224.tif 000006
【図５】
2004294224.tif 000007
【図６】
2004294224.tif 000008
【図７】
2004294224.tif 000009
【図８】
2004294224.tif 000010
【図９】
2004294224.tif 000011
【図１０】
2004294224.tif 000012
【図１１】
2004294224.tif 000013
【図１２】
2004294224.tif 000014
【図１３】
2004294224.tif 000015
【図１４】
2004294224.tif 000016
【図１５】
2004294224.tif 000017
【図１６】
2004294224.tif 000018
【図１７】
2004294224.tif 000019
【図１８】
2004294224.tif 000020
【図１９】
2004294224.tif 000021
【図２０】
2004294224.tif 000022
【図２１】
2004294224.tif 000023
【図２２】
2004294224.tif 000024
【図２３】
2004294224.tif 000025
【図２４】
2004294224.tif 000026
【図２５】
2004294224.tif 000027
【図２６】
2004294224.tif 000028
【手続補正書】
【提出日】平成16年4月26日(2004.4.26)
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】特許請求の範囲
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
論理回路内のレジスタにより構成され、テストパタンをシフトして入力し、テストパタンを前記論理回路に出力し、前記論理回路のテスト結果を入力として取り込み、前記テスト結果をシフトして出力する機能を有するスキャンチェーンと、
テストパタンを複数の前記スキャンチェーンに入力するスキャンテストパタンとして発生させるテストパタン発生器と、
前記スキャンチェーンの出力段に接続され、前記テスト結果を圧縮した前記テスト結果と同数のテスト結果圧縮シグネチャを生成し、前記テスト結果圧縮シグネチャを前記スキャンチェーンに一対一対応が可能な第１の順番に出力するテスト結果圧縮部
とを有することを特徴とする集積回路。
【請求項２】
前記テスト結果圧縮シグネチャと前記テスト結果圧縮シグネチャの期待値を前記第１の順番に比較し、前記期待値に不一致な前記テスト結果圧縮シグネチャを検出する期待値比較回路を更に有することを特徴とする請求項１記載の集積回路。
【請求項３】
前記期待値に不一致な前記テスト結果圧縮シグネチャを比較した前記第１の順番中の順位を数え、前記スキャンチェーンの中から故障が検出されるフェイルスキャンチェーンを決定するフェイルスキャンチェーン決定回路を更に有することを特徴とする請求項２記載の集積回路。
【請求項４】
前記テスト結果圧縮部は、
前記スキャンチェーンのそれぞれの出力に個別に接続され、前記テスト結果を入力し、前記テスト結果圧縮シグネチャを出力する前記テスト結果と同数のデータ圧縮器と、
すべての前記データ圧縮器に接続し、前記テスト結果圧縮シグネチャをパラレルに入力し、前記テスト結果圧縮シグネチャを前記第１の順番にシリアルに出力するパラレルシリアル変換器
とを有することを特徴とする請求項１記載の集積回路。
【請求項５】
前記テスト結果圧縮部は、
前記スキャンチェーンの出力に接続され、前記テスト結果を第２の順番に選択し出力する第１のセレクタと、
前記第１のセレクタに接続され、前記テスト結果を入力し、前記テスト結果圧縮シグネチャを出力し前記テスト結果の数より少なく複数のデータ圧縮器と、
前記データ圧縮器に接続し、前記テスト結果圧縮シグネチャをパラレルに入力し、前記テスト結果圧縮シグネチャを前記第１の順番にシリアルに出力するパラレルシリアル変換器
とを有することを特徴とする請求項１記載の集積回路。
【請求項６】
前記テスト結果圧縮部は、
前記スキャンチェーンの出力段に接続され、自己試験モードでは、前記テスト結果をパラレルに入力しパラレルに出力し、故障解析モードでは、前記テスト結果をパラレルに入力し、前記テスト結果を前記シフトレジスタに一対一対応が可能な第１の順番に出力するモード切換回路と、
前記モード切換回路に接続され、前記自己試験モードでは、前記テスト結果をパラレルに入力し、前記テスト結果を一括して圧縮し、１つのテスト結果圧縮シグネチャを生成し、前記故障解析モードでは、前記テスト結果を前記第１の順番にそれぞれ圧縮するデータ圧縮器
とを有することを特徴とする請求項１記載の集積回路。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】０００１
【補正方法】変更
【補正の内容】
【０００１】
【発明の属する技術分野】
本発明は集積回路に関わり、特に、組み込み自己テストを実行する集積回路に関する。


【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】０００６
【補正方法】変更
【補正の内容】
【０００６】
本発明はこのような従来技術の問題点を解決するために成されたものであり、その目的は、故障箇所を容易に特定することができる集積回路を提供することである。


【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】０００７
【補正方法】変更
【補正の内容】
【０００７】
【課題を解決するための手段】
上記目的を達成するため、本発明の特徴は、論理回路内のレジスタにより構成され、テストパタンをシフトして入力し、テストパタンを論理回路に出力し、論理回路のテスト結果を入力として取り込み、テスト結果をシフトして出力する機能を有するスキャンチェーンと、テストパタンを複数のスキャンチェーンに入力するスキャンテストパタンとして発生させるテストパタン発生器と、スキャンチェーンの出力段に接続され、テスト結果を圧縮したテスト結果と同数のテスト結果圧縮シグネチャを生成し、テスト結果圧縮シグネチャをスキャンチェーンに一対一対応が可能な第１の順番に出力するテスト結果圧縮部とを有する集積回路であることを要旨とする。


【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】００９６
【補正方法】変更
【補正の内容】
【００９６】
【発明の効果】
以上説明したように、本発明によれば、故障箇所を容易に特定することができる集積回路を提供することができる。