Design
Platzierung, Routing und Kupferflächen
Automatische Platzierung, Masse- und Versorgungskupferflächen, Ebenenverbindungen, der Autorouter, Bestückungsdruck-Labels, Testpads und die Designregelnprüfungen, die die Fertigungsdaten freigeben.
Ein Layout platziert die Footprints des Schaltplans auf der Platine und verbindet sie mit Kupfer. Jeder Befehl hier schreibt gewöhnliche Einträge in die *.pcb.toml, sodass du oder der Agent nach dem Platzieren oder Verdrahten alles bearbeiten kannst.
agentee new layout NAMEFüge board und schematic zum Starter hinzu. Die Prüfung meldet dann jedes Bauteil, das noch nicht platziert ist.
Platzieren
agentee place NAME
agentee render pcb:NAME -o placed.pngagentee place ist ein schneller Einstieg für eine ganze Platine. In Prioritätsreihenfolge:
- setzt Connectoren an die Kanten mit der Gegenstückseite nach außen und nie einen RF- und einen USB-Connector an derselben Kante, wenn eine andere Aufteilung passt, weil USB-3-Störungen in das 2,4-GHz-Band fallen;
- legt einen RF-Weg als Gerade von Connector zu Connector an, mit Shunt-Bauteilen neben der Leitung an ihrem Netz;
- zieht große Chips zur Mitte, weg von Kanten und Löchern, an denen das Entgraten die Platine biegt;
- gruppiert die Entkopplungskondensatoren eines ICs an den Versorgungspins, die sie versorgen, und seinen Oszillator an seinen Takt-Pins;
- hält Schaltregler 8 mm von Oszillatoren und RF-Bauteilen fern und trennt heiße Bauteile;
- hält 0805 und größere Keramikkondensatoren aus der Biegezone nahe Kanten und Löchern und dreht kleine so, dass sie entlang der Kante liegen;
- dreht jedes Bauteil zu seinen Netzen.
Die Platzierungs-Anleitung nennt die Quelle für jede Regel. Das Ergebnis hängt nur von den Dateien und --seed ab.
Dann machst du, was ein Mensch machen würde: du schaust dir die Platine an, verschiebst die Bauteile, die wichtig sind, und sperrst sie ein.
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 wird nie verschoben. --keep-placed lässt jedes Bauteil an seinem Platz, das schon einen hat, --parts platziert nur die passenden, und --side both erlaubt Entkopplungskondensatoren unter einem BGA auf der Rückseite. [place] edges im Layout sperrt einen Connector an eine Kante, und keepouts sind Polygone, die kein Courtyard betreten darf:
[place]
edges = { J1 = "left", J2 = "right" }
keepouts = [[[0, 0], [8, 0], [8, 6], [0, 6]]]Kupferflächen und Ebenen
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 1Eine Kupferfläche füllt ihre Umrandung (standardmäßig die Platine) abzüglich des Kupfers aller anderen Netze, vergrößert um deren Abstand, als exakte Polygone mit abgerundeten Ecken. Halsbreiten schmaler als die min_width der Kupferfläche werden entfernt, so wie ein Fertiger sie ätzen würde, und Inseln, die nichts erreichen, werden verworfen. Auf einer Ebene füllen Kupferflächen nach priority, sodass eine Versorgungskupferfläche innerhalb einer platinweiten Massefläche um sie herum gefüllt wird, statt mit ihr kurzgeschlossen zu sein. --pad-connection relief verbindet Pads mit vier Speichen statt mit massivem Kupfer.
Füllungen werden beim Laden berechnet und zwischengespeichert. agentee fill NAME speichert sie am Ende der Layout-Datei, sodass ein frischer Checkout ohne Füllen lädt.
Pads an ihre Ebenen anbinden
agentee tie NAMEEin Netz mit einer Kupferfläche ist ein Ebenennetz. tie gibt jedem SMD-Pad eines Ebenennetzes einen kurzen Stummel und ein daneben liegendes Via auf der Seite weg vom Bauteil, frei von jedem Pad und jedem anderen Netz. So sollen Masse- und Versorgungspads eine Ebene erreichen, statt mit Leiterbahnen dazwischen. Ein Pad, das schon ein Via seines Netzes in der Nähe hat, bleibt unangetastet, und ein Pad ohne legalen Platz wird unter failed aufgelistet.
Routing
agentee route NAME --nets 'USB_*,SPI_*' --layers F.Cu,B.Cu
agentee route NAME --nets '*'Der Router arbeitet auf einem 0,05-mm-Raster und hält die Breite, den Abstand, die Ebenen und die Vias jeder Netzklasse gegenüber allem, was schon da ist. Er schreitet in 45-Grad-Richtungen, berechnet Vias und Biegungen, zieht Läufe danach straff und verjüngt eine Leiterbahn in ein Pad, das schmaler als die Klassbreite ist. Eine Verbindung ohne freien Weg räumt, was im Weg ist, und diese Netze kommen zurück in die Warteschlange.
- Ein Glob in
--netstrifft nie ein Ebenennetz, sodass--nets '*'jedes Signal routet und Masse den Ebenen überlässt. - Vorhandenes Kupfer wird nie verschoben, außer
--reroutelöscht zuerst die Leiterbahnen und Vias der genannten Netze. - Wenn einige Verbindungen fehlschlagen, richte sie erneut zusammen mit den umliegenden Netzen und
--rerouteaus, oder weiche auf--grid 0.025aus. --pairsroutet differentielle Paare als gekoppelte Paare, wo es passt.--via-in-paderlaubt ein Via innerhalb eines SMD-Pads seines Netzes, gefüllt und abgedeckt.--dry-runmeldet, ohne zu schreiben.
Richte zuerst die Netze von Hand aus, die wichtig sind: eine RF-Leitung, der heiße Kreis eines Schaltreglers, ein Oszillator. Dann lass den Router den Rest füllen, eine Netzklasse nach der anderen.
Von Hand sind Leiterbahnen und Vias auch Befehle:
agentee edit pcb NAME track RF_OUT F.Cu 19.28,12 30.92,12
agentee edit pcb NAME via GND 7.2,8.9Eine Leiterbahn muss in ein Pad laufen. Eine, deren Mittellinie nur die Padkante streift, wird markiert, auch wenn das Kupfer berührt.
Stichverdrahtung und Fanouts
[[stitching]]
net = "GND"
pitch = "2.5mm"
[[stitching]]
net = "GND"
fence = ["RF_*"]
[[fanouts]]
ref = "U3"
skip_rings = 2[[stitching]] platziert Masse-Vias auf einem Raster, wo sie jedes andere Netz frei lassen, oder einen Zaun aus ihnen entlang der Leiterbahnen der genannten Netze. [[fanouts]] setzt ein Via in jedes verbundene Pad eines BGAs und lässt die äußeren Ringe für den Ausstieg auf der oberen Ebene. Beide sind Regeln: Die Vias werden jedes Mal neu platziert, wenn sich das Kupfer um sie ändert. agentee edit pcb NAME stitch GND --pitch 2.5mm und fanout U3 --skip-rings 2 schreiben sie.
Bestückungsdruck
Die Prüfung markiert jede Referenzbeschriftung, die anderen Text verdrängt, auf einem Pad oder einer Via sitzt oder von der Platine läuft, und nennt eine Stelle, die durchkommt. agentee silk verschiebt sie alle dorthin:
agentee silk NAME
agentee silk NAME --hide--hide versteckt die Zeichen ohne Platz, typischerweise kleine passive Bauteile unter einem BGA.
Jede Platine trägt auch agentee vX.Y.Z-HASH in ihrem Bestückungsdruck, standardmäßig auf der Unterseite. Dafür braucht es einen freien Streifen von etwa 23 mal 1,2 mm; auf einer kleinen oder dichten Platine, räume Platz dafür ein oder setze [watermark] at selbst. Das Fertigerpaket wird ohne es abgelehnt.
Testpads
agentee testpoints NAME
agentee testpoints NAME --nets '3V3,*RST*' --side B --pitch 2.54Jede Platine braucht Messzugriff für die Inbetriebnahme und eine Pogo-Pin-Fixtur für den Produktionstest. Standardmäßig sind das die Versorgungsschienen, Masse, Resets, Enables, Power Good, Takte und die langsamen Busse; Schaltknoten und Regler-Feedback werden bewusst ausgelassen. testpoints fügt für jedes Netz ohne Zugriff ein TP-Bauteil im Schaltplan, ein 1-mm-Pad auf der Messseite nahe dem Kupfer des Netzes und eine geroutete Leiterbahn dorthin hinzu. Impedanznetze und Paare werden übersprungen, weil ein Stummel ihnen schadet.
Design-Regel-Prüfungen
agentee check --item pcb:NAME
agentee drc NAME
agentee drc NAME --listcheck führt jede Regel aus; drc gibt nur die Regel-Diagnosen des Layouts aus, jede beginnt mit ihrer ID in eckigen Klammern, und --list gibt jede Regel aus, mit Angabe, ob sie auf diese Platine zutrifft. Fehler blockieren das Fertigerpaket. Warnungen und Hinweise sind Praxis, keine Fertigerlimits: Folge ihnen, außer das Design gibt einen Grund, und schreibe den Grund in DESIGN.md.
Routing ist fertig, wenn unrouted bei jedem Netz in agentee show pcb:NAME 0 ist.
Die Pins eines Chips entwirren
agentee pinswap NAME --part U3
agentee pinswap NAME --part U3 --writepinswap weist austauschbare I/Os eines FPGAs oder MCUs neu zu (gleiche Bank, Paare als Paare, Takt-Pins auf Takt-Pins), um das Ratsnest zu entwirren, und --write schreibt die Pin-Referenzen des Schaltplans um.
Die Layout-Engine
agentee layout NAME führt die konfigurierten Stufen der Layout-Engine in Reihenfolge aus (Constraints, Platzierung, Zugriff, globales Routing, Detail-Routing, Abschluss) und gibt eine Punktzahl pro Term mit den schlimmsten Übeltätern aus. --from, --to und --only wählen die Stufen. Sie ist neuer als place und route; die Stufen und ihre Einstellungen stehen in der [engine]-Tabelle des Layouts, und der Viewer kann sie auf dem Layout ausführen, wie es im Fenster steht.