【手続補正書】
【提出日】平成16年11月26日(2004.11.26)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
回路レイアウトの領域内に回路モジュールを設置するための方法であって、配置構成のコストを測定するために対角線を使用するステップを含む方法。
【請求項２】
配置コストを測定するために前記対角線を使用するステップが、回路レイアウト領域内の集中を測定するために対角線分割ラインを使用するステップを含む、請求項１に記載の方法。
【請求項３】
一組のネットが、前記回路レイアウト領域内の一組の回路素子間の相互接続を表し、各ネットが一組の回路素子を有し、配置コストを測定するために前記対角線を使用するステップが、
ａ）前記回路レイアウトの領域を２つのサブ領域に分割するために対角線分割ラインを使用するステップと、
ｂ）前記対角線分割ラインにより生成された前記両方のサブ領域内に回路素子を有するネットの数を測定するステップとを含む、請求項１に記載の方法。
【請求項４】
前記回路レイアウト領域が多数の回路素子を有し、一組の回路素子が１つのネットを形成し、配置コストを測定するために前記対角線を使用するステップが、前記ネットの前記回路素子を接続するのに必要な一組の相互接続ラインの長さの推定値を計算するステップを含み、前記計算が、少なくともその一部が対角線である少なくとも第１のラインの長さを測定する、請求項１に記載の方法。
【請求項５】
前記推定値を計算するステップが、
ａ）前記ネットのすべての前記回路素子を囲む囲みボックスを形成するステップと、
ｂ）前記囲みボックスの属性を測定するために前記第１のラインを使用するステップとを含む、請求項４に記載の方法。
【請求項６】
前記属性が、前記囲みボックスの２つの対向する隅間の距離であり、前記第１のラインが前記距離を通る、請求項５に記載の方法。
【請求項７】
前記推定値を計算するステップが、前記ネットの前記回路素子を接続するための相互接続ラインのトポロジーをモデル化する接続グラフを形成するステップを含み、前記接続グラフが一組の縁部を有し、少なくとも第１の縁部が少なくともその一部が対角線である、請求項４に記載の方法。
【請求項８】
前記推定値を計算するステップが、前記グラフの前記縁部の長さを計算するステップをさらに含む、請求項７に記載の方法。
【請求項９】
各縁部が、２つの回路素子を接続し、２つの回路素子を接続している前記各縁部の長さを計算するステップが、
ａ）囲みボックスの２つの隅である前記２つの回路素子を含む、長さＬの長い辺と長さＳの短い辺を有する前記囲みボックスを形成するステップと、
ｂ）式、Ｄ＝［Ｌ−｛Ｓ（ｃｏｓＡ／ｓｉｎＡ）｝］＋Ｓ／ｓｉｎＡにより、前記囲みボックスの前記２つの隅間の前記距離（Ｄ）を計算するステップとを含み、上式中、Ａは前記レイアウトの１つの辺に対する０度または９０度以外の角度を表す、請求項８に記載の方法。
【請求項１０】
前記配置コストが遅延コストであり、前記方法が、前記ネットの前記回路素子を接続するのに必要な相互接続ラインの長さの前記推定値から前記遅延コストを計算するステップをさらに含む、請求項４に記載の方法。
【請求項１１】
前記回路レイアウト領域が一組のネットを有し、各ネットが一組の回路素子を含み、前記方法が、
ａ）前記領域を複数のサブ領域に分割するステップと、
ｂ）各ネットに対して、
前記ネットの回路素子を含む前記一組のサブ領域を識別するステップと、
前記一組の識別したサブ領域を通る一組の相互接続ラインの長さを識別するステップと、
ｃ）前記識別した相互接続ラインのうちの少なくとも１本が少なくともその一部が対角線であり、
ｄ）識別した各一組の相互接続ラインの前記識別した長さから配置測定基準を計算するステップとをさらに含む、請求項１に記載の方法。
【請求項１２】
回路レイアウトのある領域内の一組のネットをルーティングするために対角線配線とマンハッタン配線を使用するルータを使用する電子設計プロセスに対して、回路レイアウト領域内に回路モジュールを配置する方法であって、該方法が、ルーティング中の潜在的対角線配線に対応する配置測定基準を測定するステップを含む方法。
【請求項１３】
前記配置測定基準を測定するステップが、配置コストを測定するために対角線を使用するステップを含む、請求項１２に記載の方法。
【請求項１４】
各ネットが一組の回路素子を含み、配置コストを測定するために前記対角線を使用するステップが、各ネットの前記一組の回路素子を接続している一組の潜在的経路の集中を推定するために対角線分割ラインを使用するステップを含む、請求項１３に記載の方法。
【請求項１５】
各ネットが一組の回路素子を含み、配置コストを測定するために前記対角線を使用するステップが、前記一組のネットに対する一組のワイヤ長さを測定するためにマンハッタン・ラインおよび対角線ラインを使用するステップを含み、特定の各ワイヤ長さが、特定のネットの前記一組の回路素子を接続するために必要な一組の相互接続ラインの長さである、請求項１３に記載の方法。
【請求項１６】
前記配置測定基準が、最初の配置構成の前記配置コストを定量化する、請求項１２に記載の方法。
【請求項１７】
前記最初の配置構成が、ルーティング中、前記ルータの潜在的対角線配線に対応しない配置装置により指定される、請求項１６に記載の方法。
【請求項１８】
ａ）前記回路レイアウト領域内の少なくとも１つの回路モジュールの位置を修正するステップと、
ｂ）前記修正の後で、ルーティング中、潜在的対角線配線に対応する前記配置測定基準を測定するステップとをさらに含む、請求項１２に記載の方法。
【請求項１９】
回路レイアウトの領域内に回路モジュールを配置するための方法であって、前記回路レイアウト領域が、前記回路レイアウト領域内の複数の回路素子を表す１つのネットを含み、前記方法が、
ａ）前記ネットの前記回路素子を囲む囲みボックスを形成するステップと、
ｂ）対角線ラインにより前記囲みボックスの属性を測定するステップと、
ｃ）前記測定した属性に基づいて配置コストを指定するステップとをさらに含む方法。
【請求項２０】
前記属性が前記囲みボックスの２つの対向する隅間の距離であり、前記対角線ラインが前記距離の少なくとも一部を通る、請求項１９に記載の方法。
【請求項２１】
前記囲みボックスが長さＬの長い辺と長さＳの短い辺を有し、前記対角線ラインが前記回路レイアウトの一辺とある角度Ａを形成し、前記囲みボックスの前記２つの隅間の前記距離（Ｄ）を測定するステップが、前記式、Ｄ＝［Ｌ−｛Ｓ（ｃｏｓＡ／ｓｉｎＡ）｝］＋Ｓ／ｓｉｎＡを使用するステップを含む、請求項２０に記載の方法。
【請求項２２】
前記回路レイアウト領域が、異なるタイプの相互接続ラインを指定する配線モデルを使用し、前記角度Ａが、前記回路レイアウトの前記辺に対して少なくとも１つのタイプの対角線相互接続ラインのある角度に対応する、請求項２１に記載の方法。
【請求項２３】
前記距離が、前記ネットの前記回路素子を接続するために必要な相互接続ラインの長さの推定値である、請求項２０に記載の方法。
【請求項２４】
前記推定値が、もっと下の境界の推定値である、請求項２３に記載の方法。
【請求項２５】
前記回路レイアウト領域が追加のネットを含み、各ネットが前記回路レイアウト領域内の一組の回路素子を表し、前記方法が、特定の各追加ネットに対して、
（ｉ）前記ネットの前記回路素子を囲む特定の囲みボックスを形成するステップと、
（ｉｉ）前記特定の囲みボックスの２つの対向する隅間の前記距離を測定するステップとをさらに含み、
複数の前記測定した距離のそれぞれが、対角線の少なくとも一部を通り、
各ネットに対する前記測定した距離から前記配線コストを指定し、前記配線コストが、前記ネットの前記回路素子を接続するのに必要な相互接続ラインの推定値である、請求項２０に記載の方法。
【請求項２６】
前記配置コストを指定するステップが、測定した各距離を加算するステップを含む、請求項２５に記載の方法。
【請求項２７】
特定の各囲みボックスの２つの対向する隅間の前記距離（Ｄ）が、前記式、Ｄ＝［Ｌ−｛Ｓ（ｃｏｓＡ／ｓｉｎＡ）｝］＋Ｓ／ｓｉｎＡにより指定され、
Ｌは前記特定の囲みボックスの最も長い辺であり、Ｓは前記特定の囲みボックスの最も短い辺であり、
Ｓがゼロでない場合、Ａが、前記回路レイアウトの一辺を含む、前記特定のボックスの対向する隅を通る前記対角線ラインにより形成された角度である、請求項２５に記載の方法。
【請求項２８】
前記回路レイアウト領域が、異なるタイプの相互接続ラインを指定する配線モデルを使用し、前記角度Ａが、前記回路レイアウトの前記辺に対して少なくとも１つのタイプの対角線相互接続ラインのある角度に対応する、請求項２７に記載の方法。
【請求項２９】
前記配線モデルが、マンハッタン・ラインおよび４５度対角線ラインを含む、請求項２８に記載の方法。
【請求項３０】
前記配線モデルが、マンハッタン・ラインおよび１２０度対角線ラインを含む、請求項２８に記載の方法。
【請求項３１】
前記配置コストが最初の配置構成のコストである、請求項２５に記載の方法。
【請求項３２】
前記最初の配置構成が、ルーティング中、前記ルータの潜在的対角線配線に対応しない配置装置により指定される、請求項２５に記載の方法。
【請求項３３】
任意の囲みボックスを計算する前に、前記レイアウト領域内の少なくとも１つの回路モジュールの移動を識別するステップをさらに含み、
前記ネットが、前記回路モジュールの前記移動により影響を受けている前記ネットであり、
前記配置コストが、前記移動後にネットにより指定された配置構成のコストである、請求項２８に記載の方法。
【請求項３４】
前記計算した配置コストに基づいて前記移動をするかどうかを判断するステップをさらに含む、請求項３３に記載の方法。
【請求項３５】
前記回路素子が回路モジュールのピンを含む、請求項２５に記載の方法。
【請求項３６】
前記回路素子が回路モジュールを含む、請求項２５に記載の方法。
【請求項３７】
回路レイアウトの領域内に回路モジュールを配置するための方法であって、前記回路レイアウト領域が、前記回路レイアウト領域内の複数の回路素子を表す１つのネットを含み、前記方法が、
ａ）前記ネットの前記回路素子を接続するための相互接続ラインのトポロジーをモデル化する接続グラフを形成するステップであって、前記接続グラフが一組の縁部を有し、各縁部が前記ネットの２つの回路素子を接続していて、少なくとも１つの縁部が、少なくともその一部が対角線であるステップと、
ｂ）前記接続グラフの属性を測定するステップと、
ｃ）前記測定した属性に基づいて配置コストを指定するステップとを含む方法。
【請求項３８】
前記属性が前記接続グラフの長さであり、前記長さを測定するステップが、各縁部の長さを測定し、前記計算した縁部の長さを結合するステップを含む、請求項３７に記載の方法。
【請求項３９】
前記接続グラフの前記長さが、前記ネットの前記回路素子を接続するために必要な相互接続ラインの長さの推定値である、請求項３８に記載の方法。
【請求項４０】
各縁部の長さを測定するステップが、
ａ）その対向する隅として、前記縁部により接続している前記２つの回路素子を有し、長さＬと幅Ｓとを有し、前記長さが前記ボックスの最も長い辺であり、前記幅が前記ボックスの最も短い辺である囲みボックスを形成するステップと、
ｂ）前記式、Ｄ＝［Ｌ−｛Ｓ（ｃｏｓＡ／ｓｉｎＡ）｝］＋Ｓ／ｓｉｎＡにより、前記囲みボックスの前記２つの隅間の前記距離（Ｄ）を計算するステップとを含み、Ｓがゼロでない場合、Ａが、前記回路レイアウトの一辺を含む、前記ボックスの対向する隅のところで前記２つの回路素子を接続している前記縁部により形成される角度である、請求項３８に記載の方法。
【請求項４１】
前記回路レイアウト領域が、異なるタイプの相互接続ラインを指定する配線モデルを使用し、前記角度Ａが、前記回路レイアウトの前記辺に対して少なくとも１つのタイプの対角線相互接続ラインのある角度に対応する、請求項４０に記載の方法。
【請求項４２】
前記配線モデルが、マンハッタン・ラインと４５度対角線ラインとを含み、Ａが４５度に等しい、請求項４１に記載の方法。
【請求項４３】
縁部の囲みボックスの長さおよび幅が等しい場合に、前記縁部が正確に４５度の対角線である、請求項４２に記載の方法。
【請求項４４】
縁部の囲みボックスの長さおよび幅が異なる場合であって、前記幅がゼロでない場合、前記縁部が水平セグメント、垂直セグメントおよび４５度セグメントを含む、請求項４２に記載の方法。
【請求項４５】
前記配線モデルが、マンハッタン・ラインおよび１２０度対角線ラインを含む、請求項４１に記載の方法。
【請求項４６】
前記回路レイアウト領域が、一組のネットを含み、各ネットが、前記回路レイアウト領域内の一組の回路素子を表し、前記方法が、
各ネットに対して、
前記ネットの前記回路素子を接続している接続グラフを形成するステップであって、前記接続グラフが一組の縁部を含み、各縁部が前記ネットの２つの回路素子を接続するステップと、
前記接続グラフの前記長さを測定するステップとを含み、
少なくとも１つの接続グラフが、少なくともその一部が対角線である少なくとも１つの縁部を含み、
形成した各接続グラフの前記測定した長さに基づいて前記配線コストを指定するステップを含む、請求項３８に記載の方法。
【請求項４７】
前記配線コストを指定するステップが、形成した各接続グラフの前記長さを結合するステップを含む、請求項４６に記載の方法。
【請求項４８】
各接続グラフの前記長さを測定するステップが、前記接続グラフの各縁部の長さを測定するステップと、前記計算した縁部の長さを結合するステップとを含み、各縁部の長さを測定するステップが、
ａ）その対向する隅として、前記縁部により接続している前記２つの回路素子を有し、長さＬと幅Ｓとを有し、前記長さが前記ボックスの最も長い辺であり、前記幅が前記ボックスの最も短い辺である囲みボックスを形成するステップと、
ｂ）前記式、Ｄ＝［Ｌ−｛Ｓ（ｃｏｓＡ／ｓｉｎＡ）｝］＋Ｓ／ｓｉｎＡにより、前記囲みボックスの前記２つの隅間の前記距離（Ｄ）を計算するステップとを含み、Ｓがゼロでない場合、Ａが、前記回路レイアウトの一辺を含む、前記ボックスの対向する隅のところで前記２つの回路素子を接続している前記縁部により形成される角度である、請求項４７に記載の方法。
【請求項４９】
前記配置コストが最初の配置構成のコストである、請求項４８に記載の方法。
【請求項５０】
前記最初の配置構成が、ルーティング中、前記ルータの潜在的対角線配線に対応しない配置装置により指定される、請求項４９に記載の方法。
【請求項５１】
任意の接続グラフを形成する前に、前記レイアウト領域内の少なくとも１つの回路モジュールの移動を識別するステップをさらに含み、
前記ネットが、前記回路モジュールの前記移動により影響を受けている前記ネットであり、
前記配置コストが、前記移動後に前記ネットにより指定された配置構成のコストである、請求項４８に記載の方法。
【請求項５２】
前記計算した配置コストに基づいて前記移動をするかどうかを判断するステップをさらに含む、請求項５１に記載の方法。
【請求項５３】
前記回路素子が回路モジュールのピンを含む、請求項４８に記載の方法。
【請求項５４】
前記回路素子が回路モジュールを含む、請求項４８に記載の方法。
【請求項５５】
各接続グラフが最小スパニング・ツリーである、請求項４８に記載の方法。
【請求項５６】
各接続グラフがシュタイナー・ツリーである、請求項４８に記載の方法。
【請求項５７】
回路レイアウトの領域内に回路モジュールを配置するための方法であって、前記回路レイアウト領域が複数のネットを含み、各ネットが前記回路レイアウト領域内の一組の回路素子を表し、前記方法が、
ａ）対角線分割ラインにより前記回路レイアウト領域を２つのサブ領域に分割するステップと、
ｂ）前記対角線分割ラインにより生成した前記サブ領域の両方に回路素子を有するネットの数を測定するステップとを含む方法。
【請求項５８】
両方のサブ領域内に回路素子を有するネットの数を低減するために、前記領域内の前記回路素子の位置を変更するステップをさらに含む、請求項５７に記載の方法。
【請求項５９】
前記回路素子の位置を変更するステップが、ＫＬＦＭ最適化プロセスを使用するステップを含む、請求項５８に記載の方法。
【請求項６０】
前記回路素子の位置を変更するステップが、焼きなまし最適化プロセスを使用するステップを含む、請求項５８に記載の方法。
【請求項６１】
前記回路素子の位置を変更するステップが、ローカル最適化プロセスを使用するステップを含む、請求項５８に記載の方法。
【請求項６２】
ａ）前記サブ領域の１つを第２の分割ラインにより２つのもっと小さいサブ領域に分割するステップと、
ｂ）前記第２の分割ラインにより生成された前記もっと小さいサブ領域の両方に回路素子を有するネットの数を測定するステップとをさらに含む、請求項５８に記載の方法。
【請求項６３】
前記第２の分割ラインが対角線ラインである、請求項６２に記載の方法。
【請求項６４】
前記第２の分割ラインが垂直ラインまたは水平ラインである、請求項６２に記載の方法。
【請求項６５】
前記もっと小さいサブ領域の両方に回路素子を有するネットの数を低減するために、前記もっと小さいサブ領域間で回路素子を移動するステップをさらに含む、請求項６２に記載の方法。
【請求項６６】
前記領域が、第３の分割ラインによるもっと大きい領域の分割により形成された、請求項５７に記載の方法。
【請求項６７】
前記第３の分割ラインが対角線ラインである、請求項６６に記載の方法。
【請求項６８】
前記第３の分割ラインが垂直ラインまたは水平ラインである、請求項６６に記載の方法。
【請求項６９】
回路レイアウトの領域を複数のサブ領域に分割する配置装置に対して、配置コストを計算するための方法であって、該方法が、
ａ）一組のサブ領域に対して、前記一組のサブ領域を接続している接続グラフを識別するステップであって、前記接続グラフが、少なくともその一部が対角線である少なくとも１つの縁部を有するステップと、
ｂ）前記接続グラフの属性を計算するステップと、
ｃ）前記計算した属性から配置コストを識別するステップとを含む方法。
【請求項７０】
前記属性が前記接続グラフの前記長さであり、前記配置コストが前記接続グラフの前記長さに等しい、請求項６９に記載の方法。
【請求項７１】
前記接続グラフの前記長さが、前記一組のサブ領域内に回路素子を有するネットをルーティングするために必要なワイヤ長さの推定値である、請求項７０に記載の方法。
【請求項７２】
前記方法が、前記回路レイアウト領域内のネットの配置コストを計算し、各ネットが、前記回路レイアウト領域内の一組の回路素子を表し、
前記配置装置が、前記接続グラフの識別、前記属性の計算、および前記配置コストの識別を行い、
前記接続グラフの識別を行う前に、前記配置装置が，前記一組のサブ領域を、あるネットの前記一組の回路素子を含む前記組として識別し、
前記配置コストが前記ネットの配置コストである、請求項７０に記載の方法。
【請求項７３】
前記回路レイアウト領域内の各ネットに対して、
（ｉ）前記ネットの前記一組の回路素子を含む一組のサブ領域を識別するステップと、
（ｉｉ）前記一組のサブ領域を接続している接続グラフを識別するステップと、
（ｉｉｉ）前記接続グラフの前記長さを計算するステップとを含み、
いくつかの接続グラフが、少なくともその一部が対角線である少なくとも１つの縁部を有し、
各接続グラフの前記計算した長さから全配置コストを識別するステップを含む、請求項７２に記載の方法。
【請求項７４】
前記方法が、前記分割したサブ領域に対する配置コストを予め計算し、前記方法が、
サブ領域の特定の各組に対して、
（ｉ）サブ領域の前記特定の組を接続している接続グラフを識別するステップと、
（ｉｉ）前記接続グラフの前記長さを計算するステップとをさらに含み、
いくつかの前記接続グラフが、少なくともその一部が対角線である少なくとも１つの縁部を有する、請求項７０に記載の方法。
【請求項７５】
サブ領域の特定の各縁部に対して、記憶構造体内に、前記接続グラフの前記長さを、サブ領域の前記特定の組の配置コストとして記憶するステップをさらに含む、請求項７４に記載の方法。
【請求項７６】
前記配置装置が、分割した回路レイアウト領域内に回路モジュールを配置し、
前記領域が一組のネットを含み、各ネットが前記回路レイアウト領域内の一組の回路素子を表し、
前記回路レイアウト領域内の各ネットに対して、前記配置装置が、
（ｉ）前記ネットの前記一組の回路素子を含む一組のサブ領域を識別し、
（ｉｉ）前記記憶構造体から、前記一組のサブ領域を接続している前記接続グラフの前記長さを検索し、
前記配置装置が、各ネットの前記検索した長さから前記ネットに対する配置コストを識別する、請求項７５に記載の方法。
【請求項７７】
サブ領域の特定の各組に対して、
前記計算した長さから遅延コストを入手するステップと、
記憶構造体内に、前記遅延コストをサブ領域の前記特定の組の配置コストとして記憶するステップとをさらに含む、請求項７４に記載の方法。
【請求項７８】
前記接続グラフが最小スパニング・ツリーである、請求項６９に記載の方法。
【請求項７９】
前記接続グラフがシュタイナー・ツリーである、請求項６９に記載の方法。
【請求項８０】
前記回路レイアウト領域が、異なるタイプの相互接続ラインを含む配線モデルを使用し、前記角度Ａが、前記回路レイアウトの前記辺に対して少なくとも１つのタイプの対角線相互接続ラインのある角度に対応する、請求項６９に記載の方法。
【請求項８１】
回路レイアウトの領域内で、一組のネットをルーティングするために、対角線配線およびマンハッタン配線を使用するルータを使用する電子設計プロセスに対して、回路レイアウトの領域内に回路モジュールを配置するための方法であって、前記回路レイアウト領域が複数のネットを含み、前記方法が、
ａ）１つのネットを選択するステップと、
ｂ）前記選択したネットに対して、ルーティング中、潜在的対角線配線に対応する遅延コストを計算するステップと、
ｃ）前記計算した遅延コストから配置コストを識別するステップとを含む方法。
【請求項８２】
前記配置コストが前記遅延コストに等しい、請求項８１に記載の方法。
【請求項８３】
ａ）各ネットに対して、ルーティング中、潜在的対角線配線に対応する遅延コストを計算するステップと、
ｂ）前記計算した遅延コストから前記配置コストを識別するステップとをさらに含む、請求項８１に記載の方法。
【請求項８４】
前記配置コストが前記遅延コストの合計に等しい、請求項８３に記載の方法。
【請求項８５】
各ネットが、前記回路レイアウト領域内の一組の回路素子を表し、各ネットに対する前記遅延コストを計算するステップが、
ａ）各ネットに対するワイヤ長さの推定値を計算するステップであって、前記ワイヤ長さの推定値が、ルーティング中に、対角線配線に対応することにより計算されるステップと、
ｂ）前記ネットに対する前記計算したワイヤ長さの推定値から各ネットに対する前記遅延コストを計算するステップとを含む、請求項８３に記載の方法。
【請求項８６】
少なくとも１つのネットに対して、下記の線形関係により、前記ネットのワイヤ長さ（Ｌ）コストから前記遅延コスト（Ｄ）を計算する、請求項８５に記載の方法：
Ｄ＝Ａ＊Ｗ＋Ｂ
ここで、ＡおよびＢはスカラ定数である。
【請求項８７】
少なくとも１つのネットに対して、下記の非線形関係により前記ネットのワイヤ長さ（Ｌ）コストから前記遅延コスト（Ｄ）を計算する、請求項８５に記載の方法：
Ｄ＝Ａ＊ＷＮ＋Ａ’＊ＷＮ−１＋．．．＋Ｂ
ここで、Ａ，Ａ’ＢおよびＮはスカラ定数である。
【請求項８８】
前記ルーティング・モデルが、少なくとも１つの対角線ルーティング方向を指定し、各ネットに対する前記ワイヤ長さの推定値の計算が、
ａ）前記ネットの前記一組の回路素子を囲む囲みボックスを識別するステップと、
ｂ）下式、Ｄ＝［Ｌ−｛Ｓ（ｃｏｓＡ／ｓｉｎＡ）｝］＋Ｓ／ｓｉｎＡにより、前記囲みボックスの２つの対向する隅間の前記距離（Ｄ）を測定するステップとを含み、Ｌは、前記囲みボックスの最も長い辺であり、Ｓは、前記囲みボックスの最も短い辺であり、Ａは、前記配線モデルが指定する前記対角線ルーティング方向のうちの１つのある角度である、請求項８５に記載の方法。
【請求項８９】
各ネットに対する前記ワイヤ長さの推定値の計算が、
前記ネットの前記回路素子を接続している接続グラフを識別するステップと、
前記接続グラフの前記長さを識別するステップとを含み、
前記接続グラフの中のあるものが、少なくともその一部が対角線である少なくとも１つの縁部を含む、請求項８５に記載の方法。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【発明の名称】配置の際に対角線配線を考慮に入れるための方法および装置
【技術分野】
【０００１】
本発明は、配置の際に対角線配線を考慮に入れるための方法および装置に関する。
【背景技術】
【０００２】
集積回路（「ＩＣ」）は、多くの電子構成要素（例えば、トランジスタ、抵抗、ダイオード等）を含むデバイスである。これらの電子構成要素は、多くの場合、ＩＣ上で相互に接続して、複数の回路構成要素（例えば、ゲート、セル、記憶装置、演算装置、コントローラ、デコーダ等）を形成する。以下の説明においては、ＩＣの電子および回路構成要素全体を「構成要素」と呼ぶ。
ＩＣは、また、電子および回路構成要素を相互に接続している複数の配線の層（「配線層」）を含む。例えば、多くのＩＣは、現在、その電子および回路構成要素を相互に接続している金属またはポリシリコンの配線層（以下の説明においては、総括的に「金属層」と呼ぶ）により製造されている。１つの通常の製造モデルは５つの金属層を使用する。理論的には、金属層上の配線を全角度配線にすることができる（すなわち、任意の方向に配線することができる）。このような全角度配線は、通常、ユークリッド配線と呼ばれる。しかし、実際には、各金属層は、通常、好適な配線方向を持ち、その好適な方向は、連続している金属層間で異なる。多くのＩＣは、好適な方向の交互の層の向きを水平および垂直方向に指定するマンハッタン配線モデルを使用している。この配線モデルの場合には、大多数のワイヤは９０度曲がることができるだけである。しかし、場合によっては、好適な水平および垂直層上で、対角線方向に急激に曲げることもできる。
設計エンジニアは、ＩＣの回路説明を、レイアウトと呼ぶ幾何学的な表示に変換することによりＩＣを設計する。レイアウトを作成するために、設計エンジニアは、通常、電子設計オートメーション（「ＥＤＡ」）アプリケーションを使用する。これらのアプリケーションは、ＩＣ設計レイアウトを生成し、編集し、分析するための複数の組のコンピュータをベースとするツールを提供する。
ＥＤＡアプリケーションは、ＩＣ上の異なる材料およびデバイスを表す幾何学的形状によりレイアウトを生成する。例えば、ＥＤＡツールは、通常、ＩＣ構成要素を相互に接続するワイヤのセグメントを表すために、長方形のラインを使用する。これらのツールは、また、さまざまな形および大きさの幾何学的対象物として電子および回路ＩＣ構成要素を表す。本明細書においては、説明を分かりやすくするために、これらの幾何学的対象物を長方形のブロックで示す。
また、本明細書においては、「回路モジュール」という用語は、ＥＤＡアプリケーションによる電子または回路ＩＣ構成要素を意味する。ＥＤＡアプリケーションは、通常、その側面上にピンを備える回路モジュールを示す。これらのピンは、相互接続ラインに接続する。
ネットは、通常、電気的に接続しなければならないピンの集合体を形成する。レイアウト内のネットのすべてまたはその一部のリストは、ネット・リストと呼ばれる。すなわち、ネット・リストは、ネットのグループを指定し、ネットのグループは、一組のピン間の相互接続を指定する。
【０００３】
図１は、ＩＣレイアウト１００の一例である。このレイアウトは、ピン１３０〜１６０を有する５つの回路モジュール１０５、１１０、１１５、１２０および１２５を含む。４つの相互接続ライン１６５〜１８０は、そのピンを通してこれらのモジュールを接続する。さらに、３つのネットは、ピン間の相互接続を指定する。より詳細に説明すると、ピン１３５、１４５および１６０は、３つのピン・ネットを形成し、一方、ピン１３０および１５５、およびピン１４０および１５０は、それぞれ２つの２ピン・ネットを形成する。図１に示すように、（１０５のような）回路モジュールは、複数のネット上に複数のピンを持つことができる。
ＩＣ設計プロセスは、種々の動作を必要とする。ＩＣレイアウトを入手するために、ＥＤＡアプリケーションが通常行う物理的設計動作としては下記のようなものがある。（１）単一のチップ上に形成するには、回路が大きすぎる場合に、回路を分割する回路分割；（２）回路モジュールの整合および相対的な向きをチェックするフロア・プラニング；（３）回路モジュールの位置をもっと正確に決定するための設置；（４）回路モジュール間の相互接続を完成するためのルーティング；（５）ＩＣの全面積を小さくするためにレイアウトを圧縮する圧縮；（６）設計および機能要件に適合しているかどうかを確認するために、レイアウトをチェックする確認。
配置は、物理的設計段階における最も重要な作業である。配置は、レイアウト面積の低減、ワイヤの長さの低減、ワイヤの集中の低減等のような、いくつかの目的を達成するために、レイアウト上に回路モジュールを配置するプロセスである。うまく配置しないと、広い面積が必要になるばかりでなく、ルーティングが困難になり、性能が悪くなる恐れがある。
今迄多くのＥＤＡ配置装置が提案されてきた。ある種の配置装置は、制約つき配置装置であり、（１）配置構成の質を定量化する配置スコア（すなわち、配置コスト）を生成するためのコスト計算機能を使用し、（２）コスト計算機能が生成した配置コストを改善するために、配置構成を反復して修正するための最適アルゴリズムを使用する。
制約つき最適化配置装置は、通常、（１）回路モジュールのリスト、（２）これらモジュールに対する最初の配置構成、および（３）モジュール間の相互接続を指定するネット・リストを受信する。最初の配置構成は、ランダムに行うことができる（すなわち、すべてのモジュールを、ランダムに配置することができる）。別な方法としては、最初の構成の一部または全部をフロア・プラニングのような、前の物理的設計作業により指定することができる。
その後で、制約つき最適化配置装置は、初期配置構成の品質を測定するために、コスト計算機能を使用する。コスト機能は、配置品質を示す測定基準スコアを生成する。異なるコスト計算機能は、異なる計量を測定する。例えば、以下にさらに詳細に説明するように、いくつかの機能は、ワイヤの長さを測定する（例えば、各ネットの最小スパニング・ツリー、シュタイナー・ツリーまたは囲みボックスの周囲を測定する）。一方、他の機能は、集中を測定する。（例えば、分割ラインと交差するネットの数を測定する）。
最初の配置構成の測定基準コストを計算した後で、制約つき最適化配置装置は、そのコスト計算機能が生成した配置スコアを改善する目的で、配置構成を反復して修正するために、最適化アルゴリズムを使用する。異なる最適化技術は、配置構成を異なる方法で修正する。例えば、反復の度ごとに、ある技術は、回路モジュールを移動し、他の技術は２つのモジュールを交換し、さらに他の技術は多数の関連するモジュールを移動する。また、反復の度ごとに、（例えば、ＫＬＦＭアルゴリズムおよびタブサーチ・アルゴリズムのような）いくつかの最適化技術は、最善の移動を探索するが、一方、（例えば、シミュレートした焼きなましおよびローカル最適化のような）他の最適化技術は、移動をランダムに選択する。さらに、（例えば、シミュレートした焼きなましのような）いくつかの技術は、測定基準スコアを悪くする移動を受け入れ、一方、（例えば、ローカル最適化のような）他の技術はそうしない。
４つのタイプの制約つき最適化配置技術について以下に説明する。
【０００４】
Ａ．最小カット二分割法
いくつかの配置装置は、最小カット二分割を使用する。この技術は、ＩＣレイアウトを反復して連続的ペアの領域に分割するために、水平分割ラインおよび垂直分割ラインを使用する。次に、反復の各レベルで、この技術は、そのレベルに対する分割ラインが交差するネットの数を少なくするために、そのレベルにおける領域間で回路モジュールを移動する。反復の各レベルにおけるネット分割コストを最も少なくすることにより、これらの技術は、分割ラインを横切るワイヤの集中を少なくする。
図２および図３は、最小カット二分割法の一例を示す。図２は、最初に、垂直分割ライン２０５により、２つの領域２１０および２１５に分割されるＩＣレイアウト２００を示す。この最初の分割ラインを形成した後で、最小カット二分割法は、この分割ラインと交差するネットの数を計算する。この数は、この分割ラインの周囲のワイヤの集中を示す。次に、（ＫＬＦＭのような）最適化アルゴリズムが、最初の分割ライン２０５を横切るネット・カット・コストを最小にするために、最初の配置を反復して修正するするために、（すなわち、回路モジュールを反復して移動するために）使用される。
最初の初期分割ラインを横切るワイヤの集中が最小になると、最小カット二分割法が、最初の分割ラインにより生成した２つの領域に反復して適用され、その後で、最小カット二分割法は、後続の分割ラインが生成する結果として得られる領域に対して適用される。以下同じ。図３は、７本の分割ライン２０５および２２０〜２４５により反復して分割された後のＩＣレイアウト２００を示す。
Ｂ．半周方法
半周方法は、いくつかの制約つき最適化技術が使用する、もう１つのコスト計算機能である。この方法は、配置のワイヤ長さコストの推定値を迅速に生成する。各ネットに対して、この方法は、通常、（１）すべてのネット・ピンを含む最小の長方形の囲みボックスを発見し、（２）この囲みボックス長方形の半周を計算する。
図４は、図１のピン１３５、１４５および、１６０を含む１つのネットに対する囲みボックス４００を示す。このボックス４００の半周の計算値は、幅４０５および高さ４１０の和に等しい。半周のこの計算値は、あるネットを通すのに必要なワイヤの長さ上のもっと低い境界推定値である。
半周方法は、配置構成に対する推定ワイヤ長さコストを入手するために、すべてのネットのすべての長方形の囲みボックスの半周値を合計する。次に、このワイヤ長さコストの推定値を小さくし、それにより許容できる配置構成を入手するために、配置構成を反復して修正するために最適化技術を使用することができる。
【０００５】
Ｃ．最小スパニング・ツリー
配置構成のワイヤ長さコストを推定するために、いくつかの制約つき最適化配置技術は、各ネットに対して直線最小スパニング・ツリー（「ＲＭＳＴ」）の長さを計算して、加算する。ネットのＲＭＳＴは、通常、ピン位置でだけ分岐する最短マンハッタン配線経路を通るネットのピンを接続する（すなわち、結ぶ）ツリーとして定義される。
より詳細に説明すると、Ｎ個のピンを含むネットに対するＲＭＳＴは、（１）Ｎ個のピンに対応するＮ個の（ポイントまたは頂点とも呼ぶ）ノードと、（２）そのＮ個のノードを接続するＮ―１個の縁部とを含む。さらに、ＲＭＳＴの縁部は、水平または垂直であり、これらの縁部は、ツリーのＮ個のノードの中の１つのノードからスタートし、そこで終わる。図５は、図１のピン１３５、１４５および１６０を含むネットに対するＲＭＳＴ５０５を示す。
各ネットに対するＲＭＳＴの長さの合計が、配置のワイヤ長さコストの推定値である。次に、このワイヤ長さコストを最も小さくする目的で、配置構成を反復して修正するために、最適化アルゴリズムを使用することができる。
Ｄ．シュタイナー・ツリー
直線シュタイナー・ツリーは、配置構成のワイヤ長さコストを推定するために、制約つき最適化配置技術が生成するもう１つのタイプのツリー構造体である。直線シュタイナー・ツリーは、シュタイナー・ツリーが、分岐をピン位置だけ制限しないという点を除けば、ＲＭＳＴに類似している。直線シュタイナー・ツリーの場合には、水平縁部または垂直縁部は、２つの他のネット・ピンを接続する１つの縁部上の一点から分岐することができる。
Ｎ個のピンを含むネットに対するシュタイナー・ツリーを形成するために、シュタイナー点と呼ぶ追加の点が、通常、ネットに追加される。Ｒ個のシュタイナー点がネットに追加されると、Ｎ個のピンを含むネットに対する直線シュタイナー・ツリーは、Ｎ＋Ｒ個の点上のＲＭＳＴである。図６は、図１のピン１３５、１４５および１６０を含むネットに対するシュタイナー・ツリー６０５を示す。この例の場合には、追加したシュタイナー点は点６１０である。
Ｒ個のシュタイナー点を選択し、シュタイナー・ツリーを形成するために、多くの場合発見的技術が使用される。何故なら、これらの問題は多項式時間内に解決できないからである。発見的技術は、すべての設計制約を満足させる最善の解ではなく、優れた解に対する全探索スペースのサブスペースの内部だけを探索するうまいアルゴリズムであるからである。
それ故、ある配置のワイヤ長さコストの推定値を入手するために、いくつかの制約つき最適化配置技術は、ネットに対する直線シュタイナー・ツリーを識別する目的で発見的近似を使用する。すべてのネットに対する発見的シュタイナー・ツリーの長さの合計が、ある配置のワイヤ長さコストの推定値である。次に、このワイヤ長さコストを最も小さくする目的で、配置構成を反復して修正するために、最適化アルゴリズムを使用することができる。
【０００６】
Ｅ．反復グリッド分割法
反復グリッド分割法は、配置構成のワイヤ長さコストを計算するためのもう１つの技術である。反復グリッド分割配置装置は、通常、ＩＣレイアウトを反復していくつかのサブ領域に分割するために、複数の組の交差している水平ラインおよび垂直ラインを使用する。次に、各反復レベルで、配置装置は、ワイヤ長さコストを低減する目的で、その反復レベルで定義したサブ領域間で、回路モジュールを移動するために最適化アルゴリズムを使用する。特定の反復レベルでワイヤ長さコストを最小にした後で、配置装置は、これらの分割したサブ領域内のワイヤ長さコストをさらに最適化するために、ある基準に適合するそのレベルのサブ領域を反復して分割する。
例えば、ある反復分割技術は、ＩＣレイアウトを反復して４等分部分（すなわち、４つの領域）に分割する。このアプローチの場合、最小スパニング・ツリーは、通常、異なる４等分部分内のモジュールを接続するためのワイヤ長さコストを推定するために使用される。もう１つの反復分割技術は、ＩＣレイアウトを、反復して９つの領域に分割する。ある場合には、このタイプの分割は「シャープ」分割と呼ばれる。このタイプの分割の場合、シュタイナー・ツリーは、通常、異なる領域内の接続しているモジュールに対する、ワイヤ長さコストを推定するために使用される。
上記配置技術は、その配置構成コストを計算する際に、対角線配線を考慮に入れない。それ故、相互接続ラインに対して対角線経路が選択された場合、これらの技術を使用すると配置構成がうまくいかない。そのため、レイアウト領域を効率的に使用するができないし、ワイヤの使用量が増え、および／または多くのワイヤが集中することになる。それ故、その配置構成コストを計算する際に、対角線配線を考慮に入れる配置装置のための技術の開発が待望されている。
【発明の開示】
【０００７】
本発明は、配置の際に対角線配線を考慮に入れる方法および装置に関する。本発明のいくつかの実施形態は、潜在的配置構成のコストを計算する際に、対角線を使用する配置装置である。例えば、いくつかの実施形態は、（１）あるネット・リスト内の各ネットに対して、そのネットのすべての回路素子を含む囲みボックスを識別し、（２）その全体または一部が対角線であってもよいラインを使用して、各囲みボックスの属性を計算し、（３）計算した属性に基づいてワイヤ長さコストの推定値を計算することにより、ある配置構成のワイヤ長さコストを推定する。
いくつかの配置構成のワイヤ長さコストを推定するために、他の実施形態は、ネット相互接続トポロジーをモデル化する接続グラフを形成する。これらの接続グラフは、その全体または一部が対角線である縁部を持つことができる。これらの実施形態は、また、接続グラフの他の特性も計算することができる。
さらに他の実施形態は、問題の回路領域をいくつかのサブ領域に分割する。回路領域内のあるネットに対して、これらの実施形態は、回路素子のネットの組を含む一組のサブ領域を識別し、識別した一組のサブ領域を横切る接続グラフの（例えば、ワイヤ長さのような）属性を識別する。識別した接続グラフは、少なくとも１つのその全体または一部が対角線である縁部を持つ。次に、これらの実施形態は、配置測定基準を計算するために識別した属性を使用する。
ある配置構成に対して、いくつかの実施形態は、潜在的対角線配線についての遅延コストを計算する。例えば、いくつかの実施形態は、あるネットに対するワイヤ長さ配置コストから、そのネットに対する遅延コストを計算する。
他の実施形態は、潜在的配置構成の集中コストを測定するために対角線を使用する。例えば、いくつかの配置装置は、ＩＣレイアウトを複数の領域に分割する分割ラインとして複数の対角線を使用する。その後で、これらの配置装置は、対角線分割ラインにより分割されたネットの数を測定することにより、集中コストの推定値を生成する。
本発明の新規な機能は、添付の特許請求の範囲に記載してある。しかし、説明のために、本発明のいくつかの実施形態を下記の図面に示す。
【発明を実施するための最良の形態】
【０００８】
本発明は、配置の際に対角線配線を考慮に入れる方法および装置に関する。以下の説明においては、説明のために多くの部材を詳細に説明してある。しかし、通常の当業者であれば、これらの特定の詳細な説明によらなくても、本発明を実行することができることを理解することができるだろう。他の実施形態の場合には、不必要な詳細な説明により、本発明の説明が分かりにくくならないように、周知の構造体およびデバイスをブロック図の形で示す。
本発明のいくつかの実施形態は、潜在的配置構成のコストを計算する際に、対角線を使用する配置装置である。例えば、いくつかの実施形態は、（１）各ネットに対して、そのネットのすべての回路素子（すなわち、ピンまたは、回路モジュール）を含む囲みボックスを識別し、（２）その全体または一部が対角線であってもよいラインを使用して、各囲みボックスの属性を計算し、（３）計算した属性に基づいて、配置コストを生成することにより配置構成のワイヤ長さコストを推定する。このような囲みボックス法を使用するいくつかの実施形態については、第ＩＩ節のところで説明する。
いくつかの配置構成のワイヤ長さコストを推定するために、他の実施形態は、潜在的相互接続トポロジーをモデル化する。これらの実施形態は、その全体または一部が対角線である縁部を持つことができる接続グラフを形成する。このような接続グラフの例としては、最小スパニング・ツリーおよびシュタイナー・ツリー等がある。第ＩＩＩ節は、いくつかのこのような実施形態を示す。
他の実施形態は、ＩＣレイアウトを複数の領域に分割する分割ラインとして、対角線を使用する。次に、これらの実施形態は、対角線分割ラインにより分割したネットの数を測定することにより、集中コスト推定値を生成する。対角線分割ラインによる最小カット二分割法を使用するいくつかのこのような実施形態については、第ＩＶ節のところで説明する。
他の実施形態は、ＩＣ領域を、複数のサブ領域に分割するために分割ラインを使用し、次に、これらサブ領域に関するネットの構成に基づいてワイヤ長さコストを測定する。いくつかのこのような実施形態については、第Ｖ節のところで説明する。また、いくつかの実施形態は、ルーティング中の潜在的対角線配線による配置遅延コストを計算する。いくつかのこのような実施形態については、第ＶＩ節のところで説明する。
第ＩＩ節〜第ＶＩ節に記載するいくつかの実施形態について説明する前に、本発明のコスト計算法と一緒に使用することができる、いくつかの対角線配線アーキテクチャについて第Ｉ節のところで説明する。また、第ＩＩ節〜第ＶＩ節のところで説明するコスト計算法により計算したコストを、最適化するために使用することができるいくつかの最適化技術については、第ＶＩＩ節のところで説明する。次に、本発明のいくつかの実施形態で使用するコンピュータ・システムについて、第ＶＩＩＩ節のところで説明する。最後に、配置中に対角線配線を考慮に入れる利点について、第ＩＸ節のところで説明する。
【０００９】
Ｉ．対角線配線アーキテクチャ
本発明のいくつかの実施形態は、対角線相互接続ライン（すなわち、対角線配線）を含むＩＣレイアウトに対する配置構成コストを計算する。これらの実施形態の中のあるものの場合、ＩＣレイアウトは、対角線相互接続ラインを含むばかりでなく、水平相互接続ラインおよび垂直相互接続ラインも含む。
本明細書においては使用する場合、相互接続ラインが、レイアウトの境界の辺の中の１つに対して、０度または９０度以外の角度を形成する場合、相互接続ラインは「対角線」である。一方、相互接続ラインが、レイアウトの境界の辺の中の１つに対して０度または９０度を形成する場合、相互接続ラインは水平ラインおよび垂直ラインである。
図７は、水平相互接続ライン、垂直相互接続ライン、および４５度対角線配相互接続ラインを使用するＩＣレイアウト７００の配線アーキテクチャ（すなわち、相互接続ラインアーキテクチャ）を示す。本明細書においては、アーキテクチャという用語は、相互接続ラインが、任意の所与の点から８つの個々方向に向かうことができることを示すために八角配線モデルを意味する。
水平ライン７０５は、レイアウトの幅７１０に平行になるように引かれている、ｘ軸に平行な（すなわち、角度０の）ラインである。垂直ライン７１５は、レイアウトの高さ７２０に平行になるように引かれている、ｙ軸に平行なラインである。すなわち、垂直相互接続ライン７１５は、ＩＣレイアウトの幅に対して垂直な（すなわち、９０度の角度の）ラインである。このアーキテクチャの場合には、一組の対角線７２５は、ＩＣレイアウトの幅に対して＋４５度を形成し、一方他の一組の対角線７３０は、ＩＣレイアウトの幅に対して−４５度を形成する。
図８は、ＩＣ上で図７の配線アーキテクチャを実行する１つの方法である。より詳細に説明すると、図８は、ＩＣに対する５つの金属層である。最初の３つの層８０５〜８１５は、マンハッタン層である。すなわち、これらの層内での配線の好適な方向は、水平方向か垂直方向である。最初の３つの層内の好適な配線方向は、通常、交互の方向である。そのため、２つの連続層は、同じ方向に配線されない。しかし、場合によっては、連続層内の配線は、同じ方向を向いていることもある。
次の２つの層８２０および８２５は、対角線層である。対角線層内の好適な配線方向は、±４５度である。また、最初の３つの層内のように、第４および第５の配線方向は、通常、直交する（すなわち、一方の層の配線方向は＋４５度であり、他方の層の配線方向は−４５度である）。しかし、必ずしもそうでなくてもよい。
上記八角配線モデルを使用するＩＣレイアウトと協力する、本発明のいくつかの実施形態について以下に説明するが、通常の当業者であれば、本発明は任意の配線モデルと一緒に使用することができることを理解することができるだろう。例えば、本発明は、完全に対角線である（すなわち、好適な水平および垂直配線方向を持たない）配線アーキテクチャと一緒に使用することができる。
また、いくつかの実施形態は、４５度でない対角線配線と一緒に使用することができる。例えば、いくつかの実施形態は、水平、垂直および±１２０度対角線相互接続ラインを持つＩＣレイアウトと一緒に使用することができる。
【００１０】
ＩＩ．囲みボックス方法
水平相互接続ライン、垂直相互接続ライン、および対角線相互接続ラインを使用するＩＣレイアウトに対して、本発明のいくつかの実施形態は、（１）そのネットのすべての回路素子を含む囲みボックスを識別し、（２）少なくともその一部が対角線であるラインを使用して各囲みボックスの属性を計算することにより、あるネット・リスト内の各ネットに対するワイヤ長さコストの推定値を計算する。次に、これらの実施形態は、ネット・リスト内のすべてのネットの計算した属性に基づいてワイヤ長さコスト推定値を生成する。例えば、いくつかの実施形態は、ある配置構成に対するワイヤ長さコストの推定値を入手するために、計算した属性を合計する。
いくつかの実施形態の場合には、ネットの囲みボックスの計算した属性は、囲みボックスの対向する隅間の最短距離である。図９および図１０は、本発明のこのような一実施形態を示す。図９は、図１のピン１３５、１４５および１６０が表すネットに対する囲みボックス９０５の一例である。ライン９１０は、ボックス９０５の２つの対向する隅９３５および９４０間の最短距離を通る。図９に示すように、このラインの一部は対角線である。より詳細に説明すると、この例の場合には、このラインの１つのセグメント９２０は対角線である。一方、他のセグメント９１５は、水平である。
下式（Ａ）により、囲みボックス９０５の２つの対向する隅９３５および９４０間の最短距離を求めることができる。
距離＝［Ｌ−｛Ｓ（ｃｏｓＡ／ｓｉｎＡ）｝］＋Ｓ／ｓｉｎＡ      （Ａ）
ここで、「Ｌ」は、この例の場合には、ボックスの幅９２５である、ボックスの長い辺であり、一方、「Ｓ」は、この例の場合には、その高さ９３０である、ボックスの短い辺である。また、ここで、「Ａ」は、対角線のセグメント９１５と囲みボックスの長い辺との間の角度である。
いくつかの実施形態の場合には、この角度Ａは、ＩＣレイアウト内の対角線相互接続ラインの中のあるものの方向に対応する。例えば、いくつかの実施形態の場合には、ＩＣレイアウトが八角配線モデルを使用する場合には、角度Ａは４５度である。このようにして、囲みボックスを横切る対角線カット９２０は、囲みボックスの２つの対向する隅間を接続する対角線相互接続ラインを表す。
式（Ｂ）−（Ｄ）は、式（Ａ）の入手方法を示す。ライン９１０の長さは、２つのセグメント９１５および９２０の長さの合計に等しい。式（Ｂ）により、水平セグメント９１５の長さを求めることができ、一方、式（Ｃ）により、対角線セグメント９２０の長さを求めることができる。
９１５の長さ＝Ｌ−（９２０の長さ）＊（ｃｏｓＡ）          （Ｂ）
９２０の長さ＝Ｓ／ｓｉｎＡ                                （Ｃ）
式（Ｂ）および（Ｃ）を一緒にして、下式（Ｄ）を得ることができる。この式（Ｄ）を簡単にしたものが上式（Ａ）である。
距離＝９１５の長さ＋９２０の長さ
＝Ｌ−Ｓ／ｓｉｎＡ＊（ｃｏｓＡ）＋Ｓ／ｓｉｎＡ        （Ｄ）
角度Ａが４５度に等しい場合、式（Ａ）を簡単にして下式（Ｅ）とすることができる。
距離＝Ｌ＋Ｓ＊（ｓｑｒｔ（２）−１）                      （Ｅ）
囲みボックスが幅または高さを持たない場合には、囲みボックスは１本のラインになり、このラインの対向する隅間の最短距離は、囲みボックスの長い（そして唯一の）辺であり、これは水平ラインまたは垂直ラインとである。そうでない場合で、囲みボックスが正方形で、角度Ａが４５度である場合には、全体が対角線であるラインは、ボックスの２つの対向する隅間の最短距離となる。
【００１１】
角度Ａが、ＩＣレイアウト内の対角線相互接続ラインの中のどれかの方向に対応する場合には、式（Ａ）により計算した最短距離は、囲みボックスの対向する隅のところに位置する２つの仮定のネット回路素子を接続するのに必要な配線の最短距離に対応する。このような場合、式（Ａ）により計算した距離は、３つまたはそれ以上の回路素子を含むネットに対して必要なワイヤ長さを示さない場合がある。さらに、この距離は、２つの素子からなるネットの場合、必要な実際の配線経路より短い場合があり、ライン９１０に沿ってそのネットをルーティングすることができない場合がある。式（Ａ）により計算したこの距離の値は、水平配線、垂直配線、および対角線配線を使用する配線アーキテクチャ内のネットをルーティングするのに必要なワイヤの長さに関するもっと低い境界推定値を供給するだけである。いくつかの実施形態は、また、任意の配線モデルに対してこの式を使用する。しかし、これら実施形態の中のあるものは、この式により定量化された距離が最も短くなるように、いくつかの選択肢の中から角度Ａを選択する。
図１０は、上記囲みボックス法を使用するコスト計算プロセス１０００である。配置装置は、ネット・リスト上の一組のネットに対するワイヤ長さコストの推定値を生成するために、このコスト計算プロセスを使用することができる。いくつかの実施形態の場合には、プロセス１０００は、多数のネットを指定するネット・リストを受信した場合に何時でもスタートする。
受信した各ネットは、それに関連するいくつかの回路素子を含む（すなわち、各ネットは、いくつかの回路素子を含むように定義される）。すなわち、そのネット・リスト上のネットは、ＩＣレイアウト内のすべてのまたはいくつかの回路素子間の相互接続を指定する。下記のいくつかの実施形態の場合には、ネットに関連する回路素子は、ＩＣレイアウト内の回路モジュールのピンである。しかし、他の実施形態は、回路モジュールを、ネットの回路素子として処理する。これらの実施形態の中のあるものは、回路モジュールをネット回路素子として処理し、各モジュールのピンが、すべて（例えば、モジュールの原点に位置するというように）均等な位置にすべて位置するものと仮定することにより、異なるピン位置を区別する必要がなくなる。
いくつかの実施形態の場合には、プロセス１０００がスタートする前のネット回路素子の位置が、最初の配置構成を定義する。これらの実施形態の中のあるものの場合、最初の回路素子の位置はランダムである。他のいくつかの実施形態の場合には、フロア・プラニングのような前の物理的設計作業が、これらの素子の最初の位置の一部または全部を指定する。他のいくつかの実施形態は、回路素子の最初の位置を指定するためにもう１つの配置装置を使用し、その後で、対角線配線を使用する配線アーキテクチャに対する配置構成を最適化するためにプロセス１０００を使用する。
【００１２】
プロセス１０００は、最初に、（ステップ１００５において）ワイヤ長さコストの推定値（ＷＬ＿Ｃｏｓｔ）をゼロに設定し、受信したネット・リストから第１のネットを選択する。各ネットはピンの組Ｎを持つ。ステップ１００５において、プロセスは、また、選択したネットのピンの組Ｎに等しいピンの組Ｐを定義する。ステップ１０１０において、プロセスは、ピンの定義した組Ｐから１つのピンＰを選択し、組Ｐからこの選択したピンを除去する。その後で、プロセスは、（ステップ１０１５において）現在のネットに対する囲みボックスの最大および最小ｘ座標およびｙ座標を初期化するために、選択したピンのｘ座標およびｙ座標を使用する。
次に、プロセスは、（ステップ１０２０において）現在のネットに対するピンの組Ｐから他のピンを選択する。ステップ１０２５において、プロセスは、現在のネットに対する囲みボックスの最大および最小ｘ座標およびｙ座標を、修正する必要があるかどうかを判断するために、ステップ１０２０において選択したピン（すなわち、現在のピン）のｘ座標およびｙ座標をチェックする。より詳細に説明すると、囲みボックスの最大ｘ座標（ＸＭＡＸ）が現在のピンのｘ座標より小さい場合には、プロセスは、囲みボックスの最大ｘ座標（ＸＭＡＸ）を現在のピンのｘ座標に等しく設定する。別な方法としては、囲みボックスの最小ｘ座標（ＸＭＩＮ）が、現在のピンのｘ座標より大きい場合には、プロセスは、囲みボックスの最小ｘ座標（ＸＭＩＮ）を現在のピンのｘ座標に等しく設定する。同様に、囲みボックスの最小ｙ座標（ＹＭＩＮ）が現在のピンのｙ座標より大きい場合には、プロセスは、囲みボックスの最小ｙ座標（ＹＭＩＮ）を現在のピンのｙ座標に等しく設定する。一方、囲みボックスの最大ｙ座標（ＹＭＡＸ）が現在のピンのｙ座標より小さい場合には、プロセスは、囲みボックスの最大ｙ座標（ＹＭＡＸ）を現在のピンのｙ座標に等しく設定する。
ステップ１０２５の後で、プロセスは、（ステップ１０３０において）組Ｐ内に任意のピンが存在するかどうか、（すなわち、まだチェックしてない現在のネット内に任意のピンが存在するかどうか）を判断する。存在している場合には、プロセスは、（ステップ１０２０において）別のピンを選択するために戻り、（ステップに１０２５おいて）、囲みボックスのｘ座標およびｙ座標を修正するために、選択したピンを使用する必要があるかどうかを判断する。プロセスが、（ステップ１０３０において）現在のネットのすべてのピンをチェックしたと判断した場合には、プロセスは、（ステップ１０３５において）現在のネットの囲みボックスの４つの座標を、（ＸＭＩＮ，ＹＭＩＮ）（ＸＭＩＮ，ＹＭＡＸ）（ＸＭＡＸ，ＹＭＩＮ）および（ＸＭＡＸ，ＹＭＡＸ）として定義する。
【００１３】
次に、プロセスは、（ステップ１０４０において）囲みボックスの幅および高さを測定する。プロセスは、（１）囲みボックスの最大および最小ｘ座標の間の違いを測定することにより幅を、（２）囲みボックスの最大および最小ｙ座標の間の違いを測定することにより高さを測定する。次に、プロセスは、（ステップ１０４５において）計算した幅が計算した高さより大きいかどうかを判断する。大きい場合には、プロセスは、（ステップ１０５０において）幅を長い辺と定義し、また高さを短い辺と定義する。小さい場合には、プロセスは、（ステップ１０５５において）幅を短い辺として定義し、高さを長い辺と定義する。
次に、プロセスは、（ステップ１０６０において）上式（Ａ）により、囲みボックスの２つの対向する隅間の距離を計算することにより、現在のネットに対するワイヤ長さコストの推定値（Ｎｅｔ＿ＷＬ＿Ｃｏｓｔ）を計算する。次に、プロセスは、（ステップ１０６５において）（１）計算したネットのワイヤ長さコスト（Ｎｅｔ＿ＷＬ＿Ｃｏｓｔ）を全ワイヤ長さコスト（ＷＬ＿Ｃｏｓｔ）に加算し、（２）ネットのワイヤ長さコスト（Ｎｅｔ＿ＷＬ＿Ｃｏｓｔ）を記憶する。ステップ１０７０において、プロセスは、ネット・リスト内のすべてのネットをチェックしたかどうかを判断する。チェックしていなかった場合には、ステップ１０７５において、プロセスは、ネット・リストから他のネットを選択し、ピンの組Ｐをこの選択したネットのピンの組Ｎと等しいと定義する。次に、プロセスは、ステップ１０１０に戻り、この選択したネットに対する囲みボックスのコストを計算する。
プロセスが、すべてのネットに対する囲みボックスのコストを計算した場合には、プロセスは、（ステップ１０７０において）ネット・リスト内のすべてのネットをチェックしたかどうかを判断する。この時点で、プロセスは、ワイヤ長さコスト変数（ＷＬ＿Ｃｏｓｔ）の値を、受信したネット・リストに対する推定ワイヤ長さコストとして返送し、処理を終了する。
本発明のいくつかの実施形態の場合には、プロセス１０００は、最初の配置構成を指定するネット・リスト（すなわち、レイアウト内のモジュールの位置を修正する前のＩＣレイアウト内のすべてのネットを識別するネット・リスト）を受信した場合に、最初の配置構成に対するワイヤ長さコストの推定値（ＷＬ＿Ｃｏｓｔ）を生成する。
最初の配置構成のワイヤ長さコストを入手した後で、いくつかの実施形態は、配置構成コストを改善するために、配置構成を反復して修正する最適化プロセスを使用する。いくつかの実施形態の場合には、最適化プロセスは、配置構成に対する可能な反復修正に対する配置構成コストを計算するためにプロセス１０００を使用する。これについては第ＶＩＩ節のところでさらに詳細に説明する。この節においては、いくつかの適当な最適化技術についても説明する。
【００１４】
ＩＩＩ．潜在的対角線を含む接続グラフ
本発明のいくつかの実施形態は、いくつかの配置構成のワイヤ長さコストを推定するために、潜在的相互接続（すなわち、配線）トポロジーをモデル化する接続グラフを形成する。通常、あるネットに対する接続グラフは、（１）各ネット素子（すなわち、ピンまたはモジュール）を（頂点または点とも呼ぶ）ノードとして、（２）２つのネット素子を接続する各潜在的相互接続ラインを（ラインとも呼ぶことがある）縁部としてモデル化する。
本発明の接続グラフは、その全体または一部が対角線である縁部を含むことができる。このような接続グラフは、最小スパニング・ツリー（「ＭＣＴ」）およびシュタイナー・ツリーを含むが、これについては以下に説明する。通常の当業者であれば、本発明の他の実施形態は、潜在的相互接続トポロジーをモデル化するために、（完全なグラフ、最小チェーン・グラフ、ソース・シンク・グラフ等にような）他の接続グラフを使用することができることを理解することができるだろう。
Ａ．最小スパニング・ツリー
いくつかの実施形態は、（１）各ネットに対して、対角線縁部を持つことができるＭＳＴを形成することにより、（２）各ＭＳＴの長さを計算することにより、（３）計算した長さを合計することにより配置構成に対するワイヤ長さコストの推定値を生成する。あるネットに対する最小スパニング・ツリーは、素子のところだけで分岐する最短経路を通るネットの素子を接続する（すなわち、結ぶ）ツリーである。最小スパニング・ツリーの長さは、ネットの素子（すなわち、ネットのピンまたはモジュール）を、相互に接続するために必要なワイヤの長さのもっと低い境界推定値である。
より詳細に説明すると、Ｎ個の素子のネットに対するスパニング・ツリーは、（１）Ｎ個の素子に対応するＮ個のノード、および（２）そのＮ個のノードを接続するＮ−１個の縁部を含む。最小スパニング・ツリーの縁部は、そのツリーのＮ個のノードの中の１つからスタートし、そこで終わる。また、ＭＳＴにおいては、縁部は、通常、そのノードを接続するための達成可能な最短経路を形成するために選択される。
本発明のいくつかの実施形態の場合には、ＭＳＴの縁部は、水平方向を向いていても、垂直方向を向いていても、対角線方向を向いていてもよい。対角線縁部は、その全体または一部が対角線であってもよい。また、ＩＣレイアウトが、（例えば、±１２０度の相互接続ラインのような）対角線相互接続ラインを使用している場合には、ＭＳＴの対角線縁部は、レイアウト内の対角線相互接続ラインの中のあるものと、（例えば、±１２０度方向のような）同じ方向を向いていてもよい。
例えば、ＩＣレイアウトが八角配線モデルを使用している場合には、（すなわち、水平ライン、垂直ライン、および４５度対角線ラインを使用している場合には）、いくつかの実施形態は、水平縁部、垂直縁部、および４５度対角線縁部を含むＭＳＴを形成する。図１１は、このようなＭＳＴの一例である。このツリー１１０５は、図１のピン１３５、１４５および１６０を含むネットのＭＳＴである。このツリーは、２つの縁部１１１０および１１１５を持ち、第１の縁部１１１０は水平セグメント１１２０および＋４５度の対角線セグメント１１２５を含み、第２の縁部１１１５は、垂直セグメント１１３０および−４５度の対角線セグメント１１３５を含む。
【００１５】
各ＭＳＴ縁部の２つのノードを、ボックスの対向する２つの隅として処理することによって、上式（Ａ）により各ＭＳＴの長さを求めることができる。
距離＝［Ｌ−｛Ｓ（ｃｏｓＡ／ｓｉｎＡ）｝］＋Ｓ／ｓｉｎＡ      （Ａ）
すでに説明したように、ここで、「Ｌ」はボックスの長い辺であり、「Ｓ」はボックスの短い辺であり、「Ａ」は縁部の対角線のセグメントと囲みボックスの長い辺との間の角度である。
図１２は、いくつかのネットの相互接続トポロジーをモデル化する、ＭＳＴの長さを計算するコスト計算プロセス１２００である。配置装置は、ネット・リスト上の一組のネットに対する、ワイヤ長さコストの推定値を生成するためにこのプロセスを使用する。いくつかの実施形態の場合には、プロセス１２００は、ネットの数を指定するネット・リストを受信した場合は何時でもスタートする。
受信した各ネットは、それに関連するいくつかの回路素子を含む（すなわち、各ネットは、いくつかの回路素子を含むように定義される）。すなわち、そのネット・リスト上のネットは、ＩＣレイアウト内のいくつかのまたはすべての回路素子間の相互接続を指定する。下記のいくつかの実施形態の場合には、ネットに関連する回路素子は、ＩＣレイアウト内の回路モジュールのピンである。しかし、他の実施形態は、回路モジュールを、ネットの回路素子として処理する。これらの実施形態の中のあるものは、回路モジュールをネット回路素子として処理し、各モジュールのピンが、すべて（例えば、モジュールの原点に位置するというように）、均等な位置にすべて位置するものと仮定することにより、異なるピン位置を区別する必要がなくなる。
いくつかの実施形態の場合には、プロセス１２００がスタートする前のネット回路素子の位置が、最初の配置構成を定義する。これらの実施形態の中のあるものの場合、最初の回路素子の位置はランダムである。他のいくつかの実施形態の場合には、フロア・プラニングのような前の物理的設計作業が、これらの素子の最初の位置の一部または全部を指定する。他のいくつかの実施形態は、回路素子の最初の位置を指定するためにもう１つの配置装置を使用し、次に、対角線配線を使用する配線アーキテクチャに対する配置構成を最適化するために、プロセス１２００を使用する。
プロセス１２００は、最初に、（ステップ１２０５において）ワイヤ長さコストの推定値（ＷＬ＿Ｃｏｓｔ）をゼロに設定し、受信したネット・リストから第１のネットを選択する。次に、プロセスは、（ステップ１２１０において）ピンの組Ｐが、選択したネットのピンの組に等しいと定義する。次に、プロセスは、（ステップ１２１５において）選択したネットの最小スパニング・ツリーのコスト（ＭＳＴ＿Ｃｏｓｔ）をゼロに設定する。
【００１６】
次に、プロセスは、（ステップ１２２０において）（１）検索したピンの組からスパニング・ツリーの第１のノードとして１つのピンを選択し、（２）この組からこのピンを除去する。次に、プロセスは、（ステップ１２２５において）ピンの残りの組Ｒは、ピンの現在の組Ｐに等しいと定義する。ステップ１２３０において、プロセスは、残りのピンの組Ｒから１つのピンを選択し、このピンの組から選択したピンを除去する。
次に、プロセスは、（ステップ１２３５において）ステップ１２３０において選択したピンとスパニング・ツリーの現在の各ノードとの間の距離を計算し、記憶する。選択したピンと各ノードとの間の距離は、その全体または一部が対角線である縁部を通って移動することができる。それ故、プロセスは、（ステップ１２３５において）式（Ａ）により、選択したピンと各ノードとの間の最短距離を計算する。
次に、プロセスは、（ステップ１２４０において）組Ｒ内にピンが残っているかどうかを判断する。残っている場合には、プロセスは、ステップ１２３０に戻り、この組から他のピンを選択する。それ故、プロセスは、ステップ１２３５において、このピンとスパニング・ツリーの現在のノードとの間の距離を計算することができる。残っていない場合には、プロセスは、（ステップ１２４５において）ステップ１２３５において記録した最短距離を識別し、この距離になるピンとノードの組合わせを識別する。次に、プロセスは、（ステップ１２５０において）識別した最短距離を最小スパニング・ツリーのコスト（ＭＳＴ＿Ｃｏｓｔ）に加算する。また、プロセスは、（ステップ１２５５において）ステップ１２４５において識別したピンに対応するツリー・ノードを定義し、（２）ピンの組Ｐから識別したピンを除去し、（３）定義したツリー・ノードを、ステップ１２４５において識別したノードにリンクする。
次に、プロセスは、（ステップ１２６０において）ピンの組Ｐが空であるかどうかを判断する。空でない場合には、プロセスは、ステップ１２２５に戻り、ツリーの現在のノードに最も近い次のピンを識別する。空である場合には、プロセスは、（ステップ１２６５において）現在のネットの最小スパニング・ツリーのコスト（ＭＳＴ＿Ｃｏｓｔ）をワイヤ長さコスト（ＷＬ＿Ｃｏｓｔ）に加算し、（２）現在のネットの最小スパニング・ツリーのコスト（ＭＳＴ＿Ｃｏｓｔ）を記憶する。次に、プロセスは、（ステップ１２７０において）受信したすべてのネットの最小スパニング・ツリーを形成したかどうかを判断する。形成しなかった場合には、プロセスは、（ステップ１２７５において）他のネットを選択し、ステップ１２１０に戻り、このネットに対する最小スパニング・ツリーを形成する。
そうでない場合で、プロセスが、すべてのネットのＭＳＴを形成したと判断した場合には、プロセスは、ワイヤ長さコスト変数（ＷＬ＿Ｃｏｓｔ）の値を現在の配置構成の推定ワイヤ長さコストとして返送する。その後で、プロセスは終了する。
本発明のいくつかの実施形態の場合には、プロセス１２００は、最初の配置構成を指定するネット・リスト（すなわち、レイアウト内のモジュールの位置を修正する前の、ＩＣレイアウト内のすべてのネットを識別するネット・リスト）を受信した場合に、最初の配置構成に対するワイヤ長さコストの推定値（ＷＬ＿Ｃｏｓｔ）を生成する。
最初の配置構成のワイヤ長さコストを入手した後で、いくつかの実施形態は、配置構成コストを改善するために、配置構成を反復して修正する最適化プロセスを使用する。いくつかの実施形態の場合には、最適化プロセスは、配置構成に対する可能な各反復修正に対する配置構成コストを計算するためにプロセス１２００を使用する。これについては第ＶＩＩ節のところでさらに詳細に説明する。この節においては、いくつかの適当な最適化技術についても説明する。
【００１７】
Ｂ．対角線縁部を含むシュタイナー・ツリー
いくつかの実施形態は、（１）各ネットに対して、対角線縁部を持つことができるシュタイナー・ツリーを形成することにより、（２）各シュタイナー・ツリーの長さを計算することにより、（３）計算した長さを合計することにより、配置構成に対するワイヤ長さコストの推定値を生成する。シュタイナー・ツリーの分岐がネットの素子の位置だけに制限されているという点を除けば、シュタイナー・ツリーは、最小スパニング・ツリーに類似している。いくつかの実施形態の場合には、シュタイナー・ツリーは、他の縁部の中央の複数の点から分岐する（すなわち、スタートまたは終了する）縁部を持つことができる。
本発明のいくつかの実施形態の場合には、シュタイナー・ツリーの縁部は、水平方向を向いていても、垂直方向を向いていても、対角線方向を向いていてもよい。対角線縁部は、その全体または一部が対角線であってもよい。また、ＩＣレイアウトが、（例えば、±１２０度の相互接続ラインのような）対角線相互接続ラインを使用している場合には、対角線縁部は、レイアウト内の対角線相互接続ラインの中のあるものと、（例えば、±１２０度方向のような）同じ方向を向いていてもよい。
Ｎ個のネットに対するシュタイナー・ツリーを形成するために、シュタイナー点と呼ぶ追加の点をネットに追加することができる。多くの場合、シュタイナー点を選択するために発見的技術が使用される。図１３は、八角配線モデルを使用する（すなわち、水平相互接続ライン、垂直相互接続ライン、および４５度相互接続ラインを使用する）ＩＣレイアウトに対して、本発明のいくつかの実施形態内で使用する発見的技術を示す。この図は、図１のピン１３５、１４５および１６０を含むネットに対するシュタイナー・ツリー１３０５である。この実施形態の場合には、シュタイナー・ツリー１３０５は、ピン１３５、１４５および１６０に対応する３つのもとのノード１３３５、１３４５および１３６０を含む。
また、この実施形態の場合には、シュタイナー・ツリーのもとの各ノードを通して４本のラインを引くことにより一組の潜在的シュタイナー点が識別される。これら４本のラインの中、１本のライン１３１０は水平なラインであり、１本のライン１３１５は垂直なラインであり、１本のライン１３２０は＋４５度のラインとあり、１本のライン１３２５は−４５度のラインである。図１３に示すように、もとの各ノードを通るラインの交点は、一組の潜在的シュタイナー点１３３０を形成する。その後で、ツリーの長さを最も短くするために、これらの潜在的な点の中のいくつかを、シュタイナー・ツリー内にノードとして追加することができる。図１３の場合には、シュタイナー点１３４０は、ツリー内にノードとしてすでに追加されている。
【００１８】
図１４は、いくつかのネットの相互接続トポロジーをモデル化する、シュタイナー・ツリーの長さを計算するコスト計算プロセス１４００である。配置装置は、ネット・リスト上の一組のネットに対する、ワイヤ長さコストの推定値を生成するために、このプロセスを使用することができる。いくつかの実施形態の場合には、プロセス１４００は、多数のネットを指定するネット・リストを受信する度にスタートする。
受信した各ネットは、それに関連するいくつかの回路素子を含む（すなわち、各ネットは、いくつかの回路素子を含むように定義される）。すなわち、そのネット・リスト上のネットは、ＩＣレイアウト内のいくつかのまたはすべての回路素子間の相互接続を指定する。下記のいくつかの実施形態の場合には、ネットに関連する回路素子は、ＩＣレイアウト内の回路モジュールのピンである。しかし、他の実施形態は、回路モジュールをネットの回路素子として処理する。これらの実施形態の中のあるものは、回路モジュールをネット回路素子として処理し、各モジュールのピンが、すべて（例えば、モジュールの原点に位置するというように）、均等な位置にすべて位置するものと仮定することにより、異なるピン位置を区別する必要がなくなる。
いくつかの実施形態の場合には、プロセス１４００がスタートする前のネット回路素子の位置が、最初の配置構成を定義する。これらの実施形態の中のあるものの場合、最初の回路素子の位置はランダムである。他のいくつかの実施形態の場合には、フロア・プラニングのような前の物理的設計作業が、これらの素子の最初の位置の一部または全部を指定する。他のいくつかの実施形態は、回路素子の最初の位置を指定するためにもう１つの配置装置を使用し、次に、対角線配線を使用する配線アーキテクチャに対する配置構成を最適化するために、プロセス１４００を使用する。
プロセス１４００は、ワン・シュタイナー・プロセスを修正したものである。従来のワン・シュタイナー・プロセスのように、このプロセス１４００は、もとのピン・ノードおよび追加のピン・ノードのＭＳＴを最も小さくする、シュタイナー・ノードを追加することにより発見的シュタイナー・ツリーを形成する。しかし、従来のワン・シュタイナー・プロセスとは異なり、この修正プロセスを使用した場合、発見的シュタイナー・ツリーの縁部全体または一部は対角線であってもよい。
このプロセスは、最初に、（ステップ１４０５において）ワイヤ長さコストの推定値（ＷＬ＿Ｃｏｓｔ）をゼロに設定し、受信したネット・リストから第１のネットを選択する。次に、プロセスは、（ステップ１４１０において）ピンの組Ｐを選択したネットのピンの組に等しいと定義する。次に、プロセスは、（ステップ１４１５において）選択したネットのワイヤ長さコスト（ＷＬ＿Ｃｏｓｔ）をゼロに設定する。ステップ１４１５の後で、プロセスは、（ステップ１４２０において）選択したネットの最小スパニング・ツリーを形成し、このツリーのコスト（ＭＳＴ＿Ｃｏｓｔ）を計算する。この最小スパニング・ツリーは、その全体または一部が対角線である縁部を持つことができる。このプロセスは、図１２の動作１２１０〜１２６０を行うことによりＭＳＴを形成することができる。
選択したネットに対するＭＳＴを形成した後で、プロセスは、（ステップ１４２５において）候補のシュタイナー点の組Ｓを識別する。図１３のところですでに説明したように、プロセスは、ネット内の各ピンを通る一組の対角線と一組のマンハッタン・ラインを引くことにより、そしてこれらのラインの交点を識別することによりこれらの点を識別することができる。ＩＣレイアウトが、（例えば、±１２０度の相互接続ラインのような）対角線相互接続ラインを使用する場合には、各ピンを通る対角線は、レイアウト内の対角線相互接続ラインの中のいくつかと（例えば、±１２０度の方向のような）同じ方向を向いていてもよい。
【００１９】
次に、プロセスは、（ステップ１４３０において）ノードの残りの組Ｒが、潜在的シュタイナー点の現在の組Ｓに等しいと定義する。ステップ１４３５において、プロセスは、残りのノードの組Ｒから１つのノードを選択し、この組から選択したノードを除去する。次に、プロセスは、（ステップ１４４０において）（１）ステップ１４３５において選択したノードと選択したネットに対する現在のＭＳＴのノードに対する最小スパニング・ツリー（ＭＳＴ’）を形成し、（２）この最小スパニング・ツリー（ＭＳＴ’）のコスト（ＭＳＴ＿Ｃｏｓｔ’）を計算し、記憶する。プロセスは、その全体または一部が対角線である縁部により、この最小スパニング・ツリー（ＭＳＴ’）を形成する。また、プロセスは、図１２の動作１２１０〜１２６０を行うことにより、このツリーのＭＳＴ’を形成することができる。
次に、プロセスは、（ステップ１４４５において）組Ｒ内にノードが残っているかどうかを判断する。残っている場合には、プロセスは、ステップ１４３５に戻り、この組から他のピンを選択する。それ故、プロセスは、このもう１つのノードおよび現在のＭＳＴのノードに対する、最小スパニング・ツリーを形成することができる。
残っていない場合には、プロセスは、（ステップ１４５０において）ステップ１４４０において計算した最も小さい最小スパニング・ツリーのコスト（ＭＳＴ＿Ｃｏｓｔ’）を識別する。次に、プロセスは、（ステップ１４５５において）識別した最も小さい最小スパニング・ツリーのコスト（ＭＳＴ＿Ｃｏｓｔ’）が、ステップ１４２０において形成した現在の最小スパニング・ツリー（ＭＳＴ）のコスト（ＭＳＴ＿Ｃｏｓｔ）より小さいかどうかを判断する。小さくない場合には、プロセスはステップ１４８０に進むが、これについては以下に説明する。小さい場合には、潜在的なシュタイナー・ノードの組Ｓから、プロセスは、（ステップ１４６０において）ステップ１４５０において識別した最も小さい最小スパニング・ツリーのコスト（ＭＳＴ＿Ｃｏｓｔ’）になるシュタイナー・ノードを除去する。次に、プロセスは、（ステップ１４６５において）識別した最も小さい最小スパニング・ツリーのコスト（ＭＳＴ＿Ｃｏｓｔ’）となる最小スパニング・ツリー（ＭＳＴ’）を、現在の最小スパニング・ツリー（ＭＳＴ）として識別する。また、プロセスは、（ステップ１４７０において）最小スパニング・ツリーのコスト（ＭＳＴ＿Ｃｏｓｔ）を、識別した最も小さい最小スパニング・ツリーのコスト（ＭＳＴ＿Ｃｏｓｔ’）に等しくなるように設定する。
次に、プロセスは、（ステップ１４７５において）候補のシュタイナー点の組Ｓが空であるかどうかを判断する。空でない場合には、プロセスは、ステップ１４３０に戻り、現在の最小スパニング・ツリー（ＭＳＴ）の長さをさらに短くすることができる、他の潜在的なシュタイナー点を発見できるかどうか調べる。
プロセス１４００が、（ステップ１４７５において）すべての候補のシュタイナー点をチェックし、組Ｓが空であると判断した場合には、プロセスは、（ステップ１４８０において）（１）シュタイナー・ツリーを現在のＭＳＴとして定義し、（２）このＭＳＴのコスト（ＭＳＴ＿Ｃｏｓｔ）を推定したワイヤ長さコスト（ＷＬ＿Ｃｏｓｔ）に加算し、（２）このＭＳＴのコスト（ＭＳＴ＿Ｃｏｓｔ）を現在のネットのコストとして記憶する。ステップ１４８０の後で、プロセスは、（ステップ１４８５において）受信したネット・リスト内のすべてのネットに対して、シュタイナー・ツリーを形成したかどうかを判断する。形成していなかった場合には、プロセスは、（ステップ１４９０において）他のネットを選択し、ステップ１４１０に戻り、このネットに対するシュタイナー・ツリーを形成する。形成していた場合には、プロセスは、（ステップ１４９５において）現在の配置構成のワイヤ長さコスト（ＷＬ＿Ｃｏｓｔ）を返送し、その後で終了する。
本発明のいくつかの実施形態の場合には、プロセス１４００は、最初の配置構成を識別するネット・リスト（すなわち、レイアウト内のモジュールの位置を修正する前の、ＩＣレイアウト内のすべてのネットを識別するネット・リスト）を受信した場合に、最初の配置構成に対するワイヤ長さコストの推定値（ＷＬ＿Ｃｏｓｔ）を生成する。
最初の配置構成のワイヤ長さコストを入手した後で、いくつかの実施形態は、配置構成コストを改善するために、配置構成を反復して修正する最適化プロセスを使用する。いくつかの実施形態の場合には、最適化プロセスは、配置構成に対する可能な各反復修正に対する配置構成コストを計算するためにプロセス１４００を使用する。これについては第ＶＩＩ節のところでさらに詳細に説明する。この節においては、いくつかの適当な最適化技術についても説明する。
【００２０】
ＩＶ．対角線を含む最小カット二分割法
本発明のいくつかの実施形態は、対角線分割ラインを使用する最小カット二分割法を使用する。図１５〜図１７を参照しながら以下にさらに詳細に説明するように、いくつかの実施形態は、対角線分割ラインを使用するが、一方、他の実施形態は、対角線分割ライン、水平分割ラインおよび垂直分割ラインを使用する。
分割ラインは、ＩＣレイアウトを反復して連続的なペアの領域に分割するために使用される。反復の各レベルで分割ラインを定義した後で、本発明の最小カット二分割法は、特定のレベルの分割ラインと交差するネットの数を計算する。この数は、この分割ラインの周囲のワイヤの集中を示す。次に、各反復レベルにおいて、そのレベルの分割ラインと交差するネットの数を少なくするために、そのレベルにおける領域間で回路モジュールを移動するために最適化技術が使用される。反復の各レベルにおけるネット・カット・コストを最も少なくすることにより、そのレベルの分割ラインを横切るワイヤの集中が少なくする。
本発明の最小カット二分割技術は、マンハッタン配線モデルだけを使用するＩＣレイアウト（すなわち、好適な水平方向および垂直方向の配線だけを持つＩＣレイアウト）と一緒に使用することができる。他の場合には、本発明の最小カット二分割技術は、対角線相互接続ラインを持つＩＣレイアウトと一緒に使用される。これら実施形態の中のあるものの場合、対角線分割ラインは、対角線相互接続ラインのいくつかのまたは全部と同じ方向を向いている。例えば、八角配線モデルを使用する（すなわち、水平ライン、垂直ラインとおよび、４５度の対角線ラインを使用する）ＩＣレイアウトの場合には、いくつかの実施形態は、４５度の対角線分割ラインを使用する。
図１５は、対角線分割ラインだけで多数の領域に反復して分割されたＩＣレイアウト１５００である。このような厳密な対角線分割アプローチは、通常、ＩＣレイアウトが、対角線相互接続ラインを使用する場合に使用される。しかし、このようなアプローチは、ＩＣレイアウトが、対角線相互接続ラインおよびマンハッタン相互接続ラインを使用する場合に使用される。
図１６および図１７は、対角線分割ライン、水平分割ラインおよび垂直分割ラインの組合わせにより、反復して分割された２つのＩＣレイアウトである。図１６の場合には、対角線分割ラインが、反復のすべてのレベルで使用される。一方、図１７の場合には、対角線分割ラインは、高い反復レベルでだけ使用され、低い反復レベルではマンハッタン分割ラインが使用される。
すなわち、図１７の分割スキームは、反復プロセスの下のあるレベルに達した場合、対角線分割ラインの使用を止める。このような分割スキーム（すなわち、低い反復レベルで対角線分割ラインの使用を止めるスキーム）は、その頂部金属層としてその対角線層を持つＩＣレイアウトと一緒に使用した場合有用である。このような分割スキームは、このようなレイアウトに対して有用である。何故なら、第１の組の分割ラインが、もっと長いワイヤの集中を低減し、もっと長いワイヤは、対角線ワイヤである場合が多いからである。頂部金属層として対角線層を持つ八角配線モデルの場合には、対角線ワイヤは長くなりがちである。何故なら、そうしないと、不経済になり、もっと高い層上でルーティングを行うために必要な、ヴァイアに関連する遅延コストが生じるからである。
【００２１】
図１８および図１９は、配置装置が、対角線分割ラインにより最小カット二分割法を行うために、使用することができる２つのプロセス１８００および１９００である。配置装置は、ＩＣレイアウトを横切る集中を最小限度に低減するために、これらプロセス１８００および１９００を反復して使用することができる。より詳細に説明すると、配置装置は、ＩＣレイアウトをもっと小さい領域に、反復して分割することができる一連の分割ラインを形成するために、図１８のプロセス１８００を反復して実行することができる。反復の特定のレベルで分割ラインを定義した後で、配置装置は、集中コストの推定値を入手し、そのレベルの分割ラインを横切ってネットを分割するために、図１９のプロセス１９００を使用することができる。
プロセス１８００は、ＩＣレイアウトの領域の座標を受信する度にスタートする。図１８に示すように、このプロセスは、最初に、（ステップ１８０５において）受信した領域を２つのサブ領域に分割する水平分割ライン、垂直分割ラインまたは対角線分割ラインを定義する。分割ラインを定義した後で、プロセス１８００は、（ステップ１８１０において）分割ラインにより生成した２つの領域を定義する。いくつかの実施形態は、領域を定義するために下記の慣例を使用する。（１）分割ラインが水平分割ラインまたは対角線分割ラインである場合には、第１の領域は分割ラインの上に位置し、一方、第２の領域は、分割ラインの下に位置する。（２）分割ラインが垂直分割ラインである場合には、第１の領域は分割ラインの右に位置し、第２の領域は、分割ラインの左に位置する。
最後に、プロセス１８００は、ステップ１８０５において定義した分割ラインにより生成した、２つの領域に対する２つのネット・リストを初期化する。以下にさらに詳細に説明するように、最初、プロセス１９００を、受信した領域内のすべてのネットに対して実行した場合、プロセス１９００は、受信した領域内のネットおよびこれらネットのピンを、これら２つのネット・リストに追加する。また、以下にさらに詳細に説明するように、配置装置およびプロセス１９００は、最適化プロセス中に、これら２つのネット・リストからネットおよびピンを除去したり、これらネット・リストに追加することができる。
図１９は、配置装置が、一組のネットを分割したり、対角線分割ラインであってもよい分割ラインの周囲の、これらのネットの集中コストを計算するために使用することができるプロセス１９００である。プロセス１９００は、（１）ネット・リストおよび（２）ネットを分割するための分割ラインを受信する度にスタートする。
受信したネット・リスト上の各ネットは、それに関連するいくつかの回路素子を含む（すなわち、各ネットは、いくつかの回路素子を含むように定義される）。すなわち、そのネット・リスト上のネットは、ＩＣレイアウト内のいくつかの、またはすべての回路素子間の相互接続を指定する。下記のいくつかの実施形態の場合には、ネットに関連する回路素子は、ＩＣレイアウト内の回路モジュールのピンである。しかし、他の実施形態は、回路モジュールをネットの回路素子として処理する。これらの実施形態の中のあるものは、回路モジュールをネット回路素子として処理し、各モジュールのピンが、すべて（例えば、モジュールの原点に位置するというように）、均等な位置にすべて位置するものと仮定することにより、異なるピン位置を区別する必要がなくなる。
【００２２】
いくつかの実施形態の場合には、プロセス１９００が第１の分割ラインに対して実行される前の、ネット回路素子の位置により最初の配置構成が定義される。これらの実施形態の中のあるものの場合、最初の配置構成はランダムである。他のいくつかの実施形態の場合には、フロア・プラニングのような前の物理的設計作業が、最初の配置構成の一部または全部を指定する。他のいくつかの実施形態は、最初の配置構成を指定するためにもう１つの配置装置を使用し、次に、対角線配線を使用する配線アーキテクチャに対する配置構成を最適化するために、プロセス１８００および１９００を使用する。
図１９に示すように、プロセス１９００は、最初に、（ステップ１９０５において）集中コスト（Ｃｏｓｔ）をゼロに設定する。次に、プロセスは、（ステップ１９１０において）受信したネット・リストから１つのネットを選択する。次に、プロセスは、（ステップ１９１５において）ネット分割変数（Ｃ）をゼロに設定する。次に、プロセスは、（ステップ１９２０において）選択したネットの第１のピンを選択する。このピンを選択した後で、プロセスは、（ステップ１９２５において）分割ラインで形成した２つの領域の中のどれがこのピンを含んでいるのかを判断する。プロセス１９００は、図２０、２１および２２に示す３つのプロセスの中の１つにより、このピンに対する領域を識別する。
プロセス１９００は、分割ラインが水平分割ラインである場合には、図２０のプロセス２０００を呼び出す。図２０に示すように、プロセス２０００は、（ステップ２００５において）ピンのｙ座標が、水平分割ラインのｙ座標より大きいかどうかを判断する。大きい場合には、プロセスは、（ステップ２０１０において）ピンが、分割ラインにより定義された第１の領域内に位置すると指定する。小さい場合には、プロセスは、（ステップ２０１５において）ピンが、分割ラインにより定義された第２の領域内に位置すると指定する。
プロセス１９００は、分割ラインが垂直分割ラインである場合には、図２１のプロセス２１００を使用する。図２１に示すように、プロセス２１００は、（ステップ２１０５において）ピンのｘ座標が、垂直分割ラインのｘ座標より大きいかどうかを判断する。大きい場合には、プロセスは、（ステップ２１１０において）ピンが、分割ラインにより定義された第１の領域内に位置すると指定する。小さい場合には、プロセスは、（ステップ２１１５において）ピンが、分割ラインにより定義された第２の領域内に位置すると指定する。
プロセス１９００は、分割ラインが対角線分割ラインである場合には、図２２のプロセス２２００を呼び出す。図２２に示すように、プロセス２２００は、（ステップ２２０５において）ピンのｘ座標を分割ラインを示す一次式（ｙ＝ｍｘ＋ｂ）に挿入する。この式は、その勾配（ｍ）の項内の分割ラインのｙ座標値、ｘ座標およびｙ交差（ｂ）を表す。次に、プロセスは、（ステップ２２１０において）挿入したｘ位置における対角線の入手したｙの値が、ピンのｙ座標より大きいかどうかを判断する。大きくない場合には、プロセスは、（ステップ２２１５において）ピンが、分割ラインにより定義された第１の領域内に位置すると指定する。大きい場合には、プロセスは、（ステップ２２２０において）ピンが、分割ラインにより定義された第２の領域内に位置すると指定する。
ピンに対する領域を識別した後で、プロセスは、（ステップ１９３０において）選択したネットおよびピンを、識別した領域に対するネット・リストに追加する。その後で、プロセスは、（ステップ１９３５において）ネット内の次のピンを選択する。ステップ１９４０において、プロセスは、１９２５に対して上記の同じプロセスを呼び出すことにより、ステップ１９３５において選択したピンに対する領域を識別する。
【００２３】
次に、プロセスは、（ステップ１９４５において）現在のピン（すなわち、ステップ１９３５において選択したピン）が、第１のピンと同じ領域内に位置するかどうかを判断する。位置する場合には、プロセスは、現在のピンを、識別した領域に対するネット・リストに（ステップ１９３０において）前に追加したネットに追加する。次に、プロセスは、ステップ１９７０に進むが、このステップについては以下に説明する。
一方、プロセスが、（ステップ１９４５において）現在のピンは、第１のピンと同じ領域内に位置しないと判断した場合には、プロセスは、交差変数Ｃがゼロに等しいかどうかを判断する。等しい場合には、プロセスは、１つのネット分割を検出したと判断する。それ故、プロセスは、交差変数Ｃの値を１に変更し、ネットおよび現在のピンを、現在のピンの識別した領域に対するネット・リストに追加する。しかし、プロセスが、（ステップ１９５５において）交差変数がゼロではないと判断した場合には、プロセスは、そのネット分割を前に検出したと判断する。それ故、プロセスは、単に、（ステップ１９６０において）現在のピンを、識別した領域に対するネット・リストに追加する。
ステップ１９６０〜１９６５から、プロセスは、ステップ１９７０に進み、そこで現在のネット内の最後のピンを、チェックしたかどうかを判断する。チェックしていなかった場合には、プロセスは、ステップ１９３５に進み、ネット内の次のピンをチェックする。チェックしていた場合には、プロセスは、（ステップ１９７５において）（１）交差コストＣを集中コスト（Ｃｏｓｔ）に追加し、（２）交差コストＣを現在のネットのコストとして記憶する。
次に、プロセスは、（ステップ１９８０において）最後のネットをチェックしたかどうかを判断する。チェックしていなかった場合には、プロセスは、ステップ１９１０に戻り、（１）他のネットを選択し、（２）このネットを分割ライン付近で分割し、（３）このネットが、分割ラインを横切るかどうかを判断する。チェックしていた場合には、プロセスは、（ステップ１９８５において）（１）現在の配置構成の集中コスト、（２）受信した分割ライン付近の受信したネット・リストの分割を表す２つのネット・リストを返送する。
すでに説明したように、配置装置は、ＩＣレイアウトをもっと小さい領域に、反復して分割する一連の分割ラインを形成するために、図１８のプロセス１８００を反復して実行することができる。反復の各レベルにおいて、配置装置は、集中コストの推定値を入手し、そのレベルの分割ラインを横切るネットを分割するために、図１９のプロセス１９００を使用することができる。
より詳細に説明すると、各反復レベルにおいて、配置装置は、最初、プロセス１９００に、（１）そのレベルに対する分割ライン、（２）そのレベルの領域内のすべてのネットのリストを供給する。その後で、プロセス１９００は、（１）分割ライン付近でその領域内のネットを分割し（すなわち、すでに説明したように、プロセスは、ネットおよびその対応するピンを、分割ラインが形成したサブ領域に対する適当なネット・リストに追加し）、（２）分割ラインを横切る集中に対するコストを計算する。
ある反復レベルの領域内の最初のネット構成の集中コストを、プロセス１９００から受信した後で、配置装置は、プロセス１９００が生成した集中コストを改善するために、この領域内のネット構成を反復して修正する最適化アルゴリズムを使用する。いくつかの実施形態の場合には、最適化プロセスは、配置構成に対する可能な各反復修正に対する、配置構成コストを計算するためにプロセス１９００を使用する。これについては第ＶＩＩ節のところでさらに詳細に説明する。この節においては、いくつかの適当な最適化技術についても説明する。
【００２４】
Ｖ．分割配置技術
本発明のいくつかの実施形態は、（１）設計領域を、（スロットとも呼ぶ）多数のサブ領域に分割し、（２）少なくとも１つのネットに対して、ネットの回路素子を含む一組のサブ領域（すなわち、一組のスロット）を識別し、（３）経路が、少なくとも１つのその全体または一部が対角線である縁部を持つ場合に、そのネットに対する識別した一組のサブ領域を接続する経路を識別し、（４）そのネットに対して識別した経路に基づいて配置コストを計算する。
図２３は、このような配置プロセス２３００である。このプロセスは、ＩＣレイアウトのある領域に対する座標を受信する度にスタートする。受信した領域は、全ＩＣレイアウトであってもよいし、またはこのレイアウトの一部であってもよい。いくつかの実施形態の場合には、このプロセスは、また、受信したＩＣ領域内に回路素子を含む、すべてのネットを指定するネット・リストも受信する。他の実施形態の場合には、プロセスは、受信したＩＣ領域内のすべての回路素子のリストを受信し、このリストから、受信したＩＣ領域内に回路素子を含むネットを識別する。
受信したまたは識別した各ネットは、それに関連する一組の回路素子を含む（すなわち、各ネットは、一組の回路素子を含むように定義される）。いくつかの実施形態の場合には、ネットに関連する回路素子は、ＩＣレイアウト内の回路モジュールのピンである。しかし、下記のいくつかの実施形態の場合には、回路素子は回路モジュールである。これらの実施形態の中のあるものは、回路モジュールをネット回路素子として処理し、各モジュールのピンが、すべて（例えば、モジュールの原点に位置するというように）、均等な位置にすべて位置するものと仮定することにより、異なるピン位置を区別する必要がなくなる。
また、いくつかの実施形態の場合には、受信したＩＣ領域内の回路素子の位置が、この領域内の配置構成を定義する。いくつかの実施形態の場合には、プロセス２３００がスタートする前の最初の回路素子の位置はランダムである。別な方法としては、いくつかの実施形態は、フロア・プラニングのような前の物理的設計作業を、これらの素子の最初の位置の一部または全部を指定するために使用する。さらに他のいくつかの実施形態は、受信したＩＣ領域内の回路素子の最初の位置を指定するためにもう１つの配置装置を使用し、その後で、対角線配線を使用する配線アーキテクチャに対する配置構成を最適化するために、プロセス２３００を使用する。
プロセス２３００がスタートする前に、一組の分割ラインが定義される。この一組の分割ラインは、受信したＩＣ領域を、いくつかの（スロットとも呼ぶ）サブ領域に分割する。下記のいくつかの実施形態の場合には、分割ラインは、分割グリッドを形成する交差しているラインである。これら実施形態の中のあるものの場合、交差している分割ラインは、受信したＩＣ領域を、（Ｎ＋１）（Ｍ＋１）のサブ領域に分割するＮ本の水平ラインおよびＭ本の垂直ラインである。この場合、ＮおよびＭは任意の整数である。例えば、これらの水平ラインおよび垂直ラインは、受信したＩＣ領域を、（１）ＮおよびＭが１である場合には、４つのセクションに、（２）ＮおよびＭが２である場合には、９つのセクションに、（３）ＮおよびＭが３である場合には、１６のセクションに、（４）ＮおよびＭの一方が４であり、他方が５である場合には、２０のセクションに分割する。
図２４は、３本の水平分割ラインおよび垂直分割ラインの組により、１６のサブ領域に分割されたＩＣレイアウト２４００である。この図は、また、１６のサブ領域の中の４つのサブ領域内に位置する、５つの回路モジュール２４１０、２４１５、２４２０、２４２５および２４３０を含むネット２４０５も示す。これらの４つのサブ領域は、スロット１、２、８および９である。
分割グリッドが定義されると、プロセス２３００は、最初、（ステップ２３０５において）受信または識別した各ネットに対して、そのネットの回路モジュールを含む一組のサブ領域（すなわち、一組のスロット）を識別する。各ネットに対して識別した一組のサブ領域は、定義したグリッドに関するネットの構成を表す。
【００２５】
次に、プロセスは、（ステップ２３１０において）受信または識別した各ネットに対して、ネットの回路モジュールを含むスロットを接続している、（相互接続縁部とも呼ぶ）一組の相互接続ラインを含む接続グラフの長さを識別する。より詳細に説明すると、各ネットの接続グラフは、ネットの回路素子を含む一組のサブ領域を通る経路を表す。本発明によれば、接続グラフは、その全体または一部が対角線である縁部を持つことができる。
異なる実施形態は、異なる接続グラフを持つことができる。下記のいくつかの実施形態の場合には、接続グラフはシュタイナー・ツリーである。図２５〜２７は、図２４のネット２４０５に対する、シュタイナー・ツリー２５０５、２６０５および２７０５である。これらのシュタイナー・ツリーは、すべて同じ長さを持つ。これらのツリーの中の１つ（２５０５）は、シュタイナー・ノード（２５２０）を持つ。さらに、これら各ツリーは、その一部が対角線である少なくとも１つの縁部を持つ。これら実施形態の場合には、対角線縁部は、レイアウトの境界に対して４５度の角度を持つ。八角配線モデルを使用する場合には、これらのシュタイナー・ツリーの長さは、分割グリッドのこのレベルにおけるネット２４０５に対して必要な経路（相互接続ライン）の長さにほぼ等しい。
いくつかの実施形態の場合には、プロセスは、（ステップ２３１０において）リアルタイムでこの接続グラフを形成し、グラフの形成中または後にその長さを定量化することにより、各ネットの接続グラフの長さを識別する。しかし、下記の実施形態は、異なる方法で接続グラフの長さを識別する。プロセス２３００がスタートする前に、これらの実施形態は、（１）分割グリッドに関する可能な各ネット構成に対する接続グラフを形成し、（２）記憶構造体内で接続グラフの長さを予め表の形にする。次に、配置中、これらの予め表の形にする実施形態は、（ステップ２３１０において）メモリから識別した各ネット構成の接続グラフの長さを検索する。接続グラフを形成し、予め表の形にする１つの方法について、図２８〜図３１を参照しながら以下に説明する。
ステップ２３１５において、プロセス２３００は、受信した領域内のレイアウト内の受信または識別したネットの配置コストを計算するために、ステップ２３１０において識別した長さを使用する。いくつかの実施形態は、各グラフの長さを（例えば、加算、乗算等のように）結合することによりこのコストを計算する。
本発明のいくつかの実施形態の場合には、プロセス２３００は、最初の配置構成を指定するネット・リスト（すなわち、レイアウト内のモジュールの位置を修正する前の、ＩＣレイアウト内のすべてのネットを識別するネット・リスト）を受信した場合に、最初の配置構成の配置コストの推定値を生成する。
最初の配置構成の遅延コストを入手した後で、いくつかの実施形態は、配置コストを改善するために、受信したＩＣ領域内の配置構成を反復して修正する最適化アルゴリズムを使用する。本発明の異なるいくつかの実施形態は、焼きなまし、ローカル最適化、ＫＬＦＭ、タブ探索等のような異なる最適化技術を使用する。また、異なる最適化技術は、配置構成を異なる方法で修正する。例えば、各反復において、いくつかの技術は、１つの回路モジュールを移動し、他の技術は、２つのモジュールを交換し、さらに他の技術は、分割グリッドにより形成されたサブ領域間で、関連モジュールを移動する。また、各反復において、（例えば、ＫＬＦＭおよびタブ探索アルゴリズムのような）いくつかの最適化技術は、最善の移動を探索し、一方、（例えば、シミュレートした焼きなましおよびローカル最適化のような）他の最適化技術は、ランダム移動を選択する。さらに、（シミュレートした焼きなましのような）いくつかの技術は、測定基準スコアを悪くする移動を受け入れ、一方、（例えば、ローカル最適化のような）他の技術は、それを受け入れない。いくつかの適当な最適化プロセスについては、第ＶＩＩ節のところで説明する。
最適化中の各反復修正の後で、すべてのネット、またはその上に移動した１つまたは複数の回路モジュールが位置するネットだけに対して、プロセス２３００を反復することにより、配置構成が再計算される。配置構成を最適化した後で、いくつかの実施形態はその配置動作を終了する。配置構成を最適化した後で、いくつかの実施形態はその配置動作を終了する。いくつかの実施形態は、１つまたはそれ以上の基準に適合する定義した各サブ領域、（すなわち、分割グリッドにより形成された各サブ領域）上で、プロセス２３００および最適化動作を反復して実行する。例えば、いくつかの実施形態は、指定した数以上の回路モジュールを含む各サブ領域上で、分割動作および最適化動作を反復して実行する。
【００２６】
いくつかの実施形態は、反復プロセス中に、異なるレベルに対して異なる形の分割グリッドを使用する。他の実施形態は、すべての反復レベルに対して同じ形の分割グリッドを使用する。各反復レベルにおいて、これらの実施形態は、単に、その反復レベルのＩＣ領域の座標を一致させるために、分割グリッドの座標を調整するだけである。すべての反復レベルに対して、同じ形の分割グリッドを使用すると、いくつかの利点が得られる。例えば、そうすることにより、予め表の形にする実施形態は、１つの分割グリッドに対するネット構成長さだけを記憶することができる。これらの長さは、すべての反復レベルで再使用することができる。何故なら、これらの長さは、任意の１つのレベルのところで、ネット構成の相対的コストを定義するために使用することができるからである。
図２８〜３１は、分割グリッドに関する可能なネット構成をモデル化する、シュタイナー・ツリーの長さを予め表の形にする１つの方法である。より詳細に説明すると、図２８は、（１）分割グリッドに関する可能な各ネット構成に対するシュタイナー・ツリーを形成し、（２）形成した各シュタイナー・ツリーの長さを参照テーブル（「ＬＵＴ」）内に記憶するプロセス２８００を示す。
プロセス２８００は、（ステップ２８０５において）特定の分割グリッドが形成する（スロットとも呼ばれる）各サブ領域に対する、シュタイナー・ツリー・ノードを定義することによりスタートする。図２９は、４×４分割グリッドが形成する１６のスロットに対する１６のシュタイナー・ツリー・ノード２９０５を示す。これらのノードは、すべてのネット構成の相互接続トポロジーをモデル化する、シュタイナー・ツリーのすべての潜在的ノードを示す。図２９においては、識別したノードは、各スロットの中心に位置する。他のいくつかの実施形態の場合には、ノードは、スロット内の他の位置に均等に形成することができる（例えば、スロットの隅の中の１つに均等に位置させることができる）。
次に、プロセス２８００は、（ステップ２８１０において）可能なノード構成の組Ｎを定義する。グリッド分割が、（例えば、４、９、１６、２０等のような）Ｙ個のサブ領域を形成する場合には、組Ｎは２Ｙのノード構成を含む。２以下のノードを含むノード構成は、シュタイナー・ツリーを持たない。それ故、プロセスは、これらの構成の長さをゼロに設定する。
ステップ２８１０の後で、プロセス２８００は、（ステップ２８１５において）ステップ２８１０において定義した組から、３つ以上のノードを含む可能なノード構成ＮＴの中の１つを選択する。次に、プロセスは、（ステップ２８２０において）ステップ２８１５において選択したノード構成に対する最小スパニング・ツリー（「ＭＳＴ」）を形成し、このツリーの長さ（ＭＳＴ＿Ｃｏｓｔ）を計算する。プロセスは、その全体または一部が対角線であってもよい縁部を使用することによりこの最小スパニング・ツリーを形成する。このようなＭＳＴを形成し、その長さを計算する１つの方法について、図３１を参照しながら以下に説明する。
選択したノード構成に対するＭＳＴを形成した後で、プロセス２８００は、（ステップ２８２５において）潜在的シュタイナー・ノードを識別する。図３０は、潜在的なシュタイナー・ノードを識別するためのプロセス３０００を示す。このプロセスは、潜在的シュタイナー・ノードの組Ｐを、ステップ２８１５において選択したノード構成の一部でない、ステップ２８０５において定義したすべてのノードに等しくなるように初期化することによりスタートする。次に、このプロセスは、（ステップ３０１０において）潜在的シュタイナー・ノードの中の１つを選択する。
【００２７】
次に、プロセス３０００は、ステップ３０１０において選択したノード（Ｑ）が、選択したノード構成内の任意の２つのノード間の最短パス上に位置するかどうかを判断する。この判断を行うために、プロセスは、任意の２つのノード（ＢおよびＣ）が、２つのノード（ＢおよびＣ）間の距離が、（１）第１のノード（Ｂ）と選択したノード（Ｑ）の間の距離と、（２）第２のノード（Ｃ）と選択したノード（Ｑ）の間の距離の合計に等しくなるように、ノード構成内に存在するかどうかを判断する。いくつかの実施形態の場合には、プロセスは、上記囲みボックス・アプローチおよび式（Ａ）により、任意のペアのノード間の距離を計算する。
プロセスが、ステップ３０１０において選択したノード（Ｑ）が、ノード構成内の任意の２つのノード間の最短パス上に位置していると判断した場合には、プロセスは、（ステップ３０２０において）潜在的シュタイナー・ノードの組Ｐ内に選択したノードを維持し、このノードをチェック済みのノードとしてフラグを立て、以下に説明するステップ３０３０に進む。一方、選択したノード（Ｑ）が、選択したノード構成内の任意の２つのノード間の最短パス上に位置していない場合には、プロセスは、（ステップ３０２５において）潜在的なシュタイナー・ノードのＰ組から選択したノードを除去し、ステップ３０３０に進む。
ステップ３０３０において、プロセスは、一組の潜在的なシュタイナー・ノード内のすべてのノードをチェックしたかどうかを判断する。チェックしていなかった場合には、プロセスは、ステップ３０１０に戻り、この組内のもう１つのノードを選択し、それにより、プロセスは、ステップ３０１５において、このノードが選択したノード構成内の任意の２つのノード間の最短パス上に位置しているかどうかを判断することができる。プロセスが（ステップ３０３０において）潜在的なシュタイナー・ノードの組内のすべてのノードのチェックは終了したと判断した場合には、プロセスは終了する。
プロセス２８００が、（ステップ２８２５において）潜在的シュタイナー・ノードを識別するために、図３０のプロセス３０００を実行した場合には、プロセス２８００は、（ステップ２８３０において）シュタイナー・ノードの可能なすべての組を定義する。シュタイナー・ノードの定義した各組は、ステップ２８２５において識別した１つまたはそれ以上のシュタイナー・ノードを含む。また、シュタイナー・ノードの定義した各組は、選択したノード構成内のノードの数より２つ小さい最大の大きさを持つ。
次に、プロセス２８００は、（ステップ２８３５において）ステップ２８３０において定義した複数のシュタイナー・ノードの組の中の１つを選択する。次に、プロセスは、（ステップ２８４０において）（１）選択したノード構成および選択したシュタイナー・ノードの組内のノードに対する最小スパニング・ツリー（「ＭＳＴ」）を形成し、（２）このＭＳＴ長さ（ＭＳＴ＿Ｃｏｓｔ）を計算する。プロセスは、その全体または一部が対角線であってもよい縁部を使用することにより、このＭＳＴを形成する。このようなＭＳＴを形成し、その長さを計算する１つの方法について、図３１を参照しながら以下に説明する。
【００２８】
次に、プロセスは、（ステップ２８４５において）ステップ２８３０において定義したシュタイナー・ノードの組内に、まだチェックしていなかった追加のシュタイナー・ノードの組が存在するかどうかを判断する。存在する場合には、プロセスは、ステップ２８３５に戻り、他のシュタイナー・ノードの組を選択し、その結果、この組のノードおよび選択したノード構成内のノードに対するＭＳＴを形成することができる。
プロセスが、（ステップ２８４５において）選択したノード構成および各シュタイナー・ノードの組のＭＳＴを生成したと判断した場合には、プロセスは、（ステップ２８５０において）ステップ２８２０および２８４０において計算する最も小さなＭＳＴを識別する。次に、プロセスは、（ステップ２８５５において）ＬＵＴ内にステップ２８５０において識別したＭＳＴ＿Ｃｏｓｔを、ステップ２８１５において選択したノード構成に対するシュタイナー・ツリー経路の長さとして記憶する。配置動作中、配置装置は、記憶構造体から記憶した長さを検索することにより、現在のノード構成に対するシュタイナー・ツリーの長さを迅速に識別する。
次に、プロセスは、（ステップ２８６０において）２つまたはそれ以上のノードを含む、ステップ２８１０において定義した組内のすべてのノード構成をチェックしたかどうかを判断する。チェックしていなかった場合には、プロセスは、ステップ２８１５に戻り、２つまたはそれ以上のノードを含む、まだチェックしていなかったノード構成を選択し、次に、このノード構成に対するシュタイナーの長さを決定し、記憶するために動作２８２０〜５５を反復する。そうでない場合は、プロセスは終了する。
図３１は、最小スパニング・ツリーを形成するために、図２８のプロセス２８００が、ステップ２８２０および２８４０のところで使用するプロセス３１００である。あるノード構成に対する最小スパニング・ツリーは、ノードのところだけで分岐する（すなわちスタートまたは終了する）、最短の経路を通る構成のＮ個のノードを接続する（すなわち、結ぶ）Ｎ−１個の縁部を含むツリーである。あるネット構成に対するＭＳＴの長さは、そのネット構成に関連するノードを相互に接続するために必要なワイヤの長さのもっと低い境界推定値である。
以下に説明する本発明のいくつかの実施形態の場合には、ＭＳＴの縁部は、水平方向を向いていても、垂直方向を向いていても、対角線方向を向いていてもよい。対角線縁部は、その全体または一部が対角線であってもよい。また、ＩＣレイアウトが、（例えば、±１２０度の相互接続ラインのような）、対角線相互接続ラインを使用している場合には、ＭＳＴの対角線縁部は、レイアウト内の対角線相互接続ラインの中のあるものと（例えば、±１２０度方向のような）同じ方向を向いていてもよい。
例えば、ＩＣレイアウトが、水平ライン、垂直ラインおよび４５度対角線ラインを指定する八角配線モデルを使用している場合には、いくつかの実施形態は、水平縁部、垂直縁部、および４５度対角線縁部を含むＭＳＴを形成する。上記の図１１は、このようなＭＳＴの一例である。また、すでに説明したように、ＭＳＴの各縁部の２つのノードを、囲みボックスの２つの対向する隅として処理することにより、上記囲みボックス・アプローチおよび式（Ａ）により各縁部の長さを求めることができる。
【００２９】
プロセス３１００は、（１）ノードの組Ｍに対してＭＳＴを形成し、（２）このＭＳＴの長さを計算するために、プロセス２８００が、（ステップ２８２０または２８４０において）プロセス３１００を呼び出す度にスタートする。このプロセスは、最初、（ステップ３１０５において）ＭＳＴの長さ（ＭＳＴ＿Ｃｏｓｔ）をゼロに設定する。次に、プロセスは、（ステップ３１１０において）ノードの受信した組Ｍから１つのノードをスパニング・ツリーの第１のノードとして選択し、（２）この組Ｍからこのノードを除去する。
次に、プロセスは、（ステップ３１１５において）ノードの残りの組Ｒは、ノードの現在の組Ｍに等しいと定義する。ステップ３１２０において、プロセスは、残りのノードの組Ｒから１つのノードを選択し、残りのノードのこの組から選択したノードを除去する。
次に、プロセスは、（ステップ３１２５において）ステップ３１２０において選択したノードと、スパニング・ツリーの現在の各ノードとの間の距離を計算し、記憶する。選択したノードと各ノードとの間の距離は、その全体または一部が対角線である縁部を通って移動することができる。それ故、いくつかの実施形態の場合には、プロセスは、選択したノードと各ノードとの間の最短距離を計算するために、上記囲みボックス・アプローチおよび式（Ａ）を使用する。
次に、プロセスは、（ステップ３１３０において）組Ｒ内にノードが残っているかどうかを判断する。残っている場合には、プロセスは、ステップ３１２０に戻り、この組から他のノードを選択する。それ故、プロセスは、（ステップ３１２５において）このノードとスパニング・ツリーの現在のノードとの間の距離を計算することができる。残っていない場合には、プロセスは、（ステップ３１３５において）ステップ３１２５において記録した最短距離を識別し、この距離になるノードの組合わせ（すなわち、組Ｍ内のノードおよびＭＳＴのノード）を識別する。その後で、プロセスは、（ステップ３１４０において）識別した最短距離をＭＳＴの長さ（ＭＳＴ＿Ｃｏｓｔ）に加算する。
次に、プロセスは、（ステップ３１４５において）（１）ステップ３１３５において識別したノードに対応するツリー・ノードを定義し、（２）ノードの組Ｍから識別したノードを除去し、（３）定義したツリー・ノードを、ステップ３１３５において識別したＭＳＴノードにリンクする。次に、プロセスは、（ステップ３１５０において）ノードの組Ｍが空であるかどうかを判断する。空でない場合には、プロセスは、ステップ３１１５に戻り、ＭＳＴの現在のノードに最も近い（この組Ｍ内の）次のノードを識別する。空である場合には、プロセスは、ノードの受信した組Ｍに対してＭＳＴを形成したかどうかを判断し、この組に対する計算したＭＳＴの長さ（ＭＳＴ＿Ｃｏｓｔ）を返送する。
【００３０】
ＶＩ．遅延測定基準
上記いくつかの実施形態は、異なる配置構成のコストを計算するために長さ測定基準を計算する。これらの長さ測定基準は、対角線配線を含む配線モデルの使用に対応する。通常の当業者であれば、他の実施形態は、他のタイプの配置測定基準を使用することができることを理解することができるだろう。
例えば、いくつかの実施形態は、対角線配線の使用に対応する配置遅延コストを計算する。これらの実施形態の中のあるものは、あるネットの配置に対する遅延コストを、このような配置に対して入手したネットの長さコストから入手する。例えば、いくつかの実施形態は、遅延コストを、下式（Ｆ）のような一次式により長さコストから入手する。
遅延コスト＝Ａ＊ワイヤ長さコスト＋Ｂ                  （Ｆ）
ここで、ＡおよびＢはスカラ定数である。他の実施形態は、遅延コストを、下式（Ｇ）のような非線形方程式により長さコストから入手する。
遅延コスト＝Ａ＊ワイヤ長さコストＤ＋Ａ’＊ワイヤ長さコストＤ−１＋．．．＋Ｂ
（Ｇ）
ここで、Ａ、Ａ’、ＢおよびＤはスカラ定数である。上式中、Ｄは１より大きい任意の値をとることができる。また、この式は、長さに依存する倍数成分を持つことができる。これらの式中、長さコストは、上記アプローチの中の１つにより計算することができる。
また、長さコストを上記の予め表の形にする分割アプローチにより計算する場合には、遅延コストは、長さコストと一緒に予め表の形にすることができる。例えば、プロセス２８００は、分割グリッドに関するネット構成の長さコストを識別した場合、ステップ２８５５において遅延コストを計算し、記憶することができる。より詳細に説明すると、ステップ２８５５において、プロセス２８００は、ステップ２８５０において識別した長さコストから、遅延コストを計算するために上式（Ｆ）または（Ｇ）を使用することができ、次に、長さコストと一緒に遅延コストをＬＵＴ内に記憶することができる。
図３２は、遅延コストを計算するプロセス３２００である。配置装置は、ネット・リスト上の一組のネットに対する、遅延コストの推定値を生成するためにこのプロセスを使用することができる。いくつかの実施形態の場合には、プロセス３２００は、多数のネットを指定するネット・リストを受信した場合、何時でもスタートする。
受信した各ネットは、それに関連する一組の回路素子を含む（すなわち、各ネットは、いくつかの回路素子を含むように定義される）。すなわち、ネット・リスト上のネットは、ＩＣレイアウト内のいくつかのまたはすべての回路素子間の相互接続を指定する。下記のいくつかの実施形態の場合には、ネットに関連する回路素子は、ＩＣレイアウト内の回路モジュールのピンである。しかし、他の実施形態は、回路モジュールをネットの回路素子として処理する。これらの実施形態の中のあるものは、回路モジュールをネットの回路素子として処理し、各モジュールのピンが、すべて（例えば、モジュールの原点に位置するというように）均等な位置にすべて位置するものと仮定することにより、異なるピン位置を区別する必要がなくなる。
【００３１】
いくつかの実施形態の場合には、プロセス３２００がスタートする前のネットの回路素子の位置が、最初の配置構成を定義する。これらの実施形態の中のあるものの場合には、最初の回路素子の位置はランダムである。他の実施形態の場合には、フロア・プラニングのような前の物理的設計作業が、これらの素子の最初の位置の一部または全部を指定する。他のいくつかの実施形態は、回路素子の最初の位置を指定するためにもう１つの配置装置を使用し、次に、対角線配線を使用する配線アーキテクチャに対する配置構成を最適化するために、プロセス３２００を使用する。
プロセス３２００は、最初に、（ステップ３２０５において）１つのネットを選択する。その後で、選択したネットに対して、このプロセスは、（ステップ３２１０において）そのネットの長さコストに基づく遅延コストを識別する。長さコストは、上記プロセス１０００、１２００、１４００、１９００および２３００の中の１つに基づいて計算することができる。また、識別した遅延コストは、式（Ｆ）および（Ｇ）が示す関係のような任意の数の数学的関係に基づいて長さコストから入手することができる。すでに説明したように、予め表の形にする分割アプローチを使用する実施形態は、各ネット構成に対する遅延コストを予め表の形にすることができる。それ故、これらの実施形態の場合には、プロセス３２００は、（ステップ３２１０において）記憶構造体から予め計算した遅延コストを検索するために、分割グリッドに関する選択したネット構成により遅延コストを識別する。
ステップ３２１０の後で、このプロセスは、（ステップ３２１５において）必要な場合には、選択したネットの識別した遅延コストを記憶する。プロセス３２００は、予め表の形にした遅延コストを使用する上記分割アプローチをを使用する場合には、識別した遅延コストを記憶しなくてもよい。これら実施形態の場合には、遅延コストは、分割グリッドに関する各ネット構成に対してすでに記憶されている。
次に、プロセスは、（ステップ３２２０において）受信したネット・リスト内の最後のネットをチェックしたかどうかを判断する。チェックしていなかった場合には、プロセスは、ステップ３２０５に戻り、他のネットを選択し、次に、新しく選択したネットに対してステップ３２１０〜３２１５を反復して実行する。チェックしていた場合には、受信した配置構成に対して、プロセスは、（ステップ３２２５において）ステップ３２１０において識別した遅延コストに基づいて全遅延コストを計算する。いくつかの実施形態の場合には、プロセスは、全遅延コストを、ステップ３２１０において識別した遅延コストの合計として計算する。ステップ３２２５の後で、プロセスは終了する。
本発明のいくつかの実施形態の場合には、プロセス３２００は、最初の配置構成を指定するネット・リスト（すなわち、レイアウト内のモジュールの位置を修正する前の、ＩＣレイアウト内のすべてのネットを識別するネット・リスト）を受信した場合に、最初の配置構成に対する遅延コストの推定値を生成する。
最初の配置構成の遅延コストを入手した後で、いくつかの実施形態は、配置構成コストを改善するために、配置構成を反復して修正する最適化プロセスを使用する。いくつかの実施形態の場合には、最適化プロセスは、配置構成に対する可能な各反復修正に対する、配置構成コストを計算するためにプロセス３２００を使用する。これについては第ＶＩＩ節のところでさらに詳細に説明する。この節においては、いくつかの適当な最適化技術についても説明する。
【００３２】
ＶＩＩ．最適化技術
すでに説明したように、本発明のコスト計算方法は、種々の最適化技術と一緒に使用することができる。３つの適当な最適化技術について以下に説明する。これら３つの技術とは、（１）ローカル最適化、（２）シミュレートした焼きなまし、および（３）ＫＬＦＭである。
Ａ．ローカル最適化
ローカル最適化は、コスト計算機能により生成した配置スコアを改善するために、配置構成を反復して修正する技術である。反復の度ごとに、この技術は、ある回路モジュールを移動し、２つのモジュールを交換し、または多数の関連するモジュールを移動するなどする。また、反復の度ごとに、この技術は移動をランダムに選択する。さらに、この技術は、計算したコストを悪くする移動を受け入れない。
図３３は、ローカル最適化プロセス３３００の一例である。このプロセスは、最初に、（ステップ３３０５において）最初の配置構成を受信する。いくつかの実施形態の場合には、プロセスは、回路モジュールのリスト、これらのモジュールに対する最初の配置構成、およびこれらのモジュール間の相互接続を指定するネット・リストを受信することにより最初の構成を受信する。
最初の配置構成を受信した後で、プロセス３３００は、（ステップ３３１０において）第ＩＩ節〜第ＶＩ節のところで説明した、上記コスト計算方法の中の１つのようなコスト計算方法を呼び出す。これに応じて、このコスト計算方法は、最初の配置構成のコスト（Ｃ）を計算し、それを返送する。
プロセス３３００がコスト計算方法を呼び出すと、このプロセスは、この方法、に対して、最初の配置構成を指定するネット・リスト（すなわち、レイアウト内のモジュールの位置を修正する前の、ＩＣレイアウト内のすべてのネットを識別するネット・リスト）を供給する。
また、コスト計算方法が、上記二分割プロセス１９００である場合には、プロセス３３００は、プロセス１９００を呼び出す前にプロセス１８００を呼び出す。すでに説明したように、プロセス１８００は、最適化プロセス３３００により最適化中の、現在のＩＣ領域に対する分割ラインを定義する。プロセス３３００は、プロセス１９００から最初の配置構成のネット・カット集中コスト（Ｃ）を受信するために、集中計算プロセス１９００に最初の構成のネット・リストと一緒にこの分割ラインを供給する。プロセス１９００から、プロセス３３００は、また、現在の分割ラインにより形成された２つの領域内のネット、およびピンを指定する２つのネット・リストを受信する。
ステップ３３１０において、最初の配置構成のコストを入手した後で、プロセスは、（ステップ３３１５において）無駄反復カウンタ（Ｆ）を１に設定する。以下にさらに詳細に説明するように、プロセスは、予め定めた数の反復を行ったが改善がみられなかったために、その動作を終了すべきかどうかを判断するために、カウンタを使用する。
その後で、プロセスは、（ステップ３３２０において）ＩＣレイアウト中の１つまたはそれ以上の回路モジュールの座標の修正を必要とする、ランダム移動を選択する。プロセス３３００が、分割プロセス１９００または２３００を使用する場合には、このランダム移動により、分割ラインに対して１つまたはそれ以上の回路モジュールが再配置される。例えば、プロセス２３００の場合には、ランダム移動は、回路モジュールに対して、あるスロットから別のスロットへの位置の変更を指定することができる。
【００３３】
次に、プロセスは、（ステップ３３２５において）このランダム移動の影響を受けたすべてのネットを識別する。ネットの定義方法により、これらのネットは、（１）その移動に対して選択した１つまたは複数の回路モジュールを含むネットであるか、（２）これらの回路モジュールのピンを含むネットである。
ステップ３３３０において、プロセスは、ステップ３３２５において識別したネットに対する現在のコストを計算する。すでに説明したように、コスト計算プロセス１０００、１２００、１４００、１９００、２３００および３２００は、各ネットに対するコストを記憶する。それ故、プロセス３３００は、これらネットに対して記憶したコストの値を合計することにより、識別したネットに対する現在のコストを計算することができる。
選択したランダム移動により、プロセス３３００は、（ステップ３３３５において）移動により影響を受けた各回路モジュールおよび／またはピンの座標を修正する。すなわち、ステップ３３３５において、プロセスは、ステップ３３２０において識別したランダムな位置を一致させるために、影響を受けた１つのまたは複数の回路モジュール、および／またはその関連するピンの座標を修正することにより移動を行う。
次に、プロセスは、コスト計算プロセスを呼び出し、このプロセスに、選択した移動により影響を受けている識別したネットを指定するネット・リストを供給する。このネット・リストは、選択した移動の後の識別したネットの構成を指定する。何故なら、プロセス３３００が、ステップ３３３５において、影響を受けた回路モジュールおよび／またはピンの座標を修正したからである。コスト計算プロセスが、二分割プロセス１９００であるいくつかの実施形態の場合には、プロセス３３００は、このプロセス１９００に、識別したネットのリストと一緒に、最適化中の現在のＩＣ領域に対する分割ラインを供給する。
ステップ３３４０における呼出しに応じて、コスト計算方法は、潜在的修正の後で識別したネットの構成に対するコスト（Ｃ）を計算し、返送する。コスト計算方法が二分割プロセス１９００である場合には、このプロセスは、また、分割ライン付近で識別したネットを分割し、この分割を反映している２つのネット・リストを返送する。
（ステップ３３４０において）潜在的な修正の後で識別したネットに対するコストを受信した後で、プロセスは、（ステップ３３４５において）潜在的修正を行う前に識別したネットに対するコスト、（すなわち、ステップ３３３０において計算したコスト）から、潜在的修正を行った後の識別したネットに対するコスト（すなわち、ステップ３３４０において計算したコスト）を差し引くことにより、デルタ・コストを生成する。
ステップ３３５０において、プロセスは、デルタ・コストが、ゼロより小さいかどうかを判断する。
小さい場合には、選択した移動が、配置コストを低減し、プロセスは、移動を保持することを決定する。より詳細に説明すると、デルタ・コストがゼロより小さい場合には、プロセスは、（ステップ３３５５において）現在の配置構成（すなわち、選択した移動を行う配置構成）のコストを、前の配置構成（すなわち、選択した移動を行わない配置構成）のコストにデルタ・コストを加算したものに等しくなるように設定する。デルタ・コストは負数であり、そのため、全配置構成コストＣは少なくなる。
【００３４】
次に、プロセス３３００は、（ステップ３３６０において）無駄反復カウンタＦを１に設定する。また、コスト計算方法が二分割プロセス１９００である場合には、プロセス３３００は、現在の分割ラインにより形成された２つのサブ領域に対する２つのネット・リストを修正するためにステップ３３４０において方法１９００が返送した２つのネット・リストを使用する。次に、プロセスは、ステップ３３２０に戻り、他のランダム移動を選択する。
通常の当業者であれば、いくつかの実施形態の場合には、プロセス３３００は、ステップ３３４５において計算したデルタ・コストの値だけに基づいて移動を保持するために、その決定に準拠しないことを理解することができるだろう。例えば、プロセス３３００が分割プロセス２３００を使用する場合には、プロセス３３００は、いくつかの実施形態の場合には、また、プロセス２３００の分割グリッドにより形成された各サブ領域の集中を定量化する、バランス・コストも計算する。これらの実施形態の場合には、プロセス３３００は、このような移動がバランス・コストを増大する場合には、ステップ３３４５において計算したデルタ・コストを低減する移動を保持することはできない。
プロセスが、（ステップ３３５０において）デルタ・コストがゼロ以上であると判断した場合には、プロセスは、選択した移動が、配置コストを低減しないことに気がつく。それ故、プロセスは、（ステップ３３７０において）移動前のその元の座標（すなわち、ステップ３３３５の前のその座標）に戻すために、影響を受けた１つまたは複数のモジュールおよび／またはその対応するピンの座標を変更する。プロセスは、また、必要な場合には、その元の値に戻すために（すなわち、ステップ３３４０の前のネットに対して記憶したコスト・に戻すために）、識別した各ネットのコストを変更する。プロセス３３００が、分割長さまたは予め表の形にした長さまたは遅延コストを使用する、遅延コスト計算プロセス２３００または３２００を使用する場合には、プロセスは、元の値に戻すために、識別した各ネットのコストを変更する必要はない。何故なら、これら実施形態の場合には、まず第一に、プロセス２３００または３２００はこれらのコストを修正しなかったからである。
次に、プロセスは、（ステップ３３７５において）無駄反復カウンタを１だけ増大する。次に、プロセスは、（ステップ３３８０において）無駄反復カウンタが予め定めた最大値に等しいかどうかを判断する。等しくない場合には、プロセスは、ステップ３３２０に戻り、他のランダム移動を選択する。等しい場合には、プロセスは、（ステップ３３８０において）予め指定された回数反復を行ったが配置スコアは改善されなかったことを知る。それ故、プロセスは、（ステップ３３８５において）現在の配置構成を指定するネット・リストを返送し、終了する。
【００３５】
Ｂ．シミュレートした焼きなまし
シミュレートした焼きなましは、コスト計算機能により生成した配置スコアを改善するために、配置構成を反復して修正する最適化技術である。反復の度ごとに、この技術は、ある回路モジュールを移動し、２つのモジュールを交換し、または多数の関連するモジュールを移動するなどする。また、反復の度ごとに、この技術は移動をランダムに選択する。さらに、この技術は、計算したコストを悪くする移動を受け入れるが、反復の回数が増大するにつれて、もっと程度の悪い移動を許容する。
図３４は、ローカル最適化プロセス３４００の一例である。このプロセスは、最初に、（ステップ３４０５において）最初の配置構成を受信する。いくつかの実施形態の場合には、プロセスは、回路モジュールのリスト、これらのモジュールに対する最初の配置構成、およびこれらのモジュール間の相互接続を指定するネット・リストを受信することにより、最初の構成を受信する。
最初の配置構成を受信した後で、プロセス３４００は、（ステップ３４１０において）第ＩＩ節〜第ＶＩ節のところで説明した、上記コスト計算方法の中の１つのようなコスト計算方法を呼び出す。これに応じて、このコスト計算方法は、最初の配置構成のコスト（Ｃ）を計算し、それを返送する。
プロセス３４００がコスト計算方法を呼び出すと、このプロセスは、この方法に対して、最初の配置構成を指定するネット・リスト（すなわち、レイアウト内のモジュールの位置を修正する前の、ＩＣレイアウト内のすべてのネットを識別するネット・リスト）を供給する。
また、コスト計算方法が、上記二分割プロセス１９００である場合には、プロセス３４００は、プロセス１９００を呼び出す前にプロセス１８００を呼び出す。すでに説明したように、プロセス１８００は、最適化プロセス３４００により最適化中の現在のＩＣ領域に対する分割ラインを定義する。プロセス３４００は、プロセス１９００から最初の配置構成のネット・カット集中コスト（Ｃ）を受信するために、集中計算プロセス１９００に最初の構成のネット・リストと一緒にこの分割ラインを供給する。プロセス１９００から、プロセス３４００は、また、現在の分割ラインにより形成された２つの領域内のネットおよびピンを指定する２つのネット・リストを受信する。
ステップ３４１０において、最初の配置構成のコストを入手した後で、プロセスは、（ステップ３４１５において）無駄反復カウンタ（Ｆ）を１に設定する。以下にさらに詳細に説明するように、プロセスは、予め定めた数の反復を行ったが改善がみられなかったので、その動作を終了すべきかどうかを判断するためにカウンタを使用する。
ステップ３４１５において、プロセスは、また、焼きなまし「温度」Ｔおよび反復カウンタＮを設定する。以下にさらに詳細に説明するように、焼きなまし温度は、プロセス３４００が悪い移動を受け入れる可能性を決定する。反復カウンタは、プロセス３４００が、悪い移動を次第に受け入れるの拒むように、時間の経過とともにこの温度を低減するために使用される。
【００３６】
次に、ステップ３４２０において、プロセスは、（１）ＩＣレイアウト内の１つまたはそれ以上の回路モジュールの座標の修正を必要とするランダムな移動を選択し、（２）反復カウンタＮを増大する。プロセス３４００が、分割プロセス１９００または２３００を使用する場合には、ランダム移動は、分割ラインに対して１つまたはそれ以上の回路モジュールを再配置する。例えば、プロセス２３００の場合には、ランダム移動は、回路モジュールに対して、あるスロットから別のスロットへの位置の変更を指定することができる。
次に、プロセスは、（ステップ３４２５において）このランダム移動の影響を受けたすべてのネットを識別する。ネットの定義方法により、これらのネットは、（１）その移動に対して選択した１つまたは複数の回路モジュールを含むネットであるか、（２）これらの回路モジュールのピンを含むネットである。
ステップ３４３０において、プロセスは、ステップ３４２５において識別したネットに対する現在のコストを計算する。すでに説明したように、コスト計算プロセス１０００、１２００、１４００、１９００、２３００および３２００は、各ネットに対するコストを記憶する。それ故、プロセス３４００は、これらネットに対して記憶したコストの値を合計することにより、識別したネットに対する現在のコストを計算することができる。
選択したランダム移動により、プロセス３４００は、（ステップ３４３５において）移動により影響を受けた各回路モジュールおよび／またはピンの座標を修正する。すなわち、ステップ３４３５において、プロセスは、ステップ３４２０において識別したランダムな位置に一致するように、影響を受けた１つのまたは複数の回路モジュール、および／またはその関連するピンの座標を修正することにより移動を行う。
その後で、プロセスは、コスト計算プロセスを呼び出し、このプロセスに、選択した移動により影響を受けている識別したネットを指定するネット・リストを供給する。このネット・リストは、選択した移動の後の識別したネットの構成を指定する。何故なら、プロセス３４００が、ステップ３４３５において、影響を受けた回路モジュールおよび／またはピンの座標を修正したからである。コスト計算プロセスが二分割プロセス１９００であるいくつかの実施形態の場合には、プロセス３４００は、このプロセス１９００に、識別したネットのリストと一緒に、最適化中の現在のＩＣ領域に対する分割ラインを供給する。
【００３７】
ステップ３４４０における呼出しに応じて、コスト計算方法は、潜在的修正の後で識別したネットの構成に対するコスト（Ｃ）を計算し、返送する。コスト計算方法は、二分割プロセス１９００である場合には、このプロセスは、また、分割ライン付近で識別したネットを分割し、この分割を反映している２つのネット・リストを返送する。
（ステップ３４４０において）潜在的な修正の後で識別したネットに対するコストを受信した後で、プロセスは、（ステップ３４４５において）潜在的修正を行う前に識別したネットに対するコスト（すなわち、ステップ３４３０において計算したコスト）から、潜在的修正を行った後の識別したネットに対するコスト（すなわち、ステップ３４４０において計算したコスト）を差し引くことによりデルタ・コストを生成する。
ステップ３４５０において、プロセスは、デルタ・コストが、ゼロより小さいかどうかを判断する。小さい場合には、選択した移動が配置コストを低減し、プロセスは移動を保持することを決定する。より詳細に説明すると、デルタ・コストがゼロより小さい場合には、プロセスは、（ステップ３４５５において）無駄反復カウンタＦを１にリセットする。次に、プロセスは、（ステップ３４６０において）現在の配置構成（すなわち、選択した移動を行う配置構成）のコストを、前の配置構成（すなわち、選択した移動を行わない配置構成）のコストにデルタ・コストを加算したものに等しくなるように設定する。デルタ・コストは負数であり、そのため、全配置構成コストＣは低減する。コスト計算方法が二分割プロセス１９００である場合には、プロセス３４００は、（ステップ３４６５において）現在の分割ラインにより形成された２つのサブ領域に対する、２つのネット・リストを修正するために、ステップ３４４０において、方法１９００が返送した２つのネット・リストを使用する。
次に、プロセスは、（ステップ３４７０において）反復カウンタＮが最大値になっているかどうかを判断する。最大値になっていない場合には、プロセスは、ステップ３４２０に戻り、他のランダム移動を選択する。最大値になっている場合には、プロセスは、焼きなまし温度を低減し、ステップ３４７５において反復カウンタを再設定し、次に、ステップ３４２０に戻り、他のランダム移動を選択する。
通常の当業者であれば、いくつかの実施形態の場合には、プロセス３４００は、ステップ３３４５において計算したデルタ・コストの値だけに基づいて移動を保持するために、その決定に準拠しないことを理解することができるだろう。例えば、プロセス３４００が、分割プロセス２３００を使用する場合には、プロセス３４００は、いくつかの実施形態の場合には、また、プロセス２３００の分割グリッドにより形成された各サブ領域の集中を定量化する、バランス・コストも計算する。これらの実施形態の場合には、プロセス３４００は、このような移動がバランス・コストを増大する場合には、ステップ３３４５において計算したデルタ・コストを低減する移動を保持することはできない。
プロセスが、（ステップ３４５０において）デルタ・コストがゼロ以上であると判断した場合には、プロセスは、（ステップ３４８０において）確率を０と１の間と計算する。いくつかの実施形態の場合には、確率を計算する式は、ｅ−（Ｄｅｌｔａ）／Ｔに等しい。この場合、デルタは、ステップ３４４５において計算した値であり、Ｔは焼きなまし温度である。
【００３８】
次に、プロセスは、（ステップ３４８２において）０と１の間の乱数を取り上げる。その後で、ステップ３４８４において、プロセスは、乱数が計算した確率よりも小さいかどうかを判断する。小さい場合には、プロセスは、移動することに決定し、すでに説明したように、移動に関連する他の動作を行うためにステップ３４６０に進む。
選択した乱数が計算した確率より小さくない場合には、プロセスは、（ステップ３４８６において）移動の前のその元の座標（すなわち、ステップ３４３５より前のその座標）に戻すために、影響を受けた１つまたは複数の回路モジュールおよび／またはその対応するピンの座標を変更する。ステップに３４８６おいて、プロセスは、また、必要な場合には、その元の値に戻すために（すなわち、ステップ３４４０の前のネットに対して記憶したコストに戻すために）、識別した各ネットのコストを変更する。
プロセス３４００が、分割長さまたは予め表の形にした長さまたは遅延コストを使用する遅延コスト計算プロセス２３００または３２００を使用する場合には、プロセスは、元の値に戻すために、識別した各ネットのコストを変更する必要はない。何故なら、これらの実施形態の場合には、まず第一に、プロセス２３００または３２００は、これらのコストを修正しなかったからである。
次に、プロセスは、（ステップ３４８８において）無駄反復カウンタを１だけ増大する。その後で、プロセスは、（ステップ３４９０において）無駄反復カウンタが予め定めた最大値に等しいかどうかを判断する。等しくない場合には、プロセスはすでに説明したステップ３４７０に戻る。等しい場合には、プロセスは、（ステップ３４９０において）予め指定された回数反復を行ったが配置スコアは改善されなかったことを知る。それ故、プロセスは、（ステップ３４９２において）現在の配置構成を指定するネット・リストを返送し、終了する。
【００３９】
Ｃ．ＫＬＦＭ
ＫＬＦＭは、コスト計算機能により生成した配置スコアを改善するために、配置構成を反復して修正する最適化技術である。反復の度ごとに、この技術は、ある回路モジュールを移動し、２つのモジュールを交換し、または多数の関連するモジュールを移動するなどする。また、ローカル最適化およびシミュレートした焼きなましはとは異なり、ＫＬＦＭは、移動をランダムに選択しない。代わりに、反復の度に、ＫＬＦＭは、行うことができるすべての可能な移動より優れた最善の移動を選択する。ＫＬＦＭは、配置コストをもっと悪くする移動を行う。次に、全スイープにおいて、ＫＬＦＭは、遭遇する最善の配置構成を識別し、その最善の配置構成が、元の配置構成より優れたコストを持っている場合には、ＫＬＦＭは、改善した解によりスタートする。
図３５は、ＫＬＦＭプロセス３５００の一例である。このプロセスは、最初に、（ステップ３５０５において）最初の配置構成を受信する。いくつかの実施形態の場合には、プロセスは、回路モジュールのリスト、これらのモジュールに対する最初の配置構成、およびこれらのモジュール間の相互接続を指定するネット・リストを受信することにより、最初の構成を受信する。
最初の配置構成を受信した後で、プロセス３５００は、（ステップ３５１０において）第ＩＩ節〜第ＶＩ節のところで説明した、上記コスト計算方法の中の１つのようなコスト計算方法を呼び出す。これに応じて、このコスト計算方法は、最初の配置構成のコスト（Ｃ）を計算し、それを返送する。
プロセス３５００がコスト計算方法を呼び出すと、このプロセスは、この方法、に対して、最初の配置構成を指定するネット・リスト（すなわち、レイアウト内のモジュールの位置を修正する前の、ＩＣレイアウト内のすべてのネットを識別するネット・リスト）を供給する。
また、コスト計算方法が、上記二分割プロセス１９００である場合には、プロセス３５００は、プロセス１９００を呼び出す前にプロセス１８００を呼び出す。すでに説明したように、プロセス１８００は、最適化プロセス３５００により最適化中の現在のＩＣ領域に対する分割ラインを定義する。プロセス３５００は、プロセス１９００から、最初の配置構成のネット・カット集中コスト（Ｃ）を受信するために、集中計算プロセス１９００に、最初の構成のネット・リストと一緒にこの分割ラインを供給する。プロセス１９００から、プロセス３５００は、また、現在の分割ラインにより形成された２つの領域内のネットおよびピンを指定する２つのネット・リストを受信する。
ステップ３５１０において、最初の配置構成のコストを入手した後で、プロセスは、（ステップ３５１５において）フラグ（Ｆ）を偽に設定する。以下にさらに詳細に説明するように、プロセスは、移動の中のどれかが配置構成スコアを改善したかどうかを判断するために、多数の移動を行った後でこのフラグを使用する。ステップ３５１５において、プロセスは、また、（１）最初の配置構成を、現在および最善の配置構成として識別し、（２）現在および最善の配置構成のコストを、最初の構成のコストに初期化する。
【００４０】
次に、プロセスは、（ステップ３５２０において）現在の配置構成（ＰＣｕｒｒｅｎｔ）内のすべての移動の中の組Ｍを定義する。プロセス３５００が、分割プロセス１９００または２３００を使用する場合には、各移動は、分割ラインに対して１つまたはそれ以上の回路モジュールを再配置する。例えば、プロセス２３００の場合には、移動は、回路モジュールに対して、あるスロットから別のスロットへの位置の変更を指定することができる。
Ｍ内の各移動の場合には、プロセスは、（ステップ３５２５において）移動後の配置構成のコスト（Ｃ）を計算する。各移動のコストを計算するために、プロセスは、下記の六つの動作を行う。第１の動作として、プロセスは、（１）移動により影響を受けたすべてのネットを識別し、（２）これらのネットに対して記憶した値を合計することにより、識別したネットに対する現在のコストを計算する。第２の動作として、プロセスは、移動により影響を受けた各回路素子の座標を移動に従って修正する。
第３の動作として、プロセスは、コスト計算プロセスに、選択した移動により影響を受ける識別したネットを指定するネット・リストを供給する。コスト計算プロセスが二分割プロセス１９００である場合には、プロセス３５００は、コスト計算プロセスに、現在のＩＣ領域に対する分割ラインを供給する。コスト計算プロセスから、プロセス３５００は、潜在的移動後に識別したネットのコストを受信する。コスト計算方法が二分割プロセス１９００である場合には、プロセス３５００は、また、プロセス１９００により、識別したネット・リストの分割を表す２つのネット・リストを受信する。
第４の動作として、潜在的修正の後で識別したネットに対するコストを受信した後で、プロセスは、潜在的修正を行う前に識別したネットに対するコストから、潜在的修正を行った後の識別したネットに対するコストを差し引くことにより、デルタ・コストを生成する。
第５の動作として、プロセスは、計算したデルタ・コストを、現在の配置構成のコストに加算することにより、移動のコストを生成する。第６の動作として、プロセスは、（１）移動前のその元の座標に戻すために、影響を受けた回路素子（モジュールおよび／またはピン）の座標を変更し、（２）必要な場合には、移動前のその元の値に戻すために、識別した各ネットのコストを変更する。すでに説明したように、プロセス３５００が、分割長さ、または予め表の形にした長さ、または遅延コストを使用する遅延コスト計算プロセス２３００または３２００を使用する場合には、プロセスは、元の値に戻すために、識別した各ネットのコストを変更する必要はない。さらに、プロセス３５００が、分割プロセス２３００を使用する場合には、プロセス３５００は、また、プロセス２３００の分割グリッドにより形成された各サブ領域の集中を定量化する、バランス・コストも計算するために他のプロセスを使用することができる。これらの実施形態の場合には、プロセス３５００は、全コストを入手するために、計算した長さおよびバランス・コストを結合する。
【００４１】
ステップ３５３０において、プロセスは、新しい現在の配置構成ＰＣｕｒｒｅｎｔを入手するために、最も安い配置構成コストで移動を行う。この段階で、プロセスは、また、可能な移動の組Ｍから選択した移動を除去する。プロセスは、また、現在の配置構成のコストを移動後の構成のコストに等しくなるように設定する。また、コスト計算方法が二分割方法１９００である場合には、プロセスは、（ステップ３５３０において）移動のためにステップ３５２５において、この方法により返送された２つのネット・リストを使用して、現在の分割ラインにより形成された２つのサブ領域に対する２つのネット・リストを修正する。
その後で、プロセスは、（ステップ３５３５において）現在の配置構成（すなわち、ステップ３５３０において入手した構成）が、遭遇した最も安い配置構成コストより安いかどうかを判断する。安くない場合には、プロセスは、ステップ３５４５に進むが、このステップについては以下に説明する。安い場合には、プロセスは、（ステップ３５４０において）（１）最善の配置構成は、現在の配置構成であると定義し、（２）最善の配置構成のコストを、現在の配置構成のコストに設定し、（３）行った移動の中の少なくとも１つが、配置コストを改善したことを示すために、フラグ（Ｆ）を真に設定する。次に、プロセスはステップ３５４５に進む。
ステップ３５４５において、可能な移動の組Ｍが空であるかどうかを判断する。
空でない場合には、プロセスは、ステップ３５２５に戻り、この組内の残りの移動に対する移動後の配置構成のコスト（Ｃ）を計算する。プロセスは、移動に関連するコストを再計算する。何故なら、前の移動が、残りの移動に対する配置構成コストに影響を与えたかも知れないからである。
プロセスが、（ステップ３５４５において）組Ｍが空であると判断した場合には、プロセスは、ステップ３５２０において定義した組内のすべての移動を行ったと判断する。それ故、プロセスは、（ステップ３５５０において）フラグ（Ｆ）が真に設定されているかを判断することにより、行った移動の中の１つが配置コストを改善したと判断する。
フラグが真である場合には、プロセスは、（ステップ３５５５において）（１）現在の配置構成を、移動を通しての最後のスイープ中に識別した最善の配置構成に等しく設定し、（２）現在の配置構成のコストが最善の配置構成のコストに等しいと定義し、（３）フラグ（Ｆ）を真に設定する。その後で、プロセスは、ステップ３５２０に戻り、この構成を改善することができるかどうかを判断するために、現在の配置構成を反復して実行する。
プロセスは、（ステップ３５５０において）フラグが偽であると判断した場合には、プロセスは、（ステップ３５６０において）最後の配置構成として識別した最善の配置構成に戻る。
【００４２】
ＶＩＩＩ．コンピュータ・システム
図３６は、本発明のある実施形態を実行するコンピュータ・システムである。コンピュータ・システム３６００は、バス３６０５、プロセッサ３６１０、システム・メモリ３６１５、読出し専用メモリ３６２０、永久記憶デバイス３６２５、入力装置３６３０、および出力装置３６３５を含む。
バス３６０５は、集合的にすべてのシステム、周辺機器、およびコンピュータ・システム３６００の多数の内部デバイスを、通信できるように接続しているチップセット・バスを表す。例えば、バス３６０５は、プロセッサ３６１０を、読出し専用メモリ３６２０、システム・メモリ３６１５、および永久記憶デバイス３６２５に通信できるように接続している。
これらの種々のメモリ・ユニットから、プロセッサ３６１０は、本発明のプロセスを実行するために、実行するための命令、処理するためのデータを検索する。読出し専用メモリ（ＲＯＭ）３６２０は、コンピュータ・システムのプロセッサ３６１０および他のモジュールが必要とする静的データおよび命令を記憶する。一方、永久記憶デバイス３６２５は、読出し／書込みメモリ・デバイスである。このデバイスは、コンピュータ・システム３６００の電源がオフになった場合でも、命令およびデータを記憶している不揮発性メモリ・ユニットである。本発明のいくつかの実施形態は、永久記憶デバイス３６２５として、（磁気または光学的ディスクおよびその対応するディスク・ドライブのような）大量記憶デバイスを使用する。他の実施形態は、永久記憶デバイスとして、（フロッピー（登録商標）・ディスクまたは、ｚｉｐ（登録商標）ディスク、およびその対応するディスク・ドライブのような）取外し可能な記憶デバイスを使用する。
永久記憶デバイス３６２５のように、システム・メモリ３６１５は、読出し／書込みメモリ・デバイスである。しかし、記憶デバイス３６２５とは異なり、システム・メモリは、ランダム・アクセス・メモリのような、揮発性の読出し／書込みメモリである。システム・メモリは、実行時にプロセッサが必要とする命令およびデータの中のいくつかを記憶する。いくつかの実施形態の場合には、本発明のプロセスは、システム・メモリ３６１５、永久記憶デバイス３６２５および／または読出し専用メモリ・３６２０に記憶されている。
バス１０５は、また、入力装置３６３０および出力装置３６３５に接続している。入力装置により、ユーザは、コンピュータ・システムに対して情報を送受信し、コンピュータ・システムへのコマンドを選択することができる。入力装置３６３０は、英数字キーボードおよびカーソル・コントローラを含む。
出力装置３６３５は、コンピュータ・システムが生成した映像を表示する。例えば、これらのデバイスは、ＩＣ設計レイアウトを表示する。出力装置は、プリンタおよび陰極線管（ＣＲＴ）または、液晶ディスプレイ（ＬＣＤ）のような表示デバイスを含む。
最後に、図３６に示すように、バス３６０５は、また、ネットワーク・アダプタ（図示せず）を通して、コンピュータ３６００をネットワーク３６６５に接続する。このようにして、コンピュータは、ローカル・エリア・ネットワーク（「ＬＡＮ」）、ワイド・エリア・ネットワーク（「ＷＡＮ」）またはイントラネットのような）コンピュータ・ネットワーク、または（インターネットのような）ネットワークの一部となることもできる。
コンピュータ・システム３６００のいくつかまたはすべての構成部材は、本発明と一緒に使用することができる。しかし、通常の当業者であれば、任意の他のシステム構成も、本発明と一緒に使用することができることを理解することができるだろう。
【００４３】
ＩＸ．利点
配置中、対角線配線、水平配線、および垂直配線を要因として考慮に入れる本発明の実施形態は、このような配線をネットをルーティングするために使用した場合、ネットをよりよく配置することができる。ルータが、対角線配線、水平配線、および垂直配線を使用するが、配置装置が、マンハッタン配線に対してだけ最適化されている場合には、配置装置は、ＩＣレイアウト内にネットをうまく配置できない。より詳細に説明すると、これらのような状況においては、配置装置は、対角線の位置を無視する傾向がある。何故なら、配置装置が、特定の回路素子に関連するすべての回路素子を、特定の回路素子の直接上下に、または左右に設置する傾向があるからである。
一方、配置装置が、対角線配線、水平配線、および垂直配線に対して最適化されている場合には、このような配置装置は、傾斜角度が少ないので対角線位置を無視することはない。それ故、このような配置装置は、関連する回路素子を相互に、水平位置、垂直位置および対角線位置内に配置する。それにより、関連する回路素子をもっと均等に配布することができる。
すなわち、水平配線、垂直配線および対角線配線に最適化されている配置装置は、同じコストで、もっと多くの場所に回路モジュールを配置することができる。この機能により、回路モジュールを設置するために、もっと多くの場所が使用できるようになり、それによりワイヤの長さが短くなる。
多数の詳細な点を参照しながら本発明を説明してきたが、通常の当業者であれば、本発明を、本発明の精神から逸脱することなしに他の特定の形で実行することができることを理解することができるだろう。例えば、上記のワイヤ長さ計算プロセスは、各ネットのワイヤ長さコストを合計することにより、その全コストを計算するが、他の実施形態は、異なる方法でネットのワイヤ長さコストを結合することにより、全ワイヤ長さコストを計算することができる（例えば、他の実施形態は、その計算したネットのワイヤ長さコストを掛け合わせることができる）。
また、潜在的対角線縁部を含む種々の接続グラフのワイヤ長さの識別を説明するためだけに、いくつかの実施形態について説明した。通常の当業者であれば、他の実施形態もこのような接続グラフの他の属性を識別することができることを理解することができるだろう。例えば、いくつかの実施形態は、各グラフの曲がりの数（すなわち、配線方向の変化の数）を識別することができる。それ故、通常の当業者であれば、本発明が、上記の例示としての詳細な説明に制限されるのではなく、添付の特許請求の範囲により定義されることを理解することができるだろう。
【図面の簡単な説明】
【００４４】
【図１】ＩＣレイアウトの一例である。
【図２】垂直分割ラインにより、最初に２つの領域に分割されるＩＣレイアウトである。
【図３】７本の分割ラインにより、反復して分割された後の図２のＩＣレイアウトである。
【図４】図１のピン１３５、１４５および１６０を含むネットに対する囲みボックスである。
【図５】図１のピン１３５、１４５および１６０を含むネットに対するＲＭＳＴである。
【図６】図１のピン１３５、１４５および１６０を含むネットに対するシュタイナー・ツリーである。
【図７】対角線ばかりでなく、水平ラインおよび垂直ラインも使用するＩＣレイアウトの配線アーキテクチャである。
【図８】図７の配線アーキテクチャを実行する１つの方法である。
【図９】図１のピン１３５、１４５および１６０が示すネットに対する囲みボックスの一例である。
【図１０】本発明の囲みボックス法によりワイヤ長さ推定値を生成するためのプロセスである。
【図１１】対角線縁部を含む最小スパニング・ツリーである。
【図１２】水平縁部、垂直縁部、および４５度縁部を含むＭＳＴを形成することにより、ワイヤ長さ推定値を生成するプロセスである。
【図１３】図１のピン１３５、１４５および１６０が示すネットに対する、４５度縁部を含む発見的に形成したシュタイナー・ツリーである。
【図１４】４５度対角線縁部を含むシュタイナー・ツリーを形成することによりワイヤ長さ推定値を生成するためのプロセスである。
【図１５】対角線分割ラインだけにより多数の領域に反復して分割したＩＣレイアウトである。
【図１６】対角線分割ライン、水平分割ライン、および垂直分割ラインの組合わせにより反復して分割される２つのＩＣレイアウトである。
【図１７】対角線分割ライン、水平分割ライン、および垂直分割ラインの組合わせにより反復して分割される２つのＩＣレイアウトである。
【図１８】レイアウト領域を２つのもっと小さい領域に分割する分割ラインを形成するプロセスである。
【図１９】集中コスト推定値を生成し、分割ラインのところで一組のネットを分割するプロセスである。
【図２０】１本のピンに対する１つの領域を識別するための３つのプロセスである。
【図２１】１本のピンに対する１つの領域を識別するための３つのプロセスである。
【図２２】１本のピンに対する１つの領域を識別するための３つのプロセスである。
【図２３】分割配置アプローチに対して長さの推定値を生成するプロセスである。
【図２４】複数の組の３本の水平分割ラインおよび垂直分割ラインにより、１６のサブ領域に分割されたＩＣレイアウトである。
【図２５】図２４の１つのネットに対する３つのシュタイナー・ツリーである。
【図２６】図２４の１つのネットに対する３つのシュタイナー・ツリーである。
【図２７】図２４の１つのネットに対する３つのシュタイナー・ツリーである。
【図２８】分割グリッドに関する可能な各ネット構成に対するシュタイナー・ツリーを形成し、参照テーブル（「ＬＵＴ」）内に形成した各シュタイナー・ツリーの長さを記憶するプロセスである。
【図２９】４×４分割グリッドにより生成した１６のスロットに対する１６のシュタイナー・ツリー・ノードである。
【図３０】潜在的シュタイナー・ノードを識別するためのプロセスである。
【図３１】図２８のプロセスが、最小スパニング・ツリーを形成するために使用するプロセスである。
【図３２】遅延コストを計算するプロセスである。
【図３３】ローカル最適化プロセスの一例である。
【図３４】シミュレートした焼きなましプロセスの一例である。
【図３５】ＫＬＦＭプロセスの一例である。
【図３６】本発明のいくつかの実施形態が使用するコンピュータ・システムである。
【符号の説明】
【００４５】
１０５，１１０，１１５，１２０，１２５  回路モジュール
１３０，１３５，１４０，１４５，１５０，１５５，１６０  ピン
１６５，１７０，１７５，１８０  相互接続ライン
２０５,２２０,２２５,２３０,２３５，２４０，２４５  垂直分割ライン
６０５  シュタイナーツリー        ６１０  シュタイナー点
８０５，８１０，８１５  マンハッタン層    ８２０，８２５  八角対角線層
９０５，９１０  セグメント                ９２０  対角線カット
１３０５  シュタイナーツリー  １３３５，１３４５，１３６０  ノード
２４１０，２４１５，２４２０，２４２５，２４３０  回路モジュール
３６０５  バス      ３６１０  プロセッサー    ３６２５  永久記憶デバイス
３６３０  入力装置  ３６３５  出力装置