(57)【特許請求の範囲】
【請求項１】
回路を１パスごとに直線近似し、該直線近似された１パスごとにバッファ挿入条件を所定の解析式を直接解いて算出する工程と、
全パスについて求めたバッファ挿入条件から、回路中に挿入するバッファ候補を作成し、該バッファ候補を解集合として該バッファ候補の中からタイミング制約を満足するようにバッファ候補を選択する工程を有することを特徴とする半導体集積回路のバッファ挿入方法。
【請求項２】
前記所定の解析式は、モーメントマッチング法の１次近似で計算される遅延時間をエルモア遅延モデルと係数の形で表される遅延計算モデルから立てることを特徴とする請求項１記載の半導体集積回路のバッファ挿入方法。
【請求項３】
前記バッファ挿入位置の設定は、前記直線近似された各パスにおいて、ドライバセル及びバッファの負荷がドライバセル及びバッファの駆動能力に応じて均等になるように行われることを特徴とする請求項１記載の半導体集積回路のバッファ挿入方法。
【請求項４】
前記バッファ候補の選択は、回路データをツリー状配線とし、優先順位の高いパスが左（または右）に来るように構成し、制約条件を設けて、前記ツリー状配線を右（または左）優先で後順に巡回し、枝ごとに最適なバッファ候補を選択することにより行われるか、または、前記バッファ候補の位置関係と前記バッファ候補の優先順位から統合処理を行うことによって、最適なバッファ候補を選択することにより行われることを特徴とする請求項１記載の半導体集積回路のバッファ挿入方法。
【請求項５】
回路を１パスごとに直線近似し、該直線近似された１パスごとにバッファ挿入条件を解析式を直接解いて算出する手段と、
全パスについて求めたバッファ挿入条件から、回路中に挿入するバッファ候補を作成し、該バッファ候補を解集合として該バッファ候補の中からタイミング制約を満足するようにバッファ候補を選択する手段を有することを特徴とする半導体集積回路のバッファ挿入装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、半導体集積回路のタイミング最適化を図るためのバッファ挿入方法及び装置に関する。
【０００２】
【従来の技術】
半導体集積回路の設計工程時には、タイミングの最適化、即ち、ドライバセルからの伝送信号の終端への到達時間の最適化を図ることが行われる。半導体集積回路のタイミング最適化を図る方法として、例えば、配線経路にバッファを挿入するバッファ挿入法が使用されている。
【０００３】
バッファ挿入法では、配線経路にバッファ挿入位置候補を定め、バッファ挿入位置候補及びバッファ駆動能力の集合を解集合として、制約条件やコスト関数を設定し、タイミング制約に対して最適解を得ることによりバッファの挿入を行うという最適解探索方法や、バッファの挿入間隔などを予めルールで定めておき、このルールに基づいてバッファの挿入を行うというルールベース方式などが採られている。
【０００４】
最適解探索方法によるバッファ挿入方法においては、制約条件の評価に遅延計算が必要となるが、遅延計算には、簡単な数式で表されるエルモア遅延モデルを使用する方法や、ＡＷＥ（漸近波形評価法）などモーメントマッチング法を用いて信号の近似波形を表す式を導く方法や、線形シミュレータを使用する方法などがある。
【０００５】
モーメントマッチング法には、手順や式の変形に、いくつかのバリエーションがあるが、代表的なものを例として挙げる。
【０００６】
配線経路の伝達関数Ｈ（ｓ）は
【０００７】
【数１】
0003952825.tif 000002
【０００８】
と表すことができる。ここで、数１の分母の次数がｎなら、
【０００９】
【数２】
0003952825.tif 000003
【００１０】
となり、時間領域に写像すると、
【００１１】
【数３】
0003952825.tif 000004
【００１２】
となり、伝達関数Ｈ（ｓ）の分母がｎ次なら、ｎ個のｐ（極）、ｋ（留数）の組を求めなければならない。しかし、実際のところ、ｎ個の組合せを全て使用しなくとも、数３とほぼ同等の式を得ることができる。いくつかの支配的な極・留数を求めようとするのが、モーメントマッチング法のコンセプトである。
【００１３】
ここで、伝達関数Ｈ（ｓ）をｓ＝０でテイラー展開すると、数４に示すようになる。係数ｍ0、ｍ1、ｍ2、…がモーメントと定義されるものである。
【００１４】
【数４】
0003952825.tif 000005
【００１５】
次に、伝達関数Ｈ（ｓ）をｑ個の極を持つＨp,q（ｓ）に近似（Pade近似）すると、数５を得ることができる。
【００１６】
【数５】
0003952825.tif 000006
【００１７】
ただし、
【００１８】
【数６】
0003952825.tif 000007
【００１９】
であり、ｐ＜ｑである。また、数４、数５より、数７を得ることができる。
【００２０】
【数７】
0003952825.tif 000008
【００２１】
ここで、（数６の右辺）＝（数７の右辺）として、数８を得ることができる。
【００２２】
【数８】
0003952825.tif 000009
【００２３】
数８の両辺の係数を比較すると、
【００２４】
【数９】
0003952825.tif 000010
【００２５】
となる。数９中で、『０＝』となっている部分から、ｑ〜（２ｑ−１）までを抜き出すと、
【００２６】
【数１０】
0003952825.tif 000011
【００２７】
となり、Ｈp,q（ｓ）の分母の係数が求められる。即ち、数１０において、モーメントｍ0〜ｍ2q-1を与えれば、Ｈp,q（ｓ）の分母の係数が得られ、Ｈp,q（ｓ）の極が求められ、数１１となる。
【００２８】
【数１１】
0003952825.tif 000012
【００２９】
数１１をｓ＝０でテイラー展開すると、数１１は、数１２のようになる。
【００３０】
【数１２】
0003952825.tif 000013
【００３１】
ここで、（数７の右辺）＝（数１２の右辺）とすると、数１３を得ることができ、この数１３を解くことで、留数ｋが求められる。
【００３２】
【数１３】
0003952825.tif 000014
【００３３】
以上の手順を踏めば、伝達関数Ｈ（ｓ）を表現することに十分な極と留数（近似極・近似留数と言われる）の組合せｑ個を、（２ｑ−１）個のモーメントを与えることにより求めることができる。
【００３４】
【発明が解決しようとする課題】
バッファ挿入方法において、最適解探索方法を採用する場合には、良質な最適解を得られることが多い。しかし、最適解探索方法では、膨大な組合せの解集合について、制約条件、コスト関数を評価しながら最適解を探索することになり、計算コストが非常に大きくなるという問題点がある。即ち、良質な最適解を得るためには、遅延計算モデルが高精度でなければならないが、高精度な遅延計算モデルほど計算コストは大きくなってしまう。
【００３５】
これに対して、ルールベース方式は、計算コストが殆どかからないという長所を有しているが、ルールはシミュレーション結果を元に作成されるものであり、その妥当性がどれだけのものであるかは不明であり、設計者の経験に依存するなど、問題が多い。
【００３６】
また、遅延計算を行うにあたり、エルモア遅延モデルは、簡単な数式で表されるので、遅延計算にかかるコストが少なく、これを用いて解析式を立てることも可能である。しかし、シールディング効果を考慮することができないため、抵抗成分の大きな配線の配線遅延の計算では、誤差が非常に大きくなってしまう。
【００３７】
これに対して、モーメントマッチング法は、次数を上げることで精度を非常に大きくすることができ、遅延計算にかかるコストは比較的小さいし、また、次数が高ければシールディング効果を考慮することができる。しかし、式は複雑であり、特に、５以上の高次モーメントの計算は非常に複雑となり、解析的に解くことが困難となる。
【００３８】
また、線形シミュレータを使用する遅延計算方法は、非常に高精度であるが、計算コストが大きいという問題点がある。また、シミュレータなので、解析式に用いることは不可能である。
【００３９】
本発明は、かかる点に鑑み、半導体集積回路のタイミング最適化を低コストかつ高精度で行うことができるようにした半導体集積回路のバッファ挿入方法及び装置を提供することを目的とする。
【００４０】
【課題を解決するための手段】
本発明の半導体集積回路のバッファ挿入方法及び装置は、回路を１パスごとに直線近似し、該直線近似された１パスごとにバッファ挿入条件を所定の解析式を直接解いて算出し、全パスについて求めたバッファ挿入条件から、回路中に挿入するバッファ候補を作成し、該バッファ候補を解集合として該バッファ候補の中からタイミング制約を満足するようにバッファ候補を選択する、というものである。
【００４１】
本発明によれば、直線近似された１パスごとにバッファ挿入条件を所定の解析式を直接解くことにより算出するとしているので、計算コストの大きい遅延計算を繰り返す必要が無く、また、バッファ挿入条件自体が十分な妥当性を持つことになる。
【００４２】
【発明の実施の形態】
以下、図１〜図１３を参照して、本発明の半導体集積回路のバッファ挿入方法及び装置の一実施形態について説明する。
【００４３】
（Ａ．全体の手順、構成）
図１は本発明の半導体集積回路のバッファ挿入方法及び装置の一実施形態を示す図である。本発明の半導体集積回路のバッファ挿入方法の一実施形態においては、半導体集積回路のタイミング最適化を図るために、以下の手順に従って、半導体集積回路上の配線経路にバッファの挿入が行われる。
【００４４】
［ステップＳ１−１］
回路情報を読み込み、回路情報格納手段１０に格納する。また、各終端でのタイミング制約を読み込み、タイミング制約格納手段１１に格納する。
【００４５】
［ステップＳ１−２］
配線経路の直線近似手段１２を用いて分岐を実効容量化して回路を１パスごとに直線近似し、全パスについて近似直線を作成する。
【００４６】
［ステップＳ１−３］
バッファ挿入条件計算手段１３を用いて、各パスについて、分岐をオフローディングするか否かの決定及び配線分割数の計算、バッファ駆動能力の計算、バッファ挿入位置の計算を行う。
【００４７】
［ステップＳ１−４］
バッファ挿入候補生成手段１４を用いて、バッファ挿入後の各パスのスラック（Slack）を計算し、スラックが小さい順に各パスに優先順位を与え、ステップＳ１−３で計算したバッファ挿入位置をバッファ挿入候補位置とする。
【００４８】
［ステップＳ１−５］
バッファ挿入候補選択手段１５を用いて、タイミング特性が最適となるようにバッファ挿入候補の選択を行い、更に、トップダウン処理により余分なバッファを取り除く。
【００４９】
なお、本発明のバッファ挿入装置の一実施形態を構成する配線経路の直線近似手段１２、バッファ挿入条件計算手段１３、バッファ挿入候補生成手段１４及びバッファ挿入候補選択手段１５は、コンピュータをハードウエア資源として、ソフトウエア（プログラム）で実現することができる。
【００５０】
（Ｂ．ステップＳ１−３の具体的内容）
図２はステップＳ１−３の具体的内容を示す流れ図である。即ち、ステップＳ１−３では、以下の手順に従って、分岐をオフローディングするか否かの決定及び配線分割数の計算、バッファ駆動能力の計算、バッファ挿入位置の計算が行われる。
【００５１】
［ステップＳ２−１］
オフローディングバッファ挿入判定手段２０を用いて、分岐の実効容量の大きさとバッファ駆動能力から、分岐をオフローディングするかどうかを決め、近似直線のパラメータ更新手段２１を用いて近似直線のパラメータを更新する。
【００５２】
［ステップＳ２−２］
配線分割数計算手段２２を用いて配線分割数を計算し、バッファ駆動能力計算手段２３を用いてバッファ駆動能力を計算する。
【００５３】
［ステップＳ２−３］
バッファの初期駆動能力とステップＳ２−２で計算した駆動能力が異なる場合、ステップＳ２−１、Ｓ２−２を再度実行する。
【００５４】
［ステップＳ２−４］
バッファ挿入位置計算手段２４を用いて、配線分割数及びバッファ駆動能力からバッファ挿入位置を計算する。
【００５５】
（Ｃ．ステップＳ２−２の具体的内容）
バッファ挿入条件を精度良く求めるには、遅延計算モデルの精度が良くなければならない上に、解析式を直接解くことができるくらい簡潔である必要がある。そこで、本発明者は、計算精度が良いモーメントマッチング法を用いて、エルモア遅延計算モデルを表すことを考えた。これは、直線近似した１パスについて、モーメントマッチング法の１次近似で計算される遅延時間をエルモア遅延モデルと係数の形で表すというものである。１次近似でも比較的精度は良い。以下、遅延計算モデルの作成方法、配線分割数の計算方法、バッファ駆動能力の計算方法について説明する。
【００５６】
（Ｃ−１．遅延計算モデルの作成方法）
図３は配線モデルを示す回路図である。図３中、３０は電圧源、３１は電圧源３０から出力される電圧波形、Ｒdは電圧源３０内の駆動抵抗、３２は配線である。図３において、電圧源３０から出力される電圧波形３１の立ち上がり時間をｔTとして、終端での応答波形Ｖ（ｔ）を求めると、
【００５７】
【数１４】
0003952825.tif 000015
【００５８】
となる。ただし、ｕ（ｔ−ｔT）は、ｔ＜ｔTのとき、ｕ＝０、ｔ≧ｔTのとき、ｕ＝１となるステップ関数であり、Ｖr（ｔ）は
【００５９】
【数１５】
0003952825.tif 000016
【００６０】
である。ただし、ulはＶdd／ｔT、τeは終端でのエルモア遅延、τは配線３２の時定数を表す。
【００６１】
Ｖ（Ｔ50%）＝Ｖdd／２となる時刻Ｔ50%が、Ｔ50%≦ｔTとなるとき、遅延時間Ｔdは
【００６２】
【数１６】
0003952825.tif 000017
【００６３】
と表すことができる。また、Ｔ50%＞ｔTとなるときは、遅延時間Ｔdは
【００６４】
【数１７】
0003952825.tif 000018
【００６５】
となる。ここで、配線３２の時定数τをエルモア遅延τeで表し、式を簡単化する。配線３２を分岐の無い均一な分布定数線路と仮定すると、時定数τとエルモア遅延τeの間には、τ＝（５／６）τeの関係が得られるので、数１６は
【００６６】
【数１８】
0003952825.tif 000019
【００６７】
となり、数１７は
【００６８】
【数１９】
0003952825.tif 000020
【００６９】
となる。ここで、ｘ＝ｔT／τeとおいて、Ｔ50%≦ｔT、すなわち、Ｖ（ｔT）≧Ｖdd／２となるときのｘ＝ｔT／τeを求める。数１４から、
【００７０】
【数２０】
0003952825.tif 000021
【００７１】
【数２１】
0003952825.tif 000022
【００７２】
を得ることができる。そこで、数２１のexpをｘ＝２についてテイラー展開すると、
【００７３】
【数２２】
0003952825.tif 000023
【００７４】
となる。故に、ｘ≧１.３８≒１.４０となる。また、Ｔ50%＞ｔTとなるときは、ｘ＜１.４０となる。よって、数１８は、
【００７５】
【数２３】
0003952825.tif 000024
【００７６】
となり、数１９は
【００７７】
【数２４】
0003952825.tif 000025
【００７８】
と表すことができる。数２３、数２４は境界条件（ｘ＝１.４で数２３と数２４は連続とならなければならない）を満たさなければならない。そこで、数２４を
【００７９】
【数２５】
0003952825.tif 000026
【００８０】
と変形する。ただし、lnＹは
【００８１】
【数２６】
0003952825.tif 000027
【００８２】
である。数２６にｘb＝１.４を代入すると、Ｙ＝２.１１０００９０４を得る。ここで、終端のゲートの入力端子への信号遷移時間（立ち上がり時間）τinに対して、終端のゲートの寄生遅延時間がＤb（τin）と表されるとすると、伝播遅延時間Ｔpdは、上述の遅延計算モデルＴdを用いて、
【００８３】
【数２７】
0003952825.tif 000028
【００８４】
と表すことができる。
【００８５】
（Ｃ−２．配線分割数の計算方法）
図４は直線近似された１パスを示している。配線分割数の計算は、図４に示したような直線近似された１パスについて、Required Arrival Timeを制約として配線分割数（バッファ挿入個数＋１）を求める計算であるが、この配線分割数の計算は、遅延計算モデルＴpdを用いて行うことができる。
【００８６】
まず、配線の単位長当たりの抵抗をｒ、容量をｃ、分岐の実効容量（集中定数容量）をＣi、分割した配線の長さをｌi、負荷容量をＣL、分岐の実効容量の総和をＣlump、総配線抵抗をＲint、総配線容量をＣintとすると、それぞれ、
【００８７】
【数２８】
0003952825.tif 000029
【００８８】
の関係を持つ。これらの変数を用いて、始端から終端までのエルモア遅延を表すと、
【００８９】
【数２９】
0003952825.tif 000030
【００９０】
となる。ここで、図４に示す配線モデルを図５に示す配線モデルに置き変え、図４に示す配線モデルの場合のエルモア遅延と図５に示す配線モデルの場合のエルモア遅延が等しくなるように、Ｃeqを定める。
【００９１】
【数３０】
0003952825.tif 000031
【００９２】
【数３１】
0003952825.tif 000032
【００９３】
図５のエルモア遅延は、Ｃeqを用いて、
【００９４】
【数３２】
0003952825.tif 000033
【００９５】
と表すことができる。バッファを挿入して、ｎ分割したとすると、数３２は
【００９６】
【数３３】
0003952825.tif 000034
【００９７】
となる。
【００９８】
ここで、「実効抵抗」という概念を導入する。図６は実効抵抗を説明するための回路図であり、図６Ａに示す配線モデルの駆動端以下の負荷部分６０を文献『Ｐ.Ｒ.O'Brien and T.L.Savarino,"Modeling the Driving-Point Characteristic of Resistive Interconnect for Accurate Delay Estimation",Proc.IEEE ICCAD, 1989, pp.512-5.』に示す手順に従って図６Ｂに示すＣＲＣπ型負荷（コンデンサ２個と抵抗１個で表した負荷の等価モデル）６１に縮退した場合のＲwを実効抵抗と定義する。
【００９９】
Ｒd≦Ｒwとなる条件では、遅延時間Ｔpdは
【０１００】
【数３４】
0003952825.tif 000035
【０１０１】
として、
【０１０２】
【数３５】
0003952825.tif 000036
【０１０３】
を得る。ここで、Ｒbはバッファの駆動抵抗、Ｃinはバッファの入力容量、Ｔbはバッファの寄生遅延、Ｔdはドライバセル（配線の始点が接続されたセル）の寄生遅延である。Required Arrival TimeをＴreqとしたとき、
【０１０４】
【数３６】
0003952825.tif 000037
【０１０５】
となれば、タイミング制約を満たすことになる。数３６を満たすｎを求めると、
【０１０６】
【数３７】
0003952825.tif 000038
【０１０７】
となる。ここで、
【０１０８】
【数３８】
0003952825.tif 000039
【０１０９】
である。ただし、
【０１１０】
【数３９】
0003952825.tif 000040
【０１１１】
である。
【０１１２】
また、Ｔpdを最小にするｎは
【０１１３】
【数４０】
0003952825.tif 000041
【０１１４】
として求めることができる。このときのｎは、数４１に示すようになる。
【０１１５】
【数４１】
0003952825.tif 000042
【０１１６】
（Ｃ−３．バッファ駆動能力の計算方法）
バッファ駆動能力の計算は、配線分割数の計算と同様に、直線近似された１パスについて、Required Arrival Timeを制約として、バッファ駆動能力を計算することを意味する。このバッファ駆動能力の計算は、遅延計算モデルＴpd及び配線分割数を用いて行うことができる。
【０１１７】
まず、バッファ駆動能力をｈとし、数３５を数４２のように表す。
【０１１８】
【数４２】
0003952825.tif 000043
【０１１９】
Required Arrival TimeをＴreqとしたとき、
【０１２０】
【数４３】
0003952825.tif 000044
【０１２１】
となれば、タイミング制約を満たすことになる。ｎは配線分割数の計算で得られた値を用いる。数４３を満たす最小のｈを求めると、
【０１２２】
【数４４】
0003952825.tif 000045
【０１２３】
となる。ただし、
【０１２４】
【数４５】
0003952825.tif 000046
【０１２５】
また、Ｔpdを最小にするｈは
【０１２６】
【数４６】
0003952825.tif 000047
【０１２７】
として求めることができる。このときのｈは、数４７に示すようになる。
【０１２８】
【数４７】
0003952825.tif 000048
【０１２９】
なお、Ｒd＞Ｒwとなる条件では、数３５、数３８、数４１、数４４で、α＝１として、配線分割数ｎとバッファ駆動能力ｈを求めれば良い。
【０１３０】
（Ｄ．ステップＳ２−４の具体的内容）
ステップＳ２−４で行うバッファ挿入位置の計算は、直線近似された１パスについて、配線分割数及びバッファ駆動能力から、ドライバセル及びバッファが駆動する負荷がドライバセル及びバッファの駆動能力に応じて均等になるようにバッファの挿入位置を決めることである。以下、手順を示すが、バッファ挿入位置は、始端側から終端側に向けて決めていく。
【０１３１】
［ステップＳ３−１］
パスの配線分割数に関する変数ｋと、パスの容量に関する変数Ｃrを導入し、ｋの初期値を配線分割数ｎ、Ｃrの初期値をパスの総容量Ｃtotalとする。
【０１３２】
［ステップＳ３−２］
ゲートが駆動すべき容量Ｃxを計算する。ｋ＝ｎの場合には、図７に示すように、配線長がｌ、集中定数容量の総計がＣLの配線を駆動抵抗がＲdのドライバセル１個と、駆動抵抗がＲbのバッファn個で駆動するとき、最も適切な分割割合ｘを求める。
【０１３３】
即ち、ドライバセルと個々のバッファのエルモア遅延が等しくなるように分割割合ｘを定める。単位長当たりの抵抗をｒ、単位長当たりの容量をｃ、バッファの入力容量をＣbとすると、
【０１３４】
【数４８】
0003952825.tif 000049
【０１３５】
【数４９】
0003952825.tif 000050
【０１３６】
となる。τd＝τbとなるときのｘを計算すると、
【０１３７】
【数５０】
0003952825.tif 000051
【０１３８】
となる。ただし、
【０１３９】
【数５１】
0003952825.tif 000052
【０１４０】
である。そこで、
【０１４１】
【数５２】
0003952825.tif 000053
【０１４２】
として、Ｃxを得る。
【０１４３】
これに対して、ｋ＜ｎなら
【０１４４】
【数５３】
0003952825.tif 000054
【０１４５】
として、Ｃxを得る。
【０１４６】
［ステップＳ３−３］
現在着目しているゲートが駆動する容量が配線負荷と集中定数容量とを併せてＣxとなる位置にバッファを挿入する。もし、集中定数容量を加えることで、ゲートが駆動する容量がＣxを超える場合は、以下のように処理を場合分けする。
【０１４７】
（ａ）着目ゲートと挿入するバッファの駆動能力を比較して、バッファの駆動能力が大きいなら、集中定数容量（分岐）の直前をバッファ挿入位置とする。
（ｂ）（ａ）の場合でも、集中定数容量に相当する分岐がオフローディングされているなら、分岐直後をバッファ挿入位置とする。
（ｃ）着目ゲートと挿入するバッファの駆動能力を比較して、着目ゲートの駆動能力が同じか大きいなら、集中定数容量（分岐）の直後をバッファ挿入位置とする。
【０１４８】
［ステップＳ３−４］
バッファを挿入した結果、着目ゲートが駆動することになった容量をＣxとする。ただし、挿入されたバッファの入力容量は含まない。
【０１４９】
［ステップＳ３−５］
ｋ：＝ｋ−１、Ｃr：＝Ｃr−Ｃx
［ステップＳ３−６］
ここで、ｋ＞１であれば、ステップＳ３−２へ移行する。ｋ＞１でなければ、終了する。
【０１５０】
（Ｅ．ステップＳ１−４中、バッファ候補の選択処理）
バッファ候補の選択には、バッファの位置関係によりルールベースでバッファ候補を選ぶ方法と、制約条件を設けてバッファ候補を選ぶ方法がある。
【０１５１】
（Ｅ−１．ルールベース法によるバッファ候補の選択）
ルールベース法によるバッファ候補の選択を行う場合には、パスでのバッファ挿入位置の決定後、スラックの計算を行い、スラックが小さい順にパスに優先順位を与える。次いで、優先順位の高いパスから順にバッファ挿入候補を選んでいく。バッファ候補の選択において、優先順位が高いパスによって配置されたバッファと位置的に競合する場合には、バッファの位置関係によって定められた統合処理を行うものとする。
【０１５２】
図８はバッファの統合処理を示す流れ図であり、ステップＳ４−１は、優先順位の低いパスのバッファ候補が、優先順位の高いパスのバッファ候補間に入る場合、この優先順位の低いパスのバッファ候補は選択しないことを意味している。
【０１５３】
図９はステップＳ４−１の実行例を示す回路図である。図９の例では、バッファ候補９０は優先順位２のパスに挿入したバッファ候補であるが、バッファ候補９０は優先順位１のパスに挿入されているので、バッファ候補９０は選択しないことになる。
【０１５４】
図１０、図１１はステップＳ４−２の実行例を示す回路図である。図１０の例では、分岐直前にバッファ候補１００があり、かつ、次の両枝の分岐直後にバッファ候補１０１、１０２があるので、バッファ候補１００は挿入しないことになる。図１１の例では、分岐の手前及び直後にバッファ候補１１０、１１１がある場合、バッファ候補１１０を分岐直後に移動することになる。
【０１５５】
（Ｅ−２．制約条件によるバッファ候補の選択）
制約条件によるバッファ候補の選択を行う場合には、回路データは、ツリー状配線とする（図１２Ａ参照）。そして、制約条件によるバッファ候補の選択は以下の手順で行う。
【０１５６】
［ステップＳ５−１］
パスでのバッファ挿入位置の決定後、スラックの計算を行い、スラックが小さい順にパスに優先順位を与え、優先順位が高いパスほど、ツリーの左側（または右側）に来るように構成しなおす（図１２Ｂ参照）。
【０１５７】
［ステップＳ５−２］
バッファに優先順位を与える。この場合、（１）バッファにパスと同じ優先順位を与える。（２）オフローディングのために挿入されるバッファの優先順位は、タイミング最適化のために挿入されるバッファとは区別する。（３）バッファ候補が分岐の手前近傍にあるときは、分岐の直後にもバッファ候補を登録する。このバッファは、オフローディングのためのバッファとして扱う。
【０１５８】
［ステップＳ５−３］
バッファ候補を全て回路中に仮配置する。次に、ツリー状配線を右優先（優先順位が高いパスほど、ツリーの右側に来るようにした場合は、左優先）にボトムアップで巡回し（図１３参照）、以下の（１）、（２）を順次行う。
【０１５９】
（１）着目バッファ候補の前段ゲート（または前段バッファ候補）から着目バッファの次段ゲート（または次段バッファ候補）までの遅延時間を計算。次段ゲートが複数あれば全て計算。着目バッファ候補の前段ゲート（または前段バッファ候補）が着目バッファ候補を通らない経路を持つなら、その経路上での次段ゲート（または次段バッファ候補）までの遅延時間も計算。遅延時間の計算は、バッファ候補が在る場合と無い場合のそれぞれについて行う。
【０１６０】
（２）バッファがある場合と無い場合の遅延時間を比較して、バッファが無い方が遅延時間が小さいのなら、バッファ候補は削除。バッファが在る方が遅延時間が小さいのなら、バッファ候補を選択する。
【０１６１】
なお、ステップＳ５−３の処理で処理工数を省くために、ステップＳ５−３の処理前に、ツリー状配線を巡回し、枝ごとに、枝の中で最も優先順位の高いバッファ候補とオフローディングのためのバッファを候補に残し、その他の候補は削除するというように候補の数を減らしておくことも可能である。
【０１６２】
（Ｆ．ステップＳ１−４中、余分なバッファを取り除く処理）
余分なバッファを取り除く処理では、対象バッファの前段バッファ以下の全終端において、対象バッファが在る場合と除いた場合を比較し、（Ａ１or Ａ２）and Ａ３を満たす場合に、バッファを削除する。ただし、Ａ１はバッファを削除しても遅延時間が大きくならないという状態、Ａ２はバッファが在る場合にRequired Arrival Timeを満たすパスが、バッファを削除しても、Required Arrival Timeを超えないという状態、Ａ３はバッファを削除しても、制約条件に違反する箇所が発生しないという状態を意味する。
【０１６３】
（Ｇ．本発明の一実施形態の効果）
本発明の一実施形態では、直線近似された１パスごとにバッファ挿入条件を、解析式を直接解くことにより算出するとしているが、直線近似された１パスごとに解析式を直接解いて算出したバッファ挿入条件をバッファ候補として作成した解集合は、無作為に作成される解集合に比べて組合せが非常に少ないので、計算コストが殆どかからない上に、バッファ挿入条件自体が十分な妥当性を持つことになる。また、解集合が少ないことから、ルールベースのバッファ選択も容易になる。
【０１６４】
また、本発明の一実施形態では、遅延計算モデルとして、モーメントマッチング法の１次近似で計算される遅延時間をエルモア遅延モデルと係数の形で表される遅延計算モデルを使用するとしているが、この遅延計算モデルは、エルモア遅延モデルの簡潔さを損なうことなく、精度の良い遅延計算モデルとなる。また、２次のモーメントまで考慮されているので、シーディング効果の影響を考慮することができる。
【０１６５】
したがって、本発明の一実施形態によれば、半導体集積回路のタイミング最適化を低コストかつ高精度に行うことができる。
【０１６６】
【発明の効果】
以上のように、本発明によれば、直線近似された１パスごとにバッファ挿入条件を所定の解析式を直接解いて算出するとしたことにより、計算コストの大きい遅延計算を繰り返す必要が無く、また、バッファ挿入条件自体が十分な妥当性を持つことになるので、半導体集積回路のタイミング最適化を低コストかつ高精度で行うことができる。
【図面の簡単な説明】
【図１】本発明の半導体集積回路のバッファ挿入方法及び装置の一実施形態を示す図である。
【図２】本発明の半導体集積回路のバッファ挿入方法の一実施形態で行われるステップＳ１−３の具体的内容を示す流れ図である。
【図３】配線モデルを示す回路図である。
【図４】直線近似された１パスを示す回路図である。
【図５】図４に示す配線モデルをエルモア遅延が等しくなるように置き換えた配線モデルを示す回路図である。
【図６】実効抵抗を説明するための回路図である。
【図７】配線モデルを示す回路図である。
【図８】バッファの統合処理を示す流れ図である。
【図９】図８のステップＳ４−１の実行例を示す回路図である。
【図１０】図８のステップＳ４−２の実行例を示す回路図である。
【図１１】図８のステップＳ４−２の実行例を示す回路図である。
【図１２】制約条件によるバッファ候補の選択の説明に使用する図である。
【図１３】制約条件によるバッファ候補の選択の説明に使用する図である。
【符号の説明】
１０…回路情報格納手段
１１…タイミング制約格納手段
１２…配線経路の直線近似手段
１３…バッファ挿入条件計算手段
１４…バッファ挿入候補生成手段
１５…バッファ挿入候補選択手段
２０…オフローディングバッファ挿入判定手段
２１…近似直線のパラメータ更新手段
２２…配線分割数計算手段
２３…バッファ駆動能力計算手段
２４…バッファ挿入位置計算手段
【図１】
0003952825.tif 000055
【図２】
0003952825.tif 000056
【図３】
0003952825.tif 000057
【図４】
0003952825.tif 000058
【図５】
0003952825.tif 000059
【図６】
0003952825.tif 000060
【図７】
0003952825.tif 000061
【図８】
0003952825.tif 000062
【図９】
0003952825.tif 000063
【図１０】
0003952825.tif 000064
【図１１】
0003952825.tif 000065
【図１２】
0003952825.tif 000066
【図１３】
0003952825.tif 000067