Zum Inhalt

EngineHall arbeitet mit KiCad

EngineHall liest ein KiCad-9- oder -10-Projekt aus seinen Dateien, baut jedes Netz aus der Leitungsgeometrie und prüft Schaltplan, Bauteile, Platine und deklarierte Simulationen. ERC und DRC von KiCad laufen über kicad-cli, wenn es installiert ist. Der Skill kicad-designer bringt einem KI-Agenten bei, KiCad-Projekte zu schreiben und zu verifizieren.

Was eine Prüfung liest

Die Engine ist reines Python und liest die S-Expression-Dateien von KiCad selbst. Sie braucht weder KiCad noch pcbnew und schreibt nie in das Projekt.

  • Die .kicad_pro und die ganze .kicad_sch-Hierarchie. Netze entstehen aus Leitungen, Verbindungspunkten, Labels, Blattpins und Versorgungssymbolen, nach Verbindungsregeln, die am Netzlistenexport von kicad-cli gemessen wurden.
  • Die .kicad_pcb: Footprints, Pads, Leiterbahnen, Vias, die Edge.Cuts-Kontur, Bestückungsdruck und Courtyards, in den Netzformaten von KiCad 9 und KiCad 10.
  • pcba-requirements.toml, falls vorhanden: Versorgungsspannungen, Derating-Grenzen, Bestückungsart, Steckerbelegungen und SPICE-Testbenches.
  • Bauteildaten in JSON: Versorgungsbereiche, absolute Grenzwerte, Logikpegel und die Beschaltung, die ein Bauteil verlangt.
  • Mit einem STM32 auf den Blättern und einer CubeMX-.ioc im Projekt laufen die Pin-Regeln über Schaltplan, CubeMX und Firmware wie bei Altium.

Ausführen

enginehall doctor --no-ping
enginehall inspect path/to/project
enginehall review path/to/project
enginehall review path/to/project --format sarif > review.sarif
enginehall kicad netlist path/to/project

Exit-Status 0 heißt, nichts erreicht die gewählte Schwelle (--fail-on), 1, dass etwas sie erreicht, 2, dass die Prüfung nicht laufen konnte. Befunde unter der Schwelle stehen trotzdem im Bericht. Die Suche findet die .kicad_pro; bei mehreren wählen Sie eine mit --kicad-project. Text-, Markdown-, JSON- und SARIF-Berichte enthalten den Status jeder Regel, sodass ein Editor oder eine Code-Scanning-Ansicht das Blatt, die Referenz, den Pin oder das Platinenelement öffnet, das ein Befund nennt.

Befunde, Baselines und CI

Was sie prüft

Jede Regel unten endet im Bericht mit einem Status: bestanden, fehlgeschlagen, Info, nicht geprüft mit Grund oder nicht anwendbar. Eine Regel, die nichts beurteilt hat, gilt als nicht geprüft, nie als bestanden.

Schaltplan und Verbindungen

ERC findet, was die Regeln von KiCad kennen. Diese Regeln ergänzen die Fehler, nach denen ein Reviewer von Hand sucht.

kicad.erc.violation
Jede Verletzung, die der ERC von KiCad meldet; Meldungen zu Bibliothekstabellen als Info. Braucht kicad-cli.
kicad.netlist.parity
Die Verbindungen der Engine im Vergleich mit dem Netzlistenexport von KiCad. Braucht kicad-cli.
kicad.power.rail_without_source
Ein Netz mit Versorgungseingängen und ohne Versorgungsausgang oder PWR_FLAG.
kicad.power.pin_without_dc_path
Ein IC-Versorgungspin, der keine Versorgung über Leitungen, Widerstände bis 1 Ohm, Induktivitäten, Ferrite, Sicherungen oder Brücken erreicht: nur über einen Kondensator oder gar nicht.
kicad.power.decoupling_missing
Ein IC-Versorgungsnetz ohne Kondensator nach Masse.
kicad.part.shorted
Ein zweipoliges Bauteil mit beiden Pins am selben Netz. Net Ties, Brücken und nicht bestückte Bauteile ausgenommen.
kicad.pin.input_floating
Ein Eingangspin ohne Verbindung und ohne No-Connect-Markierung.
kicad.net.pull_up_missing
Ein I2C-Netz oder ein Open-Drain-Pin ohne Widerstand zu einer Versorgung.
kicad.label.global_single_sheet
Ein globales Label, das nur auf einem Blatt vorkommt (Info).
kicad.label.single_connection
Ein Label, dessen Netz höchstens einen Pin erreicht.
kicad.net.name_hygiene
VBUS ohne USB-Stecker; eine Versorgung ohne Spannung im Namen (Info).

Bauteile und Projektanforderungen

Beurteilt gegen Bauteildaten und pcba-requirements.toml. Ein Bauteil ohne Daten oder eine Versorgung unbekannter Spannung wird als nicht beurteilt aufgeführt.

kicad.component.supply_range
Die Versorgung jedes Versorgungspins im Betriebsbereich und unter dem absoluten Grenzwert des Bauteils; Massepins an Masse.
kicad.component.capacitor_derating
Die Spannung an einem Kondensator gegen seine Nennspannung und die Grenze seiner Klasse: standardmäßig Keramik 50 %, Elektrolyt 80 %, Tantal 50 %, Folie 70 %.
kicad.component.resistor_power
Die Leistung in einem Widerstand zwischen zwei Versorgungen gegen 50 % seiner Nennleistung.
kicad.component.logic_level
Ausgangspegel des Treibers gegen Schwellen und Eingangsgrenzen der Empfänger an einem Netz; ein Pull-up über der Grenze eines Eingangs.
kicad.component.required_connection
Was die Bauteildaten von einem Pin verlangen: einen Kondensator nach Masse und seinen Wert, keine offene Leitung, einen Pull-up oder Pull-down.
kicad.connector.pin_assignment
Jeder Steckerpin führt das Signal, das die deklarierte Schnittstelle nennt.

Platine und Newmatik-Hausregeln

Die Hauswerte kommen aus demselben Modul, das die Altium-Steuerung verwendet; Befundtitel tragen die Haus-ID, etwa NM-FID-001. Als vorgeschlagen markierte Werte bleiben Vorschläge.

kicad.drc.violation
Jede Verletzung und jedes unverbundene Element, das der DRC von KiCad meldet. Braucht kicad-cli.
kicad.drc.schematic_parity
Platine und Schaltplan nicht im Gleichstand, nach der Paritätsprüfung von KiCad. Braucht kicad-cli.
kicad.dfm.fiducials
NM-FID-001 bis 006: drei Passermarken je SMD-Seite, 1,0 mm rundes Kupfer, 3,0 mm Lackfreistellung, keine Paste, kein Netz, 3 mm vom Rand, ein echtes Dreieck.
kicad.dfm.track_angle
NM-ROUTE-001: Leiterbahnen in 0, 45 oder 90 Grad.
kicad.dfm.via_in_pad
NM-VIA-001: kein Via in oder an einem Pad.
kicad.dfm.via_spacing
NM-VIA-002: Vias desselben Netzes mindestens 2 mm auseinander (vorgeschlagen).
kicad.dfm.model_missing
NM-3D-001: ein STEP-Modell für jeden Footprint, und die Datei existiert.
kicad.dfm.silkscreen_outside
NM-SILK-001: kein Bestückungsdruck außerhalb der Platinenkontur. Textausdehnungen werden geschätzt, daher sind Textbefunde heuristisch.
kicad.dfm.barcode_field
NM-BC-001: ein quadratisches Feld im Bestückungsdruck mit BC, mindestens 5 mm, bevorzugt 7 mm.
kicad.dfm.bottom_side_smd
Kein SMD-Bauteil auf der Unterseite einer als einseitig deklarierten Platine.
kicad.dfm.smd_edge_clearance
SMD-Kupfer mindestens im deklarierten Abstand zum Platinenrand.
kicad.dfm.test_point_coverage
Netze mit zwei oder mehr Pads und ohne Testpunkt-Footprint.
kicad.dfm.courtyard_overlap
Die Courtyards zweier Bauteile auf einer Seite überlappen, verglichen als konvexe Hüllen.

Simulation

Deklarierte ngspice-Testbenches mit Sollbereich, ausgeführt, wenn ngspice installiert ist.

simulation.spice.testbench
Eine deklarierte Testbench, deren Messwert außerhalb ihres Soll- oder Warnbereichs liegt. Braucht ngspice.

Die Prüfungen von KiCad, wenn KiCad installiert ist

kicad-cli und ngspice sind optional. Die Prüfung verwendet sie, wenn sie sie findet, und sagt es, wenn nicht.

ERC und DRC über kicad-cli
Mit kicad-cli auf dem Rechner führt die Prüfung den ERC von KiCad, seinen DRC mit Schaltplanparität und den Netzlistenexport aus. Deren Befunde tragen den Detektor external. kicad-cli arbeitet auf einer temporären Kopie, weil es neben die geöffnete Projektdatei eine .kicad_prl schreibt.
Eine zweite Netzliste
kicad.netlist.parity vergleicht die Netze der Engine mit dem Export von KiCad, sodass ein Fehler im Leser zu einem Befund wird statt zu einer falschen Antwort.
ngspice-Testbenches
Deklarieren Sie ein Deck und seinen Sollbereich, und die Prüfung führt es aus und vergleicht den Messwert. Decks, die Programme starten, Dateien schreiben oder Dateien außerhalb des Projekts einbinden, werden abgewiesen; ngspice läuft mit -n in einem leeren temporären Ordner, mit Zeitlimit.
Fehlt es, ist es nicht geprüft
Ohne kicad-cli oder ngspice werden deren Regeln als nicht geprüft mit Grund gemeldet, nie als bestanden. enginehall doctor zeigt, was dieser Rechner hat.

Was die Dateien nicht sagen können

Manche Zusagen stehen nicht im Schaltplan: die Versorgungsspannungen, wie weit ein Kondensator ausgelastet werden darf, welcher Steckerpin welches Signal führt, ob die Platine einseitig bestückt wird. Schreiben Sie sie in pcba-requirements.toml neben das Projekt. Eine fehlerhafte Datei beendet die Prüfung mit Exit 2, weil eine stillschweigend ignorierte Zusage das Ergebnis wertlos machen würde.

Eine aus dem Netznamen gelesene Spannung wie +3V3 macht einen Befund heuristisch; eine deklarierte Versorgung macht ihn deterministisch. Bauteildaten verwenden dasselbe JSON-Schema wie die generischen Beispiele der Engine; reale Bauteile kommen in eine Projektdatei.

pcba-requirements.toml
version = 1

[rails."+3V3"]
voltage = 3.3
tolerance = 0.05

[board]
assembly = "single-sided"
smd_edge_clearance_mm = 5.0

[[connectors]]
ref = "J2"
interface = "debug"
pins = { "1" = "+3V3", "2" = "SWDIO", "3" = "SWCLK", "4" = "GND" }

[[simulations]]
name = "sense divider"
netlist = "sim/divider.cir"
measure = "vout"
pass = [1.60, 1.70]

In einem EngineHall-Projekt

Die KiCad-Dateien bleiben in Ihrem Git-Repository. Der Arbeitsbereich zeigt sie, sammelt ihr Review und gibt sie frei.

Vorschau im Browser
Verbinden Sie ein GitHub- oder GitLab-Repository, und .kicad_sch- und .kicad_pcb-Dateien öffnen sich im Browser, auf jedem Branch und Commit, neben PDFs, STEP-Modellen und Quellcode.
Prüfläufe je Commit
enginehall review --publish, auf Ihrem Rechner oder in Ihrem CI-Job, schickt den Bericht eines Commits ins Projekt: Befunde, Fundstellen und Abdeckung, nie die Designdateien.
Design-Reviews
Reviewer kommentieren einen Punkt auf einem Schaltplanblatt oder auf der Platine und stimmen der Revision zu oder bitten um Änderungen.
Freigaben
Eine Freigabe listet ihre Blocker, sammelt die Zustimmung jeder Organisation, friert die Dokumentation ein und übergibt das Paket an Gerbtrace.

Den Arbeitsbereich ansehen

Der Skill kicad-designer

KiCad-Dateien sind reiner Text, also kann ein Agent Schaltpläne, Bibliotheken und Platinen direkt schreiben und mit kicad-cli belegen. Das macht Fehler billig. Der Skill bringt den Agenten dazu, wie ein sorgfältiger Ingenieur zu arbeiten.

Leitungen, nicht nur Labels
Ein Blatt, auf dem jeder Pin ein Netzlabel trägt, ist eine Netzliste, kein Schaltplan. Der Skill zeichnet Funktionsblöcke, die miteinander verdrahtet sind, Versorgungssymbole für Schienen und Verbindungspunkte an Abzweigen, und zeigt das erste Blatt, bevor er die übrigen erzeugt.
Verbindungen aus der Datei belegt
Nach jedem Erzeugungslauf exportiert der Agent die Netzliste von KiCad, vergleicht sie Netz für Netz mit der beabsichtigten und führt dann enginehall review aus. ERC allein übersieht eine Leitung, die zwei Netze kurzschließt, und einen Abzweig ohne Verbindungspunkt.
Pins aus dem Datenblatt
Jedes nicht passive Symbol wird gegen die Pintabelle des Bauteils geprüft, und ein Alternativbauteil gegen dieselbe Belegung.
Abdeckung, keine Abnahme
Das Design steht in einem Skript oder einer Datendatei und wird neu erzeugt, nie von Hand bearbeitet. Der Agent berichtet, was ERC, DRC und die Prüfung abgedeckt haben, und nennt die nicht geprüften Regeln mit ihren Gründen.

Einrichten

  1. Schritt 1

    EngineHall installieren

    Installieren Sie die Engine wie auf der Installationsseite beschrieben. KiCad 9 oder 10 und ngspice sind optional; enginehall doctor --no-ping zeigt, ob sie gefunden werden.

  2. Schritt 2

    Skill hinzufügen

    Laden Sie kicad-designer.zip von dieser Seite herunter und fügen Sie es als Skill hinzu: in Claude hochladen oder in den Skill-Ordner Ihres Agenten entpacken.

  3. Schritt 3

    Projekt prüfen

    Führen Sie enginehall review auf dem Ordner mit der .kicad_pro aus, oder bitten Sie Ihren Agenten darum. Lesen Sie die Regelstatus, bevor Sie einem sauberen Ergebnis vertrauen.

Das Design bleibt, wo es ist

Die Prüfung läuft auf Ihrem Rechner oder in Ihrer CI. An enginehall.com wird nichts über das Design gesendet, außer Sie veröffentlichen einen Bericht, und dann nur seine Befunde, Stellen und Abdeckung. Der Anbieter Ihres Agenten sieht, was Sie dem Agenten geben.

Was bei Ihnen bleibt

  • Gerber-, Bohr-, Bestück- und Stücklistendateien gehören zu Gerbtrace. Die Prüfung liest KiCad-Quelldateien, nie Fertigungsdaten.
  • Busse und Bus-Aliasse werden noch nicht aufgelöst. Ein Hinweis sagt das, und der Netzlistenvergleich zeigt die betroffenen Netze, wenn kicad-cli läuft.
  • Netzklassen, eigene DRC-Regeln und Flächenfüllungen gehören zu KiCad. Sie erreichen die Prüfung nur über kicad.drc.violation.
  • Die Bauteildaten, die die Engine mitliefert, sind generisch und erfunden. Reale Bauteile kommen in die Bauteildatei Ihres Projekts, mit der Seite im Datenblatt.
  • Eine saubere Prüfung deckt die als bestanden markierten Regeln mit ihren nicht beurteilten Elementen ab, sonst nichts. Sie ist eine unterstützte Prüfung, keine Abnahme.

KiCad wird hier genannt, um die Kompatibilität zu beschreiben. EngineHall ist nicht mit dem KiCad-Projekt verbunden und wird von ihm nicht unterstützt.