Vivado HLS介绍及IP核的设计流程

本篇主要是笔者个人对Vivado HLS软件的一些理解与介绍,及该软件的设计流程创建IP核。


目录

前言

正文

一、创建工程

二、C源代码的验证(Validate)

三、高层次综合

四、RTL验证(Verify)

五、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官方提供资料为例,进行讲解。

Vivado HLS入门视频教程:https://forums.xilinx.com/t5/Vivado/%E8%B7%9F-Xilinx-SAE-%E5%AD%A6-HLS-%E6%8C%81%E7%BB%AD%E6%9B%B4%E6%96%B0-%E4%B8%AD%E6%96%87%E8%AE%B2%E8%A7%A3/td-p/708179

官方手册与例程资料:链接: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


如果本文对您有用,欢迎点赞、关注!

 

 

  • 7
    点赞
  • 55
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值