agentee

Design

Gesteuerte Impedanz und Paare

Leiterbahnbreiten aus geschlossenen Formen und GPU-Feldlösungen, koplanare HF-Leitungen, differentielle Paare, Längengleichlauf und Schnittstellen wie USB 3.

Eine Impedanz-geführte Leitung ist eine Zusage zwischen drei Dingen: dem Lagenaufbau, der Leiterbahnbreite und dem Kupfer darum. agentee hält die Zusage an einem Ort, der Netzklasse, und prüft jede Leiterbahn der Klasse dagegen.

Erst fragen

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

Diese lesen die Platine im Projekt. Die erste beantwortet eine Breite für einen 50-Ohm-Microstrip auf der oberen Schicht; die zweite für ein 90-Ohm-Differentialpaar bei einem 0,15-mm-Abstand:

{
  "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
}

Die geschlossenen Formen sind Hammerstad-Jensen für Microstrip, Wheeler für Stripline und konforme Abbildung für geerdete koplanare Leitungen, alle unbeschichtet. Sie ignorieren die Lötstoppmaske und können bei dünnem Prepreg um mehrere Ohm abweichen.

Das Feld lösen

agentee calc field --netclass RF
agentee calc field --netclass RF --sweep 10MHz,6GHz,21

Der Feldlöser führt eine Finite-Differenzen-Laplace-Lösung des Querschnitts auf der GPU durch, mit Kupferdicke, Lötstoppmaske, koplanaren Masseflächen und Paaren. Er landet innerhalb von 0,5 % von Cohns exakter Stripline und 0,4 % von Hammerstad-Jensen-Microstrip, in einem Bruchteil einer Sekunde:

{
  "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 fügt eine Verlusttabelle pro Frequenz hinzu: R, L, G, C, Z0 und dB pro Meter und pro Zoll, aufgeteilt in Leiter- und Dielektrikumverlust, mit Skin-Effekt, Kupferrauheit aus dem Lagenaufbau (roughness oder huray) und einem kausalen Dielektrikummodell. Ohne GPU fällt der 2D-Löser auf die CPU zurück.

Das Ziel an die Klasse setzen

[[netclasses]]
name = "RF"
impedance = "50ohm"
impedance_tolerance = "5%"
coplanar_gap = "0.2mm"
layers = ["F.Cu"]
solver = "field"

Mit solver = "field" berechnet die Prüfung die Klasse auf jeder Schicht, die sie verwenden darf, und sagt, wenn sie nicht passt, um wie viel und was zu verwenden:

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)

Lass track_width weg und die Prüfung berechnet es für die erste Schicht. Wenn eine Breite nicht auf jede Schicht passt, gib widths = { "In2.Cu" = "0.16mm" } an.

Es auf der Platine halten

Die Klasse ist eine Zusage; das Layout hält sie. Die Prüfung misst jede Leiterbahn einer Impedanzklasse:

  • impedance-trace ist ein Fehler, wenn die Breite einer Leiterbahn, ihre Engstellen oder das Kupfer daneben auf einer äußeren Schicht ihre Impedanz außerhalb der Toleranz bewegt. Eine koplanare Leitung, deren Kupferfläche zu weit entfernt ist, oder eine, die zu lange enger wird, wird hier erwischt.
  • impedance-width warnt vor einer Leiterbahn der Klasse mit einer anderen Breite.
  • neckdown notiert eine Leiterbahn, die schmaler als ihre Klasse ist, für einen kurzen Lauf zu einem kleinen Pad, was bis zur neckdown-Länge der Klasse (0,5 mm standardmäßig) erlaubt ist.

agentee neck NAME verengt bestehende Leiterbahnenden, die in ein schmaleres Pad als die Leiterbahn einlaufen, und --taper schaltet die Breite über eine kurze Kette wieder hoch.

Differentialpaare

[[netclasses]]
name = "USB"
impedance = "90ohm"
diff_gap = "0.15mm"
layers = ["F.Cu"]
max_skew = "0.1mm"

diff_gap macht eine Klasse zu einem Paar und ihre Impedanz zu einer Differentialimpedanz. Netze, die auf _P und _N, _DP und _DN, + und - oder P und N enden, paaren sich von selbst; sonst benenne sie im Layout:

[[pairs]]
p = "USB_DP"
n = "USB_DN"
max_skew = "0.1mm"

calc field --netclass USB fügt einen pair-Block hinzu: Zdiff, Zcommon, die Impedanzen und Verzögerungen der ungeraden und geraden Moden, den Kopplungskoeffizienten und das Nahfeld-Störsignal einer langen Leitung. Die Prüfung meldet den Skew jedes Paares in mm und ps, jede Dehnung mit falschem Abstand über max_uncoupled hinaus, und Paare, die weniger als 80 % ihrer Länge nebeneinander laufen. Ein Paar durch Reihenbauteile, wie die AC-Kondensatoren auf einer USB-Leitung, wird von Ende zu Ende gemessen. agentee route NAME --nets 'USB_*' --pairs routet beide Hälften zusammen.

Längengleichung

[[match_groups]]
name = "ddr-dq0"
nets = ["DQ?", "DQS0_*"]
tolerance = "0.5mm"
agentee tune NAME
agentee show pcb:NAME

tune meandert das kürzere Netz jedes Paares über seine Skew und jedes Match-Gruppen-Mitglied unter seinem Zielwert, auf den längsten geraden Segmenten, wo die Ausbuchtungen jedes andere Netz frei lassen, und schreibt die Punkte zurück in die Leiterbahnen. Bei einem Paar bückt es zuerst die Abschnitte, wo die Beine bereits auseinanderlaufen. Ein Netz über seinem Zielwert wird gemeldet, nicht verkürzt. agentee calc serpentine --from 10,5 --to 20,5 --add 2.5mm liefert die Punkte eines Meanders auf einem Segment, das du wählst. Netzlängen und -verzögerungen stehen in show.

Schnittstellen

Ein Interface legt fest, was eine Verbindung erfüllen muss, und die Prüfung misst das Kupfer gleichzeitig gegen alles davon:

[[interfaces]]
name = "usb-ss"
preset = "usb3-gen1"
nets = ["SS_TX*", "SS_RX*"]
PresetImpedanzSkewViassonstiges
usb3-gen1, usb3-gen290 Ohm +/-7% diff5 mil215 mil Stümpfe, 3500 / 3000 mil lang, Rückkehr-Via innerhalb von 200 mil
usb2-hs90 Ohm +/-10% diff50 mil412000 mil lang
lvds100 Ohm +/-10% diff
rf-5050 Ohm +/-10%0
cmos2 mm ohne Bezugsebene

Die USB-Werte stammen aus den Hochgeschwindigkeits-Layoutrichtlinien von TI. Neben den Klassenziele prüft eine Schnittstelle die Länge von Ende zu Ende, die Vias pro Leiterbahn, die Via-Stubs, den Abschnitt ohne Referenzebene darunter, das Erdungsvia neben jedem Signalvia und bei Bussen die Ankunftsstreuung sowie das Fenster gegenüber dem Takt. Sie kann auch eine abgeschlossene Simulation lesen: schlechteste Einfüge- und Rückflussdämpfung sowie Modumwandlung aus einer FDTD-Simulation, Augenhöhe und Augenbreite aus einer Kanalsimulation. Siehe Augendiagramme, PDN und S-Parameter.

tune arbeitet bei Interfaces auch in der Zeit und nicht nur in der Länge: Ein Paar über seiner Skew in ps und ein Bus außerhalb seines Taktfensters bekommt die kürzere Seite verlängert, jeweils mit der eigenen Verzögerung pro mm des Netzes.

Diese Anleitung verbessern · Markdown für Agenten