設計
制御インピーダンスとペア
閉形式とGPUフィールド解による配線幅、共面RFライン、差動ペア、長さマッチング、USB 3などのインターフェース。
制御インピーダンスラインは、層構成、配線幅、周囲の銅の3者間の約束です。agenteeはこの約束をネットクラスという1箇所に保持し、クラスの全配線をそれに対してチェックします。
先に質問する
agentee calc impedance --layer F.Cu --target 50ohm
agentee calc impedance --layer F.Cu --target 90ohm --gap 0.15mm
agentee calc trace-width --current 2Aこれらはプロジェクト内の基板を読み取ります。1つ目はトップ層の50オームマイクロストリップの線幅に、2つ目は0.15 mm間隔の90オーム差動ペアの線幅に答えます:
{
"geometry": { "er": 4.4, "h_mm": 0.2104, "kind": "microstrip", "t_mm": 0.035 },
"line": { "coplanar_gap_mm": null, "diff_gap_mm": 0.15 },
"target_ohm": 90.0,
"width_for_target_mm": 0.2682
}閉形式は、マイクロストリップにHammerstad-Jensen、ストリップラインにWheeler、接地共面伝送線に共形写像を使用します。すべて無被膜です。ソルダーレジストを無視し、薄いプリプレグでは数オームの誤差が生じる可能性があります。
電界を解く
agentee calc field --netclass RF
agentee calc field --netclass RF --sweep 10MHz,6GHz,21電界ソルバーは、GPU上で断面の有限差分ラプラス解算を実行します。銅の厚さ、ソルダーレジスト、共面接地、ペアを考慮します。Cohnの正確なストリップラインと0.5%以内、Hammerstad-Jensenのマイクロストリップと0.4%以内に収まり、数秒で完了します:
{
"closed_form_uncoated_ohm": 51.12,
"coplanar_gap_mm": 0.2,
"field": {
"backend": "gpu",
"eeff": 3.094,
"delay_ps_per_mm": 5.87,
"z0": 49.88
},
"solder_mask": true,
"width_mm": 0.3
}--sweepで周波数ごとの損失テーブルを追加します: R、L、G、C、Z0、メートルおよびインチあたりのdB。導体損失と誘電体損失に分け、スキンの効果、層構成からの銅の粗さ(roughnessまたはhuray)、因果的な誘電体モデルを含みます。GPUがない場合、2DソルバーはCPUにフォールバックします。
ターゲットをクラスに設定する
[[netclasses]]
name = "RF"
impedance = "50ohm"
impedance_tolerance = "5%"
coplanar_gap = "0.2mm"
layers = ["F.Cu"]
solver = "field"solver = "field"の場合、checkはクラスが使用可能な全層で解算し、ズレがある場合はその量と使用すべき値を報告します:
error: lna.board.toml: lna netclass RF on F.Cu: field solver gives 59.4 ohm with solder mask, outside 50ohm +/- 5%, use track_width = "0.2985mm" (50.2 ohm)track_widthを省略すると、checkが最初の層に対して解算します。1つの線幅で全層に対応できない場合は、widths = { "In2.Cu" = "0.16mm" }のように指定します。
基板で維持する
クラスは約束です。レイアウトがそれを維持します。checkはインピーダンスクラスの全配線を測定します:
impedance-traceは、配線の線幅、ネックダウン、または外層の周囲の銅がインピーダンスを許容範囲外にする場合にエラーになります。ベタが遠すぎる共面ラインや、ネックダウンが長すぎるものはここで検出されます。impedance-widthは、クラスに属する別の線幅の配線について警告します。neckdownは、小さなパッドへの短い区間としてクラスより細い配線を記録します。クラスneckdownの長さ(デフォルト0.5 mm)まで許可されます。
agentee neck NAMEは、配線より狭いパッドに入る既存の配線の端をネックダウンし、--taperは短いチェーンで線幅を段階的に元に戻します。
差動ペア
[[netclasses]]
name = "USB"
impedance = "90ohm"
diff_gap = "0.15mm"
layers = ["F.Cu"]
max_skew = "0.1mm"diff_gapでクラスをペアにし、インピーダンスを差動にします。_Pと_N、_DPと_DN、+と-、またはPとNで終わるネットは自動的にペアになります。それ以外はレイアウトで名前を指定します:
[[pairs]]
p = "USB_DP"
n = "USB_DN"
max_skew = "0.1mm"calc field --netclass USB は pair ブロックを追加します。Zdiff、Zcommon、奇数モードと偶数モードのインピーダンスと遅延、結合係数、長いラインのニアエンドクロストークです。チェックは各ペアのスキューを mm と ps で報告し、max_uncoupled を超える間隔で伸びている部分、および長さが 80% 未満で並走しているペアを報告します。USB レーン上の AC キャップのような直列部品を挟むペアは、端から端まで測定します。agentee route NAME --nets 'USB_*' --pairs は両方の半を一緒にルーティングします。
長さを合わせる
[[match_groups]]
name = "ddr-dq0"
nets = ["DQ?", "DQS0_*"]
tolerance = "0.5mm"agentee tune NAME
agentee show pcb:NAMEtune は、各ペアの短いネットのスキュー分と、各マッチグループのメンバーの目標値までの不足分を、他のすべてのネットを避けて隆起が置ける最も長い直線区間でメアンダーさせ、その点を配線に書き戻します。ペアでは、すでに脚が離れている部分の伸長を先に隆起させます。目標値を超えるネットは報告され、短くされません。agentee calc serpentine --from 10,5 --to 20,5 --add 2.5mm は、選択した区間の 1 つのメアンダーの点を与えます。ネットの長さや遅延は show にあります。
インターフェース
インターフェースはリンクが満たすべき条件を定義し、チェックは銅をすべて同時に測定します。
[[interfaces]]
name = "usb-ss"
preset = "usb3-gen1"
nets = ["SS_TX*", "SS_RX*"]| プリセット | インピーダンス | スキュー | ビア | その他 |
|---|---|---|---|---|
usb3-gen1、usb3-gen2 | 90 オーム +/-7% 差動 | 5 mil | 2 | 15 mil スタブ、3500 / 3000 mil の長さ、リターンビアは 200 mil 以内 |
usb2-hs | 90 オーム +/-10% 差動 | 50 mil | 4 | 12000 mil の長さ |
lvds | 100 オーム +/-10% 差動 | |||
rf-50 | 50 オーム +/-10% | 0 | ||
cmos | 2 mm 参照なし |
USBの数値はTIの高速レイアウトガイドラインです。クラス目標を超えて、インターフェースは端から端までの長さ、トレースあたりのビア数、ビアスタブ、参照平面がない区間、すべての信号ビアの隣のグランドビア、およびバスでは到着スプレッドとクロックに対するウィンドウをチェックします。完成したシミュレーションも読み取れます。FDTD実行からの最大挿入損失、反射損失、モード変換、チャネルシミュレーションからのアイ高さ、アイ幅。詳しくは アイダイアグラム、PDN、Sパラメータ を参照。
tune はインターフェースに対して長さだけでなく時間でも機能します。ペアのスキューが ps で超過し、バスがクロックウィンドウの外に出た場合、各ネット自身の mm あたりの遅延で短い側を伸ばします。