一、8TAP算法设计存在的挑战性1.关于8TAP的算法设计并行度太大那么位宽就很大那么时序是有点难通过2.在设计一个算法模块需要8Tap的时候发现时序很难满足特别是你时钟需要跑200MHZ以上那么时序往往过不去3.特别是设计中存在乘法乘加累加还有除法这种尝试了很多办法时序有些许改善但是还是达不到要求4.如果设计的多个步骤都有加法乘法除法并且你还是8个并行度如你还有滤波模板那么这个资源面积就很大说实话你想时序过去只有把II降低了II1,这种情况是很难通过的所以你只能让II2,但是这个你肯定不能接受。5.还有一种处理方式就是不要将所有逻辑放在一个约束了pipeline的大for循环下这样势必对你的时序有很高的要求那么你可以尝试拆分逻辑将这些设计放在多个串行的for循环中然后for循环之间是串行的状态机这样通过将latency加大的情况下来改善时序。二、优化的方式1.表达式均衡#pragma HLS EXPRESSION_BALANCE这个优化效果不大2.将关键代码使用函数封装然后约束最大latency这个有时候会改善有时候会恶化时序3.使用static变量赋值从而引导综合工具插入寄存器这个方式几乎没有效果4.将DSP使用LUT加法树的约束方式这个有改善但是改善不是很大5.拆分逻辑(这个属于比较好的方式也是比较推荐的方式)将for循环的复杂逻辑进行拆解拆分成多个独立的for循环进行处理这样latency会稍微大一点但是整个时序会好很多。
高并行度NPPC 高模板SIZE的图像算法时序问题优化
一、8TAP算法设计存在的挑战性1.关于8TAP的算法设计并行度太大那么位宽就很大那么时序是有点难通过2.在设计一个算法模块需要8Tap的时候发现时序很难满足特别是你时钟需要跑200MHZ以上那么时序往往过不去3.特别是设计中存在乘法乘加累加还有除法这种尝试了很多办法时序有些许改善但是还是达不到要求4.如果设计的多个步骤都有加法乘法除法并且你还是8个并行度如你还有滤波模板那么这个资源面积就很大说实话你想时序过去只有把II降低了II1,这种情况是很难通过的所以你只能让II2,但是这个你肯定不能接受。5.还有一种处理方式就是不要将所有逻辑放在一个约束了pipeline的大for循环下这样势必对你的时序有很高的要求那么你可以尝试拆分逻辑将这些设计放在多个串行的for循环中然后for循环之间是串行的状态机这样通过将latency加大的情况下来改善时序。二、优化的方式1.表达式均衡#pragma HLS EXPRESSION_BALANCE这个优化效果不大2.将关键代码使用函数封装然后约束最大latency这个有时候会改善有时候会恶化时序3.使用static变量赋值从而引导综合工具插入寄存器这个方式几乎没有效果4.将DSP使用LUT加法树的约束方式这个有改善但是改善不是很大5.拆分逻辑(这个属于比较好的方式也是比较推荐的方式)将for循环的复杂逻辑进行拆解拆分成多个独立的for循环进行处理这样latency会稍微大一点但是整个时序会好很多。