(57)【要約】【課題】半導体集積回路のＣＴＳにおいて、クロック遅延時間を削減すること。【解決手段】ＣＴＳ装置は、クロックドメインに接続された複数のフリップフロップの重心座標を求め、求めた重心座標と各フリップフロップとの距離を算出し、重心座標から遠いフリップフロップから順に、重心座標からのクロックラインにおける遅延時間をクロック遅延時間として算出し、前段のフリップフロップとの距離を求め、求めた距離からデータパスにおける遅延時間をデータ遅延時間として算出し、クロック遅延時間とデータ遅延時間との和がクロックドメインのクロックの１周期よりも長いフリップフロップを選択し、選択されたフリップフロップと前段のフリップフロップとのデータパスがフォルスであると判定された場合には、選択されたフリップフロップをスキュー調整の対象外としてクロックツリーを合成する。【選択図】図２
2011141805.tif 000002
【特許請求の範囲】
【請求項１】
半導体集積回路のクロックドメインに接続された複数のフリップフロップの重心座標を求め、求めた重心座標と各フリップフロップとの距離を算出する距離算出部と、
前記重心座標から遠いフリップフロップから順に、前記重心座標からのクロックラインにおける遅延時間をクロック遅延時間として算出するクロック遅延時間算出部と、
前記重心座標から遠いフリップフロップから順に、前段のフリップフロップとの距離を求め、求めた距離からデータパスにおける遅延時間をデータ遅延時間として算出するデータ遅延時間算出部と、
前記クロック遅延時間と前記データ遅延時間との和が前記クロックドメインのクロックの１周期よりも長いフリップフロップを選択する選択部と、
選択されたフリップフロップと前段のフリップフロップとのデータパスがフォルスであるか否かを判定する判定部と、
フォルスであると判定された場合には、前記選択されたフリップフロップをスキュー調整の対象外としてクロックツリーを合成する合成部と、を備えていること特徴とするクロックツリー合成装置。
【請求項２】
前記距離算出部は、前記複数のフリップフロップの座標の算術平均として前記重心座標を求めることを特徴とする、請求項１に記載のクロックツリー合成装置。
【請求項３】
前記距離算出部は、前記重心座標と各フリップフロップとの距離を、マンハッタン距離として算出することを特徴とする、請求項１又は２に記載のクロックツリー合成装置。
【請求項４】
前記選択部は、前記データ遅延時間をＴＤ、前記クロック遅延時間をＴＣ、クロックの周期をＴ、製造ぱらつき係数をαとし、Ｔ＜ＴＤ＋ＴＣ−α×ＴＣを満たすフリップフロップを選択することを特徴とする、請求項１乃至３のいずれか１項に記載のクロックツリー合成装置。
【請求項５】
コンピュータが、半導体集積回路のクロックドメインに接続された複数のフリップフロップの重心座標を求め、求めた重心座標と各フリップフロップとの距離を算出する工程と、
前記重心座標から遠いフリップフロップから順に、前記重心座標からのクロックラインにおける遅延時間をクロック遅延時間として算出する工程と、
前記重心座標から遠いフリップフロップから順に、前段のフリップフロップとの距離を求め、求めた距離からデータパスにおける遅延時間をデータ遅延時間として算出する工程と、
前記クロック遅延時間と前記データ遅延時間との和が前記クロックドメインのクロックの１周期よりも長いフリップフロップを選択する選択工程と、
選択されたフリップフロップと前段のフリップフロップとのデータパスがフォルスであるか否かを判定する工程と、
フォルスであると判定された場合には、前記選択されたフリップフロップをスキュー調整の対象外としてクロックツリーを合成する工程と、を含むこと特徴とするクロックツリー合成方法。
【請求項６】
半導体集積回路のクロックドメインに接続された複数のフリップフロップの重心座標を求め、求めた重心座標と各フリップフロップとの距離を算出する処理と、
前記重心座標から遠いフリップフロップから順に、前記重心座標からのクロックラインにおける遅延時間をクロック遅延時間として算出する処理と、
前記重心座標から遠いフリップフロップから順に、前段のフリップフロップとの距離を求め、求めた距離からデータパスにおける遅延時間をデータ遅延時間として算出する処理と、
前記クロック遅延時間と前記データ遅延時間との和が前記クロックドメインのクロックの１周期よりも長いフリップフロップを選択する選択処理と、
選択されたフリップフロップと前段のフリップフロップとのデータパスがフォルスであるか否かを判定する処理と、
フォルスであると判定された場合には、前記選択されたフリップフロップをスキュー調整の対象外としてクロックツリーを合成する処理とを、コンピュータに実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体集積回路のクロックツリー合成装置、クロックツリー合成方法及びプログラムに関する。
【背景技術】
【０００２】
ＬＳＩにおけるロジック回路の設計手法として、同一のクロックで動作するフリップフロップ間でデータの受け渡しを行う同期設計が主流となっている。同期設計においては、クロックツリー合成（ＣＴＳ：Ｃｌｏｃｋ  Ｔｒｅｅ  Ｓｙｎｔｈｅｓｉｓ）に基いて、各フリップフロップまでのクロックスキューの合わせ込みが行われている。ＬＳＩの大規模化に伴い、フリップフロップの数が増大し、クロックソースから最も遠いフリップフロップへの距離も長くなってきている。クロックスキューの合わせ込みは、一般に、最も遠いフリップフロップのクロックの遅延に合わせて行われるため、ＣＴＳが有する全体のクロックの遅延時間が増大している。
【０００３】
一方、近年の半導体集積回路のプロセスの微細化に伴い、半導体集積回路の製造過程におけるトランジスタのばらつきが特性に与える影響が大きくなっている。ばらつきは、一般に、チップ内ばらつき（ＯＣＶ：Ｏｎ  Ｃｈｉｐ  Ｖａｒｉａｔｉｏｎ）としてタイミング設計時において考慮される。ＯＣＶの値は、クロックの遅延時間の２０％にも及んでいる。クロック遅延時間は、ＣＴＳが有する全体のクロックの遅延時間であり、ＯＣＶによる影響分は動作周期から差し引かれることから、遅延時間が大きくなるにしたがって、ＯＣＶがタイミング設計に与える影響も大きくなる。
【０００４】
このように動作周波数が高くなるにしたがって、ＯＣＶによる影響がクロック遅延時間に占める割合は大きくなり、データパスの遅延時間を短縮することが困難となる。半導体集積回路の大規模化に伴い、設計ツールの実行時間も長くなってきている。したがって、ＯＣＶの影響によって、タイミング収束のためのイタレーション時間が増大することが問題となっている。
【０００５】
上記のようにデータパスの遅延時間短縮だけではタイミング収束は困難となってきており、ＯＣＶによる影響を減らすためにクロック遅延時間を削減し、タイミング設計のイタレーション回数を削減する技術が期待されている。
【０００６】
特許文献１において、回路のクロック情報に基づいて、回路におけるＣＴＳツリーが互いに排他となり重複部分がないようにＣＴＳツリーを分割するために必要となるフォルスパスと、ＣＴＳツリー上に存在するフリップフロップ以外のポイントをリーフ扱いするためのリーフポイントとを、コンピュータによって抽出するクロック合成方法が記載されている。
【０００７】
また、特許文献２において、ＣＴＳツリーの分岐がツリー末端側に位置するように、ツリー構造を変更する技術が記載されている。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００６−０８５５９５号公報（図２、図５）
【特許文献２】特開２００７‐０２７８４１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
以下の分析は、本発明者によってなされたものである。
【００１０】
特許文献１に記載されたクロック合成方法によると、ＣＴＳツリーを分割することにより、クロックソースからのクロック遅延時間は短縮するものの、分割したＣＴＳツリー間のフリップフロップ同士のスキュー調整が必要となるため、クロック遅延時間が増大し、タイミング設計が一度で収束せず、タイミング設計のイタレーション回数が増えるという問題がある。
【００１１】
特許文献１に記載された方法によると、ＣＴＳツリーを分割することにより、ＣＴＳ構築後はスキュー調整対象のフリップフロップ数が少なくなるため、クロックの遅延時間は短縮される。しかし、特許文献１の図５を参照すると、フリップフロップＦＦ２とフリップフロップＦＦ３のスキュー調整を行うために、アンドゲートＡＮＤ１とセレクタＳＥＬ２の間にバッファが挿入される。したがって、クロック遅延時間はＣＴＳツリーを分割する以前と変わらず、タイミング設計のイタレーションが生じる。
【００１２】
そこで、半導体集積回路のクロックツリー合成において、クロック遅延時間を削減することが課題となる。本発明の目的は、かかる課題を解決するクロックツリー合成装置、クロックツリー合成方法及びプログラムを提供することにある。
【課題を解決するための手段】
【００１３】
本発明の第１の視点に係るクロック合成装置は、
半導体集積回路のクロックドメインに接続された複数のフリップフロップの重心座標を求め、求めた重心座標と各フリップフロップとの距離を算出する距離算出部と、
前記重心座標から遠いフリップフロップから順に、前記重心座標からのクロックラインにおける遅延時間をクロック遅延時間として算出するクロック遅延時間算出部と、
前記重心座標から遠いフリップフロップから順に、前段のフリップフロップとの距離を求め、求めた距離からデータパスにおける遅延時間をデータ遅延時間として算出するデータ遅延時間算出部と、
前記クロック遅延時間と前記データ遅延時間との和が前記クロックドメインのクロックの１周期よりも長いフリップフロップを選択する選択部と、
選択されたフリップフロップと前段のフリップフロップとのデータパスがフォルスであるか否かを判定する判定部と、
フォルスであると判定された場合には、前記選択されたフリップフロップをスキュー調整の対象外としてクロックツリーを合成する合成部と、を備えている。
【００１４】
本発明の第２の視点に係るクロック合成方法は、
コンピュータが、半導体集積回路のクロックドメインに接続された複数のフリップフロップの重心座標を求め、求めた重心座標と各フリップフロップとの距離を算出する工程と、
前記重心座標から遠いフリップフロップから順に、前記重心座標からのクロックラインにおける遅延時間をクロック遅延時間として算出する工程と、
前記重心座標から遠いフリップフロップから順に、前段のフリップフロップとの距離を求め、求めた距離からデータパスにおける遅延時間をデータ遅延時間として算出する工程と、
前記クロック遅延時間と前記データ遅延時間との和が前記クロックドメインのクロックの１周期よりも長いフリップフロップを選択する選択工程と、
選択されたフリップフロップと前段のフリップフロップとのデータパスがフォルスであるか否かを判定する工程と、
フォルスであると判定された場合には、前記選択されたフリップフロップをスキュー調整の対象外としてクロックツリーを合成する工程と、を含む。
【００１５】
本発明の第３の視点に係るプログラムは、
半導体集積回路のクロックドメインに接続された複数のフリップフロップの重心座標と各フリップフロップとの距離を算出する処理と、
前記重心座標から遠いフリップフロップから順に、前記重心座標からのクロックラインにおける遅延時間をクロック遅延時間として算出する処理と、
前記重心座標から遠いフリップフロップから順に、前段のフリップフロップとの距離を求め、求めた距離からデータパスにおける遅延時間をデータ遅延時間として算出する処理と、
前記クロック遅延時間と前記データ遅延時間との和が前記クロックドメインのクロックの１周期よりも長いフリップフロップを選択する選択処理と、
選択されたフリップフロップと前段のフリップフロップとのデータパスがフォルスであるか否かを判定する処理と、
フォルスであると判定された場合には、前記選択されたフリップフロップをスキュー調整の対象外としてクロックツリーを合成する処理とを、コンピュータに実行させる。
【発明の効果】
【００１６】
本発明に係るクロックツリー合成装置、クロックツリー合成方法及びプログラムによると、半導体集積回路のクロックツリー合成において、クロック遅延時間を削減することができる。
【図面の簡単な説明】
【００１７】
【図１】本発明の第１の実施形態に係るクロックツリー合成装置の構成を示すブロック図である。
【図２】本発明の第１の実施形態に係るクロックツリー合成装置の動作を示すフローチャートである。
【図３】本発明の第２の実施形態に係るクロックツリー合成方法を示すフローチャートである。
【図４】本発明の第２の実施形態に係るクロックツリー合成方法を実現するためのシステム構成を一例として示す図である。
【図５】本発明の第２の実施形態に係るクロックツリー合成方法について説明するための図である。
【発明を実施するための形態】
【００１８】
本発明の第１の展開形態によると、上記第１の視点に係るクロックツリー合成装置が提供される。
【００１９】
本発明の第２の展開形態によると、前記距離算出部は、前記複数のフリップフロップの座標の算術平均として前記重心座標を求める、クロックツリー合成装置が提供される。
【００２０】
本発明の第３の展開形態によると、前記距離算出部は、前記重心座標と各フリップフロップとの距離を、マンハッタン距離として算出する、クロックツリー合成装置が提供される。
【００２１】
本発明の第４の展開形態によると、前記選択部は、前記データ遅延時間をＴＤ、前記クロック遅延時間をＴＣ、クロックの周期をＴ、製造ぱらつき係数をαとし、Ｔ＜ＴＤ＋ＴＣ−α×ＴＣを満たすフリップフロップを選択する、クロックツリー合成装置が提供される。
【００２２】
本発明の第５の展開形態によると、前記選択部は、前記データ遅延時間をＴＤ、前記クロック遅延時間をＴＣ、クロックの周期をＴ、製造ぱらつき係数をαとし、Ｔ＜ＴＤ＋ＴＣ−α×ＴＣを満たすフリップフロップを選択する、クロックツリー合成装置が提供される。
【００２３】
本発明の第６の展開形態によると、上記第２の視点に係るクロックツリー合成方法が提供される。
【００２４】
本発明の第７の展開形態によると、上記第３の視点に係るプログラムが提供される。
【００２５】
クロックドメインにおけるフリップフロップの重心座標から離れており、スキュー調整対象外であるフリップフロップを、スキュー調整対象としてＣＴＳを構築した場合には、クロック遅延が増してしまう。本発明に係るクロックツリー合成装置は、かかるフリップフロップを抽出し、スキュー調整対象外としてＣＴＳ制約に追加する。このとき、スキュー調整が必要なフリップフロップのみについてＣＴＳを行い、クロック遅延時間を削減することができる。したがって、本発明に係るクロックツリー合成装置によると、クロック遅延が不要に増大することを防ぎ、不要なイタレーションを回避することができる。
【００２６】
（実施形態１）
本発明の第１の実施形態に係るクロック合成装置について、図面を参照して説明する。図１は、本実施形態に係るクロックツリー合成装置１０の構成を示すブロック図である。
【００２７】
図１を参照すると、クロックツリー合成装置１０は、距離算出部１１、クロック遅延時間算出部１２、データ遅延時間算出部１３、選択部１５、判定部１６及び合成部１７を有する。
【００２８】
距離算出部１１は、半導体集積回路のクロックドメインに接続された複数のフリップフロップの重心座標を求め、求めた重心座標と各フリップフロップとの距離を算出する。
【００２９】
クロック遅延時間算出部１２は、前記重心座標から遠いフリップフロップから順に、前記重心座標からのクロックラインにおける遅延時間をクロック遅延時間として算出する。
【００３０】
データ遅延時間算出部１３は、前記重心座標から遠いフリップフロップから順に、前段のフリップフロップとの距離を求め、求めた距離からデータパスにおける遅延時間をデータ遅延時間として算出する。
【００３１】
選択部１５は、前記クロック遅延時間と前記データ遅延時間との和が前記クロックドメインのクロックの１周期よりも長いフリップフロップを選択する。
【００３２】
判定部１６は、選択されたフリップフロップと前段のフリップフロップとのデータパスがフォルスであるか否かを判定する。
【００３３】
合成部１７は、フォルスであると判定された場合には、前記選択されたフリップフロップをスキュー調整の対象外としてクロックツリーを合成する。
【００３４】
図２は、本実施形態に係るクロックツリー合成装置１０の動作を示すフローチャートである。
【００３５】
図２を参照すると、距離算出部１１は、半導体集積回路のクロックドメインに接続された複数のフリップフロップの重心座標を求め、求めた重心座標と各フリップフロップとの距離を算出する（ステップＳ１１）。
【００３６】
クロック遅延時間算出部１２は、前記重心座標から遠いフリップフロップから順に、前記重心座標からのクロックラインにおける遅延時間をクロック遅延時間として算出する（ステップＳ１２）。
【００３７】
データ遅延時間算出部１３は、前記重心座標から遠いフリップフロップから順に、前段のフリップフロップとの距離を求め、求めた距離からデータパスにおける遅延時間をデータ遅延時間として算出する（ステップＳ１３）。
【００３８】
選択部１５は、前記クロック遅延時間と前記データ遅延時間との和が前記クロックドメインのクロックの１周期よりも長いフリップフロップを選択する（ステップＳ１５）
【００３９】
判定部１６は、選択されたフリップフロップと前段のフリップフロップとのデータパスがフォルスであるか否かを判定する（ステップＳ１６）
【００４０】
合成部１７は、判定部１６においてフォルスであると判定された場合には（ステップＳ１６のＹｅｓ）、前記選択されたフリップフロップをスキュー調整の対象外としてクロックツリーを合成する（ステップＳ１７）。
【００４１】
本実施形態のクロックツリー合成装置１０は、クロックドメインにおけるフリップフロップの重心座標から離れており、スキュー調整対象外であるフリップフロップを抽出し、スキュー調整対象外としてＣＴＳ制約に追加する。このとき、スキュー調整が必要なフリップフロップのみについてＣＴＳを行い、クロック遅延時間を削減することができる。したがって、本実施形態のクロックツリー合成装置１０によると、半導体集積回路のクロックツリー合成において、クロック遅延時間を削減することができる。
【００４２】
（実施形態２）
本発明の第２の実施形態に係るクロック合成方法について、図面を参照して説明する。図３は、本実施形態のクロックツリー合成方法に基く、半導体集積回路の設計方法のフローチャートを示す。図３は、セル配置（ステップＳ１００）からＣＴＳの構築（ステップＳ１１２）までの手順を示す。
【００４３】
図４は、本実施形態に係るクロック合成方法を実現するクロック合成装置のシステム構成を一例として示す図である。図４を参照すると、クライアント２０４とサーバ２０２は、ネットワーク２０３を介して接続されている。
【００４４】
サーバ２０２は、記録媒体２０１を有する。図３に示したクロックツリー合成方法のステップＳ１０１〜Ｓ１１２を実行する際、サーバ２０２に設けられた記録媒体２０１は、実行プログラム、回路素子及びマクロのライブラリ、回路のネットリスト等のデータを保持する。
【００４５】
クライアント２０４は、記録媒体２０１に格納されている実行プログラム及びデータを、ネットワーク２０３を介してダウンロードし、自身のハードディスク、メモリなどに格納して、クロックツリー合成を行う。
【００４６】
図３を参照して、本実施形態のクロック合成方法について説明する。ネット接続情報５０を入力として、チップ上にセルを配置し、デザインデータファイル（以下「ＤＥＦファイル」という）５１を出力する（ステップＳ１００）。ＤＥＦファイル５１は、配置されたセルの座標情報を含むデータファイルである。
【００４７】
次に、チップ上に配置された同一クロックドメインに含まれるすべてのフリップフロップの重心座標からの距離が遠い順に、フリップフロップを並べる（ステップＳ６０）。ここで、ステップＳ６０の詳細について説明する。
【００４８】
まず、ＣＴＳ制約ファイル５３に記載されたルート定義箇所と、セル配置（ステップＳ１００）後のネット接続情報５２を、クロックライントレースツールに入力して、ＣＴＳ制約ファイル５３に記載されたルート定義箇所の順に同一のクロックドメインに接続されたすべてのフリップフロップを抽出し、各クロックドメインに接続されたフリップフロップリスト５４を出力する（ステップＳ１０１）。
【００４９】
ここで、ルート定義情報は、ＣＴＳのルートと定義する箇所のインスタンス名が記載されている制約である。クロックライントレースツールは、指定されたインスタンス名のクロックラインに接続されたセルをトレースするツールである。
【００５０】
セル配置（ステップＳ１００）後のＤＥＦファイル５１に記載された座標情報に基いて、ステップＳ１０１で抽出された各フリップフロップのセル座標（Ｘ，Ｙ）のＸ座標、Ｙ座標のそれぞれの平均値を算出し、各クロックドメインの重心座標（ＸＣ，ＹＣ）を求める（ステップＳ１０２）。ここでは、重心座標をルートバッファ位置とする。
【００５１】
重心座標（ＸＣ，ＹＣ）から、ステップＳ１０１で抽出された各フリップフロップまでの距離を算出する（ステップＳ１０３）。距離としては、一例として、マンハッタン距離を用いることができる。
【００５２】
次に、重心座標（ＸＣ，ＹＣ）からの距離が遠い順にフリップフロップを並べた、フリップフロップリスト５５を出力する（ステップＳ１０３）。
【００５３】
次に、データパスのデータ遅延時間（遅延時間Ｂ）を算出する処理（ステップＳ６１）と、クロックラインのクロック遅延時間（遅延時間Ａ）を算出する処理（ステップＳ１０６）とを並行して行う。
【００５４】
次に、算出された遅延時間Ａと遅延時間Ｂに基き、製造ばらつきを考慮して算出したデータ遅延時間（遅延時間Ｃ）が、当該クロックドメインにおけるクロックの１周期よりも長いか否かを判定する（ステップＳ１０７）。
【００５５】
重心座標から最も遠いフリップフロップの前段のフリップフロップを抽出し、重心座標から最も遠いフリップフロップとその前段のフリップフロップの距離からデータ遅延時間を算出する（ステップＳ６１）。以下にステップＳ６１の詳細を示す。
【００５６】
フリップフロップリスト５５に記載された重心座標から最も遠いフリップフロップから順に、タイミング制約５６を基にパス解析を行い、重心座標から最も遠いフリップフロップの前段のフリップフロップを抽出し、前段のフリップフロップ５７を出力する（ステップＳ１０４）。パス解析は、一般的なパストレースツールを用いて行うことができる。
【００５７】
フリップフロップリスト５５に記載された重心座標から最も遠いフリップフロップと、ステップＳ１０４で抽出した重心座標から最も遠いフリップフロップの前段のフリップフロップとの距離からデータラインの遅延時間（以下「データ遅延時間（ＴＤ）」という）を算出する（ステップＳ１０５）。
【００５８】
重心座標から最も遠いフリップフロップとステップＳ１０４で抽出した重心座標から最も遠いフリップフロップの前段のフリップフロップとの間のデータパスの遅延時間は、後記のタイミング判定で緩い条件でもタイミング設計が困難な場合を想定するため、データパス中の論理はバッファのみとし、マンハッタン距離で最短に配置されたものとする。１つのバッファが駆動できる距離をＬ１、次段のバッファとの間の配線遅延時間をＮ１、バッファ自体の遅延時間をＣ１とする。このとき、１つのバッファが駆動するときに要する遅延時間は、距離Ｌ１ごとにＮ１＋Ｃ１となる。
【００５９】
ステップＳ１０２で求めた重心座標をルートとして、フリップフロップリスト５５に記載された重心座標から最も遠いフリップフロップに合わせてＣＴＳツリーを張った時のクロックラインの遅延時間（以下「クロック遅延時間（ＴＣ）」という）を算出する（ステップＳ１０６）。
【００６０】
ＣＴＳツリーを構成する１つのバッファが駆動し得る距離をＬ２とし、そのバッファと次段のバッファの間の配線遅延時間をＮ２とし、バッファ自身の遅延時間をＣ２とする。このとき、ＣＴＳツリーを構成する１つのバッファが駆動するときに要する遅延時間は、距離Ｌ２ごとにＮ２＋Ｃ２となる。
【００６１】
ステップＳ１０５で算出されたデータ遅延時間（ＴＤ）とステップＳ１０６で算出されたクロック遅延時間（ＴＣ）から、製造ばらつき係数をαとし、当該クロックの１周期をＴとして、Ｔ＜ＴＤ＋ＴＣ−α×ＴＣである場合には、重心座標から遠いフリップフロップであると判定し（ステップＳ１０７のＹｅｓ）、ステップＳ１０９に進む。
【００６２】
次に、タイミング制約５６を入力して、前段のフリップフロップとのタイミングがフォルスであるか否かを判定する（ステップＳ１０９）。フォルスと判定された場合には（ステップＳ１０９のＹｅｓ）、ステップＳ１１０に進む。
【００６３】
次に、重心座標から遠いフリップフロップをＣＴＳ制約ファイル５８に、当該クロックドメインに対するスキュー調整対象外として制約を追加する（ステップＳ１１０）。
【００６４】
フリップフロップリスト５５における次のフリップフロップを選択して（ステップＳ１１１）、ステップＳ６１以降及びステップＳ１０６以降を行い、フリップフロップリスト５５に記載されたフリップフロップのすべてが選択された場合には、ループを終了する。
【００６５】
ステップＳ１０７又はＳ１０９において、重心座標から遠いフリップフロップでないと判定された場合（ステップＳ１０７のＮｏ）、又は、フォルスでないと判定された場合には（ステップＳ１０９のＮｏ）、ステップＳ１０８に進む。ＣＴＳ制約ファイル５３に記載された次のクロックドメインを選択し（ステップＳ１０８）、ステップＳ１０２に戻って同様の処理を繰り返す。なお、ＣＴＳ制約ファイル５３に記載されたクロックドメインのすべてが選択された場合には、ループ処理を終了する。
【００６６】
ステップＳ１１０で作成されたＣＴＳ制約ファイル５８に基いて、ＣＴＳ構築を行い（ステップＳ１１２）、処理を終了する。
【００６７】
図５は、本実施形態のクロックツリー合成方法について説明するための図である。図５は、本実施形態のクロックツリー合成方法に従って、重心座標から遠いフリップフロップを、クロックドメインに対するスキュー調整対象外として、ＣＴＳ構築を行う場合のレイアウト図である。
【００６８】
図５を参照すると、同一クロックドメインのフリップフロップが１７個存在する。また、図３のステップＳ１１０においてＣＴＳスキュー調整対象外としてＣＴＳ制約に追加された１個のフリップフロップが、存在する場合のセルの配置図を示したものである。
【００６９】
図３のステップＳ１０２で算出されたルートバッファ位置にルートバッファＲ７１を置く。フリップフロップＦ／ＦＡは、ステップＳ１０９で前段のフリップフロップとはフォルスと判定された重心座標から遠いフリップフロップである。これ以外のフリップフロップは、前段のフリップフロップとはフォルスでないと判定されたフリップフロップである。
【００７０】
フリップフロップＦ／ＦＡを含めてＣＴＳを構築した場合には、ルートバッファＲ７１から最も遠いフリップフロップＦ／ＦＡのクロック遅延に合わせるため、ＣＴＳツリーの領域は、図４のＣＴＳツリー領域４０となる。一方、フリップフロップＦ／ＦＡをスキュー調整対象外としてＣＴＳを構築した場合には、ＣＴＳツリーの領域は、図４のＣＴＳツリー領域４１内に納まるため、クロック遅延時間が削減される。
【００７１】
本実施形態に係るクロックツリー合成方法は、半導体集積回路のクロックツリー合成方法において、
チップ上に配置された同一クロックドメインのすべてのフリップフロップの座標を抽出する工程（ステップＳ１０１）と、
抽出された座標のＸ座標及びＹ座標の平均値として、重心座標を算出する工程（ステップＳ１０２）と、
算出された重心座標から各フリップフロップまでの距離を算出する工程（ステップＳ１０３）と、
算出された距離に基いて、前記重心座標から遠いフリップフロップから順に、クロックラインにおけるクロック遅延時間（遅延時間Ａ）を算出する工程（ステップＳ１０６）と、
前記重心座標から遠いフリップフロップから順に、当該フリップフロップとその前段のフリップフロップとの距離を抽出し、この距離に基いてデータパスにおけるデータ遅延時間（遅延時間Ｂ）を算出する工程（ステップＳ１０５）と、
前記遅延時間Ａ及び前記遅延時間Ｂに基いて、製造ばらつきを考慮したデータ遅延時間（遅延時間Ｃ）を算出し、当該クロックドメインにおけるクロックの１周期よりも長い遅延時間Ｃを有するフリップフロップを選択する工程（ステップＳ１０７）と、
選択されたフリップフロップと前段のフリップフロップとのデータパスがフォルスであるか否かを判定する工程（ステップＳ１０９）と、
フォルスであると判断された場合には、当該フリップフロップをスキュー調整の対象外としてＣＴＳを構築する工程（ステップＳ１１０）とを含む。
【００７２】
これにより、クロック遅延が不要に大きくなることを防ぎ、不要なイタレーションを避けることができる。その理由は、次の通りである。
【００７３】
同一クロックドメインのフリップフロップの重心座標から離れており、スキュー調整対象外であるフリップフロップを、スキュー調整対象としてＣＴＳを構築した場合には、クロック遅延が増大する。本実施形態に係るクロックツリー合成方法によると、かかるフリップフロップを抽出して、スキュー調整対象外としてＣＴＳ制約に追加することで、スキュー調整が必要なフリップフロップのみについてＣＴＳを行い、クロック遅延時間を削減することができる。
【００７４】
すなわち、本実施形態のクロック合成方法では、同一のクロックドメインにおいて、製造ばらつきによるスキューが増える要因となる、他のフリップフロップから離れたフリップフロップを抽出し、前段のフリップフロップとのタイミングがフォルスである場合には、そのフリップフロップを、クロックドメインのスキュー調整対象から除外する。
【００７５】
したがって、本発明によると、ＣＴＳ構築後のタイミング設計が一度で収束せず、タイミング設計のイタレーション回数が多くなるという、特許文献１に記載された技術の問題を解消することができる。また、ＣＴＳ構築時に不要なスキュー調整を行わないことで、不要な製造ばらつきによるスキューもなくなり、ＣＴＳにおける不要なタイミング収束のイタレーションを回避することができる。
【００７６】
なお、上記の特許文献の各開示を、本書に引用をもって繰り込むものとする。本発明の全開示（請求の範囲を含む）の枠内において、さらにその基本的技術思想に基づいて、実施形態の変更・調整が可能である。また、本発明の請求の範囲の枠内において種々の開示要素の多様な組み合わせないし選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。
【符号の説明】
【００７７】
１０  クロックツリー合成装置
１１  距離算出部
１２  クロック遅延時間算出部
１３  データ遅延時間算出部
１５  選択部
１６  判定部
１７  合成部
４０、４１  ＣＴＳツリー領域
５０、５２  ネット接続情報
５１  デザインデータファイル（ＤＥＦファイル）
５３  ＣＴＳ制約ファイル
５４  各クロックドメインに接続されたフリップフロップリスト
５５  遠い順のフリップフロップリスト
５６  タイミング制約
５７  前段のフリップフロップ
５８  ＣＴＳ制約ファイル
２０１  記録媒体
２０２  サーバ
２０３  ネットワーク
２０４  クライアント
Ｒ７１  ルートバッファ
Ｆ／ＦＡ  フリップフロップ
【図１】
2011141805.tif 000003
【図２】
2011141805.tif 000004
【図３】
2011141805.tif 000005
【図４】
2011141805.tif 000006
【図５】
2011141805.tif 000007