HLS Lesson12-for循环优化:基本性能指标

时间:2022-04-28
本文章向大家介绍HLS Lesson12-for循环优化:基本性能指标,主要内容包括1.可以进行pipeline、2.可以展开for(unrolling)、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。
#include<ap_int.h>
#define N 3
#define XW 8
#define BW 16
typedef ap_int<XW> dx_t;
typedef ap_int<BW> db_t;
typedef ap_int<BW+1> do_t;
void foo(dx_t xin[N],dx_t a,db_t b,db_t c,do_t yo[N]);
#include"for_optim.h"
void foo(dx_t xin[N],dx_t a,db_t b,db_t c,do_t yo[N])
{
int i;
loop:
for(i=0;i<N;i++)
{
yo[i]=a*xin[i]+b+c;
}
}

可以看出loop的latency为9

1.可以进行pipeline

可以降低latency和iteration internal

2.可以展开for(unrolling)

默认情况下的for循环是被折叠的,所有的每次循环都采用一套电路,分时复用罢了。可以完全展开或者部分展开。