Ontwerpen
Gestuurde impedantie en paren
Spoorbreedtes opgelost met gesloten vormen en GPU-veldoplossingen, coplanair RF-lijnen, differentieel paren, lengteafstemming en interfaces zoals USB 3.
Een lijn met gecontroleerde impedantie is een belofte tussen drie dingen: de stackup, de spoorbreedte en het koper eromheen. agentee houdt de belofte op één plek, de netklasse, en checkt elk spoor van de klasse ertegen.
Vraag eerst
agentee calc impedance --layer F.Cu --target 50ohm
agentee calc impedance --layer F.Cu --target 90ohm --gap 0.15mm
agentee calc trace-width --current 2ADeze lezen de printplaat in het project. De eerste beantwoordt een breedte voor een 50 ohm microstrip op de bovenste laag; de tweede voor een 90 ohm differentieel paar met een opening van 0,15 mm:
{
"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
}De gesloten vormen zijn Hammerstad-Jensen voor microstrip, Wheeler voor stripline en conforme afbeelding voor geaard coplanair, allemaal oncoated. Ze negeren het soldeermasker en kunnen bij dunne prepreg enkele ohms afwijken.
Los het veld op
agentee calc field --netclass RF
agentee calc field --netclass RF --sweep 10MHz,6GHz,21De veldoplosser voert een eindverschil-Laplace-oplossing van de doorsnede uit op de GPU, met koperdikte, soldeermasker, coplanair aarden en paren. Het komt binnen 0,5% van de exacte stripline van Cohn en 0,4% van de Hammerstad-Jensen-microstrip, in een fractie van een seconde:
{
"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 voegt een verliestabel per frequentie toe: R, L, G, C, Z0 en dB per meter en per inch, opgesplitst in geleider- en diëlektrisch verlies, met skin effect, koperruwheid uit de stackup (roughness of huray) en een causaal diëlektrisch model. Zonder GPU valt de 2D-oplosser terug op de CPU.
Zet de doelwaarde op de klasse
[[netclasses]]
name = "RF"
impedance = "50ohm"
impedance_tolerance = "5%"
coplanar_gap = "0.2mm"
layers = ["F.Cu"]
solver = "field"Met solver = "field" lost de controle de klasse op op elke laag die hij mag gebruiken en zegt, als hij niet aan het doel voldoet, hoeveel en wat te gebruiken:
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)Laat track_width weg en de controle lost het op voor de eerste laag. Als één dikte niet op elke laag past, geef widths = { "In2.Cu" = "0.16mm" }.
Houd het op de printplaat
De klasse is een belofte; het layout houdt die vast. De controle meet elk spoor van een impedantieklasse:
impedance-traceis een fout als de breedte van een spoor, zijn neck-downs, of het koper ernaast op een buitenste laag de impedantie buiten de tolerantie brengt. Een coplanair lijn met het kopervlak te ver weg, of een die te lang neckt down, wordt hier gevangen.impedance-widthwaarschuwt voor een spoor van de klasse met een andere breedte.neckdownnoteert een spoor dat smaller is dan zijn klasse voor een korte loop naar een klein pad, wat is toegestaan tot deneckdown-lengte van de klasse (0,5 mm als standaard).
agentee neck NAME neckt bestaande sporeinden die een pad binnengaan dat smaller is dan het spoor, en --taper stapelt de breedte terug over een korte keten.
Differentiele paren
[[netclasses]]
name = "USB"
impedance = "90ohm"
diff_gap = "0.15mm"
layers = ["F.Cu"]
max_skew = "0.1mm"diff_gap maakt van een klasse een paar en zijn impedantie differentieel. Nets die eindigen op _P en _N, _DP en _DN, + en -, of P en N paren zichzelf; anders noem ze in het layout:
[[pairs]]
p = "USB_DP"
n = "USB_DN"
max_skew = "0.1mm"calc field --netclass USB voegt een pair-blok toe: Zdiff, Zcommon, de oneven- en evenmodusimpedanties en -vertragingen, de koppelingscoëfficiënt en de near-end-crosstalk van een lange lijn. De controle rapporteert de skew van elk paar in mm en ps, elke strek met de verkeerde afstand boven max_uncoupled, en paren die minder dan 80% van hun lengte naast elkaar lopen. Een paar door seriële onderdelen, zoals de AC-condensatoren op een USB-lane, wordt van begin tot eind gemeten. agentee route NAME --nets 'USB_*' --pairs routeert beide helften samen.
Lengteafstemming
[[match_groups]]
name = "ddr-dq0"
nets = ["DQ?", "DQS0_*"]
tolerance = "0.5mm"agentee tune NAME
agentee show pcb:NAMEtune meandert het korte net van elk paar over zijn skew en elk lid van een matchgroep dat onder zijn doelwaarde zit, op de langste rechte segmenten waar de bulten elk ander net ontwijken, en schrijft de punten terug in de sporen. Bij een paar verhoogt hij eerst de uitreikingen waar de benen al uit elkaar lopen. Een net dat boven zijn doelwaarde zit, wordt gerapporteerd, niet verkort. agentee calc serpentine --from 10,5 --to 20,5 --add 2.5mm geeft de punten van één meander op een segment dat je kiest. Netlengtes en vertragingen staan in show.
Interfaces
Een interface stelt wat een link moet voldoen, en de controle meet het kopervlak tegelijkertijd aan alles:
[[interfaces]]
name = "usb-ss"
preset = "usb3-gen1"
nets = ["SS_TX*", "SS_RX*"]| preset | impedantie | skew | vias | overig |
|---|---|---|---|---|
usb3-gen1, usb3-gen2 | 90 ohm +/-7% diff | 5 mil | 2 | 15 mil stubs, 3500 / 3000 mil lang, return via binnen 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 ongereserveerd |
De USB-cijfers zijn de high-speed layoutrichtlijnen van TI. Naast de klassedoelen controleert een interface de lengte van begin tot einde, het aantal vias per spoor, de via-stubs, het traject zonder referentievlak eronder, de grondvia naast elke signaalvia en, voor bussen, de aankomstverspreiding en het venster ten opzichte van de klok. Het kan ook een afgeronde simulatie lezen: slechtste inbraak- en terugkaatsingsverlies en modusconversie uit een FDTD-run, ooghoogte en oogbreedte uit een kanalsimulatie. Zie Oogdiagrammen, PDN en S-parameters.
tune werkt bij interfaces ook in tijd, niet alleen in lengte: een paar dat boven zijn skew in ps zit, en een bus buiten zijn klokvenster, krijgt de korte kant verlengd met de eigen vertraging per mm van elk net.