{"id":1764,"date":"2021-08-04T09:24:32","date_gmt":"2021-08-04T08:24:32","guid":{"rendered":"http:\/\/www.fabienm.eu\/flf\/?p=1764"},"modified":"2021-08-06T07:21:16","modified_gmt":"2021-08-06T06:21:16","slug":"vhdl-afficher-du-texte-au-moment-de-la-synthese-vivado","status":"publish","type":"post","link":"http:\/\/www.fabienm.eu\/flf\/vhdl-afficher-du-texte-au-moment-de-la-synthese-vivado\/","title":{"rendered":"VHDL: afficher du texte au moment de la synth\u00e8se vivado"},"content":{"rendered":"\n<p>Lorsque l&rsquo;on essait de faire des modules VHDL g\u00e9n\u00e9riques, on utilise massivement les param\u00e8tres<code> generic map<\/code> des modules.<\/p>\n\n\n\n<p>Ces param\u00e8tres sont utilis\u00e9s ensuite \u00e0 la synth\u00e8se pour calculer des tailles de tableaux, des constantes et autre structures mat\u00e9rielles g\u00e9n\u00e9r\u00e9es.<\/p>\n\n\n\n<p>Pour d\u00e9verminer cette partie du code on a besoin de \u00abvoir\u00bb les valeurs qui sont calcul\u00e9es. En VHDL il n&rsquo;y a pas de <strong>printf<\/strong> pour \u00e7a, mais il y a <strong>report<\/strong> utilis\u00e9 en simulation dans un process :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>process is\nbegin\n    report \"Affichons des trucs\" severity note;\n    wait;\nend process;<\/code><\/pre>\n\n\n\n<p>Sauf que nous ne somme pas en simulation, ce process ne sera m\u00eame pas trait\u00e9 \u00e0 la synth\u00e8se.<\/p>\n\n\n\n<p>Pour pouvoir afficher du texte on peut utiliser les assertions en les mettant syst\u00e9matiquement \u00e0 faux pour \u00eatre sur qu&rsquo;elles soient affich\u00e9es :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>assert false report \"Affichons des trucs \u00e0 la synth\u00e8se\" severity note;<\/code><\/pre>\n\n\n\n<p>Mais rien ne s&rsquo;affiche dans les log \u00e0 la synth\u00e8se <strong>Vivado<\/strong>. \u00c7a n&rsquo;est pas un bug, c&rsquo;est juste que Xilinx a d\u00e9sactiv\u00e9 ces messages par d\u00e9faut. Pour les r\u00e9activer il suffit de taper cette ligne magique dans la <strong>console tcl <\/strong>avant de lancer la synth\u00e8se :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>set_param synth.elaboration.rodinMoreOptions {rt::set_parameter ignoreVhdlAssertStmts false}<\/code><\/pre>\n\n\n\n<p>Le message est ensuite visible dans les log:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>INFO: &#91;Synth 8-63] RTL assertion: \"Affichons des trucs \u00e0 la synth\u00e8se\" &#91;plop.vhd:108]<\/code><\/pre>\n\n\n\n<p>Merci \u00e0 <a href=\"https:\/\/forums.xilinx.com\/t5\/Synthesis\/How-to-display-post-synthesis-integer-constant-values\/td-p\/692285\" data-type=\"URL\" data-id=\"https:\/\/forums.xilinx.com\/t5\/Synthesis\/How-to-display-post-synthesis-integer-constant-values\/td-p\/692285\">brimdavis<\/a> pour le truc.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Lorsque l&rsquo;on essait de faire des modules VHDL g\u00e9n\u00e9riques, on utilise massivement les param\u00e8tres generic map des modules. Ces param\u00e8tres sont utilis\u00e9s ensuite \u00e0 la synth\u00e8se pour calculer des tailles de tableaux, des constantes et autre structures mat\u00e9rielles g\u00e9n\u00e9r\u00e9es. Pour d\u00e9verminer cette partie du code on a besoin de \u00abvoir\u00bb les valeurs qui sont calcul\u00e9es. &hellip; <a href=\"http:\/\/www.fabienm.eu\/flf\/vhdl-afficher-du-texte-au-moment-de-la-synthese-vivado\/\" class=\"more-link\">Continuer la lecture de <span class=\"screen-reader-text\">VHDL: afficher du texte au moment de la synth\u00e8se vivado<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_uag_custom_page_level_css":"","footnotes":""},"categories":[1],"tags":[60,97],"class_list":["post-1764","post","type-post","status-publish","format-standard","hentry","category-non-classe","tag-vhdl","tag-vivado"],"uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"1536x1536":false,"2048x2048":false,"post-thumbnail":false},"uagb_author_info":{"display_name":"Fabien Marteau","author_link":"http:\/\/www.fabienm.eu\/flf\/author\/admin\/"},"uagb_comment_info":2,"uagb_excerpt":"Lorsque l&rsquo;on essait de faire des modules VHDL g\u00e9n\u00e9riques, on utilise massivement les param\u00e8tres generic map des modules. Ces param\u00e8tres sont utilis\u00e9s ensuite \u00e0 la synth\u00e8se pour calculer des tailles de tableaux, des constantes et autre structures mat\u00e9rielles g\u00e9n\u00e9r\u00e9es. Pour d\u00e9verminer cette partie du code on a besoin de \u00abvoir\u00bb les valeurs qui sont calcul\u00e9es.\u2026","_links":{"self":[{"href":"http:\/\/www.fabienm.eu\/flf\/wp-json\/wp\/v2\/posts\/1764","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.fabienm.eu\/flf\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.fabienm.eu\/flf\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.fabienm.eu\/flf\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.fabienm.eu\/flf\/wp-json\/wp\/v2\/comments?post=1764"}],"version-history":[{"count":2,"href":"http:\/\/www.fabienm.eu\/flf\/wp-json\/wp\/v2\/posts\/1764\/revisions"}],"predecessor-version":[{"id":1767,"href":"http:\/\/www.fabienm.eu\/flf\/wp-json\/wp\/v2\/posts\/1764\/revisions\/1767"}],"wp:attachment":[{"href":"http:\/\/www.fabienm.eu\/flf\/wp-json\/wp\/v2\/media?parent=1764"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.fabienm.eu\/flf\/wp-json\/wp\/v2\/categories?post=1764"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.fabienm.eu\/flf\/wp-json\/wp\/v2\/tags?post=1764"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}