Extrait de l'émission CPU release Ex0233 : FPGA, deuxième partie.
Avez-vous entendu parler du Front de Libération des FPGA ? Rassurez-vous, c’est politiquement correct, à moins que vous trouviez le Logiciel Libre subversif. Car c’est de cela qu’il s’agit : libérer les logiciels de programmation de FPGA, qui sont historiquement très fortement verrouillés par les fondeurs. Un comble pour des puces qui libèrent le concepteur de la rigidité du flot de développement d’une carte électronique figée.
Paradoxalement, à l’époque des PAL, Programmable Array Logic, ces ancêtres des FPGA, l’organisation interne des bits de configuration, et la méthode électrique pour charger ce contenu dans une puce, étaient généralement documentés, car la logique elle-même était tellement simple qu’il n’y avait pas grand chose d’autre à faire que l’expliquer au concepteur, par ailleurs déjà habitué à manipuler des portes logiques élémentaires. En ces temps reculés, on n’avait pas encore inventé les langages de haut niveau comme le Verilog et le VHDL : c’était plutôt l’équivalent de l’assembleur.
Mais un FPGA, c’est une autre affaire. Le bitstream, la séquence de bits chargée dans le FPGA, n’a pas d’intelligibilité directement rapportable à l’intention exprimée dans le source VHDL. Il est illusoire de chercher un parallèle avec nos désassembleurs et autres débogueurs langage machine. Le synthétiseur, le compilateur pour électroniciens, est un logiciel éminemment complexe, et fortement compétitif, nécessitant des centaines d’années·hommes de développement, vous savez, cette unité selon laquelle, si un programmeur peut écrire le logiciel de pilotage d’un paquebot en six jours, six programmeurs peuvent l’écrire en un jour.
Et vous croyez vraiment que ça va arrêter un libriste ? Certainement pas Clifford Claire Wolf ni Cotton Seed (lui, c’est un pseudo). Yosys n’est pas le seul projet de logiciel libre de synthèse FPGA, mais c’est certainement le plus avancé : il semble qu’à ce jour cette suite logicielle soit la seule suffisamment complète pour implémenter le flot de développement de bout en bout, partant d’un HDL, ici le Verilog, jusqu’à des puces industrielles comme le milieu-de-gamme Lattice ECP5, le très abordable Lattice iCE40 et la 7ème génération Xilinx qui va du populaire Spartan-7 au très haut-de-gamme Virtex-7 ; celui qui colle une extase aux programmeurs, et des sueurs froides aux acheteurs quand ils reçoivent le devis.
Depuis 2012, la phase de synthèse est implémentée par le synthétiseur Yosys, suivi du place’n’route Arachne-PNR maintenant remplacé par nextpnr, et ses back-ends comme IceStorm pour le FPGA iCE40, Trellis pour l’ECP5, et d’autres encore, formant ainsi une suite logicielle couvrant les mêmes étapes que les outils vendus par les fabricants de FPGA. Les tâches annexes comme la simulation sont assurées par Verilator, le chargement par OpenFPGALoader, et j’en passe.
C’est compliqué, hein ? C’est exactement ce que je me suis dit quand le grain du FPGA m’a pris et que j’ai commencé l’excellent tutoriel de Russell Merrick sur nandland.com, tutoriel qui justement utilisait une petite carte de développement bon marché équipée d’un iCE40.
Or, il était hors de question que j’installe la toolchain propriétaire de Lattice… c’est pas que je sois libriste radical, c’est juste que tous ces logiciels de synthèse HDL, ils ne sont disponibles que sous Windows, ou à la rigueur sous Linux. Mais l’idée d’installer sur mon serveur personnel des logiciels bourrés de gestionnaires de licences payantes, aussi appelés rootkit
, très peu pour moi ! Et pourquoi pas Steam tant qu’on y est ? Alors que Yosys et Arachne-PNR, j’ai pu les compiler sur mon Mac, une machine Unix comme une autre.
Faut croire que j’étais pas le premier à parcourir ce chemin, et je sais bien que la récompense est dans le voyage, mais c’est quand même mieux quand on arrive au bout.
Ce voyage, c’est celui commencé il y a plus de 10 ans par Fabien Marteau, softeux depuis tout petit et passé au hardware lors de ses études d’ingénieur : en juillet 2015 il a publié un article sur linuxfr.org, et depuis début 2015 il tient son blog sur le sujet.
Ainsi naquit le Front de Libération des FPGA
La page-clé, c’est la cartographie que maintient Fabien sur l’écosystème des outils libres pour FPGA, qui d’ailleurs ne compte pas que les outils de synthèse cités précédemment, mais aussi toute une palanquée d’alternatives à Verilog et VHDL comme Chisel, popularisé notamment par l’architecture processeur RISC-V. Eh bien, Fabien a une collection de pages sur les HDL Open Source. Encore faut-il choisir un modèle de FPGA : là encore vous êtes couverts, Fabien publie régulièrement ses tests de cartes de développement et ne manque pas de détailler quels logiciels libres il a rassemblés pour chaque puce.
Parlant de libérer les FPGA, c’est surtout les logiciels de développement pour FPGA que Yosys et quelques autres ont libéré. Mais quid du silicium ? Figurez-vous qu’il existe (au moins) deux projets de silicium Open Source réalisant la fonction FPGA : PRGA, le FPGA de l’université de Princeton, et OpenFPGA, qui n’est pas l’une des consoles de jeux format GameBoy de la marque Analogue.
Mais pourquoi le FLF n’en dit mot ? Parce que ça nous fait une belle jambe, à nous les hobbyistes, et les électroniciens de PME. ! Vous avez un fondeur de silicium dans votre garage, vous ?
Alors le Front de Libération des FPGA n’est peut-être pas aussi disruptif que le Front de libération des nains de jardin, mais il est nettement plus utile, parce qu’il est pragmatique. Remercions Fabien Marteau de prendre le temps de partager ses expérimentations et cataloguer patiemment les solutions libres, en plus de son vrai métier dans un bureau d’études. Où il utilise peut-être des logiciels professionnels propriétaires, mais chuuuut…
FabienM, l’équipe de CPU sera ravie de t’offrir une pinte si tu passes sur Toulouse. Ton engagement et ta passion t’honorent.
Textes : Benoit
Photo : Kit MiSTer d'émulation, opéré par un public jeune de l'émission, CC-By-SA, Da Scritch pour CPU et Radio <FMR>