JP2004529402A5 - - Google Patents
Download PDFInfo
- Publication number
- JP2004529402A5 JP2004529402A5 JP2002548785A JP2002548785A JP2004529402A5 JP 2004529402 A5 JP2004529402 A5 JP 2004529402A5 JP 2002548785 A JP2002548785 A JP 2002548785A JP 2002548785 A JP2002548785 A JP 2002548785A JP 2004529402 A5 JP2004529402 A5 JP 2004529402A5
- Authority
- JP
- Japan
- Prior art keywords
- net
- cost
- diagonal
- circuit
- length
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 claims description 572
- 238000005457 optimization Methods 0.000 claims description 61
- 238000004364 calculation method Methods 0.000 claims description 34
- 230000004048 modification Effects 0.000 claims description 21
- 238000006011 modification reaction Methods 0.000 claims description 21
- 240000003247 Erythrina poeppigiana Species 0.000 claims description 19
- 235000009776 Rathbunia alamosensis Nutrition 0.000 claims description 19
- 238000003860 storage Methods 0.000 claims description 18
- 230000000875 corresponding Effects 0.000 claims description 16
- 241001442234 Cosa Species 0.000 claims description 10
- 238000000137 annealing Methods 0.000 claims description 6
- 230000001808 coupling Effects 0.000 claims 1
- 238000010168 coupling process Methods 0.000 claims 1
- 238000005859 coupling reaction Methods 0.000 claims 1
- 239000010410 layer Substances 0.000 description 29
- 239000002184 metal Substances 0.000 description 9
- 238000002922 simulated annealing Methods 0.000 description 9
- 238000000638 solvent extraction Methods 0.000 description 8
- 239000002699 waste material Substances 0.000 description 8
- 230000004044 response Effects 0.000 description 5
- 241000702021 Aridarum minimum Species 0.000 description 2
- 208000008963 Transient Myeloproliferative Syndrome Diseases 0.000 description 2
- 229920000314 poly p-methyl styrene Polymers 0.000 description 2
- 241000854491 Delta Species 0.000 description 1
- 210000000350 MC(T) Anatomy 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 210000004027 cells Anatomy 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000005755 formation reaction Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 239000002365 multiple layer Substances 0.000 description 1
- 230000003287 optical Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000002093 peripheral Effects 0.000 description 1
- 229910021420 polycrystalline silicon Inorganic materials 0.000 description 1
- 229920005591 polysilicon Polymers 0.000 description 1
- 238000010845 search algorithm Methods 0.000 description 1
- 230000003068 static Effects 0.000 description 1
Description
本発明は、配置の際に対角線配線を考慮に入れるための方法および装置に関する。
集積回路(「IC」)は、多くの電子構成要素(例えば、トランジスタ、抵抗、ダイオード等)を含むデバイスである。これらの電子構成要素は、多くの場合、IC上で相互に接続して、複数の回路構成要素(例えば、ゲート、セル、記憶装置、演算装置、コントローラ、デコーダ等)を形成する。以下の説明においては、ICの電子および回路構成要素全体を「構成要素」と呼ぶ。
ICは、また、電子および回路構成要素を相互に接続している複数の配線の層(「配線層」)を含む。例えば、多くのICは、現在、その電子および回路構成要素を相互に接続している金属またはポリシリコンの配線層(以下の説明においては、総括的に「金属層」と呼ぶ)により製造されている。1つの通常の製造モデルは5つの金属層を使用する。理論的には、金属層上の配線を全角度配線にすることができる(すなわち、任意の方向に配線することができる)。このような全角度配線は、通常、ユークリッド配線と呼ばれる。しかし、実際には、各金属層は、通常、好適な配線方向を持ち、その好適な方向は、連続している金属層間で異なる。多くのICは、好適な方向の交互の層の向きを水平および垂直方向に指定するマンハッタン配線モデルを使用している。この配線モデルの場合には、大多数のワイヤは90度曲がることができるだけである。しかし、場合によっては、好適な水平および垂直層上で、対角線方向に急激に曲げることもできる。
設計エンジニアは、ICの回路説明を、レイアウトと呼ぶ幾何学的な表示に変換することによりICを設計する。レイアウトを作成するために、設計エンジニアは、通常、電子設計オートメーション(「EDA」)アプリケーションを使用する。これらのアプリケーションは、IC設計レイアウトを生成し、編集し、分析するための複数の組のコンピュータをベースとするツールを提供する。
EDAアプリケーションは、IC上の異なる材料およびデバイスを表す幾何学的形状によりレイアウトを生成する。例えば、EDAツールは、通常、IC構成要素を相互に接続するワイヤのセグメントを表すために、長方形のラインを使用する。これらのツールは、また、さまざまな形および大きさの幾何学的対象物として電子および回路IC構成要素を表す。本明細書においては、説明を分かりやすくするために、これらの幾何学的対象物を長方形のブロックで示す。
また、本明細書においては、「回路モジュール」という用語は、EDAアプリケーションによる電子または回路IC構成要素を意味する。EDAアプリケーションは、通常、その側面上にピンを備える回路モジュールを示す。これらのピンは、相互接続ラインに接続する。
ネットは、通常、電気的に接続しなければならないピンの集合体を形成する。レイアウト内のネットのすべてまたはその一部のリストは、ネット・リストと呼ばれる。すなわち、ネット・リストは、ネットのグループを指定し、ネットのグループは、一組のピン間の相互接続を指定する。
ICは、また、電子および回路構成要素を相互に接続している複数の配線の層(「配線層」)を含む。例えば、多くのICは、現在、その電子および回路構成要素を相互に接続している金属またはポリシリコンの配線層(以下の説明においては、総括的に「金属層」と呼ぶ)により製造されている。1つの通常の製造モデルは5つの金属層を使用する。理論的には、金属層上の配線を全角度配線にすることができる(すなわち、任意の方向に配線することができる)。このような全角度配線は、通常、ユークリッド配線と呼ばれる。しかし、実際には、各金属層は、通常、好適な配線方向を持ち、その好適な方向は、連続している金属層間で異なる。多くのICは、好適な方向の交互の層の向きを水平および垂直方向に指定するマンハッタン配線モデルを使用している。この配線モデルの場合には、大多数のワイヤは90度曲がることができるだけである。しかし、場合によっては、好適な水平および垂直層上で、対角線方向に急激に曲げることもできる。
設計エンジニアは、ICの回路説明を、レイアウトと呼ぶ幾何学的な表示に変換することによりICを設計する。レイアウトを作成するために、設計エンジニアは、通常、電子設計オートメーション(「EDA」)アプリケーションを使用する。これらのアプリケーションは、IC設計レイアウトを生成し、編集し、分析するための複数の組のコンピュータをベースとするツールを提供する。
EDAアプリケーションは、IC上の異なる材料およびデバイスを表す幾何学的形状によりレイアウトを生成する。例えば、EDAツールは、通常、IC構成要素を相互に接続するワイヤのセグメントを表すために、長方形のラインを使用する。これらのツールは、また、さまざまな形および大きさの幾何学的対象物として電子および回路IC構成要素を表す。本明細書においては、説明を分かりやすくするために、これらの幾何学的対象物を長方形のブロックで示す。
また、本明細書においては、「回路モジュール」という用語は、EDAアプリケーションによる電子または回路IC構成要素を意味する。EDAアプリケーションは、通常、その側面上にピンを備える回路モジュールを示す。これらのピンは、相互接続ラインに接続する。
ネットは、通常、電気的に接続しなければならないピンの集合体を形成する。レイアウト内のネットのすべてまたはその一部のリストは、ネット・リストと呼ばれる。すなわち、ネット・リストは、ネットのグループを指定し、ネットのグループは、一組のピン間の相互接続を指定する。
図1は、ICレイアウト100の一例である。このレイアウトは、ピン130〜160を有する5つの回路モジュール105、110、115、120および125を含む。4つの相互接続ライン165〜180は、そのピンを通してこれらのモジュールを接続する。さらに、3つのネットは、ピン間の相互接続を指定する。より詳細に説明すると、ピン135、145および160は、3つのピン・ネットを形成し、一方、ピン130および155、およびピン140および150は、それぞれ2つの2ピン・ネットを形成する。図1に示すように、(105のような)回路モジュールは、複数のネット上に複数のピンを持つことができる。
IC設計プロセスは、種々の動作を必要とする。ICレイアウトを入手するために、EDAアプリケーションが通常行う物理的設計動作としては下記のようなものがある。(1)単一のチップ上に形成するには、回路が大きすぎる場合に、回路を分割する回路分割;(2)回路モジュールの整合および相対的な向きをチェックするフロア・プラニング;(3)回路モジュールの位置をもっと正確に決定するための設置;(4)回路モジュール間の相互接続を完成するためのルーティング;(5)ICの全面積を小さくするためにレイアウトを圧縮する圧縮;(6)設計および機能要件に適合しているかどうかを確認するために、レイアウトをチェックする確認。
配置は、物理的設計段階における最も重要な作業である。配置は、レイアウト面積の低減、ワイヤの長さの低減、ワイヤの集中の低減等のような、いくつかの目的を達成するために、レイアウト上に回路モジュールを配置するプロセスである。うまく配置しないと、広い面積が必要になるばかりでなく、ルーティングが困難になり、性能が悪くなる恐れがある。
今迄多くのEDA配置装置が提案されてきた。ある種の配置装置は、制約つき配置装置であり、(1)配置構成の質を定量化する配置スコア(すなわち、配置コスト)を生成するためのコスト計算機能を使用し、(2)コスト計算機能が生成した配置コストを改善するために、配置構成を反復して修正するための最適アルゴリズムを使用する。
制約つき最適化配置装置は、通常、(1)回路モジュールのリスト、(2)これらモジュールに対する最初の配置構成、および(3)モジュール間の相互接続を指定するネット・リストを受信する。最初の配置構成は、ランダムに行うことができる(すなわち、すべてのモジュールを、ランダムに配置することができる)。別な方法としては、最初の構成の一部または全部をフロア・プラニングのような、前の物理的設計作業により指定することができる。
その後で、制約つき最適化配置装置は、初期配置構成の品質を測定するために、コスト計算機能を使用する。コスト機能は、配置品質を示す測定基準スコアを生成する。異なるコスト計算機能は、異なる計量を測定する。例えば、以下にさらに詳細に説明するように、いくつかの機能は、ワイヤの長さを測定する(例えば、各ネットの最小スパニング・ツリー、シュタイナー・ツリーまたは囲みボックスの周囲を測定する)。一方、他の機能は、集中を測定する。(例えば、分割ラインと交差するネットの数を測定する)。
最初の配置構成の測定基準コストを計算した後で、制約つき最適化配置装置は、そのコスト計算機能が生成した配置スコアを改善する目的で、配置構成を反復して修正するために、最適化アルゴリズムを使用する。異なる最適化技術は、配置構成を異なる方法で修正する。例えば、反復の度ごとに、ある技術は、回路モジュールを移動し、他の技術は2つのモジュールを交換し、さらに他の技術は多数の関連するモジュールを移動する。また、反復の度ごとに、(例えば、KLFMアルゴリズムおよびタブサーチ・アルゴリズムのような)いくつかの最適化技術は、最善の移動を探索するが、一方、(例えば、シミュレートした焼きなましおよびローカル最適化のような)他の最適化技術は、移動をランダムに選択する。さらに、(例えば、シミュレートした焼きなましのような)いくつかの技術は、測定基準スコアを悪くする移動を受け入れ、一方、(例えば、ローカル最適化のような)他の技術はそうしない。
4つのタイプの制約つき最適化配置技術について以下に説明する。
IC設計プロセスは、種々の動作を必要とする。ICレイアウトを入手するために、EDAアプリケーションが通常行う物理的設計動作としては下記のようなものがある。(1)単一のチップ上に形成するには、回路が大きすぎる場合に、回路を分割する回路分割;(2)回路モジュールの整合および相対的な向きをチェックするフロア・プラニング;(3)回路モジュールの位置をもっと正確に決定するための設置;(4)回路モジュール間の相互接続を完成するためのルーティング;(5)ICの全面積を小さくするためにレイアウトを圧縮する圧縮;(6)設計および機能要件に適合しているかどうかを確認するために、レイアウトをチェックする確認。
配置は、物理的設計段階における最も重要な作業である。配置は、レイアウト面積の低減、ワイヤの長さの低減、ワイヤの集中の低減等のような、いくつかの目的を達成するために、レイアウト上に回路モジュールを配置するプロセスである。うまく配置しないと、広い面積が必要になるばかりでなく、ルーティングが困難になり、性能が悪くなる恐れがある。
今迄多くのEDA配置装置が提案されてきた。ある種の配置装置は、制約つき配置装置であり、(1)配置構成の質を定量化する配置スコア(すなわち、配置コスト)を生成するためのコスト計算機能を使用し、(2)コスト計算機能が生成した配置コストを改善するために、配置構成を反復して修正するための最適アルゴリズムを使用する。
制約つき最適化配置装置は、通常、(1)回路モジュールのリスト、(2)これらモジュールに対する最初の配置構成、および(3)モジュール間の相互接続を指定するネット・リストを受信する。最初の配置構成は、ランダムに行うことができる(すなわち、すべてのモジュールを、ランダムに配置することができる)。別な方法としては、最初の構成の一部または全部をフロア・プラニングのような、前の物理的設計作業により指定することができる。
その後で、制約つき最適化配置装置は、初期配置構成の品質を測定するために、コスト計算機能を使用する。コスト機能は、配置品質を示す測定基準スコアを生成する。異なるコスト計算機能は、異なる計量を測定する。例えば、以下にさらに詳細に説明するように、いくつかの機能は、ワイヤの長さを測定する(例えば、各ネットの最小スパニング・ツリー、シュタイナー・ツリーまたは囲みボックスの周囲を測定する)。一方、他の機能は、集中を測定する。(例えば、分割ラインと交差するネットの数を測定する)。
最初の配置構成の測定基準コストを計算した後で、制約つき最適化配置装置は、そのコスト計算機能が生成した配置スコアを改善する目的で、配置構成を反復して修正するために、最適化アルゴリズムを使用する。異なる最適化技術は、配置構成を異なる方法で修正する。例えば、反復の度ごとに、ある技術は、回路モジュールを移動し、他の技術は2つのモジュールを交換し、さらに他の技術は多数の関連するモジュールを移動する。また、反復の度ごとに、(例えば、KLFMアルゴリズムおよびタブサーチ・アルゴリズムのような)いくつかの最適化技術は、最善の移動を探索するが、一方、(例えば、シミュレートした焼きなましおよびローカル最適化のような)他の最適化技術は、移動をランダムに選択する。さらに、(例えば、シミュレートした焼きなましのような)いくつかの技術は、測定基準スコアを悪くする移動を受け入れ、一方、(例えば、ローカル最適化のような)他の技術はそうしない。
4つのタイプの制約つき最適化配置技術について以下に説明する。
A.最小カット二分割法
いくつかの配置装置は、最小カット二分割を使用する。この技術は、ICレイアウトを反復して連続的ペアの領域に分割するために、水平分割ラインおよび垂直分割ラインを使用する。次に、反復の各レベルで、この技術は、そのレベルに対する分割ラインが交差するネットの数を少なくするために、そのレベルにおける領域間で回路モジュールを移動する。反復の各レベルにおけるネット分割コストを最も少なくすることにより、これらの技術は、分割ラインを横切るワイヤの集中を少なくする。
図2および図3は、最小カット二分割法の一例を示す。図2は、最初に、垂直分割ライン205により、2つの領域210および215に分割されるICレイアウト200を示す。この最初の分割ラインを形成した後で、最小カット二分割法は、この分割ラインと交差するネットの数を計算する。この数は、この分割ラインの周囲のワイヤの集中を示す。次に、(KLFMのような)最適化アルゴリズムが、最初の分割ライン205を横切るネット・カット・コストを最小にするために、最初の配置を反復して修正するするために、(すなわち、回路モジュールを反復して移動するために)使用される。
最初の初期分割ラインを横切るワイヤの集中が最小になると、最小カット二分割法が、最初の分割ラインにより生成した2つの領域に反復して適用され、その後で、最小カット二分割法は、後続の分割ラインが生成する結果として得られる領域に対して適用される。以下同じ。図3は、7本の分割ライン205および220〜245により反復して分割された後のICレイアウト200を示す。
B.半周方法
半周方法は、いくつかの制約つき最適化技術が使用する、もう1つのコスト計算機能である。この方法は、配置のワイヤ長さコストの推定値を迅速に生成する。各ネットに対して、この方法は、通常、(1)すべてのネット・ピンを含む最小の長方形の囲みボックスを発見し、(2)この囲みボックス長方形の半周を計算する。
図4は、図1のピン135、145および、160を含む1つのネットに対する囲みボックス400を示す。このボックス400の半周の計算値は、幅405および高さ410の和に等しい。半周のこの計算値は、あるネットを通すのに必要なワイヤの長さ上のもっと低い境界推定値である。
半周方法は、配置構成に対する推定ワイヤ長さコストを入手するために、すべてのネットのすべての長方形の囲みボックスの半周値を合計する。次に、このワイヤ長さコストの推定値を小さくし、それにより許容できる配置構成を入手するために、配置構成を反復して修正するために最適化技術を使用することができる。
いくつかの配置装置は、最小カット二分割を使用する。この技術は、ICレイアウトを反復して連続的ペアの領域に分割するために、水平分割ラインおよび垂直分割ラインを使用する。次に、反復の各レベルで、この技術は、そのレベルに対する分割ラインが交差するネットの数を少なくするために、そのレベルにおける領域間で回路モジュールを移動する。反復の各レベルにおけるネット分割コストを最も少なくすることにより、これらの技術は、分割ラインを横切るワイヤの集中を少なくする。
図2および図3は、最小カット二分割法の一例を示す。図2は、最初に、垂直分割ライン205により、2つの領域210および215に分割されるICレイアウト200を示す。この最初の分割ラインを形成した後で、最小カット二分割法は、この分割ラインと交差するネットの数を計算する。この数は、この分割ラインの周囲のワイヤの集中を示す。次に、(KLFMのような)最適化アルゴリズムが、最初の分割ライン205を横切るネット・カット・コストを最小にするために、最初の配置を反復して修正するするために、(すなわち、回路モジュールを反復して移動するために)使用される。
最初の初期分割ラインを横切るワイヤの集中が最小になると、最小カット二分割法が、最初の分割ラインにより生成した2つの領域に反復して適用され、その後で、最小カット二分割法は、後続の分割ラインが生成する結果として得られる領域に対して適用される。以下同じ。図3は、7本の分割ライン205および220〜245により反復して分割された後のICレイアウト200を示す。
B.半周方法
半周方法は、いくつかの制約つき最適化技術が使用する、もう1つのコスト計算機能である。この方法は、配置のワイヤ長さコストの推定値を迅速に生成する。各ネットに対して、この方法は、通常、(1)すべてのネット・ピンを含む最小の長方形の囲みボックスを発見し、(2)この囲みボックス長方形の半周を計算する。
図4は、図1のピン135、145および、160を含む1つのネットに対する囲みボックス400を示す。このボックス400の半周の計算値は、幅405および高さ410の和に等しい。半周のこの計算値は、あるネットを通すのに必要なワイヤの長さ上のもっと低い境界推定値である。
半周方法は、配置構成に対する推定ワイヤ長さコストを入手するために、すべてのネットのすべての長方形の囲みボックスの半周値を合計する。次に、このワイヤ長さコストの推定値を小さくし、それにより許容できる配置構成を入手するために、配置構成を反復して修正するために最適化技術を使用することができる。
C.最小スパニング・ツリー
配置構成のワイヤ長さコストを推定するために、いくつかの制約つき最適化配置技術は、各ネットに対して直線最小スパニング・ツリー(「RMST」)の長さを計算して、加算する。ネットのRMSTは、通常、ピン位置でだけ分岐する最短マンハッタン配線経路を通るネットのピンを接続する(すなわち、結ぶ)ツリーとして定義される。
より詳細に説明すると、N個のピンを含むネットに対するRMSTは、(1)N個のピンに対応するN個の(ポイントまたは頂点とも呼ぶ)ノードと、(2)そのN個のノードを接続するN―1個の縁部とを含む。さらに、RMSTの縁部は、水平または垂直であり、これらの縁部は、ツリーのN個のノードの中の1つのノードからスタートし、そこで終わる。図5は、図1のピン135、145および160を含むネットに対するRMST505を示す。
各ネットに対するRMSTの長さの合計が、配置のワイヤ長さコストの推定値である。次に、このワイヤ長さコストを最も小さくする目的で、配置構成を反復して修正するために、最適化アルゴリズムを使用することができる。
D.シュタイナー・ツリー
直線シュタイナー・ツリーは、配置構成のワイヤ長さコストを推定するために、制約つき最適化配置技術が生成するもう1つのタイプのツリー構造体である。直線シュタイナー・ツリーは、シュタイナー・ツリーが、分岐をピン位置だけ制限しないという点を除けば、RMSTに類似している。直線シュタイナー・ツリーの場合には、水平縁部または垂直縁部は、2つの他のネット・ピンを接続する1つの縁部上の一点から分岐することができる。
N個のピンを含むネットに対するシュタイナー・ツリーを形成するために、シュタイナー点と呼ぶ追加の点が、通常、ネットに追加される。R個のシュタイナー点がネットに追加されると、N個のピンを含むネットに対する直線シュタイナー・ツリーは、N+R個の点上のRMSTである。図6は、図1のピン135、145および160を含むネットに対するシュタイナー・ツリー605を示す。この例の場合には、追加したシュタイナー点は点610である。
R個のシュタイナー点を選択し、シュタイナー・ツリーを形成するために、多くの場合発見的技術が使用される。何故なら、これらの問題は多項式時間内に解決できないからである。発見的技術は、すべての設計制約を満足させる最善の解ではなく、優れた解に対する全探索スペースのサブスペースの内部だけを探索するうまいアルゴリズムであるからである。
それ故、ある配置のワイヤ長さコストの推定値を入手するために、いくつかの制約つき最適化配置技術は、ネットに対する直線シュタイナー・ツリーを識別する目的で発見的近似を使用する。すべてのネットに対する発見的シュタイナー・ツリーの長さの合計が、ある配置のワイヤ長さコストの推定値である。次に、このワイヤ長さコストを最も小さくする目的で、配置構成を反復して修正するために、最適化アルゴリズムを使用することができる。
配置構成のワイヤ長さコストを推定するために、いくつかの制約つき最適化配置技術は、各ネットに対して直線最小スパニング・ツリー(「RMST」)の長さを計算して、加算する。ネットのRMSTは、通常、ピン位置でだけ分岐する最短マンハッタン配線経路を通るネットのピンを接続する(すなわち、結ぶ)ツリーとして定義される。
より詳細に説明すると、N個のピンを含むネットに対するRMSTは、(1)N個のピンに対応するN個の(ポイントまたは頂点とも呼ぶ)ノードと、(2)そのN個のノードを接続するN―1個の縁部とを含む。さらに、RMSTの縁部は、水平または垂直であり、これらの縁部は、ツリーのN個のノードの中の1つのノードからスタートし、そこで終わる。図5は、図1のピン135、145および160を含むネットに対するRMST505を示す。
各ネットに対するRMSTの長さの合計が、配置のワイヤ長さコストの推定値である。次に、このワイヤ長さコストを最も小さくする目的で、配置構成を反復して修正するために、最適化アルゴリズムを使用することができる。
D.シュタイナー・ツリー
直線シュタイナー・ツリーは、配置構成のワイヤ長さコストを推定するために、制約つき最適化配置技術が生成するもう1つのタイプのツリー構造体である。直線シュタイナー・ツリーは、シュタイナー・ツリーが、分岐をピン位置だけ制限しないという点を除けば、RMSTに類似している。直線シュタイナー・ツリーの場合には、水平縁部または垂直縁部は、2つの他のネット・ピンを接続する1つの縁部上の一点から分岐することができる。
N個のピンを含むネットに対するシュタイナー・ツリーを形成するために、シュタイナー点と呼ぶ追加の点が、通常、ネットに追加される。R個のシュタイナー点がネットに追加されると、N個のピンを含むネットに対する直線シュタイナー・ツリーは、N+R個の点上のRMSTである。図6は、図1のピン135、145および160を含むネットに対するシュタイナー・ツリー605を示す。この例の場合には、追加したシュタイナー点は点610である。
R個のシュタイナー点を選択し、シュタイナー・ツリーを形成するために、多くの場合発見的技術が使用される。何故なら、これらの問題は多項式時間内に解決できないからである。発見的技術は、すべての設計制約を満足させる最善の解ではなく、優れた解に対する全探索スペースのサブスペースの内部だけを探索するうまいアルゴリズムであるからである。
それ故、ある配置のワイヤ長さコストの推定値を入手するために、いくつかの制約つき最適化配置技術は、ネットに対する直線シュタイナー・ツリーを識別する目的で発見的近似を使用する。すべてのネットに対する発見的シュタイナー・ツリーの長さの合計が、ある配置のワイヤ長さコストの推定値である。次に、このワイヤ長さコストを最も小さくする目的で、配置構成を反復して修正するために、最適化アルゴリズムを使用することができる。
E.反復グリッド分割法
反復グリッド分割法は、配置構成のワイヤ長さコストを計算するためのもう1つの技術である。反復グリッド分割配置装置は、通常、ICレイアウトを反復していくつかのサブ領域に分割するために、複数の組の交差している水平ラインおよび垂直ラインを使用する。次に、各反復レベルで、配置装置は、ワイヤ長さコストを低減する目的で、その反復レベルで定義したサブ領域間で、回路モジュールを移動するために最適化アルゴリズムを使用する。特定の反復レベルでワイヤ長さコストを最小にした後で、配置装置は、これらの分割したサブ領域内のワイヤ長さコストをさらに最適化するために、ある基準に適合するそのレベルのサブ領域を反復して分割する。
例えば、ある反復分割技術は、ICレイアウトを反復して4等分部分(すなわち、4つの領域)に分割する。このアプローチの場合、最小スパニング・ツリーは、通常、異なる4等分部分内のモジュールを接続するためのワイヤ長さコストを推定するために使用される。もう1つの反復分割技術は、ICレイアウトを、反復して9つの領域に分割する。ある場合には、このタイプの分割は「シャープ」分割と呼ばれる。このタイプの分割の場合、シュタイナー・ツリーは、通常、異なる領域内の接続しているモジュールに対する、ワイヤ長さコストを推定するために使用される。
上記配置技術は、その配置構成コストを計算する際に、対角線配線を考慮に入れない。それ故、相互接続ラインに対して対角線経路が選択された場合、これらの技術を使用すると配置構成がうまくいかない。そのため、レイアウト領域を効率的に使用するができないし、ワイヤの使用量が増え、および/または多くのワイヤが集中することになる。それ故、その配置構成コストを計算する際に、対角線配線を考慮に入れる配置装置のための技術の開発が待望されている。
反復グリッド分割法は、配置構成のワイヤ長さコストを計算するためのもう1つの技術である。反復グリッド分割配置装置は、通常、ICレイアウトを反復していくつかのサブ領域に分割するために、複数の組の交差している水平ラインおよび垂直ラインを使用する。次に、各反復レベルで、配置装置は、ワイヤ長さコストを低減する目的で、その反復レベルで定義したサブ領域間で、回路モジュールを移動するために最適化アルゴリズムを使用する。特定の反復レベルでワイヤ長さコストを最小にした後で、配置装置は、これらの分割したサブ領域内のワイヤ長さコストをさらに最適化するために、ある基準に適合するそのレベルのサブ領域を反復して分割する。
例えば、ある反復分割技術は、ICレイアウトを反復して4等分部分(すなわち、4つの領域)に分割する。このアプローチの場合、最小スパニング・ツリーは、通常、異なる4等分部分内のモジュールを接続するためのワイヤ長さコストを推定するために使用される。もう1つの反復分割技術は、ICレイアウトを、反復して9つの領域に分割する。ある場合には、このタイプの分割は「シャープ」分割と呼ばれる。このタイプの分割の場合、シュタイナー・ツリーは、通常、異なる領域内の接続しているモジュールに対する、ワイヤ長さコストを推定するために使用される。
上記配置技術は、その配置構成コストを計算する際に、対角線配線を考慮に入れない。それ故、相互接続ラインに対して対角線経路が選択された場合、これらの技術を使用すると配置構成がうまくいかない。そのため、レイアウト領域を効率的に使用するができないし、ワイヤの使用量が増え、および/または多くのワイヤが集中することになる。それ故、その配置構成コストを計算する際に、対角線配線を考慮に入れる配置装置のための技術の開発が待望されている。
本発明は、配置の際に対角線配線を考慮に入れる方法および装置に関する。本発明のいくつかの実施形態は、潜在的配置構成のコストを計算する際に、対角線を使用する配置装置である。例えば、いくつかの実施形態は、(1)あるネット・リスト内の各ネットに対して、そのネットのすべての回路素子を含む囲みボックスを識別し、(2)その全体または一部が対角線であってもよいラインを使用して、各囲みボックスの属性を計算し、(3)計算した属性に基づいてワイヤ長さコストの推定値を計算することにより、ある配置構成のワイヤ長さコストを推定する。
いくつかの配置構成のワイヤ長さコストを推定するために、他の実施形態は、ネット相互接続トポロジーをモデル化する接続グラフを形成する。これらの接続グラフは、その全体または一部が対角線である縁部を持つことができる。これらの実施形態は、また、接続グラフの他の特性も計算することができる。
さらに他の実施形態は、問題の回路領域をいくつかのサブ領域に分割する。回路領域内のあるネットに対して、これらの実施形態は、回路素子のネットの組を含む一組のサブ領域を識別し、識別した一組のサブ領域を横切る接続グラフの(例えば、ワイヤ長さのような)属性を識別する。識別した接続グラフは、少なくとも1つのその全体または一部が対角線である縁部を持つ。次に、これらの実施形態は、配置測定基準を計算するために識別した属性を使用する。
ある配置構成に対して、いくつかの実施形態は、潜在的対角線配線についての遅延コストを計算する。例えば、いくつかの実施形態は、あるネットに対するワイヤ長さ配置コストから、そのネットに対する遅延コストを計算する。
他の実施形態は、潜在的配置構成の集中コストを測定するために対角線を使用する。例えば、いくつかの配置装置は、ICレイアウトを複数の領域に分割する分割ラインとして複数の対角線を使用する。その後で、これらの配置装置は、対角線分割ラインにより分割されたネットの数を測定することにより、集中コストの推定値を生成する。
本発明の新規な機能は、添付の特許請求の範囲に記載してある。しかし、説明のために、本発明のいくつかの実施形態を下記の図面に示す。
いくつかの配置構成のワイヤ長さコストを推定するために、他の実施形態は、ネット相互接続トポロジーをモデル化する接続グラフを形成する。これらの接続グラフは、その全体または一部が対角線である縁部を持つことができる。これらの実施形態は、また、接続グラフの他の特性も計算することができる。
さらに他の実施形態は、問題の回路領域をいくつかのサブ領域に分割する。回路領域内のあるネットに対して、これらの実施形態は、回路素子のネットの組を含む一組のサブ領域を識別し、識別した一組のサブ領域を横切る接続グラフの(例えば、ワイヤ長さのような)属性を識別する。識別した接続グラフは、少なくとも1つのその全体または一部が対角線である縁部を持つ。次に、これらの実施形態は、配置測定基準を計算するために識別した属性を使用する。
ある配置構成に対して、いくつかの実施形態は、潜在的対角線配線についての遅延コストを計算する。例えば、いくつかの実施形態は、あるネットに対するワイヤ長さ配置コストから、そのネットに対する遅延コストを計算する。
他の実施形態は、潜在的配置構成の集中コストを測定するために対角線を使用する。例えば、いくつかの配置装置は、ICレイアウトを複数の領域に分割する分割ラインとして複数の対角線を使用する。その後で、これらの配置装置は、対角線分割ラインにより分割されたネットの数を測定することにより、集中コストの推定値を生成する。
本発明の新規な機能は、添付の特許請求の範囲に記載してある。しかし、説明のために、本発明のいくつかの実施形態を下記の図面に示す。
本発明は、配置の際に対角線配線を考慮に入れる方法および装置に関する。以下の説明においては、説明のために多くの部材を詳細に説明してある。しかし、通常の当業者であれば、これらの特定の詳細な説明によらなくても、本発明を実行することができることを理解することができるだろう。他の実施形態の場合には、不必要な詳細な説明により、本発明の説明が分かりにくくならないように、周知の構造体およびデバイスをブロック図の形で示す。
本発明のいくつかの実施形態は、潜在的配置構成のコストを計算する際に、対角線を使用する配置装置である。例えば、いくつかの実施形態は、(1)各ネットに対して、そのネットのすべての回路素子(すなわち、ピンまたは、回路モジュール)を含む囲みボックスを識別し、(2)その全体または一部が対角線であってもよいラインを使用して、各囲みボックスの属性を計算し、(3)計算した属性に基づいて、配置コストを生成することにより配置構成のワイヤ長さコストを推定する。このような囲みボックス法を使用するいくつかの実施形態については、第II節のところで説明する。
いくつかの配置構成のワイヤ長さコストを推定するために、他の実施形態は、潜在的相互接続トポロジーをモデル化する。これらの実施形態は、その全体または一部が対角線である縁部を持つことができる接続グラフを形成する。このような接続グラフの例としては、最小スパニング・ツリーおよびシュタイナー・ツリー等がある。第III節は、いくつかのこのような実施形態を示す。
他の実施形態は、ICレイアウトを複数の領域に分割する分割ラインとして、対角線を使用する。次に、これらの実施形態は、対角線分割ラインにより分割したネットの数を測定することにより、集中コスト推定値を生成する。対角線分割ラインによる最小カット二分割法を使用するいくつかのこのような実施形態については、第IV節のところで説明する。
他の実施形態は、IC領域を、複数のサブ領域に分割するために分割ラインを使用し、次に、これらサブ領域に関するネットの構成に基づいてワイヤ長さコストを測定する。いくつかのこのような実施形態については、第V節のところで説明する。また、いくつかの実施形態は、ルーティング中の潜在的対角線配線による配置遅延コストを計算する。いくつかのこのような実施形態については、第VI節のところで説明する。
第II節〜第VI節に記載するいくつかの実施形態について説明する前に、本発明のコスト計算法と一緒に使用することができる、いくつかの対角線配線アーキテクチャについて第I節のところで説明する。また、第II節〜第VI節のところで説明するコスト計算法により計算したコストを、最適化するために使用することができるいくつかの最適化技術については、第VII節のところで説明する。次に、本発明のいくつかの実施形態で使用するコンピュータ・システムについて、第VIII節のところで説明する。最後に、配置中に対角線配線を考慮に入れる利点について、第IX節のところで説明する。
本発明のいくつかの実施形態は、潜在的配置構成のコストを計算する際に、対角線を使用する配置装置である。例えば、いくつかの実施形態は、(1)各ネットに対して、そのネットのすべての回路素子(すなわち、ピンまたは、回路モジュール)を含む囲みボックスを識別し、(2)その全体または一部が対角線であってもよいラインを使用して、各囲みボックスの属性を計算し、(3)計算した属性に基づいて、配置コストを生成することにより配置構成のワイヤ長さコストを推定する。このような囲みボックス法を使用するいくつかの実施形態については、第II節のところで説明する。
いくつかの配置構成のワイヤ長さコストを推定するために、他の実施形態は、潜在的相互接続トポロジーをモデル化する。これらの実施形態は、その全体または一部が対角線である縁部を持つことができる接続グラフを形成する。このような接続グラフの例としては、最小スパニング・ツリーおよびシュタイナー・ツリー等がある。第III節は、いくつかのこのような実施形態を示す。
他の実施形態は、ICレイアウトを複数の領域に分割する分割ラインとして、対角線を使用する。次に、これらの実施形態は、対角線分割ラインにより分割したネットの数を測定することにより、集中コスト推定値を生成する。対角線分割ラインによる最小カット二分割法を使用するいくつかのこのような実施形態については、第IV節のところで説明する。
他の実施形態は、IC領域を、複数のサブ領域に分割するために分割ラインを使用し、次に、これらサブ領域に関するネットの構成に基づいてワイヤ長さコストを測定する。いくつかのこのような実施形態については、第V節のところで説明する。また、いくつかの実施形態は、ルーティング中の潜在的対角線配線による配置遅延コストを計算する。いくつかのこのような実施形態については、第VI節のところで説明する。
第II節〜第VI節に記載するいくつかの実施形態について説明する前に、本発明のコスト計算法と一緒に使用することができる、いくつかの対角線配線アーキテクチャについて第I節のところで説明する。また、第II節〜第VI節のところで説明するコスト計算法により計算したコストを、最適化するために使用することができるいくつかの最適化技術については、第VII節のところで説明する。次に、本発明のいくつかの実施形態で使用するコンピュータ・システムについて、第VIII節のところで説明する。最後に、配置中に対角線配線を考慮に入れる利点について、第IX節のところで説明する。
I.対角線配線アーキテクチャ
本発明のいくつかの実施形態は、対角線相互接続ライン(すなわち、対角線配線)を含むICレイアウトに対する配置構成コストを計算する。これらの実施形態の中のあるものの場合、ICレイアウトは、対角線相互接続ラインを含むばかりでなく、水平相互接続ラインおよび垂直相互接続ラインも含む。
本明細書においては使用する場合、相互接続ラインが、レイアウトの境界の辺の中の1つに対して、0度または90度以外の角度を形成する場合、相互接続ラインは「対角線」である。一方、相互接続ラインが、レイアウトの境界の辺の中の1つに対して0度または90度を形成する場合、相互接続ラインは水平ラインおよび垂直ラインである。
図7は、水平相互接続ライン、垂直相互接続ライン、および45度対角線配相互接続ラインを使用するICレイアウト700の配線アーキテクチャ(すなわち、相互接続ラインアーキテクチャ)を示す。本明細書においては、アーキテクチャという用語は、相互接続ラインが、任意の所与の点から8つの個々方向に向かうことができることを示すために八角配線モデルを意味する。
水平ライン705は、レイアウトの幅710に平行になるように引かれている、x軸に平行な(すなわち、角度0の)ラインである。垂直ライン715は、レイアウトの高さ720に平行になるように引かれている、y軸に平行なラインである。すなわち、垂直相互接続ライン715は、ICレイアウトの幅に対して垂直な(すなわち、90度の角度の)ラインである。このアーキテクチャの場合には、一組の対角線725は、ICレイアウトの幅に対して+45度を形成し、一方他の一組の対角線730は、ICレイアウトの幅に対して−45度を形成する。
図8は、IC上で図7の配線アーキテクチャを実行する1つの方法である。より詳細に説明すると、図8は、ICに対する5つの金属層である。最初の3つの層805〜815は、マンハッタン層である。すなわち、これらの層内での配線の好適な方向は、水平方向か垂直方向である。最初の3つの層内の好適な配線方向は、通常、交互の方向である。そのため、2つの連続層は、同じ方向に配線されない。しかし、場合によっては、連続層内の配線は、同じ方向を向いていることもある。
次の2つの層820および825は、対角線層である。対角線層内の好適な配線方向は、±45度である。また、最初の3つの層内のように、第4および第5の配線方向は、通常、直交する(すなわち、一方の層の配線方向は+45度であり、他方の層の配線方向は−45度である)。しかし、必ずしもそうでなくてもよい。
上記八角配線モデルを使用するICレイアウトと協力する、本発明のいくつかの実施形態について以下に説明するが、通常の当業者であれば、本発明は任意の配線モデルと一緒に使用することができることを理解することができるだろう。例えば、本発明は、完全に対角線である(すなわち、好適な水平および垂直配線方向を持たない)配線アーキテクチャと一緒に使用することができる。
また、いくつかの実施形態は、45度でない対角線配線と一緒に使用することができる。例えば、いくつかの実施形態は、水平、垂直および±120度対角線相互接続ラインを持つICレイアウトと一緒に使用することができる。
本発明のいくつかの実施形態は、対角線相互接続ライン(すなわち、対角線配線)を含むICレイアウトに対する配置構成コストを計算する。これらの実施形態の中のあるものの場合、ICレイアウトは、対角線相互接続ラインを含むばかりでなく、水平相互接続ラインおよび垂直相互接続ラインも含む。
本明細書においては使用する場合、相互接続ラインが、レイアウトの境界の辺の中の1つに対して、0度または90度以外の角度を形成する場合、相互接続ラインは「対角線」である。一方、相互接続ラインが、レイアウトの境界の辺の中の1つに対して0度または90度を形成する場合、相互接続ラインは水平ラインおよび垂直ラインである。
図7は、水平相互接続ライン、垂直相互接続ライン、および45度対角線配相互接続ラインを使用するICレイアウト700の配線アーキテクチャ(すなわち、相互接続ラインアーキテクチャ)を示す。本明細書においては、アーキテクチャという用語は、相互接続ラインが、任意の所与の点から8つの個々方向に向かうことができることを示すために八角配線モデルを意味する。
水平ライン705は、レイアウトの幅710に平行になるように引かれている、x軸に平行な(すなわち、角度0の)ラインである。垂直ライン715は、レイアウトの高さ720に平行になるように引かれている、y軸に平行なラインである。すなわち、垂直相互接続ライン715は、ICレイアウトの幅に対して垂直な(すなわち、90度の角度の)ラインである。このアーキテクチャの場合には、一組の対角線725は、ICレイアウトの幅に対して+45度を形成し、一方他の一組の対角線730は、ICレイアウトの幅に対して−45度を形成する。
図8は、IC上で図7の配線アーキテクチャを実行する1つの方法である。より詳細に説明すると、図8は、ICに対する5つの金属層である。最初の3つの層805〜815は、マンハッタン層である。すなわち、これらの層内での配線の好適な方向は、水平方向か垂直方向である。最初の3つの層内の好適な配線方向は、通常、交互の方向である。そのため、2つの連続層は、同じ方向に配線されない。しかし、場合によっては、連続層内の配線は、同じ方向を向いていることもある。
次の2つの層820および825は、対角線層である。対角線層内の好適な配線方向は、±45度である。また、最初の3つの層内のように、第4および第5の配線方向は、通常、直交する(すなわち、一方の層の配線方向は+45度であり、他方の層の配線方向は−45度である)。しかし、必ずしもそうでなくてもよい。
上記八角配線モデルを使用するICレイアウトと協力する、本発明のいくつかの実施形態について以下に説明するが、通常の当業者であれば、本発明は任意の配線モデルと一緒に使用することができることを理解することができるだろう。例えば、本発明は、完全に対角線である(すなわち、好適な水平および垂直配線方向を持たない)配線アーキテクチャと一緒に使用することができる。
また、いくつかの実施形態は、45度でない対角線配線と一緒に使用することができる。例えば、いくつかの実施形態は、水平、垂直および±120度対角線相互接続ラインを持つICレイアウトと一緒に使用することができる。
II.囲みボックス方法
水平相互接続ライン、垂直相互接続ライン、および対角線相互接続ラインを使用するICレイアウトに対して、本発明のいくつかの実施形態は、(1)そのネットのすべての回路素子を含む囲みボックスを識別し、(2)少なくともその一部が対角線であるラインを使用して各囲みボックスの属性を計算することにより、あるネット・リスト内の各ネットに対するワイヤ長さコストの推定値を計算する。次に、これらの実施形態は、ネット・リスト内のすべてのネットの計算した属性に基づいてワイヤ長さコスト推定値を生成する。例えば、いくつかの実施形態は、ある配置構成に対するワイヤ長さコストの推定値を入手するために、計算した属性を合計する。
いくつかの実施形態の場合には、ネットの囲みボックスの計算した属性は、囲みボックスの対向する隅間の最短距離である。図9および図10は、本発明のこのような一実施形態を示す。図9は、図1のピン135、145および160が表すネットに対する囲みボックス905の一例である。ライン910は、ボックス905の2つの対向する隅935および940間の最短距離を通る。図9に示すように、このラインの一部は対角線である。より詳細に説明すると、この例の場合には、このラインの1つのセグメント920は対角線である。一方、他のセグメント915は、水平である。
下式(A)により、囲みボックス905の2つの対向する隅935および940間の最短距離を求めることができる。
距離=[L−{S(cosA/sinA)}]+S/sinA (A)
ここで、「L」は、この例の場合には、ボックスの幅925である、ボックスの長い辺であり、一方、「S」は、この例の場合には、その高さ930である、ボックスの短い辺である。また、ここで、「A」は、対角線のセグメント915と囲みボックスの長い辺との間の角度である。
いくつかの実施形態の場合には、この角度Aは、ICレイアウト内の対角線相互接続ラインの中のあるものの方向に対応する。例えば、いくつかの実施形態の場合には、ICレイアウトが八角配線モデルを使用する場合には、角度Aは45度である。このようにして、囲みボックスを横切る対角線カット920は、囲みボックスの2つの対向する隅間を接続する対角線相互接続ラインを表す。
式(B)−(D)は、式(A)の入手方法を示す。ライン910の長さは、2つのセグメント915および920の長さの合計に等しい。式(B)により、水平セグメント915の長さを求めることができ、一方、式(C)により、対角線セグメント920の長さを求めることができる。
915の長さ=L−(920の長さ)*(cosA) (B)
920の長さ=S/sinA (C)
式(B)および(C)を一緒にして、下式(D)を得ることができる。この式(D)を簡単にしたものが上式(A)である。
距離=915の長さ+920の長さ
=L−S/sinA*(cosA)+S/sinA (D)
角度Aが45度に等しい場合、式(A)を簡単にして下式(E)とすることができる。
距離=L+S*(sqrt(2)−1) (E)
囲みボックスが幅または高さを持たない場合には、囲みボックスは1本のラインになり、このラインの対向する隅間の最短距離は、囲みボックスの長い(そして唯一の)辺であり、これは水平ラインまたは垂直ラインとである。そうでない場合で、囲みボックスが正方形で、角度Aが45度である場合には、全体が対角線であるラインは、ボックスの2つの対向する隅間の最短距離となる。
水平相互接続ライン、垂直相互接続ライン、および対角線相互接続ラインを使用するICレイアウトに対して、本発明のいくつかの実施形態は、(1)そのネットのすべての回路素子を含む囲みボックスを識別し、(2)少なくともその一部が対角線であるラインを使用して各囲みボックスの属性を計算することにより、あるネット・リスト内の各ネットに対するワイヤ長さコストの推定値を計算する。次に、これらの実施形態は、ネット・リスト内のすべてのネットの計算した属性に基づいてワイヤ長さコスト推定値を生成する。例えば、いくつかの実施形態は、ある配置構成に対するワイヤ長さコストの推定値を入手するために、計算した属性を合計する。
いくつかの実施形態の場合には、ネットの囲みボックスの計算した属性は、囲みボックスの対向する隅間の最短距離である。図9および図10は、本発明のこのような一実施形態を示す。図9は、図1のピン135、145および160が表すネットに対する囲みボックス905の一例である。ライン910は、ボックス905の2つの対向する隅935および940間の最短距離を通る。図9に示すように、このラインの一部は対角線である。より詳細に説明すると、この例の場合には、このラインの1つのセグメント920は対角線である。一方、他のセグメント915は、水平である。
下式(A)により、囲みボックス905の2つの対向する隅935および940間の最短距離を求めることができる。
距離=[L−{S(cosA/sinA)}]+S/sinA (A)
ここで、「L」は、この例の場合には、ボックスの幅925である、ボックスの長い辺であり、一方、「S」は、この例の場合には、その高さ930である、ボックスの短い辺である。また、ここで、「A」は、対角線のセグメント915と囲みボックスの長い辺との間の角度である。
いくつかの実施形態の場合には、この角度Aは、ICレイアウト内の対角線相互接続ラインの中のあるものの方向に対応する。例えば、いくつかの実施形態の場合には、ICレイアウトが八角配線モデルを使用する場合には、角度Aは45度である。このようにして、囲みボックスを横切る対角線カット920は、囲みボックスの2つの対向する隅間を接続する対角線相互接続ラインを表す。
式(B)−(D)は、式(A)の入手方法を示す。ライン910の長さは、2つのセグメント915および920の長さの合計に等しい。式(B)により、水平セグメント915の長さを求めることができ、一方、式(C)により、対角線セグメント920の長さを求めることができる。
915の長さ=L−(920の長さ)*(cosA) (B)
920の長さ=S/sinA (C)
式(B)および(C)を一緒にして、下式(D)を得ることができる。この式(D)を簡単にしたものが上式(A)である。
距離=915の長さ+920の長さ
=L−S/sinA*(cosA)+S/sinA (D)
角度Aが45度に等しい場合、式(A)を簡単にして下式(E)とすることができる。
距離=L+S*(sqrt(2)−1) (E)
囲みボックスが幅または高さを持たない場合には、囲みボックスは1本のラインになり、このラインの対向する隅間の最短距離は、囲みボックスの長い(そして唯一の)辺であり、これは水平ラインまたは垂直ラインとである。そうでない場合で、囲みボックスが正方形で、角度Aが45度である場合には、全体が対角線であるラインは、ボックスの2つの対向する隅間の最短距離となる。
角度Aが、ICレイアウト内の対角線相互接続ラインの中のどれかの方向に対応する場合には、式(A)により計算した最短距離は、囲みボックスの対向する隅のところに位置する2つの仮定のネット回路素子を接続するのに必要な配線の最短距離に対応する。このような場合、式(A)により計算した距離は、3つまたはそれ以上の回路素子を含むネットに対して必要なワイヤ長さを示さない場合がある。さらに、この距離は、2つの素子からなるネットの場合、必要な実際の配線経路より短い場合があり、ライン910に沿ってそのネットをルーティングすることができない場合がある。式(A)により計算したこの距離の値は、水平配線、垂直配線、および対角線配線を使用する配線アーキテクチャ内のネットをルーティングするのに必要なワイヤの長さに関するもっと低い境界推定値を供給するだけである。いくつかの実施形態は、また、任意の配線モデルに対してこの式を使用する。しかし、これら実施形態の中のあるものは、この式により定量化された距離が最も短くなるように、いくつかの選択肢の中から角度Aを選択する。
図10は、上記囲みボックス法を使用するコスト計算プロセス1000である。配置装置は、ネット・リスト上の一組のネットに対するワイヤ長さコストの推定値を生成するために、このコスト計算プロセスを使用することができる。いくつかの実施形態の場合には、プロセス1000は、多数のネットを指定するネット・リストを受信した場合に何時でもスタートする。
受信した各ネットは、それに関連するいくつかの回路素子を含む(すなわち、各ネットは、いくつかの回路素子を含むように定義される)。すなわち、そのネット・リスト上のネットは、ICレイアウト内のすべてのまたはいくつかの回路素子間の相互接続を指定する。下記のいくつかの実施形態の場合には、ネットに関連する回路素子は、ICレイアウト内の回路モジュールのピンである。しかし、他の実施形態は、回路モジュールを、ネットの回路素子として処理する。これらの実施形態の中のあるものは、回路モジュールをネット回路素子として処理し、各モジュールのピンが、すべて(例えば、モジュールの原点に位置するというように)均等な位置にすべて位置するものと仮定することにより、異なるピン位置を区別する必要がなくなる。
いくつかの実施形態の場合には、プロセス1000がスタートする前のネット回路素子の位置が、最初の配置構成を定義する。これらの実施形態の中のあるものの場合、最初の回路素子の位置はランダムである。他のいくつかの実施形態の場合には、フロア・プラニングのような前の物理的設計作業が、これらの素子の最初の位置の一部または全部を指定する。他のいくつかの実施形態は、回路素子の最初の位置を指定するためにもう1つの配置装置を使用し、その後で、対角線配線を使用する配線アーキテクチャに対する配置構成を最適化するためにプロセス1000を使用する。
図10は、上記囲みボックス法を使用するコスト計算プロセス1000である。配置装置は、ネット・リスト上の一組のネットに対するワイヤ長さコストの推定値を生成するために、このコスト計算プロセスを使用することができる。いくつかの実施形態の場合には、プロセス1000は、多数のネットを指定するネット・リストを受信した場合に何時でもスタートする。
受信した各ネットは、それに関連するいくつかの回路素子を含む(すなわち、各ネットは、いくつかの回路素子を含むように定義される)。すなわち、そのネット・リスト上のネットは、ICレイアウト内のすべてのまたはいくつかの回路素子間の相互接続を指定する。下記のいくつかの実施形態の場合には、ネットに関連する回路素子は、ICレイアウト内の回路モジュールのピンである。しかし、他の実施形態は、回路モジュールを、ネットの回路素子として処理する。これらの実施形態の中のあるものは、回路モジュールをネット回路素子として処理し、各モジュールのピンが、すべて(例えば、モジュールの原点に位置するというように)均等な位置にすべて位置するものと仮定することにより、異なるピン位置を区別する必要がなくなる。
いくつかの実施形態の場合には、プロセス1000がスタートする前のネット回路素子の位置が、最初の配置構成を定義する。これらの実施形態の中のあるものの場合、最初の回路素子の位置はランダムである。他のいくつかの実施形態の場合には、フロア・プラニングのような前の物理的設計作業が、これらの素子の最初の位置の一部または全部を指定する。他のいくつかの実施形態は、回路素子の最初の位置を指定するためにもう1つの配置装置を使用し、その後で、対角線配線を使用する配線アーキテクチャに対する配置構成を最適化するためにプロセス1000を使用する。
プロセス1000は、最初に、(ステップ1005において)ワイヤ長さコストの推定値(WL_Cost)をゼロに設定し、受信したネット・リストから第1のネットを選択する。各ネットはピンの組Nを持つ。ステップ1005において、プロセスは、また、選択したネットのピンの組Nに等しいピンの組Pを定義する。ステップ1010において、プロセスは、ピンの定義した組Pから1つのピンPを選択し、組Pからこの選択したピンを除去する。その後で、プロセスは、(ステップ1015において)現在のネットに対する囲みボックスの最大および最小x座標およびy座標を初期化するために、選択したピンのx座標およびy座標を使用する。
次に、プロセスは、(ステップ1020において)現在のネットに対するピンの組Pから他のピンを選択する。ステップ1025において、プロセスは、現在のネットに対する囲みボックスの最大および最小x座標およびy座標を、修正する必要があるかどうかを判断するために、ステップ1020において選択したピン(すなわち、現在のピン)のx座標およびy座標をチェックする。より詳細に説明すると、囲みボックスの最大x座標(XMAX)が現在のピンのx座標より小さい場合には、プロセスは、囲みボックスの最大x座標(XMAX)を現在のピンのx座標に等しく設定する。別な方法としては、囲みボックスの最小x座標(XMIN)が、現在のピンのx座標より大きい場合には、プロセスは、囲みボックスの最小x座標(XMIN)を現在のピンのx座標に等しく設定する。同様に、囲みボックスの最小y座標(YMIN)が現在のピンのy座標より大きい場合には、プロセスは、囲みボックスの最小y座標(YMIN)を現在のピンのy座標に等しく設定する。一方、囲みボックスの最大y座標(YMAX)が現在のピンのy座標より小さい場合には、プロセスは、囲みボックスの最大y座標(YMAX)を現在のピンのy座標に等しく設定する。
ステップ1025の後で、プロセスは、(ステップ1030において)組P内に任意のピンが存在するかどうか、(すなわち、まだチェックしてない現在のネット内に任意のピンが存在するかどうか)を判断する。存在している場合には、プロセスは、(ステップ1020において)別のピンを選択するために戻り、(ステップに1025おいて)、囲みボックスのx座標およびy座標を修正するために、選択したピンを使用する必要があるかどうかを判断する。プロセスが、(ステップ1030において)現在のネットのすべてのピンをチェックしたと判断した場合には、プロセスは、(ステップ1035において)現在のネットの囲みボックスの4つの座標を、(XMIN,YMIN)(XMIN,YMAX)(XMAX,YMIN)および(XMAX,YMAX)として定義する。
次に、プロセスは、(ステップ1020において)現在のネットに対するピンの組Pから他のピンを選択する。ステップ1025において、プロセスは、現在のネットに対する囲みボックスの最大および最小x座標およびy座標を、修正する必要があるかどうかを判断するために、ステップ1020において選択したピン(すなわち、現在のピン)のx座標およびy座標をチェックする。より詳細に説明すると、囲みボックスの最大x座標(XMAX)が現在のピンのx座標より小さい場合には、プロセスは、囲みボックスの最大x座標(XMAX)を現在のピンのx座標に等しく設定する。別な方法としては、囲みボックスの最小x座標(XMIN)が、現在のピンのx座標より大きい場合には、プロセスは、囲みボックスの最小x座標(XMIN)を現在のピンのx座標に等しく設定する。同様に、囲みボックスの最小y座標(YMIN)が現在のピンのy座標より大きい場合には、プロセスは、囲みボックスの最小y座標(YMIN)を現在のピンのy座標に等しく設定する。一方、囲みボックスの最大y座標(YMAX)が現在のピンのy座標より小さい場合には、プロセスは、囲みボックスの最大y座標(YMAX)を現在のピンのy座標に等しく設定する。
ステップ1025の後で、プロセスは、(ステップ1030において)組P内に任意のピンが存在するかどうか、(すなわち、まだチェックしてない現在のネット内に任意のピンが存在するかどうか)を判断する。存在している場合には、プロセスは、(ステップ1020において)別のピンを選択するために戻り、(ステップに1025おいて)、囲みボックスのx座標およびy座標を修正するために、選択したピンを使用する必要があるかどうかを判断する。プロセスが、(ステップ1030において)現在のネットのすべてのピンをチェックしたと判断した場合には、プロセスは、(ステップ1035において)現在のネットの囲みボックスの4つの座標を、(XMIN,YMIN)(XMIN,YMAX)(XMAX,YMIN)および(XMAX,YMAX)として定義する。
次に、プロセスは、(ステップ1040において)囲みボックスの幅および高さを測定する。プロセスは、(1)囲みボックスの最大および最小x座標の間の違いを測定することにより幅を、(2)囲みボックスの最大および最小y座標の間の違いを測定することにより高さを測定する。次に、プロセスは、(ステップ1045において)計算した幅が計算した高さより大きいかどうかを判断する。大きい場合には、プロセスは、(ステップ1050において)幅を長い辺と定義し、また高さを短い辺と定義する。小さい場合には、プロセスは、(ステップ1055において)幅を短い辺として定義し、高さを長い辺と定義する。
次に、プロセスは、(ステップ1060において)上式(A)により、囲みボックスの2つの対向する隅間の距離を計算することにより、現在のネットに対するワイヤ長さコストの推定値(Net_WL_Cost)を計算する。次に、プロセスは、(ステップ1065において)(1)計算したネットのワイヤ長さコスト(Net_WL_Cost)を全ワイヤ長さコスト(WL_Cost)に加算し、(2)ネットのワイヤ長さコスト(Net_WL_Cost)を記憶する。ステップ1070において、プロセスは、ネット・リスト内のすべてのネットをチェックしたかどうかを判断する。チェックしていなかった場合には、ステップ1075において、プロセスは、ネット・リストから他のネットを選択し、ピンの組Pをこの選択したネットのピンの組Nと等しいと定義する。次に、プロセスは、ステップ1010に戻り、この選択したネットに対する囲みボックスのコストを計算する。
プロセスが、すべてのネットに対する囲みボックスのコストを計算した場合には、プロセスは、(ステップ1070において)ネット・リスト内のすべてのネットをチェックしたかどうかを判断する。この時点で、プロセスは、ワイヤ長さコスト変数(WL_Cost)の値を、受信したネット・リストに対する推定ワイヤ長さコストとして返送し、処理を終了する。
本発明のいくつかの実施形態の場合には、プロセス1000は、最初の配置構成を指定するネット・リスト(すなわち、レイアウト内のモジュールの位置を修正する前のICレイアウト内のすべてのネットを識別するネット・リスト)を受信した場合に、最初の配置構成に対するワイヤ長さコストの推定値(WL_Cost)を生成する。
最初の配置構成のワイヤ長さコストを入手した後で、いくつかの実施形態は、配置構成コストを改善するために、配置構成を反復して修正する最適化プロセスを使用する。いくつかの実施形態の場合には、最適化プロセスは、配置構成に対する可能な反復修正に対する配置構成コストを計算するためにプロセス1000を使用する。これについては第VII節のところでさらに詳細に説明する。この節においては、いくつかの適当な最適化技術についても説明する。
次に、プロセスは、(ステップ1060において)上式(A)により、囲みボックスの2つの対向する隅間の距離を計算することにより、現在のネットに対するワイヤ長さコストの推定値(Net_WL_Cost)を計算する。次に、プロセスは、(ステップ1065において)(1)計算したネットのワイヤ長さコスト(Net_WL_Cost)を全ワイヤ長さコスト(WL_Cost)に加算し、(2)ネットのワイヤ長さコスト(Net_WL_Cost)を記憶する。ステップ1070において、プロセスは、ネット・リスト内のすべてのネットをチェックしたかどうかを判断する。チェックしていなかった場合には、ステップ1075において、プロセスは、ネット・リストから他のネットを選択し、ピンの組Pをこの選択したネットのピンの組Nと等しいと定義する。次に、プロセスは、ステップ1010に戻り、この選択したネットに対する囲みボックスのコストを計算する。
プロセスが、すべてのネットに対する囲みボックスのコストを計算した場合には、プロセスは、(ステップ1070において)ネット・リスト内のすべてのネットをチェックしたかどうかを判断する。この時点で、プロセスは、ワイヤ長さコスト変数(WL_Cost)の値を、受信したネット・リストに対する推定ワイヤ長さコストとして返送し、処理を終了する。
本発明のいくつかの実施形態の場合には、プロセス1000は、最初の配置構成を指定するネット・リスト(すなわち、レイアウト内のモジュールの位置を修正する前のICレイアウト内のすべてのネットを識別するネット・リスト)を受信した場合に、最初の配置構成に対するワイヤ長さコストの推定値(WL_Cost)を生成する。
最初の配置構成のワイヤ長さコストを入手した後で、いくつかの実施形態は、配置構成コストを改善するために、配置構成を反復して修正する最適化プロセスを使用する。いくつかの実施形態の場合には、最適化プロセスは、配置構成に対する可能な反復修正に対する配置構成コストを計算するためにプロセス1000を使用する。これについては第VII節のところでさらに詳細に説明する。この節においては、いくつかの適当な最適化技術についても説明する。
III.潜在的対角線を含む接続グラフ
本発明のいくつかの実施形態は、いくつかの配置構成のワイヤ長さコストを推定するために、潜在的相互接続(すなわち、配線)トポロジーをモデル化する接続グラフを形成する。通常、あるネットに対する接続グラフは、(1)各ネット素子(すなわち、ピンまたはモジュール)を(頂点または点とも呼ぶ)ノードとして、(2)2つのネット素子を接続する各潜在的相互接続ラインを(ラインとも呼ぶことがある)縁部としてモデル化する。
本発明の接続グラフは、その全体または一部が対角線である縁部を含むことができる。このような接続グラフは、最小スパニング・ツリー(「MCT」)およびシュタイナー・ツリーを含むが、これについては以下に説明する。通常の当業者であれば、本発明の他の実施形態は、潜在的相互接続トポロジーをモデル化するために、(完全なグラフ、最小チェーン・グラフ、ソース・シンク・グラフ等にような)他の接続グラフを使用することができることを理解することができるだろう。
A.最小スパニング・ツリー
いくつかの実施形態は、(1)各ネットに対して、対角線縁部を持つことができるMSTを形成することにより、(2)各MSTの長さを計算することにより、(3)計算した長さを合計することにより配置構成に対するワイヤ長さコストの推定値を生成する。あるネットに対する最小スパニング・ツリーは、素子のところだけで分岐する最短経路を通るネットの素子を接続する(すなわち、結ぶ)ツリーである。最小スパニング・ツリーの長さは、ネットの素子(すなわち、ネットのピンまたはモジュール)を、相互に接続するために必要なワイヤの長さのもっと低い境界推定値である。
より詳細に説明すると、N個の素子のネットに対するスパニング・ツリーは、(1)N個の素子に対応するN個のノード、および(2)そのN個のノードを接続するN−1個の縁部を含む。最小スパニング・ツリーの縁部は、そのツリーのN個のノードの中の1つからスタートし、そこで終わる。また、MSTにおいては、縁部は、通常、そのノードを接続するための達成可能な最短経路を形成するために選択される。
本発明のいくつかの実施形態の場合には、MSTの縁部は、水平方向を向いていても、垂直方向を向いていても、対角線方向を向いていてもよい。対角線縁部は、その全体または一部が対角線であってもよい。また、ICレイアウトが、(例えば、±120度の相互接続ラインのような)対角線相互接続ラインを使用している場合には、MSTの対角線縁部は、レイアウト内の対角線相互接続ラインの中のあるものと、(例えば、±120度方向のような)同じ方向を向いていてもよい。
例えば、ICレイアウトが八角配線モデルを使用している場合には、(すなわち、水平ライン、垂直ライン、および45度対角線ラインを使用している場合には)、いくつかの実施形態は、水平縁部、垂直縁部、および45度対角線縁部を含むMSTを形成する。図11は、このようなMSTの一例である。このツリー1105は、図1のピン135、145および160を含むネットのMSTである。このツリーは、2つの縁部1110および1115を持ち、第1の縁部1110は水平セグメント1120および+45度の対角線セグメント1125を含み、第2の縁部1115は、垂直セグメント1130および−45度の対角線セグメント1135を含む。
本発明のいくつかの実施形態は、いくつかの配置構成のワイヤ長さコストを推定するために、潜在的相互接続(すなわち、配線)トポロジーをモデル化する接続グラフを形成する。通常、あるネットに対する接続グラフは、(1)各ネット素子(すなわち、ピンまたはモジュール)を(頂点または点とも呼ぶ)ノードとして、(2)2つのネット素子を接続する各潜在的相互接続ラインを(ラインとも呼ぶことがある)縁部としてモデル化する。
本発明の接続グラフは、その全体または一部が対角線である縁部を含むことができる。このような接続グラフは、最小スパニング・ツリー(「MCT」)およびシュタイナー・ツリーを含むが、これについては以下に説明する。通常の当業者であれば、本発明の他の実施形態は、潜在的相互接続トポロジーをモデル化するために、(完全なグラフ、最小チェーン・グラフ、ソース・シンク・グラフ等にような)他の接続グラフを使用することができることを理解することができるだろう。
A.最小スパニング・ツリー
いくつかの実施形態は、(1)各ネットに対して、対角線縁部を持つことができるMSTを形成することにより、(2)各MSTの長さを計算することにより、(3)計算した長さを合計することにより配置構成に対するワイヤ長さコストの推定値を生成する。あるネットに対する最小スパニング・ツリーは、素子のところだけで分岐する最短経路を通るネットの素子を接続する(すなわち、結ぶ)ツリーである。最小スパニング・ツリーの長さは、ネットの素子(すなわち、ネットのピンまたはモジュール)を、相互に接続するために必要なワイヤの長さのもっと低い境界推定値である。
より詳細に説明すると、N個の素子のネットに対するスパニング・ツリーは、(1)N個の素子に対応するN個のノード、および(2)そのN個のノードを接続するN−1個の縁部を含む。最小スパニング・ツリーの縁部は、そのツリーのN個のノードの中の1つからスタートし、そこで終わる。また、MSTにおいては、縁部は、通常、そのノードを接続するための達成可能な最短経路を形成するために選択される。
本発明のいくつかの実施形態の場合には、MSTの縁部は、水平方向を向いていても、垂直方向を向いていても、対角線方向を向いていてもよい。対角線縁部は、その全体または一部が対角線であってもよい。また、ICレイアウトが、(例えば、±120度の相互接続ラインのような)対角線相互接続ラインを使用している場合には、MSTの対角線縁部は、レイアウト内の対角線相互接続ラインの中のあるものと、(例えば、±120度方向のような)同じ方向を向いていてもよい。
例えば、ICレイアウトが八角配線モデルを使用している場合には、(すなわち、水平ライン、垂直ライン、および45度対角線ラインを使用している場合には)、いくつかの実施形態は、水平縁部、垂直縁部、および45度対角線縁部を含むMSTを形成する。図11は、このようなMSTの一例である。このツリー1105は、図1のピン135、145および160を含むネットのMSTである。このツリーは、2つの縁部1110および1115を持ち、第1の縁部1110は水平セグメント1120および+45度の対角線セグメント1125を含み、第2の縁部1115は、垂直セグメント1130および−45度の対角線セグメント1135を含む。
各MST縁部の2つのノードを、ボックスの対向する2つの隅として処理することによって、上式(A)により各MSTの長さを求めることができる。
距離=[L−{S(cosA/sinA)}]+S/sinA (A)
すでに説明したように、ここで、「L」はボックスの長い辺であり、「S」はボックスの短い辺であり、「A」は縁部の対角線のセグメントと囲みボックスの長い辺との間の角度である。
図12は、いくつかのネットの相互接続トポロジーをモデル化する、MSTの長さを計算するコスト計算プロセス1200である。配置装置は、ネット・リスト上の一組のネットに対する、ワイヤ長さコストの推定値を生成するためにこのプロセスを使用する。いくつかの実施形態の場合には、プロセス1200は、ネットの数を指定するネット・リストを受信した場合は何時でもスタートする。
受信した各ネットは、それに関連するいくつかの回路素子を含む(すなわち、各ネットは、いくつかの回路素子を含むように定義される)。すなわち、そのネット・リスト上のネットは、ICレイアウト内のいくつかのまたはすべての回路素子間の相互接続を指定する。下記のいくつかの実施形態の場合には、ネットに関連する回路素子は、ICレイアウト内の回路モジュールのピンである。しかし、他の実施形態は、回路モジュールを、ネットの回路素子として処理する。これらの実施形態の中のあるものは、回路モジュールをネット回路素子として処理し、各モジュールのピンが、すべて(例えば、モジュールの原点に位置するというように)、均等な位置にすべて位置するものと仮定することにより、異なるピン位置を区別する必要がなくなる。
いくつかの実施形態の場合には、プロセス1200がスタートする前のネット回路素子の位置が、最初の配置構成を定義する。これらの実施形態の中のあるものの場合、最初の回路素子の位置はランダムである。他のいくつかの実施形態の場合には、フロア・プラニングのような前の物理的設計作業が、これらの素子の最初の位置の一部または全部を指定する。他のいくつかの実施形態は、回路素子の最初の位置を指定するためにもう1つの配置装置を使用し、次に、対角線配線を使用する配線アーキテクチャに対する配置構成を最適化するために、プロセス1200を使用する。
プロセス1200は、最初に、(ステップ1205において)ワイヤ長さコストの推定値(WL_Cost)をゼロに設定し、受信したネット・リストから第1のネットを選択する。次に、プロセスは、(ステップ1210において)ピンの組Pが、選択したネットのピンの組に等しいと定義する。次に、プロセスは、(ステップ1215において)選択したネットの最小スパニング・ツリーのコスト(MST_Cost)をゼロに設定する。
距離=[L−{S(cosA/sinA)}]+S/sinA (A)
すでに説明したように、ここで、「L」はボックスの長い辺であり、「S」はボックスの短い辺であり、「A」は縁部の対角線のセグメントと囲みボックスの長い辺との間の角度である。
図12は、いくつかのネットの相互接続トポロジーをモデル化する、MSTの長さを計算するコスト計算プロセス1200である。配置装置は、ネット・リスト上の一組のネットに対する、ワイヤ長さコストの推定値を生成するためにこのプロセスを使用する。いくつかの実施形態の場合には、プロセス1200は、ネットの数を指定するネット・リストを受信した場合は何時でもスタートする。
受信した各ネットは、それに関連するいくつかの回路素子を含む(すなわち、各ネットは、いくつかの回路素子を含むように定義される)。すなわち、そのネット・リスト上のネットは、ICレイアウト内のいくつかのまたはすべての回路素子間の相互接続を指定する。下記のいくつかの実施形態の場合には、ネットに関連する回路素子は、ICレイアウト内の回路モジュールのピンである。しかし、他の実施形態は、回路モジュールを、ネットの回路素子として処理する。これらの実施形態の中のあるものは、回路モジュールをネット回路素子として処理し、各モジュールのピンが、すべて(例えば、モジュールの原点に位置するというように)、均等な位置にすべて位置するものと仮定することにより、異なるピン位置を区別する必要がなくなる。
いくつかの実施形態の場合には、プロセス1200がスタートする前のネット回路素子の位置が、最初の配置構成を定義する。これらの実施形態の中のあるものの場合、最初の回路素子の位置はランダムである。他のいくつかの実施形態の場合には、フロア・プラニングのような前の物理的設計作業が、これらの素子の最初の位置の一部または全部を指定する。他のいくつかの実施形態は、回路素子の最初の位置を指定するためにもう1つの配置装置を使用し、次に、対角線配線を使用する配線アーキテクチャに対する配置構成を最適化するために、プロセス1200を使用する。
プロセス1200は、最初に、(ステップ1205において)ワイヤ長さコストの推定値(WL_Cost)をゼロに設定し、受信したネット・リストから第1のネットを選択する。次に、プロセスは、(ステップ1210において)ピンの組Pが、選択したネットのピンの組に等しいと定義する。次に、プロセスは、(ステップ1215において)選択したネットの最小スパニング・ツリーのコスト(MST_Cost)をゼロに設定する。
次に、プロセスは、(ステップ1220において)(1)検索したピンの組からスパニング・ツリーの第1のノードとして1つのピンを選択し、(2)この組からこのピンを除去する。次に、プロセスは、(ステップ1225において)ピンの残りの組Rは、ピンの現在の組Pに等しいと定義する。ステップ1230において、プロセスは、残りのピンの組Rから1つのピンを選択し、このピンの組から選択したピンを除去する。
次に、プロセスは、(ステップ1235において)ステップ1230において選択したピンとスパニング・ツリーの現在の各ノードとの間の距離を計算し、記憶する。選択したピンと各ノードとの間の距離は、その全体または一部が対角線である縁部を通って移動することができる。それ故、プロセスは、(ステップ1235において)式(A)により、選択したピンと各ノードとの間の最短距離を計算する。
次に、プロセスは、(ステップ1240において)組R内にピンが残っているかどうかを判断する。残っている場合には、プロセスは、ステップ1230に戻り、この組から他のピンを選択する。それ故、プロセスは、ステップ1235において、このピンとスパニング・ツリーの現在のノードとの間の距離を計算することができる。残っていない場合には、プロセスは、(ステップ1245において)ステップ1235において記録した最短距離を識別し、この距離になるピンとノードの組合わせを識別する。次に、プロセスは、(ステップ1250において)識別した最短距離を最小スパニング・ツリーのコスト(MST_Cost)に加算する。また、プロセスは、(ステップ1255において)ステップ1245において識別したピンに対応するツリー・ノードを定義し、(2)ピンの組Pから識別したピンを除去し、(3)定義したツリー・ノードを、ステップ1245において識別したノードにリンクする。
次に、プロセスは、(ステップ1260において)ピンの組Pが空であるかどうかを判断する。空でない場合には、プロセスは、ステップ1225に戻り、ツリーの現在のノードに最も近い次のピンを識別する。空である場合には、プロセスは、(ステップ1265において)現在のネットの最小スパニング・ツリーのコスト(MST_Cost)をワイヤ長さコスト(WL_Cost)に加算し、(2)現在のネットの最小スパニング・ツリーのコスト(MST_Cost)を記憶する。次に、プロセスは、(ステップ1270において)受信したすべてのネットの最小スパニング・ツリーを形成したかどうかを判断する。形成しなかった場合には、プロセスは、(ステップ1275において)他のネットを選択し、ステップ1210に戻り、このネットに対する最小スパニング・ツリーを形成する。
そうでない場合で、プロセスが、すべてのネットのMSTを形成したと判断した場合には、プロセスは、ワイヤ長さコスト変数(WL_Cost)の値を現在の配置構成の推定ワイヤ長さコストとして返送する。その後で、プロセスは終了する。
本発明のいくつかの実施形態の場合には、プロセス1200は、最初の配置構成を指定するネット・リスト(すなわち、レイアウト内のモジュールの位置を修正する前の、ICレイアウト内のすべてのネットを識別するネット・リスト)を受信した場合に、最初の配置構成に対するワイヤ長さコストの推定値(WL_Cost)を生成する。
最初の配置構成のワイヤ長さコストを入手した後で、いくつかの実施形態は、配置構成コストを改善するために、配置構成を反復して修正する最適化プロセスを使用する。いくつかの実施形態の場合には、最適化プロセスは、配置構成に対する可能な各反復修正に対する配置構成コストを計算するためにプロセス1200を使用する。これについては第VII節のところでさらに詳細に説明する。この節においては、いくつかの適当な最適化技術についても説明する。
次に、プロセスは、(ステップ1235において)ステップ1230において選択したピンとスパニング・ツリーの現在の各ノードとの間の距離を計算し、記憶する。選択したピンと各ノードとの間の距離は、その全体または一部が対角線である縁部を通って移動することができる。それ故、プロセスは、(ステップ1235において)式(A)により、選択したピンと各ノードとの間の最短距離を計算する。
次に、プロセスは、(ステップ1240において)組R内にピンが残っているかどうかを判断する。残っている場合には、プロセスは、ステップ1230に戻り、この組から他のピンを選択する。それ故、プロセスは、ステップ1235において、このピンとスパニング・ツリーの現在のノードとの間の距離を計算することができる。残っていない場合には、プロセスは、(ステップ1245において)ステップ1235において記録した最短距離を識別し、この距離になるピンとノードの組合わせを識別する。次に、プロセスは、(ステップ1250において)識別した最短距離を最小スパニング・ツリーのコスト(MST_Cost)に加算する。また、プロセスは、(ステップ1255において)ステップ1245において識別したピンに対応するツリー・ノードを定義し、(2)ピンの組Pから識別したピンを除去し、(3)定義したツリー・ノードを、ステップ1245において識別したノードにリンクする。
次に、プロセスは、(ステップ1260において)ピンの組Pが空であるかどうかを判断する。空でない場合には、プロセスは、ステップ1225に戻り、ツリーの現在のノードに最も近い次のピンを識別する。空である場合には、プロセスは、(ステップ1265において)現在のネットの最小スパニング・ツリーのコスト(MST_Cost)をワイヤ長さコスト(WL_Cost)に加算し、(2)現在のネットの最小スパニング・ツリーのコスト(MST_Cost)を記憶する。次に、プロセスは、(ステップ1270において)受信したすべてのネットの最小スパニング・ツリーを形成したかどうかを判断する。形成しなかった場合には、プロセスは、(ステップ1275において)他のネットを選択し、ステップ1210に戻り、このネットに対する最小スパニング・ツリーを形成する。
そうでない場合で、プロセスが、すべてのネットのMSTを形成したと判断した場合には、プロセスは、ワイヤ長さコスト変数(WL_Cost)の値を現在の配置構成の推定ワイヤ長さコストとして返送する。その後で、プロセスは終了する。
本発明のいくつかの実施形態の場合には、プロセス1200は、最初の配置構成を指定するネット・リスト(すなわち、レイアウト内のモジュールの位置を修正する前の、ICレイアウト内のすべてのネットを識別するネット・リスト)を受信した場合に、最初の配置構成に対するワイヤ長さコストの推定値(WL_Cost)を生成する。
最初の配置構成のワイヤ長さコストを入手した後で、いくつかの実施形態は、配置構成コストを改善するために、配置構成を反復して修正する最適化プロセスを使用する。いくつかの実施形態の場合には、最適化プロセスは、配置構成に対する可能な各反復修正に対する配置構成コストを計算するためにプロセス1200を使用する。これについては第VII節のところでさらに詳細に説明する。この節においては、いくつかの適当な最適化技術についても説明する。
B.対角線縁部を含むシュタイナー・ツリー
いくつかの実施形態は、(1)各ネットに対して、対角線縁部を持つことができるシュタイナー・ツリーを形成することにより、(2)各シュタイナー・ツリーの長さを計算することにより、(3)計算した長さを合計することにより、配置構成に対するワイヤ長さコストの推定値を生成する。シュタイナー・ツリーの分岐がネットの素子の位置だけに制限されているという点を除けば、シュタイナー・ツリーは、最小スパニング・ツリーに類似している。いくつかの実施形態の場合には、シュタイナー・ツリーは、他の縁部の中央の複数の点から分岐する(すなわち、スタートまたは終了する)縁部を持つことができる。
本発明のいくつかの実施形態の場合には、シュタイナー・ツリーの縁部は、水平方向を向いていても、垂直方向を向いていても、対角線方向を向いていてもよい。対角線縁部は、その全体または一部が対角線であってもよい。また、ICレイアウトが、(例えば、±120度の相互接続ラインのような)対角線相互接続ラインを使用している場合には、対角線縁部は、レイアウト内の対角線相互接続ラインの中のあるものと、(例えば、±120度方向のような)同じ方向を向いていてもよい。
N個のネットに対するシュタイナー・ツリーを形成するために、シュタイナー点と呼ぶ追加の点をネットに追加することができる。多くの場合、シュタイナー点を選択するために発見的技術が使用される。図13は、八角配線モデルを使用する(すなわち、水平相互接続ライン、垂直相互接続ライン、および45度相互接続ラインを使用する)ICレイアウトに対して、本発明のいくつかの実施形態内で使用する発見的技術を示す。この図は、図1のピン135、145および160を含むネットに対するシュタイナー・ツリー1305である。この実施形態の場合には、シュタイナー・ツリー1305は、ピン135、145および160に対応する3つのもとのノード1335、1345および1360を含む。
また、この実施形態の場合には、シュタイナー・ツリーのもとの各ノードを通して4本のラインを引くことにより一組の潜在的シュタイナー点が識別される。これら4本のラインの中、1本のライン1310は水平なラインであり、1本のライン1315は垂直なラインであり、1本のライン1320は+45度のラインとあり、1本のライン1325は−45度のラインである。図13に示すように、もとの各ノードを通るラインの交点は、一組の潜在的シュタイナー点1330を形成する。その後で、ツリーの長さを最も短くするために、これらの潜在的な点の中のいくつかを、シュタイナー・ツリー内にノードとして追加することができる。図13の場合には、シュタイナー点1340は、ツリー内にノードとしてすでに追加されている。
いくつかの実施形態は、(1)各ネットに対して、対角線縁部を持つことができるシュタイナー・ツリーを形成することにより、(2)各シュタイナー・ツリーの長さを計算することにより、(3)計算した長さを合計することにより、配置構成に対するワイヤ長さコストの推定値を生成する。シュタイナー・ツリーの分岐がネットの素子の位置だけに制限されているという点を除けば、シュタイナー・ツリーは、最小スパニング・ツリーに類似している。いくつかの実施形態の場合には、シュタイナー・ツリーは、他の縁部の中央の複数の点から分岐する(すなわち、スタートまたは終了する)縁部を持つことができる。
本発明のいくつかの実施形態の場合には、シュタイナー・ツリーの縁部は、水平方向を向いていても、垂直方向を向いていても、対角線方向を向いていてもよい。対角線縁部は、その全体または一部が対角線であってもよい。また、ICレイアウトが、(例えば、±120度の相互接続ラインのような)対角線相互接続ラインを使用している場合には、対角線縁部は、レイアウト内の対角線相互接続ラインの中のあるものと、(例えば、±120度方向のような)同じ方向を向いていてもよい。
N個のネットに対するシュタイナー・ツリーを形成するために、シュタイナー点と呼ぶ追加の点をネットに追加することができる。多くの場合、シュタイナー点を選択するために発見的技術が使用される。図13は、八角配線モデルを使用する(すなわち、水平相互接続ライン、垂直相互接続ライン、および45度相互接続ラインを使用する)ICレイアウトに対して、本発明のいくつかの実施形態内で使用する発見的技術を示す。この図は、図1のピン135、145および160を含むネットに対するシュタイナー・ツリー1305である。この実施形態の場合には、シュタイナー・ツリー1305は、ピン135、145および160に対応する3つのもとのノード1335、1345および1360を含む。
また、この実施形態の場合には、シュタイナー・ツリーのもとの各ノードを通して4本のラインを引くことにより一組の潜在的シュタイナー点が識別される。これら4本のラインの中、1本のライン1310は水平なラインであり、1本のライン1315は垂直なラインであり、1本のライン1320は+45度のラインとあり、1本のライン1325は−45度のラインである。図13に示すように、もとの各ノードを通るラインの交点は、一組の潜在的シュタイナー点1330を形成する。その後で、ツリーの長さを最も短くするために、これらの潜在的な点の中のいくつかを、シュタイナー・ツリー内にノードとして追加することができる。図13の場合には、シュタイナー点1340は、ツリー内にノードとしてすでに追加されている。
図14は、いくつかのネットの相互接続トポロジーをモデル化する、シュタイナー・ツリーの長さを計算するコスト計算プロセス1400である。配置装置は、ネット・リスト上の一組のネットに対する、ワイヤ長さコストの推定値を生成するために、このプロセスを使用することができる。いくつかの実施形態の場合には、プロセス1400は、多数のネットを指定するネット・リストを受信する度にスタートする。
受信した各ネットは、それに関連するいくつかの回路素子を含む(すなわち、各ネットは、いくつかの回路素子を含むように定義される)。すなわち、そのネット・リスト上のネットは、ICレイアウト内のいくつかのまたはすべての回路素子間の相互接続を指定する。下記のいくつかの実施形態の場合には、ネットに関連する回路素子は、ICレイアウト内の回路モジュールのピンである。しかし、他の実施形態は、回路モジュールをネットの回路素子として処理する。これらの実施形態の中のあるものは、回路モジュールをネット回路素子として処理し、各モジュールのピンが、すべて(例えば、モジュールの原点に位置するというように)、均等な位置にすべて位置するものと仮定することにより、異なるピン位置を区別する必要がなくなる。
いくつかの実施形態の場合には、プロセス1400がスタートする前のネット回路素子の位置が、最初の配置構成を定義する。これらの実施形態の中のあるものの場合、最初の回路素子の位置はランダムである。他のいくつかの実施形態の場合には、フロア・プラニングのような前の物理的設計作業が、これらの素子の最初の位置の一部または全部を指定する。他のいくつかの実施形態は、回路素子の最初の位置を指定するためにもう1つの配置装置を使用し、次に、対角線配線を使用する配線アーキテクチャに対する配置構成を最適化するために、プロセス1400を使用する。
プロセス1400は、ワン・シュタイナー・プロセスを修正したものである。従来のワン・シュタイナー・プロセスのように、このプロセス1400は、もとのピン・ノードおよび追加のピン・ノードのMSTを最も小さくする、シュタイナー・ノードを追加することにより発見的シュタイナー・ツリーを形成する。しかし、従来のワン・シュタイナー・プロセスとは異なり、この修正プロセスを使用した場合、発見的シュタイナー・ツリーの縁部全体または一部は対角線であってもよい。
このプロセスは、最初に、(ステップ1405において)ワイヤ長さコストの推定値(WL_Cost)をゼロに設定し、受信したネット・リストから第1のネットを選択する。次に、プロセスは、(ステップ1410において)ピンの組Pを選択したネットのピンの組に等しいと定義する。次に、プロセスは、(ステップ1415において)選択したネットのワイヤ長さコスト(WL_Cost)をゼロに設定する。ステップ1415の後で、プロセスは、(ステップ1420において)選択したネットの最小スパニング・ツリーを形成し、このツリーのコスト(MST_Cost)を計算する。この最小スパニング・ツリーは、その全体または一部が対角線である縁部を持つことができる。このプロセスは、図12の動作1210〜1260を行うことによりMSTを形成することができる。
選択したネットに対するMSTを形成した後で、プロセスは、(ステップ1425において)候補のシュタイナー点の組Sを識別する。図13のところですでに説明したように、プロセスは、ネット内の各ピンを通る一組の対角線と一組のマンハッタン・ラインを引くことにより、そしてこれらのラインの交点を識別することによりこれらの点を識別することができる。ICレイアウトが、(例えば、±120度の相互接続ラインのような)対角線相互接続ラインを使用する場合には、各ピンを通る対角線は、レイアウト内の対角線相互接続ラインの中のいくつかと(例えば、±120度の方向のような)同じ方向を向いていてもよい。
受信した各ネットは、それに関連するいくつかの回路素子を含む(すなわち、各ネットは、いくつかの回路素子を含むように定義される)。すなわち、そのネット・リスト上のネットは、ICレイアウト内のいくつかのまたはすべての回路素子間の相互接続を指定する。下記のいくつかの実施形態の場合には、ネットに関連する回路素子は、ICレイアウト内の回路モジュールのピンである。しかし、他の実施形態は、回路モジュールをネットの回路素子として処理する。これらの実施形態の中のあるものは、回路モジュールをネット回路素子として処理し、各モジュールのピンが、すべて(例えば、モジュールの原点に位置するというように)、均等な位置にすべて位置するものと仮定することにより、異なるピン位置を区別する必要がなくなる。
いくつかの実施形態の場合には、プロセス1400がスタートする前のネット回路素子の位置が、最初の配置構成を定義する。これらの実施形態の中のあるものの場合、最初の回路素子の位置はランダムである。他のいくつかの実施形態の場合には、フロア・プラニングのような前の物理的設計作業が、これらの素子の最初の位置の一部または全部を指定する。他のいくつかの実施形態は、回路素子の最初の位置を指定するためにもう1つの配置装置を使用し、次に、対角線配線を使用する配線アーキテクチャに対する配置構成を最適化するために、プロセス1400を使用する。
プロセス1400は、ワン・シュタイナー・プロセスを修正したものである。従来のワン・シュタイナー・プロセスのように、このプロセス1400は、もとのピン・ノードおよび追加のピン・ノードのMSTを最も小さくする、シュタイナー・ノードを追加することにより発見的シュタイナー・ツリーを形成する。しかし、従来のワン・シュタイナー・プロセスとは異なり、この修正プロセスを使用した場合、発見的シュタイナー・ツリーの縁部全体または一部は対角線であってもよい。
このプロセスは、最初に、(ステップ1405において)ワイヤ長さコストの推定値(WL_Cost)をゼロに設定し、受信したネット・リストから第1のネットを選択する。次に、プロセスは、(ステップ1410において)ピンの組Pを選択したネットのピンの組に等しいと定義する。次に、プロセスは、(ステップ1415において)選択したネットのワイヤ長さコスト(WL_Cost)をゼロに設定する。ステップ1415の後で、プロセスは、(ステップ1420において)選択したネットの最小スパニング・ツリーを形成し、このツリーのコスト(MST_Cost)を計算する。この最小スパニング・ツリーは、その全体または一部が対角線である縁部を持つことができる。このプロセスは、図12の動作1210〜1260を行うことによりMSTを形成することができる。
選択したネットに対するMSTを形成した後で、プロセスは、(ステップ1425において)候補のシュタイナー点の組Sを識別する。図13のところですでに説明したように、プロセスは、ネット内の各ピンを通る一組の対角線と一組のマンハッタン・ラインを引くことにより、そしてこれらのラインの交点を識別することによりこれらの点を識別することができる。ICレイアウトが、(例えば、±120度の相互接続ラインのような)対角線相互接続ラインを使用する場合には、各ピンを通る対角線は、レイアウト内の対角線相互接続ラインの中のいくつかと(例えば、±120度の方向のような)同じ方向を向いていてもよい。
次に、プロセスは、(ステップ1430において)ノードの残りの組Rが、潜在的シュタイナー点の現在の組Sに等しいと定義する。ステップ1435において、プロセスは、残りのノードの組Rから1つのノードを選択し、この組から選択したノードを除去する。次に、プロセスは、(ステップ1440において)(1)ステップ1435において選択したノードと選択したネットに対する現在のMSTのノードに対する最小スパニング・ツリー(MST’)を形成し、(2)この最小スパニング・ツリー(MST’)のコスト(MST_Cost’)を計算し、記憶する。プロセスは、その全体または一部が対角線である縁部により、この最小スパニング・ツリー(MST’)を形成する。また、プロセスは、図12の動作1210〜1260を行うことにより、このツリーのMST’を形成することができる。
次に、プロセスは、(ステップ1445において)組R内にノードが残っているかどうかを判断する。残っている場合には、プロセスは、ステップ1435に戻り、この組から他のピンを選択する。それ故、プロセスは、このもう1つのノードおよび現在のMSTのノードに対する、最小スパニング・ツリーを形成することができる。
残っていない場合には、プロセスは、(ステップ1450において)ステップ1440において計算した最も小さい最小スパニング・ツリーのコスト(MST_Cost’)を識別する。次に、プロセスは、(ステップ1455において)識別した最も小さい最小スパニング・ツリーのコスト(MST_Cost’)が、ステップ1420において形成した現在の最小スパニング・ツリー(MST)のコスト(MST_Cost)より小さいかどうかを判断する。小さくない場合には、プロセスはステップ1480に進むが、これについては以下に説明する。小さい場合には、潜在的なシュタイナー・ノードの組Sから、プロセスは、(ステップ1460において)ステップ1450において識別した最も小さい最小スパニング・ツリーのコスト(MST_Cost’)になるシュタイナー・ノードを除去する。次に、プロセスは、(ステップ1465において)識別した最も小さい最小スパニング・ツリーのコスト(MST_Cost’)となる最小スパニング・ツリー(MST’)を、現在の最小スパニング・ツリー(MST)として識別する。また、プロセスは、(ステップ1470において)最小スパニング・ツリーのコスト(MST_Cost)を、識別した最も小さい最小スパニング・ツリーのコスト(MST_Cost’)に等しくなるように設定する。
次に、プロセスは、(ステップ1475において)候補のシュタイナー点の組Sが空であるかどうかを判断する。空でない場合には、プロセスは、ステップ1430に戻り、現在の最小スパニング・ツリー(MST)の長さをさらに短くすることができる、他の潜在的なシュタイナー点を発見できるかどうか調べる。
プロセス1400が、(ステップ1475において)すべての候補のシュタイナー点をチェックし、組Sが空であると判断した場合には、プロセスは、(ステップ1480において)(1)シュタイナー・ツリーを現在のMSTとして定義し、(2)このMSTのコスト(MST_Cost)を推定したワイヤ長さコスト(WL_Cost)に加算し、(2)このMSTのコスト(MST_Cost)を現在のネットのコストとして記憶する。ステップ1480の後で、プロセスは、(ステップ1485において)受信したネット・リスト内のすべてのネットに対して、シュタイナー・ツリーを形成したかどうかを判断する。形成していなかった場合には、プロセスは、(ステップ1490において)他のネットを選択し、ステップ1410に戻り、このネットに対するシュタイナー・ツリーを形成する。形成していた場合には、プロセスは、(ステップ1495において)現在の配置構成のワイヤ長さコスト(WL_Cost)を返送し、その後で終了する。
本発明のいくつかの実施形態の場合には、プロセス1400は、最初の配置構成を識別するネット・リスト(すなわち、レイアウト内のモジュールの位置を修正する前の、ICレイアウト内のすべてのネットを識別するネット・リスト)を受信した場合に、最初の配置構成に対するワイヤ長さコストの推定値(WL_Cost)を生成する。
最初の配置構成のワイヤ長さコストを入手した後で、いくつかの実施形態は、配置構成コストを改善するために、配置構成を反復して修正する最適化プロセスを使用する。いくつかの実施形態の場合には、最適化プロセスは、配置構成に対する可能な各反復修正に対する配置構成コストを計算するためにプロセス1400を使用する。これについては第VII節のところでさらに詳細に説明する。この節においては、いくつかの適当な最適化技術についても説明する。
次に、プロセスは、(ステップ1445において)組R内にノードが残っているかどうかを判断する。残っている場合には、プロセスは、ステップ1435に戻り、この組から他のピンを選択する。それ故、プロセスは、このもう1つのノードおよび現在のMSTのノードに対する、最小スパニング・ツリーを形成することができる。
残っていない場合には、プロセスは、(ステップ1450において)ステップ1440において計算した最も小さい最小スパニング・ツリーのコスト(MST_Cost’)を識別する。次に、プロセスは、(ステップ1455において)識別した最も小さい最小スパニング・ツリーのコスト(MST_Cost’)が、ステップ1420において形成した現在の最小スパニング・ツリー(MST)のコスト(MST_Cost)より小さいかどうかを判断する。小さくない場合には、プロセスはステップ1480に進むが、これについては以下に説明する。小さい場合には、潜在的なシュタイナー・ノードの組Sから、プロセスは、(ステップ1460において)ステップ1450において識別した最も小さい最小スパニング・ツリーのコスト(MST_Cost’)になるシュタイナー・ノードを除去する。次に、プロセスは、(ステップ1465において)識別した最も小さい最小スパニング・ツリーのコスト(MST_Cost’)となる最小スパニング・ツリー(MST’)を、現在の最小スパニング・ツリー(MST)として識別する。また、プロセスは、(ステップ1470において)最小スパニング・ツリーのコスト(MST_Cost)を、識別した最も小さい最小スパニング・ツリーのコスト(MST_Cost’)に等しくなるように設定する。
次に、プロセスは、(ステップ1475において)候補のシュタイナー点の組Sが空であるかどうかを判断する。空でない場合には、プロセスは、ステップ1430に戻り、現在の最小スパニング・ツリー(MST)の長さをさらに短くすることができる、他の潜在的なシュタイナー点を発見できるかどうか調べる。
プロセス1400が、(ステップ1475において)すべての候補のシュタイナー点をチェックし、組Sが空であると判断した場合には、プロセスは、(ステップ1480において)(1)シュタイナー・ツリーを現在のMSTとして定義し、(2)このMSTのコスト(MST_Cost)を推定したワイヤ長さコスト(WL_Cost)に加算し、(2)このMSTのコスト(MST_Cost)を現在のネットのコストとして記憶する。ステップ1480の後で、プロセスは、(ステップ1485において)受信したネット・リスト内のすべてのネットに対して、シュタイナー・ツリーを形成したかどうかを判断する。形成していなかった場合には、プロセスは、(ステップ1490において)他のネットを選択し、ステップ1410に戻り、このネットに対するシュタイナー・ツリーを形成する。形成していた場合には、プロセスは、(ステップ1495において)現在の配置構成のワイヤ長さコスト(WL_Cost)を返送し、その後で終了する。
本発明のいくつかの実施形態の場合には、プロセス1400は、最初の配置構成を識別するネット・リスト(すなわち、レイアウト内のモジュールの位置を修正する前の、ICレイアウト内のすべてのネットを識別するネット・リスト)を受信した場合に、最初の配置構成に対するワイヤ長さコストの推定値(WL_Cost)を生成する。
最初の配置構成のワイヤ長さコストを入手した後で、いくつかの実施形態は、配置構成コストを改善するために、配置構成を反復して修正する最適化プロセスを使用する。いくつかの実施形態の場合には、最適化プロセスは、配置構成に対する可能な各反復修正に対する配置構成コストを計算するためにプロセス1400を使用する。これについては第VII節のところでさらに詳細に説明する。この節においては、いくつかの適当な最適化技術についても説明する。
IV.対角線を含む最小カット二分割法
本発明のいくつかの実施形態は、対角線分割ラインを使用する最小カット二分割法を使用する。図15〜図17を参照しながら以下にさらに詳細に説明するように、いくつかの実施形態は、対角線分割ラインを使用するが、一方、他の実施形態は、対角線分割ライン、水平分割ラインおよび垂直分割ラインを使用する。
分割ラインは、ICレイアウトを反復して連続的なペアの領域に分割するために使用される。反復の各レベルで分割ラインを定義した後で、本発明の最小カット二分割法は、特定のレベルの分割ラインと交差するネットの数を計算する。この数は、この分割ラインの周囲のワイヤの集中を示す。次に、各反復レベルにおいて、そのレベルの分割ラインと交差するネットの数を少なくするために、そのレベルにおける領域間で回路モジュールを移動するために最適化技術が使用される。反復の各レベルにおけるネット・カット・コストを最も少なくすることにより、そのレベルの分割ラインを横切るワイヤの集中が少なくする。
本発明の最小カット二分割技術は、マンハッタン配線モデルだけを使用するICレイアウト(すなわち、好適な水平方向および垂直方向の配線だけを持つICレイアウト)と一緒に使用することができる。他の場合には、本発明の最小カット二分割技術は、対角線相互接続ラインを持つICレイアウトと一緒に使用される。これら実施形態の中のあるものの場合、対角線分割ラインは、対角線相互接続ラインのいくつかのまたは全部と同じ方向を向いている。例えば、八角配線モデルを使用する(すなわち、水平ライン、垂直ラインとおよび、45度の対角線ラインを使用する)ICレイアウトの場合には、いくつかの実施形態は、45度の対角線分割ラインを使用する。
図15は、対角線分割ラインだけで多数の領域に反復して分割されたICレイアウト1500である。このような厳密な対角線分割アプローチは、通常、ICレイアウトが、対角線相互接続ラインを使用する場合に使用される。しかし、このようなアプローチは、ICレイアウトが、対角線相互接続ラインおよびマンハッタン相互接続ラインを使用する場合に使用される。
図16および図17は、対角線分割ライン、水平分割ラインおよび垂直分割ラインの組合わせにより、反復して分割された2つのICレイアウトである。図16の場合には、対角線分割ラインが、反復のすべてのレベルで使用される。一方、図17の場合には、対角線分割ラインは、高い反復レベルでだけ使用され、低い反復レベルではマンハッタン分割ラインが使用される。
すなわち、図17の分割スキームは、反復プロセスの下のあるレベルに達した場合、対角線分割ラインの使用を止める。このような分割スキーム(すなわち、低い反復レベルで対角線分割ラインの使用を止めるスキーム)は、その頂部金属層としてその対角線層を持つICレイアウトと一緒に使用した場合有用である。このような分割スキームは、このようなレイアウトに対して有用である。何故なら、第1の組の分割ラインが、もっと長いワイヤの集中を低減し、もっと長いワイヤは、対角線ワイヤである場合が多いからである。頂部金属層として対角線層を持つ八角配線モデルの場合には、対角線ワイヤは長くなりがちである。何故なら、そうしないと、不経済になり、もっと高い層上でルーティングを行うために必要な、ヴァイアに関連する遅延コストが生じるからである。
本発明のいくつかの実施形態は、対角線分割ラインを使用する最小カット二分割法を使用する。図15〜図17を参照しながら以下にさらに詳細に説明するように、いくつかの実施形態は、対角線分割ラインを使用するが、一方、他の実施形態は、対角線分割ライン、水平分割ラインおよび垂直分割ラインを使用する。
分割ラインは、ICレイアウトを反復して連続的なペアの領域に分割するために使用される。反復の各レベルで分割ラインを定義した後で、本発明の最小カット二分割法は、特定のレベルの分割ラインと交差するネットの数を計算する。この数は、この分割ラインの周囲のワイヤの集中を示す。次に、各反復レベルにおいて、そのレベルの分割ラインと交差するネットの数を少なくするために、そのレベルにおける領域間で回路モジュールを移動するために最適化技術が使用される。反復の各レベルにおけるネット・カット・コストを最も少なくすることにより、そのレベルの分割ラインを横切るワイヤの集中が少なくする。
本発明の最小カット二分割技術は、マンハッタン配線モデルだけを使用するICレイアウト(すなわち、好適な水平方向および垂直方向の配線だけを持つICレイアウト)と一緒に使用することができる。他の場合には、本発明の最小カット二分割技術は、対角線相互接続ラインを持つICレイアウトと一緒に使用される。これら実施形態の中のあるものの場合、対角線分割ラインは、対角線相互接続ラインのいくつかのまたは全部と同じ方向を向いている。例えば、八角配線モデルを使用する(すなわち、水平ライン、垂直ラインとおよび、45度の対角線ラインを使用する)ICレイアウトの場合には、いくつかの実施形態は、45度の対角線分割ラインを使用する。
図15は、対角線分割ラインだけで多数の領域に反復して分割されたICレイアウト1500である。このような厳密な対角線分割アプローチは、通常、ICレイアウトが、対角線相互接続ラインを使用する場合に使用される。しかし、このようなアプローチは、ICレイアウトが、対角線相互接続ラインおよびマンハッタン相互接続ラインを使用する場合に使用される。
図16および図17は、対角線分割ライン、水平分割ラインおよび垂直分割ラインの組合わせにより、反復して分割された2つのICレイアウトである。図16の場合には、対角線分割ラインが、反復のすべてのレベルで使用される。一方、図17の場合には、対角線分割ラインは、高い反復レベルでだけ使用され、低い反復レベルではマンハッタン分割ラインが使用される。
すなわち、図17の分割スキームは、反復プロセスの下のあるレベルに達した場合、対角線分割ラインの使用を止める。このような分割スキーム(すなわち、低い反復レベルで対角線分割ラインの使用を止めるスキーム)は、その頂部金属層としてその対角線層を持つICレイアウトと一緒に使用した場合有用である。このような分割スキームは、このようなレイアウトに対して有用である。何故なら、第1の組の分割ラインが、もっと長いワイヤの集中を低減し、もっと長いワイヤは、対角線ワイヤである場合が多いからである。頂部金属層として対角線層を持つ八角配線モデルの場合には、対角線ワイヤは長くなりがちである。何故なら、そうしないと、不経済になり、もっと高い層上でルーティングを行うために必要な、ヴァイアに関連する遅延コストが生じるからである。
図18および図19は、配置装置が、対角線分割ラインにより最小カット二分割法を行うために、使用することができる2つのプロセス1800および1900である。配置装置は、ICレイアウトを横切る集中を最小限度に低減するために、これらプロセス1800および1900を反復して使用することができる。より詳細に説明すると、配置装置は、ICレイアウトをもっと小さい領域に、反復して分割することができる一連の分割ラインを形成するために、図18のプロセス1800を反復して実行することができる。反復の特定のレベルで分割ラインを定義した後で、配置装置は、集中コストの推定値を入手し、そのレベルの分割ラインを横切ってネットを分割するために、図19のプロセス1900を使用することができる。
プロセス1800は、ICレイアウトの領域の座標を受信する度にスタートする。図18に示すように、このプロセスは、最初に、(ステップ1805において)受信した領域を2つのサブ領域に分割する水平分割ライン、垂直分割ラインまたは対角線分割ラインを定義する。分割ラインを定義した後で、プロセス1800は、(ステップ1810において)分割ラインにより生成した2つの領域を定義する。いくつかの実施形態は、領域を定義するために下記の慣例を使用する。(1)分割ラインが水平分割ラインまたは対角線分割ラインである場合には、第1の領域は分割ラインの上に位置し、一方、第2の領域は、分割ラインの下に位置する。(2)分割ラインが垂直分割ラインである場合には、第1の領域は分割ラインの右に位置し、第2の領域は、分割ラインの左に位置する。
最後に、プロセス1800は、ステップ1805において定義した分割ラインにより生成した、2つの領域に対する2つのネット・リストを初期化する。以下にさらに詳細に説明するように、最初、プロセス1900を、受信した領域内のすべてのネットに対して実行した場合、プロセス1900は、受信した領域内のネットおよびこれらネットのピンを、これら2つのネット・リストに追加する。また、以下にさらに詳細に説明するように、配置装置およびプロセス1900は、最適化プロセス中に、これら2つのネット・リストからネットおよびピンを除去したり、これらネット・リストに追加することができる。
図19は、配置装置が、一組のネットを分割したり、対角線分割ラインであってもよい分割ラインの周囲の、これらのネットの集中コストを計算するために使用することができるプロセス1900である。プロセス1900は、(1)ネット・リストおよび(2)ネットを分割するための分割ラインを受信する度にスタートする。
受信したネット・リスト上の各ネットは、それに関連するいくつかの回路素子を含む(すなわち、各ネットは、いくつかの回路素子を含むように定義される)。すなわち、そのネット・リスト上のネットは、ICレイアウト内のいくつかの、またはすべての回路素子間の相互接続を指定する。下記のいくつかの実施形態の場合には、ネットに関連する回路素子は、ICレイアウト内の回路モジュールのピンである。しかし、他の実施形態は、回路モジュールをネットの回路素子として処理する。これらの実施形態の中のあるものは、回路モジュールをネット回路素子として処理し、各モジュールのピンが、すべて(例えば、モジュールの原点に位置するというように)、均等な位置にすべて位置するものと仮定することにより、異なるピン位置を区別する必要がなくなる。
プロセス1800は、ICレイアウトの領域の座標を受信する度にスタートする。図18に示すように、このプロセスは、最初に、(ステップ1805において)受信した領域を2つのサブ領域に分割する水平分割ライン、垂直分割ラインまたは対角線分割ラインを定義する。分割ラインを定義した後で、プロセス1800は、(ステップ1810において)分割ラインにより生成した2つの領域を定義する。いくつかの実施形態は、領域を定義するために下記の慣例を使用する。(1)分割ラインが水平分割ラインまたは対角線分割ラインである場合には、第1の領域は分割ラインの上に位置し、一方、第2の領域は、分割ラインの下に位置する。(2)分割ラインが垂直分割ラインである場合には、第1の領域は分割ラインの右に位置し、第2の領域は、分割ラインの左に位置する。
最後に、プロセス1800は、ステップ1805において定義した分割ラインにより生成した、2つの領域に対する2つのネット・リストを初期化する。以下にさらに詳細に説明するように、最初、プロセス1900を、受信した領域内のすべてのネットに対して実行した場合、プロセス1900は、受信した領域内のネットおよびこれらネットのピンを、これら2つのネット・リストに追加する。また、以下にさらに詳細に説明するように、配置装置およびプロセス1900は、最適化プロセス中に、これら2つのネット・リストからネットおよびピンを除去したり、これらネット・リストに追加することができる。
図19は、配置装置が、一組のネットを分割したり、対角線分割ラインであってもよい分割ラインの周囲の、これらのネットの集中コストを計算するために使用することができるプロセス1900である。プロセス1900は、(1)ネット・リストおよび(2)ネットを分割するための分割ラインを受信する度にスタートする。
受信したネット・リスト上の各ネットは、それに関連するいくつかの回路素子を含む(すなわち、各ネットは、いくつかの回路素子を含むように定義される)。すなわち、そのネット・リスト上のネットは、ICレイアウト内のいくつかの、またはすべての回路素子間の相互接続を指定する。下記のいくつかの実施形態の場合には、ネットに関連する回路素子は、ICレイアウト内の回路モジュールのピンである。しかし、他の実施形態は、回路モジュールをネットの回路素子として処理する。これらの実施形態の中のあるものは、回路モジュールをネット回路素子として処理し、各モジュールのピンが、すべて(例えば、モジュールの原点に位置するというように)、均等な位置にすべて位置するものと仮定することにより、異なるピン位置を区別する必要がなくなる。
いくつかの実施形態の場合には、プロセス1900が第1の分割ラインに対して実行される前の、ネット回路素子の位置により最初の配置構成が定義される。これらの実施形態の中のあるものの場合、最初の配置構成はランダムである。他のいくつかの実施形態の場合には、フロア・プラニングのような前の物理的設計作業が、最初の配置構成の一部または全部を指定する。他のいくつかの実施形態は、最初の配置構成を指定するためにもう1つの配置装置を使用し、次に、対角線配線を使用する配線アーキテクチャに対する配置構成を最適化するために、プロセス1800および1900を使用する。
図19に示すように、プロセス1900は、最初に、(ステップ1905において)集中コスト(Cost)をゼロに設定する。次に、プロセスは、(ステップ1910において)受信したネット・リストから1つのネットを選択する。次に、プロセスは、(ステップ1915において)ネット分割変数(C)をゼロに設定する。次に、プロセスは、(ステップ1920において)選択したネットの第1のピンを選択する。このピンを選択した後で、プロセスは、(ステップ1925において)分割ラインで形成した2つの領域の中のどれがこのピンを含んでいるのかを判断する。プロセス1900は、図20、21および22に示す3つのプロセスの中の1つにより、このピンに対する領域を識別する。
プロセス1900は、分割ラインが水平分割ラインである場合には、図20のプロセス2000を呼び出す。図20に示すように、プロセス2000は、(ステップ2005において)ピンのy座標が、水平分割ラインのy座標より大きいかどうかを判断する。大きい場合には、プロセスは、(ステップ2010において)ピンが、分割ラインにより定義された第1の領域内に位置すると指定する。小さい場合には、プロセスは、(ステップ2015において)ピンが、分割ラインにより定義された第2の領域内に位置すると指定する。
プロセス1900は、分割ラインが垂直分割ラインである場合には、図21のプロセス2100を使用する。図21に示すように、プロセス2100は、(ステップ2105において)ピンのx座標が、垂直分割ラインのx座標より大きいかどうかを判断する。大きい場合には、プロセスは、(ステップ2110において)ピンが、分割ラインにより定義された第1の領域内に位置すると指定する。小さい場合には、プロセスは、(ステップ2115において)ピンが、分割ラインにより定義された第2の領域内に位置すると指定する。
プロセス1900は、分割ラインが対角線分割ラインである場合には、図22のプロセス2200を呼び出す。図22に示すように、プロセス2200は、(ステップ2205において)ピンのx座標を分割ラインを示す一次式(y=mx+b)に挿入する。この式は、その勾配(m)の項内の分割ラインのy座標値、x座標およびy交差(b)を表す。次に、プロセスは、(ステップ2210において)挿入したx位置における対角線の入手したyの値が、ピンのy座標より大きいかどうかを判断する。大きくない場合には、プロセスは、(ステップ2215において)ピンが、分割ラインにより定義された第1の領域内に位置すると指定する。大きい場合には、プロセスは、(ステップ2220において)ピンが、分割ラインにより定義された第2の領域内に位置すると指定する。
ピンに対する領域を識別した後で、プロセスは、(ステップ1930において)選択したネットおよびピンを、識別した領域に対するネット・リストに追加する。その後で、プロセスは、(ステップ1935において)ネット内の次のピンを選択する。ステップ1940において、プロセスは、1925に対して上記の同じプロセスを呼び出すことにより、ステップ1935において選択したピンに対する領域を識別する。
図19に示すように、プロセス1900は、最初に、(ステップ1905において)集中コスト(Cost)をゼロに設定する。次に、プロセスは、(ステップ1910において)受信したネット・リストから1つのネットを選択する。次に、プロセスは、(ステップ1915において)ネット分割変数(C)をゼロに設定する。次に、プロセスは、(ステップ1920において)選択したネットの第1のピンを選択する。このピンを選択した後で、プロセスは、(ステップ1925において)分割ラインで形成した2つの領域の中のどれがこのピンを含んでいるのかを判断する。プロセス1900は、図20、21および22に示す3つのプロセスの中の1つにより、このピンに対する領域を識別する。
プロセス1900は、分割ラインが水平分割ラインである場合には、図20のプロセス2000を呼び出す。図20に示すように、プロセス2000は、(ステップ2005において)ピンのy座標が、水平分割ラインのy座標より大きいかどうかを判断する。大きい場合には、プロセスは、(ステップ2010において)ピンが、分割ラインにより定義された第1の領域内に位置すると指定する。小さい場合には、プロセスは、(ステップ2015において)ピンが、分割ラインにより定義された第2の領域内に位置すると指定する。
プロセス1900は、分割ラインが垂直分割ラインである場合には、図21のプロセス2100を使用する。図21に示すように、プロセス2100は、(ステップ2105において)ピンのx座標が、垂直分割ラインのx座標より大きいかどうかを判断する。大きい場合には、プロセスは、(ステップ2110において)ピンが、分割ラインにより定義された第1の領域内に位置すると指定する。小さい場合には、プロセスは、(ステップ2115において)ピンが、分割ラインにより定義された第2の領域内に位置すると指定する。
プロセス1900は、分割ラインが対角線分割ラインである場合には、図22のプロセス2200を呼び出す。図22に示すように、プロセス2200は、(ステップ2205において)ピンのx座標を分割ラインを示す一次式(y=mx+b)に挿入する。この式は、その勾配(m)の項内の分割ラインのy座標値、x座標およびy交差(b)を表す。次に、プロセスは、(ステップ2210において)挿入したx位置における対角線の入手したyの値が、ピンのy座標より大きいかどうかを判断する。大きくない場合には、プロセスは、(ステップ2215において)ピンが、分割ラインにより定義された第1の領域内に位置すると指定する。大きい場合には、プロセスは、(ステップ2220において)ピンが、分割ラインにより定義された第2の領域内に位置すると指定する。
ピンに対する領域を識別した後で、プロセスは、(ステップ1930において)選択したネットおよびピンを、識別した領域に対するネット・リストに追加する。その後で、プロセスは、(ステップ1935において)ネット内の次のピンを選択する。ステップ1940において、プロセスは、1925に対して上記の同じプロセスを呼び出すことにより、ステップ1935において選択したピンに対する領域を識別する。
次に、プロセスは、(ステップ1945において)現在のピン(すなわち、ステップ1935において選択したピン)が、第1のピンと同じ領域内に位置するかどうかを判断する。位置する場合には、プロセスは、現在のピンを、識別した領域に対するネット・リストに(ステップ1930において)前に追加したネットに追加する。次に、プロセスは、ステップ1970に進むが、このステップについては以下に説明する。
一方、プロセスが、(ステップ1945において)現在のピンは、第1のピンと同じ領域内に位置しないと判断した場合には、プロセスは、交差変数Cがゼロに等しいかどうかを判断する。等しい場合には、プロセスは、1つのネット分割を検出したと判断する。それ故、プロセスは、交差変数Cの値を1に変更し、ネットおよび現在のピンを、現在のピンの識別した領域に対するネット・リストに追加する。しかし、プロセスが、(ステップ1955において)交差変数がゼロではないと判断した場合には、プロセスは、そのネット分割を前に検出したと判断する。それ故、プロセスは、単に、(ステップ1960において)現在のピンを、識別した領域に対するネット・リストに追加する。
ステップ1960〜1965から、プロセスは、ステップ1970に進み、そこで現在のネット内の最後のピンを、チェックしたかどうかを判断する。チェックしていなかった場合には、プロセスは、ステップ1935に進み、ネット内の次のピンをチェックする。チェックしていた場合には、プロセスは、(ステップ1975において)(1)交差コストCを集中コスト(Cost)に追加し、(2)交差コストCを現在のネットのコストとして記憶する。
次に、プロセスは、(ステップ1980において)最後のネットをチェックしたかどうかを判断する。チェックしていなかった場合には、プロセスは、ステップ1910に戻り、(1)他のネットを選択し、(2)このネットを分割ライン付近で分割し、(3)このネットが、分割ラインを横切るかどうかを判断する。チェックしていた場合には、プロセスは、(ステップ1985において)(1)現在の配置構成の集中コスト、(2)受信した分割ライン付近の受信したネット・リストの分割を表す2つのネット・リストを返送する。
すでに説明したように、配置装置は、ICレイアウトをもっと小さい領域に、反復して分割する一連の分割ラインを形成するために、図18のプロセス1800を反復して実行することができる。反復の各レベルにおいて、配置装置は、集中コストの推定値を入手し、そのレベルの分割ラインを横切るネットを分割するために、図19のプロセス1900を使用することができる。
より詳細に説明すると、各反復レベルにおいて、配置装置は、最初、プロセス1900に、(1)そのレベルに対する分割ライン、(2)そのレベルの領域内のすべてのネットのリストを供給する。その後で、プロセス1900は、(1)分割ライン付近でその領域内のネットを分割し(すなわち、すでに説明したように、プロセスは、ネットおよびその対応するピンを、分割ラインが形成したサブ領域に対する適当なネット・リストに追加し)、(2)分割ラインを横切る集中に対するコストを計算する。
ある反復レベルの領域内の最初のネット構成の集中コストを、プロセス1900から受信した後で、配置装置は、プロセス1900が生成した集中コストを改善するために、この領域内のネット構成を反復して修正する最適化アルゴリズムを使用する。いくつかの実施形態の場合には、最適化プロセスは、配置構成に対する可能な各反復修正に対する、配置構成コストを計算するためにプロセス1900を使用する。これについては第VII節のところでさらに詳細に説明する。この節においては、いくつかの適当な最適化技術についても説明する。
一方、プロセスが、(ステップ1945において)現在のピンは、第1のピンと同じ領域内に位置しないと判断した場合には、プロセスは、交差変数Cがゼロに等しいかどうかを判断する。等しい場合には、プロセスは、1つのネット分割を検出したと判断する。それ故、プロセスは、交差変数Cの値を1に変更し、ネットおよび現在のピンを、現在のピンの識別した領域に対するネット・リストに追加する。しかし、プロセスが、(ステップ1955において)交差変数がゼロではないと判断した場合には、プロセスは、そのネット分割を前に検出したと判断する。それ故、プロセスは、単に、(ステップ1960において)現在のピンを、識別した領域に対するネット・リストに追加する。
ステップ1960〜1965から、プロセスは、ステップ1970に進み、そこで現在のネット内の最後のピンを、チェックしたかどうかを判断する。チェックしていなかった場合には、プロセスは、ステップ1935に進み、ネット内の次のピンをチェックする。チェックしていた場合には、プロセスは、(ステップ1975において)(1)交差コストCを集中コスト(Cost)に追加し、(2)交差コストCを現在のネットのコストとして記憶する。
次に、プロセスは、(ステップ1980において)最後のネットをチェックしたかどうかを判断する。チェックしていなかった場合には、プロセスは、ステップ1910に戻り、(1)他のネットを選択し、(2)このネットを分割ライン付近で分割し、(3)このネットが、分割ラインを横切るかどうかを判断する。チェックしていた場合には、プロセスは、(ステップ1985において)(1)現在の配置構成の集中コスト、(2)受信した分割ライン付近の受信したネット・リストの分割を表す2つのネット・リストを返送する。
すでに説明したように、配置装置は、ICレイアウトをもっと小さい領域に、反復して分割する一連の分割ラインを形成するために、図18のプロセス1800を反復して実行することができる。反復の各レベルにおいて、配置装置は、集中コストの推定値を入手し、そのレベルの分割ラインを横切るネットを分割するために、図19のプロセス1900を使用することができる。
より詳細に説明すると、各反復レベルにおいて、配置装置は、最初、プロセス1900に、(1)そのレベルに対する分割ライン、(2)そのレベルの領域内のすべてのネットのリストを供給する。その後で、プロセス1900は、(1)分割ライン付近でその領域内のネットを分割し(すなわち、すでに説明したように、プロセスは、ネットおよびその対応するピンを、分割ラインが形成したサブ領域に対する適当なネット・リストに追加し)、(2)分割ラインを横切る集中に対するコストを計算する。
ある反復レベルの領域内の最初のネット構成の集中コストを、プロセス1900から受信した後で、配置装置は、プロセス1900が生成した集中コストを改善するために、この領域内のネット構成を反復して修正する最適化アルゴリズムを使用する。いくつかの実施形態の場合には、最適化プロセスは、配置構成に対する可能な各反復修正に対する、配置構成コストを計算するためにプロセス1900を使用する。これについては第VII節のところでさらに詳細に説明する。この節においては、いくつかの適当な最適化技術についても説明する。
V.分割配置技術
本発明のいくつかの実施形態は、(1)設計領域を、(スロットとも呼ぶ)多数のサブ領域に分割し、(2)少なくとも1つのネットに対して、ネットの回路素子を含む一組のサブ領域(すなわち、一組のスロット)を識別し、(3)経路が、少なくとも1つのその全体または一部が対角線である縁部を持つ場合に、そのネットに対する識別した一組のサブ領域を接続する経路を識別し、(4)そのネットに対して識別した経路に基づいて配置コストを計算する。
図23は、このような配置プロセス2300である。このプロセスは、ICレイアウトのある領域に対する座標を受信する度にスタートする。受信した領域は、全ICレイアウトであってもよいし、またはこのレイアウトの一部であってもよい。いくつかの実施形態の場合には、このプロセスは、また、受信したIC領域内に回路素子を含む、すべてのネットを指定するネット・リストも受信する。他の実施形態の場合には、プロセスは、受信したIC領域内のすべての回路素子のリストを受信し、このリストから、受信したIC領域内に回路素子を含むネットを識別する。
受信したまたは識別した各ネットは、それに関連する一組の回路素子を含む(すなわち、各ネットは、一組の回路素子を含むように定義される)。いくつかの実施形態の場合には、ネットに関連する回路素子は、ICレイアウト内の回路モジュールのピンである。しかし、下記のいくつかの実施形態の場合には、回路素子は回路モジュールである。これらの実施形態の中のあるものは、回路モジュールをネット回路素子として処理し、各モジュールのピンが、すべて(例えば、モジュールの原点に位置するというように)、均等な位置にすべて位置するものと仮定することにより、異なるピン位置を区別する必要がなくなる。
また、いくつかの実施形態の場合には、受信したIC領域内の回路素子の位置が、この領域内の配置構成を定義する。いくつかの実施形態の場合には、プロセス2300がスタートする前の最初の回路素子の位置はランダムである。別な方法としては、いくつかの実施形態は、フロア・プラニングのような前の物理的設計作業を、これらの素子の最初の位置の一部または全部を指定するために使用する。さらに他のいくつかの実施形態は、受信したIC領域内の回路素子の最初の位置を指定するためにもう1つの配置装置を使用し、その後で、対角線配線を使用する配線アーキテクチャに対する配置構成を最適化するために、プロセス2300を使用する。
プロセス2300がスタートする前に、一組の分割ラインが定義される。この一組の分割ラインは、受信したIC領域を、いくつかの(スロットとも呼ぶ)サブ領域に分割する。下記のいくつかの実施形態の場合には、分割ラインは、分割グリッドを形成する交差しているラインである。これら実施形態の中のあるものの場合、交差している分割ラインは、受信したIC領域を、(N+1)(M+1)のサブ領域に分割するN本の水平ラインおよびM本の垂直ラインである。この場合、NおよびMは任意の整数である。例えば、これらの水平ラインおよび垂直ラインは、受信したIC領域を、(1)NおよびMが1である場合には、4つのセクションに、(2)NおよびMが2である場合には、9つのセクションに、(3)NおよびMが3である場合には、16のセクションに、(4)NおよびMの一方が4であり、他方が5である場合には、20のセクションに分割する。
図24は、3本の水平分割ラインおよび垂直分割ラインの組により、16のサブ領域に分割されたICレイアウト2400である。この図は、また、16のサブ領域の中の4つのサブ領域内に位置する、5つの回路モジュール2410、2415、2420、2425および2430を含むネット2405も示す。これらの4つのサブ領域は、スロット1、2、8および9である。
分割グリッドが定義されると、プロセス2300は、最初、(ステップ2305において)受信または識別した各ネットに対して、そのネットの回路モジュールを含む一組のサブ領域(すなわち、一組のスロット)を識別する。各ネットに対して識別した一組のサブ領域は、定義したグリッドに関するネットの構成を表す。
本発明のいくつかの実施形態は、(1)設計領域を、(スロットとも呼ぶ)多数のサブ領域に分割し、(2)少なくとも1つのネットに対して、ネットの回路素子を含む一組のサブ領域(すなわち、一組のスロット)を識別し、(3)経路が、少なくとも1つのその全体または一部が対角線である縁部を持つ場合に、そのネットに対する識別した一組のサブ領域を接続する経路を識別し、(4)そのネットに対して識別した経路に基づいて配置コストを計算する。
図23は、このような配置プロセス2300である。このプロセスは、ICレイアウトのある領域に対する座標を受信する度にスタートする。受信した領域は、全ICレイアウトであってもよいし、またはこのレイアウトの一部であってもよい。いくつかの実施形態の場合には、このプロセスは、また、受信したIC領域内に回路素子を含む、すべてのネットを指定するネット・リストも受信する。他の実施形態の場合には、プロセスは、受信したIC領域内のすべての回路素子のリストを受信し、このリストから、受信したIC領域内に回路素子を含むネットを識別する。
受信したまたは識別した各ネットは、それに関連する一組の回路素子を含む(すなわち、各ネットは、一組の回路素子を含むように定義される)。いくつかの実施形態の場合には、ネットに関連する回路素子は、ICレイアウト内の回路モジュールのピンである。しかし、下記のいくつかの実施形態の場合には、回路素子は回路モジュールである。これらの実施形態の中のあるものは、回路モジュールをネット回路素子として処理し、各モジュールのピンが、すべて(例えば、モジュールの原点に位置するというように)、均等な位置にすべて位置するものと仮定することにより、異なるピン位置を区別する必要がなくなる。
また、いくつかの実施形態の場合には、受信したIC領域内の回路素子の位置が、この領域内の配置構成を定義する。いくつかの実施形態の場合には、プロセス2300がスタートする前の最初の回路素子の位置はランダムである。別な方法としては、いくつかの実施形態は、フロア・プラニングのような前の物理的設計作業を、これらの素子の最初の位置の一部または全部を指定するために使用する。さらに他のいくつかの実施形態は、受信したIC領域内の回路素子の最初の位置を指定するためにもう1つの配置装置を使用し、その後で、対角線配線を使用する配線アーキテクチャに対する配置構成を最適化するために、プロセス2300を使用する。
プロセス2300がスタートする前に、一組の分割ラインが定義される。この一組の分割ラインは、受信したIC領域を、いくつかの(スロットとも呼ぶ)サブ領域に分割する。下記のいくつかの実施形態の場合には、分割ラインは、分割グリッドを形成する交差しているラインである。これら実施形態の中のあるものの場合、交差している分割ラインは、受信したIC領域を、(N+1)(M+1)のサブ領域に分割するN本の水平ラインおよびM本の垂直ラインである。この場合、NおよびMは任意の整数である。例えば、これらの水平ラインおよび垂直ラインは、受信したIC領域を、(1)NおよびMが1である場合には、4つのセクションに、(2)NおよびMが2である場合には、9つのセクションに、(3)NおよびMが3である場合には、16のセクションに、(4)NおよびMの一方が4であり、他方が5である場合には、20のセクションに分割する。
図24は、3本の水平分割ラインおよび垂直分割ラインの組により、16のサブ領域に分割されたICレイアウト2400である。この図は、また、16のサブ領域の中の4つのサブ領域内に位置する、5つの回路モジュール2410、2415、2420、2425および2430を含むネット2405も示す。これらの4つのサブ領域は、スロット1、2、8および9である。
分割グリッドが定義されると、プロセス2300は、最初、(ステップ2305において)受信または識別した各ネットに対して、そのネットの回路モジュールを含む一組のサブ領域(すなわち、一組のスロット)を識別する。各ネットに対して識別した一組のサブ領域は、定義したグリッドに関するネットの構成を表す。
次に、プロセスは、(ステップ2310において)受信または識別した各ネットに対して、ネットの回路モジュールを含むスロットを接続している、(相互接続縁部とも呼ぶ)一組の相互接続ラインを含む接続グラフの長さを識別する。より詳細に説明すると、各ネットの接続グラフは、ネットの回路素子を含む一組のサブ領域を通る経路を表す。本発明によれば、接続グラフは、その全体または一部が対角線である縁部を持つことができる。
異なる実施形態は、異なる接続グラフを持つことができる。下記のいくつかの実施形態の場合には、接続グラフはシュタイナー・ツリーである。図25〜27は、図24のネット2405に対する、シュタイナー・ツリー2505、2605および2705である。これらのシュタイナー・ツリーは、すべて同じ長さを持つ。これらのツリーの中の1つ(2505)は、シュタイナー・ノード(2520)を持つ。さらに、これら各ツリーは、その一部が対角線である少なくとも1つの縁部を持つ。これら実施形態の場合には、対角線縁部は、レイアウトの境界に対して45度の角度を持つ。八角配線モデルを使用する場合には、これらのシュタイナー・ツリーの長さは、分割グリッドのこのレベルにおけるネット2405に対して必要な経路(相互接続ライン)の長さにほぼ等しい。
いくつかの実施形態の場合には、プロセスは、(ステップ2310において)リアルタイムでこの接続グラフを形成し、グラフの形成中または後にその長さを定量化することにより、各ネットの接続グラフの長さを識別する。しかし、下記の実施形態は、異なる方法で接続グラフの長さを識別する。プロセス2300がスタートする前に、これらの実施形態は、(1)分割グリッドに関する可能な各ネット構成に対する接続グラフを形成し、(2)記憶構造体内で接続グラフの長さを予め表の形にする。次に、配置中、これらの予め表の形にする実施形態は、(ステップ2310において)メモリから識別した各ネット構成の接続グラフの長さを検索する。接続グラフを形成し、予め表の形にする1つの方法について、図28〜図31を参照しながら以下に説明する。
ステップ2315において、プロセス2300は、受信した領域内のレイアウト内の受信または識別したネットの配置コストを計算するために、ステップ2310において識別した長さを使用する。いくつかの実施形態は、各グラフの長さを(例えば、加算、乗算等のように)結合することによりこのコストを計算する。
本発明のいくつかの実施形態の場合には、プロセス2300は、最初の配置構成を指定するネット・リスト(すなわち、レイアウト内のモジュールの位置を修正する前の、ICレイアウト内のすべてのネットを識別するネット・リスト)を受信した場合に、最初の配置構成の配置コストの推定値を生成する。
最初の配置構成の遅延コストを入手した後で、いくつかの実施形態は、配置コストを改善するために、受信したIC領域内の配置構成を反復して修正する最適化アルゴリズムを使用する。本発明の異なるいくつかの実施形態は、焼きなまし、ローカル最適化、KLFM、タブ探索等のような異なる最適化技術を使用する。また、異なる最適化技術は、配置構成を異なる方法で修正する。例えば、各反復において、いくつかの技術は、1つの回路モジュールを移動し、他の技術は、2つのモジュールを交換し、さらに他の技術は、分割グリッドにより形成されたサブ領域間で、関連モジュールを移動する。また、各反復において、(例えば、KLFMおよびタブ探索アルゴリズムのような)いくつかの最適化技術は、最善の移動を探索し、一方、(例えば、シミュレートした焼きなましおよびローカル最適化のような)他の最適化技術は、ランダム移動を選択する。さらに、(シミュレートした焼きなましのような)いくつかの技術は、測定基準スコアを悪くする移動を受け入れ、一方、(例えば、ローカル最適化のような)他の技術は、それを受け入れない。いくつかの適当な最適化プロセスについては、第VII節のところで説明する。
最適化中の各反復修正の後で、すべてのネット、またはその上に移動した1つまたは複数の回路モジュールが位置するネットだけに対して、プロセス2300を反復することにより、配置構成が再計算される。配置構成を最適化した後で、いくつかの実施形態はその配置動作を終了する。配置構成を最適化した後で、いくつかの実施形態はその配置動作を終了する。いくつかの実施形態は、1つまたはそれ以上の基準に適合する定義した各サブ領域、(すなわち、分割グリッドにより形成された各サブ領域)上で、プロセス2300および最適化動作を反復して実行する。例えば、いくつかの実施形態は、指定した数以上の回路モジュールを含む各サブ領域上で、分割動作および最適化動作を反復して実行する。
異なる実施形態は、異なる接続グラフを持つことができる。下記のいくつかの実施形態の場合には、接続グラフはシュタイナー・ツリーである。図25〜27は、図24のネット2405に対する、シュタイナー・ツリー2505、2605および2705である。これらのシュタイナー・ツリーは、すべて同じ長さを持つ。これらのツリーの中の1つ(2505)は、シュタイナー・ノード(2520)を持つ。さらに、これら各ツリーは、その一部が対角線である少なくとも1つの縁部を持つ。これら実施形態の場合には、対角線縁部は、レイアウトの境界に対して45度の角度を持つ。八角配線モデルを使用する場合には、これらのシュタイナー・ツリーの長さは、分割グリッドのこのレベルにおけるネット2405に対して必要な経路(相互接続ライン)の長さにほぼ等しい。
いくつかの実施形態の場合には、プロセスは、(ステップ2310において)リアルタイムでこの接続グラフを形成し、グラフの形成中または後にその長さを定量化することにより、各ネットの接続グラフの長さを識別する。しかし、下記の実施形態は、異なる方法で接続グラフの長さを識別する。プロセス2300がスタートする前に、これらの実施形態は、(1)分割グリッドに関する可能な各ネット構成に対する接続グラフを形成し、(2)記憶構造体内で接続グラフの長さを予め表の形にする。次に、配置中、これらの予め表の形にする実施形態は、(ステップ2310において)メモリから識別した各ネット構成の接続グラフの長さを検索する。接続グラフを形成し、予め表の形にする1つの方法について、図28〜図31を参照しながら以下に説明する。
ステップ2315において、プロセス2300は、受信した領域内のレイアウト内の受信または識別したネットの配置コストを計算するために、ステップ2310において識別した長さを使用する。いくつかの実施形態は、各グラフの長さを(例えば、加算、乗算等のように)結合することによりこのコストを計算する。
本発明のいくつかの実施形態の場合には、プロセス2300は、最初の配置構成を指定するネット・リスト(すなわち、レイアウト内のモジュールの位置を修正する前の、ICレイアウト内のすべてのネットを識別するネット・リスト)を受信した場合に、最初の配置構成の配置コストの推定値を生成する。
最初の配置構成の遅延コストを入手した後で、いくつかの実施形態は、配置コストを改善するために、受信したIC領域内の配置構成を反復して修正する最適化アルゴリズムを使用する。本発明の異なるいくつかの実施形態は、焼きなまし、ローカル最適化、KLFM、タブ探索等のような異なる最適化技術を使用する。また、異なる最適化技術は、配置構成を異なる方法で修正する。例えば、各反復において、いくつかの技術は、1つの回路モジュールを移動し、他の技術は、2つのモジュールを交換し、さらに他の技術は、分割グリッドにより形成されたサブ領域間で、関連モジュールを移動する。また、各反復において、(例えば、KLFMおよびタブ探索アルゴリズムのような)いくつかの最適化技術は、最善の移動を探索し、一方、(例えば、シミュレートした焼きなましおよびローカル最適化のような)他の最適化技術は、ランダム移動を選択する。さらに、(シミュレートした焼きなましのような)いくつかの技術は、測定基準スコアを悪くする移動を受け入れ、一方、(例えば、ローカル最適化のような)他の技術は、それを受け入れない。いくつかの適当な最適化プロセスについては、第VII節のところで説明する。
最適化中の各反復修正の後で、すべてのネット、またはその上に移動した1つまたは複数の回路モジュールが位置するネットだけに対して、プロセス2300を反復することにより、配置構成が再計算される。配置構成を最適化した後で、いくつかの実施形態はその配置動作を終了する。配置構成を最適化した後で、いくつかの実施形態はその配置動作を終了する。いくつかの実施形態は、1つまたはそれ以上の基準に適合する定義した各サブ領域、(すなわち、分割グリッドにより形成された各サブ領域)上で、プロセス2300および最適化動作を反復して実行する。例えば、いくつかの実施形態は、指定した数以上の回路モジュールを含む各サブ領域上で、分割動作および最適化動作を反復して実行する。
いくつかの実施形態は、反復プロセス中に、異なるレベルに対して異なる形の分割グリッドを使用する。他の実施形態は、すべての反復レベルに対して同じ形の分割グリッドを使用する。各反復レベルにおいて、これらの実施形態は、単に、その反復レベルのIC領域の座標を一致させるために、分割グリッドの座標を調整するだけである。すべての反復レベルに対して、同じ形の分割グリッドを使用すると、いくつかの利点が得られる。例えば、そうすることにより、予め表の形にする実施形態は、1つの分割グリッドに対するネット構成長さだけを記憶することができる。これらの長さは、すべての反復レベルで再使用することができる。何故なら、これらの長さは、任意の1つのレベルのところで、ネット構成の相対的コストを定義するために使用することができるからである。
図28〜31は、分割グリッドに関する可能なネット構成をモデル化する、シュタイナー・ツリーの長さを予め表の形にする1つの方法である。より詳細に説明すると、図28は、(1)分割グリッドに関する可能な各ネット構成に対するシュタイナー・ツリーを形成し、(2)形成した各シュタイナー・ツリーの長さを参照テーブル(「LUT」)内に記憶するプロセス2800を示す。
プロセス2800は、(ステップ2805において)特定の分割グリッドが形成する(スロットとも呼ばれる)各サブ領域に対する、シュタイナー・ツリー・ノードを定義することによりスタートする。図29は、4×4分割グリッドが形成する16のスロットに対する16のシュタイナー・ツリー・ノード2905を示す。これらのノードは、すべてのネット構成の相互接続トポロジーをモデル化する、シュタイナー・ツリーのすべての潜在的ノードを示す。図29においては、識別したノードは、各スロットの中心に位置する。他のいくつかの実施形態の場合には、ノードは、スロット内の他の位置に均等に形成することができる(例えば、スロットの隅の中の1つに均等に位置させることができる)。
次に、プロセス2800は、(ステップ2810において)可能なノード構成の組Nを定義する。グリッド分割が、(例えば、4、9、16、20等のような)Y個のサブ領域を形成する場合には、組Nは2Yのノード構成を含む。2以下のノードを含むノード構成は、シュタイナー・ツリーを持たない。それ故、プロセスは、これらの構成の長さをゼロに設定する。
ステップ2810の後で、プロセス2800は、(ステップ2815において)ステップ2810において定義した組から、3つ以上のノードを含む可能なノード構成NTの中の1つを選択する。次に、プロセスは、(ステップ2820において)ステップ2815において選択したノード構成に対する最小スパニング・ツリー(「MST」)を形成し、このツリーの長さ(MST_Cost)を計算する。プロセスは、その全体または一部が対角線であってもよい縁部を使用することによりこの最小スパニング・ツリーを形成する。このようなMSTを形成し、その長さを計算する1つの方法について、図31を参照しながら以下に説明する。
選択したノード構成に対するMSTを形成した後で、プロセス2800は、(ステップ2825において)潜在的シュタイナー・ノードを識別する。図30は、潜在的なシュタイナー・ノードを識別するためのプロセス3000を示す。このプロセスは、潜在的シュタイナー・ノードの組Pを、ステップ2815において選択したノード構成の一部でない、ステップ2805において定義したすべてのノードに等しくなるように初期化することによりスタートする。次に、このプロセスは、(ステップ3010において)潜在的シュタイナー・ノードの中の1つを選択する。
図28〜31は、分割グリッドに関する可能なネット構成をモデル化する、シュタイナー・ツリーの長さを予め表の形にする1つの方法である。より詳細に説明すると、図28は、(1)分割グリッドに関する可能な各ネット構成に対するシュタイナー・ツリーを形成し、(2)形成した各シュタイナー・ツリーの長さを参照テーブル(「LUT」)内に記憶するプロセス2800を示す。
プロセス2800は、(ステップ2805において)特定の分割グリッドが形成する(スロットとも呼ばれる)各サブ領域に対する、シュタイナー・ツリー・ノードを定義することによりスタートする。図29は、4×4分割グリッドが形成する16のスロットに対する16のシュタイナー・ツリー・ノード2905を示す。これらのノードは、すべてのネット構成の相互接続トポロジーをモデル化する、シュタイナー・ツリーのすべての潜在的ノードを示す。図29においては、識別したノードは、各スロットの中心に位置する。他のいくつかの実施形態の場合には、ノードは、スロット内の他の位置に均等に形成することができる(例えば、スロットの隅の中の1つに均等に位置させることができる)。
次に、プロセス2800は、(ステップ2810において)可能なノード構成の組Nを定義する。グリッド分割が、(例えば、4、9、16、20等のような)Y個のサブ領域を形成する場合には、組Nは2Yのノード構成を含む。2以下のノードを含むノード構成は、シュタイナー・ツリーを持たない。それ故、プロセスは、これらの構成の長さをゼロに設定する。
ステップ2810の後で、プロセス2800は、(ステップ2815において)ステップ2810において定義した組から、3つ以上のノードを含む可能なノード構成NTの中の1つを選択する。次に、プロセスは、(ステップ2820において)ステップ2815において選択したノード構成に対する最小スパニング・ツリー(「MST」)を形成し、このツリーの長さ(MST_Cost)を計算する。プロセスは、その全体または一部が対角線であってもよい縁部を使用することによりこの最小スパニング・ツリーを形成する。このようなMSTを形成し、その長さを計算する1つの方法について、図31を参照しながら以下に説明する。
選択したノード構成に対するMSTを形成した後で、プロセス2800は、(ステップ2825において)潜在的シュタイナー・ノードを識別する。図30は、潜在的なシュタイナー・ノードを識別するためのプロセス3000を示す。このプロセスは、潜在的シュタイナー・ノードの組Pを、ステップ2815において選択したノード構成の一部でない、ステップ2805において定義したすべてのノードに等しくなるように初期化することによりスタートする。次に、このプロセスは、(ステップ3010において)潜在的シュタイナー・ノードの中の1つを選択する。
次に、プロセス3000は、ステップ3010において選択したノード(Q)が、選択したノード構成内の任意の2つのノード間の最短パス上に位置するかどうかを判断する。この判断を行うために、プロセスは、任意の2つのノード(BおよびC)が、2つのノード(BおよびC)間の距離が、(1)第1のノード(B)と選択したノード(Q)の間の距離と、(2)第2のノード(C)と選択したノード(Q)の間の距離の合計に等しくなるように、ノード構成内に存在するかどうかを判断する。いくつかの実施形態の場合には、プロセスは、上記囲みボックス・アプローチおよび式(A)により、任意のペアのノード間の距離を計算する。
プロセスが、ステップ3010において選択したノード(Q)が、ノード構成内の任意の2つのノード間の最短パス上に位置していると判断した場合には、プロセスは、(ステップ3020において)潜在的シュタイナー・ノードの組P内に選択したノードを維持し、このノードをチェック済みのノードとしてフラグを立て、以下に説明するステップ3030に進む。一方、選択したノード(Q)が、選択したノード構成内の任意の2つのノード間の最短パス上に位置していない場合には、プロセスは、(ステップ3025において)潜在的なシュタイナー・ノードのP組から選択したノードを除去し、ステップ3030に進む。
ステップ3030において、プロセスは、一組の潜在的なシュタイナー・ノード内のすべてのノードをチェックしたかどうかを判断する。チェックしていなかった場合には、プロセスは、ステップ3010に戻り、この組内のもう1つのノードを選択し、それにより、プロセスは、ステップ3015において、このノードが選択したノード構成内の任意の2つのノード間の最短パス上に位置しているかどうかを判断することができる。プロセスが(ステップ3030において)潜在的なシュタイナー・ノードの組内のすべてのノードのチェックは終了したと判断した場合には、プロセスは終了する。
プロセス2800が、(ステップ2825において)潜在的シュタイナー・ノードを識別するために、図30のプロセス3000を実行した場合には、プロセス2800は、(ステップ2830において)シュタイナー・ノードの可能なすべての組を定義する。シュタイナー・ノードの定義した各組は、ステップ2825において識別した1つまたはそれ以上のシュタイナー・ノードを含む。また、シュタイナー・ノードの定義した各組は、選択したノード構成内のノードの数より2つ小さい最大の大きさを持つ。
次に、プロセス2800は、(ステップ2835において)ステップ2830において定義した複数のシュタイナー・ノードの組の中の1つを選択する。次に、プロセスは、(ステップ2840において)(1)選択したノード構成および選択したシュタイナー・ノードの組内のノードに対する最小スパニング・ツリー(「MST」)を形成し、(2)このMST長さ(MST_Cost)を計算する。プロセスは、その全体または一部が対角線であってもよい縁部を使用することにより、このMSTを形成する。このようなMSTを形成し、その長さを計算する1つの方法について、図31を参照しながら以下に説明する。
プロセスが、ステップ3010において選択したノード(Q)が、ノード構成内の任意の2つのノード間の最短パス上に位置していると判断した場合には、プロセスは、(ステップ3020において)潜在的シュタイナー・ノードの組P内に選択したノードを維持し、このノードをチェック済みのノードとしてフラグを立て、以下に説明するステップ3030に進む。一方、選択したノード(Q)が、選択したノード構成内の任意の2つのノード間の最短パス上に位置していない場合には、プロセスは、(ステップ3025において)潜在的なシュタイナー・ノードのP組から選択したノードを除去し、ステップ3030に進む。
ステップ3030において、プロセスは、一組の潜在的なシュタイナー・ノード内のすべてのノードをチェックしたかどうかを判断する。チェックしていなかった場合には、プロセスは、ステップ3010に戻り、この組内のもう1つのノードを選択し、それにより、プロセスは、ステップ3015において、このノードが選択したノード構成内の任意の2つのノード間の最短パス上に位置しているかどうかを判断することができる。プロセスが(ステップ3030において)潜在的なシュタイナー・ノードの組内のすべてのノードのチェックは終了したと判断した場合には、プロセスは終了する。
プロセス2800が、(ステップ2825において)潜在的シュタイナー・ノードを識別するために、図30のプロセス3000を実行した場合には、プロセス2800は、(ステップ2830において)シュタイナー・ノードの可能なすべての組を定義する。シュタイナー・ノードの定義した各組は、ステップ2825において識別した1つまたはそれ以上のシュタイナー・ノードを含む。また、シュタイナー・ノードの定義した各組は、選択したノード構成内のノードの数より2つ小さい最大の大きさを持つ。
次に、プロセス2800は、(ステップ2835において)ステップ2830において定義した複数のシュタイナー・ノードの組の中の1つを選択する。次に、プロセスは、(ステップ2840において)(1)選択したノード構成および選択したシュタイナー・ノードの組内のノードに対する最小スパニング・ツリー(「MST」)を形成し、(2)このMST長さ(MST_Cost)を計算する。プロセスは、その全体または一部が対角線であってもよい縁部を使用することにより、このMSTを形成する。このようなMSTを形成し、その長さを計算する1つの方法について、図31を参照しながら以下に説明する。
次に、プロセスは、(ステップ2845において)ステップ2830において定義したシュタイナー・ノードの組内に、まだチェックしていなかった追加のシュタイナー・ノードの組が存在するかどうかを判断する。存在する場合には、プロセスは、ステップ2835に戻り、他のシュタイナー・ノードの組を選択し、その結果、この組のノードおよび選択したノード構成内のノードに対するMSTを形成することができる。
プロセスが、(ステップ2845において)選択したノード構成および各シュタイナー・ノードの組のMSTを生成したと判断した場合には、プロセスは、(ステップ2850において)ステップ2820および2840において計算する最も小さなMSTを識別する。次に、プロセスは、(ステップ2855において)LUT内にステップ2850において識別したMST_Costを、ステップ2815において選択したノード構成に対するシュタイナー・ツリー経路の長さとして記憶する。配置動作中、配置装置は、記憶構造体から記憶した長さを検索することにより、現在のノード構成に対するシュタイナー・ツリーの長さを迅速に識別する。
次に、プロセスは、(ステップ2860において)2つまたはそれ以上のノードを含む、ステップ2810において定義した組内のすべてのノード構成をチェックしたかどうかを判断する。チェックしていなかった場合には、プロセスは、ステップ2815に戻り、2つまたはそれ以上のノードを含む、まだチェックしていなかったノード構成を選択し、次に、このノード構成に対するシュタイナーの長さを決定し、記憶するために動作2820〜55を反復する。そうでない場合は、プロセスは終了する。
図31は、最小スパニング・ツリーを形成するために、図28のプロセス2800が、ステップ2820および2840のところで使用するプロセス3100である。あるノード構成に対する最小スパニング・ツリーは、ノードのところだけで分岐する(すなわちスタートまたは終了する)、最短の経路を通る構成のN個のノードを接続する(すなわち、結ぶ)N−1個の縁部を含むツリーである。あるネット構成に対するMSTの長さは、そのネット構成に関連するノードを相互に接続するために必要なワイヤの長さのもっと低い境界推定値である。
以下に説明する本発明のいくつかの実施形態の場合には、MSTの縁部は、水平方向を向いていても、垂直方向を向いていても、対角線方向を向いていてもよい。対角線縁部は、その全体または一部が対角線であってもよい。また、ICレイアウトが、(例えば、±120度の相互接続ラインのような)、対角線相互接続ラインを使用している場合には、MSTの対角線縁部は、レイアウト内の対角線相互接続ラインの中のあるものと(例えば、±120度方向のような)同じ方向を向いていてもよい。
例えば、ICレイアウトが、水平ライン、垂直ラインおよび45度対角線ラインを指定する八角配線モデルを使用している場合には、いくつかの実施形態は、水平縁部、垂直縁部、および45度対角線縁部を含むMSTを形成する。上記の図11は、このようなMSTの一例である。また、すでに説明したように、MSTの各縁部の2つのノードを、囲みボックスの2つの対向する隅として処理することにより、上記囲みボックス・アプローチおよび式(A)により各縁部の長さを求めることができる。
プロセスが、(ステップ2845において)選択したノード構成および各シュタイナー・ノードの組のMSTを生成したと判断した場合には、プロセスは、(ステップ2850において)ステップ2820および2840において計算する最も小さなMSTを識別する。次に、プロセスは、(ステップ2855において)LUT内にステップ2850において識別したMST_Costを、ステップ2815において選択したノード構成に対するシュタイナー・ツリー経路の長さとして記憶する。配置動作中、配置装置は、記憶構造体から記憶した長さを検索することにより、現在のノード構成に対するシュタイナー・ツリーの長さを迅速に識別する。
次に、プロセスは、(ステップ2860において)2つまたはそれ以上のノードを含む、ステップ2810において定義した組内のすべてのノード構成をチェックしたかどうかを判断する。チェックしていなかった場合には、プロセスは、ステップ2815に戻り、2つまたはそれ以上のノードを含む、まだチェックしていなかったノード構成を選択し、次に、このノード構成に対するシュタイナーの長さを決定し、記憶するために動作2820〜55を反復する。そうでない場合は、プロセスは終了する。
図31は、最小スパニング・ツリーを形成するために、図28のプロセス2800が、ステップ2820および2840のところで使用するプロセス3100である。あるノード構成に対する最小スパニング・ツリーは、ノードのところだけで分岐する(すなわちスタートまたは終了する)、最短の経路を通る構成のN個のノードを接続する(すなわち、結ぶ)N−1個の縁部を含むツリーである。あるネット構成に対するMSTの長さは、そのネット構成に関連するノードを相互に接続するために必要なワイヤの長さのもっと低い境界推定値である。
以下に説明する本発明のいくつかの実施形態の場合には、MSTの縁部は、水平方向を向いていても、垂直方向を向いていても、対角線方向を向いていてもよい。対角線縁部は、その全体または一部が対角線であってもよい。また、ICレイアウトが、(例えば、±120度の相互接続ラインのような)、対角線相互接続ラインを使用している場合には、MSTの対角線縁部は、レイアウト内の対角線相互接続ラインの中のあるものと(例えば、±120度方向のような)同じ方向を向いていてもよい。
例えば、ICレイアウトが、水平ライン、垂直ラインおよび45度対角線ラインを指定する八角配線モデルを使用している場合には、いくつかの実施形態は、水平縁部、垂直縁部、および45度対角線縁部を含むMSTを形成する。上記の図11は、このようなMSTの一例である。また、すでに説明したように、MSTの各縁部の2つのノードを、囲みボックスの2つの対向する隅として処理することにより、上記囲みボックス・アプローチおよび式(A)により各縁部の長さを求めることができる。
プロセス3100は、(1)ノードの組Mに対してMSTを形成し、(2)このMSTの長さを計算するために、プロセス2800が、(ステップ2820または2840において)プロセス3100を呼び出す度にスタートする。このプロセスは、最初、(ステップ3105において)MSTの長さ(MST_Cost)をゼロに設定する。次に、プロセスは、(ステップ3110において)ノードの受信した組Mから1つのノードをスパニング・ツリーの第1のノードとして選択し、(2)この組Mからこのノードを除去する。
次に、プロセスは、(ステップ3115において)ノードの残りの組Rは、ノードの現在の組Mに等しいと定義する。ステップ3120において、プロセスは、残りのノードの組Rから1つのノードを選択し、残りのノードのこの組から選択したノードを除去する。
次に、プロセスは、(ステップ3125において)ステップ3120において選択したノードと、スパニング・ツリーの現在の各ノードとの間の距離を計算し、記憶する。選択したノードと各ノードとの間の距離は、その全体または一部が対角線である縁部を通って移動することができる。それ故、いくつかの実施形態の場合には、プロセスは、選択したノードと各ノードとの間の最短距離を計算するために、上記囲みボックス・アプローチおよび式(A)を使用する。
次に、プロセスは、(ステップ3130において)組R内にノードが残っているかどうかを判断する。残っている場合には、プロセスは、ステップ3120に戻り、この組から他のノードを選択する。それ故、プロセスは、(ステップ3125において)このノードとスパニング・ツリーの現在のノードとの間の距離を計算することができる。残っていない場合には、プロセスは、(ステップ3135において)ステップ3125において記録した最短距離を識別し、この距離になるノードの組合わせ(すなわち、組M内のノードおよびMSTのノード)を識別する。その後で、プロセスは、(ステップ3140において)識別した最短距離をMSTの長さ(MST_Cost)に加算する。
次に、プロセスは、(ステップ3145において)(1)ステップ3135において識別したノードに対応するツリー・ノードを定義し、(2)ノードの組Mから識別したノードを除去し、(3)定義したツリー・ノードを、ステップ3135において識別したMSTノードにリンクする。次に、プロセスは、(ステップ3150において)ノードの組Mが空であるかどうかを判断する。空でない場合には、プロセスは、ステップ3115に戻り、MSTの現在のノードに最も近い(この組M内の)次のノードを識別する。空である場合には、プロセスは、ノードの受信した組Mに対してMSTを形成したかどうかを判断し、この組に対する計算したMSTの長さ(MST_Cost)を返送する。
次に、プロセスは、(ステップ3115において)ノードの残りの組Rは、ノードの現在の組Mに等しいと定義する。ステップ3120において、プロセスは、残りのノードの組Rから1つのノードを選択し、残りのノードのこの組から選択したノードを除去する。
次に、プロセスは、(ステップ3125において)ステップ3120において選択したノードと、スパニング・ツリーの現在の各ノードとの間の距離を計算し、記憶する。選択したノードと各ノードとの間の距離は、その全体または一部が対角線である縁部を通って移動することができる。それ故、いくつかの実施形態の場合には、プロセスは、選択したノードと各ノードとの間の最短距離を計算するために、上記囲みボックス・アプローチおよび式(A)を使用する。
次に、プロセスは、(ステップ3130において)組R内にノードが残っているかどうかを判断する。残っている場合には、プロセスは、ステップ3120に戻り、この組から他のノードを選択する。それ故、プロセスは、(ステップ3125において)このノードとスパニング・ツリーの現在のノードとの間の距離を計算することができる。残っていない場合には、プロセスは、(ステップ3135において)ステップ3125において記録した最短距離を識別し、この距離になるノードの組合わせ(すなわち、組M内のノードおよびMSTのノード)を識別する。その後で、プロセスは、(ステップ3140において)識別した最短距離をMSTの長さ(MST_Cost)に加算する。
次に、プロセスは、(ステップ3145において)(1)ステップ3135において識別したノードに対応するツリー・ノードを定義し、(2)ノードの組Mから識別したノードを除去し、(3)定義したツリー・ノードを、ステップ3135において識別したMSTノードにリンクする。次に、プロセスは、(ステップ3150において)ノードの組Mが空であるかどうかを判断する。空でない場合には、プロセスは、ステップ3115に戻り、MSTの現在のノードに最も近い(この組M内の)次のノードを識別する。空である場合には、プロセスは、ノードの受信した組Mに対してMSTを形成したかどうかを判断し、この組に対する計算したMSTの長さ(MST_Cost)を返送する。
VI.遅延測定基準
上記いくつかの実施形態は、異なる配置構成のコストを計算するために長さ測定基準を計算する。これらの長さ測定基準は、対角線配線を含む配線モデルの使用に対応する。通常の当業者であれば、他の実施形態は、他のタイプの配置測定基準を使用することができることを理解することができるだろう。
例えば、いくつかの実施形態は、対角線配線の使用に対応する配置遅延コストを計算する。これらの実施形態の中のあるものは、あるネットの配置に対する遅延コストを、このような配置に対して入手したネットの長さコストから入手する。例えば、いくつかの実施形態は、遅延コストを、下式(F)のような一次式により長さコストから入手する。
遅延コスト=A*ワイヤ長さコスト+B (F)
ここで、AおよびBはスカラ定数である。他の実施形態は、遅延コストを、下式(G)のような非線形方程式により長さコストから入手する。
遅延コスト=A*ワイヤ長さコストD+A’*ワイヤ長さコストD−1+...+B
(G)
ここで、A、A’、BおよびDはスカラ定数である。上式中、Dは1より大きい任意の値をとることができる。また、この式は、長さに依存する倍数成分を持つことができる。これらの式中、長さコストは、上記アプローチの中の1つにより計算することができる。
また、長さコストを上記の予め表の形にする分割アプローチにより計算する場合には、遅延コストは、長さコストと一緒に予め表の形にすることができる。例えば、プロセス2800は、分割グリッドに関するネット構成の長さコストを識別した場合、ステップ2855において遅延コストを計算し、記憶することができる。より詳細に説明すると、ステップ2855において、プロセス2800は、ステップ2850において識別した長さコストから、遅延コストを計算するために上式(F)または(G)を使用することができ、次に、長さコストと一緒に遅延コストをLUT内に記憶することができる。
図32は、遅延コストを計算するプロセス3200である。配置装置は、ネット・リスト上の一組のネットに対する、遅延コストの推定値を生成するためにこのプロセスを使用することができる。いくつかの実施形態の場合には、プロセス3200は、多数のネットを指定するネット・リストを受信した場合、何時でもスタートする。
受信した各ネットは、それに関連する一組の回路素子を含む(すなわち、各ネットは、いくつかの回路素子を含むように定義される)。すなわち、ネット・リスト上のネットは、ICレイアウト内のいくつかのまたはすべての回路素子間の相互接続を指定する。下記のいくつかの実施形態の場合には、ネットに関連する回路素子は、ICレイアウト内の回路モジュールのピンである。しかし、他の実施形態は、回路モジュールをネットの回路素子として処理する。これらの実施形態の中のあるものは、回路モジュールをネットの回路素子として処理し、各モジュールのピンが、すべて(例えば、モジュールの原点に位置するというように)均等な位置にすべて位置するものと仮定することにより、異なるピン位置を区別する必要がなくなる。
上記いくつかの実施形態は、異なる配置構成のコストを計算するために長さ測定基準を計算する。これらの長さ測定基準は、対角線配線を含む配線モデルの使用に対応する。通常の当業者であれば、他の実施形態は、他のタイプの配置測定基準を使用することができることを理解することができるだろう。
例えば、いくつかの実施形態は、対角線配線の使用に対応する配置遅延コストを計算する。これらの実施形態の中のあるものは、あるネットの配置に対する遅延コストを、このような配置に対して入手したネットの長さコストから入手する。例えば、いくつかの実施形態は、遅延コストを、下式(F)のような一次式により長さコストから入手する。
遅延コスト=A*ワイヤ長さコスト+B (F)
ここで、AおよびBはスカラ定数である。他の実施形態は、遅延コストを、下式(G)のような非線形方程式により長さコストから入手する。
遅延コスト=A*ワイヤ長さコストD+A’*ワイヤ長さコストD−1+...+B
(G)
ここで、A、A’、BおよびDはスカラ定数である。上式中、Dは1より大きい任意の値をとることができる。また、この式は、長さに依存する倍数成分を持つことができる。これらの式中、長さコストは、上記アプローチの中の1つにより計算することができる。
また、長さコストを上記の予め表の形にする分割アプローチにより計算する場合には、遅延コストは、長さコストと一緒に予め表の形にすることができる。例えば、プロセス2800は、分割グリッドに関するネット構成の長さコストを識別した場合、ステップ2855において遅延コストを計算し、記憶することができる。より詳細に説明すると、ステップ2855において、プロセス2800は、ステップ2850において識別した長さコストから、遅延コストを計算するために上式(F)または(G)を使用することができ、次に、長さコストと一緒に遅延コストをLUT内に記憶することができる。
図32は、遅延コストを計算するプロセス3200である。配置装置は、ネット・リスト上の一組のネットに対する、遅延コストの推定値を生成するためにこのプロセスを使用することができる。いくつかの実施形態の場合には、プロセス3200は、多数のネットを指定するネット・リストを受信した場合、何時でもスタートする。
受信した各ネットは、それに関連する一組の回路素子を含む(すなわち、各ネットは、いくつかの回路素子を含むように定義される)。すなわち、ネット・リスト上のネットは、ICレイアウト内のいくつかのまたはすべての回路素子間の相互接続を指定する。下記のいくつかの実施形態の場合には、ネットに関連する回路素子は、ICレイアウト内の回路モジュールのピンである。しかし、他の実施形態は、回路モジュールをネットの回路素子として処理する。これらの実施形態の中のあるものは、回路モジュールをネットの回路素子として処理し、各モジュールのピンが、すべて(例えば、モジュールの原点に位置するというように)均等な位置にすべて位置するものと仮定することにより、異なるピン位置を区別する必要がなくなる。
いくつかの実施形態の場合には、プロセス3200がスタートする前のネットの回路素子の位置が、最初の配置構成を定義する。これらの実施形態の中のあるものの場合には、最初の回路素子の位置はランダムである。他の実施形態の場合には、フロア・プラニングのような前の物理的設計作業が、これらの素子の最初の位置の一部または全部を指定する。他のいくつかの実施形態は、回路素子の最初の位置を指定するためにもう1つの配置装置を使用し、次に、対角線配線を使用する配線アーキテクチャに対する配置構成を最適化するために、プロセス3200を使用する。
プロセス3200は、最初に、(ステップ3205において)1つのネットを選択する。その後で、選択したネットに対して、このプロセスは、(ステップ3210において)そのネットの長さコストに基づく遅延コストを識別する。長さコストは、上記プロセス1000、1200、1400、1900および2300の中の1つに基づいて計算することができる。また、識別した遅延コストは、式(F)および(G)が示す関係のような任意の数の数学的関係に基づいて長さコストから入手することができる。すでに説明したように、予め表の形にする分割アプローチを使用する実施形態は、各ネット構成に対する遅延コストを予め表の形にすることができる。それ故、これらの実施形態の場合には、プロセス3200は、(ステップ3210において)記憶構造体から予め計算した遅延コストを検索するために、分割グリッドに関する選択したネット構成により遅延コストを識別する。
ステップ3210の後で、このプロセスは、(ステップ3215において)必要な場合には、選択したネットの識別した遅延コストを記憶する。プロセス3200は、予め表の形にした遅延コストを使用する上記分割アプローチをを使用する場合には、識別した遅延コストを記憶しなくてもよい。これら実施形態の場合には、遅延コストは、分割グリッドに関する各ネット構成に対してすでに記憶されている。
次に、プロセスは、(ステップ3220において)受信したネット・リスト内の最後のネットをチェックしたかどうかを判断する。チェックしていなかった場合には、プロセスは、ステップ3205に戻り、他のネットを選択し、次に、新しく選択したネットに対してステップ3210〜3215を反復して実行する。チェックしていた場合には、受信した配置構成に対して、プロセスは、(ステップ3225において)ステップ3210において識別した遅延コストに基づいて全遅延コストを計算する。いくつかの実施形態の場合には、プロセスは、全遅延コストを、ステップ3210において識別した遅延コストの合計として計算する。ステップ3225の後で、プロセスは終了する。
本発明のいくつかの実施形態の場合には、プロセス3200は、最初の配置構成を指定するネット・リスト(すなわち、レイアウト内のモジュールの位置を修正する前の、ICレイアウト内のすべてのネットを識別するネット・リスト)を受信した場合に、最初の配置構成に対する遅延コストの推定値を生成する。
最初の配置構成の遅延コストを入手した後で、いくつかの実施形態は、配置構成コストを改善するために、配置構成を反復して修正する最適化プロセスを使用する。いくつかの実施形態の場合には、最適化プロセスは、配置構成に対する可能な各反復修正に対する、配置構成コストを計算するためにプロセス3200を使用する。これについては第VII節のところでさらに詳細に説明する。この節においては、いくつかの適当な最適化技術についても説明する。
プロセス3200は、最初に、(ステップ3205において)1つのネットを選択する。その後で、選択したネットに対して、このプロセスは、(ステップ3210において)そのネットの長さコストに基づく遅延コストを識別する。長さコストは、上記プロセス1000、1200、1400、1900および2300の中の1つに基づいて計算することができる。また、識別した遅延コストは、式(F)および(G)が示す関係のような任意の数の数学的関係に基づいて長さコストから入手することができる。すでに説明したように、予め表の形にする分割アプローチを使用する実施形態は、各ネット構成に対する遅延コストを予め表の形にすることができる。それ故、これらの実施形態の場合には、プロセス3200は、(ステップ3210において)記憶構造体から予め計算した遅延コストを検索するために、分割グリッドに関する選択したネット構成により遅延コストを識別する。
ステップ3210の後で、このプロセスは、(ステップ3215において)必要な場合には、選択したネットの識別した遅延コストを記憶する。プロセス3200は、予め表の形にした遅延コストを使用する上記分割アプローチをを使用する場合には、識別した遅延コストを記憶しなくてもよい。これら実施形態の場合には、遅延コストは、分割グリッドに関する各ネット構成に対してすでに記憶されている。
次に、プロセスは、(ステップ3220において)受信したネット・リスト内の最後のネットをチェックしたかどうかを判断する。チェックしていなかった場合には、プロセスは、ステップ3205に戻り、他のネットを選択し、次に、新しく選択したネットに対してステップ3210〜3215を反復して実行する。チェックしていた場合には、受信した配置構成に対して、プロセスは、(ステップ3225において)ステップ3210において識別した遅延コストに基づいて全遅延コストを計算する。いくつかの実施形態の場合には、プロセスは、全遅延コストを、ステップ3210において識別した遅延コストの合計として計算する。ステップ3225の後で、プロセスは終了する。
本発明のいくつかの実施形態の場合には、プロセス3200は、最初の配置構成を指定するネット・リスト(すなわち、レイアウト内のモジュールの位置を修正する前の、ICレイアウト内のすべてのネットを識別するネット・リスト)を受信した場合に、最初の配置構成に対する遅延コストの推定値を生成する。
最初の配置構成の遅延コストを入手した後で、いくつかの実施形態は、配置構成コストを改善するために、配置構成を反復して修正する最適化プロセスを使用する。いくつかの実施形態の場合には、最適化プロセスは、配置構成に対する可能な各反復修正に対する、配置構成コストを計算するためにプロセス3200を使用する。これについては第VII節のところでさらに詳細に説明する。この節においては、いくつかの適当な最適化技術についても説明する。
VII.最適化技術
すでに説明したように、本発明のコスト計算方法は、種々の最適化技術と一緒に使用することができる。3つの適当な最適化技術について以下に説明する。これら3つの技術とは、(1)ローカル最適化、(2)シミュレートした焼きなまし、および(3)KLFMである。
A.ローカル最適化
ローカル最適化は、コスト計算機能により生成した配置スコアを改善するために、配置構成を反復して修正する技術である。反復の度ごとに、この技術は、ある回路モジュールを移動し、2つのモジュールを交換し、または多数の関連するモジュールを移動するなどする。また、反復の度ごとに、この技術は移動をランダムに選択する。さらに、この技術は、計算したコストを悪くする移動を受け入れない。
図33は、ローカル最適化プロセス3300の一例である。このプロセスは、最初に、(ステップ3305において)最初の配置構成を受信する。いくつかの実施形態の場合には、プロセスは、回路モジュールのリスト、これらのモジュールに対する最初の配置構成、およびこれらのモジュール間の相互接続を指定するネット・リストを受信することにより最初の構成を受信する。
最初の配置構成を受信した後で、プロセス3300は、(ステップ3310において)第II節〜第VI節のところで説明した、上記コスト計算方法の中の1つのようなコスト計算方法を呼び出す。これに応じて、このコスト計算方法は、最初の配置構成のコスト(C)を計算し、それを返送する。
プロセス3300がコスト計算方法を呼び出すと、このプロセスは、この方法、に対して、最初の配置構成を指定するネット・リスト(すなわち、レイアウト内のモジュールの位置を修正する前の、ICレイアウト内のすべてのネットを識別するネット・リスト)を供給する。
また、コスト計算方法が、上記二分割プロセス1900である場合には、プロセス3300は、プロセス1900を呼び出す前にプロセス1800を呼び出す。すでに説明したように、プロセス1800は、最適化プロセス3300により最適化中の、現在のIC領域に対する分割ラインを定義する。プロセス3300は、プロセス1900から最初の配置構成のネット・カット集中コスト(C)を受信するために、集中計算プロセス1900に最初の構成のネット・リストと一緒にこの分割ラインを供給する。プロセス1900から、プロセス3300は、また、現在の分割ラインにより形成された2つの領域内のネット、およびピンを指定する2つのネット・リストを受信する。
ステップ3310において、最初の配置構成のコストを入手した後で、プロセスは、(ステップ3315において)無駄反復カウンタ(F)を1に設定する。以下にさらに詳細に説明するように、プロセスは、予め定めた数の反復を行ったが改善がみられなかったために、その動作を終了すべきかどうかを判断するために、カウンタを使用する。
その後で、プロセスは、(ステップ3320において)ICレイアウト中の1つまたはそれ以上の回路モジュールの座標の修正を必要とする、ランダム移動を選択する。プロセス3300が、分割プロセス1900または2300を使用する場合には、このランダム移動により、分割ラインに対して1つまたはそれ以上の回路モジュールが再配置される。例えば、プロセス2300の場合には、ランダム移動は、回路モジュールに対して、あるスロットから別のスロットへの位置の変更を指定することができる。
すでに説明したように、本発明のコスト計算方法は、種々の最適化技術と一緒に使用することができる。3つの適当な最適化技術について以下に説明する。これら3つの技術とは、(1)ローカル最適化、(2)シミュレートした焼きなまし、および(3)KLFMである。
A.ローカル最適化
ローカル最適化は、コスト計算機能により生成した配置スコアを改善するために、配置構成を反復して修正する技術である。反復の度ごとに、この技術は、ある回路モジュールを移動し、2つのモジュールを交換し、または多数の関連するモジュールを移動するなどする。また、反復の度ごとに、この技術は移動をランダムに選択する。さらに、この技術は、計算したコストを悪くする移動を受け入れない。
図33は、ローカル最適化プロセス3300の一例である。このプロセスは、最初に、(ステップ3305において)最初の配置構成を受信する。いくつかの実施形態の場合には、プロセスは、回路モジュールのリスト、これらのモジュールに対する最初の配置構成、およびこれらのモジュール間の相互接続を指定するネット・リストを受信することにより最初の構成を受信する。
最初の配置構成を受信した後で、プロセス3300は、(ステップ3310において)第II節〜第VI節のところで説明した、上記コスト計算方法の中の1つのようなコスト計算方法を呼び出す。これに応じて、このコスト計算方法は、最初の配置構成のコスト(C)を計算し、それを返送する。
プロセス3300がコスト計算方法を呼び出すと、このプロセスは、この方法、に対して、最初の配置構成を指定するネット・リスト(すなわち、レイアウト内のモジュールの位置を修正する前の、ICレイアウト内のすべてのネットを識別するネット・リスト)を供給する。
また、コスト計算方法が、上記二分割プロセス1900である場合には、プロセス3300は、プロセス1900を呼び出す前にプロセス1800を呼び出す。すでに説明したように、プロセス1800は、最適化プロセス3300により最適化中の、現在のIC領域に対する分割ラインを定義する。プロセス3300は、プロセス1900から最初の配置構成のネット・カット集中コスト(C)を受信するために、集中計算プロセス1900に最初の構成のネット・リストと一緒にこの分割ラインを供給する。プロセス1900から、プロセス3300は、また、現在の分割ラインにより形成された2つの領域内のネット、およびピンを指定する2つのネット・リストを受信する。
ステップ3310において、最初の配置構成のコストを入手した後で、プロセスは、(ステップ3315において)無駄反復カウンタ(F)を1に設定する。以下にさらに詳細に説明するように、プロセスは、予め定めた数の反復を行ったが改善がみられなかったために、その動作を終了すべきかどうかを判断するために、カウンタを使用する。
その後で、プロセスは、(ステップ3320において)ICレイアウト中の1つまたはそれ以上の回路モジュールの座標の修正を必要とする、ランダム移動を選択する。プロセス3300が、分割プロセス1900または2300を使用する場合には、このランダム移動により、分割ラインに対して1つまたはそれ以上の回路モジュールが再配置される。例えば、プロセス2300の場合には、ランダム移動は、回路モジュールに対して、あるスロットから別のスロットへの位置の変更を指定することができる。
次に、プロセスは、(ステップ3325において)このランダム移動の影響を受けたすべてのネットを識別する。ネットの定義方法により、これらのネットは、(1)その移動に対して選択した1つまたは複数の回路モジュールを含むネットであるか、(2)これらの回路モジュールのピンを含むネットである。
ステップ3330において、プロセスは、ステップ3325において識別したネットに対する現在のコストを計算する。すでに説明したように、コスト計算プロセス1000、1200、1400、1900、2300および3200は、各ネットに対するコストを記憶する。それ故、プロセス3300は、これらネットに対して記憶したコストの値を合計することにより、識別したネットに対する現在のコストを計算することができる。
選択したランダム移動により、プロセス3300は、(ステップ3335において)移動により影響を受けた各回路モジュールおよび/またはピンの座標を修正する。すなわち、ステップ3335において、プロセスは、ステップ3320において識別したランダムな位置を一致させるために、影響を受けた1つのまたは複数の回路モジュール、および/またはその関連するピンの座標を修正することにより移動を行う。
次に、プロセスは、コスト計算プロセスを呼び出し、このプロセスに、選択した移動により影響を受けている識別したネットを指定するネット・リストを供給する。このネット・リストは、選択した移動の後の識別したネットの構成を指定する。何故なら、プロセス3300が、ステップ3335において、影響を受けた回路モジュールおよび/またはピンの座標を修正したからである。コスト計算プロセスが、二分割プロセス1900であるいくつかの実施形態の場合には、プロセス3300は、このプロセス1900に、識別したネットのリストと一緒に、最適化中の現在のIC領域に対する分割ラインを供給する。
ステップ3340における呼出しに応じて、コスト計算方法は、潜在的修正の後で識別したネットの構成に対するコスト(C)を計算し、返送する。コスト計算方法が二分割プロセス1900である場合には、このプロセスは、また、分割ライン付近で識別したネットを分割し、この分割を反映している2つのネット・リストを返送する。
(ステップ3340において)潜在的な修正の後で識別したネットに対するコストを受信した後で、プロセスは、(ステップ3345において)潜在的修正を行う前に識別したネットに対するコスト、(すなわち、ステップ3330において計算したコスト)から、潜在的修正を行った後の識別したネットに対するコスト(すなわち、ステップ3340において計算したコスト)を差し引くことにより、デルタ・コストを生成する。
ステップ3350において、プロセスは、デルタ・コストが、ゼロより小さいかどうかを判断する。
小さい場合には、選択した移動が、配置コストを低減し、プロセスは、移動を保持することを決定する。より詳細に説明すると、デルタ・コストがゼロより小さい場合には、プロセスは、(ステップ3355において)現在の配置構成(すなわち、選択した移動を行う配置構成)のコストを、前の配置構成(すなわち、選択した移動を行わない配置構成)のコストにデルタ・コストを加算したものに等しくなるように設定する。デルタ・コストは負数であり、そのため、全配置構成コストCは少なくなる。
ステップ3330において、プロセスは、ステップ3325において識別したネットに対する現在のコストを計算する。すでに説明したように、コスト計算プロセス1000、1200、1400、1900、2300および3200は、各ネットに対するコストを記憶する。それ故、プロセス3300は、これらネットに対して記憶したコストの値を合計することにより、識別したネットに対する現在のコストを計算することができる。
選択したランダム移動により、プロセス3300は、(ステップ3335において)移動により影響を受けた各回路モジュールおよび/またはピンの座標を修正する。すなわち、ステップ3335において、プロセスは、ステップ3320において識別したランダムな位置を一致させるために、影響を受けた1つのまたは複数の回路モジュール、および/またはその関連するピンの座標を修正することにより移動を行う。
次に、プロセスは、コスト計算プロセスを呼び出し、このプロセスに、選択した移動により影響を受けている識別したネットを指定するネット・リストを供給する。このネット・リストは、選択した移動の後の識別したネットの構成を指定する。何故なら、プロセス3300が、ステップ3335において、影響を受けた回路モジュールおよび/またはピンの座標を修正したからである。コスト計算プロセスが、二分割プロセス1900であるいくつかの実施形態の場合には、プロセス3300は、このプロセス1900に、識別したネットのリストと一緒に、最適化中の現在のIC領域に対する分割ラインを供給する。
ステップ3340における呼出しに応じて、コスト計算方法は、潜在的修正の後で識別したネットの構成に対するコスト(C)を計算し、返送する。コスト計算方法が二分割プロセス1900である場合には、このプロセスは、また、分割ライン付近で識別したネットを分割し、この分割を反映している2つのネット・リストを返送する。
(ステップ3340において)潜在的な修正の後で識別したネットに対するコストを受信した後で、プロセスは、(ステップ3345において)潜在的修正を行う前に識別したネットに対するコスト、(すなわち、ステップ3330において計算したコスト)から、潜在的修正を行った後の識別したネットに対するコスト(すなわち、ステップ3340において計算したコスト)を差し引くことにより、デルタ・コストを生成する。
ステップ3350において、プロセスは、デルタ・コストが、ゼロより小さいかどうかを判断する。
小さい場合には、選択した移動が、配置コストを低減し、プロセスは、移動を保持することを決定する。より詳細に説明すると、デルタ・コストがゼロより小さい場合には、プロセスは、(ステップ3355において)現在の配置構成(すなわち、選択した移動を行う配置構成)のコストを、前の配置構成(すなわち、選択した移動を行わない配置構成)のコストにデルタ・コストを加算したものに等しくなるように設定する。デルタ・コストは負数であり、そのため、全配置構成コストCは少なくなる。
次に、プロセス3300は、(ステップ3360において)無駄反復カウンタFを1に設定する。また、コスト計算方法が二分割プロセス1900である場合には、プロセス3300は、現在の分割ラインにより形成された2つのサブ領域に対する2つのネット・リストを修正するためにステップ3340において方法1900が返送した2つのネット・リストを使用する。次に、プロセスは、ステップ3320に戻り、他のランダム移動を選択する。
通常の当業者であれば、いくつかの実施形態の場合には、プロセス3300は、ステップ3345において計算したデルタ・コストの値だけに基づいて移動を保持するために、その決定に準拠しないことを理解することができるだろう。例えば、プロセス3300が分割プロセス2300を使用する場合には、プロセス3300は、いくつかの実施形態の場合には、また、プロセス2300の分割グリッドにより形成された各サブ領域の集中を定量化する、バランス・コストも計算する。これらの実施形態の場合には、プロセス3300は、このような移動がバランス・コストを増大する場合には、ステップ3345において計算したデルタ・コストを低減する移動を保持することはできない。
プロセスが、(ステップ3350において)デルタ・コストがゼロ以上であると判断した場合には、プロセスは、選択した移動が、配置コストを低減しないことに気がつく。それ故、プロセスは、(ステップ3370において)移動前のその元の座標(すなわち、ステップ3335の前のその座標)に戻すために、影響を受けた1つまたは複数のモジュールおよび/またはその対応するピンの座標を変更する。プロセスは、また、必要な場合には、その元の値に戻すために(すなわち、ステップ3340の前のネットに対して記憶したコスト・に戻すために)、識別した各ネットのコストを変更する。プロセス3300が、分割長さまたは予め表の形にした長さまたは遅延コストを使用する、遅延コスト計算プロセス2300または3200を使用する場合には、プロセスは、元の値に戻すために、識別した各ネットのコストを変更する必要はない。何故なら、これら実施形態の場合には、まず第一に、プロセス2300または3200はこれらのコストを修正しなかったからである。
次に、プロセスは、(ステップ3375において)無駄反復カウンタを1だけ増大する。次に、プロセスは、(ステップ3380において)無駄反復カウンタが予め定めた最大値に等しいかどうかを判断する。等しくない場合には、プロセスは、ステップ3320に戻り、他のランダム移動を選択する。等しい場合には、プロセスは、(ステップ3380において)予め指定された回数反復を行ったが配置スコアは改善されなかったことを知る。それ故、プロセスは、(ステップ3385において)現在の配置構成を指定するネット・リストを返送し、終了する。
通常の当業者であれば、いくつかの実施形態の場合には、プロセス3300は、ステップ3345において計算したデルタ・コストの値だけに基づいて移動を保持するために、その決定に準拠しないことを理解することができるだろう。例えば、プロセス3300が分割プロセス2300を使用する場合には、プロセス3300は、いくつかの実施形態の場合には、また、プロセス2300の分割グリッドにより形成された各サブ領域の集中を定量化する、バランス・コストも計算する。これらの実施形態の場合には、プロセス3300は、このような移動がバランス・コストを増大する場合には、ステップ3345において計算したデルタ・コストを低減する移動を保持することはできない。
プロセスが、(ステップ3350において)デルタ・コストがゼロ以上であると判断した場合には、プロセスは、選択した移動が、配置コストを低減しないことに気がつく。それ故、プロセスは、(ステップ3370において)移動前のその元の座標(すなわち、ステップ3335の前のその座標)に戻すために、影響を受けた1つまたは複数のモジュールおよび/またはその対応するピンの座標を変更する。プロセスは、また、必要な場合には、その元の値に戻すために(すなわち、ステップ3340の前のネットに対して記憶したコスト・に戻すために)、識別した各ネットのコストを変更する。プロセス3300が、分割長さまたは予め表の形にした長さまたは遅延コストを使用する、遅延コスト計算プロセス2300または3200を使用する場合には、プロセスは、元の値に戻すために、識別した各ネットのコストを変更する必要はない。何故なら、これら実施形態の場合には、まず第一に、プロセス2300または3200はこれらのコストを修正しなかったからである。
次に、プロセスは、(ステップ3375において)無駄反復カウンタを1だけ増大する。次に、プロセスは、(ステップ3380において)無駄反復カウンタが予め定めた最大値に等しいかどうかを判断する。等しくない場合には、プロセスは、ステップ3320に戻り、他のランダム移動を選択する。等しい場合には、プロセスは、(ステップ3380において)予め指定された回数反復を行ったが配置スコアは改善されなかったことを知る。それ故、プロセスは、(ステップ3385において)現在の配置構成を指定するネット・リストを返送し、終了する。
B.シミュレートした焼きなまし
シミュレートした焼きなましは、コスト計算機能により生成した配置スコアを改善するために、配置構成を反復して修正する最適化技術である。反復の度ごとに、この技術は、ある回路モジュールを移動し、2つのモジュールを交換し、または多数の関連するモジュールを移動するなどする。また、反復の度ごとに、この技術は移動をランダムに選択する。さらに、この技術は、計算したコストを悪くする移動を受け入れるが、反復の回数が増大するにつれて、もっと程度の悪い移動を許容する。
図34は、ローカル最適化プロセス3400の一例である。このプロセスは、最初に、(ステップ3405において)最初の配置構成を受信する。いくつかの実施形態の場合には、プロセスは、回路モジュールのリスト、これらのモジュールに対する最初の配置構成、およびこれらのモジュール間の相互接続を指定するネット・リストを受信することにより、最初の構成を受信する。
最初の配置構成を受信した後で、プロセス3400は、(ステップ3410において)第II節〜第VI節のところで説明した、上記コスト計算方法の中の1つのようなコスト計算方法を呼び出す。これに応じて、このコスト計算方法は、最初の配置構成のコスト(C)を計算し、それを返送する。
プロセス3400がコスト計算方法を呼び出すと、このプロセスは、この方法に対して、最初の配置構成を指定するネット・リスト(すなわち、レイアウト内のモジュールの位置を修正する前の、ICレイアウト内のすべてのネットを識別するネット・リスト)を供給する。
また、コスト計算方法が、上記二分割プロセス1900である場合には、プロセス3400は、プロセス1900を呼び出す前にプロセス1800を呼び出す。すでに説明したように、プロセス1800は、最適化プロセス3400により最適化中の現在のIC領域に対する分割ラインを定義する。プロセス3400は、プロセス1900から最初の配置構成のネット・カット集中コスト(C)を受信するために、集中計算プロセス1900に最初の構成のネット・リストと一緒にこの分割ラインを供給する。プロセス1900から、プロセス3400は、また、現在の分割ラインにより形成された2つの領域内のネットおよびピンを指定する2つのネット・リストを受信する。
ステップ3410において、最初の配置構成のコストを入手した後で、プロセスは、(ステップ3415において)無駄反復カウンタ(F)を1に設定する。以下にさらに詳細に説明するように、プロセスは、予め定めた数の反復を行ったが改善がみられなかったので、その動作を終了すべきかどうかを判断するためにカウンタを使用する。
ステップ3415において、プロセスは、また、焼きなまし「温度」Tおよび反復カウンタNを設定する。以下にさらに詳細に説明するように、焼きなまし温度は、プロセス3400が悪い移動を受け入れる可能性を決定する。反復カウンタは、プロセス3400が、悪い移動を次第に受け入れるの拒むように、時間の経過とともにこの温度を低減するために使用される。
シミュレートした焼きなましは、コスト計算機能により生成した配置スコアを改善するために、配置構成を反復して修正する最適化技術である。反復の度ごとに、この技術は、ある回路モジュールを移動し、2つのモジュールを交換し、または多数の関連するモジュールを移動するなどする。また、反復の度ごとに、この技術は移動をランダムに選択する。さらに、この技術は、計算したコストを悪くする移動を受け入れるが、反復の回数が増大するにつれて、もっと程度の悪い移動を許容する。
図34は、ローカル最適化プロセス3400の一例である。このプロセスは、最初に、(ステップ3405において)最初の配置構成を受信する。いくつかの実施形態の場合には、プロセスは、回路モジュールのリスト、これらのモジュールに対する最初の配置構成、およびこれらのモジュール間の相互接続を指定するネット・リストを受信することにより、最初の構成を受信する。
最初の配置構成を受信した後で、プロセス3400は、(ステップ3410において)第II節〜第VI節のところで説明した、上記コスト計算方法の中の1つのようなコスト計算方法を呼び出す。これに応じて、このコスト計算方法は、最初の配置構成のコスト(C)を計算し、それを返送する。
プロセス3400がコスト計算方法を呼び出すと、このプロセスは、この方法に対して、最初の配置構成を指定するネット・リスト(すなわち、レイアウト内のモジュールの位置を修正する前の、ICレイアウト内のすべてのネットを識別するネット・リスト)を供給する。
また、コスト計算方法が、上記二分割プロセス1900である場合には、プロセス3400は、プロセス1900を呼び出す前にプロセス1800を呼び出す。すでに説明したように、プロセス1800は、最適化プロセス3400により最適化中の現在のIC領域に対する分割ラインを定義する。プロセス3400は、プロセス1900から最初の配置構成のネット・カット集中コスト(C)を受信するために、集中計算プロセス1900に最初の構成のネット・リストと一緒にこの分割ラインを供給する。プロセス1900から、プロセス3400は、また、現在の分割ラインにより形成された2つの領域内のネットおよびピンを指定する2つのネット・リストを受信する。
ステップ3410において、最初の配置構成のコストを入手した後で、プロセスは、(ステップ3415において)無駄反復カウンタ(F)を1に設定する。以下にさらに詳細に説明するように、プロセスは、予め定めた数の反復を行ったが改善がみられなかったので、その動作を終了すべきかどうかを判断するためにカウンタを使用する。
ステップ3415において、プロセスは、また、焼きなまし「温度」Tおよび反復カウンタNを設定する。以下にさらに詳細に説明するように、焼きなまし温度は、プロセス3400が悪い移動を受け入れる可能性を決定する。反復カウンタは、プロセス3400が、悪い移動を次第に受け入れるの拒むように、時間の経過とともにこの温度を低減するために使用される。
次に、ステップ3420において、プロセスは、(1)ICレイアウト内の1つまたはそれ以上の回路モジュールの座標の修正を必要とするランダムな移動を選択し、(2)反復カウンタNを増大する。プロセス3400が、分割プロセス1900または2300を使用する場合には、ランダム移動は、分割ラインに対して1つまたはそれ以上の回路モジュールを再配置する。例えば、プロセス2300の場合には、ランダム移動は、回路モジュールに対して、あるスロットから別のスロットへの位置の変更を指定することができる。
次に、プロセスは、(ステップ3425において)このランダム移動の影響を受けたすべてのネットを識別する。ネットの定義方法により、これらのネットは、(1)その移動に対して選択した1つまたは複数の回路モジュールを含むネットであるか、(2)これらの回路モジュールのピンを含むネットである。
ステップ3430において、プロセスは、ステップ3425において識別したネットに対する現在のコストを計算する。すでに説明したように、コスト計算プロセス1000、1200、1400、1900、2300および3200は、各ネットに対するコストを記憶する。それ故、プロセス3400は、これらネットに対して記憶したコストの値を合計することにより、識別したネットに対する現在のコストを計算することができる。
選択したランダム移動により、プロセス3400は、(ステップ3435において)移動により影響を受けた各回路モジュールおよび/またはピンの座標を修正する。すなわち、ステップ3435において、プロセスは、ステップ3420において識別したランダムな位置に一致するように、影響を受けた1つのまたは複数の回路モジュール、および/またはその関連するピンの座標を修正することにより移動を行う。
その後で、プロセスは、コスト計算プロセスを呼び出し、このプロセスに、選択した移動により影響を受けている識別したネットを指定するネット・リストを供給する。このネット・リストは、選択した移動の後の識別したネットの構成を指定する。何故なら、プロセス3400が、ステップ3435において、影響を受けた回路モジュールおよび/またはピンの座標を修正したからである。コスト計算プロセスが二分割プロセス1900であるいくつかの実施形態の場合には、プロセス3400は、このプロセス1900に、識別したネットのリストと一緒に、最適化中の現在のIC領域に対する分割ラインを供給する。
次に、プロセスは、(ステップ3425において)このランダム移動の影響を受けたすべてのネットを識別する。ネットの定義方法により、これらのネットは、(1)その移動に対して選択した1つまたは複数の回路モジュールを含むネットであるか、(2)これらの回路モジュールのピンを含むネットである。
ステップ3430において、プロセスは、ステップ3425において識別したネットに対する現在のコストを計算する。すでに説明したように、コスト計算プロセス1000、1200、1400、1900、2300および3200は、各ネットに対するコストを記憶する。それ故、プロセス3400は、これらネットに対して記憶したコストの値を合計することにより、識別したネットに対する現在のコストを計算することができる。
選択したランダム移動により、プロセス3400は、(ステップ3435において)移動により影響を受けた各回路モジュールおよび/またはピンの座標を修正する。すなわち、ステップ3435において、プロセスは、ステップ3420において識別したランダムな位置に一致するように、影響を受けた1つのまたは複数の回路モジュール、および/またはその関連するピンの座標を修正することにより移動を行う。
その後で、プロセスは、コスト計算プロセスを呼び出し、このプロセスに、選択した移動により影響を受けている識別したネットを指定するネット・リストを供給する。このネット・リストは、選択した移動の後の識別したネットの構成を指定する。何故なら、プロセス3400が、ステップ3435において、影響を受けた回路モジュールおよび/またはピンの座標を修正したからである。コスト計算プロセスが二分割プロセス1900であるいくつかの実施形態の場合には、プロセス3400は、このプロセス1900に、識別したネットのリストと一緒に、最適化中の現在のIC領域に対する分割ラインを供給する。
ステップ3440における呼出しに応じて、コスト計算方法は、潜在的修正の後で識別したネットの構成に対するコスト(C)を計算し、返送する。コスト計算方法は、二分割プロセス1900である場合には、このプロセスは、また、分割ライン付近で識別したネットを分割し、この分割を反映している2つのネット・リストを返送する。
(ステップ3440において)潜在的な修正の後で識別したネットに対するコストを受信した後で、プロセスは、(ステップ3445において)潜在的修正を行う前に識別したネットに対するコスト(すなわち、ステップ3430において計算したコスト)から、潜在的修正を行った後の識別したネットに対するコスト(すなわち、ステップ3440において計算したコスト)を差し引くことによりデルタ・コストを生成する。
ステップ3450において、プロセスは、デルタ・コストが、ゼロより小さいかどうかを判断する。小さい場合には、選択した移動が配置コストを低減し、プロセスは移動を保持することを決定する。より詳細に説明すると、デルタ・コストがゼロより小さい場合には、プロセスは、(ステップ3455において)無駄反復カウンタFを1にリセットする。次に、プロセスは、(ステップ3460において)現在の配置構成(すなわち、選択した移動を行う配置構成)のコストを、前の配置構成(すなわち、選択した移動を行わない配置構成)のコストにデルタ・コストを加算したものに等しくなるように設定する。デルタ・コストは負数であり、そのため、全配置構成コストCは低減する。コスト計算方法が二分割プロセス1900である場合には、プロセス3400は、(ステップ3465において)現在の分割ラインにより形成された2つのサブ領域に対する、2つのネット・リストを修正するために、ステップ3440において、方法1900が返送した2つのネット・リストを使用する。
次に、プロセスは、(ステップ3470において)反復カウンタNが最大値になっているかどうかを判断する。最大値になっていない場合には、プロセスは、ステップ3420に戻り、他のランダム移動を選択する。最大値になっている場合には、プロセスは、焼きなまし温度を低減し、ステップ3475において反復カウンタを再設定し、次に、ステップ3420に戻り、他のランダム移動を選択する。
通常の当業者であれば、いくつかの実施形態の場合には、プロセス3400は、ステップ3345において計算したデルタ・コストの値だけに基づいて移動を保持するために、その決定に準拠しないことを理解することができるだろう。例えば、プロセス3400が、分割プロセス2300を使用する場合には、プロセス3400は、いくつかの実施形態の場合には、また、プロセス2300の分割グリッドにより形成された各サブ領域の集中を定量化する、バランス・コストも計算する。これらの実施形態の場合には、プロセス3400は、このような移動がバランス・コストを増大する場合には、ステップ3345において計算したデルタ・コストを低減する移動を保持することはできない。
プロセスが、(ステップ3450において)デルタ・コストがゼロ以上であると判断した場合には、プロセスは、(ステップ3480において)確率を0と1の間と計算する。いくつかの実施形態の場合には、確率を計算する式は、e−(Delta)/Tに等しい。この場合、デルタは、ステップ3445において計算した値であり、Tは焼きなまし温度である。
(ステップ3440において)潜在的な修正の後で識別したネットに対するコストを受信した後で、プロセスは、(ステップ3445において)潜在的修正を行う前に識別したネットに対するコスト(すなわち、ステップ3430において計算したコスト)から、潜在的修正を行った後の識別したネットに対するコスト(すなわち、ステップ3440において計算したコスト)を差し引くことによりデルタ・コストを生成する。
ステップ3450において、プロセスは、デルタ・コストが、ゼロより小さいかどうかを判断する。小さい場合には、選択した移動が配置コストを低減し、プロセスは移動を保持することを決定する。より詳細に説明すると、デルタ・コストがゼロより小さい場合には、プロセスは、(ステップ3455において)無駄反復カウンタFを1にリセットする。次に、プロセスは、(ステップ3460において)現在の配置構成(すなわち、選択した移動を行う配置構成)のコストを、前の配置構成(すなわち、選択した移動を行わない配置構成)のコストにデルタ・コストを加算したものに等しくなるように設定する。デルタ・コストは負数であり、そのため、全配置構成コストCは低減する。コスト計算方法が二分割プロセス1900である場合には、プロセス3400は、(ステップ3465において)現在の分割ラインにより形成された2つのサブ領域に対する、2つのネット・リストを修正するために、ステップ3440において、方法1900が返送した2つのネット・リストを使用する。
次に、プロセスは、(ステップ3470において)反復カウンタNが最大値になっているかどうかを判断する。最大値になっていない場合には、プロセスは、ステップ3420に戻り、他のランダム移動を選択する。最大値になっている場合には、プロセスは、焼きなまし温度を低減し、ステップ3475において反復カウンタを再設定し、次に、ステップ3420に戻り、他のランダム移動を選択する。
通常の当業者であれば、いくつかの実施形態の場合には、プロセス3400は、ステップ3345において計算したデルタ・コストの値だけに基づいて移動を保持するために、その決定に準拠しないことを理解することができるだろう。例えば、プロセス3400が、分割プロセス2300を使用する場合には、プロセス3400は、いくつかの実施形態の場合には、また、プロセス2300の分割グリッドにより形成された各サブ領域の集中を定量化する、バランス・コストも計算する。これらの実施形態の場合には、プロセス3400は、このような移動がバランス・コストを増大する場合には、ステップ3345において計算したデルタ・コストを低減する移動を保持することはできない。
プロセスが、(ステップ3450において)デルタ・コストがゼロ以上であると判断した場合には、プロセスは、(ステップ3480において)確率を0と1の間と計算する。いくつかの実施形態の場合には、確率を計算する式は、e−(Delta)/Tに等しい。この場合、デルタは、ステップ3445において計算した値であり、Tは焼きなまし温度である。
次に、プロセスは、(ステップ3482において)0と1の間の乱数を取り上げる。その後で、ステップ3484において、プロセスは、乱数が計算した確率よりも小さいかどうかを判断する。小さい場合には、プロセスは、移動することに決定し、すでに説明したように、移動に関連する他の動作を行うためにステップ3460に進む。
選択した乱数が計算した確率より小さくない場合には、プロセスは、(ステップ3486において)移動の前のその元の座標(すなわち、ステップ3435より前のその座標)に戻すために、影響を受けた1つまたは複数の回路モジュールおよび/またはその対応するピンの座標を変更する。ステップに3486おいて、プロセスは、また、必要な場合には、その元の値に戻すために(すなわち、ステップ3440の前のネットに対して記憶したコストに戻すために)、識別した各ネットのコストを変更する。
プロセス3400が、分割長さまたは予め表の形にした長さまたは遅延コストを使用する遅延コスト計算プロセス2300または3200を使用する場合には、プロセスは、元の値に戻すために、識別した各ネットのコストを変更する必要はない。何故なら、これらの実施形態の場合には、まず第一に、プロセス2300または3200は、これらのコストを修正しなかったからである。
次に、プロセスは、(ステップ3488において)無駄反復カウンタを1だけ増大する。その後で、プロセスは、(ステップ3490において)無駄反復カウンタが予め定めた最大値に等しいかどうかを判断する。等しくない場合には、プロセスはすでに説明したステップ3470に戻る。等しい場合には、プロセスは、(ステップ3490において)予め指定された回数反復を行ったが配置スコアは改善されなかったことを知る。それ故、プロセスは、(ステップ3492において)現在の配置構成を指定するネット・リストを返送し、終了する。
選択した乱数が計算した確率より小さくない場合には、プロセスは、(ステップ3486において)移動の前のその元の座標(すなわち、ステップ3435より前のその座標)に戻すために、影響を受けた1つまたは複数の回路モジュールおよび/またはその対応するピンの座標を変更する。ステップに3486おいて、プロセスは、また、必要な場合には、その元の値に戻すために(すなわち、ステップ3440の前のネットに対して記憶したコストに戻すために)、識別した各ネットのコストを変更する。
プロセス3400が、分割長さまたは予め表の形にした長さまたは遅延コストを使用する遅延コスト計算プロセス2300または3200を使用する場合には、プロセスは、元の値に戻すために、識別した各ネットのコストを変更する必要はない。何故なら、これらの実施形態の場合には、まず第一に、プロセス2300または3200は、これらのコストを修正しなかったからである。
次に、プロセスは、(ステップ3488において)無駄反復カウンタを1だけ増大する。その後で、プロセスは、(ステップ3490において)無駄反復カウンタが予め定めた最大値に等しいかどうかを判断する。等しくない場合には、プロセスはすでに説明したステップ3470に戻る。等しい場合には、プロセスは、(ステップ3490において)予め指定された回数反復を行ったが配置スコアは改善されなかったことを知る。それ故、プロセスは、(ステップ3492において)現在の配置構成を指定するネット・リストを返送し、終了する。
C.KLFM
KLFMは、コスト計算機能により生成した配置スコアを改善するために、配置構成を反復して修正する最適化技術である。反復の度ごとに、この技術は、ある回路モジュールを移動し、2つのモジュールを交換し、または多数の関連するモジュールを移動するなどする。また、ローカル最適化およびシミュレートした焼きなましはとは異なり、KLFMは、移動をランダムに選択しない。代わりに、反復の度に、KLFMは、行うことができるすべての可能な移動より優れた最善の移動を選択する。KLFMは、配置コストをもっと悪くする移動を行う。次に、全スイープにおいて、KLFMは、遭遇する最善の配置構成を識別し、その最善の配置構成が、元の配置構成より優れたコストを持っている場合には、KLFMは、改善した解によりスタートする。
図35は、KLFMプロセス3500の一例である。このプロセスは、最初に、(ステップ3505において)最初の配置構成を受信する。いくつかの実施形態の場合には、プロセスは、回路モジュールのリスト、これらのモジュールに対する最初の配置構成、およびこれらのモジュール間の相互接続を指定するネット・リストを受信することにより、最初の構成を受信する。
最初の配置構成を受信した後で、プロセス3500は、(ステップ3510において)第II節〜第VI節のところで説明した、上記コスト計算方法の中の1つのようなコスト計算方法を呼び出す。これに応じて、このコスト計算方法は、最初の配置構成のコスト(C)を計算し、それを返送する。
プロセス3500がコスト計算方法を呼び出すと、このプロセスは、この方法、に対して、最初の配置構成を指定するネット・リスト(すなわち、レイアウト内のモジュールの位置を修正する前の、ICレイアウト内のすべてのネットを識別するネット・リスト)を供給する。
また、コスト計算方法が、上記二分割プロセス1900である場合には、プロセス3500は、プロセス1900を呼び出す前にプロセス1800を呼び出す。すでに説明したように、プロセス1800は、最適化プロセス3500により最適化中の現在のIC領域に対する分割ラインを定義する。プロセス3500は、プロセス1900から、最初の配置構成のネット・カット集中コスト(C)を受信するために、集中計算プロセス1900に、最初の構成のネット・リストと一緒にこの分割ラインを供給する。プロセス1900から、プロセス3500は、また、現在の分割ラインにより形成された2つの領域内のネットおよびピンを指定する2つのネット・リストを受信する。
ステップ3510において、最初の配置構成のコストを入手した後で、プロセスは、(ステップ3515において)フラグ(F)を偽に設定する。以下にさらに詳細に説明するように、プロセスは、移動の中のどれかが配置構成スコアを改善したかどうかを判断するために、多数の移動を行った後でこのフラグを使用する。ステップ3515において、プロセスは、また、(1)最初の配置構成を、現在および最善の配置構成として識別し、(2)現在および最善の配置構成のコストを、最初の構成のコストに初期化する。
KLFMは、コスト計算機能により生成した配置スコアを改善するために、配置構成を反復して修正する最適化技術である。反復の度ごとに、この技術は、ある回路モジュールを移動し、2つのモジュールを交換し、または多数の関連するモジュールを移動するなどする。また、ローカル最適化およびシミュレートした焼きなましはとは異なり、KLFMは、移動をランダムに選択しない。代わりに、反復の度に、KLFMは、行うことができるすべての可能な移動より優れた最善の移動を選択する。KLFMは、配置コストをもっと悪くする移動を行う。次に、全スイープにおいて、KLFMは、遭遇する最善の配置構成を識別し、その最善の配置構成が、元の配置構成より優れたコストを持っている場合には、KLFMは、改善した解によりスタートする。
図35は、KLFMプロセス3500の一例である。このプロセスは、最初に、(ステップ3505において)最初の配置構成を受信する。いくつかの実施形態の場合には、プロセスは、回路モジュールのリスト、これらのモジュールに対する最初の配置構成、およびこれらのモジュール間の相互接続を指定するネット・リストを受信することにより、最初の構成を受信する。
最初の配置構成を受信した後で、プロセス3500は、(ステップ3510において)第II節〜第VI節のところで説明した、上記コスト計算方法の中の1つのようなコスト計算方法を呼び出す。これに応じて、このコスト計算方法は、最初の配置構成のコスト(C)を計算し、それを返送する。
プロセス3500がコスト計算方法を呼び出すと、このプロセスは、この方法、に対して、最初の配置構成を指定するネット・リスト(すなわち、レイアウト内のモジュールの位置を修正する前の、ICレイアウト内のすべてのネットを識別するネット・リスト)を供給する。
また、コスト計算方法が、上記二分割プロセス1900である場合には、プロセス3500は、プロセス1900を呼び出す前にプロセス1800を呼び出す。すでに説明したように、プロセス1800は、最適化プロセス3500により最適化中の現在のIC領域に対する分割ラインを定義する。プロセス3500は、プロセス1900から、最初の配置構成のネット・カット集中コスト(C)を受信するために、集中計算プロセス1900に、最初の構成のネット・リストと一緒にこの分割ラインを供給する。プロセス1900から、プロセス3500は、また、現在の分割ラインにより形成された2つの領域内のネットおよびピンを指定する2つのネット・リストを受信する。
ステップ3510において、最初の配置構成のコストを入手した後で、プロセスは、(ステップ3515において)フラグ(F)を偽に設定する。以下にさらに詳細に説明するように、プロセスは、移動の中のどれかが配置構成スコアを改善したかどうかを判断するために、多数の移動を行った後でこのフラグを使用する。ステップ3515において、プロセスは、また、(1)最初の配置構成を、現在および最善の配置構成として識別し、(2)現在および最善の配置構成のコストを、最初の構成のコストに初期化する。
次に、プロセスは、(ステップ3520において)現在の配置構成(PCurrent)内のすべての移動の中の組Mを定義する。プロセス3500が、分割プロセス1900または2300を使用する場合には、各移動は、分割ラインに対して1つまたはそれ以上の回路モジュールを再配置する。例えば、プロセス2300の場合には、移動は、回路モジュールに対して、あるスロットから別のスロットへの位置の変更を指定することができる。
M内の各移動の場合には、プロセスは、(ステップ3525において)移動後の配置構成のコスト(C)を計算する。各移動のコストを計算するために、プロセスは、下記の六つの動作を行う。第1の動作として、プロセスは、(1)移動により影響を受けたすべてのネットを識別し、(2)これらのネットに対して記憶した値を合計することにより、識別したネットに対する現在のコストを計算する。第2の動作として、プロセスは、移動により影響を受けた各回路素子の座標を移動に従って修正する。
第3の動作として、プロセスは、コスト計算プロセスに、選択した移動により影響を受ける識別したネットを指定するネット・リストを供給する。コスト計算プロセスが二分割プロセス1900である場合には、プロセス3500は、コスト計算プロセスに、現在のIC領域に対する分割ラインを供給する。コスト計算プロセスから、プロセス3500は、潜在的移動後に識別したネットのコストを受信する。コスト計算方法が二分割プロセス1900である場合には、プロセス3500は、また、プロセス1900により、識別したネット・リストの分割を表す2つのネット・リストを受信する。
第4の動作として、潜在的修正の後で識別したネットに対するコストを受信した後で、プロセスは、潜在的修正を行う前に識別したネットに対するコストから、潜在的修正を行った後の識別したネットに対するコストを差し引くことにより、デルタ・コストを生成する。
第5の動作として、プロセスは、計算したデルタ・コストを、現在の配置構成のコストに加算することにより、移動のコストを生成する。第6の動作として、プロセスは、(1)移動前のその元の座標に戻すために、影響を受けた回路素子(モジュールおよび/またはピン)の座標を変更し、(2)必要な場合には、移動前のその元の値に戻すために、識別した各ネットのコストを変更する。すでに説明したように、プロセス3500が、分割長さ、または予め表の形にした長さ、または遅延コストを使用する遅延コスト計算プロセス2300または3200を使用する場合には、プロセスは、元の値に戻すために、識別した各ネットのコストを変更する必要はない。さらに、プロセス3500が、分割プロセス2300を使用する場合には、プロセス3500は、また、プロセス2300の分割グリッドにより形成された各サブ領域の集中を定量化する、バランス・コストも計算するために他のプロセスを使用することができる。これらの実施形態の場合には、プロセス3500は、全コストを入手するために、計算した長さおよびバランス・コストを結合する。
M内の各移動の場合には、プロセスは、(ステップ3525において)移動後の配置構成のコスト(C)を計算する。各移動のコストを計算するために、プロセスは、下記の六つの動作を行う。第1の動作として、プロセスは、(1)移動により影響を受けたすべてのネットを識別し、(2)これらのネットに対して記憶した値を合計することにより、識別したネットに対する現在のコストを計算する。第2の動作として、プロセスは、移動により影響を受けた各回路素子の座標を移動に従って修正する。
第3の動作として、プロセスは、コスト計算プロセスに、選択した移動により影響を受ける識別したネットを指定するネット・リストを供給する。コスト計算プロセスが二分割プロセス1900である場合には、プロセス3500は、コスト計算プロセスに、現在のIC領域に対する分割ラインを供給する。コスト計算プロセスから、プロセス3500は、潜在的移動後に識別したネットのコストを受信する。コスト計算方法が二分割プロセス1900である場合には、プロセス3500は、また、プロセス1900により、識別したネット・リストの分割を表す2つのネット・リストを受信する。
第4の動作として、潜在的修正の後で識別したネットに対するコストを受信した後で、プロセスは、潜在的修正を行う前に識別したネットに対するコストから、潜在的修正を行った後の識別したネットに対するコストを差し引くことにより、デルタ・コストを生成する。
第5の動作として、プロセスは、計算したデルタ・コストを、現在の配置構成のコストに加算することにより、移動のコストを生成する。第6の動作として、プロセスは、(1)移動前のその元の座標に戻すために、影響を受けた回路素子(モジュールおよび/またはピン)の座標を変更し、(2)必要な場合には、移動前のその元の値に戻すために、識別した各ネットのコストを変更する。すでに説明したように、プロセス3500が、分割長さ、または予め表の形にした長さ、または遅延コストを使用する遅延コスト計算プロセス2300または3200を使用する場合には、プロセスは、元の値に戻すために、識別した各ネットのコストを変更する必要はない。さらに、プロセス3500が、分割プロセス2300を使用する場合には、プロセス3500は、また、プロセス2300の分割グリッドにより形成された各サブ領域の集中を定量化する、バランス・コストも計算するために他のプロセスを使用することができる。これらの実施形態の場合には、プロセス3500は、全コストを入手するために、計算した長さおよびバランス・コストを結合する。
ステップ3530において、プロセスは、新しい現在の配置構成PCurrentを入手するために、最も安い配置構成コストで移動を行う。この段階で、プロセスは、また、可能な移動の組Mから選択した移動を除去する。プロセスは、また、現在の配置構成のコストを移動後の構成のコストに等しくなるように設定する。また、コスト計算方法が二分割方法1900である場合には、プロセスは、(ステップ3530において)移動のためにステップ3525において、この方法により返送された2つのネット・リストを使用して、現在の分割ラインにより形成された2つのサブ領域に対する2つのネット・リストを修正する。
その後で、プロセスは、(ステップ3535において)現在の配置構成(すなわち、ステップ3530において入手した構成)が、遭遇した最も安い配置構成コストより安いかどうかを判断する。安くない場合には、プロセスは、ステップ3545に進むが、このステップについては以下に説明する。安い場合には、プロセスは、(ステップ3540において)(1)最善の配置構成は、現在の配置構成であると定義し、(2)最善の配置構成のコストを、現在の配置構成のコストに設定し、(3)行った移動の中の少なくとも1つが、配置コストを改善したことを示すために、フラグ(F)を真に設定する。次に、プロセスはステップ3545に進む。
ステップ3545において、可能な移動の組Mが空であるかどうかを判断する。
空でない場合には、プロセスは、ステップ3525に戻り、この組内の残りの移動に対する移動後の配置構成のコスト(C)を計算する。プロセスは、移動に関連するコストを再計算する。何故なら、前の移動が、残りの移動に対する配置構成コストに影響を与えたかも知れないからである。
プロセスが、(ステップ3545において)組Mが空であると判断した場合には、プロセスは、ステップ3520において定義した組内のすべての移動を行ったと判断する。それ故、プロセスは、(ステップ3550において)フラグ(F)が真に設定されているかを判断することにより、行った移動の中の1つが配置コストを改善したと判断する。
フラグが真である場合には、プロセスは、(ステップ3555において)(1)現在の配置構成を、移動を通しての最後のスイープ中に識別した最善の配置構成に等しく設定し、(2)現在の配置構成のコストが最善の配置構成のコストに等しいと定義し、(3)フラグ(F)を真に設定する。その後で、プロセスは、ステップ3520に戻り、この構成を改善することができるかどうかを判断するために、現在の配置構成を反復して実行する。
プロセスは、(ステップ3550において)フラグが偽であると判断した場合には、プロセスは、(ステップ3560において)最後の配置構成として識別した最善の配置構成に戻る。
その後で、プロセスは、(ステップ3535において)現在の配置構成(すなわち、ステップ3530において入手した構成)が、遭遇した最も安い配置構成コストより安いかどうかを判断する。安くない場合には、プロセスは、ステップ3545に進むが、このステップについては以下に説明する。安い場合には、プロセスは、(ステップ3540において)(1)最善の配置構成は、現在の配置構成であると定義し、(2)最善の配置構成のコストを、現在の配置構成のコストに設定し、(3)行った移動の中の少なくとも1つが、配置コストを改善したことを示すために、フラグ(F)を真に設定する。次に、プロセスはステップ3545に進む。
ステップ3545において、可能な移動の組Mが空であるかどうかを判断する。
空でない場合には、プロセスは、ステップ3525に戻り、この組内の残りの移動に対する移動後の配置構成のコスト(C)を計算する。プロセスは、移動に関連するコストを再計算する。何故なら、前の移動が、残りの移動に対する配置構成コストに影響を与えたかも知れないからである。
プロセスが、(ステップ3545において)組Mが空であると判断した場合には、プロセスは、ステップ3520において定義した組内のすべての移動を行ったと判断する。それ故、プロセスは、(ステップ3550において)フラグ(F)が真に設定されているかを判断することにより、行った移動の中の1つが配置コストを改善したと判断する。
フラグが真である場合には、プロセスは、(ステップ3555において)(1)現在の配置構成を、移動を通しての最後のスイープ中に識別した最善の配置構成に等しく設定し、(2)現在の配置構成のコストが最善の配置構成のコストに等しいと定義し、(3)フラグ(F)を真に設定する。その後で、プロセスは、ステップ3520に戻り、この構成を改善することができるかどうかを判断するために、現在の配置構成を反復して実行する。
プロセスは、(ステップ3550において)フラグが偽であると判断した場合には、プロセスは、(ステップ3560において)最後の配置構成として識別した最善の配置構成に戻る。
VIII.コンピュータ・システム
図36は、本発明のある実施形態を実行するコンピュータ・システムである。コンピュータ・システム3600は、バス3605、プロセッサ3610、システム・メモリ3615、読出し専用メモリ3620、永久記憶デバイス3625、入力装置3630、および出力装置3635を含む。
バス3605は、集合的にすべてのシステム、周辺機器、およびコンピュータ・システム3600の多数の内部デバイスを、通信できるように接続しているチップセット・バスを表す。例えば、バス3605は、プロセッサ3610を、読出し専用メモリ3620、システム・メモリ3615、および永久記憶デバイス3625に通信できるように接続している。
これらの種々のメモリ・ユニットから、プロセッサ3610は、本発明のプロセスを実行するために、実行するための命令、処理するためのデータを検索する。読出し専用メモリ(ROM)3620は、コンピュータ・システムのプロセッサ3610および他のモジュールが必要とする静的データおよび命令を記憶する。一方、永久記憶デバイス3625は、読出し/書込みメモリ・デバイスである。このデバイスは、コンピュータ・システム3600の電源がオフになった場合でも、命令およびデータを記憶している不揮発性メモリ・ユニットである。本発明のいくつかの実施形態は、永久記憶デバイス3625として、(磁気または光学的ディスクおよびその対応するディスク・ドライブのような)大量記憶デバイスを使用する。他の実施形態は、永久記憶デバイスとして、(フロッピー(登録商標)・ディスクまたは、zip(登録商標)ディスク、およびその対応するディスク・ドライブのような)取外し可能な記憶デバイスを使用する。
永久記憶デバイス3625のように、システム・メモリ3615は、読出し/書込みメモリ・デバイスである。しかし、記憶デバイス3625とは異なり、システム・メモリは、ランダム・アクセス・メモリのような、揮発性の読出し/書込みメモリである。システム・メモリは、実行時にプロセッサが必要とする命令およびデータの中のいくつかを記憶する。いくつかの実施形態の場合には、本発明のプロセスは、システム・メモリ3615、永久記憶デバイス3625および/または読出し専用メモリ・3620に記憶されている。
バス105は、また、入力装置3630および出力装置3635に接続している。入力装置により、ユーザは、コンピュータ・システムに対して情報を送受信し、コンピュータ・システムへのコマンドを選択することができる。入力装置3630は、英数字キーボードおよびカーソル・コントローラを含む。
出力装置3635は、コンピュータ・システムが生成した映像を表示する。例えば、これらのデバイスは、IC設計レイアウトを表示する。出力装置は、プリンタおよび陰極線管(CRT)または、液晶ディスプレイ(LCD)のような表示デバイスを含む。
最後に、図36に示すように、バス3605は、また、ネットワーク・アダプタ(図示せず)を通して、コンピュータ3600をネットワーク3665に接続する。このようにして、コンピュータは、ローカル・エリア・ネットワーク(「LAN」)、ワイド・エリア・ネットワーク(「WAN」)またはイントラネットのような)コンピュータ・ネットワーク、または(インターネットのような)ネットワークの一部となることもできる。
コンピュータ・システム3600のいくつかまたはすべての構成部材は、本発明と一緒に使用することができる。しかし、通常の当業者であれば、任意の他のシステム構成も、本発明と一緒に使用することができることを理解することができるだろう。
図36は、本発明のある実施形態を実行するコンピュータ・システムである。コンピュータ・システム3600は、バス3605、プロセッサ3610、システム・メモリ3615、読出し専用メモリ3620、永久記憶デバイス3625、入力装置3630、および出力装置3635を含む。
バス3605は、集合的にすべてのシステム、周辺機器、およびコンピュータ・システム3600の多数の内部デバイスを、通信できるように接続しているチップセット・バスを表す。例えば、バス3605は、プロセッサ3610を、読出し専用メモリ3620、システム・メモリ3615、および永久記憶デバイス3625に通信できるように接続している。
これらの種々のメモリ・ユニットから、プロセッサ3610は、本発明のプロセスを実行するために、実行するための命令、処理するためのデータを検索する。読出し専用メモリ(ROM)3620は、コンピュータ・システムのプロセッサ3610および他のモジュールが必要とする静的データおよび命令を記憶する。一方、永久記憶デバイス3625は、読出し/書込みメモリ・デバイスである。このデバイスは、コンピュータ・システム3600の電源がオフになった場合でも、命令およびデータを記憶している不揮発性メモリ・ユニットである。本発明のいくつかの実施形態は、永久記憶デバイス3625として、(磁気または光学的ディスクおよびその対応するディスク・ドライブのような)大量記憶デバイスを使用する。他の実施形態は、永久記憶デバイスとして、(フロッピー(登録商標)・ディスクまたは、zip(登録商標)ディスク、およびその対応するディスク・ドライブのような)取外し可能な記憶デバイスを使用する。
永久記憶デバイス3625のように、システム・メモリ3615は、読出し/書込みメモリ・デバイスである。しかし、記憶デバイス3625とは異なり、システム・メモリは、ランダム・アクセス・メモリのような、揮発性の読出し/書込みメモリである。システム・メモリは、実行時にプロセッサが必要とする命令およびデータの中のいくつかを記憶する。いくつかの実施形態の場合には、本発明のプロセスは、システム・メモリ3615、永久記憶デバイス3625および/または読出し専用メモリ・3620に記憶されている。
バス105は、また、入力装置3630および出力装置3635に接続している。入力装置により、ユーザは、コンピュータ・システムに対して情報を送受信し、コンピュータ・システムへのコマンドを選択することができる。入力装置3630は、英数字キーボードおよびカーソル・コントローラを含む。
出力装置3635は、コンピュータ・システムが生成した映像を表示する。例えば、これらのデバイスは、IC設計レイアウトを表示する。出力装置は、プリンタおよび陰極線管(CRT)または、液晶ディスプレイ(LCD)のような表示デバイスを含む。
最後に、図36に示すように、バス3605は、また、ネットワーク・アダプタ(図示せず)を通して、コンピュータ3600をネットワーク3665に接続する。このようにして、コンピュータは、ローカル・エリア・ネットワーク(「LAN」)、ワイド・エリア・ネットワーク(「WAN」)またはイントラネットのような)コンピュータ・ネットワーク、または(インターネットのような)ネットワークの一部となることもできる。
コンピュータ・システム3600のいくつかまたはすべての構成部材は、本発明と一緒に使用することができる。しかし、通常の当業者であれば、任意の他のシステム構成も、本発明と一緒に使用することができることを理解することができるだろう。
IX.利点
配置中、対角線配線、水平配線、および垂直配線を要因として考慮に入れる本発明の実施形態は、このような配線をネットをルーティングするために使用した場合、ネットをよりよく配置することができる。ルータが、対角線配線、水平配線、および垂直配線を使用するが、配置装置が、マンハッタン配線に対してだけ最適化されている場合には、配置装置は、ICレイアウト内にネットをうまく配置できない。より詳細に説明すると、これらのような状況においては、配置装置は、対角線の位置を無視する傾向がある。何故なら、配置装置が、特定の回路素子に関連するすべての回路素子を、特定の回路素子の直接上下に、または左右に設置する傾向があるからである。
一方、配置装置が、対角線配線、水平配線、および垂直配線に対して最適化されている場合には、このような配置装置は、傾斜角度が少ないので対角線位置を無視することはない。それ故、このような配置装置は、関連する回路素子を相互に、水平位置、垂直位置および対角線位置内に配置する。それにより、関連する回路素子をもっと均等に配布することができる。
すなわち、水平配線、垂直配線および対角線配線に最適化されている配置装置は、同じコストで、もっと多くの場所に回路モジュールを配置することができる。この機能により、回路モジュールを設置するために、もっと多くの場所が使用できるようになり、それによりワイヤの長さが短くなる。
多数の詳細な点を参照しながら本発明を説明してきたが、通常の当業者であれば、本発明を、本発明の精神から逸脱することなしに他の特定の形で実行することができることを理解することができるだろう。例えば、上記のワイヤ長さ計算プロセスは、各ネットのワイヤ長さコストを合計することにより、その全コストを計算するが、他の実施形態は、異なる方法でネットのワイヤ長さコストを結合することにより、全ワイヤ長さコストを計算することができる(例えば、他の実施形態は、その計算したネットのワイヤ長さコストを掛け合わせることができる)。
また、潜在的対角線縁部を含む種々の接続グラフのワイヤ長さの識別を説明するためだけに、いくつかの実施形態について説明した。通常の当業者であれば、他の実施形態もこのような接続グラフの他の属性を識別することができることを理解することができるだろう。例えば、いくつかの実施形態は、各グラフの曲がりの数(すなわち、配線方向の変化の数)を識別することができる。それ故、通常の当業者であれば、本発明が、上記の例示としての詳細な説明に制限されるのではなく、添付の特許請求の範囲により定義されることを理解することができるだろう。
配置中、対角線配線、水平配線、および垂直配線を要因として考慮に入れる本発明の実施形態は、このような配線をネットをルーティングするために使用した場合、ネットをよりよく配置することができる。ルータが、対角線配線、水平配線、および垂直配線を使用するが、配置装置が、マンハッタン配線に対してだけ最適化されている場合には、配置装置は、ICレイアウト内にネットをうまく配置できない。より詳細に説明すると、これらのような状況においては、配置装置は、対角線の位置を無視する傾向がある。何故なら、配置装置が、特定の回路素子に関連するすべての回路素子を、特定の回路素子の直接上下に、または左右に設置する傾向があるからである。
一方、配置装置が、対角線配線、水平配線、および垂直配線に対して最適化されている場合には、このような配置装置は、傾斜角度が少ないので対角線位置を無視することはない。それ故、このような配置装置は、関連する回路素子を相互に、水平位置、垂直位置および対角線位置内に配置する。それにより、関連する回路素子をもっと均等に配布することができる。
すなわち、水平配線、垂直配線および対角線配線に最適化されている配置装置は、同じコストで、もっと多くの場所に回路モジュールを配置することができる。この機能により、回路モジュールを設置するために、もっと多くの場所が使用できるようになり、それによりワイヤの長さが短くなる。
多数の詳細な点を参照しながら本発明を説明してきたが、通常の当業者であれば、本発明を、本発明の精神から逸脱することなしに他の特定の形で実行することができることを理解することができるだろう。例えば、上記のワイヤ長さ計算プロセスは、各ネットのワイヤ長さコストを合計することにより、その全コストを計算するが、他の実施形態は、異なる方法でネットのワイヤ長さコストを結合することにより、全ワイヤ長さコストを計算することができる(例えば、他の実施形態は、その計算したネットのワイヤ長さコストを掛け合わせることができる)。
また、潜在的対角線縁部を含む種々の接続グラフのワイヤ長さの識別を説明するためだけに、いくつかの実施形態について説明した。通常の当業者であれば、他の実施形態もこのような接続グラフの他の属性を識別することができることを理解することができるだろう。例えば、いくつかの実施形態は、各グラフの曲がりの数(すなわち、配線方向の変化の数)を識別することができる。それ故、通常の当業者であれば、本発明が、上記の例示としての詳細な説明に制限されるのではなく、添付の特許請求の範囲により定義されることを理解することができるだろう。
105,110,115,120,125 回路モジュール
130,135,140,145,150,155,160 ピン
165,170,175,180 相互接続ライン
205,220,225,230,235,240,245 垂直分割ライン
605 シュタイナーツリー 610 シュタイナー点
805,810,815 マンハッタン層 820,825 八角対角線層
905,910 セグメント 920 対角線カット
1305 シュタイナーツリー 1335,1345,1360 ノード
2410,2415,2420,2425,2430 回路モジュール
3605 バス 3610 プロセッサー 3625 永久記憶デバイス
3630 入力装置 3635 出力装置
130,135,140,145,150,155,160 ピン
165,170,175,180 相互接続ライン
205,220,225,230,235,240,245 垂直分割ライン
605 シュタイナーツリー 610 シュタイナー点
805,810,815 マンハッタン層 820,825 八角対角線層
905,910 セグメント 920 対角線カット
1305 シュタイナーツリー 1335,1345,1360 ノード
2410,2415,2420,2425,2430 回路モジュール
3605 バス 3610 プロセッサー 3625 永久記憶デバイス
3630 入力装置 3635 出力装置
Claims (89)
- 回路レイアウトの領域内に回路モジュールを設置するための方法であって、配置構成のコストを測定するために対角線を使用するステップを含む方法。
- 配置コストを測定するために前記対角線を使用するステップが、回路レイアウト領域内の集中を測定するために対角線分割ラインを使用するステップを含む、請求項1に記載の方法。
- 一組のネットが、前記回路レイアウト領域内の一組の回路素子間の相互接続を表し、各ネットが一組の回路素子を有し、配置コストを測定するために前記対角線を使用するステップが、
a)前記回路レイアウトの領域を2つのサブ領域に分割するために対角線分割ラインを使用するステップと、
b)前記対角線分割ラインにより生成された前記両方のサブ領域内に回路素子を有するネットの数を測定するステップとを含む、請求項1に記載の方法。 - 前記回路レイアウト領域が多数の回路素子を有し、一組の回路素子が1つのネットを形成し、配置コストを測定するために前記対角線を使用するステップが、前記ネットの前記回路素子を接続するのに必要な一組の相互接続ラインの長さの推定値を計算するステップを含み、前記計算が、少なくともその一部が対角線である少なくとも第1のラインの長さを測定する、請求項1に記載の方法。
- 前記推定値を計算するステップが、
a)前記ネットのすべての前記回路素子を囲む囲みボックスを形成するステップと、
b)前記囲みボックスの属性を測定するために前記第1のラインを使用するステップとを含む、請求項4に記載の方法。 - 前記属性が、前記囲みボックスの2つの対向する隅間の距離であり、前記第1のラインが前記距離を通る、請求項5に記載の方法。
- 前記推定値を計算するステップが、前記ネットの前記回路素子を接続するための相互接続ラインのトポロジーをモデル化する接続グラフを形成するステップを含み、前記接続グラフが一組の縁部を有し、少なくとも第1の縁部が少なくともその一部が対角線である、請求項4に記載の方法。
- 前記推定値を計算するステップが、前記グラフの前記縁部の長さを計算するステップをさらに含む、請求項7に記載の方法。
- 各縁部が、2つの回路素子を接続し、2つの回路素子を接続している前記各縁部の長さを計算するステップが、
a)囲みボックスの2つの隅である前記2つの回路素子を含む、長さLの長い辺と長さSの短い辺を有する前記囲みボックスを形成するステップと、
b)式、D=[L−{S(cosA/sinA)}]+S/sinAにより、前記囲みボックスの前記2つの隅間の前記距離(D)を計算するステップとを含み、上式中、Aは前記レイアウトの1つの辺に対する0度または90度以外の角度を表す、請求項8に記載の方法。 - 前記配置コストが遅延コストであり、前記方法が、前記ネットの前記回路素子を接続するのに必要な相互接続ラインの長さの前記推定値から前記遅延コストを計算するステップをさらに含む、請求項4に記載の方法。
- 前記回路レイアウト領域が一組のネットを有し、各ネットが一組の回路素子を含み、前記方法が、
a)前記領域を複数のサブ領域に分割するステップと、
b)各ネットに対して、
前記ネットの回路素子を含む前記一組のサブ領域を識別するステップと、
前記一組の識別したサブ領域を通る一組の相互接続ラインの長さを識別するステップと、
c)前記識別した相互接続ラインのうちの少なくとも1本が少なくともその一部が対角線であり、
d)識別した各一組の相互接続ラインの前記識別した長さから配置測定基準を計算するステップとをさらに含む、請求項1に記載の方法。 - 回路レイアウトのある領域内の一組のネットをルーティングするために対角線配線とマンハッタン配線を使用するルータを使用する電子設計プロセスに対して、回路レイアウト領域内に回路モジュールを配置する方法であって、該方法が、ルーティング中の潜在的対角線配線に対応する配置測定基準を測定するステップを含む方法。
- 前記配置測定基準を測定するステップが、配置コストを測定するために対角線を使用するステップを含む、請求項12に記載の方法。
- 各ネットが一組の回路素子を含み、配置コストを測定するために前記対角線を使用するステップが、各ネットの前記一組の回路素子を接続している一組の潜在的経路の集中を推定するために対角線分割ラインを使用するステップを含む、請求項13に記載の方法。
- 各ネットが一組の回路素子を含み、配置コストを測定するために前記対角線を使用するステップが、前記一組のネットに対する一組のワイヤ長さを測定するためにマンハッタン・ラインおよび対角線ラインを使用するステップを含み、特定の各ワイヤ長さが、特定のネットの前記一組の回路素子を接続するために必要な一組の相互接続ラインの長さである、請求項13に記載の方法。
- 前記配置測定基準が、最初の配置構成の前記配置コストを定量化する、請求項12に記載の方法。
- 前記最初の配置構成が、ルーティング中、前記ルータの潜在的対角線配線に対応しない配置装置により指定される、請求項16に記載の方法。
- a)前記回路レイアウト領域内の少なくとも1つの回路モジュールの位置を修正するステップと、
b)前記修正の後で、ルーティング中、潜在的対角線配線に対応する前記配置測定基準を測定するステップとをさらに含む、請求項12に記載の方法。 - 回路レイアウトの領域内に回路モジュールを配置するための方法であって、前記回路レイアウト領域が、前記回路レイアウト領域内の複数の回路素子を表す1つのネットを含み、前記方法が、
a)前記ネットの前記回路素子を囲む囲みボックスを形成するステップと、
b)対角線ラインにより前記囲みボックスの属性を測定するステップと、
c)前記測定した属性に基づいて配置コストを指定するステップとをさらに含む方法。 - 前記属性が前記囲みボックスの2つの対向する隅間の距離であり、前記対角線ラインが前記距離の少なくとも一部を通る、請求項19に記載の方法。
- 前記囲みボックスが長さLの長い辺と長さSの短い辺を有し、前記対角線ラインが前記回路レイアウトの一辺とある角度Aを形成し、前記囲みボックスの前記2つの隅間の前記距離(D)を測定するステップが、前記式、D=[L−{S(cosA/sinA)}]+S/sinAを使用するステップを含む、請求項20に記載の方法。
- 前記回路レイアウト領域が、異なるタイプの相互接続ラインを指定する配線モデルを使用し、前記角度Aが、前記回路レイアウトの前記辺に対して少なくとも1つのタイプの対角線相互接続ラインのある角度に対応する、請求項21に記載の方法。
- 前記距離が、前記ネットの前記回路素子を接続するために必要な相互接続ラインの長さの推定値である、請求項20に記載の方法。
- 前記推定値が、もっと下の境界の推定値である、請求項23に記載の方法。
- 前記回路レイアウト領域が追加のネットを含み、各ネットが前記回路レイアウト領域内の一組の回路素子を表し、前記方法が、特定の各追加ネットに対して、
(i)前記ネットの前記回路素子を囲む特定の囲みボックスを形成するステップと、
(ii)前記特定の囲みボックスの2つの対向する隅間の前記距離を測定するステップとをさらに含み、
複数の前記測定した距離のそれぞれが、対角線の少なくとも一部を通り、
各ネットに対する前記測定した距離から前記配線コストを指定し、前記配線コストが、前記ネットの前記回路素子を接続するのに必要な相互接続ラインの推定値である、請求項20に記載の方法。 - 前記配置コストを指定するステップが、測定した各距離を加算するステップを含む、請求項25に記載の方法。
- 特定の各囲みボックスの2つの対向する隅間の前記距離(D)が、前記式、D=[L−{S(cosA/sinA)}]+S/sinAにより指定され、
Lは前記特定の囲みボックスの最も長い辺であり、Sは前記特定の囲みボックスの最も短い辺であり、
Sがゼロでない場合、Aが、前記回路レイアウトの一辺を含む、前記特定のボックスの対向する隅を通る前記対角線ラインにより形成された角度である、請求項25に記載の方法。 - 前記回路レイアウト領域が、異なるタイプの相互接続ラインを指定する配線モデルを使用し、前記角度Aが、前記回路レイアウトの前記辺に対して少なくとも1つのタイプの対角線相互接続ラインのある角度に対応する、請求項27に記載の方法。
- 前記配線モデルが、マンハッタン・ラインおよび45度対角線ラインを含む、請求項28に記載の方法。
- 前記配線モデルが、マンハッタン・ラインおよび120度対角線ラインを含む、請求項28に記載の方法。
- 前記配置コストが最初の配置構成のコストである、請求項25に記載の方法。
- 前記最初の配置構成が、ルーティング中、前記ルータの潜在的対角線配線に対応しない配置装置により指定される、請求項25に記載の方法。
- 任意の囲みボックスを計算する前に、前記レイアウト領域内の少なくとも1つの回路モジュールの移動を識別するステップをさらに含み、
前記ネットが、前記回路モジュールの前記移動により影響を受けている前記ネットであり、
前記配置コストが、前記移動後にネットにより指定された配置構成のコストである、請求項28に記載の方法。 - 前記計算した配置コストに基づいて前記移動をするかどうかを判断するステップをさらに含む、請求項33に記載の方法。
- 前記回路素子が回路モジュールのピンを含む、請求項25に記載の方法。
- 前記回路素子が回路モジュールを含む、請求項25に記載の方法。
- 回路レイアウトの領域内に回路モジュールを配置するための方法であって、前記回路レイアウト領域が、前記回路レイアウト領域内の複数の回路素子を表す1つのネットを含み、前記方法が、
a)前記ネットの前記回路素子を接続するための相互接続ラインのトポロジーをモデル化する接続グラフを形成するステップであって、前記接続グラフが一組の縁部を有し、各縁部が前記ネットの2つの回路素子を接続していて、少なくとも1つの縁部が、少なくともその一部が対角線であるステップと、
b)前記接続グラフの属性を測定するステップと、
c)前記測定した属性に基づいて配置コストを指定するステップとを含む方法。 - 前記属性が前記接続グラフの長さであり、前記長さを測定するステップが、各縁部の長さを測定し、前記計算した縁部の長さを結合するステップを含む、請求項37に記載の方法。
- 前記接続グラフの前記長さが、前記ネットの前記回路素子を接続するために必要な相互接続ラインの長さの推定値である、請求項38に記載の方法。
- 各縁部の長さを測定するステップが、
a)その対向する隅として、前記縁部により接続している前記2つの回路素子を有し、長さLと幅Sとを有し、前記長さが前記ボックスの最も長い辺であり、前記幅が前記ボックスの最も短い辺である囲みボックスを形成するステップと、
b)前記式、D=[L−{S(cosA/sinA)}]+S/sinAにより、前記囲みボックスの前記2つの隅間の前記距離(D)を計算するステップとを含み、Sがゼロでない場合、Aが、前記回路レイアウトの一辺を含む、前記ボックスの対向する隅のところで前記2つの回路素子を接続している前記縁部により形成される角度である、請求項38に記載の方法。 - 前記回路レイアウト領域が、異なるタイプの相互接続ラインを指定する配線モデルを使用し、前記角度Aが、前記回路レイアウトの前記辺に対して少なくとも1つのタイプの対角線相互接続ラインのある角度に対応する、請求項40に記載の方法。
- 前記配線モデルが、マンハッタン・ラインと45度対角線ラインとを含み、Aが45度に等しい、請求項41に記載の方法。
- 縁部の囲みボックスの長さおよび幅が等しい場合に、前記縁部が正確に45度の対角線である、請求項42に記載の方法。
- 縁部の囲みボックスの長さおよび幅が異なる場合であって、前記幅がゼロでない場合、前記縁部が水平セグメント、垂直セグメントおよび45度セグメントを含む、請求項42に記載の方法。
- 前記配線モデルが、マンハッタン・ラインおよび120度対角線ラインを含む、請求項41に記載の方法。
- 前記回路レイアウト領域が、一組のネットを含み、各ネットが、前記回路レイアウト領域内の一組の回路素子を表し、前記方法が、
各ネットに対して、
前記ネットの前記回路素子を接続している接続グラフを形成するステップであって、前記接続グラフが一組の縁部を含み、各縁部が前記ネットの2つの回路素子を接続するステップと、
前記接続グラフの前記長さを測定するステップとを含み、
少なくとも1つの接続グラフが、少なくともその一部が対角線である少なくとも1つの縁部を含み、
形成した各接続グラフの前記測定した長さに基づいて前記配線コストを指定するステップを含む、請求項38に記載の方法。 - 前記配線コストを指定するステップが、形成した各接続グラフの前記長さを結合するステップを含む、請求項46に記載の方法。
- 各接続グラフの前記長さを測定するステップが、前記接続グラフの各縁部の長さを測定するステップと、前記計算した縁部の長さを結合するステップとを含み、各縁部の長さを測定するステップが、
a)その対向する隅として、前記縁部により接続している前記2つの回路素子を有し、長さLと幅Sとを有し、前記長さが前記ボックスの最も長い辺であり、前記幅が前記ボックスの最も短い辺である囲みボックスを形成するステップと、
b)前記式、D=[L−{S(cosA/sinA)}]+S/sinAにより、前記囲みボックスの前記2つの隅間の前記距離(D)を計算するステップとを含み、Sがゼロでない場合、Aが、前記回路レイアウトの一辺を含む、前記ボックスの対向する隅のところで前記2つの回路素子を接続している前記縁部により形成される角度である、請求項47に記載の方法。 - 前記配置コストが最初の配置構成のコストである、請求項48に記載の方法。
- 前記最初の配置構成が、ルーティング中、前記ルータの潜在的対角線配線に対応しない配置装置により指定される、請求項49に記載の方法。
- 任意の接続グラフを形成する前に、前記レイアウト領域内の少なくとも1つの回路モジュールの移動を識別するステップをさらに含み、
前記ネットが、前記回路モジュールの前記移動により影響を受けている前記ネットであり、
前記配置コストが、前記移動後に前記ネットにより指定された配置構成のコストである、請求項48に記載の方法。 - 前記計算した配置コストに基づいて前記移動をするかどうかを判断するステップをさらに含む、請求項51に記載の方法。
- 前記回路素子が回路モジュールのピンを含む、請求項48に記載の方法。
- 前記回路素子が回路モジュールを含む、請求項48に記載の方法。
- 各接続グラフが最小スパニング・ツリーである、請求項48に記載の方法。
- 各接続グラフがシュタイナー・ツリーである、請求項48に記載の方法。
- 回路レイアウトの領域内に回路モジュールを配置するための方法であって、前記回路レイアウト領域が複数のネットを含み、各ネットが前記回路レイアウト領域内の一組の回路素子を表し、前記方法が、
a)対角線分割ラインにより前記回路レイアウト領域を2つのサブ領域に分割するステップと、
b)前記対角線分割ラインにより生成した前記サブ領域の両方に回路素子を有するネットの数を測定するステップとを含む方法。 - 両方のサブ領域内に回路素子を有するネットの数を低減するために、前記領域内の前記回路素子の位置を変更するステップをさらに含む、請求項57に記載の方法。
- 前記回路素子の位置を変更するステップが、KLFM最適化プロセスを使用するステップを含む、請求項58に記載の方法。
- 前記回路素子の位置を変更するステップが、焼きなまし最適化プロセスを使用するステップを含む、請求項58に記載の方法。
- 前記回路素子の位置を変更するステップが、ローカル最適化プロセスを使用するステップを含む、請求項58に記載の方法。
- a)前記サブ領域の1つを第2の分割ラインにより2つのもっと小さいサブ領域に分割するステップと、
b)前記第2の分割ラインにより生成された前記もっと小さいサブ領域の両方に回路素子を有するネットの数を測定するステップとをさらに含む、請求項58に記載の方法。 - 前記第2の分割ラインが対角線ラインである、請求項62に記載の方法。
- 前記第2の分割ラインが垂直ラインまたは水平ラインである、請求項62に記載の方法。
- 前記もっと小さいサブ領域の両方に回路素子を有するネットの数を低減するために、前記もっと小さいサブ領域間で回路素子を移動するステップをさらに含む、請求項62に記載の方法。
- 前記領域が、第3の分割ラインによるもっと大きい領域の分割により形成された、請求項57に記載の方法。
- 前記第3の分割ラインが対角線ラインである、請求項66に記載の方法。
- 前記第3の分割ラインが垂直ラインまたは水平ラインである、請求項66に記載の方法。
- 回路レイアウトの領域を複数のサブ領域に分割する配置装置に対して、配置コストを計算するための方法であって、該方法が、
a)一組のサブ領域に対して、前記一組のサブ領域を接続している接続グラフを識別するステップであって、前記接続グラフが、少なくともその一部が対角線である少なくとも1つの縁部を有するステップと、
b)前記接続グラフの属性を計算するステップと、
c)前記計算した属性から配置コストを識別するステップとを含む方法。 - 前記属性が前記接続グラフの前記長さであり、前記配置コストが前記接続グラフの前記長さに等しい、請求項69に記載の方法。
- 前記接続グラフの前記長さが、前記一組のサブ領域内に回路素子を有するネットをルーティングするために必要なワイヤ長さの推定値である、請求項70に記載の方法。
- 前記方法が、前記回路レイアウト領域内のネットの配置コストを計算し、各ネットが、前記回路レイアウト領域内の一組の回路素子を表し、
前記配置装置が、前記接続グラフの識別、前記属性の計算、および前記配置コストの識別を行い、
前記接続グラフの識別を行う前に、前記配置装置が,前記一組のサブ領域を、あるネットの前記一組の回路素子を含む前記組として識別し、
前記配置コストが前記ネットの配置コストである、請求項70に記載の方法。 - 前記回路レイアウト領域内の各ネットに対して、
(i)前記ネットの前記一組の回路素子を含む一組のサブ領域を識別するステップと、
(ii)前記一組のサブ領域を接続している接続グラフを識別するステップと、
(iii)前記接続グラフの前記長さを計算するステップとを含み、
いくつかの接続グラフが、少なくともその一部が対角線である少なくとも1つの縁部を有し、
各接続グラフの前記計算した長さから全配置コストを識別するステップを含む、請求項72に記載の方法。 - 前記方法が、前記分割したサブ領域に対する配置コストを予め計算し、前記方法が、
サブ領域の特定の各組に対して、
(i)サブ領域の前記特定の組を接続している接続グラフを識別するステップと、
(ii)前記接続グラフの前記長さを計算するステップとをさらに含み、
いくつかの前記接続グラフが、少なくともその一部が対角線である少なくとも1つの縁部を有する、請求項70に記載の方法。 - サブ領域の特定の各縁部に対して、記憶構造体内に、前記接続グラフの前記長さを、サブ領域の前記特定の組の配置コストとして記憶するステップをさらに含む、請求項74に記載の方法。
- 前記配置装置が、分割した回路レイアウト領域内に回路モジュールを配置し、
前記領域が一組のネットを含み、各ネットが前記回路レイアウト領域内の一組の回路素子を表し、
前記回路レイアウト領域内の各ネットに対して、前記配置装置が、
(i)前記ネットの前記一組の回路素子を含む一組のサブ領域を識別し、
(ii)前記記憶構造体から、前記一組のサブ領域を接続している前記接続グラフの前記長さを検索し、
前記配置装置が、各ネットの前記検索した長さから前記ネットに対する配置コストを識別する、請求項75に記載の方法。 - サブ領域の特定の各組に対して、
前記計算した長さから遅延コストを入手するステップと、
記憶構造体内に、前記遅延コストをサブ領域の前記特定の組の配置コストとして記憶するステップとをさらに含む、請求項74に記載の方法。 - 前記接続グラフが最小スパニング・ツリーである、請求項69に記載の方法。
- 前記接続グラフがシュタイナー・ツリーである、請求項69に記載の方法。
- 前記回路レイアウト領域が、異なるタイプの相互接続ラインを含む配線モデルを使用し、前記角度Aが、前記回路レイアウトの前記辺に対して少なくとも1つのタイプの対角線相互接続ラインのある角度に対応する、請求項69に記載の方法。
- 回路レイアウトの領域内で、一組のネットをルーティングするために、対角線配線およびマンハッタン配線を使用するルータを使用する電子設計プロセスに対して、回路レイアウトの領域内に回路モジュールを配置するための方法であって、前記回路レイアウト領域が複数のネットを含み、前記方法が、
a)1つのネットを選択するステップと、
b)前記選択したネットに対して、ルーティング中、潜在的対角線配線に対応する遅延コストを計算するステップと、
c)前記計算した遅延コストから配置コストを識別するステップとを含む方法。 - 前記配置コストが前記遅延コストに等しい、請求項81に記載の方法。
- a)各ネットに対して、ルーティング中、潜在的対角線配線に対応する遅延コストを計算するステップと、
b)前記計算した遅延コストから前記配置コストを識別するステップとをさらに含む、請求項81に記載の方法。 - 前記配置コストが前記遅延コストの合計に等しい、請求項83に記載の方法。
- 各ネットが、前記回路レイアウト領域内の一組の回路素子を表し、各ネットに対する前記遅延コストを計算するステップが、
a)各ネットに対するワイヤ長さの推定値を計算するステップであって、前記ワイヤ長さの推定値が、ルーティング中に、対角線配線に対応することにより計算されるステップと、
b)前記ネットに対する前記計算したワイヤ長さの推定値から各ネットに対する前記遅延コストを計算するステップとを含む、請求項83に記載の方法。 - 少なくとも1つのネットに対して、下記の線形関係により、前記ネットのワイヤ長さ(L)コストから前記遅延コスト(D)を計算する、請求項85に記載の方法:
D=A*W+B
ここで、AおよびBはスカラ定数である。 - 少なくとも1つのネットに対して、下記の非線形関係により前記ネットのワイヤ長さ(L)コストから前記遅延コスト(D)を計算する、請求項85に記載の方法:
D=A*WN+A’*WN−1+...+B
ここで、A,A’BおよびNはスカラ定数である。 - 前記ルーティング・モデルが、少なくとも1つの対角線ルーティング方向を指定し、各ネットに対する前記ワイヤ長さの推定値の計算が、
a)前記ネットの前記一組の回路素子を囲む囲みボックスを識別するステップと、
b)下式、D=[L−{S(cosA/sinA)}]+S/sinAにより、前記囲みボックスの2つの対向する隅間の前記距離(D)を測定するステップとを含み、Lは、前記囲みボックスの最も長い辺であり、Sは、前記囲みボックスの最も短い辺であり、Aは、前記配線モデルが指定する前記対角線ルーティング方向のうちの1つのある角度である、請求項85に記載の方法。 - 各ネットに対する前記ワイヤ長さの推定値の計算が、
前記ネットの前記回路素子を接続している接続グラフを識別するステップと、
前記接続グラフの前記長さを識別するステップとを含み、
前記接続グラフの中のあるものが、少なくともその一部が対角線である少なくとも1つの縁部を含む、請求項85に記載の方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/731,891 US7024650B2 (en) | 2000-12-06 | 2000-12-06 | Method and apparatus for considering diagonal wiring in placement |
US09/732,181 US6826737B2 (en) | 2000-12-06 | 2000-12-06 | Recursive partitioning placement method and apparatus |
PCT/US2001/046406 WO2002047165A2 (en) | 2000-12-06 | 2001-12-05 | Method and apparatus for considering diagonal wiring in placement |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004529402A JP2004529402A (ja) | 2004-09-24 |
JP2004529402A5 true JP2004529402A5 (ja) | 2005-12-22 |
Family
ID=27112314
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002548785A Pending JP2004529402A (ja) | 2000-12-06 | 2001-12-05 | 配置の際に対角線配線を考慮に入れるための方法および装置 |
Country Status (7)
Country | Link |
---|---|
US (1) | US6904580B2 (ja) |
EP (1) | EP1362373A2 (ja) |
JP (1) | JP2004529402A (ja) |
CN (1) | CN1529864B (ja) |
AU (1) | AU2002233977A1 (ja) |
TW (1) | TW564575B (ja) |
WO (1) | WO2002047165A2 (ja) |
Families Citing this family (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7055120B2 (en) * | 2000-12-06 | 2006-05-30 | Cadence Design Systems, Inc. | Method and apparatus for placing circuit modules |
US6826737B2 (en) | 2000-12-06 | 2004-11-30 | Cadence Design Systems, Inc. | Recursive partitioning placement method and apparatus |
US7003754B2 (en) * | 2000-12-07 | 2006-02-21 | Cadence Design Systems, Inc. | Routing method and apparatus that use of diagonal routes |
US7080336B2 (en) | 2000-12-06 | 2006-07-18 | Cadence Design Systems, Inc. | Method and apparatus for computing placement costs |
US7024650B2 (en) * | 2000-12-06 | 2006-04-04 | Cadence Design Systems, Inc. | Method and apparatus for considering diagonal wiring in placement |
US7073150B2 (en) | 2000-12-07 | 2006-07-04 | Cadence Design Systems, Inc. | Hierarchical routing method and apparatus that use diagonal routes |
US6738960B2 (en) | 2001-01-19 | 2004-05-18 | Cadence Design Systems, Inc. | Method and apparatus for producing sub-optimal routes for a net by generating fake configurations |
US6915501B2 (en) * | 2001-01-19 | 2005-07-05 | Cadence Design Systems, Inc. | LP method and apparatus for identifying routes |
US6795958B2 (en) | 2001-08-23 | 2004-09-21 | Cadence Design Systems, Inc. | Method and apparatus for generating routes for groups of related node configurations |
US7155697B2 (en) | 2001-08-23 | 2006-12-26 | Cadence Design Systems, Inc. | Routing method and apparatus |
US7398498B2 (en) | 2001-08-23 | 2008-07-08 | Cadence Design Systems, Inc. | Method and apparatus for storing routes for groups of related net configurations |
US7058913B1 (en) * | 2001-09-06 | 2006-06-06 | Cadence Design Systems, Inc. | Analytical placement method and apparatus |
US6988257B2 (en) * | 2002-11-18 | 2006-01-17 | Cadence Design Systems, Inc. | Method and apparatus for routing |
US7624367B2 (en) | 2002-11-18 | 2009-11-24 | Cadence Design Systems, Inc. | Method and system for routing |
US7171635B2 (en) | 2002-11-18 | 2007-01-30 | Cadence Design Systems, Inc. | Method and apparatus for routing |
US7003752B2 (en) | 2002-11-18 | 2006-02-21 | Cadence Design Systems, Inc. | Method and apparatus for routing |
US7047513B2 (en) | 2002-11-18 | 2006-05-16 | Cadence Design Systems, Inc. | Method and apparatus for searching for a three-dimensional global path |
US7480885B2 (en) | 2002-11-18 | 2009-01-20 | Cadence Design Systems, Inc. | Method and apparatus for routing with independent goals on different layers |
US7013445B1 (en) | 2002-12-31 | 2006-03-14 | Cadence Design Systems, Inc. | Post processor for optimizing manhattan integrated circuits placements into non manhattan placements |
US7096445B1 (en) | 2003-01-14 | 2006-08-22 | Cadence Design Systems, Inc. | Non-orthogonal structures and space tiles for layout, placement, and routing of an integrated circuit |
US7644383B2 (en) * | 2005-06-30 | 2010-01-05 | Texas Instruments Incorporated | Method and system for correcting signal integrity crosstalk violations |
US20070006106A1 (en) * | 2005-06-30 | 2007-01-04 | Texas Instruments Incorporated | Method and system for desensitization of chip designs from perturbations affecting timing and manufacturability |
CN102054068B (zh) * | 2009-10-30 | 2014-06-18 | 新思科技(上海)有限公司 | 芯片设计中的线网分配方法与装置 |
CN116050339B (zh) * | 2023-01-28 | 2023-07-21 | 上海合见工业软件集团有限公司 | 电路原理图路由规划系统 |
CN116011389B (zh) * | 2023-01-28 | 2023-06-06 | 上海合见工业软件集团有限公司 | 基于空间约束的电路原理图路由规划系统 |
Family Cites Families (97)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4593363A (en) | 1983-08-12 | 1986-06-03 | International Business Machines Corporation | Simultaneous placement and wiring for VLSI chips |
US4615011A (en) * | 1983-12-19 | 1986-09-30 | Ibm | Iterative method for establishing connections and resulting product |
JPS63225869A (ja) | 1986-10-09 | 1988-09-20 | Nec Corp | 配線経路探索方式 |
US5097422A (en) | 1986-10-10 | 1992-03-17 | Cascade Design Automation Corporation | Method and apparatus for designing integrated circuits |
DE58907307D1 (de) | 1988-11-02 | 1994-04-28 | Siemens Ag | Verfahren zur plazierung von modulen auf einem träger. |
JPH03188650A (ja) | 1989-12-18 | 1991-08-16 | Hitachi Ltd | 配線経路処理方法、配線経路処理システム、及び半導体集積回路 |
US5598344A (en) | 1990-04-06 | 1997-01-28 | Lsi Logic Corporation | Method and system for creating, validating, and scaling structural description of electronic device |
US5634093A (en) | 1991-01-30 | 1997-05-27 | Kabushiki Kaisha Toshiba | Method and CAD system for designing wiring patterns using predetermined rules |
US5532934A (en) | 1992-07-17 | 1996-07-02 | Lsi Logic Corporation | Floorplanning technique using multi-partitioning based on a partition cost factor for non-square shaped partitions |
US5618744A (en) | 1992-09-22 | 1997-04-08 | Fujitsu Ltd. | Manufacturing method and apparatus of a semiconductor integrated circuit device |
US5566078A (en) | 1993-05-26 | 1996-10-15 | Lsi Logic Corporation | Integrated circuit cell placement using optimization-driven clustering |
WO1995020197A1 (en) | 1994-01-25 | 1995-07-27 | Advantage Logic, Inc. | Apparatus and method for partitioning resources for interconnections |
US6155725A (en) | 1994-04-19 | 2000-12-05 | Lsi Logic Corporation | Cell placement representation and transposition for integrated circuit physical design automation system |
US5914887A (en) | 1994-04-19 | 1999-06-22 | Lsi Logic Corporation | Congestion based cost factor computing apparatus for integrated circuit physical design automation system |
US5495419A (en) | 1994-04-19 | 1996-02-27 | Lsi Logic Corporation | Integrated circuit physical design automation system utilizing optimization process decomposition and parallel processing |
JP2687879B2 (ja) | 1994-05-26 | 1997-12-08 | 日本電気株式会社 | 自動配線方法 |
JP3113153B2 (ja) | 1994-07-26 | 2000-11-27 | 株式会社東芝 | 多層配線構造の半導体装置 |
JPH0851159A (ja) | 1994-08-05 | 1996-02-20 | Mitsubishi Electric Corp | 半導体集積回路 |
US5587923A (en) | 1994-09-07 | 1996-12-24 | Lsi Logic Corporation | Method for estimating routability and congestion in a cell placement for integrated circuit chip |
US6407434B1 (en) * | 1994-11-02 | 2002-06-18 | Lsi Logic Corporation | Hexagonal architecture |
US5777360A (en) | 1994-11-02 | 1998-07-07 | Lsi Logic Corporation | Hexagonal field programmable gate array architecture |
US5973376A (en) | 1994-11-02 | 1999-10-26 | Lsi Logic Corporation | Architecture having diamond shaped or parallelogram shaped cells |
US5811863A (en) | 1994-11-02 | 1998-09-22 | Lsi Logic Corporation | Transistors having dynamically adjustable characteristics |
US5578840A (en) | 1994-11-02 | 1996-11-26 | Lis Logic Corporation | Microelectronic integrated circuit structure and method using three directional interconnect routing based on hexagonal geometry |
US5742086A (en) | 1994-11-02 | 1998-04-21 | Lsi Logic Corporation | Hexagonal DRAM array |
US5822214A (en) | 1994-11-02 | 1998-10-13 | Lsi Logic Corporation | CAD for hexagonal architecture |
JP3351651B2 (ja) | 1995-04-07 | 2002-12-03 | 富士通株式会社 | 会話型回路設計装置 |
US5650653A (en) | 1995-05-10 | 1997-07-22 | Lsi Logic Corporation | Microelectronic integrated circuit including triangular CMOS "nand" gate device |
US5981384A (en) | 1995-08-14 | 1999-11-09 | Micron Technology, Inc. | Method of intermetal dielectric planarization by metal features layout modification |
US5637920A (en) | 1995-10-04 | 1997-06-10 | Lsi Logic Corporation | High contact density ball grid array package for flip-chips |
US5757656A (en) | 1995-12-20 | 1998-05-26 | Mentor Graphics | Method for routing breakouts |
US5663891A (en) | 1996-04-03 | 1997-09-02 | Cadence Design Systems, Inc. | Optimization of multiple performance criteria of integrated circuits by expanding a constraint graph with subgraphs derived from multiple PWL convex cost functions |
US5838583A (en) | 1996-04-12 | 1998-11-17 | Cadence Design Systems, Inc. | Optimized placement and routing of datapaths |
US5798936A (en) | 1996-06-21 | 1998-08-25 | Avant| Corporation | Congestion-driven placement method and computer-implemented integrated-circuit design tool |
US6067409A (en) | 1996-06-28 | 2000-05-23 | Lsi Logic Corporation | Advanced modular cell placement system |
US6035108A (en) | 1996-10-17 | 2000-03-07 | Nec Corporation | Figure layout compaction method and compaction device |
US6209123B1 (en) | 1996-11-01 | 2001-03-27 | Motorola, Inc. | Methods of placing transistors in a circuit layout and semiconductor device with automatically placed transistors |
US5980093A (en) | 1996-12-04 | 1999-11-09 | Lsi Logic Corporation | Integrated circuit layout routing using multiprocessing |
US5898597A (en) | 1997-02-11 | 1999-04-27 | Lsi Logic Corporation | Integrated circuit floor plan optimization system |
JP3063828B2 (ja) | 1997-03-27 | 2000-07-12 | 日本電気株式会社 | 集積回路の自動概略配線方法 |
US6070108A (en) | 1997-08-06 | 2000-05-30 | Lsi Logic Corporation | Method and apparatus for congestion driven placement |
US6068662A (en) | 1997-08-06 | 2000-05-30 | Lsi Logig Corporation | Method and apparatus for congestion removal |
US6123736A (en) | 1997-08-06 | 2000-09-26 | Lsi Logic Corporation | Method and apparatus for horizontal congestion removal |
US6058254A (en) | 1997-08-06 | 2000-05-02 | Lsi Logic Corporation | Method and apparatus for vertical congestion removal |
US6330707B1 (en) | 1997-09-29 | 2001-12-11 | Matsushita Electric Industrial Co., Ltd. | Automatic routing method |
JP4128251B2 (ja) | 1997-10-23 | 2008-07-30 | 富士通株式会社 | 配線密度予測方法およびセル配置装置 |
US6128767A (en) | 1997-10-30 | 2000-10-03 | Chapman; David C. | Polygon representation in an integrated circuit layout |
US6134702A (en) | 1997-12-16 | 2000-10-17 | Lsi Logic Corporation | Physical design automation system and process for designing integrated circuit chips using multiway partitioning with constraints |
US6249902B1 (en) | 1998-01-09 | 2001-06-19 | Silicon Perspective Corporation | Design hierarchy-based placement |
US6286128B1 (en) | 1998-02-11 | 2001-09-04 | Monterey Design Systems, Inc. | Method for design optimization using logical and physical information |
JP3120838B2 (ja) | 1998-03-24 | 2000-12-25 | 日本電気株式会社 | 図形レイアウト圧縮システム及び図形レイアウト圧縮方法 |
JP3070679B2 (ja) | 1998-03-24 | 2000-07-31 | 日本電気株式会社 | 図形レイアウト圧縮システム及び図形レイアウト圧縮方法 |
US6230306B1 (en) | 1998-04-17 | 2001-05-08 | Lsi Logic Corporation | Method and apparatus for minimization of process defects while routing |
US6253363B1 (en) | 1998-04-17 | 2001-06-26 | Lsi Logic Corporation | Net routing using basis element decomposition |
US6175950B1 (en) | 1998-04-17 | 2001-01-16 | Lsi Logic Corporation | Method and apparatus for hierarchical global routing descend |
US6247167B1 (en) | 1998-04-17 | 2001-06-12 | Lsi Logic Corporation | Method and apparatus for parallel Steiner tree routing |
US6289495B1 (en) | 1998-04-17 | 2001-09-11 | Lsi Logic Corporation | Method and apparatus for local optimization of the global routing |
US6324674B2 (en) | 1998-04-17 | 2001-11-27 | Lsi Logic Corporation | Method and apparatus for parallel simultaneous global and detail routing |
JP3564295B2 (ja) | 1998-05-22 | 2004-09-08 | 富士通株式会社 | セル配置装置及び方法並びにセル配置プログラムを記録したコンピュータ読取り可能な記録媒体 |
US6442743B1 (en) | 1998-06-12 | 2002-08-27 | Monterey Design Systems | Placement method for integrated circuit design using topo-clustering |
US6262487B1 (en) | 1998-06-23 | 2001-07-17 | Kabushiki Kaisha Toshiba | Semiconductor integrated circuit device, semiconductor integrated circuit wiring method, and cell arranging method |
US6412102B1 (en) | 1998-07-22 | 2002-06-25 | Lsi Logic Corporation | Wire routing optimization |
US6324675B1 (en) | 1998-12-18 | 2001-11-27 | Synopsys, Inc. | Efficient iterative, gridless, cost-based fine router for computer controlled integrated circuit design |
WO2000038228A1 (fr) | 1998-12-22 | 2000-06-29 | Fujitsu Limited | Appareil et procede de cablage brute et support d'enregistrement conservant un programme de cablage brute |
JP3077757B2 (ja) | 1999-02-02 | 2000-08-14 | 日本電気株式会社 | レイアウトコンパクション方法及びレイアウトコンパクション装置 |
US6295634B1 (en) | 1999-04-02 | 2001-09-25 | International Business Machines Corporation | Wiring design apparatus, wiring determination apparatus and methods thereof |
US6327693B1 (en) | 1999-04-08 | 2001-12-04 | Chung-Kuan Cheng | Interconnect delay driven placement and routing of an integrated circuit design |
JP2001024153A (ja) | 1999-07-06 | 2001-01-26 | Mitsubishi Electric Corp | 集積回路装置におけるセルの配置方法 |
US6415422B1 (en) | 1999-09-17 | 2002-07-02 | International Business Machines Corporation | Method and system for performing capacitance estimations on an integrated circuit design routed by a global routing tool |
US6405358B1 (en) | 1999-10-08 | 2002-06-11 | Agilent Technologies, Inc. | Method for estimating and displaying wiring congestion |
JP3822009B2 (ja) | 1999-11-17 | 2006-09-13 | 株式会社東芝 | 自動設計方法、露光用マスクセット、半導体集積回路装置、半導体集積回路装置の製造方法、および自動設計プログラムを記録した記録媒体 |
US6401234B1 (en) | 1999-12-17 | 2002-06-04 | International Business Machines Corporation | Method and system for re-routing interconnects within an integrated circuit design having blockages and bays |
JP3548070B2 (ja) | 2000-01-26 | 2004-07-28 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 多端子ネットを自動的に発生する方法及び装置並びに多端子ネット自動発生方法を実行するためのプログラムを記憶したプログラム記憶媒体 |
US6519751B2 (en) | 2000-03-31 | 2003-02-11 | Intel Corporation | Method and apparatus for accurate crosspoint allocation in VLSI area routing |
US6405357B1 (en) * | 2000-05-02 | 2002-06-11 | Advanced Semiconductor Engineering, Inc. | Method for positioning bond pads in a semiconductor die |
US6473891B1 (en) | 2000-05-03 | 2002-10-29 | Lsi Logic Corporation | Wire routing to control skew |
US6543043B1 (en) | 2000-06-01 | 2003-04-01 | Cadence Design Systems, Inc. | Inter-region constraint-based router for use in electronic design automation |
US6567967B2 (en) | 2000-09-06 | 2003-05-20 | Monterey Design Systems, Inc. | Method for designing large standard-cell base integrated circuits |
US7055120B2 (en) | 2000-12-06 | 2006-05-30 | Cadence Design Systems, Inc. | Method and apparatus for placing circuit modules |
US6957410B2 (en) | 2000-12-07 | 2005-10-18 | Cadence Design Systems, Inc. | Method and apparatus for adaptively selecting the wiring model for a design region |
US7024650B2 (en) | 2000-12-06 | 2006-04-04 | Cadence Design Systems, Inc. | Method and apparatus for considering diagonal wiring in placement |
US6826737B2 (en) | 2000-12-06 | 2004-11-30 | Cadence Design Systems, Inc. | Recursive partitioning placement method and apparatus |
US7080336B2 (en) | 2000-12-06 | 2006-07-18 | Cadence Design Systems, Inc. | Method and apparatus for computing placement costs |
US7003754B2 (en) * | 2000-12-07 | 2006-02-21 | Cadence Design Systems, Inc. | Routing method and apparatus that use of diagonal routes |
US6516455B1 (en) * | 2000-12-06 | 2003-02-04 | Cadence Design Systems, Inc. | Partitioning placement method using diagonal cutlines |
US7073150B2 (en) | 2000-12-07 | 2006-07-04 | Cadence Design Systems, Inc. | Hierarchical routing method and apparatus that use diagonal routes |
US6738960B2 (en) | 2001-01-19 | 2004-05-18 | Cadence Design Systems, Inc. | Method and apparatus for producing sub-optimal routes for a net by generating fake configurations |
US6915501B2 (en) | 2001-01-19 | 2005-07-05 | Cadence Design Systems, Inc. | LP method and apparatus for identifying routes |
US6480991B1 (en) | 2001-04-11 | 2002-11-12 | International Business Machines Corporation | Timing-driven global placement based on geometry-aware timing budgets |
JP2002312414A (ja) | 2001-04-13 | 2002-10-25 | Toshiba Corp | 半導体集積回路装置のレイアウト設計システム、配線設計方法、配線設計プログラム及び半導体集積回路装置の製造方法 |
US6590289B2 (en) | 2001-05-17 | 2003-07-08 | Lsi Logic Corporation | Hexadecagonal routing |
US7155697B2 (en) * | 2001-08-23 | 2006-12-26 | Cadence Design Systems, Inc. | Routing method and apparatus |
US7398498B2 (en) | 2001-08-23 | 2008-07-08 | Cadence Design Systems, Inc. | Method and apparatus for storing routes for groups of related net configurations |
US6618849B2 (en) * | 2001-08-23 | 2003-09-09 | Cadence Design Systems, Inc. | Method and apparatus for identifying routes for nets |
US6931616B2 (en) * | 2001-08-23 | 2005-08-16 | Cadence Design Systems, Inc. | Routing method and apparatus |
US7143382B2 (en) | 2001-08-23 | 2006-11-28 | Cadence Design Systems, Inc. | Method and apparatus for storing routes |
US6795958B2 (en) | 2001-08-23 | 2004-09-21 | Cadence Design Systems, Inc. | Method and apparatus for generating routes for groups of related node configurations |
-
2001
- 2001-12-05 WO PCT/US2001/046406 patent/WO2002047165A2/en active Application Filing
- 2001-12-05 JP JP2002548785A patent/JP2004529402A/ja active Pending
- 2001-12-05 CN CN01821956XA patent/CN1529864B/zh not_active Expired - Fee Related
- 2001-12-05 EP EP01984980A patent/EP1362373A2/en not_active Withdrawn
- 2001-12-05 AU AU2002233977A patent/AU2002233977A1/en not_active Abandoned
- 2001-12-06 TW TW090130233A patent/TW564575B/zh not_active IP Right Cessation
-
2002
- 2002-02-20 US US10/079,061 patent/US6904580B2/en not_active Expired - Lifetime
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7055120B2 (en) | Method and apparatus for placing circuit modules | |
US7080336B2 (en) | Method and apparatus for computing placement costs | |
JP2004529402A5 (ja) | ||
US6826737B2 (en) | Recursive partitioning placement method and apparatus | |
US7089523B2 (en) | Method and apparatus for using connection graphs with potential diagonal edges to model interconnect topologies during placement | |
JP2004529402A (ja) | 配置の際に対角線配線を考慮に入れるための方法および装置 | |
US7480885B2 (en) | Method and apparatus for routing with independent goals on different layers | |
US6848091B2 (en) | Partitioning placement method and apparatus | |
US7080342B2 (en) | Method and apparatus for computing capacity of a region for non-Manhattan routing | |
US6996789B2 (en) | Method and apparatus for performing an exponential path search | |
US7171635B2 (en) | Method and apparatus for routing | |
US7003752B2 (en) | Method and apparatus for routing | |
US7010771B2 (en) | Method and apparatus for searching for a global path | |
US7047513B2 (en) | Method and apparatus for searching for a three-dimensional global path | |
US6988257B2 (en) | Method and apparatus for routing |