(57)【特許請求の範囲】
【請求項１】
階層レイアウトによってＬＳＩを設計する際の、配線データの生成を行う配線データ生成方法であって、
ブロックレベル格子配線を生成するステップと、
ブロック内のレイアウトを実行するステップと、
ＬＳＩの、前記ブロックの領域以外においてＬＳＩレベルの格子配線を生成するステップとを含み、
前記ブロックレベル格子配線を生成する前記ステップは、ブロック内部の格子配線を当該ブロックに対して適切な間隔で生成するステップを含み、
前記ＬＳＩレベルの格子配線を生成する前記ステップは、前記ブロックレベルの格子配線の各々を、前記ブロックレベルの格子配線にそれぞれ最も近い前記ＬＳＩレベルの格子配線に接続する接続配線を生成するステップを含む、配線データ生成方法。
【請求項２】
階層レイアウトによってＬＳＩを設計する際の、配線データの生成を行う配線データ生成方法であって、
ＬＳＩレベルの格子配線を仮生成するステップと、
仮生成された前記ＬＳＩレベルの格子配線の各々について、配置されるブロックの領域内の部分との境界を規定するステップと、
前記境界の各々に、前記格子配線と交差する方向のタップ線を生成するステップと、
各前記ブロック内の格子配線が前記対応するタップ線と接続可能な範囲で各ブロックの移動を許容してブロックレイアウトを行うステップと、
ＬＳＩレベルの格子配線を生成するステップとを含む、配線データ生成方法。
【請求項３】
階層レイアウトによってＬＳＩを設計する際の、配線データの生成を行う配線データ生成方法であって、
ＬＳＩレベルの格子配線を仮生成するステップと、
仮生成された前記ＬＳＩレベルの格子配線の各々について、配置されるブロックの領域内の部分との境界を規定するステップと、
各ブロックの移動を許容して、各前記境界で前記格子配線を切断してブロックレイアウトを行うステップと、
前記ブロックレイアウトを行うステップによって移動したブロック内の格子配線と、ブロック外の格子配線とを接続する配線を生成するステップと、
ＬＳＩレベルの格子配線を生成するステップとを含む、配線データ生成方法。
【請求項４】
請求項１〜請求項３の配線データ生成方法のうちいずれか２つ以上を用いて配置したブロックと、ＬＳＩレベルでの格子配線とを含む、大規模集積回路装置。
【請求項５】
前記格子配線はクロックラインを含む、請求項４に記載の大規模集積回路装置。
【請求項６】
前記格子配線は電源ラインを含む、請求項４に記載の大規模集積回路装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、階層レイアウトに対応したクロックライン構成などの配線データ生成方法に関し、特に、設計要求に応じて、ＬＳＩ（大規模集積回路）レベルでの柔軟なブロックの配置調整が可能な配線データ生成方法およびそうした方法により設計された大規模集積回路装置に関する。
【０００２】
【従来の技術】
ＬＳＩ内に存在するすべての順序素子にクロックを正確に同時に供給することは困難であり、各部に供給されるクロックには時間差が生じる。この時間差をクロックスキューと呼ぶ。特にＬＳＩが高密度化し回路が大規模化するにつれて、ＬＳＩ各部に与えられるクロックのスキューは極めて小さい値である必要があり、クロックスキューをどのようにして小さくするかが問題となっている。こうしたクロックスキューは主として設計段階で生ずるため、クロックを構成する際に高い精度のスキュー管理が要求される。
【０００３】
図１７を参照して、従来のスキュー管理手法では、ＬＳＩ２２１の入力ＣＬＫからＬＳＩ２２１に供給されるクロック信号は、ＬＳＩ２２１に設けられたクロックバッファ１０２を通ってプリバッファ１０３に供給される。プリバッファ１０３はこのクロック信号をＬＳＩ２２１の全体に格子状に張り巡らされたクロックライン２２４に分配する。クロックライン２２４のたとえば格子点上などにクロックドライバ２２７などが多数準備されており、それらの出力同士は短絡されている。つまり、図１７に示すように、ドライバの入力ライン２２５の格子と出力ライン２２６の格子とが存在する。順序素子２２８には、出力ライン２２６からクロックが供給される。
【０００４】
実際のＬＳＩでは、格子状のクロックライン２２４を準備した後に順序素子２２８を配置、配線する。しかし、順序素子２２８がＬＳＩ２２１内に均一に分布することは極めて稀で、特定の格子内に遍在することが多い。この結果スキューが増大する。
【０００５】
したがってＬＳＩ２２１の全体での順序素子の配置結果から、クロックドライバ２２７の駆動の能力などを調節して、スキューの低減を図る。このためクロックドライバ２２７はクロックライン２２４内にその領域を確保しておかれるのが通常である。こうすることにより、他の配置配線結果を修正することなくクロックドライバ２２７の駆動能力調整が行える。
【０００６】
この手法では、クロックドライバ２２７の出力が短絡されている。そのため仮に遅延の遅いドライバと速いドライバとが存在した場合、速いドライバが遅いドライバの出力にも信号供給をするというフィードバック系が存在する。また、最終のＬＳＩ自体の順序素子の配置からドライバの最適化を行ってスキュー調整が行われる。したがってこの手法では高いスキュー精度が得られる。
【０００７】
一方、ＬＳＩが大規模化するといわゆる階層レイアウトが必要となってくる。階層レイアウトとは、ＬＳＩレイアウトを効率的に行うように導入された手法である。階層レイアウト手法では、ＬＳＩをいくつかのブロックに分けて、ブロック単位で最初にレイアウトを行い、そのレイアウトの完了したブロックを再度、最適に配置配線してＬＳＩ全体のレイアウト行う。また、他のＬＳＩで既にレイアウト済みの階層を再利用する場合もある。この場合も階層レイアウトが必要となる。
【０００８】
図１８を参照して、従来の階層レイアウト時のクロック構成手法は以下のとおりである。最初に、階層２４９ａ〜２４９ｄのレイアウトから行われる。したがって、クロックもまずクロック２５０ａ〜２５０ｄを構成する。ここで、各階層２４９ａ〜２４９ｄ内のクロックは、図１７に示したような手法であらかじめ構成してもよいし、図１８の階層２４９ａに示されるようにツリー構造のドライバを用いてもよい。
【０００９】
各階層のレイアウトが全て完成したら、ＬＳＩ２４１全体のレイアウトをブロックレイアウトを使用して行う。クロック構成では、クロックバッファ１０２を経由した信号に各ブロックのクロック入力を接続する。クロック入力の接続では、クロック２５０ａ〜２５０ｄの遅延を補償して、クロック信号ＣＬＫで駆動されるすべての順序素子に低スキューでクロックを供給するために、クロックを分配するドライバ２５１ａ以外に、最も遅いクロックドライバに遅延をあわせる様にたとえば遅延素子を挿入する。図１８に示す例では、最も遅いクロックドライバとしてクロックドライバ２５１ｂを想定して、遅延素子２５２ａ〜２５２ｃを挿入している。
【００１０】
【発明が解決しようとする課題】
このように階層レイアウトを行なった場合、スキューには以下の３種類がある。
【００１１】
（１）各ブロック内で構成されたクロックのスキュー
（２）クロックＣＬＫから各ブロックへのクロック分配によるスキュー
（３）クロック遅延の補償のための遅延素子に基づくスキュー
このようにスキューには３種類の発生原因があるため、スキューを低減することは本質的に非常に難しい。
【００１２】
一方、ＬＳＩ全体でクロックを構成する方法では、スキューの発生原因が、構成されたクロックのスキューのみとなり低スキューとなる。この手法を用いて階層レイアウトを行おうとすれば、あらかじめＬＳＩ全体に張られた格子状のクロック配線があるため、ブロックを配置する際に、ブロック内のクロック配線とＬＳＩのクロック配線とが重なる位置にしかブロックを配置できないという制約が生じる。そのためこの手法でのレイアウトは困難である。
【００１３】
たとえば、あるブロックが先にレイアウトを完了した後、次にレイアウトを完了した隣のブロックが、予定されていた大きさよりも大きくなってしまった場合、この大きくなってしまったブロックの配置位置を確保するために、先にレイアウトを完了したブロックを当初予定されていた配置位置から移動させなければならない場合がある。このような場合、ＬＳＩの全体に張られた格子状のクロック配線が移動できないため、ブロックは格子の目単位での移動しかできないことになる。その結果ＬＳＩレベルでの各ブロックの最適な配置調整が不可能となり、階層レイアウトの長所が失われてしまうという問題がある。
【００１４】
それゆえにこの発明の目的は、階層レイアウトに対応した、低スキュークロックを構成する方法を提供することである。
【００１５】
この発明の他の目的は、階層レイアウトに対応して、各ブロックをより柔軟に配置調整できる低スキュークロックを構成する方法を提供することである。
【００１６】
この発明のさらに他の目的は、過去の資産を十分にいかしながら設計要求に怖じた配置配線を実現できる大規模集積回路装置を提供することである。
【００１７】
【課題を解決するための手段】
請求項１に記載の発明にかかる配線データ生成方法は、階層レイアウトによってＬＳＩを設計する際の、配線データの生成を行う配線データ生成方法であって、ブロックレベル格子配線を生成するステップと、ブロック内のレイアウトを実行するステップと、ＬＳＩの、ブロックの領域以外においてＬＳＩレベルの格子配線を生成するステップとを含み、ブロックレベル格子配線を生成するステップは、ブロック内部の格子配線を当該ブロックに対して適切な間隔で生成するステップを含み、ＬＳＩレベルの格子配線を生成するステップは、ブロックレベルの格子配線の各々を、ブロックレベルの格子配線にそれぞれ最も近いＬＳＩレベルの格子配線に接続する接続配線を生成するステップを含む。
【００１８】
ＬＳＩレベルの格子配線がブロック内の格子配線とは別に生成されるので、ブロックを単位とした階層レイアウトを用いてＬＳＩの配線データの生成を行うことができる。
【００２２】
また、ブロック内の格子配線の各々を、ＬＳＩレベルの格子配線と接続することができる。ＬＳＩレベルの格子配線がブロック内のレイアウトに影響を与えることがない。
【００２３】
請求項２に記載の発明にかかる配線データ生成方法は、階層レイアウトによってＬＳＩを設計する際の、配線データの生成を行う配線データ生成方法であって、ＬＳＩレベルの格子配線を仮生成するステップと、仮生成されたＬＳＩレベルの格子配線の各々について、配置されるブロックの領域内の部分との境界を規定するステップと、境界の各々に、格子配線と交差する方向のタップ線を生成するステップと、各ブロック内の格子配線が対応するタップ線と接続可能な範囲で各ブロックの移動を許容してブロックレイアウトを行うステップと、ＬＳＩレベルの格子配線を生成するステップとを含む。
【００２４】
ブロックの境界部分においてＬＳＩレベルの格子配線にタップ線を設けることにより、ブロックを移動させても、それがタップ線の長さの範囲内である限りブロック内の格子配線とＬＳＩレベルの格子配線との接続を保つことができる。したがってブロックのレイアウトが柔軟に行える。
【００２５】
請求項３に記載の発明にかかる配線データ生成方法は、階層レイアウトによってＬＳＩを設計する際の、配線データの生成を行う配線データ生成方法であって、ＬＳＩレベルの格子配線を仮生成するステップと、仮生成されたＬＳＩレベルの格子配線の各々について、配置されるブロックの領域内の部分との境界を規定するステップと、各ブロックの移動を許容して、各境界で格子配線を切断してブロックレイアウトを行うステップと、ブロックレイアウトを行うステップによって移動したブロック内の格子配線と、ブロック外の格子配線とを接続する配線を生成するステップと、ＬＳＩレベルの格子配線を生成するステップとを含む。
【００２６】
ブロックの境界部分においてＬＳＩレベルの格子配線を切断することにより、ブロックを移動させることができる。移動後、ブロック内の格子配線と、ＬＳＩレベルの格子配線とを接続すれば、各ブロック内に必要な信号を供給できる。ブロックの移動量が大きくなっても格子配線同士の接続は容易であるため階層レイアウトが柔軟に行える。
【００２７】
請求項４に記載の発明にかかる大規模集積回路装置は、請求項１〜請求項３の配線データ生成方法のうちいずれか２つ以上を用いて配置したブロックと、ＬＳＩレベルでの格子配線とを含む。
【００２８】
請求項１〜請求項３に記載の配線データ生成方法のいずれかを自由に選択することができる。そのため、既にある他の大規模集積回路の設計においてどの手法が用いられていたかに関係なく、容易にそうした設計データを階層レイアウトに流用することができる。
【００２９】
請求項５に記載の発明にかかる大規模集積回路装置は、請求項４に記載の発明の構成に加えて、格子配線はクロックラインを含む。
【００３０】
請求項１〜請求項３に記載の配線データ生成方法のいずれかを自由に選択することができる。そのため、既にある他の大規模集積回路の設計においてどの手法が用いられていたかに関係なく、容易にクロックラインに関する設計データを階層レイアウトに流用することができる。
【００３１】
請求項６に記載の発明にかかる大規模集積回路装置は、請求項４に記載の発明の構成に加えて、格子配線は電源ラインを含む。
【００３２】
請求項１〜請求項３に記載の配線データ生成方法のいずれかを自由に選択することができる。そのため、既にある他の大規模集積回路の設計においてどの手法が用いられていたかに関係なく、容易に電源ラインに関する設計データを階層レイアウトに流用することができる。
【００３３】
【発明の実施の形態】
［実施形態１］
図１を参照して、本発明の実施形態１にかかる配線データ生成装置は、コンピュータ本体１、グラフィックディスプレイ装置２、磁気テープ４が装着される磁気テープ装置３、キーボード５、マウス６、ＣＤ−ＲＯＭ（Compact Disc-Read Only Memory ）８が装着されるＣＤ−ＲＯＭ装置７、および通信モデム９を含む。以下に述べる手法を実現するための配線データ生成プログラムは、磁気テープ４またはＣＤ―ＲＯＭ８等の記憶媒体によって供給される。この配線データ生成プログラムはコンピュータ本体１によって実行され、操作者はグラフィックディスプレイ装置２を見ながらキーボード５またはマウス６を操作することによって配線データの生成を行う。また、配線データ生成プログラムおよび他のデータは他のコンピュータより通信回線を経由し、通信モデム９を介してコンピュータ本体１に供給されてもよい。
【００３４】
図２は、本発明の配線データ生成装置の構成例を示すブロック図である。図１に示すコンピュータ本体１は、ＣＰＵ（Central Processing Unit ）１０、ＲＯＭ(Read Only Memory)１１、ＲＡＭ（Random Access Memory）１２およびハードディスク１３を含む。ＣＰＵ１０は、グラフィックディスプレイ装置２、磁気テープ装置３、キーボード５、マウス６、ＣＤ−ＲＯＭ装置７、通信モデム９、ＲＯＭ１１、ＲＡＭ１２またはハードディスク１３との間でデータを入出力しながら処理を行う。磁気テープ４またはＣＤ−ＲＯＭ８に記録された配線データ生成プログラムおよび他のデータは、ＣＰＵ１０により磁気テープ装置３またはＣＤ−ＲＯＭ装置７を介して一旦ハードディスク１３に格納される。ＣＰＵ１０は、ハードディスク１３から適宜以下に説明するような構成を有する配線データ生成プログラムをＲＡＭ１２にロードして実行することによって、クロックスキューの低減されたクロックスキューの構成方法を用いてＬＳＩ配線データの生成を行う。
【００３５】
なお、以下に述べるほかの実施形態２〜実施形態６においても、装置の外観およびブロック構成は実施形態１の場合と同様である。したがって、実施形態２〜実施形態６ではハードウェア構成についての詳細な説明は繰返さない。
【００３６】
図３を参照して、実施形態１にかかるクロック構成方法は、ブロック単位で格子状のクロックラインを準備するステップ（Ｓ２０）と、階層レイアウト（ブロックレイアウト）を行うステップ（Ｓ２２）と、ＬＳＩレベルのレイアウトをしＬＳＩレベルプリドライバを生成するステップ（Ｓ２４）と、ＬＳＩレベルでのクロックラインを生成するステップ（Ｓ２６）と、格子点ドライバの最適化を行うステップ（Ｓ２８）とを含む。各ステップでの処理の内容について以下に説明する。
【００３７】
まずＳ２０では、たとえば従来のものと同様の手法によってブロック単位の格子状のクロックラインを準備する。この格子の目の大きさは任意でよい。ただし、実施形態１の装置ではこのとき、必ずブロックの最外周を取り囲むクロックラインを準備する。図４に、このステップで準備された各ブロック３９ａ〜３９ｄを示す。各ブロック３９ａ〜３９ｄはそれぞれ、クロックライン３４ａ〜３４ｄを含む。これら各クロックライン３４ａ〜３４ｄが、各ブロックの最外周を囲むクロックラインを含んでいることに注意されたい。
【００３８】
次にＳ２２で階層レイアウトを行う。クロックラインに直接関係するのはフリップフロップ（ＦＦ）であるので、クロックラインに対して具体的にはＦＦの配置と配線とを行い、ＦＦのクロック入力端子をクロックライン３４ａ〜クロックライン３４ｄに接続する。またこのときすべてのブロックでのすべての配置配線はそれぞれのブロックの最外周のクロックラインに囲まれた範囲内で行う。
【００３９】
すべての階層レイアウトが完成すれば、Ｓ２４でＬＳＩレベルでのレイアウトが行われる。ここでは、階層単位でレイアウト配置した後、従来と同様の手法でクロック入力からクロックバッファおよびプリドライバを構成する。
【００４０】
最後に、Ｓ２６でＬＳＩレベルで格子配線が行われる。ここでの配線手法がこの実施形態１での特色部分である。ここでは、こうして生成するクロックラインが、あらかじめ配置された各階層の最外周のクロックラインに対してその階層の外側から交差する時、その交点でクロックラインの生成を停止する。そして、該当する階層の対辺側の同じ位置からクロックラインの生成を再開する。こうして、階層内にはＬＳＩレベルのクロックラインを生成しないようにする。またＬＳＩレベルのクロックラインと各階層内の最外周のクロックラインの交点においては、それぞれ対応する信号を短絡する。このようにしてＬＳＩレベルのクロックを構成すると、図５に示す構成が得られる。
【００４１】
こうして構成されたクロック回路に対して、ＬＳＩレベルまたは各階層内に存在する格子点ドライバの駆動能力を最適化する（Ｓ２８）が、このときの手法は従来と同様でよい。
【００４２】
この方法によれば、ＬＳＩレベルのクロックライン３４と各階層のクロックライン３４ａ〜３４ｄとでＬＳＩ全体のクロックラインが構成されている。クロック構成の観点から見れば、これは従来のようにＬＳＩレベルで一括して配置配線を行う場合と同様のクロック構成である。一方、この方法では従来の手法では困難であった階層レイアウトをも可能としている。すなわち、この方法によれば、従来のようにＬＳＩレベルで一括して配置配線を行う場合と同様の優れたスキュー管理を、階層レイアウトで実現できる。
【００４３】
クロックライン３４ａ〜３４ｄを階層単位で構成しているので、階層レイアウトが可能となる。さらにまたＬＳＩレベルでのクロックライン３４は、各階層のブロックの最外周で終端される。その結果、ＬＳＩレベルでのクロックラインが階層レイアウトに影響を与えることもない。
【００４４】
階層単位で配置のシフトが発生した場合でも、ＬＳＩレベルでのクロックライン３４は各階層のクロックライン３４ａ〜３４ｄの最外周までしかのびておらず、階層内のレイアウトとは無縁であるため、階層単位での配置に制約が課されることがなく、再度適切な位置に各ブロックの配置配線を行うことができる。
【００４５】
以上のようにこの実施形態１によれば、階層レイアウトを行いながら、一括レイアウトと同様のスキュー管理を行うことができるという効果がある。
【００４６】
なお、Ｓ２４で生成されるＬＳＩプリドライバとしてはたとえば、図６に示すようなツリー状のプリドライバを用いることもできるし、図７に示すように等長配線５４〜５８によってツリー状のプリドライバ６０〜６４をクロックバッファ５２と接続したプリドライバ５０を用いてもよい。各ツリー状のプリドライバ６０〜６４は、たとえば各ブロック内の格子状のクロックライン６６〜７０に接続される。
［実施形態２］
図８を参照して、この発明の実施形態２にかかるクロック構成方法は、ＬＳＩレベル格子配線の仮生成を行うステップＳ８０と、ブロックレベルの格子配線の切出し（詳細は後述）を行うステップＳ８２と、後述するようにＬＳＩレベルのクロックラインと各ブロックのクロックラインとの境界部分にタップ配線（詳細は後述）を付加するステップＳ８４と、ブロックレイアウトを行うステップＳ８６と、ＬＳＩレベルのプリドライバを生成するステップＳ８８と、ＬＳＩレベルの格子配線を生成するステップＳ９０と、最終的に格子点ドライバを最適化するステップＳ９２とを含む。
【００４７】
階層レイアウトでは、あらかじめＬＳＩレベルでの各階層の大きさおよび配置位置などを考慮してからレイアウト作業を開始するのが通常である。この段階でまずＳ８０の処理を行う。
【００４８】
Ｓ８０では、階層レイアウトを開始する前の段階での各階層の配置情報をもとにＬＳＩレベルでの仮のクロックライン１０４を生成する。このＬＳＩレベルでの仮のクロックライン１０４は従来と同様の手法で生成することができる。
【００４９】
次にＳ８２において、こうして構成されたＬＳＩレベルでの仮のクロックライン１０４のうち、各階層内を通過する部分を切出し削除する。さらに、Ｓ８４において、ＬＳＩレベルでの仮のクロックライン１０４の残った部分と各ブロック内部との間の境界に、ＬＳＩレベルでの仮のクロックライン１０４と交差する（実施形態２では直交する）方向にタップ配線１１３ａ〜１１３ｄを設ける。そしてブロック内のクロックライン１０４ａが各タップ配線１１３ａ〜１１３ｄと接続される。図９では左上のブロック１０９ａのみの例を示すが、他のブロック１０９ｂ〜１０９ｄも同様である。
【００５０】
以下は実施形態１の場合と同様である。次に、Ｓ８６でブロックレイアウトが行われる。この処理では、各ブロック内で切出されたクロックラインをもとにブロック内のレイアウトを行う。次にＬＳＩレベルでの各ブロックの最終の配置を行う。すなわち、ＬＳＩレベルプリドライバの生成が行われる（Ｓ８８）。このときの各ブロックの配置は、必ずしも当初想定された配置と完全に一致する必要はない。タップ配線１１３ａ等が存在しているために、この範囲で各ブロックを左右上下に移動してもＬＳＩレベルでの仮のクロックライン１０４と各ブロック内のクロックラインとの接続を確保することができる。
【００５１】
さらに最終的なＳＬＩレベル格子配線の生成が行われて（Ｓ９０）、最後に全体的なクロックラインの配置配線に基づいて格子点ドライバの最適化が行われる（Ｓ９２）。
【００５２】
図１０に、最終的に得られたＬＳＩレイアウトを示す。この図１０では、ブロック１０９ａは当初の位置と同じ位置に、ブロック１０９ｂは左に、ブロック１０９ｃは下に、ブロック１０９ｄは右と左下に、それぞれシフトしている。
【００５３】
以上のようにこの実施形態２によれば、階層レイアウト前にあらかじめ想定された各階層の大きさや配置位置を考慮して構成したＬＳＩレベルのクロックラインを切出して使用する。そのため実施形態１で必要であったような、最外周のクロックラインなどを設ける必要はない。そのためクロックラインの総配線長を削減し消費電力を削減できるという効果がある。
【００５４】
また、切出したクロックラインの境界にタップ配線を設けた。そのため、タップ配線長内で各ブロック配置の移動が可能となる。もちろん任意の位置にブロックを配置することはできないが、ブロックの位置をＬＳＩレベルでの仮のクロックライン１０４の格子の目よりも小さな範囲で移動させることが可能となる。実際には、各階層の大きさや配置位置が階層レイアウトの前後で極端に変わることは少ないので、適切なタップ配線長を設定することで、実用的な範囲でのブロックの再配置が可能となる。なおタップ配線長をどのように定めるかは各ＬＳＩの設計要求によって異なるが、主として経験的に定められる。
［実施形態３］
実施形態２では、あらかじめタップ配線１１３ａなどを設けておく。しかし、このようにタップ配線を用いなくとも階層レイアウトを可能とする方法がある。以下、そうした実施形態３について説明する。
【００５５】
図１１を参照して、実施形態３では、あらかじめ階層の境界において仮生成されていたＬＳＩレベルでのクロックライン１３４をブロックの境界で切出して階層のレイアウトを行う。
【００５６】
実施形態３のクロックラインの構成方法は、図８と比較して、Ｓ８４が省略されていることと、Ｓ９０とＳ９２との間にブロック／ＬＳＩ格子の接続配線を生成するステップＳ１２０を新たに含む点で異なる。以下では、実施形態２と異なる点のみ説明する。
【００５７】
Ｓ８０においては、あらかじめＬＳＩレベルでのクロックライン１３４を生成する際に、階層の境界においてＬＳＩレベルでのクロックライン１３４の生成を停止する。
【００５８】
ステップＳ１２０では、図１２を参照して、あらかじめ切出した階層部分のクロックライン１３４ａ〜１３４ｄと、ＬＳＩレベルでのクロックライン１３４とを接続する。このときに階層の境界上で最短距離にあるもの同士を接続するクロックライン接続配線１４４ａ〜１４４ｄを生成する。このようにして、各階層に対してクロックラインを構成していく。
【００５９】
実施形態３によれば、たとえば仮生成の際に配置された階層の位置と、実際のＬＳＩレベルでのレイアウトとで階層の配置位置が変わらない階層（図１２のブロック１３９ａ）では、実施形態２においては必ず生成されていたタップ配線のような不要な配線が生成されない。他のブロックでも、生成されるクロックライン接続配線の配線長を最小に抑えることができる。そのため消費電力の点でより有利である。またこの実施形態３では、ブロックの配置位置が当初の想定位置よりも極端に移動してしまった場合でも対応することができる。
［実施形態４］
実施形態３では、仮配線されたＬＳＩレベルでのクロックライン１３４から切出したクロックラインを階層のクロックラインとして使用した。しかし、実施形態１で示したように、各階層毎にあらかじめクロックライン３４ａ〜３４ｄを準備してもよい。実施形態４はそうした手法を用いる。
【００６０】
図１３を参照して、この実施形態４のクロック構成手法は、図３に示される手法と比較して、図３のＳ２８に替えて、ブロック／ＬＳＩ格子の接続配線生成処理のステップＳ１５０と、格子点ドライバの最適化処理のステップＳ９２とを含む点が異なる。以下では実施形態１と異なる点についてのみ説明する。
【００６１】
図１４にこの実施形態４によって構成されたＬＳＩ１６１を示す。このＬＳＩ１６１では、ＬＳＩレベルでのクロックライン１６４の、各ブロック１６９ａ〜１６９ｄの領域以外の部分と、各ブロック１６９ａ〜１６９ｄ内のクロックライン１６４ａ〜１６４ｄ（横方向）、１８１ｂ、１８１ｃ（縦方向）とが、クロックライン接続配線１７４ａ〜クロックライン接続配線１７４ｄによって接続される。
【００６２】
この実施形態４では、ＬＳＩレベルでのクロックライン１６４と各階層のブロック１６９ａ〜１６９ｄの縦横のクロックライン数は必ずしも一致する必要はない。例えばこれらを接続する際に、クロックラインの数の多い方を始点として、他方の最短のクロックラインへ接続するようにクロックラインの接続配線を生成することで、未接続のクロックラインがないようにする。
【００６３】
図１４に示されるブロック１６９ａでは、縦方向のクロックラインに関して、ＬＳＩレベルではクロックライン１８１ａの１本のみであるのに対して、ブロック内ではクロックライン１８１ｂ、１８１ｃの２本である。そこで、階層側を始点としてクロックライン接続配線クロックライン接続配線１７４ａ〜１７４ｄを生成する。すなわち、クロックライン１８１ｂとクロックライン１８１ａとがクロックライン接続配線１７４ａにより接続され、クロックライン１８１ｃとクロックライン１８１ａとがクロックライン接続配線１７４ｃによりが接続される。
【００６４】
この実施形態４の方法によれば、ＬＳＩレベルと階層レベルでのクロック配線間隔が異なるものであっても扱える。そのため各階層ごとに最適なクロックライン幅を選択することができる。また同一の手法で他のＬＳＩでレイアウト済みの階層を流用する場合、クロックライン間隔を合わせるために再度配置配線を行う必要がない。そのため実施形態４の方法によればレイアウトごと他のＬＳＩ設計を流用することが容易であるという長所がある。
［実施形態５］
以上の実施形態１から実施形態４の説明では、１つのＬＳＩに１つの手法のみを用いる方法について説明した。しかし、互いに異なる手法を組み合わせることもできる。たとえば、上記した実施形態１から実施形態４の手法を全て組合わせてクロック構成した例を図１５に示す。図１５では、実施形態１〜実施形態４と同じ部品には同じ参照符号を付し、それらについての詳細な説明は繰返さない。
【００６５】
図１５では、実施形態１の手法をブロック３９ａに、実施形態２の手法をブロック１０９ｂに、実施形態３の手法をブロック１３９ｃに、実施形態４の手法をブロック１６９ｄに、それぞれ適用している。
【００６６】
このように各方法を混在して使用することで、各階層毎に最適なクロックライン構成の方法を採用することができる。その結果、ＬＳＩ全体として最も効率的なクロックライン構成を行うことができる。また、他のＬＳＩの階層レイアウトを流用する場合でも、手法が特定のものと一致している必要ないので、レイアウトの再利用範囲を広げることができる。
［実施形態６］
上記した実施形態１〜実施形態５はいずれもクロックラインの構成方法に関していた。しかし、本願発明の配線生成方法はクロックラインのみに適用可能なわけではなく、階層レイアウトにおいてＬＳＩレベルと各階層間を接続しながら回路全体にほぼ均等に配線を巡らす必要がある場合には同様に適用できる。
【００６７】
その一例は、ＬＳＩレベルで性能管理を要求される配線として知られている電源／グランド配線がある。グランドラインも、一定の電位を回路に与えるという意味では電源ラインと同様であると考えられる。したがって電源ラインといえばグランドラインをも含むと考えてよい。電源／グランド配線は、ＬＳＩレベルで外部からの電源／グランドの供給箇所を複数個持ち、ＬＳＩ内の全トランジスタに対して動作を保証できるだけの供給能力を持つ必要がある。このため、クロックと同様にＬＳＩレベルでの均一な供給能力が要求される。
【００６８】
上記した方法はいずれも、そのまま電源／グランド配線に適用することができる。図１６に、実施形態１〜実施形態４に記載した方法を全て適用して電源／グランド配線を行ったＬＳＩ２０１を示す。この例でも、実施形態５と同様、実施形態１〜実施形態４と同じ部品には同じ参照符号を付した。このようにして電源／グランド配線を構成することで、階層レイアウトを行いつつ安定した供給能力を実現することができる。
【００６９】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【００７０】
【発明の効果】
以上のように請求項１に記載の発明によれば、ＬＳＩレベルの格子配線を、ブロックを単位とした階層レイアウトを用いて、ブロック内の配線と別に行うことができる。そのため、階層レイアウトを用いながら、クロックスキューを低減させたり電源を安定に供給したりするための配線を行うことが可能となる。
また、ブロック内の格子配線の各々を、ＬＳＩレベルの格子配線と接続することができる。ＬＳＩレベルの格子配線がブロック内のレイアウトに影響を与えることがない。そのため階層レイアウトを十分に利用することができる。
【００７３】
請求項２に記載の発明によれば、ブロックの境界部分においてＬＳＩレベルの格子配線にタップ線を設けることにより、ブロックを移動させても、それがタップ線の長さの範囲内である限りブロック内の格子配線とＬＳＩレベルの格子配線との接続を保つことができる。したがってブロックのレイアウトが柔軟に行え、階層レイアウトを十分に利用することができる。
【００７４】
請求項３に記載の発明によれば、ブロックの移動量が大きくなっても格子配線同士の接続は容易であるため階層レイアウトが柔軟に行える。そのため、階層レイアウトの利点を十分に活用することができる。
【００７５】
請求項４に記載の発明によれば、既にある他の大規模集積回路の設計においてどの手法が用いられていたかに関係なく、容易にそうした設計データを階層レイアウトに流用することができる。その結果、過去の資産を生かしながら、階層レイアウトを用いて設計要求に応じた配置配線を行うことができる。
【００７６】
請求項５に記載の発明によれば、既にある他の大規模集積回路の設計においてどの手法が用いられていたかに関係なく、容易にクロックラインに関する設計データを階層レイアウトに流用することができる。その結果、過去の資産を生かしながら、階層レイアウトを用いてクロックスキューに関する設計要求に応じた配置配線を行うことができる。
【００７７】
請求項６に記載の発明によれば、既にある他の大規模集積回路の設計においてどの手法が用いられていたかに関係なく、容易に電源ラインに関する設計データを階層レイアウトに流用することができる。その結果、過去の資産を生かしながら、階層レイアウトを用いて電源ラインに関する設計要求に応じた配置配線を行うことができる。
【図面の簡単な説明】
【図１】  本願発明の実施の形態の装置の外観図である。
【図２】  本願発明の実施の形態の装置のハードウェアブロック図である。
【図３】  本願発明の実施形態１の装置の処理の流れを示すフローチャートである。
【図４】  実施形態１の処理対象となるブロックの例を示す平面図である。
【図５】  実施形態１の装置によるＬＳＩレイアウト例を示す平面図である。
【図６】  ツリープリドライバの例を示す模式図である。
【図７】  等長配線によるプリドライバの配置を示す模式図である。
【図８】  実施形態２の装置の処理の流れを示すフローチャートである。
【図９】  実施形態２の装置によるＬＳＩレイアウトの例を示す平面図である。
【図１０】  実施形態２の装置によるＬＳＩの最終レイアウトの例を示す平面図である。
【図１１】  実施形態３の装置の処理の流れを示すフローチャートである。
【図１２】  実施形態３の装置によるＬＳＩレイアウトの例を示す平面図である。
【図１３】  実施形態４の装置の処理の流れを示すフローチャートである。
【図１４】  実施形態４の装置によるＬＳＩレイアウトの例を示す平面図である。
【図１５】  実施形態５の装置によるＬＳＩレイアウトの例を示す平面図である。
【図１６】  実施形態６の装置によるＬＳＩレイアウトの例を示す平面図である。
【図１７】  従来の技術におけるクロック構成手法を示す、ＬＳＩの平面図である。
【図１８】  従来の技術におけるクロックスキューの低減の一手法を示す、ＬＳＩの平面図である。
【符号の説明】
３１，１０１，１３１，１６１，１８１，２０１，２２１  ＬＳＩ、３２  クロックバッファ、３３ａ，ｂ  プリバッファ、３４ａ〜ｄ，１０４ａ〜ｄ，１３４ａ〜ｄ，１７４ａ〜ｄ  クロックライン、３９ａ〜ｄ，１０９ａ〜ｄ，１３９ａ〜ｄ，１６９ａ〜ｄ  ブロック。
【図１】
0004315532.tif 000002
【図２】
0004315532.tif 000003
【図３】
0004315532.tif 000004
【図４】
0004315532.tif 000005
【図５】
0004315532.tif 000006
【図６】
0004315532.tif 000007
【図７】
0004315532.tif 000008
【図８】
0004315532.tif 000009
【図９】
0004315532.tif 000010
【図１０】
0004315532.tif 000011
【図１１】
0004315532.tif 000012
【図１２】
0004315532.tif 000013
【図１３】
0004315532.tif 000014
【図１４】
0004315532.tif 000015
【図１５】
0004315532.tif 000016
【図１６】
0004315532.tif 000017
【図１７】
0004315532.tif 000018
【図１８】
0004315532.tif 000019