Design
Platinenspezifikationen, Lagenaufbau und Netzklassen
Wähle einen Fertiger und einen realen Lagenaufbau, definiere eine Netzklasse pro Netzart und setze Impedanz- und Stromziele, damit die Prüfung die Breiten berechnet.
Die Platinenspezifikation ist die erste Datei eines Designs und die, gegen die alles andere geprüft wird. Sie benennt den Fertiger, den Lagenaufbau, den Umriss, die Via-Typen und die Netzklassen. Bring sie zuerst in Ordnung: Ein Layout, das gegen den falschen Lagenaufbau geroutet ist, hat die falsche Impedanz auf jeder kontrollierten Leitung.
agentee new board sensor-nodeEinen Fertiger auswählen
name = "sensor-node"
fab = "jlcpcb"fab wählt ein Regel-Preset: generic, jlcpcb oder hdi. Das Preset ist eine Tabelle, die nach der Anzahl der Kupferlagen, dem äußeren Kupfergewicht und der Veredelung indiziert ist, sodass eine 4-Lagen-Platine mit 1 oz engere Leiterbahnregeln bekommt als eine 2-Lagen-Platine mit 2 oz. Die jlcpcb-Werte folgen der JLCPCB-Fähigkeitsseite Zeile für Zeile; die Regelreferenz gibt jeden Wert mit der Zeile an, aus der er stammt, sowie die wenigen Stellen, an denen agentee bewusst strenger ist.
Jede Regel in [rules] überschreiben:
[rules]
min_track_width = "0.15mm"
min_clearance = "0.15mm"Einen echten Lagenaufbau auswählen
Schichtdicken nicht eintippen. Den eigenen Aufbau des Fertigers auswählen:
agentee stackups --fab jlcpcb --layers 4
agentee stackups --fab jlcpcb --layers 6 --thickness 1.6
agentee stackups JLC04161H-7628Die Presets decken jeden JLCPCB-Impedanzaufbau von 4 bis 20 Lagen und 0,4 bis 3,0 mm ab, die Standardaufbauten von PCBWay von 4 bis 18 Lagen und zwei generische HDI-Aufbauten. JLCPCB-Presets tragen den eigenen Code des Fertigers, JLC04161H-7628: Lagen, Dicke, Außen- und Innenkupfer, Prepreg. Der letzte Befehl gibt die Lagen eines Presets mit ihrer Dicke und ihrem Dielektrizitätsspektrum aus.
agentee edit board sensor-node stackup --preset JLC04161H-7628 --finish ENIGBestelle die Platine mit demselben Aufbau: Wenn JLCPCB einen anderen Lagenaufbau verwendet, ist jede Impedanz, die du berechnet hast, falsch.
Umriss, Ausschnitte und Löcher
agentee edit board sensor-node outline --size 50,30 --corner-radius 1mm[[outline.cutouts]]
origin = [20, 12]
size = [6, 2]
corner_radius = 1 # half the width makes a slotEin Umriss ist ein Rechteck mit size, origin und corner_radius oder ein Polygon aus points. Ein Ausschnitt ist ein Fenster, Schlitz oder großes Loch, das durch die Platine gefräst wird, und alles, was die Kante betrifft (Kupfer an der Kante, Pads, Kupferflächen, der Router, die Simulationen), behandelt die Kante eines Ausschnitts als Platinenrand. Ein Ausschnitt in der Layout-Datei ist etwas anderes: Er hält nur Kupferflächen auf bestimmten Lagen von einem Bereich fern.
Via-Typen
[[vias]]
name = "std"
drill = "0.3mm"
diameter = "0.6mm"Eine Platine kann mehrere Via-Typen auflisten. Ein Durchgangsvia braucht nichts weiter; Blind-, Grab- und Mikrovias brauchen einen HDI-Fertiger und werden in HDI: Mikrovias und Laminierung behandelt.
Netzklassen
Eine Netzklasse ist das, was ein Netz ist: seine Leiterbahnbreite, sein Abstand, seine Vias und die Ziele, an die die Prüfung es hält. Gib jeder Art von Netz ihre eigene Klasse. Ein Netz, das in Default bleibt, ist eine Warnung, weil die Klasse bestimmt, wie es geroutet wird.
agentee edit board sensor-node class Signal --track-width 0.2mm --clearance 0.2mm --via std
agentee edit board sensor-node class Power --current 2A --max-temp-rise 10C
agentee edit board sensor-node class USB --impedance 90ohm --diff-gap 0.15mm --layers F.Cu
agentee edit board sensor-node class RF --impedance 50ohm --coplanar-gap 0.2mm --solver field --layers F.Cuclass bearbeitet die Klasse mit diesem Namen an Ort und Stelle oder fügt sie hinzu. Was die Ziele tun:
currentwird auf jeder Lage, die die Klasse nutzen darf, gegen IPC-2221 geprüft, beimax_temp_rise(Standard 10 C). Innere Lagen tragen weniger als äußere, und die Prüfung nennt die Breite, die es auf jeder trägt:
error: blinky.board.toml: blinky netclass Power on In2.Cu: 0.6mm carries only 0.451A for a 10C rise, 1A needs 1.7994mm (IPC-2221)impedancewird auf jeder Lage inlayersgeprüft. Lasstrack_widthweg, und die Prüfung löst es auf der ersten Lage; gibwidthspro Lage an, wenn eine Breite nicht auf jede Lage passt.diff_gapmacht die Klasse zu einem Differenzpaar, und seine Impedanz zur Differenzimpedanz.coplanar_gapmacht sie zu einer geerdeten Koplane: Die Kupferfläche hält diesen Abstand auf beiden Seiten, mit der Ebene darunter.solver = "field"prüft die Klasse mit dem GPU-Feldlöser, der Lötstoppmaske und Kupferdicke einbezieht, statt geschlossener Formeln zu verwenden.
Sieh, was der Lagenaufbau liefert
agentee check
agentee show board:sensor-nodeshow gibt die aufgelöste Platine als JSON aus: für jede Klasse und Lage die Geometrie der Leiterbahn (Mikrostrip auf den äußeren Lagen, Stripline innen), die Impedanz, die Breite, die das Ziel erfüllt, und den Strom, den sie trägt. Wenn eine Klasse vom Ziel abweicht, sagt die Prüfung, um wie viel und was zu verwenden ist:
error: lna.board.toml: lna netclass RF on F.Cu: field solver gives 59.4 ohm with solder mask, outside 50ohm +/- 5%, use track_width = "0.2985mm" (50.2 ohm)Füge die Breite ein, führe die Prüfung erneut aus. Gesteuerte Impedanz und Paare geht weiter.
Designregel-Einstellungen
Layout-Checks stammen aus einem Register von Regeln, jede mit einer ID, einer Kategorie und einer Standard-Schweregrad. Die Platine kann sie ausschalten oder ihren Schweregrad ändern:
[drc]
disable = ["silk-width"]
severity = { "starved-thermal" = "error", "via-in-pad" = "warning" }agentee drc NAME --list gibt jede Regel aus, mit Angabe, ob sie auf diese Platine zutrifft und warum. Das Referenzwerk für Designregel-Checks listet sie alle auf.
Checkliste
fabgesetzt, und ein Lagenaufbau-preset, das der Fertiger tatsächlich baut.- Eine Klasse pro Art von Netz: Signal, Stromversorgung, Masse, jede Impedanz, jedes Paar.
- Impedanz- und Stromziele auf den Klassen, nicht Breiten, die von Hand ausgerechnet wurden.
solver = "field"auf jeder Klasse, bei der ein paar Ohm zählen.agentee checksauber, bevor der Schaltplan beginnt, Klassen zu benennen.