Lorsque l’on essait de faire des modules VHDL génériques, on utilise massivement les paramètres generic map
des modules.
Ces paramètres sont utilisés ensuite à la synthèse pour calculer des tailles de tableaux, des constantes et autre structures matérielles générées.
Pour déverminer cette partie du code on a besoin de «voir» les valeurs qui sont calculées. En VHDL il n’y a pas de printf pour ça, mais il y a report utilisé en simulation dans un process :
process is
begin
report "Affichons des trucs" severity note;
wait;
end process;
Sauf que nous ne somme pas en simulation, ce process ne sera même pas traité à la synthèse.
Pour pouvoir afficher du texte on peut utiliser les assertions en les mettant systématiquement à faux pour être sur qu’elles soient affichées :
assert false report "Affichons des trucs à la synthèse" severity note;
Mais rien ne s’affiche dans les log à la synthèse Vivado. Ça n’est pas un bug, c’est juste que Xilinx a désactivé ces messages par défaut. Pour les réactiver il suffit de taper cette ligne magique dans la console tcl avant de lancer la synthèse :
set_param synth.elaboration.rodinMoreOptions {rt::set_parameter ignoreVhdlAssertStmts false}
Le message est ensuite visible dans les log:
INFO: [Synth 8-63] RTL assertion: "Affichons des trucs à la synthèse" [plop.vhd:108]
Merci à brimdavis pour le truc.