英特尔HLS测试
英特尔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
出错,待修复中。。。