FPGA Toolchains

De Wiki LOGre
Aller à : navigation, rechercher

Il n'existe pas actuellement, pour le développement FPGA, de toolchain complète libre comme il y a en SW avec la GNU toolchain et LLVM. Cette page résume les outils libres existants. C'est en utilisant ces outils et en les améliorant que le développment HW avec une maitrise et une liberté totale sera vraiment possible.

Introduction

La toolchain se compose comme suit :

 language HLS +-----------+ language HDL +------------+ netlist +-------------------+    format     +----------------+   FPGA
--------------+compilateur+--------------+synthetiseur+---------+pack, place & route+---------------+bistream encoder+-----------
 C/C++/Python +-----------+ VHDL/Verilog +------------+  EDIF   +-------------------+ intermediaire +----------------+ bitstream

Parmi ces outils, seuls ceux faisant la synthèse, le place & route et le bitstream encoding nécessitent la connaissance de l'architecture FPGA cible.

Les informations concernant un FPGA sont:

 - les blocks présent dans le FPGA tels que LUTs, mémoires, ... (en général fournis pas le constructeur)
 - les interconnections entre les blocks (en général fournis pas le constructeur)
 - les infos de timing et de power (parfois fournis pas le constructeur)
 - le format du bitstream FPGA

Toolchains Officielles

Elles integrent tous les outils necessaires au developpement sur FPGA : compilateur VHDL/Verilog, synthese, placement routage, generateur de bitstream

Pour FPGAs Xilinx

Pour FPGAs Altera

Toolchains Alternatives

Le but de cette section est de referencer les toolchains de développement HLS libres (pas freeware mais avec une license genre GPL, X11, BSD, ...) pour FPGA. Le but étant de s'affranchir des CAD vendors (Cadence, Synopsys, ...) et des outils de Xilinx, Altera, ...

Cela concerne les outils suivants :

  • compilateur C/C++ vers VHDL/Verilog
  • synthèse VHDL/verilog
  • place & route
  • génération bitfile pour FPGA
  • simulateur VHDL/Verilog
  • visualisation waves

Compilateurs vers VHDL/Verilog

  • C-to-Verilog : [1]
  • LegUp de l'University de Toronto : compilateur C vers Verilog ([2])

Synthese VHDL et/ou Verilog

  • Icarus Verilog : synthese Verilog ([3])
  • Migen : a partir de python ([4])
  • Yosys : synthese Verilog ([5])
  • LLHDL : synthese Verilog ([6])
  • VTR

Place & Route

  • Antares
  • VTR

Generateur de bitfile

  • POD : generation bitfile FPGA ( Peripheral On Demand
  • Flavia : genere des bistreams pour les boards Papilio a partir d une description de type CPLD ([7])
  • Antares

Simulateur VHDL/Verilog

  • Icarus Verilog : simulateur Verilog ([8])
  • GHDL : simulateur VHDL

Visualisation de waves

  • GtkWave : visualisation waves license GPL ([12])

Presentations diverses

Cette section recense des conferences/presentations relatives aux Toolchains HLS libres

  • Presentation sur les FPGAs aux RMLL 2011 : [13]
  • Ressources pour developper une toolchain libre : [14]

Outils plus en details

LLHDL

Synthese Verilog (Verilog/VHDL -> netlist)

  • Homepage: no
  • Repository: [15]
  • FPGAs supportes: Spartan 6 family
  • License: GPL v3
  • Status: pas d activite depuis 2011
  • S'utilise avec Antares, peu documente, pas de place & route

Antares

Outils d implementation physique pour FPGA Xilinx

  • Homepage: no
  • Repository: [16]
  • Fonctionnalites : FPGA pack, place & route, bitstream generation (netlist -> bitstream)
  • FPGAs supportes: Spartan-6 (remarque : necessite la base de donnee geometrique du Chip contenue dans ISE)
  • License : GPL v3
  • Status: pas d activite depuis 2011


VTR

Toolchain FPGA toolchain pour la recherche (Synthesis + Place & Route) VTR - The Verilog-to-Routing (VTR) project for FPGAs (Composed of ODIN 2 + ABC + VPR described below)

Cet outil est utilise pour l exploration d architectures FPGA mais pas pour developper des designs sur FPGA. Il genere des statistiques mais pas de bistream Projet actif, plutôt complet et documenté

  • Homepage: [17]
  • Repository:
  • License: MIT and “custom public domain”
  • Status: active
  • Modules:
    • ODIN II – synthesis
    • ABC – optimization and tech mapping
    • VPR – pack, place & route
  • FPGAs supported: only some virtual architecture

Debit

Reverse-engineering tools for FPGA bitstreams, Altera and Xilinx

  • Homepage: no
  • Repository: [18]
  • Fonctionnalite : FPGA Bitstream Reverse Engineering
  • FPGAs supportes: Spartan-3, Virtex-2, Virtex-3 & Virtex-4
  • License: GPL v3
  • Status: pas d activites depuis 2008

s6bitstream

Adventures in reverse engineering Spartan-6 FPGA bitstreams (only few scripts)

  • Homepage: no
  • Repository: [19]
  • Fonctionnalite : FPGA Bitstream Reverse Engineering
  • License: ?
  • FPGAs supportes: Spartan-6
  • Status: actif

FPGA tools

Public domain tools for FPGAs

  • Homepage: no
  • Repository: [20]
  • Purpose: Seems to be floorplan visualization, bitstream <-> floorplan conversion, etc…
  • FPGAs supportes: xc6slx9 (Spartan-6)
  • License: Unlicense (Licence domaine publique similaire a CC0)
  • Status: pas d activites 2013 mais devrait reprendre en 2014 d apres le developpeur