Schemat i projekt PCB
Automatyczne trasy
agentee route, tie, tune i neck: trasy siatkowe zachowujące szerokości klas, odstępy i przelotki, połączenia z płaszczyzną, dopasowanie długości i zwężenia.
agentee route NAME --nets 'FX_D*,SPI_*' --layers F.Cu,In2.Cu,B.Cu (MCP route) trasy ratsnest nazwanych sieci na siatce (--grid, domyślnie 0,05 mm) i dołącza ścieżki i przelotki do pliku projektu PCB jako zwykłe [[tracks]] i [[vias]], więc możesz je później edytować. Zachowuje szerokość, odstęp i layers każdej klasy sieci względem każdego padu, ścieżki, przelotki, otworu i krawędzi płytki, rozmiaruje przestrzeń dla każdej klasy przelotki według jej własnego padu, wiertła i warstw (mikroprzelotka mieści się tam, gdzie przelotka przez całość się nie mieści, a mikroprzelotka może stać obok zakopanej przelotki na innych warstwach), trzyma nowe przelotki w odległości min_hole_to_hole od każdego wiertła, którego zakres współdzieli dielektryk z ich zakresem, i ich otwory w odległości min_via_hole_to_copper od padów, ścieżek i przelotek innych sieci, trzyma je z dala od padów SMD każdej sieci, także własnej (miedź przelotki nie może ich dotykać, via-cuts-pad, a otwór pozostaje w odległości min_hole_to_smd_pad, hole-to-smd-pad, chyba że --via-in-pad, MCP via_in_pad, pozwala mu stać całkowicie wewnątrz padu SMD jego sieci z wiertłem nie większym niż max_filled_via_drill), używa przelotek klasy do zmiany warstwy, najtańszej, której zakres obejmuje obie warstwy (--via uv-top,core lub MCP via, aby wybrać z innych nazw, --via-cost w mm ścieżki, domyślnie 3, razy cost przelotki), nalicza --bend-cost mm ścieżki za każde zawinięcie o 45 stopni (domyślnie 0,1, trzykrotnie więcej za 90) i nigdy nie przesuwa tego, co już jest, chyba że podano --reroute, który najpierw usuwa ścieżki i przelotki nazwanych sieci. Połączenie, które nie znajdzie wolnej ścieżki, usuwa trasy sieci, które by przecięło, lub których otwory przelotek sprowadziłoby w odległość mniejszą niż min_hole_to_hole od własnych (otwory, których zakresy współdzielą dielektryk), zapamiętuje to miejsce jako zatłoczone, a te sieci wracają do kolejki. Wyszukiwanie krokówuje w kierunkach co 45 stopni i nalicza za każde zawinięcie, więc ścieżki wychodzą jako proste odcinki z zawinięciami o 45 stopni; później odcinki są napinane dwusegmentowymi doglegami o 45 stopni, a każde pozostałe narożnik 90 stopni jest ścięty tam, gdzie to możliwe. Tylko stub do środka padu poza siatką może stać pod innym kątem. Tam, gdzie szerokość klasy nie mieści się w końcowym padzie (szersza niż mniejsza strona padu, lub zbyt blisko sąsiednich padów, aby zachować odstęp), trasa zwęża się: ścieżka o szerokości klasy zatrzymuje się przed padem, a osobny wpis [[tracks]] z jawnym width biegnie prosto do środka padu, najwyżej o długości neckdown klasy i nie węższy niż min_track_width. Jego szerokość to najmniejsza z szerokości klasy, mniejszej strony padu i najszerszej, która zachowuje odstęp, zaokrąglona w dół do 0,01 mm (lub dokładnie min_track_width, tam gdzie zaokrąglenie obniżyłoby ją poniżej tej wartości, a szerokość bez zaokrąglenia nie obniżyłaby); szeroka ścieżka zaczyna się w pierwszym miejscu od padu, gdzie jej pełna szerokość zachowuje odstęp (i, dla padu węższego niż ścieżka, poza padem). Pady jednej sieci, które się dotykają, jak pad termiczny zbudowany z kilku wpisów padów, liczą się jako jeden szeroki pad. Pary trasy z --pairs nie zwężają się. Połączenie sieci, która już ma świeżą miedź, zaczyna się od tej miedzi. Po wstawieniu wszystkiego, każde trasowane połączenie używające przelotek jest ponownie próbowane na jednej warstwie naraz, z pozostałymi trzymanymi na sztywno, i trasa jednowarstwowa zastępuje je, jeśli jest najwyżej o 25% plus 1 mm dłuższa. Wtedy przelotki sąsiednich równoległych połączeń zmieniających warstwę w pobliżu siebie są przesuwane wzdłuż własnych ścieżek na wspólny rząd lub kolumnę na siatce, tam gdzie miejsce jest legalne i połączenie zachowuje długość (nogi pary trzymane przez --pairs i sieci z kilkoma połączeniami pozostają w miejscu). Sieć w interfejsie z max_vias trzyma trasę (każdą sieć pasa, przez elementy szeregowo) w jego granicach: trasa z za dużo przelotek jest ponownie próbowana z droższymi przelotkami, potem na jednej warstwie i zawodzi z powodem, jeśli żadna się nie mieści. Druga sieć pary jest ciągnięta do partnera w szczelinie pary; --pairs najpierw próbuje trasować obie połówki razem jako jedną sprzężoną ścieżkę. Gdy kilka połączeń zawiedzie, trasuj je ponownie razem z sieciami wokół i --reroute, aby router mógł usunąć i ponownie uporządkować cały obszar, lub obniż do --grid 0.025. --dry-run raportuje bez zapisywania. Najpierw trasuj ręcznie sieci, które mają znaczenie, potem pozwól routerowi wypełnić resztę, klasa po klasie.
Sieć z wpisem [[zones]] to sieć płaszczyzny. Glob w --nets nigdy jej nie dopasuje, więc --nets '*' trasy każdy sygnał i zasilanie bez wylewki i zostawia masę płaszczyznom; nazwij sieć dokładnie, aby trasować ją ścieżkami mimo wszystko. Przelotki umieszczone przez reguły [[stitching]] nie są przeszkodami dla routera: reguła umieszcza je ponownie wokół nowej miedzi.
agentee tie NAME [--nets GND] [--dry-run] (MCP tie) łączy każdy pad SMD sieci płaszczyzny z najbliższą warstwą, którą pokrywa jej wylewka, krótkim stubem i przelotką obok padu, co jest sposobem, w jaki pady masy i zasilania łączą się z płaszczyzną zamiast ścieżkami między nimi. Przelotka idzie na stronę padu z dala od środka elementu, tak blisko, jak to możliwe: jej miedź z dala od każdego padu SMD (także własnego, więc bez via-in-pad), jej otwór w odległości min_hole_to_smd_pad od nich, min_hole_to_hole od innych otworów, min_via_hole_to_copper i odstęp klasy od innych sieci, min_copper_to_edge od obrysu, a stub z dala od innych sieci na warstwie padu. Próbuje 16 kierunków, najbliższy na zewnątrz pierwszy, do 1,2 mm za padem. Pad, który już ma przelotkę jego sieci w odległości 0,8 mm od krawędzi, zostaje w spokoju, pady przez całość i kulki BGA (escape obsługuje je) są pomijane, a pad bez legalnego miejsca jest wymieniony pod failed. Stuby i przelotki są dołączane jako zwykłe [[tracks]] i [[vias]].
agentee neck NAME [--nets 'VBUS,RF_*'] [--taper] [--dry-run] (MCP neck) zwęża miedź, która już istnieje. Sprawdza oba końce każdej ścieżki nazwanych sieci (domyślnie wszystkie), które kończą się wewnątrz padu tej samej sieci na tej samej warstwie, i wybiera te, które są szersze niż krótszy bok padu, albo których pełna szerokość narusza odstęp wewnątrz długości klasy neckdown (plus jedna szerokość ścieżki) od padu. Takie końce są cięte: ścieżka zachowuje swoją szerokość od cięcia na zewnątrz, a nowy wpis [[tracks]] z jawnym width biegnie od starego punktu końcowego w padzie do cięcia, wzdłuż starej ścieżki. Szerokość szyjki to najmniejsza wartość ze szerokości ścieżki, krótszego boku padu i najszerszej szerokości, która zachowuje odstęp wzdłuż szyjki, zaokrąglona w dół do 0,01 mm (albo dokładnie min_track_width, jak powyżej). Cięcie to pierwsze miejsce, w krokach 0,01 mm, gdzie pełna szerokość zachowuje odstęp dla kolejnych neckdown plus jedna szerokość ścieżki (a w przypadku padu węższego niż ścieżka leży poza padem); szyjka nigdy nie jest dłuższa niż neckdown i nigdy nie jest węższa niż min_track_width, w przeciwnym razie końcówka jest wymieniana w sekcji failed z powodem i pozostawiana bez zmian. Pad zbudowany z kilku wpisów padów tej samej sieci, które się dotykają, liczy się jako jeden szeroki pad. --taper stopniowo zwiększa szerokość w krótkim łańcuchu zamiast jednej szyjki: po wąskiej szyjce następuje do dwóch kolejnych wpisów, każdy o jedną trzecią drogi od szerokości szyjki do szerokości ścieżki, razem nie dłuższy niż neckdown (trzykrotność szyjki, maksymalnie). Miedź zawsze staje się węższa, więc nie mogą pojawić się nowe błędy odstępu; plik jest edytowany w miejscu (każda inna linia jest zachowywana), a zapisane wypełnienia stref są odświeżane. Raport wymienia każdą szyjkę (indeks ścieżki, sieć, pad, powód, szerokość, długość, wpisy) i liczy zmienione i dodane ścieżki.
Pary i zasady długości znajdują się również w projekcie PCB (layout):
[[pairs]] # optional: nets ending _P/_N, _DP/_DN, +/-, P/N in a class
p = "USB_DP" # with diff_gap are paired on their own
n = "USB_DN"
max_skew = "0.1mm" # or `max_skew` on the net class
[[match_groups]]
name = "ddr-dq0"
nets = ["DQ?", "DQS0_*"] # * and ? globs
tolerance = "0.5mm"
# target = "42mm" # default the longest memberWeryfikacja raportuje przesunięcie fazowe każdej pary w mm i ps (z efektywnej przenikalności elektrycznej warstwy), odcinek pary prowadzony z niewłaściwą odległością oraz pary, które przez mniej niż 80% długości nie biegną obok siebie. Grupy dopasowania wskazują, która sieć jest za krótka lub za długa i o ile. Parę przechodzącą przez dwuopinowe elementy szeregowane, np. kondensatory AC na linii USB, mierzy się od początku do końca: jej przesunięcie fazowe to suma przesunięć wszystkich par, do których jest dołączona, raportowane jako FX_TX1_P+SS_TX1_P/FX_TX1_N+SS_TX1_N.