Aller au contenu

Exécution automatisée avec XSim

L'installation Vivado fournit trois étapes en ligne de commande :

Commande Rôle
xvhdl Analyse les sources VHDL dans une bibliothèque
xelab Élabore et crée un instantané de simulation
xsim Exécute ou débogue l'instantané

Commandes minimales

D:\FPGA\2026.1\Vivado\bin\xvhdl.bat -2008 src\design.vhd
D:\FPGA\2026.1\Vivado\bin\xvhdl.bat -2008 tb\tb_design.vhd
D:\FPGA\2026.1\Vivado\bin\xelab.bat work.tb_design -s tb_design_sim
D:\FPGA\2026.1\Vivado\bin\xsim.bat tb_design_sim -R

-R lance la simulation après chargement. Le banc doit se terminer avec std.env.finish.

Pourquoi un script ?

Il garantit :

  • l'ordre correct des sources ;
  • VHDL-2008 à chaque exécution ;
  • le bon sommet et les bons génériques ;
  • l'arrêt immédiat sur erreur ;
  • la répétabilité sans interface graphique ;
  • une seule commande pour la régression.

Patron PowerShell

$ErrorActionPreference = "Stop"

$VivadoRoot = "D:\FPGA\2026.1\Vivado"
$Xvhdl = Join-Path $VivadoRoot "bin\xvhdl.bat"
$Xelab = Join-Path $VivadoRoot "bin\xelab.bat"
$Xsim  = Join-Path $VivadoRoot "bin\xsim.bat"

& $Xvhdl -2008 "src\design.vhd"
if ($LASTEXITCODE -ne 0) { throw "Design compilation failed" }

& $Xvhdl -2008 "tb\tb_design.vhd"
if ($LASTEXITCODE -ne 0) { throw "Testbench compilation failed" }

& $Xelab "work.tb_design" -s "tb_design_sim"
if ($LASTEXITCODE -ne 0) { throw "Elaboration failed" }

& $Xsim "tb_design_sim" -R
if ($LASTEXITCODE -ne 0) { throw "Simulation failed" }

Vérifiez toujours $LASTEXITCODE : PowerShell ne transforme pas automatiquement chaque échec d'un programme natif en exception.

Lancer les exemples

cd C:\Users\yanis\Documents\Bibliotheque-VHDL-Basys3\examples\adder

# Tous
powershell -ExecutionPolicy Bypass -File .\sim\run-tests.ps1

# Seulement l'exhaustif
powershell -ExecutionPolicy Bypass -File .\sim\run-tests.ps1 -Test exhaustive

# Seulement le fichier
powershell -ExecutionPolicy Bypass -File .\sim\run-tests.ps1 -Test file

Le script analyse une fois, élabore chaque test et renvoie une erreur si une étape échoue.

Fichier projet XSim

Pour beaucoup de sources :

vhdl2008 work "../src/package.vhd"
vhdl2008 work "../src/design.vhd"
vhdl2008 work "../tb/tb_design.vhd"

Conservez l'ordre des dépendances. Vérifiez les options exactes avec l'aide de votre version de XSim.

Génériques en ligne de commande

xelab.bat work.tb_design -s tb_sim -generic_top "WIDTH=16"

Les chaînes et chemins demandent une attention particulière aux guillemets. Préférez des chemins absolus normalisés et validez avec xelab -help.

Répertoire de régression

sim/
├── run-tests.ps1
└── build/          # journaux, instantanés, base de chronogrammes

Ignorez build, .Xil, xsim.dir, .jou et .wdb dans Git.

Conditions d'échec

Le lanceur doit échouer si :

  • un outil est absent ;
  • l'analyse ou l'élaboration échoue ;
  • une assertion atteint la sévérité d'arrêt ;
  • XSim renvoie un code non nul ;
  • le gardien expire ;
  • aucun test ou vecteur n'a été exécuté.

Validez une fois la propagation des échecs en modifiant volontairement un résultat attendu, puis restaurez-le.

Déboguer une régression

  1. Relancer uniquement le test fautif.
  2. Conserver graine et indice du vecteur.
  3. Ajouter les signaux utiles au chronogramme.
  4. Ouvrir l'instantané en interface graphique :
xsim.bat tb_design_sim -gui
  1. Chercher la première divergence.
  2. Transformer le bogue en cas dirigé permanent.

Intégration continue

Le même script peut fonctionner sur une machine CI équipée de Vivado. Archivez le journal, le nombre de tests, le vecteur ou la graine fautive, et éventuellement des résultats JUnit. Pour une construction FPGA complète, ajoutez les rapports DRC et temporels.