这篇学习记录起源于项目以ip导出后,在HLS综合(synthesis)资源与Vivado内ip综合(synthesis)存在巨大差异,本文没有数据仅以文字记录。
所有问题均基于Vivado HLS 2019.1。
目录
1.1、首先vivado内的ip综合分为Global 和 Out-Of-Context两种
1.2、在HLS中生成RTL时输出Vivado synthesis,place and route
2.2、WARNING: [ANALYSIS 214-52]
1、资源差异
我们可以通过四种方式得到资源:
HLS synthesis
HLS implementation
Vivado ip synthesis as Global
Vivado ip synthesis as Out-Of-Context
1.1、首先vivado内的ip综合分为Global 和 Out-Of-Context两种
以Out-Of-Context综合时可以很便捷地对综合条件进行约束。如我的这个项目在HLS综合时未使用DSP资源,但以Global全局综合时会自动使用DSP,Out-Of-Context可以在选项中将其约束为0更方便地进行资源对比。
此步有很多关于Vivado的教程可以学习,不赘述。
1.2、在HLS中生成RTL时输出Vivado synthesis,place and route
该步骤也就是HLS中的实现(implementation),如下图勾选,有些会教程会忽略该步骤只得出synthesis后资源。该步骤会在后台调用Vivado,所得到资源占用更接近实际情况,并且也会给出IP的时钟数据。
注:我是用的是Vivado HLS 2019.1(不是Vits),如果此时报错需把系统时钟调至2020年
这部分参照下面的链接得出结论:
1、HLS综合(synthesis)后和实现(implementation)后资源差别巨大,实现后资源很少,为何都优化掉了? (xilinx.com)
对照这四组资源占用情况可以得出的结论:
以HLS implementation参考,导入Vivado进行Global综合结果最接近实际情况。
2、资源类型使用不同
2.1、WARNING: [SCHED 204-68]
在我的工程中只存在一个可疑警告
WARNING: [SCHED 204-68] The II Violation in module 'HLS_IP'
(Function: HLS_IP): Unable to enforce a carried dependence
constraint (II = 4, distance = 1, offset = 1)
between axis read on port 'data_in_V' (hls_prj_line/src/proj_line.cpp:104)
and axis read on port
“数据依赖关系”或“存储器依赖关系”的典型用例是在完成上一次读操作或写操作后再次发生读操作或写操作,移除假性依赖关系可以改善循环流水打拍。
这个警告很直接地指明了依赖关系导致pipeline II无法为1,此时只需告知HLS实际的依赖关系即可。有关DEPENDENCE的使用网上也有很多资料,首先得判断出此时依赖关系是否真实存在,若存在是否仅存在于循环内,具体步骤Xilinx官网也有给出。
#pragma HLS DEPENDENCE variable=rRam inter false
这部分的参考依旧很多:
1、HLS: Pipeline II violation, where is the problem and how can I solve it? (xilinx.com)
3、Vitis 高层次综合用户指南 管理流水线依赖关系
当然这个操作无法解决所有的依赖问题,也并不是都有效果(我也没解决该问题)如:
Found false intra dependency for variable (xilinx.com)
关于Vitis 2020.1 #pragma HLS dependence的问题 (xilinx.com)
2.2、WARNING: [ANALYSIS 214-52]
该警告通常与[204-68]一起出现,也给出参考链接A pipeline problem of stream (xilinx.com),问题也多在于变量的依赖关系。
2.3、axis端口
我的问题主要在与为什么实现时使用了DSP资源,由于上述步骤未解决依赖问题,我直接换了端口,将 axis port 替换成 hls::stream ,再次综合、实现
问题解决了。。。DSP都是0.。。。
看来似乎HLS对于不同的接口有不同的优化策略。
再换端口后会出现新的warning,不过这个可以忽略,并不会对结果造成太大影响,相关的参考链接也给出WARNING: [XFORM 203-302] Region has multiple begin anchors. (xilinx.com)
标签:204,HLS,Vivado,WARNING,xilinx,com,synthesis From: https://blog.csdn.net/qq_43961144/article/details/140606850