英特尔HLS测试

环境

  • 电脑环境-windows11
  • Quartus版本20.1
  • HLS版本18.1.1.64
  • VS2010
  • VS Code版本1.65.2

1.初始化

命令提示符下进入hls,输入init_hls初始化
在这里插入图片描述
可能出现的问题:找不到modelsim_ase
在这里插入图片描述
解决方法:添加相应的modelsim_ase路径至系统变量在这里插入图片描述

2.编译与测试

运行examples\counters目录下批处理文件build.bat
在这里插入图片描述
编译成功后会生成test-x86-64.exe文件,运行该exe文件,输出PASSED即为成功。在这里插入图片描述

可能会出现的问题:权限不够(我猜的。。)(.obj文件编译时的中间目标文件)
在这里插入图片描述
可解决的方法:以管理员身份运行命令提示符,然后重新初始化HLS并运行build文件
在这里插入图片描述

3.HLS开发实例

1)在VS Code上编写函数实现两个数的加法,命名为test.c,并运行得到结果

//#include<stdlib.h>
//#include "hls/hls.h"
#include<stdio.h>

int adder(int a, int b){
    return a+b;
}
int main(int argc, char * argv []){
    int res = adder(4,8);
    printf("%d", res);
    return 0;
}

可得到结果12,然后在VS终端中打开prompt,进入hls目录初始化,然后返回VS Code的工程路径
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2)生成硬件代码

将改行代码注释消除

#include "hls/hls.h"

然后

方法1

我是用的FPGA器件时CycloneV系列,输入编译指令

i++ -o test test.c --component adder --march=CycloneV
  • test.c是工程文件
  • –component指明要被编译成FPGA硬件模块的代码或者IP核的函数,这里指定要编译adder函数
  • -march表示使用的FPGA系列

方法2

也可以直接在源代码中用component声明要编译的函数,如:

component int adder(int a, int b){
    return a+b;
}

编译指令更改为

i++ -o test test.c -march=CycloneV

问题

可能出现的问题:被编译的函数未被明确指定
在这里插入图片描述
可解决的方法:上面给出来了两种生成硬件代码的方式,换一个试试,再者注意代码是否正确
最终会生成这样的文件夹(叙述应该有误,意思达到即可)
在这里插入图片描述

3)代码优化

reports文件是生成的硬件代码性能和资源评估报告,后续算法/代码优化以及性能优化所需要采取的策略均基于此。

也可打开Modelsim查看仿真过程中生成的仿真波形,查看波形,在i++编译时加-ghdl标签。指令为:

i++ -march=cyclonev test.c -ghdl//加-v可以显示编译过程
//i++ -march=cyclonev test.c -ghdl -v

结果可能会有一条警告信息,但只要没报错就没问题,我这里使用的时另外一个interface.cpp文件,效果一样。
在这里插入图片描述

可能出现的问题就是未指定component对象而产生的错误。
在这里插入图片描述
完成编译后,在Verification目录下生成vsim.wlf文件,可在cmd中通过指令打开Modlesim查看波形。

vsim interface.prj/Verification/vsim.wlf

出错,待修复中。。。

THE END
< <上一篇
下一篇>>