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.
Je ne sais pas si ça a exactement le même effet mais il y a une option pour cela dans les paramètres de Vivado :
Project Settings / Synthesis -> Options / Synth Design (Vivado) / -assert
Merci, il semble que la propriété modifiée ne soit pas la même en tcl :
set_property STEPS.SYNTH_DESIGN.ARGS.ASSERT true [get_runs synth_1]
Je testerais à l’occasion.