agentee

Schema e layout

Sbroglio automatico

agentee route, tie, tune e neck: routing su griglia che mantiene larghezze di classe, distanze e vie, collegamenti ai piani, abbinamento di lunghezza e restringimenti.

agentee route NAME --nets 'FX_D*,SPI_*' --layers F.Cu,In2.Cu,B.Cu (MCP route) instrada il ratsnest dei net indicati su una griglia (--grid, predefinito 0,05 mm) e aggiunge le piste e le via al file di layout come normali [[tracks]] e [[vias]], così puoi modificarle in seguito. Rispetta per ogni classe di net la larghezza, il distacco e i layers rispetto a ogni piazzola, pista, via, foro e bordo della scheda; dimensiona la via per ogni classe in base alla propria piazzola, al foro e ai layer (una microvia passa dove una via passante non passa, e una microvia può stare accanto a una via sepolta su altri layer); mantiene le nuove via a min_hole_to_hole da ogni foro la cui estensione condivide un dielettrico con il loro e i loro fori a min_via_hole_to_copper dalle piazzole, piste e via degli altri net; le tiene lontane dalle piazzole SMD di ogni net, anche del proprio (il rame della via non può toccarne una, via-cuts-pad, e il foro resta a min_hole_to_smd_pad da essa, hole-to-smd-pad, a meno che --via-in-pad, MCP via_in_pad, non permetta di posizionarla interamente dentro una piazzola SMD del proprio net con un foro di al massimo max_filled_via_drill); usa le via della classe per cambiare layer, la meno costosa la cui estensione copra entrambi i layer (--via uv-top,core o MCP via per scegliere da altri nomi, --via-cost in mm di pista, predefinito 3, moltiplicato per il cost della via); addebita --bend-cost mm di pista per ogni curva di 45 gradi (predefinito 0,1, tre volte tanto per 90); e non sposta mai ciò che è già presente a meno che non sia indicato --reroute, che prima elimina le piste e le via dei net indicati. Una connessione che non trova un percorso libero rimuove i net instradati che incrocia o i cui fori di via porterebbe entro min_hole_to_hole dal proprio (fori la cui estensione condivide un dielettrico), ricorda il punto come congestionato e quei net tornano in coda. La ricerca procede in direzioni di 45 gradi e addebita ogni curva, quindi i percorsi escono come tratti rettilinei con curve di 45 gradi; in seguito i tratti vengono tirati in tensione con dogleg a due segmenti di 45 gradi e ogni angolo di 90 gradi rimasto viene smussato dove è possibile. Solo lo stub verso il centro di una piazzola fuori griglia può stare a un altro angolo. Dove la larghezza della classe non entra in una piazzola terminale (più larga del lato minore della piazzola, o troppo vicina alle piazzole vicine per mantenere il distacco), l'instradamento si restringe: la pista della larghezza di classe si ferma prima della piazzola e una voce separata di [[tracks]] con una width esplicita va dritta al centro della piazzola, lunga al massimo la neckdown di classe e larga almeno min_track_width. La sua larghezza è la più piccola tra la larghezza di classe, il lato minore della piazzola e la più larga che mantiene il distacco, arrotondata per difetto a 0,01 mm (o esattamente min_track_width dove l'arrotondamento la porterebbe sotto e la larghezza non arrotondata non lo fa); la pista larga inizia al primo punto lontano dalla piazzola dove la sua larghezza piena mantiene il distacco (e, per una piazzola più stretta della pista, fuori dalla piazzola). Piazzole di un net che si toccano, come una piazzola termica costruita da più voci di piazzola, contano come una singola piazzola larga. Le coppie instradate con --pairs non si restringono. Una connessione di un net che ha già rame fresco parte da quel rame. Una volta che tutto è a posto, ogni connessione instradata che usa via viene riprovata su un layer alla volta con il resto fermo, e l'instradamento a un layer la sostituisce se è lungo al massimo il 25% più 1 mm. Poi le via di connessioni parallele vicine che cambiano layer in prossimità l'una dell'altra vengono scivolate lungo le proprie piste su una riga o colonna comune sulla griglia, dove il punto è legale e la connessione mantiene la sua lunghezza (le gambe di coppia tenute da --pairs e i net con più connessioni restano fermi). Un net in un'interfaccia con max_vias mantiene la traccia (ogni net della corsia, attraverso i componenti in serie) entro il limite: un instradamento con troppe via viene riprovato con via più costose, poi su un layer, e fallisce con la ragione se nessuno dei due va bene. Il secondo net di una coppia viene attirato verso il partner alla distanza di coppia; --pairs prova prima a instradare entrambe le metà insieme come una singola pista accoppiata. Quando poche connessioni falliscono, instradale di nuovo insieme con i net circostanti e --reroute, così l'instradatore può rimuovere e riordinare l'intera area, oppure passa a --grid 0.025. --dry-run riporta senza scrivere. Instrada prima a mano i net importanti, poi lascia che l'instradatore riempia il resto, una classe alla volta.

Un net con una voce [[zones]] è un net di piano. Un glob in --nets non lo mai, quindi --nets '*' instrada ogni segnale e alimentazione che non ha un'area di rame e lascia il ground ai piani; indica il net esattamente per instradarlo comunque con piste. Le via posizionate dalle regole [[stitching]] non sono ostacoli per l'instradatore: la regola le posiziona di nuovo attorno al nuovo rame.

agentee tie NAME [--nets GND] [--dry-run] (MCP tie) collega ogni piazzola SMD di un net di piano al layer più vicino coperto dalla sua area con uno stub corto e una via accanto alla piazzola, che è il modo in cui le piazzole di ground e alimentazione si uniscono a un piano invece che con piste tra loro. La via va sul lato della piazzola lontano dal centro del componente, il più vicino possibile: il suo rame a distanza da ogni piazzola SMD (anche la propria, quindi nessuna via-in-pad), il suo foro a min_hole_to_smd_pad da esse, a min_hole_to_hole da altri fori, a min_via_hole_to_copper e al distacco di classe da altri net, a min_copper_to_edge dal contorno, e lo stub a distanza da altri net sul layer della piazzola. Prova 16 direzioni, la più vicina a quella verso l'esterno per prima, fino a 1,2 mm oltre la piazzola. Una piazzola che ha già una via del suo net entro 0,8 mm dal suo bordo viene lasciata come è; le piazzole passanti e le sfere BGA (escape le gestisce) vengono saltate, e una piazzola senza un punto legale viene elencata sotto failed. Gli stub e le via vengono aggiunti come normali [[tracks]] e [[vias]].

agentee neck NAME [--nets 'VBUS,RF_*'] [--taper] [--dry-run] (MCP neck) restringe il rame già presente. Esamina entrambe le estremità di ogni pista dei net indicati (di default tutti) che terminano all'interno di una piazzola del proprio net sul proprio layer, e seleziona quelle che sono più larghe del lato minore della piazzola, o la cui larghezza completa viola la clearance entro la lunghezza neckdown della classe (più una larghezza di pista) dalla piazzola. L'estremità corrispondente viene tagliata: la pista mantiene la sua larghezza dal taglio verso l'esterno e una nuova voce [[tracks]] con una width esplicita corre dal vecchio punto di estremità nella piazzola al taglio, lungo il vecchio percorso. La larghezza del collo è il minimo tra la larghezza della pista, il lato minore della piazzola e la larghezza massima che mantiene la clearance lungo il collo, arrotondata per difetto a 0,01 mm (o esattamente min_track_width come sopra). Il taglio è il primo punto, a passi di 0,01 mm, in cui la larghezza completa mantiene la clearance per i successivi neckdown più una larghezza di pista (e, per una piazzola più stretta della pista, si trova fuori dalla piazzola); un collo non è mai più lungo di neckdown e non è mai inferiore a min_track_width, altrimenti l'estremità viene elencata sotto failed con il motivo e lasciata invariata. Una piazzola costruita da più voci di piazzola dello stesso net che si toccano conta come una singola piazzola larga. --taper riporta la larghezza su una breve catena invece che su un singolo collo: dopo il collo stretto seguono al massimo altre due voci, ciascuna a un terzo della distanza dalla larghezza del collo alla larghezza della pista, per una lunghezza complessiva non superiore a neckdown (tre volte il collo, al massimo). Il rame diventa solo più stretto, quindi non possono comparire nuovi errori di clearance; il file viene modificato in loco (ogni altra riga è mantenuta) e i riempimenti delle aree di rame memorizzati vengono aggiornati. Il rapporto elenca ogni collo (indice della pista, net, piazzola, motivo, larghezza, lunghezza, voci) e conta le piste modificate e aggiunte.

Le coppie e le regole di lunghezza sono nel 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 member

La verifica riporta lo skew di ogni coppia in mm e ps (dalla permittività effettiva dello strato), un tratto della coppia eseguito con il passo sbagliato e le coppie che passano meno dell'80% della loro lunghezza affiancate. I gruppi di match indicano quale net è corta o lunga e di quanto. Una coppia che attraversa componenti bipin in serie, come i condensatori AC su una linea USB, viene misurata da capo a coda: il suo skew è la somma su ogni coppia che unisce, riportata come FX_TX1_P+SS_TX1_P/FX_TX1_N+SS_TX1_N.

docs/format.md · Markdown per agenti