JP4472193B2 - Repeater insertion apparatus, method, recording medium, and program for integrated circuit - Google Patents
Repeater insertion apparatus, method, recording medium, and program for integrated circuit Download PDFInfo
- Publication number
- JP4472193B2 JP4472193B2 JP2001004114A JP2001004114A JP4472193B2 JP 4472193 B2 JP4472193 B2 JP 4472193B2 JP 2001004114 A JP2001004114 A JP 2001004114A JP 2001004114 A JP2001004114 A JP 2001004114A JP 4472193 B2 JP4472193 B2 JP 4472193B2
- Authority
- JP
- Japan
- Prior art keywords
- repeater
- wiring
- integrated circuit
- graph
- value
- 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
Links
Images
Landscapes
- Design And Manufacture Of Integrated Circuits (AREA)
Description
【0001】
【発明の属する技術分野】
本発明は、集積回路におけるリピータ挿入装置および方法、記録媒体に関するものである。特に、比較的長い配線(RC遅延の大きな配線)を有する集積回路においてリピータを挿入する最適な位置と数を求めるリピータ挿入方式に関し、CMOSやSOI構造を有する集積回路装置全般に適用可能なものである。
【0002】
【従来の技術】
近年、半導体装置の集積化が進み、集積度が飛躍的に大きくなってきた。集積度が大きくなると、チップサイズも大きくなり、チップ内で離れた場所に配置される素子間(例えば駆動側のドライバと負荷側のレシーバとの間)を接続するために、比較的長い配線を設けることが必須となる。
【0003】
一方、近年のコンピュータシステムでは、内部回路の動作基準となるクロック周波数として、800MHz、1GHzなどという非常に大きな周波数が用いられるようになってきた。このような大きなクロック周波数の下では、素子間の信号の転送時間を短くする必要があり、長い配線線路での転送遅延を如何に抑えるかが高速な装置を作る上での重要なポイントとなる。
【0004】
そのために、ドライバとレシーバとの間を繋ぐ長い配線を複数の短い配線に分割し、その分割点に信号駆動能力を有するバッファタイプあるいはインバータタイプのリピータを挿入することが行われる。これまでのリピータ挿入は、(1) 遅延方程式を解析的に求めて配線を等間隔に分割する方法や、(2) 遅延解析ツールが仮想的にリピータを挿入し、遅延要求値との差が小さくなるように挿入前後の遅延を操作する方法などが採られてきた。
【0005】
図24は、上記(1) の遅延方程式を解析的に求めて配線を等間隔に分割する方法を説明するための図である。この方法は、1つの長い線路をk個の短い線路に均等に分割し、全体の遅延は分割した各線路のk倍であるとして求めるものである。均等分割された線路間に挿入されるリピータの1段当たりの50%遅延は、線路の単位長さ当たりの容量と抵抗をそれぞれC0 ,R0 とおき、分割前の線路長をLとすれば、次の式(1) で表される。
【0006】
【数1】
【0007】
ここで、式(1) 中のRonはドライバ、リピータのオン抵抗、Ctrはリピータ、レシーバの入力ゲート容量である。また、この式(1) では、挿入されるリピータ、信号を駆動するドライバ、信号の受け側のレシーバのゲートサイズは全て同じであることを想定している。上記式(1) をkで偏微分してゼロとおくと、次の式(2) のように最適な分割数kを求めることができる。
【0008】
【数2】
【0009】
図25は、リピータ分割前の配線長Lとリピータ分割数kとの関係を示す図である。式(2) から明らかなように、配線長Lの二乗が平行根の中の分子にあるので、リピータ分割前の配線長Lとリピータ分割数kとは線形の関係にある。この式(2) を配線長Lについて展開し、k=1を代入すれば、リピータ分割しないでドライバが駆動できる最大の線路長が計算される。
【0010】
図26は、上記(2) の遅延解析ツールによる処理手順を示すフローチャートである。ここでは、説明の簡単のために、図27(a)に示すような分岐を有する配線においてリピータを挿入する場合について考える。
図26に示すように、遅延解析ツールでは、遅延コンストレイント1、ネットリスト2、セルタイミングライブラリ3、配線容量・配線抵抗データ4および配置配線データベース5の各情報を用いる。
【0011】
遅延コンストレイント1は、集積回路を構成する個々の素子であるセルAからセルBに至るパスおよびセルAからセルCに至るパスの遅延要求値(RAB,RAC)の情報である。ネットリスト2は、各セル間を繋ぐ複数の配線(ネット)のリスト情報である。セルタイミングライブラリ3は、個々のセルが持つ固有の遅延情報である。配線容量・配線抵抗データ4は、ネットリスト2中に含まれる各配線の容量および抵抗に関する情報である。また、配置配線データベース5は、各セルが集積回路内のどこに置かれ、その間の配線がどのように接続されているかを表した情報である。
【0012】
遅延解析ツールでは、これらの情報を用いて、図26のステップS1〜ステップS7の処理を全てのネットについて繰り返し行う。ステップS1では、遅延コンストレイント1を除く他の情報に基づいて遅延解析を行い、セルAからセルBに至るパスおよびセルAからセルCに至るパスの遅延時間(TAB,TAC)をそれぞれ計算する。
【0013】
ステップS2では、このステップS1で計算した遅延時間TAB,TACと、遅延コンストレイント1である遅延要求値RAB,RACとに基づいて、 Slack値を計算する。 Slack値は、遅延要求値RAB,RACから遅延時間TAB,TACを減算することにより求まる。すなわち、A→BのパスおよびA→Cのパスのそれぞれについて、以下のような計算を行う。
Slack=RAB−TAB
Slack=RAC−TAC
【0014】
ステップS3では、上記ステップS2で計算した Slack値が負の値であるか否かを判断する。負の値であれば、遅延要求値よりも実際の遅延時間の方が大きいということなので、ステップS4に進み、そのパスにはリピータを1つ挿入して転送速度の高速化を図る。一方、計算された Slack値が負の値でなければ、ステップS5に進み、 Slack値が正の値であるか否かを更に判断する。
【0015】
Slack値が正の値であれば、遅延要求値よりも実際の遅延時間の方が小さいということなので、ステップS6に進み、そのパスにはディレイゲートを1つ挿入する。一方、 Slack値が負の値でも正の値でもない場合は、遅延要求値と実際の遅延時間とが等しいということなので、そのパスにはリピータもディレイゲートも挿入せずに、次のステップS7へと処理を進める。
【0016】
ステップS7では、上記ステップS4あるいはステップS6でリピータやディレイゲートが挿入された結果、またはその何れもが挿入されなかった結果として得られる遅延時間と遅延要求値との誤差が許容範囲内か否かを判断する。許容範囲内でなければ、ステップS1に戻って同様の処理を繰り返し行い、必要に応じてリピータやディレイゲートを更に追加挿入していく。そして、誤差が許容範囲内となったら、次のネットへと処理を進める。
【0017】
以上のような処理において、例えば、
Slack=RAB−TAB<0
Slack=RAC−TAC>0
であったとすると、セルAからセルBに至るパスにはリピータが挿入され、セルAからセルCに至るパスにはディレイゲートが挿入されることになる。図27(b)はその挿入結果を示す図である。この例では、セルAから配線の分岐点までの間にリピータが2つ挿入され、分岐点からセルBまでの間にリピータが1つ挿入され、分岐点からセルCまでの間にディレイゲートが3つ挿入されている。
【0018】
【発明が解決しようとする課題】
しかしながら、上記式(1),(2) のように遅延方程式を解析的に求めて配線線路を等間隔に分割する方法では、1つのドライバと1つのレシーバとの間を繋ぐ単一線路を単に等間隔に分割するものであり、ドライバとレシーバとの間に配線の分岐やメタル乗り換え等がある場合は一切考慮していない。また、リピータ、ドライバ、レシーバのゲートサイズも全て同じでなければならず、集積回路の実際の配線には適用できないという問題があった。
【0019】
すなわち、実際の集積回路においては、メタル配線レイヤが幾層にもなっていることが多い。また、配線のネットトポロジも分岐があったり、折れ曲がっていたり、メタル乗り換えやVIAホールがあるのが常である。このように複雑な構成を有する配線の容量や抵抗については、配線そのものの太さや周囲の配線混雑具合などから値が決まる。そのため、均等にリピータ分割しようとしても、分岐したりメタルを乗り換えながら長い距離を走る配線では、式(1),(2) のように単純には表すことができない。
【0020】
また、図26のような遅延解析ツールを用いた方法では、対象とする配線上にリピータやディレイゲートを仮想的に挿入して遅延時間を計算し、それが遅延要求値に近づくように試行錯誤的に処理を繰り返すものである。そのため、集積回路が大規模になると、遅延解析そのものに多くの処理時間を要するという問題があった。仮に、ネット上の全部のノードが活性化できたとしても、あらゆるパスの遅延制約を見ながら遅延コンストレイントに近づくようにリピータ挿入を繰り返し行うのは、かなりの処理時間を必要とし、現実的な時間内に処理が終わらないこともあった。
【0021】
特に、リピータ挿入の解析は、集積回路開発の初期の段階で行うことが要求される。しかし、この段階では、集積回路の設計が完全に定まっていないことが多く、この設計を変更した場合には、図26のフローに従って解析処理を再度行わなければならず、設計を変更する度に膨大な時間がかかってしまうという問題があった。
【0022】
本発明は、このような問題を解決するために成されたものであり、複雑な構成を有する集積回路においても、実際の配線に沿ったリピータ挿入の最適解を正確かつ短時間で得ることができるようにすることを目的とする。
【0023】
【課題を解決するための手段】
本発明の集積回路におけるリピータ挿入装置および方法では、集積回路内の配線の経路および所定の物理量の情報をもとに、配線上に有する各ノード毎に配線抵抗と配線容量との関係を表したグラフを作成し、作成されたグラフ上の点と、配線抵抗−配線容量平面で前記グラフよりも大きい配線容量値となる所定の座標の3つの点とを頂点とする矩形の面積が最大となる点をリピータの挿入位置として求めるようにしている。
このように構成することにより、処理の負荷が大きい複雑な回路シミュレータや、静的・動的遅延解析ツールを用いなくても、最適なリピータの挿入位置を正確かつ高速に計算することが可能となる。
【0024】
【発明の実施の形態】
以下、本発明の一実施形態を図面に基づいて説明する。
図1は、本実施形態による集積回路におけるリピータ挿入装置の要素的特徴を示す機能構成ブロック図である。また、図2は、本実施形態によるリピータ挿入方式の理論を説明するための図である。なお、本実施形態では、挿入するリピータとして、データの論理反転を考慮しなくても良いバッファタイプのリピータ(リピータバッファ)を用いるものとするが、インバータタイプのリピータを用いても良いことは言うまでもない。
【0025】
まず、図2を用いて本実施形態のリピータ挿入理論について説明する。図2において、(a)はリピータ挿入前のモデルを示し、(b)はリピータ挿入後のモデルを示す。図2(a)に示すリピータ挿入前においては、駆動側のドライバ11と受け側のレシーバ12との間に配線長Lの配線13が接続されている。この配線13の単位長さ当たりの抵抗をR0 、単位長さ当たりの容量をC0 とした場合、ドライバ11の入力からレシーバ12の手前までの50%遅延時間Tinitは、エルモアの遅延式を用いて次の式(3) で表される。
【0026】
【数3】
【0027】
この式(3) において、Ronはドライバ11のオン抵抗、Ctrはレシーバ12の入力ゲート容量である。また、α,γはそれぞれドライバ11およびレシーバ12のゲートサイズの比率を表すパラメータであり、基本ゲートサイズの係数倍であることを示す。
【0028】
図2(b)に示すように、配線13の途中、例えばドライバ11側から長さL1 のところで配線13を短い配線14,15に分割し、この分割点にゲートサイズの比率がβのリピータ16を挿入したとする。この場合、ドライバ11の入力からリピータ16の手前までの遅延時間をT1 、リピータ16の入力からレシーバ12の手前までの遅延時間をT2 とすると、これらの遅延時間T1 ,T2 はそれぞれエルモアの遅延式を用いて次の式(4),(5) のように表される。
【0029】
【数4】
【0030】
したがって、リピータ16の挿入前後における遅延時間の差ΔTを求めると、次の式(6) のようになる。特に、ドライバ11、レシーバ12およびリピータ16のゲートサイズが全て同じであるとすると(α=β=γの場合)、式(6) は簡単になり、式(7) のように表される。
【0031】
【数5】
【0032】
図3に示すように、例えば横軸に抵抗値をとり、縦軸に容量値をとったr−c平面に上記式(7) をプロットすると、遅延時間差ΔTの式のイメージが分かりやすくなる。すなわち、式(7) の右辺は、配線14,15の線路長L1 ,L−L1 に依存しない第1項と依存性のある第2項とに分類される。このうち負の値である第1項は、リピータ16自身が持つ固有遅延量を表している。また、正の値である第2項は、図3の斜線中に白抜きで示す矩形の面積を表しており、リピータ16を挿入して速くなる遅延量を表している。
【0033】
したがって、リピータ16を挿入することにより、リピータ16自身が持つ固有遅延によって系の遅延時間は第1項の分だけ遅くなる。しかしながら、r−c平面の直線l上を動く点Pの決め方、すなわち、分割位置L1 の決め方によっては、白抜き矩形の面積が大きくなり、第2項分の時間が第1項分の遅延時間の遅れを打ち消して、ドライバ11とレシーバ12との間の転送時間を速くすることが可能である。
【0034】
なお、実際の集積回路では、ドライバ11、レシーバ12およびリピータ16のゲートサイズが全て同じであることは稀であるので、実際の集積回路にこの式(7) を当てはめることができる場合はあまり無いと考えられる。そこで、実際の集積回路に沿った式(6) のr−c平面を考えてみる。図4は、この式(6) とr−c平面との関係を示す図である。
【0035】
式(6) の右辺は、上記式(7) の第1項および第2項(※4)と同じ項と、ドライバ11とリピータ16のゲートサイズ差Ron(1/α−1/β)が反映された第3項(※1)と、リピータ16とレシーバ12の負荷容量差Ctr(γ−β)が反映された第4項(※2)と、上記ゲートサイズ差および負荷容量差の両方が反映された第5項(※3)とに分類される。
【0036】
この図4の場合は、分割位置L1 の決め方によって、リピータ16の固有遅延を表す第1項 [T0(β)+0.7RonCtr] よりも残りの第2〜5項(※1+※2+※3+※4)の方が大きければ、第1項分の遅延時間の遅れを打ち消してドライバ11とレシーバ12との間の転送時間を速くすることが可能である。よって、リピータ16を挿入して配線13上の転送時間を速くする問題は、白抜き矩形の面積が最大となる点Pを探し出す問題に置き換えられる。
【0037】
以上は、ドライバ11とレシーバ12との間の配線13に分岐がない場合の例であった。次に、配線の途中に分岐が存在する場合を例にとって説明する。図5は、配線の途中に分岐点Bを有するモデルおよび、そのモデルにおけるリピータ挿入前後の遅延時間差ΔTの式とr−c平面との関係を示す図である。
【0038】
配線の途中に分岐点Bが存在する場合は、その分岐点Bに接続される複数の部分枝17のうちの1つに着目し、残りの部分枝はレシーバ12の入力ゲート容量と配線容量の全てを足し込んで容量CB に置き換えて、分岐点Bにぶら下げる。この場合、図5に示すように、r−c平面上における抵抗値と容量値との関係を表す線分は、分岐点Bの位置で容量CB の分だけ非連続となって折れ線状になるが、グラフに表すことは可能である。
【0039】
この場合は、ドライバ11からレシーバ12に至るまでの配線抵抗および配線容量の値を、配線をノード毎に分割した各区間(図5中に▲1▼〜▲5▼で示すセグメント)毎に順にプロットしてそれぞれの区間方程式を決定する。このとき、区間▲1▼と区間▲5▼はそれぞれ、ドライバ11とリピータ16とのゲートサイズ差Ron(1/α−1/β)、リピータ16とレシーバ12との負荷容量差Ctr(γ−β)に依存し、この区間に点Pの最適解はあり得ない。よって、最適な点Pの位置を算出する場合にこの区間は考慮しなくても良いので、図5に示すような座標軸の変換を行う。
【0040】
残りの区間▲2▼〜▲4▼のうち、区間▲2▼の線分は、ドライバ11の入力から分岐点Bに至るまでの配線抵抗と配線容量とにより決定される線分である。区間▲3▼の線分は、分岐点Bに接続された着目枝以外の部分枝について、その総和の容量CB を与える線分である。また、区間▲4▼の線分は、分岐点Bから着目枝のレシーバ12に至るまでの配線抵抗と配線容量とにより決定される線分である。本実施形態では、このように決定したr−c平面の区間線分上で点Pを移動させ、そのとき作られる白抜き矩形の面積が最大となるポイントを見つける処理を行う。
【0041】
図6は、ドライバ11からレシーバ12の間にリピータ16を2つ挿入する場合の例を示す図である。この場合は、点P1 によって決まる白抜き矩形の面積と、点P2 によって決まる白抜き矩形の面積の総和が最大となる点P1 ,P2 をそれぞれ求める処理を行うことになる。
【0042】
以上のことを、例えばドライバ11からレシーバ12の間にN個の区間を有する配線中にN個のリピータ16を挿入する場合にも適用できるように、式を拡張して以下に説明する。N個の区間における区間線分の方程式をそれぞれ、
g1(r) =a1r+C1
g2(r) =a2r+C2
・・・・・・
gN(r) =aNr+CN
とする。また、それぞれの区間上に点P1 ,P2 ,…,PN が1つずつ存在するものとすると、それらの点P1 ,P2 ,…,PN によって決まる白抜き矩形の面積の総和Sr は、次の式(8) のように表される。
【0043】
【数6】
【0044】
ここで、式(8) 中におけるx1 ,x2 ,…,xN は、それぞれ点P1 ,P2 ,…,PN の位置を表す変数である。この式(8) を各位置変数x1 ,x2 ,…,xN で偏微分し、得られた結果を適当に並び替えると、式(9) のように表すことができる。この式(9) で表される行列式を計算し、x1 ,x2 ,…,xN の値を求めることにより、N個のリピータ16を挿入する最適な位置が見つかる。
【0045】
【数7】
【0046】
したがって、リピータ16を1個挿入した場合、2個挿入した場合、・・・N個挿入した場合の白抜き矩形の面積をそれぞれ計算し、その中で最も面積が大きくなったものを最適解として選ぶことにより、ドライバ11とレシーバ12との間に挿入するリピータ16の数と位置を求めることができる。なお、参考までに、リピータ16を1個、2個あるいは3個挿入した場合の点Pの最適な位置を次の表1に示しておく。
【0047】
【表1】
【0048】
次に、図1を用いて、上述のような本実施形態によるリピータ挿入方式を実現する装置の機能構成について説明する。
図1に示すように、本実施形態のリピータ挿入装置は、前処理部6、ネット抽出部7、r−cグラフ作成部8およびリピータ挿入解析部9を備えている。上記前処理部6は、更にリピータ挿入前遅延演算部10を備えている。
【0049】
これらの各ブロック6〜9は、遅延コンストレイント1、ネットリスト2、セルタイミングライブラリ3、配線容量・配線抵抗データ4および配置配線データベース5の各情報を用いて以下のような処理を行う。すなわち、本実施形態のリピータ挿入方式では、まず、集積回路の論理的なデータとなるネットリスト2が必要である。また、集積回路内のセルやマクロ、あるいはブロックやサブチップレベルの配置配線後にリピータ16の挿入を行うので、それらの配置座標などが分かる配置配線データベース5が必要である。
【0050】
また、リピータ16を挿入するネットは、配線が長く配線抵抗が支配的な領域であるので、配線容量・配線抵抗データ4も必要である。この配線容量・配線抵抗データ4は、メタル配線レイヤや配線の太さ、あるいは周囲の配線混雑具合などに応じて各ノード毎に設定される。また、リピータ16の挿入前後の遅延解析を行う上で、セルやマクロなどの固有遅延を表したセルタイミングライブラリ3も必要である。さらに、リピータ16の挿入時に、そのネットを速くするのか、遅くするのかなどを判断するために、遅延要求値である遅延コンストレイント1も必要となる。
【0051】
前処理部6は、リピータ挿入の解析を行う前に必要な解析処理を行う。特に、リピータ挿入前遅延演算部10において、リピータ16を挿入する前の状態について遅延解析を行い、ネット上における各ノードの実際の遅延時間を演算する。なお、ノードとは、ドライバ11からレシーバ12に至るまでのパスを幾つかに分割したそれぞれの位置を言う。ノードの数や位置は、要求する解析精度と解析にかかる処理時間とのトレードオフで任意に決めれば良いが、配線の分岐点は必ずノードとして含む必要がある。
【0052】
ネット抽出部7は、ネットリスト2が備える複数のネットの中から、長い配線を駆動しているネットを抽出する。これは、リピータ16を挿入すべきネットは、比較的配線が長く配線抵抗が遅延に効いているような領域だからである。以降の処理は、ここで抽出したネットのみを対象として行う。
【0053】
r−cグラフ作成部8は、ドライバ11からレシーバ12に至るまでの配線抵抗および配線容量の値を各配線セグメント毎にプロットして区間方程式を決定することにより、r−cグラフを作成する。なお、ここではr−cグラフを作成するとしているが、グラフそのものは作成せず、それに対応する区間方程式を作成するだけでも良いことは言うまでもない。
【0054】
リピータ挿入解析部9は、作成されたr−cグラフをもとに、r−cグラフの区間線分上で点Pを順次移動させ、そのとき作られる白抜き矩形の面積が最大となるポイントを見つける処理を行うことにより、リピータ16を挿入する数と位置を解析する。
【0055】
なお、図1に示した本発明による集積回路におけるリピータ挿入装置及び方法は、コンピュータのRAMやROMなどに記憶されたプログラムが動作することによって実現できる。このプログラムは本発明の実施形態に含まれる。
【0056】
具体的に、上記プログラムは、例えばCD−ROMのような記録媒体に記録し、或いは各種伝送媒体を介し、コンピュータに提供される。上記プログラムを記録する記録媒体としては、CD−ROM以外に、フロッピーディスク、ハードディスク、磁気テープ、光磁気ディスク、不揮発性メモリカード等を用いることができる。他方、上記プログラムの伝送媒体としては、プログラム情報を搬送波として伝搬させて供給するためのコンピュータネットワーク(LAN、インターネットの等のWAN、無線通信ネットワーク等)システムにおける通信媒体(光ファイバ等の有線回線や無線回線等)を用いることができる。
【0057】
また、コンピュータが供給されたプログラムを実行することにより上述の実施形態の機能が実現されるだけでなく、そのプログラムがコンピュータにおいて稼働しているOS(オペレーティングシステム)あるいは他のアプリケーションソフト等と共同して上述の実施形態の機能が実現される場合や、供給されたプログラムの処理の全てあるいは一部がコンピュータの機能拡張ボードや機能拡張ユニットにより行われて上述の実施形態の機能が実現される場合も、かかるプログラムは本発明の実施形態に含まれる。
【0058】
図7および図8は、本実施形態によるリピータ挿入アルゴリズムを詳細に示すフローチャートである。なお、このフローチャートの処理に入る前に、上述した遅延コンストレイント1、ネットリスト2、セルタイミングライブラリ3、配線容量・配線抵抗データ4および配置配線データベース5などのデータやライブラリを準備しておくことが必要である。
【0059】
図7において、まず最初にリピータ挿入の前処理を行う。すなわち、まずステップS11でネットリスト2の情報を読み込む。次のステップS12では、その読み込んだネットリスト2を対象として、セルタイミングライブラリ3、配線容量・配線抵抗データ4および配置配線データベース5の各情報に基づいてリピータ挿入前の遅延解析を行い、各ノードのスルーレートおよび実際の遅延時間を算出する。そして、ステップS13で、上記算出されたスルーレート20を記録媒体に格納するとともに、ステップS14で、上記算出されたリピータ挿入前の実際の遅延時間21を記録媒体に格納する。以上がリピータ挿入前処理である。
【0060】
次に、ステップS15〜S17において、上記ステップS11で読み込んだネットリスト2の中から、長い配線を駆動しているネットを抽出し、それをリピータ挿入候補ネットのリスト22として記録媒体に格納する。すなわち、個々のネット毎にネットの総容量からネット長を見積もり、そのネット長がある基準よりも長いものを抽出することにより、リピータ挿入による対処を行うべき長い配線のネットの候補を絞り込む。
【0061】
以下、このように抽出された複数のネット候補Nrep の1つ1つに対して、ステップS18〜図8のステップS39のループ処理を行う。この中で、まずステップS19〜S21では、リピータ挿入候補として抽出されたネット候補Nrep のスルーレートをチェックする。すなわち、ステップS19では、上記ステップS13で記録媒体に格納された各ネットのスルーレート20のうち、現在注目しているネット候補Nrep の入力スルーレートをチェックする。
【0062】
そして、ステップS20で、そのネット候補Nrep のスルーレートが基準値よりも大きいか否かを判断し、大きければステップS21に進み、警告メッセージを出力する。すなわち、本実施形態のリピータ挿入アルゴリズムでは、エルモア遅延式を利用してリピータ16の挿入位置を決めている。そのため、ドライバ11に入ってくる信号は、ステップファンクションを想定している。そこで、ネットの入力スルーレートが基準値よりも大きい場合には、エルモア遅延式のモデルに合わなくなることをメッセージとして出力する。
【0063】
このメッセージを受けたユーザは、必要に応じて集積回路の設計のやり直し(ネットリスト2、セルタイミングライブラリ3、配線容量・配線抵抗データ4、配置配線データベース5などの情報の更新)を行うことになる。なお、この警告メッセージを無視して処理を続行しても、著しく悪い結果は得られないが、そのネットについては最適なリピータ挿入位置には必ずしもならないことに注意しなければならない。
【0064】
次に、図8のステップS22〜S29において、抽出されたネット候補Nrep のr−cグラフを作成する。すなわち、まずステップS22では、現在注目しているネット候補Nrep が持つ1つ以上のリーフノードをリーフノードリスト23として記録媒体に格納する。ここで、リーフノードとは、レシーバ12の直前にあるノードのことを言う。
【0065】
図9は、ある1つのネット候補Nrep およびそのr−cグラフの一例を示す図である。リピータ挿入すべきネット候補Nrep として抽出された1つのネットが図9(a)のように構成されているとする。このネットは、配線の途中に分岐点を有しており、1つのドライバ11から2つのレシーバ12へと2つのパスが形成されている。ドライバ11の直後のノードをルートノードと呼び、レシーバ12の直前のノードをリーフノードと呼ぶ。この図9(a)に示すネットにおいて一方のレシーバ12に至るパスには、これらのルートノードおよびリーフノードの他に、3つのノードNi ,Ni+1 ,Ni+2 が含まれている。
【0066】
上記ステップS22でリーフノードリスト23を記録媒体に格納したら、その1つ以上のリーフノードの1つ1つに対して、ステップS23〜S29のループ処理を実行する。この中で、まずステップS24では、ルートノードから1つのリーフノードまでパスを検索し、その途中に分岐点があるかどうかをステップS25で判断する。そして、分岐点があった場合は、ステップS26に進む。
【0067】
ステップS26では、現在注目しているリーフノード以外で、分岐点につながっている残りのリーフノードに至るパスの全ての容量(配線容量や入力ゲート容量)の総和CB を算出する。そして、ステップS27で、上記算出した総容量CB を分岐点に付加する。図9(a)の例では分岐点を有しているので、このステップS26、S27の処理を行うことになる。
【0068】
この場合、例えば一方のリーフノードiに至るパスに注目していた場合、分岐点から他方のリーフノードi+1までの部分枝の総容量CB を算出し、それを分岐点に付加する。また、ステップS23〜S29のループ処理が1回終わって、他方のリーフノードi+1に至るパスに注目していた場合には、分岐点から一方のリーフノードiまでの部分枝の総容量CB ’を算出し、それを分岐点に付加することになる。
【0069】
上記ステップS25で分岐点がないと判断した場合、および分岐点があると判断した場合において上記ステップS27の処理を行った後は、ステップS28に進む。ステップS28では、配線セグメントごとに区間方程式を作成することにより、r−cグラフを作成する。図9(b)は、図9(a)に示すネットにおいて一方のリーフノードiに注目したときに作成されるr−cグラフの例を示す図である。r−cグラフ上において、配線セグメントは基本的にはノード間の位置に対応するが、分岐点においてはr−c平面上では容量軸方向への「飛び」として現れる。
【0070】
このようにしてr−cグラフを作成したら、次にステップS30〜S39のループ処理において、図6に示したようにr−cグラフの区間線分上で点Pを順次移動させ、そのとき作られる白抜き矩形の面積が最大となるポイントを見つける処理を行うことにより、リピータ16を挿入する数と位置を解析する。
【0071】
すなわち、まず、挿入するリピータ16の個数を1個(N=1)として、ステップS31で後述するリピータ挿入アルゴリズムを実行し、リピータ16を1個挿入したことにより速くなる遅延の最適な利得Srep (上記白抜き矩形の最大面積)を計算する。そして、ステップS32で、その計算した利得Srep がリピータ1個分の固有遅延よりも大きいかどうかを判断する。ここで、リピータ16の固有遅延よりも利得Srep の方が大きくない場合には、リピータ16を挿入する効果がないとしてミスとなる。
【0072】
一方、リピータ16の固有遅延よりも利得Srep の方が大きい場合には、リピータ16を挿入することになる。この場合は、ステップS33に進み、今回リピータN個について計算した利得Srep [N] の方が前回のループでリピータN−1個について計算した利得Srep [N-1] よりも大きいかどうかを判断する。そして、今回計算した利得Srep の方が大きい場合は、リピータ16の数を更に1個増やせば利得Srep がまだ大きくなる可能性があるので、ステップS34に進み、リピータ16の個数を1つ増やしてステップS35からステップS30へと戻る。なお、今の例ではリピータ16の数を1個(N=1)としており、前回のループ処理はないので、必ずステップS34へ進むことになる。
【0073】
ステップS35からステップS30へと戻った場合は、ステップS31で、挿入するリピータ16の個数を2個(N=2)として後述するリピータ挿入アルゴリズムを実行し、リピータ16を2個挿入したことにより速くなる遅延の最適な利得Srep を計算する。そして、ステップS32で、その計算した利得Srep がリピータ2個分の固有遅延よりも大きいかどうかを判断し、その結果に応じて処理を分岐する。以下同様にして、挿入するリピータ16の個数を1個ずつ増やしながらステップS30〜S35のループ処理を繰り返し実行していく。
【0074】
そして、ステップS33で、N個のリピータ16を挿入する場合について計算した利得Srep [N] が、N−1個のリピータ16を挿入する場合について計算した利得Srep [N-1] よりも大きくならなくなったら、リピータ16をN−1個挿入する場合の挿入数が最適ということになる。この場合は、ステップS36に進み、遅延コンストレイント1とリピータ挿入前の実際の遅延時間21とを用いて、 Slack値(=遅延要求値−実際の遅延)を計算する。
【0075】
次のステップS37では、上記計算した Slack値が小さくなっているかどうかを判断する。 Slack値が小さくなっていなければ、リピータ16を挿入する効果がないのでミスとなる。一方 Slack値が小さくなっていれば、リピータ16を挿入する効果があるので、ステップS38に進み、リピータ16をN−1個挿入するとしたときに計算したリピータ16の挿入位置を解析の結果として返す。このようにして1つのネットに関する処理が終わると、ステップS39から図7のステップS18に戻り、次のネットへと処理を進める。
【0076】
図23は、リピータ16の挿入個数に応じたリピータ16の固有遅延と利得との関係を示す図である。図23に示すように、リピータ16の挿入個数を多くしていくと、リピータ16の固有遅延はN倍ずつ大きくなっていく。一方、利得Srep は、リピータ16の挿入個数を多くしていくに従って対数的に大きくなっていき、リピータ16の挿入個数に対する利得Srep の増分は徐々に減ってくる。
【0077】
そのため、ある挿入個数を境界として固有遅延の方が利得Srep を上回ってしまい、それ以上リピータ16を挿入すると却って遅延量が大きくなってしまうことになる。そこで、上記ステップS37のような判断を行い、適切なリピータ個数を求めるようにしている。
【0078】
以下に、上記図8のステップS31におけるリピータ挿入アルゴリズムの詳細な例を示す。なお、ここでは、リピータ16を1個挿入する場合の利得計算アルゴリズムを図10および図11に示し、リピータ16を2個挿入する場合の利得計算アルゴリズムを図12および図13に示し、リピータ16を3個挿入する場合の利得計算アルゴリズムを図14および図15に示す。
【0079】
リピータ16を1個挿入する場合の利得Srep は、図10(a)に示すように1つの白抜き矩形の面積S1 と等しくなる(Srep =S1 )。ここで、配線の端から抵抗xの分だけ進んだ位置にリピータ16を挿入した場合における白抜き矩形の面積S1 は、
S1 =x(C0 −g1 (x) )=a1 x(R1 −x)
ただし、R1 =(C0 −C1 )/a1
と表せる。なお、C0 は配線の単位長さ当たりの容量、C1 は区間線分の容量軸との切片、a1 は区間線分の傾きである。
【0080】
また、最適な利得Srep を求める際には、図10(b)に示すように複数のセグメントi(i=I〜V)ごとに処理を進めていく。この場合において、1つのセグメントiについて解析しているときに、得られたxの値がそのセグメントiの範囲内かどうか、つまり、Ri min ≦x≦Ri max かどうかを判断し、この範囲を越えたxの解が得られたときには、そのセグメントiにおいてはxの値をRi min またはRi max として処理を進めていく。
【0081】
すなわち、図11に示すように、ネット上の複数のセグメントiの1つ1つ(i=1〜E)に対して、ステップS41〜S52のループ処理を繰り返し行う。この中で、まずステップS42では、1つのセグメントiにおける区間線分の傾きおよび容量軸切片にそれぞれ値a1 ,C1 を代入し、ステップS43では、当該区間線分(正確にはその区間線分の延長線上にある直線全てを含む)上で白抜き矩形の面積S1 が最大となるxの値を計算する。
【0082】
そして、ステップS44で、上記計算したxの値がRi min ≦x≦Ri max を満たすかどうかを判断する。これを満たす場合には、計算されたxの値が当該セグメントiの範囲内にきちんと入っているということなので、ステップS45に進んでその計算されたxの値をそのまま採用する。一方、上記計算されたxの値がRi min ≦x≦Ri max を満たさない場合は、計算されたxの値が当該セグメントiの範囲内に入っていないということなので、ステップS46に進み、そのxの値がRi min より小さいかどうかを更に判断する。
【0083】
ここで、上記計算されたxの値がRi min より小さい場合は、ステップS47に進み、xの値としてRi min を採用する。また、上記ステップS46でxの値がRi min より小さくないと判断された場合は、ステップS48に進み、xの値としてRi max を採用する。以上のようにステップS45、ステップS47あるいはステップS48において採用するxの値が決まったら、ステップS49に進み、求めたxの値から白抜き矩形の面積S1 を計算することにより、利得Srep を求める。
【0084】
次のステップS50では、上記ステップS49にてあるセグメントについて計算された利得Srep が、これまで他のセグメントについて計算された利得Srep と比べて大きいかどうかを判断する。今回計算した利得Srep がこれまで計算した中で最大であれば、ステップS51に進み、そのときの利得Srep およびxの値を記録媒体に記憶した後、ステップS52からステップS41に戻り、次のセグメントi+1へと処理を進める。
【0085】
このようなループ処理を繰り返し行うことにより、リピータ16を1個挿入する場合における最適なxの値と利得Srep が得られる。例えば、図10(b)において、xの最適解が2番目のセグメントII上にあるとすると、セグメントIについて処理しているときにはステップS48によりxの値としてRi max が採用され、セグメントIIについて処理しているときにはステップS45によりxの値がそのまま採用され、セグメントIII について処理しているときにはステップS47によりxの値としてRi min が採用される。そして、セグメントIIについて処理しているときのxの値および利得Srep が、リピータ16を1個挿入する場合の最適解として最終的に記録媒体に記憶されることになる。
【0086】
また、リピータ16を2個挿入する場合の利得Srep は、図12(a)に示すように2つの白抜き矩形の面積S1 ,S2 の合計面積と等しくなる(Srep =S1 +S2 )。この場合、図12(b)に示すように、2つのリピータ16を挿入するセグメント(区間番号)をそれぞれi,jとした場合に、前段のセグメントiと後段のセグメントjはi≦jの関係にあるものとする。
【0087】
ここで、配線の端から抵抗xの分だけ進んだ位置に前段のリピータ16を挿入した場合における白抜き矩形の面積S1 は、
S1 =x(C0 −g1 (x) )=a1 x(R1 −x)
ただし、R1 =(C0 −C1 )/a1
と表せる。
【0088】
また、配線の端から抵抗yの分だけ進んだ位置に後段のリピータ16を挿入した場合における白抜き矩形の面積S2 は、
S2 =y(C0 −g2 (y) )=a2 (y−x)(R2 −y)
ただし、R2 =(C0 −C2 )/a2
と表せる。なお、C0 は配線の単位長さ当たりの容量、C1 ,C2 はそれぞれの区間線分の容量軸との切片、a1 ,a2 はそれぞれの区間線分の傾きである。
【0089】
また、リピータ16を2個挿入する場合における最適な利得Srep を求める際にも、図12(c)に示すように複数のセグメントごとに処理を進めていく。
【0090】
すなわち、図13に示すように、前段のリピータ16に対してネット上の複数のセグメントiの1つ1つ(i=1〜E)割り当てるとともに、後段のリピータ16に対してネット上の複数のセグメントjの1つ1つ(j=i〜E)割り当てながら、ステップS61〜S79のループ処理を繰り返し行う。この中で、まずステップS63では、1つのセグメントiにおける区間線分の傾きおよび容量軸切片にそれぞれ値a1 ,C1 を代入するとともに、1つのセグメントjにおける区間線分の傾きおよび容量軸切片にそれぞれ値a2 ,C2 を代入する。
【0091】
次のステップS64では、当該セグメントi,jの区間線分(正確にはこれらの区間線分の延長線上にある直線全てを含む)上で白抜き矩形の面積S1 ,S2 の合計面積が最大となるx,yの値を計算する。そして、ステップS65で、上記ステップS64にて計算されたxの値がRi min ≦x≦Ri max を満たすかどうかを判断する。
【0092】
これを満たす場合には、計算されたxの値が当該セグメントiの範囲内にきちんと入っているということなので、ステップS66に進んでその計算されたxの値をそのまま採用する。一方、上記計算されたxの値がRi min ≦x≦Ri max を満たさない場合は、計算されたxの値が当該セグメントiの範囲内に入っていないということなので、ステップS67に進み、そのxの値がRi min より小さいかどうかを更に判断する。
【0093】
ここで、上記計算されたxの値がRi min より小さい場合は、ステップS68に進み、xの値としてRi min を採用する。また、上記ステップS67でxの値がRi min より小さくないと判断された場合は、ステップS69に進み、xの値としてRi max を採用する。以上のようにステップS66、ステップS68あるいはステップS69において採用するxの値が決まったら、ステップS70に進み、上記ステップS64にて計算されたyの値がRj min ≦y≦Rj max を満たすかどうかを判断する。
【0094】
これを満たす場合には、計算されたyの値が当該セグメントjの範囲内にきちんと入っているということなので、ステップS71に進んでその計算されたyの値をそのまま採用する。一方、上記計算されたyの値がRj min ≦y≦Rj max を満たさない場合は、計算されたyの値が当該セグメントjの範囲内に入っていないということなので、ステップS72に進み、そのyの値がRj min より小さいかどうかを更に判断する。
【0095】
ここで、上記計算されたyの値がRj min より小さい場合は、ステップS73に進み、yの値としてRj min を採用する。また、上記ステップS72でyの値がRj min より小さくないと判断された場合は、ステップS74に進み、yの値としてRj max を採用する。以上のようにステップS71、ステップS73あるいはステップS74において採用するyの値も決まったら、ステップS75に進み、求めたx,yの値から白抜き矩形の面積S1 ,S2 を計算することにより、利得Srep (=S1 +S2 )を求める。
【0096】
次のステップS76では、上記ステップS75にてあるセグメントについて計算された利得Srep が、これまで他のセグメントについて計算された利得Srep と比べて大きいかどうかを判断する。今回計算した利得Srep がこれまで計算した中で最大であれば、ステップS77に進み、そのときの利得Srep およびx,yの値を記録媒体に記憶した後、ステップS78からステップS62に戻り、次のセグメントj+1へと処理を進める。また、1つのセグメントiについて全てのセグメントj(j=i〜E)の処理が終わったら、ステップS79からステップS61に戻り、次のセグメントi+1へと処理を進める。このようなi,jを変数としたループ処理を繰り返し行うことにより、リピータ16を2個挿入する場合における最適なx,yの値と利得Srep が得られる。
【0097】
また、リピータ16を3個挿入する場合の利得Srep は、図14(a)に示すように3つの白抜き矩形の面積S1 ,S2 ,S3 の合計面積と等しくなる(Srep =S1 +S2 +S3 )。この場合、図14(b)に示すように、3つのリピータ16を挿入するセグメント(区間番号)をそれぞれi,j,kとした場合に、前段のセグメントiと中段のセグメントjはi≦jの関係にあり、中段のセグメントjと後段のセグメントkはj≦kの関係にあるものとする。
【0098】
ここで、配線の端から抵抗xの分だけ進んだ位置に前段のリピータ16を挿入した場合における白抜き矩形の面積S1 は、
S1 =x(C0 −g1 (x) )=a1 x(R1 −x)
ただし、R1 =(C0 −C1 )/a1
と表せる。
【0099】
また、配線の端から抵抗yの分だけ進んだ位置に中段のリピータ16を挿入した場合における白抜き矩形の面積S2 は、
S2 =y(C0 −g2 (y) )=a2 (y−x)(R2 −y)
ただし、R2 =(C0 −C2 )/a2
と表せる。
【0100】
また、配線の端から抵抗zの分だけ進んだ位置に後段のリピータ16を挿入した場合における白抜き矩形の面積S3 は、
S3 =z(C0 −g3 (z) )=a3 (z−y)(R3 −z)
ただし、R3 =(C0 −C3 )/a3
と表せる。なお、C0 は配線の単位長さ当たりの容量、C1 ,C2 ,C3 はそれぞれの区間線分の容量軸との切片、a1 ,a2 、a3 はそれぞれの区間線分の傾きである。
【0101】
また、リピータ16を3個挿入する場合における最適な利得Srep を求める際にも、図14(c)に示すように複数のセグメントごとに処理を進めていく。
【0102】
すなわち、図15に示すように、前段のリピータ16に対してネット上の複数のセグメントiの1つ1つ(i=1〜E)割り当て、中段のリピータ16に対してネット上の複数のセグメントjの1つ1つ(j=i〜E)割り当て、更に後段のリピータ16に対してネット上の複数のセグメントkの1つ1つ(k=j〜E)割り当てながら、ステップS81〜S106のループ処理を繰り返し行う。
【0103】
この中で、まずステップS84では、1つのセグメントiにおける区間線分の傾きおよび容量軸切片にそれぞれ値a1 ,C1 を代入し、1つのセグメントjにおける区間線分の傾きおよび容量軸切片にそれぞれ値a2 ,C2 を代入し、1つのセグメントkにおける区間線分の傾きおよび容量軸切片にそれぞれ値a3 ,C3 を代入する。
【0104】
次のステップS85では、当該セグメントi,j,kの区間線分(正確にはこれらの区間線分の延長線上にある直線全てを含む)上で白抜き矩形の面積S1 ,S2 ,S3 の合計面積が最大となるx,y,zの値を計算する。そして、ステップS86で、上記ステップS85にて計算されたxの値がRi min ≦x≦Ri max を満たすかどうかを判断する。
【0105】
これを満たす場合には、計算されたxの値が当該セグメントiの範囲内にきちんと入っているということなので、ステップS87に進んでその計算されたxの値をそのまま採用する。一方、上記計算されたxの値がRi min ≦x≦Ri max を満たさない場合は、計算されたxの値が当該セグメントiの範囲内に入っていないということなので、ステップS88に進み、そのxの値がRi min より小さいかどうかを更に判断する。
【0106】
ここで、上記計算されたxの値がRi min より小さい場合は、ステップS89に進み、xの値としてRi min を採用する。また、上記ステップS88でxの値がRi min より小さくないと判断された場合は、ステップS90に進み、xの値としてRi max を採用する。以上のようにステップS87、ステップS89あるいはステップS90において採用するxの値が決まったら、ステップS91に進み、上記ステップS85にて計算されたyの値がRj min ≦y≦Rj max を満たすかどうかを判断する。
【0107】
これを満たす場合には、計算されたyの値が当該セグメントjの範囲内にきちんと入っているということなので、ステップS92に進んでその計算されたyの値をそのまま採用する。一方、上記計算されたyの値がRj min ≦y≦Rj max を満たさない場合は、計算されたyの値が当該セグメントjの範囲内に入っていないということなので、ステップS93に進み、そのyの値がRj min より小さいかどうかを更に判断する。
【0108】
ここで、上記計算されたyの値がRj min より小さい場合は、ステップS94に進み、yの値としてRj min を採用する。また、上記ステップS93でyの値がRj min より小さくないと判断された場合は、ステップS95に進み、yの値としてRj max を採用する。以上のようにステップS92、ステップS94あるいはステップS95において採用するyの値が決まったら、ステップS96に進み、上記ステップS85にて計算されたzの値がRk min ≦z≦Rk max を満たすかどうかを判断する。
【0109】
これを満たす場合には、計算されたzの値が当該セグメントkの範囲内にきちんと入っているということなので、ステップS97に進んでその計算されたzの値をそのまま採用する。一方、上記計算されたzの値がRk min ≦z≦Rk max を満たさない場合は、計算されたzの値が当該セグメントkの範囲内に入っていないということなので、ステップS98に進み、そのzの値がRk min より小さいかどうかを更に判断する。
【0110】
ここで、上記計算されたzの値がRk min より小さい場合は、ステップS99に進み、zの値としてRk min を採用する。また、上記ステップS98でzの値がRk min より小さくないと判断された場合は、ステップS100に進み、zの値としてRk max を採用する。以上のようにステップS97、ステップS99あるいはステップS100において採用するzの値も決まったら、ステップS101に進み、求めたx,y,zの値から白抜き矩形の面積S1 ,S2 ,S3 を計算することにより、利得Srep (=S1 +S2 +S3 )を求める。
【0111】
次のステップS102では、上記ステップS101にてあるセグメントについて計算された利得Srep が、これまで他のセグメントについて計算された利得Srep と比べて大きいかどうかを判断する。今回計算した利得Srep がこれまで計算した中で最大であれば、ステップS103に進み、そのときの利得Srep およびx,y,zの値を記録媒体に記憶した後、ステップS104からステップS83に戻り、次のセグメントk+1へと処理を進める。
【0112】
また、1つのセグメントjについて全てのセグメントk(k=j〜E)の処理が終わったら、ステップS105からステップS82に戻り、次のセグメントj+1へと処理を進める。また、1つのセグメントiについて全てのセグメントj(j=i〜E)の処理が終わったら、ステップS106からステップS81に戻り、次のセグメントi+1へと処理を進める。このようなi,j,kを変数としたループ処理を繰り返し行うことにより、リピータ16を3個挿入する場合における最適なx,y,zの値と利得Srep が得られる。
【0113】
以上詳しく説明したように、本実施形態では、分岐点やメタル乗り換えなどを含む実際の配線に沿ってr−cグラフを作成し、このr−cグラフの区間線分上で点Pを順次移動させながら、そのとき作られる白抜き矩形の面積が最大となるポイントを見つける処理を行うことで、ネット上でリピータ16を挿入する数と位置を解析するようにしている。
【0114】
本実施形態でもループ処理による繰り返し演算を行うが、これは、矩形の面積を求める単純な式に異なるパラメータを順次与えていくだけの非常に単純なループ処理である。また、この計算では配線の経路や配線抵抗、配線容量などの簡単な物理量のみを利用している。そのため、リピータやディレイゲートを仮想的に挿入して試行錯誤していく従来の方式に比べて、最適解の算出方法が非常に簡単であり、処理の負荷を格段に小さくすることができる。また、複数あるネットのうち、配線長が比較的長いネット候補Nrep のみを解析の対象としているので、本来的に解析が不要なネットについては処理を省略することができる。
【0115】
また、本実施形態では、白抜き矩形の面積を求める際に、ドライバ11、レシーバ12およびリピータ16のゲートサイズを表すα、β、γの値をそれぞれ異なる値に設定できるようにするとともに、配線容量・配線抵抗データ4によって配線レイヤに応じた容量値、抵抗値を設定できるようにしている。さらに、分岐点においては、注目している部分枝以外の他の部分枝については総容量CB に置き換えて計算上に反映するようにしているので、実際の配線に沿ったモデルに従って解析を行うことができる。
【0116】
したがって、本実施形態によれば、複雑な構成を有する集積回路においても、実際の配線に沿ったリピータ挿入の最適解を正確かつ短時間で得ることができるようになる。また、本実施形態のリピータ挿入方式は、配線の形状や経路が概略的にしか求められない設計初期のフロアープランや論理合成のネットであっても、r−cグラフのゲートのオン抵抗と入力容量と固有遅延の情報さえあれば計算することができる。そのため、本実施形態の手法を設計の上流(初期)工程から下流(後期)工程へと広範囲に適用することで、これまで手戻りの作業負担が大きかったリピータの挿入配置問題を極めて少ない負担で解決することができるようになる。
【0117】
次に、本発明の他の実施形態について説明する。以上に述べた実施形態では、1つのネット上に分岐点があった場合に、その分岐点に接続される複数の部分枝のうちの1つに注目し、それ以外の部分枝については総容量CB で置き換えて、それぞれのパスを個別に処理していた。これに対して、以下に述べる実施形態では、全ての部分枝に注目してそれぞれr−cグラフを作成し、これらを相互に用いて最適解を求める。
【0118】
図16は、本実施形態にて用いる1つのネットの例およびこれから作られるr−cグラフの例を示す図であり、(a)はネットの一例を示し、(b)はr−cグラフの一例を示している。図16(a)に示すネットでは、配線の途中に分岐点を有しており、1つのドライバ11から2つのレシーバ12へと2つのパスが形成されている。すなわち、ルートノードOからノードN1 ,N2 ,N4 を介してリーフノードN5 に至るA→Cのパスと、ルートノードOからノードN1 ,N2 ,N4 ’を介してリーフノードN5 ’に至るA→Bのパスとを有している。
【0119】
これらの2つのパスに注目してそれぞれr−cグラフを作成すると、図16(b)のようになる。ここで、パスA→Cのr−cグラフを作成するときは、分岐点から点Bに至る部分枝の全容量を容量CB に置き換えて分岐点にぶら下げる。また、パスA→Bのr−cグラフを作成するときは、分岐点から点Cに至る部分枝の全容量を容量CB ’に置き換えて分岐点にぶら下げる。このようにして2つのr−cグラフを作成したら、R0 C0 積が大きなパスから順にリピータ16の挿入解析を行う。この例の場合、A→Bのパスの方が遅延が大きいので、まずはこちらのパスに対してリピータ16の挿入解析を行う。
【0120】
図17は、このA→Bのパスに対してリピータ16の挿入解析を行っている状態を示す図である。この図17の例では、ルートノードOから抵抗x,yの分だけ進んだ位置に2つのリピータ16を挿入した場合に最適になる(白抜き矩形面積の総和が最大となる)との結果が得られた状態を示している。図18は、このx,yの位置に2つのリピータを挿入した様子を示す図である。
【0121】
図18に示したようにパスA→Bの間にリピータ16を挿入すると、パスA→C間の遅延がこの新たに挿入されたリピータ16の影響を受けることが考えられる。そこで、パスA→Bについてリピータ16の挿入解析を行った後は、解析の結果得られたx,yの位置に2つのリピータ16を仮想的に挿入してネットリスト2のデータベースを更新した上で、続いてパスA→Cについてリピータ16の挿入解析を行う。
【0122】
図18のようにネットの内容を更新すると、分岐点(ノードN2 )に挿入したリピータ16を仮想的にドライバとして見ることができる。よって、ここではルートノードOから分岐点であるノードN2 までのパスは省略し、ノードN2 を原点としてパスA→Cのr−cグラフを作成する。そして、このようにして作成したr−cグラフに基づいて、パスA→Cについてリピータ16の挿入解析を行うことにより、パスA→Cに挿入するリピータ16の最適解を求める。
【0123】
図19は、パスA→Cに対してリピータ16の挿入解析を行っている状態を示す図である。この図19の例では、ノードN2 から抵抗xの分だけ進んだ位置に1つのリピータ16を挿入した場合に最適になるとの結果が得られた状態を示している。図20は、この図19に基づく解析の結果得られたxの位置に1個のリピータ16を更に挿入した様子を示す図である。
【0124】
この図20に示したようにパスA→Cの間にリピータ16を更に1個挿入すると、パスA→B間の遅延がこの新たに挿入されたリピータ16の影響を受けることが考えられる。そこで、パスA→Cについてリピータ16の挿入解析を行った後は、解析の結果得られたxの位置に1つのリピータ16を仮想的に挿入してネットリスト2のデータベースを更新した上で、続いてパスA→Bについてリピータ16の挿入解析を再び行うことにより、既に挿入したリピータ16の位置の微調整を行う。
【0125】
以上のように、本実施形態では、分岐点に繋がる1つのパスについてリピータ16の挿入解析を行った後、ここで求められた位置にリピータ16を仮想的に挿入した上で、他のパスについてもリピータ16の挿入解析を行う。そして、この解析結果に基づいて他のパス上にリピータ16を仮想的に挿入した上で、既に解析したパスについて再度リピータ16の挿入解析を行うことで、挿入位置の微調整を行うようにしている。
【0126】
これにより、より精度の高いリピータ分割位置を求めることができるようになる。また、上記他のパスについてリピータ16の挿入解析を行うときは、図19のように原点を移動して必要なところに絞って解析処理を行うことができるので、処理の負荷を軽減することができ、解析時間を更に短くすることができる。
なお、ここでは、リピータ16の挿入解析を、パスA→B、パスA→C、パスA→Bと3回繰り返した時点で終了しているが、この繰り返し回数をこれより多くすることにより、解析精度をより向上させることができる。
【0127】
図22は、本実施形態によるリピータ挿入アルゴリズムを用いて解析を行ったときの結果と、回路シミュレータを用いて解析を行ったときの結果とを比較する図である。このうち図22(a)は、リピータ16を1個挿入した場合における分割位置までの配線長と遅延時間との関係を示し、図22(b)はリピータ16を2個挿入した場合における各分割位置までの配線長と遅延時間との関係を示している。
【0128】
図22(a)および(b)に示すグラフは、処理時間は非常に長くかかるが正確な結果を得ることが可能な“Spice ”という回路シミュレータを用いて計算した最適なリピータ16の挿入位置(遅延時間が最短となる位置)を表している。すなわち、図22(a)の場合はグラフが最下点となる位置が最適であり、図22(b)の場合は中央付近の小さなエリア内の位置が最適であることを示している。
【0129】
これに対して、本実施形態のリピータ挿入アルゴリズムを用いて解析した結果得られた挿入位置は、図22(a)および(b)中に●印で示してある。これから分かるように、本実施形態によるリピータ挿入アルゴリズムで処理を行った解析結果は、極めて信頼性のある回路シミュレータで処理を行った解析結果とほぼ同じ位置を表している。つまり、本実施形態によるアルゴリズムでも正確な結果を得ることができることを示している。
【0130】
なお、以上に説明した各実施形態は、何れも本発明を実施するにあたっての具体化の一例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその精神、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
【0131】
本発明の様々な形態をまとめると、以下のようになる。
(1)集積回路内の配線に挿入するリピータの数および位置を解析する集積回路におけるリピータ挿入装置であって、
上記集積回路内の配線の経路および所定の物理量の情報をもとに、上記配線上に有する各ノード毎に配線抵抗と配線容量との関係を表したグラフを作成するグラフ作成手段と、
上記グラフ作成手段により作成されたグラフ上の点で、当該グラフ上の点を1つの角とした矩形の面積が最大となる点を上記リピータの挿入位置として求めるリピータ挿入解析手段とを備えることを特徴とする集積回路におけるリピータ挿入装置。
【0132】
(2)上記グラフ作成手段は、上記配線の途中に分岐点が存在する場合は、上記分岐点に接続される複数の部分枝のうちの1つに着目し、その他の部分枝については、その全容量を計算して上記分岐点に付加することにより当該全容量に置き換えることを特徴とする上記(1)に記載の集積回路におけるリピータ挿入装置。
【0133】
(3)上記所定の物理量は、配線レイヤに応じた配線抵抗、配線容量の情報を含むことを特徴とする上記(1)または(2)に記載の集積回路におけるリピータ挿入装置。
【0134】
(4)上記リピータ挿入解析手段は、配線の駆動側のドライバ、負荷側のレシーバおよび挿入するリピータに関してそれぞれ任意に設定されたサイズの下で上記矩形の面積を求めることを特徴とする上記(1)〜(3)の何れか1項に記載の集積回路におけるリピータ挿入装置。
【0135】
(5)上記リピータ挿入解析手段は、上記リピータを複数個挿入する場合には、上記グラフ作成手段により作成されたグラフ上の複数の点をそれぞれ1つの角とした複数の矩形の総面積が最大となる点を複数のリピータの挿入位置として求めることを特徴とする上記(1)〜(4)の何れか1項に記載の集積回路におけるリピータ挿入装置。
【0136】
(6)上記リピータ挿入解析手段は、上記リピータを1個〜N個挿入する場合についてそれぞれ解析処理を行い、その中で上記矩形の面積が最大となるときのリピータの数および挿入位置を最適解として求めることを特徴とする上記(5)に記載の集積回路におけるリピータ挿入装置。
【0137】
(7)上記グラフ作成手段および上記リピータ挿入解析手段は、上記配線の途中に分岐点が存在する場合は、上記分岐点に接続される複数の部分枝のうち1つに着目して上記グラフの作成およびリピータ挿入の解析を行った後、得られた位置に上記リピータを仮想的に挿入した上で、他の部分枝に着目して上記グラフの作成およびリピータ挿入の解析を行うという処理を繰り返し実行することを特徴とする上記(1)〜(6)の何れか1項に記載の集積回路におけるリピータ挿入装置。
【0138】
(8)上記集積回路内に含まれる複数の配線の中から配線長が基準値よりも長い配線を抽出する配線抽出手段を備え、
上記グラフ作成手段および上記リピータ挿入解析手段は、上記配線抽出手段により抽出された配線に対してのみ処理を実行することを特徴とする上記(1)〜(7)の何れか1項に記載の集積回路におけるリピータ挿入装置。
【0139】
(9)集積回路内の配線に挿入するリピータの数および位置を解析する集積回路におけるリピータ挿入方法であって、
上記集積回路内の配線の経路および所定の物理量の情報をもとに、上記配線上に有する各ノード毎に配線抵抗と配線容量との関係を表したグラフを作成するステップと、
上記作成されたグラフ上の点で、当該グラフ上の点を1つの角とした矩形の面積が最大となる点を上記リピータの挿入位置として求めるステップとを有することを特徴とする集積回路におけるリピータ挿入方法。
【0140】
(10)上記配線の途中に分岐点が存在する場合は、上記分岐点に接続される複数の部分枝のうちの1つに着目し、その他の部分枝については、その全容量を計算して上記分岐点に付加することにより当該全容量に置き換えて上記グラフを作成することを特徴とする上記(9)に記載の集積回路におけるリピータ挿入方法。
【0141】
(11)上記所定の物理量は、配線レイヤに応じた配線抵抗、配線容量の情報を含むことを特徴とする上記(9)または(10)に記載の集積回路におけるリピータ挿入方法。
【0142】
(12)上記配線の駆動側のドライバ、負荷側のレシーバおよび挿入するリピータに関してそれぞれ任意に設定されたサイズの下で、上記グラフ上の点を1つの角とした矩形の面積を求めることを特徴とする上記(9)〜(11)の何れか1項に記載の集積回路におけるリピータ挿入方法。
【0143】
(13)上記リピータを複数個挿入する場合には、上記グラフ作成手段により作成されたグラフ上の複数の点をそれぞれ1つの角とした複数の矩形の総面積が最大となる点を複数のリピータの挿入位置として求めることを特徴とする上記(9)〜(12)の何れか1項に記載の集積回路におけるリピータ挿入方法。
【0144】
(14)上記リピータを1個〜N個挿入する場合についてそれぞれ解析処理を行い、その中で上記矩形の面積が最大となるときのリピータの数および挿入位置を最適解として求めることを特徴とする上記(13)に記載の集積回路におけるリピータ挿入方法。
【0145】
(15)上記配線の途中に分岐点が存在する場合は、上記分岐点に接続される複数の部分枝のうち1つに着目して上記グラフの作成およびリピータ挿入の解析を行った後、得られた位置に上記リピータを仮想的に挿入した上で、他の部分枝に着目して上記グラフの作成およびリピータ挿入の解析を行うという処理を繰り返し実行することを特徴とする上記(9)〜(14)の何れか1項に記載の集積回路におけるリピータ挿入方法。
【0146】
(16)上記(1)の集積回路におけるリピータ挿入装置の各手段としてコンピュータを機能させるためのプログラムを記録したことを特徴とするコンピュータ読み取り可能な記録媒体。
(17)上記(9)の集積回路におけるリピータ挿入方法の処理手順をコンピュータに実行させるためのプログラムを記録したことを特徴とするコンピュータ読み取り可能な記録媒体。
【0147】
(18)上記(1)の集積回路におけるリピータ挿入装置の各手段としてコンピュータを機能させるためのプログラム。
(19)上記(9)の集積回路におけるリピータ挿入方法の処理手順をコンピュータに実行させるためのプログラム。
【0148】
【発明の効果】
以上説明したように本発明によれば、集積回路内の素子間を接続する配線に対して、r−cグラフを描いて作図的にリピータの挿入数および挿入位置を計算することができ、複雑な構成を有する集積回路においても、実際の配線に沿ったリピータ挿入の最適解を正確かつ短時間で得ることができるようになる。すなわち、この計算には、従来の回路シミュレータや遅延解析ツールのようなものを必要とせず、配線のメタル乗り換えや分岐などを正しく評価してリピータの挿入位置を決定することができる。
【図面の簡単な説明】
【図1】本実施形態による集積回路におけるリピータ挿入装置の要素的特徴を示す機能構成ブロック図である。
【図2】本実施形態によるリピータ挿入方式の理論を説明するための図である。
【図3】式(7) とr−c平面との関係を示す図である。
【図4】式(6) とr−c平面との関係を示す図である。
【図5】配線の途中に分岐点を有するモデルおよび、そのモデルにおけるリピータ挿入前後の遅延時間差の式とr−c平面との関係を示す図である。
【図6】ドライバからレシーバの間にリピータを2つ挿入する場合における点Pの算出例を示す図である。
【図7】本実施形態によるリピータ挿入アルゴリズムを詳細に示すフローチャートである。
【図8】本実施形態によるリピータ挿入アルゴリズムを詳細に示すフローチャートである。
【図9】ある1つのネットおよびそのr−cグラフの一例を示す図である。
【図10】リピータを1個挿入する場合における利得計算の例を示す図である。
【図11】リピータを1個挿入する場合における利得計算の処理例を示すフローチャートである。
【図12】リピータを2個挿入する場合における利得計算の例を示す図である。
【図13】リピータを2個挿入する場合における利得計算の処理例を示すフローチャートである。
【図14】リピータを3個挿入する場合における利得計算の例を示す図である。
【図15】リピータを3個挿入する場合における利得計算の処理例を示すフローチャートである。
【図16】他の実施形態にて用いる1つのネットの例およびこれから作られるr−cグラフの例を示す図である。
【図17】パスA→Bに対してリピータの挿入解析を行っている状態を示す図である。
【図18】パスA→Bに対してリピータを挿入した様子を示す図である。
【図19】パスA→Cに対してリピータの挿入解析を行っている状態を示す図である。
【図20】パスA→Cに対してリピータを挿入した様子を示す図である。
【図21】パスA→Bに対して再度リピータの挿入解析を行っている状態を示す図である。
【図22】本実施形態によるリピータ挿入方式を用いて解析を行ったときの結果と、回路シミュレータを用いて解析を行ったときの結果とを比較する図である。
【図23】リピータの挿入個数に応じたリピータの固有遅延と利得との関係を示す図である。
【図24】遅延方程式を解析的に求めて配線線路を等間隔に分割する方法を説明するための図である。
【図25】リピータ分割前の配線長とリピータ分割数との関係を示す図である。
【図26】遅延解析ツールによる処理手順を示すフローチャートである。
【図27】遅延解析ツールによる処理例を示す図である。
【符号の説明】
1 遅延コンストレイント
2 ネットリスト
3 セルタイミングライブラリ
4 配線容量・配線抵抗データ
5 配置配線データベース
6 前処理部
7 ネット抽出部
8 r−cグラフ作成部
9 リピータ挿入解析部
10 リピータ挿入前遅延演算部
11 ドライバ
12 レシーバ
13 配線
14,15 分割された配線
16 リピータ[0001]
BACKGROUND OF THE INVENTION
The present invention relates to a repeater insertion apparatus and method in an integrated circuit, and a recording medium. In particular, the present invention relates to a repeater insertion method for obtaining an optimum position and number of repeaters to be inserted in an integrated circuit having a relatively long wiring (wiring having a large RC delay), and is applicable to all integrated circuit devices having a CMOS or SOI structure. is there.
[0002]
[Prior art]
In recent years, integration of semiconductor devices has progressed, and the degree of integration has dramatically increased. As the degree of integration increases, the chip size also increases, and relatively long wiring is required to connect between elements (for example, between the driver on the drive side and the receiver on the load side) that are arranged at a distance in the chip. It is essential to provide it.
[0003]
On the other hand, in recent computer systems, a very large frequency of 800 MHz, 1 GHz, or the like has been used as a clock frequency serving as an operation reference of an internal circuit. Under such a large clock frequency, it is necessary to shorten the signal transfer time between elements, and how to suppress the transfer delay in a long wiring line is an important point in making a high-speed device. .
[0004]
For this purpose, a long wiring connecting the driver and the receiver is divided into a plurality of short wirings, and a buffer type or inverter type repeater having a signal driving capability is inserted at the division point. The conventional repeater insertion is (1) analytically determining the delay equation and dividing the wiring into equal intervals, or (2) the delay analysis tool virtually inserting repeaters, and the difference from the required delay value is A method of manipulating the delay before and after insertion has been adopted so as to reduce the size.
[0005]
FIG. 24 is a diagram for explaining a method of analytically obtaining the delay equation (1) and dividing the wiring at equal intervals. In this method, one long line is equally divided into k short lines, and the total delay is calculated as k times that of each divided line. The 50% delay per stage of the repeater inserted between the equally divided lines is the capacitance and resistance per unit length of the line C0, R0Assuming that the line length before division is L, it is expressed by the following equation (1).
[0006]
[Expression 1]
[0007]
Here, R in the formula (1)onIs the on resistance of the driver and repeater, CtrIs the input gate capacitance of the repeater and receiver. Further, in this equation (1), it is assumed that the inserted repeater, the driver for driving the signal, and the gate size of the receiver on the signal receiving side are all the same. If the above equation (1) is partially differentiated by k and set to zero, the optimum division number k can be obtained as in the following equation (2).
[0008]
[Expression 2]
[0009]
FIG. 25 is a diagram showing the relationship between the wiring length L before the repeater division and the repeater division number k. As apparent from the equation (2), since the square of the wiring length L is in the numerator in the parallel root, the wiring length L before the repeater division and the repeater division number k are in a linear relationship. When this equation (2) is expanded for the wiring length L and k = 1 is substituted, the maximum line length that can be driven by the driver without repeater division is calculated.
[0010]
FIG. 26 is a flowchart showing a processing procedure by the delay analysis tool (2). Here, for the sake of simple explanation, consider a case where a repeater is inserted in a wiring having a branch as shown in FIG.
As shown in FIG. 26, the delay analysis tool uses each information of the
[0011]
The
[0012]
In the delay analysis tool, using these pieces of information, the processes in steps S1 to S7 in FIG. 26 are repeated for all nets. In step S1, delay analysis is performed based on other information excluding the
[0013]
In step S2, the delay time T calculated in step S1 is displayed.AB, TACAnd the delay requirement value R which is the
Slack = RAB-TAB
Slack = RAC-TAC
[0014]
In step S3, it is determined whether or not the Slack value calculated in step S2 is a negative value. If it is a negative value, it means that the actual delay time is longer than the required delay value, so the process proceeds to step S4, and one repeater is inserted in the path to increase the transfer speed. On the other hand, if the calculated Slack value is not a negative value, the process proceeds to step S5 to further determine whether or not the Slack value is a positive value.
[0015]
If the Slack value is a positive value, it means that the actual delay time is smaller than the delay request value, so that the process proceeds to step S6, and one delay gate is inserted in the path. On the other hand, if the Slack value is neither a negative value nor a positive value, it means that the delay request value and the actual delay time are equal, so that no repeater or delay gate is inserted in the path, and the next step S7 is performed. Continue the process.
[0016]
In step S7, whether or not the error between the delay time obtained as a result of inserting the repeater or the delay gate in step S4 or step S6 or the result of not inserting any of them is within an allowable range. Judging. If it is not within the allowable range, the process returns to step S1 and the same processing is repeated, and repeaters and delay gates are additionally inserted as necessary. When the error falls within the allowable range, the process proceeds to the next net.
[0017]
In the above processing, for example,
Slack = RAB-TAB<0
Slack = RAC-TAC> 0
If so, a repeater is inserted in the path from the cell A to the cell B, and a delay gate is inserted in the path from the cell A to the cell C. FIG. 27B shows the insertion result. In this example, two repeaters are inserted from the cell A to the branch point of the wiring, one repeater is inserted from the branch point to the cell B, and a delay gate is inserted from the branch point to the cell C. Three are inserted.
[0018]
[Problems to be solved by the invention]
However, in the method of analytically obtaining the delay equation as in the above formulas (1) and (2) and dividing the wiring line at equal intervals, a single line connecting between one driver and one receiver is simply used. It is divided into equal intervals, and no consideration is given to cases where there is a branch of wiring or metal transfer between the driver and the receiver. In addition, the gate sizes of the repeater, driver, and receiver must all be the same, and there is a problem that they cannot be applied to the actual wiring of the integrated circuit.
[0019]
That is, in an actual integrated circuit, there are many metal wiring layers. Also, the net topology of the wiring is usually branched, bent, metal transfer and VIA holes. The values of the capacitance and resistance of the wiring having such a complicated configuration are determined based on the thickness of the wiring itself and the surrounding wiring congestion. Therefore, even if the repeater is divided evenly, wiring that runs long distances while branching or changing metal cannot be simply expressed as in equations (1) and (2).
[0020]
In the method using the delay analysis tool as shown in FIG. 26, a repeater or delay gate is virtually inserted on the target wiring to calculate the delay time, and trial and error is performed so that the delay time approaches the delay requirement value. The process is repeated. Therefore, when the integrated circuit becomes large-scale, there is a problem that the delay analysis itself requires a lot of processing time. Even if all the nodes on the net can be activated, repeating repeater insertion to approach the delay constraint while looking at the delay constraint of every path requires considerable processing time and is realistic. In some cases, the process could not be completed within a short time.
[0021]
In particular, analysis of repeater insertion is required to be performed at an early stage of integrated circuit development. However, at this stage, the design of the integrated circuit is often not completely determined. When this design is changed, the analysis processing must be performed again according to the flow of FIG. 26, and every time the design is changed. There was a problem that it took an enormous amount of time.
[0022]
The present invention has been made to solve such a problem. Even in an integrated circuit having a complicated configuration, an optimum solution for repeater insertion along an actual wiring can be obtained accurately and in a short time. The purpose is to be able to.
[0023]
[Means for Solving the Problems]
In the repeater insertion apparatus and method in the integrated circuit of the present invention, the relationship between the wiring resistance and the wiring capacitance is expressed for each node on the wiring based on the wiring path in the integrated circuit and information on a predetermined physical quantity. Create a graph and points on the created graphAnd three points at predetermined coordinates having a wiring capacitance value larger than the graph on the wiring resistance-wiring capacitance plane as verticesThe point where the rectangular area is maximum is obtained as the repeater insertion position.
By configuring in this way, even without using a complicated circuit simulator or a static / dynamic delay analysis tool with a heavy processing load,Repeater insertion positionCan be calculated accurately and at high speed.
[0024]
DETAILED DESCRIPTION OF THE INVENTION
Hereinafter, an embodiment of the present invention will be described with reference to the drawings.
FIG. 1 is a functional configuration block diagram showing the elemental features of the repeater insertion device in the integrated circuit according to the present embodiment. FIG. 2 is a diagram for explaining the theory of the repeater insertion method according to the present embodiment. In this embodiment, as a repeater to be inserted, a buffer type repeater (repeater buffer) that does not need to consider the logical inversion of data is used, but it goes without saying that an inverter type repeater may be used. Yes.
[0025]
First, the repeater insertion theory of this embodiment will be described with reference to FIG. In FIG. 2, (a) shows a model before the repeater is inserted, and (b) shows a model after the repeater is inserted. Before insertion of the repeater shown in FIG. 2A, a
[0026]
[Equation 3]
[0027]
In this equation (3), RonIs the on-resistance of the
[0028]
As shown in FIG. 2B, the length L from the middle of the
[0029]
[Expression 4]
[0030]
Accordingly, when the delay time difference ΔT before and after insertion of the
[0031]
[Equation 5]
[0032]
As shown in FIG. 3, for example, when the above equation (7) is plotted on the rc plane with the resistance value on the horizontal axis and the capacitance value on the vertical axis, the image of the equation of the delay time difference ΔT becomes easy to understand. That is, the right side of the equation (7) indicates the line length L of the
[0033]
Therefore, by inserting the
[0034]
In an actual integrated circuit, it is rare that the gate sizes of the
[0035]
The right side of the equation (6) is the same term as the first and second terms (* 4) of the above equation (7), and the gate size difference R between the
[0036]
In the case of FIG. 4, the division position L1The first term representing the inherent delay of the repeater 16 [T0(Β) + 0.7RonCtrIf the remaining
[0037]
The above is an example where the
[0038]
When the branch point B exists in the middle of the wiring, pay attention to one of the plurality of
[0039]
In this case, the values of the wiring resistance and wiring capacitance from the
[0040]
Among the remaining sections {circle around (2)} to {circle around (4)}, the line segment of the section {circle around (2)} is a line segment determined by the wiring resistance and the wiring capacitance from the input of the
[0041]
FIG. 6 is a diagram illustrating an example in which two
[0042]
The above will be described below by expanding the equation so that the above can be applied to the case where N repeaters 16 are inserted into a wiring having N sections between the
g1(r) = a1r + C1
g2(r) = a2r + C2
・ ・ ・ ・ ・ ・
gN(r) = aNr + CN
And Also, point P on each section1, P2, ..., PNIf there is one each, their point P1, P2, ..., PNTotal area S of white rectangles determined byrIs expressed by the following equation (8).
[0043]
[Formula 6]
[0044]
Where x in equation (8)1, X2, ..., xNIs the point P1, P2, ..., PNIs a variable representing the position of This equation (8) is converted into each position variable x1, X2, ..., xNIf the partial differentiation is performed and the obtained results are sorted appropriately, it can be expressed as in equation (9). Calculate the determinant represented by this equation (9), and x1, X2, ..., xNIs obtained, the optimum position for inserting the N repeaters 16 is found.
[0045]
[Expression 7]
[0046]
Therefore, when one
[0047]
[Table 1]
[0048]
Next, the functional configuration of the apparatus for realizing the repeater insertion method according to the present embodiment as described above will be described with reference to FIG.
As shown in FIG. 1, the repeater insertion device of this embodiment includes a
[0049]
Each of these
[0050]
Further, since the net into which the
[0051]
The
[0052]
The net extracting
[0053]
The rc
[0054]
The repeater insertion analysis unit 9 sequentially moves the point P on the segment line segment of the rc graph based on the created rc graph, and the point where the area of the white rectangle created at that time becomes the maximum The number and position where the
[0055]
The repeater insertion apparatus and method in the integrated circuit according to the present invention shown in FIG. 1 can be realized by operating a program stored in a RAM or ROM of a computer. This program is included in the embodiment of the present invention.
[0056]
Specifically, the program is recorded on a recording medium such as a CD-ROM, or provided to a computer via various transmission media. As a recording medium for recording the program, a floppy disk, a hard disk, a magnetic tape, a magneto-optical disk, a nonvolatile memory card, or the like can be used in addition to the CD-ROM. On the other hand, as the transmission medium of the program, a communication medium (wired line such as an optical fiber, etc.) in a computer network (LAN, WAN such as the Internet, wireless communication network etc.) system for propagating and supplying program information as a carrier A wireless line or the like.
[0057]
In addition, the functions of the above-described embodiments are realized by executing a program supplied by a computer, and the program is used in cooperation with an OS (operating system) or other application software running on the computer. When the functions of the above-described embodiment are realized, or when all or part of the processing of the supplied program is performed by a function expansion board or a function expansion unit of the computer, the function of the above-described embodiment is realized. Such a program is included in the embodiment of the present invention.
[0058]
7 and 8 are flowcharts showing in detail the repeater insertion algorithm according to the present embodiment. Before entering the processing of this flowchart, data and libraries such as the
[0059]
In FIG. 7, first, repeater insertion preprocessing is performed. That is, first, the information of the
[0060]
Next, in steps S15 to S17, a net driving a long wiring is extracted from the
[0061]
Hereinafter, a plurality of net candidates N extracted in this wayrepThe loop processing from step S18 to step S39 in FIG. 8 is performed for each of the above. Among these, first, in steps S19 to S21, the net candidate N extracted as the repeater insertion candidaterepCheck the slew rate. That is, in step S19, among the
[0062]
In step S20, the net candidate NrepIt is determined whether or not the slew rate is greater than the reference value, and if so, the process proceeds to step S21, and a warning message is output. That is, in the repeater insertion algorithm of this embodiment, the insertion position of the
[0063]
The user who receives this message redesigns the integrated circuit as necessary (updates information such as the
[0064]
Next, in steps S22 to S29 in FIG.repThe rc graph is created. That is, first, in step S22, the net candidate N currently focused on isrepIs stored in the recording medium as a
[0065]
FIG. 9 shows one net candidate NrepIt is a figure which shows an example of the rc graph. N candidates for repeater insertionrepSuppose that one net extracted as shown in FIG. 9 is configured as shown in FIG. This net has a branch point in the middle of the wiring, and two paths are formed from one
[0066]
When the
[0067]
In step S26, the sum C of all the capacities (wiring capacities and input gate capacities) of the paths leading to the remaining leaf nodes connected to the branch point other than the currently focused leaf node CBIs calculated. In step S27, the calculated total capacity CBIs added to the branch point. Since the example of FIG. 9A has a branch point, the processes in steps S26 and S27 are performed.
[0068]
In this case, for example, when attention is paid to the path to one leaf node i, the total capacity C of the partial branches from the branch point to the other leaf node i + 1BIs calculated and added to the branch point. Further, when the loop processing of steps S23 to S29 is completed once and attention is paid to the path to the other leaf node i + 1, the total capacity C of the partial branch from the branch point to one leaf node i.B'Is calculated and added to the branch point.
[0069]
If it is determined in step S25 that there is no branch point, or if it is determined that there is a branch point, the process proceeds to step S28 after performing the process of step S27. In step S28, an rc graph is created by creating an interval equation for each wiring segment. FIG. 9B is a diagram illustrating an example of an rc graph created when attention is paid to one leaf node i in the net illustrated in FIG. On the rc graph, the wiring segments basically correspond to the positions between the nodes, but appear at the branch points as “jumps” in the direction of the capacity axis on the rc plane.
[0070]
After the rc graph is created in this way, in the loop processing of steps S30 to S39, the point P is sequentially moved on the segment line segment of the rc graph as shown in FIG. The number and position of the
[0071]
That is, first, the number of
[0072]
On the other hand, the gain S is greater than the inherent delay of the repeater 16.repIf is larger, the
[0073]
When the process returns from step S35 to step S30, in step S31, the number of
[0074]
In step S33, the gain S calculated for the case where N repeaters 16 are inserted.rep[N] is the gain S calculated for the case where N-1
[0075]
In the next step S37, it is determined whether or not the calculated Slack value is small. If the Slack value is not small, there is no effect of inserting the
[0076]
FIG. 23 is a diagram showing the relationship between the inherent delay of the
[0077]
Therefore, the inherent delay with a certain number of insertions as a boundary has a gain SrepIf the
[0078]
A detailed example of the repeater insertion algorithm in step S31 of FIG. 8 will be described below. Here, the gain calculation algorithm when one
[0079]
Gain S when one
S1= X (C0-G1(x)) = a1x (R1-X)
However, R1= (C0-C1/ A1
It can be expressed. C0Is the capacity per unit length of wiring, C1Is the intercept with the capacity axis of the segment, a1Is the slope of the segment.
[0080]
Also, the optimum gain SrepIs calculated for each of a plurality of segments i (i = I to V) as shown in FIG. In this case, when analyzing for one segment i, whether the value of x obtained is within the range of the segment i, that is, Ri min≦ x ≦ Ri maxWhen the solution of x exceeding this range is obtained, the value of x is set to R in the segment i.i minOr Ri maxWe will proceed with the process.
[0081]
That is, as shown in FIG. 11, the loop processing of steps S41 to S52 is repeated for each of a plurality of segments i on the net (i = 1 to E). Among these, first, in step S42, a value a is added to the slope of the section line segment and the capacity axis intercept in one segment i.1, C1In step S43, the area S of the white rectangle on the section line segment (accurately, including all straight lines on the extension line of the section line segment).1Calculate the value of x that maximizes.
[0082]
In step S44, the calculated value x is Ri min≦ x ≦ Ri maxJudge whether to satisfy. When this is satisfied, it means that the calculated value of x is properly within the range of the segment i, so that the process proceeds to step S45 and the calculated value of x is adopted as it is. On the other hand, the calculated value of x is Ri min≦ x ≦ Ri maxIf x is not satisfied, it means that the calculated value of x is not within the range of the segment i. Therefore, the process proceeds to step S46, and the value of x is Ri minIt is further judged whether it is smaller.
[0083]
Here, the value of x calculated above is Ri minIf it is smaller, the process proceeds to step S47, where the value of x is Ri minIs adopted. In step S46, the value of x is R.i minIf it is determined that the value is not smaller, the process proceeds to step S48, where the value of x is Ri maxIs adopted. As described above, when the value of x employed in step S45, step S47, or step S48 is determined, the process proceeds to step S49, and the area S of the white rectangle is determined from the obtained value of x.1By calculating the gain SrepAsk for.
[0084]
In the next step S50, the gain S calculated for a certain segment in the above step S49.repIs the gain S calculated for other segments so farrepIt is judged whether it is big compared with. Gain S calculated this timerepIs the maximum calculated so far, the process proceeds to step S51, where the gain S at that timerepAfter the values of x and x are stored in the recording medium, the process returns from step S52 to step S41 to proceed to the next segment i + 1.
[0085]
By repeating such a loop process, the optimum value of x and gain S when one
[0086]
Further, the gain S when two
[0087]
Here, the area S of the white rectangle when the preceding
S1= X (C0-G1(x)) = a1x (R1-X)
However, R1= (C0-C1/ A1
It can be expressed.
[0088]
Further, the area S of the white rectangle when the
S2= Y (C0-G2(y)) = a2(Y−x) (R2-Y)
However, R2= (C0-C2/ A2
It can be expressed. C0Is the capacity per unit length of wiring, C1, C2Is the intercept with the capacity axis of each segment, a1, A2Is the slope of each segment line.
[0089]
Further, the optimum gain S when two
[0090]
That is, as shown in FIG. 13, each of a plurality of segments i on the net (i = 1 to E) is assigned to the
[0091]
In the next step S64, the area S of the white rectangle on the segment line segments of the segments i and j (exactly including all the straight lines on the extension lines of these segment line segments).1, S2Calculate the values of x and y that maximize the total area. In step S65, the value of x calculated in step S64 is Ri min≦ x ≦ Ri maxJudge whether to satisfy.
[0092]
When this is satisfied, it means that the calculated value of x is properly within the range of the segment i, so that the process proceeds to step S66 and the calculated value of x is adopted as it is. On the other hand, the calculated value of x is Ri min≦ x ≦ Ri maxIf x is not satisfied, it means that the calculated value of x is not within the range of the segment i, so that the process proceeds to step S67 and the value of x is Ri minIt is further judged whether it is smaller.
[0093]
Here, the value of x calculated above is Ri minIf it is smaller, the process proceeds to step S68, where the value of x is Ri minIs adopted. In step S67, the value x is R.i minIf it is determined that the value is not smaller, the process proceeds to step S69, where the value of x is Ri maxIs adopted. As described above, when the value of x adopted in step S66, step S68 or step S69 is determined, the process proceeds to step S70, and the value of y calculated in step S64 is changed to R.j min≦ y ≦ Rj maxJudge whether to satisfy.
[0094]
If this is satisfied, it means that the calculated y value is properly within the range of the segment j, so that the process proceeds to step S71 and the calculated y value is adopted as it is. On the other hand, the value of y calculated above is Rj min≦ y ≦ Rj maxIs not satisfied, it means that the calculated value of y is not within the range of the segment j. Therefore, the process proceeds to step S72, where the value of y is Rj minIt is further judged whether it is smaller.
[0095]
Here, the value of y calculated above is Rj minIf it is smaller, the process proceeds to step S73, where the value of y is Rj minIs adopted. In step S72, the value of y is Rj minIf it is determined that the value is not smaller, the process proceeds to step S74 where R is set as the value of y.j maxIs adopted. As described above, when the value of y employed in step S71, step S73, or step S74 is also determined, the process proceeds to step S75, and the area S of the white rectangle is determined from the obtained x and y values.1, S2By calculating the gain Srep(= S1+ S2)
[0096]
In the next step S76, the gain S calculated for a certain segment in the above step S75.repIs the gain S calculated for other segments so farrepIt is judged whether it is big compared with. Gain S calculated this timerepIs the maximum calculated so far, the process proceeds to step S77, where the gain S at that timerepAfter the values x and y are stored in the recording medium, the process returns from step S78 to step S62, and the process proceeds to the next
[0097]
Further, the gain S when three
[0098]
Here, the area S of the white rectangle when the preceding
S1= X (C0-G1(x)) = a1x (R1-X)
However, R1= (C0-C1/ A1
It can be expressed.
[0099]
Further, the area S of the white rectangle when the
S2= Y (C0-G2(y)) = a2(Y−x) (R2-Y)
However, R2= (C0-C2/ A2
It can be expressed.
[0100]
Further, the area S of the white rectangle when the
SThree= Z (C0-GThree(z)) = aThree(Zy) (RThree-Z)
However, RThree= (C0-CThree/ AThree
It can be expressed. C0Is the capacity per unit length of wiring, C1, C2, CThreeIs the intercept with the capacity axis of each segment, a1, A2, AThreeIs the slope of each segment line.
[0101]
Further, the optimum gain S when three
[0102]
That is, as shown in FIG. 15, each of the plurality of segments i on the net (i = 1 to E) is assigned to the
[0103]
Among these, first, in step S84, the value a is respectively shown in the slope of the section line segment and the capacity axis intercept in one segment i.1, C1And the value a for the slope of the section line segment and the capacity axis intercept in one segment j, respectively.2, C2And the value a for the slope of the section line segment and the capacity axis intercept in one segment k, respectively.Three, CThreeIs assigned.
[0104]
In the next step S85, the area S of the white rectangle on the segment line segments of the segment i, j, k (exactly including all the straight lines on the extension lines of these segment segments).1, S2, SThreeCalculate the values of x, y, and z that maximize the total area. In step S86, the value of x calculated in step S85 is Ri min≦ x ≦ Ri maxJudge whether to satisfy.
[0105]
When this is satisfied, it means that the calculated value of x is properly within the range of the segment i, so the process proceeds to step S87 and the calculated value of x is adopted as it is. On the other hand, the calculated value of x is Ri min≦ x ≦ Ri maxIf x is not satisfied, it means that the calculated value of x is not within the range of the segment i. Therefore, the process proceeds to step S88, where the value of x is Ri minIt is further judged whether it is smaller.
[0106]
Here, the value of x calculated above is Ri minIf it is smaller, the process proceeds to step S89 and R is set as the value of x.i minIs adopted. In step S88, the value of x is Ri minIf it is determined that the value is not smaller, the process proceeds to step S90, where the value of x is Ri maxIs adopted. As described above, when the value of x adopted in step S87, step S89 or step S90 is determined, the process proceeds to step S91, and the value of y calculated in step S85 is changed to R.j min≦ y ≦ Rj maxJudge whether to satisfy.
[0107]
If this is satisfied, it means that the calculated y value is properly within the range of the segment j, so that the process proceeds to step S92 and the calculated y value is adopted as it is. On the other hand, the value of y calculated above is Rj min≦ y ≦ Rj maxIs not satisfied, it means that the calculated value of y is not within the range of the segment j, so the process proceeds to step S93, where the value of y is Rj minIt is further judged whether it is smaller.
[0108]
Here, the value of y calculated above is Rj minIf it is smaller, the process proceeds to step S94 where the value of y is Rj minIs adopted. In step S93, the value of y is Rj minIf it is determined that the value is not smaller, the process proceeds to step S95, where the value of y is Rj maxIs adopted. As described above, when the value of y adopted in step S92, step S94 or step S95 is determined, the process proceeds to step S96, and the value of z calculated in step S85 is changed to R.k min≦ z ≦ Rk maxJudge whether to satisfy.
[0109]
If this is satisfied, it means that the calculated z value is properly within the range of the segment k, so the process proceeds to step S97 and the calculated z value is adopted as it is. Meanwhile, the value of z calculated above is Rk min≦ z ≦ Rk maxIf not, it means that the calculated value of z is not within the range of the segment k, so that the process proceeds to step S98, where the value of z is Rk minIt is further judged whether it is smaller.
[0110]
Here, the value of z calculated above is Rk minIf it is smaller, the process proceeds to step S99, where the value of z is Rk minIs adopted. In step S98, the value of z is Rk minIf it is determined that the value is not smaller, the process proceeds to step S100 and R is set as the value of z.k maxIs adopted. As described above, when the value of z employed in step S97, step S99, or step S100 is also determined, the process proceeds to step S101, and the area S of the white rectangle is determined from the obtained x, y, z values.1, S2, SThreeBy calculating the gain Srep(= S1+ S2+ SThree)
[0111]
In the next step S102, the gain S calculated for a certain segment in the above step S101.repIs the gain S calculated for other segments so farrepIt is judged whether it is big compared with. Gain S calculated this timerepIs the maximum calculated so far, the process proceeds to step S103, where the gain S at that timerepAfter the values x, y, and z are stored in the recording medium, the process returns from step S104 to step S83, and the process proceeds to the next
[0112]
When all the segments k (k = j to E) have been processed for one segment j, the process returns from step S105 to step S82, and the process proceeds to the next
[0113]
As described above in detail, in the present embodiment, an rc graph is created along an actual wiring including a branch point or a metal transfer, and the point P is sequentially moved on the section line segment of the rc graph. The number and position of
[0114]
Even in this embodiment, repeated calculation is performed by loop processing. This is a very simple loop processing in which different parameters are sequentially given to a simple expression for obtaining a rectangular area. In this calculation, only simple physical quantities such as a wiring route, wiring resistance, and wiring capacity are used. Therefore, compared with the conventional method in which repeaters and delay gates are virtually inserted and trial and error are performed, the calculation method of the optimal solution is very simple, and the processing load can be significantly reduced. Moreover, among a plurality of nets, a net candidate N having a relatively long wiring lengthrepTherefore, processing can be omitted for nets that essentially do not require analysis.
[0115]
In the present embodiment, when obtaining the area of the white rectangle, the values of α, β, and γ representing the gate sizes of the
[0116]
Therefore, according to this embodiment, even in an integrated circuit having a complicated configuration, an optimum solution for repeater insertion along an actual wiring can be obtained accurately and in a short time. In addition, the repeater insertion method of the present embodiment allows the gate on-resistance and input of the rc graph to be input even in the early design floor plan or logic synthesis net in which the wiring shape and route are only required roughly. It can be calculated if there is information on capacity and inherent delay. Therefore, by applying the method of the present embodiment over a wide range from the upstream (initial) process to the downstream (late) process of the design, the problem of repeater insertion and placement, which has been a heavy reworking work so far, can be achieved with a very small burden. Can be solved.
[0117]
Next, another embodiment of the present invention will be described. In the embodiment described above, when there is a branch point on one net, attention is paid to one of a plurality of partial branches connected to the branch point, and the total capacity of the other partial branches. CBAnd each pass was processed individually. On the other hand, in the embodiment described below, an rc graph is created by paying attention to all the partial branches, and an optimal solution is obtained using these rc graphs.
[0118]
FIG. 16 is a diagram illustrating an example of one net used in the present embodiment and an example of an rc graph to be generated from the net. FIG. 16A illustrates an example of a net, and FIG. 16B illustrates an rc graph. An example is shown. The net shown in FIG. 16A has a branch point in the middle of the wiring, and two paths are formed from one
[0119]
When attention is paid to these two paths and rc graphs are respectively created, the result is as shown in FIG. Here, when the rc graph of the path A → C is created, the total capacity of the partial branch from the branch point to the point B is expressed as the capacity CBReplace with and hang at the branch point. When creating an rc graph of path A → B, the total capacity of the partial branch from the branch point to point C is expressed as capacity C.BReplace with 'and hang at the branch point. After creating two rc graphs in this way, R0C0The insertion analysis of the
[0120]
FIG. 17 is a diagram showing a state where the insertion analysis of the
[0121]
As shown in FIG. 18, when the
[0122]
When the contents of the net are updated as shown in FIG. 18, a branch point (node N2The
[0123]
FIG. 19 is a diagram illustrating a state in which the insertion analysis of the
[0124]
If one
[0125]
As described above, in the present embodiment, after the insertion analysis of the
[0126]
As a result, a more accurate repeater division position can be obtained. Further, when the insertion analysis of the
Here, the insertion analysis of the
[0127]
FIG. 22 is a diagram for comparing the result when the analysis is performed using the repeater insertion algorithm according to the present embodiment and the result when the analysis is performed using the circuit simulator. 22A shows the relationship between the wiring length to the division position and the delay time when one
[0128]
The graphs shown in FIGS. 22A and 22B show the
[0129]
On the other hand, the insertion position obtained as a result of analysis using the repeater insertion algorithm of this embodiment is indicated by ● in FIGS. 22 (a) and 22 (b). As can be seen, the analysis result processed by the repeater insertion algorithm according to the present embodiment represents almost the same position as the analysis result processed by the highly reliable circuit simulator. That is, it is shown that an accurate result can be obtained even with the algorithm according to the present embodiment.
[0130]
Note that each of the embodiments described above is merely an example of a specific example for carrying out the present invention, and the technical scope of the present invention should not be construed as being limited thereto. It is. In other words, the present invention can be implemented in various forms without departing from the spirit or main features thereof.
[0131]
The various aspects of the present invention are summarized as follows.
(1) A repeater insertion device in an integrated circuit that analyzes the number and position of repeaters to be inserted into wiring in the integrated circuit,
Graph creating means for creating a graph representing the relationship between the wiring resistance and the wiring capacity for each node on the wiring based on the wiring path and the predetermined physical quantity information in the integrated circuit,
Repeater insertion analysis means for obtaining a point on the graph created by the graph creation means having a maximum rectangular area with a point on the graph as one corner as an insertion position of the repeater. A repeater insertion device in an integrated circuit.
[0132]
(2) When there is a branch point in the middle of the wiring, the graph creating means pays attention to one of a plurality of partial branches connected to the branch point, and for the other partial branches, The repeater insertion device in an integrated circuit according to (1), wherein the total capacity is calculated and added to the branch point to replace the total capacity.
[0133]
(3) The repeater insertion apparatus in an integrated circuit according to (1) or (2), wherein the predetermined physical quantity includes information on wiring resistance and wiring capacity corresponding to a wiring layer.
[0134]
(4) The repeater insertion analysis means obtains the rectangular area under a size arbitrarily set for the driver on the wiring side, the receiver on the load side, and the repeater to be inserted. The repeater insertion device in an integrated circuit according to any one of (1) to (3).
[0135]
(5) When the repeater insertion analysis means inserts a plurality of repeaters, the total area of a plurality of rectangles each having a plurality of points on the graph created by the graph creation means as one corner is maximum. The repeater insertion apparatus for an integrated circuit according to any one of the above (1) to (4), characterized in that:
[0136]
(6) The repeater insertion analysis means performs an analysis process for each of the case where one to N repeaters are inserted, and determines the number of repeaters and the insertion position when the area of the rectangle is maximum. The repeater insertion device for an integrated circuit according to (5), characterized in that:
[0137]
(7) When there is a branch point in the middle of the wiring, the graph creating unit and the repeater insertion analyzing unit pay attention to one of a plurality of partial branches connected to the branch point. After creating and analyzing repeater insertion, repeat the process of virtually inserting the repeater at the obtained position and then creating the graph and analyzing repeater insertion focusing on other partial branches The repeater insertion device for an integrated circuit according to any one of (1) to (6), wherein the repeater insertion device is executed.
[0138]
(8) a wiring extracting unit that extracts a wiring having a wiring length longer than a reference value from a plurality of wirings included in the integrated circuit;
The graph creation unit and the repeater insertion analysis unit execute processing only on the wiring extracted by the wiring extraction unit, according to any one of (1) to (7), Repeater insertion device in an integrated circuit.
[0139]
(9) A repeater insertion method in an integrated circuit for analyzing the number and position of repeaters to be inserted into wiring in the integrated circuit,
Creating a graph representing the relationship between the wiring resistance and the wiring capacity for each node on the wiring based on the wiring path and the predetermined physical quantity information in the integrated circuit;
A repeater in an integrated circuit comprising: a step of obtaining a point having a maximum area of a rectangle having a point on the graph as one corner among the points on the created graph as an insertion position of the repeater Insertion method.
[0140]
(10) When a branch point exists in the middle of the wiring, pay attention to one of the plurality of partial branches connected to the branch point, and calculate the total capacity of the other partial branches. The repeater insertion method for an integrated circuit according to (9) above, wherein the graph is created by replacing the total capacity by adding to the branch point.
[0141]
(11) The repeater insertion method for an integrated circuit according to (9) or (10), wherein the predetermined physical quantity includes information on a wiring resistance and a wiring capacity according to a wiring layer.
[0142]
(12) The area of a rectangle having a point on the graph as one corner is obtained under an arbitrarily set size with respect to the driver on the drive side, the receiver on the load side, and the repeater to be inserted. The repeater insertion method for an integrated circuit according to any one of (9) to (11) above.
[0143]
(13) When a plurality of repeaters are inserted, a point having a maximum total area of a plurality of rectangles each having a plurality of points on the graph created by the graph creating means as one corner is a plurality of repeaters. The repeater insertion method for an integrated circuit according to any one of the above (9) to (12), characterized in that the repeater insertion position is obtained as an insertion position of the integrated circuit.
[0144]
(14) An analysis process is performed for each of the cases where one to N repeaters are inserted, and the number of repeaters and the insertion position when the area of the rectangle is maximized are obtained as optimum solutions. The repeater insertion method in the integrated circuit according to (13).
[0145]
(15) If there is a branch point in the middle of the wiring, pay attention to one of a plurality of partial branches connected to the branch point, analyze the creation of the graph and repeater insertion, and then (9) to (9), wherein the repeater is virtually inserted at a given position, and then the process of creating the graph and analyzing the repeater insertion is repeatedly performed focusing on other partial branches. (14) The repeater insertion method for an integrated circuit according to any one of (14).
[0146]
(16) A computer-readable recording medium on which a program for causing a computer to function as each means of the repeater insertion device in the integrated circuit of (1) is recorded.
(17) A computer-readable recording medium on which a program for causing a computer to execute the processing procedure of the repeater insertion method in the integrated circuit of (9) is recorded.
[0147]
(18) A program for causing a computer to function as each unit of the repeater insertion device in the integrated circuit of (1).
(19) A program for causing a computer to execute the processing procedure of the repeater insertion method in the integrated circuit of (9).
[0148]
【The invention's effect】
As described above, according to the present invention, it is possible to draw an rc graph and calculate the number of insertions and insertion positions of repeaters for wirings connecting elements in an integrated circuit. Even in an integrated circuit having such a configuration, an optimum solution for repeater insertion along an actual wiring can be obtained accurately and in a short time. That is, this calculation does not require a conventional circuit simulator or delay analysis tool, and can correctly determine the metal transfer and branching of the wiring and determine the repeater insertion position.
[Brief description of the drawings]
FIG. 1 is a functional configuration block diagram showing elemental features of a repeater insertion device in an integrated circuit according to an embodiment.
FIG. 2 is a diagram for explaining the theory of a repeater insertion method according to the present embodiment.
FIG. 3 is a diagram illustrating a relationship between Expression (7) and an rc plane.
FIG. 4 is a diagram illustrating a relationship between Expression (6) and an rc plane.
FIG. 5 is a diagram showing a model having a branch point in the middle of wiring and a relationship between an equation of a delay time before and after repeater insertion in the model and an rc plane.
FIG. 6 is a diagram illustrating an example of calculating a point P when two repeaters are inserted between a driver and a receiver.
FIG. 7 is a flowchart showing in detail a repeater insertion algorithm according to the present embodiment.
FIG. 8 is a flowchart showing in detail a repeater insertion algorithm according to the present embodiment.
FIG. 9 is a diagram showing an example of a certain net and its rc graph.
FIG. 10 is a diagram illustrating an example of gain calculation when one repeater is inserted.
FIG. 11 is a flowchart showing an example of gain calculation processing when one repeater is inserted;
FIG. 12 is a diagram illustrating an example of gain calculation when two repeaters are inserted.
FIG. 13 is a flowchart showing an example of gain calculation processing when two repeaters are inserted.
FIG. 14 is a diagram illustrating an example of gain calculation when three repeaters are inserted.
FIG. 15 is a flowchart showing an example of gain calculation processing when three repeaters are inserted;
FIG. 16 is a diagram illustrating an example of one net used in another embodiment and an example of an rc graph created from the net.
FIG. 17 is a diagram showing a state in which repeater insertion analysis is performed for path A → B.
FIG. 18 is a diagram illustrating a state in which a repeater is inserted for a path A → B.
FIG. 19 is a diagram showing a state in which repeater insertion analysis is performed for path A → C.
FIG. 20 is a diagram illustrating a state in which a repeater is inserted for a path A → C.
FIG. 21 is a diagram illustrating a state in which repeater insertion analysis is performed again on path A → B.
FIG. 22 is a diagram for comparing a result when an analysis is performed using the repeater insertion method according to the present embodiment and a result when an analysis is performed using a circuit simulator.
FIG. 23 is a diagram showing the relationship between the intrinsic delay of a repeater and the gain according to the number of repeater insertions.
FIG. 24 is a diagram for explaining a method of dividing a wiring line into equal intervals by analytically obtaining a delay equation.
FIG. 25 is a diagram showing the relationship between the wiring length before repeater division and the number of repeater divisions;
FIG. 26 is a flowchart showing a processing procedure by a delay analysis tool.
FIG. 27 is a diagram illustrating an example of processing by a delay analysis tool.
[Explanation of symbols]
1 Delay constraint
2 Netlist
3 Cell timing library
4 Wiring capacity / wiring resistance data
5 Place and route database
6 Pre-processing section
7 Net extractor
8 rc graph generator
9 Repeater insertion analysis section
10 Repeat calculation unit before repeater insertion
11 Driver
12 Receiver
13 Wiring
14,15 Divided wiring
16 repeaters
Claims (6)
上記集積回路内の配線の経路および所定の物理量の情報をもとに、上記配線上に有する各ノード毎に配線抵抗と配線容量との関係を表したグラフを作成するグラフ作成手段と、
上記グラフ作成手段により作成されたグラフ上の点で、当該グラフ上の点と、配線抵抗−配線容量平面で前記グラフよりも大きい配線容量値となる所定の座標の3つの点とを頂点とする矩形の面積が最大となる点を上記リピータの挿入位置として求めるリピータ挿入解析手段とを備えることを特徴とする集積回路におけるリピータ挿入装置。A repeater insertion device in an integrated circuit for analyzing a position of a repeater to be inserted into a wiring in the integrated circuit,
Graph creating means for creating a graph representing the relationship between the wiring resistance and the wiring capacitance for each node on the wiring based on the wiring path and the predetermined physical quantity information in the integrated circuit,
Among the points on the graph created by the graph creating means, the points on the graph and the three points at predetermined coordinates that have a wiring capacitance value larger than the graph on the wiring resistance-wiring capacitance plane are set as vertices. A repeater insertion apparatus for an integrated circuit, comprising: a repeater insertion analysis unit that obtains a point where the rectangular area is maximum as an insertion position of the repeater.
グラフ作成手段が、上記集積回路内の配線の経路および所定の物理量の情報をもとに、上記配線上に有する各ノード毎に配線抵抗と配線容量との関係を表したグラフを作成するステップと、
リピータ挿入解析手段が、上記作成されたグラフ上の点で、当該グラフ上の点と、配線抵抗−配線容量平面で前記グラフよりも大きい配線容量値となる所定の座標の3つの点とを頂点とする矩形の面積が最大となる点を上記リピータの挿入位置として求めるステップとを有することを特徴とする集積回路におけるリピータ挿入方法。A repeater insertion method in an integrated circuit for analyzing a position of a repeater to be inserted into a wiring in the integrated circuit,
Graphing means, based on the information of the path and a predetermined physical amount of wiring in the integrated circuit, and creating a graph showing the relation between the wiring capacitance and wiring resistance for each node having on the wiring ,
The repeater insertion analysis means appoints a point on the created graph, and a point on the graph, and three points at predetermined coordinates that have a wiring capacitance value larger than the graph on the wiring resistance-wiring capacitance plane. A repeater insertion method in an integrated circuit, comprising: obtaining a point having the maximum area of the rectangle as an insertion position of the repeater.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001004114A JP4472193B2 (en) | 2000-01-11 | 2001-01-11 | Repeater insertion apparatus, method, recording medium, and program for integrated circuit |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000-2871 | 2000-01-11 | ||
JP2000002871 | 2000-01-11 | ||
JP2001004114A JP4472193B2 (en) | 2000-01-11 | 2001-01-11 | Repeater insertion apparatus, method, recording medium, and program for integrated circuit |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2001265843A JP2001265843A (en) | 2001-09-28 |
JP4472193B2 true JP4472193B2 (en) | 2010-06-02 |
Family
ID=26583325
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001004114A Expired - Fee Related JP4472193B2 (en) | 2000-01-11 | 2001-01-11 | Repeater insertion apparatus, method, recording medium, and program for integrated circuit |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4472193B2 (en) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4938696B2 (en) | 2008-01-24 | 2012-05-23 | ソニー株式会社 | Semiconductor device design program and semiconductor device design system |
JP5035434B2 (en) * | 2011-01-26 | 2012-09-26 | ソニー株式会社 | Semiconductor device design support program and semiconductor device design system |
-
2001
- 2001-01-11 JP JP2001004114A patent/JP4472193B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2001265843A (en) | 2001-09-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6543043B1 (en) | Inter-region constraint-based router for use in electronic design automation | |
JP2954894B2 (en) | Integrated circuit design method, database device for integrated circuit design, and integrated circuit design support device | |
US7065730B2 (en) | Porosity aware buffered steiner tree construction | |
US7676780B2 (en) | Techniques for super fast buffer insertion | |
CN101206686B (en) | Latch placement for high performance and low power circuits | |
US6519749B1 (en) | Integrated circuit partitioning placement and routing system | |
US7032198B2 (en) | Method of optimizing signal lines within circuit, optimizing apparatus, recording medium having stored therein optimizing program, and method of designing circuit and recording medium having stored therein program for designing circuit | |
US8095904B2 (en) | Methods and apparatus for providing flexible timing-driven routing trees | |
US20030005398A1 (en) | Timing-driven global placement based on geometry-aware timing budgets | |
US7111268B1 (en) | Post-layout optimization in integrated circuit design | |
US8239797B1 (en) | Congestion aware block placement | |
US6898774B2 (en) | Buffer insertion with adaptive blockage avoidance | |
US6564361B1 (en) | Method and apparatus for timing driven resynthesis | |
US6543032B1 (en) | Method and apparatus for local resynthesis of logic trees with multiple cost functions | |
US7148135B2 (en) | Method of designing low-power semiconductor integrated circuit | |
Cong et al. | A robust mixed-size legalization and detailed placement algorithm | |
JP4472193B2 (en) | Repeater insertion apparatus, method, recording medium, and program for integrated circuit | |
Radhakrishnan Nair et al. | An efficient partitioning and placement based fault TSV detection in 3D-IC using deep learning approach | |
US7454730B1 (en) | Repeater insertion for concurrent setup time and hold time violations | |
US20230274067A1 (en) | Using pixel-based definition of an integrated circuit design to perform machine-trained routing | |
US6931610B1 (en) | Method for rapid estimation of wire delays and capacitances based on placement of cells | |
US6637011B1 (en) | Method and apparatus for quick search for identities applicable to specified formula | |
US6665851B1 (en) | Quick placement of electronic circuits using orthogonal one dimensional placements | |
US6314547B1 (en) | Method for improving the assignment of circuit locations during fabrication | |
US20060043427A1 (en) | Automatic-arrangement-wiring apparatus for and program for performing layout of integrated circuit |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20071126 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20091006 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20091204 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20100223 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20100303 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130312 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130312 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140312 Year of fee payment: 4 |
|
LAPS | Cancellation because of no payment of annual fees |