本篇主要是笔者个人对Vivado HLS软件的一些理解与介绍,及该软件的设计流程创建IP核。
目录
前言
Vivado HLS全称是Vivado High Level Synthesis,一般在安装Vivado的时候会默认附带安装。一般我们在用Vivado开发时,可以使用其自带的IP核,实现基本的数学运算(乘法器、除法器、浮点运算器等)、信号处理(FFT、DFT、DDS等),IP核类似编程中的函数库,可以直接调用,非常方便。而Vivado中的IP核毕竟种类有限,而且并不总是能实现我们需要的功能,所以Vivado HLS的作用就凸显出来了!
简单的说,我们可以将需要实现的功能使用C/C++写成子函数,然后通过Vivado HLS综合生成HDL级的IP核。然后将此IP核添加到Vivado中的IP核库中备用。当然,在从C/C++到IP核的过程中,要进行测试,仿真,优化等步骤确保IP核可用并且性能得到提升。下面两张图说明了具体设计流程,以Xilinx官方提供资料为例,进行讲解。
官方手册与例程资料:链接:https://pan.baidu.com/s/17F8JKuEV2XQq1dkHR6_DBw
提取码:y4ba
链接失效请点这个:https://download.csdn.net/download/CSD_N_csdn/12657321
正文
一、创建工程
以官方例程中的lab1文件夹提供的源文件与测试文件为例。
首先,打开Vivado HLS,点击Create New Project,在弹出窗口中填写工程名,设置工程本地存放路径,然后点击Next。
点击Add Files,选择fir.c文件进行添加(如果源代码是C++编写,应该是.cpp文件),然后点击Browse,添加Top Function,完成后,.h头文件会自动添加,点击Next,至此源文件添加完成。
在这个页面上,上面有提示,Add/remove C-based testbench files即添加测试文件和测试数据文件,点击Add Files,选择文件夹中的fir_test.c和.dat文件,它们一个是测试的程序文件,一个是测试的数据文件,完成后点击Next。
在Solution Configuration窗口,Solution Name可以修改或者默认,后续如果进行优化,就要新建Solution,代表不同的解决方案。Part Selection要进行芯片选型,这个可以默认或者根据你具体应用的芯片型号进行选择。完成后,点击Finish。
第一部分创建工程至此结束,可以看出,在创建工程的过程中,就已经把源文件和测试文件等添加到了工程中,接下来进行验证。
二、C源代码的验证(Validate)
进入工程后,可以打开源文件和测试文件查看,不难发现,源文件的代码主要是一个子函数,而测试文件的代码就是一个主程序,在主程序中调用该子函数,以达到测试子函数的目的。
点击Run C Simuation,进行验证,在弹出窗口点击OK。
完成之后,会弹出fir_csim.log窗口,包含验证的信息,出现0 errors代表验证成功。
三、高层次综合
本步骤是将C代码综合成RTL逻辑,点击Run C Synthesis,综合完成后,可以查看资源使用情况。
四、RTL验证(Verify)
本步骤是对RTL的逻辑验证,使用测试文件提供测试数据,与标准输出数据进行对比。点击Run C/RTL Cosimulation,在弹出窗口点击OK即可。完成后会弹出Cosimulation的报告。
五、IP创建
本步骤就是将上述的RTL逻辑打包成HDL的IP核,在左侧工程文件目录窗口,右键点击solution,选择Export RTL,弹出对话框,可在对话框中对该IP核信息进行配置,也可默认点击OK。
完成后,可以在左侧的文件夹solution->impl->ip下找到压缩完成的IP核。
完成后的IP核就可以添加到Vivado的仓库中,便于以后的使用了。
结语
这篇博客侧重于对设计流程的描述,而对每个部分可能遇到的问题及解决方法并没有说明。在后续的更新中会对每个部分进行详细的分析说明,例如关于测试文件和测试数据的编写方法,关于端口的问题,关于优化的方法等,当然大家也可以参考官方的文档学习。
对于此软件的学习算是准备工作吧,接下来笔者准备使用该工具制作神经网络模型的卷积核等部分,最终实现在FPGA上部署神经网络模型的目标!欢迎有兴趣的朋友一起学习、探讨!
参考前辈博文:https://blog.csdn.net/weixin_39290638/article/details/80228806
如果本文对您有用,欢迎点赞、关注!