FC2カウンター FPGAの部屋 2020年06月05日
FC2ブログ

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

FPGAの部屋

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

XRT 2020.1 をインストール

Vitis 2020.1 を動作させるのに XRT 2020.1 が必要だと思い、Debian パッケージ版をダウンロードしてインストールした。その際に、XRT 2019.1 とディレクトリを分けて共用させようと思ったのだが、うまく行かなかった。しかし、XRT 2020.1でVitis 2019.2でビルドできて、zocl.ko(これは2019.2)ロードして、Ultra96V2でStreaming_lap_filter5がVitis IDEで動作した。
XRT 2020.1で共用できるみたいだ。X86で動かすわけじゃないからかな?

という訳で、Xilinx Runtime - 2020.1 のダウンロード・ページから、Ubuntu 18.04 XRT 2020.1 (2.6.655) をダウンロードした。
ダウンロードしたファイル名は、xrt_202010.2.6.655_18.04-amd64-xrt.deb だった。

XRT は /opt/xilinx/xrt にインストールされているので、現在の 2019.2 バージョンの xrt を xrt_192 としてコピーした。
sudo cp -rf xrt xrt_192

xrt_202010.2.6.655_18.04-amd64-xrt.deb の存在するディレクトリに行って、 apt install でインストールした。
sudo apt install --reinstall ./xrt_202010.2.6.655_18.04-amd64-xrt.deb

masaaki@masaaki-H110M4-M01:/media/masaaki/Ubuntu_Disk/Archives/Xilinx_tools/2020.1$ sudo apt install --reinstall ./xrt_202010.2.6.655_18.04-amd64-xrt.deb 
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
注意、'./xrt_202010.2.6.655_18.04-amd64-xrt.deb' の代わりに 'xrt' を選択します
以下の追加パッケージがインストールされます:
  libudev-dev
以下のパッケージが新たにインストールされます:
  libudev-dev
以下のパッケージはアップグレードされます:
  xrt
アップグレード: 1 個、新規インストール: 1 個、削除: 0 個、保留: 5 個。
8,166 kB 中 19.1 kB のアーカイブを取得する必要があります。
この操作後に追加で 681 kB のディスク容量が消費されます。
続行しますか? [Y/n] y
取得:1 /media/masaaki/Ubuntu_Disk/Archives/Xilinx_tools/2020.1/xrt_202010.2.6.655_18.04-amd64-xrt.deb xrt amd64 2.6.655 [8,147 kB]
取得:2 http://jp.archive.ubuntu.com/ubuntu bionic-updates/main amd64 libudev-dev amd64 237-3ubuntu10.41 [19.1 kB]
19.1 kB を 6秒 で取得しました (3,428 B/s)
以前に未選択のパッケージ libudev-dev:amd64 を選択しています。
(データベースを読み込んでいます ... 現在 465021 個のファイルとディレクトリがインストールされています。)
.../libudev-dev_237-3ubuntu10.41_amd64.deb を展開する準備をしています ...
libudev-dev:amd64 (237-3ubuntu10.41) を展開しています...
.../xrt_202010.2.6.655_18.04-amd64-xrt.deb を展開する準備をしています ...
Unregistering old XRT Linux kernel module sources 2.3.1301 from dkms on Ubuntu/Debian

-------- Uninstall Beginning --------
Module:  xrt
Version: 2.3.1301
Kernel:  4.15.0-101-generic (x86_64)
-------------------------------------

Status: Before uninstall, this module version was ACTIVE on this kernel.

xocl.ko:
 - Uninstallation
   - Deleting from: /lib/modules/4.15.0-101-generic/updates/dkms/
 - Original module
   - No original module was found for this module on this kernel.
   - Use the dkms install command to reinstall any previous module version.


xclmgmt.ko:
 - Uninstallation
   - Deleting from: /lib/modules/4.15.0-101-generic/updates/dkms/
 - Original module
   - No original module was found for this module on this kernel.
   - Use the dkms install command to reinstall any previous module version.

depmod.......

DKMS: uninstall completed.

-------- Uninstall Beginning --------
Module:  xrt
Version: 2.3.1301
Kernel:  4.15.0-99-generic (x86_64)
-------------------------------------

Status: Before uninstall, this module version was ACTIVE on this kernel.

xocl.ko:
 - Uninstallation
   - Deleting from: /lib/modules/4.15.0-99-generic/updates/dkms/
 - Original module
   - No original module was found for this module on this kernel.
   - Use the dkms install command to reinstall any previous module version.


xclmgmt.ko:
 - Uninstallation
   - Deleting from: /lib/modules/4.15.0-99-generic/updates/dkms/
 - Original module
   - No original module was found for this module on this kernel.
   - Use the dkms install command to reinstall any previous module version.

depmod.......

DKMS: uninstall completed.

------------------------------
Deleting module version: 2.3.1301
completely from the DKMS tree.
------------------------------
Done.
Cleanup is skipped for package upgrade/downgrade/re-install on Ubuntu/Debian
xrt (2.6.655) で (2.3.1301 に) 上書き展開しています ...
libudev-dev:amd64 (237-3ubuntu10.41) を設定しています ...
xrt (2.6.655) を設定しています ...
Unloading old XRT Linux kernel modules
rmmod: ERROR: Module xocl is not currently loaded
rmmod: ERROR: Module xclmgmt is not currently loaded
Invoking DKMS common.postinst for xrt
Loading new xrt-2.6.655 DKMS files...
Building for 4.15.0-101-generic
Building initial module for 4.15.0-101-generic
Secure Boot not enabled on this system.
Done.

xocl:
Running module version sanity check.
 - Original module
   - No original module exists within this kernel
 - Installation
   - Installing to /lib/modules/4.15.0-101-generic/updates/dkms/

xclmgmt.ko:
Running module version sanity check.
 - Original module
   - No original module exists within this kernel
 - Installation
   - Installing to /lib/modules/4.15.0-101-generic/updates/dkms/

depmod....

DKMS: install completed.
Finished DKMS common.postinst
Loading new XRT Linux kernel modules
Installing MSD / MPD daemons
Skipping pyopencl installation...
man-db (2.8.3-2ubuntu0.1) のトリガを処理しています ...
N: ファイル '/media/masaaki/Ubuntu_Disk/Archives/Xilinx_tools/2020.1/xrt_202010.2.6.655_18.04-amd64-xrt.deb' がユーザ '_apt' からアクセスできないため、ダウンロードは root でサンドボックスを通さずに行われます。 - pkgAcquire::Run (13: 許可がありません)


/opt/xilinx/xrt ディレクトリを示す。
XRT20201_1_200605.png

source /opt/xilinx/xrt_192/setup.sh
をするとうまく行かなかった。
XRT20201_2_200605.png

source /opt/xilinx/xrt/setup.sh
をして、 XRT 202001 を source しても、Vitis 2019.1 で clean して build してから、Ultra96V2 のPetaLinux 2019.2 を起動して 2019.2 の zocl.ko を起動し、Vitis 2019.2 GUI から Streaming_lap_filter5 を Run したところ成功した。
XRT 202001 でも Vitis 2019.2 を動かすことができた。
XRT20201_3_200605.png
  1. 2020年06月05日 20:43 |
  2. Vitis
  3. | トラックバック:0
  4. | コメント:0

PetaLinux 2020.1 のインストール

今日 2020年6月5日に、Xilinx ツールの 2020.1 が出た。
Vitis 2020.1 はインストールした。

次に、PetaLinux をインストールしたのだが、その PetaLinux 2020.1 のインストール方法を書いておく。

まずは、Xilinx 社のサイトから PetaLinux 2020.1 のインストーラーをダウンロードする。家の Ubuntu 18.04 のパソコンで見ると日本の Xilinx サイトはモバイル画面になってしまうので、US のXilinx 社のダウンロード・サイトから PetaLinux 2020.1 インストーラー をダウンロードした。

次に、PetaLinux に必要とされるパッケージのインストールだが、
PetaLinuxToolsのインストール
Docker上ののUbuntu 16.04にPetaLinux 2018.3をインストールする
Docker上ののUbuntu 16.04にPetaLinux 2018.3をインストールする2(インストールできた)
などを参考にインストールしよう。私はもうすでに、インストール済みだ。

ダウンロードした PetaLinux 2020.1 インストーラー petalinux-v2020.1-final-installer.run を実行可能に設定する。
chmod +x petalinux-v2020.1-final-installer.run
PetaLinux20201_1_200605.png

/media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux ディレクトリに、 2020.1 ディレクトリを新規作成した。
PetaLinux20201_2_200605.png

./petalinux-v2020.1-final-installer.run -d /media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/2020.1
で、PetaLinux 2020.1 インストーラーを起動してインストールを行った。
ライセンスが表示されるので、q で抜けて y を押す動作を 3 回繰り返すと、PetaLinux 2020.1 がインストールできた。
PetaLinux20201_3_200605.png
PetaLinux20201_4_200605.png

/media/masaaki/Ubuntu_Disk/tools/Xilinx/PetaLinux/2020.1 ディレクトリに PetaLinux 2020.1 がインストールされた。
PetaLinux20201_5_200605.png

settings.sh を起動すると PetaLinux 2020.1 の環境が設定される。
  1. 2020年06月05日 20:38 |
  2. PetaLinux
  3. | トラックバック:0
  4. | コメント:0

finn をやってみる10(tfc_end2end_example.ipynb その5)

finn をやってみる9(tfc_end2end_example.ipynb その4)”の続き。

前回は、 end2end_example の tfc_end2end_example.ipynb の 3. Vivado HLS and IPI の Synthesizing HLS to IP Blocks まで実行して、docker でコンテナに入り、Vivado HLS プロジェクトを覗き始めた。今回は、その続きで、Vivado HLS のプロジェクトを見ていこう。

code_gen_ipgen_StreamingFCLayer_Batch_0_av35euos に入ったところからスタートだ。
sol1 ディレクトリに移動して、syn と syn/report ディレクトリの内容と impl_ip ディレクトリの内容を見た。
impl/ip ディレクトリには、IP の圧縮形式の xilinx_com_hls_StreamingFCLayer_Batch_0_1_0.zip が見えた。
finn_76_200604.png

syn/report の StreamingFCLayer_Batch_0_csynth.rpt を示す。

================================================================
== Vivado HLS Report for 'StreamingFCLayer_Batch_0'
================================================================
* Date:           Tue Jun  2 19:58:23 2020

* Version:        2019.2 (Build 2698951 on Thu Oct 24 19:15:34 MDT 2019)
* Project:        project_StreamingFCLayer_Batch_0
* Solution:       sol1
* Product family: zynq
* Target device:  xc7z020-clg400-1


================================================================
== Performance Estimates
================================================================
+ Timing: 
    * Summary: 
    +--------+----------+----------+------------+
    |  Clock |  Target  | Estimated| Uncertainty|
    +--------+----------+----------+------------+
    |ap_clk  | 10.00 ns | 8.488 ns |   1.25 ns  |
    +--------+----------+----------+------------+

+ Latency: 
    * Summary: 
    +---------+---------+----------+----------+-----+-----+---------+
    |  Latency (cycles) |  Latency (absolute) |  Interval | Pipeline|
    |   min   |   max   |    min   |    max   | min | max |   Type  |
    +---------+---------+----------+----------+-----+-----+---------+
    |       70|       70| 0.700 us | 0.700 us |   70|   70|   none  |
    +---------+---------+----------+----------+-----+-----+---------+

    + Detail: 
        * Instance: 
        +--------------------------------+----------------------+---------+---------+----------+----------+-----+-----+---------+
        |                                |                      |  Latency (cycles) |  Latency (absolute) |  Interval | Pipeline|
        |            Instance            |        Module        |   min   |   max   |    min   |    max   | min | max |   Type  |
        +--------------------------------+----------------------+---------+---------+----------+----------+-----+-----+---------+
        |grp_Matrix_Vector_Activa_fu_28  |Matrix_Vector_Activa  |       67|       67| 0.670 us | 0.670 us |   67|   67|   none  |
        +--------------------------------+----------------------+---------+---------+----------+----------+-----+-----+---------+

        * Loop: 
        N/A



================================================================
== Utilization Estimates
================================================================
* Summary: 
+-----------------+---------+-------+--------+-------+-----+
|       Name      | BRAM_18K| DSP48E|   FF   |  LUT  | URAM|
+-----------------+---------+-------+--------+-------+-----+
|DSP              |        -|      -|       -|      -|    -|
|Expression       |        -|      -|       0|      2|    -|
|FIFO             |        -|      -|       -|      -|    -|
|Instance         |        -|      -|    2530|  25464|    -|
|Memory           |        -|      -|       -|      -|    -|
|Multiplexer      |        -|      -|       -|     45|    -|
|Register         |        -|      -|       5|      -|    -|
+-----------------+---------+-------+--------+-------+-----+
|Total            |        0|      0|    2535|  25511|    0|
+-----------------+---------+-------+--------+-------+-----+
|Available        |      280|    220|  106400|  53200|    0|
+-----------------+---------+-------+--------+-------+-----+
|Utilization (%)  |        0|      0|       2|     47|    0|
+-----------------+---------+-------+--------+-------+-----+

+ Detail: 
    * Instance: 
    +--------------------------------+----------------------+---------+-------+-
-----+-------+-----+
    |            Instance            |        Module        | BRAM_18K| DSP48E| 
 FF  |  LUT  | URAM|
    +--------------------------------+----------------------+---------+-------+-
-----+-------+-----+
    |grp_Matrix_Vector_Activa_fu_28  |Matrix_Vector_Activa  |        0|      0| 
 2530|  25464|    0|
    +--------------------------------+----------------------+---------+-------+-
-----+-------+-----+
    |Total                           |                      |        0|      0| 
 2530|  25464|    0|
    +--------------------------------+----------------------+---------+-------+-
-----+-------+-----+

    * DSP48E: 
    N/A

    * Memory: 
    N/A

    * FIFO: 
    N/A

    * Expression: 
    +-----------------------------------------------+----------+-------+---+----
+------------+------------+
    |                 Variable Name                 | Operation| DSP48E| FF| LUT
| Bitwidth P0| Bitwidth P1|
    +-----------------------------------------------+----------+-------+---+----
+------------+------------+
    |grp_Matrix_Vector_Activa_fu_28_out_V_V_TREADY  |    and   |      0|  0|   2
|           1|           1|
    +-----------------------------------------------+----------+-------+---+----
+------------+------------+
    |Total                                          |          |      0|  0|   2
|           1|           1|
    +-----------------------------------------------+----------+-------+---+----
+------------+------------+

    * Multiplexer: 
    +------------------------+----+-----------+-----+-----------+
    |          Name          | LUT| Input Size| Bits| Total Bits|
    +------------------------+----+-----------+-----+-----------+
    |ap_NS_fsm               |  27|          5|    1|          5|
    |in0_V_V_TREADY_int      |   9|          2|    1|          2|
    |weights_V_V_TREADY_int  |   9|          2|    1|          2|
    +------------------------+----+-----------+-----+-----------+
    |Total                   |  45|          9|    3|          9|
    +------------------------+----+-----------+-----+-----------+

    * Register: 
    +---------------------------------------------+---+----+-----+-----------+
    |                     Name                    | FF| LUT| Bits| Const Bits|
    +---------------------------------------------+---+----+-----+-----------+
    |ap_CS_fsm                                    |  4|   0|    4|          0|
    |grp_Matrix_Vector_Activa_fu_28_ap_start_reg  |  1|   0|    1|          0|
    +---------------------------------------------+---+----+-----+-----------+
    |Total                                        |  5|   0|    5|          0|
    +---------------------------------------------+---+----+-----+-----------+



================================================================
== Interface
================================================================
* Summary: 
+--------------------+-----+-----+--------------+--------------------------+----
----------+
|      RTL Ports     | Dir | Bits|   Protocol   |       Source Object      |    
C Type    |
+--------------------+-----+-----+--------------+--------------------------+----
----------+
|ap_clk              |  in |    1| ap_ctrl_none | StreamingFCLayer_Batch_0 | ret
urn value |
|ap_rst_n            |  in |    1| ap_ctrl_none | StreamingFCLayer_Batch_0 | ret
urn value |
|in0_V_V_TDATA       |  in |   56|     axis     |          in0_V_V         |    
pointer   |
|in0_V_V_TVALID      |  in |    1|     axis     |          in0_V_V         |    
pointer   |
|in0_V_V_TREADY      | out |    1|     axis     |          in0_V_V         |    
pointer   |
|weights_V_V_TDATA   |  in |  784|     axis     |        weights_V_V       |    
pointer   |
|weights_V_V_TVALID  |  in |    1|     axis     |        weights_V_V       |    
pointer   |
|weights_V_V_TREADY  | out |    1|     axis     |        weights_V_V       |    
pointer   |
|out_V_V_TDATA       | out |   16|     axis     |          out_V_V         |    
pointer   |
|out_V_V_TVALID      | out |    1|     axis     |          out_V_V         |    
pointer   |
|out_V_V_TREADY      |  in |    1|     axis     |          out_V_V         |    
pointer   |
+--------------------+-----+-----+--------------+--------------------------+----
----------+


次に、 /tmp/finn_dev_masaaki/code_gen_ipgen_StreamingFCLayer_Batch_0_av35euos の ソースコードの top_StreamingFCLayer_Batch_0.cpp の関数定義文を示す。

void StreamingFCLayer_Batch_0(
                    hls::stream<ap_uint<49>> &in0,
                    hls::stream<ap_uint<784>> &weights,
                    hls::stream<ap_uint<16>> &out
                    )


これを合成した HDL の内の VHDL ファイルを示す。
/tmp/finn_dev_masaaki/code_gen_ipgen_StreamingFCLayer_Batch_0_av35euos/project_StreamingFCLayer_Batch_0/sol1/syn/vhdl ディレクトリの StreamingFCLayer_Batch_0_StreamingFCLayer_Batch_0.vhd の entity 文だけを引用する。

entity StreamingFCLayer_Batch_0_StreamingFCLayer_Batch_0 is
port (
    ap_clk : IN STD_LOGIC;
    ap_rst_n : IN STD_LOGIC;
    in0_V_V_TDATA : IN STD_LOGIC_VECTOR (55 downto 0);
    in0_V_V_TVALID : IN STD_LOGIC;
    in0_V_V_TREADY : OUT STD_LOGIC;
    weights_V_V_TDATA : IN STD_LOGIC_VECTOR (783 downto 0);
    weights_V_V_TVALID : IN STD_LOGIC;
    weights_V_V_TREADY : OUT STD_LOGIC;
    out_V_V_TDATA : OUT STD_LOGIC_VECTOR (15 downto 0);
    out_V_V_TVALID : OUT STD_LOGIC;
    out_V_V_TREADY : IN STD_LOGIC );
end;


次に、 code_gen_ipgen_StreamingDataWidthConverter_Batch_0_nzm_awqb を見てみよう。
finn_77_200605.png

hls_syn_StreamingDataWidthConverter_Batch_0.tcl や ソースコードの top_StreamingDataWidthConverter_Batch_0.cpp などがある。

/tmp/finn_dev_masaaki/code_gen_ipgen_StreamingDataWidth
Converter_Batch_0_nzm_awqb/project_StreamingDataWidthConverter_Batch_0/sol1 に移動して、syn ディレクトリや syn/report ディレクトリを見た。
finn_78_200605.png

StreamingDataWidthConverter_Batch_0_csynth.rpt を見てみよう。

================================================================
== Vivado HLS Report for 'StreamingDataWidthConverter_Batch_0'
================================================================
* Date:           Tue Jun  2 19:55:07 2020

* Version:        2019.2 (Build 2698951 on Thu Oct 24 19:15:34 MDT 2019)
* Project:        project_StreamingDataWidthConverter_Batch_0
* Solution:       sol1
* Product family: zynq
* Target device:  xc7z020-clg400-1


================================================================
== Performance Estimates
================================================================
+ Timing: 
    * Summary: 
    +--------+----------+----------+------------+
    |  Clock |  Target  | Estimated| Uncertainty|
    +--------+----------+----------+------------+
    |ap_clk  | 10.00 ns | 5.723 ns |   1.25 ns  |
    +--------+----------+----------+------------+

+ Latency: 
    * Summary: 
    +---------+---------+-----------+-----------+-----+-----+---------+
    |  Latency (cycles) |   Latency (absolute)  |  Interval | Pipeline|
    |   min   |   max   |    min    |    max    | min | max |   Type  |
    +---------+---------+-----------+-----------+-----+-----+---------+
    |        7|        7| 70.000 ns | 70.000 ns |    7|    7|   none  |
    +---------+---------+-----------+-----------+-----+-----+---------+

    + Detail: 
        * Instance: 
        +----------------------------------+------------------------+---------+---------+-----------+-----------+-----+-----+---------+
        |                                  |                        |  Latency (cycles) |   Latency (absolute)  |  Interval | Pipeline|
        |             Instance             |         Module         |   min   |   max   |    min    |    max    | min | max |   Type  |
        +----------------------------------+------------------------+---------+---------+-----------+-----------+-----+-----+---------+
        |grp_StreamingDataWidthCo_1_fu_26  |StreamingDataWidthCo_1  |        4|        4| 40.000 ns | 40.000 ns |    4|    4|   none  |
        +----------------------------------+------------------------+---------+---------+-----------+-----------+-----+-----+---------+

        * Loop: 
        N/A



================================================================
== Utilization Estimates
================================================================
* Summary: 
+-----------------+---------+-------+--------+-------+-----+
|       Name      | BRAM_18K| DSP48E|   FF   |  LUT  | URAM|
+-----------------+---------+-------+--------+-------+-----+
|DSP              |        -|      -|       -|      -|    -|
|Expression       |        -|      -|       0|      2|    -|
|FIFO             |        -|      -|       -|      -|    -|
|Instance         |        -|      -|      65|    241|    -|
|Memory           |        -|      -|       -|      -|    -|
|Multiplexer      |        -|      -|       -|     36|    -|
|Register         |        -|      -|       5|      -|    -|
+-----------------+---------+-------+--------+-------+-----+
|Total            |        0|      0|      70|    279|    0|
+-----------------+---------+-------+--------+-------+-----+
|Available        |      280|    220|  106400|  53200|    0|
+-----------------+---------+-------+--------+-------+-----+
|Utilization (%)  |        0|      0|   ~0   |   ~0  |    0|
+-----------------+---------+-------+--------+-------+-----+

+ Detail: 
    * Instance: 
    +----------------------------------+------------------------+---------+-------+----+-----+-----+
    |             Instance             |         Module         | BRAM_18K| DSP48E| FF | LUT | URAM|
    +----------------------------------+------------------------+---------+-------+----+-----+-----+
    |grp_StreamingDataWidthCo_1_fu_26  |StreamingDataWidthCo_1  |        0|      0|  65|  241|    0|
    +----------------------------------+------------------------+---------+-------+----+-----+-----+
    |Total                             |                        |        0|      0|  65|  241|    0|
    +----------------------------------+------------------------+---------+-------+----+-----+-----+

    * DSP48E: 
    N/A

    * Memory: 
    N/A

    * FIFO: 
    N/A

    * Expression: 
    +-------------------------------------------------+----------+-------+---+----+------------+------------+
    |                  Variable Name                  | Operation| DSP48E| FF| LUT| Bitwidth P0| Bitwidth P1|
    +-------------------------------------------------+----------+-------+---+----+------------+------------+
    |grp_StreamingDataWidthCo_1_fu_26_out_V_V_TREADY  |    and   |      0|  0|   2|           1|           1|
    +-------------------------------------------------+----------+-------+---+----+------------+------------+
    |Total                                            |          |      0|  0|   2|           1|           1|
    +-------------------------------------------------+----------+-------+---+----+------------+------------+

    * Multiplexer: 
    +--------------------+----+-----------+-----+-----------+
    |        Name        | LUT| Input Size| Bits| Total Bits|
    +--------------------+----+-----------+-----+-----------+
    |ap_NS_fsm           |  27|          5|    1|          5|
    |in0_V_V_TREADY_int  |   9|          2|    1|          2|
    +--------------------+----+-----------+-----+-----------+
    |Total               |  36|          7|    2|          7|
    +--------------------+----+-----------+-----+-----------+

    * Register: 
    +-----------------------------------------------+---+----+-----+-----------+
    |                      Name                     | FF| LUT| Bits| Const Bits|
    +-----------------------------------------------+---+----+-----+-----------+
    |ap_CS_fsm                                      |  4|   0|    4|          0|
    |grp_StreamingDataWidthCo_1_fu_26_ap_start_reg  |  1|   0|    1|          0|
    +-----------------------------------------------+---+----+-----+-----------+
    |Total                                          |  5|   0|    5|          0|
    +-----------------------------------------------+---+----+-----+-----------+



================================================================
== Interface
================================================================
* Summary: 
+----------------+-----+-----+--------------+-------------------------------------+--------------+
|    RTL Ports   | Dir | Bits|   Protocol   |            Source Object            |    C Type    |
+----------------+-----+-----+--------------+-------------------------------------+--------------+
|ap_clk          |  in |    1| ap_ctrl_none | StreamingDataWidthConverter_Batch_0 | return value |
|ap_rst_n        |  in |    1| ap_ctrl_none | StreamingDataWidthConverter_Batch_0 | return value |
|in0_V_V_TDATA   |  in |   16|     axis     |               in0_V_V               |    pointer   |
|in0_V_V_TVALID  |  in |    1|     axis     |               in0_V_V               |    pointer   |
|in0_V_V_TREADY  | out |    1|     axis     |               in0_V_V               |    pointer   |
|out_V_V_TDATA   | out |    8|     axis     |               out_V_V               |    pointer   |
|out_V_V_TVALID  | out |    1|     axis     |               out_V_V               |    pointer   |
|out_V_V_TREADY  |  in |    1|     axis     |               out_V_V               |    pointer   |
+----------------+-----+-----+--------------+-------------------------------------+--------------+


project_StreamingDataWidthConverter_Batch_0 は 7 クロックしかかかっていない。
たしかこれは、ストリームの幅を変えると言っていたので、ソースコードの top_StreamingDataWidthConverter_Batch_0.cpp の関数宣言部分を見てみよう。

void StreamingDataWidthConverter_Batch_0(hls::stream > &in0, hls::stream > &out)


16 ビット幅から 8 ビット幅に変換しているようだ。

合成された VHDL ファイルの StreamingDataWidthConverter_Batch_0_StreamingDataWidthConverter_Batch_0.vhd の entity 部分を見てみよう。

entity StreamingDataWidthConverter_Batch_0_StreamingDataWidthConverter_Batch_0 i
s
port (
    ap_clk : IN STD_LOGIC;
    ap_rst_n : IN STD_LOGIC;
    in0_V_V_TDATA : IN STD_LOGIC_VECTOR (15 downto 0);
    in0_V_V_TVALID : IN STD_LOGIC;
    in0_V_V_TREADY : OUT STD_LOGIC;
    out_V_V_TDATA : OUT STD_LOGIC_VECTOR (7 downto 0);
    out_V_V_TVALID : OUT STD_LOGIC;
    out_V_V_TREADY : IN STD_LOGIC );
end;


in0_V_V_TDATA が 16 ビット幅で、out_V_V_TDATA が 8 ビット幅だった。

/tmp/finn_dev_masaaki/code_gen_ipgen_StreamingDataWidthConverter_Batch_0_nzm_awqb/project_StreamingDataWidthConverter_Batch_0/sol1/impl/ip ディレクトリに行くと、IP の ZIP 圧縮ファイルの xilinx_com_hls_StreamingDataWidthConverter_Batch_0_1_0.zip が生成されていた。
finn_79_200605.png
  1. 2020年06月05日 06:23 |
  2. finn
  3. | トラックバック:0
  4. | コメント:0