- 追加された行はこのように表示されます。
- 削除された行は
このように表示されます。
!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
{{ref_image techmap_add.png}}
cellmap_add.png
{{ref_image cellmap_add.png}}
!続・雑用
各方面の状況の整理.