トップ 差分 一覧 Farm ソース 検索 ヘルプ PDF RSS ログイン

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



続・雑用

各方面の状況の整理.