Vivado et les autres logiciels FPGA

Tour d'horizon des outils de développement FPGA propriétaires et open-source : Vivado, Quartus Prime, Libero SoC et les alternatives open-source.

Vivado et les autres logiciels FPGA

Écrire du VHDL, c'est une chose. Le transformer en circuit physique en est une autre : il faut un logiciel de synthèse et d'implémentation adapté à la famille de FPGA ciblée. Chaque constructeur impose son propre outil, et leurs différences sont significatives.

Vue d'ensemble

OutilÉditeurFamille de FPGA
VivadoAMD (ex-Xilinx)7-Series, UltraScale, UltraScale+, Zynq, Versal
ISEAMD (ex-Xilinx)Spartan-3/6, Virtex-4/5/6 (fin de vie)
Quartus PrimeIntel (ex-Altera)Cyclone, Arria, Stratix, Agilex
Libero SoCMicrochip (ex-Microsemi)PolarFire, IGLOO2, SmartFusion2
iCEcube2 / DiamondLatticeiCE40, ECP5, MachXO
RadiantLatticeCertus, CrossLink-NX

Vivado (AMD / Xilinx)

Vivado est l'outil de référence de ce cours car les FPGA Xilinx (7-Series, Zynq) sont omniprésents dans l'industrie et la formation.

Points forts

  • Block Design : assemblage graphique d'IPs (ZYNQ PS, AXI Interconnect, DMA…) par glisser-déposer
  • Timing Analysis (STA) intégrée avec rapports WNS/WHS détaillés
  • IP Catalog très fourni (FFT, FIR, Ethernet, PCIe, DDR…)
  • Simulation : intègre le simulateur Vivado Simulator (XSIM), compatible VHDL-2008
  • ILA (Integrated Logic Analyzer) : debug in-situ sans instrument externe
  • Tcl : toute l'interface graphique est scriptable

Licences

Vivado ML Edition — Standard   → gratuit, limité aux petits FPGA (Artix-7, Spartan-7)
Vivado ML Edition — Enterprise → payant, tous les devices, fonctions avancées (partial reconfiguration…)

La version gratuite suffit pour la quasi-totalité des projets de ce cours (Nexys A7, Basys 3, PYNQ-Z2).

Workflow typique

Code VHDL → Synthèse → Implémentation → Bitstream → Programmation FPGA
               ↓              ↓
           Elaboration     Place & Route
           (RTL → netlist)  (timing closure)

Quartus Prime (Intel / Altera)

L'équivalent Intel de Vivado. Très utilisé dans l'industrie télécom et militaire.

Points forts

  • Platform Designer (ex-Qsys) : équivalent du Block Design pour les IPs Altera (Avalon bus)
  • TimeQuest : outil STA réputé pour sa précision
  • SignalTap II : analyseur logique in-situ (équivalent de l'ILA Xilinx)
  • Interface Tcl également disponible

Licences

Quartus Prime Lite    → gratuit, Cyclone IV/V/10, MAX 10
Quartus Prime Standard → payant
Quartus Prime Pro      → payant, Agilex, Stratix 10

Différences notables avec Vivado

AspectVivadoQuartus
Bus d'IPAXI4Avalon
Simulateur intégréXSIMModelSim-Intel (gratuit limité)
Syntaxe constraintsXDC (Tcl-based)SDC (Synopsys Design Constraints)
Rapports timingWNS / WHS / TNSSlack, Fmax

Le format de contraintes SDC est partagé par Quartus, Libero et les outils open-source — c'est en réalité le standard industriel. Vivado utilise le format XDC, qui est une extension du SDC.


Libero SoC (Microchip / Microsemi)

Outil dédié aux FPGA Microsemi, peu répandus en formation mais très utilisés dans les domaines aéronautique, spatial et défense (tolérance aux radiations, fiabilité).

Points forts

  • SmartDesign : assemblage graphique similaire au Block Design
  • STA robuste, certifié DO-254 (aéronautique)
  • Support des technologies Flash FPGA (non-volatile, démarrage instantané)

Licence

Gratuit pour les petits devices (IGLOO2, SmartFusion2 jusqu'à une certaine taille).


Outils open-source

Une chaîne de développement entièrement libre existe, principalement pour les FPGA Lattice (iCE40, ECP5) :

VHDL → GHDL (synthèse) → Yosys (netlist) → nextpnr (place & route) → Bitstream
OutilRôle
GHDLSimulation et synthèse VHDL
YosysSynthèse logique (netlist)
nextpnrPlace & Route
openFPGALoaderProgrammation du FPGA

Avantages / Limites

Avantages :

  • Entièrement gratuit, reproductible, scriptable CI/CD
  • Idéal pour les projets maker (iCEBreaker, OrangeCrab…)

Limites :

  • Support VHDL-2008 partiel dans GHDL (Yosys bridge encore en développement)
  • Pas de support pour les gros FPGA Xilinx/Intel
  • Pas d'IP catalog, pas de Block Design

Ce qui change d'un outil à l'autre

Contraintes de timing

La syntaxe des fichiers de contraintes diffère :

# Vivado (.xdc)
create_clock -period 10.000 -name sys_clk [get_ports i_clk]
set_input_delay -clock sys_clk 2.0 [get_ports i_data]
# Quartus / Libero / nextpnr (.sdc)
create_clock -period 10.000 [get_ports i_clk]
set_input_delay -clock { i_clk } 2.0 [get_ports i_data]

Attributs spécifiques au constructeur

Certains attributs VHDL sont propres à un outil et ignorés (ou refusés) par les autres :

-- Xilinx/Vivado uniquement
attribute ASYNC_REG : string;
attribute ASYNC_REG of r_sync1 : signal is "TRUE";
 
attribute KEEP : string;
attribute KEEP of r_sig : signal is "TRUE";  -- empêche l'optimisation
 
-- Intel/Quartus uniquement
attribute preserve : boolean;
attribute preserve of r_sig : signal is true;

Ces attributs sont ignorés lors d'une simulation GHDL — ils n'ont de sens que pour le synthétiseur cible.

Primitives instanciées directement

Chaque constructeur expose des primitives bas niveau non portables :

-- Xilinx : BUFG, IBUF, OBUF, RAMB36E2, DSP48E2...
BUFG_inst : BUFG port map (O => clk_buf, I => clk_in);
 
-- Intel : ALTPLL, altera_std_synchronizer, ALTDPRAM...
-- Microchip : GL (global buffer), MSS (hard ARM core)...

Dès que du code instancie des primitives, il n'est plus portable entre constructeurs.


Lequel choisir ?

Tu as un FPGA Xilinx/AMD ?          → Vivado (ce cours)
Tu as un FPGA Intel/Altera ?        → Quartus Prime
Tu as un FPGA Microchip/Microsemi ? → Libero SoC
Tu as un iCE40 ou ECP5 ?            → nextpnr + Yosys (ou iCEcube2)
Tu veux juste simuler ton VHDL ?    → GHDL + GTKWave (gratuit, universel)

Le VHDL structurel et comportemental que tu écris dans ce cours est portable entre tous ces outils. Ce sont les contraintes de timing, les attributs et les primitives instanciées qui créent des dépendances au constructeur.