【Vitis】Vitis HLS学习系列笔记 :第一个例程

在学习vitis的过程中一定要跑几个例程试试看,这中间遇到了几个小问题,记录下

有干货,请注意查收:作为新手,跑例程大概率会遇到问题,这里记录几个问题,如果刚好你也遇到,一定会帮到你。

笔者跑了好几个例程,精选了一个最全的。

我的vitis版本2023.2,学习还得看最新的笔记,软件更新太快。


【Vitis】Vitis HLS学习系列笔记 :第一个例程 

…………


目录

1 Vitis HLS是什么?

2 例程

3 很可能遇到的问题

3.1生成的verilog在哪?

3.2 运行C/RTL COSIMULATION不能自动打开open wave viewer窗口 


1 Vitis HLS是什么?

Vitis™ HLS是一款高级综合工具,允许 C、C++ 和OpenCL™函数硬连线(hardwired)到器件逻辑结构和 RAM/DSP 块上。Vitis HLS在Vitis应用加速开发流程中实现硬件内核(hardware kernel),并使用 C/C++ 代码为Vivado® Design Suite中的Xilinx®器件设计开发 RTL(寄存器传输设计级别)IP(功能块) 。

在Vitis应用程序加速流程中,Vitis HLS工具可自动执行大部分代码修改,以实现和优化可编程逻辑中的 C/C++ 代码并实现低延迟和高吞吐量。推导出需要的编译指示(pragmas),以为函数参数生成正确接口以及在代码中用pipeline优化循环和函数,这是Vitis HLS在应用程序加速流程中的基础。Vitis HLS还支持自定义您的代码以实现不同的接口标准或特定优化,从而实现您的设计目标。

Vitis HLS设计流程一般如下:

1.编译、仿真、调试C/C++代码;

2.观察report,以分析和优化设计;

3.将C代码综合(synthesize)成RTL设计;

4.用RTL协同仿真器验证RTL实现;

5.将RTL实现打包成编译后的目标文件(.xo),或者导出到RTL IP.


2 例程

        我查阅了一些资料,尝试了几个不同博主的例程,选出来一个最全的,供大家参考,这里直接给原文链接。

        有两个链接,是两位博主分别在2020年和2023年进行的创作,使用的同一个例程,但是最终的结论有些不同,这里出现不同的原因是xilinx Vitis™ HLS工具升级了,变得更加智能,很有意思。

2020年博文:HLS 开发学习(二)向量加法器_向量加法fpga-CSDN博客

2023年博文:课时3:Vitis HLS设计流程(实例演示)——Vitis HLS教程-CSDN博客

         共三小段程序,

头文件VectorAdd.h

#define N 5
typedef int data_t;
void VectorAdd(data_t A[N],data_t t,data_t B[N]);

源文件VectorAdd.cpp

#include "VectorAdd.h"void VectorAdd(data_t A[N],data_t t,data_t B[N])
{unsigned int i;myloop:for(i=0;i<N;i++){B[i] = A[i] + t;}
}

testbench文件

#include <iostream>
#include <iomanip>
#include "VectorAdd.h"using namespace std;int main(){data_t A[N] = {-4,-3,0,1,2};data_t c = 5;data_t B[N] = {0};data_t RefB[N] = {1,2,5,6,7};unsigned int i = 0;unsigned int errcnt = 0;VectorAdd(A,c,B);cout<<setfill('-')<<setw(30)<<'-'<<'\n';cout<<setfill(' ')<<setw(10)<<left<<"A";cout<<setfill(' ')<<setw(10)<<left<<"C";cout<<setfill(' ')<<setw(10)<<left<<"B"<<'\n';cout<<setfill('-')<<setw(30)<<left<<'\n';for ( i = 0;i<N;i++){cout<<setfill(' ')<<setw(10)<<left<<A[i];cout<<setfill(' ')<<setw(10)<<left<<c;cout<<setfill(' ')<<setw(10)<<left<<B[i];if(B[i] == RefB[i]){cout<<'\n';}else{cout << "(" << RefB[i] << ")" << '\n';errcnt ++ ;}}cout << setfill('-') << setw(30) << '-' <<'\n';if(errcnt > 0){cout << "Test Failed" << '\n';return 1;}else{cout<< "Test Passed" << '\n';return 0;}
}

具体步骤,见原博客。


3 很可能遇到的问题

3.1生成的verilog在哪?

运行完程序后会在左侧Explorer下生成 solution 文件夹,syn-verilog目录下就是源码。

顶层的verilog部分源码:

3.2 运行C/RTL COSIMULATION不能自动打开open wave viewer窗口 

点击C/RTL COSIMULATION后,弹出窗口 CO-SIMULATION Dialog

注意DUMP Trace选择 PORT

此时工具栏中的open wave viewer才会变成彩色,然后自动打开vivado,出现波形

仿真波形

  

这个系列会出几篇Vitis HLS的入门笔记,注意收藏哦。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

XML详解

文章目录 XML简介语法约束DTDSchema 解析Jsoup使用对象详解JsoupDocumentElementsElementNode XML 简介 概述&#xff1a;Extensible Markup Language 可扩展标记语言 可扩展&#xff1a;标签都是自定义的。 功能 数据存储&#xff1a;XML 可以用来存储结构化数据&#xff0c…

HSRP配置指南

实验大纲 第 1 部分&#xff1a;验证连通性 步骤 1&#xff1a;追踪从 PC-A 到 Web 服务器的路径 步骤 2&#xff1a;追踪从 PC-B 到 Web 服务器的路径 步骤 3&#xff1a;观察当 R3 不可用时&#xff0c;网络的行为 第 2 部分&#xff1a;配置 HSRP 主用和 备用路由器 步…

rasa3.X 自定义action的注册问题

rasa3.X 自定义action的注册问题 文章目录 rasa3.X 自定义action的注册问题前言一、问题重述二、问题解决 前言 幸好在这之前抽时间稍微看了一点django源码&#xff0c;让我对于python的导入机制有了一个概念。虽然还不是很确切的知道python import机制&#xff0c;不过在看到…

QT学习日记 | 初始QT

目录 一、创建QT文件 二、目录结构讲解 1、.pro文件 2、源文件与头文件 3、编译运行 4、界面文件 三、梦开始的地方&#xff08;Hello World&#xff01;&#xff09; 1、代码方式 2、拖拽方式 四、Qt中的“容器” 五、Qt的对象树机制 1、对象树的引入 2、对象树…

MySQL进阶之锁(全局锁以及备份报错解决)

锁 全局锁 全局锁就是对整个数据库实例加锁&#xff0c;加锁后整个实例就处于只读状态&#xff0c;后续的DML的写语句&#xff0c;DDL语 句&#xff0c;已经更新操作的事务提交语句都将被阻塞。 其典型的使用场景是做全库的逻辑备份&#xff0c;对所有的表进行锁定&#xff…

030-安全开发-JS应用NodeJS指南原型链污染Express框架功能实现审计

030-安全开发-JS应用&NodeJS指南&原型链污染&Express框架&功能实现&审计 #知识点&#xff1a; 1、NodeJS-开发环境&功能实现 2、NodeJS-安全漏洞&案例分析 3、NodeJS-开发指南&特有漏洞 演示案例&#xff1a; ➢环境搭建-NodeJS-解析安装&…

MySQL知识点总结(三)——事务

MySQL知识点总结&#xff08;三&#xff09;——事务 事务事务的四大特性ACID原子性一致性隔离性持久性 脏读、幻读、不可重复读脏读不可重复读幻读 隔离级别读未提交读已提交可重复读串行化 事务的原理InnoDB如何实现事务的ACID事务的两阶段提交redo log与binlog的区别事务两阶…

【DevOps】产品需求文档(PRD)与常见原型软件

文章目录 1、PRD介绍1.1、概述1.2、前提条件1.3、主要目的1.4、关键内容1.5、表述方式1.6、需求评审人员1.7、一般内容结构 2、需求流程3、常见原型软件3.1、Word3.2、Axure3.2.1、详细介绍3.2.2、应用分类3.2.3、优缺点 3.3、摹客RP3.4、蓝湖3.5、GUI Design Studio 1、PRD介绍…

业务流程自动化平台在制造业应用案例,助力业务自动化、智能化

捷昌驱动成立于2000年&#xff0c;并于2018年9月在上海证券交易所上市&#xff0c;是一家专注于线性驱动产品研发、生产及销售的科技集团。 公司整合全球资源&#xff0c;为智慧办公、医疗康护、智能家居、工业自动化等关联产业提供驱动及智能控制解决方案&#xff0c;以科技驱…

C# 浅克隆与深克隆

在C#中&#xff0c;浅克隆&#xff08;Shallow Clone&#xff09;和深克隆&#xff08;Deep Clone&#xff09;是两种常见的对象克隆技术&#xff0c;用于创建对象的新副本。 它们的主要区别在于复制对象的层次和属性的处理方式。 浅克隆&#xff08;Shallow Copy&#xff09;…

荣耀手机如何录屏?在线分享3个录屏方法

荣耀手机如何录屏&#xff1f;荣耀手机录屏是一项非常实用的功能&#xff0c;它可以帮助我们轻松记录手机屏幕上的内容&#xff0c;无论是游戏攻略、教育学习还是工作演示&#xff0c;都能够方便地进行录制。通过录屏&#xff0c;我们可以随时随地记录和分享自己的操作和见解。…

探究Steam爆款游戏”幻兽帕鲁“:玩家评价揭秘

探究Steam爆款游戏”幻兽帕鲁“&#xff1a;玩家评价揭秘 文章目录 探究Steam爆款游戏”幻兽帕鲁“&#xff1a;玩家评价揭秘1 背景描述2 数据说明3 数据来源4 问题描述5 数据探索与预处理5.1 数据加载5.2 数据清洗 6 数据分析6.1 评论分布分析6.2 评论内容情感分析6.3 地理分布…

寒假作业1

1、栈和队列的区别&#xff1f; 栈&#xff1a;先进后出&#xff0c;队列&#xff1a;先进先出栈&#xff1a;只允许在一端进行插入和删除队列&#xff1a;允许在队尾插入&#xff0c;队头删除的线性结构都是操作受限的线性表&#xff0c;插入和删除都只能在端点处进行&#xf…

02-03

内核提供的通信方式 1、有名管道和无名管道 有名管道和无名管道都属于管道通信&#xff0c;通过在内核空间创建一个特殊的文件&#xff08;管道文件&#xff09;&#xff0c;一个进程将数据写入管道&#xff0c;另一个进程从管道中读取数据&#xff0c;从而实现通信。管道文件…

力扣热门100题刷题笔记 - 2.两数相加

力扣热门100题 - 2.两数相加 题目链接&#xff1a;2.两数相加 题目描述&#xff1a; 给你两个 非空 的链表&#xff0c;表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的&#xff0c;并且每个节点只能存储 一位 数字。请你将两个数相加&#xff0c;并以相同形式返…

图书|基于Springboot的图书管理系统设计与实现(源码+数据库+文档)

图书管理系统目录 目录 基于Springboot的图书管理系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、个人中心 2、管理员管理 3、用户管理 4、图书出版社管理 5、公告类型管理 6、所在书架管理 7、图书类型管理 8、论坛管理 9、公告信息管理 10、图书信…

【数据结构】(分治策略)中位数的查询和最接近点对问题

中位数查询&#xff1a; 寻找一组字符串中第k小的数&#xff0c;返回其值和下标。 不可以有重复值&#xff08;在缩小规模的时候&#xff0c;会导致程序死循环&#xff09; 相对位置的转换体现了分治策略的思想。> 划分函数 int partition(int *nums,int left, int rig…

NuxtJS3配置多环境变量

1.在根目录添加开发环境.env.development # 本地环境 NODE_ENV development VUE_APP_NUXT_API_URL /api NUXT_BASE_PORT 3000 NUXT_BASE_LINK http://192.168.21.80:6000 NUXT_SYSTEM_TITLE xx管理系统2.在根目录添加测试环境.env.test # 测试环境 NODE_ENV test NUXT_…

Jmeter 自动化性能测试常见问题汇总

一、request 请求超时设置 timeout 超时时间是可以手动设置的&#xff0c;新建一个 http 请求&#xff0c;在“高级”设置中找到“超时”设置&#xff0c;设置连接、响应时间为2000ms。 1. 请求连接超时&#xff0c;连不上服务器。 现象&#xff1a; Jmeter表现形式为&…

SSL证书过期后网站是否能够正常访问?

SSL证书是确保网站数据传输安全和用户信任的重要组成部分。然而&#xff0c;一旦SSL证书过期&#xff0c;网站是否依然能够正常访问呢&#xff1f;本文将详细探讨SSL证书过期后对网站的影响以及相应的解决方法。 SSL证书过期后&#xff0c;网站的状态将发生以下变化&#xff1a…