FC2カウンター FPGAの部屋 テンプレートで書いた畳み込みニューラルネットワーク2(C/RTL協調シミュレーションとExport RTL)

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

FPGAの部屋

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

テンプレートで書いた畳み込みニューラルネットワーク2(C/RTL協調シミュレーションとExport RTL)

テンプレートで書いた畳み込みニューラルネットワーク2(C シミュレーションとC コードの合成)”の続き。

前回は、テンプレートで書いた各層をつないで、畳み込みニューラルネットワーク(CNN)を構築した。そして、Vivado HLSのプロジェクト all_layers_template を作成して、C シミュレーションと C コードの合成を行った。今回は、C/RTL協調シミュレーションとExport RTL を行う。

まず、C コードの合成によって生成されたVHDL コードのトップファイル all_layers.vhd のentity を貼っておく。
template_cnn_42_180515.png

レジスタ設定、結果取得用のAXI4 Lite Slave インターフェースと画像データを入力するためのAXI4-Stream インターフェースがあるのが分かる。


最初に、C/RTL 協調シミュレーションを行った。

#include "curve_data_0_100.h"

を有効にして、

#define NUM_ITERATIONS 300 // C Simulation

をコメントアウトし、

#define NUM_ITERATIONS 2 // C/RTL CoSimulation

のコメントアウトを外した。
template_cnn_38_180515.png

これで、C/RTL 協調シミュレーションを行った。結果を示す。
template_cnn_39_180515.png

Latency の min は 9259 クロック、avg は 9278 クロック、max は 9297 クロックで、Interval はすべて 9222 クロックだった。C コードの合成と差があるのは何故だろうか?
template_cnn_39_180515.png

C/RTL 協調シミュレーション波形を示す。
全体の波形を示す。CNN の実行2つ分だ。
template_cnn_40_180515.png

2 つ目の CNN の実行時間を計測してみよう。
ap_start から ap_done が出て、終了するまでの時間を計測する。
template_cnn_41_180515.png

92.57 us だった。この前の実装の2番目の処理の実行時間は89.54 us だったので、約 3.03 us ほど遅くなっている。しかし、計測条件が異なるかも?前の計測では、ap_start から ap_done 終了時間ではなかった気がする。
今同条件で測定しなおしたら、以前の all_layers プロジェクトのC/RTL 協調シミュレーションの 2 番目の波形の ap_start から ap_done 終了時間は、90.14 us だった。よってその差は 2.43 us だった。

最後にExport RTL を行った。
なお、Vivado synthesis, place and route にチェックを入れている。
template_cnn_43_180515.png

LUT は 1944 個、FF が 2545 個、DSP が 29 個、BRAM が 15 個使用している。
CP achieved post-implementation は 9.364 ns で、ちょっと危ない気もするが、とりあえずは良いだろう。
  1. 2018年05月17日 04:28 |
  2. DNN
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


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

トラックバック URL
http://marsee101.blog19.fc2.com/tb.php/4170-4969fbbd
この記事にトラックバックする(FC2ブログユーザー)