yosysで論理合成

ANDやORといった基本ゲートで構成されたネットリストを生成したくて、yosysを試してみました。yosysはフリー(ISC license)のVerilog-HDL合成ツールです。
Veriligで回路設計を行った時、最終的には論理合成ツールでネットリストに変換します。論理合成ツールは、各FPGAメーカーから無償で提供されているものが利用できます。ただ、これらの論理合成ツールは、各FPGAメーカーのデバイスで使用されているLUTを組み合わせたネットリストしか生成できません。yosysでANDやORといった基本ゲートのネットリストが生成できるか試してみました。

インストール

ubuntuの場合は、apt-getでインストールできます。僕はubuntsu14.04LTSの環境にインストールしました。

論理合成

合成用のコード

1ビットの加算回路で論理合成を試してみます。正しく合成できれば、XORの等価回路が生成されるはずです。

合成用スクリプト

次のような合成スクリプト(test.ys)を作成します。このスクリプトではtest.vというverilogファイルを読み込み、合成後にsynth.vというファイルを出力しています。

yosysの実行

スクリプトを指定してyosysを実行します。

合成結果

次のようなファイル(synth.v)が生成されます。この段階ではセルライブラリを指定していないので、XOR”^”が合成されています。

接続関係図の表示

yosysでは、”show”というコマンドで次のような回路図を表示することができます。

showで表示される図

showで表示される図

セルライブラリを使った論理合成

論理合成では、通常マッピングするセルライブラリを指定します。ASICなどでは、ベンダーが提供するセルライブラリを使いますが、入手するのが簡単ではありません。適当なセルライブラリが手元に無い場合は、yosysのソースコードに格納されているcmos_cells.libが利用できます。セルライブラリにマッピングする場合のスクリプトは以下です。

セルライブラリを使った論理合成結果

NOTとNORを使ったネットリストが生成されました。

showで回路図を表示した様子です。ゲートのシンボルは、一般的なものとは少し違っています。

cmosマッピング

cmosマッピング

まとめ

yosysはまだ開発中のようですが(試したのはRelease 0.5)、基本的な論理合成は問題なく実行できました。次はクロックを使った同期回路を試してみたいと思います。

スポンサーリンク







  • このエントリーをはてなブックマークに追加
スポンサーリンク