IRILL - Research and Innovation on Free Software
IRILL, Paris

Chaîne de compilation libre pour la programmation FPGA en OCaml

Objectif

O2B [1,2] est un portage de la VM OMicroB [3] sur un processeur softcore pour faire tourner des programmes OCaml https://ocaml.org/ sur FPGA DE10-Lite d'Intel et de pouvoir appeler des circuits spécialisés écrits soit en VHDL, soit en utilisant des circuits définis dans le langage Macle [4,5].

L'objectif de ce stage est en suivant cette méthode hybride (VM sur softcore et circuits spécialisés) de déterminer une chaîne de configuration de FPGA [6] complètement libre en ciblant la famille OrangeCrab [7] en portant le couple O2B/Macle vers cette cible.

Tâches à réaliser

Une première tâche est de tester la chaîne libre de la plateforme OrangeCrab, pour ensuite détermine un softcore (par exemple Risc V) qui soit synthétisable dans cette chaîne. Une fois cette cible déterminée, le portage d'O2B peut être effectué, visant le softcore (choix du compilateur C) pour la partie machinerie OCaml et la glue spécifique pour les appels de circuits spécialisés, en incluant la gestion des entrées/sorties (Led, boutton poussoir).
Il est alors possible d'automatiser la chaîne complètei libre pour l'appel de circuits Macle sur OrangeCrab.

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. J. Sérot, E. Chailloux : “OCaml sur circuit FPGA”, JFLA 2021 - 32 èmes Journées Francophones des Langages Applicatifs, en ligne, France (2021)
  2. git O2B : https://github.com/jserot/O2B
  3. S. Varoumas, B. Vaugon, E. Chailloux. A Generic Virtual Machine Approach for Programming Microcontrollers: the OMicroB Project. 9th European Congress on Embedded Real Time Software and Systems (ERTS 2018), Jan 2018. https://hal.science/hal-01705825v1
  4. Loïc Sylvestre, Jocelyn Sérot, Emmanuel Chailloux. Macle : un langage dédié à l'accélération de programmes OCaml sur circuits FPGA. 33èmes Journées Francophones des Langages Applicatifs, Jun 2022, https://hal.inria.fr/hal-03626795
  5. git Macle : https://github.com/lsylvestre/macle
  6. Jocelyn. Sérot. La programmation des circuits FPGA et le langage VHDL. Une introduction pour les programmeurs et par l’exemple. Ellipse, 2019
  7. Documentations OrangeCrab : https://orangecrab-fpga.github.io/orangecrab-hardware/r0.2

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

Contacts : Emmanuel Chailloux & Loïc Sylvestre & Jocelyn Sérot