Schema e layout
Posizionamento automatico
agentee place: connettori sui bordi, chip grandi al centro, condensatori di disaccoppiamento ai loro pin, poi legalizzazione e raffinamento.
agentee place NAME [--parts 'U*,C1?'] [--keep-placed] [--side F|B|both] [--seed N] [--dry-run] (MCP place) posiziona i componenti dello schema del layout all'interno del contorno della scheda e scrive per ciascuno at, rotation e side nella sua voce [[footprints]] (aggiungendo voci per nuovi componenti, rimuovendo at da un'etichetta spostata), sposta le etichette di riferimento che ora non passano il controllo serigrafia, quindi aggiorna i riempimenti memorizzati. È un avvio rapido per un'intera scheda: posiziona, guarda, poi sposta a mano ciò che conta e blocca. --parts posiziona solo i componenti corrispondenti e lascia gli altri dove sono; --keep-placed lascia ogni componente che ha già una posizione; locked = true in una voce [[footprints]] non viene mai spostato. --side both permette ai condensatori di disaccoppiamento di una BGA di andare sotto di essa sul retro e ai passivi di traboccare sul retro quando il fronte è pieno; il default mette tutto sul fronte. Il risultato dipende solo dai file e da --seed, quindi un seed diverso è un avvio diverso. Segnala la lunghezza filo di semiperimetro (HPWL) dei net di segnale e di ogni net, le intersezioni del ratsnest, le sovrapposizioni dei courtyard e la distanza media e peggiore di disaccoppiamento, per la posizione da cui è partito (quando ogni componente ne aveva una) e per la sua, oltre ai cluster costruiti e al bordo a cui è andato ogni connettore. Le piste e le via già nel file restano dove sono; posiziona una scheda non instradabile, oppure route --reroute dopo. Le etichette vengono spostate con la stessa ricerca di agentee silk (un punto libero accanto al componente, fino a 8 passaggi e 3 tentativi per etichetta), eseguita sul layout posizionato in memoria, quindi il progetto viene caricato una volta in più, non una volta per passaggio; labels_moved le conta e labels_failing nomina quelle lasciate senza punto libero, per agentee silk NAME --hide o uno spostamento a mano.
Cosa va dove, dal più forte al più debole, e perché:
- I connettori (componenti con piazzole
edge = true,overhang = true, o un riferimentoJ/P) vanno sui bordi della scheda, distribuiti uniformemente su ogni bordo, con il lato di accoppiamento verso l'esterno: la linea del bordo è la lineaDwgs.Userdel footprint accanto a un testo che diceedge(il segnoPCB Edgedi KiCad), altrimenti il lato esterno delle sue piazzoleedge, altrimenti le sue piazzole piùmin_part_to_edgeper un componente a sbalzo, altrimenti il suo courtyard piùmin_body_to_edge. Un connettore RF (SMA, SMB, BNC, U.FL, MMCX, coassiale) e un connettore USB non condividono mai un bordo a meno che nessun'altra divisione non funzioni, poiché il rumore USB 3 cade nella banda dei 2,4 GHz (Intel, "USB 3.0 Radio Frequency Interference Impact on 2.4 GHz Wireless Devices", 2012).[place] edgesfissa un connettore a un bordo. I fori di montaggio vanno negli angoli (prima la diagonale), i fiduciali negli angoli liberi con le loro piazzole a 3 mm o più dal bordo, liberi dai binari del trasportatore e dalle molle (SMEMA Fiducial Mark Standard 3.1). - Un percorso RF è disposto in linea retta. Partendo da ogni connettore con una piazzola su un net RF (una classe con
impedancee senzadiff_gap), il posizionatore segue i net RF attraverso i componenti che ne portano due o più e hanno al massimo 16 pin (blocchi DC, attenuatori, switch, LNA, balun), e prende il percorso più lungo che termina in un altro connettore o in un chip più grande con pin RF; uno switch con bypass passa attraverso l'amplificatore, non il bypass. Quando entrambe le estremità sono connettori, vanno su bordi opposti dell'asse lungo della scheda e scivolano lungo di essi su una linea, attraverso il centro della scheda dove entrambi stanno. Ogni componente sul percorso ruota in modo che le sue piazzole di ingresso e uscita stiano su quella linea, in ordine, compresse verso l'ingresso con al massimo 1,5 mm di spazio extra ciascuna, e il resto dello spazio va all'ultimo tratto. Un componente a due o tre pin con una piazzola su un nodo del percorso (un clamp ESD, un choke di polarizzazione, un condensatore a shunt) sta accanto alla linea a quel nodo, ruotato in modo che le sue altre piazzole puntino lontano, abbastanza vicino che la sua piazzola RF incontri la pista e abbastanza lontano che le sue altre piazzole mantengano la distanza della classe; due shunt a un nodo vanno su lati opposti. Il percorso è fissato prima che il resto venga posizionato attorno ad esso, e un componente che lascerebbe la scheda o atterrebbe su un altro è lasciato al posizionatore generale. - I chip grandi (BGA, confezioni con 16 o più pin su oltre 25 mm2, altrimenti il componente con il maggior numero di pin) vengono posizionati al centro della scheda e mantenuti entro
off_centreda esso, dove hanno spazio per far uscire i pin su tutti i lati (Xilinx UG1099, Recommended Design Rules and Strategies for BGA Devices) e lontani dai bordi e dai fori di montaggio, dove la manipolazione e la separazione della scheda piegano il PCB e crepano le giunzioni BGA (linee guida di sollecitazione IPC/JEDEC-9704A). - I cluster derivano dalla netlist: ogni IC prende i passivi i cui net di segnale lo raggiungono da soli, i condensatori tra un'alimentazione che utilizza e la massa (l'IC più vicino nello schema quando più IC condividono l'alimentazione, distribuiti sui suoi pin di alimentazione) e il suo cristallo. I condensatori di disaccoppiamento di un cluster si trovano accanto al pin di alimentazione che servono (Analog Devices MT-101, Decoupling Techniques; TI SCAA082, High-Speed Layout Guidelines) o sotto di esso sul retro con
--side both(Xilinx UG483, 7 Series PCB Design Guide, posiziona i piccoli condensatori sotto il BGA); il cristallo si trova accanto ai suoi pin di clock (ST AN2867, Oscillator design guide). I cluster vengono posizionati per minimizzare l'HPWL pesato: i net di una classe di impedenza o di coppia,[[pairs]]e[[interfaces]]contano tre volte, i net di alimentazione e massa non contano affatto (sono piani). - Un convertitore (un IC con un induttore su uno dei suoi pin la cui altra estremità è un'alimentazione) mantiene il suo induttore e i condensatori di ingresso stretti contro di esso, e i convertitori mantengono 8 mm (da centro a centro) dai componenti sensibili: cristalli e componenti su net di impedenza a singolo terminale (RF) (TI SNVA021, AN-1149 Layout Guidelines for Switching Power Supplies; Linear Technology AN139, Power Supply Layout and EMI).
- I componenti caldi (fonti di 0,25 W o più in una simulazione termica di questo layout, e confezioni grandi oltre 49 mm2) vengono spinti a 10 mm di distanza in modo che il loro calore non si accumuli (TI SNVA419, AN-2020 Thermal Design by Insight, not Hindsight; IPC-2221B, gestione termica). Dove i componenti caldi, ciascuno ingrandito di
hot_distance, occupano al massimo un quarto di un lato della scheda, i loro courtyard devono anche mantenerehot_distancedi distanza, come misuraplacement-hot-parts-close(un componente che non si adatta altrove abbandona la regola); su una scheda più stretta la lunghezza dei fili prevale.hot_spreadnell'output fornisce quella quota e se la regola è stata applicata. - I condensatori ceramici di 0805 o più grandi restano fuori da
flex_zone, e quelli più piccoli all'interno di essa si trovano lungo il bordo, l'angolo o il foro di montaggio a cui sono più vicini (linee guida di montaggio MLCC di Murata e TDK sulla flessione della scheda; Knowles). La zona viene misurata come la misurano i controllimlcc-flex-zone, dalle due piazzole al contorno, alle intagli della scheda e ai fori di trapano dei fori di montaggio; un'ultima passata ruota o sposta (fino a 12 mm) qualsiasi condensatore ancora nel posto sbagliato. Ogni corpo mantienemin_body_to_edgedal contorno e da ogni foro di[[outline.cutouts]]del file della scheda, che è fuori dalla scheda, i courtyard non si sovrappongono mai su un lato (i componenti through-hole bloccano entrambi i lati) e nulla entra in un poligono[place] keepouts(courtyard IPC-7351B: il courtyard è l'area minima di cui ha bisogno un componente e il suo land pattern). - La rotazione segue i net principali: ogni componente prende il quarto di giro che porta le sue piazzole più vicine alle altre estremità dei suoi net, e i passivi di un cluster condividono un asse.
Il metodo: ogni cluster (un IC e i suoi membri) e ogni componente sciolto diventa un blocco con l'area dei suoi componenti. Un layout spettrale del grafo a cliques pesato dei blocchi (i suoi due autovalori non banali più bassi, per rango) li ordina sulla scheda. Poi 24 round alternano una risoluzione della lunghezza dei fili quadratica e un passo di dispersione: la risoluzione tira i pin, non i centri, per i chip, e sceglie il quarto di giro di ogni chip ogni round (per lunghezza dei fili, e nei round successivi anche per gli incroci dei suoi net a due pin); i connettori vengono tirati sul loro bordo più vicino e i chip grandi al centro; il passo di dispersione bisezza l'area libera della scheda (dentro il contorno e libera da intagli, keepout e componenti posizionati) a turno lungo il suo lato più lungo, dando a ogni blocco una regione delle dimensioni della sua area, e ogni round tira i blocchi più forte verso le loro regioni. I connettori vengono poi assegnati ai bordi (ogni assegnazione provata fino a sette connettori, greedy oltre) e scivolati lungo di essi, a filo con il contorno dove corre in quel punto (un intaglio o un gradino conta come bordo), provando prima gli altri bordi più vicini quando nessun posto su quello assegnato è libero, e la risoluzione viene eseguita di nuovo con loro fissati. La legalizzazione posiziona ogni cluster come un intero: il suo ancoraggio a ogni quarto di giro (per i chip) e cinque spinte di un terzo della larghezza del cluster, i suoi membri intorno a esso, mantenendo il più economico per lunghezza dei fili e incroci; ogni componente va al punto più vicino su una griglia di 0,05 mm dove i suoi courtyard sono liberi da tutto e mantiene le regole del bordo. I cluster interi vengono poi posizionati di nuovo ruotati o spinti, e le coppie di cluster di chip di dimensioni simili vengono scambiate, dove ciò abbassa il costo. Segue un affinamento con ricottura simulata (spostamenti, quarti di giro, scambi di componenti di stessa dimensione, movimenti di cluster interi, capovolgimenti di lato con --side both; 1500 mosse per componente, poi altre 500 a bassa temperatura), valutato da HPWL pesato, incroci di net a due pin (4 per incrocio) e le regole sopra come penalità. Otto partenze (le otto riflessioni del layout spettrale) vengono legalizzate su thread paralleli, e i tre più economici passano ai movimenti di cluster e alla ricottura, in modo che il risultato dipenda solo dai file e da --seed, non dal numero di thread.
I componenti restano lontani dalla serigrafia della scheda stessa: le linee [[graphics]] su un layer di serigrafia, il testo di serigrafia con locked = true e la [[artwork]] di serigrafia bloccano i courtyard sul loro lato (un componente che non si adatta altrove può comunque coprirli). Il testo di serigrafia non bloccato non blocca i componenti: dopo il posizionamento, ogni testo di questo tipo coperto da un componente (o dalla sua etichetta riservata) si sposta al punto libero più vicino sulla scheda entro 10 mm, libero da componenti, etichette, serigrafia bloccata e altri testi; texts_moved elenca le mosse scritte di nuovo in [[graphics]] e texts_stuck i testi senza punto libero. I connettori, i fori di montaggio e i fiduciali riservano anche un'etichetta, sul lato esterno del componente o ruotata verso il lato interno, e ne vanno senza dove nessuna si adatta nel punto che il componente occupa. L'etichetta di riferimento di ogni componente ha bisogno di spazio anche: dove le etichette occupano al massimo un quarto dell'area libera della scheda, una scatola delle dimensioni del testo di riferimento (0,2 mm intorno ad esso, nel punto di riferimento del footprint spinto libero dalle sue piazzole e serigrafia) viene mantenuta libera come un courtyard, e place scrive quel punto come label.at; su una scheda più piena con spazio rimasto, la sovrapposizione di quelle scatole con altri componenti ed etichette è un piccolo costo nella ricottura, e su una scheda piena le etichette sono lasciate alla passata delle etichette (agentee silk --hide per quelle senza punto).
Su una copia di examples/sdr con piste e via rimosse (251 componenti, 65 x 45 mm), solo lato superiore, i semi da 1 a 4 danno da 3276 a 3436 mm di HPWL di segnale e da 261 a 293 incroci, in circa 2 s di risoluzione su 4 core (circa 6 s di CPU) più il caricamento e il passaggio delle etichette. Con --side both danno circa da 1955 a 2025 mm e da 150 a 165 incroci.