Home記事一覧フォーラム

高位合成ツール「Synthesijer」を使う

【更新履歴】
2019/05/19 githubからインストールする方法に対応
2017/06/04 Synthesijer 20170322版に対応
2016/05/22 Synthesijer 20160511版に対応
2015/11/26 応用例を追加
2015/04/27 公式セットアップスクリプトに準拠する形に修正しました。以前にこのページの方法でセットアップされた方は新しい方法でやり直してください。
2015/03/29 セットアップ用スクリプト「synthesijer-setup.sh」を修正し、方法を少し変えました。以前にこの方法でセットアップされた方は新しいスクリプトに変更して再度スクリプトを実行してください。

Synthesijerは、オープンソースの高位合成ツールです。Javaで書かれたプログラムをHDLにコンバートして論理回路を簡単に設計することができます。
今回はこれをUbuntuにインストールして使ってみます。
PCにUbuntuをインストールする方法については、「PCにUbuntu 18.04 (Bionic Beaver)を「軽量化」インストールする」を参照してください。

必要なパッケージのインストール

ターミナルで、

sudo apt-get install curl unzip git build-essential manpages-dev

JDK 11のインストール

※Ubuntu18.04以降の場合

sudo apt-get install openjdk-11-jdk ant

sudo update-alternatives --config java
(複数のJDKがインストールされている場合、バージョン11のJDKを選択します。)

Synthesijerのダウンロード、セットアップ

ここでは、githubにあるsynthesijer最新版をホームディレクトリ直下にインストールし、その下にextra-libs(追加ライブラリ)をインストールします。

cd ~

git clone https://github.com/synthesijer/synthesijer.git

cd ~/synthesijer

ant jar

cd ~/synthesijer

git clone https://github.com/synthesijer/extra-libs.git

cd ~/synthesijer/extra-libs

make

環境変数の設定を行います。

nano ~/.bashrc

以下の記述を$HOME/.bashrcの末尾に追加します。

export SYNTHESIJER=$HOME/synthesijer/synthesijer.jar
export SYNTHESIJER_LIB=$HOME/synthesijer/lib
export SYNTHESIJER_EXTRA_LIB=$HOME/synthesijer/extra-libs

上書き保存して閉じます。

設定を反映させます。

source ~/.bashrc

サンプルのコンパイル

cd ~/synthesijer/sample

ls

各サンプルのディレクトリに cd して、

make

Verilog HDLソースコード:〜.v VHDLソースコード:〜.vhd が出力されたら成功です。Top.vかTop.vhdをFPGAのプロジェクトのトップモジュールなどからインスタンス化して使用します。
必要に応じて、synthesijer/lib, synthesijer/extra-libs/hdl 以下にあるHDLソースコードやIPのライブラリをプロジェクトに追加します。

synthesijer/extra-libs/sample 以下にもその他のサンプルがあります。

応用例

SynthesijerでのVGA出力ライブラリの実装例

Synthesijerを使ってFPGA上で動作するゲームを作る

SynthesijerでI2Cバスを使う

独自CPUを作る(Synthesijer版)

Synthesijer用スプライト/キャラクター表示ライブラリの作成

SynthesijerでSynthesizerを作ってみた

参考文献等

Synthesijer公式サイト

Synthesijer githubリポジトリ

Synthesijer関連資料まとめ