(57)【要約】【課題】クロックツリー設計において、簡潔なスキュー調整をすることができるレイアウト装置及びレイアウト方法を提供すること。【解決手段】本発明にかかるレイアウト装置１は、想定スキュー値記憶部１４１、遅延挿入部１３３、遅延調整部１３４を備える。想定スキュー値記憶部１４１は、クロックツリーの段数に応じて予め定められた想定スキュー値を格納する。遅延挿入部１３３は、想定スキュー値が要求スキュー値以下である場合、当該クロックツリーの最上位側に遅延調整バッファ２０６を挿入する。遅延調整部１３４は、クロックツリーのスキュー値が要求スキュー値以下となるように、クロックツリーの配線後に、遅延調整バッファ２０６の遅延を調整する。【選択図】図１
2011154537.tif 000002
【特許請求の範囲】
【請求項１】
クロックツリーの段数に応じて予め定められた想定スキュー値を格納する想定スキュー値記憶手段と、
前記想定スキュー値が要求スキュー値以下である場合、当該クロックツリーの最上位側に遅延手段を挿入する遅延挿入手段と、
前記クロックツリーのスキュー値が前記要求スキュー値以下となるように、前記クロックツリーの配線後に、前記遅延手段の遅延を調整する遅延調整手段と、
を備えるレイアウト装置。
【請求項２】
親クロックツリーの末端側に配置された論理回路を駆動させる駆動手段の数と、前記駆動手段の数に応じた前記クロックツリーの段数とに基づいて、前記親クロックツリーから前記クロックツリーを分割するツリー分割手段をさらに備える請求項１に記載のレイアウト装置。
【請求項３】
前記想定スキュー値は、前記クロックツリーの段数に加え、前記論理回路が半導体基板上に配置される面積に応じて、予め定められている値である請求項１または２に記載のレイアウト装置。
【請求項４】
前記レイアウト装置は、クロックが出力されるクロック端子と前記クロックツリーとを配線する配線手段をさらに備え、
前記配線手段は、前記クロック端子と前記遅延手段とが、１つの分岐点を介して接続されるように配線を行う請求項１〜３のいずれか一項に記載のレイアウト装置。
【請求項５】
前記遅延挿入手段は、前記クロックツリーの配線前に、前記クロックツリーのスキュー値が前記要求スキュー値よりも大きくなるように、前記遅延手段を挿入する請求項１〜４のいずれか一項に記載のレイアウト装置。
【請求項６】
クロックツリーの段数に応じて予め定められた想定スキュー値を参照し、
前記想定スキュー値が要求スキュー値以下である場合、当該クロックツリーの最上位側に遅延手段を挿入し、
前記クロックツリーのスキュー値が前記要求スキュー値以下となるように、前記クロックツリーの配線後に、前記遅延手段の遅延を調整するレイアウト方法。
【請求項７】
親クロックツリーの末端側に配置された論理回路を駆動させる駆動手段の数を決定し、
前記駆動手段の数に応じて、前記クロックツリーの段数を決定し、
前記駆動手段の数と前記クロックツリーの段数とに基づいて、前記親クロックツリーから前記クロックツリーを分割する請求項６に記載のレイアウト方法。
【請求項８】
前記想定スキュー値は、前記クロックツリーの段数に加え、前記論理回路が半導体基板上に配置される面積に応じて、予め定められている値である請求項６または７に記載のレイアウト方法。
【請求項９】
クロックが出力されるクロック端子と前記クロックツリーとの配線は、前記クロック端子と前記遅延手段とが、１つの分岐点を介して接続されるように配線を行う請求項６〜８のいずれか一項に記載のレイアウト方法。
【請求項１０】
前記クロックツリーの配線前に、前記クロックツリーのスキュー値が前記要求スキュー値よりも大きくなるように、前記クロックツリーの最上位側に前記遅延手段を挿入する請求項６〜９のいずれか一項に記載のレイアウト方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はレイアウト装置及びレイアウト方法に関し、特に半導体集積回路のクロックツリー設計におけるレイアウト装置及びレイアウト方法に関する。
【背景技術】
【０００２】
近年の半導体集積回路の高周波数化に伴い、同期化回路間のタイミングマージン確保が要求されている。そのため、クロックツリーのクロックスキューを小さくする必要がある。しかし、半導体集積回路の設計の際に、クロックスキューの調整に多くの設計時間を費やしている。
【０００３】
一方で、半導体集積回路の大規模化に伴う同期化回路の増加により、クロックツリーの構造が大規模化している。そのため、クロックスキューの調整にさらに多くの設計時間を費やすこととなっている。このような背景から、半導体集積回路のクロックスキューを短時間で調整する要求（必要性）が高まってきた。
【０００４】
特許文献１には、クロックスキューが閾値以下に収束する回路規模となるように、クロックツリーが有するフリップフロップを複数のグループに分割し、グループの前段に遅延バッファを挿入する技術が開示されている。分割後、グループの組み合わせ及び中継バッファの数の変更を繰り返すことによって、クロックが入力されるクロック端子から遅延バッファまでの階層数が所定の数となるようにクロックツリーを構成する。
【０００５】
このとき、クロックツリーを構成するということは、起点であるクロック入力端子から対象バッファであるブロックまでを、入力容量と配線容量で決まる遅延量が均等になる様、中継バッファを用いて階層的に構成することである。
【０００６】
なお、特許文献２には、データ接続経路の数に基づいて、半導体集積回路上のフリップフロップが配置された領域の分割を繰り返し、分割された領域のフリップフロップをツリー状に接続する技術が開示されている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００６−１０７２０６号公報
【特許文献２】特開２００７−１２３３３６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、クロックツリーの遅延量は、対象とするフリップフロップ、バッファ、ツリー等からなるブロックの数量や配置位置によって決まる。つまり、これらの数量や配置位置は実際にレイアウト配置し、配線しなければ決まらず、配線容量と入力容量から見積もる仮配線遅延時間と実配線遅延時間との差分は大きくなる。加えて、クロックツリー構造による多岐にわたるパス間においても、２点間のパスの配線後の遅延量は、２点間のパスの配置配線から見積もった遅延時間の差分よりも大きくなる。
【０００９】
そのため、特許文献１に記載の技術では、クロック端子からクロックツリー末端までの複数あるクロックパスのクロック遅延の差分(以降、スキュー値と称す）のＭＡＸ値とＭＩＮ値の差分が、半導体集積回路のタイミング設計上許容されるスキュー値（以降、要求スキュー値と称す）を超える場合は、中継バッファを接続する対象ブロックの数を変えたり、中継バッファの数を変えたりして、再度配置配線を行い、要求スキュー値内に収まるまでクロックツリーを繰り返し構築しなければならない。
【００１０】
したがって、クロック端子から遅延バッファまでのクロック経路が一回の配線工程で決まらず、制限された段数となるまでクロックツリーの段数を決定する工程に戻ってやり直さなければならない。その結果、クロックツリーの設計工程数が増大するという問題があった。
【課題を解決するための手段】
【００１１】
本発明にかかるレイアウト装置は、クロックツリーの段数に応じて予め定められた想定スキュー値を格納する想定スキュー値記憶手段と、前記想定スキュー値が要求スキュー値以下である場合、当該クロックツリーの最上位側に遅延手段を挿入する遅延挿入手段と、前記クロックツリーのスキュー値が前記要求スキュー値以下となるように、前記クロックツリーの配線後に、前記遅延手段の遅延を調整する遅延調整手段と、を備えるものである。このような構成によって、クロックツリーの配線後、遅延調整のためにクロックツリーの構造を変更する必要がないため、配線工程を削減できる。
【００１２】
本発明にかかるレイアウト方法は、クロックツリーの段数に応じて予め定められた想定スキュー値を参照し、前記想定スキュー値が要求スキュー値以下である場合、当該クロックツリーの最上位側に遅延手段を挿入し、前記クロックツリーのスキュー値が前記要求スキュー値以下となるように、前記クロックツリーの配線後に、前記遅延手段の遅延を調整するものである。これによって、クロックツリーの構造を変更することなく、遅延手段の遅延調整のみによりクロックツリーのスキュー値を調整できる。
【発明の効果】
【００１３】
本発明により、クロックツリー設計において、簡潔なスキュー調整をすることができるレイアウト装置及びレイアウト方法を提供することができる。
【図面の簡単な説明】
【００１４】
【図１】実施の形態１にかかるレイアウト装置の構成例を示す図である。
【図２】実施の形態１にかかるレイアウト方法を説明するためのフローチャートである。
【図３】実施の形態１にかかるレイアウト方法を説明するための詳細なフローチャートである。
【図４】実施の形態１にかかる想定スキュー値のテーブルを示す図である。
【図５】実施の形態１にかかる親クロックツリーの構成例を示す図である。
【図６】実施の形態１にかかるクロックツリーの構成例を示す図である。
【図７】実施の形態１にかかるクロックツリーの配線工程を示す図である。
【図８】実施の形態１にかかるクロックツリーの配線工程を示す図である。
【図９】実施の形態１にかかるクロックツリーの配線工程を示す図である。
【図１０】実施の形態１にかかるクロックツリーの配線工程を示す図である。
【図１１】実施の形態１にかかる配線途中のクロックツリーの遅延分布を示す図である。
【図１２】実施の形態１にかかる配線途中のクロックツリーの遅延分布を示す図である。
【図１３】実施の形態１にかかる配線途中のクロックツリーの遅延分布を示す図である。
【図１４】実施の形態１にかかる配線途中のクロックツリーの遅延分布を示す図である。
【図１５】実施の形態１にかかる配線後のクロックツリーの構成例を示す図である。
【図１６】実施の形態１にかかる配線後のクロックツリーの遅延分布を示す図である。
【図１７】実施の形態１にかかる配線後のクロックツリーの遅延分布を示す図である。
【図１８】実施の形態１にかかる配線後のクロックツリーの遅延分布を示す図である。
【図１９】実施の形態１にかかる配線後のクロックツリーの遅延分布を示す図である。
【図２０】実施の形態１にかかる遅延調整バッファ挿入後のクロックツリーの構成例を示す図である。
【図２１】実施の形態１にかかる遅延調整によるクロックツリーの遅延分布の変化を示す図である。
【図２２】実施の形態１にかかる遅延調整によるクロックツリーの遅延分布の変化を示す図である。
【図２３】実施の形態２にかかるレイアウト装置の構成例を示す図である。
【図２４】実施の形態２にかかるレイアウト方法を説明するための詳細なフローチャートである。
【図２５】実施の形態２にかかる配置面積を説明するための図である。
【図２６】実施の形態２にかかる想定スキュー値のテーブルを示す図である。
【図２７】実施の形態３にかかるレイアウト方法を説明するためのフローチャートである。
【図２８】実施の形態３にかかるクロックツリーの配線工程を示す図である。
【図２９】実施の形態３にかかるクロックツリーの配線工程を示す図である。
【図３０】実施の形態３にかかるクロックツリーの配線工程を示す図である。
【図３１】実施の形態３にかかるクロックツリーの配線工程を示す図である。
【図３２】実施の形態３にかかる配線途中のクロックツリーの遅延分布を示す図である。
【図３３】実施の形態３にかかる配線途中のクロックツリーの遅延分布を示す図である。
【図３４】実施の形態３にかかる配線途中のクロックツリーの遅延分布を示す図である。
【図３５】実施の形態３にかかる配線途中のクロックツリーの遅延分布を示す図である。
【図３６】実施の形態３にかかる配線後のクロックツリーの構成例を示す図である。
【図３７】実施の形態３にかかる配線後のクロックツリーの遅延分布を示す図である。
【図３８】実施の形態３にかかる配線後のクロックツリーの遅延分布を示す図である。
【図３９】実施の形態３にかかる配線後のクロックツリーの遅延分布を示す図である。
【図４０】実施の形態３にかかる配線後のクロックツリーの遅延分布を示す図である。
【図４１】実施の形態３にかかる遅延調整後のクロックツリーの構成例を示す図である。
【図４２】実施の形態３にかかる遅延調整後のクロックツリーの遅延分布を示す図である。
【図４３】実施の形態３にかかる遅延調整後のクロックツリーの遅延分布を示す図である。
【図４４】実施の形態３にかかる遅延調整後のクロックツリーの遅延分布を示す図である。
【図４５】実施の形態３にかかる遅延調整後のクロックツリーの遅延分布を示す図である。
【発明を実施するための形態】
【００１５】
実施の形態１
以下、図面を参照して本発明の実施の形態について説明する。本実施の形態にかかるレイアウト装置１の構成例を図１に示す。レイアウト装置１は、キーボード１１、マウス１２、処理装置１３、記憶装置１４、表示装置１５を備える。
【００１６】
キーボード１１は、文字キー、数字キー、機能指示キー等を備えており、各種キー入力を行う。マウス１２は、マウスカーソルの示す位置データを入力する。これらキーボード１１及びマウス１２等の入力装置によって、入力された論理回路のクロック信号のスキュー算出をするための指示、クロック信号のスキュー算出結果を検証する際の指示等の入力を行う。
【００１７】
処理装置１３は、ＣＰＵ (Central Processing Unit) １３１、メモリ１３２等を備えるマイクロコンピュータである。ＣＰＵ１３１及びメモリ１３２は、例えばＲＯＭ（Read Only Memory）やＲＡＭ（Random Access Memory）等からなる。処理装置１３は、この装置全体の制御を司るとともに、クロック信号のスキュー算出するための演算の処理、クロック信号のスキュー算出結果を記憶装置１４にファイル形式で記憶させる処理、記憶装置１４に記憶されているクロック信号のスキュー算出結果を内部メモリに読み込む処理、クロック信号のスキュー算出結果等を表示装置１５に表示させるための処理等を行う。
【００１８】
また、処理装置１３は、遅延バッファを挿入する遅延挿入部１３３、遅延バッファによる遅延時間を調整する遅延調整部１３４、親クロックツリーからクロックツリーを分割するツリー分割部１３５、クロックツリーの配線を行う配線部１３６も備える。
【００１９】
記憶装置１４は、想定スキュー値記憶部１４１を備える。想定スキュー値記憶部１４１は、例えば、ＨＤＤ（Hard Disk Drive）やＲＡＭ等であり、クロック信号のスキュー算出結果やクロックツリー性能評価結果等を記憶する。表示装置１５は、ＣＲＴ（Cathode Ray Tube）、ＬＣＤ（Liquid Crystal Display）等のディスプレイ装置であって、クロック信号のスキュー算出結果及び各種メッセージ等を表示する。
【００２０】
続いて、本実施の形態にかかるレイアウト方法について説明する。図２にレイアウト方法を説明するためのフローチャートを示す。はじめに、レイアウト装置１のキーボード１１等を用いて、クロックツリーをレイアウトするために必要なデータを入力する（ステップＳ１０１）。このとき入力されるデータは、例えば、ネット情報、製品情報、クロックツリー性能評価結果、要求スキュー値（ＭＩＮ、ＭＡＸ）等の情報を入力する。
【００２１】
次に、入力されたデータに基づいて、処理装置１３が、クロックツリーの構造を決定する（ステップＳ１０２）。図３にステップＳ１０２の詳細なフローチャートを示す。
【００２２】
まず、処理装置１３が、ステップＳ１０１において入力されたネット情報、製品情報に基づいて、ＣＴＳバッファ（以降、駆動バッファと称す。）のドライブ能力から決定される駆動可能なＦＦ（フリップフロップ）数をＦとして求める（ステップＳ１０２１）。
【００２３】
次に、処理装置１３は、クロックツリーの末端側（フリップフロップの手前）に必要な駆動バッファの数ｎ（駆動手段の数）をｎ＝接続ＦＦ数の総数／Ｆで求める（ステップＳ１０２２）。例えば、対象となる一つのクロックドメインに接続されたＦＦの総数が３２０個、駆動バッファの駆動可能なＦＦ数が２０個であったとすると、クロックツリーの末端側に必要な駆動バッファ数ｎはｎ＝３２０個／２０個＝１６個となる。
【００２４】
駆動バッファの数が決定すると、処理装置１３は、親クロックツリーの段数（階層数）を決定する（ステップＳ１０２３）。例えば、クロックツリーを１つの始点、ｎ個の終点とした２分岐構造のクロックツリーとした場合、それを構成する駆動バッファ及び中継バッファの段数、つまり親クロックツリーの段数をｍとすると、ｍ−１＝ｌｏｇｎ、つまりｍ＝（ｌｏｇｎ）＋１で求める。このとき、親クロックツリーとは、配置配線がされておらず、以降のステップにおいて分割される前の仮のクロックツリーの構成を意味する。また、中継バッファとは、クロックツリーの各分岐点の前段に設けられるバッファを意味する。
【００２５】
なお、ｌｏｇの底はクロックツリーの分岐数に対応しており、上記の例では２分岐構造であるためｌｏｇの底は２となる。前述の例に示すように、末端側に必要な中継バッファの数が１６個の場合、親クロックツリーの段数ｍは以下の式によりｍ＝５段と決定される。
【００２６】
【数１】
2011154537.tif 000003
【００２７】
次に、処理装置１３は、想定スキュー値記憶部１４１に格納されたクロックツリー性能評価結果を読み出し、クロックツリーの段数ｍに対応して想定されるスキュー値（以降、想定スキュー値と称す）ｄｔを、図４のクロックツリー性能評価結果（想定スキュー値のテーブル）を参照して求める（ステップＳ１０２４）。前述の例に示すように、クロックツリーの段数ｍが５の場合、図４の表より想定スキュー値ｄｔは４００ｐｓとなる。なお、クロックツリー性能評価結果は、クロックツリー設計における評価実績等に基づいて、任意に設定される。
【００２８】
クロックツリーの段数ｍに応じた想定スキュー値が決定すると、処理装置１３は、想定スキュー値ｄｔと要求スキュー値とを比較する（ステップＳ１０２５）。ここで、要求スキュー値とは、設計するクロックツリーに許容される遅延時間を意味する。想定スキュー値ｄｔが要求スキュー値より大きい場合、想定している２分岐構造のクロックツリーが要求スキュー値を満足しないものとして、処理装置１３は、クロックツリーの段数ｍを一つ減算して（ステップＳ１０２６）、減算後のクロックツリーの段数ｍとクロックツリー性能評価結果とに基づいて、再度想定スキュー値ｄｔを求める（ステップＳ１０２４）。
【００２９】
前述の例に示すように、クロックツリーの段数ｍ＝５、想定スキュー値ｄｔ＝４００ｐｓにおいて、要求スキュー値が２５０ｐｓの場合、想定スキュー値ｄｔの方が大きくなる。そのため、処理装置１３は、クロックツリーの段数を一つ減算し、ｍ＝４の場合の想定スキュー値ｄｔ＝３００ｐｓをステップＳ１０２４で求める。そして、再度想定スキュー値ｄｔと要求スキュー値の比較を行う（ステップＳ１０２５）。今度も想定スキュー値ｄｔ＝３００ｐｓ＞要求スキュー値２５０ｐｓとなり、想定スキュー値ｄｔの方が大きい値となる。そのため、処理装置１３は、クロックツリーの段数をさらに一つ減算し（ステップＳ１０２６）、ｍ＝３としてクロックツリー性能評価結果を参照し、想定スキュー値を求める（ステップＳ１０２４）。この結果、クロックツリーの段数ｍ＝３であれば、想定スキュー値ｄｔ＝２００ｐｓとなり要求スキュー値２５０ｐｓより小さいため、次のステップＳ１０２７に移る。
【００３０】
次に、ステップＳ１０２３において求めた中継バッファの数ｎと中継バッファの段数ｍとに基づいて、ツリー分割部１３５が、対象としているクロックドメインを分割する分割数Ｊを以下の式で求める（ステップＳ１０２７）。そして、ツリー分割部１３５は、分割数に基づいて、親クロックツリーを複数のクロックツリーに分割する。
【００３１】
【数２】
2011154537.tif 000004
【００３２】
前述の例に示すように、対象となるクロックドメインにおいて、２分岐構造としたクロックツリーの終端に必要な駆動バッファ数ｎ＝１６、クロックツリーの段数ｍ＝３の場合、Ｊ＝１６／２の（３−１）乗＝１６／４＝４分割となる。分割しなかった場合のクロックツリー（親クロックツリー２００）を図５に示す。また、１つのクロックツリーのスキューを小さくする為、４分割した場合のクロックツリー２００１〜２００４を図６に示す。スキューの対象が３２０個から８０個に低減されるので、想定スキュー値も小さくなる。
【００３３】
このとき、各クロックツリー２００１〜２００４の最上位側に配置されたバッファをグループバッファ２０４（２０４１〜２０４４）と称す。最上位側とは、クロックツリーの分岐点のうち、クロックが入力されるクロック端子２０１に最も近い分岐点の前段側（クロック端子２０１側）を意味する。クロックツリー２００１には、グループバッファ２０４１が設けられる。同様に、クロックツリー２００２にはグループバッファ２０４２、クロックツリー２００３にはグループバッファ２０４３、クロックツリー２００４にはグループバッファ２０４４が設けられる。なお、末端側に接続されるものは、フリップフロップ２０５に限られず、ラッチ、マクロ等の論理回路であってもよい。
【００３４】
以上のステップＳ１０２１〜Ｓ１０２７によって、処理装置１３は、クロックツリーの構成を決定する。続いて、図２のフローチャートに戻り、ステップＳ１０３以降の工程について説明する。
【００３５】
クロックツリーの構造が決定すると、処理装置１３は、クロックツリーのバッファの配置を行う（ステップＳ１０３）。そして、配線部１３６は、図７〜１０に示すように、フリップフロップ２０５から各グループバッファ２０４１〜２０４４までの配線を行う（ステップＳ１０４）。このときの各クロックツリー２００１〜２００４のスキュー値の遅延分布を図１１〜図１４にそれぞれ示す。図１１〜図１４においては、横軸はクロックツリーが有する各パスのスキュー値であり、縦軸は横軸で示されたスキュー値を有するパス数を意味している。前述したステップＳ１０２５において、想定スキュー値が要求スキュー値よりも小さくなるように設定されているため、図１１〜図１４に示すように、各クロックツリー２００１〜２００４の遅延分布曲線３０１〜３０４は、要求スキュー値の範囲内となる。
【００３６】
そして、配線部１３６は、各グループバッファ２０４からクロック端子２０１までの配線を行う（ステップＳ１０５）。ステップＳ１０３〜ステップＳ１０５によって配線が完了したクロックツリーを図１５に示す。このとき、クロック端子２０１から各グループバッファ２０４１〜２０４４までの配線は、図１５に示すように、階層的ではなく一束で接続することが好ましい。つまり、クロック端子２０１と各グループバッファ２０４１〜２０４４とが、１つの分岐点を介して接続されることとなる。そのため、クロック端子２０１からクロックツリー２００１〜２００４までの段数は変化しない。また、クロック端子２０１から各グループバッファ２０４１〜２０４４までに加わる遅延量が全て同じになる。その結果、クロックツリー全体の段数が制限内か否かを判断し、制限内でない場合にツリーの再構築をする必要がない。
【００３７】
次に、処理装置１３は、クロック端子２０１からフリップフロップ２０５までの全てのパスの遅延時間を算出する（ステップＳ１０６）。遅延時間の算出結果に基づいて、処理装置１３は、要求スキュー値を満たさないクロックツリーを検出する。具体的には、仮配線と実配線の差分や、ステップＳ１０５の配線によるスキュー見積からの遅延追加分により、要求スキュー値をオーバーしているクロックツリーのグループバッファを、グループバッファ２０４１〜２０４４の中から抽出する（ステップＳ１０７）。
【００３８】
図１６〜図１９に、全ての配線を完了したクロックツリー２００１〜２００４のスキュー値の遅延分布曲線の一例をそれぞれ示す。図１６において、クロックツリー２００１の遅延分布曲線３０１は、要求スキュー値のＭＡＸをオーバーしている。同様に、図１９のクロックツリー２００４の遅延分布曲線３０４も要求スキュー値のＭＩＮを下回っている。一方、クロックツリー２００２、２００３の遅延分布曲線３０２、３０３は、要求スキュー値を満たしている。この場合、処理装置１３によって、グループバッファ２０４１とグループバッファ２０４４が抽出される。
【００３９】
ステップＳ１０７において要求スキュー値を満たさないグループバッファ２０４１とグループバッファ２０４４が抽出されると、処理装置１３は、当該グループバッファ２０４１、２０４４に対して要求値を満足する遅延調整バッファ２０６の挿入量を算出する（ステップＳ１０８）。なお、遅延調整バッファ２０６（遅延手段に対応する）とは、遅延時間が速くなる方向へシフトさせる高駆動型バッファ２０６１と、遅延時間が遅くなる方向へシフトさせる遅延バッファ２０６２との両方を意味する。
【００４０】
前述の例において、クロックツリー２００１では、図１６に示すように、クロックツリーのスキューが要求スキュー値のＭＡＸ値をオーバーしている。そのため、処理装置１３は、クロックツリー２００１のスキューを変えることなく、遅延時間が速くなる方向へシフトさせ、要求スキュー値を満足させる高駆動型バッファ２０６１の挿入量を算出する。なお、高駆動型バッファ２０６１は、遅延挿入部１３３によって、グループバッファ２０４１の入力ピンとクロック端子２０１との間に挿入される。つまり、遅延挿入部１３３は、クロックツリー２００１の最上位側に高駆動型バッファ２０６１を挿入する。
【００４１】
同様に、クロックツリー２００４では、要求スキュー値のＭＩＮ値をオーバーしている。そのため、処理装置１３は、クロックツリー２００４のスキューを変えることなく、遅延時間が遅くなる方向へシフトさせて要求スキュー値を満足させる遅延バッファ２０６２の挿入量を算出する。なお、遅延バッファ２０６２は、遅延挿入部１３３によって、グループバッファ２０４４の入力ピンとクロック端子２０１との間に挿入される。つまり、遅延挿入部１３３は、クロックツリー２００４の最上位側に遅延バッファ２０６２を挿入する。
【００４２】
そして、遅延調整部１３４は、遅延調整バッファ２０６を挿入、あるいは中継バッファ２０３またはグループバッファ２０４の変更を行う（ステップＳ１０９）。つまり、遅延調整部１３４は、クロックツリー２００１または２００４全体として遅延時間を調整する。例えば、クロックツリー全体の遅延時間を速めたい時は、高駆動型バッファ２０６１を、遅くしたい時は遅延バッファ２０６２を挿入する。
【００４３】
遅延調整バッファ２０６挿入後のクロックツリーの回路を図２０に示す。上述したように、グループバッファ２０４１の入力ピンとクロック端子２０１との間に高駆動型バッファ２０６１が挿入され、グループバッファ２０４４の入力ピンとクロック端子２０１との間に遅延バッファ２０６２が挿入される。なお、遅延調整部１３４は、遅延調整バッファ２０６の挿入により遅延を調整しているが、遅延量が可変のバッファを用いて各クロックツリーのスキュー値を調整してもよい。
【００４４】
また、遅延調整を行ったクロックツリー２００１の遅延分布を図２１に、遅延調整を行ったクロックツリー２００４の遅延分布を図２２に示す。図２１において、クロック端子２０１接続後、遅延調整バッファ２０６挿入前のクロックツリー２００１の遅延分布曲線が、曲線３０１１である。それに対して、クロック端子２０１接続後、遅延調整バッファ２０６挿入後のクロックツリー２００１の遅延分布曲線が曲線３０１２である。高駆動型バッファ２０６１の挿入によって、クロックツリー２００１全体の遅延時間が速まっている。そして、高駆動型バッファ２０６１挿入後の遅延分布曲線３０１２は、要求スキュー値の範囲内に収まっている。
【００４５】
一方、クロックツリー２００４における遅延調整について図２２を用いて説明する。クロック端子２０１接続後、遅延調整バッファ２０６挿入前のクロックツリー２００４の遅延分布曲線が、曲線３０４１である。それに対して、クロック端子２０１接続後、遅延調整バッファ２０６挿入後のクロックツリー２００４の遅延分布曲線が曲線３０４２である。図２１におけるクロックツリー２００１と同様に、遅延バッファ２０６２が挿入されることによって、クロックツリー２００４の遅延分布曲線が曲線３０４１から曲線３０４２へと移動している。これによって、クロックツリー２００４のスキューも要求スキュー値の範囲内に収まっている。したがって、ステップＳ１０９の遅延調整によって、クロックツリー２００１〜クロックツリー２００４の遅延が、すべて要求スキュー値の範囲内に収まる。以上のステップによって本実施の形態にかかるレイアウト方法の処理は終了する。
【００４６】
このように、本実施の形態にかかるレイアウト装置及びレイアウト方法においては、クロックツリー性能評価結果を参照し、想定スキュー値を用いてクロックツリーの配線を行う。そして、仮配線と実配線の差分等によって、スキュー値に誤差が生じ、要求スキュー値を満たさない場合には、遅延調整バッファ２０６の挿入等によって、当該誤差を解消する。そのため、クロックツリーの配線及び遅延調整バッファ２０６の挿入が完了すると、スキュー調整のためにクロックツリーのツリー構造は変化させなくてよい。つまり、配線後にツリー構造は変化しないためクロックツリー２００１〜２００４のスキュー値は変わらない。その結果、クロックツリーの末端側からクロック端子２０１までの配線工程は１回だけで済む。したがって、配線後に再度分割や再配線を繰り返すことなく、遅延調整バッファ２０６の調整のみによって簡潔なスキュー調整を短時間で行うことができる。
【００４７】
また、ツリー分割部１３５を備える構成により、クロックツリー全体のパスの数を削減することができる。そのため、スキューの対象を削減することとなり、クロック端子２０１からフリップフロップ２０５までの全てのパスの遅延時間を算出する時間を削減することができる。
【００４８】
実施の形態２
本発明にかかる実施の形態２について説明する。図２３に示した本実施の形態にかかるレイアウト装置２は、図１に示したレイアウト装置の構成に加えて、回路面積検出部１３７を備える。なお、その他の構成についてはレイアウト装置１と同様であるので、説明を省略する。
【００４９】
続いて、本実施の形態にかかるレイアウト方法について、図２４のフローチャートを用いて説明する。図２４に示したフローチャートは、図３に示したフローチャートに加えて、ステップＳ２０１を備え、ステップＳ１０２４に替えてステップＳ２０２を備える。まず、実施の形態１において説明したように、キーボード１１等を用いて、ネット情報、製品情報、クロックツリー性能評価結果、要求スキュー値（ＭＩＮ、ＭＡＸ）等の入力データを入力する（ステップＳ１０１）。このとき、本実施の形態においては、さらにセル設配置情報を入力する。セル配置情報とは、フリップフロップ等の論理回路がセル上にどのように配置されるかを示す情報である。
【００５０】
次に、回路面積検出部１３７は、設計するクロックツリーが有するフリップフロップの配置面積Ｓを、セル配置情報に基づいて算出する（ステップＳ２０１）。図２５を用いて、配置面積Ｓの算出方法を説明する。クロックツリーとの接続対象となるフリップフロップのセル配置情報の座標のＸ座標、Ｙ座標を（Ｘ、Ｙ）とすると、（Ｘｍａｘ−Ｘｍｉｎ）×（Ｙｍａｘ−Ｙｍｉｎ）で表される範囲を配置面積Ｓとする。図２５においては、ＩＣ（Integrated Circuit）チップ４０１上における（Ｘｍａｘ−Ｘｍｉｎ）×（Ｙｍａｘ−Ｙｍｉｎ）の面積、すなわちＳ２が配置面積Ｓに相当する。
【００５１】
以降のステップＳ１０２１〜ステップＳ１０２３については、実施の形態１と同様である。つまり、駆動バッファ２０２が駆動可能なフリップフロップ２０５の数Ｆを求め（ステップＳ１０２１）、そのＦの値に基づいて、必要な駆動バッファ２０２の数を求める（ステップＳ１０２２）。そして、クロックツリーの段数を決定する（ステップＳ１０２３）。
【００５２】
次に、処理装置１３は、想定スキュー値記憶部１４１に格納されたクロックツリー性能評価結果を読み出す。そして、回路面積検出部１３７がステップＳ２０１において検出した配置面積ＳとステップＳ１０３において決定された段数ｍとに基づいて、クロックツリー性能評価結果を参照し、想定スキュー値ｄｔを求める（ステップＳ２０２）。具体的には、処理装置１３は、図２６に示すような表を参照して想定スキュー値ｄｔを見積もる。なお、図２６に示す表は一例であり、これに限られるものではない。
【００５３】
例えば、クロックツリーの段数ｍが５段であり、配置面積ＳがＳ２平方ミリメートルであるとすると、当該条件において想定されるスキュー値ｄｔは４００ｐｓとなる。
【００５４】
そして、処理装置１３は、想定スキュー値ｄｔと要求スキュー値とを比較する（ステップＳ１０２５）。その結果、想定スキュー値ｄｔが要求スキュー値を満たしている場合には、ツリー分割部１３５が、クロックツリーを分割する（ステップＳ１０２７）。一方、想定スキュー値ｄｔが要求スキュー値を満たさない場合は、処理装置１３は、クロックツリーの段数ｍを一段減らし（ステップＳ１０２６）、再度クロックツリー性能評価結果を参照し、想定スキュー値ｄｔを求める（ステップＳ２０２）。
【００５５】
以上によって、本実施の形態にかかるクロックツリー構造の決定が完了する（ステップＳ１０２）。なお、ステップＳ１０２以降の処理（ステップＳ１０３〜ステップＳ１０９）は、実施の形態１と同様であるため、説明を省略する。
【００５６】
このように、本実施の形態にかかるレイアウト装置２及びレイアウト方法を用いると、想定スキュー値ｄｔを求める際に配置面積Ｓがパラメータとして追加される。その結果、より正確な想定スキュー値ｄｔを見積もることができる。
【００５７】
実施の形態３
本発明にかかる実施の形態３について説明する。本実施の形態にかかるレイアウト装置の構成は、実施の形態１と同様であるため、構成の説明は省略する。図２７に本実施の形態にかかるレイアウト方法のフローチャートを示す。本実施の形態にかかるレイアウト方法は、実施の形態１のレイアウト方法に加えて、遅延バッファの配置（ステップＳ３０１）を備える。また、本実施の形態にかかるレイアウト方法は、実施の形態１にかかるレイアウト方法のステップＳ１０７〜ステップＳ１０９に替えて、ステップＳ３０２〜ステップＳ３０４を備える。
【００５８】
本実施の形態にかかるレイアウト方法について説明する。データ入力（ステップＳ１０１）からクロックツリーの配置（ステップＳ１０３）までは、実施の形態１と同様であるため、説明を省略する。
【００５９】
クロックツリー配置が完了すると、配線（ステップＳ１０４、１０５）が行われる前に、遅延挿入部１３３が、クロック端子２０１と各クロックツリーのグループバッファ２０４との間に遅延バッファ２０６２を配置する（ステップＳ３０１）。このとき、遅延挿入部１３３は、クロックツリー２００１〜２００４のスキュー値が要求スキュー値ｄｔを上回る個数の遅延バッファ２０６２を配置する。
【００６０】
次に、配線部１３６が、フリップフロップ２０５からグループバッファ２０４までの配線を行う（ステップＳ１０４）。図７〜１０と同様に、クロックツリー２００１〜２００４の配線を示す図を図２８〜３１に示す。また、ステップＳ１０４において配線され、遅延バッファ２０６２の接続前のクロックツリー２００１〜２００４の遅延分布を図３２〜図３５に示す。このときは、未だ遅延バッファ２０６２は接続されていないため、クロックツリー２００１〜２００４の遅延分布は、いずれも要求スキュー値ｄｔの範囲内である。
【００６１】
そして、クロック端子２０１と各グループバッファ２０４とが、遅延バッファ２０６２を介して接続される（ステップＳ１０５）。そのときの回路図を図３６に示す。ステップＳ１０５において配線が行われると、それぞれのクロックツリー２００１〜２００４のスキュー値には遅延バッファ２０６２によって遅延が生じる。
【００６２】
処理装置１３は、クロック端子２０１からフリップフロップ２０５までの全てのパスの遅延時間を算出する（ステップＳ１０６）。図３７〜図４０に、算出したクロックツリー２００１〜２００４の遅延分布曲線を示す。図３７〜図４０に示すように、遅延バッファ２０６２の挿入により生じた遅延によって、クロックツリー２００１〜２００４の全ての遅延分布曲線３０１〜３０４が、要求スキュー値のＭＡＸを超えている。
【００６３】
遅延時間の算出結果に基づいて、処理装置１３は、要求スキュー値のＭＡＸをオーバーしたクロックツリーを検出し、当該クロックツリーのグループバッファ２０４を抽出する（ステップＳ３０２）。上述の例においては、全てのクロックツリーの遅延分布曲線が要求スキュー値のＭＡＸをオーバーしているため、全てのグループバッファ２０４１〜２０４４が抽出される。
【００６４】
そして、処理装置１３は、要求スキュー値のＭＡＸをオーバーした遅延量を算出し、当該算出結果に基づいて、遅延バッファ２０６２の削除量を算出する（ステップＳ３０３）。その後、算出された遅延バッファ２０６２の削除量に応じて、遅延調整部１３４は、遅延バッファ２０６２を削除する（ステップＳ３０４）。
【００６５】
上述の例において、遅延バッファ２０６２を削除した後のクロックツリーの回路図を図４１に示す。ステップＳ１０５による配線後の遅延分布曲線を見ると、クロックツリー２００１の遅延分布曲線３０１は、要求スキュー値のＭＡＸを大きくオーバーしている（図３７参照）。そのため、遅延調整部１３４は、遅延バッファ２０６２を３個削除する。同様に、クロックツリー２００２、２００３の遅延分布曲線３０２、３０３は、クロックツリー２００１の遅延分布曲線３０１ほど要求スキュー値のＭＡＸをオーバーしていないので（図３８、３９参照）、遅延調整部１３４は、クロックツリー２００２、２００３から、遅延バッファ２０６２を２個削除する。さらに、クロックツリー２００４の遅延分布曲線３０４は、要求スキュー値のＭＡＸを少しだけオーバーしているため（図４０参照）、遅延調整部１３４は、遅延バッファ２０６２を１個削除する。このように、遅延調整部１３４は、予め挿入していた遅延バッファ２０６２から算出した遅延量に相当する遅延バッファ２０６２を削除する。
【００６６】
ここで、遅延調整部１３４が、遅延バッファ２０６２の削除により、遅延を調整した後のクロックツリー２００１〜２００４の遅延分布曲線を図４２〜図４５に示す。クロックツリー２００１〜２００４全ての遅延分布曲線３０１〜３０４が要求スキュー値の範囲内に収まっている。以上により、本実施の形態にかかるレイアウト方法の処理が終了する。
【００６７】
このように、本実施の形態にかかるレイアウト方法においては、グループバッファ２０４とクロック端子２０１との間に要求遅延時間を上回る個数の遅延バッファ２０６２を挿入しておき、遅延バッファ２０６２を削除することによって遅延調整を行う。そのため、遅延調整部１３４の遅延調整過程において、遅延値の増加はなく、遅延値の短縮のみなので遅延調整が一方向に決まる。また、調整する遅延量は、削除された遅延バッファ２０６２分と、分断された配線による遅延量のみとなる。その結果、想定する遅延削減量と、遅延調整後のクロックツリーの遅延削減量とは、高い確度で一致し、遅延調整の回数を削減することが出来る。したがって、短時間の遅延調整が可能となる。
【００６８】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。
【符号の説明】
【００６９】
１、２  レイアウト装置
１１  キーボード
１２  マウス
１３  処理装置
１４  記憶装置
１５  表示装置
１３１  ＣＰＵ
１３２  メモリ
１３３  遅延挿入部
１３４  遅延調整部
１３５  ツリー分割部
１３６  配線部
１３７  回路面積検出部
１４１  想定スキュー値記憶部
２００  親クロックツリー
２０１  クロック端子
２０２  駆動バッファ
２０３  中継バッファ
２０４  グループバッファ
２０５  フリップフロップ
２０６  遅延調整バッファ
３０１〜３０４、３０１１、３０１２、３０４１、３０４２  遅延分布曲線
４０１  ＩＣチップ
２００１〜２００４  クロックツリー
２０４１〜２０４４  グループバッファ
２０６１  高駆動型バッファ
２０６２  遅延バッファ
【図１】
2011154537.tif 000005
【図２】
2011154537.tif 000006
【図３】
2011154537.tif 000007
【図４】
2011154537.tif 000008
【図５】
2011154537.tif 000009
【図６】
2011154537.tif 000010
【図７】
2011154537.tif 000011
【図８】
2011154537.tif 000012
【図９】
2011154537.tif 000013
【図１０】
2011154537.tif 000014
【図１１】
2011154537.tif 000015
【図１２】
2011154537.tif 000016
【図１３】
2011154537.tif 000017
【図１４】
2011154537.tif 000018
【図１５】
2011154537.tif 000019
【図１６】
2011154537.tif 000020
【図１７】
2011154537.tif 000021
【図１８】
2011154537.tif 000022
【図１９】
2011154537.tif 000023
【図２０】
2011154537.tif 000024
【図２１】
2011154537.tif 000025
【図２２】
2011154537.tif 000026
【図２３】
2011154537.tif 000027
【図２４】
2011154537.tif 000028
【図２５】
2011154537.tif 000029
【図２６】
2011154537.tif 000030
【図２７】
2011154537.tif 000031
【図２８】
2011154537.tif 000032
【図２９】
2011154537.tif 000033
【図３０】
2011154537.tif 000034
【図３１】
2011154537.tif 000035
【図３２】
2011154537.tif 000036
【図３３】
2011154537.tif 000037
【図３４】
2011154537.tif 000038
【図３５】
2011154537.tif 000039
【図３６】
2011154537.tif 000040
【図３７】
2011154537.tif 000041
【図３８】
2011154537.tif 000042
【図３９】
2011154537.tif 000043
【図４０】
2011154537.tif 000044
【図４１】
2011154537.tif 000045
【図４２】
2011154537.tif 000046
【図４３】
2011154537.tif 000047
【図４４】
2011154537.tif 000048
【図４５】
2011154537.tif 000049