以下に、本発明の実施例を添付の図面を用いて詳細に説明する。以下の図において、同一又は対応する構成要素は同一又は対応する番号で参照し、その説明は適宜省略する。
図1は、テスタ装置10及び被試験対象の半導体装置20の構成の一例を示す図である。テスタ装置10は、期待値比較回路11及びメモリ12を含む。半導体装置20は、同一構成を有する複数N個の回路ブロック21-1乃至21-N、テーブル回路22、テスト入力端子25、テーブル制御端子26、及びテスト出力端子27を含む。
半導体装置20は、回路ブロック21-1乃至21-Nのそれぞれに設けられ、外部(テスタ装置10)からテスト入力端子25を介して同一のテスト入力データを受け取るN個のスキャンチェーン30-1乃至30-Nを含む。スキャンチェーン30-1乃至30-Nの各々は、縦続接続された複数のスキャンフリップフロップ31を含む。回路ブロック21-1乃至21-Nの各々は、1つ又は複数のロジック回路32を含む。図1において、図示の都合上、回路ブロック21-1に対してのみ、スキャンフリップフロップ31及びロジック回路32の参照番号を示してあるが、他の回路ブロック21-2乃至21-Nについても同様である。
各スキャンフリップフロップ31には、スキャン入力端子とスキャン出力端子とが設けられている。あるスキャンフリップフロップ31のスキャン出力端子は別のスキャンフリップフロップ31のスキャン入力端子に結合され、複数のスキャンフリップフロップ31の従属接続によりスキャンチェーンを形成している。各スキャンフリップフロップ31のクロック入力端子にはスキャンクロック信号が入力される。
テスト動作時には、テスタ装置10が、メモリ12に格納されているテスト入力データSIを、スキャンクロック信号に同期させてテスト入力端子25に印加する。テスト入力端子25に印加されたテスト入力データSIは、スキャンクロック信号に同期したスキャンフリップフロップ31のシフト動作によってスキャンチェーン内を順次シフトされ、所定のデータを各スキャンフリップフロップ31に設定することができる。
所定のデータをスキャンフリップフロップ31に設定し終えると、ロジック回路32を動作させ、ロジック回路32からの出力データをスキャンフリップフロップ31に取り込むキャプチャー動作を実行する。スキャンフリップフロップ31の各々のデータ入力端子とデータ出力端子とがロジック回路32に結合されている。各スキャンフリップフロップ31のデータ出力端子から出力されたデータを入力としてロジック回路32が動作し、ロジック回路32の出力データがデータ入力端子からスキャンフリップフロップ31に並列に格納される。このキャプチャー動作の後、スキャンクロック信号によってスキャンフリップフロップ31のデータを順次シフトさせることにより、スキャンチェーン30-1乃至30-Nからのスキャン出力データをテーブル回路22に入力する。
テーブル回路22は、N個のスキャンチェーン30-1乃至30-Nのそれぞれから出力されるNビットのスキャン出力データc1乃至cNを入力として受け取り、Mビットのテスト出力データso1乃至soM(M:Nより小さい正の整数)を出力する。すなわち、テーブル回路は、N個のスキャンチェーンのそれぞれから出力されるNビットを入力として受け取り、Mビット(M:Nより小さい正の整数)を出力するエンコーダ回路である。より具体的には、スキャンクロック信号の各サイクル毎にNビットのスキャン出力データc1乃至cNがテーブル回路22に入力として印加され、各サイクル毎にテーブル回路22からMビットのテスト出力データso1乃至soMが出力される。Mビットのテスト出力データso1乃至soMは、テスト出力端子27から半導体装置20の外部(テスタ装置10)に供給される。
テーブル回路22は、例えば、入力Nビットをアドレスとして受け取り、当該アドレスに格納されるデータを出力Mビットとして出力するメモリ回路として実現されてよい。この場合、メモリ回路に格納されるデータを制御することにより、適宜所望の入出力関係を設定することができる。また例えば、テーブル回路22は、入力Nビットと制御信号ビットとを入力として受け取り、これらの入力に基づく論理演算により出力Mビットを生成する組み合わせ論理回路として実現されてよい。この場合、制御信号ビットの値を制御するにより、適宜所望の入出力関係を設定することができる。
テーブル回路22においては、少なくとも入力のNビットの全ビットが同一値である状態と入力のNビットにおいて1ビットのみ値が異なるビット位置とが、出力のMビットから特定可能であるように、入力Nビットと出力Mビットとが対応付けられている。即ち、入力Nビットが全ビット"1"であるか又は全ビット"0"である入力ビットパターンが出力Mビットの特定のビットパターンに対応付けられており、当該出力ビットパターンが出力に出現したときには入力Nビットの全ビットが同一値であると特定できる。なおこの際、入力Nビットの全ビットが"0"である状態と入力Nビットの全ビットが"1"である状態との両方が、出力Mビットの特定の1つのビットパターン(例えば全ビット"0"であるビットパターン)に共通に対応付けられてよい。
また更に、入力のNビットにおいて1ビットのみ値が"1"であるか又は1ビットのみ値が"0"であるビット位置に関する情報が、出力Mビットのビットパターンに含まれるように、出力Mビットが定められている。例えば、入力のNビットにおける第Xビット(X=1~N)のみ値が異なる場合には、出力Mビットが2進数Xとなるように、入力Nビットと出力Mビットとが対応付けられてよい。なお入力Nビットのある1つのビット位置においてのみ値が"1"である状態と同一のビット位置においてのみ値が"0"である状態との両方の状態を、出力Mビットの同一のビットパターンに共通に割り当てることは必ずしも必要ではない。
例えばNが3の場合には、出力2ビットの2進数"0"を入力3ビットの全ビットが同一値である状態に対応付けてよい。更に、出力2ビットの2進数X(X=1~3)を入力3ビットにおいて第Xビットのみ値が異なる状態に対応付けてよい。また例えばNが2の場合には、出力1ビットの2進数"0"を入力2ビットの全ビットが同一値である状態に対応付けてよい。更に、入力2ビットにおいて1ビットのみ値が異なる状態では、異なるビットの位置は第1ビットであるとも解釈できるし、第2ビットであるとも解釈できるので、第1ビットであると解釈して、出力1ビットの2進数"1"をこの状態に対応付けてよい。
Mの値が大きく、上記の特定すべき入力ビットパターンと比較して出力Mビットにより表現可能なビットパターン数に余裕が有る場合には、入力のNビットにおいて2ビットの値が異なる場合にも当該ビット位置を特定可能なように出力Mビットを定めてもよい。同様に、出力Mビットにより表現可能であるならば、入力のNビットにおいて3ビット又はそれ以上の値が異なる場合に当該ビット位置を特定可能なように出力Mビットを定めてもよい。
一般に、入力Nビットにおいて一箇所のみ値が異なるビット位置を出力Mビットにより特定するためには、少なくともceiling(log2N)個の出力ビットが必要となる。ここでceiling(x)は天井関数であり、x以上の最小の整数値を表す。入力Nビットの全ビットが同一の値である状態にも出力ビットのビットパターンを少なくとも1つ割り当てる必要があるので、最小の出力ビット数Mは、ceiling(1+log2N)として求めることができる。
なお図1において、テスタ装置10のメモリ12に格納されるテーブル書き換えデータを、テーブル制御端子26を介してテーブル回路22に書き込むことにより、テーブル回路22の入出力関係を変更することが可能である。これにより後述するマスク処理等を実現することが可能となる。
以上説明したように図1に示す半導体装置20においては、テーブル回路22の入出力関係を適宜設定することにより、半導体装置20のテスト出力端子27から出力されるテスト出力データso1乃至soMの期待値を固定化している。即ち、N個のスキャン出力データc1乃至cNの全てが同一値である状態に割り当てられた特定のテスト出力データso1乃至soMのビットパターン(例えば全ビットゼロ)を、テスト出力データso1乃至soMの期待値であるとして扱うことができる。何故なら、スキャン出力データc1乃至cNのN個のビット全てが同一の値である場合には、回路ブロック21-1乃至21-Nの全てのロジック回路32が正常に動作していると考えることができる(或いはその可能性が高い)からである。
なお入力Nビットの全ビットが"0"である状態と入力Nビットの全ビットが"1"である状態とを、出力Mビットのそれぞれ異なる特定のビットパターンに対応付け、2つの期待値を用いるようにしてもよい。しかしながら、これら2つの状態を出力Mビットの特定の1つのビットパターンに共通に対応付け、1つの期待値を用いることがより好ましい。期待値を1つのビットパターンに固定化することにより、メモリ削減及びテスト処理の効率化を更に図ることができる。
仮にスキャン出力データc1乃至cNをそのまま半導体装置20からテスタ装置10に供給した場合には、"0"と"1"とが順次現れるNビット×Kサイクル(Kはスキャン出力データ長)の時系列ビットパターンがスキャン出力データc1乃至cNの期待値となる。この膨大なビット数の期待値データをメモリ12に格納しておき、テスタ装置10の期待値比較回路11が、スキャン出力データc1乃至cNと期待値データとを比較し、両者が一致している場合にパス判定(正常動作であるとの判定)を行う。この場合、テスタ装置10のメモリ12には充分な容量が要求される。
図1に示される半導体装置20の場合には、ロジック回路32が正常動作している場合には、テスト出力データso1乃至soMは各クロックサイクルにおいて常に所定のビットパターン(例えば全ビットゼロであるビットパターン)に固定されている。従って、メモリ12に格納しておく必要がある期待値データはMビットのデータ(或いは例えば全ビットゼロとの情報)であればよく、期待値データのために必要なメモリ12のメモリ容量を削減することができる。また更に、スキャン出力データc1乃至cNをそのまま半導体装置20から出力するためにはN個のテスト出力端子が必要となるのに対して、テスト出力データso1乃至soMを半導体装置20から出力するためにはM個のテスト出力端子27があればよい。従ってテスト出力端子27の数を削減することもできる。
なお厳密に言えば、スキャン出力データc1乃至cNが全て同一値であることは、必ずしも回路ブロック21-1乃至21-Nのロジック回路32が正常動作していることを意味しない。例えば全てのロジック回路32が誤動作して同一の誤った値を出力している場合には、スキャン出力データc1乃至cNは全て同一値となってしまう。しかしながら設計ミスではなくプロセス変動等の原因で誤動作する場合には、誤動作が発生する確率自体が小さく、また全ての同一回路が同一の誤った値を同時に出力する可能性は更に小さくなる。従って、スキャン出力データc1乃至cNが全て同一値である状態は、回路ブロック21-1乃至21-Nのロジック回路32が正常動作していることを示していると解釈して実用上は問題がない。
また同一回路の数が大きくなる程、全ての回路に対するスキャン出力データが同一の誤った値になる確率は小さくなる。従って、特にメニーコアプロセッサのように多数の同一構成の回路が設けられている場合、テスト出力データso1乃至soMに基づく動作判定結果には、実質的に充分な信頼性があると考えられる。
図2は、半導体装置20の第1実施例の構成の一例を示す図である。図2に示す半導体装置20は、4個の回路ブロック21-1乃至21-4、4個のスキャンチェーン30-1乃至30-4、及び4入力3出力のテーブル回路22を含む。図2及び以降の同様の図において、各回路ブロック内のロジック回路32の図示、及び各スキャンチェーン内のスキャンフリップフロップ31の図示は省略する。
テーブル回路22は、4個のスキャンチェーン30-1乃至30-4のそれぞれから出力される4ビットのスキャン出力データc1乃至c4を入力として受け取り、3ビットのテスト出力データso1乃至so3を出力する。より具体的には、スキャンクロック信号の各サイクル毎に4ビットのスキャン出力データc1乃至c4がテーブル回路22に入力として印加され、各サイクル毎にテーブル回路22から3ビットのテスト出力データso1乃至so3が出力される。3ビットのテスト出力データso1乃至so3は、テスト出力端子27から半導体装置20の外部(テスタ装置10)に供給される。
図3は、図2に示すテーブル回路22の入出力関係の一例を示す図である。図3に示されるテーブル回路22においては、入力4ビットc1乃至c4が全ビット"1"であるか又は全ビット"0"である入力ビットパターンが、出力3ビットso1乃至so3が全ビット"0"であるビットパターンに対応付けられている。また入力の4ビットにおける第Xビット(X=1~4)のみ値が異なる場合には、出力3ビットが2進数Xとなるように、入力4ビットc1乃至c4と出力3ビットso1乃至so3とが対応付けられている。上記以外の入力4ビットc1乃至c4のビットパターンに対しては、出力3ビットso1乃至so3が全ビット"1"であるビットパターンが対応付けられている。
以上のようにして、少なくとも入力の4ビットの全ビットが同一値である状態と入力の4ビットにおいて1ビットのみ値が異なるビット位置とが、出力の3ビットから特定可能であるように、入力4ビットと出力3ビットとが対応付けられている。
図4は、図1のテスタ装置10により半導体装置20を試験する方法の手順の一例を示すフローチャートである。なお図4に示すフローチャートに記載された各ステップの実行順序は一例にすぎず、本願の意図する技術範囲が、記載された実行順番に限定されるものではない。例えば、Aステップの次にBステップが実行されるように本願に説明されていたとしても、Aステップの次にBステップを実行することが可能なだけでなく、Bステップの次にAステップを実行することが、物理的且つ論理的に可能である場合がある。この場合、どちらの順番でステップを実行しても、当該フローチャートの処理に影響する全ての結果が同一であるならば、本願に開示の技術の目的のためには、Bステップの次にAステップが実行されてもよいことは自明である。Aステップの次にBステップが実行されるように本願に説明されていたとしても、上記のような自明な場合を本願の意図する技術範囲から除外することを意図するものではなく、そのような自明な場合は、当然に本願の意図する技術範囲内に属する。
ステップS1において、半導体装置20の各ロジック回路32に関する設計データ等に基づいて生成したテスト入力データSIをテスタ装置10のメモリ12に格納する。ステップS2において、テスタ装置10は半導体装置20に対する試験動作を実行する。具体的には、テスタ装置10が、メモリ12に格納されているテスト入力データSIを、スキャンクロック信号に同期させてテスト入力端子25に印加し、各スキャンフリップフロップ31にテスト入力データを設定する。所定のデータをスキャンフリップフロップ31に設定し終えると、ロジック回路32を動作させ、ロジック回路32の出力データを各スキャンフリップフロップ31に並列に格納する。その後、スキャンクロック信号によってスキャンフリップフロップ31のデータを順次シフトさせることにより、スキャンチェーン30-1乃至30-Nからのスキャン出力データをテーブル回路22に入力する。スキャンクロック信号の各サイクル毎にNビットのスキャン出力データc1乃至cNがテーブル回路22に入力として印加され、各サイクル毎にテーブル回路22からMビットのテスト出力データso1乃至soMが出力される。Mビットのテスト出力データso1乃至soMは、テスト出力端子27から半導体装置20の外部(テスタ装置10)に供給される。
ステップS3において、テスタ装置10の期待値比較回路11が、テスト出力データso1乃至soMと期待値とを比較することにより、エラーの有無を判定する。この際、テーブル回路22によるデータ変換により、テスト出力データso1乃至soMの期待値は固定値に変換されているので、膨大な期待値データを比較対象とする必要はない。
ステップS3においてエラー無しと判定された場合には、処理はステップS4に進む。ステップS4において、テスタ装置10は故障検出無しとの試験結果を出力し、処理はステップS8に更に進む。
ステップS3においてエラー有りと判定された場合には、ステップS5において、テスタ装置10の期待値比較回路11により更にテスト出力データso1乃至soMのビットパターンが単一故障に該当するのか、或いは複数故障に該当するのかを判定する。この判定のためには、例えば、図3に示されるテスト出力データso1乃至soMと判定結果DECとの対応関係を示すデータをメモリ12に格納しておき、当該対応関係を示すデータを期待値比較回路11に供給すればよい。期待値比較回路11が、当該対応関係を示すデータに基づいて、半導体装置20からのテスト出力データso1乃至soMに対応する判定結果DECを検出すればよい。
ステップS5において複数故障であるとの判定結果が出された場合には、ステップS6において、テスタ装置10は、当該半導体装置20が複数の故障を有する製品に該当するとの試験結果を出力する。ステップS5において単数故障であるとの判定結果が出された場合には、ステップS7において、テスタ装置10は、当該半導体装置20が単数の故障を有する製品に該当するとの試験結果を出力する。
ステップS8において、半導体装置20の品質判定を行う。テスタ装置10が故障検出無しとの試験結果を出力した場合には、半導体装置20が良品であるとの品質判定を行う。テスタ装置10が単数故障であるとの試験結果を出力した場合には、例えば、半導体装置20が部分良品であるとの品質判定を行う。テスタ装置10が複数故障であるとの試験結果を出力した場合には、例えば、半導体装置20が不良品であるとの品質判定を行う。なお部分良品の場合には、故障の存在する箇所(故障の存在する回路ブロック)が特定できているので、当該回路ブロックを不活性化して半導体装置20を使用する等の措置をとることができる。以上で半導体装置20の試験を終了する。
以上説明したように、図1に示す試験システムにおいては、期待値が固定化されているにも関わらず、故障箇所が一箇所だけである場合には、一回の試験動作を実行するだけで故障箇所を特定することができる。即ち、メモリ容量削減及びテスト出力端子数の削減を実現しながらも、複数のスキャンチェーン30-1乃至30-Nのうち、何れのスキャンチェーンにおいて故障が発生したのかを一回の試験動作により特定することが可能となっている。これにより、期待値を固定化しているにも関わらず追加の試験動作を実行する必要がなくなり、試験にかかるコストを大幅に削減することができる。
図5は、図1に示すテスタ装置10による半導体装置20の試験におけるマスク処理の一例を説明するための図である。
前述のように、図1に示す半導体装置20に内蔵されるテーブル回路22においては、入力Nビットが全ビット"1"であるか又は全ビット"0"である入力ビットパターンが出力Mビットの特定のビットパターン(例えば全ビットゼロ)に対応付けられている。更にテーブル回路22においては、入力Nビットのうちの特定のビットの値が他のビットの値と異なっている状態が、上記の特定のビットパターンに対応付けられるように、テーブル回路22の入出力関係を変更可能であってよい。
具体的には、テスタ装置10のメモリ12に格納されるテーブル書き換えデータをテーブル制御端子26を介してテーブル回路22に書き込むことにより、テーブル回路22の入出力関係を図3に示す入出力関係から図5に示す入出力関係に変更可能であってよい。図5に示されるテーブル回路22の入出力関係においては、入力Nビットのうちの第2ビットc2の値のみが他のビットの値と異なっている状態が、出力Mビットが全ビットゼロであるビットパターン、即ち故障検出無しを示すビットパターンに対応付けられる。
このようにテーブル回路22の入出力関係を書き換えることにより、ある特定の試験やタイミングにおいて特定の箇所にのみ発生するエラーについてはマスクしてしまい、故障として検出されないようにすることが可能となる。これにより、より柔軟な試験が可能となる。
図6は、半導体装置の第2実施例の構成の一例を示す図である。図6に示す半導体装置は、4個の回路ブロック21-1乃至21-4、8個のスキャンチェーン30-1乃至30-8、及び各々が4入力3出力である2個のテーブル回路22-1及び22-2を含む。スキャンチェーン30-1乃至30-4は、回路ブロック21-1乃至21-4に対してそれぞれ設けられている。またスキャンチェーン30-5乃至30-8も、回路ブロック21-1乃至21-4に対してそれぞれ設けられている。即ち、回路ブロック21-1乃至21-4の各々には、2本のスキャンチェーンが設けられている。
テーブル回路22-1は、4個のスキャンチェーン30-1乃至30-4のそれぞれから出力される4ビットのスキャン出力データC1-1乃至C4-1を入力として受け取り、3ビットのテスト出力データso1-1乃至so3-1を出力する。テーブル回路22-2は、4個のスキャンチェーン30-5乃至30-8のそれぞれから出力される4ビットのスキャン出力データC1-2乃至C4-2を入力として受け取り、3ビットのテスト出力データso1-2乃至so3-2を出力する。
図7は、図6に示すテーブル回路22-1及び22-2の入出力関係の一例を示す図である。テーブル回路22-1及び22-2の各々は、図7に示される入出力関係を有してよい。図7の表において、「X=1(第1グルーブ)」は、第1のグループのスキャンチェーン(第1スキャンチェーン30-1乃至第4スキャンチェーン30-4)に関するテーブル回路22-1の入出力関係を示す。また「X=2(第2グルーブ)」は、第2のグループのスキャンチェーン(第5スキャンチェーン30-5乃至第8スキャンチェーン30-8)に関するテーブル回路22-2の入出力関係を示す。
図7に示される入出力関係においては、入力4ビットC1-X乃至C4-Xが全ビット"1"であるか又は全ビット"0"である入力ビットパターンが、出力3ビットso1-X乃至so3-Xが全ビット"0"であるビットパターンに対応付けられている。また入力の4ビットにおける第Yビット(Y=1~4)のみ値が異なる場合には、出力3ビットが2進数Yとなるように、入力4ビットと出力3ビットとが対応付けられている。上記以外の入力4ビットのビットパターンに対しては、出力3ビットが全ビット"1"であるビットパターンが対応付けられている。
図6のように回路ブロック21-1乃至21-Nの各々に2本又はそれ以上のスキャンチェーンが設けられている場合には、それぞれのスキャンチェーンを2個又はそれ以上の数にグループ分けし、それぞれのグループに対してテーブル回路を設ければよい。テスタ装置10側では、期待値比較回路11により、各々のテーブル回路からのテスト出力データをチェックすればよい。
図8は、半導体装置の第3実施例の構成の一例を示す図である。図8に示す半導体装置は、4個の回路ブロック21-1乃至21-4、スキャンチェーン部分30-1A乃至30-4A及び30-1B乃至30-4B、及び各々が4入力3出力である2つのテーブル回路22A及び22Bを含む。
図8に示される第3実施例の構成において、回路ブロック21-1乃至21-4の各々には、図2に示される第1実施例の構成と同様に、1本ずつスキャンチェーンが設けられている。但し図8の構成では、当該一本のスキャンチェーンを前半部分と後半部分とに分けて示してある。即ち例えば回路ブロック21-1に対して設けられた一本のスキャンチェーンは、前半のスキャンチェーン部分30-1Aと後半のスキャンチェーン部分30-1Bとに分けて示されている。
図2に示される第1実施例では、回路ブロック21-1乃至21-4の各々に設けられた一本のスキャンチェーンの終端から出力されるスキャン出力データをテーブル回路22に入力していた。それに対して図8に示される第3実施例では、回路ブロック21-1乃至21-4の各々に設けられた一本のスキャンチェーンの終端からスキャン出力データを取り出すだけでなく、当該スキャンチェーンの途中からもスキャン出力データを取り出している。即ち、第1のテーブル回路22Aは、回路ブロック21-1乃至21-4のそれぞれに設けられた4個のスキャンチェーンのそれぞれの途中から出力される4ビットC1-1乃至C4-1を受け取り、3ビットso1-1乃至so3-1を出力する。また第2のテーブル回路22Bは、回路ブロック21-1乃至21-4のそれぞれに設けられた4個のスキャンチェーンの終端から出力される4ビットC1-2乃至C4-2を受け取り、3ビットso1-2乃至so3-2を出力する。3ビットso1-1乃至so3-1はテスト出力端子27Aから外部に出力され、3ビットso1-2乃至so3-2はテスト出力端子27Bから外部に出力される。
図9は、図8に示される半導体装置の動作の一例を示す図である。図9(a)は、テスト入力端子からテスト入力データSIとして"101010101"が入力され、シフト動作を行うことにより、各スキャンチェーンにテスト入力データ"101010101"が設定された状態を示している。
図9(b)は、ロジック回路を動作させ、ロジック回路からの出力データをスキャンチェーンの各スキャンフリップフロップに取り込むキャプチャー動作を実行した後の状態を示している。この例では、スキャンチェーン部分30-1A乃至30-2Aには"10001"が取り込まれ、スキャンチェーン部分30-1B乃至30-2Bには"10111"が取り込まれることが想定されている。但し、回路の誤動作により、スキャンチェーン部分30-1Aにおいてはビット位置40に対応するスキャンフリップフロップの格納データが、誤った値"1"に設定されてしまっている。
図9(c)は、キャプチャー動作の後、スキャンフリップフロップのデータを順次シフトさせることにより、スキャンチェーンからのスキャン出力データをテーブル回路22に順次入力させる動作を示している。テーブル回路22Bから出力される出力3ビットは各サイクルにおいて"000"となっており、回路が正常動作していることを示している。一方、テーブル回路22Aから出力される出力3ビットは第2サイクル41において"100"となっており、スキャンチェーン部分30-1Aに対応するロジック回路の部分に故障があることを示している。
上記のように、スキャンチェーンの終端からだけでなく途中からもスキャン出力データを取り出すことにより、テスト出力データを確認する時間(サイクル数)を短くし、試験コストを削減することができる。この場合、テスト出力端子の数が増加することになるが、同一構成の回路ブロックの数が大規模である場合にはテーブル回路22の導入によるテスト出力端子数の削減効果は極めて大きいので、テスト出力端子の数を若干増やしても時間短縮することには意味がある。例えば図1に示す構成において16個の回路ブロックが設けられている場合には、5個のテスト出力端子が必要になる。この場合にスキャンチェーンを2分割しても、2倍の10個のテスト出力端子が必要になるだけであり、テスト出力端子の個数は回路ブロックの個数よりも依然として小さい。従って、スキャンチェーンを2分割することで、出力端子数削減の効果を維持しながらも、テスト時間削減の効果を得ることができる。
図10は、半導体装置の第4実施例の構成の一例を示す図である。図10に示す半導体装置は、4個の回路ブロック21-1乃至21-4、スキャンチェーン部分30-1A乃至30-4A及び30-1B乃至30-4B、テーブル回路51及び52、OR回路53-1乃至53-4、及びテーブル回路22を含む。
図10に示される第4実施例におけるスキャンチェーンの構成は、図8に示される第3実施例におけるスキャンチェーンの構成と同様である。即ち、回路ブロック21-1乃至21-4の各々に設けられた一本のスキャンチェーンの終端からスキャン出力データを取り出すだけでなく、当該スキャンチェーンの途中からもスキャン出力データを取り出している。図10に示される構成では、これらのスキャン出力データは、テーブル回路51とテーブル回路52とにそれぞれ入力される。テーブル回路51とテーブル回路52とは同一の入出力関係を有してよい。
テーブル回路51は、回路ブロック21-1乃至21-4のそれぞれに設けられた4個のスキャンチェーンのそれぞれの終端から出力される4ビットを入力端子C1乃至C4にて受け取り、出力端子out1乃至out4から4ビットを出力する。テーブル回路52は、回路ブロック21-1乃至21-4のそれぞれに設けられた4個のスキャンチェーンのそれぞれの途中から出力される4ビットを入力端子C1乃至C4にて受け取り、出力端子out1乃至out4から4ビットを出力する。テーブル回路51からの4ヒット出力とテーブル回路52からの4ピット出力とはOR回路53-1乃至53-4にそれぞれ入力され、ビット毎の論理和演算が実行される。OR回路53-1乃至53-4の出力は、図3に示す入出力関係を有するテーブル回路22に入力され、テーブル回路22から3ビットのテスト出力データso1乃至so3が出力される。
図11は、図10に示すテーブル回路51及び52の入出力関係の一例を示す図である。図11に示される入出力関係では、入力4ビットが全て同一値であるビットパターンは、出力4ビットが全て"0"であるビットパターンに対応付けられている。また入力4ビットにおいてある1つのビット位置においてのみ値が異なるビットパターンは、出力4ビットにおいて当該ビット位置と同一のビット位置においてのみ値が"1"であるビットパターンに対応付けられている。この入出力関係に従い入力4ビットを出力4ビットに変換することにより、1ビットまでの故障のあるビット位置を正論理で示したビットパターンが得られることになる。
図10に示すOR回路53-1乃至53-4が、テーブル回路51及び52の出力のビット毎の論理和を計算することにより、2セットのスキャン出力データのいずれかにおいて存在する1ビットまでの故障ビット位置を正論理で示したビットパターンが得られる。即ち、スキャンチェーンの終端から出力された第1のスキャン出力データと途中から出力された第2のスキャン出力データとのいずれかにおいて、1ビットだけ周囲とは値の異なるビットかあった場合には、当該ビット位置が正論理で示されることになる。このようにして計算された4ビットのデータは、4個のスキャンチェーンのそれぞれの終端から出力される第1の4ビットと4個のスキャンチェーンのそれぞれの途中から出力される第2の4ビットとを、1セットの4ビットのデータに圧縮したものであると考えられる。この圧縮は、正論理への変換と論理和演算とによって実現される。
テーブル回路22は、圧縮後の4ビットのビットパターンを入力として、3ビットのテスト出力データso1乃至so3を生成する。このテスト出力データso1乃至so3は、第1のスキャン出力データ又は第2のスキャン出力データのいずれかにおいて1ビットのみ値が異なる位置を、2進数で表現したビットパターンとなっている。値の異なるビットが存在しない場合には、2進数のゼロ(全ビットゼロ)のビットパターンがテスト出力データso1乃至so3として生成される。
上記のように、スキャンチェーンの終端からだけでなく途中からもスキャン出力データを取り出すことにより、テスト出力データを確認する時間(サイクル数)を短くし、試験コストを削減することができる。図10に示す構成においては、データを圧縮することにより1個のテーブル回路22のみを用いているので、図8に示す構成とは異なりテスト出力端子の数が増えることはない。即ち、テスト出力端子数の削減の効果が低減されることはない。但し、データを圧縮したことにより、スキャンチェーンの前半で発生した故障とスキャンチェーンの後半で発生した故障とを区別することはできなくなる。
図12は、半導体装置20の第5実施例の構成の一例を示す図である。図12に示す半導体装置20は、7個の回路ブロック21-1乃至21-7、7個のスキャンチェーン30-1乃至30-7、及び7入力5出力のテーブル回路22を含む。テーブル回路22は、スキャンチェーン30-1乃至30-7から7ビットのスキャン出力データc1乃至c7を入力として受け取り、5ビットのテスト出力データso1乃至so3を出力する。図12に示す半導体装置20では、1ビット故障の故障箇所だけでなく、2ビット故障の故障箇所も特定できるように、テーブル回路22の入出力関係が設定されている。
図13は、図12に示すテーブル回路22の入出力関係の一例を示す図である。スキャン出力データc1乃至c7の7ビットのうちで、他のビットとは値が異なるビットの位置を"A"で示してある。即ち、"A"が記載されている行においては、"A"が記載されているビットのみが"0"で残りのビットが"1"であるか、或いは"A"が記載されているビットのみが"1"で残りのビットが"0"であるかのいずれかである。入力されるスキャン出力データc1乃至c7の7ビットの各ビットパターンに対して、図13に示されるように、テスト出力データso1乃至so5の4ビットのビットパターンが対応付けられている。なお図13に示す表において、"DEC"は、テスト出力データso1乃至so5の示す2進数を10進数で示したものである。
例えば、テスト出力データso1乃至so5が"00110"である場合には、スキャン出力データc6の位置でビット値が異なっていること、即ち回路ブロック21-6にて故障が発生していることが分かる。また例えば、テスト出力データso1乃至so5が"10010"である場合には、スキャン出力データc2及びc7の位置でビット値が異なっていること、即ち回路ブロック21-2及び21-7にて故障が発生していることが分かる。
上述の第5実施例では、前述の実施例のようにスキャン出力データにおいて1ビットのみ値が異なるビット位置を特定できるようにするだけではなく、2つのビット位置で値が異なる場合にも、それら2つのビット位置を特定できるようにすることが可能である。即ち、2箇所の故障が存在する場合にも、それらの故障箇所を特定することが可能である。これにより、半導体装置20の品質判定を行う際に、判定をより詳細に行うことができる。即ち、故障検出無しとの試験結果に対しては良品、単数故障であるとの試験結果に対しては高品質部分良品、2個の故障であるとの試験結果に対しては低品質部分良品、3個以上の故障であるとの試験結果に対しては不良品である等の品質判定が可能になる。
以上、本発明を実施例に基づいて説明したが、本発明は上記実施例に限定されるものではなく、特許請求の範囲に記載の範囲内で様々な変形が可能である。