(57)【特許請求の範囲】
【請求項１】
スキャンチェーンを含んだ回路に供給されるクロック信号に対してクロックツリーを形成するクロックツリー生成手段と、クロックツリーの中で各クロックセルが駆動するセルをそれぞれセルグループとして、これらのセルグループ間のチェーンの数が減少するようにスキャンチェーンの接続を変更するスキャンチェーン再構成手段と、スキャンチェーンを含んだ回路のネットリストを入力としてネットリスト中の各セルを配置するセル配置手段と、配置された各セル間を配線するセル間配線手段と、セルの配置配線結果より遅延情報を抽出する遅延情報抽出手段と、遅延情報の抽出結果にもとづいてクロックスキューを低減するクロックスキュー低減手段と、遅延情報抽出手段により抽出された遅延情報により、回路が誤動作を起こさないクロック信号の遅延範囲を計算するクロックスキュー拡大値算出手段と、このクロックスキュー拡大値算出手段により算出されたクロックスキュー拡大値の範囲内でクロックスキューを拡大するクロックスキュー拡大手段とを備えたことを特徴とする集積回路のためのクロック生成装置。
【請求項２】
クロックスキュー拡大値算出手段は、スキャンチェーンの一部もしくは全部における誤動作をチェックしないように構成されていることを特徴とする請求項１記載の集積回路のためのクロック生成装置。
【請求項３】
クロックスキュー拡大手段によってクロックスキューを拡大した後に回路の遅延情報を抽出して、スキャンチェーンの誤動作が起こらないかどうかを確認し、誤動作が起こる場合にはその誤動作を除去するスキャンチェーン動作保証手段を備えたことを特徴とする請求項１または２記載の集積回路のためのクロック生成装置。
【請求項４】
スキャンチェーン動作保証手段は、スキャンチェーンの誤動作が起こる場合に、セルグループ間のチェーンの接続を変更するか、ネットリストに含まれるセルとは別に遅延を発生させるための遅延セルをセルグループ間のチェーンに挿入するか、誤動作を起こすチェーン部分の配線を変更することにより、スキャンチェーンの誤動作をなくすように構成されていることを特徴とする請求項３記載の集積回路のためのクロック生成装置。
【請求項５】
遅延セルはセル配置手段によってあらかじめ配置されていることを特徴とする請求項４記載の集積回路のためのクロック生成装置。
【請求項６】
クロックスキュー低減手段は、クロックツリーに含まれる各セルの駆動能力を変更することによってクロックスキューを低減可能であることを特徴とする請求項１から５までのいずれか１項記載の集積回路のためのクロック生成装置。
【請求項７】
クロックスキュー低減手段は、クロックツリーに含まれる各セル間の配線を変更することによってクロックスキューを低減可能であることを特徴とする請求項１から５までのいずれか１項記載の集積回路のためのクロック生成装置。
【請求項８】
クロックスキュー低減手段は、クロックツリー構造を変更することによってクロックスキューを低減可能であることを特徴とする請求項１から５までのいずれか１項記載の集積回路のためのクロック生成装置。
【請求項９】
クロックスキュー拡大手段は、クロックツリーに含まれる各セルの駆動能力を変更することによってクロックスキューを拡大可能であることを特徴とする請求項１から８までのいずれか１項記載の集積回路のためのクロック生成装置。
【請求項１０】
クロックスキュー拡大手段は、クロックツリーに含まれる各セル間の配線を変更することによってクロックスキューを拡大可能であることを特徴とする請求項１から８までのいずれか１項記載の集積回路のためのクロック生成装置。
【請求項１１】
クロックスキュー拡大手段は、クロックツリー構造を変更することによってクロックスキューを拡大可能であることを特徴とする請求項１から８までのいずれか１項記載の集積回路のためのクロック生成装置。
【請求項１２】
同一の大きさと同一のピン位置とを持った駆動能力の異なる複数のセルが、クロックツリーに含まれるセルとして使用されていることを特徴とする請求項１から１１までのいずれか１項記載の集積回路のためのクロック生成装置。
【請求項１３】
スキャンチェーンを含んだ回路に供給されるクロック信号に対してクロックツリーを形成し、クロックツリーの中で各クロックセルが駆動するセルをそれぞれセルグループとして、これらのセルグループ間のチェーンの数が減少するようにスキャンチェーンの接続を変更し、スキャンチェーンを含んだ回路のネットリストを入力としてネットリスト中の各セルを配置し、配置された各セル間を配線し、セルの配置配線結果より遅延情報を抽出し、遅延情報の抽出結果にもとづいてクロックスキューを低減し、抽出された前記遅延情報により、回路が誤動作を起こさないクロック信号の遅延範囲に対応したクロックスキュー拡大値を計算し、算出されたクロックスキュー拡大値の範囲内でクロックスキューを拡大することを特徴とする集積回路のためのクロック生成方法。
【請求項１４】
クロックスキュー拡大値を計算する際に、スキャンチェーンの一部もしくは全部における誤動作をチェックしないことを特徴とする請求項１３記載の集積回路のためのクロック生成方法。
【請求項１５】
クロックスキューを拡大した後に回路の遅延情報を抽出して、スキャンチェーンの誤動作が起こらないかどうかを確認し、誤動作が起こる場合にはその誤動作を除去することを特徴とする請求項１３または１４記載の集積回路のためのクロック生成方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、集積回路のためのクロック生成装置および生成方法に関する。
【０００２】
【従来の技術】
半導体回路におけるツリー形式に基づくクロック分配回路では、特開平９−２５８８４０号公報に記されているように、誤動作を防ぎかつ高速動作を行わせるため、各フリップフロップのクロック信号が到達する時間をできるだけ等しくしている。すなわち、クロックスキューをできるだけ小さくするように、分配経路の調整や、クロックツリーを構成するトランジスタのサイズの調整を行っている。換言すると、近年のディジタル回路の進歩により、回路の高速化、高集積化がますます進んでいるが、回路の高速化は、クロックスキューを低減することによっても実現されている。
【０００３】
図１８に従来のブロックレイアウト設計装置の例を示す。ここで１８０１はクロックツリー生成装置、１８０２はセル配置装置、１８０３は配線装置、１８０４は遅延情報抽出装置、１８０５はクロックスキュー低減装置である。
以上のように構成された従来のブロックレイアウト設計装置によれば、クロックツリー生成装置１８０１で、ブロックの入力クロックに対してクロックツリーが構成され、セル配置装置１８０２と配線装置１８０３とで配置配線が行なわれる。そして、配置配線結果から遅延情報抽出装置１８０４で遅延情報を抽出し、クロックスキューが合っているかどうかの計算が行われる。最後に、この計算結果に基づいて、クロックスキュー低減装置１８０５で、クロックツリーの構成の変更や、クロックツリーを構成する各セルのドライブ能力の変更や、配線の変更等を行なうことによって、クロックスキューが低減されることになる。
【０００４】
【発明が解決しようとする課題】
しかしながら、図１８に示したような従来のブロックレイアウト設計装置では、クロックスキューが低減されているために、クロックが供給されるセルがクロックに対してほぼ同時に動作してしまう。このため、クロックの変化時の瞬間電流が大きくなってしまい、電源電圧降下が大きくなったり、発生ノイズが大きくなるという問題を有している。
【０００５】
詳細には、従来より、半導体集積回路の回路規模の増大に伴い、回路に含まれるフリップフロップやラッチ等の、クロック信号に同期して動作する素子の数が増大し、合わせてクロックツリーを構成する素子の数が増大してきている。また、クロック周波数の向上に伴い、クロック信号をフルスイングさせるためクロックツリーを構成する各素子の波形を急峻にすることが必要となってきている。その結果、多数の素子がクロック信号に同期してほぼ同時に動作すると、クロック信号の変化時にクロックツリーに流れる瞬時電流が増加し、電圧降下や輻射ノイズの発生という問題を生じる。
【０００６】
以上の従来の問題点を鑑み、本発明は、回路の動作に影響を与えずにクロック変化時の瞬間電流を小さくし、それによって電源電圧の降下やノイズの発生といった問題を抑えるようにすることを目的とする。
【０００７】
【課題を解決するための手段】
この目的を達成するため本発明は、スキャンチェーンを含んだ回路に供給されるクロック信号に対してクロックツリーを形成するクロックツリー生成手段と、クロックツリーの中で各クロックセルが駆動するセルをそれぞれセルグループとして、これらのセルグループ間のチェーンの数が減少するようにスキャンチェーンの接続を変更するスキャンチェーン再構成手段と、スキャンチェーンを含んだ回路のネットリストを入力としてネットリスト中の各セルを配置するセル配置手段と、配置された各セル間を配線するセル間配線手段と、セルの配置配線結果より遅延情報を抽出する遅延情報抽出手段と、遅延情報の抽出結果にもとづいてクロックスキューを低減するクロックスキュー低減手段と、遅延情報抽出手段により抽出された遅延情報により、回路が誤動作を起こさないクロック信号の遅延範囲を計算するクロックスキュー拡大値算出手段と、このクロックスキュー拡大値算出手段により算出されたクロックスキュー拡大値の範囲内でクロックスキューを拡大するクロックスキュー拡大手段とを備えたものである。
これにより、回路の正常動作を保ちながらクロックスキューを拡大し、したがってクロック変化時の瞬間電流が小さくなり、電源電圧降下やノイズ発生を抑制することができる。また、クロックスキューを大きくした場合に誤動作しやすいスキャンチェーンによってこのクロックスキューの拡大範囲が小さく制限されることも防いでいる。
【０００８】
【発明の実施の形態】
【００１５】
（第１の実施の形態）
図１は、本発明の第１の実施の形態にもとづくブロックレイアウト設計装置を示す。この図１において、１０１はクロックツリー生成装置、１０２はセル配置装置、１０３は配線装置、１０４は遅延情報抽出装置、１０５はクロックスキュー低減装置で、ここまでの構成は上述の図１８に示した従来のものと同じである。図１の装置では、さらに、クロックスキュー拡大値算出装置１０６と、クロックスキュー拡大装置１０７とを備える。
【００１６】
図２は、図１のブロックレイアウト設計装置を用いて設計を行なう対象となる回路である。この図２において、２０１はクロック入力、２０２〜２０７はフリップフロップ、２０８〜２１３は組合せ論理回路である。フリップフロップ２０２〜２０７は同一のクロック入力２０１で駆動されている。
ここで、図２の回路全体は１０ｎｓｅｃ以内のサイクルで動作しなくてはならない。またフリップフロップ２０２〜２０７のセットアップ時間は１ｎｓｅｃである。
【００１７】
以上のように構成された、本発明の第１の実施の形態にもとづくブロックレイアウト設計装置について、以下にその動作を示す。まず、図２に示す回路に対して、図１のクロックツリー生成装置１０１でクロックツリーを形成する。クロックツリーを生成した回路を図３に示す。図３において、３０１〜３０３はクロックツリーを構成するクロックバッファであり、クロックバッファ３０１はクロックバッファ３０２、３０３を駆動しており、クロックバッファ３０２はフリップフロップ２０２、２０４、２０６を駆動しており、クロックバッファ３０３はフリップフロップ２０３、２０５、２０７を駆動している。
【００１８】
この図３のクロックツリーが挿入された回路に対して、次に、図１のセル配置装置１０２、配線装置１０３、遅延情報抽出装置１０４によって、図２に示す回路の配置配線と、配置配線後の遅延値の抽出とが行なわれる。そしてさらに、遅延情報の抽出結果にもとづいて、クロックスキュー低減装置１０５により各セルの駆動能力を変更することで、クロックスキューの低減が行なわれる。クロックスキュー低減まで完了した時点での回路の各素子の遅延を図４に示す。すなわち図４には、フリップフロップ２０２〜２０７の遅延値と、組合せ論理回路２０８〜２１３の遅延値と、クロックバッファ３０１〜３０３の遅延値とが示されている。
【００１９】
次に、図１のクロックスキュー拡大値算出装置１０６によって、クロックスキューをどこまで拡大できるかを計算する。クロックバッファ３０２からフリップフロップ２０２、２０４、２０６にクロックが供給される時刻をＴＡ、クロックバッファ３０３からフリップフロップ２０３、２０５、２０７にクロックが供給される時刻をＴＢとすると、上述のようにフリップフロップ２０２とフリップフロップ２０３の間が１０ｎｓｅｃ以内のサイクルで動作しなくてはならないので、
（フリップフロップ２０２の遅延時間）
＋（組合せ論理回路２０８の遅延時間）
＋（フリップフロップ２０３のセットアップ時間）
≦１０ｎｓｅｃ
＋（フリップフロップ２０３のクロック到達時刻）
−（フリップフロップ２０２のクロック到達時刻）
が満たされている必要がある。したがって、
ＴＡ−ＴＢ≦２ｎｓｅｃ
が満たされている必要がある。同様にして、フリップフロップ２０３、２０４間、フリップフロップ２０４、２０５間、フリップフロップ２０５、２０６間、フリップフロップ２０６、２０７間、フリップフロップ２０４、２０７間についても考えると、それぞれ
ＴＢ−ＴＡ≦１ｎｓｅｃ
ＴＡ−ＴＢ≦３ｎｓｅｃ
ＴＢ−ＴＡ≦２ｎｓｅｃ
ＴＡ−ＴＢ≦６ｎｓｅｃ
ＴＡ−ＴＢ≦３ｎｓｅｃ
という関係式が満たされる必要がある。これらをまとめると、
−１ｎｓｅｃ≦ＴＡ−ＴＢ≦２ｎｓｅｃ
が満たされれば回路が誤動作を起こさないことが分かる。
【００２０】
次に、図１のクロックスキュー拡大装置１０７によって、クロックバッファ３０２の駆動能力を調整し、このクロックバッファ３０２の遅延時間を３ｎｓｅｃとする。
【００２１】
以上のように本発明の第１の実施の形態によれば、クロックスキューをどこまで拡大できるかをクロックスキュー拡大値算出装置１０６によって計算することで、回路の誤動作を起こさず、また回路の要求動作速度を満たしながら、クロック信号のスキューを拡大することができる。したがって、クロック変化時の瞬間電流を小さくすることができ、これによって電源電圧降下やノイズ発生を抑制することができる。
【００２２】
（第２の実施の形態）
図５は、本発明の第２の実施の形態にもとづくブロックレイアウト設計装置を示す。図５において、５０１はクロックツリー生成装置、５０３はセル配置装置、５０４は配線装置、５０５は遅延情報抽出装置、５０６はクロックスキュー低減装置、５０７はクロックスキュー拡大値算出装置、５０８はクロックスキュー拡大装置であり、これらは図１に示したものと同じ構成である。これらに加えて、図５の装置では、クロックツリー生成装置５０１とセル配置装置５０３との間にスキャンチェーン再構成装置５０２が設けられ、またクロックスキュー拡大装置５０８に続いてスキャンチェーン動作保証装置５０９が設けられている。
【００２３】
図６は、図５のブロックレイアウト設計装置を用いて設計を行なう対象となる回路である。この図６において、６０１はクロック入力、６０２〜６０７はフリップフロップ、６０８〜６１３は組合せ論理回路、６１４はスキャン入力、６１５はスキャン出力である。フリップフロップ６０２〜６０７は同一のクロック入力６０１で駆動されている。この図６の回路は、回路全体が１０ｎｓｅｃ以内のサイクルで動作しなくてはならない。フリップフロップ６０２〜６０７のセットアップ時間は１ｎｓｅｃであり、スキャン入力６１４のホールド時間は０ｎｓｅｃである。またスキャン入力６１４は第一段のフリップフロップ６０２のスキャン入力に接続され、フリップフロップ６０２の出力がフリップフロップ６０３のスキャン入力に接続され、以降フリップフロップ６０４、６０５、６０６、６０７の順番で前段のフリップフロップの出力が後段のスキャン入力に接続され、最終段のフリップフロップ６０７の出力がスキャン出力６１５に接続されることによりスキャンチェーンが構成されている。
【００２４】
以上のように構成された本発明の第２の実施の形態にもとづくブロックレイアウト設計装置について、以下その動作を示す。まず、図６に示す回路に対して、クロックツリー生成装置５０１でクロックツリーを形成する。クロックツリーを生成した回路を図７に示す。図７において、７０１〜７０３はクロックツリーを構成するクロックバッファであり、クロックバッファ７０１はクロックバッファ７０２、７０３を駆動しており、クロックバッファ７０２はフリップフロップ６０２、６０４、６０６を駆動しており、クロックバッファ７０３はフリップフロップ６０３、６０５、６０７を駆動している。
【００２５】
次に、このようにクロックツリーが挿入された回路に対して、図５のスキャンチェーン再構成装置５０２によって、スキャンチェーンの再構成を行なう。図７の回路に対してスキャンチェーンの再構成を行なった回路を図８に示す。この図８の回路では、クロックバッファ７０２により駆動されているフリップフロップ６０２、６０４、６０６と、クロックバッファ７０３により駆動されているフリップフロップ６０３、６０５、６０７とをそれぞれ一つのグループとしている。そして、各グループ内は１本のスキャンチェーンで接続し、グループ間のスキャンチェーンの配線数が少なくなるようにスキャンチェーンの再構成が行なわれている。
【００２６】
次に、セル配置装置５０３、配線装置５０４、遅延情報抽出装置５０５によって、図８に示す回路の配置配線と、配置配線後の遅延値の抽出とが行なわれる。セル配置装置５０３によるセル配置時には、図９に示すように、回路のセルとは別に遅延セル９０１、９０２を配置しておく。そしてさらに、遅延情報の抽出結果にもとづき、クロックスキュー低減装置５０６によってクロックスキューの低減が行なわれる。図９には、クロックスキュー低減まで完了した時点での回路の各遅延値、すなわち、フリップフロップ６０２〜６０７の遅延値と、組合せ論理回路６０８〜６１３の遅延値と、クロックバッファ７０１〜７０３の遅延値とを示す。
【００２７】
次にクロックスキュー拡大値算出装置５０７によってクロックスキューをどこまで拡大できるかを計算する。すなわち、スキャンチェーンを除く回路の誤動作が起こらないためには、上述の第１の実施の形態における場合と同様に計算を行なうと、クロックバッファ７０２からフリップフロップ６０２、６０４、６０６にクロックが供給される時刻をＴＡ、クロックバッファ７０３からフリップフロップ６０３、６０５、６０７にクロックが供給される時刻をＴＢとして、
−１ｎｓｅｃ≦ＴＡ−ＴＢ≦２ｎｓｅｃ
を満たす必要がある。
【００２８】
次にクロックスキュー拡大装置５０８によってクロックバッファ７０２の駆動能力を調整し、クロックバッファ７０２の遅延時間を３ｎｓｅｃとする。
【００２９】
次に、スキャンチェーン動作保証装置５０９によって、スキャンチェーンにおいて誤動作が起こらないかどうかを確認する。図９においては、スキャンチェーンのうちフリップフロップ６０６からフリップフロップ６０３に接続される部分は、フリップフロップ６０３の必要なホールド時間０ｎｓｅｃに対して−１ｎｓｅｃしかホールド時間がないため、誤動作を起こす。そこで、遅延セル９０２を使用してスキャンチェーンを変更する。図１０にスキャンチェーンを変更したあとの回路を示し、フリップフロップ６０６とフリップフロップ６０３との間に遅延セル９０２が接続されている。こうすることによりスキャンチェーンの誤動作もなくなり、回路は正常に動作することになる。
【００３０】
以上のように本発明の第２の実施の形態によれば、上述の第１の実施の形態の場合と同様に、回路の誤動作を起こさず、また回路の要求動作速度を満たしながら、クロック信号のスキューを拡大することができ、クロック変化時の瞬間電流を小さくすることができ、、これによって電源電圧降下やノイズ発生を抑制することができる。また、クロックスキューを大きくした場合に誤動作しやすいスキャンチェーンの動作によって、このクロックスキューの拡大範囲が小さくされるような事態の発生をも防いでいる。
【００３１】
なお、上述の第１の実施の形態では、クロックツリー生成装置１０１、セル配置装置１０２、配線装置１０３、遅延情報抽出装置１０４、クロックスキュー低減装置１０５、クロックスキュー拡大値算出装置１０６、クロックスキュー拡大装置１０７の順序で処理を行なうとしたが、クロックツリー生成をセル配置の後に行なうなど、これらの順番が入れ替わっても構わない。また同じ処理を複数回行なっても構わない。また、上述の本発明の第２の実施の形態でも、クロックツリー生成装置５０１、スキャンチェーン再構成装置５０２、セル配置装置５０３、配線装置５０４、遅延情報抽出装置５０５、クロックスキュー低減装置５０６、クロックスキュー拡大値算出装置５０７、クロックスキュー拡大装置５０８、スキャンチェーン動作保証装置５０９の順序で処理を行なうとしたが、クロックツリー生成をセル配置の後に行なうなど、これらの順番が入れ替わっても構わない。また同じ処理を複数回行なっても構わない。
【００３２】
図５のクロックスキュー拡大値算出装置５０７では、スキャンチェーンを除く回路に誤動作が起こらない条件を計算したが、スキャンチェーン回路の一部もしくは全てを含んだ回路に対する条件を計算することによって、スキャンチェーン動作保証装置５０９の処理を一部もしくは全てを省略しても構わない。
また遅延セル９０２、９０３を配置しておくとしたが、このような遅延セル９０２、９０３を配置せずに、スキャンチェーンの再構成やスキャンチェーンの配線の変更等によって誤動作除去を行なってもよい。
【００３３】
第１および第２の実施の形態では、いずれも２段のクロックバッファ３０１〜３０３、７０１〜７０３でツリーを構成していたが、いかなる論理のセル、いかなる段数のツリーを構成しても構わない。クロックツリー内の論理段数も一定である必要はない。
同一の大きさと同一のピン位置とを持った駆動能力の異なる複数のセルを、クロックツリーに含まれるセルとして使用することができる。
【００３４】
またクロックスキュー低減装置１０５、５０６によってクロックスキューを低減するとしたが、たとえばクロックツリーを構成するセルの駆動能力をあらかじめ大きくしておくことによってクロックスキューを低減するなどの方法をとっても良い。
クロックスキュー拡大値算出装置１０６、５０７ではフリップフロップ間の遅延値のみを考慮したが、フリップフロップのホールド時間や、回路が誤動作しないためのその他の条件を計算に使用してもよい。
【００３５】
クロックスキュー拡大装置１０７、５０８では、クロックバッファ３０１〜３０３、７０１〜７０３の駆動能力を調整することによりクロックスキューを拡大したが、クロック配線の変更や、クロックツリーの変更などの方法によってクロックスキューを拡大しても構わない。
【００３６】
（第３の実施の形態）
図１１は、本発明の第３の実施の形態にもとづくクロックツリー生成装置の構成図である。この第３の実施の形態においては、クロックを入力とする回路素子がグループ化され、各グループごとに、グループ内クロック供給回路が設けられる。またクロック供給源から前記グループ内クロック供給回路へクロックを供給するグループクロック供給回路が設けられる。
【００３７】
図１１において、１１０１はすべてのグループのクロック遅延をそろえるグループ間クロック遅延調整部であり、１１０２は複数のグループにまたがる信号のセットアップ時間余裕とホールドタイミング余裕を求めるグループ間タイミング評価部であり、１１０３は各クロックの遅延を決定するクロック遅延決定部であり、１１０４は、回路のレイアウト部である。また１１１１はクロック供給回路遅延情報、１１１２は１チップ実遅延情報、１１１３はグループ間クロック余裕分布情報である。
【００３８】
図１２はクロック供給回路の構成例を示す。この回路は、グループ１およびグループ２の内部でクロックを供給するグループ内クロック供給回路と、各グループへクロックを供給するグループクロック供給回路とを具備し、グループクロック供給回路は、各グループへ供給するクロックの遅延時間を調整するための遅延調整セル１２０１、１２０２を持っている。
【００３９】
ここでは、まず、レイアウト結果を基にクロック供給回路の遅延時間を求め、グループ間クロック遅延調整部１１０１で、クロックバッファ１２０３から各グループのクロックツリーの終端点までの遅延が等しくなるように、グループクロック供給回路上で遅延値を調整する遅延調整セル１２０１、１２０２の遅延値を決定し、１チップの実遅延値を更新する。
【００４０】
次に、グループ間タイミング評価部１１０２でグループ間にわたる信号のタイミングを評価し、各グループのクロック間のタイミング余裕を計算する。例えば、図１２のグループ１のフリップフロップからグループ２のフリップフロップに論理パスが存在する場合、図１３に示す各パスのセットアップ余裕時間およびホールド余裕時間を求め、セットアップ余裕時間の最小値を最小セットアップ余裕時間とし、ホールド余裕時間の最小値を最小ホールド余裕時間とする。図１３では、同図（ａ）に示すように、図１２のグループ１のクロックで動作するフリップフロップからグループ２のクロックで動作するフリップフロップに信号が伝搬するものとし、信号の伝搬遅延時間と受け側のフリップフロップのセットアップ時間の和からグループ２のクロックの立ち上がり時刻までをグループ１のグループ２に対するセットアップタイミング余裕とする。また同図（ｂ）に示すように、グループ２のクロックの立ち上がりエッジの時刻にホールド時間を足した時刻から信号の遅延時間迄の時間をグループ１のグループ２に対するホールド余裕時間とする。
【００４１】
さらに、二つのグループであるグループ１とグループ２において、グループ１のグループ２に対する最小セットアップ余裕時間とグループ２のグループ１に対する最小ホールド余裕時間とを比較し、小さい方をそれぞれの最小セットアップ余裕時間または最小ホールド余裕時間として置き換える。また、逆にグループ２のグループ１に対する最小セットアップ余裕時間とグループ１のグループ２に対する最小ホールド余裕時間とを比較し、小さい方をそれぞれの最小セットアップ余裕時間または最小ホールド余裕時間として置き換える。
【００４２】
各グループ間の最小セットアップ余裕時間と最小ホールド余裕時間とを求めた後、図１１のクロック遅延決定部１１０３で各グループの遅延値を決定する。遅延値の決定に際しては、消費電流が多いクロックツリーを持つグループ間での遅延差が大きくなるように、図１４に示すフローチャートにしたがい、遅延値を決定する。この場合は、まず、瞬時電流の多いグループを選択してグループ１とするとともに（ステップ１４０２）、次に瞬時電流の多いグループを選択してグループ２とする（ステップ１４０３）。そして、例えばステップ１４０４に示すようにグループ２のグループ１に対する最小セットアップ余裕時間とホールド余裕時間とを比較し、最小セットアップ余裕時間が大きい場合は、ステップ１４０５に示すようにグループ２のクロックを最小セットアップ時間だけ遅らせる。また、最小ホールド余裕時間の方が大きい場合は、グループ１のクロックを最小ホールド余裕時間だけ遅らせる。
【００４３】
次に、ステップ１４０７以降に示すように、その他のグループのクロックの遅延値を、瞬時電流の大きい順に既に遅延値の決定しているクロックの間に入るように決定する。すなわち、例えばｉ番目のグループのクロックの遅延値を決定する場合、既に遅延値が決定されているクロックのうち、ｉ番目のクロックよりも遅延値の大きいクロックに対しては最小ホールド余裕時間を満たすように、また、遅延値が小さいクロックに対しては最小セットアップ余裕時間を満たすように、かつ、最大遅延のクロックと最小遅延のクロックとの距離ができるだけ遠くなるように、遅延値を決定する（ステップ１４０８）。ステップ１４０９において、両方の条件を満たすことのできる遅延値が存在しない場合は、既に遅延値の決定しているクロックの遅延値を、条件を満たす範囲まで小さくしたうえで、すなわち遅延値の幅を小さくしたうえで（ステップ１４１０）、当該クロックの遅延値を決定する（ステップ１４１１）。
【００４４】
以上の処理の全体をフローチャートで表すと、図１５のステップ１５０１〜１５０８のようになる。
【００４５】
上記のようにクロックの遅延を決定することにより、瞬時電流を多く消費するクロックの遅延差が大きくなり、クロックツリー全体が消費する瞬時電流を下げることが可能となる。その結果、電源効果による性能劣化や輻射ノイズを軽減することが可能となる。
【００４６】
なお、グループ内クロック供給回路は、ツリー方式やスーパバッファ方式等の方式によらず同じ効果を得ることが可能である。
また、クロックの遅延値の決定方法は、各グループのクロック供給回路で消費される瞬時電流の発生時刻をずらすことが可能であれば、上記以外の決定方法でも可能である。例えば、各グループの瞬時電流を頂点とし遅延時間を中心に一定幅を底辺とする三角波形で表し、各グループの波形を重ね合わせた波形の高さを評価関数とし、その評価関数の値を最小とするよう、セットアップ余裕時間、およびホールド余裕時間の範囲内で遅延時間を決定することにより同様の効果を得ることが可能である。
【００４７】
（第４の実施の形態）
図１６は、本発明の第４の実施の形態にもとづくクロックツリー生成装置の構成図である。ここでは、図１１の第３の実施の形態の構成に加えて、ホールド余裕調整部１６０１が設けられている。その他の構成は、図１１のものと同じである。
【００４８】
ここでは、第３の実施の形態の場合と同様に各グループ間の最小セットアップ余裕時間と最小ホールド余裕時間とを求めた後、ホールド余裕時間がある一定値より小さいかどうかを調べ、小さい場合は、そのホールド余裕時間を決定しているパスを確認し、グループ間の信号に遅延素子を挿入する。
そして、再び各グループ間の最小セットアップ余裕時間と最小ホールド余裕時間とを求め、以後は第３の実施の形態の場合と同様に処理を行う。
【００４９】
この第４の実施の形態にもとづくクロックツリー生成装置を用いることにより、第３の実施の形態と同様にグループごとの瞬時電流の発生時刻をずらし、全体としての瞬時電流を押えることが可能である。さらに、ホールド余裕時間が一定値以下である信号に遅延素子を加えることで、クロックの遅延幅を拡張することが可能となり、前述の効果をいっそう高めることが可能となる。
【００５０】
（第５の実施の形態）
図１７は本発明の第５の実施の形態を示す図である。ここで１７０１はマクロモジュール及び他の回路の遅延値を測定するマクロモジュールタイミング評価部であり、１７０２はクロックが供給された回路についての瞬時電流測定部であり、１７０３はマクロモジュールのタイミングをずらすためのクロック遅延決定部であり、１７０４はレイアウト部である。また１７１２は１チップ実遅延情報、１７１３はマクロモジュール回路情報、１７１４は瞬時電流情報である。
【００５１】
以下に、このような構成にもとづく処理の詳細を説明する。
まず、レイアウト結果をもとに、マクロモジュールタイミング評価部１７０１でマクロモジュールとマクロモジュール以外の回路とにまたがる信号のセットアップ余裕時間およびホールド余裕時間を求める。セットアップ余裕時間およびホールド余裕時間は、先の実施の形態と同様に図１３にもとづいて求めることができる。
【００５２】
次に、瞬時電流測定部１７０２において、マクロモジュール回路情報１７１３をもとに、各時刻のマクロモジュールの瞬時電流およびこの瞬時電流が最大になる時刻を求める。
次に、クロック遅延決定部１７０３において、マクロモジュールの瞬時電流と、マクロモジュール以外の回路のクロックの遅延時間によるクロック供給回路の瞬時電流の傾向とを比較し、マクロモジュールの瞬時電流とマクロモジュール以外の回路のクロック供給回路による瞬時電流との和が小さくなるように、クロック供給回路の遅延時間を決定する。具体的には、瞬時電流測定部１７０２で測定したマクロモジュールの瞬時電流のピーク値と、マクロモジュール以外のグループの瞬時電流のピーク値とを比較し、マクロモジュールタイミング評価部１７０１で求めたマクロモジュールのセットアップ余裕時間およびホールド余裕時間の範囲内で同時刻の瞬時電流の和が最小になるように、マクロモジュール以外のクロック供給回路の遅延値を決定する。
【００５３】
この時、遅延値が正の値であればマクロモジュール以外のクロックをクロック遅延決定部１７０３で決定された値だけ遅延させ、また、負の値であればマクロモジュールへ供給するクロックの遅延時間を長くする。
【００５４】
【発明の効果】
以上説明したように本発明によれば、回路が誤動作を起こさないクロック信号の遅延範囲内でクロックスキューを拡大するようにしたため、クロックの遅延が分散されることになり、したがってクロック変化時の瞬間電流が小さくなって、電源電圧降下やノイズ発生を抑制することができる。
【図面の簡単な説明】
【図１】本発明の第１の実施の形態にもとづくブロックレイアウト設計装置のブロック図である。
【図２】図１のブロックレイアウト設計装置によって設計される回路の一例を示す回路図である。
【図３】図２の回路にクロックツリーを挿入した回路の一例を示す回路図である。
【図４】図３の回路の配置配線後の遅延情報の抽出結果を示す図である。
【図５】本発明の第２の実施の形態にもとづくブロックレイアウト設計装置のブロック図である。
【図６】図５のブロックレイアウト設計装置によって設計される回路の一例を示す回路図である。
【図７】図６の回路にクロックツリーを挿入した回路の一例を示す回路図である。
【図８】図７の回路に対してスキャンチェーンを再構成した回路の回路図である。
【図９】図８の回路の配置配線後の遅延情報の抽出結果を示す図である。
【図１０】図９の回路のスキャンチェーンの動作確認後の構成を示す回路図である。
【図１１】本発明の第３の実施の形態にもとづくクロックツリー生成装置のブロック図である。
【図１２】図１１のクロックツリー生成装置の回路例を示す図である。
【図１３】図１１のクロックツリー生成装置における余裕時間を示す図である。
【図１４】図１１のクロックツリー生成装置における遅延値の決定のための処理のフローチャートを示す図である。
【図１５】図１１のクロックツリー生成装置の動作のフローチャートを示す図である。
【図１６】本発明の第４の実施の形態にもとづくクロックツリー生成装置のブロック図である。
【図１７】本発明の第５の実施の形態にもとづくクロックツリー生成装置のブロック図である。
【図１８】従来の集積回路のためのクロック生成装置のブロック図である。
【符号の説明】
１０１  クロックツリー生成装置
１０２  セル配置装置
１０３  配線装置
１０４  遅延情報抽出装置
１０５  クロックスキュー低減装置
１０６  クロックスキュー拡大値算出装置
１０７  クロックスキュー拡大装置
３０１〜３０３  クロックバッファ
【図１】
0003549428.tif 000002
【図２】
0003549428.tif 000003
【図３】
0003549428.tif 000004
【図４】
0003549428.tif 000005
【図５】
0003549428.tif 000006
【図６】
0003549428.tif 000007
【図７】
0003549428.tif 000008
【図８】
0003549428.tif 000009
【図９】
0003549428.tif 000010
【図１０】
0003549428.tif 000011
【図１１】
0003549428.tif 000012
【図１２】
0003549428.tif 000013
【図１３】
0003549428.tif 000014
【図１４】
0003549428.tif 000015
【図１５】
0003549428.tif 000016
【図１６】
0003549428.tif 000017
【図１７】
0003549428.tif 000018
【図１８】
0003549428.tif 000019