(57)【要約】【課題】  本発明は、半導体装置、クロック分配方法及びプログラムに関し、クロックスキューの調整を行いやすくすることを目的とする。【解決手段】  配線が分岐した直後に、分岐先毎に１個の駆動セルを近傍にまとめて配置されたツリー構造を有し、各分岐のネットを分割し、夫々の分岐先に対して独立して遅延調整ができるクロックツリーからなるように構成する。【選択図】  図２
2006054348.tif 000002
【特許請求の範囲】
【請求項１】
配線が分岐した直後に、分岐先毎に１個の駆動セルを近傍にまとめて配置されたツリー構造を有し、
各分岐のネットを分割し、夫々の分岐先に対して独立して遅延調整ができるクロックツリーからなることを特徴とする、半導体装置。
【請求項２】
半導体装置を構成する素子の配置座標を決定する自動配置処理中にツリー構造の回路を生成してクロックを分配するクロック分配方法であって、
該半導体装置のレイアウト領域を、配線による遅延差が一定値以下となるような縦寸法及び横寸法を持つメッシュ領域に分割して、任意のメッシュ領域内に駆動セルを配置するステップと、
配線が分岐した直後に、分岐先毎に１個の駆動セルを近傍にまとめて配置されたクロックツリーをボトムアップに生成するステップと、
各駆動セル・シンクセル間に対して、駆動セルの挿入、駆動セルのリサイズ、配線長の変更のうち少なくとも１つの操作を行い、分岐点から次段のシンクセルまでのスキュー調整を行うステップとを含むことを特徴とする、クロック分配方法。
【請求項３】
前記クロックツリーをボトムアップに生成するステップは、
シンクセルの集合の中心から順に探して得られた、各クラスタ内のシンクセル数分の駆動セルを配置できるメッシュ領域に該シンクセル分の駆動セルを配置し、
駆動セル・シンクセル間と、駆動セル間を最短経路の配線で結ぶことを特徴とする、請求項２記載のクロック分配方法。
【請求項４】
半導体装置を構成する素子の配置座標を決定する自動配置処理中にツリー構造の回路を生成してクロックを分配するクロック分配方法であって、
複数の駆動セルをまとめた１入力多出力の駆動セルを作成するステップと、
配線が分岐した直後に、分岐先毎に１個の駆動セルを近傍にまとめて配置されると共に、前記１入力多出力の駆動セルを用いたクロックツリーをボトムアップに生成するステップと、
各駆動セル・シンクセル間に対して、駆動セルの挿入、駆動セルのリサイズ、配線長の変更のうち少なくとも１つの操作を行い、分岐点から次段のシンクセルまでのスキュー調整を行うステップとを含むことを特徴とする、クロック分配方法。
【請求項５】
請求項２〜４のいずれか１項記載のクロック分配方法により、コンピュータに半導体装置を構成する素子の配置座標を決定する自動配置処理中にツリー構造の回路を生成してクロックを分配させることを特徴とする、プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体装置、クロック分配方法及びプログラムに係り、特にクロックスキュー（Skew）対策が施された半導体装置、クロックスキューを調整するクロック分配方法及びコンピュータにクロックスキューを調整するクロック分配を行わせるプログラムに関する。
【背景技術】
【０００２】
一般に、大規模集積回路（ＬＳＩ）等のレイアウト設計においては、クロックスキュー対策として、クロックツリー生成法によりクロック回路をツリー型構造の回路で構成することがある。従来より、このようなツリー型構造の回路は、レイアウト用のツール等により自動的に生成される。
【０００３】
図１は、従来のクロックツリー生成法を説明する図である。図１中、白抜きの四角形はフリップフロップ等のシンクセル（Sink Cell）１１１を示し、ハッチングを施された四角形は駆動バッファ等の駆動セル１１２を示し、太線は配線１１３を示す。図１の場合、クロックツリーの生成によりスター配線が生成される。
【０００４】
従来のクロックツリー生成法では、基本的には配線が分岐する直前に駆動セルを配置し、配線を介してフリップフロップ等のシンクセルを駆動する図１に示す如きツリー型構造を採用している。生成したクロックツリーがクロックスキュー制約を満たさない場合には、生成したツリーに対し、遅延調整の目的でセルを挿入する処理等を行い、クロックスキューを調整する。しかし、図１の如きツリー型構造の場合、ある分岐先へのセルの挿入は、他の分岐先の負荷容量にまで影響を与えるため、結果的に他の分岐先の遅延まで変化させてしまい、クロックスキューの調整が難しくなる。
【特許文献１】特開２０００−１２２７５１号公報
【特許文献２】特開２００４−０２２８６４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
従来のクロックツリー生成法では、次段の駆動セルを近づけるような工夫はなされないため、図１に示すように、１個のセルから複数の離れた次段のセルを駆動するような構造のクロックツリーが生成されやすい。このため、従来のクロックツリー生成法では、クロックスキューの調整が難しいという問題があった。
【０００６】
そこで、本発明は、クロックスキューの調整を行いやすい半導体装置、クロック分配方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記の課題は、配線が分岐した直後に、分岐先毎に１個の駆動セルを近傍にまとめて配置されたツリー構造を有し、各分岐のネットを分割し、夫々の分岐先に対して独立して遅延調整ができるクロックツリーからなることを特徴とする半導体装置によって達成できる。
【０００８】
上記の課題は、半導体装置を構成する素子の配置座標を決定する自動配置処理中にツリー構造の回路を生成してクロックを分配するクロック分配方法であって、該半導体装置のレイアウト領域を、配線による遅延差が一定値以下となるような縦寸法及び横寸法を持つメッシュ領域に分割して、任意のメッシュ領域内に駆動セルを配置するステップと、配線が分岐した直後に、分岐先毎に１個の駆動セルを近傍にまとめて配置されたクロックツリーをボトムアップに生成するステップと、各駆動セル・シンクセル間に対して、駆動セルの挿入、駆動セルのリサイズ、配線長の変更のうち少なくとも１つの操作を行い、分岐点から次段のシンクセルまでのスキュー調整を行うステップとを含むことを特徴とするクロック分配方法によっても達成できる。
【０００９】
上記の課題は、半導体装置を構成する素子の配置座標を決定する自動配置処理中にツリー構造の回路を生成してクロックを分配するクロック分配方法であって、複数の駆動セルをまとめた１入力多出力の駆動セルを作成するステップと、配線が分岐した直後に、分岐先毎に１個の駆動セルを近傍にまとめて配置されると共に、前記１入力多出力の駆動セルを用いたクロックツリーをボトムアップに生成するステップと、各駆動セル・シンクセル間に対して、駆動セルの挿入、駆動セルのリサイズ、配線長の変更のうち少なくとも１つの操作を行い、分岐点から次段のシンクセルまでのスキュー調整を行うステップとを含むことを特徴とするクロック分配方法によっても達成できる。
【００１０】
上記の課題は、上記いずれかののクロック分配方法により、コンピュータに半導体装置を構成する素子の配置座標を決定する自動配置処理中にツリー構造の回路を生成してクロックを分配させることを特徴とするプログラムによっても達成できる。
【発明の効果】
【００１１】
本発明によれば、クロックスキューの調整が容易なクロックツリーを生成することができるので、クロックスキューを抑制することができる。又、クロックスキューを調整するためのバッファの挿入による遅延見積もりの精度を向上し、クロックスキューの小さなクロックツリーを生成することができる。
【発明を実施するための最良の形態】
【００１２】
図２は、本発明におけるクロックツリー生成方法を説明する図である。図２中、白抜きの四角形はフリップフロップ等のシンクセル１を示し、ハッチングを施された四角形は駆動バッファ等の駆動セル２を示し、太線は配線３を示す。図２の場合、クロックツリーの生成により１：１配線が生成される。
【００１３】
本発明では、図２に示すように、ファンアウト直後にバッファ等の駆動セル２をまとめて配置しながらクロックツリーを生成していくことで、クロックスキューの調整が行いやすいクロックツリーを生成する。つまり、本発明では、配線３が分岐した直後に、分岐先毎に１個の駆動セル２を近傍にまとめて配置するツリー構造を採用する点に特徴がある。これにより、各分岐のネットを分割し、夫々の分岐先に対して独立して遅延調整ができるようなクロックツリーを生成することができる。バッファ等の駆動セル２を配置する方法としては、後述するように、シンクセル１の集合の中心から配置できる場所を探索し、複数の駆動セル２をまとめて配置する方法か、或いは、複数の駆動セル２をまとめた１入力多出力の駆動セルを生成し、この１入力多出力の駆動セルを中心に配置して全ての分岐を駆動させる方法を採用する。
【実施例】
【００１４】
以下に、本発明になる半導体装置、本発明になるクロック分配方法及び本発明になるプログラムの各実施例を図３以降と共に説明する。本発明になるクロック分配方法は、汎用のコンピュータシステムを用いてコンピュータ支援設計（ＣＡＤ）によりＬＳＩ等の半導体装置を設計する際に用いられる。本発明になるプログラムは、ＣＰＵ等のプロセッサ及び記憶装置からなる汎用のコンピュータシステムにインストールされていても、磁気ディスクやＣＤ−ＲＯＭ等の記憶媒体に格納されていても良い。本発明になる半導体装置は、本発明になるクロック分配方法を用いて生成されたツリー構造の回路を備えたＬＳＩ等である。
【００１５】
図３は、ツリー型構造の回路を生成する処理を説明するフローチャートである。図３において、ステップＳ１１は、ＬＳＩの分割対象領域を複数の領域に分割し、分割により得られた各領域に、分配対象であるＬＳＩの構成素子、即ち、セルを分配する。ステップＳ１２は、クロックツリーを生成し、ステップＳ１３は、概略配線を行う。ステップＳ１４は、必要に応じてクロック位相差を考慮してタイミング改善処理を行う。ステップＳ１５は、以上の処理がＬＳＩの領域を繰り返し分割する規定回数だけ行われたか否かを判定し、判定結果がＮＯであると、処理はステップＳ１１へ戻る。他方、ステップＳ１５の判定結果がＹＥＳであると、ステップＳ１６は、構成素子及び追加されたバッファ等の駆動セルの詳細配置を行う。以上の処理により、タイミングドリブン自動配置が行われる。最後に、ステップＳ１７は、自動配線を行う。このように、ＬＳＩを構成する素子の配置座標をトップダウンに決定する自動配置処理の途中のステップＳ１２で、ツリー構造の回路が生成される。
【００１６】
本発明になる半導体装置は、上記ツリー構造の回路を備え、本発明になるクロック分配方法は、上記ステップＳ１２におけるクロック分配を行う。本発明になるプログラムは、上記コンピュータシステムのＣＰＵに上記ステップＳ１２におけるクロック分配を行わせる。
【００１７】
本実施例では、図２と共に説明したように、配線が分岐した直後に、分岐先毎に１個の駆動セルを配置する。次に、このように駆動セルをまとめて配置する場合のクロックツリー生成方法について説明する。クロックツリーの生成は、次のようなクロックツリー生成ステップＳＴ１又はＳＴ２からなる。
【００１８】
１．  クロックツリー生成ステップＳＴ１：
ステップＳＴ１は、複数の駆動バッファ１２をまとめて配置してクロックツリーを生成する。
【００１９】
１−１．  レイアウト領域のメッシュへの分割処理
図４に示すＬＳＩのレイアウト領域を、配線１３による遅延差が一定値以下となるような縦及び横の長さ（即ち、縦寸法及び横寸法）を持つ図５に示す如きメッシュ領域Ｍに分割する。これにより、同一のメッシュ領域Ｍ内に駆動バッファ１２を配置すれば、図６に示す部分Ｐにより、一定値を超える遅延差の発生を防止できる。つまり、図６において、部分Ｐの遅延差が一定値以下になるように、図５に示すメッシュ領域Ｍの縦寸法及び横寸法が決定される。
【００２０】
図４〜図６中、及び後述する図７〜図１３中、白抜きの四角形はフリップフロップ等のシンクセル１１を示し、ハッチングを施された四角形は駆動バッファ等の駆動セル１２を示し、太線は配線１３を示す。
【００２１】
１−２．  クロックツリーの生成処理
配線１３が分岐した直後に、分岐先毎に１個の駆動セル１２を近傍にまとめて配置されたクロックツリーを、ボトムアップに生成していく。具体的には、処理１−２−１〜１−２−４までを繰り返し行い、クロックツリーの生成が完了したら処理を終了する。
【００２２】
１−２−１．  遅延計算処理
クロックツリーを生成済みの部分から、末端までの遅延を計算する。
【００２３】
１−２−２．  セルのグループ化処理
駆動セル１２が駆動できるシンクセル数の制約と駆動できる負荷容量の能力の制約下で、距離をコストに換算してグループ化する。
【００２４】
１−２−３．  クロックツリー作成処理
クロックツリー作成処理は、次の手順で行われる。
【００２５】
ｐ１：  各メッシュ領域Ｍで挿入できるセル（又はゲート）数を計算しておく。
【００２６】
ｐ２：  シンクセル１１の集合の中心から順に各クラスタ内のシンクセル数分の駆動セル１２を配置できるメッシュ領域Ｍを探す。使用する駆動セル１２は、駆動能力を満たす範囲内で最小の駆動バッファを仮定する。
【００２７】
ｐ３：  駆動セル１２を、処理ｐ２で見つけたメッシュ領域Ｍ内に配置する。駆動セル１２は、メッシュ領域Ｍ内であればどこに配置してもよい。
【００２８】
ｐ４：  駆動セル・シンクセル間、駆動セル間を最短経路の配線１３で結ぶ。
【００２９】
従って、図７にｓ１で示すシンクセル１１の配置が与えられたときに、ｓ２でＧ１で示すようなシンクセル１１の集合の中心から順に各クラスタ内のシンクセル数分の駆動セル１２を配置できる空きのあるメッシュ領域Ｍを探し、ｓ３で示すように空きのあるメッシュ領域Ｍに駆動セル１２を配置して駆動セル・シンクセル間、駆動セル１２間を最短経路の配線１３で結ぶ。以後、シンクセル１１のグループ化、駆動セル１２の配置及び駆動セル１２・シンクセル１１間と駆動セル１２間を最短経路の配線１３で結ぶことを、クロックツリーが完成するまで繰り返す。
【００３０】
図７の場合、ｓ４でＧ２で示すような駆動セル１２のグループ化を行い、ｓ５で示すように空きのあるメッシュ領域Ｍに駆動セル１２を配置し、ｓ６で空きのあるメッシュ領域Ｍに更に駆動セル１２を配置する。このようにして、最後に駆動セル１２が１つのグループに属する構成となったら、このグループをクロックソースに接続し、処理は終了する。
【００３１】
１−２−４．  スキュー調整処理
図８に示す如き各駆動セル・シンクセル間に対して、図９に示すように駆動セル１２の挿入、駆動セル１２のリサイズ、配線長の変更等うち少なくとも１つの操作を行い、分岐点から次段のシンクセル１１までのスキュー調整を行う。図９中、梨地を施された四角形は、スキュー調整のために挿入された駆動セル１２Ａを示す。
【００３２】
１−３．  クロックツリー全体のスキュー調整処理
クロックソースから、リーフピンまでの遅延を計算し、スキュー調整をボトムアップに行う。この際、処理１−２で生成したクロックツリーをもとにスリュー（Slew）を設定すれば、処理１−２で行った遅延計算よりも精度が向上する。
【００３３】
２．  クロックツリー生成ステップＳＴ２：
ステップＳＴ２は、複数の駆動セル１２をまとめた、１入力多出力の駆動セルを作成して使用することでクロックツリーを生成する。この場合の処理は、シンクセル１１の集合の中心から一定距離に駆動セル１２をまとめて配置する上記ステップＳＴ１と類似しているが、以下の点で異なる。
【００３４】
第１に、レイアウト領域をメッシュ領域Ｍに分割する上記処理１−１が不要である。
【００３５】
第２に、複数の駆動セル１２をまとめた駆動セルを作成して使用する。つまり、複数の駆動セル１２をまとめて配置する代わりに、図１０中丸印で囲まれた部分の駆動セル１２（この例では４個）を同図の右側に抜き出して示すようにまとめた駆動セルＧ３を作成し、この駆動セルＧ３を使用してクロックツリーを生成する。
【００３６】
３．  その他の処理：
３−１．  シンクセルの数が多数の場合の処理
各シンクセル１１に対して１個の駆動セル１２を挿入したのでは、挿入する駆動セル１２の数が膨大な数になってしまう。このため、図１１に示すレイアウト領域を最初にメッシュ領域Ｍに分割し、そのメッシュ領域Ｍ内のシンクセル１１をまとめて駆動するローカル駆動セル１２Ｌを図１２に示すように配置する。
【００３７】
３−２．  グループ化時にスケジュールを考慮する処理
クロックツリーの生成途中でも、配置した駆動セル１２からシンクセル１１までの遅延は計算する。このため、上記処理１−２−２において、シンクセル１１までの遅延差が一定値以下で小さい駆動セル１２のみをグループ化の対象とする。最初は全てのシンクセル１１をグループ化対象とし、クロックツリーが生成できた部分は、駆動セル・シンクセル間遅延でソートし、遅延が「最小遅延」から「最小遅延＋駆動セル１個分の遅延」未満の範囲内にあるものをクラスタリング対象とする。
【００３８】
例えば、クロックツリーの生成途中の段階で、以下のような遅延を持つ状態になったとする。図１３中、駆動セル１２の集合Ａ，Ｂ，Ｃ，Ｄから末端のフリップフロップ、ＲＡＭ等のシンクセル１１までの遅延時間が夫々４０ｐｓ,４５ｐｓ,８０ｐｓ,１６０ｐｓであるものとする。この場合、駆動セル１２の１段当たりの単位遅延を３５ｐｓとすると、駆動セル１２の集合（Ａ，Ｄ）をグループ化して、駆動セル１２の配置、遅延調整を行うと、１２０ｐｓの遅延差を調整することになる。これを同じ程度の遅延を持つ、駆動セル１２の集合（Ａ，Ｂ）を先にグループ化して、クロックツリーを生成し、その後、駆動セル１２の集合｛（Ａ，Ｂ），Ｃ｝、駆動セル１２の集合｛（Ａ，Ｂ，Ｃ），Ｄ｝と遅延の小さいものから先にグループ化してクロックツリーの生成を進める。
【００３９】
３−３．  第１のスキュー調整処理(ゼロスキュー調整処理)
第１のスキュー調整処理は次の手順で行う。
【００４０】
ｐ１１：  スキュー調整に使用できる全ての駆動セル１２において、一定の駆動負荷容量とスリューを与えたときのセル遅延を計算しておき、テーブルに格納しておく。テーブルは、コンピュータシステムの記憶装置内に設けても良い。以下の説明では、この遅延値を単位遅延と言う。
【００４１】
ｐ１２：  グループ化したシンクセル１１のうち、最大遅延を持つシンクセル１１の遅延を固定する。
【００４２】
ｐ１３：  最大遅延を持つシンクセル１１以外は、処理ｐ１１で記録したテーブルのデータをもとに、スキューが小さく(ゼロスキューに)なる方向に駆動セル１２を変更する。
【００４３】
ｐ１４：  最も小さい遅延を有する駆動セル１２の単位遅延以上の遅延差を持つシンクセル１１については、最大の遅延を超えない範囲内で配線経路上に駆動セル１２の挿入処理を行う。
【００４４】
ｐ１５：  配線経路を変更することで、スキュー調整を行う。
【００４５】
３−４．  第２のスキュー調整処理（意図的（Intentional）スキュー調整処理)
駆動セル１２において、各シンクセル１１で独立に遅延調整が可能であるため、各シンクセル１１で許容できるタイミングに幅が与えられたときは、タイミングの幅の範囲内で意図的にスキューを加えたクロックツリーの作成を行う。
【００４６】
従って、本実施例によれば、スキュー調整を行う際に、次のようなメリットがある。尚、遅延調整には、駆動セル１２の挿入や配線経路の変更を行うことを考えるものとする。
【００４７】
図１４は、従来のクロックツリー生成方法により駆動セルを挿入した場合の影響を説明する図であり、図１５は、クロックツリー生成方法の実施例により駆動セルを挿入した場合の影響を説明する図である。図１４及び図１５中、１２Ｉは挿入された駆動セルを示し、この駆動セル１２Ｉの挿入により遅延変化が予想される場所を太線で示す。
【００４８】
図１４に示す従来の方法の場合、駆動セル１２Ｉの挿入は、スキュー調整を行う際に、合わせるべき他の分岐先への遅延にも影響を与えてしまう。このため、スキュー調整のために挿入した駆動セル１２Ｉによる影響まで考慮して、挿入する駆動セル１２や駆動セル１２の挿入ポイントを決定しなければならず、スキュー調整が困難である。
【００４９】
一方、図１５に示す本実施例の場合、駆動セル１２Ｉの挿入の影響は、１つの分岐先に止まる。分岐点１９とは駆動セル１２Ｉで分割され、他の分岐先の遅延が変化することがないため、各分岐先で独立に遅延調整を行うことができ、スキュー調整がしやすくなる。
【００５０】
尚、本発明は、以下に付記する発明をも包含するものである。
（付記１）  配線が分岐した直後に、分岐先毎に１個の駆動セルを近傍にまとめて配置されたツリー構造を有し、
各分岐のネットを分割し、夫々の分岐先に対して独立して遅延調整ができるクロックツリーからなることを特徴とする、半導体装置。
（付記２）  複数の駆動セルが、シンクセルの集合の中心から配置できる場所に順次まとめて配置されていることを特徴とする、付記１記載の半導体装置。
（付記３）  複数の駆動セルをまとめた１入力多出力の駆動セルが各分岐を駆動するよう配置されていることを特徴とする、付記１記載の半導体装置。
（付記４）  半導体装置を構成する素子の配置座標を決定する自動配置処理中にツリー構造の回路を生成してクロックを分配するクロック分配方法であって、
該半導体装置のレイアウト領域を、配線による遅延差が一定値以下となるような縦寸法及び横寸法を持つメッシュ領域に分割して、任意のメッシュ領域内に駆動セルを配置するステップと、
配線が分岐した直後に、分岐先毎に１個の駆動セルを近傍にまとめて配置されたクロックツリーをボトムアップに生成するステップと、
各駆動セル・シンクセル間に対して、駆動セルの挿入、駆動セルのリサイズ、配線長の変更のうち少なくとも１つの操作を行い、分岐点から次段のシンクセルまでのスキュー調整を行うステップとを含むことを特徴とする、クロック分配方法。
（付記５）  クロックソースからリーフピンまでの遅延を計算し、スキュー調整をボトムアップに行うステップを更に含むことを特徴とする、付記４記載のクロック分配方法。
（付記６）  前記スキュー調整をボトムアップに行うステップは、該クロックツリーをもとにスリューを設定することを特徴とする、付記５記載のクロック分配方法。
（付記７）  前記クロックツリーをボトムアップに生成するステップは、
シンクセルの集合の中心から順に探して得られた、各クラスタ内のシンクセル数分の駆動セルを配置できるメッシュ領域に該シンクセル分の駆動セルを配置し、
駆動セル・シンクセル間と、駆動セル間を最短経路の配線で結ぶことを特徴とする、付記４記載のクロック分配方法。
（付記８）  前記クロックツリーをボトムアップに生成するステップは、駆動セルを１つのグループにグループ化し、このグループをクロックソースに接続することを特徴とする、付記７記載のクロック分配方法。
（付記９）  前記シンクセルまでの遅延差が一定値以下である駆動セルのみを前記グループ化の対象とすることを特徴とする、付記８記載のクロック分配方法。
（付記１０）  前記メッシュ領域内に駆動セルを配置するステップは、１つのメッシュ領域内のシンクセルをまとめて駆動するローカル駆動バッファを配置することを特徴とする、付記４記載のクロック分配方法。
（付記１１）  半導体装置を構成する素子の配置座標を決定する自動配置処理中にツリー構造の回路を生成してクロックを分配するクロック分配方法であって、
複数の駆動セルをまとめた１入力多出力の駆動セルを作成するステップと、
配線が分岐した直後に、分岐先毎に１個の駆動セルを近傍にまとめて配置されると共に、前記１入力多出力の駆動セルを用いたクロックツリーをボトムアップに生成するステップと、
各駆動セル・シンクセル間に対して、駆動セルの挿入、駆動セルのリサイズ、配線長の変更のうち少なくとも１つの操作を行い、分岐点から次段のシンクセルまでのスキュー調整を行うステップとを含むことを特徴とする、クロック分配方法。
（付記１２）  クロックソースからリーフピンまでの遅延を計算し、スキュー調整をボトムアップに行うステップを更に含むことを特徴とする、付記１１記載のクロック分配方法。
（付記１３）  前記スキュー調整をボトムアップに行うステップは、該クロックツリーをもとにスリューを設定することを特徴とする、付記１２記載のクロック分配方法。
（付記１４）  付記４〜１４のいずれか１項記載のクロック分配方法により、コンピュータに半導体装置を構成する素子の配置座標を決定する自動配置処理中にツリー構造の回路を生成してクロックを分配させることを特徴とする、プログラム。
【００５１】
以上、本発明を実施例により説明したが、本発明は上記実施例に限定されるものではなく、本発明の範囲内で種々の変形及び改良が可能であることは、言うまでもない。
【図面の簡単な説明】
【００５２】
【図１】従来のクロックツリー生成法を説明する図である。
【図２】本発明におけるクロックツリー生成方法を説明する図である。
【図３】ツリー型構造の回路を生成する処理を説明するフローチャートである。
【図４】ＬＳＩのレイアウト領域を説明する図である。
【図５】レイアウト領域のメッシュ領域への分割を説明する図である。
【図６】メッシュ領域内に配置される駆動バッファを説明する図である。
【図７】クロックツリーの生成を説明する図である。
【図８】クロックスキューの調整を説明する図である。
【図９】クロックスキューの調整のために挿入される駆動バッファを説明する図である。
【図１０】複数の駆動バッファのセル化を説明する図である。
【図１１】ローカル部分への駆動バッファの挿入を説明する図である。
【図１２】ローカル部分へ挿入される駆動バッファの配置を説明する図である。
【図１３】グループ化の際にスケジュールを考慮する処理を説明する図である。
【図１４】従来のクロックツリー生成方法により駆動バッファを挿入した場合の影響を説明する図である。
【図１５】クロックツリー生成方法の実施例により駆動バッファを挿入した場合の影響を説明する図である。
【符号の説明】
【００５３】
１，１１，１１１      シンクセル
２，１２，１２Ａ，１２Ｌ，１２Ｉ，１１２      駆動セル
３，１３，１１３，Ｐ      配線
１９      分岐点
Ｍ      メッシュ領域
ｓ１〜ｓ６，Ｓ１１〜Ｓ１７      処理ステップ
【図１】
2006054348.tif 000003
【図２】
2006054348.tif 000004
【図３】
2006054348.tif 000005
【図４】
2006054348.tif 000006
【図５】
2006054348.tif 000007
【図６】
2006054348.tif 000008
【図７】
2006054348.tif 000009
【図８】
2006054348.tif 000010
【図９】
2006054348.tif 000011
【図１０】
2006054348.tif 000012
【図１１】
2006054348.tif 000013
【図１２】
2006054348.tif 000014
【図１３】
2006054348.tif 000015
【図１４】
2006054348.tif 000016
【図１５】
2006054348.tif 000017