找回密码
 注册
关于网站域名变更的通知
查看: 707|回复: 1
打印 上一主题 下一主题

FPGA ------- Vivado HLS 程序优化(基础实例)(高级综合)

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-5-21 16:07 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
FPGA ------- Vivado HLS 程序优化(基础实例)(高级综合)
% ?1 e' G: r# o( o
$ D, g  z3 q& l+ y& o
前言(本文基于赛灵思官方HLS文档UG871中的7.1节):
5 i" c6 Q, _/ c( n/ u( t/ G
' I; Q7 W0 |* I          在使用高层次综合,创造高质量的RTL设计时,一个重要部分就是对C代码进行优化。1 x" d  j  O+ O9 R5 C* f
. ]/ E( h/ [! D% K9 E; G! G
          Vivado HLS拥有自动优化的功能,试图最小化loop和function的latency,为了实现这一点,软件会在loop和function上并行执行尽可能多的操作(比如说,在function级别上,高级综合总是试图并行执行function)。4 e. i# m% L/ d
' o; n3 |) L6 {# x; M/ h
           除了这些自动优化,我们可以手动进行程序优化,即用在不同的solution中添加不同的directive的方法,进行优化和性能对比。其中,对同一个工程,可以建立多个不同的solution(解决方案),为不同的solution添加directive可以达到如下目的:
4 z7 t9 y' y! C0 Y3 d
5 X- m* y) r$ Q6 z' c- v" v: P1、并行执行多个tasks,例如,同一个function的多次执行或同一loop的多次迭代。这是流水线结构。1 Q+ a& K$ v' k) c
$ ^& B1 {. D# A5 {
2、调整数组的物理实现((block RAM),函数,循环和端口(I/O),以提高数据的可用性,并帮助数据流更快地通过设计。
3 m6 G5 \; D( |; [4 h
: s$ {$ Y4 G. g0 i/ s" h5 b8 C2 j1 E3、提供关于数据dependency的信息,或者缺乏数据dependency,允许执行更多的优化。最终的优化是修改C源代码,以消除在代码中意外的dependency,但是这可能会限制硬件的性能。8 o0 D- d1 t8 h9 w* b

/ S/ m5 `( i2 L* B           本文使用的例子是设计一个矩阵相乘函数。目标是在每一个时钟周期处理一个新的sample,并实现数据流接口。
9 n) n6 z7 a* k+ h
0 J/ r; Q) F. B' [8 G/ v. D一、优化matrix multiplier。
9 Z' b. C  t2 Q, O! P, E5 `
1 t8 s3 Y* l! ^2 e4 O; b1、solution1(无优化)
0 x. D1 u* t0 ?; S
5 G' Q- H& ^1 [. a8 i        (1)矩阵乘法器设计,来显示如何优化基于loop的设计。设计目标是在每个时钟周期读取一个使用FIFO接口的sample,  同时最大限度地减少面积。此分析包括在loop级优化和在function级优化的方法。
  S9 k2 R3 j+ V# ?) }
游客,如果您要查看本帖隐藏内容请回复

: m/ U8 x8 I6 g( x' D' a6 {7 h9 K: M' q7 v  }, ?. z  p# }

& c& {* |4 a* |
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-10-9 17:52 , Processed in 0.140625 second(s), 26 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表