(57)【要約】【課題】集積回路の試験に関し、一つの回路を分割した複数の領域間の試験を行えるようにスキャンチェーンを生成すること。【解決手段】集積回路の試験時に、複数のフリップフロップを含むスキャンシフトを動作させたときの消費電力が許容値を超える場合、スキャンチェーンに含まれる複数のフリップフロップを複数のグループに分割する。分割の際には、集積回路が実際に動作するときの信号の伝達経路に基づいて、複数のフリップフロップのうちの一部のフリップフロップが複数のグループに含まれる。複数のグループに含まれるフリップフロップは、複数のグループのそれぞれに生成されるスキャンチェーンに接続される。【選択図】図２
2011013159.tif 000002
【特許請求の範囲】
【請求項１】
集積回路の回路データを入力する入力ステップと、
該回路データに基づいて複数のフリップフロップを含む仮のスキャンチェーンを生成する仮生成ステップと、
該仮のスキャンチェーンを動作させたときの消費電力が許容値を超えるか否かを解析する解析ステップと、
該仮のスキャンチェーンを動作させたときの消費電力が許容値を超える場合に、該集積回路が実際に動作するときの信号の伝達経路に基づいて、該仮のスキャンチェーンに含まれる複数のフリップフロップを、該複数のフリップフロップのうちの一部のフリップフロップが複数のグループに含まれるように、複数のグループに分割する分割ステップと、
該複数のグループに含まれるフリップフロップを該複数のグループのそれぞれに生成されるスキャンチェーンに接続して該グループごとにスキャンチェーンを生成する生成ステップと、
を含むことを特徴とするスキャンチェーンの生成方法。
【請求項２】
前記分割ステップでは、前記集積回路が実際に動作するときに前記集積回路の各出力端子から出力される信号を該出力端子から前記集積回路の入力端子まで遡って辿るときに該信号が経由する前記フリップフロップをまとめて一つの単位とし、該単位を該出力端子ごとに求め、複数の該単位を組み合わせて前記複数のグループを生成することを特徴とする請求項１に記載のスキャンチェーンの生成方法。
【請求項３】
前記分割ステップでは、前記集積回路が実際に動作するときに前記集積回路の各入力端子から入力される信号を該入力端子から前記集積回路の出力端子まで辿るときに該信号が経由する前記フリップフロップをまとめて一つの単位とし、該単位を該出力端子ごとに求め、複数の該単位を組み合わせて前記複数のグループを生成することを特徴とする請求項１に記載のスキャンチェーンの生成方法。
【請求項４】
コンピュータを、
メモリから集積回路の回路データを読み出して演算処理部に入力する入力部、
該演算処理部で該回路データを演算処理して複数のフリップフロップを含む仮のスキャンチェーンを生成する仮生成部、
該演算処理部で該回路データを演算処理して該仮のスキャンチェーンを動作させたときの消費電力が許容値を超えるか否かを解析する解析部、
該仮のスキャンチェーンを動作させたときの消費電力が許容値を超える場合に、該演算処理部で該回路データを演算処理して、前記集積回路が実際に動作するときの信号の伝達経路に基づいて、該仮のスキャンチェーンに含まれる複数のフリップフロップを、該複数のフリップフロップのうちの一部のフリップフロップが複数のグループに含まれるように、複数のグループに分割する分割部、
該演算処理部で該回路データを演算処理して該複数のグループに含まれるフリップフロップを該複数のグループのそれぞれに生成されるスキャンチェーンに接続して該グループごとにスキャンチェーンを生成する生成部、
として機能させることを特徴とするスキャンチェーンの生成プログラム。
【請求項５】
通常動作時にデータが入力されるデータ端子と、
試験時に試験データが入力される複数のスキャンイン端子と、
選択信号が入力される複数のスキャンモード端子と、
該スキャンモード端子に入力される選択信号に基づいて、該データ端子に入力されるデータ、または該複数のスキャンイン端子に入力される試験データのうちのいずれか一つの試験データを選択するセレクタと、
該セレクタの出力データが入力されるフリップフロップと、
を備えることを特徴とする集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、スキャンチェーンの生成方法、スキャンチェーンの生成プログラムおよび集積回路に関する。
【背景技術】
【０００２】
従来、スキャンチェーンを用いた集積回路の試験方法が知られている。スキャンチェーンを用いて集積回路の試験を行う際、同時に動作するスキャンフリップフロップの数が多いと、試験時の消費電力が試験装置の許容値を超えることがある。消費電力が許容値を超えると、試験を行うことができない。一方、スキャンチェーンを分割する方法が知られている。例えば、論理回路をブロックに分割し、各ブロックごとにスキャンチェーンを形成する方法が知られている（例えば、特許文献１参照。）。また、試験対象回路内の第１スキャンチェーン、および非試験対象回路内の第２スキャンチェーンの両方に試験データを与える工程と、第１スキャンチェーンにクロックを入力し、一方第２スキャンチェーンにクロックを入力しない工程とを含む方法が知られている（例えば、特許文献２参照。）。また、１本のスキャンチェーンを構成するフリップフロップ回路を、フリップフロップの数が実質的に均等になるように分割して複数のスキャンチェーンを形成する方法が知られている（例えば、特許文献３参照。）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平１０−２９３８号公報
【特許文献２】特開２００６−５８１５２号公報
【特許文献３】特開２００６−１６３６８８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来の方法では、単一のクロックドメインの領域をモジュールなどの複数の領域に分割し、分割された領域ごとにスキャンチェーンを形成した場合、分割された各領域は、本来互いに相手の動作に依存して動作するにも関わらず、集積回路の試験時は分割された領域間の試験を行うことができないという問題点がある。
【０００５】
一つの回路を分割した複数の領域間の試験を行えるようにスキャンチェーンを生成することができるスキャンチェーンの生成方法、スキャンチェーンの生成プログラムおよび集積回路を提供することを目的とする。
【課題を解決するための手段】
【０００６】
このスキャンチェーンの生成方法およびスキャンチェーンの生成プログラムは、集積回路の試験時に、複数のフリップフロップを含むスキャンチェーンを動作させたときの消費電力が許容値を超える場合、スキャンチェーンに含まれる複数のフリップフロップを複数のグループに分割する。分割する際、集積回路が実際に動作するときの信号の伝達経路に基づいて、複数のフリップフロップのうちの一部のフリップフロップが複数のグループに含まれるようにする。複数のグループに含まれるフリップフロップは、複数のグループのそれぞれに生成されるスキャンチェーンに接続される。
【０００７】
また、集積回路は、データ端子、複数のスキャンイン端子、複数のスキャンモード端子、セレクタおよびフリップフロップを備える。データ端子には、通常動作時にデータが入力される。スキャンイン端子には、試験時に試験データが入力される。スキャンモード端子には、選択信号が入力される。セレクタは、スキャンモード端子に入力される選択信号に基づいて、データ端子に入力されるデータ、または複数のスキャンイン端子に入力される試験データのうちのいずれか一つの試験データを選択する。フリップフロップには、セレクタの出力データが入力される。
【発明の効果】
【０００８】
このスキャンチェーンの生成方法、スキャンチェーンの生成プログラムおよび集積回路によれば、一つの回路を分割した複数の領域間の試験を行えるようにスキャンチェーンを生成することができるという効果を奏する。
【図面の簡単な説明】
【０００９】
【図１】実施例にかかる試験装置のハードウェア構成を示すブロック図である。
【図２】実施例にかかる試験装置の機能的な構成を示すブロック図である。
【図３】実施例にかかるスキャンチェーンの生成方法を示すフローチャートである。
【図４】実施例にかかる試験装置の入力部の構成を示すブロック図である。
【図５】実施例にかかる試験装置の仮生成部の構成を示すブロック図である。
【図６】実施例にかかる試験装置の解析部の構成を示すブロック図である。
【図７】実施例にかかる試験装置の分割部の構成を示すブロック図である。
【図８】実施例にかかる試験装置の生成部の構成を示すブロック図である。
【図９】実施例にかかる分割の仕方の第１の例を説明する回路図である。
【図１０】実施例にかかる分割の仕方の第１の例においてロジックコーンの一例を示す回路図である。
【図１１】実施例にかかる分割の仕方の第１の例における２分割の候補の一例を示す図表である。
【図１２】実施例にかかる分割の仕方の第１の例における２分割の結果の一例を示す回路図である。
【図１３】実施例にかかる分割の仕方の第１の例における３分割の候補の一例を示す図表である。
【図１４】実施例にかかる分割の仕方の第１の例における３分割の結果の一例を示す回路図である。
【図１５】実施例にかかる分割の仕方の第２の例においてロジックコーンの一例を示す回路図である。
【図１６】実施例にかかる分割の仕方の第２の例における２分割の候補の一例を示す図表である。
【図１７】実施例にかかる分割の仕方の第２の例における２分割の結果の一例を示す回路図である。
【図１８】実施例にかかる分割の仕方の第３の例における２分割の結果の一例を示す回路図である。
【図１９】実施例にかかる分割の仕方の第３の例におけるＮ分割の一例を示す回路図である。
【図２０】実施例にかかる分割の仕方の第１の例によりインデックスを付した一例を示す回路図である。
【図２１】実施例にかかる分割の仕方の第１の例によりインデックスを付した一例を示す回路図である。
【図２２】図２０および図２１に示す回路に対する２分割の候補の一例を示す図表である。
【図２３】図２０および図２１に示す回路に対する２分割の候補の一例を示す図表である。
【図２４】図２０および図２１に示す回路におけるスキャンチェーンの一例を示す回路図である。
【図２５】実施例にかかるスキャンフリップフロップの構成の第１の例を示す回路図である。
【図２６】実施例にかかるスキャンフリップフロップの構成の第２の例を示す回路図である。
【図２７】実施例にかかるスキャンチェーンの生成方法を示すフローチャートである。
【図２８】実施例にかかる分割の手順の第１の例を示すフローチャートである。
【図２９】実施例にかかる分割の手順の第２の例を示すフローチャートである。
【図３０】集積回路の設計処理手順の一例を示すフローチャートである。
【発明を実施するための形態】
【００１０】
以下に添付図面を参照して、このスキャンチェーンの生成方法、スキャンチェーンの生成プログラムおよび集積回路の好適な実施の形態を詳細に説明する。
【００１１】
（実施例１）
実施例１では、集積回路の試験時に、複数のフリップフロップを含むスキャンチェーンを動作させたときの消費電力が許容値を超える場合、スキャンチェーンに含まれる複数のフリップフロップが複数のグループに分割される。分割の際には、集積回路が実際に動作するときの信号の伝達経路に基づいて、複数のフリップフロップのうちの一部のフリップフロップが複数のグループに含まれる。複数のグループに含まれるフリップフロップは、複数のグループのそれぞれに生成されるスキャンチェーンに接続される。
【００１２】
・試験装置のハードウェア構成
図１は、実施例にかかる試験装置のハードウェア構成を示すブロック図である。図１に示すように、試験装置は、例えばパーソナルコンピュータやワークステーションなどのコンピュータ装置によって、予め作成されたプログラムが実行されることにより実現される。コンピュータ装置は、例えばＣｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ（ＣＰＵ、中央処理装置）１、Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ（ＲＡＭ、ランダムアクセスメモリ）２、Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ（ＨＤＤ、ハードディスク装置）３、グラフィック処理部４、入力インタフェース（入力Ｉ／Ｆ）５および通信インタフェース（通信Ｉ／Ｆ）６を備えている。Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ（ＣＰＵ、中央処理装置）１、Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ（ＲＡＭ、ランダムアクセスメモリ）２、Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ（ＨＤＤ、ハードディスク装置）３、グラフィック処理部４、入力インタフェース（入力Ｉ／Ｆ）５および通信インタフェース（通信Ｉ／Ｆ）６は、バス７を介して相互に接続されている。
【００１３】
ＣＰＵ１は、コンピュータ装置の全体に対する制御を司る。ＲＡＭ２は、ＣＰＵ１に実行させるプログラムの少なくとも一部や、このプログラムによる処理に必要な各種データを一時的に記憶する。ＨＤＤ３には、Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ（ＯＳ、オペレーティングシステム）やアプリケーションプログラム、および各種データが格納される。グラフィック処理部４には、モニタ８が接続されている。グラフィック処理部４は、ＣＰＵ１からの命令に従って、モニタ８の画面に画像を表示させる。入力Ｉ／Ｆ５には、例えばキーボード９やマウス１０などの入力デバイスが接続されている。入力Ｉ／Ｆ５は、入力デバイスからの信号を、バス７を介してＣＰＵ１に送信する。通信Ｉ／Ｆ６は、図示しない通信ケーブルなどを介して外部機器と接続され、その外部機器との間でデータの送受信を行う。
【００１４】
・試験装置の機能的構成
図２は、実施例にかかる試験装置の機能的な構成を示すブロック図である。図２に示すように、試験装置は、例えば入力部１１、仮生成部１２、解析部１３、分割部１４および生成部１５を備えている。入力部１１は、集積回路の回路データを入力する。仮生成部１２は、回路データに基づいて複数のフリップフロップを含む仮のスキャンチェーンを生成する。解析部１３は、仮のスキャンチェーンを動作させたときの消費電力が許容値を超えるか否かを解析する。分割部１４は、仮のスキャンチェーンを動作させたときの消費電力が許容値を超える場合に、集積回路が実際に動作するときの信号の伝達経路に基づいて、仮のスキャンチェーンに含まれる複数のフリップフロップを複数のグループに分割する。分割部１４は、仮のスキャンチェーンに含まれる複数のフリップフロップのうちの一部のフリップフロップを、複数のグループに含める。分割部１４での分割処理により生成されたフリップフロップの複数のグループについては、グループごとに仮生成部１２において仮のスキャンチェーンが生成される。生成された仮のスキャンチェーンについては、解析部１３において仮のスキャンチェーンを動作させたときの消費電力が解析される。生成部１５は、複数のグループに含まれるフリップフロップを、複数のグループのそれぞれに生成されるスキャンチェーンに接続して、グループごとにスキャンチェーンを生成する。入力部１１、仮生成部１２、解析部１３、分割部１４および生成部１５は、例えば図１に示すコンピュータ装置のＨＤＤ３またはＲＡＭ２に記憶されたプログラムをＣＰＵ１に実行させることにより実現される。
【００１５】
・スキャンチェーンの生成方法
図３は、実施例にかかるスキャンチェーンの生成方法を示すフローチャートである。図３に示すように、スキャンチェーンを生成する処理が開始されると、まず、集積回路の回路データが入力される（ステップＳ１）。次いで、回路データに基づいて複数のフリップフロップを含む仮のスキャンチェーンが生成される（ステップＳ２）。次いで、仮のスキャンチェーンを動作させたときの消費電力が許容値を超えるか否かを解析する（ステップＳ３）。仮のスキャンチェーンを動作させたときの消費電力が許容値を超える場合（ステップＳ３：Ｙｅｓ）、集積回路が実際に動作するときの信号の伝達経路に基づいて、仮のスキャンチェーンに含まれる複数のフリップフロップが複数のグループに分割される。その際、仮のスキャンチェーンに含まれる複数のフリップフロップのうちの一部のフリップフロップは、複数のグループに含まれる（ステップＳ４）。次いで、ステップＳ２に戻り、ステップＳ４で生成された各グループに対して仮のスキャンチェーンが生成される（ステップＳ２）。そして、ステップＳ３で仮のスキャンチェーンを動作させたときの消費電力が許容値を超えないようになるまで、ステップＳ２〜ステップＳ４が繰り返される。ステップＳ３で仮のスキャンチェーンを動作させたときの消費電力が許容値を超えない場合、グループごとにスキャンチェーンが生成される。そして、複数のグループに含まれるフリップフロップは、複数のグループのそれぞれに生成されるスキャンチェーンに接続される（ステップＳ５）。ステップＳ５でスキャンチェーンが生成されたら、スキャンチェーンを生成する一連の処理が終了する。
【００１６】
実施例１によれば、集積回路が実際に動作するときの信号の伝達経路に基づいて、複数のフリップフロップが、複数のフリップフロップのうちの一部のフリップフロップが複数のグループに含まれるように、分割されるので、各グループは、他のグループから受ける影響や他のグループへ及ぼす影響を考慮して動作することになる。従って、分割された各グループの試験を行うことによって、分割されたグループ間の試験も行うことができるので、分割されたグループ間の試験を行えるようにスキャンチェーンを生成することができる。
【００１７】
（実施例２）
実施例２には、実施例１の試験装置の各部の具体例および実施例１のスキャンチェーンの生成方法の具体例を示す。試験装置のハードウェア構成および機能的構成は、実施例１と同様である。すなわち、実施例２にかかる試験装置は、図２に示すように、入力部１１、仮生成部１２、解析部１３、分割部１４および生成部１５を備えている。
【００１８】
・入力部の構成
図４は、実施例にかかる試験装置の入力部の構成を示すブロック図である。図４に示すように、入力部１１は、クロックドメイン解析部２１を備えている。クロックドメイン解析部２１は、回路データとクロック情報に基づいて、回路内のレジスタ（フリップフロップ）と関連するクロックをマッピングする。回路データは、例えばＨａｒｄｗａｒｅ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ（ＨＤＬ、ハードウェア記述言語）で記述されたデータ、またはＳｉｍｕｌａｔｉｏｎ  Ｐｒｏｇｒａｍ  ｗｉｔｈ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ  Ｅｍｐｈａｓｉｓ（ＳＰＩＣＥ、スパイス）で記述されたデータなどの設計データである。クロック情報は、クロックが接続される端子に関する情報である。クロックドメイン解析部２１は、解析結果を仮生成部１２に渡す。
【００１９】
・仮生成部の構成
図５は、実施例にかかる試験装置の仮生成部の構成を示すブロック図である。図５に示すように、仮生成部１２は、生成部３１および仮スキャンチェーン生成部３２を備えている。生成部３１は、クロックドメイン解析部２１の解析結果に基づいて、回路内のフリップフロップを、同じクロックでマッピングされたフリップフロップごとにまとめた仮のグループを生成する。つまり、各仮のグループには、全スキャンフリップフロップのうち、同一のクロックで動作するスキャンフリップフロップが含まれる。各仮のグループにおいて、それぞれの仮のグループに含まれるスキャンフリップフロップをシリアルに接続することによって、後述する仮のスキャンチェーンが生成される。各仮のグループには、それぞれの仮のスキャンチェーンの間に存在する回路が含まれる。また、各仮のグループには、入力端子からそれぞれの仮のグループに含まれるスキャンフリップフロップまでの間に存在する回路が含まれる。また、各仮のグループには、それぞれの仮のグループに含まれるスキャンフリップフロップから出力端子までの間に存在する回路が含まれる。仮スキャンチェーン生成部３２は、各仮のグループに対して仮のスキャンチェーンを生成する。仮スキャンチェーン生成部３２は、分割部１４で生成された複数のグループをそれぞれ仮のグループとし、該仮のグループに対して仮のスキャンチェーンを生成する。仮のグループの情報および仮のスキャンチェーンの情報は、解析部１３に渡される。
【００２０】
・解析部の構成
図６は、実施例にかかる試験装置の解析部の構成を示すブロック図である。図６に示すように、解析部１３は、テストパターン生成部４１、電力解析部４２および判定部４３を備えている。テストパターン生成部４１は、仮スキャンチェーン生成部３２から渡された情報に基づいて、各仮のグループに対して電力解析用のテストパターンを生成する。電力解析部４２は、仮のグループごとに電力解析用のテストパターンを用いて仮のグループを動作させたときの消費電力を解析する。例えば、電力解析部４２は、ＨＤＬシミュレータやＳＰＩＣＥシミュレータなどのソフトウェア、またはハードウェアエミュレータを用いて、入力端子にテストパターンを入力し、シミュレーションによる解析を行ってもよい。あるいは、電力解析部４２は、回路構造をソフトウェアで解析して、静的に消費電力を算出してもよい。回路構造をソフトウェアで解析する場合には、テストパターンが不要であるので、テストパターン生成部４１はなくてもよい。判定部４３は、仮のグループごとに消費電力の解析結果と電力許容値を比較し、消費電力が電力許容値を超えているか否かを判定する。電力許容値は、例えば集積回路の設計者により外部から入力されて設定される。例えば、電力許容値は、試験装置の定格許容電力などに基づいて設定される。消費電力が電力許容値を超えている場合、判定部４３は、仮のグループの情報および仮のスキャンチェーンの情報を分割部１４に渡す。消費電力が電力許容値を超えていない場合、判定部４３は、仮のグループの情報および仮のスキャンチェーンの情報を生成部１５に渡す。
【００２１】
・分割部の構成
図７は、実施例にかかる試験装置の分割部の構成を示すブロック図である。図７に示すように、分割部１４は、１以上の分割処理部５１，５２，５３および選択部５４を備えている。なお、図７においてはＡ、ＢおよびＣの３個の分割処理部が示されているが、分割処理部の数は１個、２個または４個以上でもよい。各分割処理部５１，５２，５３は、それぞれの分割の仕方で、生成部３１で生成された仮のグループを分割する。各分割処理部において仮のグループをどのように分割するか、ということについては、後述する。選択部５４は、分割処理部５１，５２，５３から得られた複数の分割結果の中から、分割により新たに生成されたグループの数（すなわち、分割数）が例えば一番少ないものを選択する。選択部５４は、分割処理部５１，５２，５３から得られた複数の分割結果の中に、分割数が一番少ないものが複数あるときには、その中から、仮のグループの分割により新たに生成された複数のグループに重複して含まれるスキャンフリップフロップの数が一番少ないものを選択する。選択部５４は、選択した結果を仮生成部１２に渡す。
【００２２】
・生成部の構成
図８は、実施例にかかる試験装置の生成部の構成を示すブロック図である。図８に示すように、生成部１５は、重複処理部６１および生成部６２を備えている。重複処理部６１は、複数のグループに重複して含まれるスキャンフリップフロップを、複数のスキャンチェーンに切り替えによって接続可能な構成のスキャンフリップフロップに変更する。複数のスキャンチェーンに接続可能なスキャンフリップフロップの構成については、後述する。生成部６２は、解析部１３から渡された情報に基づいて、仮のグループに対して、スキャンチェーンを生成する。生成部６２は、スキャンクロックやスキャンモード信号など、スキャンチェーンの生成以外の必要な処理を行う。
【００２３】
・仮のグループの分割の仕方＜１＞
図９は、実施例にかかる分割の仕方の第１の例を説明する回路図である。一例として、図９に示す回路７１を例にして、分割の仕方の第１の例を説明する。図９に示す回路７１は、例えば単一のクロックドメインの領域である。図９に示す回路７１において、各フリップフロップは、同じクロックで動作するスキャンフリップフロップである。Ａ、Ｂ、ＣおよびＤは、入力端子である。Ｗ、Ｘ、ＹおよびＺは、出力端子である。分割の仕方の第１の例は、ロジックコーンを考慮して出力端子から入力端子までバックトレースを行うことによって、仮のグループを分割する。ロジックコーンは、図９に示す回路７１が実際に動作するときの前段のスキャンフリップフロップと後段のスキャンフリップフロップとの間の信号の入出力関係を表している。ロジックコーンは、スキャンフリップフロップ間の、例えばアンド回路やオア回路などの組み合わせ回路を省略して表している。
【００２４】
図１０は、実施例にかかる分割の仕方の第１の例においてロジックコーンの一例を示す回路図である。図１０に示すように、バックトレースを行う場合、ロジックコーン７２は、後段のスキャンフリップフロップの入力端子から、該入力端子に入力される信号を出力する前段のスキャンフリップフロップの出力端子へ向かって広がる三角形状で示される。図１０においては、一例として、後段のスキャンフリップフロップ７３とその直前の段のスキャンフリップフロップ７４，７５との間のロジックコーンに７２の符号を付す。分割処理部は、Ｗ、Ｘ、ＹおよびＺの各出力端子からＡ、Ｂ、ＣおよびＤの各入力端子までバックトレースを行って、各ロジックコーンの入力となるスキャンフリップフロップと入力端子を検出する。分割処理部は、検出したスキャンフリップフロップと入力端子にインデックスとして例えばＷ、Ｘ、ＹまたはＺの出力端子名を付ける。例えば、図１０に示す回路７１では、出力端子Ｗのロジックコーンの入力であるスキャンフリップフロップ７３にインデックスとしてＷが付けられる。同様に、出力端子Ｘのロジックコーンの入力であるスキャンフリップフロップ７６にインデックスとしてＸが付けられる。スキャンフリップフロップ７４は、スキャンフリップフロップ７３（インデックス：Ｗ）のロジックコーン７２と、スキャンフリップフロップ７６（インデックス：Ｘ）のロジックコーン７７との入力になっている。従って、スキャンフリップフロップ７４には、インデックスとしてＷとＸが付けられる。説明を省略するが、他のスキャンフリップフロップおよび入力端子にも同様にインデックスが付けられる。分割処理部は、故障検出観測用のスキャンフリップフロップ７８からスキャンフリップフロップまたは入力端子までバックトレースを行い、検出したスキャンフリップフロップや入力端子と同じインデックスを故障検出観測用のスキャンフリップフロップ７８に付ける。図１０において、各スキャンフリップフロップの中にインデックスが示されており、各入力端子の上にインデックスが示されている。
【００２５】
図１１は、実施例にかかる分割の仕方の第１の例における２分割の候補の一例を示す図表である。図１１に示す例は、図９に示す回路７１を２分割にする例である。図１１に示す図表８１のように、２分割の場合、７個のグループ分けのケースがある。分割処理部は、各ケースにおいて、それぞれのグループに含まれるスキャンフリップフロップの数を数え、数が最大のグループのスキャンフリップフロップの数を求める。例えば、図１１に示す図表８１のケース１の場合、グループ＃１のスキャンフリップフロップの数は５個であり、グループ＃２のスキャンフリップフロップの数は１２個であるので、ケース１のスキャンフリップフロップ数として１２が選択される。ケース２、ケース３、ケース４、ケース５、ケース６およびケース７については、それぞれスキャンフリップフロップ数として１２、１０、１２、１１、１１および１１が選択される。分割処理部は、全てのケースについて数が最大のグループのスキャンフリップフロップの数を求めたら、その中からスキャンフリップフロップの数が最小のものを選択する。図１１に示す図表８１の例では、スキャンフリップフロップの数が１０であるケース３が選択される。スキャンフリップフロップの数が最小となるケースが複数ある場合には、スキャンフリップフロップの延べ数が最小のケースが選択される。スキャンフリップフロップの延べ数は、グループ＃１のスキャンフリップフロップの数とグループ＃２のスキャンフリップフロップの数との和である。図１１に示す図表８１の例では、図９に示す回路７１は、ＷまたはＸのインデックスが付けられた１０個のスキャンフリップフロップのグループ＃１と、ＹまたはＺのインデックスが付けられた１０個のスキャンフリップフロップのグループ＃２と、に分割される。
【００２６】
図１２は、実施例にかかる分割の仕方の第１の例における２分割の結果の一例を示す回路図である。図１２において、破線で囲む領域は、グループ＃１の領域８２であり、一点鎖線で囲む領域は、グループ＃２の領域８３である。太い実線は、グループ＃１の領域８２におけるスキャンチェーン８４であり、太い点線は、グループ＃２の領域８３におけるスキャンチェーン８５である。図９に示す回路７１には１３個のスキャンフリップフロップが含まれているので、図１２に示すように、グループ＃１およびグループ＃２のいずれも、３個のスキャンフリップフロップが削減された状態で試験を行うことができる。
【００２７】
図１３は、実施例にかかる分割の仕方の第１の例における３分割の候補の一例を示す図表である。図１３に示す例は、図９に示す回路７１を３分割にする例である。図１３に示す図表９１のように、３分割の場合、６個のグループ分けのケースがある。２分割の場合と同様にして、分割のケースが選択される。すなわち、各ケースにおいてスキャンフリップフロップの数が最大のグループのうち、最小のスキャンフリップフロップの数は１０である。最小のスキャンフリップフロップの数が１０であるケースは、ケース１、ケース２、ケース４およびケース５である。これら４個のケースのうち、スキャンフリップフロップの延べ数の最小値は２２である。従って、分割処理部は、ケース２を選択する。
【００２８】
図１４は、実施例にかかる分割の仕方の第１の例における３分割の結果の一例を示す回路図である。図１４において、破線で囲む領域は、グループ＃１の領域９２であり、一点鎖線で囲む領域は、グループ＃２の領域９３であり、二点鎖線で囲む領域は、グループ＃３の領域９４である。太い実線は、グループ＃１の領域９２におけるスキャンチェーン９５であり、太い点線は、グループ＃２の領域９３におけるスキャンチェーン９６であり、太い一点鎖線は、グループ＃３の領域９４におけるスキャンチェーン９７である。図１４に示すように、グループ＃１では、８個のスキャンフリップフロップが削減された状態、グループ＃２では、３個のスキャンフリップフロップが削減された状態、グループ＃３では、６個のスキャンフリップフロップが削減された状態で、それぞれ試験を行うことができる。なお、４以上の領域に分割する場合も同様である。分割の仕方の第１の例は、例えば分割処理部Ａ５１において行われる処理である。
【００２９】
・仮のグループの分割の仕方＜２＞
一例として、図９に示す回路７１を例にして、第２の分割の仕方を説明する。第２の分割の仕方は、ロジックコーンを考慮して入力端子から出力端子までフォワードトレースを行うことによって、仮のグループを分割する。
【００３０】
図１５は、実施例にかかる分割の仕方の第２の例においてロジックコーンの一例を示す回路図である。図１５に示すように、フォワードトレースを行う場合、ロジックコーン７９は、前段のスキャンフリップフロップの出力端子から、該出力端子から出力された信号が入力する後段のスキャンフリップフロップの入力端子へ向かって広がる三角形状で示される。図１５においては、一例として、前段のスキャンフリップフロップ７４とその直後の段のスキャンフリップフロップ７３，７６との間のロジックコーンに７９の符号を付す。分割処理部は、Ａ、Ｂ、ＣおよびＤの各入力端子からＷ、Ｘ、ＹおよびＺの各出力端子までフォワードトレースを行って、各ロジックコーンの出力となるスキャンフリップフロップと出力端子を検出する。分割処理部は、検出したスキャンフリップフロップと出力端子にインデックスとして例えばＡ、Ｂ、ＣまたはＤの入力端子名を付ける。図１５においては、各スキャンフリップフロップの中にインデックスが示されており、各出力端子の上にインデックスが示されている。
【００３１】
図１６は、実施例にかかる分割の仕方の第２の例における２分割の候補の一例を示す図表である。図１６に示す例は、図９に示す回路７１を２分割にする例である。図１６に示す図表１０１のように、２分割の場合、７個のグループ分けのケースがある。７個のケースの中から一つを選択する仕方は、上述したバックトレースを行って仮のグループを分割する場合と同様である。図１６に示す図表１０１の例では、ケース３が選択される。従って、図９に示す回路７１は、ＡまたはＢのインデックスが付けられた９個のスキャンフリップフロップのグループ＃１と、ＣまたはＤのインデックスが付けられた８個のスキャンフリップフロップのグループ＃２と、に分割される。
【００３２】
図１７は、実施例にかかる分割の仕方の第２の例における２分割の結果の一例を示す回路図である。図１７において、破線で囲む領域は、グループ＃１の領域１０２であり、一点鎖線で囲む領域は、グループ＃２の領域１０３である。太い実線は、グループ＃１の領域１０２におけるスキャンチェーン１０４であり、太い点線は、グループ＃２の領域１０３におけるスキャンチェーン１０５である。図１７に示すように、グループ＃１では、４個のスキャンフリップフロップが削減された状態、グループ＃２では、５個のスキャンフリップフロップが削減された状態で、それぞれ試験を行うことができる。なお、３以上の領域に分割する場合も同様である。分割の仕方の第２の例は、例えば分割処理部Ｂ５２において行われる処理である。
【００３３】
・仮のグループの分割の仕方＜３＞
一例として、図１８に示す回路１１１を例にして、第３の分割の仕方を説明する。第３の分割の仕方は、特定ステージのスキャンチェーンが前後のグループで重複するように、仮のグループを分割する。
【００３４】
図１８は、実施例にかかる分割の仕方の第３の例における２分割の結果の一例を示す回路図である。図１８に示す回路１１１において、Ａ、Ｂ、Ｃ、Ｄ、Ｅ、Ｆ、ＧおよびＨは、入力端子である。ＸおよびＹは、出力端子である。図１８に示すように、分割処理部は、各出力端子から各入力端子までバックトレースを行って、各スキャンフリップフロップおよび各入力端子に各出力端子名のインデックス段数として、各出力端子から各入力端子へ向かって遡った段数を付ける。例えば、図１８に示す回路１１１では、出力端子Ｘに接続された回路部１１２に接続されたスキャンフリップフロップ１１３は、出力端子Ｘから１段遡るので、Ｘのインデックス段数として１を有する。スキャンフリップフロップ１１３（Ｘのインデックス段数：１）に接続された回路部１１４に接続されたスキャンフリップフロップ１１５は、出力端子Ｘからさらに１段遡るので、Ｘのインデックス段数として２を有する。このように、出力端子から入力端子へ向かって１段遡るたびに、当該出力端子名のインデックス段数が１ずつ増える。出力端子Ｙについても同様である。図１８においては、各スキャンフリップフロップの中にインデックス段数が示されており、各出力端子および各入力端子の上にインデックス段数が示されている。各出力端子では、インデックス段数は０である。インデックス段数の表記において、上段は出力端子Ｘのインデックス段数であり、下段は出力端子Ｙのインデックス段数である。複数の経路で遡って同一のスキャンフリップフロップに到達する場合、同一のスキャンフリップフロップが同じ出力端子名のインデックス段数として複数の値を有することになる。その場合には、分割処理部は、同じ出力端子名の複数のインデックス段数の中から最大のインデックス段数を選択する。例えば、図１８に示す回路１１１では、入力端子Ａに接続された回路部１１６に接続されたスキャンフリップフロップ１１７は、出力端子Ｘから遡るとわかるように、Ｘのインデックス段数として４と５と６を有する。この場合、Ｘのインデックス段数として６が選択される。なお、分割処理部は、各入力端子から各出力端子までフォワードトレースを行い、各スキャンフリップフロップおよび各出力端子に各入力端子名のインデックス段数を付してもよい。
【００３５】
分割処理部は、回路全体に各出力端子名のインデックス段数が付されると、その中から最大のインデックス段数を選択する。例えば、図１８に示す回路１１１では、最大のインデックス段数は、Ａ、ＢまたはＤの入力端子におけるＸのインデックス段数の７かＹのインデックス段数の７である。従って、分割処理部は、例えばＸのインデックス段数の７を選択する（Ｙのインデックス段数の７を選択してもよい）。Ｎを２以上の整数とするとき、仮のグループをＮ個に分割するには、入力端子を含めて最大段数が（２Ｎ＋１）段以上であるのが好ましい。分割処理部は、Ｘの最大のインデックス段数Ｘｍａｘの［ｉｎｔ（Ｘｍａｘ／Ｎ）＋１］を求める。ここで、ｉｎｔは、小数点以下を切り捨てることを意味する。最大のインデックス段数としてＹのインデックス段数Ｙｍａｘが選択される場合には、Ｘｍａｘに代えてＹｍａｘとなる。図１８に示す回路１１１では、Ｘｍａｘが７であるので、［ｉｎｔ（７／２）＋１＝４］となる。従って、分割処理部は、Ｘのインデックス段数が４であるスキャンフリップフロップまたは入力端子を全て選択する。また、Ｘのインデックス段数が４であるスキャンフリップフロップは、Ｙのインデックス段数として４を有するので、分割処理部は、Ｙのインデックス段数が４であるスキャンフリップフロップまたは入力端子を全て選択する。便宜上、Ｘのインデックス段数として４を有するスキャンフリップフロップとＹのインデックス段数として４を有するスキャンフリップフロップとをグループ＃２のインデックスのスキャンフリップフロップと称する。Ｘのインデックス段数として４を有する入力端子とＹのインデックス段数として４を有する入力端子とをグループ＃２のインデックスの入力端子と称する。図１８に示す回路１１１において、グループ＃２のインデックスのスキャンフリップフロップに１１８〜１２２の符号を付し、グループ＃２のインデックスの入力端子に１２３の符号を付す。
【００３６】
また、分割処理部は、［ｉｎｔ（Ｘｍａｘ／Ｎ）］を求める。図１８に示す回路１１１では、［ｉｎｔ（７／２）＝３］となる。従って、分割処理部は、Ｘのインデックス段数が３であるスキャンフリップフロップ、入力端子または出力端子を全て選択する。また、Ｘのインデックス段数が３であるスキャンフリップフロップは、Ｙのインデックス段数として３を有するので、分割処理部は、Ｙのインデックス段数が３であるスキャンフリップフロップ、入力端子または出力端子を全て選択する。便宜上、Ｘのインデックス段数として３を有するスキャンフリップフロップとＹのインデックス段数として３を有するスキャンフリップフロップとをグループ＃１のインデックスのスキャンフリップフロップと称する。Ｘのインデックス段数として３を有する入力端子とＹのインデックス段数として３を有する入力端子とをグループ＃１のインデックスの入力端子と称する。Ｘのインデックス段数として３を有する出力端子とＹのインデックス段数として３を有する出力端子とをグループ＃１のインデックスの出力端子と称する。図１８に示す回路１１１において、グループ＃１のインデックスのスキャンフリップフロップに１２４〜１２７の符号を付す。図１８に示す回路１１１には、グループ＃１のインデックスの入力端子およびグループ＃１のインデックスの出力端子は、ない。
【００３７】
分割処理部は、グループ＃１のインデックスのスキャンフリップフロップ１２４〜１２７、グループ＃１のインデックスの入力端子（図示例では、ない）またはグループ＃１のインデックスの出力端子（図示例では、ない）から回路１１１の入力端子までバックトレースを行ってぶつかる全てのものをグループ＃１とする。図１８において、破線で囲む領域は、グループ＃１の領域１２８である。分割処理部は、回路１１１の出力端子からグループ＃２のインデックスのスキャンフリップフロップ１１８〜１２２またはグループ＃２のインデックスの入力端子１２３までバックトレースを行ってぶつかる全てのものと、グループ＃２のインデックスのスキャンフリップフロップ１１８〜１２２またはグループ＃２のインデックスの入力端子１２３から回路１１１の出力端子までフォワードトレースを行ってぶつかる出力端子と、をグループ＃２とする。図１８において、一点鎖線で囲む領域は、グループ＃２の領域１２９である。分割数を２からＮに拡張した場合も同様である。
【００３８】
図１９は、実施例にかかる分割の仕方の第３の例におけるＮ分割の一例を示す回路図である。仮のグループをＮ分割する場合、分割処理部は、バックトレースによって回路全体に各出力端子名（フォワードトレースの場合は、各入力端子名）のインデックス段数を付す。分割処理部は、最大のインデックス段数（例えば、Ｘｍａｘとする）の［ｉｎｔ（Ｘｍａｘ／Ｎ）×（Ｎ−１）＋１］、［ｉｎｔ（Ｘｍａｘ／Ｎ）×（Ｎ−１）］、［ｉｎｔ（Ｘｍａｘ／Ｎ）×（Ｎ−２）＋１］、［ｉｎｔ（Ｘｍａｘ／Ｎ）×（Ｎ−２）］、［ｉｎｔ（Ｘｍａｘ／Ｎ）×（Ｎ−３）＋１］、［ｉｎｔ（Ｘｍａｘ／Ｎ）×（Ｎ−３）］、・・・、［ｉｎｔ（Ｘｍａｘ／Ｎ）＋１および［ｉｎｔ（Ｘｍａｘ／Ｎ）］を求める。
【００３９】
図１９に示すように、分割処理部は、出力端子１３１から［ｉｎｔ（Ｘｍａｘ／Ｎ）］のスキャンフリップフロップ１３２までバックトレースしてぶつかる回路部１３３ａ，１３３ｂまたは入力端子１３４と、［ｉｎｔ（Ｘｍａｘ／Ｎ）］のスキャンフリップフロップ１３２からフォワードトレースしてぶつかる回路部１３３ｂ，１３３ａまたは出力端子１３５と、を一つのグループとする。分割処理部は、［ｉｎｔ（Ｘｍａｘ／Ｎ）＋１］のスキャンフリップフロップ１３６から［ｉｎｔ（Ｘｍａｘ／Ｎ）×２］のスキャンフリップフロップ１３７までバックトレースしてぶつかる回路部１３３ｂ，１３８ａ，１３８ｂまたは入力端子１３４，１３９，１４０と、［ｉｎｔ（Ｘｍａｘ／Ｎ）×２］のスキャンフリップフロップ１３７から［ｉｎｔ（Ｘｍａｘ／Ｎ）＋１］のスキャンフリップフロップ１３６までフォワードトレースしてぶつかる回路部１３８ｂ，１３８ａ，１３３ｂまたは出力端子１４１，１４２，１３５と、を一つのグループとする。間のグループについては省略するが、分割処理部は、［ｉｎｔ（Ｘｍａｘ／Ｎ）×（Ｎ−２）＋１］のスキャンフリップフロップ１４３から［ｉｎｔ（Ｘｍａｘ／Ｎ）×（Ｎ−１）］のスキャンフリップフロップ１４４までバックトレースしてぶつかる回路部１４５ａ，１４５ｂ，１４５ｃまたは入力端子１４６，１４７，１４８と、［ｉｎｔ（Ｘｍａｘ／Ｎ）×（Ｎ−１）］のスキャンフリップフロップ１４４から［ｉｎｔ（Ｘｍａｘ／Ｎ）×（Ｎ−２）＋１］のスキャンフリップフロップ１４３までフォワードトレースしてぶつかる回路部１４５ｃ，１４５ｂ，１４５ａまたは出力端子１４９，１５０，１５１と、を一つのグループとする。分割処理部は、［ｉｎｔ（Ｘｍａｘ／Ｎ）×（Ｎ−１）＋１］のスキャンフリップフロップ１５２から入力端子１５３までバックトレースしてぶつかる回路部１４５ｃ，１５４または入力端子１４８と、入力端子１５３から［ｉｎｔ（Ｘｍａｘ／Ｎ）×（Ｎ−１）＋１］のスキャンフリップフロップ１５２までフォワードトレースしてぶつかる回路部１５４，１４５ｃまたは出力端子１５５，１４９と、を一つのグループとする。分割の仕方の第３の例は、例えば分割処理部Ｃ５３において行われる処理である。
【００４０】
上述した＜１＞〜＜３＞の各分割の仕方は、フィードバックを有する回路に対しても同様に適用できる。一例として、図２０および図２１に示す回路に対して上述した分割の仕方＜１＞を適用した場合について説明する。
【００４１】
図２０および図２１は、実施例にかかる分割の仕方の第１の例によりインデックスを付した一例を示す回路図である。図２０に示す回路１６１と図２１に示す回路１６２は、図中の（１）〜（３）で接続されている。インデックスの表記において、「Ｚ３：０」は、Ｚ０、Ｚ１、Ｚ２およびＺ３の出力端子のいずれかに関係することを表している。また、「［３：０］」という表記は、独立して４本の配線があることを表している。
【００４２】
図２２および図２３は、図２０および図２１に示す回路に対する２分割の候補の一例を示す図表である。図２２および図２３に示す図表１６３，１６４のように、２分割の場合、３１個のグループ分けのケースがある。この中から、分割処理部は、仮のグループの分割の仕方＜１＞に従ってケース１３を選択する。
【００４３】
図２４は、図２０および図２１に示す回路におけるスキャンチェーンの一例を示す回路図である。図２４において、太い実線は、グループ＃１の領域におけるスキャンチェーン１６５であり、太い点線は、グループ＃２の領域におけるスキャンチェーン１６６である。図２０および図２１に示す回路１６１，１６２には３６個のスキャンフリップフロップが含まれているので、図２４に示すように、グループ＃１およびグループ＃２のいずれも、９個のスキャンフリップフロップが削減された状態で試験を行うことができる。
【００４４】
・複数のスキャンチェーンに接続可能なスキャンフリップフロップの構成＜１＞
図２５は、実施例にかかるスキャンフリップフロップの構成の第１の例を示す回路図である。図２５に示すように、集積回路であるスキャンフリップフロップ１７１は、第１のアンド回路１７２、第２のアンド回路１７３、・・・、第Ｎのアンド回路１７４、オア回路１７５、ノア回路１７６、セレクタ１７７およびフリップフロップ１７８を備えている。第１のアンド回路１７２は、第１のスキャンイン端子ＳｃａｎＩｎ１に入力される試験データと第１のスキャンモード端子ＳｃａｎＭｏｄｅ１に入力される選択信号とのアンド論理を出力する。第２のアンド回路１７３は、第２のスキャンイン端子ＳｃａｎＩｎ２に入力される試験データと第２のスキャンモード端子ＳｃａｎＭｏｄｅ２に入力される選択信号とのアンド論理を出力する。第Ｎのアンド回路１７４は、第Ｎのスキャンイン端子ＳｃａｎＩｎＮに入力される試験データと第Ｎのスキャンモード端子ＳｃａｎＭｏｄｅＮに入力される選択信号とのアンド論理を出力する。オア回路１７５は、第１のアンド回路１７２、第２のアンド回路１７３および第Ｎのアンド回路１７４の各出力のオア論理を出力する。ノア回路１７６は、第１のスキャンモード端子ＳｃａｎＭｏｄｅ１、第２のスキャンモード端子ＳｃａｎＭｏｄｅ２および第Ｎのスキャンモード端子ＳｃａｎＭｏｄｅＮにそれぞれ入力される選択信号のノア論理を出力する。セレクタ１７７は、ノア回路１７６の出力に基づいて、データ端子Ｄａｔａに通常動作時に入力されるデータまたはオア回路１７５の出力を選択して出力する。フリップフロップ１７８には、セレクタ１７７の出力が入力する。全てのスキャンモード端子に０が入力すると、ノア回路１７６の出力が１となるので、セレクタ１７７は、データ端子Ｄａｔａに入力されるデータをフリップフロップ１７８へ出力する。いずれか一つのスキャンモード端子の入力が１であり、その他のスキャンモード端子の入力がすべて０である場合、ノア回路１７６の出力が０となる。従って、セレクタ１７７は、入力が１であるスキャンモード端子に対応するスキャンイン端子の入力データをフリップフロップ１７８へ出力する。スキャンフリップフロップ１７１は、モジュール化されていてもよい。
【００４５】
・複数のスキャンチェーンに接続可能なスキャンフリップフロップの構成＜２＞
図２６は、実施例にかかるスキャンフリップフロップの構成の第２の例を示す回路図である。図２６に示すように、集積回路であるスキャンフリップフロップ１８１は、第１のセレクタ１８２、第２のセレクタ１８３、・・・、第Ｎのセレクタ１８４およびフリップフロップ１８５を備えている。第１のセレクタ１８２は、第１のスキャンモード端子ＳｃａｎＭｏｄｅ１に入力される選択信号に基づいて、データ端子Ｄａｔａに通常動作時に入力されるデータまたは第１のスキャンイン端子ＳｃａｎＩｎ１に入力される試験データを選択して出力する。第２のセレクタ１８３は、第２のスキャンモード端子ＳｃａｎＭｏｄｅ２に入力される選択信号に基づいて、第１のセレクタ１８２の出力または第２のスキャンイン端子ＳｃａｎＩｎ２に入力される試験データを選択して出力する。第Ｎのセレクタ１８４は、第Ｎのスキャンモード端子ＳｃａｎＭｏｄｅＮに入力される選択信号に基づいて、図示省略する第（Ｎ−１）のセレクタの出力または第Ｎのスキャンイン端子ＳｃａｎＩｎＮに入力される試験データを選択して出力する。フリップフロップ１８５には、第Ｎのセレクタ１８４の出力が入力する。各スキャンモード端子に入力される選択信号の組み合わせによって、各セレクタ１８２，１８３，１８４が切り替わる。最終的に、第Ｎのセレクタ１８４は、データ端子Ｄａｔａへの入力データ、第１のスキャンイン端子ＳｃａｎＩｎ１への入力データ、第２のスキャンイン端子ＳｃａｎＩｎ２への入力データまたは第Ｎのスキャンイン端子ＳｃａｎＩｎＮへの入力データをフリップフロップ１８５へ出力する。スキャンフリップフロップ１８１は、モジュール化されていてもよい。
【００４６】
・スキャンチェーンの生成方法
図２７は、実施例にかかるスキャンチェーンの生成方法を示すフローチャートである。図２７に示すように、スキャンチェーンを生成する処理が開始されると、まず、集積回路の回路データとクロック情報が入力される（ステップＳ１１）。次いで、回路データとクロック情報に基づいてクロックドメインが解析され、回路内の各フリップフロップにクロックがマッピングされる（ステップＳ１２）。次いで、クロックドメインの解析結果に基づいて、同じクロックで動作するフリップフロップごとに仮のグループが生成される（ステップＳ１３）。次いで、仮のグループごとに仮のスキャンチェーンが生成される（ステップＳ１４）。次いで、各仮のグループに対して電力解析用のテストパターンが生成される（ステップＳ１５）。次いで、仮のグループごとに電力解析用のテストパターンを用いて仮のグループを動作させたときの消費電力が解析される（ステップＳ１６）。次いで、仮のグループごとに仮のグループを動作させたときの消費電力が電力許容値を超えるか否かを判定する（ステップＳ１７）。仮のグループを動作させたときの消費電力が電力許容値を超える場合（ステップＳ１７：Ｙｅｓ）、上述した仮のグループの分割の仕方の＜１＞、＜２＞または＜３＞などの種々の分割の仕方に従って、仮のグループに含まれる複数のフリップフロップが複数のグループに分割される（ステップＳ１８）。＜１＞、＜２＞または＜３＞などの種々の分割の仕方のそれぞれに対して、例えば後述するような２通りの手順が行われる。種々の分割の仕方が実行されると、複数の分割結果が得られる。複数の分割結果の中から、分割により新たに生成されたグループの数（分割数）が例えば一番少ないものが選択される。複数の分割結果の中に、分割数が一番少ないものが複数あるときには、その中から、仮のグループの分割により新たに生成された複数のグループに重複して含まれるスキャンフリップフロップの数が一番少ないものが選択される（ステップＳ１９）。次いで、複数のグループに重複して含まれるスキャンフリップフロップが、複数のスキャンチェーンに切り替えによって接続可能な構成のスキャンフリップフロップに変更される（ステップＳ２０）。次いで、ステップＳ１４に戻り、グループごとに仮のスキャンチェーンが生成される（ステップＳ１４）。そして、ステップＳ１７で消費電力が電力許容値を超えないようになるまで、ステップＳ１４〜ステップＳ２０が繰り返される。ステップＳ１７で消費電力が電力許容値を超えないようになったら（ステップＳ１７：Ｎｏ）、そのときのグループを最終的なグループとし、その最終的なグループに対してスキャンチェーンが生成される（ステップＳ２１）。ステップＳ２１でスキャンチェーンが生成されたら、スキャンチェーンを生成する一連の処理が終了する。
【００４７】
・分割の手順＜１＞
図２８は、実施例にかかる分割の手順の第１の例を示すフローチャートである。第１の例は、全てのグループの消費電力が電力許容値を超えないようになるまで分割数を増やしながら回路全体を分割し直す方法である。図２８に示すように、仮のグループを分割する処理が開始されると、まず、例えば前記ステップＳ１６の解析によって得られた仮のグループの消費電力が電力許容値の何倍であるか、ということに基づいて、仮のグループの分割数Ｎが決められる。例えば、仮のグループの消費電力が電力許容値の２倍を超え、かつ３倍未満であれば、分割数Ｎは３である。仮のグループの消費電力が電力許容値の３倍を超え、かつ４倍未満であれば、分割数Ｎは４である。このように、電力許容値に対する仮のグループの消費電力の倍率の小数点以下を切り上げた整数倍が分割数となる。分割数Ｎが決まると、仮のグループに対してＮ分割が実施される（ステップＳ３１）。次いで、分割されてできた各グループに対して、前記ステップＳ１４〜ステップＳ１６と同様にして消費電力が解析される（ステップＳ３２）。次いで、各グループの消費電力が電力許容値を超えるか否かが判定される（ステップＳ３３）。一つ以上のグループの消費電力が電力許容値を超える場合（ステップＳ３３：Ｙｅｓ）、分割数Ｎが１大きい値にされて（ステップＳ３４）、ステップＳ３１からの処理が繰り返される。ステップＳ３３で、消費電力が電力許容値を超えるグループがなくなると（ステップＳ３３：Ｎｏ）、分割の手順の一連の処理が終了する。
【００４８】
・分割の手順＜２＞
図２９は、実施例にかかる分割の手順の第２の例を示すフローチャートである。第２の例は、消費電力が電力許容値を超えないグループについてはそのままとし、消費電力が電力許容値を超えるグループを分割する方法である。図２９に示すように、仮のグループを分割する処理が開始されると、まず、上述した分割の手順＜１＞のステップＳ３１〜ステップＳ３３と同様に、仮のグループの分割数Ｎが決められ、仮のグループに対してＮ分割が実施される（ステップＳ４１）。分割数Ｎの決め方は、分割の手順＜１＞の場合と同様である。次いで、消費電力が解析される（ステップＳ４２）。次いで、各グループの消費電力が電力許容値を超えるか否かが判定される（ステップＳ４３）。ステップＳ４３で、消費電力が電力許容値を超えるグループがない場合（ステップＳ４３：Ｎｏ）、分割の手順の一連の処理が終了する。消費電力が電力許容値を超えるグループがある場合（ステップＳ４３：Ｙｅｓ）、消費電力が電力許容値を超えるグループに対してＭ分割が実施される（ステップＳ４４）。分割数Ｍの決め方は、分割の手順＜１＞における分割数Ｎの決め方と同様である。次いで、分割の手順＜１＞のステップＳ３２〜ステップＳ３３と同様に、Ｍ分割されてできた各グループの消費電力が解析される（ステップＳ４５）。次いで、各グループの消費電力が電力許容値を超えるか否かが判定される（ステップＳ４６）。ステップＳ４６で、消費電力が電力許容値を超えるグループがない場合（ステップＳ４６：Ｎｏ）、分割の手順の一連の処理が終了する。消費電力が電力許容値を超えるグループがある場合（ステップＳ４６：Ｙｅｓ）、ステップＳ４４〜ステップＳ４６の処理が繰り返される。
【００４９】
・集積回路の設計手順
図３０は、集積回路の設計処理手順の一例を示すフローチャートである。図３０に示すように、まず、ＲＴＬ（Ｒｅｇｉｓｔｅｒ  Ｔｒａｎｓｆｅｒ  Ｌｅｖｅｌ）で記述されたデータが入力される（ステップＳ５１）。ＲＴＬデータには、Ｒｅｇｉｓｔｅｒ−Ｔｏ−Ｒｅｇｉｓｔｅｒのデータの流れと、その間の論理が記述されている。ＲＴＬデータには、実際の回路を構成するゲートやフリップフロップなどの物理的な実体がない。次いで、論理合成処理が行われる（ステップＳ５２）。論理合成処理を実施することによって、ＲＴＬの記述が、物理的な対象を有するゲートレベルのネットリストにマッピングされ、ネットリストが生成される（ステップＳ５３）。次いで、テスト容易化設計（Ｄｅｓｉｇｎ  Ｆｏｒ  Ｔｅｓｔ）が行われる（ステップＳ５４）。テスト容易化設計では、例えば図２７〜図２９に示す手順に従ってスキャンチェーンが生成される。次いで、レイアウト処理や配置配線処理が実施される（ステップＳ５５）。
【００５０】
実施例２によれば、集積回路が実際に動作するときのロジックコーンを考慮して、複数のフリップフロップが、複数のフリップフロップのうちの一部のフリップフロップが複数のグループに含まれるように、分割される。あるいは、複数のフリップフロップが、前後のグループで一部重なるように分割される。このように分割されることによって、各グループは、他のグループから受ける影響や他のグループへ及ぼす影響を考慮して動作することになる。従って、実施例１と同様に、分割されたグループ間の試験を行えるようにスキャンチェーンを生成することができる。また、従来、ブロックを分割する際に行っていたスキャンクロックの変更が不要となる。また、スキャンフリップフロップが複数のスキャンイン端子と複数のスキャンモード端子を有するので、スキャンモード端子への選択信号を制御することによって、複数のグループに重複して含まれるスキャンフリップフロップを複数のスキャンチェーンに切り替えて接続することができる。
【００５１】
なお、上述したスキャンチェーンの生成方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。このプログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。またこのプログラムは、インターネット等のネットワークを介して配布することが可能な伝送媒体であってもよい。
【００５２】
また、上述した試験装置は、スタンダードセルやストラクチャードＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）などの特定用途向けＩＣ（ＡＳＩＣ）やＦＰＧＡなどのＰＬＤ（Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｄｅｖｉｃｅ）によっても実現することができる。具体的には、例えば、上述した試験装置の入力部１１、仮生成部１２、解析部１３、分割部１４および生成部１５をＨＤＬ記述によって機能定義し、そのＨＤＬ記述を論理合成してＡＳＩＣやＰＬＤに与えることにより、試験装置を製造することができる。
【００５３】
上述した実施例１、２に関し、さらに以下の付記を開示する。
【００５４】
（付記１）集積回路の回路データを入力する入力ステップと、該回路データに基づいて複数のフリップフロップを含む仮のスキャンチェーンを生成する仮生成ステップと、該仮のスキャンチェーンを動作させたときの消費電力が許容値を超えるか否かを解析する解析ステップと、該仮のスキャンチェーンを動作させたときの消費電力が許容値を超える場合に、該集積回路が実際に動作するときの信号の伝達経路に基づいて、該仮のスキャンチェーンに含まれる複数のフリップフロップを、該複数のフリップフロップのうちの一部のフリップフロップが複数のグループに含まれるように、複数のグループに分割する分割ステップと、該複数のグループに含まれるフリップフロップを該複数のグループのそれぞれに生成されるスキャンチェーンに接続して該グループごとにスキャンチェーンを生成する生成ステップと、を含むことを特徴とするスキャンチェーンの生成方法。
【００５５】
（付記２）前記分割ステップでは、前記集積回路が実際に動作するときに前記集積回路の各出力端子から出力される信号を該出力端子から前記集積回路の入力端子まで遡って辿るときに該信号が経由する前記フリップフロップをまとめて一つの単位とし、該単位を該出力端子ごとに求め、複数の該単位を組み合わせて前記複数のグループを生成することを特徴とする付記１に記載のスキャンチェーンの生成方法。
【００５６】
（付記３）前記分割ステップでは、前記集積回路が実際に動作するときに前記集積回路の各入力端子から入力される信号を該入力端子から前記集積回路の出力端子まで辿るときに該信号が経由する前記フリップフロップをまとめて一つの単位とし、該単位を該出力端子ごとに求め、複数の該単位を組み合わせて前記複数のグループを生成することを特徴とする付記１に記載のスキャンチェーンの生成方法。
【００５７】
（付記４）前記分割ステップでは、前記集積回路が実際に動作するときに前記集積回路の各出力端子から出力される信号を該出力端子から前記集積回路の入力端子まで遡って辿るときに該信号が経由する前記フリップフロップの個数を数え、該個数の最大値ｊが４以上であるときに３以上［ｊ−１］以下の値ｋに対して、該個数がｋ個までのグループと、該個数が［ｋ−１］個以上のグループと、を生成することを特徴とする付記１に記載のスキャンチェーンの生成方法。
【００５８】
（付記５）コンピュータを、メモリから集積回路の回路データを読み出して演算処理部に入力する入力部、該演算処理部で該回路データを演算処理して複数のフリップフロップを含む仮のスキャンチェーンを生成する仮生成部、該演算処理部で該回路データを演算処理して該仮のスキャンチェーンを動作させたときの消費電力が許容値を超えるか否かを解析する解析部、該仮のスキャンチェーンを動作させたときの消費電力が許容値を超える場合に、該演算処理部で該回路データを演算処理して、前記集積回路が実際に動作するときの信号の伝達経路に基づいて、該仮のスキャンチェーンに含まれる複数のフリップフロップを、該複数のフリップフロップのうちの一部のフリップフロップが複数のグループに含まれるように、複数のグループに分割する分割部、該演算処理部で該回路データを演算処理して該複数のグループに含まれるフリップフロップを該複数のグループのそれぞれに生成されるスキャンチェーンに接続して該グループごとにスキャンチェーンを生成する生成部、として機能させることを特徴とするスキャンチェーンの生成プログラム。
【００５９】
（付記６）前記分割部は、前記集積回路が実際に動作するときに前記集積回路の各出力端子から出力される信号を該出力端子から前記集積回路の入力端子まで遡って辿るときに該信号が経由する前記フリップフロップをまとめて一つの単位とし、該単位を該出力端子ごとに求め、複数の該単位を組み合わせて前記複数のグループを生成することを特徴とする付記５に記載のスキャンチェーンの生成プログラム。
【００６０】
（付記７）前記分割部は、前記集積回路が実際に動作するときに前記集積回路の各入力端子から入力される信号を該入力端子から前記集積回路の出力端子まで辿るときに該信号が経由する前記フリップフロップをまとめて一つの単位とし、該単位を該出力端子ごとに求め、複数の該単位を組み合わせて前記複数のグループを生成することを特徴とする付記５に記載のスキャンチェーンの生成プログラム。
【００６１】
（付記８）前記分割部は、前記集積回路が実際に動作するときに前記集積回路の各出力端子から出力される信号を該出力端子から前記集積回路の入力端子まで遡って辿るときに該信号が経由する前記フリップフロップの個数を数え、該個数の最大値ｊが４以上であるときに３以上［ｊ−１］以下の値ｋに対して、該個数がｋ個までのグループと、該個数が［ｋ−１］個以上のグループと、を生成することを特徴とする付記５に記載のスキャンチェーンの生成プログラム。
【００６２】
（付記９）集積回路の回路データを入力する入力部と、前記回路データに基づいて複数のフリップフロップを含む仮のスキャンチェーンを生成する仮生成部と、該仮のスキャンチェーンを動作させたときの消費電力が許容値を超えるか否かを解析する解析部と、該仮のスキャンチェーンを動作させたときの消費電力が許容値を超える場合に、前記集積回路が実際に動作するときの信号の伝達経路に基づいて、該仮のスキャンチェーンに含まれる複数のフリップフロップを、該複数のフリップフロップのうちの一部のフリップフロップが複数のグループに含まれるように、複数のグループに分割する分割部と、該複数のグループに含まれるフリップフロップを該複数のグループのそれぞれに生成されるスキャンチェーンに接続して該グループごとにスキャンチェーンを生成する生成部と、を備えることを特徴とする集積回路の試験装置。
【００６３】
（付記１０）前記分割部は、前記集積回路が実際に動作するときに前記集積回路の各出力端子から出力される信号を該出力端子から前記集積回路の入力端子まで遡って辿るときに該信号が経由する前記フリップフロップをまとめて一つの単位とし、該単位を該出力端子ごとに求め、複数の該単位を組み合わせて前記複数のグループを生成することを特徴とする付記９に記載の集積回路の試験装置。
【００６４】
（付記１１）前記分割部は、前記集積回路が実際に動作するときに前記集積回路の各入力端子から入力される信号を該入力端子から前記集積回路の出力端子まで辿るときに該信号が経由する前記フリップフロップをまとめて一つの単位とし、該単位を該出力端子ごとに求め、複数の該単位を組み合わせて前記複数のグループを生成することを特徴とする付記９に記載の集積回路の試験装置。
【００６５】
（付記１２）前記分割部は、前記集積回路が実際に動作するときに前記集積回路の各出力端子から出力される信号を該出力端子から前記集積回路の入力端子まで遡って辿るときに該信号が経由する前記フリップフロップの個数を数え、該個数の最大値ｊが４以上であるときに３以上［ｊ−１］以下の値ｋに対して、該個数がｋ個までのグループと、該個数が［ｋ−１］個以上のグループと、を生成することを特徴とする付記９に記載の集積回路の試験装置。
【００６６】
（付記１３）通常動作時にデータが入力されるデータ端子と、試験時に試験データが入力される複数のスキャンイン端子と、選択信号が入力される複数のスキャンモード端子と、該スキャンモード端子に入力される選択信号に基づいて、該データ端子に入力されるデータ、または該複数のスキャンイン端子に入力される試験データのうちのいずれか一つの試験データを選択するセレクタと、該セレクタの出力データが入力されるフリップフロップと、を備えることを特徴とする集積回路。
【００６７】
（付記１４）前記データ端子、前記複数のスキャンイン端子、前記複数のスキャンモード端子、前記セレクタおよび前記フリップフロップを備えたモジュールであることを特徴とする付記１３に記載の集積回路。
【符号の説明】
【００６８】
１１  入力部
１２  仮生成部
１３  解析部
１４  分割部
１５  生成部
【図１】
2011013159.tif 000003
【図２】
2011013159.tif 000004
【図３】
2011013159.tif 000005
【図４】
2011013159.tif 000006
【図５】
2011013159.tif 000007
【図６】
2011013159.tif 000008
【図７】
2011013159.tif 000009
【図８】
2011013159.tif 000010
【図９】
2011013159.tif 000011
【図１０】
2011013159.tif 000012
【図１１】
2011013159.tif 000013
【図１２】
2011013159.tif 000014
【図１３】
2011013159.tif 000015
【図１４】
2011013159.tif 000016
【図１５】
2011013159.tif 000017
【図１６】
2011013159.tif 000018
【図１７】
2011013159.tif 000019
【図１８】
2011013159.tif 000020
【図１９】
2011013159.tif 000021
【図２０】
2011013159.tif 000022
【図２１】
2011013159.tif 000023
【図２２】
2011013159.tif 000024
【図２３】
2011013159.tif 000025
【図２４】
2011013159.tif 000026
【図２５】
2011013159.tif 000027
【図２６】
2011013159.tif 000028
【図２７】
2011013159.tif 000029
【図２８】
2011013159.tif 000030
【図２９】
2011013159.tif 000031
【図３０】
2011013159.tif 000032