agentee

Schemat i projekt PCB

Automatyczne rozmieszczanie

agentee place: złącza na krawędziach, duże układy centralnie, kondensatory odsprzęgające przy ich pinach, a następnie legalizacja i dopracowanie.

agentee place NAME [--parts 'U*,C1?'] [--keep-placed] [--side F|B|both] [--seed N] [--dry-run] (MCP place) umieszcza elementy schematu projektu PCB wewnątrz obrysu płytki i zapisuje dla każdego at, rotation i side w jego wpisie [[footprints]] (dodając wpisy dla nowych elementów, usuwając at dla przeniesionej etykiety), przenosi etykiety referencyjne, które teraz nie przechodzą kontroli opisów, a następnie odświeża zapisane wylewki. To szybki start dla całej płytki: umieść, zobacz, a potem ręcznie przesuń i zablokuj to, co ważne. --parts umieszcza tylko pasujące elementy, zostawiając resztę w miejscu; --keep-placed zostawia każdy element, który już ma położenie; locked = true we wpisie [[footprints]] nigdy nie jest przenoszony. --side both pozwala kondensatorom odblokowującym BGA trafić pod nie na spód, a elementom biernym rozlać się na spód, gdy góra jest pełna; domyślnie wszystko trafia na górę. Wynik zależy tylko od plików i --seed, więc inny seed to inny start. Zgłasza półobwód długości przewodów (HPWL) dla sieci sygnałowych i wszystkich sieci, przecięcia ratsnest, nakładanie się courtyard oraz średnią i najgorszą odległość odblokowania, dla początkowego rozmieszczenia (gdy każdy element miał położenie) i dla własnego, plus klastry, które zbudował, i krawędź, do której trafił każdy złącznik. Ścieżki i przelotki już w pliku zostają w miejscu; umieść nierutowaną płytkę lub użyj route --reroute później. Etykiety są przenoszone tym samym wyszukiwaniem co agentee silk (wolne miejsce obok elementu, do 8 przebiegów i 3 prób na etykietę), uruchomionym na rozmieszczonym projekcie PCB w pamięci, więc projekt jest ładowany tylko raz, a nie raz na przebieg; labels_moved je liczy, a labels_failing wymienia te, które nie znalazły wolnego miejsca, dla agentee silk NAME --hide lub ręcznego przesunięcia.

Co gdzie trafia, od najsilniejszego, i dlaczego:

  • Złączniki (elementy z padami edge = true, overhang = true lub etykietą referencyjną J/P) trafiają na krawędzie płytki, równomiernie rozłożone na każdej krawędzi, ze stroną stykową na zewnątrz: linią krawędzi jest linia Dwgs.User footprintu obok tekstu mówiącego edge (oznaczenie PCB Edge w KiCad), inaczej zewnętrzna strona jego padów edge, inaczej jego pady plus min_part_to_edge dla elementu wystającego, inaczej jego courtyard plus min_body_to_edge. Złącznik RF (SMA, SMB, BNC, U.FL, MMCX, koncentryczny) i złącznik USB nigdy nie dzielą krawędzi, chyba że żaden inny podział nie pasuje, ponieważ szum USB 3 trafia w pasmo 2,4 GHz (Intel, „USB 3.0 Radio Frequency Interference Impact on 2.4 GHz Wireless Devices”, 2012). [place] edges przypina złącznik do krawędzi. Otwory montażowe trafiają w narożniki (najpierw przekątne), znaczniki fiducialne w wolne narożniki, z padami co najmniej 3 mm od krawędzi, z dala od szyn transportowych i zacisków (SMEMA Fiducial Mark Standard 3.1).
  • Ścieżka RF jest układana w linii prostej. Zaczynając od każdego złącznika z padem na sieci RF (klasa z impedance i bez diff_gap), układnik podąża po sieciach RF przez elementy, które niosą dwie lub więcej z nich i mają co najwyżej 16 pinów (bloki DC, tłumiki, przełączniki, LNA, baluny) i bierze najdłuższą ścieżkę kończącą się na innym złączniku lub na większym układzie z pinami RF; przełącznik z obejściem przechodzi przez wzmacniacz, a nie przez obejście. Gdy oba końce to złączniki, trafiają na przeciwległe krawędzie długiej osi płytki i przesuwają się wzdłuż nich na jedną linię, przez środek płytki, gdzie oba się mieszczą. Każdy element na ścieżce obraca się tak, aby jego pady wejściowe i wyjściowe leżały na tej linii, w kolejności, upakowane w stronę wejścia z co najwyżej 1,5 mm dodatkowego odstępu każdy, a reszta miejsca trafia na ostatni odcinek. Element dwu- lub trójpinowy z jednym padem na węźle ścieżki (przekaźnik ESD, dławik polaryzacji, kondensator szuntowy) siada obok linii na tym węźle, obrócony tak, aby jego pozostałe pady wskazywały na zewnątrz, wystarczająco blisko, aby jego pad RF spotkał ścieżkę, i wystarczająco daleko, aby jego pozostałe pady zachowały odstęp klasy; dwa szunty na jednym węźle trafiają na przeciwległe strony. Ścieżka jest ustalana przed rozmieszczeniem reszty wokół niej, a element, który wyszedłby z płytki lub trafił na inny, zostawia się ogólnemu układnikowi.
  • Duże układy (BGA, obudowy z 16 lub więcej wyprowadzeniami o powierzchni powyżej 25 mm2, w pozostałych przypadkach element o największej liczbie wyprowadzeń) są przyciągane do środka płytki i utrzymywane w odległości off_centre od niego, gdzie mają miejsce na wyprowadzenie pinów ze wszystkich stron (Xilinx UG1099, Recommended Design Rules and Strategies for BGA Devices) i z dala od krawędzi oraz otworów montażowych, gdzie manipulowanie i wycinanie z panelu wyginają płytkę i pękają spawy BGA (wytyczne odkształceń IPC/JEDEC-9704A).
  • Klaster powstaje z listy połączeń: każdy układ scalony przejmuje elementy biernego, których sieci sygnałowe docierają tylko do niego, kondensatory między zasilaniem, którego używa, a masą (najbliższy układ scalony na schemacie, gdy kilka dzieli to zasilanie, rozłożone na jego piny zasilania) oraz jego kryształ. Kondensatory odsprzęgające klastra umieszcza się obok pinu zasilania, który obsługują (Analog Devices MT-101, Decoupling Techniques; TI SCAA082, High-Speed Layout Guidelines), lub pod nim na drugiej stronie z --side both (Xilinx UG483, 7 Series PCB Design Guide umieszcza małe kondensatory pod BGA); kryształ obok jego pinów zegara (ST AN2867, Oscillator design guide). Klaster umieszcza się tak, aby zminimalizować ważoną długość HPWL: sieci klas impedancji lub par, [[pairs]] i [[interfaces]] liczone są trzykrotnie, sieci zasilania i masy wcale (to są płaszczyzny).
  • Przełącznik (układ scalony z cewką na jednym z pinów, którego drugi koniec to zasilanie) trzyma swoją cewkę i kondensatory wejściowe ciasno przy sobie, a przełączniki zachowują 8 mm (środek do środka) od wrażliwych elementów: kryształów i elementów na sieciach pojedynczych impedancji (RF) (TI SNVA021, AN-1149 Layout Guidelines for Switching Power Supplies; Linear Technology AN139, Power Supply Layout and EMI).
  • Gorące elementy (źródła 0,25 W lub więcej w symulacji termicznej tego projektu PCB oraz duże obudowy powyżej 49 mm2) są rozsuwane na 10 mm, aby ich ciepło się nie nakładało (TI SNVA419, AN-2020 Thermal Design by Insight, not Hindsight; IPC-2221B, zarządzanie termiczne). Gdy gorące elementy, każdy powiększony o hot_distance, zajmują co najwyżej ćwierć jednej krawędzi płytki, ich courtyards muszą również zachowywać odległość hot_distance, jak mierzy to placement-hot-parts-close (element, który nie mieści się nigdzie indziej, odrzuca regułę); na ciasniejszej płytce wygrywa długość przewodów. hot_spread w wyjściu podaje ten udział i czy reguła się zastosowała.
  • Kondensatory ceramiczne 0805 lub większe pozostają poza flex_zone, a mniejsze wewnątrz niego leżą wzdłuż najbliższej krawędzi, narożnika lub otworu montażowego (wytyczne montażu MLCC Murata i TDK dotyczące wyginania płytki; Knowles). Strefę mierzy się tak, jak mierzą to kontrole mlcc-flex-zone, od dwóch padów do obrysu, wycięć płytki i otworów wierconych na otwory montażowe; ostatni przebieg obraca lub przesuwa (do 12 mm) każdy kondensator, który nadal znajduje się w złym miejscu. Każda obudowa zachowuje min_body_to_edge od obrysu i od każdego otworu [[outline.cutouts]] pliku płytki, który jest poza płytką, courtyards nigdy nie nachodzą na siebie po jednej stronie (elementy przez otwór blokują obie strony) i nic nie wchodzi w wielokąt [place] keepouts (courtyards IPC-7351B: courtyard to najmniejsza powierzchnia, której potrzebują element i jego wzór padów).
  • Obrót podąża za głównymi sieciami: każdy element przyjmuje obrót o ćwierć obrotu, który przynosi jego pady najbliżej innych końców jego sieci, a elementy biernego klastra dzielą jedną oś.

Metoda: każdy klaster (układ scalony i jego członkowie) oraz każdy luźny element staje się blokiem o powierzchni jego elementów. Układ spektralny ważonego grafu klawiszy bloków (jego dwa najniższe nietrywialne wektory własne, według rzędu) ustawia je na płytce. Następnie 24 rundy naprzemiennie wykonuje rozwiązanie kwadratowe długości przewodów i krok rozpraszania: rozwiązanie przyciąga piny, a nie środki, dla układów scalonych i wybiera obrót o ćwierć obrotu każdego układu scalonego w każdej rundzie (wg długości przewodów, a w późniejszych rundach również wg przecięć jego sieci dwupinowych); złącza są przyciągane do najbliższej krawędzi, a duże układy scalone do środka; krok rozpraszania dzieli wolną powierzchnię płytki (wewnątrz obrysu i z dala od wycięć, stref keepout i umieszczonych elementów) kolejno wzdłuż dłuższej krawędzi, przydzielając każdemu blokowi obszar o wielkości jego powierzchni, a każda runda mocniej przyciąga bloki do swoich obszarów. Złącza są następnie przypisywane do krawędzi (każde przypisanie próbowane dla do siedmiu złączy, zachłannie powyżej tego) i przesuwane wzdłuż nich, równo z obrysem tam, gdzie przebiega w tym punkcie (nacięcie lub stopka liczy się jako krawędź), próbując najpierw inne najbliższe krawędzie, gdy na przypisanej nie ma wolnego miejsca, i rozwiązanie uruchamiane jest ponownie z nimi zablokowanymi. Legalizacja umieszcza każdy klaster jako całość: jego kotwica w każdym obrocie o ćwierć obrotu (dla układów scalonych) i pięć przesunięć o jedną trzecią szerokości klastra, jego członkowie wokół niej, zachowując najtańsze wg długości przewodów i przecięć; każdy element trafia do najbliższego miejsca na siatce 0,05 mm, gdzie jego courtyards są wolne od wszystkiego i zachowują reguły krawędzi. Całe klaster są następnie umieszczane ponownie obrócone lub przesunięte, a pary klastrów układów scalonych o podobnym rozmiarze są zamieniane, gdy obniża to koszt. Następuje doskonalenie przez symulowane wyżarzanie (przesunięcia, obroty o ćwierć obrotu, zamiany elementów o tym samym rozmiarze, przemieszczenia całych klastrów, odwrócenia stron z --side both; 1500 ruchów na element, a następnie 500 dodatkowych w niskiej temperaturze), oceniane przez ważoną HPWL, przecięcia sieci dwupinowych (4 za przecięcie) i powyższe reguły jako kary. Osiem startów (osiem odbić układu spektralnego) jest legalizowanych na równoległych wątkach, a trzy najtańsze przechodzą do ruchów klastrów i wyżarzania, więc wynik zależy tylko od plików i --seed, a nie od liczby wątków.

Elementy trzymają się z dala od własnego sitodruku płytki: linie [[graphics]] na warstwie sitodruku, tekst sitodruku z locked = true i [[artwork]] sitodruku blokują courtyards po ich stronie (element, który nie mieści się nigdzie indziej, może je nadal przykrywać). Tekst sitodruku, który nie jest zablokowany, nie blokuje elementów: po umieszczeniu każdy taki tekst, który element (lub jego zarezerwowana etykieta) przykrywa, przesuwa się do najbliższego wolnego miejsca na płytce w promieniu 10 mm, z dala od elementów, etykiet, zablokowanego sitodruku i innych tekstów; texts_moved wymienia przesunięcia zapisane z powrotem do [[graphics]], a texts_stuck teksty bez wolnego miejsca. Złącza, otwory montażowe i punkty referencyjne rezerwują również etykietę, po zewnętrznej stronie elementu lub obróconą do wewnętrznej, i idą bez niej, gdy żadna nie mieści się w miejscu, które zajmuje element. Etykieta referencyjna każdego elementu również potrzebuje miejsca: gdy etykiety zajmują co najwyżej ćwierć wolnej powierzchni płytki, pole o wielkości tekstu referencyjnego (0,2 mm wokół niego, w miejscu referencyjnym footprintu, przesunięte z dala od własnych padów i sitodruku) jest utrzymywane wolne jak courtyard, a place zapisuje to miejsce jako label.at; na pełniejszej płytce z wolnym miejscem nakładanie się tych pól na inne elementy i etykiety to mały koszt w wyżarzaniu, a na pełnej płytce etykiety zostawia się przebiegowi etykiet (agentee silk --hide dla tych bez miejsca).

Na kopii examples/sdr z usuniętymi ścieżkami i przelotkami (251 elementów, 65 x 45 mm), tylko góra, nasiona 1 do 4 dają 3276 do 3436 mm HPWL sygnału i 261 do 293 przecięć, w około 2 s obliczeń na 4 rdzeniach (około 6 s CPU) plus wczytywanie i przebieg etykiet. Z --side both dają około 1955 do 2025 mm i 150 do 165 przecięć.

docs/format.md · Markdown dla agentów