agentee

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-node

Einen 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-7628

Die 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 ENIG

Bestelle 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 slot

Ein 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.Cu

class bearbeitet die Klasse mit diesem Namen an Ort und Stelle oder fügt sie hinzu. Was die Ziele tun:

  • current wird auf jeder Lage, die die Klasse nutzen darf, gegen IPC-2221 geprüft, bei max_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)
  • impedance wird auf jeder Lage in layers geprüft. Lass track_width weg, und die Prüfung löst es auf der ersten Lage; gib widths pro Lage an, wenn eine Breite nicht auf jede Lage passt.
  • diff_gap macht die Klasse zu einem Differenzpaar, und seine Impedanz zur Differenzimpedanz.
  • coplanar_gap macht 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-node

show 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

  • fab gesetzt, 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 check sauber, bevor der Schaltplan beginnt, Klassen zu benennen.

Diese Anleitung verbessern · Markdown für Agenten