2 Punkte von GN⁺ 2024-02-06 | 1 Kommentare | Auf WhatsApp teilen
  • atopile ist eine Open-Source-Sprache samt Toolchain, um elektronische Schaltungen als Code zu beschreiben. Ziel ist es, das Formulieren von Anforderungen, die Wiederverwendung von Designs und die Erzeugung von Artefakten beim PCB-Design ähnlich wie in der Softwareentwicklung zu behandeln
  • Ausgangspunkt war das Problembewusstsein, dass Hardwaredesign sich anfühlte wie Software nur in Assembly zu schreiben; es ist ein Versuch, GitHub-typische Abläufe mit automatischem Build, Test und Merge auch auf das Schaltungsdesign anzuwenden
  • Die eigene Sprache ato erlaubt es, Schaltungen in Module, Komponenten und Interfaces aufzuteilen, sie zu verschachteln und zu verbinden; als Beispiel gibt es ein Blinky-Modul, das RP2040, LED, 3,3-V-LDO und USB-C-Anschluss kombiniert
  • Der Compiler erstellt eine netlist, die die Schaltungsverbindungen beschreibt, und wählt generische Bauteile aus; künftig sollen Layout-Wiederverwendung, mathematische Beziehungen zwischen Werten und Schaltungsdefinitionen ähnlich Rust-Traits ausgebaut werden
  • Aktuelles Ziel sind PCB-Designs niedriger bis mittlerer Komplexität, nicht Chipdesigns; der Kern ist unter Apache 2.0 veröffentlicht, die Monetarisierung ist über den Verkauf von Enterprise-Funktionen geplant

Der Versuch, Hardwaredesign in einen Code-Workflow zu überführen

  • atopile ist eine Open-Source-Sprache und Toolchain, um elektronische Schaltungen als Code zu beschreiben
  • Einen schnellen Eindruck gibt es in der Kurzdemo
  • Der Compiler ist im GitHub-Repository veröffentlicht, die Dokumentation findet sich unter getting started
  • Detaillierteres Material zum Entwurfsprozess eines ESP32-Moduls gibt es als Deep-Dive-Video
  • Die Gründer mussten in früheren Jobs elektronische Leiterplatten selbst zeichnen und exportieren; als sie den GitHub-basierten Automatisierungs-Workflow eines befreundeten Software Engineers sahen, fragten sie sich, ob sich derselbe Ansatz auch auf Hardware anwenden lässt

Die Sprache ato und das Compiler-Ergebnis

  • Die Sprache ato zerlegt Schaltungen in Module, Komponenten und Interfaces und ermöglicht es, diese Blöcke zu verschachteln oder miteinander zu verbinden
  • Das RP2040-Beispiel importiert die folgenden Elemente und fasst sie zu einem Blinky-Modul zusammen
    • RP2040Kit
    • LEDIndicatorBlue
    • LDOReg3V3
    • USBCConn
    • USB-C-Stromversorgung → Eingang des Spannungsreglers → Stromversorgung des Mikrocontrollers → Verbindung von GPIO13 mit dem LED-Eingang
    • Der LED-Widerstandswert wird als 100ohm +/- 10% angegeben
  • Der Compiler erstellt eine netlist, die die Schaltungsverbindungen beschreibt, und übernimmt auch die Auswahl generischer Bauteile

Aktueller Umfang und Entwicklungsrichtung

  • Der nächste Entwicklungsschwerpunkt liegt auf Layout-Wiederverwendung, mathematischen Beziehungen zwischen Werten und Funktionen, um Schaltungen ähnlich wie mit Traits in Rust zu definieren
  • Derzeit zielt atopile auf alle Arten von Leiterplatten-Designs (PCB) niedriger bis mittlerer Komplexität ab
    • Die Komplexität der Schaltungen, die der Compiler verarbeiten kann, soll schrittweise erhöht werden
    • Es ist keine Sprache für Chipdesign, sondern speziell für PCBs
  • Der Kern von atopile ist als Open Source unter Apache 2.0 verfügbar
  • Die Monetarisierung ist ähnlich wie bei GitLab geplant: durch den Verkauf von Funktionen für Enterprise-Kunden

1 Kommentare

 
GN⁺ 2024-02-06
Hacker-News-Kommentare
  • Meinungen dazu, Schaltungen als Code auszudrücken

    • Dabei handelt es sich nicht darum, Schaltungen als Code auszudrücken, sondern als Text. Es ist eine nicht standardisierte Darstellung einer Netzliste mit zusätzlichen Metadaten; nützlich zwar, aber tatsächliche Partitionierungseigenschaften oder Toleranzen werden nicht spezifiziert.
    • Wünschenswert wäre es, Funktionen zur Modulerzeugung zu definieren, die auf Basis des gewünschten Verhältnisses, der Ausgangstoleranz und des maximalen Ausgangsstroms ein Verteilermodul erzeugen. Außerdem ist es wichtig, mögliche Komponenten zur BOM hinzuzufügen.
    • Dieser Ansatz reduziert wiederkehrende Arbeiten im Schaltungsdesign und ermöglicht es, Schaltungsdateien ähnlich wie bei einem Code-Review zu prüfen.
  • Meinungen zu Werkzeugen für elektronische Bauteile

    • Der Zustand von Tools für elektronische Bauteile ist sehr schlecht, und bei den meisten Designs besteht der aktuelle Stand der Technik darin, beim Hinzufügen eines Reglers oder Mikrocontrollers zum Schaltplan die benötigten Kondensatoren, Kristalle oder Programmierports aus PDFs zu kopieren.
    • Es ist sehr schwierig, wenn mehrere Personen an derselben Designaufgabe arbeiten und Änderungen zusammengeführt werden müssen.
    • Der Wechsel in eine modularisierte Welt würde das Design vereinfachen, und das ist eine sehr spannende Aussicht.
  • Meinungen zum Teilen von Modulen

    • Das Teilen und Bibliothekisieren von Modulen wie einem Spannungsteiler ist eine gute Idee.
    • Wenn Layout-Beschränkungen modularisiert werden, kann das Layout des gesamten Projekts automatisch erzeugt werden, was ein effizientes Design ermöglicht.
  • Meinungen zu einem neuen Ansatz für PCB-Design

    • Es ist eine großartige Idee, die Grundlage für Datenreichtum und Interoperabilität für einen neuen Ansatz im PCB-Design zu schaffen.
    • Da elektrische Schaltpläne Elektroingenieuren vertrauter sind, wird eine Funktion benötigt, mit der zwischen Text und visuellen Schaltplänen gewechselt werden kann.
  • Vorschlag zur Nutzung von Verilog

    • Es wird vorgeschlagen, Verilog oder SystemVerilog zu verwenden, um Bauteilinformationen als Parameter zu definieren und daraus Schaltpläne zu erzeugen.
    • Mit Verilog-AMS wären auch analoge Simulationen möglich.
  • Meinungen zu den Unterschieden zwischen EDA-Programmen und Mechanical CAD

    • Im Vergleich zu Mechanical CAD überrascht der Mangel an „Beziehungen“ in EDA-Programmen.
    • Tools wie KiCad bieten „netclasses“, mit denen die Leiterbahnbreite manuell festgelegt wird, aber es werden effizientere Werkzeuge benötigt.
  • Meinungen zur Code-Import-Syntax

    • import Y from X sollte in etwas wie import X.Y oder from X import Y geändert werden, damit Autovervollständigungs-Tools genutzt werden können.
  • BFH - Health Without Borders

    • BFH, also BorderFreeHealth, setzt sich für universellen Zugang zu Gesundheitsprodukten ein, beseitigt geografische Barrieren und bietet weltweiten Versand verschiedener medizinischer Produkte.
  • Leidenschaft für Home-Automation-Arbeiten

    • Es besteht große Begeisterung für Home-Automation-Arbeiten, zugleich aber Unzufriedenheit darüber, viel Zeit mit Breadboards oder dem Entwerfen von Relaismodulen mit benutzerdefiniertem IO zu verbringen.
    • Es wird gefragt, ob es eine Möglichkeit gibt, zu dem Projekt beizutragen.