(57)【特許請求の範囲】
【請求項１】
コンピュータが、
一以上の配線層を含む配線領域に対して、それぞれ図形によって表現された複数のバスの経路を前記バス間で交差しないように生成する配線プラン生成手順と、
前記バスごとに、当該バスが接続される部品内からの当該バスの所属ネットごとの配線の引き出しの可否の検証を行う妥当性判定手順と、
前記妥当性判定手順によって全ての前記所属ネットが引き出せることが確認された前記バスの前記所属ネットを示す図形を前記配線領域に記録する配線プラン確定手順とを実行し、
前記妥当性判定手順によって少なくとも一部の前記所属ネットが引き出せないことが確認された前記バスについて前記配線プラン生成手順を再実行し、
前記妥当性判定手順は、
前記部品の少なくとも各ピン、各水平ピン間、各垂直ピン間、及び各対角ピン間を前記所属ネットの配線のボトルネック箇所とし、前記各ボトルネック箇所に水平ピン間、垂直ピン間、又は対角ピン間に応じた配線容量を付与するボトルネック配置手順と、
前記ボトルネック箇所ごとに入り口ノード及び出口ノードの二つのノードを生成するノード生成手順と、
それぞれの前記ボトルネック箇所について、同一の前記ボトルネック箇所内の前記入り口ノードから前記出口ノードへの有向枝を生成し、垂直又は水平方向に隣接する前記ボトルネック箇所間において一方の前記出口ノードから他方の前記入り口ノードへの有向枝を相互に生成し、前記対角ピン間のボトルネック箇所と当該対角ピン間の全ての斜め隣の前記ボトルネック箇所との間において一方の前記出口ノードから他方の前記入り口ノードへの有向枝を相互に生成し、生成された全ての有向枝に、当該有向枝によって接続される前記ノードが属する前記ボトルネック箇所に付与された前記配線容量の最小値を枝容量として付与する有向グラフ生成手順と
前記所属ネットごとに、配線の引き出し対象のピンに対応するボトルネック箇所の前記入り口ノードから配線の出口に係る前記ボトルネック箇所の前記出口ノードまでの間において、１以上の前記枝容量が付与された前記有向枝を使用して最短経路を探索する経路探索手順と、
探索された経路に使用された各有向枝に、経路に使用された使用回数を付与する使用回数付与手順と、
前記経路探索手順によって最短経路が探索された所属ネットの数に基づいて前記バスの配線の成否を判定する配線成否判定手順とを有し、
前記経路探索手順は、前記使用回数が前記枝容量を超えないように前記最短経路を探索する配線設計支援方法。
【請求項２】
前記妥当性判定手順は、
前記ボトルネック箇所の相対的な位置関係において外周に位置し前記使用回数が１以上の前記有向枝を前記入り口ノードから前記出口ノードへの有向枝として有する前記ボトルネック箇所の該出口ノードから前記引き出し対象のピンに対応するボトルネック箇所の出口ノードまでを前記使用回数が１以上の有向枝に沿って遡ることによって形成される経路を配線の概略経路として確定する概略経路確定手順を有し、
前記概略経路確定手順は、遡られた前記有向枝の前記使用回数を当該有向枝の遡りの回数に応じて減ずる請求項１記載の配線設計支援方法。
【請求項３】
前記概略経路確定手順は、前記外周に位置し前記使用回数が１以上の前記有向枝を前記入り口ノードから前記出口ノードへの有向枝として有する前記ボトルネック箇所が複数有るときは、前記外周における一定方向に従って、遡りを開始する前記ボトルネック箇所を順番に選択し、前記一定方向に応じて、遡りにおいて優先させる前記有向枝を選択する請求項２記載の配線設計支援方法。
【請求項４】
前記妥当性判定手順は、前記経路探索手順より前に、
前記配線の引き出しの可否の検証対象とされている第一の前記バス以外の第二の前記バスの所属ネットの引き出し対象のピンのピン間の第一の前記ボトルネック箇所、前記第二のバスの前記配線の出口の第二の前記ボトルネック箇所、及び前記第一のボトルネック箇所と前記第二のボトルネック箇所とを接続する前記ボトルネック箇所の前記配線容量を一時的に０とする防護壁生成手順を有する請求項１乃至３いずれか一項記載の配線設計支援方法。
【請求項５】
コンピュータに、
一以上の配線層を含む配線領域に対して、それぞれ図形によって表現された複数のバスの経路を前記バス間で交差しないように生成する配線プラン生成手順と、
前記バスごとに、当該バスが接続される部品内からの当該バスの所属ネットごとの配線の引き出しの可否の検証を行う妥当性判定手順と、
前記妥当性判定手順によって全ての前記所属ネットが引き出せることが確認された前記バスの前記所属ネットを示す図形を前記配線領域に記録する配線プラン確定手順とを実行させ、
前記妥当性判定手順によって少なくとも一部の前記所属ネットが引き出せないことが確認された前記バスについて前記配線プラン生成手順を再実行し、
前記妥当性判定手順は、
前記部品の少なくとも各ピン、各水平ピン間、各垂直ピン間、及び各対角ピン間を前記所属ネットの配線のボトルネック箇所とし、前記各ボトルネック箇所に水平ピン間、垂直ピン間、又は対角ピン間に応じた配線容量を付与するボトルネック配置手順と、
前記ボトルネック箇所ごとに入り口ノード及び出口ノードの二つのノードを生成するノード生成手順と、
それぞれの前記ボトルネック箇所について、同一の前記ボトルネック箇所内の前記入り口ノードから前記出口ノードへの有向枝を生成し、垂直又は水平方向に隣接する前記ボトルネック箇所間において一方の前記出口ノードから他方の前記入り口ノードへの有向枝を相互に生成し、前記対角ピン間のボトルネック箇所と当該対角ピン間の全ての斜め隣の前記ボトルネック箇所との間において一方の前記出口ノードから他方の前記入り口ノードへの有向枝を相互に生成し、生成された全ての有向枝に、当該有向枝によって接続される前記ノードが属する前記ボトルネック箇所に付与された前記配線容量の最小値を枝容量として付与する有向グラフ生成手順と
前記所属ネットごとに、配線の引き出し対象のピンに対応するボトルネック箇所の前記入り口ノードから配線の出口に係る前記ボトルネック箇所の前記出口ノードまでの間において、１以上の前記枝容量が付与された前記有向枝を使用して最短経路を探索する経路探索手順と、
探索された経路に使用された各有向枝に、経路に使用された使用回数を付与する使用回数付与手順と、
前記経路探索手順によって最短経路が探索された所属ネットの数に基づいて前記バスの配線の成否を判定する配線成否判定手順とを有し、
前記経路探索手順は、前記使用回数が前記枝容量を超えないように前記最短経路を探索する配線設計支援プログラム。
【請求項６】
一以上の配線層を含む配線領域に対して、それぞれ図形によって表現された複数のバスの経路を前記バス間で交差しないように生成する配線プラン生成手段と、
前記バスごとに、当該バスが接続される部品内からの当該バスの所属ネットごとの配線の引き出しの可否の検証を行う妥当性判定手段と、
前記妥当性判定手段によって全ての前記所属ネットが引き出せることが確認された前記バスの前記所属ネットを示す図形を前記配線領域に記録する配線プラン確定手段とを実行し、
前記妥当性判定手段によって少なくとも一部の前記所属ネットが引き出せないことが確認された前記バスについて前記配線プラン生成手段を再実行し、
前記妥当性判定手段は、
前記部品の少なくとも各ピン、各水平ピン間、各垂直ピン間、及び各対角ピン間を前記所属ネットの配線のボトルネック箇所とし、前記各ボトルネック箇所に水平ピン間、垂直ピン間、又は対角ピン間に応じた配線容量を付与するボトルネック配置手段と、
前記ボトルネック箇所ごとに入り口ノード及び出口ノードの二つのノードを生成するノード生成手段と、
それぞれの前記ボトルネック箇所について、同一の前記ボトルネック箇所内の前記入り口ノードから前記出口ノードへの有向枝を生成し、垂直又は水平方向に隣接する前記ボトルネック箇所間において一方の前記出口ノードから他方の前記入り口ノードへの有向枝を相互に生成し、前記対角ピン間のボトルネック箇所と当該対角ピン間の全ての斜め隣の前記ボトルネック箇所との間において一方の前記出口ノードから他方の前記入り口ノードへの有向枝を相互に生成し、生成された全ての有向枝に、当該有向枝によって接続される前記ノードが属する前記ボトルネック箇所に付与された前記配線容量の最小値を枝容量として付与する有向グラフ生成手段と
前記所属ネットごとに、配線の引き出し対象のピンに対応するボトルネック箇所の前記入り口ノードから配線の出口に係る前記ボトルネック箇所の前記出口ノードまでの間において、１以上の前記枝容量が付与された前記有向枝を使用して最短経路を探索する経路探索手段と、
探索された経路に使用された各有向枝に、経路に使用された使用回数を付与する使用回数付与手段と、
前記経路探索手段によって最短経路が探索された所属ネットの数に基づいて前記バスの配線の成否を判定する配線成否判定手段とを含み、
前記経路探索手段は、前記使用回数が前記枝容量を超えないように前記最短経路を探索する配線設計支援装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、配線設計支援方法、配線設計支援プログラム、及び配線設計支援装置に関し、特に集積回路に関する配線を支援する配線設計支援方法、配線設計支援プログラム、及び配線設計支援装置に関する。
【背景技術】
【０００２】
ＢＧＡ（Ball Grid Array）等の集積回路パッケージ同士の配線をプリント配線板（ＰＣＢ）上で配線する作業や、集積回路パッケージ内部の配線作業は、概略配線と詳細配線とに大別される。概略配線では、各配線がどのピン間を通過するか、及び各配線の相対的な位置関係等が決定される。詳細配線では、概略配線の結果に基づいて、実際の配線経路が決定される。なお、以下において、概略配線において作成される配線経路を「概略経路」という。
【０００３】
近年の配線設計では、高速動作を実現するために、同じタイミング制約のある回路素子間のネットをグループにして単層のバス（束）配線で接続することが多い。また、製品コストの面から、配線スペースを効率よく使い、配線に必要な層数を抑制するために同部品間のネットをバス配線することもある。バス配線は配線対象のほとんどの区間に適用されるようになってきており、概略配線段階でバス配線の収容性を高精度に見積もることの重要性が増している。
【０００４】
１つのバス（ネットグループ）は、数ネット〜６４ネット程度、又はそれ以上のネット数を有する。バス配線の概略経路の決定に際しては、通常、バスの所属ネット毎に分離して概略経路を求めるようなことは行われない。例えば、所属する全ネット数×（配線幅＋配線間隔）の幅を使い、始終点はそれぞれピン集合の重心で代表するなどしてまとめた状態で概略経路を求めるのが一般的である。
【０００５】
また、近年では、集積回路の大規模化や高集積化に伴って、配線設計に必要な配線層が増加している。配線層の増加は、製造コストの増加につながる。配線層数を少なく抑えるには、各バスの概略経路をどの層に配線すべきかを、他のバスの概略経路を考慮しつつ最適化する必要がある。従来、概略配線の段階で、使用層数を抑制しつつ全部のバスの概略経路と配線層を決める技術が、例えば、特許文献１に開示されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００９−３０１３５１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、特許文献１に開示された技術では、ネットグループ（上記のバス）の占有領域の見積もり精度が適切でないと、妥当な結果を得られない可能性がある。妥当な結果が得られない場合、その結果は、詳細設計に影響する。
【０００８】
すなわち、詳細配線において困難なところは、ネットグループのピン集合から部品外周までの配線の引き出し部分にある。この部分は配線に使える領域がピン間に数本分ずつと僅少なため、概略経路においてネットグループの占有領域の見積もりが過小であれば未配線を生じる可能性がある。一方、当該占有領域の見積もりが過大であれば一部のネットグループを本来であれば不要であった層に締め出すことになる。
【０００９】
本発明は、上記の点に鑑みてなされたものであって、バスの配線経路の設計精度を向上させることのできる配線設計支援方法、配線設計支援プログラム、及び配線設計支援装置の提供を目的とする。
【課題を解決するための手段】
【００１０】
そこで上記課題を解決するため、配線設計支援方法は、コンピュータが、一以上の配線層を含む配線領域に対して、それぞれ図形によって表現された複数のバスの経路を前記バス間で交差しないように生成する配線プラン生成手順と、前記バスごとに、当該バスが接続される部品内からの当該バスの所属ネットごとの配線の引き出しの可否の検証を行う妥当性判定手順と、前記妥当性判定手順によって全ての前記所属ネットが引き出せることが確認された前記バスの前記所属ネットを示す図形を前記配線領域に記録する配線プラン確定手順とを実行し、前記妥当性判定手順によって少なくとも一部の前記所属ネットが引き出せないことが確認された前記バスについて前記配線プラン生成手順を再実行する。
【発明の効果】
【００１１】
開示された技術によれば、バスの配線経路の設計精度を向上させることができる。
【図面の簡単な説明】
【００１２】
【図１】本発明の実施の形態における配線設計支援装置のハードウェア構成例を示す図である。
【図２】本発明の実施の形態における配線設計支援装置の機能構成例を示す図である。
【図３】配線設計支援装置による処理手順の概要を説明するためのフローチャートである。
【図４】配線プランの生成処理の処理手順の一例を説明するためのフローチャートである。
【図５】配線領域情報記憶部の構成例を示す図である。
【図６】障害物情報記憶部の構成例を示す図である。
【図７】部品情報記憶部の構成例を示す図である。
【図８】バス情報記憶部の構成例を示す図である。
【図９】ネット情報記憶部の構成例を示す図である。
【図１０】配線幅情報記憶部の構成例を示す図である。
【図１１】本実施の形態における配線領域の例を示す図である。
【図１２】バス経路矩形情報記憶部の構成例を示す図である。
【図１３】バス経路の探索後の配線領域の状態の一例を示す図である。
【図１４】交差情報テーブルの一例を示す図である。
【図１５】バス経路の交差関係を示す無向グラフの一例を示す図である。
【図１６】各バス経路に対する層の割り当て結果の例を示す図である。
【図１７】妥当性判定部の機能構成例を示す図である。
【図１８】部品に設けられたボトルネックのモデル化の例を示す図である。
【図１９】配線プランの妥当性の判定処理の処理手順を説明するためのフローチャートである。
【図２０】着目部品及び着目層に係るバスの引き出し問題の生成処理を説明するためのフローチャートである。
【図２１】有向グラフ生成部によって生成される有向グラフの例を示す図である。
【図２２】有向グラフ生成部による有向グラフの生成処理の処理手順を説明するためのフローチャートである。
【図２３】ボトルネック箇所にセルが生成された状態を示す図である。
【図２４】セルデータの構成例を示す図である。
【図２５】ノードが生成された状態を示す図である。
【図２６】ノードデータの構成例を示す図である。
【図２７】セルの生成処理の処理手順を説明するためのフローチャートである。
【図２８】偶数行偶数列に位置するセルのセルデータに対する処理の処理手順を説明するためのフローチャートである。
【図２９】ピン情報記憶部の構成例を示す図である。
【図３０】セルの容量の算出処理の処理手順を説明するためのフローチャートである。
【図３１】配線ルールを規定するパラメータを説明するための図である。
【図３２】間隙ルール情報記憶部の構成例を示す図である。
【図３３】水平方向に隣接するピン間の配線容量の算出処理の処理手順を説明するためのフローチャートである。
【図３４】対角ピン間の配線容量の算出処理の処理手順を説明するためのフローチャートである。
【図３５】空きピンの配線容量の算出処理の処理手順を説明するためのフローチャートである。
【図３６】ノードの生成処理の処理手順を説明するためのフローチャートである。
【図３７】湧き出しノード及び流入ノードの生成処理の処理手順を説明するためのフローチャートである。
【図３８】有向枝の生成処理の処理手順を説明するためのフローチャートである。
【図３９】セルの入り口ノードから出口ノードへの有向枝を示す図である。
【図４０】セルの入り口ノードから出口ノードへの有向枝の生成処理の処理手順を説明するためのフローチャートである。
【図４１】枝データの構成例を示す図である。
【図４２】隣接セル間の出口ノードから入り口ノードへの有向枝の生成処理の処理手順を説明するためのフローチャートである。
【図４３】東西方向に隣接するセルの出口ノードから入り口ノードへの有向枝を示す図である。
【図４４】南北方向に隣接するセルの出口ノードから入り口ノードへの有向枝を示す図である。
【図４５】斜め隣接セルのノード間の有向枝を示す図である。
【図４６】東西方向に隣接するセルの出口ノードから入り口ノードへの有向枝の生成処理の処理手順を説明するためのフローチャートである。
【図４７】南北方向に隣接するセルの出口ノードから入り口ノードへの有向枝の生成処理の処理手順を説明するためのフローチャートである。
【図４８】斜め隣接セルのノード間の有向枝の生成処理の処理手順を説明するためのフローチャートである。
【図４９】北西のセルとの有向枝の生成処理の処理手順を説明するためのフローチャートである。
【図５０】北東のセルとの有向枝の生成処理の処理手順を説明するためのフローチャートである。
【図５１】南西のセルとの有向枝の生成処理の処理手順を説明するためのフローチャートである。
【図５２】南東のセルとの有向枝の生成処理の処理手順を説明するためのフローチャートである。
【図５３】防護壁の意義を説明するための図である。
【図５４】防護壁の一例を示す図である。
【図５５】防護壁の生成処理を説明するためのフローチャートである。
【図５６】セル行列の外周に位置するセルに対して外周方向に隣接するセルを説明するための図である。
【図５７】リーフセルを説明するための図である。
【図５８】配線脱出口部分に係るリーフセルの伸張を示す図である。
【図５９】セル行列の外周に位置するセルについて右回り又は左回りに隣接セルへのポインタの設定処理を説明するためのフローチャートである。
【図６０】セル行列の外周のセルの中で着目矩形に包含されるセルをリーフセルとする処理の処理手順を説明するためのフローチャートである。
【図６１】特定の行又は列において着目矩形に包含されるセルをリーフセルとする処理の処理手順を説明するためのフローチャートである。
【図６２】着目バスに関する配線脱出口部分のリーフセルの伸張処理を説明するためのフローチャートである。
【図６３】配線脱出口情報記憶部の構成例を示す図である。
【図６４】左側へのリーフセルの伸張の試行処理の処理手順を説明するためのフローチャートである。
【図６５】右側へのリーフセルの伸張の試行処理の処理手順を説明するためのフローチャートである。
【図６６】セル行列の外周セルの一つ内側のセルの探索処理を説明するためのフローチャートである。
【図６７】伸張先のリーフセルの一つ内側のセルに基づいて配線脱出口部分の容量を更新する処理の処理手順を説明するためのフローチャートである。
【図６８】リーフセルの連結による防護壁の生成処理の処理手順を説明するためのフローチャートである。
【図６９】リーフセルの連結による防護壁の生成処理の処理手順を説明するためのフローチャートである。
【図７０】防護壁線分データの構成例を示す図である。
【図７１】他の防護壁ツリーとの干渉の有無の検査処理を説明するためのフローチャートである。
【図７２】着目部品及び着目層に係るバスの所属ネットの引き出し経路の生成処理の処理手順を説明するためのフローチャートである。
【図７３】経路探索部によって探索される経路の例を示す図である。
【図７４】概略経路確定部によって確定された概略経路の例を示す図である。
【図７５】湧き出しノードから引き出し対象セルへの有向枝の生成処理の処理手順を説明するためのフローチャートである。
【図７６】出口セルから流入ノードへの有向枝の生成処理の処理手順を説明するためのフローチャートである。
【図７７】有向グラフにおける最短経路の探索処理の処理手順を説明するためのフローチャートである。
【図７８】経路探索のラベリング処理の処理手順を説明するためのフローチャートである。
【図７９】バックトレース処理の処理手順を説明するためのシーケンス図である。
【図８０】有向枝の向きに逆行して経路探索された状態を示す模式図である。
【図８１】有向枝の向きに逆行して経路探索された場合にバックトレースが実行された結果の例を示す模式図である。
【図８２】概略経路の確定処理を説明するためのフローチャートである。
【図８３】引き出し順データの構成例を示す図である。
【図８４】セル行列の東側を出口とする探索経路に基づく概略経路の確定処理の処理手順を説明するためのフローチャートである。
【図８５】線分データの生成処理の処理手順を説明するためのフローチャートである。
【図８６】線分データの構成例を示す図である。
【図８７】線分データの保存処理の処理手順を説明するためのフローチャートである。
【図８８】セル行列の北側を出口とする探索経路に基づく概略経路の確定処理の処理手順を説明するためのフローチャートである。
【図８９】セル行列の南側を出口とする探索経路に基づく概略経路の確定処理の処理手順を説明するためのフローチャートである。
【図９０】セル行列の西側を出口とする探索経路に基づく概略経路の確定処理の処理手順を説明するためのフローチャートである。
【図９１】着目バスに関する配線の引き出しの成否の判定処理及び引き出し経路情報の保存処理の処理手順を説明するためのフローチャートである。
【図９２】セル系線分データの構成例を示す図である。
【図９３】引き出し経路データの構成例を示す図である。
【図９４】線分データからセル系線分データへの変換処理の処理手順を説明するためのフローチャートである。
【図９５】出口セルの追加処理の処理手順を説明するためのフローチャートである。
【図９６】妥当性が肯定された配線プランの確定処理の処理手順を説明するためのフローチャートである。
【図９７】バス経路矩形情報の削除処理の処理手順を説明するためのフローチャートである。
【図９８】部品内に含まれるバス経路矩形情報の削除処理の処理手順を説明するためのフローチャートである。
【図９９】引き出し線の障害物としての登録処理の処理手順を説明するためのフローチャートである。
【図１００】確定された配線プランの出力処理の処理手順を説明するためのフローチャートである。
【図１０１】実寸系線分データの構成例を示す図である。
【図１０２】引き出し経路データから実寸系線分データのリストへの変換処理の処理手順を説明するためのフローチャートである。
【発明を実施するための形態】
【００１３】
以下、図面に基づいて本発明の実施の形態を説明する。図１は、本発明の実施の形態における配線設計支援装置のハードウェア構成例を示す図である。図１の配線設計支援装置１０は、それぞれバスBで相互に接続されているドライブ装置１００と、補助記憶装置１０２と、メモリ装置１０３と、ＣＰＵ１０４と、インタフェース装置１０５と、表示装置１０６と、入力装置１０７とを有する。
【００１４】
配線設計支援装置１０での処理を実現するプログラムは、ＣＤ−ＲＯＭ等の記録媒体１０１によって提供される。プログラムを記録した記録媒体１０１がドライブ装置１００にセットされると、プログラムが記録媒体１０１からドライブ装置１００を介して補助記憶装置１０２にインストールされる。但し、プログラムのインストールは必ずしも記録媒体１０１より行う必要はなく、ネットワークを介して他のコンピュータよりダウンロードするようにしてもよい。補助記憶装置１０２は、インストールされたプログラムを格納すると共に、必要なファイルやデータ等を格納する。
【００１５】
メモリ装置１０３は、プログラムの起動指示があった場合に、補助記憶装置１０２からプログラムを読み出して格納する。ＣＰＵ１０４は、メモリ装置１０３に格納されたプログラムに従って配線設計支援装置１０に係る機能を実現する。インタフェース装置１０５は、ネットワークに接続するためのインタフェースとして用いられる。表示装置１０６はＣＲＴディスプレイや液晶ディスプレイ等の表示装置である。入力装置１０７はキーボード及びマウス等で構成され、様々な操作指示を入力させるために用いられる。
【００１６】
図２は、本発明の実施の形態における配線設計支援装置の機能構成例を示す図である。配線設計支援装置１０は、プリント配線板（ＰＣＢ）上における、ＢＧＡ（Ball Grid Array）等の集積回路パッケージ同士の概略配線を支援する装置である。斯かる概略配線の支援のため、配線設計支援装置１０は、配線プラン生成部１１、妥当性判定部１２、配線プラン出力部１３、配線領域情報記憶部Ｄ１、障害物情報記憶部Ｄ２、部品情報記憶部Ｄ３、ピン情報記憶部Ｄ４、バス情報記憶部Ｄ５、ネット情報記憶部Ｄ６、配線幅情報記憶部Ｄ７、間隙ルール情報記憶部Ｄ８、バス経路矩形情報記憶部Ｄ９、及び配線脱出口情報記憶部Ｄ１０等を有する。これら各部は、配線設計支援装置１０にインストールされたプログラムが、ＣＰＵ１０４に実行させる処理により実現される。
【００１７】
配線プラン生成部１１は、配線プランを生成する。配線プラントは、基板上に配置されるＢＧＡ（Ball Grid Array）等の部品間を接続する各バス（ネットの束）について、配線プランを生成する。本実施の形態において、配線プランとは、バスの配線経路及び配線層の割り当てを示す情報をいう。
【００１８】
妥当性判定部１２は、配線プラン生成部１１によって生成された配線プランの妥当性を判定する。より詳しくは、妥当性判定部１２は、各バスについて、当該バスが接続する二つの部品内のピンより、当該バスに属する各所属ネットがそれぞれの部品外に引き出せるか否かを判定する。二つの部品のそれぞれより全ての所属ネットが引き出せたバスの配線プランの妥当性は肯定される。二つの部品の少なくともいずれか一方より少なくとも一部の所属ネットが引き出せなかったバスの配線プランの妥当性は否定される。妥当性が否定された配線プランに係るバスについては、配線プラン生成部１１によって、配線プランが再生成される。
【００１９】
配線プラン出力部１３は、妥当性判定部１２によって妥当性が肯定された配線プランを出力する。
【００２０】
各記憶部の説明については後述される。
【００２１】
以下、配線設計支援装置１０の処理手順について説明する。図３は、配線設計支援装置による処理手順の概要を説明するためのフローチャートである。
【００２２】
ステップＳ１において、配線プラン生成部１１は、配線プランが未確定のバスの有無を判定する。後述されるように、配線プランは、妥当性判定部１２によって妥当性が肯定された場合に確定される。したがって、ステップＳ１が初めて実行される場合、配線予定の全てのバスの配線プランは未確定である。
【００２３】
続いて、配線プラン生成部１１は、配線予定の各バスについて配線プランを生成する（Ｓ２）。配線プランの生成方法は、公知の技術を用いればよい。本実施の形態では、特許文献１に記載された方法を利用する。但し、本実施の形態では、ステップＳ２において、バスの占有領域は、過小に見積もられる。バスの占有領域が過大評価されることによる不都合を避けるためである。一方、過小に見積もられることによる不都合は、妥当性判定部１２等の処理によって解消される。なお、特許文献１における「ネットグループ」は、本実施の形態における「バス」に対応する。
【００２４】
続いて、配線プラン生成部１１は、配線プランの生成回数に１を加算する（Ｓ３）。配線プランの生成回数の初期値は０である。続いて、妥当性判定部１２は、配線プラン生成部１１によって生成された各バスの配線プランについて妥当性の有無を判定する（Ｓ４）。続いて、配線プラン生成部１１は、妥当性判定部１２によって妥当性が肯定された配線プランを確定させる（Ｓ５）。続いて、配線プラン生成部１１は、配線プランの生成回数が予め設定された上限に達していないか否かを判定する（Ｓ６）。
【００２５】
配線プラン生成回数が予め設定された上限に達していない場合（Ｓ６でＹｅｓ）、ステップＳ１以降が繰り返される。この場合、配線プランが未確定のバスについてステップＳ２以降が実行される。
【００２６】
配線プラン生成回数が予め設定された上限に達した場合（Ｓ６でＮｏ）、又は配線プランが未確定のバスが無くなった場合（Ｓ１でＮｏ）、配線プラン出力部１３は、確定された配線プランを出力する（Ｓ７）。
【００２７】
このように、本実施の形態では、バスの占有領域が過小に見積もられて配線プランが生成される。したがって、バスの占有領域の過大評価に基づく問題を解消することができる。一方、生成された配線プランについて妥当性（すなわち、各ネットの部品内からの引き出しの可能性）が判定され、妥当性が否定された配線プランについては求めなおしが行われる。したがって、バスの占有領域を過小評価したことによる弊害の発生を回避することができる。
【００２８】
続いて、ステップＳ２の詳細について説明する。図４は、配線プランの生成処理の処理手順の一例を説明するためのフローチャートである。
【００２９】
ステップＳ２−１において、配線プラン生成部１１は、配線プランの生成に必要な情報を、配線領域情報記憶部Ｄ１、障害物情報記憶部Ｄ２、部品情報記憶部Ｄ３、バス情報記憶部Ｄ５、ネット情報記憶部Ｄ６、及び配線幅情報記憶部Ｄ７のそれぞれより取得する。
【００３０】
図５は、配線領域情報記憶部の構成例を示す図である。同図に示されるように、配線領域情報記憶部Ｄ１には、配線領域情報として、原点座標、配線領域寸法、及び層数等が記録されている。配線領域情報は、配線設計に対する入力情報として予め設定される。
【００３１】
原点座標は、配線領域の原点の座標値である。配線領域とは、部品が配置され、部品間の配線が行われる基板において配線可能な領域をいう。配線領域寸法は、配線領域のＸ方向（幅方向）及びＹ方向（高さ方向）のサイズ（実寸）である。層数は、配線領域における配線層の層数である。
【００３２】
図６は、障害物情報記憶部の構成例を示す図である。同図に示されるように、障害物情報記憶部Ｄ２には、障害物情報として、配線領域における障害物ごとに、ＩＤ、開始座標Ｓ、終了座標Ｅ、及び層Ｌ等が記録されている。障害物情報は、配線設計に対する入力情報として予め設定される。また、障害物との一例としては、トランジスタ、配線、及びビア等が挙げられる。
【００３３】
ＩＤは、各障害物の識別子である。開始座標Ｓは、障害物を矩形領域として表現した場合における、左上頂点の座標値である。終了座標Ｅは、当該矩形領域の右下頂点の座標値である。なお、障害物の座標値は、配線領域の座標系（以下、「実寸系」という。）に従う。層Ｌは、障害物が存在する層の識別子である。本実施の形態では、各層を番号（層番号）によって識別する。
【００３４】
図７は、部品情報記憶部の構成例を示す図である。同図に示されるように、部品情報記憶部Ｄ３には、部品情報ＰＩｎｆｏとして、配線領域における部品ごとに、部品配置座標ｌｏｃ、左上ピン座標、部品サイズ、ピン配列数、ピンピッチ、接続バス群ｈｐ、及びピン情報等が記録されている。部品情報ＰＩｎｆｏは、配線設計に対する入力情報として予め設定される。表の下には、各項目の意味の理解を容易にするため、最初のレコード（行）である部品情報Ｐｉｎｆｏ［０］のイメージ図が示されている。なお、部品情報記憶部Ｄ３における各レコードのレコード名は、Ｐｉｎｆｏ［インデックス番号］によって示される。インデックス番号は、レコードの順番を示す値であり、０オリジンである。
【００３５】
部品配置座標ｌｏｃは、配線領域における部品の左上頂点の座標値である。左上ピン座標は、部品の左上（１行１列）のピンについて、部品配置座標ｌｏｃからのオフセット値である。オフセット値は、実寸系に従う。部品サイズは、部品の幅（Ｗ）及び高さ（Ｈ）である。それぞれの値は、実寸系に従う。ピン配列数は、幅方向（ｘ方向）及び高さ方向（ｙ方向）のそれぞれにおけるピンの配列数である。ピンピッチは、幅方向（ｘ方向）及び高さ方向（ｙ方向）のそれぞれにおけるピン間の距離である。当該距離は、実寸系に従う。接続バス群は、部品に接続される各バスのバス情報へのリンクである。バス情報は、バス情報記憶部Ｄ５に記録されている。ピン情報は、部品内の各ピンの情報（ピン情報）へのリンクである。ピン情報は、ピン情報記憶部Ｄ４に記録されている。
【００３６】
なお、ステップＳ２−１では、部品配置情報ｌｏｃ、部品サイズ、及び接続バス群が参照される。
【００３７】
図８は、バス情報記憶部の構成例を示す図である。同図に示されるように、バス情報記憶部Ｄ５には、バス情報Ｂとして、バスごとに、所属ネット群ｎｅｔＧ、接続対象部品群ｐａｒｔｓ、優先度ｐｒｉｏ、バス経路矩形リストｓＰ、層Ｌ、引出線分リストｅｓｃＳ、引出成功回数ｎＥｓｃ、経路確定フラグａｃｃ、経路固定フラグｆｉｘ、及びネット数ｎ等が記録される。バス情報記憶部Ｄ５における各レコードのレコード名は、Ｂ［インデックス番号］によって示される。
【００３８】
所属ネット群ｎｅｔＧは、バスに所属するネット（所属ネット）のＩＤの集合である。所属ネットのＩＤは、後述されるネット情報記憶部Ｄ６におけるインデックス番号である。接続対象部品群ｐａｒｔｓは、バスによって接続される部品のＩＤである。バスは二つの部品を接続する。したがって、二つの部品のＩＤが記録される。部品のＩＤは、部品情報記憶部Ｄ３におけるインデックス番号である。優先度ｐｒｉｏは、バスの配線における優先度である。値が大きい程、優先度は高い。バス経路矩形リストｓＰは、バスの配線経路（バス経路）を矩形の集合によって表現した場合における各矩形の情報へのリンクである。各矩形の情報は、バス経路矩形情報記憶部Ｄ９に記録される。層Ｌは、バスに割り当てられた層の番号である。引出線分リストｅｓｃＳは、バス経路の中で部品内に係る部分について、各所属ネットの引き出し経路を示す線分データのリストである。引き出し線分リストｅｓｃＳは、配線プラン出力部１３によって生成される。引出成功回数ｎＥｓｃは、妥当性判定部１２によって、バスの全ての所属ネットの部品内からの引き出しに成功した回数である。バスは２つの部品に接続される。したがって、引出成功回数ｎＥｓｃの初期値は「０」であり、最大値は「２」である。経路確定フラグａｃｃは、バス経路（すなわち、バスに対する配線プラン）が確定されたか（「Ｔ」）否か（「Ｆ」）を示すフラグである。経路確定フラグａｃｃの初期値は「Ｆ」である。経路固定フラグｆｉｘは、バス経路が固定であるか（「Ｔ」）否か（「Ｆ」）を示すフラグである。ネット数は、バスの所属ネットの本数である。
【００３９】
なお、バス情報記憶部Ｄ５において、所属ネット群ｎｅｔＧ、接続対象部品群ｐａｒｔｓ、優先度ｐｒｉｏ、経路固定フラグｆｉｘ、及びネット数ｎは、配線設計に対する入力情報として予め設定される。一方、太線で囲まれた項目（バス経路矩形リストｓＰ、層Ｌ、引出線分リストｅｓｃＳ、引出成功回数ｎＥｓｃ、及び経路確定フラグａｃｃ）は、処理結果として記録される。但し、経路固定フラグｆｉｘの値が「Ｔ」であるバスについては、全ての項目の値が予め設定されている。
【００４０】
図９は、ネット情報記憶部の構成例を示す図である。同図に示されるように、ネット情報記憶部Ｄ６には、ネット情報ＮＩｎｆｏとして、バスに属するネットごとに、所属バスｂ、ソースピンｓＰｉｎ、ターゲットピンｔＰｉｎ、及び配線幅ｗ等が記録されている。ネット情報ＮＩｎｆｏは、配線設計に対する入力情報として予め設定される。ネット情報記憶部Ｄ６における各レコードのレコード名は、ＮＩｎｆｏ［インデックス番号］によって示される。
【００４１】
所属バスｂは、ネットが所属するバスのＩＤ（バスＩＤ）である。バスＩＤは、バス情報記憶部Ｄ５におけるインデックス番号である。ソースピンｓＰｉｎ及びターゲットピンｔＰｉｎは、ネットによって接続される二つのピンである。それぞれのピンは、部品ｐｉｄ及びピンｔｉｄによって特定される。部品ｐｉｄは、ピンが配置されている部品のＩＤである。ピンｔｉｄは、ピンのＩＤである。ピンのＩＤは、部品ｐｉｄに係る部品に対応するピン情報におけるインデックスである。配線幅ｗは、配線幅情報記憶部Ｄ７のレコードへのリンクである。当該レコードには、配線幅の値が記録されている。
【００４２】
図１０は、配線幅情報記憶部の構成例を示す図である。同図に示されるように、配線幅情報記憶部Ｄ７には、配線幅情報ＷＲｕｌｅとして、ＩＤ及び線幅等が記録されている。ＩＤは、各レコードのＩＤである。線幅は、層ごとの１本の配線に要する幅である。幅の値は実寸系に従う。
【００４３】
なお、配線領域情報、障害物情報、及び部品情報ＰＩｎｆｏに基づいて、配線領域について、例えば、図１１に示される状態が特定される。図１１は、本実施の形態における配線領域の例を示す図である。
【００４４】
同図に示されるように、本実施の形態の配線領域Ａは、左上頂点座標が（０，０）、右下頂点座標が（Ｘｍａｘ，Ｙｍａｘ）であり、６層を有する。これは、配線領域情報（図５）に基づいて特定される。また、配線領域Ａに配置されている各部品には、当該部品に対応する部品情報ＰＩｎｆｏ（ＰＩｎｆｏ［０］〜ＰＩｎｆｏ［３］）が参照番号として付されている。すなわち、各部品の位置及びサイズは、参照番号として付与された部品情報ＰＩｆｏ（図７）に基づいて特定される。更に、配線領域Ａに配置されている障害物Ｆ１及びＦ２等は、障害物情報（図６）に基づいて特定される。
【００４５】
図４に戻る。続いて、配線プラン生成部１１は、配線領域Ａの１層から６層において、障害物Ｆ１及びＦ２等を除く残余の領域を配線可能領域として、バスごとに、当該バスの始点座標から終点座標に辿り着くまでの配線経路（バス経路）を探索する（Ｓ２−２）。
【００４６】
具体的には、配線プラン生成部１１は、例えば、配線可能領域において、各バスの固有の始点座標から終点座標に辿り着くまでに１回の曲がりを許して配線経路を探索する。配線経路が探索されなかった場合、配線プラン生成部１１は、同様に２回の曲がりを許して配線経路を探索する。これでも配線経路が探索されなかった場合、配線プラン生成部１１は、配線不能として探索処理を終了する。
【００４７】
なお、配線経路の探索対象とされるバスは、バス情報記憶部Ｄ５にバス情報が記録されているバスである。各バスの始点座標及び終点座標は、当該バスの接続対象部品群ｐａｒｔｓに係る部品の任意の点とすればよい。また、各バスの幅は、ネット数ｎ×幅に基づいて算出される。ここで、幅の値は、配線幅情報記憶部Ｄ７より取得すればよい。この段階では、所属ネットが配線される層は決定されていないため、各層の中の最小値が取得されればよい。部品内においては、バスの所属ネットは、ピンによって枝分かれせざるを得ない。枝分かれの結果、バス全体としての幅は、ネット数ｎ×幅によって算出される値よりも大きくなる。したがって、ネット数ｎ×幅によって算出されたバスの幅は、過小評価されたものであるといえる。なお、配線経路の探索順は、バス情報記憶部Ｄ５に記録されている優先度ｐｒｉｏに基づいて決定される。
【００４８】
配線プラン生成部１１は、バス経路の探索に成功したバスについて、当該バス経路を構成する矩形群の情報をバス経路矩形情報記憶部Ｄ９に記録する。
【００４９】
図１２は、バス経路矩形情報記憶部の構成例を示す図である。同図に示されるように、バス経路矩形情報記憶部Ｄ９には、バス経路矩形情報ＢＲとして、バス経路を構成する矩形ごとに、所属バスｏｗｎｅｒ、始点座標、終点座標、層Ｌ、固定フラグｆｉｘＦ、及び次矩形ｎｅｘｔ等が記録される。バス経路矩形情報記憶部Ｄ９における各レコードのレコード名は、ＢＲ［インデックス番号］によって示される。
【００５０】
所属バスｏｗｎｅｒは、矩形が属するバスＩＤである。始点座標は、矩形の左上頂点の座標値（実寸系）である。終点座標は、矩形の右下頂点の座標値（実寸系）である。層Ｌは、矩形に割り当てられた（すなわち、矩形が属するバスに割り当てられた）層の番号である。固定フラグｆｉｘＦは、矩形が属するバス経路が固定であるか（「Ｔ」）否か（「Ｆ」）を示すフラグである。次矩形ｎｅｘｔは、同一のバス経路に属する矩形の中で、次の矩形に対するリンクである。当該リンクは、次の矩形のレコードへの参照である。次の矩形が無いことは、「ｎｕｌｌ」によって示される。
【００５１】
配線プラン生成部１１は、また、バス経路の探索に成功した各バスについて、バス情報記憶部Ｄ５のバス経路矩形リストｓＰ（図８）に、当該バス経路に所属する各矩形のバス経路矩形情報ＢＲへのリンクを記録する。例えば、図８の例では、バス情報Ｂ［０］のバス矩形リストｓＰに、バス経路矩形情報ＢＲ［０］、ＢＲ［１］、ＢＲ［２］へのリンクが記録されている。
【００５２】
なお、バス経路が探索され、当該バス経路についてバス経路矩形情報ＢＲとバス情報Ｂのバス矩形リストｓＰとが記録されることにより、配線領域Ａは、概念的に図１３に示されるような状態となる。
【００５３】
図１３は、バス経路の探索後の配線領域の状態の一例を示す図である。同図には、バス経路が探索された各バスには、当該バスに対応するバス情報のレコード名（Ｂ［０］〜Ｂ［５］）が参照番号として付与されている。各バスのバス経路に属する矩形について、当該矩形に対応するレコード名が参照番号として付与されている。同図によれば、図８のバス矩形リストｓＰに示される通り、矩形ＢＲ［０］、ＢＲ［１］、及びＢＲ［２］が、バスＢ［０］を構成していることが分かる。同様に、矩形ＢＲ［３］及びＢＲ［４］が、バスＢ［１］を構成していることが分かる。
【００５４】
続いて、配線プラン生成部１１は、探索されたバス経路間で相互に交差関係を有するバス経路の組み合わせを検出する（Ｓ２−３）。検出結果は、例えば、メモリ１０３を用いて形成される交差情報テーブルに記録される。
【００５５】
図１４は、交差情報テーブルの一例を示す図である。なお、同図に示される交差情報テーブルｔ１の内容は、便宜上、図１３の状態に対応したものではない。
【００５６】
交差情報テーブルｔ１の各レコードは、エッジＩＤ、始点、及び終点に関する情報を含む。エッジＩＤは、後述する無向グラフにおいて、交差関係を有するバス経路のノード間をつなぐエッジを識別する識別子である。始点及び終点は、交差関係を有するバス経路の組み合わせの一方に対応するレコード名と、他方に対応するレコード名である。同図では、レコード名の添え字は、本実施の形態においては本来数字（バスＩＤ）であるところ、アルファベット（ａ〜ｄ）によって抽象化されている。
【００５７】
したがって、交差情報テーブルｔ１は、バス経路Ｂ［ａ］とＢ［ｃ］の他、合計５組のバス経路の間で交差が検出された例を示す。
【００５８】
続いて、配線プラン生成部１１は、交差情報テーブルｔ１に登録された各バス経路がノード化され、交差関係を有するバス経路に係るノード間がエッジによって接続された無向グラフを生成する（Ｓ２−４）。具体的には、配線プラン生成部１１は、交差情報テーブルｔ１に基づいて、バス経路Ｂ［ａ］〜Ｂ［ｄ］をノード化する。続いて、配線プラン生成部１１は、交差情報テーブルｔ１に登録されたレコード分のエッジＥ１〜Ｅ５によってノード間を接続する。
【００５９】
図１５は、バス経路の交差関係を示す無向グラフの一例を示す図である。同図に示される無向グラフｇ１は、バス経路Ｂ［ａ］〜Ｂ［ｄ］に対応するノードＢ［ａ］〜Ｂ［ｄ］を有する。また、交差関係を有するバス経路に対応するノード間は、エッジＥ１〜Ｅ４のいずれかのエッジによって接続されている。
【００６０】
続いて、配線プラン生成部１１は、無向グラフｇ１の彩色問題を解くことにより、無向グラフｇ１において直接接続されたノード間で割当先の層が異なるように、各ス経路Ｂ［ａ］〜Ｂ［ｄ］に割り当てる層を決定する（Ｓ２−５）。具体的には、例えば、ＳＥＱ（SEQuential heuristic）を用いて、無向グラフｇ１内の各ノードＢ［ａ］〜Ｂ［ｄ］に、隣接ノードに割り当てられていない色を順次割り当てていく。その結果、例えば、図１６に示されるように各バス経路に対して割り当てられる層が決定される。
【００６１】
図１６は、各バス経路に対する層の割り当て結果の例を示す図である。同図では、バス経路Ｂ［ａ］及びＢ［ｂ］は、第１層に割り当てられている。また、バス経路Ｂ［ｃ］及びＢ［ｄ］は、第２層に割り当てられている。
【００６２】
続いて、配線プラン生成部１１は、図１６に示されるような決定結果をバス情報記憶部Ｄ５及びバス経路矩形情報記憶部Ｄ９に記録する（Ｓ２−６）。具体的には、層が割り当てられたバス経路に対応するバス情報Ｂの層Ｌに、当該層の番号が記録される。また、層が割り当てられたバス経路に属する矩形のバス経路矩形情報ＢＲの層Ｌに、当該層の番号が記録される。
【００６３】
以上で、ステップＳ２に関する詳細な説明は終了する。なお、上記において説明したバス経路の探索方法、及びバス経路に対する層の割り当て方法は一例に過ぎない。例えば、特許文献１に記載された他の変形例が適用されてもよいし、他の公知技術が適用されてもよい。
【００６４】
続いて、図３のステップＳ４の妥当性判定部１２による処理の詳細について説明する。図１７は、妥当性判定部の機能構成例を示す図である。同図において、妥当性判定部１２は、引き出し問題生成部１２１及び引き出し配線部１２２を含む。
【００６５】
引き出し問題生成部１２１は、各バスの所属ネットについて、接続対象の部品内からの配線経路を探索する（ネットを引き出す）ための引き出し問題を生成する。引き出し配線部１２２は、引き出し問題生成部１２１によって生成された引き出し問題を解くことにより、引き出し経路を生成する。
【００６６】
引き出し問題生成部１２１は、有向グラフ生成部１２１１及び防護壁生成部１２１２等を含む。有向グラフ生成部１２１１は、概略配線を実施するためのネットワークフローモデル化された有向グラフを生成する。すなわち、引き出し問題生成部１２１は、ＢＧＡ（Ball Grid Array）等の部品からの配線の引き出し問題に対しネットワークフローモデルを適用する。配線の引き出し問題にネットワークフローモデルを適用するにあたり、有向グラフ生成部１２１１は、配線対象とされた部品の少なくともピン（又は端子ともいう。以下、「ピン」で統一する。）、水平ピン間（空きピンも含めて水平方向に隣接する二つのピンに挟まれた領域）、垂直ピン間（空きピンも含めて垂直方向に隣接する二つのピンに挟まれた領域）、及び対角ピン間（空きピンも含めて４つのピンに囲まれた領域）に配線通過数を規制するボトルネック（配線数の制限）を設ける。また、空きピン（ピンが配置されていない部分）が有る場合は空きピンにもボトルネックが設けられる。当該ボトルネックは図１８に示されるようにモデル化される。
【００６７】
図１８は、部品に設けられたボトルネックのモデル化の例を示す図である。同図には、配線領域Ａにおける一つの部品の一部分が示されている。
【００６８】
同図における円ｃ１〜ｃ４は、部品のピンを示す。各ピンに配置された矩形（ｒ１〜ｒ４）、水平ピン間に設けられた矩形（ｒ５及びｒ６）、垂直ピン間に設けられた矩形（ｒ７及びｒ８）、及び対角ピン間に設けられた矩形（ｒ９）は、ボトルネック箇所を表現するためのものである。本実施の形態では、当該各矩形を「セル」という。各セルには容量（配線通過許容数）が与えられる。図中において、各セル内における数値は、当該セルに付与された容量を示す。すなわち、妥当性判定部１２による処理では、各部品内において、セルの行列がマッピングされる。セルの行番号及び列番号によって規定される一つの部品内における座標系を「セル座標系」という。
【００６９】
各セルは、二つのノードを有する。左上のノードは入り口ノードであり、右下のノードは出口ノードである。有向グラフ生成部１２１１は、所定の規則に従って各ノードを接続する有向枝を生成する。図中においてノード間を接続する矢印が有向枝を示す。有向枝が生成されることにより、概略配線を実施するための有向グラフが生成される。
【００７０】
なお、有向グラフ生成部１２１１は、セル生成部１２１１ａ、セル容量算出部１２１１ｂ、ノード生成部１２１１ｃ、及び有向枝生成部１２１１ｄ等を有する。各部の機能については後述する。
【００７１】
防護壁生成部１２１２は、セル座標系において、防護壁を生成する。防護壁とは、各バスについて順番に引き出し経路（概略経路）を探索する際に、引き出し対象とされていない他のバスのための引き出し領域を防護するための仮想的な壁である。防護壁の詳細については後述する。
【００７２】
一方、引き出し配線部１２２は、経路探索部１２２１及び概略経路確定部１２２２等を含む。経路探索部１２２１は、有向グラフ生成部１２１１によって生成された有向グラフにおいて、バスに属するネットごとに部品内から配線を引き出すための最短経路を探索する。経路探索部１２２１は、最短経路探索部１２２１ａ及びバックトレース部１２２２ｂ等を有する。各部の機能については後述する。
【００７３】
概略経路確定部１２２２は、経路探索部１２２１によって探索された各経路を各配線に分配することにより、概略配線の引き出し経路（概略経路）を確定する。
【００７４】
以下、ステップＳ４の処理手順の詳細について説明する。図１９は、配線プランの妥当性の判定処理の処理手順を説明するためのフローチャートである。
【００７５】
ステップＳ４−１において、妥当性判定部１２は、バス情報記憶部Ｄ５の全レコードの引出成功回数ｎＥｓｃを０にリセット（初期化）する。続いて、妥当性判定部１２は、処理対象として着目する部品（着目部品）のインデックスを示す変数ｐに０を代入する。妥当性判定部１２は、また、配線領域Ａに配置されている部品の総数を変数ｐｍａｘに代入する（Ｓ４−２）。当該部品の総数は、部品情報記憶部Ｄ３のレコードの総数である。
【００７６】
続いて、妥当性判定部１２は、変数ｐの値が変数ｐｍａｘに達したか、すなわち、全ての部品について処理が完了したか否かを判定する（Ｓ４−３）。未処理の部品がある場合（Ｓ４−３でＹｅｓ）、妥当性判定部１２は、ｐ番目の部品情報（部品情報ＰＩｎｆｏ［ｐ］）（図７参照）に係る部品を着目部品とする（Ｓ４０４）。続いて、妥当性判定部１２は、着目部品に接続されるバスの中で、配線経路が未確定のバスが有るか否かを判定する（Ｓ４−５）。具体的には、着目部品に接続されるバスは、部品情報ＰＩｎｆｏ［ｐ］の接続バス群ｂＰに基づいて特定される。当該バスの配線経路が未確定であるか否かは、当該バスのバス情報Ｂ（図８参照）の経路確定フラグａｃｃに基づいて判定される。
【００７７】
配線経路が未確定のバスが有る場合（Ｓ４−５でＹｅｓ）、妥当性判定部１２は、処理対象として着目する層（着目層Ｌ）を１とする。妥当性判定部１２は、また、配線領域の層数を変数Ｌｍａｘに代入する（Ｓ４−６）。配線領域の層数は、配線領域情報記憶部Ｄ１（図５参照）より取得される。
【００７８】
続いて、妥当性判定部１２は、着目層Ｌが変数Ｌｍａｘを超えていないか否かを判定する（Ｓ４―７）。着目層Ｌが変数Ｌｍａｘを超えていない場合（Ｓ４−７でＹｅｓ）、妥当性判定部１２は、着目部品ＰＩｎｆｏ［ｐ］及び着目層Ｌに係るバス経路の有無を判定する（Ｓ４−８）。具体的には、着目部品ＰＩｎｆｏ［ｐ］の接続バス群ｂＰに含まれているバスの中で、バス情報Ｂの層Ｌの値が着目層Ｌと一致するレコードが有るか否かが判定される。
【００７９】
着部品ＰＩｎｆｏ［ｐ］及び着目層Ｌに係るバスが有る場合（Ｓ４−８でＹｅｓ）、引き出し問題生成部１２１は、着目部品に接続されるバスの中で、着目層Ｌに配線経路が割り当てられたバスに属するネットについて着目部品内における引き出し問題を生成する（Ｓ４−９）。続いて、引き出し配線部１２２は、引き出し問題生成部１２１によって生成された引き出し問題を解くことにより、着目部品ＰＩｎｆｏ［ｐ］及び着目層Ｌに係る各バスの所属ネットについて引き出し経路を生成する（Ｓ４−１０）。
【００８０】
ステップＳ４−８〜ステップＳ４−１０は、着目部品に関して、全ての層について実行される（Ｓ４−８及びＳ４―１１）。但し、着目部品ＰＩｎｆｏ［ｐ］に係るバス経路が無い層については、ステップＳ４−９及びＳ４−１０は実行されない（Ｓ４―８）。すなわち、同一部品のピンが、複数の層に渡って貫通している状態が想定されている。
【００８１】
着目部品ＰＩｎｆｏ［ｐ］に関して全ての層に関する処理が終了すると（Ｓ４−７でＮｏ）、妥当性判定部１２は、変数ｐの値に１が加算する（Ｓ４−１２）。すなわち、部品情報記憶部Ｄ３において、次の部品が着目部品とされる。全ての部品について処理が完了すると（Ｓ４−３でＮｏ）、図１９の処理は終了する。
【００８２】
続いて、ステップＳ４−９の詳細について説明する。図２０は、着目部品及び着目層に係るバスの引き出し問題の生成処理を説明するためのフローチャートである。
【００８３】
ステップＳ４−９−１において、引き出し問題生成部１２１は、着目部品ＰＩｎｆｏ［ｐ］及び着目層Ｌに係るバスを部品情報記憶部Ｄ３及びバス情報記憶部Ｄ５に基づいて抽出し、抽出されたバスをバス集合ＢＧに登録する。続いて、有向グラフ生成部１２１１は、バス集合ＢＧに登録されたバス属するネットについて、着目部品ＰＩｎｆｏ［ｐ］及び着目層Ｌに係る概略配線を実施するためのネットワークフローモデル化された有向グラフを生成する（Ｓ４−９−２）。
【００８４】
続いて、引き出し問題生成部１２１は、バス集合ＢＧに含まれるバスを、それぞれのバス情報Ｂの優先度ｐｒｉｏの降順にソートする（Ｓ４−９−３）。この際、経路が固定されているバスの優先度は最高として扱われる。経路が固定されているバスとは、バス情報記憶部Ｄ５において、経路固定フラグｆｉｘの値が「Ｔ」であるバスである。続いて、防護壁生成部１２１２は、バス集合ＢＧに属するバスについて、ソートされた順に防護壁の生成処理を実行する（Ｓ４−９−４）。
【００８５】
続いて、ステップＳ４−９−２の詳細について説明する。まず、ステップＳ４−９−２の処理の成果物である有向グラフについて説明する。
【００８６】
図２１は、有向グラフ生成部によって生成される有向グラフの例を示す図である。
【００８７】
同図において、実線による円はピンを示す。グレーに塗りつぶされた円は、配線の引き出し対象（引き出し元）となるピン（以下、「引き出し対象ピン」という。）を示す。破線による円は空きピンを示す。また、各矩形はセルを示す。同図では、配線の出口位置を破線で囲まれた出口位置Ｏに限定した場合の有向グラフの生成状態を示す。出口位置Ｏに含まれるセルを以下「出口セル」という。このように、セル内の入り口ノードから出口ノードへの方向を有する有向枝、及び出口ノードから隣接する他のセルの入り口ノードへの方向を有する有向枝が生成されることにより有向グラフが生成される。図中において、湧き出しノードＳは、有向グラフの始点として設けられたノードである。流入ノードＴは、有向グラフの終点として設けられたノードである。なお、各有向枝は、当該有向枝が接続するノードが属するセルの容量に応じた容量を有する。
【００８８】
図２１に示されるような有向グラフを生成するための処理内容について説明する。図２２は、有向グラフ生成部による有向グラフの生成処理の処理手順を説明するためのフローチャートである。以降の説明において、部品は、着目層Ｌにおける着目部品ＰＩｎｆｏ［ｐ］を意味する。
【００８９】
ステップＳ４−９２１において、セル生成部１２１１ａは、部品のボトルネック箇所にセルを生成し、当該セルを示すデータ（セルデータ）を補助記憶装置１０２に保存する。本実施の形態において、ボトルネック箇所は、ピン、水平ピン間、垂直ピン間、対角ピン間、及び空きピンである。したがって、これらの位置に対応するセルデータが生成される。
【００９０】
図２３は、ボトルネック箇所にセルが生成された状態を示す図である。換言すれば、同図は、一つの部品のセル座標系の全体を示す図である。同図の表記法は、図２１と同様である。同図には、セル行及びセル列（セル行列）とピン行及びピン列（ピン行列）における行番号及び列番号が示されている。このように、各セルの位置は、セル行の行番号及びセル列の列番号によって管理される。また、各ピンの位置は、ピン行の行番号及びピン列の値によって管理される。なお、本実施の形態において、セル行列又はピン行列における方向は、東西南北によって識別される。図中右方向は東、左方向は西、上方向は北、下方向は南とする。但し、このような方向付けは相対的、かつ、便宜的なものであり、いずれの方向に東西南北を割り当ててもよい。
【００９１】
図２４は、セルデータの構成例を示す図である。同図において、セルデータは構造体として定義されている。但し、セルデータ及び後述される他のデータをどのような実体によって実現するかについては適宜選択すればよい。
【００９２】
同図において、セルデータは、セル属性（ａｔｔｒ）、ネットＩＤ（ｎｅｔＩＤ）、出口フラグ（ｅｘｉｔＦ）、ｘ座標（ｘ）、ｙ座標（ｙ）、入り口ノードのノードＩＤ（ｉＮ）、出口ノードのノードＩＤ（ｏＮ）、容量（ｃａｐ）、当初容量（ｃａｐ２）、行番号（ｒ）、列番号（ｃ）、防護壁色（ｆｌａｖｏｒ）、容量確認済みフラグ（ｐｉｎＣａｐＣｈｅｃｋｅｄＦ）、右隣のセルポインタ（ｒＬｉｎｋ）、左隣のセルポインタ（ｌＬｉｎｋ）、東隣のセルポインタ（ｃＥ）、西隣のセルポインタ（ｃＷ）、北隣のセルポインタ（ｃＮ）、南隣のセルポインタ（ｃＳ）、ラベル伝播元方向（ｐａｒｅｎｔＤｉｒ）、探索ソースフラグ（ｓＦｌａｇ）、探索ターゲットフラグ（ｔＦｌａｇ）、道程（ｌａｂｅｌ）、防護壁ツリーＩＤ（ｔｒｅｅＩＤ）、防護壁ツリー線分リスト（ｓｅｇＬｉｓｔ）、防護壁ツリー線分数（ｓｅｇＮｕｍ）、防護壁ツリーセル数（ｃｅｌｌＮｕｍ）、及び防護壁ツリー線分通過数（ｐａｔｔｅｒｎＮｕｍ）等のメンバ変数（データ項目）を有する（括弧内はメンバ変数名を示す。）。
【００９３】
セル属性（ａｔｔｒ）は、各セルがいずれのボトルネック箇所に対応するかを示す属性である。「Ｓ」は、引き出し対象ピンに位置するセルであることを示す。「ＥＰ」は、空きピンに位置するセルであることを示す。「Ｄ」は、通常のピン（引き出し対象ピン又は空きピン以外のピン）に位置するセルであることを示す。「Ｖ」は、水平ピン間に位置するセルであることを示す。「Ｈ」は、垂直ピン間に位置するセルであることを示す。「ＳＢ」は、対角ピン間に位置するセルであることを示す。図２３の各セル内には、セル属性の値が記されている。図２３からも明らかなように、本実施の形態では、東端列のピンの東に隣接する箇所（セル）、及び西端列のピンの西に隣接する箇所（セル）も水平ピン間（Ｖ）とされる。また、北端行のピンの北に隣接する箇所（セル）、及び南端行のピンの南に隣接する箇所（セル）も垂直ピン間（Ｈ）とされる。また、東端列のピン、西端列のピン、北端行のピン、又は南端行のピンに対して部品の外周側に斜めに接する（斜め隣）箇所（セル）も対角ピン間（ＳＢ）とされる。なお、本実施の形態において、水平ピン間を「Ｖ」、垂直ピン間を「Ｈ」によって示すのは、セルの並びとしては、水平ピン間は垂直方向に配列され、垂直ピン間は水平方向に配列されるからである。
【００９４】
ネットＩＤ（ｎｅｔＩＤ）は、引き出し対象ピンに位置するセルに関して有効となるメンバ変数であり、当該引き出し対象ピンから引き出されるネット（配線）の識別子（ネットＩＤ）が登録される。出口フラグ（ｅｘｉｔＦ）は、図２３のセル行列におい出口セルであるか否かを示すメンバ変数である。出口セルに対してはｔｒｕｅが登録され、出口セルでないセルにはｆａｌｓｅが登録される。ｘ座標（ｘ）は、部品上の相対座標系におけるセルの代表位置（例えば、左上頂点）のｘ座標値である。ｙ座標（ｙ）は、部品上の相対座標系におけるセルの所定の位置のｙ座標値である。なお、部品上の相対座標系とは、例えば、部品の左上頂点を原点とし、実寸（例えば、ミリメートル）を単位とする座標系である。入り口ノードのノードＩＤ（ｉＮ）は、セルの入り口ノードの識別子（ノードＩＤ）である。出口ノードのノードＩＤ（ｏＮ）は、セルの出口ノードの識別子（ノードＩＤ）である。容量（ｃａｐ）は、セルの容量、すなわち、配線通過許容数である。当初容量（ｃａｐ２）は、容量（ｃａｐ）の値を退避（保持）しておくためのメンバ変数である。処理の便宜上、容量（ｃａｐ）の値が一時的に変更されることがあるからである。行番号（ｒ）は、セルが位置するセル行の行番号である。列番号（ｃ）はセルが位置するセル列の列番号である。
【００９５】
容量確認済みフラグ（ｐｉｎＣａｐＣｈｅｃｋｅｄＦ）、右隣のセルポインタ（ｒＬｉｎｋ）、左隣のセルポインタ（ｌＬｉｎｋ）、東隣のセルポインタ（ｃＥ）、西隣のセルポインタ（ｃＷ）、北隣のセルポインタ（ｃＮ）、南隣のセルポインタ（ｃＳ）、ラベル伝播元方向（ｐａｒｅｎｔＤｉｒ）、探索ソースフラグ（ｓＦｌａｇ）、探索ターゲットフラグ（ｔＦｌａｇ）、道程（ｌａｂｅｌ）、防護壁ツリーＩＤ（ｔｒｅｅＩＤ）、防護壁ツリー線分リスト（ｓｅｇＬｉｓｔ）、防護壁ツリー線分数（ｓｅｇＮｕｍ）、防護壁ツリーセル数（ｃｅｌｌＮｕｍ）、及び防護壁ツリー線分通過数（ｐａｔｔｅｒｎＮｕｍ）については、処理手順の説明の過程において説明する。
【００９６】
一つのセルデータは、一つのセルに対応する。従って、ステップＳ４−９２１では、セルの個数分のセルデータが生成される。
【００９７】
続いて、セル容量算出部１２１１ｂは、部品情報記憶部Ｄ３、配線領域情報記憶部Ｄ１、及び間隙ルール情報記憶部Ｄ８等を用いて各セルの容量を算出し、算出結果をセルデータの容量（ｃａｐ）及び当初容量（ｃａｐ２）に記録する。（Ｓ４−９２２）。
【００９８】
続いて、ノード生成部１２１１ｃは、セルごとにノードを示すデータ（ノードデータ）を補助記憶装置１０２に生成し、各セルデータの入り口ノードのノードＩＤと出口ノードのノードＩＤに対応する各ノードデータのノードＩＤを記録する（Ｓ４−９２３）。続いて、ノード生成部１２１１ｃは、湧き出しノードＳのノードデータと流入ノードＴのノードデータとを生成する（Ｓ４−９２４）。
【００９９】
図２５は、ノードが生成された状態を示す図である。同図には、各セルの入り口ノード及び出口ノードのそれぞれを示す点が記されている。また、湧き出しノードＳ及び流入ノードＴのそれぞれを示す点が記されている。
【０１００】
また、図２６は、ノードデータの構成例を示す図である。同図において、ノードデータは、ラベル伝播元ノードＩＤ（ｐＩＤ）、最短経路長（ｄｉｓｔ）、オーナーセルのセルＩＤ（ｃｅｌｌＩＤ）、ノード属性（ａｔｔｒ）、相棒ノードＩＤ（ｂｒｏｓ）、探索ソースフラグ（ｓＦｌａｇ）、探索ターゲットフラグ（ｔＦｌａｇ）、相棒ノードとの有向枝（ｅＢｒｏｓ）、東隣セルのノードとの有向枝（ｅＥ）、西隣セルのノードとの有向枝（ｅＷ）、南隣セルのノードとの有向枝（ｅＳ）、北隣セルのノードとの有向枝（ｅＮ）、北東セルのノードとの有向枝（ｅＮＥ）、北西セルのノードとの有向枝（ｅＮＷ）、南東セルのノードとの有向枝（ｅＳＥ）、南西セルのノードとの有向枝（ｅＳＷ）、湧き出しノードＳからの有向枝のリスト（ｓｏｕｒｅＥｄｇｅＬｉｓｔ）、流入ノードＴへの有向枝のリスト（ｔａｒｇｅｔＥｄｇｅＬｉｓｔ）、及びラベルフロントフラグ（ｌＦｒｏｎｔＦ）等のメンバ変数（データ項目）を有する。
【０１０１】
ラベル伝播元ノードＩＤ（ｐＩＤ）は、配線の引き出し経路の経路探索におけるラベルの伝播元となるノード（親ノード）のノードＩＤである。最短経路長（ｄｉｓｔ）は、引き出し対象のセルの入り口ノードから当該ノードまでの最短の経路長である。オーナーセルのセルＩＤ（ｃｅｌｌＩＤ）は、当該ノードが属するセル（オーナーセル）の識別子（セルＩＤ）である。ノード属性（ａｔｔｒ）は、入り口ノードか出口ノードかを示す属性である。「ｉｎ」は入り口ノードを示し、「ｏｕｔ」は出口ノードを示す。相棒ノードＩＤ（ｂｒｏｓ）は、同じセル内における他方のノード（相棒ノード）のノードＩＤである。探索ソースフラグ（ｓＦｌａｇ）は、ノードが湧き出しノードＳ又は引き出しセルの入り口ノードであるか（ｔｒｕｅ）否か（ｆａｌｓｅ）を示すメンバ変数である。探索ターゲットフラグ（ｔＦｌａｇ）は、ノードが流入ノードＴ又は出口セルの出口ノードであるか（ｔｒｕｅ）否か（ｆａｌｓｅ）を示すメンバ変数である。
【０１０２】
相棒ノードとの枝（ｅＢｒｏｓ）は、相棒ノードとの間に生成される有向枝のデータ（枝データ）である。東隣セルのノードとの有向枝（ｅＥ）は、東側に隣接するセル（東隣セル）のノードとの間に生成される有向枝の枝データである。西隣セルのノードとの有向枝（ｅＷ）は、西側に隣接するセル（西隣セル）のノードとの間に生成される有向枝の枝データである。南隣セルのノードとの有向枝（ｅＳ）は、南側に隣接するセル（南隣セル）のノードとの間に生成される有向枝の枝データである。北隣セルのノードとの有向枝（ｅＮ）は、北側に隣接するセル（北隣セル）のノードとの間に生成される有向枝の枝データである。北東セルのノードとの有向枝（ｅＮＥ）は、北東側に隣接するセル（北東セル）のノードとの間に生成される有向枝の枝データである。北西セルのノードとの有向枝（ｅＮＷ）は、北西側に隣接するセル（北西セル）のノードとの間に生成される有向枝の枝データである。南東セルのノードとの有向枝（ｅＳＥ）は、南東側に隣接するセル（南東セル）のノードとの間に生成される有向枝の枝データである。南西セルのノードとの有向枝（ｅＳＷ）は、南西側に隣接するセル（南西セル）のノードとの間に生成される有向枝の枝データである。
【０１０３】
湧き出しノードＳからの有向枝のリスト（ｓｏｕｒｅＥｄｇｅＬｉｓｔ）は、湧き出しノードＳから引き出し対象セルの入り口ノードに対する有向枝の枝データのリストであり、湧き出しノードＳのノードデータにおいて有効である。流入ノードＴへの有向枝のリスト（ｔａｒｇｅｔＥｄｇｅＬｉｓｔ）は、出口セルの出口ノードから流入ノードＴへの有向枝の枝データのリストであり、流入ノードＴのノードデータにおいて有効である。ラベルフロントフラグ（ｌＦｒｏｎｔＦ）は、経路探索の最前線（ラベルフロント）のノードであるか否かを示すフラグである。
【０１０４】
続いて、有向枝生成部１２１１ｄは、ノード間に有向枝を生成し、当該有向枝を示す枝データを補助記憶装置１０２に保存する（Ｓ４−９２５）。ステップＳ４−９２５が終了すると、図２１に示した状態が得られる。但し、この時点では、湧き出しノードＳからの有効枝と、流入ノードＴへの有効枝とは生成されない。当該有効枝は、所属ネットの配線の引き出し経路の探索対象とされるバスに応じて異なるからである。
【０１０５】
続いて、ステップＳ４−９２１の詳細について説明する。図２７は、セルの生成処理の処理手順を説明するためのフローチャートである。
【０１０６】
ステップＳ４−９２１−１において、セル生成部１２１１ａは、セルデータの配列（セルデータ配列ｃｅｌｌ）を補助記憶装置１０２に生成する。セルデータ配列ｃｅｌｌの要素数は、ピンの行数がｒ、ピンの列数がｃである場合、（２ｒ＋１）×（２ｃ＋１）個とされる。ピンの行数及び列数は、部品情報記憶部Ｄ３において、着目部品に対応する部品情報ＰＩｆｏのピン配列サイズに記録されている値が利用される。セルデータ生成部１１１は、セルデータ配列ｃｅｌｌに要素として含まれる各セルデータに、行番号（ｒ）及びセルの列番号（ｃ）を記録する。なお、セルデータ配列ｃｅｌｌは、２次元配列でもよいが、本実施の形態では１次元配列とする。また、便宜上、後述の処理におけるセルデータは、補助記憶装置１０２に生成されたセルデータをいうが、処理性能を考慮してメモリ装置１０３にセルデータを生成し、当該セルデータを処理対象としてもよい。
【０１０７】
続いて、セル生成部１２１１ａは、セル行列の偶数行偶数列に位置するセルのセルデータについてピン（空きピンも含む。）との対応付けを行い、セル属性を付与する（Ｓ４−９２１−２）。
【０１０８】
続いて、セル生成部１２１１ａは、セル行列の奇数行偶数列、偶数行奇数列、及び奇数行奇数列に位置するそれぞれのセルのセルデータにＨ属性、Ｖ属性、又はＳＢ属性を付与する（Ｓ４−９２１−３）。すなわち、奇数行偶数列のセルのセルデータのセル属性に「Ｈ（垂直ピン間）」が記録される。また、偶数行奇数列のセルのセルデータのセル属性に「Ｖ（水平ピン間）」が記録される。更に、奇数行奇数列のセルのセルデータのセル属性に「ＳＢ（対角ピン間）」が記録される。
【０１０９】
続いて、セル生成部１２１１ａは、セル属性の値が「Ｓ」、「Ｈ」、「Ｖ」、又は「ＥＰ」のセルデータにセルのうち、セル行列において外周に位置するセルに対応するセルデータの出口フラグ（ｅｘｉｔＦ）の値をｔｒｕｅとし、外周に位置しないセルに対応するセルデータの出口フラグ（ｅｘｉｔＦ）の値をｆａｌｓｅとする（Ｓ４−９２１−４）。
【０１１０】
続いて、ステップＳ４−９２１−２の詳細について説明する。図２８は、偶数行偶数列に位置するセルのセルデータに対する処理の処理手順を説明するためのフローチャートである。
【０１１１】
ステップＳ４−９２１−２ａにおいて、セル生成部１２１１ａは、ピン情報記憶部Ｄ４より、ピン行列の１行１列に対応するピン情報を取得し、処理対象とする。
【０１１２】
図２９は、ピン情報記憶部の構成例を示す図である。同図に示されるように、ピン情報記憶部Ｄ４には、ピン情報ＴＩｎｆｏとして、ピンごとに、中心座標、接続ｎｅｔ、形状ｓｈａｐｅ、及び半径ｒ等が記録される。ピン情報ＴＩｎｆｏは、配線設計に対する入力情報として予め設定される。同図では、部品ごとにテーブルが区別されている例が示されている。すなわち、一つのテーブルには、一つの部品に対する全てのピンのピン情報ＴＩｎｆｏが記録される。なお、部品情報記憶部Ｄ３（図７）におけるピン情報は、各テーブルへのリンクである。
【０１１３】
中心座標は、ピンの位置をピン行Ｈ及び列Ｖによって示す。接続ｎｅｔは、ピンに接続されるネットのＩＤである。したがって、接続ｎｅｔは、引き出し対象ピンに関して有効である。当該ネットのＩＤは、ネット情報記憶部Ｄ６（図９）におけるインデックス番号である。ネットに接続されないピンに対する接続ｎｅｔの値は「ｎｉｌ」とされる。形状ｓｈａｐｅは、ピンの形状である。ピンの形状としては、矩形、円、又は空等がある。空は、空きピンであることを示す。半径ｒは、ピンの半径（実寸）である。半径ｒはｘ及びｙのパラメータを含むが、ピンの形状が矩形である場合を考慮したものである。
【０１１４】
ステップＳ４−９２１−２ａでは、着目部品に対応するテーブルより、中心座標の行Ｈが「１」であり、列Ｖが「１」であるレコードが取得される。
【０１１５】
続いて、セル生成部１２１１ａは、変数ｉの値を２ｃ＋２に初期化する（Ｓ４−９２１−２ｂ）。ここで、ｃはピンの列数である。したがって、２ｃ＋１は、セルの列数である。そうすると、２ｃ＋２は、セルデータ配列ｃｅｌｌにおいて２行２列目の要素（セルデータ）に対する添え字となる。なお、添え字の起点は０（０オリジン）であるとする。続いて、セル生成部１２１１ａは、セルデータ配列ｃｅｌｌにおいて添え字がｉである要素（セルデータ）を処理対象とする（Ｓ４−９２１−２ｃ）。
【０１１６】
続いて、セル生成部１２１１ａは、処理対象のピン情報ＴＩｎｆｏに基づいて、当該ピン情報ＴＩｎｆｏに係るピン（以下、「着目ピン」という。）が引き出し対象であるか否かを判定する（Ｓ４−９２１−２ｄ）。すなわち、当該ピン情報ＴＩｎｆｏの接続ｎｅｔの値がｎｉｌでないか否かが判定される。
【０１１７】
着目ピンが引き出し対象ピンである場合（Ｓ４−９２１−２ｄでＹｅｓ）、セル生成部１２１１ａは、処理対象のセルデータのセル属性（ａｔｔｒ）に「Ｓ（引き出し対象ピン）」を記録し、ネットＩＤ（ｎｅｔＩＤ）に処理対象のピン情報ＴＩｎｆｏに登録されている接続ｎｅｔの値を記録する（Ｓ４−９２１−２ｅ）。処理対象のピン情報ＴＩｎｆｏに係るピンが引き出し対象ピンでない場合（Ｓ４−９２１−２ｄでＮｏ）、セル生成部１２１１ａは、当該ピン情報ＴＩｎｆｏに基づいて着目ピンが空きピンであるか否かを判定する（Ｓ４−９２１−２ｆ）。すなち、当該ピン情報ＴＩｎｆｏの形状ｓｈａｐｅが「空」であるか否かが判定される。着目ピンが空きピンである場合（Ｓ４−９２１−２ｆでＹｅｓ）、セル生成部１２１１ａは、処理対象のセルデータのセル属性（ａｔｔｒ）に「ＥＰ（空きピン）」を記録する（Ｓ４−９２１−２ｇ）。処理対象のピン情報ＴＩｎｆｏに係るピンが空きピンでない場合（Ｓ４−９２１−２ｆでＮｏ）、セル生成部１２１１ａは、処理対象のセルデータのセル属性（ａｔｔｒ）に「Ｄ（ピン）」を記録する（Ｓ４−９２１−２ｈ）。
【０１１８】
ステップＳ４−４２９−ｅ、ステップＳ４−９２１−２ｇ、又はＳ４−９２１−２ｈに続いて、セル生成部１２１１ａは、処理対象のピン情報ＴＩｎｆｏの列番号が最大値（ピンの列数）に達しているか否かを判定する（Ｓ４−９２１−２ｉ）。ピンの列数は、着目部品の部品情報ＰＩｎｆｏ（図７）のピン配列サイズｃの値によって特定される。ピン情報ＴＩｎｆｏの列番号が最大値でない場合（Ｓ４−９２１−２ｉでＮｏ）、セル生成部１２１１ａは、ピン列において東側に１列隣のピンに係るピン情報ＴＩｎｆｏ（すなわち、中心座標の列Ｖの値が１つ大きいピン情報ＴＩｎｆｏ）を処理対象とする（Ｓ４−９２１−２ｊ）。また、セル生成部１２１１ａは、変数ｉに２を加算する（Ｓ４−９２１−２ｋ）。すなわち、処理対象のセルデータがセル列において２列分東側にずらされる。
【０１１９】
一方、ピン情報ＴＩｎｆｏの列番号が最大値である場合（Ｓ４−９２１−２ｉでＮｏ）、セル生成部１２１１ａは、当該ピン情報ＴＩｎｆｏの行番号が最大値（ピンの行数）に達しているか否かを判定する（１−１−２ｌ）。ピンの行数は、着目部品の部品情報ＰＩｎｆｏ（図７）のピン配行サイズｒの値によって特定される。ピン情報ＴＩｎｆｏの行番号が最大値でない場合（Ｓ４−９２１−２ｌでＮｏ）、セル生成部１２１１ａは、次のピン行（南側の行）において先頭のピンに対応するピン情報ＴＩｎｆｏを処理対象とする（Ｓ４−９２１−２ｍ）。また、セル生成部１２１１ａは、変数ｉに２ｃ＋４を加算する（Ｓ４−９２１−２ｋ）。すなわち、セル行列において南側に２行先（すなわち、次の偶数行）の２列目のセルに対応するセルデータが処理対象とされる。
【０１２０】
ステップＳ４−９２１−２ｋ又はステップＳ４−９２１−２ｎに続いて、次の偶数行偶数列のセル（セルデータ）についてステップＳ４−９２１−２ｃ以降の処理が繰り返される。全てのピンが処理されると（Ｓ４−９２１−２ｌでＹｅｓ）、図２８の処理は終了する。
【０１２１】
以上で図２２のステップＳ４−９２１の説明は終了する。続いて、図２２のステップＳ４−９２２の詳細について説明する。図３０は、セルの容量の算出処理の処理手順を説明するためのフローチャートである。
【０１２２】
ステップＳ４−９２２−１において、セル容量算出部１２１１ｂは、水平方向（東西方向）に隣接するピン間の配線容量を計算し、Ｖ属性のセルデータ（セル属性の値が「Ｖ」のセルデータ）の容量（ｃａｐ）に計算結果を記録する。続いて、セル容量算出部１２１１ｂは、垂直方向（南北方向）に隣接するピン間の配線容量を計算し、Ｈ属性のセルデータ（セル属性の容量に計算結果を記録する（Ｓ４−９２２−２）。続いて、セル容量算出部１２１１ｂは、対角ピン間の配線容量を計算し、ＳＢ属性のセルデータの容量に計算結果を記録する（Ｓ４−９２２−３）。続いて、セル容量算出部１２１１ｂは、空きピンの配線容量を計算し、ＥＰ属性のセルデータの容量に計算結果を記録する（Ｓ４−９２２−４）。続いて、セル容量算出部１２１１ｂは、Ｄ属性のセルデータの容量に０（ゼロ）を記録する（Ｓ４−９２２−５）。続いて、セル容量算出部１２１１ｂは、全てのセルデータの容量（ｃａｐ）の値を当初容量（ｃａｐ２）に転記する（退避しておく）（Ｓ４−９２２−６）。
【０１２３】
ところで、各セルの容量の算出には、図３１に示されるような配線ルールが利用される。配線ルールは、図３１に示されるパラメータによって規定される。
【０１２４】
図３１は、配線ルールを規定するパラメータを説明するための図である。同図において、円はピンを示す。また、水平方向の２本の線は配線を示す。同図に示されるように配線ルールは、ｌｘ、ｌｙ、ＶＲ、ＳＶ、ＳＷ、及びＳＳ等のパラメータによって規定される。
【０１２５】
ｌｘは、ピンの水平方向の中心間距離である。ｌｙは、ピンの垂直方向の中心間距離である。ＶＲは、ピンの半径である。ＳＶは、配線（ネット）とピンの間隔である。ＳＷは、配線の幅（太さ）である。ＳＳは、配線と配線との間隔である。
【０１２６】
なお、ｌｘ及びｌｙには、着目部品の部品情報ＰＩｎｆｏ（図７）のピンピッチ（ｌｘ、ｌｙ）の値が適用される。ＶＲには、着目部品に対するピン情報ＴＩｎｆｏ（図２９）の半径ｒの値が適用される。本実施の形態では、便宜上、同一部品における全てのピンの半径ｒの値は同じであるとする。ＳＷには、配線幅情報ＷＲｕｌｅ（図１０）において、着目層Ｌに対する線幅が適用される。本実施の形態では、便宜上、同一層における全ての線幅は同じであるとする。ＳＶ及びＳＳには、間隙ルール情報記憶部Ｄ８に記録されている値が適用される。
【０１２７】
図３２は、間隙ルール情報記憶部の構成例を示す図である。同図に示されるように、間隙ルール情報記憶部Ｄ８には、間隙ルール情報ＣＲｕｌｅとして、層ごとに、間隙値（実寸値）が記録されている。間隙値は、配線とピンとの間の値と、配線間の値とを含む、したがって、着目層Ｌに対する間隙ルール情報ＣＲｕｌｅにおいて、配線とピンとの間の間隙値が、図３１のＳＶに適用される。また、配線間の間隙値が図３１のＳＳに適用される。
【０１２８】
図３１に示したパラメータを利用して、図３０の各ステップの詳細について説明する。なお、図３０における処理は、予め実行されていてもよい。この場合、当該処理の実行結果として得られる値（各ボトルネック箇所に応じた容量）が配線ルールとして記録されていればよい。
【０１２９】
まず、ステップＳ４−９２２−１の詳細について説明する。図３３は、水平方向に隣接するピン間の配線容量の算出処理の処理手順を説明するためのフローチャートである。
【０１３０】
ステップＳ４−９２２−１Ａにおいて、セル容量算出部１２１１ｂは、ｄ＝ｌｘ−２×（ＶＲ＋ＳＶ）を計算する。計算結果ｄは、水平方向のピン間において配線に利用可能な最大距離である。続いて、セル容量算出部１２１１ｂは、ｄが配線の幅ＳＷ以上か否かを判定する（Ｓ４−９２２−１Ｂ）。ｄが配線の幅ＳＷ以上である場合（Ｓ４−９２２−１ＢでＹｅｓ）、セル容量算出部１２１１ｂは、ｄ＝ｄ−ＳＷを計算し、続いて、ｃａｐＶ＝１＋ｆｌｏｏｒ（ｄ／（ＳＳ＋ＳＷ））を計算する（Ｓ４−９２２−１Ｃ）。ｄ＝ｄ−ＳＷの計算結果ｄは、１本の配線によって余った距離を示す。また、ｃａｐＶ＝１＋ｆｌｏｏｒ（ｄ／（ＳＳ＋ＳＷ））の計算結果ｃａｐＶは、水平方向のピン間における配線可能数を示す。なお、ｆｌｏｏｒ関数は、引数とされた数値の最大の整数値を計算する関数である。
【０１３１】
一方、ｄが配線の幅ＳＷ未満である場合（Ｓ４−９２２−１ＢでＮｏ）、セル容量算出部１２１１ｂは、ｃａｐＶの値を０とする（Ｓ４−９２２−１Ｄ）。ステップＳ４−９２２−１Ｃ又はＳ４−９２２−１Ｄに続いて、セル容量算出部１２１１ｂは、ｃａｐＶの値を全てのＶ属性のセルデータの容量（ｃａｐ）に記録する（Ｓ４−９２２−１Ｅ）。
【０１３２】
なお、ステップＳ４−９２２−２については、図３３より自明であるためその説明は省略する。すなわち、図３３におけるｌｘをｌｙに置き換えて、ｃａｐＶの値をＨ属性のセルデータの容量に記録すればよい。
【０１３３】
続いて、ステップＳ４−９２２−３の詳細について説明する。図３４は、対角ピン間の配線容量の算出処理の処理手順を説明するためのフローチャートである。
【０１３４】
ステップＳ４−９２２−３Ａにおいて、セル容量算出部１２１１ｂは、Ｌ＝ｍｉｎ（ｌｘ，ｌｙ）を計算し、続いて、ｄ＝Ｌ×√２−２×（ＶＲ＋ＳＶ）を計算する。Ｌ＝ｍｉｎ（ｌｘ，ｌｙ）の計算結果Ｌは、ｌｘとｌｙとの最小値である。ｄ＝Ｌ×√２−２×（ＶＲ＋ＳＶ）の計算結果は、対角ピン間において配線に利用可能な最大距離である。
【０１３５】
続いて、セル容量算出部１２１１ｂは、ｄが配線の幅ＳＷ以上か否かを判定する（Ｓ４−９２２−３Ｂ）。ｄが配線の幅ＳＷ以上である場合（Ｓ４−９２２−３ＢでＹｅｓ）、セル容量算出部１２１１ｂは、ｄ＝ｄ−ＳＷを計算し、続いて、ｃａｐＳＢ＝１＋ｆｌｏｏｒ（ｄ／（ＳＳ＋ＳＷ））を計算する（Ｓ４−９２２−３Ｃ）。ｄ＝ｄ−ＳＷの計算結果ｄは、１本の配線によって余った距離を示す。また、ｃａｐＳＢ＝１＋ｆｌｏｏｒ（ｄ／（ＳＳ＋ＳＷ））の計算結果ｃａｐＳＢは、対角ピン間における配線可能数を示す。
【０１３６】
一方、ｄが配線の幅ＳＷ未満である場合（Ｓ４−９２２−３ＢでＮｏ）、セル容量算出部１２１１ｂは、ｃａｐＳＢの値を０とする（Ｓ４−９２２−３Ｄ）。ステップＳ４−９２２−３Ｃ又はＳ４−９２２−３Ｄに続いて、セル容量算出部１２１１ｂは、ｃａｐＳＢの値を全てのＳＢ属性のセルデータの容量（ｃａｐ）に記録する（Ｓ４−９２２−３Ｅ）。
【０１３７】
続いて、ステップＳ４−９２２−４の詳細について説明する。図３５は、空きピンの配線容量の算出処理の処理手順を説明するためのフローチャートである。
【０１３８】
ステップＳ４−９２２−４Ａにおいて、セル容量算出部１２１１ｂは、ｄ＝２×ＶＲを計算する。ｄ＝２×ＶＲの計算結果ｄは、ピンの直径である。続いて、セル容量算出部１２１１ｂは、ｄが配線の幅ＳＷ以上か否かを判定する（Ｓ４−９２２−４Ｂ）。ｄが配線の幅ＳＷ以上である場合（Ｓ４−９２２−４ＢでＹｅｓ）、セル容量算出部１２１１ｂは、ｄ＝ｄ−ＳＷを計算し、続いて、ｃａｐＥＰ＝１＋ｆｌｏｏｒ（ｄ／（ＳＳ＋ＳＷ））を計算する（Ｓ４−９２２−４Ｃ）。ｄ＝ｄ−ＳＷの計算結果ｄは、１本の配線によって余った距離を示す。また、ｃａｐＥＰ＝１＋ｆｌｏｏｒ（ｄ／（ＳＳ＋ＳＷ））の計算結果ｃａｐＥＰは、空きピンにおける配線可能数を示す。
【０１３９】
一方、ｄが配線の幅ＳＷ未満である場合（Ｓ４−９２２−４ＢでＮｏ）、セル容量算出部１２１１ｂは、ｃａｐＥＰの値を０とする（Ｓ４−９２２−４Ｄ）。ステップＳ４−９２２−４Ｃ又はＳ４−９２２−４Ｄに続いて、セル容量算出部１２１１ｂは、ｃａｐＥＰの値を全てのＥＰ属性のセルデータの容量（ｃａｐ）に記録する（Ｓ４−９２２−４Ｅ）。
【０１４０】
なお、一つの部品上においてピンの形状（半径等）が均一で無い場合、図３３又は図３４等の処理において、処理対象とされるセルごとに、当該セル関係するピンの形状を用いて図３３、図３４、又は図３５等の処理が実行されればよい。
【０１４１】
以上で図２２のステップＳ４−９２２の説明は終了する。続いて、図２２のステップＳ４−９２３の詳細について説明する。図３６は、ノードの生成処理の処理手順を説明するためのフローチャートである。
【０１４２】
ステップＳ４−９２３−１において、ノード生成部１２１１ｃは、セル数×２＋２個の要素を有するノードデータの配列（ノードデータ配列ｖ）を補助記憶装置１０２に生成する。ノードデータ配列ｖは、各セルに２個ずつのノードデータと、湧き出しノードＳ及び流入ノードＴのそれぞれのノードデータとを格納するための配列である。なお、ノードデータ配列ｖの最初の要素（ｖ［０］）は、湧き出しノードＳに対応する。また、最後の要素（ｖ［ｖｅｒｔｅｘＮｕｍ−１］）は、流入ノードＴに対応する。ｖｅｒｔｅｘＮｕｍは、ノードデータ配列の要素数である。
【０１４３】
続いて、ノード生成部１２１１ｃは、ノードデータ配列の最初の要素及び最後の要素を除く全てのノードデータを各セルデータに順番に２個ずつ割り当て、ノードデータとセルデータとの間に双方向の関連付けを記録する（Ｓ４−９２３−２）。すなわち、各セルデータの入り口ノードのノードＩＤ（ｉＮ）と出口ノードのノードＩＤ（ｏＮ）のそれぞれに、当該セルデータに割り当てられた二つのノードデータの一方のノードＩＤと他方のノードＩＤとを記録する。また、セルデータに割り当てられたノードデータのオーナーセルのセルＩＤ（ｃｅｌｌＩＤ）に当該セルデータのセルＩＤを記録する。なお、ノードＩＤは、ノードデータ配列ｖにおける添え字である。セルＩＤは、セルデータ配列ｃｅｌｌにおける添え字である。
【０１４４】
続いて、ノード生成部１２１１ｃは、ノードデータ配列ｖの最初の要素及び最後の要素を除く全てのノードデータの相棒ノードＩＤ（ｂｒｏｓ）に相棒ノード（同一セルに割り当てられた他方のノード）のノードデータのノードＩＤを記録する（Ｓ４−９２３−３）。
【０１４５】
続いて、ノード生成部１２１１ｃは、各ノードデータのメンバ変数に初期値を記録する（Ｓ４−９２３−４）。具体的には、ラベル伝播元ノードＩＤ（ｐＩＤ）にＮＵＬＬＩＤを記録する。ＮＵＬＬＩＤは、データが無いことを示すＩＤである。また、最短経路長（ｄｉｓｔ）に０を記録する。また、入り口ノードとして割り当てられたノードデータのノード属性（ａｔｔｒ）に「ｉｎ」を記録し、出口ノードとして割り当てられたノードデータのノード属性（ａｔｔｒ）に「ｏｕｔ」を記録する。また、探索ソースフラグ（ｓＦｌａｇ）、探索ターゲットフラグ（ｔＦｌａｇ）のそれぞれにｆａｌｓｅを記録する。
【０１４６】
以上で図２２のステップＳ４−９２３の説明は終了する。続いて、図２２のステップＳ４−９２４の詳細について説明する。図３７は、湧き出しノード及び流入ノードの生成処理の処理手順を説明するためのフローチャートである。
【０１４７】
ステップＳ４−９２４−１において、ノード生成部１２１１ｃは、湧き出しノードＳに対応するノードデータ（ノードデータ配列ｖ［０］）の各メンバ変数に初期値を記録する。具体的には、ラベル伝播元ノードＩＤ（ｐＩＤ）にＮＵＬＬＩＤを記録する。また、最短経路長（ｄｉｓｔ）に０を記録する。また、ノード属性（ａｔｔｒ）にｏｕｔを記録する。また、探索ソースフラグ（ｓＦｌａｇ）にｔｒｕｅを記録し、探索ターゲットフラグ（ｔＦｌａｇ）にｆａｌｓｅを記録する。
【０１４８】
続いて、ノード生成部１２１１ｃは、流入ノードＴに対応するノードデータ（ノードデータ配列ｖ［ｖｅｒｔｅｘＮｕｍ−１］）の各メンバ変数に初期値を記録する（Ｓ４−９２４−２）。具体的には、ラベル伝播元ノードＩＤ（ｐＩＤ）にＮＵＬＬＩＤを記録する。また、最短経路長（ｄｉｓｔ）にｄｉｓｔＭａｘを記録する。ｄｉｓｔＭａｘは、経路探索における経路長の最大値である。また、ノード属性（ａｔｔｒ）にｉｎを記録する。また、探索ソースフラグ（ｓＦｌａｇ）にｆａｌｓｅを記録し、探索ターゲットフラグ（ｔＦｌａｇ）にｔｒｕｅを記録する。
【０１４９】
以上で図２２のステップＳ４−９２４の説明は終了する。続いて、図２２のステップＳ４−９２５の詳細について説明する。図３８は、有向枝の生成処理の処理手順を説明するためのフローチャートである。
【０１５０】
ステップＳ４−９２５−１において、有向枝生成部１２１１ｄは、全てのセルについて入り口ノードから出口ノードへの有向枝を生成する。
【０１５１】
図３９は、セルの入り口ノードから出口ノードへの有向枝を示す図である。同図では、便宜上９個のセルが示されている。各セルには、入り口ノードを示す点から出口ノードを示す点への矢印が記されている。当該矢印が、入り口ノードから出口ノードへの有向枝を示す。
【０１５２】
続いて、有向枝生成部１２１１ｄは、隣接するセル間で（セル間を跨いで）、出口ノードから入り口ノードへの有向枝を相互に生成する（Ｓ４−９２５−２）。
【０１５３】
続いて、図３８のステップＳ４−９２５−１の詳細について説明する。図４０は、セルの入り口ノードから出口ノードへの有向枝の生成処理の処理手順を説明するためのフローチャートである。
【０１５４】
ステップＳ４−９２５−１Ａにおいて、有向枝生成部１２１１ｄは、変数ｃｅｌｌＩＤＭａｘにセルの個数−１を代入する。また、有向枝生成部１２１１ｄは、変数ｉを０で初期化する。ここで、ｃｅｌｌＩＤＭａｘは、セルＩＤの最大値（すなわち、セルデータ配列ｃｅｌｌの添え字の最大値）を示す。また、変数ｉは、セルデータ配列ｃｅｌｌにおいて、処理対象とする要素（セルデータ）の添え字として利用される。
【０１５５】
続いて、有向枝生成部１２１１ｄは、枝データｅをメモリ装置１０３に一つ生成し、枝データのメンバ変数に初期値を記録する（Ｓ４−９２５−１Ｂ）。
【０１５６】
図４１は、枝データの構成例を示す図である。同図において枝データは、始点ノードＩＤ（ｓＮ）、終点ノードＩＤ（ｅＮ）、枝の長さ（ｅＬｅｎ）、容量（ｃａｐ）、フロー（ｆｌｏｗ）、及び残余（ｒｅｓ）等のメンバ変数（データ項目）を有する。
【０１５７】
始点ノードＩＤ（ｓＮ）は、枝データが対応する有向枝の始点に位置するノードのノードＩＤである。終点ノードＩＤ（ｅＮ）は、枝データが対応する有向枝の終点に位置するノードのノードＩＤである。枝の長（ｅＬｅｎ）さは、有向枝の長さである。本実施の形態において、全ての有向枝は同じ長さ（１）を有する。容量（ｃａｐ）は、有向枝の容量である。有向枝の容量は、経路探索において有向枝を経路に割り当てることが可能な回数の最大値を示す。フロー（ｆｌｏｗ）は、有向枝が経路に割り当てられた（経路に使用された）回数である。残余（ｒｅｓ）は、有向枝を経路に割り当てられる残りの回数を示す。すなわち、ｒｅｓ＝ｃａｐ−ｆｌｏｗの関係を有する。
【０１５８】
ステップＳ４−９２５−１Ｂでは、生成された枝データｅの始点ノードＩＤ（ｓＮ）に処理対象のセルデータの入り口ノードＩＤ（ｉＮ）が記録される。また、枝データｅの終点ノードＩＤ（ｅＮ）に処理対象のセルデータの出口ノードＩＤ（ｏＮ）が記録される。これによって、枝データｅは、処理対象のセルの入り口ノードから出口ノードへの有向枝に対応する枝データとなる。また、枝データｅの容量（ｃａｐ）に処理対象のセルデータの容量（ｃａｐ）が記録される。すなわち、セルの入り口ノードから出口ノードへの有向枝の容量は、当該セルの容量と同じとされる。また、枝データｅの枝の長さ（ｅＬｅｎ）に１が記録される。また、枝データｅのフロー（ｆｌｏｗ）に初期値０が記録される。また、枝データｅの残余（ｒｅｓ）に枝データｅの容量（ｃａｐ）の値が記録される。
【０１５９】
続いて、有向枝生成部１２１１ｄは、枝データｅの終点ノードのノードデータ（ノードデータ配列ｖ［ｅ−＞ｅＮ］）の相棒ノードとの有向枝（ｅＢｒｏｓ）に枝データｅを記録する（Ｓ４−９２５−１Ｃ）。続いて、有向枝生成部１２１１ｄは、枝データｅの始点ノードのノードデータ（ノードデータ配列ｖ［ｅ−＞ｓＮ］）の相棒ノードとの有向枝（ｅＢｒｏｓ）に枝データｅを記録する（Ｓ４−９２５−１Ｄ）。ステップＳ４−９２５−１Ｃ及びＳ４−９２５−１Ｄによって、処理対象のセルに属する二つのノードのノードデータのそれぞれに、他方のノード（相棒ノード）との有向枝の枝データが登録されたことになる。
【０１６０】
続いて、有向枝生成部１２１１ｄは、ｉの値をインクリメントする（Ｓ４−９２５−１Ｅ）。続いて、有向枝生成部１２１１ｄは、ｉの値がｃｅｌｌＭａｘに達したか否か、すなわち、全てのセルデータについて処理が完了したか否かを判定する（Ｓ４−９２５−１Ｆ）。ｉの値がｃｅｌｌＭａｘに達していない場合（Ｓ４−９２５−１ＦでＮｏ）、有向枝生成部１２１１ｄは、次のセルデータを処理対象としてステップＳ４−９２５−１Ｂ以降を繰り返す。ｉの値がｃｅｌｌＭａｘに達した場合（Ｓ４−９２５−１ＦでＮｏ）、有向枝生成部１２１１ｄは、図４０の処理を終了させる。その結果、全てのセル内の入り口ノードから出口ノードへの有向枝が生成される（図３９参照）。
【０１６１】
続いて、図３８のステップＳ４−９２５−２の詳細について説明する。図４２は、隣接セル間の出口ノードから入り口ノードへの有向枝の生成処理の処理手順を説明するためのフローチャートである。
【０１６２】
ステップＳ４−９２５−２１において、有向枝生成部１２１１ｄは、東西方向に隣接するセルの出口ノードから入り口ノードへの有向枝を相互に生成する。
【０１６３】
図４３は、東西方向に隣接するセルの出口ノードから入り口ノードへの有向枝を示す図である。同図に示されるように、ステップＳ４−９２５−２１では、東側のセルの出口ノードから西側のセルの入り口ノードへの有向枝と、西側のセルの出口ノードから東側のセルの入り口ノードへの有向枝とが生成される。
【０１６４】
続いて、有向枝生成部１２１１ｄは、南北方向に隣接するセルの出口ノードから入り口ノードへの有向枝を相互に生成する（Ｓ４−９２５−２２）。
【０１６５】
図４４は、南北方向に隣接するセルの出口ノードから入り口ノードへの有向枝を示す図である。同図に示されるように、ステップＳ４−９２５−２２では、南側のセルの出口ノードから北側のセルの入り口ノードへの有向枝と、北側のセルの出口ノードから南側のセルの入り口ノードへの有向枝とが生成される。
【０１６６】
続いて、有向枝生成部１２１１ｄは、ＳＢ属性のセル（対角ピン間のセル）に属するノードについて、斜め方向（北東方向、北西方向、南東方向、又は南西方向）に隣接するセル（斜め隣接セル）に属するノードとの間に有向枝を相互に生成する（Ｓ４−９２５−２３）。
【０１６７】
図４５は、斜め隣接セルのノード間の有向枝を示す図である。同図に示されるように、ステップＳ４−９２５−２３では、ＳＢセルの出口ノードから全ての斜め隣接セルの入り口ノードへの有向枝と、当該全ての斜め隣接セルの出口ノードからＳＢセルの入り口ノードへの有向枝とが生成される。
【０１６８】
続いて、図４２のステップＳ４−９２５−２１の詳細について説明する。図４６は、東西方向に隣接するセルの出口ノードから入り口ノードへの有向枝の生成処理の処理手順を説明するためのフローチャートである。
【０１６９】
ステップＳ４−９２５−２１Ａにおいて、有向枝生成部１２１１ｄは、変数ｃｏｌＭａｘに列方向のセルの数を、変数ｒｏｗＭａｘに行方向のセルの数を代入する。また、有向枝生成部１２１１ｄは、変数ｉと変数ｊとをそれぞれ０で初期化する。変数ｉは、処理対象とされる東西に隣接する二つのセルのうち、西側のセルの列方向へのオフセット値として利用される。変数ｊは、処理対象とされる東西に隣接する二つのセルの行方向のオフセット値として利用される。
【０１７０】
続いて、有向枝生成部１２１１ｄは、ｗ＿ｃｅｌｌ＿ｉｄ＝ｃｏｌＭａｘ×ｊ＋ｉを計算し、更に、ｅ＿ｃｅｌｌ＿ｉｄ＝ｗ＿ｃｅｌｌ＿ｉｄ＋１を計算する（Ｓ４−９２５−２１Ｂ）。ｗ＿ｃｅｌｌ＿ｉｄは、セルデータ配列ｃｅｌｌにおいて、処理対象とされる西側のセル（西セル）に対応する要素（セルデータ）に対する添え字である。また、ｅ＿ｃｅｌｌ＿ｉｄは、処理対象とされる東側のセル（東セル）に対応する要素（セルデータ）に対する添え字である。なお、最初は、西セルは、１行１列目のセルであり、東セルは１行２列目のセルである。
【０１７１】
続いて、有向枝生成部１２１１ｄは、西セルの出口ノードから東セルの入り口ノードへの有向枝に対応させる枝データｅをメモリ装置１０３に一つ生成し、枝データｅのメンバ変数に値を記録する（Ｓ４−９２５−２１Ｃ）。具体的には、枝データｅの始点ノードＩＤ（ｓＮ）に西セルのセルデータ（セルデータ配列ｃｅｌｌ［ｗ＿ｃｅｌｌ＿ｉｄ］）の出口ノードＩＤ（ｏＮ）が記録される。また、枝データｅの終点ノードＩＤ（ｅＮ）に東セルのセルデータ（セルデータ配列ｃｅｌｌ［ｅ＿ｃｅｌｌ＿ｉｄ］）の入り口ノードＩＤ（ｉＮ）が記録される。これによって、枝データｅは、西セルの出口ノードから東セルの入り口ノードへの有向枝に対応する枝データとなる。また、西セルのセルデータの容量（ｃａｐ）の値と東セルのセルデータの容量の値とのうち小さい方の値が枝データｅの容量（ｃａｐ）に記録される。すなわち、東西に隣接するセルの出口ノードから入り口ノードへの有向枝の容量は、当該隣接セルの容量の最小値とされる。また、枝データｅの枝の長さ（ｅＬｅｎ）に１が記録される。また、枝データｅのフロー（ｆｌｏｗ）に初期値０が記録される。また、枝データｅの残余（ｒｅｓ）に枝データｅの容量（ｃａｐ）の値が記録される。
【０１７２】
また、有向枝生成部１２１１ｄは、枝データｅの始点ノードのノードデータ（ノードデータ配列ｖ［ｅ−＞ｓＮ］）の東隣セルのノードとの有向枝（ｅＥ）に枝データｅを記録する。また、有向枝生成部１２１１ｄは、枝データｅの終点ノードのノードデータ（ノードデータ配列ｖ［ｅ−＞ｅＮ］）の西隣セルのノードとの有向枝（ｅＷ）に枝データｅを記録する。これによって、東セルの出口ノードのノードデータと西セルの入り口ノードのノードデータとのそれぞれに、他方のノードとの有向枝の枝データが登録されたことになる。
【０１７３】
続いて、有向枝生成部１２１１ｄは、東セルの出口ノードから西セルの入り口ノードへの有向枝に対応させる枝データｅをメモリ装置１０３に一つ生成し、枝データｅのメンバ変数に値を記録する（Ｓ４−９２５−２１Ｄ）。具体的には、枝データｅの始点ノードＩＤ（ｓＮ）に東セルのセルデータ（セルデータ配列ｃｅｌｌ［ｅ＿ｃｅｌｌ＿ｉｄ］）の出口ノードＩＤ（ｏＮ）が記録される。また、枝データｅの終点ノードＩＤ（ｅＮ）に西セルのセルデータ（セルデータ配列ｃｅｌｌ［ｗ＿ｃｅｌｌ＿ｉｄ］）の入り口ノードＩＤ（ｉＮ）が記録される。これによって、枝データｅは、東セルの出口ノードから西セルの入り口ノードへの有向枝に対応する枝データとなる。また、東セルのセルデータの容量（ｃａｐ）の値と西セルのセルデータの容量の値とのうち小さい方の値が枝データｅの容量（ｃａｐ）に記録される。また、枝データｅの枝の長さ（ｅＬｅｎ）に１が記録される。また、枝データｅのフロー（ｆｌｏｗ）に初期値０が記録される。また、枝データｅの残余（ｒｅｓ）に枝データｅの容量（ｃａｐ）の値が記録される。
【０１７４】
また、有向枝生成部１２１１ｄは、枝データｅの始点ノードのノードデータ（ノードデータ配列ｖ［ｅ−＞ｓＮ］）の西隣セルのノードとの有向枝（ｅＷ）に枝データｅを記録する。また、有向枝生成部１２１１ｄは、枝データｅの終点ノードのノードデータ（ノードデータ配列ｖ［ｅ−＞ｅＮ］）の東隣セルのノードとの有向枝（ｅＥ）に枝データｅを記録する。これによって、西セルの出口ノードのノードデータと東セルの入り口ノードのノードデータとのそれぞれに、他方のノードとの有向枝の枝データが登録されたことになる。
【０１７５】
続いて、有向枝生成部１２１１ｄは、変数ｉをインクリメントする（Ｓ４−９２５−２１Ｅ）。すなわち、処理対象とされる東西に隣接する二つのセルがセル行列において東側に１列分ずらされる。続いて、有向枝生成部１２１１ｄは、変数ｉの値がｃｏｌＭａｘ−１に達したか否か、すなわち、処理対象とされる西セルがセル行列の東端に達したか否かを判定する（Ｓ４−９２５−２１Ｆ）。変数ｉの値がｃｏｌＭａｘ−１に達していない場合（Ｓ４−９２５−２１ＦでＮｏ）、有向枝生成部１２１１ｄは、東側に一つずれた東西の隣接セルを処理対象としてステップＳ４−９２５−２１Ｂ以降の処理を実行する。
【０１７６】
変数ｉの値がｃｏｌＭａｘ−１に達した場合（Ｓ４−９２５−２１ＦでＹｅｓ）、有向枝生成部１２１１ｄは、変数ｊの値をインクリメントする（Ｓ４−９２５−２１Ｇ）。すなわち、処理対象とされる東西に隣接する二つのセルがセル行列において南側に１行分ずらされる。続いて、有向枝生成部１２１１ｄは、変数ｊの値がｒｏｗＭａｘ−１以下であるか否か、すなわち、処理対象とされるセルがセル行列の南端に達していないか否かを判定する（Ｓ４−９２５−２１Ｈ）。変数ｊの値がｒｏｗＭａｘ−１以下である場合（Ｓ４−９２５−２１ＨでＹｅｓ）、有向枝生成部１２１１ｄは、変数ｉの値を０にし（Ｓ４−９２５−２１Ｉ）、ステップＳ４−９２５−２１Ｂ以降の処理を繰り返す。変数ｉの値を０にすることにより、処理対象とされる西セルがセル行列における西端に移動される。一方、変数ｊの値がｒｏｗＭａｘ−１を超える場合（Ｓ４−９２５−２１ＨでＮｏ）、有向枝生成部１２１１ｄは、図４６の処理を終了させる。図４６の処理結果は、図４３に示した通りである。
【０１７７】
続いて、図４２のステップＳ４−９２５−２２の詳細について説明する。図４７は、南北方向に隣接するセルの出口ノードから入り口ノードへの有向枝の生成処理の処理手順を説明するためのフローチャートである。
【０１７８】
ステップＳ４−９２５−２２Ａにおいて、有向枝生成部１２１１ｄは、変数ｃｏｌＭａｘに列方向のセルの数を、変数ｒｏｗＭａｘに行方向のセルの数を代入する。また、有向枝生成部１２１１ｄは、変数ｉと変数ｊとをそれぞれ０で初期化する。変数ｉは、処理対象とされる南北に隣接する二つのセルの列方向のオフセット値として利用される。
変数ｊは、処理対象とされる南北に隣接する二つのセルのうち、北側のセルの行方向へのオフセット値として利用される。
【０１７９】
続いて、有向枝生成部１２１１ｄは、ｎ＿ｃｅｌｌ＿ｉｄ＝ｃｏｌＭａｘ×ｊ＋ｉを計算し、更に、ｓ＿ｃｅｌｌ＿ｉｄ＝ｎ＿ｃｅｌｌ＿ｉｄ＋ｃｏｌＭａｘを計算する（Ｓ４−９２５−２２Ｂ）。ｎ＿ｃｅｌｌ＿ｉｄは、セルデータ配列ｃｅｌｌにおいて、処理対象とされる北側のセル（北セル）に対応する要素（セルデータ）に対する添え字である。また、ｓ＿ｃｅｌｌ＿ｉｄは、処理対象とされる南側のセル（南セル）に対応する要素（セルデータ）に対する添え字である。なお、最初は、北セルは、１行１列目のセルであり、南セルは２行１列目のセルである。
【０１８０】
続いて、有向枝生成部１２１１ｄは、北セルの出口ノードから南セルの入り口ノードへの有向枝に対応させる枝データｅをメモリ装置１０３に一つ生成し、枝データｅのメンバ変数に値を記録する（Ｓ４−９２５−２２Ｃ）。具体的には、枝データｅの始点ノードＩＤ（ｓＮ）に北セルのセルデータ（セルデータ配列ｃｅｌｌ［ｎ＿ｃｅｌｌ＿ｉｄ］）の出口ノードＩＤ（ｏＮ）が記録される。また、枝データｅの終点ノードＩＤ（ｅＮ）に南セルのセルデータ（セルデータ配列ｃｅｌｌ［ｓ＿ｃｅｌｌ＿ｉｄ］）の入り口ノードＩＤ（ｉＮ）が記録される。これによって、枝データｅは、北セルの出口ノードから南セルの入り口ノードへの有向枝に対応する枝データとなる。また、北セルのセルデータの容量（ｃａｐ）の値と南セルのセルデータの容量の値とのうち小さい方の値が枝データｅの容量（ｃａｐ）に記録される。すなわち、南北に隣接するセルの出口ノードから入り口ノードへの有向枝の容量は、当該隣接セルの容量の最小値とされる。また、枝データｅの枝の長さ（ｅＬｅｎ）に１が記録される。また、枝データｅのフロー（ｆｌｏｗ）に初期値０が記録される。また、枝データｅの残余（ｒｅｓ）に枝データｅの容量（ｃａｐ）の値が記録される。
【０１８１】
また、有向枝生成部１２１１ｄは、枝データｅの始点ノードのノードデータ（ノードデータ配列ｖ［ｅ−＞ｓＮ］）の南隣セルのノードとの有向枝（ｅＳ）に枝データｅを記録する。また、有向枝生成部１２１１ｄは、枝データｅの終点ノードのノードデータ（ノードデータ配列ｖ［ｅ−＞ｅＮ］）の北隣セルのノードとの有向枝（ｅＮ）に枝データｅを記録する。これによって、北セルの出口ノードのノードデータと南セルの入り口ノードのノードデータとのそれぞれに、他方のノードとの有向枝の枝データが登録されたことになる。
【０１８２】
続いて、有向枝生成部１２１１ｄは、南セルの出口ノードから北セルの入り口ノードへの有向枝に対応させる枝データｅをメモリ装置１０３に一つ生成し、枝データｅのメンバ変数に値を記録する（Ｓ４−９２５−２２Ｄ）。具体的には、枝データｅの始点ノードＩＤ（ｓＮ）に南セルのセルデータ（セルデータ配列ｃｅｌｌ［ｓ＿ｃｅｌｌ＿ｉｄ］）の出口ノードＩＤ（ｏＮ）が記録される。また、枝データｅの終点ノードＩＤ（ｅＮ）に北セルのセルデータ（セルデータ配列ｃｅｌｌ［ｎ＿ｃｅｌｌ＿ｉｄ］）の入り口ノードＩＤ（ｉＮ）が記録される。これによって、枝データｅは、南セルの出口ノードから北セルの入り口ノードへの有向枝に対応する枝データとなる。また、南セルのセルデータの容量（ｃａｐ）の値と北セルのセルデータの容量の値とのうち小さい方の値が枝データｅの容量（ｃａｐ）に記録される。また、枝データｅの枝の長さ（ｅＬｅｎ）に１が記録される。また、枝データｅのフロー（ｆｌｏｗ）に初期値０が記録される。また、枝データｅの残余（ｒｅｓ）に枝データｅの容量（ｃａｐ）の値が記録される。
【０１８３】
また、有向枝生成部１２１１ｄは、枝データｅの始点ノードのノードデータ（ノードデータ配列ｖ［ｅ−＞ｓＮ］）の北隣セルのノードとの有向枝（ｅＮ）に枝データｅを記録する。また、有向枝生成部１２１１ｄは、枝データｅの終点ノードのノードデータ（ノードデータ配列ｖ［ｅ−＞ｅＮ］）の南隣セルのノードとの有向枝（ｅＳ）に枝データｅを記録する。これによって、南セルの出口ノードのノードデータと北セルの入り口ノードのノードデータとのそれぞれに、他方のノードとの有向枝の枝データが登録されたことになる。
【０１８４】
続いて、有向枝生成部１２１１ｄは、変数ｊをインクリメントする（Ｓ４−９２５−２２Ｅ）。すなわち、処理対象とされる南北に隣接する二つのセルがセル行列において南側に１行分ずらされる。続いて、有向枝生成部１２１１ｄは、変数ｊの値がｒｏｗＭａｘ−１に達したか否か、すなわち、処理対象とされる北セルがセル行列の南端に達したか否かを判定する（Ｓ４−９２５−２２Ｆ）。変数ｊの値がｒｏｗＭａｘ−１に達していない場合（Ｓ４−９２５−２２ＦでＮｏ）、有向枝生成部１２１１ｄは、南側に一つずれた南北の隣接セルを処理対象としてステップＳ４−９２５−２２Ｂ以降の処理を実行する。
【０１８５】
変数ｊの値がｒｏｗＭａｘ−１に達した場合（Ｓ４−９２５−２２ＦでＹｅｓ）、有向枝生成部１２１１ｄは、変数ｉの値をインクリメントする（Ｓ４−９２５−２２Ｇ）。すなわち、処理対象とされる南北に隣接する二つのセルがセル行列において東側に１列分ずらされる。続いて、有向枝生成部１２１１ｄは、変数ｉの値がｃｏｌＭａｘ−１以下であるか否か、すなわち、処理対象とされるセルがセル行列の東端に達していないか否かを判定する（Ｓ４−９２５−２２Ｈ）。変数ｉの値がｃｏｌＭａｘ−１以下である場合（Ｓ４−９２５−２２ＨでＹｅｓ）、有向枝生成部１２１１ｄは、変数ｊの値を０にし（Ｓ４−９２５−２２Ｉ）、ステップＳ４−９２５−２２Ｂ以降の処理を繰り返す。変数ｊの値を０にすることにより、処理対象とされる北セルがセル行列における北端に移動される。一方、変数ｉの値がｃｏｌＭａｘ−１を超える場合（Ｓ４−９２５−２２ＨでＮｏ）、有向枝生成部１２１１ｄは、図４７の処理を終了させる。図４７の処理結果は、図４４に示した通りである。
【０１８６】
続いて、図４２のステップＳ４−９２５−２３の詳細について説明する。図４８は、斜め隣接セルのノード間の有向枝の生成処理の処理手順を説明するためのフローチャートである。
【０１８７】
ステップＳ４−９２５−２３Ａにおいて、有向枝生成部１２１１ｄは、変数ｃｏｌＭａｘに列方向のセルの数を代入し、変数ｒｏｗＭａｘに行方向のセルの数を代入し、変数ｃｅｌｌＭａｘにセルの総数（ｃｏｌＭａｘ×ｒｏｗＭａｘ）を代入する。続いて、有向枝生成部１２１１ｄは、変数ｉに初期値０を代入する（Ｓ４−９２５−２３Ｂ）。変数ｉは、セルデータ配列ｃｅｌｌにおいて処理対象とする要素（セルデータ）の添え字として利用される。
【０１８８】
続いて、有向枝生成部１２１１ｄは、処理対象のセルデータ（セルデータ配列ｃｅｌｌ［ｉ］）のセル属性（ａｔｔｒ）の値が「ＳＢ（対角ピン間）」であるか否かを判定する（Ｓ４−９２５−２３Ｃ）。処理対象のセルデータのセル属性の値がＳＢの場合（Ｓ４−９２５−２３ＣでＹｅｓ）、有向枝生成部１２１１ｄは、当該セルデータの行番号（ｒ）が１より大きいか否かを判定することにより、当該セルデータのセルより北側にセル行が存在するか否かを判定する（Ｓ４−９２５−２３Ｄ）。
【０１８９】
当該セルデータのセルより北側にセル行が存在する場合（Ｓ４−９２５−２３ＤでＹｅｓ）、有向枝生成部１２１１ｄは、当該セルデータの列番号（ｃ）が１より大きいか否かを判定することにより、当該セルデータのセルより西側にセル列が存在するか否かを判定する（Ｓ４−９２５−２３Ｅ）。当該セルデータのセルより西側にセル列が存在する場合（Ｓ４−９２５−２３ＥでＹｅｓ）、有向枝生成部１２１１ｄは、当該セルと北西のセルとの間の有向枝を生成する（Ｓ４−９２５−２３Ｆ）。
【０１９０】
ステップＳ４−９２５−２３Ｆ、又はステップＳ４−９２５−２３ＥでＮｏの場合に続いて、有向枝生成部１２１１ｄは、処理対象のセルデータの列番号（ｃ）がｃｏｌＭａｘ−１以下であるか否かを判定することにより、当該セルデータのセルより東側にセル列が存在するか否かを判定する（Ｓ４−９２５−２３Ｇ）。当該セルデータのセルより東側にセル列が存在する場合（Ｓ４−９２５−２３ＧでＹｅｓ）、有向枝生成部１２１１ｄは、当該セルと北東のセルとの間の有向枝を生成する（Ｓ４−９２５−２３Ｈ）。
【０１９１】
ステップＳ４−９２５−２３Ｈ、ステップＳ４−９２５−２３ＧでＮｏの場合、又はステップＳ４−９２５−２３ＤでＮｏの場合に続いて、有向枝生成部１２１１ｄは、処理対象のセルデータの行番号（ｒ）がｒｏｗＭａｘ−１以下であるか否かを判定することにより、当該セルデータのセルより南側にセル行が存在するか否かを判定する（Ｓ４−９２５−２３Ｉ）。当該セルデータのセルより南側にセル行が存在する場合（Ｓ４−９２５−２３ＩでＹｅｓ）、有向枝生成部１２１１ｄは、当該セルデータの列番号（ｃ）が１より大きいか否かを判定することにより、当該セルデータのセルより西側にセル列が存在するか否かを判定する（Ｓ４−９２５−２３Ｊ）。当該セルデータのセルより西側にセル列が存在する場合（Ｓ４−９２５−２３ＪでＹｅｓ）、有向枝生成部１２１１ｄは、当該セルと南西のセルとの間の有向枝を生成する（Ｓ４−９２５−２３Ｋ）。
【０１９２】
ステップＳ４−９２５−３Ｋ、又はステップＳ４−９２５−２３ＪでＮｏの場合に続いて、有向枝生成部１２１１ｄは、処理対象のセルデータの列番号（ｃ）がｃｏｌＭａｘ−１以下であるか否かを判定することにより、当該セルデータのセルより東側にセル列が存在するか否かを判定する（Ｓ４−９２５−２３Ｌ）。当該セルデータのセルより東側にセル列が存在する場合（Ｓ４−９２５−２３ＬでＹｅｓ）、有向枝生成部１２１１ｄは、当該セルと南東のセルとの間の有向枝を生成する（Ｓ４−９２５−２３Ｍ）。
【０１９３】
ステップＳ４−９２５−２３Ｍ、ステップＳ４−９２５−２３ＬでＮｏの場合、ステップＳ４−９２５−２３ＩでＮｏの場合、又はステップＳ４−９２５−２３ＣでＮｏの場合に続いて、有向枝生成部１２１１ｄは、変数ｉをインクリメントする（Ｓ４−９２５−２３Ｎ）。続いて、有向枝生成部１２１１ｄは、変数ｉの値がｃｅｌｌＭａｘ（セルの総数）より小さいか否かを判定することにより、未処理のセルデータが残っているか否かを判定する（Ｓ４−９２５−２３Ｏ）。未処理のセルデータが残っている場合（Ｓ４−９２５−２３ＯでＹｅｓ）、有向枝生成部１２１１ｄは、次のセルデータを処理対象としてステップＳ４−９２５−２３Ｂ以降を繰り返す。未処理のセルデータが残っていない場合（Ｓ４−９２５−２３ＯでＮｏ）、有向枝生成部１２１１ｄは、図４８の処理を生成させる。図４８の処理結果は、図４５に示した通りである。
【０１９４】
続いて、図４８のステップＳ４−９２５−２３Ｆの詳細について説明する。図４９は、北西のセルとの有向枝の生成処理の処理手順を説明するためのフローチャートである。
【０１９５】
ステップＳ２３Ｆ−１において、有向枝生成部１２１１ｄは、ｎｗ＿ｃｅｌｌ＿ｉｄ＝ｉ−ｃｏｌＭａｘ−１を計算する。ここで、変数ｉ及びｃｏｌＭａｘの値は、図４８の処理においてステップＳ４−９２５−２３Ｆが呼び出された時点の値である。したがって、計算結果ｎｗ＿ｃｅｌｌ＿ｉｄは、図４８の処理において処理対象とされているセルデータのセルの北西のセル（北西セル）のセルデータに対する添え字である。
【０１９６】
続いて、有向枝生成部１２１１ｄは、処理対象のセルの出口ノードから北西セルの入り口ノードへの有向枝に対応させる枝データｅをメモリ装置１０３に一つ生成し、枝データｅのメンバ変数に値を記録する（Ｓ２３Ｆ−２）。具体的には、枝データｅの始点ノードＩＤ（ｓＮ）に処理対象のセルのセルデータ（セルデータ配列ｃｅｌｌ［ｉ］）の出口ノードＩＤ（ｏＮ）が記録される。また、枝データｅの終点ノードＩＤ（ｅＮ）に北西セルのセルデータ（セルデータ配列ｃｅｌｌ［ｎｗ＿ｃｅｌｌ＿ｉｄ］）の入り口ノードＩＤ（ｉＮ）が記録される。これによって、枝データｅは、処理対象のセルの出口ノードから北西セルの入り口ノードへの有向枝に対応する枝データとなる。また、処理対象のセルのセルデータの容量（ｃａｐ）の値と北西セルのセルデータの容量の値とのうち小さい方の値が枝データｅの容量（ｃａｐ）に記録される。また、枝データｅの枝の長さ（ｅＬｅｎ）に１が記録される。また、枝データｅのフロー（ｆｌｏｗ）に初期値０が記録される。また、枝データｅの残余（ｒｅｓ）に枝データｅの容量（ｃａｐ）の値が記録される。
【０１９７】
また、有向枝生成部１２１１ｄは、枝データｅの始点ノードのノードデータ（ノードデータ配列ｖ［ｅ−＞ｓＮ］）の北西セルのノードとの有向枝（ｅＮＷ）に枝データｅを記録する。また、有向枝生成部１２１１ｄは、枝データｅの終点ノードのノードデータ（ノードデータ配列ｖ［ｅ−＞ｅＮ］）の南東セルのノードとの有向枝（ｅＳＥ）に枝データｅを記録する。これによって、処理対象のセルの出口ノードのノードデータと北西セルの入り口ノードのノードデータとのそれぞれに、他方のノードとの有向枝の枝データが登録されたことになる。
【０１９８】
続いて、有向枝生成部１２１１ｄは、北西セルの出口ノードから処理対象のセルの入り口ノードへの有向枝に対応させる枝データｅをメモリ装置１０３に一つ生成し、枝データｅのメンバ変数に値を記録する（Ｓ２３Ｆ−３）。具体的には、枝データｅの始点ノードＩＤ（ｓＮ）に北西セルのセルデータ（セルデータ配列ｃｅｌｌ［ｎｗ＿ｃｅｌｌ＿ｉｄ］）の出口ノードＩＤ（ｏＮ）が記録される。また、枝データｅの終点ノードＩＤ（ｅＮ）に処理対象のセルのセルデータ（セルデータ配列ｃｅｌｌ［ｉ］）の入り口ノードＩＤ（ｉＮ）が記録される。これによって、枝データｅは、北西セルの出口ノードから処理対象のセルの入り口ノードへの有向枝に対応する枝データとなる。また、北西セルのセルデータの容量（ｃａｐ）の値と処理対象のセルのセルデータの容量の値とのうち小さい方の値が枝データｅの容量（ｃａｐ）に記録される。また、枝データｅの枝の長さ（ｅＬｅｎ）に１が記録される。また、枝データｅのフロー（ｆｌｏｗ）に初期値０が記録される。また、枝データｅの残余（ｒｅｓ）に枝データｅの容量（ｃａｐ）の値が記録される。
【０１９９】
また、有向枝生成部１２１１ｄは、枝データｅの始点ノードのノードデータ（ノードデータ配列ｖ［ｅ−＞ｓＮ］）の南東セルのノードとの有向枝（ｅＳＥ）に枝データｅを記録する。また、有向枝生成部１２１１ｄは、枝データｅの終点ノードのノードデータ（ノードデータ配列ｖ［ｅ−＞ｅＮ］）の北西セルのノードとの有向枝（ｅＮＷ）に枝データｅを記録する。これによって、北西セルの出口ノードのノードデータと処理対象のセルの入り口ノードのノードデータとのそれぞれに、他方のノードとの有向枝の枝データが登録されたことになる。
【０２００】
続いて、図４８のステップＳ４−９２５−２３Ｈの詳細について説明する。図５０は、北東のセルとの有向枝の生成処理の処理手順を説明するためのフローチャートである。
【０２０１】
ステップＳ２３Ｈ−１において、有向枝生成部１２１１ｄは、ｎｅ＿ｃｅｌｌ＿ｉｄ＝ｉ−ｃｏｌＭａｘ＋１を計算する。ここで、変数ｉ及びｃｏｌＭａｘの値は、図４８の処理においてステップＳ４−９２５−２３Ｈが呼び出された時点の値である。したがって、計算結果ｎｅ＿ｃｅｌｌ＿ｉｄは、図４８の処理において処理対象とされているセルデータのセルの北東のセル（北東セル）のセルデータに対する添え字である。
【０２０２】
続いて、有向枝生成部１２１１ｄは、処理対象のセルの出口ノードから北東セルの入り口ノードへの有向枝に対応させる枝データｅをメモリ装置１０３に一つ生成し、枝データｅのメンバ変数に値を記録する（Ｓ２３Ｈ−２）。具体的には、枝データｅの始点ノードＩＤ（ｓＮ）に処理対象のセルのセルデータ（セルデータ配列ｃｅｌｌ［ｉ］）の出口ノードＩＤ（ｏＮ）が記録される。また、枝データｅの終点ノードＩＤ（ｅＮ）に北東セルのセルデータ（セルデータ配列ｃｅｌｌ［ｎｅ＿ｃｅｌｌ＿ｉｄ］）の入り口ノードＩＤ（ｉＮ）が記録される。これによって、枝データｅは、処理対象のセルの出口ノードから北東セルの入り口ノードへの有向枝に対応する枝データとなる。また、処理対象のセルのセルデータの容量（ｃａｐ）の値と北東セルのセルデータの容量の値とのうち小さい方の値が枝データｅの容量（ｃａｐ）に記録される。また、枝データｅの枝の長さ（ｅＬｅｎ）に１が記録される。また、枝データｅのフロー（ｆｌｏｗ）に初期値０が記録される。また、枝データｅの残余（ｒｅｓ）に枝データｅの容量（ｃａｐ）の値が記録される。
【０２０３】
また、有向枝生成部１２１１ｄは、枝データｅの始点ノードのノードデータ（ノードデータ配列ｖ［ｅ−＞ｓＮ］）の北東セルのノードとの有向枝（ｅＮＥ）に枝データｅを記録する。また、有向枝生成部１２１１ｄは、枝データｅの終点ノードのノードデータ（ノードデータ配列ｖ［ｅ−＞ｅＮ］）の南西セルのノードとの有向枝（ｅＳＷ）に枝データｅを記録する。これによって、処理対象のセルの出口ノードのノードデータと北東セルの入り口ノードのノードデータとのそれぞれに、他方のノードとの有向枝の枝データが登録されたことになる。
【０２０４】
続いて、有向枝生成部１２１１ｄは、北東セルの出口ノードから処理対象のセルの入り口ノードへの有向枝に対応させる枝データｅをメモリ装置１０３に一つ生成し、枝データｅのメンバ変数に値を記録する（Ｓ２３Ｈ−３）。具体的には、枝データｅの始点ノードＩＤ（ｓＮ）に北東セルのセルデータ（セルデータ配列ｃｅｌｌ［ｎｅ＿ｃｅｌｌ＿ｉｄ］）の出口ノードＩＤ（ｏＮ）が記録される。また、枝データｅの終点ノードＩＤ（ｅＮ）に処理対象のセルのセルデータ（セルデータ配列ｃｅｌｌ［ｉ］）の入り口ノードＩＤ（ｉＮ）が記録される。これによって、枝データｅは、北東セルの出口ノードから処理対象のセルの入り口ノードへの有向枝に対応する枝データとなる。また、北東セルのセルデータの容量（ｃａｐ）の値と処理対象のセルのセルデータの容量の値とのうち小さい方の値が枝データｅの容量（ｃａｐ）に記録される。また、枝データｅの枝の長さ（ｅＬｅｎ）に１が記録される。また、枝データｅのフロー（ｆｌｏｗ）に初期値０が記録される。また、枝データｅの残余（ｒｅｓ）に枝データｅの容量（ｃａｐ）の値が記録される。
【０２０５】
また、有向枝生成部１２１１ｄは、枝データｅの始点ノードのノードデータ（ノードデータ配列ｖ［ｅ−＞ｓＮ］）の南西セルのノードとの有向枝（ｅＳＷ）に枝データｅを記録する。また、有向枝生成部１２１１ｄは、枝データｅの終点ノードのノードデータ（ノードデータ配列ｖ［ｅ−＞ｅＮ］）の北東セルのノードとの有向枝（ｅＮＥ）に枝データｅを記録する。これによって、北東セルの出口ノードのノードデータと処理対象のセルの入り口ノードのノードデータとのそれぞれに、他方のノードとの有向枝の枝データが登録されたことになる。
【０２０６】
続いて、図４８のステップＳ４−９２５−２３Ｋの詳細について説明する。図５１は、南西のセルとの有向枝の生成処理の処理手順を説明するためのフローチャートである。
【０２０７】
ステップＳ２３Ｋ−１において、有向枝生成部１２１１ｄは、ｓｗ＿ｃｅｌｌ＿ｉｄ＝ｉ＋ｃｏｌＭａｘ−１を計算する。ここで、変数ｉ及びｃｏｌＭａｘの値は、図４８の処理においてステップＳ４−９２５−２３Ｋが呼び出された時点の値である。したがって、計算結果ｓｗ＿ｃｅｌｌ＿ｉｄは、図４８の処理において処理対象とされているセルデータのセルの南西のセル（南西セル）のセルデータに対する添え字である。
【０２０８】
続いて、有向枝生成部１２１１ｄは、処理対象のセルの出口ノードから南西セルの入り口ノードへの有向枝に対応させる枝データｅをメモリ装置１０３に一つ生成し、枝データｅのメンバ変数に値を記録する（Ｓ２３Ｋ−２）。具体的には、枝データｅの始点ノードＩＤ（ｓＮ）に処理対象のセルのセルデータ（セルデータ配列ｃｅｌｌ［ｉ］）の出口ノードＩＤ（ｏＮ）が記録される。また、枝データｅの終点ノードＩＤ（ｅＮ）に南西セルのセルデータ（セルデータ配列ｃｅｌｌ［ｓｗ＿ｃｅｌｌ＿ｉｄ］）の入り口ノードＩＤ（ｉＮ）が記録される。これによって、枝データｅは、処理対象のセルの出口ノードから南西セルの入り口ノードへの有向枝に対応する枝データとなる。また、処理対象のセルのセルデータの容量（ｃａｐ）の値と南西セルのセルデータの容量の値とのうち小さい方の値が枝データｅの容量（ｃａｐ）に記録される。また、枝データｅの枝の長さ（ｅＬｅｎ）に１が記録される。また、枝データｅのフロー（ｆｌｏｗ）に初期値０が記録される。また、枝データｅの残余（ｒｅｓ）に枝データｅの容量（ｃａｐ）の値が記録される。
【０２０９】
また、有向枝生成部１２１１ｄは、枝データｅの始点ノードのノードデータ（ノードデータ配列ｖ［ｅ−＞ｓＮ］）の南西セルのノードとの有向枝（ｅＳＷ）に枝データｅを記録する。また、有向枝生成部１２１１ｄは、枝データｅの終点ノードのノードデータ（ノードデータ配列ｖ［ｅ−＞ｅＮ］）の北東セルのノードとの有向枝（ｅＮＥ）に枝データｅを記録する。これによって、処理対象のセルの出口ノードのノードデータと南西セルの入り口ノードのノードデータとのそれぞれに、他方のノードとの有向枝の枝データが登録されたことになる。
【０２１０】
続いて、有向枝生成部１２１１ｄは、南西セルの出口ノードから処理対象のセルの入り口ノードへの有向枝に対応させる枝データｅをメモリ装置１０３に一つ生成し、枝データｅのメンバ変数に値を記録する（Ｓ２３Ｋ−３）。具体的には、枝データｅの始点ノードＩＤ（ｓＮ）に南西セルのセルデータ（セルデータ配列ｃｅｌｌ［ｓｗ＿ｃｅｌｌ＿ｉｄ］）の出口ノードＩＤ（ｏＮ）が記録される。また、枝データｅの終点ノードＩＤ（ｅＮ）に処理対象のセルのセルデータ（セルデータ配列ｃｅｌｌ［ｉ］）の入り口ノードＩＤ（ｉＮ）が記録される。これによって、枝データｅは、南西セルの出口ノードから処理対象のセルの入り口ノードへの有向枝に対応する枝データとなる。また、南西セルのセルデータの容量（ｃａｐ）の値と処理対象のセルのセルデータの容量の値とのうち小さい方の値が枝データｅの容量（ｃａｐ）に記録される。また、枝データｅの枝の長さ（ｅＬｅｎ）に１が記録される。また、枝データｅのフロー（ｆｌｏｗ）に初期値０が記録される。また、枝データｅの残余（ｒｅｓ）に枝データｅの容量（ｃａｐ）の値が記録される。
【０２１１】
また、有向枝生成部１２１１ｄは、枝データｅの始点ノードのノードデータ（ノードデータ配列ｖ［ｅ−＞ｓＮ］）の北東セルのノードとの有向枝（ｅＮＥ）に枝データｅを記録する。また、有向枝生成部１２１１ｄは、枝データｅの終点ノードのノードデータ（ノードデータ配列ｖ［ｅ−＞ｅＮ］）の南西セルのノードとの有向枝（ｅＳＷ）に枝データｅを記録する。これによって、南西セルの出口ノードのノードデータと処理対象のセルの入り口ノードのノードデータとのそれぞれに、他方のノードとの有向枝の枝データが登録されたことになる。
【０２１２】
続いて、図４８のステップＳ４−９２５−２３Ｍの詳細について説明する。図５２は、南東のセルとの有向枝の生成処理の処理手順を説明するためのフローチャートである。
【０２１３】
ステップＳ２３Ｍ−１において、有向枝生成部１２１１ｄは、ｓｅ＿ｃｅｌｌ＿ｉｄ＝ｉ＋ｃｏｌＭａｘ＋１を計算する。ここで、変数ｉ及びｃｏｌＭａｘの値は、図４８の処理においてステップＳ４−９２５−２３Ｍが呼び出された時点の値である。したがって、計算結果ｓｅ＿ｃｅｌｌ＿ｉｄは、図４８の処理において処理対象とされているセルデータのセルの南東のセル（南東セル）のセルデータに対する添え字である。
【０２１４】
続いて、有向枝生成部１２１１ｄは、処理対象のセルの出口ノードから南東セルの入り口ノードへの有向枝に対応させる枝データｅをメモリ装置１０３に一つ生成し、枝データｅのメンバ変数に値を記録する（Ｓ２３Ｍ−２）。具体的には、枝データｅの始点ノードＩＤ（ｓＮ）に処理対象のセルのセルデータ（セルデータ配列ｃｅｌｌ［ｉ］）の出口ノードＩＤ（ｏＮ）が記録される。また、枝データｅの終点ノードＩＤ（ｅＮ）に南東セルのセルデータ（セルデータ配列ｃｅｌｌ［ｓｅ＿ｃｅｌｌ＿ｉｄ］）の入り口ノードＩＤ（ｉＮ）が記録される。これによって、枝データｅは、処理対象のセルの出口ノードから南東セルの入り口ノードへの有向枝に対応する枝データとなる。また、処理対象のセルのセルデータの容量（ｃａｐ）の値と南東セルのセルデータの容量の値とのうち小さい方の値が枝データｅの容量（ｃａｐ）に記録される。また、枝データｅの枝の長さ（ｅＬｅｎ）に１が記録される。また、枝データｅのフロー（ｆｌｏｗ）に初期値０が記録される。また、枝データｅの残余（ｒｅｓ）に枝データｅの容量（ｃａｐ）の値が記録される。
【０２１５】
また、有向枝生成部１２１１ｄは、枝データｅの始点ノードのノードデータ（ノードデータ配列ｖ［ｅ−＞ｓＮ］）の南東セルのノードとの有向枝（ｅＳＥ）に枝データｅを記録する。また、有向枝生成部１２１１ｄは、枝データｅの終点ノードのノードデータ（ノードデータ配列ｖ［ｅ−＞ｅＮ］）の北西セルのノードとの有向枝（ｅＮＷ）に枝データｅを記録する。これによって、処理対象のセルの出口ノードのノードデータと南東セルの入り口ノードのノードデータとのそれぞれに、他方のノードとの有向枝の枝データが登録されたことになる。
【０２１６】
続いて、有向枝生成部１２１１ｄは、南東セルの出口ノードから処理対象のセルの入り口ノードへの有向枝に対応させる枝データｅをメモリ装置１０３に一つ生成し、枝データｅのメンバ変数に値を記録する（Ｓ２３Ｍ−３）。具体的には、枝データｅの始点ノードＩＤ（ｓＮ）に南東セルのセルデータ（セルデータ配列ｃｅｌｌ［ｓｅ＿ｃｅｌｌ＿ｉｄ］）の出口ノードＩＤ（ｏＮ）が記録される。また、枝データｅの終点ノードＩＤ（ｅＮ）に処理対象のセルのセルデータ（セルデータ配列ｃｅｌｌ［ｉ］）の入り口ノードＩＤ（ｉＮ）が記録される。これによって、枝データｅは、南東セルの出口ノードから処理対象のセルの入り口ノードへの有向枝に対応する枝データとなる。また、南東セルのセルデータの容量（ｃａｐ）の値と処理対象のセルのセルデータの容量の値とのうち小さい方の値が枝データｅの容量（ｃａｐ）に記録される。また、枝データｅの枝の長さ（ｅＬｅｎ）に１が記録される。また、枝データｅのフロー（ｆｌｏｗ）に初期値０が記録される。また、枝データｅの残余（ｒｅｓ）に枝データｅの容量（ｃａｐ）の値が記録される。
【０２１７】
また、有向枝生成部１２１１ｄは、枝データｅの始点ノードのノードデータ（ノードデータ配列ｖ［ｅ−＞ｓＮ］）の北西セルのノードとの有向枝（ｅＮＷ）に枝データｅを記録する。また、有向枝生成部１２１１ｄは、枝データｅの終点ノードのノードデータ（ノードデータ配列ｖ［ｅ−＞ｅＮ］）の南東セルのノードとの有向枝（ｅＳＥ）に枝データｅを記録する。これによって、南東セルの出口ノードのノードデータと処理対象のセルの入り口ノードのノードデータとのそれぞれに、他方のノードとの有向枝の枝データが登録されたことになる。
【０２１８】
以上で図２２のステップＳ４−９２５の説明は終了する。すなわち、図２０のステップＳ４−９−２の説明は終了する。この時点のセル座標系における処理結果は、図２１に示した通りである。但し、湧き出しノードＳからの有効枝と、流入ノードＴへの有効枝とは生成されない。
【０２１９】
続いて、図２０のステップＳ４−９−４（すなわち、防護壁の生成）の詳細について説明する。図５３は、防護壁の意義を説明するための図である。同図において、Ｐ１は、或る部品の一部分（右上頂点を含む一部分）を示す。円は、部品に配置されたピンを示す。それぞれ、破線で囲まれた黒塗りのピン集合ｔｇ１、ｔｇ２、及びｔｇ３は、それぞれ、同一のバスに属するネットの引き出しピンの集合を示す。したがって、同図では、３つのバスに属するネットの引き出しピンの集合が示されている。
【０２２０】
上記において生成された有向グラフを利用して、バスごとに所属ネットの配線の引き出し経路を探索していくとき、他のバスに属するネットが接続されるピン間を通過するような経路を許容してしまうと、当該ピン間が分断されてしまう。例えば、図５３では、ピン集合ｔｇ１の一つのピンより引き出されたネットｎ１の引き出し経路がピン集合ｔｇ２内を通過することにより、ピン集合ｔｇ２の一部のピン間を分断している。その結果、ピン間が分断されたピンからの配線の引き出しが破綻してしまう。したがって、ピン間の分断を回避するための対策が必要となる。そこで、防護壁生成部１２１２は、同一バスによって接続されるピン群ごとに、当該ピン間を閉鎖する防護壁を生成する。また、防護壁生成部１２１２は、部品の外周とバス経路が交差する部分において、バスに所属するネット数分の配線脱出口を、他のバスの引き出しに使われてしまうのを避けるために確保し、当該部分に対してピン間の防護壁と一体化された防護壁を生成する。したがって、一つの防護壁は、引き出しピン間を閉鎖する部分（以下、「ピン間閉鎖部分」という。）、配線脱出口を確保する部分（以下、「配線脱出口部分」という。）、及びピン間閉鎖部分と配線脱出光部分とを連結する部分（以下、「連結部分」という。）を含む。
【０２２１】
或るバスの所属ネットの配線の引き出し経路の探索時において、当該バス以外のバスに対応する防護壁は有効化される。その結果、当該バスに係る引き出し経路によって他のバスのピン間が分断されてしまうのが防止される。
【０２２２】
防護壁は、例えば、図５４に示されるような形状を有する。図５４は、防護壁の一例を示す図である。同図には、図１３より部品ＰＩｎｆｏ［０］が抽出されている。また、部品ＰＩｎｆｏ［０］に接続される、バスＢ［０］〜Ｂ［５］のバス経路の一部が示されている。ここで、防護壁ｗ０は、バスＢ「０」に対応する防護壁である。防護壁ｗ１は、バスＢ「１」に対応する防護壁である。防護壁ｗ２は、バスＢ「２」に対応する防護壁である。防護壁ｗ３は、バスＢ「３」に対応する防護壁である。防護壁ｗ４は、バスＢ「４」に対応する防護壁である。防護壁ｗ５は、バスＢ「５」に対応する防護壁である。なお、同図には、防護壁ｗ０について、ピン間閉鎖部分ｗ０１、配線脱出口部分ｗ０２、及び連結部分ｗ０３が示されている。各防護壁は、例えば、迷路法によって引き出しピン間等を接続することにより形成される。以下、斯かる防護壁の生成処理について説明する。
【０２２３】
図５５は、防護壁の生成処理を説明するためのフローチャートである。
【０２２４】
ステップＳ４−９４−１において、防護壁生成部１２１２は、セル座標系のセル行列の外周に位置するセルのセルデータについて、外周方向において隣接するセルのセルデータへのポインタを設定する。
【０２２５】
図５６は、セル行列の外周に位置するセルに対して外周方向に隣接するセルを説明するための図である。同図において、矢印ａ１は、セル行列の外周方向を示す。ステップＳ４−９４−１では、セル行列の外周に位置する各セルのセルデータに対し、矢印ａ１の方向（右回り（時計回り））において、左側のセルと右側のセルとのそれぞれのセルデータの間に他方のセルデータのポインタが設定される。
【０２２６】
続いて、防護壁生成部１２１２は、図２０のステップＳ４−９−１において抽出されたバス集合ＢＧに対するインデックスとしての変数ｉを０に初期化する。また、防護壁生成部１２１２は、バス集合ＢＧの要素数（すなわち、着目部品及び着目層Ｌに係るバスの総数）を変数ｂＭａｘに代入する（Ｓ４−９４−２）。
【０２２７】
続いて、防護壁生成部１２１２は、バス集合ＢＧにおいてｉ番目のバス（ＢＧ［ｉ］）を着目バスｂＰとする（Ｓ４−９４―３）。続いて、防護壁生成部１２１２は、着目バスｂＰの所属ネットの着目部品側の引き出し対象ピンに対応するセルのセルデータの防護壁色（ｆｌａｖｏｒ）に、着目バスｂＰのバスＩＤを代入する（Ｓ４−９４−４）。具体的には、着目バスｂＰの各所属ネットのＩＤが、着目バスｂＰのバス情報Ｂ（図８）の所属ネット群ｎｅｔＧに基づいて特定される。続いて、着目部品の部品情報ＰＩｎｆｏのピン情報に基づいて、着目部品のピン情報ＰＩｎｆｏに係るテーブル（図２９）が特定される。続いて、当該テーブルより、接続ネットの値が、着目バスｂＰの各所属ネットのＩＤのいずれかに一致するレコード（ピン情報ＴＩｎｆｏ）が抽出される。続いて、抽出されたレコードの行Ｈ及び列Ｖに基づいて、セルデータ配列ｃｅｌｌ中において、各レコードに対応するセルデータが特定される。なお、当該行Ｈ及び列Ｖは、ピン行列における行番号又は列番号である。したがって、ピン行列における行Ｈ及び列Ｖが、セル行列における行番号又は列番号に変換された後、各レコードに対応するセルデータが特定される。ここで特定されたセルデータが目的とするセルデータである。したがって、当該各セルデータの防護壁色（ｆｌａｖｏｒ）の値に着目バスｂＰのバスＩＤが代入される。なお、セルデータの防護壁色（ｆｌａｖｏｒ）に、いずれかのバスのバスＩＤが代入されたセルを以下「リーフセル」という。後述されるように、リーフセルは、防護壁の基礎となるセルである。ステップＳ４−９４−４では、着目バスｂＰに対する防護壁のピン間閉鎖部分に関して、着目バスｂＰの各所属ネットの引き出しピンに対応するセルがリーフセルとして設定される。
【０２２８】
図５７は、リーフセルを説明するための図である。同図では、着目部品として部品ＰＩｎｆｏ［０］に関するセル行列が示されている。円が描画されているセルは、ピンに対応するセルであることを示す。また、同図には、バスＢ［０］及びバス［１］のそれぞれの一部が示されている。
【０２２９】
同図において、セルｃ１〜ｃ２０は、バスＢ［０］に属する２０本のネットのそれぞれの引き出しピンに対応するセルである。したがって、バスＢ［０］が着目バスｂＰである場合、ステップＳ４−９４−４では、セルｃ１〜ｃ２０がバスＢ［０］に係るリーフセルとされる。すなわち、セルｃ１〜ｃ２０のそれぞれに対応するセルデータの防護壁色（ｆｌａｖｏｒ）に、バスＢ［０］のバスＩＤである０が代入される。
【０２３０】
続いて、防護壁生成部１２１２は、変数ｉの値をインクリメントして、着目バスをバス集合ＢＧ内の次のバスとする（Ｓ４−９４−５）。ステップＳ４−９４−３〜Ｓ４−９４−５は、バス集合ＢＧに含まれる全てのバスについて実行される（Ｓ４−９４−６）。
【０２３１】
ステップＳ４−９４−３〜Ｓ４−９４−５がバス集合ＢＧに含まれる全てのバスについて終了すると（Ｓ４−９４−６でＮｏ）、防護壁生成部１２１２は、続くステップＳ４−９４−７からＳ４−９４−１５において、バス集合ＢＧに含まれる各バスが着目部品の外周辺を横切る部分（すなわち、配線脱出口部分）に係るセル群を、リーフセルとするための処理を実行する。すなわち、防護壁の配線脱出口部分のリーフセルを設定するための処理である。
【０２３２】
まず、ステップＳ４−９４−７において、防護壁生成部１２１２は、変数ｉの値を再び０に初期化する。続いて、防護壁生成部１２１２は、バス集合ＢＧにおいてｉ番目のバス（ＢＧ［ｉ］）を着目バスｂＰとする。また、防護壁生成部１２１２は、着目バスｂＰのバスＩＤを変数ＦＬＡＶＯＲに代入する。また、防護壁生成部１２１２は、着目バスｂＰのバス矩形リストｓＰの中で最初の矩形のバス経路矩形情報ＢＲ（図１２）を着目矩形ｓｐｐとする。更に、防護壁生成部１２１２は、変数ＣＡＰに０を代入する（Ｓ４−９４−８）。変数ＣＡＰは、着目バスが着目部品の外周辺を横切る部分（配線脱出口部分）に係るセル群の容量（配線容量）の総和を記憶するための変数である。
【０２３３】
続いて、防護壁生成部１２１２は、セル座標系のセル行列の外周に位置するセルの中で着目矩形ｓｐｐに包含されるセルのセルデータの防護壁色（ｆｌａｖｏｒ）に着目バスｂＰのバスＩＤを代入し、当該セルの容量の総和を変数ＣＡＰに代入する（Ｓ４−９４−９）。すなわち、着目矩形ｓｐｐに包含されるセルがリーフセルとされる。ステップＳ４−９４−９は、着目バスｂＰに属する全ての矩形に関して実行される（Ｓ４−９４−１０、Ｓ４−９４−１１）。なお、ステップＳ４−９４−９からＳ４−９４−１１は、バス集合ＢＧに含まれる一つの着目バスｂＰが着目部品の外周辺を横切る部分（配線脱出口部分）に係るセル群に、防護壁の印を付加するための処理である。
【０２３４】
図５７を参照して具体的に説明する。同図には、バスＢ［０］を構成する一部の矩形である、矩形ＢＲ［１］及びＢＲ［２］が示されている。このうち、矩形ＢＲ［１］は、部品ＰＩｎｆｏ［０］の外周に位置するセルｃ２１〜ｃ２７を包含している。したがって、着目バスｂＰがバスＢ［０］であり、着目矩形ｓｐｐが矩形ＢＲ［１］である場合に、セルｃ２１〜ｃ２７がバスＢ［０］に係るリーフセルとされる。すなわち、セルｃ２１〜ｃ２７のそれぞれに対応するセルデータの防護壁色（ｆｌａｖｏｒ）に、バスＢ［０］のバスＩＤである０が代入される。また、セルｃ２１〜ｃ２７のそれぞれに対応するセルデータの容量（ｃａｐ）の総和が変数ＣＡＰに記録される。
【０２３５】
ステップＳ４−９４−９が、着目バスｂＰに属する全ての矩形について終了すると（Ｓ４−９４−１１でＹｅｓ）、防護壁生成部１２１２は、変数ＣＡＰの値が着目バスｂＰの所属ネットの総数以上であるか否かを判定する（Ｓ４−９４−１２）。すなわち、着目バスｂＰに関する配線脱出口部分において、着目バスｂＰの全ての所属ネットの配線の引き出しの可否が判定される。例えば、図５７において、着目バスｂＰがバスＢ［０］である場合、所属ネットの総数は２０である。したがって、変数ＣＡＰの値が２０以上であるか否かが判定される。
【０２３６】
変数ＣＡＰの値が着目バスｂＰの所属ネットの総数以上である場合（Ｓ４−９４−１２でＹｅｓ）、防護壁生成部１２１２は、変数ｉの値をインクリメントして、着目バスをバス集合ＢＧ内の次のバスとする（Ｓ４−９４−１４）。
【０２３７】
変数ＣＡＰの値が着目バスｂＰの所属ネットの総数未満である場合（Ｓ４−９４−１２でＮｏ）、現状のままでは着目バスｂＰの所属ネットを配線脱出口部分から引き出すことはできない。そこで、防護壁生成部１２１２は、着目バスｂＰの全ての所属ネットの引き出しが可能となるよう、配線脱出口部分に係るリーフセルを伸張する（追加する）ための処理を実行する（Ｓ４−９４−１３）。続いて、防護壁生成部１２１２は、変数ｉをインクリメントする（Ｓ４−９４−１４）。
【０２３８】
図５８は、配線脱出口部分に係るリーフセルの伸張を示す図である。同図では、バスＢ［０］の配線脱出口部分が伸張され、符号ＬＣｅｌｌによって示される部分に含まれるセルｃ２８〜ｃ３３と、符号ＲＣｅｌｌによって示される部分に含まれるセルｃ３４〜ｃ３９とが、バスＢ［０］に対するリーフセルとして追加された様子が示されている。
【０２３９】
ステップＳ４−９４−８からＳ４−９４−１３が、バス集合ＢＧに含まれる全てのバスについて終了すると（Ｓ４−９４−１５でＮｏ）、防護壁生成部１２１２は、防護壁色（ｆｌａｖｏｒ）の値が同じリーフセル同士を連結する経路を探索し、探索された経路に基づいて防護壁を生成する（Ｓ４−９４−１７）。
【０２４０】
続いて、ステップＳ４−９４−１の詳細について説明する。図５９は、セル行列の外周に位置するセルについて右回り又は左回りに隣接セルへのポインタの設定処理を説明するためのフローチャートである。図５６より明らかなように、セル行列の外周に位置する或るセルから見て右回りにおける左右の意味は、当該或るセルが北側、東側、南側、西側のいずれに位置するかによって異なる。例えば、当該或るセルが北側又は南側に位置すれば、左右方向は、東西方向となる。一方、当該或るセルが東側又は西側に位置すれば、左右方向は、南北方向となる。したがって、図５９では、北側に位置するセル、東側に位置するセル、南側に位置するセル、西側に位置するセルに応じて処理手順が示されている。
【０２４１】
ステップＳ４−９４−１ａからＳ４−９４−１ｄは、北側に位置するセルに関する処理である。ステップＳ４−９４−１ａにおいて、防護壁生成部１２１２は、セルデータ配列ｃｅｌｌの最初の要素（ｃｅｌｌ［０］）に係るセルデータのポインタを、右回りにおいて左側のセルのセルデータを保持するための変数ＬＣｅｌｌＰに代入する。当該セルデータは、１行１列に位置するセルのセルデータである。また、防護壁生成部１２１２は、変数ＬＣｅｌｌに係るセルのセルデータの東隣のセルポインタ（ｃＥ）を、右回りにおいて右側のセルのセルデータを保持するための変数ＲＣｅｌｌＰに代入する。更に、防護壁生成部１２１２は、変数ｃＭａｘに、セル行列の列数を代入する。
【０２４２】
続いて、防護壁生成部１２１２は、ＲＣｅｌｌＰの値がＮＵＬＬでなく、かつ、セルデータＲＣｅｌｌＰの列番号（ｃ）が変数ｃＭａｘ以下であるか否かを判定する（Ｓ４−９４−１ｂ）。すなわち、右側のセルが東端に到達していないか否かが判定される。
【０２４３】
ＲＣｅｌｌＰの値がＮＵＬＬでなく、かつ、セルデータＲＣｅｌｌＰの列番号（ｃ）が変数ｃＭａｘ以下である場合（Ｓ４−９４−１ｂでＹｅｓ）、防護壁生成部１２１２は、左側のセルと右側のセルとを関連付ける（Ｓ４−９４−１ｃ）。すなわち、左側のセルのセルデータＬＣｅｌｌＰの右隣のセルポインタ（ｒＬｉｎｋ）に、右側のセルデータのポインタ（ＲＣｅｌｌＰ）が代入される。また、右側のセルのセルデータＲＣｅｌｌＰの左隣のセルポインタ（ｌＬｉｎｋ）に、左側のセルデータのポインタ（ＬＣｅｌｌＰ）が代入される。
【０２４４】
続いて、防護壁生成部１２１２は、ＬＣｅｌｌＰに係るセル及びＲＣｅｌｌＰに係るセルをそれぞれ東側に一つずらす（Ｓ４−９４−１ｄ）。すなわち、ＬＣｅｌｌＰに、右側のセルのセルデータのポインタ（ＲＣｅｌｌＰ）が代入される。ＲＣｅｌｌＰに、一つ東にずれた左側のセルのセルデータＬＣｅｌｌＰの東隣のセルポインタ（ｃＥ）が代入される。続いて、ステップＳ４−９４−１ｂ以降が繰り返される。
【０２４５】
その後、ステップＳ４−９４−１ｂにおいて、ＲＣｅｌｌＰの値がＮＵＬＬ、又はセルデータＲＣｅｌｌＰの列番号がｃＭａｘを超えたと判定されると（Ｓ４−９４−１ｂでＮｏ）、東側のセルの処理（Ｓ４−９４−１ｅ〜Ｓ４−９４−１ｈ）に進む。
【０２４６】
ステップＳ４−９４−１ｅにおいて、防護壁生成部１２１２は、１行目の東端に位置するセルのセルデータ（ｃｅｌｌ［ｃＭａｘ−１］）のポインタを変数ＬＣｅｌｌＰに代入する。また、防護壁生成部１２１２は、変数ＬＣｅｌｌに係るセルのセルデータの南隣のセルポインタ（ｃＳ）を、変数ＲＣｅｌｌＰに代入する。更に、防護壁生成部１２１２は、変数ｒＭａｘに、セル行列の行数を代入する。
【０２４７】
続いて、防護壁生成部１２１２は、ＲＣｅｌｌＰの値がＮＵＬＬでなく、かつ、セルデータＲＣｅｌｌＰの行番号（ｒ）が変数ｒＭａｘ以下であるか否かを判定する（Ｓ４−９４−１ｆ）。すなわち、右側のセルが南端に到達していないか否かが判定される。
【０２４８】
ＲＣｅｌｌＰの値がＮＵＬＬでなく、かつ、セルデータＲＣｅｌｌＰの行番号（ｒ）が変数ｒＭａｘ以下である場合（Ｓ４−９４−１ｆでＹｅｓ）、防護壁生成部１２１２は、左側のセルと右側のセルとを関連付ける（Ｓ４−９４−１ｇ）。すなわち、左側のセルのセルデータＬＣｅｌｌＰの右隣のセルポインタ（ｒＬｉｎｋ）に、右側のセルデータのポインタ（ＲＣｅｌｌＰ）が代入される。また、右側のセルのセルデータＲＣｅｌｌＰの左隣のセルポインタ（ｌＬｉｎｋ）に、左側のセルデータのポインタ（ＬＣｅｌｌＰ）が代入される。
【０２４９】
続いて、防護壁生成部１２１２は、ＬＣｅｌｌＰに係るセル及びＲＣｅｌｌＰに係るセルをそれぞれ南側に一つずらす（Ｓ４−９４−１ｈ）。すなわち、ＬＣｅｌｌＰに、右側のセルのセルデータのポインタ（ＲＣｅｌｌＰ）が代入される。ＲＣｅｌｌＰに、一つ南にずれた左側のセルのセルデータＬＣｅｌｌＰの南隣のセルポインタ（ｃＳ）が代入される。続いて、ステップＳ４−９４−１ｆ以降が繰り返される。
【０２５０】
その後、ステップＳ４−９４−１ｆにおいて、ＲＣｅｌｌＰの値がＮＵＬＬ、又はセルデータＲＣｅｌｌＰの列番号がｃＭａｘを超えたと判定されると（Ｓ４−９４−１ｆでＮｏ）、南側のセルの処理（Ｓ４−９４−１ｉ〜Ｓ４−９４−１ｌ）に進む。
【０２５１】
ステップＳ４−９４−１ｉにおいて、防護壁生成部１２１２は、セル行列の最終行の東端に位置するセルのセルデータ（ｃｅｌｌ［ｒＭａｘ×ｃＭａｘ−１］）のポインタを変数ＬＣｅｌｌＰに代入する。また、防護壁生成部１２１２は、変数ＬＣｅｌｌに係るセルのセルデータの西隣のセルポインタ（ｃＷ）を、変数ＲＣｅｌｌＰに代入する。
【０２５２】
続いて、防護壁生成部１２１２は、ＲＣｅｌｌＰの値がＮＵＬＬでなく、かつ、セルデータＲＣｅｌｌＰの列番号（ｃ）が１以上であるか否かを判定する（Ｓ４−９４−１ｊ）。すなわち、右側のセルが西端に到達していないか否かが判定される。
【０２５３】
ＲＣｅｌｌＰの値がＮＵＬＬでなく、かつ、セルデータＲＣｅｌｌＰの列番号（ｃ）が１以上である場合（Ｓ４−９４−１ｊでＹｅｓ）、防護壁生成部１２１２は、左側のセルと右側のセルとを関連付ける（Ｓ４−９４−１ｋ）。すなわち、左側のセルのセルデータＬＣｅｌｌＰの右隣のセルポインタ（ｒＬｉｎｋ）に、右側のセルデータのポインタ（ＲＣｅｌｌＰ）が代入される。また、右側のセルのセルデータＲＣｅｌｌＰの左隣のセルポインタ（ｌＬｉｎｋ）に、左側のセルデータのポインタ（ＬＣｅｌｌＰ）が代入される。
【０２５４】
続いて、防護壁生成部１２１２は、ＬＣｅｌｌＰに係るセル及びＲＣｅｌｌＰに係るセルをそれぞれ西側に一つずらす（Ｓ４−９４−１ｌ）。すなわち、ＬＣｅｌｌＰに、右側のセルのセルデータのポインタ（ＲＣｅｌｌＰ）が代入される。ＲＣｅｌｌＰに、一つ西にずれた左側のセルのセルデータＬＣｅｌｌＰの西隣のセルポインタ（ｃＷ）が代入される。続いて、ステップＳ４−９４−１ｊ以降が繰り返される。
【０２５５】
その後、ステップＳ４−９４−１ｊにおいて、ＲＣｅｌｌＰの値がＮＵＬＬ、又はセルデータＲＣｅｌｌＰの列番号が０になったと判定されると（Ｓ４−９４−１ｊでＮｏ）、西側のセルの処理（Ｓ４−９４−１ｍ〜Ｓ４−９４−１ｐ）に進む。
【０２５６】
ステップＳ４−９４−１ｍにおいて、防護壁生成部１２１２は、セル行列の最終行の西端に位置するセルのセルデータ（ｃｅｌｌ［ｃＭａｘ×（ｒＭａｘ−１）］）のポインタを変数ＬＣｅｌｌＰに代入する。また、防護壁生成部１２１２は、変数ＬＣｅｌｌに係るセルのセルデータの北隣のセルポインタ（ｃＮ）を、変数ＲＣｅｌｌＰに代入する。
【０２５７】
続いて、防護壁生成部１２１２は、ＲＣｅｌｌＰの値がＮＵＬＬでなく、かつ、セルデータＲＣｅｌｌＰの行番号（ｒ）が１以上であるか否かを判定する（Ｓ４−９４−１ｎ）。すなわち、右側のセルが北端に到達していないか否かが判定される。
【０２５８】
ＲＣｅｌｌＰの値がＮＵＬＬでなく、かつ、セルデータＲＣｅｌｌＰの行番号（ｒ）が１以上である場合（Ｓ４−９４−１ｎでＹｅｓ）、防護壁生成部１２１２は、左側のセルと右側のセルとを関連付ける（Ｓ４−９４−１ｏ）。すなわち、左側のセルのセルデータＬＣｅｌｌＰの右隣のセルポインタ（ｒＬｉｎｋ）に、右側のセルデータのポインタ（ＲＣｅｌｌＰ）が代入される。また、右側のセルのセルデータＲＣｅｌｌＰの左隣のセルポインタ（ｌＬｉｎｋ）に、左側のセルデータのポインタ（ＬＣｅｌｌＰ）が代入される。
【０２５９】
続いて、防護壁生成部１２１２は、ＬＣｅｌｌＰに係るセル及びＲＣｅｌｌＰに係るセルをそれぞれ北側に一つずらす（Ｓ４−９４−１ｐ）。すなわち、ＬＣｅｌｌＰに、右側のセルのセルデータのポインタ（ＲＣｅｌｌＰ）が代入される。ＲＣｅｌｌＰに、一つ北にずれた左側のセルのセルデータＬＣｅｌｌＰの北隣のセルポインタ（ｃＮ）が代入される。続いて、ステップＳ４−９４−１ｎ以降が繰り返される。
【０２６０】
続いて、図５５のステップＳ４−９４−９の詳細について説明する。図６０は、セル行列の外周のセルの中で着目矩形に包含されるセルをリーフセルとする処理の処理手順を説明するためのフローチャートである。
【０２６１】
ステップＳ４−９４９−１において、防護壁生成部１２１２は、着目矩形ｓｐｐと着目部品とは共有領域（重複部分）を有するか否かを判定する。すなわち、着目矩形ｓｐｐのバス経路矩形情報ＢＲ（図１２）の始点座標及び終点座標に基づいて特定される矩形と、着目部品の部品情報ＰＩｎｆｏ（図７）の部品配置座標ｌｏｃ及び部品サイズに基づいて特定される矩形とが共有領域（重複領域）を有するか否かが判定される。両者に共有領域が無い場合（Ｓ４−９４９−１でＮｏ）、図６０の処理は終了する。
【０２６２】
両者に共有領域が有る場合（Ｓ４−９４９−１でＹｅｓ）、防護壁生成部１２１２は、セル行列の北端の行、東端の列、南端の行、西端の列について、着目矩形ｓｐｐに包含されるセルを探索する。
【０２６３】
すなわち、共有領域が北端の行を含む場合（Ｓ４−９９９−２でＹｅｓ）、防護壁生成部１２１２は、北端の行を探索対象とする。まず、防護壁生成部１２１２は、セル行列において北端の１列目に位置するセルのセルデータ（ｃｅｌｌ［０］）のポインタを変数ｈｅａｄＣｅｌｌに代入する。変数ｈｅａｄＣｅｌｌは、探索の先頭とされるセルの識別するための変数である。また、防護壁生成部１２１２は、変数Ｓｉｄｅに定数ＮＯＲＴＨを代入する（Ｓ４−９４９−３）。続いて、防護壁生成部１２１２は、変数ｈｅａｄＣｅｌｌ及び変数Ｓｉｄｅの値等を利用して、着目矩形ｓｐｐに包含されるセルをリーフセルとするための処理を実行する（Ｓ４−９４９−４）。
【０２６４】
共有領域が東端列を含む場合（Ｓ４−９９９−５でＹｅｓ）、防護壁生成部１２１２は、東端の列を探索対象とする。まず、防護壁生成部１２１２は、セル行列において１行目の東端に位置するセルのセルデータ（ｃｅｌｌ［ｃＭａｘ−１］）のポインタを変数ｈｅａｄＣｅｌｌに代入する。ｃＭａｘはセル行列の列数を示す。また、防護壁生成部１２１２は、変数Ｓｉｄｅに定数ＥＡＳＴを代入する（Ｓ４−９４９−６）。続いて、防護壁生成部１２１２は、変数ｈｅａｄＣｅｌｌ及び変数Ｓｉｄｅの値等を利用して、着目矩形ｓｐｐに包含されるセルをリーフセルとするための処理を実行する（Ｓ４−９４９−７）。
【０２６５】
共有領域が南端列を含む場合（Ｓ４−９４９−８でＹｅｓ）、防護壁生成部１２１２は、南端の行を探索対象とする。まず、防護壁生成部１２１２は、セル行列において南端の１列目に位置するセルのセルデータ（ｃｅｌｌ［（ｒＭａｘ−１）×ｃＭａｘ］）のポインタを変数ｈｅａｄＣｅｌｌに代入する。ｒＭａｘはセル行列の行数を示す。また、防護壁生成部１２１２は、変数Ｓｉｄｅに定数ＳＯＵＴＨを代入する（Ｓ４−９４９−９）。続いて、防護壁生成部１２１２は、変数ｈｅａｄＣｅｌｌ及び変数Ｓｉｄｅの値等を利用して、着目矩形ｓｐｐに包含されるセルをリーフセルとするための処理を実行する（Ｓ４−９４９−１０）。
【０２６６】
共有領域が西端列を含む場合（Ｓ４−９９９−１１でＹｅｓ）、防護壁生成部１２１２は、西端の列を探索対象とする。まず、防護壁生成部１２１２は、セル行列において北端の１列目に位置するセルのセルデータ（ｃｅｌｌ［０］）のポインタを変数ｈｅａｄＣｅｌｌ代入する。また、防護壁生成部１２１２は、変数Ｓｉｄｅに定数ＷＥＳＴを代入する（Ｓ４−９４９−１２）。続いて、防護壁生成部１２１２は、変数ｈｅａｄＣｅｌｌ及び変数Ｓｉｄｅの値等を利用して、着目矩形ｓｐｐに包含されるセルをリーフセルとするための処理を実行する（Ｓ４−９４９−１３）。
【０２６７】
続いて、図６０のステップＳ４−９４９−４、Ｓ４−９４９−７、Ｓ４−９４９−１０、又はＳ４−９４９−１３において呼び出される処理について説明する。
【０２６８】
図６１は、特定の行又は列において着目矩形に包含されるセルをリーフセルとする処理の処理手順を説明するためのフローチャートである。
【０２６９】
ステップＳ４−９４９−Ａ１において、防護壁生成部１２１２は、着目矩形ｓｐｐに包含されるか否かについて検査対象とするセルを走査するための変数ｃｅｌｌＰに、変数ｈｅａｄＣｅｌｌＰの値（セルデータのポインタ）を代入する。変数ｈｅａｄＣｅｌｌＰの値は、図６０において代入されている。
【０２７０】
続いて、防護壁生成部１２１２は、セルデータｃｅｌｌＰの代表位置（ｘ座標、ｙ座標）が、着目矩形ｓｐｐに包含されるか否かを判定する（Ｓ４−９４９−Ａ２）。代表位置の座標値は、着目部品上の相対座標系における座標値である。一方、着目矩形の始点座標及び終点座標は、配線領域Ａ上の実寸座標系における値である。したがって、当該代表位置の座標値を、着目部品の部品情報ＰＩｎｆｏの部品座標情報ｌｏｃに基づいて配線領域Ａ上の実寸座標系の座標値に変換すれば、当該代表位置が着目矩形ｓｐｐに包含されるか否かは容易に判定可能である。
【０２７１】
セルデータｃｅｌｌＰの代表位置が着目矩形に包含される場合（Ｓ４−９４９−Ａ２でＹｅｓ）、防護壁生成部１２１２は、フラグ変数ｃａｐＳｋｉｐＦの値をＦＡＬＳＥに初期化し、フラグ変数ｏｖｅｒｌａｐＦの値をＦＡＬＳＥに初期化する（Ｓ４−９４９−Ａ３）。ｃａｐＳｋｉｐＦは、変数ＣＡＰへの容量（セルデータｃｅｌｌＰの容量（ｃａｐ））の加算をスキップするか否かを示すフラグ変数である。変数ＣＡＰは、図５５のステップＳ４−９４−８において定義された、着目バスｂＰの配線脱出口部分の容量を記憶するための変数である。ｏｖｅｒｌａｐＦは、セルデータｃｅｌｌＰに係るセルが、他のバスのリーフセルであるか否かを示すフラグである。
【０２７２】
続いて、防護壁生成部１２１２は、セルデータｃｅｌｌＰの防護壁色（ｆｌａｖｏｒ）の値に応じて、フラグ変数等の値を変化させる（Ｓ４−９９９−Ａ４）。具体的には、セルデータｃｅｌｌＰの防護壁色（ｆｌａｖｏｒ）の値が変数ＦＬＡＶＯＲと同じであれば、防護壁生成部１２１２は、ｃａｐＳｋｉｐＦの値をＴＲＵＥとする。変数ＦＬＡＶＯＲの値は、図５５のステップＳ４−９４−８に示されるように、着目バスｂＰのバスＩＤである。したがって、セルデータｃｅｌｌＰの防護壁色（ｆｌａｖｏｒ）の値が変数ＦＬＡＶＯＲと同じであるということは、セルデータｃｅｌｌＰに係るセルは、既に着目バスｂＰに対するリーフセル（防護壁の元となるセル）とされていることを意味する。したがって、セルデータｃｅｌｌＰの容量（ｃａｐ）は、既に変数ＣＡＰに加算されているはずである。よって、変数ＣＡＰへの容量の重複加算を避けるためｃａｐＳｋｉｐＦの値がＴＲＵＥとされるのである。
【０２７３】
一方、セルデータｃｅｌｌＰの防護壁色（ｆｌａｖｏｒ）の値が未設定（−１）の場合であって、かつ、セルデータｃｅｌｌＰの容量（ｃａｐ）が０より大きい場合、防護壁生成部１２１２は、セルデータｃｅｌｌＰの防護壁色（ｆｌａｖｏｒ）に変数ＦＬＡＶＯＲの値を代入する。すなわち、セルデータｃｅｌｌＰに係るセルが、着目バスｂＰに対するリーフセルとされる。
【０２７４】
また、上記以外の場合、防護壁生成部１２１２は、ｏｖｅｒｌａｐＦの値をＴＲＵＥとする。この場合は、セルデータｃｅｌｌＰに係るセルは、既に着目バスｂＰ以外のバスのリーフセルとされているからである。
【０２７５】
続いて、防護壁生成部１２１２は、ｏｖｅｒｌａｐＦの値がＴＲＵＥであるか否かを判定する（Ｓ４−９４９−Ａ５）。ｏｖｅｒｌａｐＦの値がＴＲＵＥである場合、図６１の処理は終了する。
【０２７６】
一方、ｏｖｅｒｌａｐＦの値がＦＡＬＳＥであり（Ｓ４−９４９−Ａ５でＹｅｓ）、ｃａｐＳｋｉｐＦの値がＦＡＬＳＥである場合（Ｓ４−９４９−Ａ６でＹｅｓ）、防護壁生成部１２１２は、セルデータｃｅｌｌＰに係るセルの一つ内側のセルのセルデータのポインタを変数ＩＣｅｌｌＰに代入する（Ｓ４−９４９−Ａ７）。ここで、一つ内側のセルが処理対象とされるのは、本実施の形態のセル行列において外周にはピンは配置されていないからである。すなわち、着目バスｂＰの配線脱出口部分において外周のセルの容量を積算したのでは、当該配線脱出口部分全体の正しい容量を得ることはできない。一つ内側の周のセルに対応するピンによって配線は制限されるからである。そこで、一つ内側のセルを処理対象とし、当該内側のセルの容量を積算することにより、当該配線脱出口部分全体の容量を得ようというわけである。
【０２７７】
なお、「内側」の方向は、セルデータｃｅｌｌＰに係るセルの位置に応じて異なる。したがって、防護壁生成部１２１２は、図６０において設定された変数Ｓｉｄｅの値に応じて、ＩＣｅｌｌＰへの代入元を変化させる。具体的には、変数Ｓｉｄｅの値がＳＯＵＴＨである場合（処理対象が南端行である場合）、セルデータｃｅｌｌＰの北隣のセルポインタ（ｃＮ）がＩＣｅｌｌＰに代入される。変数Ｓｉｄｅの値がＷＥＳＴである場合（処理対象が西端列である場合）、セルデータｃｅｌｌＰの東隣のセルポインタ（ｃＥ）がＩＣｅｌｌＰに代入される。変数Ｓｉｄｅの値がＮＯＲＴＨである場合（処理対象が北端行である場合）、セルデータｃｅｌｌＰの南隣のセルポインタ（ｃＳ）がＩＣｅｌｌＰに代入される。変数Ｓｉｄｅの値がＥＡＳＴである場合（処理対象が東端列である場合）、セルデータｃｅｌｌＰの西隣のセルポインタ（ｃＷ）がＩＣｅｌｌＰに代入される。
【０２７８】
続いて、防護壁生成部１２１２は、セルデータＩＣｅｌｌＰの内容に応じて、変数ＣＡＰの値を更新する（Ｓ４−９４９−Ａ８）。
【０２７９】
具体的には、セルデータｌＣｅｌｌＰのセル属性（ａｔｔｒ）の値がＶ（水平ピン間）、Ｈ（垂直ピン間）、又はＥＰ（空きピン）である場合、防護壁生成部１２１２は、セルデータｌＣｅｌｌＰの容量（ｃａｐ）の値を変数ＣＡＰに加算する。すなわち、セルデータｌＣｅｌｌＰに係るセルが配線可能なセルである場合は、当該セルの容量が変数ＣＡＰに加算される。
【０２８０】
一方、セルデータＩＣｅｌｌＰの防護壁色（ｆｌａｖｏｒ）の値が変数ＦＬＡＶＯＲの値と一致し、かつ、セルデータＩＣｅｌｌＰの容量確認済みフラグ（ｐｉｎＣａｐＣｈｅｃｋｅｄＦ）の値がＦＡＬＳＥである場合、防護壁生成部１２１２は、変数ＣＡＰに１を加算する。この場合、セルデータＩＣｅｌｌＰに係るセルは、引き出しピンに相当する。したがって、当該引き出しピンより１本のネットが引き出される。よって、変数ＣＡＰに１が加算されるのである。また、この場合、防護壁生成部１２１２は、セルデータＩＣｅｌｌＰの容量確認済みフラグ（ｐｉｎＣａｐＣｈｅｃｋｅｄＦ）にＴＲＵＥを代入する。当該引き出しピンに係るセルについて、容量（ｃａｐ）が重複して加算されるのを防止するためのである。
【０２８１】
続いて、防護壁生成部１２１２は、変数ｃｅｌｌＰの値を、次のセルのセルデータのポインタに更新する（Ｓ４−９４９−Ａ９）。具体的には、変数Ｓｉｄｅの値がＳＯＵＴＨの場合、セルデータｃｅｌｌＰの東隣のセルポインタ（ｃＥ）がｃｅｌｌＰに代入される。変数Ｓｉｄｅの値がＷＥＳＴの場合、セルデータｃｅｌｌＰの南隣のセルポインタ（ｃＳ）がｃｅｌｌＰに代入される。変数Ｓｉｄｅの値がＮＯＲＴＨの場合、セルデータｃｅｌｌＰの東隣のセルポインタ（ｃＥ）がｃｅｌｌＰに代入される。変数Ｓｉｄｅの値がＥＡＳＴの場合、セルデータｃｅｌｌＰの南隣のセルポインタ（ｃＳ）がｃｅｌｌＰに代入される。
【０２８２】
上記処理手順は、ステップＳ４−９４９−Ａ１０において、変数ｃｅｌｌＰの値がＮＵＬＬであるか、又はセルデータｃｅｌｌＰの容量（ｃａｐ）の値が０以下であると判定されるまで繰り返される（Ｓ４−９４９−Ａ１０）。すなわち、処理対象の行又は列において全てのセルが走査されるか、又は配線できない（配線脱出口となり得ない）セルが検出されるまで繰り返される。
【０２８３】
一方、ステップＳ４−９４９−Ａ２において、セルデータｃｅｌｌＰの代表位置（ｘ座標、ｙ座標）が、着目矩形ｓｐｐに包含されないと判定された場合（Ｓ４−９４９−Ａ２でＮｏ）、ステップＳ４−９４９−Ａ３〜ステップＳ４−９４９−Ａ８は実行されずに、走査対象のセルがずらされる（ステップＳ４−９４９−Ａ９）。
【０２８４】
また、ステップＳ４−９４９−Ａ６において、ｃａｐＳｋｉｐＦの値がＴＲＵＥの場合（Ｓ４−９４９−Ａ６でＹｅｓ）、ステップＳ４−９４９−Ａ７及びＳ４−９４９−Ａ８は実行されずに走査対象のセルがずらされる（ステップＳ４−９４９−Ａ９）。
【０２８５】
続いて、図５５のステップＳ４−９４−１３の詳細について説明する。図６２は、着目バスに関する配線脱出口部分のリーフセルの伸張処理を説明するためのフローチャートである。
【０２８６】
ステップＳ４−９４１３−１において、防護壁生成部１２１２は、各変数の値を初期化する。すなわち、処理対象のセルを走査するための変数ｃｅｌｌＰに、先頭のセルデータ（ｃｅｌｌ［０］）のポインタが代入される。セルデータの走査回数を記憶するための変数ｌｏｏｐＣｏｕｎｔが０に初期化される。セルデータの走査回数の最大値を記憶する変数ＬｏｏｐＭａｘに、セル行列の外周のセルの総数が代入される。着目バスｂＰに対するリーフセルが見つかったか否かを記憶する変数ＦＯＵＮＤにＦＡＬＳＥが代入される。また、変数ＬｅｆｔＰ及び変数ＲｉｇｈｔＰのそれぞれにＮＵＬＬが代入される。変数ＬｅｆｔＰは、セル行列の外周に存在する、着目バスｂＰに対するリーフセル（すなわち、着目バスｂＰの配線脱出口部分に係るリーフセル）の中で、左端のリーフセルのセルデータへのポインタを記憶するための変数である。変数ＲｉｇｈｔＰは、着目バスｂＰの配線脱出口部分に係るリーフセルの中で、右端のリーフセルのセルデータへのポインタを記憶するための変数である。
【０２８７】
続いて、防護壁生成部１２１２は、防護壁色（ｆｌａｖｏｒ）の値が変数ＦＬＡＶＯＲの値（すなわち、着目バスｂＰのバスＩＤ）と一致するセルデータに係るセルを、セル行列の外周上において探索する（Ｓ４−９４１３−２）。具体的には、セルデータｃｅｌｌＰの防護壁色（ｆｌａｖｏｒ）の値が変数ＦＬＡＶＯＲの値と一致する場合、防護壁生成部１２１２は、変数ＦＯＵＮＤにＴＲＵＥを代入する。セルデータｃｅｌｌＰの防護壁色（ｆｌａｖｏｒ）の値が変数ＦＬＡＶＯＲの値と一致しない場合、防護壁生成部１２１２は、変数ｃｅｌｌＰに、セルデータｃｅｌｌＰの右隣のセルポインタ（ｒＬｉｎｋ）を代入し、変数ＬｏｏｐＣｏｕｎｔの値をインクリメントする。続いて、防護壁生成部１２１２は、改めてセルデータｃｅｌｌＰの防護壁色（ｆｌａｖｏｒ）の値と変数ＦＬＡＶＯＲの値とを比較する。セルデータｃｅｌｌＰの防護壁色（ｆｌａｖｏｒ）の値が変数ＦＬＡＶＯＲの値と一致した場合、又は変数ＬｏｏｐＣｏｕｎｔの値がＬｏｏｐＭａｘの値に達した場合、防護壁生成部１２１２は、ステップＳ４−９４１３−３に進む。なお、変数ＬｏｏｐＣｏｕｎｔの値がＬｏｏｐＭａｘの値に達した場合とは、外周の全てのセルに係るセルデータが走査された場合である。
【０２８８】
ステップＳ４−９４１３−２において、防護壁生成部１２１２は、変数ＦＯＵＮＤの値がＴＲＵＥであるか否かを判定する。変数ＦＯＵＮＤの値がＦＡＬＳＥである場合（Ｓ４−９４１３−３でＮｏ）、図６２の処理は終了する。変数ＦＬＡＶＯＲの値と一致する防護壁色（ｆｌａｖｏｒ）を有するセルデータが無ければ、目的とするリーフセルの伸張は不可能だからである。
【０２８９】
変数ＦＯＵＮＤの値がＴＲＵＥである場合、すなわち、変数ＦＬＡＶＯＲの値と一致する防護壁色（ｆｌａｖｏｒ）を有するセルデータが見つかった場合（Ｓ４−９４１３−３でＹｅｓ）、防護壁生成部１２１２は、変数ＬｅｆｔＰ及び変数ＲｉｇｈｔＰのそれぞれに当該セルデータのポインタ（ｃｅｌｌＰ）を代入する（Ｓ４−９４１３−４）。すなわち、最初に見つかったリーフセルが、初期状態において、着目バスｂＰの配線脱出口部分の左端及び右端とされる。防護壁生成部１２１２は、また、変数ＬｏｏｐＣｏｕｎｔの値を０に初期化する。
【０２９０】
続いて、防護壁生成部１２１２は、見つかったリーフセルを起点として、着目バスｂＰの配線脱出口部分のリーフセルの左端をセル行列の外周の左回りに探索する（Ｓ４−９４１３−５）。セル行列の外周の左回りとは、図５６の矢印ａ１の反対方向である。
【０２９１】
具体的には、防護壁生成部１２１２は、セルデータＬｅｆｔＰの左隣のセルポインタ（ｌＬｉｎｋ）に係るセルデータの防護壁色（ｆｌａｖｏｒ）の値が変数ＦＬＡＶＯＲの値と一致しなくなるまで、変数ＬｅｆｔＰの値を左隣のセルポインタ（ｌＬｉｎｋ）によって更新する。また、変数ＬｏｏｐＣｏｕｎｔの値がインクリメントされる。すなわち、着目バスｂＰのリーフセルの左端まで、走査対象のセルが左に移動される。セルデータＬｅｆｔＰの左隣のセルポインタ（ｌＬｉｎｋ）に係るセルデータの防護壁色（ｆｌａｖｏｒ）の値が変数ＦＬＡＶＯＲの値と一致しなくなった場合、又は変数ＬｏｏｐＣｏｕｎｔの値が、変数ＬｏｏｐＭａｘの値に達した場合、防護壁生成部１２１２は、ステップＳ４−９４１３−５の処理を抜ける。変数ＬｏｏｐＣｏｕｎｔの値が、変数ＬｏｏｐＭａｘの値に達した場合とは、セル行列の外周の全てのセルが走査された場合である。
【０２９２】
続いて、防護壁生成部１２１２は、変数ＬｏｏｐＣｏｕｎｔの値を０に初期化する（Ｓ４−９４１３−６）。続いて、防護壁生成部１２１２は、ステップＳ４−９４１３−２において見つかったリーフセルを起点として、着目バスｂＰの配線脱出口部分のリーフセルの右端をセル行列の外周の右回りに探索する（Ｓ４−９４１３−７）。
【０２９３】
具体的には、防護壁生成部１２１２は、セルデータＲｉｇｈｔＰの右隣のセルポインタ（ｒＬｉｎｋ）に係るセルデータの防護壁色（ｆｌａｖｏｒ）の値が変数ＦＬＡＶＯＲの値と一致しなくなるまで、変数ＲｉｇｈｔＰの値を右隣のセルポインタ（ｒＬｉｎｋ）によって更新する。また、変数ＬｏｏｐＣｏｕｎｔの値がインクリメントされる。すなわち、着目バスｂＰのリーフセルの右端まで、走査対象のセルが右に移動される。セルデータＲｉｇｈｔＰの右隣のセルポインタ（ｒＬｉｎｋ）に係るセルデータの防護壁色（ｆｌａｖｏｒ）の値が変数ＦＬＡＶＯＲの値と一致しなくなった場合、又は変数ＬｏｏｐＣｏｕｎｔの値が、変数ＬｏｏｐＭａｘの値に達した場合、防護壁生成部１２１２は、ステップＳ４−９４１３−７の処理を抜ける。
【０２９４】
続いて、防護壁生成部１２１２は、着目バスｂＰの配線脱出口部分のリーフセルを伸張するか否かを示すフラグ変数の値を初期化する（Ｓ４−９４１３−８）。具体的には、左回り（左方向）に伸張するか否かを示すフラグ変数Ｌ＿ＥｘｐａｎｄＦにＴＲＵＥが代入される。また、右回り（右方向）に伸張するか否かを示すフラグ変数Ｒ＿ＥｘｐａｎｄＦにＴＲＵＥが代入される。すなわち、最初は、両方向が伸張方向の候補とされる。
【０２９５】
続いて、防護壁生成部１２１２は、Ｌ＿ＥｘｐａｎｄＦの値がＴＲＵＥであるか否かを判定する（Ｓ４−９４１３−９）。Ｌ＿ＥｘｐａｎｄＦの値がＴＲＵＥでない場合（ステップＳ４−９４１３−９でＮｏ）、ステップＳ４−９４１３−１２に進む。Ｌ＿ＥｘｐａｎｄＦの値がＴＲＵＥである場合（Ｓ４−９４１３−９でＹｅｓ）、防護壁生成部１２１２は、着目バスｂＰの配線脱出口部分について左側へのリーフセルの伸張を試行する（Ｓ４−９４１３−１０）。当該ステップの詳細については後述する。伸張に成功した場合、当該配線脱出口部分に係るリーフセルの容量の総和を記憶する変数ＣＡＰの値が、伸張された分のセルの容量だけ増加され、変数ＬｅｆｔＰの値が、伸張されたセルのセルデータへのポインタに更新される。伸張に失敗した場合、Ｌ＿ＥｘｐａｎｄＦの値はＦＡＬＳＥに更新される。
【０２９６】
続いて、防護壁生成部１２１２は、変数ＣＡＰの値が、着目バスｂＰの所属ネット数以上であるか否かを判定する（Ｓ４−９４１３−１１）。すなわち、着目バスｂＰの所属ネットを引き出すだすために十分な配線脱出口が確保されたか否かが判定される。変数ＣＡＰの値が、着目バスｂＰの所属ネット数以上である場合（Ｓ４−９４１３−１１でＹｅｓ）、防護壁生成部１２１２は、リーフセルの伸張は終了させ、ステップＳ４−９４１３−１５に進む。変数ＣＡＰの値が、着目バスｂＰの所属ネット数未満である場合（Ｓ４−９４１３−１１でＮｏ）、防護壁生成部１２１２は、Ｒ＿ＥｘｐａｎｄＦの値がＴＲＵＥであるか否かを判定する（Ｓ４−９４１３−１２）。
【０２９７】
Ｒ＿ＥｘｐａｎｄＦの値がＴＲＵＥでない場合（ステップＳ４−９４１３−１２でＮｏ）、ステップＳ４−９４１３−１４に進む。Ｒ＿ＥｘｐａｎｄＦの値がＴＲＵＥである場合（Ｓ４−９４１３−１２でＹｅｓ）、防護壁生成部１２１２は、着目バスｂＰの配線脱出口部分について右側へのリーフセルの伸張を試行する（Ｓ４−９４１３−１３）。当該ステップの詳細については後述する。伸張に成功した場合、当該配線脱出口部分に係るリーフセルの容量の総和を記憶する変数ＣＡＰの値が、伸張された分のセルの容量だけ増加され、変数ＲｉｇｈｔＰの値が、伸張されたセルのセルデータへのポインタに更新される。伸張に失敗した場合、Ｒ＿ＥｘｐａｎｄＦの値はＦＡＬＳＥに更新される。
【０２９８】
続いて、防護壁生成部１２１２は、変数ＣＡＰの値が、着目バスｂＰの所属ネット数以上であるか否か、又はＬ＿Ｅｘｐａｎｄ及びＲ＿Ｅｘｐａｎｄの双方の値がＦＡＬＳＥであるか否かを判定する（Ｓ４−９４１３−１４）。変数ＣＡＰの値が、着目バスｂＰの所属ネット数未満であり、かつ、Ｌ＿Ｅｘｐａｎｄ及びＲ＿Ｅｘｐａｎｄの少なくともいずれか一方の値がＴＲＵＥである場合（Ｓ４−９４１３−１４でＮｏ）、防護壁生成部１２１２は、ステップＳ４−９４１３−９以降を繰り返す。
【０２９９】
変数ＣＡＰの値が、着目バスｂＰの所属ネット数以上である場合、又はＬ＿Ｅｘｐａｎｄ及びＲ＿Ｅｘｐａｎｄの双方の値がＦＡＬＳＥである場合（Ｓ４−９４１３−１４でＹｅｓ）、防護壁生成部１２１２は、着目バスｂＰの配線脱出口に関する情報が記録された配線脱出口データＧａｔｅを配線脱出口情報記憶部Ｄ１０に登録する（Ｓ４−９４１３−１５）。
【０３００】
図６３は、配線脱出口情報記憶部の構成例を示す図である。同図に示されるように、配線脱出口情報記憶部Ｄ１０は、対応バス（ｆｌａｖｏｒ）、左端セル（ＬｅｆｔＰ）、右端セル（ＲｉｇｈｔＰ）、容量（ＣＡＰ）、及び防護壁ツリーＩＤ（ｔｒｅｅＩＤ）等のデータ項目を有する。
【０３０１】
対応バス（ｆｌａｖｏｒ）は、配線脱出口に対応するバスのバスＩＤである。左端セル（ＬｅｆｔＰ）は、配線脱出口の左端のセルのセルデータへのポインタである。右端セル（ＲｉｇｈｔＰ）は、配線脱出口の右端のセルのセルデータへのポインタである。容量（ＣＡＰ）は、配線脱出口に属するセルの容量（ｃａｐ）の合計である。防護壁ツリーＩＤ（ｔｒｅｅＩＤ）は、配線脱出口に対応する防護壁ツリーのＩＤである。
【０３０２】
ステップＳ４−９４１３−１５では、配線脱出口情報記憶部Ｄ１０に新たなレコード（配線脱出口データＧａｔｅ）が確保され、当該配線脱出口データＧａｔｅの防護壁色（ｆｌａｖｏｒ）に変数ＦＬＡＶＯＲの値が記録される。また、当該配線脱出口データＧａｔｅの左端セル（ＬｅｆｔＰ）に変数ＬｅｆｔＰの値が記録される。また、当該配線脱出口データＧａｔｅの右端セル（ＲｉｇｈｔＰ）に変数ＲｉｇｈｔＰの値が記録される。更に、当該配線脱出口データＧａｔｅの容量（ＣＡＰ）に、変数ＣＡＰの値が記録される。
【０３０３】
続いて、図６２のステップＳ４−９４１３−１０の詳細について説明する。図６４は、左側へのリーフセルの伸張の試行処理の処理手順を説明するためのフローチャートである。
【０３０４】
ステップＳ４−９４１３−１０Ａにおいて、防護壁生成部１２１２は、セルデータＬｅｆｔＰの左隣のセルポインタ（ｌＬｉｎｋ）を、変数ｅｘｐＣｅｌｌに代入する。変数ｅｘｐＣｅｌｌは、伸張先候補のセルのセルデータへのポインタを記憶する変数である。変数ＬｅｆｔＰは、図６２において定義された変数である。
【０３０５】
続いて、防護壁生成部１２１２は、セルデータｅｘｐＣｅｌｌの容量（ｃａｐ）の値が０より大きいか否かを判定する（Ｓ４−９４１３−１０Ｂ）。セルデータｅｘｐＣｅｌｌの容量（ｃａｐ）の値が０より大きい場合（Ｓ４−９４１３−１０ＢでＹｅｓ）、防護壁生成部１２１２は、セルデータｅｘｐＣｅｌｌの防護壁色（ｆｌａｖｏｒ）の値が−１であるか否かを判定する（Ｓ４−９４１３−１０Ｃ）。すなわち、伸張先候補のセルが、未だいずれのバスのリーフセルとされてないか否かが判定される。
【０３０６】
セルデータｅｘｐＣｅｌｌの防護壁色（ｆｌａｖｏｒ）の値が−１である場合、すなわち、伸張先候補のセルがまだリーフセルではない場合（Ｓ４−９４１３−１０ＣでＹｅｓ）、防護壁生成部１２１２は、セルデータｅｘｐＣｅｌｌの防護壁色（ｆｌａｖｏｒ）に変数ＦＬＡＶＯＲの値を代入する（Ｓ４−９４１３−１０Ｄ）。すなわち、伸張候補のセルが、着目バスｂＰのリーフセルとされる。これにより、着目バスｂＰの配線脱出口部分の左端は、左方向に一つ伸張された。したがって、防護壁生成部１２１２は、変数ＬｅｆｔＰに変数ｅｘｐＣｅｌｌの値を代入する。
【０３０７】
続いて、防護壁生成部１２１２は、セル行列内において、セルデータｅｘｐＣｅｌｌに係るセルの一つ内側のセルを探索し、探索されたセルのセルデータへのポインタをｉｎｓｉｄｅＰに代入する（Ｓ４−９４１３−１０Ｅ）。続いて、防護壁生成部１２１２は、当該一つ内側のセルのセルデータｉｎｓｉｄｅＰに基づいて、変数ＣＡＰの値を更新する（Ｓ４−９４１３−１０Ｆ）。
【０３０８】
一方、セルデータｅｘｐＣｅｌｌの容量（ｃａｐ）の値が０以下である場合（Ｓ４−９４１３−１０ＢでＮｏ）、又はセルデータｅｘｐＣｅｌｌの防護壁色（ｆｌａｖｏｒ）の値が−１以外である場合（Ｓ４−９４１３−１０ＣでＮｏ）、防護壁生成部１２１２は、Ｌ＿ＥｘｐａｎｄＦの値をＦＡＬＳＥとし、リーフセルの伸張は行わない（Ｓ４−９４１３−１０Ｇ）。伸張先候補のセルの容量が０の場合は、伸張する意味がないからである。また、既にリーフセルとなっているセルを横取りすると、他のバスのネット配線の引き出しが破綻してしまうからである。
【０３０９】
続いて、図６２のステップＳ４−９４１３−１３の詳細について説明する。図６５は、右側へのリーフセルの伸張の試行処理の処理手順を説明するためのフローチャートである。
【０３１０】
ステップＳ４−９４１３−１３Ａにおいて、防護壁生成部１２１２は、セルデータＲｉｇｈｔＰの右隣のセルポインタ（ｒＬｉｎｋ）を、変数ｅｘｐＣｅｌｌに代入する。変数ｅｘｐＣｅｌｌは、伸張先候補のセルのセルデータへのポインタを記憶する変数である。変数ＲｉｇｈｔＰは、図６２において定義された変数である。
【０３１１】
続いて、防護壁生成部１２１２は、セルデータｅｘｐＣｅｌｌの容量（ｃａｐ）の値が０より大きいか否かを判定する（Ｓ４−９４１３−１３Ｂ）。セルデータｅｘｐＣｅｌｌの容量（ｃａｐ）の値が０より大きい場合（Ｓ４−９４１３−１３ＢでＹｅｓ）、防護壁生成部１２１２は、セルデータｅｘｐＣｅｌｌの防護壁色（ｆｌａｖｏｒ）の値が−１であるか否かを判定する（Ｓ４−９４１３−１３Ｃ）。すなわち、伸張先候補のセルが、未だいずれのバスのリーフセルとされてないか否かが判定される。
【０３１２】
セルデータｅｘｐＣｅｌｌの防護壁色（ｆｌａｖｏｒ）の値が−１である場合、すなわち、伸張先候補のセルがまだリーフセルではない場合（Ｓ４−９４１３−１３ＣでＹｅｓ）、防護壁生成部１２１２は、セルデータｅｘｐＣｅｌｌの防護壁色（ｆｌａｖｏｒ）に変数ＦＬＡＶＯＲの値を代入する（Ｓ４−９４１３−１３Ｄ）。すなわち、伸張候補のセルが、着目バスｂＰのリーフセルとされる。これにより、着目バスｂＰの配線脱出口部分の右端は、右方向に一つ伸張された。したがって、防護壁生成部１２１２は、変数ＲｉｇｈｔＰに変数ｅｘｐＣｅｌｌの値を代入する。
【０３１３】
続いて、防護壁生成部１２１２は、セル行列内において、セルデータｅｘｐＣｅｌｌに係るセルの一つ内側のセルを探索し、探索されたセルのセルデータへのポインタをｉｎｓｉｄｅＰに代入する（Ｓ４−９４１３−１３Ｅ）。続いて、防護壁生成部１２１２は、当該一つ内側のセルのセルデータｉｎｓｉｄｅＰに基づいて、変数ＣＡＰの値を更新する（Ｓ４−９４１３−１３Ｆ）。
【０３１４】
一方、セルデータｅｘｐＣｅｌｌの容量（ｃａｐ）の値が０以下である場合（Ｓ４−９４１３−１３ＢでＮｏ）、又はセルデータｅｘｐＣｅｌｌの防護壁色（ｆｌａｖｏｒ）の値が−１以外である場合（Ｓ４−９４１３−１３ＣでＮｏ）、防護壁生成部１２１２は、Ｒ＿ＥｘｐａｎｄＦの値をＦＡＬＳＥとし、リーフセルの伸張は行わない（Ｓ４−９４１３−１３Ｇ）。
【０３１５】
続いて、図６４のステップＳ４−９４１３−１０Ｅ、及び図６５のステップＳ４−９４１３−１３Ｅの詳細について説明する。
【０３１６】
図６６は、セル行列の外周セルの一つ内側のセルの探索処理を説明するためのフローチャートである。
【０３１７】
セルデータｅｘｐＣｅｌｌの行番号が１である場合、セルデータｅｘｐＣｅｌｌに係るセルは、セル行列において北端の行に位置する。したがって、セルデータｅｘｐＣｅｌｌの南隣のセルポインタ（ｃＳ）が変数ｉｎｓｉｄｅＰに代入される。
【０３１８】
セルデータｅｘｐＣｅｌｌの行番号が最大値（行数−１）である場合、セルデータｅｘｐＣｅｌｌに係るセルは、セル行列において南端の行に位置する。したがって、セルデータｅｘｐＣｅｌｌの北隣のセルポインタ（ｃＮ）が変数ｉｎｓｉｄｅＰに代入される。
【０３１９】
セルデータｅｘｐＣｅｌｌの列番号が１である場合、セルデータｅｘｐＣｅｌｌに係るセルは、セル行列において西端の列に位置する。したがって、セルデータｅｘｐＣｅｌｌの東隣のセルポインタ（ｃＥ）が変数ｉｎｓｉｄｅＰに代入される。
【０３２０】
セルデータｅｘｐＣｅｌｌの列番号が最大値（列数−１）である場合、セルデータｅｘｐＣｅｌｌに係るセルは、セル行列において東端の列に位置する。したがって、セルデータｅｘｐＣｅｌｌの西隣のセルポインタｃＮが変数ｉｎｓｉｄｅＰに代入される。
【０３２１】
続いて、図６４のステップＳ４−９４１３−１０Ｆ、及び図６５のステップＳ４−９４１３−１３Ｆの詳細について説明する。
【０３２２】
図６７は、伸張先のリーフセルの一つ内側のセルに基づいて配線脱出口部分の容量を更新する処理の処理手順を説明するためのフローチャートである。なお、図６７の処理内容は、図６１のステップＳ４−９４９−Ａ８の処理内容と同じである。
【０３２３】
セルデータｉｎｓｉｄｅＰのセル属性（ａｔｔｒ）の値がＶ（水平ピン間）、Ｈ（垂直ピン間）、又はＥＰ（空きピン）である場合、変数ＣＡＰには、セルデータｉｎｓｉｄｅＰの容量（ｃａｐ）の値が加算される。なお、セルデータｉｎｓｉｄｅＰは、伸張先のリーフセルの一つ内側のセルのセルデータである。
【０３２４】
一方、セルデータｉｎｓｉｄｅＰの防護壁色（ｆｌａｖｏｒ）の値が変数ＦＬＡＶＯＲと一致し、かつ、セルデータｉｎｓｉｄｅＰの容量確認済みフラグ（ｐｉｎＣａｐＣｈｅｃｋｅｄＦ）の値がＦＡＬＳＥである場合、変数ＣＡＰには１が加算される。
【０３２５】
以上で、着目バスｂＰの防護壁の配線脱出口部分に係るリーフセルの伸張処理は終了する。続いて、図５５のステップＳ４−９４−１７の詳細について説明する。
【０３２６】
図６８及び図６９は、リーフセルの連結による防護壁の生成処理の処理手順を説明するためのフローチャートである。図６８及び図６９では、防護壁色（ｆｌａｖｏｒ）の値が同じリーフセル同士を結ぶ経路がセル行列上において探索され、当該経路によって１つのツリーが生成される。当該ツリーが目的とする防護壁を構成する。以下、当該ツリーを「防護壁ツリー」という。防護壁ツリーの生成は、着目層Ｌ及び着目部品に係るバスごとに実行される。全部のバスについて防護壁ツリーが生成された後、防護壁ツリー間の干渉の有無がバスごと（防護壁ツリーごと）に検査される。他の防護壁ツリーとの干渉が検出された防護壁については、改めて経路探索が行われる。但し、防護壁ツリーの干渉が回避できない場合も考えられる。したがって、無限ループを避けるため、経路探索のやり直し回数には上限が設けられる。以下、ステップごとに説明する。
【０３２７】
ステップＳ４−９４１７−１において、防護壁生成部１２１２は、各変数を初期化する。具体的には、変数Ｎに１が代入される。変数Ｅに２が代入される。変数Ｗに３が代入される。変数Ｓに４が代入される。変数Ｎ、Ｅ、Ｗ、Ｓは、セル行列における方向（北、東、西、南）を示す変数である。また、全てのセルデータの防護壁ツリーＩＤ（ｔｒｅｅＩＤ）に、当該セルデータのセルデータ配列ｃｅｌｌにおける添え字（インデックス番号）が代入される。すなわち、初期状態において、各セルの防護壁ツリーＩＤ（ｔｒｅｅＩＤ）の値は、それぞれ一意なものとなる。後述の処理において、防護壁ツリーが形成される際に、連結される一方のセルの防護壁ツリーＩＤ（ｔｒｅｅＩＤ）の値は、他方の防護壁ツリーＩＤ（ｔｒｅｅＩＤ）の値によって更新される（塗り替えられる）。また、変数Ｉｔｅｒａｔｉｏｎの値が０に初期化される。変数Ｉｔｅｒａｔｉｏｎは、防護壁ツリー間に干渉が検出された場合に、防護壁ツリーの経路探索のやり直し回数を記憶するための変数である。
【０３２８】
続いて、防護壁生成部１２１２は、バス集合ＢＧのインデックスとしての変数ｉを０に初期化する。また、防護壁生成部１２１２は、変数ＭｏｄｉｆｉｅｄＴｒｅｅＮを０に初期化する（Ｓ４−９４１７−２）。変数ＭｏｄｉｆｉｅｄＴｒｅｅＮは、バス集合ＢＧに含まれるバス群の中で、防護壁ツリーの形状に変化があったバスの数を記憶するための変数である。防護壁ツリーの形状の変化には、防護壁ツリーの新規生成も含まれる。
【０３２９】
続いて、防護壁生成部１２１２は、バス集合ＢＧにおいてｉ番目のバス（ＢＧ［ｉ］）を着目バスｂＰとし、着目バスｂＰの変更に応じて値が変化する変数の値を初期化する（Ｓ４−９４１７−３）。具体的には、変数ＦＬＡＶＯＲに、着目バスのバスＩＤが代入される。また、セルデータ配列ｃｅｌｌの中から、防護壁色（ｆｌａｖｏｒ）の値が変数ＦＬＡＶＯＲの値と一致するセルデータがセル集合ｃｅｌｌＧとして抽出される。セル集合ｃｅｌｌＧは、着目バスｂＰに対する防護壁ツリーを形成するために連結されるセルに係るセルデータの集合である。例えば、図５８において、着目バスがバスＢ［０］の場合、セルｃ１〜ｃ３９のそれぞれに対応する３９個のセルデータがセル集合ｃｅｌｌＧに抽出される。
【０３３０】
また、変数ｗｉｒｅＮに、セル集合ｃｅｌｌＧの要素数−１が代入される。変数ｗｉｒｅＮは、防護壁ツリーを形成するために連結すべき区間数を記憶する変数である。したがって、変数ｗｉｒｅＮの値は、セル集合ｃｅｌｌＧの要素数（連結対象のセルの数）−１とされる。また、フラグ変数ＣｒｏｓｓｏｖｅｒＦにＦＡＬＳＥが代入される。ＣｒｏｓｓｏｖｅｒＦは、防護壁ツリー間に干渉が検出されたときにＴＲＵＥとされるフラグ変数である。
【０３３１】
続いて、防護壁生成部１２１２は、変数Ｉｔｅｒａｔｉｏｎの値が０より大きいか否かを判定する（Ｓ４−９４１７−４）。変数Ｉｔｅｒａｔｉｏｎは、ステップＳ４−９４１７−１において０に初期化されている。したがって、最初にステップＳ４−９４１７−４が実行される場合、その判定結果はＮｏとなる。
【０３３２】
ステップＳ４−９４１７−４における判定結果がＮｏの場合、防護壁生成部１２１２は、セル行列データｃｅｌｌに含まれる全てのセルデータについて、防護壁ツリーの経路探索に使用するメンバ変数を初期化する（Ｓ４−９４１７−２１）。具体的には、ラベル伝播元方向（ｐａｒｅｎｔＤｉｒ）に０（不定）が代入される。また、道程（ｌａｂｅｌ）に最大値が代入される。最大値は、道程（ｌａｂｅｌ）として取り得る値を超える所定値であればよい。探索ソースフラグ（ｓＦｌａｇ）及び探索ターゲットフラグ（ｔＦｌａｇ）のそれぞれにはＦＡＬＳＥが代入される。
【０３３３】
続いて、防護壁生成部１２１２は、セル集合ｃｅｌｌＧに含まれるセルデータの中から、後述の処理によって他のセルと連結されていないセルに係るセルデータを検索し、検索されたセルデータのうちの一つを変数ｓｏｕｒｃｅＣｅｌｌに代入する（Ｓ４−９４１７−２２）。複数のセルデータが検索される場合、いずれか一つがランダムに選択されればよい。変数ｓｏｕｒｃｅＣｅｌｌに係るセルは、ステップＳ４−９４１７−２５における防護壁ツリーの経路探索の始点とされる。
【０３３４】
なお、他のセルと連結されていないセルに係るセルデータは、防護壁ツリーＩＤ（ｔｒｅｅＩＤ）の値が当該セルデータのインデックス番号と一致し、かつ、防護壁ツリー線分数（ｓｅｇＮｕｍ）の値が０であるセルデータである。後述されるように、防護壁ツリーＩＤ（ｔｒｅｅＩＤ）の値が当該セルデータのインデックス番号と一致しないセルデータに係るセルは、他のセルと連結されたセルだからである。また、防護壁ツリーＩＤ（ｔｒｅｅＩＤ）の値が当該セルデータのインデックス番号と一致するセルデータであっても、防護壁ツリー線分数ＳｅｇＮｕｍの値が０以外であれば、当該セルデータに係るセルは他のセルと連結されたセルだからである。
【０３３５】
一方、他のセルと連結されていないセルに係るセルデータが無い場合、防護壁生成部１２１２は、セル集合ｃｅｌｌＧの中で、他のセルと連結されている数が最も少ないセルのうちの一つを変数ｓｏｕｒｃｅＣｅｌｌに代入する。すなわち、防護壁ツリーの経路探索の始点となるセルはランダムに選択されるため、防護壁ツリーを形成する過程において、お互いに分断されている複数の島が形成された状態が生じうる。ここでは、斯かる島の中で最小の島に属するセルのうちの一つが変数ｓｏｕｒｃｅＣｅｌｌに代入される（すなわち、経路探索の始点とされる）。いずれを代入するかは、ランダムに決定されてよい。なお、最小の島に属するセル群のセルデータは、防護壁ツリーセル数（ｃｅｌｌＮｕｍ）が最小のセルデータである。防護壁ツリーセル数（ｃｅｌｌＮｕｍ）には、同じ島に属しているセル数が記録されるからである。また、後述より明らかなように、各島において、当該島の経路を示す防護壁線分データのリストは、当該島に属するいずれか一つのセルのセルデータの防護壁ツリー線分リスト（ｓｅｇＬｉｓｔ）に記録される。防護壁線分データのリストが記録されるセルは、当該島の経路探索において最後に始点となったセルである。なお、防護壁線分データの詳細については後述する。
【０３３６】
上記より、ステップＳ４−９４１７−２２において、変数ｓｏｕｒｃｅＣｅｌｌに格納されるセルデータは、他のセルと島を形成していないセルのセルデータ、又は他のセルと最小の島を形成しているセルのセルデータである。以下、「ｓｏｕｒｃｅＣｅｌｌに係る島」というとき、変数ｓｏｕｒｃｅＣｅｌｌに格納されたセルデータに係るセル及び当該セルと連結されたセル群とによって形成される島を意味する。該当するセルが一つしか無い場合は、当該一つのセルによって形成される島である。
【０３３７】
続いて、防護壁生成部１２１２は、セルデータｓｏｕｒｃｅＣｅｌｌの探索ソースフラグ（ｓＦｌａｇ）にＴＲＵＥを代入する。また、防護壁生成部１２１２は、ｓｏｕｒｃｅＣｅｌｌに係る島の経路を示す防護壁線分データのリストによって示される線（直線又は折れ線）が通過している各セルのセルデータの探索ソースフラグ（ｓＦｌａｇ）にＴＲＵＥを代入する（Ｓ４−９４１７−２３）。ｓＦｌａｇがＴＲＵＥであるということは、経路探索において始点とされることを意味する。例えば、図５７において、セルデータｓｏｕｒｃｅＣｅｌｌに係るセルがセルｃ１であり、セルｃ１とセルｃ２とが連結されて一つの島を形成している場合、当該島には、セルｃ１及びｃ２の間のセル（ピン間のセル）も属する。したがって、当該島を示す線を通過するセルには、セルｃ１及びｃ２の他に、その間のセルが含まれる。なお、上記したように、当該防護壁線分データのリストは、ｓｏｕｒｃｅＣｅｌｌに係る島に属するいずれか一つのセルのセルデータの防護壁ツリー線分リスト（ｓｅｇＬｉｓｔ）に記録されている。
【０３３８】
続いて、防護壁生成部１２１２は、ｓｏｕｒｃｅＣｅｌｌに係る島以外の島（一つのセルによって形成される島も含む）に属する全てのセルのセルデータの探索ターゲットフラグ（ｔＦｌａｇ）にＴＲＵＥを代入する（Ｓ４−９４１７−２４）。すなわち、セル集合ｃｅｌｌＧに含まれるセルデータの中で、ソースフラグ（ｓＦｌａｇ）の値がＦＡＬＳＥのセルデータと、ソースフラグ（ｓＦｌａｇ）の値がＦＡＬＳＥのいずれかのセルデータの防護壁ツリー線分リスト（ｓｅｇＬｉｓｔ）によって示される線が通過するセルに係るセルデータの探索ターゲットフラグ（ｔＦｌａｇ）にＴＲＵＥが代入される。
【０３３９】
ステップＳ４−９４１７−２２からＳ４−９４１７−２４によって、いずれか一つの島に属するセルが経路探索の始点とされ、他の全ての島に属するセルが経路探索の終点（目的地）とされたことになる。例えば、最初に当該ステップが実行される場合について、図５８を用いて説明すると、セルｃ１が始点とされた場合、セルｃ２〜セルｃ３９が終点とされる。なお、最初に当該ステップが実行される場合は、まだ、いずれのリーフセルも連結されていないため、島の経路を示す防護壁線分データのリストは生成されていない。したがって、リーフセル間のセルは、始点又は終点に含まれない。
【０３４０】
続いて、防護壁生成部１２１２は、着目部品のセル行列の各セルをグリッドと見なし、迷路法によって、始点のセル（グリッド）から終点のセル（グリッド）への経路を探索する（Ｓ４−９４１７−２５）。始点のセルとは、セルデータの探索ソースフラグ（ｓＦｌａｇ）がＴＲＵＥであるセルである。終点のセルとは、セルデータの探索ターゲットフラグ（ｔＦｌａｇ）がＴＲＵＥであるセルである。経路探索の枝は、各セルデータの東隣のセルポインタ（ｃＥ）、西隣のセルポインタ（ｃＷ）、北隣のセルポインタ（ｃＮ）、及び南隣のセルポインタ（ｃＳ）である。すなわち、終点のセルが見つかるまで、経路探索のラベル（前線）が十時方向に放射状に伝播していく。但し、ラベルの伝播条件は、伝播先のセルのセルデータの容量（ｃａｐ）の値が０より大きく、かつ、伝播先セルのセルデータの道程（ｌａｂｅｌ）が、伝播元セルの道程×ＣＯＳＴより大きいことである。ここで、ＣＯＳＴは、伝播先への道程のコストを示し、以下の式によって計算される。
ＣＯＳＴ＝（１＋ＣＯＥＦＦ×伝播先セルのセルデータの防護壁ツリー線分通過数（ｐａｔｔｅｒｎＮｕｍ））
【０３４１】
防護壁ツリー線分通過数（ｐａｔｔｅｒｎＮｕｍ）は、防護壁ツリーを示す線分が当該セルを通過している数である。この値が０でないということは、伝播先セルは、既に他のバスの防護壁ツリーの一部とされていることを意味する。ＣＯＥＦＦは、既に他のバスの防護壁ツリーの一部とされているセルに対するペナルティ係数である。すなわち、防護壁ツリー間の干渉を避けるためには、他のバスの防護壁ツリーの一部とされているセルを通過する経路が選択されるのは好ましくない。そこで、既に他のバスの防護壁ツリーの一部とされているセルを経路として選択するコストを増加させるために、当該セルへの道程のコスト（ＣＯＳＴ）には、（ＣＯＥＦＦ×伝播先セルのセルデータの防護壁ツリー線分通過数（ｐａｔｔｅｒｎＮｕｍ））が加算されるのである。なお、ＣＯＥＦＦの初期値は、適宜定めればよい。
【０３４２】
上記伝播条件が満たされた伝播先には、ラベルが伝播する。この場合、伝播先セルのセルデータのラベル伝播元方向（ｐａｒｅｎｔＤｉｒ）には、当該伝播先セルから見た場合の伝播元セルの方向を示す値（Ｎ、Ｅ、Ｗ、又はＳのいずれかの値）が代入される。また、伝播先セルのセルデータの道程（ｌａｂｅｌ）には、伝播元セルのセルデータの道程（ｌａｂｅｌ）＋ＣＯＳＴが代入される。
【０３４３】
例えば、図５８において、セルｃ１のみが始点の場合、セルｃ１から最も近いセルｃ２又はｃ４に到達した時点で、経路探索（ステップＳ４−９４１７−２５）は終了する。セルｃ２又はｃ４のいずれに先に到達するかは、ラベルの伝播方向に関していずれを優先させるかによる。ここでは、セルｃ２に先に到達したこととする。その場合、セルｃ１及びセルｃ２の間のセルと、セルｃ２とに関して、上記した伝播先セルに対するセルデータの更新が行われる。
【０３４４】
続いて、防護壁生成部１２１２は、探索された経路（探索経路）を示す防護壁線分データを生成するための準備を行う（Ｓ４−９４１７−３１）。具体的には、探索経路の終点のセルのセルデータが変数ｔａｒｇｅｔＣｅｌｌに代入される。上記の例では、セルｃ２のセルデータである。変数ｘ１、ｙ１のそれぞれに、セルデータｔａｒｇｅｔＣｅｌｌの列番号（ｃ）、行番号（ｒ）が代入される。変数ｘ１及びｙ１は、防護壁線分データを生成する過程において更新されうる。すなわち、防護壁線分データは、探索経路の終点から始点へかけて当該経路を遡ることにより生成されるところ、変数ｘ１及びｙ１は、当該探索経路の曲がり角が検出された際に、当該曲がり角の頂点に位置するセルの列番号又は行番号によって更新される。また、セルデータｔａｒｇｅｔＣｅｌｌの伝播元方向ｐａｒｅｎｔＤｉｒが変数ｃｕｒｒｅｎｔＤｉｒに代入される。セルデータｔａｒｇｅｔＣｅｌｌの伝播元方向（ｐａｒｅｎｔＤｉｒの方向）に隣接するセルのセルデータが、変数ｃｕｒｒｅｎｔＣｅｌｌに代入される。変数ｃｕｒｒｅｎｔＣｅｌｌは、遡りの最前線に位置するセルに係るセルデータを示す。なお、図５８におけるセルｃ１からセルｃ２への経路の場合、当該隣接セルは、セルｃ１及びｃ２の間のセルである。また、フラグ変数ＳＦｏｕｎｄにＦＡＬＳＥが代入される。ＳＦｏｕｎｄは、経路探索の始点のセルが見つかったか否かを記憶するフラグ変数である。また、変数ｔｍｐＳｅｇにＮＵＬＬが代入される。
【０３４５】
なお、防護壁線分データは、例えば、次のような構造を有する。図７０は、防護壁線分データの構成例を示す図である。同図に示されるように、防護壁線分データは、始点ｘ座標（ｘ１）、始点ｙ座標（ｙ１）、終点ｘ座標（ｘ２）、終点ｙ座標（ｙ２）、防護壁ツリーＩＤ（ｔｒｅｅＩＤ）、及び次ポインタ（ｎｅｘｔ）等のメンバ変数（データ項目）を有する。
【０３４６】
始点ｘ座標（ｘ１）は、防護壁線分データが示す線分の始点となるセルのセル行列における列番号である。始点ｙ座標（ｙ１）は、防護壁線分データが示す線分の始点となるセルのセル行列における行番号である。終点ｘ座標（ｘ２）は、防護壁線分データが示す線分の終点となるセルのセル行列における列番号である。終点ｙ座標（ｙ２）は、防護壁線分データが示す線分の終点となるセルのセル行列における行番号である。防護壁ツリーＩＤ（ｔｒｅｅＩＤ）は、防護壁線分データが対応する防護壁ツリーの識別子である。次ポインタ（ｎｅｘｔ）は、次の防護壁線分データへのポインタである。すなわち、各防護壁線分データが、次ポインタ（ｎｅｘｔ）によって関連付けられることにより、折れ曲がった経路に基づく防護壁ツリーが表現される。なお、一つの防護壁線分データは、防護壁ツリーの一つの直線区間に対応する。
【０３４７】
続いて、防護壁生成部１２１２は、フラグ変数ＭａｋｅＳｅｇＦにＦＡＬＳＥを代入する（Ｓ４−９４１７−３２）。ＭａｋｅＳｅｇＦは、防護壁線分データを生成したか否かを記憶するフラグ変数である。続いて、防護壁生成部１２１２は、所定の条件が満たされる場合、探索経路を示す防護壁線分データの一部又は全部を生成する（Ｓ４−９４１７−３３）。
【０３４８】
具体的には、セルデータｃｕｒｒｅｎｔＣｅｌｌの探索ソースフラグ（ｓＦｌａｇ）がＴＲＵＥである場合（以下、「ケース１」という。）、すなわち、探索経路の終点からの遡りが始点のセルに到達した場合、変数ｘ２、ｙ２のそれぞれにセルデータｃｕｒｒｅｎｔＣｅｌｌの列番号（ｃ）、行番号（ｒ）が代入される。続いて、防護壁線分データｓｅｇ（図７０参照）がメモリ装置１０３内に１つ生成される。防護壁線分データｓｅｇの始点ｘ座標（ｘ１）、始点ｙ座標（ｙ１）、終点ｘ座標（ｘ２）、終点ｙ座標（ｙ２）には、順番に、変数ｘ１、ｙ１、ｘ２、ｙ２の値が代入される。続いて、防護壁線分データｓｅｇの防護壁ツリーＩＤ（ｔｒｅｅＩＤ）に、セルデータｓｏｕｒｃｅＣｅｌｌの防護壁ツリーＩＤ（ｔｒｅｅＩＤ）が代入される。すなわち、防護壁線分データの防護壁ツリーＩＤは、当該防護壁線分データが示す経路の始点となった島に属するセルのセルデータの防護壁ツリーＩＤの値に従う。また、防護壁線分データｓｅｇが生成されたため、ＭａｋｅＳｅｇＦにＴＲＵＥが代入される。更に、探索経路の始点のセルが見つかったため、ＳＦｏｕｎｄにＴＲＵＥが代入される。
【０３４９】
一方、セルデータｃｕｒｒｅｎｔＣｅｌｌのラベル伝播元方向（ｐａｒｅｎｔＤｉｒ）の値が、変数ｃｕｒｒｅｎｔＤｉｒの値と異なる場合（以下「ケース２」という。）、すなわち、遡りの過程において曲がり角が検出された場合、変数ｘ２、ｙ２のそれぞれにセルデータｃｕｒｒｅｎｔＣｅｌｌの列番号（ｃ）、行番号（ｒ）が代入される。続いて、防護壁線分データｓｅｇがメモリ装置１０３内に１つ生成される。防護壁線分データｓｅｇの始点ｘ座標（ｘ１）、始点ｙ座標（ｙ１）、終点ｘ座標（ｘ２）、終点ｙ座標（ｙ２）には、順番に、変数ｘ１、ｙ１、ｘ２、ｙ２の値が代入される。続いて、防護壁線分データｓｅｇの防護壁ツリーＩＤ（ｔｒｅｅＩＤ）に、セルデータｓｏｕｒｃｅＣｅｌｌの防護壁ツリーＩＤ（ｔｒｅｅＩＤ）が代入される。また、防護壁線分データｓｅｇが生成されたため、ＭａｋｅＳｅｇＦにＴＲＵＥが代入される。また、曲がり角が検出されたため、当該曲がり角の頂点の列番号及び行番号によって、変数ｘ１及びｙ１の値が更新される。すなわち、変数ｘ１に変数ｘ２の値が代入される。変数ｙ１に変数ｙ２の値が代入される。また、変数ｃｕｒｒｅｎｔＤｉｒに、セルデータｃｕｒｒｅｎｔＣｅｌｌのラベル伝播元方向（ｐａｒｅｎｔＤｉｒ）が代入される。すなわち、新たな遡りの方向が変数ｃｕｒｒｅｎｔＤｉｒに代入される。更に、変数ｃｕｒｒｅｎｔＣｅｌｌには、セルデータｃｕｒｒｅｎｔＣｅｌｌのラベル伝播元方向（ｐａｒｅｎｔＤｉｒ）の方向に隣接するセルのセルデータが代入される。すなわち、遡りの最前線がセル一つ分ずらされる。
【０３５０】
又は、ケース１及びケース２のいずれにも該当しない場合（以下「ケース３」という。）、変数ｃｕｒｒｅｎｔＣｅｌｌには、セルデータｃｕｒｒｅｎｔＣｅｌｌのラベル伝播元方向（ｐａｒｅｎｔＤｉｒ）の方向に隣接するセルのセルデータが代入される。すなわち、遡りの最前線がセル一つ分ずらされる。
【０３５１】
続いて、防護壁生成部１２１２は、ＭａｋｅＳｅｇＦの値がＴＲＵＥである場合であるか否かを判定する（Ｓ４−９４１７−３４）。すなわち、線分データが生成されたか否かが判定される。ＭａｋｅＳｅｇＦの値がＴＲＵＥでない場合（Ｓ４−９４１７−３４でＮｏ）、すなわち、ステップＳ４−９４１７−３３でケース３だった場合、ステップＳ４−９４１７−３３が繰り返される。
【０３５２】
ＭａｋｅＳｅｇＦの値がＴＲＵＥである場合（Ｓ４−９４１７−３４でＹｅｓ）、防護壁生成部１２１２は、生成された防護壁線分データをセルデータｓｏｕｒｃｅＣｅｌｌの防護壁ツリー線分データリスト（ｓｅｇＬｉｓｔ）に登録する（Ｓ４−９４１７−３５）。また、セルデータｓｏｕｒｃｅＣｅｌｌの防護壁ツリー線分数（ｓｅｇＮｕｍ）に１が加算される。更に、セルデータｓｏｕｒｃｅＣｅｌｌの防護壁ツリーセル数（ｃｅｌｌＮｕｍ）に、防護壁線分データｓｅｇに含まれるセル数−１が代入される。
【０３５３】
続いて、防護壁生成部１２１２は、ＳＦｏｕｎｄの値がＴＲＵＥであるか否かを判定する（Ｓ４−９４１７−３６）。ＳＦｏｕｎｄがＦＡＬＳＥの場合、すなわち、遡りが探索経路の始点に到達していない場合（Ｓ４−９４１７−３６でＮｏ）、ステップＳ４−９４１７−３２以降が繰り返される。
【０３５４】
ＳＦｏｕｎｄがＴＲＵＥの場合、すなわち、遡りが探索経路の始点に到達した場合（Ｓ４−９４１７−３６でＹｅｓ）、防護壁生成部１２１２は、探索経路の終点に位置するセル（ｔａｒｇｅｔＣｅｌｌ）が属していた島の経路を示す防護壁ツリー線分データのリストを取得し、変数ＳＥＧに代入する（Ｓ４−９４１７−３７）。また、当該防護壁ツリー線分データの防護壁ツリーＩＤ（ｔｒｅｅＩＤ）の値を変数ＴＩＤに代入する。なお、探索経路の終点に位置するセルが属していた島の経路を示す防護壁ツリー線分データは、当該島に属するいずれか一つのセルによって保持されている。したがって、具体的には、セルデータｔａｒｇｅｔＣｅｌｌの列番号（ｃ）及び行番号（ｒ）を通過する防護壁ツリー線分データを防護壁ツリー線分リスト（ｓｅｇＬｉｓｔ）に含むセルデータがセル集合ｃｅｌｌＧより検索され、当該セルデータの防護壁ツリー線分リスト（ｓｅｇＬｉｓｔ）が変数ＳＥＧに代入される。
【０３５５】
但し、ステップＳ４−９４１７−３７において、目的とする防護壁ツリー線分データのリストが取得できるのは、探索経路の終点側の島が複数のセルを含む場合である。この場合（Ｓ４−９４１７−３８でＹｅｓ）、防護壁生成部１２１２は、探索経路によって連結された二つの島を統合するための処理を実行する（Ｓ４−９４１７−３９）。すなわち、探索経路の終点に位置するセルが属していた島の経路を示す防護壁ツリー線分データのリストが、探索経路の始点側の島の経路を示す防護壁ツリー線分データに統合される。また、探索経路の終点に位置するセルが属していた島に属する各セルのセルデータの防護壁ツリーＩＤ（ｔｒｅｅＩＤ）が、探索経路の始点側の島に属するセルのセルデータの防護壁ツリーＩＤによって更新される。具体的には、セルデータ行列ｃｅｌｌにおいてＴＩＤ番目のセルデータ（セルデータ配列ｃｅｌｌ［ＴＩＤ］）の防護壁ツリー線分リスト（ｓｅｇＬｉｓｔ）に含まれている各防護壁線分データの防護壁ツリーＩＤ（ｔｒｅｅＩＤ）が、セルデータｓｏｕｒｃｅＣｅｌｌの防護壁ツリーＩＤ（ｔｒｅｅＩＤ）によって更新される。また、セルデータｓｏｕｒｃｅＣｅｌｌの防護壁ツリー線分リスト（ｓｅｇＬｉｓｔ）に、変数ＳＥＧに代入されている防護壁ツリー線分リストをつなぎ加える。また、セルデータｓｏｕｒｃｅＣｅｌｌの防護壁ツリー線分数（ｓｅｇＮｕｍ）に、変数ＳＥＧに含まれていた防護壁ツリー線分の数が加算される。また、セルデータｓｏｕｒｃｅＣｅｌｌの防護壁ツリーセル数（ｃｅｌｌＮｕｍ）に、セルデータｃｅｌｌ［ＴＩＤ］の防護壁ツリーセル数（ｃｅｌｌＮｕｍ）が加算される。また、セルデータｃｅｌｌ（ＴＩＤ）の防護壁ツリー線分数（ｓｅｇＮｕｍ）の値が０に更新され、防護壁ツリー線分リスト（ｓｅｇＬｉｓｔ）が空にされる。また、セルデータｃｅｌｌ（ＴＩＤ）の防護壁ツリーセル数（ｃｅｌｌＮｕｍ）に１が代入される。更に、セル集合ｃｅｌｌＧの中で、防護壁ツリーＩＤ（ｔｅｅＩＤ）がＴＩＤであるセルデータの防護壁ツリーＩＤ（ｔｅｅＩＤ）に、セルデータｓｏｕｒｃｅＣｅｌｌの防護壁ツリーＩＤ（ｔｒｅｅＩＤ）の値が代入される。以上はSEGリストに連結されていた線分をｓｏｕｒｃｅＣｅｌｌの方に移動させたことを意味する。
【０３５６】
一方、ステップＳ４−９４１７−３７において、探索経路の終点側の島が一つのセルしか含まない場合、目的とする防護壁ツリー線分のリストは取得されない（Ｓ４−９４１７−３６でＮｏ）。この場合、防護壁生成部１２１２は、セルデータｔａｒｇｅｔＣｅｌｌの防護壁ツリーＩＤ（ｔｒｅｅＩＤ）に、セルデータｓｏｕｒｃｅＣｅｌｌの防護壁ツリーＩＤ（ｔｒｅｅＩＤ）を代入する（Ｓ４−９４１７−４０）。
【０３５７】
ステップＳ４−９４１７−３９及びＳ４−９４１７−４０より、同じ島を形成するセル群の防護壁ツリーＩＤ（ｔｒｅｅＩＤ）の値は、当該セル群に属するいずれか一つのセルのセルＩＤとされることがわかる。当該セルは、当該島が形成されたときのセルデータｓｏｕｒｃｅＣｅｌｌに係るセルである。
【０３５８】
続いて、防護壁ツリーを形成するために連結すべき区間のうちの一つが連結されたため、防護壁ツリー生成部は、変数ｗｉｒｅＮより１を減算する（Ｓ４−９４１７−４１）。続いて、防護壁生成部１２１２は、変数ｗｉｒｅＮの値が０より大きいか否かを判定する（Ｓ４−９４１７−４２）。すなわち、着目バスｂＰに対応する防護壁に関して、連結されていないリーフセルの有無が判定される。ｗｉｒｅＮの値が０より大きい場合、すなわち、連結されていないリーフセルが有る場合（Ｓ４−９４１７−４２でＹｅｓ）、ステップＳ４−９４１７−２１以降が繰り返される。連結されていないリーフセルが有る場合とは、要するに、分断されている島が存在する場合である。
【０３５９】
一方、ｗｉｒｅＮの値が０以下である場合、すなわち、図５４の防護壁ｗ０のように、リーフセルが一つの島に統合された場合（Ｓ４−９４１７−４２でＮｏ）、防護壁生成部１２１２は、当該島（すなわち完成された防護壁ツリー）の経路を示す防護壁ツリー線分データのリストによって示される線が通過しているセルのセルデータの防護壁ツリー線分通過数（ｐａｔｔｅｒｎＮｕｍ）に１を加算する（Ｓ４−９４１７−４３）。なお、防護壁ツリー線分通過数（ｐａｔｔｅｒｎＮｕｍ）の加算対象となるセルには、当該線の端点に位置するセルも含まれる。当該線は、具体的には、セルデータ配列ｃｅｌｌ［セルデータｓｏｕｒｃｅＣｅｌｌの防護壁ツリーＩＤ（ｔｒｅｅＩＤ）］の防護壁ツリー線分リスト（ｓｅｇＬｉｓｔ）によって示される線である。
【０３６０】
続いて、防護壁生成部１２１２は、バス集合ＢＧのインデックスである変数ｉに１を加算する。これにより、ステップＳ４−９４１７−３において着目バスｂＰが更新される。また、一つの防護壁ツリーに関して経路変更（新規作成も含む）が発生したため、ＭｏｄｉｆｉｅｄＴｒｅｅＮに１が加算される（Ｓ４−９４１７−４４）。
【０３６１】
続いて、防護壁生成部１２１２は、変数ｉの値が変数ｂＭａｘ未満であるか否かを判定する（Ｓ４−９４１７−４５）。変数ｉの値が変数ｂＭａｘより小さい場合、すなわち、バス集合ＢＧに含まれる全てのバス（着目層Ｌ及び着目部品に係るバス）の中で、防護壁ツリーが生成されていないバスが存在する場合（Ｓ４−９４１７−４５でＹｅｓ）、ステップＳ４−９４１７−３以降が繰り返される。
【０３６２】
一方、変数ｉの値が変数ｂＭａｘ以上である場合（Ｓ４−９４１７−４５でＮｏ）、防護壁生成部１２１２は、変数ｉｔｅｒａｔｉｏｎ及びＣＯＥＦＦのそれぞれに１を加算する（Ｓ４−９４１７−４６）。ＣＯＥＦＦの値を変化させるのは、他の防護壁ツリーとの間に干渉が検出された防護壁ツリーに関して改めて経路探索（Ｓ４−９４１７−２５）が行われる場合に、当該防護壁ツリーの探索経路が前回と同じになってしまう可能性を低減させるためである。なお、ＣＯＥＦＦへの加算値は１でなくてもよい。加算値は、既に他のバスの防護壁ツリーの一部とされているセルに対するペナルティをどの程度強化したいかに依存する。ＣＯＥＦＦの値を大きくすればする程、干渉の再発が防止される可能性は低くなる。但し、経路が探索されなくなる可能性も大きくなる。したがって、両者のバランスを考慮してＣＯＥＦＦの値を変える必要がある。
【０３６３】
続いて、防護壁生成部１２１２は、変数Ｉｔａｒａｔｉｏｎの値が、予め定められている最大値ＭａｘＩｔｅｒａｔｉｏｎ未満であるか否かを判定する（Ｓ４−９４１７−４７）。変数Ｉｔｅｒａｓｉｏｎの値が、最大値ＭａｘＩｔｅｒａｔｉｏｎ未満である場合（Ｓ４−９４１７−４７でＹｅｓ）、ステップＳ４−９４１７−２以降が繰り返される。
【０３６４】
一方、変数Ｉｔｅｒａｓｉｏｎの値が、最大値ＭａｘＩｔｅｒａｔｉｏｎに達している場合（Ｓ４−９４１７−４７でＮｏ）、防護壁生成部１２１２は、バス集合ＢＧに含まれている各バスについて、バス情報Ｂの優先度ｐｒｉｏの低い順に、当該バスの防護壁ツリーと他のバスの防護壁ツリーとの干渉の有無を検査し、干渉している部分の防護壁ツリー線分を削除する（Ｓ４−９４１７−４８）。
【０３６５】
ステップＳ４−９４１７−２以降又はＳ４−９４１７−３以降が繰り返される場合について説明する。変数Ｉｔａｒａｔｉｏｎの値が１以上であると（Ｓ４−９４１７−４でＹｅｓ）、ステップＳ４−９４１７−５が実行される。ステップＳ４−９４１７−５において、防護壁生成部１２１２は、セル集合ｃｅｌｌＧに含まれる各セルについて、着目バスｂＰ以外のバスに対応する防護壁ツリーの防護壁ツリー線分との干渉の有無を検査する（Ｓ４−９４１７−５）。当該ステップの詳細については後述するが、干渉が検出されるとＣｒｏｓｓｏｖｅｒＦにＴＲＵＥが代入される。
【０３６６】
続いて、防護壁生成部１２１２は、ＣｒｏｓｓｏｖｅｒＦの値がＦＡＬＳＥであるか否か、すなわち、干渉は検出されなかったか否かを判定する（Ｓ４−９４１７−６）。干渉が検出された場合（Ｓ４−９４１７−６でＮｏ）、ステップＳ４−９４１７−２１以降が実行される。すなわち、着目バスｂＰについて、防護壁ツリーの再生成が実行される。
【０３６７】
干渉が検出されなかった場合（Ｓ４−９４１７−６でＹｅｓ）、防護壁生成部１２１２は、ステップＳ４−９４１７−５の実行によって、ｃｅｌｌＧに含まれる各セルについて減算された防護ツリー線分通過数（ｐａｔｔｅｒｎＮｕｍ）の値を復元する（Ｓ４−９４１７−７）。すなわち、当該値に１が加算される。また、変数ｉに１が加算される。
【０３６８】
続いて、防護壁生成部１２１２は、変数ｉの値が変数ｂＭａｘ未満であるか否かを判定する（Ｓ４−９４１７−４５）。変数ｉの値が変数ｂＭａｘより小さい場合、すなわち、バス集合ＢＧに含まれる全てのバス（着目層Ｌ及び着目部品に係るバス）の中で、干渉のチェックが行われていないバスが存在する場合（Ｓ４−９４１７−８でＹｅｓ）、ステップＳ４−９４１７−３以降が繰り返される。
【０３６９】
一方、変数ｉの値が変数ｂＭａｘ以上である場合（Ｓ４−９４１７−８でＮｏ）、防護壁生成部１２１２は、変数ｉｔｅｒａｔｉｏｎ及びＣＯＥＦＦのそれぞれに１を加算する（Ｓ４−９４１７−９）。当該ステップの意義は、ステップＳ４−９４１７−４６と同様である。したがって、ＣＯＥＦＦへの加算値は１でなくてもよい。
【０３７０】
続いて、防護壁生成部１２１２は、ＭｏｄｉｆｉｅｄＴｒｅｅＮの値が０であるか否かを判定する（Ｓ４−９４１７−１０）。すなわち、変数Ｉｔａｒａｔｉｏｎの値が変更されない間において、バス集合ＢＧに含まれるバスの中で防護壁ツリーに経路変更が生じたバスは無かったか否かが判定される。当該判定は、他の防護壁ツリーと干渉の有った防護壁ツリーは無かったか否かの判定と同義である。
【０３７１】
ＭｏｄｉｆｉｅｄＴｒｅｅＮの値が０である場合（Ｓ４−９４１７−１０でＹｅｓ）、防護壁の生成処理は終了する。ＭｏｄｉｆｉｅｄＴｒｅｅＮの値が０でない場合（４−１０でＮｏ）、防護壁生成部１２１２は、変数Ｉｔａｒａｔｉｏｎの値が、予め定められている最大値ＭａｘＩｔｅｒａｔｉｏｎ未満であるか否かを判定する（Ｓ４−９４１７−１１）。変数Ｉｔｅｒａｓｉｏｎの値が、最大値ＭａｘＩｔｅｒａｔｉｏｎ未満である場合（Ｓ４−９４１７−１１Ｙｅｓ）、ステップＳ４−９４１７−２以降が繰り返される。
【０３７２】
一方、変数Ｉｔｅｒａｓｉｏｎの値が、最大値ＭａｘＩｔｅｒａｔｉｏｎに達している場合（Ｓ４−９４１７−１１でＮｏ）、ステップＳ４−９４１７−４８が実行された後、防護壁の生成処理は終了する。
【０３７３】
続いて、図６８のステップＳ４−９４１７−５の詳細について説明する。図７１は、他の防護壁ツリーとの干渉の有無の検査処理を説明するためのフローチャートである。
【０３７４】
ステップＳ４−９４１７−５ａにおいて、防護壁生成部１２１２は、セル集合ｃｅｌｌＧの要素数（すなわち、着目バスｂＰのリーフセルの総数）を変数ＣＭａｘに代入する。また、変数ｅｌｍに０が代入される。
【０３７５】
続いて、防護壁生成部１２１２は、セル集合ｃｅｌｌＧのｅｌｍ番目の要素（セルデータ）の防護壁ツリー線分数（ｓｅｇＮｕｍ）の数が０より大きいか否かを判定する（Ｓ４−９４１７−５ｂ）。すなわち、着目バスｂＰに対する防護壁ツリーの防護壁ツリー線分データのリストを有しているセルであるか否かが判定される。
【０３７６】
当該セルデータの防護壁ツリー線分数（ｓｅｇＮｕｍ）の数が０より大きい場合（Ｓ４−９４１７−５ｂでＹｅｓ）、防護壁生成部１２１２は、当該セルデータの防護壁ツリー線分リスト（ｓｅｇＬｉｓｔ）によって示される線が通過する各セルのセルデータの防護壁ツリー線分通過数（ｐａｔｔａｒｎＮｕｍ）の値を１減算する（Ｓ４−９４１７−５ｃ）。具体的には、当該防護壁ツリー線分リスト（ｓｅｇＬｉｓｔ）に含まれている防護壁ツリー線分データごとに、当該防護壁ツリー線分データの始点から終点の間に位置するセルのセルデータの防護壁ツリー線分通過数（ｐａｔｔａｒｎＮｕｍ）について１が減算される。但し、同一のセルについて重複して減算は行われない。なお、当該減算によって、一つの防護壁ツリーにしか属していないセルのセルデータの防護壁ツリー線分通過数（ｐａｔｔａｒｎＮｕｍ）の値は０となるはずである。
【０３７７】
続いて、防護壁生成部１２１２は、変数ｅｌｍに１を加算する（Ｓ４−９４１７−５ｄ）。変数ｅｌｍの値が変数ＣＭａｘより小さい場合（Ｓ４−９４１７−５ｅでＹｅｓ）、ステップＳ４−９４１７−５ｂ以降が繰り返される。変数ｅｌｍの値が変数ＣＭａｘ以上である場合（Ｓ４−９４１７−５ｅでＮｏ）、防護壁生成部１２１２は、変数ｅｌｍに０を代入する（Ｓ４−９４１７−５ｆ）。
【０３７８】
続く、ステップＳ４−９４１７−５ｇからＳ４−９４１７−５ｋにおいて、ステップＳ４−９４１７−５ｂからＳ４−９４１７−５ｅと同様のループ処理が実行される。但し、ステップＳ４−９４１７−５ｈにおいて、防護壁生成部１２１２は、ステップＳ４−９４１７−５ｇの条件に合致するセルデータの防護壁ツリー線分リスト（ｓｅｇＬｉｓｔ）によって示される線が通過する、いずれかのセルのセルデータの防護壁ツリー線分通過数（ｐａｔｔａｒｎＮｕｍ）が０より大きい場合、ＣｒｏｓｓｏｖｅｒＦの値をＴＲＵＥに更新する。当該セルに関して、他の防護壁ツリーとの干渉が検出されたからである。ＣｒｏｓｓｏｖｅｒＦの値がＴＲＵＥとされた場合（Ｓ４−９４１７−５ｉ）、又はループが終了した場合（Ｓ４−９４１７−５ｋでＮｏ）、図７１の処理は終了する。
【０３７９】
以上で防護壁の生成処理の説明は終了する。続いて、図１９のステップＳ４−１０の詳細について説明する。
【０３８０】
図７２は、着目部品及び着目層に係るバスの所属ネットの引き出し経路の生成処理の処理手順を説明するためのフローチャートである。同図の処理は、バス集合ＢＧに含まれるバスごとに実行される。
【０３８１】
ステップＳ４−１０−１において、引き出し配線部１２２は、バス集合ＢＧの中で処理対象のバス（着目バス）を示す変数ｂを０に初期化する。続いて、引き出し配線部１２２は、着目バスのバスＩＤを変数ＦＬＡＶＯＲに代入する（Ｓ４−１０−２）。
【０３８２】
続いて、引き出し配線部１２２は、着目部品及び着目層Ｌに係るセル行列データｃｅｌｌに含まれる全てのセルについて以下の処理を行う（Ｓ４−１０−３）。すなわち、引き出し配線部１２２は、セル属性（ａｔｔｒ）の値が「Ｄ」（通常ピン）又は「Ｓ」（引き出し対象ピン）であるセルデータのうち、防護壁色（ｆｌａｖｏｒ）の値がＦＬＡＶＯＲと同じセルデータのセル属性（ａｔｔｒ）の値を「Ｓ」とし、防護壁色（ｆｌａｖｏｒ）の値がＦＬＡＶＯＲと異なるセルデータのセル属性（ａｔｔｒ）の値「Ｄ」とする。すなわち、着目バスに関する引き出し対象ピンに対応するセルデータのみのセル属性（ａｔｔｒ）が「Ｓ」とされる。また、引き出し配線部１２２は、全てのセルデータの容量（ｃａｐ）の値を、セル属性（ａｔｔｒ）の値に応じた値とする。すなわち、図３４の処理が実行される。更に、引き出し配線部１２２は、セル行列の外周に位置する全てのセルのセルデータの出口フラグ（ｅｘｉｔＦ）を一旦ＦＡＬＳＥとする。
【０３８３】
続いて、引き出し配線部１２２は、配線脱出口情報記憶部Ｄ１０（図６３）に登録されている各レコードに基づいて、セルデータへの防護壁の反映を行う（Ｓ４−１０−３）。まず、引き出し配線部１２２は、対応バス（ｆｌａｖｏｒ）の値がＦＬＡＶＯＲと異なるレコードの防護壁ツリーＩＤをセル行列データｃｅｌｌにおけるインデックスとするセルデータの防護壁ツリー線分リスト（ｓｅｇＬｉｓｔ）に係る線分が通過するセルのセルデータの容量（ｃａｐ）を０とする。すなわち、着目バス以外のバスに対する防護壁に係るセルの容量が０とされる。容量が０とされるということは、これから行われる着目バスに関する配線が通過できないセルとされたことに相当する。また、引き出し配線部１２２は、対応バス（ｆｌａｖｏｒ）の値がＦＬＡＶＯＲと一致するレコードの左端セル（ＬｅｆｔＰ）から右端セル（ＲｉｇｈｔＰ）の区間のセルのセルデータの出口フラグ（ｅｘｉｔＦ）をＴＲＵＥとする。すなわち、着目バスに対応する防護壁の配線脱出口部分に係るセルが、これから行われる配線の出口セルとされる。
【０３８４】
続いて、引き出し配線部１２２は、既に着目部品の着目層Ｌにおいて既に引き出しが行われた配線の経路に係るセルのセルデータの容量（ｃａｐ）の値を０とする（Ｓ４−１０−５）。これから行われる引き出し経路が、他の引き出し経路と干渉しないようにするためである。なお、既に引き出しが行われたネットの経路に関する情報は、後述される引き出し経路データｅＰａｔｈ（図９３参照）として生成される。ステップＳ４−１０−５が初めて実行される際は、まだ、引き出し経路情報ｅＰａｔｈは生成されていないため、当該ステップでは何も行われない。
【０３８５】
続いて、引き出し配線部１２２は、引き出し経路の探索に用いる有向グラフの状態を初期化する（Ｓ４−１０−６）。具体的には、引き出し配線部１２２は、ノードデータ配列ｖに格納されている各ノードデータ（図２６）のラベル伝播元ノードＩＤ（ｐＩＤ）にＮＵＬＬＩＤを記録し、最短経路長（ｄｉｓｔ）に０を記録し、ラベルフロントフラグ（ｌＦｒｏｎｔＦ）にｆａｌｓｅを記録する。湧き出しノードＳ又は流入ノードＴに対応するノードデータについては、図３７と同様の処理が実行される。また、引き出し配線部１２２は、各枝データのフロー（ｆｌｏｗ）を０に初期化し、容量（ｃａｐ）を再計算する。容量の計算方法は、枝データの生成時（図４６〜図５２）において説明した通りである。すなわち、有向枝によって接続させるセルのセルデータの容量（ｃａｐ）の小さい方の値が当該有向枝の枝データの容量（ｃａｐ）となる。なお、ステップＳ４−１０−６において、ノードデータ及び枝データを初期化するのは、図７２のループ内において同一有向グラフ（ノードデータ及び枝データ）が繰り返し利用されるからである。したがって、前回の経路探索時に各データに記録された値を消去する必要があるからである。
【０３８６】
続いて、引き出し配線部１２２は、湧き出しノードＳから全ての引き出し対象ピンに対応するセル（引き出し対象セル）の入り口ノードへの有向枝を生成する（Ｓ４−１０−７）。続いて、引き出し配線部１２２は、出口フラグ（ｅｘｉｔＦ）がｔｒｕｅの全てのセル（すなわち、出口セル）の出口ノードから流入ノードＴへの有向枝を生成する（Ｓ４−１０−８）。
【０３８７】
続いて、引き出し配線部１２２の経路探索部１２２１は、有向グラフにおいて、全ての引き出し対象の配線ごとに最短経路を探索する（Ｓ４−１０−９）。
【０３８８】
図７３は、経路探索部によって探索される経路の例を示す図である。すなわち、同図はステップＳ４−１０−９の処理結果を示す。
【０３８９】
同図において、太い実線が、経路探索部１２２１によって探索された経路を示す。本実施の形態では、６本の配線が要求されている場合が例とされている。したがって、同図に示される経路は、６配線分の経路を示す。各経路は、湧き出しノードＳから引き出し対象ピンの入り口ノードを経由し、更に、出口セルの出口ノードを経由して流入ノードＴまで至る。なお、ステップＳ４−１０−９の終了時点では、各経路に属する各有向枝がいずれの配線の持ち物になるかは決定されていない。
【０３９０】
続いて、引き出し配線部１２２の概略経路確定部１２２２は、経路探索部１２２１によって探索された各経路を各配線に分配し、概略配線の引き出し経路（概略経路）を確定する（Ｓ４−１０−１０）。
【０３９１】
図７４は、概略経路確定部によって確定された概略経路の例を示す図である。すなわち、同図はステップＳ４−１０−１０の処理結果を示す。同図において、符号ｅｎ（ｎは整数）が付されている有向枝は、確定された概略経路が通過する有向枝である。同図では、便宜上、３本の概略経路が確定した状態を示す。
【０３９２】
続いて、引き出し配線部１２２の引き出し成否判定部１２２３は、着目バスの全ての所属ネットについて引き出しに成功したか否かを判定する（Ｓ４−１０−１１）。当該ステップでは、引き出せに成功したネットの配線について、引き出し経路情報が保存される。また、引き出しに成功した場合、変数ｒｅｑｕｅｓｔＮに０が代入される。引き出しに失敗している場合、変数ｒｅｑｕｅｓｔＮに引き出せなかったネットの数が代入される。
【０３９３】
続いて、引き出し配線部１２２は、引き出しの成否（変数ｒｅｑｕｅｓｔＮの値）に基づいて処理を分岐させる（Ｓ４−１０−１２）。引き出しに成功した場合（Ｓ４−１０−１２でＹｅｓ）、引き出し配線部１２２は、変数ｂの値をインクリメントし、バスグループＢＧにおいて次のバスを着目バスとする（Ｓ４−１０−１３）。全てのバスについて処理が終了していない場合（ＳＳ４−１０−１４でＹｅｓ）、引き出し配線部１２２は、全てのセルデータの当初容量（ｃａｐ２）の値を、容量（ｃａｐ）に代入する（Ｓ４−１０−１５）。すなわち、ステップＳ４−１０−４又はＳ４−１０−５において一時的に変更された容量（ｃａｐ）の値が当初の値に復元される。続いて、新たな着目バスについてステップＳ４−１０−２以降が実行される。
【０３９４】
一方、引き出しに失敗した場合（Ｓ４−１０−１２）、引き出し配線部１２２は、引き出せなかった本数（ｒｅｑｕｅｓｔＮ）分だけ、着目バスに対応する、配線脱出口データＧａｔｅ（図６３）の左端セル（ＬｅｆｔＰ）から右端セル（ＲｉｇｈｔＰ）の区間を広げる（Ｓ４−１０−１６）。すなわち、出口セルが追加される。
【０３９５】
出口セルの追加に成功した場合（Ｓ４−１０−１７でＹｅｓ）、引き出し配線部１２２は、新たな出口セルのセルデータの出口フラグ（ｅｘｉｔＦ）にＴＲＵＥを代入し（Ｓ４−１０−１８）、ステップＳ４−１０−６以降を繰り返す。すなわち、着目バスの所属ネットについて引き出しが再実行される。
【０３９６】
一方、出口セルの追加に失敗した場合（Ｓ４−１０−１７でＮｏ）、引き出し配線部１２２は、バスグループＢＧにおいて次のバスを着目バスとし（Ｓ４−１０−１３）、ステップＳ４−１０−１４以降を実行する。
【０３９７】
続いて、ステップＳ４−１０−７の詳細について説明する
図７５は、湧き出しノードから引き出し対象セルへの有向枝の生成処理の処理手順を説明するためのフローチャートである。
【０３９８】
ステップＳ４−１０−７Ａにおいて、引き出し配線部１２２は、変数ｃｏｌＭａｘに列方向のセルの数を代入し、変数ｒｏｗＭａｘに行方向のセルの数を代入し、変数ｃｅｌｌＭａｘにセルの総数（ｃｏｌＭａｘ×ｒｏｗＭａｘ）を代入する。また、引き出し配線部１２２は、変数ｉに初期値０を代入する。変数ｉは、セルデータ配列ｃｅｌｌにおいて処理対象とする要素（セルデータ）の添え字として利用される。
【０３９９】
続いて、引き出し配線部１２２は、処理対象のセルデータ（セルデータ配列ｃｅｌｌ［ｉ］）のセル属性（ａｔｔｒ）の値が「Ｓ（引き出し対象ピン）」であるか否かを判定する（Ｓ４−１０−７Ｂ）。処理対象のセルデータのセル属性の値がＳの場合（Ｓ４−１０−７ＢでＹｅｓ）、引き出し配線部１２２は、処理対象のセルデータのセルの入り口ノードのノードデータ（ノードデータ配列ｖ［ｃｅｌｌ［ｉ］．ｉＮ］）の探索ソースフラグ（ｓＦｌａｇ）にｔｒｕｅを記録する（Ｓ４−１０−７Ｃ）。
【０４００】
続いて、引き出し配線部１２２は、湧き出しノードＳから処理対象のセルへの有向枝に対応させる枝データｅをメモリ装置１０３に一つ生成し、枝データｅのメンバ変数に値を記録する（Ｓ４−１０−７Ｄ）。具体的には、枝データｅの始点ノードＩＤ（ｓＮ）に湧き出しノードＳのノードＩＤ（０）が記録される。また、枝データｅの終点ノードＩＤ（ｅＮ）に処理対象のセルのセルデータ（セルデータ配列ｃｅｌｌ［ｉ］）の入り口ノードＩＤ（ｉＮ）が記録される。これによって、枝データｅは、処理対象の湧き出しノードＳから処理対象のセルの入り口ノードへの有向枝に対応する枝データとなる。また、枝データｅの容量（ｃａｐ）に１が記録される。すなわち、湧き出しノードＳから引き出し対象セルの入り口ノードへの有向枝の容量は１とされる。また、枝データｅの枝の長さ（ｅＬｅｎ）に１が記録される。また、枝データｅのフロー（ｆｌｏｗ）に初期値０が記録される。また、枝データｅの残余（ｒｅｓ）に枝データｅの容量（ｃａｐ）の値が記録される。
【０４０１】
また、引き出し配線部１２２は、枝データｅに係る有向枝の始点ノード（すなわち、湧き出しノードＳ）のノードデータ（ノードデータ配列ｖ［０］）の湧き出しノードＳからの有向枝のリスト（ｓｏｕｒｃｅＥｄｇｅＬｉｓｔ）に、枝データｅを追加する。
【０４０２】
ステップＳ４−１０−７Ｄ、又はステップＳ４−１０−７ＢでＮｏの場合に続いて、引き出し配線部１２２は、変数ｉをインクリメントする（Ｓ４−１０−７Ｅ）。すなわち、セルデータ配列ｃｅｌｌにおいて次のセルデータが処理対象とされる。続いて、引き出し配線部１２２は、変数ｉの値がｃｅｌｌＭａｘ（セルの総数）未満であるか否かを判定することにより、未処理のセルデータが有るか否かを判定する（Ｓ４−１０−７Ｆ）。未処理のセルデータが有る場合（Ｓ４−１０−７ＦでＹｅｓ）、引き出し配線部１２２は、ステップＳ４−１０−７Ｂ以降を繰り返す。未処理のセルデータが無い場合（Ｓ４−１０−７ＦでＮｏ）、引き出し配線部１２２は、図７５の処理を終了させる。
【０４０３】
続いて、図７２のステップＳ４−１０−８の詳細について説明する。図７６は、出口セルから流入ノードへの有向枝の生成処理の処理手順を説明するためのフローチャートである。
【０４０４】
ステップＳ４−１０−８Ａにおいて、引き出し配線部１２２は、変数ｃｏｌＭａｘに列方向のセルの数を代入し、変数ｒｏｗＭａｘに行方向のセルの数を代入し、変数ｃｅｌｌＭａｘにセルの総数（ｃｏｌＭａｘ×ｒｏｗＭａｘ）を代入する。また、引き出し配線部１２２は、変数ｉに初期値０を代入する。変数ｉは、セルデータ配列ｃｅｌｌにおいて処理対象とする要素（セルデータ）の添え字として利用される。
【０４０５】
続いて、引き出し配線部１２２は、処理対象のセルデータ（セルデータ配列ｃｅｌｌ［ｉ］）の出口フラグ（ｅｘｉｔＦ）の値がｔｒｕｅであり、かつ、処理対象のセルデータの容量（ｃａｐ）が０より大きいか否かを判定する（Ｓ４−１０−８Ｂ）。この判定は、処理対象のセルデータが出口セルに対応するセルデータであるか否かの判定に相当する。すなわち、出口フラグの値がｔｒｕｅであるセルデータは、セル行列において外周に位置するセルのセルデータである（図２７のステップＳ４−９２１−４参照）。また、外周に位置するセルのセルデータのうち、容量が０より大きいのは出口セルのセルデータだけである（図３０のステップＳ４−９２２−６参照）。
【０４０６】
ステップＳ４−１０−８ＢでＹｅｓの場合、すなわち、処理対象のセルデータが出口セルのセルデータである場合、引き出し配線部１２２は、処理対象のセルデータのセルの出口ノードのノードデータ（ノードデータ配列ｖ［ｃｅｌｌ［ｉ］．ｏＮ］）の探索ターゲットフラグ（ｔＦｌａｇ）にｔｒｕｅを記録する（Ｓ４−１０−８Ｃ）。
【０４０７】
続いて、引き出し配線部１２２は、処理対象のセルから流入ノードＴへの有向枝に対応させる枝データｅをメモリ装置１０３に一つ生成し、枝データｅのメンバ変数に値を記録する（Ｓ４−１０−８Ｄ）。具体的には、枝データｅの始点ノードＩＤ（ｓＮ）に処理対象のセルデータ（セルデータ配列ｃｅｌｌ［ｉ］）の出口ノードＩＤ（ｏＮ）が記録される。また、枝データｅの終点ノードＩＤ（ｅＮ）に流入ノードＴのノードＩＤ（ｖｅｒｔｅｘＮｕｍ−１）が記録される。これによって、枝データｅは、処理対象のセルの出口ノードから流入ノードＴへの有向枝に対応する枝データとなる。また、枝データｅの容量（ｃａｐ）に処理対象のセルデータの容量（ｃａｐ）が記録される。すなわち、出口セルの出口ノードから流入ノードＴへの有向枝の容量は出口セルの容量とされる。また、枝データｅの枝の長さ（ｅＬｅｎ）に１が記録される。また、枝データｅのフロー（ｆｌｏｗ）に初期値０が記録される。また、枝データｅの残余（ｒｅｓ）に枝データｅの容量（ｃａｐ）の値が記録される。
【０４０８】
また、引き出し配線部１２２は、枝データｅに係る有向枝の終点ノード（すなわち、流入ノードＴ）のノードデータ（ノードデータ配列ｖ［ｖｅｒｔｅｘＮｕｍ−１］）の流入ノードへの有向枝のリスト（ｔａｒｇｅｔＥｄｇｅＬｉｓｔ）に、枝データｅを追加する。
【０４０９】
ステップＳ４−１０−８Ｄ、又はステップＳ４−１０−８ＢでＮｏの場合に続いて、引き出し配線部１２２は、変数ｉをインクリメントする（Ｓ４−１０−８Ｅ）。すなわち、セルデータ配列ｃｅｌｌにおいて次のセルデータが処理対象とされる。続いて、引き出し配線部１２２は、変数ｉの値がｃｅｌｌＭａｘ（セルの総数）未満であるか否かを判定することにより、未処理のセルデータが有るか否かを判定する（Ｓ４−１０−８Ｆ）。未処理のセルデータが有る場合（Ｓ４−１０−８ＦでＹｅｓ）、引き出し配線部１２２は、ステップＳ４−１０−８Ｂ以降を繰り返す。未処理のセルデータが無い場合（Ｓ４−１０−８ＦでＮｏ）、引き出し配線部１２２は、図７６の処理を終了させる。
【０４１０】
続いて、図７２のステップＳ４−１０−９の詳細について説明する。図７７は、有向グラフにおける最短経路の探索処理の処理手順を説明するためのフローチャートである。なお、本実施の形態では、最短経路を求めるアルゴリズムとしてダイクストラ法（Dijkstra's Algorithm）を採用する。但し、公知の他のアルゴリズムを採用してもよい。
【０４１１】
ステップＳ４−１０９−１において、最短経路探索部１２２１ａは、湧き出しノードＳのノードデータの湧き出しノードＳからの有向枝のリスト（ｓｏｕｒｃｅＥｄｇｅＬｉｓｔ）からフロー（ｆｌｏｗ）の値が０の枝データを一つ取得し、変数ｃＥｄｇｅに代入する。湧き出しノードＳのｓｏｕｒｃｅＥｄｇｅＬｉｓｔには、図７５の処理によって湧き出しノードＳから全ての引き出し対象セルの入り口ノードへの有向枝に対する枝データが記録されている。当該有向枝は、図２１の例では６本示されている。ステップＳ４−１０９−１では、６本のうちフロー（ｆｌｏｗ）の値が０の有向枝の枝データが一つ取得される。なお、最初は、全ての枝データのフロー（ｆｌｏｗ）の値は０であり、後段の処理によってフローの値は変化する。また、変数ｃＥｄｇｅは、処理対象とする枝データを格納する枝データ型の変数である。ｃＥｄｇｅに代入された枝データを以下、「枝データｃＥｄｇｅ」という。
【０４１２】
枝データｃＥｄｇｅを取得できた場合、すなわち、湧き出しノードＳのノードデータのｓｏｕｒｃｅＥｄｇｅＬｉｓｔに該当する枝データが存在した場合（Ｓ４−１０９−２）、最短経路探索部１２２１ａは、全てのノードデータ（ノードデータ配列ｖの全ての要素）の中で、探索ソースフラグ（ｓＦｌａｇ）又は探索ターゲットフラグ（ｔＦｌａｇ）がｔｒｕｅでないノードデータのラベル伝播元ノードＩＤ（ｐＩＤ）、最短経路長（ｄｉｓｔ）、及びラベルフロントフラグ（ｌＦｒｏｎｔＦ）の値を初期化する（Ｓ４−１０９−３）。具体的には、ｐＩＤにＮＵＬＬＩＤを、ｄｉｓｔにｄｉｓｔＭａｘを、ｌＦｒｏｎｔＦにｆａｌｓｅを代入する。なお、探索ソースフラグ（ｓＦｌａｇ）がｔｒｕｅのノードデータとは、湧き出しノードＳ又は引き出し対象セルの入り口ノードのノードデータである。また、探索ターゲットフラグ（ｔＦｌａｇ）がｔｒｕｅのノードデータとは、流入ノードＴ又は出口セルの出口ノードのノードデータである。したがって、湧き出しノードＳ、引き出し対象セルの入り口ノード、流入ノードＴ、及び出口セルの出口ノードを除く全てのノードのノードデータに関してステップＳ４−１０９−３の処理が実行される。
【０４１３】
続いて、最短経路探索部１２２１ａは、変数ｐａｔｈＦの値をｆａｌｓｅに初期化する（Ｓ４−１０９−４）。
【０４１４】
続いて、最短経路探索部１２２１ａは、枝データｃＥｄｇｅの始点ノードＩＤ（ｓＮ）をｃｕｒｒｅｎｔＶに代入し、枝データｃＥｄｇｅの終点ノードＩＤ（ｅＮ）をｎｅｘｔＶに代入する（Ｓ４−１０９−５）。枝データｃＥｄｇｅは、湧き出しノードＳから引き出し対象セルの入り口ノードへの有向枝の枝データである。したがって、ｃｕｒｒｅｎｔＶは、湧き出しノードＳのノードＩＤを示す。また、ｎｅｘｔＶは、引き出し対象セルの入り口ノードのノードＩＤを示す。
【０４１５】
続いて、最短経路探索部１２２１ａは、引き出し対象セルの入り口ノードのノードデータ（ノードデータ配列ｖ［ｎｅｘｔＶ］）のメンバ変数の値を更新する（Ｓ４−１０９−６）。具体的には、ラベル伝播元ノードＩＤ（ｐＩＤ）にｃｕｒｒｅｎｔＶの値が代入される。また、最短経路長（ｄｉｓｔ）に枝データｃＥｄｇｅの枝の長さ（ｅＬｅｎ＝１）が代入される。また、ラベルフロントフラグ（ｌＦｒｏｎｔＦ）にｔｒｕｅが代入される。ｌＦｔｏｎｔＦがｔｒｕｅとされることにより、当該ノードデータが経路探索においてラベルフロント（最前線）に位置することが識別される。また、最短経路探索部１２２１ａは、当該ノードデータを変数ｌＦｒｏｎｔＬｉｓｔに追加する。変数ｌＦｒｏｎｔＬｉｓｔは、経路探索において最前線に位置するノードのノードデータの一覧を格納するための変数である。
【０４１６】
続いて、最短経路探索部１２２１ａは、変数ｌＦｒｏｎｔＬｉｓｔから最短経路長（ｄｉｓｔ）の値が最小のノードデータｃｖを取り出し、経路探索のラベリングを行う（Ｓ４−１０９−７）。なお、変数ｌＦｒｏｎｔＬｉｓｔから取り出されたノードデータは、変数ｌＦｒｏｎｔＬｉｓｔより除去される。続いて、最短経路探索部１２２１ａは、変数ｌＦｒｏｎｔＬｉｓｔにノードデータが残っているか否かを判定する（Ｓ４−１０９−８）。ノードデータが残っている場合（Ｓ４−１０９−８でＹｅｓ）、最短経路探索部１２２１ａは、変数ｌＦｒｏｎｔＬｉｓｔからノードデータが無くなるまでステップＳ４−１０９−７を繰り返し実行する。
【０４１７】
変数ｌＦｒｏｎｔＬｉｓｔにノードデータが残っていない場合（Ｓ４−１０９−８でＮｏ）、最短経路探索部１２２１ａは、変数ｐａｔｈＦの値はｔｒｕｅであるか否かを判定する（Ｓ４−１０９−９）。変数ｐａｔｈＦの値は、ステップＳ４−１０９−７における経路探索において、目的地点のノード、すなわち、出口セルの出口ノードまで到達した場合にｔｒｕｅとされる。
【０４１８】
変数ｐａｔｈＦの値がｔｒｕｅの場合（Ｓ４−１０９−９でＹｅｓ）、バックトレース部１２２２ｂは、経路探索の結果をバックトレースし、探索された経路において使用された有向枝のフロー（ｆｌｏｗ）と残余（ｒｅｓ）とを更新する（Ｓ４−１０９−１０）。ステップＳ４−１０９−１０、又はステップＳ４−１０９−９でＮｏの場合に続いて、ステップＳ４−１０９−１以降が繰り返し実行される。ステップＳ４−１０９−１においてフロー（ｆｌｏｗ）枝データｃＥｄｇｅが取得できなかったら（Ｓ４−１０９−２でＮｏ）、図７７の処理は終了する。
【０４１９】
続いて、図７７のステップＳ４−１０９−７の詳細について説明する。図７８は、経路探索のラベリング処理の処理手順を説明するためのフローチャートである。
【０４２０】
ステップＳ４−１０９７−１において、最短経路探索部１２２１ａは、変数ｉを０に初期化する。続いて、最短経路探索部１２２１ａは、枝データｃｒｒＥｄｇｅにノードデータｃｖ（経路探索において最前線に居るノードデータの１つ）に接続しているいずれかの枝データを代入する。枝データｃｒｒＥｄｇｅは、図７８において処理対象とされる枝データである。枝データｃｒｒＥｄｇｅに代入される枝データは、変数ｉの値によって変化する。すなわち、変数ｉの値が０のとき、ノードデータｃｖの相棒ノードとの有向枝（ｅＢｒｏｓ）が枝データｃｒｒＥｄｇｅに代入される。変数ｉの値が１のとき、ノードデータｃｖの東隣セルのノードとの有向枝（ｅＥ）が枝データｃｒｒＥｄｇｅに代入される。変数ｉの値が２のとき、ノードデータｃｖの西隣セルのノードとの有向枝（ｅＷ）が枝データｃｒｒＥｄｇｅに代入される。変数ｉの値が３のとき、ノードデータｃｖの南隣セルのノードとの有向枝（ｅＳ）が枝データｃｒｒＥｄｇｅに代入される。変数ｉの値が４のとき、ノードデータｃｖの北隣セルのノードとの有向枝（ｅＮ）が枝データｃｒｒＥｄｇｅに代入される。変数ｉの値が５のとき、ノードデータｃｖの北東セルのノードとの有向枝（ｅＮＥ）が枝データｃｒｒＥｄｇｅに代入される。変数ｉの値が６のとき、ノードデータｃｖの北西セルのノードとの有向枝（ｅＮＷ）が枝データｃｒｒＥｄｇｅに代入される。変数ｉの値が７のとき、ノードデータｃｖの南東セルのノードとの有向枝（ｅＳＥ）が枝データｃｒｒＥｄｇｅに代入される。変数ｉの値が７のとき、ノードデータｃｖの南西セルのノードとの有向枝（ｅＳＷ）が枝データｃｒｒＥｄｇｅに代入される。
【０４２１】
なお、変数ｉの値は、ステップＳ４−１０９７−２以降のループが実行されるたびにインクリメントされる。したがって、ステップＳ４−１０９７−２以降では、ループの回数に応じて処理対象とされる枝データｃｒｒＥｄｇｅが順番に変化する。
【０４２２】
続いて、最短経路探索部１２２１ａは、枝データｃｒｒＥｄｇｅの値が空であるか否かを判定する（Ｓ４−１０９７−３）。枝データｃｒｒＥｄｇｅが空でない場合（Ｓ４−１０９７−３でＮｏ）、最短経路探索部１２２１ａは、ノードデータｃＶの最短経路長（ｄｉｓｔ）に枝データｃｒｒＥｄｇｅの枝の長さ（ｅＬｅｎ）を加算した値を変数Ｄに代入する（Ｓ４−１０９７−４）。変数Ｄの値は、枝データｃｒｒＥｄｇｅにおいてノードデータｃｖの他方に位置するノードデータの経路長を示す。但し、当該経路長が最短経路長であることは確定されていない。
【０４２３】
続いて、最短経路探索部１２２１ａは、変数Ｄの値が流入ノードＴの最短経路長（ｄｉｓｔ）より小さいか否かを判定する（Ｓ４−１０９７−５）。なお、流入ノードＴまでの経路が探索されるまでは流入ノードＴの最短経路長（ｄｉｓｔ）の値はｄｉｓｔＭａｘ（最大値）である。
【０４２４】
続いて、最短経路探索部１２２１ａは、ノードデータｃｖに係るノードは枝データｃｒｒＥｄｇｅの始点ノードであり、かつ、枝データｃｒｒＥｄｇｅの残余（ｒｅｓ）の値が０より大きく、かつ、枝データｃｒｒＥｄｇｅに係る有向枝の終点ノードのノードデータの最短経路長（ｄｉｓｔ）は変数Ｄより大きいか否かを判定する（Ｓ４−１０９７−６）。
【０４２５】
この判定は、ノードデータｃｖに係るノードが枝データｃｒｒＥｄｇｅの始点ノードである場合において、枝データｃｒｒＥｄｇｅに係る有向枝が目的地点までの最短経路を構成する有向枝となりうるか否か（当該有向枝の先を探索する価値は有るか否か）の判定に相当する。すなわち、枝データｃｒｒＥｄｇｅの残余が０であれば、当該枝データｃｒｒＥｄｇｅを経路として使うことはできないからである。また、枝データｃｒｒＥｄｇｅの終点ノードの最短経路長（ｄｉｓｔ）の値が変数Ｄの値以下であれば、これから探索しようとする当該終点ノードまでの経路は最短経路ではないからである。なお、特定のノード以外のノードデータの最短経路長（ｄｉｓｔ）は、図７７のステップＳ４−１０９−３においてｄｉｓｔＭａｘに初期化されている。したがって、少なくとも最初の探索時において、ノードデータｃｖに係るノードが枝データｃｒｒＥｄｇｅの始点ノードである場合は、ステップＳ４−１０９７−６の判定はＹｅｓとなる。
【０４２６】
ステップＳ４−１０９７−６でＹｅｓの場合、最短経路探索部１２２１ａは、枝データｃｒｒＥｄｇｅの終点ノードのノードデータの最短経路長（ｄｉｓｔ）の値を変数Ｄの値によって更新する。また、最短経路探索部１２２１ａは、枝データｃｒｒＥｄｇｅの終点ノードのノードデータのラベル伝播元ノードＩＤ（ｐＩＤ）の値をノードデータｃＶのノードＩＤによって更新する（Ｓ４−１０９７−７）。
【０４２７】
続いて、最短経路探索部１２２１ａは、枝データｃｒｒＥｄｇｅの終点ノードのノードデータの探索ターゲットフラグ（ｔＦｌａｇ）がｔｒｕｅであるか否か、すなわち、当該終点ノードが出口セルの出口ノード（目的地点のノード）であるか否かを判定する（Ｓ４−１０９７−８）。枝データｃｒｒＥｄｇｅの終点ノードのノードデータの探索ターゲットフラグ（ｔＦｌａｇ）がｔｒｕｅの場合（Ｓ４−１０９７−８でＹｅｓ）、最短経路探索部１２２１ａは、目的地点まで到達したとして変数ｐａｔｈＦの値をｔｒｕｅとする（Ｓ４−１０９７−９）。また、最短経路探索部１２２１ａは、枝データｃｒｒＥｄｇｅの終点ノードのノードＩＤを流入ノードＴのノードデータの伝播元ノードＩＤに記録する（Ｓ４−１０９７−１０）。
【０４２８】
ステップＳ４−１０９７−１０、又はステップＳ４−１０９７−８でＮｏの場合に続いて、最短経路探索部１２２１ａは、枝データｃｒｒＥｄｇｅの終点ノードのノードデータのラベルフロントフラグ（ｌＦｒｏｎｔＦ）の値がｆａｌｓｅであり、かつ、当該ノードデータの探索ターゲットフラグ（ｔＦｌａｇ）がｆａｌｓｅであるか否かを判定する（Ｓ４−１０９７−１１）。すなわち、枝データｃｒｒＥｄｇｅの終点ノードは経路探索の最前線とされていない否か、及び当該終点ノードは出口セルの出口ノード（すなわち、目的地点のノード）でないか否かが判定される。
【０４２９】
ステップＳ４−１０９７−１１でＹｅｓの場合、最短経路探索部１２２１ａは、枝データｃｒｒＥｄｇｅの終点ノードのノードデータを変数ｌＦｒｏｎｔＬｉｓｔに追加し、当該ノードデータのラベルフロントフラグ（ｌＦｒｏｎｔＦ）をｔｒｕｅとする（Ｓ４−１０９７−１２）。これにより、当該終点ノードが経路探索の最前線のノードの一つとされる。
【０４３０】
一方、ステップＳ４−１０９７−６でＮｏの場合、最短経路探索部１２２１ａは、ノードデータｃｖに係るノードは枝データｃｒｒＥｄｇｅの終点ノードであり、かつ、枝データｃｒｒＥｄｇｅのフロー（ｆｌｏｗ）の値が０より大きく、かつ、枝データｃｒｒＥｄｇｅに係る有向枝の始点ノードのノードデータの最短経路長（ｄｉｓｔ）は変数Ｄより大きいか否かを判定する（Ｓ４−１０９７−１３）。
【０４３１】
この判定は、ノードデータｃＶに係るノードから枝データｃｒｒＥｄｇｅの終点ノードへの向きが枝データｃｒｒＥｄｇｅの有向枝の向きに逆行（逆流）する場合において、枝データｃｒｒＥｄｇｅに係る有向枝が目的地点までの最短経路を構成する有向枝となりうるか否か（当該有向枝の先を探索する価値は有るか否か）の判定に相当する。ここで、逆行は、枝データｃｒｒＥｄｇｅに係る有向枝が既に最短経路も利用されている場合、すなわち、枝データｃｒｒＥｄｇｅのフロー（ｆｌｏｗ）が０より大きい場合に限り許可される。逆行の意義及び既に最短経路に利用されている有向枝についてのみ逆行が許可される理由については後述する。
【０４３２】
ステップＳ４−１０９７−１３でＹｅｓの場合、最短経路探索部１２２１ａは、枝データｃｒｒＥｄｇｅの始点ノードのノードデータの最短経路長（ｄｉｓｔ）の値を変数Ｄの値によって更新する。また、最短経路探索部１２２１ａは、枝データｃｒｒＥｄｇｅの始点ノードのノードデータのラベル伝播元ノードＩＤ（ｐＩＤ）の値をノードデータｃＶのノードＩＤによって更新する（Ｓ４−１０９７−１４）。
【０４３３】
続いて、最短経路探索部１２２１ａは、枝データｃｒｒＥｄｇｅの始点ノードのノードデータのラベルフロントフラグ（ｌＦｒｏｎｔＦ）の値がｆａｌｓｅであり、かつ、当該ノードデータの探索ターゲットフラグ（ｔＦｌａｇ）がｆａｌｓｅであるか否かを判定する（Ｓ４−１０９７−１５）。すなわち、枝データｃｒｒＥｄｇｅの始点ノードは経路探索の最前線とされていない否か、及び当該始点ノードは出口セルの出口ノード（すなわち、目的地点のノード）でないか否かが判定される。
【０４３４】
ステップＳ４−１０９７−１５でＹｅｓの場合、最短経路探索部１２２１ａは、枝データｃｒｒＥｄｇｅの始点ノードのノードデータを変数ｌＦｒｏｎｔＬｉｓｔに追加し、当該ノードデータのラベルフロントフラグ（ｌＦｒｏｎｔＦ）をｔｒｕｅとする（Ｓ４−１０９７−１６）。これにより、当該始点ノードが経路探索の最前線のノードの一つとされる。
【０４３５】
ステップＳ４−１０９７−１５でＹｅｓの場合、最短経路探索部１２２１ａは、枝データｃｒｒＥｄｇｅの始点ノードのノードデータを変数ｌＦｒｏｎｔＬｉｓｔに追加し、当該ノードデータのラベルフロントフラグ（ｌＦｒｏｎｔＦ）をｔｒｕｅとする（Ｓ４−１０９７−１６）。これにより、当該始点ノードが経路探索の最前線のノードの一つとされる。
【０４３６】
ステップＳ４−１０９７−１６、ステップＳ４−１０９７−１５でＮｏの場合、ステップＳ４−１０９７−１３でＮｏの場合、ステップＳ４−１０９７−１２、ステップＳ４−１０９７−１１でＮｏの場合、又は、ステップＳ４−１０９７−５でＮｏの場合に続いて、最短経路探索部１２２１ａは、変数ｉをインクリメントする（Ｓ４−１０９７−１７）。続いて、最短経路探索部１２２１ａは、変数ｉの値が９に達したか否かを判定する（Ｓ４−１０９７−１８）。ここで、変数ｉを９と比較するのは、一つのノードに接続されうる最大の有向枝の数は９本だからである。より具体的には、ステップＳ４−１０９７−２を介して、枝データｃＶのメンバ変数として含まれる全ての枝データに関して処理が完了した場合、変数ｉの値は９となるからである。
【０４３７】
変数ｉの値が９でない場合（Ｓ４−１０９７−１８でＮｏ）、最短経路探索部１２２１ａは、ステップＳ４−１０９７−２以降を繰り返す。変数ｉの値が９である場合（Ｓ４−１０９７−１８でＹｅｓ）、最短経路探索部１２２１ａは、図７８の処理を終了させる。
【０４３８】
なお、図７８の処理が実行されることにより、経路探索の最前線はノードデータｃＶと有向枝で接続されているノードのうち、最短経路である可能性がある次のノードへと移動する（当該次ノードは複数存在しうる。）。続いて、当該次のノードを対象として、再帰的に図７８の処理が実行される。再帰的に図７８の処理が実行されることにより、最前線のノードに接続されている有向枝が一つずつ辿られ最短経路が探索される。探索された経路に係るノードデータには、ラベル伝播元ノードＩＤ（ｐＩＤ）及び最短距離長（ｄｉｓｔ）の値が記録されている。
【０４３９】
但し、各ノードデータのメンバ変数（ｐＩＤ、ｄｉｓｔ、ｌＦｒｏｎｔＦ）の値は、図７７のステップＳ４−１０９−１において処理対象の枝データｃＥｄｇｅが変化する度に初期化される（Ｓ４−１０９−３）。したがって、湧き出しノードＳから引き出し対象セルへの有向枝ごとに、各ノードデータのｐＩＤ、ｄｉｓｔ、及びｌＦｒｏｎｔＦは変化しうる。
【０４４０】
続いて、図７７のステップＳ４−１０９−１０の詳細について説明する。図７９は、バックトレース処理の処理手順を説明するためのシーケンス図である。ところで、ステップＳ４−１０９−１０（図７９の処理）は、変数ｌＦｌｏｎｔＬｉｓｔにノードデータが無く（Ｓ４−１０９−８でＮｏ）、かつ、変数ｐａｔｈＦの値がｔｒｕｅのとき（Ｓ４−１０９−９でＹｅｓの場合）に実行される。すなわち、一つの引き出し対象セルの入り口ノード（引き出し対象ノード）から出口セルの出口ノードまでの間の最短経路の探索が完了したときに実行される。図７９では、探索された最短経路を流入ノードＴからのバックトレースによって、当該最短経路に使用された有向枝のフロー（ｆｌｏｗ）及び残余（ｒｅｓ）が更新される。
【０４４１】
ステップＳ４−１０９０−１において、バックトレース部１２２２ｂは、流入ノードＴのノードデータ（ノードデータ配列ｖ［ｖｅｒｔｅｘＮｕｍ−１］）のラベル伝播元ノードＩＤ（ｐＩＤ）を変数ｐａｒＮに代入する。変数ｐａｒＮをノードＩＤとするノードを図７９において「親ノード」という。また、バックトレース部１２２２ｂは、親ノードのノードデータ（ノードデータ配列ｖ［ｐａｒＮ］）のラベル伝播元ノードＩＤ（ｐＩＤ）を変数ａｎｃＮに代入する。変数ａｎｃＮをノードＩＤとするノードを図７９において「祖先ノード」という。
【０４４２】
続いて、バックトレース部１２２２ｂは、親ノードのノードデータ（ノードデータ配列ｖ［ｐａｒＮ］）に登録されている各枝データ（ｅＢｒｏｓ、ｅＥ、ｅＷ、ｅＳ、ｅＮ、ｅＮＥ、ｅＮＷ、ｅＳＥ、ｅＳＷ）の中から変数ｐａｒＮをノードＩＤとするノードと変数ａｎｃＮをノードＩＤとするノードとを両端点とする枝データを検索し、検索された枝データを枝データｓｅｇとする（Ｓ４−１０９０−２）。
【０４４３】
続いて、バックトレース部１２２２ｂは、枝データｓｅｇの始点ノードＩＤ（ｓＮ）の値が変数ａｎｃＮの値と一致し、かつ、枝データｓｅｇの終点ノードＩＤ（ｅＮ）の値が変数ｐａｒＮの値と一致するか否かを判定する（Ｓ４−１０９０−３）。すなわち、枝データｓｅｇの向きと、ラベル伝播の方向とが一致しているか否かが判定される。
【０４４４】
ステップＳ４−１０９０−３でＹｅｓの場合、バックトレース部１２２２ｂは、枝データｓｅｇのフロー（ｆｌｏｗ）に１を加算する。また、バックトレース部１２２２ｂは、枝データｓｅｇの残余（ｒｅｓ）の値を｛容量（ｃａｐ）−フロー（ｆｒｏｗ）｝の計算結果で更新する（Ｓ４−１０９０−４）。すなわち、枝データｓｅｇに係る有向枝が、最短経路に利用されたことが記録される。
【０４４５】
一方、ステップＳ４−１０９０−３でＮｏの場合、バックトレース部１２２２ｂは、枝データｓｅｇの始点ノードＩＤ（ｓＮ）の値が変数ｐａｒＮの値と一致し、かつ、枝データｓｅｇの終点ノードＩＤ（ｅＮ）の値が変数ａｎｃＮの値と一致するか否かを判定する（Ｓ４−１０９０−４）。すなわち、ラベル伝播の方向が枝データｓｅｇの向きに対して逆行しているか否かが判定される。このような状況（ラベル伝播の方向が枝データｓｅｇの向きに逆行する状況）は、図７８においてステップＳ４−１０９７−１４が実行された場合に発生する。
【０４４６】
ステップＳ４−１０９０−６でＹｅｓの場合、バックトレース部１２２２ｂは、枝データｓｅｇのフロー（ｆｌｏｗ）より１を減算する。また、バックトレース部１２２２ｂは、枝データｓｅｇの残余（ｒｅｓ）の値を｛容量（ｃａｐ）−フロー（ｆｒｏｗ）｝の計算結果で更新する（Ｓ４−１０９０−６）。その結果、残余（ｒｅｓ）の値は増加する。すなわち、枝データｓｅｇに係る有向枝が最短経路に利用されたことの記録が１つ分除去される。
【０４４７】
ステップＳ４−１０９０−４、ステップＳ４−１０９０−６、又はステップＳ４−１０９０−５でＮｏの場合に続いて、バックトレース部１２２２ｂは、祖先ノードのノードデータ（ノードデータ配列ｖ［ａｎｃＮ］）の探索ソースフラグ（ｓＦｌａｇ）がｔｒｕｅであるか否か、すなわち、引き出し対象セルの入り口ノードまでバックトレースが完了したか否かを判定する（Ｓ４−１０９０−７）。バックトレースが完了していない場合（Ｓ４−１０９０−７でＮｏ）、バックトレース部１２２２ｂは、バックトレースを一枝分進める（Ｓ４−１０９０−８）。具体的には、変数ｐａｒＮに変数ａｎｃＮの値が代入される。また、変数ａｎｃＮにはこれまで祖先ノードだったノードデータ（ｖ［ｐａｒＮ］）のラベル伝播元ノードＩＤ（ｐＩＤ）が代入される。続いて、バックトレース部１２２２ｂは、ステップＳ４−１０９０−２を繰り返し実行する。
【０４４８】
バックトレースが完了した場合（Ｓ４−１０９０−７でＹｅｓ）、バックトレース部１２２２ｂは、図７９の処理を終了させる。
【０４４９】
ここで、ステップＳ４−１０９０−６の処理の意味について説明する。当該ステップは、有向枝の向きに逆行して経路探索が行われた場合（図７８のステップＳ４−１０９７−１４が実行された場合）に実行される。
【０４５０】
図８０は、有向枝の向きに逆行して経路探索された状態を示す模式図である。同図において、実線の矢印は有向枝を示す。小文字のアルファベットはノードを示す。ノードａ及びノードｈは、それぞれ引き出し対象のノードである。ノードｚは、目的地点のノードである。なお、同図では、便宜上、有向枝の傾きは水平又は垂直としている。
【０４５１】
太線の有向枝によって構成される経路ａ→ｂ→ｃ→ｄ→ｅ→ｆ→ｇ→ｚ（以下、「経路ａ」という。）は、既にバックトレースが完了した経路である。したがって、経路ａに利用された各有向枝のフロー（ｆｌｏｗ）には１が記録されている。
【０４５２】
一方、経路ｈ→ｉ→ｆ→ｅ→ｋ→ｍ→ｎ→ｐ→ｚ（以下、「経路ｈ」という。）は、経路ａのバックトレース後に、図７７及び図７８の処理によって探索された経路である。経路ｈにおいて破線の矢印で示される部分（ｆ→ｅ区間）は、有向枝ｅｆの向きに逆行している。
【０４５３】
斯かる経路ｈに関してバックトレース（図７９）の処理が行われる場合、親ノードがｆで祖先ノードがｅのときにステップＳ４−４０９０−６が実行される。当該ステップでは、有向枝ｅｆのフロー（ｆｌｏｗ）の値が１減算され、０となる。その結果、有向枝ｅｆは、経路ａ及び経路ｈのいずれからも利用されないことになる。その後、ｆ→ｉ→ｈの順でバックトレースが行われ、有向枝ｈｉ、有向枝ｉｆのフロー（ｆｌｏｗ）は１とされる。この時点でいずれかの経路に利用されている有向枝（フローの値が１以上である有向枝）は図８１に示される通りである。
【０４５４】
図８１は、有向枝の向きに逆行して経路探索された場合にバックトレースが実行された結果の例を示す模式図である。
【０４５５】
同図では、引き出し対象のノードａからの経路は、ａ→ｂ→ｃ→ｄ→ｅ→ｋ→ｍ→ｎ→ｐ→ｚ（以下、「経路ａ２」という。）となっている。また、引き出し対象のノードｈからの経路は、ｈ→ｉ→ｆ→ｇ→ｚ（以下、「経路ｈ２」という。）となっている。すなわち、経路ｈに関するバックトレースの過程において有向枝ｅｆが利用対象から除去されることにより、経路ａのノードｆ以降の経路が経路ｈによって利用され、その結果、経路ｈ２が形成されたのである。また、経路ｈのノードｅ以降の経路が経路ａに利用され、その結果、経路ａ２が形成されたのである。
【０４５６】
このように有向枝の向きに逆行して経路探索された場合は、一部の経路の入れ替えが行われることにより、入れ替え前と同じ本数（図８０及び図８１の例では２本）の経路が確保される。但し、逆行対象とされる有向枝は、フロー（ｆｌｏｗ）の値が１以上である（すなわち、既に他の経路に利用されている）必要がある。そうでなければ、一部の経路の入れ替えは不可能だからである。
【０４５７】
以上で図７２のステップＳ４−１０−９の説明は終了する。この時点における処理結果の一例は、図７３に示した通りである。同図では、有向グラフ上には６本分の経路が確保されている。具体的には、６本分の経路に利用された各有向枝の枝データには容量（ｃａｐ）の範囲内でフロー（ｆｌｏｗ）の値（使用回数）が記録されている。但し、この時点では、各有向枝のフローがどの配線に割り当てられるかは特定されていない。すなわち、引き出し配線の概略経路は確定されていない。続くステップＳ３では、各有向枝のフローが配線に分配されることにより概略経路が確定される。
【０４５８】
続いて、図７２のステップＳ４−１０−１０の詳細について説明する。図８２は、概略経路の確定処理を説明するためのフローチャートである。
【０４５９】
ステップＳ４−１０１０−１において、概略経路確定部１２２２は、引き出し順位ｐａｔｈ＿ｏｒｄｅｒを０に初期化する。引き出し順位ｐａｔｈ＿ｏｒｄｅｒは、各配線の引き出し順を管理するための変数である。続いて、概略経路確定部１２２２は、配線数分の引き出し順データを補助記憶装置１０２に生成する（Ｓ４−１０１０−２）。配線数は、例えば、ネットリスト１４１に基づいて判定される。すなわち、ネットリスト１４１には、引き出し対象のピンのピンＩＤの一覧が含まれている。したがって、当該ピンＩＤの個数を配線数として利用することができる。
【０４６０】
図８３は、引き出し順データの構成例を示す図である。同図に示されるように、一つの引き出し順データは、ネットＩＤ（ｎｅｔＩＤ）及び引き出し順位（ｏｒｄｅｒ）等のメンバ変数（データ項目）を有する。ネットＩＤ（ｎｅｔＩＤ）は、配線のネットＩＤである。引き出し順位（ｏｒｄｅｒ）は、ネットＩＤによって識別される配線の引き出し順位（順番）である。このように、一つの引き出し順データでは、一つの配線の引き出し順位を管理することができる。したがって、配線数分の引き出し順データが生成されることにより、各配線の引き出し順がそれぞれの引き出し順データによって管理される。
【０４６１】
続いて、概略経路確定部１２２２は、セル行列における北側を出口とする探索経路（ステップＳ４−１０−９で探索された経路）の各有向枝のフロー（ｆｌｏｗ）を配線に分配することにより当該配線の概略経路を確定する（Ｓ４−１０１０−３）。
【０４６２】
続いて、概略経路確定部１２２２は、概略経路確定部１２２２は、セル行列における東側を出口とする探索経路の各有向枝のフロー（ｆｌｏｗ）を配線に分配することにより当該配線の概略経路を確定する（Ｓ４−１０１０−４）。
【０４６３】
続いて、概略経路確定部１２２２は、セル行列における南側を出口とする探索経路の各有向枝のフロー（ｆｌｏｗ）を配線に分配することにより当該配線の概略経路を確定する（Ｓ４−１０１０−５）。
【０４６４】
続いて、概略経路確定部１２２２は、セル行列における西側を出口とする探索経路の各有向枝のフロー（ｆｌｏｗ）を配線に分配することにより当該配線の概略経路を確定する（Ｓ４−１０１０−６）。
【０４６５】
続いて、ステップＳ４−１０１０−３〜Ｓ４−１０１０−６の詳細について説明する。ここでは、代表してステップＳ４−１０１０−４の詳細について説明する。
【０４６６】
図８４は、セル行列の東側を出口とする探索経路に基づく概略経路の確定処理の処理手順を説明するためのフローチャートである。図８４の処理手順は、図７４を参照しながら説明する。なお、本実施の形態では、セル行列の外周において時計回りに探索経路の出口が探索される。したがって、東側については、セル行列の東端列に属するセルについて、北端行から南端行に向かって探索経路の出口が探索される。
【０４６７】
ステップＳ４−１０１４−１において、概略経路確定部１２２２は、変数ｃの値をｃｏｌＭａｘ−１によって初期化する。変数ｃは、セルデータ配列ｃｅｌｌにおいて処理対象とする要素（セルデータ）に対する添え字である。また、ｃｏｌＭａｘはセルの列数である。したがって、セルデータ配列ｃｅｌｌにおいて変数ｃの初期値（ｃｏｌＭａｘ−１）を添え字とするセルデータ（ｃｅｌｌ［ｃ］）は、東端列において北端行のセルのセルデータである。
【０４６８】
続いて、ステップＳ４−１０１４−２、Ｓ４−１０１４−３、Ｓ４−１０１４−１４、及びＳ４−１０１４−１５では、探索経路の出口となっているセルが探索される。
【０４６９】
すなわち、ステップＳ４−１０１４−２において、概略経路確定部１２２２は、処理対象のセルデータの出口フラグ（ｅｘｉｔＦ）がｆａｌｓｅであるか（すなわち、当該セルデータが外周のセルでないか）、又は当該セルデータの容量（ｃａｐ）の値が０以下であるかを判定する。
【０４７０】
ステップ３−４−２でＮｏの場合、概略経路確定部１２２２は、当該セルデータの出口ノードのノードデータの相棒ノードとの有向枝（ｅＢｒｏｓ）のフロー（ｆｌｏｗ）が０より大きいか否かを判定する（Ｓ４−１０１４−３）。
【０４７１】
ステップＳ４−１０１４−２でＹｅｓの場合、又はステップＳ４−１０１４−３でＮｏの場合は処理対象のセルデータは探索経路の出口となっていないセルのセルデータである。したがって、概略経路確定部１２２２は、変数ｃの値にｃｏｌＭａｘを加算し、東端列の次の行のセルのセルデータを処理対象とする（Ｓ４−１０１４−１４）。続いて、概略経路確定部１２２２は、変数ｃの値がセルＩＤの最大値以下であるか否か、すなわち、東端列において未処理の行は残っているか否かを判定する（Ｓ４−１０１４−１５）。未処理のセルが残っている場合（Ｓ４−１０１４−１５でＹｅｓ）、概略経路確定部１２２２は、ステップＳ４−１０１４−２以降を繰り返す。
【０４７２】
ステップＳ４−１０１４−３でＹｅｓの場合、処理対象のセルデータは探索経路の出口となっているセルのセルデータである。そこで、概略経路確定部１２２２は、当該セルデータの出口ノードのノードデータの相棒ノードとの有向枝（ｅＢｒｏｓ）を変数ｐａｔｈＥｄｇｅによって参照する（Ｓ４−１０１４−４）。なお、図７４の場合、最初に７行目のセルＥ１のセル内の有向枝ｅ１の枝データがｐａｔｈＥｄｇｅによって参照される。以下、ｐａｔｈＥｄｇｅによって参照される枝データを「枝データｐａｔｈＥｄｇｅ」という。なお、枝データｐａｔｈＥｄｇｅに対する変更は、ｐａｔｈＥｄｇｅによって参照される枝データ（ここでは、処理対象のセルデータの出口ノードのノードデータの相棒ノードとの有向枝（ｅＢｒｏｓ））への変更を意味する。
【０４７３】
続いて、概略経路確定部１２２２は、枝データｐａｔｈＥｄｇｅのフロー（ｆｌｏｗ）に対応する線分データを生成する（Ｓ４−１０１４−５）。
【０４７４】
図８５は、線分データの生成処理の処理手順を説明するためのフローチャートである。
【０４７５】
ステップＳ４−１０Ｌ−１において、概略経路確定部１２２２は、線分データｓｅｇを一つメモリ装置１０３に生成する。
【０４７６】
図８６は、線分データの構成例を示す図である。同図に示されるように、一つの線分データは、概略経路を構成する線分を表現するデータであり、始点ノードＩＤ（ｓＮ）、終点ノードＩＤ（ｅＮ）、ネットＩＤ（ｎｅｔＩＤ）、及び引き出し順位（ｏｒｄｅｒ）等のメンバ変数（データ項目）を有する。
【０４７７】
始点ノードＩＤ（ｓＮ）は、線分データの始点ノードのノードＩＤである。終点ノードＩＤ（ｅＮ）は、線分データの終点ノードのノードＩＤである。ネットＩＤ（ｎｅｔＩＤ）は、線分データが属する概略経路が対応する配線のネットＩＤである。引き出し順位（ｏｒｄｅｒ）は、線分データが属する概略経路が対応する配線の引き出し順位である。
【０４７８】
続いて、概略経路確定部１２２２は、線分データｓｅｇの始点ノードＩＤ（ｓＮ）に、枝データｐａｔｈＥｄｇｅの始点ノードＩＤ（ｓＮ）の値を記録する（Ｓ４―２）。続いて、概略経路確定部１２２２は、線分データｓｅｇの終点ノードＩＤ（ｅＮ）に、枝データｐａｔｈＥｄｇｅの終点ノードＩＤ（ｅＮ）の値を記録する（Ｓ４−１０Ｌ−３）。続いて、概略経路確定部１２２２は、線分データｓｅｇをｃｕｒｒｅｎｔＳｅｇリストに追加する（Ｓ４−１０Ｌ−４）。ｃｕｒｒｅｎｔＳｅｇリストは、一本分の概略経路を構成する線分データの集合（リスト）を格納するためのデータ又はレコードであり、例えば、メモリ装置１０３に生成される。
【０４７９】
図８４に戻る。ステップＳ４−１０１４−５に続いてステップＳ４−１０１４−６に進み、概略経路確定部１２２２は、枝データｐａｔｈＥｄｇｅのフロー（ｆｌｏｗ）の値を１減らす。ステップＳ４−１０１４−５及びＳ４−１０１４−６により、枝データｐａｔｈＥｄｇｅのフロー（ｆｌｏｗ）が概略経路の線分として有向枝より分離されたことになる。
【０４８０】
続いて、概略経路確定部１２２２は、枝データｐａｔｈＥｄｇｅの始点ノードのノードデータの探索ソースフラグ（ｓＦｌａｇ）がｔｒｕｅであるか否かを判定する（Ｓ４−１０１４−７）。すなわち、引き出し対象セルの入り口ノード（配線の起点）まで遡ったか否かが判定される。本実施の形態において最初にステップＳ４−１０１４−７が実行される段階では有向枝ｅ１の始点ノードまでしか遡っていないため、この判定はＮｏとなる。
【０４８１】
ステップＳ４−１０１４−７でＮｏの場合、概略経路確定部１２２２は、枝データｐａｔｈＥｄｇｅの始点ノードを終点ノードとする有向枝であって、フロー（ｆｌｏｗ）の値が０より大きい有向枝の枝データを当該始点ノードに接続されている有向枝の中から１本検索し、検索された有向枝を新たにｐａｔｈＥｄｇｅによって参照する（Ｓ４−１０１４−１０）。ここで、有向枝の検索では、複数の有向枝が候補として存在する場合は有向枝の遡りの進行方向の右側に有る方が優先的に選択される。具体的には、東隣セルのノードとの有向枝（ｅＥ）、北東セルのノードとの有向枝（ｅＮＥ）、北隣セルのノードとの有向枝（ｅＮ）、北西セルのノードとの有向枝（ｅＮＷ）、西隣セルのノードとの有向枝（ｅＷ）、南西セルのノードとの有向枝（ｅＳＷ）、南隣セルのノードとの有向枝（ｅＳ）、南東セルのノードとの有向枝（ｅＳＥ）の順で検索される。
【０４８２】
遡りの進行方向の右側が優先されるのは、配線が他の配線と交差しないことを保障するためである。すなわち、本実施の形態では、探索経路の出口の探索がセル行列の外周において時計回り行われる。斯かる前提において、遡り方向において右側の有向枝を優先的に選択すれば、当該概略経路より右側の概略経路は生成されることはない。したがって、例えば、探索経路の出口の探索がセル行列の外周において反時計回りに行われる場合、遡りの進行方向の左側に有る方を優先的に選択すればよい。
【０４８３】
なお、図７４において最初にステップＳ４−１０１４−１０が実行される段階では、有向枝ｅ２が検索され、ｐａｔｈＥｄｇｅによって参照される。
【０４８４】
続いて、概略経路確定部１２２２は、新たな枝データｐａｔｈＥｄｇｅのフロー（ｆｌｏｗ）について線分データを生成する（Ｓ４−１０１４−１１）。当該ステップの処理内容は、図８５において説明した通りである。続いて、概略経路確定部１２２２は、枝データｐａｔｈＥｄｇｅのフロー（ｆｌｏｗ）の値を１減らす（Ｓ４−１０１４−１２）。続いて、概略経路確定部１２２２は、枝データｐａｔｈＥｄｇｅの始点ノードの相棒ノードとの有向枝（ｅＢｒｏｓ）を新たにｐａｔｈＥｄｇｅによって参照する（Ｓ４−１０１４−１３）。図７４において最初にステップＳ４−１０１４−１３が実行される段階では、有向枝ｅ３がｐａｔｈＥｄｇｅによって参照される。
【０４８５】
以降、枝データｐａｔｈＥｄｇｅの始点ノードが引き出し対象セルの入り口ノードに到達するまでステップＳ４−１０１４−１０〜Ｓ４−１０１４−１３が繰り返される。その結果、図７４では、既に線分データが生成された有向枝ｅ１、ｅ２に続いてｅ３、ｅ４、ｅ５、ｅ６、ｅ７、ｅ８、ｅ９、ｅ１０、ｅ１１、ｅ１２、ｅ１３、ｅ１４、ｅ１５、ｅ１６のフロー（ｆｌｏｗ）に基づいて線分データが生成され、ｃｕｒｒｅｎｔＳｅｇリストに登録される。
【０４８６】
有向枝ｅ１７が枝データｐａｔｈＥｄｇｅとされると、ステップＳ４−１０１４−７でＹｅｓとなる。ステップＳ４−１０１４−７でＹｅｓの場合、概略経路確定部１２２２は、線分データの保存処理を実行する（Ｓ４−１０１４−８）。
【０４８７】
図８７は、線分データの保存処理の処理手順を説明するためのフローチャートである。
【０４８８】
ステップＳ４−１０ｓ−１において、概略経路確定部１２２２は、枝データｐａｔｈＥｄｇｅの始点ノードのノードデータのオーナーセルのセルデータのネットＩＤ（ｎｅｔＩＤ）の値を取得し、変数ＮＩＤに代入する（Ｓ４−１０ｓ−１）。図７４において最初にステップＳ４−１０ｓ−１が実行される段階では、セルＳ１のセルデータのネットＩＤ（ｎｅｔＩＤ）が変数ＮＩＤに代入される。
【０４８９】
続いて、概略経路確定部１２２２は、ｃｕｒｒｅｎｔＳｅｇリストに登録されている各線分データｓｅｇのネットＩＤ（ｎｅｔＩＤ）にＮＩＤの値を記録し、引き出し順位（ｏｒｄｅｒ）にｐａｔｈ＿ｏｒｄｅｒの値（初期値は０）を記録する（Ｓ４−１０ｓ−２）。
【０４９０】
続いて、概略経路確定部１２２２は、ｃｕｒｒｅｎｔＳｅｇリストに登録されている各線分データを補助記憶装置１０２に保存する（Ｓ４−１０ｓ−３）。
【０４９１】
続いて、概略経路確定部１２２２は、ｐａｔｈ＿ｏｒｄｅｒ番目の引き出し順データのネットＩＤ（ｎｅｔＩＤ）にＮＩＤの値を記録し、引き出し順位（ｏｒｄｅｒ）にｐａｔｈ＿ｏｒｄｅｒの値を記録する。
【０４９２】
図８７の処理によって、１本分の概略経路に関する線分データと引き出し順位とが補助記憶装置１０２に保存される。なお、線分データは、配線がどのピン間を通過するかを示す情報であり、引き出し順位は、各配線の相対的な位置関係を示す情報である。
【０４９３】
図８４に戻る。ステップＳ４−１０１４−８に続いてステップＳ４−１０１４−９に進み、概略経路確定部１２２２は、ｐａｔｈ＿ｏｒｄｅｒの値をインクリメントする。続いて、概略経路確定部１２２２は、ステップＳ４−１０１４−３を実行する。ここで、探索経路の出口とされている次のセルを探索せずに、現在処理対象とされているセルデータについて再度ステップＳ４−１０１４−３を実行するのは、現在処理対象のセルデータに係るセル内の有向枝（図７４では有向枝ｅ１）にフロー（ｆｌｏｗ）が残っている可能性があるからである。当該有向枝にフロー残っている場合（Ｓ４−１０１４−３でＹｅｓ）、ステップＳ４−１０１４−４以降が実行される。その結果、図７４では、有向枝ｅ１、ｅ２、ｅ３、ｅ４、ｅ５、ｅ６、ｅ７、ｅ８、ｅ９、ｅ１０、ｅ１１、ｅ１２、ｅ１３、ｅ１４、ｅ１５、ｅ２１、ｅ２２、及びｅ２３のフローに基づいて線分データが生成され、保存される。すなわち、２番目に引き出されるべき配線の概略経路が確定される。
【０４９４】
セルＥ１の有向枝ｅ１にフロー（ｆｌｏｗ）が残っていない場合（Ｓ４−１０１４−３でＮｏ）、次の行のセルＥ２が処理対象とされる（Ｓ４−１０１４−１４）。セルＥ２についてステップＳ４−１０１４−４以降が実行されることにより、有向枝ｅ３１、ｅ３２、ｅ３３、ｅ３４、ｅ３５、ｅ３６、ｅ５、ｅ３７、ｅ３８、ｅ３９、ｅ４０、及びｅ４１のフローに基づいて線分データが生成され、保存される。すなわち、３番目に引き出されるべき配線の概略経路が確定される。
【０４９５】
以降、ステップＳ４−１０１４−２以降が繰り返し実行されることにより、本実施の形態（図７４）では、合計６本分の概略経路が生成される。すなわち、本実施の形態の概略配線は完了する。詳細配線の段階では、線分データと引き出し順位とに基づいて、各配線の物理的な位置を決定すればよい。
【０４９６】
なお、図８２のステップＳ４−１０１０−３、Ｓ４−１０１０−５、及びＳ４−１０１０−６処理手順は、図８４より自明であるため、フローチャートのみを示し、詳細な説明は省略する。
【０４９７】
図８８は、セル行列の北側を出口とする探索経路に基づく概略経路の確定処理の処理手順を説明するためのフローチャートである。すなわち、図８８は、ステップＳ４−１０１０−３を詳細に説明するフローチャートである。図８８では、セル行列の北端行に属するセルについて、西端列から東端列に向かって（すなわち、時計回りに）探索経路の出口が探索される（Ｓ４−１０１３−１、Ｓ４−１０１３−１４、及びＳ４−１０１３−１５参照）。
【０４９８】
また、ステップＳ４−１０１３−１０では、遡りの進行方向の右側に有る方を優先的に選択するため、北隣セルのノードとの有向枝（ｅＮ）、北西セルのノードとの有向枝（ｅＮＷ）、西隣セルのノードとの有向枝（ｅＷ）、南西セルのノードとの有向枝（ｅＳＷ）、南隣セルのノードとの有向枝（ｅＳ）、南東セルのノードとの有向枝（ｅＳＥ）、東隣セルのノードとの有向枝（ｅＥ）、北東セルのノードとの有向枝（ｅＮＥ）の順で有向枝が検索される。
【０４９９】
また、図８９は、セル行列の南側を出口とする探索経路に基づく概略経路の確定処理の処理手順を説明するためのフローチャートである。すなわち、図８９は、ステップＳ４−１０１０−５を詳細に説明するフローチャートである。図８９では、セル行列の南端行に属するセルについて、東端列から西端列に向かって（すなわち、時計回りに）探索経路の出口が探索される（Ｓ４−１０１５−１、Ｓ４−１０１５−１４、及びＳ４−１０１５−１５参照）。
【０５００】
また、ステップＳ４−１０１５−１０では、遡りの進行方向の右側に有る方を優先的に選択するため、南隣セルのノードとの有向枝（ｅＳ）、南東セルのノードとの有向枝（ｅＳＥ）、東隣セルのノードとの有向枝（ｅＥ）、北東セルのノードとの有向枝（ｅＮＥ）、北隣セルのノードとの有向枝（ｅＮ）、北西セルのノードとの有向枝（ｅＮＷ）、西隣セルのノードとの有向枝（ｅＷ）、南西セルのノードとの有向枝（ｅＳＷ）の順で有向枝が検索される。
【０５０１】
また、図９０は、セル行列の西側を出口とする探索経路に基づく概略経路の確定処理の処理手順を説明するためのフローチャートである。すなわち、図９０は、ステップＳ４−１０１０−６を詳細に説明するフローチャートである。図９０では、セル行列の西端列に属するセルについて、南端行から北端行に向かって（すなわち、時計回りに）探索経路の出口が探索される（Ｓ４−１０１６−１、Ｓ４−１０１６−１４、及びＳ４−１０１６−１５参照）。
【０５０２】
また、ステップＳ４−１０１６−１０では、遡りの進行方向の右側に有る方を優先的に選択するため、西隣セルのノードとの有向枝（ｅＷ）、南西セルのノードとの有向枝（ｅＳＷ）、南隣セルのノードとの有向枝（ｅＳ）、南東セルのノードとの有向枝（ｅＳＥ）、東隣セルのノードとの有向枝（ｅＥ）、北東セルのノードとの有向枝（ｅＮＥ）、北隣セルのノードとの有向枝（ｅＮ）、北西セルのノードとの有向枝（ｅＮＷ）、の順で有向枝が検索される。
【０５０３】
なお、上記では、セル行列の外周のセルを全て走査して探索経路の出口を探索する例を示した。しかし、流入ノードＴと有向枝によって接続されているノードを探索経路の出口とし、当該ノードから有向枝を遡るようにしてもよい。当該ノードは、流入ノードＴのノードデータのｔａｇｅｔＥｄｇｅＬｉｓｔに登録されている枝データに基づいて特定することができる。当該ノードが複数存在する場合、セル行列の外周における一定方向（本実施の形態では時計回りの方向）に従って、遡るノードを順番に選択すればよい。
【０５０４】
続いて、図７２のステップＳ４−１０−１１の詳細について説明する。
【０５０５】
図９１は、着目バスに関する配線の引き出しの成否の判定処理及び引き出し経路情報の保存処理の処理手順を説明するためのフローチャートである。
【０５０６】
ステップＳ４−１０１１−１において、引き出し成否判定部１２２３は、着目バスの全ての所属ネットについて配線を引き出せたか否かを判定する。当該判定は、着目バスのバス情報Ｂのネット数ｎ分の配線が、流入ノードＴに到達したか否かに基づいて行えばよい。流入ノードＴに到達した配線の数は、流入ノードＴを終点ノードとする枝データのフロー（ｆｌａｗ）の合計である。
【０５０７】
着目バスの全ての所属ネットについて配線を引き出せた場合（Ｓ４−１０１１−１でＹｅｓ）、引き出し成否判定部１２２３は、変数ｒｅｑｕｅｓｔＮに０を代入する（Ｓ４−１０１１−２）。変数ｒｅｑｕｅｓｔＮは、図７２のステップＳ４−１０−１２における変数ｒｅｑｕｅｓｔＮと同一の実体である。続いて、引き出し成否判定部１２２３は、着目バスのバス情報Ｂの引出成功回数ｎＥｓｃの値に１を加算する（Ｓ４−１０１１−３）。着目バスの全所属ネットについて、一端の部品（着目部品）からの引き出しに成功したからである。
【０５０８】
続いて、引き出し成否判定部１２２３は、補助記憶装置１０２に保存されている全ての線分データ（図８６）を、セル系線分データに変換する（Ｓ４−１０１１−４）。
【０５０９】
図９２は、セル系線分データの構成例を示す図である。同図に示されるように、セル系線分データは、始点列番号（ｘ１）、始点行番号（ｙ１）、終点列番号（ｘ２）、終点行番号（ｙ２）、層番号（ｌａｙｅｒ）、ネットＩＤ（ｎｅｔＩＤ）、及び次データ（ｎｅｘｔ）等のメンバ変数（データ項目）を有する。
【０５１０】
始点列番号（ｘ１）は、線分の始点のセル行列における列番号である。終点行番号（ｙ１）は、線分の始点のセル行列における行番号である。終点列番号（ｘ２）は、線分の終点のセル行列における列番号である。終点行番号（ｙ２）は、線分の終点のセル行列における行番号である。層番号（ｌａｙｅｒ）は、線分が対応するネット（配線）が属する層の層番号である。次データ（ｎｅｘｔ）は、セル系線分データのリスト構造を形成するための、次のセル系線分データへのポインタである。
【０５１１】
このように、セル系線分データは、線分の始点及び終点をセルの行番号及び列番号によって線分を特定するデータである。一方、線分データ（図８６）は、有向グラフのノードによって線分を特定するデータである。したがって、ステップＳ４−１０１１−４では、ノードに基づく座標系からセル行列の座標系への変換が行われる。
【０５１２】
続いて、引き出し成否判定部１２２３は、引き出し経路データｅＰａｔｈを一つメモリ装置１０３に生成する（Ｓ４−１０１１―５）。
【０５１３】
図９３は、引き出し経路データの構成例を示す図である。同図において、引き出し経路データｅＰａｔｈは、バスの所属ネットの配線の引き出し経路を示すデータであり、バスＩＤ（ｂｕｓ）、部品ＩＤ（ｐａｒｔ）、層番号（ｌａｙｅｒ）、経路線分リスト（ｓｅｇＬｉｓｔ）等のメンバ変数（データ項目）を有する。
【０５１４】
バスＩＤ（ｂｕｓ）は、引き出し経路に係るバスのバスＩＤである。部品ＩＤ（ｐａｒｔ）は、引き出し経路に係る部品の部品ＩＤである。層番号（ｌａｙｅｒ）は、引き出し経路に係る層の層番号である。経路線分リストは、配線の引き出し経路を示すセル系線分データのリストの先頭のセル系線分データへのポインタである。
【０５１５】
続いて、引き出し成否判定部１２２３は、生成された引き出し経路データｅＰａｔｈの各メンバ変数に値を代入する（Ｓ４−１０１１−６）。具体的には、バスＩＤ（ｂｕｓ）に変数ＦＬＡＶＯＲの値（着目バスのバスＩＤ）が代入される。部品ＩＤ（ｐａｒｔ）に着目部品の部品ＩＤが代入される。層番号（ｌａｙｅｒ）に着目層Ｌの層番号が代入される。経路線分リスト（ｓｅｇＬｉｓｔ）に、ステップＳ４−１０１１−４における変換によって生成されたセル系線分データのリストへのポインタが代入される。
【０５１６】
一方、着目バスの少なくとも一部の所属ネットについて配線を引き出せなかった場合（Ｓ４−１０１１−１でＮｏ）、引き出し成否判定部１２２３は、着目バスのバス情報Ｂのネット数ｎから流入ノードＴに到達した配線数を減じた値を変数ｒｅｕｑｅｓｔＮに代入する（Ｓ４−１０１１−７）。
【０５１７】
続いて、ステップＳ４−１０１１−４の詳細について説明する。図９４は、線分データからセル系線分データへの変換処理の処理手順を説明するためのフローチャートである。
【０５１８】
ステップＳ４−１０ＣＬ−１において、引き出し成否判定部１２２３は、線分データの総数分のセル系線分データを生成する。続いて、線分データの総数が０で無い場合（Ｓ４−１０ＣＬ−２でＮｏ）、引き出し成否判定部１２２３は、ステップＳ４−１０ＣＬ−３及びＳ４−１０ＣＬ−４を実行する。
【０５１９】
ステップＳ４−１０ＣＬ−３において、引き出し成否判定部１２２３は、線分データごとに以下の処理を実行する。まず、線分データの始点ノードのオーナーセルと終点ノードのオーナーセルのセルＩＤとが同じか否かが判定される。同じであれば、次の線分データが処理対象とされる。始点ノードのオーナーセルと終点ノードのオーナーセルとが異なる場合、当該線分データに対応するセル系線分データのメンバ変数に値が代入される。すなわち、始点列番号（ｘ１）に、線分データの始点ノードのオーナーセルの列番号が代入される。また、始点行番号（ｙ１）に、線分データの始点ノードのオーナーセルの行番号が代入される。また、終点列番号（ｘ２）に、線分データの終点ノードのオーナーセルの列番号が代入される。また、終点行番号（ｙ２）に、線分データの終点ノードのオーナーセルの行番号が代入される。また、層番号（Ｌ）に、着目層Ｌの層番号が代入される。また、ネットＩＤ（ｎｅｔＩＤ）に、線分データのネットＩＤが代入される。
【０５２０】
ステップＳ４−１０ＣＬ−４において、引き出し成否判定部１２２３は、有効なセル系線分データをリスト構造に接続する。すなわち、各セル系線分データの次データ（ｎｅｘｔ）に、次のセル系線分データのポインタが代入される。最後のセル系線分データの次データ（ｎｅｘｔ）にはＮＵＬＬが代入される。なお、有効なセル系線分データとは、ステップＳ４−１０ＣＬ−３において、メンバ変数に値が代入されたセル系線分データである。
【０５２１】
続いて、図７２のステップＳ４−１０−１６の詳細について説明する。図９５は、出口セルの追加処理の処理手順を説明するためのフローチャートである。同図の処理手順は、図６２のステップＳ４−９４１３−９以降に類似している。
【０５２２】
ステップＳ４−１０１６−１において、引き出し配線部１２２は、着目バスの配線脱出口部分のリーフセルを伸張するか否かを示すフラグ変数の値を初期化する（Ｓ４−１０１６−８）。具体的には、左回り（左方向）に伸張するか否かを示すフラグ変数Ｌ＿ＥｘｐａｎｄＦにＴＲＵＥが代入される。また、右回り（右方向）に伸張するか否かを示すフラグ変数Ｒ＿ＥｘｐａｎｄＦにＴＲＵＥが代入される。すなわち、最初は、両方向が伸張方向の候補とされる。また、出口セルの追加分として獲得できたセル数を記憶するための変数Ｇａｉｎが０に初期化される。また、出口セルの左端を記憶するための変数ＬｅｆｔＰに、着目バスに対応する配線脱出口データＧａｔｅ（図６３）の左端セル（ＬｅｆｔＰ）の値が代入される。また、出口セルの右端を記憶するための変数ＲｉｇｈｔＰに、着目バスに対応する配線脱出口データＧａｔｅ（図６３）の右端セルＲｉｇｈｔＰの値が代入される。
【０５２３】
続いて、引き出し配線部１２２は、Ｌ＿ＥｘｐａｎｄＦの値がＴＲＵＥであるか否かを判定する（Ｓ４−１０１６−２）。Ｌ＿ＥｘｐａｎｄＦの値がＴＲＵＥでない場合（ステップＳ４−１０１６−２でＮｏ）、ステップＳ４−１０１６−５に進む。Ｌ＿ＥｘｐａｎｄＦの値がＴＲＵＥである場合（Ｓ４−１０１６−２でＹｅｓ）、引き出し配線部１２２は、着目バスの配線脱出口部分について左側へのリーフセルの伸張を試行する（Ｓ４−１０１６−３）。伸張に成功した場合、変数Ｇａｉｎの値が、伸張された分のセルの容量だけ増加され、変数ＬｅｆｔＰの値が、伸張されたセルのセルデータへのポインタに更新される。伸張に失敗した場合、Ｌ＿ＥｘｐａｎｄＦの値はＦＡＬＳＥに更新される。
【０５２４】
続いて、引き出し配線部１２２は、変数Ｇａｉｎの値が、変数ｒｅｑｕｅｓｔＮ以上であるか否かを判定する（Ｓ４−１０１６−４）。すなわち、引き出せなかった配線数分の配線脱出口が追加されたか否かが判定される。変数Ｇａｉｎの値が、変数ｒｅｑｕｅｓｔＮの値以上である場合（Ｓ４−１０１６−４でＹｅｓ）、引き出し配線部１２２は、リーフセルの伸張は終了させ、ステップＳ４−１０１６−８に進む。変数Ｇａｉｎの値が、変数ｒｅｑｕｅｓｔＮの値未満である場合（Ｓ４−１０１６−４でＮｏ）、引き出し配線部１２２は、Ｒ＿ＥｘｐａｎｄＦの値がＴＲＵＥであるか否かを判定する（Ｓ４−１０１６−５）。
【０５２５】
Ｒ＿ＥｘｐａｎｄＦの値がＴＲＵＥでない場合（ステップＳ４−１０１６−５でＮｏ）、ステップＳ４−１０１６−７に進む。Ｒ＿ＥｘｐａｎｄＦの値がＴＲＵＥである場合（Ｓ４−１０１６−５でＹｅｓ）、引き出し配線部１２２は、着目バスの配線脱出口部分について右側へのリーフセルの伸張を試行する（Ｓ４−１０１６−６）。伸張に成功した場合、変数Ｇａｉｎの値が、伸張された分のセルの容量だけ増加され、変数ＲｉｇｈｔＰの値が、伸張されたセルのセルデータへのポインタに更新される。伸張に失敗した場合、Ｒ＿ＥｘｐａｎｄＦの値はＦＡＬＳＥに更新される。
【０５２６】
続いて、引き出し配線部１２２は、変数Ｇａｉｎの値が、変数ｒｅｑｕｅｓｔＮの値以上であるか否か、又はＬ＿Ｅｘｐａｎｄ及びＲ＿Ｅｘｐａｎｄの双方の値がＦＡＬＳＥであるか否かを判定する（Ｓ４−１０１６−７）。変数Ｇａｉｎの値が、変数ｒｅｑｕｅｓｔＮの値未満であり、かつ、Ｌ＿Ｅｘｐａｎｄ及びＲ＿Ｅｘｐａｎｄの少なくともいずれか一方の値がＴＲＵＥである場合（Ｓ４−１０１６−７でＮｏ）、引き出し配線部１２２は、ステップＳ４−１０１６−２以降を繰り返す。
【０５２７】
変数Ｇａｉｎの値が、変数ｒｅｑｕｅｓｔＮの値以上である場合、又はＬ＿Ｅｘｐａｎｄ及びＲ＿Ｅｘｐａｎｄの双方の値がＦＡＬＳＥである場合（Ｓ４−１０１６−７でＹｅｓ）、変数Ｇａｉｎの値が変数ｒｅｑｕｅｓｔＮの値未満であれば（Ｓ４−１０１６−８でＮｏ）、引き出し配線部１２２は、変数ｓｔａｔｕｓにＦＡＬＳＥを代入する（Ｓ４−１０１６−９）。一方、変数Ｇａｉｎの値が変数ｒｅｑｕｅｓｔＮの値以上であれば（Ｓ４−１０１６−８でＹｅｓ）、引き出し配線部１２２は、変数ｓｔａｔｕｓにＴＲＵＥを代入する（Ｓ４−１０１６−１０）。続いて、引き出し配線部１２２は、着目バスに対応する配線脱出口データＧａｔｅを更新する（Ｓ４−１０１６−１１）。すなわち、当該配線脱出口データＧａｔｅの防護壁色（ｆｌａｖｏｒ）に変数ＦＬＡＶＯＲの値が記録される。また、当該配線脱出口データＧａｔｅの左端セル（ＬｅｆｔＰ）に変数ＬｅｆｔＰの値が記録される。また、当該配線脱出口データＧａｔｅの右端セル（ＲｉｇｈｔＰ）に変数ＲｉｇｈｔＰの値が記録される。更に、当該配線脱出口データＧａｔｅの容量（ＣＡＰ）に、変数Ｇａｉｎの値が加算される。
【０５２８】
なお、ステップＳ４−１０１６−３の詳細な処理手順は、図６４を用いて説明した処理手順において変数ＣＡＰを変数Ｇａｉｎに置き換えたものでよい。同様に、ステップＳ４−１０１６−６の詳細な処理手順は、図６５を用いて説明した処理手順において変数ＣＡＰを変数Ｇａｉｎに置き換えたものでよい。
【０５２９】
以上で、ステップＳ４に関する詳細な説明は終了する。続いて、図３のステップＳ５の配線プラン生成部１１による処理の詳細について説明する。
【０５３０】
図９６は、妥当性が肯定された配線プランの確定処理の処理手順を説明するためのフローチャートである。同図では、ステップＳ５−３〜Ｓ５−９が、バス情報記憶部Ｄ５に登録されたバスごと（バス情報Ｂごと）に実行される。
【０５３１】
ステップＳ５−３において、配線プラン生成部１１は、処理対象とされたバス（着目バス）のバス情報Ｂ（図８参照）の引出成功回数ｎＥｓｃの値が２であるか、又は経路固定フラグｆｉｘの値が「Ｔ」であるか否かを判定する。すなわち、着目バスの両端について全ての所属ネットの配線の引き出しに成功しているか、又はバス経路が固定であるか否かが判定される。
【０５３２】
着目バスの両端について少なくとも一部の所属ネットの配線の引き出しに成功しておらず、かつ、着目バスのバス経路は固定でない場合（Ｓ５−３でＮｏ）、配線プラン生成部１１は、着目バスのバス情報Ｂの経路確定フラグａｃｃの値を「Ｆ」とする（Ｓ５−４）。続いて、配線プラン生成部１１は、着目バスのバス経路矩形情報ＢＲをバス経路矩形情報記憶部Ｄ９より削除する（Ｓ５−５）。続いて、配線プラン生成部１１は、バスＩＤ（ｂｕｓ）が着目バスのバスＩＤと一致する全ての引き出し経路データｅＰａｔｈを削除する（Ｓ５−６）。
【０５３３】
すなわち、着目バスの配線プランを再実行するため、今回着目バスについて生成されたバス経路矩形情報及び引き出し経路データｅＰａｔｈ等は削除される。
【０５３４】
一方、着目バスの両端について全ての所属ネットの配線の引き出しに成功している場合、又は着目バスのバス経路が固定である場合（Ｓ５−３でＹｅｓ）、配線プラン生成部１１は、着目バスのバス情報Ｂの経路確定フラグａｃｃの値を「Ｔ」とする（Ｓ５−７）。続いて、配線プラン生成部１１は、着目バスに係るバス経路矩形情報ＢＲのうち、ソース側又はターゲット側の部品内に含まれる部分（当該部品と重複する部分）をバス経路矩形情報記憶部Ｄ９より削除する（Ｓ５−８）。続いて、配線プラン生成部１１は、バスＩＤ（ｂｕｓ）が着目バスのバスＩＤと一致する全ての引き出し経路データｅＰａｔｈの経路線分リスト（ｓｅｇＬｉｓｔ）によって示される線分を配線領域における障害物として記録する（Ｓ５−９）。
【０５３５】
すなわち、ステップＳ５−５及びＳ５−６において、部品と着目バスとが重複する部分について、単なる矩形情報から所属ネットごとの詳細な配線の経路を示す線分情報に置換される。そうすることにより、配線プランが未確定のバスについてステップＳ２以降が再実行される際に、より正確な障害物に基づいて、当該バスの経路を生成することができる。
【０５３６】
続いて、ステップＳ５−５の詳細について説明する。図９７は、バス経路矩形情報の削除処理の処理手順を説明するためのフローチャートである。配線プラン生成部１１は、着目バスのバス情報Ｂの経路矩形リストｓＰにリンクされている各バス経路矩形情報ＢＲ（図１２）についてステップＳ５−５−３及びＳ５−５−４を実行する（Ｓ５−５−１、Ｓ５−５−２、Ｓ５−５−５）。
【０５３７】
ステップＳ５−５−３において、配線プラン生成部１１は、処理対象とされたバス経路矩形情報ＢＲをバス経路矩形情報記憶部Ｄ９より削除する（Ｓ５−５−３）。続いて、配線プラン生成部１１は、着目バスのバス情報Ｂのバス経路矩形リストｓＰより当該バス経路矩形情報ＢＲへのリンクを削除する（Ｓ５−５−４）。
【０５３８】
続いて、図９６のステップＳ５−８の詳細について説明する。図９８は、部品内に含まれるバス経路矩形情報の削除処理の処理手順を説明するためのフローチャートである。配線プラン生成部１１は、着目バスのバス情報Ｂの経路矩形リストｓＰにリンクされている各バス経路矩形情報ＢＲについてステップＳ５−８−５〜Ｓ５−８−１１を、着目バスのバス情報Ｂの接続対象部品群ｐａｒｔｓの要素ごとに実行する（Ｓ５−８−１〜Ｓ５−８−４、Ｓ５−８−１０、Ｓ５−８−１１）。着目バスのバス情報Ｂの接続対象部品群ｐａｒｔｓの要素ごととは、着目バスによって接続される二つの部品ごとを意味する。
【０５３９】
ステップＳ５−８−５において、配線プラン生成部１１は、処理対象の部品の領域が、処理対象のバス経路矩形情報ＢＲに係る矩形を包含しているか否かを判定する。当該判定は、当該部品に係る部品情報ＰＩｎｆｏ（図７）の部品配置座標ｌｏｃ及び部品サイズに基づいて特定される矩形が、当該バス経路矩形情報ＢＲの始点座標及び終点座標に基づいて特定される矩形を含むか否かに基づいて行われる。
【０５４０】
当該部品の領域が当該バス矩形情報ＢＲに係る矩形を包含している場合（Ｓ５−８−５でＹｅｓ）、配線プラン生成部１１は、当該バス経路矩形情報ＢＲをバス経路矩形情報記憶部Ｄ９より削除する（Ｓ５−８−６）。続いて、配線プラン生成部１１は、着目バスのバス情報Ｂのバス経路矩形リストｓＰより当該バス経路矩形情報ＢＲへのリンクを削除する（Ｓ５−８−７）。
【０５４１】
一方、当該部品の領域が当該バス矩形情報ＢＲに係る矩形を包含していない場合（Ｓ５−８−５でＮｏ）、配線プラン生成部１１は、当該バス経路矩形情報ＢＲに係る矩形の一部が当該部品の領域と重複しているか否かを判定する（Ｓ５−８−８）。当該判定については、ステップＳ５−８−５における判定方法より自明であるためその詳細は省略する。
【０５４２】
当該バス経路矩形情報ＢＲに係る矩形の一部が当該部品の領域と重複している場合（Ｓ５−８−８でＹｅｓ）、配線プラン生成部１１は、当該バス矩形情報ＢＲに係る矩形を当該部品の内側に係る部分と外側に係る部分とに分割し、外側に係る部分を当該バス矩形情報ＢＲとする（Ｓ５−８−９）。すなわち、当該バス矩形情報ＢＲの始点座標又は終点座標が外側に係る部分を示す値に更新される。
【０５４３】
一方、当該バス経路矩形情報ＢＲに係る矩形の一部が当該部品の領域と重複していない場合（Ｓ５−８−８でＮｏ）、配線プラン生成部１１は、当該部品に関しては、当該バス矩形情報ＢＲの更新は行わない。なお、この場合、当該バス矩形情報ＢＲに係る矩形は、当該部品の外側に有る。
【０５４４】
続いて、図９６のステップＳ５−９の詳細について説明する。図９９は、引き出し線の障害物としての登録処理の処理手順を説明するためのフローチャートである。
【０５４５】
ステップＳ５−９−１において、配線プラン生成部１１は、バスＩＤ（ｂｕｓ）の値が着目バスのバスＩＤと一致する引き出し経路データｅＰａｔｈ（図９３）を抽出する。続いて、配線プラン生成部１１は、抽出された引き出し経路データｅＰａｔｈごとにステップＳ５−９−３〜Ｓ５−９−８を実行する（Ｓ５−９−１、Ｓ５−９−２、Ｓ５−９−９）。
【０５４６】
ステップＳ５−９−３において、配線プラン生成部１１は、処理対象の引き出し経路データｅＰａｔｈ（着目引き出し経路データｅＰａｔｈ）の層番号（ｌａｙｅｒ）を変数ｌａｙｅｒに代入し、部品ＩＤ（ｐａｒｔ）を変数ｐａｒｔＩＤに代入する。なお、変数ｌａｙｅｒに係る層を着目層ｌａｙｅｒといい、変数ｐａｒｔＩＤに係る部品を着目部品ｐａｒｔＩＤという。
【０５４７】
続いて、配線プラン生成部１１は、着目部品ｐａｒｔＩＤの部品情報ＰＩｎｆｏ（図７）の部品配置情報ｌｏｃのｘ座標値、ｙ座標値をそれぞれ変数ＰｒｔＸ、変数ＰｒｔＹに代入する（Ｓ５−９−４）。
【０５４８】
続いて、配線プラン生成部１１は、着目部品ｐａｒｔＩＤの部品情報ＰＩｎｆｏのｘ方向のピンピッチＩｘを２で除した値を変数ｐｉｔＸに代入し、ｙ方向のピンピッチＩｙを２で除した値を変数ｐｉｔＹに代入する（Ｓ５−９−５）。
【０５４９】
続いて、配線プラン生成部１１は、ＰｒｔＸに着目部品ｐａｒｔＩＤの部品情報Ｐｎｆｏの左上ピン座標（ｏｆｆｘ）にＰｒｔＸを加算し、ｐｉｔＸを減算した値を変数ｏｒｇＣｅｌｌＸに代入する。また、配線プラン生成部１１は、ＰｒｔＹに着目部品ｐａｒｔＩＤの部品情報Ｐｎｆｏの左上ピン座標（ｏｆｆｙ）にＰｒｔＹを加算し、ｐｉｔＹを減算した値を変数ｏｒｇＣｅｌｌＹに代入する。すなわち、ｏｒｇＣｅｌｌＸ及びｏｒｇＣｅｌｌＹによって示される座標値は、着目部品の西端及び北端から、ピン間の半分だけ東側及び南側にずれた位置の実寸系の座標値である。当該座標値は、セル行列における１行１列のセルの実寸系の代表座標値とされる。
【０５５０】
続いて、配線プラン生成部１１は、着目引き出し経路データｅＰａｔｈの経路線分リスト（ｓｅｇＬｉｓｔ）を変数ｓｅｇＬｉｓｔに代入する（Ｓ５−９−７）。以下、変数ｓｅｇＬｉｓｔに係るセル系線分データ（図９２）のリストを、着目経路線分リストｓｅｇＬｉｓｔという。
【０５５１】
続いて、配線プラン生成部１１は、着目経路線分リストｓｅｇＬｉｓｔに含まれるセル系線分データごとに当該セル系線分データによって示される線分についてセル座標系から実寸系への座標変換を行い、障害物情報記憶部Ｄ２への記録（登録）を行う（Ｓ５−９−８）。
【０５５２】
具体的には、処理対象とされたセル系線分データｓｅｇＰのネットＩＤ（ｓｅｇＰ−＞ｎｅｔＩＤ）と存在層（ｓｅｇＰ−＞ｌａｙｅｒ）をみて、ｓｅｇＰを配線化したときに使うべき線幅ＷをＷＲｕｌｅから引きあて、その半分の幅をＷ２とする。ｓｅｇＰが縦線の場合、処理対象とされたセル系線分データｓｅｇＰの始点列番号から１を減じた値にｐｉｔＸ（ｘ方向のピン間）を乗じた値をｏｒｇＣｅｌｌＸに加算することにより、当該セル系線分データに係る線分の始点の実寸系におけるｘ座標値が算出され、変数ｘに代入される。
【０５５３】
続いて、障害物情報記憶部Ｄ２（図６）に新たなレコードを一つ生成される。続いて、当該レコードの開始座標Ｓのｘ座標値にｘから線幅の半分（Ｗ２）減じた値が代入される。また、当該レコードの終了座標Ｅのｘ座標値にｘへ線幅の半分（Ｗ２）足した値が代入される。また、当該レコードの開始座標Ｓのｙ座標値は、ｓｅｇＰ−＞ｙ１とｓｅｇＰ−＞ｙ２の小さい方の値から１減じた値にｐｉｔＹ（ｙ方向のピン間）を乗じた値をｏｒｇＣｅｌｌＹに加算しＷ２減ずることにより計算され、ｙの値が代入される。また、当該レコードの終了座標Ｅのｙ座標値は、ｓｅｇＰ−＞ｙ１とｓｅｇＰ−＞ｙ２の大きい方の値から１減じた値にｐｉｔＹ（ｙ方向のピン間）を乗じた値をｏｒｇＣｅｌｌＹに加算しＷ２足すことにより計算され、ｙの値が代入される。更に、当該レコードの層Ｌに、ｌａｙｅｒの値が代入される。
ｓｅｇＰが横線の場合の障害物情報生成処理についても同様である。
ｓｅｇＰが斜め線の場合の障害物情報生成処理については、１つのｓｅｇＰをセル系座標の１メモリ毎に分割して、複数の障害物情報にしている。座標変換の方法は縦線や横線のときと同様である。
【０５５４】
これにより、当該線分は、配線領域における障害物として登録されたことになる。
【０５５５】
以上で、ステップＳ５に関する詳細な説明について終了する。続いて、図３のステップＳ７の配線プラン出力部１３による処理手順について説明する。
【０５５６】
図１００は、確定された配線プランの出力処理の処理手順を説明するためのフローチャートである。ここでいう出力とは、バス情報記憶部Ｄ５における引出線分リストｅｓｃＳへの登録をいう。配線プラン出力部１３は、バス経路が確定されたバスごとにステップＳ７−３〜Ｓ７−７を実行する（Ｓ７−１、Ｓ７−２、Ｓ７−８）。
【０５５７】
ステップＳ７−３において、配線プラン出力部１３は、バスＩＤ（ｂｕｓ）の値が処理対象のバス（着目バス）のバスＩＤと一致する引き出し経路データｅＰａｔｈ（図９３）を抽出する。続いて、配線プラン出力部１３は、抽出された引き出し経路データｅＰａｔｈごとにステップＳ７−４及びＳ７−５を実行する（Ｓ７−３、Ｓ７−６、Ｓ７−７）。
【０５５８】
ステップＳ７−４において、配線プラン出力部１３は、処理対象の引き出し経路データｅＰａｔｈを実寸系線分データのリストに変換する。
【０５５９】
図１０１は、実寸系線分データの構成例を示す図である。同図に示されるように、実寸系線分データは、始点ｘ座標（ｘ１）、始点ｙ座標（ｙ１）、終点ｘ座標（ｘ２）、終点ｙ座標（ｙ２）、層番号（ｌａｙｅｒ）、バスＩＤ（ｂｕｓ）、部品ＩＤ（ｐａｒｔ）、ネットＩＤ（ｎｅｔＩＤ）、次データ（ｎｅｘｔ）等のメンバ変数（データ項目）を有する。
【０５６０】
始点ｘ座標（ｘ１）は、線分の始点の実寸系のｘ座標値である。始点ｙ座標（ｙ１）は、線分の始点の実寸系のｙ座標値である。終点ｘ座標（ｘ２）は、線分の終点の実寸系のｘ座標値である。終点ｙ座標（ｙ２）は、線分の終点の実寸系のｙ座標値である。層番号（ｌａｙｅｒ）は、線分が対応する配線が属する層の層番号である。バスＩＤ（ｂｕｓ）は、線分が対応する配線が属するバスのバスＩＤである。部品ＩＤ（ｐａｒｔ）は、線分が対応する配線が属する部品の部品ＩＤである。ネットＩＤ（ｎｅｔＩＤ）は、線分が対応する配線が属するネットのネットＩＤである。次データ（ｎｅｘｔ）は、実寸系線分データのリスト構造を形成するための、次の実寸系線分データへのポインタである。
【０５６１】
このように、実寸系線分データは、実寸系の座標値によって線分を示すものである。したがって、ステップＳ７−４では、配線の引き出し経路を示す線分についてセル行列座標系から実寸系への座標変換が行われる。
【０５６２】
続いて、配線プラン出力部１３は、ステップＳ７−４において生成された実寸系線分データのリストの最後尾の実寸系線分データの次データ（ｎｅｘｔ）に、着目バスのバス情報Ｂの引出線分リストｅｓｃＳに既に登録されている実寸系線分データのリストの先頭のポインタを代入する。また、配線プラン出力部１３は、ステップＳ７−４において生成された実寸系線分データのリストの先頭のポインタを着目バスのバス情報Ｂの引出線分リストｅｓｃＳに登録する（Ｓ７−６）。
【０５６３】
続いて、ステップＳ７−４の詳細について説明する。図１０２は、引き出し経路データから実寸系線分データのリストへの変換処理の処理手順を説明するためのフローチャートである。
【０５６４】
同図において、ステップＳ７−４−１〜Ｓ７−４−５は、図９９のステップＳ５−９−３〜Ｓ５−９−７とほぼ同様である。便宜上、変数名も一致させている。但し、ステップＳ７−４−１において、処理対象とされている引き出し経路線分データｅＰａｔｈ（着目引き出し経路線分データｅＰａｔｈ）のバスＩＤ（ｂｕｓ）の値が、変数ｂｕｓＩＤに代入される。
【０５６５】
ステップＳ７−４−５に続いて、配線プラン出力部１３は、着目経路線分リストｓｅｇＬｉｓｔのリスト長（セル系線分データの数）を変数ｓｅｇＮｕｍに代入する（Ｓ７−４−６）。続いて、配線プラン出力部１３は、ｓｅｇＮｕｍ分の実寸系線分データを連続で（配列として）生成する（Ｓ７−４−７）。
【０５６６】
続いて、配線プラン出力部１３は、着目経路線分リストｓｅｇＬｉｓｔに含まれるセル系線分データごとに実寸系線分データへの変換処理を行う（Ｓ７−４−８）。
【０５６７】
処理対象とされたセル系線分データの始点及び終点から、実寸系線分データへの始点及び終点への変換は、図９９のステップＳ５−９−８において説明した通りである。また、実寸系線分データの層番号（ｌａｙｅｒ）、バスＩＤ（ｂｕｓ）、部品ＩＤ（ｐａｒｔ）、ネットＩＤ（ｎｅｔＩＤ）のそれぞれに、変数ｌａｙｅｒ、ｂｕｓＩＤ、ｐａｒｔＩＤ、ｎｅｔＩＤの値が代入される。更に、当該実寸系線分データの次データ（ｎｅｘｔ）に、連続で生成された次の実寸系線分データへのポインタが代入される。但し、最後尾の実寸系線分データの次データ（ｎｅｘｔ）にはＮＵＬＬが代入される。
【０５６８】
以上で、ステップＳ７に関する詳細な説明は終了する。すなわち、図３における全ステップの説明は終了する。
【０５６９】
上述したように、本実施の形態によれば、バスの配線経路について、バスに属するネットごとに引き出しの可能性を検証して当該配線経路の妥当性を判定する。したがって、実際の詳細配線において使用される引き出し領域の形に近い形状に基づいてバスの配線経路を生成することができる。
【０５７０】
よって、バスの占有領域が、実際に詳細配線を行う際に必要となる配線引き出し部の占有領域に比べて過大に又は過小に見積もられている状態でバスの配線経路が確定される可能性を低減させることができる。その結果、少ない配線層で高密度な配線の可能性を高めることができる。
【０５７１】
また、実際の配線段階で引き出し不能になるようなバス配線経路を、修正が容易な段階で検出し、再生成することができる。したがって詳細配線が進んでからバスの配線経路を修正するような手戻りを回避することができ、配線設計時間の短縮化を期待することができる。
【０５７２】
また、本実施の形態の配線設計支援装置１０によれば、引き出し配線経路の収容性を保障した容量を有する有向枝によって構成される有向グラフを生成し、当該有向グラフに基づいて経路探索を行い、更に概略経路を確定することにより、ピン間の配線収容本数の上限を正しく表現することができる。よって、概略配線時に許容数以上の概略経路が作成されてしまうことを回避でき、概略経路を詳細化したときにルール違反が生じて配線ができないといった事態の発生を防止することができる。特に、水平又は垂直ピン間のみならず、対角ピン間についてもボトルネックを配置するようにしたことにより、対角ピン間における配線経路の収容性についても適切に保障される。同様に、空きピンについてもボトルネックを配置するようにしたことにより、空きピン箇所についても配線経路の収容が適切に保障される。
【０５７３】
また、各概略経路には各配線の相対的な位置関係を示す情報として引き出し順位が付与されている。すなわち、引き出し順位に従ってピン間等における配線の位置を決定することにより、ピン間等において各配線が交差（ショート）してしまうことが防止される。具体的には、本実施の形態の場合であれば、引き出し順位が若い配線を北側又は東側に貼り付けるようにすればよい。そうすることで、各配線のクロスが防止される。
【０５７４】
以上、本発明の実施例について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【０５７５】
以上の説明に関し、更に以下の項を開示する。
（付記１）
コンピュータが、
一以上の配線層を含む配線領域に対して、それぞれ図形によって表現された複数のバスの経路を前記バス間で交差しないように生成する配線プラン生成手順と、
前記バスごとに、当該バスが接続される部品内からの当該バスの所属ネットごとの配線の引き出しの可否の検証を行う妥当性判定手順と、
前記妥当性判定手順によって全ての前記所属ネットが引き出せることが確認された前記バスの前記所属ネットを示す図形を前記配線領域に記録する配線プラン確定手順とを実行し、
前記妥当性判定手順によって少なくとも一部の前記所属ネットが引き出せないことが確認された前記バスについて前記配線プラン生成手順を再実行する配線設計支援方法。
（付記２）
前記妥当性判定手順は、
前記部品の少なくとも各ピン、各水平ピン間、各垂直ピン間、及び各対角ピン間を前記所属ネットの配線のボトルネック箇所とし、前記各ボトルネック箇所に水平ピン間、垂直ピン間、又は対角ピン間に応じた配線容量を付与するボトルネック配置手順と、
前記ボトルネック箇所ごとに入り口ノード及び出口ノードの二つのノードを生成するノード生成手順と、
それぞれの前記ボトルネック箇所について、同一の前記ボトルネック箇所内の前記入り口ノードから前記出口ノードへの有向枝を生成し、垂直又は水平方向に隣接する前記ボトルネック箇所間において一方の前記出口ノードから他方の前記入り口ノードへの有向枝を相互に生成し、前記対角ピン間のボトルネック箇所と当該対角ピン間の全ての斜め隣の前記ボトルネック箇所との間において一方の前記出口ノードから他方の前記入り口ノードへの有向枝を相互に生成し、生成された全ての有向枝に、当該有向枝によって接続される前記ノードが属する前記ボトルネック箇所に付与された前記配線容量の最小値を枝容量として付与する有向グラフ生成手順と
前記所属ネットごとに、配線の引き出し対象のピンに対応するボトルネック箇所の前記入り口ノードから配線の出口に係る前記ボトルネック箇所の前記出口ノードまでの間において、１以上の前記枝容量が付与された前記有向枝を使用して最短経路を探索する経路探索手順と、
探索された経路に使用された各有向枝に、経路に使用された使用回数を付与する使用回数付与手順と、
前記経路探索手順によって最短経路が探索された所属ネットの数に基づいて前記バスの配線の成否を判定する配線成否判定手順とを有し、
前記経路探索手順は、前記使用回数が前記枝容量を超えないように前記最短経路を探索する付記１記載の配線設計支援方法。
（付記３）
前記妥当性判定手順は、
前記ボトルネック箇所の相対的な位置関係において外周に位置し前記使用回数が１以上の前記有向枝を前記入り口ノードから前記出口ノードへの有向枝として有する前記ボトルネック箇所の該出口ノードから前記引き出し対象のピンに対応するボトルネック箇所の出口ノードまでを前記使用回数が１以上の有向枝に沿って遡ることによって形成される経路を配線の概略経路として確定する概略経路確定手順を有し、
前記概略経路確定手順は、遡られた前記有向枝の前記使用回数を当該有向枝の遡りの回数に応じて減ずる付記２記載の配線設計支援方法。
（付記４）
前記概略経路確定手順は、前記外周に位置し前記使用回数が１以上の前記有向枝を前記入り口ノードから前記出口ノードへの有向枝として有する前記ボトルネック箇所が複数有るときは、前記外周における一定方向に従って、遡りを開始する前記ボトルネック箇所を順番に選択し、前記一定方向に応じて、遡りにおいて優先させる前記有向枝を選択する付記３記載の配線設計支援方法。
（付記５）
前記妥当性判定手順は、前記経路探索手順より前に、
前記配線の引き出しの可否の検証対象とされている第一の前記バス以外の第二の前記バスの所属ネットの引き出し対象のピンのピン間の第一の前記ボトルネック箇所、前記第二のバスの前記配線の出口の第二の前記ボトルネック箇所、及び前記第一のボトルネック箇所と前記第二のボトルネック箇所とを接続する前記ボトルネック箇所の前記配線容量を一時的に０とする防護壁生成手順を有する付記２乃至４いずれか一項記載の配線設計支援方法。
（付記６）
前記防護壁生成手順は、前記第二のボトルネック箇所に付与されている容量の合計が、当該第二のボトルネック箇所を前記配線の出口とする前記バスの所属ネット数に対して不足する場合は、前記第二のボトルネック箇所を追加する付記５記載の配線設計支援方法。
（付記７）
コンピュータに、
一以上の配線層を含む配線領域に対して、それぞれ図形によって表現された複数のバスの経路を前記バス間で交差しないように生成する配線プラン生成手順と、
前記バスごとに、当該バスが接続される部品内からの当該バスの所属ネットごとの配線の引き出しの可否の検証を行う妥当性判定手順と、
前記妥当性判定手順によって全ての前記所属ネットが引き出せることが確認された前記バスの前記所属ネットを示す図形を前記配線領域に記録する配線プラン確定手順とを実行させ、
前記妥当性判定手順によって少なくとも一部の前記所属ネットが引き出せないことが確認された前記バスについて前記配線プラン生成手順を再実行する配線設計支援プログラム。
（付記８）
前記妥当性判定手順は、
前記部品の少なくとも各ピン、各水平ピン間、各垂直ピン間、及び各対角ピン間を前記所属ネットの配線のボトルネック箇所とし、前記各ボトルネック箇所に水平ピン間、垂直ピン間、又は対角ピン間に応じた配線容量を付与するボトルネック配置手順と、
前記ボトルネック箇所ごとに入り口ノード及び出口ノードの二つのノードを生成するノード生成手順と、
それぞれの前記ボトルネック箇所について、同一の前記ボトルネック箇所内の前記入り口ノードから前記出口ノードへの有向枝を生成し、垂直又は水平方向に隣接する前記ボトルネック箇所間において一方の前記出口ノードから他方の前記入り口ノードへの有向枝を相互に生成し、前記対角ピン間のボトルネック箇所と当該対角ピン間の全ての斜め隣の前記ボトルネック箇所との間において一方の前記出口ノードから他方の前記入り口ノードへの有向枝を相互に生成し、生成された全ての有向枝に、当該有向枝によって接続される前記ノードが属する前記ボトルネック箇所に付与された前記配線容量の最小値を枝容量として付与する有向グラフ生成手順と
前記所属ネットごとに、配線の引き出し対象のピンに対応するボトルネック箇所の前記入り口ノードから配線の出口に係る前記ボトルネック箇所の前記出口ノードまでの間において、１以上の前記枝容量が付与された前記有向枝を使用して最短経路を探索する経路探索手順と、
探索された経路に使用された各有向枝に、経路に使用された使用回数を付与する使用回数付与手順と、
前記経路探索手順によって最短経路が探索された所属ネットの数に基づいて前記バスの配線の成否を判定する配線成否判定手順とを有し、
前記経路探索手順は、前記使用回数が前記枝容量を超えないように前記最短経路を探索する付記７記載の配線設計支援プログラム。
（付記９）
前記妥当性判定手順は、
前記ボトルネック箇所の相対的な位置関係において外周に位置し前記使用回数が１以上の前記有向枝を前記入り口ノードから前記出口ノードへの有向枝として有する前記ボトルネック箇所の該出口ノードから前記引き出し対象のピンに対応するボトルネック箇所の出口ノードまでを前記使用回数が１以上の有向枝に沿って遡ることによって形成される経路を配線の概略経路として確定する概略経路確定手順を有し、
前記概略経路確定手順は、遡られた前記有向枝の前記使用回数を当該有向枝の遡りの回数に応じて減ずる付記８記載の配線設計支援プログラム。
（付記１０）
前記概略経路確定手順は、前記外周に位置し前記使用回数が１以上の前記有向枝を前記入り口ノードから前記出口ノードへの有向枝として有する前記ボトルネック箇所が複数有るときは、前記外周における一定方向に従って、遡りを開始する前記ボトルネック箇所を順番に選択し、前記一定方向に応じて、遡りにおいて優先させる前記有向枝を選択する付記９記載の配線設計支援プログラム。
（付記１１）
前記妥当性判定手順は、前記経路探索手順より前に、
前記配線の引き出しの可否の検証対象とされている第一の前記バス以外の第二の前記バスの所属ネットの引き出し対象のピンのピン間の第一の前記ボトルネック箇所、前記第二のバスの前記配線の出口の第二の前記ボトルネック箇所、及び前記第一のボトルネック箇所と前記第二のボトルネック箇所とを接続する前記ボトルネック箇所の前記配線容量を一時的に０とする防護壁生成手順を有する付記８乃至１０いずれか一項記載の配線設計支援プログラム。
（付記１２）
前記防護壁生成手順は、前記第二のボトルネック箇所に付与されている容量の合計が、当該第二のボトルネック箇所を前記配線の出口とする前記バスの所属ネット数に対して不足する場合は、前記第二のボトルネック箇所を追加する付記１１記載の配線設計支援プログラム。
（付記１３）
一以上の配線層を含む配線領域に対して、それぞれ図形によって表現された複数のバスの経路を前記バス間で交差しないように生成する配線プラン生成手段と、
前記バスごとに、当該バスが接続される部品内からの当該バスの所属ネットごとの配線の引き出しの可否の検証を行う妥当性判定手段と、
前記妥当性判定手段によって全ての前記所属ネットが引き出せることが確認された前記バスの前記所属ネットを示す図形を前記配線領域に記録する配線プラン確定手段とを実行し、
前記妥当性判定手段によって少なくとも一部の前記所属ネットが引き出せないことが確認された前記バスについて前記配線プラン生成手段を再実行する配線設計支援装置。
（付記１４）
前記妥当性判定手段は、
前記部品の少なくとも各ピン、各水平ピン間、各垂直ピン間、及び各対角ピン間を前記所属ネットの配線のボトルネック箇所とし、前記各ボトルネック箇所に水平ピン間、垂直ピン間、又は対角ピン間に応じた配線容量を付与するボトルネック配置手段と、
前記ボトルネック箇所ごとに入り口ノード及び出口ノードの二つのノードを生成するノード生成手段と、
それぞれの前記ボトルネック箇所について、同一の前記ボトルネック箇所内の前記入り口ノードから前記出口ノードへの有向枝を生成し、垂直又は水平方向に隣接する前記ボトルネック箇所間において一方の前記出口ノードから他方の前記入り口ノードへの有向枝を相互に生成し、前記対角ピン間のボトルネック箇所と当該対角ピン間の全ての斜め隣の前記ボトルネック箇所との間において一方の前記出口ノードから他方の前記入り口ノードへの有向枝を相互に生成し、生成された全ての有向枝に、当該有向枝によって接続される前記ノードが属する前記ボトルネック箇所に付与された前記配線容量の最小値を枝容量として付与する有向グラフ生成手段と
前記所属ネットごとに、配線の引き出し対象のピンに対応するボトルネック箇所の前記入り口ノードから配線の出口に係る前記ボトルネック箇所の前記出口ノードまでの間において、１以上の前記枝容量が付与された前記有向枝を使用して最短経路を探索する経路探索手段と、
探索された経路に使用された各有向枝に、経路に使用された使用回数を付与する使用回数付与手段と、
前記経路探索手段によって最短経路が探索された所属ネットの数に基づいて前記バスの配線の成否を判定する配線成否判定手段とを有し、
前記経路探索手段は、前記使用回数が前記枝容量を超えないように前記最短経路を探索する付記１３記載の配線設計支援装置。
（付記１５）
前記妥当性判定手段は、
前記ボトルネック箇所の相対的な位置関係において外周に位置し前記使用回数が１以上の前記有向枝を前記入り口ノードから前記出口ノードへの有向枝として有する前記ボトルネック箇所の該出口ノードから前記引き出し対象のピンに対応するボトルネック箇所の出口ノードまでを前記使用回数が１以上の有向枝に沿って遡ることによって形成される経路を配線の概略経路として確定する概略経路確定手段を有し、
前記概略経路確定手段は、遡られた前記有向枝の前記使用回数を当該有向枝の遡りの回数に応じて減ずる付記１４記載の配線設計支援装置。
（付記１６）
前記概略経路確定手段は、前記外周に位置し前記使用回数が１以上の前記有向枝を前記入り口ノードから前記出口ノードへの有向枝として有する前記ボトルネック箇所が複数有るときは、前記外周における一定方向に従って、遡りを開始する前記ボトルネック箇所を順番に選択し、前記一定方向に応じて、遡りにおいて優先させる前記有向枝を選択する付記１５記載の配線設計支援装置。
（付記１７）
前記妥当性判定手段は、
前記経路探索手段による最短経路の探索より前に、前記配線の引き出しの可否の検証対象とされている第一の前記バス以外の第二の前記バスの所属ネットの引き出し対象のピンのピン間の第一の前記ボトルネック箇所、前記第二のバスの前記配線の出口の第二の前記ボトルネック箇所、及び前記第一のボトルネック箇所と前記第二のボトルネック箇所とを接続する前記ボトルネック箇所の前記配線容量を一時的に０とする防護壁生成手段を有する付記１４乃至１６いずれか一項記載の配線設計支援装置。
（付記１８）
前記防護壁生成手段は、前記第二のボトルネック箇所に付与されている容量の合計が、当該第二のボトルネック箇所を前記配線の出口とする前記バスの所属ネット数に対して不足する場合は、前記第二のボトルネック箇所を追加する付記５記載の配線設計支援装置。
【符号の説明】
【０５７６】
１０              配線設計支援装置
１１              配線プラン生成部
１２              妥当性判定部
１３              配線プラン出力部
１００            ドライブ装置
１０１            記録媒体
１０２            補助記憶装置
１０３            メモリ装置
１０４            ＣＰＵ
１０５            インタフェース装置
１０６            表示装置
１０７            入力装置
１２１            引き出し問題生成部
１２２            引き出し配線部
１２１１          有向グラフ生成部
１２１１ａ        セル生成部
１２１１ｂ        セル容量算出部
１２１１ｃ        ノード生成部
１２１１ｄ        有向枝生成部
１２１２          防護壁生成部
１２２１          経路探索部
１２２１ａ        最短経路探索部
１２２２ｂ        バックトレース部
１２２２          概略経路確定部
１２２３          引き出し成否判定部
Ｂ                バス
Ｄ１              配線領域情報記憶部
Ｄ２              障害物情報記憶部
Ｄ３              部品情報記憶部
Ｄ４              ピン情報記憶部
Ｄ５              バス情報記憶部
Ｄ６              ネット情報記憶部
Ｄ７              配線幅情報記憶部
Ｄ８              間隙ルール情報記憶部
Ｄ９              バス経路矩形情報記憶部
Ｄ１０            配線脱出口情報記憶部
【図１】
0005531731.tif 000002
【図２】
0005531731.tif 000003
【図３】
0005531731.tif 000004
【図４】
0005531731.tif 000005
【図５】
0005531731.tif 000006
【図６】
0005531731.tif 000007
【図７】
0005531731.tif 000008
【図８】
0005531731.tif 000009
【図９】
0005531731.tif 000010
【図１０】
0005531731.tif 000011
【図１２】
0005531731.tif 000012
【図１４】
0005531731.tif 000013
【図１５】
0005531731.tif 000014
【図１６】
0005531731.tif 000015
【図１７】
0005531731.tif 000016
【図１９】
0005531731.tif 000017
【図２０】
0005531731.tif 000018
【図２２】
0005531731.tif 000019
【図２４】
0005531731.tif 000020
【図２６】
0005531731.tif 000021
【図２７】
0005531731.tif 000022
【図２８】
0005531731.tif 000023
【図２９】
0005531731.tif 000024
【図３０】
0005531731.tif 000025
【図３１】
0005531731.tif 000026
【図３２】
0005531731.tif 000027
【図３３】
0005531731.tif 000028
【図３４】
0005531731.tif 000029
【図３５】
0005531731.tif 000030
【図３６】
0005531731.tif 000031
【図３７】
0005531731.tif 000032
【図３８】
0005531731.tif 000033
【図３９】
0005531731.tif 000034
【図４０】
0005531731.tif 000035
【図４１】
0005531731.tif 000036
【図４２】
0005531731.tif 000037
【図４３】
0005531731.tif 000038
【図４４】
0005531731.tif 000039
【図４５】
0005531731.tif 000040
【図４６】
0005531731.tif 000041
【図４７】
0005531731.tif 000042
【図４８】
0005531731.tif 000043
【図４９】
0005531731.tif 000044
【図５０】
0005531731.tif 000045
【図５１】
0005531731.tif 000046
【図５２】
0005531731.tif 000047
【図５３】
0005531731.tif 000048
【図５５】
0005531731.tif 000049
【図５７】
0005531731.tif 000050
【図５８】
0005531731.tif 000051
【図５９】
0005531731.tif 000052
【図６０】
0005531731.tif 000053
【図６１】
0005531731.tif 000054
【図６２】
0005531731.tif 000055
【図６３】
0005531731.tif 000056
【図６４】
0005531731.tif 000057
【図６５】
0005531731.tif 000058
【図６６】
0005531731.tif 000059
【図６７】
0005531731.tif 000060
【図６８】
0005531731.tif 000061
【図６９】
0005531731.tif 000062
【図７０】
0005531731.tif 000063
【図７１】
0005531731.tif 000064
【図７２】
0005531731.tif 000065
【図７５】
0005531731.tif 000066
【図７６】
0005531731.tif 000067
【図７７】
0005531731.tif 000068
【図７８】
0005531731.tif 000069
【図７９】
0005531731.tif 000070
【図８０】
0005531731.tif 000071
【図８１】
0005531731.tif 000072
【図８２】
0005531731.tif 000073
【図８３】
0005531731.tif 000074
【図８４】
0005531731.tif 000075
【図８５】
0005531731.tif 000076
【図８６】
0005531731.tif 000077
【図８７】
0005531731.tif 000078
【図８８】
0005531731.tif 000079
【図８９】
0005531731.tif 000080
【図９０】
0005531731.tif 000081
【図９１】
0005531731.tif 000082
【図９２】
0005531731.tif 000083
【図９３】
0005531731.tif 000084
【図９４】
0005531731.tif 000085
【図９５】
0005531731.tif 000086
【図９６】
0005531731.tif 000087
【図９７】
0005531731.tif 000088
【図９８】
0005531731.tif 000089
【図９９】
0005531731.tif 000090
【図１００】
0005531731.tif 000091
【図１０１】
0005531731.tif 000092
【図１０２】
0005531731.tif 000093
【図１１】
0005531731.tif 000094
【図１３】
0005531731.tif 000095
【図１８】
0005531731.tif 000096
【図２１】
0005531731.tif 000097
【図２３】
0005531731.tif 000098
【図２５】
0005531731.tif 000099
【図５４】
0005531731.tif 000100
【図５６】
0005531731.tif 000101
【図７３】
0005531731.tif 000102
【図７４】
0005531731.tif 000103