Synthesijerのサンプルに含まれているsample/bench以下には、素数を並べるサンプル(Prime.java)、ソートのサンプル(BubbleSort, MergeSort)が入っています。
このサンプルをWindows(Cygwin環境)で試してみました。
前提
- CygwinでJava 7が動く環境が用意できているとします。
- Synthesijerのダウンロードページからsynthesijer-20141211.jarをダウンロード、cygwin上で環境変数SYNTHESIJERがそのjarファイルのパスにセットされているとします。
- Synthesijerのダウンロードページからsynthesijer_lib_20141124.zipをダウンロード、展開しているとします。
注意 SYNTHESIJERのパスはcygwinでなく、Windowsでたどれる必要があります。相対パスで指定するのが問題に遭遇しにくいです。
準備
Windows版のGHDLバイナリをインストールする
https://www.youtube.com/watch?v=8YOWdvW_IAc を参考に、Downloading GHDLをダウンロードしてインストール。
Cygwinから呼び出せるように下記のようにして実行パスに追加。
export PATH=/cygdrive/c/Program\ Files\ \(x86\)/Ghdl/bin:$PATH
Windows版のGtkWaveバイナリをインストールする
GtkWaveからgtkwave-3.3.64-bin-win32.zipをダウンロード。こちらは展開するだけ。私の場合は展開したファイル一式を~/Applications/に移動して、
export PATH=~/Applications/gtkwave-3.3.64-bin-win32/gtkwave/bin:$PATH
とパスを通しました。
HDLライブラリの追加
これらのサンプルではコード内部で配列を使っています。Makefileでは、相対パス
../../lib/vhdl/dualportram.vhd
なパスに配列に相当するメモリのHDLコードを必要とします。これは、Synthesijerのダウンロードページのsynthesijer_lib_20141124.zipに含まれています。ダウンロードして展開、synthesijer_lib_20141124ディレクトリをlibという名前で、synthesijer_samples_20141124と同じ階層に移動してください。
実行
準備が終わったら、makeしてシミュレーション、結果を確認すればOKです。
まずは一式をコンパイル
cd synthesijer_samples_20141124/bench
make
make ghdl32
-eオプションで実行バイナリができるはずだけど、作成されなかったので-rオプションでシミュレーションする。たとえば、次のように。結構時間がかかります。
ghdl -r primesim_top --wave=primesim_top.ghw
次のようなメッセージでシミュレーションが終われば、正常終了です。
primesim_top.vhd:109:8:@48823280ns:(assertion failure): Simulation End!
C:\Program Files (x86)\Ghdl\bin\ghdl.exe:error: assertion failed
C:\Program Files (x86)\Ghdl\bin\ghdl.exe:error: simulation failed
gtkwaveで結果を確認してみましょう。
gtkwave primesim_top.ghw
実際に計算しているtestの内部変数をみてみると65521が求められていることがわかります。
makeについて補足
ちなみに、この例では問題なくmakeできますが、java -cp に続くクラスパスの区切り文字がUnix系では:、Windowsでは;という違いがあり、Synthesijerでコンパイルするときに複数のクラスパスの指定が必要な場合には注意する必要があります。次のリリースバージョンではMakefile.cygwinを用意する予定です。
注意
リンク先のバイナリが不安という方はご自身でコンパイルするなどの対策をしてください。責任は取れませんので…