这个案例和Vitis官方案例非常相似,后续更新了当时使用SDAccel踩坑的情况
准备工作
注: 文档及源码参考自:https://github.com/Xilinx/SDAccel-Tutorials
操作系统:ubantu-64
开发工具:SDAccel2019.1 https://www.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/sdaccel-development-environment.html 确认安装路径全英文
开发环境:下载并安装https://www.xilinx.com/products/boards-and-kits/alveo/u200.html#2018_3 (这里的1、2、3都要安装)
开始
一、打开Linux终端,cd到SDx安装目录下,设置运行SDAccel的环境并启动SDx:
~/document/Xilinx/SDx/2019.1$ source settings64.sh
~/document/Xilinx/SDx/2019.1$ sdx
在初始界面选择Create Application Project在新建的窗口中给工程命名、选择运行平台xilinx_u200_xdma_201830_1(如果未安装上述开发环境则在这里不会显示)、选择Empty Application后点击finish
二、配置RTL内核
选择RTL Kernel Wizard进入到设置窗口,在General Settings将内核名称改为Vadd_A_B,其他默认
Scalars窗口默认
在Global Memory窗口将AXI master接口数设置为2,并修改参数名
Streaming interfaces窗口默认
最后设置结束后出现如下图,点击Finish后,自动运行Vivado
三、Vivado-RTL设计
在Sources窗口选择Compile Order>Synthesis,然后选择Design Sources下八个文件右键选择Remove File from Project
弹出以下窗口点击OK,接着在相同窗口把Synthesis切换到Simulation,从工程中移除Vadd_A_B_tb.sv文件
之后添加之前下载的源文件,右键点击Design Sources,选择Add Sources,点击Add or create design sources后添加IP目录及testbench下Vadd_A_B_tb.sv文件,之后点击Finish
在Sources窗口,选择Hierarchy模块,右键点击Vadd_A_B_tb.sv文件,选择Move to Simulation Sources
四、RTL仿真
在Flow Navigator模块选择Settings,在这个窗口下将Simulation模块的xsim.simulate.runtime的值改为all
之后点击Run Simulation,选择行为仿真,运行结束后Tcl Console弹出Test Completed Successfully表示仿真成功
在Flow Navigator,点击Generate RTL Kernel,选择Sources-only kernel,点击OK,结束后生成一个XO文件
最后退出Vivado
五、编译工程
将原来的host_example.cpp文件删除,再右键整个工程目录,选择Import Sources,将host.cpp添加进去
接着将RTL内核设置为hardware function
在SDx Application Project Settings中将Active build configuration 改为Emulation-HW
—————————————————————————————————
以下是后来使用VITIS 2019.2遇到的相同问题,(VITIS的案例和SDAceel这个案例很像)
1、编译整个工程,出现“XRT requires opencl headers to be installed“问题,运行指令:
sudo apt-get install opencl-headers
这样就不报错了。具体参考xilinx官方文档:https://www.xilinx.com/support/documentation/sw_manuals/xilinx2019_2/ug1393-vitis-application-acceleration.pdf第18页
2、运行时报错:“/home/xx/Vitis/Vitis/2019.2/lib/lnx64.o/Default/libstdc++.so.6: version `CXXABI_1.3.11’ not found (required by /opt/xilinx/xrt/lib/libxilinxopencl.so.2)“
解决方法:
执行:
sudo find ~/ -name libstdc++.so.6.0.25
其中将Xilinx安装目录下的libstdc++.so.6.0.25复制到vitis相应目录下
sudo cp ./Xilinx/.xinstall/xic/lib/lnx64.o/Ubuntu/18/libstdc++.so.6.0.25 ~/Vitis/Vitis/2019.2/lib/lnx64.o/Default/
删除libstdc++.so.6和libstdc++.so
sudo rm libstdc++.so.6 libstdc++.so
建立新链接
sudo ln -s libstdc++.so.6.0.25 libstdc++.so
3、上面这个问题就解决了,但是接着又出现了新的问题:
解决方法与上面类似:
sudo cp ~/Vitis/Vitis/2019.2/lib/lnx64.o/Ubuntu/18/libstdc++.so.6.0.25 ~/Vitis/Vitis/2019.2/lnx64/tools/gcc/lib64/
sudo rm libstdc++.so.6.0.16 libstdc++.so.6
参考文章:https://www.it610.com/article/1279120374910435328.htm
这样就不报错了
服务器运行比较快,个人电脑配置不高的话运行时间长且容易卡死。