上期内容:异步跨时钟域电路该怎么约束
DATAFLOW作为HLS的一种优化方法,对于改善吞吐率(Throughput)、降低延迟(Latency)非常有效。
DATAFLOW的作用对象
DATAFLOW可以作用于函数,也可以作用于for循环。如下图所示(图片来源Figure62, Figure 63, ug902)。无论是作用于函数还是for循环,都要求数据在函数之间顺序流动,没有反馈回路。
DATAFLOW优化前后对比我们看一个简单的案例,如下图所示(图片来源Figure64, ug902)。顶层函数top下调用了3个子函数。这3个子函数之间的数据是顺序流动的,因此可以用DATAFLOW来优化。如果不使用DATAFLOW,意味着func_A处理结束,才能处理func_B,func_B处理结束,才能处理func_C。这其实就是C语言的处理方式即顺序执行。但从硬件角度看,只有func_A有输出数据,就可以传递给func_B进行处理。这就实现了这3个函数的并行处理,从而将II由8降至3,Latency由8降至5。DATAFLOW的原理DATAFLOW需要额外的硬件资源开销。这是因为Vivado HLS会对相应的函数或者循环进行分析,然后对中间数据(子函数的输出或者循环体中的变量)进行缓存。缓存可能需要用到FIFO或者采用乒乓Buffer(RAM)的方式,如下图所示(图片来源Figure65, ug902)。通常对于标量,HLS会采用FIFO缓存;对于数组,HLS会采用乒乓Buffer缓存。在报告中确认DATAFLOW
一旦使用了DATAFLOW,在综合报告中会明确地显示处理。同时,在Analysis窗口中可以看到红色椭圆方框标记的图标,如下图所示。
AI Engine到底是什么?ACAP不可不知的几个基本概念
HLS中如何控制流水程度
Vivado HLS学习资料有哪些
如何查看可综合C代码的中间结果
如何在C代码中插入移位寄存器
HLS IP Library?HLS Math Library:csim ?C/RTL co-sim(2)HLS Math Library:csim ?C/RTL co-sim(1)如何复用关键路径的布局布线信息Vivado学习资料有哪些?异步跨时钟域电路怎么设计ECO都有哪些应用FPGA中的CLOCK REGION和SLR是什么含义FPGA中的BEL, SITE, TILE是什么含义约束文件有哪些如何高效复用Block的位置信息?如何复用关键寄存器的位置信息部分可重配置都生成哪些.bit文件VIO你用对了吗Device视图下能看到什么Schematic视图下能看到什么都是pin,有什么区别都是net,有什么区别如何快速查找目标cell学习笔记:多层感知器学习笔记:单层感知器的局限性学习笔记:单层感知器基础知识学习笔记:神经网络学习算法学习笔记:神经网络模型学习笔记:ReLU的各种变形函数学习笔记:神经元模型(2)学习笔记:神经元模型(1)学习笔记:深度学习之“深”学习笔记:深度学习之“学习”学习笔记:人工智能、机器学习和深度学习2019文章汇总文 | Lauren 图 | LaurenCopyright @ Lauren的FPGA转载事宜请私信 | 获得授权后方可转载