❌

Vue lecture

Colibri, enfin une bibliothèque VHDL libre utilisable par tous

Le CERN vient de sortir une bibliothèque VHDL (VHDL-2008) indépendante du matériel sous licence CERN-OHL-W-2.0.

Le VHDL est le langage de description matériel (Hardware Description Language) de référence avec le Verilog. Il est utilisé pour décrire des modèles numériques de composant. Ces modèles sont utilisés pour la simulation mais également pour la synthèse à destination de cible comme les FPGA, ASIC…

Le principe de l’étape de la synthèse est de transformer le modèle VHDL en une représentation matérielle du circuit d’électronique numérique constitué de portes logiques, bascules, multiplexeurs, additionneurs, etc.

Et c’est la synthèse qui pose souvent problème : un modèle VHDL correct, écrit pour la simulation, ne synthétisera pas forcément. Certaines structures ne peuvent pas être décrites en termes de portes logiques, on parlera dans ce cas de VHDL non synthétisable. Pour complexifier la partie, certaines structures peuvent être synthétisables pour une cible mais pas pour une autre.

Ces spécificités ont amené chaque entreprise à développer leurs propres bibliothèques adaptées à leurs propres besoins, tout en ajoutant une couche d’environnement de développement spécifique (Qsys, vivado…). Ces réservoirs de codes spécifiques à une plate-forme et à une culture d’entreprise rendent le portage ou même la publication en open-source très compliqué.

Depuis toujours, il manque cruellement une bibliothèque standard pour disposer de briques de base en conception HDL.

C’est pour tenter de résoudre ce problème que le CERN publie sa bibliothèque Colibri en opensource.

La bibliothèque propose les éléments suivant (traduction libre de la doc):

  • colibri.common : Fonctions standards
  • colibri.comms : Utilitaires pour la communication (PRBS, CRC…)
  • colibri.endec : Encodeurs et décodeurs (RLE, 8b10b…)
  • colibri.fileio : Opérations sur les fichiers
  • colibri.interfaces : Protocoles de Bus et Flux Components (AXI, Avalon, Wishbone…)
  • colibri.io : Bus électroniques standards (UART, I2C, SPI…)
  • colibri.memory : Blocs de RAM, FIFO… (FIFO, RAM)
  • colibri.misc : Divers
  • colibri.pipes : Pipes (Arbiter, Router…)
  • colibri.packet : Gestion des flux de paquets
  • colibri.proto : Quelques protocoles standards (Aurora 64b66b…)

Depuis quelques années maintenant, le CERN a une politique ambitieuse d’ouverture du matériel très efficace. On pense notamment à la prise en compte de Kicad qui rivalise aujourd’hui avec les concurrents historiques. On pense également à la plate-forme Open Hardware Repository (ohwr pour les intimes) qui permet le partage de dossier de fabrication de cartes électronique librement.

Espérons que cette bibliothèque puisse infuser dans toutes les strates du développement HDL et qu’elle devienne un standard. La conception numérique (FPGA mais également ASIC) en serait grandement améliorée soyons en certains.

Commentaires : voir le flux Atom ouvrir dans le navigateur

  •  

ENIAC, le premier FPGA ?

Les employés de chez Xilinx aiment à raconter qu'ils sont les inventeurs du FPGA. Avec leurs glorieux XC2064 ils auraient été les inventeurs du concept et les premiers à en commercialiser.

Blueprint du XC2064
Deux ingénieurs de xilinx en plein placement-routage du XC2064 ?

En est-on si sûr ?

    Tout d’abord revenons à la définition d’un FPGA :

    Field Programmable Gate Array

    Littéralement: Grille de portes programmable sur le champ.

    Les FPGA sont des composants munis d’éléments logiques plus ou moins complexes dont les connexions ne sont pas figées. Les connexions peuvent être re-programmées pour modifier l’architecture électronique du système en fonction du besoin sans avoir à démonter l’appareil à chaque fois.

    L’aspect programmable ne doit pas être vu dans le sens d’un programme que l’on télécharge dans une mémoire pour qu’il soit exécuté par un processeur. Non, le bon mot serait plutôt configurable ou re-câblable (quel beau mot) au besoin.

    Dans un FPGA moderne, les blocs que l’on peut connecter sont des éléments logiques (LUT), des multiplexeurs, des multiplieurs, des additionneurs, les sérialiseurs/dé-sérialiseur (serdes) sans oublier les blocs de mémoires ram (BRAM). Des PLL viennent en renfort pour générer des horloges pour cadencer tout ce bazar.

    Mapping du Gatemate A1
    Plan du Gatemate A1 de Colognechip, les entrées sorties sont à la périphérie et les blocs logique au centre

    Le « re-câblage » (on parle plutôt de configuration) est effectué en téléchargeant un fichier appelé bitstream dans la mémoire RAM ou flash du FPGA.

    Mais alors revenons à l'ENIAC. Cette machine est considérée comme le premier ordinateur électronique. Quand on pense ordinateur vient tout de suite l’idée d’un processeur qui exécute des instructions enregistrées dans une mémoire.

    Ça n’est pourtant pas le cas des débuts de l’ENIAC qui est conçu pour faire des calculs très rapidement, notamment pour calculer des tables de tir de missiles (pour tuer des gens). Et à chaque nouveau calcul il faut le re-câbler.

    Les blocs que l’on peut connecter sont des multiplieurs, des additionneurs, des tables de fonctions (à roulettes) ainsi que des imprimantes et des lecteurs de cartes perforées pour les entrées/sorties.

    Plan «mapping» de l’ENIAC
    Plan de l’ENIAC, il y quelques similitudes avec un FPGA. Cependant les blocs sont à l’extérieur et le multiplexage et les entrées sorties se font au centre. (sources https://historyofinformation.com)

    Pour re-câbler l’ENIAC point de bitstream mais des équipes de câbleuses qui reconfigurent la machine pour lancer un nouveau calcul histoire de faire péter une bombe plus fort (nucléaire) ou de bien atteindre la cible avec un canon.

    Câbleuse en action
    Câbleuses en pleine action, maintenant on télécharge un bitstream (source sigarch)

    Mais, attendez, cette description ressemble furieusement à la description d’un FPGA non ?

    Et oui, Xilinx n’a qu’à bien se tenir, le premier ordinateur électronique était également le premier FPGA de l’histoire. D’autres ont fait le lien également.

    Peut-être pourrait-on l’inclure dans les outils de synthèse libre comme Yosys ?

    Pas sûr.

    Commentaires : voir le flux Atom ouvrir dans le navigateur

    •  
    ❌