Intel HLS compiler 19.1 + Ubuntu 20.0.4 LTSでサンプルをビルドしてModelSimで波形を見る

# Quartus Prime Lite Edition のバージョン19.1をインストール
- 19.1以降では，HLSはサポートされない．
- ダウンロードサイトにて，「追加ソフトウェア」からHLSのパッケージを別途ダウンロードする必要あり．
- HLSをインストールするときに，インストール先をQuartus Prime Liteと同じディレクトリにしておく．
- 以下${INSTALLDIR}はインストーラで指定したインストール先ディレクトリを指す．
- Quartus PrimeからModelSimを呼び出すためには[こちら](https://qiita.com/osamu620/items/9001acb6ade27d583bbc "hoge")を参照。

# aptレポジトリの追加
Ubuntu 20.0.4 LTSでインストール可能なgccのバージョンはサポートされないので，`/etc/apt/sourses.list`に以下のエントリを追加．

```
deb http://dk.archive.ubuntu.com/ubuntu/ trusty main universe
deb http://dk.archive.ubuntu.com/ubuntu/ trusty-updates main universe
```

# 必要なパッケージをインストール (他にもあったかも知れない...）
```
sudo apt install libxft2:i386 libxext6:i386 libncurses5:i386 libbz2-1.0:i386 libstdc++6:i386 g++-4.4 g++-4.4-multilib fontconfig:i386
```

# デフォルトのgccをgcc-4.4に設定
gcc-9はUbuntu 20.0.4 LTSのデフォルト(2020年12月現在)。ここは最新のバージョンに読み替えてください。

```
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 10 --slave /usr/bin/g++ g++ /usr/bin/g++-9
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.4 5 --slave /usr/bin/g++ g++ /usr/bin/g++-4.4
sudo update-alternatives --set gcc /usr/bin/gcc-4.4
```

# ModelSim付属のgccを使わないように退避する
```
cd ${INSTALLDIR}/modelsim_ase
mkdir gcc_stash (名前は何でも良い）
mv gcc-4.* gcc_stash
```

# 古いlibfreetypeをインストールする
### 方法1 ビルドとかしたくない人向け
Ubuntu 20.0.4 LTSのlibfreetpye2のバージョンだとModelSimが起動しないので，2.5.0.1をどこか適当なディレクトリに以下のコマンドを使ってダウンロードして、ModelSimのディレクトリ以下にコピー。

```
wget -q --show-progress https://dl.dries007.net/lib32-freetype2-2.5.0.1.tar.xz -O lib32-freetype2-2.5.0.1.tar.xz
tar xf lib32-freetype2-2.5.0.1.tar.xz
mv ./lib32 ${INSTALLDIR}/modelsim_ase
```

### 方法2 ビルドできる人向け
http://download.savannah.gnu.org/releases/freetype/freetype-2.4.12.tar.bz2
から、ソースをダウンロードする。アーカイブを展開したディレクトリに移動。

```
./configure --build=i686-pc-linux-gnu "CFLAGS=-m32" "CXXFLAGS=-m32" "LDFLAGS=-m32"
```

```
make -j
```

ビルドされた成果物をコピーする。

```
mkdir ${INSTALLDIR}/modelsim_ase/lib32
sudo cp ./objs/.libs/libfreetype.so* ${INSTALLDIR}/modelsim_ase/lib32
```


# ModelSim起動スクリプトを修正
${INSTALLDIR}/modelsim_ase/vco の50行目

```
dir=`dirname "$arg0"`
```
の下に

```
export LD_LIBRARY_PATH=${INSTALLDIR}/modelsim_ase/lib32
```
を追加．

# PATHの設定
以下のディレクトリをPATHに追加する．シェルスクリプトにしておくといいかもしれない．

```
${INSTALLDIR}/quartus/bin
${INSTALLDIR}/qsys/bin
${INSTALLDIR}/quartus/sopc_builder/bin
${INSTALLDIR}/modelsim_ase/bin
```
# 動作確認
- Quartus Primeについては，デスクトップのアイコンをダブルクリックして起動できればOK．もしなんらかのライブラリが足らないと言われたらおとなしくインストールする．(libcanberra-gtk-moduleなんかも必要かもしれない）
- ModelSimはターミナルで`vsim`と打って起動できればOK.

# HLSの使用準備
```
cd ${INSTALLDIR}/hls
bash (bashでないとinit_hls.shをsourceできないので)
source ./init_hls.sh
```

# サンプルを試してみる
~/HLStest（名前は任意）にカウンタのサンプルコードをコピー．
```
cp -r ${INSTALLDIR}/hls/examples/counter ~/HLStest
cd ~/HLtest
```

## x86_64向けにMake
```
make
./test-x86-64
```
PASSEDと表示されればOK．

## FPGA向けにMake
```
make test-fpga
./test-fpga
```
PASSEDと表示されればOK．

## ModelSimで見るための波形を生成する
```
make HLS_CXX_FLAGS=-ghdl test-fpga
./test-fpga
```
これで，`test-fpga.prj/verification/`に`vsim.wlf`ファイルが生成される．

## ModelSimでwlfファイルを開く．
```
vsim test-fpga.prj/verification/vsim.wlf
```

## ModelSimで波形を見る
見たい信号をinstance一覧から選択しておき，
メニューの「Add」->「To Wave」で波形ビューワに追加できる．