IRILL - Research and Innovation on Free Software
Jussieu, Paris

Environnement de développement en Eclat : simulation de montage et prédiction d’exécution (avec chaîne de compilation libre)

Objectif

Les FPGA ([1] field-programmable gate arrays) sont des circuits numériques configurables par logiciel pour implémenter des calculs sur-mesure. Ces circuits sont particulièrement appréciés pour la spécialisation et la parallélisation de certaines tâches.

La programmation de FPGA se fait habituellement dans un langage de description de matériel comme VHDL ou Verilog qui sont assez éloignés des langages algorithmiques. Pour une programmation de plus haut niveau, on développe le langage Eclat [2] qui permet de mixer calculs et interactions sur FPGA.

Un programme Eclat est traduit en VHDL puis synthétisé sur des cartes FPGA Orange-Crab (resp. DE-10 Lite) via l’environnement yosis-npr (resp. Quartus d’Intel). Ce VHDL peut aussi être exécuté sur PC en utilisant des outils de simulation tel ghdl [3]. Celui-ci permet aussi d'effecrtuer une estimation du temps d'exécution. Enfin le programme Eclat peut être traduit en OCaml [4], compilé et exécuté directement sur PC. Dans ce dernier cas certaines fonctions, non prises en compte dans la compilation en VHDL, permettent d'afficher des traces de l'exécutions.

L'objectif de ce stage est de spécifier et de réaliser un simulateur permettant d'exécuter pas à pas les programmes Eclat et faire varier les entrées des programmes au cours de l’exécution (avec la souris/le clavier). On pourra s'inspirer du simulateur d'OMicroB [5], implantation del a VM OCaml pour microcontrôleur. La prise en main d’une chaîne de synthèse libre et la programmation d’applications interactives permettra de confirmer que le comportement du simulateur et conforme à l’observation sur une carte FPGA. Une analyse statique pourra par ailleurs être développée pour estimer le temps d’exécution des calculs à l’intérieur des programmes Eclat interactifs.

Tâches à réaliser

Une première tâche sera de tester les différentes chaînes de compilation d'Eclat (chaîne libre de la plateforme OrangeCrab, chaîne Intel sur la carte DE-Lite 10 ) en particulier sur l'utilisation des "blocs ram" pour les tableaux en et testant la communication avec les périphériques externes (bouttons poussoirs, led, ...). On pourra s'intéresser à d'autres plateformes (Xylinx, Basys, ...).

Les tâches suivantes consistent :

  • à spécificier, puis implanter, le simulateur pour une exécution pas à pas et l'interconnexion avec des périphériques d'entrées/sorties simples
  • le simulateur pourra par ailleurs déterminer le temps d'exécution, et pourra être lié à une analyse statique de ces temps pour la prédiction
  • Si le temps le permet, le simulateur pourra intégrer des composants externes, on pourra s'intéresser à un circuit extérieur de calcul sur les flottants [6], mais aussi une communication plus complexe tel un écran VGA

Prérequis

  • avoir des bases de programmation en C et en OCaml
  • la connaissance de la programmation FPGA est un plus

Références

  1. Jocelyn. Sérot. La programmation des circuits FPGA et le langage VHDL. Une introduction pour les programmeurs et par l’exemple. Ellipse, 2019.
  2. L. Sylvestre, "Programmation sûre, expressive et efficace de circuits FPGA", thèse de doctorat de Sorbonne Université, nov 2024.
  3. http://ghdl.free.fr/
  4. https://ocaml.org/
  5. https://github.com/stevenvar/omicrob
  6. Application-Specific Arithmetic - computing Just Right for the Reconfigurable Computer and the Dark Silicon Era - F. de Dinechin, M. Kumm, Springer, 2024.

Le stagiaire devra être d'accord pour que ses contributions soient distribuées sous licence libre.

Contacts : Emmanuel Chailloux & Loïc Sylvestre