特許第6051623号(P6051623)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 富士通株式会社の特許一覧

<>
  • 特許6051623-印刷回路基板用部品配置ツール 図000009
  • 特許6051623-印刷回路基板用部品配置ツール 図000010
  • 特許6051623-印刷回路基板用部品配置ツール 図000011
  • 特許6051623-印刷回路基板用部品配置ツール 図000012
  • 特許6051623-印刷回路基板用部品配置ツール 図000013
  • 特許6051623-印刷回路基板用部品配置ツール 図000014
  • 特許6051623-印刷回路基板用部品配置ツール 図000015
  • 特許6051623-印刷回路基板用部品配置ツール 図000016
  • 特許6051623-印刷回路基板用部品配置ツール 図000017
  • 特許6051623-印刷回路基板用部品配置ツール 図000018
  • 特許6051623-印刷回路基板用部品配置ツール 図000019
  • 特許6051623-印刷回路基板用部品配置ツール 図000020
  • 特許6051623-印刷回路基板用部品配置ツール 図000021
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6051623
(24)【登録日】2016年12月9日
(45)【発行日】2016年12月27日
(54)【発明の名称】印刷回路基板用部品配置ツール
(51)【国際特許分類】
   G06F 17/50 20060101AFI20161219BHJP
【FI】
   G06F17/50 658A
   G06F17/50 658L
【請求項の数】8
【外国語出願】
【全頁数】23
(21)【出願番号】特願2012-150241(P2012-150241)
(22)【出願日】2012年7月4日
(65)【公開番号】特開2013-16179(P2013-16179A)
(43)【公開日】2013年1月24日
【審査請求日】2015年4月6日
(31)【優先権主張番号】13/176,310
(32)【優先日】2011年7月5日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100146776
【弁理士】
【氏名又は名称】山口 昭則
(72)【発明者】
【氏名】澁谷 利行
【審査官】 松浦 功
(56)【参考文献】
【文献】 特開平03−296173(JP,A)
【文献】 特開2007−193832(JP,A)
【文献】 米国特許第06067409(US,A)
【文献】 米国特許出願公開第2005/0028122(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 17/50
(57)【特許請求の範囲】
【請求項1】
1つ以上の計算装置によって実行される方法であって、
印刷回路基板(PCB)のレイアウトを作成するステップであり、
前記PCB上のn個の位置にn本の境界線を作成し、且つ
前記n本の境界線の各々上に一組の電子部品を配置する
ことを有するステップと、
前記PCBに対する一組のレイアウト要求が満足されるまで、前記PCBの前記レイアウトを反復的に調整して評価するステップと、
を有し、
前記PCBの前記レイアウトを反復的に調整するために、各反復は、
ランダムに選択された2つの境界線を交換すること、
ランダムに選択された2つの組の電子部品を交換すること、及び
ランダムに選択された1つの部品を、ランダムに選択された第1組の電子部品から、ランダムに選択された第2組の電子部品に移動させること、
のうちの1つをランダムに実行することを有する、
方法。
【請求項2】
前記PCBの前記レイアウトを、分割ツリーを用いて表現するステップ、を更に有する請求項1に記載の方法。
【請求項3】
前記PCBの前記レイアウトを、ポリッシュ・エクスプレッション又はリバース・ポリッシュ・エクスプレッションを用いて表現するステップ、を更に有する請求項1に記載の方法。
【請求項4】
前記PCBの前記レイアウトを反復的に調整して評価するステップは、シミュレーテッドアニーリングに基づき、それにより、この反復処理は、温度によって制御され、
前記温度を初期値に設定し、
各反復にて前記温度をステップ値だけ低下させ、且つ
前記温度が最終値に達したときに該反復処理を終了させる
ことを有する、請求項1に記載の方法。
【請求項5】
前記PCBの前記レイアウトを反復的に評価するために、各反復は、
前記PCBの前記レイアウトのコストを、前記一組のレイアウト要求に基づいて計算し、
ランダム値を生成し、
前記PCBの現在最良のレイアウト、前記PCBの該現在最良のレイアウトのコスト、及び反復処理を制御する現在温度に基づいて、第2の値を計算し、且つ
前記ランダム値が前記第2の値より小さい場合に、
前記PCBの前記現在最良のレイアウトを、前記PCBの前記レイアウトとして設定し、且つ
前記PCBの前記現在最良のレイアウトの前記コストを、前記PCBの前記レイアウトのコストとして設定する、
ことを有する、請求項1に記載の方法。
【請求項6】
1つ以上のプロセッサによって実行可能な命令を格納したメモリと、
前記メモリに結合されて前記命令を実行するよう動作可能な前記1つ以上のプロセッサであり、前記命令を実行するとき、
印刷回路基板(PCB)のレイアウトを作成するステップであり、
前記PCB上のn個の位置にn本の境界線を作成し、且つ
前記n本の境界線の各々上に一組の電子部品を配置する
ことを有するステップと、
前記PCBに対する一組のレイアウト要求が満足されるまで、前記PCBの前記レイアウトを反復的に調整して評価するステップと、
を実行するよう動作する1つ以上のプロセッサと、
を有し、
前記PCBの前記レイアウトを反復的に調整するために、各反復は、
ランダムに選択された2つの境界線を交換すること、
ランダムに選択された2つの組の電子部品を交換すること、及び
ランダムに選択された1つの部品を、ランダムに選択された第1組の電子部品から、ランダムに選択された第2組の電子部品に移動させること、
のうちの1つをランダムに実行することを有する、
システム。
【請求項7】
ソフトウェアを格納したコンピュータ読み取り可能記憶媒体であって、前記ソフトウェアは、1つ以上のコンピュータシステムによって実行されるときに、該1つ以上のコンピュータシステムに、
印刷回路基板(PCB)のレイアウトを作成するステップであり、
前記PCB上のn個の位置にn本の境界線を作成し、且つ
前記n本の境界線の各々上に一組の電子部品を配置する
ことを有するステップと、
前記PCBに対する一組のレイアウト要求が満足されるまで、前記PCBの前記レイアウトを反復的に調整して評価するステップと、
を実行させるよう作用し
前記PCBの前記レイアウトを反復的に調整するために、各反復は、
ランダムに選択された2つの境界線を交換すること、
ランダムに選択された2つの組の電子部品を交換すること、及び
ランダムに選択された1つの部品を、ランダムに選択された第1組の電子部品から、ランダムに選択された第2組の電子部品に移動させること、
のうちの1つをランダムに実行することを有する、
コンピュータ読み取り可能記憶媒体。
【請求項8】
印刷回路基板(PCB)のレイアウトを作成する手段であり、
前記PCB上のn個の位置にn本の境界線を作成する手段、及び
前記n本の境界線の各々上に一組の電子部品を配置する手段
を有する手段と、
前記PCBに対する一組のレイアウト要求が満足されるまで、前記PCBの前記レイアウトを反復的に調整して評価する手段と、
を有し、
前記PCBの前記レイアウトを反復的に調整するために、各反復は、
ランダムに選択された2つの境界線を交換すること、
ランダムに選択された2つの組の電子部品を交換すること、及び
ランダムに選択された1つの部品を、ランダムに選択された第1組の電子部品から、ランダムに選択された第2組の電子部品に移動させること、
のうちの1つをランダムに実行することを有する、
システム。
【発明の詳細な説明】
【技術分野】
【0001】
この開示は、概して、印刷回路基板(PCB)レイアウトに関する。
【背景技術】
【0002】
電子部品を機械的に支持するため、及び、電子部品を、導電チャネル、トラック、ビア、又は非導電性の基板上にラミネートされた金属(例えば、銅)シートからエッチングされた信号配線を用いて電気的に接続するため、印刷回路基板すなわちPCBが使用されている。1つのPCB上に複数の電子部品が配置され得る。電子部品の部品パッド、配線、ビア、及びその他の基板機構をPCB上に配置し、PCBを製造するのに必要なフロアプラン(間取り図)を作成する処理は、一般的に、PCBレイアウトと呼ばれている。
【発明の概要】
【発明が解決しようとする課題】
【0003】
一実施形態において、PCBレイアウト作成方法が提供される。
【課題を解決するための手段】
【0004】
一実施形態において、印刷回路基板(PCB)のレイアウトが、前記PCB上のn個の位置それぞれにn本の境界線を作成し、且つ前記n本の境界線上それぞれにn組の電子部品を配置することによって作成され、前記PCBに対する一組のレイアウト要求が満足されるまで、前記PCBの前記レイアウトが反復的に調整されて評価される。
【図面の簡単な説明】
【0005】
図1A】PCBの一例を示す上面図である。
図1B】PCBの一例を示す側面図である。
図2】境界線によって画成されるPCB上の個別の領域内に電子部品が配置されるPCBレイアウトの一例を示す図である。
図3A】PCB上の境界線の上に電子部品が配置されるPCBレイアウトの一例を示す図である。
図3B】PCB上の境界線の上に電子部品が配置されるPCBレイアウトの一例を示す図である。
図3C】PCB上の境界線の上に電子部品が配置されるPCBレイアウトの一例を示す図である。
図4】フロアプランの一例を示す図である。
図5】分割ツリーの一例を示す図である。
図6】二分木を表すポリッシュ・エクスプレッションの一例を示す図である。
図7】PCB上の境界線の上に電子部品が配置されるPCBレイアウトの一例を示す図である。
図8】分割ツリーの一例を示す図である。
図9】PCBレイアウトを自動作成する方法の一例を示す図である。
図10】コンピュータシステムの一例を示す図である。
【発明を実施するための形態】
【0006】
PCBレイアウト処理の一部は、複数の電子部品をPCB上に配置するためのフロアプラン(間取り図)を作成することを含む。しばしば、同一のPCB上に配置される様々な電子部品が、異なる大きさ、形状若しくは設計と、異なる性能要求若しくは制約とを有することがある。さらに、PCB全体としての設計、性能要求又は制約が存在することがある。このような要求又は制約の例には、以下に限られないが、(1)部品アライメント(例えば、基板上で特定の部品群を横方向、縦方向又は斜め方向に整列させる必要があり得る)、(2)部品間隔(例えば、部品同士の間に特定量の空間を必要とし得る)、(3)部品位置(例えば、特定の部品群を互いに隣り合わせて配置する必要があり得る)、(4)部品数(例えば、同一基板上に特定数の部品を配置する必要があり得る)、(5)熱気流(例えば、部品群を冷却するためにPCB全体を空気が効率的に流れるようにし得る)、(6)ワイヤ長の整合(例えば、特定のワイヤ群が同じ長さを有することが要求され得る)、(7)ルーティング可能性(例えば、全てのワイヤを完全にルーティングすべきである)、(8)部品実装可能性(例えば、PCB製造に関する十分なマージン)、及び(9)コスト最小化(例えば、材料、労力又は成功率に関して、PCBを製造するコストを最小化すること)が含まれる。
【0007】
図1Aは、多数の電子部品110が上に配置されたPCB100の一例の上面図を示している。電子部品110は、異なるサイズ及び形状を有していてもよく、PCB100の全体に分布され得る。電子部品110は、多数のワイヤ又ははんだバンプを介してPCB100に接続され得る。図1Bは、PCB100及び電子部品110の側面図を例示している。多数のワイヤ112が、電子部品110とPCB100との間の電気接続を構築し得る。
【0008】
伝統的に、PCBレイアウトは(例えば、レイアウト技師又は技術者によって)手作業で行われてきた。最近になり、PCBの複雑度が増すにつれて、レイアウト処理の一部を自動化する助けとなる様々なコンピュータ実行ツール(例えば、ソフトウェアアプリケーション)が存在するようになった。既存の一部のレイアウトツールは、レイアウトの品質を向上させるために様々な最適化手法を実装しているが、それらの最適化手法は様々な問題を有する。例えば、トップダウンレイアウト処理では、先ず、PCBが数個の大きめの領域に分割され、その後、複数の電子部品を個々の領域に配置することができるようになるまで、大きめの領域の各々が、繰り返し、より小さい領域へと分割される。図2は、PCBレイアウトの一例を示している。この例では、PCB100が最終的に多数の比較的小さい領域120に分割されている。各領域120の境界が境界線130によって示されている。好適な領域120内に配置される異なる電子部品110を収容するため、異なる領域120は異なる大きさ及び形状を有し得る。しかしながら、トップダウンレイアウト処理では、トップダウン的な後の最適化処理は、ほとんど局所的(ローカル)なもの(例えば、基板の特定の領域に関する)であり、全体的(グローバル)なもの(例えば、概してPCB全体に関する)ではない。柔軟性がほとんどなく、ワイヤの長さ及び制約、ルーティング、並びにリソースを、細かい粒度のグリッドで制御することは複雑且つ困難であることが多い。何故なら、初期の処理は、誤差を有し得る大雑把な部品位置情報を用いて最適化を行わなければならず、後の処理は、そのような初期の処理によって為された決定に従わなければならないためである。他の一例として、フロアプランニング・グリッド配置レイアウト処理では、フロアプランが修正される場合に前段階(例えば、先のフロアプラン)でのグリッド配置が無効なもの、すなわち、使用できないものとなるので、過度に多い繰り返しが存在する。一部のレイアウト処理は、小型且つ単純なPCBでは十分に機能し得るが、より大型且つ複雑なPCBでは問題を有し、その他のレイアウト処理は、様々な種類のレイアウト情報及び基板機構をサポートしていないことがある。
【0009】
特定の実施形態により、PCB上で電子部品が、境界線によって画成される領域の内部に配置されることに代えて、境界線上に配置されるPCBレイアウト処理が提供される。図3Aは、PCB100のレイアウトの一例を示している。PCB100を多数の領域に分割する多数の境界線130(例えば、横線又は縦線)が存在している。しかしながら、図2とは対照的に、電子部品110は様々な境界線130上に配置される。なお、1つ以上の電子部品110が、同一の横方向又は縦方向の境界線130上に配置され得る。
【0010】
特定のPCBと、そのPCB上に配置される特定の電子部品の組(セット)とが与えられる場合、該電子部品セットが配置され得る境界線を作り出すことには異なる複数のレイアウトが存在し得る。例えば、図3B及び3Cは、図3Aに示したレイアウトとは異なった、PCB100の境界線130の2つの代替的なレイアウトを例示している。
【0011】
特定の実施形態において、一組の境界線によって定められるPCBのレイアウト(例えば、図3A−3C)は、分割フロアプランを表すのに好適な二分木である分割ツリー(Slicing Tree)によって表され得る。分割ツリーを一般的に概説するため、図4に示すフロアプランの一例を考える。この例において、エリア400は、4本の縦方向の境界線420−1、420−2、420−3、420−4と2本の横方向の境界線420−5、420−6とを含む6本の境界線420によって、7個の領域410に分割されている。なお、横方向の境界線は領域を縦方向に分割し(例えば、その領域を上部と下部とに分割する)、縦方向の境界線は領域を横方向に分割する(例えば、その領域を左部と右部とに分割する)。或るエリア内で、一組の境界線によって画成される領域の数は、境界線の本数に1を足し合わせたものに等しい。故に、n本の境界線が存在する場合、該n本の境界線によって画成されるn+1個の領域が存在する。
【0012】
図5は、図4に示したフロアプランを表す分割ツリーの一例を示している。読み取り易さのために菱形形状のノードとして示した図5のリーフノードの各々が、図4内の1つの領域410に対応しており、読み取り易さのために円形のノードとして示した図5の非リーフノード520の各々が、図4内の1本の境界線420に対応している。故に、リーフノードの数は、非リーフノードの数+1に等しい。より具体的には、ノード520−1は縦境界線420−1に対応し、ノード520−2は縦境界線420−2に対応し、ノード520−3は縦境界線420−3に対応し、ノード520−4は縦境界線420−4に対応し、ノード520−5は横境界線420−5に対応し、ノード520−6は横境界線420−6に対応する。なお、1つの特定のフロアプランが、異なる複数のバリエーションの分割ツリーによって表され得る。
【0013】
特定の実施形態において、特定の境界線に対応する各々の非リーフノードに対し、その2つの子は、対応する境界線によって分割される2つの部分である。例えば、図4において、横方向の境界線420−6はエリア400を上部と下部とに分割している。上部は、境界線420−1乃至420−5によって画成される領域410−1乃至410−6を含んでいる。下部は領域410−7を含んでいる。図5において、ノード520−6は横方向の境界線420−6に対応している。その左側の子は、領域410−7に対応するリーフノード7を含んでおり、その右側の子は、境界線420−1乃至420−5によって画成される領域410−1乃至410−6に対応するリーフノード1乃至6及び非リーフノード520−1乃至520−5を含んでいる。他の一例として、図4において、縦方向の境界線420−4はエリア410−4及び410−5を互いに分割している。図5において、非リーフノード520−4は縦方向の境界線420−4に対応している。その左側の子は、領域410−4に対応するリーフノード4を含んでおり、その右側の子は、領域410−5に対応するリーフノード5を含んでいる。特定の実施形態において、如何なる分割フロアプランも、好適な分割ツリーによって同様に表され得る。
【0014】
特定の実施形態において、分割ツリーは、論理式、演算式又は代数式の形態であるポリッシュ・エクスプレッション(Polish Expression)又はリバース・ポリッシュ・エクスプレッションによって表されてもよい。ポリッシュ・エクスプレッションを用いる場合、各演算子がそのオペランドの左側に置かれ、リバース・ポリッシュ・エクスプレッションを用いる場合、各演算子がそのオペランドの右側に置かれる。図6は、二分木の一例を示している。ノードZが2つの子X及びYを有している。X及びYはリーフノードであってもよいし、なくてもよい。このような二分木をポリッシュ・エクスプレッション又はリバース・ポリッシュ・エクスプレッションを用いて表すために、特定の実施形態において、親ノード(すなわち、非リーフノード)を演算子と見なし、その2つの子をその演算子の2つのオペランドと見なす。故に、図6に示す二分木を表すリバース・ポリッシュ・エクスプレッションは、“Polish(X),Polish(Y),Z”である。なお、2つの子X及びYはリーフノードであってもよいし、リーフノードでなくてもよい。子がリーフノードである場合、そのポリッシュ・エクスプレッション又はリバース・ポリッシュ・エクスプレッションは、そのリーフノードの値である。子が非リーフノードである場合、その非リーフノードのポリッシュ・エクスプレッション又はリバース・ポリッシュ・エクスプレッションを取得するために同じロジックが適用され得る。
【0015】
同様に、図5に示した分割ツリーは、リバース・ポリッシュ・エクスプレッション“7,1,2,V,3,6,4,5,V,H,V,V,H”によって表され得る。読み取りやすさのため、このリバース・ポリッシュ・エクスプレッションを、角括弧(例えば、“[”及び“]”)と用いて、“[7,[[1,2,V],[3,[6,[4,5,V],H],V],V],H]”として複数のセグメント(部分)に分割すると一層明瞭になり得る。この式において、セグメント“[4,5,V]”はノード520−4及びその2つの子“4”及び“5”に対応し、“V”は演算子であり、“4”及び“5”は2つのオペランドである。セグメント“[6,[4,5,V],H]”は、ノード520−5及びその2つの子“6”及び“[4,5,V]”に対応し、“H”は演算子であり、“6”及び“[4,5,V]”は2つのオペランドである。セグメント“[3,[6,[4,5,V],H],V]”は、ノード520−3及びその2つの子“3”及び“[6,[4,5,V],H]”に対応し、最後の“V”が演算子である。セグメント“[1,2,V]”はノード520−1及びその2つの子“1”及び“2”に対応し、“V”は演算子であり、“1”及び“2”は2つのオペランドである。セグメント“[[1,2,V],[3,[6,[4,5,V],H],V],V]”は、ノード520−2及びその2つの子“[1,2,V]”及び“[3,[6,[4,5,V],H],V]”に対応し、最後の“V”が演算子である。全体表現“7,1,2,V,3,6,4,5,V,H,V,V,H”は、ノード520−6(すなわち、ルート)及びその2つの子“7”及び“[[1,2,V],[3,[6,[4,5,V],H],V],V]”に対応し、最後の“H”が演算子である。
【0016】
分割ツリーを表すポリッシュ・エクスプレッション又はリバース・ポリッシュ・エクスプレッションの場合、縦方向の境界線に対応する演算子“V”及び横方向の境界線に対応する演算子“H”という2つのタイプの演算子が存在する。非平衡(skewed)分割ツリーは、式内の如何なる2つの連続した演算子(例えば、“H”又は“V”)も同一タイプとならないポリッシュ・エクスプレッション又はリバース・ポリッシュ・エクスプレッションに対応する。
【0017】
図3A−3Cに示したように、PCBは一組の境界線を用いて複数の領域に分割され得る。特定の実施形態において、各境界線上に1つ以上の電子部品が配置され得る。図7は、PCB700の一例を示している。5本の横方向の境界線730−H1乃至730−H5と3本の縦方向の境界線730−V1乃至730−V3とを含む(すなわち、全部で8本の境界線を含む)PCB700のレイアウト例が作成されている。各境界線730上に一組の電子部品が配置され得る。特定の実施形態において、単一の境界線730上に配置される各組の電子部品は、1つ以上の電子部品を含み得る。n本の境界線が存在する場合、n組の電子部品が存在する。図7に示した例においては、8本の境界線が存在するので、8組の電子部品710−1乃至710−8が存在する。
【0018】
特定の実施形態において、例えば図7に示したものなどのPCBレイアウトは、分割ツリーによって表現され得る。図8は、図7に示したレイアウトを表す分割ツリーの一例を示している。図8の非リーフノードの各々は、図7内の1つの横方向又は縦方向の境界線730に対応している(例えば、ノード“H1”は横境界線730−H1に対応し、ノード“V1”は縦境界線730−V1に対応し、等々)。図8のリーフノードの各々は、1つ(すなわち、ノード“X”)を除いて、図7内の1つの境界線730上に配置される一組の電子部品710に対応している(例えば、ノード“1”は部品セット710−1に対応し、ノード“2”は部品セット710−2に対応し、等々)。上述のように、分割ツリーは、分割フロアプランを表すために使用される二分木であるから、リーフノードの数は、非リーフノードの数+1に等しい。非リーフノードは境界線に対応し、リーフノードは境界線上に配置される電子部品セットに対応する。境界線上に配置される電子部品セットの数は必ず境界線の数に等しいので、分割ツリー内に、電子部品セットに対応しないリーフノードが1つ存在する。特定の実施形態において、この余分なリーフノードはダミーノード(例えば、単なるプレイスホルダー)と見なされる。図8において、リーフノード“X”は、如何なる電子部品セットにも対応しないダミーノードである。
【0019】
特定の実施形態において、分割ツリーはポリッシュ・エクスプレッション又はリバース・ポリッシュ・エクスプレッションによって表され得る。例えば、図8に示した分割ツリーを表すリバース・ポリッシュ・エクスプレッションは、“X,1,H2,2,V1,3,4,H3,5,6,7,8,H5,V3,H4,V2,H1”である。
【0020】
特定の実施形態において、PCBレイアウトが分割ツリーによって表されるとき、レイアウトは、分割ツリー内のリーフノード又は非リーフノードの位置を調整することによって変更され得る。同様に、PCBレイアウトがポリッシュ・エクスプレッション又はリバース・ポリッシュ・エクスプレッションによって表されるとき、レイアウトは、式内のオペランド又は演算子の位置を調整することによって変更され得る。例えば、特定の実施形態は、(1)ポリッシュ・エクスプレッション又はリバース・ポリッシュ・エクスプレッション内の2つの隣接し合うオペランドを交換し、あるいは、分割ツリー内の2つの隣接し合うリーフノードを交換し、(2)ポリッシュ・エクスプレッション又はリバース・ポリッシュ・エクスプレッション内の一連の連続した演算子を(例えば、HVHV)を取って、それを相補形(例えば、VHVH)にし、(3)分割ツリーが非平衡ツリーのままであることを確保しながら、隣接する演算子及びオペランドを交換し得る。
【0021】
図9は、PCBレイアウトを自動作成する方法の一例を示している。特定の実施形態において、PCBレイアウトを作成するためには、多数の電子部品がPCB上に配置される必要があるとともに、一組の設計若しくは性能要求又は制約が、そのレイアウトによって満足される必要がある。特定の実施形態は、ステップ902に示すように、(1)以下に限られないが、PCBのサイズ、レイヤ数、及び具体的な禁止事項を含み得る、PCB自体を記述する入力情報又はデータ、(2)以下に限られないが、各電子部品の名称、識別子、サイズ、種類、及びピン名称リストを含み得る、PCB上に配置される電子部品を記述する入力情報又はデータ、(3)以下に限られないが、長さ制限、及びその他の好適な設計、性能若しくは製造上の要求又は制約を含み得る、PCBのネットリスト(回路接続状態)を記述する入力情報又はデータ、並びに(4)利用可能である場合に、更なる関連情報を記述する入力情報又はデータ、を受信し得る。特定の実施形態において、入力情報は1つ以上のデータ記憶部に格納され得る。特定の実施形態は、これらのデータ記憶部から入力情報を取得し得る。各々の情報タイプ(例えば、PCB、電子部品、及びネット)は、好適なデータ構造を用いて表され得る。
【0022】
特定の実施形態は、PCB上に配置される必要がある複数の電子部品を、各組がこれら電子部品のうちの1つ以上を含み得るn個の組に分割し得る。特定の実施形態は、PCB上のn個の位置にn本の境界線を作成し、該n本の境界線上に上記n組の部品を配置し得る。PCB上にn本の境界線ひいてはn組の部品を配置することには様々な手法が存在する。特定の実施形態において、n本の境界線のための当初のn個の位置がランダムに選定され得る。n本の境界線は、n組の電子部品に対するPCBのレイアウトを形成する。特定の実施形態は、上述のように、分割ツリー、又はポリッシュ・エクスプレッション若しくはリバース・ポリッシュ・エクスプレッションを用いて、n本の境界線とn組の電子部品とを表現し得る。
【0023】
そして、特定の実施形態は、レイアウトに関する一組の設計、性能若しくは製造上の要求又は制約が満たされるまで、1つ以上の境界線の位置を繰り返し反復的に調整し得る。各境界線上に一組の電子部品が配置されるので、境界線がPCB上で1つの位置から別の位置へと移動されるとき、対応する電子部品セットも第1の位置から第2の位置へと移動される。
【0024】
特定の実施形態において、境界線の位置ひいては部品セットの位置を調整する反復処理は、シミュレーテッドアニーリング(Simulated Annealing;SA)に基づいて実行され得る。SAは、所与の機能の全体最適に対する良好な近似を広い検索空間内で検索する全体最適問題のための汎用的な確率論的メタヒューリスティックである。
【0025】
この反復処理にSAを適用し、特定の実施形態は、ステップ904に示すように、反復を開始するに先立って、スケジューリング及びステータスを初期化し得る。以下は、初期化ステップの擬似コードの一例を示している。
(外1)

この例において、“T_i”、“T_f”、及び“T_step”は、反復処理を制御する3つの変数である。処理が開始するとき、現在温度は“T_i”である。各反復において、現在温度が“T_step”だけ低下される。処理は、現在温度が“T_f”に達すると終了する。各反復において、PCBのレイアウトは、n本の境界線のうちの1つ以上がPCB上の他の位置に移動するにつれて変化し得る。各特定の反復におけるPCBの現在レイアウトが“P_current”によって表される。PCBの最良のレイアウトが“P_best”によって表され、PCBの最良のレイアウトのコストがC_bestによって表される。
【0026】
変数を初期化した後、特定の実施形態は反復処理を開始し得る。反復ごとにステップ906−914が繰り返され得る。
【0027】
特定の反復において、特定の実施形態は、ステップ906に示すように、フロアプラン構造を生成し得る。フロアプランは、境界線と、これら境界線がPCB上で位置する場所とによって定められる。故に、(例えば、特定の反復において)一部の境界線が移動されるとき、フロアプランは変化する。フロアプランは実際にPCBのレイアウトを指し示す。PCBの現在のフロアプラン、すなわち、現在レイアウトは“P_current”によって表される。以下は、フロアプラン構造生成ステップの擬似コードの一例を示している。
(外2)

この例において、“P_current”によって表される分割ツリーのリーフノードはスタック“S1”に含められ、“P_current”によって表される分割ツリーの非リーフノードはスタック“S2”に含められる。
【0028】
特定の実施形態は、ステップ908に示すように、電子部品を割当て得る。以下は、部品割当てステップの擬似コードの一例を示している。
(外3)

この例において、変数“CompGroupTable”は、n組の電子部品(例えば、各組が1つのグループ)を格納するために使用される。
【0029】
特定の実施形態は、ステップ910に示すように、現在レイアウトのコストを計算し得る。以下は、コスト計算ステップの擬似コードの一例を示している。
(外4)

この例において、コスト変数“C_w”、“C_v”及び“C_c”は、以前にステップ902にて受信された入力データに含まれ得る、PCBレイアウトに置かれる設計、性能若しくは製造上の要求又は制約に関係する。例えば、“C_w”は、例えばワイヤ長整合及び差分ワイヤ長(例えば、2つの異なるワイヤの長さ)などの制約に関係してもよく、“C_v”はルーティング可能要件に関係してもよい。総コストは個々のコスト種類の和である。
【0030】
特定の実施形態は、ステップ912に示すように、現在レイアウトを評価し得る。以下は、評価ステップの擬似コードの一例を示している。
(外5)

この例において、“random()”は、ランダム値を生成する関数である(思い出すに、“random()”のシードは初期化ステップにて初期化されている)。記号“A”は関数を表す。特定の実施形態において、“A”は:
【数1】

として定義される。
【0031】
特定の実施形態は、ステップ914に示すように、スケジューリング及びステータスを更新し得る。以下は、更新ステップの擬似コードの一例を示している。
(外6)

この例において、各反復において4つの処理のうちの1つを“P_current”に適用することによって、各処理にてPCBのレイアウトが調整される。
【0032】
以上の実装例において、ステップ906−914を含む反復処理は、当初温度“T_i”が、反復ごとに“T_step”ずつ徐々に低下されて、最終温度“T_f”に達するまで繰り返される。反復処理を完了した後に得られる“P_best”及び“C_best”によって表されるレイアウトが、結果的に得られたPCBレイアウトである。
【0033】
特定の実施形態は、1つ以上のコンピュータシステム上で実現され得る。例えば、図9に示したPCBレイアウト処理は、一過性でないコンピュータ読み取り可能媒体に格納されるコンピュータソフトウェアとして実装され得る。図10は、コンピュータシステム1000の一例を示している。特定の実施形態において、1つ以上のコンピュータシステム1000が、ここに記載あるいは図示した1つ以上の方法の1つ以上のステップを実行する。特定の実施形態において、1つ以上のコンピュータシステム1000が、ここに記載あるいは図示した機能を提供する。特定の実施形態において、1つ以上のコンピュータシステム1000上で起動されるソフトウェアが、ここに記載あるいは図示した1つ以上の方法の1つ以上のステップを実行し、あるいは、ここに記載あるいは図示した機能を提供する。特定の実施形態は、1つ以上のコンピュータシステム1000の1つ以上の部分を含む。
【0034】
この開示は、如何なる好適な数のコンピュータシステム1000をも意図している。この開示は、如何なる物理形態を採るコンピュータシステム1000をも意図している。非限定的な一例として、コンピュータシステム1000は、組込型コンピュータシステム、システム・オン・チップ(SOC)、シングルボード・コンピュータシステム(SBC)(例えば、コンピュータ・オン・モジュール(COM)若しくはシステム・オン・モジュール(SOM)など)、デスクトップ型コンピュータシステム、ラップトップ型又はノート型のコンピュータシステム、対話式キオスク端末、メインフレーム、メッシュ状コンピュータシステム、携帯電話、携帯情報端末(PDA)、サーバ、又はこれらの2つ以上の組み合わせとし得る。必要に応じて、コンピュータシステム1000は、単一あるいは分散型の;複数の位置にまたがる;複数の機械にまたがる;あるいはクラウド(1つ以上のネットワーク内に1つ以上のクラウド要素を含み得る)内の;1つ以上のコンピュータシステム1000を含んでいてもよい。必要に応じて、1つ以上のコンピュータシステム1000は、ここに記載あるいは図示した1つ以上の方法の1つ以上のステップを、空間的あるいは時間的な実質的な制約なく実行し得る。非限定的な一例として、1つ以上のコンピュータシステム1000は、ここに記載あるいは図示した1つ以上の方法の1つ以上のステップを、リアルタイムあるいはバッチモードで実行し得る。必要に応じて、1つ以上のコンピュータシステム1000は、相異なる時点で、あるいは相異なる位置で、ここに記載あるいは図示した1つ以上の方法の1つ以上のステップを実行してもよい。
【0035】
特定の実施形態において、コンピュータシステム1000は、プロセッサ1002、メモリ1004、ストレージ1006、入力/出力(I/O)インタフェース1008、通信インタフェース1010、及びバス1012を含んでいる。この開示は、特定の構成にされた特定数の特定の構成要素を有する特定のコンピュータシステムを図示して説明しているが、この開示は、如何なる好適配置にされた如何なる好適数の如何なる好適構成要素を有する如何なる好適なコンピュータシステムをも意図している。
【0036】
特定の実施形態において、プロセッサ1002は、例えばコンピュータプログラムを構築する命令などの命令を実行するハードウェアを含む。非限定的な一例として、命令を実行するために、プロセッサ1002は、内部レジスタ、内部キャッシュ、メモリ1004、又はストレージ1006から命令を取り出し(すなわち、フェッチし);それを復号化して実行し;その後、1つ以上の結果を内部レジスタ、内部キャッシュ、メモリ1004、又はストレージ1006に書き込み得る。特定の実施形態において、プロセッサ1002は、データ、命令又はアドレス用の1つ以上の内部キャッシュを含み得る。この開示は、プロセッサ1002が必要に応じて、如何なる好適数の如何なる好適な内部キャッシュを含むことも意図している。非限定的な一例として、プロセッサ1002は、1つ以上の命令キャッシュと、1つ以上のデータキャッシュと、1つ以上のトランスレーション・ルックアサイド・バッファ(TLB)とを含み得る。命令キャッシュ内の命令は、メモリ1004又はストレージ1006内の命令の複製としてもよく、命令キャッシュは、プロセッサ1002によるこれら命令の取り出しを高速化し得る。データキャッシュ内のデータは、メモリ1004又はストレージ1006内の、プロセッサ1002にて実行されている命令が処理すべきデータの複製;プロセッサ1002にて実行される後続の命令によるアクセスのための、あるいはメモリ1004又はストレージ1006に書き込むための、プロセッサ1002にて実行された以前の命令の結果;又はその他の好適データとし得る。データキャッシュは、プロセッサ1002による読み出し処理又は書き込み処理を高速化し得る。TLBは、プロセッサ1002のために仮想アドレス変換を高速化し得る。特定の実施形態において、プロセッサ1002は、データ、命令又はアドレス用の1つ以上の内部レジスタを含み得る。この開示は、プロセッサ1002が適宜、如何なる好適数の如何なる好適な内部レジスタを含むことをも意図している。必要に応じて、プロセッサ1002は、1つ以上の演算論理ユニット(ALU)を含んでいてもよく;マルチコアプロセッサであってもよく;あるいは1つ以上のプロセッサ1002を含んでいてもよい。この開示は特定のプロセッサを図示して説明しているが、この開示は如何なる好適なプロセッサをも意図している。
【0037】
特定の実施形態において、メモリ1004は、プロセッサ1002が実行する命令、又はプロセッサ1002が処理するデータを格納するメインメモリを含む。非限定的な一例として、コンピュータシステム1000はストレージ1006又は別のソース(例えば、別のコンピュータシステム1000など)からメモリ1004に命令をロードし得る。その後、プロセッサ1002は、メモリ1004から内部レジスタ又は内部キャッシュに命令をロードし得る。命令を実行するため、プロセッサ1002は、内部レジスタ又は内部キャッシュから命令を取り出し、取り出した命令を復号化する。命令の実行中又は実行後、プロセッサ1002は、1つ以上の結果(中間結果又は最終結果とし得る)を内部レジスタ又は内部キャッシュに書き込み得る。そして、プロセッサ1002は、それらの結果のうちの1つ以上をメモリ1004に書き込み得る。特定の実施形態において、プロセッサ1002は、1つ以上の内部レジスタ若しくは内部キャッシュ又はメモリ1004内の命令のみを実行してもよく(ストレージ1006又はその他の場所の命令を実行するのとは異なる)、また、1つ以上の内部レジスタ若しくは内部キャッシュ又はメモリ1004内のデータのみを処理してもよい(ストレージ1006又はその他の場所のデータを処理するのとは異なる)。1つ以上のメモリバス(各々がアドレスバス及びデータバスを含み得る)が、プロセッサ1002をメモリ1004に結合してもよい。バス1012は、後述のように、1つ以上のメモリバスを含み得る。特定の実施形態において、1つ以上のメモリ管理装置(MMU)が、プロセッサ1002とメモリ1004との間に存在し、プロセッサ1002により要求されるメモリ1004へのアクセスを容易にし得る。特定の実施形態において、メモリ1004は、ランダムアクセスメモリ(RAM)を含む。このRAMは、適当であれば、揮発性メモリであってもよい。必要に応じて、このRAMはダイナミックRAM(DRAM)又はスタティックRAM(SRAM)にされ得る。また、必要に応じて、このRAMは、シングルポート又はマルチポートのRAMにされ得る。この開示は、如何なる好適なRAMをも意図している。メモリ1004は、必要に応じて、1つ以上のメモリ1004を含んでいてもよい。この開示は特定のメモリを図示して説明しているが、この開示は如何なる好適なメモリをも意図している。
【0038】
特定の実施形態において、ストレージ1006は、データ又は命令用の大容量記憶装置を含む。非限定的な一例として、ストレージ1006は、HDD、フロッピー(登録商標)ディスクドライブ、フラッシュメモリ、光ディスク、磁気光ディスク、磁気テープ、若しくはユニバーサル・シリアル・バス(USB)ドライブ、又はこれらの2つ以上の組み合わせを含み得る。ストレージ1006は、必要に応じて、リムーバブル(取り外し可能)あるいは非リムーバブル(すなわち、固定)のメディアを含み得る。ストレージ1006は、必要に応じて、コンピュータシステム1000の内部にあってもよいし、外部にあってもよい。特定の実施形態において、ストレージ1006は、不揮発性のソリッドステートメモリである。特定の実施形態において、ストレージ1006は、読み出し専用メモリ(ROM)を含む。必要に応じて、このROMは、マスクプログラムされたROM、プログラマブルROM(PROM)、消去可能PROM(EPROM)、電気的消去可能PROM(EEPROM)、電気的消去再書込可能ROM(EAROM)、若しくはフラッシュメモリ、又はこれらの2つ以上の組み合わせとし得る。この開示は、如何なる好適な物理形態を有する大容量記憶装置1006をも意図している。ストレージ1006は、必要に応じて、プロセッサ1002とストレージ1006との間での通信を容易にする1つ以上のストレージ制御装置を含み得る。この開示は特定のストレージを図示して説明しているが、この開示は如何なる好適なストレージをも意図している。
【0039】
特定の実施形態において、I/Oインタフェース1008は、コンピュータシステム1000と1つ以上のI/O装置との間での通信のための1つ以上のインタフェースを提供するハードウェア、ソフトウェア、又はこれら双方を含む。コンピュータシステム1000は、必要に応じて、これらI/O装置のうちの1つ以上を含んでいてもよい。これらI/O装置のうちの1つ以上は、個人とコンピュータシステム1000との間での通信を可能にし得る。非限定的な一例として、I/O装置は、キーボード、キーパッド、マイク、モニタ、マウス、プリンタ、スキャナ、スピーカ、スチルカメラ、スタイラスペン、タブレット、タッチスクリーン、トラックボール、ビデオカメラ、その他の好適なI/O装置、又はこれらの2つ以上の組み合わせを含み得る。I/O装置は、1つ以上のセンサを含んでいてもよい。この開示は、如何なる好適なI/O装置、及びそれ用の如何なる好適なI/Oインタフェース1008をも意図している。必要に応じて、I/Oインタフェース1008は、プロセッサ1002がこれらのI/O装置のうちの1つ以上を駆動することを可能にする1つ以上の装置又はソフトウェアドライバを含んでいてもよい。I/Oインタフェース1008は、必要に応じて、1つ以上のインタフェース1008を含んでいてもよい。この開示は特定のI/Oインタフェースを図示して説明しているが、この開示は如何なる好適なI/Oインタフェースをも意図している。
【0040】
特定の実施形態において、通信インタフェース1010は、コンピュータシステム1000と、1つ以上のその他のコンピュータシステム1000若しくは1つ以上のネットワークとの間での通信(例えば、パケットベースの通信など)のための1つ以上のインタフェースを提供するハードウェア、ソフトウェア、又はこれら双方を含む。非限定的な一例として、通信インタフェース1010は、イーサネット(登録商標)若しくはその他のワイヤベースのネットワークと通信するためのネットワークインタフェースコントローラ(NIC)若しくはネットワークアダプタ、又は例えばWi−Fiネットワークなどの無線ネットワークと通信するための無線NIC(WNIC)若しくは無線アダプタを含み得る。この開示は、如何なる好適なネットワーク及びそれ用の如何なる好適な通信インタフェース1010をも意図している。非限定的な一例として、コンピュータシステム1000は、アドホックネットワーク、パーソナルエリアネットワーク(PAN)、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、メトロポリタンエリアネットワーク(MAN)、若しくはインターネットの1つ以上の部分、又はこれらの2つ以上の組み合わせと通信し得る。これらのネットワークのうちの1つ以上の1つ以上の部分は、有線であってもよいし、無線であってもよい。一例として、コンピュータシステム1000は、無線PAN(WPAN)(例えば、ブルートゥース(登録商標)WPANなど)、Wi−Fiネットワーク、Wi−MAXネットワーク、携帯電話ネットワーク(例えば、グローバル・システム・フォー・モバイル・コミュニケーションズ(GSM(登録商標))ネットワークなど)、若しくはその他の好適な無線ネットワーク、又はこれらの2つ以上の組み合わせと通信し得る。コンピュータシステム1000は、必要に応じて、これらのネットワークの何れかのための如何なる好適な通信インタフェース1010を含んでいてもよい。この開示は特定の通信インタフェースを図示して説明しているが、この開示は如何なる好適な通信インタフェースをも意図している。
【0041】
特定の実施形態において、バス1012は、コンピュータシステム1000の構成要素を相互に結合するための、ハードウェア、ソフトウェア、又はこれら双方を含む。非限定的な一例として、バス1012は、アクセラレーテッド・グラフィクス・ポート(AGP)若しくはその他のグラフィック専用バス、EISA(Extended Industry Standard Architecture)バス、フロントサイドバス(FSB)、ハイパートランスポート(HT)インターコネクト、業界標準アーキテクチャ(ISA)バス、インフィニバンド・インターコネクト、LPC(low-pin-count)バス、メモリバス、マイクロ・チャネル・アーキテクチャ(MCA)バス、コンピュータ用拡張バスアーキテクチャ(PCI)バス、PCIエクスプレス(PCI−X)バス、シリアルATA(SATA)バス、VLB(Video Electronics Standards Association local)バス、若しくはその他の好適なバス、又はこれらの2つ以上の組み合わせを含み得る。バス1012は、必要に応じて、1つ以上のバス1012を含んでいてもよい。この開示は特定のバスを図示して説明しているが、この開示は如何なる好適なバス又はインターコネクトをも意図している。
【0042】
ここで、コンピュータ読み取り可能記憶媒体への言及は、1つ以上の一過性でない有形のコンピュータ読み取り可能記憶媒体保有構造をも包含するものである。非限定的な一例として、コンピュータ読み取り可能記憶媒体は、必要に応じて、半導体ベースあるいはその他の集積回路(IC)(例えば、フィールド・プログラマブル・ゲート・アレイ(FPGA)、又は特定用途向けIC(ASIC)など)、ハードディスク、HDD、ハイブリッド式ハードドライブ(HHD)、光ディスク、光ディスクドライブ(ODD)、磁気光ディスク、磁気光ドライブ、フロッピー(登録商標)ディスク、フロッピーディスクドライブ(FDD)、磁気テープ、ホログラフィック記憶媒体、ソリッドステートドライブ(SSD)、RAMドライブ、セキュアデジタル(SD)カード、セキュアデジタルドライブ、若しくはその他の好適なコンピュータ読み取り可能記憶媒体、又はこれらの2つ以上の組み合わせを含み得る。コンピュータ読み取り可能な一過性でない記憶媒体は、必要に応じて、揮発性、不揮発性、又は揮発性と不揮発性との組み合わせとし得る。
【0043】
この開示は、何らかの好適なストレージを実現する1つ以上のコンピュータ読み取り可能記憶媒体を意図している。特定の実施形態において、コンピュータ読み取り可能記憶媒体は、必要に応じて、プロセッサ1002の1つ以上の部分(例えば、1つ以上の内部レジスタ若しくはキャッシュなど)、メモリ1004の1つ以上の部分、ストレージ1006の1つ以上の部分、又はこれらの組み合わせを実現してもよい。特定の実施形態において、コンピュータ読み取り可能記憶媒体はRAM又はROMを実現する。特定の実施形態において、コンピュータ読み取り可能記憶媒体は揮発性あるいは永続的なメモリを実現する。特定の実施形態において、1つ以上のコンピュータ読み取り可能記憶媒体がソフトウェアを具現化する。ここで、ソフトウェアへの言及は適宜、1つ以上のアプリケーション、バイトコード、1つ以上のコンピュータプログラム、1つ以上の実行ファイル、1つ以上の命令、ロジック、機械語、1つ以上のスクリプト、又はソースコードを包含するものであり、この逆もまた然りである。特定の実施形態において、ソフトウェアは、1つ以上のアプリケーション・プログラミング・インタフェース(API)を含む。この開示は、如何なる好適なプログラミング言語又は複数のプログラミング言語の組み合わせで書き込まれ、あるいはその他の方法で表現された、如何なる好適なソフトウェアをも意図している。特定の実施形態において、ソフトウェアはソースコード又はオブジェクトコードとして表現され得る。特定の実施形態において、ソフトウェアは、例えばC、Perl又はこれらの好適な拡張版など、より高級(高水準)なプログラミング言語で表現される。特定の実施形態において、ソフトウェアは、例えばアセンブリ言語(又は機械語)など、より低水準のプログラミング言語で表現される。特定の実施形態において、ソフトウェアはJAVA(登録商標)で表現される。特定の実施形態において、ソフトウェアはハイパーテキスト・マークアップ言語(HTML)、拡張マークアップ言語(XML)、又はその他の好適なマークアップ言語で表現される。
【0044】
ここでは、“又は”は、その他のことが明示的或いは文脈的に指し示されない限り、両立的なものであって排他的なものではない。故に、“A又はB”は、その他のことが明示的或いは文脈的に指し示されない限り、“A、B、又は双方”を意味する。また、“及び”は、その他のことが明示的或いは文脈的に指し示されない限り、結合及びそれぞれの双方である。故に、ここでは、“A及びB”は、その他のことが明示的或いは文脈的に指し示されない限り、“結合的あるいは個別的にA及びB”を意味する。
【0045】
この開示は、ここで例示した実施形態への、当業者に理解されるであろう全ての変更、代用、変形、改変及び改良を包含するものである。同様に、添付の請求項は適宜、ここで例示した実施形態への当業者に理解されるであろう全ての変更、代用、変形、改変及び改良を包含するものである。また、特定の機能を実行するように適応され、構成され、可能にされ、設定され、有効にされ、動作可能にされ、あるいは動作する装置若しくはシステム又はそれらの構成要素への、請求項中での参照は、装置、システム又は構成要素がそのように適応、構成、可能化、設定、有効化、動作可能化あるいは動作される限り、それ又はその特定機能が活性化され、オンにされ、あるいは解除されようとなかろうと、その装置、システム又は構成要素を包含するものである。
【0046】
以上の説明に関し、更に以下の付記を開示する。
(付記1) 1つ以上の計算装置によって実行される方法であって、
印刷回路基板(PCB)のレイアウトを作成するステップであり、
前記PCB上のn個の位置それぞれにn本の境界線を作成し、且つ
前記n本の境界線上それぞれにn組の電子部品を配置する
ことを有するステップと、
前記PCBに対する一組のレイアウト要求が満足されるまで、前記PCBの前記レイアウトを反復的に調整して評価するステップと、
を有する方法。
(付記2) 前記PCBの前記レイアウトを、分割ツリーを用いて表現するステップ、を更に有する付記1に記載の方法。
(付記3) 前記PCBの前記レイアウトを、ポリッシュ・エクスプレッション又はリバース・ポリッシュ・エクスプレッションを用いて表現するステップ、を更に有する付記1に記載の方法。
(付記4) 前記PCBの前記レイアウトを反復的に調整して評価するステップは、シミュレーテッドアニーリングに基づき、それにより、この反復処理は、温度によって制御され、
前記温度を初期値に設定し、
各反復にて前記温度をステップ値だけ低下させ、且つ
前記温度が最終値に達したときに該反復処理を終了させる
ことを有する、付記1に記載の方法。
(付記5) 前記PCBの前記レイアウトを反復的に調整するために、各反復は、
ランダムに選択された2つの境界線を交換すること、
ランダムに選択された2つの組の電子部品を交換すること、
ランダムに選択された1つの部品を、ランダムに選択された第1組の電子部品から、ランダムに選択された第2組の電子部品に移動させること、及び
ランダムに選択された境界線のランダム値に対する比を0と1との間で変化させること、
のうちの1つをランダムに実行することを有する、付記1に記載の方法。
(付記6) 前記PCBの前記レイアウトを反復的に評価するために、各反復は、
前記PCBの前記レイアウトのコストを、前記一組のレイアウト要求に基づいて計算し、
ランダム値を生成し、
前記PCBの現在最良のレイアウト、前記PCBの該現在最良のレイアウトのコスト、及び反復処理を制御する現在温度に基づいて、第2の値を計算し、且つ
前記ランダム値が前記第2の値より小さい場合に、
前記PCBの前記現在最良のレイアウトを、前記PCBの前記レイアウトとして設定し、且つ
前記PCBの前記現在最良のレイアウトの前記コストを、前記PCBの前記レイアウトのコストとして設定する、
ことを有する、付記1に記載の方法。
(付記7) 1つ以上のプロセッサによって実行可能な命令を格納したメモリと、
前記メモリに結合されて前記命令を実行するよう動作可能な前記1つ以上のプロセッサであり、前記命令を実行するとき、
印刷回路基板(PCB)のレイアウトを作成するステップであり、
前記PCB上のn個の位置それぞれにn本の境界線を作成し、且つ
前記n本の境界線上それぞれにn組の電子部品を配置する
ことを有するステップと、
前記PCBに対する一組のレイアウト要求が満足されるまで、前記PCBの前記レイアウトを反復的に調整して評価するステップと、
を実行するよう動作する1つ以上のプロセッサと、
を有するシステム。
(付記8) 前記1つ以上のプロセッサは、前記命令を実行するとき更に、前記PCBの前記レイアウトを、分割ツリーを用いて表現するよう動作する、付記7に記載のシステム。
(付記9) 前記1つ以上のプロセッサは、前記命令を実行するとき更に、前記PCBの前記レイアウトを、ポリッシュ・エクスプレッション又はリバース・ポリッシュ・エクスプレッションを用いて表現するよう動作する、付記7に記載のシステム。
(付記10) 前記PCBの前記レイアウトを反復的に調整して評価するステップは、シミュレーテッドアニーリングに基づき、それにより、この反復処理は、温度によって制御され、
前記温度を初期値に設定し、
各反復にて前記温度をステップ値だけ低下させ、且つ
前記温度が最終値に達したときに該反復処理を終了させる
ことを有する、付記7に記載のシステム。
(付記11) 前記PCBの前記レイアウトを反復的に調整するために、各反復は、
ランダムに選択された2つの境界線を交換すること、
ランダムに選択された2つの組の電子部品を交換すること、
ランダムに選択された1つの部品を、ランダムに選択された第1組の電子部品から、ランダムに選択された第2組の電子部品に移動させること、及び
ランダムに選択された境界線のランダム値に対する比を0と1との間で変化させること、
のうちの1つをランダムに実行することを有する、付記7に記載のシステム。
(付記12) 前記PCBの前記レイアウトを反復的に評価するために、各反復は、
前記PCBの前記レイアウトのコストを、前記一組のレイアウト要求に基づいて計算し、
ランダム値を生成し、
前記PCBの現在最良のレイアウト、前記PCBの該現在最良のレイアウトのコスト、及び反復処理を制御する現在温度に基づいて、第2の値を計算し、且つ
前記ランダム値が前記第2の値より小さい場合に、
前記PCBの前記現在最良のレイアウトを、前記PCBの前記レイアウトとして設定し、且つ
前記PCBの前記現在最良のレイアウトの前記コストを、前記PCBの前記レイアウトのコストとして設定する、
ことを有する、付記7に記載のシステム。
(付記13) ソフトウェアを格納したコンピュータ読み取り可能記憶媒体であって、前記ソフトウェアは、1つ以上のコンピュータシステムによって実行されるときに、該1つ以上のコンピュータシステムに、
印刷回路基板(PCB)のレイアウトを作成するステップであり、
前記PCB上のn個の位置それぞれにn本の境界線を作成し、且つ
前記n本の境界線上それぞれにn組の電子部品を配置する
ことを有するステップと、
前記PCBに対する一組のレイアウト要求が満足されるまで、前記PCBの前記レイアウトを反復的に調整して評価するステップと、
を実行させるよう作用する、コンピュータ読み取り可能記憶媒体。
(付記14) 前記ソフトウェアは、前記1つ以上のコンピュータシステムによって実行されるときに、前記1つ以上のコンピュータシステムに更に、前記PCBの前記レイアウトを、分割ツリーを用いて表現させるよう作用する、付記13に記載のコンピュータ読み取り可能記憶媒体。
(付記15) 前記ソフトウェアは、前記1つ以上のコンピュータシステムによって実行されるときに、前記1つ以上のコンピュータシステムに更に、前記PCBの前記レイアウトを、ポリッシュ・エクスプレッション又はリバース・ポリッシュ・エクスプレッションを用いて表現させるよう作用する、付記13に記載のコンピュータ読み取り可能記憶媒体。
(付記16) 前記PCBの前記レイアウトを反復的に調整して評価するステップは、シミュレーテッドアニーリングに基づき、それにより、この反復処理は、温度によって制御され、
前記温度を初期値に設定し、
各反復にて前記温度をステップ値だけ低下させ、且つ
前記温度が最終値に達したときに該反復処理を終了させる
ことを有する、付記13に記載のコンピュータ読み取り可能記憶媒体。
(付記17) 前記PCBの前記レイアウトを反復的に調整するために、各反復は、
ランダムに選択された2つの境界線を交換すること、
ランダムに選択された2つの組の電子部品を交換すること、
ランダムに選択された1つの部品を、ランダムに選択された第1組の電子部品から、ランダムに選択された第2組の電子部品に移動させること、及び
ランダムに選択された境界線のランダム値に対する比を0と1との間で変化させること、
のうちの1つをランダムに実行することを有する、付記13に記載のコンピュータ読み取り可能記憶媒体。
(付記18) 前記PCBの前記レイアウトを反復的に評価するために、各反復は、
前記PCBの前記レイアウトのコストを、前記一組のレイアウト要求に基づいて計算し、
ランダム値を生成し、
前記PCBの現在最良のレイアウト、前記PCBの該現在最良のレイアウトのコスト、及び反復処理を制御する現在温度に基づいて、第2の値を計算し、且つ
前記ランダム値が前記第2の値より小さい場合に、
前記PCBの前記現在最良のレイアウトを、前記PCBの前記レイアウトとして設定し、且つ
前記PCBの前記現在最良のレイアウトの前記コストを、前記PCBの前記レイアウトのコストとして設定する、
ことを有する、付記13に記載のコンピュータ読み取り可能記憶媒体。
(付記19) 印刷回路基板(PCB)のレイアウトを作成する手段であり、
前記PCB上のn個の位置それぞれにn本の境界線を作成する手段、及び
前記n本の境界線上それぞれにn組の電子部品を配置する手段
を有する手段と、
前記PCBに対する一組のレイアウト要求が満足されるまで、前記PCBの前記レイアウトを反復的に調整して評価する手段と、
を有するシステム。
【符号の説明】
【0047】
100 PCB
110 電子部品
130 境界線
410 領域
420 境界線
520 非リーフノード
700 PCB
710 電子部品セット
730 境界線
1000 コンピュータシステム
1002 プロセッサ
1004 メモリ
1006 ストレージ
1008 I/Oインタフェース
1010 通信インタフェース
1012 バス
図1A
図1B
図2
図3A
図3B
図3C
図4
図5
図6
図7
図8
図9
図10