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/projectExit-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.
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.
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.
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
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.
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.
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.