Zum Inhalt

Dokumentation

Die EngineHall-Engine prüft ein Design dort, wo seine Dateien liegen: auf Ihrem Rechner oder in der CI. Diese Seite beschreibt, was sie liest, die Regeln über Schaltplan, CubeMX und Firmware hinweg und wie ein Ergebnis zu lesen ist. Die KiCad-Regeln für Schaltplan, Bauteile und Platine haben eine eigene Seite.

Was eine Prüfung liest

  • Altium-.SchDoc-Blätter. Das elektrische Ende eines Pins wird aus dem Pin-Datensatz berechnet. Leitungen entscheiden, was verbunden ist, nicht der Text einer Bezeichnung.
  • Ein KiCad-9- oder -10-Projekt: die .kicad_pro, die .kicad_sch-Hierarchie und die .kicad_pcb. Die Pin-Regeln unten laufen auch auf seiner MCU.
  • Eine CubeMX-.ioc-Datei, so wie CubeMX sie geschrieben hat.
  • Von Hand geschriebene Firmware-Referenzen wie GPIOD, GPIO_PIN_8. Erzeugte Defines in main.h werden übersprungen, und Herstellerbäume unter Drivers/ und Middlewares/ werden nicht indiziert.
  • Bei mehreren Platinen nennt eine pcba-studio.toml im Projektstamm jedes Ziel. Pfade müssen im Projekt bleiben, und jede Firmware-Wurzel muss Core/Src enthalten.

Regeln

cross_domain.pin.mismatch
Dasselbe Peripheriesignal ist im Schaltplan und in der .ioc auf verschiedene Pins gelegt.
cross_domain.pin.signal_conflict
Ein Pad trägt ein Netz, das ein Peripheriesignal nennt, während die .ioc diesen Pin einem anderen gibt.
cross_domain.mcu.part_mismatch
Schaltplan und CubeMX-Datei nennen unterschiedliche MCU-Typen. Pin-Vergleiche werden ausgelassen, bis die Eingaben zusammenpassen.
cross_domain.firmware.hardcoded_pin_drift
Von Hand geschriebene Firmware schreibt oder konfiguriert einen Pin, den die .ioc einer Peripherie zuweist. Lesezugriffe zählen nicht.
cross_domain.pin.unconfigured
Ein Peripheriesignal im Schaltplan fehlt in der .ioc.
cross_domain.mcu_config.incomplete
Die .ioc deckt fast nichts vom Schaltplan ab. Es gibt einen Befund statt einer Liste einzeln wahrer und zusammen wertloser Pin-Befunde.
cross_domain.peripheral.unconnected
Eine in der .ioc konfigurierte Peripherie hat keine passende Verbindung im Schaltplan.
schematic.net.mislabelled
Das Pin-Präfix einer Netzbezeichnung widerspricht der geometrischen Verbindung.
schematic.net.open_circuit
Ein Bauteil berührt einen MCU-Pin fast und hört davor auf. Diese Regel ist heuristisch.
stm32.pin.alternate_function_impossible
Der gewählte Pin kann dieses Peripheriesignal nicht führen, nach der MCU-Datenbank, die mit CubeMX installiert wird. Eine Prüfung auf dieser Website überspringt diese Regel und sagt das, weil die Datenbank nicht zu EngineHall gehört.

Was ein Befund enthält

Jeder Befund nennt das Artefakt, eine projektrelative Stelle, den zitierten Beleg, die Regel-ID, die Schwere, den Detektor, die Folge und eine Empfehlung. Der Detektor ist deterministic, heuristic, ai_inferred, external oder manual. Die Prüfung erfindet keinen Befund mit einem Sprachmodell.

Der JSON-Bericht folgt dem Schema unter finding.schema.json. und eine Baseline folgt baseline.schema.json.

Ein leeres Ergebnis

Exit-Status 0 heißt, die gewählte Schwelle war sauber. Er heißt nicht, dass jede Regel gelaufen ist oder jedes konfigurierte Signal verglichen wurde. Prüfen Sie coverage.skipped, die Zahl der Vergleiche und coverage.statistics.uncompared_signals für jede ausgelassene CubeMX-Zuweisung.

enginehall inspect .
enginehall review . --require-rule cross_domain.pin.mismatch

Mehr als eine Platine

Legen Sie pcba-studio.toml in den Projektstamm. Ein Ziel wählen Sie mit enginehall review . --target interface.

pcba-studio.toml
version = 1
default_target = "controller"

[targets.controller]
part = "YOUR_ORDERABLE_STM32_PART"
schematic_component = "U1"
ioc = "config/controller.ioc"
schematic_dir = "hardware/controller"
firmware_roots = ["firmware/controller"]

[targets.interface]
ioc = "config/interface.ioc"
schematic_dir = "hardware/interface"
firmware_roots = ["firmware/interface"]

Bekannte Befunde

enginehall baseline . --reason "Reviewed during initial adoption" schreibt .pcba-baseline.json. Jede Unterdrückung hat eine ID und einen Grund. Eine Prüfung meldet, wie viele Befunde unterdrückt wurden und welche gespeicherten IDs keinen Befund mehr treffen. Committen Sie die Datei. Sie ist die Niederschrift einer Entscheidung, kein Versteck für einen neuen Fehler.

enginehall baseline . --reason "Reviewed during initial adoption"
enginehall review . --baseline .pcba-baseline.json

Geänderte Dateien

enginehall review . --changed-only origin/main beschränkt den Bericht auf Befunde, deren Stelle oder Beleg eine seit diesem Git-Ref geänderte Datei betrifft.

enginehall review . --changed-only origin/main

Berichtsformate

enginehall review . --format text schreibt den Standardbericht. json, markdown und sarif sind die anderen Formate. Leiten Sie stdout um, wenn Sie eine Datei behalten wollen.

enginehall review . --format json > review.json

Continuous Integration

Installieren Sie das geprüfte Wheel von enginehall.com im Job und starten Sie die Prüfung. Die private Newmatik GitHub Action ist für öffentliche Repositories nicht verfügbar. Nach der PyPI-Veröffentlichung kann die Installationszeile auf das versionierte Paket wechseln.

GitHub Actions
permissions:
  contents: read

steps:
  - uses: actions/checkout@v7
    with:
      fetch-depth: 0
  - uses: actions/setup-python@v7
    with:
      python-version: "3.12"
  - run: python -m pip install https://enginehall.com/engine/enginehall-2.0.0-py3-none-any.whl
  - run: enginehall review . --require-rule cross_domain.pin.mismatch