Comment configurer son FPGA en mode console avec Vivado

Il est assez pénible de devoir lancer l’interface graphique vivado et d’ouvrir un projet juste pour aller «flasher» un bitstream sur un FPGA. Surtout quand on est sorti du «mode développement» pour passer en «mode usage» de notre FPGA. Voici donc une méthode pour pouvoir configurer son FPGA par JTaG en mode «console».

C’est finalement plutôt bien expliqué dans le document UG835 (page 934). Mais je le poste quand même ici par soucis de référencement. Car je n’ai pas trouvé directement le howto quand j’ai cherché la méthode.

Une fois qu’on a alimenté son FPGA et que la sonde USB-Jtag est branchée et reconnue par le système, on peut lancer Vivado en mode console via la commande :

$ vivado -mode tcl

On tombe sur l’invite de commande suivante :

$ vivado -mode tcl

****** Vivado v2016.4 (64-bit)
  **** SW Build 1756540 on Mon Jan 23 19:11:19 MST 2017
  **** IP Build 1755317 on Mon Jan 23 20:30:07 MST 2017
    ** Copyright 1986-2016 Xilinx, Inc. All Rights Reserved.

Vivado%

Il faut ensuite démarrer le serveur et s’y connecter :

Vivado% connect_hw_server
INFO: [Labtools 27-2285] Connecting to hw_server url TCP:localhost:3121
INFO: [Labtools 27-2222] Launching hw_server...
INFO: [Labtools 27-2221] Launch Output:

****** Xilinx hw_server v2016.4
  **** Build date : Jan 23 2017-19:28:34
    ** Copyright 1986-2016 Xilinx, Inc. All Rights Reserved.

localhost:3121

On peut connaître le nom de la sonde qui sera utilisée par défaut via la commande current_hw_target.

Vivado% current_hw_target
localhost:3121/xilinx_tcf/Digilent/210249A062D9

Et s’y connecter avec open_hw_target :

Vivado% open_hw_target
INFO: [Labtoolstcl 44-466] Opening hw_target localhost:3121/xilinx_tcf/Digilent/210249A062D9

Le nom du FPGA de destination est donné par la commande current_hw_device :

Vivado% current_hw_device
xc7k160t_0

Il faut ensuite configurer le path du bitstream que l’on veut charger avec la commande set_property:

Vivado% set_property PROGRAM.FILE {/home/martoni/mybitstream.bit} [current_hw_device]

Et envoyer le bousin dans le tuyau avec la commande program_hw_device:

Vivado% program_hw_device
INFO: [Labtools 27-3164] End of startup status: HIGH
program_hw_devices: Time (s): cpu = 00:00:06 ; elapsed = 00:00:06 . Memory (MB): peak = 1032.965 ; gain = 0.000 ; free physical = 291 ; free virtual = 12527

Et le tour est joué, le FPGA est configuré.

Et si on ne veut pas se prendre la tête, on peut mettre tout ça dans un script configure_fpga.tcl comme ci dessous:


set bitstream [lindex $argv 0]
puts "Configuring FPGA with file $bitstream";

open_hw
connect_hw_server
refresh_hw_server
current_hw_target
open_hw_target
current_hw_device
set_property PROGRAM.FILE $bitstream [current_hw_device]
program_hw_device
puts "FPGA configured with $bitstream";

Et le lancer avec la commande :

vivado -mode batch -source configure_fpga.tcl -tclargs bitstream.bit

Ce contenu a été publié dans fpga, avec comme mot(s)-clé(s) , , , , . Vous pouvez le mettre en favoris avec ce permalien.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *