Wireva

APIO, la boîte à outils open source qui simplifie la programmation des FPGA

APIO agrège les outils open source de synthèse et de simulation pour les FPGA, offrant une alternative aux suites propriétaires comme celle de GOWIN, avec une intégration dans Visual Studio Code.

The FPGA Chronicles: Open Source It
APIO, la boîte à outils open source qui simplifie la programmation des FPGA
System on a chip · Wikimedia — licence per file · rights

Programmer un FPGA sans dépendre d'une suite logicielle propriétaire est désormais possible grâce à APIO, un agrégateur d'outils open source qui vient d'être mis à l'épreuve sur une carte Tang Nano 20K. L'expérience, menée avec un simple programme de clignotement de LED, montre que la chaîne de développement libre peut remplacer les environnements constructeurs, à condition d'accepter quelques compromis.

APIO ne développe pas lui-même les outils de synthèse ou de placement-routage. Il orchestre des programmes existants comme Yosys et GTKWave, à la manière de PlatformIO pour les microcontrôleurs. L'utilisateur décrit son projet dans un fichier apio.ini de quelques lignes, indiquant la carte cible et le module supérieur. APIO se charge ensuite de télécharger, mettre à jour et faire fonctionner les différents composants. L'outil est disponible en ligne de commande, mais aussi sous forme d'extension pour Visual Studio Code, ce qui simplifie son adoption.

L'installation n'est toutefois pas exempte de frictions. APIO embarque ses propres bibliothèques, ce qui peut entrer en conflit avec celles du système. Dans le cas rapporté, le fichier libreadline.so.8 situé dans le dossier interne d'APIO empêchait tout fonctionnement ; il a suffi de le renommer pour résoudre le problème. De même, APIO impose ses versions privées d'outils comme GTKWave, et tenter de lire les fichiers de trace en dehors de son environnement peut générer des erreurs. Un shell dédié, accessible depuis le panneau APIO de Visual Studio Code, permet de contourner ces difficultés.

L'intérêt principal d'APIO réside dans la qualité de ses outils pour Verilog. Le langage de description matérielle bénéficie d'un formateur de code et d'un linter sophistiqué, ainsi que d'un pilote de simulation performant. La suite GOWIN, elle, reste fonctionnelle mais son simulateur tiers semble avoir perdu en accessibilité depuis un rachat. Les outils open source apparaissent donc plus pérennes et plus faciles à intégrer dans un flux de travail moderne.

Les partisans des outils constructeurs avancent d'autres arguments. GOWIN propose des blocs IP prêts à l'emploi, allant de la simple génération d'horloge à des cœurs de processeur, difficiles à transposer dans APIO. La suite propriétaire offre aussi un analyseur logique intégré et un éditeur graphique de contraintes, qui permet d'associer visuellement les broches du FPGA aux noms de signaux Verilog. Ces fonctionnalités n'ont pas d'équivalent direct dans l'écosystème open source, même si des solutions de contournement existent, comme l'écriture manuelle de fichiers de contraintes ou l'usage d'un tableur dédié.

La question de la performance comparée des deux chaînes de synthèse reste ouverte. Sans tests approfondis, impossible de dire si Yosys produit un design plus rapide ou plus économe en ressources que l'outil GOWIN. Le choix dépendra donc des priorités : accès aux IP constructeur et à l'analyse intégrée d'un côté, souplesse, transparence et pérennité de l'autre.

Pour les développeurs curieux, APIO représente une porte d'entrée accessible vers l'écosystème open source du matériel reconfigurable. L'exemple fourni, un module Verilog paramétrable pour faire clignoter des LED à partir d'une horloge de 27 MHz, illustre la simplicité du point de départ. La suite logique consistera à explorer le contenu du module et à comparer les résultats obtenus avec les deux approches. Une chose est sûre : l'alternative libre existe, et elle tient la route.

Same event, other desks

Story file →