"スキャンテストするときに、スキャンフリップフロップがシフトレジスタ状に接続されて形成される複数のスキャンパスのそれぞれに割り当てられ、前記複数のスキャンパスと同数の複数の部分スキャンパスを形成する複数のスキャンフリップフロップと、前記複数の部分スキャンパスの後段に設けられ、前記複数の部分スキャンパスをバイバスするセレクタとを備える回路ブロックと、前記セレクタが前記複数の部分スキャンパスをバイパスするか否かを制御する制御回路とを具備する半導体集積回路装置。前記セレクタは、前記複数の部分スキャンパスの入力ノードと出力ノードとに接続され、前記複数の部分スキャンパスをバイパスするときは、前記入力ノードから入力されるデータを選択して出力し、前記複数の部分スキャンパスを経由するときは前記出力ノードから入力されるデータを選択して出力する請求項1に記載の半導体集積回路装置。前記制御回路は、前記回路ブロック毎の前記セレクタに接続され、前記セレクタを制御する値を保持するフリップフロップを備える請求項1または請求項2に記載の半導体集積回路装置。前記フリップフロップは、外部から入力されるデータをシフトして保持するシフトレジスタを形成する請求項3に記載の半導体集積回路装置。前記制御回路は、前記回路ブロック毎の動作/非動作を設定するボンディングオプション端子に印加される信号を前記セレクタの選択制御ノードに供給するバッファ回路を備える請求項1または請求項2に記載の半導体集積回路装置。前記複数の部分スキャンパスは、第1の部分スキャンパスと第2の部分スキャンパスとを含み、前記第1の部分スキャンパスの長さを示すスキャンフリップフロップの数と、前記第2の部分スキャンパスの長さを示すスキャンフリップフロップの数との差が1以下である請求項1から請求項5のいずれかに記載の半導体集積回路装置。前記制御回路は、所定の故障検出率に達するテストパターンデータによるスキャンテストを終えると、前記所定の故障検出率に達した前記回路ブロックの全ての前記部分スキャンパスをバイパスする請求項1から請求項6のいずれかに記載の半導体集積回路装置。前記制御回路は、前記回路ブロックをスキャンテストするテストパターンデータが所定のパターン数に達したときに、前記回路ブロックの全ての前記部分スキャンパスをバイパスする請求項1から請求項6のいずれかに記載の半導体集積回路装置。前記回路ブロックは、所定の機能を有するマクロ回路を含む請求項1から請求項8のいずれかに記載の半導体集積回路装置。複数のスキャンパスを使用してスキャンテストを行う半導体集積回路装置のスキャンテスト回路を設計するスキャンテスト設計方法であって、前記半導体集積回路装置の回路ブロックに含まれる複数のスキャンフリップフロップを前記複数のスキャンパスのそれぞれに割り当てるステップと、割り当てられた前記スキャンフリップフロップをシフトレジスタ状に接続して前記複数のスキャンパスと同数の複数の部分スキャンパスを設定するステップと、前記複数の部分スキャンパスのそれぞれの後段に前記複数の部分スキャンパスをバイパスするセレクタを配置するステップと、前記回路ブロックの前記複数の部分スキャンパスおよび前記セレクタを縦続接続して前記複数のスキャンパスを設定するステップと、前記セレクタが前記複数の部分スキャンパスをバイパスするか否かを制御する制御回路を生成するステップとを具備するスキャンテスト回路設計方法。前記複数の部分スキャンパスは、第1の部分スキャンパスと第2の部分スキャンパスとを含み、前記割り当てるステップは、前記第1の部分スキャンパスの長さを示すスキャンフリップフロップの数と、前記第2の部分スキャンパスの長さを示すスキャンフリップフロップの数との差が1以下となるように割り当てるステップを含む請求項10に記載のスキャンテスト回路設計方法。前記セレクタは、所定の故障検出率に達するテストパターンデータによるスキャンテストを終えると、前記所定の故障検出率に達した前記回路ブロックの全ての前記部分スキャンパスをバイパスするように、前記部分スキャンパスの入力ノードおよび出力ノードと接続される請求項10または請求項11に記載のスキャンテスト回路設計方法。複数のスキャンパスを使用してスキャンテストを行う半導体集積回路装置のスキャンテスト回路を設計するスキャンテスト設計装置であって、前記半導体集積回路装置の回路ブロックに含まれる複数のスキャンフリップフロップを前記複数のスキャンパスのそれぞれに割り当て、前記複数のスキャンパスと同数の複数の部分スキャンパスを設定する部分スキャンパス生成部と、前記複数の部分スキャンパスをバイバスするセレクタを前記複数の部分スキャンパスの後段に設けるセレクタ生成部と、前記セレクタが前記複数の部分スキャンパスをバイパスするか否かを制御する制御回路を設ける制御回路生成部とを具備するスキャンテスト回路設計装置。前記複数の部分スキャンパスは、第1の部分スキャンパスと第2の部分スキャンパスとを含み、前記部分スキャンパス生成部は、前記第1の部分スキャンパスの長さを示すスキャンフリップフロップの数と、前記第2の部分スキャンパスの長さを示すスキャンフリップフロップの数との差が1以下となるように割り当てる請求項13に記載のスキャンテスト回路設計装置。前記セレクタは、所定の故障検出率に達するテストパターンデータによるスキャンテストを終えると、前記所定の故障検出率に達した前記回路ブロックの全ての前記部分スキャンパスをバイパスするように、前記部分スキャンパスの入力ノードおよび出力ノードと接続される請求項13または請求項14に記載のスキャンテスト回路設計装置。複数のスキャンパスを使用してスキャンテストを行う半導体集積回路装置のスキャンテスト回路を設計するスキャンテスト設計プログラムであって、前記半導体集積回路装置の回路ブロックに含まれる複数のスキャンフリップフロップを前記複数のスキャンパスのそれぞれに割り当てるステップと、割り当てられた前記スキャンフリップフロップをシフトレジスタ状に接続して前記複数のスキャンパスと同数の複数の部分スキャンパスを設定するステップと、前記複数の部分スキャンパスのそれぞれの後段に前記複数の部分スキャンパスをバイパスするセレクタを配置するステップと、前記回路ブロックの前記複数の部分スキャンパスおよび前記セレクタを縦続接続して前記複数のスキャンパスを設定するステップと、前記セレクタが前記複数の部分スキャンパスをバイパスするか否かを制御する制御回路を生成するステップとをコンピュータに実行させるためのスキャンテスト回路設計プログラム。前記複数の部分スキャンパスは、第1の部分スキャンパスと第2の部分スキャンパスとを含み、前記割り当てるステップにおいて、前記第1の部分スキャンパスの長さを示すスキャンフリップフロップの数と、前記第2の部分スキャンパスの長さを示すスキャンフリップフロップの数との差が1以下となるように割り当てるステップをコンピュータに実行させるための請求項16に記載のスキャンテスト回路設計プログラム。所定の故障検出率に達するテストパターンデータによるスキャンテストを終えると、前記所定の故障検出率に達した前記回路ブロックの全ての前記部分スキャンパスをバイパスするように、前記部分スキャンパスの入力ノードおよび出力ノードと、前記セレクタとを接続するステップをコンピュータに実行させるための請求項16または請求項17に記載のスキャンテスト回路設計プログラム。本発明は、複数のスキャンパスを有するスキャンテスト回路のスキャンテスト時間を短縮することができる半導体集積回路装置、スキャンテスト設計方法、スキャンテスト回路設計装置を提供する。以下に、[発明を実施するための形態]で使用される番号符号を用いて、課題を解決するための手段を説明する。これらの番号符号は、[特許請求の範囲]の記載と[発明を実施するための形態]との対応関係を明らかにするために付加されたものである。ただし、それらの番号符号を、[特許請求の範囲]に記載されている発明の技術的範囲の解釈に用いてはならない。本発明の観点では、半導体集積回路装置は、回路ブロック110、120、130、140、150、160、170と、制御回路200、201とを具備する。回路ブロック110、120、130、140、150、160、170は、複数のスキャンフリップフロップと、セレクタ211/212、221/222、231/232、241/242、251/252、261/262、271/272とを備える。複数のスキャンフリップフロップは、スキャンテストするときに、スキャンフリップフロップがシフトレジスタ状に接続されて形成される複数のスキャンパス401/402、501/502のそれぞれに割り当てられ、複数のスキャンパスと同数の複数の部分スキャンパス111/112、121/122、131/132、141/142、151/152、161/162、171/172を形成する。セレクタ211/212、221/222、231/232、241/242、251/252、261/262、271/272は、複数の部分スキャンパスの後段に設けられ、複数の部分スキャンパスをバイバスする。制御回路200、201は、セレクタが複数の部分スキャンパスをバイパスするか否かを制御する。本発明の他の観点では、複数のスキャンパスを使用してスキャンテストを行う半導体集積回路装置のスキャンテスト回路を設計するスキャンテスト回路設計方法は、半導体集積回路装置の回路ブロックに含まれる複数のスキャンフリップフロップを複数のスキャンパスのそれぞれに割り当てるステップと、割り当てられたスキャンフリップフロップをシフトレジスタ状に接続して複数のスキャンパスと同数の複数の部分スキャンパスを設定するステップと、複数の部分スキャンパスのそれぞれの後段に複数の部分スキャンパスをバイパスするセレクタを配置するステップと、回路ブロックの複数の部分スキャンパスおよびセレクタを縦続接続して複数のスキャンパスを設定するステップと、セレクタが複数の部分スキャンパスをバイパスするか否かを制御する制御回路を生成するステップとを具備する。また、本発明の他の観点では、複数のスキャンパスを使用してスキャンテストを行う半導体集積回路装置のスキャンテスト回路を設計するスキャンテスト回路設計装置は、部分スキャンパス生成部と、セレクタ生成部と、制御回路生成部とを具備する。部分スキャンパス生成部は、半導体集積回路装置の回路ブロックに含まれる複数のスキャンフリップフロップを複数のスキャンパスのそれぞれに割り当て、複数のスキャンパスと同数の複数の部分スキャンパスを設定する。セレクタ生成部は、複数の部分スキャンパスをバイバスするセレクタを複数の部分スキャンパスの後段に設ける。制御回路生成部は、セレクタが複数の部分スキャンパスをバイパスするか否かを制御する制御回路を設ける。さらに、本発明の他の観点では、複数のスキャンパスを使用してスキャンテストを行う半導体集積回路装置のスキャンテスト回路を設計するテスト回路の設計プログラムは、半導体集積回路装置の回路ブロックに含まれる複数のスキャンフリップフロップを複数のスキャンパスのそれぞれに割り当てるステップと、割り当てられたスキャンフリップフロップをシフトレジスタ状に接続して複数のスキャンパスと同数の複数の部分スキャンパスを設定するステップと、複数の部分スキャンパスのそれぞれの後段に複数の部分スキャンパスをバイパスするセレクタを配置するステップと、回路ブロックの複数の部分スキャンパスおよびセレクタを縦続接続して複数のスキャンパスを設定するステップと、セレクタが複数の部分スキャンパスをバイパスするか否かを制御する制御回路を生成するステップとをコンピュータに実行させる。本発明によれば、複数のスキャンパスを有するテスト回路のスキャンテスト時間を短縮することができる半導体集積回路装置、スキャンテスト回路設計方法、スキャンテスト回路設計装置を提供することができる。図面を参照して本発明を実施するための形態が説明される。第1の実施の形態図3は、本発明の第1の実施の形態に係る半導体集積回路装置のスキャンテスト時の構成を示す図である。半導体集積回路装置は、スキャンテスト対象機能として4つの機能マクロ回路110、120、130、140と、制御信号生成回路200と、セレクタ211、212、221、222、231、232、241、242とを有する。この半導体集積回路装置には2本のスキャンパス401、402が設定され、これらの機能マクロ回路に対するスキャンテストが実施される。機能マクロ回路110は、組み合わせ回路113と複数のスキャンフリップフロップとを含む。機能マクロ回路110に含まれる複数のスキャンフリップフロップは、スキャンパス401、402に対応して2つに分けられ、スキャンテスト時にそれぞれ部分スキャンパス111、112を形成する。部分スキャンパス111の入力ノードは、スキャンイン端子411に接続され、スキャンパターンSI1が入力される。部分スキャンパス111の後段には、セレクタ211が設けられる。セレクタ211の入力ノードa、bは、部分スキャンパス111の出力ノード、入力ノードにそれぞれ接続される。また、部分スキャンパス112の入力ノードは、スキャンイン端子412に接続され、スキャンパターンSI2が入力される。部分スキャンパス112の後段には、セレクタ212が設けられる。セレクタ212の入力ノードa、bは、部分スキャンパス112の出力ノード、入力ノードにそれぞれ接続される。したがって、セレクタ211、212を制御することにより、部分スキャンパス111、112をバイパスすることができる。機能マクロ回路120は、組み合わせ回路123と複数のスキャンフリップフロップとを含む。機能マクロ回路120に含まれる複数のスキャンフリップフロップは、スキャンパス401、402に対応して2つに分けられ、スキャンテスト時にそれぞれ部分スキャンパス121、122を形成する。部分スキャンパス121の入力ノードは、セレクタ211の出力ノードcに接続され、部分スキャンパス121の後段には、セレクタ221が設けられる。セレクタ221の入力ノードa、bは、部分スキャンパス121の出力ノード、入力ノードにそれぞれ接続される。また、部分スキャンパス122の入力ノードは、セレクタ212の出力ノードcに接続され、部分スキャンパス122の後段には、セレクタ222が設けられる。セレクタ222の入力ノードa、bは、部分スキャンパス122の出力ノード、入力ノードにそれぞれ接続される。したがって、セレクタ221、222を制御することにより、部分スキャンパス121、122をバイパスすることができる。機能マクロ回路130は、組み合わせ回路133と複数のスキャンフリップフロップとを含む。機能マクロ回路130に含まれる複数のスキャンフリップフロップは、スキャンパス401、402に対応して2つに分けられ、スキャンテスト時にそれぞれ部分スキャンパス131、132を形成する。部分スキャンパス131の入力ノードは、セレクタ221の出力ノードcに接続され、部分スキャンパス131の後段には、セレクタ231が設けられる。セレクタ231の入力ノードa、bは、部分スキャンパス131の出力ノード、入力ノードにそれぞれ接続される。また、部分スキャンパス132の入力ノードは、セレクタ222の出力ノードcに接続され、部分スキャンパス132の後段には、セレクタ232が設けられる。セレクタ232の入力ノードa、bは、部分スキャンパス132の出力ノード、入力ノードにそれぞれ接続される。したがって、セレクタ231、232を制御することにより、部分スキャンパス131、132をバイパスすることができる。機能マクロ回路140は、組み合わせ回路143と複数のスキャンフリップフロップとを含む。機能マクロ回路140に含まれる複数のスキャンフリップフロップは、スキャンパス401、402に対応して2つに分けられ、スキャンテスト時にそれぞれ部分スキャンパス141、142を形成する。部分スキャンパス141の入力ノードは、セレクタ231の出力ノードcに接続され、部分スキャンパス141の後段には、セレクタ241が設けられる。セレクタ241の入力ノードa、bは、部分スキャンパス141の出力ノード、入力ノードにそれぞれ接続される。また、部分スキャンパス142の入力ノードは、セレクタ232の出力ノードcに接続され、部分スキャンパス142の後段には、セレクタ242が設けられる。セレクタ242の入力ノードa、bは、部分スキャンパス142の出力ノード、入力ノードにそれぞれ接続される。したがって、セレクタ241、242を制御することにより、部分スキャンパス141、142をバイパスすることができる。セレクタ241の出力ノードcは、スキャンアウト端子421に接続され、セレクタ242の出力ノードcはスキャンアウト端子422に接続される。スキャンアウト端子421、422から出力されるスキャンテスト結果SO1、SO2は、LSI外部で観測される。制御信号生成回路200は、スキャンテストを実施する機能マクロ回路数と同数のフリップフロップを有する。すなわち、制御信号生成回路200は、スキャンテスト対象に対応するフリップフロップ210、220、230、240を備える。フリップフロップ210、220、230、240は、直列に接続され、所定のクロック信号に応答してデータをシフトするシフトレジスタを形成する。フリップフロップ210の入力ノードは、設定入力端子413に接続され、外部から設定信号PIを入力する。直列に接続されるフリップフロップ210、220、230、240は、設定入力端子413から入力される設定信号PIをシフト動作にて各フリップフロップに送り、データが設定可能になっている。フリップフロップ210の出力は、セレクタ211/212の選択制御ノードに接続される。フリップフロップ220の出力は、セレクタ221/222の選択制御ノードに接続される。フリップフロップ230の出力は、セレクタ231/232の選択制御ノードに接続される。フリップフロップ240の出力は、セレクタ241/242の選択制御ノードに接続される。制御信号生成回路200は、機能マクロ回路110、140、120、130のテストに使用されるスキャンパスのいずれかをバイパスするか否かを制御する。なお、図1では、設定入力端子413が1本の場合を示している。この場合4つのフリップフロップに値を設定するのに4サイクル必要となり、設定入力端子413PIが複数本準備できる場合は、フリップフロップを直列ではなく並列に並べる構成にして、値の設定に必要なサイクルを削減する事も可能である。したがって、いずれのスキャンパスもバイパスせずに1チップでテストする場合には、スキャンパス401では、スキャンイン端子411→スキャンパス111→セレクタ211→スキャンパス121→セレクタ221→スキャンパス131→セレクタ231→スキャンパス141→セレクタ241→スキャンアウト端子421の順にスキャンデータが通過する。また、スキャンパス402では、スキャンイン端子412→スキャンパス112→セレクタ212→スキャンパス122→セレクタ222→スキャンパス132→セレクタ232→スキャンパス142→セレクタ242→スキャンアウト端子422の順にスキャンデータが通過する。第1の実施の形態に係るテスト回路の動作について説明する。当該半導体集積回路装置のスキャンテストを実施するユーザは、スキャンテスト開始前に、各機能マクロ回路のスキャンパスをバイパスするための条件として各機能マクロ回路の目標故障検出率を決定しておく。スキャンテストにおけるスキャンパターンデータは、ATPGAutomaticTestPatternGeneratorにより生成されるが、目標故障検出率に達した機能マクロ回路をバイパスした状態のスキャンパターンデータが生成される。スキャンテスト開始前に、制御信号生成回路200のフリップフロップ210、220、230、240にセレクタのバイパス制御が無効となるデータが設定される。すなわち、セレクタ211、212、221、222、231、232、241、242は、それぞれバイパスしない部分スキャンパス111、112、121、122、131、132、141、142を選択するように設定される。したがって、スキャンテスト開始直後は、バイパスされない前述のスキャンパス401、402によって全機能マクロ回路に対して故障検出が行われることになる。その状態を保持したままスキャンイン端子411、412からスキャンパス401、402にスキャンパターンデータSI1、SI2が入力され、テスト結果SO1、SO2がスキャンアウト端子421、422から読み出され、スキャンテストが行われる。スキャンテスト開始前に設定されたスキャンパスのバイパス条件である目標検出率をいずれかの機能マクロ回路が満たすスキャンパターンデータまで実行されると、制御信号生成回路200に設定端子413から設定信号PIが入力されて、バイパス条件を満たす機能マクロ回路の部分スキャンパスをバイパスする。例えば、機能マクロ回路110が最初に条件を満たすと、設定入力端子413を介して設定信号PIが入力され、制御信号生成回路200のフリップフロップ210のデータが書き換えられる。制御信号生成回路200から出力されるバイパス制御信号に基づいて、セレクタ211、212は、選択入力を入力ノードaから入力ノードbに切り替える。すなわち、制御信号生成回路200のフリップフロップ210の値は、バイパス制御が有効となる値に更新される。さらに言い換えると、フリップフロップ210は、機能マクロ回路110の部分スキャンパス111、112の出力データではなく、部分スキャンパス111、112の入力データスキャンイン端子411、412から入力されるスキャンインデータSI1、SI2がセレクタ211、212の出力ノードcへ伝播するようにセレクタを制御する値に更新される。したがって、スキャンパス401、402からそれぞれス部分キャンパス111、112がバイパスされる。この結果、スキャンパス401は、スキャンイン端子411→セレクタ211→スキャンパス121→セレクタ221→スキャンパス131→セレクタ231→スキャンパス141→セレクタ241→スキャンアウト端子421の経路に更新される。スキャンパス402は、スキャンイン端子412→セレクタ212→スキャンパス122→セレクタ222→スキャンパス132→セレクタ232→スキャンパス142→セレクタ242→スキャンアウト端子422の経路に更新される。これ以降は、機能マクロ回路120、130、140のいずれかが、目標故障検出率に達するスキャンパターンデータによるテストが行われるまで、制御信号生成回路200のフリップフロップ210、220、230、240の値は、更新された値を保持して、テストが行われる。機能マクロ回路120、130、140のいずれかが目標故障検出率に達すると、目標故障検出率に達した機能マクロ回路のスキャンパスをバイパスする動作が開始される。例えば、機能マクロ回路140が次に条件を満たすと、設定入力端子413を介して設定信号PIが入力され、制御信号生成回路200のフリップフロップ240のデータが書き換えられる。制御信号生成回路200から出力されるバイパス制御信号に基づいて、セレクタ241、242は、選択入力を入力ノードaから入力ノードbに切り替える。すなわち、制御信号生成回路200のフリップフロップ240の値は、バイパス制御が有効となる値に更新される。さらに言い換えると、フリップフロップ240は、機能マクロ回路140の部分スキャンパス141、142の出力データではなく、部分スキャンパス141、142の入力データセレクタ231、232のノードcから出力されるデータがセレクタ241、242の出力ノードcへ伝播するようにセレクタを制御する値に更新される。したがって、スキャンパス401、402からそれぞれ部分スキャンパス141、142がバイパスされる。この結果、スキャンパス401は、スキャンイン端子411→セレクタ211→スキャンパス121→セレクタ221→スキャンパス131→セレクタ231→セレクタ241→スキャンイン端子421の経路に更新される。スキャンパス402は、スキャンイン端子412→セレクタ212→スキャンパス122→セレクタ222→スキャンパス132→セレクタ232→セレクタ242→スキャンアウト端子422の経路に更新される。これ以降は、機能マクロ回路120、130のいずれかが、目標故障検出率に達するスキャンパターンデータによるテストが行われるまで、制御信号生成回路200のフリップフロップ210、220、230、240の値は、更新された値を保持し、テストが行われる。機能マクロ回路120、130のいずれかが目標故障検出率に達した場合、その機能マクロ回路のスキャンパスをバイパスする動作が同じように行われる。このように、ユーザによって設定されたバイパス条件を満足する毎に、制御信号生成回路200の設定が更新され、その機能マクロ回路の部分スキャンパスがバイパスされる。したがって、1チップのスキャンパスを短くしてテスト時間を削減しながら、全ての機能がテスト不要と判断されるまでスキャンテストを継続することができる。また、制御信号生成回路200のフリップフロップ210、220、230、240の値の更新は、予め設定されるタイミングで行われる。まず、部分スキャンパスをバイパスしない設定に固定したままATPGによってテストパターンデータ作成を実施し、各機能マクロ回路が目標故障検出率に達するパターン数を確認しておく。また、制御信号生成回路200のフリップフロップの値を更新するスクリプトATPGにより実行されるが作成される。ATPGがテストパターンデータを作成して、目標故障検出率になるパターン数に達した時に、ATPGは、そのスクリプトを実行して制御信号生成回路200に供給する設定信号PIのデータを作成する。さらに、目標故障検出率に満たない回路のテストパターンデータを作成する。このような方法により、条件を満たした機能マクロ回路を順にバイパスしてテストするためのデータを作成することができる。ここでは、スキャンパスをバイパスするための条件として目標故障検出率を挙げたが、目標テスト時間を満足するテストパターン数などを条件に選択しても良い。本実施の形態に係るスキャンテスト回路を生成する方法を、図4、図5、図6、図7A、図7Bを参照して、以下に説明する。ここでは、説明を簡単にするために、各機能マクロ回路はスキャンフリップフロップを偶数個備え、それぞれのスキャンパスに均等に割り当てられる場合を示す。図4に示されるように、本実施の形態に係るスキャンテスト回路は、初期設定処理ステップS100、制御信号生成回路の生成処理ステップS200、部分スキャンパスの構築処理ステップS300、機能マクロ回路毎のスキャンパスを結合する1チップスキャンパスの構築処理ステップS400を行って生成される。初期設定処理ステップS100では、処理中に使用される変数の初期値および初期集合の設定が行われる。制御信号生成回路の生成処理ステップS200では、テスト対象の機能マクロ回路の数に合わせて制御信号生成回路200が生成される。部分スキャンパスの構築処理ステップS300では、機能マクロ回路毎に生成される部分スキャンパスが設定される。1チップスキャンパスの構築処理ステップS400では、ステップS400において生成される機能マクロ回路毎の部分スキャンパスを結合して1チップのスキャンパスが構築される。初期設定処理S100では、スキャンパス構築に必要な変数に初期値および初期集合が設定される。ここでは、回路、端子等は、オブジェクトにより示される。1変数Nには、対象の半導体集積回路装置内に構築されるスキャンパスの数が設定される。ここでは、スキャンパス401、402の2本であるから、N=2となる。2変数Xには、テスト対象とする機能マクロ回路数が設定される。ここでは、機能マクロ回路110、120、130、140の4回路であるから、X=4となる。3変数TX-1:0には、テスト対象とする機能マクロ回路の集合が設定される。ここでは、機能マクロ回路110、120、130、140の4回路であるから、T3:0={機能マクロ回路140、機能マクロ回路130、機能マクロ回路120、機能マクロ回路110}となる。4変数MX-1:0には、TX-1:0により示される機能マクロ回路の部分スキャンパス長を示す数値が設定される。初期設定の時点では、初期値φ空集合が設定される。5変数SIN-1:0には、初期設定の時点ではスキャンイン端子の集合が設定される。ここでは、スキャンイン端子はスキャンパス2本に対応して2つであるから、SI1:0={スキャンイン端子412、スキャンイン端子411}となる。変数SIは、処理中においては、結合されたスキャンパスの終端出力ノードを示す。6変数SON-1:0には、スキャンアウト端子の集合が設定される。ここでは、スキャンアウト端子は、スキャンパス2本に対応して2つであるから、SO1:0={スキャンアウト端子422、スキャンアウト端子421}となる。7変数SPX-1:0,N-1:0には、TX-1:0により示されるテスト対象の機能マクロ回路毎に、テストするためのN本の部分スキャンパスの集合が設定される。初期設定の時点では初期値φ空集合が設定される。8変数SELX-1:0,N-1:0には、部分スキャンパスをバイパスするセレクタの集合が設定される。初期設定の時点では初期値φ空集合が設定される。9変数FFX-1:0には、制御信号生成回路200内部に搭載される、各機能マクロ回路の部分スキャンパスのバイパス制御を行うフリップフロップの集合が設定される。ここでは、4個のフリップフロップであるから、FF3:0={フリップフロップ240、フリップフロップ230、フリップフロップ220、フリップフロップ210}となる。10変数PIには、制御信号生成回路200にデータ入力するための設定入力端子413の集合が設定される。ここでは、1個の入力端子であるから、PI={設定入力端子413}となる。11変数i、jは、処理中の繰り返し回数を表す変数繰り返し変数であり、初期値0が設定される。図5に示されるように、制御信号生成回路の生成処理ステップS200は、制御信号生成回路200内のフリップフロップ210、220、230、240と設定入力端子413とを直列に接続する処理である。変数iは、そのフリップフロップの順を示す。FF0により示される始めのフリップフロップ210のデータ入力ノードと、PIにより示される設定入力端子413とが接続されるステップS210。2つ目のフリップフロップを示すFF1からは、前に接続したフリップフロップに接続することになる。変数iに初期値1が設定されるステップS214。FFi-1によって示される前段のフリップフロップのデータ出力ノードと、FFiによって示されるフリップフロップのデータ入力ノードとが接続されるステップS220。繰り返し変数iの値を1してステップS228、Xに達するまでステップS220から繰り返すステップS230-NO。したがって、PI-FF0-FF1-FF2-FF3と接続される。すなわち、図3に示される回路では、設定入力端子413-フリップフロップ210-フリップフロップ220-フリップフロップ230-フリップフロップ240が接続されたことになり、制御信号生成回路200が生成される。ステップS228において、i=X=4になると処理を終了するステップS230-YES。次に、部分スキャンパスの構築処理ステップS300を説明する。図6に示されるように、部分スキャンパスの構築処理ステップS300では、各機能マクロ回路内のスキャンフリップフロップを接続して部分スキャンパスが生成され、部分スキャンパスの後段にセレクタが接続される。したがって、まず、機能マクロ回路の順を示す繰り返し変数iに初期値0が設定されるステップS304。次に、機能マクロ回路内の部分スキャンパスの順を示す繰り返し変数jに初期値0が設定されるステップS306。そして、以下の処理が所定の回数繰り返される。まず、機能マクロ回路毎の部分スキャンパスの長さが算出される。ここでは、部分スキャンパスには、スキャンフリップフロップが均等に割り当てられる。すなわち、i番目の機能マクロ回路を示すTiに含まれるスキャンフリップフロップ数を1チップのスキャンパスの数Nで除算した値を、部分スキャンパス長を示すMiに代入するステップS310。つまり、Miは、Tiの部分スキャンパス長を表す。ここでは、T0=機能マクロ回路110に含まれるスキャンフリップフロップ数は10、スキャンパス数N=2であるから、M0=10÷2=5となる。同様に、T1=機能マクロ回路120に含まれるスキャンフリップフロップ数は8、T2=機能マクロ回路130に含まれるスキャンフリップフロップ数は12、T3=機能マクロ回路140に含まれるスキャンフリップフロップ数は6であるから、M[1]=8÷2=4、M[2]=12÷2=6、M[3]=6÷2=3となる。本実施の形態では、スキャンパス数=2であり、スキャンフリップフロップの数が全て偶数として説明されるため、各機能マクロ回路内の部分スキャンパス長は、同じ長さとなる。部分スキャンパス長は、各機能マクロ回路内で同じ長さである必要はないが、全ての部分スキャンパスにスキャンフリップフロップが割り当てられるようにし、均等な長さであることが好ましい。部分スキャンパス長、全体のスキャンパス長がほぼ均等であれば、各パスのテストを終えるタイミングがほぼ同時となり、テスト時間を短縮することが容易になる。機能マクロ回路を示すTiにおける部分スキャンパス長Miが求められると、機能マクロ回路に含まれるMi個のスキャンフリップフロップを抽出して部分スキャンパスが生成され、部分スキャンパスを示すSPi,jに格納されるステップS314。本実施の形態では、機能マクロ回路110、120、130、140にそれぞれ2本の部分スキャンパス111/112、121/122、131/132、141/142が構築される。ループ毎に、i=0の時、機能マクロ回路110の部分スキャンパスが生成され、j=0の時、SP0,0=部分スキャンパス111、j=1の時、SP0,1=部分スキャンパス112、i=1の時、機能マクロ回路120の部分スキャンパスが生成され、j=0の時、SP1,0=部分スキャンパス121、j=1の時、SP1,1=部分スキャンパス122、i=2の時、機能マクロ回路130の部分スキャンパスが生成され、j=0の時、SP2,0=部分スキャンパス131、j=1の時、SP2,1=部分スキャンパス132、i=3の時、機能マクロ回路140の部分スキャンパスが生成され、j=0の時、SP3,0=部分スキャンパス141、j=1の時、SP3,1=部分スキャンパス142、となる。機能マクロ回路がテスト不要と判断された場合に、部分スキャンパスSPi,jをバイパスするためのセレクタが生成され、セレクタを示す値がSELi,jに格納されるステップS318。本実施の形態では、機能マクロ回路110、120、130、140に形成される2本の部分スキャンパス111/112、121/122、131/132、141/142に対してそれぞれ1つずつセレクタ211/212、221/222、231/232、241/242が配置される。したがって、ループ毎に、i=0の時、機能マクロ回路110をバイパスするセレクタが生成され、j=0の時、SEL0,0=セレクタ211、j=1の時、SEL0,1=セレクタ212、i=1の時、機能マクロ回路120をバイパスするセレクタが生成され、j=0の時、SEL1,0=セレクタ221、j=1の時、SEL1,1=セレクタ222、i=2の時、機能マクロ回路130をバイパスするセレクタが生成され、j=0の時、SEL2,0=セレクタ231、j=1の時、SEL2,1=セレクタ232、i=3の時、機能マクロ回路140をバイパスするセレクタが生成され、j=0の時、SEL3,0=セレクタ241、j=1の時、SEL3,1=セレクタ242、となる。セレクタが生成されると、SELi,jにより示されるセレクタを制御する信号が印加されるセレクト入力に、当該セレクタのバイパス制御を行う値を保持する制御信号生成回路200内のフリップフロップを示すFFi210、220、230、240の出力が接続されるステップS322。本実施の形態では、各セレクタ211/212、221/222、231/232、241/242のセレクト入力ノードとフリップフロップ210、220、230、240の出力ノードとが接続される。したがって、ループ毎に、i=0の時、機能マクロ回路110をバイパスするセレクタが接続され、j=0の時、SEL0,0=セレクタ211のセレクト入力ノードにFF0=フリップフロップ210の出力ノードを接続、j=1の時、SEL0,1=セレクタ212のセレクト入力ノードにFF0=フリップフロップ210の出力ノードを接続、i=1の時、機能マクロ回路120をバイパスするセレクタが接続され、j=0の時、SEL1,0=セレクタ221のセレクト入力ノードにFF1=フリップフロップ220の出力ノードを接続、j=1の時、SEL1,1=セレクタ222のセレクト入力ノードにFF1=フリップフロップ220の出力ノードを接続、i=2の時、機能マクロ回路130をバイパスするセレクタが接続され、j=0の時、SEL2,0=セレクタ231のセレクト入力ノードにFF2=フリップフロップ230の出力ノードを接続、j=1の時、SEL2,1=セレクタ232のセレクト入力ノードにFF2=フリップフロップ230の出力ノードを接続、i=3の時、機能マクロ回路140をバイパスするセレクタが接続され、j=0の時、SEL3,0=セレクタ241のセレクト入力ノードにFF3=フリップフロップ240の出力ノードを接続、j=1の時、SEL3,1=セレクタ242のセレクト入力ノードにFF3=フリップフロップ240の出力ノードを接続、となる。SELi,jにより示されるセレクタのデータ入力ノードa、bのうち、FFiにより示されるフリップフロップから出力されるバイパス制御信号がバイパスしないことを示すとき無効時に選択される側の入力ノードaに、SPi,jにより示される部分スキャンパスの終点を示すスキャンフリップフロップの出力ノードが接続されるステップS326。本実施の形態では、各セレクタSELi,j:211、212、221、222、231、232、241、242のノードaと各部分スキャンパスSPi,j:111、112、121、122、131、132、141、142の終点のスキャンフリップフロップの出力ノードとが接続される。したがって、ループ毎に、i=0の時、機能マクロ回路110のセレクタが選択され、j=0の時、SEL0,0=セレクタ211のノードaと、SP0,0=部分スキャンパス111の最終段スキャンフリップフロップの出力ノードとを接続、j=1の時、SEL0,1=セレクタ212のノードaと、SP0,1=部分スキャンパス112の最終段スキャンフリップフロップの出力ノードとを接続、i=1の時、機能マクロ回路120のセレクタが選択され、j=0の時、SEL1,0=セレクタ221のノードaと、SP1,0=部分スキャンパス121の最終段スキャンフリップフロップの出力ノードとを接続、j=1の時、SEL1,1=セレクタ222のノードaと、SP1,1=部分スキャンパス122の最終段スキャンフリップフロップの出力ノードとを接続、i=2の時、機能マクロ回路130のセレクタが選択され、j=0の時、SEL2,0=セレクタ231のノードaと、SP2,0=部分スキャンパス131の最終段スキャンフリップフロップの出力ノードとを接続、j=1の時、SEL2,1=セレクタ232のノードaと、SP2,1=部分スキャンパス132の最終段スキャンフリップフロップの出力ノードとを接続、i=3の時、機能マクロ回路140のセレクタが選択され、j=0の時、SEL3,0=セレクタ241のノードaと、SP3,0=部分スキャンパス141の最終段スキャンフリップフロップの出力ノードとを接続、j=1の時、SEL3,1=セレクタ242のノードaと、SP3,1=部分スキャンパス142の最終段スキャンフリップフロップの出力ノードとを接続、となる。繰り返し変数jの値を1してステップS330、繰り返し変数jの値がNに達するまでステップS310から繰り返すステップS334-NO。すなわち、各機能マクロ回路に対応するセレクタの数部分スキャンパスの数分の処理が行われる。繰り返し変数jの値がNに達するとステップS334-YES、繰り返し変数iの値を1してステップS338、繰り返し変数の値iがXに達するまでステップS306から繰り返すステップS342-NO。すなわち、対象の機能マクロ回路の数分の処理が行われる。繰り返し変数iの値がXに達するとステップS342-YES、セレクタと部分スキャンパスとの接続が終了したことになる。このように、各機能マクロ回路に関してiを0からX-1まで、その機能マクロ回路iに含まれる部分スキャンパスに関してjを0からN-1まで、部分スキャンパスを生成し、その部分スキャンパスをバイパスするセレクタを設ける処理が行われる。次に、1チップ内のスキャンパスの構築処理が行われる。図7A、図7Bを参照して、1チップスキャンパスの構築処理ステップS400の処理内容を説明する。まず、処理する機能マクロ回路の順をカウントする変数iに初期値0を設定するステップS404。次に、機能マクロ回路内の部分スキャンパスの順をカウントする変数jに初期値0を設定するステップS406。SPi,jにより示される部分スキャンパスの始点になるスキャンフリップフロップのスキャンデータ入力ノードと、SIjにより示される前段の出力ノードとが接続されるステップS410。i=0のとき、SIjは、初期設定によりスキャンイン端子を示しているため、機能マクロ回路110の部分スキャンパス111、112の入力ノードは、スキャンイン端子に接続される。次段i>0では、前段の部分スキャンパスの出力ノードが接続される。本実施の形態では、ループ毎に、i=0の時、機能マクロ回路110の部分スキャンパスが接続され、j=0の時、SP0,0=部分スキャンパス111のスキャンデータ入力ノードと、SI0=スキャンイン端子411とを接続、j=1の時、SP0,1=部分スキャンパス112のスキャンデータ入力ノードと、SI1=スキャンイン端子412とを接続、i=1の時、機能マクロ回路120の部分スキャンパスが接続され、j=0の時、SP1,0=部分スキャンパス121のスキャンデータ入力ノードと、SI0=セレクタ211の出力ノードcとを接続、j=1の時、SP1,1=部分スキャンパス122のスキャンデータ入力ノードと、SI1=セレクタ212の出力ノードcとを接続、i=2の時、機能マクロ回路130の部分スキャンパスが接続され、j=0の時、SP2,0=部分スキャンパス131のスキャンデータ入力ノードと、SI0=セレクタ221の出力ノードcとを接続、j=1の時、SP2,1=部分スキャンパス132のスキャンデータ入力ノードと、SI1=セレクタ222の出力ノードcとを接続、i=3の時、機能マクロ回路140の部分スキャンパスが接続され、j=0の時、SP3,0=部分スキャンパス141のスキャンデータ入力ノードと、SI0=セレクタ231の出力ノードcとを接続、j=1の時、SP3,1=部分スキャンパス142のスキャンデータ入力ノードと、SI1=セレクタ232の出力ノードcとを接続、となる。部分スキャンパスの接続が終わると、部分スキャンパスをバイパスする経路を各セレクタに接続する。すなわち、部分スキャンパスの入力ノードが接続されるノードにセレクタの入力ノードbが接続される。したがって、SELi,jにより示されるセレクタのデータ入力ノードのうち、FFiが出力するバイパス制御信号がバイパスすることを示すとき有効時に選択される入力ノードbに、SIjにより示されるノードが接続されるステップS414。なお、SIjの値は、次の処理においてi、jの値が変わるごとに更新される。本実施の形態では、ループ毎に、i=0のとき、機能マクロ回路110のバイパス経路が接続され、j=0の時、SEL0,0=セレクタ211のデータ入力ノードbと、SI0=スキャンイン端子411とを接続、j=1の時、SEL0,1=セレクタ212のデータ入力ノードbと、SI1=スキャンイン端子412とを接続、i=1の時、機能マクロ回路120のバイパス経路が接続され、j=0の時、SEL1,0=セレクタ221のデータ入力ノードbと、SI0=セレクタ211の出力ノードcとを接続、j=1の時、SEL1,1=セレクタ222のデータ入力ノードbと、SI1=セレクタ212の出力ノードcとを接続、i=2の時、機能マクロ回路130のバイパス経路が接続され、j=0の時、SEL2,0=セレクタ231のデータ入力ノードbと、SI0=セレクタ221の出力ノードcとを接続、j=1の時、SEL2,1=セレクタ232のデータ入力ノードbと、SI1=セレクタ222の出力ノードcとを接続、i=3のとき、機能マクロ回路140のバイパス経路が接続され、j=0の時、SEL3,0=セレクタ241のデータ入力ノードbと、SI0=セレクタ231の出力ノードcとを接続、j=1、SEL3,1=セレクタ242のデータ入力ノードbと、SI1=セレクタ232の出力ノードcとを接続、となる。各セレクタまでの接続が終わると、SELi,jにより示されるセレクタの出力ノードcをSIjに設定する。すなわち、次段の接続のために、現在のセレクタの出力ノードを次段の入力ノードとするように、データが更新されるステップS418。本実施の形態では、ループ毎に、i=0の時、SIjはスキャンイン端子から現在のセレクタの出力ノードcに更新、j=0の時、SI0=スキャンイン端子411→SEL0,0=セレクタ211出力ノードc更新、j=1の時、SI1=スキャンイン端子412→SEL0,1=セレクタ212出力ノードc更新、i=1の時、SIjは現在のセレクタの出力ノードcに更新、j=0の時、SI0=SEL0,0=セレクタ211出力ノードc→SEL1,0=セレクタ221出力ノードc更新、j=1の時、SI1=SEL0,1=セレクタ212出力ノードc→SEL1,1=セレクタ222出力ノードc更新、i=2の時、SIjは現在のセレクタの出力ノードcに更新、j=0の時、SI0=SEL1,0=セレクタ221出力ノードc→SEL2,0=セレクタ231出力ノードc更新、j=1の時、SI1=SEL1,1=セレクタ222出力ノードc→SEL2,1=セレクタ232出力ノードc更新、i=3の時、SIjは現在のセレクタの出力ノードcに更新、j=0の時、SI0=SEL2,0=セレクタ231出力ノードc→SEL3,0=セレクタ241出力ノードc更新、j=1の時、SI1=SEL2,1=セレクタ232出力ノードc→SEL3,1=セレクタ242出力ノードc更新、となる。繰り返し変数jの値を1しステップS422、繰り返し変数jの値がNに達するまでステップS410から繰り返すステップS426-NO。すなわち、同一機能マクロ回路の部分スキャンパスのうち、スキャンパスに接続されていない部分スキャンパスを全てスキャンパスに接続する。繰り返し変数jの値がN以上になるとステップS426-YES、繰り返し変数iの値を1しステップS430、繰り返し変数iの値がXに達するまでステップS406から繰り返すステップS434-NO。すなわち、部分スキャンパスが全てN本のスキャンパスに含まれるように設定されるまで繰り返される。繰り返し変数iの値がXに達するとステップS434-YES、スキャンアウト端子を除いてN本の1チップスキャンパス構築が完了したことになる。ここでは、スキャンイン端子411、412から機能マクロ回路140のセレクタ241、242に至る2本のスキャンパスが設定されることになる。さらに、各スキャンパスはスキャンアウト端子に接続される。まず、スキャンパスの順を示す繰り返し変数jに初期値0が設定されるステップS438。SIjには、これまで処理したスキャンパスの出力ノードを示す値が保持されている本実施の形態ではセレクタ241/242の出力ノードc。したがって、このSIjにより示される出力ノードと、SOjにより示されるスキャンアウト端子とが接続されるステップS442。本実施の形態では、ループ毎に、j=0、SI0=セレクタ241出力ノードcと、SO0=スキャンアウト端子421とを接続、j=1、SI[1]=セレクタ242出力ノードcと、SO1=スキャンアウト端子422とを接続、となる。繰り返し変数jの値を1しステップ446、繰り返し変数jの値がNに達するまでステップS442から繰り返すステップS450-NO。繰り返し変数jの値がNに達するとステップS450-YES、1チップのスキャンパスN本全てにスキャンアウト端子を接続完了したことになり、スキャンパス構築に関する全処理は終了する。以上により、スキャンイン端子411/412→部分スキャンパス111/112→セレクタ211/212→部分スキャンパス121/122→セレクタ221/222→部分スキャンパス131/132→セレクタ231/232→部分スキャンパス141/142→セレクタ241/242→スキャンアウト端子421/422となる2本のスキャンパスが設定される。図4~図7A、図7Bに示されるように、本実施の形態に係るスキャンテスト回路設計方法は、コンピュータシステムによって実現可能である。例えば、図8に示されるように、サーバ装置300と複数のコンピュータ装置306とを有するコンピュータシステムにおいて、上述のスキャンテスト回路設計方法を実施することができる。本発明の実施の形態に係るスキャンテスト回路設計方法を実施するためのコンピュータシステムは、例えば、サーバ装置300と、ネットワーク305と、コンピュータ装置306とを備える。サーバ装置300は、通信部301と、CPUCentralProcessingUnitを備える処理部302と、記録媒体303と、入出力インターフェースである入出力部304とを具備する。コンピュータ装置306は、通信部307と、記録媒体308と、CPUを備える処理部309と、入出力インターフェースである入出力部310とを具備する。ネットワーク305は、コンピュータ装置306とサーバ装置300との間の通信を接続する。ネットワーク305は、移動体通信網や、専用線網や、LANLocalAreaNetworkといった有線通信や無線通信を含めた各種のネットワーク、あるいはこれらのネットワークが相互に接続されたネットワークを適用可能である。また、ネットワークによる接続なしに、単独のコンピュータ装置で実現することも可能である。記録媒体303は、本実施の形態におけるスキャンテスト回路設計を実現するための実行プログラムや、ネットリストデータ、スキャンインアウト端子情報、スキャンフリップフロップ情報といったデータを記憶する。記録媒体303は、ハードディスクやRAMRandomAccessMemoryやROMReadOnlyMemory等の記憶装置を含む。処理部302は、記録媒体303に記憶される実行プログラムを読み込んで実行し、サーバ装置300の機能を実現する。なお、各実行プログラムやデータは、サーバ装置300の管理者により、キーボードやマウス等の入力機器、LCDLiquidCrystalDisplay等の出力機器を含む入出力部304を介して外部から記録媒体303へ格納されたり、表示されたりする。また、サーバ装置300は、通信部301によってネットワーク305を介して、コンピュータ装置306へ実行プログラムやデータを提供することが可能である。コンピュータ装置306は、本実施の形態におけるスキャンテスト回路設計を実現するための生成システムを実行する。コンピュータ装置306は、例えば、パーソナルコンピュータに例示される一般的な汎用コンピュータである。コンピュータ装置306は、通信部307を備え、ネットワーク305を介してサーバ装置300と通信が可能である。コンピュータ装置306は、ネットワーク305を介してサーバ装置300へ接続し、スキャンテスト回路設計を実現するための実行プログラムやデータを取得し、記憶部308へ記憶する。コンピュータ装置306は、CPUで構成される処理部309を備える。この処理部309は、記憶部308に記憶される実行プログラムを読み込んで実行し、コンピュータ装置306の所定の機能を実現する。なお、コンピュータ装置306は、コンピュータ装置306の使用者との入出力インターフェースである入出力部310を備える。入出力部310は、キーボードやマウス等の入力機器、LCD等の出力機器を含む。コンピュータ装置306は、上述の構成により、サーバ装置300から実行プログラムを取得して実行し、スキャンテスト回路設計を実現する。ここで、本実施の形態におけるスキャンテスト回路設計の実行プログラムは、サーバ装置300の記録媒体303に記憶される形態には限定されない。実行プログラムは、例えば、CDCompactDiskやフラッシュメモリを搭載したUSBUniversalSerialBusメモリといった持ち運び可能な記憶媒体に記録されてもよい。この場合、実行プログラムは、これらの持ち運び可能な記憶媒体から、コンピュータ装置306が備えるCDドライブやUSBポート等を介して導入される。上述のように、本実施の形態では、スキャンフリップフロップを10個有する機能マクロ回路110、スキャンフリップフロップを6個有する機能マクロ回路140、スキャンフリップフロップを8個有する機能マクロ回路120、スキャンフリップフロップを12個有する機能マクロ回路130を搭載する半導体集積回路装置を例に、これらの機能を2本のスキャンパスによりテストする場合の構成、動作が示されている。スキャンテスト開始時、スキャンパス401、402は、スキャンパス上のスキャンフリップフロップが共に18個であるため、1パターンあたり18サイクルのテスト時間でスキャンテストが行われる。そして、ユーザがスキャンテスト開始前に設定した目標故障検出率に達したテストデータまでスキャンテストが行われた機能マクロ回路の部分スキャンパスがバイパスされる。例えば、機能マクロ回路140が最初にユーザにより設定される故障検出率に達するテストデータまでスキャンテストが行われたとする。機能マクロ回路140の部分スキャンパス141、142をバイパスさせるために、入力端子413を介して設定信号PIが入力され、制御信号生成回路200のフリップフロップ240の値がバイパス制御を有効とする値に更新される。すなわち、セレクタ241、242は、ノードbに入力される信号を選択して出力ノードcから出力するように制御される。この動作により、機能マクロ回路140の部分スキャンパス141、142がバイパスされる。これ以降は、スキャンパス401、402上からそれぞれ3個のスキャンフリップフロップがバイパスされるため、スキャンパス401、402は共に1パターンあたり15サイクルのテスト時間でスキャンテストが行われる。このように、どの機能マクロ回路がスキャンテスト対象外になったとしても、必ず全てのスキャンパスから少なくとも1個のスキャンフリップフロップを含む部分スキャンパスをバイパスさせるため、スキャンパス本数に依存せずにスキャンテスト時間を削減することが可能となる。第2の実施の形態図9は、本発明の第2の実施の形態に係るスキャンテスト時の半導体集積回路装置の構成を示す図である。半導体集積回路装置は、スキャンテスト対象機能として、3つの機能マクロ回路150、160、170を有し、1チップ内に2本のスキャンパス501、502が設定され、これらの機能マクロ回路に対するスキャンテストが実施される。汎用性を持たせて、多機能を実現するために多数の機能マクロ回路を搭載したLSIでは、それを採用するユーザにとってどの機能マクロ回路で実現するかは、当該LSIを搭載する装置やシステムによって異なり、ユーザにとって全く必要としない機能マクロ回路が搭載されることもある。よって、本実施の形態では、搭載されている3つの機能マクロ回路に対し、どの回路が実動作に利用されるのかを選択する機能を有する半導体集積回路装置が説明される。回路を選択する機能とは、例えば、チップ内部の機能のON動作/OFF停止制御を外部端子ボンディングオプション端子と呼ぶで任意に設定可能とすることなどである。第2の実施の形態に係る半導体集積回路装置は、機能マクロ回路150、160、170と、制御信号生成回路201と、セレクタ251、252、261、262、271、272と、ボンディングオプション端子253、263、273と、スキャンイン端子511、512と、スキャンアウト端子521、522とを備える。ボンディングオプション端子253は、印加される信号BO5により、スキャンテスト対象である機能マクロ回路150のON動作/OFF停止を制御する。ボンディングオプション端子263は、印加される信号BO6により、スキャンテスト対象である機能マクロ回路160のON動作/OFF停止を制御する。ボンディングオプション端子273は、印加される信号BO7により、スキャンテスト対象である機能マクロ回路170のON動作/OFF停止を制御する。機能マクロ回路150は、組み合わせ回路153と複数のスキャンフリップフロップとを含む。複数のスキャンフリップフロップは、スキャンパス501、502に対応して2つに分けられ、スキャンテスト時にそれぞれ部分スキャンパス151、152を形成する。部分スキャンパス151の入力ノードは、スキャンイン端子511に接続され、スキャンパターンSI1が入力される。部分スキャンパス151の後段には、セレクタ251が設けられる。セレクタ251の入力ノードa、bは、部分スキャンパス151の出力ノード、入力ノードにそれぞれ接続される。また、部分スキャンパス152の入力ノードは、スキャンイン端子512に接続され、スキャンパターンSI2が入力される。部分スキャンパス152の後段には、セレクタ252が設けられる。セレクタ252の入力ノードa、bは、部分スキャンパス152の出力ノード、入力ノードがそれぞれ接続される。したがって、セレクタ251、252を制御することにより、部分スキャンパス151、152をバイパスすることができる。機能マクロ回路160は、組み合わせ回路163と複数のスキャンフリップフロップとを含む。複数のスキャンフリップフロップは、スキャンパス501、502に対応して2つに分けられ、スキャンテスト時にそれぞれ部分スキャンパス161、162を形成する。部分スキャンパス161の入力ノードは、セレクタ251の出力ノードcに接続される。部分スキャンパス161の後段には、セレクタ261が設けられる。セレクタ261の入力ノードa、bは、部分スキャンパス161の出力ノード、入力ノードにそれぞれ接続される。また、部分スキャンパス162の入力ノードは、セレクタ252の出力ノードcに接続される。部分スキャンパス162の後段には、セレクタ262が設けられる。セレクタ262の入力ノードa、bは、部分スキャンパス162の出力ノード、入力ノードがそれぞれ接続される。したがって、セレクタ261、262を制御することにより、部分スキャンパス161、162をバイパスすることができる。機能マクロ回路170は、組み合わせ回路173と複数のスキャンフリップフロップとを含む。複数のスキャンフリップフロップは、スキャンパス501、502に対応して2つに分けられ、スキャンテスト時にそれぞれ部分スキャンパス171、172を形成する。部分スキャンパス171の入力ノードは、セレクタ261の出力ノードcに接続される。部分スキャンパス171の後段には、セレクタ271が設けられる。セレクタ271の入力ノードa、bは、部分スキャンパス171の出力ノード、入力ノードにそれぞれ接続される。また、部分スキャンパス172の入力ノードは、セレクタ262の出力ノードcに接続される。部分スキャンパス172の後段には、セレクタ272が設けられる。セレクタ272の入力ノードa、bは、部分スキャンパス172の出力ノード、入力ノードがそれぞれ接続される。したがって、セレクタ271、272を制御することにより、部分スキャンパス171、172をバイパスすることができる。制御信号生成回路201は、バッファ回路250、260、270を備える。バッファ回路250は、ボンディングオプション端子253に印加される信号BO5を入力し、セレクタ251、252にバイパス制御信号を出力する。バッファ回路250は、信号BO5がON動作を示す場合はスキャンパスのバイパス無効を示すバイパス制御信号を出力し、信号BO5がOFF停止を示す場合はスキャンパスのバイパス有効を示すバイパス制御信号を出力する。バッファ回路260は、ボンディングオプション端子263に印加される信号BO6を入力し、セレクタ261、262にバイパス制御信号を出力する。バッファ回路260は、信号BO6がON動作を示す場合はスキャンパスのバイパス無効を示すバイパス制御信号を出力し、信号BO6がOFF停止を示す場合はスキャンパスのバイパス有効を示すバイパス制御信号を出力する。バッファ回路270は、ボンディングオプション端子273に印加される信号BO7を入力し、セレクタ271、272にバイパス制御信号を出力する。バッファ回路270は、信号BO7がON動作を示す場合はスキャンパスのバイパス無効を示すバイパス制御信号を出力し、信号BO7がOFF停止を示す場合はスキャンパスのバイパス有効を示すバイパス制御信号を出力する。ボンディングオプションの設定値に基づいてバイパス制御信号を生成する制御信号生成回路201を有することにより、スキャンテスト開始時から、ユーザが必要とする機能だけをスキャンテストし、必要としない機能はスキャンパスをバイパスさせてスキャンテスト対象外にすることが可能となる。本実施の形態に係る半導体集積回路装置のスキャンテスト時の動作を説明する。ユーザは、このスキャンテスト回路を用いてスキャンテスト実施する際に、必要とする機能がON動作となり、不要な機能はOFF停止となるようにボンディングオプションの値を設定する。ボンディングオプションを設定することにより、必要としない機能のスキャンテストに使用するスキャンパスをバイパスすることが可能となる。例えば、以下3つの場合を例に説明する。全機能を必要とする場合全機能すなわち機能マクロ回路150、160、170が有効とされる。ボンディングオプション端子253、263、273にON動作を示す信号BO5、BO6、BO7が印加され、機能マクロ回路150、160、170がON動作状態となる。この設定により、制御信号生成回路201バッファ回路250、260、270は、全てのバイパス制御が無効となるバイパス制御信号を生成して、セレクタ251/252、セレクタ261/262、セレクタ271/272に出力する。セレクタ251/252、セレクタ261/262、セレクタ271/272は、ノードa側を選択する。したがって、スキャンパス501は、機能マクロ回路150の部分スキャンパス151、機能マクロ回路160の部分スキャンパス161、機能マクロ回路170の部分スキャンパス171を経由する経路となる。また、スキャンパス502は、機能マクロ回路150の部分スキャンパス152、機能マクロ回路160の部分スキャンパス162、機能マクロ回路170の部分スキャンパス172を経由する経路となる。スキャンテストは、この各部分スキャンパスを経由するスキャンパス501、502により実施されることになる。機能マクロ回路150、160を必要とする場合機能マクロ回路150、160が有効とされ、機能マクロ回路170が無効とされる。ボンディングオプション端子253、263にON動作を示す信号BO5、BO6が印加され、機能マクロ回路150、160がON動作状態となる。ボンディングオプション端子273にOFF停止を示す信号BO7が印加され、機能マクロ回路170がOFF停止状態となる。この設定により、制御信号生成回路201バッファ回路250、260、270は、バイパス制御が無効となるバイパス制御信号を生成してセレクタ251/252、セレクタ261/262に出力し、バイパス制御が有効となるバイパス制御信号を生成してセレクタ271/272に出力する。セレクタ251/252、セレクタ261/262はノードa側を選択し、セレクタ271/272はノードb側を選択する。したがって、スキャンパス501は、機能マクロ回路150の部分スキャンパス151、機能マクロ回路160の部分スキャンパス161を経由し、機能マクロ回路170の部分スキャンパス171をバイパスする経路となる。また、スキャンパス502は、機能マクロ回路150の部分スキャンパス152、機能マクロ回路160の部分スキャンパス162を経由し、機能マクロ回路170の部分スキャンパス172をバイパスする経路となる。スキャンテストは、この各部分スキャンパスを経由するスキャンパス501、502により実施されることになる。すなわち、スキャンパス501は、スキャンイン端子511→スキャンパス151→セレクタ251→スキャンパス161→セレクタ261→セレクタ271→スキャンアウト端子521の経路に更新され、スキャンパス502は、スキャンイン端子512→スキャンパス152→セレクタ252→スキャンパス162→セレクタ262→セレクタ272→スキャンアウト端子522の経路に更新される。機能マクロ回路150のみを必要とする場合機能マクロ回路150が有効とされ、機能マクロ回路160、170が無効とされる。ボンディングオプション端子253にON動作を示す信号BO5が印加され、機能マクロ回路150がON動作状態となる。ボンディングオプション端子263、273にOFF停止を示す信号BO6、BO7が印加され、機能マクロ回路160、170がOFF停止状態となる。この設定により、制御信号生成回路201バッファ回路250、260、270は、バイパス制御が無効となるバイパス制御信号を生成してセレクタ251/252に出力し、バイパス制御が有効となるバイパス制御信号を生成してセレクタ261/262、セレクタ271/272に出力する。セレクタ251/252はノードa側を選択し、セレクタ261/262、セレクタ271/272はノードb側を選択する。したがって、スキャンパス501は、機能マクロ回路150の部分スキャンパス151を経由し、機能マクロ回路160の部分スキャンパス161、機能マクロ回路170の部分スキャンパス171をバイパスする経路となる。また、スキャンパス502は、機能マクロ回路150の部分スキャンパス152を経由し、機能マクロ回路160の部分スキャンパス162、機能マクロ回路170の部分スキャンパス172をバイパスする経路となる。スキャンテストは、この各部分スキャンパスを経由するスキャンパス501、502により実施されることになる。すなわち、スキャンパス501は、スキャンイン端子511→スキャンパス151→セレクタ251→セレクタ261→セレクタ271→スキャンアウト端子521の経路に更新され、スキャンパス502は、スキャンイン端子512→スキャンパス152→セレクタ252→セレクタ262→セレクタ272→スキャンアウト端子522の経路に更新される。次に、本実施の形態に係る回路生成方法について説明する。第1の実施の形態に係る回路生成方法と比べると、制御信号生成回路201の生成方法が異なり、また、制御信号生成回路201との接続方法が異なるが、他は同じように処理される。したがって、全体の流れは、図10に示されるように、処理中に使用される変数の初期値および初期集合の設定が行われステップS500、制御信号生成回路の生成が行われステップS600、機能マクロ回路毎の部分スキャンパス構築が行われステップS700、機能マクロ回路毎のスキャンパスを結合して1チップのスキャンパス構築が行われるステップS800。以下各処理を詳細に説明する。まず、初期設定処理ステップS500では、スキャンパス構築に必要な変数に初期値および初期集合が設定される。ここでは、回路、端子等は、オブジェクトにより示される。1変数Nには、対象の半導体集積回路内に構築されるスキャンパスの数が設定される。ここでは、スキャンパス501、502の2本であるから、N=2となる。2変数Xには、ボンディングオプションによりON動作/OFF停止制御される機能マクロ回路数が設定される。ここでは、機能マクロ回路150、160、170の3回路であるから、X=3となる。3変数TX-1:0には、ボンディングオプションを用いてON動作/OFF停止制御が可能な機能マクロ回路の集合が設定される。ここでは、機能マクロ回路150、160、170の3回路であり、T2:0={機能マクロ回路170、機能マクロ回路160、機能マクロ回路150}となる。4変数MX-1:0には、TX-1:0により示される機能マクロ回路の部分スキャンパス長を示す数値が設定される。初期設定の時点では、初期値φ空集合が設定される。5変数SIN-1:0には、初期設定の時点ではスキャンイン端子の集合が設定される。ここでは、スキャンイン端子は、スキャンパス2本に対応して2つであるから、SI1:0={スキャンイン端子512、スキャンイン端子511}となる。変数SIは、処理中においては、結合されたスキャンパスの終端出力ノードを示す。6変数SON-1:0には、スキャンアウト端子の集合が設定される。ここでは、スキャンアウト端子は、スキャンパス2本に対応して2つであるから、SO1:0={スキャンアウト端子522、スキャンアウト端子521}となる。7変数SPX-1:0,N-1:0には、TX-1:0により示されるテスト対象の機能マクロ回路毎に、テストするためのN本の部分スキャンパスの集合が設定される。初期設定の時点では初期値φ空集合が設定される。8変数SELX-1:0,N-1:0には、部分スキャンパスをバイパスするセレクタの集合が設定される。初期設定の時点では初期値φ空集合が設定される。9変数BUFX-1:0には、制御信号生成回路201内部に搭載される、各機能マクロ回路の部分スキャンパスのバイパス制御を行うバッファ回路の集合が設定される。ここでは、3個のバッファ回路であるから、BUF2:0={バッファ回路270、バッファ回路260、バッファ回路250}となる。10変数BOX-1:0には、ボンディングオプション端子の集合が設定される。ここでは、BO2:0={ボンディングオプション端子273、ボンディングオプション端子263、ボンディングオプション端子253}となる。11変数i、jは、処理中の繰り返し回数を表す変数繰り返し変数であり、初期値0が設定される。図11に示されるように、制御信号生成回路の生成処理ステップS600は、制御信号生成回路201内のバッファ回路250、260、270を各部に接続する処理である。変数iは、そのバッファ回路の順を示し、初期値0が設定されるステップS610。BO0により示されるボンディングオプション端子253と、BUF0により示されるバッファ回路250とが接続されるステップS620。繰り返し変数iの値を1してステップS628、Xに達するまでステップS620から繰り返すステップS630-NO。したがって、i=1のとき、BO1により示されるボンディングオプション端子263と、BUF1により示されるバッファ回路260とが接続される。i=2のとき、BO2により示されるボンディングオプション端子273と、BUF2により示されるバッファ回路270とが接続される。ステップS628において、i=X=3になると処理を終了するステップS630-YES。このように、制御信号生成回路の生成処理では、ボンディングオプション端子253、263、273と、バッファ回路250、260、270とが接続される。次に、部分スキャンパスの構築処理ステップS700を説明する。図12に示されるように、部分スキャンパスの構築処理ステップS700では、各機能マクロ回路内のスキャンフリップフロップを接続して部分スキャンパスが生成され、部分スキャンパスの後段にセレクタが接続される。したがって、まず、機能マクロ回路の順を示す繰り返し変数iに初期値0が設定されるステップS704。次に、機能マクロ回路内の部分スキャンパスの順を示す変数jに初期値0が設定されるステップS706。そして、以下の処理が所定の回数繰り返される。まず、機能マクロ回路毎の部分スキャンパスの長さが算出される。ここでは、部分スキャンパスには、スキャンフリップフロップが均等に割り当てられる。すなわち、i番目の機能マクロ回路を示すTiに含まれるスキャンフリップフロップ数を1チップのスキャンパスの数Nで除算した値を、部分スキャンパス長を示すMiに代入するステップS710。つまり、Miは、Tiの部分スキャンパス長を表す。ここでは、T0=機能マクロ回路150に含まれるスキャンフリップフロップ数は10、スキャンパス数N=2であるから、M0=10÷2=5となる。同様に、T1=機能マクロ回路160に含まれるスキャンフリップフロップ数は8、T2=機能マクロ回路170に含まれるスキャンフリップフロップ数は6であるから、M1=8÷2=4、M2=6÷2=3となる。本実施の形態では、スキャンパス数=2であり、スキャンフリップフロップの数が全て偶数として説明されるため、各機能マクロ回路内の部分スキャンパス長は、同じ長さとなる。部分スキャンパス長は、各機能マクロ回路内で同じ長さである必要はないが、全ての部分スキャンパスにスキャンフリップフロップが割り当てられるようにし、均等な長さであることが好ましい。機能マクロ回路を示すTiにおける部分スキャンパス長Miが求められると、機能マクロ回路に含まれるMi個のスキャンフリップフロップを抽出して部分スキャンパスが生成され、部分スキャンパスを示すSPi,jに格納されるステップS714。本実施の形態では、機能マクロ回路150、160、170にそれぞれ2本の部分スキャンパス151/152、161/162、171/172が構築される。ループ毎に、i=0の時、機能マクロ回路150の部分スキャンパスが生成され、j=0の時、SP0,0=部分スキャンパス151、j=1の時、SP0,1=部分スキャンパス152、i=1の時、機能マクロ回路160の部分スキャンパスが生成され、j=0の時、SP1,0=部分スキャンパス161、j=1の時、SP1,1=部分スキャンパス162、i=2の時、機能マクロ回路170の部分スキャンパスが生成され、j=0の時、SP2,0=部分スキャンパス171、j=1の時、SP2,1=部分スキャンパス172、となる。機能マクロ回路がテスト不要と判断された場合に、部分スキャンパスSPi,jをバイパスするためのセレクタが生成され、セレクタを示す値がSELi,jに格納されるステップS718。本実施の形態では、機能マクロ回路150、160、170に形成される2本の部分スキャンパス151/152、161/162、171/172に対してそれぞれ1つずつセレクタ251/252、261/262、271/272が配置される。したがって、ループ毎にi=0のとき、機能マクロ回路150をバイパスするセレクタが生成され、j=0のとき、SEL0,0=セレクタ251、j=1のとき、SEL0,1=セレクタ252、i=1のとき、機能マクロ回路160をバイパスするセレクタが生成され、j=0のとき、SEL1,0=セレクタ261、j=1のとき、SEL1,1=セレクタ262、i=2のとき、機能マクロ回路170をバイパスするセレクタが生成され、j=0のとき、SEL2,0=セレクタ271、j=1のとき、SEL2,1=セレクタ272、となる。セレクタが生成されると、SELi,jにより示されるセレクタを制御する信号が印加されるセレクト入力に、当該セレクタのバイパス制御を行う信号を出力する制御信号生成回路201のバッファ回路を示すBUFi250、260、270の出力ノードが接続されるステップS722。本実施の形態では、各セレクタ251/252、261/262、271/272のセレクト入力ノードとバッファ回路250、260、270の出力ノードとが接続される。したがって、ループ毎に、i=0の時、機能マクロ回路150をバイパスするセレクタが接続され、j=0の時、SEL0,0=セレクタ251のセレクト入力ノードにBUF0=バッファ250の出力ノードを接続、j=1の時、SEL0,1=セレクタ252のセレクト入力ノードにBUF0=バッファ250の出力ノードを接続、i=1のとき、機能マクロ回路160のセレクタが接続され、j=0の時、SEL1,0=セレクタ261のセレクト入力ノードにBUF1=バッファ260の出力ノードを接続、j=1の時、SEL1,1=セレクタ262のセレクト入力ノードにBUF1=バッファ260の出力ノードを接続、i=2のとき、機能マクロ回路170のセレクタが接続され、j=0の時、SEL2,0=セレクタ271のセレクト入力ノードにBUF2=バッファ270の出力ノードを接続、j=1の時、SEL2,1=セレクタ272のセレクト入力ノードにBUF2=バッファ270の出力ノードを接続、となる。SELi,jにより示されるセレクタのデータ入力ノードa、bのうち、BUFiにより示されるバッファ回路から出力されるバイパス制御信号がバイパスしないことを示すとき無効時に選択される側の入力ノードaに、SPi,jにより示される部分スキャンパスの終点を示すスキャンフリップフロップの出力ノードが接続されるステップS726。本実施の形態では、各セレクタSELi,j:251、252、261、262、271、272のノードaと各部分スキャンパスSPi,j:151、152、161、162、171、172の終点のスキャンフリップフロップの出力ノードとが接続される。したがって、ループ毎に、i=0の時、機能マクロ回路150のセレクタが選択され、j=0の時、SEL0,0=セレクタ251のノードaと、SP0,0=部分スキャンパス151の最終段スキャンフリップフロップの出力ノードとを接続、j=1の時、SEL0,1=セレクタ252のノードaと、SP0,1=部分スキャンパス152の最終段スキャンフリップフロップの出力ノードとを接続、i=1のとき、機能マクロ回路160のセレクタが選択され、j=0の時、SEL1,0=セレクタ261のノードaと、SP1,0=部分スキャンパス161の最終段スキャンフリップフロップの出力ノードとを接続、j=1の時、SEL1,1=セレクタ262のノードaと、SP1,1=部分スキャンパス162の最終段スキャンフリップフロップの出力ノードとを接続、i=2のとき、機能マクロ回路170のセレクタが選択され、j=0の時、SEL2,0=セレクタ271のノードaと、SP2,0=部分スキャンパス171の最終段スキャンフリップフロップの出力ノードとを接続、j=1の時、SEL2,1=セレクタ272のノードaと、SP2,1=部分スキャンパス172の最終段スキャンフリップフロップの出力ノードとを接続、となる。繰り返し変数jの値を1してステップS730、繰り返し変数jの値がNに達するまでステップS710から繰り返すステップS734-NO。すなわち、各機能マクロ回路に対応するセレクタの数部分スキャンパスの数分の処理が行われる。繰り返し変数jの値がNに達するとステップS734-YES、繰り返し変数iの値を1してステップS738、繰り返し変数の値iがXに達するまでステップS706から繰り返すステップS742-NO。すなわち、対象の機能マクロ回路の数分の処理が行われる。繰り返し変数iの値がXに達するとステップS742-YES、セレクタと部分スキャンパスとの接続が終了したことになる。次に、図13A、図13Bを参照して、1チップスキャンパスの構築処理ステップS800を説明する。まず、処理する機能マクロ回路の順をカウントする変数iに初期値0を設定するステップS804。次に、機能マクロ回路内の部分スキャンパスの順をカウントする変数jに初期値0を設定するステップS806。SPi,jにより示される部分スキャンパスの始点になるスキャンフリップフロップのスキャンデータ入力ノードと、SIjにより示される前段の出力ノードとが接続されるステップS810。i=0のとき、SIjは、初期設定によりスキャンイン端子を示しているため、機能マクロ回路150の部分スキャンパス151、152の入力ノードは、スキャンイン端子に接続される。次段i>0では、前段の部分スキャンパスの出力ノードが接続される。本実施の形態では、ループ毎にi=0の時、機能マクロ回路150の部分スキャンパスが接続され、j=0の時、SP0,0=部分スキャンパス151のスキャンデータ入力ノードと、SI0=スキャンイン端子511とを接続、j=1の時、SP0,1=部分スキャンパス152のスキャンデータ入力ノードと、SI1=スキャンイン端子512とを接続、i=1の時、機能マクロ回路160の部分スキャンパスが接続され、j=0の時、SP1,0=部分スキャンパス161のスキャンデータ入力ノードと、SI0=セレクタ251の出力ノードcとを接続、j=1の時、SP1,1=部分スキャンパス162のスキャンデータ入力ノードと、SI1=セレクタ252の出力ノードcとを接続、i=2の時、機能マクロ回路170の部分スキャンパスが接続され、j=0の時、SP2,0=部分スキャンパス171のスキャンデータ入力ノードと、SI0=セレクタ261の出力ノードcとを接続、j=1の時、SP2,1=部分スキャンパス172のスキャンデータ入力ノードと、SI1=セレクタ262の出力ノードcとを接続、となる。部分スキャンパスの接続が終わると、部分スキャンパスをバイパスする経路を各セレクタに接続する。すなわち、部分スキャンパスの入力ノードが接続されるノードにセレクタの入力ノードbが接続される。したがって、SELi,jにより示されるセレクタのデータ入力ノードのうち、BUFiが出力するバイパス制御信号がバイパスすることを示すとき有効時に選択される入力ノードbに、SIjにより示されるノードが接続されるステップS814。なお、SIjの値は、次の処理においてi、jの値が変わるごとに更新される。本実施の形態では、ループ毎に、i=0の時、機能マクロ回路150のバイパス経路が接続され、j=0の時、SEL0,0=セレクタ251のデータ入力ノードbと、SI0=スキャンイン端子511とを接続、j=1の時、SEL0,1=セレクタ252のデータ入力ノードbと、SI1=スキャンイン端子512とを接続、i=1の時、機能マクロ回路160のバイパス経路が接続され、j=0の時、SEL1,0=セレクタ261のデータ入力ノードbと、SI0=セレクタ251の出力ノードcとを接続、j=1の時、SEL1,1=セレクタ262のデータ入力ノードbと、SI1=セレクタ252の出力ノードcとを接続、i=2の時、機能マクロ回路170のバイパス経路が接続され、j=0の時、SEL2,0=セレクタ271のデータ入力ノードbと、SI0=セレクタ261の出力ノードcとを接続、j=1の時、SEL2,1=セレクタ272のデータ入力ノードbと、SI1=セレクタ262の出力ノードcとを接続、となる。各セレクタまでの接続が終わると、SELi,jにより示されるセレクタの出力ノードcをSIjに設定する。すなわち、次段の接続のために、現在のセレクタの出力ノードを次段の入力ノードとするように、データが更新されるステップ818。本実施の形態では、ループ毎に、i=0の時、SIjはスキャンイン端子から現在のセレクタの出力ノードcに更新、j=0の時、SI0=スキャンイン端子511→SEL0,0=セレクタ251出力ノードc更新、j=1の時、SI1=スキャンイン端子512→SEL0,1=セレクタ252出力ノードc更新、i=1の時、SIjは現在のセレクタの出力ノードcに更新、j=0の時、SI0=SEL0,0=セレクタ251出力ノードc→SEL1,0=セレクタ261出力ノードc更新、j=1の時、SI1=SEL0,1=セレクタ252出力ノードc→SEL1,0=セレクタ262出力ノードc更新、i=2の時、SIjは現在のセレクタの出力ノードcに更新、j=0の時、SI0=SEL1,0=セレクタ261出力ノードc→SEL2,0=セレクタ271出力ノードc更新、j=1の時、SI1=SEL1,0=セレクタ262出力ノードc→SEL2,1=セレクタ272出力ノードc更新、となる。繰り返し変数jの値を1しステップS822、繰り返し変数jの値がNに達するまでステップS810から繰り返すステップS826-NO。すなわち、各機能マクロ回路に対応するセレクタの数部分スキャンパスの数分の処理が行われる。繰り返し変数jの値がN以上になるとステップS826-YES、繰り返し変数iの値を1しステップS830、繰り返し変数iの値がXに達するまでステップS806から繰り返すステップS834-NO。すなわち、部分スキャンパスが全てN本のスキャンパスに含まれるように設定されるまで繰り返される。繰り返し変数iの値がXに達するとステップS834-YES、スキャンアウト端子を除いてN本の1チップスキャンパス構築が完了したことになる。さらに、各スキャンパスをスキャンアウト端子に接続する。まず、スキャンパスの順を示す繰り返し変数jに初期値0が設定されるステップS838。SIjには、これまで処理したスキャンパスの出力ノードを示す値が保持されている本実施の形態ではセレクタ271/272の出力ノードc。したがって、このSIjにより示される出力ノードと、SOjにより示されるスキャンアウト端子とが接続されるステップS842。本実施の形態では、ループ毎に、j=0の時、SI[0]=セレクタ271出力ノードcと、SO0=スキャンアウト端子521とを接続、j=1の時、SI[1]=セレクタ272出力ノードcと、SO1=スキャンアウト端子522とを接続、となる。繰り返し変数jの値を1しステップ846、繰り返し変数jの値がNに達するまでステップS842から繰り返すステップS850-NO。繰り返し変数jの値がNに達するとステップS850-YES、1チップのスキャンパスN本全てにスキャンアウト端子を接続完了したことになり、スキャンパス構築に関する全処理は終了する。このように、本実施の形態に係る半導体集積回路装置のスキャンテスト回路は設計される。このスキャンテスト回路設計方法は、第1の実施の形態と同様に、図8に示されるコンピュータシステムによって実現することができる。第2の実施の形態では、ボンディングオプション機能を有する半導体集積回路装置がテスト対象とされる。このような半導体集積回路装置では、ボンディングオプションにより、ユーザは、必要とする機能のみをON動作となるように設定する。ユーザが必要としない機能に関するスキャンパスは、1チップスキャンパスからバイパスさせることが可能となり、テスト時間を削減することが可能である。さらに、汎用LSIのように、複数の機能を1チップに搭載し、用途別に必要とする機能のみを活かして出荷するLSIにおいて、不要とされた機能の回路部分はテスト対象から容易に外すことができる。したがって、テスト対象外の回路のみに故障があるようなLSIは良品として判定できるため、スキャンテスト時の歩留まりを向上することができる。機能マクロ回路150、160、170を有する半導体集積回路装置の場合、通常、用途に関わらず全ての機能マクロ回路のスキャンテストが実施され、良否判定される。例えば、機能マクロ回路150、160、170のうち機能マクロ回路150、160の2つを必要とし、機能マクロ回路170を必要としない用途向けの半導体集積回路装置をスキャンテストする場合、通常では、用途に関わらず全機能マクロ回路のスキャンテストが実施される。そのため、機能マクロ回路170を必要としない用途向けの半導体集積回路装置においても機能マクロ回路170がスキャンテストされる。その時、機能マクロ回路170に故障が存在している場合があった場合、機能マクロ回路170を必要としないユーザにとってはそのLSIは良品扱いすることが可能にも関わらず、機能マクロ回路170の故障がスキャンテスト結果として不良品判定される。その結果、歩留まりが過剰に低下する。しかし、第2の実施の形態では、汎用LSIにおいても、用途に応じた機能部分のみをテストすることが可能となる。すなわち、機能マクロ回路150、160を必要とするユーザに対するスキャンテストでは、機能マクロ回路170の故障はスキャンテスト結果には反映されない。そのため、機能マクロ回路150、160が故障していなければ良品として判定することが可能となり、歩留まりの過剰な低下を抑制することが可能である。上述では、機能マクロ回路を例にテスト対象回路を記述したが、スキャンテストの影響が限定される任意の回路ブロックとしてもよい。また、ある回路ブロックにおける部分スキャンパスの長さは、その回路ブロック毎に等しいことが好ましいが、均等に割り当てられない場合には、その回路ブロックの最長の部分スキャンパス長と最短の部分スキャンパス長との差が1以内であることが好ましい。その場合、全体のスキャンパス長も均等になるように各部分スキャンパスを結合することが好ましい。また、スキャンパスは、制御信号生成回路から出力されるバイパス制御信号によるバイパス制御を受けないスキャンフリップフロップを含んでもよい。ここでは、スキャンテスト回路を設計する装置として、汎用のコンピュータが用いられ、スキャンテスト回路を設計する方法は、コンピュータのプログラムとして実現されることを示したが、専用のハードウェアを用いて設計することも可能である。以上、実施の形態を参照して本願発明を説明したが、上記実施の形態は、矛盾のない限り組み合わせて実施可能である。また、本願発明は上記実施の形態に限定されるものではなく、本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。"