FPGA
intel
HLS
quartus

Intel HLS Compilerを使える状態にする(CentOS編)

今週リリースされた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シミュレーションの結果を比較できることになります。

簡単ですがこの辺で。