(57)【要約】【課題】クロック信号などの共通信号の分配に費やされる電力を削減でき、共通信号のタイミングばらつきを抑制できる集積回路装置とそのレイアウト設計方法を提供する。【解決手段】ＩＣＧ１の回路配置領域Ａ１が、ほぼ同数のＩＣＧ１を含む複数の領域に区分される。そして、区分された各領域に一つずつＣＴＢ５（クロックツリーの末端のＣＴＢ）が配置される。各区分領域に配置されたＣＴＢ５は、配置された領域内に含まれるＩＣＧ１に対して共通のクロック信号をそれぞれ供給する。このように、クロックツリーの末端におけるＣＴＢ（ＣＴＢ５）のファンアウトをほぼ等しくして、その駆動負荷の大きさが近似するようにしているため、一般的なＥＤＡツールによるクロックツリー合成に比べてＣＴＢの数を大幅に減らしても、ＦＦにおけるクロック信号のスキューを微小に抑えることができる。【選択図】図１
2009152451.tif 000002
【特許請求の範囲】
【請求項１】
第１の領域に配置された複数の第１回路要素と、
ツリー状に接続された複数の駆動回路を有し、当該ツリー構造の起点に入力される共通信号を上記複数の第１回路要素のそれぞれに同一段数の駆動回路を介して分配する信号分配回路
を備え、
上記ツリー構造の少なくとも一部の駆動回路は、ほぼ同じ数の上記第１回路要素が含まれるように上記第１の領域を区分する複数の第２の領域のそれぞれに一ずつ配置されており、配置された第２の領域内に含まれる上記第１回路要素に対して上記共通信号を供給する、
集積回路装置。
【請求項２】
上記複数の第２の領域のそれぞれに一つずつ配置される上記駆動回路は、上記ツリー構造の末端の駆動回路である、
請求項１に記載の集積回路装置。
【請求項３】
上記第２の領域は、上記第１の領域内において縦方向又は横方向に延びる区分線により上位区分を複数の下位区分に分割する細分化であって、当該複数の下位区分がほぼ同数の上記第１回路要素を含むように上位区分を分割する細分化を繰り返すことにより得られる領域である、
請求項１又は２に記載の集積回路装置。
【請求項４】
上記駆動回路は、上記第２の領域の縁部に配置される、
請求項３に記載の集積回路装置。
【請求項５】
上記複数の駆動回路は、二以上の上記区分線が交わる交点に隣接して配置される、
請求項４に記載の集積回路装置。
【請求項６】
上記ツリー構造の少なくとも一つの駆動回路は、上記細分化における下位の区分線と当該区分線より１つ上位の区分線との交点に隣接して配置される、
請求項５に記載の集積回路装置。
【請求項７】
上記複数の第２の領域のそれぞれに一つずつ配置される上記駆動回路は、上記細分化における最下位の区分線と当該区分線より１つ上位の区分線との交点に隣接して配置される、
請求項６に記載の集積回路装置。
【請求項８】
上記複数の駆動回路は、上記ツリー構造における次段の駆動回路に隣接した上記交点を有する区分線と当該区分線より上位の区分線との交点に隣接して配置される、
請求項６又は７に記載の集積回路装置。
【請求項９】
上記複数の駆動回路を接続する配線は、上記第２の領域の縁部に沿って形成される、
請求項３乃至８の何れか一項に記載の集積回路装置。
【請求項１０】
上記複数の第１回路要素から出力される上記共通信号を伝搬する複数の第２回路要素と、
上記複数の第１回路要素から同一段数の上記第２回路要素を介して上記共通信号を最終的に入力する複数の第３回路要素
を有する、
請求項1乃至9の何れか一項に記載の集積回路装置。
【請求項１１】
上記第１回路要素及び上記第２回路要素の少なくとも一部は、後段の回路要素群を含む最小の四角形の領域において、上位段に位置する上記ツリー構造の末端の駆動回路から最も近い辺部に配置される、
請求項１０に記載の集積回路装置。
【請求項１２】
第１の領域に配置された複数の第１回路要素と、
ツリー状に接続された複数の駆動回路を有し、当該ツリー構造の起点に入力される共通信号を上記複数の第１回路要素のそれぞれに同一段数の駆動回路を介して分配する信号分配回路
を備えた集積回路装置のレイアウトを設計するレイアウト設計方法であって、
ほぼ同じ数の上記第１回路要素が含まれるように上記第１の領域を複数の第２の領域に区分する第１のステップと、
上記ツリー構造の少なくとも一部の駆動回路を、上記複数の第２の領域のそれぞれに一ずつ配置する第２のステップ
を有するレイアウト設計方法。
【請求項１３】
上記第２のステップにおいて上記複数の第２の領域のそれぞれに一つずつ配置する上記駆動回路は、上記ツリー構造の末端の駆動回路である、
請求項１２に記載のレイアウト設計方法。
【請求項１４】
上記集積回路装置は、
上記複数の第１回路要素から出力される上記共通信号を伝搬する複数の第２回路要素と、
上記第１回路要素から出力される上記共通信号を最終的に入力する第３回路要素と
を含んでおり、
上記複数の第１回路要素から上記複数の上記第３回路要素へ上記共通信号を伝搬する全ての経路に同一段数の上記第２回路要素が介在するよう、少なくとも一部の経路に上記第１回路要素又は上記第２回路要素として上記駆動回路を挿入する第３のステップを有する、
請求項１２又は１３に記載のレイアウト設計方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えばクロックツリーなど、多数の回路要素に共通の信号を分配する回路を備えた集積回路装置とそのレイアウト設計方法に関するものである。
【背景技術】
【０００２】
一般に同期回路では、多数のフリップフロップにタイミングの揃った共通のクロック信号を分配する目的でクロックツリーが用いられる。クロックツリーの構造としては、Ｈツリー構造やメッシュ構造などが広く知られている（例えば非特許文献１を参照）。
Ｈツリー構造では、クロックツリーの各段を接続する配線がＨ型の対称な形状になるようにクロックバッファが対称的に配置される。これにより、ツリーの起点からフリップフロップまでの配線長がほぼ等しくなるため、クロック信号のスキューが小さくなる。
メッシュ構造では、半導体チップ上に対称なメッシュ状の配線が形成される。クロックツリー末端のクロックバッファの入力は、このメッシュ配線の交点の一部に対称的に接続される。クロックツリーの末端より一段前のクロックバッファの出力は、クロックツリー末端のクロックバッファの各入力に対して対称的になるように、メッシュ配線の他の交点に接続される。このような構造にすることで、ツリーの起点からフリップフロップまでの配線長がほぼ等しくなるとともに、クロックバッファの駆動能力のばらつきが均等化されるため、スキューがより小さくなる。
【０００３】
上述したＨツリー構造やメッシュ構造は、主として高速な回路において採用される。大規模なＬＳＩでは、ＥＤＡツールによって自動的にクロックツリーを合成するＣＴＳ（clock tree synthesis）と呼ばれる手法が一般に採用されている。
【非特許文献１】Eby G. Friedman、「Clock Distribution Networks in Synchronous Digital IntegratedCircuits」、「PROCEEDINGS OF THE IEEE」、（米国）、IEEE、2001年5月、VOL.89、NO.5、p.665-692
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、基板上におけるフリップフロップのレイアウトは本質的に不規則であるため、特に大規模なＬＳＩにおいては、Ｈツリー構造やメッシュ構造などの対称構造を持ったクロックツリーを適用するのが困難である。また予めクロックツリーの配置を固定してしまう手法では、フリップフロップの配置に大きな制約が加わるため、レイアウト設計の自動化が困難になり、大規模なＬＳＩの設計においてはレイアウトに多大な時間を要するという不利益がある。
【０００５】
他方、ＥＤＡツールによって自動的にクロックツリーを合成する手法では、スキューや負荷容量などの条件を満たすためにバッファを多数挿入する傾向がある。そのため、消費電力が大きくなり、クロック信号の遅延が増すという不利益がある。また、バッファの特性には同一チップ上でもばらつきが生じるため、バッファが増えるほどクロック信号のタイミングのばらつきが増すという不利益がある。
【０００６】
本発明はかかる事情に鑑みてなされたものであり、その目的は、クロック信号などの共通信号の分配に費やされる電力を削減でき、共通信号のタイミングばらつきを抑制できる集積回路装置を提供すること、並びに、そのような集積回路装置のレイアウトを設計するレイアウト設計方法を提供することにある。
【課題を解決するための手段】
【０００７】
本発明の第１の観点に係る集積回路装置は、第１の領域に配置された複数の第１回路要素と、ツリー状に接続された複数の駆動回路を有し、当該ツリー構造の起点に入力される共通信号を上記複数の第１回路要素のそれぞれに同一段数の駆動回路を介して分配する信号分配回路とを備える。上記ツリー構造の少なくとも一部の駆動回路は、ほぼ同じ数の上記第１回路要素が含まれるように上記第１の領域を区分する複数の第２の領域のそれぞれに一ずつ配置されており、配置された第２の領域内に含まれる上記第１回路要素に対して上記共通信号を供給する。
上記複数の第２の領域のそれぞれに一つずつ配置される上記駆動回路は、例えば、上記ツリー構造の末端の駆動回路である。
【０００８】
好適に、上記第２の領域は、上記第１の領域内において縦方向又は横方向に延びる区分線により上位区分を複数の下位区分に分割する細分化であって、当該複数の下位区分がほぼ同数の上記第１回路要素を含むように上位区分を分割する細分化を繰り返すことにより得られる領域である。
【０００９】
また好適に、上記駆動回路は、上記第２の領域の縁部に配置される。
この場合、上記複数の駆動回路は、二以上の上記区分線が交わる交点に隣接して配置されてもよい。
上記ツリー構造の少なくとも一つの駆動回路は、上記細分化における最下位の区分線と当該区分線より１つ上位の区分線との交点に隣接して配置されてもよい。例えば、上記複数の第２の領域のそれぞれに一つずつ配置される上記駆動回路は、上記細分化における最下位の区分線と当該区分線より１つ上位の区分線との交点に隣接して配置される。
上記複数の駆動回路は、上記ツリー構造における次段の駆動回路に隣接した上記交点を有する区分線と当該区分線より上位の区分線との交点に隣接して配置されてもよい。
【００１０】
好適に、上記複数の駆動回路を接続する配線は、上記第２の領域の縁部に沿って形成される。
【００１１】
上記集積回路装置は、上記複数の第１回路要素から出力される上記共通信号を伝搬する複数の第２回路要素と、上記複数の第１回路要素から同一段数の上記第２回路要素を介して上記共通信号を最終的に入力する複数の第３回路要素とを有してよい。
この場合、上記第１回路要素及び上記第２回路要素の少なくとも一部は、後段の回路要素群を含む最小の四角形の領域において、上位段に位置する上記ツリー構造の末端の駆動回路から最も近い辺部に配置されてもよい。
【００１２】
本発明の第２の観点は、第１の領域に配置された複数の第１回路要素と、ツリー状に接続された複数の駆動回路を有し、当該ツリー構造の起点に入力される共通信号を上記複数の第１回路要素のそれぞれに同一段数の駆動回路を介して分配する信号分配回路とを備えた集積回路装置のレイアウトを設計するレイアウト設計方法に関する。当該レイアウト設計方法は、ほぼ同じ数の上記第１回路要素が含まれるように上記第１の領域を複数の第２の領域に区分する第１のステップと、上記ツリー構造の少なくとも一部の駆動回路を、上記複数の第２の領域のそれぞれに一ずつ配置する第２のステップと、上記第２の領域に配置された上記駆動回路とを有する。
上記第２のステップにおいて上記複数の第２の領域のそれぞれに一つずつ配置する上記駆動回路は、例えば、上記ツリー構造の末端の駆動回路である。
【００１３】
上記集積回路装置は、上記複数の第１回路要素から出力される上記共通信号を伝搬する複数の第２回路要素と、上記第１回路要素から出力される上記共通信号を最終的に入力する第３回路要素とを含んでいてもよい。
この場合、上記レイアウト設計方法は、上記複数の第１回路要素から上記複数の上記第３回路要素へ上記共通信号を伝搬する全ての経路に同一段数の上記第２回路要素が介在するよう、少なくとも一部の経路に上記第１回路要素又は上記第２回路要素として上記駆動回路を挿入する第３のステップを有してよい。
【発明の効果】
【００１４】
本発明によれば、共通信号の分配に用いられる駆動回路の数を抑えることで、消費電力を削減できるとともに共通信号のタイミングばらつきを抑制できる。
【発明を実施するための最良の形態】
【００１５】
以下、図面を参照して、本発明に係る集積回路装置とそのレイアウト設計方法を説明する。
【００１６】
図１は、本発明の実施形態に係る集積回路装置のレイアウトの一例を図解した図である。
本実施形態に係る集積回路装置は、フリップフロップや論理ゲートなどの回路要素とそれらを電気的に接続する配線を半導体チップ上に形成したものである。図１のレイアウト図では、クロック信号ＣＫに同期して動作する一群の回路要素のうち、クロック信号ＣＫの分配に関わる回路要素と配線のみを示している。
【００１７】
図２は、クロック信号ＣＫの分配に関わる回路の一例を示す図である。
本実施形態に係る集積回路装置は、例えば図２に示すように、共通のクロック信号ＣＫに基づいて動作する回路モジュールＭ１，Ｍ２，…を有する。各回路モジュールは、フリップフロップ（以下、「ＦＦ」（flip flop）と記す場合がある）や論理ゲートなどの回路要素により構成される。各ＦＦには、クロックゲートを介してクロック信号が入力される。クロックゲート（以下、「ＩＣＧ」（integrated clock gate）と記す場合がある）は、ＦＦへのクロック信号の入力を制御する論理ゲートである。図２の例において、ＩＣＧの段数は一律に２段に設定されている。すなわち、回路モジュールＭ１，Ｍ２…の各ＦＦは、何れも２段のＩＣＧを介してクロック信号を入力する。以下では、第１段目のクロックゲートを「ＩＣＧ１」、第２段目のクロックゲートを「ＩＣＧ２」と記す。後述するように、これらのＩＣＧには、段数を２段に揃えるために挿入されるバッファも含まれる。
なお、ＩＣＧ１は、本発明における第１回路要素の一実施形態である。
ＩＣＧ２は、本発明における第２回路要素の一実施形態である。
ＦＦは、本発明における第３回路要素の一実施形態である。
【００１８】
クロックツリーは、回路モジュールＭ１，Ｍ２…の各ＦＦに対してタイミングの揃ったクロック信号を分配するための回路であり、ツリー状に接続された複数のクロックバッファ（以下、「ＣＴＢ」（clock tree buffer）と記す場合がある）を有する。図２の例において、クロックツリーの起点から末端までのＣＴＢの段数は一律に５段に揃えられている。以下では、第１段目〜第５段目のＣＴＢをそれぞれ「ＣＴＢ１」〜「ＣＴＢ５」と記す。
ＣＴＢ３，ＣＴＢ４，ＣＴＢ５は、クロックツリーにおいてツリー状に分岐する部分のＣＴＢであり、後述するように回路配置領域の区分線の交点に配置される。本実施形態では、これらのＣＴＢを特に「ストラクチャード・バッファ（structured buffer）」と呼ぶ。
他方、ＣＴＢ１，ＣＴＢ２は、クロックツリーにおいて配線が分岐しない部分に挿入されるＣＴＢであり、主として配線の容量負荷を駆動するリピータとしての役割を持つ。
なお、図２に示すクロックツリーは、本発明における信号分配回路の一例である。
ＣＴＢ３，ＣＴＢ４，ＣＴＢ５は、本発明における駆動回路の一例である。
【００１９】
図３は、本発明の実施形態に係る集積回路装置の設計方法の一例を示すフローチャートである。
この図３に示すフローチャートの流れに沿って、集積回路装置の構造と設計方法を説明する。
【００２０】
＜論理ゲート、ＦＦのレイアウト（ステップＳＴ１）＞
ＣＴＢ及びＩＣＧのレイアウト設計に先立って、主たるロジック信号系の回路要素（ＦＦ，論理ゲート等）のレイアウトが設計される。
【００２１】
＜ＩＣＧの段数調節（ステップＳＴ２）＞
ロジック信号系回路のレイアウトが決まった後、ＩＣＧのレイアウト設計が行われる。
本実施形態においては、ＩＣＧの段数を２段にするため、ＩＣＧのレイアウト設計に先立ってＩＣＧの段数の調節が行われる。すなわち、クロックツリーとＦＦの間に介在するＩＣＧの段数が一律に２段となるよう、段数が不足している経路にバッファが補われる。
【００２２】
図４は、ＩＣＧの段数調節方法の一例を説明するための図である。
図４において、「Ｕ１」はＣＴＢ５、「Ｕ２」，「Ｕ３」はＩＣＧ１、「Ｕ４」はＩＣＧ２、「Ｕ５」〜「Ｕ８」はＦＦを示す。
段数調節を行う前の状態（図４（Ａ））において、クロックバッファＵ１の次段にはクロックゲートＵ２，Ｕ３及びフリップフロップＵ８が接続され、クロックゲートＵ２の次段にはフリップフロップＵ５が接続され、クロックゲートＵ３の次段にはクロックゲートＵ４とフリップフロップＵ６が接続され、クロックゲートＵ４の次段にはフリップフロップＵ７が接続されている。
【００２３】
この段数調節方法では、まず、ＦＦとＩＣＧの両方を駆動しているＣＴＢ若しくはＩＣＧが探索される。図４（Ａ）の例において、クロックゲートＵ３とクロックバッファＵ１がこれに該当する。
該当するＣＴＢ若しくはＩＣＧが探索されると、次に、ＦＦとＩＣＧの両方を駆動することがないよう、ＦＦの駆動経路上にＩＣＧの代わりとしてバッファが挿入される。すなわち、図４（Ｂ）の例では、クロックゲートＵ３とフリップフロップＵ６を接続する経路にバッファＢＵＦ１が挿入され、クロックバッファＵ１とフリップフロップＵ８を接続する経路にバッファＢＵＦ２が挿入される。
ＦＦとＩＣＧの両方を駆動するＣＴＢ若しくはＩＣＧが存在しなくなったら、次に、全てのＦＦのクロック伝播経路に設けられたＩＣＧの段数が調査される。このとき、上述のバッファ（ＢＵＦ１，ＢＵＦ２）もＩＣＧとして数えられる。そして、段数が２段に満たない経路が存在する場合は、その経路にバッファが挿入され、段数が２段にされる。図４（Ｃ）の例では、クロックゲートＵ２とフリップフロップＵ５を接続する経路にバッファＢＵＦ３が挿入され、バッファＢＵＦ２とフリップフロップＵ８を接続する経路にバッファＢＵＦ４が挿入される。
【００２４】
なお、上述のＩＣＧ段数調節はステップＳＴ１のレイアウト設計に影響されないので、この段数調節はステップＳＴ１より先に行われてもよい。
【００２５】
＜ＩＣＧの配置、配線（ステップＳＴ３）＞
クロックゲートの段数調節が済んだら、ＩＣＧの配置、配線が行われる。ＩＣＧのレイアウトは、例えば、ＣＴＢのレイアウトの前と後に行われる。ＣＴＢのレイアウト前に行われる本ステップ（ＳＴ３）では、出力側セル（ファンアウト）の分布の中心付近にＩＣＧが配置される。他方、ＣＴＢのレイアウト後に行われる後述のステップＳＴ７では、入力側セル（ファンイン）に近づけるようにＩＣＧが配置される。
【００２６】
図５は、ＩＣＧの配置の一例を図解した図である。
図５において「Ｕ１０」は、クロックゲート（ＩＣＧ）を示す。「ＦＯ１」〜「ＦＯ４」は、クロックゲートＵ１０の後段の回路要素（ＦＦ若しくはＩＣＧ）を示す。「ＦＩ１」は、クロックゲートＵ１０の上位段に位置するＣＴＢ５（クロックツリーの末端のクロックバッファ）を示す。なお、ここで述べるクロックゲート（ＩＣＧ）には、ステップＳＴ２で挿入されたバッファも含まれる。
【００２７】
本ステップでは、図５（Ａ）に示すように、回路要素ＦＯ１〜ＦＯ４の分布の中心にクロックゲートＵ１０が配置される。この分布の中心は、例えば、回路要素ＦＯ１〜ＦＯ４の重心に設定される。すなわち、各回路要素の位置をＸＹ座標系で表している場合、クロックゲートＵ１０のＸ座標は、回路要素ＦＯ１〜ＦＯ４のＸ座標の平均値に設定され、クロックゲートＵ１０のＹ座標は、回路要素ＦＯ１〜ＦＯ４のＹ座標の平均値に設定される。
【００２８】
ＩＣＧの配置は、例えば、最下位段のクロックゲート（ＩＣＧ２）からボトムアップ式に決定される。すなわち、先ずＩＣＧ２が、その後段に接続されるＦＦの分布の中心に配置され、次いでＩＣＧ１が、その後段に接続されるＩＣＧ２の分布の中心に配置される。
【００２９】
＜ＩＣＧの複製／統合（ステップＳＴ４）＞
ＩＣＧの配置、配線に続いて、ＩＣＧの複製が行われる。このステップでは、各ＩＣＧの負荷（駆動する回路素子と配線の負荷容量等）が計算され、その計算結果が所定の上限値を超える場合、負荷となる回路要素の配置を保ったまま、これらを駆動するＩＣＧの数が増やされる。
【００３０】
図６は、ＩＣＧの複製方法の一例を図解した図である。
図６において、「Ｕ２０」〜「Ｕ２５」は、クロックゲート（ＩＣＧ）を示す。「ＦＯ５」〜「ＦＯ１６」は、クロックゲートＵ２５〜Ｕ２５の後段の回路要素（ＦＦ若しくはＩＣＧ）を示す。なお、ここで述べるクロックゲート（ＩＣＧ）には、ステップＳＴ２で挿入されたバッファも含まれる。
図６に示す複製方法では、ＩＣＧの後段の回路要素（ＦＦ若しくはＩＣＧ）の分布状態に応じて、これらの回路要素がグループ分けされる。まず、ＩＣＧの後段の回路要素を全て含んだ最小の四角形領域が定義され、この四角形領域が横方向に延びているか縦方向に延びているかが判定される。横方向に延びている場合、それぞれ同じ数（若しくは近似する数）の回路要素が含まれるように四角形領域を横方向に分割することで、ＩＣＧの後段の回路要素が左右二つのグループに分けられる（図６（Ａ））。一方、定義した四角形領域が縦方向に延びている場合は、それぞれ同じ数（若しくは近似する数）の回路要素を含むように四角形領域を縦方向に分割することで、回路要素が上下二つのグループに分けられる（図６（Ｂ））。
このグループ分けをした後、ステップＳＴ３と同様な方法で、各グループを駆動するＩＣＧの配置が決定される。すなわち、グループに属する回路要素の分布の中心にＩＣＧが配置される。
【００３１】
図６（Ａ）の例において、クロックゲートＵ２０の後段には６つの回路要素ＦＯ５〜ＦＯ１０が接続されており、それらを含む最小の四角形の領域ＡＦ２は横方向に延びている。この場合、領域ＡＦ２は、それぞれ３つの回路要素を含むように横方向に分割される。この分割により、６つの回路要素ＦＯ５〜ＦＯ１０は左のグループ（ＦＯ５，ＦＯ６，ＦＯ７）と右のグループ（ＦＯ８，ＦＯ９，ＦＯ１０）に分けられる。
グループ分けが行われた後、左グループと右グループのそれぞれについて分布の中心が決定され、その中心にクロックゲートＵ２１，Ｕ２２が配置される。クロックゲートＵ２１は左グループの回路要素（ＦＯ５，ＦＯ６，ＦＯ７）を駆動し、クロックゲートＵ２２は右グループの回路要素（ＦＯ８，ＦＯ９，ＦＯ１０）を駆動する。
また、図６（Ｂ）の例において、クロックゲートＵ２３の後段には６つの回路要素ＦＯ１１〜ＦＯ１６が接続されており、それらを含む最小の四角形の領域ＡＦ５は縦方向に延びている。この場合、領域ＡＦ５は、それぞれ３つの回路要素を含むように縦方向に分割される。この分割により、６つの回路要素ＦＯ１１〜ＦＯ１６は上のグループ（ＦＯ１１，ＦＯ１４，ＦＯ１５）と下のグループ（ＦＯ１２，ＦＯ１３，ＦＯ１６）に分けられる。
グループ分けが行われた後、上グループと下グループのそれぞれについて分布の中心が決定され、その中心にクロックゲートＵ２４，Ｕ２５が配置される。クロックゲートＵ２４は上グループの回路要素（ＦＯ１１，ＦＯ１４，ＦＯ１５）を駆動し、クロックゲートＵ２５は下グループの回路要素（ＦＯ１２，ＦＯ１３，ＦＯ１６）を駆動する。
【００３２】
ＩＣＧの負荷が所定の上限値より大きい場合、上述した複製を行うことでＩＣＧの数が増やされるが、この逆にＩＣＧの負荷が小さい場合は、ＩＣＧを統合することでその個数が削減される。
例えば、上位段に共通の回路要素を持つ２つのＩＣＧが隣接した領域に分布する回路要素群をそれぞれ駆動しており、かつ、その２つのＩＣＧの負荷を合計した値が所定の下限値より小さい場合、当該２つのＩＣＧは１つのＩＣＧに統合される。当該２つのＩＣＧによって駆動されていた２つの回路要素群は、統合された１つのＩＣＧによって駆動される。統合されたＩＣＧの配置は、その負荷となる回路要素群の分布に基づいて、ステップＳＴ３と同様の方法により決定される。
【００３３】
ＩＣＧの複製と統合は、例えば、最下位段のクロックゲート（ＩＣＧ２）からボトムアップ式に行われる。
【００３４】
＜回路配置領域の細分化（ステップＳＴ５）＞
ステップＳＴ２〜ＳＴ４においてＩＣＧのレイアウトが決まると、次にクロックツリーを構成するＣＴＢのレイアウトが設計される。
本実施形態に係る集積回路装置おいて、ＣＴＢはＩＣＧ１（第１段目のクロックゲート）の分布に基づいて配置される。まず、ＩＣＧ１の回路配置領域Ａ１が定義され、この回路配置領域Ａ１がほぼ同じ数のＩＣＧ１を含む複数の領域に区分される。そして、区分された各領域に一つずつＣＴＢ５（ツリー構造の末端のクロックバッファ）が配置される。ＣＴＢ５は、配置された領域内に含まれる各ＩＣＧ１に対してクロック信号を供給する。
【００３５】
図７は、回路配置領域Ａ１から細分化された１６個の領域Ａ４０１〜Ａ４１６と、この領域の区分に基づいて決定されたＣＴＢの配置の一例を図解した図である。
回路配置領域Ａ１は、例えば、その内部に全てのＩＣＧ１が含まれる最小の四角形の領域として定義される。四角形の辺の方向（縦方向と横方向）は任意に定義可能であり、例えば半導体チップ上において配線を形成可能な方向に定義される。領域Ａ４０１〜Ａ４１６は、その各々に含まれるＩＣＧ１の数が互いにほぼ等しくなる（すなわち全ＩＣＧ１の数の１６分の１とほぼ等しくなる）ように、回路配置領域Ａ１を１６分割した領域として定義される。図７に示すように、領域Ａ４０１〜Ａ４１６にはそれぞれ一つずつＣＴＢ５が配置されており、各領域内のＩＣＧ１は、その領域に配置されたＣＴＢ５によって駆動される。
なお、領域Ａ１は、本発明における第１の領域の一実施形態である。
領域Ａ４０１〜Ａ４１６は、本発明における第２の領域の一実施形態である。
【００３６】
図８は、回路配置領域Ａ１の細分化方法の一例を図解した図である。
この細分化方法においては、縦方向又は横方向に延びる区分線により上位区分を２つの下位区分に分割する細分化が段階的に繰り返される。図８の例では、上位区分を２つの下位区分に分割する細分化が４回繰り返されることで、回路配置領域Ａ１は１６個の領域Ａ４０１〜Ａ４１６に区分される。細分化の各段階において、２つの下位区分がほぼ同数のＩＣＧ１を含むように上位区分が分割されるため、最終的に得られる１６個の領域Ａ４０１〜Ａ４１６にはほぼ同じ数のＩＣＧ１が含まれる。
【００３７】
まず第１段階の細分化（図８（Ａ））では、回路配置領域Ａ１が、縦方向に延びる区分線Ｌ１１によって横方向に二分割される。これにより、領域Ａ１は領域Ａ１０１とＡ１０２に分割される。区分線Ｌ１１は、領域Ａ１０１とＡ１０２にほぼ同じ数のＩＣＧ１が含まれるように設定される。
第２段階の細分化（図８（Ｂ））では、第１段階の細分化により得られた２つの領域Ａ１０１，Ａ１０２が、横方向に延びる区分線Ｌ２１，Ｌ２２によってそれぞれ縦方向にニ分割される。これにより、領域Ａ１０１は領域Ａ２０１，Ａ２０２に分割され、領域Ａ１０２は領域Ａ２０３，Ａ２０４に分割される。区分線Ｌ２１，Ｌ２２は、それぞれ、領域Ａ２０１とＡ２０２、領域Ａ２０３とＡ２０４にほぼ等しい数のＩＣＧ１が含まれるように設定される。
第３段階の細分化（図８（Ｃ））では、第２段階の細分化により得られた４つの領域Ａ２０１〜Ａ２０４が、縦方向に延びる区分線Ｌ３１〜Ｌ３４によってそれぞれ横方向にニ分割される。これにより、領域Ａ２０１は領域Ａ３０１，Ａ３０２に分割され、領域Ａ２０２は領域Ａ３０３，Ａ３０４に分割され、領域Ａ２０３は領域Ａ３０５，Ａ３０６に分割され、領域Ａ２０４は領域Ａ３０７，Ａ３０８に分割される。区分線Ｌ３１，Ｌ３２，Ｌ３３，Ｌ３４は、それぞれ、領域Ａ３０１とＡ３０２、領域Ａ３０３とＡ３０４、領域Ａ３０５とＡ３０６、領域Ａ３０７とＡ３０８にほぼ等しい数のＩＣＧ１が含まれるように設定される。
第４段階の細分化（図８（Ｄ））では、第３段階の細分化により得られた８つの領域Ａ３０１〜Ａ３０８が、横方向に延びる区分線Ｌ４１〜Ｌ４８によってそれぞれ縦方向にニ分割される。これにより、領域Ａ３０１は領域Ａ４０１，Ａ４０２に分割され、領域Ａ３０２は領域Ａ４０３，Ａ４０４に分割され、領域Ａ３０３は領域Ａ４０５，Ａ４０６に分割され、領域Ａ３０４は領域Ａ４０７，Ａ４０８に分割され、領域Ａ３０５は領域Ａ４０９，Ａ４１０に分割され、領域Ａ３０６は領域Ａ４１１，Ａ４１２に分割され、領域Ａ３０７は領域Ａ４１３，Ａ４１４に分割され、領域Ａ３０８は領域Ａ４１５，Ａ４１６に分割される。区分線Ｌ４１，Ｌ４２，Ｌ４３，Ｌ４４，Ｌ４５，Ｌ４６，Ｌ４７，Ｌ４８は、それぞれ、領域Ａ４０１とＡ４０２、領域Ａ４０３とＡ４０４、領域Ａ４０５とＡ４０６、領域Ａ４０７とＡ４０８、領域Ａ４０９とＡ４１０、領域Ａ４１１とＡ４１２、領域Ａ４１３とＡ４１４、領域Ａ４１５とＡ４１６にほぼ等しい数のＩＣＧ１が含まれるように設定される。
【００３８】
＜クロックバッファのレイアウト（ステップＳＴ６）＞
回路配置領域Ａ１が細分化されると、次に、この領域の区分に基づいて、クロックツリーを構成する各ＣＴＢの配置と配線が決定される。
ストラクチャードバッファとしてのＣＴＢ（ＣＴＢ３，ＣＴＢ４，ＣＴＢ５）は、基本的に、ステップＳＴ５で区分された領域（Ａ４０１〜Ａ４１６）の縁部に配置される。ＣＴＢが上記の区分領域の縁部に配置されることで、ＣＴＢを接続する配線を領域の縁部に沿って形成することが可能になる。区分領域の縁部に配線を形成すれば、区分領域内部の回路要素に接続される他のクロック信号系配線との交錯が避けられる。これにより、他のクロック信号系配線を避けてＣＴＢの配線を迂回させる必要がなくなるため、ＣＴＢの配線を直線的に形成し易くなり、負荷容量の増大が抑えられる。また、ＣＴＢの配線を別のレイヤに渡す頻度も減らせるので、この点からも負荷容量の増大が抑制されるとともに、別レイヤに渡すための接続孔（ビヤ）の数を削減でき、ＲＣ遅延の抑制にもつながる。
【００３９】
また、ストラクチャードバッファとしてのＣＴＢ（ＣＴＢ３，ＣＴＢ４，ＣＴＢ５）は、好ましくは、２以上の区分線が交わる交点（以下、区分線の交点を単に「交点」と記す場合がある）に隣接して配置される。ストラクチャードバッファはクロックツリーの分岐点にあるため、これを区分線の交点に隣接して配置することにより、分岐する複数のストラクチャードバッファの共通の配線を区分領域の辺に沿って直線状に形成し易くなり、配線距離が短くなる。
【００４０】
更に本実施形態において、ツリー構造の末端に位置するＣＴＢ５は、ステップＳＴ５において説明した細分化における最下位の区分線（Ｌ４１〜Ｌ４８）とその１つ上位の区分線（Ｌ３１〜Ｌ３４）との交点に隣接して配置される。そして、ＣＴＢ５の上位段に位置するＣＴＢ３及びＣＴＢ４は、ツリー構造における次段のＣＴＢに隣接した交点を有する区分線と当該区分線より上位の区分線との交点に隣接して配置される。つまり、ツリー構造における上位段のＣＴＢになるほど、細分化における上位の区分線の交点に配置される。これにより、ツリー構造の上位になるにつれて、ＣＴＢが回路配置領域Ａ１の中央部に集約されるため、ＣＴＢの配線がコンパクトになる。
【００４１】
図９は、ＣＴＢの配置方法の一例を図解した図である。
まず、ステップＳＴ５の細分化における最下位の区分線（Ｌ４１〜Ｌ４８）とその１つ上位の区分線（Ｌ３１〜Ｌ３４）との交点（Ｐ４１〜Ｐ４８）が特定される。図９（Ａ）の例において、区分線Ｌ３１とＬ４１，Ｌ４２はそれぞれ交点Ｐ４１，Ｐ４２において交わり、区分線Ｌ３２とＬ４３，Ｌ４４はそれぞれ交点Ｐ４３，Ｐ４４において交わり、区分線Ｌ３３とＬ４５，Ｌ４６はそれぞれ交点Ｐ４５，Ｐ４６において交わり、区分線Ｌ３４とＬ４７，Ｌ４８はそれぞれ交点Ｐ４７，Ｐ４８において交わる。
各区分領域のＣＴＢ５は、特定されたＰ４１〜Ｐ４８に隣接して配置される（図９（Ｂ））。すなわち、領域Ａ４０１，Ａ４０２のＣＴＢ５は交点Ｐ４１、領域Ａ４０３，Ａ４０４のＣＴＢ５は交点Ｐ４２、領域Ａ４０５，Ａ４０６のＣＴＢ５は交点Ｐ４３、領域Ａ４０７，Ａ４０８のＣＴＢ５は交点Ｐ４４、領域Ａ４０９，Ａ４１０のＣＴＢ５は交点Ｐ４５、領域Ａ４１１，Ａ４１２のＣＴＢ５は交点Ｐ４６、領域Ａ４１３，Ａ４１４のＣＴＢ５は交点Ｐ４７、領域Ａ４１５，Ａ４１６のＣＴＢ５は交点Ｐ４８に、それぞれ隣接して配置される。
【００４２】
次に、ＣＴＢ４が配置される交点として、ＣＴＢ５に隣接した交点（Ｐ４１〜Ｐ４８）を有する区分線（Ｌ４１〜Ｌ４８，Ｌ３１〜Ｌ３４）とこれらの区分線より上位の区分線との交点が特定される。図９（Ｂ）の例において、区分線Ｌ３１は上位の区分線Ｌ２１と交点Ｐ３１において交わり、区分線Ｌ３２は上位の区分線Ｌ２１と交点Ｐ３２において交わり、区分線Ｌ３３は上位の区分線Ｌ２２と交点Ｐ３３において交わり、区分線Ｌ３４は上位の区分線Ｌ２２と交点Ｐ３４において交わり、区分線Ｌ４２は上位の区分線Ｌ１１と交点Ｐ３５において交わり、区分線Ｌ４５は上位の区分線Ｌ１１と交点Ｐ３６において交わり、区分線Ｌ４４は上位の区分線Ｌ１１と交点Ｐ３７において交わり、区分線Ｌ４７は上位の区分線Ｌ１１と交点Ｐ３８において交わる。
【００４３】
ここで、特定された８つの交点（Ｐ３１〜Ｐ３８）にそれぞれＣＴＢ４を配置することも可能であり、この場合、ＣＴＢ４の個数が８つになる。一方、各ＣＴＢ４において４つのＣＴＢ５を駆動できるとすると、ＣＴＢ４の個数は４つで良い。後者の場合は、上記の８つの交点から４つの交点が選択される。
【００４４】
図１０，図１１は、ＣＴＢ４を配置する４つの交点の選択方法の一例を説明するための図である。
この方法では、まず、回路配置領域Ａ１を縦方向に２分割する区分線Ｌ１１と横方向に２分割する区分線Ｌ１２との交点ＰＸが特定される。区分線Ｌ１１，Ｌ１２は、何れも、分割された２つの領域に含まれるＩＣＧ１の数がほぼ等しくなるように設定される。
交点ＰＸが特定されると、次に、回路配置領域Ａ１の適当な角を原点Ｏとして、この原点Ｏに対する交点ＰＸの座標（Ｘｐ，Ｙｐ）が取得される。そして、この座標に基づいて、原点Ｏからの横方向の距離Ｘｐと縦方向の距離Ｙｐのどちらが短いか判定される。図１０の例では縦方向の距離Ｙｐが横方向の距離Ｘｐに比べて短く（Ｙｐ＜Ｘｐ）、図１１の例では横方向の距離Ｘｐが縦方向の距離Ｙｐに比べて短い（Ｘｐ＜Ｙｐ）。
縦方向が短い場合（Ｙｐ＜Ｘｐ）、ＣＴＢ４を配置する交点としては、縦方向に延びる下位の区分線と横方向に延びる上位の区分線との交点が選ばれる。図９（Ｃ）の例では、交点Ｐ３１〜Ｐ３４が選ばれる。
他方、横方向が短い場合（Ｘｐ＜Ｙｐ）、ＣＴＢ４を配置する交点としては、横方向に延びる下位の区分線と縦方向に延びる上位の区分線との交点が選ばれる。図９（Ｃ）の例では、交点Ｐ３５〜Ｐ３８が選ばれる。
このように、原点Ｏから交点ＰＸまでの縦方向の距離と横方向の距離とが比較され、この距離が短い方向に延びる下位の区分線の交点にＣＴＢ４が配置される。そのため、ＣＴＢ４からＣＴＢ５に延びる配線の長さがより短くなり、ＣＴＢ４において駆動する負荷容量が軽減される。
【００４５】
ＣＴＢ４の配置が決まると、次にＣＴＢ３の配置が決定される。ＣＴＢ３は、その次段のＣＴＢ４に隣接した交点（図９（Ｃ）の例ではＰ３１〜Ｐ３４）を有する区分線（Ｌ３１〜Ｌ３４，Ｌ２１，Ｌ２２）とこれらの区分線より上位の区分線との交点に配置される。図９（Ｃ）の例において、区分線Ｌ２１は上位の区分線Ｌ１１と交点Ｐ２１において交わり、区分線Ｌ２２は上位の区分線Ｌ１１と交点Ｐ２２において交わる。ＣＴＢ３は、この交点Ｐ２１，Ｐ２２に配置される（図９（Ｄ））。
【００４６】
ＣＴＢ３の配置が決まると、次にＣＴＢ１，ＣＴＢ２の配置が決定される。ＣＴＢ１，ＣＴＢ２は、クロックツリーの起点Ｐ１０と２つのＣＴＢ３とを接続する配線上に設けられる（図９（Ｅ））。この配線は、例えば、起点Ｐ１０から２つのＣＴＢ３へのマンハッタン距離が最短になるとともに、２つのＣＴＢ３へ分岐する線の長さが最短になるように形成される。リピータとしてのＣＴＢ１，ＣＴＢ２は、例えば、その負荷の大きさ（負荷容量等）が所定の範囲内に含まれるように配置される。
【００４７】
以上によりクロックツリーの各ＣＴＢの配置が決定された後、ＣＴＢを接続する配線が形成される。ＣＴＢの配線は、区分領域（Ａ４０１〜Ａ４１６）の縁部に沿って、その長さが最短となるように形成される。
【００４８】
＜ＩＣＧの配置、配線（ステップＳＴ７）＞
ステップＳＴ６においてＣＴＢ５の配置が決まると、ステップＳＴ３において仮配置されていたＩＣＧがＣＴＢ５を基準として再び配置され、その配置に基づいて配線も再形成される。
【００４９】
ステップＳＴ７においては、入力側セル（ファンイン）に近づけるようにＩＣＧが配置される。図５（Ｂ）は、その配置の一例を示す。
図５（Ｂ）に示すように、クロックゲートＵ１０は、その後段の回路要素ＦＯ１〜ＦＯ４を含んだ最小の四角形の領域ＡＦ１において、クロックゲートＵ１０の上位に位置するクロックツリー末端のクロックバッファＦＩ１（ＣＴＢ５）と最も近い辺部に配置される。
この配置方法では、まず、クロックゲートＵ１０の後段の回路要素ＦＯ１〜ＦＯ４を含んだ最小の四角形の領域ＡＦ１が定義される。
領域ＡＦ１が決定されると、その領域ＡＦ１の４つの辺の中でクロックバッファＦＩ１（ＣＴＢ５）に最も近い領域ＡＦ１の辺が選択される。クロックゲートＵ１０は、例えば、その選択された辺の任意の位置（例えば中央）、若しくは、その辺において更にクロックバッファＦＩ１と最も近い位置に配置される。
図５の例に示すクロックゲートＵ１０はＩＣＧ１（第１段目のクロックゲート）であるが、ＩＣＧ２の場合も同様に上位段のクロックバッファＦＩ１（ＣＴＢ５）と最も近い辺が選択される。
【００５０】
ＩＣＧの配置は、例えば、最下位段のクロックゲート（ＩＣＧ２）からボトムアップ式に決定される。すなわち、先ずＩＣＧ２について、その後段に接続されるＦＦを含んだ最小の四角形領域が定義され、その４つの辺の中で上位段のＣＴＢ５と最も近い辺にＩＣＧ２が配置される。次いで、ＩＣＧ１について、その後段に接続されるＩＣＧ２を含んだ最小の四角形領域が定義され、その４つの辺の中で上位段のＣＴＢ５と最も近い辺にＩＣＧ１が配置される。
【００５１】
上記のようにしてＩＣＧの配置が決定された後、各ＩＣＧを接続する配線が形成される。配線は、例えば、ＩＣＧの出力とそのファンアウトを最短距離で結ぶように形成される。
【００５２】
＜クロックゲートのサイズ調節（ステップＳＴ８）＞
以上により、ＣＴＢ及びＩＣＧのレイアウトが決まった後、各ＦＦにおけるスキュー（クロック信号の到着時刻のばらつき）を調節するため、ＩＣＧのサイズ（駆動能力）が調節される。図１２は、ＩＣＧのサイズ調節について説明するための図である。図１２において、「Ｕ３１」はＣＴＢ若しくはＩＣＧを示し、「Ｕ３２」はＩＣＧ若しくはＦＦを示す。また「Ｕ３３」〜「Ｕ３５」は、「Ｕ３１」と「Ｕ３２」の間に挿入されるＩＣＧを示す。図１２に示すように、ＩＣＧ（ステップＳＴ２で挿入されるバッファを含む）のサイズは、例えば数種類の中から選択することが可能であり、「Ｕ３１」と「Ｕ３２」の間におけるディレイを調節するためにＩＣＧのサイズが選択される。このようなディレイの調節を適切に行うことによって、各ＦＦにおけるスキューが所定の範囲内に収められる。
【００５３】
以上説明したように、本実施形態によれば、ＩＣＧ１の回路配置領域Ａ１が、ほぼ同数のＩＣＧ１を含む複数の領域に区分される。そして、区分された各領域に一つずつＣＴＢ５（クロックツリーの末端のＣＴＢ）が配置される。各区分領域に配置されたＣＴＢ５は、配置された領域内に含まれるＩＣＧ１に対して共通のクロック信号をそれぞれ供給する。
このように、クロックツリー末端におけるＣＴＢ（ＣＴＢ５）のファンアウトをほぼ等しくすることで、その負荷の大きさが互いに近似するようにしているため、一般的なＥＤＡツールによるクロックツリー合成に比べてＣＴＢの数を大幅に減らしても、ＦＦにおけるクロック信号のスキューを微小に抑えることができる。
クロック信号の周波数は集積回路装置において最も高い周波数の信号であり、その駆動に要する消費電力は集積回路装置全体の消費電力において大きな割合を占めている。本実施形態によれば、ＣＴＢの数を大幅に減らすことによって、クロック信号の駆動に関わる消費電力を低減できるので、集積回路装置の低消費電力化に大きく貢献できる。
ＣＴＢの数を削減することによって、製造プロセスに起因した回路素子特性のばらつきによるクロック信号のディレイ時間のばらつきも低減できる.
【００５４】
また、本実施形態によれば、クロックツリーの直接の駆動対象であるＩＣＧ１の２次元的な分布密度に応じて、分布密度が高い場所にクロックツリーの末端のＣＴＢ（ＣＴＢ５）がより多く配置されるようにしていることから、クロックツリー末端のＣＴＢの負荷が互いに近似するようにしつつ、クロックツリー末端のＣＴＢとＩＣＧ１との配線距離を極力短くすることができる。これにより、クロックツリーの末端からＦＦまでの配線距離が全体的に短くなり、クロックツリー末端のＣＴＢにおける負荷の違いが相対的に小さくなるため、ＦＦのスキューをより小さくできる。またクロック信号の伝播に関わる配線が全体的に短くなるため、消費電力の低減にも貢献できる。
【００５５】
更に、本実施形態によれば、ロジック信号系の回路要素（ＦＦ，論理ゲート等）のレイアウトを設計した後でクロック信号系のレイアウトを設計することが可能であることから、Ｈツリー構造やメッシュ構造のように、クロック信号系のレイアウトによってロジック信号系のレイアウトが制約を受けることがない。従って、レイアウト設計の自動化が容易になり、特に大規模な集積回路の設計期間の短縮に貢献できる。
【００５６】
また、本実施形態によれば、クロックツリーの起点から末端までのＣＴＢの段数が同一に揃っているとともに、クロックツリーの末端からフリップフロップまでのＩＣＧの段数も同一に揃っているため、クロックツリーの起点から各ＦＦへのクロック信号の伝播時間が均一になり、ＦＦにおけるクロック信号のスキューを低減できる。
【００５７】
加えて、本実施形態によれば、ストラクチャードバッファとしてのＣＴＢ（ＣＴＢ３，ＣＴＢ４，ＣＴＢ５）を区分領域（Ａ４０１〜Ａ４１６）の縁部に配置することで、ＣＴＢの配線を区分領域の縁部に沿って形成することが可能になる。これにより、ＣＴＢの配線を直線的に形成し易くなり、ＣＴＢの負荷容量の増大を抑制できる。配線の負荷容量が小さくなることでクロック信号のディレイ時間が短くなり、スキューを相対的に低減できる。また、容量が小さくなることで負荷電流が小さくなるため、消費電力を低減できる。
【００５８】
しかも、ストラクチャードバッファとしてのＣＴＢ（ＣＴＢ３，ＣＴＢ４，ＣＴＢ５）が区分線の交点に隣接して配置されることから、分岐する複数のストラクチャードバッファの共通の配線を区分領域の辺に沿って直線状に形成し易くなり、配線距離を短くすることができる。
【００５９】
また、クロックツリーとＦＦの間に介在する各ＩＣＧは、その後段の回路要素群を含む最小の四角形の領域において、上位段に位置するクロックツリー末端のＣＴＢから最も近い辺部に配置される。これにより、各ＩＣＧがクロックツリー末端のＣＴＢに向かって凝集するように配置されるため、ＣＴＢとＩＣＧを接続する配線が全体的に短くなる。その結果、配線の負荷容量が小さくなり、クロック信号の駆動に伴う消費電力を効果的に低減できる。
【００６０】
以上、本発明の幾つかの実施形態について説明したが、本発明は上述した実施形態のみに限定されるものではなく、種々のバリエーションを含んでいる。
【００６１】
上述の実施形態では、回路配置領域を１６分割する例が挙げられているが、本発明はこれに限定されない。回路配置領域の分割数は、例えば、クロックツリーの末端のＣＴＢにおいて駆動可能なファンアウトの数に応じて決定してもよいため、分割数は１６分割より多くても少なくてもよい。
【００６２】
また、上記の実施形態では、回路配置領域の細分化の各段階において領域を２分割しているが、本発明はこれに限定されない。すなわち、細分化の各段階において２より大きい任意の数で分割を行ってもよい。
【００６３】
例えば図１３の例では、回路配置領域を横方向に２分割する区分線Ｌ６１と縦方向に２分割する区分線Ｌ６２とによって回路配置領域を４分割し、分割後の各領域に対してこれと同様な４分割を再び行うことで、回路配置領域を最終的に１６分割している（領域Ａ７１〜Ａ８１）。区分線（Ｌ６１，Ｌ６２，Ｌ７１〜７８）は、これにより元の領域を上下又は左右に２分割したときの各区分領域に含まれるＩＣＧ１の数がほぼ等しくなるように設定される。
図１３の例に示す細分化方法では、４分割後の区分領域に含まれるＩＣＧ１の数に多少のばらつきが生じるが、本実施形態のステップＳＴ５において説明した方法に比べて処理を単純化できる。
【００６４】
上述の実施形態では、ストラクチャーバッファとしてのＣＴＢを区分線の交点に配置しているが、本発明はこれに限定されない。例えば図１４に示すように、各領域の中央にクロックツリーの末端のＣＴＢを配置することも可能である。
【００６５】
上述の実施形態では、クロック信号の分配を行うクロックツリーを例に挙げているが、本発明はこれに限定されない。すなわち、複数の回路要素に対して共通の信号を分配する任意の信号分配回路を備えた集積回路装置に本発明は適用可能である。
【００６６】
上述の実施形態では、ストラクチャードバッファ（ＣＴＢ３〜ＣＴＢ５）の前段にリピータ（ＣＴＢ１，ＣＴＢ２）が配置されているが、本発明はこの例に限定されない。ストラクチャードバッファ間の配線が長くて容量が大きい場合には、この配線上にもリピータを設けてよい。
【００６７】
また、図１のフローチャートに示すレイアウト設計方法は、コンピュータにおいて実行させることが可能である。この場合、図１のフローチャートの処理に相当するコンピュータプログラムをハードディスクや半導体メモリ、光ディスクなの任意の記録媒体に記録させておき、これをコンピュータに読み取らせて実行させることも可能である。また、サーバ装置からネットワーク経由でコンピュータに上記のプログラムをダウンロードして実行させることも可能である。
【図面の簡単な説明】
【００６８】
【図１】本発明の実施形態に係る集積回路装置のレイアウトの一例を図解した図である。
【図２】本発明の実施形態に係る集積回路装置においてクロック信号の分配に関わる回路の構成例を示す図である。
【図３】本発明の実施形態に係る集積回路装置の設計方法の一例を示すフローチャートである。
【図４】クロックゲートの段数調節方法の一例を説明するための図である。
【図５】クロックゲートの配置の一例を図解した図である。
【図６】クロックゲートの複製方法の一例を図解した図である。
【図７】クロックゲートの回路配置領域から細分化された１６個の領域と、この領域の区分に基づいて決定されたクロックバッファの配置の一例を図解した図である。
【図８】回路配置領域の細分化方法の一例を図解した図である。
【図９】クロックツリーバッファの配置方法の一例を図解した図である。
【図１０】クロックバッファを配置する交点の選択方法の一例を説明するための第１の図である。
【図１１】クロックバッファを配置する交点の選択方法の一例を説明するための第２の図である。
【図１２】クロックゲートのサイズ調節について説明するための図である。
【図１３】回路配置領域の細分化方法の変形例を説明するための図である。
【図１４】クロックバッファの配置方法の変形例を説明するための図である。
【符号の説明】
【００６９】
ＩＣＧ１〜ＩＣＧ２…第１段目〜第２段目のクロックゲート、ＣＴＢ１〜ＣＴＢ５…第１段目〜第５段目のクロックバッファ、ＦＦ…フリップフロップ、Ｌ１１，Ｌ２１，Ｌ２２，Ｌ３１〜Ｌ３４，Ｌ４１〜Ｌ４８…区分線、Ａ１…ＩＣＧ１の回路配置領域、Ａ４０１〜Ａ４１６…区分領域、Ｐ２１，Ｐ２２，Ｐ３１〜Ｐ３８，Ｐ４１〜Ｐ４８…区分線の交点
【図１】
2009152451.tif 000003
【図２】
2009152451.tif 000004
【図３】
2009152451.tif 000005
【図４】
2009152451.tif 000006
【図５】
2009152451.tif 000007
【図６】
2009152451.tif 000008
【図７】
2009152451.tif 000009
【図８】
2009152451.tif 000010
【図９】
2009152451.tif 000011
【図１０】
2009152451.tif 000012
【図１１】
2009152451.tif 000013
【図１２】
2009152451.tif 000014
【図１３】
2009152451.tif 000015
【図１４】
2009152451.tif 000016