{"id":545,"date":"2016-11-05T10:22:25","date_gmt":"2016-11-05T09:22:25","guid":{"rendered":"http:\/\/www.fabienm.eu\/flf\/?p=545"},"modified":"2016-11-05T10:22:25","modified_gmt":"2016-11-05T09:22:25","slug":"synchronous-synthesizable-hardware-description-language-sshdl","status":"publish","type":"post","link":"http:\/\/www.fabienm.eu\/flf\/synchronous-synthesizable-hardware-description-language-sshdl\/","title":{"rendered":"Synchronous Synthesizable Hardware Description Language (SSHDL)"},"content":{"rendered":"<p>Depuis quelques ann\u00e9es, plusieurs nouveaux langages HDL bas\u00e9s sur des langages de programmations g\u00e9n\u00e9riques \u00e9mergent. Ces programmes peuvent \u00eatre qualifi\u00e9s de SSHDL pour <strong>S<\/strong>ynchronous <strong>S<\/strong>ynthesizable <strong>H<\/strong>ardware <strong>D<\/strong>escription<strong> L<\/strong>anguage<\/p>\n<p><strong>HDL ?<\/strong><\/p>\n<p>Pour Hardware Description Langage, c&rsquo;est un langage de description mat\u00e9riel. Un HDL permet de d\u00e9crire le comportement d&rsquo;un composant num\u00e9rique, comme des bascule D, des ALU, ou des microprocesseurs complet.<\/p>\n<p>Les deux HDL les plus connu sont bien s\u00fbr le VHDL et le Verilog. Se sont les seuls \u00e0 \u00eatre reconnu comme standard par tous les logiciels de synth\u00e8ses du march\u00e9. C&rsquo;est donc un passage oblig\u00e9 pour travailler sur les FPGA.<\/p>\n<p><strong>Synthesizable ?<\/strong><\/p>\n<p>Cela peut para\u00eetre \u00e9trange, mais VHDL\/Verilog ont beau \u00eatre support\u00e9 par tous les logiciels de synth\u00e8se du march\u00e9, se ne sont pas des langage que l&rsquo;on peut consid\u00e9rer comme synth\u00e9tisable. Seul un sous ensemble de ces deux langages l&rsquo;est, le reste \u00e9tant utilis\u00e9 pour la simulation.<\/p>\n<p>Une architecture d\u00e9crite dans un langage synth\u00e9tisable &#8230; sera synth\u00e9tisable. Si une portion du code n&rsquo;est pas synth\u00e9tisable alors il y a une erreur de code.<\/p>\n<p><strong>Synchronous ?<\/strong><\/p>\n<p>C&rsquo;est quelque chose qui est indispensable en conception HDL. Tout le design doit \u00eatre cadenc\u00e9 avec la m\u00eame horloge, m\u00eame si nous cherchons \u00e0 capturer un \u00e9v\u00e9nements ext\u00e9rieur (comme une interruptions) il est n\u00e9cessaire de le resynchroniser avec l&rsquo;horloge principale. Dans un SSHDL, le fonctionnement synchrone est implicite. L&rsquo;horloge qui cadence tout le design n&rsquo;a pas a \u00eatre indiqu\u00e9 \u00e0 chaque registre.<\/p>\n<p>Toutes personnes qui a travaill\u00e9 sur un FPGA de taille raisonnable le sait, il est impossible de cadencer tout son design avec la m\u00eame horloge, puisque certain sous ensembles comme les contr\u00f4leurs de RAM ou les s\u00e9rialiseur\/d\u00e9serialiseur n\u00e9cessitent leurs propres horloges qui n&rsquo;est g\u00e9n\u00e9ralement pas synchrone avec l&rsquo;horloge globale. Il est alors n\u00e9cessaire d&rsquo;introduire la notion de domaines d&rsquo;horloges et de soigner la conception des franchissement de domaines d&rsquo;horloges de nos signaux (Clock domain crossing) afin d&rsquo;\u00e9viter la m\u00e9tastabilit\u00e9.<\/p>\n<p>C&rsquo;est un des points sensible qui fait la qualit\u00e9 d&rsquo;un SSHDL : comment est g\u00e9r\u00e9 le franchissement de domaines d&rsquo;horloges ?<\/p>\n<p><strong>Standards industriels ou joujoux universitaires ?<\/strong><\/p>\n<p>Pour que ces langages puissent avoir un minimum d&rsquo;espoir d&rsquo;\u00eatre d\u00e9ploy\u00e9s dans l&rsquo;industrie, il faut que l&rsquo;on puisse les utiliser sur les FPGA du march\u00e9. Il faut donc\u00a0 des logiciels capables de les synth\u00e9tiser. Il est illusoire de croire que les gros fabricant de FPGA adoptent ces petits langages open-source pour leurs FPGA. Le SystemC est un bon exemple de langage qui n&rsquo;a pas perc\u00e9 par manque de logiciel de synth\u00e8se (par contre il est tr\u00e8s utilis\u00e9 dans la simulation, car tr\u00e8s rapide).<\/p>\n<p>C&rsquo;est pour cette raison que ces nouveaux langages ont choisi de g\u00e9n\u00e9rer leur designs en VHDL et\/ou Verilog. Toutes la conception\/simulation se fait donc avec ces nouveaux langages, et quand on veut faire la synth\u00e8se on lance la g\u00e9n\u00e9ration du VHDL\/Verilog pour tester sur FPGA.<\/p>\n<p>On peut ainsi consid\u00e9rer le VHDL\/Verilog comme un langage \u00abassembleur\u00bb du FPGA\/ASIC.<\/p>\n<p><strong>Petites listes de SSHDL<\/strong><\/p>\n<p>La liste des SSHDL connus peut \u00eatre trouv\u00e9 dans la rubrique <a href=\"http:\/\/www.fabienm.eu\/flf\/hdl\/\">HDL<\/a> de ce blog.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Depuis quelques ann\u00e9es, plusieurs nouveaux langages HDL bas\u00e9s sur des langages de programmations g\u00e9n\u00e9riques \u00e9mergent. Ces programmes peuvent \u00eatre qualifi\u00e9s de SSHDL pour Synchronous Synthesizable Hardware Description Language HDL ? Pour Hardware Description Langage, c&rsquo;est un langage de description mat\u00e9riel. Un HDL permet de d\u00e9crire le comportement d&rsquo;un composant num\u00e9rique, comme des bascule D, des &hellip; <a href=\"http:\/\/www.fabienm.eu\/flf\/synchronous-synthesizable-hardware-description-language-sshdl\/\" class=\"more-link\">Continuer la lecture de <span class=\"screen-reader-text\">Synchronous Synthesizable Hardware Description Language (SSHDL)<\/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":[3,1,85],"tags":[86],"class_list":["post-545","post","type-post","status-publish","format-standard","hentry","category-langages","category-non-classe","category-sshdl","tag-sshdl"],"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":1,"uagb_excerpt":"Depuis quelques ann\u00e9es, plusieurs nouveaux langages HDL bas\u00e9s sur des langages de programmations g\u00e9n\u00e9riques \u00e9mergent. Ces programmes peuvent \u00eatre qualifi\u00e9s de SSHDL pour Synchronous Synthesizable Hardware Description Language HDL ? Pour Hardware Description Langage, c&rsquo;est un langage de description mat\u00e9riel. Un HDL permet de d\u00e9crire le comportement d&rsquo;un composant num\u00e9rique, comme des bascule D, des\u2026","_links":{"self":[{"href":"http:\/\/www.fabienm.eu\/flf\/wp-json\/wp\/v2\/posts\/545","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=545"}],"version-history":[{"count":4,"href":"http:\/\/www.fabienm.eu\/flf\/wp-json\/wp\/v2\/posts\/545\/revisions"}],"predecessor-version":[{"id":549,"href":"http:\/\/www.fabienm.eu\/flf\/wp-json\/wp\/v2\/posts\/545\/revisions\/549"}],"wp:attachment":[{"href":"http:\/\/www.fabienm.eu\/flf\/wp-json\/wp\/v2\/media?parent=545"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.fabienm.eu\/flf\/wp-json\/wp\/v2\/categories?post=545"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.fabienm.eu\/flf\/wp-json\/wp\/v2\/tags?post=545"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}