专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
DSP
关于Xilinx HLS的一些细节
2019-07-13 19:24
发布
生成海报
站内文章
/
DSP
14693
0
1070
研究UG902的过程中,发现HLS要注意的细节很杂。这里随便列举几个
1)在
DATAFLOW
优化时,必须是 single-producer-consumer 模式,也就是
单入单出
。比如,一旦一个loop的结果被后面多个loop用了,DATAFLOW优化即失效;
2)在
DATAFLOW
优化时,HLS不优化
条件执行
的tasks。所以在编程中要注意一些问题,典型的就是
if-else 必须放在loop里面,而不是放在loop外面
;
3)使用
纯C
时,有一个典型的坑,就是数学运算时 一定要注意
边界位宽。
注意
操作数的强制转换
,如上图。
4)使用
纯C
时,多重访问的数据,比如流入流出的数据,切记
指针指向的形参要加volatile ,告诉HLS此形参是 流
。
5)HLS生成代码
优先保证性能
,因此可能会导致例化的某些资源(典型的像 DSP48E资源)不够。这时,需要手动约束HLS降低某些资源的使用量。
例如上图就约束了硬件乘法器(消耗的是DSP48E)的使用量。
6)下图中想要实现的功能,并不能实现,因为
din_len
是
外部输入的
,所以每次都要
花一个tap的时间来读din_len
。
时序如下图所示。
7)
重要的是,能用一个loop就能搞定的事,就不要弄成两个loop
。
8) 在用 C++的类 hls::stream<> 时,对比
纯C
的写法,下图使用
C++
的写法实现的功能是
错误的
。目测HLS在某些场合下对C++支持不如C。
Ta的文章
更多
>>
Android Manager之PowerManager(电源服务)
0 个评论
关于Xilinx HLS的一些细节
0 个评论
热门文章
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮