Vengineerの妄想(準備期間)

人生は短いけど、長いです。人生を楽しみましょう!

Intel HLS Compilerの感想


お約束通りに、11/6にIntel HLS CompilerがQuartus 17.1のリリースに伴い、リリースされました。


Quartus 17.1のLite Editionをインストールすれば、ライセンス無しで利用できます。
また、Intel SDK for OpenCLも利用できるようになっています。

ドキュメントは、サポートのページの左のDocumentationをクリックすると出てきます。

とりあえず、下記の4つのドキュメントを読めばいいです。PDF版もあります。


サンプルコードでは、デバイスとして Arria10 になっていますので、
Lite Editionを使うときは CycloneV に変えましょう。

公式にサポートしている動作環境は、Windows 7 SP1, 8, 10の64ビットかLinuxRed Hat 6.8です。
あたしがいつも使っている Ubuntu 14.04LTSや16.04LTSはサポート外です。

おまけに、WindowsではMicrosoft Visual Studio 2010がないとダメ、LinuxではGCC 4.4.7が必要です。

公式サポートはRed Hat 6.8ですが、CentoOS 7.3でも動作するようです。
Intel HLS Compilerを使える状態にする(CentOS編)

Ubuntu 16.04LTSでは、Altera(Intel)のFPGA開発ツール「Quartus Prime」をUbuntuにインストールする
ただし、Intel ModelSimとのC/RTLコシミュレーションはエラーのため実行できません。
(なお、Ubuntu 14.04LTSでは、GCC 4.4.7のパッケージ:gcc-4.4, g++-4.4をインストールして、
CPLUS_INCLUDE_PATHを正しく設定すれば、Intel ModelSimとのコシミュレーションも動きます。
GCC 4.4.7をソースコードからビルドしたら、texinfoを4.xにしないとビルド途中でエラーになります)



ちょっとやってみたので、感想を
 ・自動に生成されるC/RTLコシミュレーションは、ModelSimのみサポート。Intel ModelSimでなくてもOKでしょう。
  (お高い、Cadence、Synopsys、AldecでもC/RTLコシミュレーションはサポートしていません)
 ・自動に生成されるRTL側の環境を単体でModelSimでは使うことはできません。
  なぜなら、C側とのコシミュレーションが必要になるからです。
 ・C/RTLコシミュレーションでは、C側API経由でModelSimがロードするDPI-Cのライブラリとソケット通信します。
  具体的にどうなっているかは、解析が必要です。
 ・i++ の引数に、--quartus-compileを指定すると、Quartusがバッチで動いて配置配線までやってくれます。
 ・i++ --component で合成する関数を指定できる
 ・インターフェース合成もある程度あるが、Vivado HLSよりは少ないです。
 ・インターフェースとしてサポートしているものは、Avalon MM Master(Stream)とAvalon MM Slaveです。
    Slaveインターフェースは、Vivado HLSと同様にレジスタの集まりとして実装できます。
 ・SDSoCのようにDMAは勝手に付きません。これは、Vivado HLSと同じ。
 ・Vivado HLSとの互換性は全くないので、Vivado HLSのコードをIntel HLS Compilerでやっても使えません。
    Intel HLS Compiler用にいろいろを変えたり、pragma入れたりしなければいけません。
    C/C++コードでFPGAを設計できますが、
  Vivado HLS用のC/C++コードであり、Intel HLS Compiler用のC/C++コードであるのです。
 ・生成されるHDLコードは、FPGA SDK for OpenCLで生成されるコード(ライブラリ)を使っています。
 ・例題とドキュメントを読めばを見れば、どんなインターフェース合成ができるのかがわかります。
 ・ただし、ドキュメントの量は少ないです。

とは言え、Intel HLS Compilerを利用するのに別途ライセンスフィーが要らないのは非常にうれしいです。
Intel SDK for OpenCLも無償になったのですが、Intel HLS Compilerの方が分かりやすいと思います。

i++.pl って、Perlスクリプト見つけました。

Intel HLS Compiker解体新書書いたら需要ありますかね


追記、
i++のバックエンドが新しくなって、dspbaを使っている。
LLVMは、3.0である
llvm-disコマンドは無いが、別途インストールすれば、使える
引数に -save-tmps を指定すると、中間ファイルを残してくれる。
.bcファイルとかあるので、llvm-disコマンドで内容を確認できる

訪問者、322