(57)【特許請求の範囲】
【請求項１】
少なくとも一つの供給源素子からのクロック信号を複数の被供給素子に分配・供給するクロック分配回路を設計するための方法であって、
所定位置に配置される該供給源素子と該複数の被供給素子との間を、最短経路で直接接続する信号ラインを仮配線する第１仮配線ステップと、
該第１仮配線ステップで仮配線された該信号ラインにより、該複数の被供給素子におけるクロックスキューが最適化されているか否かを判断する第１判断ステップと、
該第１判断ステップでクロックスキューが最適化されていないと判断された場合に、該複数の被供給素子を複数のグループに分割する第１グルーピングステップと、
該第１グルーピングステップで得られた該グループ毎に、一つのバッファを割り当て、該バッファの挿入・配置可能な領域内で複数のバッファ挿入候補位置を選択し、選択された各バッファ挿入候補位置について、当該バッファ挿入候補位置に配置された該バッファと当該グループに属する該被供給素子との間を最短経路で接続する信号ラインと、当該バッファ挿入候補位置に配置された該バッファと該供給源素子との間を最短経路で接続する信号ラインとを仮配線し、該複数のバッファ挿入候補位置の全てについて得られた仮配線結果に基づいて、該複数のバッファ挿入候補位置の中から、当該グループに属する該被供給素子におけるクロックスキューおよびクロック伝播遅延時間を最適化しうる候補位置を選択し、選択された候補位置に該バッファを挿入・配置する第１バッファ挿入ステップとを、該第１判断ステップでクロックスキューが最適化されていると判断されるまで、該第１バッファ挿入ステップで該複数のグループのそれぞれに挿入された該バッファを該複数の被供給素子とみなして、繰り返し実行した後、
該第１判断ステップでクロックスキューが最適化されていると判断された場合に、該第１仮配線ステップおよび該第１バッファ挿入ステップでの仮配線結果に従って、該供給源素子，該複数の被供給素子および該バッファの間を結ぶ信号ラインの配線経路を決定する最終配線ステップを実行することを特徴とする、クロック分配回路の設計方法。
【請求項２】
該第１バッファ挿入ステップにおいて、各グループに挿入される該バッファとして、該バッファから当該グループに属する該被供給素子までのクロック伝播遅延時間を最適化しうる特性を有するバッファを選択することを特徴とする、請求項１記載のクロック分配回路の設計方法。
【請求項３】
該供給源素子と該複数の被供給素子のうちの一部（以下、特定被供給素子という）との間に特定の機能を果たす特定素子が介在している場合、該第１仮配線ステップの実行に先立って、
該特定素子の配置可能な複数の特定素子配置候補位置を選択する選択ステップを実行し、
該選択ステップで選択された各特定素子候補位置について、
当該特定素子配置候補位置に配置される該特定素子と所定位置に配置される該特定被供給素子との間を、最短経路で直接接続する信号ラインを仮配線する第２仮配線ステップと、
該第２仮配線ステップで仮配線された該信号ラインにより、該特定被供給素子におけるクロックスキューが最適化されているか否かを判断する第２判断ステップと、
該第２判断ステップでクロックスキューが最適化されていないと判断された場合に、該特定被供給素子を複数のグループに分割する第２グルーピングステップと、
該第２グルーピングステップで得られた該グループ毎に、一つのバッファを割り当て、該バッファの挿入・配置可能な領域内で複数のバッファ挿入候補位置を選択し、選択された各バッファ挿入候補位置について、当該バッファ挿入候補位置に配置された該バッファと当該グループに属する該特定被供給素子との間を最短経路で接続する信号ラインと、当該バッファ挿入候補位置に配置された該バッファと該特定素子との間を最短経路で接続する信号ラインとを仮配線し、各バッファ挿入候補位置について得られた仮配線結果に基づいて、該複数のバッファ挿入候補位置の中から、当該グループに属する該特定被供給素子におけるクロックスキューおよびクロック伝播遅延時間を最適化しうる候補位置を選択し、選択された候補位置に該バッファを挿入・配置する第２バッファ挿入ステップとを、該第２判断ステップでクロックスキューが最適化されていると判断されるまで、該第２バッファ挿入ステップで該複数のグループのそれぞれに挿入された該バッファを該特定被供給素子とみなして、繰り返し実行するとともに、
該供給源素子と各特定素子配置候補位置に配置された該特定素子との間を最短経路で接続する信号ラインを仮配線する第３仮配線ステップを実行した後、
該複数の特定素子配置候補位置の全てについて該第２仮配線ステップ，該第２バッファ挿入ステップおよび該第３仮配線ステップで得られた仮配線結果に基づいて、該複数の特定素子配置候補位置の中から、該特定被供給素子におけるクロックスキューおよびクロック伝播遅延時間を最適化しうる候補位置を選択し、選択された候補位置に該特定素子を配置するとともに、選択された候補位置について得られた仮配線結果および該バッファの挿入位置を採用する特定素子配置ステップを実行してから、
該複数の被供給素子のうち該特定被供給素子を除いた被供給素子と該特定素子配置ステップで配置された該特定素子とを、該複数の被供給素子とみなして、該第１仮配線ステップ，該第１判断ステップ，該第１グルーピングステップ，該第１バッファ挿入ステップおよび該最終配線ステップを実行し、その際、該最終配線ステップでは、該特定素子配置ステップで採用された仮配線結果と該第１仮配線ステップおよび該第１バッファ挿入ステップでの仮配線結果と該特定素子の配置位置とに従って、該供給源素子，該複数の被供給素子，該バッファおよび該特定素子の間を結ぶ信号ラインの配線経路を決定することを特徴とする、請求項１または請求項２に記載のクロック分配回路の設計方法。
【請求項４】
該複数の被供給素子が異なる論理階層に属している場合、該第１仮配線ステップの実行に先立って、
各論理階層について、該論理階層に属する該被供給素子（以下、所属被供給素子という）に接続される入力端子を仮想的に設定する入力端子設定ステップと、
該入力端子設定ステップで設定された各入力端子を配置可能な複数の入力端子配置候補位置を選択する選択ステップとを実行し、
該選択ステップで選択された各入力端子配置候補位置について、
当該入力端子配置候補位置に配置される該入力端子と、該入力端子に接続され所定位置に配置される該所属被供給素子との間を、最短経路で直接接続する信号ラインを仮配線する第２仮配線ステップと、
該第２仮配線ステップで仮配線された該信号ラインにより、該所属被供給素子におけるクロックスキューが最適化されているか否かを判断する第２判断ステップと、
該第２判断ステップでクロックスキューが最適化されていないと判断された場合に、該所属被供給素子を複数のグループに分割する第２グルーピングステップと、
該第２グルーピングステップで得られた該グループ毎に、一つのバッファを割り当て、該バッファの挿入・配置可能な領域内で複数のバッファ挿入候補位置を選択し、選択された各バッファ挿入候補位置について、当該バッファ挿入候補位置に配置された該バッファと当該グループに属する該所属被供給素子との間を最短経路で接続する信号ラインと、当該バッファ挿入候補位置に配置された該バッファと該入力端子との間を最短経路で接続する信号ラインとを仮配線し、各バッファ挿入候補位置について得られた仮配線結果に基づいて、該複数のバッファ挿入候補位置の中から、当該グループに属する該所属被供給素子におけるクロックスキューおよびクロック伝播遅延時間を最適化しうる候補位置を選択し、選択された候補位置に該バッファを挿入・配置する第２バッファ挿入ステップとを、該第２判断ステップでクロックスキューが最適化されていると判断されるまで、該第２バッファ挿入ステップで該複数のグループのそれぞれに挿入された該バッファを該所属被供給素子とみなして、繰り返し実行するとともに、
該供給源素子と各入力端子配置候補位置に配置された該入力端子との間を最短経路で接続する信号ラインを仮配線する第３仮配線ステップを実行した後、
該複数の入力端子配置候補位置の全てについて該第２仮配線ステップ，該第２バッファ挿入ステップおよび該第３仮配線ステップで得られた仮配線結果に基づいて、該複数の入力端子配置候補位置の中から、該所属被供給素子におけるクロックスキューおよびクロック伝播遅延時間を最適化しうる候補位置を選択し、選択された候補位置に該入力端子を配置するとともに、選択された候補位置について得られた仮配線結果および該バッファの挿入位置を採用する入力端子配置ステップを実行してから、
該複数の論理階層のそれぞれについて該入力端子配置ステップで配置された複数の入力端子を、該複数の被供給素子とみなして、該第１仮配線ステップ，該第１判断ステップ，該第１グルーピングステップ，該第１バッファ挿入ステップおよび該最終配線ステップを実行し、その際、該最終配線ステップでは、該入力端子配置ステップで採用された仮配線結果と該第１仮配線ステップおよび該第１バッファ挿入ステップでの仮配線結果と該入力端子の配置位置とに従って、該供給源素子，該複数の被供給素子，該バッファおよび該入力端子の間を結ぶ信号ラインの配線経路を決定することを特徴とする、請求項１または請求項２に記載のクロック分配回路の設計方法。
【請求項５】
少なくとも一つの供給源素子からのクロック信号を複数の被供給素子に分配・供給するクロック分配回路を設計するための装置であって、
所定位置に配置された該供給源素子と該複数の被供給素子との間を、最短経路で直接接続する信号ラインを仮配線する第１仮配線部と、
該第１仮配線部によって仮配線された該信号ラインにより、該複数の被供給素子におけるクロックスキューが最適化されているか否かを判断する第１判断部と、
該第１判断部によってクロックスキューが最適化されていないと判断された場合に、該複数の被供給素子を複数のグループに分割する第１グルーピング部と、
該第１グルーピング部によって得られた該グループ毎に、一つのバッファを割り当て、該バッファの挿入・配置可能な領域内で複数のバッファ挿入候補位置を選択し、選択された各バッファ挿入候補位置について、当該バッファ挿入候補位置に配置された該バッファと当該グループに属する該被供給素子との間を最短経路で接続する信号ラインと、当該バッファ挿入候補位置に配置された該バッファと該供給源素子との間を最短経路で接続する信号ラインとを仮配線し、該複数のバッファ挿入候補位置の全てについて得られた仮配線結果に基づいて、該複数のバッファ挿入候補位置の中から、当該グループに属する該被供給素子におけるクロックスキューおよびクロック伝播遅延時間を最適化しうる候補位置を選択し、選択された候補位置に該バッファを挿入・配置する第１バッファ挿入部と、
該第１判断部でクロックスキューが最適化されていると判断された場合に、該第１仮配線部および該第１バッファ挿入部によって得られた仮配線結果に従って、該供給源素子，該複数の被供給素子および該バッファの間を結ぶ信号ラインの配線経路を決定する最終配線部とをそなえ、
該第１仮配線部，該第１判断部，該第１グルーピング部および該第１バッファ挿入部を、該第１判断部によってクロックスキューが最適化されていると判断されるまで、該第１バッファ挿入部によって該複数のグループのそれぞれに挿入された該バッファを該複数の被供給素子とみなして、繰り返し動作させた後、該最終配線部および供給源素子変更部を動作させることを特徴とする、クロック分配回路の設計装置。
【請求項６】
該供給源素子と該複数の被供給素子のうちの一部（以下、特定被供給素子という）との間に特定の機能を果たす特定素子が介在している場合に、該第１仮配線部の動作に先立って、該特定素子の配置可能な複数の特定素子配置候補位置を選択する選択部と、
該選択部によって選択された各特定素子候補位置に配置される該特定素子と所定位置に配置される該特定被供給素子との間におけるバッファの挿入・配置および該信号ラインの仮配線を行なう特定素子用設計部と、
該供給源素子と各特定素子配置候補位置に配置された該特定素子との間を最短経路で接続する信号ラインを仮配線する特定素子用仮配線部と、
該複数の特定素子配置候補位置の全てについて該特定素子用設計部および該特定素子用仮配線部によって得られた仮配線結果に基づいて、該複数の特定素子配置候補位置の中から、該特定被供給素子におけるクロックスキューおよびクロック伝播遅延時間を最適化しうる候補位置を選択し、選択された候補位置に該特定素子を配置するとともに、選択された候補位置について得られた仮配線結果および該バッファの挿入位置を採用する特定素子配置部とをそなえ、
該特定素子用設計部が、
各特定素子配置候補位置に配置される該特定素子と所定位置に配置される該特定被供給素子との間を、最短経路で直接接続する信号ラインを仮配線する第２仮配線部と、
該第２仮配線部によって仮配線された該信号ラインにより、該特定被供給素子におけるクロックスキューが最適化されているか否かを判断する第２判断部と、
該第２判断部によってクロックスキューが最適化されていないと判断された場合に、該特定被供給素子を複数のグループに分割する第２グルーピング部と、
該第２グルーピング部によって得られた該グループ毎に、一つのバッファを割り当て、該バッファの挿入・配置可能な領域内で複数のバッファ挿入候補位置を選択し、選択された各バッファ挿入候補位置について、当該バッファ挿入候補位置に配置された該バッファと当該グループに属する該特定被供給素子との間を最短経路で接続する信号ラインと、当該バッファ挿入候補位置に配置された該バッファと該特定素子との間を最短経路で接続する信号ラインとを仮配線し、各バッファ挿入候補位置について得られた仮配線結果に基づいて、該複数のバッファ挿入候補位置の中から、当該グループに属する該特定被供給素子におけるクロックスキューおよびクロック伝播遅延時間を最適化しうる候補位置を選択し、選択された候補位置に該バッファを挿入・配置する第２バッファ挿入部とをそなえて構成され、
該特定素子用設計部において、該第２仮配線部，該第２判断部，該第２グルーピング部および該第２バッファ挿入部が、該第２判断部によってクロックスキューが最適化されていると判断されるまで、該第２バッファ挿入部によって該複数のグループのそれぞれに挿入された該バッファを該複数の被供給素子とみなして、繰り返し動作するとともに、
該複数の被供給素子のうち該特定被供給素子を除いた被供給素子と該特定素子配置部によって配置された該特定素子とを、該複数の被供給素子とみなして、該第１仮配線部，該第１判断部，該第１グルーピング部，該第１バッファ挿入部および該最終配線部を動作させ、その際、該最終配線部が、該特定素子配置部によって採用された仮配線結果と該第１仮配線部および該第１バッファ挿入部での仮配線結果と該特定素子の配置位置とに従って、該供給源素子，該複数の被供給素子，該バッファおよび該特定素子の間を結ぶ信号ラインの配線経路を決定することを特徴とする、請求項５記載のクロック分配回路の設計装置。
【請求項７】
該複数の被供給素子が異なる論理階層に属している場合、該第１仮配線部の動作に先立って、各論理階層について、該論理階層に属する該被供給素子（以下、所属被供給素子という）に接続される入力端子を仮想的に設定する入力端子設定部と、
該入力端子設定部によって設定された各入力端子を配置可能な複数の入力端子配置候補位置を選択する選択部と、
該選択部によって選択された各入力端子配置候補位置に配置される該入力端子と、該入力端子に接続され所定位置に配置される該所属被供給素子との間におけるバッファの挿入・配置および該信号ラインの仮配線を行なう入力端子用設計部と、
該供給源素子と各入力端子配置候補位置に配置された該入力端子との間を最短経路で接続する信号ラインを仮配線する入力端子用仮配線部と、
該複数の入力端子配置候補位置の全てについて該入力端子用設計部および該入力端子用仮配線部によって得られた仮配線結果に基づいて、該複数の入力端子配置候補位置の中から、該所属被供給素子におけるクロックスキューおよびクロック伝播遅延時間を最適化しうる候補位置を選択し、選択された候補位置に該入力端子を配置するとともに、選択された候補位置について得られた仮配線結果および該バッファの挿入位置を採用する入力端子配置部とをそなえ、
該入力端子用設計部が、
各入力端子配置候補位置に配置される該入力端子と所定位置に配置される該所属被供給素子との間を、最短経路で直接接続する信号ラインを仮配線する第２仮配線部と、
該第２仮配線部によって仮配線された該信号ラインにより、該所属被供給素子におけるクロックスキューが最適化されているか否かを判断する第２判断部と、
該第２判断部によってクロックスキューが最適化されていないと判断された場合に、該所属被供給素子を複数のグループに分割する第２グルーピング部と、
該第２グルーピング部によって得られた該グループ毎に、一つのバッファを割り当て、該バッファの挿入・配置可能な領域内で複数のバッファ挿入候補位置を選択し、選択された各バッファ挿入候補位置について、当該バッファ挿入候補位置に配置された該バッファと当該グループに属する該所属被供給素子との間を最短経路で接続する信号ラインと、当該バッファ挿入候補位置に配置された該バッファと該入力端子との間を最短経路で接続する信号ラインとを仮配線し、各バッファ挿入候補位置について得られた仮配線結果に基づいて、該複数のバッファ挿入候補位置の中から、当該グループに属する該所属被供給素子におけるクロックスキューおよびクロック伝播遅延時間を最適化しうる候補位置を選択し、選択された候補位置に該バッファを挿入・配置する第２バッファ挿入部とをそなえて構成され、
該入力端子用設計部において、該第２仮配線部，該第２判断部，該第２グルーピング部および該第２バッファ挿入部が、該第２判断部によってクロックスキューが最適化されていると判断されるまで、該第２バッファ挿入部によって該複数のグループのそれぞれに挿入された該バッファを該複数の被供給素子とみなして、繰り返し動作するとともに、
該複数の論理階層のそれぞれについて該入力端子配置部で配置された複数の入力端子を、該複数の被供給素子とみなして、該第１仮配線部，該第１判断部，該第１グルーピング部，該第１バッファ挿入部および該最終配線部を動作させ、その際、該最終配線部が、該特定素子配置部によって採用された仮配線結果と該第１仮配線部および該第１バッファ挿入部での仮配線結果と該入力端子の配置位置とに従って、該供給源素子，該複数の被供給素子，該バッファおよび該入力端子の間を結ぶ信号ラインの配線経路を決定することを特徴とする、請求項５記載のクロック分配回路の設計装置。
【請求項８】
少なくとも一つの供給源素子からのクロック信号を複数の被供給素子に分配・供給するクロック分配回路を、コンピュータに設計させるための設計プログラムであって、
所定位置に配置された該供給源素子と該複数の被供給素子との間を、最短経路で直接接続する信号ラインを仮配線する仮配線部、
該仮配線部によって仮配線された該信号ラインにより、該複数の被供給素子におけるクロックスキューが最適化されているか否かを判断する判断部、
該判断部によってクロックスキューが最適化されていないと判断された場合に、該複数の被供給素子を複数のグループに分割するグルーピング部、
該グルーピング部によって得られた該グループ毎に、一つのバッファを割り当て、該バッファの挿入・配置可能な領域内で複数のバッファ挿入候補位置を選択し、選択された各バッファ挿入候補位置について、当該バッファ挿入候補位置に配置された該バッファと当該グループに属する該被供給素子との間を最短経路で接続する信号ラインと、当該バッファ挿入候補位置に配置された該バッファと該供給源素子との間を最短経路で接続する信号ラインとを仮配線し、該複数のバッファ挿入候補位置の全てについて得られた仮配線結果に基づいて、該複数のバッファ挿入候補位置の中から、当該グループに属する該被供給素子におけるクロックスキューおよびクロック伝播遅延時間を最適化しうる候補位置を選択し、選択された候補位置に該バッファを挿入・配置するバッファ挿入部、および、
該判断部でクロックスキューが最適化されていると判断された場合に、該仮配線部および該バッファ挿入部によって得られた仮配線結果に従って、該供給源素子，該複数の被供給素子および該バッファの間を結ぶ信号ラインの配線経路を決定する最終配線部として、該コンピュータを機能させるとともに、
該判断部によってクロックスキューが最適化されていると判断されるまで、該バッファ挿入部によって該複数のグループのそれぞれに挿入された該バッファを該複数の被供給素子とみなして、該コンピュータを、該仮配線部，該判断部，該グルーピング部および該バッファ挿入部として繰り返し機能させた後、該コンピュータを、該最終配線部および供給源素子変更部として機能させることを特徴とする、クロック分配回路の設計プログラム。
【請求項９】
少なくとも一つの供給源素子からのクロック信号を複数の被供給素子に分配・供給するクロック分配回路を、コンピュータに設計させるための設計プログラムを記録したコンピュータ読取可能な記録媒体であって、
該設計プログラムが、
所定位置に配置された該供給源素子と該複数の被供給素子との間を、最短経路で直接接続する信号ラインを仮配線する仮配線部、
該仮配線部によって仮配線された該信号ラインにより、該複数の被供給素子におけるクロックスキューが最適化されているか否かを判断する判断部、
該判断部によってクロックスキューが最適化されていないと判断された場合に、該複数の被供給素子を複数のグループに分割するグルーピング部、
該グルーピング部によって得られた該グループ毎に、一つのバッファを割り当て、該バッファの挿入・配置可能な領域内で複数のバッファ挿入候補位置を選択し、選択された各バッファ挿入候補位置について、当該バッファ挿入候補位置に配置された該バッファと当該グループに属する該被供給素子との間を最短経路で接続する信号ラインと、当該バッファ挿入候補位置に配置された該バッファと該供給源素子との間を最短経路で接続する信号ラインとを仮配線し、該複数のバッファ挿入候補位置の全てについて得られた仮配線結果に基づいて、該複数のバッファ挿入候補位置の中から、当該グループに属する該被供給素子におけるクロックスキューおよびクロック伝播遅延時間を最適化しうる候補位置を選択し、選択された候補位置に該バッファを挿入・配置するバッファ挿入部、および、
該判断部でクロックスキューが最適化されていると判断された場合に、該仮配線部および該バッファ挿入部によって得られた仮配線結果に従って、該供給源素子，該複数の被供給素子および該バッファの間を結ぶ信号ラインの配線経路を決定する最終配線部として、該コンピュータを機能させるとともに、
該判断部によってクロックスキューが最適化されていると判断されるまで、該バッファ挿入部によって該複数のグループのそれぞれに挿入された該バッファを該複数の被供給素子とみなして、該コンピュータを、該仮配線部，該判断部，該グルーピング部および該バッファ挿入部として繰り返し機能させた後、該コンピュータを、該最終配線部および供給源素子変更部として機能させることを特徴とする、クロック分配回路の設計プログラムを記録したコンピュータ読取可能な記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、例えばＩＣ（Integrated Circuit）やＬＳＩ（Large Scale Integration）等の半導体集積回路のレイアウト設計に用いて好適の技術に関し、特に、設計対象回路中において、クロック信号供給源とクロック信号を供給されるべき複数の素子との間を結ぶクロック分配回路（ネット）を自動的に合成しレイアウトする、クロック分配回路の設計方法，設計装置および設計プログラム、並びに、同プログラムを記録したコンピュータ読取可能な記録媒体に関する。
【０００２】
【従来の技術】
一般に、ＩＣやＬＳＩ等の半導体集積回路上では、少なくとも一つのクロック信号供給源素子（以下、供給源素子という）から、クロック分配回路を介し、フリップフロップ等の多数の被クロック信号供給素子（以下、被供給素子という）にクロック信号を供給している。このような半導体集積回路は、近年、より高速で大規模な回路を集積するように要望され、回路構造の微細化が進んでいる。これに伴って、半導体集積回路の性能を最大限に生かすべく、クロックスキューやクロック伝播遅延時間を最適化するようにクロック分配回路を設計することが望まれている。
【０００３】
ここで、クロック伝播遅延時間とは、クロック信号が一つの供給源素子から各被供給素子まで到達するのに要する時間であり、クロック伝播遅延時間の最適化とは、その遅延時間を最小化（最短化）することである。また、クロックスキューとは、ある被供給素子にクロック信号が到達するタイミング（前記クロック伝播遅延時間）と他の被供給素子に同じクロック信号が到達するタイミング（前記クロック伝播遅延時間）とのずれであり、クロックスキューの最適化とは、クロックスキューを“０”にすること（場合によっては“０”ではなく所望の値にすること）である。
【０００４】
上述のような半導体集積回路（クロック分配回路）の、従来の設計手法（クロックスキューやクロック伝播遅延時間の最適化手法）は、例えば、特開平２−６２６７５号公報，特開平８−４４７７６号公報および特開平８−５０６０４号公報に開示されている。
特開平２−６２６７５号公報に開示された「論理回路素子配置方法」では、フリップフロップ等の論理回路素子（被供給素子）間の接続関係に従って、論理回路素子を配置してから、クロックアンプ（ドライバ）の数を決定・配置することにより、論理回路素子間のクロック伝播遅延時間を最適化している。
【０００５】
特開平８−４４７７６号公報に開示された「半導体集積回路のクロック配線回路の設計方法」では、クロックスキューの発生を抑制するようにクロックツリーを設計している。その際、まず、論理設計時には、各回路素子（被供給素子）をクロック入力バッファ（供給源素子）に直接接続し、レイアウト設計時に、回路素子の数に応じてクロックバッファ（ドライバ）をツリー状に配置した後、クロックバッファと各論理素子との間の配線を行なっている。
【０００６】
特開平８−５０６０４号公報に開示された「クロックスキュー防止レイアウト設計方法」では、クロック配線の配線長のバラツキを極力小さくすることにより、クロックスキューの発生を防止している。その際、複数のクロック信号入力端子（被供給素子）をグループ化し、グループ毎にバッファセル（ドライバ）を挿入・配置してから、クロック信号出力端子，バッファセル，クロック信号入力端子の間の配線を行なっている。
【０００７】
【発明が解決しようとする課題】
上述した従来の手法では、基本的に、供給源素子と被供給素子との間におけるバッファ（ドライバ）の数や段数を決定してから、これらの供給源素子，被供給素子，バッファの間のネット配線を行ない、その配線の状態（配線長，配線幅，配線形状，分岐点の位置等）を調節することによりクロックスキューの調節（最適化）を行なっている。しかし、クロックスキューをより確実に最適化するためには、バッファの数や段数をレイアウト設計前に決定してしまうのではなく、レイアウト設計時に、配線状態とともにバッファの挿入／配置状態を調節することが好ましく、このような最適化技術の開発が望まれている。
【０００８】
また、一般に、クロック伝播遅延時間を最適化するには、所定位置に配置された被供給素子の疎密を見てクロックネットのバランスを考慮しながらクロックツリーを作成することが望ましい。しかし、従来、一つの供給源素子側から多数の被供給素子へ向けてネット配線を行なう場合が多く、このような手法では、クロックスキューの最適化は可能であっても、同時にクロック伝播遅延時間を最適化することは極めて困難である。
【０００９】
本発明は、このような課題に鑑み創案されたもので、レイアウト設計時に、被供給素子側から供給源素子へ向け、配線状態とバッファの挿入・配置状態との両方を調節しながら配線経路を決定してクロック分配回路を設計することにより、半導体集積回路全体におけるクロック伝播遅延時間とクロックスキューとを同時かつ確実に最適化できるようにした、クロック分配回路の設計方法，設計装置および設計プログラム並びに同プログラムを記録したコンピュータ読取可能な記録媒体を提供することを目的とする。
【００１０】
【課題を解決するための手段】
上記目的を達成するために、本発明のクロック分配回路の設計方法は、少なくとも一つの供給源素子からのクロック信号を複数の被供給素子に分配・供給するクロック分配回路を設計するための方法であって、所定位置に配置される該供給源素子と該複数の被供給素子との間を、最短経路で直接接続する信号ラインを仮配線する第１仮配線ステップと、該第１仮配線ステップで仮配線された該信号ラインにより、該複数の被供給素子におけるクロックスキューが最適化されているか否かを判断する第１判断ステップと、該第１判断ステップでクロックスキューが最適化されていないと判断された場合に、該複数の被供給素子を複数のグループに分割する第１グルーピングステップと、該第１グルーピングステップで得られた該グループ毎に、一つのバッファを割り当て、該バッファの挿入・配置可能な領域内で複数のバッファ挿入候補位置を選択し、選択された各バッファ挿入候補位置について、当該バッファ挿入候補位置に配置された該バッファと当該グループに属する該被供給素子との間を最短経路で接続する信号ラインと、当該バッファ挿入候補位置に配置された該バッファと該供給源素子との間を最短経路で接続する信号ラインとを仮配線し、該複数のバッファ挿入候補位置の全てについて得られた仮配線結果に基づいて、該複数のバッファ挿入候補位置の中から、当該グループに属する該被供給素子におけるクロックスキューおよびクロック伝播遅延時間を最適化しうる候補位置を選択し、選択された候補位置に該バッファを挿入・配置する第１バッファ挿入ステップとを、該第１判断ステップでクロックスキューが最適化されていると判断されるまで、該第１バッファ挿入ステップで該複数のグループのそれぞれに挿入された該バッファを該複数の被供給素子とみなして、繰り返し実行した後、該第１判断ステップでクロックスキューが最適化されていると判断された場合に、該第１仮配線ステップおよび該第１バッファ挿入ステップでの仮配線結果に従って、該供給源素子，該複数の被供給素子および該バッファの間を結ぶ信号ラインの配線経路を決定する最終配線ステップを実行することを特徴としている。このとき、該第１バッファ挿入ステップにおいて、各グループに挿入される該バッファとして、該バッファから当該グループに属する該被供給素子までのクロック伝播遅延時間を最適化しうる特性を有するバッファを選択してもよい。
このとき、該供給源素子と該複数の被供給素子のうちの一部（以下、特定被供給素子という）との間に特定の機能を果たす特定素子が介在している場合、該第１仮配線ステップの実行に先立って、該特定素子の配置可能な複数の特定素子配置候補位置を選択する選択ステップを実行し、該選択ステップで選択された各特定素子候補位置について、当該特定素子配置候補位置に配置される該特定素子と所定位置に配置される該特定被供給素子との間を、最短経路で直接接続する信号ラインを仮配線する第２仮配線ステップと、該第２仮配線ステップで仮配線された該信号ラインにより、該特定被供給素子におけるクロックスキューが最適化されているか否かを判断する第２判断ステップと、該第２判断ステップでクロックスキューが最適化されていないと判断された場合に、該特定被供給素子を複数のグループに分割する第２グルーピングステップと、該第２グルーピングステップで得られた該グループ毎に、一つのバッファを割り当て、該バッファの挿入・配置可能な領域内で複数のバッファ挿入候補位置を選択し、選択された各バッファ挿入候補位置について、当該バッファ挿入候補位置に配置された該バッファと当該グループに属する該特定被供給素子との間を最短経路で接続する信号ラインと、当該バッファ挿入候補位置に配置された該バッファと該特定素子との間を最短経路で接続する信号ラインとを仮配線し、各バッファ挿入候補位置について得られた仮配線結果に基づいて、該複数のバッファ挿入候補位置の中から、当該グループに属する該特定被供給素子におけるクロックスキューおよびクロック伝播遅延時間を最適化しうる候補位置を選択し、選択された候補位置に該バッファを挿入・配置する第２バッファ挿入ステップとを、該第２判断ステップでクロックスキューが最適化されていると判断されるまで、該第２バッファ挿入ステップで該複数のグループのそれぞれに挿入された該バッファを該特定被供給素子とみなして、繰り返し実行するとともに、該供給源素子と各特定素子配置候補位置に配置された該特定素子との間を最短経路で接続する信号ラインを仮配線する第３仮配線ステップを実行した後、該複数の特定素子配置候補位置の全てについて該第２仮配線ステップ，該第２バッファ挿入ステップおよび該第３仮配線ステップで得られた仮配線結果に基づいて、該複数の特定素子配置候補位置の中から、該特定被供給素子におけるクロックスキューおよびクロック伝播遅延時間を最適化しうる候補位置を選択し、選択された候補位置に該特定素子を配置するとともに、選択された候補位置について得られた仮配線結果および該バッファの挿入位置を採用する特定素子配置ステップを実行してから、該複数の被供給素子のうち該特定被供給素子を除いた被供給素子と該特定素子配置ステップで配置された該特定素子とを、該複数の被供給素子とみなして、該第１仮配線ステップ，該第１判断ステップ，該第１グルーピングステップ，該第１バッファ挿入ステップおよび該最終配線ステップを実行し、その際、該最終配線ステップでは、該特定素子配置ステップで採用された仮配線結果と該第１仮配線ステップおよび該第１バッファ挿入ステップでの仮配線結果と該特定素子の配置位置とに従って、該供給源素子，該複数の被供給素子，該バッファおよび該特定素子の間を結ぶ信号ラインの配線経路を決定してもよい。
さらに、該複数の被供給素子が異なる論理階層に属している場合、該第１仮配線ステップの実行に先立って、各論理階層について、該論理階層に属する該被供給素子（以下、所属被供給素子という）に接続される入力端子を仮想的に設定する入力端子設定ステップと、該入力端子設定ステップで設定された各入力端子を配置可能な複数の入力端子配置候補位置を選択する選択ステップとを実行し、該選択ステップで選択された各入力端子配置候補位置について、当該入力端子配置候補位置に配置される該入力端子と、該入力端子に接続され所定位置に配置される該所属被供給素子との間を、最短経路で直接接続する信号ラインを仮配線する第２仮配線ステップと、該第２仮配線ステップで仮配線された該信号ラインにより、該所属被供給素子におけるクロックスキューが最適化されているか否かを判断する第２判断ステップと、該第２判断ステップでクロックスキューが最適化されていないと判断された場合に、該所属被供給素子を複数のグループに分割する第２グルーピングステップと、該第２グルーピングステップで得られた該グループ毎に、一つのバッファを割り当て、該バッファの挿入・配置可能な領域内で複数のバッファ挿入候補位置を選択し、選択された各バッファ挿入候補位置について、当該バッファ挿入候補位置に配置された該バッファと当該グループに属する該所属被供給素子との間を最短経路で接続する信号ラインと、当該バッファ挿入候補位置に配置された該バッファと該入力端子との間を最短経路で接続する信号ラインとを仮配線し、各バッファ挿入候補位置について得られた仮配線結果に基づいて、該複数のバッファ挿入候補位置の中から、当該グループに属する該所属被供給素子におけるクロックスキューおよびクロック伝播遅延時間を最適化しうる候補位置を選択し、選択された候補位置に該バッファを挿入・配置する第２バッファ挿入ステップとを、該第２判断ステップでクロックスキューが最適化されていると判断されるまで、該第２バッファ挿入ステップで該複数のグループのそれぞれに挿入された該バッファを該所属被供給素子とみなして、繰り返し実行するとともに、該供給源素子と各入力端子配置候補位置に配置された該入力端子との間を最短経路で接続する信号ラインを仮配線する第３仮配線ステップを実行した後、該複数の入力端子配置候補位置の全てについて該第２仮配線ステップ，該第２バッファ挿入ステップおよび該第３仮配線ステップで得られた仮配線結果に基づいて、該複数の入力端子配置候補位置の中から、該所属被供給素子におけるクロックスキューおよびクロック伝播遅延時間を最適化しうる候補位置を選択し、選択された候補位置に該入力端子を配置するとともに、選択された候補位置について得られた仮配線結果および該バッファの挿入位置を採用する入力端子配置ステップを実行してから、該複数の論理階層のそれぞれについて該入力端子配置ステップで配置された複数の入力端子を、該複数の被供給素子とみなして、該第１仮配線ステップ，該第１判断ステップ，該第１グルーピングステップ，該第１バッファ挿入ステップおよび該最終配線ステップを実行し、その際、該最終配線ステップでは、該入力端子配置ステップで採用された仮配線結果と該第１仮配線ステップおよび該第１バッファ挿入ステップでの仮配線結果と該入力端子の配置位置とに従って、該供給源素子，該複数の被供給素子，該バッファおよび該入力端子の間を結ぶ信号ラインの配線経路を決定してもよい。
【００１１】
また、本発明のクロック分配回路の設計装置は、少なくとも一つの供給源素子からのクロック信号を複数の被供給素子に分配・供給するクロック分配回路を設計するための装置であって、上述した第１仮配線ステップ，第１判断ステップ，第１グルーピングステップおよび第１バッファ挿入ステップをそれぞれ実行する第１仮配線部，第１判断部，第１グルーピング部，第１バッファ挿入部および最終配線ステップをそなえ、該第１仮配線部，該第１判断部，該第１グルーピング部および該第１バッファ挿入部を、該第１判断部によってクロックスキューが最適化されていると判断されるまで、該第１バッファ挿入部によって該複数のグループのそれぞれに挿入された該バッファを該複数の被供給素子とみなして、繰り返し動作させた後、該最終配線部を動作させることを特徴としている。
このとき、該供給源素子と該複数の被供給素子のうちの一部（以下、特定被供給素子という）との間に特定の機能を果たす特定素子が介在している場合に、該第１仮配線部の動作に先立って、該特定素子の配置可能な複数の特定素子配置候補位置を選択する選択部と、該選択部によって選択された各特定素子候補位置に配置される該特定素子と所定位置に配置される該特定被供給素子との間におけるバッファの挿入・配置および該信号ラインの仮配線を行なう特定素子用設計部と、該供給源素子と各特定素子配置候補位置に配置された該特定素子との間を最短経路で接続する信号ラインを仮配線する特定素子用仮配線部と、該複数の特定素子配置候補位置の全てについて該特定素子用設計部および該特定素子用仮配線部によって得られた仮配線結果に基づいて、該複数の特定素子配置候補位置の中から、該特定被供給素子におけるクロックスキューおよびクロック伝播遅延時間を最適化しうる候補位置を選択し、選択された候補位置に該特定素子を配置するとともに、選択された候補位置について得られた仮配線結果および該バッファの挿入位置を採用する特定素子配置部とをそなえ、該特定素子用設計部が、各特定素子配置候補位置に配置される該特定素子と所定位置に配置される該特定被供給素子との間を、最短経路で直接接続する信号ラインを仮配線する第２仮配線部と、該第２仮配線部によって仮配線された該信号ラインにより、該特定被供給素子におけるクロックスキューが最適化されているか否かを判断する第２判断部と、該第２判断部によってクロックスキューが最適化されていないと判断された場合に、該特定被供給素子を複数のグループに分割する第２グルーピング部と、該第２グルーピング部によって得られた該グループ毎に、一つのバッファを割り当て、該バッファの挿入・配置可能な領域内で複数のバッファ挿入候補位置を選択し、選択された各バッファ挿入候補位置について、当該バッファ挿入候補位置に配置された該バッファと当該グループに属する該特定被供給素子との間を最短経路で接続する信号ラインと、当該バッファ挿入候補位置に配置された該バッファと該特定素子との間を最短経路で接続する信号ラインとを仮配線し、各バッファ挿入候補位置について得られた仮配線結果に基づいて、該複数のバッファ挿入候補位置の中から、当該グループに属する該特定被供給素子におけるクロックスキューおよびクロック伝播遅延時間を最適化しうる候補位置を選択し、選択された候補位置に該バッファを挿入・配置する第２バッファ挿入部とをそなえて構成され、該特定素子用設計部において、該第２仮配線部，該第２判断部，該第２グルーピング部および該第２バッファ挿入部が、該第２判断部によってクロックスキューが最適化されていると判断されるまで、該第２バッファ挿入部によって該複数のグループのそれぞれに挿入された該バッファを該複数の被供給素子とみなして、繰り返し動作するとともに、該複数の被供給素子のうち該特定被供給素子を除いた被供給素子と該特定素子配置部によって配置された該特定素子とを、該複数の被供給素子とみなして、該第１仮配線部，該第１判断部，該第１グルーピング部，該第１バッファ挿入部および該最終配線部を動作させ、その際、該最終配線部が、該特定素子配置部によって採用された仮配線結果と該第１仮配線部および該第１バッファ挿入部での仮配線結果と該特定素子の配置位置とに従って、該供給源素子，該複数の被供給素子，該バッファおよび該特定素子の間を結ぶ信号ラインの配線経路を決定してもよい。
また、該複数の被供給素子が異なる論理階層に属している場合、該第１仮配線部の動作に先立って、各論理階層について、該論理階層に属する該被供給素子（以下、所属被供給素子という）に接続される入力端子を仮想的に設定する入力端子設定部と、該入力端子設定部によって設定された各入力端子を配置可能な複数の入力端子配置候補位置を選択する選択部と、該選択部によって選択された各入力端子配置候補位置に配置される該入力端子と、該入力端子に接続され所定位置に配置される該所属被供給素子との間におけるバッファの挿入・配置および該信号ラインの仮配線を行なう入力端子用設計部と、該供給源素子と各入力端子配置候補位置に配置された該入力端子との間を最短経路で接続する信号ラインを仮配線する入力端子用仮配線部と、該複数の入力端子配置候補位置の全てについて該入力端子用設計部および該入力端子用仮配線部によって得られた仮配線結果に基づいて、該複数の入力端子配置候補位置の中から、該所属被供給素子におけるクロックスキューおよびクロック伝播遅延時間を最適化しうる候補位置を選択し、選択された候補位置に該入力端子を配置するとともに、選択された候補位置について得られた仮配線結果および該バッファの挿入位置を採用する入力端子配置部とをそなえ、該入力端子用設計部が、各入力端子配置候補位置に配置される該入力端子と所定位置に配置される該所属被供給素子との間を、最短経路で直接接続する信号ラインを仮配線する第２仮配線部と、該第２仮配線部によって仮配線された該信号ラインにより、該所属被供給素子におけるクロックスキューが最適化されているか否かを判断する第２判断部と、該第２判断部によってクロックスキューが最適化されていないと判断された場合に、該所属被供給素子を複数のグループに分割する第２グルーピング部と、該第２グルーピング部によって得られた該グループ毎に、一つのバッファを割り当て、該バッファの挿入・配置可能な領域内で複数のバッファ挿入候補位置を選択し、選択された各バッファ挿入候補位置について、当該バッファ挿入候補位置に配置された該バッファと当該グループに属する該所属被供給素子との間を最短経路で接続する信号ラインと、当該バッファ挿入候補位置に配置された該バッファと該入力端子との間を最短経路で接続する信号ラインとを仮配線し、各バッファ挿入候補位置について得られた仮配線結果に基づいて、該複数のバッファ挿入候補位置の中から、当該グループに属する該所属被供給素子におけるクロックスキューおよびクロック伝播遅延時間を最適化しうる候補位置を選択し、選択された候補位置に該バッファを挿入・配置する第２バッファ挿入部とをそなえて構成され、該入力端子用設計部において、該第２仮配線部，該第２判断部，該第２グルーピング部および該第２バッファ挿入部が、該第２判断部によってクロックスキューが最適化されていると判断されるまで、該第２バッファ挿入部によって該複数のグループのそれぞれに挿入された該バッファを該複数の被供給素子とみなして、繰り返し動作するとともに、該複数の論理階層のそれぞれについて該入力端子配置部で配置された複数の入力端子を、該複数の被供給素子とみなして、該第１仮配線部，該第１判断部，該第１グルーピング部，該第１バッファ挿入部および該最終配線部を動作させ、その際、該最終配線部が、該特定素子配置部によって採用された仮配線結果と該第１仮配線部および該第１バッファ挿入部での仮配線結果と該入力端子の配置位置とに従って、該供給源素子，該複数の被供給素子，該バッファおよび該入力端子の間を結ぶ信号ラインの配線経路を決定してもよい。
【００１２】
さらに、本発明のクロック分配回路の設計プログラムは、少なくとも一つの供給源素子からのクロック信号を複数の被供給素子に分配・供給するクロック分配回路を、コンピュータに設計させるためのものであって、上述した仮配線部，判断部，グルーピング部，バッファ挿入部および最終配線部として、該コンピュータを機能させるとともに、該判断部によってクロックスキューが最適化されていると判断されるまで、該バッファ挿入部によって該複数のグループのそれぞれに挿入された該バッファを該複数の被供給素子とみなして、該コンピュータを、該仮配線部，該判断部，該グルーピング部および該バッファ挿入部として繰り返し機能させた後、該コンピュータを、該最終配線部として機能させることを特徴としている。
そして、本発明のコンピュータ読取可能な記録媒体は、上述した設計プログラムを記録したことを特徴としている。
【００１３】
【発明の実施の形態】
以下、図面を参照して本発明の実施の形態を説明する。
〔１〕第１実施形態の説明
図１は本発明の第１実施形態としてのクロック分配回路の設計装置の構成を示すブロック図である。
【００１４】
第１実施形態の設計装置は、論理設計によって得られたネットリストに基づいて、少なくとも一つのクロック信号供給源素子（以下、クロック供給源素子あるいは単に供給源素子という場合がある）からのクロック信号を、フリップフロップ等の多数の被クロック信号供給素子（以下、単に被供給素子という）に分配・供給するクロック分配回路を設計するものである。ここで、第１実施形態におけるネットリストには、設計対象のチップ上に配置されるべき供給源素子および被供給素子に関する情報が含まれるが、これらの供給源素子と被供給素子との間に介在するバッファ（ドライバ）に関する情報は含まれていない。
【００１５】
そして、第１実施形態の設計装置は、図１に示すように、仮配線部１１，判断部１２，グルーピング部１３，バッファ挿入部１４，最終配線部１５およびクロック供給源素子変更部１６をそなえて構成されている。
ここで、仮配線部（第１仮配線部）１１は、チップ上の所定位置に配置された供給源素子と全ての被供給素子との間を最短経路で直接接続する信号ライン（即ち、供給源素子が被供給素子の全てに対してクロック信号を直接供給する最短の信号ラインであってクロック伝播遅延時間を最適化しうる信号ライン）を仮配線するものである。
【００１６】
判断部（第１判断部）１２は、仮配線部１１によって仮配線された信号ラインにより、複数の被供給素子におけるクロックスキューが最適化されているか否かを判断するものである。
グルーピング部（第１グルーピング部）１３は、判断部１１によってクロックスキューが最適化されていないと判断された場合に、複数の被供給素子を複数のグループに分割するものである。
【００１７】
バッファ挿入部（第１バッファ挿入部）１４は、供給源素子とグルーピング部１３によって得られた各グループに属する被供給素子との間に挿入されるバッファとして、クロック伝播遅延時間やクロックスキューが最適となるものを選択するとともに、そのバッファの配置位置を決定し、バッファからグルーピング部１３で選択された被供給素子までの仮配線を行なうものである。
【００１８】
バッファ挿入部１４は、より具体的に、以下のような機能(1)〜(6)を有している。
機能(1)：グルーピング部１３によって得られたグループ毎に、一つのバッファを割り当てる機能。
機能(2)：機能(1)によって割り当てられたバッファを挿入・配置することの可能な、複数のバッファ挿入候補位置をチップ上で選択する機能。
【００１９】
機能(3)：機能(2)によって選択された各バッファ挿入候補位置について、当該バッファ挿入候補位置に配置されたバッファと当該グループに属する被供給素子との間を最短経路で接続する信号ラインを仮配線するとともに、当該バッファ挿入候補位置に配置されたバッファと供給源素子との間を最短経路で接続する信号ラインを仮配線する機能。
【００２０】
機能(4)：機能(3)によって複数のバッファ挿入候補位置の全てについて得られた仮配線結果に基づいて、複数のバッファ挿入候補位置の中から、当該グループに属する被供給素子におけるクロックスキューおよびクロック伝播遅延時間を最適化しうる候補位置を選択する機能。
機能(5)：機能(4)によって選択された候補位置にバッファを挿入・配置する機能。
機能(6)：各グループに挿入されるバッファとして、そのバッファから当該グループに属する被供給素子までのクロック伝播遅延時間を最適化しうる特性を有するバッファを選択する機能。
【００２１】
最終配線部１５は、判断部１２でクロックスキューが最適化されていると判断された場合に、仮配線部１１およびバッファ挿入部１４によって得られた仮配線結果に従って、供給源素子と複数の被供給素子／バッファとの間を結ぶ信号ラインの配線経路を決定するものである。
【００２２】
クロック供給源素子変更部（供給源素子変更部）１６は、最終配線部１５による配線結果に基づいて、供給源素子を、クロック伝播遅延時間を最適化しうる特性を有する素子に変更するものである。ただし、ネットリストにおける供給源素子によってクロック伝播遅延時間が最適化される場合には、クロック供給源素子変更部１６による処理は行なわない。
【００２３】
なお、通常、供給源素子としては、同じ機能（クロック信号供給機能）を有しているが出力駆動能力等の特性の異なるものが複数存在する。素子の特性が異なる場合、当然、その素子からの出力信号（クロック信号）が伝播する時間も異なってくる。一般に、出力駆動能力の大きい素子の方が信号伝播時間は小さくなる傾向がある。そこで、本実施形態では、クロック供給源素子変更部１６が、ネットリストにおいて決められた供給源素子を、その供給源素子と同じ機能を有しているが、クロック伝播遅延時間を最適化することのできる特性を有する素子に変更している。
【００２４】
そして、第１実施形態の設計装置では、仮配線部１１，判断部１２，該グルーピング部１３およびバッファ挿入部１４が、判断部１２によってクロックスキューが最適化されていると判断されるまで、バッファ挿入部１４によって複数のグループのそれぞれに挿入されたバッファを複数の被供給素子とみなして、繰り返し動作した後、最終配線部１５およびクロック供給源素子変更部１６が動作するようになっている。
【００２５】
上述した仮配線部１１，判断部１２，グルーピング部１３，バッファ挿入部１４，最終配線部１５およびクロック供給源素子変更部１６は、専用ソフトウェア（クロック分配回路の設計プログラム）によって実現される。
この設計プログラムは、例えばフレキシブルディスク，ＣＤ−ＲＯＭ等のコンピュータ読取可能な記録媒体に記録された形態で提供される。第１実施形態においては、設計装置を成すＲＯＭ（Read Only Memory；図示省略）等に予め設計プログラムを格納しておき、この設計プログラムを、やはり設計装置を成すＣＰＵ（図示省略；コンピュータ）によって読み出し実行することで、上述した仮配線部１１，判断部１２，グルーピング部１３，バッファ挿入部１４，最終配線部１５およびクロック供給源素子変更部１６としての機能が実現される。
【００２６】
このとき、設計プログラムは、判断部１２によってクロックスキューが最適化されていると判断されるまで、バッファ挿入部１４によって複数のグループのそれぞれに挿入されたバッファを複数の被供給素子とみなし、ＣＰＵを、仮配線部１１，判断部１２，グルーピング部１３およびバッファ挿入部１４として繰り返し機能させた後、最終配線部１５およびクロック供給源素子変更部１６として機能させる。
なお、設計プログラムは、例えば磁気ディスク，光ディスク，光磁気ディスク等の記憶装置（記録媒体）に記録しておき、その記憶装置から通信経路を介してコンピュータに提供されてもよい。
【００２７】
次に、図２に示すフローチャート（ステップＳ１１〜Ｓ１７）に従って、上述した第１実施形態の設計装置の動作、つまり本発明の第１実施形態としてのクロック分配回路の設計方法の手順について説明する。
論理設計結果として得られたネットリストが与えられると、第１実施形態の設計装置では、クロック分配回路にかかる情報、つまり供給源素子および被供給素子にかかる情報が抽出され、仮配線部１１によって、チップ上の所定位置に配置される供給源素子と複数の被供給素子との間を、最短経路で直接接続する信号ラインが仮配線される（ステップＳ１１；第１仮配線ステップ）。
【００２８】
このように仮配線された信号ラインにより複数の被供給素子におけるクロックスキューが最適化されているか否かが、判断部１２によって判断され（ステップＳ１２；第１判断ステップ）、クロックスキューが最適化されていないと判断された場合（ステップＳ１２のＮＯルート）、グルーピング部１３によって、複数の被供給素子が複数のグループに分割される（ステップＳ１３；第１グルーピングステップ）。ここで、各グループに含まれる被供給素子の数は、例えば、挿入されるバッファの特性（出力駆動能力等）に応じて決められる。また、基本的には、配置位置の近い所定数の被供給素子が一つのグループにまとめられる。
【００２９】
この後、ステップＳ１３で分割された各グループにおいて、バッファの挿入・配置を行なう（ステップＳ１４；第１バッファ挿入ステップ）。このステップＳ１４では、バッファ挿入部１４によって、以下に説明するステップＳ１４１〜Ｓ１４９の処理が行なわれる。
まず、ステップＳ１３で分割された複数のグループの中から一つを選択し（ステップＳ１４１）、そのグループに対して、挿入されるべき一つのバッファが割り当てられる（ステップＳ１４２）。そして、このバッファを挿入・配置可能な領域が認識され、その領域内で複数のバッファ挿入候補位置が選択される（ステップＳ１４３）。
【００３０】
さらに、ステップＳ１４３で選択された複数のバッファ挿入候補位置の中から一つを選択し（ステップＳ１４４）、そのバッファ挿入候補位置に配置されたバッファと今回選択したグループに属する被供給素子との間を最短経路で接続する信号ラインが仮配線されるとともに、そのバッファ挿入候補位置に配置されたバッファと供給源素子との間を最短経路で接続する信号ラインが仮配線され、これらの信号ラインによる遅延時間が計算される。ここで得られた遅延時間は、バッファ挿入候補位置や配線経路に関する情報とともに、解としてメモリ等に保持される（ステップＳ１４５）。
【００３１】
上述したステップＳ１４４およびＳ１４５の処理は、ステップＳ１４３で選択された全てのバッファ挿入候補位置に対して実行される。つまり、ステップＳ１４６において、全てのバッファ挿入候補位置についてステップＳ１４４およびＳ１４５の処理を終了したと判断されるまで、ステップＳ１４４およびＳ１４５の処理は繰り返し実行される。
【００３２】
全てのバッファ挿入候補位置についてステップＳ１４４およびＳ１４５の処理を終了したと判断されると（ステップＳ１４６のＹＥＳルート）、複数のバッファ挿入候補位置について得られた遅延時間に基づいて、複数のバッファ挿入候補位置の中から、今回のグループに属する被供給素子におけるクロックスキューおよびクロック伝播遅延時間を最適化しうる候補位置が選択される（ステップＳ１４７）。
【００３３】
そして、ステップＳ１４７で選択された候補位置にバッファが挿入・配置される（ステップＳ１４８）。このとき、挿入されるバッファとしては、ステップＳ１４５での仮配線結果に基づいて、このバッファから、バッファ挿入対象のグループに属する被供給素子までのクロック伝播遅延時間を最適化しうる特性を有するバッファが選択される。
【００３４】
上述したステップＳ１４１〜Ｓ１４８の処理は、ステップＳ１３で分割された全てのグループに対して実行される。つまり、ステップＳ１４９において、全てのグループについてステップＳ１４１〜Ｓ１４８の処理を終了したと判断されるまで、ステップＳ１４１〜Ｓ１４８の処理は繰り返し実行される。
全てのグループについてステップＳ１４１〜Ｓ１４８の処理を終了したと判断されると（ステップＳ１４９のＹＥＳルート）、バッファ挿入部１４によって各グループに挿入されたバッファを複数の被供給素子とみなして（ステップＳ１５）、ステップＳ１１に戻る。上述したステップＳ１１〜Ｓ１５の処理は、ステップＳ１２でクロックスキューが最適化されていると判断されるまで繰り返し実行される。
【００３５】
ステップＳ１２でクロックスキューが最適化されていると判断された場合（ＹＥＳルート）、最終配線部１５において、ステップＳ１１およびＳ１４５での仮配線結果に従って、供給源素子と複数の被供給素子／バッファとの間を結ぶ信号ラインの配線経路が決定される（ステップＳ１６；最終配線ステップ）。
さらに、クロック供給源素子変更部１６において、ステップＳ１６での配線結果に基づいて、ネットリストで指定された供給源素子が、クロック伝播遅延時間を最適化しうる特性を有する素子に変更される（ステップＳ１７；供給源素子変更ステップ）。ただし、前述した通り、ネットリストで指定された供給源素子によってクロック伝播遅延時間が最適化される場合には、クロック供給源素子変更部１６による処理は実行されない。
【００３６】
次に、図３〜図９を参照しながら、第１実施形態の設計動作をより具体的に説明する。なお、図３〜図９はその具体的な設計動作を説明するための図で、これらの図３〜図９において、符号ＣＬＫを付された三角形マークはクロック信号供給源素子（供給源素子）を示し、符号Ａ〜Ｈをそれぞれ付された８個の矩形マークは被クロック信号供給素子（被供給素子）を示す。また、各被供給素子Ａ〜Ｈにおける網がけ部はクロック入力端子の位置を示している。
【００３７】
供給源素子ＣＬＫおよび被供給素子Ａ〜Ｈの配置位置は、ネットリストにより与えられており、第１実施形態の設計装置には、図３に示すように供給源素子および被供給素子Ａ〜Ｈをチップ上の所定位置に配置した回路が、入力として与えられる。
【００３８】
図３に示すような入力回路に対し、仮配線部１１が、供給源素子ＣＬＫと被供給素子Ａ〜Ｈとの間を、最短経路の信号ライン（図４中の二点鎖線参照）によって仮配線して接続する（ステップＳ１１）。その仮配線結果を図４に示す。
判断部１２では、図４に示すような仮配線結果を参照し、各被供給素子Ａ〜Ｈにおけるクロックスキューが最適化されているか否かが判断される（ステップＳ１２）。
【００３９】
判断部１２において、クロックスキューが最適化されていないと判断された場合、グルーピング部１３によって、バッファを挿入すべき被供給素子のグループが選択・分割される（ステップＳ１３）。図５は、被クロック信号供給素子のグループの一つを選択した例を示す図で、この図５に示す例では、２つの被供給素子Ａ，Ｂが一つのグループに属している。
【００４０】
そして、バッファ挿入部１４において、被供給素子Ａ，Ｂと供給源素子ＣＬＫとの間でバッファを挿入・配置することの可能なバッファ挿入候補位置として、例えば図６〜図８に示すような３ヶ所を選択する（ステップＳ１４３）。
これらのバッファ挿入候補位置のそれぞれに、バッファｂ１を配置したと仮定して、各バッファｂ１と被供給素子Ａ，Ｂとの間を最短経路で接続する信号ラインと、各バッファｂ１と供給源素子ＣＬＫとの間を最短経路で接続する信号ラインとを仮配線し、これらの信号ライン（図６〜図８の二点鎖線参照）による遅延時間を計算し、計算された遅延時間を、バッファ挿入候補位置や配線経路に関する情報とともに、解としてメモリ等に保持しておく（ステップＳ１４４〜Ｓ１４６）。
【００４１】
全てのバッファ挿入候補位置について以上の処理を行なった後、保存されている上記解に基づいて、複数のバッファ挿入候補位置の中から、クロック伝播遅延時間およびクロックスキューを最適化しうる候補位置を選択し、挿入すべきバッファｂ１や、その挿入・配置位置や、配線経路を決定し、バッファｂ１を、決定された位置に挿入・配置する（ステップＳ１４７，Ｓ１４８）。ここでは、図７に示すバッファ挿入候補位置が、バッファｂ１の挿入・配置位置として選択・決定されたものとする。
【００４２】
図９は、図３に示すような回路から、上述の処理によって最終的に生成されるクロックツリーの具体例を示している。この図９に示す配置・配線結果が得られるまでの処理は、以下のように行なわれる。
被供給素子Ｃの属するグループと、被供給素子Ｄ，Ｆの属するグループと、被供給素子Ｅ，Ｇ，Ｈの属するグループとのそれぞれについて、上述と同様の処理（ステップＳ１４２〜Ｓ１４８）が実行され、バッファｂ２，ｂ３，ｂ４の挿入・配置位置が、バッファ特性や配線経路とともに決定される。
【００４３】
続いて、バッファｂ１〜ｂ４を被供給素子とみなして（ステップＳ１５）、上述と同様の処理（ステップＳ１１〜Ｓ１４）が実行される。つまり、バッファｂ１，ｂ３の属するグループと、バッファｂ２，ｂ４の属するグループとのそれぞれについて、上述と同様の処理（ステップＳ１４２〜Ｓ１４８）が実行され、バッファｂ５，ｂ６の挿入・配置位置が決定される。
【００４４】
さらに、バッファｂ５，ｂ６を被供給素子とみなして（ステップＳ１５）、上述と同様の処理（ステップＳ１１〜Ｓ１４）が実行される。つまり、バッファｂ５の属するグループと、バッファｂ６の属するグループとのそれぞれについて、上述と同様の処理（ステップＳ１４２〜Ｓ１４８）が実行され、バッファｂ７の挿入・配置位置が決定される。
【００４５】
そして、バッファｂ７を被供給素子とみなし（ステップＳ１５）、このバッファｂ７と供給源素子ＣＬＫとの間に仮配線された、最短経路の信号ラインについてクロックスキューが最適化されているものと判断され、供給源素子ＣＬＫ，バッファｂ１〜ｂ７および被供給素子Ａ〜Ｈの間を結ぶ信号ラインの配線経路のほか、供給源素子ＣＬＫの特性などが決定され、最終的に図９に示すようなクロックツリー（クロック分配回路）が生成されることになる。
【００４６】
このように、本発明の第１実施形態によれば、レイアウト設計に際して、供給源素子および複数の被供給素子を配置した後に、被供給素子側から供給源素子へ向け、配線状態とバッファの挿入・配置状態との両方を調節しながら配線経路が決定されるので、回路全体におけるクロック伝播遅延時間とクロックスキューとが同時かつ確実に最適化され、ひいては高速に動作することのできる半導体回路を設計し実現することができる。
【００４７】
また、本実施形態では、バッファ挿入部１４において、各グループに挿入されるバッファとして、そのバッファから各グループに属する被供給素子までのクロック伝播遅延時間を最適化しうる特性を有するバッファを選択するとともに、クロック供給源素子変更部１６において、最終配線結果に基づき、供給源素子を、クロック伝播遅延時間を最適化しうる特性を有する素子に変更することにより、より確実に、回路全体におけるクロック伝播遅延時間とクロックスキューとを最適化することができる。
【００４８】
〔１−１〕第１実施形態における第１変形例の説明
図１０は第１実施形態の第１変形例の具体的な設計動作を説明するための図である。
上述した第１実施形態では、クロックスキューの最適化条件が、各被供給素子においてクロックスキューを“０”にすることであったが、本発明はこれに限定されるものではなく、本第１変形例のごとく、複数の被供給素子に対して、それぞれ異なるクロックスキューの制約条件を与えてもよい。この場合、判断部１２やバッファ挿入部１４は、クロック分配回路の設計開始時に入力として与えられるクロックスキューの制約条件に基づいて、クロックスキューが最適化されているか否かを、その制約条件に基づいて判断する（図２のステップＳ１２，Ｓ１４７参照）。これにより、クロックスキューが、与えられた制約条件を満足するように、挿入すべきバッファや、その挿入・配置位置や、配線経路が決定され、クロックツリー（クロック分配回路）が生成される。
【００４９】
例えば、図９に示すクロックツリーは、クロックスキューを“０”にするという最適化条件のもとで生成されたものであるが、これに対し、被供給素子ＡとＢとの間にクロックスキューを与えて生成されたクロックツリー（クロック分配回路）の例を図１０に示す。この図１０に示す例においては、被供給素子Ｂ〜Ｈについてのクロックスキューの最適化条件は、クロックスキューが“０”であることとする一方、被供給素子Ａには被供給素子Ｂよりも所定時間だけ早くクロックが伝播することを制約条件として、被供給素子ＡとＢとの間にクロックスキューが与えられるように、クロックツリーが生成されている。
【００５０】
このように、複数の被供給素子に対してそれぞれ異なるクロックスキューの制約を与え、その制約に従って最適化の判断を行なうことにより、その制約を満足するように、バッファ（図１０のｂ１参照）の挿入・配置および信号ラインの配線経路が決定され、その制約を満たすクロックスキューを与えられたクロックツリー（クロック分配回路）が容易に生成・設計されることになる。
【００５１】
〔１−２〕第１実施形態における第２変形例の説明
図１１〜図１３は第１実施形態の第２変形例の具体的な設計動作を説明するための図である。
上述した第１実施形態では、クロック信号供給源素子ＣＬＫが一つである場合について説明したが、本第２変形例においては、図１１に示すように２つのクロック信号供給源素子ＣＬＫ１，ＣＬＫ２がそなえられ、例えば、被供給素子Ａ〜Ｃ，Ｄ，Ｆに供給源素子ＣＬＫ１からのクロックが供給されるとともに、被供給素子Ｅ，Ｇ，Ｈに供給源素子ＣＬＫ２からのクロックが供給される場合について説明する。なお、ここで、被供給素子Ａ〜Ｈは、図３〜図９に示したものと同様の位置に配置されるものとし、供給源素子ＣＬＫ１は、図３〜図９に示した供給源素子ＣＬＫと同様の位置に配置されるものとする。
【００５２】
この第２変形例では、図１１に示すような情報を有するネットリストが設計装置に与えられると、まず、そのネットリストに基づいて、供給源素子ＣＬＫ１，ＣＬＫ２毎に、第１実施形態と同様の処理（図２のステップＳ１１〜Ｓ１７参照）が行なわれる。
【００５３】
即ち、チップ上に配置された供給源素子ＣＬＫ１と被供給素子Ａ〜Ｃ，Ｄ，Ｆとの間のクロック分配回路を上述と同様にして設計する。これにより、図１２に示すように、供給源素子ＣＬＫ１と被供給素子Ａ〜Ｃ，Ｄ，Ｆとの間において、バッファｂ１〜ｂ３，ｂ５〜ｂ７の配置位置や配線経路等が決定される。
また、チップ上に配置された供給源素子ＣＬＫ２と被供給素子Ｅ，Ｇ，Ｈとの間のクロック分配回路を上述と同様にして設計する。これにより、図１２に示すように、供給源素子ＣＬＫ２と被供給素子Ｅ，Ｇ，Ｈとの間において、バッファｂ４の配置位置や配線経路等が決定される。
【００５４】
図１２に示すごとく、２つの供給源素子ＣＬＫ１，ＣＬＫ２のそれぞれについて、クロックツリー（クロック分配回路）を生成した後、これら２つのクロックツリーの間でクロック伝播遅延時間に差がある場合には、クロックツリー間のクロック伝播遅延時間を一致させるべく、クロック伝播遅延時間の短い方のクロックツリーに、そのクロック伝播遅延時間の差分だけバッファを挿入し、その挿入バッファの配置位置や配線経路が決定される。このような決定処理は、例えば最終配線部１５において実行される。
【００５５】
例えば図１２において供給源素子ＣＬＫ２のクロックツリーのクロック伝播遅延時間が供給源素子ＣＬＫ１のクロックツリーのクロック伝播遅延時間よりも短い場合、図１３に示すように、例えば、供給源素子ＣＬＫ２とバッファｂ４との間に、そのクロック伝播遅延時間の差分に応じたバッファｂ８，ｂ９を挿入し、その挿入バッファｂ８，ｂ９の配置位置や配線経路を決定する。
【００５６】
このように、設計対象回路にクロック信号供給源素子が２以上存在する場合には、各供給源素子について、その供給源素子と同供給源素子からのクロック信号を供給される被供給素子との間のクロック分配回路（クロックツリー）を、第１実施形態と同様にして設計してから、各クロックツリーにおけるクロック伝播遅延時間が一致するように、バッファの挿入・配置および信号ラインの配線経路の決定がなされる。これにより、複数のクロック信号供給源素子が存在する場合にも、第１実施形態と同様、回路全体におけるクロック伝播遅延時間とクロックスキューとを最適化することができる。
【００５７】
なお、この第２変形例では、クロック信号供給源素子が２つ存在する回路が入力として与えられる場合について説明したが、本発明は、これに限定されるものではなく、回路中に３以上のクロック信号供給源素子が存在する場合にも、上述と同様にして、クロック分配回路が設計される。
【００５８】
〔２〕第２実施形態の説明
図１４は本発明の第２実施形態としてのクロック分配回路の設計装置の構成を示すブロック図である。なお、図１４中、既述の符号と同一の符号は、同一の部分もしくはほぼ同一の部分を示しているので、その詳細な説明は省略する。
第２実施形態において、論理設計によって得られた設計対象回路のネットリストには、第１実施形態と同様に、設計対象のチップ上に配置されるべき供給源素子および複数の被供給素子に関する情報が含まれるほか、供給源素子と複数の被供給素子のうちの一部（以下、特定被供給素子という）との間に配置され、特定の機能を果たす特定素子（例えばセレクタ，インバータ等）に関する情報が含まれているものとする。
【００５９】
この特定素子は、供給源素子や被供給素子と同様に、予め回路（論理設計段階の回路）に存在するものではあるが、その配置位置は、供給源素子や被供給素子のように決まっておらず、第２実施形態では、後述するごとく、レイアウト設計時に、クロックスキューやクロック伝播遅延時間が最適化されるように決定される。
【００６０】
つまり、第２実施形態の設計装置は、上述のようなネットリストに基づいて、供給源素子からのクロック信号を、特定素子を介して複数の被供給素子に分配・供給するクロック分配回路を設計するものである。なお、第２実施形態におけるネットリストには、第１実施形態のネットリストと同様、バッファに関する情報は含まれていない。
【００６１】
そして、第２実施形態の設計装置は、図１４に示すように、第１実施形態と同様の仮配線部１１，判断部１２，グルーピング部１３，バッファ挿入部１４，最終配線部１５Ａおよびクロック供給源素子変更部１６のほかに、仮配線部１１よりも前段に、選択部１７，特定素子用設計部１８，特定素子用仮配線部１９および特定素子配置部２０をそなえて構成されている。
【００６２】
ここで、選択部１７は、特定素子を配置することの可能な、複数の特定素子配置候補位置をチップ上で選択するものである。
特定素子用設計部１８は、選択部１７によって選択された各特定素子候補位置に配置される特定素子と所定位置に配置される特定被供給素子との間におけるバッファの挿入・配置および信号ラインの仮配線を行なうものであり、仮配線部１１Ａ，判断部１２Ａ，グルーピング部１３Ａおよびバッファ挿入部１４Ａをそなえて構成されている。これらの仮配線部１１Ａ，判断部１２Ａ，グルーピング部１３Ａおよびバッファ挿入部１４Ａは、それぞれ、第１実施形態で説明した仮配線部１１，判断部１２，グルーピング部１３およびバッファ挿入部１４とほぼ同様の機能を果たすものである。
【００６３】
つまり、仮配線部（第２仮配線部）１１Ａは、各特定素子配置候補位置に配置される特定素子とチップ上の所定位置に配置された特定被供給素子との間を最短経路で直接接続する信号ライン（即ち、特定素子から特定被供給素子の全てに対してクロック信号を直接供給する最短の信号ラインであってクロック伝播遅延時間を最適化しうる信号ライン）を仮配線するものである。
【００６４】
判断部（第２判断部）１２Ａは、仮配線部１１Ａによって仮配線された信号ラインにより、特定被供給素子におけるクロックスキューが最適化されているか否かを判断するものである。
グルーピング部（第２グルーピング部）１３Ａは、判断部１２Ａによってクロックスキューが最適化されていないと判断された場合に、特定被供給素子を複数のグループに分割するものである。
【００６５】
バッファ挿入部（第２バッファ挿入部）１４Ａは、特定素子とグルーピング部１３Ａによって得られた各グループに属する特定被供給素子との間に挿入されるバッファとして、クロック伝播遅延時間やクロックスキューが最適となるものを選択するとともに、そのバッファの配置位置を決定し、バッファからグルーピング部１３Ａで選択された特定被供給素子までの仮配線を行なうものである。
【００６６】
バッファ挿入部１４Ａは、より具体的に、以下のような機能(11)〜(16)を有している。これらの機能(11)〜(16)は、それぞれ、第１実施形態において上述したバッファ挿入部１４の機能(1)〜(6)に対応するものである。
機能(11)：グルーピング部１３Ａによって得られたグループ毎に、一つのバッファを割り当てる機能。
【００６７】
機能(12)：機能(11)によって割り当てられたバッファを挿入・配置することの可能な、複数のバッファ挿入候補位置をチップ上で選択する機能。
機能(13)：機能(12)によって選択された各バッファ挿入候補位置について、当該バッファ挿入候補位置に配置されたバッファと当該グループに属する特定被供給素子との間を最短経路で接続する信号ラインを仮配線するとともに、当該バッファ挿入候補位置に配置されたバッファと特定素子との間を最短経路で接続する信号ラインを仮配線する機能。
【００６８】
機能(14)：機能(13)によって複数のバッファ挿入候補位置の全てについて得られた仮配線結果に基づいて、複数のバッファ挿入候補位置の中から、当該グループに属する特定被供給素子におけるクロックスキューおよびクロック伝播遅延時間を最適化しうる候補位置を選択する機能。
機能(15)：機能(14)によって選択された候補位置にバッファを挿入・配置する機能。
【００６９】
機能(16)：各グループに挿入されるバッファとして、そのバッファから当該グループに属する特定被供給素子までのクロック伝播遅延時間を最適化しうる特性を有するバッファを選択する機能。
そして、特定素子用設計部１８では、選択部１７によって選択された特定素子候補位置毎に、仮配線部１１Ａ，判断部１２Ａ，グルーピング部１３Ａおよびバッファ挿入部１４Ａが、判断部１２Ａによってクロックスキューが最適化されていると判断されるまで、バッファ挿入部１４Ａによって複数のグループのそれぞれに挿入されたバッファを特定被供給素子とみなして、繰り返し動作するようになっている。
【００７０】
特定素子用仮配線部１９は、供給源素子と選択部１７によって選択された各特定素子配置候補位置に配置された特定素子との間を最短経路で接続する信号ラインを仮配線するものである。
特定素子配置部２０は、複数の特定素子配置候補位置の全てについて特定素子用設計部１８および特定素子用仮配線部１９によって得られた仮配線結果に基づいて、複数の特定素子配置候補位置の中から、特定被供給素子におけるクロックスキューおよびクロック伝播遅延時間を最適化しうる候補位置を選択し、選択された候補位置に特定素子を配置するとともに、選択された候補位置について得られた仮配線結果およびバッファの挿入位置を採用するものである。
【００７１】
そして、第２実施形態の設計装置では、複数の被供給素子のうち上記特定被供給素子を除いた被供給素子と、特定素子配置部２０によって配置された特定素子とを、複数の被供給素子とみなして、第１実施形態の設計装置と同様に、仮配線部１１，判断部１２，グルーピング部１３，バッファ挿入部１４，最終配線部１５Ａおよびクロック供給源素子変更部１６を動作させる。
【００７２】
ただし、第２実施形態の最終配線部１５Ａは、特定素子配置部２０によって採用された仮配線結果と、仮配線部１１およびバッファ挿入部１４での仮配線結果と、特定素子配置部２０によって決定された特定素子の配置位置とに従って、供給源素子，複数の被供給素子，バッファおよび特定素子の間を結ぶ信号ラインの配線経路を決定している。
【００７３】
上述した仮配線部１１，判断部１２，グルーピング部１３，バッファ挿入部１４，最終配線部１５Ａ，クロック供給源素子変更部１６，選択部１７，特定素子用設計部１８，特定素子用仮配線部１９および特定素子配置部２０は、第１実施形態と同様、専用ソフトウェア（クロック分配回路の設計プログラム）によって実現される。
【００７４】
この設計プログラムは、第１実施形態と同様、例えばフレキシブルディスク，ＣＤ−ＲＯＭ等のコンピュータ読取可能な記録媒体に記録された形態で提供される。第２実施形態においても、設計装置を成すＲＯＭ等に予め設計プログラムを格納しておき、この設計プログラムを、やはり設計装置を成すＣＰＵ（図示省略；コンピュータ）によって読み出し実行することで、上述した仮配線部１１，判断部１２，グルーピング部１３，バッファ挿入部１４，最終配線部１５Ａ，クロック供給源素子変更部１６，選択部１７，特定素子用設計部１８，特定素子用仮配線部１９および特定素子配置部２０としての機能が実現される。
【００７５】
なお、第２実施形態において、仮配線部１１が、特定素子用仮配線部１９および仮配線部１１Ａとしての機能を兼ねるとともに、判断部１２，グルーピング部１３およびバッファ挿入部１４が、それぞれ判断部１２Ａ，グルーピング部１３Ａおよびバッファ挿入部１４Ａとしての機能を兼ねるように構成してもよい。
【００７６】
次に、図１５に示すフローチャート（ステップＳ２１〜Ｓ３３，Ｓ１１〜Ｓ１５，Ｓ１６１およびＳ１７）に従って、上述した第２実施形態の設計装置の動作、つまり本発明の第２実施形態としてのクロック分配回路の設計方法の手順について説明する。
【００７７】
論理設計結果として得られた、少なくとも一つの特定素子を含むネットリストが与えられると、第２実施形態の設計装置では、選択部１７によって、特定素子が一つ選択されるとともに（ステップＳ２１）、その特定素子を配置可能な領域が認識され、その領域内で複数の特定素子配置候補位置が選択される（ステップＳ２２；選択ステップ）。なお、ステップＳ２１において複数の特定素子の中から一つの特定素子を選択する場合、特定被供給素子に近いものから順番に選択する。
【００７８】
そして、ステップＳ２２で選択された複数の特定素子配置候補位置の中から一つを選択し（ステップＳ２３）、仮配線部１１Aによって、その特定素子配置候補位置に配置される特定素子と、この特定素子に対応する特定被供給素子との間を、最短経路で直接接続する信号ラインが仮配線される（ステップＳ２４；第２仮配線ステップ）。
【００７９】
このように仮配線された信号ラインにより複数の特定被供給素子におけるクロックスキューが最適化されているか否かが、判断部１２Ａによって判断され（ステップＳ２５；第２判断ステップ）、クロックスキューが最適化されていないと判断された場合（ステップＳ２５のＮＯルート）、グルーピング部１３Ａによって、複数の特定被供給素子が複数のグループに分割される（ステップＳ２６；第２グルーピングステップ）。ここで、各グループに含まれる特定被供給素子の数は、例えば、挿入されるバッファの特性（出力駆動能力等）に応じて決められる。また、基本的には、配置位置の近い所定数の特定被供給素子が一つのグループにまとめられる。
【００８０】
この後、ステップＳ２６で分割された各グループにおいて、バッファの挿入・配置を行なう（ステップＳ２７；第２バッファ挿入ステップ）。このステップＳ２７では、バッファ挿入部１４Ａによって、以下に説明するステップＳ２７１〜Ｓ２７９の処理が行なわれる。
まず、ステップＳ２６で分割された複数のグループの中から一つのグループを選択し（ステップＳ２７１）、そのグループに対して、挿入されるべき一つのバッファが割り当てられる（ステップＳ２７２）。そして、このバッファを挿入・配置可能な領域が認識され、その領域内で複数のバッファ挿入候補位置が選択される（ステップＳ２７３）。
【００８１】
さらに、ステップＳ２７３で選択された複数のバッファ挿入候補位置の中から一つのバッファ挿入候補位置を選択し（ステップＳ２７４）、そのバッファ挿入候補位置に配置されたバッファと今回選択したグループに属する特定被供給素子との間を最短経路で接続する信号ラインが仮配線されるとともに、そのバッファ挿入候補位置に配置されたバッファと特定素子との間を最短経路で接続する信号ラインが仮配線され、これらの信号ラインによる遅延時間が計算される。ここで得られた遅延時間は、バッファ挿入候補位置や配線経路に関する情報とともに、解としてメモリ等に保持される（ステップＳ２７５）。
【００８２】
上述したステップＳ２７４およびＳ２７５の処理は、ステップＳ２７３で選択された全てのバッファ挿入候補位置に対して実行される。つまり、ステップＳ２７６において、全てのバッファ挿入候補位置についてステップＳ２７４およびＳ２７５の処理を終了したと判断されるまで、ステップＳ２７４およびＳ２７５の処理は繰り返し実行される。
【００８３】
全てのバッファ挿入候補位置についてステップＳ２７４およびＳ２７５の処理を終了したと判断されると（ステップＳ２７６のＹＥＳルート）、複数のバッファ挿入候補位置について得られた遅延時間に基づいて、複数のバッファ挿入候補位置の中から、今回のグループに属する特定被供給素子におけるクロックスキューおよびクロック伝播遅延時間を最適化しうる候補位置が選択される（ステップＳ２７７）。
【００８４】
そして、ステップＳ２７７で選択された候補位置にバッファが挿入・配置される（ステップＳ２７８）。このとき、挿入されるバッファとしては、ステップＳ２７５での仮配線結果に基づいて、このバッファから、バッファ挿入対象のグループに属する特定被供給素子までのクロック伝播遅延時間を最適化しうる特性を有するバッファが選択される。
【００８５】
上述したステップＳ２７１〜Ｓ２７８の処理は、ステップＳ２６で分割された全てのグループに対して実行される。つまり、ステップＳ２７９において、全てのグループについてステップＳ２７１〜Ｓ２７８の処理を終了したと判断されるまで、ステップＳ２７１〜Ｓ２７８の処理は繰り返し実行される。
全てのグループについてステップＳ２７１〜Ｓ２７８の処理を終了したと判断されると（ステップＳ２７９のＹＥＳルート）、バッファ挿入部１４Ａによって各グループに挿入されたバッファを複数の特定被供給素子とみなして（ステップＳ２８）、ステップＳ２４に戻る。
【００８６】
そして、上述したステップＳ２４〜Ｓ２８の処理は、ステップＳ２５でクロックスキューが最適化されていると判断されるまで繰り返し実行される。ステップＳ２５でクロックスキューが最適化されていると判断された場合（ＹＥＳルート）、特定素子用仮配線部１９によって、供給源素子と各特定素子配置候補位置に配置された特定素子との間を最短経路で接続する信号ラインを仮配線する（ステップＳ２９；第３仮配線ステップ）。
【００８７】
さらに、上述したステップＳ２４〜Ｓ２９の処理は、ステップＳ２２で選択された全ての特定素子配置候補位置に対して実行される。つまり、ステップＳ３０において、全ての特定素子配置候補位置についてステップＳ２４〜Ｓ２９の処理を終了したと判断されるまで、ステップＳ２４〜Ｓ２９の処理は繰り返し実行される。
【００８８】
全ての特定素子配置候補位置についてステップＳ２４〜Ｓ２９の処理を終了したと判断されると（ステップＳ３０のＹＥＳルート）、今回、ステップＳ２１で選択された特定素子の配置位置を決定して、その配置位置に特定素子を配置する（ステップＳ３１；特定素子配置ステップ）。このステップＳ３１では、特定素子配置部２０によって、以下に説明するステップＳ３１１およびＳ３１２の処理が行なわれる。
【００８９】
つまり、全ての特定素子配置候補位置についてステップＳ２４，Ｓ２７５およびＳ２９で得られた仮配線結果に基づき、複数の特定素子配置候補位置の中から、特定被供給素子におけるクロックスキューおよびクロック伝播遅延時間を最適化しうる候補位置が選択され（ステップＳ３１１）、選択された候補位置に特定素子が配置されるとともに、選択された候補位置についてステップＳ２７で得られた仮配線結果およびバッファの挿入位置が採用される（ステップＳ３１２）。
【００９０】
上述したステップＳ２１〜Ｓ３１の処理は、ネットリストに含まれる全ての特定素子に対して実行される。つまり、ステップＳ３２において、全ての特定素子についてステップＳ２１〜Ｓ３１の処理を終了したと判断されるまで、ステップＳ２１〜Ｓ３１の処理は繰り返し実行される。
全ての特定素子についてステップＳ２１〜Ｓ３１の処理を終了したと判断されると（ステップＳ３２のＹＥＳルート）、複数の被供給素子のうち特定被供給素子を除いた残りの被供給素子と、ステップＳ３１で配置された特定素子とを、複数の被供給素子とみなして（ステップＳ３３）、第１実施形態とほぼ同様の処理（ステップＳ１１〜Ｓ１５，Ｓ１６１およびＳ１７）が実行される。
【００９１】
その際、第１実施形態のステップＳ１６に代えて第２実施形態で実行されるステップＳ１６１（最終配線ステップ）では、最終配線部１５Ａによって、ステップＳ３１で採用された仮配線結果と、ステップＳ１１およびＳ１４での仮配線結果と、特定素子の配置位置とに従って、供給源素子，複数の被供給素子，バッファおよび特定素子の間を結ぶ信号ラインの配線経路が決定される。
【００９２】
次に、図１６および図１７を参照しながら、第２実施形態の設計動作をより具体的に説明する。なお、図１６および図１７はその具体的な設計動作を説明するための図である。ここでは、図１６に示すように、一つのクロック信号供給源素子ＣＬＫと、セレクタ，インバータ等の特定素子Ｓと、８個の被クロック信号供給素子Ａ〜Ｈとが、ネットリストによって与えられ、これらの素子間のクロック分配回路を設計する場合について説明する。ただし、特定素子Ｓは、供給源素子ＣＬＫと３個の特定被供給素子Ａ，Ｄ，Ｆとの間に介在するものとする。また、供給源素子ＣＬＫおよび被供給素子Ａ〜Ｈは、図３〜図９に示したものと同様の位置に配置されるものとする。
【００９３】
図１６に示すような情報を有するネットリストが設計装置に与えられると、まず、上述したステップＳ２１〜Ｓ３２の処理によって、図１７に示すように、３個の特定被供給素子Ａ，Ｄ，Ｆに対する特定素子Ｓの配置位置が決定されるとともに、これらの３個の特定被供給素子Ａ，Ｄ，Ｆと特定素子Ｓとの間におけるバッファｂ１１，ｂ１２の挿入・配置および仮配線が行なわれる。
【００９４】
この後、特定素子Ｓと残りの被供給素子Ｂ，Ｃ，Ｅ，Ｇ，Ｈとが被供給素子とみなされて、第１実施形態とほぼ同様の処理、つまり上述したステップＳ１１〜Ｓ１５，Ｓ１６１およびＳ１７の処理が実行され、供給源素子ＣＬＫと特定素子Ｓおよび被供給素子Ｂ，Ｃ，Ｅ，Ｇ，Ｈとの間において、バッファｂ１３〜ｂ１６が挿入・配置されるとともに配線経路が決定される。さらに、供給源素子ＣＬＫの特性などが決定された後、最終的に図１７に示すようなクロックツリー（クロック分配回路）が生成されることになる。
【００９５】
このように、本発明の第２実施形態によれば、供給源素子と被供給素子との間に特定素子を予め挿入したネットリストを与えられた場合には、その特定素子を移動可能なクロック信号供給源素子とみなし、複数の特定素子配置候補位置のそれぞれに配置された特定素子に対し、第１実施形態と同様の手法を適用してバッファ挿入・配置や配線経路を決定してから、その決定結果に基づいて、最適な特定素子の配置位置を決定している。この後、特定素子を残りの被供給素子とともに被供給素子とみなして第１実施形態の手法が適用される。
【００９６】
これにより、回路中に特定素子を予め挿入されている場合であっても、特定被供給素子に対する特定素子の配置位置が、特定素子と特定被供給素子との間の配線経路とともに、配線状態およびバッファの挿入・配置状態との両方を調節しながら決定されるので、回路全体におけるクロック伝播遅延時間とクロックスキューとが、同時に最適化されるだけでなく、確実に最適化される。
【００９７】
〔３〕第３実施形態の説明
図１８は本発明の第３実施形態としてのクロック分配回路の設計装置の構成を示すブロック図である。なお、図１８中、既述の符号と同一の符号は、同一の部分もしくはほぼ同一の部分を示しているので、その詳細な説明は省略する。
第３実施形態では、論理的に階層化設計された回路が入力として与えられる場合（つまり複数の被供給素子が異なる論理階層に属している場合）について説明する。このような場合において、第３実施形態の設計装置は、後述するごとく、論理階層の境界を変更しないようにクロック分配回路（クロックツリー）を設計するものである。なお、第３実施形態におけるネットリストには、供給源素子，被供給素子および論理階層に関する情報が含まれるが、第１実施形態のネットリストと同様、バッファに関する情報は含まれていない。
【００９８】
そして、第３実施形態の設計装置は、図１８に示すように、第１実施形態と同様の仮配線部１１，判断部１２，グルーピング部１３，バッファ挿入部１４，最終配線部１５Bおよびクロック供給源素子変更部１６のほかに、仮配線部１１よりも前段に、入力端子設定部２１，選択部２２，入力端子用設計部２３，入力端子用仮配線部２４および入力端子配置部２５をそなえて構成されている。
【００９９】
ここで、入力端子設定部２１は、各論理階層について、その論理階層に属する被供給素子（以下、所属被供給素子という）に接続される入力端子が論理階層の境界上に存在すると仮定して、その入力端子を仮想的に設定するものである。
選択部２２は、入力端子設定部２１によって設定された各入力端子を配置することの可能な、複数の入力端子配置候補位置をチップ上で選択するものである。
【０１００】
入力端子用設計部２３は、選択部２２によって選択された各入力端子候補位置に配置される入力端子と、この入力端子に接続され所定位置に配置される所属被供給素子との間におけるバッファの挿入・配置および信号ラインの仮配線を行なうものであり、仮配線部１１Ｂ，判断部１２Ｂ，グルーピング部１３Ｂ，バッファ挿入部１４Ｂをそなえて構成されている。これらの仮配線部１１Ｂ，判断部１２Ｂ，グルーピング部１３Ｂ，バッファ挿入部１４Ｂは、それぞれ、第１実施形態で説明した仮配線部１１，判断部１２，グルーピング部１３およびバッファ挿入部１４とほぼ同様の機能を果たすものである。
【０１０１】
つまり、仮配線部（第２仮配線部）１１Ｂは、各入力端子配置候補位置に配置される入力端子とチップ上の所定位置に配置される所属被供給素子との間を最短経路で直接接続する信号ライン（即ち、入力端子から所属被供給素子の全てに対してクロック信号を直接供給する最短の信号ラインであってクロック伝播遅延時間を最適化しうる信号ライン）を仮配線するものである。
【０１０２】
判断部（第２判断部）１２Ｂは、第２仮配線部によって仮配線された該信号ラインにより、所属被供給素子におけるクロックスキューが最適化されているか否かを判断するものである。
グルーピング部（第２グルーピング部）１３Ｂは、判断部１２Bによってクロックスキューが最適化されていないと判断された場合に、所属被供給素子を複数のグループに分割するものである。
【０１０３】
バッファ挿入部（第２バッファ挿入部）１４Ｂは、入力端子とグルーピング部１３Bによって得られた各グループに属する所属被供給素子との間に挿入されるバッファとして、クロック伝播遅延時間やクロックスキューが最適となるものを選択するとともに、そのバッファの配置位置を決定し、バッファからグルーピング部１３Bで選択された所属被供給素子までの仮配線を行なうものである。
【０１０４】
バッファ挿入部１４Bは、より具体的に、以下のような機能(21)〜(26)を有している。これらの機能(21)〜(26)は、それぞれ、第１実施形態において上述したバッファ挿入部１４の機能(1)〜(6)に対応するものである。
機能(21)：グルーピング部１３Bによって得られたグループ毎に、一つのバッファを割り当てる機能。
【０１０５】
機能(22)：機能(21)によって割り当てられたバッファを挿入・配置することの可能な、複数のバッファ挿入候補位置をチップ上で選択する機能。
機能(23)：機能(22)によって選択された各バッファ挿入候補位置について、当該バッファ挿入候補位置に配置されたバッファと当該グループに属する所属被供給素子との間を最短経路で接続する信号ラインを仮配線するとともに、当該バッファ挿入候補位置に配置されたバッファと入力端子との間を最短経路で接続する信号ラインを仮配線する機能。
【０１０６】
機能(24)：機能(23)によって複数のバッファ挿入候補位置の全てについて得られた仮配線結果に基づいて、複数のバッファ挿入候補位置の中から、当該グループに属する所属被供給素子におけるクロックスキューおよびクロック伝播遅延時間を最適化しうる候補位置を選択する機能。
機能(25)：機能(24)によって選択された候補位置にバッファを挿入・配置する機能。
【０１０７】
機能(26)：各グループに挿入されるバッファとして、そのバッファから当該グループに属する所属被供給素子までのクロック伝播遅延時間を最適化しうる特性を有するバッファを選択する機能。
そして、入力端子用設計部２４では、選択部２２によって選択された特定素子候補位置毎に、仮配線部１１B，判断部１２B，グルーピング部１３Bおよびバッファ挿入部１４Bが、判断部１２Bによってクロックスキューが最適化されていると判断されるまで、バッファ挿入部１４Bによって複数のグループのそれぞれに挿入されたバッファを所属被供給素子とみなして、繰り返し動作するようになっている。
【０１０８】
入力端子用仮配線部２４は、供給源素子と選択部２２によって選択された各入力端子配置候補位置に配置された入力端子との間を最短経路で接続する信号ラインを仮配線するものである。
入力端子配置部２５は、複数の入力端子配置候補位置の全てについて入力端子用設計部２３および入力端子用仮配線部２４によって得られた仮配線結果に基づいて、複数の入力端子配置候補位置の中から、所属被供給素子におけるクロックスキューおよびクロック伝播遅延時間を最適化しうる候補位置を選択し、選択された候補位置に入力端子を仮想的に配置するとともに、選択された候補位置について得られた仮配線結果およびバッファの挿入位置を採用するものである。
【０１０９】
そして、第３実施形態の設計装置では、複数の論理階層のそれぞれについて入力端子配置部２５によって配置された複数の入力端子を、複数の被供給素子とみなして、第１実施形態の設計装置と同様に、仮配線部１１，判断部１２，グルーピング部１３，バッファ挿入部１４，最終配線部１５Bおよびクロック供給源素子変更部１６を動作させる。
【０１１０】
ただし、第３実施形態の最終配線部１５Bは、入力端子配置部２５によって採用された仮配線結果と、仮配線部１１およびバッファ挿入部１４での仮配線結果と、入力端子配置部２０によって仮想的に決定された入力端子の配置位置とに従って、供給源素子，複数の被供給素子，バッファおよび入力端子の間を結ぶ信号ラインの配線経路を決定する
【０１１１】
上述した仮配線部１１，判断部１２，グルーピング部１３，バッファ挿入部１４，最終配線部１５B，クロック供給源素子変更部１６，入力端子設定部２１，選択部２２，入力端子用設計部２３，入力端子用仮配線部２４および入力端子配置部２５は、第１実施形態と同様、専用ソフトウェア（クロック分配回路の設計プログラム）によって実現される。
【０１１２】
この設計プログラムは、第１実施形態と同様、例えばフレキシブルディスク，ＣＤ−ＲＯＭ等のコンピュータ読取可能な記録媒体に記録された形態で提供される。第３実施形態においても、設計装置を成すＲＯＭ等に予め設計プログラムを格納しておき、この設計プログラムを、やはり設計装置を成すＣＰＵ（図示省略；コンピュータ）によって読み出し実行することで、上述した仮配線部１１，判断部１２，グルーピング部１３，バッファ挿入部１４，最終配線部１５B，クロック供給源素子変更部１６，入力端子設定部２１，選択部２２，入力端子用設計部２３，入力端子用仮配線部２４および入力端子配置部２５としての機能が実現される。
【０１１３】
なお、第３実施形態においても、第２実施形態と同様、仮配線部１１が、入力端子用仮配線部２４および仮配線部１１Bとしての機能を兼ねるとともに、判断部１２，グルーピング部１３およびバッファ挿入部１４が、それぞれ判断部１２B，グルーピング部１３Bおよびバッファ挿入部１４Bとしての機能を兼ねるように構成してもよい。
【０１１４】
次に、図１９に示すフローチャート（ステップＳ４０〜Ｓ５３，Ｓ１１〜Ｓ１５，Ｓ１６２およびＳ１７）に従って、上述した第２実施形態の設計装置の動作、つまり本発明の第２実施形態としてのクロック分配回路の設計方法の手順について説明する。
論理設計結果として得られた、論理的に階層化設計されたネットリストが与えられると、第３実施形態の設計装置では、まず、入力端子設定部２１によって、各論理階層について、論理階層に属する所属被供給素子に接続される入力端子が仮想的に設定される（ステップＳ４０；入力端子設定ステップ）。この後、選択部２２によって、入力端子が一つ選択されるとともに（ステップＳ４１）、その入力端子を配置可能な領域が認識され、その領域内で複数の入力端子配置候補位置が選択される（ステップＳ４２；選択ステップ）。
【０１１５】
そして、ステップＳ４２で選択された複数の入力端子配置候補位置の中から一つを選択し（ステップＳ４３）、仮配線部１１Bによって、その入力端子配置候補位置に配置される入力端子と、この入力端子に対応する所属被供給素子との間を、最短経路で直接接続する信号ラインが仮配線される（ステップＳ４４；第２仮配線ステップ）。
【０１１６】
このように仮配線された信号ラインにより複数の所属被供給素子におけるクロックスキューが最適化されているか否かが、判断部１２Bによって判断され（ステップＳ４５；第２判断ステップ）、クロックスキューが最適化されていないと判断された場合（ステップＳ４５のＮＯルート）、グルーピング部１３Bによって、複数の所属被供給素子が複数のグループに分割される（ステップＳ４６；第２グルーピングステップ）。ここで、各グループに含まれる所属被供給素子の数は、例えば、挿入されるバッファの特性（出力駆動能力等）に応じて決められる。また、基本的には、配置位置の近い所定数の所属被供給素子が一つのグループにまとめられる。
【０１１７】
この後、ステップＳ４６で分割された各グループにおいて、バッファの挿入・配置を行なう（ステップＳ４７；第２バッファ挿入ステップ）。このステップＳ４７では、バッファ挿入部１４Bによって、以下に説明するステップＳ４７１〜Ｓ４７９の処理が行なわれる。
【０１１８】
まず、ステップＳ４６で分割された複数のグループの中から一つのグループを選択し（ステップＳ４７１）、そのグループに対して、挿入されるべき一つのバッファが割り当てられる（ステップＳ４７２）。そして、このバッファを挿入・配置可能な領域が認識され、その領域内で複数のバッファ挿入候補位置が選択される（ステップＳ４７３）。
【０１１９】
さらに、ステップＳ４７３で選択された複数のバッファ挿入候補位置の中から一つのバッファ挿入候補位置を選択し（ステップＳ４７４）、そのバッファ挿入候補位置に配置されたバッファと今回選択したグループに属する所属被供給素子との間を最短経路で接続する信号ラインが仮配線されるとともに、そのバッファ挿入候補位置に配置されたバッファと入力端子との間を最短経路で接続する信号ラインが仮配線され、これらの信号ラインによる遅延時間が計算される。ここで得られた遅延時間は、バッファ挿入候補位置や配線経路に関する情報とともに、解としてメモリ等に保持される（ステップＳ４７５）。
【０１２０】
上述したステップＳ４７４およびＳ４７５の処理は、ステップＳ４７３で選択された全てのバッファ挿入候補位置に対して実行される。つまり、ステップＳ４７６において、全てのバッファ挿入候補位置についてステップＳ４７４およびＳ４７５の処理を終了したと判断されるまで、ステップＳ４７４およびＳ４７５の処理は繰り返し実行される。
【０１２１】
全てのバッファ挿入候補位置についてステップＳ４７４およびＳ４７５の処理を終了したと判断されると（ステップＳ４７６のＹＥＳルート）、複数のバッファ挿入候補位置について得られた遅延時間に基づいて、複数のバッファ挿入候補位置の中から、今回のグループに属する所属被供給素子におけるクロックスキューおよびクロック伝播遅延時間を最適化しうる候補位置が選択される（ステップＳ４７７）。
【０１２２】
そして、ステップＳ４７７で選択された候補位置にバッファが挿入・配置される（ステップＳ４７８）。このとき、挿入されるバッファとしては、ステップＳ４７５での仮配線結果に基づいて、このバッファから、バッファ挿入対象のグループに属する所属被供給素子までのクロック伝播遅延時間を最適化しうる特性を有するバッファが選択される。
【０１２３】
上述したステップＳ４７１〜Ｓ４７８の処理は、ステップＳ４６で分割された全てのグループに対して実行される。つまり、ステップＳ４７９において、全てのグループについてステップＳ４７１〜Ｓ４７８の処理を終了したと判断されるまで、ステップＳ４７１〜Ｓ４７８の処理は繰り返し実行される。
全てのグループについてステップＳ４７１〜Ｓ４７８の処理を終了したと判断されると（ステップＳ４７９のＹＥＳルート）、バッファ挿入部１４Ｂによって各グループに挿入されたバッファを複数の所属被供給素子とみなして（ステップＳ４８）、ステップＳ４４に戻る。
【０１２４】
そして、上述したステップＳ４４〜Ｓ４８の処理は、ステップＳ４５でクロックスキューが最適化されていると判断されるまで繰り返し実行される。ステップＳ４５でクロックスキューが最適化されていると判断された場合（ＹＥＳルート）、入力端子用仮配線部２４によって、供給源素子と各入力端子配置候補位置に配置された入力端子との間を最短経路で接続する信号ラインを仮配線する（ステップＳ４９；第３仮配線ステップ）。
【０１２５】
全ての入力端子配置候補位置についてステップＳ４４〜Ｓ４９の処理を終了したと判断されると（ステップＳ５０のＹＥＳルート）、今回、ステップＳ４１で選択された入力端子の配置位置を決定し、その配置位置に入力端子を配置する（ステップＳ５１；入力端子配置ステップ）。このステップＳ５１では、入力端子配置部２５によって、以下に説明するステップＳ５１１およびＳ５１２の処理が行なわれる。
【０１２６】
つまり、全ての特定素子配置候補位置についてステップＳ４４，Ｓ４７５およびＳ４９で得られた仮配線結果に基づき、複数の入力端子配置候補位置の中から、所属被供給素子におけるクロックスキューおよびクロック伝播遅延時間を最適化しうる候補位置が選択され（ステップＳ５１１）、選択された候補位置に入力端子が仮想的に配置されるとともに、選択された候補位置についてステップＳ４７で得られた仮配線結果およびバッファの挿入位置が採用される（ステップＳ５１２）。なお、上述のように決定された入力端子の配置位置には、実際には、例えば、適当な出力駆動能力を有するバッファが配置される（図２１参照）。
【０１２７】
上述したステップＳ４１〜Ｓ５１の処理は、ステップＳ４０で設定された全ての入力端子に対して実行される。つまり、ステップＳ５２において、全ての入力端子についてステップＳ４１〜Ｓ５１の処理を終了したと判断されるまで、ステップＳ４１〜Ｓ５１の処理は繰り返し実行される。
【０１２８】
全ての入力端子についてステップＳ４１〜Ｓ５１の処理を終了したと判断されると（ステップＳ５２のＹＥＳルート）、ステップＳ５１で仮想的に配置された複数階層における入力端子（バッファ）を、複数の被供給素子とみなして（ステップＳ５３）、第１実施形態とほぼ同様の処理（ステップＳ１１〜Ｓ１５，Ｓ１６２およびＳ１７）が実行される。
【０１２９】
その際、第１実施形態のステップＳ１６に代えて第３実施形態で実行されるステップＳ１６２（最終配線ステップ）では、最終配線部１５Ｂによって、ステップＳ５１で採用された仮配線結果と、ステップＳ１１およびＳ１４での仮配線結果と、入力端子の配置位置とに従って、供給源素子，複数の被供給素子，バッファおよび入力端子の間を結ぶ信号ラインの配線経路が決定される。
【０１３０】
次に、図２０および図２１を参照しながら、第３実施形態の設計動作をより具体的に説明する。なお、図２０および図２１はその具体的な設計動作を説明するための図である。ここでは、図２０に示すように、２つの論理階層を有する回路がネットリストによって与えられた場合について説明する。このネットリストにおいては、第１実施形態と同様、一つのクロック信号供給源素子ＣＬＫと、８個の被クロック信号供給素子Ａ〜Ｈとが含まれているが、被供給素子Ａ〜Ｄが一つの論理階層に属し、被供給素子Ｅ〜Ｈがもう一つの論理階層に属しているものとし、これらの素子間のクロック分配回路を設計する場合について説明する。また、供給源素子ＣＬＫおよび被供給素子Ａ〜Ｈは、図３〜図９に示したものと同様の位置に配置されるものとする。
【０１３１】
図２０に示すような情報を有するネットリストが設計装置に与えられると、まず、上述したステップＳ４０の処理によって、各論理階層について入力端子Ｉ１，Ｉ２が仮想的に設定された後、上述したステップＳ４１〜Ｓ５２の処理によって、図２１に示すように、４個の所属被供給素子Ａ〜Ｄに対する入力端子Ｉ１（バッファｂ２５）の配置位置が決定されるとともに、これらの４個の所属被供給素子Ａ〜Ｄと入力端子Ｉ１との間におけるバッファｂ２１，ｂ２２の挿入・配置および仮配線が行なわれる。同様に、４個の所属被供給素子Ｅ〜Ｈに対する入力端子Ｉ２（バッファｂ２６）の配置位置が決定されるとともに、これらの４個の所属被供給素子Ｅ〜Ｈと入力端子Ｉ２との間におけるバッファｂ２３，ｂ２４の挿入・配置および仮配線が行なわれる。
【０１３２】
この後、２つの入力端子Ｉ１，Ｉ２の位置にそれぞれ配置される２つのバッファｂ２５，ｂ２６が被供給素子とみなされて、第１実施形態とほぼ同様の処理、つまり上述したステップＳ１１〜Ｓ１５，Ｓ１６２およびＳ１７の処理が実行され、供給源素子ＣＬＫと２つのバッファｂ２５，ｂ２６との間において、バッファｂ２７が挿入・配置されるとともに配線経路が決定される。さらに、供給源素子ＣＬＫの特性などが決定された後、最終的に図２１に示すようなクロックツリー（クロック分配回路）が生成されることになる。
【０１３３】
このように、本発明の第３実施形態によれば、被供給素子が複数の論理階層に存在しているような回路の設計においては、論理階層の境界に仮想的に設定された入力端子を変更しないようにバッファ挿入・配置や配線経路が決定され、クロックツリーが生成される。
【０１３４】
これにより、複数の被供給素子が異なる論理階層に属している場合であっても、所属被供給素子に対する入力端子の位置が、入力端子と所属被供給素子との間の配線経路とともに、配線状態およびバッファの挿入・配置状態の両方を調節しながら決定されるので、回路全体におけるクロック伝播遅延時間とクロックスキューとが、同時に最適化されるだけでなく、確実に最適化される。
【０１３５】
〔４〕その他
なお、本発明は上述した実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で種々変形して実施することができる。
例えば、本実施形態の設計回路に与えられるネットリストの内容に応じて、上述した第１〜第３実施形態や、第１実施形態の第１変形例や第２変形例を適宜組み合わせてクロック分配回路を設計してもよい。
【０１３６】
〔５〕付記
（付記１）  少なくとも一つの供給源素子からのクロック信号を複数の被供給素子に分配・供給するクロック分配回路を設計するための方法であって、
所定位置に配置される該供給源素子と該複数の被供給素子との間を、最短経路で直接接続する信号ラインを仮配線する第１仮配線ステップと、
該第１仮配線ステップで仮配線された該信号ラインにより、該複数の被供給素子におけるクロックスキューが最適化されているか否かを判断する第１判断ステップと、
該第１判断ステップでクロックスキューが最適化されていないと判断された場合に、該複数の被供給素子を複数のグループに分割する第１グルーピングステップと、
該第１グルーピングステップで得られた該グループ毎に、一つのバッファを割り当て、該バッファの挿入・配置可能な複数のバッファ挿入候補位置を選択し、選択された各バッファ挿入候補位置について、当該バッファ挿入候補位置に配置された該バッファと当該グループに属する該被供給素子との間を最短経路で接続する信号ラインと、当該バッファ挿入候補位置に配置された該バッファと該供給源素子との間を最短経路で接続する信号ラインとを仮配線し、該複数のバッファ挿入候補位置の全てについて得られた仮配線結果に基づいて、該複数のバッファ挿入候補位置の中から、当該グループに属する該被供給素子におけるクロックスキューおよびクロック伝播遅延時間を最適化しうる候補位置を選択し、選択された候補位置に該バッファを挿入・配置する第１バッファ挿入ステップとを、該第１判断ステップでクロックスキューが最適化されていると判断されるまで、該第１バッファ挿入ステップで該複数のグループのそれぞれに挿入された該バッファを該複数の被供給素子とみなして、繰り返し実行した後、
該第１判断ステップでクロックスキューが最適化されていると判断された場合に、該第１仮配線ステップおよび該第１バッファ挿入ステップでの仮配線結果に従って、該供給源素子，該複数の被供給素子および該バッファの間を結ぶ信号ラインの配線経路を決定する最終配線ステップを実行することを特徴とする、クロック分配回路の設計方法。
【０１３７】
（付記２）  該第１バッファ挿入ステップにおいて、各グループに挿入される該バッファとして、該バッファから当該グループに属する該被供給素子までのクロック伝播遅延時間を最適化しうる特性を有するバッファを選択することを特徴とする、付記１記載のクロック分配回路の設計方法。
【０１３８】
（付記３）  該供給源素子と該複数の被供給素子のうちの一部（以下、特定被供給素子という）との間に特定の機能を果たす特定素子が介在している場合、該第１仮配線ステップの実行に先立って、
該特定素子の配置可能な複数の特定素子配置候補位置を選択する選択ステップを実行し、
該選択ステップで選択された各特定素子候補位置について、
当該特定素子配置候補位置に配置される該特定素子と所定位置に配置される該特定被供給素子との間を、最短経路で直接接続する信号ラインを仮配線する第２仮配線ステップと、
該第２仮配線ステップで仮配線された該信号ラインにより、該特定被供給素子におけるクロックスキューが最適化されているか否かを判断する第２判断ステップと、
該第２判断ステップでクロックスキューが最適化されていないと判断された場合に、該特定被供給素子を複数のグループに分割する第２グルーピングステップと、
該第２グルーピングステップで得られた該グループ毎に、一つのバッファを割り当て、該バッファの挿入・配置可能な複数のバッファ挿入候補位置を選択し、選択された各バッファ挿入候補位置について、当該バッファ挿入候補位置に配置された該バッファと当該グループに属する該特定被供給素子との間を最短経路で接続する信号ラインと、当該バッファ挿入候補位置に配置された該バッファと該特定素子との間を最短経路で接続する信号ラインとを仮配線し、各バッファ挿入候補位置について得られた仮配線結果に基づいて、該複数のバッファ挿入候補位置の中から、当該グループに属する該特定被供給素子におけるクロックスキューおよびクロック伝播遅延時間を最適化しうる候補位置を選択し、選択された候補位置に該バッファを挿入・配置する第２バッファ挿入ステップとを、該第２判断ステップでクロックスキューが最適化されていると判断されるまで、該第２バッファ挿入ステップで該複数のグループのそれぞれに挿入された該バッファを該特定被供給素子とみなして、繰り返し実行するとともに、
該供給源素子と各特定素子配置候補位置に配置された該特定素子との間を最短経路で接続する信号ラインを仮配線する第３仮配線ステップを実行した後、
該複数の特定素子配置候補位置の全てについて該第２仮配線ステップ，該第２バッファ挿入ステップおよび該第３仮配線ステップで得られた仮配線結果に基づいて、該複数の特定素子配置候補位置の中から、該特定被供給素子におけるクロックスキューおよびクロック伝播遅延時間を最適化しうる候補位置を選択し、選択された候補位置に該特定素子を配置するとともに、選択された候補位置について得られた仮配線結果および該バッファの挿入位置を採用する特定素子配置ステップを実行してから、
該複数の被供給素子のうち該特定被供給素子を除いた被供給素子と該特定素子配置ステップで配置された該特定素子とを、該複数の被供給素子とみなして、該第１仮配線ステップ，該第１判断ステップ，該第１グルーピングステップ，該第１バッファ挿入ステップおよび該最終配線ステップを実行し、その際、該最終配線ステップでは、該特定素子配置ステップで採用された仮配線結果と該第１仮配線ステップおよび該第１バッファ挿入ステップでの仮配線結果と該特定素子の配置位置とに従って、該供給源素子，該複数の被供給素子，該バッファおよび該特定素子の間を結ぶ信号ラインの配線経路を決定することを特徴とする、付記１または付記２に記載のクロック分配回路の設計方法。
【０１３９】
（付記４）  該複数の被供給素子が異なる論理階層に属している場合、該第１仮配線ステップの実行に先立って、
各論理階層について、該論理階層に属する該被供給素子（以下、所属被供給素子という）に接続される入力端子を仮想的に設定する入力端子設定ステップと、
該入力端子設定ステップで設定された各入力端子を配置可能な複数の入力端子配置候補位置を選択する選択ステップとを実行し、
該選択ステップで選択された各入力端子配置候補位置について、
当該入力端子配置候補位置に配置される該入力端子と、該入力端子に接続され所定位置に配置される該所属被供給素子との間を、最短経路で直接接続する信号ラインを仮配線する第２仮配線ステップと、
該第２仮配線ステップで仮配線された該信号ラインにより、該所属被供給素子におけるクロックスキューが最適化されているか否かを判断する第２判断ステップと、
該第２判断ステップでクロックスキューが最適化されていないと判断された場合に、該所属被供給素子を複数のグループに分割する第２グルーピングステップと、
該第２グルーピングステップで得られた該グループ毎に、一つのバッファを割り当て、該バッファの挿入・配置可能な複数のバッファ挿入候補位置を選択し、選択された各バッファ挿入候補位置について、当該バッファ挿入候補位置に配置された該バッファと当該グループに属する該所属被供給素子との間を最短経路で接続する信号ラインと、当該バッファ挿入候補位置に配置された該バッファと該入力端子との間を最短経路で接続する信号ラインとを仮配線し、各バッファ挿入候補位置について得られた仮配線結果に基づいて、該複数のバッファ挿入候補位置の中から、当該グループに属する該所属被供給素子におけるクロックスキューおよびクロック伝播遅延時間を最適化しうる候補位置を選択し、選択された候補位置に該バッファを挿入・配置する第２バッファ挿入ステップとを、該第２判断ステップでクロックスキューが最適化されていると判断されるまで、該第２バッファ挿入ステップで該複数のグループのそれぞれに挿入された該バッファを該所属被供給素子とみなして、繰り返し実行するとともに、
該供給源素子と各入力端子配置候補位置に配置された該入力端子との間を最短経路で接続する信号ラインを仮配線する第３仮配線ステップを実行した後、
該複数の入力端子配置候補位置の全てについて該第２仮配線ステップ，該第２バッファ挿入ステップおよび該第３仮配線ステップで得られた仮配線結果に基づいて、該複数の入力端子配置候補位置の中から、該所属被供給素子におけるクロックスキューおよびクロック伝播遅延時間を最適化しうる候補位置を選択し、選択された候補位置に該入力端子を配置するとともに、選択された候補位置について得られた仮配線結果および該バッファの挿入位置を採用する入力端子配置ステップを実行してから、
該複数の論理階層のそれぞれについて該入力端子配置ステップで配置された複数の入力端子を、該複数の被供給素子とみなして、該第１仮配線ステップ，該第１判断ステップ，該第１グルーピングステップ，該第１バッファ挿入ステップおよび該最終配線ステップを実行し、その際、該最終配線ステップでは、該入力端子配置ステップで採用された仮配線結果と該第１仮配線ステップおよび該第１バッファ挿入ステップでの仮配線結果と該入力端子の配置位置とに従って、該供給源素子，該複数の被供給素子，該バッファおよび該入力端子の間を結ぶ信号ラインの配線経路を決定することを特徴とする、付記１または付記２に記載のクロック分配回路の設計方法。
【０１４０】
（付記５）  該第２バッファ挿入ステップにおいて、各グループに挿入される該バッファとして、該バッファから当該グループに属する該被供給素子までのクロック伝播遅延時間を最適化しうる特性を有するバッファを選択することを特徴とする、付記３または付記４に記載のクロック分配回路の設計方法。
【０１４１】
（付記６）  該最終配線ステップによる配線結果に基づいて、該供給源素子を、クロック伝播遅延時間を最適化しうる特性を有する素子に変更する供給源素子変更ステップをさらに実行することを特徴とする、付記１〜付記５のいずれか一つに記載のクロック分配回路の設計方法。
【０１４２】
（付記７）  該複数の被供給素子に対してそれぞれ異なるクロックスキューの制約が与えられた場合、該制約を満足するように、該バッファの挿入・配置および該信号ラインの配線経路の決定を行なうことを特徴とする、付記１〜付記６のいずれか一つに記載のクロック分配回路の設計方法。
【０１４３】
（付記８）  該供給源素子が２以上存在する場合、各供給源素子について、当該供給源素子と、当該供給源素子からのクロック信号を供給される該被供給素子との間の該クロック分配回路を設計してから、２以上の該供給源素子から該複数の被供給素子までのクロック伝播遅延時間が一致するように、各供給源素子と各供給源素子について設計された該クロック分配回路との間で、バッファの挿入・配置および信号ラインの配線経路の決定を行なうことを特徴とする、付記１〜付記７のいずれか一つに記載のクロック分配回路の設計方法。
【０１４４】
（付記９）  少なくとも一つの供給源素子からのクロック信号を複数の被供給素子に分配・供給するクロック分配回路を設計するための装置であって、
所定位置に配置された該供給源素子と該複数の被供給素子との間を、最短経路で直接接続する信号ラインを仮配線する第１仮配線部と、
該第１仮配線部によって仮配線された該信号ラインにより、該複数の被供給素子におけるクロックスキューが最適化されているか否かを判断する第１判断部と、
該第１判断部によってクロックスキューが最適化されていないと判断された場合に、該複数の被供給素子を複数のグループに分割する第１グルーピング部と、該第１グルーピング部によって得られた該グループ毎に、一つのバッファを割り当て、該バッファの挿入・配置可能な複数のバッファ挿入候補位置を選択し、選択された各バッファ挿入候補位置について、当該バッファ挿入候補位置に配置された該バッファと当該グループに属する該被供給素子との間を最短経路で接続する信号ラインと、当該バッファ挿入候補位置に配置された該バッファと該供給源素子との間を最短経路で接続する信号ラインとを仮配線し、該複数のバッファ挿入候補位置の全てについて得られた仮配線結果に基づいて、該複数のバッファ挿入候補位置の中から、当該グループに属する該被供給素子におけるクロックスキューおよびクロック伝播遅延時間を最適化しうる候補位置を選択し、選択された候補位置に該バッファを挿入・配置する第１バッファ挿入部と、
該第１判断部でクロックスキューが最適化されていると判断された場合に、該第１仮配線部および該第１バッファ挿入部によって得られた仮配線結果に従って、該供給源素子，該複数の被供給素子および該バッファの間を結ぶ信号ラインの配線経路を決定する最終配線部とをそなえ、
該第１仮配線部，該第１判断部，該第１グルーピング部および該第１バッファ挿入部を、該第１判断部によってクロックスキューが最適化されていると判断されるまで、該第１バッファ挿入部によって該複数のグループのそれぞれに挿入された該バッファを該複数の被供給素子とみなして、繰り返し動作させた後、該最終配線部を動作させることを特徴とする、クロック分配回路の設計装置。
【０１４５】
（付記１０）  該第１バッファ挿入部が、各グループに挿入される該バッファとして、該バッファから当該グループに属する該被供給素子までのクロック伝播遅延時間を最適化しうる特性を有するバッファを選択することを特徴とする、付記９記載のクロック分配回路の設計装置。
【０１４６】
（付記１１）  該供給源素子と該複数の被供給素子のうちの一部（以下、特定被供給素子という）との間に特定の機能を果たす特定素子が介在している場合に、該第１仮配線部の動作に先立って、該特定素子の配置可能な複数の特定素子配置候補位置を選択する選択部と、
該選択部によって選択された各特定素子候補位置に配置される該特定素子と所定位置に配置される該特定被供給素子との間におけるバッファの挿入・配置および該信号ラインの仮配線を行なう特定素子用設計部と、
該供給源素子と各特定素子配置候補位置に配置された該特定素子との間を最短経路で接続する信号ラインを仮配線する特定素子用仮配線部と、
該複数の特定素子配置候補位置の全てについて該特定素子用設計部および該特定素子用仮配線部によって得られた仮配線結果に基づいて、該複数の特定素子配置候補位置の中から、該特定被供給素子におけるクロックスキューおよびクロック伝播遅延時間を最適化しうる候補位置を選択し、選択された候補位置に該特定素子を配置するとともに、選択された候補位置について得られた仮配線結果および該バッファの挿入位置を採用する特定素子配置部とをそなえ、
該特定素子用設計部が、
各特定素子配置候補位置に配置される該特定素子と所定位置に配置される該特定被供給素子との間を、最短経路で直接接続する信号ラインを仮配線する第２仮配線部と、
該第２仮配線部によって仮配線された該信号ラインにより、該特定被供給素子におけるクロックスキューが最適化されているか否かを判断する第２判断部と、
該第２判断部によってクロックスキューが最適化されていないと判断された場合に、該特定被供給素子を複数のグループに分割する第２グルーピング部と、
該第２グルーピング部によって得られた該グループ毎に、一つのバッファを割り当て、該バッファの挿入・配置可能な複数のバッファ挿入候補位置を選択し、選択された各バッファ挿入候補位置について、当該バッファ挿入候補位置に配置された該バッファと当該グループに属する該特定被供給素子との間を最短経路で接続する信号ラインと、当該バッファ挿入候補位置に配置された該バッファと該特定素子との間を最短経路で接続する信号ラインとを仮配線し、各バッファ挿入候補位置について得られた仮配線結果に基づいて、該複数のバッファ挿入候補位置の中から、当該グループに属する該特定被供給素子におけるクロックスキューおよびクロック伝播遅延時間を最適化しうる候補位置を選択し、選択された候補位置に該バッファを挿入・配置する第２バッファ挿入部とをそなえて構成され、該特定素子用設計部において、該第２仮配線部，該第２判断部，該第２グルーピング部および該第２バッファ挿入部が、該第２判断部によってクロックスキューが最適化されていると判断されるまで、該第２バッファ挿入部によって該複数のグループのそれぞれに挿入された該バッファを該複数の被供給素子とみなして、繰り返し動作するとともに、
該複数の被供給素子のうち該特定被供給素子を除いた被供給素子と該特定素子配置部によって配置された該特定素子とを、該複数の被供給素子とみなして、該第１仮配線部，該第１判断部，該第１グルーピング部，該第１バッファ挿入部および該最終配線部を動作させ、その際、該最終配線部が、該特定素子配置部によって採用された仮配線結果と該第１仮配線部および該第１バッファ挿入部での仮配線結果と該特定素子の配置位置とに従って、該供給源素子，該複数の被供給素子，該バッファおよび該特定素子の間を結ぶ信号ラインの配線経路を決定することを特徴とする、付記９または付記１０に記載のクロック分配回路の設計装置。
【０１４７】
（付記１２）  該第１仮配線部が、該特定素子用仮配線部および該第２仮配線部としての機能を兼ねるとともに、該第１判断部，該第１グルーピング部および該第１バッファ挿入部が、それぞれ該第２判断部，該第２グルーピング部および該第２バッファ挿入部としての機能を兼ねることを特徴とする、付記１１記載のクロック分配回路の設計装置。
【０１４８】
（付記１３）  該複数の被供給素子が異なる論理階層に属している場合、該第１仮配線部の動作に先立って、各論理階層について、該論理階層に属する該被供給素子（以下、所属被供給素子という）に接続される入力端子を仮想的に設定する入力端子設定部と、
該入力端子設定部によって設定された各入力端子を配置可能な複数の入力端子配置候補位置を選択する選択部と、
該選択部によって選択された各入力端子配置候補位置に配置される該入力端子と、該入力端子に接続され所定位置に配置される該所属被供給素子との間におけるバッファの挿入・配置および該信号ラインの仮配線を行なう入力端子用設計部と、
該供給源素子と各入力端子配置候補位置に配置された該入力端子との間を最短経路で接続する信号ラインを仮配線する入力端子用仮配線部と、
該複数の入力端子配置候補位置の全てについて該入力端子用設計部および該入力端子用仮配線部によって得られた仮配線結果に基づいて、該複数の入力端子配置候補位置の中から、該所属被供給素子におけるクロックスキューおよびクロック伝播遅延時間を最適化しうる候補位置を選択し、選択された候補位置に該入力端子を配置するとともに、選択された候補位置について得られた仮配線結果および該バッファの挿入位置を採用する入力端子配置部とをそなえ、
該入力端子用設計部が、
各入力端子配置候補位置に配置される該入力端子と所定位置に配置される該所属被供給素子との間を、最短経路で直接接続する信号ラインを仮配線する第２仮配線部と、
該第２仮配線部によって仮配線された該信号ラインにより、該所属被供給素子におけるクロックスキューが最適化されているか否かを判断する第２判断部と、
該第２判断部によってクロックスキューが最適化されていないと判断された場合に、該所属被供給素子を複数のグループに分割する第２グルーピング部と、
該第２グルーピング部によって得られた該グループ毎に、一つのバッファを割り当て、該バッファの挿入・配置可能な複数のバッファ挿入候補位置を選択し、選択された各バッファ挿入候補位置について、当該バッファ挿入候補位置に配置された該バッファと当該グループに属する該所属被供給素子との間を最短経路で接続する信号ラインと、当該バッファ挿入候補位置に配置された該バッファと該入力端子との間を最短経路で接続する信号ラインとを仮配線し、各バッファ挿入候補位置について得られた仮配線結果に基づいて、該複数のバッファ挿入候補位置の中から、当該グループに属する該所属被供給素子におけるクロックスキューおよびクロック伝播遅延時間を最適化しうる候補位置を選択し、選択された候補位置に該バッファを挿入・配置する第２バッファ挿入部とをそなえて構成され、
該入力端子用設計部において、該第２仮配線部，該第２判断部，該第２グルーピング部および該第２バッファ挿入部が、該第２判断部によってクロックスキューが最適化されていると判断されるまで、該第２バッファ挿入部によって該複数のグループのそれぞれに挿入された該バッファを該複数の被供給素子とみなして、繰り返し動作するとともに、
該複数の論理階層のそれぞれについて該入力端子配置部で配置された複数の入力端子を、該複数の被供給素子とみなして、該第１仮配線部，該第１判断部，該第１グルーピング部，該第１バッファ挿入部および該最終配線部を動作させ、その際、該最終配線部が、該特定素子配置部によって採用された仮配線結果と該第１仮配線部および該第１バッファ挿入部での仮配線結果と該入力端子の配置位置とに従って、該供給源素子，該複数の被供給素子，該バッファおよび該入力端子の間を結ぶ信号ラインの配線経路を決定することを特徴とする、付記９または付記１０に記載のクロック分配回路の設計装置。
【０１４９】
（付記１４）  該第１仮配線部が、該入力端子用仮配線部および該第２仮配線部としての機能を兼ねるとともに、該第１判断部，該第１グルーピング部および該第１バッファ挿入部が、それぞれ該第２判断部，該第２グルーピング部および該第２バッファ挿入部としての機能を兼ねることを特徴とする、付記１３記載のクロック分配回路の設計装置。
【０１５０】
（付記１５）  該第２バッファ挿入部が、各グループに挿入される該バッファとして、該バッファから当該グループに属する該被供給素子までのクロック伝播遅延時間を最適化しうる特性を有するバッファを選択することを特徴とする、付記１１〜付記１４のいずれか一つに記載のクロック分配回路の設計装置。
【０１５１】
（付記１６）  該最終配線部による配線結果に基づいて、該供給源素子を、クロック伝播遅延時間を最適化しうる特性を有する素子に変更する供給源素子変更部をさらにそなえたことを特徴とする、付記９〜付記１５のいずれか一つに記載のクロック分配回路の設計装置。
【０１５２】
（付記１７）  該複数の被供給素子に対してそれぞれ異なるクロックスキューの制約が与えられた場合、該制約を満足するように、該バッファの挿入・配置および該信号ラインの配線経路の決定を行なうことを特徴とする、付記９〜付記１６のいずれか一つに記載のクロック分配回路の設計装置。
【０１５３】
（付記１８）  該供給源素子が２以上存在する場合、各供給源素子について、当該供給源素子と、当該供給源素子からのクロック信号を供給される該被供給素子との間の該クロック分配回路を設計してから、２以上の該供給源素子から該複数の被供給素子までのクロック伝播遅延時間が一致するように、各供給源素子と各供給源素子について設計された該クロック分配回路との間で、バッファの挿入・配置および信号ラインの配線経路の決定を行なうことを特徴とする、付記９〜付記１７のいずれか一つに記載のクロック分配回路の設計装置。
【０１５４】
（付記１９）  少なくとも一つの供給源素子からのクロック信号を複数の被供給素子に分配・供給するクロック分配回路を、コンピュータに設計させるための設計プログラムであって、
所定位置に配置された該供給源素子と該複数の被供給素子との間を、最短経路で直接接続する信号ラインを仮配線する仮配線部、
該仮配線部によって仮配線された該信号ラインにより、該複数の被供給素子におけるクロックスキューが最適化されているか否かを判断する判断部、
該判断部によってクロックスキューが最適化されていないと判断された場合に、該複数の被供給素子を複数のグループに分割するグルーピング部、
該グルーピング部によって得られた該グループ毎に、一つのバッファを割り当て、該バッファの挿入・配置可能な複数のバッファ挿入候補位置を選択し、選択された各バッファ挿入候補位置について、当該バッファ挿入候補位置に配置された該バッファと当該グループに属する該被供給素子との間を最短経路で接続する信号ラインと、当該バッファ挿入候補位置に配置された該バッファと該供給源素子との間を最短経路で接続する信号ラインとを仮配線し、該複数のバッファ挿入候補位置の全てについて得られた仮配線結果に基づいて、該複数のバッファ挿入候補位置の中から、当該グループに属する該被供給素子におけるクロックスキューおよびクロック伝播遅延時間を最適化しうる候補位置を選択し、選択された候補位置に該バッファを挿入・配置するバッファ挿入部、および、
該判断部でクロックスキューが最適化されていると判断された場合に、該仮配線部および該バッファ挿入部によって得られた仮配線結果に従って、該供給源素子，該複数の被供給素子および該バッファの間を結ぶ信号ラインの配線経路を決定する最終配線部として、該コンピュータを機能させるとともに、
該判断部によってクロックスキューが最適化されていると判断されるまで、該バッファ挿入部によって該複数のグループのそれぞれに挿入された該バッファを該複数の被供給素子とみなして、該コンピュータを、該仮配線部，該判断部，該グルーピング部および該バッファ挿入部として繰り返し機能させた後、該コンピュータを、該最終配線部として機能させることを特徴とする、クロック分配回路の設計プログラム。
【０１５５】
（付記２０）  少なくとも一つの供給源素子からのクロック信号を複数の被供給素子に分配・供給するクロック分配回路を、コンピュータに設計させるための設計プログラムを記録したコンピュータ読取可能な記録媒体であって、
該設計プログラムが、
所定位置に配置された該供給源素子と該複数の被供給素子との間を、最短経路で直接接続する信号ラインを仮配線する仮配線部、
該仮配線部によって仮配線された該信号ラインにより、該複数の被供給素子におけるクロックスキューが最適化されているか否かを判断する判断部、
該判断部によってクロックスキューが最適化されていないと判断された場合に、該複数の被供給素子を複数のグループに分割するグルーピング部、
該グルーピング部によって得られた該グループ毎に、一つのバッファを割り当て、該バッファの挿入・配置可能な複数のバッファ挿入候補位置を選択し、選択された各バッファ挿入候補位置について、当該バッファ挿入候補位置に配置された該バッファと当該グループに属する該被供給素子との間を最短経路で接続する信号ラインと、当該バッファ挿入候補位置に配置された該バッファと該供給源素子との間を最短経路で接続する信号ラインとを仮配線し、該複数のバッファ挿入候補位置の全てについて得られた仮配線結果に基づいて、該複数のバッファ挿入候補位置の中から、当該グループに属する該被供給素子におけるクロックスキューおよびクロック伝播遅延時間を最適化しうる候補位置を選択し、選択された候補位置に該バッファを挿入・配置するバッファ挿入部、および、
該判断部でクロックスキューが最適化されていると判断された場合に、該仮配線部および該バッファ挿入部によって得られた仮配線結果に従って、該供給源素子，該複数の被供給素子および該バッファの間を結ぶ信号ラインの配線経路を決定する最終配線部として、該コンピュータを機能させるとともに、
該判断部によってクロックスキューが最適化されていると判断されるまで、該バッファ挿入部によって該複数のグループのそれぞれに挿入された該バッファを該複数の被供給素子とみなして、該コンピュータを、該仮配線部，該判断部，該グルーピング部および該バッファ挿入部として繰り返し機能させた後、該コンピュータを、該最終配線部として機能させることを特徴とする、クロック分配回路の設計プログラムを記録したコンピュータ読取可能な記録媒体。
【０１５６】
【発明の効果】
以上詳述したように、本発明のクロック分配回路の設計方法（請求項１，２），設計装置（請求項３）および設計プログラム（請求項４）並びに同プログラムを記録したコンピュータ読取可能な記録媒体（請求項５）によれば、以下のような効果ないし利点を得ることができる。
【０１５７】
（１）レイアウト設計に際して、供給源素子および複数の被供給素子を配置した後に、被供給素子側から供給源素子へ向け、配線状態とバッファの挿入・配置状態との両方を調節しながら配線経路が決定されるので、回路全体におけるクロック伝播遅延時間とクロックスキューとが同時かつ確実に最適化され、ひいては高速に動作することのできる半導体回路を設計し実現することができる（請求項１，３〜５）。
【０１５８】
（２）各グループに挿入されるバッファとして、そのバッファから各グループに属する被供給素子までのクロック伝播遅延時間を最適化しうる特性を有するバッファを選択することにより、より確実に、回路全体におけるクロック伝播遅延時間とクロックスキューとを最適化することができる（請求項２）。
【０１５９】
（３）供給源素子と複数の被供給素子のうちの一部との間に特定の機能を果たす特定素子（セレクタ，インバータ等）が介在している場合においても、特定被供給素子に対する特定素子の位置が、この特定素子と特定被供給素子との間の配線経路とともに、配線状態およびバッファの挿入・配置状態の両方を調節しながら決定されるので、回路全体におけるクロック伝播遅延時間とクロックスキューとが、同時に最適化されるだけでなく、確実に最適化される。
【０１６０】
（４）複数の被供給素子が異なる論理階層に属している場合においても、各論理階層に属する所属被供給素子に接続される入力端子を、論理階層毎に仮想的に設定し、所属被供給素子に対する入力端子の位置が、入力端子と所属被供給素子との間の配線経路とともに、配線状態およびバッファの挿入・配置状態の両方を調節しながら決定されるので、回路全体におけるクロック伝播遅延時間とクロックスキューとが、同時に最適化されるだけでなく、確実に最適化される。
【０１６１】
（５）最終配線結果に基づいて、供給源素子を、クロック伝播遅延時間を最適化しうる特性を有する素子に変更することにより、より確実に、回路全体におけるクロック伝播遅延時間とクロックスキューとを最適化することができる。
【図面の簡単な説明】
【図１】本発明の第１実施形態としてのクロック分配回路の設計装置の構成を示すブロック図である。
【図２】本発明の第１実施形態としてのクロック分配回路の設計方法の手順を説明するためのフローチャートである。
【図３】第１実施形態の具体的な設計動作を説明するための図である。
【図４】第１実施形態の具体的な設計動作を説明するための図である。
【図５】第１実施形態の具体的な設計動作を説明するための図である。
【図６】第１実施形態の具体的な設計動作を説明するための図である。
【図７】第１実施形態の具体的な設計動作を説明するための図である。
【図８】第１実施形態の具体的な設計動作を説明するための図である。
【図９】第１実施形態の具体的な設計動作を説明するための図である。
【図１０】第１実施形態の第１変形例の具体的な設計動作を説明するための図である。
【図１１】第１実施形態の第２変形例の具体的な設計動作を説明するための図である。
【図１２】第１実施形態の第２変形例の具体的な設計動作を説明するための図である。
【図１３】第１実施形態の第２変形例の具体的な設計動作を説明するための図である。
【図１４】本発明の第２実施形態としてのクロック分配回路の設計装置の構成を示すブロック図である。
【図１５】本発明の第２実施形態としてのクロック分配回路の設計方法の手順を説明するためのフローチャートである。
【図１６】第２実施形態の具体的な設計動作を説明するための図である。
【図１７】第２実施形態の具体的な設計動作を説明するための図である。
【図１８】本発明の第３実施形態としてのクロック分配回路の設計装置の構成を示すブロック図である。
【図１９】本発明の第３実施形態としてのクロック分配回路の設計方法の手順を説明するためのフローチャートである。
【図２０】第３実施形態の具体的な設計動作を説明するための図である。
【図２１】第３実施形態の具体的な設計動作を説明するための図である。
【符号の説明】
１１  仮配線部（第１仮配線部）
１１Ａ，１１Ｂ  仮配線部（第２仮配線部）
１２  判断部（第１判断部）
１２Ａ，１２Ｂ  判断部（第２判断部）
１３  グルーピング部（第１グルーピング部）
１３Ａ，１３Ｂ  グルーピング部（第２グルーピング部）
１４  バッファ挿入部（第１バッファ挿入部）
１４Ａ，１４Ｂ  バッファ挿入部（第２バッファ挿入部）
１５，１５Ａ，１５Ｂ  最終配線部
１６  クロック供給源素子変更部（供給源素子変更部）
１７  選択部
１８  特定素子用設計部
１９  特定素子用仮配線部
２０  特定素子配置部
２１  入力端子設定部
２２  選択部
２３  入力端子用設計部
２４  入力端子用仮配線部
２５  入力端子配置部
【図１】
0005193406.tif 000002
【図２】
0005193406.tif 000003
【図３】
0005193406.tif 000004
【図４】
0005193406.tif 000005
【図５】
0005193406.tif 000006
【図６】
0005193406.tif 000007
【図７】
0005193406.tif 000008
【図８】
0005193406.tif 000009
【図９】
0005193406.tif 000010
【図１０】
0005193406.tif 000011
【図１１】
0005193406.tif 000012
【図１２】
0005193406.tif 000013
【図１３】
0005193406.tif 000014
【図１４】
0005193406.tif 000015
【図１５】
0005193406.tif 000016
【図１６】
0005193406.tif 000017
【図１７】
0005193406.tif 000018
【図１８】
0005193406.tif 000019
【図１９】
0005193406.tif 000020
【図２０】
0005193406.tif 000021
【図２１】
0005193406.tif 000022