南京观海微电子---Vitis HLS设计流程(实例演示)——Vitis HLS教程

1. 前言

课时2我们介绍了Vitis HLS的设计流程,如下图所示:

图片

算法或软件的设计和仿真都基于C/C++,通过HLS平台导出打包好的IP RTL代码,最后将该打包的IP加入到主工程使用。

本课时,我们通过一个具体的实例,演示HLS设计流程。

2. Vitis HLS设计注意事项

  • 在VitisHLS中,只有一个函数可以设为顶层综合函数,但不能是main()函数。

  • 任何在顶层函数下的子函数都会被综合,并且综合后得到代码的函数层级结构可以保留。

图片

  • 有些代码和结构是不可被Vitis HLS综合的,包括动态分配存储空间、与操作系统相关操作等。

3. Vitis HLS设计示例

3.1 Vitis HLS工程建立

(1)新建Vitis HLS工程,如下图所示,工程名为“HLS_StartDemo”;

图片

 

(2)指定要综合的顶层函数名称,此处我们填写待综合的函数名称为“VectorAdd”;

图片

 

(3)可以在建立工程的时候,暂时不添加Testbench文件。

图片

 

(4)创建Solution,同时要指定Solution名称,模块的时钟周期以及FPGA器件型号。

图片

 

(5)添加示例代码,示例工程代码主要包含3个文件:

图片

其中,VectorAdd.h 为头文件;VectorAdd.cpp为源文件;VectorAdd_tb.cpp为Test Bench。该工程代码主要实现的功能是:在一个for循环内,对一个数组做加法。顶层函数如下:

图片

 

测试的Testbench部分截图如下:

图片

 

Testbench里既包含了测试数据,也包含了正确的输出结果用于做仿真比较。

工程文件加完后,工程结构如下图所示:

图片

 

3.2 仿真和综合

(1)对工程进行仿真,在菜单栏中点击“C Simulation”。

图片

 

得到的仿真输出如下,可以看到结果显示“TestPass”。

(2)仿真通过后,对工程进行综合,在菜单栏中点击“C Synthesis”。

图片

打开综合报告,可以看到C代码被综合成RTL代码后,使用的硬件资源评估、性能评估等等。

图片

图片

(3)综合通过后,对工程进行联合仿真,在菜单栏中点击“Co-Simulation”。

图片

图片

可以查看到联合仿真后的仿真报告。报告显示了联合仿真的状态为“Pass”,并附有一些性能评估报告。

图片

(4)联合仿真通过后,我们可以打开波形查看窗口“Open Wave Viewer…”

图片

更加直观的查看仿真结果是什么样子,查看结果时会自动打开Vivadao。

图片

 

其中“Block-level IO Handshake”端口为握手端口信号:

图片

 

以下为输入输出数组或变量端口,端口包含地址总线、使能信号、写使能信号、数据总线等:

图片

 

3.3 创建另一个Solution

(1)创建新Solution

Vitis HLS给用户提供了非常方便创建新Solution的接口。用户可以点击工具栏上的“New Solution”来给同样的工程代码创建新的Solution。

图片

 

新的Solution命名为“solution2”,同时我们勾选“Copy directives and constraints from solution: solution1”选项,即solution2拷贝了solution1原有的directives指令(该示例中,solution1的directives指令为空)。

图片

 

(2)给命名为“myloop”的循环添加directive指令。右键“myloop”,点击“Insert Directive…”

图片

我们选择了“HLS PIPELINE”指令(这些指令的含义将在后面课时着重讲解);

图片

 

(3)针对“solution2”对工程进行综合,生成综合报告。

(4)在菜单栏中点击“Compare Reports…”,比较同样的工程在两个Solutions下综合出来的结果。

图片

 

(5)由于在Vitis HLS 2021.1版本中,建立新工程(solution1)时即便没有添加directives,HLS会给solution默认添加“HLS PIPELINE”指令。而我们给solution2添加的directives也为“HLS PIPELINE”指令,因此两个Solutions综合编译出来的结果是一致的(大家可以尝试添加不同的directives指令,然后对比下不同Solutions综合编译出的结果)。

图片

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/524510.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Kibana管理ES生命周期

希望通过Kibana界面管理ES索引的生命周期 版本:7.15.2 创建索引模板 创建索引模板方便匹配索引,对匹配到的一批索引采用同一套生命周期管理策略,例如开发环境的所有索引以dev-开头,可以创建样式为dev-*的索引模板以匹配开发环境…

【服务器uwsgi + flask + nginx的搭建】

目录 服务器uwsgi flask nginx的搭建1. 安装必要的软件2. 启动nginx服务3. 测试Nginx4. 配置uwsgi和flask5. 配置nginx 服务器uwsgi flask nginx的搭建 1. 安装必要的软件 安装Python、uWSGI、Flask 和 Nginx。 # Ubuntu 安装命令 sudo apt-get update sudo apt-get ins…

海外媒体宣发,穿透与世界的交流 - “保姆级”教程 - 大舍传媒

1. 引言 在当今高度信息化的世界,境外媒体宣发已经成为企业、品牌和政府机构推广自身形象、扩大影响力的重要手段。如何在国际舞台上有效传播信息,提高国际知名度,成为了许多组织面临的重要课题。大舍传媒凭借多年的境外媒体宣发经验&#x…

第六篇: 3.5 性能效果 (Performance)- IAB/MRC及《增强现实广告效果测量指南1.0》

​​​​​​​ 翻译计划 第一篇概述—IAB与MRC及《增强现实广告效果测量指南》之目录、适用范围及术语第二篇 广告效果测量定义和其他矩阵之- 3.1 广告印象(AD Impression)第三篇 广告效果测量定义和其他矩阵之- 3.2 可见性 (Viewability…

Goingpub国自然基金-免费查询

可进行年份、学部、项目类别等检索,支持生成主题词汇总分析报告。 最最最关键,免费,只需要你注册登录一下,防止被爬虫侵扰。 界面简单,实用,支持模糊搜索,包含最新2023年数据,共56…

34-4 CSRF漏洞 - CSRF跨站点请求伪造

一、漏洞定义 CSRF(跨站请求伪造)是一种客户端攻击,又称为“一键式攻击”。该漏洞利用了Web应用程序与受害用户之间的信任关系,通过滥用同源策略,使受害者在不知情的情况下代表攻击者执行操作。与XSS攻击不同,XSS利用用户对特定网站的信任,而CSRF则利用了网站对用户网页…

yolov9直接调用zed相机实现三维测距(python)

yolov9直接调用zed相机实现三维测距(python) 1. 相关配置2. 相关代码2.1 相机设置2.2 测距模块2.2 实验结果 相关链接 此项目直接调用zed相机实现三维测距,无需标定,相关内容如下: 1. yolov4直接调用zed相机实现三维测…

iPhone卡在苹果标志如何修复?

由于多种原因,您的 iPhone 可能会陷入白色 Apple 标志。第一次出现的时候你可能并没有多在意,以为只是这次时间比较长,直到发现任何操作都无法恢复到正常状态,这时你就开始感到焦虑了。这时,你可能会认为在尝试了很多你…

基于ARM内核的智能手环(day6)

模拟量传感器 模拟量传感器可以提供连续的输出信号,通过测量和转换物理量的变化来获取相关信息。其中包括: 光照传感器 光照传感器常用于测量周围环境的光照强度。其特点包括: 使用光敏电阻作为传感器元件。光敏电阻的阻值随着光照强度的…

3D数据发布工具HOOPS Publish如何将3D模型转换成PDF格式?

在现代科技发展的推动下,3D技术在各个行业中扮演着越来越重要的角色。从工程设计到医疗保健,从建筑规划到教育培训,3D模型都成为了理解、沟通和展示复杂数据的主要工具。而将这些3D模型转换成PDF格式,能够使其更易于共享、存档和展…

让智能体像Excel易用还要多久?

2023年,国内AI产业迎来狂飙时代。大模型热潮推动AI智能体(AI Agent)发展,继ChatGPT成功后,OpenAI目标直指AI Agents。上半年,行业竞相扩大模型规模、提升参数和计算能力,抢占AI浪潮先机。然而&a…

单身女孩的心事26岁的我在寻找另一半微信脱单群

在繁华的都市中,有一个名叫小雅的26岁女孩,她每天穿梭在拥挤的人群中,过着看似平凡却充满期待的生活。小雅是一个性格开朗、独立自主的女孩,她有着稳定的工作和不错的收入,朋友们都羡慕她的生活。然而,小雅…

IP-GUARD内置用户系统同步飞书组织架构使用说明

一、功能简介 实现将飞书的通讯录组织架构同步到内置用户系统。 二、功能配置 2.1 飞书创建自建应用 在浏览器上打开飞书开放平台 https://open.feishu.cn ,登录管理员账号后点击开发 者后台 在开发者后台点击创建企业自建应用,填写自建应用程序名称以及描述,设置图标,点…

nestjs 全栈进阶--module

视频教程 10_模块Module1_哔哩哔哩_bilibili 1. 模块Module 在 Nest.js 中,Module 是框架的核心概念之一,用于组织和管理应用程序的不同部分,包括服务、控制器、中间件以及其他模块的导入。每个 Nest.js 应用程序至少有一个根模块&#xf…

【QT+QGIS跨平台编译】076:【libdxfrw跨平台编译】(一套代码、一套框架,跨平台编译)

点击查看专栏目录 文章目录 一、libdxfrw介绍二、QGIS下载三、文件分析四、pro文件五、编译实践一、libdxfrw介绍 libdxfrw是一个用于读取和写入DXF(Drawing Exchange Format)文件的开源C++库。DXF是一种由AutoCAD开发的文件格式,用于存储CAD(计算机辅助设计)图形数据,它…

【代码随想录】哈希表

文章目录 242.有效的字母异位词349. 两个数组的交集202. 快乐数1. 两数之和454. 四数相加 II383. 赎金信15. 三数之和18. 四数之和 242.有效的字母异位词 class Solution {public boolean isAnagram(String s, String t) {if(snull || tnull || s.length()!t.length()){return …

基于计算机视觉的交通信号违章检测系统(闯红灯违章检测)

Introduce: 该系统可以实时检测交通信号灯违规: 城市中越来越多的汽车会导致大量交通拥堵,这意味着如今在孟加拉国和世界各地,交通违规行为变得更加严重。这造成了严重的财产破坏和更多可能危及人民生命的事故。为了解决令人震惊的问题并防止这种深不可…

Flask Python Flask-SQLAlchemy中数据库的数据类型、flask中数据可的列约束配置

Flask Python Flask-SQLAlchemy中数据库的数据类型、flask中数据可的列约束配置 SQLAlchemy官方文档地址实战的代码分享数据类型列约束配置自定义方法 SQLAlchemy官方文档地址 SQLAlchemy官方文档地址 实战的代码分享 Flask-SQLAlchemy框架为创建数据库的实例提供了一个基类…

Stirling PDF:免费PDF开源编辑工具

Git地址:https://github.com/Stirling-Tools/Stirling-PDF Stirling-PDF是一个基于spring-boot开发的开源项目,旨在提供一个功能强大的基于Docker的本地托管PDF操作工具。它使您能够对PDF文件进行多种操作,包括拆分、合并、转换、重新组织、…

git系列之--- git pull 和 git fetch理解与区别

标题一般远端仓库里有新的内容更新&#xff0c;当我们需要把新内容下载的时候&#xff0c;就使用到git pull或者git fetch命令 fetch 用法如下&#xff1a; git fetch <远程主机名> <远程分支名>:<本地分支名>例如从远程的origin仓库的master分支下载代码…