agentee

Projektowanie

Kontrolowana impedancja i pary

Szerokości ścieżek z formuł analitycznych i solverów pól na GPU, linie RF współosiowe, pary różnicowe, dopasowanie długości i interfejsy takie jak USB 3.

Linia o kontrolowanej impedancji to obietnica między trzema rzeczami: stackup, szerokość ścieżki i miedź wokół niej. agentee trzyma tę obietnicę w jednym miejscu, w klasie sieci, i sprawdza każdą ścieżkę klasy względem niej.

Zapytaj najpierw

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

Te polecenia odczytują płytkę w projekcie. Pierwsze odpowiada szerokością dla 50-omowej mikrostrip na warstwie górnej; drugie dla 90-omowej pary różnicowej przy szczelinie 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
}

Wzory zamknięte to Hammerstad-Jensen dla mikrostrip, Wheeler dla stripline i mapowanie zgodne dla GCPW, wszystkie bez powłoki. Ignorują soldermaskę i, na cienkim prepregu, mogą się mylić o kilka omów.

Rozwiąż pole

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

Solver pola wykonuje rozwiązanie Laplace'a metodą różnic skończonych przekroju na GPU, z grubością miedzi, soldermaską, uziemieniami współpłaszczyznowymi i parami. Wynik mieści się w 0,5% dokładnej stripline Cohna i 0,4% mikrostrip Hammerstad-Jensena, w ułamek sekundy:

{
  "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 dodaje tabelę strat dla każdej częstotliwości: R, L, G, C, Z0 i dB na metr i na cal, podzielone na straty przewodnika i dielektryka, z efektem skórnym, chropowatością miedzi ze stackupu (roughness lub huray) i przyczynowym modelem dielektryka. Bez GPU solver 2D przechodzi na CPU.

Ustaw cel na klasie

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

Z solver = "field", sprawdzanie rozwiązuje klasę na każdej warstwie, której może używać, i, gdy jest poza celem, mówi o ile i co użyć:

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)

Pomiń track_width, a sprawdzanie rozwiąże je dla pierwszej warstwy. Gdy jedna szerokość nie pasuje do każdej warstwy, podaj widths = { "In2.Cu" = "0.16mm" }.

Utrzymaj to na płytce

Klasa to obietnica; projekt PCB ją dotrzymuje. Sprawdzanie mierzy każdą ścieżkę klasy impedancji:

  • impedance-trace to błąd, gdy szerokość ścieżki, jej zwężenia lub miedź obok niej na warstwie zewnętrznej zmieniają jej impedancję poza tolerancję. Linia współpłaszczyznowa z wylewką zbyt daleko, lub taka, która zwęża się zbyt długo, jest tu wykrywana.
  • impedance-width ostrzega o ścieżce klasy o innej szerokości.
  • neckdown notuje ścieżkę węższą niż jej klasa na krótkim odcinku do małego padu, co jest dozwolone do długości neckdown klasy (domyślnie 0,5 mm).

agentee neck NAME zwęża istniejące końce ścieżek wchodzące w pad węższy niż ścieżka, a --taper stopniowo zwiększa szerokość z powrotem na krótkim łańcuchu.

Pary różnicowe

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

diff_gap czyni klasę parą i jej impedancję różnicową. Sieci kończące się na _P i _N, _DP i _DN, + i -, lub P i N łączą się w pary automatycznie; w przeciwnym razie nazwij je w projekcie PCB:

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

calc field --netclass USB dodaje blok pair: Zdiff, Zcommon, impedancje i opóźnienia trybu nieparzystego i parzystego, współczynnik sprzężenia i krzyżowe sprzężenie na końcu bliskim długiej linii. Sprawdzanie zgłasza skew każdej pary w mm i ps, każdy odcinek o złym odstępie poza max_uncoupled, oraz pary biegnące równolegle przez mniej niż 80% ich długości. Para przez elementy szeregowo, jak kondensatory AC na kanale USB, jest mierzona od końca do końca. agentee route NAME --nets 'USB_*' --pairs routuje obie połówki razem.

Dopasowanie długości

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

tune meandruje krótszą sieć każdej pary zgodnie z jej skew oraz każdego członka grupy dopasowania krótszego od celu, na najdłuższych odcinkach prostych, gdzie wypustki nie kolidują z żadną inną siecią, i zapisuje punkty z powrotem do ścieżek. W parze najpierw wypuszcza odcinki, gdzie nogi już się rozchodzą. Sieć dłuższą od celu jest raportowana, nie skracana. agentee calc serpentine --from 10,5 --to 20,5 --add 2.5mm zwraca punkty jednego meandra na wybranym odcinku. Długości i opóźnienia sieci są w show.

Interfejsy

Interfejs stwierdza, czego link musi spełnić, a sprawdzanie mierzy miedź wobec wszystkiego naraz:

[[interfaces]]
name = "usb-ss"
preset = "usb3-gen1"
nets = ["SS_TX*", "SS_RX*"]
presetimpedancjaskewprzelotkiinne
usb3-gen1, usb3-gen290 ohm +/-7% diff5 mil2stuby 15 mil, długość 3500 / 3000 mil, przelotka zwrotna w 200 mil
usb2-hs90 ohm +/-10% diff50 mil4długość 12000 mil
lvds100 ohm +/-10% diff
rf-5050 ohm +/-10%0
cmos2 mm bez płaszczyzny odniesienia

Wartości dla USB pochodzą z wytycznych TI dotyczących projektowania układów o wysokiej prędkości. Poza celami klasy interfejs sprawdza długość od początku do końca, liczbę przelotek na ścieżkę, stuby przelotek, odcinek bez płaszczyzny odniesienia pod spodem, przelotkę masy obok każdej przelotki sygnałowej oraz, w przypadku magistral, rozrzut czasu przybycia i okno względem zegara. Może też odczytać gotową symulację: najgorszą stratę wstawienia i odbicia oraz konwersję modów z symulacji FDTD, wysokość i szerokość oka z symulacji kanału. Zobacz Diagramy oka, PDN i parametry S.

tune działa na interfejsach w czasie, nie tylko w długości: para przekraczająca swój skew w ps oraz magistrala poza oknem zegara otrzymują wydłużenie krótszej strony z opóźnieniem na mm właściwym dla każdej sieci.

Popraw ten przewodnik · Markdown dla agentów