cuter

【原创】Vivado HLS初体验

1
阅读(18812)

Vivado HLS初体验

1、前言

该笔记主要是Vivado HLS开发流程的学习心得,掌握HLS开发的全流程:从工程创建到算法仿真到综合再到设计实现,由于截图较多,暂时只写到前两部分。

2、目标

1)熟悉Vivado HLS GUI的使用

2)如何进行C/C++算法仿真

关于入门的例子,比较出名的是官网上一个矩阵乘法的工程,讲了使用HLS建立工程的全流程,但是我看了之后有点晕乎,不知道为什么这么做、那么做,只能机械地跟着文档操作,没办法思考,这也是没办法的事,毕竟是第一次使用HLS工具。

怎么办呢,找了一个non-project方式的example,把用到的.c.h、测试数据都copy出来,新建空工程,然后手动把资源添加进去。这样反复几次,排除过程中遇到的错误,自己摸索摸索,对整个流程有了一定的理解,就没那么拙计了。

3、准备工作:

将工程用到的.c.h、测试数据等文件准备好,放在src文件夹下。建好工程之后,把src放到工程文件夹下。

4、新建工程:

双击Vivado HLS 2014.2打开HLS,初始界面如图1所示。


1 HLS初始界面

单击“Create New Project”,打开新建工程向导,第一个界面如图2所示。

指定工程名和路径

谨慎起见,我把工程名和我们设计的模块名保持一致,主要是看了几个例子,都是把工程名和模块名保持一致的,等熟练了再研究能不能改吧。设置完毕后,点击Next按钮,进入图3所示的界面。

添加设计资源

我们这里是建立空工程,先不添加,以后我们自行开发的时候,这里估计也是直接跳过,进了工程之后再自行新建设计文件。点击Next,进入图4所示的测试文件添加界面。


添加测试用文件

这个界面和图3所示的界面很像,不过是用来添加测试文件的,这里仍旧跳过,直接Next,进入下一界面,如图5所示。

设置解决方案的属性

这里需要设置了,否则Finish按钮一直是灰化的,没法生成工程。红色方框内的提示可以看出,这里是选择所使用的芯片型号的。点击绿色椭圆内的按钮,进入芯片选择对话框,如图6所示。

器件选择对话框

这里不用多说,两种方式,一种是逐一选择FamilyPackageSpeed Grade等参数,直到定位到你想要的呃芯片,如图7所示。


利用Filter定位器件

另一种方法是选择开发板,如图8所示。

通过开发板定位器件

选择完毕后,点击OK,返回,发现Part发生变化,已选中ZedBoardFinish按钮可用。

最后一步

点击Finish按钮,完成向导,进入HLS主界面,如图10所示。


10 HLS主界面

典型的Eclipse框架,细节就不介绍了,搞软件的对这个界面不陌生。

5、添加资源:

5.1、添加设计文件

选中左侧Explorer子窗体下Source目录,右键,弹出Add Files菜单,如图11所示。

11 Add Files菜单

点击Add Files,进入文件选择对话框,如图12所示。

12 添加文件对话框

在我们准备好的src文件夹中找到yuv_filter.c,点击“打开”,将之添加进工程。

注意:.h文件是不用添加的,HLS会自动包含相应的.h,但是路径要正确。

5.2、添加测试文件和数据

方法和5.1小节相同,不同之处在于添加到testbench目录中,添加文件夹时,需要选择“Add Folder…”选项。添加资源也费了一点功夫,刚开始没有仔细看代码,把image_aux.c添加到Source目录中去了,编译会有问题。添加完毕的目录结构如图13所示。


13 添加资源完毕

5.3设定工程属性

选中yuv_filter文件夹,右击,弹出如图14所示的菜单。

14 Project Settings

点击Project Settings,进入设置界面,如图15所示。

15 工程设置界面

点击Synthesis,进入图16所示的界面。


16 指定顶层

此时,Top Function:一栏是空的,OK按钮是灰化的。在Top Function一栏,输入yuv_filter,指定Top Function的名称,这里具体意思还不是太确定,猜测是对应于verilog中的module,最终是要把yuv_filter这个函数综合成yuv_filter这个module。设置完毕,点击OK,回到主界面。

6C代码验证和仿真

资源添加完毕后,需要对所设计的算法或者函数的正确性进行验证和仿真。

6.1、查看yuv_filter_test.c

展开Test Bench文件夹,双击yuv_filter_test.c,该文件会被打开,如图17所示。可以看到入口函数main在该文件内,该文件调用yuv_filter函数,将结果与预先计算好的golden.dat进行对比,如果一致,则测试通过,yuv_filter功能正确实现。

17

6.2C代码仿真

在菜单栏中找到Project > Run C Simulation命令,或者直接单击工具栏中的按钮(图18所示),编译和执行C程序。

18

点击按钮后,会弹出图19所示的界面,直接点击OK即可。


19

6.3、结果

编译过程以及执行结果会在主界面下方的Console自选项卡中打印显示,如图20所示。

20 C代码编译、执行结果

从图20的打印结果可以看出,代码测试通过。

先到这吧,图太多,又变成长文,接下来的部分放在下一篇吧。


版权声明:

本文由博主“cuter”发布。欢迎转载,但不得擅自更改博文内容,也不得用于任何盈利目的。转载时不得删除作者简介和版权声明。如有盗用而不说明出处引起的版权纠纷,由盗用者自负。

博客官方地址:

ChinaAET:http://blog.chinaaet.com/cuter521

EDN China: http://bbs.ednchina.com/BLOG_cuter521_356737.HTM