agentee

回路図とレイアウト

自動配線

agentee route, tie, tune, neck: クラス幅、クリアランス、ビアを維持するグリッド配線、プレーン接続、長さマッチング、ネックダウン。

agentee route NAME --nets 'FX_D*,SPI_*' --layers F.Cu,In2.Cu,B.Cu(MCP では route)は、指定したネットのラッツネストをグリッド上で配線し(--grid、デフォルト 0.05 mm)、配線とビアを通常の [[tracks]] と [[vias]] としてレイアウトファイルに追記します。そのため、後から自由に編集できます。各ネットクラスの幅、クリアランス、layers を、すべてのパッド、配線、ビア、穴、基板端に対して守ります。クラスの各ビアに必要なスペースは、そのビア自身のパッド、ドリル、層から求めます(スルービアが入らない場所にもマイクロビアは入り、マイクロビアは別の層にあるベリードビアの隣に置けます)。新しいビアは、スパンが誘電体を共有するすべてのドリルから min_hole_to_hole 離し、その穴を他のネットのパッド、配線、ビアから min_via_hole_to_copper 離します。また、自ネットを含むすべてのネットの SMD パッドにビアを重ねません。ビアの銅はパッドに触れてはならず(via-cuts-pad)、穴はパッドから min_hole_to_smd_pad 離します(hole-to-smd-pad)。ただし --via-in-pad(MCP では via_in_pad)を指定すると、ドリルが max_filled_via_drill 以下であれば、自ネットの SMD パッドの内側に完全に収まる形で置けます。層の切り替えには、クラスのビアのうち両方の層をスパンに含む最も安価なものを使います(別の名前から選ぶには --via uv-top,core または MCP の via を使います。--via-cost は配線長 mm 単位でデフォルト 3、これにビアの cost を掛けます)。45 度の曲がりごとに --bend-cost mm 分の配線長を加算し(デフォルト 0.1、90 度はその 3 倍)、--reroute を指定しない限り既存のものは動かしません。指定した場合は、まず指定したネットの配線とビアを削除します。空いた経路が見つからない接続は、横切ることになる配線済みネットや、ビア穴が自分の穴から min_hole_to_hole 以内に入ることになる配線済みネット(スパンが誘電体を共有する穴)を引きはがし、その場所を混雑箇所として記録し、それらのネットをキューに戻します。探索は 45 度方向に進み、曲がりごとにコストを加算するため、経路は 45 度の曲がりを持つ直線区間になります。その後、2 セグメントの 45 度ドッグレッグで区間を引き締め、残った 90 度の角はクリアランスが取れる場所で面取りします。グリッド外のパッド中心への引き込み線だけは別の角度になることがあります。クラス幅が終端のパッドに収まらない場合(パッドの短辺より広い、または隣のパッドに近すぎてクリアランスを保てない場合)、配線はネックダウンします。クラス幅の配線はパッドの手前で止まり、明示的な width を持つ別の [[tracks]] エントリがパッド中心までまっすぐ伸びます。その長さはクラスの neckdown 以下、幅は min_track_width 以上です。幅は、クラス幅、パッドの短辺、クリアランスを保てる最大幅のうち最小のものを 0.01 mm 単位で切り捨てた値です(切り捨てるとこの下限を下回るが切り捨て前は下回らない場合は、ちょうど min_track_width になります)。太い配線は、パッドから外へ向かって全幅でクリアランスを保てる最初の位置から始まります(配線より狭いパッドでは、パッドの外側から始まります)。複数のパッドエントリで作ったサーマルパッドのように、互いに接する同じネットのパッドは 1 つの幅広パッドとして扱います。--pairs で配線したペアはネックダウンしません。すでに新しい銅箔があるネットの接続は、その銅箔から始まります。すべて配線し終えると、ビアを使う配線済みの接続を、ほかを固定したまま 1 層ずつ配線し直し、1 層の経路が元の長さの 25% プラス 1 mm 以内であれば置き換えます。続いて、互いの近くで層を切り替える隣り合った平行な接続のビアを、それぞれの配線に沿ってグリッド上の共通の行または列へスライドさせます。ただし、その位置がルール上問題なく、接続の長さが変わらない場合に限ります(--pairs で固定されたペアの各線と、複数の接続を持つネットは動きません)。max_vias を持つインターフェース内のネットは、トレース(直列部品を経由するレーンのすべてのネット)をその上限内に保ちます。ビアが多すぎる経路は、より高価なビアで、次に 1 層で再試行し、どちらも収まらなければ理由を示して失敗します。ペアの 2 本目のネットは、ペアの間隔でパートナーに寄せて引かれます。--pairs は、まず両方を 1 本の結合した配線としてまとめて配線しようとします。いくつかの接続が失敗した場合は、周囲のネットと一緒に --reroute で配線し直すと、ルーターが領域全体を引きはがして順序を組み直せます。または --grid 0.025 に下げます。--dry-run は書き込まずに結果を報告します。重要なネットはまず手で配線し、残りはクラスごとにルーターに任せてください。

[[zones]]エントリを持つネットはプレーンネットです。--netsのグロブはこれを決してマッチしないため、--nets '*'はベタのないすべての信号と電源を配線し、グランドはプレーンに任せます。ネットを正確に名前指定すると、それでも配線で配線できます。[[stitching]]ルールで配置されたビアは、ルーターにとって障害物ではありません:ルールは新しい銅の周りにそれらを再配置します。

agentee tie NAME [--nets GND] [--dry-run](MCP tie)は、プレーンネットの各SMDパッドを、そのゾーンがカバーする最も近い層に、短いスタブとパッドの横のビアで接続します。これにより、グランドと電源パッドは、パッド間の配線ではなく、プレーンに接続されます。ビアは、パッドの部品中心から遠い側に、可能な限り近づけて配置されます:その銅はすべてのSMDパッド(自分のものも含むため、via-in-padなし)からクリア、その穴はそれらからmin_hole_to_smd_pad、他の穴からmin_hole_to_hole、他のネットからmin_via_hole_to_copperおよびクラスクリアランス、アウトラインからmin_copper_to_edge以内、スタブはパッドの層で他のネットからクリアです。外側方向を最優先に16方向を試み、パッドから1.2 mmまで探します。パッドの端から0.8 mm以内に自分のネットのビアがあるパッドはそのままにし、スルーホールパッドとBGAボール(escapeがそれらを処理します)はスキップし、合法な場所のないパッドはfailedの下にリストされます。スタブとビアは通常の[[tracks]]と[[vias]]として追加されます。

agentee neck NAME [--nets 'VBUS,RF_*'] [--taper] [--dry-run] (MCP neck) は、既存の銅を細くします。指定されたネット(デフォルトはすべて)のすべての配線の両端のうち、その層のそのネットのパッド内に終わっているものについて、パッドの短い辺より幅が広いもの、またはパッドから neckdown の長さ(配線幅を1つ加えたもの)の範囲内で、全幅がクラス内のクリアランスを破るものを対象とします。そのような端は切断されます。配線は切断点から外側に向かって元の幅を維持し、パッド内の元の端点から切断点まで、元の経路に沿って、明示的な width を持つ新しい [[tracks]] エントリが作成されます。ネックの幅は、配線幅、パッドの短い辺、ネックに沿ってクリアランスを維持できる最大幅の最小値を 0.01 mm 未満に切り捨てた値です(上記と同様に、ちょうど min_track_width になる場合もあります)。切断点は、0.01 mm 刻みで、全幅が次の neckdown 加え配線幅1つ分の距離でクリアランスを維持し、(配線より狭いパッドの場合)パッドの外側に位置する最初の場所です。ネックは neckdown より長くならず、min_track_width 未満にもなりません。それ以外の場合、その端は理由とともに failed にリストされ、変更されません。同じネットのパッドエントリが複数接して構成されたパッドは、1つの広いパッドとして扱われます。--taper は、1つのネックではなく、短いチェーンで幅を段階的に元に戻します。狭いネックの後に、ネック幅から配線幅までの3分の1ずつの幅を持つ最大2つのエントリが続きます。これらは合計で neckdown(ネックの3倍まで)を超えません。銅は常に細くなるため、新しいクリアランスエラーは発生しません。ファイルはインプレースで編集され(他のすべての行は保持されます)、保存されたベタの充填が更新されます。レポートには、各ネック(配線インデックス、ネット、パッド、理由、幅、長さ、エントリ)がリストされ、変更および追加された配線の数がカウントされます。

ペアと長さのルールもレイアウトにあります:

[[pairs]]                      # optional: nets ending _P/_N, _DP/_DN, +/-, P/N in a class
p = "USB_DP"                   # with diff_gap are paired on their own
n = "USB_DN"
max_skew = "0.1mm"             # or `max_skew` on the net class

[[match_groups]]
name = "ddr-dq0"
nets = ["DQ?", "DQS0_*"]       # * and ? globs
tolerance = "0.5mm"
# target = "42mm"              # default the longest member

チェックは、各ペアのスキューを mm と ps(層の有効誘電率から)で報告し、ペアが間違ったギャップで走っている区間、および長さの80%未満しか並んでいないペアを報告します。マッチグループは、どのネットが短いか長いか、その差を報告します。USBレーンのACコンデンサのような直列の2ピン部品を通過するペアは、端から端まで測定されます。そのスキューは、それが結合するすべてのペアの合計であり、FX_TX1_P+SS_TX1_P/FX_TX1_N+SS_TX1_N のように報告されます。

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