vitis HLS学习笔记(一)·学习资料和软件使用

vitis HLS学习笔记(一)·学习资料和软件使用

    • 前言
  • 学习资料
    • 官方文档
    • ALINX开发板资料
  • 软件安装
    • xilinx全家桶下载安装
    • Vitis HLS OpenCV库编译
    • 项目设置 配置
  • 软件使用
  • 工程文件结构
  • 对vitis HLS的一些理解

前言

近期到公司学习了三周vitis HLS的使用,几乎从零基础开始学习了软件使用和用C++编写HLS的方法。在过程中遇到不少问题,尤其是vitis HLS在国内似乎没有很多人使用,在百度上几乎找不到有关经验,因此开始对自己学习的过程做个记录,方便以后回忆使用方法。——2022年3月5日

学习资料

官方文档

xlinx提供的文档资料,是学习中最有用的参考资料了,在xlinx官网就可以获取,下面我列举一些我最常用的资料,并提供网盘链接。
ug871-vivado-high-level-synthesis-tutorial
vivado hls的tutorial(vivado hls是vitis hls的前称,大部分功能都一致),我认为初学最好的学习资料,有完整的软件使用方法和很多例程,操作讲解得非常细致,在一个个lab的操作中理解软件的使用和基本概念。——但是我因为上班时间不长并没有慢慢看完,后面有空要再看看。 要注意其中一些lab的cmd指令要进行小修改,比如vivado hls一般都要改成vitis hls。

ug902-vivado-high-level-synthesis
完整地讲解vitis hls的各种概念和特性,比起tutorial会比较枯燥,没有实验只有理论,但是要理解Hls的特性这是必须阅读的——同样我之前并没有完整阅读,以查阅的方式阅读了很多内容并做了零散笔记。在之后的csdn文章中我会边阅读边整理871 902 1399 1233的一些笔记。

ug1399-vitis-hls
1399是针对vitis hls编写的文档,相比于902,内容更丰富更完整,更适合vitis hls(我使用的是vitis 2020.1),在官网的技术支持文档中可以直接找到它并且有很好的链接和搜索功能。

ug1233-xilinx-opencv-user-guide
xilinx在vitis HLS 2020.1中还有提供他们的xfopencv库,可以用于电路综合(opencv本身的库有一些函数并不支持电路综合,所以虽然安装了opencv,但我们只在仿真时有使用opencv提供的库)。文档中提供了opencv库对各种应用的支持,我目前只查阅了HLS有关的一部分内容,能大概了解可用的opencv函数和结构体,如果有问题可以在安装的库中直接查阅有关代码。

ug1037-vivado-axi-reference-guide
axi接口的参考文档,在1399和902中对axi接口已经有很多叙述,如果有不清楚的还可以查阅这里。

链接:https://pan.baidu.com/s/1C-PBxNVtzmt3f2DmCP7LqQ
提取码:1024
–来自百度网盘超级会员V3的分享

ALINX开发板资料

在安装软件时我主要参照的是芯驿公司AXU7EV开发板用户手册,因为在文件中的readme中他们提供了店铺信息,我不确定教程内容是否能传播,因此不分享文档。下面提供他们的联系方式。

它们的手册中包括整个xlinx全家桶的使用教程,但内容和步骤非常简单,只适合按部就班跟着操作,我觉得不能学到什么。。。尤其是配置环境时因为文档内容安排得不合理给我造成了不少麻烦。。。

软件安装

xilinx全家桶下载安装

我根据开发板的使用教程建议,下载的是vitis HLS 2020.1.
vitisHLS安装

opencv安装文件夹
然后根据上述的库编译参考文章去安装mingw64软件和cmake软件,并添加系统环境变量。
要注意的是,安装好cmake后进行编译生成时勾选和不勾选的内容可以参考文章的来,但是如果后续在cmd窗口显示的信息有问题,可以根据需要再选择勾选内容。
同时configure时可能需要多次configure,直到窗口内没有红色内容才能generate。
在文章内容中的这一步:
vitis HLS学习笔记(一)·学习资料和软件使用

项目设置 配置

在vitis HLS中如果使用了xfopencv库的有关内容,需要在项目设置->仿真设置和综合设置中添加编译参数,并且在链接库中添加参数。

仿真设置中,在测试文件的CFLAG和CSIMFLAGE中要加入

综合设置中,在模块文件的CFLAGS中药加入

在 Linker flags 内输入如下代码

(3411 指的是opencv 版本,如果安装了其他版本需要做对应修改)

同时有个非常有趣的bug,在2022年由于系统时间变量的问题,在export RTL时一直会报错,根据百度得到的经验,只需要在导出时把windows的系统时间改回2020或2021年即可。

软件使用

关于软件界面的操作直接参照ug871即可,下面简单列举一下设计流程,对于设计流程和编码规范、特性优化的其他内容,在ug871、ug902、ug1399中都有叙述,我会根据三份ug,在另外的文章中详细记录。

vitis HLS学习笔记(一)·学习资料和软件使用
vitis HLS学习笔记(一)·学习资料和软件使用
上图有错误,对调了c仿真文件夹和联合仿真文件夹。

在综合文件目录下

vitis HLS学习笔记(一)·学习资料和软件使用
vitis HLS学习笔记(一)·学习资料和软件使用

对vitis HLS的一些理解

以我目前对vitis HLS的理解,这是一款用于快速FPGA代码设计的软件,通过把高级一些的C++/C 在一定条件下 转换成对应功能的.V代码并生成IP核,提供给vivado或vitis使用。
它的最重要优点是对C++/C的支持,但是相应的,它目前对高级语言并不能完全实现电路综合,需要满足它的可综合要求——这在一定程度上对高级语言的优势有所限制。
其次是它对电路设计者的基础知识要求不高,只要懂得C++/C,学习它的编码规范和优化规范,就可以实现比较优质的电路结构设计和复杂的连线,甚至都不用严格管理时序设计等电路设计的难题。
作为软件的初学者,并且没有接触过其他HLS设计方法,我不能判断出vitis HLS自动综合出的电路结构和用其他方法设计的电路结构相比之优劣,但是我想在不断优化软件性能的前提下,有一天,或许软件设计的电路结构能够达到甚至超越人类设计者最好的水平。
相对而言,随着软件的优化和对高级语言的越来越适应,软件对使用者的经验要求会越来越低,使用这一软件的工作者,如果不保持持续的学习和反思,被新学者所取代的可能性非常大。

来源:夫唯卿

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年2月5日
下一篇 2022年2月5日

相关推荐