01基于HLS的加速器Overlay设计实例 - 快速生成硬件IP
可进qq群进行相关Verilog知识交流:1073030956
基于HLS的加速器Overlay设计实例 – 快速生成硬件IP
介绍
本章节介绍了HLS的基本操作流程,你将熟悉HLS工程的创建、仿真、综合与实现流程。
目标
- 使用Vivado HLS工具创建工程
- 对设计进行仿真
- 对设计进行综合
- 对设计进行实现
- 使用Vivado HLS分析工具对工程进行分析
步骤1:创建新的工程
1. 创建一个适用于PYNQ-Z2的HLS工程
1.1 将lab1_src目录下的3个源文件拷贝到C:\xup\hls_labs\lab1目录下(注意 :自己建的lab1文件夹必须和vivado所安装的盘的位置一致才行,此处我的vivado安装在c盘);
1.2 启动 Vivado HLS工具: Start > Xilinx Design Tools > Vivado HLS 2018.2;
1.3 点击 Create New Project创建新的HLS工程;
1.4 点击**Browse…**选择工程目录到为 **:C:\xup\hls_labs\lab1 **,项目名称填写为:matrixmul ,点击Next;
注:工程目录与工程名称可自己定义
1.5 点击 Add Files… 按钮,添加C:\xup\hls_labs\lab1目录下的matrixmul.cpp 文件到工程中,Top Function栏内填写matrixmul;
**注:**matrixmul为源文件matrixmul.cpp内的函数名,本lab将会把该函数综合为可在Vivado中调用的硬件IP。
1.6 点击 Next 按钮;
1.7 点击Add Files… 按钮, 添加C:\xup\hls_labs\lab1 目录下的 matrixmul_test.cpp 到工程中;
1.8 选中 matrixmul_test.cpp文件,然后点击 Edit CFLAG… 按钮, 输入 -DHW_COSIM, 点击OK;
**注:**该flag会在后续的流程中使用到
1.9 点击 Next;
1.10 时钟周期设置为10ns,器件选择为xc7z020clg400-1
1.11 点击 Finish按钮,完成工程创建;
1.12 双击 matrixmul.cpp文件查看源代码内容;
步骤 2:运行 C 代码仿真 (可跳过该步骤)
2.运行C代码仿真,检查C代码是否正确
2.1 点击 Project > Run C Simulation 或者直接点击工具栏的 按钮, 然后点击 OK 开始C代码仿真;
可以在 Console 窗口观察源代码编译过程与测试结果
2.2 双击 matrixmul_test.cpp 文件可以观察测试代码
注:因为我们在之前的步骤中对HW_COSIM进行了定义,所以matrixmul_test 的主函数会调用matrixmul 函数,对matrixmul函数的输出结果与软件计算结果进行比较并打印出来。
如果没有对HW_COSIM进行定义,则只会打印出计算结果,不会判断自定义函数是否正确。
步骤 3:C代码调试(可跳过该步骤)
3. 让代码在调试模式下运行
3.1 点击 Project > Run C Simulation 或者直接点击工具栏的 按钮, 在弹出的窗口中勾选Launch Debugger,然后点击 OK;
**注:**代码在编译过程中会增加-g选项,使得可执行代码中包含调试信息。
3.2 Debug窗口将被自动打开,程序停留在main() 函数入口;
3.3 在代码的第105行,输出“{“ 的位置,双击鼠标,在该位置添加断点;
3.4 在101行,调用matrixmul() 函数的位置处添加一个断点;
3.5 点击 Step Over (F6) 按钮 ( ), 观察代码执行过程中变量的变化;
3.6 点击 Resume ( ) 按钮或者按**F8****,**代码将执行到 第101行;
可以观察到软件计算的结果,如下图所示;
3.7 点击 工具栏Step Into (F5) 按钮( ) 会跳转到 matrixmul 函数;
3.8 点击 工具栏Step Over (F6) **几次,观察运算过程,**然后点击工具栏 Step Return (F7) 按钮可以返回到调用它的测试代码主程序内;
3.9 代码将停留在 105 行的断点处. 观察软件计算与硬件计算结果。
3.10 在第134行设置断点 (return err_cnt;位置),点击Resume 按钮;
在Console窗口打印仿真结果。
3.11 点击工具栏 Resume按钮或者Terminate按钮结束调试会话。
步骤4:设计综合
4.切换到综合 (Synthesis) 界面,观察综合过程。
4.1 点击右上角的 ,切换到综合(Synthesis)界面;
4.2 点击 Solution > Run C Synthesis > Active Solution 或者工具栏的 按钮开始综合;
4.3 综合完成后会显示综合报告,报告中包含了性能与资源预估,以及设计的延时信息;
4.4 综合后生成的文件如下所示;
4.5 报告中还包含了顶层接口信号
步骤5: 运行C/RTL 协同仿真,会调用Verilog/VHDL仿真工具进行仿真。
5.1 点击 Solution > Run C/RTL Cosimulation,打开软件协同仿真工具;
5.2 设置仿真工具为Vivado Simulator,语言为Verilog,Dunp Trace选择为all;
**5.3 **仿真报告如下所示;
5.4 ** 点击工具栏的Open Wave Viewer…**查看硬件仿真波形;
波形附加说明:
步骤6:导出 RTL代码与实现结果
在 Vivado HLS, 选择Verilog,导出硬件设计, and run the implementation by selecting Evaluate option.
6.1 选择 Solution > Export RTL 或者点击工具栏 按钮;
6.2 选中 Vivado synthesis, place and route 复选框来运行实现(implementation) 工具
6.3 点击 OK ,设计实现将开始运行,完成后的设计实现报告如下;
6.4 生成的IP被以zip file格式存放到了impl\ip目录下.
6.5 点击File > Exit,关闭HLS工具
01基于HLS的加速器Overlay设计实例 - 快速生成硬件IP相关推荐
- 18 | 知识点串讲:基于DDD的微服务设计实例
视图:18 | 知识点串讲:基于DDD的微服务设计实例 Reference DDD实战课
- RELATION:基于结构的从头药物设计的深度生成模型
这次给大家介绍一篇来自浙江大学侯廷军教授课题组.中南大学曹东升教授课题组.华东理工大学李洪林教授课题组联合发表在Journal of Medicinal Chemistry的<RELATION: ...
- 论文解读:《RELATION:基于结构的药物从头设计的深度生成模型》
论文解读:<RELATION:A Deep Generative Model for Structure-Based De Novo Drug Design> 1.文章概述 2.迁移学习相 ...
- 基于HFSS的环形定向耦合器设计实例
环形定向耦合器简介 环形定向耦合器是由周长为3/2个导波波长的闭合圆环和4个传输线相连接而构成的,与环形相连接的4根传输线的特征阻抗为,环形的特征阻抗为,端口1到端口2,端口1到端口4,端口3到端口4 ...
- 基于STM32的函数信号发生器设计(上:硬件设计)
转载请注明出处:http://blog.csdn.net/sctu_vroy/article/details/45888277 大三初学STM32时做的点东西,现在拿出来和大家分享一下~ 这是一款基于 ...
- 网页设计css分析,基于CSS技术的网页制作实例分析
21世纪我国科学技术水平大幅提高,计算机网络技术成为了推动各行各业事业发展的助推器,可以利用计算机网络快速发布和获取信息,同样在人们的政治生活.经济生活等多个方面发挥着无可比拟的作用.网页设计与计算机 ...
- verilog 算法加速模块设计流程_基于FPGA的图像加速器的设计
基于 FPGA 的图像加速器的设计 摘 要 介绍了一种基于 FPGA 的图像加速器的设计.本文硬件加速器的实质是通过流水线 设计来减少多余的操作达到加速的目的的, 内存是由 DMA 控制器访问, 之后 ...
- Verilog设计实例(3)基于Verilog的单端口同步读写RAM设计
文章目录 写在前面 正文 电路设计 行为仿真 交个朋友 写在前面 为什么要写单端口同步读写RAM呢? 没有那么多为什么?就是因为简单.基础,能清晰说明单端口RAM的原理,顺手给出设计,也能说明你的设计 ...
- 【FPGA实例】基于FPGA的DDS信号发生器设计
原文链接来源:www.runoob.com 基于FPGA的DDS信号发生器设计 DDS 原理 ------DDS(直接频率合成) 技术是根据奈奎斯特抽样定理及数字处理技术,把一系列的模拟信号进行不失真 ...
最新文章
- MySQL数据库-笔记03【范式(1NF、2NF、3NF)、查询练习题*10道(附解析)】
- javaweb使用 数据库连接池 DBCP,实现对数据库驱动使用优化,多个 action共用一个数据库连接
- java零基础学习java规划
- 自定义背景_新版快绘精选:自定义背景墙 | 吊顶 | 云渲染滤镜升级
- 「源码分析」CopyOnWriteArrayList 中的隐藏知识,你Get了吗?
- 写一篇好的技术文章有多难?
- Linux常用命令3
- hdu 1083 Courses
- 趣味理解ADO.NET对象模型
- 龙斗士显示网络和服务器,龙斗士热点问题_百田网帮助中心
- 学习HTMLT5_1 拖拽
- nekohtml 用法
- 5 款漏洞扫描工具:实用、强力、全面(含开源)
- ngnix 端口映射
- 网页搜索(百度谷歌)你不得不知道的十个小技巧
- python输入一个正整数、将其按逆序输出_Python实现按照指定要求逆序输出一个数字的方法...
- PS安装出现浏览器或操作系统不支持以及需要登录的处理方式
- grub无法正常启动的解决方法
- linux下显卡信息的查看
- 汽车熔模铸造市场现状研究分析与预测报告