(57)【要約】【課題】シフト数およびスキャン出力端子数を抑制することができ、故障見逃しのない半導体集積回路を実現する。【解決手段】複数のフリップフロップがツリー状構成をなすスキャンチェーン４と、全体で複数のフリップフロップがシリアルに接続されたスキャンチェーン５・６とを設ける。スキャンチェーン４にはクロック信号ＣＬＫＨでスキャン入力端子２からスキャンデータ設定値を設定し、スキャンチェーン５・６にはクロック信号ＣＬＫ・ＣＬＫＶでスキャン入力端子２からスキャンデータ設定値を設定する。また、組合せ回路部分からのキャプチャデータを、スキャンチェーン５がスキャンチェーン４のフリップフロップＦＦ８・ＦＦ６・ＦＦ３からパラレルにデータを受け取って、スキャン出力端子３からシリアルにスキャンアウトする。【選択図】図１
2006047013.tif 000002
【特許請求の範囲】
【請求項１】
スキャン方式で設計された半導体集積回路において、
複数のフリッププロップからなってシフトレジスタとして動作し、少なくとも一箇所で複数のシフト経路に分岐するツリー状構成をなす第１のスキャンチェーンと、
シリアルに接続された複数のフリップフロップからなってシフトレジスタとして動作し、前記第１のスキャンチェーンの分岐された前記各シフト経路の末端のフリッププロップからのスキャンデータをパラレルに受け取る第２のスキャンチェーンとの組合せを単位とするスキャン設計回路を備えていることを特徴とする半導体集積回路。
【請求項２】
前記第１のスキャンチェーンは１つのスキャン入力端子を備え、当該スキャン入力端子から前記各シフト経路の末端のフリップフロップまでの距離はいずれの経路を通っても等しく、
前記第２のスキャンチェーンは１つのスキャン入力端子と１つのスキャン出力端子とを備え、前記第１のスキャンチェーンの前記末端となるフリップフロップの個数以上のフリップフロップを備えていることを特徴とする請求項１に記載の半導体集積回路。
【請求項３】
前記第２のスキャンチェーンの前記スキャン出力端子側から数えて前記第１のスキャンチェーンの前記末端となるフリップフロップの個数分のフリップフロップは、前記第１のスキャンチェーンの前記末端となるフリップフロップの出力端子と１対１に接続されていることを特徴とする請求項２に記載の半導体集積回路。
【請求項４】
前記第１のスキャンチェーンのスキャン入力端子と、前記第２のスキャンチェーンのスキャン入力端子とが結線され、１つのスキャン入力端子として機能することを特徴とする請求項２または３に記載の半導体集積回路。
【請求項５】
前記第１のスキャンチェーンのスキャン入力端子と、前記第２のスキャンチェーンのスキャン入力端子とは個別に設けられていることを特徴とする請求項２または３に記載の半導体集積回路。
【請求項６】
前記スキャン設計回路は前記第１のスキャンチェーンを複数個備え、前記第２のスキャンチェーンは前記各第１のスキャンチェーンからスキャンデータをパラレルに受け取ることを特徴とする請求項１に記載の半導体集積回路。
【請求項７】
前記スキャン設計回路は、前記第２のスキャンチェーンを複数備えており、前記第１のスキャンチェーンから出力されるスキャンデータを前記各第２のスキャンチェーンが分担して受け取ることを特徴とする請求項１または２に記載の半導体集積回路。
【請求項８】
クロック信号、スキャンイネーブル信号、および前記第１のスキャンチェーンと前記第２のスキャンチェーンとのいずれをシフト動作させるかを制御するスキャンシフト制御信号から、前記第１のスキャンチェーンを駆動するクロック信号と、前記第２のスキャンチェーンのフリップフロップのうち第１のスキャンチェーンの出力端子と接続されていないフリップフロップを駆動するクロック信号とを発生させるクロック制御手段を備えていることを特徴とする請求項１ないし７のいずれかに記載の半導体集積回路。
【請求項９】
スキャン用のテストパターンとして、フリップフロップがシリアルに接続されたスキャンチェーンに対して与えられるスキャン用のテストパターンを用い、
スキャン入力データが全テストベクトルを通して同じ論理値を取り得る両立関係にあるフリップフロップを、スキャン入力端子から数えて同じ距離に並列に配置して、複数のフリッププロップからなってシフトレジスタとして動作し、少なくとも一箇所で複数のシフト経路に分岐するツリー状構成をなす第１のスキャンチェーンを構成し、
非両立な関係にあるフリップフロップを、シリアルに接続された複数のフリップフロップからなってシフトレジスタとして動作し、前記第１のスキャンチェーンの分岐された前記各シフト経路の末端のフリッププロップからのスキャンデータをパラレルに受け取る第２のスキャンチェーンのフリップフロップとして配置することを特徴とするスキャン回路設計方法。
【請求項１０】
前記第１のスキャンチェーンの、スキャン入力端子から同じ距離に並列に配置したフリップフロップ内において、各フリップフロップをスキャンアウト観測回数が多い順に、前記第２のスキャンチェーンのスキャン出力端子に近い側から配置することを特徴とする請求項９に記載のスキャン回路設計方法。
【請求項１１】
前記第２のスキャンチェーンの非両立な関係にあるフリップフロップ内において、各フリップフロップをスキャンアウト観測回数が多い順に、前記第２のスキャンチェーンのスキャン出力端子に近い側から配置することを特徴とする請求項９または１０に記載のスキャン回路設計方法。
【請求項１２】
前記第１のスキャンチェーンの長さと前記第２のスキャンチェーンの長さとが均等になるように、非両立な関係にあるフリップフリップを第１のスキャンチェーンのスキャン入力端子側と第２のスキャンチェーンとに配置することを特徴とする請求項９ないし１１のいずれかに記載のスキャン回路設計方法。
【請求項１３】
スキャン用のテストパターンとして、フリップフロップがシリアルに接続されたスキャンチェーンに対して与えられるスキャン用のテストパターンを用いるとともに、当該テストパターンのデータを並び替え、
請求項１ないし８のいずれかに記載の半導体集積回路のスキャンデータ設定値およびキャプチャデータの期待値を作成することを特徴とするテストパターン生成方法。
【請求項１４】
スキャンテストの同じ被検査回路に対して、請求項６に記載の半導体集積回路の前記第１および第２スキャンチェーンと同じ構成の第１および第２スキャンチェーンを用いてスキャンテストを実施した後、未検出故障に対して請求項２、３、４、および７のいずれかに記載の半導体集積回路の前記第１および第２スキャンチェーンと同じ構成の第１および第２スキャンチェーンを用いてスキャンテストを実施することを特徴とするスキャンテスト方法。
【請求項１５】
請求項１ないし７のいずれかに記載の半導体集積回路を用い、前記第２のスキャンチェーンの前記第１のスキャンチェーンからスキャンデータをパラレルに受け取るフリップフロップのそれぞれに対して、前記第１のスキャンチェーンからスキャンデータをパラレルに受け取るシフト動作と、前記第２のスキャンチェーンにおけるシリアルのシフト動作とのいずれを行うかを独立に制御してスキャンテストを実施することを特徴とするスキャンテスト方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、スキャン方式で設計された半導体集積回路に関するものである。
【背景技術】
【０００２】
近年の半導体プロセスの微細化に伴い、ロジックＬＳＩ内に搭載できる回路が大規模化している。例えば、１０００万ゲートにも及ぶロジックＬＳＩが設計されるようになっている。出荷時にこのような大規模ロジックＬＳＩをテストしようとすると、テストパターン量やテスト時間が膨大となるため、テストコストが増加する。そのため、ロジックＬＳＩのテストコストを削減するために、テスト容易化設計が一般に用いられている。
【０００３】
代表的なテスト容易化設計として、スキャン設計がある。スキャン設計では、図２６に示すように、被検査回路１０１の内部のフリップフロップをスキャン機能付きのフリップフロップ(スキャンフリップフロップ)１００に置き換えて、スキャンフリップフロップをシリアルに接続したシフトレジスタで構成するスキャンチェーンを用いて、外部ピン２００・３００を用いて内部のフリップフロップ値を直接設定・読み出しできるようにする。また、テスト時には順序回路を全て組合せ回路部分９００として取り扱えるように構成する。このような構成にすることで、ロジックＬＳＩのテストが非常に容易となる。
【０００４】
しかし、スキャン設計では、一部のフリップフロップのみの値を設定し、読み出す場合でも、スキャンチェーンはシフトレジスタとして動作するため、スキャンチェーンに含まれる全てのフリップフロップの値を設定し、読み出しすることと同じになる。このため、スキャン設計ではテストに必要なテストデータ量が大きくなる、あるいはテスト時間が大きくなるといった問題があった。また、テスト時間を削減するため、スキャンチェーン長を短くし、スキャンチェーン本数を増やすと、スキャン用の入出力端子数が増加するといった問題があった。
【０００５】
これに対する改良策として、非特許文献１に記載の技術がある。これは、図２７に示すようにスキャンチェーン内のフリップフロップ１００…をツリー状に接続することで、スキャンチェーンのシフトレジスタの段数を縮小し、テストデータ量やテスト時間を削減するものである。
【０００６】
スキャン設計でのテストデータ量が大きくなる、あるいはスキャン用入出力端子数が増加する問題に対する改良策として、非特許文献２に記載の技術がある。これは、図２８に示すように複数のスキャンチェーンのスキャン入力端子２００を１つに共通にし、スキャン出力データｓ３１・ｓ３２・ｓ３３・…をＭＩＳＲ（並列入力シグネチャ解析器、Multiple Input Signature Register）１１０で圧縮することで、テストデータ量とスキャン用の入出力端子数を削減するものである。ＭＩＳＲ１１０の構成を図２９に示す。フリップフロップ１２０と排他的論理和ゲート１３０との組合せで構成されている。
【非特許文献１】”Optimal Scan Tree Construction with Test Vector Modification for Test Compression” Proceedings of 12th Asian Test Symposium 136頁〜141頁
【非特許文献２】“An Incremental Algorithm for Test Generation in Illinois Scan Architecture Based Designs” Proceedings of Design Automation & Test in Europe Conference 2002
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、非特許文献１の技術では、ツリー状の接続されたフリップフロップによるスキャンチェーンのため、テストデータ読み出し用のスキャン出力端子３００の数が膨大になり、ＬＳＩチップのパッド数やパッケージの端子数に対して納まらないという問題がある。
【０００８】
また、非特許文献２の技術では、ＭＩＳＲ１１０を使用するため、テストパターンにドントケア（例えば、後述の図３（ａ）のＸ。１でも０でも良い。）を使用できず、テスト結果を圧縮するために故障見逃しが発生するという問題がある。
【０００９】
本発明は、上記従来の問題点を鑑みなされたものであり、その目的は、シフト数およびスキャン出力端子数を抑制することができ、故障見逃しのない半導体集積回路、スキャン回路設計方法、テストパターン生成方法、および、スキャンテスト方法を実現することにある。
【課題を解決するための手段】
【００１０】
本発明の半導体集積回路は、上記課題を解決するために、スキャン方式で設計された半導体集積回路において、複数のフリッププロップからなってシフトレジスタとして動作し、少なくとも一箇所で複数のシフト経路に分岐するツリー状構成をなす第１のスキャンチェーンと、シリアルに接続された複数のフリップフロップからなってシフトレジスタとして動作し、前記第１のスキャンチェーンの分岐された前記各シフト経路の末端のフリップフロップからのスキャンデータをパラレルに受け取る第２のスキャンチェーンとの組合せを単位とするスキャン設計回路を備えていることを特徴としている。
【００１１】
上記の発明によれば、各スキャン設計回路において、ツリー状構成をなす第１のスキャンチェーンによってスキャンデータをシフトさせ、複数のフリップフロップがシリアルに接続された第２のスキャンチェーンがこれらをパラレルで受け取るので、第２のスキャンチェーンはスキャンデータをシリアルに出力することにより、スキャン出力端子数を少なく抑えることができる。また、ツリー状構成とシリアル接続部分との組合せにより、スキャンデータ設定値のドントケアおよび観測不要のキャプチャデータを利用してシフト数を削減することができる。シフト数が削減されるので、テストベクトル数を多くしても短時間でキャプチャデータを全て観測することができ、故障見逃しがなくなる。
【００１２】
以上により、シフト数およびスキャン出力端子数を抑制することができ、故障見逃しのない半導体集積回路を実現することができるという効果を奏する。
【００１３】
本発明の半導体集積回路は、上記課題を解決するために、前記第１のスキャンチェーンは１つのスキャン入力端子を備え、当該スキャン入力端子から前記各シフト経路の末端のフリップフロップまでの距離はいずれの経路を通っても等しく、前記第２のスキャンチェーンは１つのスキャン入力端子と１つのスキャン出力端子とを備え、前記第１のスキャンチェーンの前記末端となるフリップフロップの個数以上のフリップフロップを備えていることを特徴としている。
【００１４】
上記の発明によれば、第１のスキャンチェーンのスキャン入力端子から同じ距離、すなわちスキャン入力端子から数えて同じ位置にある並列関係のフリップフロップ同士は、回路の構造上、同じ論理値に設定される。そのため、スキャンチェーン内の全てのフリップフロップのうち、テストパターン中の全テストベクトルにおいて同じ値になっても構わないフリップフロップ、すなわち両立関係にあるフリップフロップを選択して並列位置に配置することで、全テストベクトルが設定できることを保証することができるという効果を奏する。
【００１５】
本発明の半導体集積回路は、上記課題を解決するために、前記第２のスキャンチェーンの前記スキャン出力端子側から数えて前記第１のスキャンチェーンの前記末端となるフリップフロップの個数分のフリップフロップは、前記第１のスキャンチェーンの前記末端となるフリップフロップの出力端子と１対１に接続されていることを特徴としている。
【００１６】
上記の発明によれば、第２のスキャンチェーンが第１のスキャンチェーンからスキャンデータを受け取った後、最小のシフト回数でスキャン出力端子からスキャンデータを出力することができるという効果を奏する。
【００１７】
本発明の半導体集積回路は、上記課題を解決するために、前記第１のスキャンチェーンのスキャン入力端子と、前記第２のスキャンチェーンのスキャン入力端子とが結線され、１つのスキャン入力端子として機能することを特徴としている。
【００１８】
上記の発明によれば、入力端子１本および出力端子１本を備える従来のスキャン設計と同等のスキャン入出力端子数でも、シフト数を削減することができるという効果を奏する。
【００１９】
本発明の半導体集積回路は、上記課題を解決するために、前記第１のスキャンチェーンのスキャン入力端子と、前記第２のスキャンチェーンのスキャン入力端子とは個別に設けられていることを特徴としている。
【００２０】
上記の発明によれば、全体が２入力をもつスキャンチェーンとなるため、第１のスキャンチェーンと第２のスキャンチェーンとを独立してシフト動作させることが可能である。従って、第１のスキャンチェーンと第２のスキャンチェーンとで同時にスキャンデータをシフト動作させることができ、スキャンデータ設定に関するシフト回数を少なくすることが可能であるという効果を奏する。
【００２１】
本発明の半導体集積回路は、上記課題を解決するために、前記スキャン設計回路は前記第１のスキャンチェーンを複数個備え、前記第２のスキャンチェーンは前記各第１のスキャンチェーンからスキャンデータをパラレルに受け取ることを特徴としている。
【００２２】
上記の発明によれば、各第１のスキャンチェーンの長さを互いに同等にすれば、第１のスキャンチェーンは１つの場合よりもスキャンチェーンの長さが短くなるので、シフト数を有効に削減することができるという効果を奏する。
【００２３】
本発明の半導体集積回路は、上記課題を解決するために、前記スキャン設計回路は、前記第２のスキャンチェーンを複数備えており、前記第１のスキャンチェーンから出力されるスキャンデータを前記各第２のスキャンチェーンが分担して受け取ることを特徴としている。
【００２４】
上記の発明によれば、スキャンアウトの出力本数が複数になるので、第２のスキャンチェーンを１つのスキャンチェーンで構成すると長大になる場合に、観測データのスキャンアウトのためのシフト数の削減を行うことができるという効果を奏する。
【００２５】
本発明の半導体集積回路は、上記課題を解決するために、クロック信号、スキャンイネーブル信号、および前記第１のスキャンチェーンと前記第２のスキャンチェーンとのいずれをシフト動作させるかを制御するスキャンシフト制御信号から、前記第１のスキャンチェーンを駆動するクロック信号と、前記第２のスキャンチェーンのフリップフロップのうち第１のスキャンチェーンの出力端子と接続されていないフリップフロップを駆動するクロック信号とを発生させるクロック制御手段を備えていることを特徴としている。
【００２６】
上記の発明によれば、第１のスキャンチェーン用のクロック信号と第２のスキャンチェーン用のクロック信号とを半導体集積回路の外部から入力するとピン数が増加するが、クロック制御手段を備えていることによってピン数のオーバーヘッドを削減することができるという効果を奏する。
【００２７】
本発明のスキャン回路設計方法は、上記課題を解決するために、スキャン用のテストパターンとして、フリップフロップがシリアルに接続されたスキャンチェーンに対して与えられるスキャン用のテストパターンを用い、スキャン入力データが全テストベクトルを通して同じ論理値を取り得る両立関係にあるフリップフロップを、スキャン入力端子から数えて同じ距離に並列に配置して、複数のフリッププロップからなってシフトレジスタとして動作し、少なくとも一箇所で複数のシフト経路に分岐するツリー状構成をなす第１のスキャンチェーンを構成し、非両立な関係にあるフリップフロップを、シリアルに接続された複数のフリップフロップからなってシフトレジスタとして動作し、前記第１のスキャンチェーンの分岐された前記各シフト経路の末端のフリッププロップからのスキャンデータをパラレルに受け取る第２のスキャンチェーンのフリップフロップとして配置することを特徴としている。
【００２８】
上記の発明によれば、第１のスキャンチェーンを、与えられたテストパターンを適用しても故障検出率の低下がないように、テストパターンを分析して全テストベクトルのスキャンインデータを通して同じ論理値に設定することが可能な両立関係にあるフリップフロップをスキャン入力端子から同じ距離に並列に配置して、構成する。また、非両立な関係にあるフリップフロップを第２のスキャンチェーンのフリップフロップとして配置して、スキャンデータをパラレルシリアル変換できるようにする。これらの配置を行うことで、故障検出率を低下させることなく、所望の全テストベクトルを設定することが可能で、スキャン出力端子を１本に抑えることが可能になるという効果を奏する。
【００２９】
本発明のスキャン回路設計方法は、上記課題を解決するために、前記第１のスキャンチェーンの、スキャン入力端子から同じ距離に並列に配置したフリップフロップ内において、各フリップフロップをスキャンアウト観測回数が多い順に、前記第２のスキャンチェーンのスキャン出力端子に近い側から配置することを特徴としている。
【００３０】
上記の発明によれば、第２のスキャンチェーンが第１のスキャンチェーンからスキャンデータであるキャプチャデータを受け取ったときに、第２のスキャンチェーンのあるフリップフロップからスキャン出力端子から最も遠いフリップフロップまで連続して観測不要なデータがある場合に、スキャンアウトのシフト回数の削減が可能になるという効果を奏する。
【００３１】
本発明のスキャン回路設計方法は、上記課題を解決するために、前記第２のスキャンチェーンの非両立な関係にあるフリップフロップ内において、各フリップフロップをスキャンアウト観測回数が多い順に、前記第２のスキャンチェーンのスキャン出力端子に近い側から配置することを特徴としている。
【００３２】
上記の発明によれば、第２のスキャンチェーンが自身のキャプチャデータをスキャンアウトするときに、第２のスキャンチェーンのあるフリップフロップからスキャン出力端子から最も遠いフリップフロップまで連続して観測不要なデータがある場合に、スキャンアウトのシフト回数の削減が可能になるという効果を奏する。
【００３３】
本発明のスキャン回路設計方法は、上記課題を解決するために、前記第１のスキャンチェーンの長さと前記第２のスキャンチェーンの長さとが均等になるように、非両立な関係にあるフリップフリップを第１のスキャンチェーンのスキャン入力端子側と第２のスキャンチェーンとに配置することを特徴としている。
【００３４】
ほとんどのロジックＬＳＩ設計において、第２のスキャンチェーンの長さが第１のスキャンチェーンの長さに比べて非常に大きくなる。これは、非両立な関係にあるフリップフロップが両立関係にあるフリップフロップよりも多いためである。この構成では第２のスキャンチェーンのスキャンデータ設定およびキャプチャデータ観測のためのシフト回数が膨大になる。それを防ぐため、上記の発明により、非両立関係にあるフリップフロップの幾つかを第１のスキャンチェーンのスキャン入力端子側にも配置することで、第１のスキャンチェーンの長さと第２のスキャンチェーンの長さとを均等にする。この配置により第１のスキャンチェーンと第２のスキャンチェーンとに同時にスキャンデータをシフトインすれば、シフト回数を削減することができるという効果を奏する。この配置を用いると、２つのスキャン入力端子から同時に独立に第１のスキャンチェーンと第２のスキャンチェーンとにシフトイン可能となるので特に有効である。
【００３５】
本発明のテストパターン生成方法は、上記課題を解決するために、スキャン用のテストパターンとして、フリップフロップがシリアルに接続されたスキャンチェーンに対して与えられるスキャン用のテストパターンを用いるとともに、当該テストパターンのデータを並び替え、前記半導体集積回路のスキャンデータ設定値およびキャプチャデータの期待値を作成することを特徴としている。
【００３６】
上記の発明によれば、フリップフロップがシリアルに接続されたスキャンチェーン用のテストパターンのデータの並び替えを行ってテストパターンを作成することにより、スキャンデータ設定値のドントケアおよび観測不要なキャプチャデータを利用することによるシフト動作の削減を行うことができるため、テスト時間を削減することができるという効果を奏する。
【００３７】
本発明のスキャンテスト方法は、上記課題を解決するために、スキャンテストの同じ被検査回路に対して、請求項６に記載の半導体集積回路の前記第１および第２スキャンチェーンと同じ構成の第１および第２スキャンチェーンを用いてスキャンテストを実施した後、未検出故障に対して請求項２、３、４、および７のいずれかに記載の半導体集積回路の前記第１および第２スキャンチェーンと同じ構成の第１および第２スキャンチェーンを用いてスキャンテストを実施することを特徴としている。
【００３８】
上記の発明によれば、スキャンテストに用いるスキャンチェーンをテスト途中で切り替えることにより、シフト回数を大きく削減することができるという効果を奏する。
【００３９】
本発明のスキャンテスト方法は、上記課題を解決するために、前記半導体集積回路を用い、前記第２のスキャンチェーンの前記第１のスキャンチェーンからスキャンデータをパラレルに受け取るフリップフロップのそれぞれに対して、前記第１のスキャンチェーンからスキャンデータをパラレルに受け取るシフト動作と、前記第２のスキャンチェーンにおけるシリアルのシフト動作とのいずれを行うかを独立に制御してスキャンテストを実施することを特徴としている。
【００４０】
上記の発明によれば、スキャンアウト動作途中で、パラレルシリアル変換する必要のあるビット幅は徐々に小さくなるため、第２のスキャンチェーンのパラレルシリアル変換に利用されないフリップフロップには、パラレルシリアル変換と同時にスキャンインデータをシフトインすることが可能となり、シフト回数が削減可能となるという効果を奏する。
【発明の効果】
【００４１】
本発明の半導体集積回路は、以上のように、第１のスキャンチェーンと、第２のスキャンチェーンとの組合せを単位とするスキャン設計回路を備えているので、シフト数およびスキャン出力端子数を抑制することができ、故障見逃しのない半導体集積回路を実現することができるという効果を奏する。
【発明を実施するための最良の形態】
【００４２】
本発明の一実施形態について図１ないし図２５に基づいて説明すると以下の通りである。
【００４３】
図１に、本実施の形態の半導体集積回路に備えられるスキャンテストの被検査回路１の構成を示す。被検査回路１は、スキャン設計回路１１、クロック制御回路１２、スキャン入力端子２、スキャン出力端子３、クロック信号入力端子１５、スキャンイネーブル信号入力端子１６、および、スキャンシフト制御信号入力端子１７を備えている。
【００４４】
スキャン設計回路１１は、スキャンチェーン４・５・６を備えている。スキャン設計回路１１は、他の回路部分も含み得るが、スキャンチェーン４・５・６の組合せを単位として半導体集積回路に任意個数備えられている。スキャンチェーン４はスキャンフリップフロップとしてのフリップフロップＦＦ９・ＦＦ５・ＦＦ２・ＦＦ８・ＦＦ６・ＦＦ３を備えている。スキャンチェーン５はスキャンフリップフロップとしてのフリップフロップＦＦ０・ＦＦ７・ＦＦ４を備えている。スキャンチェーン６はスキャンフリップフロップとしてのフリップフロップＦＦ１を備えている。フリップフロップＦＦ９・ＦＦ５・ＦＦ２・ＦＦ８・ＦＦ６・ＦＦ３はツリー状に接続されている。
【００４５】
スキャンチェーン（第１のスキャンチェーン）４は、以下の接続構成となっている。フリップフロップＦＦ９の入力端子はスキャン入力端子２に接続されている。スキャン入力端子２にはスキャン入力データＳＣＡＮＩＮが入力される。スキャン入力データＳＣＡＮＩＮは、後述するスキャンデータ設定値からなる。フリップフロップＦＦ９の出力端子は２つのシフト経路に分岐してフリップフロップＦＦ５の入力端子およびフリップフロップＦＦ２の入力端子に接続されている。フリップフロップＦＦ５の出力端子はフリップフロップＦＦ８の入力端子に接続されている。フリップフロップＦＦ２の出力端子は２つのシフト経路に分岐してフリップフロップＦＦ６の入力端子およびフリップフロップＦＦ３の入力端子に接続されている。スキャンチェーン４では、フリップフロップＦＦ９→フリップフロップＦＦ５→フリップフロップＦＦ８（さらには→フリップフロップＦＦ０）の順でデータをシフトするシフトレジスタと、フリップフロップＦＦ９→フリップフロップＦＦ２→フリップフロップＦＦ６（さらには→フリップフロップＦＦ７）の順でデータをシフトするシフトレジスタと、フリップフロップＦＦ９→フリップフロップＦＦ２→フリップフロップＦＦ３（さらには→フリップフロップＦＦ４）の順でデータをシフトするシフトレジスタとが構成されている。スキャンチェーン４はこのシフト動作を、スキャンイネーブル信号入力端子１６から１のスキャンイネーブル信号ＳＣＡＮＥＮが入力される期間に、クロック信号ＣＬＫＨに同期して行う。
【００４６】
スキャンチェーン６において、フリップフロップＦＦ１の入力端子はスキャン入力端子２に接続されている。フリップフロップＦＦ１は、データをフリップフロップＦＦ４へシフトする。スキャンチェーン６において、フリップフロップは一般に複数個がシリアルに接続されていてよい。スキャンチェーン６はこのシフト動作を、スキャンイネーブル信号入力端子１６から１のスキャンイネーブル信号ＳＣＡＮＥＮが入力される期間に、クロック信号ＣＬＫＶに同期して行う。
【００４７】
スキャンチェーン５では、各フリップフロップはチェーン上において２つの入力端子を備えており、以下の接続構成となっている。フリップフロップＦＦ４とフリップフロップＦＦ７とフリップフロップＦＦ０とはシリアルに接続されている。シリアルに接続されるフリップフロップは一般に複数個でよい。フリップフロップＦＦ４の第１の入力端子はフリップフロップＦＦ３の出力端子に接続されており、第２の入力端子はフリップフロップＦＦ１の出力端子に接続されている。フリップフロップＦＦ７の第１の入力端子はフリップフロップＦＦ６の出力端子に接続されており、第２の入力端子はフリップフロップＦＦ４の出力端子に接続されている。フリップフロップＦＦ０の第１の入力端子はフリップフロップＦＦ８の出力端子に接続されており、第２の入力端子はフリップフロップＦＦ７の出力端子に接続されている。フリップフロップＦＦ０の出力端子はスキャン出力端子３に接続されている。スキャンチェーン５では、フリップフロップＦＦ４→フリップフロップＦＦ７→フリップフロップＦＦ０の順でデータをシフトするシフトレジスタが構成されている。フリップフロップＦＦ０の出力は、スキャン出力端子３からのスキャン出力データＳＣＡＮＯＵＴとなる。スキャン出力データＳＣＡＮＯＵＴは、後述するキャプチャデータからなる。スキャンチェーン５はこのシフト動作を、スキャンイネーブル信号入力端子１６から１のスキャンイネーブル信号ＳＣＡＮＥＮが入力される期間に、クロック信号ＣＬＫに同期して行う。また、スキャンチェーン５の各フリップフロップは、１のスキャンイネーブル信号ＳＣＡＮＥＮが入力されるときに、スキャンシフト制御信号入力端子１７から０のスキャンシフト制御信号ＳＣＡＮＳＷが入力されれば第１の入力端子から入力されるデータを出力するシフト動作を行い、スキャンシフト制御信号入力端子１７から１のスキャンシフト制御信号ＳＣＡＮＳＷが入力されれば第２の入力端子から入力されるデータを出力するシフト動作を行う。
【００４８】
スキャンチェーン５とスキャンチェーン６とで複数個のフリップフロップがシリアルに接続された１つのスキャンチェーンが構成されており、これを第２のスキャンチェーンとする。
【００４９】
また、図示しないが、スキャンチェーン４・５・６の各フリップフロップの前記シフト方向と別の方向には、前述の図２６の組合せ回路部分９００と同様の組合せ回路部分が設けられており、各フリップフロップと接続されている。組合せ回路部分にはスキャンチェーン４・５・６の各フリップフロップからデータが供給されるとともに、この組合せ回路部分を通ったデータが、当該組合せ回路部分の反対側に隣接するフリップフロップにキャプチャされる。フリップフロップと組合せ回路部分とのデータのやり取りは、クロック信号ＣＬＫ・ＣＬＫＨ・ＣＬＫＶに同期して行われる。
【００５０】
クロック制御回路（クロック制御手段）１２は、ＮＡＮＤ回路２１・２２、インバータ２３、および、ＡＮＤ回路２４・２５を備えている。ＮＡＮＤ回路２１・２２およびＡＮＤ回路２４・２５はそれぞれ２入力である。ＮＡＮＤ回路２１の一方の入力端子はスキャンイネーブル信号入力端子１６に接続されており、他方の入力端子はスキャンシフト制御信号入力端子１７に接続されている。ＮＡＮＤ回路２２の一方の入力端子はスキャンイネーブル信号入力端子１６に接続されており、他方の入力端子はインバータ２３を介してスキャンシフト制御信号入力端子１７に接続されている。ＡＮＤ回路２４の一方の入力端子はクロック信号入力端子１５に接続されており、他方の入力端子はＮＡＮＤ回路２１の出力端子に接続されている。ＡＮＤ回路２５の一方の入力端子はクロック信号入力端子１５に接続されており、他方の入力端子はＮＡＮＤ回路２２の出力端子に接続されている。クロック信号入力端子１５にはクロック信号ＣＬＫが、スキャンイネーブル信号入力端子１６にはスキャンイネーブル信号ＳＣＡＮＥＮが、スキャンシフト制御信号入力端子１７にはスキャンシフト制御信号ＳＣＡＮＳＷがそれぞれ入力される。また、ＡＮＤ回路２４の出力信号は前記クロック信号ＣＬＫＨとなり、ＡＮＤ回路２５の出力信号は前記クロック信号ＣＬＫＶとなる。
【００５１】
クロック信号ＣＬＫＨは、スキャンチェーン４のシフト動作を行わせるクロック信号であり、図１における横方向シフト用クロック信号である。クロック信号ＣＬＫＶは、スキャンチェーン６のシフト動作を行わせるクロック信号であり、図１における縦方向シフト用クロック信号である。図２に示すように、スキャンイネーブル信号ＳＣＡＮＥＮ＝０のときは、クロック制御回路１２によって、スキャンシフト制御信号ＳＣＡＮＳＷの値に関わらず、クロック信号ＣＬＫＨ＝クロック信号ＣＬＫＶ＝クロック信号ＣＬＫとなる。また、スキャンイネーブル信号ＳＣＡＮＥＮ＝１、スキャンシフト制御信号ＳＣＡＮＳＷ＝０のときは、クロック信号ＣＬＫＨ＝クロック信号ＣＬＫ、クロック信号ＣＬＫＶ＝０となる。また、スキャンイネーブル信号ＳＣＡＮＥＮ＝１、スキャンシフト制御信号ＳＣＡＮＳＷ＝１のときは、クロック信号ＣＬＫＨ＝０、クロック信号ＣＬＫＶ＝クロック信号ＣＬＫとなる。なお、クロック信号ＣＬＫＨ＝０またはＣＬＫＶ＝０は、クロック信号ＣＬＫＨ・ＣＬＫＶが非アクティブ信号（ここでは常時ローレベルの状態）となることを示す。
【００５２】
スキャンチェーン４用のクロック信号ＣＬＫＨとスキャンチェーン６用のクロック信号ＣＬＫＶとを半導体集積回路（デバイス）の外部から入力するとピン数が増加するが、クロック制御回路１２を備えていることによってピン数のオーバーヘッドを削減することができる。
【００５３】
次に、上記の構成の被検査回路１における動作を説明する。
【００５４】
被検査回路１における動作は、スキャン入力データＳＣＡＮＩＮのスキャンインにより各フリップフロップにスキャンデータ設定値を設定する動作と、各フリップフロップの組合せ回路部分からのキャプチャデータをスキャン出力データＳＣＡＮＯＵＴとしてスキャンアウトする動作とからなる。シフトされるスキャンデータ設定値およびキャプチャデータをまとめてスキャンデータと呼ぶ。
【００５５】
スキャン入力データＳＣＡＮＩＮは、スキャンイネーブル信号ＳＣＡＮＥＮ＝１、スキャンシフト制御信号ＳＣＡＮＳＷ＝０のときにクロック信号ＣＬＫＨに同期してスキャン入力端子２からシフト動作により、ツリー構造のスキャンチェーン４の各フリップフロップに設定される。このとき、スキャンチェーン５もクロック信号ＣＬＫに同期して動作するが、スキャン入力データＳＣＡＮＩＮがスキャンチェーン４の長さ分だけが用意されているため、スキャンチェーン５には値は設定されない。スキャンチェーン６のフリップフロップはクロック信号ＣＬＫＶ＝０であるので動作せず、当該フリップフロップには値は設定されない。
【００５６】
また、スキャン入力データＳＣＡＮＩＮは、スキャンイネーブル信号ＳＣＡＮＥＮ＝１、スキャンシフト制御信号ＳＣＡＮＳＷ＝１のときにスキャン入力端子２からシフト動作により、クロック信号ＣＬＫ・ＣＬＫＶに同期してそれぞれスキャンチェーン６、スキャンチェーン５の各フリップフロップに設定される。このときスキャンチェーン４のフリップフロップはクロック信号ＣＬＫＨ＝０であるので動作しない。
【００５７】
また、スキャンイネーブル信号ＳＣＡＮＥＮ＝０のときに、回路は通常動作によって、クロック信号ＣＬＫ・ＣＬＫＨ・ＣＬＫＶに同期して、各フリップフロップに設定されたスキャン入力データＳＣＡＮＩＮを被検査回路１の前記組合せ回路部分に供給するとともに、当該組合せ回路部分を通ったデータを別の各フリップフロップでキャプチャする。
【００５８】
被検査回路１は、フリップフロップにキャプチャされたデータを、まず、スキャンイネーブル信号ＳＣＡＮＥＮ＝１、スキャンシフト制御信号ＳＣＡＮＳＷ＝１として、スキャンチェーン６およびスキャンチェーン５のシフト動作でスキャン出力端子３へ出力する。また、図示しないが、テストパターン入力に対して期待される出力値がテスタに格納されており、スキャン出力端子３に出力されたスキャン出力信号ＳＣＡＮＯＵＴをこの期待値と比較する。その後、スキャンイネーブル信号ＳＣＡＮＥＮ＝１、スキャンシフト制御信号ＳＣＡＮＳＷ＝０として、スキャンチェーン４およびスキャンチェーン５において前述のシフト方向にデータを１つシフトさせて、フリップフロップＦＦ３・ＦＦ６・ＦＦ８のデータをスキャンチェーン５に送る。これにより、スキャンチェーン５はスキャンチェーン４からデータをパラレルに受け取ってシリアルにシフトさせることとなる。このように、スキャンチェーン５はスキャンデータのパラレルシリアル変換を行う。このとき、次のキャプチャ動作に必要なスキャン入力データＳＣＡＮＩＮをスキャン入力端子２から同時にシフトインさせる。
【００５９】
そして、スキャンイネーブル信号ＳＣＡＮＥＮ＝１、スキャンシフト制御信号ＳＣＡＮＳＷ＝１として、スキャンチェーン５のデータをスキャン出力端子３へ出力し、期待値と比較する。以上のスキャンチェーン５のシフト動作とスキャンチェーン４のシフト動作とを繰り返して、フリップフロップＦＦ９のキャプチャデータがフリップフロップＦＦ０の位置までシフトされたときに、スキャン入力端子２に、スキャンチェーン６およびスキャンチェーン５の各フリップフロップ用のスキャン入力データＳＣＡＮＩＮを用意し、スキャンイネーブル信号ＳＣＡＮＥＮ＝１、スキャンシフト制御信号ＳＣＡＮＳＷ＝１としてスキャンチェーン６およびスキャンチェーン５にシフト動作を行わせ、キャプチャデータ出力と同時に、スキャン入力データＳＣＡＮＩＮの設定を行う。
【００６０】
ここで（ＳＣＡＮＥＮ＝１、ＳＣＡＮＳＷ＝１）、スキャンチェーン６およびスキャンチェーン５のフリップフロップのうち、スキャン出力端子３から遠い位置にあるフリップフロップ（ここではフリップフロップＦＦ１、ＦＦ４、ＦＦ７、ＦＦ０の順で遠い）のキャプチャデータを観測する必要がなく、スキャン入力によるデータ設定を行う必要もなければ、途中でスキャン出力端子３へのシフト動作をやめる。このシフト動作をやめることでスキャンシフトのクロック数が大幅に削減できる。
【００６１】
本実施の形態では、前述した図１のスキャンチェーン４・５・６を構成するためのスキャン設計を、以下の手順で行った。
【００６２】
（１）従来手法でスキャン設計された、図２６のようにフリップフロップがシリアルに接続される被検査回路に対して与えられたスキャン用のテストパターンを用意し、テストベクトルＮｏに対する各フリップフロップのスキャンデータ設定値の表と期待値の表とを用意する。その一例を図３（ａ）・（ｂ）に示す。図３（ａ）は、各フリップフロップに対するスキャンデータ設定値が、テストベクトルＮｏ．１〜Ｎｏ．５まで用意されていることを示す表である。Ｘはドントケアであり、１でも０でも構わない。図３（ｂ）は、テストベクトルＮｏ．１〜Ｎｏ．５に対して各フリップフロップが組合せ回路部分からキャプチャしたデータの期待値を示す表である。Ｘは観測不要であることを示し、ＨでもＬでも構わない。
【００６３】
（２）次に、図３（ａ）のスキャンデータ設定値を見て、図４のようにドントケアを利用してテストパターンの始めから終わりまでが同じ値になってもよいフリップフロップの組合せ（これらのフリップフロップを両立であると称す）があるか否かを調べる。図４では、スキャンデータ設定値がテストベクトルＮｏ．１からＮｏ．５に向かって「１０ＸＸ０」の順となるデータであれば、フリップフロップＦＦ３・ＦＦ６・ＦＦ８の全てのスキャンデータ設定値の条件を満たすことから、フリップフロップＦＦ３・ＦＦ６・ＦＦ８の組合せでは、テストパターンの始めから終わりまでを「１０ＸＸ０」という同じ値に設定することができることが示されている。
【００６４】
（３）次に、上記（２）で調べた結果を用いて、図５のような両立関係を表すグラフを作成する。図５では、テストベクトルＮｏ．１からＮｏ．５までを等しいデータとすることのできるフリップフロップ間を互いに両立関係にあるフリップフロップであるとして線分で結んである。例えばフリップフロップＦＦ０とフリップフロップＦＦ３とは両立関係にある。フリップフロップＦＦ３とＦＦ６とＦＦ８とは図４で説明したように両立関係にある。しかし、フリップフロップＦＦ０とＦＦ６とは両立関係になく、また、フリップフロップＦＦ０とＦＦ８とは両立関係になく、これを非両立の関係にあると呼ぶ。
【００６５】
（４）次に、図５の両立グラフから、図６のようにフリップフロップを両立関係にあるものどうしでグループ分けする。このとき１つのグループにできるだけ多くのフリップフロップが含まれるように選ぶ。また、どのフリップフロップとも両立関係にないフリップフロップを非両立グループとしてまとめる。図６では、両立関係の最も多いフリップフロップ数が３となるフリップフロップＦＦ３・ＦＦ６・ＦＦ８の組合せをまず両立グループ１として選び、残りのフリップフロップの中で次に両立関係の多いフリップフロップ数が２となるフリップフロップＦＦ２・ＦＦ５の組合せを両立グループ２として選ぶ。非両立グループはフリップフロップＦＦ０・ＦＦ１・ＦＦ４・ＦＦ７・ＦＦ９の組合せとなる。
【００６６】
（５）次に、各両立グループに属するフリップフロップどうしは、同じスキャンデータ設定値になってもよいので、図７に示すようなスキャンツリー構成を作成する。両立関係にあるフリップフロップ数の少ない両立グループほどデータシフトの上流側に配置することとし、図７では両立グループ２を両立グループ１より上流側に配置している。その分、両立グループ２の出力端子のいずれかが分岐して両立グループ１の入力端子と接続されるようにする。図７ではフリップフロップＦＦ２の出力端子はフリップフロップＦＦ３の入力端子と１対１で接続されているが、フリップフロップＦＦ５の出力端子は分岐してフリップフロップＦＦ６の入力端子およびフリップフロップＦＦ８の入力端子と接続されている。また、両立グループ２のフリップフロップＦＦ２の入力端子とフリップフロップＦＦ５の入力端子とを互いに接続する。これにより、同じ両立グループ内の各フリップフロップどうしは、最上流側から同じフリップフロップ数だけ離れた下流側に並列に位置することになる。以下では、離れているフリップフロップ数を距離と呼ぶ。従って、同じ両立グループ内の各フリップフロップどうしは、最上流側から同じ距離だけ離れた下流側に並列に位置している。
【００６７】
（６）次に、非両立グループに属するフリップフロップを図８のように上記（５）で作成したスキャンツリーの出力端子側に配置する。図８では、フリップフロップＦＦ４・ＦＦ７・ＦＦ９・ＦＦ１・ＦＦ０の順にフリップフロップをシリアルに接続し、その下流側の３つのフリップフロップＦＦ４・ＦＦ７・ＦＦ９の入力端子（前述の第１の入力端子に相当する）を、順にフリップフロップＦＦ３・ＦＦ６・ＦＦ８の各出力端子と１対１に接続する。そして、フリップフロップＦＦ２・ＦＦ５の入力端子およびフリップフロップＦＦ０の入力端子をスキャン入力端子２に接続し、フリップフロップＦＦ４の出力端子をスキャン出力端子３に接続する。この時点ではスキャンチェーン４はフリップフロップＦＦ２・ＦＦ５・ＦＦ３・ＦＦ６・ＦＦ８からなり、スキャンチェーン５はフリップフロップＦＦ４・ＦＦ７・ＦＦ９からなり、スキャンチェーン６はフリップフロップＦＦ１・ＦＦ０からなる。
【００６８】
（７）次に、図９に示すように、各両立グループ内、あるいは、非両立グループ内で、フリップフロップを、図３（ｂ）に示されているキャプチャデータ観測の必要数の大きい順にスキャン出力端子３側に近く配置されるように、並べ替える。図９では、両立グループ２においてフリップフロップＦＦ５がフリップフロップＦＦ２よりもスキャン出力端子３に近くなるよう、スキャンチェーン４の両立グループ１においてフリップフロップＦＦ８・ＦＦ６・ＦＦ３の順にスキャン出力端子３に近くなるよう、非両立グループにおいてフリップフロップＦＦ０・ＦＦ７・ＦＦ４・ＦＦ１・ＦＦ９の順にスキャン出力端子３に近くなるよう、フリップフロップを並べ替える。この時点ではスキャンチェーン４はフリップフロップＦＦ２・ＦＦ５・ＦＦ３・ＦＦ６・ＦＦ８からなり、スキャンチェーン５はフリップフロップＦＦ０・ＦＦ７・ＦＦ４からなり、スキャンチェーン６はフリップフロップＦＦ１・ＦＦ９からなる。
【００６９】
（８）次に、非両立グループのフリップフロップの内、スキャン出力端子３から距離が遠いフリップフリップを、スキャンツリーの入力側に移動して配置する。図１０ではフリップフロップＦＦ９をフリップフロップＦＦ５・ＦＦ２の上流側に配置し、フリップフロップＦＦ９の入力端子をスキャン入力端子２に接続する。このようにして、図１１に示すように、スキャンチェーン４の最も上流側のフリップフロップからスキャン出力端子３までの距離Ｌ１と、スキャンチェーン５・６を合せた第２のスキャンチェーンの最も上流側のフリップフロップからスキャン出力端子３までの距離Ｌ２とが均等になるように配置する。またここで、第２のスキャンチェーンは、スキャンチェーン４の末端のフリップフロップＦＦ８・ＦＦ６・ＦＦ３の数（＝３）以上の数のフリップフロップからなるようにし、スキャン出力端子３に近い方のフリップフロップがフリップフロップＦＦ８・ＦＦ６・ＦＦ３と１対１に接続されるようにする。これにより、図１のスキャン設計回路１１が構成される。
【００７０】
図１２、図１３は図１０のスキャン設計回路１１に対するスキャンイン、スキャンアウトの動作を表すための各端子の入出力信号のタイミング波形である。図１２は図１０のスキャン設計回路１１に対してテストパターンの第１番目のテストベクトルＮｏ．１をスキャン入力端子２からシフトインさせるタイミング波形例である。まず期間ＰＩ４１にフリップフロップＦＦ８・ＦＦ６・ＦＦ３のスキャンデータ設定値をスキャン入力端子２からスキャンチェーン４に入力する。次いで期間ＰＩ４２にフリップフロップＦＦ５・ＦＦ２のスキャンデータ設定値をスキャン入力端子２からスキャンチェーン４に入力するとともに、スキャンチェーン４内でデータをフリップフロップ１つ分だけシフトさせる。次いで期間ＰＩ４３にフリップフロップＦＦ９のスキャンデータ設定値をスキャン入力端子２からスキャンチェーン４に入力するとともに、スキャンチェーン４内でデータをフリップフロップ１つ分だけシフトさせる。期間ＰＩ４１〜ＰＩ４３には、スキャンイネーブル信号ＳＣＡＮＥＮ＝１、スキャンシフト制御信号ＳＣＡＮＳＷ＝０とし、クロック信号ＣＬＫＨ（＝クロック信号ＣＬＫ）に同期させてスキャンチェーン４内でのシフト動作を行う。これにより、期間ＰＩ４３の終了時にはスキャンチェーン４内の全てのフリップフロップにスキャンデータ設定値が設定される。
【００７１】
次に、期間ＰＩ５６に移り、スキャンイネーブル信号ＳＣＡＮＥＮ＝１、スキャンシフト制御信号ＳＣＡＮＳＷ＝１とし、クロック信号ＣＬＫＶ（＝クロック信号ＣＬＫ）およびクロック信号ＣＬＫに同期させて、フリップフロップＦＦ０・ＦＦ７・ＦＦ４・ＦＦ１のスキャンデータ設定値を順次スキャン入力端子２からスキャンチェーン６に入力するとともに、スキャンチェーン５・６内でのシフト動作を行う。これにより、期間ＰＩ５６の終了時にはスキャンチェーン４・５・６内の全てのフリップフロップにスキャンデータ設定値が設定される。次いで、スキャンイネーブル信号ＳＣＡＮＥＮ＝０、スキャンシフト制御信号ＳＣＡＮＳＷ＝０として、クロック信号ＣＬＫＨ（＝クロック信号ＣＬＫ）、クロック信号ＣＬＫＶ（＝クロック信号ＣＬＫ）、およびクロック信号ＣＬＫに同期させて、先に各フリップフロップに設定されたスキャンデータ設定値を隣接する組合せ回路部分に送出し、また、これらのフリップフロップに、他の組合せ回路部分からのデータをキャプチャする動作を行う。
【００７２】
しかし、図１２の期間ＰＩ４１・ＰＩ４２・ＰＩ４３、あるいは、期間ＰＩ５６において、シフトインさせるデータが先頭から連続してドントケアの続くものである場合、そのドントケア値はシフトイン不要であり、それに費やすシフト回数を削減することが可能である。例えば、フリップフロップＦＦ８・ＦＦ６・ＦＦ３・ＦＦ５・ＦＦ２がドントケアである場合には、これらのフリップフロップにはスキャンデータ設定値を設定する必要がないので、期間ＰＩ４１・ＰＩ４２を削除することができる。
【００７３】
図１３は、あるテストベクトルを印加した後のキャプチャ結果の観測値をシフトアウトし、その次のテストベクトルをシフトインさせるタイミング波形例である。
【００７４】
まず期間ＰＯ１においてスキャンイネーブル信号ＳＣＡＮＥＮ＝１、スキャンシフト制御信号ＳＣＡＮＳＷ＝１として、スキャンチェーン５・６にキャプチャされているデータをフリップフロップＦＦ０・ＦＦ７・ＦＦ４・ＦＦ１の順にスキャン出力端子３から出力する。
【００７５】
次いで期間ＰＩ４１においてスキャンイネーブル信号ＳＣＡＮＥＮ＝１、スキャンシフト制御信号ＳＣＡＮＳＷ＝０として、スキャンチェーン４のフリップフロップＦＦ８・ＦＦ６・ＦＦ３のキャプチャデータをスキャンチェーン５のフリップフロップＦＦ０・ＦＦ７・ＦＦ４へシフトさせる。また、このとき、スキャンチェーン４のフリップフロップＦＦ５・ＦＦ２のキャプチャデータをフリップフロップＦＦ８・ＦＦ６・ＦＦ３にシフトさせ、フリップフロップＦＦ９のキャプチャデータをフリップフロップＦＦ５・ＦＦ２にシフトさせる。ただし、フリップフロップＦＦ３・ＦＦ２にシフトされたデータは観測する必要がない。また、同時にスキャン入力端子２からフリップフロップＦＦ９にフリップフロップＦＦ８・ＦＦ６・ＦＦ３のスキャンデータ設定値を入力する。
【００７６】
次いで期間ＰＯ２においてスキャンイネーブル信号ＳＣＡＮＥＮ＝１、スキャンシフト制御信号ＳＣＡＮＳＷ＝１として、フリップフロップＦＦ０・ＦＦ７・ＦＦ４のデータ（フリップフロップＦＦ８・ＦＦ６・ＦＦ３のキャプチャデータ）を順にスキャン出力端子３から出力する。
【００７７】
次いで、期間ＰＩ４２においてスキャンイネーブル信号ＳＣＡＮＥＮ＝１、スキャンシフト制御信号ＳＣＡＮＳＷ＝０として、スキャンチェーン４のフリップフロップＦＦ８・ＦＦ６・ＦＦ３のデータ（フリップフロップＦＦ５・ＦＦ２のキャプチャデータ）をスキャンチェーン５のフリップフロップＦＦ０・ＦＦ７・ＦＦ４にシフトさせる。ただし、フリップフロップＦＦ４にシフトされたデータは観測する必要がない。また、このとき、スキャンチェーン４のフリップフロップＦＦ５・ＦＦ２のデータ（フリップフロップＦＦ９のキャプチャデータ）をフリップフロップＦＦ８・ＦＦ６・ＦＦ３にシフトさせ、フリップフロップＦＦ９のデータ（フリップフロップＦＦ８・ＦＦ６・ＦＦ３のスキャンデータ設定値）をフリップフロップＦＦ５・ＦＦ２にシフトさせる。ただし、フリップフロップＦＦ６・ＦＦ３にシフトされたデータは観測する必要がない。また、同時にスキャン入力端子２からフリップフロップＦＦ９にフリップフロップＦＦ５・ＦＦ２のスキャンデータ設定値を入力する。
【００７８】
次いで期間ＰＯ３においてスキャンイネーブル信号ＳＣＡＮＥＮ＝１、スキャンシフト制御信号ＳＣＡＮＳＷ＝１として、フリップフロップＦＦ０・ＦＦ７・ＦＦ４のデータ（フリップフロップＦＦ５・ＦＦ２のキャプチャデータ）を順にスキャン出力端子３から出力する。ただし、フリップフロップＦＦ４のデータは観測する必要がないのでスキャンアウトしない。
【００７９】
次いで期間ＰＩ４３においてスキャンイネーブル信号ＳＣＡＮＥＮ＝１、スキャンシフト制御信号ＳＣＡＮＳＷ＝０として、スキャンチェーン４のフリップフロップＦＦ８・ＦＦ６・ＦＦ３のデータ（フリップフロップＦＦ９のキャプチャデータ）をスキャンチェーン５のフリップフロップＦＦ０・ＦＦ７・ＦＦ４にシフトさせる。ただし、フリップフロップＦＦ７・ＦＦ４にシフトされたデータは観測する必要がない。この時点でフリップフロップＦＦ９のキャプチャデータはスキャン出力端子３から出力されているので、観測不要なキャプチャデータがない場合、フリップフロップＦＦ０〜ＦＦ９までの全てのキャプチャデータが観測されることとなる。また、期間ＰＩ４３では、フリップフロップＦＦ５・ＦＦ２のデータをフリップフロップＦＦ８・ＦＦ６・ＦＦ３にシフトさせ、フリップフロップＦＦ９のデータをフリップフロップＦＦ５・ＦＦ２にシフトさせ、フリップフロップＦＦ９のスキャンデータ設定値をスキャン入力端子２から入力する。これにより、スキャンチェーン４に対する次のスキャンデータ設定値が全て設定される。
【００８０】
そして、その後、期間ＰＩ５６においてスキャンイネーブル信号ＳＣＡＮＥＮ＝１、スキャンシフト制御信号ＳＣＡＮＳＷ＝１として、スキャン入力端子２からフリップフロップＦＦ０・ＦＦ７・ＦＦ４・ＦＦ１のスキャンデータ設定値を順次入力して設定する。これにより、スキャンチェーン４・５・６に次のテストベクトルが設定される。次いでキャプチャ動作に移行し、前述の期間ＰＯ１からの動作を繰り返していく。
【００８１】
上記図１３の期間ＰＩ４１・ＰＩ４２・ＰＩ４３・ＰＩ５６も図１２と同様の理由でシフトインのシフト回数を削減することができる。また、図１３の期間ＰＯ１・ＰＯ２・ＰＯ３のそれぞれにおいて、図１０のスキャンチェーン５・６のある位置のフリップフロップから、スキャン出力端子３から距離が最も大きく離れているフリップフロップまでが、連続して観測不要のデータを保持するフリップフロップであれば、その観測のためのシフトアウトのシフト回数を削減することができる。
【００８２】
図１４と図１５とは、本実施の形態におけるスキャン設計回路１１のシフト回数の削減効果を表す図である。図１６はテストベクトル数が多くなれば故障検出率が高くなることを示す曲線を示す。
【００８３】
図１４は従来のスキャン設計回路に対して図３（ａ）のテストパターンを適用したときのスキャンテストに必要なクロック数を示している。テストベクトルＮｏ．１〜Ｎｏ．５のスキャンデータ設定値の設定とテストベクトルＮｏ．１〜Ｎｏ．４のテストベクトルに対するキャプチャデータの観測とで１０×５クロックを使用する。また、テストベクトルＮｏ．１〜Ｎｏ．５のスキャンデータ設定値に対するキャプチャ動作に５クロックを使用する。テストベクトルＮｏ．５のスキャンデータ設定値に対するキャプチャデータの観測に９クロックを使用する。従って、合計６４クロックを使用する。
【００８４】
図１５は、図３（ａ）のテストパターンを適用し、図１２および図１３のシフト動作により、図１０のスキャン設計回路１１によってスキャンテストしたときに必要なクロック数を、各テストベクトルに対する期待値とともに示している。図中、丸で囲んだ数字はクロック信号ＣＬＫＶのクロック数、四角で囲んだ数字はクロック信号ＣＬＫＨのクロック数、三角で囲んだ数字はキャプチャ動作に使用されるクロック数を示す。ドントケアを使用することのできるところではドントケアを使用し、キャプチャデータ観測不要のところではシフトを行わない結果のクロック数となっており、全部で５７クロックを使用する。
【００８５】
図１４と図１５とを比較すると図１５の方が、クロック数が削減されていることが分かる。これは、設定不要なスキャンデータ設定値や観測不要なキャプチャデータを利用することによりシフト回数を削減しているためである。図１４と図１５とは小さな回路例であるため、大きな削減効果にはなっていないが、図１６に示すようにテストパターンが後半に進む程、設定不要なスキャンデータ設定値や観測不要なキャプチャデータが多くを占めるため、クロック数の削減効果は大きい。
【００８６】
図１７および図１８は本実施の形態で使用する前記フリップフロップの構成を表している。
【００８７】
図１７は従来のスキャンチェーンでも使用しているスキャンフリップフロップ１０であり、Ｄフリップフロップ１０ａと選択回路１０ｂとを備えている。実動作モードでのフリップフロップの入力端子Ｄとスキャンシフトに用いる入力端子ＳＩとを有しており、選択回路１０ｂはスキャンイネーブル信号ＳＣＡＮＥＮが０のときに入力端子Ｄに入力される信号をＤフリップフロップ１０ａのＤ端子に入力し、スキャンイネーブル信号ＳＣＡＮＥＮが１のときに入力端子ＳＩに入力される信号をＤフリップフロップ１０ａのＤ端子に入力する。Ｄフリップフロップ１０ａはクロック信号ＣＬＫの立ち上がりタイミングで、Ｄ端子に入力される信号をＱ端子から出力信号Ｑ・ＳＯとして出力する。出力信号Ｑは実動作モードで使用される信号であり、スキャンテストのときには前述のようにテスト信号として組合せ回路部分へ入力される。出力信号ＳＯはスキャンシフトに使用される信号である。
【００８８】
図１８は例えば図１０のスキャンチェーン５などに利用されるスキャンフリップフロップ１３であり、Ｄフリップフロップ１３ａと選択回路１３ｂ・１３ｃとを備えている。実動作モードでのフリップフロップの入力端子Ｄと、スキャンチェーン４からのデータをパラレルシリアル変換するための入力端子ＳＩＨと、スキャンチェーン５自身のシフトのための入力端子ＳＩＶとを有している。選択回路１３ｃは、スキャンシフト制御信号ＳＣＡＮＳＷが０のときに入力端子ＳＩＨに入力される信号を選択回路１３ｂに入力し、入力端子ＳＩＨが１のときに入力端子ＳＩＶに入力される信号を選択回路１３ｂに入力する。選択回路１３ｂは、スキャンイネーブル信号ＳＣＡＮＥＮが０のときに入力端子Ｄに入力される信号をＤフリップフロップ１３ａのＤ端子に入力し、スキャンイネーブル信号ＳＣＡＮＥＮが１のときに他方の入力端子に入力される選択回路１３ｃからの信号をＤフリップフロップ１３ａのＤ端子に入力する。Ｄフリップフロップ１３ａはクロック信号ＣＬＫの立ち上がりタイミングで、Ｄ端子に入力される信号をＱ端子から出力信号Ｑ・ＳＯとして出力する。出力信号Ｑは実動作モードで使用される信号であり、スキャンテストのときには前述のようにテスト信号として組合せ回路部分へ入力される。出力信号ＳＯはスキャンシフトに使用される信号である。
【００８９】
なお、図１９に、図１の被検査回路１に入力するデータおよび各信号の生成・入力と、スキャンアウトデータの観測とを、ロジックＬＳＩテスタ２０によって行う構成を示す。
【００９０】
以上のように、本実施の形態によれば、ツリー状構成をなすスキャンチェーン４によってスキャンデータをシフトさせ、複数のフリップフロップがシリアルに接続されたスキャンチェーン５・６のスキャンチェーン５がこれらをパラレルで受け取るので、スキャンチェーン５・６はスキャンデータをシリアルに出力することにより、スキャン出力端子数を少なく抑えることができる。具体的には、従来のスキャン設計と同等のスキャン入出力端子数（入力端子１本、出力端子１本）でありながら、スキャンシフト数を削減することができる。１つのクロック信号でスキャンチェーン４とスキャンチェーン５および６とをシフトイン動作させると、スキャン入力端子２から同じ距離にある、すなわちスキャン入力端子２から数えて同じ位置にあるフリップフロップは同じ論理値に設定されるため、スキャンチェーン４を駆動するクロック信号ＣＬＫＨとスキャンチェーン５および６を駆動するクロック信号ＣＬＫ・ＣＬＫＶとを独立して制御する。あるテストベクトルに対して、まずはスキャンチェーン４のみをシフト動作させスキャンデータ設定値を設定する。その後、スキャンチェーン５および６のみシフト動作させスキャンデータ設定値を設定し、所望のスキャンデータ設定値を設定することができる。図１９では、スキャンシフト制御信号ＳＣＡＮＳＷとクロック制御回路１２を用いて、クロック信号ＣＬＫＨ・ＣＬＫＶを生成しスキャンチェーン４のみ・スキャンチェーン５および６のみをシフト動作させるか制御している。以上の動作をテストパターン内の全テストベクトルに対して行うことで、スキャンチェーン４がフリップフロップの両立関係を満たす構成であれば所望の全テストベクトルが設定できることが保証される。
【００９１】
また、ツリー状構成とシリアル接続部分との組合せにより、スキャンデータ設定値のドントケアおよび観測不要のキャプチャデータを利用してシフト数を削減することができる。シフト数が削減されるので、テストベクトル数を多くしても短時間でキャプチャデータを全て観測することができ、故障見逃しがなくなる。
【００９２】
以上により、シフト数およびスキャン出力端子数を抑制することができ、故障見逃しのない半導体集積回路を実現することができる。
【００９３】
また、スキャン設計回路１１において、スキャンチェーン４は１つのスキャン入力端子２を備え、当該スキャン入力端子２からスキャンチェーン４の各シフト経路の末端のフリップフロップＦＦ８・ＦＦ６．ＦＦ３までの距離はいずれの経路を通っても等しい。そして、スキャンチェーン５・６からなるスキャンチェーンは１つのスキャン入力端子２と１つのスキャン出力端子３とを備え、スキャンチェーン４の末端となるフリップフロップの個数（＝３）以上のフリップフロップ（＝４個）を備えている。
【００９４】
この構成によれば、スキャンチェーン４のスキャン入力端子２から同じ距離にある並列関係のフリップフロップ同士は、回路の構造上、同じ論理値に設定される。そのため、スキャンチェーン４内の全てのフリップフロップのうち、テストパターン中の全テストベクトルにおいて同じ値になっても構わないフリップフロップ、すなわち両立関係にあるフリップフロップを選択して並列位置に配置することで、全テストベクトルが設定できることを保証することができる。
【００９５】
また、スキャン設計回路１１によれば、スキャンチェーン５・６のスキャン出力端子３側から数えてスキャンチェーン４の末端となるフリップフロップの個数分（＝３）のフリップフロップは、スキャンチェーン４の末端となるフリップフロップの出力端子と１対１に接続されている。
【００９６】
この構成によれば、スキャンチェーン５・６がスキャンチェーン４からスキャンデータを受け取った後、最小のシフト回数でスキャン出力端子３からスキャンデータを出力することができる。
【００９７】
また、スキャン設計回路１１によれば、スキャンチェーン４のスキャン入力端子２と、スキャンチェーン５・６からなるスキャンチェーンのスキャン入力端子２とが結線され、１つのスキャン入力端子として機能する。
【００９８】
この構成によれば、入力端子１本および出力端子１本を備える従来のスキャン設計と同等のスキャン入出力端子数でも、シフト数を削減することができる。
【００９９】
次に、図２０〜２２に、図１０のスキャン設計回路１１の変形例の構成を示す。
【０１００】
図２０の構成は、図１０のスキャン設計回路１１においてスキャン入力端子２を、スキャンチェーン４とスキャンチェーン５・６とに個別に設けたものである。このような２入力１出力を持つツリー状構成のスキャン設計回路を用いることで、スキャンシフト回数の削減を行う。図２０のスキャンチェーン４のようにスキャンチェーンをツリー構造にすることで、少ないシフト回数でできるだけ多くのフリップフロップにスキャンデータ設定値を設定することができる。スキャンチェーン４のスキャン入力端子２から同じ距離にある並列関係のフリップフロップ同士は、回路の構造上、同じ論理値に設定される。そのため、テスト対象回路内の全てのフリップフロップのうち、テストパターン中の全テストベクトルにおいて同じ値になっても構わないフリップフロップ（両立関係にあるフリップフロップ）を選択して並列位置に配置することで、全テストベクトルが設定できることを保証する。また、図２０のような２入力をもつスキャン設計回路とすると、スキャンチェーン４とスキャンチェーン５および６とは独立してシフト動作することが可能であるため、スキャンチェーン４とスキャンチェーン５および６とで同時にスキャンデータをシフト動作させることができ、スキャンデータ設定値の設定に関するスキャンシフト回数を少なくすることが可能である。この場合、１つのテストベクトルのスキャンデータ設定値のスキャンシフト回数は、スキャンチェーン４の長さ（シフト方向に沿った距離）とスキャンチェーン５および６の長さとのうち長い方で決定される。
【０１０１】
図２１は、折畳みタイプのスキャン設計回路である。このスキャン設計回路はツリー状のスキャンチェーン４１・４２を備え、それら複数のスキャンチェーンの出力をもう１つのスキャンチェーン５１でパラレルシリアル変換してスキャンデータを出力する。各ツリー状スキャンチェーンは互いに種類が異なり、スキャンチェーン４１は、スキャン入力端子２から同じ距離に位置するフリップフロップに同じ論理値を設定しても所望の全テストベクトルを設定可能である構成、すなわち両立関係が成り立つフリップフロップによる構成である。スキャンチェーン４２は、両立関係の成り立たないフリップフロップによる構成である。スキャン入力端子２はスキャンチェーン４１・４２のそれぞれに個別に設けられる。このような各種類のツリー状のスキャンチェーンを複数備えていてもよい。図２１では、両立関係のフリップフロップのみでツリー状のスキャンチェーン４１を構成し、残りの非両立関係にあるフリップフロップでもう１つのツリー状のスキャンチェーン４２とスキャンチェーン５１とを構成する。このとき、スキャンチェーン４２の長さはスキャンチェーン４１と同等にする。この構成にすることで、スキャンチェーン４１の長さとスキャンチェーン４２の長さとはそれぞれ短くなり、スキャンシフト数の削減に有効になる。
【０１０２】
スキャンチェーン４２は、ツリー状部分が図１０や図２０の場合と比べて短いためスキャンシフト回数が小さくて済むが、非両立の関係にあるフリップフロップが並列に並んでいるため、所望の全テストベクトルが設定できることは保証されない。そのため、図２１の構成によるスキャンテストで検出できる故障を全て検出した後に、図２０または図１０または後述の図２２の構成に切り替えてスキャンテストを行い補完する。まずは、図２１のスキャンチェーンと同じ構成のスキャンチェーンを用いて少ないスキャンシフト数で大部分の故障の検出を行い、次にフリップフロップの両立関係を用いた図１０、図２０、あるいは図２２のツリー状のスキャンチェーンと同じ構成のスキャンチェーンを用いて残りの故障の検出を行う。このスキャンチェーン構成をテスト途中で切り替えることにより、図１０、図２０、あるいは図２２のスキャンチェーン構成を単独で用いるよりもシフト回数の削減効果が大きい。半導体集積回路にはこれら複数種類のスキャンチェーンを切り替え可能に設け、同じ被検査回路を異なるスキャンチェーンでテストする。
【０１０３】
図２１の複数のスキャン入力端子２・２を図１０のように１つのスキャン入力端子２に結線する構成も考えられる。この場合、スキャンデータ設定値の設定に関しては、図１０の場合と同様に考える。
【０１０４】
ところで、図１０のスキャン設計回路１１においてスキャンチェーン４のシフト経路の分岐数が非常に多くなると、スキャンチェーン５・６からなるスキャンチェーンが非常に長大になる。そのため、図２２では、各両立グループを複数（同図では２つ）のスキャンチェーンに分割する。この場合、第２のスキャンチェーンに相当するスキャンチェーンも上記分割数だけ分割し、スキャン入力端子２は１つのままとして、第１のスキャンチェーンのそれぞれのスキャンチェーンにスキャン出力端子３を設ける。図２２の構成は、このように、第２のスキャンチェーンを複数備えており、第１のスキャンチェーンから出力されるスキャンデータを各第２のスキャンチェーンが分担して受け取り、それぞれスキャンアウトする。このように出力本数を複数にすることで、観測データのスキャンアウトのためのシフト数の削減を行うことができる。
【０１０５】
次に、図２３および図２４に、図１０のスキャン設計回路１１が回路内部に複数存在するときの構成を示す。図２３は、各スキャン設計回路１１に供給するクロック信号ＣＬＫ・ＣＬＫＨ・ＣＬＫＶが、１つのクロック制御回路１２から共通に供給されている例である。図２４は、各スキャン設計回路１１に供給するクロック信号ＣＬＫ・ＣＬＫＨ・ＣＬＫＶが、それぞれのスキャン設計回路１１につき１つのクロック制御回路１２から独立に供給されている例である。図２３の方が図２４に比べてクロック供給の設計やテストパターンの作成が容易であり、また、スキャンシフト制御信号ＳＣＡＮＳＷの入力端子数（スキャンシフト制御信号入力端子１７の数）が節約できる。図２４の場合は、それぞれのスキャン設計回路１１が独立で動作するため、スキャンデータ設定値の設定不要および観測不要なキャプチャデータを利用したシフト動作の削減を、詳細に制御することができるため、更なるスキャンシフト回数の削減になる。
【０１０６】
次に、図２５に、更にスキャンシフト回数を削減する構成を示す。図２５では、スキャンチェーン５の各フリップフロップのスキャンシフト制御信号ＳＣＡＮＳＷの入力端子を独立にコントロールする方法を示している。ツリー状のスキャンチェーン４の出力をスキャンチェーン５でパラレルシリアル変換する場合、ツリー状という回路の特徴を考えると、スキャンアウト動作途中で、パラレルシリアル変換する必要のあるビット幅は徐々に小さくなる。
【０１０７】
そこで、スキャンチェーン５のスキャンチェーン４からスキャンデータをパラレルに受け取るフリップフロップのそれぞれに対して、スキャンチェーン４からスキャンデータをパラレルに受け取るシフト動作と、スキャンチェーン５におけるシリアルのシフト動作とのいずれを行うかを独立に制御してスキャンテストを実施する。
【０１０８】
図２５では、では、これらのスキャンチェーン５の各フリップフロップのスキャンシフト制御信号（図１８のＳＣＡＮＳＷ）を独立に制御する。これにより、パラレルシリアル変換に利用されないスキャンチェーン６側のスキャンチェーン５のフリップフロップには、パラレルシリアル変換と同時にスキャンインデータをシフトインすることが可能となり、シフト回数が削減可能となる。図２５の例では、ステートマシン（ＦＳＭ）６１により、スキャンチェーン５の各フリップフロップのスキャンシフト制御信号ＳＣＡＮＳＷの入力端子をコントロールしている。図２０のようなスキャンチェーン４のスキャン入力端子２とスキャンチェーン６のスキャン入力端子２とが独立である回路の場合には、スキャンチェーン５の各フリップフロップのスキャンシフト制御信号ＳＣＡＮＳＷの入力端子を独立に制御する手法は、シフト回数の削減に特に有効である。
【０１０９】
また、本実施の形態におけるスキャン回路設計方法は、スキャン用のテストパターンとして、従来のシリアルに接続されたスキャンチェーンに対して与えられるスキャン用のテストパターンと同じものを用い、図３〜図１１のようにスキャン入力データＳＣＡＮＩＮが全テストベクトルを通して同じ論理値を取り得る両立関係にあるフリップフロップを、スキャン入力端子２から同じ距離に並列に配置して、複数のフリッププロップからなってシフトレジスタとして動作し、少なくとも一箇所で複数のシフト経路に分岐するツリー状構成をなすスキャンチェーン４を構成し、非両立な関係にあるフリップフロップを、シリアルに接続された複数のフリップフロップからなってシフトレジスタとして動作し、スキャンチェーン４の分岐された各シフト経路の末端のフリッププロップからのスキャンデータをパラレルに受け取るスキャンチェーン５・６のフリップフロップとして配置するスキャン回路設計方法である。
【０１１０】
上記の構成によれば、与えられたテストパターンを適用しても故障検出率の低下がないように、テストパターンを分析して全テストベクトルのスキャンインデータを通して同じ論理値に設定することが可能な両立関係にあるフリップフロップをスキャン入力端子２から同じ距離に並列に配置して、スキャンチェーン４を構成する。また、非両立な関係にあるフリップフロップをスキャンチェーン５・６のフリップフロップとして配置して、スキャンデータをパラレルシリアル変換できるようにする。これらの配置を行うことで、故障検出率を低下させることなく、所望の全テストベクトルを設定することが可能で、スキャン出力端子３を１本に抑えることが可能になる。
【０１１１】
また、前述の図１１で説明したように、スキャンチェーン４の長さとスキャンチェーン５・６の長さとが均等になるように、非両立な関係にあるフリップフリップをスキャンチェーン４のスキャン入力端子２側とスキャンチェーン５・６とに配置した。
【０１１２】
ほとんどのロジックＬＳＩ設計において、スキャンチェーン５・６の長さがスキャンチェーン４の長さに比べて非常に大きくなる。これは、非両立な関係にあるフリップフロップが両立関係にあるフリップフロップよりも多いためである。この構成ではスキャンチェーン５・６のスキャンデータ設定およびキャプチャデータ観測のためのシフト回数が膨大になる。それを防ぐため、非両立な関係にあるフリップフロップの幾つかをスキャンチェーン４のスキャン入力端子２側にシリアルに配置することで、スキャンチェーン４の長さとスキャンチェーン５・６の長さとを均等にする。この配置によりスキャンチェーン４とスキャンチェーン５とに同時にスキャンデータをシフトインすれば、シフト回数を削減することができる。この配置を用いると、２つのスキャン入力端子２・２から同時に独立にスキャンチェーン４とスキャンチェーン５・６とにシフトイン可能となるので特に有効である。
【０１１３】
次に、テストパターン作成方法について説明する。
【０１１４】
従来のスキャン設計で生成されたテストパターンを用いて図３〜図１１で説明したスキャン回路設計方法で図１０・図２０・図２１・図２２のスキャンチェーンを設計したときに、スキャン入力端子２にシフトインさせるデータの順序とスキャン出力端子３からシフトアウトされるデータに対する期待値の順序とを並べ替える方法（テストパターンの各テストベクトルのビットを並べ替える方法）である。例えば図１０のスキャン設計回路１１の場合、各テストベクトルに対して、スキャンチェーン４の各フリップフロップに所望のスキャンデータ設計値が設定されるようにデータを並べ替える。そのスキャンデータ設定値に続き、スキャンチェーン５・６の各フリップフロップに所望のスキャンデータ設定値が設定されるようにデータを並べ替える。以上の各並べ替えにおいて、データ列が先頭から順にドントケアの連続するものである場合、それらドントケアはシフトイン不要なため、それらを削除する。以上のスキャンインデータに続き、スキャンチェーン５・６からのスキャンアウトデータと比較するための期待値を並べ替える。この並べ替えにおいてデータ列のある位置から最後の位置まで観測不要であれば、それらを削除する。次にスキャンチェーン４の並列位置関係にある最終段のフリップフロップグループの期待値を並べ替える。この並べ替えにおいてもデータ列のある位置から最後の位置まで観測不要であれば、それらを削除する。以下、同様にスキャンチェーン４の並列位置関係にあるフリップフロップグループ内にて期待値の並べ替えと観測不要データの削除とを行う。この並べ替えにおいてスキャンデータ設定値の設定不要およびキャプチャデータの観測不要によるシフト動作の削減を行うことができるため、テスト時間を削減することができる。図２０・図２１・図２２のスキャンチェーンの場合も、スキャン入力端子数やスキャン出力端子数が異なるだけで、同様にテストパターンを作成する。
【０１１５】
次に、他のテストパターン生成方法について説明する。
【０１１６】
図３〜図１１のスキャン回路設計方法を用いずに図１０、図２０、あるいは図２２のスキャンチェーン（フリップフロップの両立関係を用いずにツリー状のチェーン）を設計した場合、あるいは、図２１で説明したスキャンチェーン４２（これも非両立な関係にあるフリップフロップによるツリー）の場合、ツリー状の並列関係のフリップフロップには同値が設定されるため、与えられたテストパターンの全テストベクトルを与えることはできない。この場合は、ツリー状のスキャンチェーンのうちある１本のスキャンチェーン経路を選択し、その経路上のフリップフロップのスキャンデータ設定値のみをテストベクトルから抽出してその経路上に設定しながら、ツリー状のスキャンチェーンの全フリップフロップにデータを設定するように、シフトインデータを並べ替える。このとき選択したスキャンチェーンのシフト経路のみ所望のスキャンデータ設定値が設定されるため、テスト結果の期待値はこの設定したスキャンデータ設定値で故障シミュレーションし、テストベクトル毎に各フリップフロップの期待値を求める。与えられたテストパターンの全テストベクトルに対して以上の処理を行い、故障シミュレーションで見つからなかった故障に対しては、従来のスキャンチェーン構成でテストを実施するか、あるいは、フリップフロップ間の両立関係を利用したツリー状のスキャンチェーン構成に切り替えてテストを実施する。これらのスキャンチェーン構成を切り替えるいずれかのテストを実施するために、与えられたテストパターンのうち故障シミュレーションでの未検出故障の検出に関与するテストベクトルを抽出し、スキャンインデータとスキャンアウトデータとをシフトイン・シフトアウトする順序に並べ替える。
【０１１７】
次に、既存のテストパターンなしで図１０、図２０、図２１、あるいは図２２を設計した場合について説明する。
【０１１８】
図１０、図２０、図２１、あるいは図２２のスキャンチェーン回路を設計した場合（フリップフロップの両立関係を用いずにツリー状のチェーンを設計した場合）のもう１つのテストパターン作成方法は、ツリー状の並列関係にあるフリップフロップには必ず同じ論理値が設定されるという条件を与えてＡＴＰＧによりテストパターンを生成する。ＡＴＰＧ実施後、未検出故障に対しては従来のスキャンチェーン構成にしてＡＴＰＧを実施しテストパターンを生成する。生成したテストパターンの各テストベクトルにおいては、上記で説明したようにスキャンインデータ・スキャンアウトデータをシフトイン・シフトアウトする順序に並べ替える。
【０１１９】
以上、テストパターン作成方法において、スキャンチェーン５・６のデータを全てシフトアウトする場合と、スキャンチェーン４の出力値をスキャンチェーン５にシフトさせる場合とを切り替えるために、スキャンチェーン５の各フリップフロップがどちらのデータを取り込むのか制御するスキャンシフト制御信号ＳＣＡＮＳＷが必要になるため、テストパターンの動きに併せてこの信号も生成する。
【０１２０】
本発明は上述した各実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能であり、異なる実施形態にそれぞれ開示された技術的手段を適宜組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。
【産業上の利用可能性】
【０１２１】
本発明は、スキャン方式で設計された半導体集積回路に好適に適用できる。
【図面の簡単な説明】
【０１２２】
【図１】本発明の実施形態を示すものであり、半導体集積回路に備えられるスキャンテストの被検査回路および第１のスキャン設計回路の構成を示す回路ブロック図である。
【図２】図１の被検査回路のスキャンテストに使用される制御信号・クロック信号の論理対応を説明する図である。
【図３】（ａ）は図１の被検査回路のスキャンテストに用いられるスキャンデータ設定値、（ｂ）は（ａ）のスキャンデータ設定値に対するスキャンテスト結果の期待値を示す図である。
【図４】両立関係にあるフリップフロップを説明する図である。
【図５】各フリップフロップの両立関係を表すグラフである。
【図６】フリップフロップの両立グループおよび非両立グループへの分類を説明する図である。
【図７】図６の両立グループを用いてスキャンツリーを構成した場合のスキャンチェーンの第１段階での構成図である。
【図８】図６の両立グループを用いてスキャンツリーを構成した場合のスキャンチェーンの第２段階での構成図である。
【図９】図６の両立グループを用いてスキャンツリーを構成した場合のスキャンチェーンの第３段階での構成図である。
【図１０】図６の両立グループを用いてスキャンツリーを構成した場合のスキャンチェーンの第４段階での構成図およびスキャン設計回路の構成図である。
【図１１】図１０のスキャンチェーンを縦横の距離が等しくなるように作成することを示す図である。
【図１２】図１０のスキャン設計回路に第１番目のテストベクトルをスキャンインするときの各信号のタイミング波形図である。
【図１３】図１０のスキャン設計回路における、あるテストベクトルに対するキャプチャ後の観測データのスキャンアウトと、その次のテストベクトルをスキャンインするときの各信号のタイミング波形図である。
【図１４】図３（ａ）のテストパターンを従来のスキャンチェーンに適用した場合の必要クロック数を示す図である。
【図１５】図３（ａ）のテストパターンを図１０のスキャンチェーンに適用した場合の必要クロック数を示す図である。
【図１６】テストベクトル数と故障検出率の関係を表したグラフである。
【図１７】第１のスキャンフリップフロップの構成を示す回路ブロック図である。
【図１８】第２のスキャンフリップフロップの構成を示す回路ブロック図である。
【図１９】図１の被検査回路のテスト構成を表す回路ブロック図である。
【図２０】本発明の実施形態を示すものであり、半導体集積回路に備えられる第２のスキャン設計回路の構成を示す回路ブロック図である。
【図２１】本発明の実施形態を示すものであり、半導体集積回路に備えられる第３のスキャン設計回路の構成を示す回路ブロック図である。
【図２２】本発明の実施形態を示すものであり、半導体集積回路に備えられる第４のスキャン設計回路の構成を示す回路ブロック図である。
【図２３】図１のスキャン設計回路を複数備える被検査回路の第１の構成を示す回路ブロック図である。
【図２４】図１のスキャン設計回路を複数備える被検査回路の第２の構成を示す回路ブロック図である。
【図２５】本発明の実施形態を示すものであり、半導体集積回路に備えられる第５のスキャン設計回路の構成を示す回路ブロック図である。
【図２６】従来技術を示すものであり、半導体集積回路に備えられる被検査回路のスキャン設計回路の第１の構成を示す回路ブロック図である。
【図２７】従来技術を示すものであり、半導体集積回路に備えられるスキャン設計回路の第２の構成を示す回路ブロック図である。
【図２８】従来技術を示すものであり、半導体集積回路に備えられるスキャン設計回路の第３の構成を示す回路ブロック図である。
【図２９】図２８のスキャン設計回路に備えられるＭＩＳＲの構成を示す回路ブロック図である。
【符号の説明】
【０１２３】
１    被検査回路
２    スキャン入力端子
３    スキャン出力端子
４    スキャンチェーン（第１のスキャンチェーン）
５    スキャンチェーン
６    スキャンチェーン
１１    スキャン設計回路
１２    クロック制御回路（クロック制御手段）
４１、４２
スキャンチェーン（第１のスキャンチェーン）
５１    スキャンチェーン（第２のスキャンチェーン）
ＣＬＫ、ＣＬＫＨ、ＣＬＫＶ
クロック信号
ＦＦ０〜ＦＦ９
フリップフロップ
【図１】
2006047013.tif 000003
【図２】
2006047013.tif 000004
【図３】
2006047013.tif 000005
【図４】
2006047013.tif 000006
【図５】
2006047013.tif 000007
【図６】
2006047013.tif 000008
【図７】
2006047013.tif 000009
【図８】
2006047013.tif 000010
【図９】
2006047013.tif 000011
【図１０】
2006047013.tif 000012
【図１１】
2006047013.tif 000013
【図１２】
2006047013.tif 000014
【図１３】
2006047013.tif 000015
【図１４】
2006047013.tif 000016
【図１５】
2006047013.tif 000017
【図１６】
2006047013.tif 000018
【図１７】
2006047013.tif 000019
【図１８】
2006047013.tif 000020
【図１９】
2006047013.tif 000021
【図２０】
2006047013.tif 000022
【図２１】
2006047013.tif 000023
【図２２】
2006047013.tif 000024
【図２３】
2006047013.tif 000025
【図２４】
2006047013.tif 000026
【図２５】
2006047013.tif 000027
【図２６】
2006047013.tif 000028
【図２７】
2006047013.tif 000029
【図２８】
2006047013.tif 000030
【図２９】
2006047013.tif 000031