FC2カウンター FPGAの部屋 2018年07月08日

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

FPGAの部屋

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

Accelerating SqueezeNet on FPGAを実装してみた1(Vivado HLS編)

Accelerating SqueezeNet on FPGA”を読んでいると、コードが”lankas/SqueezeNet”にあったので、Vivado HLS とVivado で実装してみよう。
今回は、”lankas/SqueezeNet”のFPGA フォルダの内容をVivado HLS 2018.2 でプロジェクトを作って確かめてみよう。

最初に、”lankas/SqueezeNet”をダウンロードして、FPGA フォルダの内容を使って、Vivado HLS 2018.2 の squeezenet プロジェクトを作成した。
squeezenet_1_180708.png

最初にC シミュレーションを行った。成功だ。
squeezenet_2_180708.png

次に C コードの合成を行った。結果を示す。
squeezenet_3_180708.png
squeezenet_4_180708.png

Latency は min 38 クロックで、max は 1620,117,190,84 クロックで、100 MHz で動作時には、1620秒つまり、27 分ということになる。
リソース使用量は、BRAM_18K で 80 % 、DSP48E で 71 % 、FF で 55 % 、LUT が 97 % 使用していて殆どリソースを使い切りそうだ。

C/RTL 協調シミュレーションを行った。
squeezenet_5_180708.png

Latency は min が 2483 クロック、avg が 17619 クロック、 max が 30632 クロックだった。ただし最後にエラーが出てしまった。どうやらRTL シミュレーションは終了しているようなので、C テストベンチに戻す時の領域が足りないのかもしれない?
m_axi INTERFACE 指示子の depth オプションを 256 k まで増やしたがダメだった。マスタの場合はアロケートされたメモリのアドレスまでの領域を確保する必要がある場合があるので、それなのかもしれない?
でも、RTL シミュレーションは終了しているようなので、波形を見る分には問題ないと思う。

C/RTL 協調シミュレーション波形を見てみよう。
squeezenet_6_180708.png
squeezenet_7_180708.png

DMA Write 、DMA Read 共、活発に動作している。

最後に、Export RTL を行った。
squeezenet_8_180708.png

CP achieved post-implementation が 11.528 ns で、100 MHz で動作しないようだ。これは、Vivado HLS で、Uncertainty を 5 ns まで順々に変えて合成しても解消できなかった。動作周波数を下げて動作させる必要があるようだ。
  1. 2018年07月08日 06:32 |
  2. DNN
  3. | トラックバック:0
  4. | コメント:0