Diary/2021-6-6
yosysを使ってみる
Ubuntu 20.04だと,aptでインストールできる.
$ sudo apt install yosys
バージョンは,
$ yosys -V Yosys 0.9 (git sha1 1979e0b)
とのこと.起動するとプロンプトが表示されて対話的に利用できる
$ yosys ... yosys> yosys> exit
試しに,1-bitの加算を合成してみる.
module add ( input wire a, input wire b, output wire c ); assign c = a + b; endmodule
対話的に処理してもいいけど,
処理したいコマンド列をファイルに保存しておいて与えるのが便利.
たとえば,↓のようなadd.ysとか作って
read_verilog add.v # elaborate design hierarchy hierarchy -check -top add # the high-level stuff proc; opt; fsm; opt; memory; opt show -format svg -prefix techmap_add write_verilog techmap_add.v write_json techmap_add.js # mapping to internal cell library techmap; opt # mapping flip-flops to mycells.lib dfflibmap -liberty cmos_cells.lib # mapping logic to mycells.lib abc -liberty cmos_cells.lib show -format svg -prefix cellmap_add write_verilog cellmap_add.v write_json cellmap_add.js clean
yosysを
yosys add.ys
などとして実行.cmos_cells.lib は
https://github.com/YosysHQ/yosys/tree/master/examples/cmos
から持ってきた.
aptでyosysいれたとしても,gitリポジトリをクローンしておく方が便利かも.
生成されるファイルは
- techmap_add.v - '+'がxorになるレベルの途中経過
- techmap_add.js - JSONでも出力可能
- techmap_add.dot - Graphviz用dotファイル
- techmap_add.svg - svg形式の
- cellmap_add.v - cmos_cells.lib使ってマッピングした後
- cellmap_add.js - 同じくJSONで出力可能
- cellmap_add.dot - Graphviz用dotファイル
- cellmap_add.svg - svg形式で出力
showに引数を与えなければ実行中に,Graphvizのウィンドウが表示される.
グラフはsvgじゃなくてpngでも出力できる.出力はこんな感じ.
techmap_add.png
cellmap_add.png
続・雑用
各方面の状況の整理.