2 points par GN⁺ 2024-02-06 | 1 commentaires | Partager sur WhatsApp
  • 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 Blinky
    • RP2040Kit
    • LEDIndicatorBlue
    • LDOReg3V3
    • USBCConn
    • 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

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

 
GN⁺ 2024-02-06
Avis Hacker News
  • Avis sur l'expression des circuits en code

    • Il ne s'agit pas d'exprimer des circuits en code, mais en texte. C'est une représentation non standard d'une netlist avec des métadonnées ajoutées ; c'est utile, mais cela ne précise pas réellement des caractéristiques de partitionnement ni les tolérances, par exemple.
    • Il serait préférable de définir des fonctions de génération de modules afin de créer un module de distribution en fonction du rapport souhaité, de la tolérance de sortie et du courant de sortie maximal. Il est également important d'ajouter les composants possibles à la BOM.
    • Cette approche réduit le travail répétitif dans la conception de circuits et permet de relire les fichiers de circuit comme on ferait une revue de code.
  • Avis sur les outils pour composants électroniques

    • L'état des outils pour composants électroniques est très mauvais, et aujourd'hui encore, la plupart des concepteurs copient depuis des PDF les condensateurs, quartz, ports de programmation et autres éléments nécessaires lorsqu'ils ajoutent un régulateur ou un microcontrôleur à un schéma.
    • Il est très difficile pour plusieurs personnes de travailler sur la même conception et de fusionner les modifications.
    • Passer à un monde modulaire rendrait la conception plus facile, et c'est une perspective très intéressante.
  • Avis sur le partage de modules

    • Partager et mettre en bibliothèque des modules comme un diviseur de tension est une bonne idée.
    • Si l'on modularise les contraintes de layout, on peut générer automatiquement le layout de l'ensemble du projet, ce qui permet une conception efficace.
  • Avis sur une nouvelle approche de la conception PCB

    • Poser les bases, en matière de richesse des données et d'interopérabilité, d'une nouvelle approche de la conception PCB est une idée formidable.
    • Comme les schémas électriques sont plus familiers aux ingénieurs électriciens, il faut pouvoir basculer entre le texte et un schéma visuel.
  • Suggestion d'utiliser Verilog

    • Il est proposé d'utiliser Verilog ou SystemVerilog pour définir les informations sur les composants sous forme de paramètres, puis de générer le schéma à partir de cela.
    • Verilog-AMS permettrait également la simulation analogique.
  • Avis sur la différence entre les programmes EDA et la CAO mécanique

    • Le manque de « relations » dans les programmes EDA, comparé à la CAO mécanique, est surprenant.
    • Des outils comme KiCad proposent des netclasses pour 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 X devrait être remplacé par une forme comme import X.Y ou from X import Y afin de permettre l'utilisation d'outils d'autocomplétion.
  • BFH - Health Without Borders

    • BFH, c'est-à-dire BorderFreeHealth, défend un accès universel aux produits de santé en supprimant les barrières géographiques et en proposant une livraison mondiale de divers fournitures médicales.
  • Passion pour les travaux de domotique

    • La personne fait beaucoup de travaux de domotique et exprime sa frustration face au temps passé à utiliser des breadboards ou à concevoir des modules relais avec des E/S personnalisées.
    • Elle demande s'il existe un moyen de contribuer au projet.