FC2カウンター FPGAの部屋 Vivado HLS 2014.4 で AXI4-Stream をテストする4(1次元のフィルタのテスト3、RTLシミュレーション)
FC2ブログ

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

FPGAの部屋

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

Vivado HLS 2014.4 で AXI4-Stream をテストする4(1次元のフィルタのテスト3、RTLシミュレーション)

Vivado HLS 2014.4 で AXI4-Stream をテストする3(1次元のフィルタのテスト2、C++シミュレーション、高位合成)”の続き。

前回はfil_axis_sample を高位合成した。今回は、RTLシミュレーションを行う。その際に、RTLのトレースファイルを出力させて、Vivado でシミュレーション波形の表示を行う。
Vivado Design Suite Tutorial High-Level Synthesis UG871 (v2014.3) November 10, 2014”の 175 ページ、”Chapter 8: RTL Verification, Step 2: View the RTL Trace File in Vivado”を参考にした。

Vivado HLS で Run C/RTL Cosimulation ボタンをクリックして、RTL Cosimulation を行う。(または、Solution メニューから Run C/RTL Cosimulation を選択する)

Vivado HLS で Run C/RTL Cosimulation ボタンをクリックすると、Co-simulation Dialog が出てくる。
Dump Trace を all に変更する。
lap_filter_AXIS_5_150425.png

Co-simulation が終了した。
lap_filter_AXIS_6_150425.png

結果は、C Simulation と同じだった。

次に、RTLシミュレーション波形を見てみよう。

C:\Users\Masaaki\Documents\Vivado_HLS\study\fil_axis_sample\solution1\sim\verilog フォルダに fil_axis_sample.wcfg と fil_axis_sample.wdb が生成されているのが分かる。
lap_filter_AXIS_7_150425.png

Vivado 2014.4 を立ち上げる。
下の Tcl Console タブをクリックする。
lap_filter_AXIS_8_150425.png

すると、Tcl Console が開く。
下の入力領域に、
cd /Users/Masaaki/Documents/Vivado_HLS/study/fil_axis_sample/solution1/sim/verilog/
と入力する。私の環境では、Vivado HLS のプロジェクトと、Vivado のインストール・ディスクが一緒だったが、違う場合はドライブ名も付ける必要があると思う。(やっていないので不確かだ)
lap_filter_AXIS_9_150425.png

次に、
current_fileset
と入力した。すると、Vivado 2014.4 のGUI が変化した。
lap_filter_AXIS_10_150425.png

open_wave_database fil_axis_sample.wdb
と入力した。更に、GUI が変更されて、Scopes や Objects が表示された。
lap_filter_AXIS_11_150425.png

open_wave_config fil_axis_sample.wcfg
を実行すると、シミュレーション波形が表示された。
lap_filter_AXIS_12_150425.png

シミュレーション波形全体を表示した。その際に、ap_start と ap_done、ap_idle をシミュレーション波形に追加した。
lap_filter_AXIS_13_150425.png

カーソルの部分で、s_axi_AXILiteS_WVALID, s_axi_AXILiteS_WREADY 信号が共に 1 になっているので、AXI4 Lite Slave バス経由で、fil_axis_sample に s_axi_AXILiteS_WDATA の 1 が書かれている。これは、スタート信号となる。
少し遅れて、ap_start が 1 になっているが分かる。
lap_filter_AXIS_14_150425.png

次に、AXI4-Stream のデータ in_data_V_V_TDATA を見ると、点線のカーソルと実践のカーソル間で、すべて 0x3e8 になっている。これは、ap_clk からすると 5 クロック分だ。カーソルの差分も 50 ns となっている。
それに対して、out_data_V_V_TDATA を見ると、きちんVivado HLS のコンソールと同様の値が出ているのが分かる。これで、1クロックごとにAXI4-Stream データが出力されていることが分かった。
lap_filter_AXIS_15_150425.png

最後の部分を見ると、実践のカーソルの部分で、ap_done が出力され、ここでフィルタ動作が終了しているのが分かる。
AXI4 Lite Slave バスでは、ポーリングで Read を繰り返し行い、Done するのを監視している。破線のカーソル部分で、0x6 をRead してフィルタ動作の完了が分かった。
lap_filter_AXIS_16_150425.png

このように、Vivado HLS 2014.4 はテストベンチもVerilog HDL に変換してシミュレーションを行ってくれる(これは、Co-simulation Dialog の RTL Selection のラジオボタンで Verilog を指定しているからだ)
とても便利だと思う。これで 1 クロックごとにフィルタが動作するのを確認することができた。しかもアクセスパターンも実際の使用例に近いと思う。
  1. 2015年04月26日 04:29 |
  2. Vivado HLS
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


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

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