Vivado 2015.4 HLSでは、遂にHLSの機能が無償化されたらしい! 今まで触ってみたいと思いつつ、期限付きの評価ライセンスはきちんと使い切れる自信が無かったりて、申請していなかったので、今回の無償化は非常に嬉しい。さっそく試してみよう。
Vivado®DesignSuite2015.4リリースから、高位合成ツールであるVivadoHLSが無償で提供されるようになり、Vivado のすべてのエディションに含まれるようになりました。この変更を示すため、エディションの名前はVivadoDesign SuiteHLxEditionに変更されています。HLxEditionには、HLSystemEdition、HLDesignEdition、およびHLWebPACK™ Editionがあります。これらのエディションでは、AllProgrammableFPGA、SoC、および再利用可能なプラットフォー ムを高い生産性で設計するための新しい手法がイネーブルになっています。すべてのHLxエディションにはVivado 高位合成(HLS)、VivadoIPインテグレーター、LogicCoreIPサブシステム、およびVivadoインプリメンテーション ツールスイートすべてが含まれており、生産性が高く、高度なCおよびIPベースのデザインフローを即座に導入で きるようになっています。
Lab1. FIRフィルタの高位合成を試してみる
Vivado 2015.4 HLSの起動画面はこんな感じだ。
2014年のチュートリアルだが、一つ一つ試していこう。使ったのは以下のチュートリアル。
まずは言われるがままに、Lab1の、firのプロジェクトからHDLの生成を試してみる。 ただし、利用するボードを選択する所では、所持しているZedBoardを選択した。
ちなみに元になっているfir.cだが、まあC言語っぽいとは言え、多少はHDL生成用にキーワードが入っている。 テストベンチであるfir_test.cは、まるっきりC言語という感じだ。
C言語によるシミュレーション
[Project]→[Run C Simulation]を選択すると、どうやらバイナリが生成され、シミュレーションが実行される。
このバイナリ、生成オプションは良く分からないが、
Compiling(apcc) ../../../../../lab1/fir_test.c in debug mode @I [HLS-10] Running 'c:/Xilinx/Vivado_HLS/2015.4/bin/unwrapped/win64.o/apcc.exe' for user 'masayuki' on host 'fixedesk' (Windows NT_amd64 version 6.1) on Thu Nov 26 23:01:45 +0900 2015 in directory 'C:/usr/work/vivado_hls/ug871-design-files/Vivado_HLS_Tutorial/Introduction/lab1_work/fir/solution1/csim/build' @I [APCC-3] Tmp directory is apcc_db @I [APCC-1] APCC is done. Compiling(apcc) ../../../../../lab1/fir.c in debug mode @I [HLS-10] Running 'c:/Xilinx/Vivado_HLS/2015.4/bin/unwrapped/win64.o/apcc.exe' for user 'masayuki' on host 'fixedesk' (Windows NT_amd64 version 6.1) on Thu Nov 26 23:01:52 +0900 2015 in directory 'C:/usr/work/vivado_hls/ug871-design-files/Vivado_HLS_Tutorial/Introduction/lab1_work/fir/solution1/csim/build' @I [APCC-3] Tmp directory is apcc_db @I [APCC-1] APCC is done.
APCCという謎なツールが動作しているね。最初はC言語によるシミュレーションだから,GCCとかが動いているのかと思ったけど、良く考えるとC言語以外のHDL生成用プリミティブも入っているからそうは行かないのか。 じゃあこれ、GCCとかで一般的に利用されているライブラリとかは、どこまで使えるんだろうね?
csim.exeというものが生成されており、これを実行することでシミュレーションとしている。
合成する
[Solution]→[Run C Synthesis]→[Active Solution]で合成が始まる。この規模だと、7秒くらいで終了した。
でも、この規模を7秒でHDL生成してしまうというのは凄いな。生産性については物凄く上がりそうだ。 ただし、HDLソースをちらっと覗いてみると、必ずしも分かりやすいソースコードにはなっていないと感じた。ちょっとHDLの状態でのデバッグは厳しそうだ。。。
RTLとC言語のコシミュレーション
生成されたRTLのコードと、C言語のテストパタンを複合させて検証を走らせるらしい。チュートリアルの説明には、以下のように説明されている。
- The C test bench generates input vectors for the RTL design.
- The RTL design is simulated.
- The output vectors from the RTL are applied back into the C test bench and the results-checking in the test bench verify whether or not the results are correct.
一旦C言語のテストベンチをRTLに変換?というかRTLのテストベクタを生成すると書いてあるが、詳細は分からない。普通にRTLを走らせて、その結果を再度C言語のテストベンチにフィードバックすると書いてある。 単純に考えた場合、そんなことしなくてもDPI-Cとかで接続すればいいんじゃないのと思うのだが、そうも行かないのかな(複雑そうだしな)
IPの生成
xprを生成する。[Solution]→[Export RTL]を選択する。
IPカタログを生成することで、Vivadoの方でも使えるようになるのかな?とりあえずこれでチュートリアルのLab.1は終了。