{"id":329,"date":"2015-05-29T15:58:30","date_gmt":"2015-05-29T14:58:30","guid":{"rendered":"http:\/\/www.fabienm.eu\/flf\/?p=329"},"modified":"2016-01-18T14:16:01","modified_gmt":"2016-01-18T13:16:01","slug":"projet-icestorm-le-fpga-libere","status":"publish","type":"post","link":"http:\/\/www.fabienm.eu\/flf\/projet-icestorm-le-fpga-libere\/","title":{"rendered":"Projet IceStorm : le FPGA lib\u00e9r\u00e9 !"},"content":{"rendered":"<p>Le jour du 27 mai 2015 sera \u00e0 marquer d&rsquo;une pierre blanche, en effet, c&rsquo;est le jour o\u00f9 un FPGA a \u00e9t\u00e9 lib\u00e9r\u00e9 du joug des logiciels privateurs.<\/p>\n<p>C&rsquo;est le jour o\u00f9 <a href=\"https:\/\/www.youtube.com\/watch?v=yUiNlmvVOq8&amp;feature=youtu.be\">Wolf Clifford<\/a> a sorti une premi\u00e8re version fonctionnelle du projet <a href=\"http:\/\/www.clifford.at\/icestorm\/\">IceStorm<\/a> permettant de synth\u00e9tiser un design \u00e9crit en Verilog via <a href=\"http:\/\/www.clifford.at\/yosys\/\">Yosys<\/a> et de faire le placement routage gr\u00e2ce \u00e0 <a href=\"https:\/\/github.com\/cseed\/arachne-pnr\">Arachne-pnr<\/a>.<\/p>\n<p>La conversion en bitstream et la programmation du chip se fait gr\u00e2ce aux utilitaires <strong>icepack<\/strong> et <strong>iceprog<\/strong> du projet IceStorm.<\/p>\n<p>Pour l&rsquo;instant le composant cibl\u00e9 est le Lattice iCE40 HX1K-TQ144 pouvant \u00eatre trouv\u00e9 sur le kit d&rsquo;\u00e9valuation lowcost (~$20) <a href=\"http:\/\/www.latticesemi.com\/icestick\">iCEstick<\/a>.<\/p>\n<p>Voici ci-dessous un petit howto rapide permettant de faire les manipulations se trouvant dans la vid\u00e9o de Clifford.<\/p>\n<p><strong>Icestorm howto<\/strong><\/p>\n<ul>\n<li>Installation de Yosys<\/li>\n<\/ul>\n<pre>$ cd \/opt\r\n$ git clone https:\/\/github.com\/cliffordwolf\/yosys.git \r\n$ yosys_deps=\"build-essential clang bison flex libreadline-dev gawk\r\n\t       tcl-dev libffi-dev git mercurial graphviz xdot pkg-config python\"\r\n$ sudo apt-get install $yosys_deps\r\n$ make config-gcc\r\n$ make\r\n$ make test\r\n$ sudo make install<\/pre>\n<ul>\n<li>Installation d&rsquo;IceStorm<\/li>\n<\/ul>\n<pre>$ sudo apt-get install libftdi-dev\r\n$ cd \/opt\/\r\n$ mkdir icestorm\r\n$ wget http:\/\/www.clifford.at\/icestorm\/icestorm-snapshot-150526.zip\r\n$ unzip icestorm-snapshot-150526.zip\r\n$ make\r\n$ sudo make install<\/pre>\n<ul>\n<li>Et enfin arachne-pnr<\/li>\n<\/ul>\n<pre>$ cd \/opt\/\r\n$ git clone https:\/\/github.com\/cseed\/arachne-pnr.git\r\n$ make &amp;&amp; sudo make install<\/pre>\n<ul>\n<li>Synth\u00e8se, placement-routage, bitstream et programmation<\/li>\n<\/ul>\n<p>Un exemple de \u00abprogramme\u00bb est donn\u00e9 avec arachne-pnr dans le r\u00e9pertoire<br \/>\nexample\/rot. Cet exemple est compos\u00e9 du source en v\u00e9rilog rot.v ainsi que du<br \/>\nplacement des pin rot.pcf.<\/p>\n<ul>\n<li>Synth\u00e8se (G\u00e9n\u00e9ration du blif)<\/li>\n<\/ul>\n<pre>$ cd \/opt\/arachne-pnr\/example\/rot\/\r\n$ yosys -p \"synth_ice40 -blif rot.blif\" rot.v<\/pre>\n<ul>\n<li>Placement routage (G\u00e9n\u00e9ration du txt)<\/li>\n<\/ul>\n<pre>$ arachne-pnr -d 1k -p rot.pcf rot.blif -o rot.txt\r\n<\/pre>\n<p>Le fichier g\u00e9n\u00e9r\u00e9 rot.txt est la description finale du placement et du routage<br \/>\ndu design dans le fpga. Cette description est parfaitement lisible en ascii<br \/>\navec n&rsquo;importe quel \u00e9diteur de texte.<br \/>\nPour le t\u00e9l\u00e9charger dans le fpga nous devons le convertir en format binaire au<br \/>\nmoyen de la commande \u00abicepack\u00bb :<\/p>\n<pre>$ icepack rot.txt rot.bin<\/pre>\n<p>Nous avons un bitstream parfaitement compatible avec le ice40, il<br \/>\nnous faut maintenant le t\u00e9l\u00e9charger dans le fpga.<br \/>\nEt m\u00eame pour cela, un logiciel libre est fourni : iceprog !<\/p>\n<pre>$ sudo iceprog rot.bin<\/pre>\n<p>On peut faire le tout en une seule ligne aussi si on veut :<\/p>\n<pre>yosys -p \"synth_ice40 -blif rot.blif\" rot.v;arachne-pnr -d 1k -p rot.pcf rot.blif -o rot.txt;icepack rot.txt rot.bin;sudo iceprog rot.bin<\/pre>\n<p>Et voila, bienvenue dans ce monde nouveau du FPGA libre !<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Le jour du 27 mai 2015 sera \u00e0 marquer d&rsquo;une pierre blanche, en effet, c&rsquo;est le jour o\u00f9 un FPGA a \u00e9t\u00e9 lib\u00e9r\u00e9 du joug des logiciels privateurs. C&rsquo;est le jour o\u00f9 Wolf Clifford a sorti une premi\u00e8re version fonctionnelle du projet IceStorm permettant de synth\u00e9tiser un design \u00e9crit en Verilog via Yosys et de &hellip; <a href=\"http:\/\/www.fabienm.eu\/flf\/projet-icestorm-le-fpga-libere\/\" class=\"more-link\">Continuer la lecture de <span class=\"screen-reader-text\">Projet IceStorm : le FPGA lib\u00e9r\u00e9 !<\/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":[15,67,3,24,9,20],"tags":[46,43,44,47,30,45],"class_list":["post-329","post","type-post","status-publish","format-standard","hentry","category-bitstream","category-icestorm","category-langages","category-materiel","category-outils","category-verilog","tag-ice40","tag-icepack","tag-iceprog","tag-icestorm","tag-verilog","tag-yosys"],"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\/martoni\/"},"uagb_comment_info":0,"uagb_excerpt":"Le jour du 27 mai 2015 sera \u00e0 marquer d&rsquo;une pierre blanche, en effet, c&rsquo;est le jour o\u00f9 un FPGA a \u00e9t\u00e9 lib\u00e9r\u00e9 du joug des logiciels privateurs. C&rsquo;est le jour o\u00f9 Wolf Clifford a sorti une premi\u00e8re version fonctionnelle du projet IceStorm permettant de synth\u00e9tiser un design \u00e9crit en Verilog via Yosys et de\u2026","_links":{"self":[{"href":"http:\/\/www.fabienm.eu\/flf\/wp-json\/wp\/v2\/posts\/329","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\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/www.fabienm.eu\/flf\/wp-json\/wp\/v2\/comments?post=329"}],"version-history":[{"count":12,"href":"http:\/\/www.fabienm.eu\/flf\/wp-json\/wp\/v2\/posts\/329\/revisions"}],"predecessor-version":[{"id":341,"href":"http:\/\/www.fabienm.eu\/flf\/wp-json\/wp\/v2\/posts\/329\/revisions\/341"}],"wp:attachment":[{"href":"http:\/\/www.fabienm.eu\/flf\/wp-json\/wp\/v2\/media?parent=329"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.fabienm.eu\/flf\/wp-json\/wp\/v2\/categories?post=329"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.fabienm.eu\/flf\/wp-json\/wp\/v2\/tags?post=329"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}