PCB-Design (KiCad 8/9)
Erstellen Sie fertigbare, syntaktisch korrekte KiCad-PCB-Dateien und geben Sie sie als .kicad_pcb-S-Expression-Dateien aus. KiCad ist das primäre Framework. Verlassen Sie sich nicht auf Ihr Gedächtnis für das Dateiformat – verwenden Sie die KiCad-Entwicklerdokumentation und die mitgelieferten, validator-geprüften Assets als Quelle der Wahrheit.
Ziel-Dialekt: KiCad 9 ((version 20241229)). KiCad 8 (20240108) wird mit den Unterschieden unterstützt, die in references/pcb-file-format.md#version-dialect-matrix aufgeführt sind – insbesondere die Layer-Ordnungszahlen, die sich in 9 erneut geändert haben. Mischen Sie niemals Dialekte: v6/v7-Ära (tstamp ...) oder v6 (width ...)-Grafiken in einem v8/v9-Header sind die häufigste Ursache für Dateien, die nicht geladen werden können.
Nicht verhandelbar
- Ein Dialekt pro Datei. Header-
version,generator_version, Track-UUIDs, Strich-Syntax und Footprint-Felder müssen alle mit der deklarierten Version übereinstimmen. - Eine Platine ist eine vollständige Datei, kein Ausschnitt. Sie muss sich in KiCad öffnen lassen und die strukturelle Prüfung unten bestehen.
- Konnektivität ist geometrisch. Eine Leiterbahn mit der richtigen Netznummer, die weder ein Pad noch eine andere Leiterbahn berührt, ist immer noch unverlegt.
- Keine stillschweigenden elektrischen Annahmen. Pin-zu-Netz-Zuordnung, Polarität, Footprint-Auswahl und Sicherheitsabstände müssen als Annahmen deklariert oder erfragt werden.
- Behaupten Sie keine Fertigungskonformität ohne verifizierte Fertigungsgrenzen. Fertigungszahlen sind stackup- und herstellerabhängig.
- Keine Release-Behauptung ohne bestandenen Report. Eine Platine ist nur dann release-bereit, wenn
report/design-report.jsonprofessional_claim: trueanzeigt. Andernfalls listen Sie die fehlgeschlagenen Gates und die fehlenden Abnahmen auf.
Automatische Design-Pipeline (bevorzugt für neue Platinen)
Erstellen Sie keine Release-Platine von Hand, wenn diese Pipeline dies tun kann. Die Pipeline wandelt eine Designspezifikation in eine Platine mit echten KiCad-Bibliotheks-Footprints um, verlegt sie mit Freerouting, führt KiCad DRC + DFM + Netlist-Parität durch, exportiert Gerber/Bohr/Position/STEP/IPC-D-356 und schreibt einen Gate-Report. Jede Ausgabe, die in profile.fab_outputs aufgeführt ist, ist ein hartes Gate. Verwenden Sie die manuelle Erstellung nur, um eine generierte Platine zu überprüfen oder zu patchen.
# 1. Absicht validieren (kein KiCad erforderlich)
python3 scripts/design_spec.py validate specs/led-blinky.json
# 2. Vollautomatisches Design. Wählt automatisch lokal, wenn KiCad 9 pcbnew, Java 25
# und Freerouting 2.5.0 vorhanden sind, andernfalls wird GitHub Actions verwendet.
python3 scripts/design_pipeline.py all specs/led-blinky.json
# Elektrische Quelle der Wahrheit ist ein Schaltplan oder eine Netzliste; die Spezifikation liefert Mechanik/Regeln.
python3 scripts/design_pipeline.py all specs/led-blinky.json --schematic design.kicad_sch
python3 scripts/design_pipeline.py all specs/led-blinky.json --netlist design.net
# Vorhandene Platine: verlegen/prüfen/exportieren ohne Neuerstellung.
python3 scripts/design_pipeline.py all specs/led-blinky.json --board existing.kicad_pcb --skip-build
# Nur einzelne Phasen
python3 scripts/design_pipeline.py build specs/led-blinky.json -o build/led-blinky
python3 scripts/design_pipeline.py route build/led-blinky/led-blinky.kicad_pcb --spec specs/led-blinky.json
python3 scripts/design_pipeline.py check build/led-blinky/led-blinky.kicad_pcb --spec specs/led-blinky.json -o build/led-blinky/check
python3 scripts/design_pipeline.py fab build/led-blinky/led-blinky.kicad_pcb --spec specs/led-blinky.json -o build/led-blinky/fab
Kanonische Eingaben. specs/<name>.json ist die Quelle der Wahrheit für den automatischen Pfad. Verwenden Sie schemas/design-spec.schema.json und specs/led-blinky.json als Vorlage. Bei einer natürlichsprachlichen Anfrage schreiben Sie zuerst die Spezifikation, geben Sie Annahmen in assumptions[] an und führen Sie dann die Pipeline aus. Bei einem KiCad-Schaltplan/einer Netzliste ist die Netzliste maßgeblich für Komponenten/Pad-Netze; die Spezifikationsüberlagerung liefert Platinengröße, Stackup, Regeln, Platzierung und Verlegung.
Platinenklassen-Profile. Das Profil wählt die Regelhülle und die Release-Gates aus:
| Profil | Automatisierung | Erforderliche menschliche Abnahme |
|---|---|---|
2layer-low-speed | Vollständig: Erstellen, Platzieren, Verlegen, DRC, DFM, Fab | keine |
4layer-impedance / 6layer-impedance | Gesteuert: Stackup + Impedanz + Längenabgleich-Prüfungen | stackup, impedance |
rf-mixed-signal | Unterstützt; HF-Netze sollten von Hand neu verlegt werden | rf, emc, thermal |
flex-rigid | Unterstützt | mechanical, flex_bend, assembly |
high-voltage | Gesteuert; Abstands-/Kriechstromprüfungen | safety, creepage |
professional_claim ist nur dann wahr, wenn jedes harte Gate bestanden wird und jede erforderliche Abnahme in signoff.completed aufgeführt ist. HF-, EMV-, thermische, Sicherheits- und Flex-Ermüdung können nicht von der Pipeline zertifiziert werden; sagen Sie dies anstelle einer Überbehauptung. Notieren Sie einen Prüfer in signoff.reviewer.
Backend-Auswahl: lokal oder CI (automatisch). Für die vollständige Automatisierung werden pcbnew (KiCad 9 Python), kicad-cli, Java 25 und freerouting-2.5.0.jar (Freerouting 2.5.0 ist für Java 25 erstellt) benötigt. --backend auto ist die Standardeinstellung: Es prüft die aktuelle Umgebung und läuft lokal, wenn alle angeforderten Phasen ihre Werkzeuge haben, andernfalls wird .github/workflows/design.yml ausgelöst. Dieser Workflow läuft im offiziellen kicad/kicad:9.0-Container, installiert eine JRE 25, lädt Freerouting herunter, führt die gesamte Pipeline aus und lädt design-output + design-report hoch.
| Umgebung | Prüfergebnis | Ausgewähltes Backend |
|---|---|---|
| Echter PC mit KiCad 9 + Java 25 + jar | alle Phasen bereit | lokal |
Termux / Container ohne KiCad; gh authentifiziert; sauberes gepushstes Repository | pcbnew/kicad-cli fehlt | CI |
| Keine lokalen Werkzeuge und keine nutzbare CI | fehlt | lokal, schlägt mit der Liste der fehlenden Werkzeuge fehl |
python3 scripts/env_probe.py # Was kann dieser Rechner ausführen?
python3 scripts/env_probe.py --json # Maschinenlesbare Prüfung
python3 scripts/design_pipeline.py all specs/led-blinky.json # Auto
python3 scripts/design_pipeline.py all specs/led-blinky.json --backend local
python3 scripts/design_pipeline.py all specs/led-blinky.json --backend ci --ci-download build/ci
CI-Dispatch ist konservativ: Es verweigert einen unbereinigten Arbeitsbaum oder einen Branch, der seinem Upstream voraus ist, da Actions die gepushte Revision auscheckt und ansonsten die falsche Platine entwerfen würde. Committen und pushen Sie zuerst die Spezifikation, Profile, Schemas, Skripte und den Workflow. gh muss installiert und authentifiziert sein (pkg install gh, dann gh auth login). Verwenden Sie --ci-repo owner/name nur, wenn Sie ein anderes Repository als das aktuelle auslösen. CI-Läufe werden standardmäßig überwacht, sodass der Exit-Code professional_claim widerspiegelt. Fügen Sie --no-ci-watch hinzu, um sofort nach dem Dispatch zurückzukehren.
Phasenbefehle (build, route, check, fab) laufen lokal, da CI die nicht committeten Phasendateien nicht sehen kann; verwenden Sie all --backend ci für einen End-to-End-CI-Lauf. Innerhalb von GitHub Actions bleibt die Pipeline immer lokal, sodass sich ein CI-Lauf nie selbst erneut auslöst.
Iterationsregel. Wenn ein Gate fehlschlägt, ändern Sie die Spezifikation (Platzierung, Breite, Abstand, Stackup, Klassen-Zuweisung) und generieren Sie neu. Bearbeiten Sie keine generierte Platine und behaupten Sie dann, dass der Report gilt; der Report zeichnet die genau aufgelöste Spezifikation auf (<name>.spec.json).
Abrufquellen (vor dem Raten verwenden)
| Ressource | URL | Verwendung für |
|---|---|---|
| S-Expression-Einführung (allgemeine Syntax) | https://dev-docs.kicad.org/en/file-formats/sexpr-intro/index.html | Syntax, Anführungszeichen, Koordinaten, Layer, Footprints, Pads, Grafiken, Zonen, Gruppen |
| Board-Dateiformat | https://dev-docs.kicad.org/en/file-formats/sexpr-pcb/index.html | .kicad_pcb-Top-Level-Abschnitte, Header, Layer, Setup, Netze, Leiterbahnen, Zonen |
| Footprint-Bibliotheksformat | https://dev-docs.kicad.org/en/file-formats/sexpr-footprint/index.html | .kicad_mod-Kontext und Footprint-Felder |
| KiCad-Dateiformat-Index | https://dev-docs.kicad.org/en/file-formats/index.html | Schaltplan-/Symbolformate, wenn ein passender Schaltplan benötigt wird |
| KiCad-DRC-Dokumentation | https://docs.kicad.org/9.0/en/pcbnew/pcbnew.html#design-rule-checking | Was die echte DRC prüft und welche Regeln konfigurierbar sind |
| KiCad-Benutzerdefinierte Designregeln | https://docs.kicad.org/9.0/en/pcbnew/pcbnew.html#custom-design-rules | .kicad_dru-Syntax und Regelausdrücke |
| JLCPCB-Fähigkeiten | https://jlcpcb.com/capabilities/pcb-capabilities | Aktuelle Fertigungsgrenzen (vor der Verwendung überprüfen) |
| IPC-2221 / IPC-2152 | https://www.ipc.org/ | Grundlagen zu Leiterbahnbreite/Strom, Abstand und Kriechstrom |
Die Entwicklerdokumentation hinkt an manchen Stellen hinterher (sie beschreibt immer noch Pre-v7 (width ...)-Grafiken und (tstamp ...)-Leiterbahnen). Wenn die Dokumentation und eine echte Datei aus der Ziel-KiCad-Version widersprüchlich sind, folgen Sie der echten Datei und notieren Sie die Abweichung.
Lokale Referenzen und Assets
| Pfad | Inhalt |
|---|---|
references/pcb-file-format.md | Versionsmatrix, Abschnitte, Layer-Ordnungszahlen, Setup/Stackup, Footprints, Pads, Leiterbahnen, Zonen, Checkliste |
references/sexpr-primitives.md | Token-Syntax, Anführungszeichen, Striche, Effekte, UUIDs, Pad/Grafik/Zone-Primitive, versionssensitive Token |
references/practical-rules.md | Stackup, Platzierung, Verlegung, Strom/Breite, SI/PI/EMV, Impedanz, thermisch, mechanisch, DFM/DFA, Voreinstellungen |
assets/minimal-2layer.kicad_pcb | Validator-geprüfte leere 2-Lagen-Platine (als Ausgangspunkt kopieren) |
assets/example-led.kicad_pcb | Validator-geprüftes verlegtes Beispiel: THT-Header, SMD-Widerstand/LED, Vias, Courtyard, Montageloch |
assets/example.kicad_dru | Benutzerdefinierte Regelbeispiele (Netzklassenbreite, Hochspannungsabstand) |
schemas/design-spec.schema.json | Kanonische automatische Design-Spezifikation (Platine, Regeln, Netze, Platzierung, Stackup, Gates) |
profiles/*.json | Platinenklassen-Regelhüllen und Release-Gates |
specs/led-blinky.json | Referenzspezifikation für die automatische Pipeline |
scripts/design_spec.py | Abhängigkeitsfreier Spezifikationsvalidator, Netlist-Importer, Impedanz-/Stromberechnungen, Gate-Report |
scripts/pcb_build.py | Spezifikation → KiCad-Platine mit echten Bibliotheks-Footprints (pcbnew) |
scripts/pcb_route.py | DSN-Export → Freerouting → SES-Import → Zonenfüllung |
scripts/pcb_check.py | Strukturelle, DRC-, DFM-, Netlist-Paritäts- und Längenabgleich-Gates |
scripts/pcb_fab.py | Gerber, Bohrung, Position, STEP, IPC-D-356 und Fertigungs-README |
scripts/design_pipeline.py | Orchestriert das gesamte automatische Design und schreibt den Release-Report; --backend auto wählt lokal oder CI |
scripts/env_probe.py | Erkennt pcbnew, kicad-cli, Java 25, Freerouting, gh/git und empfiehlt lokal vs. CI |
scripts/ci_dispatch.py | Dispatched .github/workflows/design.yml, überwacht optional und lädt Artefakte herunter |
scripts/check_pcb.py | Abhängigkeitsfreier struktureller/geometrischer Pre-Flight-Checker |
.github/workflows/design.yml | CI: Build, Route, DRC/DFM, Fab-Export und Report im KiCad 9 Container |
Verwenden Sie die Suchbegriffe in diesen Referenzen, bevor Sie eine ganze Dokumentenseite abrufen: version, generator_version, layers, stackup, setup, net, footprint, property, attr, pad, stroke, segment, via, zone, keepout, filled_polygon, Edge.Cuts, embedded_fonts, remove_unused_layers, courtyard, impedance, differential, 3W, return path, DFM, trace width.
Manueller / Überprüfungs-Workflow
Verwenden Sie zuerst die automatische Pipeline. Dieser Workflow ist für die Überprüfung einer generierten Platine, das Patchen eines Designs, dessen Spezifikation eine Einschränkung nicht ausdrücken kann, oder für die Arbeit in einer Umgebung, in der die Pipeline-Werkzeuge nicht verfügbar sind.
-
Klären Sie die Designabsicht (nicht stillschweigend bei kritischen Randbedingungen raten).
- Platinenfunktion, Komponenten, Steckverbinder, Strom-/Masse-Netze, Zielgröße und mechanische Randbedingungen.
- Fertigungsannahmen: Lagenanzahl (Standard 2), Einheiten (mm), Kupfergewicht, Stackup, Oberflächenfinish, Bestückungsprozess.
- Zielfreigabe von KiCad. Standardmäßig KiCad 9, sofern der Benutzer nichts anderes angibt.
- Wenn die Anforderungen unterbestimmt sind, geben Sie die Annahmen explizit in der Antwort an und codieren Sie angemessene Standardwerte in die Datei.
-
Modellieren Sie zuerst die elektrische Netzliste.
- Definieren Sie
(net 0 "")plus jedes benannte Netz, bevor Elemente darauf verweisen. Halten Sie die Ordnungszahlen stabil und eindeutig. - Stellen Sie sicher, dass jedes Pad, jede Leiterbahn, jedes Via und jede Zonen-
net-Ordnungszahl existiert; stellen Sie sicher, dass die Pad-(net N "NAME")-Namen exakt mit der Netztabelle übereinstimmen. - Wenn ein passender Schaltplan existiert, benötigen Footprints
path/Referenz-Links; eine Board-Only-Design sollte gegebenenfalls alsboard_onlymarkiert werden.
- Definieren Sie
-
Definieren Sie Mechanik, Layer und Stackup.
- Beginnen Sie mit
assets/minimal-2layer.kicad_pcbund halten Sie dessen Header/Layer/Setup gültig. - Setzen Sie den
layers-Abschnitt mit kanonischen Namen und den korrekten Ordnungszahlen (siehe Tabelle inreferences/pcb-file-format.md;B.CrtYd/F.CrtYdsind nicht sequentiell). - Setzen Sie
(general (thickness 1.6) (legacy_teardrops no)),(paper "A4")und ein realistischesstackup, wenn der Stackup wichtig ist. - Stellen Sie eine geschlossene
Edge.Cuts-Grenze bereit (Linien/Bögen oder ein Rechteck/Kreis/Polygon). Halten Sie Kupfer vom Rand fern.
- Beginnen Sie mit
-
Footprints platzieren.
- Verwenden Sie vollständige eingebettete Footprint-Definitionen:
layer,uuid,at,property-Felder (Reference/Value),attr smd|through_hole, Pads, Siebdruck,F.CrtYd/B.CrtYdCourtyard und optionalF.Fabund ein 3D-Modell. - Platzieren Sie nach Funktion: zuerst Steckverbinder, Stromeinspeisung und MCU; gruppieren Sie verwandte Schaltungen; trennen Sie analoge/digitale/verrauschte Domänen.
- Setzen Sie Entkopplungskondensatoren an jeden IC-Strom-/Masse-Pin mit minimaler Schleifenfläche; Werte/Gehäuse gemäß Datenblatt oder genannten Annahmen.
- Respektieren Sie Courtyard- und Bestückungsabstände; halten Sie Referenzen lesbar und polarisierte Teile markiert.
- Verwenden Sie vollständige eingebettete Footprint-Definitionen:
-
Konnektivität verlegen.
segmentfür Leiterbahnen,viafür Lagenwechsel,arcfür gebogene Leiterbahnen. KiCad 8/9-Leiterbahnen verwenden(uuid ...), nicht(tstamp ...)(v6/7 verwendeten nochtstamp).- Setzen Sie
widthpro Element basierend auf Strom-/Stackup-Absicht; Strom breiter als Signale. Netzklassen leben in der Projekt-/Designregel-Datei, nicht in.kicad_pcb. - Halten Sie Leiterbahnen kurz/direkt, bevorzugen Sie 45°-Winkel, minimieren Sie Vias auf Hochgeschwindigkeitspfaden.
- Bewahren Sie Rückwege: Verlegen Sie keine Hochgeschwindigkeits-/empfindlichen Leiterbahnen über Ebenenunterbrechungen. Wenden Sie ~3W-Abstand für übersprechgefährdete parallele Läufe an.
- Impedanz/Differentialpaare: Verwenden Sie die Profile
4layer-impedance/6layer-impedance; diese übernehmen die korrekte Stackup- und Impedanzberechnung.
-
Entwurfsregelprüfung (DRC) und DFM.
- Führen Sie DRC und DFM aus der Pipeline oder manuell in KiCad aus. Beheben Sie alle Fehler.
- Überprüfen Sie die Netlist-Parität: Jedes Netz in der Spezifikation muss auf der Platine verbunden sein. Keine offenen Pads, es sei denn, sie werden über
(property "Board_Only.NoConnect" "true")alsboard_onlymarkiert. - Erstellen Sie einen Fertigungssatz: Gerber, Bohrungen, Position, STEP, IPC-D-356.
- Validieren Sie die strukturelle Integrität mit
check_pcb.py.
-
Letzte Prüfung und Freigabe.
- Überprüfen Sie, ob alle Netze verbunden und dokumentiert sind.
- Stellen Sie sicher, dass die
release_report.jsonalle Gates mitpassed: trueundprofessional_claim: trueanzeigt. - Wenn alle Bedingungen erfüllt sind, geben Sie sie als fertigungsbereit frei. Wenn nicht, listen Sie die verbleibenden Probleme auf.