(57)【要約】【課題】消費電力の低減化と、セットアップ／ホールド・エラー改善に要する時間の短縮化を図ることができるクロックツリー作成方法を提供する。【解決手段】各セルの配置後、クロックツリーを仮配線し、クロックルートピンから各クロック負荷セルのクロック端子までの配線長が所定範囲内となるようにクロック負荷セルを再配置し（Ｓ１〜Ｓ５）、クロックスキュー等が規定値に合うようにクロックツリーに遅延素子を仮配置し（Ｓ６）、セットアップ／ホールド・エラーがあるデータパスに対しては、スラック値が小さくなるようにクロック負荷セルの再配置等を行い、セットアップ／ホールド・エラーがないデータパスに対しては、クロック負荷セルを互いに近づける再配置を行う（Ｓ７〜Ｓ１２）。そして、最終的に、クロックスキュー等の再調整を行い、仮配置したクロックツリー上の遅延素子の配置位置を調整して最終配置を行う（Ｓ１３、Ｓ１４）。【選択図】      図１
2006319162.tif 000002
【特許請求の範囲】
【請求項１】
各セルを配置した後、クロックツリーを仮配線し、クロックルートピンから各クロック負荷セルのクロック端子までの配線長が所定範囲内となるように前記クロック負荷セルを再配置する工程を含むことを特徴とするクロックツリー作成方法。
【請求項２】
前記クロック負荷セルを再配置する工程の後に、クロックスキュー、クロックスリューおよびクロックディレイが規定値に合うように前記クロックツリー上に遅延素子を仮配置し、セットアップ／ホールド・エラーがあるクロック負荷セルに対しては、スラック値を小さくするための所定処理を行い、セットアップ／ホールド・エラーがないクロック負荷セルに対しては、互いに近づける工程を含むことを特徴とする請求項１記載のクロックツリー作成方法。
【請求項３】
各セルを配置した後、クロックツリーを仮配線し、クロックルートピンから各クロック負荷セルのクロック端子までの配線長が所定範囲内となるように前記クロック負荷セルを再配置する工程をコンピュータに実行させるプログラムを含むことを特徴とするクロックツリー作成プログラム。
【請求項４】
前記クロック負荷セルを再配置する工程の後に、クロックスキュー、クロックスリューおよびクロックディレイが規定値に合うように前記クロックツリー上に遅延素子を仮配置し、セットアップ／ホールド・エラーがあるクロック負荷セルに対しては、スラック値を小さくするための所定処理を行い、セットアップ／ホールド・エラーがないクロック負荷セルに対しては、互いに近づける工程を前記コンピュータに実行させるプログラムを含むことを特徴とする請求項３記載のクロックツリー作成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体集積回路のレイアウト工程で使用するクロックツリー作成方法およびクロックツリー作成プログラムに関する。
【背景技術】
【０００２】
図４は従来の半導体集積回路のレイアウト方法の一例の一部分を示す流れ図である。このレイアウト方法では、クロックツリーを作成する場合、まず、データパスの接続を考慮した各セルの配置およびデータパス、クロックパスの配線を行う（ステップＰ１）。
【０００３】
図５（Ａ）はステップＰ１によるセルの配置例およびクロック配線例を示しており、１〜７はフリップフロップやレジスタ等、クロックに同期して動作するクロック負荷セル、８〜１２はデータパス、１３はクロック供給の起点となるクロックルートピン、１４はクロックツリーである。
【０００４】
次に、クロックルートピンから各クロック負荷セルのクロック端子までのディレイを計算し、クロックスキューを小さくするために、クロックツリー上にバッファを挿入し（ステップＰ２）、クロックツリー作成を終了する。図５（Ｂ）はステップＰ２によるクロックツリー上へのバッファ挿入例を示しており、１５〜２０はバッファである。
【０００５】
次に、ＳＴＡ（static timing analysis）を実施し、セットアップ／ホールド・エラーを抽出し（ステップＰ３）、セットアップ／ホールド・エラーの有無を判定し（ステップＰ４）、セットアップ／ホールド・エラーがなくなるまで、データパスのバッファの削除、リサイズ、挿入を行い、データパスのディレイ調整を行う（ステップＰ５）。
【特許文献１】特開平０９−６９１１９号公報
【特許文献２】特開平０９−９１０５５号公報
【特許文献３】特開２００３−３１６８４３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
図４に示す従来の半導体集積回路のレイアウト方法では、データパスの接続を考慮して各セルを配置してクロックツリーを作成した後、クロックルートピンから各クロック負荷セルのクロック端子までのクロック配線長を検討してクロック負荷セルの再配置を行い、クロックツリーを再構築するということは行われない。
【０００７】
このため、クロックスキューを抑えるために、クロックの到達時刻の遅いクロック負荷セルのクロック端子に対する配線遅延に合わせて、クロックの到達時刻の早いクロック負荷セルのクロック端子に対する配線遅延をクロックバッファの挿入により増加させているが、これが、クロックツリー長の増加による遅延時間の増加や、クロックバッファの増大による消費電力の増加を招いていた。
【０００８】
また、図４に示す従来の半導体集積回路のレイアウト方法では、セットアップ／ホールド・エラーを無くすために、データパス上のバッファの削除、リサイズ、挿入によりデータパスのディレイ調整を行うとしており、クロックツリーについては何ら調整しない。このため、セットアップ／ホールド・エラーを調整するために長期間を要するという問題点があった。
【０００９】
本発明は、かかる点に鑑み、クロックツリー上の遅延素子の数を減らすことによる消費電力の低減化と、セットアップ／ホールド・エラー改善をクロックツリー作成時に行うことによるセットアップ／ホールド・エラー改善に要する時間の短縮化を図ることができるようにしたクロックツリー作成方法およびクロックツリー作成プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
本発明のクロックツリー作成方法は、各セルを配置した後、クロックツリーを仮配線し、クロックルートピンから各クロック負荷セルのクロック端子までの配線長が所定範囲内となるように前記クロック負荷セルを再配置する工程を含むものである。
【００１１】
本発明のクロックツリー作成プログラムは、各セルを配置した後、クロックツリーを仮配線し、クロックルートピンから各クロック負荷セルのクロック端子までの配線長が所定範囲内となるように前記クロック負荷セルを再配置する工程をコンピュータに実行させるプログラムを含むものである。
【発明の効果】
【００１２】
本発明によれば、各セルが配置された後、クロックツリーが仮配線され、クロックルートピンから各クロック負荷セルのクロック端子までの配線長が所定範囲内となるようにクロック負荷セルが再配置される。したがって、クロックツリー上の遅延素子の数を減らし、消費電力の低減化を図ることができる。
【００１３】
なお、その後、クロックスキュー、クロックスリュー、クロックディレイが規定値に合うようにクロックツリー上に遅延素子を仮配置し、セットアップ／ホールド・エラーがあるクロック負荷セルについては、スラック値が小さくなるような処理を行い、セットアップ／ホールド・エラーがないクロック負荷セルについては、互いに近づける処理を実行する場合には、セットアップ／ホールド・エラー改善をクロックツリー作成時に行うことができ、セットアップ／ホールド・エラー改善に要する時間の短縮化を図ることができる。
【発明を実施するための最良の形態】
【００１４】
図１は本発明のクロックツリー作成方法の一実施形態を示す流れ図である。本発明のクロックツリー作成方法の一実施形態においては、フロアプラン終了後（マクロ、ＲＯＷ配置後）、まず、データパスの接続を考慮した各セルの配置およびデータパスの配線を行う（ステップＳ１）。図２（Ａ）はステップＳ１によるセルの配置例を示しており、１〜７はフリップフロップやレジスタ等、クロックに同期して動作するクロック負荷セル、８〜１２はデータパス、１３はクロック供給の起点となるクロックルートピンである。
【００１５】
なお、配置ツールとしては、通常のプレーサを用いることができる。通常のプレーサはデータパスの接続を考慮した各セルの配置を行う。その際、クロックツリーには、ダミークロックバッファが各々のクロックルートに１つ入っており、ファンアウトは無制限の状態なので、クロック接続を考慮した各セルの配置は行われない。
【００１６】
次に、配線ルールを考慮して、クロックルートピンから各クロック負荷セルのクロック端子までの仮配線を行う（ステップＳ２）。図２（Ｂ）はステップＳ２によるクロックツリーの仮配線例を示しており、１４は仮配線によるクロックツリーである。
【００１７】
次に、クロックルートピンから各クロック負荷セルのクロック端子までの配線長を算出する（ステップＳ３）。この場合、各クロック負荷セルは、初期配置のままであるから、クロックルートピンから各クロック負荷セルのクロック端子までの配線長は大きく異なっている。この各々の配線長をＬ｛Ｌ１、Ｌ２、Ｌ３、…、Ｌｎ｝とする。
【００１８】
次に、クロックルートピンから各クロック負荷セルのクロック端子までの配線長Ｌがほぼ同じ値と言えるような範囲内（ａ＜Ｌ＜ｂ）となるようにクロック負荷セルの再配置を行う（ステップＳ４、Ｓ５）。但し、ａ、ｂはテクノロジで決まる値である。図２（Ｃ）はステップＳ３によるクロック負荷セルの再配置例を示している。
【００１９】
ここで、ａ、ｂの値は、クロックルートピンから各クロック負荷セルのクロック端子までの配線長Ｌの平均値Ｌａ＝（Ｌ１＋Ｌ２＋Ｌ３＋…＋Ｌｎ）／ｎを基準とする一定範囲内の値、例えば、ａ＝Ｌａ×０.９、ｂ＝Ｌａ×１.１と決定するようにしても良いし、あるいは、クロックバッファ数個分で調整できる範囲を算出することにより決定するようにしても良い。なお、クロック負荷セルの移動距離に制限をもたせることにより、a、ｂの範囲を小さくし、かつ、クロック負荷セル再配置後のＬａの値を小さくする方向にクロック負荷セルが再配置されることが望ましく効果が大きい。
【００２０】
次に、クロックスキュー、クロックスリュー、クロックディレイが規定値に合うようにクロックツリーの仮配線上に遅延素子であるバッファ、インバータを仮配置する（ステップＳ６）。前述のように、クロックツリーの仮配線上にダミークロックバッファがある場合には、これを削除する。なお、このとき、クロックツリーの構造とクロック負荷セルの配置は、クロックツリー上のバッファ、インバータの挿入個数が、ステップＳ４の処理により、従来の場合よりも少なくなるようになっている。
【００２１】
次に、データパスおよびクロックパスの容量抽出を行い、クロックツリーのディレイを考慮したＳＴＡを行い、データパスのセットアップ／ホールド・エラーを抽出し、データパスのセットアップ／ホールド・エラー有無を判定する（ステップＳ７、Ｓ８）。なお、容量抽出およびＳＴＡは簡易的な方法で良い。
【００２２】
そして、セットアップ／ホールド・エラーがあるデータパスに対しては（セットアップ／ホールド・エラーがあるクロック負荷セルに対しては）、セットアップ／ホールド・エラーのスラック値が小さくなるようにクロック負荷セルの再配置、クロックツリーの仮配線上のバッファ、インバータの削除、リサイズ、クロックツリーの仮配線上へのバッファ、インバータの仮配置を行う（ステップＳ９）。
【００２３】
なお、スラック値の調整は、セットアップエラーの場合には、データパスが短くなるように、即ち、ディレイが小さくなるようにし、ホールドエラーの場合には、データパスが長くなるように、即ち、ディレイが大きくなるようにする。この場合、クロックディレイ値およびクロックスキュー値を変化させないことが望ましいが、許容範囲を設定するようにしても良い。即ち、ｃ＜skew＜ｄ≦skew_limitとしても良い。但し、ｃ、ｄはskewにより決まる値である。
【００２４】
これに対して、セットアップ／ホールド・エラーが無いデータパスに対しては（セットアップ／ホールド・エラーが無いクロック負荷セルに対しては）、セットアップ／ホールド・エラーを発生させない範囲で各クロック負荷セルを近づける再配置を行う（ステップＳ１０）。図２（Ｄ）はステップＳ１０によるクロック負荷セルの再配置例を示している。なお、この場合、クロックディレイ値およびクロックスキュー値を変化させないことが望ましいが、ステップＳ９の場合と同様に、許容範囲を設定するようにしても良い。
【００２５】
そして、ステップＳ９又はステップＳ１０の後、データパスおよびクロックパスの容量抽出を行い、クロックツリーのディレイを考慮したＳＴＡを行い、データパスのセットアップ／ホールド・エラーを抽出し、セットアップ／ホールド・エラーが改善されたか否かを判定する（ステップＳ１１、Ｓ１２）。容量抽出およびＳＴＡは簡易的な方法で良い。
【００２６】
なお、ステップＳ８でセットアップ／ホールド・エラーが無いと判定され、ステップＳ１０を実行した場合であっても、セットアップ／ホールド・エラーのスラック値が改善されていれば、ステップＳ１２では、セットアップ／ホールド・エラーは改善されたと判定される。
【００２７】
ステップＳ１２で、セットアップ／ホールド・エラーが改善された場合には、更に改善の余地があるとして、ステップＳ８に戻る。これに対して、セットアップ／ホールド・エラーが改善されなかった場合には、これ以上は改善の余地がないとして、最終的に、クロックスキュー、クロックスリュー、クロックディレイの再調整を行い、仮配置したクロックツリー上のバッファ、インバータの配置位置を調整して最終配置を行い（ステップＳ１３）、クロックツリー作成終了（ステップＳ１４）とする。
【００２８】
図３は本発明のクロックツリー作成方法の一実施形態を実施するためのクロックツリー作成装置の一例の概略的構成図である。このクロックツリー作成装置は、コンピュータで構成されており、中央処理装置１００、ＩＯ（input／output）装置２００、外部記憶装置３００および内部記憶装置４００を有し、ＩＯ装置２００として、キーボード２０１、マウス２０２、ＣＲＴ等の表示装置２０３およびプリンタ２０４を備えている。
【００２９】
本例では、外部記憶装置３００には、レイアウト対象のＬＳＩについての論理設計データ（ネットリスト）３０１、物理設計データ（配置配線データ）３０２およびタイミング解析データ（ＳＴＡデータ）３０３が格納される。
【００３０】
また、内部記憶装置４００には、ライブラリファイル４１０、プログラムファイル４２０および許容値ファイル４３０が格納される。許容値ファイル４３０は、セットアップ／ホールド・タイム許容値、クロックスキュー許容値、クロックスリュー許容値、ステップＳ４、Ｓ５においてクロック配線長の範囲を決めるａ、ｂの値、ステップＳ９、Ｓ１０においてクロックスキューの変動範囲を決めるｃ、ｄの値などを記述したものである。
【００３１】
ライブラリファイル４１０には、セル物理ライブラリ４１１、セルタイミングライブラリ４１２および負荷容量ファイル４１３が含まれる。セル物理ライブラリ４１１は、各セルのサイズ等を記述したものである。セルタイミングライブラリ４１２は、各セルの遅延情報等を記述したものである。負荷容量ファイル４１３は、各セルの入力負荷容量、単位長配線の負荷容量、ビア（via）１個当たりの負荷容量などを記述したものである。
【００３２】
プログラムファイル４２０には、配置プログラム４２１、配線プログラム４２２、配線長算出プログラム４２３、再配置プログラム４２４、容量抽出プログラム４２５、ＳＴＡプログラム４２６およびセットアップ／ホールド・エラー判定プログラム４２７が含まれる。
【００３３】
配置プログラム４２１は、セル配置処理を行うためのプログラムである。配線プログラム４２２は、配線処理を行うためのプログラムである。配線長算出プログラム４２３は、クロック配線長の算出処理およびクロック配線長が許容範囲（ａ＜Ｌ＜ｂ）にあるか否かの判定処理を行うためのプログラムである。再配置プログラム４２４は、セル再配置処理を行うためのプログラムである。
【００３４】
容量抽出プログラム４２５は、データパスおよびクロック配線の容量抽出処理を行うためのプログラムである。ＳＴＡプログラム４２６は、ＳＴＡを行うためのプログラムである。セットアップ／ホールド・エラー判定プログラム４２７は、セットアップ／ホールド・エラーの判定処理およびセットアップ／ホールド・エラーが改善されたか否かの判定処理を行うためのプログラムである。
【００３５】
本例では、ステップＳ１は、配線プログラム４２１、配線プログラム４２２等を使用し、中央処理装置１００をセル配置およびデータパス配線処理手段として機能させることにより実行される。ステップＳ２は、配線プログラム４２２等を使用し、中央処理装置１００をクロックツリー仮配線処理手段として機能させることにより実行される。
【００３６】
ステップＳ３は、配線長算出プログラム４２３等を使用し、中央処置装置１００をクロック配線長算出手段として機能させることにより実行される。ステップＳ４は、再配置プログラム４２４等を使用し、中央処理装置１００をクロック負荷セルの再配置処理手段として機能させることにより実行される。
【００３７】
ステップＳ５は、配線長算出プログラム４２３、許容値ファイル４３０等を使用し、中央処理装置１００を配線長判定処理手段として機能させることにより実行される。ステップＳ６は、配置プログラム４２１等を使用し、中央処理装置１００をバッファ、インバータの仮配置処理手段として機能させることにより実行される。
【００３８】
ステップＳ７は、容量抽出プログラム４２５、ＳＴＡプログラム４２６等を使用し、中央処理装置１００を容量抽出手段、ＳＴＡ処理手段として機能させることにより実行される。ステップＳ８は、セットアップ／ホールド・エラー判定プログラム４２７等を使用し、中央処理装置１００をセットアップ／ホールド・エラー有無判定手段として機能させることにより実行される。
【００３９】
ステップＳ９は、再配置プログラム４２４、配置プログラム４２１等を使用し、中央処理装置１００をクロック負荷セルの再配置処理手段などとして機能させることにより実行される。ステップＳ１０は、再配置プログラム４２４等を使用し、中央処理装置１００をクロック負荷セルの再配置処理手段として機能させることにより実行される。
【００４０】
ステップＳ１１は、容量抽出プログラム４２５、ＳＴＡプログラム４２６等を使用し、中央処理装置１００を容量抽出手段、ＳＴＡ処理手段として機能させることにより実行される。ステップＳ１２は、セットアップ／ホールド・エラー判定プログラム４２７、許容値ファイル４３０等を使用し、中央処理装置１００をセットアップ／ホールド・エラー改善判定手段として機能させることにより実行される。
【００４１】
ステップＳ１３は、配置プログラム４２１等を使用し、中央処理装置１００をバッファ、インバータの位置調整・配置処理手段として機能させることにより実行される。なお、中央処理装置１００は、クロックツリー作成が終了すると、新たなネットリストおよび配置配線データを出力する。
【００４２】
以上のように、本発明のクロックツリー作成方法の一実施形態においては、各セルが配置された後、クロックツリーが仮配線され、クロックルートピンから各クロック負荷セルのクロック端子までの配線長が略同一値とみなせる所定範囲（ａ＜Ｌ＜ｂ）内となるようにクロック負荷セルが再配置される（ステップＳ１〜Ｓ５）。
【００４３】
この結果、その後、クロックスキュー、クロックスリュー、クロックディレイが規定値に合うようにクロックツリーの仮配線上にバッファ、インバータが仮配置されるときには（ステップＳ６）、クロックツリーの構造とクロック負荷セルの配置は、クロックツリー上のバッファ、インバータの挿入個数が従来の場合よりも少なくなるようになっている。したがって、クロックツリー上のバッファ、インバータの数を減らすことによる消費電力の低減化を図ることができる。
【００４４】
また、その後、セットアップ／ホールド・エラー改善の余地がある限り、セットアップ／ホールド・エラーがあるデータパスに対しては、スラック値が小さくなるようにクロック負荷セルの再配置およびクロックツリー上のバッファ、インバータの削除、リサイズ、クロックツリー上へのバッファ、インバータの仮配置が行われ、セットアップ／ホールド・エラーがないデータパスに対しては、クロック負荷セルを互いに近づける再配置が行われる（ステップＳ７〜Ｓ１２）。
【００４５】
そして、セットアップ／ホールド・エラー改善の余地が無くなると、最終的に、クロックスキュー、クロックスリュー、クロックディレイの再調整が行われ、仮配置したクロックツリー上のバッファ、インバータの配置位置が調整されて最終配置が行われ、クロックツリー作成終了とされる（ステップＳ１３、Ｓ１４）。
【００４６】
このように、本発明のクロックツリー作成方法の一実施形態によれば、セットアップ／ホールド・エラー改善をクロックツリー作成時に行うことができる。したがって、セットアップ／ホールド・エラー改善をクロックツリー作成時に行うことによるセットアップ／ホールド・エラー調整に要する時間を短縮することができる。
【図面の簡単な説明】
【００４７】
【図１】本発明のクロックツリー作成方法の一実施形態を示す流れ図である。
【図２】本発明のクロックツリー作成方法の一実施形態を説明するための図である。
【図３】本発明のクロックツリー作成方法の一実施形態を実施するためのクロックツリー作成装置の一例の概略的構成図である。
【図４】従来の半導体集積回路のレイアウト方法の一例の一部分を示す流れ図である。
【図５】図４に示す従来の半導体集積回路のレイアウト方法を説明するための図である。
【符号の説明】
【００４８】
１〜７…クロック負荷セル
８〜１２…データパス
１３…クロックルートピン
１４…クロックツリー
１５〜２０…クロックバッファ
１００…中央処理装置
２００…ＩＯ装置
２０１…キーボード
２０２…マウス
２０３…表示装置
２０４…プリンタ
３００…外部記憶装置
３０１…ＬＳＩ論理設計データ（ネットリスト）
３０２…ＬＳＩ物理設計データ（配置配線データ）
３０３…ＬＳＩタイミング解析データ（ＳＴＡデータ）
４００…内部記憶装置
４１０…ライブラリファイル
４１１…セル物理ライブラリ
４１２…セルタイミングライブラリ
４１３…負荷容量ファイル
４２０…プログラムファイル
４２１…配置プログラム
４２２…配線プログラム
４２３…配線長算出プログラム
４２４…再配置プログラム
４２５…容量抽出プログラム
４２６…ＳＴＡプログラム
４２７…セットアップ／ホールド・エラー判定プログラム
４３０…許容値ファイル
【図１】
2006319162.tif 000003
【図２】
2006319162.tif 000004
【図３】
2006319162.tif 000005
【図４】
2006319162.tif 000006
【図５】
2006319162.tif 000007