宏观颗粒度流水设计-子函数之间
一、核心代码架构void top_impl(axis_in_t src,axis_out_t dst,ap_uint16 mem[100],ap_uint16 width,ap_uint16 height){#pragma HLS INLINE off#pragma HLS DATAFLOWap_uint16 out_height height 100;static hls::streamxxx inter0;#pragma HLS STREAM variableinter0 depth2 dim1static hls::streamxxx inter1;#pragma HLS STREAM variableinter1 depth2 dim1//func1func1(src, inter0, width, height);//func2func2(inter0, inter1, mem, width, height);//func3func3(inter1, dst, width, out_height);}二、描述和说明1.上述代码架构为dataflow设计的比较常见的案例,核心实现模块中有三个子模块2.这三个子模块在不进行约束的时候是串行执行的使用dataflow优化后就是并行执行的三、dataflow优化说明1.使用dataflow优化注意hls::stream变量需要使用static修饰2.使用的非hls::stream变量不要使用static进行修饰3.模块之间传递的参数变量全部变成管道管道的类型为FIFO或者pingpang ram;本案例中默认这些参数都被综合为depth比较小的FIFO,上述代码中的width和height全部都被综合为FIFO其中mem除外上面代码中的mem被综合为双口RAM