Ontwerpen
Plaatsing, routing en kopervlakken
Automatische plaatsing, aarde- en voeding-kopervlakken, vlakverbindingen, de autorouter, zeefdruklabels, testpads en de ontwerpregelcontroles die het fabrikantpakket regelen.
Een layout plaatst de footprints van het schema op de printplaat en verbindt ze met koper. Elk commando hier schrijft gewone items in het *.pcb.toml, dus wat de placer of router ook doet, kun je of de agent het daarna bewerken.
agentee new layout NAMEVoeg board en schematic toe aan de starter. De controle rapporteert dan elk onderdeel dat nog niet is geplaatst.
Plaatsen
agentee place NAME
agentee render pcb:NAME -o placed.pngagentee place is een snelle start voor een hele printplaat. In volgorde van prioriteit doet het:
- zet connectoren aan de randen met de aansluitkant naar buiten, en nooit een RF-connector en een USB-connector aan dezelfde rand als een andere splitsing past, omdat USB 3-ruis in het 2,4 GHz-band lands;
- legt een RF-pad in een rechte lijn van connector naar connector, met shunt-componenten naast de lijn op hun node;
- trekt grote chips naar het midden, weg van de randen en gaten waar deprintplaat bij depaneling buigt;
- clustert de decoupling-condensatoren van elke IC bij de voedingpads die ze bedienen, en de kristaloscillator bij de klokpads;
- houdt schakelregelaars 8 mm van kristaloscillatoren en RF-componenten, en houdt hete componenten uit elkaar;
- houdt keramische condensatoren van 0805 en groter uit de flexzone bij randen en gaten, en draait kleine condensatoren zodat ze langs de rand liggen;
- draait elke component naar zijn nets.
De placement-handleiding geeft de bron voor elke regel. Het resultaat hangt alleen af van de bestanden en --seed.
Daarna doe je wat een mens zou doen: bekijk het, verplaats de componenten die ertoe doen, en vergrendel ze.
agentee edit pcb NAME place J1 2.54,12 --rotation 180 --locked
agentee place NAME --keep-placed
agentee place NAME --seed 7
agentee place NAME --parts 'C*,R*'
agentee place NAME --side bothlocked = true wordt nooit verplaatst. --keep-placed laat elke component die al een plek heeft staan, --parts plaatst alleen de overeenkomende, en --side both laat decoupling-condensatoren onder een BGA aan de achterkant gaan. [place] edges in het layout pindt een connector aan een rand, en keepouts zijn polygonen waar geen courtyard mag komen:
[place]
edges = { J1 = "left", J2 = "right" }
keepouts = [[[0, 0], [8, 0], [8, 6], [0, 6]]]Kopervlakken en plannen
agentee edit pcb NAME zone GND --layers F.Cu,In1.Cu,In2.Cu,B.Cu
agentee edit pcb NAME zone 3V3 --layers In2.Cu --priority 1Een zone vult zijn omtrek (standaard de printplaat) minus het koper van elke andere net, vergroot met de clearance, als exacte polygonen met ronde hoeken. Halsjes smaller dan de min_width van de zone worden verwijderd, zoals een fabrikant ze zou etsen, en eilanden die niets raken worden weggelaten. Op één laag vullen zones volgens priority, zodat een voeding-kopervlak binnen een printplaatbreed grond-kopervlak eromheen wordt gegoten in plaats van kortgesloten. --pad-connection relief verbindt pads met vier spaken in plaats van massief koper.
Vullingen worden bij het laden berekend en gecached. agentee fill NAME slaat ze op aan het einde van het layout-bestand, zodat een verse checkout laadt zonder vullen.
Koppel pads aan hun plannen
agentee tie NAMEEen net met een zone is een plan-net. tie geeft elke SMD-pad van een plan-net een korte stub en een via ernaast, aan de kant weg van de component, vrij van elke pad en ander net. Zo moeten grond- en voeding-pads een plan bereiken, in plaats van sporen ertussen. Een pad dat al een via van zijn net in de buurt heeft wordt niet aangeraakt, en een pad zonder legale plek wordt opgenomen onder failed.
Routeer
agentee route NAME --nets 'USB_*,SPI_*' --layers F.Cu,B.Cu
agentee route NAME --nets '*'De router werkt op een raster van 0,05 mm en houdt de breedte, clearance, lagen en vias van elke klasse aan tegen alles wat er al is. Het gaat in 45-graden richtingen, rekent kosten voor vias en bochten, trekt runs strak daarna, en hals een spoor in naar een pad dat smaller is dan de klasse-breedte. Een verbinding zonder vrije pad haalt weg wat in de weg staat en die nets gaan terug in de wachtrij.
- Een glob in
--netsmatcht nooit een plan-net, dus--nets '*'routeert elk signaal en laat grond aan de plannen. - Bestaand koper wordt nooit verplaatst, tenzij
--rerouteeerst de sporen en vias van de genoemde nets verwijdert. - Als een paar verbindingen falen, routeer ze opnieuw samen met de nets eromheen en
--reroute, of ga naar--grid 0.025. --pairsrouteert differentieel paren als gekoppelde paren waar ze passen.--via-in-padlaat een via binnen een SMD-pad van zijn net zitten, gevuld en gedekt.--dry-runrapporteert zonder te schrijven.
Routeer eerst de nets die ertoe doen met de hand: een RF-lijn, de hete lus van een schakelregelaar, een kristaloscillator. Laat daarna de router de rest invullen, een klasse tegelijk.
Met de hand zijn sporen en vias ook commando's:
agentee edit pcb NAME track RF_OUT F.Cu 19.28,12 30.92,12
agentee edit pcb NAME via GND 7.2,8.9Een spoor moet in een pad lopen. Eén waarvan de middellijn alleen de padrand raakt wordt gemarkeerd, ook al raakt het koper.
Stitching en fanouts
[[stitching]]
net = "GND"
pitch = "2.5mm"
[[stitching]]
net = "GND"
fence = ["RF_*"]
[[fanouts]]
ref = "U3"
skip_rings = 2[[stitching]] plaatst grond-vias op een raster waar ze elke andere net vrijlaten, of een hek van vias langs de sporen van de genoemde nets. [[fanouts]] zet een via in elke verbonden pad van een BGA, en laat de buitenste ringen vrij voor escape op de bovenlaag. Beide zijn regels: de vias worden opnieuw geplaatst telkens het koper eromheen verandert. agentee edit pcb NAME stitch GND --pitch 2.5mm en fanout U3 --skip-rings 2 schrijven ze.
Zeefdruk
De controle markeert elke referentie-label die andere tekst verdringt, op een pad of via zit, of van de printplaat loopt, en noemt een plek die slaagt. agentee silk verplaatst ze allemaal daar:
agentee silk NAME
agentee silk NAME --hide--hide verbergt de labels zonder plek, typisch kleine passieven onder een BGA.
Elke printplaat draagt ook agentee vX.Y.Z-HASH in de zeefdruk, standaard aan de onderkant. Het heeft een vrije strook van ongeveer 23 bij 1,2 mm nodig; op een kleine of overvolle printplaat maak je ruimte vrij of stel je [watermark] at zelf in. Het fabpakket wordt geweigerd zonder dit.
Testpads
agentee testpoints NAME
agentee testpoints NAME --nets '3V3,*RST*' --side B --pitch 2.54Elke printplaat heeft probe-toegang nodig voor bring-up en een pogo-pin fixture voor productietest. Standaard zijn dat de voedingsspoor, grond, resets, enables, power good, klokken en de lage-snelheid bussen; schakelpunten en regelaar-feedback worden bewust uitgesloten. testpoints voegt een TP-component toe in het schema, een 1 mm pad aan de probe-kant bij het koper van het net, en een gerouteerd spoor ernaartoe, voor elk net dat nog geen toegang heeft. Impedantie-nets en paren worden overgeslagen, omdat een stub ze schaadt.
Ontwerpregelcontroles
agentee check --item pcb:NAME
agentee drc NAME
agentee drc NAME --listcheck voert elke regel uit; drc toont alleen de regel-diagnostiek van het layout, elk begint met zijn id in haakjes, en --list toont elke regel met of deze op deze printplaat van toepassing is. Fouten blokkeren het fabpakket. Waarschuwingen en meldingen zijn praktijk in plaats van fab-limieten: volg ze tenzij het ontwerp een reden geeft, en schrijf die reden in DESIGN.md.
Routing is klaar als unrouted 0 is voor elk net in agentee show pcb:NAME.
De pinnen van een chip ontwarren
agentee pinswap NAME --part U3
agentee pinswap NAME --part U3 --writepinswap herleidt de verwisselbare I/O van een FPGA of MCU (zelfde bank, paren als paren, klokpinnen op klokpinnen) om het ratsnest te ontwarren, en --write herschrijft de pin-referenties van het schema.
De layout-engine
agentee layout NAME voert de geconfigureerde fasen van de layout-engine in volgorde uit (constraints, place, access, global route, detail route, finish) en toont een score per term met de ergste overtreders van elk. --from, --to en --only kiezen de fasen. Het is nieuwer dan place en route; de fasen en hun instellingen staan in de [engine]-tabel van het layout, en de viewer kan ze uitvoeren op het layout zoals het in het venster staat.