FC2カウンター FPGAの部屋 finn-hlslib をやってみる1(インストールと hls-syn-add プロジェクト)
FC2ブログ

FPGAやCPLDの話題やFPGA用のツールの話題などです。 マニアックです。 日記も書きます。

FPGAの部屋

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。Xilinx ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。

finn-hlslib をやってみる1(インストールと hls-syn-add プロジェクト)

Xilinx の FINN を利用した量子化ニューラルネットワーク(QNN)のハードウェア・アクセラレーション用のHLSライブラリが finn-hlslib のようだ。 finn-hlslib をやってみようと思う。

最初に finn-hlslib を git clone をして、 finn-hls/tb ディレクトリに cd する。
git clone https://github.com/Xilinx/finn-hlslib.git
cd finn-hls
cd tb

finn-hlslib_1_200520.png

gen_weights.py を起動して、 config.h と memdata.h を生成した。
python3 gen_weights.py
finn-hlslib_2_200520.png

FINN_HLS_ROOT 環境変数に finn-hlslib のルートディレクトリを設定した。
export FINN_HLS_ROOT=/media/masaaki/Ubuntu_Disk/Xilinx_github/finn-hlslib

試しに test_add.tcl を起動した。
vivado_hls test_add.tcl
finn-hlslib_3_200520.png
finn-hlslib_4_200520.png

C シミュレーション、 C コードの合成、 C/RTL 協調シミュレーションを行った。
hls-syn-add ディレクトリが生成されて、Vivado HLS のプロジェクトが生成されていた。
finn-hlslib_5_200520.png

vivado_hls &
で Vivado HLS 2019.2 を起動して、hls-syn-add ディレクトリのプロジェクトを読み込んだ。
finn-hlslib_6_200520.png

波形を見るために C/RTL 協調シミュレーション時に Dump Trace を all に変更して、実行した。
finn-hlslib_7_200520.png

Latency は 10 クロックだった。

波形を見てみよう。
finn-hlslib_8_200520.png

4 つの出力をしているようだ。

hls-syn-add プロジェクトは何をしているのか?だが、 add_top.cpp を見ると AddStreams_Batch() 関数が実行されている。
AddStreams_Batch() 関数は Resnet-50 でストリームを加算する関数のようだ。
これからソースコードのキャプチャ画面を引用します。
finn-hlslib_9_200521.png

AddStreams_Batch() 関数は streamtools.h に記述されている。
finn-hlslib_10_200521.png

typename で型を定義しているようだ。このように型を定義できるの良いな。。。知らなかった。使おう。。。

AddStreams_Batch() 関数からは、 Add_Streams() 関数が呼ばれている。
finn-hlslib_10_200521.png

AddStreams() 関数では、ビット・フィールド毎(チャネル毎)に offset を加えて加算しているようだ。offset は 2 になっている。
finn-hlslib_11_200521.png

最後に C コードの合成結果を貼っておく。
finn-hlslib_12_200521.png
  1. 2020年05月21日 04:25 |
  2. finn-hlslib
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック URL
https://marsee101.blog.fc2.com/tb.php/4890-3995607e
この記事にトラックバックする(FC2ブログユーザー)