SpinalHDL est un langage HDL ressemblant à s’y méprendre à Chisel. Et pour cause, son créateur est un ancien utilisateur intensif de Chisel.
- Tout comme Chisel, SpinalHDL est basé sur le langage Scala.
- Tout comme Chisel, les entrées/sorties sont décrites au moyen de Bundles.
- Tout comme Chisel, Spinal génère un langage HDL pour la synthèse.
Alors pourquoi ne pas utiliser Chisel ?
- Car SpinalHDL génère du VHDL pour la synthèse, et non du Verilog
- Car SpinalHDL gère les domaines d’horloges de manière élégante
- Car la déclaration des entrées sortie est plus «naturelle» pour un habitué de VHDL/Verilog. En effet, pour déclarer les des signaux comme entrée ou sortie d’un module sur Chisel il faut faire :
val io = new Bundle { val a = Bool(INPUT) val b = Bool(INPUT) val c = Bool(OUTPUT) }
Alors que sur SpinalHDL on fera:
val io = new Bundle { val a = in Bool val b = in Bool val c = out Bool }
Ce qui est plus naturel.
- La gestion des blackbox est mieux intégrée.
De plus, Charles (dolu1990) m’informe qu’il y a maintenant une implémentation de RISCV avec 5 étages de mul/div/interruptions fonctionnel en SpinalHDL:
Bonjour, Flash info Spinal XD Il y a maintenant une implémentation de RISCV, 5 stages mul/div/interrupt fonctionnel codée en Spinal. Le cpu égualement débuggable via JTAG, fork openOCD, GDB et eclipse. (c'est a ma connaissance la seul implémentation RISCV qui cible les FPGA avec cette fonctionnalité) Au plaisir de libérer les FPGA de leur asservissement. Charles
Bref pas mal de choses intéressantes qui j’espère dynamiserons le développement de Chisel également et peut-être fusionnerons à terme ?
Pour la documentation officielle c’est par là.