Schema e layout
Layout
Il file *.pcb.toml: posizionamenti, piste, vie, fanout, stitching, aree di rame, fori, serigrafia, artwork, accesso di test e filigrana di versione.
Posiziona i footprint dello schema sulla scheda e li instrada.
name = "lna"
board = "lna"
schematic = "lna"
[[footprints]]
ref = "U1"
at = [13.0, 8.05]
rotation = 90 # degrees, counter-clockwise
# side = "bottom" # mirrors the footprint and swaps F./B. layers
label = { at = [9.9, 7.4], rotation = 90 } # move the silk reference; size = 0.8, hide = true
# mlcc = false # this part is not a ceramic capacitor, over the footprint's `mlcc`
# locked = true # `agentee place` never moves it
[[tracks]]
net = "RF_OUT"
layer = "F.Cu"
points = [[18.68, 10], [25.5, 10]]
# width = 0.36 # default: the net class width
[[vias]]
net = "GND"
at = [7.2, 8.9]
# via = "std" # a [[vias]] name from the board, default the first class via
# count = 6 # a row, like pads
# pitch = [1.2, 0]
[[fanouts]] # a via in every connected pad of a BGA
ref = "U3" # * and ? globs: ref = "*" with nets = [...] fans out every plane pad
# via = "bga" # or a list, the first reaching the pad layer; default the class vias
# skip_rings = 2 # leave the two outer rings for escape on the outer layer
# always = ["GND", "LVDS_*"] # nets that get a via even in those rings, globs allowed
# skip = ["A1", "B7"] # pads to leave alone
# skip_at = [[4.5, 3.0]] # no via at these spots (the viewer adds one when you edit a via)
# nets = ["GND", "3V3"] # only pads on these nets, globs allowed
# exclude = ["C2?", "J1"] # refs to leave out when ref is a glob; a glob never
# matches test points, a probe pad keeps no via
[[stitching]] # ground vias wherever they clear every other net and silk text
net = "GND"
# via = "std" # default the net's first class via
# pitch = "2.5mm" # grid pitch, or the spacing along a fence (default 1mm)
# outline = [[x, y], ...] # default the board outline
# margin = "0.6mm" # extra distance from the board edge
# fence = ["RF_*"] # instead of a grid: a row either side of these nets' tracks
# offset = "0.5mm" # fence row distance from the track centre, default just past
# the class coplanar gap
# skip_at = [[4.5, 3.0]] # no via at these spots (the viewer adds one when you edit a via)
[[zones]]
net = "GND"
layers = ["F.Cu", "In1.Cu", "In2.Cu", "B.Cu"]
# outline = [[x, y], ...] # default: the board outline
# clearance = 0.25 # default: the net class clearance
# priority = 1 # higher fills first; other nets' zones on the layer pour around it
# min_island_area = 2.0 # mm2; a piece touching one item of the net is kept only this big
# pad_connection = "relief" # solid (default) | relief: pads of the net join the pour by four
# spokes across a gap, so they heat like a track-fed pad;
# none: the pour keeps its clearance from the pads. A pad's
# own zone_connect wins, and BGA balls (16 or more round SMD
# pads) stay solid, since spokes starve a ball of solder heat
# relief_tht_only = true # relief on through-hole pads only, SMD pads solid (KiCad's
# thru_hole_only)
# relief_gap = "0.3mm" # default: the zone clearance
# spoke_width = "0.3mm" # default: the net class track width, at least min_width
[[cutouts]] # keep zones off an area, e.g. under an SMA centre pin;
# a hole through the board is [[outline.cutouts]] in the board file
layers = ["In1.Cu"]
points = [[0, 9], [5.4, 9], [5.4, 11], [0, 11]]
[[graphics]] # board text and lines, same keys as footprint graphics
kind = "text"
layer = "F.SilkS" # F.SilkS, B.SilkS, F.Fab or B.Fab
at = [7.4, 7.6]
# locked = true # `agentee place` never moves it
text = "RF IN"
size = 1.0 # mm, the fab minimum is in the board rules
[[artwork]] # a filled logo or icon
layer = "F.SilkS"
icon = "arrow" # built in: arrow, warning, ground, antenna, lightning, pin1, ce
# file = "logo.svg" # or any SVG, relative to this file
at = [7.4, 6.3] # centre of the artwork
height = 0.8 # mm, the width follows the aspect ratio
# rotation = 90
[test] # in-circuit and flying probe test access, all optional
# nets = ["3V3", "*RST*"] # nets that need a probe, globs, any case; default below
# exclude = ["LED_*"] # nets to leave out
# side = "B" # probe side, F or B
# through_holes = true # exposed plated through-hole pads count as access
# vias = false # vias count as access; opens the probe side mask over every via
# min_test_pad = "1.0mm" # smallest test pad
# min_test_pad_pitch = "1.27mm" # centre to centre between test pads
# min_test_pad_to_body = "1.0mm" # to another part's body on the probe side
# min_test_pad_to_edge = "3.0mm" # to the board edge and tooling holes
[place] # optional, for `agentee place`
# edges = { J1 = "left", J2 = "right" } # pin a connector to an edge: left, right, top
# (smallest y) or bottom
# keepouts = [[[0, 0], [8, 0], [8, 6], [0, 6]]] # polygons no courtyard may enter
[watermark] # optional: where the agentee version watermark goes
# at = [30, 21] # centre of the text, default a clear spot found by check
# layer = "B.SilkS" # default B.SilkS, else F.SilkS
# rotation = 90 # default 0, or 90 where only a tall gap is clearOgni layout porta il testo di serigrafia agentee vX.Y.Z-HASH: la versione di agentee che ha costruito il pacchetto e l'hash git breve della sua sorgente, con -dirty quando l'albero aveva modifiche non committe, o unknown fuori da git. Viene sempre tracciato e non può essere disattivato. È alto min_silk_text_height, centrato e di default va su B.SilkS (F.SilkS quando il lato inferiore non ha spazio o la scheda non ha serigrafia inferiore) nel punto libero più vicino all'angolo in basso a sinistra della scheda, ruotato di 90 gradi se solo un intervallo alto lo consente. Un punto libero tiene fuori piazzole, via, altri testi di serigrafia e linee, artwork e corpi dei componenti, e resta min_copper_to_edge dentro il contorno. Il visualizzatore, il render e i disegni di assemblaggio lo mostrano, e fab-notes.txt lo nomina. Quando nessun punto è libero, la verifica riporta un errore watermark con la dimensione da liberare e il punto meno affollato, e il produttore rifiuta; libera spazio lì o imposta [watermark] at (più layer, rotation) tu stesso. Un punto [watermark] che non è libero è un errore watermark che nomina cosa colpisce, e uno stackup senza strato kind = "silk" è un errore watermark che ne richiede uno.
Accesso ai test: di default i net che richiedono una sonda sono i net di alimentazione (una classe con current, oppure un nome come 3V3, 1V8, +5V, VCC*, VDD*, VBUS*, VBAT*, VIN*, VSYS*), il ground (GND, *GND, GND*) e i net con nomi come *RST*, *RESET*, *EN*, *PG*, *CLK*, *TX*, *RX*, *SCL*, *SDA*, *SWD*, *TCK*, *TMS*, *TDI*, *TDO*. I valori di default escludono i nodi di commutazione e i net di feedback dei regolatori, soft-start e riduzione del rumore (SW*, *_SW, LX*, FB*, SS*, NR*, confrontati sull'intero nome o sull'ultimo segmento dopo /), anche se la loro classe è di alimentazione: la capacità della sonda e lo stub verso la piazzola accoppiano il rumore di commutazione in un partitore di feedback, rallentano un soft-start o un filtro di rumore, e uno stub su un nodo di commutazione irradia. nets sostituisce quell'elenco (dichiara lì un net per sondarlo comunque) e exclude rimuove i net dall'elenco. Un punto di test è un componente con riferimento TP e un numero, oppure un footprint chiamato TestPoint*; come ogni componente, deve essere presente nello schema. Il footprint integrato TestPoint_Pad_D1.0mm (piazzola SMD rotonda da 1,0 mm, solder mask aperta, senza pasta) e il simbolo TestPoint vengono scritti in footprints/ e symbols/ da agentee testpoints.
agentee testpoints NAME --nets "3V3,*RST*" [--side B] [--pitch 2.54] (MCP testpoints) aggiunge una piazzola di test a ogni net corrispondente che non ha ancora accesso per sonda (i net sono i valori di default di [test] se --nets è omesso, i net di impedenza e di coppia sono saltati): cerca sul lato di sonda un punto libero su una griglia --pitch vicino al rame del net, mantenendo min_test_pad_to_edge dal bordo e dai fori di centratura, min_test_pad_to_body dai corpi dei componenti, --pitch da altre piazzole di test, e la distanza di net da altro rame e dalle piazzole, stub e vie che ha posizionato per altri net. Aggiunge un componente TP collegato al net alla foglio dello schema che nomina il net, un'entry [[footprints]] sul lato di sonda al layout con una breve pista stub verso una via accanto alla piazzola, poi instrada ogni nuova piazzola al rame del net con l'autorouter e aggiunge quelle piste e vie. Una piazzola che l'autorouter non riesce a collegare viene rimossa di nuovo dallo schema e dal layout ed elencata con i net che non hanno trovato un punto. Le etichette delle nuove piazzole vengono spostate in un punto libero o nascoste, e quando il layout memorizza i riempimenti di area vengono aggiornati come farebbe agentee fill. --dry-run segnala i punti senza scrivere.
Il testo di serigrafia deve mantenere 0,4 mm da altri testi di serigrafia e 0,2 mm dai contorni di serigrafia, stare fuori da piazzole, via e corpi di altri componenti, e restare sulla scheda. Ciascuno di questi è un errore, tranne il testo sotto il corpo di un altro componente, che è un avviso. Quando un'etichetta di riferimento non passa, la verifica indica un punto che soddisfa ogni regola, come una riga label = { at = [...] } da incollare. agentee silk NAME (MCP silk) le incolla tutte per te e ripete finché le etichette non si assestano; --hide nasconde i riferimenti che non hanno un punto libero, tipicamente piccoli passivi sotto una BGA.
Un pezzo di riempimento viene mantenuto solo se tocca due elementi della sua net, oppure uno ed è almeno min_island_area; il resto non raggiunge nulla di nuovo e viene rimosso. La verifica controlla ogni riempimento rispetto alle altre net: un riempimento che sovrappone la zona, la pista, la via o la piazzola di un'altra net, o si avvicina più del clearance, è un errore, e le punte di rame più acute di 30 gradi vengono segnalate.
Le aree di rame sullo stesso layer vengono riempite in ordine di priority, poi dalla più piccola alla più grande, e ciascuna mantiene il proprio distacco dai riempimenti già posizionati, in modo che un piccolo nodo di commutazione o un'area di alimentazione all'interno di un'area di massa che copre l'intera scheda venga riempita attorno e non in cortocircuito con essa.
Le aree di rame mantengono min_via_hole_to_copper dai fori di via delle altre net e min_npth_to_copper dai fori non placcati oltre al clearance, con archi tracciati fuori dal cerchio vero in modo che il gap non sia mai corto. Le via di stitching vanno solo dove la via libera il rame di ogni altra net su ogni strato che attraversa, mantiene il suo foro a min_via_hole_to_copper da quel rame e a min_hole_to_smd_pad da piazzole SMD di qualsiasi net, mantiene min_hole_to_hole da ogni foratura e la regola del bordo dal contorno, e atterra dentro una zona della sua net; la verifica riporta quante ne ha posizionate. Vengono forate e tracciate come qualsiasi via.
I riempimenti delle aree sono poligoni esatti: il contorno dell'area meno il rame di ogni altro net ingrandito del suo distacco, con angoli arrotondati, in modo che le aree vengano rese e tracciate senza gradini. I colli e le strisce più stretti di min_width dell'area (predefinito 0,25 mm) vengono rimossi, come farebbe un produttore. Dove due aree di distacco (antipad, distacco di piste e piazzole) si avvicinano a meno di min_width, l'area viene ritagliata lungo le linee rette che le collegano, entro circa 1,5 volte min_width dal gap, in modo da non lasciare code o colli sottili che puntano verso di esso. Lo stesso vale tra un'area di distacco e il distacco del bordo della scheda, un'incisione o il distacco attorno al riempimento di un'altra area.
I riempimenti di zona sono in cache: ogni riempimento è chiaveato da un hash di tutto ciò da cui dipende e conservato in ~/.cache/agentee/fills, così un caricamento riempie solo le zone il cui rame, clearance o vicini sono cambiati (imposta AGENTEE_NO_FILL_CACHE per saltare la cache). agentee fill NAME (MCP fill) conserva anche i riempimenti alla fine del file di layout, una tabella [[fills]] per zona e strato, così un checkout fresco carica senza riempire; un riempimento conservato il cui hash non corrisponde più viene ignorato, e la verifica lo segnala con --info. L'importazione di una scheda conserva i suoi riempimenti. Lascia le tabelle [[fills]] allo strumento.
Una pista che sfiora solo una piazzola (la sua linea centrale non la attraversa) viene segnalata; portala dentro la piazzola. Due segmenti dello stesso net che si sovrappongono su uno strato (paralleli, con sovrapposizione maggiore di una larghezza di pista) sono un errore, perché il rame è doppio; una curva più stretta di 90 gradi viene segnalata come trappola acida. Una pista può restringersi sotto la larghezza della sua classe, fino al minimo del produttore, per non più di 0,5 mm (la classe neckdown) dove incontra una piazzola piccola; il router disegna questi restringimenti da solo (vedi Autorouting). Fori perforati, via e piazzole placcate devono mantenere la distanza min_hole_to_hole della scheda; la verifica conta le coppie che non la rispettano e indica la prima. Due via dello stesso net nello stesso punto sono un errore: il produttore forerebbe il foro due volte. Le aperture del solder mask sono i contorni delle piazzole, senza espansione, e le via sono coperte. Due aperture di net diversi (o senza net) che si sovrappongono o lasciano un ponte di mask sotto min_mask_web sono un errore, contati per coppia di componenti con l'indicazione del primo punto. Le piazzole di un componente a passo fine vengono verificate: correggile nel footprint con piazzole più strette, oppure imposta un min_mask_web più piccolo se il produttore lo consente. Un footprint con mask_web = false ha la mask aperta come una finestra unica sopra le sue piazzole (apertura in blocco), quindi le coppie delle sue piazzole vengono saltate; le sue piazzole vengono comunque verificate rispetto agli altri componenti.
I disegni su un layer inferiore sono specchiati in modo da essere letti correttamente dal basso. I riempimenti e i tratti SVG vengono appiattiti in poligoni; il testo in un SVG viene ignorato, quindi convertilo prima in percorsi. Il testo e i disegni della serigrafia subiscono gli stessi controlli delle etichette di riferimento: sovrapposizione, piazzole, contorni della serigrafia, bordo della scheda.