Vivado HLS 中DATAFLOW优化Bypass的一些问题

最近在项目开发中使用到了DATAFLOW优化数据流,从而提高整个系统的运行效率。在设计程序时,发现虽然在官方的文档中明确指出Bypass的情况需要通过打节拍的方式处理掉,否则会出现错误,但在实际的程序设计中,Vivado HLS并没有将Bypass情况表示为错误,甚至没有警告。因此认为Vivado HLS可以通过自身对于代码的优化将Bypass优化掉。

通过代码综合也可以发现,HLS确实通过对代码的优化以及模块化,实现了DATAFLOW应有的Iteration Interval,有效的提高了系统的并行性。自以为大功告成之时,经过Cosim,却发现Iteration Interval 掉回了原来的程序总Latency。也就是说,仿真结果表明,实际系统并没有正确的完成DATAFLOW.

经过反复的验证和实践,发现问题所在:HLS确实会对Bypass进行优化,但一些情况可以正确有效,而一些则不行,而且HLS在Cosim仿真前是无法自行发现错误的。具体来说,对于单一变量的Bypass情况,HLS可以优化使其正常工作;而对于数组类型的变量则不行,尤其在程序比较复杂,Bypass的变量比较多的时候,要么Iteration Interval会非常长,将整个Bypass包含在一个Iteration Interval中来避免Bypass,要么就错误优化。不管哪种情况,都是我们不愿意看到的。

总结一下,Vivado HLS 对Bypass的确会进行优化,但这个优化过程是不可控的。所以,对于数组的Bypass,还是老老实实的手动处理掉吧

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值