JP3251686B2 - 集積回路の自動配線方法 - Google Patents

集積回路の自動配線方法

Info

Publication number
JP3251686B2
JP3251686B2 JP00893293A JP893293A JP3251686B2 JP 3251686 B2 JP3251686 B2 JP 3251686B2 JP 00893293 A JP00893293 A JP 00893293A JP 893293 A JP893293 A JP 893293A JP 3251686 B2 JP3251686 B2 JP 3251686B2
Authority
JP
Japan
Prior art keywords
wiring
path
delay
wiring width
width
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP00893293A
Other languages
English (en)
Other versions
JPH06223134A (ja
Inventor
文裕 南
直仁 小島
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Original Assignee
Toshiba Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toshiba Corp filed Critical Toshiba Corp
Priority to JP00893293A priority Critical patent/JP3251686B2/ja
Publication of JPH06223134A publication Critical patent/JPH06223134A/ja
Application granted granted Critical
Publication of JP3251686B2 publication Critical patent/JP3251686B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Design And Manufacture Of Integrated Circuits (AREA)

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】この発明は、半導体集積回路のレ
イアウトにおいて、コンピュータを用いた処理による自
動配線方法に関する。
【0002】
【従来の技術】デジタル論理集積回路においては、フリ
ップフロップに代表される順序回路が必ずと言っていい
ほど使用されており、位相・周期の異なる複数のクロッ
ク信号と同期をとりながら回路全体が動作するようにな
っている。クロック信号は、チップ内部で作られたり外
部から供給されたりするが、通常幾段かのバッファセル
を介して回路ブロックに供給され、バッファセル間およ
びバッファセルとフリップフロップ間は、一般的にCA
D技術によって自動的に結線される。
【0003】フリップフロップに供給されるクロック信
号の伝搬遅延時間(以下、ディレイという)は、各フリ
ップフロップ毎で異なるのがふつうであり、その位相差
のことをクロックスキュー(以下、スキューと略す)と
呼ぶが、このスキューが大きすぎると、所望のクロック
周波数で回路の同期動作をとることができなくなる。従
って、チップ上のすべてのフリップフロップに対してな
るべく同じタイミングでクロック信号が到着するよう
に、バッファセルの位置や配線径路を決めることが大切
である。
【0004】フリップフロップまでのディレイとして
は、中継するバッファセルの内部ディレイ、バッファセ
ルが結線用配線の配線容量・配線抵抗および被駆動セル
の入力端子容量を充放電するためにかかるディレイ、が
含まれる。このうち、配線抵抗に関しては、近年の半導
体微細加工技術の進歩によるトランジスタサイズ・配線
断面積の減少のため、無視できなくなってきた。これに
より、ディレイの予測精度上、回路を分布定数回路とし
て扱うことが必要となっている。
【0005】例えば、図18(a)のような回路は、
(b)のような分布定数回路としてディレイを予測しな
ければならない。
【0006】さて、このスキューを減少させる主な方法
としては、メッシュ方式とツリー方式が挙げられる。メ
ッシュ方式は、チップを格子状に巡る配線径路を布設
し、その格子径路のそばにバッファセルを接続し、さら
にバッファセルを介してフリップフロップに接続するも
ので、特開昭63−107316がその例である。
【0007】この方式の長所は、構成が簡単なこと、配
線径路がリング状のため配線の等価抵抗が下がりディレ
イを小さくできること、レイアウト処理前にディレイの
予測が可能なこと、などである。
【0008】しかし、回路が超大規模になると、ルート
ドライバーに近いフリップフロップと遠いものとのスキ
ューが無視できなくなること、格子の切り方を細かくし
なければならないので配線長が増加すること、が問題と
なる。
【0009】一方、ツリー方式は、各段毎にバッファを
並列接続したものを多段構成にし、各バッファ毎にはツ
リー状の配線径路をとるものである。バッファの挿入に
関する従来例としては、特開昭61−82455、特開
平1−157115などがあり、ツリー状の配線径路の
典型例としては、文献「H.B.Bakoglu,et al:A symmetri
c clock-distribution tree and optimized high-speed
interconnections for reduced clock skew in ulsi a
nd wsi circuits.,IEEE Int.Conf.on Computer Design,
1986」 のHツリーが知られている。
【0010】この方式の長所は、スキューを小さくでき
ること、メガセル混載チップにも対応が容易なことであ
る。反面、バッファ段数が深すぎるとスキューは小さく
できてもディレイが大きくなってしまうこと、レイアウ
ト処理が詳細化しないとディレイ予測が難しいこと、が
短所として挙げられる。
【0011】どちらの方法も長所と短所はあるが、回路
の大規模化に対応するにはツリー方式のほうが望ましい
といえる。以下、ツリー方式による従来技術について説
明する。
【0012】ツリー方式の典型的な配線形状であるHツ
リーは、Hの形の配線径路を再帰的に比例縮小しながら
繰り返すもので、その対称性ゆえに等配線長・等ディレ
イを保つことができる。しかし、供給される素子・素子
群が2のべき乗個で、かつ素子配置が対称形で素子容量
も等しくないと、この等ディレイは達成できず、実際の
回路では適用がむずかしい。
【0013】これを改善したものとしては、文献「Mich
ael A.B.Jackson,et al:Clock Routing for High-Perfo
mance ICs.,27th ACM/IEEE Design Automation Conf.,1
990」のMMMアルゴリズムがある。
【0014】この方法はフリップフロップ(バッファセ
ルでもよい)をトップダウンに等個数分割していきなが
ら、同時に分割した領域にあるフリップフロップの重心
位置に配線径路の分岐点を設定していくもので、単純な
処理にもかかわらず比較的スキューを小さくできる特徴
を持つ。しかし、トップダウンな処理なので、ディレイ
の見積もり精度によっては満足のいくスキュー値が得ら
れないという欠点もある。
【0015】また、バッファセルの最適挿入方法に関し
ては、文献「S.Boon,et al:High performance clock di
stribution for cmos asic’s.,IEEE Custom Integrate
dCircuit Conf.,1989」の方法があるが、配線方法自体
は一般信号用に使用するアルゴリズムと同じなので、配
線する領域が広い場合、信号パスごとの配線抵抗の違い
によるスキューが問題となる。
【0016】一方、スキューが大きくなりすぎて所望の
クロック周波数で回路の同期動作をとることができなく
なる問題を解決するため、最近、チップ内クロックスキ
ュー低減手法が提案されている。特開平3-137851がその
例である。
【0017】この方法は、2分木型の配線構造において
各径路分岐点の位置をそれより下流側のディレイが釣り
合うように決定している点が特徴であり、また、チップ
内ディレイを最小化するようにバッファセルの最適位置
を決定している。チップ内のディレイを最小化すること
により、複数のチップが散在するボード上に生じるクロ
ックスキューをも低減している。
【0018】しかし、配線の最小線幅がどんどん狭まっ
ていく最近の傾向にあっては、配線抵抗の増大に伴うデ
ィレイ増加が大きく、バッファセルの最適位置設定だけ
では不十分になりつつある。
【0019】配線抵抗が大きいことによるディレイ増加
を解決する方法としては、特開平2-194545、特開昭63-5
1656、が提案されている。前者は、配線幅を通常線幅の
2倍以上にする方法であるが、定量的に最適線幅を決定
していないという問題がある。また、後者は、一筆書き
状の配線径路について、配線抵抗と配線負荷容量を考慮
してディレイ最小となる配線幅を決定しているが、分岐
のある径路については適用できないという問題がある。
【0020】ところで、集積回路の配線においては、信
号の伝搬遅延を小さくするため、信号の送端から受端へ
向かって配線幅を小さくする考え方が提案されており、
このような配線をテーパ配線と呼ぶ。
【0021】従来より提案されている、集積回路の自動
配線手法としては、迷路法や、線分展開法などがある。
迷路法に関する参考文献としては、T.Ohtsuki, Ed., La
youtDesign and Verification. Amsterdam : North Hol
land, 1986.が、線分展開法に関する論文としては、小
島、山田、佐藤、大附著「線分展開法の2層配線への拡
張とその評価」情報処理学会設計自動化研究会 研究報
告、vol.91、No.58-3、pp 1-8(1991年)がある。しか
し、これら従来配線手法におけるテーパ配線の有効な実
現手法は現在まで発表されていなかった。
【0022】テーパ配線を実現する手法としては、配線
中の最大幅をもって径路探索を行い、径路発見後に必要
に応じて配線幅を小さくしていくことが考えられる。こ
の手法は単純ではあるが、幅の小さな隙間を見付けるこ
とができないため、幅の小さい配線部分を有効に活かす
ことができないことがあり、また場合によっては径路を
発見できないことがある。
【0023】さらに、径路を発見した場合でも、配線領
域を無駄に使ってしまい、後の配線がしにくくなること
がある。
【0024】
【発明が解決しようとする課題】このように、従来のツ
リー方式による自動配線方法では、スキューを小さくす
る目的は同じでも、バッファセルの挿入と配線径路の決
定とを別々に取り扱っており、また配線径路については
詳細なディレイ見積もりに基づいて決定するのではない
ため、きめ細かなスキューバランスをとることはできな
かった。
【0025】また、従来の自動配線方法では、分岐のあ
る一般的なクロック配線径路に対して、ディレイを最小
化するような最適配線幅を決定する方法が確立されてい
なかった。
【0026】さらに、従来の自動配線方法では、テーパ
配線を行う際に、幅の小さい配線部分を有効に活かした
径路を発見できなかったり、配線領域を無駄に使用して
しまうという問題があった。
【0027】この発明は、そのような事情を鑑みてなさ
れたものであり、第1の発明の目的とするところは、バ
ッファセル挿入処理と配線径路決定処理とを協調させな
がら、より正確なディレイ見積もりに基づいて配線径路
の分岐点を決定していくことで、フリップフロップ等の
素子位置が均一・不均一にかかわらず、スキューを飛躍
的に低減できる集積回路の自動配線方法を提供すること
にある。
【0028】また、第2の発明の目的とするところは、
分岐のある一般的なクロック配線径路においても、ディ
レイを最小化する最適配線幅を決定することができる集
積回路の自動配線方法を提供することにある。
【0029】さらに、第3の発明の目的とするところ
は、テーパ配線の際に、径路探索の過程で、必要な配線
幅を随時計算することにより配線領域を無駄にせず、し
かも高速なテーパ配線処理を実現可能な集積回路の自動
配線方法を提供することにある。
【0030】
【課題を解決するための手段】上記目的を達成するた
め、第1の発明は、半導体基板上に置かれたルートドラ
イバーセルから中継用バッファセルを経由して複数個の
末端セルにクロック信号を供給する際に、当該末端セル
を少なくとも1個以上含むクラスタを生成し前記末端セ
ルを複数のグループに分け、前記ルートドライバーセル
をルートノードとし前記クラスタをリーフノードとする
バイナリツリー状の配線径路を生成し、中継用バッファ
セルが駆動するサブツリーの深さにおいて、ある深さ以
上になると後段に別の中継用バッファセルを挿入した場
合の方が、当該サブツリー深さより下流側のあらゆる地
点での遅延時間を小さくできる前記サブツリーの深さを
求め、当該サブツリーの深さを上限として前記バイナリ
ツリー上のクロック信号伝搬遅延時間が最小化される部
位に当該中継用バッファセルを挿入したのち、バイナリ
ツリーの下位分岐ノードから順に、当該分岐ノードより
前記リーフノードにいたる径路のRC遅延量を計算して
その差が最小となるように当該分岐ノードの物理的位置
を設定し、前記中継用バッファセルの挿入に伴う回路接
続情報の更新およびこのバッファセル近傍のセル配置情
報を修正してセル同士の重なりを除去し、確定した配置
情報にもとづいて各クラスタ内の詳細な配線径路を決定
し、決定された配線径路から求まるクラスタ内の正確な
遅延量にもとづいて各分岐ノードの位置を決定し、その
分岐ノード間の詳細な配線径路を決定することを特徴と
している。
【0031】また、第2の発明は、2分木型の配線径路
構造において、隣接する分岐点間の径路の配線幅をパラ
メータとする配線ディレイ関数を求め、さらに各配線幅
パラメータに対する当該ディレイの偏導関数をそれぞれ
求め、各配線幅パラメータが標準配線幅以上という制約
範囲において、前記偏導関数の絶対値がそれぞれ最小と
なるように各配線幅を決定することを特徴としている。
【0032】あるいは、第2の発明は、クロック信号の
2分木型配線径路のトポロジー構造が予め決定されてい
るとき、隣接する分岐点間の径路の各配線幅を固定して
各分岐点から下流側のディレイが釣り合うように分岐点
を決定する処理をツリーの下位部から上位に向かって再
帰的に繰り返すことでスキューを最小化する第1の処理
と、各径路分岐点の位置を固定して前述した方法により
各配線幅を決定してディレイを最小化する第2の処理
と、これら第1及び第2の処理を交互に繰り返した後の
ディレイ変化量が許容値以内に到達したかどうかを判定
する第3の処理とからなり、ディレイ変化量が許容値以
内に到達した状態の径路をクロック配線径路とすること
を特徴としている。
【0033】さらに、第2の発明は、2分木型配線径路
構造において隣接する分岐点間の径路の平均配線幅が、
2分木型配線径路構造上で当該径路よりひとつ上位階層
側の径路の平均配線幅の0.4倍の数値と一般信号用の
標準配線幅とを比べたときの大きい方の数値以下となる
ように配線幅を決定することを特徴としている。
【0034】さらに、第3の発明は、信号の送端から受
端へ向かって配線幅が小さくなる配線の径路探索を、配
線領域の逐次探索によって行う集積回路の自動配線方法
であって、配線幅の小さい端から大きい端へ向かって配
線領域を探索し、新たな配線領域を探索する度にその配
線領域において理想的な配線幅を求めながら探索を進め
ることを特徴としている。
【0035】また、第3の発明は、前記新たな配線領域
において理想的な配線幅を、前記配線幅の小さい端から
この新たな配線領域までの、既に得られている正確な配
線径路長と、この新たな配線領域から前記配線幅の大き
い端までの、水平径路及び垂直径路のみを用いた最短径
路長とを基に求めることを特徴としている。
【0036】
【作用】第1の発明は、クロック信号を受け取るフリッ
プフロップ等の末端セルに対して、近接するもの同士を
複数個まとめてクラスタとし、クラスタ内は一般信号用
の配線径路決定アルゴリズムにより配線する。ルートド
ライバーセルからクラスタまではバイナリツリー(2分
木)状となるように配線径路を布設する。
【0037】このとき、各クラスタの大きさは、クラス
タ内の配線抵抗による遅延時間があまり大きくならない
よう上限をもたせ、加えてクラスタ内の負荷容量は均一
となるようにクラスタリングをする。
【0038】また、クラスタの入口部位、およびバイナ
リツリーのディレイが最小化できるような部位に、中継
用のバッファセルを複数個自動挿入し、ルートドライバ
ーまたは中継用バッファセルを起点とするサブツリーの
多段階層構造を形成する。
【0039】各サブツリー内における分岐ノードの位置
すなわち配線径路上の分岐点は、2つの子ノード以降の
RCディレイを計算してその差が最小となるような位置
に設定し、この処理をボトムアップに繰り返すことでサ
ブツリーの配線形状を決定する。
【0040】さらに、階層サブツリーの配線形状をボト
ムアップに形成する過程において、同一階層のサブツリ
ー以降のディレイが均一となるように、バッファセルの
位置を微調整する。
【0041】また、第2の発明は、2分木型の配線ツリ
ー構造において、隣接する分岐点間の径路上の配線幅を
一定とし、またツリー上の同一深さにある枝径路の配線
幅は同一の線幅を持つとしたとき、各配線幅をパラメー
タとして配線ディレイをElmoreの式で表現する。
【0042】次に、当該ディレイの各配線幅パラメータ
に対する偏微分関数を求め、各配線幅パラメータが標準
配線幅以上という制約範囲において、前記偏微分関数の
絶対値がそれぞれ最小となるよう各配線幅を決定するこ
とにより、ディレイを最小化する。
【0043】また、配線幅を固定してスキュー最小とな
る径路分岐点を決定する処理と、径路分岐点を固定して
ディレイ最小となる配線幅を決定する処理とを、交互に
繰り返し、ディレイが収束したときの径路をクロック配
線径路の最終解とすることにより、複雑な問題を簡単化
しながら実用的な時間内でスキューとディレイの最小化
が実現できる。
【0044】さらに、第3の発明は、テーパ配線の際
に、配線幅の小さい端から大きい端へ向かって径路探索
を行い、新たな配線領域を探索する度にその領域におい
て理想的な配線幅を、マンハッタン距離(水平径路及び
垂直径路のみを用いた最短径路長)を用いて計算しなが
ら探索を進めることにより、設計規則を犯さずに配線幅
を考慮した径路を得ることができる。これにより、配線
領域を一度探索するのみで、配線領域を有効に活かした
テーパ配線を効率的に実現可能である。
【0045】
【実施例】
第1の発明 第1実施例 図1は、第1の発明の第1実施例による自動配線処理手
順を示すフローチャートである。第1の発明の自動配線
処理は、スペックデータの入力(ステップ1)、ツリー
分岐点の仮決定(ステップ2からステップ5)、エンジ
ニアリングチェンジ(ステップ6,7)、実配線径路の
決定(ステップ8からステップ11)の4つに大きく分
けられる。
【0046】なお、当処理は、セルの配置位置が決定し
た後で、かつ一般信号の配線径路を決定する前に行われ
るものとする。以下、図1に従って第1の発明の配線処
理を説明する。
【0047】まず、ステップ1において、スペックデー
タの入力を行う。このスペックデータとは、ルートドラ
イバーに入力されるクロック信号名、バッファセルの挿
入段数、使用バッファセルの種類、ディレイとスキュー
の目標値のことを指す。
【0048】次のステップ2では、指定されたクロック
信号毎に、駆動されるフリップフロップ等のセル(以
下、末端セル)のクラスタ化を行う。
【0049】クラスタ生成にあたっては、末端セルの存
在する領域を格子状に分割し、その格子内に配置されて
いる末端セル同士を同一クラスタに所属するように初期
設定し、次いで、クラスタ内の予想配線長から算出する
配線容量と末端セルの入力負荷容量との容量和が均一と
なるように、隣接クラスタ間で所属している末端セルの
移動交換を行う。
【0050】格子の大きさは、クラスタ内の負荷容量
が、駆動するバッファセルの駆動能力の範囲内にあり、
かつ配線抵抗によるディレイ効果があまり大きくない範
囲内であることを基準に設定する。
【0051】ステップ3では、クラスタをリーフノード
とした親子関係だけが示された全体バイナリツリーの形
成を行う。すなわち、ツリーの各ノード毎にリーフノー
ドを2分割する処理を、ルートノード(ルートドライバ
ーセル)からはじめてその子ノードに対して再帰的に繰
り返す。
【0052】2分割の際には、それぞれのリーフノード
個数の差が高々1個以内となるようにし、最終的に各リ
ーフノードにおけるルートノードからの深さ(階層)の
差が1レベル以内となるようにする。なお、バイナリツ
リーの階層は、許容されるディレイに応じて予め決定さ
れている。
【0053】ステップ4では、ステップ3で決定したツ
リーにおいて、ルートノードとリーフノードを除く各ノ
ードの物理的な位置を仮決定する。このノードの位置
は、配線径路を決定する際の分岐点となるものであり、
分岐先以降のディレイ差を最小化するような位置に設定
する。
【0054】なお、この時点では、リーフノードの位置
はクラスタの中心にあると仮定する。加えて、ステップ
4では、入力されたスペックデータに基づき、中継用バ
ッファセルを仮決定されたツリーノードの物理的な位置
に挿入する。その際、バッファセルの挿入段ごとに、全
体ツリー上の深さ・セル種類を同一にする。
【0055】次のステップ5の判定処理では、ステップ
2からステップ4までの処理をしていないクロック信号
が残っているかを調べ、残っていればステップ2からス
テップ4までの処理を繰り返し、残っていなければ、ス
テップ6へ進む。
【0056】ステップ6では、バッファセルの挿入によ
って変化した回路接続情報を更新する。すなわち、新規
ネットとその接続端子の追加、旧クロックネットの接続
端子の接続ネット変更をする。
【0057】ステップ7では、挿入されたバッファセル
の近傍にこのセルと重なるパターンがあれば、それを除
去するように近傍セルの位置修正を行う。このように、
バッファセルの位置を、ステップ4で決定した挿入すべ
き分岐点の位置になるべく近くなるように、詳細な配置
位置を決定する。
【0058】ステップ8では、クラスタ内の実配線径路
を、なるべく配線長が短くなるように一般信号用の配線
経路決定アルゴリズムで決定する。
【0059】ステップ9では、ツリーの分岐点の位置の
修正を行う。これは、クラスタ内の配線容量が確定した
ことを受けて、正確なディレイバランスをとるように分
岐点の位置修正をするものである。位置決定は、ステッ
プ4に準じて行う。
【0060】ステップ10では、ツリーのノード間の実
配線径路を決定する。基本的には、ツリー上の親子関係
にあるノード同士を最短径路で結ぶ。また、ここで使用
する配線層は、ディレイ最小化の観点から抵抗や容量の
小さいクロック専用層を使うのが望ましい。
【0061】ステップ11の判定処理では、実配線径路
の求まっていないクロック信号があるかどうかを調べ、
あった場合はステップ8からステップ10までの処理を
繰り返し、なかった場合は全処理を終了する。
【0062】続いて、上記ステップ4の詳細について、
図2に従って説明する。
【0063】まず、ステップ12では、挿入するバッフ
ァセルの種類と挿入レベルを挿入段毎に設定する。バッ
ファセルの種類は、スペックデータに指定してあるもの
を使用可能範囲とし、挿入レベルは、当該バッファセル
が駆動するサブツリーの深さが、ある深さ以上になると
後段に別の中継用バッファセルを挿入した場合の方が、
当該サブツリー深さより下流側のあらゆる地点でのクロ
ック信号伝搬遅延時間を小さくできるサブツリーまでの
深さを上限とする。また、同一レベルには同一種類のバ
ッファセルが挿入される。
【0064】ステップ13では、ステップ12で設定し
た条件で、全体ツリーに対してバッファセルを挿入し、
階層的ツリーをつくる。
【0065】ステップ14では、分岐点の位置の決定お
よび分岐点からリーフノードまでのディレイ計算を行
う。
【0066】分岐点は、2個の子ノード毎に、それより
下位レベルにある配線の配線抵抗によるディレイと後段
バッファセル以降のディレイとの和を求め、その差を当
該分岐点から子ノードまでの配線抵抗によるディレイの
差によって相殺するように決定する。この詳細は後で述
べるが、このような分岐点の決定を全体ツリーのリーフ
ノードからルートノードに向かってボトムアップに行
う。
【0067】ステップ15の判定処理では、現時点のル
ートノードからリーフノードまでのディレイ・スキュー
がスペックを満足しているかどうか、あるいはその数値
が最小かどうかということを調べ、既計算のなかで最良
の結果であれば、ステップ16に進み、そうでなければ
ステップ17へ進む。
【0068】ステップ16では、現時点のツリー構造と
ディレイ値が最良データであるとしてこのデータを保存
する。もし、既に保存されているデータがあったとき
は、古いデータを削除し、新しいデータに置き換える。
【0069】ステップ17の判定処理では、まだ試行し
ていないバッファセルの種類・挿入レベルの組み合わせ
があるかどうかを調べ、あればステップ18に進み、な
ければ、ステップ12からステップ18までの一連の処
理を終了する。
【0070】ステップ18では、現時点のツリーデータ
構造上で挿入されているバッファセルのデータを削減
し、未挿入の状態を復元する。その後、異なる種類のバ
ッファセルや挿入レベルを設定するため、ステップ12
に戻る。
【0071】以下に、ステップ12で行う、サブツリー
深さの上限値を設定するためのディレイ見積り方法、上
限値の設定方法について説明する。
【0072】まず、サブツリー深さの上限値を求めるた
めのディレイ見積りについて述べる。
【0073】ディレイは配線形状によって変化するが、
ここでは平均的なディレイ値を求めるためにH字型の径
路が再帰的に繰り返される完全対称径路を仮定し、バッ
ファセルまたはルートドライバーセルの配置位置をH字
部分の中心と仮定する。このとき、バッファセルまたは
ルートドライバーセルが直接駆動するサブツリーでのデ
ィレイtn は、
【数1】 k =4Ck+1 +3cD・21-k /2 で計算できる。
【0074】ここに、 I:バッファセルまたはルートドライバーセルの内部デ
ィレイ R0 :バッファセルまたはルートドライバーセルのオン
抵抗 r:単位長さあたりの配線抵抗値 c:単位長さあたりの配線負荷容量値 D:サブツリー領域の一辺の長さ n:サブツリーの深さ(H字径路の繰り返し回数) Ck :部分ツリーの負荷容量を表わし、k段目のH字径
路よりも下流側のもの W1 ,W2 :時間重み定数 とし、配線抵抗と配線負荷容量はXY両方向で同一(平
均値)と近似し、サブツリー領域は正方形と仮定した。
【0075】Ck の漸化式より Ck +3cD21-k /2 =4{Ck+1 +3cD・21-(k+1) /2} =4n+1-k (Cn+1 +3cD・2-n/2) ここで、リーフノードの負荷容量Cn+1 をCg とおく
と、 Ck =(Cg +3cD・2-n/2)・4n+1-k −3cD・2-k となる。
【0076】このCk を数1に代入すると、ディレイt
n は、
【数2】 となる。
【0077】さらに W2 =W1 /2 ,1−8-n=1
,1−4-n=1 という近似をすると、 tn =I+W1 ( R0 +3rD/14) (3cD・2n /2+Cg ・4n ) −3W1 ( R0 +rD/3) cD/2 が得られる。
【0078】次に、この式を用いて、バッファセル挿入
の有無によるディレイの差を導く。今、注目バッファセ
ル(ルートドライバーセル)の駆動しているサブツリー
の深さをn1 、その後段にあるバッファセルの駆動して
いるサブツリーの深さをn2とおくと、後段のバッファ
セルがないときとのディレイ差Δtは、 Δt=(1) n1+n2 −((1) n1(2) n2) =2n21 {((1) 0 +3rD/14)・3cD2n1
2−((2) 0 +3rD2-n1 /14)・3cD2-n1
2} +4n2・W1 {((1) 0 +3rD/14)・Cg ・4n1
−((2) 0 +3rD2-n1 /14) Cg } −W1 ((1) 0 +3rD/14)・(3cD2n1/2+
Cg 4n1) −(2) I+W1 (2) 0 +rD2-n1 /3)・3rD2
-n1 /2 >W1 (1) 0 +3rD/14)・(3cD・2n1/2
+3Cg 4n1) −W1 (2) 0 +3rD/28)・(3cD/2+4C
g )−(2) I となる。ここに変数の左肩にあるかっこつき添字は、バ
ッファセル段を表す。
【0079】さて、上の不等式の右辺をf(n1) とおく
と、 f(n1* −1)≦0≦f(n1* ) を満たす解n1* は、注目バッファセルの駆動するサブツ
リー深さの上限となる。なぜなら、n1≧n1* のときは、 Δt>f(n1)≧f(n1* )≧0 すなわち後段バッファセルを挿入した方がn2によらず常
にディレイを小さくできるからである。
【0080】このように、バッファセルの駆動力,内部
ディレイ,サブツリー領域の大きさが与えられれば、駆
動するサブツリー深さの上限値n1* が求められる。
【0081】このような処理を、ステップ12におい
て、バッファセル挿入段ごとのバッファセル種類、挿入
レベルの組に対して前記のサブツリー深さの上限値以内
かどうか調べ、その範囲内にある組み合わせだけを選択
すればよい。こうすることで、不要な組み合わせに対す
る配線径路決定処理を省くことができ、処理時間を節約
することができる。
【0082】次に、図3に示すような、上記ステップ1
4における分岐点位置決定方法の詳細について、位置を
決定する際の前提となるディレイ計算モデルの説明の
後、まずひとつのサブツリー内での分岐点位置決定方法
を説明し、最後に全体ツリーに対する処理方法を説明す
る。
【0083】(1) ディレイ計算モデル ここでは、ひとつのサブツリーでの計算、すなわちルー
トドライバーセル(バッファセル)の入力端子から次段
バッファセルの入力端子までの間のディレイを対象とし
て説明する。
【0084】説明の都合上、サブツリー上の最初の分岐
点をノード番号1とし、kが偶数の時はノード番号k/
2の分岐点に対する2つの子ノード番号をkとk+1と
し、kが奇数の時はノード番号k/2の分岐点に対する
2つの子ノード番号をkとk−1にするようにノード番
号付けがされているものとする(図4参照)。
【0085】また、ルートドライバーセルの入力端と出
力端が、それぞれ−1、0、というノード番号であると
拡張設定しておく。
【0086】このときのノード番号0からノード番号e
のリーフノードまでの、配線抵抗によるディレイt(1,
e)は、次の漸化式によって近似計算される。
【0087】t(e,e) =0 t(k/2,e) =t(k,e) +d(k/2,k) k≧1 d(k/2,k) = w1 *rx *Lx (k/2,k) *C(k) +w1 *ry *Ly (k/2,k) *C(k) +w1 *αxy*Lx (k/2,k) *Ly (k/2,k) +w2 *αxx*Lx (k/2,k) *Lx (k/2,k) +w2 *αyy*Ly (k/2,k) *Ly (k/2,k) C(e) =Ce C(k) = C(2*k) +cx *Lx (k,2*k) +cy *Ly (k,2*k) +C(2*k+1) +cx *Lx (k,2*k+1) +cy *Ly (k,2*k+1) αxx=rx *cx αyy=ry *cy αxy=0.5*(rx *cy +ry *cx ) ここに、t(a,b) はノード番号aからノード番号bまで
の配線抵抗によるディレイ、Ce はリーフノードeの入
力端子容量、C(a) はノード番号aより下流側の配線容
量とリーフノードの入力端子容量の総和、rx ,ry
それぞれX方向・Y方向の配線の単位長さあたりの配線
抵抗値、cx ,cy はそれぞれX方向・Y方向の配線の
単位長さあたりの配線容量値、Lx (k/2,k) ,Ly (k/
2,k) は、親ノードk/2と子ノードkとの間を結ぶX
方向・Y方向の配線長である。
【0088】この式の本質的な点は、各抵抗毎にそれよ
り下流側にある負荷容量を充放電するとしたときのRC
遅延を順次加算していることであり、集中定数的に扱う
ところでは乗数w1 を、分布定数的に扱うところでは乗
数w2 を時間重みとしている。
【0089】また、配線長としては、親ノードと子ノー
ドを結ぶマンハッタン距離、すなわち最短径路であるこ
とを仮定して計算し、折れ曲がりの形状によるディレイ
の差は無視している。これは折れ曲りの形状によるディ
レイの最大と最小との差 w1 *(rx *cy −ry *cx ) *Lx (k/2,k) *Ly (k/2,k) が実用上はd(k/2,k) 定義式内の他項に比べて非常に小
さいためである。なお、上式においては、ディレイの最
大・最小となるパターン(図5(a),(c) のパターンに相
当する)のディレイ中央値を採用している。
【0090】さらに、ルートドライバーセルの内部ディ
レイ,オン抵抗を各々I,R0 とすると、ノード番号−
1からノード番号eのリーフノードまでの全ディレイt
(-1,e)は、次のように計算される。
【0091】 t(-1,e)=I+w1 *R0 *C(0) +t(0,e) C(0) =C(1) +cx *Lx (0,1) +cy *Ly (0,1) 以上から、ノードkからリーフノードへのディレイの最
大値TL (K) 、最小値TS (k) は、 TL (K) =max(TL (2*k) +d(k,2*k) ,TL (2*k
+1) +d(k,2*k+1) ) TS (K) =min(TS (2*k) +d(k,2*k) ,TS (2*k
+1) +d(k,2*k+1) ) のように求められ、ノードkからリーフノードまでのデ
ィレイに対するスキューS(k) は、 S(k) =TL (k) −TS (k) と表される。
【0092】ルートドライバーの入力端子(ノード番号
−1)、出力端子(ノード番号0)の地点においては、 TS (0) =TS (1) +d(0,1) +w1 *R0 *C(0) TL (0) =TL (1) +d(0,1) +w1 *R0 *C(0) TS (-1)=TS (0) +I TL (-1)=TL (0) +I S(-1)=S(0) =S(1) =TL (1) −TS (1) となる。
【0093】なお、サブツリーのリーフノードeにおけ
るTL (e) ,TS (e) は、そのリーフノードより下位に
あるサブツリー以降のディレイが設定されるものとす
る。
【0094】以上のように、ディレイ計算モデルを考え
ることができ、以下にこのモデルを用いて分岐点位置決
定方法を説明する。
【0095】 (2)サブツリー内での分岐点位置決定方法 今、ノードkより下流のノードの位置が決定済みである
として、ノードkの位置すなわち分岐点の位置を、スキ
ューが最小化できるように決定する方法について説明す
る。ただし、迂回配線による不必要なディレイ増加を避
け、かつ計算の単純化のため、2つの子ノード位置を結
ぶ直線線分上の点から選ぶこととする。さて、ノードk
でのスキューS(k) は、 σ(k) =d(k,2*k) −d(k,2*k+1) ε(k) =0.5*(TL (2*k+1) +TS (2*k+1)−T
L (2*k) −TS (2*k) ) λ(k) =σ(k) −ε(k) μ(k) =0.5*(TL (2*k+1) −TS (2*k+1)+T
L (2*k) −TS (2*k) ) =0.5*(S(2*k+1) +S(2*k) ) と定義したとき、 S(k) =TL (k) −TS (k) =max(S(2*k) ,S(2*k+1) , TL (2*k)+d(k,2*k)-TS (2*k+1)-d(k,2*k+1) , TL (2*k+1)+d(k,2*k+1)-TS (2*k)-d(k,2*k) ) =max (S(2*k) ,μ(k) −ε(k) +σ(k) ,S(2*k+
1) ,μ(k) +ε(k) −σ(k) ) =max (S(2*k) ,S(2*k+1) ,μ(k) +|λ(k) |) と表される。
【0096】処理順序に関する前提条件から、この式の
中でノードkの分岐点の位置によって変えられるもの
は、λ(k) あるいはσ(k) であり、その他の項は既知で
ある。従って|λ(k) |を最小化することが、スキュー
を最小化することになる。
【0097】ここで、ノードkの位置がノード(2*k) と
ノード(2*k+1) をZ:(1-Z) に内分する点(0≦Z≦
1)であるとし、この2つの子ノードを結ぶ直線とX軸
との交角をθとし、2つの子ノード間の直線距離をL、
すなわち L=((Lx (k,2*k)+Lx (k,2*k+1))2 +(Ly (k,2*k)+Ly (k,2*k+1))2 1/2 とすると(図6
参照)、 Lx (k,2*k)=L*Z*|COS(θ)| Ly (k,2*k)=L*Z*|SIN(θ)| Lx (k,2*k+1)=L*(1-Z) *|COS(θ)| Ly (k,2*k+1)=L*(1-Z) *|SIN(θ)| であるから、 β1 =w1 *L*(C(2*k)+C(2*k+1))* (rx *|COS(θ)|+ ry *|SIN(θ)|) β2 =(w2 *αxx* COS2 (θ) +w2 *αyy* SIN2 (θ) +w1 *αxy*|COS(θ)|) *|SIN(θ)|) *2*L2 γ=C(2*k+1) /(C(2*k) +C(2*k+1) ) 0<γ<1 と定義すると、 σ(k) =d(k,2*k) −d(k,2*k+1) =w1 *rx *L*|COS(θ)| *(Z *C(2*k)-(1-Z) *C(2*k+1)) +w1 *ry *L*|SIN(θ)| *(Z *C(2*k)-(1-Z) *C(2*k+1)) +w1 *αxy*L2 *(2*Z −1) *|COS(θ)|*|SIN(θ)| +w2 *αxx*L2 *(2*Z −1) * COS2 (θ) +w2 *αyy*L2 *(2*Z−1) * SIN2 (θ) =w1 *L* (Z*(C(2*k)+C(2*k+1))- C(2*k+1))* (rx *|COS(θ)|+ry *|SIN(θ)|) +L2 *2*(Z-0.5 )* (w1 *αxy*|COS(θ)|*|SIN(θ)|+w2 *αxx
COS2 (θ)+w2 *αyy* SIN2 (θ)) =β1 *(Z−γ)+β2 *(Z−0.5 ) λ(k) =(β1 +β2 )*Z −(β1 *γ+β2 *0.5 )−ε(k) を得る。
【0098】λ(k) は、Zの一次関数となっているの
で、0≦Z≦1で|λ(k) |を最小化するZ(分岐点位
置を決めるパラメータ)としては、次のように選べば良
い。
【0099】
【数3】 このとき、ノードkでのスキューは、各ケースにおい
て、
【数4】 となる。
【0100】このような、Zで内分される位置kに分岐
点を決定する。
【0101】以上が、サブツリー内での分岐点位置決定
方法の詳細であるが、この方法における最大の特徴は、
スキューが非常に小さくなりうる点にある。なぜなら、
β1,β2 は、ツリーの深さが一段上がる毎に2倍から
4倍程度の増加をするので、リーフノード付近でのε
(k) が比較的小さければ、各ツリー深さのノードに対し
てほとんど上記(ハ)のケース、すなわちλ(k) =0と
でき、ルートノードでのスキューはリーフノード付近の
スキューと同程度とできるからである。特に、リーフノ
ードでのスキューを0にできれば、ルートノードでのス
キューも0にしうる。
【0102】(3)全体ツリーに対する処理方法 最後に、図7のようにバッファセル26が多段挿入され
た階層的バイナリツリーにおける分岐点位置27の決定
方法について説明する。この処理は、図2のステップ1
4に相当し、そのフローチャートは図3に示してある。
説明の都合上、この階層ツリーにおいて、ルートドライ
バーセル31が駆動するツリーの階層を第1階層とし
て、信号の伝搬する方向に第2階層、第3階層と順次数
えることにし、クラスタを直接駆動しているバッファセ
ル26をリーフノードとするツリーの階層を第m階層と
する。
【0103】まず、ステップ19において、処理するサ
ブツリーの階層を最下位階層、すなわち第m階層に設定
する。
【0104】ステップ20では、当該階層での複数のサ
ブツリーに対して、上述したサブツリー内の分岐点位置
決定処理を施す。このとき、サブツリーのルートとなる
バッファセルの位置は、図8のようにサブツリー上の2
つの子ノード位置をもとに決定されたディレイバランス
点27に、一旦設定する。
【0105】ステップ21の判定処理では、当該処理階
層での未処理サブツリーがあるか調べ、あればステップ
20の処理を繰り返し、なければステップ22に進む。
【0106】ステップ22の判定処理では、当該階層が
最上位階層かどうかを調べ、そうであればこれらの処理
全体から抜け出し、そうでなければステップ23に進
む。
【0107】ステップ23では、当該同一階層のサブツ
リーのなかで最大ディレイを持つものを前述したモデル
を用いて調べ、そのディレイ値をとりだす。
【0108】続くステップ24では、最大ディレイを持
つサブツリー以外のサブツリーにおいて、図9のように
ルートノードであるバッファセル35の位置をずらし、
各ツリーのディレイ値が揃うようにしむける。ずらす方
向は、ずらすノードと兄弟関係にあるノードの位置に近
づく方向にとる。
【0109】ステップ25では、処理階層をひとつ上に
繰り上げたのち、ステップ20の処理に戻り、以降の処
理を繰り返す。
【0110】この処理のうち、ステップ24の実施例を
以下に述べる。
【0111】たとえば、当該階層で最も大きなディレイ
を持つサブツリーQでのディレイ最大値・ディレイ最小
値を (Q)L (Q)S とし、処理対象サブツリーPで
のディレイ最大値・ディレイ最小値を (P)L (P)
S とし、サブツリーPと兄弟関係にあるサブツリーのル
ートノード34の位置27とサブツリーPのルートノー
ド35の位置(バッファセルの仮位置)27とを結ぶ直
線線分(図9の一点鎖線)上において、後者と前者を
Z:(1-Z) に内分する点(0≦Z≦1)を当該バッファ
セル35の新しい位置に選ぶこととし、その直線とX軸
との交角をθ、ルートノード間の直線距離をLとする
と、位置をずらしたことによるディレイ増加量δは、 δ=w1 *L*Z* (P)C(0) *(rx *|COS(θ) |+ry *|SIN(θ) |) +L2 *Z2 *(w1 *αxy*|COS(θ) |*|SIN(θ) | +w2 *αxx* COS2 (θ) +w2 *αyy* SIN2 (θ)) +w1 *R0 *L*Z *(cx *|COS(θ) |+cy *|SIN(θ) |) =ζ1 *Z+ζ2 *Z2 である。
【0112】さて、サブツリーPのディレイをサブツリ
ーQのディレイに揃えるには、双方のディレイの中央値
の差 τ=0.5 *((Q) L (Q) S(P) L
(P) S ) が、δと等しくなればよいので、 ζ2 *Z2 +ζ1 *Z−τ=0 の解で正値の方、すなわち、
【数5】 となるように、移動位置を決定すれば良い。
【0113】ここに、 ζ1 =w1 *L*((P) C(0) * (rx *|COS(θ) |+ry *|SIN(θ) |) +(cx *|COS(θ) |+cy *|SIN(θ)|)*R0 ) ζ2 =L2 *(w2 *αxx* COS2 (θ) +w1 *αxy*|COS(θ) |*|SIN(θ) | +w2 *αyy* SIN2 (θ)) である。
【0114】このようにすると、当該階層の各サブツリ
ーのディレイ中央値が同一となり、従って、当該階層の
サブツリーでのスキュー最大値が、当該階層以下の全体
としての最大スキュー値となる。なお、この階層でのデ
ィレイの最大値・最小値は、ひとつ上位の階層のサブツ
リーでのリーフノードの初期ディレイ値として設定され
る。
【0115】以上、第1の発明による第1実施例を詳述
したが、クラスタ内のディレイが全クラスタで同一であ
れば、全バイナリツリーにおいてスキューを限りなく0
に近くすることができる。また、もしクラスタ内のディ
レイにばらつきがあるとしても、第m階層のサブツリー
におけるリーフノードの初期ディレイを計算上0として
上記の処理を行えば、クラスタ内を除く部分でのスキュ
ーを限りなく0に近くできるので、トータルのスキュー
としては、クラスタ内スキューの最大値近傍に抑えるこ
とが可能である。
【0116】第2実施例 第1実施例では、バッファセル挿入段数が予め指定して
あることを前提にしていたが、最適な挿入段数を求める
ことも可能である。
【0117】それにはまず、各バッファセル種類ごとに
駆動させるサブツリーの深さの上限値の最大値aを求
め、このaをもとにバッファセル挿入段数の最小値NI
を求める。今、全体ツリーの深さをhとすると、NI は NI =h/a で与えられ、この計算は図1のステップ1で行なう。
【0118】次に、図1、図2のフローチャートに沿っ
て処理していくが、ステップ17では、第1実施例で述
べた判断処理のあと、バッファセル挿入段数が一段少な
かったときと比べてディレイ減少があるかどうかを調
べ、あればバッファセル挿入段数を一段ふやして以降の
処理を繰り返し、減少がなければステップ12から18
の処理を抜け出す、という判断処理を追加する。
【0119】このように修正することで、ディレイ最小
となるバッファセル挿入段数を求めることができる。し
かも、バッファセル挿入段数は1段からしらみつぶしに
調べるのではなく、NI 段から始めるため、処理時間上
も効率が良い。
【0120】第2の発明 以下に、第2の発明による配線幅最適化手法について説
明する。説明のわかりやすさを考慮して、最初に完全対
称な径路における配線幅決定方法を述べ、次に一般的な
径路における配線幅決定方法を述べ、最後に実際のクロ
ック配線処理フローを述べる。
【0121】(1)完全対称な径路の配線幅最適化 完全対称な径路とは、図10に示されるようなH字型径
路を再帰的に繰り返す形状を指す。
【0122】配線幅は、隣接する分岐点間径路上で一定
とし、分岐点は固定されているとする。理想としては、
配線幅を径路上の任意の地点で異なるように考えるほう
が良いが、それでは計算をいたずらに複雑にするだけで
あるので、ここでは前記の仮定をして近似最適解を求め
る。
【0123】また、分岐点間径路においてHツリー上の
同一深さにある枝に対応するものは、同一の線幅を持つ
ものとする。これは、Hツリーの各リーフノードまでの
ディレイを揃えるため、すなわちクロックスキューを最
小化するための仮定である。このとき、このHツリーを
駆動しているドライバーセルの出力端子からツリーのリ
ーフノードまでのディレイTは、Elmoreの式により次の
ように表される。ただし、定係数部分は省略してある。
【0124】
【数6】 C(i) =2 * (C(i+1) + ci+1 *li+1 ) l2j-1=l2j=D * (1/2)j+1i =Hツリー上でルートからの深さがiである枝径路
の単位長あたりの抵抗 ci =Hツリー上でルートからの深さがiである枝径路
の単位長あたりの容量 li =Hツリー上でルートからの深さがiである枝径路
の配線長 C(i) =Hツリー上でルートからの深さがiである枝径
路より下流の容量和 Ron=ドライバーセルのオン抵抗 D =ツリー配線の対象となる正方形領域の一辺の長さ なおリーフノードには、通常、被駆動セルの入力端子容
量がつくが、配線容量に比べて小さいので、C(n) =0
とみなす。
【0125】今、配線の厚みと層間絶縁膜厚が一定で、
隣接する並行配線間の容量が小さい(そのように充分な
スペーシングルールをとる)とすると、深さiにおける
単位長あたりの配線抵抗・容量は、 ri =ρ/Wi ρ:抵抗に関する定数 ci =ζ*(Wi +f) ζ:容量に関する定数 と表される。ここに、Wi は、深さiの配線幅とし、f
はフリンジ効果を表す。この式を数6に代入すると、T
は、Wi (i=1,2,…,n) の関数となる。従って、Tを最
小とする各Wi を求めるには、TのWi に対する偏微分
を求め、それらの連立方程式がゼロとなる解を求めれば
良い。
【0126】この偏微分は、次のようになる。
【0127】
【数7】 よって、Gi =0(i=1,2,…, n)という連立方程式の解
を求めれば良いのだが、Gi =0とならない場合や、そ
の解Wi が標準線幅sより小さくなる場合もありうる。
しかし、C(i) がWi の一次関数であることから、Gi
は、 Gi = −A1*( Wi +A2 ) /W i 2 +A3 A1,A2,A3 :Wj (j ≠i)の関数で正値 と表され、しかも、 G i’=A1*( 1/W i 2 +2* A2 /W i 3 )>0 すなわち、Gi はWi に対して単調増加関数になってい
るので、Gi =0となる極小解Wi は高々ひとつしかな
い。意味のある解が得られるのは、Wi =sのときにG
i ≦0となる場合であり、逆に、Wi =sのときにGi
>0となる場合は、Wi ≧sでGi =0となる解が存在
せずTが単調増加となるので、Tの最小値はWi =sの
ときとなる。
【0128】これらのことから、Tの最小値を求める問
題は、厳密には次のように定式化される。
【0129】minimize|Gi | for all i subject to Wi ≧s すなわち、どの深さiの配線幅をとっても、ディレイ最
小となる配線幅を求める。このときの制約条件は、標準
配線幅以上である。
【0130】次に、この問題の解を具体例をあげて説明
する。
【0131】今、n=3、f=s、sRon/ ρD=0.
0537、とすると、上記問題の解は、 W1 =4.6
5*s、W2 =1.4*s、W3 =sとなる。このとき
のTは、 T=0.693*ρζD2 となる。
【0132】ちなみに、配線幅が一定という条件、すな
わちW1 =W2 =W3 のときのTの最小値は、 T=0.97*ρζD2 となるので、第2の発明のように分岐点間を結ぶ枝配線
径路毎に配線幅を決定した方が、ディレイをより小さく
できる。
【0133】 (2)一般的な径路における配線幅決定方法 一般的な2分木型径路は非対称な径路であるが、この場
合の最適配線幅の決定も前述の方法にならって行うこと
ができる。ただし、ここでも配線幅は隣接する分岐点間
径路上で一定とし、分岐点は固定とする。また、分岐点
間径路においてツリー上の同一深さにある枝に対応する
ものは、同一の線幅をもつものとする。ツリーを駆動し
ているドライバーセルの出力端子からツリーのリーフノ
ードまでのディレイは、ツリーが非対称形であるのでリ
ーフノード毎に異なる。そこで、ディレイ最小とするに
は、最大のディレイをもつ径路パスを見つけ、そのパス
ディレイを最小化するように配線幅を決定し、他の経路
の配線幅はこれに合せる。
【0134】今、そのディレイをTmax とすると、Tma
x は、前述と同様にして Tmax =Tmax (W1 ,W2 ,…,Wn ) のように、Wi の関数となる。よって、Tmax の最小値
を求める問題は、前述と同様にして以下のように定式化
される。
【0135】 minimize |∂Tmax /∂Wi | for all i subject to Wi ≧s この解の求める方法については、前述と同じである。な
お、もしも図11のように径路ツリーの最初の分岐点4
5からドライバーセル46まで長い径路が存在する場合
は、この部分の配線幅をWO として上記と同様にTmax
の計算式を求め、上記の定式化をそのまま利用して最適
配線幅を計算することができる。
【0136】(3)クロック配線処理フロー 以下では、実際のクロック配線をするための処理フロー
について説明する。
【0137】クロック配線では、スキューを小さくする
ように径路分岐点を決定するが、その際には配線幅がわ
かっている必要があり、また、ディレイを小さくするよ
うに配線幅を決定するためには径路分岐点がわかってい
る必要がある。このことから、スキューおよびディレイ
の最小となる径路分岐点と配線幅を同時に決定すること
は難しい。そこで、一方を固定して他方を最適化する処
理を繰り返し、ディレイが収束したときの径路を採用す
る。
【0138】図12は、この処理を示すフローチャート
である。ただし、径路のトポロジー(ツリー構造)は、
予め別の方法により決定されているとする。
【0139】まず、ステップ41において、対称径路と
仮定したときの分岐点を求める。これは、配線径路の初
期解を意味する。
【0140】次のステップ42では、径路分岐点の位置
を固定して配線幅を最適化する。これには、前述の最適
化方法を用いる。
【0141】ステップ43では、径路ツリーの各枝の配
線幅をステップ42で決定した値に固定して、スキュー
最小となるように径路分岐点を求め直す。この方法につ
いては、特開平3-137851の手法を基本とする。
【0142】次のステップ44の判定処理では、配線幅
の変化分が許容誤差範囲内にあり、かつ最大パスディレ
イの変化分も許容誤差範囲内にあるか、という収束判定
を行う。収束していなければステップ42の処理に戻
り、収束していれば処理を終了する。
【0143】なお、初期解としては、別の方法で設定す
ることも可能である。たとえば、最初に配線幅を初期設
定して、その条件でスキュー最小の径路分岐点を求め、
これを初期解としても良い。この際、s≦Wi ≦max (
s,Wi-1 /2.5) となるように、すなわち当該経路より
ひとつ上位階層側の経路の平均配線幅Wi-1 の0.4倍
の数値と一般信号用の標準配線幅sとを比べたときの大
きい方の数値以下となるように配線幅を決定すれば、収
束するまでの処理時間を短くすることができる。
【0144】また、この配線幅の決定方法は、今回の実
施例に拘らず、2分木型配線径路構造における配線幅決
定の際に適用可能である。
【0145】第3の発明以下に第3の発明による自動配
線方法を集積回路の自動配線の計算機プログラムに適用
した実施例を説明する。
【0146】配線領域の輪郭は全て垂直及び水平の線分
からなる。但し斜め線分を用いる場合でも本発明は適用
可能である。また、本発明は逐次配線を前提としてお
り、既に配線がなされていて新規な配線が禁止されてい
る領域は、配線禁止領域として登録されているものとす
る。この実施例では配線領域は1層であるが、もちろん
多層配線領域においても本発明は有効である。
【0147】各配線要求は探索開始点(以後単に開始点
と記す)と探索終了点(以後単に終了点と記す)の2点
で与えられる。以降では、与えられた2点間のテーパ配
線径路の探索に注目して説明をする。
【0148】まず、新たな配線領域を探索する際の、配
線幅の求め方を以下に説明する。
【0149】この発明においては、図13に示すよう
に、テーパ配線81の配線幅の小さい端が開始点Sであ
り、配線幅の大い端が終了点Tである。径路探索はSか
らTに向けて行われる。
【0150】S,Tにおける配線幅を各々Ws ,Wt
する。
【0151】ここで、径路長を軸にとり、Sを0、Tを
1とした時、S〜T間の点X(0≦X≦1)における配
線幅(Wx )を決定できる特定の関数(Width
(X))が与えられているものとする。さらに、配線中
にくびれは存在しないものとする。つまり、次の式が成
り立つ。
【0152】S〜T間の任意の点A,B(0≦A≦B≦
1)について、常に Wa ≦Wb (1) S〜T間の点Xについて、S〜X間の径路長をLsx,X
〜T間の径路長をLxtとすると、Xの値は次の式で表さ
れる。
【0153】X=Lsx/(Lsx+Lxt) (2) 従ってXにおける配線幅Wx (=Width(X))も
求められる。
【0154】しかし、この時Lsxは既に探索した領域内
で求められるので正確な値が得られるが、Lxtについて
はX〜T間の径路が決定していないので正確な値を計算
することができない。そこで、Lxtについては、X〜T
間のマンハッタン距離(水平径路及び垂直径路のみを用
いた最短径路長)Mxtを用いることにすれば、結果とし
てWx の近似値が求められる。
【0155】LxtとMxtの間には常に以下の式が成り立
つ。
【0156】Lxt≧Mxt (3) Mxtを用いて求められたXの値をXm とすると、Xm
以下の式で表される。 Xm =Lsx/(Lsx+Mxt) (4) この時、式(3)より以下の式が成り立つ。
【0157】Xm =Lsx/(Lsx+Mxt) ≧Lsx/(Lsx+Lxt)=X (5) 式(5)より、常に以下の式が成り立つ。
【0158】Xm ≧X (6) ここで式(1),(6)より、 Width(Xm )≧Width(X) (7) であるから、配線の際にWidth(Xm )を保証して
いれば、最終的に得られた配線が設計規則を犯すことは
ない。また、Lxt=Mxtの場合はXm =Xであるから、
最適な配線幅が得られることになる。以後、Width
(Xm )を“必要配線幅”と呼ぶことにする。
【0159】既に述べた通りSからTへの探索の際には
Width(Xm )をもとに径路探索を行う。径路発見
後の逆追跡の段階ではLsx,Lxtともに正確な値が計算
可能であるから、Width(X)を用いて正確な配線
幅を決定し、最終的な配線径路が得られることになる。
【0160】また、2層以上の配線ではビアが存在する
が、Lsxに関してはビアを相当する径路長に換算して計
算を行い、一方Mxtには必要最小限のビアに相当する径
路長を加算することにより、ビアを考慮した必要配線幅
が得られる。
【0161】第1実施例 第3の発明による配線方法を迷路法に適用した場合の実
施例を、図14,15を参照しながら説明する。本実施
例では、格子に区切られた矩形ひとつひとつを“セル”
と呼ぶ。開始点、終了点は1個ないし複数のセルから構
成される。
【0162】図14は第3の発明による配線方法を迷路
法に適用した場合のフローチャートである。図中、開始
点を含むセルをヒープに挿入するステップ51、ヒープ
からセルを1個取り出すステップ52、終了点を発見し
たか否かを確認するステップ55、新しくラベル付けし
たセルをヒープへ挿入するステップ56、逆追跡をして
径路を得るステップ57は、従来の迷路法と同じ手順で
ある。
【0163】一方、取り出されたセルにおける必要配線
幅を計算するステップ53、取り出されたセルと必要配
線幅を満たして隣接するセルを認識するステップ54が
第3の発明の特徴であり、この手順により、テーパ配線
を効率的に行うことが可能である。
【0164】実際の配線例を図15によって示す。ここ
で、開始点をS、終了点をTとし、配線幅は関数Wid
th(X)={1(1−X)+3Xの四捨五入}で表さ
れるものとする。配線領域内において、Sはセル1×1
の大きさを、Tはセル3×3の大きさを占める。また、
必要配線幅を求める際の径路132の長さはセルの数を
元にしたマンハッタン距離とし、Tとの間の距離はTの
中心のセルとの距離であるものとする。なお、配線領域
内には、配線禁止領域141があるものとする。
【0165】配線領域内に設定された格子内を、図15
(a)中の網掛けのように、SからTへ探索していく。
ここで探索途中の点Xを考え、この点Xを含む新たな配
線領域(この実施例の場合は各セル)における必要配線
幅の求め方を説明する。
【0166】図15(a)では、既に得られている配線
径路131の径路長はLsx=7、XからTまでの径路1
33の径路長はLxt=20であるが、探索がXまでしか
行われていない状態では正しいLxtの値を求めることは
不可能である。そこでMxt=18の値を使用し、これを
基にXm を計算すると、Xm =7/(7+18)=0.
28となる。よってWidth(Xm )の値は、1(1
−Xm )+3Xm =1.56の四捨五入で2となるか
ら、Xにおける必要配線幅は2となる。
【0167】よって、Xにおける必要配線幅がセル2つ
分であるから、X以降のラベル付けはセル2つを単位と
して行うことになる。
【0168】SからTまでの探索終了後、Tからの逆追
跡の過程で正しい配線幅を決定し、最終的な径路134
が得られる(図15(b)参照)。
【0169】第2実施例 第3の発明による配線方法を線分展開法に適用した場合
の実施例を図16,17を参照しながら説明する。
【0170】図16は第3の発明による配線方法を線分
展開法に適用した場合のフローチャートである。図中、
開始点を含む補助線分を配線領域内に発生しヒープに挿
入するステップ61、ヒープから補助線分を1個取り出
し、配線領域内で展開するステップ62、終了点を発見
したか否かを確認するステップ63、逆追跡をして径路
を得るステップ66は、従来の線分展開法と同じ手順で
ある。
【0171】一方、展開された領域における必要配線幅
を計算するステップ64、新しい補助線分のうち必要配
線幅を満たすもののみヒープに挿入するステップ65が
第3の発明の特徴であり、この手順により、テーパ配線
を効率的に行うことが可能である。
【0172】実際の配線例を図17によって示す。開始
点をS、終了点をTとし、双方における配線幅は各々W
s ,Wt とする。S〜T間の点Xにおける配線幅は式W
idth(X)=Ws (1−X)+Wt Xで求めること
ができるものとする。
【0173】配線領域内で補助線分を展開し、太い矢印
で示したようにSからTへ探索していく。ここで探索途
中の点Xを考え、この点Xを含む新たな配線領域(この
実施例の場合は各線分展開領域)における必要配線幅を
求め、新しい補助線分を発生させる方法を説明する。
【0174】図17(a)で、142で示される線分展
開によって既に配線径路131が得られており、新たに
発生できる補助線分の候補は図中のX1 ,X2 である。
【0175】X1 ,X2 における必要配線幅を、マンハ
ッタン径路132を用いて見積った時、ST間において
1 はSに近いが、X2 はむしろTに近くなっている。
テーパ配線が、Sに近いほど必要配線幅が小さくなるこ
とを考えると、X1 における必要配線幅はX2 での必要
配線幅よりも小さくなる。
【0176】ここで、図17(a)のように、X1 の位
置へは新しい補助線分を発生できるが、X2 へは新しい
補助線分を設計規則上発生できないものとすれば、これ
により、X1 を通過してS→Tの径路探索が行われる。
【0177】SからTまでの探索終了後、正しい配線幅
を決定しながらTから逆追跡し、最終的な径路134が
得られる(図17(b)参照)。図の135で示される
径路はX2 を通過させた際のテーパ配線径路の例である
が、電気信号の伝搬遅延の最小化を第一に考えてテーパ
配線の形状を決定すると、X2 の位置で配線禁止領域4
1との間の最小間隔が守れなくなってしまう。
【0178】
【発明の効果】以上詳細したように第1の発明によれ
ば、等ディレイとなるようにバランスをとる分岐点を各
階層のサブツリーにおいて求めることができ、階層間に
またがるディレイの差もバッファセルの位置の調整およ
び当該セル近傍での迂回配線の追加によりバランスさせ
られる。このため、高精度にかつ最小にスキューを抑え
たクロック信号を分配することができると共に、ディレ
イの最小化も達成できる。また、第2の発明によれば、
ゼロに近いスキュー値、および最小のディレイ値を持つ
ようなクロック配線径路を得ることができる。特に、デ
ィレイについては、同一ネット内で単一の配線幅を使用
してディレイを最小化する場合に比べて、配線によるデ
ィレイを20から30%程度削減することができる。
【0179】さらに、第3の発明によれば、テーパ配線
を行う際に、配線幅の小さい端から大きい端への径路探
索の過程で配線幅を随時計算しながら配線している。こ
れにより、配線領域を一度探索するのみで、設計規則を
犯さずに配線幅を考慮したテーパ配線を短時間で得るこ
とが可能である。
【図面の簡単な説明】
【図1】第1の発明の第1実施例における全体処理手順
を示すフローチャートである。
【図2】第1の発明の第1実施例におけるバイナリツリ
ー形成の処理手順を示すフローチャートである。
【図3】第1の発明の第1実施例におけるツリー内の分
岐点位置決定の処理手順を示すフローチャートである。
【図4】サブツリーの構造例を示す簡略図である。
【図5】折れ曲り形状の異なる配線パターン例を示す経
路図である。
【図6】サブツリー内の分岐点位置決定方法を説明する
ための概念図である。
【図7】バッファセルが多段挿入されたツリー構造例を
示す簡略図である。
【図8】バッファセル配置位置の初期設定状態を示す配
置図である。
【図9】バッファセル配置位置の修正後の状態を示す配
置図である。
【図10】第2の発明に係わるHツリーの配線構造例を
示す図である。
【図11】第2の発明に係わる一般的なクロックのツリ
ー配線構造を示す図である。
【図12】第2の発明の処理フローを示す図である。
【図13】一般的なテーパ配線の形状例及び、配線幅、
径路長の定義を表す図である。
【図14】第3の発明による自動配線方法を迷路法に適
用した一実施例の処理手順を表したフローチャートであ
る。
【図15】第3の発明による自動配線を迷路法に適用し
た際に径路が得られる様子を表す図である。
【図16】第3の発明による自動配線方法を線分展開法
に適用した一実施例の処理手順を表したフローチャート
である。
【図17】第3の発明による自動テーパ配線を線分展開
法に適用した際に径路が得られる様子を表す図である。
【図18】第1の発明に関する、配線抵抗を分布定数的
に扱うときの等価回路を表す図である。
【符号の説明】
26 バッファセル 27 サブツリーの分岐ノード 28 サブツリーのリーフノード 29 サブツリーの親ノード 30 サブツリーの子ノード 31 ルートドライバーセル 32 チップ領域 33 第m段のバッファセル 34 第(m−1)段で最大ディレイをもつバッファセ
ル 35 第(m−1)段で最大ディレイではないバッファ
セル 45 ドライバーセル 46 分岐点 81 テーパ配線の形状例 131 S,X間の既に得られた径路 132 マンハッタン径路 133 X,T間の径路 134 最終的に得られた径路 135 設計規則違反の径路 141 配線禁止領域 142 既に探索した領域
───────────────────────────────────────────────────── フロントページの続き (56)参考文献 特開 平4−269860(JP,A) 特開 平2−224370(JP,A) 特開 平2−62675(JP,A) 特開 平5−54100(JP,A) 南文裕、高野みどり,”RC遅延を考 慮したスキュー最小化クロック配線手 法”,電子情報通信学会技術研究報告 (VLD91−128〜142),平成4年3月 6日,第91巻,第490号,p.15−22 (58)調査した分野(Int.Cl.7,DB名) G06F 17/50 H01L 21/82

Claims (3)

    (57)【特許請求の範囲】
  1. 【請求項1】 2分木型の配線径路構造において、隣接
    する分岐点間の径路の配線幅をパラメータとする配線デ
    ィレイ関数を求め、さらに各配線幅パラメータに対する
    当該ディレイの偏導関数をそれぞれ求め、各配線幅パラ
    メータが標準配線幅以上という制約範囲において、前記
    偏導関数の絶対値がそれぞれ最小となるように各配線幅
    を決定することを特徴とする集積回路の自動配線方法。
  2. 【請求項2】 2分木型配線径路のトポロジー構造が予
    め決定されているとき、隣接する分岐点間の径路の各配
    線幅を固定して各分岐点から下流側のディレイが釣り合
    うように分岐点を決定する処理をツリーの下位部から上
    位に向かって再帰的に繰り返すことでスキューを最小化
    する第1の処理と、 各径路分岐点の位置を固定して請求項1記載の方法によ
    り各配線幅を決定してディレイを最小化する第2の処理
    と、 これら第1及び第2の処理を交互に繰り返した後のディ
    レイ変化量が許容値以内に到達したかどうかを判定する
    第3の処理とからなり、ディレイ変化量が許容値以内に
    到達した状態の径路を最終配線径路とすることを特徴と
    する集積回路の自動配線方法。
  3. 【請求項3】 2分木型配線径路構造において隣接する
    分岐点間の径路の平均配線幅が、2分木型配線径路構造
    上で当該径路よりひとつ上位階層側の径路の平均配線幅
    の0.4倍の数値と一般信号用の標準配線幅とを比べた
    ときの大きい方の数値以下となるように配線幅を決定す
    ることを特徴とする集積回路の自動配線方法。
JP00893293A 1993-01-22 1993-01-22 集積回路の自動配線方法 Expired - Fee Related JP3251686B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP00893293A JP3251686B2 (ja) 1993-01-22 1993-01-22 集積回路の自動配線方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP00893293A JP3251686B2 (ja) 1993-01-22 1993-01-22 集積回路の自動配線方法

Publications (2)

Publication Number Publication Date
JPH06223134A JPH06223134A (ja) 1994-08-12
JP3251686B2 true JP3251686B2 (ja) 2002-01-28

Family

ID=11706444

Family Applications (1)

Application Number Title Priority Date Filing Date
JP00893293A Expired - Fee Related JP3251686B2 (ja) 1993-01-22 1993-01-22 集積回路の自動配線方法

Country Status (1)

Country Link
JP (1) JP3251686B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100511242C (zh) * 2004-10-20 2009-07-08 日立电线株式会社 模式抽出计算算法、设计程序及模拟器

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2737620B2 (ja) * 1993-12-22 1998-04-08 日本電気株式会社 半導体集積回路の配線方法
JP2001109784A (ja) 1999-10-05 2001-04-20 Mitsubishi Electric Corp 配置配線最適化方法、および装置、ならびに配置配線の最適化に関するプログラムを記録した記録媒体
JP2002026132A (ja) 2000-07-07 2002-01-25 Mitsubishi Electric Corp 半導体集積回路の配置配線方法およびその方法をコンピュータに実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体
CN110335282B (zh) * 2018-12-25 2023-04-18 广州启明星机器人有限公司 一种基于栅格的轮廓线段特征提取方法
CN113255284B (zh) * 2021-05-30 2023-07-18 上海立芯软件科技有限公司 全局布线中快速局部拆线重布方法
CN117454832B (zh) * 2023-10-10 2024-06-11 北京市合芯数字科技有限公司 电路芯片中数据通道的布线方法、装置、设备及介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
南文裕、高野みどり,"RC遅延を考慮したスキュー最小化クロック配線手法",電子情報通信学会技術研究報告(VLD91−128〜142),平成4年3月6日,第91巻,第490号,p.15−22

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100511242C (zh) * 2004-10-20 2009-07-08 日立电线株式会社 模式抽出计算算法、设计程序及模拟器

Also Published As

Publication number Publication date
JPH06223134A (ja) 1994-08-12

Similar Documents

Publication Publication Date Title
JP2695078B2 (ja) データ処理装置クロック信号の分配方法
JP2874628B2 (ja) 論理回路の最適化装置及びその方法
US7065730B2 (en) Porosity aware buffered steiner tree construction
US7017132B2 (en) Methodology to optimize hierarchical clock skew by clock delay compensation
US20030005398A1 (en) Timing-driven global placement based on geometry-aware timing budgets
US20070286323A1 (en) Clock distribution circuit, semiconductor integrated circuit and method of designing clock distribution circuit
Lin et al. A novel framework for multilevel routing considering routability and performance
US7392493B2 (en) Techniques for super fast buffer insertion
US6944840B2 (en) Design method and system for achieving a minimum machine cycle for semiconductor integrated circuits
JP3251686B2 (ja) 集積回路の自動配線方法
Wu et al. Coupling aware timing optimization and antenna avoidance in layer assignment
Hu et al. Taming the complexity of coordinated place and route
Dayan et al. Layer Assignment for Rubber Band Routing
US6553504B1 (en) Clock synchronization of multiprocessor systems
He et al. Ripple 2.0: Improved movement of cells in routability-driven placement
Hong et al. TIGER: an efficient timing-driven global router for gate array and standard cell layout design
US6567966B2 (en) Interweaved integrated circuit interconnects
Cho et al. A buffer distribution algorithm for high-speed clock routing
JPH11204648A (ja) 配線経路決定方法および遅延推定方法
JP3091568B2 (ja) レイアウト設計方法
Chou et al. On general zero-skew clock net construction
JPH08129576A (ja) 半導体装置のマスクレイアウト設計方法
Madhuri et al. Performance Analysis on Skew Optimized Clock Tree Synthesis
Chen et al. Predicting potential performance for digital circuits
JP3116915B2 (ja) クロックネットのレイアウト設計変更方式

Legal Events

Date Code Title Description
FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20071116

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20081116

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20081116

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20091116

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101116

Year of fee payment: 9

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101116

Year of fee payment: 9

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111116

Year of fee payment: 10

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121116

Year of fee payment: 11

LAPS Cancellation because of no payment of annual fees