(57)【要約】  【課題】  スタイナー木の多くの変形バリエーションを得ることができ、また配線プロセスにおいて使用される配線ツールの種類に依存することなく、高い精度が要求される配線混雑度評価に適用でき、もって種々の配線仕様を満たす回路の配線設計を容易に行うことができるスタイナー木ハンドリング装置等を得る。  【解決手段】  複数のノードを接続する水平または垂直な複数のエッジから構成されるスタイナー木を扱うスタイナー木ハンドリング装置であって、一つの形状を有するスタイナー木を取得するスタイナー木取得部と、取得されたスタイナー木のサイズを変更することなく、異なる形状のスタイナー木に変形するスタイナー木変形部とを備える。  【選択図】  図１
2005275780.tif 000002
【特許請求の範囲】
【請求項１】
複数のノードを接続する水平または垂直な複数のエッジから構成されるスタイナー木を扱うスタイナー木ハンドリング装置であって、
少なくとも一つの形状を有するスタイナー木を取得するスタイナー木取得部と、
取得されたスタイナー木のサイズを変更することなく、異なる形状のスタイナー木に変形するスタイナー木変形部と
を備えてなるスタイナー木ハンドリング装置。
【請求項２】
請求項１に記載のスタイナー木ハンドリング装置において、
前記スタイナー木変形部は、前記スタイナー木の連続性を維持したままで変形することを特徴とするスタイナー木ハンドリング装置。
【請求項３】
請求項１に記載のスタイナー木ハンドリング装置において、
前記スタイナー木変形部は、前記スタイナー木の一つのエッジを削除することにより生じる二つのエッジの連続体を、前記削除したエッジとは異なるエッジを用いて再接続することによりスタイナー木を変形することを特徴とするスタイナー木ハンドリング装置。
【請求項４】
請求項２に記載のスタイナー木ハンドリング装置において、
前記スタイナー木変形部による変形に際して、各エッジのスライドが他のエッジのスライドに依存するか否かの依存関係を判断して依存グラフを作成する依存グラフ作成部を備えているスタイナー木ハンドリング装置。
【請求項５】
請求項４に記載のスタイナー木ハンドリング装置において、
前記依存グラフ作成部により作成されたグラフに基づいて、エッジを独立にスライドすることができるグループを判断する独立スライドグループ判断部を備えているスタイナー木ハンドリング装置。
【請求項６】
請求項５に記載のスタイナー木ハンドリング装置において、
前記独立スライドグループ判断部による判断結果に基づいて、スタイナー木の変形バリエーションの総数を求めるバリエーション総数計算部を備えているスタイナー木ハンドリング装置。
【請求項７】
請求項５または請求項６に記載のスタイナー木ハンドリング装置において、
前記独立スライドグループ判断部による判断結果に基づいて、スタイナー木のエッジが所定の範囲を移動する場合において、該移動するエッジを有するスタイナー木の変形バリエーション数を計算する部分バリエーション計算部を備えているスタイナー木ハンドリング装置。
【請求項８】
請求項７に記載のスタイナー木ハンドリング装置において、
前記バリエーション総数計算部により計算されたスタイナー木のバリエーションの総数と、前記部分バリエーション計算部により計算されたスタイナー木のバリエーション数とに基づいて、所定領域のエッジの混雑度を計算する混雑度計算部を備えているスタイナー木ハンドリング装置。
【請求項９】
複数のノードを接続する水平または垂直な複数のエッジから構成されるスタイナー木を扱うスタイナー木ハンドリング方法であって、
一つのスタイナー木を取得する取得ステップと、
前記取得ステップで得られたスタイナー木のサイズを変更することなく、異なる形状のスタイナー木に変形するスタイナー木変形ステップと
を備えてなるスタイナー木ハンドリング方法。
【請求項１０】
複数のノードを接続する水平または垂直な複数のエッジから構成されるスタイナー木を扱う処理をコンピュータに実行させるスタイナー木ハンドリングプログラムであって、
一つのスタイナー木を取得する取得ステップと、
前記取得ステップで得られたスタイナー木のサイズを変更することなく、異なる形状のスタイナー木に変形するスタイナー木変形ステップと
をコンピュータに実行させるスタイナー木ハンドリングプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、与えられたスタイナー木の変形を行うアルゴリズムを提供すると共に、この変形により、スタイナー木が存在し得る範囲を判断し、さらに変形によるスタイナー木のバリエーション数を得ることができて配線混雑度評価を行うことができるスタイナー木ハンドリング装置、スタイナー木ハンドリング方法及びスタイナー木ハンドリングプログラムに関するものである。
【背景技術】
【０００２】
従来からスタイナー木は、LSIのレイアウト設計でも、特に配線問題に広く応用されている。この設計では、ネットの配線長や配線経路の予測、グローバル配線での経路決定などが代表的である。また、このスタイナー木の作成アルゴリズムでは、エッジに重み付けられたトータルコストが最小になるスタイナー木が一つ作成される。しかし、実際にはコスト最小になるスタイナー木は複数存在する。この性質を柔軟性という。同一コストで複数存在するスタイナー木から設計目的にあったスタイナー木を得る手法として、スタイナー木のフリップに着目した手法が提案されている（例えば非特許文献１，２参照）。
【０００３】
フリップとは、同一の水平線や垂直線の上にない２点間のエッジ上にスタイナーポイントを持たないもので、upper-Lかlower-Lのどちらかの接続が可能となるものを言う。非特許文献１に記述されているHuの手法は、フリップ可能なエッジをソフトエッジと定義して、そのエッジの確定は後に延ばす手法である。
【０００４】
非特許文献２のBozorgzadeh等の手法は、与えられたスタイナー木に対して、フリップ可能な部分を最大にするための変形を行う。このように、スタイナー木のフリップという柔軟性を利用して、設計目的に合ったスタイナー木を得ることは、非常に有効な手法である。
【０００５】
上述したようなフリップを用いない方法でのスタイナー木の変形は、ブロッケージを回避したリピータ挿入に適用されている（非特許文献３参照）。このAlpertの手法では、ブロッケージを無視して作成されたスタイナー木に対して、スタイナー木のパスを削除して、新たに迷路法で経路サーチすることにより変形を行う。この場合、最初に与えられるスタイナー木はガイドであり、そのガイドをもとにリピータ挿入の目的に合ったスタイナー木に変形する。
【０００６】
このように、スタイナー木の柔軟性は非常に応用範囲の広い性質であり、従来、このスタイナー木の柔軟性を利用した変形により、スタイナー木のバリエーション数を求め、それによって配線性評価（配線混雑度評価）を得ることが行われている。この配線性評価は、実際に配線する前に、配線領域を小さな領域に分割して、各領域についての実際の配線量と配線を許容できる配線通過可能容量を比較した混雑度を計算して、配線可能性を示すことである。
【０００７】
配線性評価の重要性は、素子の配置段階で評価を行い、配線できるように配置を改善するための指標を提供できることにある。配線性評価で配線できると判断された場合には、詳細配線まで配線できることを保証しなければならない。
【０００８】
配線性評価（配線混雑度評価）の手法としては、経験的手法、確率的手法、グローバル配線手法の３つが代表的である。
経験的手法としては、バウンディングボックスをベースにした手法が知られる（非特許文献４，５参照）。またRent'sの法則を利用した手法も知られる（非特許文献６参照）。
確率的手法としては、Houの手法とLouの手法が知られる（非特許文献７，８参照）。
グローバル配線手法としては、Parakh等およびWang等の手法がある（非特許文献９，１０参照）。
【非特許文献１】J. Hu, S. Sapatnekar. "A Timing-constrained Algorithm for Simultaneous Global Routing of Mutiple Nets", Proc. ICCAD, 2000
【非特許文献２】E. Bozorgzadeh, Ryan Kastner, Majid Sarrafzadeh, "Creating and Exploiting Flexibility in Steiner Trees", Proc. DAC, 2001
【非特許文献３】C. J. Alpert, G. Gandham, et al, "Steiner Tree Optimization for Buffers, Blockages, and Bays", IEEE TCAD vol.20, No.4, 2001
【非特許文献４】M. Wang and M. Sarrafzadeh, "Behavior of Congestion Minimization During Placement", Proc. ISPD, 1999
【非特許文献５】C. E. Cheng,  "RISA: Accurate and Efficient Placement Routability Modeling", Proc. ICCAD, 1994
【非特許文献６】X. Yang, R. Kastner, and M. Sarrafzadeh, "Congestion Estimation During Top-down Placement", IEEE Transactions on Computer-Aided Design, Vol.21, No.1, 2002
【非特許文献７】W. Hou, H. Yu and W. H. Kao, "A New Congestion-Driven Placement Algorithm Based on Cell Inflation", Proc. ASPDAC, 2001
【非特許文献８】J. Lou, S. Thakur, et al, "Estimating Routing Congestion Using Probabilistic Analysis", IEEE Transactions on Computer-Aided Design, Vol.21, No.1, 2002
【非特許文献９】P. N. Parakh, R. B. Brown and K. A. Sakallah, "Congestion Driven Quadratic Placement", Proc. DAC, 1998
【非特許文献１０】M. Wang and M. Sarrafzadeh, "Modeling and Minimization of Routing Congestion", Proc. ASPDAC, 2000
【発明の開示】
【発明が解決しようとする課題】
【０００９】
しかしながら、スタイナー木の作成及び変形について上述した非特許文献１〜３に示される手法に関しては、スタイナー木の柔軟性をより有効利用して現実により即した変形を行うことによりスタイナー木の存在する範囲及びその変形によるスタイナー木のバリエーションを求めるようにすることが要望されている。
【００１０】
また、配線混雑度評価について上述した非特許文献４〜１０に示される手法に関しては以下のような課題がある。
非特許文献４によるバウンディングボックスの手法は、バウンディングボックス周囲長さの半分を配線経路と仮定する方法が一番単純なモデルであるが、実用的ではない。
【００１１】
非特許文献５に紹介されるRISAの手法では、バウンディングボックス内のあるロケーションを配線が通る確率を、複数のスタイナー木から作成された配線分布マップに基づいて得る。この手法では、一つのネットについて、配線が通過する領域をバウンディングボックスの範囲内にしている。そして、その範囲内のロケーション(x,y)を配線が通過する可能性は、ピン数を変化させると共に、各ピン数についての複数のピンをランダムに配置して得られる複数のセットに対してスタイナー木を生成して、配線分布マップとして求める。また、非特許文献６の手法では、Rent'sの法則から配線長予測ができる点を利用している。
【００１２】
これら経験的手法では、実際には通らない経路についてもそこに配線が行われるものと、ある程度仮定してしまうため、配線混雑度評価の精度としては高くない。
【００１３】
確率的な手法として、非特許文献７に示されるHouの手法では、ネットのピン配置の中心から各ピンと接続するstar-modelを利用し、２ピン間はlower-Lかupper-Lのどちらかが実配線では使われるという前提の確率となっている。非特許文献８に示されるLouの手法では、スタイナー木作成をベースに２ピンペアを作成し、その２ピンペア間のすべての経路数から確率的に求めている。
【００１４】
これら確率的手法では、２ピン間の混雑度は、複数の折れ曲がりも含めて計算が可能であるが、ネットのかたちを決めるスターやスタイナー木が一つに決められてしまうため、作成されるスタイナー木に依存した評価となるという問題がある。
【００１５】
グローバル配線による手法として、非特許文献９に示されるParakh等の手法及び非特許文献１０に示されるWang等の手法に関する配線性混雑度の見積では、実際の配線について評価に使用されたと同じグローバル配線を使う場合には精度は高くなるが、一般的にグローバル配線エンジンの能力に依存した評価になる。また、使うグローバル配線の能力によって評価結果が異なってくるという問題がある。
【００１６】
本発明は、上述した課題を解決するためになされたものであり、スタイナー木の柔軟性を利用したスタイナー木の変形を行うことができ、またそれにより、スタイナー木の存在する範囲を求めることができ、あるいはその変形によるスタイナー木のバリエーション数を求めることができ、さらにはまた、その結果を用いて高い精度で配線混雑度の評価を行うことができるスタイナー木のハンドリング装置、ハンドリング方法及びハンドリングプログラムを提供することを目的としている。
【課題を解決するための手段】
【００１７】
上述した課題を解決するため、本発明は、複数のノードを接続する水平または垂直な複数のエッジから構成されるスタイナー木を扱うスタイナー木ハンドリング装置であって、少なくとも一つの形状を有するスタイナー木を取得するスタイナー木取得部と、取得されたスタイナー木のサイズを変更することなく、異なる形状のスタイナー木に変形するスタイナー木変形部とを備えてなるものである。
【００１８】
また、本発明のスタイナー木ハンドリング装置において、前記スタイナー木変形部は、前記スタイナー木の連続性を維持したままで変形することを特徴とする。
また、本発明のスタイナー木ハンドリング装置において、前記スタイナー木変形部は、前記スタイナー木の一つのエッジを削除することにより生じる二つのエッジの連続体を、前記削除したエッジとは異なるエッジを用いて再接続することによりスタイナー木を変形することを特徴とする。
【００１９】
また、本発明のスタイナー木ハンドリング装置においては、一つのエッジがスライド可能であるか否かを所定の判断基準に基づいて判断するスライド判断部を備え、前記スタイナー木変形部は前記一つのエッジをスライドさせてスタイナー木を変形することを特徴とすることができる。
【００２０】
また、本発明のスタイナー木ハンドリング装置において、前記スライド判断部は、スタイナー木より形成される一つのビンにおける向かい合う辺上にスタイナー木のエッジが存在し、且つ前記向かい合う辺のそれぞれの両端に他のエッジの端又はノードが存在する場合に、前記辺上のスタイナー木のエッジはパラレルスライドが可能であると判断することを特徴とすることができる。
【００２１】
また、本発明のスタイナー木ハンドリング装置において、前記スライド判断部は、スタイナー木より形成される一つのビンを囲む長方形の４辺のうちの隣り合う２辺上にスタイナー木のエッジが存在し、且つ前記隣り合う２辺の交点にスタイナー木のノードが存在しない場合に、フリップスライドが可能であると判断することを特徴とすることができる。
【００２２】
また、本発明のスタイナー木ハンドリング装置において、前記スライド判断部は、パラレルスライドまたはフリップスライドまたはこれらの組み合わせによる変形においては、該変形によって生じるスタイナー木により形成される複数のビンのそれぞれにより定まる横列上にあるスタイナー木の垂直エッジの数は一定であり、且つ、前記複数のビンのそれぞれにより定まる縦列上にあるスタイナー木の水平エッジの数は一定であるというルールをスタイナー木の変形特性として用いることを特徴とすることができる。
【００２３】
また、本発明のスタイナー木ハンドリング装置において、前記スライド判断部は、あるエッジをスライド可能にする同一ビン内の両エッジ上に、パラレルスライドまたはフリップスライドまたはこれらの組み合わせによる変形により、スタイナー木の他のエッジが位置付けられることがあり得ない場合、そのエッジはスライド可能ではないというルールをスタイナー木の変形特性として用いることを特徴とすることができる。
【００２４】
また、本発明のスタイナー木ハンドリング装置において、前記スライド判断部は、一つのビンにより定まる横列上にある垂直エッジの数が一つの場合、スタイナー木の全ての水平エッジはパラレルスライドによりその横列を横切ることはできず、また一つのビンにより定まる縦列上にある水平エッジの数が一つの場合、スタイナー木の全ての垂直エッジはパラレルスライドによりその縦列を横切ることはできないというルールをスタイナー木の変形特性として用いることを特徴とすることができる。
【００２５】
また、本発明のスタイナー木ハンドリング装置において、前記スライド判断部は、スタイナー木のノードではない位置に接続するエッジが一つのみの場合、そのエッジはパラレルスライドできないというルールをスタイナー木の変形特性として用いることを特徴とすることができる。
【００２６】
また、本発明のスタイナー木ハンドリング装置において、前記スタイナー木変形部による変形に際して、各エッジのスライドが他のエッジのスライドに依存するか否かの依存関係を判断して依存グラフを作成する依存グラフ作成部を備えているものである。
【００２７】
また、本発明のスタイナー木ハンドリング装置において、前記依存グラフ作成部により作成されたグラフに基づいて、エッジを独立にスライドすることができるグループを判断する独立スライドグループ判断部を備えているものである。
【００２８】
また、本発明のスイナー木ハンドリング装置において、前記独立スライドグループ判断部による判断結果に基づいて、スタイナー木の変形バリエーションの総数を求めるバリエーション総数計算部を備えているものである。
【００２９】
また、本発明のスタイナー木ハンドリング装置において、前記独立スライドグループ判断部による判断結果に基づいて、スタイナー木のエッジが所定の範囲を移動する場合において、該移動するエッジを有するスタイナー木の変形バリエーション数を計算する部分バリエーション計算部を備えているものである。
【００３０】
また、本発明のスタイナー木ハンドリング装置において、前記部分バリエーション計算部は、一つの形状のスタイナー木の一つのエッジを一つの配線として、所定領域ごとの配線量を縦方向と横方向のそれぞれについて計算することを特徴とすることができる。
【００３１】
また、本発明のスタイナー木ハンドリング装置において、前記バリエーション総数計算部により計算されたスタイナー木のバリエーションの総数と、前記部分バリエーション計算部により計算されたスタイナー木のバリエーション数とに基づいて、所定領域のエッジの混雑度を計算する混雑度計算部を備えている。
【００３２】
また、本発明のスタイナー木ハンドリング装置においては、スタイナー木の変形に伴って、複数の所定領域のうちのいずれかの所定領域を通過するエッジの数が所定数を越えた場合には、当該所定領域においてはエッジのスライドができないものとして、再度スタイナー木の変形を行って前記バリエーション総数計算部によるバリエーションの総数と前記部分バリエーション計算部によるバリエーション数を計算することを特徴とすることができる。
【００３３】
また、本発明のスタイナー木ハンドリング装置において、前記再度の変形と計算は、前記スタイナー木取得部で取得される複数のスタイナー木であって、それぞれ異なる複数のノードの組に対応して取得されたスタイナー木に対して行われることを特徴とすることができる。
【００３４】
また、本発明は、複数のノードを接続する水平または垂直な複数のエッジから構成されるスタイナー木を扱うスタイナー木ハンドリング方法であって、一つのスタイナー木を取得する取得ステップと、前記取得ステップで得られたスタイナー木のサイズを変更することなく、異なる形状のスタイナー木に変形するスタイナー木変形ステップとを備えてなるものである。
【００３５】
また、本発明のスタイナー木ハンドリング方法において、前記スタイナー木変形ステップにおいては、各エッジのスライドが他のエッジのスライドに依存するか否かの依存関係を判断して依存グラフを作成する依存グラフ作成ステップを備えることができる。
【００３６】
また、本発明のスタイナー木ハンドリング方法において、前記依存グラフ作成ステップにおいて作成されたグラフに基づいて、エッジを独立にスライドすることができるグループを判断する独立スライドグループ判断ステップを備えることができる。
【００３７】
また、本発明のスタイナー木ハンドリング方法において、前記独立スライドグループ判断ステップによる判断結果に基づいて、スタイナー木の変形バリエーションの総数を求めるバリエーション総数計算ステップを備えることができる。
【００３８】
また、本発明のスタイナー木ハンドリング方法において、前記独立スライドグループ判断ステップによる判断結果に基づいて、スタイナー木のエッジが所定の範囲を移動する場合において、該移動するエッジを有するスタイナー木の変形バリエーションの数を計算する部分バリエーション計算ステップを備えることができる。
【００３９】
また、本発明のスタイナー木ハンドリング方法において、前記バリエーション総数計算ステップにより計算されたスタイナー木のバリエーション総数と、前記部分バリエーション計算ステップにより計算されたスタイナー木のバリエーション数とに基づいて、所定領域のエッジの混雑度を計算する混雑度計算ステップを備えることができる。
【００４０】
また、本発明のスタイナー木ハンドリング方法において、スタイナー木の変形に伴って、複数の所定領域のうちのいずれかの所定領域を通過するエッジの数が所定数を越えた場合には、当該所定領域においてはエッジのスライドができないものとして再度スタイナー木変形ステップとバリエーション総数計算ステップと部分バリエーション計算ステップとを繰り返すことを特徴とすることができる。
【００４１】
また、本発明は、複数のノードを接続する水平または垂直な複数のエッジから構成されるスタイナー木を扱う処理をコンピュータに実行させるスタイナー木ハンドリングプログラムであって、一つのスタイナー木を取得する取得ステップと、前記取得ステップで得られたスタイナー木のサイズを変更することなく、異なる形状のスタイナー木に変形するスタイナー木変形ステップとをコンピュータに実行させるものである。
【００４２】
また、本発明のスタイナー木ハンドリングプログラムにおいて、前記スタイナー木変形ステップにおいては、各エッジのスライドが他のエッジのスライドに依存するか否かの依存関係を判断して依存グラフを作成する依存グラフ作成ステップを備えてコンピュータに実行させることができる。
【００４３】
また、本発明のスタイナー木ハンドリングプログラムにおいて、前記依存グラフ作成ステップにおいて作成されたグラフに基づいて、エッジを独立にスライドすることができるグループを判断する独立スライドグループ判断ステップを備えてコンピュータに実行させることができる。
【００４４】
また、本発明のスタイナー木ハンドリングプログラムにおいて、前記独立スライドグループ判断ステップによる判断結果に基づいて、スタイナー木の変形バリエーションの総数を求めるバリエーション総数計算ステップを備えてコンピュータに実行させることができる。
【００４５】
また、本発明のスタイナー木ハンドリングプログラムにおいて、前記独立スライドグループ判断ステップによる判断結果に基づいて、スタイナー木のエッジが所定の範囲を移動する場合において、該移動するエッジを有するスタイナー木の変形バリエーションの数を計算する部分バリエーション計算ステップを備えてコンピュータに実行させることができる。
【００４６】
また、本発明のスタイナー木ハンドリングプログラムにおいて、前記バリエーション総数計算ステップにより計算されたスタイナー木のバリエーション総数と、前記部分バリエーション計算ステップにより計算されたスタイナー木のバリエーション数とに基づいて、所定領域のエッジの混雑度を計算する混雑度計算ステップを備えてコンピュータに実行させることができる。
【００４７】
また、本発明のスタイナー木ハンドリングプログラムにおいて、スタイナー木の変形に伴って、複数の所定領域のうちのいずれかの所定領域を通過するエッジの数が所定数を越えた場合には、当該所定領域においてはエッジのスライドができないものとして再度スタイナー木変形ステップとバリエーション総数計算ステップと部分バリエーション計算ステップとを繰り返してコンピュータに実行させることができる。
【００４８】
なお、上述したプログラムは、コンピュータにより読取り可能な記録媒体に記憶させることによって、スタイナー木ハンドリング装置を構成するコンピュータに実行させることが可能となる。なお、上記コンピュータにより読取り可能な記録媒体としては、ＣＤ−ＲＯＭやフレキシブルディスク、ＤＶＤディスク、光磁気ディスク、ＩＣカード等の可搬型記憶媒体や、コンピュータプログラムを保持するデータベース、或いは、他のコンピュータ並びにそのデータベースや、更に回線上の伝送媒体をも含むものである。
【発明の効果】
【００４９】
本発明によれば、スタイナー木の多くの変形バリエーションを得ることができ、また配線プロセスにおいて使用される配線ツールの種類に依存することなく、高い精度が要求される配線混雑度評価に適用でき、もって種々の配線仕様を満たす回路の配線設計を容易に行うことができるという効果を奏する。
【発明を実施するための最良の形態】
【００５０】
以下、本発明の実施の形態を図面を用いて説明する。
＜装置全体構成＞
図１は、本発明の実施の形態におけるスタイナー木のハンドリング装置を示すブロック図である。この装置は、ネットの情報を入力するネット情報入力部１、グリッドグラフ（Grid graph）を作成するグリッドグラフ作成部２、アンダーライインググリッドグラフ（Underlying grid graph）を作成するアンダーライインググリッドグラフ作成部３、スタイナー木を作成するスタイナー木作成部４、作成された一つのスタイナー木の情報を入力するスタイナー木情報入力部５、入力されたスタイナー木のエッジを選択するスタイナー木エッジ選択部６、エッジを前方向（FORWARD）にスライド可能か否かを判断するエッジ前方向スライドチェック部７、エッジを後方向（BACKWARD）にスライド可能か否かを判断するエッジ後方向スライドチェック部８を備えている。
【００５１】
また、このスタイナー木ハンドリング装置は、作成されたスタイナー木の情報とスライドチェック部７，８のチェック結果に基づいてフリップ（Flip）可能な場所の検出を行うフリップ検出部９、スライドチェックと検出フリップとに基づいて依存グラフを作成し管理する依存グラフ管理部１０、依存グラフから独立グラフ（補グラフ）を作成する独立グラフ作成部１１、独立グラフとグリッドグラフに基づいてスタイナー木のバリエーションの数を計算するスタイナー木のバリエーション数計算部１２及びそれらの結果に基づいて配線混雑度を計算する配線混雑度計算部（エッジの混雑度計算部）１３、その結果を出力する配線混雑度計算結果出力部１４を備えている。
【００５２】
なお、スタイナー木のバリエーション数計算部１２は本発明のスタイナー木のバリエーションの総数を計算するバリエーション総数計算部と、あるエッジが所定領域にあるときのスタイナー木のバリエーション数を計算する部分バリエーション計算部を構成している。また、ネット情報入力部１〜スタイナー木作成部４は、本発明のスタイナー木取得部を構成している。さらにスタイナー木エッジ選択部６〜フリップ検出部９は、本発明のスタイナー木変形部を構成している。また、依存グラフ管理部１０は本発明の依存グラフ作成部を構成している。さらに独立グラフ作成部は本発明の独立スライドグループ判断部にて構成されている。
【００５３】
＜スタイナー木の作成＞
図２は、グリッドグラフ作成部２、アンダーライインググリッドグラフ作成部３及びスタイナー木作成部４によるスタイナー木の作成動作について説明するフローチャート、図３はグリッドグラフを示す図、図４はアンダーライインググリッドグラフを示す図、図５はスタイナー木の作成部４の動作の一例を示す概念図である。
【００５４】
以下スタイナー木の作成動作について説明する。
まず、ネット情報入力部１より一つのネットについての複数のピンを入力する（ステップＳ１）。これらピンについて、グリッドグラフ作成部２はグリッドグラフを作成する（ステップＳ２）。
【００５５】
グリッドグラフについては、図３に示されるように配線領域を概念的にm×n矩形領域に分割し、すべての矩形の幅wと高さhは同一とされる。一つの矩形領域をバーテックス（vertex）とし、隣接するバーテックスの間にはエッジ（edge）があるものとしてG(Vg,Eg)を定義する。
【００５６】
この配線領域で配線が行われる対象となる回路は、ハイパーグラフH(Pall,Nall)で表現される。ここで、Pallはセルのピンの集合であり、各ピンはグラフのバーテックスとなる。Nallはグラフのエッジの集合であり、各エッジは２個以上のピンからなるPallの部分集合であり、回路のネットを表現する。また配線対象となる回路において、セルの配置はすべて完了していると仮定する。つまり、H(Pall,Nall)において、各ピンがG(Vg,Eg)上のどのバーテックスに存在するかすでに決定していることとする。
【００５７】
次に、アンダーライインググリッドグラフ作成部３により作成される（ステップＳ３）アンダーライインググリッドグラフについて説明する。
一つのネットN∈Nallを構成するピンの集合P∈Pallについて、直線からなる（rectilinear）スタイナー木(以下RSTという)とは、ネット内のすべてのピンを接続する木の中で総線長が最小で、エッジが垂直または水平であるものを言う。  このRST はバーテックスとエッジからなり、S(Vs,Es)と定義する。
【００５８】
アンダーライインググリッドグラフとは、図４に示されるように、ネット内のすべてのピンPを通過するすべての水平線および垂直線からなるグリッドグラフであり、U(Vu,Eu)と定義する。
【００５９】
RST作成部は、図５（ａ）に示すように入力された複数のピン情報に基づいて、図５（ｂ）に示すようにピンのそれぞれに１つずつのグループを設定する（ステップＳ４）と共に、２つのグループ間の距離が一番近いところを接続する（ステップＳ５）。そして図５（ｃ）に示すように接続された２つのグループを１つのグループにしていく（ステップＳ６）という処理を繰り返し（ステップＳ７）、図５（ｄ）に示すように最終的にグループを一つにする処理を行ってRSTを作成する。作成されたRSTの一例を示す図４のU(Vu,Eu)において、４つのエッジ（グラフのグリッドエッジ）に囲まれて、その内部に他のエッジを持たない領域（長方形領域）をビン(Bin)と呼ぶ。
【００６０】
文献「M. Hanan. On Steiner's problem with rectilinear distance, SIAM J. Appl. Math., 14 (1966), pp. 255？265.」によれば、このアンダーライインググリッドグラフはHanan gridとも呼ばれ、RSTは少なくともこのHanan gridのサブグラフとして存在していることが知られている。
【００６１】
RSTのバーテックスの中で、ピンPではないバーテックスで、しかも３つ以上のエッジと接続がある時、そのバーテクスをスタイナー点と呼ぶ。図４のRSTでは、ビン(2,3)におけるSouth-Eastのコーナーのバーテックスはスタイナー点である。RSTのサイズとは、RSTを構成するエッジの長さの総和であり、|S(Vs,Es)|と定義する。
【００６２】
文献「J. Ho, G. Vijayan and C. K. Wong, "New Algorithms for the Rectilinear Steiner Tree Problem", IEEE Transactions on Computer-Aided Design, Vol.9, No.2, 1990」によれば、RSTにおいて、フリップによって他のエッジと重なることがないとき、このRSTは安定若しくは不変（stable）であるという。
【００６３】
＜RSTの変形＞
（RSTの変形意義）
マルチピンネットN∈Nall に含まれるすべてのピンPを接続する一つのRST S(Vs,Es)が与えられたとき、そのRSTのサイズ|S(Vs,Es)|を変えず、しかもネットNのRSTであるという条件を保ちながら、RSTを変形する。この変形は、G(Vg,Eg)上で、既存のエッジのスライドおよびフリップのみで行う。RSTの変形により作成されるすべてのRSTの集合をT(S(Vs,Es))とする。G(Vg,Eg)において、ロケーション(x,y)にあるバーテックスをv(x,y)とし、このバーテックスに対応する配線領域の4辺をそれぞれEast, West, North, Southとする。
【００６４】
T(S(Vs,Es))の中でv(x,y)に対応する配線領域の4辺のいずれかの辺を通過するRSTの集合をTx,y,dir(S(Vs,Es))と定義する。dirは、East, West, North, Southのいずれかである。また、G(Vg,Eg)の各バーテックスに対応する配線領域の4辺は、それぞれ所定の配線通過可能な容量を持っており、それをC(x,y,dir)と定義する。
【００６５】
|Tx,y,dir(S(Vs,Es))| > 0となるG(Vg,Eg)上のバーテックスの集合は、与えらたRSTがその変形により通過する可能性のある領域を示す。一つのネットに与えられたRST S(Vs,Es)ついて、RSTの変形により、ロケーション(x,y)の辺dirをエッジiが通過するRSTの集合をTi,x,y,dir(S(Vs,Es))とすると、ロケーション(x,y)の辺dirをエッジiが通過する確率Pi,x,y,dirは式(1)となる。このPi,x,y,dirをエッジiによるロケーション(x,y)の辺dirでの確率的な配線要求量と呼ぶ。
【００６６】
RSTのすべての変形により生成されるRSTによるロケーション(x,y)の辺dirでの確率的な配線要求量の総和Qx,y,dirは式(2)で計算できる。なお、式(2)の加算はｉについて行われる。すべてのネットについてQx,y,dirを求めた総和を配線通過可能容量C(x,y,dir)で割ることにより、ロケーション(x,y)の辺dirでの配線混雑度を求めることができる。
【００６７】
従って、解くべき問題は、一つのRST S(Vs,Es) が与えられた場合、このRSTに対する変形によるRSTの数|T(S(Vs,Es))|およびRSTの各エッジについて|Ti,x,y,dir(S(Vs,Es))|を求めることである。
【００６８】
Pi,x,y,dir=|Ti,x,y,dir(S(Vs,Es))|/|T(S(Vs,Es))|                     (1)
Qx,y,dir=ΣPi,x,y,dir                                              (2)
【００６９】
（RSTの変形アルゴリズム）
一つの安定したRST S(Vs,Es)が与えられたとき、このRSTに対するアンダーライインググリッドグラフU(Vu,Eu)を利用して、|T(S(Vs,Es))|および|Ti,x,y,dir(S(Vs,Es))|を求める機能的（greedy）なアルゴリズムを提案する。
アルゴリズムは、まずRSTのU(Vu,Eu)での各エッジの可動範囲とエッジ可動の依存関係を求め、この依存関係からRSTのバリエーション数を求める。また、このバリエーション数の中で、U(Vu,Eu)上の各ビンにエッジを持つバリエーション数を各ビン毎に求める。
【００７０】
RSTのバリエーション数は、変形によるRSTの数|T(S(Vs,Es))|を求めるに使われ、ビン毎に求められたバリエーション数はロケーション(x,y)のdirをエッジｉが通過するRSTの集合|Ti,x,y,dir(S(Vs,Es))|を求めるのに使われる。図６では、左側の図６（ａ）のようなRSTが与えらた時、A,B,Cのようなエッジの移動が可能である。A,Cのようにエッジを移動した場合、図６（ｂ）のようにさらにDのようにエッジが可動となる。本実施の形態におけるアルゴリズムは、このようにエッジの移動によってできるRSTの数を数え上げる手続きが基本となっている。また、水平および垂直の位置にない２点の経路については、L-shapeまたはZ-shapeの２回の折れ曲がり経路を仮定する。
【００７１】
（基本変形）
RSTの変形はまず、図７（ａ）（ｂ）に示される２つのオペレーション、パラレルスライド（parallel slide）及びフリップスライド（flip slide）の任意の組み合わせによるオペレーションで実行する。このオペレーションは、RSTの接続を切断することなく変形が可能であるので、連続変形と呼ぶ。これらのオペレーションはすべてU(Vu,Eu)上で行う。
【００７２】
（定義１：平行スライド）
U(Vu,Eu)上のビンにおける向かい合う平行エッジ上にまたがってRSTのエッジが存在し得て、向かい合うエッジのそれぞれの両端に他のエッジの端またはノードが存在する場合、その平行エッジをまたがるエッジはパラレルスライド可能である。
【００７３】
（定義２：フリップスライド）
U(Vu,Eu)上のビンを囲む４辺の隣り合う２辺上にRSTのエッジが存在し得て、その２つのエッジの交点にピンまたはスタイナーノード（ノード）がない場合、フリップスライドが可能である。
【００７４】
（スライドの特性）
与えられるRSTは安定であるので、パラレルスライドによりRSTの別のエッジと重なることはなく、またフリップスライドにより別のエッジと重なることもない。スライドに関しては重要な４つの特性（property）があり、スライド範囲の検索の際に、検索空間を小さくするために利用される。
【００７５】
（特性１）
パラレルスライドおよびフリップスライドの組み合わせによる変形によりできるRSTでは、横列（U(Vu,Eu)における各行（raw））にある垂直エッジ（vertical edge）の数は一定であり、縦列（U(Vu,Eu)における各列（column））にある水平エッジ（horizontal edge）の数は一定である。
【００７６】
（特性２）
あるエッジをスライド可能にする同一ビン内の両エッジ上に、パラレルスライドおよびフリップスライドの組み合わせではRSTの他のエッジが来ることがあり得ないとき、そのエッジはスライド可能（slidable）ではない。
【００７７】
（特性３）
一つの行にある垂直エッジの数が１の場合、RSTのすべての水平エッジはパラレルスライドによりその行（横列）を横切ることはできない。列（縦列）についても同様である。
【００７８】
（特性４）
RSTのスタイナー点ではないバーテックスに接続するエッジが１つのみの場合、そのエッジはパラレルスライドはできない。
【００７９】
（RST変形処理１）
ネットNに対して与えられたRST S(Vs,Es)の各エッジEj∈Esに対して、まず図８に示すように、U(Vu,Eu)上で連続変形だけで最大のスライド可能（slidable）範囲を探索する。このとき、一つのエッジがスライド可能であること（slidability）は、他のエッジがスライド可能であるか否かに依存する。つまり、パラレルスライドは、定義１により、パラレルスライドを可能とする２つのエッジが存在できることが必要である。この依存関係を作りながら、すべてのエッジについてその最大スライド可能範囲を探索する。この結果、各エッジのスライドが可能である範囲と他のエッジがスライド可能であることとの依存関係が図９に示す依存グラフとして作成される。
【００８０】
（スライドと依存性）
各エッジのスライド可能範囲を示す図８に示されるように、一つのエッジが複数のビン上をスライド可能である場合には、それぞれのビン毎のスライド範囲を定義する。エッジがスライド可能である場合（エッジのslidability）は、図８に示すAからGまでの７つがある。図９に示す依存グラフは、これら７つがスライド可能となるための依存関係を示している。たとえば、ビン(1,2)のWestエッジは、一つのエッジがスライド可能とされる（slidability）AとCに関連しているので、AとCはそれぞれお互いに依存関係を持つ。
【００８１】
スライド可能とされる（slidability）Cはまた、スライド可能とされるBに依存している。これは、スライド可能とされるCがスライド可能とされるBによるエッジの移動では、ビン(2,3)のSouthとEastにエッジが存在していることが必要であるためである。スライド可能とされるEは、ビン(3,3)のNorthエッジがスライド可能とされる DとEに関連しているため、スライド可能とされるDに依存している。さらに、Eが可能となるためには、ビン(3,3)のEastとWestにエッジがあることが必要であるため、スライド可能とされるCとGにも依存している。
【００８２】
以上の考え方より、一つのRSTに対する連続変形を適用して配線混雑度を計算するアルゴリズムの擬似コードは、図１０のように与えられる。
図１０において、「Check#flip#slide」は、フリップスライド（flip slide）可能なところを検索して依存グラフに登録する。「Check#para#slide」は、与えられたRSTにおいて指定されたエッジが指定された方向にパラレルスライド（parallel slide）可能であるか否かをチェックする。
【００８３】
このとき、このパラレルスライドが他のパラレルスライドやフリップスライドに依存する場合には、図９の依存グラフに登録される。また、「Get#independent#complete#graph」は、依存グラフから図１３において後述する補グラフ（独立グラフ）を作成して、その補グラフから部分完全グラフのすべてを抽出する。「Calculate#congestion」は、補グラフから求められた部分完全グラフを使って、＜配線混雑度の計算＞において後述するグリッドグラフ上の配線混雑度を計算する。「Check#para#slide」の擬似コードは図１１に示される。
【００８４】
図１１において、「Get#destination」は、RSTの指定されたエッジを指定された方向にパラレルスライドするときの目的地を返してくれる関数である。目的地は、アンダーライインググリッドグラフにおいて、指定されたエッジの隣のエッジの中で、指定された方向にあるものである。「Move#edges#to#both#sides」は、「Get#destination」で得られた場所にエッジをパラレルスライド可能とするために、スライドしようとしているエッジと目的のエッジを含むビンにおいて、ビン上の他の２つのエッジにRSTのエッジをslideさせる関数である。このときのスライドはパラレルスライドでもフリップスライドでも構わない。
【００８５】
ビン上の２つのエッジにRSTのエッジをスライドできた場合には、「result」に「SUCCESSFUL」が返される。「SUCCESSFUL」の場合には、「Parallel#slide Check#para#slide」に入力されたエッジを実際にスライドさせ、その後で「Check#flip#slide」は、フリップスライド可能なところを検索して依存グラフに登録する。この後、アンダーライインググリッドグラフでさらに隣のエッジを対象に繰り返す。「Move#edges#to#both#sides」では、「Check#para#slide」が繰り返し可能（recursive）に呼ばれ、その繰り返しが終了するのはRSTのエッジが最早パラレルスライドできない場合であり、その判定は既述した特性３及び特性４を使って行われる。
【００８６】
以上に述べたRSTの変形処理の動作を図１２のフローチャートに示す。このフローチャートの動作を上述した変形処理の纏めとして説明すると、作成されたRSTにおいて、まずフリップ可能な場所を見つけ、アンダーライインググラフ上の該当するビンにマークを付ける（ステップＳ１１）。次にRSTを構成するエッジから一つのエッジを選択して（ステップＳ１２）、そのエッジがスライド可能か否かをチェックする（ステップＳ１３、ステップＳ１４）。スライドは前方向（右方又は上方）及び後方向（左方又は下方）のそれぞれについて順次行う。このステップＳ１３における処理については後で詳述する。
【００８７】
そして、このスライド可能性のチェックが終了すると、RSTの次のエッジを選択し（ステップＳ１５、ステップＳ１６）、そのエッジがスライド可能であるか否かを同様にチェックする（ステップＳ１３〜ステップＳ１６）。全てのエッジに対してスライド可能性のチェックが終了する（ステップＳ１６、ｎｏ）とスライドについての依存グラフができあがるので、この依存グラフについて補グラフ（独立グラフ）を作成する（ステップＳ１７）。この補グラフはスライドの独立性を表す独立グラフとなる。
【００８８】
そして、＜配線混雑度の計算＞において後述するが、この独立グラフから独立にスライドできるものを判定しながらRSTの変形によるバリエーション数を計算する。RSTのバリエーションの中で、グリッドグラフの各バーテックスを通るRSTの数を求めることにより、グリッドグラフの各バーテックスにおける配線混雑度を計算することができる（ステップＳ１８）。
【００８９】
次に、ステップＳ１３の動作について、図１４〜図１７を用いて説明する。
まず、エッジが前方向にアンダーライインググリッドグラフ上で１グリッドだけスライドする場合の目的地を決定する（ステップＳ１３１）。これは、例えば図１５に示す対象エッジが（１）のとき、目的地は（２）の位置として決定することを意味する。次にエッジが前方向に目的地までスライド可能となるための両サイドを求める（ステップＳ１３２）。図１５においては、（３）（４）が両サイドとなる。
【００９０】
そして、両サイドのうちの一方（図１５における（３）の場所）にエッジがあるか否かを判断し（ステップＳ１３３）、エッジがある場合は更に両サイドのうちの他方（図１５における（４）の場所）にもエッジがあるか否かを判断する（ステップＳ１３４）。これら両サイドのいずれか一方にエッジが無い場合は、図１６に示す処理が行われる。双方にエッジがあると判断された場合は、対象としているエッジを前方向に目的地までスライドさせる（ステップＳ１３５）。そして、RSTでフリップ可能な場所を見つけ、アンダーライインググリッドグラフの該当するビンにマークを付ける（ステップＳ１３６）。その後、移動したエッジを全てもとに戻して処理を終了する（ステップＳ１３７）。
【００９１】
次に、図１６により両サイドのいずれか一方にエッジが無い場合の処理について説明する。
まず、両サイドのうちの一方（例えば図１７で（４）の場所）にエッジが移動することができるか否かを判断するため、上記目的地（図１７の（４）の場所）と平行なエッジが２以上あるか否かを判断する（ステップＳ１３３１）。２以上あると判断された場合は、両サイドのうちの一方（図１７で（４）の場所）にエッジ（図１７で（５）のエッジ）をスライドさせる（ステップＳ１３３２）。
【００９２】
なお、ここでのスライドの手順は、図１４で示した処理と基本的に同じである。ただし、図１４の処理では、アンダーライインググリッドグラフを１グリッドずつ順に進めるだけ進ませるのに対して、ここでは１グリッドずつ順に進めるものの、どこまでも進めるのではなく、所定の目的地まで進めるという点が異なっている。そして、両サイドのうちの一方（図１７で（４）の場所）にエッジをスライドできたか否かを判断し（ステップＳ１３３３）、スライドできた場合は、依存グラフを作成する（ステップＳ１３３４）。
【００９３】
この場合、図１７において〔１〕の移動は〔２〕と〔３〕の移動に依存する。依存グラフの作成後、あるいは、ステップＳ１３３１において平行なエッジが２以上ないと判断された場合、またはステップＳ１３３３において両サイドのうちの一方にエッジをスライドできないと判断された場合は、移動したエッジを全てもとに戻して処理を終了する（ステップＳ１３３５）。
【００９４】
（RST変形処理２）
上述したRSTの変形処理に対し、削除と再接続による変形を行うことによるRSTの異なるバリエーションを付加することもできる。
図１８及び図１９はこの削除と再接続によるRSTの変形を説明する図である。削除と再接続の処理では、ステップＳ１６−１〜ステップＳ１６−３が図１２で示したステップＳ１６の後に挿入される。
【００９５】
ステップＳ１６−１は削除と再接続を可能な全てのエッジに対して行うための判断であり、未だ削除と再接続されるべきエッジがある場合はステップＳ１６−２に進んでそのエッジに削除と再接続変形処理を適用する。この削除と再接続処理は、図１９に示すように、例えば、（１）〜（６）までのどれか一つのエッジを削除すると共に、削除されたエッジと同じ長さで違う方向に再接続する処理を行うものである。
【００９６】
図１９においては、（ａ）において、（１）のエッジを削除して（ｂ）を得た後、（ｃ）のように（１）´を再接続してRSTの変形を行う。
この変形によっても、新たなRSTの変形バリエーションの一つを得ることができ、それに対して更にステップＳ１１〜ステップＳ１６の連続変形処理を施す（ステップＳ１６−３，ｙ）。
【００９７】
そして、全ての変形処理が終了すると（ステップＳ１６−１、ｙｅｓ）、ステップＳ１７に進み、上述したと同様に独立グラフの作成（ステップＳ１７）、配線混雑度の計算を行う（ステップＳ１８）。
【００９８】
＜配線混雑度の計算＞
変形アルゴリズムのあとに出力されるエッジのスライド可能(edge slidability)の依存関係グラフから、Qx,y,dirを求める方法を説明する。RSTの変形による異なるトポロジーを持つRSTの総数は、スライドの独立性を判定することにより求めることができる。RSTのエッジによる一つのビン上でのスライドをslide(kind,dir,x,y)と定義する。kindはスライド（slide）の種類を表し、パラレル（parallel）またはフリップ（flip）である。また、dirはEast, West, South, Northのいずれかである。
【００９９】
例えば、slide(parallel,East,x,y)は、ビン(x,y)上のWestの辺にあるRSTのエッジがEastにパラレルスライド可能であることを意味する。同様に、slide(flip,dir,x,y)はdirの方向にフリップスライドが可能なことを意味する。dirはフリップスライドの対象となる２本のエッジ間のバーテックス（頂点若しくは交点）がフリップスライドで動く方向を示しており、NE(North-East), NW(North-West), SE(South-East), SW(South-West)のいずれかである。
【０１００】
各スライドは、他のスライドと依存関係を持っている。スライドが独立であるとは、スライドの対象となるエッジが通過するエッジがスライド可能ではないとき、そのslide (parallel,East,x,y)は他のスライドに独立であるという。逆に、通過するエッジがslide (parallel,dir,x',y')またはslide(flip,dir,x',y')であるとき、そのスライドはそれらに依存しているという。
【０１０１】
この依存関係は図９に一例と示された依存グラフD(Vd,Ed)に表現される。このグラフにおける各頂点（vertexA~G）は、slide(kind,dir,x,y)を表している。エッジはスライドの依存関係を表し、有向エッジである。これからRSTの変形によるバリエーション数が計算可能となる。
【０１０２】
グラフD(Vd,Ed)におけるVj∈Vdは、Vj∈Vd に対応するRSTのエッジがRST上で可動であることを意味している。そのRST上でのスライド可能な距離をdjとし、グラフD(Vd,Ed)のvertex数（頂点の数）|Vd|をrとする。スライド可能な距離djはG(Vg,Eg)上のグリッド単位で、エッジの両端を含むグリッド数とする。このとき、もしすべてのスライド可能エッジが独立にスライド可能である場合には、つまりグラフD(Vd,Ed)におけるエッジ数|Ed|が0の場合、RSTのバリエーション数Pは式(3)で表せる。式(3)における積は全てのｊについて行われる。
【０１０３】
p(d1,d2,d3,…dr)＝Πdj      (3)
【０１０４】
複数のエッジが独立に移動できるグループを独立スライダビリティ（slidability）グループと呼ぶ。このグループが存在する場合、つまりグラフD(Vd,Ed)において相互に有向エッジを持たない頂点（vertex）の集合vが存在する場合、これら頂点（vertex）に対応するスライドによるRSTのバリエーション数は、式(3)においてvの各要素に対応するスライド可能な距離を１に固定して求めたものとなる。このように、独立に移動できるグループを全て求め、各グループについてバリエーション数pkとすると、|T(S(Vs,Es))|は式(4)で求まる。ここでのΣによる積算は各ｋについて行われる。
【０１０５】
|T(S(Vs,Es))|=Σpk    （4）
【０１０６】
このようにRSTのバリエーション数に対して、グラフD(Vd,Ed)のVj∈Vd に対応するエッジがスライドするU(Vu,Eu)上のビンを通過するバリエーション数|T(S(Vs,Es),bin(Vj∈Vd))|は、Vjを含む独立スライダビリティグループのバリエーション数pkの総和となる。
【０１０７】
|T(S(Vs,Es),bin(Vj∈Vd))|=Σpk  （5）
【０１０８】
独立スライダビリティグループは、エッジのスライド可能に関する依存グラフから求めることができる。まず、図９に示した依存関係グラフD(Vd,Ed)から図１３に示す補グラフ（独立グラフ）Dc(Vd,Ed)、つまりD(Vd,Ed)エッジの存在しないところにエッジを作成したグラフDc(Vd,Ed)を作成する。この補グラフDc(Vd,Ed)は、各エッジが無関係にスライド可能であるとされる独立関係を表している。
【０１０９】
そして、次にDc(Vd,Ed)より、すべての部分完全グラフ（補グラフ）を見つける。各部分完全グラフに対して、式(4)により各独立スライダビリティグループから生成可能なRSTのバリエーション数を求める。その後、式(5)によって、与えられたRSTに対して一回の連続変形を適用することにより得られるRSTのバリエーション数を求めることができる。図８で示したRSTに一回の連続変形を適用することにより得られるRSTに対する式(3)の具体例は、式(6)のように表現できる。
【０１１０】
なお、式(6)における|AN|の表記は、Aでのスライド可能な距離を表しており、AのあるビンのN(North)の辺の長さを表す。AとCでは、ビン(1,2)のWestにある一つのエッジを共有しているため、式(3)におけるdjはAとCをまとめた一つに対して定義され、このときのdjは|AN|+|CN|となる。また、フリップスライドのB（図８）では、上下のスライドと左右のスライドがあるため、Bに対するdjは|BS|+|BE|となる。
【０１１１】
(|AN|＋|CN|)×(|BS|+|BE|)×(|DW|+|EW|)×|FN|×|GN|       (6)
【０１１２】
この例の場合、図１３から独立スライダビリティグループは、[A,B,F,G], [C,F,G], [C,D], [A,D], [E]の5つのグループが存在する。これら5つのグループのそれぞれに対して、RSTのバリエーション数を式(6)をもとに求めると、式(4)の各項の定義よりそれぞれ(7)〜(11)となる。
【０１１３】
(|AN|+０)×(|BS|+|BE|)×1×|FN|×|GN|      (7)
(０+|CN|)×1×1×|FN|×|GN|                 (8)
(０+|CN|)×1×(|DW|+0×1×1                 (9)
(|AN|+0)×1×(|DW|+0)×1×1                 (10)
1×1×(0+|EW|)×1×1                        (11)
【０１１４】
従って、与えられたRSTに対して一回の連続変形を適用することにより得られるRSTのバリエーション数|T(S(Vs,Es))|は、式(7)〜(11)の和となる。また、Aのあるビンを通過するRSTのバリエーション数は、式(7)〜(11)の中にAを含むものの和となる。図８の例において、An,Be,Bs,Cn,Dw,Gn=4, Ew=6, Fn=8の場合、独立スライダビリティグループ[A,B,F,G], [C,F,G], [C,D], [A,D], [E]それぞれでのRSTのバリエーション数は、1024, 128, 16, 16, 6となる。従って、一回の連続変形の適用によるRSTのバリエーション数の総和は、1190となる。以上から、与えられたRSTの各エッジのスライド可動範囲とその範囲にあるRSTのバリエーション数がわかる。
【０１１５】
ただし、あるエッジが一つのビンをスライド可能範囲として持つとき、RSTのバリエーション数はそのビンの境界および内部では異なる。たとえば、スライド可能範囲Gのビンでは、そのビンの左右の境界および内部を含めてRSTのバリエーション数は[A,B,F,G], [C,F,G]のバリエーション数の和となる。このとき、ビンGの左側境界では、エッジがそこに固定された場合、独立スライダビリティグループの中でGを含まないグループ[C,D], [A,D], [E]のバリエーション数の和も加算される。
【０１１６】
このように、一つのエッジに対する可動範囲のビン集合に対して、そのエッジは必ずビン集合のどこかに存在するため、一つのエッジが可動範囲にあるRSTのバリエーション数は|T(S(Vs,Es))|に等しい。ビンGにおける配線要求量は、左側境界以外の領域上にある1グリッドの上下境界での縦配線については、式(12)で計算される。左側境界の1グリッドの上下境界での縦配線については、式(13)で計算される。
【０１１７】
(1024+128)/1190/4≒0.242    (12)
(1024+128)/1190/4+(16+16+6)/1190/1≒0.2739   (13)
【０１１８】
以上のような配線要求量の計算を図８に示されるRSTに対して、An,Be,Bs,Cn,Dw,Gn=4, Ew=6, Fn=8の場合について、RSTのバリエーションをベースにした配線要求量を計算して各ロケーション（ｘ、ｙ）に対して表示すると図２０のようになる。
【０１１９】
なお、配線要求量の計算を複数のネットに対して行っていく場合、最初一つのネットについて、図２１（ａ）に示すようなスライド可能領域ＡからＧまでのビン及びその境界に対する配線要求量を計算した後、各ネットから計算された配線要求量をグリッドグラフの各バーテックス（vertex）の４辺（East,West,South,North）に積算していくが、予め設定されている配線可能容量を積算配線要求量が越えた場合には、越えた場所を一部でも含む図２１（ａ）のスライド可能領域をスライド可能でない領域として、再度配線要求量を計算するようにすることができる。
【０１２０】
例えば、図１（ａ）におけるスライド可能領域Ｇの領域に対する積算配線要求量がその配線可能容量を越える場合、図２１（ｂ）のようにスライド可能領域Ｇをスライド可能ではない領域として他の領域に対して再度配線要求量を計算する。もし、全てのスライド可能領域がスライド可能ではない領域となってしまう場合には、全てのスライド可能領域はスライド可能領域のままにしておいて計算処理を行う。
【０１２１】
以上に詳述したように、本発明の実施の形態では、RSTの変形の手法、またそれに基づく確率的手法による配線性評価の手法を提案した。RSTの幾何学的な変形は、確率的手法による配線性評価のみならず、配線混雑度の高いところを回避するRSTの作成、また縦の配線チャネルと横の配線チャネルの容量に大きな違いがあるとき、RSTの変形により縦エッジと横エッジのそれぞれの総長が目的に合ったものに近づくような変形も可能となる。本手法に基づく配線性評価が、実際の配線結果との高い相関関係を持つことが示された。この実験結果は、我々のアイディアをサポートしている。ここで提案された配線性評価がセル配置のステージで適用されることを確信する。
【０１２２】
（付記１）  複数のノードを接続する水平または垂直な複数のエッジから構成されるスタイナー木を扱うスタイナー木ハンドリング装置であって、
少なくとも一つの形状を有するスタイナー木を取得するスタイナー木取得部と、
取得されたスタイナー木のサイズを変更することなく、異なる形状のスタイナー木に変形するスタイナー木変形部と
を備えてなるスタイナー木ハンドリング装置。
（付記２）  付記１に記載のスタイナー木ハンドリング装置において、
前記スタイナー木変形部は、前記スタイナー木の連続性を維持したままで変形することを特徴とするスタイナー木ハンドリング装置。
（付記３）  付記１に記載のスタイナー木ハンドリング装置において、
前記スタイナー木変形部は、前記スタイナー木の一つのエッジを削除することにより生じる二つのエッジの連続体を、前記削除したエッジとは異なるエッジを用いて再接続することによりスタイナー木を変形することを特徴とするスタイナー木ハンドリング装置。
（付記４）  付記２に記載のスタイナー木ハンドリング装置において、
一つのエッジがスライド可能であるか否かを所定の判断基準に基づいて判断するスライド判断部を備え、
前記スタイナー木変形部は前記一つのエッジをスライドさせてスタイナー木を変形することを特徴とするスタイナー木ハンドリング装置。
（付記５）  付記４に記載のスタイナー木ハンドリング装置において、
前記スライド判断部は、スタイナー木より形成される一つのビンにおける向かい合う辺上にスタイナー木のエッジが存在し、且つ前記向かい合う辺のそれぞれの両端に他のエッジの端又はノードが存在する場合に、前記辺上のスタイナー木のエッジはパラレルスライドが可能であると判断することを特徴とするスタイナー木ハンドリング装置。
（付記６）  付記４に記載のスタイナー木ハンドリング装置において、
前記スライド判断部は、スタイナー木より形成される一つのビンを囲む長方形の４辺のうちの隣り合う２辺上にスタイナー木のエッジが存在し、且つ前記隣り合う２辺の交点にスタイナー木のノードが存在しない場合に、フリップスライドが可能であると判断することを特徴とするスタイナー木ハンドリング装置。
（付記７）  付記４に記載のスタイナー木ハンドリング装置において、
前記スライド判断部は、パラレルスライドまたはフリップスライドまたはこれらの組み合わせによる変形においては、該変形によって生じるスタイナー木により形成される複数のビンのそれぞれにより定まる横列上にあるスタイナー木の垂直エッジの数は一定であり、且つ、前記複数のビンのそれぞれにより定まる縦列上にあるスタイナー木の水平エッジの数は一定であるというルールをスタイナー木の変形特性として用いることを特徴とするスタイナー木ハンドリング装置。
（付記８）  付記４に記載のスタイナー木ハンドリング装置において、
前記スライド判断部は、あるエッジをスライド可能にする同一ビン内の両エッジ上に、パラレルスライドまたはフリップスライドまたはこれらの組み合わせによる変形により、スタイナー木の他のエッジが位置付けられることがあり得ない場合、そのエッジはスライド可能ではないというルールをスタイナー木の変形特性として用いることを特徴とするスタイナー木ハンドリング装置。
（付記９）  付記４に記載のスタイナー木ハンドリング装置において、
前記スライド判断部は、一つのビンにより定まる横列上にある垂直エッジの数が一つの場合、スタイナー木の全ての水平エッジはパラレルスライドによりその横列を横切ることはできず、また一つのビンにより定まる縦列上にある水平エッジの数が一つの場合、スタイナー木の全ての垂直エッジはパラレルスライドによりその縦列を横切ることはできないというルールをスタイナー木の変形特性として用いることを特徴とするスタイナー木ハンドリング装置。
（付記１０）  付記４に記載のスタイナー木ハンドリング装置において、
前記スライド判断部は、スタイナー木のノードではない位置に接続するエッジが一つのみの場合、そのエッジはパラレルスライドできないというルールをスタイナー木の変形特性として用いることを特徴とするスタイナー木ハンドリング装置。
（付記１１）  付記２に記載のスタイナー木ハンドリング装置において、
前記スタイナー木変形部による変形に際して、各エッジのスライドが他のエッジのスライドに依存するか否かの依存関係を判断して依存グラフを作成する依存グラフ作成部を備えているスタイナー木ハンドリング装置。
（付記１２）  付記１１に記載のスタイナー木ハンドリング装置において、
前記依存グラフ作成部により作成されたグラフに基づいて、エッジを独立にスライドすることができるグループを判断する独立スライドグループ判断部を備えているスタイナー木ハンドリング装置。
（付記１３）  付記１２に記載のスタイナー木ハンドリング装置において、
前記独立スライドグループ判断部による判断結果に基づいて、スタイナー木の変形バリエーションの総数を求めるバリエーション総数計算部を備えているスタイナー木ハンドリング装置。
（付記１４）  付記１２または付記１３に記載のスタイナー木ハンドリング装置において、
前記独立スライドグループ判断部による判断結果に基づいて、スタイナー木のエッジが所定の範囲を移動する場合において、該移動するエッジを有するスタイナー木の変形バリエーション数を計算する部分バリエーション計算部を備えているスタイナー木ハンドリング装置。
（付記１５）  付記１４に記載のスタイナー木ハンドリング装置において、
前記部分バリエーション計算部は、一つの形状のスタイナー木の一つのエッジを一つの配線として、所定領域ごとの配線量を縦方向と横方向のそれぞれについて計算することを特徴とするスタイナー木ハンドリング装置。
（付記１６）  付記１４に記載のスタイナー木ハンドリング装置において、
前記バリエーション総数計算部により計算されたスタイナー木のバリエーションの総数と、前記部分バリエーション計算部により計算されたスタイナー木のバリエーション数とに基づいて、所定領域のエッジの混雑度を計算する混雑度計算部を備えているスタイナー木ハンドリング装置。
（付記１７）  付記１５に記載のスタイナー木ハンドリング装置において、
スタイナー木の変形に伴って、複数の所定領域のうちのいずれかの所定領域を通過するエッジの数が所定数を越えた場合には、当該所定領域においてはエッジのスライドができないものとして、再度スタイナー木の変形を行って前記バリエーション総数計算部によるバリエーションの総数と前記部分バリエーション計算部によるバリエーション数を計算することを特徴とするスタイナー木ハンドリング装置。
（付記１８）  付記１７に記載のスタイナー木ハンドリング装置において、
前記再度の変形と計算は、前記スタイナー木取得部で取得される複数のスタイナー木であって、それぞれ異なる複数のノードの組に対応して取得されたスタイナー木に対して行われることを特徴とするスタイナー木ハンドリング装置。
（付記１９）  複数のノードを接続する水平または垂直な複数のエッジから構成されるスタイナー木を扱うスタイナー木ハンドリング方法であって、
一つのスタイナー木を取得する取得ステップと、
前記取得ステップで得られたスタイナー木のサイズを変更することなく、異なる形状のスタイナー木に変形するスタイナー木変形ステップと
を備えてなるスタイナー木ハンドリング方法。
（付記２０）  付記１９に記載のスタイナー木ハンドリング方法において、
前記スタイナー木変形ステップにおいては、各エッジのスライドが他のエッジのスライドに依存するか否かの依存関係を判断して依存グラフを作成する依存グラフ作成ステップを備えているスタイナー木ハンドリング方法。
（付記２１）  付記２０に記載のスタイナー木ハンドリング方法において、
前記依存グラフ作成ステップにおいて作成されたグラフに基づいて、エッジを独立にスライドすることができるグループを判断する独立スライドグループ判断ステップを備えているスタイナー木ハンドリング方法。
（付記２２）  付記２１に記載のスタイナー木ハンドリング方法において、
前記独立スライドグループ判断ステップによる判断結果に基づいて、スタイナー木の変形バリエーションの総数を求めるバリエーション総数計算ステップを備えているスタイナー木ハンドリング方法。
（付記２３）  付記２１に記載のスタイナー木ハンドリング方法において、
前記独立スライドグループ判断ステップによる判断結果に基づいて、スタイナー木のエッジが所定の範囲を移動する場合において、該移動するエッジを有するスタイナー木の変形バリエーションの数を計算する部分バリエーション計算ステップを備えているスタイナー木ハンドリング方法。
（付記２４）  付記２３に記載のスタイナー木ハンドリング方法において、
前記バリエーション総数計算ステップにより計算されたスタイナー木のバリエーション総数と、前記部分バリエーション計算ステップにより計算されたスタイナー木のバリエーション数とに基づいて、所定領域のエッジの混雑度を計算する混雑度計算ステップを備えているスタイナー木ハンドリング方法。
（付記２５）  付記２３に記載のスタイナー木ハンドリング方法において、
スタイナー木の変形に伴って、複数の所定領域のうちのいずれかの所定領域を通過するエッジの数が所定数を越えた場合には、当該所定領域においてはエッジのスライドができないものとして再度スタイナー木変形ステップとバリエーション総数計算ステップと部分バリエーション計算ステップとを繰り返すことを特徴とするスタイナー木ハンドリング方法。
（付記２６）  複数のノードを接続する水平または垂直な複数のエッジから構成されるスタイナー木を扱う処理をコンピュータに実行させるスタイナー木ハンドリングプログラムであって、
一つのスタイナー木を取得する取得ステップと、
前記取得ステップで得られたスタイナー木のサイズを変更することなく、異なる形状のスタイナー木に変形するスタイナー木変形ステップと
をコンピュータに実行させるスタイナー木ハンドリングプログラム。
（付記２７）  付記２６に記載のスタイナー木ハンドリングプログラムにおいて、
前記スタイナー木変形ステップにおいては、各エッジのスライドが他のエッジのスライドに依存するか否かの依存関係を判断して依存グラフを作成する依存グラフ作成ステップを備えてコンピュータに実行させるスタイナー木ハンドリングプログラム。
（付記２８）  付記２７に記載のスタイナー木ハンドリングプログラムにおいて、
前記依存グラフ作成ステップにおいて作成されたグラフに基づいて、エッジを独立にスライドすることができるグループを判断する独立スライドグループ判断ステップを備えてコンピュータに実行させるスタイナー木ハンドリングプログラム。
（付記２９）  付記２８に記載のスタイナー木ハンドリングプログラムにおいて、
前記独立スライドグループ判断ステップによる判断結果に基づいて、スタイナー木の変形バリエーションの総数を求めるバリエーション総数計算ステップを備えてコンピュータに実行させるスタイナー木ハンドリングプログラム。
（付記３０）  付記２８に記載のスタイナー木ハンドリングプログラムにおいて、
前記独立スライドグループ判断ステップによる判断結果に基づいて、スタイナー木のエッジが所定の範囲を移動する場合において、該移動するエッジを有するスタイナー木の変形バリエーションの数を計算する部分バリエーション計算ステップを備えてコンピュータに実行させるスタイナー木ハンドリングプログラム。
（付記３１）  付記３０に記載のスタイナー木ハンドリングプログラムにおいて、
前記バリエーション総数計算ステップにより計算されたスタイナー木のバリエーション総数と、前記部分バリエーション計算ステップにより計算されたスタイナー木のバリエーション数とに基づいて、所定領域のエッジの混雑度を計算する混雑度計算ステップを備えてコンピュータに実行させるスタイナー木ハンドリングプログラム。
（付記３２）  付記３０に記載のスタイナー木ハンドリングプログラムにおいて、
スタイナー木の変形に伴って、複数の所定領域のうちのいずれかの所定領域を通過するエッジの数が所定数を越えた場合には、当該所定領域においてはエッジのスライドができないものとして再度スタイナー木変形ステップとバリエーション総数計算ステップと部分バリエーション計算ステップとを繰り返してコンピュータに実行させるスタイナー木ハンドリングプログラム。
【図面の簡単な説明】
【０１２３】
【図１】本発明の実施の形態におけるスタイナー木のハンドリング装置を示すブロック図である。
【図２】スタイナー木の作成動作について説明するフローチャートである。
【図３】グリッドグラフを示す図である。
【図４】アンダーライインググリッドグラフを示す図である。
【図５】スタイナー木の作成部の動作の一例を示す概念図である。
【図６】エッジの可動条件を説明する図である。
【図７】スタイナー木の基本変形を示す図であり、図７（ａ）はパラレルスライド、図７（ｂ）はフリップスライドを示す図である。
【図８】アンダーライインググリッドグラフ上で連続変形だけで最大のスライド可能範囲を探索する場合の説明図である。
【図９】依存グラフを示す図である。
【図１０】一つのRSTに対する連続変形を適用して配線混雑度を計算するアルゴリズムの擬似コードを示す図である。
【図１１】「Check#para#slide」の擬似コードを示す図である。
【図１２】RSTの変形処理の動作を示すフローチャートである。
【図１３】補グラフ（独立グラフ）を示す図である。
【図１４】スライド可能のチェック動作を示すフローチャート（その１）である。
【図１５】図１４の動作の補足説明図である。
【図１６】スライド可能のチェック動作を示すフローチャート（その２）である。
【図１７】図１６の動作の補足説明図である。
【図１８】エッジの削除と再接続の動作を示すフローチャートである。
【図１９】図１８の動作の補足説明図である。
【図２０】RSTのバリエーションをベースにした配線要求量を計算して各ロケーション（ｘ、ｙ）に対して表示した状態を示す図である。
【図２１】配線要求量の計算を複数のネットに対して行っていく場合の動作の一例を示す説明図である。
【符号の説明】
【０１２４】
１  ネット情報入力部、２  グリッドグラフ作成部、３  アンダーライインググリッドグラフ作成部、４  スタイナー木作成部、５  スタイナー木情報入力部、６  スタイナー木エッジ選択部、７  エッジ前方向スライドチェック部、８  エッジ後方向スライドチェック部、９  フリップ検出部、１０  依存グラフ管理部、１１  独立グラフ作成部、１２  スタイナー木のバリエーション数計算部、１３  配線混雑度計算部（エッジの混雑度計算部）。
【図１】
2005275780.tif 000003
【図２】
2005275780.tif 000004
【図３】
2005275780.tif 000005
【図４】
2005275780.tif 000006
【図５】
2005275780.tif 000007
【図６】
2005275780.tif 000008
【図７】
2005275780.tif 000009
【図８】
2005275780.tif 000010
【図９】
2005275780.tif 000011
【図１０】
2005275780.tif 000012
【図１１】
2005275780.tif 000013
【図１２】
2005275780.tif 000014
【図１３】
2005275780.tif 000015
【図１４】
2005275780.tif 000016
【図１５】
2005275780.tif 000017
【図１６】
2005275780.tif 000018
【図１７】
2005275780.tif 000019
【図１８】
2005275780.tif 000020
【図１９】
2005275780.tif 000021
【図２０】
2005275780.tif 000022
【図２１】
2005275780.tif 000023