(57)【要約】  プロセッサ（２０）は、クロック分配回路に含まれる第１バッファによって分配されるクロック信号が入力される順序回路を追加する際に第１バッファに複数の他の順序回路が接続されている場合、メモリ（１０）に格納された物理設計データに基づき、追加される順序回路と第１バッファとの距離が、第１バッファから複数の他の順序回路までの距離の最大値と最小値との間にあるか否かを判定し、判定の結果、追加される順序回路と第１バッファとの距離が前記最大値と前記最小値との間にある場合、追加される順序回路に対し、第１バッファから供給するクロック信号の配線処理を行なう。これにより、物理設計完了後にクロックツリーに変更が生じた場合にクロックツリーを簡便な手法で修正することが可能になる。
2013114586.tif 000002
【特許請求の範囲】
【請求項１】
バッファを有するクロック分配回路を含む回路の物理設計データを格納するメモリと、
プロセッサとを有し、
前記プロセッサは、
前記クロック分配回路に含まれる第１バッファによって分配されるクロック信号が入力される順序回路を追加する際に該第１バッファに複数の他の順序回路が接続されている場合、前記メモリに格納された前記物理設計データに基づき、追加される前記順序回路と該第１バッファとの距離が、該第１バッファから該複数の他の順序回路までの距離の最大値と最小値との間にあるか否かを判定し、
前記判定の結果、追加される前記順序回路と該第１バッファとの距離が前記最大値と前記最小値との間にある場合、追加される前記順序回路に対し、該第１バッファから供給するクロック信号の配線処理を行なう
ことを特徴とする設計支援装置。
【請求項２】
前記プロセッサは、
該第１バッファに複数の他の順序回路が接続されていない場合、前記メモリに格納された前記物理設計データに基づき、複数の他の順序回路が接続されているバッファと、接続されている前記複数の他の順序回路との距離の平均および分散を有する正規分布を算出し、該正規分布の所定範囲の上限に対応する距離を前記最大値とし、該正規分布の所定範囲の下限に対応する距離を前記最小値とする
ことを特徴とする、請求項１に記載の設計支援装置。
【請求項３】
前記プロセッサは、
前記判定の結果、追加される前記順序回路と該第１バッファとの距離が前記最大値と前記最小値との間にない場合、前記メモリに格納された前記物理設計データに基づき、追加される前記順序回路に対し該第１バッファよりも上段側の第２バッファからクロック信号分配可能な距離の最大値と、追加される前記順序回路に対し該第２バッファからクロック信号分配可能な距離の最小値とを算出し、追加される前記順序回路と該第２バッファとの距離が前記クロック信号分配可能な距離の最大値と最小値との間にあるか否かを判定し、
前記判定の結果、追加される前記順序回路と該第２バッファとの距離が前記クロック信号分配可能な距離の最大値と最小値との間にある場合、追加される前記順序回路に対し、該第２バッファから供給するクロック信号の配線処理を行なう
ことを特徴とする、請求項１または請求項２に記載の設計支援装置。
【請求項４】
前記クロック信号分配可能な距離の最大値は、該第２バッファから当該第２バッファの下段側に接続された複数の次段バッファまでの距離の最大値に、前記次段バッファから前記第１バッファまでの各バッファについて得られる前記距離の最大値の総和を加算した値であり、
前記クロック信号分配可能な距離の最小値は、該第２バッファから当該第２バッファの下段側に接続された複数の次段バッファまでの距離の最小値から、前記次段バッファから前記第１バッファまでの各バッファについて得られる前記距離の最大値の総和を減算した値と、０との大きい方の値とする
ことを特徴とする、請求項３に記載の設計支援装置。
【請求項５】
前記プロセッサは、
追加される前記順序回路と複数の該第１バッファとの距離が前記最大値と前記最小値との間にある場合、前記複数の該第１バッファのうちファンアウト数が最も少ないものを選択し、追加される前記順序回路に対し、選択された該第１バッファから供給するクロック信号の配線処理を行なう
ことを特徴とする、請求項１〜請求項４のいずれか一項に記載の設計支援装置。
【請求項６】
前記プロセッサは、
追加される前記順序回路と複数の該第１バッファとの距離が前記最大値と前記最小値との間にある場合、前記複数の該第１バッファのうち、追加される前記順序回路への配線距離が最小のものを選択し、追加される前記順序回路に対し、選択された該第１バッファから供給するクロック信号の配線処理を行なう
ことを特徴とする、請求項１〜請求項４のいずれか一項に記載の設計支援装置。
【請求項７】
前記プロセッサは、
前記メモリに格納された前記物理設計データに基づき、前記複数の該第１バッファのそれぞれについて各第１バッファから既存順序回路へのクロック信号の配線が行なわれる可能性のある領域を求め、前記複数の該第１バッファのうち、追加される前記順序回路から前記領域までの距離が最小になるものを、前記配線距離が最小のものとして選択する
ことを特徴とする、請求項６に記載の設計支援装置。
【請求項８】
前記距離は、該第１バッファから該複数の他の順序回路までの直線距離、または、該第２バッファから該次段バッファまでの直線距離であることを特徴とする、請求項１〜請求項７のいずれか一項に記載の設計支援装置。
【請求項９】
前記距離は、該第１バッファから該複数の他の順序回路までの配線長、または、該第２バッファから該次段バッファまでの配線長であることを特徴とする、請求項１〜請求項７のいずれか一項に記載の設計支援装置。
【請求項１０】
メモリに格納された、バッファを有するクロック分配回路を含む回路の物理設計データに基づき、プロセッサにより設計支援を行なう方法であって、
前記クロック分配回路に含まれる第１バッファによって分配されるクロック信号が入力される順序回路を追加する際に該第１バッファに複数の他の順序回路が接続されている場合、前記物理設計データに基づき、追加される前記順序回路と該第１バッファとの距離が、該第１バッファから該複数の他の順序回路までの距離の最大値と最小値との間にあるか否かを判定し、
前記判定の結果、追加される前記順序回路と該第１バッファとの距離が前記最大値と前記最小値との間にある場合、追加される前記順序回路に対し、該第１バッファから供給するクロック信号の配線処理を行なう
ことを特徴とする設計支援方法。
【請求項１１】
該第１バッファに複数の他の順序回路が接続されていない場合、前記物理設計データに基づき、複数の他の順序回路が接続されているバッファと、接続されている前記複数の他の順序回路との距離の平均および分散を有する正規分布を算出し、該正規分布の所定範囲の上限に対応する距離を前記最大値とし、該正規分布の所定範囲の下限に対応する距離を前記最小値とする
ことを特徴とする、請求項１０に記載の設計支援方法。
【請求項１２】
前記判定の結果、追加される前記順序回路と該第１バッファとの距離が前記最大値と前記最小値との間にない場合、前記物理設計データに基づき、追加される前記順序回路に対し該第１バッファよりも上段側の第２バッファからクロック信号分配可能な距離の最大値と、追加される前記順序回路に対し該第２バッファからクロック信号分配可能な距離の最小値とを算出し、追加される前記順序回路と該第２バッファとの距離が前記クロック信号分配可能な距離の最大値と最小値との間にあるか否かを判定し、
前記判定の結果、追加される前記順序回路と該第２バッファとの距離が前記クロック信号分配可能な距離の最大値と最小値との間にある場合、追加される前記順序回路に対し、該第２バッファから供給するクロック信号の配線処理を行なう
ことを特徴とする、請求項１０または請求項１１に記載の設計支援方法。
【請求項１３】
メモリに格納された、バッファを有するクロック分配回路を含む回路の物理設計データに基づき、設計支援を行なうプロセッサに、
前記クロック分配回路に含まれる第１バッファによって分配されるクロック信号が入力される順序回路を追加する際に該第１バッファに複数の他の順序回路が接続されている場合、前記物理設計データに基づき、追加される前記順序回路と該第１バッファとの距離が、該第１バッファから該複数の他の順序回路までの距離の最大値と最小値との間にあるか否かを判定し、
前記判定の結果、追加される前記順序回路と該第１バッファとの距離が前記最大値と前記最小値との間にある場合、追加される前記順序回路に対し、該第１バッファから供給するクロック信号の配線処理を行なう
処理を実行させることを特徴とする設計支援プログラム。
【請求項１４】
該第１バッファに複数の他の順序回路が接続されていない場合、前記物理設計データに基づき、複数の他の順序回路が接続されているバッファと、接続されている前記複数の他の順序回路との距離の平均および分散を有する正規分布を算出し、該正規分布の所定範囲の上限に対応する距離を前記最大値とし、該正規分布の所定範囲の下限に対応する距離を前記最小値とする
ことを特徴とする、請求項１３に記載の設計支援プログラム。
【請求項１５】
前記判定の結果、追加される前記順序回路と該第１バッファとの距離が前記最大値と前記最小値との間にない場合、前記物理設計データに基づき、追加される前記順序回路に対し該第１バッファよりも上段側の第２バッファからクロック信号分配可能な距離の最大値と、追加される前記順序回路に対し該第２バッファからクロック信号分配可能な距離の最小値とを算出し、追加される前記順序回路と該第２バッファとの距離が前記クロック信号分配可能な距離の最大値と最小値との間にあるか否かを判定し、
前記判定の結果、追加される前記順序回路と該第２バッファとの距離が前記クロック信号分配可能な距離の最大値と最小値との間にある場合、追加される前記順序回路に対し、該第２バッファから供給するクロック信号の配線処理を行なう
処理を、前記プロセッサに実行させることを特徴とする、請求項１３または請求項１４に記載の設計支援プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本件は、設計支援装置，設計支援方法および設計支援プログラムに関する。
【背景技術】
【０００２】
一般に、ＬＳＩ（Large Scale Integration）等の半導体集積回路の設計は、図１６に示す手順で行なわれる。図１６は、一般的な集積回路の設計手順を概略的に説明するフローチャート（ステップＳ１〜Ｓ７）である。
まず、設計対象回路についての論理設計が行なわれてから（ステップＳ１）、その論理設計結果に基づき回路素子の配置が行なわれる（ステップＳ２）。回路素子には、例えばＦＦ（Flip-Flop；順序回路），ＲＡＭ（Random Access Memory）などが含まれる。【０００３】
回路素子の配置後、クロック信号を供給されるべき回路素子に対しクロック信号を分配供給するクロック分配回路が生成され配置される（ステップＳ３）。クロック分配回路には、クロック信号を出力する一つの供給源素子と、この供給源素子から各回路素子に至るまでに配置される複数段のバッファ（クロック分配マクロ）とが含まれる。クロック分配回路が配置されると、配置後のクロック分配回路のクロックスキューが制限範囲内であるか否かが判定される（ステップＳ４）。なお、クロックスキューは、ある回路素子にクロック信号が到達するタイミングと他の回路素子に同じクロック信号が到達するタイミングとのずれ量である。【０００４】
クロックスキューが制限範囲内でないと判定された場合（ステップＳ４のＮＯルート）、ステップＳ４でクロックスキューが制限範囲内であると判定されるまで、クロック分配回路の再配置が行なわれる（ステップＳ５）。ステップＳ４でクロックスキューが制限範囲内であると判定されると（ステップＳ４のＹＥＳルート）、クロック分配回路の配線が行なわれた後（ステップＳ６）、クロック分配回路以外の一般回路（回路素子間）の配線が行なわれる（ステップＳ７）。このようにして得られた設計結果は、物理設計データとしてメモリに格納される。【０００５】
近年のＬＳＩ開発において、クロック周波数は年々高速化の一途を辿り、各ＦＦへクロック信号を分配する際のクロックスキューを調整することが重要になってきている。既に回路を設計した後、つまり図１６に示す設計手順で設計対象回路の物理設計データが得られた後に論理変更等によりＦＦ，ＲＡＭが追加された場合、クロックスキューを考慮しながら、追加されたＦＦ，ＲＡＭに新たにクロック信号を分配する必要がある。追加されたＦＦやＲＡＭにクロック信号を分配する手法としては、従来、例えば、以下の４通りの手法(1)〜(4)が採られている。以下、追加されるＦＦ，ＲＡＭを追加ＦＦ／ＲＡＭと記載する場合がある。【０００６】
手法(1)：  既存の回路について得られた物理設計データを利用して追加ＦＦ／ＲＡＭにクロック信号を分配する。具体的には、追加ＦＦ／ＲＡＭに最も近いバッファに追加ＦＦ／ＲＡＭが接続され、当該バッファと追加ＦＦ／ＲＡＭとの間におけるバッファ挿入や迂回配線によって、クロックスキューの調整が行なわれる。
手法(2)：  追加ＦＦ／ＲＡＭを含む回路素子に対しクロック信号を分配供給するクロック分配回路が、再度、生成されて配置され、クロック分配回路以外の回路については、既存の回路について得られた物理設計データにおける接続関係や配置情報が流用される。【０００７】
手法(3)：  回路設計者が、既存の回路について得られた物理設計データを流用し、追加ＦＦ／ＲＡＭを含む回路素子に対するクロック信号の分配を手作業で行なう。
手法(4)：  追加ＦＦ／ＲＡＭ，クロック分配回路および一般回路を含む全ての回路について、図１６に示す設計手順（矢印ＡからステップＳ２〜Ｓ７参照）で、回路素子の配置処理，クロック分配回路の生成／配置処理，配線処理が再度実行される。【０００８】
しかしながら、上述した手法(1)〜(4)では、以下のような課題がある。
手法(1)では、追加ＦＦ／ＲＡＭと当該追加ＦＦ／ＲＡＭに最も近いバッファとの間のディレイ調整が、ディレイ計算を行なった結果に基づくバッファ挿入や配線の迂回により行なわれる。このとき、ディレイ計算には時間がかかるほか、１回の調整でクロックスキューを制限範囲内に入れることは難しく、ディレイ調整を数回繰り返す必要がある。【０００９】
手法(2)ではクロック分配回路の全てが最初から生成／配置され、手法(4)では全ての回路が最初から生成／配置される。このため、既存の回路に係る物理設計データがあるにもかかわらず、初回設計時と同等の設計時間が必要になり、大規模な回路では、タイミング調整に多大な時間がかかる。
手法(3)では、回路設計者が、手作業で、追加ＦＦ／ＲＡＭを含む回路素子に対するクロック信号の分配を行なうため、時間がかかる上に、対応できる回路規模に限界がある。【００１０】
このように、従来の手法では、クロックツリーに関する設計変更が生じた場合、再度、クロック設計をやりなおしたり、クロックツリーの変更箇所について再度ディレイ計算を行なってバッファ挿入や迂回配線による調整を繰り返したりしている。このため、多くの工数がかかり時間を要している。なお、以下では、クロック分配回路のことをクロックツリーと呼ぶ場合がある。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特開２０００−５７１９７号公報
【特許文献１】特開平１１−１６３１４８号公報
【特許文献２】特願平０９−２５８８４０号公報
【発明の概要】
【発明が解決しようとする課題】
【００１２】
一つの側面で、本件は、物理設計完了後にクロックツリーに変更が生じた場合にクロックツリーを簡便な手法で修正できるようにすることを目的とする。
なお、前記目的に限らず、後述する発明を実施するための最良の形態に示す各構成により導かれる作用効果であって、従来の技術によっては得られない作用効果を奏することも本件の他の目的の一つとして位置付けることができる。
【課題を解決するための手段】
【００１３】
本件の設計支援装置は、バッファを有するクロック分配回路を含む回路の物理設計データを格納するメモリと、プロセッサとを有している。前記プロセッサは、前記クロック分配回路に含まれる第１バッファによって分配されるクロック信号が入力される順序回路を追加する際に該第１バッファに複数の他の順序回路が接続されている場合、前記メモリに格納された前記物理設計データに基づき、追加される前記順序回路と該第１バッファとの距離が、該第１バッファから該複数の他の順序回路までの距離の最大値と最小値との間にあるか否かを判定し、前記判定の結果、追加される前記順序回路と該第１バッファとの距離が前記最大値と前記最小値との間にある場合、追加される前記順序回路に対し、該第１バッファから供給するクロック信号の配線処理を行なう。【００１４】
また、本件の設計支援方法は、メモリに格納された、バッファを有するクロック分配回路を含む回路の物理設計データに基づき、プロセッサにより設計支援を行なう方法であって、前記クロック分配回路に含まれる第１バッファによって分配されるクロック信号が入力される順序回路を追加する際に該第１バッファに複数の他の順序回路が接続されている場合、前記物理設計データに基づき、追加される前記順序回路と該第１バッファとの距離が、該第１バッファから該複数の他の順序回路までの距離の最大値と最小値との間にあるか否かを判定し、前記判定の結果、追加される前記順序回路と該第１バッファとの距離が前記最大値と前記最小値との間にある場合、追加される前記順序回路に対し、該第１バッファから供給するクロック信号の配線処理を行なう。【００１５】
さらに、本件の設計支援プログラムは、メモリに格納された、バッファを有するクロック分配回路を含む回路の物理設計データに基づき、設計支援を行なうプロセッサに、前記クロック分配回路に含まれる第１バッファによって分配されるクロック信号が入力される順序回路を追加する際に該第１バッファに複数の他の順序回路が接続されている場合、前記物理設計データに基づき、追加される前記順序回路と該第１バッファとの距離が、該第１バッファから該複数の他の順序回路までの距離の最大値と最小値との間にあるか否かを判定し、前記判定の結果、追加される前記順序回路と該第１バッファとの距離が前記最大値と前記最小値との間にある場合、追加される前記順序回路に対し、該第１バッファから供給するクロック信号の配線処理を行なう。
【発明の効果】
【００１６】
一実施形態によれば、物理設計完了後にクロックツリーに変更が生じた場合にクロックツリーを簡便な手法で修正することが可能になる。
【図面の簡単な説明】
【００１７】
【図１】一実施形態の設計支援装置のハードウェア構成および機能構成を示すブロック図である。
【図２】本実施形態における最終段バッファの個別最大近傍および個別最小近傍の具体例を説明する図である。
【図３】処理対象バッファから次段のＦＦ／ＲＡＭまたはバッファまでの距離の分布の例を示す図である。
【図４】本実施形態における処理対象バッファの推定最大近傍および推定最小近傍の具体例を説明する図である。
【図５】本実施形態における非最終段バッファの最大近傍および最小近傍の具体例を説明する図である。
【図６】本実施形態において最終段バッファの近傍範囲外に存在する追加ＦＦ／ＲＡＭの具体例について説明する図である。
【図７】本実施形態における最終段バッファから既存ＦＦ／ＲＡＭへの配線可能性領域を説明する図である。
【図８】本実施形態における追加ＦＦ／ＲＡＭと複数の配線可能性領域との間の推定最小配線距離を説明する図である。
【図９】本実施形態における追加ＦＦ／ＲＡＭの近傍判定および追加ＦＦ／ＲＡＭに対するクロック信号配線の具体例を示す図である。
【図１０】本実施形態における追加ＦＦ／ＲＡＭの近傍判定および追加ＦＦ／ＲＡＭに対するクロック信号配線の具体例を示す図である。
【図１１】本実施形態における追加ＦＦ／ＲＡＭの近傍判定および追加ＦＦ／ＲＡＭに対するクロック信号配線の具体例を示す図である。
【図１２】本実施形態の設計支援機能を適用された集積回路の設計手順を概略的に説明するフローチャートである。
【図１３】論理変更発生に伴ってＦＦ／ＲＡＭが追加された場合における、本実施形態の設計支援機能によるクロック信号分配手順を概略的に説明するフローチャートである。
【図１４】論理変更発生に伴ってＦＦ／ＲＡＭが追加される場合における、本実施形態の設計支援機能によるクロック信号分配手順を詳細に説明するフローチャートである。
【図１５】論理変更発生に伴ってＦＦ／ＲＡＭが追加される場合における、本実施形態の設計支援機能によるクロック信号分配手順を詳細に説明するフローチャートである。
【図１６】一般的な集積回路の設計手順を概略的に説明するフローチャートである。
【発明を実施するための形態】
【００１８】
以下、図面を参照して実施の形態を説明する。
〔１〕本実施形態の設計支援機能の動作原理
図１２および図１３を参照しながら、本実施形態の設計支援機能の動作原理について説明する。
まず、図１２に示すフローチャート（ステップＳ１〜Ｓ７，Ｓ１０，Ｓ２０）に従い、本実施形態の設計支援機能を適用された集積回路の設計手順を概略的に説明する。
【００１９】
本実施形態の設計支援機能では、図１２に示すステップＳ１〜Ｓ７によって得られた設計結果が、既存回路の物理設計データとして、メモリ（図１の符号１０参照）に保持される。ステップＳ１〜Ｓ７は、図１６を参照しながら上述した通りであるので、その説明は省略する。このように既に設計対象回路を設計した後に論理変更等が発生すると、ＦＦやＲＡＭを追加する場合がある。その際、ＦＦやＲＡＭの回路ブロックを配置する作業が行なわれる（ステップＳ１０）。
【００２０】
そして、本実施形態の設計支援機能は、メモリに保持された物理設計データを流用し、既存回路の最大クロックスキューを維持しながら、追加されたＦＦやＲＡＭへのクロック信号の分配を自動で行なう（ステップＳ２０）。この後、クロック信号の配線処理が行なわれ（ステップＳ６）、一般回路の配線処理が行なわれる（ステップＳ７）。このようにして得られた論理変更後の設計結果が、物理設計データとしてメモリに格納される。
【００２１】
次に、図１３に示すフローチャート（ステップＳ１０，Ｓ２１〜Ｓ２４，Ｓ６，Ｓ７）に従って、論理変更発生に伴って順序回路が追加された場合における、本実施形態の設計支援機能によるクロック信号分配手順を概略的に説明する。図１３では、図１２に示すステップＳ２０が、ステップＳ２１〜Ｓ２４として、より具体的に示されている。なお、ステップＳ６，Ｓ７は、既述の通りであるので、その詳細な説明は省略する。
【００２２】
既に設計対象回路を設計した後に論理変更等が発生してＦＦやＲＡＭが追加されると、上述したようにＦＦやＲＡＭの回路ブロックを配置する作業が行なわれる（ステップＳ１０）。ただし、この段階では、回路ブロックのみが配置されるだけで、クロック配線等の結線配置までは行なわれておらず、後でクロックスキュー等を考慮する必要がある。
【００２３】
本実施形態の設計支援機能では、追加ＦＦ／ＲＡＭとバッファとの論理的接続が、以下に説明する手順（ステップＳ２１〜Ｓ２４）で、クロックスキューを考慮しながら実現され、追加ＦＦ／ＲＡＭへのクロック信号が分配される（ステップＳ６）。なお、ステップ２１による処理の開始時には、既存の物理設計データにおけるクロック分配回路の最終段バッファ（第１バッファ）が、処理対象バッファ（処理対象分配マクロ）として設定される。
【００２４】
ステップＳ２１において、まず、既存回路の物理設計データに基づき、クロック分配回路に含まれるバッファから、当該バッファに接続された既存ＦＦ／ＲＡＭまたは他の既存バッファまでの距離の最大値および最小値が算出される。以下では、前記距離が最大値，最小値となる位置のことをそれぞれ最大近傍，最小近傍と記載する。また、最大近傍と最小近傍との間の領域を近傍範囲と記載する。
【００２５】
本実施形態の設計支援機能では、物理設計データによって規定される既存回路は、図１２のステップＳ４での検証を終えているので、クロックスキューの問題を生じることなく動作する状態であることを前提としている。つまり、追加ＦＦ／ＲＡＭに係るクロックスキューが既存回路の最大クロックスキュー（クロックスキューの制限範囲）を超えなければ、追加ＦＦ／ＲＡＭに係るクロック分配回路は、クロックスキューの問題を生じることなく動作することを前提としている。
【００２６】
そのため、ステップＳ２１においては、既存回路においてバッファからＦＦ／ＲＡＭまたはバッファまでに到達するクロック信号のクロックスキューが最大になると考えられる最大近傍（前記距離の最大値）が算出される。同様に、ステップＳ２１においては、既存回路においてバッファからＦＦ／ＲＡＭまでに到達するクロック信号のクロックスキューが最小になると考えられる最小近傍（前記距離の最小値）が算出される。
【００２７】
ついで、ステップＳ２２において、ステップＳ２１で得られた最大近傍および最小近傍に基づき、最大近傍と最小近傍との間の近傍範囲が取得され、取得された近傍範囲内に存在する追加ＦＦ／ＲＡＭに対し、処理対象バッファからクロック信号が分配される。つまり、追加ＦＦ／ＲＡＭと処理対象バッファとの距離が上記最大値と上記最小値との間にあるか否かが判定され、当該距離が上記最大値と上記最小値との間にある場合、処理対象バッファから追加ＦＦ／ＲＡＭへクロック信号が分配される。
【００２８】
この後、ステップＳ２３において、全ての追加ＦＦ／ＲＡＭに対しクロック信号の分配が行なわれたか否かが判定される。全ての追加ＦＦ／ＲＡＭに対しクロック信号の分配が行なわれた場合（ステップＳ２３のＹＥＳルート）、上述したステップＳ６およびＳ７の処理が実行される。
【００２９】
一方、クロック信号をまだ分配されていない追加ＦＦ／ＲＡＭが存在する場合、つまり上記近傍範囲外の追加ＦＦ／ＲＡＭが存在する場合（ステップＳ２３のＮＯルート）、ステップＳ２１の処理に移行し、再度、ステップＳ２１〜Ｓ２３の処理が実行される。その際、前回の処理対象バッファよりも一段だけ上段側の非最終段バッファ（第２バッファ）が、処理対象バッファとして設定される。上述したステップＳ２１〜Ｓ２４の処理は、全ての追加ＦＦ／ＲＡＭに対しクロック信号の分配が行なわれるまで（ステップＳ２３でＹＥＳ判定となるまで）、繰り返し実行される。
【００３０】
なお、ステップＳ２１での最大近傍および最小近傍の具体的な算出手法については、図２〜図５や、図１４のステップＳ２０２〜Ｓ２０４や、図１５のステップＳ２０２ａ〜Ｓ２０４ａを参照しながら後述する。
また、ステップＳ２２でのクロック信号の具体的な分配手法については、図６〜図８や、図１４のステップＳ２０５，Ｓ２０６や、図１５のステップＳ２０５ａ，Ｓ２０６ａを参照しながら後述する。
【００３１】
〔２〕本実施形態の設計支援装置の構成
図１は、一実施形態の設計支援装置１のハードウエア構成および機能構成を示すブロック図である。図１に示す設計支援装置１は、ＬＳＩ等の半導体集積回路の設計を支援するもので、図１２および図１３を参照しながら上述した本実施形態の設計支援機能を実現する。設計支援装置１は、一般的なパーソナルコンピュータ等の計算機から構成され、記憶部（メモリ）１０および処理部（プロセッサ）２０のほか入力部（図示略）や表示部（図示略）を有している。メモリ１０，プロセッサ２０，表示部および入力部は、バス（図示略）を介して相互に通信可能に接続されている。
【００３２】
メモリ１０は、ＲＡＭ(Random Access Memory)，ＨＤＤ(Hard Disk Drive)，ＳＳＤ(Solid State Drive)等の内部記憶装置であってもよいし、外部記憶装置であってもよい。メモリ１０は、図１２や図１６に示す設計手順で得られた、設計対象回路についての既存の物理設計データを格納するほか、プロセッサ２０による後述の処理によって得られる、当該物理設計データに対する変更等に係る情報を格納する。ここで、設計対象回路は、バッファ（クロック分配マクロ）を有するクロック分配回路を含む回路である。
【００３３】
プロセッサ２０は、ＣＰＵ(Central Processing Unit)等である。プロセッサ２０は、メモリ１０などに保持される設計支援プログラムを実行することにより、後述するデータ読込部２１，バッファ近傍算出部２２，検索部２３，判定部２４，クロック分配部２５および結果保存部２６としての機能を果たす。
【００３４】
表示部４０は、プロセッサ２０で生成された各種情報、例えば図２〜図１１を参照しながら後述する近傍算出結果，配線可能性領域，クロック信号配線結果などを表示するもので、ＣＲＴ（Cathode Ray Tube），ＬＣＤ（Liquid Crystal Display）等のディスプレイである。
【００３５】
入力部は、設計者（ユーザ）によって操作され各種情報を本装置１に入力するマンマシンインタフェース、例えばマウス，キーボード等である。特に、本実施形態において、入力部は、論理変更等に伴って既存の物理設計データ（既存の設計対象回路）に対し順序回路を追加入力する際に用いられる。ここで、順序回路としては、例えばＦＦ，ＲＡＭが挙げられ、以下、追加されるＦＦおよび／またはＲＡＭを追加ＦＦ／ＲＡＭと記載する。
【００３６】
つぎに、プロセッサ２０が果たす各種機能、つまりデータ読込部２１，バッファ近傍算出部２２，検索部２３，判定部２４，クロック分配部２５および結果保存部２６としての機能について説明する。
データ読込部２１は、論理変更等に伴って設計済みの既存回路にＦＦ／ＲＡＭを追加した際に、追加ＦＦ／ＲＡＭにクロック信号を分配する処理で必要になる既存の物理設計データを、適宜、メモリ１０から読み込む。
【００３７】
〔２−１〕処理対象バッファの最大近傍および最小近傍の算出機能
バッファ近傍算出部２２は、データ読込部２１によって読み込まれた既存の物理設計データに基づいて、図１３のステップＳ２１による処理、つまり処理対象バッファ（処理対象分配マクロ）の最大近傍および最小近傍を算出する処理を実行する。
バッファ近傍算出部２２は、以下に説明する３種類の処理対象バッファの最大近傍および最小近傍を算出すべく、最終段バッファ近傍算出部２２ａ，追加バッファ近傍算出部２２ｂおよび非最終段バッファ近傍算出部２２ｃとしての機能を有している。
【００３８】
〔２−１−１〕処理対象バッファが下段側に複数の既存ＦＦ／ＲＡＭを接続された既存の最終段バッファ（第１バッファ）である場合：
最終段バッファ近傍算出部２２ａは、下段側に複数（２以上）のＦＦ／ＲＡＭを接続された既存の最終段バッファについて、後述する個別最大近傍および個別最小近傍を、最大近傍および最小近傍として算出する。
【００３９】
具体的に、最終段バッファ近傍算出部２２ａは、既存の物理設計データに基づき、処理対象である最終段バッファと当該最終段バッファの下段に接続された複数の既存ＦＦ／ＲＡＭとの距離を算出する。最終段バッファ近傍算出部２２ａは、各既存ＦＦ／ＲＡＭについて算出された距離のうち、最大値を個別最大近傍とするとともに、最小値を個別最小近傍とする。追加ＦＦ／ＲＡＭが最終段バッファの個別最大近傍と個別最小近傍との間（近傍範囲内）に位置していれば、最終段バッファからクロック信号を分配された場合の、追加ＦＦ／ＲＡＭでのクロックスキューは制限範囲内にあり悪化しない。このため、クロック分配回路の動作を保証することができる。
【００４０】
ここで、図２を参照しながら、最終段バッファの個別最大近傍および個別最小近傍の具体例について説明する。図２における各ブロックは、以下のようなバッファおよびＦＦ／ＲＡＭを示す。“５”を記入されたブロックは、既存のクロック分配回路の５段目バッファを示す。“６”を記入されたブロックは、既存のクロック分配回路の６段目バッファを示す。“７Ａ”，“７Ｂ”，“７Ｃ”を記入されたブロックは、それぞれ、既存のクロック分配回路の最終段バッファ（第１バッファ）である７段目バッファを示す。“Ａ”，“Ｂ”，“Ｃ”を記入されたブロックは、それぞれ既存ＦＦ／ＲＡＭを示す。“追ａ”，“追ｂ”，“追ｃ”，“追ｄ”を記入されたブロックは、それぞれ、既存の物理設計データ（設計済みの設計対象回路）に対し、論理変更等に伴って新たに追加・生成されたＦＦ／ＲＡＭを示す。なお、図４〜図６，図９〜図１１においても、図２と同様のバッファおよびＦＦ／ＲＡＭが例示され、図２と同様の符号が付されている。
【００４１】
図２に示すように、既存の最終段バッファ（７Ａ）の下段には、２つの既存ＦＦ／ＲＡＭ（Ａ，Ｂ）が接続されている。この場合、最終段バッファ近傍算出部２２ａは、最終段バッファ（７Ａ）と既存ＦＦ／ＲＡＭ（Ａ）との直線距離を算出するとともに、最終段バッファ（７Ａ）と既存ＦＦ／ＲＡＭ（Ｂ）との直線距離を算出する。このとき、最終段バッファ（７Ａ）と当該最終段バッファ（７Ａ）から最も遠い既存ＦＦ／ＲＡＭ（Ａ）との直線距離が最大値となり、最終段バッファ（７Ａ）と当該最終段バッファ（７Ａ）に最も近い既存ＦＦ／ＲＡＭ（Ｂ）との直線距離が最小値となる。
【００４２】
したがって、最終段バッファ（７Ａ）を中心とし、最終段バッファ（７Ａ）と既存ＦＦ／ＲＡＭ（Ａ）との直線距離を半径とする円が、個別最大近傍Ｒ7Amaxとして算出される。また、最終段バッファ（７Ａ）を中心とし、最終段バッファ（７Ａ）と既存ＦＦ／ＲＡＭ（Ｂ）との直線距離を半径とする円が、個別最小近傍Ｒ7Aminとして算出される。
【００４３】
なお、最終段バッファであっても、既存ＦＦ／ＲＡＭが一つしか接続されていないバッファ（７Ｂ）、もしくは、既存ＦＦ／ＲＡＭが一つも接続されていないバッファ（７Ｃ）の最小近傍および最大近傍の算出は、上述した最終段バッファ（７Ａ）のごとく既存の接続関係に基づいて行なえない。このため、このようなバッファ（７Ｂ，７Ｃ）の最小近傍／最大近傍は、追加バッファ近傍算出部２２ｂにより後述する別の手法（下記項目〔２−１−２〕参照）で算出される。
【００４４】
〔２−１−２〕処理対象バッファが、新規に生成された追加バッファ、または、下段側に２以上のＦＦ／ＲＡＭもしくはバッファを接続されていないバッファである場合：
追加バッファ近傍算出部２２ｂは、新規に生成された追加バッファ、または、下段側にＦＦ／ＲＡＭもしくはバッファを接続されていないバッファ、または、下段側に一のＦＦ／ＲＡＭもしくはバッファを接続されたバッファについて、後述する推定最大近傍および推定最小近傍を、最大近傍および最小近傍として算出する。
【００４５】
ここで処理対象となるバッファの最大近傍および最小近傍は、上記項目〔２−１−１〕で説明した手法によって算出できない。そこで、追加バッファ近傍算出部２２ｂは、処理対象バッファと同じ段における他の既存バッファから、当該他の既存バッファの下段側に接続された複数の既存ＦＦ／ＲＡＭまたはバッファまでの距離に基づき、処理対象バッファの最大近傍および最小近傍を算出する。
【００４６】
具体的に、追加バッファ近傍算出部２２ｂは、既存の物理設計データに基づき、上述した他の既存バッファから当該他の既存バッファの下段側における各既存ＦＦ／ＲＡＭまたはバッファまでの距離を算出する。さらに、追加バッファ近傍算出部２２ｂは、算出された複数の距離についての平均および分散を求め、求められた平均および分散を有する正規分布を算出する。そして、追加バッファ近傍算出部２２ｂは、算出された正規分布の中心から一定の範囲（所定範囲）の上限に対応する距離（最大値）を処理対象バッファの推定最大近傍とし、同範囲の下限に対応する距離（最小値）を処理対象バッファの推定最小近傍とする。
【００４７】
一般に、バッファ（クロック分配マクロ）から次段のＦＦ／ＲＡＭまたはバッファまでの距離の分布は、図３に示すように、正規分布となる。このとき、上記一定の範囲は、例えば図３に示すように、正規分布の平均値を中心とした−３０％〜＋３０％の範囲とし、−３０％に対応する距離を推定最小近傍とし、＋３０％に対応する距離を推定最大近傍とする。なお、図３は、処理対象バッファから次段のＦＦ／ＲＡＭまたはバッファまでの距離の分布の例を示す図である。
【００４８】
このように、正規分布の平均値の周囲に対応する範囲内に、追加ＦＦ／ＲＡＭが配置されていれば、最大クロックスキューが増えることはない。つまり、追加ＦＦ／ＲＡＭが処理対象バッファの推定最大近傍と推定最小近傍との間（近傍範囲内）に位置していれば、処理対象バッファからクロック信号を分配された場合の、追加ＦＦ／ＲＡＭでのクロックスキューは制限範囲内にあり悪化しない。このため、クロック分配回路の動作を保証することができる。
【００４９】
ここで、図４を参照しながら、処理対象バッファの推定最大近傍および推定最小近傍の具体例について説明する。図４に示すように、最終段バッファ（７Ｂ）の下段側には一つだけ既存ＦＦ／ＲＡＭ（Ｃ）が接続され、最終段バッファ（７Ｃ）の下段側には既存ＦＦ／ＲＡＭが一つも接続されていない。この場合、追加バッファ近傍算出部２２ｂは、７段目のバッファから次段の既存ＦＦ／ＲＡＭまでの直線距離の正規分布に基づき、上記上限に対応する最大値および上記下限に対応する最小値を算出する。
【００５０】
これにより、図４に示すように、最終段バッファ（７Ｂ）を中心とし上記最大値を半径とする円が、推定最大近傍Ｒ7Bmaxとして算出され、最終段バッファ（７Ｂ）を中心とし上記最小値を半径とする円が、個別最小近傍Ｒ7Bminとして算出される。また、最終段バッファ（７Ｃ）を中心とし上記最大値を半径とする円が、推定最大近傍Ｒ7Cmaxとして算出され、最終段バッファ（７Ｃ）を中心とし上記最小値を半径とする円が、推定最小近傍Ｒ7Cminとして算出される。
【００５１】
〔２−１−３〕処理対象バッファが非最終段バッファ（第２バッファ）である場合：
非最終段バッファ近傍算出部２２ｃは、最終段バッファよりも上段側の非最終段バッファについて、最大近傍および最小近傍を算出する。
具体的に、非最終段バッファ近傍算出部２２ｃは、既存の物理設計データに基づき、追加ＦＦ／ＲＡＭに対し非最終段バッファからクロック信号分配可能な距離の最大値（後述）を最大近傍として算出する。同様に、非最終段バッファ近傍算出部２２ｃは、既存の物理設計データに基づき、追加ＦＦ／ＲＡＭに対し非最終段バッファからクロック信号分配可能な距離の最小値（後述）を最小近傍として算出する。
【００５２】
ここで、非最終段バッファ近傍算出部２２ｃは、下式(1)を用いてクロック信号分配可能な距離の最大値を、処理対象の非最終段バッファの最大近傍として算出する。つまり、非最終段バッファの最大近傍は、処理対象の非最終段バッファから当該非最終段バッファの下段側に接続された複数の次段バッファまでの直線距離の最大値（個別最大近傍）に、次段バッファから最終段バッファまでの各バッファについて得られる最大値（個別最大近傍または推定最大近傍）の総和を加算した値である。
【００５３】
また、非最終段バッファ近傍算出部２２ｃは、下式(2)を用いてクロック信号分配可能な距離の最小値を、処理対象の非最終段バッファの最小近傍として算出する。つまり、非最終段バッファの最小近傍は、処理対象の非最終段バッファから当該非最終段バッファの下段側に接続された複数の次段バッファまでの直線距離の最小値（個別最小近傍）から、次段バッファから最終段バッファまでの各バッファについて得られる最大値の総和（個別最大近傍または推定最大近傍）を減算した値と、０との大きい方の値である。つまり、前記減算値が０未満の場合、非最終段バッファの最小近傍（最小値）は０になる。
【００５４】
[非最終段バッファの最大近傍]
＝[処理対象の非最終段バッファの個別最大近傍]
＋[次段バッファ〜最終段バッファの個別最大近傍または推定最大近傍の総和]    (1)
[非最終段バッファの最小近傍]
＝max｛０，[処理対象の非最終段バッファの個別最小近傍]
−[次段バッファ〜最終段バッファの個別最大近傍または推定最大近傍の総和]｝  (2)
【００５５】
なお、上式(1)，(2)に基づき非最終段バッファの最大近傍，最小近傍を算出する際、処理対象の非最終段バッファに、次段バッファが一つしか接続されていない場合には、個別最大近傍／個別最小近傍に代え、上述した推定最大近傍／推定最小近傍が用いられる。同様に、次段バッファから最終段バッファまでのバッファに、次段バッファが一つしか接続されていない場合には、個別最大近傍／個別最小近傍に代え、上述した推定最大近傍／推定最小近傍が用いられる。
【００５６】
追加ＦＦ／ＲＡＭが非最終段バッファの最大近傍と最小近傍との間（近傍範囲内）に位置している場合、追加ＦＦ／ＲＡＭと非最終段バッファとの間に最終段バッファを含む１以上のバッファを追加して非最終段バッファから追加ＦＦ／ＲＡＭへのクロック信号を分配すれば、追加ＦＦ／ＲＡＭでのクロックスキューは制限範囲内にあり悪化しない。このため、クロック分配回路の動作を保証することができる。
【００５７】
ここで、図５を参照しながら、非最終段バッファの最大近傍および最小近傍の具体例について説明する。図５では、６段目の非最終段バッファ（６）の最大近傍および最小近傍が示されている。６段目の非最終段バッファ（６）の下段には、３つのバッファ（７Ａ，７Ｂ，７Ｃ）が接続されている。このとき、非最終段バッファ（６）と当該非最終段バッファ（６）から最も遠い最終段バッファ（７Ｃ）との直線距離が最大値となり、非最終段バッファ（６）と当該非最終段バッファ（６）に最も近い最終段バッファ（７Ａまたは７Ｂ）との直線距離が最小値となる。
【００５８】
したがって、非最終段バッファ（６）を中心とし、非最終段バッファ（６）とバッファ（７Ｃ）との直線距離を半径とする円が、非最終段バッファ（６）の個別最大近傍Ｒ6maxとして算出される。また、非最終段バッファ（６）を中心とし、非最終段バッファ（６）とバッファ（７Ａまたは７Ｂ）との直線距離を半径とする円が、非最終段バッファ（６）の個別最小近傍Ｒ6minとして算出される。
【００５９】
さらに、非最終段バッファ（６）から最も遠い最終段バッファ（７Ｃ）の下段には、既存ＦＦ／ＲＡＭが一つも接続されていないので、最終段バッファ（７Ｃ）については、図４を参照しながら上述したように推定最大近傍Ｒ7Cmaxおよび推定最小近傍Ｒ7Cminが取得される。このとき、非最終段バッファ（６）を中心とし、個別最大近傍Ｒ6maxの半径値に最終段バッファ（７Ｃ）の推定最大近傍Ｒ7Cmaxの半径値を加算した値を半径とする円が、非最終段バッファ（６）の最大近傍Ｒ6MAXとして算出される。
【００６０】
一方、非最終段バッファ（６）に最も近い最終段バッファ（７Ａ）の下段には、２つの既存ＦＦ／ＲＡＭ（Ａ，Ｂ）が接続されており、最終段バッファ（７Ａ）については、図２を参照しながら上述したように個別最大近傍Ｒ7Amaxおよび個別最小近傍Ｒ7Aminが取得される。このとき、非最終段バッファ（６）を中心とし、個別最小近傍Ｒ6minの半径値から最終段バッファ（７Ａ）の推定最大近傍Ｒ7Cmaxの半径値を減算した値を半径とする円が、非最終段バッファ（６）の最小近傍Ｒ6MINとして算出される。
【００６１】
このとき、図５に示す追加ＦＦ／ＲＡＭ（追ｄ）は、非最終段バッファ（６）の最大近傍Ｒ6MAXと最小近傍Ｒ6MINとの間（近傍範囲）に存在している。このため、追加ＦＦ／ＲＡＭ（追ｄ）と非最終段バッファ（６）との間に最終段バッファ（７段目のバッファ）を新たに生成・追加して非最終段バッファ（６）から追加ＦＦ／ＲＡＭ（追ｄ）へのクロック信号を分配すれば、追加ＦＦ／ＲＡＭでのクロックスキューは制限範囲内にあり悪化しない。したがって、非最終段バッファ（６）に追加ＦＦ／ＲＡＭ（追ｄ）を接続可能で、クロック分配回路の動作を保証しながら、追加ＦＦ／ＲＡＭ（追ｄ）にクロック信号を供給することが可能である。
【００６２】
〔２−２〕近傍範囲内の追加ＦＦ／ＲＡＭの検索機能
検索部２３は、バッファ近傍算出部２２において算出された最大近傍と最小近傍との間の領域を近傍範囲として取得し、論理変更等に伴って新たに追加された追加ＦＦ／ＲＡＭのうち、当該近傍範囲内に含まれるものを検索する。
【００６３】
検索部２３は、まず、最終段バッファ近傍算出部２２ａによって得られた最終段バッファの個別最大近傍と個別最小近傍との間の近傍範囲、または、追加バッファ近傍算出部２２ｂによって得られた最終段バッファの推定最大近傍と推定最小近傍との間の近傍範囲に含まれる追加ＦＦ／ＲＡＭを検索する。つまり、検索部２３は、追加ＦＦ／ＲＡＭと最終段バッファとの距離が、最終段バッファから既存ＦＦ／ＲＡＭまでの距離の最大値と最小値との間にあるか否かを判定する。クロック分配部２５は、検索部２３によって検索された、最終段バッファの近傍範囲に含まれる追加ＦＦ／ＲＡＭを最終段バッファに接続し、最終段バッファから追加ＦＦ／ＲＡＭへのクロック信号の分配を行なう。結果保存部２６は、クロック分配部２５によるクロック信号の分配結果をメモリ１０に保存する。
【００６４】
最終段バッファの近傍範囲に含まれない追加ＦＦ／ＲＡＭつまり最終段バッファの近傍範囲外の追加ＦＦ／ＲＡＭが存在する場合、検索部２３は、非最終段バッファ近傍算出部２２ｃによって得られた、最終段バッファよりも上段側の非最終段バッファの最大近傍と最小近傍との間の近傍範囲に含まれる追加ＦＦ／ＲＡＭを検索する。つまり、検索部２３は、追加ＦＦ／ＲＡＭと非最終段バッファとの距離が、クロック信号分配可能な距離の最大値と最小値との間にあるか否かを判定する。クロック分配部２５は、検索部２３によって検索された、非最終段バッファの近傍範囲に含まれる追加ＦＦ／ＲＡＭを、非最終段バッファに接続し、非最終段バッファから追加ＦＦ／ＲＡＭへのクロック信号の分配を行なう。結果保存部２６は、クロック分配部２５によるクロック信号の分配結果をメモリ１０に保存する。
【００６５】
このとき、非最終段バッファの段数と追加ＦＦ／ＲＡＭの段数との差ｎが２以上である場合、クロック配分部２５は、非最終段バッファと追加ＦＦ／ＲＡＭとの間にｎ−１段のバッファを介し、非最終段バッファから追加ＦＦ／ＲＡＭへのクロック信号の分配を行なう。例えば図６や図１１を参照しながら後述する具体例では、非最終段バッファの段数が６、追加ＦＦ／ＲＡＭの段数が８であり、差ｎは２であるので、１段分のバッファつまり７段目のバッファが生成・追加され、追加ＦＦ／ＲＡＭへのクロック信号の分配が行なわれる。
【００６６】
このように、最終段バッファの近傍範囲外の追加ＦＦ／ＲＡＭが存在する場合、処理対象バッファとして、現在の処理対象バッファよりも一つ上段側の非最終段バッファが選択され、バッファ近傍算出部２２による最大近傍／最小近傍の算出処理と検索部２３による検索処理とが上述と同様に実行される。このようなバッファ選択処理，算出処理および検索処理は、クロック未分配の追加ＦＦ／ＲＡＭが無くなるまで（つまり全ての追加ＦＦ／ＲＡＭが検索されるまで）、もしくは、処理対象バッファの段数が設計者が決めた段数となるまで、繰返し実行される。
【００６７】
上述したように一つ上段側のバッファから追加ＦＦ／ＲＡＭに対するクロック分配を行なうことで、例えば図６に示すように、下段側（最終段）のバッファの近傍範囲よりも広い範囲内における追加ＦＦ／ＲＡＭに対し、最大クロックスキューを悪化させることなくクロック分配を行なうことが可能になる。
ここで、図６を参照しながら、最終段バッファの近傍範囲外に存在する追加順序回路の具体例について説明する。図６では４つの追加ＦＦ／ＲＡＭ（追ａ，追ｂ，追ｃ，追ｄ）が示されている。
【００６８】
追加ＦＦ／ＲＡＭ（追ａ）は、最終段バッファ（７Ａ）の近傍範囲（個別最大近傍Ｒ7Amaxと個別最小近傍Ｒ7Aminとの間）と最終段バッファ（７Ｂ）の近傍範囲（推定最大近傍Ｒ7Bmaxと推定最小近傍Ｒ7Bminとの間）との両方に属している。このように追加ＦＦ／ＲＡＭが複数の最終段バッファの近傍領域に属する場合、後述する判定部２４が、後述する基準で一つの最終段バッファ（７Ａまたは７Ｂ）をクロック分配元として決定する。クロック分配部２５は、判定部２４によって決定された最終段バッファ（７Ａまたは７Ｂ）から追加ＦＦ／ＲＡＭ（追ａ）に対するクロック分配を行なう。
【００６９】
追加ＦＦ／ＲＡＭ（追ｃ）は、最終段バッファ（７Ｃ）の近傍範囲（推定最大近傍Ｒ7Cmaxと推定最小近傍Ｒ7Cminとの間）に属している。したがって、クロック分配部２５は、最終段バッファ（７Ｃ）から追加ＦＦ／ＲＡＭ（追ｃ）に対するクロック分配を行なう。
【００７０】
追加ＦＦ／ＲＡＭ（追ｂ）は、最終段バッファ（７Ａ）に近すぎるために接続することができず、最終段バッファ（７Ａ）の近傍範囲外に属している。しかし、追加ＦＦ／ＲＡＭ（追ｂ）は、最終段バッファ（７Ａ）よりも一つ上段側の非最終段バッファ（６）の近傍範囲（最大近傍Ｒ6MAXと最小近傍Ｒ6MINとの間）に属している。したがって、クロック分配部２５は、例えば図１１を参照しながら後述するように、追加・生成した７段目のバッファを介し非最終段バッファ（６）から追加ＦＦ／ＲＡＭ（追ｂ）に対するクロック分配を行なう。
【００７１】
追加ＦＦ／ＲＡＭ（追ｄ）は、最終段バッファ（７Ｃ）から遠すぎるために接続することができず、最終段バッファ（７Ｃ）の近傍範囲外に属している。しかし、追加ＦＦ／ＲＡＭ（追ｄ）は、最終段バッファ（７Ｃ）よりも一つ上段側の非最終段バッファ（６）の近傍範囲（最大近傍Ｒ6MAXと最小近傍Ｒ6MINとの間）に属している。したがって、クロック分配部２５は、例えば図１１を参照しながら後述するように、追加・生成した７段目のバッファを介し非最終段バッファ（６）から追加ＦＦ／ＲＡＭ（追ｄ）に対するクロック分配を行なう。
【００７２】
図６に示すように、７段目のバッファ（７Ａ〜７Ｃ）の近傍範囲よりも、一つ上段側の６段目のバッファの近傍範囲の方が広い。したがって、上段側のバッファは、下段側のバッファを適宜生成・追加することで、下段側のバッファがクロック信号分配可能な距離よりも遠くまで、クロック信号を分配することが可能になる。
【００７３】
〔２−３〕追加ＦＦ／ＲＡＭが複数の近傍範囲に属する場合の判定機能
判定部２４は、後述する配線距離最短近傍算出部２４ａを有し、追加ＦＦ／ＲＡＭが複数の近傍範囲に属する場合の判定機能を果たす。判定部２４は、同じ追加ＦＦ／ＲＡＭが複数の最終段バッファの近傍範囲に属している場合〔例えば図６に示す、最終段バッファ（７Ａ）の近傍範囲と最終段バッファ（７Ｂ）の近傍範囲とに属する追加ＦＦ／ＲＡＭ（追ａ）参照〕、当該複数の最終段バッファから一つの最終段バッファを選択すべく以下の基準(1)，(2)に従う判定を行なう。
【００７４】
基準(1)：  同じ追加ＦＦ／ＲＡＭが属する複数の最終段バッファのうちファンアウト数が最も少ないものを判定・選択し、ファンアウト数の少ない最終段バッファに対し優先的にクロック分配を行なう。ファンアウト数が大きいとディレイが増加するため、ファンアウト数の少ない最終段バッファを優先する。ここで、処理対象バッファの次段に接続されるバッファまたはＦＦ／ＲＡＭの数の数である。
【００７５】
基準(2)：  同じ追加ＦＦ／ＲＡＭが属する複数の最終段バッファのファンアウト数が同じである場合、当該複数の最終段バッファのうち、当該追加ＦＦ／ＲＡＭへの配線距離が最小のものを判定（推定）して選択し、配線距離が最小の最終段バッファに対しクロック分配を行なう。最小配線距離の推定は、判定部２４における配線距離最短近傍算出部２４ａによって、次の項目〔２−４〕で説明するように行なわれる。
【００７６】
〔２−４〕最小配線距離の推定機能
配線距離最短近傍算出部２４ａは、既存の物理設計データに基づき、複数の最終段バッファのそれぞれについて各最終段バッファから既存ＦＦ／ＲＡＭへのクロック信号の配線が行なわれる可能性のある領域（以下、配線可能性領域という）を求める。そして、配線距離最短近傍算出部２４ａは、当該複数の最終段バッファのうち、追加ＦＦ／ＲＡＭから配線可能性領域までの距離が最小になるものを、前記基準(2)における配線距離が最小の最終段バッファとして推定し選択する。
【００７７】
ここで、図７および図８を参照しながら、配線距離最短近傍算出部２４ａによる最小配線距離の推定機能について具体的に説明する。図７は、本実施形態における最終段バッファから既存ＦＦ／ＲＡＭへの配線可能性領域を説明する図、図８は、本実施形態における追ＦＦ／ＲＡＭと複数の配線可能性領域との間の推定最小配線距離を説明する図である。
【００７８】
図７および図８において、“Ｂ１”および“Ｂ２”を記入されたブロックは、最終段バッファ（第１バッファ）を示す。“Ｆ１”〜“Ｆ６”を記入されたブロックは、最終段バッファ（Ｂ１）からクロック信号を分配される既存ＦＦを示し、“Ｆ７”，“Ｆ８”を記入されたブロックは、最終段バッファ（Ｂ２）からクロック信号を分配される既存ＦＦを示す。“追”を記入されたブロックは、論理変更等に伴って新たに追加・生成されたＦＦを示す。図８における追加ＦＦ（追）は、最終段バッファ（Ｂ１）の近傍範囲と最終段バッファ（Ｂ２）の近傍範囲との両方に属しているものとする。符号Ｘ１〜Ｘ８を付され点線で囲まれた矩形領域は、個別配線可能性領域を示す。また、符号Ｙ１，Ｙ２を付され実線で囲まれた領域は、それぞれ、最終段バッファ（Ｂ１，Ｂ２）についての配線可能性領域を示す。
【００７９】
最終段バッファ（Ｂ１）から既存ＦＦ（Ｆ１〜Ｆ６）へのクロック信号の配線が行なわれる可能性のある配線可能性領域Ｘ１は、図７および図８に示すように求められる。つまり、まず、最終段バッファ（Ｂ１）および既存ＦＦ（Ｆ１〜Ｆ６）について、クラスカルアルゴリズムによって最小木（ミニマムスパニングツリー）を求める。図７および図８に示す例では、最終段バッファ（Ｂ１）に２つの既存ＦＦ（Ｆ１，Ｆ４）が接続され、既存ＦＦ（Ｆ１）に２つの既存ＦＦ（Ｆ２，Ｆ３）が接続され、既存ＦＦ（Ｆ４）に２つの既存ＦＦ（Ｆ５，Ｆ６）が接続された最小木が求められる。
【００８０】
そして、最小木で接続された最終段バッファと既存ＦＦを対角とする矩形領域Ｘ１，Ｘ４と、最小木で接続された２つの既存ＦＦを対角とする矩形領域Ｘ２，Ｘ３，Ｘ５，Ｘ６とが、個別配線可能性領域として求められる。
図７および図８において、個別配線可能性領域Ｘ１は、最終段バッファ（Ｂ１）と既存ＦＦ（Ｆ１）を対角とする矩形領域であり、個別配線可能性領域Ｘ２は、２つの既存ＦＦ（Ｆ１，Ｆ２）を対角とする矩形領域であり、個別配線可能性領域Ｘ３は、２つの既存ＦＦ（Ｆ１，Ｆ３）を対角とする矩形領域である。また、個別配線可能性領域Ｘ４は、最終段バッファ（Ｂ１）と既存ＦＦ（Ｆ４）を対角とする矩形領域であり、個別配線可能性領域Ｘ５は、２つの既存ＦＦ（Ｆ４，Ｆ５）を対角とする矩形領域であり、個別配線可能性領域Ｘ６は、２つの既存ＦＦ（Ｆ４，Ｆ６）を対角とする矩形領域である。
【００８１】
上述のように求められた個別配線可能性領域Ｘ１〜Ｘ６の総和である領域Ｙ１が、最終段バッファ（Ｂ１）の配線可能性領域として求められる。
同様に、図８に示すように、最終段バッファ（Ｂ２）と既存ＦＦ（Ｆ７，Ｆ８）とについても、個別配線可能性領域Ｘ７，Ｘ８が求められ、これらの個別配線可能性領域Ｘ７，Ｘ８の総和である領域Ｙ２が、最終段バッファ（Ｂ２）の配線可能性領域として求められる。
【００８２】
追加ＦＦ（追）が最終段バッファ（Ｂ１）の近傍範囲と最終段バッファ（Ｂ２）の近傍範囲との両方に属している場合、図８に示すように、追加ＦＦ（追）から最終段バッファ（Ｂ１）の配線可能性領域Ｘ１までの最短の配線距離Ｄ１と、追加ＦＦ（追）から最終段バッファ（Ｂ２）の配線可能性領域Ｘ２までの最短の配線距離Ｄ２とが算出される。そして、追加ＦＦ（追）には、この追加ＦＦ（追）に近い方の配線可能性領域からクロック信号の分配が行なわれる。
【００８３】
つまり、図８に示す例において、追加ＦＦ（追）は、最終段バッファ（Ｂ１）よりも最終段バッファ（Ｂ２）に近いが、配線距離Ｄ２＞配線距離Ｄ１であるので、配線可能性領域Ｘ２よりも配線可能性領域Ｘ１に近い。このため、追加ＦＦ（追）には、最終段バッファ（Ｂ１）の配線可能性領域Ｘ１からクロック信号を分配した方が、追加の配線量は少なくて済むため、最終段バッファ（Ｂ１）が選択され、最終段バッファ（Ｂ１）からクロック信号が分配される。
【００８４】
〔３〕具体例
図９〜図１１を参照しながら、本実施形態における追加ＦＦ／ＲＡＭの近傍判定および追加ＦＦ／ＲＡＭに対するクロック信号配線の具体例について説明する。
図９〜図１１に示す具体例においても、図２，図４〜図６を参照しながら前述した具体例と同様の既存回路に、前述した具体例と同様の追加ＦＦ／ＲＡＭ（追ａ〜追ｄ）が追加されたものとする。
【００８５】
まず、図９に示すように、バッファ近傍算出部２２により、７段目の最終段バッファ（７Ａ〜７Ｃ）のそれぞれについて最大近傍Ｒ7Amax，Ｒ7Bmax，Ｒ7Cmaxと最小近傍7Amin，Ｒ7Bmin，Ｒ7Cminとが算出される。このとき、２以上の既存ＦＦ／ＲＡＭ（Ａ，Ｂ）が接続されている最終段バッファ（７Ａ）については、最終段バッファ近傍算出部２２ａにより、個別最大近傍Ｒ7Amaxと個別最小近傍7Aminとが算出される。２以上の既存ＦＦ／ＲＡＭ（Ａ，Ｂ）が接続されていない最終段バッファ（７Ｂ，７Ｃ）については、追加バッファ近傍算出部２２ｂにより、図３を参照しながら前述した正規分布に基づき、推定最大近傍Ｒ7Bmax，Ｒ7Cmaxと推定最小近傍Ｒ7Bmin，Ｒ7Cminとが算出される。
【００８６】
上述したように算出された最終段バッファ（７Ａ〜７Ｃ）の最大近傍および最小近傍に基づき、判定部２３は、最終段バッファ（７Ａ〜７Ｃ）のそれぞれについて近傍範囲を取得し、追加ＦＦ／ＲＡＭ（追ａ〜追ｄ）が近傍範囲に属しているか否かを判定する。
このとき、判定部２３により、追加ＦＦ／ＲＡＭ（追ｃ）は、最終段バッファ（７Ｃ）の近傍範囲（推定最大近傍Ｒ7Cmaxと推定最小近傍Ｒ7Cminとの間）に属していると判定される。この判定に伴い、図１０に示すように、追加ＦＦ／ＲＡＭ（追ｃ）は、クロック分配部２５により最終段バッファ（７Ｃ）に接続され、最終段バッファ（７Ｃ）から追加ＦＦ／ＲＡＭ（追ｃ）に対するクロック分配を行なう。
【００８７】
また、判定部２３により、追加ＦＦ／ＲＡＭ（追ａ）は、最終段バッファ（７Ａ）の近傍範囲（個別最大近傍Ｒ7Amaxと個別最小近傍Ｒ7Aminとの間）と最終段バッファ（７Ｂ）の近傍範囲（推定最大近傍Ｒ7Bmaxと推定最小近傍Ｒ7Bminとの間）との両方に属していると判定される。この判定に伴い、判定部２４ａにより、２つの最終段バッファ（７Ａ，７Ｂ）のうち、ファンアウト数の最も少ない最終段バッファ、もしくは、配線可能性領域が最も近い最終段バッファが、クロック分配元として判定・選択される。ここでは、最終段バッファ（７Ａ）の配線可能性領域が、最終段バッファ（７Ｂ）の配線可能性領域よりも追加ＦＦ／ＲＡＭ（追ａ）に近いと判定され、最終段バッファ（７Ａ）がクロック分配元として選択されたものとする。これに伴い、図１０に示すように、追加ＦＦ／ＲＡＭ（追ａ）は、クロック分配部２５により最終段バッファ（７Ａ）に接続され、最終段バッファ（７Ａ）から追加ＦＦ／ＲＡＭ（追ａ）に対するクロック分配を行なう。
【００８８】
７段目の最終段バッファ（７Ａ〜７Ｃ）の近傍範囲に含まれない追加ＦＦ／ＲＡＭ（追ｂ，追ｄ）は、より上段側の非最終段バッファに接続し、より上段側の非最終段バッファからクロック信号の分配を行なう。ここで、図１０に示すように、追加ＦＦ／ＲＡＭ（追ｂ）は、最終段バッファ（７Ａ）に近すぎるために接続することができず、最終段バッファ（７Ａ）の近傍範囲外に属している。追加ＦＦ／ＲＡＭ（追ｄ）は、最終段バッファ（７Ｃ）から遠すぎるために接続することができず、最終段バッファ（７Ｃ）の近傍範囲外に属している。
【００８９】
このとき、図５を参照しながら前述したように、非最終段バッファ近傍算出部２２ｃにより、６段目の非最終段バッファ（６）について近傍範囲（最大近傍Ｒ6MAXと最小近傍Ｒ6MINとの間）が算出される。そして、判定部２３により、追加ＦＦ／ＲＡＭ（追ｂ，追ｄ）は、非最終段バッファ（６）の近傍範囲に属していると判定される。
【００９０】
そこで、図１１に示すように、クロック分配部２５は、図１１に示すように、新たに追加・生成した７段目のバッファ（７Ｄ，７Ｅ）を介し非最終段バッファ（６）から追加ＦＦ／ＲＡＭ（追ｂ，追ｄ）に対するクロック分配を行なう。
このとき、６段目のバッファ（６）の個別最大近傍Ｒ6maxと個別最小近傍Ｒ6minとが求められる。また、新たに追加・生成した７段目のバッファ（７Ｄ）の近傍範囲（推定最大近傍Ｒ7Dmaxと推定最小近傍Ｒ7Dminとの間）は、追加バッファ近傍算出部２２ｂにより、図３を参照しながら前述した正規分布に基づき求められる。同様に、新たに追加・生成した７段目のバッファ（７Ｅ）の近傍範囲（推定最大近傍Ｒ7Emaxと推定最小近傍Ｒ7Eminとの間）は、追加バッファ近傍算出部２２ｂにより、図３を参照しながら前述した正規分布に基づき求められる。
【００９１】
そして、７段目の新規バッファ（７Ｄ）は、図１１に示すように、６段目のバッファ（６）の個別最大近傍Ｒ6maxおよび個別最小近傍Ｒ6minとの間に位置すると同時に当該新規バッファ（７Ｄ）の近傍範囲内に追加ＦＦ／ＲＡＭ（追ｂ）が属するように生成・配置される。このように生成された７段目の新規バッファ（７Ｄ）を介し非最終段バッファ（６）から追加ＦＦ／ＲＡＭ（追ｂ）に対するクロック分配が行なわれる。
【００９２】
同様に、７段目の新規バッファ（７Ｅ）は、図１１に示すように、６段目のバッファ（６）の個別最大近傍Ｒ6maxおよび個別最小近傍Ｒ6minとの間に位置すると同時に当該新規バッファ（７Ｅ）の近傍範囲内に追加ＦＦ／ＲＡＭ（追ｄ）が属するように生成・配置される。このように生成された７段目の新規バッファ（７Ｅ）を介し非最終段バッファ（６）から追加ＦＦ／ＲＡＭ（追ｄ）に対するクロック分配が行なわれる。
以上の処理により、クロック信号を分配されていない追加ＦＦ／ＲＡＭは無くなり、追加ＦＦ／ＲＡＭに対してクロック分配処理は完了する。
【００９３】
〔４〕本実施形態の設計支援機能によるクロック信号分配手順
次に、図１４および図１５に示すフローチャート（ステップＳ２０１〜Ｓ２０６，Ｓ２０１ａ〜Ｓ２０６ａ，Ｓ２３）に従って、上述した本実施形態の設計支援機能によるクロック信号分配手順について、詳細に説明する。
既に設計対象回路を設計した後に論理変更等が発生してＦＦやＲＡＭが追加されると、既存の物理設計データにおけるクロック分配回路の最終段バッファ（第１バッファ）を処理対象バッファとして（ステップＳ２０１）、以下の処理が実行される。
【００９４】
まず、新規に生成された最終段の追加バッファ、または、下段側に２以上のＦＦ／ＲＡＭもしくはバッファを接続されていない最終段バッファの最大近傍および最小近傍として用いられる推定最大近傍および推定最小近傍が、追加バッファ近傍算出部２２ｂにより算出される（ステップＳ２０２）。このとき、図３を参照しながら前述したように、各最終段バッファと当該最終段バッファの次段（既存ＦＦ／ＲＡＭ）との距離の正規分布が求められる。この正規分布の中心から−３０％に対応する距離が推定最小近傍として求められ、同中心から＋３０％に対応する距離が推定最大近傍として求められる。
【００９５】
また、２以上のＦＦ／ＲＡＭを接続された既存の最終段バッファの全てについての個別最大近傍および個別最小近傍が、最終段バッファ近傍算出部２２ａにより算出される（ステップＳ２０３）。このとき、既存の物理設計データに基づき、最終段バッファと当該最終段バッファの下段に接続された複数の既存ＦＦ／ＲＡＭとの距離が算出される。算出された距離のうち、最大値が個別最大近傍として用いられ、最小値が個別最小近傍として用いられる。
【００９６】
そして、最終段バッファに２以上のＦＦ／ＲＡＭが接続されている場合、ステップＳ２０３で算出された個別最大近傍および個別最小近傍がそれぞれ最大近傍および最小近傍として用いられる（ステップＳ２０４）。ただし、最終段バッファに２以上のＦＦ／ＲＡＭが接続されていない場合、ステップＳ２０２で算出された推定最大近傍および推定最小近傍がそれぞれ最大近傍および最小近傍として用いられる（ステップＳ２０４）。
【００９７】
最大近傍および最小近傍を算出した後、検索部２３により、最終段バッファの最大近傍と最小近傍との間（近傍範囲）に存在する追加ＦＦ／ＲＡＭが検索・判定される（ステップＳ２０５）。
最終段バッファの近傍範囲に含まれる追加ＦＦ／ＲＡＭは、クロック分配部２５により最終段バッファに接続されクロック信号を分配される（ステップＳ２０６）。このとき、同じ追加ＦＦ／ＲＡＭが複数の最終段バッファの近傍範囲に含まれている場合、最終段バッファのファンアウト数や、最終段バッファの配線可能性領域と追加ＦＦ／ＲＡＭとの間の最短配線距離を考慮し、適切なクロック信号分配元の最終段バッファが選択される（ステップＳ２０６）。
【００９８】
この後、全ての追加ＦＦ／ＲＡＭに対しクロック信号の分配が行なわれたか否かが判定される（ステップＳ２３）。全ての追加ＦＦ／ＲＡＭに対しクロック信号の分配が行なわれた場合（ステップＳ２３のＹＥＳルート）、上述した図１３のステップＳ６およびＳ７の処理が実行される。
【００９９】
一方、クロック信号をまだ分配されていない追加ＦＦ／ＲＡＭが存在する場合、つまり上記近傍範囲外の追加ＦＦ／ＲＡＭが存在する場合（ステップＳ２３のＮＯルート）、ステップＳ２０１ａの処理に移行する。このとき、前回の処理対象バッファよりも一段だけ上段側の非最終段バッファ（第２バッファ）を処理対象バッファとして（ステップＳ２０１ａ）、以下の処理が実行される。
【０１００】
新規に生成された処理対象段の追加バッファ、または、下段側に２以上のＦＦ／ＲＡＭもしくはバッファを接続されていない処理対象バッファの最大近傍および最小近傍として用いられる推定最大近傍および推定最小近傍が、追加バッファ近傍算出部２２ｂにより算出される（ステップＳ２０２ａ）。このとき、図３を参照しながら前述したように、各処理対象バッファと当該処理対象バッファの次段（既存バッファ）との距離の正規分布が求められる。この正規分布の中心から−３０％に対応する距離が推定最小近傍として求められ、同中心から＋３０％に対応する距離が推定最大近傍として求められる。
【０１０１】
また、２以上のＦＦ／ＲＡＭを接続された既存の処理対象バッファの全てについての個別最大近傍および個別最小近傍が、最終段バッファ近傍算出部２２ａにより算出される（ステップＳ２０３ａ）。このとき、既存の物理設計データに基づき、処理対象バッファと当該最終段バッファの下段に接続された複数の既存バッファとの距離が算出される。算出された距離のうち、最大値が個別最大近傍として用いられ、最小値が個別最小近傍として用いられる。
【０１０２】
処理対象バッファに２以上のＦＦ／ＲＡＭが接続されている場合、ステップＳ２０３ａで算出された個別最大近傍および個別最小近傍と、ステップＳ２０２ａで算出された推定最大近傍および推定最小近傍と、上式(1)，(2)とに基づいて、非最終段バッファの最大近傍，最小近傍が、非最終段バッファ近傍算出部２２ｃにより算出される（ステップＳ２０４ａ）。
【０１０３】
最大近傍および最小近傍を算出した後、検索部２３により、処理対象バッファの最大近傍と最小近傍との間（近傍範囲）に存在する追加ＦＦ／ＲＡＭが検索・判定される（ステップＳ２０５ａ）。
処理対象バッファの近傍範囲に含まれる追加ＦＦ／ＲＡＭは、クロック分配部２５により、新規に追加・生成される適切な段数のバッファを介して処理対象バッファに接続されクロック信号を分配される（ステップＳ２０６ａ）。このとき、同じ追加ＦＦ／ＲＡＭが複数の処理対象バッファの近傍範囲に含まれている場合、処理対象バッファのファンアウト数や、処理対象バッファの配線可能性領域と追加ＦＦ／ＲＡＭとの間の最短配線距離を考慮し、適切なクロック信号分配元の処理対象バッファが選択される（ステップＳ２０６ａ）。
【０１０４】
この後、全ての追加ＦＦ／ＲＡＭに対しクロック信号の分配が行なわれたか否かが判定される（ステップＳ２３）。全ての追加ＦＦ／ＲＡＭに対しクロック信号の分配が行なわれた場合（ステップＳ２３のＹＥＳルート）、上述した図１３のステップＳ６およびＳ７の処理が実行される。
【０１０５】
一方、クロック信号をまだ分配されていない追加ＦＦ／ＲＡＭが存在する場合、つまり上記近傍範囲外の追加ＦＦ／ＲＡＭが存在する場合（ステップＳ２３のＮＯルート）、ステップＳ２０１ａの処理に移行する。その際、前回の処理対象バッファよりも一段だけ上段側の非最終段バッファ（第２バッファ）が、処理対象バッファとして設定される。そして、上述したステップＳ２０１ａ〜Ｓ２０６ａおよびステップＳ２３の処理が、全ての追加ＦＦ／ＲＡＭに対しクロック信号の分配が行なわれるまで（ステップＳ２３でＹＥＳ判定となるまで）、繰り返し実行される。
【０１０６】
〔５〕本実施形態の設計支援装置による効果
本実施形態の設計支援装置１によれば、クロックスキューについて検証済みの既存の物理設計データに基づいて、クロックスキューが既存回路の最大クロックスキュー範囲（クロックスキューの制限範囲）内に収まるように、追加ＦＦ／ＲＡＭに対してクロック信号が分配される。
また、クロック信号の分配元候補のバッファが複数存在する場合は、候補バッファのファンアウト数や、候補バッファの配線可能性領域と追加ＦＦ／ＲＡＭとの間の最短配線距離を考慮し、適切なクロック信号分配元が選択される。
【０１０７】
これにより、既存回路のタイミング調整を再度行なうことなく、既に設計対象回路を設計した後に論理変更等が発生してＦＦやＲＡＭが追加された場合にクロック信号の分配を効率よく短期間で行なうことが可能になる。このとき、ディレイ計算等の処理を行なう必要がなく、簡単な演算処理でクロック信号の分配を行なうことができる。したがって、物理設計完了後にクロックツリーに変更が生じた場合にクロックツリーを簡便な手法で修正することが可能になる。
【０１０８】
〔６〕その他
以上、本発明の好ましい実施形態について詳述したが、本発明は、係る特定の実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲内において、種々の変形、変更して実施することができる。
なお、上述した実施形態の具体例では、クロック分配回路のバッファ段数が７段である場合について説明したが、本発明は、これに限定されるものではない。
【０１０９】
また、上述した実施形態では、処理対象バッファからＦＦ／ＲＡＭまたは次段バッファまでの距離が、処理対象バッファからＦＦ／ＲＡＭまたは次段バッファまでの直線距離である場合について説明したが、本発明は、これに限定されるものではなく、例えば、処理対象バッファからＦＦ／ＲＡＭまたは次段バッファまでの、マンハッタン長等の配線長であってもよい。
【０１１０】
さらに、上述した実施形態では、順序回路が、ＦＦやＲＡＭである場合について説明したが本発明はこれに限定されるものではない。
また、上述したデータ読込部２１，バッファ近傍算出部２２，検索部２３，判定部２４，クロック分配部２５および結果保存部２６を含む、本実施形態の設計支援装置１の各種機能の全部もしくは一部は、コンピュータ（ＣＰＵ，情報処理装置，各種端末を含む）が所定のアプリケーションプログラム（設計支援プログラム）を実行することによって実現される。
【０１１１】
そのプログラムは、例えばフレキシブルディスク，ＣＤ（ＣＤ−ＲＯＭ，ＣＤ−Ｒ，ＣＤ−ＲＷなど），ＤＶＤ（ＤＶＤ−ＲＯＭ，ＤＶＤ−ＲＡＭ，ＤＶＤ−Ｒ，ＤＶＤ−ＲＷ，ＤＶＤ＋Ｒ，ＤＶＤ＋ＲＷなど），ブルーレイディスク等のコンピュータ読取可能な記録媒体に記録された形態で提供される。この場合、コンピュータはその記録媒体からプログラムを読み取って内部記憶装置または外部記憶装置に転送し格納して用いる。
【０１１２】
ここで、コンピュータとは、ハードウエアとＯＳ（オペレーティングシステム）とを含む概念であり、ＯＳの制御の下で動作するハードウエアを意味している。また、ＯＳが不要でアプリケーションプログラム単独でハードウェアを動作させるような場合には、そのハードウェア自体がコンピュータに相当する。ハードウエアは、少なくとも、ＣＰＵ等のマイクロプロセッサと、記録媒体に記録されたコンピュータプログラムを読み取る手段とをそなえている。上記設計支援プログラムは、上述のようなコンピュータに、データ読込部２１，バッファ近傍算出部２２，検索部２３，判定部２４，クロック分配部２５および結果保存部２６を含む、本実施形態の設計支援装置１の各種機能を実現させるプログラムコードを含んでいる。また、その機能の一部は、アプリケーションプログラムではなくＯＳによって実現されてもよい。
【符号の説明】
【０１１３】
１    設計支援装置
１０    記憶部（メモリ）
２０    処理部（プロセッサ）
２１    データ読込部
２２    バッファ近傍算出部
２２ａ    最終段バッファ近傍算出部
２２ｂ    追加バッファ近傍算出部
２２ｃ    非最終段バッファ近傍算出部
２３    検索部
２４    判定部
２４ａ    配線距離最短近傍算出部
２５    クロック分配部
２６    結果保存部
【図１】
2013114586.tif 000003
【図２】
2013114586.tif 000004
【図３】
2013114586.tif 000005
【図４】
2013114586.tif 000006
【図５】
2013114586.tif 000007
【図６】
2013114586.tif 000008
【図７】
2013114586.tif 000009
【図８】
2013114586.tif 000010
【図９】
2013114586.tif 000011
【図１０】
2013114586.tif 000012
【図１１】
2013114586.tif 000013
【図１２】
2013114586.tif 000014
【図１３】
2013114586.tif 000015
【図１４】
2013114586.tif 000016
【図１５】
2013114586.tif 000017
【図１６】
2013114586.tif 000018
【手続補正書】
【提出日】平成26年7月24日(2014.7.24)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
バッファを有するクロック分配回路を含む回路の物理設計データを格納するメモリと、
プロセッサとを有し、
前記プロセッサは、
前記クロック分配回路に含まれる第１バッファによって分配されるクロック信号が入力される順序回路を追加する際に該第１バッファに複数の他の順序回路が接続されている場合、前記メモリに格納された前記物理設計データに基づき、追加される前記順序回路と該第１バッファとの距離が、該第１バッファから該複数の他の順序回路までの距離の最大値と最小値との間にあるか否かを判定し、
前記判定の結果、追加される前記順序回路と該第１バッファとの距離が前記最大値と前記最小値との間にある場合、追加される前記順序回路に対し、該第１バッファから供給するクロック信号の配線処理を行なう
ことを特徴とする設計支援装置。
【請求項２】
前記プロセッサは、
該第１バッファに複数の他の順序回路が接続されていない場合、前記メモリに格納された前記物理設計データに基づき、複数の他の順序回路が接続されているバッファと、接続されている前記複数の他の順序回路との距離の平均および分散を有する正規分布を算出し、該正規分布の所定範囲の上限に対応する距離を前記最大値とし、該正規分布の所定範囲の下限に対応する距離を前記最小値とする
ことを特徴とする、請求項１に記載の設計支援装置。
【請求項３】
前記プロセッサは、
前記判定の結果、追加される前記順序回路と該第１バッファとの距離が前記最大値と前記最小値との間にない場合、前記メモリに格納された前記物理設計データに基づき、追加される前記順序回路に対し該第１バッファよりも上段側の第２バッファからクロック信号分配可能な距離の最大値と、追加される前記順序回路に対し該第２バッファからクロック信号分配可能な距離の最小値とを算出し、追加される前記順序回路と該第２バッファとの距離が前記クロック信号分配可能な距離の最大値と最小値との間にあるか否かを判定し、
前記判定の結果、追加される前記順序回路と該第２バッファとの距離が前記クロック信号分配可能な距離の最大値と最小値との間にある場合、追加される前記順序回路に対し、該第２バッファから供給するクロック信号の配線処理を行なう
ことを特徴とする、請求項１または請求項２に記載の設計支援装置。
【請求項４】
前記プロセッサは、
追加される前記順序回路と複数の該第１バッファとの距離が前記最大値と前記最小値との間にある場合、前記複数の該第１バッファのうちファンアウト数が最も少ないものを選択し、追加される前記順序回路に対し、選択された該第１バッファから供給するクロック信号の配線処理を行なう
ことを特徴とする、請求項１〜請求項３のいずれか一項に記載の設計支援装置。
【請求項５】
前記プロセッサは、
追加される前記順序回路と複数の該第１バッファとの距離が前記最大値と前記最小値との間にある場合、前記複数の該第１バッファのうち、追加される前記順序回路への配線距離が最小のものを選択し、追加される前記順序回路に対し、選択された該第１バッファから供給するクロック信号の配線処理を行なう
ことを特徴とする、請求項１〜請求項３のいずれか一項に記載の設計支援装置。
【請求項６】
メモリに格納された、バッファを有するクロック分配回路を含む回路の物理設計データに基づき、プロセッサにより設計支援を行なう方法であって、
前記クロック分配回路に含まれる第１バッファによって分配されるクロック信号が入力される順序回路を追加する際に該第１バッファに複数の他の順序回路が接続されている場合、前記物理設計データに基づき、追加される前記順序回路と該第１バッファとの距離が、該第１バッファから該複数の他の順序回路までの距離の最大値と最小値との間にあるか否かを判定し、
前記判定の結果、追加される前記順序回路と該第１バッファとの距離が前記最大値と前記最小値との間にある場合、追加される前記順序回路に対し、該第１バッファから供給するクロック信号の配線処理を行なう
ことを特徴とする設計支援方法。
【請求項７】
メモリに格納された、バッファを有するクロック分配回路を含む回路の物理設計データに基づき、設計支援を行なうプロセッサに、
前記クロック分配回路に含まれる第１バッファによって分配されるクロック信号が入力される順序回路を追加する際に該第１バッファに複数の他の順序回路が接続されている場合、前記物理設計データに基づき、追加される前記順序回路と該第１バッファとの距離が、該第１バッファから該複数の他の順序回路までの距離の最大値と最小値との間にあるか否かを判定し、
前記判定の結果、追加される前記順序回路と該第１バッファとの距離が前記最大値と前記最小値との間にある場合、追加される前記順序回路に対し、該第１バッファから供給するクロック信号の配線処理を行なう
処理を実行させることを特徴とする設計支援プログラム。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００９０
【補正方法】変更
【補正の内容】
【００９０】
そこで、図１１に示すように、クロック分配部２５は、新たに追加・生成した７段目のバッファ（７Ｄ，７Ｅ）を介し非最終段バッファ（６）から追加ＦＦ／ＲＡＭ（追ｂ，追ｄ）に対するクロック分配を行なう。
このとき、６段目のバッファ（６）の個別最大近傍Ｒ6maxと個別最小近傍Ｒ6minとが求められる。また、新たに追加・生成した７段目のバッファ（７Ｄ）の近傍範囲（推定最大近傍Ｒ7Dmaxと推定最小近傍Ｒ7Dminとの間）は、追加バッファ近傍算出部２２ｂにより、図３を参照しながら前述した正規分布に基づき求められる。同様に、新たに追加・生成した７段目のバッファ（７Ｅ）の近傍範囲（推定最大近傍Ｒ7Emaxと推定最小近傍Ｒ7Eminとの間）は、追加バッファ近傍算出部２２ｂにより、図３を参照しながら前述した正規分布に基づき求められる。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】０１１２
【補正方法】変更
【補正の内容】
【０１１２】
ここで、コンピュータとは、ハードウエアとＯＳ（オペレーティングシステム）とを含む概念であり、ＯＳの制御の下で動作するハードウエアを意味している。また、ＯＳが不要でアプリケーションプログラム単独でハードウェアを動作させるような場合には、そのハードウェア自体がコンピュータに相当する。ハードウエアは、少なくとも、ＣＰＵ等のマイクロプロセッサと、記録媒体に記録されたコンピュータプログラムを読み取る手段とをそなえている。上記設計支援プログラムは、上述のようなコンピュータに、データ読込部２１，バッファ近傍算出部２２，検索部２３，判定部２４，クロック分配部２５および結果保存部２６を含む、本実施形態の設計支援装置１の各種機能を実現させるプログラムコードを含んでいる。また、その機能の一部は、アプリケーションプログラムではなくＯＳによって実現されてもよい。
〔７〕付記
以上の各実施形態を含む実施形態に関し、さらに以下の付記を開示する。
（付記１）
バッファを有するクロック分配回路を含む回路の物理設計データを格納するメモリと、
プロセッサとを有し、
前記プロセッサは、
前記クロック分配回路に含まれる第１バッファによって分配されるクロック信号が入力される順序回路を追加する際に該第１バッファに複数の他の順序回路が接続されている場合、前記メモリに格納された前記物理設計データに基づき、追加される前記順序回路と該第１バッファとの距離が、該第１バッファから該複数の他の順序回路までの距離の最大値と最小値との間にあるか否かを判定し、
前記判定の結果、追加される前記順序回路と該第１バッファとの距離が前記最大値と前記最小値との間にある場合、追加される前記順序回路に対し、該第１バッファから供給するクロック信号の配線処理を行なう
ことを特徴とする設計支援装置。
（付記２）
前記プロセッサは、
該第１バッファに複数の他の順序回路が接続されていない場合、前記メモリに格納された前記物理設計データに基づき、複数の他の順序回路が接続されているバッファと、接続されている前記複数の他の順序回路との距離の平均および分散を有する正規分布を算出し、該正規分布の所定範囲の上限に対応する距離を前記最大値とし、該正規分布の所定範囲の下限に対応する距離を前記最小値とする
ことを特徴とする、付記１に記載の設計支援装置。
（付記３）
前記プロセッサは、
前記判定の結果、追加される前記順序回路と該第１バッファとの距離が前記最大値と前記最小値との間にない場合、前記メモリに格納された前記物理設計データに基づき、追加される前記順序回路に対し該第１バッファよりも上段側の第２バッファからクロック信号分配可能な距離の最大値と、追加される前記順序回路に対し該第２バッファからクロック信号分配可能な距離の最小値とを算出し、追加される前記順序回路と該第２バッファとの距離が前記クロック信号分配可能な距離の最大値と最小値との間にあるか否かを判定し、
前記判定の結果、追加される前記順序回路と該第２バッファとの距離が前記クロック信号分配可能な距離の最大値と最小値との間にある場合、追加される前記順序回路に対し、該第２バッファから供給するクロック信号の配線処理を行なう
ことを特徴とする、付記１または付記２に記載の設計支援装置。
（付記４）
前記クロック信号分配可能な距離の最大値は、該第２バッファから当該第２バッファの下段側に接続された複数の次段バッファまでの距離の最大値に、前記次段バッファから前記第１バッファまでの各バッファについて得られる前記距離の最大値の総和を加算した値であり、
前記クロック信号分配可能な距離の最小値は、該第２バッファから当該第２バッファの下段側に接続された複数の次段バッファまでの距離の最小値から、前記次段バッファから前記第１バッファまでの各バッファについて得られる前記距離の最大値の総和を減算した値と、０との大きい方の値とする
ことを特徴とする、付記３に記載の設計支援装置。
（付記５）
前記プロセッサは、
追加される前記順序回路と複数の該第１バッファとの距離が前記最大値と前記最小値との間にある場合、前記複数の該第１バッファのうちファンアウト数が最も少ないものを選択し、追加される前記順序回路に対し、選択された該第１バッファから供給するクロック信号の配線処理を行なう
ことを特徴とする、付記１〜付記４のいずれか一項に記載の設計支援装置。
（付記６）
前記プロセッサは、
追加される前記順序回路と複数の該第１バッファとの距離が前記最大値と前記最小値との間にある場合、前記複数の該第１バッファのうち、追加される前記順序回路への配線距離が最小のものを選択し、追加される前記順序回路に対し、選択された該第１バッファから供給するクロック信号の配線処理を行なう
ことを特徴とする、付記１〜付記４のいずれか一項に記載の設計支援装置。
（付記７）
前記プロセッサは、
前記メモリに格納された前記物理設計データに基づき、前記複数の該第１バッファのそれぞれについて各第１バッファから既存順序回路へのクロック信号の配線が行なわれる可能性のある領域を求め、前記複数の該第１バッファのうち、追加される前記順序回路から前記領域までの距離が最小になるものを、前記配線距離が最小のものとして選択する
ことを特徴とする、付記６に記載の設計支援装置。
（付記８）
前記距離は、該第１バッファから該複数の他の順序回路までの直線距離、または、該第２バッファから該次段バッファまでの直線距離であることを特徴とする、付記１〜付記７のいずれか一項に記載の設計支援装置。
（付記９）
前記距離は、該第１バッファから該複数の他の順序回路までの配線長、または、該第２バッファから該次段バッファまでの配線長であることを特徴とする、付記１〜付記７のいずれか一項に記載の設計支援装置。
（付記１０）
メモリに格納された、バッファを有するクロック分配回路を含む回路の物理設計データに基づき、プロセッサにより設計支援を行なう方法であって、
前記クロック分配回路に含まれる第１バッファによって分配されるクロック信号が入力される順序回路を追加する際に該第１バッファに複数の他の順序回路が接続されている場合、前記物理設計データに基づき、追加される前記順序回路と該第１バッファとの距離が、該第１バッファから該複数の他の順序回路までの距離の最大値と最小値との間にあるか否かを判定し、
前記判定の結果、追加される前記順序回路と該第１バッファとの距離が前記最大値と前記最小値との間にある場合、追加される前記順序回路に対し、該第１バッファから供給するクロック信号の配線処理を行なう
ことを特徴とする設計支援方法。
（付記１１）
該第１バッファに複数の他の順序回路が接続されていない場合、前記物理設計データに基づき、複数の他の順序回路が接続されているバッファと、接続されている前記複数の他の順序回路との距離の平均および分散を有する正規分布を算出し、該正規分布の所定範囲の上限に対応する距離を前記最大値とし、該正規分布の所定範囲の下限に対応する距離を前記最小値とする
ことを特徴とする、付記１０に記載の設計支援方法。
（付記１２）
前記判定の結果、追加される前記順序回路と該第１バッファとの距離が前記最大値と前記最小値との間にない場合、前記物理設計データに基づき、追加される前記順序回路に対し該第１バッファよりも上段側の第２バッファからクロック信号分配可能な距離の最大値と、追加される前記順序回路に対し該第２バッファからクロック信号分配可能な距離の最小値とを算出し、追加される前記順序回路と該第２バッファとの距離が前記クロック信号分配可能な距離の最大値と最小値との間にあるか否かを判定し、
前記判定の結果、追加される前記順序回路と該第２バッファとの距離が前記クロック信号分配可能な距離の最大値と最小値との間にある場合、追加される前記順序回路に対し、該第２バッファから供給するクロック信号の配線処理を行なう
ことを特徴とする、付記１０または付記１１に記載の設計支援方法。
（付記１３）
メモリに格納された、バッファを有するクロック分配回路を含む回路の物理設計データに基づき、設計支援を行なうプロセッサに、
前記クロック分配回路に含まれる第１バッファによって分配されるクロック信号が入力される順序回路を追加する際に該第１バッファに複数の他の順序回路が接続されている場合、前記物理設計データに基づき、追加される前記順序回路と該第１バッファとの距離が、該第１バッファから該複数の他の順序回路までの距離の最大値と最小値との間にあるか否かを判定し、
前記判定の結果、追加される前記順序回路と該第１バッファとの距離が前記最大値と前記最小値との間にある場合、追加される前記順序回路に対し、該第１バッファから供給するクロック信号の配線処理を行なう
処理を実行させることを特徴とする設計支援プログラム。
（付記１４）
該第１バッファに複数の他の順序回路が接続されていない場合、前記物理設計データに基づき、複数の他の順序回路が接続されているバッファと、接続されている前記複数の他の順序回路との距離の平均および分散を有する正規分布を算出し、該正規分布の所定範囲の上限に対応する距離を前記最大値とし、該正規分布の所定範囲の下限に対応する距離を前記最小値とする
ことを特徴とする、付記１３に記載の設計支援プログラム。
（付記１５）
前記判定の結果、追加される前記順序回路と該第１バッファとの距離が前記最大値と前記最小値との間にない場合、前記物理設計データに基づき、追加される前記順序回路に対し該第１バッファよりも上段側の第２バッファからクロック信号分配可能な距離の最大値と、追加される前記順序回路に対し該第２バッファからクロック信号分配可能な距離の最小値とを算出し、追加される前記順序回路と該第２バッファとの距離が前記クロック信号分配可能な距離の最大値と最小値との間にあるか否かを判定し、
前記判定の結果、追加される前記順序回路と該第２バッファとの距離が前記クロック信号分配可能な距離の最大値と最小値との間にある場合、追加される前記順序回路に対し、該第２バッファから供給するクロック信号の配線処理を行なう
処理を、前記プロセッサに実行させることを特徴とする、付記１３または付記１４に記載の設計支援プログラム。
【国際調査報告】
2013114586.tif 000019
2013114586.tif 000020