(57)【要約】【課題】半導体集積回路の階層レイアウト設計において、タイミング収束を容易化すること。【解決手段】第１ブロックは、第１クロック端子と第１フリップフロップを有し、第２ブロックは、第２クロック端子と第２フリップフロップを有する。クロック分配経路は、クロック分岐点から、第１クロック端子を通して第１フリップフロップへつながり、且つ、第２クロック端子を通して第２フリップフロップへつながる。データ経路は、第１フリップフロップのデータ出力端子から第２フリップフロップのデータ入力端子へつながる。本発明に係る設計方法は、（Ａ）製造ばらつきに起因するクロック分配経路におけるクロック信号の遅延変動を反映させながら、データ経路のスラックを算出するステップと、（Ｂ）算出されるスラックが増加するように、クロック分岐点、第１クロック端子及び第２クロック端子の位置を変更するステップ、とを含む。【選択図】図４
2010244411.tif 000002
【特許請求の範囲】
【請求項１】
半導体集積回路の設計方法であって、
前記半導体集積回路は、
第１クロック端子と第１フリップフロップを有し、前記第１クロック端子を通して前記第１フリップフロップにクロック信号が供給される第１ブロックと、
第２クロック端子と第２フリップフロップを有し、前記第２クロック端子を通して前記第２フリップフロップに前記クロック信号が供給される第２ブロックと、
クロック分岐点から、前記第１クロック端子を通して前記第１フリップフロップへつながり、且つ、前記第２クロック端子を通して前記第２フリップフロップへつながる第１クロック分配経路と、
前記第１フリップフロップのデータ出力端子から前記第２フリップフロップのデータ入力端子へつながる第１データ経路と
を備え、
前記設計方法は、
製造ばらつきに起因する前記第１クロック分配経路における前記クロック信号の遅延変動を反映させながら、前記第１データ経路のスラックである第１スラックを算出するステップと、
前記算出される第１スラックが増加するように、前記クロック分岐点、前記第１クロック端子及び前記第２クロック端子の位置を変更するステップ
と
を含む
半導体集積回路の設計方法。
【請求項２】
請求項１に記載の半導体集積回路の設計方法であって、
前記第１スラックを算出するステップは、
前記第１クロック分配経路を包含する矩形領域の対角線の長さに基づいて、前記遅延変動を算出するステップ
を含み、
前記算出される遅延変動は、前記対角線が長くなるにつれ増加し、
前記位置を変更するステップは、
前記対角線がより短くなるように前記位置を変更するステップ
を含む
半導体集積回路の設計方法。
【請求項３】
請求項２に記載の半導体集積回路の設計方法であって、
前記第１スラックを算出するステップは、
理想クロックに基づいて前記第１データ経路のタイミング解析を行い、前記第１データ経路に関する補正前スラックを算出するステップと、
前記算出された遅延変動を用いて前記補正前スラックを補正することによって、前記第１スラックを算出するステップと
を更に含む
半導体集積回路の設計方法。
【請求項４】
請求項１乃至３のいずれか一項に記載の半導体集積回路の設計方法であって、
前記半導体集積回路は、
前記第１ブロックと前記第２ブロックを含む複数のブロックと、
前記第１クロック分配経路を含む複数のクロック分配経路と、
前記第１データ経路を含む複数のデータ経路と
を備え、
前記複数のブロックの各々は、前記クロック信号が供給されるクロック端子を有し、
前記複数のクロック分配経路は、それぞれ、前記複数のデータ経路に対応しており、
前記複数のデータ経路の各々は、前記複数のブロックのうち異なるブロックに含まれる２つのフリップフロップ間をつなぎ、前記２つのフリップフロップには、前記複数のクロック分配経路のうち対応する１つを通して前記クロック信号が供給され、
前記設計方法は、
製造ばらつきに起因する前記複数のクロック分配経路のそれぞれにおける前記クロック信号の遅延変動を反映させながら、前記複数のデータ経路のそれぞれのスラックを算出するステップ
を含み、
前記位置を変更するステップにおいて増加させられる前記第１スラックは、前記算出されたそれぞれのスラックの中で最も悪い
半導体集積回路の設計方法。
【請求項５】
請求項１乃至４のいずれか一項に記載の半導体集積回路の設計方法であって、
更に、
前記位置を変更するステップで得られた前記位置を用いることによって、クロックツリーシンセシスを行うステップ
を含む
半導体集積回路の設計方法。
【請求項６】
請求項１乃至５のいずれか一項に記載の半導体集積回路の設計方法をコンピュータに実行させる設計プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、階層レイアウト設計方式に基づく半導体集積回路の設計技術に関する。
【背景技術】
【０００２】
半導体集積回路のクロック設計では、フリップフロップ間のクロックスキューを低減することが望ましい。そのための手法が、「クロックツリーシンセシス（CTS: Clock Tree Synthesis）」である。クロックツリーシンセシスでは、クロック源から複数のフリップフロップへの遅延値が均一となるように、クロックバッファが適宜配置される。これにより、フリップフリップ間のクロックスキューが低減される。
【０００３】
また、半導体集積回路の設計手法の１つとして、「階層レイアウト設計（hierarchical layout
design）方式」が知られている。図１は、階層レイアウト設計方式に基づいたクロック設計を説明するための概念図である。トップ階層に、複数のブロックＢ１００、Ｂ２００、及びＢ３００が配置されている。各ブロック（Ｂ１００、Ｂ２００、Ｂ３００）は、フリップフロップとクロック端子（ＣＴ１００、ＣＴ２００、ＣＴ３００）を有している。クロック端子は、ブロックの境界上に配置されており、下位階層であるブロック内にクロック信号ＣＬＫを供給するために用いられる。例えば、ブロックＢ１００はクロック端子ＣＴ１００を有しており、ブロックＢ１００内のフリップフロップには、クロック源からクロック端子ＣＴ１００を通してクロック信号ＣＬＫが供給される。他のブロックＢ２００、Ｂ３００も同様である。
【０００４】
特許文献１は、階層レイアウト設計方式に基づくクロック設計において、クロックスキューを最小化するための技術を開示している。クロックスキューを最小化するために、クロック信号系の分岐先の各レイアウト階層を意識し、且つ、チップ全体を考慮しながら、階層単位でクロック設計が行われる。具体的に、クロック信号を与えるドライバ端子と、このドライバ端子からクロック信号を受信すべき複数のレシーバ端子との間にクロック信号線を配線することを考える。このとき、各レシーバ端子へのクロック信号到達時間が等しくなる等ディレイ分岐点を考慮しながら、複数のレイアウト階層間にまたがって複数のレシーバ端子間にクロック信号線が配線される。その後、複数のレシーバ端子間における等ディレイ分岐点とドライバ端子との間にクロック信号線が配線される。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特許第３５０４７３９号
【発明の概要】
【発明が解決しようとする課題】
【０００６】
半導体集積回路が実際に製造されたとき、製造ばらつきにより、遅延値は設計値からずれる。このような製造ばらつきに起因する遅延変動の影響は、回路の微細化に伴い、ますます顕著になってきている。最悪の場合、製品は、正常に動作せず、不良品としてはじかれる。このように、製造ばらつきに起因する遅延変動は、製造歩留まりの低下を招く。製造歩留まりを向上させるには、回路設計段階から、製造ばらつきに起因する遅延変動を考慮してタイミング解析を行うことが重要である。
【０００７】
特許文献１に記載の技術では、階層レイアウト設計において、同じクロック信号が供給される全てのフリップフロップを対象として、クロックスキューが最小となるようにクロック信号線が配線される。製造ばらつきを考慮してタイミング解析が実施される場合、異なるブロック中のフリップフロップ間では、製造ばらつきに起因する遅延変動は大きくなり、クロックスキューが増大する。このことは、タイミング収束（timing closure）を困難にし、回路設計に要する時間の増大を招く。従って、半導体集積回路の階層レイアウト設計において、タイミング収束を容易化することができる技術が望まれる。
【課題を解決するための手段】
【０００８】
本発明の１つの観点において、半導体集積回路の設計方法が提供される。半導体集積回路は、第１ブロックと、第２ブロックと、第１クロック分配経路と、第１データ経路とを備える。第１ブロックは、第１クロック端子と第１フリップフロップを有し、第１クロック端子を通して第１フリップフロップにクロック信号が供給される。第２ブロックは、第２クロック端子と第２フリップフロップを有し、第２クロック端子を通して第２フリップフロップにクロック信号が供給される。第１クロック分配経路は、クロック分岐点から、第１クロック端子を通して第１フリップフロップへつながり、且つ、第２クロック端子を通して第２フリップフロップへつながる。第１データ経路は、第１フリップフロップのデータ出力端子から第２フリップフロップのデータ入力端子へつながる。設計方法は、（Ａ）製造ばらつきに起因する第１クロック分配経路におけるクロック信号の遅延変動を反映させながら、第１データ経路のスラックである第１スラックを算出するステップと、（Ｂ）算出される第１スラックが増加するように、クロック分岐点、第１クロック端子及び第２クロック端子の位置を変更するステップ、とを含む。
【発明の効果】
【０００９】
本発明によれば、半導体集積回路の階層レイアウト設計において、タイミング収束を容易化し、回路設計に要する時間を短縮することが可能となる。
【図面の簡単な説明】
【００１０】
【図１】図１は、階層レイアウト設計方式に基づいたクロック設計を説明するための概念図である。
【図２】図２は、本発明の実施の形態に係る設計システムを示すブロック図である。
【図３】図３は、本発明の実施の形態に係る半導体集積回路の設計方法を示すフローチャートである。
【図４】図４は、本発明の実施の形態に係るクロックノード位置決定処理（ステップＳ４００）を説明するための概念図である。
【図５】図５は、遅延変動テーブルの一例を示している。
【図６】図６は、ステップＳ４００における具体的な処理を示すブロック図である。
【図７】図７は、ステップＳ４００における具体的な処理を示すフローチャートである。
【図８】図８は、半導体集積回路の設計データの一例を示している。
【図９】図９は、クロックノード位置変更前の設計データの一例を示している。
【図１０】図１０は、クロックノード位置変更後の設計データの一例を示している。
【発明を実施するための形態】
【００１１】
添付図面を参照して、本発明の実施の形態を説明する。本実施の形態では、階層レイアウト設計手法に基づいて半導体集積回路の設計が行われる。
【００１２】
１．半導体集積回路の設計
図２は、本実施の形態に係る設計システム１を示すブロック図である。設計システム１は、処理装置２、記憶装置３、入力装置４、出力装置５を備えるコンピュータシステムである。処理装置２は、ＣＰＵを含む。記憶装置３は、ＲＡＭやＨＤＤを含む。入力装置４は、マウスやネットワークインターフェースを含む。出力装置５は、ディスプレイやネットワークインターフェースを含む。
【００１３】
本実施の形態に係る設計処理は、設計システム１が設計プログラムＰＲＯＧを実行することにより実現される。設計プログラムＰＲＯＧは、設計システム１に設計処理を実行させるためのコンピュータプログラムであり、記憶装置３に格納される。設計プログラムＰＲＯＧは、コンピュータ読み取り可能な記録媒体に格納されていてもよい。
【００１４】
より詳細には、処理装置２は、記憶装置３から設計プログラムＰＲＯＧを読み出し、実行する。それにより、図２に示されるように、プランニング部１００、電源ルーティング部２００、セル配置部３００、クロックノード位置決定部４００、ＣＴＳ部５００、ルーティング部６００、検証部７００といった処理モジュールが実現される。各処理モジュールは、記憶装置３から必要なデータを読み出し、また、作成したデータを記憶装置３に書き込みながら、本実施の形態に係る設計処理を実行する。
【００１５】
図３は、本実施の形態に係る半導体集積回路の設計方法を示すフローチャートである。まず、プランニング部１００がフロアプランを決定し、ＣＰＵやＲＡＭといったマクロセルの位置や、ブロックの形状、位置などを決定する（ステップＳ１００）。次に、電源ルーティング部２００が、電源線のルーティングを行う（ステップＳ２００）。次に、セル配置部３００が、機能ブロックや基本セルの配置を行う（ステップＳ３００）。この時に配置される基本セルには、ＮＡＮＤやインバータ等の論理ゲートセル、クロック信号を供給するためのクロック源セル、そのクロック信号に同期して動作するフリップフロップセルなどが含まれる。
【００１６】
本実施の形態によれば、セル配置（ステップＳ３００）の後、クロックツリーシンセシス（ステップＳ５００）の前に、クロックノード位置決定部４００が、クロックノードの位置を決定する（ステップＳ４００）。ここで、クロックノードとは、階層レイアウトにおける各ブロックのクロック端子や、クロック信号が分岐するクロック分岐点を含む。クロックノードの位置決定に際しては、製造ばらつきに起因する遅延変動が考慮される。そして、異なるブロックに含まれるフリップフロップ間でクロックの遅延変動が小さくなるように、クロックノードの位置が適切に変更・決定される。詳細は、後述される。
【００１７】
ステップＳ４００の後、ＣＴＳ部５００は、クロックツリーシンセシスを実施する（ステップＳ５００）。このとき、ＣＴＳ部５００は、ステップＳ４００で決定されたクロックノードの位置を用いて、クロックツリーシンセシスを行う。その後、ルーティング部６００は、セル間をつなぐ信号配線のルーティングを行う（ステップＳ６００）。クロック信号配線もこのときにレイアウトされる。このようにして、半導体チップのレイアウトが決定する。レイアウトが決定すると、検証部７００は、レイアウト検証やタイミング検証を実施する（ステップＳ７００）。タイミング検証（タイミング解析）は、製造ばらつきを考慮しながら実施される。
【００１８】
以下、ステップＳ３００とステップＳ５００との間に実施されるクロックノード位置決定処理（ステップＳ４００）を主に説明する。
【００１９】
２．ステップＳ４００の概要
図４に示されるように複数のブロックＢ１、Ｂ２が配置されている状況を考える。各ブロック内、及び、ブロック間には、“仮配線”が施されているとする。
【００２０】
第１ブロックＢ１は、第１クロック端子ＣＴ１と第１フリップフロップＦ１を有している。第１クロック端子ＣＴ１は、クロック信号ＣＬＫが供給される端子であり、第１ブロックＢ１の境界上に配置されている。第１ブロックＢ１に含まれる第１フリップフロップＦ１には、第１クロック端子ＣＴ１を通してクロック信号ＣＬＫが供給される。
【００２１】
第２ブロックＢ２は、第２クロック端子ＣＴ２と第２フリップフロップＦ２を有している。第２クロック端子ＣＴ２は、クロック信号ＣＬＫが供給される端子であり、第２ブロックＢ２の境界上に配置されている。第２ブロックＢ２に含まれる第２フリップフロップＦ２には、第２クロック端子ＣＴ２を通してクロック信号ＣＬＫが供給される。
【００２２】
クロック分岐点ＣＢは、クロック信号ＣＬＫが分岐するノードである。このクロック分岐点ＣＢは、第１ブロックＢ１の第１クロック端子ＣＴ１と第２ブロックＢ２の第２クロック端子ＣＴ２に接続されている。このクロック分岐点ＣＢから、第１クロック端子ＣＴ１を通して第１フリップフロップＦ１につながり、且つ、第２クロック端子ＣＴ２を通して第２フリップフロップＦ２につながる経路が、「クロック分配経路ＰＣ」である。クロック分配経路ＰＣは、異なるブロックＢ１、Ｂ２にまたがるように形成されている。
【００２３】
第２ブロックＢ２中の第２フリップフロップＦ２は、第１ブロックＢ１中の第１フリップフロップＦ１からデータを受け取る。つまり、第２フリップフロップＦ２のデータ入力端子は、データ信号線を介して、第１フリップフロップＦ１のデータ出力端子に接続される。この第１フリップフロップＦ１のデータ出力端子から第２フリップフロップＦ２のデータ入力端子につながる経路が、「データ経路ＰＤ」である。データ経路ＰＤは、異なるブロックＢ１、Ｂ２にまたがるように形成されている。
【００２４】
このように、異なるブロックＢ１、Ｂ２のそれぞれに含まれるフリップフロップＦ１、Ｆ２は、クロック分配経路ＰＣ及びデータ経路ＰＤを介して、互いに接続されている。それら２つのフリップフロップＦ１、Ｆ２には、クロック分配経路ＰＣを通してクロック信号ＣＬＫが供給される。そして、それら２つのフリップフロップＦ１、Ｆ２はクロック信号ＣＬＫに同期して動作し、第１フリップフロップＦ１からデータ経路ＰＤを通して第２フリップフロップＦ２へデータが伝送される。第１フリップフロップＦ１、第２フリップフロップＦ２、クロック分配経路ＰＣ、及びデータ経路ＰＤは、互いに関連付けられていると言える。
【００２５】
異なるブロックＢ１、Ｂ２にまたがる第１フリップフロップＦ１から第２フリップフロップＦ２へのデータ経路ＰＤは、タイミングの厳しい経路である。ステップＳ４００では、製造ばらつきを考慮しながら、このデータ経路ＰＤのタイミング解析が行われる。特に、製造ばらつきに起因する、クロック分配経路ＰＣにおけるクロック信号ＣＬＫの遅延変動が考慮される。
【００２６】
ここで、半導体集積回路における製造ばらつきは、距離が近いほど小さくなり、距離が遠いほど大きくなることが一般的に知られている。従って、製造ばらつきに起因するクロック分配経路ＰＣにおける遅延変動は、そのクロック分配経路ＰＣの拡がりに依存する。クロック分配経路ＰＣの拡がりを示す１つの指標は、そのクロック分配経路ＰＣを包含する矩形領域ＲＡ（図４参照）の対角線の長さである。矩形領域ＲＡは、クロック分配経路ＰＣを包含する最小のものであってもよいし、多少のマージンを有していてもよい。図５は、「矩形領域ＲＡの対角線の長さ」と「クロック分配経路ＰＣにおける遅延変動」との対応関係の一例を示している。図５に示されるように、対角線が長くなるにつれ、製造ばらつきが大きくなり、クロック分配経路ＰＣにおける遅延変動が増加する。矩形領域ＲＡの対角線の長さと図５で示される対応関係から、クロック分配経路ＰＣにおける遅延変動を算出する（見積もる）ことができる。
【００２７】
タイミング解析の結果、データ経路ＰＤの「スラック（slack）」が算出される。スラックは、タイミングの余裕度を表すパラメータであり、タイミングスラック（timing slack）とも呼ばれる。タイミング違反が生じている場合、スラックは負値となる。タイミング違反が生じていない場合、スラックは非負値となる。算出されたクロック分配経路ＰＣにおける遅延変動は、悪化分としてスラックに反映される。このようにして、クロックノード位置決定部４００は、クロック分配経路ＰＣにおける遅延変動を反映させながら、データ経路ＰＤのスラックを算出する。
【００２８】
データ経路ＰＤのスラックに関して改善が望まれる場合、特にデータ経路ＰＤのスラックが負値である場合、クロック分配経路ＰＣにおける遅延変動を小さくすることが望ましい。そこで、クロックノード位置決定部４００は、クロック分配経路ＰＣを規定するクロックノード（ＣＴ１，ＣＴ２，ＣＢ）の位置を変更する。より詳細には、クロックノード位置決定部４００は、矩形領域ＲＡの対角線がより短くなるように、クロックノード（ＣＴ１，ＣＴ２，ＣＢ）の位置を変更する。これにより、クロック分配経路ＰＣにおける遅延変動が小さくなり、データ経路ＰＤに関して算出されるスラックが増加（改善）する。
【００２９】
以上に説明されたように、ステップＳ５００〜Ｓ７００よりも前のステップＳ４００において、クロック分配経路ＰＣを規定するクロックノード（ＣＴ１，ＣＴ２，ＣＢ）の位置があらかじめ決定される。具体的には、タイミングの厳しいデータ経路ＰＤに関して算出されるスラックが増加（改善）するように、クロックノードの位置が変更される。ステップＳ５００以降では、このステップＳ４００であらかじめ決定されたクロックノード位置が使用される。これにより、データ経路ＰＤにおけるタイミング違反が抑制されるため、タイミング収束が容易になる。
【００３０】
３．ステップＳ４００における具体的な処理例
図６及び図７は、それぞれ、ステップＳ４００における具体的な処理を示すブロック図及びフローチャートである。図６に示されるように、クロックノード位置決定部４００は、仮配線部４１０、ＳＴＡ部４３０、遅延変動算出部４４０、スラック補正部４５０、クロックノード位置変更部４６０、及び判定部４８０を含んでいる。尚、図６に示される各種データは、記憶装置３に格納され、また、記憶装置３から読み出される。
【００３１】
ステップＳ４１０：
仮配線部４１０は、半導体集積回路の設計データ１０とネットリスト２０に基づいて“仮配線”を行い、第１設計データ３０−１を作成する。設計データ１０は、ステップＳ３００後のレイアウト（セル配置情報、ブロック配置情報等）を示す。第１設計データ３０−１は、更にブロック内及びブロック間に仮配線が行われた設計データである。
【００３２】
図８は、設計データ１０の一例を示している。チップレイアウト領域のトップ階層に、複数のブロックＢ１０、Ｂ２０、Ｂ３０、及びクロック信号ＣＬＫを供給するクロックドライバＣＤＶが配置されている。ブロックＢ１０は、クロック端子ＣＴ１０、フリップフロップＦ１２、Ｆ１３を有している。ブロックＢ２０は、クロック端子ＣＴ２０、フリップフロップＦ２１、Ｆ２３を有している。ブロックＢ３０は、クロック端子ＣＴ３０、フリップフロップＦ３１、Ｆ３２を有している。各ブロックのクロック端子の位置は、初期位置（デフォルト位置）である。
【００３３】
図９は、仮配線後の第１設計データ３０−１の一例を示している。クロックドライバＣＤＶは、クロック分岐点ＣＢ１とクロック端子ＣＴ１０を介して、ブロックＢ１０内のフリップフロップＦ１２、Ｆ１３に接続されている。また、クロックドライバＣＤＶは、クロック分岐点ＣＢ１、ＣＢ２、及びクロック端子ＣＴ２０を介して、ブロックＢ２０内のフリップフロップＦ２１、Ｆ２３に接続されている。更に、クロックドライバＣＤＶは、クロック分岐点ＣＢ１、ＣＢ２、及びクロック端子ＣＴ３０を介して、ブロックＢ３０内のフリップフロップＦ３１、Ｆ３２に接続されている。
【００３４】
データ経路ＰＤ１は、異なるブロックＢ１０、Ｂ２０に含まれるフリップフロップＦ１２、Ｆ２１間をつないでいる。そのデータ経路ＰＤ１に対応するクロック分配経路ＰＣ１は、それらフリップフロップＦ１２、Ｆ２１のクロック入力同士をつないでいる。クロック分配経路ＰＣ１は、クロック端子ＣＴ１０、ＣＴ２０、クロック分岐点ＣＢ１、ＣＢ２を含んでいる。フリップフロップＦ１２、Ｆ２１には、クロック分岐点ＣＢ１からクロック分配経路ＰＣ１を通してクロック信号ＣＬＫが供給される。
【００３５】
データ経路ＰＤ２は、異なるブロックＢ２０、Ｂ３０に含まれるフリップフロップＦ２３、Ｆ３２間をつないでいる。そのデータ経路ＰＤ２に対応するクロック分配経路ＰＣ２は、それらフリップフロップＦ２３、Ｆ３２のクロック入力同士をつないでいる。クロック分配経路ＰＣ２は、クロック端子ＣＴ２０、ＣＴ３０、クロック分岐点ＣＢ２を含んでいる。フリップフロップＦ２３、Ｆ３２には、クロック分岐点ＣＢ２からクロック分配経路ＰＣ２を通してクロック信号ＣＬＫが供給される。
【００３６】
データ経路ＰＤ３は、異なるブロックＢ１０、Ｂ３０に含まれるフリップフロップＦ１３、Ｆ３１間をつないでいる。そのデータ経路ＰＤ３に対応するクロック分配経路ＰＣ３は、それらフリップフロップＦ１３、Ｆ３１のクロック入力同士をつないでいる。クロック分配経路ＰＣ３は、クロック端子ＣＴ１０、ＣＴ３０、クロック分岐点ＣＢ１、ＣＢ２を含んでいる。フリップフロップＦ１３、Ｆ３１には、クロック分岐点ＣＢ１からクロック分配経路ＰＣ３を通してクロック信号ＣＬＫが供給される。
【００３７】
ステップＳ４２０：
次に、第１設計データ３０−１に基づいてタイミング解析が行われ、異なるブロックにまたがる複数のデータ経路ＰＤ１、ＰＤ２、ＰＤ３のそれぞれのスラックが算出される。このとき、それぞれ対応するクロック分配経路ＰＣ１、ＰＣ２、ＰＣ３におけるクロック信号ＣＬＫの遅延変動が考慮される。具体的には、ステップＳ４２０は、次のステップＳ４３０〜Ｓ４５０を含んでいる。
【００３８】
ステップＳ４３０：
ＳＴＡ部４３０は、第１設計データ３０−１とネットリスト２０に基づいて、データ経路ＰＤ１、ＰＤ２、ＰＤ３のそれぞれに対して静的タイミング解析（STA: Static Timing Analysis）を行う。このとき、クロック信号ＣＬＫとしては、クロックスキューの無い「理想クロック」が用いられる。ＳＴＡを行うことにより、ＳＴＡ部４３０は、データ経路ＰＤ１、ＰＤ２、ＰＤ３のそれぞれのスラックを算出し、算出されたスラックを示すスラックデータ４０を生成する。本例において、データ経路ＰＤ１、ＰＤ２、ＰＤ３のスラック（補正前スラック）は、それぞれ、＋１．３ｐｓ、＋４．０ｐｓ、＋５．０ｐｓであるとする。
【００３９】
ステップＳ４４０：
遅延変動算出部４４０は、第１設計データ３０−１と遅延変動テーブル５０に基づいて、クロック分配経路ＰＣ１、ＰＣ２、ＰＣ３のそれぞれにおける遅延変動を算出する（見積もる）。遅延変動テーブル５０は、図５で示されたような「矩形領域の対角線の長さ」と「クロック分配経路における遅延変動」との対応関係を示している。遅延変動算出部４４０は、算出されたそれぞれの遅延変動を示す第１遅延データ６０−１を生成する。
【００４０】
図９に示されるように、クロック分配経路ＰＣ１を包含する矩形領域はＲＡ１であり、クロック分配経路ＰＣ２を包含する矩形領域はＲＡ２であり、クロック分配経路ＰＣ３を包含する矩形領域はＲＡ３である。遅延変動算出部４４０は、遅延変動テーブル５０を参照し、矩形領域ＲＡ１、ＲＡ２、ＲＡ３のそれぞれの対角線の長さから、クロック分配経路ＰＣ１、ＰＣ２、ＰＣ３のそれぞれにおける遅延変動を算出する。算出される遅延変動は、対角線が長くなるにつれて増加する。本例において、矩形領域ＲＡ１、ＲＡ２、ＲＡ３の対角線の長さは、それぞれ、４．２ｍｍ、１．３ｍｍ、３．８ｍｍであるとする。この場合、クロック分配経路ＰＣ１、ＰＣ２、ＰＣ３における遅延変動は、それぞれ、１．４ｐｓ、０．２ｐｓ、１．２ｐｓと算出される。
【００４１】
ステップＳ４５０：
スラック補正部４５０は、スラックデータ４０と第１遅延変動データ６０−１とを組み合わせて、製造ばらつきが考慮されたスラックを算出する。具体的には、スラック補正部４５０は、クロック分配経路ＰＣ１、ＰＣ２、ＰＣ３における遅延変動を用いることにより、データ経路ＰＤ１、ＰＤ２、ＰＤ３のそれぞれの補正前スラックを補正する。つまり、クロック分配経路ＰＣにおける遅延変動の分だけ、対応するデータ経路ＰＤのスラックが悪化させられる。このようにして、スラック補正部４５０は、データ経路ＰＤ１、ＰＤ２、ＰＤ３のそれぞれに関して、遅延変動が反映されたスラックを算出する。第１スラックデータ７０−１は、算出されたそれぞれのスラックを示す。本例において、データ経路ＰＤ１、ＰＤ２、ＰＤ３のそれぞれのスラックは、−０．１ｐｓ、＋３．８ｐｓ、＋３．８ｐｓと算出される。
【００４２】
ステップＳ４６０：
クロックノード位置変更部４６０は、第１スラックデータ７０−１を参照して、算出されたスラックが最も悪い（小さい）データ経路ＰＤを選択する。選択されるデータ経路ＰＤは、スラック改善の対象となる。本例では、スラックが−０．１ｐｓでありタイミング違反が発生しているデータ経路ＰＤ１が、対象として選択される。
【００４３】
クロックノード位置変更部４６０は、データ経路ＰＤ１のスラックが改善（増加）するように、対応するクロック分配経路ＰＣ１を規定するクロックノードの位置を変更する。つまり、クロックノード位置変更部４６０は、クロック分配経路ＰＣ１を包含する矩形領域ＲＡ１の対角線がより短くなるように、クロックノードの位置を変更する。具体的には、クロックノード位置変更部４６０は、ブロックＢ１０のクロック端子ＣＴ１０とブロックＢ２０のクロック端子ＣＴ２０を、フリップフロップＦ１２、Ｆ２１間の最短経路の方へ近づける。また、クロックノード位置変更部４６０は、仮配線部４１０と同様にして、クロック配線を組み直す。その結果、クロックノード位置変更後の設計データである第２設計データ３０−２が作成される。
【００４４】
図１０は、第２設計データ３０−２の一例を示している。クロックドライバＣＤＶは、クロック分岐点ＣＢ３、ＣＢ４、及びクロック端子ＣＴ１０を介して、ブロックＢ１０内のフリップフロップＦ１２、Ｆ１３に接続されている。また、クロックドライバＣＤＶは、クロック分岐点ＣＢ３、ＣＢ４、及びクロック端子ＣＴ２０を介して、ブロックＢ２０内のフリップフロップＦ２１、Ｆ２３に接続されている。更に、クロックドライバＣＤＶは、クロック分岐点ＣＢ３及びクロック端子ＣＴ３０を介して、ブロックＢ３０内のフリップフロップＦ３１、Ｆ３２に接続されている。クロック分配経路ＰＣ１は、クロック端子ＣＴ１０、ＣＴ２０、クロック分岐点ＣＢ４を含んでいる。クロック分配経路ＰＣ２は、クロック端子ＣＴ２０、ＣＴ３０、クロック分岐点ＣＢ３、ＣＢ４を含んでいる。クロック分配経路ＰＣ３は、クロック端子ＣＴ１０、ＣＴ３０、クロック分岐点ＣＢ３、ＣＢ４を含んでいる。
【００４５】
ステップＳ４７０：
遅延変動算出部４４０は、第２設計データ３０−２と遅延変動テーブル５０に基づいて、新たなクロック分配経路ＰＣ１、ＰＣ２、ＰＣ３のそれぞれにおける遅延変動を算出し、算出されたそれぞれの遅延変動を示す第２遅延データ６０−２を生成する。新たな矩形領域ＲＡ１、ＲＡ２、ＲＡ３の対角線の長さは、それぞれ、１．２ｍｍ、３．７ｍｍ、４．９ｍｍになったとする。この場合、クロック分配経路ＰＣ１、ＰＣ２、ＰＣ３における遅延変動は、それぞれ、０．２ｐｓ、１．２ｐｓ、１．６ｐｓと算出される。このように、クロック分配経路ＰＣ１における遅延変動が小さくなる。
【００４６】
スラック補正部４５０は、スラックデータ４０と第２遅延変動データ６０−２とを組み合わせて、製造ばらつきが考慮されたスラックを算出し、算出されたそれぞれのスラックを示す第２スラックデータ７０−２を生成する。本例において、データ経路ＰＤ１、ＰＤ２、ＰＤ３のそれぞれのスラックは、＋１．１ｐｓ、＋２．８ｐｓ、＋３．４ｐｓと算出される。このように、タイミング違反が発生していたデータ経路ＰＤ１のスラックが増加（改善）し、タイミング違反が発生しなくなる。
【００４７】
ステップＳ４８０：
判定部４８０は、第１スラックデータ７０−１と第２スラックデータ７０−２との比較を行う。第１スラックデータ７０−１は、クロックノード位置変更前に、データ経路ＰＤ１、ＰＤ２、ＰＤ３のそれぞれのスラックが−０．１ｐｓ、＋３．８ｐｓ、＋３．８ｐｓであったことを示す。第２スラックデータ７０−２は、クロックノード位置変更後に、データ経路ＰＤ１、ＰＤ２、ＰＤ３のそれぞれのスラックが＋１．１ｐｓ、＋２．８ｐｓ、＋３．４ｐｓとなることを示す。このことから、改善対象であるデータ経路ＰＤ１のスラックが改善していることが分かる。また、全スラック中の最悪値も改善していることが分かる。
【００４８】
スラックが改善したことが確認されると（ステップＳ４８０；Ｙｅｓ）、判定部４８０は、変更後のクロックノード位置を採用する。つまり、判定部４８０は、第２設計データ３０−２を新たな第１設計データ３０−１とし、第２スラックデータ７０−２を新たな第１スラックデータ７０−１とする。そして、処理は、ステップＳ４６０に戻る。つまり、スラックの改善が続く限り、処理は繰り返される。これにより、最適なクロックノード位置が得られる。
【００４９】
一方、スラックがもはや改善しない場合（ステップＳ４８０；Ｎｏ）、判定部４８０は、変更後のクロックノード位置を採用しない。例えば、改善対象の１つのデータ経路ＰＤのスラックが改善したとしても、他のデータ経路ＰＤのスラックが悪化し、全スラック中の最悪値が逆に悪化してしまうことも考えられる。このような場合には、クロックノード位置を変更しない方がよい。その後、処理は、ステップＳ４９０に進む。
【００５０】
ステップＳ４９０：
判定部４８０は、最終的に決まったクロックノード位置を示すクロックノード位置データ８０を生成する。つまり、クロックノード位置データ８０は、トップ階層におけるクロック分岐点ＣＢとクロック端子ＣＴの位置を示す。クロックノード位置決定部４００は、クロックノード位置データ８０を、ＣＴＳ部５００に出力する。
【００５１】
その後、ステップＳ５００では、ＣＴＳ部５００が、設計データ１０とクロックノード位置データ８０に基づいて、クロックツリーシンセシスを行う。
【００５２】
４．効果
本実施の形態によれば、クロックツリーシンセシスの前に、適切なクロックノード位置があらかじめ決定される。より詳細には、異なるブロックにまたがるクロック分配経路ＰＣに関して、製造ばらつきに起因する遅延変動が小さくなるように、クロックノードの位置が適切に変更・決定される。これにより、異なるブロックにまたがるデータ経路ＰＤのクロックタイミングに対する製造ばらつきの影響が小さくなる。その結果、データ経路ＰＤにおけるタイミング違反が抑制され、タイミング収束が容易になる。従って、回路設計に要する時間が短縮される。
【００５３】
また、本実施の形態によれば、半導体集積回路の製造歩留りが向上する。それは、異なるブロックにまたがるデータ経路ＰＤのクロックタイミングに対する製造ばらつきの影響が小さくなっており、多少の製造ばらつきではタイミング違反が発生しないからである。
【００５４】
更に、本実施の形態によれば、半導体集積回路の消費電力が低減される。それは、異なるブロックにまたがるクロック分配経路ＰＣにおける遅延変動が小さくなっており、ドライバビリティの小さなセルでレイアウト可能になるからである。
【００５５】
更に、本実施の形態によれば、製造ばらつきの影響が小さくなるようにトップ階層のＣＴＳを実現することができる。それは、ＣＴＳに対してクロック分岐点情報を与えることで、製造ばらつきの影響の小さいクロックツリーを構成できるからである。
【００５６】
以上、本発明の実施の形態が添付の図面を参照することにより説明された。但し、本発明は、上述の実施の形態に限定されず、要旨を逸脱しない範囲で当業者により適宜変更され得る。
【符号の説明】
【００５７】
１    設計システム
２    処理装置
３    記憶装置
４    入力装置
５    出力装置
１０    設計データ
２０    ネットリスト
３０−１  第１設計データ
３０−２  第２設計データ
４０    スラックデータ
５０    遅延変動テーブル
６０−１  第１遅延変動データ
６０−２  第２遅延変動データ
７０−１  第１スラックデータ
７０−２  第２スラックデータ
８０    クロックノード位置データ
１００    プランニング部
２００    電源ルーティング部
３００    セル配置部
４００    クロックノード位置決定部
４１０    仮配線部
４３０    ＳＴＡ部
４４０    遅延変動算出部
４５０    スラック補正部
４６０    クロックノード位置変更部
４８０    判定部
５００    ＣＴＳ部
６００    ルーティング部
７００    検証部
ＰＲＯＧ  設計プログラム
Ｂ    ブロック
ＣＢ    クロック分岐点
ＣＤＶ  クロックドライバ
ＣＬＫ  クロック信号
ＣＴ    クロック端子
Ｆ    フリップフロップ
ＰＣ    クロック分配経路
ＰＤ    データ経路
ＲＡ    矩形領域
【図１】
2010244411.tif 000003
【図２】
2010244411.tif 000004
【図３】
2010244411.tif 000005
【図４】
2010244411.tif 000006
【図５】
2010244411.tif 000007
【図６】
2010244411.tif 000008
【図７】
2010244411.tif 000009
【図８】
2010244411.tif 000010
【図９】
2010244411.tif 000011
【図１０】
2010244411.tif 000012