{"id":102,"date":"2014-11-28T08:53:25","date_gmt":"2014-11-28T07:53:25","guid":{"rendered":"http:\/\/www.fabienm.eu\/flf\/?p=102"},"modified":"2016-01-07T16:42:20","modified_gmt":"2016-01-07T15:42:20","slug":"vhd2vl-convertir-du-vhdl-en-verilog","status":"publish","type":"post","link":"https:\/\/www.fabienm.eu\/flf\/vhd2vl-convertir-du-vhdl-en-verilog\/","title":{"rendered":"vhd2vl: Convertir du vhdl en verilog"},"content":{"rendered":"<p>vhd2vl est un petit utilitaire \u00e9cris en C (flex\/bison) permettant de convertir du VHDL synth\u00e9tisable en verilog. La <a href=\"http:\/\/doolittle.icarus.com\/~larry\/vhd2vl\/\">page officiel <\/a>pr\u00e9sente la version 2.4, cette version ne compile qu&rsquo;avec quelques modification sur une distribution r\u00e9cente.<\/p>\n<p>Une version modifi\u00e9e pour compiler sur debian jessie se trouve sur le <a href=\"https:\/\/github.com\/Martoni\/vhd2vl\">github de Martoni<\/a>. Pour l&rsquo;utiliser il suffit de descendre le code avec git :<\/p>\n<pre><code>git clone git@github.com:Martoni\/vhd2vl.git\r\n<\/code><\/pre>\n<p>Et faire un simple \u00abmake\u00bb dans le r\u00e9pertoire src\/.<\/p>\n<p>Pour convertir un fichier vhdl en verilog rien de plus simple (on pourra utiliser les exemples se trouvant dans les sources):<\/p>\n<pre><code>vhd2vl exemple.vhd &gt; exemple.v\r\n<\/code><\/pre>\n<p>Le programme fonctionne plut\u00f4t bien \u00e0 condition d&rsquo;adapter son code vhdl de mani\u00e8re \u00e0 g\u00e9n\u00e9rer un verilog correct.<\/p>\n<p>En le testant sur mon \u00abblinking led project\u00bb (<a href=\"https:\/\/github.com\/Martoni\/blp\">blp<\/a>), j&rsquo;ai pu n\u00e9anmoins constater quelques probl\u00e8mes comme:<\/p>\n<ul>\n<li>Support hasardeux du type CONSTANT: Le type constant est converti en un \u00abreg\u00bb ce qui n&rsquo;est pas reconnu comme une constante par les logiciels de synth\u00e8se. On doit pouvoir modifier \u00e7a simplement pour qu&rsquo;il g\u00e9n\u00e8re un \u00ablocalparam\u00bb par exemple.<\/li>\n<li>Pas de warnings sur les mots clef: Les mots clefs en vhdl ne sont pas les m\u00eame qu&rsquo;en verilog, vhd2vl ne r\u00e2le pas quand il y a une variable en vhdl qui est un mot clef en verilog (par exemple avec le mot clef \u00abedge\u00bb).<\/li>\n<li>Pas de support de l&rsquo;underscore &lsquo;_&rsquo; pour les nombres. En verilog\/VHDL on peut mettre des s\u00e9parateur pour les milliers histoire que \u00e7a soit plus lisible 1_000_000, vhd2vl ne comprend pas.<\/li>\n<li>Pas de support du type time (unit\u00e9 sec): bon \u00e7a c&rsquo;est un peu tordu, car \u00e7a n&rsquo;est pas synth\u00e9tisable en l&rsquo;\u00e9tat de toute mani\u00e8re.<\/li>\n<\/ul>\n<p>Bref vhd2vl est un petit logiciel comportant peu de fichiers sources : en fait juste deux. S&rsquo;il ne r\u00e9pond pas tout \u00e0 fait \u00e0 nos attentes il est tr\u00e8s facile d&rsquo;aller le modifier pour l&rsquo;adapter.<\/p>\n<p>Apr\u00e8s discussion avec Larry, visiblement la version 2.4 sera la derni\u00e8re car l&rsquo;objectif est de l&rsquo;int\u00e9grer au projet <a href=\"http:\/\/iverilog.icarus.com\/\">icarus verilog<\/a>. Mais j&rsquo;ai beau compiler la derni\u00e8re version du <a href=\"git:\/\/github.com\/steveicarus\/iverilog.git\">trunk<\/a> de icarus, je ne parviens pas \u00e0 faire la m\u00eame chose avec.<\/p>\n<p>[EDIT 7 janvier 2016] Non non, vhd2vl n&rsquo;est pas mort, <a href=\"http:\/\/www.fabienm.eu\/flf\/vhd2vl-nest-pas-mort\/\">Larry continu a le d\u00e9velopper<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>vhd2vl est un petit utilitaire \u00e9cris en C (flex\/bison) permettant de convertir du VHDL synth\u00e9tisable en verilog. La page officiel pr\u00e9sente la version 2.4, cette version ne compile qu&rsquo;avec quelques modification sur une distribution r\u00e9cente. Une version modifi\u00e9e pour compiler sur debian jessie se trouve sur le github de Martoni. Pour l&rsquo;utiliser il suffit de &hellip; <a href=\"https:\/\/www.fabienm.eu\/flf\/vhd2vl-convertir-du-vhdl-en-verilog\/\" class=\"more-link\">Continuer la lecture de <span class=\"screen-reader-text\">vhd2vl: Convertir du vhdl en verilog<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_uag_custom_page_level_css":"","footnotes":""},"categories":[3,9,20,11,21],"tags":[30,60],"class_list":["post-102","post","type-post","status-publish","format-standard","hentry","category-langages","category-outils","category-verilog","category-vhdl","category-vhdl2vl","tag-verilog","tag-vhdl"],"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":"https:\/\/www.fabienm.eu\/flf\/author\/martoni\/"},"uagb_comment_info":2,"uagb_excerpt":"vhd2vl est un petit utilitaire \u00e9cris en C (flex\/bison) permettant de convertir du VHDL synth\u00e9tisable en verilog. La page officiel pr\u00e9sente la version 2.4, cette version ne compile qu&rsquo;avec quelques modification sur une distribution r\u00e9cente. Une version modifi\u00e9e pour compiler sur debian jessie se trouve sur le github de Martoni. Pour l&rsquo;utiliser il suffit de\u2026","_links":{"self":[{"href":"https:\/\/www.fabienm.eu\/flf\/wp-json\/wp\/v2\/posts\/102","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.fabienm.eu\/flf\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.fabienm.eu\/flf\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.fabienm.eu\/flf\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.fabienm.eu\/flf\/wp-json\/wp\/v2\/comments?post=102"}],"version-history":[{"count":7,"href":"https:\/\/www.fabienm.eu\/flf\/wp-json\/wp\/v2\/posts\/102\/revisions"}],"predecessor-version":[{"id":432,"href":"https:\/\/www.fabienm.eu\/flf\/wp-json\/wp\/v2\/posts\/102\/revisions\/432"}],"wp:attachment":[{"href":"https:\/\/www.fabienm.eu\/flf\/wp-json\/wp\/v2\/media?parent=102"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.fabienm.eu\/flf\/wp-json\/wp\/v2\/categories?post=102"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.fabienm.eu\/flf\/wp-json\/wp\/v2\/tags?post=102"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}