(57)【特許請求の範囲】
【請求項１】
１つ以上の計算装置によって実行される方法であって、
印刷回路基板（ＰＣＢ）のレイアウトを作成するステップであり、
前記ＰＣＢ上のｎ個の位置にｎ本の境界線を作成し、且つ
前記ｎ本の境界線の各々上に一組の電子部品を配置する
ことを有するステップと、
前記ＰＣＢに対する一組のレイアウト要求が満足されるまで、前記ＰＣＢの前記レイアウトを反復的に調整して評価するステップと、
を有し、
前記ＰＣＢの前記レイアウトを反復的に調整するために、各反復は、
ランダムに選択された２つの境界線を交換すること、
ランダムに選択された２つの組の電子部品を交換すること、及び
ランダムに選択された１つの部品を、ランダムに選択された第１組の電子部品から、ランダムに選択された第２組の電子部品に移動させること、
のうちの１つをランダムに実行することを有する、
方法。
【請求項２】
前記ＰＣＢの前記レイアウトを、分割ツリーを用いて表現するステップ、を更に有する請求項１に記載の方法。
【請求項３】
前記ＰＣＢの前記レイアウトを、ポリッシュ・エクスプレッション又はリバース・ポリッシュ・エクスプレッションを用いて表現するステップ、を更に有する請求項１に記載の方法。
【請求項４】
前記ＰＣＢの前記レイアウトを反復的に調整して評価するステップは、シミュレーテッドアニーリングに基づき、それにより、この反復処理は、温度によって制御され、
前記温度を初期値に設定し、
各反復にて前記温度をステップ値だけ低下させ、且つ
前記温度が最終値に達したときに該反復処理を終了させる
ことを有する、請求項１に記載の方法。
【請求項５】
前記ＰＣＢの前記レイアウトを反復的に評価するために、各反復は、
前記ＰＣＢの前記レイアウトのコストを、前記一組のレイアウト要求に基づいて計算し、
ランダム値を生成し、
前記ＰＣＢの現在最良のレイアウト、前記ＰＣＢの該現在最良のレイアウトのコスト、及び反復処理を制御する現在温度に基づいて、第２の値を計算し、且つ
前記ランダム値が前記第２の値より小さい場合に、
前記ＰＣＢの前記現在最良のレイアウトを、前記ＰＣＢの前記レイアウトとして設定し、且つ
前記ＰＣＢの前記現在最良のレイアウトの前記コストを、前記ＰＣＢの前記レイアウトのコストとして設定する、
ことを有する、請求項１に記載の方法。
【請求項６】
１つ以上のプロセッサによって実行可能な命令を格納したメモリと、
前記メモリに結合されて前記命令を実行するよう動作可能な前記１つ以上のプロセッサであり、前記命令を実行するとき、
印刷回路基板（ＰＣＢ）のレイアウトを作成するステップであり、
前記ＰＣＢ上のｎ個の位置にｎ本の境界線を作成し、且つ
前記ｎ本の境界線の各々上に一組の電子部品を配置する
ことを有するステップと、
前記ＰＣＢに対する一組のレイアウト要求が満足されるまで、前記ＰＣＢの前記レイアウトを反復的に調整して評価するステップと、
を実行するよう動作する１つ以上のプロセッサと、
を有し、
前記ＰＣＢの前記レイアウトを反復的に調整するために、各反復は、
ランダムに選択された２つの境界線を交換すること、
ランダムに選択された２つの組の電子部品を交換すること、及び
ランダムに選択された１つの部品を、ランダムに選択された第１組の電子部品から、ランダムに選択された第２組の電子部品に移動させること、
のうちの１つをランダムに実行することを有する、
システム。
【請求項７】
ソフトウェアを格納したコンピュータ読み取り可能記憶媒体であって、前記ソフトウェアは、１つ以上のコンピュータシステムによって実行されるときに、該１つ以上のコンピュータシステムに、
印刷回路基板（ＰＣＢ）のレイアウトを作成するステップであり、
前記ＰＣＢ上のｎ個の位置にｎ本の境界線を作成し、且つ
前記ｎ本の境界線の各々上に一組の電子部品を配置する
ことを有するステップと、
前記ＰＣＢに対する一組のレイアウト要求が満足されるまで、前記ＰＣＢの前記レイアウトを反復的に調整して評価するステップと、
を実行させるよう作用し、
前記ＰＣＢの前記レイアウトを反復的に調整するために、各反復は、
ランダムに選択された２つの境界線を交換すること、
ランダムに選択された２つの組の電子部品を交換すること、及び
ランダムに選択された１つの部品を、ランダムに選択された第１組の電子部品から、ランダムに選択された第２組の電子部品に移動させること、
のうちの１つをランダムに実行することを有する、
コンピュータ読み取り可能記憶媒体。
【請求項８】
印刷回路基板（ＰＣＢ）のレイアウトを作成する手段であり、
前記ＰＣＢ上のｎ個の位置にｎ本の境界線を作成する手段、及び
前記ｎ本の境界線の各々上に一組の電子部品を配置する手段
を有する手段と、
前記ＰＣＢに対する一組のレイアウト要求が満足されるまで、前記ＰＣＢの前記レイアウトを反復的に調整して評価する手段と、
を有し、
前記ＰＣＢの前記レイアウトを反復的に調整するために、各反復は、
ランダムに選択された２つの境界線を交換すること、
ランダムに選択された２つの組の電子部品を交換すること、及び
ランダムに選択された１つの部品を、ランダムに選択された第１組の電子部品から、ランダムに選択された第２組の電子部品に移動させること、
のうちの１つをランダムに実行することを有する、
システム。
【発明の詳細な説明】
【技術分野】
【０００１】
この開示は、概して、印刷回路基板（ＰＣＢ）レイアウトに関する。
【背景技術】
【０００２】
電子部品を機械的に支持するため、及び、電子部品を、導電チャネル、トラック、ビア、又は非導電性の基板上にラミネートされた金属（例えば、銅）シートからエッチングされた信号配線を用いて電気的に接続するため、印刷回路基板すなわちＰＣＢが使用されている。１つのＰＣＢ上に複数の電子部品が配置され得る。電子部品の部品パッド、配線、ビア、及びその他の基板機構をＰＣＢ上に配置し、ＰＣＢを製造するのに必要なフロアプラン（間取り図）を作成する処理は、一般的に、ＰＣＢレイアウトと呼ばれている。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
一実施形態において、ＰＣＢレイアウト作成方法が提供される。
【課題を解決するための手段】
【０００４】
一実施形態において、印刷回路基板（ＰＣＢ）のレイアウトが、前記ＰＣＢ上のｎ個の位置それぞれにｎ本の境界線を作成し、且つ前記ｎ本の境界線上それぞれにｎ組の電子部品を配置することによって作成され、前記ＰＣＢに対する一組のレイアウト要求が満足されるまで、前記ＰＣＢの前記レイアウトが反復的に調整されて評価される。
【図面の簡単な説明】
【０００５】
【図１Ａ】ＰＣＢの一例を示す上面図である。
【図１Ｂ】ＰＣＢの一例を示す側面図である。
【図２】境界線によって画成されるＰＣＢ上の個別の領域内に電子部品が配置されるＰＣＢレイアウトの一例を示す図である。
【図３Ａ】ＰＣＢ上の境界線の上に電子部品が配置されるＰＣＢレイアウトの一例を示す図である。
【図３Ｂ】ＰＣＢ上の境界線の上に電子部品が配置されるＰＣＢレイアウトの一例を示す図である。
【図３Ｃ】ＰＣＢ上の境界線の上に電子部品が配置されるＰＣＢレイアウトの一例を示す図である。
【図４】フロアプランの一例を示す図である。
【図５】分割ツリーの一例を示す図である。
【図６】二分木を表すポリッシュ・エクスプレッションの一例を示す図である。
【図７】ＰＣＢ上の境界線の上に電子部品が配置されるＰＣＢレイアウトの一例を示す図である。
【図８】分割ツリーの一例を示す図である。
【図９】ＰＣＢレイアウトを自動作成する方法の一例を示す図である。
【図１０】コンピュータシステムの一例を示す図である。
【発明を実施するための形態】
【０００６】
ＰＣＢレイアウト処理の一部は、複数の電子部品をＰＣＢ上に配置するためのフロアプラン（間取り図）を作成することを含む。しばしば、同一のＰＣＢ上に配置される様々な電子部品が、異なる大きさ、形状若しくは設計と、異なる性能要求若しくは制約とを有することがある。さらに、ＰＣＢ全体としての設計、性能要求又は制約が存在することがある。このような要求又は制約の例には、以下に限られないが、（１）部品アライメント（例えば、基板上で特定の部品群を横方向、縦方向又は斜め方向に整列させる必要があり得る）、（２）部品間隔（例えば、部品同士の間に特定量の空間を必要とし得る）、（３）部品位置（例えば、特定の部品群を互いに隣り合わせて配置する必要があり得る）、（４）部品数（例えば、同一基板上に特定数の部品を配置する必要があり得る）、（５）熱気流（例えば、部品群を冷却するためにＰＣＢ全体を空気が効率的に流れるようにし得る）、（６）ワイヤ長の整合（例えば、特定のワイヤ群が同じ長さを有することが要求され得る）、（７）ルーティング可能性（例えば、全てのワイヤを完全にルーティングすべきである）、（８）部品実装可能性（例えば、ＰＣＢ製造に関する十分なマージン）、及び（９）コスト最小化（例えば、材料、労力又は成功率に関して、ＰＣＢを製造するコストを最小化すること）が含まれる。
【０００７】
図１Ａは、多数の電子部品１１０が上に配置されたＰＣＢ１００の一例の上面図を示している。電子部品１１０は、異なるサイズ及び形状を有していてもよく、ＰＣＢ１００の全体に分布され得る。電子部品１１０は、多数のワイヤ又ははんだバンプを介してＰＣＢ１００に接続され得る。図１Ｂは、ＰＣＢ１００及び電子部品１１０の側面図を例示している。多数のワイヤ１１２が、電子部品１１０とＰＣＢ１００との間の電気接続を構築し得る。
【０００８】
伝統的に、ＰＣＢレイアウトは（例えば、レイアウト技師又は技術者によって）手作業で行われてきた。最近になり、ＰＣＢの複雑度が増すにつれて、レイアウト処理の一部を自動化する助けとなる様々なコンピュータ実行ツール（例えば、ソフトウェアアプリケーション）が存在するようになった。既存の一部のレイアウトツールは、レイアウトの品質を向上させるために様々な最適化手法を実装しているが、それらの最適化手法は様々な問題を有する。例えば、トップダウンレイアウト処理では、先ず、ＰＣＢが数個の大きめの領域に分割され、その後、複数の電子部品を個々の領域に配置することができるようになるまで、大きめの領域の各々が、繰り返し、より小さい領域へと分割される。図２は、ＰＣＢレイアウトの一例を示している。この例では、ＰＣＢ１００が最終的に多数の比較的小さい領域１２０に分割されている。各領域１２０の境界が境界線１３０によって示されている。好適な領域１２０内に配置される異なる電子部品１１０を収容するため、異なる領域１２０は異なる大きさ及び形状を有し得る。しかしながら、トップダウンレイアウト処理では、トップダウン的な後の最適化処理は、ほとんど局所的（ローカル）なもの（例えば、基板の特定の領域に関する）であり、全体的（グローバル）なもの（例えば、概してＰＣＢ全体に関する）ではない。柔軟性がほとんどなく、ワイヤの長さ及び制約、ルーティング、並びにリソースを、細かい粒度のグリッドで制御することは複雑且つ困難であることが多い。何故なら、初期の処理は、誤差を有し得る大雑把な部品位置情報を用いて最適化を行わなければならず、後の処理は、そのような初期の処理によって為された決定に従わなければならないためである。他の一例として、フロアプランニング・グリッド配置レイアウト処理では、フロアプランが修正される場合に前段階（例えば、先のフロアプラン）でのグリッド配置が無効なもの、すなわち、使用できないものとなるので、過度に多い繰り返しが存在する。一部のレイアウト処理は、小型且つ単純なＰＣＢでは十分に機能し得るが、より大型且つ複雑なＰＣＢでは問題を有し、その他のレイアウト処理は、様々な種類のレイアウト情報及び基板機構をサポートしていないことがある。
【０００９】
特定の実施形態により、ＰＣＢ上で電子部品が、境界線によって画成される領域の内部に配置されることに代えて、境界線上に配置されるＰＣＢレイアウト処理が提供される。図３Ａは、ＰＣＢ１００のレイアウトの一例を示している。ＰＣＢ１００を多数の領域に分割する多数の境界線１３０（例えば、横線又は縦線）が存在している。しかしながら、図２とは対照的に、電子部品１１０は様々な境界線１３０上に配置される。なお、１つ以上の電子部品１１０が、同一の横方向又は縦方向の境界線１３０上に配置され得る。
【００１０】
特定のＰＣＢと、そのＰＣＢ上に配置される特定の電子部品の組（セット）とが与えられる場合、該電子部品セットが配置され得る境界線を作り出すことには異なる複数のレイアウトが存在し得る。例えば、図３Ｂ及び３Ｃは、図３Ａに示したレイアウトとは異なった、ＰＣＢ１００の境界線１３０の２つの代替的なレイアウトを例示している。
【００１１】
特定の実施形態において、一組の境界線によって定められるＰＣＢのレイアウト（例えば、図３Ａ−３Ｃ）は、分割フロアプランを表すのに好適な二分木である分割ツリー（Slicing  Tree）によって表され得る。分割ツリーを一般的に概説するため、図４に示すフロアプランの一例を考える。この例において、エリア４００は、４本の縦方向の境界線４２０−１、４２０−２、４２０−３、４２０−４と２本の横方向の境界線４２０−５、４２０−６とを含む６本の境界線４２０によって、７個の領域４１０に分割されている。なお、横方向の境界線は領域を縦方向に分割し（例えば、その領域を上部と下部とに分割する）、縦方向の境界線は領域を横方向に分割する（例えば、その領域を左部と右部とに分割する）。或るエリア内で、一組の境界線によって画成される領域の数は、境界線の本数に１を足し合わせたものに等しい。故に、ｎ本の境界線が存在する場合、該ｎ本の境界線によって画成されるｎ＋１個の領域が存在する。
【００１２】
図５は、図４に示したフロアプランを表す分割ツリーの一例を示している。読み取り易さのために菱形形状のノードとして示した図５のリーフノードの各々が、図４内の１つの領域４１０に対応しており、読み取り易さのために円形のノードとして示した図５の非リーフノード５２０の各々が、図４内の１本の境界線４２０に対応している。故に、リーフノードの数は、非リーフノードの数＋１に等しい。より具体的には、ノード５２０−１は縦境界線４２０−１に対応し、ノード５２０−２は縦境界線４２０−２に対応し、ノード５２０−３は縦境界線４２０−３に対応し、ノード５２０−４は縦境界線４２０−４に対応し、ノード５２０−５は横境界線４２０−５に対応し、ノード５２０−６は横境界線４２０−６に対応する。なお、１つの特定のフロアプランが、異なる複数のバリエーションの分割ツリーによって表され得る。
【００１３】
特定の実施形態において、特定の境界線に対応する各々の非リーフノードに対し、その２つの子は、対応する境界線によって分割される２つの部分である。例えば、図４において、横方向の境界線４２０−６はエリア４００を上部と下部とに分割している。上部は、境界線４２０−１乃至４２０−５によって画成される領域４１０−１乃至４１０−６を含んでいる。下部は領域４１０−７を含んでいる。図５において、ノード５２０−６は横方向の境界線４２０−６に対応している。その左側の子は、領域４１０−７に対応するリーフノード７を含んでおり、その右側の子は、境界線４２０−１乃至４２０−５によって画成される領域４１０−１乃至４１０−６に対応するリーフノード１乃至６及び非リーフノード５２０−１乃至５２０−５を含んでいる。他の一例として、図４において、縦方向の境界線４２０−４はエリア４１０−４及び４１０−５を互いに分割している。図５において、非リーフノード５２０−４は縦方向の境界線４２０−４に対応している。その左側の子は、領域４１０−４に対応するリーフノード４を含んでおり、その右側の子は、領域４１０−５に対応するリーフノード５を含んでいる。特定の実施形態において、如何なる分割フロアプランも、好適な分割ツリーによって同様に表され得る。
【００１４】
特定の実施形態において、分割ツリーは、論理式、演算式又は代数式の形態であるポリッシュ・エクスプレッション（Polish  Expression）又はリバース・ポリッシュ・エクスプレッションによって表されてもよい。ポリッシュ・エクスプレッションを用いる場合、各演算子がそのオペランドの左側に置かれ、リバース・ポリッシュ・エクスプレッションを用いる場合、各演算子がそのオペランドの右側に置かれる。図６は、二分木の一例を示している。ノードＺが２つの子Ｘ及びＹを有している。Ｘ及びＹはリーフノードであってもよいし、なくてもよい。このような二分木をポリッシュ・エクスプレッション又はリバース・ポリッシュ・エクスプレッションを用いて表すために、特定の実施形態において、親ノード（すなわち、非リーフノード）を演算子と見なし、その２つの子をその演算子の２つのオペランドと見なす。故に、図６に示す二分木を表すリバース・ポリッシュ・エクスプレッションは、“Ｐｏｌｉｓｈ（Ｘ），Ｐｏｌｉｓｈ（Ｙ），Ｚ”である。なお、２つの子Ｘ及びＹはリーフノードであってもよいし、リーフノードでなくてもよい。子がリーフノードである場合、そのポリッシュ・エクスプレッション又はリバース・ポリッシュ・エクスプレッションは、そのリーフノードの値である。子が非リーフノードである場合、その非リーフノードのポリッシュ・エクスプレッション又はリバース・ポリッシュ・エクスプレッションを取得するために同じロジックが適用され得る。
【００１５】
同様に、図５に示した分割ツリーは、リバース・ポリッシュ・エクスプレッション“７，１，２，Ｖ，３，６，４，５，Ｖ，Ｈ，Ｖ，Ｖ，Ｈ”によって表され得る。読み取りやすさのため、このリバース・ポリッシュ・エクスプレッションを、角括弧（例えば、“［”及び“］”）と用いて、“［７，［［１，２，Ｖ］，［３，［６，［４，５，Ｖ］，Ｈ］，Ｖ］，Ｖ］，Ｈ］”として複数のセグメント（部分）に分割すると一層明瞭になり得る。この式において、セグメント“［４，５，Ｖ］”はノード５２０−４及びその２つの子“４”及び“５”に対応し、“Ｖ”は演算子であり、“４”及び“５”は２つのオペランドである。セグメント“［６，［４，５，Ｖ］，Ｈ］”は、ノード５２０−５及びその２つの子“６”及び“［４，５，Ｖ］”に対応し、“Ｈ”は演算子であり、“６”及び“［４，５，Ｖ］”は２つのオペランドである。セグメント“［３，［６，［４，５，Ｖ］，Ｈ］，Ｖ］”は、ノード５２０−３及びその２つの子“３”及び“［６，［４，５，Ｖ］，Ｈ］”に対応し、最後の“Ｖ”が演算子である。セグメント“［１，２，Ｖ］”はノード５２０−１及びその２つの子“１”及び“２”に対応し、“Ｖ”は演算子であり、“１”及び“２”は２つのオペランドである。セグメント“［［１，２，Ｖ］，［３，［６，［４，５，Ｖ］，Ｈ］，Ｖ］，Ｖ］”は、ノード５２０−２及びその２つの子“［１，２，Ｖ］”及び“［３，［６，［４，５，Ｖ］，Ｈ］，Ｖ］”に対応し、最後の“Ｖ”が演算子である。全体表現“７，１，２，Ｖ，３，６，４，５，Ｖ，Ｈ，Ｖ，Ｖ，Ｈ”は、ノード５２０−６（すなわち、ルート）及びその２つの子“７”及び“［［１，２，Ｖ］，［３，［６，［４，５，Ｖ］，Ｈ］，Ｖ］，Ｖ］”に対応し、最後の“Ｈ”が演算子である。
【００１６】
分割ツリーを表すポリッシュ・エクスプレッション又はリバース・ポリッシュ・エクスプレッションの場合、縦方向の境界線に対応する演算子“Ｖ”及び横方向の境界線に対応する演算子“Ｈ”という２つのタイプの演算子が存在する。非平衡（skewed）分割ツリーは、式内の如何なる２つの連続した演算子（例えば、“Ｈ”又は“Ｖ”）も同一タイプとならないポリッシュ・エクスプレッション又はリバース・ポリッシュ・エクスプレッションに対応する。
【００１７】
図３Ａ−３Ｃに示したように、ＰＣＢは一組の境界線を用いて複数の領域に分割され得る。特定の実施形態において、各境界線上に１つ以上の電子部品が配置され得る。図７は、ＰＣＢ７００の一例を示している。５本の横方向の境界線７３０−Ｈ１乃至７３０−Ｈ５と３本の縦方向の境界線７３０−Ｖ１乃至７３０−Ｖ３とを含む（すなわち、全部で８本の境界線を含む）ＰＣＢ７００のレイアウト例が作成されている。各境界線７３０上に一組の電子部品が配置され得る。特定の実施形態において、単一の境界線７３０上に配置される各組の電子部品は、１つ以上の電子部品を含み得る。ｎ本の境界線が存在する場合、ｎ組の電子部品が存在する。図７に示した例においては、８本の境界線が存在するので、８組の電子部品７１０−１乃至７１０−８が存在する。
【００１８】
特定の実施形態において、例えば図７に示したものなどのＰＣＢレイアウトは、分割ツリーによって表現され得る。図８は、図７に示したレイアウトを表す分割ツリーの一例を示している。図８の非リーフノードの各々は、図７内の１つの横方向又は縦方向の境界線７３０に対応している（例えば、ノード“Ｈ１”は横境界線７３０−Ｈ１に対応し、ノード“Ｖ１”は縦境界線７３０−Ｖ１に対応し、等々）。図８のリーフノードの各々は、１つ（すなわち、ノード“Ｘ”）を除いて、図７内の１つの境界線７３０上に配置される一組の電子部品７１０に対応している（例えば、ノード“１”は部品セット７１０−１に対応し、ノード“２”は部品セット７１０−２に対応し、等々）。上述のように、分割ツリーは、分割フロアプランを表すために使用される二分木であるから、リーフノードの数は、非リーフノードの数＋１に等しい。非リーフノードは境界線に対応し、リーフノードは境界線上に配置される電子部品セットに対応する。境界線上に配置される電子部品セットの数は必ず境界線の数に等しいので、分割ツリー内に、電子部品セットに対応しないリーフノードが１つ存在する。特定の実施形態において、この余分なリーフノードはダミーノード（例えば、単なるプレイスホルダー）と見なされる。図８において、リーフノード“Ｘ”は、如何なる電子部品セットにも対応しないダミーノードである。
【００１９】
特定の実施形態において、分割ツリーはポリッシュ・エクスプレッション又はリバース・ポリッシュ・エクスプレッションによって表され得る。例えば、図８に示した分割ツリーを表すリバース・ポリッシュ・エクスプレッションは、“Ｘ，１，Ｈ２，２，Ｖ１，３，４，Ｈ３，５，６，７，８，Ｈ５，Ｖ３，Ｈ４，Ｖ２，Ｈ１”である。
【００２０】
特定の実施形態において、ＰＣＢレイアウトが分割ツリーによって表されるとき、レイアウトは、分割ツリー内のリーフノード又は非リーフノードの位置を調整することによって変更され得る。同様に、ＰＣＢレイアウトがポリッシュ・エクスプレッション又はリバース・ポリッシュ・エクスプレッションによって表されるとき、レイアウトは、式内のオペランド又は演算子の位置を調整することによって変更され得る。例えば、特定の実施形態は、（１）ポリッシュ・エクスプレッション又はリバース・ポリッシュ・エクスプレッション内の２つの隣接し合うオペランドを交換し、あるいは、分割ツリー内の２つの隣接し合うリーフノードを交換し、（２）ポリッシュ・エクスプレッション又はリバース・ポリッシュ・エクスプレッション内の一連の連続した演算子を（例えば、ＨＶＨＶ）を取って、それを相補形（例えば、ＶＨＶＨ）にし、（３）分割ツリーが非平衡ツリーのままであることを確保しながら、隣接する演算子及びオペランドを交換し得る。
【００２１】
図９は、ＰＣＢレイアウトを自動作成する方法の一例を示している。特定の実施形態において、ＰＣＢレイアウトを作成するためには、多数の電子部品がＰＣＢ上に配置される必要があるとともに、一組の設計若しくは性能要求又は制約が、そのレイアウトによって満足される必要がある。特定の実施形態は、ステップ９０２に示すように、（１）以下に限られないが、ＰＣＢのサイズ、レイヤ数、及び具体的な禁止事項を含み得る、ＰＣＢ自体を記述する入力情報又はデータ、（２）以下に限られないが、各電子部品の名称、識別子、サイズ、種類、及びピン名称リストを含み得る、ＰＣＢ上に配置される電子部品を記述する入力情報又はデータ、（３）以下に限られないが、長さ制限、及びその他の好適な設計、性能若しくは製造上の要求又は制約を含み得る、ＰＣＢのネットリスト（回路接続状態）を記述する入力情報又はデータ、並びに（４）利用可能である場合に、更なる関連情報を記述する入力情報又はデータ、を受信し得る。特定の実施形態において、入力情報は１つ以上のデータ記憶部に格納され得る。特定の実施形態は、これらのデータ記憶部から入力情報を取得し得る。各々の情報タイプ（例えば、ＰＣＢ、電子部品、及びネット）は、好適なデータ構造を用いて表され得る。
【００２２】
特定の実施形態は、ＰＣＢ上に配置される必要がある複数の電子部品を、各組がこれら電子部品のうちの１つ以上を含み得るｎ個の組に分割し得る。特定の実施形態は、ＰＣＢ上のｎ個の位置にｎ本の境界線を作成し、該ｎ本の境界線上に上記ｎ組の部品を配置し得る。ＰＣＢ上にｎ本の境界線ひいてはｎ組の部品を配置することには様々な手法が存在する。特定の実施形態において、ｎ本の境界線のための当初のｎ個の位置がランダムに選定され得る。ｎ本の境界線は、ｎ組の電子部品に対するＰＣＢのレイアウトを形成する。特定の実施形態は、上述のように、分割ツリー、又はポリッシュ・エクスプレッション若しくはリバース・ポリッシュ・エクスプレッションを用いて、ｎ本の境界線とｎ組の電子部品とを表現し得る。
【００２３】
そして、特定の実施形態は、レイアウトに関する一組の設計、性能若しくは製造上の要求又は制約が満たされるまで、１つ以上の境界線の位置を繰り返し反復的に調整し得る。各境界線上に一組の電子部品が配置されるので、境界線がＰＣＢ上で１つの位置から別の位置へと移動されるとき、対応する電子部品セットも第１の位置から第２の位置へと移動される。
【００２４】
特定の実施形態において、境界線の位置ひいては部品セットの位置を調整する反復処理は、シミュレーテッドアニーリング（Simulated  Annealing；ＳＡ）に基づいて実行され得る。ＳＡは、所与の機能の全体最適に対する良好な近似を広い検索空間内で検索する全体最適問題のための汎用的な確率論的メタヒューリスティックである。
【００２５】
この反復処理にＳＡを適用し、特定の実施形態は、ステップ９０４に示すように、反復を開始するに先立って、スケジューリング及びステータスを初期化し得る。以下は、初期化ステップの擬似コードの一例を示している。
（外１）
0006051623.tif 000002
この例において、“Ｔ＿ｉ”、“Ｔ＿ｆ”、及び“Ｔ＿ｓｔｅｐ”は、反復処理を制御する３つの変数である。処理が開始するとき、現在温度は“Ｔ＿ｉ”である。各反復において、現在温度が“Ｔ＿ｓｔｅｐ”だけ低下される。処理は、現在温度が“Ｔ＿ｆ”に達すると終了する。各反復において、ＰＣＢのレイアウトは、ｎ本の境界線のうちの１つ以上がＰＣＢ上の他の位置に移動するにつれて変化し得る。各特定の反復におけるＰＣＢの現在レイアウトが“Ｐ＿ｃｕｒｒｅｎｔ”によって表される。ＰＣＢの最良のレイアウトが“Ｐ＿ｂｅｓｔ”によって表され、ＰＣＢの最良のレイアウトのコストがＣ＿ｂｅｓｔによって表される。
【００２６】
変数を初期化した後、特定の実施形態は反復処理を開始し得る。反復ごとにステップ９０６−９１４が繰り返され得る。
【００２７】
特定の反復において、特定の実施形態は、ステップ９０６に示すように、フロアプラン構造を生成し得る。フロアプランは、境界線と、これら境界線がＰＣＢ上で位置する場所とによって定められる。故に、（例えば、特定の反復において）一部の境界線が移動されるとき、フロアプランは変化する。フロアプランは実際にＰＣＢのレイアウトを指し示す。ＰＣＢの現在のフロアプラン、すなわち、現在レイアウトは“Ｐ＿ｃｕｒｒｅｎｔ”によって表される。以下は、フロアプラン構造生成ステップの擬似コードの一例を示している。
（外２）
0006051623.tif 000003
この例において、“Ｐ＿ｃｕｒｒｅｎｔ”によって表される分割ツリーのリーフノードはスタック“Ｓ１”に含められ、“Ｐ＿ｃｕｒｒｅｎｔ”によって表される分割ツリーの非リーフノードはスタック“Ｓ２”に含められる。
【００２８】
特定の実施形態は、ステップ９０８に示すように、電子部品を割当て得る。以下は、部品割当てステップの擬似コードの一例を示している。
（外３）
0006051623.tif 000004
この例において、変数“ＣｏｍｐＧｒｏｕｐＴａｂｌｅ”は、ｎ組の電子部品（例えば、各組が１つのグループ）を格納するために使用される。
【００２９】
特定の実施形態は、ステップ９１０に示すように、現在レイアウトのコストを計算し得る。以下は、コスト計算ステップの擬似コードの一例を示している。
（外４）
0006051623.tif 000005
この例において、コスト変数“Ｃ＿ｗ”、“Ｃ＿ｖ”及び“Ｃ＿ｃ”は、以前にステップ９０２にて受信された入力データに含まれ得る、ＰＣＢレイアウトに置かれる設計、性能若しくは製造上の要求又は制約に関係する。例えば、“Ｃ＿ｗ”は、例えばワイヤ長整合及び差分ワイヤ長（例えば、２つの異なるワイヤの長さ）などの制約に関係してもよく、“Ｃ＿ｖ”はルーティング可能要件に関係してもよい。総コストは個々のコスト種類の和である。
【００３０】
特定の実施形態は、ステップ９１２に示すように、現在レイアウトを評価し得る。以下は、評価ステップの擬似コードの一例を示している。
（外５）
0006051623.tif 000006
この例において、“ｒａｎｄｏｍ（）”は、ランダム値を生成する関数である（思い出すに、“ｒａｎｄｏｍ（）”のシードは初期化ステップにて初期化されている）。記号“Ａ”は関数を表す。特定の実施形態において、“Ａ”は：
【数１】
0006051623.tif 000007
として定義される。
【００３１】
特定の実施形態は、ステップ９１４に示すように、スケジューリング及びステータスを更新し得る。以下は、更新ステップの擬似コードの一例を示している。
（外６）
0006051623.tif 000008
この例において、各反復において４つの処理のうちの１つを“Ｐ＿ｃｕｒｒｅｎｔ”に適用することによって、各処理にてＰＣＢのレイアウトが調整される。
【００３２】
以上の実装例において、ステップ９０６−９１４を含む反復処理は、当初温度“Ｔ＿ｉ”が、反復ごとに“Ｔ＿ｓｔｅｐ”ずつ徐々に低下されて、最終温度“Ｔ＿ｆ”に達するまで繰り返される。反復処理を完了した後に得られる“Ｐ＿ｂｅｓｔ”及び“Ｃ＿ｂｅｓｔ”によって表されるレイアウトが、結果的に得られたＰＣＢレイアウトである。
【００３３】
特定の実施形態は、１つ以上のコンピュータシステム上で実現され得る。例えば、図９に示したＰＣＢレイアウト処理は、一過性でないコンピュータ読み取り可能媒体に格納されるコンピュータソフトウェアとして実装され得る。図１０は、コンピュータシステム１０００の一例を示している。特定の実施形態において、１つ以上のコンピュータシステム１０００が、ここに記載あるいは図示した１つ以上の方法の１つ以上のステップを実行する。特定の実施形態において、１つ以上のコンピュータシステム１０００が、ここに記載あるいは図示した機能を提供する。特定の実施形態において、１つ以上のコンピュータシステム１０００上で起動されるソフトウェアが、ここに記載あるいは図示した１つ以上の方法の１つ以上のステップを実行し、あるいは、ここに記載あるいは図示した機能を提供する。特定の実施形態は、１つ以上のコンピュータシステム１０００の１つ以上の部分を含む。
【００３４】
この開示は、如何なる好適な数のコンピュータシステム１０００をも意図している。この開示は、如何なる物理形態を採るコンピュータシステム１０００をも意図している。非限定的な一例として、コンピュータシステム１０００は、組込型コンピュータシステム、システム・オン・チップ（ＳＯＣ）、シングルボード・コンピュータシステム（ＳＢＣ）（例えば、コンピュータ・オン・モジュール（ＣＯＭ）若しくはシステム・オン・モジュール（ＳＯＭ）など）、デスクトップ型コンピュータシステム、ラップトップ型又はノート型のコンピュータシステム、対話式キオスク端末、メインフレーム、メッシュ状コンピュータシステム、携帯電話、携帯情報端末（ＰＤＡ）、サーバ、又はこれらの２つ以上の組み合わせとし得る。必要に応じて、コンピュータシステム１０００は、単一あるいは分散型の；複数の位置にまたがる；複数の機械にまたがる；あるいはクラウド（１つ以上のネットワーク内に１つ以上のクラウド要素を含み得る）内の；１つ以上のコンピュータシステム１０００を含んでいてもよい。必要に応じて、１つ以上のコンピュータシステム１０００は、ここに記載あるいは図示した１つ以上の方法の１つ以上のステップを、空間的あるいは時間的な実質的な制約なく実行し得る。非限定的な一例として、１つ以上のコンピュータシステム１０００は、ここに記載あるいは図示した１つ以上の方法の１つ以上のステップを、リアルタイムあるいはバッチモードで実行し得る。必要に応じて、１つ以上のコンピュータシステム１０００は、相異なる時点で、あるいは相異なる位置で、ここに記載あるいは図示した１つ以上の方法の１つ以上のステップを実行してもよい。
【００３５】
特定の実施形態において、コンピュータシステム１０００は、プロセッサ１００２、メモリ１００４、ストレージ１００６、入力／出力（Ｉ／Ｏ）インタフェース１００８、通信インタフェース１０１０、及びバス１０１２を含んでいる。この開示は、特定の構成にされた特定数の特定の構成要素を有する特定のコンピュータシステムを図示して説明しているが、この開示は、如何なる好適配置にされた如何なる好適数の如何なる好適構成要素を有する如何なる好適なコンピュータシステムをも意図している。
【００３６】
特定の実施形態において、プロセッサ１００２は、例えばコンピュータプログラムを構築する命令などの命令を実行するハードウェアを含む。非限定的な一例として、命令を実行するために、プロセッサ１００２は、内部レジスタ、内部キャッシュ、メモリ１００４、又はストレージ１００６から命令を取り出し（すなわち、フェッチし）；それを復号化して実行し；その後、１つ以上の結果を内部レジスタ、内部キャッシュ、メモリ１００４、又はストレージ１００６に書き込み得る。特定の実施形態において、プロセッサ１００２は、データ、命令又はアドレス用の１つ以上の内部キャッシュを含み得る。この開示は、プロセッサ１００２が必要に応じて、如何なる好適数の如何なる好適な内部キャッシュを含むことも意図している。非限定的な一例として、プロセッサ１００２は、１つ以上の命令キャッシュと、１つ以上のデータキャッシュと、１つ以上のトランスレーション・ルックアサイド・バッファ（ＴＬＢ）とを含み得る。命令キャッシュ内の命令は、メモリ１００４又はストレージ１００６内の命令の複製としてもよく、命令キャッシュは、プロセッサ１００２によるこれら命令の取り出しを高速化し得る。データキャッシュ内のデータは、メモリ１００４又はストレージ１００６内の、プロセッサ１００２にて実行されている命令が処理すべきデータの複製；プロセッサ１００２にて実行される後続の命令によるアクセスのための、あるいはメモリ１００４又はストレージ１００６に書き込むための、プロセッサ１００２にて実行された以前の命令の結果；又はその他の好適データとし得る。データキャッシュは、プロセッサ１００２による読み出し処理又は書き込み処理を高速化し得る。ＴＬＢは、プロセッサ１００２のために仮想アドレス変換を高速化し得る。特定の実施形態において、プロセッサ１００２は、データ、命令又はアドレス用の１つ以上の内部レジスタを含み得る。この開示は、プロセッサ１００２が適宜、如何なる好適数の如何なる好適な内部レジスタを含むことをも意図している。必要に応じて、プロセッサ１００２は、１つ以上の演算論理ユニット（ＡＬＵ）を含んでいてもよく；マルチコアプロセッサであってもよく；あるいは１つ以上のプロセッサ１００２を含んでいてもよい。この開示は特定のプロセッサを図示して説明しているが、この開示は如何なる好適なプロセッサをも意図している。
【００３７】
特定の実施形態において、メモリ１００４は、プロセッサ１００２が実行する命令、又はプロセッサ１００２が処理するデータを格納するメインメモリを含む。非限定的な一例として、コンピュータシステム１０００はストレージ１００６又は別のソース（例えば、別のコンピュータシステム１０００など）からメモリ１００４に命令をロードし得る。その後、プロセッサ１００２は、メモリ１００４から内部レジスタ又は内部キャッシュに命令をロードし得る。命令を実行するため、プロセッサ１００２は、内部レジスタ又は内部キャッシュから命令を取り出し、取り出した命令を復号化する。命令の実行中又は実行後、プロセッサ１００２は、１つ以上の結果（中間結果又は最終結果とし得る）を内部レジスタ又は内部キャッシュに書き込み得る。そして、プロセッサ１００２は、それらの結果のうちの１つ以上をメモリ１００４に書き込み得る。特定の実施形態において、プロセッサ１００２は、１つ以上の内部レジスタ若しくは内部キャッシュ又はメモリ１００４内の命令のみを実行してもよく（ストレージ１００６又はその他の場所の命令を実行するのとは異なる）、また、１つ以上の内部レジスタ若しくは内部キャッシュ又はメモリ１００４内のデータのみを処理してもよい（ストレージ１００６又はその他の場所のデータを処理するのとは異なる）。１つ以上のメモリバス（各々がアドレスバス及びデータバスを含み得る）が、プロセッサ１００２をメモリ１００４に結合してもよい。バス１０１２は、後述のように、１つ以上のメモリバスを含み得る。特定の実施形態において、１つ以上のメモリ管理装置（ＭＭＵ）が、プロセッサ１００２とメモリ１００４との間に存在し、プロセッサ１００２により要求されるメモリ１００４へのアクセスを容易にし得る。特定の実施形態において、メモリ１００４は、ランダムアクセスメモリ（ＲＡＭ）を含む。このＲＡＭは、適当であれば、揮発性メモリであってもよい。必要に応じて、このＲＡＭはダイナミックＲＡＭ（ＤＲＡＭ）又はスタティックＲＡＭ（ＳＲＡＭ）にされ得る。また、必要に応じて、このＲＡＭは、シングルポート又はマルチポートのＲＡＭにされ得る。この開示は、如何なる好適なＲＡＭをも意図している。メモリ１００４は、必要に応じて、１つ以上のメモリ１００４を含んでいてもよい。この開示は特定のメモリを図示して説明しているが、この開示は如何なる好適なメモリをも意図している。
【００３８】
特定の実施形態において、ストレージ１００６は、データ又は命令用の大容量記憶装置を含む。非限定的な一例として、ストレージ１００６は、ＨＤＤ、フロッピー（登録商標）ディスクドライブ、フラッシュメモリ、光ディスク、磁気光ディスク、磁気テープ、若しくはユニバーサル・シリアル・バス（ＵＳＢ）ドライブ、又はこれらの２つ以上の組み合わせを含み得る。ストレージ１００６は、必要に応じて、リムーバブル（取り外し可能）あるいは非リムーバブル（すなわち、固定）のメディアを含み得る。ストレージ１００６は、必要に応じて、コンピュータシステム１０００の内部にあってもよいし、外部にあってもよい。特定の実施形態において、ストレージ１００６は、不揮発性のソリッドステートメモリである。特定の実施形態において、ストレージ１００６は、読み出し専用メモリ（ＲＯＭ）を含む。必要に応じて、このＲＯＭは、マスクプログラムされたＲＯＭ、プログラマブルＲＯＭ（ＰＲＯＭ）、消去可能ＰＲＯＭ（ＥＰＲＯＭ）、電気的消去可能ＰＲＯＭ（ＥＥＰＲＯＭ）、電気的消去再書込可能ＲＯＭ（ＥＡＲＯＭ）、若しくはフラッシュメモリ、又はこれらの２つ以上の組み合わせとし得る。この開示は、如何なる好適な物理形態を有する大容量記憶装置１００６をも意図している。ストレージ１００６は、必要に応じて、プロセッサ１００２とストレージ１００６との間での通信を容易にする１つ以上のストレージ制御装置を含み得る。この開示は特定のストレージを図示して説明しているが、この開示は如何なる好適なストレージをも意図している。
【００３９】
特定の実施形態において、Ｉ／Ｏインタフェース１００８は、コンピュータシステム１０００と１つ以上のＩ／Ｏ装置との間での通信のための１つ以上のインタフェースを提供するハードウェア、ソフトウェア、又はこれら双方を含む。コンピュータシステム１０００は、必要に応じて、これらＩ／Ｏ装置のうちの１つ以上を含んでいてもよい。これらＩ／Ｏ装置のうちの１つ以上は、個人とコンピュータシステム１０００との間での通信を可能にし得る。非限定的な一例として、Ｉ／Ｏ装置は、キーボード、キーパッド、マイク、モニタ、マウス、プリンタ、スキャナ、スピーカ、スチルカメラ、スタイラスペン、タブレット、タッチスクリーン、トラックボール、ビデオカメラ、その他の好適なＩ／Ｏ装置、又はこれらの２つ以上の組み合わせを含み得る。Ｉ／Ｏ装置は、１つ以上のセンサを含んでいてもよい。この開示は、如何なる好適なＩ／Ｏ装置、及びそれ用の如何なる好適なＩ／Ｏインタフェース１００８をも意図している。必要に応じて、Ｉ／Ｏインタフェース１００８は、プロセッサ１００２がこれらのＩ／Ｏ装置のうちの１つ以上を駆動することを可能にする１つ以上の装置又はソフトウェアドライバを含んでいてもよい。Ｉ／Ｏインタフェース１００８は、必要に応じて、１つ以上のインタフェース１００８を含んでいてもよい。この開示は特定のＩ／Ｏインタフェースを図示して説明しているが、この開示は如何なる好適なＩ／Ｏインタフェースをも意図している。
【００４０】
特定の実施形態において、通信インタフェース１０１０は、コンピュータシステム１０００と、１つ以上のその他のコンピュータシステム１０００若しくは１つ以上のネットワークとの間での通信（例えば、パケットベースの通信など）のための１つ以上のインタフェースを提供するハードウェア、ソフトウェア、又はこれら双方を含む。非限定的な一例として、通信インタフェース１０１０は、イーサネット（登録商標）若しくはその他のワイヤベースのネットワークと通信するためのネットワークインタフェースコントローラ（ＮＩＣ）若しくはネットワークアダプタ、又は例えばＷｉ−Ｆｉネットワークなどの無線ネットワークと通信するための無線ＮＩＣ（ＷＮＩＣ）若しくは無線アダプタを含み得る。この開示は、如何なる好適なネットワーク及びそれ用の如何なる好適な通信インタフェース１０１０をも意図している。非限定的な一例として、コンピュータシステム１０００は、アドホックネットワーク、パーソナルエリアネットワーク（ＰＡＮ）、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、メトロポリタンエリアネットワーク（ＭＡＮ）、若しくはインターネットの１つ以上の部分、又はこれらの２つ以上の組み合わせと通信し得る。これらのネットワークのうちの１つ以上の１つ以上の部分は、有線であってもよいし、無線であってもよい。一例として、コンピュータシステム１０００は、無線ＰＡＮ（ＷＰＡＮ）（例えば、ブルートゥース（登録商標）ＷＰＡＮなど）、Ｗｉ−Ｆｉネットワーク、Ｗｉ−ＭＡＸネットワーク、携帯電話ネットワーク（例えば、グローバル・システム・フォー・モバイル・コミュニケーションズ（ＧＳＭ(登録商標)）ネットワークなど）、若しくはその他の好適な無線ネットワーク、又はこれらの２つ以上の組み合わせと通信し得る。コンピュータシステム１０００は、必要に応じて、これらのネットワークの何れかのための如何なる好適な通信インタフェース１０１０を含んでいてもよい。この開示は特定の通信インタフェースを図示して説明しているが、この開示は如何なる好適な通信インタフェースをも意図している。
【００４１】
特定の実施形態において、バス１０１２は、コンピュータシステム１０００の構成要素を相互に結合するための、ハードウェア、ソフトウェア、又はこれら双方を含む。非限定的な一例として、バス１０１２は、アクセラレーテッド・グラフィクス・ポート（ＡＧＰ）若しくはその他のグラフィック専用バス、ＥＩＳＡ（Extended  Industry  Standard  Architecture）バス、フロントサイドバス（ＦＳＢ）、ハイパートランスポート（ＨＴ）インターコネクト、業界標準アーキテクチャ（ＩＳＡ）バス、インフィニバンド・インターコネクト、ＬＰＣ（low-pin-count）バス、メモリバス、マイクロ・チャネル・アーキテクチャ（ＭＣＡ）バス、コンピュータ用拡張バスアーキテクチャ（ＰＣＩ）バス、ＰＣＩエクスプレス（ＰＣＩ−Ｘ）バス、シリアルＡＴＡ（ＳＡＴＡ）バス、ＶＬＢ（Video  Electronics  Standards  Association  local）バス、若しくはその他の好適なバス、又はこれらの２つ以上の組み合わせを含み得る。バス１０１２は、必要に応じて、１つ以上のバス１０１２を含んでいてもよい。この開示は特定のバスを図示して説明しているが、この開示は如何なる好適なバス又はインターコネクトをも意図している。
【００４２】
ここで、コンピュータ読み取り可能記憶媒体への言及は、１つ以上の一過性でない有形のコンピュータ読み取り可能記憶媒体保有構造をも包含するものである。非限定的な一例として、コンピュータ読み取り可能記憶媒体は、必要に応じて、半導体ベースあるいはその他の集積回路（ＩＣ）（例えば、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）、又は特定用途向けＩＣ（ＡＳＩＣ）など）、ハードディスク、ＨＤＤ、ハイブリッド式ハードドライブ（ＨＨＤ）、光ディスク、光ディスクドライブ（ＯＤＤ）、磁気光ディスク、磁気光ドライブ、フロッピー（登録商標）ディスク、フロッピーディスクドライブ（ＦＤＤ）、磁気テープ、ホログラフィック記憶媒体、ソリッドステートドライブ（ＳＳＤ）、ＲＡＭドライブ、セキュアデジタル（ＳＤ）カード、セキュアデジタルドライブ、若しくはその他の好適なコンピュータ読み取り可能記憶媒体、又はこれらの２つ以上の組み合わせを含み得る。コンピュータ読み取り可能な一過性でない記憶媒体は、必要に応じて、揮発性、不揮発性、又は揮発性と不揮発性との組み合わせとし得る。
【００４３】
この開示は、何らかの好適なストレージを実現する１つ以上のコンピュータ読み取り可能記憶媒体を意図している。特定の実施形態において、コンピュータ読み取り可能記憶媒体は、必要に応じて、プロセッサ１００２の１つ以上の部分（例えば、１つ以上の内部レジスタ若しくはキャッシュなど）、メモリ１００４の１つ以上の部分、ストレージ１００６の１つ以上の部分、又はこれらの組み合わせを実現してもよい。特定の実施形態において、コンピュータ読み取り可能記憶媒体はＲＡＭ又はＲＯＭを実現する。特定の実施形態において、コンピュータ読み取り可能記憶媒体は揮発性あるいは永続的なメモリを実現する。特定の実施形態において、１つ以上のコンピュータ読み取り可能記憶媒体がソフトウェアを具現化する。ここで、ソフトウェアへの言及は適宜、１つ以上のアプリケーション、バイトコード、１つ以上のコンピュータプログラム、１つ以上の実行ファイル、１つ以上の命令、ロジック、機械語、１つ以上のスクリプト、又はソースコードを包含するものであり、この逆もまた然りである。特定の実施形態において、ソフトウェアは、１つ以上のアプリケーション・プログラミング・インタフェース（ＡＰＩ）を含む。この開示は、如何なる好適なプログラミング言語又は複数のプログラミング言語の組み合わせで書き込まれ、あるいはその他の方法で表現された、如何なる好適なソフトウェアをも意図している。特定の実施形態において、ソフトウェアはソースコード又はオブジェクトコードとして表現され得る。特定の実施形態において、ソフトウェアは、例えばＣ、Ｐｅｒｌ又はこれらの好適な拡張版など、より高級（高水準）なプログラミング言語で表現される。特定の実施形態において、ソフトウェアは、例えばアセンブリ言語（又は機械語）など、より低水準のプログラミング言語で表現される。特定の実施形態において、ソフトウェアはＪＡＶＡ（登録商標）で表現される。特定の実施形態において、ソフトウェアはハイパーテキスト・マークアップ言語（ＨＴＭＬ）、拡張マークアップ言語（ＸＭＬ）、又はその他の好適なマークアップ言語で表現される。
【００４４】
ここでは、“又は”は、その他のことが明示的或いは文脈的に指し示されない限り、両立的なものであって排他的なものではない。故に、“Ａ又はＢ”は、その他のことが明示的或いは文脈的に指し示されない限り、“Ａ、Ｂ、又は双方”を意味する。また、“及び”は、その他のことが明示的或いは文脈的に指し示されない限り、結合及びそれぞれの双方である。故に、ここでは、“Ａ及びＢ”は、その他のことが明示的或いは文脈的に指し示されない限り、“結合的あるいは個別的にＡ及びＢ”を意味する。
【００４５】
この開示は、ここで例示した実施形態への、当業者に理解されるであろう全ての変更、代用、変形、改変及び改良を包含するものである。同様に、添付の請求項は適宜、ここで例示した実施形態への当業者に理解されるであろう全ての変更、代用、変形、改変及び改良を包含するものである。また、特定の機能を実行するように適応され、構成され、可能にされ、設定され、有効にされ、動作可能にされ、あるいは動作する装置若しくはシステム又はそれらの構成要素への、請求項中での参照は、装置、システム又は構成要素がそのように適応、構成、可能化、設定、有効化、動作可能化あるいは動作される限り、それ又はその特定機能が活性化され、オンにされ、あるいは解除されようとなかろうと、その装置、システム又は構成要素を包含するものである。
【００４６】
以上の説明に関し、更に以下の付記を開示する。
（付記１）  １つ以上の計算装置によって実行される方法であって、
印刷回路基板（ＰＣＢ）のレイアウトを作成するステップであり、
前記ＰＣＢ上のｎ個の位置それぞれにｎ本の境界線を作成し、且つ
前記ｎ本の境界線上それぞれにｎ組の電子部品を配置する
ことを有するステップと、
前記ＰＣＢに対する一組のレイアウト要求が満足されるまで、前記ＰＣＢの前記レイアウトを反復的に調整して評価するステップと、
を有する方法。
（付記２）  前記ＰＣＢの前記レイアウトを、分割ツリーを用いて表現するステップ、を更に有する付記１に記載の方法。
（付記３）  前記ＰＣＢの前記レイアウトを、ポリッシュ・エクスプレッション又はリバース・ポリッシュ・エクスプレッションを用いて表現するステップ、を更に有する付記１に記載の方法。
（付記４）  前記ＰＣＢの前記レイアウトを反復的に調整して評価するステップは、シミュレーテッドアニーリングに基づき、それにより、この反復処理は、温度によって制御され、
前記温度を初期値に設定し、
各反復にて前記温度をステップ値だけ低下させ、且つ
前記温度が最終値に達したときに該反復処理を終了させる
ことを有する、付記１に記載の方法。
（付記５）  前記ＰＣＢの前記レイアウトを反復的に調整するために、各反復は、
ランダムに選択された２つの境界線を交換すること、
ランダムに選択された２つの組の電子部品を交換すること、
ランダムに選択された１つの部品を、ランダムに選択された第１組の電子部品から、ランダムに選択された第２組の電子部品に移動させること、及び
ランダムに選択された境界線のランダム値に対する比を０と１との間で変化させること、
のうちの１つをランダムに実行することを有する、付記１に記載の方法。
（付記６）  前記ＰＣＢの前記レイアウトを反復的に評価するために、各反復は、
前記ＰＣＢの前記レイアウトのコストを、前記一組のレイアウト要求に基づいて計算し、
ランダム値を生成し、
前記ＰＣＢの現在最良のレイアウト、前記ＰＣＢの該現在最良のレイアウトのコスト、及び反復処理を制御する現在温度に基づいて、第２の値を計算し、且つ
前記ランダム値が前記第２の値より小さい場合に、
前記ＰＣＢの前記現在最良のレイアウトを、前記ＰＣＢの前記レイアウトとして設定し、且つ
前記ＰＣＢの前記現在最良のレイアウトの前記コストを、前記ＰＣＢの前記レイアウトのコストとして設定する、
ことを有する、付記１に記載の方法。
（付記７）  １つ以上のプロセッサによって実行可能な命令を格納したメモリと、
前記メモリに結合されて前記命令を実行するよう動作可能な前記１つ以上のプロセッサであり、前記命令を実行するとき、
印刷回路基板（ＰＣＢ）のレイアウトを作成するステップであり、
前記ＰＣＢ上のｎ個の位置それぞれにｎ本の境界線を作成し、且つ
前記ｎ本の境界線上それぞれにｎ組の電子部品を配置する
ことを有するステップと、
前記ＰＣＢに対する一組のレイアウト要求が満足されるまで、前記ＰＣＢの前記レイアウトを反復的に調整して評価するステップと、
を実行するよう動作する１つ以上のプロセッサと、
を有するシステム。
（付記８）  前記１つ以上のプロセッサは、前記命令を実行するとき更に、前記ＰＣＢの前記レイアウトを、分割ツリーを用いて表現するよう動作する、付記７に記載のシステム。
（付記９）  前記１つ以上のプロセッサは、前記命令を実行するとき更に、前記ＰＣＢの前記レイアウトを、ポリッシュ・エクスプレッション又はリバース・ポリッシュ・エクスプレッションを用いて表現するよう動作する、付記７に記載のシステム。
（付記１０）  前記ＰＣＢの前記レイアウトを反復的に調整して評価するステップは、シミュレーテッドアニーリングに基づき、それにより、この反復処理は、温度によって制御され、
前記温度を初期値に設定し、
各反復にて前記温度をステップ値だけ低下させ、且つ
前記温度が最終値に達したときに該反復処理を終了させる
ことを有する、付記７に記載のシステム。
（付記１１）  前記ＰＣＢの前記レイアウトを反復的に調整するために、各反復は、
ランダムに選択された２つの境界線を交換すること、
ランダムに選択された２つの組の電子部品を交換すること、
ランダムに選択された１つの部品を、ランダムに選択された第１組の電子部品から、ランダムに選択された第２組の電子部品に移動させること、及び
ランダムに選択された境界線のランダム値に対する比を０と１との間で変化させること、
のうちの１つをランダムに実行することを有する、付記７に記載のシステム。
（付記１２）  前記ＰＣＢの前記レイアウトを反復的に評価するために、各反復は、
前記ＰＣＢの前記レイアウトのコストを、前記一組のレイアウト要求に基づいて計算し、
ランダム値を生成し、
前記ＰＣＢの現在最良のレイアウト、前記ＰＣＢの該現在最良のレイアウトのコスト、及び反復処理を制御する現在温度に基づいて、第２の値を計算し、且つ
前記ランダム値が前記第２の値より小さい場合に、
前記ＰＣＢの前記現在最良のレイアウトを、前記ＰＣＢの前記レイアウトとして設定し、且つ
前記ＰＣＢの前記現在最良のレイアウトの前記コストを、前記ＰＣＢの前記レイアウトのコストとして設定する、
ことを有する、付記７に記載のシステム。
（付記１３）  ソフトウェアを格納したコンピュータ読み取り可能記憶媒体であって、前記ソフトウェアは、１つ以上のコンピュータシステムによって実行されるときに、該１つ以上のコンピュータシステムに、
印刷回路基板（ＰＣＢ）のレイアウトを作成するステップであり、
前記ＰＣＢ上のｎ個の位置それぞれにｎ本の境界線を作成し、且つ
前記ｎ本の境界線上それぞれにｎ組の電子部品を配置する
ことを有するステップと、
前記ＰＣＢに対する一組のレイアウト要求が満足されるまで、前記ＰＣＢの前記レイアウトを反復的に調整して評価するステップと、
を実行させるよう作用する、コンピュータ読み取り可能記憶媒体。
（付記１４）  前記ソフトウェアは、前記１つ以上のコンピュータシステムによって実行されるときに、前記１つ以上のコンピュータシステムに更に、前記ＰＣＢの前記レイアウトを、分割ツリーを用いて表現させるよう作用する、付記１３に記載のコンピュータ読み取り可能記憶媒体。
（付記１５）  前記ソフトウェアは、前記１つ以上のコンピュータシステムによって実行されるときに、前記１つ以上のコンピュータシステムに更に、前記ＰＣＢの前記レイアウトを、ポリッシュ・エクスプレッション又はリバース・ポリッシュ・エクスプレッションを用いて表現させるよう作用する、付記１３に記載のコンピュータ読み取り可能記憶媒体。
（付記１６）  前記ＰＣＢの前記レイアウトを反復的に調整して評価するステップは、シミュレーテッドアニーリングに基づき、それにより、この反復処理は、温度によって制御され、
前記温度を初期値に設定し、
各反復にて前記温度をステップ値だけ低下させ、且つ
前記温度が最終値に達したときに該反復処理を終了させる
ことを有する、付記１３に記載のコンピュータ読み取り可能記憶媒体。
（付記１７）  前記ＰＣＢの前記レイアウトを反復的に調整するために、各反復は、
ランダムに選択された２つの境界線を交換すること、
ランダムに選択された２つの組の電子部品を交換すること、
ランダムに選択された１つの部品を、ランダムに選択された第１組の電子部品から、ランダムに選択された第２組の電子部品に移動させること、及び
ランダムに選択された境界線のランダム値に対する比を０と１との間で変化させること、
のうちの１つをランダムに実行することを有する、付記１３に記載のコンピュータ読み取り可能記憶媒体。
（付記１８）  前記ＰＣＢの前記レイアウトを反復的に評価するために、各反復は、
前記ＰＣＢの前記レイアウトのコストを、前記一組のレイアウト要求に基づいて計算し、
ランダム値を生成し、
前記ＰＣＢの現在最良のレイアウト、前記ＰＣＢの該現在最良のレイアウトのコスト、及び反復処理を制御する現在温度に基づいて、第２の値を計算し、且つ
前記ランダム値が前記第２の値より小さい場合に、
前記ＰＣＢの前記現在最良のレイアウトを、前記ＰＣＢの前記レイアウトとして設定し、且つ
前記ＰＣＢの前記現在最良のレイアウトの前記コストを、前記ＰＣＢの前記レイアウトのコストとして設定する、
ことを有する、付記１３に記載のコンピュータ読み取り可能記憶媒体。
（付記１９）  印刷回路基板（ＰＣＢ）のレイアウトを作成する手段であり、
前記ＰＣＢ上のｎ個の位置それぞれにｎ本の境界線を作成する手段、及び
前記ｎ本の境界線上それぞれにｎ組の電子部品を配置する手段
を有する手段と、
前記ＰＣＢに対する一組のレイアウト要求が満足されるまで、前記ＰＣＢの前記レイアウトを反復的に調整して評価する手段と、
を有するシステム。
【符号の説明】
【００４７】
１００    ＰＣＢ
１１０    電子部品
１３０    境界線
４１０    領域
４２０    境界線
５２０    非リーフノード
７００    ＰＣＢ
７１０    電子部品セット
７３０    境界線
１０００  コンピュータシステム
１００２  プロセッサ
１００４  メモリ
１００６  ストレージ
１００８  Ｉ／Ｏインタフェース
１０１０  通信インタフェース
１０１２  バス
【図１Ａ】
0006051623.tif 000009
【図１Ｂ】
0006051623.tif 000010
【図２】
0006051623.tif 000011
【図３Ａ】
0006051623.tif 000012
【図３Ｂ】
0006051623.tif 000013
【図３Ｃ】
0006051623.tif 000014
【図４】
0006051623.tif 000015
【図５】
0006051623.tif 000016
【図６】
0006051623.tif 000017
【図７】
0006051623.tif 000018
【図８】
0006051623.tif 000019
【図９】
0006051623.tif 000020
【図１０】
0006051623.tif 000021