VivadoHLS开发流程
HLS工程构建全流程
①分别书写C源文件和test bench:
代码:
//calculator.c
//a和b数组每一位元素相加赋予c数组。必须保证数组元素个数N给定且保持一致。
#define N 5
void PlusCalc(int a[N], int b[N], int c[N])
{
unsigned int i;
myloop:
for(i=0; i<=N-1; i++)
{
c[i] = a[i] + b[i];
}
}
//calculator_tb.c
#include<stdio.h>
int main(void)
{
int data1[5]={1,2,3,4,5};
int data2[5]={6,7,8,9,10};
int output[5]={0};
int output_test[5]={7,9,11,13,15};
int n=5;
PlusCalc(data1,data2,output);
//检查是否存在错误
unsigned int i;
unsigned int errcnt=0;
for(i=0; i<=4; i++)
{
if(output[i]==output_test[i])
{
printf("\n");
}
else
{
printf("Error\n");
errcnt++;
}
}
if(errcnt > 0)
{
printf("TestFail\n");
return 1;
}
else
{
printf("TestSuccess\n");
return 0;
}
}
②进行C仿真(C Simulation):
在仿真日志simulation log中查看仿真情况:
【如果仿真结果没有达到预期,说明C source的算法出现问题,回去修改。】
③在C仿真通过后,进行C综合(C Synthesis),生成vhdl代码:
出现这个页面说明综合syn成功了:
在这里我们能看到生成的vhdl代码:
【生成的vhdl代码可读性较差。所以一般来说,我们在C的层面进行算法的开发,不在vhdl的层面进行开发。】
④进行C和RTL的联合仿真(C/RTL Cosimulation):
联合仿真的结果:
⑤查看仿真波形:
点击这个按钮后,会自动跳转到Vivado中,可以查看仿真的波形: