(57)【要約】【課題】集積回路パッケージにおける配線経路の作成を適切に支援する。【解決手段】集積回路パッケージの少なくとも各ピン、各水平ピン間、各垂直ピン間、及び各対角ピン間を配線のボトルネック箇所とし、各ボトルネック箇所に配線容量を付与する手順と、ボトルネック箇所ごとに入り口ノード及び出口ノードの二つのノードを生成する手順と、それぞれのボトルネック箇所について、ボトルネック箇所内の入り口ノードから出口ノードへの有向枝を生成し、隣接するボトルネック箇所間において一方の出口ノードから他方の入り口ノードへの有向枝を相互に生成し、対角ピン間のボトルネック箇所と当該対角ピン間の全ての斜め隣のボトルネック箇所との間において一方の出口ノードから他方の入り口ノードへの有向枝を相互に生成し、生成された全ての有向枝に、ボトルネック箇所に割り当てられた配線容量の最小値を枝容量として付与する手順とを有する。【選択図】図９
2010211753.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータが実行する配線経路作成支援方法であって、
集積回路パッケージの少なくとも各ピン、各水平ピン間、各垂直ピン間、及び各対角ピン間を配線のボトルネック箇所とし、前記各ボトルネック箇所に水平ピン間、垂直ピン間、又は対角ピン間に応じた配線容量を付与するボトルネック配置手順と、
前記ボトルネック箇所ごとに入り口ノード及び出口ノードの二つのノードを生成するノード生成手順と、
それぞれの前記ボトルネック箇所について、同一の前記ボトルネック箇所内の前記入り口ノードから前記出口ノードへの有向枝を生成し、垂直又は水平方向に隣接する前記ボトルネック箇所間において一方の前記出口ノードから他方の前記入り口ノードへの有向枝を相互に生成し、前記対角ピン間のボトルネック箇所と当該対角ピン間の全ての斜め隣の前記ボトルネック箇所との間において一方の前記出口ノードから他方の前記入り口ノードへの有向枝を相互に生成し、生成された全ての有向枝に、当該有向枝によって接続される前記ノードが属する前記ボトルネック箇所に付与された前記配線容量の最小値を枝容量として付与する有向グラフ生成手順とを有する配線経路作成支援方法。
【請求項２】
前記ボトルネック配置手順は、前記集積回路パッケージに空きピンが有る場合は空きピンをもボトルネック箇所とし、当該ボトルネック箇所に空きピンに応じた配線容量を付与し、
前記水平ピン間、前記垂直ピン間、及び前記対角ピン間を構成するピンには、空きピンも含まれる請求項１記載の配線経路作成支援方法。
【請求項３】
前記ボトルネック配置手順は、前記集積回路パッケージにおいて配線の出口とされている部分に係る前記ボトルネック箇所を除いて、前記ボトルネック箇所の相対的な位置関係において外周に位置するボトルネック箇所の前記容量に０を付与する請求項１又は２記載の配線経路作成支援方法。
【請求項４】
引き出し対象の配線ごとに、配線の引き出し対象のピンに対応するボトルネック箇所の前記入り口ノードから配線の出口に係る前記ボトルネック箇所の前記出口ノードまでの間において、１以上の前記枝容量が付与された前記有向枝を使用して最短経路を探索する経路探索手順と、
探索された経路に使用された各有向枝に、経路に使用された使用回数を付与する使用回数付与手順とを有し、
前記経路探索手順は、前記使用回数が前記枝容量を超えないように前記最短経路を探索する請求項１乃至３いずれか一項記載の配線経路作成支援方法。
【請求項５】
前記ボトルネック箇所の相対的な位置関係において外周に位置し前記使用回数が１以上の前記有向枝を前記入り口ノードから前記出口ノードへの有向枝として有する前記ボトルネック箇所の該出口ノードから前記引き出し対象のピンに対応するボトルネック箇所の出口ノードまでを前記使用回数が１以上の有向枝に沿って遡ることによって形成される経路を配線の概略経路として確定する概略経路確定手順を有し、
前記概略経路確定手順は、遡られた前記有向枝の前記使用回数を当該有向枝の遡りの回数に応じて減ずる請求項４記載の配線経路作成支援方法。
【請求項６】
コンピュータに、
集積回路パッケージの少なくとも各ピン、各水平ピン間、各垂直ピン間、及び各対角ピン間を配線のボトルネック箇所とし、前記各ボトルネック箇所に水平ピン間、垂直ピン間、又は対角ピン間に応じた配線容量を付与するボトルネック配置手順と、
前記ボトルネック箇所ごとに入り口ノード及び出口ノードの二つのノードを生成するノード生成手順と、
それぞれの前記ボトルネック箇所について、同一の前記ボトルネック箇所内の前記入り口ノードから前記出口ノードへの有向枝を生成し、垂直又は水平方向に隣接する前記ボトルネック箇所間において一方の前記出口ノードから他方の前記入り口ノードへの有向枝を相互に生成し、前記対角ピン間のボトルネック箇所と当該対角ピン間の全ての斜め隣の前記ボトルネック箇所との間において一方の前記出口ノードから他方の前記入り口ノードへの有向枝を相互に生成し、生成された全ての有向枝に、当該有向枝によって接続される前記ノードが属する前記ボトルネック箇所に付与された前記配線容量の最小値を枝容量として付与する有向グラフ生成手順とを実行させるための配線経路作成支援プログラム。
【請求項７】
集積回路パッケージの少なくとも各ピン、各水平ピン間、各垂直ピン間、及び各対角ピン間を配線のボトルネック箇所とし、前記各ボトルネック箇所に水平ピン間、垂直ピン間、又は対角ピン間に応じた配線容量を付与するボトルネック配置手段と、
前記ボトルネック箇所ごとに入り口ノード及び出口ノードの二つのノードを生成するノード生成手段と、
それぞれの前記ボトルネック箇所について、同一の前記ボトルネック箇所内の前記入り口ノードから前記出口ノードへの有向枝を生成し、垂直又は水平方向に隣接する前記ボトルネック箇所間において一方の前記出口ノードから他方の前記入り口ノードへの有向枝を相互に生成し、前記対角ピン間のボトルネック箇所と当該対角ピン間の全ての斜め隣の前記ボトルネック箇所との間において一方の前記出口ノードから他方の前記入り口ノードへの有向枝を相互に生成し、生成された全ての有向枝に、当該有向枝によって接続される前記ノードが属する前記ボトルネック箇所に付与された前記配線容量の最小値を枝容量として付与する有向グラフ生成手段とを有する配線経路作成支援装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、配線経路作成支援方法、配線経路作成支援プログラム、及び配線経路作成支援装置に関し、特に集積回路パッケージの配線の作成を支援する配線経路作成支援方法、配線経路作成支援プログラム、及び配線経路作成支援装置に関する。
【背景技術】
【０００２】
ＢＧＡ（Ball Grid Array）は、集積回路パッケージの一種である。ＢＧＡは、端子の密度が高いため、Ｉ／Ｏ端子（ピン）の多い集積回路でも小型化できというメリットがある。その一方で、端子の密度の高さゆえ、端子間のスペースが非常に狭く、引き出すべき配線同士で端子間のスペースの取り合いになってしまうという問題がある。斯かる問題は、端子の密度が高くなればなるほど顕著なものとなる。
【０００３】
ところで、集積回路パッケージ同士の配線をプリント配線板（PCB）上で配線する作業や、集積回路パッケージ内部の配線作業は、概略配線と詳細配線とに大別される。概略配線では、各配線がどのピン間を通過するか、及び各配線の相対的な位置関係等が決定される。詳細配線では、概略配線の結果に基づいて、実際の配線経路が決定される。ここでは、概略配線に注目する。なお、以下において、概略配線において作成される配線経路を「概略経路」という。
【０００４】
図１は、従来の概略配線の方法を説明するための図である。同図において、各円はＢＧＡのピンである。同図（Ａ）に示されるように、従来では、配線領域が一定の規則に従って水平及び垂直方向に格子状に分割され、格子に沿って配線の概略経路が作成されていた。なお、図中において点が付されている格子点は概略経路が通過可能な格子点である。
【０００５】
（Ａ）では２本の概略経路が作成された状態であるが、これ以上格子に沿って概略経路を作成することはできない。しかし、詳細配線を考慮して斜め４５度又は１３５の経路を使用すると、（Ｂ）において点線で示されるように３本目の概略経路の作成が可能であることが分かる。
【０００６】
そこで、（Ｃ）に示されるように、ピンの形状を実際よりも小さく削ることにより、概略配線可能な格子点を増加させ、当該格子点を利用して概略配線をやり直されていた。そうすることで、概略配線の段階で斜めの経路に対応する概略経路の作成が行われていた。なお、（Ｄ）は（Ｃ）の概略配線の結果を詳細配線化したものである。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特許第３０６３８２８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、図１に示される方法では、ピンの削り込みの処理が複雑であるという問題があった。また、ピン間の配線許容数の増加に応じて探索する格子点の数が増加し、メモリの消費量や計算量の増加による性能の劣化が著しいという問題があった。
【０００９】
このように、ＢＧＡの端子間に物理的に通せる最大配線本数は、配線ルール、配線が通る場所、周囲のピンの位置関係、及び配線の向きに等により変化するため、空いている場所に対して通せる配線本数を正確に対応付けることは難しい。
【００１０】
本発明は、上記の点に鑑みてなされたものであって、集積回路パッケージ間をPCB上で配線することにおける配線経路の作成を適切に支援することのできる配線経路作成支援方法、配線経路作成支援プログラム、及び配線経路作成支援装置の提供を目的とする。
【課題を解決するための手段】
【００１１】
そこで上記課題を解決するため、配線経路作成支援方法は、集積回路パッケージの少なくとも各ピン、各水平ピン間、各垂直ピン間、及び各対角ピン間を配線のボトルネック箇所とし、前記各ボトルネック箇所に水平ピン間、垂直ピン間、又は対角ピンに応じた配線容量を付与するボトルネック配置手順と、前記ボトルネック箇所ごとに入り口ノード及び出口ノードの二つのノードを生成するノード生成手順と、それぞれの前記ボトルネック箇所について、同一の前記ボトルネック箇所内の前記入り口ノードから前記出口ノードへの有向枝を生成し、垂直又は水平方向に隣接する前記ボトルネック箇所間において一方の前記出口ノードから他方の前記入り口ノードへの有向枝を相互に生成し、前記対角ピン間のボトルネック箇所と当該対角ピン間の全ての斜め隣の前記ボトルネック箇所との間において一方の前記出口ノードから他方の前記入り口ノードへの有向枝を相互に生成し、生成された全ての有向枝に、当該有向枝によって接続される前記ノードが属する前記ボトルネック箇所に割り当てられた前記配線容量の最小値を枝容量として付与する有向グラフ生成手順とを有する。
【００１２】
このような配線経路作成支援方法では、集積回路パッケージ間をPCB上で配線することにおける配線経路の作成を適切に支援することができる。
【発明の効果】
【００１３】
集積回路パッケージ間をPCB上で配線することにおける配線経路の作成を適切に支援することができる。
【図面の簡単な説明】
【００１４】
【図１】従来の概略配線の方法を説明するための図である。
【図２】本発明の実施の形態における配線経路作成支援装置のハードウェア構成例を示す図である。
【図３】本発明の実施の形態における配線経路作成支援装置の機能構成例を示す図である。
【図４】ＢＧＡに設けられたボトルネックのモデル化の例を示す図である。
【図５】配線経路作成支援装置による処理概要を説明するためのフローチャートである。
【図６】有向グラフ生成部によって生成される有向グラフの例を示す図である。
【図７】経路探索部によって探索される経路の例を示す図である。
【図８】経路確定部によって確定された概略経路の例を示す図である。
【図９】有向グラフ生成部による有向グラフの生成処理の処理手順を説明するためのフローチャートである。
【図１０】ボトルネック箇所にセルが生成された状態を示す図である。
【図１１】セルデータの構成例を示す図である。
【図１２】ノードが生成された状態を示す図である。
【図１３】ノードデータの構成例を示す図である。
【図１４】セルの生成処理の処理手順を説明するためのフローチャートである。
【図１５】偶数行偶数列に位置するセルのセルデータに対する処理の処理手順を説明するためのフローチャートである。
【図１６】セルの容量の算出処理の処理手順を説明するためのフローチャートである。
【図１７】配線ルールに登録されているパラメータを説明するための図である。
【図１８】水平方向に隣接するピン間の配線容量の算出処理の処理手順を説明するためのフローチャートである。
【図１９】対角ピン間の配線容量の算出処理の処理手順を説明するためのフローチャートである。
【図２０】空きピンの配線容量の算出処理の処理手順を説明するためのフローチャートである。
【図２１】ノードの生成処理の処理手順を説明するためのフローチャートである。
【図２２】湧き出しノード及び流入ノードの生成処理の処理手順を説明するためのフローチャートである。
【図２３】有向枝の生成処理の処理手順を説明するためのフローチャートである。
【図２４】セルの入り口ノードから出口ノードへの有向枝を示す図である。
【図２５】セルの入り口ノードから出口ノードへの有向枝の生成処理の処理手順を説明するためのフローチャートである。
【図２６】枝データの構成例を示す図である。
【図２７】隣接セル間の出口ノードから入り口ノードへの有向枝の生成処理の処理手順を説明するためのフローチャートである。
【図２８】東西方向に隣接するセルの出口ノードから入り口ノードへの有向枝を示す図である。
【図２９】南北方向に隣接するセルの出口ノードから入り口ノードへの有向枝を示す図である。
【図３０】斜め隣接セルのノード間の有向枝を示す図である。
【図３１】東西方向に隣接するセルの出口ノードから入り口ノードへの有向枝の生成処理の処理手順を説明するためのフローチャートである。
【図３２】南北方向に隣接するセルの出口ノードから入り口ノードへの有向枝の生成処理の処理手順を説明するためのフローチャートである。
【図３３】斜め隣接セルのノード間の有向枝の生成処理の処理手順を説明するためのフローチャートである。
【図３４】北西のセルとの有向枝の生成処理の処理手順を説明するためのフローチャートである。
【図３５】北東のセルとの有向枝の生成処理の処理手順を説明するためのフローチャートである。
【図３６】南西のセルとの有向枝の生成処理の処理手順を説明するためのフローチャートである。
【図３７】南東のセルとの有向枝の生成処理の処理手順を説明するためのフローチャートである。
【図３８】湧き出しノードから引き出し対象セルへの有向枝の生成処理の処理手順を説明するためのフローチャートである。
【図３９】出口セルから流入ノードへの有向枝の生成処理の処理手順を説明するためのフローチャートである。
【図４０】有向グラフにおける最短経路の探索処理の処理手順を説明するためのフローチャートである。
【図４１】経路探索のラベリング処理の処理手順を説明するためのフローチャートである。
【図４２】バックトレース処理の処理手順を説明するためのシーケンス図である。
【図４３】有向枝の向きに逆行して経路探索された状態を示す模式図である。
【図４４】有向枝の向きに逆行して経路探索された場合にバックトレースが実行された結果の例を示す模式図である。
【図４５】概略経路の確定処理を説明するためのフローチャートである。
【図４６】引き出し順データの構成例を示す図である。
【図４７】セル行列の東側を出口とする探索経路に基づく概略経路の確定処理の処理手順を説明するためのフローチャートである。
【図４８】線分データの生成処理の処理手順を説明するためのフローチャートである。
【図４９】線分データの構成例を示す図である。
【図５０】線分データの保存処理の処理手順を説明するためのフローチャートである。
【図５１】セル行列の北側を出口とする探索経路に基づく概略経路の確定処理の処理手順を説明するためのフローチャートである。
【図５２】セル行列の南側を出口とする探索経路に基づく概略経路の確定処理の処理手順を説明するためのフローチャートである。
【図５３】セル行列の西側を出口とする探索経路に基づく概略経路の確定処理の処理手順を説明するためのフローチャートである。
【発明を実施するための形態】
【００１５】
以下、図面に基づいて本発明の実施の形態を説明する。図２は、本発明の実施の形態における配線経路作成支援装置のハードウェア構成例を示す図である。図２の配線経路作成支援装置１０は、それぞれバスBで相互に接続されているドライブ装置１００と、補助記憶装置１０２と、メモリ装置１０３と、ＣＰＵ１０４と、インタフェース装置１０５と、表示装置１０６と、入力装置１０７とを有する。
【００１６】
配線経路作成支援装置１０での処理を実現するプログラムは、ＣＤ−ＲＯＭ等の記録媒体１０１によって提供される。プログラムを記録した記録媒体１０１がドライブ装置１００にセットされると、プログラムが記録媒体１０１からドライブ装置１００を介して補助記憶装置１０２にインストールされる。但し、プログラムのインストールは必ずしも記録媒体１０１より行う必要はなく、ネットワークを介して他のコンピュータよりダウンロードするようにしてもよい。補助記憶装置１０２は、インストールされたプログラムを格納すると共に、必要なファイルやデータ等を格納する。
【００１７】
メモリ装置１０３は、プログラムの起動指示があった場合に、補助記憶装置１０２からプログラムを読み出して格納する。ＣＰＵ１０４は、メモリ装置１０３に格納されたプログラムに従って配線経路作成支援装置１０に係る機能を実現する。インタフェース装置１０５は、ネットワークに接続するためのインタフェースとして用いられる。表示装置１０６はＣＲＴディスプレイや液晶ディスプレイ等の表示装置である。入力装置１０７はキーボード及びマウス等で構成され、様々な操作指示を入力させるために用いられる。
【００１８】
図３は、本発明の実施の形態における配線経路作成支援装置の機能構成例を示す図である。同図において、配線経路作成支援装置１０は、有向グラフ生成部１１０、経路探索部１２０、概略経路確定部１３０、ネットリスト１４１、ピンリスト１４２、配線ルール１４３、及び出口情報１４４等を有する。
【００１９】
有向グラフ生成部１１０は、概略配線を実施するためのネットワークフローモデル化された有向グラフを生成する。すなわち、配線経路作成支援装置１０は、ＢＧＡ（Ball Grid Array）の配線問題に対しネットワークフローモデルを適用することにより概略配線を実行する。ＢＧＡの配線問題にネットワークフローモデルを適用するにあたり、有向グラフ生成部１１０は、配線対象とされたＢＧＡの少なくともピン（又は端子ともいう。以下、「ピン」で統一する。）、水平ピン間（空きピンも含めて水平方向に隣接する二つのピンに挟まれた領域）、垂直ピン間（空きピンも含めて垂直方向に隣接する二つのピンに挟まれた領域）、及び対角ピン間（空きピンも含めて４つのピンに囲まれた領域）に配線通過数を規制するボトルネック（配線数の制限）を設ける。また、空きピン（ピンが配置されていない部分）が有る場合は空きピンにもボトルネックが設けられる。当該ボトルネックは図４に示されるようにモデル化される。
【００２０】
図４は、ＢＧＡに設けられたボトルネックのモデル化の例を示す図である。同図には、ＢＧＡの一部分が示されている。
【００２１】
同図における円ｃ１〜ｃ４は、ＢＧＡモデルのピンを示す。各ピンに配置された矩形（ｒ１〜ｒ４）、水平ピン間に設けられた矩形（ｒ５及びｒ６）、垂直ピン間に設けられた矩形（ｒ７及びｒ８）、及び対角ピン間に設けられた矩形（ｒ９）は、ボトルネック箇所を表現するためのものである。本実施の形態では、当該各矩形を「セル」という。各セルには容量（配線通過許容数）が与えられる。図中において、各セル内における数値は、当該セルに付与された容量を示す。
【００２２】
各セルは、対角線上に二つのノードを有する。左上のノードは入り口ノードであり、右下のノードは出口ノードである。有向グラフ生成部１１０は、所定の規則に従って各ノードを接続する有向枝を生成する。図中においてノード間を接続する矢印が有向枝を示す。有向枝が生成されることにより、概略配線を実施するための有向グラフが生成される。
【００２３】
有向グラフ生成部１１０は、セル生成部１１１、セル容量算出部１１２、ノード生成部１１３、及び有向枝生成部１１４等を有する。各部の機能については、図９において説明する。
【００２４】
経路探索部１２０は、有向グラフ生成部１１０によって生成された有向グラフにおいて、全ての引き出し対象の配線ごとに最短経路を探索する。経路探索部１２０は、最短経路探索部１２１、及びバックトレース部１２２等を有する。各部の機能については、図４０及び図４１において説明する。
【００２５】
概略経路確定部１３０は、経路探索部によって探索された各経路を各配線に分配することにより、概略配線の引き出し経路（概略経路）を確定する。
【００２６】
ネットリスト１４１、ピンリスト１４２、配線ルール１４３、及び出口情報１４４等は、概略配線における入力情報であり、例えば、補助記憶装置１０２に保存されている。ネットリスト１４１は、引き出し対象のピンの識別子の一覧情報を含む。ピンリスト１４２は、配線対象のＢＧＡに配置されている全てのピンに関する情報を含む。配線ルール１４３は、配線可能領域を規定する各種のパラメータを含む。出口情報１４４は、配線対象のＢＧＡにおいて配線の出口位置を識別するための情報を含む。
【００２７】
以下、配線経路作成支援装置の処理手順について説明する。図５は、配線経路作成支援装置による処理概要を説明するためのフローチャートである。
【００２８】
ステップＳ１において、有向グラフ生成部１１０は、概略配線を実施するためのネットワークフローモデル化された有向グラフを生成する。
【００２９】
図６は、有向グラフ生成部によって生成される有向グラフの例を示す図である。すなわち、同図はステップＳ１の処理結果を示す。
【００３０】
同図において、実線による円はピンを示す。グレーに塗りつぶされた円は、配線の引き出し対象（引き出し元）となるピン（以下、「引き出し対象ピン」という。）を示す。破線による円は空きピンを示す。また、各矩形はセルを示す。同図では、配線の出口位置を破線で囲まれた出口位置Ｏに限定した場合の有向グラフの生成状態を示す。出口位置Ｏに含まれるセルを以下「出口セル」という。このように、セル内の入り口ノードから出口ノードへの方向を有する有向枝、及び出口ノードから隣接する他のセルの入り口ノードへの方向を有する有向枝が生成されることにより有向グラフが生成される。図中において、湧き出しノードＳは、有向グラフの始点として設けられたノードである。流入ノードＴは、有向グラフの終点として設けられたノードである。なお、各有向枝は、当該有向枝が接続するノードが属するセルの容量に応じた容量を有する。
【００３１】
ステップＳ１に続いてステップＳ２に進み、経路探索部１２０は、有向グラフ生成部１１０によって生成された有向グラフにおいて、全ての引き出し対象の配線ごとに最短経路を探索する。
【００３２】
図７は、経路探索部によって探索される経路の例を示す図である。すなわち、同図はステップＳ２の処理結果を示す。
【００３３】
同図において、太い実線が、経路探索部によって探索された経路を示す。本実施の形態では、６本の配線が要求されている場合を例とする。したがって、同図に示される経路は、６配線分の経路を示す。各経路は、湧き出しノードＳから引き出し対象ピンの入り口ノードを経由し、更に、出口セルの出口ノードを経由して流入ノードＴまで至る。なお、ステップＳ２の終了時点では、各経路に属する各有向枝がいずれの配線の持ち物になるかは決定されていない。
【００３４】
ステップＳ２に続いてステップＳ３に進み、概略経路確定部１３０は、経路探索部１２０によって探索された各経路を各配線に分配し、概略配線の引き出し経路（概略経路）を確定する。
【００３５】
図８は、経路確定部によって確定された概略経路の例を示す図である。すなわち、同図はステップＳ３の処理結果を示す。同図において、符号ｅｎ（ｎは整数）が付されている有向枝は、確定された概略経路が通過する有向枝である。同図では、便宜上、３本の概略経路が確定した状態を示す。
【００３６】
以上の処理手順によって、配線経路作成支援装置１０は、ＢＧＡの概略配線を自動的に実行する。以下、各ステップの詳細について説明する。
【００３７】
まず、ステップＳ１の詳細について説明する。図９は、有向グラフ生成部による有向グラフの生成処理の処理手順を説明するためのフローチャートである。
【００３８】
ステップＳ１−１において、セル生成部１１１は、ＢＧＡのボトルネック箇所にセルを生成し、当該セルを示すデータ（セルデータ）を補助記憶装置１０２に保存する。本実施の形態において、ボトルネック箇所は、ピン、水平ピン間、垂直ピン間、対角ピン間、及び空きピンである。したがって、これらの位置に対応するセルデータが生成される。
【００３９】
図１０は、ボトルネック箇所にセルが生成された状態を示す図である。同図の表記法は、図６と同様である。同図には、セル行及びセル列（セル行列）とピン行及びピン列（セル行列）における行番号及び列番号が示されている。すなわち、各セルの位置は、セル行の行番号及びセル列の列番号によって管理される。また、各ピンの位置は、ピン行の行番号及びピン列の値によって管理される。なお、本実施の形態において、セル行列又はピン配列における方向は、東西南北によって識別される。図中右方向は東、左方向は西、上方向は北、下方向は南とする。但し、このような方向付けは相対的、かつ、便宜的なものであり、いずれの方向に東西南北を割り当ててもよい。
【００４０】
図１１は、セルデータの構成例を示す図である。同図において、セルデータは構造体として定義されている。但し、セルデータ及び後述される他のデータをどのような実体によって実現するかについては適宜選択すればよい。
【００４１】
同図において、セルデータは、セル属性（ａｔｔｒ）、ネットＩＤ（ｎｅｔＩＤ）、出口フラグ（ｅｘｉｔＦ）、ｘ座標（ｘ）、ｙ座標（ｙ）、入り口ノードのノードＩＤ（ｉＮ）、出口ノードのノードＩＤ（ｏＮ）、容量（ｃａｐ）、セルの行番号（ｒ）、及びセルの列番号（ｃ）等のメンバ変数（データ項目）を有する（括弧内はメンバ変数名を示す。）。
【００４２】
セル属性（ａｔｔｒ）は、各セルがいずれのボトルネック箇所に対応するかを示す属性である。「Ｓ」は、引き出し対象ピンに位置するセルであることを示す。「ＥＰ」は、空きピンに位置するセルであることを示す。「Ｄ」は、通常のピン（引き出し対象ピン又は空きピン以外のピン）に位置するセルであることを示す。「Ｖ」は、水平ピン間に位置するセルであることを示す。「Ｈ」は、垂直ピン間に位置するセルであることを示す。「ＳＢ」は、対角ピン間に位置するセルであることを示す。図１０の各セル内には、セル属性の値が記されている。図１０からも明らかなように、本実施の形態では、東端列のピンの東に隣接する箇所（セル）、及び西端列のピンの西に隣接する箇所（セル）も水平ピン間（Ｖ）とされる。また、北端行のピンの北に隣接する箇所（セル）、及び南端行のピンの南に隣接する箇所（セル）も垂直ピン間（Ｈ）とされる。また、東端列のピン、西端列のピン、北端行のピン、又は南端行のピンに対してＢＧＡの外周側に斜めに接する（斜め度なり）箇所（セル）も対角ピン間（ＳＢ）とされる。なお、本実施の形態において、水平ピン間を「Ｖ」、垂直ピン間を「Ｈ」によって示すのは、セルの並びとしては、水平ピン間は垂直方向に配列され、垂直ピン間は水平方向に配列されるからである。
【００４３】
ネットＩＤ（ｎｅｔＩＤ）は、引き出し対象ピンに位置するセルに関して有効となるメンバ変数であり、当該引き出し対象ピンから引き出される配線の識別子（ネットＩＤ）が登録される。出口フラグ（ｅｘｉｔＦ）は、図１０のセル行列において外周のセルであるか否かを示すメンバ変数である。外周に位置するセルに対してはｔｒｕｅが登録され、外周に位置しないセルにはｆａｌｓｅが登録される。ｘ座標（ｘ）は、ＢＧＡ上の相対座標系におけるセルの所定の位置（例えば、左上頂点）のｘ座標値である。ｙ座標（ｙ）は、ＢＧＡ上の相対座標系におけるセルの所定の位置のｙ座標値である。なお、ＢＧＡ上の相対座標系とは、例えば、ＢＧＡの左上頂点を原点とし、単位をミリメートルとする座標系である。入り口ノードのノードＩＤ（ｉＮ）は、セルの入り口ノードの識別子（ノードＩＤ）である。出口ノードのノードＩＤ（ｏＮ）は、セルの出口ノードの識別子（ノードＩＤ）である。容量（ｃａｐ）は、セルの容量、すなわち、配線通過許容数である。セルの行番号（ｒ）は、セルが位置するセル行の行番号である。セルの列番号（ｃ）はセルが位置するセル列の列番号である。
【００４４】
一つのセルデータは、一つのセルに対応する。従って、ステップＳ１−１では、セル個数分のセルデータが生成される。
【００４５】
続いて、セル容量算出部１１２は、配線ルール１４３等に基づいて各セルの容量を算出し、算出結果をセルデータの容量（ｃａｐ）に記録する。（Ｓ１−２）。
【００４６】
続いて、ノード生成部１１３は、セルごとにノードを示すデータ（ノードデータ）を補助記憶装置１０２に生成し、各セルデータの入り口ノードのノードＩＤと出口ノードのノードＩＤに対応する各ノードデータのノードＩＤを記録する（Ｓ１−３）。続いて、ノード生成部１１３は、湧き出しノードＳのノードデータと流入ノードＴのノードデータとを生成する（Ｓ１−４）。
【００４７】
図１２は、ノードが生成された状態を示す図である。同図には、各セルの入り口ノード及び出口ノードのそれぞれを示す点が記されている。また、湧き出しノードＳ及び流入ノードＴのそれぞれを示す点が記されている。
【００４８】
また、図１３は、ノードデータの構成例を示す図である。同図において、ノードデータは、ラベル伝播元ノードＩＤ（ｐＩＤ）、最短経路長（ｄｉｓｔ）、オーナーセルのセルＩＤ（ｃｅｌｌＩＤ）、ノード属性（ａｔｔｒ）、相棒ノードＩＤ（ｂｒｏｓ）、ソースフラグ（ｓＦｌａｇ）、ターゲットフラグ（ｔＦｌａｇ）、相棒ノードとの有向枝（ｅＢｒｏｓ）、東隣セルのノードとの有向枝（ｅＥ）、西隣セルのノードとの有向枝（ｅＷ）、南隣セルのノードとの有向枝（ｅＳ）、北隣セルのノードとの有向枝（ｅＮ）、北東セルのノードとの有向枝（ｅＮＥ）、北西セルのノードとの有向枝（ｅＮＷ）、南東セルのノードとの有向枝（ｅＳＥ）、南西セルのノードとの有向枝（ｅＳＷ）、湧き出しノードＳからの有向枝のリスト（ｓｏｕｒｅＥｄｇｅＬｉｓｔ）、流入ノードＴへの有向枝のリスト（ｔａｒｇｅｔＥｄｇｅＬｉｓｔ）、及びラベルフロントフラグ（ｌＦｒｏｎｔＦ）等のメンバ変数（データ項目）を有する。
【００４９】
ラベル伝播元ノードＩＤ（ｐＩＤ）は、経路探索におけるラベルの伝播元となるノード（親ノード）のノードＩＤである。最短経路長（ｄｉｓｔ）は、引き出し対象のセルの入り口ノードから当該ノードまでの最短の経路長である。オーナーセルのセルＩＤ（ｃｅｌｌＩＤ）は、当該ノードが属するセル（オーナーセル）の識別子（セルＩＤ）である。ノード属性（ａｔｔｒ）は、入り口ノードか出口ノードかを示す属性である。「ｉｎ」は入り口ノードを示し、「ｏｕｔ」は出口ノードを示す。相棒ノードＩＤ（ｂｒｏｓ）は、同じセル内における他方のノード（相棒ノード）のノードＩＤである。ソースフラグ（ｓＦｌａｇ）は、ノードが湧き出しノードＳ又は引き出しセルの入り口ノードであるか（ｔｒｕｅ）否か（ｆａｌｓｅ）を示すメンバ変数である。ターゲットフラグ（ｔＦｌａｇ）は、ノードが流入ノードＴ又は出口セルの出口ノードであるか（ｔｒｕｅ）否か（ｆａｌｓｅ）を示すメンバ変数である。
【００５０】
相棒ノードとの枝（ｅＢｒｏｓ）は、相棒ノードとの間に生成される有向枝のデータ（枝データ）である。東隣セルのノードとの有向枝（ｅＥ）は、東側に隣接するセル（東隣セル）のノードとの間に生成される有向枝の枝データである。西隣セルのノードとの有向枝（ｅＷ）は、西側に隣接するセル（西隣セル）のノードとの間に生成される有向枝の枝データである。南隣セルのノードとの有向枝（ｅＳ）は、南側に隣接するセル（南隣セル）のノードとの間に生成される有向枝の枝データである。北隣セルのノードとの有向枝（ｅＮ）は、北側に隣接するセル（北隣セル）のノードとの間に生成される有向枝の枝データである。北東セルのノードとの有向枝（ｅＮＥ）は、北東側に隣接するセル（北東セル）のノードとの間に生成される有向枝の枝データである。北西セルのノードとの有向枝（ｅＮＷ）は、北西側に隣接するセル（北西セル）のノードとの間に生成される有向枝の枝データである。南東セルのノードとの有向枝（ｅＳＥ）は、南東側に隣接するセル（南東セル）のノードとの間に生成される有向枝の枝データである。南西セルのノードとの有向枝（ｅＳＷ）は、南西側に隣接するセル（南西セル）のノードとの間に生成される有向枝の枝データである。
【００５１】
湧き出しノードＳからの有向枝のリスト（ｓｏｕｒｅＥｄｇｅＬｉｓｔ）は、湧き出しノードＳから引き出し対象セルの入り口ノードに対する有向枝の枝データのリストであり、湧き出しノードＳのノードデータにおいて有効である。流入ノードＴへの有向枝のリスト（ｔａｒｇｅｔＥｄｇｅＬｉｓｔ）は、出口セルの出口ノードから流入ノードＴへの有向枝の枝データのリストであり、流入ノードＴのノードデータにおいて有効である。ラベルフロントフラグ（ｌＦｒｏｎｔＦ）は、経路探索の最前線（ラベルフロント）のノードであるか否かを示すフラグである。
【００５２】
続いて、有向枝生成部１１４は、ノード間に有向枝を生成し、当該有向枝を示す枝データを補助記憶装置１０２に保存する（Ｓ１−５）。ステップＳ１−５が終了すると、図６に示した状態となる。
【００５３】
続いて、ステップＳ１−１の詳細について説明する。図１４は、セルの生成処理の処理手順を説明するためのフローチャートである。
【００５４】
ステップＳ１−１−１において、セル生成部１１１は、セルデータの配列（セルデータ配列ｃｅｌｌ）を補助記憶装置１０２に生成する。セルデータ配列ｃｅｌｌの要素数は、ピンの行数がｒ、ピンの列数がｃである場合、（２ｒ＋１）×（２ｃ＋１）個とされる。ピンの行数及び列数は、ピンリスト１４２に基づいて判定される。セルデータ生成部１１１は、セルデータ配列ｃｅｌｌに要素として含まれる各セルデータに、セルの行番号（ｒ）及びセルの列番号（ｒ）を記録する。なお、セルデータ配列ｃｅｌｌは、２次元配列でもよいが、本実施の形態では１次元配列とする。また、便宜上、後述の処理におけるセルデータは、補助記憶装置１０２に生成されたセルデータをいうが、処理性能を考慮してメモリ装置１０３にセルデータを生成し、当該セルデータを処理対象としてもよい。この場合、セルデータは、ステップＳ３の終了時までに補助記憶装置１０２に保存されればよい。ノードデータ及び枝データの扱いについても同様である。
【００５５】
続いて、セル生成部１１１は、セル行列の偶数行偶数列に位置するセルのセルデータについてピン（空きピンも含む。）との対応付けを行い、セル属性を付与する（Ｓ１−１−２）。
【００５６】
続いて、セル生成部１１１は、セル行列の奇数行偶数列、偶数行奇数列、及び奇数行奇数列に位置するそれぞれのセルのセルデータにＨ属性、Ｖ属性、又はＳＢ属性を付与する（Ｓ１−１−３）。すなわち、奇数行偶数列のセルのセルデータのセル属性に「Ｈ（垂直ピン間）」が記録される。また、偶数行奇数列のセルのセルデータのセル属性に「Ｖ（水平ピン間）」が記録される。更に、奇数行奇数列のセルのセルデータのセル属性に「ＳＢ（対角ピン間）」が記録される。
【００５７】
続いて、セル生成部１１１は、セル属性の値が「Ｓ」、「Ｈ」、「Ｖ」、又は「ＥＰ」のセルデータにセルのうち、セル行列において外周に位置するセルに対応するセルデータの出口フラグ（ｅｘｉｔＦ）の値をｔｒｕｅとし、外周に位置しないセルに対応するセルデータの出口フラグ（ｅｘｉｔＦ）の値をｆａｌｓｅとする（Ｓ１−１−４）。
【００５８】
続いて、ステップＳ１−１−２の詳細について説明する。図１５は、偶数行偶数列に位置するセルのセルデータに対する処理の処理手順を説明するためのフローチャートである。
【００５９】
ステップＳ１−１−２ａにおいて、セル生成部１１１は、ピンリスト１４２に登録されているピンデータの中から、ピン行列の１行１列に対応するピンデータを取得し、処理対象とする。ピンリスト１４２には、配線対象とするＢＧＡのピン毎にピンデータが登録されている。各ピンデータは、ピンの識別子（ピンＩＤ）、ピン行列における位置（行番号及び列番号）、ＢＧＡ上の相対座標系における位置（ｘ座標及びｙ座標）、空きピンであるか否か等の情報を含む。また、引き出し対象ピンに対応するピンデータは、ネットＩＤ（引き出し配線の識別子）を含む。
【００６０】
続いて、セル生成部１１１は、変数ｉの値を２ｃ＋２に初期化する（Ｓ１−１−２ｂ）。ここで、ｃはピンの列数である。したがって、２ｃ＋１は、セルの列数である。そうすると、２ｃ＋２は、セルデータ配列ｃｅｌｌにおいて２行２列目の要素（セルデータ）に対する添え字となる。なお、添え字の起点は０（０オリジン）であるとする。続いて、セル生成部１１１は、セルデータ配列ｃｅｌｌにおいて添え字がｉである要素（セルデータ）を処理対象とする（Ｓ１−１−２ｃ）。
【００６１】
続いて、セル生成部１１１は、処理対象のピンデータとネットリスト１４１とに基づいて、当該ピンデータに係るピンが引き出し対象であるか否かを判定する（Ｓ１−１−２ｄ）。ネットリスト１４１には、引き出し対象ピンのピンＩＤの一覧が登録されている。したがって、セル生成部１１１は、処理対象のピンデータのピンＩＤが、引き出し対象ピンのピンＩＤとしてネットリスト１４１に登録されているか否かに基づいて当該判定を行うことができる。
【００６２】
処理対象のピンデータに係るピンが引き出し対象ピンである場合（Ｓ１−１−２ｄでＹｅｓ）、セル生成部１１１は、処理対象のセルデータのセル属性（ａｔｔｒ）に「Ｓ（引き出し対象ピン）」を記録し、ネットＩＤ（ｎｅｔＩＤ）に処理対象のピンデータに登録されているネットＩＤを記録する（Ｓ１−１−２ｅ）。処理対象のピンデータに係るピンが引き出し対象ピンでない場合（Ｓ１−１−２ｄでＮｏ）、セル生成部１１１は、当該ピンデータに基づいて当該ピンが空きピンであるか否かを判定する（Ｓ１−１−２ｆ）。当該ピンが空きピンである場合（Ｓ１−１−２ｆでＹｅｓ）、セル生成部１１１は、処理対象のセルデータのセル属性（ａｔｔｒ）に「ＥＰ（空きピン）」を記録する（Ｓ１−１−２ｇ）。処理対象のピンデータに係るピンが空きピンでない場合（Ｓ１−１−２ｆでＮｏ）、セル生成部１１１は、処理対象のセルデータのセル属性（ａｔｔｒ）に「Ｄ（ピン）」を記録する（Ｓ１−１−２ｈ）。
【００６３】
ステップＳ１−１−２ｇ又はＳ１−１−２ｈに続いて、セル生成部１１１は、処理対象のピンデータの列番号が最大値（ピンの列数）に達しているか否かを判定する（Ｓ１−１−２ｉ）。ピンデータの列番号が最大値でない場合（Ｓ１−１−２ｉでＮｏ）、セル生成部１１１は、ピン列において東側に１列隣のピンに係るピンデータ（すなわち、列番号が１つ大きいピンデータ）を処理対象とする（Ｓ１−１−２ｊ）。また、セル生成部１１１は、変数ｉに２を加算する（Ｓ１−１−２ｋ）。すなわち、処理対象のセルデータがセル列において２列分東側にずらされる。
【００６４】
一方、ピンデータの列番号が最大値である場合（Ｓ１−１−２ｉでＮｏ）、セル生成部１１１は、当該ピンデータの行番号が最大値（ピンの行数）に達しているか否かを判定する（１−１−２ｌ）。ピンデータの行番号が最大値でない場合（Ｓ１−１−２ｌでＮｏ）、セル生成部１１１は、次のピン行（南側の行）において先頭のピンに対応するピンデータを処理対象とする（Ｓ１−１−２ｍ）。また、セル生成部１１１は、変数ｉに２ｃ＋４を加算する（Ｓ１−１−２ｋ）。すなわち、セル行列において南側に２行先（すなわち、次の偶数行）の２列目のセルに対応するセルデータが処理対象とされる。
【００６５】
ステップＳ１−１−２ｋ又はステップＳ１−１−２ｎに続いて、次の偶数行偶数列のセル（セルデータ）についてステップＳ１−１−２ｃ以降の処理が繰り返される。全てのピンが処理されると（Ｓ１−１−２ｌでＹｅｓ）、図１５の処理は終了する。
【００６６】
以上で図９のステップＳ１−１の説明は終了する。続いて、図９のステップＳ１−２の詳細について説明する。図１６は、セルの容量の算出処理の処理手順を説明するためのフローチャートである。
【００６７】
ステップＳ１−２−１において、セル容量算出部１１２は、水平方向（東西方向）に隣接するピン間の配線容量を計算し、Ｖ属性のセルデータ（セル属性の値が「Ｖ」のセルデータ）の容量（ｃａｐ）に計算結果を記録する。続いて、セル容量算出部１１２は、垂直方向（南北方向）に隣接するピン間の配線容量を計算し、Ｈ属性のセルデータ（セル属性の容量に計算結果を記録する（Ｓ１−２−２）。続いて、セル容量算出部１１２は、対角ピン間の配線容量を計算し、ＳＢ属性のセルデータの容量に計算結果を記録する（Ｓ１−２−３）。続いて、セル容量算出部１１２は、空きピンの配線容量を計算し、ＥＰ属性のセルデータの容量に計算結果を記録する（Ｓ１−２−４）。続いて、セル容量算出部１１２は、Ｄ属性のセルデータの容量に０（ゼロ）を記録する（Ｓ１−２−５）。続いて、セル容量算出部１１２は、セル行列において出口セル以外の外周のセルのセルデータの容量に０を記録する（Ｓ１−２−６）。当該セルデータの容量に０を記録することにより、概略経路の出口を出口セルに限定することができる。なお、出口セルか否かは、出口情報１４４とセルデータとに基づいて判定される。出口情報１４４には、出口位置Ｏ（図６参照）の範囲を示す座標情報が含まれている。したがって、セルデータの座標値と、出口位置Ｏとの座標情報とを照合することで当該セルデータに係るセルが出口セルか否かを判定することができる。なお、図６において、出口位置Ｏは、面情報（２次元の情報）とされている。但し、出口位置Ｏは、例えば、ＢＧＡの外周上の一部分の始点と終点とによって特定されてもよい。
【００６８】
ところで、各セルの容量の算出には配線ルール１４３が利用される。配線ルール１４３には、図１７に示されるパラメータが登録されている。
【００６９】
図１７は、配線ルールに登録されているパラメータを説明するための図である。同図において、円はピンを示す。また、水平方向の２本の線は配線を示す。同図に示されるように配線ルール１４３には、ｌｘ、ｌｙ、ＶＲ、ＳＶ、ＳＷ、及びＳＳ等のパラメータの値が登録されている。
【００７０】
ｌｘは、ピンの水平方向の中心間距離である。ｌｙは、ピンの垂直方向の中心間距離である。ＶＲは、ピンの半径である。ＳＶは、配線と端子の間隔である。ＳＷは、配線の幅（太さ）である。ＳＳは、配線と配線との間隔である。
【００７１】
以上のパラメータを利用して、図１６の各ステップの詳細について説明する。なお、図１６における処理は、予め実行されていてもよい。この場合、当該処理の実行結果として得られる値（各ボトルネック箇所に応じた容量）が配線ルール１４３として記録されていればよい。
【００７２】
まず、ステップＳ１−２−１の詳細について説明する。図１８は、水平方向に隣接するピン間の配線容量の算出処理の処理手順を説明するためのフローチャートである。
【００７３】
ステップＳ１−２−１Ａにおいて、セル容量算出部１１２は、ｄ＝ｌｘ−２×（ＶＲ＋ＳＶ）を計算する。計算結果ｄは、水平方向のピン間において配線に利用可能な最大距離である。続いて、セル容量算出部１１２は、ｄが配線の幅ＳＷ以上か否かを判定する（Ｓ１−２−１Ｂ）。ｄが配線の幅ＳＷ以上である場合（Ｓ１−２−１ＢでＹｅｓ）、セル容量算出部１１２は、ｄ＝ｄ−ＳＷを計算し、続いて、ｃａｐＶ＝１＋ｆｌｏｏｒ（ｄ／（ＳＳ＋ＳＷ））を計算する（Ｓ１−２−１Ｃ）。ｄ＝ｄ−ＳＷの計算結果ｄは、１本の配線によって余った距離を示す。また、ｃａｐＶ＝１＋ｆｌｏｏｒ（ｄ／（ＳＳ＋ＳＷ））の計算結果ｃａｐＶは、水平方向のピン間における配線可能数を示す。なお、ｆｌｏｏｒ関数は、引数とされた数値の最大の整数値を計算する関数である。
【００７４】
一方、ｄが配線の幅ＳＷ未満である場合（Ｓ１−２−１ＢでＮｏ）、セル容量算出部１１２は、ｃａｐＶの値を０とする（Ｓ１−２−１Ｄ）。ステップＳ１−２−１Ｃ又はＳ１−２−１Ｄに続いて、セル容量算出部１１２は、ｃａｐＶの値を全てのＶ属性のセルデータの容量（ｃａｐ）に記録する（Ｓ１−２−１Ｅ）。
【００７５】
なお、ステップＳ１−２−２については、図１８より自明であるためその説明は省略する。すなわち、図１８におけるｌｘをｌｙに置き換えて、ｃａｐＶの値をＨ属性のセルデータの容量に記録すればよい。
【００７６】
続いて、ステップＳ１−２−３の詳細について説明する。図１９は、対角ピン間の配線容量の算出処理の処理手順を説明するためのフローチャートである。
【００７７】
ステップＳ１−２−３Ａにおいて、セル容量算出部１１２は、Ｌ＝ｍｉｎ（ｌｘ，ｌｙ）を計算し、続いて、ｄ＝Ｌ×√２−２×（ＶＲ＋ＳＶ）を計算する。Ｌ＝ｍｉｎ（ｌｘ，ｌｙ）の計算結果Ｌは、ｌｘとｌｙとの最小値である。ｄ＝Ｌ×√２−２×（ＶＲ＋ＳＶ）の計算結果は、対角ピン間において配線に利用可能な最大距離である。
【００７８】
続いて、セル容量算出部１１２は、ｄが配線の幅ＳＷ以上か否かを判定する（Ｓ１−２−３Ｂ）。ｄが配線の幅ＳＷ以上である場合（Ｓ１−２−３ＢでＹｅｓ）、セル容量算出部１１２は、ｄ＝ｄ−ＳＷを計算し、続いて、ｃａｐＳＢ＝１＋ｆｌｏｏｒ（ｄ／（ＳＳ＋ＳＷ））を計算する（Ｓ１−２−３Ｃ）。ｄ＝ｄ−ＳＷの計算結果ｄは、１本の配線によって余った距離を示す。また、ｃａｐＳＢ＝１＋ｆｌｏｏｒ（ｄ／（ＳＳ＋ＳＷ））の計算結果ｃａｐＳＢは、対角ピン間における配線可能数を示す。
【００７９】
一方、ｄが配線の幅ＳＷ未満である場合（Ｓ１−２−３ＢでＮｏ）、セル容量算出部１１２は、ｃａｐＳＢの値を０とする（Ｓ１−２−３Ｄ）。ステップＳ１−２−３Ｃ又はＳ１−２−３Ｄに続いて、セル容量算出部１１２は、ｃａｐＳＢの値を全てのＳＢ属性のセルデータの容量（ｃａｐ）に記録する（Ｓ１−２−３Ｅ）。
【００８０】
続いて、ステップＳ１−２−４の詳細について説明する。図２０は、空きピンの配線容量の算出処理の処理手順を説明するためのフローチャートである。
【００８１】
ステップＳ１−２−４Ａにおいて、セル容量算出部１１２は、ｄ＝２×ＶＲを計算する。ｄ＝２×ＶＲの計算結果ｄは、ピンの直径である。続いて、セル容量算出部１１２は、ｄが配線の幅ＳＷ以上か否かを判定する（Ｓ１−２−４Ｂ）。ｄが配線の幅ＳＷ以上である場合（Ｓ１−２−４ＢでＹｅｓ）、セル容量算出部１１２は、ｄ＝ｄ−ＳＷを計算し、続いて、ｃａｐＥＰ＝１＋ｆｌｏｏｒ（ｄ／（ＳＳ＋ＳＷ））を計算する（Ｓ１−２−４Ｃ）。ｄ＝ｄ−ＳＷの計算結果ｄは、１本の配線によって余った距離を示す。また、ｃａｐＥＰ＝１＋ｆｌｏｏｒ（ｄ／（ＳＳ＋ＳＷ））の計算結果ｃａｐＥＰは、空きピンにおける配線可能数を示す。
【００８２】
一方、ｄが配線の幅ＳＷ未満である場合（Ｓ１−２−４ＢでＮｏ）、セル容量算出部１１２は、ｃａｐＥＰの値を０とする（Ｓ１−２−４Ｄ）。ステップＳ１−２−４Ｃ又はＳ１−２−４Ｄに続いて、セル容量算出部１１２は、ｃａｐＥＰの値を全てのＥＰ属性のセルデータの容量（ｃａｐ）に記録する（Ｓ１−２−４Ｅ）。
【００８３】
以上で図９のステップＳ１−２の説明は終了する。続いて、図９のステップＳ１−３の詳細について説明する。図２１は、ノードの生成処理の処理手順を説明するためのフローチャートである。
【００８４】
ステップＳ１−３−１において、ノード生成部１１３は、セル数×２＋２個の要素を有するノードデータの配列（ノードデータ配列ｖ）を補助記憶装置１０２に生成する。ノードデータ配列ｖは、各セルに２個ずつのノードデータと、湧き出しノードＳ及び流入ノードＴのそれぞれのノードデータとを格納するための配列である。なお、ノードデータ配列ｖの最初の要素（ｖ［０］）は、湧き出しノードＳに対応する。また、最後の要素（ｖ［ｖｅｒｔｅｘＮｕｍ−１］）は、流入ノードＴに対応する。ｖｅｒｔｅｘＮｕｍは、ノード配列の要素数である。
【００８５】
続いて、ノード生成部１１３は、ノード配列の最初の要素及び最後の要素を除く全てのノードデータを各セルデータに順番に２個ずつ割り当て、ノードデータとセルデータとの間に双方向の関連付けを記録する（Ｓ１−３−２）。すなわち、各セルデータの入り口ノードのノードＩＤ（ｉＮ）と出口ノードのノードＩＤ（ｏＮ）のそれぞれに、当該セルデータに割り当てられた二つのノードデータの一方のノードＩＤと他方のノードＩＤとを記録する。また、セルデータに割り当てられたノードデータのオーナーセルのセルＩＤ（ｃｅｌｌＩＤ）に当該セルデータのセルＩＤを記録する。なお、ノードＩＤは、ノードデータ配列における添え字である。セルＩＤは、セルデータ配列ｃｅｌｌにおける添え字である。
【００８６】
続いて、ノード生成部１１３は、ノード配列の最初の要素及び最後の要素を除く全てのノードデータの相棒ノードＩＤ（ｂｒｏｓ）に相棒ノード（同一セルに割り当てられた他方のノード）のノードデータのノードＩＤを記録する（Ｓ１−３−３）。
【００８７】
続いて、ノード生成部１１３は、各ノードデータのメンバ変数に初期値を記録する（Ｓ１−３−４）。具体的には、ラベル伝播元ノードＩＤ（ｐＩＤ）にＮＵＬＬＩＤを記録する。ＮＵＬＬＩＤは、データが無いことを示すＩＤである。また、最短経路長（ｄｉｓｔ）に０を記録する。また、入り口ノードとして割り当てられたノードデータのノード属性（ａｔｔｒ）に「ｉｎ」を記録し、出口ノードとして割り当てられたノードデータのノード属性（ａｔｔｒ）に「ｏｕｔ」を記録する。また、ソースフラグ（ｓＦｌａｇ）、ターゲットフラグ（ｔＦｌａｇ）のそれぞれにｆａｌｓｅを記録する。
【００８８】
以上で図９のステップＳ１−３の説明は終了する。続いて、図９のステップＳ１−４の詳細について説明する。図２２は、湧き出しノード及び流入ノードの生成処理の処理手順を説明するためのフローチャートである。
【００８９】
ステップＳ１−４−１において、ノード生成部１１３は、湧き出しノードＳに対応するノードデータ（ノードデータ配列ｖ［０］）の各メンバ変数に初期値を記録する。具体的には、ラベル伝播元ノードＩＤ（ｐＩＤ）にＮＵＬＬＩＤを記録する。また、最短経路長（ｄｉｓｔ）に０を記録する。また、ノード属性（ａｔｔｒ）にｏｕｔを記録する。また、ソースフラグ（ｓＦｌａｇ）にｔｒｕｅを記録し、ターゲットフラグ（ｔＦｌａｇ）にｆａｌｓｅを記録する。
【００９０】
続いて、ノード生成部１１３は、流入ノードＴに対応するノードデータ（ノードデータ配列ｖ［ｖｅｒｔｅｘＮｕｍ−１］）の各メンバ変数に初期値を記録する（Ｓ１−４−２）。具体的には、ラベル伝播元ノードＩＤ（ｐＩＤ）にＮＵＬＬＩＤを記録する。また、最短経路長（ｄｉｓｔ）にｄｉｓｔＭａｘを記録する。ｄｉｓｔＭａｘは、経路探索における経路長の最大値である。また、ノード属性（ａｔｔｒ）にｉｎを記録する。また、ソースフラグ（ｓＦｌａｇ）にｆａｌｓｅを記録し、ターゲットフラグ（ｔＦｌａｇ）にｔｒｕｅを記録する。
【００９１】
以上で図９のステップＳ１−４の説明は終了する。続いて、図９のステップＳ１−５の詳細について説明する。図２３は、有向枝の生成処理の処理手順を説明するためのフローチャートである。
【００９２】
ステップＳ１−５−１において、有向枝生成部１１４は、全てのセルについて入り口ノードから出口ノードへの有向枝を生成する。
【００９３】
図２４は、セルの入り口ノードから出口ノードへの有向枝を示す図である。同図では、便宜上９個のセルが示されている。各セルには、入り口ノードを示す点から出口ノードを示す点への矢印が記されている。当該矢印が、入り口ノードから出口ノードへの有向枝を示す。
【００９４】
続いて、有向枝生成部１１４は、隣接するセル間で（セル間を跨いで）、出口ノードから入り口ノードへの有向枝を相互に生成する（Ｓ１−５−２）。続いて、有向枝生成部１１４は、湧き出しノードＳから全ての引き出し対象ピンに対応するセル（引き出し対象セル）の入り口ノードへの有向枝を生成する（Ｓ１−５−３）。続いて、有向枝生成部１１４は、出口フラグ（ｅｘｉｔＦ）がｔｒｕｅの全てのセル（すなわち、出口セル）の出口ノードから流入ノードＴへの有向枝を生成する（Ｓ１−５−４）。
【００９５】
続いて、図２３のステップＳ１−５−１の詳細について説明する。図２５は、セルの入り口ノードから出口ノードへの有向枝の生成処理の処理手順を説明するためのフローチャートである。
【００９６】
ステップＳ１−５−１Ａにおいて、有向枝生成部１１４は、変数ｃｅｌｌＩＤＭａｘにセルの個数−１を代入する。また、有向枝生成部１１４は、変数ｉを０で初期化する。ここで、ｃｅｌｌＩＤＭａｘは、セルＩＤの最大値（すなわち、セルデータ配列ｃｅｌｌの添え字の最大値）を示す。また、変数ｉは、セルデータ配列ｃｅｌｌにおいて、処理対象とする要素（セルデータ）の添え字として利用される。
【００９７】
続いて、有向枝生成部１１４は、枝データｅをメモリ装置１０３に一つ生成し、枝データのメンバ変数に初期値を記録する（Ｓ１−５−１Ｂ）。
【００９８】
図２６は、枝データの構成例を示す図である。同図において枝データは、始点ノードＩＤ（ｓＮ）、終点ノードＩＤ（ｅＮ）、枝の長さ（ｅＬｅｎ）、容量（ｃａｐ）、フロー（ｆｌｏｗ）、及び残余（ｒｅｓ）等のメンバ変数（データ項目）を有する。
【００９９】
始点ノードＩＤ（ｓＮ）は、枝データが対応する有向枝の始点に位置するノードのノードＩＤである。終点ノードＩＤ（ｅＮ）は、枝データが対応する有向枝の終点に位置するノードのノードＩＤである。枝の長（ｅＬｅｎ）さは、有向枝の長さである。本実施の形態において、全ての有向枝は同じ長さ（１）を有する。容量（ｃａｐ）は、有向枝の容量である。有向枝の容量は、経路探索において有向枝を経路に割り当てることが可能な回数の最大値を示す。フロー（ｆｌｏｗ）は、有向枝が経路に割り当てられた（経路に使用された）回数である。残余（ｒｅｓ）は、有向枝を経路に割り当てられる残り回数を示す。すなわち、ｒｅｓ＝ｃａｐ−ｆｌｏｗの関係を有する。
【０１００】
ステップＳ１−５−１Ｂでは、生成された枝データｅの始点ノードＩＤ（ｓＮ）に処理対象のセルデータの入り口ノードＩＤ（ｉＮ）が記録される。また、枝データｅの終点ノードＩＤ（ｅＮ）に処理対象のセルデータの出口ノードＩＤ（ｏＮ）が記録される。これによって、枝データｅは、処理対象のセルの入り口ノードから出口ノードへの有向枝に対応する枝データとなる。また、枝データｅの容量（ｃａｐ）に処理対象のセルデータの容量（ｃａｐ）が記録される。すなわち、セルの入り口ノードから出口ノードへの有向枝の容量は、当該セルの容量と同じとされる。また、枝データｅの枝の長さ（ｅＬｅｎ）に１が記録される。また、枝データｅのフロー（ｆｌｏｗ）に初期値０が記録される。また、枝データｅの残余（ｒｅｓ）に枝データｅの容量（ｃａｐ）の値が記録される。
【０１０１】
続いて、有向枝生成部１１４は、枝データｅの終点ノードのノードデータ（ノードデータ配列ｖ［ｅ−＞ｅＮ］）の相棒ノードとの有向枝（ｅＢｒｏｓ）に枝データｅを記録する（Ｓ１−５−１Ｃ）。続いて、有向枝生成部１１４は、枝データｅの始点ノードのノードデータ（ノードデータ配列ｖ［ｅ−＞ｓＮ］）の相棒ノードとの有向枝（ｅＢｒｏｓ）に枝データｅを記録する（Ｓ１−５−１Ｄ）。ステップＳ１−５−１Ｃ及びＳ１−５−１Ｄによって、処理対象のセルに属する二つのノードのノードデータのそれぞれに、他方のノード（相棒ノード）との有向枝の枝データが登録されたことになる。
【０１０２】
続いて、有向枝生成部１１４は、ｉの値をインクリメントする（Ｓ１−５−１Ｅ）。続いて、有向枝生成部１１４は、ｉの値がｃｅｌｌＭａｘに達したか否か、すなわち、全てのセルデータについて処理が完了したか否かを判定する（Ｓ１−５−１Ｆ）。ｉの値がｃｅｌｌＭａｘに達していない場合（Ｓ１−５−１ＦでＮｏ）、有向枝生成部１１４は、次のセルデータを処理対象としてステップＳ１−５−１Ｂ以降を繰り返す。ｉの値がｃｅｌｌＭａｘに達した場合（Ｓ１−５−１ＦでＮｏ）、有向枝生成部１１４は、図２５の処理を終了させる。その結果、全てのセル内の入り口ノードから出口ノードへの有向枝が生成される（図２４参照）。
【０１０３】
続いて、図２３のステップＳ１−５−２の詳細について説明する。図２７は、隣接セル間の出口ノードから入り口ノードへの有向枝の生成処理の処理手順を説明するためのフローチャートである。
【０１０４】
ステップＳ１−５−２１において、有向枝生成部１１４は、東西方向に隣接するセルの出口ノードから入り口ノードへの有向枝を相互に生成する。
【０１０５】
図２８は、東西方向に隣接するセルの出口ノードから入り口ノードへの有向枝を示す図である。同図に示されるように、ステップＳ１−５−２１では、東側のセルの出口ノードから西側のセルの入り口ノードへの有向枝と、西側のセルの出口ノードから東側のセルの入り口ノードへの有向枝とが生成される。
【０１０６】
続いて、有向枝生成部１１４は、南北方向に隣接するセルの出口ノードから入り口ノードへの有向枝を相互に生成する（Ｓ１−５−２２）。
【０１０７】
図２９は、南北方向に隣接するセルの出口ノードから入り口ノードへの有向枝を示す図である。同図に示されるように、ステップＳ１−５−２２では、南側のセルの出口ノードから北側のセルの入り口ノードへの有向枝と、北側のセルの出口ノードから南側のセルの入り口ノードへの有向枝とが生成される。
【０１０８】
続いて、有向枝生成部１１４は、ＳＢ属性のセル（対角ピン間のセル）に属するノードについて、斜め方向（北東方向、北西方向、南東方向、又は南西方向）に隣接するセル（斜め隣接セル）に属するノードとの間に有向枝を相互に生成する（Ｓ１−５−２３）。
【０１０９】
図３０は、斜め隣接セルのノード間の有向枝を示す図である。同図に示されるように、ステップＳ１−５−２３では、ＳＢセルの出口ノードから全ての斜め隣接セルの入り口ノードへの有向枝と、当該全ての斜め隣接セルの出口ノードからＳＢセルの入り口ノードへの有向枝とが生成される。
【０１１０】
続いて、図２７のステップＳ１−５−２１の詳細について説明する。図３１は、東西方向に隣接するセルの出口ノードから入り口ノードへの有向枝の生成処理の処理手順を説明するためのフローチャートである。
【０１１１】
ステップＳ１−５−２１Ａにおいて、有向枝生成部１１４は、変数ｃｏｌＭａｘに列方向のセルの数を、変数ｒｏｗＭａｘに行方向のセルの数を代入する。また、有向枝生成部１１４は、変数ｉと変数ｊとをそれぞれ０で初期化する。変数ｉは、処理対象とされる東西に隣接する二つのセルのうち、西側のセルの列方向へのオフセット値として利用される。変数ｊは、処理対象とされる東西に隣接する二つのセルの行方向のオフセット値として利用される。
【０１１２】
続いて、有向枝生成部１１４は、ｗ＿ｃｅｌｌ＿ｉｄ＝ｃｏｌＭａｘ×ｊ＋ｉを計算し、更に、ｅ＿ｃｅｌｌ＿ｉｄ＝ｗ＿ｃｅｌｌ＿ｉｄ＋１を計算する（Ｓ１−５−２１Ｂ）。ｗ＿ｃｅｌｌ＿ｉｄは、セルデータ配列ｃｅｌｌにおいて、処理対象とされる西側のセル（西セル）に対応する要素（セルデータ）に対する添え字である。また、ｅ＿ｃｅｌｌ＿ｉｄは、処理対象とされる東側のセル（東セル）に対応する要素（セルデータ）に対する添え字である。なお、最初は、西セルは、１行１列目のセルであり、東セルは１行２列目のセルである。
【０１１３】
続いて、有向枝生成部１１４は、西セルの出口ノードから東セルの入り口ノードへの有向枝に対応させる枝データｅをメモリ装置１０３に一つ生成し、枝データｅのメンバ変数に値を記録する（Ｓ１−５−２１Ｃ）。具体的には、枝データｅの始点ノードＩＤ（ｓＮ）に西セルのセルデータ（セルデータ配列ｃｅｌｌ［ｗ＿ｃｅｌｌ＿ｉｄ］）の出口ノードＩＤ（ｏＮ）が記録される。また、枝データｅの終点ノードＩＤ（ｅＮ）に東セルのセルデータ（セルデータ配列ｃｅｌｌ［ｅ＿ｃｅｌｌ＿ｉｄ］）の入り口ノードＩＤ（ｉＮ）が記録される。これによって、枝データｅは、西セルの出口ノードから東セルの入り口ノードへの有向枝に対応する枝データとなる。また、西セルのセルデータの容量（ｃａｐ）の値と東セルのセルデータの容量の値とのうち小さい方の値が枝データｅの容量（ｃａｐ）に記録される。すなわち、東西に隣接するセルの出口ノードから入り口ノードへの有向枝の容量は、当該隣接セルの容量の最小値とされる。また、枝データｅの枝の長さ（ｅＬｅｎ）に１が記録される。また、枝データｅのフロー（ｆｌｏｗ）に初期値０が記録される。また、枝データｅの残余（ｒｅｓ）に枝データｅの容量（ｃａｐ）の値が記録される。
【０１１４】
また、有向枝生成部１１４は、枝データｅの始点ノードのノードデータ（ノードデータ配列ｖ［ｅ−＞ｓＮ］）の東隣セルのノードとの有向枝（ｅＥ）に枝データｅを記録する。また、有向枝生成部１１４は、枝データｅの終点ノードのノードデータ（ノードデータ配列ｖ［ｅ−＞ｅＮ］）の西隣セルのノードとの有向枝（ｅＷ）に枝データｅを記録する。これによって、東セルの出口ノードのノードデータと西セルの入り口ノードのノードデータとのそれぞれに、他方のノードとの有向枝の枝データが登録されたことになる。
【０１１５】
続いて、有向枝生成部１１４は、東セルの出口ノードから西セルの入り口ノードへの有向枝に対応させる枝データｅをメモリ装置１０３に一つ生成し、枝データｅのメンバ変数に値を記録する（Ｓ１−５−２１Ｄ）。具体的には、枝データｅの始点ノードＩＤ（ｓＮ）に東セルのセルデータ（セルデータ配列ｃｅｌｌ［ｅ＿ｃｅｌｌ＿ｉｄ］）の出口ノードＩＤ（ｏＮ）が記録される。また、枝データｅの終点ノードＩＤ（ｅＮ）に西セルのセルデータ（セルデータ配列ｃｅｌｌ［ｗ＿ｃｅｌｌ＿ｉｄ］）の入り口ノードＩＤ（ｉＮ）が記録される。これによって、枝データｅは、東セルの出口ノードから西セルの入り口ノードへの有向枝に対応する枝データとなる。また、東セルのセルデータの容量（ｃａｐ）の値と西セルのセルデータの容量の値とのうち小さい方の値が枝データｅの容量（ｃａｐ）に記録される。また、枝データｅの枝の長さ（ｅＬｅｎ）に１が記録される。また、枝データｅのフロー（ｆｌｏｗ）に初期値０が記録される。また、枝データｅの残余（ｒｅｓ）に枝データｅの容量（ｃａｐ）の値が記録される。
【０１１６】
また、有向枝生成部１１４は、枝データｅの始点ノードのノードデータ（ノードデータ配列ｖ［ｅ−＞ｓＮ］）の西隣セルのノードとの有向枝（ｅＷ）に枝データｅを記録する。また、有向枝生成部１１４は、枝データｅの終点ノードのノードデータ（ノードデータ配列ｖ［ｅ−＞ｅＮ］）の東隣セルのノードとの有向枝（ｅＥ）に枝データｅを記録する。これによって、西セルの出口ノードのノードデータと東セルの入り口ノードのノードデータとのそれぞれに、他方のノードとの有向枝の枝データが登録されたことになる。
【０１１７】
続いて、有向枝生成部１１４は、変数ｉをインクリメントする（Ｓ１−５−２１Ｅ）。すなわち、処理対象とされる東西に隣接する二つのセルがセル行列において東側に１列分ずらされる。続いて、有向枝生成部１１４は、変数ｉの値がｃｏｌＭａｘ−１に達したか否か、すなわち、処理対象とされる西セルがセル行列の東端に達したか否かを判定する（Ｓ１−５−２１Ｆ）。変数ｉの値がｃｏｌＭａｘ−１に達していない場合（Ｓ１−５−２１ＦでＮｏ）、有向枝生成部１１４は、東側に一つずれた東西の隣接セルを処理対象としてステップＳ１−５−２１Ｂ以降の処理を実行する。
【０１１８】
変数ｉの値がｃｏｌＭａｘ−１に達した場合（Ｓ１−５−２１ＦでＹｅｓ）、有向枝生成部１１４は、変数ｊの値をインクリメントする（Ｓ１−５−２１Ｇ）。すなわち、処理対象とされる東西に隣接する二つのセルがセル行列において南側に１行分ずらされる。続いて、有向枝生成部１１４は、変数ｊの値がｒｏｗＭａｘ−１以下であるか否か、すなわち、処理対象とされるセルがセル行列の南端に達していないか否かを判定する（Ｓ１−５−２１Ｈ）。変数ｊの値がｒｏｗＭａｘ−１以下である場合（Ｓ１−５−２１ＨでＹｅｓ）、有向枝生成部１１４は、変数ｉの値を０にし（Ｓ１−５−２１Ｉ）、ステップＳ１−５−２１Ｂ以降の処理を繰り返す。変数ｉの値を０にすることにより、処理対象とされる西セルがセル行列における西端に移動される。一方、変数ｊの値がｒｏｗＭａｘ−１を超える場合（Ｓ１−５−２１ＨでＮｏ）、有向枝生成部１１４は、図３１の処理を終了させる。図３１の処理結果は、図２８に示した通りである。
【０１１９】
続いて、図２７のステップＳ１−５−２２の詳細について説明する。図３２は、南北方向に隣接するセルの出口ノードから入り口ノードへの有向枝の生成処理の処理手順を説明するためのフローチャートである。
【０１２０】
ステップＳ１−５−２２Ａにおいて、有向枝生成部１１４は、変数ｃｏｌＭａｘに列方向のセルの数を、変数ｒｏｗＭａｘに行方向のセルの数を代入する。また、有向枝生成部１１４は、変数ｉと変数ｊとをそれぞれ０で初期化する。変数ｉは、処理対象とされる南北に隣接する二つのセルの列方向のオフセット値として利用される。
変数ｊは、処理対象とされる南北に隣接する二つのセルのうち、北側のセルの行方向へのオフセット値として利用される。
【０１２１】
続いて、有向枝生成部１１４は、ｎ＿ｃｅｌｌ＿ｉｄ＝ｃｏｌＭａｘ×ｊ＋ｉを計算し、更に、ｓ＿ｃｅｌｌ＿ｉｄ＝ｎ＿ｃｅｌｌ＿ｉｄ＋ｃｏｌＭａｘを計算する（Ｓ１−５−２２Ｂ）。ｎ＿ｃｅｌｌ＿ｉｄは、セルデータ配列ｃｅｌｌにおいて、処理対象とされる北側のセル（北セル）に対応する要素（セルデータ）に対する添え字である。また、ｓ＿ｃｅｌｌ＿ｉｄは、処理対象とされる南側のセル（南セル）に対応する要素（セルデータ）に対する添え字である。なお、最初は、北セルは、１行１列目のセルであり、南セルは２行１列目のセルである。
【０１２２】
続いて、有向枝生成部１１４は、北セルの出口ノードから南セルの入り口ノードへの有向枝に対応させる枝データｅをメモリ装置１０３に一つ生成し、枝データｅのメンバ変数に値を記録する（Ｓ１−５−２２Ｃ）。具体的には、枝データｅの始点ノードＩＤ（ｓＮ）に北セルのセルデータ（セルデータ配列ｃｅｌｌ［ｎ＿ｃｅｌｌ＿ｉｄ］）の出口ノードＩＤ（ｏＮ）が記録される。また、枝データｅの終点ノードＩＤ（ｅＮ）に南セルのセルデータ（セルデータ配列ｃｅｌｌ［ｓ＿ｃｅｌｌ＿ｉｄ］）の入り口ノードＩＤ（ｉＮ）が記録される。これによって、枝データｅは、北セルの出口ノードから南セルの入り口ノードへの有向枝に対応する枝データとなる。また、北セルのセルデータの容量（ｃａｐ）の値と南セルのセルデータの容量の値とのうち小さい方の値が枝データｅの容量（ｃａｐ）に記録される。すなわち、南北に隣接するセルの出口ノードから入り口ノードへの有向枝の容量は、当該隣接セルの容量の最小値とされる。また、枝データｅの枝の長さ（ｅＬｅｎ）に１が記録される。また、枝データｅのフロー（ｆｌｏｗ）に初期値０が記録される。また、枝データｅの残余（ｒｅｓ）に枝データｅの容量（ｃａｐ）の値が記録される。
【０１２３】
また、有向枝生成部１１４は、枝データｅの始点ノードのノードデータ（ノードデータ配列ｖ［ｅ−＞ｓＮ］）の南隣セルのノードとの有向枝（ｅＳ）に枝データｅを記録する。また、有向枝生成部１１４は、枝データｅの終点ノードのノードデータ（ノードデータ配列ｖ［ｅ−＞ｅＮ］）の北隣セルのノードとの有向枝（ｅＮ）に枝データｅを記録する。これによって、北セルの出口ノードのノードデータと南セルの入り口ノードのノードデータとのそれぞれに、他方のノードとの有向枝の枝データが登録されたことになる。
【０１２４】
続いて、有向枝生成部１１４は、南セルの出口ノードから北セルの入り口ノードへの有向枝に対応させる枝データｅをメモリ装置１０３に一つ生成し、枝データｅのメンバ変数に値を記録する（Ｓ１−５−２２Ｄ）。具体的には、枝データｅの始点ノードＩＤ（ｓＮ）に南セルのセルデータ（セルデータ配列ｃｅｌｌ［ｓ＿ｃｅｌｌ＿ｉｄ］）の出口ノードＩＤ（ｏＮ）が記録される。また、枝データｅの終点ノードＩＤ（ｅＮ）に北セルのセルデータ（セルデータ配列ｃｅｌｌ［ｎ＿ｃｅｌｌ＿ｉｄ］）の入り口ノードＩＤ（ｉＮ）が記録される。これによって、枝データｅは、南セルの出口ノードから北セルの入り口ノードへの有向枝に対応する枝データとなる。また、南セルのセルデータの容量（ｃａｐ）の値と北セルのセルデータの容量の値とのうち小さい方の値が枝データｅの容量（ｃａｐ）に記録される。また、枝データｅの枝の長さ（ｅＬｅｎ）に１が記録される。また、枝データｅのフロー（ｆｌｏｗ）に初期値０が記録される。また、枝データｅの残余（ｒｅｓ）に枝データｅの容量（ｃａｐ）の値が記録される。
【０１２５】
また、有向枝生成部１１４は、枝データｅの始点ノードのノードデータ（ノードデータ配列ｖ［ｅ−＞ｓＮ］）の北隣セルのノードとの有向枝（ｅＮ）に枝データｅを記録する。また、有向枝生成部１１４は、枝データｅの終点ノードのノードデータ（ノードデータ配列ｖ［ｅ−＞ｅＮ］）の南隣セルのノードとの有向枝（ｅＳ）に枝データｅを記録する。これによって、南セルの出口ノードのノードデータと北セルの入り口ノードのノードデータとのそれぞれに、他方のノードとの有向枝の枝データが登録されたことになる。
【０１２６】
続いて、有向枝生成部１１４は、変数ｊをインクリメントする（Ｓ１−５−２２Ｅ）。すなわち、処理対象とされる南北に隣接する二つのセルがセル行列において南側に１行分ずらされる。続いて、有向枝生成部１１４は、変数ｊの値がｒｏｗＭａｘ−１に達したか否か、すなわち、処理対象とされる北セルがセル行列の南端に達したか否かを判定する（Ｓ１−５−２２Ｆ）。変数ｊの値がｒｏｗＭａｘ−１に達していない場合（Ｓ１−５−２２ＦでＮｏ）、有向枝生成部１１４は、南側に一つずれた南北の隣接セルを処理対象としてステップＳ１−５−２２Ｂ以降の処理を実行する。
【０１２７】
変数ｊの値がｒｏｗＭａｘ−１に達した場合（Ｓ１−５−２２ＦでＹｅｓ）、有向枝生成部１１４は、変数ｉの値をインクリメントする（Ｓ１−５−２２Ｇ）。すなわち、処理対象とされる南北に隣接する二つのセルがセル行列において東側に１列分ずらされる。続いて、有向枝生成部１１４は、変数ｉの値がｃｏｌＭａｘ−１以下であるか否か、すなわち、処理対象とされるセルがセル行列の東端に達していないか否かを判定する（Ｓ１−５−２２Ｈ）。変数ｉの値がｃｏｌＭａｘ−１以下である場合（Ｓ１−５−２２ＨでＹｅｓ）、有向枝生成部１１４は、変数ｊの値を０にし（Ｓ１−５−２２Ｉ）、ステップＳ１−５−２２Ｂ以降の処理を繰り返す。変数ｊの値を０にすることにより、処理対象とされる北セルがセル行列における北端に移動される。一方、変数ｉの値がｃｏｌＭａｘ−１を超える場合（Ｓ１−５−２２ＨでＮｏ）、有向枝生成部１１４は、図３２の処理を終了させる。図３２の処理結果は、図２９に示した通りである。
【０１２８】
続いて、図２７のステップＳ１−５−２３の詳細について説明する。図３３は、斜め隣接セルのノード間の有向枝の生成処理の処理手順を説明するためのフローチャートである。
【０１２９】
ステップＳ１−５−２３Ａにおいて、有向枝生成部１１４は、変数ｃｏｌＭａｘに列方向のセルの数を代入し、変数ｒｏｗＭａｘに行方向のセルの数を代入し、変数ｃｅｌｌＭａｘにセルの総数（ｃｏｌＭａｘ×ｒｏｗＭａｘ）を代入する。続いて、有向枝生成部１１４は、変数ｉに初期値０を代入する（Ｓ１−５−２３Ｂ）。変数ｉは、セルデータ配列ｃｅｌｌにおいて処理対象とする要素（セルデータ）の添え字として利用される。
【０１３０】
続いて、有向枝生成部１１４は、処理対象のセルデータ（セルデータ配列ｃｅｌｌ［ｉ］）のセル属性（ａｔｔｒ）の値が「ＳＢ（対角ピン間）」であるか否かを判定する（Ｓ１−５−２３Ｃ）。処理対象のセルデータのセル属性の値がＳＢの場合（Ｓ１−５−２３ＣでＹｅｓ）、有向枝生成部１１４は、当該セルデータの行番号（ｒ）が１より大きいか否かを判定することにより、当該セルデータのセルより北側にセル行が存在するか否かを判定する（Ｓ１−５−２３Ｄ）。
【０１３１】
当該セルデータのセルより北側にセル行が存在する場合（Ｓ１−５−２３ＤでＹｅｓ）、有向枝生成部１１４は、当該セルデータの列番号（ｃ）が１より大きいか否かを判定することにより、当該セルデータのセルより西側にセル列が存在するか否かを判定する（Ｓ１−５−２３Ｅ）。当該セルデータのセルより西側にセル列が存在する場合（Ｓ１−５−２３ＥでＹｅｓ）、有向枝生成部１１４は、当該セルと北西のセルとの間の有向枝を生成する（Ｓ１−５−２３Ｆ）。
【０１３２】
ステップＳ１−５−２３Ｆ、又はステップＳ１−５−２３ＥでＮｏの場合に続いて、有向枝生成部１１４は、処理対象のセルデータの列番号（ｃ）がｃｏｌＭａｘ−１以下であるか否かを判定することにより、当該セルデータのセルより東側にセル列が存在するか否かを判定する（Ｓ１−５−２３Ｇ）。当該セルデータのセルより東側にセル列が存在する場合（Ｓ１−５−２３ＧでＹｅｓ）、有向枝生成部１１４は、当該セルと北東のセルとの間の有向枝を生成する（Ｓ１−５−２３Ｈ）。
【０１３３】
ステップＳ１−５−２３Ｈ、ステップＳ１−５−２３ＧでＮｏの場合、又はステップＳ１−５−２３ＤでＮｏの場合に続いて、有向枝生成部１１４は、処理対象のセルデータの行番号（ｒ）がｒｏｗＭａｘ−１以下であるか否かを判定することにより、当該セルデータのセルより南側にセル行が存在するか否かを判定する（Ｓ１−５−２３Ｉ）。当該セルデータのセルより南側にセル行が存在する場合（Ｓ１−５−２３ＩでＹｅｓ）、有向枝生成部１１４は、当該セルデータの列番号（ｃ）が１より大きいか否かを判定することにより、当該セルデータのセルより西側にセル列が存在するか否かを判定する（Ｓ１−５−２３Ｊ）。当該セルデータのセルより西側にセル列が存在する場合（Ｓ１−５−２３ＪでＹｅｓ）、有向枝生成部１１４は、当該セルと南西のセルとの間の有向枝を生成する（Ｓ１−５−２３Ｋ）。
【０１３４】
ステップＳ１−５−３Ｋ、又はステップＳ１−５−２３ＪでＮｏの場合に続いて、有向枝生成部１１４は、処理対象のセルデータの列番号（ｃ）がｃｏｌＭａｘ−１以下であるか否かを判定することにより、当該セルデータのセルより東側にセル列が存在するか否かを判定する（Ｓ１−５−２３Ｌ）。当該セルデータのセルより東側にセル列が存在する場合（Ｓ１−５−２３ＬでＹｅｓ）、有向枝生成部１１４は、当該セルと南東のセルとの間の有向枝を生成する（Ｓ１−５−２３Ｍ）。
【０１３５】
ステップＳ１−５−２３Ｍ、ステップＳ１−５−２３ＬでＮｏの場合、ステップＳ１−５−２３ＩでＮｏの場合、又はステップＳ１−５−２３ＣでＮｏの場合に続いて、有向枝生成部１１４は、変数ｉをインクリメントする（Ｓ１−５−２３Ｎ）。続いて、有向枝生成部１１４は、変数ｉの値がｃｅｌｌＭａｘ（セルの総数）より小さいか否かを判定することにより、未処理のセルデータが残っているか否かを判定する（Ｓ１−５−２３Ｏ）。未処理のセルデータが残っている場合（Ｓ１−５−２３ＯでＹｅｓ）、有向枝生成部１１４は、次のセルデータを処理対象としてステップＳ１−５−２３Ｂ以降を繰り返す。未処理のセルデータが残っていない場合（Ｓ１−５−２３ＯでＮｏ）、有向枝生成部１１４は、図３３の処理を生成させる。図３３の処理結果は、図３０に示した通りである。
【０１３６】
続いて、図３３のステップＳ１−５−２３Ｆの詳細について説明する。図３４は、北西のセルとの有向枝の生成処理の処理手順を説明するためのフローチャートである。
【０１３７】
ステップＳ２３Ｆ−１において、有向枝生成部１１４は、ｎｗ＿ｃｅｌｌ＿ｉｄ＝ｉ−ｃｏｌＭａｘ−１を計算する。ここで、変数ｉ及びｃｏｌＭａｘの値は、図３３の処理においてステップＳ１−５−２３Ｆが呼び出された時点の値である。したがって、計算結果ｎｗ＿ｃｅｌｌ＿ｉｄは、図３３の処理において処理対象とされているセルデータのセルの北西のセル（北西セル）のセルデータに対する添え字である。
【０１３８】
続いて、有向枝生成部１１４は、処理対象のセルの出口ノードから北西セルの入り口ノードへの有向枝に対応させる枝データｅをメモリ装置１０３に一つ生成し、枝データｅのメンバ変数に値を記録する（Ｓ２３Ｆ−２）。具体的には、枝データｅの始点ノードＩＤ（ｓＮ）に処理対象のセルのセルデータ（セルデータ配列ｃｅｌｌ［ｉ］）の出口ノードＩＤ（ｏＮ）が記録される。また、枝データｅの終点ノードＩＤ（ｅＮ）に北西セルのセルデータ（セルデータ配列ｃｅｌｌ［ｎｗ＿ｃｅｌｌ＿ｉｄ］）の入り口ノードＩＤ（ｉＮ）が記録される。これによって、枝データｅは、処理対象のセルの出口ノードから北西セルの入り口ノードへの有向枝に対応する枝データとなる。また、処理対象のセルのセルデータの容量（ｃａｐ）の値と北西セルのセルデータの容量の値とのうち小さい方の値が枝データｅの容量（ｃａｐ）に記録される。また、枝データｅの枝の長さ（ｅＬｅｎ）に１が記録される。また、枝データｅのフロー（ｆｌｏｗ）に初期値０が記録される。また、枝データｅの残余（ｒｅｓ）に枝データｅの容量（ｃａｐ）の値が記録される。
【０１３９】
また、有向枝生成部１１４は、枝データｅの始点ノードのノードデータ（ノードデータ配列ｖ［ｅ−＞ｓＮ］）の北西セルのノードとの有向枝（ｅＮＷ）に枝データｅを記録する。また、有向枝生成部１１４は、枝データｅの終点ノードのノードデータ（ノードデータ配列ｖ［ｅ−＞ｅＮ］）の南東セルのノードとの有向枝（ｅＳＥ）に枝データｅを記録する。これによって、処理対象のセルの出口ノードのノードデータと北西セルの入り口ノードのノードデータとのそれぞれに、他方のノードとの有向枝の枝データが登録されたことになる。
【０１４０】
続いて、有向枝生成部１１４は、北西セルの出口ノードから処理対象のセルの入り口ノードへの有向枝に対応させる枝データｅをメモリ装置１０３に一つ生成し、枝データｅのメンバ変数に値を記録する（Ｓ２３Ｆ−３）。具体的には、枝データｅの始点ノードＩＤ（ｓＮ）に北西セルのセルデータ（セルデータ配列ｃｅｌｌ［ｎｗ＿ｃｅｌｌ＿ｉｄ］）の出口ノードＩＤ（ｏＮ）が記録される。また、枝データｅの終点ノードＩＤ（ｅＮ）に処理対象のセルのセルデータ（セルデータ配列ｃｅｌｌ［ｉ］）の入り口ノードＩＤ（ｉＮ）が記録される。これによって、枝データｅは、北西セルの出口ノードから処理対象のセルの入り口ノードへの有向枝に対応する枝データとなる。また、北西セルのセルデータの容量（ｃａｐ）の値と処理対象のセルのセルデータの容量の値とのうち小さい方の値が枝データｅの容量（ｃａｐ）に記録される。また、枝データｅの枝の長さ（ｅＬｅｎ）に１が記録される。また、枝データｅのフロー（ｆｌｏｗ）に初期値０が記録される。また、枝データｅの残余（ｒｅｓ）に枝データｅの容量（ｃａｐ）の値が記録される。
【０１４１】
また、有向枝生成部１１４は、枝データｅの始点ノードのノードデータ（ノードデータ配列ｖ［ｅ−＞ｓＮ］）の南東セルのノードとの有向枝（ｅＳＥ）に枝データｅを記録する。また、有向枝生成部１１４は、枝データｅの終点ノードのノードデータ（ノードデータ配列ｖ［ｅ−＞ｅＮ］）の北西セルのノードとの有向枝（ｅＮＷ）に枝データｅを記録する。これによって、北西セルの出口ノードのノードデータと処理対象のセルの入り口ノードのノードデータとのそれぞれに、他方のノードとの有向枝の枝データが登録されたことになる。
【０１４２】
続いて、図３３のステップＳ１−５−２３Ｈの詳細について説明する。図３５は、北東のセルとの有向枝の生成処理の処理手順を説明するためのフローチャートである。
【０１４３】
ステップＳ２３Ｈ−１において、有向枝生成部１１４は、ｎｅ＿ｃｅｌｌ＿ｉｄ＝ｉ−ｃｏｌＭａｘ＋１を計算する。ここで、変数ｉ及びｃｏｌＭａｘの値は、図３３の処理においてステップＳ１−５−２３Ｈが呼び出された時点の値である。したがって、計算結果ｎｅ＿ｃｅｌｌ＿ｉｄは、図３３の処理において処理対象とされているセルデータのセルの北東のセル（北東セル）のセルデータに対する添え字である。
【０１４４】
続いて、有向枝生成部１１４は、処理対象のセルの出口ノードから北東セルの入り口ノードへの有向枝に対応させる枝データｅをメモリ装置１０３に一つ生成し、枝データｅのメンバ変数に値を記録する（Ｓ２３Ｈ−２）。具体的には、枝データｅの始点ノードＩＤ（ｓＮ）に処理対象のセルのセルデータ（セルデータ配列ｃｅｌｌ［ｉ］）の出口ノードＩＤ（ｏＮ）が記録される。また、枝データｅの終点ノードＩＤ（ｅＮ）に北東セルのセルデータ（セルデータ配列ｃｅｌｌ［ｎｅ＿ｃｅｌｌ＿ｉｄ］）の入り口ノードＩＤ（ｉＮ）が記録される。これによって、枝データｅは、処理対象のセルの出口ノードから北東セルの入り口ノードへの有向枝に対応する枝データとなる。また、処理対象のセルのセルデータの容量（ｃａｐ）の値と北東セルのセルデータの容量の値とのうち小さい方の値が枝データｅの容量（ｃａｐ）に記録される。また、枝データｅの枝の長さ（ｅＬｅｎ）に１が記録される。また、枝データｅのフロー（ｆｌｏｗ）に初期値０が記録される。また、枝データｅの残余（ｒｅｓ）に枝データｅの容量（ｃａｐ）の値が記録される。
【０１４５】
また、有向枝生成部１１４は、枝データｅの始点ノードのノードデータ（ノードデータ配列ｖ［ｅ−＞ｓＮ］）の北東セルのノードとの有向枝（ｅＮＥ）に枝データｅを記録する。また、有向枝生成部１１４は、枝データｅの終点ノードのノードデータ（ノードデータ配列ｖ［ｅ−＞ｅＮ］）の南西セルのノードとの有向枝（ｅＳＷ）に枝データｅを記録する。これによって、処理対象のセルの出口ノードのノードデータと北東セルの入り口ノードのノードデータとのそれぞれに、他方のノードとの有向枝の枝データが登録されたことになる。
【０１４６】
続いて、有向枝生成部１１４は、北東セルの出口ノードから処理対象のセルの入り口ノードへの有向枝に対応させる枝データｅをメモリ装置１０３に一つ生成し、枝データｅのメンバ変数に値を記録する（Ｓ２３Ｈ−３）。具体的には、枝データｅの始点ノードＩＤ（ｓＮ）に北東セルのセルデータ（セルデータ配列ｃｅｌｌ［ｎｅ＿ｃｅｌｌ＿ｉｄ］）の出口ノードＩＤ（ｏＮ）が記録される。また、枝データｅの終点ノードＩＤ（ｅＮ）に処理対象のセルのセルデータ（セルデータ配列ｃｅｌｌ［ｉ］）の入り口ノードＩＤ（ｉＮ）が記録される。これによって、枝データｅは、北東セルの出口ノードから処理対象のセルの入り口ノードへの有向枝に対応する枝データとなる。また、北東セルのセルデータの容量（ｃａｐ）の値と処理対象のセルのセルデータの容量の値とのうち小さい方の値が枝データｅの容量（ｃａｐ）に記録される。また、枝データｅの枝の長さ（ｅＬｅｎ）に１が記録される。また、枝データｅのフロー（ｆｌｏｗ）に初期値０が記録される。また、枝データｅの残余（ｒｅｓ）に枝データｅの容量（ｃａｐ）の値が記録される。
【０１４７】
また、有向枝生成部１１４は、枝データｅの始点ノードのノードデータ（ノードデータ配列ｖ［ｅ−＞ｓＮ］）の南西セルのノードとの有向枝（ｅＳＷ）に枝データｅを記録する。また、有向枝生成部１１４は、枝データｅの終点ノードのノードデータ（ノードデータ配列ｖ［ｅ−＞ｅＮ］）の北東セルのノードとの有向枝（ｅＮＥ）に枝データｅを記録する。これによって、北東セルの出口ノードのノードデータと処理対象のセルの入り口ノードのノードデータとのそれぞれに、他方のノードとの有向枝の枝データが登録されたことになる。
【０１４８】
続いて、図３３のステップＳ１−５−２３Ｋの詳細について説明する。図３６は、南西のセルとの有向枝の生成処理の処理手順を説明するためのフローチャートである。
【０１４９】
ステップＳ２３Ｋ−１において、有向枝生成部１１４は、ｓｗ＿ｃｅｌｌ＿ｉｄ＝ｉ＋ｃｏｌＭａｘ−１を計算する。ここで、変数ｉ及びｃｏｌＭａｘの値は、図３３の処理においてステップＳ１−５−２３Ｋが呼び出された時点の値である。したがって、計算結果ｓｗ＿ｃｅｌｌ＿ｉｄは、図３３の処理において処理対象とされているセルデータのセルの南西のセル（南西セル）のセルデータに対する添え字である。
【０１５０】
続いて、有向枝生成部１１４は、処理対象のセルの出口ノードから南西セルの入り口ノードへの有向枝に対応させる枝データｅをメモリ装置１０３に一つ生成し、枝データｅのメンバ変数に値を記録する（Ｓ２３Ｋ−２）。具体的には、枝データｅの始点ノードＩＤ（ｓＮ）に処理対象のセルのセルデータ（セルデータ配列ｃｅｌｌ［ｉ］）の出口ノードＩＤ（ｏＮ）が記録される。また、枝データｅの終点ノードＩＤ（ｅＮ）に南西セルのセルデータ（セルデータ配列ｃｅｌｌ［ｓｗ＿ｃｅｌｌ＿ｉｄ］）の入り口ノードＩＤ（ｉＮ）が記録される。これによって、枝データｅは、処理対象のセルの出口ノードから南西セルの入り口ノードへの有向枝に対応する枝データとなる。また、処理対象のセルのセルデータの容量（ｃａｐ）の値と南西セルのセルデータの容量の値とのうち小さい方の値が枝データｅの容量（ｃａｐ）に記録される。また、枝データｅの枝の長さ（ｅＬｅｎ）に１が記録される。また、枝データｅのフロー（ｆｌｏｗ）に初期値０が記録される。また、枝データｅの残余（ｒｅｓ）に枝データｅの容量（ｃａｐ）の値が記録される。
【０１５１】
また、有向枝生成部１１４は、枝データｅの始点ノードのノードデータ（ノードデータ配列ｖ［ｅ−＞ｓＮ］）の南西セルのノードとの有向枝（ｅＳＷ）に枝データｅを記録する。また、有向枝生成部１１４は、枝データｅの終点ノードのノードデータ（ノードデータ配列ｖ［ｅ−＞ｅＮ］）の北東セルのノードとの有向枝（ｅＮＥ）に枝データｅを記録する。これによって、処理対象のセルの出口ノードのノードデータと南西セルの入り口ノードのノードデータとのそれぞれに、他方のノードとの有向枝の枝データが登録されたことになる。
【０１５２】
続いて、有向枝生成部１１４は、南西セルの出口ノードから処理対象のセルの入り口ノードへの有向枝に対応させる枝データｅをメモリ装置１０３に一つ生成し、枝データｅのメンバ変数に値を記録する（Ｓ２３Ｋ−３）。具体的には、枝データｅの始点ノードＩＤ（ｓＮ）に南西セルのセルデータ（セルデータ配列ｃｅｌｌ［ｓｗ＿ｃｅｌｌ＿ｉｄ］）の出口ノードＩＤ（ｏＮ）が記録される。また、枝データｅの終点ノードＩＤ（ｅＮ）に処理対象のセルのセルデータ（セルデータ配列ｃｅｌｌ［ｉ］）の入り口ノードＩＤ（ｉＮ）が記録される。これによって、枝データｅは、南西セルの出口ノードから処理対象のセルの入り口ノードへの有向枝に対応する枝データとなる。また、南西セルのセルデータの容量（ｃａｐ）の値と処理対象のセルのセルデータの容量の値とのうち小さい方の値が枝データｅの容量（ｃａｐ）に記録される。また、枝データｅの枝の長さ（ｅＬｅｎ）に１が記録される。また、枝データｅのフロー（ｆｌｏｗ）に初期値０が記録される。また、枝データｅの残余（ｒｅｓ）に枝データｅの容量（ｃａｐ）の値が記録される。
【０１５３】
また、有向枝生成部１１４は、枝データｅの始点ノードのノードデータ（ノードデータ配列ｖ［ｅ−＞ｓＮ］）の北東セルのノードとの有向枝（ｅＮＥ）に枝データｅを記録する。また、有向枝生成部１１４は、枝データｅの終点ノードのノードデータ（ノードデータ配列ｖ［ｅ−＞ｅＮ］）の南西セルのノードとの有向枝（ｅＳＷ）に枝データｅを記録する。これによって、南西セルの出口ノードのノードデータと処理対象のセルの入り口ノードのノードデータとのそれぞれに、他方のノードとの有向枝の枝データが登録されたことになる。
【０１５４】
続いて、図３３のステップＳ１−５−２３Ｍの詳細について説明する。図３７は、南東のセルとの有向枝の生成処理の処理手順を説明するためのフローチャートである。
【０１５５】
ステップＳ２３Ｍ−１において、有向枝生成部１１４は、ｓｅ＿ｃｅｌｌ＿ｉｄ＝ｉ＋ｃｏｌＭａｘ＋１を計算する。ここで、変数ｉ及びｃｏｌＭａｘの値は、図３３の処理においてステップＳ１−５−２３Ｍが呼び出された時点の値である。したがって、計算結果ｓｅ＿ｃｅｌｌ＿ｉｄは、図３３の処理において処理対象とされているセルデータのセルの南東のセル（南東セル）のセルデータに対する添え字である。
【０１５６】
続いて、有向枝生成部１１４は、処理対象のセルの出口ノードから南東セルの入り口ノードへの有向枝に対応させる枝データｅをメモリ装置１０３に一つ生成し、枝データｅのメンバ変数に値を記録する（Ｓ２３Ｍ−２）。具体的には、枝データｅの始点ノードＩＤ（ｓＮ）に処理対象のセルのセルデータ（セルデータ配列ｃｅｌｌ［ｉ］）の出口ノードＩＤ（ｏＮ）が記録される。また、枝データｅの終点ノードＩＤ（ｅＮ）に南東セルのセルデータ（セルデータ配列ｃｅｌｌ［ｓｅ＿ｃｅｌｌ＿ｉｄ］）の入り口ノードＩＤ（ｉＮ）が記録される。これによって、枝データｅは、処理対象のセルの出口ノードから南東セルの入り口ノードへの有向枝に対応する枝データとなる。また、処理対象のセルのセルデータの容量（ｃａｐ）の値と南東セルのセルデータの容量の値とのうち小さい方の値が枝データｅの容量（ｃａｐ）に記録される。また、枝データｅの枝の長さ（ｅＬｅｎ）に１が記録される。また、枝データｅのフロー（ｆｌｏｗ）に初期値０が記録される。また、枝データｅの残余（ｒｅｓ）に枝データｅの容量（ｃａｐ）の値が記録される。
【０１５７】
また、有向枝生成部１１４は、枝データｅの始点ノードのノードデータ（ノードデータ配列ｖ［ｅ−＞ｓＮ］）の南東セルのノードとの有向枝（ｅＳＥ）に枝データｅを記録する。また、有向枝生成部１１４は、枝データｅの終点ノードのノードデータ（ノードデータ配列ｖ［ｅ−＞ｅＮ］）の北西セルのノードとの有向枝（ｅＮＷ）に枝データｅを記録する。これによって、処理対象のセルの出口ノードのノードデータと南東セルの入り口ノードのノードデータとのそれぞれに、他方のノードとの有向枝の枝データが登録されたことになる。
【０１５８】
続いて、有向枝生成部１１４は、南東セルの出口ノードから処理対象のセルの入り口ノードへの有向枝に対応させる枝データｅをメモリ装置１０３に一つ生成し、枝データｅのメンバ変数に値を記録する（Ｓ２３Ｍ−３）。具体的には、枝データｅの始点ノードＩＤ（ｓＮ）に南東セルのセルデータ（セルデータ配列ｃｅｌｌ［ｓｅ＿ｃｅｌｌ＿ｉｄ］）の出口ノードＩＤ（ｏＮ）が記録される。また、枝データｅの終点ノードＩＤ（ｅＮ）に処理対象のセルのセルデータ（セルデータ配列ｃｅｌｌ［ｉ］）の入り口ノードＩＤ（ｉＮ）が記録される。これによって、枝データｅは、南東セルの出口ノードから処理対象のセルの入り口ノードへの有向枝に対応する枝データとなる。また、南東セルのセルデータの容量（ｃａｐ）の値と処理対象のセルのセルデータの容量の値とのうち小さい方の値が枝データｅの容量（ｃａｐ）に記録される。また、枝データｅの枝の長さ（ｅＬｅｎ）に１が記録される。また、枝データｅのフロー（ｆｌｏｗ）に初期値０が記録される。また、枝データｅの残余（ｒｅｓ）に枝データｅの容量（ｃａｐ）の値が記録される。
【０１５９】
また、有向枝生成部１１４は、枝データｅの始点ノードのノードデータ（ノードデータ配列ｖ［ｅ−＞ｓＮ］）の北西セルのノードとの有向枝（ｅＮＷ）に枝データｅを記録する。また、有向枝生成部１１４は、枝データｅの終点ノードのノードデータ（ノードデータ配列ｖ［ｅ−＞ｅＮ］）の南東セルのノードとの有向枝（ｅＳＥ）に枝データｅを記録する。これによって、南東セルの出口ノードのノードデータと処理対象のセルの入り口ノードのノードデータとのそれぞれに、他方のノードとの有向枝の枝データが登録されたことになる。
【０１６０】
続いて、図２３のステップＳ１−５−３の詳細について説明する。図３８は、湧き出しノードから引き出し対象セルへの有向枝の生成処理の処理手順を説明するためのフローチャートである。
【０１６１】
ステップＳ１−５−３Ａにおいて、有向枝生成部１１４は、変数ｃｏｌＭａｘに列方向のセルの数を代入し、変数ｒｏｗＭａｘに行方向のセルの数を代入し、変数ｃｅｌｌＭａｘにセルの総数（ｃｏｌＭａｘ×ｒｏｗＭａｘ）を代入する。また、有向枝生成部１１４は、変数ｉに初期値０を代入する。変数ｉは、セルデータ配列ｃｅｌｌにおいて処理対象とする要素（セルデータ）の添え字として利用される。
【０１６２】
続いて、有向枝生成部１１４は、処理対象のセルデータ（セルデータ配列ｃｅｌｌ［ｉ］）のセル属性（ａｔｔｒ）の値が「Ｓ（引き出し対象ピン）」であるか否かを判定する（Ｓ１−５−３Ｂ）。処理対象のセルデータのセル属性の値がＳの場合（Ｓ１−５−３ＢでＹｅｓ）、有向枝生成部１１４は、処理対象のセルデータのセルの入り口ノードのノードデータ（ノードデータ配列ｖ［ｃｅｌｌ［ｉ］．ｉＮ］）のソースフラグ（ｓＦｌａｇ）にｔｒｕｅを記録する（Ｓ１−５−３Ｃ）。
【０１６３】
続いて、有向枝生成部１１４は、湧き出しノードＳから処理対象のセルへの有向枝に対応させる枝データｅをメモリ装置１０３に一つ生成し、枝データｅのメンバ変数に値を記録する（Ｓ１−５−３Ｄ）。具体的には、枝データｅの始点ノードＩＤ（ｓＮ）に湧き出しノードＳのノードＩＤ（０）が記録される。また、枝データｅの終点ノードＩＤ（ｅＮ）に処理対象のセルのセルデータ（セルデータ配列ｃｅｌｌ［ｉ］）の入り口ノードＩＤ（ｉＮ）が記録される。これによって、枝データｅは、処理対象の湧き出しノードＳから処理対象のセルの入り口ノードへの有向枝に対応する枝データとなる。また、枝データｅの容量（ｃａｐ）に１が記録される。すなわち、湧き出しノードＳから引き出し対象セルの入り口ノードへの有向枝の容量は１とされる。また、枝データｅの枝の長さ（ｅＬｅｎ）に１が記録される。また、枝データｅのフロー（ｆｌｏｗ）に初期値０が記録される。また、枝データｅの残余（ｒｅｓ）に枝データｅの容量（ｃａｐ）の値が記録される。
【０１６４】
また、有向枝生成部１１４は、枝データｅに係る有向枝の始点ノード（すなわち、湧き出しノードＳ）のノードデータ（ノードデータ配列ｖ［０］）の湧き出しノードＳからの有向枝のリスト（ｓｏｕｒｃｅＥｄｇｅＬｉｓｔ）に、枝データｅを追加する。
【０１６５】
ステップＳ１−５−３Ｄ、又はステップＳ１−５−３ＢでＮｏの場合に続いて、有向枝生成部１１４は、変数ｉをインクリメントする（Ｓ１−５−３Ｅ）。すなわち、セルデータ配列ｃｅｌｌにおいて次のセルデータが処理対象とされる。続いて、有向枝生成部１１４は、変数ｉの値がｃｅｌｌＭａｘ（セルの総数）未満であるか否かを判定することにより、未処理のセルデータが有るか否かを判定する（Ｓ１−５−３Ｆ）。未処理のセルデータが有る場合（Ｓ１−５−３ＦでＹｅｓ）、有向枝生成部１１４は、ステップＳ１−５−３Ｂ以降を繰り返す。未処理のセルデータが無い場合（Ｓ１−５−３ＦでＮｏ）、有向枝生成部１１４は、図３８の処理を終了させる。
【０１６６】
続いて、図２３のステップＳ１−５−４の詳細について説明する。図３９は、出口セルから流入ノードへの有向枝の生成処理の処理手順を説明するためのフローチャートである。
【０１６７】
ステップＳ１−５−４Ａにおいて、有向枝生成部１１４は、変数ｃｏｌＭａｘに列方向のセルの数を代入し、変数ｒｏｗＭａｘに行方向のセルの数を代入し、変数ｃｅｌｌＭａｘにセルの総数（ｃｏｌＭａｘ×ｒｏｗＭａｘ）を代入する。また、有向枝生成部１１４は、変数ｉに初期値０を代入する。変数ｉは、セルデータ配列ｃｅｌｌにおいて処理対象とする要素（セルデータ）の添え字として利用される。
【０１６８】
続いて、有向枝生成部１１４は、処理対象のセルデータ（セルデータ配列ｃｅｌｌ［ｉ］）の出口フラグ（ｅｘｉｔＦ）の値がｔｕｒｅであり、かつ、処理対象のセルデータの容量が０より大きいか否かを判定する（Ｓ１−５−４Ｂ）。この判定は、処理対象のセルデータが出口セルに対応するセルデータであるか否かの判定に相当する。すなわち、出口フラグの値がｔｒｕｅであるセルデータは、セル行列において外周に位置するセルのセルデータである（図１４のステップＳ１−１−４参照）。また、外周に位置するセルのセルデータのうち、容量が０より大きいのは出口セルのセルデータだけである（図１６のステップＳ１−２−６参照）。
【０１６９】
ステップＳ１−５−４ＢでＹｅｓの場合、すなわち、処理対象のセルデータが出口セルのセルデータである場合、有向枝生成部１１４は、処理対象のセルデータのセルの出口ノードのノードデータ（ノードデータ配列ｖ［ｃｅｌｌ［ｉ］．ｏＮ］）のターゲットフラグ（ｔＦｌａｇ）にｔｒｕｅを記録する（Ｓ１−５−４Ｃ）。
【０１７０】
続いて、有向枝生成部１１４は、処理対象のセルから流入ノードＴへの有向枝に対応させる枝データｅをメモリ装置１０３に一つ生成し、枝データｅのメンバ変数に値を記録する（Ｓ１−５−４Ｄ）。具体的には、枝データｅの始点ノードＩＤ（ｓＮ）に処理対象のセルデータ（セルデータ配列ｃｅｌｌ［ｉ］）の出口ノードＩＤ（ｏＮ）が記録される。また、枝データｅの終点ノードＩＤ（ｅＮ）に流入ノードＴのノードＩＤ（ｖｅｒｔｅｘＮｕｍ−１）が記録される。これによって、枝データｅは、処理対象のセルの出口ノードから流入ノードＴへの有向枝に対応する枝データとなる。また、枝データｅの容量（ｃａｐ）に処理対象のセルデータの容量（ｃａｐ）が記録される。すなわち、出口セルの出口ノードから流入ノードＴへの有向枝の容量は出口セルの容量とされる。また、枝データｅの枝の長さ（ｅＬｅｎ）に１が記録される。また、枝データｅのフロー（ｆｌｏｗ）に初期値０が記録される。また、枝データｅの残余（ｒｅｓ）に枝データｅの容量（ｃａｐ）の値が記録される。
【０１７１】
また、有向枝生成部１１４は、枝データｅに係る有向枝の終点ノード（すなわち、流入ノードＴ）のノードデータ（ノードデータ配列ｖ［ｖｅｒｔｅｘＮｕｍ−１］）の流入ノードへの有向枝のリスト（ｔａｒｇｅｔＥｄｇｅＬｉｓｔ）に、枝データｅを追加する。
【０１７２】
ステップＳ１−５−４Ｄ、又はステップＳ１−５−４ＢでＮｏの場合に続いて、有向枝生成部１１４は、変数ｉをインクリメントする（Ｓ１−５−４Ｅ）。すなわち、セルデータ配列ｃｅｌｌにおいて次のセルデータが処理対象とされる。続いて、有向枝生成部１１４は、変数ｉの値がｃｅｌｌＭａｘ（セルの総数）未満であるか否かを判定することにより、未処理のセルデータが有るか否かを判定する（Ｓ１−５−４Ｆ）。未処理のセルデータが有る場合（Ｓ１−５−４ＦでＹｅｓ）、有向枝生成部１１４は、ステップＳ１−５−４Ｂ以降を繰り返す。未処理のセルデータが無い場合（Ｓ１−５−４ＦでＮｏ）、有向枝生成部１１４は、図３９の処理を終了させる。
【０１７３】
以上で図９のステップＳ１−５の説明は終了する。すなわち、図５のステップＳ１の説明は終了する。この時点における処理結果は、図６に示した通りである。
【０１７４】
続いて、図５のステップＳ２の詳細について説明する。図４０は、有向グラフにおける最短経路の探索処理の処理手順を説明するためのフローチャートである。なお、本実施の形態では、最短経路を求めるアルゴリズムとしてダイクストラ法（Dijkstra's Algorithm）を採用する。但し、公知の他のアルゴリズムを採用してもよい。
【０１７５】
ステップＳ２−１において、最短経路探索部１２１は、湧き出しノードＳのノードデータの湧き出しノードＳからの有向枝のリスト（ｓｏｕｒｃｅＥｄｇｅＬｉｓｔ）からフロー（ｆｌｏｗ）の値が０の枝データを一つ取得し、変数ｃＥｄｇｅに代入する。湧き出しノードＳのｓｏｕｒｃｅＥｄｇｅＬｉｓｔには、図３８の処理によって湧き出しノードＳから全ての引き出し対象セルの入り口ノードへの有向枝に対する枝データが記録されている。当該有向枝は、図６の例では６本示されている。ステップＳ２−１では、６本のうちフロー（ｆｌｏｗ）の値が０の有向枝の枝データが一つ取得される。なお、最初は、全ての枝データのフロー（ｆｌｏｗ）の値は０であり、後段の処理によってフローの値は変化する。また、変数ｃＥｄｇｅは、処理対象とする枝データを格納する枝データ型の変数である。ｃＥｄｇｅに代入された枝データを以下、「枝データｃＥｄｇｅ」という。
【０１７６】
枝データｃＥｄｇｅを取得できた場合、すなわち、湧き出しノードＳのノードデータのｓｏｕｒｃｅＥｄｇｅＬｉｓｔに該当する枝データが存在した場合（Ｓ２−２）、最短経路探索部１２１は、全てのノードデータ（ノードデータ配列ｖの全ての要素）の中で、ソースフラグ（ｓＦｌａｇ）又はターゲットフラグ（ｔＦｌａｇ）がｔｒｕｅでないノードデータのラベル伝播元ノードＩＤ（ｐＩＤ）、最短経路長（ｄｉｓｔ）、及びラベルフロントフラグ（ｌＦｒｏｎｔＦ）の値を初期化する（Ｓ２−３）。具体的には、ｐＩＤにＮＵＬＬＩＤを、ｄｉｓｔにｄｉｓｔＭａｘを、ｌＦｒｏｎｔＦにｆａｌｓｅを代入する。なお、ソースフラグ（ｓＦｌａｇ）がｔｒｕｅのノードデータとは、湧き出しノードＳ又は引き出し対象セルの入り口ノードのノードデータである。また、ターゲットフラグ（ｔＦｌａｇ）がｔｒｕｅのノードデータとは、流入ノードＴ又は出口セルの出口ノードのノードデータである。したがって、湧き出しノードＳ、引き出し対象セルの入り口ノード、流入ノードＴ、及び出口セルの出口ノードを除く全てのノードのノードデータに関してステップＳ２−３の処理が実行される。
【０１７７】
続いて、最短経路探索部１２１は、変数ｐａｔｈＦの値をｆａｌｓｅに初期化する（Ｓ２−４）。
【０１７８】
続いて、最短経路探索部１２１は、枝データｃＥｄｇｅの始点ノードＩＤ（ｓＮ）をｃｕｒｒｅｎｔＶに代入し、枝データｃＥｄｇｅの終点ノードＩＤ（ｅＮ）をｎｅｘｔＶに代入する（Ｓ２−５）。枝データｃＥｄｇｅは、湧き出しノードＳから引き出し対象セルの入り口ノードへの有向枝の枝データである。したがって、ｃｕｒｒｅｎｔＶは、湧き出しノードＳのノードＩＤを示す。また、ｎｅｘｔＶは、引き出し対象セルの入り口ノードのノードＩＤを示す。
【０１７９】
続いて、最短経路探索部１２１は、引き出し対象セルの入り口ノードのノードデータ（ノードデータ配列ｖ［ｎｅｘｔＶ］）のメンバ変数の値を更新する（Ｓ２−６）。具体的には、ラベル伝播元ノードＩＤ（ｐＩＤ）にｃｕｒｒｅｎｔＶの値が代入される。また、最短経路長（ｄｉｓｔ）に枝データｃＥｄｇｅの枝の長さ（ｅＬｅｎ＝１）が代入される。また、ラベルフロントフラグ（ｌＦｒｏｎｔＦ）にｔｒｕｅが代入される。ｌＦｔｏｎｔＦがｔｒｕｅとされることにより、当該ノードデータが経路探索においてラベルフロント（最前線）に位置することが識別される。また、最短経路探索部１２１は、当該ノードデータを変数ｌＦｒｏｎｔＬｉｓｔに追加する。変数ｌＦｒｏｎｔＬｉｓｔは、経路探索において最前線に位置するノードのノードデータの一覧を格納するための変数である。
【０１８０】
続いて、最短経路探索部１２１は、変数ｌＦｒｏｎｔＬｉｓｔから最短経路長（ｄｉｓｔ）の値が最小のノードデータｃｖを取り出し、経路探索のラベリングを行う（Ｓ２−７）。なお、変数ｌＦｒｏｎｔＬｉｓｔから取り出されたノードデータは、変数ｌＦｒｏｎｔＬｉｓｔより除去される。続いて、最短経路探索部１２１は、変数ｌＦｒｏｎｔＬｉｓｔにノードデータが残っているか否かを判定する（Ｓ２−８）。ノードデータが残っている場合（Ｓ２−８でＹｅｓ）、最短経路探索部１２１は、変数ｌＦｒｏｎｔＬｉｓｔからノードデータが無くなるまでステップＳ２−７を繰り返し実行する。
【０１８１】
変数ｌＦｒｏｎｔＬｉｓｔにノードデータが残っていない場合（Ｓ２−８でＮｏ）、最短経路探索部１２１は、変数ｐａｔｈＦの値はｔｒｕｅであるか否かを判定する（Ｓ２−９）。変数ｐａｔｈＦの値は、ステップＳ２−７における経路探索において、目的地点のノード、すなわち、出口セルの出口ノードまで到達した場合にｔｒｕｅとされる。
【０１８２】
変数ｐａｔｈＦの値がｔｒｕｅの場合（Ｓ２−９でＹｅｓ）、バックトレース部１２２は、経路探索の結果をバックトレースし、探索された経路において使用された有向枝のフロー（ｆｌｏｗ）と残余（ｒｅｓ）とを更新する（Ｓ２−１０）。ステップＳ２−１０、又はステップＳ２−９でＮｏの場合に続いて、ステップＳ２−１以降が繰り返し実行される。ステップＳ２−１においてフロー（ｆｌｏｗ）枝データｃＥｄｇｅが取得できなかったら（Ｓ２−２でＮｏ）、図４０の処理は終了する。
【０１８３】
続いて、図４０のステップＳ２−７の詳細について説明する。図４１は、経路探索のラベリング処理の処理手順を説明するためのフローチャートである。
【０１８４】
ステップＳ２−７−１において、最短経路探索部１２１は、変数ｉを０に初期化する。続いて、最短経路探索部１２１は、枝データｃｒｒＥｄｇｅにノードデータｃｖ（経路探索において最前線に居るノードデータの１つ）に接続しているいずれかの枝データを代入する。枝データｃｒｒＥｄｇｅは、図４１において処理対象とされる枝データである。枝データｃｒｒＥｄｇｅに代入される枝データは、変数ｉの値によって変化する。すなわち、変数ｉの値が０のとき、ノードデータｃｖの相棒ノードとの有向枝（ｅＢｒｏｓ）が枝データｃｒｒＥｄｇｅに代入される。変数ｉの値が１のとき、ノードデータｃｖの東隣セルのノードとの有向枝（ｅＥ）が枝データｃｒｒＥｄｇｅに代入される。変数ｉの値が２のとき、ノードデータｃｖの西隣セルのノードとの有向枝（ｅＷ）が枝データｃｒｒＥｄｇｅに代入される。変数ｉの値が３のとき、ノードデータｃｖの南隣セルのノードとの有向枝（ｅＳ）が枝データｃｒｒＥｄｇｅに代入される。変数ｉの値が４のとき、ノードデータｃｖの北隣セルのノードとの有向枝（ｅＮ）が枝データｃｒｒＥｄｇｅに代入される。変数ｉの値が５のとき、ノードデータｃｖの北東セルのノードとの有向枝（ｅＮＥ）が枝データｃｒｒＥｄｇｅに代入される。変数ｉの値が６のとき、ノードデータｃｖの北西セルのノードとの有向枝（ｅＮＷ）が枝データｃｒｒＥｄｇｅに代入される。変数ｉの値が７のとき、ノードデータｃｖの南東セルのノードとの有向枝（ｅＳＥ）が枝データｃｒｒＥｄｇｅに代入される。変数ｉの値が７のとき、ノードデータｃｖの南西セルのノードとの有向枝（ｅＳＷ）が枝データｃｒｒＥｄｇｅに代入される。
【０１８５】
なお、変数ｉの値は、ステップＳ２−７−２以降のループが実行されるたびにインクリメントされる。したがって、ステップＳ２−７−２以降では、ループの回数に応じて処理対象とされる枝データｃｒｒＥｄｇｅが順番に変化する。
【０１８６】
続いて、最短経路探索部１２１は、枝データｃｒｒＥｄｇｅの値が空であるか否かを判定する（Ｓ２−７−３）。枝データｃｒｒＥｄｇｅが空でない場合（Ｓ２−７−３でＮｏ）、最短経路探索部１２１は、ノードデータｃＶの最短経路長（ｄｉｓｔ）に枝データｃｒｒＥｄｇｅの枝の長さ（ｅＬｅｎ）を加算した値を変数Ｄに代入する（Ｓ２−７−４）。変数Ｄの値は、枝データｃｒｒＥｄｇｅにおいてノードデータｃｖの他方に位置するノードデータの経路長を示す。但し、当該経路長が最短経路長であることは確定されていない。
【０１８７】
続いて、最短経路探索部１２１は、変数Ｄの値が流入ノードＴの最短経路長（ｄｉｓｔ）より小さいか否かを判定する（Ｓ２−７−５）。なお、流入ノードＴまでの経路が探索されるまでは流入ノードＴの最短経路長（ｄｉｓｔ）の値はｄｉｓｔＭａｘ（最大値）である。
【０１８８】
続いて、最短経路探索部１２１は、ノードデータｃｖに係るノードは枝データｃｒｒＥｄｇｅの始点ノードであり、かつ、枝データｃｒｒＥｄｇｅの残余（ｒｅｓ）の値が０より大きく、かつ、枝データｃｒｒＥｄｇｅに係る有向枝の終点ノードのノードデータの最短経路長（ｄｉｓｔ）は変数Ｄより大きいか否かを判定する（Ｓ２−７−６）。
【０１８９】
この判定は、ノードデータｃｖに係るノードが枝データｃｒｒＥｄｇｅの始点ノードである場合において、枝データｃｒｒＥｄｇｅに係る有向枝が目的地点までの最短経路を構成する有向枝となりうるか否か（当該有向枝の先を探索する価値は有るか否か）の判定に相当する。すなわち、枝データｃｒｒＥｄｇｅの残余が０であれば、当該枝データｃｒｒＥｄｇｅを経路として使うことはできないからである。また、枝データｃｒｒＥｄｇｅの終点ノードの最短経路長（ｄｉｓｔ）の値が変数Ｄの値以下であれば、これから探索しようとする当該終点ノードまでの経路は最短経路ではないからである。なお、特定のノード以外のノードデータの最短経路長（ｄｉｓｔ）は、図４０のステップＳ２−３においてｄｉｓｔＭａｘに初期化されている。したがって、少なくとも最初の探索時において、ノードデータｃｖに係るノードが枝データｃｒｒＥｄｇｅの始点ノードである場合は、ステップＳ２−７−６の判定はＹｅｓとなる。
【０１９０】
ステップＳ２−７−６でＹｅｓの場合、最短経路探索部１２１は、枝データｃｒｒＥｄｇｅの終点ノードのノードデータの最短経路長（ｄｉｓｔ）の値を変数Ｄの値によって更新する。また、最短経路探索部１２１は、枝データｃｒｒＥｄｇｅの終点ノードのノードデータのラベル伝播元ノードＩＤ（ｐＩＤ）の値をノードデータｃＶのノードＩＤによって更新する（Ｓ２−７−７）。
【０１９１】
続いて、最短経路探索部１２１は、枝データｃｒｒＥｄｇｅの終点ノードのノードデータのターゲットフラグ（ｔＦｌａｇ）がｔｒｕｅであるか否か、すなわち、当該終点ノードが出口セルの出口ノード（目的地点のノード）であるか否かを判定する（Ｓ２−７−８）。枝データｃｒｒＥｄｇｅの終点ノードのノードデータのターゲットフラグ（ｔＦｌａｇ）がｔｒｕｅの場合（Ｓ２−７−８でＹｅｓ）、最短経路探索部１２１は、目的地点まで到達したとして変数ｐａｔｈＦの値をｔｒｕｅとする（Ｓ２−７−９）。また、最短経路探索部１２１は、枝データｃｒｒＥｄｇｅの終点ノードのノードＩＤを流入ノードＴのノードデータの伝播元ノードＩＤに記録する（Ｓ２−７−１０）。
【０１９２】
ステップＳ２−７−１０、又はステップＳ２−７−８でＮｏの場合に続いて、最短経路探索部１２１は、枝データｃｒｒＥｄｇｅの終点ノードのノードデータのラベルフロントフラグ（ｌＦｒｏｎｔＦ）の値がｆａｌｓｅであり、かつ、当該ノードデータのターゲットフラグ（ｔＦｌａｇ）がｆａｌｓｅであるか否かを判定する（Ｓ２−７−１１）。すなわち、枝データｃｒｒＥｄｇｅの終点ノードは経路探索の最前線とされていない否か、及び当該終点ノードは出口セルの出口ノード（すなわち、目的地点のノード）でないか否かが判定される。
【０１９３】
ステップＳ２−７−１１でＹｅｓの場合、最短経路探索部１２１は、枝データｃｒｒＥｄｇｅの終点ノードのノードデータを変数ｌＦｒｏｎｔＬｉｓｔに追加し、当該ノードデータのラベルフロントフラグ（ｌＦｒｏｎｔＦ）をｔｒｕｅとする（Ｓ２−７−１２）。これにより、当該終点ノードが経路探索の最前線のノードの一つとされる。
【０１９４】
一方、ステップＳ２−７−６でＮｏの場合、最短経路探索部１２１は、ノードデータｃｖに係るノードは枝データｃｒｒＥｄｇｅの終点ノードであり、かつ、枝データｃｒｒＥｄｇｅのフロー（ｆｌｏｗ）の値が０より大きく、かつ、枝データｃｒｒＥｄｇｅに係る有向枝の始点ノードのノードデータの最短経路長（ｄｉｓｔ）は変数Ｄより大きいか否かを判定する（Ｓ２−７−１３）。
【０１９５】
この判定は、ノードデータｃＶに係るノードから枝データｃｒｒＥｄｇｅの終点ノードへの向きが枝データｃｒｒＥｄｇｅの有向枝の向きに逆行（逆流）する場合において、枝データｃｒｒＥｄｇｅに係る有向枝が目的地点までの最短経路を構成する有向枝となりうるか否か（当該有向枝の先を探索する価値は有るか否か）の判定に相当する。ここで、逆行は、枝データｃｒｒＥｄｇｅに係る有向枝が既に最短経路も利用されている場合、すなわち、枝データｃｒｒＥｄｇｅのフロー（ｆｌｏｗ）が０より大きい場合に限り許可される。逆行の意義及び既に最短経路に利用されている有向枝についてのみ逆行が許可される理由については後述する。
【０１９６】
ステップＳ２−７−１３でＹｅｓの場合、最短経路探索部１２１は、枝データｃｒｒＥｄｇｅの始点ノードのノードデータの最短経路長（ｄｉｓｔ）の値を変数Ｄの値によって更新する。また、最短経路探索部１２１は、枝データｃｒｒＥｄｇｅの始点ノードのノードデータのラベル伝播元ノードＩＤ（ｐＩＤ）の値をノードデータｃＶのノードＩＤによって更新する（Ｓ２−７−１４）。
【０１９７】
続いて、最短経路探索部１２１は、枝データｃｒｒＥｄｇｅの始点ノードのノードデータのラベルフロントフラグ（ｌＦｒｏｎｔＦ）の値がｆａｌｓｅであり、かつ、当該ノードデータのターゲットフラグ（ｔＦｌａｇ）がｆａｌｓｅであるか否かを判定する（Ｓ２−７−１５）。すなわち、枝データｃｒｒＥｄｇｅの始点ノードは経路探索の最前線とされていない否か、及び当該始点ノードは出口セルの出口ノード（すなわち、目的地点のノード）でないか否かが判定される。
【０１９８】
ステップＳ２−７−１５でＹｅｓの場合、最短経路探索部１２１は、枝データｃｒｒＥｄｇｅの始点ノードのノードデータを変数ｌＦｒｏｎｔＬｉｓｔに追加し、当該ノードデータのラベルフロントフラグ（ｌＦｒｏｎｔＦ）をｔｒｕｅとする（Ｓ２−７−１６）。これにより、当該始点ノードが経路探索の最前線のノードの一つとされる。
【０１９９】
ステップＳ２−７−１５でＹｅｓの場合、最短経路探索部１２１は、枝データｃｒｒＥｄｇｅの始点ノードのノードデータを変数ｌＦｒｏｎｔＬｉｓｔに追加し、当該ノードデータのラベルフロントフラグ（ｌＦｒｏｎｔＦ）をｔｒｕｅとする（Ｓ２−７−１６）。これにより、当該始点ノードが経路探索の最前線のノードの一つとされる。
【０２００】
ステップＳ２−７−１６、ステップＳ２−７−１５でＮｏの場合、ステップＳ２−７−１３でＮｏの場合、ステップＳ２−７−１２、ステップＳ２−７−１１でＮｏの場合、又は、ステップＳ２−７−５でＮｏの場合に続いて、最短経路探索部１２１は、変数ｉをインクリメントする（Ｓ２−７−１７）。続いて、最短経路探索部１２１は、変数ｉの値が９に達したか否かを判定する（Ｓ２−７−１８）。ここで、変数ｉを９と比較するのは、一つのノードに接続されうる最大の有向枝の数は９本だからである。より具体的には、ステップＳ２−７−２を介して、枝データｃＶのメンバ変数として含まれる全ての枝データに関して処理が完了した場合、変数ｉの値は９となるからである。
【０２０１】
変数ｉの値が９でない場合（Ｓ２−７−１８でＮｏ）、最短経路探索部１２１は、ステップＳ２−７−２以降を繰り返す。変数ｉの値が９である場合（Ｓ２−７−１８でＹｅｓ）、最短経路探索部１２１は、図４１の処理を終了させる。
【０２０２】
なお、図４１の処理が実行されることにより、経路探索の最前線はノードデータｃＶと有向枝で接続されているノードのうち、最短経路である可能性がある次のノードへと移動する（当該次ノードは複数存在しうる。）。続いて、当該次のノードを対象として、再帰的に図４１の処理が実行される。再帰的に図４１の処理が実行されることにより、最前線のノードに接続されている有向枝が一つずつ辿られ最短経路が探索される。探索された経路に係るノードデータには、ラベル伝播元ノードＩＤ（ｐＩＤ）及び最短距離長（ｄｉｓｔ）の値が記録されている。
【０２０３】
但し、各ノードデータのメンバ変数（ｐＩＤ、ｄｉｓｔ、ｌＦｒｏｎｔＦ）の値は、図４０のステップＳ２−１において処理対象の枝データｃＥｄｇｅが変化する度に初期化される（Ｓ２−３）。したがって、湧き出しノードＳから引き出し対象セルへの有向枝ごとに、各ノードデータのｐＩＤ、ｄｉｓｔ、及びｌＦｒｏｎｔＦは変化しうる。
【０２０４】
続いて、図４０のステップＳ２−１０の詳細について説明する。図４２は、バックトレース処理の処理手順を説明するためのシーケンス図である。ところで、ステップＳ２−１０（図４２の処理）は、変数ｌＦｌｏｎｔＬｉｓｔにノードデータが無く（Ｓ２−８でＮｏ）、かつ、変数ｐａｔｈＦの値がｔｒｕｅのとき（Ｓ２−９でＹｅｓの場合）に実行される。すなわち、一つの引き出し対象セルの入り口ノード（引き出し対象ノード）から出口セルの出口ノードまでの間の最短経路の探索が完了したときに実行される。図４２では、探索された最短経路を流入ノードＴからのバックトレースによって、当該最短経路に使用された有向枝のフロー（ｆｌｏｗ）及び残余（ｒｅｓ）が更新される。
【０２０５】
ステップＳ２−１０−１において、バックトレース部１２２は、流入ノードＴのノードデータ（ノードデータ配列ｖ［ｖｅｒｔｅｘＮｕｍ−１］）のラベル伝播元ノードＩＤ（ｐＩＤ）を変数ｐａｒＮに代入する。変数ｐａｒＮをノードＩＤとするノードを図４２において「親ノード」という。また、バックトレース部１２２は、親ノードのノードデータ（ノードデータ配列ｖ［ｐａｒＮ］）のラベル伝播元ノードＩＤ（ｐＩＤ）を変数ａｎｃＮに代入する。変数ａｎｃＮをノードＩＤとするノードを図４２において「祖先ノード」という。
【０２０６】
続いて、バックトレース部１２２は、親ノードのノードデータ（ノードデータ配列ｖ［ｐａｒＮ］）に登録されている各枝データ（ｅＢｒｏｓ、ｅＥ、ｅＷ、ｅＳ、ｅＮ、ｅＮＥ、ｅＮＷ、ｅＳＥ、ｅＳＷ）の中から変数ｐａｒＮをノードＩＤとするノードと変数ａｎｃＮをノードＩＤとするノードとを両端点とする枝データを検索し、検索された枝データを枝データｓｅｇとする（Ｓ２−１０−２）。
【０２０７】
続いて、バックトレース部１２２は、枝データｓｅｇの始点ノードＩＤ（ｓＮ）の値が変数ａｎｃＮの値と一致し、かつ、枝データｓｅｇの終点ノードＩＤ（ｅＮ）の値が変数ｐａｒＮの値と一致するか否かを判定する（Ｓ２−１０−３）。すなわち、枝データｓｅｇの向きと、ラベル伝播の方向とが一致しているか否かが判定される。
【０２０８】
ステップＳ２−１０−３でＹｅｓの場合、バックトレース部１２２は、枝データｓｅｇのフロー（ｆｌｏｗ）に１を加算する。また、バックトレース部１２２は、枝データｓｅｇの残余（ｒｅｓ）の値を｛容量（ｃａｐ）−フロー（ｆｒｏｗ）｝の計算結果で更新する（Ｓ２−１０−４）。すなわち、枝データｓｅｇに係る有向枝が、最短経路に利用されたことが記録される。
【０２０９】
一方、ステップＳ２−１０−３でＮｏの場合、バックトレース部１２２は、枝データｓｅｇの始点ノードＩＤ（ｓＮ）の値が変数ｐａｒＮの値と一致し、かつ、枝データｓｅｇの終点ノードＩＤ（ｅＮ）の値が変数ａｎｃＮの値と一致するか否かを判定する（Ｓ２−１０−４）。すなわち、ラベル伝播の方向が枝データｓｅｇの向きに対して逆行しているか否かが判定される。このような状況（ラベル伝播の方向が枝データｓｅｇの向きに逆行する状況）は、図４１においてステップＳ２−７−１４が実行された場合に発生する。
【０２１０】
ステップＳ２−１０−６でＹｅｓの場合、バックトレース部１２２は、枝データｓｅｇのフロー（ｆｌｏｗ）より１を減算する。また、バックトレース部１２２は、枝データｓｅｇの残余（ｒｅｓ）の値を｛容量（ｃａｐ）−フロー（ｆｒｏｗ）｝の計算結果で更新する（Ｓ２−１０−６）。その結果、残余（ｒｅｓ）の値は増加する。すなわち、枝データｓｅｇに係る有向枝が最短経路に利用されたことの記録が１つ分除去される。
【０２１１】
ステップＳ２−１０−４、ステップＳ２−１０−６、又はステップＳ２−１０−５でＮｏの場合に続いて、バックトレース部１２２は、祖先ノードのノードデータ（ノードデータ配列ｖ［ａｎｃＮ］）のソースフラグ（ｓＦｌａｇ）がｔｒｕｅであるか否か、すなわち、引き出し対象セルの入り口ノードまでバックトレースが完了したか否かを判定する（Ｓ２−１０−７）。バックトレースが完了していない場合（Ｓ２−１０−７でＮｏ）、バックトレース部１２２は、バックトレースを一枝分進める（Ｓ２−１０−８）。具体的には、変数ｐａｒＮに変数ａｎｃＮの値が代入される。また、変数ａｎｃＮにはこれまで祖先ノードだったノードデータ（ｖ［ｐａｒＮ］）のラベル伝播元ノードＩＤ（ｐＩＤ）が代入される。続いて、バックトレース部１２２は、ステップＳ２−１０−２を繰り返し実行する。
【０２１２】
バックトレースが完了した場合（Ｓ２−１０−７でＹｅｓ）、バックトレース部１２２は、図４２の処理を終了させる。
【０２１３】
ここで、ステップＳ２−１０−６の処理の意味について説明する。当該ステップは、有向枝の向きに逆行して経路探索が行われた場合（図４１のステップＳ２−７−１４が実行された場合）に実行される。
【０２１４】
図４３は、有向枝の向きに逆行して経路探索された状態を示す模式図である。同図において、実線の矢印は有向枝を示す。小文字のアルファベットはノードを示す。ノードａ及びノードｈは、それぞれ引き出し対象のノードである。ノードｚは、目的地点のノードである。なお、同図では、便宜上、有向枝の傾きは水平又は垂直としている。
【０２１５】
太線の有向枝によって構成される経路ａ→ｂ→ｃ→ｄ→ｅ→ｆ→ｇ→ｚ（以下、「経路ａ」という。）は、既にバックトレースが完了した経路である。したがって、経路ａに利用された各有向枝のフロー（ｆｌｏｗ）には１が記録されている。
【０２１６】
一方、経路ｈ→ｉ→ｆ→ｅ→ｋ→ｍ→ｎ→ｐ→ｚ（以下、「経路ｈ」という。）は、経路ａのバックトレース後に、図４０及び図４１の処理によって探索された経路である。経路ｈにおいて破線の矢印で示される部分（ｆ→ｅ区間）は、有向枝ｅｆの向きに逆行している。
【０２１７】
斯かる経路ｈに関してバックトレース（図４２）の処理が行われる場合、親ノードがｆで祖先ノードがｅのときにステップＳ２−１０−６が実行される。当該ステップでは、有向枝ｅｆのフロー（ｆｌｏｗ）の値が１減算され、０となる。その結果、有向枝ｅｆは、経路ａ及び経路ｈのいずれからも利用されないことになる。その後、ｆ→ｉ→ｈの順でバックトレースが行われ、有向枝ｈｉ、有向枝ｉｆのフロー（ｆｌｏｗ）は１とされる。この時点でいずれかの経路に利用されている有向枝（フローの値が１以上である有向枝）は図４４に示される通りである。
【０２１８】
図４４は、有向枝の向きに逆行して経路探索された場合にバックトレースが実行された結果の例を示す模式図である。
【０２１９】
同図では、引き出し対象のノードａからの経路は、ａ→ｂ→ｃ→ｄ→ｅ→ｋ→ｍ→ｎ→ｐ→ｚ（以下、「経路ａ２」という。）となっている。また、引き出し対象のノードｈからの経路は、ｈ→ｉ→ｆ→ｇ→ｚ（以下、「経路ｈ２」という。）となっている。すなわち、経路ｈに関するバックトレースの過程において有向枝ｅｆが利用対象から除去されることにより、経路ａのノードｆ以降の経路が経路ｈによって利用され、その結果、経路ｈ２が形成されたのである。また、経路ｈのノードｅ以降の経路が経路ａに利用され、その結果、経路ａ２が形成されたのである。
【０２２０】
このように有向枝の向きに逆行して経路探索された場合は、一部の経路の入れ替えが行われることにより、入れ替え前と同じ本数（図４３及び図４４の例では２本）の経路が確保される。但し、逆行対象とされる有向枝は、フロー（ｆｌｏｗ）の値が１以上である（すなわち、既に他の経路に利用されている）必要がある。そうでなければ、一部の経路の入れ替えは不可能だからである。
【０２２１】
以上で図５のステップＳ２の説明は終了する。この時点における処理結果は、図７に示した通りである。すなわち、有向グラフ上には６本分の経路が確保されている。具体的には、６本分の経路に利用された各有向枝の枝データには容量（ｃａｐ）の範囲内でフロー（ｆｌｏｗ）の値（使用回数）が記録されている。但し、この時点では、各有向枝のフローがどの配線に割り当てられるかは特定されていない。すなわち、引き出し配線の概略経路は確定されていない。続くステップＳ３では、各有向枝のフローが配線に分配されることにより概略経路が確定される。
【０２２２】
続いて、図５のステップＳ３の詳細について説明する。図４５は、概略経路の確定処理を説明するためのフローチャートである。
【０２２３】
ステップＳ３−１において、概略経路確定部１３０は、引き出し順位ｐａｔｈ＿ｏｒｄｅｒを０に初期化する。引き出し順位ｐａｔｈ＿ｏｒｄｅｒは、各配線の引き出し順を管理するための変数である。続いて、概略経路確定部１３０は、配線数分の引き出し順データを補助記憶装置１０２に生成する（Ｓ３−２）。配線数は、例えば、ネットリスト１４１に基づいて判定される。すなわち、ネットリスト１４１には、引き出し対象のピンのピンＩＤの一覧が含まれている。したがって、当該ピンＩＤの個数を配線数として利用することができる。
【０２２４】
図４６は、引き出し順データの構成例を示す図である。同図に示されるように、一つの引き出し順データは、ネットＩＤ（ｎｅｔＩＤ）及び引き出し順位（ｏｒｄｅｒ）等のメンバ変数（データ項目）を有する。ネットＩＤ（ｎｅｔＩＤ）は、配線のネットＩＤである。引き出し順位（ｏｒｄｅｒ）は、ネットＩＤによって識別される配線の引き出し順位（順番）である。このように、一つの引き出し順データでは、一つの配線の引き出し順位を管理することができる。したがって、配線数分の引き出し順データが生成されることにより、各配線の引き出し順がそれぞれの引き出し順データによって管理される。
【０２２５】
続いて、概略経路確定部１３０は、セル行列における北側を出口とする探索経路（ステップＳ２で探索された経路）の各有向枝のフロー（ｆｌｏｗ）を配線に分配することにより当該配線の概略経路を確定する（Ｓ３−３）。
【０２２６】
続いて、概略経路確定部１３０は、概略経路確定部１３０は、セル行列における東側を出口とする探索経路の各有向枝のフロー（ｆｌｏｗ）を配線に分配することにより当該配線の概略経路を確定する（Ｓ３−４）。
【０２２７】
続いて、概略経路確定部１３０は、セル行列における南側を出口とする探索経路の各有向枝のフロー（ｆｌｏｗ）を配線に分配することにより当該配線の概略経路を確定する（Ｓ３−５）。
【０２２８】
続いて、概略経路確定部１３０は、セル行列における西側を出口とする探索経路の各有向枝のフロー（ｆｌｏｗ）を配線に分配することにより当該配線の概略経路を確定する（Ｓ３−６）。
【０２２９】
ところで、本実施の形態では、探索経路の出口は東側に限定されている。したがって、本実施の形態においては、ステップＳ３−３、Ｓ３−５、及びＳ３−６で確定される概略経路は無い。そこで、ステップＳ３−４の詳細について説明する。
【０２３０】
図４７は、セル行列の東側を出口とする探索経路に基づく概略経路の確定処理の処理手順を説明するためのフローチャートである。図４７の処理手順は、図８を参照しながら説明する。なお、本実施の形態では、セル行列の外周において時計回りに探索経路の出口が探索される。したがって、東側については、セル行列の東端列に属するセルについて、北端行から南端行に向かって探索経路の出口が探索される。
【０２３１】
ステップＳ３−４−１において、概略経路確定部１３０は、変数ｃの値をｃｏｌＭａｘ−１によって初期化する。変数ｃは、セルデータ配列ｃｅｌｌにおいて処理対象とする要素（セルデータ）に対する添え字である。また、ｃｏｌＭａｘはセルの列数である。したがって、セルデータ配列ｃｅｌｌにおいて変数ｃの初期値（ｃｏｌＭａｘ−１）を添え字とするセルデータ（ｃｅｌｌ［ｃ］）は、東端列において北端行のセルのセルデータである。
【０２３２】
続いて、ステップＳ３−４−２、Ｓ３−４−３、Ｓ３−４−１４、及びＳ３−４−１５では、探索経路の出口となっているセルが探索される。
【０２３３】
すなわち、ステップＳ３−４−２において、概略経路確定部１３０は、処理対象のセルデータの出口フラグ（ｅｘｉｔＦ）がｆａｌｓｅであるか（すなわち、当該セルデータが外周のセルでないか）、又は当該セルデータの容量（ｃａｐ）の値が０以下であるかを判定する。
【０２３４】
ステップ３−４−２でＮｏの場合、概略経路確定部１３０は、当該セルデータの出口ノードのノードデータの相棒ノードとの有向枝（ｅＢｒｏｓ）のフロー（ｆｌｏｗ）が０より大きいか否かを判定する（Ｓ３−４−３）。
【０２３５】
ステップＳ３−４−２でＹｅｓの場合、又はステップＳ３−４−３でＮｏの場合は処理対象のセルデータは探索経路の出口となっていないセルのセルデータである。したがって、概略経路確定部１３０は、変数ｃの値にｃｏｌＭａｘを加算し、東端列の次の行のセルのセルデータを処理対象とする（Ｓ３−４−１４）。続いて、概略経路確定部１３０は、変数ｃの値がセルＩＤの最大値以下であるか否か、すなわち、東端列において未処理の行は残っているか否かを判定する（Ｓ３−４−１５）。未処理のセルが残っている場合（Ｓ３−４−１５でＹｅｓ）、概略経路確定部１３０は、ステップＳ３−４−２以降を繰り返す。
【０２３６】
ステップＳ３−４−３でＹｅｓの場合、処理対象のセルデータは探索経路の出口となっているセルのセルデータである。そこで、概略経路確定部１３０は、当該セルデータの出口ノードのノードデータの相棒ノードとの有向枝（ｅＢｒｏｓ）を変数ｐａｔｈＥｄｇｅによって参照する（Ｓ３−４−４）。なお、図８の場合、最初に７行目のセルＥ１のセル内の有向枝ｅ１の枝データがｐａｔｈＥｄｇｅによって参照される。以下、ｐａｔｈＥｄｇｅによって参照される枝データを「枝データｐａｔｈＥｄｇｅ」という。なお、枝データｐａｔｈＥｄｇｅに対する変更は、ｐａｔｈＥｄｇｅによって参照される枝データ（ここでは、処理対象のセルデータの出口ノードのノードデータの相棒ノードとの有向枝（ｅＢｒｏｓ））への変更を意味する。
【０２３７】
続いて、概略経路確定部１３０は、枝データｐａｔｈＥｄｇｅのフロー（ｆｌｏｗ）に対応する線分データを生成する（Ｓ３−４−５）。
【０２３８】
図４８は、線分データの生成処理の処理手順を説明するためのフローチャートである。
【０２３９】
ステップＳ４−１において、概略経路確定部１３０は、線分データｓｅｇを一つメモリ装置１０３に生成する。
【０２４０】
図４９は、線分データの構成例を示す図である。同図に示されるように、一つの線分データは、概略経路を構成する線分を表現するデータであり、始点ノードＩＤ（ｓＮ）、終点ノードＩＤ（ｅＮ）、ネットＩＤ（ｎｅｔＩＤ）、及び引き出し順位（ｏｒｄｅｒ）等のメンバ変数（データ項目）を有する。
【０２４１】
始点ノードＩＤ（ｓＮ）は、線分データの始点ノードのノードＩＤである。終点ノードＩＤ（ｅＮ）は、線分データの終点ノードのノードＩＤである。ネットＩＤ（ｎｅｔＩＤ）は、線分データが属する概略経路が対応する配線のネットＩＤである。引き出し順位（ｏｒｄｅｒ）は、線分データが属する概略経路が対応する配線の引き出し順位である。
【０２４２】
続いて、概略経路確定部１３０は、線分データｓｅｇの始点ノードＩＤ（ｓＮ）に、枝データｐａｔｈＥｄｇｅの始点ノードＩＤ（ｓＮ）の値を記録する（Ｓ４―２）。続いて、概略経路確定部１３０は、線分データｓｅｇの終点ノードＩＤ（ｅＮ）に、枝データｐａｔｈＥｄｇｅの終点ノードＩＤ（ｅＮ）の値を記録する（Ｓ４―３）。続いて、概略経路確定部１３０は、線分データｓｅｇをｃｕｒｒｅｎｔＳｅｇリストに追加する（Ｓ４−４）。ｃｕｒｒｅｎｔＳｅｇリストは、一本分の概略経路を構成する線分データの集合（リスト）を格納するためのデータ又はレコードであり、例えば、メモリ装置１０３に生成される。
【０２４３】
図４７に戻る。ステップＳ３−４−５に続いてステップＳ３−４−６に進み、概略経路確定部１３０は、枝データｐａｔｈＥｄｇｅのフロー（ｆｌｏｗ）の値を１減らす。ステップＳ３−４−５及びＳ３−４−６により、枝データｐａｔｈＥｄｇｅのフロー（ｆｌｏｗ）が概略経路の線分として有向枝より分離されたことになる。
【０２４４】
続いて、概略経路確定部１３０は、枝データｐａｔｈＥｄｇｅの始点ノードのノードデータのソースフラグ（ｓＦｌａｇ）がｔｒｕｅであるか否かを判定する（Ｓ３−４−７）。すなわち、引き出し対象セルの入り口ノード（配線の起点）まで遡ったか否かが判定される。本実施の形態において最初にステップＳ３−４−７が実行される段階では有向枝ｅ１の始点ノードまでしか遡っていないため、この判定はＮｏとなる。
【０２４５】
ステップＳ３−４−７でＮｏの場合、概略経路確定部１３０は、枝データｐａｔｈＥｄｇｅの始点ノードを終点ノードとする有向枝であって、フロー（ｆｌｏｗ）の値が０より大きい有向枝の枝データを当該始点ノードに接続されている有向枝の中から１本検索し、検索された有向枝を新たにｐａｔｈＥｄｇｅによって参照する（Ｓ３−４−１０）。ここで、有向枝の検索では、複数の有向枝が候補として存在する場合は有向枝の遡りの進行方向の右側に有る方が優先的に選択される。具体的には、東隣セルのノードとの有向枝（ｅＥ）、北東セルのノードとの有向枝（ｅＮＥ）、北隣セルのノードとの有向枝（ｅＮ）、北西セルのノードとの有向枝（ｅＮＷ）、西隣セルのノードとの有向枝（ｅＷ）、南西セルのノードとの有向枝（ｅＳＷ）、南隣セルのノードとの有向枝（ｅＳ）、南東セルのノードとの有向枝（ｅＳＥ）の順で検索される。
【０２４６】
遡りの進行方向の右側が優先されるのは、配線が他の配線と交差しないことを保障するためである。すなわち、本実施の形態では、探索経路の出口の探索がセル行列の外周において時計回り行われる。斯かる前提において、遡り方向において右側の有向枝を優先的に選択すれば、当該概略経路より右側の概略経路は生成されることはない。したがって、例えば、探索経路の出口の探索がセル行列の外周において反時計回りに行われる場合、遡りの進行方向の左側に有る方を優先的に選択すればよい。
【０２４７】
なお、図８において最初にステップＳ３−４−１０が実行される段階では、有向枝ｅ２が検索され、ｐａｔｈＥｄｇｅによって参照される。
【０２４８】
続いて、概略経路確定部１３０は、新たな枝データｐａｔｈＥｄｇｅのフロー（ｆｌｏｗ）について線分データを生成する（Ｓ３−４−１１）。当該ステップの処理内容は、図４８において説明した通りである。続いて、概略経路確定部１３０は、枝データｐａｔｈＥｄｇｅのフロー（ｆｌｏｗ）の値を１減らす（Ｓ３−４−１２）。続いて、概略経路確定部１３０は、枝データｐａｔｈＥｄｇｅの始点ノードの相棒ノードとの有向枝（ｅＢｒｏｓ）を新たにｐａｔｈＥｄｇｅによって参照する（Ｓ３−４−１３）。図８において最初にステップＳ３−４−１３が実行される段階では、有向枝ｅ３がｐａｔｈＥｄｇｅによって参照される。
【０２４９】
以降、枝データｐａｔｈＥｄｇｅの始点ノードが引き出し対象セルの入り口ノードに到達するまでステップＳ３−４−１０〜Ｓ３−４−１３が繰り返される。その結果、図８では、既に線分データが生成された有向枝ｅ１、ｅ２に続いてｅ３、ｅ４、ｅ５、ｅ６、ｅ７、ｅ８、ｅ９、ｅ１０、ｅ１１、ｅ１２、ｅ１３、ｅ１４、ｅ１５、ｅ１６のフロー（ｆｌｏｗ）に基づいて線分データが生成され、ｃｕｒｒｅｎｔＳｅｇリストに登録される。
【０２５０】
有向枝ｅ１７が枝データｐａｔｈＥｄｇｅとされると、ステップＳ３−４−７でＹｅｓとなる。ステップＳ３−４−７でＹｅｓの場合、概略経路確定部１３０は、線分データの保存処理を実行する（Ｓ３−４−８）。
【０２５１】
図５０は、線分データの保存処理の処理手順を説明するためのフローチャートである。
【０２５２】
ステップＳ５−１において、概略経路確定部１３０は、枝データｐａｔｈＥｄｇｅの始点ノードのノードデータのオーナーセルのセルデータのネットＩＤ（ｎｅｔＩＤ）の値を取得し、変数ＮＩＤに代入する（Ｓ５−１）。図８において最初にステップＳ５−１が実行される段階では、セルＳ１のセルデータのネットＩＤ（ｎｅｔＩＤ）が変数ＮＩＤに代入される。
【０２５３】
続いて、概略経路確定部１３０は、ｃｕｒｒｅｎｔＳｅｇリストに登録されている各線分データｓｅｇのネットＩＤ（ｎｅｔＩＤ）にＮＩＤの値を記録し、引き出し順位（ｏｒｄｅｒ）にｐａｔｈ＿ｏｒｄｅｒの値（初期値は０）を記録する（Ｓ５−２）。
【０２５４】
続いて、概略経路確定部１３０は、ｃｕｒｒｅｎｔＳｅｇリストに登録されている各線分データを補助記憶装置１０２に保存する（Ｓ５−３）。
【０２５５】
続いて、概略経路確定部１３０は、ｐａｔｈ＿ｏｒｄｅｒ番目の引き出し順データのネットＩＤ（ｎｅｔＩＤ）にＮＩＤの値を記録し、引き出し順位（ｏｒｄｅｒ）にｐａｔｈ＿ｏｒｄｅｒの値を記録する。
【０２５６】
図５０の処理によって、１本分の概略経路に関する線分データと引き出し順位とが補助記憶装置１０２に保存される。なお、線分データは、配線がどのピン間を通過するかを示す情報であり、引き出し順位は、各配線の相対的な位置関係を示す情報である。
【０２５７】
図４７に戻る。ステップＳ３−４−８に続いてステップＳ３−４−９に進み、概略経路確定部１３０は、ｐａｔｈ＿ｏｒｄｅｒの値をインクリメントする。続いて、概略経路確定部１３０は、ステップＳ３−４−３を実行する。ここで、探索経路の出口とされている次のセルを探索せずに、現在処理対象とされているセルデータについて再度ステップＳ３−４−３を実行するのは、現在処理対象のセルデータに係るセル内の有向枝（図８では有向枝ｅ１）にフロー（ｆｌｏｗ）が残っている可能性があるからである。当該有向枝にフロー残っている場合（Ｓ３−４−３でＹｅｓ）、ステップＳ３−４−４以降が実行される。その結果、図８では、有向枝ｅ１、ｅ２、ｅ３、ｅ４、ｅ５、ｅ６、ｅ７、ｅ８、ｅ９、ｅ１０、ｅ１１、ｅ１２、ｅ１３、ｅ１４、ｅ１５、ｅ２１、ｅ２２、及びｅ２３のフローに基づいて線分データが生成され、保存される。すなわち、２番目に引き出されるべき配線の概略経路が確定される。
【０２５８】
セルＥ１の有向枝ｅ１にフロー（ｆｌｏｗ）が残っていない場合（Ｓ３−４−３でＮｏ）、次の行のセルＥ２が処理対象とされる（Ｓ３−４−１４）。セルＥ２についてステップＳ３−４−４以降が実行されることにより、有向枝ｅ３１、ｅ３２、ｅ３３、ｅ３４、ｅ３５、ｅ３６、ｅ５、ｅ３７、ｅ３８、ｅ３９、ｅ４０、及びｅ４１のフローに基づいて線分データが生成され、保存される。すなわち、３番目に引き出されるべき配線の概略経路が確定される。
【０２５９】
以降、ステップＳ３−４−２以降が繰り返し実行されることにより、本実施の形態（図８）では、合計６本分の概略経路が生成される。すなわち、本実施の形態の概略配線は完了する。詳細配線の段階では、線分データと引き出し順位とに基づいて、各配線の物理的な位置を決定すればよい。
【０２６０】
なお、図４５のステップＳ３−３、Ｓ３−５、及びＳ３−６処理手順は、図Ｓ３−４より自明であるため、フローチャートのみを示し、詳細な説明は省略する。
【０２６１】
図５１は、セル行列の北側を出口とする探索経路に基づく概略経路の確定処理の処理手順を説明するためのフローチャートである。すなわち、図５１は、ステップＳ３−３を詳細に説明するフローチャートである。図５１では、セル行列の北端行に属するセルについて、西端列から東端列に向かって（すなわち、時計回りに）探索経路の出口が探索される（Ｓ３−３−１、Ｓ３−３−１４、及びＳ３−３−１５参照）。
【０２６２】
また、ステップＳ３−３−１０では、遡りの進行方向の右側に有る方を優先的に選択するため、北隣セルのノードとの有向枝（ｅＮ）、北西セルのノードとの有向枝（ｅＮＷ）、西隣セルのノードとの有向枝（ｅＷ）、南西セルのノードとの有向枝（ｅＳＷ）、南隣セルのノードとの有向枝（ｅＳ）、南東セルのノードとの有向枝（ｅＳＥ）、東隣セルのノードとの有向枝（ｅＥ）、北東セルのノードとの有向枝（ｅＮＥ）の順で有向枝が検索される。
【０２６３】
また、図５２は、セル行列の南側を出口とする探索経路に基づく概略経路の確定処理の処理手順を説明するためのフローチャートである。すなわち、図５２は、ステップＳ３−５を詳細に説明するフローチャートである。図５２では、セル行列の南端行に属するセルについて、東端列から西端列に向かって（すなわち、時計回りに）探索経路の出口が探索される（Ｓ３−５−１、Ｓ３−５−１４、及びＳ３−５−１５参照）。
【０２６４】
また、ステップＳ３−５−１０では、遡りの進行方向の右側に有る方を優先的に選択するため、南隣セルのノードとの有向枝（ｅＳ）、南東セルのノードとの有向枝（ｅＳＥ）、東隣セルのノードとの有向枝（ｅＥ）、北東セルのノードとの有向枝（ｅＮＥ）、北隣セルのノードとの有向枝（ｅＮ）、北西セルのノードとの有向枝（ｅＮＷ）、西隣セルのノードとの有向枝（ｅＷ）、南西セルのノードとの有向枝（ｅＳＷ）の順で有向枝が検索される。
【０２６５】
また、図５３は、セル行列の西側を出口とする探索経路に基づく概略経路の確定処理の処理手順を説明するためのフローチャートである。すなわち、図５３は、ステップＳ３−６を詳細に説明するフローチャートである。図５３では、セル行列の西端列に属するセルについて、南端行から北端行に向かって（すなわち、時計回りに）探索経路の出口が探索される（Ｓ３−６−１、Ｓ３−６−１４、及びＳ３−６−１５参照）。
【０２６６】
また、ステップＳ３−６−１０では、遡りの進行方向の右側に有る方を優先的に選択するため、西隣セルのノードとの有向枝（ｅＷ）、南西セルのノードとの有向枝（ｅＳＷ）、南隣セルのノードとの有向枝（ｅＳ）、南東セルのノードとの有向枝（ｅＳＥ）、東隣セルのノードとの有向枝（ｅＥ）、北東セルのノードとの有向枝（ｅＮＥ）、北隣セルのノードとの有向枝（ｅＮ）、北西セルのノードとの有向枝（ｅＮＷ）、の順で有向枝が検索される。
【０２６７】
なお、上記では、セル行列の外周のセルを全て走査して探索経路の出口を探索する例を示した。しかし、流入ノードＴと有向枝によって接続されているノードを探索経路の出口とし、当該ノードから有向枝を遡るようにしてもよい。当該ノードは、流入ノードＴのノードデータのｔａｇｅｔＥｄｇｅＬｉｓｔに登録されている枝データに基づいて特定することができる。当該ノードが複数存在する場合、セル行列の外周における一定方向（本実施の形態では時計回りの方向）に従って、遡るノードを順番に選択すればよい。
【０２６８】
また、本実施の形態では、セルデータ、ノードデータ、線分データ、及び引き出し順データ等の保存先を補助記憶装置１０２であると説明したが、その保存形態は特定のものに限定されない。単なるファイルであってもよいし、データベースであってもよい。また、各データは概略経路作成支援装置１０とネットワークを介して接続されている装置に保存されてもよい。
【０２６９】
また、本実施の形態では、集積回路パッケージの具体例としてＢＧＡを利用した。但し、本実施の形態は、他の集積回路パッケージに対しても同様に適用可能である。
【０２７０】
上述したように、本実施の形態の配線経路作成支援装置１０によれば、ＢＧＡのような高密度にピンが配列された集積回路パッケージの概略配線について、引き出し配線経路の収容性を保障した容量を有する有向枝によって構成される有向グラフを生成することができる。したがって、斯かる有向グラフに基づいて経路探索を行い、更に概略経路を確定することにより、ピン間の配線収容本数の上限を正しく表現することができる。よって、概略配線時に許容数以上の概略経路が作成されてしまうことを回避でき、概略経路を詳細化したときにルール違反が生じて配線ができないといった事態の発生を防止することができる。特に、水平又は垂直ピン間のみならず、対角ピン間についてもボトルネックを配置するようにしたことにより、対角ピン間における配線経路の収容性についても適切に保障される。同様に、空きピンについてもボトルネックを配置するようにしたことにより、空きピン箇所についても配線経路の収容が適切に保障される。また、配線の出口が特定の場所に制限される場合は、配線の出口に係るボトルネック箇所（セル）の容量を０とすることにより、概略経路の出口を適切に制限することができる。
【０２７１】
また、各概略経路には各配線の相対的な位置関係を示す情報として引き出し順位が付与されている。すなわち、引き出し順位に従ってピン間等における配線の位置を決定することにより、ピン間等において各配線が交差（ショート）してしまうことが防止される。具体的には、本実施の形態の場合であれば、引き出し順位が若い配線を北側又は東側に貼り付けるようにすればよい。そうすることで、各配線のクロスが防止される。
【０２７２】
以上、本発明の実施例について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【０２７３】
以上の説明に関し、更に以下の項を開示する。
（付記１）
コンピュータが実行する配線経路作成支援方法であって、
集積回路パッケージの少なくとも各ピン、各水平ピン間、各垂直ピン間、及び各対角ピン間を配線のボトルネック箇所とし、前記各ボトルネック箇所に水平ピン間、垂直ピン間、又は対角ピン間に応じた配線容量を付与するボトルネック配置手順と、
前記ボトルネック箇所ごとに入り口ノード及び出口ノードの二つのノードを生成するノード生成手順と、
それぞれの前記ボトルネック箇所について、同一の前記ボトルネック箇所内の前記入り口ノードから前記出口ノードへの有向枝を生成し、垂直又は水平方向に隣接する前記ボトルネック箇所間において一方の前記出口ノードから他方の前記入り口ノードへの有向枝を相互に生成し、前記対角ピン間のボトルネック箇所と当該対角ピン間の全ての斜め隣の前記ボトルネック箇所との間において一方の前記出口ノードから他方の前記入り口ノードへの有向枝を相互に生成し、生成された全ての有向枝に、当該有向枝によって接続される前記ノードが属する前記ボトルネック箇所に付与された前記配線容量の最小値を枝容量として付与する有向グラフ生成手順とを有する配線経路作成支援方法。
（付記２）
前記ボトルネック配置手順は、前記集積回路パッケージに空きピンが有る場合は空きピンをもボトルネック箇所とし、当該ボトルネック箇所に空きピンに応じた配線容量を付与し、
前記水平ピン間、前記垂直ピン間、及び前記対角ピン間を構成するピンには、空きピンも含まれる付記１記載の配線経路作成支援方法。
（付記３）
前記ボトルネック配置手順は、前記集積回路パッケージにおいて配線の出口とされている部分に係る前記ボトルネック箇所を除いて、前記ボトルネック箇所の相対的な位置関係において外周に位置するボトルネック箇所の前記容量に０を付与する付記１又は２記載の配線経路作成支援方法。
（付記４）
引き出し対象の配線ごとに、配線の引き出し対象のピンに対応するボトルネック箇所の前記入り口ノードから配線の出口に係る前記ボトルネック箇所の前記出口ノードまでの間において、１以上の前記枝容量が付与された前記有向枝を使用して最短経路を探索する経路探索手順と、
探索された経路に使用された各有向枝に、経路に使用された使用回数を付与する使用回数付与手順とを有し、
前記経路探索手順は、前記使用回数が前記枝容量を超えないように前記最短経路を探索する付記１乃至３いずれか一項記載の配線経路作成支援方法。
（付記５）
前記ボトルネック箇所の相対的な位置関係において外周に位置し前記使用回数が１以上の前記有向枝を前記入り口ノードから前記出口ノードへの有向枝として有する前記ボトルネック箇所の該出口ノードから前記引き出し対象のピンに対応するボトルネック箇所の出口ノードまでを前記使用回数が１以上の有向枝に沿って遡ることによって形成される経路を配線の概略経路として確定する概略経路確定手順を有し、
前記概略経路確定手順は、遡られた前記有向枝の前記使用回数を当該有向枝の遡りの回数に応じて減ずる付記４記載の配線経路作成支援方法。
（付記６）
前記概略経路確定手順は、前記外周に位置し前記使用回数が１以上の前記有向枝を前記入り口ノードから前記出口ノードへの有向枝として有する前記ボトルネック箇所が複数有るときは、前記外周における一定方向に従ったって、遡りを開始する前記ボトルネック箇所を順番に選択し、前記一定方向に応じて、遡りにおいて優先させる前記有向枝を選択する付記５記載の配線経路作成支援方法。
（付記７）
前記配線経路確定手順は、前記概略経路が確定された順番を当該概略経路に係る配線の引き出し順として当概略経路に付与する請求項６記載の配線経路作成支援方法。
（付記８）
コンピュータに、
集積回路パッケージの少なくとも各ピン、各水平ピン間、各垂直ピン間、及び各対角ピン間を配線のボトルネック箇所とし、前記各ボトルネック箇所に水平ピン間、垂直ピン間、又は対角ピン間に応じた配線容量を付与するボトルネック配置手順と、
前記ボトルネック箇所ごとに入り口ノード及び出口ノードの二つのノードを生成するノード生成手順と、
それぞれの前記ボトルネック箇所について、同一の前記ボトルネック箇所内の前記入り口ノードから前記出口ノードへの有向枝を生成し、垂直又は水平方向に隣接する前記ボトルネック箇所間において一方の前記出口ノードから他方の前記入り口ノードへの有向枝を相互に生成し、前記対角ピン間のボトルネック箇所と当該対角ピン間の全ての斜め隣の前記ボトルネック箇所との間において一方の前記出口ノードから他方の前記入り口ノードへの有向枝を相互に生成し、生成された全ての有向枝に、当該有向枝によって接続される前記ノードが属する前記ボトルネック箇所に付与された前記配線容量の最小値を枝容量として付与する有向グラフ生成手順とを実行させるための配線経路作成支援プログラム。
（付記９）
前記ボトルネック配置手順は、前記集積回路パッケージに空きピンが有る場合は空きピンをもボトルネック箇所とし、当該ボトルネック箇所に空きピンに応じた配線容量を付与し、
前記水平ピン間、前記垂直ピン間、及び前記対角ピン間を構成するピンには、空きピンも含まれる付記８記載の配線経路作成支援プログラム。
（付記１０）
前記ボトルネック配置手順は、前記集積回路パッケージにおいて配線の出口とされている部分に係る前記ボトルネック箇所を除いて、前記ボトルネック箇所の相対的な位置関係において外周に位置するボトルネック箇所の前記容量に０を付与する付記８又は９記載の配線経路作成支援プログラム。
（付記１１）
引き出し対象の配線ごとに、配線の引き出し対象のピンに対応するボトルネック箇所の前記入り口ノードから配線の出口に係る前記ボトルネック箇所の前記出口ノードまでの間において、１以上の前記枝容量が付与された前記有向枝を使用して最短経路を探索する経路探索手順と、
探索された経路に使用された各有向枝に、経路に使用された使用回数を付与する使用回数付与手順とを有し、
前記経路探索手順は、前記使用回数が前記枝容量を超えないように前記最短経路を探索する付記８乃至１０いずれか一項記載の配線経路作成支援プログラム。
（付記１２）
前記ボトルネック箇所の相対的な位置関係において外周に位置し前記使用回数が１以上の前記有向枝を前記入り口ノードから前記出口ノードへの有向枝として有する前記ボトルネック箇所の該出口ノードから前記引き出し対象のピンに対応するボトルネック箇所の出口ノードまでを前記使用回数が１以上の有向枝に沿って遡ることによって形成される経路を配線の概略経路として確定する概略経路確定手順を有し、
前記概略経路確定手順は、遡られた前記有向枝の前記使用回数を当該有向枝の遡りの回数に応じて減ずる付記１１記載の配線経路作成支援プログラム。
（付記１３）
前記概略経路確定手順は、前記外周に位置し前記使用回数が１以上の前記有向枝を前記入り口ノードから前記出口ノードへの有向枝として有する前記ボトルネック箇所が複数有るときは、前記外周における一定方向に従ったって、遡りを開始する前記ボトルネック箇所を順番に選択し、前記一定方向に応じて、遡りにおいて優先させる前記有向枝を選択する付記１２記載の配線経路作成支援プログラム。
（付記１４）
前記配線経路確定手順は、前記概略経路が確定された順番を当該概略経路に係る配線の引き出し順として当概略経路に付与する請求項１３記載の配線経路作成支援プログラム。
（付記１５）
集積回路パッケージの少なくとも各ピン、各水平ピン間、各垂直ピン間、及び各対角ピン間を配線のボトルネック箇所とし、前記各ボトルネック箇所に水平ピン間、垂直ピン間、又は対角ピン間に応じた配線容量を付与するボトルネック配置手段と、
前記ボトルネック箇所ごとに入り口ノード及び出口ノードの二つのノードを生成するノード生成手段と、
それぞれの前記ボトルネック箇所について、同一の前記ボトルネック箇所内の前記入り口ノードから前記出口ノードへの有向枝を生成し、垂直又は水平方向に隣接する前記ボトルネック箇所間において一方の前記出口ノードから他方の前記入り口ノードへの有向枝を相互に生成し、前記対角ピン間のボトルネック箇所と当該対角ピン間の全ての斜め隣の前記ボトルネック箇所との間において一方の前記出口ノードから他方の前記入り口ノードへの有向枝を相互に生成し、生成された全ての有向枝に、当該有向枝によって接続される前記ノードが属する前記ボトルネック箇所に付与された前記配線容量の最小値を枝容量として付与する有向グラフ生成手段とを有する配線経路作成支援装置。
（付記１６）
前記ボトルネック配置手段は、前記集積回路パッケージに空きピンが有る場合は空きピンをもボトルネック箇所とし、当該ボトルネック箇所に空きピンに応じた配線容量を付与し、
前記水平ピン間、前記垂直ピン間、及び前記対角ピン間を構成するピンには、空きピンも含まれる付記１５記載の配線経路作成支援装置。
（付記１７）
前記ボトルネック配置手段は、前記集積回路パッケージにおいて配線の出口とされている部分に係る前記ボトルネック箇所を除いて、前記ボトルネック箇所の相対的な位置関係において外周に位置するボトルネック箇所の前記容量に０を付与する付記１５又は１６記載の配線経路作成支援装置。
（付記１８）
引き出し対象の配線ごとに、配線の引き出し対象のピンに対応するボトルネック箇所の前記入り口ノードから配線の出口に係る前記ボトルネック箇所の前記出口ノードまでの間において、１以上の前記枝容量が付与された前記有向枝を使用して最短経路を探索する経路探索手段と、
探索された経路に使用された各有向枝に、経路に使用された使用回数を付与する使用回数付与手段とを有し、
前記経路探索手段は、前記使用回数が前記枝容量を超えないように前記最短経路を探索する付記１５乃至１７いずれか一項記載の配線経路作成支援装置。
（付記１９）
前記ボトルネック箇所の相対的な位置関係において外周に位置し前記使用回数が１以上の前記有向枝を前記入り口ノードから前記出口ノードへの有向枝として有する前記ボトルネック箇所の該出口ノードから前記引き出し対象のピンに対応するボトルネック箇所の出口ノードまでを前記使用回数が１以上の有向枝に沿って遡ることによって形成される経路を配線の概略経路として確定する概略経路確定手段を有し、
前記概略経路確定手段は、遡られた前記有向枝の前記使用回数を当該有向枝の遡りの回数に応じて減ずる付記１８記載の配線経路作成支援装置。
（付記２０）
前記概略経路確定手段は、前記外周に位置し前記使用回数が１以上の前記有向枝を前記入り口ノードから前記出口ノードへの有向枝として有する前記ボトルネック箇所が複数有るときは、前記外周における一定方向に従ったって、遡りを開始する前記ボトルネック箇所を順番に選択し、前記一定方向に応じて、遡りにおいて優先させる前記有向枝を選択する付記１９記載の配線経路作成支援装置。
（付記２１）
前記配線経路確定手段は、前記概略経路が確定された順番を当該概略経路に係る配線の引き出し順として当概略経路に付与する請求項２０記載の配線経路作成支援装置。
【符号の説明】
【０２７４】
１０      配線経路作成支援装置
１００        ドライブ装置
１０１        記録媒体
１０２        補助記憶装置
１０３        メモリ装置
１０４        ＣＰＵ
１０５        インタフェース装置
１０６        表示装置
１０７        入力装置
１１０        有向グラフ生成部
１１１        セル生成部
１１２        セル容量算出部
１１３        ノード生成部
１１４        有向枝生成部
１２０        経路探索部
１２１        最短経路探索部
１２２        バックトレース部
１３０        概略経路確定部
１４１        ネットリスト
１４２        ピンリスト
１４３        配線ルール
１４４        出口情報
Ｂ            バス
【図１】
2010211753.tif 000003
【図２】
2010211753.tif 000004
【図３】
2010211753.tif 000005
【図５】
2010211753.tif 000006
【図９】
2010211753.tif 000007
【図１０】
2010211753.tif 000008
【図１１】
2010211753.tif 000009
【図１２】
2010211753.tif 000010
【図１３】
2010211753.tif 000011
【図１４】
2010211753.tif 000012
【図１５】
2010211753.tif 000013
【図１６】
2010211753.tif 000014
【図１７】
2010211753.tif 000015
【図１８】
2010211753.tif 000016
【図１９】
2010211753.tif 000017
【図２０】
2010211753.tif 000018
【図２１】
2010211753.tif 000019
【図２２】
2010211753.tif 000020
【図２３】
2010211753.tif 000021
【図２４】
2010211753.tif 000022
【図２５】
2010211753.tif 000023
【図２６】
2010211753.tif 000024
【図２７】
2010211753.tif 000025
【図２８】
2010211753.tif 000026
【図２９】
2010211753.tif 000027
【図３０】
2010211753.tif 000028
【図３１】
2010211753.tif 000029
【図３２】
2010211753.tif 000030
【図３３】
2010211753.tif 000031
【図３４】
2010211753.tif 000032
【図３５】
2010211753.tif 000033
【図３６】
2010211753.tif 000034
【図３７】
2010211753.tif 000035
【図３８】
2010211753.tif 000036
【図３９】
2010211753.tif 000037
【図４０】
2010211753.tif 000038
【図４１】
2010211753.tif 000039
【図４２】
2010211753.tif 000040
【図４３】
2010211753.tif 000041
【図４４】
2010211753.tif 000042
【図４５】
2010211753.tif 000043
【図４６】
2010211753.tif 000044
【図４７】
2010211753.tif 000045
【図４８】
2010211753.tif 000046
【図４９】
2010211753.tif 000047
【図５０】
2010211753.tif 000048
【図５１】
2010211753.tif 000049
【図５２】
2010211753.tif 000050
【図５３】
2010211753.tif 000051
【図４】
2010211753.tif 000052
【図６】
2010211753.tif 000053
【図７】
2010211753.tif 000054
【図８】
2010211753.tif 000055