Vitis HLS 学习笔记--理解串流Stream(3)

目录

1. 简介

2. 综合报告的差别

2.1 包含 do-while

2.2 不包含 do-while

2.3 报告差异分析

3. 总结


1. 简介

针对《Vitis HLS 学习笔记--理解串流Stream(2)-CSDN博客》博文的内容,做进一步说明。

2. 综合报告的差别

2.1 包含 do-while

+ Performance & Resource Estimates: 
    
    PS: '+' for module; 'o' for loop; '*' for dataflow
    +--------------------+------+------+---------+--------+----------+---------+------+----------+------+----+---------+----------+-----+
    |       Modules      | Issue|      | Latency | Latency| Iteration|         | Trip |          |      |    |         |          |     |
    |       & Loops      | Type | Slack| (cycles)|  (ns)  |  Latency | Interval| Count| Pipelined| BRAM | DSP|    FF   |    LUT   | URAM|
    +--------------------+------+------+---------+--------+----------+---------+------+----------+------+----+---------+----------+-----+
    |+ example           |     -|  6.45|        -|       -|         -|        -|     -|        no|     -|   -|  4 (~0%)|  92 (~0%)|    -|
    | o VITIS_LOOP_15_1  |     -|  7.30|        -|       -|         2|        1|     -|       yes|     -|   -|        -|         -|    -|
    +--------------------+------+------+---------+--------+----------+---------+------+----------+------+----+---------+----------+-----+


================================================================
== HW Interfaces
================================================================
* AXIS
+-----------+---------------+-------+-------+-------+--------+-------+--------+
| Interface | Register Mode | TDATA | TKEEP | TLAST | TREADY | TSTRB | TVALID |
+-----------+---------------+-------+-------+-------+--------+-------+--------+
| A         | both          | 32    | 4     | 1     | 1      | 4     | 1      |
| B         | both          | 32    | 4     | 1     | 1      | 4     | 1      |
+-----------+---------------+-------+-------+-------+--------+-------+--------+

* TOP LEVEL CONTROL
+-----------+------------+-----------------------------------+
| Interface | Type       | Ports                             |
+-----------+------------+-----------------------------------+
| ap_clk    | clock      | ap_clk                            |
| ap_rst_n  | reset      | ap_rst_n                          |
| ap_ctrl   | ap_ctrl_hs | ap_done ap_idle ap_ready ap_start |
+-----------+------------+-----------------------------------+


================================================================
== SW I/O Information
================================================================
* Top Function Arguments
+----------+-----------+-----------------------------------------------------+
| Argument | Direction | Datatype                                            |
+----------+-----------+-----------------------------------------------------+
| A        | in        | stream<hls::axis<std::complex<short>, 0, 0, 0>, 0>& |
| B        | out       | stream<hls::axis<std::complex<short>, 0, 0, 0>, 0>& |
+----------+-----------+-----------------------------------------------------+

* SW-to-HW Mapping
+----------+--------------+-----------+
| Argument | HW Interface | HW Type   |
+----------+--------------+-----------+
| A        | A            | interface |
| B        | B            | interface |
+----------+--------------+-----------+

2.2 不包含 do-while

+ Performance & Resource Estimates: 
    
    PS: '+' for module; 'o' for loop; '*' for dataflow
    +-----------+------+------+---------+--------+----------+---------+------+----------+------+----+---------+----------+-----+
    |  Modules  | Issue|      | Latency | Latency| Iteration|         | Trip |          |      |    |         |          |     |
    |  & Loops  | Type | Slack| (cycles)|  (ns)  |  Latency | Interval| Count| Pipelined| BRAM | DSP|    FF   |    LUT   | URAM|
    +-----------+------+------+---------+--------+----------+---------+------+----------+------+----+---------+----------+-----+
    |+ example  |     -|  6.45|        1|  10.000|         -|        2|     -|        no|     -|   -|  2 (~0%)|  82 (~0%)|    -|
    +-----------+------+------+---------+--------+----------+---------+------+----------+------+----+---------+----------+-----+


================================================================
== HW Interfaces
================================================================
* AXIS
+-----------+---------------+-------+-------+-------+--------+-------+--------+
| Interface | Register Mode | TDATA | TKEEP | TLAST | TREADY | TSTRB | TVALID |
+-----------+---------------+-------+-------+-------+--------+-------+--------+
| A         | both          | 32    | 4     | 1     | 1      | 4     | 1      |
| B         | both          | 32    | 4     | 1     | 1      | 4     | 1      |
+-----------+---------------+-------+-------+-------+--------+-------+--------+

* TOP LEVEL CONTROL
+-----------+------------+-----------------------------------+
| Interface | Type       | Ports                             |
+-----------+------------+-----------------------------------+
| ap_clk    | clock      | ap_clk                            |
| ap_rst_n  | reset      | ap_rst_n                          |
| ap_ctrl   | ap_ctrl_hs | ap_done ap_idle ap_ready ap_start |
+-----------+------------+-----------------------------------+


================================================================
== SW I/O Information
================================================================
* Top Function Arguments
+----------+-----------+-----------------------------------------------------+
| Argument | Direction | Datatype                                            |
+----------+-----------+-----------------------------------------------------+
| A        | in        | stream<hls::axis<std::complex<short>, 0, 0, 0>, 0>& |
| B        | out       | stream<hls::axis<std::complex<short>, 0, 0, 0>, 0>& |
+----------+-----------+-----------------------------------------------------+

* SW-to-HW Mapping
+----------+--------------+-----------+
| Argument | HW Interface | HW Type   |
+----------+--------------+-----------+
| A        | A            | interface |
| B        | B            | interface |
+----------+--------------+-----------+

2.3 报告差异分析

仔细分析报告,这两段Vitis HLS综合报告中,主要的差异在于Performance & Resource Estimates部分。

代码综合后的最后 IP 接口也是一致的,如下图所示:

 

  • Latency (cycles),在综合报告1中,模块example和循环VITIS_LOOP_15_1的延迟(Latency)是未指定的(-),而在综合报告2中,模块example的延迟被明确为1个周期。
  • Iteration Interval,综合报告2中,模块example的迭代间隔(Iteration Interval)为2,这意味着每两个周期可以开始一个新的迭代。综合报告1中没有提供这一信息。

Resource Estimates:
Flip-Flops (FF): 综合报告1中,模块example使用了4个FF,占总量的约0%,而综合报告2中使用了2个FF。
Look-Up Tables (LUT): 综合报告1中,模块example使用了92个LUT,而综合报告2中使用了82个LUT。
其他部分,如HW Interfaces和SW I/O Information,在两个报告中保持一致。

所以两者差异的本质,只是控制逻辑的细微差异,导致资源用量的稍许差异,而模块本身的功能则完全一致。

这里的分析支持博文《Vitis HLS 学习笔记--理解串流Stream(2)-CSDN博客》的结论。

3. 总结

综合报告1和综合报告2展示了相同代码在Vitis HLS中的综合结果。它们的差异主要集中在性能和资源估计方面,两个报告显示了轻微的差异,例如使用的Flip-Flops和Look-Up Tables数量略有不同。这些差异主要是由控制逻辑微小的差异所导致,而模块功能本身并未变化。总体而言,这些分析结果支持了《Vitis HLS 学习笔记--理解串流Stream(2)-CSDN博客》中的结论。

  • 29
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值