(57)【要約】【課題】複数のスキャンパスを有するスキャンテスト回路のスキャンテスト時間を短縮する。【解決手段】半導体集積回路装置は、複数のスキャンフリップフロップと、セレクタとを備える回路ブロックと、制御回路とを具備する。複数のスキャンフリップフロップは、スキャンテストするときに、スキャンフリップフロップがシフトレジスタ状に接続されて形成される複数のスキャンパスのそれぞれに割り当てられ、複数のスキャンパスと同数の複数の部分スキャンパスを形成する。セレクタは、複数の部分スキャンパスの後段に設けられ、複数の部分スキャンパスをバイバスする。制御回路は、セレクタが複数の部分スキャンパスをバイパスするか否かを制御する。【選択図】図３
2012208000.tif 000002
【特許請求の範囲】
【請求項１】
スキャンテストするときに、スキャンフリップフロップがシフトレジスタ状に接続されて形成される複数のスキャンパスのそれぞれに割り当てられ、前記複数のスキャンパスと同数の複数の部分スキャンパスを形成する複数のスキャンフリップフロップと、
前記複数の部分スキャンパスの後段に設けられ、前記複数の部分スキャンパスをバイバスするセレクタと
を備える回路ブロックと、
前記セレクタが前記複数の部分スキャンパスをバイパスするか否かを制御する制御回路と
を具備する
半導体集積回路装置。
【請求項２】
前記セレクタは、前記複数の部分スキャンパスの入力ノードと出力ノードとに接続され、前記複数の部分スキャンパスをバイパスするときは、前記入力ノードから入力されるデータを選択して出力し、前記複数の部分スキャンパスを経由するときは前記出力ノードから入力されるデータを選択して出力する
請求項１に記載の半導体集積回路装置。
【請求項３】
前記制御回路は、前記回路ブロック毎の前記セレクタに接続され、前記セレクタを制御する値を保持するフリップフロップを備える
請求項１または請求項２に記載の半導体集積回路装置。
【請求項４】
前記フリップフロップは、外部から入力されるデータをシフトして保持するシフトレジスタを形成する
請求項３に記載の半導体集積回路装置。
【請求項５】
前記制御回路は、前記回路ブロック毎の動作／非動作を設定するボンディングオプション端子に印加される信号を前記セレクタの選択制御ノードに供給するバッファ回路を備える
請求項１または請求項２に記載の半導体集積回路装置。
【請求項６】
前記複数の部分スキャンパスは、第１の部分スキャンパスと第２の部分スキャンパスとを含み、前記第１の部分スキャンパスの長さを示すスキャンフリップフロップの数と、前記第２の部分スキャンパスの長さを示すスキャンフリップフロップの数との差が１以下である
請求項１から請求項５のいずれかに記載の半導体集積回路装置。
【請求項７】
前記制御回路は、所定の故障検出率に達するテストパターンデータによるスキャンテストを終えると、前記所定の故障検出率に達した前記回路ブロックの全ての前記部分スキャンパスをバイパスする
請求項１から請求項６のいずれかに記載の半導体集積回路装置。
【請求項８】
前記制御回路は、前記回路ブロックをスキャンテストするテストパターンデータが所定のパターン数に達したときに、前記回路ブロックの全ての前記部分スキャンパスをバイパスする
請求項１から請求項６のいずれかに記載の半導体集積回路装置。
【請求項９】
前記回路ブロックは、所定の機能を有するマクロ回路を含む
請求項１から請求項８のいずれかに記載の半導体集積回路装置。
【請求項１０】
複数のスキャンパスを使用してスキャンテストを行う半導体集積回路装置のスキャンテスト回路を設計するスキャンテスト設計方法であって、
前記半導体集積回路装置の回路ブロックに含まれる複数のスキャンフリップフロップを前記複数のスキャンパスのそれぞれに割り当てるステップと、
割り当てられた前記スキャンフリップフロップをシフトレジスタ状に接続して前記複数のスキャンパスと同数の複数の部分スキャンパスを設定するステップと、
前記複数の部分スキャンパスのそれぞれの後段に前記複数の部分スキャンパスをバイパスするセレクタを配置するステップと、
前記回路ブロックの前記複数の部分スキャンパスおよび前記セレクタを縦続接続して前記複数のスキャンパスを設定するステップと、
前記セレクタが前記複数の部分スキャンパスをバイパスするか否かを制御する制御回路を生成するステップと
を具備する
スキャンテスト回路設計方法。
【請求項１１】
前記複数の部分スキャンパスは、第１の部分スキャンパスと第２の部分スキャンパスとを含み、
前記割り当てるステップは、前記第１の部分スキャンパスの長さを示すスキャンフリップフロップの数と、前記第２の部分スキャンパスの長さを示すスキャンフリップフロップの数との差が１以下となるように割り当てるステップを含む
請求項１０に記載のスキャンテスト回路設計方法。
【請求項１２】
前記セレクタは、所定の故障検出率に達するテストパターンデータによるスキャンテストを終えると、前記所定の故障検出率に達した前記回路ブロックの全ての前記部分スキャンパスをバイパスするように、前記部分スキャンパスの入力ノードおよび出力ノードと接続される
請求項１０または請求項１１に記載のスキャンテスト回路設計方法。
【請求項１３】
複数のスキャンパスを使用してスキャンテストを行う半導体集積回路装置のスキャンテスト回路を設計するスキャンテスト設計装置であって、
前記半導体集積回路装置の回路ブロックに含まれる複数のスキャンフリップフロップを前記複数のスキャンパスのそれぞれに割り当て、前記複数のスキャンパスと同数の複数の部分スキャンパスを設定する部分スキャンパス生成部と、
前記複数の部分スキャンパスをバイバスするセレクタを前記複数の部分スキャンパスの後段に設けるセレクタ生成部と、
前記セレクタが前記複数の部分スキャンパスをバイパスするか否かを制御する制御回路を設ける制御回路生成部と
を具備する
スキャンテスト回路設計装置。
【請求項１４】
前記複数の部分スキャンパスは、第１の部分スキャンパスと第２の部分スキャンパスとを含み、
前記部分スキャンパス生成部は、前記第１の部分スキャンパスの長さを示すスキャンフリップフロップの数と、前記第２の部分スキャンパスの長さを示すスキャンフリップフロップの数との差が１以下となるように割り当てる
請求項１３に記載のスキャンテスト回路設計装置。
【請求項１５】
前記セレクタは、所定の故障検出率に達するテストパターンデータによるスキャンテストを終えると、前記所定の故障検出率に達した前記回路ブロックの全ての前記部分スキャンパスをバイパスするように、前記部分スキャンパスの入力ノードおよび出力ノードと接続される
請求項１３または請求項１４に記載のスキャンテスト回路設計装置。
【請求項１６】
複数のスキャンパスを使用してスキャンテストを行う半導体集積回路装置のスキャンテスト回路を設計するスキャンテスト設計プログラムであって、
前記半導体集積回路装置の回路ブロックに含まれる複数のスキャンフリップフロップを前記複数のスキャンパスのそれぞれに割り当てるステップと、
割り当てられた前記スキャンフリップフロップをシフトレジスタ状に接続して前記複数のスキャンパスと同数の複数の部分スキャンパスを設定するステップと、
前記複数の部分スキャンパスのそれぞれの後段に前記複数の部分スキャンパスをバイパスするセレクタを配置するステップと、
前記回路ブロックの前記複数の部分スキャンパスおよび前記セレクタを縦続接続して前記複数のスキャンパスを設定するステップと、
前記セレクタが前記複数の部分スキャンパスをバイパスするか否かを制御する制御回路を生成するステップと
をコンピュータに実行させるためのスキャンテスト回路設計プログラム。
【請求項１７】
前記複数の部分スキャンパスは、第１の部分スキャンパスと第２の部分スキャンパスとを含み、
前記割り当てるステップにおいて、前記第１の部分スキャンパスの長さを示すスキャンフリップフロップの数と、前記第２の部分スキャンパスの長さを示すスキャンフリップフロップの数との差が１以下となるように割り当てるステップを
コンピュータに実行させるための請求項１６に記載のスキャンテスト回路設計プログラム。
【請求項１８】
所定の故障検出率に達するテストパターンデータによるスキャンテストを終えると、前記所定の故障検出率に達した前記回路ブロックの全ての前記部分スキャンパスをバイパスするように、前記部分スキャンパスの入力ノードおよび出力ノードと、前記セレクタとを接続するステップを
コンピュータに実行させるための請求項１６または請求項１７に記載のスキャンテスト回路設計プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体集積回路装置のスキャンテスト回路およびそのスキャンテスト回路設計方法、スキャンテスト回路設計装置に関する。
【背景技術】
【０００２】
近年、高集積化・大規模化しているＬＳＩの開発において、ＬＳＩの物理的故障を容易に発見可能なスキャンテスト技術の適用は一般的となっている。しかし、高集積化・大規模化に伴ってスキャンテストに費やされる時間が長くなっている。そのため、スキャンテスト時のテスト時間を短縮可能な技術が求められている。一般的には、スキャンパスを複数に分割し、１スキャンパス当たりのスキャン動作サイクル数を少なくすることによりテスト時間の短縮を図っている。スキャンパスの分割数を増やせばテスト時間を大きく短縮することが可能だが、実際にはテスタで使用可能なテストピンの本数などによって制約されるため、スキャンパスの分割数を無制限に増やすことはできない。すなわち、スキャンパスをさらに分割してテスト時間を短縮することは困難であり、テスト時間を短縮する技術が求められている。
【０００３】
複数の機能マクロ回路を装備する半導体集積回路において、より少ないテストパターンで短時間に半導体集積回路全体の故障検出が可能なスキャンパスの設計を可能にする技術が、特開２００４−２５８７９１号公報に開示されている。図１は、その半導体集積回路のスキャンパス設計方法により設計されたスキャンテスト回路のテスト時の構成図である。
【０００４】
図１に示されように、このスキャンパスでは、機能Ａのマクロ回路６０４に含まれる複数のスキャンフリップフロップ６０６がシリアル接続（縦列接続）されてなるスキャンパスと、機能Ｂのマクロ回路６０５に含まれる複数のスキャンフリップフロップ６０７がシリアル接続されてなるスキャンパスとがシリアル接続されて１本の長いスキャンパスが構成される。
【０００５】
機能マクロ回路６０４に含まれるスキャンフリップフロップ６０６のうちの一部は、機能マクロ回路６０５のスキャンフリップフロップ６０７のうちの一部に接続されている。また、機能マクロ回路６０４のスキャンフリップフロップ６０６のうちの一部は、組み合わせ回路６１３を介して機能マクロ回路６０５のスキャンフリップフロップ６０７のうちの一部に接続されている。
【０００６】
また、機能マクロ回路６０４と機能マクロ回路６０５との間に、セレクタ６５０が配置され、機能マクロ回路６０４のスキャンパス、すなわちスキャンフリップフロップ６０６をバイパスすることが可能となっている。セレクタ６５０は、制御信号生成回路６８０により生成される切替信号に基づいて、適宜切り替え制御される。スキャンパステスト用のスキャンパターンＳＩは、スキャンイン端子６６０から機能マクロ回路６０４のスキャンパスおよびセレクタ６５０に入力される。そして、機能マクロ回路６０５のスキャンパスの出力は、スキャンアウト端子６７０に接続され、テストを実施した後の演算動作結果ＳＯを出力する。
【０００７】
このスキャンパスでは、スキャンパステスト用のスキャンパターンは、自動テストパターン生成プログラム（Ａｕｔｏｍａｔｉｃ  Ｔｅｓｔ  Ｐａｔｔｅｒｎ  Ｇｅｎｅｒａｔｏｒ：以下、ＡＴＰＧと称する。）により生成される。そして、このスキャンパターンに従って各機能マクロ回路や組み合わせ回路が動作し、演算動作結果を出力する。すなわち、スキャンパステスト用のスキャンパターンが入力された各機能マクロ回路及び組み合わせ回路は、各回路の論理に従ってスキャンパステスト用のスキャンパターンを処理し、その処理結果をスキャンフリップフロップ６０６、６０７に出力する。そして、スキャンフリップフロップ６０６、６０７に保持された演算動作結果は、直列に順次シフトしながらスキャンアウト端子６７０から出力される。そして、スキャンアウト端子６７０から順次出力される出力信号ＳＯは、予め準備される各機能マクロ回路及び組み合わせ回路の論理を考慮した期待値と比較され、各機能マクロ回路、組み合わせ回路及びこれらの接続状態の良／不良の判定がなされる。
【０００８】
ここでは、スキャンパステスト用のスキャンパターンとして、機能マクロ回路、組み合わせ回路及びこれらの接続を一括してテスト可能なスキャンパターンが生成され、入力される。すなわち、このスキャンパスでは、機能マクロ回路、組み合わせ回路及びこれらの接続を一括して、すなわちＬＳＩ全体の故障検出を可能に生成したスキャンパステスト用のスキャンパターンを入力することによりＬＳＩ全体の故障検出が一括して行われる。
【０００９】
そして、このスキャンパスでは、セレクタ６５０を備えることにより、故障検出率が所定の検出率に達した機能マクロ回路をバイパスしてテストを行える構成となっている。すなわち、ＡＴＰＧは、スキャンパターンを生成して機能マクロ回路の故障検出率が所定の検出率に達したことを検出すると、セレクタ６５０の選択を切り替えるように制御信号生成回路６８０に信号を供給するデータを生成する。制御信号生成回路６８０は、その信号に基づいて、セレクタ６５０を制御して該当する機能マクロ回路のスキャンフリップフロップをバイパスする。具体的には、制御信号生成回路６８０は、セレクタ６５０に対して切替制御信号を供給する。このスキャンパスは、故障検出率が所定の検出率に達した機能マクロ回路６０４をバイパスする。
【００１０】
これにより、このスキャンパスでは、故障検出率が所定の検出率に達した機能マクロ回路６０４をバイパスしてテストを行うことができる。故障検出の終了した機能マクロ回路をテスト対象から除外するようにスキャンパスの接続を変更するため、より少ないスキャンパターンでテストを行うことができる。したがって、このスキャンパスにおいては、不必要なスキャンパターンの生成が不要となる。また、不要なテスト時間を削減してテスト時間の短縮を図ることが可能である。このように、スキャンテスト回路構成では、ある機能マクロ回路が閾値とする目標故障検出率に達した場合に、当該機能マクロ回路のスキャンテストに必要な分のスキャンパスをバイパスしてテスト時間削減を実現している。
【００１１】
一方、スキャンパスを分割してテスト時間を削減するスキャンテスト手法が一般的に取り入れられている。複数スキャンパスを持つスキャンテスト回路に上記の技術を適用する場合に、テスト時間削減効果が得られないことがある。
【００１２】
図２は、４つの機能マクロ回路６１０、６２０、６３０、６４０を２本のスキャンパス６０１、６０２によってテストする回路に、上記技術を適用した回路のテスト時の構成例を示す。図２に示されるスキャンテスト回路は、図１に示されるスキャンテスト回路を２つ並列に配置した回路に相当する。ここで、機能マクロ回路６１０のスキャンテストは部分スキャンパス６１１にて行われ、機能マクロ回路６２０のスキャンテストは部分スキャンパス６２１にて行われ、機能マクロ回路６３０のスキャンテストは部分スキャンパス６３２にて行われ、機能マクロ回路６４０のスキャンテストは部分スキャンパス６４２にて行われる。
【００１３】
部分スキャンパス６１１と部分スキャンパス６２１とを縦列に接続して１本のスキャンパス６０１が構築される。機能マクロ回路６１０、機能マクロ回路６２０のいずれかが目標故障検出率に達した場合に、部分スキャンパス６１１、６２１をバイパスするためのセレクタ６５１、６５２が、それぞれ部分スキャンパス６１１、６２１の後段に配置される。更に、スキャンパス６０１は、ＬＳＩ外部からスキャンパターンデータＳＩ１を入力するためのスキャンイン端子６６１と、スキャンテスト結果ＳＯ１をＬＳＩ外部で観測するためのスキャンアウト端子６７１とに接続される。したがって、スキャンパス６０１は、スキャンイン端子６６１→部分スキャンパス６１１→セレクタ６５１→部分スキャンパス６２１→セレクタ６５２→スキャンアウト端子６７１の順にデータが流れるスキャンパスとして構成される。つまり、機能マクロ回路６１０、機能マクロ回路６２０は、スキャンパス６０１にてテストされる。
【００１４】
部分スキャンパス６３２と部分スキャンパス６４２とを縦列に接続して１本のスキャンパス６０２が構築される。機能マクロ回路６３０、機能マクロ回路６４０のいずれかが目標故障検出率に達した場合に、部分スキャンパス６３２、６４２をバイパスするためのセレクタ６５３、６５４が、それぞれ部分スキャンパス６３２、６４２の後段に配置される。更に、スキャンパス６０２は、ＬＳＩ外部からスキャンパターンデータＳＩ２を入力するためのスキャンイン端子６６２と、スキャンテスト結果ＳＯ２をＬＳＩ外部で観測するためのスキャンアウト端子６７２とに接続される。したがって、スキャンパス６０２は、スキャンイン端子６６２−部分スキャンパス６３２−セレクタ６５３−部分スキャンパス６４２−セレクタ６５４−スキャンアウト端子６７２の順にデータが流れるスキャンパスとして構成される。つまり、機能マクロ回路６３０、機能マクロ回路６４０は、スキャンパス６０２にてテストされる。
【００１５】
このとき、スキャンパターンデータは、予めＡＴＰＧ（Ａｕｔｏｍａｔｉｃ  Ｔｅｓｔ  Ｐａｔｔｅｒｎ  Ｇｅｎｅｒａｔｏｒ）等の自動生成ツールにより生成される。複数のスキャンパスを持つスキャンテスト回路では、その複数のスキャンパスをパラレル動作させてテストが行われるため、いずれかのスキャンパスがテスト完了したとしても他の全てのスキャンパスがテスト完了しなければ全体でのテスト完了とはならない。つまり、ＬＳＩのスキャンテスト時間は最長スキャンパスのテスト時間に支配される。
【００１６】
図２に示されるスキャンテスト回路の場合、スキャンテスト開始時は、スキャンパス６０１、６０２共に１パターンあたり１６サイクル（スキャンパス上のスキャンフリップフロップが共に１６個であるため）のテスト時間でスキャンテストが行われる。テストが進み、例えば機能マクロ回路６２０が目標故障検出率に達すれば、スキャンパス６０１から部分スキャンパス６２１をバイパスさせる動作が働き、部分スキャンパス６２１のスキャンフリップフロップ８個がバイパスされる。そのため、スキャンパス６０１から１パターンあたり８サイクルを削減できる。しかし、スキャンパス６０２上のスキャンフリップフロップはいずれもバイパスされないため、スキャンパス６０２は１パターンあたり１６サイクル（スキャンパス上のスキャンフリップフロップが共に１６個であるため）のテスト時間が必要なことに変わりはない。この状態では、ＬＳＩのスキャンテスト時間はスキャンパス６０２のテスト時間に支配され、１パターン当たり１６サイクルが必要なままである。そのため、スキャンパス６０１から部分スキャンパス６２１をバイパスさせてもテスト時間短縮の効果が得られない。このように、複数のスキャンパスを持つスキャンテスト回路の場合、機能マクロ回路のスキャンパスをバイパスしてもテスト時間削減効果が得られないことがある。
【００１７】
特開２００４−０７７３５６号公報には、１入力のバッファまたは複数入力の論理回路で構成する組合せ回路およびスキャンフリップフロップを縦続接続したスキャンチェーンのテストを行うためのスキャンチェーン構築方法が開示されている。このスキャンチェーン構築方法では、スキャンフリップフロップそれぞれのデータ入力端に接続される組合せ回路のテストに必要なテストパターン数がそれぞれ算出される。算出テストパターン数に対応してグループ化し、それぞれのグループ内のスキャンフリップフロップをグループ単位にそれぞれバイパスさせるセレクタがグループ間にそれぞれ挿入され、スキャンチェーンが構築される。
【００１８】
また、特開２００４−２８６５４９号公報には、半導体装置のスキャンチェーンのフリップフロップ段数に差が生じている場合に、スキャンテスト時にスキャンチェーンのフリップフロップの段数を平均化して動作させる技術が開示されている。スキャンテスト装置は、フリップフロップ段数の多いスキャンチェーンを分割して部分スキャンチェーンを形成する機能と、部分スキャンチェーンに対してフリップフロップ段数の少ないスキャンチェーンを連結して新たなスキャンチェーンを形成する機能とを備える。
【００１９】
さらに、特開２０００−０９０１３７号公報には、スキャンパスの分割数と各論理ブロックの配置情報、各論理ブロック内のスキャンパステスト対象ＦＦ数を利用して各論理ブロック内に割り当てるスキャンパス分割本数を配線面積が最小になるように決定する設計法が開示されている。このテスト容易化半導体集積回路の設計方法では、ＦＦ総数と、スキャンパス構築本数から均等な長さのスキャンパス１本当たりの長さを計算し、各論理ブロックの仮配置情報から各論理ブロックの隣接関係を求め、各論理ブロックの接続関係の組み合せを洗い出す。この接続関係に基づいてスキャンパスを割り当てていく。ブロック間の配線面積が最小になる各論理ブロックの分割数を対象の集積回路のスキャンパス分割構成とする。
【００２０】
また、特開平０９−００５４０３号公報には、スキャンパステスト法におけるテストパターンを削減する技術が開示されている。スキャンパステスト回路のシフトレジスタを複数の群に分割し、分割した場所にバイパス用セレクタ回路が挿入される。シフトレジスタの分割に対応してフリップフロップ回路のクロック信号にラッチ回路が挿入される。バイパスされた群に属するフリップフロップ回路を作動させないように制御する。
【先行技術文献】
【特許文献】
【００２１】
【特許文献１】特開２００４−２５８７９１号公報
【特許文献２】特開２００４−０７７３５６号公報
【特許文献３】特開２００４−２８６５４９号公報
【特許文献４】特開２０００−０９０１３７号公報
【特許文献５】特開平０９−００５４０３号公報
【発明の概要】
【発明が解決しようとする課題】
【００２２】
本発明は、複数のスキャンパスを有するスキャンテスト回路のスキャンテスト時間を短縮することができる半導体集積回路装置、スキャンテスト設計方法、スキャンテスト回路設計装置を提供する。
【課題を解決するための手段】
【００２３】
以下に、［発明を実施するための形態］で使用される番号・符号を用いて、課題を解決するための手段を説明する。これらの番号・符号は、［特許請求の範囲］の記載と［発明を実施するための形態］との対応関係を明らかにするために付加されたものである。ただし、それらの番号・符号を、［特許請求の範囲］に記載されている発明の技術的範囲の解釈に用いてはならない。
【００２４】
本発明の観点では、半導体集積回路装置は、回路ブロック（１１０、１２０、１３０、１４０、１５０、１６０、１７０）と、制御回路（２００、２０１）とを具備する。回路ブロック（１１０、１２０、１３０、１４０、１５０、１６０、１７０）は、複数のスキャンフリップフロップと、セレクタ（２１１／２１２、２２１／２２２、２３１／２３２、２４１／２４２、２５１／２５２、２６１／２６２、２７１／２７２）とを備える。複数のスキャンフリップフロップは、スキャンテストするときに、スキャンフリップフロップがシフトレジスタ状に接続されて形成される複数のスキャンパス（４０１／４０２、５０１／５０２）のそれぞれに割り当てられ、複数のスキャンパスと同数の複数の部分スキャンパス（１１１／１１２、１２１／１２２、１３１／１３２、１４１／１４２、１５１／１５２、１６１／１６２、１７１／１７２）を形成する。セレクタ（２１１／２１２、２２１／２２２、２３１／２３２、２４１／２４２、２５１／２５２、２６１／２６２、２７１／２７２）は、複数の部分スキャンパスの後段に設けられ、複数の部分スキャンパスをバイバスする。制御回路（２００、２０１）は、セレクタが複数の部分スキャンパスをバイパスするか否かを制御する。
【００２５】
本発明の他の観点では、複数のスキャンパスを使用してスキャンテストを行う半導体集積回路装置のスキャンテスト回路を設計するスキャンテスト回路設計方法は、半導体集積回路装置の回路ブロックに含まれる複数のスキャンフリップフロップを複数のスキャンパスのそれぞれに割り当てるステップと、割り当てられたスキャンフリップフロップをシフトレジスタ状に接続して複数のスキャンパスと同数の複数の部分スキャンパスを設定するステップと、複数の部分スキャンパスのそれぞれの後段に複数の部分スキャンパスをバイパスするセレクタを配置するステップと、回路ブロックの複数の部分スキャンパスおよびセレクタを縦続接続して複数のスキャンパスを設定するステップと、セレクタが複数の部分スキャンパスをバイパスするか否かを制御する制御回路を生成するステップとを具備する。
【００２６】
また、本発明の他の観点では、複数のスキャンパスを使用してスキャンテストを行う半導体集積回路装置のスキャンテスト回路を設計するスキャンテスト回路設計装置は、部分スキャンパス生成部と、セレクタ生成部と、制御回路生成部とを具備する。部分スキャンパス生成部は、半導体集積回路装置の回路ブロックに含まれる複数のスキャンフリップフロップを複数のスキャンパスのそれぞれに割り当て、複数のスキャンパスと同数の複数の部分スキャンパスを設定する。セレクタ生成部は、複数の部分スキャンパスをバイバスするセレクタを複数の部分スキャンパスの後段に設ける。制御回路生成部は、セレクタが複数の部分スキャンパスをバイパスするか否かを制御する制御回路を設ける。
【００２７】
さらに、本発明の他の観点では、複数のスキャンパスを使用してスキャンテストを行う半導体集積回路装置のスキャンテスト回路を設計するテスト回路の設計プログラムは、半導体集積回路装置の回路ブロックに含まれる複数のスキャンフリップフロップを複数のスキャンパスのそれぞれに割り当てるステップと、割り当てられたスキャンフリップフロップをシフトレジスタ状に接続して複数のスキャンパスと同数の複数の部分スキャンパスを設定するステップと、複数の部分スキャンパスのそれぞれの後段に複数の部分スキャンパスをバイパスするセレクタを配置するステップと、回路ブロックの複数の部分スキャンパスおよびセレクタを縦続接続して複数のスキャンパスを設定するステップと、セレクタが複数の部分スキャンパスをバイパスするか否かを制御する制御回路を生成するステップとをコンピュータに実行させる。
【発明の効果】
【００２８】
本発明によれば、複数のスキャンパスを有するテスト回路のスキャンテスト時間を短縮することができる半導体集積回路装置、スキャンテスト回路設計方法、スキャンテスト回路設計装置を提供することができる。
【図面の簡単な説明】
【００２９】
【図１】図１は、従来のスキャンテスト回路のテスト時の構成を示す図である。
【図２】図２は、従来のスキャンテスト回路を並列に配置して複数のスキャンパスを有するスキャンテスト回路のテスト時の構成を示す図である。
【図３】図３は、本発明の第１の実施の形態に係る半導体集積回路装置のスキャンテスト時の構成を示す図である。
【図４】図４は、第１の実施の形態に係るスキャンテスト回路を生成する方法を説明するためのフローチャートである。
【図５】図５は、第１の実施の形態に係る制御信号生成回路の生成処理を説明するためのフローチャートである。
【図６】図６は、第１の実施の形態に係る部分スキャンパスの構築処理を説明するためのフローチャートである。
【図７Ａ】図７Ａは、第１の実施の形態に係る１チップスキャンパスの構築処理の前半を説明するためのフローチャートである。
【図７Ｂ】図７Ｂは、第１の実施の形態に係る１チップスキャンパスの構築処理の後半を説明するためのフローチャートである。
【図８】図８は、第１の実施の形態に係るスキャンテスト回路設計方法を実現するコンピュータシステムの構成を示す図である。
【図９】図９は、第２の実施の形態に係る半導体集積回路装置のスキャンテスト時の構成を示す図である。
【図１０】図１０は、第２の実施の形態に係るスキャンテスト回路を生成する方法を説明するためのフローチャートである。
【図１１】図１１は、第２の実施の形態に係る制御信号生成回路の生成処理を説明するためのフローチャートである。
【図１２】図１２は、第２の実施の形態に係る部分スキャンパスの構築処理を説明するためのフローチャートである。
【図１３Ａ】図１３Ａは、第２の実施の形態に係る１チップスキャンパスの構築処理の前半を説明するためのフローチャートである。
【図１３Ｂ】図１３Ｂは、第２の実施の形態に係る１チップスキャンパスの構築処理の後半を説明するためのフローチャートである。
【発明を実施するための形態】
【００３０】
図面を参照して本発明を実施するための形態が説明される。
【００３１】
（第１の実施の形態）
図３は、本発明の第１の実施の形態に係る半導体集積回路装置のスキャンテスト時の構成を示す図である。半導体集積回路装置は、スキャンテスト対象機能として４つの機能マクロ回路１１０、１２０、１３０、１４０と、制御信号生成回路２００と、セレクタ２１１、２１２、２２１、２２２、２３１、２３２、２４１、２４２とを有する。この半導体集積回路装置には２本のスキャンパス４０１、４０２が設定され、これらの機能マクロ回路に対するスキャンテストが実施される。
【００３２】
機能マクロ回路１１０は、組み合わせ回路１１３と複数のスキャンフリップフロップとを含む。機能マクロ回路１１０に含まれる複数のスキャンフリップフロップは、スキャンパス４０１、４０２に対応して２つに分けられ、スキャンテスト時にそれぞれ部分スキャンパス１１１、１１２を形成する。部分スキャンパス１１１の入力ノードは、スキャンイン端子４１１に接続され、スキャンパターンＳＩ１が入力される。部分スキャンパス１１１の後段には、セレクタ２１１が設けられる。セレクタ２１１の入力ノードａ、ｂは、部分スキャンパス１１１の出力ノード、入力ノードにそれぞれ接続される。また、部分スキャンパス１１２の入力ノードは、スキャンイン端子４１２に接続され、スキャンパターンＳＩ２が入力される。部分スキャンパス１１２の後段には、セレクタ２１２が設けられる。セレクタ２１２の入力ノードａ、ｂは、部分スキャンパス１１２の出力ノード、入力ノードにそれぞれ接続される。したがって、セレクタ２１１、２１２を制御することにより、部分スキャンパス１１１、１１２をバイパスすることができる。
【００３３】
機能マクロ回路１２０は、組み合わせ回路１２３と複数のスキャンフリップフロップとを含む。機能マクロ回路１２０に含まれる複数のスキャンフリップフロップは、スキャンパス４０１、４０２に対応して２つに分けられ、スキャンテスト時にそれぞれ部分スキャンパス１２１、１２２を形成する。部分スキャンパス１２１の入力ノードは、セレクタ２１１の出力ノードｃに接続され、部分スキャンパス１２１の後段には、セレクタ２２１が設けられる。セレクタ２２１の入力ノードａ、ｂは、部分スキャンパス１２１の出力ノード、入力ノードにそれぞれ接続される。また、部分スキャンパス１２２の入力ノードは、セレクタ２１２の出力ノードｃに接続され、部分スキャンパス１２２の後段には、セレクタ２２２が設けられる。セレクタ２２２の入力ノードａ、ｂは、部分スキャンパス１２２の出力ノード、入力ノードにそれぞれ接続される。したがって、セレクタ２２１、２２２を制御することにより、部分スキャンパス１２１、１２２をバイパスすることができる。
【００３４】
機能マクロ回路１３０は、組み合わせ回路１３３と複数のスキャンフリップフロップとを含む。機能マクロ回路１３０に含まれる複数のスキャンフリップフロップは、スキャンパス４０１、４０２に対応して２つに分けられ、スキャンテスト時にそれぞれ部分スキャンパス１３１、１３２を形成する。部分スキャンパス１３１の入力ノードは、セレクタ２２１の出力ノードｃに接続され、部分スキャンパス１３１の後段には、セレクタ２３１が設けられる。セレクタ２３１の入力ノードａ、ｂは、部分スキャンパス１３１の出力ノード、入力ノードにそれぞれ接続される。また、部分スキャンパス１３２の入力ノードは、セレクタ２２２の出力ノードｃに接続され、部分スキャンパス１３２の後段には、セレクタ２３２が設けられる。セレクタ２３２の入力ノードａ、ｂは、部分スキャンパス１３２の出力ノード、入力ノードにそれぞれ接続される。したがって、セレクタ２３１、２３２を制御することにより、部分スキャンパス１３１、１３２をバイパスすることができる。
【００３５】
機能マクロ回路１４０は、組み合わせ回路１４３と複数のスキャンフリップフロップとを含む。機能マクロ回路１４０に含まれる複数のスキャンフリップフロップは、スキャンパス４０１、４０２に対応して２つに分けられ、スキャンテスト時にそれぞれ部分スキャンパス１４１、１４２を形成する。部分スキャンパス１４１の入力ノードは、セレクタ２３１の出力ノードｃに接続され、部分スキャンパス１４１の後段には、セレクタ２４１が設けられる。セレクタ２４１の入力ノードａ、ｂは、部分スキャンパス１４１の出力ノード、入力ノードにそれぞれ接続される。また、部分スキャンパス１４２の入力ノードは、セレクタ２３２の出力ノードｃに接続され、部分スキャンパス１４２の後段には、セレクタ２４２が設けられる。セレクタ２４２の入力ノードａ、ｂは、部分スキャンパス１４２の出力ノード、入力ノードにそれぞれ接続される。したがって、セレクタ２４１、２４２を制御することにより、部分スキャンパス１４１、１４２をバイパスすることができる。セレクタ２４１の出力ノードｃは、スキャンアウト端子４２１に接続され、セレクタ２４２の出力ノードｃはスキャンアウト端子４２２に接続される。スキャンアウト端子４２１、４２２から出力されるスキャンテスト結果ＳＯ１、ＳＯ２は、ＬＳＩ外部で観測される。
【００３６】
制御信号生成回路２００は、スキャンテストを実施する機能マクロ回路数と同数のフリップフロップを有する。すなわち、制御信号生成回路２００は、スキャンテスト対象に対応するフリップフロップ２１０、２２０、２３０、２４０を備える。フリップフロップ２１０、２２０、２３０、２４０は、直列に接続され、所定のクロック信号に応答してデータをシフトするシフトレジスタを形成する。フリップフロップ２１０の入力ノードは、設定入力端子４１３に接続され、外部から設定信号ＰＩを入力する。直列に接続されるフリップフロップ２１０、２２０、２３０、２４０は、設定入力端子４１３から入力される設定信号ＰＩをシフト動作にて各フリップフロップに送り、データが設定可能になっている。フリップフロップ２１０の出力は、セレクタ２１１／２１２の選択制御ノードに接続される。フリップフロップ２２０の出力は、セレクタ２２１／２２２の選択制御ノードに接続される。フリップフロップ２３０の出力は、セレクタ２３１／２３２の選択制御ノードに接続される。フリップフロップ２４０の出力は、セレクタ２４１／２４２の選択制御ノードに接続される。制御信号生成回路２００は、機能マクロ回路１１０、１４０、１２０、１３０のテストに使用されるスキャンパスのいずれかをバイパスするか否かを制御する。なお、図１では、設定入力端子４１３が１本の場合を示している。この場合４つのフリップフロップに値を設定するのに４サイクル必要となり、設定入力端子４１３（ＰＩ）が複数本準備できる場合は、フリップフロップを直列ではなく並列に並べる構成にして、値の設定に必要なサイクルを削減する事も可能である。
【００３７】
したがって、いずれのスキャンパスもバイパスせずに１チップでテストする場合には、スキャンパス４０１では、スキャンイン端子４１１→スキャンパス１１１→セレクタ２１１→スキャンパス１２１→セレクタ２２１→スキャンパス１３１→セレクタ２３１→スキャンパス１４１→セレクタ２４１→スキャンアウト端子４２１の順にスキャンデータが通過する。また、スキャンパス４０２では、スキャンイン端子４１２→スキャンパス１１２→セレクタ２１２→スキャンパス１２２→セレクタ２２２→スキャンパス１３２→セレクタ２３２→スキャンパス１４２→セレクタ２４２→スキャンアウト端子４２２の順にスキャンデータが通過する。
【００３８】
第１の実施の形態に係るテスト回路の動作について説明する。
【００３９】
当該半導体集積回路装置のスキャンテストを実施するユーザは、スキャンテスト開始前に、各機能マクロ回路のスキャンパスをバイパスするための条件として各機能マクロ回路の目標故障検出率を決定しておく。スキャンテストにおけるスキャンパターンデータは、ＡＴＰＧ（Ａｕｔｏｍａｔｉｃ  Ｔｅｓｔ  Ｐａｔｔｅｒｎ  Ｇｅｎｅｒａｔｏｒ）により生成されるが、目標故障検出率に達した機能マクロ回路をバイパスした状態のスキャンパターンデータが生成される。
【００４０】
スキャンテスト開始前に、制御信号生成回路２００のフリップフロップ２１０、２２０、２３０、２４０にセレクタのバイパス制御が無効となるデータが設定される。すなわち、セレクタ２１１、２１２、２２１、２２２、２３１、２３２、２４１、２４２は、それぞれバイパスしない部分スキャンパス１１１、１１２、１２１、１２２、１３１、１３２、１４１、１４２を選択するように設定される。したがって、スキャンテスト開始直後は、バイパスされない前述のスキャンパス４０１、４０２によって全機能マクロ回路に対して故障検出が行われることになる。
【００４１】
その状態を保持したままスキャンイン端子４１１、４１２からスキャンパス４０１、４０２にスキャンパターンデータＳＩ１、ＳＩ２が入力され、テスト結果ＳＯ１、ＳＯ２がスキャンアウト端子４２１、４２２から読み出され、スキャンテストが行われる。
【００４２】
スキャンテスト開始前に設定されたスキャンパスのバイパス条件である目標検出率をいずれかの機能マクロ回路が満たすスキャンパターンデータまで実行されると、制御信号生成回路２００に設定端子４１３から設定信号ＰＩが入力されて、バイパス条件を満たす機能マクロ回路の部分スキャンパスをバイパスする。例えば、機能マクロ回路１１０が最初に条件を満たすと、設定入力端子４１３を介して設定信号ＰＩが入力され、制御信号生成回路２００のフリップフロップ２１０のデータが書き換えられる。制御信号生成回路２００から出力されるバイパス制御信号に基づいて、セレクタ２１１、２１２は、選択入力を入力ノードａから入力ノードｂに切り替える。すなわち、制御信号生成回路２００のフリップフロップ２１０の値は、バイパス制御が有効となる値に更新される。さらに言い換えると、フリップフロップ２１０は、機能マクロ回路１１０の部分スキャンパス１１１、１１２の出力データではなく、部分スキャンパス１１１、１１２の入力データ（スキャンイン端子４１１、４１２から入力されるスキャンインデータＳＩ１、ＳＩ２）がセレクタ２１１、２１２の出力ノードｃへ伝播するようにセレクタを制御する値に更新される。したがって、スキャンパス４０１、４０２からそれぞれス部分キャンパス１１１、１１２がバイパスされる。
【００４３】
この結果、スキャンパス４０１は、スキャンイン端子４１１→セレクタ２１１→スキャンパス１２１→セレクタ２２１→スキャンパス１３１→セレクタ２３１→スキャンパス１４１→セレクタ２４１→スキャンアウト端子４２１の経路に更新される。スキャンパス４０２は、スキャンイン端子４１２→セレクタ２１２→スキャンパス１２２→セレクタ２２２→スキャンパス１３２→セレクタ２３２→スキャンパス１４２→セレクタ２４２→スキャンアウト端子４２２の経路に更新される。これ以降は、機能マクロ回路１２０、１３０、１４０のいずれかが、目標故障検出率に達するスキャンパターンデータによるテストが行われるまで、制御信号生成回路２００のフリップフロップ２１０、２２０、２３０、２４０の値は、更新された値を保持して、テストが行われる。
【００４４】
機能マクロ回路１２０、１３０、１４０のいずれかが目標故障検出率に達すると、目標故障検出率に達した機能マクロ回路のスキャンパスをバイパスする動作が開始される。例えば、機能マクロ回路１４０が次に条件を満たすと、設定入力端子４１３を介して設定信号ＰＩが入力され、制御信号生成回路２００のフリップフロップ２４０のデータが書き換えられる。制御信号生成回路２００から出力されるバイパス制御信号に基づいて、セレクタ２４１、２４２は、選択入力を入力ノードａから入力ノードｂに切り替える。すなわち、制御信号生成回路２００のフリップフロップ２４０の値は、バイパス制御が有効となる値に更新される。さらに言い換えると、フリップフロップ２４０は、機能マクロ回路１４０の部分スキャンパス１４１、１４２の出力データではなく、部分スキャンパス１４１、１４２の入力データ（セレクタ２３１、２３２のノードｃから出力されるデータ）がセレクタ２４１、２４２の出力ノードｃへ伝播するようにセレクタを制御する値に更新される。したがって、スキャンパス４０１、４０２からそれぞれ部分スキャンパス１４１、１４２がバイパスされる。
【００４５】
この結果、スキャンパス４０１は、スキャンイン端子４１１→セレクタ２１１→スキャンパス１２１→セレクタ２２１→スキャンパス１３１→セレクタ２３１→セレクタ２４１→スキャンイン端子４２１の経路に更新される。スキャンパス４０２は、スキャンイン端子４１２→セレクタ２１２→スキャンパス１２２→セレクタ２２２→スキャンパス１３２→セレクタ２３２→セレクタ２４２→スキャンアウト端子４２２の経路に更新される。
【００４６】
これ以降は、機能マクロ回路１２０、１３０のいずれかが、目標故障検出率に達するスキャンパターンデータによるテストが行われるまで、制御信号生成回路２００のフリップフロップ２１０、２２０、２３０、２４０の値は、更新された値を保持し、テストが行われる。機能マクロ回路１２０、１３０のいずれかが目標故障検出率に達した場合、その機能マクロ回路のスキャンパスをバイパスする動作が同じように行われる。
【００４７】
このように、ユーザによって設定されたバイパス条件を満足する毎に、制御信号生成回路２００の設定が更新され、その機能マクロ回路の部分スキャンパスがバイパスされる。したがって、１チップのスキャンパスを短くしてテスト時間を削減しながら、全ての機能がテスト不要と判断されるまでスキャンテストを継続することができる。
【００４８】
また、制御信号生成回路２００のフリップフロップ２１０、２２０、２３０、２４０の値の更新は、予め設定されるタイミングで行われる。まず、部分スキャンパスをバイパスしない設定に固定したままＡＴＰＧによってテストパターンデータ作成を実施し、各機能マクロ回路が目標故障検出率に達するパターン数を確認しておく。また、制御信号生成回路２００のフリップフロップの値を更新するスクリプト（ＡＴＰＧにより実行される）が作成される。ＡＴＰＧがテストパターンデータを作成して、目標故障検出率になるパターン数に達した時に、ＡＴＰＧは、そのスクリプトを実行して制御信号生成回路２００に供給する設定信号ＰＩのデータを作成する。さらに、目標故障検出率に満たない回路のテストパターンデータを作成する。このような方法により、条件を満たした機能マクロ回路を順にバイパスしてテストするためのデータを作成することができる。ここでは、スキャンパスをバイパスするための条件として目標故障検出率を挙げたが、目標テスト時間を満足するテストパターン数などを条件に選択しても良い。
【００４９】
本実施の形態に係るスキャンテスト回路を生成する方法を、図４、図５、図６、図７Ａ、図７Ｂを参照して、以下に説明する。ここでは、説明を簡単にするために、各機能マクロ回路はスキャンフリップフロップを偶数個備え、それぞれのスキャンパスに均等に割り当てられる場合を示す。
【００５０】
図４に示されるように、本実施の形態に係るスキャンテスト回路は、初期設定処理（ステップＳ１００）、制御信号生成回路の生成処理（ステップＳ２００）、部分スキャンパスの構築処理（ステップＳ３００）、機能マクロ回路毎のスキャンパスを結合する１チップスキャンパスの構築処理（ステップＳ４００）を行って生成される。初期設定処理（ステップＳ１００）では、処理中に使用される変数の初期値および初期集合の設定が行われる。制御信号生成回路の生成処理（ステップＳ２００）では、テスト対象の機能マクロ回路の数に合わせて制御信号生成回路２００が生成される。部分スキャンパスの構築処理（ステップＳ３００）では、機能マクロ回路毎に生成される部分スキャンパスが設定される。１チップスキャンパスの構築処理（ステップＳ４００）では、ステップＳ４００において生成される機能マクロ回路毎の部分スキャンパスを結合して１チップのスキャンパスが構築される。
【００５１】
初期設定処理（Ｓ１００）では、スキャンパス構築に必要な変数に初期値および初期集合が設定される。ここでは、回路、端子等は、オブジェクトにより示される。
１）変数Ｎには、対象の半導体集積回路装置内に構築されるスキャンパスの数が設定される。ここでは、スキャンパス４０１、４０２の２本であるから、Ｎ＝２となる。
２）変数Ｘには、テスト対象とする機能マクロ回路数が設定される。ここでは、機能マクロ回路１１０、１２０、１３０、１４０の４回路であるから、Ｘ＝４となる。
３）変数Ｔ〔Ｘ−１：０〕には、テスト対象とする機能マクロ回路の集合が設定される。ここでは、機能マクロ回路１１０、１２０、１３０、１４０の４回路であるから、Ｔ〔３：０〕＝｛機能マクロ回路１４０、機能マクロ回路１３０、機能マクロ回路１２０、機能マクロ回路１１０｝となる。
４）変数Ｍ〔Ｘ−１：０〕には、Ｔ〔Ｘ−１：０〕により示される機能マクロ回路の部分スキャンパス長を示す数値が設定される。初期設定の時点では、初期値φ（空集合）が設定される。
５）変数ＳＩ〔Ｎ−１：０〕には、初期設定の時点ではスキャンイン端子の集合が設定される。ここでは、スキャンイン端子はスキャンパス２本に対応して２つであるから、ＳＩ〔１：０〕＝｛スキャンイン端子４１２、スキャンイン端子４１１｝となる。変数ＳＩは、処理中においては、結合されたスキャンパスの終端（出力ノード）を示す。
６）変数ＳＯ〔Ｎ−１：０〕には、スキャンアウト端子の集合が設定される。ここでは、スキャンアウト端子は、スキャンパス２本に対応して２つであるから、ＳＯ〔１：０〕＝｛スキャンアウト端子４２２、スキャンアウト端子４２１｝となる。
７）変数ＳＰ〔Ｘ−１：０，Ｎ−１：０〕には、Ｔ〔Ｘ−１：０〕により示されるテスト対象の機能マクロ回路毎に、テストするためのＮ本の部分スキャンパスの集合が設定される。初期設定の時点では初期値φ（空集合）が設定される。
８）変数ＳＥＬ〔Ｘ−１：０，Ｎ−１：０〕には、部分スキャンパスをバイパスするセレクタの集合が設定される。初期設定の時点では初期値φ（空集合）が設定される。
９）変数ＦＦ〔Ｘ−１：０〕には、制御信号生成回路２００内部に搭載される、各機能マクロ回路の部分スキャンパスのバイパス制御を行うフリップフロップの集合が設定される。ここでは、４個のフリップフロップであるから、ＦＦ〔３：０〕＝｛フリップフロップ２４０、フリップフロップ２３０、フリップフロップ２２０、フリップフロップ２１０｝となる。
１０）変数ＰＩには、制御信号生成回路２００にデータ入力するための設定入力端子４１３の集合が設定される。ここでは、１個の入力端子であるから、ＰＩ＝｛設定入力端子４１３｝となる。
１１）変数ｉ、ｊは、処理中の繰り返し回数を表す変数（繰り返し変数）であり、初期値０が設定される。
【００５２】
図５に示されるように、制御信号生成回路の生成処理（ステップＳ２００）は、制御信号生成回路２００内のフリップフロップ２１０、２２０、２３０、２４０と設定入力端子４１３とを直列に接続する処理である。変数ｉは、そのフリップフロップの順を示す。ＦＦ〔０〕により示される始めのフリップフロップ２１０のデータ入力ノードと、ＰＩにより示される設定入力端子４１３とが接続される（ステップＳ２１０）。２つ目のフリップフロップを示すＦＦ〔１〕からは、前に接続したフリップフロップに接続することになる。変数ｉに初期値１が設定される（ステップＳ２１４）。ＦＦ〔ｉ−１〕によって示される前段のフリップフロップのデータ出力ノードと、ＦＦ〔ｉ〕によって示されるフリップフロップのデータ入力ノードとが接続される（ステップＳ２２０）。繰り返し変数ｉの値を＋１して（ステップＳ２２８）、Ｘに達するまでステップＳ２２０から繰り返す（ステップＳ２３０−ＮＯ）。したがって、ＰＩ−ＦＦ〔０〕−ＦＦ〔１〕−ＦＦ〔２〕−ＦＦ〔３〕と接続される。すなわち、図３に示される回路では、設定入力端子４１３−フリップフロップ２１０−フリップフロップ２２０−フリップフロップ２３０−フリップフロップ２４０が接続されたことになり、制御信号生成回路２００が生成される。ステップＳ２２８において、ｉ＝Ｘ（＝４）になると処理を終了する（ステップＳ２３０−ＹＥＳ）。
【００５３】
次に、部分スキャンパスの構築処理（ステップＳ３００）を説明する。図６に示されるように、部分スキャンパスの構築処理（ステップＳ３００）では、各機能マクロ回路内のスキャンフリップフロップを接続して部分スキャンパスが生成され、部分スキャンパスの後段にセレクタが接続される。したがって、まず、機能マクロ回路の順を示す繰り返し変数ｉに初期値０が設定される（ステップＳ３０４）。次に、機能マクロ回路内の部分スキャンパスの順を示す繰り返し変数ｊに初期値０が設定される（ステップＳ３０６）。そして、以下の処理が所定の回数繰り返される。
【００５４】
まず、機能マクロ回路毎の部分スキャンパスの長さが算出される。ここでは、部分スキャンパスには、スキャンフリップフロップが均等に割り当てられる。すなわち、ｉ番目の機能マクロ回路を示すＴ〔ｉ〕に含まれるスキャンフリップフロップ数を１チップのスキャンパスの数Ｎで除算した値を、部分スキャンパス長を示すＭ〔ｉ〕に代入する（ステップＳ３１０）。つまり、Ｍ〔ｉ〕は、Ｔ〔ｉ〕の部分スキャンパス長を表す。
【００５５】
ここでは、Ｔ〔０〕（＝機能マクロ回路１１０）に含まれるスキャンフリップフロップ数は１０、スキャンパス数Ｎ＝２であるから、Ｍ〔０〕＝１０÷２＝５となる。同様に、Ｔ〔１〕（＝機能マクロ回路１２０）に含まれるスキャンフリップフロップ数は８、Ｔ〔２〕（＝機能マクロ回路１３０）に含まれるスキャンフリップフロップ数は１２、Ｔ〔３〕（＝機能マクロ回路１４０）に含まれるスキャンフリップフロップ数は６であるから、Ｍ［１］＝８÷２＝４、Ｍ［２］＝１２÷２＝６、Ｍ［３］＝６÷２＝３となる。本実施の形態では、スキャンパス数＝２であり、スキャンフリップフロップの数が全て偶数として説明されるため、各機能マクロ回路内の部分スキャンパス長は、同じ長さとなる。部分スキャンパス長は、各機能マクロ回路内で同じ長さである必要はないが、全ての部分スキャンパスにスキャンフリップフロップが割り当てられるようにし、均等な長さであることが好ましい。部分スキャンパス長、全体のスキャンパス長がほぼ均等であれば、各パスのテストを終えるタイミングがほぼ同時となり、テスト時間を短縮することが容易になる。
【００５６】
機能マクロ回路を示すＴ〔ｉ〕における部分スキャンパス長Ｍ〔ｉ〕が求められると、機能マクロ回路に含まれるＭ〔ｉ〕個のスキャンフリップフロップを抽出して部分スキャンパスが生成され、部分スキャンパスを示すＳＰ〔ｉ，ｊ〕に格納される（ステップＳ３１４）。
【００５７】
本実施の形態では、機能マクロ回路（１１０、１２０、１３０、１４０）にそれぞれ２本の部分スキャンパス（１１１／１１２、１２１／１２２、１３１／１３２、１４１／１４２）が構築される。ループ毎に、
ｉ＝０の時、機能マクロ回路１１０の部分スキャンパスが生成され、
ｊ＝０の時、ＳＰ〔０，０〕＝部分スキャンパス１１１、
ｊ＝１の時、ＳＰ〔０，１〕＝部分スキャンパス１１２、
ｉ＝１の時、機能マクロ回路１２０の部分スキャンパスが生成され、
ｊ＝０の時、ＳＰ〔１，０〕＝部分スキャンパス１２１、
ｊ＝１の時、ＳＰ〔１，１〕＝部分スキャンパス１２２、
ｉ＝２の時、機能マクロ回路１３０の部分スキャンパスが生成され、
ｊ＝０の時、ＳＰ〔２，０〕＝部分スキャンパス１３１、
ｊ＝１の時、ＳＰ〔２，１〕＝部分スキャンパス１３２、
ｉ＝３の時、機能マクロ回路１４０の部分スキャンパスが生成され、
ｊ＝０の時、ＳＰ〔３，０〕＝部分スキャンパス１４１、
ｊ＝１の時、ＳＰ〔３，１〕＝部分スキャンパス１４２、
となる。
【００５８】
機能マクロ回路がテスト不要と判断された場合に、部分スキャンパス（ＳＰ〔ｉ，ｊ〕）をバイパスするためのセレクタが生成され、セレクタを示す値がＳＥＬ〔ｉ，ｊ〕に格納される（ステップＳ３１８）。
【００５９】
本実施の形態では、機能マクロ回路（１１０、１２０、１３０、１４０）に形成される２本の部分スキャンパス（１１１／１１２、１２１／１２２、１３１／１３２、１４１／１４２）に対してそれぞれ１つずつセレクタ（２１１／２１２、２２１／２２２、２３１／２３２、２４１／２４２）が配置される。したがって、ループ毎に、
ｉ＝０の時、機能マクロ回路１１０をバイパスするセレクタが生成され、
ｊ＝０の時、ＳＥＬ〔０，０〕＝セレクタ２１１、
ｊ＝１の時、ＳＥＬ〔０，１〕＝セレクタ２１２、
ｉ＝１の時、機能マクロ回路１２０をバイパスするセレクタが生成され、
ｊ＝０の時、ＳＥＬ〔１，０〕＝セレクタ２２１、
ｊ＝１の時、ＳＥＬ〔１，１〕＝セレクタ２２２、
ｉ＝２の時、機能マクロ回路１３０をバイパスするセレクタが生成され、
ｊ＝０の時、ＳＥＬ〔２，０〕＝セレクタ２３１、
ｊ＝１の時、ＳＥＬ〔２，１〕＝セレクタ２３２、
ｉ＝３の時、機能マクロ回路１４０をバイパスするセレクタが生成され、
ｊ＝０の時、ＳＥＬ〔３，０〕＝セレクタ２４１、
ｊ＝１の時、ＳＥＬ〔３，１〕＝セレクタ２４２、
となる。
【００６０】
セレクタが生成されると、ＳＥＬ〔ｉ，ｊ〕により示されるセレクタを制御する信号が印加されるセレクト入力に、当該セレクタのバイパス制御を行う値を保持する制御信号生成回路２００内のフリップフロップを示すＦＦ〔ｉ〕（２１０、２２０、２３０、２４０）の出力が接続される（ステップＳ３２２）。
【００６１】
本実施の形態では、各セレクタ（２１１／２１２、２２１／２２２、２３１／２３２、２４１／２４２）のセレクト入力ノードとフリップフロップ（２１０、２２０、２３０、２４０）の出力ノードとが接続される。したがって、ループ毎に、
ｉ＝０の時、機能マクロ回路１１０をバイパスするセレクタが接続され、
ｊ＝０の時、ＳＥＬ〔０，０〕＝セレクタ２１１のセレクト入力ノードにＦＦ〔０〕＝フリップフロップ２１０の出力ノードを接続、
ｊ＝１の時、ＳＥＬ〔０，１〕＝セレクタ２１２のセレクト入力ノードにＦＦ〔０〕＝フリップフロップ２１０の出力ノードを接続、
ｉ＝１の時、機能マクロ回路１２０をバイパスするセレクタが接続され、
ｊ＝０の時、ＳＥＬ〔１，０〕＝セレクタ２２１のセレクト入力ノードにＦＦ〔１〕＝フリップフロップ２２０の出力ノードを接続、
ｊ＝１の時、ＳＥＬ〔１，１〕＝セレクタ２２２のセレクト入力ノードにＦＦ〔１〕＝フリップフロップ２２０の出力ノードを接続、
ｉ＝２の時、機能マクロ回路１３０をバイパスするセレクタが接続され、
ｊ＝０の時、ＳＥＬ〔２，０〕＝セレクタ２３１のセレクト入力ノードにＦＦ〔２〕＝フリップフロップ２３０の出力ノードを接続、
ｊ＝１の時、ＳＥＬ〔２，１〕＝セレクタ２３２のセレクト入力ノードにＦＦ〔２〕＝フリップフロップ２３０の出力ノードを接続、
ｉ＝３の時、機能マクロ回路１４０をバイパスするセレクタが接続され、
ｊ＝０の時、ＳＥＬ〔３，０〕＝セレクタ２４１のセレクト入力ノードにＦＦ〔３〕＝フリップフロップ２４０の出力ノードを接続、
ｊ＝１の時、ＳＥＬ〔３，１〕＝セレクタ２４２のセレクト入力ノードにＦＦ〔３〕＝フリップフロップ２４０の出力ノードを接続、
となる。
【００６２】
ＳＥＬ〔ｉ，ｊ〕により示されるセレクタのデータ入力ノードａ、ｂのうち、ＦＦ〔ｉ〕により示されるフリップフロップから出力されるバイパス制御信号がバイパスしないことを示すとき（無効時）に選択される側の入力ノードａに、ＳＰ〔ｉ，ｊ〕により示される部分スキャンパスの終点を示すスキャンフリップフロップの出力ノードが接続される（ステップＳ３２６）。
【００６３】
本実施の形態では、各セレクタ（ＳＥＬ〔ｉ，ｊ〕：２１１、２１２、２２１、２２２、２３１、２３２、２４１、２４２）のノードａと各部分スキャンパス（ＳＰ〔ｉ，ｊ〕：１１１、１１２、１２１、１２２、１３１、１３２、１４１、１４２）の終点のスキャンフリップフロップの出力ノードとが接続される。したがって、ループ毎に、
ｉ＝０の時、機能マクロ回路１１０のセレクタが選択され、
ｊ＝０の時、ＳＥＬ〔０，０〕＝セレクタ２１１のノードａと、ＳＰ〔０，０〕＝部分スキャンパス１１１の最終段スキャンフリップフロップの出力ノードとを接続、
ｊ＝１の時、ＳＥＬ〔０，１〕＝セレクタ２１２のノードａと、ＳＰ〔０，１〕＝部分スキャンパス１１２の最終段スキャンフリップフロップの出力ノードとを接続、
ｉ＝１の時、機能マクロ回路１２０のセレクタが選択され、
ｊ＝０の時、ＳＥＬ〔１，０〕＝セレクタ２２１のノードａと、ＳＰ〔１，０〕＝部分スキャンパス１２１の最終段スキャンフリップフロップの出力ノードとを接続、
ｊ＝１の時、ＳＥＬ〔１，１〕＝セレクタ２２２のノードａと、ＳＰ〔１，１〕＝部分スキャンパス１２２の最終段スキャンフリップフロップの出力ノードとを接続、
ｉ＝２の時、機能マクロ回路１３０のセレクタが選択され、
ｊ＝０の時、ＳＥＬ〔２，０〕＝セレクタ２３１のノードａと、ＳＰ〔２，０〕＝部分スキャンパス１３１の最終段スキャンフリップフロップの出力ノードとを接続、
ｊ＝１の時、ＳＥＬ〔２，１〕＝セレクタ２３２のノードａと、ＳＰ〔２，１〕＝部分スキャンパス１３２の最終段スキャンフリップフロップの出力ノードとを接続、
ｉ＝３の時、機能マクロ回路１４０のセレクタが選択され、
ｊ＝０の時、ＳＥＬ〔３，０〕＝セレクタ２４１のノードａと、ＳＰ〔３，０〕＝部分スキャンパス１４１の最終段スキャンフリップフロップの出力ノードとを接続、
ｊ＝１の時、ＳＥＬ〔３，１〕＝セレクタ２４２のノードａと、ＳＰ〔３，１〕＝部分スキャンパス１４２の最終段スキャンフリップフロップの出力ノードとを接続、
となる。
【００６４】
繰り返し変数ｊの値を＋１して（ステップＳ３３０）、繰り返し変数ｊの値がＮに達するまでステップＳ３１０から繰り返す（ステップＳ３３４−ＮＯ）。すなわち、各機能マクロ回路に対応するセレクタの数（部分スキャンパスの数）分の処理が行われる。
【００６５】
繰り返し変数ｊの値がＮに達すると（ステップＳ３３４−ＹＥＳ）、繰り返し変数ｉの値を＋１して（ステップＳ３３８）、繰り返し変数の値ｉがＸに達するまでステップＳ３０６から繰り返す（ステップＳ３４２−ＮＯ）。すなわち、対象の機能マクロ回路の数分の処理が行われる。
【００６６】
繰り返し変数ｉの値がＸに達すると（ステップＳ３４２−ＹＥＳ）、セレクタと部分スキャンパスとの接続が終了したことになる。このように、各機能マクロ回路に関してｉを０からＸ−１まで、その機能マクロ回路（ｉ）に含まれる部分スキャンパスに関してｊを０からＮ−１まで、部分スキャンパスを生成し、その部分スキャンパスをバイパスするセレクタを設ける処理が行われる。
【００６７】
次に、１チップ内のスキャンパスの構築処理が行われる。図７Ａ、図７Ｂを参照して、１チップスキャンパスの構築処理（ステップＳ４００）の処理内容を説明する。
【００６８】
まず、処理する機能マクロ回路の順をカウントする変数ｉに初期値０を設定する（ステップＳ４０４）。次に、機能マクロ回路内の部分スキャンパスの順をカウントする変数ｊに初期値０を設定する（ステップＳ４０６）。
【００６９】
ＳＰ〔ｉ，ｊ〕により示される部分スキャンパスの始点になるスキャンフリップフロップのスキャンデータ入力ノードと、ＳＩ〔ｊ〕により示される前段の出力ノードとが接続される（ステップＳ４１０）。ｉ＝０のとき、ＳＩ〔ｊ〕は、初期設定によりスキャンイン端子を示しているため、機能マクロ回路１１０の部分スキャンパス１１１、１１２の入力ノードは、スキャンイン端子に接続される。次段（ｉ＞０）では、前段の部分スキャンパスの出力ノードが接続される。
【００７０】
本実施の形態では、ループ毎に、
ｉ＝０の時、機能マクロ回路１１０の部分スキャンパスが接続され、
ｊ＝０の時、ＳＰ〔０，０〕＝部分スキャンパス１１１のスキャンデータ入力ノードと、ＳＩ〔０〕＝スキャンイン端子４１１とを接続、
ｊ＝１の時、ＳＰ〔０，１〕＝部分スキャンパス１１２のスキャンデータ入力ノードと、ＳＩ〔１〕＝スキャンイン端子４１２とを接続、
ｉ＝１の時、機能マクロ回路１２０の部分スキャンパスが接続され、
ｊ＝０の時、ＳＰ〔１，０〕＝部分スキャンパス１２１のスキャンデータ入力ノードと、ＳＩ〔０〕＝セレクタ２１１の出力ノードｃとを接続、
ｊ＝１の時、ＳＰ〔１，１〕＝部分スキャンパス１２２のスキャンデータ入力ノードと、ＳＩ〔１〕＝セレクタ２１２の出力ノードｃとを接続、
ｉ＝２の時、機能マクロ回路１３０の部分スキャンパスが接続され、
ｊ＝０の時、ＳＰ〔２，０〕＝部分スキャンパス１３１のスキャンデータ入力ノードと、ＳＩ〔０〕＝セレクタ２２１の出力ノードｃとを接続、
ｊ＝１の時、ＳＰ〔２，１〕＝部分スキャンパス１３２のスキャンデータ入力ノードと、ＳＩ〔１〕＝セレクタ２２２の出力ノードｃとを接続、
ｉ＝３の時、機能マクロ回路１４０の部分スキャンパスが接続され、
ｊ＝０の時、ＳＰ〔３，０〕＝部分スキャンパス１４１のスキャンデータ入力ノードと、ＳＩ〔０〕＝セレクタ２３１の出力ノードｃとを接続、
ｊ＝１の時、ＳＰ〔３，１〕＝部分スキャンパス１４２のスキャンデータ入力ノードと、ＳＩ〔１〕＝セレクタ２３２の出力ノードｃとを接続、
となる。
【００７１】
部分スキャンパスの接続が終わると、部分スキャンパスをバイパスする経路を各セレクタに接続する。すなわち、部分スキャンパスの入力ノードが接続されるノードにセレクタの入力ノードｂが接続される。したがって、ＳＥＬ〔ｉ，ｊ〕により示されるセレクタのデータ入力ノードのうち、ＦＦ〔ｉ〕が出力するバイパス制御信号がバイパスすることを示すとき（有効時）に選択される入力ノードｂに、ＳＩ〔ｊ〕により示されるノードが接続される（ステップＳ４１４）。なお、ＳＩ〔ｊ〕の値は、次の処理においてｉ、ｊの値が変わるごとに更新される。
【００７２】
本実施の形態では、ループ毎に、
ｉ＝０のとき、機能マクロ回路１１０のバイパス経路が接続され、
ｊ＝０の時、ＳＥＬ〔０，０〕＝セレクタ２１１のデータ入力ノードｂと、ＳＩ〔０〕＝スキャンイン端子４１１とを接続、
ｊ＝１の時、ＳＥＬ〔０，１〕＝セレクタ２１２のデータ入力ノードｂと、ＳＩ〔１〕＝スキャンイン端子４１２とを接続、
ｉ＝１の時、機能マクロ回路１２０のバイパス経路が接続され、
ｊ＝０の時、ＳＥＬ〔１，０〕＝セレクタ２２１のデータ入力ノードｂと、ＳＩ〔０〕＝セレクタ２１１の出力ノードｃとを接続、
ｊ＝１の時、ＳＥＬ〔１，１〕＝セレクタ２２２のデータ入力ノードｂと、ＳＩ〔１〕＝セレクタ２１２の出力ノードｃとを接続、
ｉ＝２の時、機能マクロ回路１３０のバイパス経路が接続され、
ｊ＝０の時、ＳＥＬ〔２，０〕＝セレクタ２３１のデータ入力ノードｂと、ＳＩ〔０〕＝セレクタ２２１の出力ノードｃとを接続、
ｊ＝１の時、ＳＥＬ〔２，１〕＝セレクタ２３２のデータ入力ノードｂと、ＳＩ〔１〕＝セレクタ２２２の出力ノードｃとを接続、
ｉ＝３のとき、機能マクロ回路１４０のバイパス経路が接続され、
ｊ＝０の時、ＳＥＬ〔３，０〕＝セレクタ２４１のデータ入力ノードｂと、ＳＩ〔０〕＝セレクタ２３１の出力ノードｃとを接続、
ｊ＝１、ＳＥＬ〔３，１〕＝セレクタ２４２のデータ入力ノードｂと、ＳＩ〔１〕＝セレクタ２３２の出力ノードｃとを接続、
となる。
【００７３】
各セレクタまでの接続が終わると、ＳＥＬ〔ｉ，ｊ〕により示されるセレクタの出力ノードｃをＳＩ〔ｊ〕に設定する。すなわち、次段の接続のために、現在のセレクタの出力ノードを次段の入力ノードとするように、データが更新される（ステップＳ４１８）。
【００７４】
本実施の形態では、ループ毎に、
ｉ＝０の時、ＳＩ〔ｊ〕はスキャンイン端子から現在のセレクタの出力ノードｃに更新、
ｊ＝０の時、ＳＩ〔０〕＝“スキャンイン端子４１１→ＳＥＬ〔０，０〕＝セレクタ２１１出力ノードｃ”更新、
ｊ＝１の時、ＳＩ〔１〕＝“スキャンイン端子４１２→ＳＥＬ〔０，１〕＝セレクタ２１２出力ノードｃ”更新、
ｉ＝１の時、ＳＩ〔ｊ〕は現在のセレクタの出力ノードｃに更新、
ｊ＝０の時、ＳＩ〔０〕＝“ＳＥＬ〔０，０〕＝セレクタ２１１出力ノードｃ→ＳＥＬ〔１，０〕＝セレクタ２２１出力ノードｃ”更新、
ｊ＝１の時、ＳＩ〔１〕＝“ＳＥＬ〔０，１〕＝セレクタ２１２出力ノードｃ→ＳＥＬ〔１，１〕＝セレクタ２２２出力ノードｃ”更新、
ｉ＝２の時、ＳＩ〔ｊ〕は現在のセレクタの出力ノードｃに更新、
ｊ＝０の時、ＳＩ〔０〕＝“ＳＥＬ〔１，０〕＝セレクタ２２１出力ノードｃ→ＳＥＬ〔２，０〕＝セレクタ２３１出力ノードｃ”更新、
ｊ＝１の時、ＳＩ〔１〕＝“ＳＥＬ〔１，１〕＝セレクタ２２２出力ノードｃ→ＳＥＬ〔２，１〕＝セレクタ２３２出力ノードｃ”更新、
ｉ＝３の時、ＳＩ〔ｊ〕は現在のセレクタの出力ノードｃに更新、
ｊ＝０の時、ＳＩ〔０〕＝“ＳＥＬ〔２，０〕＝セレクタ２３１出力ノードｃ→ＳＥＬ〔３，０〕＝セレクタ２４１出力ノードｃ”更新、
ｊ＝１の時、ＳＩ〔１〕＝“ＳＥＬ〔２，１〕＝セレクタ２３２出力ノードｃ→ＳＥＬ〔３，１〕＝セレクタ２４２出力ノードｃ”更新、
となる。
【００７５】
繰り返し変数ｊの値を＋１し（ステップＳ４２２）、繰り返し変数ｊの値がＮに達するまでステップＳ４１０から繰り返す（ステップＳ４２６−ＮＯ）。すなわち、同一機能マクロ回路の部分スキャンパスのうち、スキャンパスに接続されていない部分スキャンパスを全てスキャンパスに接続する。
【００７６】
繰り返し変数ｊの値がＮ以上になると（ステップＳ４２６−ＹＥＳ）、繰り返し変数ｉの値を＋１し（ステップＳ４３０）、繰り返し変数ｉの値がＸに達するまでステップＳ４０６から繰り返す（ステップＳ４３４−ＮＯ）。すなわち、部分スキャンパスが全てＮ本のスキャンパスに含まれるように設定されるまで繰り返される。繰り返し変数ｉの値がＸに達すると（ステップＳ４３４−ＹＥＳ）、スキャンアウト端子を除いてＮ本の１チップスキャンパス構築が完了したことになる。ここでは、スキャンイン端子４１１、４１２から機能マクロ回路１４０のセレクタ２４１、２４２に至る２本のスキャンパスが設定されることになる。
【００７７】
さらに、各スキャンパスはスキャンアウト端子に接続される。まず、スキャンパスの順を示す繰り返し変数ｊに初期値０が設定される（ステップＳ４３８）。
【００７８】
ＳＩ〔ｊ〕には、これまで処理したスキャンパスの出力ノードを示す値が保持されている（本実施の形態ではセレクタ２４１／２４２の出力ノードｃ）。したがって、このＳＩ〔ｊ〕により示される出力ノードと、ＳＯ〔ｊ〕により示されるスキャンアウト端子とが接続される（ステップＳ４４２）。
【００７９】
本実施の形態では、ループ毎に、
ｊ＝０、ＳＩ〔０〕＝セレクタ２４１出力ノードｃと、ＳＯ〔０〕＝スキャンアウト端子４２１とを接続、
ｊ＝１、ＳＩ［１］＝セレクタ２４２出力ノードｃと、ＳＯ〔１〕＝スキャンアウト端子４２２とを接続、
となる。
【００８０】
繰り返し変数ｊの値を＋１し（ステップ４４６）、繰り返し変数ｊの値がＮに達するまでステップＳ４４２から繰り返す（ステップＳ４５０−ＮＯ）。繰り返し変数ｊの値がＮに達すると（ステップＳ４５０−ＹＥＳ）、１チップのスキャンパスＮ本全てにスキャンアウト端子を接続完了したことになり、スキャンパス構築に関する全処理は終了する。以上により、スキャンイン端子４１１／４１２→部分スキャンパス１１１／１１２→セレクタ２１１／２１２→部分スキャンパス１２１／１２２→セレクタ２２１／２２２→部分スキャンパス１３１／１３２→セレクタ２３１／２３２→部分スキャンパス１４１／１４２→セレクタ２４１／２４２→スキャンアウト端子４２１／４２２となる２本のスキャンパスが設定される。
【００８１】
図４〜図７Ａ、図７Ｂに示されるように、本実施の形態に係るスキャンテスト回路設計方法は、コンピュータシステムによって実現可能である。例えば、図８に示されるように、サーバ装置３００と複数のコンピュータ装置３０６とを有するコンピュータシステムにおいて、上述のスキャンテスト回路設計方法を実施することができる。
【００８２】
本発明の実施の形態に係るスキャンテスト回路設計方法を実施するためのコンピュータシステムは、例えば、サーバ装置３００と、ネットワーク３０５と、コンピュータ装置３０６とを備える。サーバ装置３００は、通信部３０１と、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）を備える処理部３０２と、記録媒体３０３と、入出力インターフェースである入出力部３０４とを具備する。コンピュータ装置３０６は、通信部３０７と、記録媒体３０８と、ＣＰＵを備える処理部３０９と、入出力インターフェースである入出力部３１０とを具備する。
【００８３】
ネットワーク３０５は、コンピュータ装置３０６とサーバ装置３００との間の通信を接続する。ネットワーク３０５は、移動体通信網や、専用線網や、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）といった有線通信や無線通信を含めた各種のネットワーク、あるいはこれらのネットワークが相互に接続されたネットワークを適用可能である。また、ネットワークによる接続なしに、単独のコンピュータ装置で実現することも可能である。
【００８４】
記録媒体３０３は、本実施の形態におけるスキャンテスト回路設計を実現するための実行プログラムや、ネットリストデータ、スキャンイン・アウト端子情報、スキャンフリップフロップ情報といったデータを記憶する。記録媒体３０３は、ハードディスクやＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）やＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）等の記憶装置を含む。処理部３０２は、記録媒体３０３に記憶される実行プログラムを読み込んで実行し、サーバ装置３００の機能を実現する。なお、各実行プログラムやデータは、サーバ装置３００の管理者により、キーボードやマウス等の入力機器、ＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ）等の出力機器を含む入出力部３０４を介して外部から記録媒体３０３へ格納されたり、表示されたりする。また、サーバ装置３００は、通信部３０１によってネットワーク３０５を介して、コンピュータ装置３０６へ実行プログラムやデータを提供することが可能である。
【００８５】
コンピュータ装置３０６は、本実施の形態におけるスキャンテスト回路設計を実現するための生成システムを実行する。コンピュータ装置３０６は、例えば、パーソナルコンピュータに例示される一般的な汎用コンピュータである。コンピュータ装置３０６は、通信部３０７を備え、ネットワーク３０５を介してサーバ装置３００と通信が可能である。コンピュータ装置３０６は、ネットワーク３０５を介してサーバ装置３００へ接続し、スキャンテスト回路設計を実現するための実行プログラムやデータを取得し、記憶部３０８へ記憶する。コンピュータ装置３０６は、ＣＰＵで構成される処理部３０９を備える。この処理部３０９は、記憶部３０８に記憶される実行プログラムを読み込んで実行し、コンピュータ装置３０６の所定の機能を実現する。なお、コンピュータ装置３０６は、コンピュータ装置３０６の使用者との入出力インターフェースである入出力部３１０を備える。入出力部３１０は、キーボードやマウス等の入力機器、ＬＣＤ等の出力機器を含む。コンピュータ装置３０６は、上述の構成により、サーバ装置３００から実行プログラムを取得して実行し、スキャンテスト回路設計を実現する。
【００８６】
ここで、本実施の形態におけるスキャンテスト回路設計の実行プログラムは、サーバ装置３００の記録媒体３０３に記憶される形態には限定されない。実行プログラムは、例えば、ＣＤ（Ｃｏｍｐａｃｔ  Ｄｉｓｋ）やフラッシュメモリを搭載したＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）メモリといった持ち運び可能な記憶媒体に記録されてもよい。この場合、実行プログラムは、これらの持ち運び可能な記憶媒体から、コンピュータ装置３０６が備えるＣＤドライブやＵＳＢポート等を介して導入される。
【００８７】
上述のように、本実施の形態では、スキャンフリップフロップを１０個有する機能マクロ回路１１０、スキャンフリップフロップを６個有する機能マクロ回路１４０、スキャンフリップフロップを８個有する機能マクロ回路１２０、スキャンフリップフロップを１２個有する機能マクロ回路１３０を搭載する半導体集積回路装置を例に、これらの機能を２本のスキャンパスによりテストする場合の構成、動作が示されている。スキャンテスト開始時、スキャンパス４０１、４０２は、スキャンパス上のスキャンフリップフロップが共に１８個であるため、１パターンあたり１８サイクルのテスト時間でスキャンテストが行われる。そして、ユーザがスキャンテスト開始前に設定した目標故障検出率に達したテストデータまでスキャンテストが行われた機能マクロ回路の部分スキャンパスがバイパスされる。
【００８８】
例えば、機能マクロ回路１４０が最初にユーザにより設定される故障検出率に達するテストデータまでスキャンテストが行われたとする。機能マクロ回路１４０の部分スキャンパス１４１、１４２をバイパスさせるために、入力端子４１３を介して設定信号ＰＩが入力され、制御信号生成回路２００のフリップフロップ２４０の値がバイパス制御を有効とする値に更新される。すなわち、セレクタ２４１、２４２は、ノードｂに入力される信号を選択して出力ノードｃから出力するように制御される。この動作により、機能マクロ回路１４０の部分スキャンパス１４１、１４２がバイパスされる。これ以降は、スキャンパス４０１、４０２上からそれぞれ３個のスキャンフリップフロップがバイパスされるため、スキャンパス４０１、４０２は共に１パターンあたり１５サイクルのテスト時間でスキャンテストが行われる。
【００８９】
このように、どの機能マクロ回路がスキャンテスト対象外になったとしても、必ず全てのスキャンパスから少なくとも１個のスキャンフリップフロップを含む部分スキャンパスをバイパスさせるため、スキャンパス本数に依存せずにスキャンテスト時間を削減することが可能となる。
【００９０】
（第２の実施の形態）
図９は、本発明の第２の実施の形態に係るスキャンテスト時の半導体集積回路装置の構成を示す図である。半導体集積回路装置は、スキャンテスト対象機能として、３つの機能マクロ回路１５０、１６０、１７０を有し、１チップ内に２本のスキャンパス５０１、５０２が設定され、これらの機能マクロ回路に対するスキャンテストが実施される。
【００９１】
汎用性を持たせて、多機能を実現するために多数の機能マクロ回路を搭載したＬＳＩでは、それを採用するユーザにとってどの機能マクロ回路で実現するかは、当該ＬＳＩを搭載する装置やシステムによって異なり、ユーザにとって全く必要としない機能マクロ回路が搭載されることもある。よって、本実施の形態では、搭載されている３つの機能マクロ回路に対し、どの回路が実動作に利用されるのかを選択する機能を有する半導体集積回路装置が説明される。回路を選択する機能とは、例えば、チップ内部の機能のＯＮ（動作）／ＯＦＦ（停止）制御を外部端子（ボンディングオプション端子と呼ぶ）で任意に設定可能とすることなどである。
【００９２】
第２の実施の形態に係る半導体集積回路装置は、機能マクロ回路１５０、１６０、１７０と、制御信号生成回路２０１と、セレクタ２５１、２５２、２６１、２６２、２７１、２７２と、ボンディングオプション端子２５３、２６３、２７３と、スキャンイン端子５１１、５１２と、スキャンアウト端子５２１、５２２とを備える。ボンディングオプション端子２５３は、印加される信号ＢＯ５により、スキャンテスト対象である機能マクロ回路１５０のＯＮ（動作）／ＯＦＦ（停止）を制御する。ボンディングオプション端子２６３は、印加される信号ＢＯ６により、スキャンテスト対象である機能マクロ回路１６０のＯＮ（動作）／ＯＦＦ（停止）を制御する。ボンディングオプション端子２７３は、印加される信号ＢＯ７により、スキャンテスト対象である機能マクロ回路１７０のＯＮ（動作）／ＯＦＦ（停止）を制御する。
【００９３】
機能マクロ回路１５０は、組み合わせ回路１５３と複数のスキャンフリップフロップとを含む。複数のスキャンフリップフロップは、スキャンパス５０１、５０２に対応して２つに分けられ、スキャンテスト時にそれぞれ部分スキャンパス１５１、１５２を形成する。部分スキャンパス１５１の入力ノードは、スキャンイン端子５１１に接続され、スキャンパターンＳＩ１が入力される。部分スキャンパス１５１の後段には、セレクタ２５１が設けられる。セレクタ２５１の入力ノードａ、ｂは、部分スキャンパス１５１の出力ノード、入力ノードにそれぞれ接続される。また、部分スキャンパス１５２の入力ノードは、スキャンイン端子５１２に接続され、スキャンパターンＳＩ２が入力される。部分スキャンパス１５２の後段には、セレクタ２５２が設けられる。セレクタ２５２の入力ノードａ、ｂは、部分スキャンパス１５２の出力ノード、入力ノードがそれぞれ接続される。したがって、セレクタ２５１、２５２を制御することにより、部分スキャンパス１５１、１５２をバイパスすることができる。
【００９４】
機能マクロ回路１６０は、組み合わせ回路１６３と複数のスキャンフリップフロップとを含む。複数のスキャンフリップフロップは、スキャンパス５０１、５０２に対応して２つに分けられ、スキャンテスト時にそれぞれ部分スキャンパス１６１、１６２を形成する。部分スキャンパス１６１の入力ノードは、セレクタ２５１の出力ノードｃに接続される。部分スキャンパス１６１の後段には、セレクタ２６１が設けられる。セレクタ２６１の入力ノードａ、ｂは、部分スキャンパス１６１の出力ノード、入力ノードにそれぞれ接続される。また、部分スキャンパス１６２の入力ノードは、セレクタ２５２の出力ノードｃに接続される。部分スキャンパス１６２の後段には、セレクタ２６２が設けられる。セレクタ２６２の入力ノードａ、ｂは、部分スキャンパス１６２の出力ノード、入力ノードがそれぞれ接続される。したがって、セレクタ２６１、２６２を制御することにより、部分スキャンパス１６１、１６２をバイパスすることができる。
【００９５】
機能マクロ回路１７０は、組み合わせ回路１７３と複数のスキャンフリップフロップとを含む。複数のスキャンフリップフロップは、スキャンパス５０１、５０２に対応して２つに分けられ、スキャンテスト時にそれぞれ部分スキャンパス１７１、１７２を形成する。部分スキャンパス１７１の入力ノードは、セレクタ２６１の出力ノードｃに接続される。部分スキャンパス１７１の後段には、セレクタ２７１が設けられる。セレクタ２７１の入力ノードａ、ｂは、部分スキャンパス１７１の出力ノード、入力ノードにそれぞれ接続される。また、部分スキャンパス１７２の入力ノードは、セレクタ２６２の出力ノードｃに接続される。部分スキャンパス１７２の後段には、セレクタ２７２が設けられる。セレクタ２７２の入力ノードａ、ｂは、部分スキャンパス１７２の出力ノード、入力ノードがそれぞれ接続される。したがって、セレクタ２７１、２７２を制御することにより、部分スキャンパス１７１、１７２をバイパスすることができる。
【００９６】
制御信号生成回路２０１は、バッファ回路２５０、２６０、２７０を備える。バッファ回路２５０は、ボンディングオプション端子２５３に印加される信号ＢＯ５を入力し、セレクタ２５１、２５２にバイパス制御信号を出力する。バッファ回路２５０は、信号ＢＯ５がＯＮ（動作）を示す場合はスキャンパスのバイパス無効を示すバイパス制御信号を出力し、信号ＢＯ５がＯＦＦ（停止）を示す場合はスキャンパスのバイパス有効を示すバイパス制御信号を出力する。バッファ回路２６０は、ボンディングオプション端子２６３に印加される信号ＢＯ６を入力し、セレクタ２６１、２６２にバイパス制御信号を出力する。バッファ回路２６０は、信号ＢＯ６がＯＮ（動作）を示す場合はスキャンパスのバイパス無効を示すバイパス制御信号を出力し、信号ＢＯ６がＯＦＦ（停止）を示す場合はスキャンパスのバイパス有効を示すバイパス制御信号を出力する。バッファ回路２７０は、ボンディングオプション端子２７３に印加される信号ＢＯ７を入力し、セレクタ２７１、２７２にバイパス制御信号を出力する。バッファ回路２７０は、信号ＢＯ７がＯＮ（動作）を示す場合はスキャンパスのバイパス無効を示すバイパス制御信号を出力し、信号ＢＯ７がＯＦＦ（停止）を示す場合はスキャンパスのバイパス有効を示すバイパス制御信号を出力する。ボンディングオプションの設定値に基づいてバイパス制御信号を生成する制御信号生成回路２０１を有することにより、スキャンテスト開始時から、ユーザが必要とする機能だけをスキャンテストし、必要としない機能はスキャンパスをバイパスさせてスキャンテスト対象外にすることが可能となる。
【００９７】
本実施の形態に係る半導体集積回路装置のスキャンテスト時の動作を説明する。
【００９８】
ユーザは、このスキャンテスト回路を用いてスキャンテスト実施する際に、必要とする機能がＯＮ（動作）となり、不要な機能はＯＦＦ（停止）となるようにボンディングオプションの値を設定する。ボンディングオプションを設定することにより、必要としない機能のスキャンテストに使用するスキャンパスをバイパスすることが可能となる。例えば、以下３つの場合を例に説明する。
【００９９】
（全機能を必要とする場合）
全機能すなわち機能マクロ回路１５０、１６０、１７０が有効とされる。ボンディングオプション端子２５３、２６３、２７３にＯＮ（動作）を示す信号ＢＯ５、ＢＯ６、ＢＯ７が印加され、機能マクロ回路１５０、１６０、１７０がＯＮ（動作）状態となる。この設定により、制御信号生成回路２０１（バッファ回路２５０、２６０、２７０）は、全てのバイパス制御が無効となるバイパス制御信号を生成して、セレクタ２５１／２５２、セレクタ２６１／２６２、セレクタ２７１／２７２に出力する。セレクタ２５１／２５２、セレクタ２６１／２６２、セレクタ２７１／２７２は、ノードａ側を選択する。したがって、スキャンパス５０１は、機能マクロ回路１５０の部分スキャンパス１５１、機能マクロ回路１６０の部分スキャンパス１６１、機能マクロ回路１７０の部分スキャンパス１７１を経由する経路となる。また、スキャンパス５０２は、機能マクロ回路１５０の部分スキャンパス１５２、機能マクロ回路１６０の部分スキャンパス１６２、機能マクロ回路１７０の部分スキャンパス１７２を経由する経路となる。スキャンテストは、この各部分スキャンパスを経由するスキャンパス５０１、５０２により実施されることになる。
【０１００】
（機能マクロ回路１５０、１６０を必要とする場合）
機能マクロ回路１５０、１６０が有効とされ、機能マクロ回路１７０が無効とされる。ボンディングオプション端子２５３、２６３にＯＮ（動作）を示す信号ＢＯ５、ＢＯ６が印加され、機能マクロ回路１５０、１６０がＯＮ（動作）状態となる。ボンディングオプション端子２７３にＯＦＦ（停止）を示す信号ＢＯ７が印加され、機能マクロ回路１７０がＯＦＦ（停止）状態となる。この設定により、制御信号生成回路２０１（バッファ回路２５０、２６０、２７０）は、バイパス制御が無効となるバイパス制御信号を生成してセレクタ２５１／２５２、セレクタ２６１／２６２に出力し、バイパス制御が有効となるバイパス制御信号を生成してセレクタ２７１／２７２に出力する。セレクタ２５１／２５２、セレクタ２６１／２６２はノードａ側を選択し、セレクタ２７１／２７２はノードｂ側を選択する。したがって、スキャンパス５０１は、機能マクロ回路１５０の部分スキャンパス１５１、機能マクロ回路１６０の部分スキャンパス１６１を経由し、機能マクロ回路１７０の部分スキャンパス１７１をバイパスする経路となる。また、スキャンパス５０２は、機能マクロ回路１５０の部分スキャンパス１５２、機能マクロ回路１６０の部分スキャンパス１６２を経由し、機能マクロ回路１７０の部分スキャンパス１７２をバイパスする経路となる。スキャンテストは、この各部分スキャンパスを経由するスキャンパス５０１、５０２により実施されることになる。すなわち、スキャンパス５０１は、スキャンイン端子５１１→スキャンパス１５１→セレクタ２５１→スキャンパス１６１→セレクタ２６１→セレクタ２７１→スキャンアウト端子５２１の経路に更新され、スキャンパス５０２は、スキャンイン端子５１２→スキャンパス１５２→セレクタ２５２→スキャンパス１６２→セレクタ２６２→セレクタ２７２→スキャンアウト端子５２２の経路に更新される。
【０１０１】
（機能マクロ回路１５０のみを必要とする場合）
機能マクロ回路１５０が有効とされ、機能マクロ回路１６０、１７０が無効とされる。ボンディングオプション端子２５３にＯＮ（動作）を示す信号ＢＯ５が印加され、機能マクロ回路１５０がＯＮ（動作）状態となる。ボンディングオプション端子２６３、２７３にＯＦＦ（停止）を示す信号ＢＯ６、ＢＯ７が印加され、機能マクロ回路１６０、１７０がＯＦＦ（停止）状態となる。この設定により、制御信号生成回路２０１（バッファ回路２５０、２６０、２７０）は、バイパス制御が無効となるバイパス制御信号を生成してセレクタ２５１／２５２に出力し、バイパス制御が有効となるバイパス制御信号を生成してセレクタ２６１／２６２、セレクタ２７１／２７２に出力する。セレクタ２５１／２５２はノードａ側を選択し、セレクタ２６１／２６２、セレクタ２７１／２７２はノードｂ側を選択する。したがって、スキャンパス５０１は、機能マクロ回路１５０の部分スキャンパス１５１を経由し、機能マクロ回路１６０の部分スキャンパス１６１、機能マクロ回路１７０の部分スキャンパス１７１をバイパスする経路となる。また、スキャンパス５０２は、機能マクロ回路１５０の部分スキャンパス１５２を経由し、機能マクロ回路１６０の部分スキャンパス１６２、機能マクロ回路１７０の部分スキャンパス１７２をバイパスする経路となる。スキャンテストは、この各部分スキャンパスを経由するスキャンパス５０１、５０２により実施されることになる。すなわち、スキャンパス５０１は、スキャンイン端子５１１→スキャンパス１５１→セレクタ２５１→セレクタ２６１→セレクタ２７１→スキャンアウト端子５２１の経路に更新され、スキャンパス５０２は、スキャンイン端子５１２→スキャンパス１５２→セレクタ２５２→セレクタ２６２→セレクタ２７２→スキャンアウト端子５２２の経路に更新される。
【０１０２】
次に、本実施の形態に係る回路生成方法について説明する。第１の実施の形態に係る回路生成方法と比べると、制御信号生成回路２０１の生成方法が異なり、また、制御信号生成回路２０１との接続方法が異なるが、他は同じように処理される。したがって、全体の流れは、図１０に示されるように、処理中に使用される変数の初期値および初期集合の設定が行われ（ステップＳ５００）、制御信号生成回路の生成が行われ（ステップＳ６００）、機能マクロ回路毎の部分スキャンパス構築が行われ（ステップＳ７００）、機能マクロ回路毎のスキャンパスを結合して１チップのスキャンパス構築が行われる（ステップＳ８００）。
【０１０３】
以下各処理を詳細に説明する。
まず、初期設定処理（ステップＳ５００）では、スキャンパス構築に必要な変数に初期値および初期集合が設定される。ここでは、回路、端子等は、オブジェクトにより示される。
１）変数Ｎには、対象の半導体集積回路内に構築されるスキャンパスの数が設定される。ここでは、スキャンパス５０１、５０２の２本であるから、Ｎ＝２となる。
２）変数Ｘには、ボンディングオプションによりＯＮ（動作）／ＯＦＦ（停止）制御される機能マクロ回路数が設定される。ここでは、機能マクロ回路１５０、１６０、１７０の３回路であるから、Ｘ＝３となる。
３）変数Ｔ〔Ｘ−１：０〕には、ボンディングオプションを用いてＯＮ（動作）／ＯＦＦ（停止）制御が可能な機能マクロ回路の集合が設定される。ここでは、機能マクロ回路１５０、１６０、１７０の３回路であり、Ｔ〔２：０〕＝｛機能マクロ回路１７０、機能マクロ回路１６０、機能マクロ回路１５０｝となる。
４）変数Ｍ〔Ｘ−１：０〕には、Ｔ〔Ｘ−１：０〕により示される機能マクロ回路の部分スキャンパス長を示す数値が設定される。初期設定の時点では、初期値φ（空集合）が設定される。
５）変数ＳＩ〔Ｎ−１：０〕には、初期設定の時点ではスキャンイン端子の集合が設定される。ここでは、スキャンイン端子は、スキャンパス２本に対応して２つであるから、ＳＩ〔１：０〕＝｛スキャンイン端子５１２、スキャンイン端子５１１｝となる。変数ＳＩは、処理中においては、結合されたスキャンパスの終端（出力ノード）を示す。
６）変数ＳＯ〔Ｎ−１：０〕には、スキャンアウト端子の集合が設定される。ここでは、スキャンアウト端子は、スキャンパス２本に対応して２つであるから、ＳＯ〔１：０〕＝｛スキャンアウト端子５２２、スキャンアウト端子５２１｝となる。
７）変数ＳＰ〔Ｘ−１：０，Ｎ−１：０〕には、Ｔ〔Ｘ−１：０〕により示されるテスト対象の機能マクロ回路毎に、テストするためのＮ本の部分スキャンパスの集合が設定される。初期設定の時点では初期値φ（空集合）が設定される。
８）変数ＳＥＬ〔Ｘ−１：０，Ｎ−１：０〕には、部分スキャンパスをバイパスするセレクタの集合が設定される。初期設定の時点では初期値φ（空集合）が設定される。
９）変数ＢＵＦ〔Ｘ−１：０〕には、制御信号生成回路２０１内部に搭載される、各機能マクロ回路の部分スキャンパスのバイパス制御を行うバッファ回路の集合が設定される。ここでは、３個のバッファ回路であるから、ＢＵＦ〔２：０〕＝｛バッファ回路２７０、バッファ回路２６０、バッファ回路２５０｝となる。
１０）変数ＢＯ〔Ｘ−１：０〕には、ボンディングオプション端子の集合が設定される。ここでは、ＢＯ〔２：０〕＝｛ボンディングオプション端子２７３、ボンディングオプション端子２６３、ボンディングオプション端子２５３｝となる。
１１）変数ｉ、ｊは、処理中の繰り返し回数を表す変数（繰り返し変数）であり、初期値０が設定される。
【０１０４】
図１１に示されるように、制御信号生成回路の生成処理（ステップＳ６００）は、制御信号生成回路２０１内のバッファ回路２５０、２６０、２７０を各部に接続する処理である。変数ｉは、そのバッファ回路の順を示し、初期値０が設定される（ステップＳ６１０）。ＢＯ〔０〕により示されるボンディングオプション端子２５３と、ＢＵＦ〔０〕により示されるバッファ回路２５０とが接続される（ステップＳ６２０）。繰り返し変数ｉの値を＋１して（ステップＳ６２８）、Ｘに達するまでステップＳ６２０から繰り返す（ステップＳ６３０−ＮＯ）。したがって、ｉ＝１のとき、ＢＯ〔１〕により示されるボンディングオプション端子２６３と、ＢＵＦ〔１〕により示されるバッファ回路２６０とが接続される。ｉ＝２のとき、ＢＯ〔２〕により示されるボンディングオプション端子２７３と、ＢＵＦ〔２〕により示されるバッファ回路２７０とが接続される。ステップＳ６２８において、ｉ＝Ｘ（＝３）になると処理を終了する（ステップＳ６３０−ＹＥＳ）。このように、制御信号生成回路の生成処理では、ボンディングオプション端子２５３、２６３、２７３と、バッファ回路２５０、２６０、２７０とが接続される。
【０１０５】
次に、部分スキャンパスの構築処理（ステップＳ７００）を説明する。図１２に示されるように、部分スキャンパスの構築処理（ステップＳ７００）では、各機能マクロ回路内のスキャンフリップフロップを接続して部分スキャンパスが生成され、部分スキャンパスの後段にセレクタが接続される。したがって、まず、機能マクロ回路の順を示す繰り返し変数ｉに初期値０が設定される（ステップＳ７０４）。次に、機能マクロ回路内の部分スキャンパスの順を示す変数ｊに初期値０が設定される（ステップＳ７０６）。そして、以下の処理が所定の回数繰り返される。
【０１０６】
まず、機能マクロ回路毎の部分スキャンパスの長さが算出される。ここでは、部分スキャンパスには、スキャンフリップフロップが均等に割り当てられる。すなわち、ｉ番目の機能マクロ回路を示すＴ〔ｉ〕に含まれるスキャンフリップフロップ数を１チップのスキャンパスの数Ｎで除算した値を、部分スキャンパス長を示すＭ〔ｉ〕に代入する（ステップＳ７１０）。つまり、Ｍ〔ｉ〕は、Ｔ〔ｉ〕の部分スキャンパス長を表す。
【０１０７】
ここでは、Ｔ〔０〕（＝機能マクロ回路１５０）に含まれるスキャンフリップフロップ数は１０、スキャンパス数Ｎ＝２であるから、Ｍ〔０〕＝１０÷２＝５となる。同様に、Ｔ〔１〕（＝機能マクロ回路１６０）に含まれるスキャンフリップフロップ数は８、Ｔ〔２〕（＝機能マクロ回路１７０）に含まれるスキャンフリップフロップ数は６であるから、Ｍ〔１〕＝８÷２＝４、Ｍ〔２〕＝６÷２＝３となる。本実施の形態では、スキャンパス数＝２であり、スキャンフリップフロップの数が全て偶数として説明されるため、各機能マクロ回路内の部分スキャンパス長は、同じ長さとなる。部分スキャンパス長は、各機能マクロ回路内で同じ長さである必要はないが、全ての部分スキャンパスにスキャンフリップフロップが割り当てられるようにし、均等な長さであることが好ましい。
【０１０８】
機能マクロ回路を示すＴ〔ｉ〕における部分スキャンパス長Ｍ〔ｉ〕が求められると、機能マクロ回路に含まれるＭ〔ｉ〕個のスキャンフリップフロップを抽出して部分スキャンパスが生成され、部分スキャンパスを示すＳＰ〔ｉ，ｊ〕に格納される（ステップＳ７１４）。
【０１０９】
本実施の形態では、機能マクロ回路（１５０、１６０、１７０）にそれぞれ２本の部分スキャンパス（１５１／１５２、１６１／１６２、１７１／１７２）が構築される。ループ毎に、
ｉ＝０の時、機能マクロ回路１５０の部分スキャンパスが生成され、
ｊ＝０の時、ＳＰ〔０，０〕＝部分スキャンパス１５１、
ｊ＝１の時、ＳＰ〔０，１〕＝部分スキャンパス１５２、
ｉ＝１の時、機能マクロ回路１６０の部分スキャンパスが生成され、
ｊ＝０の時、ＳＰ〔１，０〕＝部分スキャンパス１６１、
ｊ＝１の時、ＳＰ〔１，１〕＝部分スキャンパス１６２、
ｉ＝２の時、機能マクロ回路１７０の部分スキャンパスが生成され、
ｊ＝０の時、ＳＰ〔２，０〕＝部分スキャンパス１７１、
ｊ＝１の時、ＳＰ〔２，１〕＝部分スキャンパス１７２、
となる。
【０１１０】
機能マクロ回路がテスト不要と判断された場合に、部分スキャンパス（ＳＰ〔ｉ，ｊ〕）をバイパスするためのセレクタが生成され、セレクタを示す値がＳＥＬ〔ｉ，ｊ〕に格納される（ステップＳ７１８）。
【０１１１】
本実施の形態では、機能マクロ回路（１５０、１６０、１７０）に形成される２本の部分スキャンパス（１５１／１５２、１６１／１６２、１７１／１７２）に対してそれぞれ１つずつセレクタ（２５１／２５２、２６１／２６２、２７１／２７２）が配置される。したがって、ループ毎に
ｉ＝０のとき、機能マクロ回路１５０をバイパスするセレクタが生成され、
ｊ＝０のとき、ＳＥＬ〔０，０〕＝セレクタ２５１、
ｊ＝１のとき、ＳＥＬ〔０，１〕＝セレクタ２５２、
ｉ＝１のとき、機能マクロ回路１６０をバイパスするセレクタが生成され、
ｊ＝０のとき、ＳＥＬ〔１，０〕＝セレクタ２６１、
ｊ＝１のとき、ＳＥＬ〔１，１〕＝セレクタ２６２、
ｉ＝２のとき、機能マクロ回路１７０をバイパスするセレクタが生成され、
ｊ＝０のとき、ＳＥＬ〔２，０〕＝セレクタ２７１、
ｊ＝１のとき、ＳＥＬ〔２，１〕＝セレクタ２７２、
となる。
【０１１２】
セレクタが生成されると、ＳＥＬ〔ｉ，ｊ〕により示されるセレクタを制御する信号が印加されるセレクト入力に、当該セレクタのバイパス制御を行う信号を出力する制御信号生成回路２０１のバッファ回路を示すＢＵＦ〔ｉ〕（２５０、２６０、２７０）の出力ノードが接続される（ステップＳ７２２）。
【０１１３】
本実施の形態では、各セレクタ（２５１／２５２、２６１／２６２、２７１／２７２）のセレクト入力ノードとバッファ回路（２５０、２６０、２７０）の出力ノードとが接続される。したがって、ループ毎に、
ｉ＝０の時、機能マクロ回路１５０をバイパスするセレクタが接続され、
ｊ＝０の時、ＳＥＬ〔０，０〕＝セレクタ２５１のセレクト入力ノードにＢＵＦ〔０〕＝バッファ２５０の出力ノードを接続、
ｊ＝１の時、ＳＥＬ〔０，１〕＝セレクタ２５２のセレクト入力ノードにＢＵＦ〔０〕＝バッファ２５０の出力ノードを接続、
ｉ＝１のとき、機能マクロ回路１６０のセレクタが接続され、
ｊ＝０の時、ＳＥＬ〔１，０〕＝セレクタ２６１のセレクト入力ノードにＢＵＦ〔１〕＝バッファ２６０の出力ノードを接続、
ｊ＝１の時、ＳＥＬ〔１，１〕＝セレクタ２６２のセレクト入力ノードにＢＵＦ〔１〕＝バッファ２６０の出力ノードを接続、
ｉ＝２のとき、機能マクロ回路１７０のセレクタが接続され、
ｊ＝０の時、ＳＥＬ〔２，０〕＝セレクタ２７１のセレクト入力ノードにＢＵＦ〔２〕＝バッファ２７０の出力ノードを接続、
ｊ＝１の時、ＳＥＬ〔２，１〕＝セレクタ２７２のセレクト入力ノードにＢＵＦ〔２〕＝バッファ２７０の出力ノードを接続、
となる。
【０１１４】
ＳＥＬ〔ｉ，ｊ〕により示されるセレクタのデータ入力ノードａ、ｂのうち、ＢＵＦ〔ｉ〕により示されるバッファ回路から出力されるバイパス制御信号がバイパスしないことを示すとき（無効時）に選択される側の入力ノードａに、ＳＰ〔ｉ，ｊ〕により示される部分スキャンパスの終点を示すスキャンフリップフロップの出力ノードが接続される（ステップＳ７２６）。
【０１１５】
本実施の形態では、各セレクタ（ＳＥＬ〔ｉ，ｊ〕：２５１、２５２、２６１、２６２、２７１、２７２）のノードａと各部分スキャンパス（ＳＰ〔ｉ，ｊ〕：１５１、１５２、１６１、１６２、１７１、１７２）の終点のスキャンフリップフロップの出力ノードとが接続される。したがって、ループ毎に、
ｉ＝０の時、機能マクロ回路１５０のセレクタが選択され、
ｊ＝０の時、ＳＥＬ〔０，０〕＝セレクタ２５１のノードａと、ＳＰ〔０，０〕＝部分スキャンパス１５１の最終段スキャンフリップフロップの出力ノードとを接続、
ｊ＝１の時、ＳＥＬ〔０，１〕＝セレクタ２５２のノードａと、ＳＰ〔０，１〕＝部分スキャンパス１５２の最終段スキャンフリップフロップの出力ノードとを接続、
ｉ＝１のとき、機能マクロ回路１６０のセレクタが選択され、
ｊ＝０の時、ＳＥＬ〔１，０〕＝セレクタ２６１のノードａと、ＳＰ〔１，０〕＝部分スキャンパス１６１の最終段スキャンフリップフロップの出力ノードとを接続、
ｊ＝１の時、ＳＥＬ〔１，１〕＝セレクタ２６２のノードａと、ＳＰ〔１，１〕＝部分スキャンパス１６２の最終段スキャンフリップフロップの出力ノードとを接続、
ｉ＝２のとき、機能マクロ回路１７０のセレクタが選択され、
ｊ＝０の時、ＳＥＬ〔２，０〕＝セレクタ２７１のノードａと、ＳＰ〔２，０〕＝部分スキャンパス１７１の最終段スキャンフリップフロップの出力ノードとを接続、
ｊ＝１の時、ＳＥＬ〔２，１〕＝セレクタ２７２のノードａと、ＳＰ〔２，１〕＝部分スキャンパス１７２の最終段スキャンフリップフロップの出力ノードとを接続、
となる。
【０１１６】
繰り返し変数ｊの値を＋１して（ステップＳ７３０）、繰り返し変数ｊの値がＮに達するまでステップＳ７１０から繰り返す（ステップＳ７３４−ＮＯ）。すなわち、各機能マクロ回路に対応するセレクタの数（部分スキャンパスの数）分の処理が行われる。
【０１１７】
繰り返し変数ｊの値がＮに達すると（ステップＳ７３４−ＹＥＳ）、繰り返し変数ｉの値を＋１して（ステップＳ７３８）、繰り返し変数の値ｉがＸに達するまでステップＳ７０６から繰り返す（ステップＳ７４２−ＮＯ）。すなわち、対象の機能マクロ回路の数分の処理が行われる。
【０１１８】
繰り返し変数ｉの値がＸに達すると（ステップＳ７４２−ＹＥＳ）、セレクタと部分スキャンパスとの接続が終了したことになる。
【０１１９】
次に、図１３Ａ、図１３Ｂを参照して、１チップスキャンパスの構築処理（ステップＳ８００）を説明する。
【０１２０】
まず、処理する機能マクロ回路の順をカウントする変数ｉに初期値０を設定する（ステップＳ８０４）。次に、機能マクロ回路内の部分スキャンパスの順をカウントする変数ｊに初期値０を設定する（ステップＳ８０６）。
【０１２１】
ＳＰ〔ｉ，ｊ〕により示される部分スキャンパスの始点になるスキャンフリップフロップのスキャンデータ入力ノードと、ＳＩ〔ｊ〕により示される前段の出力ノードとが接続される（ステップＳ８１０）。ｉ＝０のとき、ＳＩ〔ｊ〕は、初期設定によりスキャンイン端子を示しているため、機能マクロ回路１５０の部分スキャンパス１５１、１５２の入力ノードは、スキャンイン端子に接続される。次段（ｉ＞０）では、前段の部分スキャンパスの出力ノードが接続される。
【０１２２】
本実施の形態では、ループ毎に
ｉ＝０の時、機能マクロ回路１５０の部分スキャンパスが接続され、
ｊ＝０の時、ＳＰ〔０，０〕＝部分スキャンパス１５１のスキャンデータ入力ノードと、ＳＩ〔０〕＝スキャンイン端子５１１とを接続、
ｊ＝１の時、ＳＰ〔０，１〕＝部分スキャンパス１５２のスキャンデータ入力ノードと、ＳＩ〔１〕＝スキャンイン端子５１２とを接続、
ｉ＝１の時、機能マクロ回路１６０の部分スキャンパスが接続され、
ｊ＝０の時、ＳＰ〔１，０〕＝部分スキャンパス１６１のスキャンデータ入力ノードと、ＳＩ〔０〕＝セレクタ２５１の出力ノードｃとを接続、
ｊ＝１の時、ＳＰ〔１，１〕＝部分スキャンパス１６２のスキャンデータ入力ノードと、ＳＩ〔１〕＝セレクタ２５２の出力ノードｃとを接続、
ｉ＝２の時、機能マクロ回路１７０の部分スキャンパスが接続され、
ｊ＝０の時、ＳＰ〔２，０〕＝部分スキャンパス１７１のスキャンデータ入力ノードと、ＳＩ〔０〕＝セレクタ２６１の出力ノードｃとを接続、
ｊ＝１の時、ＳＰ〔２，１〕＝部分スキャンパス１７２のスキャンデータ入力ノードと、ＳＩ〔１〕＝セレクタ２６２の出力ノードｃとを接続、
となる。
【０１２３】
部分スキャンパスの接続が終わると、部分スキャンパスをバイパスする経路を各セレクタに接続する。すなわち、部分スキャンパスの入力ノードが接続されるノードにセレクタの入力ノードｂが接続される。したがって、ＳＥＬ〔ｉ，ｊ〕により示されるセレクタのデータ入力ノードのうち、ＢＵＦ〔ｉ〕が出力するバイパス制御信号がバイパスすることを示すとき（有効時）に選択される入力ノードｂに、ＳＩ〔ｊ〕により示されるノードが接続される（ステップＳ８１４）。なお、ＳＩ〔ｊ〕の値は、次の処理においてｉ、ｊの値が変わるごとに更新される。
【０１２４】
本実施の形態では、ループ毎に、
ｉ＝０の時、機能マクロ回路１５０のバイパス経路が接続され、
ｊ＝０の時、ＳＥＬ〔０，０〕＝セレクタ２５１のデータ入力ノードｂと、ＳＩ〔０〕＝スキャンイン端子５１１とを接続、
ｊ＝１の時、ＳＥＬ〔０，１〕＝セレクタ２５２のデータ入力ノードｂと、ＳＩ〔１〕＝スキャンイン端子５１２とを接続、
ｉ＝１の時、機能マクロ回路１６０のバイパス経路が接続され、
ｊ＝０の時、ＳＥＬ〔１，０〕＝セレクタ２６１のデータ入力ノードｂと、ＳＩ〔０〕＝セレクタ２５１の出力ノードｃとを接続、
ｊ＝１の時、ＳＥＬ〔１，１〕＝セレクタ２６２のデータ入力ノードｂと、ＳＩ〔１〕＝セレクタ２５２の出力ノードｃとを接続、
ｉ＝２の時、機能マクロ回路１７０のバイパス経路が接続され、
ｊ＝０の時、ＳＥＬ〔２，０〕＝セレクタ２７１のデータ入力ノードｂと、ＳＩ〔０〕＝セレクタ２６１の出力ノードｃとを接続、
ｊ＝１の時、ＳＥＬ〔２，１〕＝セレクタ２７２のデータ入力ノードｂと、ＳＩ〔１〕＝セレクタ２６２の出力ノードｃとを接続、
となる。
【０１２５】
各セレクタまでの接続が終わると、ＳＥＬ〔ｉ，ｊ〕により示されるセレクタの出力ノードｃをＳＩ〔ｊ〕に設定する。すなわち、次段の接続のために、現在のセレクタの出力ノードを次段の入力ノードとするように、データが更新される（ステップ８１８）。
【０１２６】
本実施の形態では、ループ毎に、
ｉ＝０の時、ＳＩ〔ｊ〕はスキャンイン端子から現在のセレクタの出力ノードｃに更新、
ｊ＝０の時、ＳＩ〔０〕＝“スキャンイン端子５１１→ＳＥＬ〔０，０〕＝セレクタ２５１出力ノードｃ”更新、
ｊ＝１の時、ＳＩ〔１〕＝“スキャンイン端子５１２→ＳＥＬ〔０，１〕＝セレクタ２５２出力ノードｃ”更新、
ｉ＝１の時、ＳＩ〔ｊ〕は現在のセレクタの出力ノードｃに更新、
ｊ＝０の時、ＳＩ〔０〕＝“ＳＥＬ〔０，０〕＝セレクタ２５１出力ノードｃ→ＳＥＬ〔１，０〕＝セレクタ２６１出力ノードｃ”更新、
ｊ＝１の時、ＳＩ〔１〕＝“ＳＥＬ〔０，１〕＝セレクタ２５２出力ノードｃ→ＳＥＬ〔１，０〕＝セレクタ２６２出力ノードｃ”更新、
ｉ＝２の時、ＳＩ〔ｊ〕は現在のセレクタの出力ノードｃに更新、
ｊ＝０の時、ＳＩ〔０〕＝“ＳＥＬ〔１，０〕＝セレクタ２６１出力ノードｃ→ＳＥＬ〔２，０〕＝セレクタ２７１出力ノードｃ”更新、
ｊ＝１の時、ＳＩ〔１〕＝“ＳＥＬ〔１，０〕＝セレクタ２６２出力ノードｃ→ＳＥＬ〔２，１〕＝セレクタ２７２出力ノードｃ”更新、
となる。
【０１２７】
繰り返し変数ｊの値を＋１し（ステップＳ８２２）、繰り返し変数ｊの値がＮに達するまでステップＳ８１０から繰り返す（ステップＳ８２６−ＮＯ）。すなわち、各機能マクロ回路に対応するセレクタの数（部分スキャンパスの数）分の処理が行われる。
【０１２８】
繰り返し変数ｊの値がＮ以上になると（ステップＳ８２６−ＹＥＳ）、繰り返し変数ｉの値を＋１し（ステップＳ８３０）、繰り返し変数ｉの値がＸに達するまでステップＳ８０６から繰り返す（ステップＳ８３４−ＮＯ）。すなわち、部分スキャンパスが全てＮ本のスキャンパスに含まれるように設定されるまで繰り返される。繰り返し変数ｉの値がＸに達すると（ステップＳ８３４−ＹＥＳ）、スキャンアウト端子を除いてＮ本の１チップスキャンパス構築が完了したことになる。
【０１２９】
さらに、各スキャンパスをスキャンアウト端子に接続する。まず、スキャンパスの順を示す繰り返し変数ｊに初期値０が設定される（ステップＳ８３８）。
【０１３０】
ＳＩ〔ｊ〕には、これまで処理したスキャンパスの出力ノードを示す値が保持されている（本実施の形態ではセレクタ２７１／２７２の出力ノードｃ）。したがって、このＳＩ〔ｊ〕により示される出力ノードと、ＳＯ〔ｊ〕により示されるスキャンアウト端子とが接続される（ステップＳ８４２）。
【０１３１】
本実施の形態では、ループ毎に、
ｊ＝０の時、ＳＩ［０］＝セレクタ２７１出力ノードｃと、ＳＯ〔０〕＝スキャンアウト端子５２１とを接続、
ｊ＝１の時、ＳＩ［１］＝セレクタ２７２出力ノードｃと、ＳＯ〔１〕＝スキャンアウト端子５２２とを接続、
となる。
【０１３２】
繰り返し変数ｊの値を＋１し（ステップ８４６）、繰り返し変数ｊの値がＮに達するまでステップＳ８４２から繰り返す（ステップＳ８５０−ＮＯ）。繰り返し変数ｊの値がＮに達すると（ステップＳ８５０−ＹＥＳ）、１チップのスキャンパスＮ本全てにスキャンアウト端子を接続完了したことになり、スキャンパス構築に関する全処理は終了する。
【０１３３】
このように、本実施の形態に係る半導体集積回路装置のスキャンテスト回路は設計される。このスキャンテスト回路設計方法は、第１の実施の形態と同様に、図８に示されるコンピュータシステムによって実現することができる。
【０１３４】
第２の実施の形態では、ボンディングオプション機能を有する半導体集積回路装置がテスト対象とされる。このような半導体集積回路装置では、ボンディングオプションにより、ユーザは、必要とする機能のみをＯＮ（動作）となるように設定する。ユーザが必要としない機能に関するスキャンパスは、１チップスキャンパスからバイパスさせることが可能となり、テスト時間を削減することが可能である。さらに、汎用ＬＳＩのように、複数の機能を１チップに搭載し、用途別に必要とする機能のみを活かして出荷するＬＳＩにおいて、不要とされた機能の回路部分はテスト対象から容易に外すことができる。したがって、テスト対象外の回路のみに故障があるようなＬＳＩは良品として判定できるため、スキャンテスト時の歩留まりを向上することができる。
【０１３５】
機能マクロ回路１５０、１６０、１７０を有する半導体集積回路装置の場合、通常、用途に関わらず全ての機能マクロ回路のスキャンテストが実施され、良否判定される。例えば、機能マクロ回路１５０、１６０、１７０のうち機能マクロ回路１５０、１６０の２つを必要とし、機能マクロ回路１７０を必要としない用途向けの半導体集積回路装置をスキャンテストする場合、通常では、用途に関わらず全機能マクロ回路のスキャンテストが実施される。そのため、機能マクロ回路１７０を必要としない用途向けの半導体集積回路装置においても機能マクロ回路１７０がスキャンテストされる。その時、機能マクロ回路１７０に故障が存在している場合があった場合、機能マクロ回路１７０を必要としないユーザにとってはそのＬＳＩは良品扱いすることが可能にも関わらず、機能マクロ回路１７０の故障がスキャンテスト結果として不良品判定される。その結果、歩留まりが過剰に低下する。
【０１３６】
しかし、第２の実施の形態では、汎用ＬＳＩにおいても、用途に応じた機能部分のみをテストすることが可能となる。すなわち、機能マクロ回路１５０、１６０を必要とするユーザに対するスキャンテストでは、機能マクロ回路１７０の故障はスキャンテスト結果には反映されない。そのため、機能マクロ回路１５０、１６０が故障していなければ良品として判定することが可能となり、歩留まりの過剰な低下を抑制することが可能である。
【０１３７】
上述では、機能マクロ回路を例にテスト対象回路を記述したが、スキャンテストの影響が限定される任意の回路ブロックとしてもよい。また、ある回路ブロックにおける部分スキャンパスの長さは、その回路ブロック毎に等しいことが好ましいが、均等に割り当てられない場合には、その回路ブロックの最長の部分スキャンパス長と最短の部分スキャンパス長との差が１以内であることが好ましい。その場合、全体のスキャンパス長も均等になるように各部分スキャンパスを結合することが好ましい。また、スキャンパスは、制御信号生成回路から出力されるバイパス制御信号によるバイパス制御を受けないスキャンフリップフロップを含んでもよい。ここでは、スキャンテスト回路を設計する装置として、汎用のコンピュータが用いられ、スキャンテスト回路を設計する方法は、コンピュータのプログラムとして実現されることを示したが、専用のハードウェアを用いて設計することも可能である。
【０１３８】
以上、実施の形態を参照して本願発明を説明したが、上記実施の形態は、矛盾のない限り組み合わせて実施可能である。また、本願発明は上記実施の形態に限定されるものではなく、本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【符号の説明】
【０１３９】
１１０、１２０、１３０、１４０、１５０、１６０、１７０  機能マクロ回路
１１１、１２１、１３１、１４１、１５１、１６１、１７１  部分スキャンパス
１１２、１２２、１３２、１４２、１５２、１６２、１７２  部分スキャンパス
１１３、１２３、１３３、１４３、１５３、１６３、１７３  組み合わせ回路
２００、２０１  制御信号生成回路
２１０、２２０、２３０、２４０  フリップフロップ
２１１、２２１、２３１、２４１、２５１、２６１、２７１  セレクタ
２１２、２２２、２３２、２４２、２５２、２６２、２７２  セレクタ
２５０、２６０、２７０  バッファ回路
２５３、２６３、２７３  ボンディングオプション端子
３００  サーバ装置
３０１  通信部
３０２  処理部
３０３  記録媒体
３０４  入出力部
３０５  ネットワーク
３０６  コンピュータ装置
３０７  通信部
３０８  記録媒体
３０９  処理部
３１０  入出力部
４０１、４０２、５０１、５０２  １チップスキャンパス
４１１、４１２、５１１、５１２  スキャンイン端子
４１３  設定入力端子
４２１、４２２、５２１、５２２  スキャンアウト端子
６０１、６０２  スキャンパス
６０４、６０５、６１０、６２０、６３０、６４０  機能マクロ回路
６０６、６０７  スキャンフリップフロップ
６１１、６２１、６３２、６４２  部分スキャンパス
６１３  組み合わせ回路
６５０、６５１、６５２、６５３、６５４  セレクタ
６６０、６６１、６６２  スキャンイン端子
６７０、６７１、６７２  スキャンアウト端子
６８０、６８１  制御信号生成回路
【図１】
2012208000.tif 000003
【図２】
2012208000.tif 000004
【図３】
2012208000.tif 000005
【図４】
2012208000.tif 000006
【図５】
2012208000.tif 000007
【図６】
2012208000.tif 000008
【図７Ａ】
2012208000.tif 000009
【図７Ｂ】
2012208000.tif 000010
【図８】
2012208000.tif 000011
【図９】
2012208000.tif 000012
【図１０】
2012208000.tif 000013
【図１１】
2012208000.tif 000014
【図１２】
2012208000.tif 000015
【図１３Ａ】
2012208000.tif 000016
【図１３Ｂ】
2012208000.tif 000017