今週リリースされたQuartus Prime 17.1からIntel HLS Compilerが付属するようになりましたが、インストールでハマるケースがありそうなので、取り急ぎメモを書きました。
とりあえずはCentOS7.3環境編です。
0, 事前準備
とりあえずyum updateはしておきます。
あとepelぐらいは入れておきます。
$ sudo yum update
$ sudo yum -y install epel-release
1, Quartus Prime Lite Editionのダウンロード
こちらから
http://dl.altera.com/?edition=lite
一括ダウンロード(Combined Filesというタブ)サイズが大きいので、Individual Filesというタブから必要なファイルだけダウンロードするほうが良いかもしれません。その際、ModelSimもダウンロードすることをお忘れなく。以下、一括ダウンロードした場合で説明します。
2, Quartusのインストール
Quartus-lite-17.1.0.590-linux.tarというファイルがダウンロードされたはずなので、解凍・インストールします。
$ tar xvf Quartus-lite-17.1.0.590-linux.tar
$ cd components
$ ./QuartusLiteSetup-17.1.0.590-linux.run
一応QuartusのGUIの起動を確認しておきましょう。
3, 環境変数設定
環境変数を設定します。.bashrcに書いても良いですし、別途環境設定用のシェルを書いても良いです。
ここでは、/home/intelというディレクトリにデフォルトのパス名でインストールした場合を想定します。
例)
export QSYS_ROOTDIR="/home/intel/intelFPGA_lite/17.1/quartus/sopc_builder/bin"
export PATH=/home/intel/intelFPGA_lite/17.1/quartus/bin:/home/intel/intelFPGA_lite/17.1/qsys/bin:/home/intel/intelFPGA_lite/17.1/quartus/sopc_builder/bin:/home/intel/intelFPGA_lite/17.1/modelsim_ase/bin:$PATH
試しにvsimと実行してみましょう。恐らくライブラリがない等怒られるはずです。
4, 諸々インストール
以下で必要なものをインストールします。
$ sudo yum -y install compat-gcc-44 compat-gcc-44-c++
$ sudo yum -y install glibc.i686 glibc-devel.i686 libX11.i686 libXext.i686 libXft.i686 ncurses-devel.i686
2018/2/8追記
OSのバージョンによっては足りないパッケージがあったようです。gcc以外は以下を入れるのが正解の模様
$ sudo yum install -y glibc.i686 glibc-devel.i686 libX11.i686
libXext.i686 libXft.i686 libgcc.i686 libgcc.x86_64
libstdc++.i686 libstdc++-devel.i686 ncurses-devel.i686
qt.i686 qt-x11.i686
重要なのはgcc/g++のバージョン4.4です。現状、HLSは当該GCCのみサポートです。
再度vsimを実行してみます。ModelSimのGUIが立ち上がったら成功です。
5, 環境変数追加
上記でgccの4.4.7がインストールされたと思います。普段は4.8とかもっと新しいのを使いたいので、HLSだけで使う用に環境変数設定します。
export CPLUS_INCLUDE_PATH=/usr/lib/gcc/x86_64-redhat-linux/4.4.7:/usr/include/c++/4.4.7:/usr/include/c++/4.4.7/x86_64-redhat-linux
.bashrcにこれを入れると普段からこれを使ってしまうので、やはり環境設定用のシェルを作ったほうが良いかも。
6, HLSを準備
HLSのディレクトリに移動してみます。
$ cd intelFPGA_lite/17.1/hls
そこにinit_hls.shという環境設定用のシェルがあるので、sourceします。
$ source ./init_hls.sh
これで準備OKです。早速サンプルを動かしてみましょう。
7, サンプル実行
サンプルが置いてあるところに移動します。ここでは一番簡単そうなcounterというやつを実行してみましょう。
$ cd examples/counter
Makefileがあるのでmakeしてみます。
$ make
これでtest-x86-64という実行ファイルが出来上がったはずです。これはHLSコンパイラを使ってx86環境でエミュレーションするためのものです。実行するとPASSEDと表示されるはずです。
$ ./test-x86-64
次にgccでのコンパイルを試します。こちらのほうが動作が高速です。
$ make test-gpp
$ ./test-gpp
同じようにPASSEDと表示されます。
最後に合成してみます。
$ make test-fpga
test-fpga.prjというディレクトリが出来ます。ここに色々入っていますので、適当に色々見てみてください。componentsというディレクトリが今回作ったIPになります。
test-fpgaという実行ファイルが出来ているのに気づいたでしょうか。こちらも実行してみます。
$ ./test-fpga
今までより時間がかかりませんでしたか?これはModelSimで実行されたためです。全く同じPASSEDという表示が出たと思います。つまり、diffコマンドで簡単にgcc・エミュレータ・HWシミュレーションの結果を比較できることになります。
簡単ですがこの辺で。