URL:     https://linuxfr.org/news/clear-production-du-premier-microcontroleur-avec-un-efpga-completement-open-source
Title:   CLEAR, production du premier microcontrôleur avec un eFPGA complètement open-source
Authors: martoni
        BAud, Xavier Teyssier, palm123, theojouedubanjo, volts, Yves Bourguignon, Nicolas Boulay, xdelatour, Ysabeau et cg
Date:    2022-02-09T08:39:31+01:00
License: CC By-SA
Tags:
Score:   7


CLEAR est un microcontrôleur RISC-V ([VexRISCV](https://github.com/SpinalHDL/VexRiscv)) muni d’un [eFPGA](https://flex-logix.com/efpga/what-is-efpga.html) gravé en 130 nm et produit avec le programme chipignite de la société de production d'[ASIC](https://fr.wikipedia.org/wiki/Application-specific_integrated_circuit) [Efabless](https://efabless.com/). La totalité du « dossier de fabrication » du composant est publiée en open source (licences MIT,  Apache 2.0 et [~~moins~~ non libres](https://efabless.com/technology_license_agreement)).

----

[Campagne de financement participatif du CLEAR](https://groupgets.com/campaigns/1003-clear-the-open-source-fpga-asic-by-chipignite)
[Article de CNX Software sur l'initiative](https://www.cnx-software.com/2022/02/08/open-source-fpga-asic-efabless-chipignite/)
[openFPGA: Le générateur open source de FPGA](https://github.com/lnis-uofu/OpenFPGA)
[Caravel: le SoC open source de efabless qui embarque une « zone ASIC vierge »](https://github.com/efabless/caravel)
[Sky130: le PDK open source pour graver en 130nm](https://skywater-pdk.readthedocs.io/en/main/)

----

Un [FPGA](https://fr.wikipedia.org/wiki/Circuit_logique_programmable) est un type particulier de composant électronique. Il peut être vu comme un « kit » de portes logiques avec des connexions reconfigurables à l’infini. Le tout est assemblé dans un même composant. Les constructeurs de FPGA gardent jalousement secrète une partie de l’architecture de leurs composants et ne fournissent même pas la documentation permettant de les configurer. Il est nécessaire de passer par leurs logiciels (binaires) pour générer le fichier de configuration appelé _bitstream_.
La conception et la fabrication d’un FPGA passent par les mêmes procédés que pour n’importe quel composant électronique numérique (processeur, périphérique, microprocesseur) : on part d’un modèle numérique du composant que l’on va transformer en un dessin « 3D » du circuit final appelé [GDSII](https://fr.wikipedia.org/wiki/GDSII). Toute cette chaîne de fabrication utilise un tas de formats et de standards jalousement gardés secrets par les différents acteurs de cette industrie. Il est évident que les fabricants de FPGA gardent secret ces « dossiers de fabrication ».



[Il y a quelques années](https://linuxfr.org/users/martoni/journaux/enfin-une-chaine-de-developpement-completement-open-source-pour-un-fpga), Claire Clifford libérait le format des _bitstreams_ de configuration du FPGA ice40 par rétro-ingénierie  avec le projet [Icestorm](https://connect.ed-diamond.com/Open-Silicium/os-017/icestorm-une-chaine-de-developpement-libre-pour-fpga). D’autres FPGA ont ensuite été libérés par ingénierie inverse, sans soutien des différents constructeurs.



Un pas de plus dans la libération des FPGA a été franchi avec la production du [EOS S3](https://linuxfr.org/news/eos-s3-le-bitstream-libere) de la société [QuickLogic](https://www.quicklogic.com/products/soc/). QuickLogic a publié le format du bitstream de la partie FPGA (eFPGA) de son composant et [supporte officiellement les outils opensource](https://connect.ed-diamond.com/hackable/hk-040/le-premier-fpga-avec-sa-chaine-de-developpement-open-source).



Avec le CLEAR, on passe à une toute autre échelle de libération pour les FPGA. En effet   --   cette fois   --   c’est la totalité du « dossier de fabrication » qui est libéré. Commençons par le cœur du composant : openFPGA.



openFPGA : le générateur de FPGA
===============================


![Architecture CLB d'openFPGA](https://openfpga.readthedocs.io/en/master/_images/k4n4_arch.png "Exemple d'architecture qui peut-être généré avec openFPGA")



L’architecture utilisée dans le CLEAR est celle du projet [openFPGA](https://openfpga.readthedocs.io/en/master/). Le projet propose de générer une structure de FPGA « prête à graver » à partir d’un simple fichier de configuration de l’architecture voulue. L’objectif étant de réduire le temps de développement d’un FPGA à 24 heures, au lieu des mois habituels.



L’architecture du eFPGA est constituée de 8 × 8 = 64 [CLB](https://en.wikipedia.org/wiki/Logic_block). Chaque CLB contient quatre Blocs Logique Élémentaire (BLE) avec à chaque fois :


- une [LUT](https://qastack.fr/electronics/169532/what-is-an-lut-in-fpga) quatre entrées
- une bascule D ([Flip-Flop](https://fr.wikipedia.org/wiki/Bascule_(circuit_logique)#Bascule_D))
- un multiplexeur de sortie (MUX).


Ce type d’architecture se retrouve dans tous les FPGA avec une variation sur le nombre d’entrées de la LUT. Cela nous permet de comparer les FPGA en termes de nombre de LUT.



Avec le CLEAR nous avons donc un eFPGA de **256 LUT**. Pour comparer on peut parler du [EOS S3](https://linuxfr.org/news/eos-s3-le-bitstream-libere) qui possède **891 LUT** ou du [ICE40](https://linuxfr.org/users/martoni/journaux/enfin-une-chaine-de-developpement-completement-open-source-pour-un-fpga) dont la gamme débute à **384 LUT** et monte jusqu’à environ **8000 LUT**.



On parle donc d’un tout petit eFPGA. Avec une architecture de FPGA open source, il est plus évident de développer des outils libres pour travailler sur ces FPGA. L’outil de référence pour configurer les FPGA  générés avec openFPGA est issu majoritairement du projet [VTR](https://verilogtorouting.org/) (Verilog To Routing).



La partie FPGA ainsi générée est prête à être intégrée dans la caravelle.



Caravel : embarquez votre composant avec un processeur RISC-V
============================================================


La lectrice ou le lecteur aura certainement remarqué que le titre de la dépêche ne parle pas de FPGA mais de **e**FPGA. ***e*** qui signifie simplement « embedded ». Le FPGA généré est embarqué dans un composant plus gros muni d’un microprocesseur 32 bits nommé [VexRisc](https://github.com/SpinalHDL/VexRiscv) qui est openSource lui aussi.



Ce processeur — développé par Charles Papon avec le langage HDL [SpinalHDL](https://github.com/SpinalHDL/SpinalHDL) — est la base du [SoC](https://fr.wikipedia.org/wiki/Syst%C3%A8me_sur_une_puce) Caravel développé par la société eFabless et [open source lui aussi](https://github.com/efabless/caravel).



![Synoptique général du CLEAR](https://files.ef.link/images/screen-shot-3b.png)



L’objectif de Caravel est de proposer un SoC complet avec le CPU, quelques périphériques (UART, SPI, GPIO, RAM…) et une zone libre pour y graver un composant de son cru. Toute la partie « outils de déverminage » est ainsi standardisée avec tous les signaux nécessaires au bon fonctionnement du projet cible.



Avec cet outil libre, efabless veut démocratiser la fabrication de composant électronique et la rendre accessible aux petites PME, voire aux particuliers.



Ce kit de développement est proposé par la société efabless avec son programme _chipignite_.


Chipignite : les ASIC pour tous
==============================


Avec le programme [Chipignite d’efabless](https://efabless.com/chipignite/2204C), il est en effet possible de faire produire 100 composants (ou 300 selon le boîtier choisi) pour moins de 10 000 $ gravé en [130 nm](https://en.wikipedia.org/wiki/130_nm_process).
À ce prix-là, on a tous les outils de développement à disposition ainsi que les bibliothèques du kit de développement ([PDK](https://www.zerotoasiccourse.com/terminology/pdk/)) en 130 nm du fabricant, sans avoir à signer d’accord de non divulgation (NDA) pour lire l’accord de non divulgation à signer.



Comme le nom de la société le laisse entendre, efabless ne possède pas d’usine de fabrication. Elle se contente de réserver des slots (shuttle) de fabrication dans l’usine américaine [skywater](https://www.skywatertechnology.com/).



Sky130 : le « kit ASIC » (pdk) libéré
==================================


[Skywater](https://www.skywatertechnology.com/) est un petit fabricant de composants électroniques américain. C’est une ancienne usine de Cypress qui a pris son indépendance.



![Vue de l'usine skywater dans le Minesota](https://imageio.forbes.com/specials-images/imageserve/5f914bf8142183d8b5e2f0d5/SkyWater-Fab/960x0.jpg?fit=bounds&format=jpg&width=960)



Cette entreprise fabrique des semi-conducteurs à des niveaux de gravure qui sont aujourd’hui considérés comme largement amortis. Le 130 nm par exemple est la finesse de gravure utilisée il y a 20 ans pour les processeurs Pentium III ou pour le processeur de la Gamecube.



Pour faire produire un composant électronique, il faut fournir un fichier de fabrication au format [GDSII](https://fr.wikipedia.org/wiki/GDSII). Qui est un format ouvert de description des différentes couches de dopage et de connexions métal du composant.



Mais pour générer ce GDSII, l’entreprise qui conçoit des composants a besoin de connaître les propriétés du substrat fabriqué. Il faut un modèle pour simuler les composants que l’on « dessine ».
À partir de ce modèle il est possible d’établir une bibliothèque de composants comme des transistors, bascules, mémoire et autres.



Toutes ces informations sont rassemblées dans ce qu’on appelle un [PDK](https://en.wikipedia.org/wiki/Process_design_kit) (Process Design Kit). Le PDK est intimement lié au fabricant et au process de fabrication. Sans lui, impossible de concevoir et générer le GDSII, malgré la disponibilité de nombreux (et vieux) logiciels libres dans le domaine.



Jusqu’à l’année dernière, il n’existait pas de PDK « ouvert » : impossible pour une petite entreprise d’y avoir accès sans payer des sommes folles en licences de développement. Sans compter sur les accords de non divulgation qui rendaient impossible la diffusion du GDSII en dehors de la production.



Pour dynamiser sa production, Skywater a donc décidé, [avec l’aide de Google](https://linuxfr.org/news/google-libere-les-asic-avec-un-pdk-open-source-en-130-nm), de libérer son PDK pour la finesse de gravure de 130 nm. Le PDK se nomme Sky130 et est disponible à tous sous [licence Apache 2.0](https://fr.wikipedia.org/wiki/Licence_Apache) sur [github](https://github.com/google/skywater-pdk).


Open MPW shuttle : les ASIC open source gratuits de google
========================================================


10 000 $ ça ne se trouve pas sous le sabot d’un cheval. Il y a intérêt d’avoir un projet un peu plus solide qu’un simple [TapTempo](https://linuxfr.org/wiki/taptempo). Une PME peut prendre des risques avec cette somme mais de manière mesurée.



Pour favoriser l’émergence d’une communauté open source dans le développement matériel et pour encourager les développeuses et développeurs à prendre des risques et innover, Google a décidé de financer des productions de composants tous les six mois.


Pour être dans la « navette » nommée Open MPW shuttle il faut proposer un composant totalement open source et publier tous les scripts permettant de re-générer le [[GDSII]].
Si le projet est jugé intéressant, efabless fera fabriquer une série de composants gratuitement.



Et c’est ce qui s’est passé avec le projet [Caravel-OpenFPGA-EF](https://efabless.com/projects/33) qui a été produit dans la première navette [MPW-1](https://efabless.com/projects/shuttle_name/MPW-1).
OpenFPGA a également été utilisé dans la seconde navette MPW-2 avec le projet [SOFA](https://efabless.com/projects/136).



Il y a d’autre projet de eFPGA dans les navettes, mais OpenFPGA semble être le plus utilisé et le plus facile d’accès.



La production de CLEAR en financement participatif
==================================================



Pour montrer la possibilité de produire un eFPGA open source un financement participatif a été lancé sur le site [groupgets](https://groupgets.com/campaigns/1003-clear-the-open-source-fpga-asic-by-chipignite).



Moyennant 75 $ (plus les frais de port plus certainement la douane) il est possible d’acquérir ce microcontrôleur soudé sur une carte de développement.



![photo de la carte clear](https://files.ef.link/images/caravel-board-2.JPG "La carte de développement avec le composant soudé dessus")



Une fois la levée de fonds bouclée, le projet sera embarqué dans la navette [2204C](https://efabless.com/projects/shuttle_name/2204C) pour une production prévue en avril 2022.



Bien sûr, une carte de développement à ce prix pour un eFPGA aussi petit peut sembler inintéressante. Il faut plutôt le voir comme une somme accessible à (presque) tout le monde pour entrer dans le monde du silicium et des FPGA opensource. C’est, en tout cas la preuve, qu’il est possible de produire un FPGA (+ microcontrôleur) intégralement open source à des tarifs raisonnables.