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 2ADiese 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,21Der 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-traceist 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-widthwarnt vor einer Leiterbahn der Klasse mit einer anderen Breite.neckdownnotiert eine Leiterbahn, die schmaler als ihre Klasse ist, für einen kurzen Lauf zu einem kleinen Pad, was bis zurneckdown-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:NAMEtune 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*"]| Preset | Impedanz | Skew | Vias | sonstiges |
|---|---|---|---|---|
usb3-gen1, usb3-gen2 | 90 Ohm +/-7% diff | 5 mil | 2 | 15 mil Stümpfe, 3500 / 3000 mil lang, Rückkehr-Via innerhalb von 200 mil |
usb2-hs | 90 Ohm +/-10% diff | 50 mil | 4 | 12000 mil lang |
lvds | 100 Ohm +/-10% diff | |||
rf-50 | 50 Ohm +/-10% | 0 | ||
cmos | 2 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.