(57)【要約】【課題】容易にクロック木を作成できるような半導体集積回路の設計方法を提供する。【解決手段】各機能ブロックＢＬ１，ＢＬ２，ＢＬ３内におけるテンプレート領域Ｒｅｔ１，Ｒｅｔ２，Ｒｅｔ３は、クロック木ＣＴ１，ＣＴ２，ＣＴ３の大きさをそれぞれ表している。テンプレートサイズを小さく設定した場合と、テンプレートサイズを大きく設定した場合との形状は幾何学的には相似であるが、クロックバッファ間やフリップフロップ−バッファ間の配線の長さが異なってくる。そして、配線の長さが異なると、配線の遅延時間が変化し、短い配線長であるほど配線における遅延時間は小さくなる。要求されるクロックスキュー値とクロック木の遅延時間値に合ったテンプレートの大きさと、その中に挿入されるクロックバッファの種類及びタッピングポイントの位置が決定される。【選択図】　　図１０
2004005591.tif 000002
【特許請求の範囲】
【請求項１】
複数の素子で構成される半導体集積回路を少なくとも１つの素子からなる複数のセルに区画し、かつ上記複数のセルを上記クロック入力部からクロック信号が供給される複数の第１種セルと該第１種セル以外のセルからなる複数の第２種セルとに分類して、上記半導体集積回路を設計する方法であって、
回路シミュレータを用いて、上記クロック入力部から導出される配線を順次複数方向に分木させ最終的に個々の上記第１種セルに至るように構成されたクロック木を表すテンプレートを生成するステップと、
上記ステップで生成されたクロック木の構造に基づいて、上記半導体集積回路内に上記各第１種セルを配置し、さらに半導体集積回路内の上記第１種セルが配置された領域以外の空き領域に上記第２種セルを配置するステップと、
論理接続要求に従って、上記各セル間の概略の配線経路を算出するステップと、
上記クロック入力部から上記クロック木上の各第１種セルにおける遅延時間を最終的に所望の値に調整するステップと、
上記ステップで求めた配線経路に従って半導体集積回路内の配線パターンを生成するステップと
を備えたことを特徴とする半導体集積回路の設計方法。
【請求項２】
請求項１記載の半導体集積回路の設計方法において、
上記テンプレートを生成するステップは、
上記クロック木の分木数を算出するステップと、
上記クロック木の大きさを算出するステップと、
上記クロック木上のタッピングポイントの位置を算出するステップと、
上記クロック木に遅延時間調整用セルを配置するステップと
からなることを特徴とする半導体集積回路の設計方法。
【請求項３】
請求項１記載の半導体集積回路の設計方法において、
上記各セルの最終的な遅延時間を調整するステップは、クロック木上の中間節点に位置するセルの出力駆動能力の変更と、クロック木内の配線の幅の変更と、クロック木上のタッピングポイントの変更とのうち少なくともいずれか１つの変更により行うことを特徴とする半導体集積回路の設計方法。
【請求項４】
請求項１記載の半導体集積回路の設計方法において、
上記テンプレートを生成するステップでは、上記クロック入力部から上記各第１種セルに至るクロック信号の遅延時間を算出して、全てのセルにおける遅延時間が所定範囲に収まるようにテンプレートを生成することを特徴とする半導体集積回路の設計方法。
【請求項５】
請求項１記載の半導体集積回路の設計方法において、
上記遅延時間の最終的な調整を行うステップでは、上記クロック入力部から上記各第１種セルまでのクロック信号の遅延時間を上記所定範囲内で互いに異なる複数の値にほぼ均等に分布させることを特徴とする半導体集積回路の設計方法。
【請求項６】
請求項１記載の半導体集積回路の設計方法において、
上記各セルを配置するステップでは、上記クロック木の各先端部に上記第１種セルとしてのフリップフロップを配置する一方、クロック木の各タッピングポイント間の中間節点に第１種セルとしての遅延時間調整用セルを配置した後、上記第２種セルを配置することを特徴とする半導体集積回路の設計方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、半導体集積回路の設計方法に係り、特にクロック信号を伝達するクロック配線及びクロック信号で駆動されるセルのレイアウトを設計する方法に関する。
【０００２】
【従来の技術】
従来より、半導体集積回路（ＬＳＩ）のレイアウト設計方式として、ゲートアレイ（又は、シー・オブ・ゲート）方式やスタンダードセル方式等がある。これらの方式は、ＮＡＮＤ、ＮＯＲ等の基本論理セルやそれらを組み合わせた複合セルをアレイ状に半導体チップ上に配置し、論理接続要求に従ってそれらのセルの端子間を配線することによってＬＳＩを構成する方法である。これらの方法は設計の自動化が進んでおり、様々なシステムが開発されている。
【０００３】
さらに、ＬＳＩの製造技術の進歩により、ゲートアレイ方式とスタンダードセル方式とを融合させたエンベデッド・アレイ・セル方式の半導体集積回路が開発されている。この方式は、半導体集積回路の中の一部の回路又は全ての回路を複数の機能ブロック内に例えば予め設計されたマクロブロックか新しく設計されたスタンダードセル方式ブロック内に組み込んで、各機能ブロックを半導体チップ上に配置し、各機能ブロック外はゲートアレイ領域と定めておく。そして、機能ブロックに収納された回路以外の回路の生成と、機能ブロック外の配線とはゲートアレイ領域で行なって、半導体集積回路を造り上げようとするものである。従って、これらの方式では、機能ブロック外の領域で任意に回路を生成できるので製造の配線工程の前までなら、回路の追加・修正を比較的簡単に行なうことができるという利点がある。
【０００４】
ところで、近年は所望の機能を果たすために必要なシステム全体を１つの半導体チップ上に搭載できるほどに高集積化された半導体集積回路が開発されてきており、このように半導体集積回路の集積度が増大するにつれて半導体集積回路設計にかかる工数も増加の一途を辿っている。半導体集積回路のレイアウト設計についても例外ではなく、工数・処理時間が指数関数的に増大してきており、半導体集積回路全体を一度にレイアウトするには膨大な時間及び労力を費やすことになる。そこで、上述のように半導体集積回路を幾つかの機能ブロックに分割し、各機能ブロック内を個別に設計し、最後に機能ブロック間を配線して組み上げるといった階層設計の手法がとられることが多い。
【０００５】
一方、半導体集積回路内の各セルを同期して駆動させるクロック信号の周波数も増大されてきている。半導体集積回路の動作速度は、各セルに到達するクロック信号の位相差であるクロックスキューによって制約され、同様に、システム全体の動作速度は、各半導体集積回路間のクロックスキューによって制約される。そして、半導体集積回路の高集積化によって、クロック信号で駆動されるフリップフロップ等のセルの数が多くなるとともに、各機能ブロックに供給されるクロック信号も互いに同期をとらなければならないので、クロック信号を各セルに供給するための配線方式は益々重要になってきている。
【０００６】
ここで、上述のクロックスキューを最小化する方法として、クロック木を生成する方法がある。これは、図１６に示すように、ある機能ブロック毎に、クロック信号入力部から同時に動作しなければならないフリップフロップ群までの配線経路をクロック木として構成し、そのクロック木内の根にあたるクロック信号を発信するセルから各フリップフロップ間までの信号が到達するまでの時間差（クロック木のスキュー）をある大きさ以内に抑える方法である。ここで、図１６ａに示すように、パッド１１で囲まれる半導体集積回路１内には、３つの機能ブロックＢＬ１，ＢＬ２，ＢＬ３が配置されており、各機能ブロックＢＬ１，ＢＬ２，ＢＬ３内には、それぞれクロック信号を伝達するための配線構造（クロックネット）を示すクロック木ＣＴ１，ＣＴ２，ＣＴ３が形成されている。また、図１６ｂは、上記機能ブロックＢＬ１中で構成されたクロック木ＣＴ１の一部を拡大した図である。クロック木ＣＴ１の葉に相当する部位にはフリップフロップ２０が配置され、クロック木ＣＴ１の各タッピングポイント２３間の中間節点に相当する部位にはクロックバッファ２１が配置（挿入）されている。そして、各クロックバッファ間やクロックバッファ−フリップフロップ間を配線で接続して構成されている。このように生成されたクロック木において、クロックスキューを抑えることが全回路の動作速度を速めることになるので、クロックスキューを「０」に近づけることが重要な課題となる。
【０００７】
このように、クロック木を生成する際にクロックスキューを正確に「０」にする方法の公知例として、非特許文献１がある。この方法は、クロック木を構築していく際、フリップフロップから順に、ボトムアップ的に２分木を構成するようにゼロスキュー併合と呼ぶ常にその木がスキュー＝０（この状態をゼロスキューと呼ぶ）となるように生成していくものである。ここで、このゼロスキューになるように２つの木から１つの木をつくるときに重要な概念として、上述のタッピングポイント２３がある（図１６参照）。これは、２つの木を併合するときにどの位置を根のポイント（そこにクロックバッファが接続される）にするかを表した点である。タッピングポイント２３からそれぞれの木の葉にあるフリップフロップ２０までの遅延を等しくなるような点に設定すれば、ゼロスキューのクロック木が実現できる。上記公知例では、フリップフロップとバッファをいったん配置させた後、ボトムアップ的に配線をゼロスキューを常に保証しながら２分クロック木になるように配線する方法が記述されている。
【０００８】
ところで、このクロック木を生成するとき常にゼロスキューを保証する必要があるので、うまく配線を行なわないと配線長が長いクロック木が生成されることになる。即ち、クロック木の根から葉までの遅延時間が大きくなる結果、クロックの一周期が長くなって動作の遅い回路になってしまう。
【０００９】
そこで、最近かかる不具合を解決した効率的なアルゴリズムが開発されてきている。例えば、非特許文献２がその一例である。これは、クロック信号の遅延時間の見積り式を目的関数にしてそれを最小化するアルゴリズムであり、配線幅の最適化も同時に行う手法である。
【００１０】
以上のクロック木を用い、半導体集積回路を機能ブロックに区画するようにしたスタンダードセル方式（又はゲートアレイ方式）におけるレイアウト設計手順の一例は、以下のようになる。
【００１１】
１．所望の動作を表した回路図を基に基本論理セルをアレイ状に配置する。このとき、フリップフロップは機能ブロック全体に広がるように配置する。
【００１２】
２．クロック信号を伝達する配線のネット（クロックネット）に対して、フリップフロップ群からボトムアップ的にクロック木を構成しながら、クロックバッファの配置とクロック木の概略配線経路を決定する。
【００１３】
３．残りのネットについて、概略的な配線経路を決定する。
【００１４】
４．クロックネットについて、概略的な配線経路に従ってゼロスキューになるように詳細配線を行なう。
【００１５】
５．クロックネット以外のネットについて、概略的な配線経路に従って詳細配線を行なう。
【００１６】
一方、上述の手順とは異なる手順でクロック木を生成する方法として、例えば特許文献１に開示されるように、階層的にブロックを分割しながらトップダウン的にクロック木を生成する方法がある。この方法は、上記手順１．と２．とを同時に行なう方法であって、トップダウンに階層的領域分割を行ないながら、クロックバッファの挿入と基本論理セルの配置とクロック木構造の生成を一度に行なうものである。この方法によれば、クロック木構造を意識しながらフリップフロップ以外の基本論理セルの配置の最適化が図れるという利点がある。
【００１７】
なお、これら上述の手法は、半導体チップ全体で一度に行なうか、各機能ブロック毎に適用されることが多い。
【００１８】
また、半導体集積回路の設計は階層的に行なわれることが多いので、機能ブロック毎に適用された場合、機能ブロック同士のクロック信号の同期をとることも重要なことである。各機能ブロックに供給されるクロック信号同士の同期をとる従来のレイアウト方法の一例としては、
（Ａ）クロック供給源から機能ブロックに至るブロック外クロック配線を、各機能ブロック外の配線チャネルに制限されることなく自由に、かつ、クロック供給源から各機能ブロックのクロック入力部（クロック端子）まで等長となるように敷設する方法
（Ｂ）半導体集積回路の中心部にクロック信号分配部を設置して、クロック供給源とクロック信号分配部とを１本のクロック配線で接続し、クロック分配部と機能ブロックを含む各機能ブロックのクロック端子との間に各々のクロック配線を等長となるように敷設する方法
等がある。例えば、特許文献２に開示される方法がその一例である。
【００１９】
【非特許文献１】
Ｐｒｏｃ．　ＩＥＥＥ　Ｉｎｔｅｒｎａｔｉｏｎａｌ　Ｃｏｎｆｅｒｅｎｃｅ　ｏｎ　Ｃｏｍｐｕｔｅｒ　Ａｉｄｅｄ　Ｄｅｓｉｇｎ，　１９９１，　ｐｐ．３３６−３３９
【非特許文献２】
Ｐｒｏｃ．　ＩＥＥＥ　Ｉｎｔｅｒｎａｔｉｏｎａｌ　Ｃｏｎｆｅｒｅｎｃｅ　ｏｎ　Ｃｏｍｐｕｔｅｒ　Ａｉｄｅｄ　Ｄｅｓｉｇｎ，　１９９３，　ｐｐ．５６３−５６６
【特許文献１】
特開平６−２８２６０３号公報（要約書）
【特許文献２】
特開平５−１９８６７４号公報（要約書）
【００２０】
【発明が解決しようとする課題】
しかしながら、上記非特許文献１及び２の方法では、フリップフロップとクロックバッファを含む基本論理セルを先に配置してからクロック木を生成するので、ゼロスキューになるようにクロック木は構成できるが、クロック木の遅延時間の大きさを最小にすることや要求された遅延時間値に収めることは困難であるという問題があった。そのため、半導体集積回路内において各機能ブロック間の動作の同期を得ることができない虞れを生じたり、複数の半導体集積回路からなるシステムを構成した場合に、各半導体集積回路間の動作の同期を得ることができない虞れがあった。
【００２１】
特許文献１の方法では、階層的にフリップフロップ群の分散が行なわれるため、クロック木の遅延時間の大きさを最小にすることや要求された遅延時間値に調整することが困難である。そのため、非特許文献１，２と同様に、各半導体集積回路間の動作の同期を得ることができない虞れがあった。
【００２２】
また、非特許文献１，２及び特許文献１の方法が目的とするごとく、クロックスキューが現実に「０」になると、同時に多数のフリップフロップが動作してしまうことになり、一時的に多くの電流（ピーク電流の増大）が流れる。従って、電力供給状態によっては、フリップフロップが動作しなくなる場合が生じる虞れがあった。すなわち、従来のように各論理セルに対するクロックスキューが「０」になるように設計していても、半導体集積回路内に組み込まれるフリップフロップ等の論理セルの数がそれほど多くない場合には、現実には工程上のバラツキ等によって少しずつ作動時刻がずれるので、一度に多くの論理セルが作動することによる動作不良を生じる虞れは少ない。しかし、最近のように半導体集積回路あるいはシステム全体の規模が大きくなってしかもクロック周波数が増大すると、現実に同時に作動する論理セルの数が増大する確率が高くなる。したがって、瞬時的に過剰な電流が生じることに起因する上述の不具合を招く虞れがある。
【００２３】
また、非特許文献１，２，３の方法では、通常クロックネットは、クロック信号が供給されないセルに対する他のネットと同時に配線される場合（使用できる配線層は同じ）が多く、大規模で複雑なクロック木の場合、他のネットとの配線経路の関係からクロックネットの配線経路の迂回路の発生等、配線長がいたずらに長くなる配線が発生しやすくなるといった問題があった。
【００２４】
また、特許文献２の方法において、半導体チップ上に機能ブロックを配置してクロック木を生成してクロック配線を行なう場合、その配線はクロック供給源から各機能ブロックのクロック端子までを等長にしなければならないという制約があり、その制約を守るために他のネットの障害を避ける意味でクロック専用の配線を用いることが必要になってくる。例えば、配線層を３層で構成する半導体チップの場合、第１及び第２層目配線を一般信号線や電源配線用とし、第３層目配線をクロック配線用として用いることになる。この場合、３層目配線に一般信号線を形成できないため、３層目配線を一般信号線としても併用した場合と比べてチップ面積が大きくなる。一方、配線層が２層の半導体集積回路では、クロックネットとクロックネット以外のネットとを混在させると、クロックスキューの正確な調整が困難となる。これは、下記理由による。すなわち、クロックネットとクロックネット以外のネットとを同じ配線層内に混在させているので、クロックネットとクロックネット以外のネットとの干渉を避けるためには、クロック発生源から各機能ブロックのクロック入力端子までの配線長を同じ長さにすることが困難な場合が多い。したがって、いったん機能ブロックの配置やクロックネットの配線を行った後、スキューの最終的な調整を行うためにクロックバッファのトランジスタサイズを変更しなければならない場合等がある。その場合、機能ブロック内のクロックバッファのトランジスタサイズを変更すると、機能ブロック内のレイアウトを再度設計する必要が生じる。しかし、これではレイアウト工数が大幅に増大することになり、このような手法を用いることの意義が薄れてしまうことになる。
【００２５】
本発明の目的は、容易にクロック木を作成できるような半導体集積回路の設計方法を提供することにある。
【００２６】
【課題を解決するための手段】
本発明の半導体集積回路の設計方法は、複数の素子で構成される半導体集積回路を少なくとも１つの素子からなる複数のセルに区画し、かつ上記複数のセルをクロック入力部からクロック信号が供給される複数の第１種セルと該第１種セル以外の複数の第２種セルとに分類して、上記半導体集積回路のレイアウトを設計する方法であって、回路シミュレータを用いて、上記クロック入力部から導出される配線を順次複数方向に分木させ最終的に個々の上記第１種セルに至るように構成されたクロック木を表すテンプレートを生成するステップと、上記ステップで生成されたクロック木構造に基づいて、上記半導体集積回路内に上記各第１種セルを配置し、さらに半導体集積回路内の上記第１種セルが配置された領域以外の空き領域に上記第２種セルを配置するステップと、論理接続要求に従って、上記各セル間の概略の配線経路を決定するステップと、上記クロック入力部から上記クロック木上の各第１種セルにおける遅延時間を最終的に所望の値に調整するステップと、上記ステップで求めた配線経路に従って半導体集積回路内の配線パターンを生成するステップとを備えている。
【００２７】
この方法により、テンプレートで表されるクロック木構造を利用して、各セルの配置やクロックネットを構成する配線経路の設計がトップダウン的に行われ、その間遅延時間やクロックスキューの調整も容易に行われる。したがって、各機能ブロック間において、各セルが共通のクロック信号に同期して動作する。しかも、レイアウト設計のための工数が大幅に低減されるとともに、ボトムアップ方式のような遅延時間の増大を招くこともない。
【００２８】
上記テンプレートを生成するステップを、上記クロック木の分木数を算出するステップと、上記クロック木の大きさを算出するステップと、上記クロック木上のタッピングポイントの位置を算出するステップと、上記クロック木に遅延時間調整用セルを配置するステップとにより構成することができる。
【００２９】
また、上記各セルの最終的な遅延時間を調整するステップを、クロック木上の中間節点に位置するセルの出力駆動能力の変更と、クロック木内の配線の幅の変更と、クロック木上のタッピングポイントの変更とのうち少なくともいずれか１つの変更により行うことができる。
【００３０】
上記テンプレートを生成するステップでは、上記クロック入力部から上記各第１種セルに至るクロック信号の遅延時間を算出して、全てのセルにおける遅延時間が所定範囲に収まるようにテンプレートを生成することにより、テンプレートを形成する段階で遅延時間が所定範囲内に収められているので、その後のステップで多少遅延時間が当初の見積もりから外れても、遅延時間が大幅に大幅な遅延時間のずれが生じることはない。したがって、再度レイアウトをやり直す必要が生じる虞れを確実に防止することができる。
【００３１】
上記遅延時間の最終的な調整を行うステップでは、上記クロック入力部から各セルまでのクロック信号の遅延時間を上記所定範囲内で互いに異なる複数の値にほぼ均等に分布させることが好ましい。
【００３２】
上記各セルを配置するステップでは、上記クロック木の各先端部に上記第１種セルとしてのフリップフロップを配置する一方、クロック木の各タッピングポイント間の中間節点に第１種セルとしての遅延時間調整用セルを配置した後、上記第２種セルを配置することにより、第２種セルを配置する際にはクロックネットの構造が定まっているので、第２種セルのための配線の仮想配線長の最適化やクロックネットとの干渉を回避することが容易となる。
【００３３】
【発明の実施形態】
（第１の実施形態）
以下、第１の実施形態について、図１ａ−図１ｄ及び図２ａ−図２ｃを参照しながら説明する。
【００３４】
図１ａ−図１ｄは、クロック構造の設計の概念を示す図である。図１ａに示すように、半導体集積回路１の内部を複数の機能ブロックＢＬ１，ＢＬ２，…，ＢＬｎに区画し、各機能ブロックＢＬ１，ＢＬ２，…，ＢＬｎの配置を仮に定める。すると、クロック発生源２から第１クロック入力部３を介して半導体集積回路１内に入力されるクロック信号を各機能ブロックＢＬ１，ＢＬ２，…，ＢＬｎの第２クロック入力部４まで伝達するためのブロック外配線経路ＣＮｏｕｔ（ブロック外クロックネット）も仮に決定し得る。ただし、図１ａに示す半導体集積回路１内の内部が空白で表されている枠は、図１ｂに示す機能ブロックＢＬ１，ＢＬ２，ＢＬｎを示す。そして、図１ｂに示すように、半導体集積回路１内の各機能ブロックＢＬ１，ＢＬ２，…，ＢＬｎ内には、多数の論理セルが収納された状態となっている。
【００３５】
ここで、図１ｃに示すように、ブロック外クロックネットＣＮｏｕｔを構成する配線は電気的には抵抗と容量とが結合した遅延要素の集合であるので、第１クロック入力部３から各機能ブロックＢＬ１，…，ＢＬｎ−１，ＢＬｎまでのブロック外遅延時間Ｔ１ｏｕｔ，…，Ｔｎ−１ｏｕｔ，Ｔｎｏｕｔは仮に定まる（ただし、配線の径は一定値としておく）。また、各機能ブロックＢＬ１，…，ＢＬｎ−１，ＢＬｎはそれぞれ遅延時間Ｔ１ｉｎ，…，Ｔｎ−１ｉｎ，Ｔｎｉｎをもったバッファとみなし得る。従って、第１クロック入力部３から各機能ブロックＢＬ１，ＢＬ２，…，ＢＬｎ−１，ＢＬｎの各論理セルまでのクロック信号の遅延時間Ｔ１，Ｔ２，…，Ｔｎ−１，Ｔｎを概略的に見積もることができる。そして、この段階で各機能ブロックにおける遅延時間Ｔ１，Ｔ２，…，Ｔｎ−１，Ｔｎがそれぞれ所定範囲内に収まるか否かを見積もる。同時に、クロックスキューが制限範囲内に収まるかどうかの見当をつける。なお、クロックスキューが「０」であるということは、Ｔ１＝Ｔ２＝…＝Ｔｎ−１＝Ｔｎであることを意味する。そして、各論理セルにおける遅延時間Ｔ１，Ｔ２，…，Ｔｎ−１，Ｔｎがいずれも所定範囲に収まるという見通しが立てば、仮に定めた位置への機能ブロックの配置及び機能ブロック内のクロックネットの設計にはいる。一方、この段階で、各機能ブロックにおける遅延時間Ｔ１，Ｔ２，…，Ｔｎ−１，Ｔｎを所定時間に収める見通しが立たない場合には、機能ブロックＢＬ１，ＢＬ２，…，ＢＬｎ−１，ＢＬｎの配置を変更するなどによって、各論理セルにおける遅延時間Ｔ１，Ｔ２，…，Ｔｎ−１，Ｔｎを再度見積もり、遅延時間が所定範囲内に収まりかつクロックスキューが制限範囲内に収まるまで仮配置を行う。この仮配置が終わると、図１ｄに示すように、仮配置が終わった段階におけるクロックネットについて回路シミュレータ（例えばＳＰＩＣＥ）を用いて詳細に遅延時間の演算を行う。
【００３６】
次に、本実施形態におけるクロック設計方法の詳細について説明する。まず、図２ａに示すように、ブロック外クロックネットＣＮｏｕｔを形成する。このとき、半導体集積回路１内に各機能ブロックＢＬ１，ＢＬ２，…を仮に配置しておき、ブロック外クロックネットＣＮｏｕｔのうち各機能ブロックＢＬ１，ＢＬ２，…，ＢＬｎに至るまでの最終分岐点までの部分を決定し、最終分岐点５から各機能ブロックＢＬ１，ＢＬ２，…，ＢＬｎに至る部分は、仮に決定しておく。つまり、最後に機能ブロックＢＬ１，ＢＬ２，…，ＢＬｎの位置を少しずらせる余地は残しておくのである。そして、第１クロック入力部３から各機能ブロックＢＬ１，ＢＬ２，…，ＢＬｎの第２クロック入力部４までのクロック信号のブロック外遅延時間Ｔ１ｏｕｔ，Ｔ２ｏｕｔ，…，Ｔｎｏｕｔを計算する。
【００３７】
次に、図２ｂに示すように、各機能ブロックＢＬ１，ＢＬ２，…，ＢＬｎ内におけるクロック信号を伝達するための配線経路であるクロック木ＣＴ１，ＣＴ２，…，ＣＴｎを後述のクロック木構造で生成する。このクロック木の生成方法については、第２の実施形態で説明する。このとき、各機能ブロックＢＬ１，ＢＬ２，…，ＢＬｎ内におけるブロック内遅延時間Ｔ１ｉｎ，Ｔ２ｉｎ，…，Ｔｎｉｎを計算する。
【００３８】
最後に、図２ｃに示すように、半導体集積回路１内に各機能ブロックＢＬ１，ＢＬ２，…，ＢＬｎを組み込んだ状態で、各機能ブロック内の論理セルにおける遅延時間Ｔ１（＝Ｔ１ｏｕｔ＋Ｔ１ｉｎ），Ｔ２（＝Ｔ２ｏｕｔ＋Ｔ２ｉｎ），…，Ｔｎ（＝Ｔｎｏｕｔ＋Ｔｎｉｎ）を算出する。このとき、各論理セルにおける遅延時間Ｔ１，Ｔ２，…，Ｔｎがそれぞれある範囲内で互いに異なる何種類かの値に群別されるように制御しながら、各クロックネットの配線の幅を変更し、あるいは必要に応じてクロックバッファを配置する。その場合、クロックスキューは「０」ではなく、何種類かの異なる値に群別されることになるが、各論理セルの同期不良を招かない程度の制限範囲内には収まるようにする。
【００３９】
このように遅延時間を群別する場合、各機能ブロックＢＬ１，ＢＬ２，…，ＢＬｎ単位で何種類かに群別すればある機能ブロック内では各論理セルへのクロック信号の遅延時間が同じになるように設計することになる。それでもよいが、各論理セルについて遅延時間を群別してもよい。つまり、ある機能ブロック内である論理セル群毎にクロック信号の遅延時間が異なるように設計してもよい。
【００４０】
本実施形態のようなレイアウト設計方法では、先に機能ブロック外の配線経路つまりブロック外クロックネットを生成し、その後各第１クロック入力部３から各論理セルまでのクロック信号の遅延時間Ｔ１，Ｔ２，…，Ｔｎを所定範囲にするように、全体のクロックネットを生成するので、各論理セルまでのクロック信号の遅延時間Ｔ１，Ｔ２，…，Ｔｎを所望の値に調整し得る。従って、各機能ブロック間において、各論理セルが共通のクロック信号に同期して動作する。また、幾つかの半導体集積回路で大きなシステムを構成する場合でも、各半導体集積回路間の作動を正確に同期させることができる。
【００４１】
なお、本実施形態のように、クロックネットの構造設計の当初はブロック外クロックネットＣＮｏｕｔのうち各機能ブロックＢＬ１，ＢＬ２，…，ＢＬｎに至る最終分岐点５までに止めておく必要は必ずしもなく、各機能ブロックの各第２クロック入力部４まで決定してもよい。ただし、本実施形態のごとく、クロックネットの構造設計の当初はブロック外クロックネットのうち最終分岐点５までの部分をまず決定しておき、最後の配線を行うステップで遅延時間を調整する等のために機能ブロックの位置を微調整することで、特に遅延時間の調整を微細かつ正確に行うことができるとともに、調整可能な幅の拡大をも図ることができる。
【００４２】
なお、本実施形態では、本番のクロックネットのレイアウト設計に入る前に擬似的にクロックネットの設計を行ったが、必ずしも擬似的なクロックネットの設計を行うことなく本番のクロックネットのレイアウト設計から始めてもよい。ただし、擬似的なクロックネットの設計の段階で、遅延時間Ｔ１，Ｔ２，…，Ｔｎが所定範囲に収まるように各機能ブロックＢＬ１，ＢＬ２，…，ＢＬｎの適正な配置場所を概略的に求めておくことで、後に当初の配置場所ではどうしても遅延時間やクロックスキューを所望の値に調整できないことが判明して機能ブロックを再配置しなければならなくなるような事態を回避し得る。
【００４３】
また、本実施形態におけるような遅延時間の群別は必ずしも行う必要はなく、各論理セルの遅延時間を同じに、言い換えるとクロックスキューが「０」になるようにしてもよい。ただし、このように設計段階で論理セルにおける遅延時間が幾つかの異なる値に群別されるように設計しておくことで、半導体集積回路の規模が大きくなり、クロック周波数が高くなったときでも、ある瞬間に多くの論理セルが一度に作動して電力の不足により動作不良を生じるのを有効に防止することができる。
【００４４】
さらに、本実施形態においては、ブロック外クロックネットＣＮｏｕｔはクロック木を用いて設計しなかったが、クロック木を利用してブロック外クロックネットＣＮｏｕｔを設計するようにしてもよい。
【００４５】
（第２の実施形態）
次に、第２の実施形態について、図３−図１１を参照しながら説明する。
【００４６】
図３は、第２の実施形態におけるレイアウト設計方法の全体の手順を示すフローチャートである。
【００４７】
図４は、本実施形態に係る半導体集積回路１の構成を示し、半導体集積回路１内のパッド１１で囲まれる領域に３つの機能ブロックＢＬ１，ＢＬ２，ＢＬ３が配置されており、クロック信号を供給するクロック発生源（図示せず）から各機能ブロックＢＬ１，ＢＬ２，ＢＬ３に供給されるクロック信号を伝達するブロック外クロックネットＣＮｏｕｔと、各機能ブロックＢＬ１，ＢＬ２，ＢＬ３内で各基本論理セルにクロック信号を伝達するための配線経路を表すクロック木ＣＴ１，ＣＴ２，ＣＴ３が生成されている。
【００４８】
図５−図８は、上記図３に示す手順に従って上記図４に示す機能ブロックＢＬ１内における配置配線を行う場合の構造の変化を示す図である。
【００４９】
以下、図５−図８を参照しながら、図３に示す手順に従って、概略的な手順のみを説明する。
【００５０】
まず、ステップＳＴ１で、例えば図５ａに示すように、クロック木が持つ遅延（木の根から各葉までの到達時間）を制限範囲内に抑えるために、機能ブロックＢＬ１におけるクロック木ＣＴ１の構造を表すテンプレートを生成する。本実施形態では、予めクロック木ＣＴ１上に配置される第１種セルであるフリップフロップ及びクロックバッファの位置とクロック木ＣＴ１自体の大きさを決定するために、クロック木ＣＴ１のテンプレートを生成する。ここで、重要なことは、クロックバッファのトランジスタサイズの変更だけでなく、クロック木の大きさによっても、クロック木の根から葉に位置するフリップフロップまでの遅延時間（この実施形態ではブロック内遅延時間Ｔｉｎになる）を変化させることができることである。この性質を使って、クロック木の遅延を微細に調整できるとともに、必要に応じて空き領域を確保することができる。その際、ステップＳＴ１２で、遅延時間の計算を行い、その計算結果を基にテンプレートを生成する。例えば図５ｂに示すように、タッピングポイント２３を各論理セルの等距離位置よりもずらせることで、各論理セルにおける遅延時間を互いに異なる値とし、クロックスキュー値を調整することもできる。
【００５１】
次に、ステップＳＴ２で、全ての論理セルを配置する。このとき、まず、図６ａ及び図６ｂに示すように、クロック木ＣＴ１上に第１種論理セルであるフリップフロップ２０及びクロックバッファ２１を先に配置する。その後に、図７ａに示すように、残りの第２種論理セル２２を配置することにする。
【００５２】
次に、ステップＳＴ３で、概略配線を行なう。クロック木の構造は既にステップＳＴ１で生成されているが、クロック木に関する概略配線経路を詳細に決定し、つまり具体的に半導体集積回路内のどの辺りに配線を引くかを決定し、さらにクロックネット以外のネット（つまり、クロック信号以外の信号を伝達する配線の経路）に関しても概略的な配線経路を求める。このとき、クロック木の構造を考慮して、配線混雑度の最小化等を行ない、配線領域の面積が最小化されるような概略配線経路を決定する。
【００５３】
次に、ステップＳＴ４で、フリップフロップ２０及びクロックバッファ２１の配置位置を基に、詳細にクロックスキュー値の調整を行なう。その際、クロックバッファ２１のトランジスタサイズの変更や、図７ｂに示すような経路３０，３１，３２における配線幅の変更や、タッピングポイントの変更等を行なって微小な調整をする。このステップＳＴ４では、クロック木の遅延の調整は行なわない。何故なら、この段階では大きな遅延の変更（調整）が不可能であるからである。なお、クロックバッファのトランジスタサイズの変更の代わりに、異なるクロックバッファを選択する方法でもよい。
【００５４】
最後に、ステップＳＴ５で、図８に示すように、全てのネットの配線の詳細なパターンを生成する。ここでは、下記２つの方法（１）又は（２）
（１）クロックネットに対し専用配線層１層で配線し、それ以外のネットは他の配線層を用いて配線する方法
（２）全ネットについて全ての配線層を用いて配線する方法
を択一的に選択することができる。
【００５５】
上記方法（２）の場合、クロックネットとクロックネット以外のネットとの関係によっては、所望のクロックスキュー値と異なる配線を行なう場合が発生するかもしれないので、さらに微小な調整の意味で配線幅変更を行なう。
【００５６】
このように、クロック木構造決定にテンプレートを用いているので、フリップフロップやクロックバッファの最適配置の決定及びクロックスキューやクロック木の遅延を柔軟かつ容易に制御することができ、クロック周波数の高い半導体集積回路のレイアウト設計が容易となる。また、クロック木構造が予めわかっているので、他の論理セルの配置位置を最適化でき、かつクロックネットと一般信号ネットとの間の干渉を回避して配線混雑度を容易に低減することができる。
【００５７】
なお、本実施形態はクロック木の中間節点のクロックバッファとしてバッファを配置してクロック木を生成しているが、クロック木の根元から葉までが偶数段である場合には、論理値が反転するインバータを配置しても最終的には入力信号の論理値が維持されるので、不具合は生じない。
【００５８】
次に、上記図３に示すフローチャートの各ステップＳＴ１−ＳＴ５の具体的な内容について説明する。
【００５９】
ステップＳＴ１は、図３に示すように、大きく分けて４つのステップから構成されている。まず、ステップＳＴ６で、クロック木の構造を決定する。その場合、例えば図９ａに示す２分木方式と図９ｂに示す３分木方式とがある。図９ａに示す２分木方式の場合、クロック木をバッファ挿入レベルが「３」とすると、図９ａの上図に示すように、フリップフロップ２０を最大８個まで配置でき、クロックバッファ２１は７つ挿入する必要がある。ここで、バッファ挿入レベルとはクロック信号を供給する根元となるクロックバッファ２１から各フリップフロップ２０まで辿るのに必要なバッファの段数である。もしバッファ挿入レベルが「３」でクロック木が３分木とすると、図９ｂに示すように、フリップフロップ２０を最大９個まで配置でき、クロックバッファ２１は４つ挿入する必要があることになる。従って、分木数が多くなるほどバッファ挿入数が減少し、最大フリップフロップ数は増加するが、バッファ間やフリップフロップ−バッファ間の配線が増加するので最終的なチップ面積に有利であるとは限らない。
【００６０】
なお、１つのクロック木内における分木数の種類を２分木，３分木等の単一種類に限定してもよいが、１つのクロック木内に数種類の分木数を混在させてもよい。
【００６１】
本実施形態では、図５ａに示すように、２分木構造のクロック木ＣＴ１を生成する。
【００６２】
次に、ステップＳＴ７で、テンプレートサイズつまり機能ブロックＢＬ１内で生成するクロック木ＣＴ１の大きさを決定する。図１０ａは、各機能ブロックＢＬ１，ＢＬ２，ＢＬ３内におけるテンプレート領域Ｒｅｔ１，Ｒｅｔ２，Ｒｅｔ３を示し、各テンプレート領域Ｒｅｔ１，Ｒｅｔ２，Ｒｅｔ３は各機能ブロックＢＬ１，ＢＬ２，ＢＬ３で生成するクロック木ＣＴ１，ＣＴ２，ＣＴ３の大きさをそれぞれ表している。例えば、図１０ｂはテンプレートサイズを小さく設定した場合の形状を示し、図１０ｃはテンプレートサイズを大きく設定した場合の形状を示す。両者の形状は幾何学的には相似であるが、クロックバッファ間やフリップフロップ−バッファ間の配線の長さが異なってくる。そして、配線の長さが異なると、配線の遅延時間が変化し、短い配線長であるほど配線における遅延時間は小さくなる。すなわち、図１０ｂに示すテンプレートサイズを有するクロック木の方が、総遅延時間（根元のクロックバッファからフリップフロップまでの最大遅延時間）が小さいことになる。しかし、クロック木のサイズを小さくし過ぎると、フリップフロップが狭い領域に集中し、配線の混雑による配線の占有面積が増大し、最終的な機能ブロック面積の増加やチップ面積の増加を引き起こすことになるので注意しなければならない。
【００６３】
本実施形態では、図５ａ，図５ｂに示すように、機能ブロックＢＬ１の大きさ一杯にクロック木を生成させる。
【００６４】
次に、ステップＳＴ８で、クロックスキューの大きさを調整するためにタッピングポイント２３を決定する。図１１ａは、クロック木がバランスするようにタッピングポイント２３を設定している場合であり、クロックスキューは「０」となる。一方、図１１ｂはタッピングポイント２３を図中やや左方にずらし、クロック木としてアンバランスな形を形成したものである。この場合、各クロックバッファ２１間やクロックバッファ−フリップフロップ間の配線長が各々異なっているのでクロックスキューは「０」より大となる。これを実現するために、図３のフローチャートに示すように、ステップＳＴ８は、２つのサブステップＳＴ８ａ及びＳＴ８ｂから構成されている。すなわち、ステップＳＴ８ａで、予め設定された最大許容スキュー値以内のあるクロックスキュー値に設定した後、ステップＳＴ８ｂで、その設定されたクロックスキュー値に合うようなタッピング位置を決定する。
【００６５】
その際、ステップＳＴ１２による遅延時間の計算結果を利用してクロックスキュー値を算出する。クロックスキュー値は、２分木の場合、分木される左側に生じる遅延時間と分木される右側に生じる遅延時間との差であるから、先のステップＳＴ８ａで設定されたクロックスキュー値になるように、タッピングポイント２３の位置を決定する。これは、３分木以上の場合も同様に計算することができる。
【００６６】
以上のステップによってクロック木の大きさとタッピングポイント２３の位置までが決まってもクロック木に挿入されるクロックバッファ２１の種類が決定していないので、クロック木の遅延時間は一意に定まらない。それを決定するために、ステップＳＴ９で、挿入されるクロックバッファ２１の種類を選択する。クロックバッファ２１は、一般的に駆動能力の大きいものは早く、小さいものは遅く動作する。予め要求されたクロック木の遅延時間値になるように、ステップＳＴ１２で得られた遅延時間の計算結果に基づいて各クロックバッファ２１の種類を選択する。ここで、どのようにクロックバッファの組み合わせを変えてもクロック木の遅延の要求値に合わない場合が発生することもあり得るが、その場合は、ステップＳＴ７に戻ってクロックバッファ２１の種類を固定して再度テンプレートの大きさを決定する。
【００６７】
以上のステップにより、要求されるクロックスキュー値とクロック木の遅延時間値に合ったテンプレートの大きさと、その中に挿入されるクロックバッファ２１の種類及びタッピングポイント２３の位置が決定される。
【００６８】
図５ｂは、機能ブロックＢＬ１において、クロック木ＣＴ１の各部のタッピングポイント２３の位置が決定された状態を示している。
【００６９】
次に、ステップＳＴ２で、フリップフロップとクロックバッファを含む回路中の論理セル群を配置する。その際、まず、クロック木に配置される第１種論理セルを配置する。すなわち、ステップＳＴ２ａで、図６ａに示すように、機能ブロックＢＬ１内のクロック木ＣＴ１にフリップフロップ２０を配置する一方、ステップＳＴ２２ｂで、図６ｂに示すように、クロック木ＣＴ１にクロックバッファ２１を配置する。ただし、フリップフロップ２０とクロックバッファ２１との配置の順番はどちらでも良い。
【００７０】
そして、ステップＳＴ２ｃで、機能ブロックＢＬ１内のクロック木ＣＴ１以外の部位に、クロック信号が直接入力されない第２種論理セル（残セル）２２を配置する。図７ａは、第２種論理セルが配置された状態を示す。この状態では、まだ配線幅等は未定なので、配線部分は破線で示されている。
【００７１】
その際、すでにフリップフロップ２０とクロックバッファ２１を配置しているので、クロック木ＣＴ１つまりブロック内クロックネットの構造を意識しながら第２種論理セル２２を配置することができる。従って、仮想配線長の最小化や配線混雑度の低減化等を評価しながら配置の最適化を行なうことが可能となる。ただし、このステップのみでは配置が良くない場合もあり得る。その場合には、さらに、上記ステップＳＴ２ａやステップＳＴ２ｂに戻って、第２種論理セル２２を配置した状態で、フリップフロップ２０又はクロックバッファ２１の配置改善を行ない、その後、再度ステップＳＴ２ｃで第２種論理セル２２の再配置を行なうことができる。その際、配置状態が最適化されるまで、例えば仮想配線長が最小なるまでや配線混雑度が最小になるまで行なうことにより、従来クロックネットとその他のネットの配線の絡み合いが低減され、結果的に混雑（密集）の少ない配線パターンの生成ができる。
【００７２】
次に、ステップＳＴ３では、全ネットの概略配線経路を決定するが、すでにクロック木構造が決まっているので、設定したクロックスキューやクロック木の遅延を保持しながら、クロックネット以外のネットとの間の配線経路を決定することができる。
【００７３】
以上の各ステップによって、全ネットの概略配線経路まで定まったので、ステップＳＴ４では、所望のクロックスキュー値を正確に実現するために、クロックバッファ２１のトランジスタサイズ変更、配線幅の変更及びタッピングポイント２３の変更を行なう。配線における遅延時間は配線がもつ容量と抵抗から求められるので、クロックスキューの大きさは、配線幅によって調整でき、配線幅の変更もクロックスキュ値ーを調整するための一手段として用いることができる。例えば図１２ａは、タッピングポイント２３がバランスし、かつ同一の幅を有する配線を用いた場合の配線状態を示す。この場合、明らかにクロックスキュー値は「０」である。それに対し、図１２ｂは、タッピングポイント２３はバランスしているものの、２種類の相異なる幅を有する配線を用いた場合の配線状態を示す。この場合、配線幅が大きい程抵抗値が下がるので、太い配線を用いた経路における遅延時間は小さくなる。なお、太い配線において、容量は逆に増えることになるがその割合は抵抗値より低い。従って、図１２ｂに示す配線状態では、クロックスキュー値は「０」ではない。
【００７４】
なお、このステップＳＴ４は、ステップＳＴ１２による遅延時間の計算と連係しながら実行する。
【００７５】
ここで、ステップＳＴ４のサブステップＳＴ４ａでクロックバッファ２１のトランジスタサイズの変更を行い、サブステップＳＴ４ｂで配線幅の変更を行い、サブステップＳＴ４ｃでタッピングポイント２３の位置の変更を行なう。タッピングポイント２３の位置は、各セルの配置が既に完了しているので、大幅に変更することは困難である。従って、遅延時間を大幅に調整する場合は、クロックバッファ２１のトランジスタサイズの変更による。そして、遅延時間の微調整は、配線幅の変更とタッピング位置の変更とによる。これらのステップＳＴ４ａ−４ｃを用いることによって、正確なクロックスキュー値の調整が可能となる。図７ｂにおいて、経路３０は最小線幅で、経路３１はそれより少し太く、さらに経路３２は経路３１より太い配線幅にしたことを表している。
【００７６】
次に、ステップＳＴ５で全ネットの配線を行うが、上述のように、ステップＳＴ５を実行する具体的な方法として上記方式（１）と方式（２）とがある。
【００７７】
方式（１）では、ステップＳＴ１０ａで、クロックネットを主に一層で配線し、ステップＳＴ１０ｂで、クロックネット以外のネットをステップＳＴ１０ａで主に使われなかった層を用いて配線をする。このようにステップＳＴ１０ａでクロックネットのみを主に一層で配線する理由は、以下の通りである。すなわち、ステップＳＴ４で、クロックスキュー値を正確に計算してタッピングポイント２３や経路３０，３１，３２の配線幅を変更してクロックネットを構成したが、クロックネットをクロックネット以外のネットと同様に扱うと、上述の設定通りに実際の配線を行うことが困難となる虞れがあるからである。
【００７８】
また、方式（２）では、ステップＳＴ１１ａで、いったん全ネットを配線した後、ステップＳＴ１１ｂで、クロックネットのみに対し、ステップＳＴ８ａで求めたクロックスキュー値に合わせて再度配線幅を変更する。
【００７９】
図８に示すように、本実施形態では、ステップＳＴ４で決定した各クロックネットの構造に合わせて配線幅を決定している。例えば、図７ｂに示す経路３０，３１，３２は、それぞれ図８に示す配線３３，３４，３５にそれぞれ対応している。
【００８０】
以上でレイアウトが完了する。
【００８１】
本実施形態によれば、クロック木構造決定にテンプレートを用いているので、フリップフロップやクロックバッファの最適配置の決定とクロックスキューやクロック木に配置される各第１種論理セルにおける遅延時間の調整とを柔軟かつ容易に行うことができ、クロック周波数の高い半導体ＬＳＩチップのレイアウト設計が容易となる。また、クロック木構造が予めわかっているので、他の論理セルの配置位置最適化やクロックネットと一般信号ネットの間の配線混雑度の低減を容易化することができる。
【００８２】
なお、第２実施形態において、ブロック外クロックネットをクロック木を用いて設計してもよいし、各論理セルを機能ブロックに分割することなく、半導体集積回路内に配置してもよい。
【００８３】
（第３の実施形態）
次に、第３の実施形態について、図１３−図１５を参照しながら説明する。図１３は、第３の実施形態に係る半導体集積回路１のレイアウトを示す図である。図１３に示すように、半導体集積回路１内には、４つの機能ブロックＢＬ１−ＢＬ４が配置されており、各機能ブロックＢＬ１−ＢＬ４が配置されている領域以外の領域はトランジスタを敷き詰めたゲートアレイ領域４０となっている。また、クロック信号を生成するために、パッド上の一部にクロック発生源２が設けられている。クロック信号は、ブロック外クロック配線４１を通り、各クロック端子４３を介して各機能ブロックＢＬ１−ＢＬ４に供給される。ブロック外クロック配線４１と各機能ブロックＢＬ１−ＢＬ４との間にはクロックバッファ４４が配置されている。このバッファ４４はブロック外クロック配線４１を構成するためのクロック木を構成したときに現れるものか、或は、機能ブロックＢＬ１−ＢＬ４内のクロック木ＣＴ１−ＣＴ４の根になるものかいずれかである。ブロック外クロック配線４１を生成する場合、通常各機能ブロックＢＬ１−ＢＬ４に供給されるクロック信号の同期をとるために、可能な限りクロック発生源２から各クロックバッファ４４までが等長となるように配線が行なわれる。
【００８４】
ここで、本実施形態では、クロックバッファ４４は機能ブロックＢＬ１−ＢＬ４の外側に配置されているので、各機能ブロックＢＬ１−ＢＬ４とは独立して、クロックバッファ４４のトランジスタサイズの変更（リサイジング）が可能となる。機能ブロックＢＬ１−ＢＬ４内に根元となるクロックバッファを配置した場合、何らかの問題から機能ブロックＢＬ１−ＢＬ４のレイアウトを終了したのちにクロックバッファのバッファサイズ、即ちトランジスタサイズの変更があったとき、遅延時間を所望の値の制御するためには、再度機能ブロックＢＬ１−ＢＬ４をレイアウトする必要が生じ、レイアウトのための工数が増大する。それに対し、このように機能ブロックＢＬ１−ＢＬ４の外部にクロックバッファ４４を配置することで、機能ブロックの再レイアウトを実行することなしにチップ全体のクロック木の遅延時間やクロックスキューの調整を詳細に行なうことができ、よって、レイアウト工数の増大を有効に防止することができる。
【００８５】
なお、図１３のクロックバッファ４４の部分を拡大した図に示すように、本実施形態では、標準サイズの３倍のトランジスタサイズをもったクロックバッファ４４を用いている。
【００８６】
なお、本実施形態では、ゲートアレイ領域４０内に敷き詰められたトランジスタを利用してクロックバッファ４４を形成しているが、機能ブロックＢＬ１−ＢＬ４の近傍の配線領域の一部に設けたトランジスタを利用してゲート領域を形成した場合でもよい。
【００８７】
次に、本実施形態におけるレイアウト設計方法について、図１４及び図１５を参照しながら説明する。図１４は、図１３に示す半導体集積回路１におけるクロック配線を形成する手順を示すフローチャートである。図１５は、図１４に示すフローに沿った半導体集積回路の設計状態の変化を示す分解図である。
【００８８】
本実施形態では、図１５ａに示すように、パッド上の一部にクロック発生源２を配置し、半導体集積回路１内に、未だレイアウトを実行していない機能ブロックＢＬ１−ＢＬ４と、機能ブロック外の配線領域であるゲートアレイ領域４０とを有するチップ（この例の場合、エンベデッド・セル・アレイ方式ＬＳＩ）を例にとって説明する。
【００８９】
まず、ステップＳＴ２１で、図１５ｂに示すように、未だレイアウトの終了していない４つの機能ブロックＢＬ１−ＢＬ４において、クロックネットを形成するためのクロック木ＣＴ１−ＣＴ４をそれぞれ生成させ、クロックネット以外のネットと共にレイアウトを完成させる。その際、クロック木ＣＴ１−ＣＴ４を生成させるとき、そのクロック木の根にあたるクロックバッファを機能ブロックＢＬ１−ＢＬ４内に配置することなく、ゲートアレイ領域４０に配置する。
【００９０】
次に、ステップＳＴ２２で、図１５ｃに示すように、各機能ブロックＢＬ１−ＢＬ４を半導体集積回路１内に配置する。
【００９１】
ここで、上記ステップＳＴ２２を先に行った後に、ステップＳＴ２１を行ってもよい。但し、その場合は、ステップＳＴ２２では、未レイアウトの機能ブロックＢＬ１−ＢＬ４を配置することになるので、これらの概略の位置を決定したに過ぎない。
【００９２】
次に、ステップＳＴ２３で、図１５ｄに示すように、機能ブロックＢＬ１−ＢＬ４の近傍にクロックバッファ４４を配置する。このクロックバッファ４４は、ステップＳＴ２２で生成された各機能ブロックＢＬ１−ＢＬ４内のクロック木ＣＴ１−ＣＴ４の根に相当する部位に配置されている。各クロックバッファ４４のトランジスタサイズは、各クロック木ＣＴ１−ＣＴ４を生成するときに見積もった必要なドライブ能力に応じたサイズである。この例では、機能ブロック外の領域をゲートアレイ領域４０で構成しているので、任意の位置にクロックバッファ４４を配置することができる。
【００９３】
最後に、ステップＳＴ２４で、機能ブロック外のクロック木を生成し、ブロック外クロック配線４１を形成する。この例のブロック外クロック配線４１は、テーパーリング（段階的に、配線幅を変化させる）が行われた結果の状態を示している。テーパーリングは、エレクトロ・マイグレーションやクロック遅延時間値の最適化を行なう際に有効な手段である。また、ブロック外クロック配線４１はクロック発生源２から各クロックバッファ４４までのクロックスキューを最小化するように形成する。この時、チップ全体におけるクロックスキューを微調整するために、クロックバッファ４４を構成するトランジスタのリサイジングを行なうこともある。その場合、上述したように、機能ブロックＢＬ１−ＢＬ４の外側にクロックバッファ４４を配置したので、クロックバッファ４４を構成するトランジスタのリサイジングだけで、チップ全体のクロックスキューの微調整を実現できることは明白である。
【００９４】
【発明の効果】
本発明によれば、トップダウン的な設計により遅延時間の増大を回避しながら、各機能ブロック間における各セルの動作の同期の確保と、クロックネットの形成の容易化と、各配線間の干渉の回避の容易化とを図り、かつ工数の大幅な低減を図ることができる。
【図面の簡単な説明】
【図１】第１の実施形態に係る仮クロック設計の手順を説明する図である。
【図２】第１の実施形態に係るクロック設計の手順を説明する図である。
【図３】第２の実施形態に係るレイアウト設計手順を示すフロー図である。
【図４】第２の実施形態に係る半導体集積回路の構成を概略的に示すブロック図である。
【図５】第２の実施形態に係るレイアウト設計手順のうちクロック木の構造の決定とタッピングポイントの位置の決定とを終了した状態を示すブロック図である。
【図６】第２の実施形態に係るレイアウト設計手順のうちフリップフロップの配置と、その後のクロックバッファの配置とを終了した状態を示すブロック図である。
【図７】第２の実施形態に係るレイアウト設計手順のうち第２種論理セルの配置と、配線幅の変更とを終了した状態を示すブロック図である。
【図８】第２の実施形態に係るレイアウト設計を終了した状態を示すブロック図である。
【図９】第２の実施形態に係るレイアウト設計手順のうちクロック木の構造が２分木の場合と３分木の場合とのセル数の相違を説明するブロック図である。
【図１０】第２の実施形態に係るレイアウト設計手順のうち機能ブロックとクロック木の大きさとの関係及びクロック木の大小の相違を説明するブロック図である。
【図１１】第２の実施形態に係るレイアウト設計手順のうちクロックスキューを「０」又は正の値にするためのタッピングポイントの位置を説明するブロック図である。
【図１２】第２の実施形態に係るレイアウト設計手順のうちクロックスキューを「０」又は正の値にするための配線幅の設定を説明するブロック図である。
【図１３】第３の実施形態に係る半導体集積回路の全体構成を概略的に示すブロック図である。
【図１４】第３の実施形態に係るレイアウト設計手順を示すフロー図である。
【図１５】第３の実施形態に係るレイアウト設計手順中における半導体集積回路の仮想的構造の変化を示すブロック図である。
【図１６】従来の半導体集積回路の概略的な構造とクロック木の生成方法とを説明するためのブロック図である。
【符号の説明】
１　　半導体集積回路
２　　クロック発生源
３　　第１クロック入力部
４　　第２クロック入力部
５　　最終分岐点
１１　パッド
２０　フリップフロップ（第１種セル）
２１　クロックバッファ（第１種セル）
２２　第２種セル
２３　タッピングポイント
４０　ゲートアレイ領域
４４　クロックバッファ（ブロック外遅延時間調整用セル）
ＢＬ　機能ブロック
ＣＴ　クロック木
ＣＮ　クロックネット
【図１】
2004005591.tif 000003
【図２】
2004005591.tif 000004
【図３】
2004005591.tif 000005
【図４】
2004005591.tif 000006
【図５】
2004005591.tif 000007
【図６】
2004005591.tif 000008
【図７】
2004005591.tif 000009
【図８】
2004005591.tif 000010
【図９】
2004005591.tif 000011
【図１０】
2004005591.tif 000012
【図１１】
2004005591.tif 000013
【図１２】
2004005591.tif 000014
【図１３】
2004005591.tif 000015
【図１４】
2004005591.tif 000016
【図１５】
2004005591.tif 000017
【図１６】
2004005591.tif 000018