(57)【特許請求の範囲】
【請求項１】
コンピュータに、
少なくとも一方がピンスワップ可能なピンを持つ部品間の配線を設計するとき前記ピンに割り当てられているネットを考慮せず配線性を保証するように仮配線接続し、
仮配線接続されたピン同士が同一のネット番号となるように、ピンスワップ可能なピンをピンスワップする
処理を実行させる設計プログラム。
【請求項２】
前記ピンスワップする処理は前記ネットを流れる信号の種類に応じて前記ピンスワップ処理の結果を補正する
請求項１記載の設計プログラム。
【請求項３】
前記ピンスワップする処理は前記部品の両方がピンスワップ可能なピンを持つとき何れか一方の部品において前記ピンスワップを実行するか、又は、両方の部品において前記ピンスワップを実行する
請求項１記載の設計プログラム。
【請求項４】
前記ピンスワップする処理は一のネットグループに含まれる信号が他のネットグループに含まれるとき、前記一のネットグループにおける前記信号のピンスワップの実行に連動して、他のネットグループにおける前記信号のピンスワップを実行する
請求項１記載の設計プログラム。
【請求項５】
ピンスワップ可能なピンを持つ部品の配線を設計する設計装置であって、
少なくとも一方がピンスワップ可能なピンを持つ部品間の配線を設計するとき前記ピンに割り当てられているネットを考慮せず配線性を保証するように仮配線処理手段と、
仮配線接続されたピン同士が同一のネット番号となるように、ピンスワップ可能なピンをピンスワップするピンスワップ処理手段と
を有する設計装置。
【請求項６】
コンピュータによって実行される設計方法であって、
少なくとも一方がピンスワップ可能なピンを持つ部品間の配線を設計するとき前記ピンに割り当てられているネットを考慮せず配線性を保証するように仮配線接続し、
仮配線接続されたピン同士が同一のネット番号となるように、ピンスワップ可能なピンをピンスワップする
ことを特徴とする設計方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、計算機利用設計（ＣＡＤ）で用いる設計プログラム、設計装置及び設計方法に関する。
【背景技術】
【０００２】
近年、各種設計はＣＡＤにより行われるようになった。ＣＡＤの一例としての電気ＣＡＤにはプリント配線板の部品配置、配線等を行うプリント配線板ＣＡＤ（実装ＣＡＤ）が含まれている。設計者等は、例えばプリント配線板ＣＡＤを利用してプリント配線板の部品配置や配線等を行っている。
【０００３】
プリント配線板では例えばＦＰＧＡ（Field Programmable Gate Array）と呼ばれるピンスワップ（ピン交換）可能なピンを持つ部品が使用される。ピンスワップは例えば図１及び図２に示すように利用される。
【０００４】
図１は、捩れているラッツネストの一例のイメージ図である。ラッツネストとは端子の接続を示す線である。ラッツネストは端子同士の論理的接続関係を示している。図１は部品１のピンと他の部品（図示せず）のピンとの接続を示すラッツネストが捩れている。例えばピンスワップは、図１のように捩れたラッツネストの捩れが最小になるように行われる。図２は捩れが最小になるようにピンスワップが行われた後のラッツネストの一例のイメージ図である。
【０００５】
例えばピンスワップ可能なピンを持つ部品の一例であるＦＰＧＡは、ピン数の増大や複数Ｉ／Ｏバンク構造等により高速、高密度化している。したがって、捩れが最小になるようにＩ／Ｏピンの割当てを手動で行うことは非常に困難となっている。
【０００６】
従来の配線処理装置には、配線を行う前に論理的に等価であって交換可能な端子（等価端子）を考慮し、等価端子を交換することでネットの交差を避けられる場合に、ネットの交差を避けるように必要に応じて等価端子を交換してから導体パターンの配線を行うものや、手動による配線システムにおける等価端子の交換および導体パターンの配線に伴う操作を軽減して操作性を向上させるものがあった（例えば特許文献１参照）。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開平９−４４５３８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
図１及び図２に示すように、捩れているラッツネストを、捩れが最小になるようにピンスワップしたとしても、プリント配線板における実際の配線では、物理的あるいは電気的な制約を満たさないことも多かった。プリント配線板における実際の配線が物理的あるいは電気的な制約を満たさなければ、従来のプリント配線板ＣＡＤではピンスワップの手戻りが発生するという問題があった。
【０００９】
特にＦＰＧＡ等のピンスワップ可能なピン数が多い部品ではピンスワップの組み合わせも多く、配線にも時間が掛かる。したがって、ピンスワップと配線との間での手戻りによる繰り返しは設計工数増加の原因にもなるという問題があった。
【００１０】
本実施形態は、配線性を保証しながらピンスワップ可能なピンのピン割当を行うことができる設計プログラム、設計装置及び設計方法を提供することを目的とする。
【課題を解決するための手段】
【００１１】
上記課題を解決する為、本発明の一実施形態は、コンピュータに、少なくとも一方がピンスワップ可能なピンを持つ部品間の配線を設計するとき前記ピンに割り当てられているネットを考慮せず配線性を保証するように仮配線接続し、仮配線接続されたピン同士が同一のネット番号となるように、ピンスワップ可能なピンをピンスワップする処理を実行させる設計プログラムである。
【００１２】
なお、本発明の一実施形態の構成要素、表現又は構成要素の任意の組合せを、方法、装置、システム、コンピュータプログラム、記録媒体、データ構造などに適用したものも本発明の態様として有効である。
【発明の効果】
【００１３】
本実施形態によれば、配線性を保証しながらピンスワップ可能なピンのピン割当を行うことができる。
【図面の簡単な説明】
【００１４】
【図１】捩れているラッツネストの一例のイメージ図である。
【図２】捩れが最小になるようにピンスワップが行われた後のラッツネストの一例のイメージ図である。
【図３】ＰＣの一例のハードウェア構成図である。
【図４】本実施例の設計装置の一実施例のブロック構成図である。
【図５】配線処理部の一実施例のブロック構成図である。
【図６】本実施例の配線処理部による処理の一例のイメージ図である。
【図７】本実施例の配線処理部による処理の他の例のイメージ図である。
【図８】本実施例の配線処理部による処理の他の例のイメージ図である。
【図９】本実施例の配線処理部による処理の他の例のイメージ図である。
【図１０】本実施例の配線処理部による処理の他の例のイメージ図である。
【図１１】本実施例のピンスワップ処理部によるピンスワップ手法の一例のイメージ図である。
【図１２】本実施例のピンスワップ処理部によるピンスワップ手法の他の例のイメージ図である。
【図１３】本実施例のピンスワップ処理部によるピンスワップ手法の他の例のイメージ図である。
【図１４】本実施例のピンスワップ処理部によるピンスワップ手法の他の例のイメージ図である。
【図１５】本実施例の配線処理部による処理の一例のイメージ図である。
【図１６】本実施例の配線処理部による処理の他の例のイメージ図である。
【図１７】本実施例の配線処理部による処理の他の例のイメージ図である。
【図１８】本実施例の配線処理部の処理手順を表した一例のフローチャートである。
【図１９】ソースピン及びターゲットピン集合の一例の構成図である。
【図２０】ピンスワップの結果が反映された部品ピン情報の一例の構成図である。
【図２１】ピンスワップ手法（Ｘ）＝１の処理手順を表す一例のフローチャートである。
【図２２】ピンスワップ手法（Ｘ）＝２の処理手順を表す一例のフローチャートである。
【図２３】ピンスワップ手法（Ｘ）＝４の処理手順を表す一例のフローチャートである。
【図２４】本実施例の配線処理部の処理を表した一例のイメージ図（１／２）である。
【図２５】本実施例の配線処理部の処理を表した一例のイメージ図（２／２）である。
【図２６】本実施例の配線処理部の処理の応用例を表したイメージ図（１／３）である。
【図２７】本実施例の配線処理部の処理の応用例を表したイメージ図（２／３）である。
【図２８】本実施例の配線処理部の処理の応用例を表したイメージ図（３／３）である。
【発明を実施するための形態】
【００１５】
次に、本発明を実施するための形態を、以下の実施例に基づき図面を参照しつつ説明していく。本実施例の設計プログラム、設計装置及び設計方法は一例であって、例えば他の名称のプログラム、装置及び方法であってもよい。また、本実施例ではプリント配線板上のピンスワップ可能なピンを持つ部品としてＦＰＧＡを例に説明するが、コネクタ、ＡＳＩＣ（Application Specific Integrated Circuit）等であってもよい。
【００１６】
本実施例の設計プログラムは例えば図３に示すパーソナルコンピュータ（ＰＣ）で実行される。図３はＰＣの一例のハードウェア構成図である。図３のＰＣ１０は、バス２９で相互に接続された入力装置２１、出力装置２２、記録媒体読取装置２３、補助記憶装置２４、主記憶装置２５、演算処理装置２６及びインターフェース装置２７を有する。
【００１７】
入力装置２１はキーボードやマウス等である。入力装置２１は、各種信号を入力するために用いられる。出力装置２２はディスプレイ装置等である。出力装置２２は、各種ウインドウやデータ等を表示するために用いられる。インターフェース装置２７は、モデム又はＬＡＮカード等である。インターフェース装置２７は、ネットワークに接続する為に用いられる。
【００１８】
本実施例の設計プログラムは、図３のＰＣ１０を制御する各種プログラムの少なくとも一部である。設計プログラムは記録媒体２８の配布やネットワークからダウンロードすることによって提供される。設計プログラムを記録した記録媒体２８はＣＤ−ＲＯＭ、フレキシブルディスク、光磁気ディスク等の様に情報を光学的，電気的或いは磁気的に記録する記録媒体、ＲＯＭ、フラッシュメモリ等の様に情報を電気的に記録する半導体メモリなど様々なタイプの記録媒体を用いることができる。
【００１９】
設計プログラムを記録した記録媒体２８が記録媒体読取装置２３にセットされると、設計プログラムは記録媒体２８から記録媒体読取装置２３を介して補助記憶装置２４にインストールされる。
【００２０】
なお、ネットワークからダウンロードされた設計プログラムはインターフェース装置２７を介して補助記憶装置２４にインストールされる。補助記憶装置２４は、インストールされた設計プログラムを格納すると共に必要なファイル，データ等を格納する。
【００２１】
主記憶装置２５は、設計プログラムの起動時に補助記憶装置２４から設計プログラムを読み出して格納する。演算処理装置２６は主記憶装置２５に格納された設計プログラムに従って、後述するような各種処理を実現している。設計プログラムを実行するＰＣ１０は設計装置の一例である。
【００２２】
例えばＰＣ１０は主記憶装置２５に格納された設計プログラムに従って、図４に示すような各種処理を実現している。図４は本実施例の設計装置の一実施例のブロック構成図である。
【００２３】
図４の設計装置３０は、入力処理部３２、出力処理部３３、配線処理部３４、ネットリスト記録部３５、部品データ記録部３６を有する。入力処理部３２は設計者等の使用者が入力装置２１から入力した内容に基づき、入力処理を行う。出力処理部３３は使用者が入力した内容や配線処理部３４による配線処理の結果に基づき、出力処理を行う。配線処理部３４はネットリスト記録部３５からネットリストを読み出し、部品データ記録部３６から部品データを読み出し、配線処理を行う。
【００２４】
ネットリスト記録部３５はネットリストを記録している。ネットリストはネット名に対応付けて、そのネット名のネットによって接続されている部品の部品名、ピン名を後述のネットグループごとに記録している。また、部品データ記録部３６は部品データを記録している。部品データは部品名と対応付けて、ピン名、ピンスワップ可能なピンを識別する為のピンスワップ情報を記録している。なお、ピンスワップ情報には後述のピンスワップグループ番号が含まれる。
【００２５】
図５は配線処理部の一実施例のブロック構成図である。図５の配線処理部３４は、選択処理部４１、仮配線処理部４２、ピンスワップ処理部４３、詳細配線処理部４４を有している。
【００２６】
選択処理部４１は配線処理の対象となるピン（ビア）集合を選択する。例えば選択処理部４１は配線処理の対象となるソースピン及びターゲットピン集合を選択する。仮配線処理部４２は選択処理部４１により選択されたソースピンとターゲットピンとを仮配線接続する。仮配線処理部４２は、例えばＭａｘＦｌｏｗアルゴリズムなどの単層結線手法を用いる。仮配線処理部４２はピンスワップ可能なピンに割り当てられた複数のネットをある単層（Ｌ層）にて接続する単層結線手法の一例である。ＭａｘＦｌｏｗアルゴリズムはプリント配線板における実際の配線が物理的あるいは電気的な制約を満たすように接続する手法である。なお、配線単位のネット群はネットグループと呼ばれる。
【００２７】
したがって、仮配線処理部４２が用いる単層結線手法は、プリント配線板における実際の配線が物理的あるいは電気的な制約を満たすように、ソースとターゲットとを配線により仮想的に接続する手法である。ピンスワップ処理部４３は仮想的に接続（仮接続）したピンのうち、ネット名が一致しないピンに対し、後述のピンスワップ手法を実行する。詳細配線処理部４４は仮配線接続されているソースピンとターゲットピンとを詳細配線接続する。
【００２８】
図６は本実施例の配線処理部による処理の一例のイメージ図である。図６（Ａ）は単層にて接続する部品１及び２のピンのネットグループを表している。なお、図６中の○はピン（ビア）を表している。図６中の丸数字は、ネット名の一例としてネット番号を表している。図６中の部品１及び２のピンはピンスワップ可能なピンとする。
【００２９】
図６（Ｂ）では図６（Ａ）に示した部品１及び２のピンを例えばＭａｘＦｌｏｗアルゴリズムなどの単純な単層結線手法を用いて、プリント配線板における実際の配線が物理的あるいは電気的な制約を満たすように仮配線接続する。図６（Ｂ）の仮配線接続はネット番号に関係なくピンが仮配線接続される。
【００３０】
図６（Ｃ）では図６（Ｂ）において仮配線接続されたピンのうちネット番号が一致しないピンに対し、ピンスワップ処理を行う。図６（Ｃ）中の◎はピンスワップしたピンを表している。図６（Ｃ）はピンスワップ処理により、図６（Ｂ）で仮配線接続されたピン同士が同一のネット番号となっている。
【００３１】
このように、本実施例では仮配線接続とピンスワップとを連動させ、結線後、自動的にピンスワップを試行することにより、配線性を保証しながらピン割り当てを行い、ピンスワップのやり直しなどの手戻りを少なくすることができる。
【００３２】
図７は本実施例の配線処理部による処理の他の例のイメージ図である。図７（Ａ）は図６（Ｂ）と同様である。図７（Ｂ）は図６（Ｃ）と同様である。図７（Ｂ）にクロック信号や差動ペア信号などの特定の種類の信号（特定信号）が含まれるとき、本実施例では特定信号を考慮した順番に図７（Ｂ）のピンスワップ処理の結果を補正する。
【００３３】
例えばクロック信号に対応するネット番号「７」のネットは図７（Ｃ）において外側になるように図７（Ｂ）のピンスワップ処理の結果が補正されている。このように特定信号を考慮した順番になるようにピンスワップ処理の結果を補正することで、本実施例では電気的な制約を守りながら高密度配線を行うことができる。本実施例では図７（Ａ）において仮配線接続された全てのピンのネット番号が一致した場合であっても、図７（Ｃ）の処理を実行可能とする。
【００３４】
図８は本実施例の配線処理部による処理の他の例のイメージ図である。図８（Ａ）は図６（Ｂ）と同様である。例えば図８（Ａ）の部品１及び２はピンスワップ可能なピンを持つＦＰＧＡであるとする。すなわち、図８（Ａ）では部品１及び２ともピンスワップ可能であるため、部品１及び２におけるピンスワップを制御することで、部品１又は２の片方によるピンスワップ、又は、部品１及び２の両方によるピンスワップを選択できる。
【００３５】
図８（Ｂ１）は部品２のピンを固定し、部品１によるピンスワップを選択した例を表している。図８（Ｂ２）は部品１のピンを固定し、部品２によるピンスワップを選択した例を表している。図８（Ｂ３）は部品１及び２の両方によるピンスワップを選択した例を表している。
【００３６】
図９及び図１０は本実施例の配線処理部による処理の他の例のイメージ図である。図９及び図１０は部品Ａ〜Ｄを含む。図９及び図１０は３つのネットグループ（ＮＧ）１〜３を含む。ＮＧ１は配線層Ｌｘにて部品Ａ及びＢを接続する。ＮＧ２は配線層Ｌｙにて部品Ｂ及びＣを接続する。ＮＧ３は配線層Ｌｚにて部品Ｃ及びＤを接続する。
【００３７】
図９中のＮＧ１〜３のうち１つのネットグループ（例えばＮＧ１）に含まれる信号が他のネットグループ（例えばＮＧ２、３）に含まれる場合、ＮＧ１のピンスワップ処理に連動してＮＧ２、３のピンスワップ処理が自動的に行われる。
【００３８】
図１０（Ａ）は部品Ａ〜Ｄを例えばＭａｘＦｌｏｗアルゴリズムなどの単純な単層結線手法を用いて、プリント配線板における実際の配線が物理的あるいは電気的な制約を満たすように仮配線接続したものである。
【００３９】
図１０（Ｂ）では部品Ａのピンの並びを固定し、部品Ａに接続されているＮＧ１の他方の部品Ｂのピンの並びをピンスワップしている。図１０（Ｃ）ではＮＧ１のピンスワップ処理に連動して、部品Ｂのピンの並びを固定し、部品Ｂに接続されているＮＧ２の他方の部品Ｃのピンの並びをピンスワップしている。図１０（Ｄ）ではＮＧ２のピンスワップ処理に連動して、部品Ｃのピンの並びを固定し、部品Ｃに接続されているＮＧ３の他方の部品Ｄのピンの並びをピンスワップしている。
【００４０】
図１１は本実施例のピンスワップ処理部によるピンスワップ手法の一例のイメージ図である。図１１は全てのピンがピンスワップ可能なケースを表している。図１１中の○はピン（ビア）を表している。図１１中の丸数字は、ネット名の一例としてネット番号を表している。
【００４１】
また、図１１中の最も外側の丸数字列は、例えばＭａｘＦｌｏｗアルゴリズムなどの単純な単層結線手法を用いて、プリント配線板における実際の配線が物理的あるいは電気的な制約を満たすように仮配線接続したあとの各ピンに割り当てられたネット番号を表している。図１１中、ピンスワップグループ（ＰＳＧ）は各ピンのピンスワップグループ番号を表している。なお、同一のピンスワップ番号を持つピンは、ピンスワップ可能なピンである。図１１中の点線は仮配線接続されているピンを表している。最も左側の丸数字列はピンスワップを行う一方の部品に割り当てられたネット番号を表している。
【００４２】
さらに、図１１は左側から右側に向かってピンスワップ処理を進めている様子を表している。１回のピンスワップ処理はピンスワップステップに対応する。図１１中、上側の数字列はピンスワップステップ番号を表している。図１１は５回のピンスワップステップを表している。
【００４３】
ピンスワップ処理部４３は、仮配線処理部４２による仮配線接続の外側（図１１においては上側）から他方の部品のピンに割り当てられたネット番号（図１１においては最も右側の丸数字列）に合わせてピンスワップする。
【００４４】
ピンスワップステップ番号「１」のピンスワップ処理では他方の部品のピンに割り当てられたネット番号「８」に合わせて、一方の部品のネット番号「７」が割り当てられたピンとネット番号「８」が割り当てられたピンとをピンスワップしている。
【００４５】
ピンスワップステップ番号「２」のピンスワップ処理では他方の部品のピンに割り当てられたネット番号「３」に合わせて、一方の部品のネット番号「６」が割り当てられたピンとネット番号「３」が割り当てられたピンとをピンスワップしている。
【００４６】
ピンスワップステップ番号「３」のピンスワップ処理では他方の部品のピンに割り当てられたネット番号「７」に合わせて、一方の部品のネット番号「２」が割り当てられたピンとネット番号「７」が割り当てられたピンとをピンスワップしている。
【００４７】
ピンスワップステップ番号「４」のピンスワップ処理では他方の部品のピンに割り当てられたネット番号「２」に合わせて、一方の部品のネット番号「５」が割り当てられたピンとネット番号「２」が割り当てられたピンとをピンスワップしている。
【００４８】
ピンスワップステップ番号「５」のピンスワップ処理では他方の部品のピンに割り当てられたネット番号「６」に合わせて、一方の部品のネット番号「１０」が割り当てられたピンとネット番号「６」が割り当てられたピンとをピンスワップしている。ピンスワップ処理部４３は仮配線接続されている他方の部品のピン及び一方の部品のピンに割り当てられたネット番号が同一であるとき、ピンスワップ処理を行わない。
【００４９】
図１１に示すように、１回のピンスワップ処理を行うと、一方及び他方の部品のピンに割り当てられたネット番号は１つ又は２つ揃う。例えば１つのネット番号がｋ回揃った後に２つのネット番号がｋ＋１回目で揃った場合、ネット番号が揃ったピンの数はｋ＋２となる。この２つのネット番号が揃うまでの処理を１ループとすると、全体でのループ数を求めることで、全体の最小ピンスワップ回数は求められる。
【００５０】
初期段階でネット番号が不揃いのピンの数をｍとし、ループ数をｐとすると、最小ピンスワップ回数はｍ−ｐ回となる。なお、ループ同士は独立しているので、ループ間でピンスワップ処理が前後しても影響はない。図１１のピンスワップ手法は１回のピンスワップ処理により１つのネット番号を揃えるため、ネット番号が不揃いのピンをピンスワップする手法である。したがって、図１１のピンスワップ手法は上記の最小ピンスワップ回数を求める処理と同様のものであり、すなわち最適解を求めることができる。
【００５１】
例えば一方の部品の全ピンが同じピンスワップグループである場合、ピンスワップ処理部４３は以下の条件及び手順で処理することにより解を求めることができる。
【００５２】
対象とするネット数：Ｓ
仮想接続並び順：ｉ＝１、２、…
ｉ番目の配線に接続するピンスワップ可能なピンのネット番号：ｎ（ｉ）
ｉ番目の配線に接続する他方のピンのネット番号：ｍ（ｉ）
手順１：ｉ＝１
手順２：ｍ（ｉ）＝ｎ（ｊ）となるｎ（ｊ）とｎ（ｉ）とをピンスワップ
手順３：ｉ＝２〜Ｓに対して手順２を繰り返す。
【００５３】
図１２は本実施例のピンスワップ処理部によるピンスワップ手法の他の例のイメージ図である。図１２はピンスワップ不可なピンを含むケースを表している。図１２は一方の部品でピンスワップ不可のピンに割り当てられたネットを他方の部品のピンがピンスワップ可能である例を示している。なお、図１２において図１１と同様な部分についての説明は適宜省略する。
【００５４】
図１２中、ピンスワップグループ（ＰＳＧ）は各ピンのピンスワップグループ番号を表している。ピンスワップ番号「０」を持つピンは、ピンスワップ不可なピンである。図１２ではピンスワップステップ番号の順番にピンスワップ処理が進められる。
【００５５】
ピンスワップステップ番号「１」のピンスワップ処理では他方の部品のピンに割り当てられたネット番号「８」に合わせて、一方の部品のネット番号「７」が割り当てられたピンとネット番号「８」が割り当てられたピンとをピンスワップしている。
【００５６】
次に、一方の部品のネット番号「６」が割り当てられたピンはピンスワップ不可なピンであるため、図１２のピンスワップ手法では他方の部品のピンのピンスワップ処理により一方及び他方の部品のピンに割り当てられるネット番号を合わせることを試みる。具体的には、ピンスワップステップ番号「２」のピンスワップ処理では一方の部品のピンに割り当てられたネット番号「６」に合わせて、他の部品のネット番号「３」が割り当てられたピンとネット番号「６」が割り当てられたピンとをピンスワップしている。
【００５７】
次に、一方の部品のネット番号「２」が割り当てられたピンはピンスワップ不可なピンであるため、一方の部品のピンに割り当てられたネット番号「２」に合わせて、他の部品のネット番号「７」が割り当てられたピンとネット番号「２」が割り当てられたピンとをピンスワップしている。
【００５８】
ピンスワップステップ番号「４」のピンスワップ処理では他方の部品のピンに割り当てられたネット番号「７」に合わせて、一方の部品のネット番号「５」が割り当てられたピンとネット番号「７」が割り当てられたピンとをピンスワップしている。
【００５９】
次に、一方の部品のネット番号「１０」が割り当てられたピンはピンスワップ不可なピンであるため、一方の部品のピンに割り当てられたネット番号「１０」に合わせて、他の部品のネット番号「３」が割り当てられたピンとネット番号「１０」が割り当てられたピンとをピンスワップしている。
【００６０】
図１２に示すピンスワップ手法は図１１と同様、１回のピンスワップ処理により１つのネット番号を揃え、ネット番号が不揃いのピンをピンスワップする手法である。図１２のピンスワップ手法は上記の最小ピンスワップ回数を求める処理と同様のものであり、すなわち最適解を求めることができる。
【００６１】
例えば一方の部品がピンスワップ不可なピンを含み、一方の部品のピンスワップ不可なピンに割り当てられたネット番号に合わせるように、他方の部品のピンスワップ可能なピンでピンスワップする場合、ピンスワップ処理部４３は以下の条件及び手順で処理することにより解を求めることができる。
【００６２】
対象とするネット数：Ｓ
仮想接続並び順：ｉ＝１、２、…
ｉ番目の配線に接続する一方の部品ｎのピンのネット番号：ｎ（ｉ）
ｉ番目の配線に接続する他方の部品ｍのピンのネット番号：ｍ（ｉ）
ｉ番目の配線に接続する部品ｎのピンのピンスワップグループ番号：ｎｐ（ｉ）
ｉ番目の配線に接続する部品ｍのピンのピンスワップグループ番号：ｍｐ（ｉ）
ピンスワップ不可：ｎｐ（ｉ）＝０、ｍｐ（ｉ）＝０
手順１：ｉ＝１
手順２：ｎｐ（ｉ）≧１であるならｍ（ｉ）＝ｎ（ｊ）となるｎ（ｊ）とｎ（ｉ）とをピンスワップする。
【００６３】
ｎｐ（ｉ）＝０であるならｎ（ｉ）＝ｍ（ｊ）となるｍ（ｊ）とｍ（ｉ）とをピンスワップする。
【００６４】
手順３：ｉ＝２〜Ｓに対して手順２を繰り返す。
【００６５】
図１３は本実施例のピンスワップ処理部によるピンスワップ手法の他の例のイメージ図である。図１３はピンスワップ不可なピンを含むケースを表している。図１３（Ａ）は一方及び他方の部品の両方でピンスワップ不可のピンに割り当てられたネットが存在する例を示している。なお、図１３において、図１１又は図１２と同様な部分についての説明は適宜省略する。図１３中、ピンスワップ処理部４３は一方及び他方の部品の両方でピンスワップ不可のピンに割り当てられたネット番号「２」「１０」のピンを除外する。
【００６６】
そして、仮配線処理部４２は除外されたピンについて先に仮配線しておく。除外されなかったピンについて、仮配線処理部４２は上記した例えばＭａｘＦｌｏｗアルゴリズムなどの単純な単層結線手法を用いて、プリント配線板における実際の配線が物理的あるいは電気的な制約を満たすように仮配線接続する。その後、図１２に示したピンスワップ手法によりピンスワップ処理部４３は図１３（Ｂ）に示すように、ピンスワップステップ番号の順番にピンスワップ処理を進める。
【００６７】
図１３に示すピンスワップ手法は一方又は他方のピンがピンスワップ可能でも相手先のピンがピンスワップ不可で解を求められないこともある。しかし、図１３のピンスワップ手法は解が存在する場合、最適解を求めることができる。
【００６８】
例えば部品がピンスワップ不可なピンを含み、一方及び他方の部品のピンスワップ不可なピンに割り当てられたネット番号が存在する場合、ピンスワップ処理部４３は以下の条件及び手順で処理することにより解を求めることができる。
【００６９】
対象とするネット数：Ｓ
仮想接続並び順：ｉ＝１、２、…
ｉ番目の配線に接続する一方の部品ｎのピンのネット番号：ｎ（ｉ）
ｉ番目の配線に接続する他方の部品ｍのピンのネット番号：ｍ（ｉ）
ｉ番目の配線に接続する部品ｎのピンのピンスワップグループ番号：ｎｐ（ｉ）
ｉ番目の配線に接続する部品ｍのピンのピンスワップグループ番号：ｍｐ（ｉ）
ピンスワップ不可：ｎｐ（ｉ）＝０、ｍｐ（ｉ）＝０
手順１：ｎ（ｉ）＝ｍ（ｊ）でｎｐ（ｉ）＝０且つｍｐ（ｊ）＝０であるネット番号ｎ（ｉ）を全て抽出し、対象とするネットから除外する。
【００７０】
手順２：除外したネットの仮接続を別途、先に行う。
【００７１】
手順３：ｉ＝１
手順４：ｎｐ（ｉ）≧１であるならｍ（ｉ）＝ｎ（ｊ）となるｎ（ｊ）とｎ（ｉ）とをピンスワップする。
【００７２】
ｎｐ（ｉ）＝０であるならｎ（ｉ）＝ｍ（ｊ）となるｍ（ｊ）とｍ（ｉ）とをピンスワップする。
【００７３】
手順５：ｉ＝２〜（Ｓ−除外したネットの数）に対して手順４を繰り返す。
【００７４】
図１４は本実施例のピンスワップ処理部によるピンスワップ手法の他の例のイメージ図である。図１４は一方及び他方の部品が複数のピンスワップグループのピンを含むケースを表している。なお、図１４において、図１１〜図１３と同様な部分についての説明は適宜省略する。図１４では、ピンスワップステップ番号の順番にピンスワップ処理が進められる。
【００７５】
ピンスワップステップ番号「１」のピンスワップ処理では他方の部品のピンに割り当てられたネット番号「８」に合わせて、一方の部品のネット番号「７」が割り当てられたピンとネット番号「８」が割り当てられたピンとをピンスワップしている。
【００７６】
次に、他方の部品のピンに割り当てられたネット番号「３」に合わせて、一方の部品のネット番号「６」が割り当てられたピンとネット番号「３」が割り当てられたピンとをピンスワップしようとするが、ピンスワップグループが異なる。
【００７７】
そこで、ピンスワップステップ番号「２」のピンスワップ処理では、他方の部品のピンのピンスワップ処理により一方及び他方の部品のピンに割り当てられるネット番号を合わせることを試みる。
【００７８】
具体的には、ピンスワップステップ番号「２」のピンスワップ処理では一方の部品のピンに割り当てられたネット番号「６」に合わせて、他の部品のネット番号「３」が割り当てられたピンとネット番号「６」が割り当てられたピンとをピンスワップしている。
【００７９】
以下、同様にして、図１４に示すピンスワップ手法はピンスワップ処理を行おうとした一方の部品のピンが同一のピンスワップグループでない場合、他の部品のピンによるピンスワップ処理を試みる。図１４に示すピンスワップ手法ではピンスワップ処理を行おうとした他方の部品のピンも同一のピンスワップグループでない場合、次のネット番号が割り当てられたピンのピンスワップ処理にスキップする。
【００８０】
図１４に示すピンスワップ手法は一方及び他方のピンのピンスワップグループが同一でない場合に、解を求められないこともある。しかし、図１４のピンスワップ手法は解が存在する場合、最適解を求めることができる。
【００８１】
例えば一方及び他方の両方の部品が複数のピンスワップグループのピンを含む場合、ピンスワップ処理部４３は以下の条件及び手順で処理することにより解を求めることができる。
【００８２】
対象とするネット数：Ｓ
仮想接続並び順：ｉ＝１、２、…
ｉ番目の配線に接続する一方の部品ｎのピンのネット番号：ｎ（ｉ）
ｉ番目の配線に接続する他方の部品ｍのピンのネット番号：ｍ（ｉ）
ｉ番目の配線に接続する部品ｎのピンのピンスワップグループ番号：ｎｐ（ｉ）
ｉ番目の配線に接続する部品ｍのピンのピンスワップグループ番号：ｍｐ（ｉ）
ピンスワップ不可：ｎｐ（ｉ）＝０、ｍｐ（ｉ）＝０
手順１：ｉ＝１
手順２：ｍ（ｉ）＝ｎ（ｊ）となるｊに対して、ｎｐ（ｊ）＝ｎｐ（ｉ）であるならばｎ（ｊ）とｎ（ｉ）とをピンスワップし、手順４へ
ｎｐ（ｊ）≠ｎｐ（ｉ）であるならば手順３へ
手順３：ｎ（ｉ）＝ｍ（ｊ）となるｊに対して、ｍｐ（ｊ）＝ｍｐ（ｉ）であるならばｍ（ｊ）とｍ（ｉ）とをピンスワップし、手順４へ
ｍｐ（ｊ）≠ｍｐ（ｉ）であるならば手順４へ
手順４：ｉ＝２〜Ｓに対して手順２を繰り返す。
【００８３】
図１５は本実施例の配線処理部による処理の一例のイメージ図である。図１５（Ａ）は単層にて接続する部品１及び２のピンのネットグループを表している。なお、図１５中の○はピン（ビア）を表している。図１５中の丸数字は、ネット名の一例としてのネット番号を表している。図１５中の丸数字以外の○は、ピンスワップ可能なダミーネットピンとする。図１５中の部品１及び２のピンはピンスワップ可能なピンとする。
【００８４】
図１５（Ｂ）では図１５（Ａ）に示した部品１及び２のピンを例えばＭａｘＦｌｏｗアルゴリズムなどの単純な単層結線手法を用いて、プリント配線板における実際の配線が物理的あるいは電気的な制約を満たすように仮配線接続する。図１５（Ｂ）の仮配線接続はピンスワップ可能なダミーネットピンの使用を許可した例を表している。
【００８５】
図１５（Ｂ）では部品１のピンのうちネット番号「３」及び「７」が割り当てられたピンの代わりにダミーネットピンが仮配線接続されている。また、図１５（Ｂ）では部品２のピンのうちネット番号「６」及び「８」が割り当てられたピンの代わりにダミーネットピンが仮配線接続されている。図１５（Ｃ）は図１５（Ｂ）において仮配線接続されたピン又はダミーネットピンのうちネット番号が一致しないピン又はダミーネットピンに対してピンスワップ処理を行う。
【００８６】
図１５（Ｃ）中の◎はピンスワップしたピン又はダミーネットピンを表している。図１５（Ｃ）はピンスワップ処理により仮配線接続されたピン又はダミーネットピンが同一のネット番号となっている。
【００８７】
このように、本実施例では仮配線接続とピンスワップとを連動させ、結線後、自動的にピンスワップを試行することにより、配線性を保証しながらピン割り当てを行い、ピンスワップのやり直しなどの手戻りを少なくすることができる。
【００８８】
図１６及び図１７は本実施例の配線処理部による処理の他の例のイメージ図である。図１６及び図１７において図６等と同様な部分についての説明は適宜省略する。
【００８９】
図１６（Ａ）は単層（Ｌｘ層）にて接続する部品１及び２のピンのネットグループを表している。図１６（Ｂ）では図１６（Ａ）に示した部品１及び２のピンを例えばＭａｘＦｌｏｗアルゴリズムなどの単純な単層結線手法を用いて、プリント配線板における実際の配線が物理的あるいは電気的な制約を満たすように仮配線接続する。図１６（Ｂ）の仮配線接続はネット番号に関係なくピンが仮配線接続されているが、ネット番号を割り当てられている一部のピンが未結線となっている。図１６では、未結線のピンを点線の○で表している。
【００９０】
図１６（Ｃ）では図１６（Ｂ）において仮配線接続されたピンのうちネット番号が一致しないピンに対し、ピンスワップ処理を行う。図１６（Ｃ）はピンスワップ処理により図１６（Ｂ）で仮配線接続されたピン同士が同一のネット番号となっている。
【００９１】
一方で、図１６（Ｃ）は点線の○で表される未結線のピンが残されている。このように未結線のピンが残された場合、本実施例の配線処理部３４は図１７（Ａ）に示す未結線のピンについて、逐次、別の単層（Ｌｙ層）にて図１７（Ｂ）に示すように例えばＭａｘＦｌｏｗアルゴリズムなどの単純な単層結線手法を用いて、プリント配線板における実際の配線が物理的あるいは電気的な制約を満たすように仮配線接続する。
【００９２】
そして、図１７（Ｃ）では図１７（Ｂ）において仮配線接続されたピンのうちネット番号が一致しないピンに対し、ピンスワップ処理を行う。図１７（Ｃ）はピンスワップ処理により、図１７（Ｂ）で仮配線接続されたピン同士が同一のネット番号となっている。
【００９３】
このように、本実施例では仮配線接続とピンスワップとを連動させ、複数の単層を利用したピンスワップを試行することにより、配線性を保証しながらピン割り当てを行い、ピンスワップのやり直しなどの手戻りを少なくすることができる。
【００９４】
図１８は本実施例の配線処理部の処理手順を表した一例のフローチャートである。図１８のフローチャートにおいて、ピンスワップ手法（Ｘ）＝１は図１１のピンスワップ手法である。ピンスワップ手法（Ｘ）＝２は図１２のピンスワップ手法である。ピンスワップ手法（Ｘ）＝３は図１３のピンスワップ手法である。ピンスワップ手法（Ｘ）＝４は図１４のピンスワップ手法である。
【００９５】
ステップＳ１において、選択処理部４１は配線処理の対象となるピン（ビア）集合として例えばソースピン及びターゲットピン集合を選択する。選択処理部４１は例えばネットリスト記録部３５に記録されているネットリスト及び部品データ記録部３６に記録されている部品データに基づき、複数の部品ピン情報を含むソースピン及びターゲットピン集合を選択する。
【００９６】
ステップＳ２において、ピンスワップ処理部４３はソースピン及びターゲットピン集合に含まれる部品ピン情報に基づいて、ピンスワップ可能ピンの有無のチェックと、ピンスワップ手法（Ｘ）の確定とを行う。ピンスワップ処理部４３はピンスワップ可能ピンが無ければ、ステップＳ１０においてピンスワップ失敗と判定する。
【００９７】
ピンスワップ処理部４３はピンスワップ可能ピンが有れば、ステップＳ３においてピンスワップ手法（Ｘ）＝３であるか否かを判定する。また、ピンスワップ手法（Ｘ）＝３であれば詳細配線処理部４４はステップＳ４において、ネットＮのソース側のピンのピンスワップグループ番号ＳＷＰ＿Ｓ（Ｎ）＝０、及び、ネットＮのターゲット側のピンのピンスワップグループ番号ＳＷＰ＿Ｔ（Ｎ）＝０のネットを詳細配線接続する。
【００９８】
ステップＳ５において、選択処理部４１はソースピン及びターゲットピン集合から詳細配線接続したネットのピンに対応する部品ピン情報を除外する。ステップＳ３においてピンスワップ手法（Ｘ）＝３でないとき、又は、ステップＳ５の処理のあと、仮配線処理部４２はステップＳ６において、ソースピン及びターゲットピン集合に含まれる部品ピン情報に基づき、ソースピンとターゲットピンとを、例えばＭａｘＦｌｏｗアルゴリズムなどの単層結線手法を用いて仮配線接続する。
【００９９】
ステップＳ７において、ピンスワップ処理部４３はピンスワップ手法（Ｘ）に基づいて後述のピンスワップ手法（Ｘ）＝１、２又は４の何れかを実行する。ピンスワップを成功すれば、詳細配線処理部４４はステップＳ８において仮配線を削除する。ピンスワップを失敗すれば、ピンスワップ処理部４３はステップＳ１０においてピンスワップ失敗と判定する。仮配線を削除したあと、詳細配線処理部４４はステップＳ９において、仮配線接続されていたソース側のピン及びターゲット側のピンを詳細配線接続する。
【０１００】
図１９はソースピン及びターゲットピン集合の一例の構成図である。図１９のソースピン及びターゲットピン集合には複数の部品ピン情報が含まれる。図１９の部品ピン情報はピン名、ネット名、ピンスワップグループ番号を含む。
【０１０１】
図２０はピンスワップの結果が反映された部品ピン情報の一例の構成図である。図２０に示す部品ピン情報はステップＳ６で仮配線接続されるが、ネット名の一致しないピン同士が仮想的に接続されている。ステップＳ７のピンスワップ手法（Ｘ）により図２０の部品ピン情報は一方の部品のネット名がスワップ（ネット交換）され、仮配線接続されたピンのネット番号が一致する。
【０１０２】
図２１は、ピンスワップ手法（Ｘ）＝１の処理手順を表した一例のフローチャートである。図２１のフローチャートにおいて、Ｓ＿ｓはソースピン（ビア）集合（任意順列）を表している。Ｓはソースピン（ビア）集合要素数を表している。Ｓ＿ｓ（ｉ）はＳ＿ｓ内の任意順列のｉ番目の要素を表している。Ｔ（ｉ）はＳ＿ｓ（ｉ）と接続するターゲットピン（ビア）集合の要素を表している。Ｎ（ｅ）はピン（ビア）要素ｅがもつネットを表している。また、Ｆはソースピンとターゲットピンのネットが揃ったネットの集合を表している。
【０１０３】
ステップＳ２１において、ピンスワップ処理部４３はｉ＝０、ｊ＝０とする。ステップＳ２２において、ピンスワップ処理部４３は終了条件としてＦの要素数がＳになったか否かを判定する。Ｆの要素数がＳになっていなければ、ピンスワップ処理部４３はステップＳ２３においてｉに１を加算する。ステップＳ２４において、ピンスワップ処理部４３はｉ＞Ｓであるか否かを判定する。ｉ＞Ｓでなければ、ピンスワップ処理部４３はステップＳ２５において、Ｎ（Ｓ＿ｓ（ｉ））＝Ｎ（Ｔ（ｉ））であるか否かを判定する。
【０１０４】
Ｎ（Ｓ＿ｓ（ｉ））＝Ｎ（Ｔ（ｉ））でなければ、ピンスワップ処理部４３はステップＳ２６においてｊをｉ＋１とする。ステップＳ２７において、ピンスワップ処理部４３はｊ＞Ｓであるか否かを判定する。ｊ＞Ｓでなければ、ピンスワップ処理部４３はステップＳ２８において、Ｎ（Ｓ＿ｓ（ｊ））＝Ｎ（Ｔ（ｉ））であるか否かを判定する。
【０１０５】
Ｎ（Ｓ＿ｓ（ｊ））＝Ｎ（Ｔ（ｉ））でなければ、ピンスワップ処理部４３はステップＳ２９においてｊに１を加算したあと、ステップＳ２７の処理を行う。ステップＳ２６〜Ｓ２９の処理は例えば図１１において他方の部品のピンに割り当てられたネット番号（図１１においては最も右側の丸数字列）に合わせて一方の部品のピンに割り当てられたネット番号（図１１においては最も左側の丸数字列）をピンスワップする１回のピンスワップステップに対応している。
【０１０６】
Ｎ（Ｓ＿ｓ（ｊ））＝Ｎ（Ｔ（ｉ））であれば、ピンスワップ処理部４３はステップＳ３０においてＳ＿ｓ（ｉ）とＳ＿ｓ（ｊ）とをピンスワップしたあと、ステップＳ２５の処理を行う。そして、Ｎ（Ｓ＿ｓ（ｉ））＝Ｎ（Ｔ（ｉ））であれば、ピンスワップ処理部４３はステップＳ３１においてＦにＮ（Ｓ＿ｓ（ｉ））を追加したあと、ステップＳ２２の処理を行う。
【０１０７】
ステップＳ２４において、ｉ＞Ｓであれば、ピンスワップ処理部４３はステップＳ３２においてピンスワップ失敗と判定する。ステップＳ２７において、ピンスワップ処理部４３はｊ＞Ｓであれば、ステップＳ３２においてピンスワップ失敗と判定する。ステップＳ２２において、Ｆの要素数がＳになっていれば、ピンスワップ処理部４３はステップＳ３３においてピンスワップ成功と判定する。
【０１０８】
図２２は、ピンスワップ手法（Ｘ）＝２の処理手順を表した一例のフローチャートである。図２２のフローチャートにおいて、Ｓ＿ｓ、Ｓ、Ｓ＿ｓ（ｉ）、Ｔ（ｉ）、Ｎ（ｅ）及びＦは図２１と同様である。ＰＳ（ｉ）はＳ＿ｓ（ｉ）のピンスワップグループ番号を表している。ＰＴ（ｉ）はＴ（ｉ）のピンスワップグループ番号を表している。
【０１０９】
ステップＳ４１において、ピンスワップ処理部４３はｉ＝０、ｊ＝０、及び、ｋ＝０とする。ステップＳ４２において、ピンスワップ処理部４３は終了条件としてＦの要素数がＳになったか否かを判定する。
【０１１０】
Ｆの要素数がＳになっていなければ、ピンスワップ処理部４３はステップＳ４３においてｉに１を加算する。ステップＳ４４において、ピンスワップ処理部４３はｉ＞Ｓであるか否かを判定する。ｉ＞Ｓでなければ、ピンスワップ処理部４３はステップＳ４５において、Ｎ（Ｓ＿ｓ（ｉ））＝Ｎ（Ｔ（ｉ））であるか否かを判定する。
【０１１１】
Ｎ（Ｓ＿ｓ（ｉ））＝Ｎ（Ｔ（ｉ））でなければ、ピンスワップ処理部４３はステップＳ４６においてｊをｉ＋１とする。ステップＳ４７において、ピンスワップ処理部４３はｊ＞Ｓであるか否かを判定する。ｊ＞Ｓでなければ、ピンスワップ処理部４３はステップＳ４８において、Ｎ（Ｓ＿ｓ（ｊ））＝Ｎ（Ｔ（ｉ））であるか否かを判定する。
【０１１２】
Ｎ（Ｓ＿ｓ（ｊ））＝Ｎ（Ｔ（ｉ））でなければ、ピンスワップ処理部４３はステップＳ４９においてｊに１を加算したあと、ステップＳ４７の処理を行う。ステップＳ４６〜Ｓ４９の処理は例えば図１２において他方の部品のピンに割り当てられたネット番号（図１２においては最も右側の丸数字列）に合わせて一方の部品のピンに割り当てられたネット番号（図１２においては最も左側の丸数字列）をピンスワップする１回のピンスワップステップに対応している。
【０１１３】
Ｎ（Ｓ＿ｓ（ｊ））＝Ｎ（Ｔ（ｉ））であれば、ピンスワップ処理部４３はステップＳ５０において、ＰＳ（ｉ）＝ＰＳ（ｊ）且つＰＳ（ｉ）≠０であるか否かを判定する。ピンスワップ処理部４３はＰＳ（ｉ）＝ＰＳ（ｊ）且つＰＳ（ｉ）≠０であれば、ステップＳ５１においてＳ＿ｓ（ｉ）とＳ＿ｓ（ｊ）とをピンスワップしたあと、ステップＳ４５の処理を行う。そして、Ｎ（Ｓ＿ｓ（ｉ））＝Ｎ（Ｔ（ｉ））であれば、ピンスワップ処理部４３はステップＳ５７においてＦにＮ（Ｓ＿ｓ（ｉ））を追加したあと、ステップＳ４２の処理を行う。
【０１１４】
ＰＳ（ｉ）＝ＰＳ（ｊ）且つＰＳ（ｉ）≠０でなければ、ピンスワップ処理部４３はステップＳ５２において、ｋをｉ＋１とする。ステップＳ５３において、ピンスワップ処理部４３はｋ＞Ｓであるか否かを判定する。ｋ＞Ｓでなければ、ピンスワップ処理部４３はステップＳ５４においてＮ（Ｓ＿ｓ（ｉ））＝Ｎ（Ｔ（ｋ））であるか否かを判定する。
【０１１５】
Ｎ（Ｓ＿ｓ（ｉ））＝Ｎ（Ｔ（ｋ））でなければ、ピンスワップ処理部４３はステップＳ５５においてｋに１を加算したあと、ステップＳ５３の処理を行う。ステップＳ５２〜Ｓ５５の処理は例えば図１２において一方の部品のピンに割り当てられたネット番号（図１２においては最も左側の丸数字列）に合わせて他方の部品のピンに割り当てられたネット番号（図１２においては最も右側の丸数字列）をピンスワップする１回のピンスワップステップに対応している。
【０１１６】
Ｎ（Ｓ＿ｓ（ｉ））＝Ｎ（Ｔ（ｋ））であれば、ピンスワップ処理部４３は、ステップＳ５６においてＴ（ｉ）とＴ（ｋ）とをピンスワップしたあとで、ステップＳ４５の処理を行う。そして、Ｎ（Ｓ＿ｓ（ｉ））＝Ｎ（Ｔ（ｉ））であれば、ピンスワップ処理部４３はステップＳ５７においてＦにＮ（Ｓ＿ｓ（ｉ））を追加したあと、ステップＳ４２の処理を行う。
【０１１７】
ステップＳ４４において、ｉ＞Ｓであれば、ピンスワップ処理部４３はステップＳ５８においてピンスワップ失敗と判定する。ステップＳ４７において、ピンスワップ処理部４３はｊ＞Ｓであれば、ステップＳ５８においてピンスワップ失敗と判定する。ステップＳ５３において、ｋ＞Ｓであれば、ピンスワップ処理部４３はステップＳ５９においてピンスワップ失敗と判定する。ステップＳ４２において、Ｆの要素数がＳになっていれば、ピンスワップ処理部４３はステップＳ６０においてピンスワップ成功と判定する。
【０１１８】
図２３は、ピンスワップ手法（Ｘ）＝４の処理手順を表した一例のフローチャートである。なお、図２３のフローチャートは一部を除いて図２２のフローチャートと同様であるため、同一部分についての説明を適宜省略する。図２３のステップＳ６１〜Ｓ７５の処理は図２２のステップＳ４１〜Ｓ５５の処理と同様である。
【０１１９】
ステップＳ７４において、Ｎ（Ｓ＿ｓ（ｉ））＝Ｎ（Ｔ（ｋ））であれば、ピンスワップ処理部４３は、ステップＳ７６において、ＰＴ（ｉ）＝ＰＴ（ｋ）且つＰＴ（ｉ）≠０であるか否かを判定する。
【０１２０】
ＰＴ（ｉ）＝ＰＴ（ｋ）且つＰＴ（ｉ）≠０であれば、ステップＳ７７においてピンスワップ処理部４３はＴ（ｉ）とＴ（ｋ）とをピンスワップしたあと、ステップＳ６５の処理を行う。そして、Ｎ（Ｓ＿ｓ（ｉ））＝Ｎ（Ｔ（ｉ））であれば、ピンスワップ処理部４３はステップＳ７８においてＦにＮ（Ｓ＿ｓ（ｉ））を追加したあと、ステップＳ６２の処理を行う。
【０１２１】
ステップＳ５６において、ＰＴ（ｉ）＝ＰＴ（ｋ）且つＰＴ（ｉ）≠０でなければ、ピンスワップ処理部４３はステップＳ８０においてピンスワップ失敗と判定する。
【０１２２】
図２４及び図２５は本実施例の配線処理部の処理を表した一例のイメージ図である。図２４（Ａ）は例えばステップＳ６の処理により、ソースピン及びターゲットピン集合に含まれる部品ピン情報に基づき、ソースピンとターゲットピンとを、例えばＭａｘＦｌｏｗアルゴリズムなどの単層結線手法を用いて仮配線接続したものである。
【０１２３】
図２４（Ｂ）は例えばステップＳ７の処理により、ピンスワップ手法（Ｘ）を実行したものである。図２４（Ｃ）は例えばステップＳ８の処理により、仮配線を削除したものである。図２４（Ｄ）は例えばステップＳ９の処理により、仮配線接続されていたソース側のピン及びターゲット側のピンを詳細配線接続したものである。
【０１２４】
図２４及び図２５に示した本実施例の配線処理部の処理ではネットの並び順がマッチしているため、ネット別の間隙等を考慮した詳細配線接続への適用が容易である。本実施例の配線処理部の処理は自動化でき、詳細配線接続も単層マッチング自動配線と連携することでピンスワップ自動配線機能として運用可能である。
【０１２５】
図２６〜図２８は本実施例の配線処理部の処理の応用例を表したイメージ図である。図２６（Ａ）は部品（ｎ）から部品（ｍ）への束配線において、部品（ｍ）の接続対象ピンがスワップ可能である場合に、マウスカーソルポイント１００付近を中継点として指定する様子を表している。なお、中継点とは配線対象ネット数分の順列点を仮想接続点とみなしたものである。
【０１２６】
図２６（Ｂ）は、部品（ｎ）から中継点１０１への仮配線処理と、中継点１０１から部品（ｍ）への仮配線処理とに分割した様子を表したものである。部品（ｎ）から中継点１０１への仮配線処理と中継点１０１から部品（ｍ）への仮配線処理とで図２６（Ｂ）では例えばＭａｘＦｌｏｗアルゴリズムを用いて仮配線接続を行っている。
【０１２７】
図２６（Ｃ）は、中継点１０１にてネットが一致しない場合に、部品（ｎ）あるいは部品（ｍ）でのピンスワップを行い、部品（ｎ）から中継点１０１までの詳細配線処理を実行して中継点１０１までの配線を確定した様子を表したものである。
【０１２８】
図２７（Ｄ）は中継点１０１から部品（ｍ）への束配線と置き換えて、同様の中継点１０２を指定した様子を表している。図２７（Ｅ）は中継点１０２にてネットが一致しない場合に、部品（ｎ）あるいは部品（ｍ）でのピンスワップを行い、部品（ｎ）から中継点１０２までの詳細配線処理を実行して中継点１０２までの配線を確定した様子を表したものである。図２８（Ｆ）は最後の中継点１０２から部品（ｍ）までの詳細配線処理を実行して、部品（ｎ）から部品（ｍ）までの配線が全て確定された様子を表したものである。
【０１２９】
本発明は、以下に記載する付記のような構成が考えられる。
（付記１）
コンピュータに、
少なくとも一方がピンスワップ可能なピンを持つ部品間の配線を設計するとき前記ピンに割り当てられているネットを考慮せず配線性を保証するように仮配線接続し、
仮配線接続された前記ピンに割り当てられているネットが同一となるように前記ピンスワップ可能なピンをピンスワップする
処理を実行させる設計プログラム。
（付記２）
前記ピンスワップする処理は前記ネットを流れる信号の種類に応じて前記ピンスワップ処理の結果を補正する
付記１記載の設計プログラム。
（付記３）
前記ピンスワップする処理は前記部品の両方がピンスワップ可能なピンを持つとき何れか一方の部品において前記ピンスワップを実行するか、又は、両方の部品において前記ピンスワップを実行する
付記１記載の設計プログラム。
（付記４）
前記ピンスワップする処理は一のネットグループに含まれる信号が他のネットグループに含まれるとき、前記一のネットグループにおける前記信号のピンスワップの実行に連動して、他のネットグループにおける前記信号のピンスワップを実行する
付記１記載の設計プログラム。
（付記５）
前記ピンスワップする処理は、前記ピンスワップ可能なピンを持つ一方の部品のピンに割り当てられている前記ネットが、前記仮配線接続された他方の部品のピンに割り当てられている前記ネットと同一となるように、前記一方の部品のピンを順次、ピンスワップする
付記１記載の設計プログラム。
（付記６）
前記ピンスワップする処理は、前記部品の両方がピンスワップ可能なピンを持ち、一方の前記部品がピンスワップ不可なピンを持つとき、一方の前記部品のピンスワップ可能なピンを持つ一方の部品のピンに割り当てられている前記ネットが、前記仮配線接続された他方の部品のピンに割り当てられている前記ネットと同一となるように、前記一方の部品のピンを順次、ピンスワップし、一方の前記部品のピンスワップ不可なピンに割り当てられている前記ネットが、前記仮配線接続された他方の部品のピンに割り当てられている前記ネットと同一となるように、前記他方の部品のピンを順次、ピンスワップする
付記１記載の設計プログラム。
（付記７）
前記ピンスワップする処理は、前記部品の両方が、ピンスワップ可能なピン及びピンスワップ不可なピンを持つとき、両方の前記部品のピンスワップ不可なピンに割り当てられている前記ネットを除外する
付記１記載の設計プログラム。
（付記８）
前記ピンスワップする処理は、前記部品の両方が、ピンスワップ可能なピンの複数のピンスワップグループを含むとき、前記ピンスワップ可能なピンを持つ一方の部品のピンに割り当てられている前記ネットが、前記仮配線接続された他方の部品のピンに割り当てられている前記ネットと同一、且つ前記ピンスワップするピンのピンスワップグループが同じであるときに、前記一方の部品のピンを順次、ピンスワップし、
前記ピンスワップするピンのピンスワップグループが異なるときに、前記ピンスワップ可能なピンを持つ他方の部品のピンに割り当てられている前記ネットが、前記仮配線接続された一方の部品のピンに割り当てられている前記ネットと同一、且つ前記ピンスワップするピンのピンスワップグループが同じであるときに、前記他方の部品のピンを順次、ピンスワップする
付記１記載の設計プログラム。
（付記９）
ピンスワップ可能なピンを持つ部品の配線を設計する設計装置であって、
少なくとも一方がピンスワップ可能なピンを持つ部品間の配線を設計するとき前記ピンに割り当てられているネットを考慮せず配線性を保証するように仮配線処理手段と、
仮配線接続された前記ピンに割り当てられているネットが同一となるように前記ピンスワップ可能なピンをピンスワップするピンスワップ処理手段と
を有する設計装置。
（付記１０）
コンピュータによって実行される設計方法であって、
少なくとも一方がピンスワップ可能なピンを持つ部品間の配線を設計するとき前記ピンに割り当てられているネットを考慮せず配線性を保証するように仮配線接続し、
仮配線接続された前記ピンに割り当てられているネットが同一となるように前記ピンスワップ可能なピンをピンスワップする
ことを特徴とする設計方法。
【０１３０】
本発明は、具体的に開示された実施例に限定されるものではなく、特許請求の範囲から逸脱することなく、種々の変形や変更が可能である。
【符号の説明】
【０１３１】
１、２    部品
２１    入力装置
２２    出力装置
２３    記録媒体読取装置
２４    補助記憶装置
２５    主記憶装置
２６    演算処理装置
２７    インターフェース装置
２８    記録媒体
２９    バス
３０    設計装置
３２    入力処理部
３３    出力処理部
３４    配線処理部
３５    ネットリスト記録部
３６    部品データ記録部
４１    選択処理部
４２    仮配線処理部
４３    ピンスワップ処理部
４４    詳細配線処理部
【図１】
0005589783.tif 000002
【図２】
0005589783.tif 000003
【図３】
0005589783.tif 000004
【図４】
0005589783.tif 000005
【図５】
0005589783.tif 000006
【図６】
0005589783.tif 000007
【図７】
0005589783.tif 000008
【図９】
0005589783.tif 000009
【図１０】
0005589783.tif 000010
【図１１】
0005589783.tif 000011
【図１２】
0005589783.tif 000012
【図１３】
0005589783.tif 000013
【図１４】
0005589783.tif 000014
【図１５】
0005589783.tif 000015
【図１６】
0005589783.tif 000016
【図１７】
0005589783.tif 000017
【図１８】
0005589783.tif 000018
【図１９】
0005589783.tif 000019
【図２０】
0005589783.tif 000020
【図２１】
0005589783.tif 000021
【図２２】
0005589783.tif 000022
【図２３】
0005589783.tif 000023
【図２４】
0005589783.tif 000024
【図２５】
0005589783.tif 000025
【図２６】
0005589783.tif 000026
【図２７】
0005589783.tif 000027
【図２８】
0005589783.tif 000028
【図８】
0005589783.tif 000029