Schema en layout
Layouts
Het *.pcb.toml-bestand: plaatsingen, sporen, vias, fanouts, stiknaden, zones, uitsparingen, zeefdruk, artwork, testtoegang en het versie watermerk.
Plaatst de footprints van het schema op de printplaat en routeert ze.
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 clearElke layout bevat zeefdrukletters agentee vX.Y.Z-HASH: de versie van agentee die het pakket heeft gebouwd en de korte git-hash van de bron, met -dirty als de boom onbevestigde wijzigingen had, of unknown buiten git. Het wordt altijd getekend en kan niet worden uitgeschakeld. Het is min_silk_text_height hoog, gecentreerd, en gaat standaard op B.SilkS (F.SilkS als de onderkant geen ruimte heeft of de printplaat geen onderkant-zeefdruk heeft) op de vrije plek dichtst bij de linkerbenedenhoek van de printplaat, geroteerd 90 graden als alleen een hoge opening past. Een vrije plek houdt afstand van pads, vias, andere zeefdrukletters en lijnen, artwork en onderdelenlichamen, en blijft min_copper_to_edge binnen de contour. De viewer, render en montagetekeningen tonen het, en fab-notes.txt noemt het. Als er geen vrije plek is, rapporteert de controle een watermark-fout met de grootte die vrij moet zijn en de minst bezette plek, en weigert de fabrikant; maak daar ruimte of stel [watermark] at (plus layer, rotation) zelf in. Een [watermark]-plek die niet vrij is, is een watermark-fout die noemt wat hij raakt, en een stackup zonder kind = "silk"-laag is een watermark-fout die erom vraagt.
Testtoegang: standaard zijn de nets die een probe nodig hebben de voedingnets (een klasse met current, of een naam zoals 3V3, 1V8, +5V, VCC*, VDD*, VBUS*, VBAT*, VIN*, VSYS*), massa (GND, *GND, GND*) en nets met een naam zoals *RST*, *RESET*, *EN*, *PG*, *CLK*, *TX*, *RX*, *SCL*, *SDA*, *SWD*, *TCK*, *TMS*, *TDI*, *TDO*. De standaardinstelling laat schakelpunten en nets voor regelfeedback, soft-start en ruisreductie (SW*, *_SW, LX*, FB*, SS*, NR*, gematcht op de volledige naam of het laatste /-segment) uit, ook als hun klasse voeding is: de capaciteit van een probe en de stub naar het pad koppelen schakelruis naar een feedbackdelier of vertragen een soft-start of ruisfilter, en een stub op een schakelpunt straalt uit. nets vervangt die lijst (noem een net daar om het alsnog te proeven) en exclude haalt nets uit die lijst. Een testpunt is een onderdeel met een referentie TP en een nummer, of een footprint met de naam TestPoint*; zoals elk onderdeel moet het in het schema staan. De ingebouwde TestPoint_Pad_D1.0mm-footprint (een rond SMD-pad van 1,0 mm, masker open, geen pasta) en het TestPoint-symbool worden door agentee testpoints in footprints/ en symbols/ geschreven.
agentee testpoints NAME --nets "3V3,*RST*" [--side B] [--pitch 2.54] (MCP testpoints) voegt een testpad toe aan elk overeenkomend net dat nog geen probe-toegang heeft (nets zijn de [test] standaardwaarden als --nets weggelaten wordt, impedantie- en paarnets worden overgeslagen): het zoekt op de probezijde naar een vrije plek op een --pitch raster in de buurt van het koper van het net, met min_test_pad_to_edge afstand tot de rand en tooling gaten, min_test_pad_to_body afstand tot componentlichamen, --pitch afstand tot andere testpads, en de netafstand tot ander koper en tot de pads, stubs en vias die het voor andere nets heeft geplaatst. Het voegt een TP component toe die aan het net is gekoppeld aan het schemaplak dat het net noemt, een [[footprints]] entry op de probezijde aan het layout met een korte stub spoor naar een via naast het pad, routeert daarna elk nieuw pad naar het koper van het net met de autorouter en voegt die sporen en vias toe. Een pad dat de router niet kan verbinden, wordt weer uit het schema en layout gehaald en opgesomd met de nets die geen plek vonden. Labels van de nieuwe pads worden naar een vrije plek verplaatst of verborgen, en als het layout zonevullingen opslaat, worden deze vernieuwd zoals agentee fill zou doen. --dry-run meldt de plekken zonder te schrijven.
Zeefdrukletters moeten 0,4 mm afstand houden tot andere zeefdrukletters en 0,2 mm tot zeefdrukcontouren, op pads, vias en andere onderdelenlichamen blijven, en op de printplaat blijven. Elk van deze is een fout, behalve tekst onder het lichaam van een ander onderdeel, wat een waarschuwing is. Als een verwijzingslabel faalt, noemt de controle een plek die aan alle regels voldoet, als een label = { at = [...] }-regel om te plakken. agentee silk NAME (MCP silk) plakt ze allemaal voor je en herhaalt totdat de labels op hun plek zitten; --hide verbergt de verwijzingen die geen vrije plek hebben, meestal kleine passieve onderdelen onder een BGA.
Een vulstuk wordt alleen behouden als het twee items van zijn net raakt, of één en minstens min_island_area is; de rest raakt niets nieuws en wordt verwijderd. De controle verifieert elke vulling tegen andere nets: een vulling die de zone, het spoor, de via of het pad van een ander net overlapt, of dichter komt dan de clearance, is een fout, en koptips scherper dan 30 graden worden gemarkeerd.
Kopervlakken op dezelfde laag worden gevuld in volgorde van priority, daarna van klein naar groot. Elk vlak houdt zijn afstand tot de al geplaatste vullingen, zodat een klein kopervlak voor een schakelknoop of voeding binnen een grondvlak over de hele printplaat om het kleinere vlak heen wordt gevuld, in plaats van kortgesloten.
Kopervlakken houden ook min_via_hole_to_copper aan van via-gaten van andere nets en min_npth_to_copper van niet-geplated gaten, naast de clearance, met bogen die buiten de echte cirkel worden getekend zodat de opening nooit te klein is. Stitching vias komen alleen op plekken waar de via op elk laag dat hij overspant de kopervlakken van alle andere nets respecteert, zijn gat min_via_hole_to_copper van dat koper houdt en min_hole_to_smd_pad van SMD pads van elk net, min_hole_to_hole van elke boorgat en de randregel van de omtrek houdt, en binnen een zone van zijn eigen net landt; de controle rapporteert hoeveel er zijn geplaatst. Ze worden geboord en getekend als elke andere via.
Kopervlak-vullingen zijn exacte polygonen: de omtrek van het kopervlak minus het koper van alle andere nets, vergroot met hun afstand, met ronde hoeken, zodat vullingen zonder trapjes worden gerenderd en geplot. Halsjes en smalle strepen smaller dan de min_width van het kopervlak (standaard 0,25 mm) worden verwijderd, zoals een fabrikant ze zou etsen. Als twee afstandgebieden (antipads, spoor- en pad-afstanden) minder dan min_width van elkaar komen, wordt het kopervlak teruggesneden tot de rechte lijnen die ze verbinden, binnen ongeveer 1,5 min_width van de opening, zodat er geen uitlopers of haarfijne halsjes overblijven die naar de opening wijzen. Hetzelfde geldt tussen een afstandgebied en de afstand van de printplaatrand, een uitsparing, of de afstand rond de vulling van een ander kopervlak.
Zonevullingen worden gecached: elke vulling wordt gesleuteld op een hash van alles waar hij van afhangt en bewaard in ~/.cache/agentee/fills, zodat een laad alleen de zones vult waarvan het koper, de clearances of de buren zijn veranderd (stel AGENTEE_NO_FILL_CACHE in om de cache over te slaan). agentee fill NAME (MCP fill) bewaart de vullingen ook aan het einde van het layoutbestand, met één [[fills]]-tabel per zone en laag, zodat een verse checkout laadt zonder vullen; een bewaarde vulling waarvan de hash niet meer klopt wordt genegeerd, en de controle noemt hem met --info. Een geïmporteerde printplaat bewaart zijn vullingen. Laat de [[fills]]-tabellen aan het tool over.
Een spoor dat een pad alleen raakt (zijn middellijn mist het pad) wordt gemarkeerd; voer het spoor het pad in. Twee segmenten van één net die op een laag boven elkaar liggen (parallel, overlappend met meer dan een spoorbreedte) zijn een fout, omdat het koper verdubbeld is; een bocht scherper dan 90 graden wordt gemarkeerd als een zuurval. Een spoor mag onder zijn klassebreedte inkomen, tot minimaal het fabrikantminimum, voor maximaal 0,5 mm (de klasse neckdown) waar het op een klein pad uitkomt; de router tekent zulke nekken zelf (zie Autorouting). Geboorde gaten, vias en geplated pads moeten allemaal het min_hole_to_hole van de printplaat onderling aanhouden; de controle telt de paren die dat niet doen en noemt de eerste. Twee vias van één net op dezelfde plek zijn ook een fout: de fabrikant boort het gat dan twee keer. Maskeropeningen zijn de padomtrekken, zonder uitbreiding, en vias worden getented. Twee openingen van verschillende nets (of zonder net) die overlappen of een maskergat onder min_mask_web laten, zijn een fout, geteld per onderdeelpaar met de eerste plek genoemd. Pads van één onderdeel met een fijne pitch worden ook gecontroleerd: los het op in de footprint met smalere pads, of stel een kleinere min_mask_web in als de fabrikant dat toelaat. Een footprint met mask_web = false heeft zijn masker geopend als één venster over zijn pads (een gang opening), zodat paren van zijn eigen pads worden overgeslagen; zijn pads worden wel gecontroleerd tegen andere onderdelen.
Tekeningen op een onderlaag worden gespiegeld zodat ze correct te lezen zijn van onderaf. SVG-vullingen en streken worden afgevlakt tot polygonen; tekst in een SVG wordt genegeerd, dus converteer die eerst naar paden. Zeefdruktekst en -tekeningen krijgen dezelfde checks als referentie-labels: overlap, pads, zeefdruk-omtrekken, printplaatrand.