agentee

回路図とレイアウト

自動配置

agentee place: コネクタをエッジに、大型チップを中央に、デカップリングキャパシタをピンに配置し、その後合法化と微調整を行います。

agentee place NAME [--parts 'U*,C1?'] [--keep-placed] [--side F|B|both] [--seed N] [--dry-run](MCP place)は、レイアウトの回路図のパーツを基板アウトライン内に配置し、各パーツのat、rotation、sideをその[[footprints]]エントリに書き出します(新しいパーツにはエントリを追加し、移動したラベルのatを削除します)。次にシルクチェックに失敗するようになった参照ラベルを移動し、保存されたベタを更新します。これは基板全体のクイックスタートです:配置し、見て、重要なものを手動で移動してロックします。--partsは一致するパーツのみを配置し、残りはその場に置きます。--keep-placedはすでに配置があるすべてのパーツをその場に置きます。[[footprints]]エントリのlocked = trueは決して移動しません。--side bothはBGAのデカップリングコンデンサを裏面に配置し、上面が満杯の場合に受動部品を裏面に溢れさせます。デフォルトではすべて上面に配置します。結果はファイルと--seedにのみ依存するため、異なるシードは異なる開始点です。信号ネットとすべてのネットの半周波数ワイヤレングス(HPWL)、ラッツネスト交差、コートヤード重複、平均および最悪のデカップリング距離を、開始した配置(すべてのパーツに配置がある場合)と、それ自身の配置について報告します。また、構築したクラスターと各コネクタが向かったエッジも報告します。ファイルにすでに存在する配線とビアはその場に置きます。未配線の基板を配置するか、その後route --rerouteを実行します。ラベルはagentee silkと同じ検索(パーツの横の空きスペース、最大8パス、ラベルあたり3試行)で移動され、メモリ内の配置済みレイアウトで実行されるため、プロジェクトは1回ではなく1パスごとに読み込まれます。labels_movedはそれらを数え、labels_failingは空きスペースが見つからなかったものを名指しで示し、agentee silk NAME --hideまたは手動移動に使用します。

何をどこに配置するか、最も強いものから順に、そしてその理由:

  • コネクタ(edge = trueのパッド、overhang = true、またはJ/P参照を持つパーツ)は基板のエッジに配置され、各エッジは均等に広げられ、メーティング側が外側を向きます:エッジラインはフットプリントのDwgs.Userライン(edgeというテキストの隣、KiCadのPCB Edgeマーク)で、なければそのedgeパッドの外側で、なければオーバーハングするパーツのパッドにmin_part_to_edgeを加えたもので、なければコートヤードにmin_body_to_edgeを加えたものです。RFコネクタ(SMA、SMB、BNC、U.FL、MMCX、同軸)とUSBコネクタは、他の分割が合わない限り同じエッジを共有しません。USB 3のノイズは2.4 GHz帯域に入るためです(Intel、「USB 3.0 Radio Frequency Interference Impact on 2.4 GHz Wireless Devices」、2012年)。[place] edgesはコネクタをエッジに固定します。マウンティングホールはコーナーに配置されます(対角線が優先)。フィジューシャルは空きコーナーに配置され、そのパッドはエッジから3 mm以上離れ、コンベイヤレールとクランプから離れます(SMEMA Fiducial Mark Standard 3.1)。
  • RF経路は直線に配置されます。RFネット(impedanceがありdiff_gapがないクラス)のパッドを持つ各コネクタから、配置ツールはRFネットを、2つ以上のRFネットを持ちピン数が16以下である部品(DCブロッカー、アッテネータ、スイッチ、LNA、バラン)を介して追跡し、別のコネクタまたはRFピンを持つより大きなチップで終わる最長経路を採用します。バイパス付きのスイッチでは、バイパスではなく増幅器を介して進みます。両端がコネクタの場合、それらは基板の長軸の反対側の縁に配置され、両方が収まる基板の中心を挟んで1つの直線上にスライドします。経路上の各部品は、入力と出力のパッドがその直線上に順序よく並ぶように回転し、入力側に最大1.5 mmの追加ギャップを空けて詰められ、残りの空間は最後の配線に割り当てられます。経路のノードに1つのパッドを持つ2ピンまたは3ピンの部品(ESDクランプ、バイアスチョーク、シャントキャパシタ)は、そのノードの直線横に配置され、他のパッドが外側を向くように回転し、RFパッドが配線に届く距離で、かつ他のパッドがクラスクリアランスを維持できる距離に置かれます。1つのノードに2つのシャントがある場合は、反対側に配置します。経路は、それ以外の部品がその周囲に配置される前に固定され、基板外に出るまたは他の部品と重なる部品は、一般的な配置ツールに委ねられます。
  • 大型チップ(BGA、25 mm2 以上の 16 ピン以上のパッケージ、それ以外では最大ピン数の部品)は基板の中心に引き寄せられ、中心から off_centre の範囲内に配置されます。この範囲では、すべての側面からピンを逃がす余地があります(Xilinx UG1099, Recommended Design Rules and Strategies for BGA Devices)。また、エッジやマウンティングホールからは離れます。ここは、取り扱いやデパネリングで基板が曲がり、BGA 接合部が割れるためです(IPC/JEDEC-9704A のひずみガイドライン)。
  • クラスターはネットリストから生成されます。各 IC は、その信号ネットにのみ到達する受動部品、使用する電源とグランド間のコンデンサ(複数の IC が電源を共有する場合は回路図上の最も近い IC に割り当てられ、その電源ピンに分散配置)、およびクリスタルを含みます。クラスターのデカップリングコンデンサは、対応する電源ピンの隣に配置されます(Analog Devices MT-101, Decoupling Techniques; TI SCAA082, High-Speed Layout Guidelines)。または --side both で裏面に配置します(Xilinx UG483, 7 Series PCB Design Guide は小型コンデンサを BGA の下に配置)。クリスタルはクロックピンの隣に配置します(ST AN2867, Oscillator design guide)。クラスターは、重み付き HPWL を最小化するように配置されます。インピーダンスまたはペアクラスのネット、[[pairs]] および [[interfaces]] は 3 倍カウントされ、電源およびグランドのネットはカウントされません(プレーンであるため)。
  • スイッチング電源(インダクタが 1 つのピンに接続され、その另一端が電源である IC)は、インダクタと入力コンデンサを密着して保持し、スイッチング電源は感度の高い部品(クリスタルおよびシングルエンドインピーダンス(RF)ネット上の部品)から 8 mm(中心間距離)以上離れます(TI SNVA021, AN-1149 Layout Guidelines for Switching Power Supplies; Linear Technology AN139, Power Supply Layout and EMI)。
  • 発熱部品(このレイアウトの熱シミュレーションで 0.25 W 以上の発生源、および 49 mm2 以上の大型パッケージ)は、熱が重ならないように 10 mm 間隔で配置されます(TI SNVA419, AN-2020 Thermal Design by Insight, not Hindsight; IPC-2221B, thermal management)。発熱部品をそれぞれ hot_distance だけ拡大したものが、基板の 1 辺の最大 1/4 を占める場合、そのコートヤードも hot_distance 以上離れる必要があります。placement-hot-parts-close が測定します(他の場所に配置できない部品はこのルールを除外)。より狭い基板では配線長が優先されます。出力の hot_spread は、その占有率とルールの適用有無を示します。
  • 0805 以上のセラミックコンデンサは flex_zone 外に配置されます。それより小さいものは、最も近いエッジ、コーナー、またはマウンティングホールの沿って配置します(Murata と TDK の MLCC マウントガイド(基板の曲げ); Knowles)。ゾーンは mlcc-flex-zone チェックが測定するように、2 つのパッドからアウトライン、基板の切り欠き、マウンティングホールのドリルまで測定されます。最後のパスで、まだ誤った位置にあるコンデンサを回転または移動(最大 12 mm)します。すべての本体は、アウトラインおよび基板ファイルの各 [[outline.cutouts]] ホール(これは基板外)から min_body_to_edge 以上離れます。コートヤードは側面で重なることはありません(スルーホール部品は両側をブロック)。また、[place] keepouts ポリゴン内には何も入れません(IPC-7351B コートヤード: コートヤードは部品とそのランドパターンに必要な最小面積)。
  • 回転は主要なネットに従います。各部品は、そのパッドをネットの另一端に最も近づける 90 度回転を採用し、クラスターの受動部品は 1 つの軸を共有します。

手法: 各クラスター(IC とそのメンバー)および各単独部品は、その部品の面積を持つブロックになります。ブロックの重み付きクリークグラフのスペクトラルレイアウト(ランクによる 2 つの最小の非自明固有ベクトル)が、それらを基板上で順序付けます。その後、24 ラウンドにわたり、二次配線長ソルバーと拡散ステップを交互に実行します。ソルバーはチップの場合、中心ではなくピンを引きます。各ラウンドで各チップの 90 度回転を選択します(配線長による、後期のラウンドでは 2 ピンネットの交差数も考慮)。コネクタは最も近いエッジに引き寄せられ、大型チップは中心に引き寄せられます。拡散ステップは、空き基板面積(アウトライン内、切り欠き、キープアウト、配置済み部品を避けた)を長い側で交互に二等分し、各ブロックにその面積サイズの領域を与えます。各ラウンドでブロックをその領域に強く引き寄せます。その後、コネクタはエッジに割り当てられます(最大 7 つのコネクタまですべての割り当てを試み、それ以上は貪欲法)。アウトラインがその点で走る位置でフラッシュにスライドします(ノッチやステップはエッジとみなす)。割り当てられたエッジに空きがない場合、最も近い他のエッジを優先して試み、それらを固定してソルバーを再実行します。レガライゼーションは各クラスター全体を配置します: チップの場合、各 90 度回転でのアンカー、クラスター幅の 1/3 の 5 回の微調整、その周囲のメンバー。配線長と交差数で最もコストの低いものを保持します。各部品は、そのコートヤードがすべてをクリアし、エッジルールを満たす 0.05 mm グリッド上の最も近いスポットに配置されます。その後、クラスター全体を回転または微調整して再配置し、類似サイズのチップクラスターのペアをスワップします(コストが下がる場合)。シミュレーテッドアニーリングによる洗練が続きます(シフト、90 度回転、同サイズ部品のスワップ、クラスター全体の移動、--side both での側面反転; 部品あたり 1500 回の移動、その後低温でさらに 500 回)。スコアは、重み付き HPWL、2 ピンネットの交差(交差あたり 4)、および上記ルールのペナルティです。8 つの開始点(スペクトラルレイアウトの 8 つの反射)を並列スレッドでレガライズし、最もコストの低い 3 つがクラスター移動とアニーリングに進みます。そのため、結果はファイルと --seed にのみ依存し、スレッド数には依存しません。

部品は基板自身のシルクを避けます: シルク層上の [[graphics]] ライン、locked = true のシルクテキスト、およびシルク [[artwork]] は、その側のコートヤードをブロックします(他の場所に配置できない部品はそれでも覆う場合があります)。ロックされていないシルクテキストは部品をブロックしません: 配置後、部品(またはその予約ラベル)が覆う各テキストは、部品、ラベル、ロックされたシルク、および他のテキストを避けた基板内の 10 mm 以内の最も近い空きスポットに移動します。texts_moved は [[graphics]] に書き戻された移動を列挙し、texts_stuck は空きスポットのないテキストを列挙します。コネクタ、マウンティングホール、フィクシャルもラベルを予約します。部品の外側または内側に回転し、部品の配置場所でどちらも収まらない場合はラベルなしにします。各部品の参照ラベルにもスペースが必要です: ラベルが空き基板面積の最大 1/4 を占める場合、参照テキストサイズ(その周囲 0.2 mm、フットプリントの参照スポットから自身のパッドとシルクを避けて押し出された)のボックスがコートヤードのようにクリアに保たれ、place はそのスポットを label.at として書き出します。スペースが残るより満杯の基板では、それらのボックスと他の部品およびラベルの重複はアニーリングでの小さなコストとなり、満杯の基板ではラベルはラベルパスに委ねられます(スポットのないものは agentee silk --hide で処理)。

配線とビアを削除したexamples/sdrのコピー(部品251個、65 x 45 mm)、トップ面のみで、シード1から4では、信号のHPWLが3276から3436 mm、交差が261から293回となり、4コアでの求解時間は約2秒(CPU時間約6秒)に、読み込みとラベルパスの時間が加わります。--side bothでは、約1955から2025 mm、交差が150から165回になります。

docs/format.md · エージェント向けMarkdown