(57)【要約】【課題】集積回路設計レイアウト用のルーティング方法。【解決手段】レイアウトは、設計ネットリストとライブラリセルを備えることが出来る。マルチレベルグローバルルーティングは、各ネットにトポロジカルワイヤを生成することが出来る。設計には、領域志向グラフベースのディテールルーティングを実行することが出来る。ディテールルーティング後のルーティング最適化を実施し、更にルーティング品質を改善することが出来る。幾つかの方法は、いつも又はある時シングルスレッドでも良く、及び／又はある時又はいつもマルチスレッドでも良い。【選択図】図１
2009087376.tif 000002
【特許請求の範囲】
【請求項１】
集積回路（ＩＣ）設計をルーティングする方法において、
１つ又はそれ以上の層上に複数のオブジェクトを含むＩＣ設計にアクセスし、  複数のレベルを形成し、該複数のレベルは、第１グリッド密度におけるＩＣ設計を表す第１レベルと、少なくとも前記第１グリッド密度より細かい第２グリッド密度におけるＩＣ設計を表す第２レベルと、少なくとも前記第１グリッド密度と前記第２グリッド密度より細かい第３グリッド密度におけるＩＣ設計を表す第３レベルとを含み、
前記ＩＣ設計に少なくとも部分的に基づいて、前記複数のレベルの各レベルに複数のオブジェクトを配置し、
前記第１レベルと前記第２レベルと前記第３レベルのうち１つ又はそれ以上において、前記オブジェクトを相互接続する
ステップを備えることを特徴とする方法。
【請求項２】
前記ルーティングは、少なくとも第１回はマルチスレッドである請求項１に記載の方法。
【請求項３】
前記ルーティングは、少なくとも第１回はシングルスレッドである請求項１に記載の方法。
【請求項４】
各ＩＣ設計で、前記第１レベルと前記第２レベルと前記第３レベルは、少なくとも２つの層を備える請求項１に記載の方法。
【請求項５】
各ＩＣ設計で、前記第１レベルと前記第２レベルと前記第３レベルは、１つの層を備える請求項１に記載の方法。
【請求項６】
集積回路（ＩＣ）設計をルーティングする方法において、
１つ又はそれ以上の層上に複数のオブジェクトを含むＩＣ設計にアクセスし、  前記ＩＣ設計の第１レベルにアクセスし、前記ＩＣ設計の前記第１レベルは、１つ又はそれ以上の区分の第１の複数の区分に区分され、前記ＩＣ設計の前記複数のオブジェクトは、１つ又はそれ以上の区分の前記第１の複数の区分にあり、  前記ＩＣ設計の第２レベルを形成し、該第２レベルの形成は、
前記第２レベルを第２の複数の区分に区分し、前記第１の複数の区分の１つ又はそれ以上の区分は、前記第２の複数の区分の少なくとも２つの区分により表現され、
前記第２の複数の区分の各区分内で、前記第２の複数の区分の他の区分と実質的に独立に、前記オブジェクトを相互接続することを含む、
ステップを備えることを特徴とする方法。
【請求項７】
前記ルーティングは、少なくとも第１回はマルチスレッドである請求項６に記載の方法。
【請求項８】
前記ルーティングは、少なくとも第１回はシングルスレッドである請求項６に記載の方法。
【請求項９】
１つ又はそれ以上の区分の前記第１の複数の区分の１つ又はそれ以上の区分は、前記複数のオブジェクトのオブジェクトを有さない請求項６に記載の方法。
【請求項１０】
１つ又はそれ以上の区分の前記第１の複数の区分の各区分は、前記複数のオブジェクトの１つ又はそれ以上のオブジェクトを有する請求項６に記載の方法。
【請求項１１】
オブジェクトを実質的に独立に相互接続することは、前記第２の複数の区分の境界条件に従属(subject)する請求項６に記載の方法。
【請求項１２】
オブジェクトを実質的に独立に相互接続することは、少なくとも前記第１区分と前記第２の複数の区分の第２区分とにより共有されるネットにおいてロッキングしている前記第２の複数の区分の第１区分に従属し、前記第２の複数の区分の前記第２区分によりネットの変化を防ぐ請求項６に記載の方法。
【請求項１３】
前記第１の複数の区分の各区分は、前記第２の複数の区分の少なくとも２つの区分により表される請求項６に記載の方法。
【請求項１４】
各ＩＣ設計で、前記第１レベルと前記第２レベルと前記第３レベルは、少なくとも２つの層を備える請求項６に記載の方法。
【請求項１５】
各ＩＣ設計で、前記第１レベルと前記第２レベルと前記第３レベルは、１つの層を備える請求項６に記載の方法。
【請求項１６】
集積回路（ＩＣ）設計をルーティングする方法において、  １つ又はそれ以上の層上に複数のオブジェクトを含むＩＣ設計にアクセスし、  前記ＩＣ設計の第１レベルにアクセスし、前記ＩＣ設計の前記第１レベルは、１つ又はそれ以上の区分の第１の複数の区分に区分され、前記ＩＣ設計の複数のオブジェクトは、１つ又はそれ以上の区分の前記第１の複数の区分内にあり、
前記ＩＣ設計の第２レベルを形成し、該第２レベルの形成は、
前記第２レベルを第２の複数の区分に区分し、前記第１の複数の区分の１つ又はそれ以上の区分は、前記第２の複数の区分の少なくとも２つの区分により表現され、
複数の領域に前記第２の複数の区分を割り当て、前記複数の領域の各領域は、前記第２の複数の区分の１つ又はそれ以上の区分を含み、
前記第２の複数の区分の各区分内で、前記複数の領域の他の領域と実質的に独立に、前記オブジェクトを相互接続することを含む、
ステップを備えることを特徴とする方法。
【請求項１７】
前記ルーティングは、少なくとも第１回はマルチスレッドである請求項１６に記載の方法。
【請求項１８】
前記ルーティングは、少なくとも第１回はシングルスレッドである請求項１６に記載の方法。
【請求項１９】
１つ又はそれ以上の区分の前記第１の複数の区分の１つ又はそれ以上の区分は、前記複数のオブジェクトのオブジェクトを有さない請求項１６に記載の方法。
【請求項２０】
１つ又はそれ以上の区分の前記第１の複数の区分の各区分は、前記複数のオブジェクトの１つ又はそれ以上のオブジェクトを有する請求項１６に記載の方法。
【請求項２１】
オブジェクトを実質的に独立に相互接続することは、前記第２の複数の区分の境界条件に従属する請求項１６に記載の方法。
【請求項２２】
オブジェクトを実質的に独立に相互接続することは、前記複数の領域の境界条件に従属する請求項１６に記載の方法。
【請求項２３】
オブジェクトを実質的に独立に相互接続することは、少なくとも前記第１区分と前記第２の複数の区分の第２区分により共有されるネットにおいてロックしている前記第２の複数の区分の第１の区分に従属し、前記第２の複数の区分の前記第２区分によりネットの変化を防ぐ請求項１６に記載の方法。
【請求項２４】
オブジェクトを実質的に独立に相互接続することは、少なくとも前記第１領域により共有されるネットにおいてロックしている前記第２の複数の領域の第１の領域に従属し、前記第２の複数の領域の第２の領域に従属し、前記複数の領域の前記第２の領域によりネットの変化を防ぐ請求項１６に記載の方法。
【請求項２５】
各ＩＣ設計で、前記第１レベルと前記第２レベルと前記第３レベルは、少なくとも２つの層を備える請求項１６に記載の方法。
【請求項２６】
各ＩＣ設計で、前記第１レベルと前記第２レベルと前記第３レベルは、１つの層を備える請求項１６に記載の方法。
【請求項２７】
集積回路（ＩＣ）設計をルーティングする方法において、  複数のブロッケージと複数のピンを含むＩＣ設計にアクセスし、
第１の複数のノードを含むグラフを形成し、前記第１の複数のノードの各ノードは、前記複数のブロッケージの各ブロッケージの外側に形成され、
前記複数のピンを前記グラフのノードを通って相互接続する
ステップを備えることを特徴とする方法。
【請求項２８】
前記ルーティングは、少なくとも第１回はマルチスレッドである請求項２７に記載の方法。
【請求項２９】
前記ルーティングは、少なくとも第１回はシングルスレッドである請求項２７に記載の方法。
【請求項３０】
集積回路（ＩＣ）設計をルーティングする方法において、  前記ＩＣ設計のオブジェクトを第１層に位置決めするため第１の複数のノードを形成し、前記第１の複数のノードの少なくとも２つのノードは、第１間隔だけ離れていて、
前記ＩＣ設計のオブジェクトを第２層に位置決めするため第２の複数のノードを形成し、前記第２の複数のノードの少なくとも２つのノードは、第１間隔だけ離れていて、前記第２の複数のノードの少なくとも２つのノードは、前記第１間隔より大きい１つ又はそれ以上の間隔だけ離れていることを特徴とする方法。
【請求項３１】
前記ルーティングは、少なくとも第１回はマルチスレッドである請求項３０に記載の方法。
【請求項３２】
前記ルーティングは、少なくとも第１回はシングルスレッドである請求項３０に記載の方法。
【請求項３３】
集積回路（ＩＣ）設計をルーティングする方法において、
前記ＩＣ設計のオブジェクトを第１層に位置決めするため第１の複数のノードを形成し、前記第１の複数のノードの少なくとも２つのノードは、第１間隔だけ離れていて、
前記ＩＣ設計のオブジェクトを第２層に位置決めするため第２の複数のノードを形成し、前記第２の複数のノードの少なくとも２つのノードは、第１間隔だけ離れていて、前記第２の複数のノードの少なくとも２つのノードは、前記第１間隔より小さい１つ又はそれ以上の間隔だけ離れていることを特徴とする方法。
【請求項３４】
前記ルーティングは、少なくとも第１回はマルチスレッドである請求項３３に記載の方法。
【請求項３５】
前記ルーティングは、少なくとも第１回はシングルスレッドである請求項３３に記載の方法。
【請求項３６】
集積回路（ＩＣ）設計をルーティングする方法において、
前記ＩＣ設計のオブジェクトを第１層に位置決めするため第１の複数のノードを形成し、前記第１の複数のノードは、第１の複数の共通ノードと、第１の複数の非共通ノードとを含み、
前記ＩＣ設計のオブジェクトを第２層に位置決めするため第２の複数のノードを形成し、
前記第２層の少なくとも一部は前記第１の層に平行であり、前記第２の層は前記第１層から、層の軸に沿ってほぼ１層の距離だけ間隔をおいていて、
前記第２の複数のノードは第２の複数の共通ノードを含み、前記第１の複数の共通ノードと前記第２の複数の共通ノードとは位置を共有し、前記第２の複数の共通ノードが前記第１の複数の共通ノードに向かって、前記層の軸に沿ってほぼ１層の距離だけシフトすると、前記第１の複数の共通ノードと前記第２の複数の共通ノードとはほぼ同一になり、
前記第２の複数の共通ノードが前記第１の複数の非共通ノードに向かって、前記層の軸に沿ってほぼ１層の距離だけシフトすると、前記第１の複数の非共通ノードと前記第２の複数の共通ノードとはほぼ同一のノードがなくなることを特徴とする方法。
【請求項３７】
前記ルーティングは、少なくとも第１回はマルチスレッドである請求項３６に記載の方法。
【請求項３８】
前記ルーティングは、少なくとも第１回はシングルスレッドである請求項３６に記載の方法。
【請求項３９】
各ＩＣ設計で、前記第１レベルと前記第２レベルと前記第３レベルは、少なくとも２つの層を備える請求項３６に記載の方法。
【請求項４０】
各ＩＣ設計で、前記第１レベルと前記第２レベルと前記第３レベルは、１つの層を備える請求項３６に記載の方法。
【請求項４１】
集積回路（ＩＣ）設計をルーティングする方法において、
前記ＩＣ設計のボリュームを定義し、前記ボリュームのサブセットは、ワイヤリングを行い、
前記ボリューム内に複数のノードを形成し、前記複数のノードのノードは、前記ボリュームの前記サブセット内に形成されるように制限されることを特徴とする方法。
【請求項４２】
前記ルーティングは、少なくとも第１回はマルチスレッドである請求項４１に記載の方法。
【請求項４３】
前記ルーティングは、少なくとも第１回はシングルスレッドである請求項４１に記載の方法。
【請求項４４】
前記ボリュームは１つの層を含む請求項４１に記載の方法。
【請求項４５】
前記ボリュームは少なくとも２つの層を含む請求項４１に記載の方法。
【請求項４６】
集積回路（ＩＣ）設計をルーティングする方法において、
前記ＩＣ設計の１つ又はそれ以上の層の１つ又はそれ以上のルーティングピッチにアクセスし、
前記ＩＣ設計のボリュームを定義し、前記ボリュームのサブセットは、ワイヤリングを行い、
前記ボリューム内に第１の複数のノードを形成し、
前記ボリューム外に第２の複数のノードを形成し、前記第２の複数のノードの少なくとも１つのノードは、前記１つ又はそれ以上のルーティングピッチより大きいピッチで形成されることを特徴とする方法。
【請求項４７】
前記ルーティングは、少なくとも第１回はマルチスレッドである請求項４６に記載の方法。
【請求項４８】
前記ルーティングは、少なくとも第１回はシングルスレッドである請求項４６に記載の方法。
【請求項４９】
前記ボリュームは１つの層を含む請求項４６に記載の方法。
【請求項５０】
前記ボリュームは少なくとも２つの層を含む請求項４６に記載の方法。
【請求項５１】
集積回路（ＩＣ）設計をルーティングする方法において、
前記ＩＣ設計の第１セルインスタンスにアクセスし、
前記第１セルインスタンスに隣接する前記ＩＣ設計の第２セルインスタンスにアクセスし、前記第１セルインスタンスと前記第２セルインスタンスとは、チャンネルにより間隔をおいていて、
前記チャンネルの第１端部の近くに第１ノードを形成し、
前記チャンネルの第２端部の近くに第２ノードを形成し、
前記第１ノードと前記第２ノードの間に直接ワイヤを接続する
ステップを備えることを特徴とする方法。
【請求項５２】
前記ルーティングは、少なくとも第１回はマルチスレッドである請求項５１に記載の方法。
【請求項５３】
前記ルーティングは、少なくとも第１回はシングルスレッドである請求項５１に記載の方法。
【請求項５４】
集積回路（ＩＣ）設計をルーティングする方法において、
前記ＩＣ設計の１つ又はそれ以上の層の１つ又はそれ以上のルーティングピッチにアクセスし、
前記ＩＣ設計の第１セルインスタンスにアクセスし、
前記第１セルインスタンスに隣接する前記ＩＣ設計の第２セルインスタンスにアクセスし、前記第１セルインスタンスと前記第２セルインスタンスとは、チャンネルにより間隔をおいていて、
前記チャンネル内に複数の１つ又はそれ以上のノードを形成し、前記チャンネル内の前記複数の１つ又はそれ以上のノードは、前記１つ又はそれ以上のルーティングピッチの少なくとも１つより大きいピッチを有することを特徴とする方法。
【請求項５５】
前記ルーティングは、少なくとも第１回はマルチスレッドである請求項５４に記載の方法。
【請求項５６】
前記ルーティングは、少なくとも第１回はシングルスレッドである請求項５４に記載の方法。
【請求項５７】
集積回路（ＩＣ）設計をルーティングする方法において、
複数のオブジェクトを有するＩＣ設計にアクセスし、
複数のルーティングアルゴリズムにアクセスし、
前記複数のルーティングアルゴリズムの１つ又はそれ以上のルーティングアルゴリズムの第１組合わせに少なくとも部分的に応じて、第１の複数の相互接続により、前記複数のオブジェクトの１つ又はそれ以上を相互接続し、
前記第１の複数の相互接続を記憶し、
１つ又はそれ以上のルーティングアルゴリズムの第２組合わせを自動的に求め、
前記複数のルーティングアルゴリズムの前記１つ又はそれ以上のルーティングアルゴリズムの第２組合わせに少なくとも部分的に応じて、第２の複数の相互接続により、複数のオブジェクトの１つ又はそれ以上を相互接続し、
前記第１の複数の相互接続と前記第２の複数の相互接続の結果を比較し、
前記第２の複数の相互接続の結果が前記第１の複数の相互接続の結果より悪ければ、前記第１の複数の相互接続の結果をリストアする
ステップを備えることを特徴とする方法。
【請求項５８】
前記ルーティングは、少なくとも第１回はマルチスレッドである請求項５７に記載の方法。
【請求項５９】
前記ルーティングは、少なくとも第１回はシングルスレッドである請求項５７に記載の方法。
【請求項６０】
集積回路（ＩＣ）設計をルーティングする方法において、  前記ＩＣ設計の少なくとも第１部分を第１ルーティングピッチで相互接続し、  相互接続の結果１つ又はそれ以上の設計規則違反になれば、前記ＩＣ設計の少なくとも第１部分の一部を前記第１ルーティングピッチより小さい第２ルーティングピッチでルーティングすることを特徴とする方法。
【請求項６１】
前記ルーティングは、少なくとも第１回はマルチスレッドである請求項６０に記載の方法。
【請求項６２】
前記ルーティングは、少なくとも第１回はシングルスレッドである請求項６０に記載の方法。
【請求項６３】
前記第１ルーティングピッチより小さい第２ルーティングピッチでルーティングした前記ＩＣ設計の前記第１部分の一部は、少なくとも１つの設計規則違反を起こすＩＣ設計の部分を含む請求項６０に記載の方法。
【請求項６４】
集積回路（ＩＣ）設計をルーティングする方法において、  前記ＩＣ設計の少なくとも第１部分を少なくとも第１スレッド上で相互接続し、
前記ＩＣ設計の少なくとも第２部分を少なくとも第２スレッド上で相互接続することを特徴とする方法。
【請求項６５】
前記第１スレッドは少なくとも第１プロセッサー上を走り、前記第２スレッドは少なくとも前記第１プロセッサー上を走る請求項６４に記載の方法。
【請求項６６】
前記第１スレッドは少なくとも第１プロセッサー上を走り、前記第２スレッドは少なくとも第２プロセッサー上を走る請求項６４に記載の方法。
【請求項６７】
第１回は、前記第１スレッドと前記第２スレッドの両方が走る請求項６４に記載の方法。
【請求項６８】
第１回は、前記第１スレッドと前記第２スレッドのうち少なくとも１つは走らない請求項６４に記載の方法。
【請求項６９】
第１回は前記第１スレッドと前記第２スレッドの両方が走り、第２回は、前記第１スレッドと前記第２スレッドのうち少なくとも１つは走らない請求項６４に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般にマイクロエレクトロニクス集積回路の分野に関する。特に、本発明は集積回路設計のルーティング(routing)に関する。
【背景技術】
【０００２】
集積回路は、同じ及び／又は色々のサイズのセルと、セル間の結合を備える。セルは幾つかのピンを備え、このピンはワイヤにより１つ又はそれ以上の他のセルのピンに相互接続される。ネットは、ピン間の接続を形成するため、ワイヤにより相互接続された１組のピンを含む。ネットリスト(netlist)といわれる１組のネットが、ＩＣの接続を画定する。
【０００３】
ルーターがＩＣのネットリストを読込み、ネットリスト内のネットのピンを相互接続するワイヤを生成する。いったんネットリスト内のネットが接続されると、ＩＣは正確に機能する。しかし、ネットリスト内に多数のネットがあるので、従来のルーターが接続タスクを終了するには長時間かかる。更に、接続は数が多すぎ及び／又は過密であり、従来のルーターは、１つ又はそれ以上の設計規則違反をしないと、ルーティングを終了させる、特に相互接続を生成することが出来ない。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
これらの問題の多くは、ルーターが、層から層へ均一な構造を有するノードのグリッド表現に厳格に固執することにより、また全ＩＣ設計のルーティングを同時に行うことによる。このようなルーターは、過度の量のメモリーを要し、及び／又はＩＣ設計のルーティングするのに非常に長時間かかる。
【課題を解決するための手段】
【０００５】
本発明のある実施例では、非常に大きいＩＣ設計を、短時間で及び／又は少量のメモリーで取扱うことが出来るルーティング方法を提供する。本発明のある実施例は、標準インターフェースフォーマットにより現存するＩＣ設計の流れにスムーズに一体化することが出来、それゆえ使用者のコストを著しく減少させる。
【０００６】
従来のグローバルルーターでは、全ＩＣ設計のルーティングタスクが考慮され、それゆえ大量のメモリーと実行時間が必要であった。マルチレベルグローバルルーター内で、全ＩＣ設計は、本発明のある実施例で定義するマルチレベルの階層に分割することが出来る。いかなる時も設計の一部のみが実行され、それゆえこの方法はメモリーと実行時間がずっと少なくてすむ。更に、ルーティングタスクが分割されたので、マルチスレッドの並行処理を適用して、グローバルルーターをスピードアップすることが出来る。他の実施例では、全てのとき又はある時シングルスレッドでもよく、及び／又はある時はマルチスレッドでも良い。
【０００７】
ある実施例では、ディテールルーターに、グラフベース表現と呼ばれる非常に小型で効率的な表現を用いる。グラフベース表現は、ルーターのある実施例に必要なメモリーの量と検索空間の量を著しく減少させる。
【０００８】
１実施例では、ＩＣ設計がアクセスされる。ＩＣ設計は１つ又はそれ以上の層上のオブジェクトを含む。レベルが形成される。レベルは、第１レベルと、第２レベルと、第３レベルとを含むことが出来る。第１レベルは第１グリッド密度におけるＩＣ設計を表す。第２レベルは第２グリッド密度におけるＩＣ設計を表す。第２グリッド密度は、少なくとも第１グリッド密度より細かい。第３レベルは第３グリッド密度におけるＩＣ設計を表す。第３グリッド密度は、少なくとも第１グリッド密度と第２グリッド密度より細かい。少なくとも部分的にＩＣ設計に基づいて、各レベルはオブジェクトが配置される。オブジェクトは、第１レベルと第２レベルと第３レベルのうち１つ又はそれ以上において相互接続される。
【０００９】
１実施例では、ＩＣ設計がアクセスされる。ＩＣ設計は、１つ又はそれ以上の層上のオブジェクトを含む。ＩＣ設計の第１レベルがアクセスされる。ＩＣ設計の第１レベルは、１つ又はそれ以上の区分の第１グループに区分される。ＩＣ設計のオブジェクトは、１つ又はそれ以上の区分の第１グループにある。ＩＣ設計の第２レベルが形成される。第２レベルは、第２グループの区分に区分される。区分のグループの１つ又はそれ以上の区分は、第２グループの区分の少なくとも２つの区分により表現される。第２グループの区分の各区分内で、オブジェクトは、第２グループの区分の他の区分と実質的に独立に相互接続される。
【００１０】
１実施例では、ＩＣ設計がアクセスされる。ＩＣ設計は、１つ又はそれ以上の層上のオブジェクトを含む。ＩＣ設計の第１レベルがアクセスされる。ＩＣ設計の第１レベルは、１つ又はそれ以上の区分の第１グループに区分される。ＩＣ設計のオブジェクトは、１つ又はそれ以上の区分の第１グループにある。ＩＣ設計の第２レベルが形成される。第２レベルは、第２グループの区分に区分される。第１グループの区分の１つ又はそれ以上の区分は、第２グループの区分の少なくとも２つの区分により表現される。第２グループの区分は、領域のグループ間に割り当てられる。領域のグループの各領域は、第２グループの区分の１つ又はそれ以上の区分を含む。領域のグループの各領域内で、オブジェクトは、領域のグループの他の領域と実質的に独立に相互接続される。
【００１１】
１実施例では、ＩＣ設計がアクセスされる。ＩＣ設計は、ブロッケージのグループと、ピンのグループを含む。グラフが形成される。グラフは、第１グループのノードを含む。第１グループのノードの各ノードは、ブロッケージ(blockage)のグループの各ブロッケージの外に形成される。ピンのグループは、グラフのノードを通って相互接続される。
【００１２】
１実施例では、第１層内にＩＣ設計のオブジェクトを位置付けるために、第１グループのノードが形成される。第１グループのノードの少なくとも２つのノードは、第１間隔だけ間隔をおかれる。第２層内にＩＣ設計のオブジェクトを位置付けるために、第２グループのノードが形成される。第２グループのノードの少なくとも２つのノードは、第１間隔だけ間隔をおかれる。第２グループのノードの少なくとも２つのノードは、第１間隔より大きい１つ又はそれ以上の間隔をおかれる。
【００１３】
１実施例では、第１層内にＩＣ設計のオブジェクトを位置付けるために、第１グループのノードが形成される。第１グループのノードの少なくとも２つのノードは、第１間隔だけ間隔をおかれる。第２層内にＩＣ設計のオブジェクトを位置付けるために、第２グループのノードが形成される。第２グループのノードの少なくとも２つのノードは、第１間隔だけ間隔をおかれる。第２グループのノードの少なくとも２つのノードは、第１間隔より小さい１つ又はそれ以上の間隔をおかれる。
【００１４】
１実施例では、第１層内にＩＣ設計のオブジェクトを位置付けるために、第１グループのノードが形成される。第１グループのノードは、第１グループの共通ノードと、第１グループの非共通ノードとを含む。第２層内にＩＣ設計のオブジェクトを位置付けるために、第２グループのノードが形成される。第２層は少なくとも実質的に第１層に平行である。第２層は、層の軸に沿って１層の距離だけ第１層から間隔をおいている。第２グループのノードは、第２グループの共通ノードを含む。第１グループの共通ノードと第２グループの共通ノードとは、位置を共有する。もし、第２グループの共通ノードが、層に軸に沿ってほぼ１層の距離だけ第１グループの共通ノードに向かってシフトすると、第１グループの共通ノードと第２グループの共通ノードとは、実質的に同一となるであろう。もし、第２グループの共通ノードが、層に軸に沿ってほぼ１層の距離だけ第１グループの非共通ノードに向かってシフトすると、第１グループの非共通ノードと第２グループの共通ノードとは、実質的に同一なノードはなくなるであろう。
【００１５】
１実施例では、ＩＣ設計のボリュームが定義される。ボリュームのサブセットは、ワイヤリングを行う。ボリューム内にノードのグループが形成される。ノードのグループのノードは、ボリュームのサブセット内に形成されるように限定される。
【００１６】
１実施例では、ＩＣ設計の１つ又はそれ以上の層のルーティングピッチがアクセスされる。ＩＣ設計のボリュームが定義される。ボリュームのサブセットは、ワイヤリングを行う。ボリューム内に第１グループのノードが形成される。ボリュームの外に、１つ又はそれ以上のノードの第２グループが形成される。１つ又はそれ以上のノードの第２グループの少なくとも１つのノードは、１つ又はそれ以上のルーティングピッチの少なくとも１つより大きいピッチで形成される。
【００１７】
１実施例では、ＩＣ設計の第１セルインスタンス(instance)がアクセスされる。第１セルインスタンスに隣接するＩＣ設計の第２セルインスタンスがアクセスされる。第１セルインスタンスと第２セルインスタンスとは、チャンネルにより間隔をおいている。チャンネルの第１端部の近くに第１ノードが形成される。チャンネルの第２端部の近くに第２ノードが形成される。第１ノードと第２ノードの間にワイヤが直接接続される。
【００１８】
１実施例では、ＩＣ設計の１つ又はそれ以上の層のルーティングピッチがアクセスされる。ＩＣ設計の第１セルインスタンスがアクセスされる。第１セルインスタンスに隣接するＩＣ設計の第２セルインスタンスがアクセスされる。第１セルインスタンスと第２セルインスタンスとは、チャンネルにより間隔をおいている。チャンネル内に１つ又はそれ以上のノードのグループが形成される。チャンネル内の１つ又はそれ以上のノードのグループは、１つ又はそれ以上のルーティングピッチの少なくとも１つより大きいピッチを有する。
【００１９】
１実施例では、ＩＣ設計がアクセスされる。ＩＣ設計は、オブジェクトのグループを含む。ルーティングアルゴリズムのグループがアクセスされる。オブジェクトの１つ又はそれ以上のグループが、ルーティングアルゴリズムのグループの１つ又はそれ以上のルーティングアルゴリズムの第１組合わせに少なくとも部分的に応答して、第１グループの相互接続と相互接続される。第１グループの相互接続が記憶される。１つ又はそれ以上のルーティングアルゴリズムの第２組合わせが、自動的に求められる。ルーティングアルゴリズムのグループの１つ又はそれ以上のルーティングアルゴリズムの第２組合わせに少なくとも部分的に応答して、オブジェクトのグループの１つ又はそれ以上が、第２のグループの相互接続と相互接続される。第１グループの相互接続の結果と、第２グループの相互接続の結果とが、比較される。第２グループの相互接続の結果が第１グループの相互接続の結果より悪ければ、第１グループの相互接続がリストア(restore)される。
【００２０】
１実施例では、ＩＣ設計の少なくとも第１部分が、第１ルーティングピッチで相互接続される。もし、相互接続が１つ又はそれ以上の設計規則違反になるなら、ＩＣ設計の第１部分の少なくとも１部は、第１ルーティングピッチより小さい第２ルーティングピッチでルーティングされる。
【００２１】
１実施例では、ＩＣ設計の少なくとも第１部分が、少なくとも第１スレッド上で相互接続される。ＩＣ設計の少なくとも第２部分が、少なくとも第２スレッド上で相互接続される。
【００２２】
他の実施例は、ソフトウェア、電気回路、及び／又は本方法を実行する他の回路を含むだけでなく、少なくとも１部がソフトウェア又は回路で出来た集積回路、少なくとも１部がソフトウェア又は回路で出来た部品を含むコンピュータ、サーバー、又はルーター等のハードウェア製品の１つ又はそれ以上を含む。
【図面の簡単な説明】
【００２３】
【図１】ルーターシステムのある実施例の概略図である。
【図２】ルーティングエンジンのサブセットを示す。
【図３】マルチレベル領域ベースのグローバルルーターを示す。
【図４】マルチレベルグローバルルーティンググリッドを示す。
【図５】領域志向グラフベースのディテールルーターを示す。
【図６】ブロッケージ上のノードを避ける又は減らすグラフ表現を示す。
【図７】グラフ表現とグリッド表現の違いを例示する。
【図８】ワイヤを取囲むグラフ表現を例示する。
【図９】チャンネルのためのグラフ表現を示す。
【発明を実施するための形態】
【００２４】
次の詳細な記述は、特定の実施例を例示するためであり、本発明の範囲を限定するものではない。本発明の範囲内で色々の変形と調整が可能である。
【００２５】
図１は、ルーターの１実施例を示す。ルーター100は、ユーザーとの対話を与えるグラフィカルユーザーインターフェース（ＧＵＩ）101と；データベース103と；ピンとブロッケージ等のセルの物理的情報を含むＩＣ設計情報のデータベース103内に記憶するための、標準及び／又はカスタムの１つ又はそれ以上のフォーマットのパーサー102と；ＩＣ設計のネットを相互接続するワイヤ（次にデータベース103内に記憶される）を生成するルーティングエンジン104と；ワイヤリングと他の有用な情報を標準及び／カスタムのフォーマットのファイル内に出力する出力サブシステム105とを備える。
【００２６】
グラフィカルユーザーインターフェース（ＧＵＩ）101は、ルーターにより生成したワイヤをユーザーに見えるようにする。又、ユーザーが、ルーティングトラック等の色々の情報を見えるようにする。それにより又、ユーザーはワイヤ等を対話的に追加又は削除できる。フォーマットファイルパーサー102は、工業標準フォーマット及び／又はカスタムフォーマット等のフォーマットで記憶されたＩＣ設計情報を読み込む。セルと接続の全体又は一部がファイルに記述される。いったん本発明のある実施例がルーティングを終了すると、生成されたワイヤはファイル内へ出力される。データベース103は、ＩＣ設計情報とワイヤをコンパクトで効率的に記憶する。ルーティングエンジン104は、ワイヤを生成し、ＩＣ設計のネットリスト内に接続を実現する。
【００２７】
図２を参照すると、ルーティングエンジン200は、マルチレベル領域ベースのグローバルルーター201と、グラフベースのディテールルーター202とを備える。ある実施例のマルチレベル領域ベースのグローバルルーター201は、マルチレベルを構成し、その各々は１つ又はそれ以上の層のＩＣ全体の設計をカバーするグローバルルーティンググリッドを有するようにする。グローバルルーター201は、設計ネットリスト210を受取る。任意のときにおいて、１つ又はそれ以上の区分の領域等の、設計の一部のみが、ルーティングされる。それゆえ、お金と実行時間はずっと少ない。ある実施例は、区分のサイズを有する部分をルーティングする。更に、ルーティングタスクは分割されたので、マルチスレッドの並行処理を適用して、グローバルルーター201をスピードアップすることが出来る。この段階で、グローバルルーター201は、トポロジカルワイヤリング220を生成し、それはディテールルーター202へ渡される。トポロジカルワイヤリング220を実現する物理的ワイヤ230を生成するためには、ディテールルーター202は、設計全体を小さい１組の領域及び／又は区分に分割することにより、完全な設計のルーティングをする。ディテールルーター202は、本発明のある実施例のマルチスレッドの並行計算能力を使用して、これらの領域を並行してルーティングすることが出来る。他の実施例は、いつも又はある時シングルスレッドでも良く、及び／又はいつも又はある時マルチスレッドでも良い。
【００２８】
図３は、多数のステップを実行するマルチレベル領域ベースのグローバルルーター300の１実施例を示す。ステップ301は、幾つかのレベルのグローバルルーティンググリッドを構成する。マルチレベルのグローバルルーティンググリッドを形成した後、ステップ302は、各レベルにおいて複数の区分と領域を生じる。ステップ303は、最も細かいレベルから最も粗いレベルへ、領域ベースのルーティングを実行する。ある実施例では、ステップ303の後、設計の全てのネットがルーティングされる。他の実施例では、ステップ303の後、設計の全てではないネットがルーティングされる。ステップ304は、最も粗いレベルから最も細かいレベルへ、領域ベースのリップアップリルーティング(rip up rerouting)を実行する。ある実施例では、ステップ301、ステップ302、ステップ303、ステップ304の一部又は全部の順番を変え、及び／又はステップ301、ステップ302、ステップ303、ステップ304の一部又は全てを１回又は複数回実行することが出来る。
【００２９】
図４は、マルチレベルグローバルルーティンググリッド400の例を示す。図４において、第１レベル410において、全体の設計は「２×２」の区分されたグローバルルーティンググリッドに分割される。Ｐ１は、この「２×２」のグローバルルーティンググリッドにより形成された区分を表す。第２レベル420において、グローバルルーティンググリッドは第１レベルグローバルルーティンググリッドのより細かいバージョンである。例えば、Ｐ１区分は、第２レベル420において更に例えば４つの区分(即ち、P1_1、P1_2、P1_3、P1_4)に分割することが出来る。同様に、第３レベル430のグローバルルーティンググリッドが形成され、第２レベル420の各区分は、第３レベル430において更に区分に分割することが出来る。例えば、P1_1は区分P1_1_1、と区分P1_1_2に分割することが出来る。あるグローバルルーターは、１つのレベルのグローバルルーティンググリッドしか使用しない。ある実施例は、複数レベルのグローバルルーティンググリッドを使用する。図示する実施例は３つのレベルを有し、他の実施例は、２レベル、４レベル、又はそれ以上のレベル等の異なる数のレベルを有する。他の実施例は、いつも又はある時シングルスレッドでも良く、及び／又はある時又はいつもマルチスレッドでも良い。
【００３０】
この階層的グローバルルーティンググリッドのレベル数は、設計のサイズに基づいて決められる。設計サイズが大きくなると、レベル数は増加しても良い。更に、２つの連続するレベル間のグローバルルーティンググリッドの細分の程度は異なっても良い。例えば、第１レベル410の区分P1は、第２レベル420で４区分（即ち、P1_1、P1_2、P1_3、P1_4）になる。第２レベル420の区分P1_1は、第３レベル430において２つの区分（例えば、P1_1_1とP1_1_2）に分割することが出来る。
【００３１】
ある実施例では、全ての区分が同じサイズと形状を有するように、グリッドが分割される。他の実施例では、少なくとも２つの区分が異なるサイズと形状を有するように、グリッドが分割される。
【００３２】
ある実施例では、粗いレベルの各区分は、同じ数の区分に分割され、細かいレベルで全てが同じ形状を有する。他の実施例では、粗いレベルの少なくとも２つの区分は、細かいレベルで異なる数の区分に分割される。他の実施例では、粗いレベルの少なくとも１つの区分は、細かいレベルで少なくとも２つの異なる形状を有する複数の区分に分割される。他の実施例では、粗いレベルの少なくとも１つの区分は、細かいレベルでそれ以上分割されない。
【００３３】
第１レベル410において、設計全体をカバーするのに１つの領域を形成することが出来る。他の実施例は、第１レベル410をカバーするのに複数の領域を形成することが出来る。次に、第２レベル420において、区分P1_1、P1_2、P1_3、P1_4を含む領域（領域_P1）を形成することが出来る。同じサイズのさらに３つの領域を形成して、第２レベルの設計全体をカバーすることが出来る。他の実施例は、１つのレベルを他の数の領域に分割し、各領域に異なる数の区分を割り当て、及び／又は各領域に異なる数の区分を割り当てることが出来る。我々は、また第３レベルにおいて領域を形成することが出来る。例えば、領域_P1_halfは、４つの区分P1_1_1、P1_1_2、P1_2_1、P1_2_2を含む。同様に、他の領域を形成し、これらの領域が第３レベルで設計全体をカバーすることも出来る。ある従来のグローバルルーターは、設計全体のグローバルルーティングを実行することに限定されていた。グローバルルーターの色々の実施例は、また設計全体のグローバルルーティングを実行し、及び／又は１つの領域においてグローバルルーティングを実行することができる。
【００３４】
各レベルの領域が形成された後、グローバルルーターは、第３レベル430の領域を最初にルーティングすることにより、初期のワイヤリングを生じる。若し、ネットが完全に第３レベル430の領域内に存在するなら、それがルーティングされる。そうでなければ、ルーティングされない。次に、グローバルルーターは、第２レベル420の領域に移動し、その領域に存在するルーティングされていないネットをルーティングする。最後に、それは第１レベル410の１つの領域に移動し、領域内のルーティングされていないネットをルーティングする。他の実施例では、グローバルルーターは、最も細かいレベル以外の１つ又はそれ以上のレベルで初期のワイヤリングを生じ、及び／又は粗いレベルから細かいレベルへ移動することが出来る。
【００３５】
ルーティングの品質は、リップアップリルーティングにより更に改善することが出来る。マルチレベルグローバルルーティンググリッド400の例では、リップアップリルーティングは、第２レベルから開始することが出来る。他の実施例は、他のレベルから開始することが出来る。第２レベルの各領域について、グローバルルーターは、領域内のネットをリルーティングし、ルーティングの品質を更に改善することが出来る。次に、それは第３レベルへ移動し、第３レベルの各領域をリルーティングする。他の実施例では、リップアップリルーティングは細かいレベルから粗いレベルへ移動することが出来、又第２レベル以外の他のレベルから開始することが出来る。
【００３６】
各レベルの初期及び／又はリップアップルーティングの間、複数の領域があり、これらの領域は２つの条件に従って独立にルーティングすることが出来る。第１に、１つの領域をルーティングするとき、他の領域にピン又はワイヤを有するネットについて、領域の４つの縁部に沿ったネットの境界位置が尊重される(honored)。こうすることによって、異なる領域のネットのワイヤリングは、適正に接続することが出来る。第２に、同じネットを共有する２つの異なる領域は、独立にルーティングすることが出来るが、ワイヤリングデータベースに同時に更新することは出来ない。同期機構により、異なる領域内の共有されたネットは、同時には更新されないことが保証される。ある実施例は、コンピュータオペレーティングシステムにより提供されるマルチスレッド機構を使用し、全て又は複数の領域を並行してルーティングする。同時にルーティングされる領域の数は、一部は第１に利用できる中央演算ユニット（ＣＰＵ）の数による。領域ＡとＢの間の共有されたネットを取扱うため、ロッキング機構が同期を保証することが出来る。例えば、共有されたネットが領域Ａによりルーティングされるとき、領域Ａは、ネットを更新する前に共有されたネットをロックする。領域Ｂは、共有されたネットをロックされたことを見るとき、共有されたネットを更新しない。他の実施例は、全て又はある時シングルスレッドでも良く、及び／又はある時はマルチスレッドでも良い。
【００３７】
図５は、領域志向マルチスレッドのグラフベースディテールルーター500を示す。本発明のある実施例のディテールルーターでは、設計全体を１組の多角形等のより小さい形状に分割することにより、設計はルーティングされる。多角形の例は、矩形である。これらの形状は、本発明のある実施例のマルチスレッド並列演算能力を使用して、並行してルーティングすることが出来る。他の実施例は、いつも又はある時シングルスレッドでも良く、及び／又はある時マルチスレッドでも良い。
【００３８】
第１に、ステップ501で、ディテールルーター500に関連する領域の内側に設計情報を読込む。例えば、それはセル、ピン、ネットリスト、及びグローバルルーティングを領域内に読込むことが出来る。次に、ステップ502で、効率的なルーティングを支持することが出来るルーティンググラフ表現を作る。ルーティンググラフが作られた後、ステップ503で、第１グラフ検索アルゴリズムを使用して、ネットのピンを相互接続するルーティング経路を見出すことが出来る。他の実施例は、いつも又はある時シングルスレッドでも良く、及び／又はある時マルチスレッドでも良い。
【００３９】
いったん効率的なルーティンググラフが作られると、グラフベースのルーティングステップ503を実行する。グラフベースのルーティングは、１組のヒューリスティックグラフ検索アルゴリズムを備える。それは、ルーティングするのが困難な設計を終了させる速度と能力を強調する。ヒューリスティックアルゴリズムのルーティング品質は、ＩＣ設計特性に大きく依存するので、本発明のある実施例では、幾つかのヒューリスティックアルゴリズムを有する。メインアルゴリズムは、メインのルーティングタスクを取扱う。メインアルゴリズムがルーティングを修了した後、それはルーティング後の最適化段階に入る。この段階で、幾つかの異なるヒューリスティックアルゴリズムが適用される。各アルゴリズムは、１つ又はそれ以上のある設計特性を目標とする。この段階で、設計の特性がアルゴリズムに適合しなければ、ルーティングの結果はより悪くなる場合がある。状況が修正されなければ、設計は違反なしでルーティングすることは出来ないであろう。
【００４０】
任意のルーターの実行時間とメモリー効率は、ルーティング表現に大きく依存する。大きいＩＣ設計用の幾つかのルーターは、典型的にはルーティンググリッド表現を作ることを選択する。ルーティンググリッド表現の簡単さにより、ルータの実行が容易になる。しかし、ルーティンググリッド表現は、ある最近のＩＣ設計の要求に適合できない。従って、本発明のある実施例は、ルーティングのため、簡単なグリッド表現より一般的なグラフ表現を選択する。グリッド表現は、厳格に均一な構造を有することが出来る。しかし、ルーティンググリッド表現を有するある実施例は、この制限を有さず、ルーティングラフ表現及び／又はルーティンググリッド表現を使用することが出来る。この融通性により、メモリー及び／又は実行時間の要求を減らすことが出来る。次は本発明のある実施例のグラフ表現を示す。
【００４１】
図６において、ルーティング領域内に大きいブロッケージ610がある。グリッドベースのルーティングでは、大きいブロッケージが存在するという事実にかかわらず、全領域はグリッドによりカバーされる。これはグリッド表現の均一構造要求による。グラフ表現では、我々が、ブロッケージ用のグラフノードを作ことなく、ブロッケージにより占められていない空のスペースのみに、グラフノードを構成できることを図が示している。空間の多くはブロッケージにより占められるので、結果のグラフは、より少ないノードを有する。グラフ表現を使用することにより、グラフノードの数は、グリッドの数よりずっと少なく、それゆえグリッド表現と比較して著しくメモリーが減る。更に、グラフベースのルーティングアルゴリズムは、横切るノードがより少なく、それゆえＣＰＵ時間を著しく減少させる。他の実施例では、ブロッケージの中又は周りのノード数は、グリッド表現と比較して少なくとも減少しているが、ブロッケージの中又は周りのノード数はゼロにはならない。
【００４２】
図７は、例を使用して、グラフ表現とグリッド表現の差を対比する。設計の典型的な状況では、ピンの形状は非常に複雑である。グリッドベースのルーターが問題を取扱うには、ルーティングを終了するために、ピン層上に多くの余分の「アクセスグリッド」を生じる必要がある。グリッドベースのルーターでは、グリッドの均一な構造要求のために、これらのアクセスグリッドは、他のルーティング層にも存在する必要がある。それゆえ、メモリー要求は著しく増加する。図７に示すように、多くの３角形状（非共通）ノードが層１(710)でピンにより作られる。グリッド表現では、均一な構造要求のために、層２(720)もまたこれらの３角形状ノードを有する必要がある。グラフ表現を使用することにより、層１(740)に多くの「アクセスグラフノード」を有し、層２(730)には非常に少ないノードにすることが出来る。層１(710)と層２(730)の共通ノードは、同じ構造を有する。このように、メモリーとルーティング時間を減らすことが出来る。他の実施例では、異なる層の共通ノードは、少なくとも一部異なる構造を有することが出来る。
【００４３】
図８は、ルーティング領域810内のグローバルルーティングされたワイヤを示す。従来のグリッドベースルーティングでは、ルーターは全領域をカバーするためルーティンググリッドを作る。我々のグラフ表現では、我々はグローバルルートワイヤ820を取囲む領域のみで、グラフノードを作ることが出来る。残りの領域830では、グラフノードは全くない。例えば図８では、本発明のある実施例はワイヤを取囲む幾つかのノードのみを作る。この能力により、我々はメモリーと実行時間を著しく減らすことが出来る。他の実施例では、幾つかのグラフノードは、グローバルルートワイヤの周囲を超える領域の部分に作られるが、グローバルルートワイヤの周囲より密度が低い。更に、グローバルルートワイヤがある層内でのみルーティングするなら、グラフノードはこれらの層内でのみ作る必要がある。他の層の全ては、グラフノードを有さない。他の実施例では、１つ又はそれ以上のグラフノードが、１つ又はそれ以上の他の層内で作られる。
【００４４】
図９は、２つのマクロセル920と930の間のチャンネル構造910を示す。もし、チャンネル910内のグローバルルーティングワイヤが真っ直ぐであれば、我々は、１つ又はそれ以上のルーティングトラックのために、２つのグラフノードを作り、１つを左入口又はその近くに、１つを右入口又はその近くに、配置すれば良い。このグラフ構造で、メモリーと実行時間は著しく減少する。これとは逆に、グリッドベースのルーターは、層のルーティングピッチに基づいて多数のグリッドを生成する必要がある。それゆえ、チャンネル構造が存在し、グローバルルーティングワイヤが真っ直ぐであっても、それは多数のグリッドを生成する。グローバルルーティングワイヤが真っ直ぐでないときは、更に幾つかのノードをチャンネル内に追加し、ルーティングを容易にすることが出来る。要するに、図９に示すアイデアを使用して、チャンネル領域により多く又はより少ないノードを追加することが出来る。他の実施例は、チャンネル内に、ルーティングピッチより小さい密度で、１つ又はそれ以上のノードを置くことが出来る。
【００４５】
１組のノードは、１つ以上のルーティングピッチを有することが出来る。例えば、１組の３つのノードは、第１ノードと第２ノードの間に１つのルーティングピッチを有し、第２ノードと第３ノードの間に他のルーティングピッチを有することが出来る。１つのノードの組は、無限大のルーティングピッチを有する。
【００４６】
本発明の幾つかの実施例は、最良のルーティング結果を記憶する機構を有する。もし、新しいヒューリスティックアルゴリズムを最良のルーティング解に適用した結果、悪い結果になるなら、最良のルーティング解をリストアすることができる。次に、他のヒューリスティックアルゴリズムが、最良の解に適用される。もし、結果が良くなれば、更新して最良の解とすることが出来る。このようにして、ルーティング後の最適化段階において、ルーティング結果はよりよくなり、より悪くなることはない。
【００４７】
幾つかの実施例は、ＩＣ設計の少なくとも第１部分を第１ルーティングピッチで相互接続した。相互接続の結果、１つ又はそれ以上の設計規則に違反するなら、ＩＣ設計の第１部分の少なくとも一部は、第１ルーティングピッチより小さい第２ルーティングピッチでルーティングされる。
【符号の説明】
【００４８】
101  グラフィカルユーザーインターフェース（ＧＵＩ）
102  パーサー
103  データベース
104  ルーティングエンジン
105  出力サブシステム
200  ルーティングエンジン
201  グローバルルーター
202  ディテールルーター
710,740  層１
720,730  層２
810  ルーティング領域
820  グローバルルートワイヤ
830  残りの領域
910  チャンネル構造
920,930  マクロセル
【図１】
2009087376.tif 000003
【図２】
2009087376.tif 000004
【図３】
2009087376.tif 000005
【図４】
2009087376.tif 000006
【図５】
2009087376.tif 000007
【図６】
2009087376.tif 000008
【図７】
2009087376.tif 000009
【図８】
2009087376.tif 000010
【図９】
2009087376.tif 000011
【手続補正書】
【提出日】平成21年1月20日(2009.1.20)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
集積回路（ＩＣ）設計をルーティングする方法において、
複数のオブジェクトを有するＩＣ設計にアクセスし、
複数のルーティングアルゴリズムにアクセスし、
前記複数のルーティングアルゴリズムの１つ又はそれ以上のルーティングアルゴリズムの第１組合わせに少なくとも部分的に応じて、第１の複数の相互接続により、前記複数のオブジェクトの１つ又はそれ以上を相互接続し、
前記第１の複数の相互接続を記憶し、
前記第１組合わせとは異なる、１つ又はそれ以上のルーティングアルゴリズムの第２組合わせを自動的に求め、
前記複数のルーティングアルゴリズムの前記１つ又はそれ以上のルーティングアルゴリズムの第２組合わせに少なくとも部分的に応じて、第２の複数の相互接続により、複数のオブジェクトの１つ又はそれ以上を相互接続し、
前記第１の複数の相互接続と前記第２の複数の相互接続の結果を比較し、
前記第２の複数の相互接続の結果が前記第１の複数の相互接続の結果より悪ければ、前記第１の複数の相互接続の結果をリストアする
ステップを備えることを特徴とする方法。
【請求項２】
前記第１の複数の相互接続、前記第２の複数の相互接続との相互接続は、マルチスレッドである請求項１に記載の方法。
【請求項３】
前記第１の複数の相互接続との相互接続は、第１ルーティングピッチで行われ、
前記第２の複数の相互接続との相互接続は、前記第１ルーティングピッチより小さい第２ルーティングピッチで行われる請求項１に記載の方法。
【請求項４】
前記第１の複数の相互接続との相互接続は、第１スレッドで行われ、
前記第２の複数の相互接続との相互接続は、第２スレッドで行われる請求項１に記載の方法。
【請求項５】
前記第１スレッドは第１プロセッサー上を走り、
前記第２スレッドは第２プロセッサー上を走る請求項４に記載の方法。
【請求項６】
前記複数のルーティングアルゴリズムは、領域ベースのルーティングアルゴリズムと、グラフベースのルーティングアルゴリズムを含む請求項１に記載の方法。
【請求項７】
前記複数のルーティングアルゴリズムは、更にグリッドベースのルーティングアルゴリズムを含む請求項６に記載の方法。