- atopile est un langage et une toolchain open source pour décrire des circuits électroniques avec du code, avec l’ambition de traiter l’expression des exigences de conception PCB, la réutilisation des designs et la génération des livrables comme du développement logiciel
- Le point de départ est le constat que la conception matérielle donnait l’impression de développer un logiciel uniquement en assembleur, et la tentative consiste à appliquer au design de circuits un flux de build, test et merge automatisé à la GitHub
- Son langage maison, ato, permet de découper un circuit en modules, composants et interfaces, puis de les imbriquer et de les connecter entre eux ; un exemple de module Blinky combine un RP2040, une LED, un LDO 3,3 V et un connecteur USB-C
- Le compilateur génère une netlist décrivant les connexions du circuit et sélectionne des composants génériques ; à l’avenir, il doit renforcer la réutilisation de layout, les relations mathématiques entre valeurs et une définition des circuits proche des traits de Rust
- L’objectif actuel vise les conceptions de PCB de complexité faible à moyenne, pas la conception de puces ; le cœur est publié sous Apache 2.0 et la monétisation prévue repose sur la vente de fonctionnalités enterprise
Une tentative de transposer la conception matérielle dans un workflow piloté par le code
- atopile est un langage et une toolchain open source destinés à décrire des circuits électroniques avec du code
- Un aperçu rapide est visible dans cette démo rapide
- Le compilateur est publié dans le dépôt GitHub, et la documentation est disponible sur getting started
- Une ressource plus détaillée sur le processus de conception d’un module ESP32 est proposée dans cette vidéo deep dive
- Les fondateurs devaient, dans leur précédent emploi, dessiner et exporter eux-mêmes des circuits imprimés, puis ont commencé à se demander s’il était possible d’appliquer le même type de workflow au matériel après avoir vu le workflow automatisé sur GitHub d’un ami ingénieur logiciel
Le langage ato et le résultat de la compilation
- Le langage ato permet de décomposer un circuit en modules, composants et interfaces, puis d’imbriquer ces blocs ou de les connecter entre eux
- L’exemple RP2040 assemble les éléments suivants dans un module
BlinkyRP2040KitLEDIndicatorBlueLDOReg3V3USBCConn- alimentation USB-C → entrée du régulateur de tension → alimentation du microcontrôleur → connexion entre GPIO13 et l’entrée de la LED
- la valeur de la résistance de la LED est définie à
100ohm +/- 10%
- Le compilateur génère une netlist décrivant les connexions du circuit et effectue aussi la sélection de composants génériques
- Des explications associées figurent dans l’article cloud components
Portée actuelle et orientation du développement
- Les prochains axes de développement sont la réutilisation de layout, les relations mathématiques entre valeurs et des fonctionnalités de définition de circuits similaires aux traits de Rust
- Aujourd’hui, atopile cible tous les types de conception de circuits imprimés (PCB) de complexité faible à moyenne
- La complexité des circuits que le compilateur peut traiter doit augmenter progressivement
- Ce n’est pas destiné à la conception de puces, mais uniquement aux PCB
- Le cœur d’atopile est open source sous Apache 2.0
- La monétisation est envisagée sur un modèle proche de GitLab, avec la vente de fonctionnalités destinées aux entreprises
1 commentaires
Avis Hacker News
Avis sur l'expression des circuits en code
Avis sur les outils pour composants électroniques
Avis sur le partage de modules
Avis sur une nouvelle approche de la conception PCB
Suggestion d'utiliser Verilog
Avis sur la différence entre les programmes EDA et la CAO mécanique
netclassespour définir manuellement la largeur des pistes, mais des outils plus efficaces sont nécessaires.Avis sur la syntaxe d'import de code
import Y from Xdevrait être remplacé par une forme commeimport X.Youfrom X import Yafin de permettre l'utilisation d'outils d'autocomplétion.BFH - Health Without Borders
Passion pour les travaux de domotique