(57)【特許請求の範囲】
【請求項１】
チップ上に配置されたセルのネット端子間の概略配線を求める概略配線方法に於いて、
層、禁止領域、配線容量といった制約条件なしに生成したスタイナー木を初期解として生成するスタイナー木生成過程と、
前記スタイナー木を、少なくとも３本以上の枝の交点であるスタイナーポイントを値にもつ複数のパスに分割するパス集合を生成するパス集合生成過程と、
前記スタイナー木のパス集合につき、前記制約条件を考慮したパスの修正により、線長がなるべく増えないようにスタイナー木の部分修正を繰り返して概略配線を得るパス修正過程と、
を備え、
前記パス修正過程は、
前記スタイナー木のパス集合に対し、前記禁止領域を通るパスを、前記禁止領域を通らないパスに変更する禁止領域迂回過程と、
前記スタイナー木のパス集合に対し、前記配線容量を越える配線数の配線混雑領域を通るパスを、前記配線容量以下の配線数となるように前記配線混雑領域を通らないパスに変更する配線混雑領域迂回過程と、
前記スタイナー木のパス集合に対し、前記制約条件に基づくスタイナー木の部分修正の終了後に、各パスの線長を改善するようにパスに変更する線長改善過程と、
を備え、
前記禁止領域迂回過程は、
パスの始点、終点、及び経路が前記禁止領域を通るか否か判定し、
禁止領域を通らない場合は処理を終了し、
パスの始点あるいは終点いずれかが禁止領域にある場合は、始点あるいは終点を前記禁止領域外に移動した後に前記パスの集合を更新し、禁止領域外のパスの始点あるいは終点が見つからない場合はパスを変更せずに処理を終了し、
パスが前記禁止領域を通っている場合は、禁止領域を通らないような経路に変更し、
前記配線混雑領域迂回過程は、
配線領域を所定の大きさに分割したブロックの各々について、前記ブロックを通過できる線分数の最大値を示す配線容量と、前記ブロックを現在通過している線分数を示す配線混雑度をそれぞれ定義し、
前記ブロックの配線混雑度が配線容量以下の場合は、処理を終了し、
前記ブロックの配線混雑度が配線容量を越えている場合は、前記ブロックを通過するパスについて、始点及び終点がブロックの外にある場合は、始点及び終点を変更せずに、ブロックを通らない経路を見つけてパスを変更し、見つからなければ元のパスを維持し、
パスの始点と終点のいずれか一方がブロック内で他方がブロック外にある場合は、ブロック内の端点をブロック外に見つけ、ブロックを通らない経路を見つけパスを変更し、見つからなければ元のパスを維持し、
パスの始点及び終点の両方がブロック内にある場合は元のパスを維持し、
パスが修正されたらブロックの配線混雑度を再計算して前記配線容量以下になるまで前記処理を繰り返し、
前記線長改善過程は、
処理対象とするパスに属する枝をスタイナー木から外して始点から辿れる枝の集合である第１部分木Ｔ１と、終点から辿れる枝の集合である第２部分木Ｔ２とに分け、
前記第１部分木Ｔ１の始点はそのままで、前記第２部分木Ｔ２の枝の中から前記始点からのマンハッタン距離が最短になる枝上の終点を見つけて第１候補パスを生成し、
前記第２部分木Ｔ２の終点はそのままで、前記第１部分木Ｔ１の枝の中から前記終点からの距離が最短になる枝上の始点を見つけて第２候補パスを生成し、
前記第１候補パスの距離ｄ１が前記第２候補パスの距離ｄ２以下で且つ前記処理対象とするパスの距離ｄ以下の場合は、終点を変更した前記第１候補パスを新パスとして前記パスの集合を更新し、
前記第２候補パスの距離ｄ２が前記第２候補パスの距離ｄ１以下で且つ前記処理対象とするパスの距離ｄ以下の場合は、始点を変更した前記第２候補パスを新パスとして前記パスの集合を更新し、
前記第１および第２候補パスの距離ｄ１、ｄ２が各々前記処理対象とするパスの距離ｄ以上の場合は、始点及び終点を変えずパスをそのまま維持することを特徴とする概略配線方法。
【請求項２】
請求項１の概略配線方法に於いて、前記禁止領域迂回過程は、
前記禁止領域にある始点を外部に移動する場合、移動先の新たな始点として元の始点から辿れる前記スタイナー木の枝上の点を候補点とし、また移動先の新たな終点として元の終点から辿れる前記スタイナー木の全ての枝上の点を候補点とし、前記候補点のうち、前記禁止領域外にあり且つ線長が最短になる候補点を新たな始点又は終点に選んでパスを変更する第１修正過程と、
前記禁止領域を経路が通過する場合、始点および終点を変更することなく線長がなるべく増えないように前記禁止領域の外を通る経路を選んでパスを変更する第２修正過程と、
を備えたことを特徴とする概略配線方法。
【請求項３】
請求項１の概略配線方法に於いて、前記配線混雑領域迂回過程は、
前記ブロック内に始点又は終点がある場合、移動先の新たな始点又は終点として元の始点又は終点から辿れる前記スタイナー木の枝上の点を候補点とし、前記候補点のうち、前記ブロック外にあり且つ線長が最短になる候補点を新たな始点又は終点に選んで前記ブロックを通らない経路を見つけてパスを変更する第１修正過程と、
前記ブロックを経路が通過する場合、始点および終点を変更することなく線長がなるべく増えないように前記ブロックの外を通る経路を選んでパスを変更する第２修正過程と、
を備えたことを特徴とする概略配線方法。
【請求項４】
チップ上に配置されたセルのネット端子間の概略配線を求める概略配線装置に於いて、
層、禁止領域、配線容量といった制約条件なしに生成したスタイナー木を初期解として生成するスタイナー木生成部と、
前記スタイナー木を、少なくとも３本以上の枝の交点であるスタイナーポイントを値にもつ複数のパスに分割するパス集合を生成するパス集合生成部と、
前記スタイナー木のパス集合につき、前記制約条件を考慮したパスの修正により、線長がなるべく増えないようにスタイナー木の部分修正を繰り返して概略配線を得るパス修正部と、
を備え、前記パス修正部は、
前記スタイナー木のパス集合に対し、前記禁止領域を通るパスを、前記禁止領域を通らないパスに変更する禁止領域迂回処理部と、
前記スタイナー木のパス集合に対し、前記配線容量を越える配線数の配線混雑領域を通るパスを、前記配線容量以下の配線数となるように前記配線混雑領域を通らないパスに変更する配線混雑領域迂回処理部と、
前記スタイナー木のパス集合に対し、前記制約条件に基づくスタイナー木の部分修正の終了後に、各パスの線長を改善するようにパスに変更する線長改善処理部と、
を備え、
前記禁止領域迂回処理部は、
パスの始点、終点、及び経路が前記禁止領域を通るか否か判定し、
禁止領域を通らない場合は処理を終了し、
パスの始点あるいは終点いずれかが禁止領域にある場合は、始点あるいは終点を前記禁止領域外に移動した後に前記パスの集合を更新し、禁止領域外のパスの始点あるいは終点が見つからない場合はパスを変更せずに処理を終了し、
パスが前記禁止領域を通っている場合は、禁止領域を通らないような経路に変更し、
前記配線混雑領域迂回処理部は、
配線領域を所定の大きさに分割したブロックの各々について、前記ブロックを通過できる線分数の最大値を示す配線容量と、前記ブロックを現在通過している線分数を示す配線混雑度をそれぞれ定義し、
前記ブロックの配線混雑度が配線容量以下の場合は、処理を終了し、
前記ブロックの配線混雑度が配線容量を越えている場合は、前記ブロックを通過するパスについて、始点及び終点がブロックの外にある場合は、始点及び終点を変更せずに、ブロックを通らない経路を見つけてパスを変更し、見つからなければ元のパスを維持し、
パスの始点と終点のいずれか一方がブロック内で他方がブロック外にある場合は、ブロック内の端点をブロック外に見つけ、ブロックを通らない経路を見つけパスを変更し、見つからなければ元のパスを維持し、
パスの始点及び終点の両方がブロック内にある場合は元のパスを維持し、
パスが修正されたらブロックの配線混雑度を再計算して前記配線容量以下になるまで前記処理を繰り返し、
前記線長改善処理部は、
処理対象とするパスに属する枝をスタイナー木から外して始点から辿れる枝の集合である第１部分木Ｔ１と、終点から辿れる枝の集合である第２部分木Ｔ２とに分け、
前記第１部分木Ｔ１の始点はそのままで、前記第２部分木Ｔ２の枝の中から前記始点からのマンハッタン距離が最短になる枝上の終点を見つけて第１候補パスを生成し、
前記第２部分木Ｔ２の終点はそのままで、前記第１部分木Ｔ１の枝の中から前記終点からの距離が最短になる枝上の始点を見つけて第２候補パスを生成し、
前記第１候補パスの距離ｄ１が前記第２候補パスの距離ｄ２以下で且つ前記処理対象とするパスの距離ｄ以下の場合は、終点を変更した前記第１候補パスを新パスとして前記パスの集合を更新し、
前記第２候補パスの距離ｄ２が前記第２候補パスの距離ｄ１以下で且つ前記処理対象とするパスの距離ｄ以下の場合は、始点を変更した前記第２候補パスを新パスとして前記パスの集合を更新し、
前記第１および第２候補パスの距離ｄ１、ｄ２が各々前記処理対象とするパスの距離ｄ以上の場合は、始点及び終点を変えずパスをそのまま維持することを特徴とする概略配線装置。
【請求項５】
請求項４の概略配線装置に於いて、前記禁止領域迂回処理部は、
前記禁止領域にある始点を外部に移動する場合、移動先の新たな始点として元の始点から辿れる前記スタイナー木の枝上の点を候補点とし、また移動先の新たな終点として元の終点から辿れる前記スタイナー木の全ての枝上の点を候補点とし、前記候補点のうち、前記禁止領域外にあり且つ線長が最短になる候補点を新たな始点又は終点に選んでパスを変更する第１修正部と、
前記禁止領域を経路が通過する場合、始点および終点を変更することなく線長がなるべく増えないように前記禁止領域の外を通る経路を選んでパスを変更する第２修正部程と、
を備えたことを特徴とする概略配線装置。
【請求項６】
請求項４の概略配線装置に於いて、前記配線混雑領域迂処理回部は、
前記ブロック内に始点又は終点がある場合、移動先の新たな始点又は終点として元の始点又は終点から辿れる前記スタイナー木の枝上の点を候補点とし、前記候補点のうち、前記ブロック外にあり且つ線長が最短になる候補点を新たな始点又は終点に選んで前記ブロックを通らない経路を見つけてパスを変更する第１修正部と、
前記ブロックを経路が通過する場合、始点および終点を変更することなく線長がなるべく増えないように前記ブロックの外を通る経路を選んでパスを変更する第２修正部と、
を備えたことを特徴とする概略配線装置。
【請求項７】
チップ上に配置されたセルのネット端子間の概略配線を求める概略配線処理プログラムを格納したコンピュータ読取り可能な記録媒体に於いて、
層、禁止領域、配線容量といった制約条件なしに生成したスタイナー木を初期解として生成するスタイナー木生成モジュールと、
前記スタイナー木を、少なくとも3本以上の枝の交点であるスタイナーポイントを値にもつ複数のパスに分割するパス集合を生成するパス集合生成モジュールと、
前記スタイナー木のパス集合につき、前記制約条件を考慮したパスの修正により、線長がなるべく増えないようにスタイナー木の部分修正を繰り返して概略配線を得るパス修正モジュールと、
を備え、前記パス修正モジュールは、
前記スタイナー木のパス集合に対し、前記禁止領域を通るパスを、前記禁止領域を通らないパスに変更する禁止領域迂回処理モジュールと、
前記スタイナー木のパス集合に対し、前記配線容量を越える配線数の配線混雑領域を通るパスを、前記配線容量以下の配線数となるように前記配線混雑領域を通らないパスに変更する混雑領域迂回処理モジュールと、
前記スタイナー木のパス集合に対し、前記制約条件に基づくスタイナー木の部分修正の終了後に、各パスの線長を改善するようにパスに変更する線長改善処理モジュールと、
を備え、
前記禁止領域迂回処理モジュールは、
パスの始点、終点、及び経路が前記禁止領域を通るか否か判定し、
禁止領域を通らない場合は処理を終了し、
パスの始点あるいは終点いずれかが禁止領域にある場合は、始点あるいは終点を前記禁止領域外に移動した後に前記パスの集合を更新し、禁止領域外のパスの始点あるいは終点が見つからない場合はパスを変更せずに処理を終了し、
パスが前記禁止領域を通っている場合は、禁止領域を通らないような経路に変更し、
前記配線混雑領域迂回処理モジュールは、
配線領域を所定の大きさに分割したブロックの各々について、前記ブロックを通過できる線分数の最大値を示す配線容量と、前記ブロックを現在通過している線分数を示す配線混雑度をそれぞれ定義し、
前記ブロックの配線混雑度が配線容量以下の場合は、処理を終了し、
前記ブロックの配線混雑度が配線容量を越えている場合は、前記ブロックを通過するパスについて、始点及び終点がブロックの外にある場合は、始点及び終点を変更せずに、ブロックを通らない経路を見つけてパスを変更し、見つからなければ元のパスを維持し、
パスの始点と終点のいずれか一方がブロック内で他方がブロック外にある場合は、ブロック内の端点をブロック外に見つけ、ブロックを通らない経路を見つけパスを変更し、見つからなければ元のパスを維持し、
パスの始点及び終点の両方がブロック内にある場合は元のパスを維持し、
パスが修正されたらブロックの配線混雑度を再計算して前記配線容量以下になるまで前記処理を繰り返し、
前記線長改善処理モジュールは、
処理対象とするパスに属する枝をスタイナー木から外して始点から辿れる枝の集合である第１部分木Ｔ１と、終点から辿れる枝の集合である第２部分木Ｔ２とに分け、
前記第１部分木Ｔ１の始点はそのままで、前記第２部分木Ｔ２の枝の中から前記始点からのマンハッタン距離が最短になる枝上の終点を見つけて第１候補パスを生成し、
前記第２部分木Ｔ２の終点はそのままで、前記第１部分木Ｔ１の枝の中から前記終点からの距離が最短になる枝上の始点を見つけて第２候補パスを生成し、
前記第１候補パスの距離ｄ１が前記第２候補パスの距離ｄ２以下で且つ前記処理対象とするパスの距離ｄ以下の場合は、終点を変更した前記第１候補パスを新パスとして前記パスの集合を更新し、
前記第２候補パスの距離ｄ２が前記第２候補パスの距離ｄ１以下で且つ前記処理対象とするパスの距離ｄ以下の場合は、始点を変更した前記第２候補パスを新パスとして前記パスの集合を更新し、
前記第１および第２候補パスの距離ｄ１、ｄ２が各々前記処理対象とするパスの距離ｄ以上の場合は、始点及び終点を変えずパスをそのまま維持する概略配線処理プログラムを格納したことを特徴とする記録媒体。
【請求項８】
請求項７の記録媒体に於いて、前記禁止領域迂回処理モジュールは、
前記禁止領域にある始点を外部に移動する場合、移動先の新たな始点として元の始点から辿れる前記スタイナー木の枝上の点を候補点とし、また移動先の新たな終点として元の終点から辿れる前記スタイナー木の全ての枝上の点を候補点とし、前記候補点のうち、前記禁止領域外にあり且つ線長が最短になる候補点を新たな始点又は終点に選んでパスを変更する第１修正モジュールと、
前記禁止領域を経路が通過する場合、始点および終点を変更することなく線長がなるべく増えないように前記禁止領域の外を通る経路を選んでパスを変更する第２修正部モジュールと、
を備えたことを特徴とする記録媒体。
【請求項９】
請求項７の記録媒体に於いて、前記配線混雑領域迂回処理モジュールは、
前記ブロック内に始点又は終点がある場合、移動先の新たな始点又は終点として元の始点又は終点から辿れる前記スタイナー木の枝上の点を候補点とし、前記候補点のうち、前記ブロック外にあり且つ線長が最短になる候補点を新たな始点又は終点に選んで前記ブロックを通らない経路を見つけてパスを変更する第１修正モジュールと、
前記ブロックを経路が通過する場合、始点および終点を変更することなく線長がなるべく増えないように前記ブロックの外を通る経路を選んでパスを変更する第２修正モジュールと、
を備えたことを特徴とする記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＬＳＩやＶＬＳＩのコンピュータ支援の自動設計のレイアウト設計で詳細配線に先立って行われる概略配線方法及び装置並びに概略配線プログラムを格納したコンピュータ読取り可能な記録媒体に関し、特に、スタイナー木を利用した最小コストのネット端子間の配線を探索するための概略配線方法及び装置並びに概略配線プログラムを格納したコンピュータ読取り可能な記録媒体に関する。
【背景技術】
【０００２】
ＶＬＳＩ、ＬＳＩなどの大規模半導体集積回路をコンピュータの支援により自動設計するＣＡＤシステムにあっては、まずＡＮＤ、ＯＲ等のセルと、セル間を接続するネットを決定する論理設計を行い、次に論理設計で得られたネットリストに基づき、チップ上にセルを配置するセルレイアウト自動設計を行い、最後にチップ上に配置したセル間のネットを接続する配線を決める配線処理（ルーチング：Ｒｏｕｔｉｎｇ）を行っている。配線処理は、タイミング、遅延等を考慮せずにネット配線を決める概略配線（グローバル・ルーチング：Ｇｌｏｂａｌ  Ｒｏｕｔｉｎｇ）と、タイミング、遅延等を考慮してチップ上の実際の配線を決める詳細配線（ディテール・ルーチング：Ｄｅｔａｉｌｅｄ  Ｒｏｕｔｉｎｇ）に分かれる。
【０００３】
近年の回路技術の進歩に伴い、ＶＬＳＩの集積度の向上と回路規模の増大は著しい。このためレイアウト自動設計は、大規模の回路を高速に処理することが要求されている。
【０００４】
ここで本発明が対象としている概略配線問題の定義を簡単に説明する。まず図１のように、グリッドグラフと呼ばれる格子上の領域を考える。グリッドグラフは、チップ領域を水平垂直のラインによりセルブロックに分け、各矩形セルを頂点に変換して格子で結んだものであり、配置セルの端子は格子の黒点で表わされる。
【０００５】
このグリッドグラフにおける縦、横の格子の交点をグリッドと呼ぶ。グリッドサイズはグリッドの総数であり、縦方向の格子数がｖ本、横方向の格子数がｈ本の場合、グリッドサイズは（ｈ×ｖ）となる。図１の場合は、ｈ＝６，ｖ＝６でグリッドサイズは３６である。
【０００６】
概略配線問題は、あるネットＮの端子ｔ１，ｔ２，ｔ３を結ぶように格子上に線分を生成する問題である。配線層が複数ある場合は、各線分を最もコストの低いところへ割り当てる。コスト関数は一般的には線分の長さの総和で与えられる配線長であり、コストを最小にする。概略配線の制約としては、斜線に示した領域１００，１０２を通らないようにすることであり、領域１００，１０２は配線禁止領域や配線混雑度の高い領域である。
【０００７】
次に概略配線の方法としてよく知られているものを簡単に説明する。
【０００８】
まず、２端子のネットに関する手法として代表的な迷路法と線分探索法がある。迷路法は、図２のように、一方の端子ｔ１をソースとし、残りの端子ｔ２をターゲットとし、ソースｔ１から波が伝搬するような形で探索を行なう。まずソースｔ１に「０」をラベルする。ラベルの値はソースｔ１からの距離である。次にソースｔ１に隣接する頂点には「１」をラベルし、ラベル「１」の頂点に隣接する頂点は「２」をラベルするという手順で波が広がるように伝えていく。この処理を波がターゲットｔ２に到達するか、あるいは波がこれ以上広がらなくなるまで繰り返す。
【０００９】
この迷路法の長所は、配線できない領域も考慮した最短経路が得られることにある。また計算時間はグリッドサイズに依存し、高さｈ、幅ｗとしたときＯ（ｈ×ｗ）となる。ここでＯ（  ）は、Ｏｒｄｅｒ（  ）である。このため回路が大規模化し、サイズが大きくなると迷路法は計算コストが増大する。またラベルを記憶しておくためのメモリサイズもチップのグリッドサイズに依存する。
【００１０】
線分探索法は、図３のように、ソースｔ１とターゲットｔ２から線分を生成し、それぞれｓリスト（ｓｌｉｓｔ）及びｔリスト（ｔｌｉｓｔ）と呼ばれるリストに加えていく。線分は障害物がないかぎり伸ばす。探索は、ｓリストの線分とｔリストの線分がぶつかったところで終了する。図３では、ｓリストに線分ｓ１，ｓ２，ｓ３を、またｔリストに線分ｓ４，ｓ５，ａ６を加えるように線分を延ばしたところで、線分ｓ２とｓ４がぶつかり、経路が見つかっている。
【００１１】
線分探索法は、グリッドを使う代わりに線分を使うことによって、使用メモリを軽減する。また計算コストは生成された線分数Ｌに依存し、Ｏ（Ｌ）である。
【００１２】
このような迷路法や線分探索法は、配線禁止や配線混雑度の高い領域１００，１０２を障害物として考慮することができるし、多層の配線もできる。
【００１３】
３端子以上の多端子のネットに関しては迷路法や線分探索法を拡張した方法が用いられるが、局所解に陥るという欠点があり、図４のスタイナー木を利用する方法が解の質が高いという点で優れている。
【００１４】
スタイナー木を利用する方法は、ＲＳＴ（ｒｅｃｔｉｌｉｎｅａｒ  ｓｔｅｉｎｅｒ  ｔｒｅｅ）と呼ばれるスタイナー木１０４を生成する。最小コストのスタイナー木１０４を見つける問題は、有為な時間内にて解けずに爆発的に解が増加するＮＰ困難（Ｎｏ−Ｐｏｌｙｎｏｍｉａｌ；否定された多項式時間）であるが、いくつかヒューリスティック（ｈｅｕｒｉｓｔｉｃ：発見的）な手法が提案されている。これらの手法はネットの端子数をＮとすると、Ｏ（Ｎ3ｌｏｇＮ）程度までの計算時間及び使用メモリ量のものが知られている。一般的なスタイナー木を利用した方法は、障害物を考慮せず制約なしでスタイナー木を生成し、スタイナー木の各枝の経路を求める際に迷路法などを使って障害物を避けるなどの処理をしている。
【発明の開示】
【発明が解決しようとする課題】
【００１５】
しかしながら、迷路法のようなチップのグリッドサイズに依存する方法では、大規模な回路で、計算時間と使用メモリ量が増大することが問題となる。
【００１６】
一方、スタイナー木を利用する方法は、計算時間はネットの端子数に依存する。実用的な回路ではネットの端子数は高々数百である。これに対して配線領域のグリッドサイズは少なくとも数百万以上となる。このためスタイナー木を利用する方法は、迷路法と比較して計算時間と使用メモリ量において有利である。
【００１７】
しかし、一般的なスタイナー木の生成アルゴリズムでは、層、禁止、配線容量といった制約を考慮していないため、これらの制約は詳細配線に任せることになる。この場合、詳細配線に与えられる問題が難しくなり、配線全体の計算時間が逆に増える可能性がある。
【００１８】
本発明は、詳細配線に対する負担を軽減し質の高いスタイナー木を利用した概略配線の解が得られる概略配線方法及び装置並びに概略配線処理プログラムを格納したコンピュータ読取り可能な記録媒体を提供することを目的とする。
【課題を解決するための手段】
【００１９】
本発明は、チップ上に配置されるセルのネット端子間の概略配線を求める概略配線方法であり、制約条件なしに生成したスタイナー木を初期解として生成するスタイナー木生成過程と、スタイナー木の初期解をもとに、制約条件を考慮して線長がなるべく増えないようにスタイナー木の部分修正を繰り返して概略配線を得る修正過程とを備えたことを特徴とする。
【００２０】
ここで、スタイナー木生成過程は、層、禁止、配線容量といった制約なしスタイナー木を初期解として生成し、修正過程は、禁止領域、配線容量、層を考慮して線長がなるべく増えないようにスタイナー木の部分修正を繰り返す。
【００２１】
このように本発明は、スタイナー木を初期解として、配線の制約を考慮するようにスタイナー木の部分修正を行うことにより、障害物を考慮した迷路法の概略配線と同等の質の結果を得ることができる。また本発明におけるスタイナー木の部分修正に必要な計算は、基本的には座標計算であり、その計算時間と使用メモリ量はネットの端子数Ｎに依存する。したがって、大規模な回路では、本手法は配線領域を走査する迷路法と比較して計算時間と使用メモリ量において大きく有利である。
【００２２】
ここで修正過程は、スタイナー木を、少なくとも３本以上の枝の交点であるスタイナーポイントを値にもつ複数のパスに分割したパス集合を生成するパス集合生成過程と、スタイナー木のパス集合につき、制約条件を考慮したパスの修正によってスタイナー木を部分修正するパス修正過程とを備える。
【００２３】
このパス集合は、端子数Ｎのとき、スタイナーポイントの数は（Ｎ）オーダ、スタイナー木の枝数をｅnとすると、パスへの分割の計算時間は、各枝の端点がスタイナーポイントであるかどうかを決定する操作で抑えられ、Ｏ（ｅn2）オーダである。またスタイナー木の枝数ｅnはＯ（Ｎ）オーダであり、パスへの分割の計算時間はＯ（Ｎ2）となる。また、生成されるパスの個数はＯ（Ｎ）で抑えられる。
【００２４】
パス修正過程は、スタイナー木のパス集合に対し、禁止領域を通るパスを、禁止領域を通らないパスに変更する禁止領域迂回過程を備える。この禁止領域迂回過程は、詳細には、次の手順をもつ。
（１）パスの始点、終点、及び経路が前記禁止を通るか否か判定する。
（２）禁止領域を通らない場合は処理を終了する。
（３）パスの始点あるいは終点いずれかが禁止にある場合は、始点あるいは終点を前記禁止領域外に移動した後にパスの集合を更新し、禁止領域外のパスの始点あるいは終点が見つからない場合はパスを変更せずに処理を終了する。
（４）パスが禁止領域を通っている場合は禁止を通らないような経路に変更する。
【００２５】
禁止領域迂回過程は、第１修正過程と第２修正過程を備える。
【００２６】
第１修正過程は、禁止領域にある始点を外部に移動する場合、移動先の新たな始点として元の始点から辿れるスタイナー木の枝上の点を候補点とし、また移動先の新たな終点として元の終点から辿れるスタイナー木の全ての枝上の点を候補点とし、各候補点のうち、禁止領域外にあり且つ線長が最短になる候補点を新たな始点又は終点に選んでパスを変更する。この場合の１本のパスついての修正のための計算時間はＯ（ｅn）＝Ｏ（Ｎ）である。
【００２７】
第２修正過程は、禁止領域を経路が通過する場合、始点および終点を変更することなく線長がなるべく増えないように禁止領域の外を通る経路を選んでパスを変更する。
【００２８】
この第２修正過程で、パスの線長が元のスタイナー木に比べて増えないようにするには、パスの始点と終点を囲む矩形の中を通る経路を選択すれば良い。禁止領域の制約で、この矩形の中を通ることができない場合は、線長は増えることになる。また矩形の中の経路のパターンをいくつか決めておくことにより、計算時間をＯ（１）に抑えることができる。
【００２９】
パス修正過程は、スタイナー木のパス集合に対し、配線容量を越える配線数の配線混雑領域を通るパスを、配線容量以下の配線数となるように配線混雑領域を通らないパスに変更する配線混雑領域迂回過程を備える。この配線混雑領域迂回過程は、詳細は次の手順となる。
（１）配線領域を所定の大きさに分割したブロックの各々について、ブロックを通過できる線分数の最大値を示す配線容量と、ブロックを現在通過している線分数を示す配線混雑度をそれぞれ定義する。
（２）ブロックの配線混雑度が配線容量以下の場合は、処理を終了する。
（３）ブロックの配線混雑度が配線容量を越えている場合は、ブロックを通過するパスについて、始点及び終点がブロックの外にある場合は、始点及び終点を変更せずに、ブロックを通らない経路を見つけてパスを変更し、見つからなければ元のパスを維持する。
（４）パスの始点と終点のいずれか一方がブロック内で他方がブロック外にある場合は、ブロック内の端点をブロック外に見つけ、ブロックを通らない経路を見つけパスを変更し、見つからなければ元のパスを維持する。
（５）パスの始点及び終点の両方がブロック内にある場合は元のパスを維持する。
（６）パスが修正されたらブロックの配線混雑度を再計算して配線容量以下になるまで処理を繰り返す。
【００３０】
この配線混雑領域迂回過程についても、第１修正過程と第２修正過程が設けられる。第１修正過程は、配線混雑のブロック内にパスの始点又は終点がある場合、移動先の新たな始点又は終点として元の始点球は終点から辿れるスタイナー木の枝上の点を候補点とし、その候補点のうち、ブロック外にあり且つ線長が最短になる候補点を新たな始点又は終点に選んでブロックを通らない経路を見つけてパスを変更する。
【００３１】
第２修正過程は、ブロックを経路が通過する場合、始点および終点を変更することなく線長がなるべく増えないようにブロックの外を通る経路を選んでパスを変更する。
【００３２】
パス修正過程は、スタイナー木のパス集合に対し、制約条件に基づくスタイナー木の部分修正の終了後に、各パスの線長を改善するようにパスに変更する線長改善過程を備える。この線長改善過程の詳細は次の多順をもつ。
（１）処理対象とするパスに属する枝をスタイナー木から外して始点から辿れる枝の集合である第１部分木Ｔ１と、終点から辿れる枝の集合である第２部分木Ｔ２とに分ける。
（２）第１部分木Ｔ１の始点はそのままで、第２部分木Ｔ２の枝の中から始点からのマンハッタン距離が最短になる枝上の終点を見つけて第１候補パスを生成する。
（３）第２部分木Ｔ２の終点はそのままで、第１部分木Ｔ１の枝の中から前記終点からの距離が最短になる枝上の始点を見つけて第２候補パスを生成する。
（４）第１候補パスの距離ｄ１が第２候補パスの距離ｄ２以下で且つ対象パスの距離ｄ以下の場合、即ち、
ｄ１＜ｄ２、且つｄ１＜ｄ
の場合、終点を変更した第１候補パスを新パスとして集合パスを更新する。
（５）第１候補パスの距離ｄ２が第１候補パスの距離ｄ１以下で且つ対象パスの距離ｄ以下の場合、即ち、
ｄ２＜ｄ１、且つｄ２＜ｄ
の場合、終点を変更した第１候補パスを新パスとして記集合パスを更新する。
（６）第１および第２候補パスの距離ｄ１，ｄ２が対象パスの距離ｄ以上の場合、即ち、
ｄ１≧ｄ、且つｄ２≧ｄ
の場合、始点及び終点を変えずパスをそのまま維持する。
【００３３】
また本発明は、チップ上に配置されたセルのネット端子間の概略配線を取得する概略配線装置を提供する。この概略配線装置は、層、禁止、配線容量といった制約条件なしに生成したスタイナー木を初期解として生成するスタイナー木生成部と、スタイナー木を、少なくとも３本以上の枝の交点であるスタイナーポイントを値にもつ複数のパスに分割するパス集合を生成するパス集合生成部と、スタイナー木のパス集合につき、前記制約条件を考慮したパスの修正により、線長がなるべく増えないようにスタイナー木の部分修正を繰り返して概略配線を得るパス修正部とで構成される。
【００３４】
概略配線装置のパス修正部は、スタイナー木のパス集合に対し、禁止領域を通るパスを、禁止領域を通らないパスに変更する禁止領域迂回処理部と、スタイナー木のパス集合に対し、配線容量を越える配線数の配線混雑領域を通るパスを、配線容量以下の配線数となるように、配線混雑領域を通らないパスに変更する配線混雑領域迂回処理部と、スタイナー木のパス集合に対し、制約条件に基づくスタイナー木の部分修正の終了後に、各パスの線長を改善するようにパスに変更する線長改善処理部とを備える。
【００３５】
また本発明は、チップ上に配置されたセルのネット端子間の概略配線を取得する概略配線処理プログラムを格納したコンピュータ読取り可能な記録媒体を提供する。
【００３６】
この記録媒体は、層、禁止、配線容量といった制約条件なしに生成したスタイナー木を初期解として生成するスタイナー木生成モジュールと、スタイナー木を、少なくとも３本以上の枝の交点であるスタイナーポイントを値にもつ複数のパスに分割するパス集合を生成するパス集合生成モジュールと、スタイナー木のパス集合につき、制約条件を考慮したパスの修正により、線長がなるべく増えないようにスタイナー木の部分修正を繰り返して概略配線を得るパス修正モジュールとを備える。
【００３７】
また記録媒体のパス修正モジュールは、スタイナー木のパス集合に対し、禁止領域を通るパスを、前記禁止領域を通らないパスに変更する禁止領域迂回処理モジュールと、スタイナー木のパス集合に対し、配線容量を越える配線数の配線混雑領域を通るパスを、配線容量以下の配線数となるように配線混雑領域を通らないパスに変更する混雑領域迂回処理モジュールと、前記スタイナー木のパス集合に対し、前記制約条件に基づくスタイナー木の部分修正の終了後に、各パスの線長を改善するようにパスに変更する線長改善処理モジュールと備える。
【００３８】
このような本発明の概略配線方法におけるスタイナー木の修正のための計算時間は、端子数Ｎのネットに対してＯ｛Ｎ2（ｌｏｇＮ）2｝程度で済む。また初期解としてのスタイナー木の生成と修正を合わせた計算時間は、スタイナー木生成アルゴリズムにもよるが、Ｏ（Ｎ3ｌｏｇＮ）程度である。端子数は高々１０2であり、その場合、計算時間は１０8となるが、一般の回路では、数百端子もあるようなネットは、全ネット数の数％である。また、パスの構造を作るのに必要なメモリ容量はＯ（Ｎ）である。
【００３９】
一方、グリッドサイズは１０6から１０8程度である。これに対し迷路法はグリッドサイズを（ｈ×ｗ）とすると計算時間はＯ（ｈ×ｗ）であり、この計算をネットの数だけ行なうことになる。また、グリッドサイズ分のラベル値を保存するメモリが必要となる。その結果、本発明によって計算時間と使用メモリ量の小さい概略配線が実現される。
【発明を実施するための最良の形態】
【００４０】
図５は本発明の概略配線が使用されるコンピュータ支援のＬＳＩまたはＶＬＳＩの自動設計システムのブロック図である。この自動設計システムは、論理設計システム１０とレイアウト設計システム１４で構成される。論理設計システム１０は設計対象となる大規模集積回路の動作内容を表わす情報を入力とし、ライブラリに登録されているセルとセル間の接続情報で表現した論理的な接続情報であるネットリストデータ１２を生成する。
【００４１】
レイアウト設計システム１４は、論理設計システム１０で生成されたネットリストデータ１２に基づき、チップ上でのセルの配置と、配置したセル間の配線処理を行って、レイアウト設計データ２４を生成する。このためレイアウト設計システム１４には、セル配置システム１６と配線システム１８が設けられる。配線システム１８はグローバルルーチングとして知られた概略配線装置２０と、ディテールルーチングとして知られた詳細配線装置２２を備え、本発明の概略配線は概略配線装置２０に適用される。
【００４２】
図６は、図５の概略配線装置２０の機能ブロック図である。図６において、概略配線装置２０に対しては入力部２６が設けられ、図５の論理設計システム１０で作成されたネットリストデータ１２に基づくネットＮ１〜Ｎｎの端子位置３２、配線禁止領域３４及び層情報３６のデータが入力される。概略配線装置２０はスタイナー木作成部３８、パス集合生成部４０、パス修正部４２、更にパスリスト格納部５２を備える。パス修正部４２は禁止領域迂回処理部４４、配線混雑領域迂回処理部４６、線長改善処理部４８、層配置処理部５０、第１修正部５２及び第２修正部５６で構成される。
【００４３】
この概略配線装置２０は、ネットＮ１〜Ｎｎの端子位置に基づき、制約なしで生成したスタイナー木を初期解とし、配線禁止領域、配線混雑領域、層配置等の制約を考慮するようにスタイナー木の部分修正を行って、図１のような迷路法の障害物を考慮した概略配線と同等の質を持つ概略配線の結果を取得する。この本発明の概略配線装置２０におけるスタイナー木の部分修正に必要な計算は、基本的には座標計算であり、計算時間と使用メモリ量はネットの端子数Ｎに依存する。したがって、大規模な回路では配線領域を操作する迷路法と比較し、本発明の概略配線は計算時間と使用メモリ量において大きく有利になる。
【００４４】
概略配線装置２０におけるスタイナー木の初期解の制約を考慮した部分修正の結果得られた概略配線は、出力部３０にネットＮ１〜Ｎｎの配線木Ｔ１〜Ｔｎ５８として出力される。
【００４５】
図７は、図６の概略配線装置２０における本発明の概略配線処理のフローチャートである。まずステップＳ１で、ネットリスト、セルレイアウト情報及び設計ルールを読み込む。次にステップＳ２で処理カウンタｉをｉ＝１に初期化した後、ステップＳ３で処理カウンタｉ１で指定されるネットＮｉ＝Ｎ１について、層配線禁止領域、配線容量の制約なしで、ネットＮ１のスタイナー木Ｔ１を図２のスタイナー木生成部３８により生成し、この制約なしで生成したスタイナー木Ｔ１を概略配線問題の初期解とする。
【００４６】
図８は、図７のステップＳ３における制約なしで生成したネットＮｉのスタイナー木Ｔｉであり、グリットグラフ上に４つの端子ｔ１，ｔ２，ｔ３，ｔ４をもつスタイナー木Ｔｉが生成されている。このスタイナー木Ｔｉの生成アルゴリズムは、例えばＪ．Ｃｏｎｇ  ｅｔ  ａｌ．：“Ｔｏｐｏｌｏｇｙ  ｏｐｔｉｍｉｚａｔｉｏｎ  ｆｏｒ  ｔｏｔａｌ  ｗｉｒｅｌｅｎｇｔｈ  ｍｉｎｉｍｉｚａｔｉｏｎｔ”，ＩＮＴＥＧＲＡＴＩＯＮ，ｔｈｅ  ＶＬＳＩ  Ｊｏｕｒｎａｌ  ２１（１９９６）１−９４，Ｓｅｃｔｉｏｎ  ３．１，ｐｐ．１７−２１，ＥＬＳＥＶＩＥＲ，１９９６，に記載される。
【００４７】
次に図７のステップＳ４で、ステップＳ３で生成したスタイナー木Ｔ１の初期解を対象に、スタイナー木Ｔ１上の３本以上の枝の交点をスタイナーポイントとするサブツリーの集合でなるパス集合Ｓｉ＝（Ｐｉ）を生成する。
【００４８】
図９は、図７のステップＳ４におけるサブツリー集合としてのパス集合の生成処理の説明図であり、図８のスタイナー木６０を対象としている。このスタイナー木６０について、まず３本以上の枝の交点となるスタイナーポイントを求める。この場合、２つのスタイナーポイントｓ１，ｓ２が求まる。本発明にあっては、スタイナーポイントｓ１，ｓ２を根に持つようなサブツリーをパスと呼ぶ。このため、パスは次の要素で構成される。
（１）パスの始点：スタイナーポイントか元のスタイナー木の葉（端子）
（２）パスの終点：スタイナーポイントか元のスタイナー木の葉（端子）
（３）始点から終点への経路：枝のリスト
このような要素で構成されるパスとして、図９のサブツリーの集合にあっては、５つのパスｐ１〜ｐ５に分割することができる。例えばパスｐ１は端子ｔ１をパスの始点とし、またスタイナーポイントｓ１をパスの終点とし、始点ｔ１と終点ｓ１の経路として枝ｅ１を持つ。このようにスタイナーポイントｓ１，ｓ２の設定で生成されたパスの集合は、図１０のようにパスリスト５２として格納され、このパスリスト５２が生成されたスタイナー木を表現している。
【００４９】
スタイナー木からパス集合を生成する処理は、端子数Ｎのときスタイナーポイントの数はＯ（Ｎ）であり、スタイナー木の枝数をｅnとすると、パスへの分割の計算時間は各枝の端点がスタイナーポイントであるかどうかを決定する操作で抑制され、計算時間はＯ（ｅn2）となる。またスタイナー木の枝数ｅnはＯ（Ｎ）であり、パスへの分割の計算時間はＯ（ｅn2）となる。更に、生成されるパスの個数はＯ（Ｎ）で抑えられる。
【００５０】
再びステップＳ３を参照するに、ステップＳ４でスタイナー木を表わすパス集合が生成できたならば、ステップＳ５で配線禁止領域を迂回したスタイナー木Ｔｉの修正を実行し、ステップＳ６で配線混雑領域を考慮したスタイナー木Ｔｉの修正を実行し、更にステップＳ７で、修正の済んだスタイナー木Ｔｉの線長改善を行い、最終的にステップＳ８で各層への枝の割当てを行った後、ステップＳ９でネットＮｉのスタイナー木Ｔｉを配線源として出力する。そしてステップＳ１０で処理カウンタｉを１つインクリメントした後、ステップＳ１１で処理カウンタｉが最後のネット数ｎに達するまで、ステップＳ３からの処理を繰り返す。
【００５１】
ここで、ステップＳ５及びＳ６のパス集合で表現されたスタイナー木Ｔｉの修正処理は、次の２つの修正ルールを使用して修正される。
【００５２】
（修正ルール１）
修正ルール１はパスの線長が元のスタイナー木に比べて増えないように、パスの始点，終点を変更する。これに伴い、途中の経路も変わる。新しい始点の候補は、パスの元の始点から辿れる全てのスタイナー木の枝上の点（グリッドグラフ上の頂点）となる。同様に新しい終点の候補は、パスの元の終点から辿ることのできる全てのスタイナー木の枝上の点となる。パスの線長が元のスタイナー木に比べて増えないようにするためには、新しい始点または終点の候補のうち、制約を満たし且つ線長が最短になるような候補点を選ぶ。このような候補点がない場合は、制約を満たす候補点を選ぶ。この場合には線長が増えることになる。パスの修正後は、スタイナー木の構造が変わってスタイナーポイントが変わるため、スタイナー木を構成する全てのパスを再計算する必要がある。この修正ルール１における１本のパスについての修正に要する計算時間はＯ（ｅn）＝Ｏ（Ｎ）である。
【００５３】
（修正ルール２）
修正ルール２はパスの線長が元のスタイナー木に比べて増えないように、パスの始点と終点は変えずに途中の経路だけを変更する。途中の経路の変更でパスの線長が元のスタイナー木に比べて増えないようにするためには、パスの始点と終点を囲む矩形の中を通る経路を選択すればよい。配線禁止等の制約で始点と終点を囲む矩形の中を通ることができない場合は、線長は増えることになる。この修正ルール２の計算時間は、パスの始点と終点を囲む矩形の中の経路パターンをいくつか決めておくことにより、計算時間をＯ（１）で抑えることができる。
【００５４】
図１１は、図７のステップＳ５の配線禁止領域を迂回したスタイナー木の修正処理のフローチャートである。この配線禁止領域迂回処理は、図６のパス修正部４２に設けている禁止領域迂回処理部４４、修正ルール１の修正処理を行う第１修正部５４、及び修正ルール２の修正処理を行う第２修正部５６の機能で実現される。
【００５５】
まずステップＳ１で、例えば図１０のようなパスリスト５２のパス集合で表現されたスタイナー木の各パスにつき、その始点，終点及び経路と、配線禁止領域の関係を判定する。即ち、パスの始点，終点及び経路が配線禁止領域を通るか否か調べる。ステップＳ２でパスの始点または終点が禁止領域にあることを判別すると、ステップＳ３に進み、パス修正ルール１により禁止領域の始点または終点を禁止領域外に移動する。この始点または終点を移動すると、スタイナー木が変化するため、ステップＳ４でパス集合を再度生成する更新を行う。一方、ステップＳ２でパスの始点または終点が禁止領域になければ、ステップＳ５に進み、パスの経路が禁止領域を通過するか否かチェックし、禁止領域を通過していればステップＳ６に進み、パス修正ルール２により、禁止領域を通らない経路に変更する。更に、ステップＳ２でパスの始点，終点が禁止領域になく、且つステップＳ５でパスの経路も禁止領域を通過していない場合には、パスの修正は行わない。このステップＳ１〜Ｓ６の処理を、ステップＳ７でスタイナー木の全てのパスの処理が済むまで繰り返す。
【００５６】
図１２は、図１１の配線禁止領域迂回処理の具体的な処理の説明図である。図１２（Ａ）は図１０のパスリスト５２のパス集合で表現されたスタイナー木であり、パスｐ３が配線禁止領域６２上を通っていたとする。この配線禁止領域６２を通るパスｐ３を、線長をなるべく増やさないようにしながら配線禁止領域６２を迂回するパスに変更するためには、パスの始点ｓ１の変更を必要とする。
【００５７】
パスの始点ｓ１の変更を伴う修正は修正ルール１により行う。修正ルール１は新しい始点の候補として、元のパスの始点ｓ１から辿ることのできる全てのスタイナー木の枝上の点、即ち図１２（Ｂ）のグリッドグラフ頂点ｓ１１，ｓ１２，ｓ１３、更に端子ｔ１，ｔ４を含む点となる。この４つの新しい始点の候補点ｔ１，ｓ１１，ｓ１２，ｓ１３，ｔ４のうち、配線禁止領域６２を通らないという制約を満たし且つ線長が最短となる点は、候補点ｓ１１である。そこで、候補点ｓ１１を新たなパスｐ３の始点とする図１２（Ｃ）のパスｐ３を生成する。この修正後のパスｐ３は、始点ｓ１１、終点ｓ２、枝ｅ４１，ｅ４２で構成され、スタイナーポイントが修正前のｓ１から新たな始点としてのスタイナーポイントｓ１１に変化してスタイナー木の構造が変わったことから、スタイナー木を構成する全てのパスについて再計算を行って、図１０のパスリストの内容を更新する。
【００５８】
ここで図１１の配線禁止迂回処理にあっては、ステップＳ２でパスの始点または終点が禁止領域にあることを条件に、ステップＳ３でパス修正ルール１による修正を行っているが、図１２（Ａ）のパスｐ３の始点ｓ１は配線禁止領域６２にはなく、配線禁止領域６２の外にあり、パスｐ３の枝ｅ４が配線禁止領域６２を通っている。しかしながら、始点ｓ１を変更せずに枝ｅ４の経路を配線禁止領域６２の外に変更するためには、始点ｓ１の次の候補点となるグリッドグラフ上の頂点が配線禁止領域６２の外になければならない。しかし、図１２（Ａ）の場合には、始点ｓ１の次のグリッドグラフ上の頂点６６が配線禁止領域６２の中にあり、このため枝ｅ４による経路変更による配線禁止領域６２の迂回はできない。したがって、この場合には修正ルール１に従って始点ｓ１を変更する。即ち配線
禁止迂回処理にあっては、パスの始点または終点に隣接する枝上のグリッドグラフ頂点が配線禁止領域にある場合には、始点または終点が配線禁止領域にあるものと見做して修正ルール１を適用する。
【００５９】
図１２（Ａ）のパスｐ３の終点ｓ２については、枝ｅ４上の隣接するグリッドグラフ頂点６８は配線禁止領域６２の外にあり、したがって、この場合には終点ｓ２を変更する必要はない。
【００６０】
図１３及び図１４は、図７のステップＳ６の配線混雑領域を配慮したスタイナー木の修正処理即ち配線混雑領域迂回処理のフローチャートである。この配線混雑領域迂回処理は、図６のパス修正部４２に設けている配線混雑領域迂回処理部４６、第１修正部５４及び第２修正部５６の機能により実現される。
【００６１】
図１３において、まずステップＳ１で配線容量を考慮せずに生成した図８のようなスタイナー木の初期解を対象に、配線領域を適当な大きさのブロックに分割し、各ブロックごとに配線容量と配線混雑度を定義する。ここで配線容量及び配線混雑度は回路の性質等によって様々な定義が考えられるが、例えば配線容量はブロックを通過できる線分の最大値とし、また配線混雑度はブロックを現在通過している線分数とする。続いてステップＳ２において、特定のブロックを取り出し、その配線混雑度と配線容量を比較し、配線混雑度が配線容量を超えている場合には、ステップＳ３に進み、そのブロックを通過するパスを特定する。続いてステップＳ４で、配線混雑度が配線容量を超えているブロックを通過する特定のパスにつきパスの始点または終点はブロック内か否か判定する。ブロック内であればステップＳ５に進み、パス修正ルール１によりブロック内の始点または終点を外部に移動し、ブロックを通らない経路に変更する。このときブロックを通らない経路が得られたか否かステップＳ６でチェックし、もしブロックを通らない経路が見つからなければ、そのパスは元のままとする。
【００６２】
一方、ステップＳ４で始点または終点がブロック外であった場合には、図１４のステップＳ７に進み、パスの経路がブロックを通過するか否か判定する。パスの経路がブロックを通過する場合にはステップＳ８に進み、パス修正ルール２により、ブロックを通らない経路に変更する。この場合にも、ステップＳ９でブロックを通らない経路の有無をチェックし、もしブロックを通らない経路が見つからなければパスは元のままとする。更にステップＳ１０で、パスの始点と終点の両方がブロック内であった場合にはブロック外部へのパスの変更はできないことから、修正処理は行わない。
【００６３】
次のステップＳ１１にあっては、ステップＳ５のパス修正ルール１もしくはステップＳ８のパス修正ルール２により修正された変更後のパスを対象に、現在処理中のブロックの配線混雑度を再計算し、ステップＳ１２で、再計算した配線混雑度が配線容量以上か否かチェックし、配線容量を下回っていれば、そのブロックの配線混雑領域迂回処理は終了したとして、ステップＳ１３で全ブロックの処理済みを判別し、処理が済んでいれば再びステップＳ２からの処理を繰り返す。
【００６４】
一方、ステップＳ１２で、再計算した配線混雑度が配線容量以上であった場合には、そのブロックについて混雑が解消されていないことから、再びステップＳ３に戻り、ブロックを通過する次のパスを特定して、ステップＳ４からの修正処理を繰り返す。
【００６５】
図１５は、図１３及び図１４の配線混雑領域迂回処理の具体的な処理の説明図である。
【００６６】
図１５（Ａ）は、図１２（Ｃ）の配線禁止領域の迂回処理の修正が済んだスタイナー木６０であり、パスｐ２が配線混雑領域７０を通過していたとする。この配線混雑領域７０を通過するパスｐ２は、始点ｓ１１、終点ｔ４、枝ｅ３１，ｅ３２，ｅ３３で構成されており、始点ｓ１１及び終点ｔ４は配線混雑領域７０にないことから、修正ルール２によって線長をなるべく増やさないように経路を配線混雑領域７０の外とするようにパスを変更する。このパスｐ２の経路を線長を増やさないように配線混雑領域７０の外に変更するためには、図１５（Ｂ）のように、パスｐ２の始点ｓ１１と終点ｔ４を含む矩形領域６６を設定し、配線混雑領域７０を通過しないとする制約により矩形領域６６の中を通る枝ｅ３４，ｅ３５の経路を選択すればよい。これによって図１５（Ｃ）のような配線混雑領域７０を通らないパスｐ２に変更することができ、配線混雑領域７０の混雑度が低下し、規定の配線容量を満たすことができる。
【００６７】
図１６は、図７のステップＳ７のスタイナー木の線長改善処理のフローチャートである。この線長改善処理は、図６のパス修正部４２に設けた線長改善処理部４８の機能により実現される。まずステップＳ１で、処理対象としている修正済みのスタイナー木の中の任意のパスｐを選択し、その経路長ｄを導出する。次にステップＳ２で、選択したパスｐに属する枝をスタイナー木から外し、始点から辿ることのできる部分木Ｔ１と終点から辿ることのできる部分木Ｔ２に分割する。次にステップＳ３で、パスｐの始点はそのままで部分木Ｔ２の枝の中から始点に対するマンハッタン距離が最短となる枝上の点を終点として検索し、このようにして得られたパスをｐ１、経路長をｄ１とする。ここでマンハッタン距離とは２つの点を直線で結んだ距離のことである。
【００６８】
次のステップＳ４にあっては、逆にパスｐ２の終点はそのままで始点側の部分木Ｔ１の枝の中からマンハッタン距離が最短となる枝上の点を始点として検索し、そのパスをｐ２、経路長をｄ２とする。次にステップＳ５で、部分木Ｔ１，Ｔ２に分けて、ステップＳ３，Ｓ４でそれぞれ求めたパスｐ１，ｐ２に対し、パスｐ１の経路長ｄ１がパスｐ２の経路長ｄ２以下で且つ元のパスｐの経路長ｄ２以下のとき、ステップＳ６で終点を変更したパスｐ１を新しい線長を改善したパスｐとする。
【００６９】
またステップＳ５の条件が成立しなかった場合には、ステップＳ７で、ステップＳ４で求めたパスｐ２の経路長ｄ２について、ステップＳ３で求めたパスｐ１の経路長ｄ１より小さく且つ元のパスｐの経路長ｄより小さい条件が成立したならば、ステップＳ８で、始点を変更したパスｐ２を新しい線長改善されたパスｐとする。もちろん、ステップＳ５，Ｓ７のいずれの条件も成立しなければ、ステップＳ９でパスは変更しない。ステップＳ１０では、ステップＳ１〜Ｓ９の処理をスタイナー木の全パスについて終了したか否かチェックし、全パスの処理が終了するまで、ステップＳ１〜Ｓ９の処理を繰り返す。この修正済みのスタイナー木の各パスに対する線長改善処理によって、全体的な線長改善が図られる。
【００７０】
図１７は、図１６の線長改善処理の具体的な処理の説明図である。図１７（Ａ）は図１５（Ｃ）の配線混雑領域迂回処理が済んだスタイナー木６０であり、始点ｓ１１、終点ｔ４、枝ｅ３４，ｅ３５の経路を持つパスｐ２の線長改善を例にとると、まず図１７（Ｂ）のように、パスｐ２の経路を構成する枝ｅ３４、ｅ３５を破線のように外す。この枝ｅ３４、ｅ３５を外すことによって、スタイナー木６０を始点ｓ１１側の部分木Ｔ１と終点ｔ４側の部分木Ｔ２に分割する。
【００７１】
次にパスｐ２の始点ｓ１１はそのままで終点ｔ側の部分木Ｔ２の枝の中からマンハッタン距離が最短となる枝上の点を終点として検索し、これをパスｐ１１とし、経路長をｄ１とする。しかしながら、この場合のパスｐ１１は図１７（Ａ）の最初のパスｐ２と同じものになる。次にパスｐ２の終点ｔ４はそのままで始点ｓ１１側の部分木Ｔ１の枝の中からマンハッタン距離が最短となる枝上の点を始点として検索する。この場合には、始点ｓ１１側の部分木Ｔ１には端子ｔ１，ｔ２，ｄ３、スタイナーポイントｓ１１，ｓ２、更にグリッドグラフ頂点となる黒丸の点が候補点として存在することから、この中から新たなマンハッタン距離を最短とする始点を検索すると、端子ｔ３が検索され、この場合のパスをｐ２２、経路長をｄ２とする。この場合には、パスｐ２２の経路長ｄ２がパスｐ１１の経路長ｄ１より小さく且つ元のパスｐ２の経路長ｄよりも小さいことから、始点を変更したパスｐ２２が新しいパスｐ２として選択され、図１７（Ｃ）のようにパスｐ２を変更することによって線長改善が図られる。
【００７２】
図１８は、図７のステップＳ８でスタイナー木の部分修正および線長改善が終了した後に行われる各層への枝の割当て処理の具体例であり、図６のパス修正部４２に設けた層配置処理部５０の機能により実現される。
【００７３】
図１８（Ａ）は、図１７（Ｃ）の線長改善が行われたスタイナー木６０であり、予め入力された層情報に基づき、スタイナー木６０を図１８（Ｂ）のように第１層目と図１８（Ｃ）のように第２層目に割り当て、これに基づいて図６の出力部３０に示したように、ネットＮ１〜Ｎｎの配線木Ｔ１〜Ｔｎの概略配線の解として、次の詳細配線処理のために出力する。
【００７４】
尚、上記の実施形態は、制約なしで生成したスタイナー木の初期解の部分修正を、配線禁止領域、配線容量を考慮して修正した後に線長改善を行い、最終的に層配置するようにしているが、スタイナー木の修正として配線禁止領域の迂回または配線容量の考慮といった特定の制約についてのみ修正を行うようにしても、次の詳細処理での負担が軽減できる。
【００７５】
また本発明は、上記の実施形態に示した概略配線処理の手順を備えた概略配線プログラムを格納したコンピュータ読取可能な記録媒体を提供する。この記録媒体に格納された概略配線処理プログラムには、図６の概略配線装置２０の各部の処理機能が処理モジュールとして組み込まれている。
【００７６】
更に本発明は、その目的と利点を損なわない範囲で適宜の変形を含む。また本発明は、実施例に示した数値による限定は受けない。
【産業上の利用可能性】
【００７７】
以上説明してきたように本発明によれば、スタイナー木を初期解として制約を考慮するようにスタイナー木の部分修正を行うことで、既存の迷路法の障害物を考慮した概略配線と同質の結果をスタイナー木を利用した概略配線の解として得ることができる。これによって、次の詳細配線において層、禁止、配線容量等の制約を考慮した処理が必要なくなり、詳細配線での処理負担が軽減され、配線処理全体としての計算時間を低減し、より高速な自動設計が提供できる。
【００７８】
また本発明のスタイナー木の部分修正に必要な計算は基本的に座標計算であり、計算時間と使用メモリ量はネットの対比数に依存しており、グリッドサイズに計算時間と使用メモリ量が依存した迷路法に比べると、計算時間と使用メモリ量において大きく有利であり、この結果、計算時間と使用メモリ量の少ない概略配線が実現できる。
【図面の簡単な説明】
【００７９】
図１はグリッドグラフを用いた概略配線問題の説明図
図２は迷路法の説明図
図３は線分探索法の説明図
図４はスタイナー木を利用した方法の説明図
図５は本発明が適用されるＶＬＳＩ自動設計システムのブロック図
図６は本発明の概略配線装置の機能ブロック図
図７は本発明の概略配線処理のフローチャート
図８は本発明で初期解として生成するスタイナー木の説明図
図９は図８のスタイナー木をスタイナーポイントのパスに分割したサブスタイナ一木の説明図
図１０は図９のパス集合を示すパスリストの説明図
図１１は本発明の禁止領域迂回処理のフローチャート
図１２は本発明の禁止領域迂回処理の説明図
図１３は本発明の配線混雑領域迂回処理のフローチャート
図１４は図１３に続く本発明の配線混雑領域迂回処理のフローチャート
図１５は本発明の配線混雑領域迂回処理の説明図
図１６は本発明の配線長改善処理のフローチャート
図１７は本発明の配線長改善処理の説明図
図１８は本発明の層配置処理の説明図
【図１】
0004227304.tif 000002
【図２】
0004227304.tif 000003
【図３】
0004227304.tif 000004
【図４】
0004227304.tif 000005
【図５】
0004227304.tif 000006
【図６】
0004227304.tif 000007
【図７】
0004227304.tif 000008
【図８】
0004227304.tif 000009
【図９】
0004227304.tif 000010
【図１０】
0004227304.tif 000011
【図１１】
0004227304.tif 000012
【図１２】
0004227304.tif 000013
【図１３】
0004227304.tif 000014
【図１４】
0004227304.tif 000015
【図１５】
0004227304.tif 000016
【図１６】
0004227304.tif 000017
【図１７】
0004227304.tif 000018
【図１８】
0004227304.tif 000019