南京观海微电子---Vitis HLS设计流程介绍——Vitis HLS教程

1. 传统的FPGA设计流程

传统的RTL设计流程如下图所示:

图片

 

传统的FPGA RTL设计流程主要是采用VHDL、VerilogHDL或System Verilog进行工程的开发,同时也是通过硬件描述语言来编写测试案例(Test Bench)对开发的工程进行仿真验证。

随后根据延时、时序以及资源使用等条件因素对设计进行收敛,对硬件描述语言编写的工程进行综合、布局布线。最后在系统级层面对整个工程进行测试和迭代。

2. 高级语言(C/C++)设计流程

如果采用C语言设计流程,我们将通过抽象度更高的C/C++语言来对工程进行开发和仿真,如下图所示。

图片

 

采用基于C语言的设计流程,开发人员直接使用C/C++语言来描述算法以及Test Bench,执行C的仿真来验证设计的正确性。

紧接着通过高级综合工具,完成C到RTL的转换。该设计转换同样也需要考虑延时、时序以及资源的收敛。

随后和RTL设计流程一致,通过软件工具完成RTL电路的综合和布局布线。最后,系统级层面对整个工程进行测试和迭代。

3. 基于Vitis HLSIP设计流程

如果我们采用Vitis HLS来完成基于C语言的工程开发,设计流程如下图所示。

图片

首先,我们采用C/C++语言来描述算法以及Test Bench,同时我们还要准备Constraints和Directives。Vitis HLS有专门的图形化界面来设置Directives。以上这些组成了整个设计的输入。

值得一提的是,Vitis HLS也集成和提供了C代码库。这些库涵盖了算数运算、视频处理、信号/数据处理、线性代数等。开发人员可以直接调用这些库函数来加速自己C算法的描述。

随后,通过Vitis HLS平台将以上设计输出为VHDL/Verilog代码。开发人员并不直接使用这些代码,而是将这些代码封装成IP核,然后将IP核添加到Vivado的IP Catalog中进行调用。这也和Vivado提出的以IP为核心的设计理念是一致的。

4. Vitis HLS的设计流程详解

4.1 设计流程描述

根据以上讲解,我们可以将Vitis HLS设计流程细化如下:

图片

 

其中基于C的TestBench文件非常重要,它不仅包含了输入信息以及测试案例,它还包含了测试的正确结果用于进行仿真比较。

通过Vitis 的联合仿真(Cosimulation)功能,C/C++语言描述的Test Bench可以自动转换为RTL的TestBench。

图片

 

4.2 结合Vitis HLS的菜单栏讲述设计流程

图片

第一步:完成C的仿真;

第二步:完成C的综合;

第三步:完成C和RTL的协调仿真;

第四步:导出RTL设计;

在完成C综合后,可以打开综合报告,查看设计的性能评估、资源使用的评估以及接口等信息。

4.3 Vitis HLS项目工程的Solutions(解决方案)

在Vitis HLS项目工程中,一个工程可以对应多个Solution。每个Solution都有着自己的控制指令(directives)设置集,而这些directives就是用来优化C综合的。

图片

 

Vitis HLS提供很方便的工具让开发员创建不同的Solutions,开发员通过对比有着不同directives的Solutions综合出来的结果,来迭代和优化自己的设计。

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

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

相关文章

SpringBoot接收参数的方式

Get 请求 1.1 以方法的形参接收参数 1.这种方式一般适用参数比较少的情况 RestController RequestMapping("/user") Slf4j public class UserController {GetMapping("/detail")public Result<User> getUserDetail(String name,String phone) {log.…

二维码门楼牌管理应用平台建设:实现民主参与的新途径

文章目录 前言一、二维码门楼牌管理应用平台的兴起二、投票表决功能的实现三、居民参与度的提升四、面临的挑战与前景展望 前言 在数字化时代&#xff0c;二维码技术的应用已经渗透到我们生活的方方面面。近期&#xff0c;二维码门楼牌管理应用平台的建设成为了社区治理的一大…

leecode 331 |验证二叉树的前序序列化 | gdb 调试找bug

计算的本质是数据的计算 数据的计算需要采用格式化的存储&#xff0c; 规则的数据结果&#xff0c;可以快速的按照指定要求存储数据 这里就不得不说二叉树了&#xff0c;二叉树应用场景真的很多 本题讲的是&#xff0c;验证二叉树的前序序列化 换言之&#xff0c;不采用建立树的…

Kubernetes(K8S)学习(二):K8S常用组件

K8S常用组件 一、 Controllers1、ReplicationController(RC)2、ReplicaSet(RS)3、Deployment 二、Labels and Selectors三、Namespace&#xff08;命名空间&#xff09;1、简介2、测试2.1、创建namespace2.2、创建pod 四、Network1、集群内&#xff1a;同一个Pod中的容器通信2、…

数据挖掘|贝叶斯分类器及其Python实现

分类分析|贝叶斯分类器及其Python实现 0. 分类分析概述1. Logistics回归模型2. 贝叶斯分类器2.1 贝叶斯定理2.2 朴素贝叶斯分类器2.2.1 高斯朴素贝叶斯分类器2.2.2 多项式朴素贝叶斯分类器 2.3 朴素贝叶斯分类的主要优点2.4 朴素贝叶斯分类的主要缺点 3. 贝叶斯分类器在生产中的…

力扣刷题Days29-第二题-70.爬楼梯(js)

只有学习&#xff0c;没有自己的思路解题哈哈哈 1&#xff0c;题目 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢&#xff1f; 2&#xff0c;代码 这种解法的本质是斐波那契数列 /*** param {number} n* re…

关于积分敛散性的这道考研数二真题,好多辅导资料都没有讲清楚!

考研数学二 2024 年真题的第 7 题是关于积分敛散性判别的&#xff0c;但是&#xff0c;细心的同学会发现&#xff0c;对于这道题目&#xff0c;某些考研机构给出的解析资料其实并没有讲清楚具体解题方法&#xff0c;甚至还存在错误&#xff0c;有关这道题目的详细解析&#xff…

分布式数据库技术的演进和发展方向

前言 这些年大家都在谈分布式数据库&#xff0c;各大企业也纷纷开始做数据库的分布式改造。那么&#xff0c;所谓的分布式数据库到底是什么&#xff1f;采用什么架构&#xff1f;优势在哪&#xff1f;为什么越来越多企业选择它&#xff1f;分布式数据库技术会向什么方向发展&a…

区块链+AI,AG与Speedy联合Sui为收藏品打造数字身份

Speedy Comics&#xff08;PopCon Me的制片方&#xff09;和AGS&#xff08;一家由AI驱动的收藏品认证服务提供商&#xff09;将利用Sui来安全地托管证书&#xff0c;以证明验证过的流行文化收藏品的所有权和起源。从稀有的宝可梦卡到星球大战道具的收藏品&#xff0c;购买者可…

【分布式事务】Seata 简介

文章目录 1.分布式事务解决方案之两阶段提交协议2.Seata 简介&#xff08;两阶段提交协议的演变&#xff09;3.Seata 术语 1.分布式事务解决方案之两阶段提交协议 2PC&#xff0c;即两阶段提交协议&#xff08;Two-Phase Commit&#xff09;&#xff0c;是分布式系统中保证事务…

拦截器未生效的问题

记录一下自己出现的一个问题 配置好拦截器后 protected void addInterceptors(InterceptorRegistry registry) {log.info("开始注册自定义拦截器...");registry.addInterceptor(jwtTokenUserInterceptor).addPathPatterns("/**").excludePathPatterns(&q…

机器学习周记(第三十三周:文献阅读-时空双通路框架)2024.3.25~2024.3.31

目录 摘要 ABSTRACT 1 论文信息 1.1 论文标题 1.2 论文摘要 1.3 论文模型 1.3.1 Spatial Encoder&#xff08;空间编码器&#xff09; 1.3.2 Temporal Encoder&#xff08;时间编码器&#xff09; 2 相关代码 摘要 本周阅读了一篇运用GNN进行时间序列预测的论文。论文…

【论文阅读】UniLog: Automatic Logging via LLM and In-Context Learning

注 由于其公司的保密政策&#xff0c;本文没有公开源代码&#xff0c;数据是公开的。 文章目录 摘要一、介绍二、背景和动机2.1、日志语句生成2.2、大语言模型2.3、上下文学习&#xff08;In-Context Learning&#xff0c;ICL) 三、UNILOG3.1、模型骨干3.2、提示策略3.2.1、提…

大龄程序员的2024年3月总结:鸿蒙,发起GDE申请,金石计划获奖,月榜,技术文章

大家好&#xff0c;我是老A&#xff0c;一名工作十年的安卓开发&#xff1b; 又到了月末写总结的时候了&#xff0c;看过我文章的朋友应该会发现我没有写2月的总结&#xff0c;因为2月有春节假期&#xff0c;2月大部分时间都是在假期中度过的&#xff0c;所以就没有写2月总结&…

瓷砖通铺选择亮面还是哑光?了解这6点不难选。福州中宅装饰,福州装修

选择瓷砖通铺亮面还是哑光&#xff0c;可以从多个角度来考虑&#xff1a; ①空间感觉 亮面瓷砖通常会使空间看起来更加宽敞和明亮&#xff0c;而哑光瓷砖则给人大气、稳重的感觉。如果希望让空间显得更加宽敞&#xff0c;亮面瓷砖是一个不错的选择。 ②清洁与维护 亮面瓷砖更…

KNN算法 | K近邻:KD Tree、球树、KNN数据下采样策略

目录 一. KNN算法实现方式1. 蛮力实现(brute)2. KD树(kd_tree)3. 球树(ball_tree) 二. KD Tree算法1. 构建方式2. KD Tree 查找最近邻 三. 球树(Ball Tree)1. 构建方式 四. KNN评价1. 优点2. 缺点 五. 延申1. KNN数据下采样策略策略1策略2策略3策略4 Condensed Nearest Neighbo…

loadbalancer 引入与使用

在消费中pom中引入 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-loadbalancer</artifactId> </dependency> 请求调用加 LoadBalanced 注解 进行服务调用 默认负载均衡是轮训模式 想要切换…

OpenStack部署

目录 一、安装环境 1.无网络使用该命令 2.修改主机名 3.配置hosts解析 4.配置本机免密 5.关闭防火墙和SElinux策略 6.关闭NewworkManager 7.修改yum源 7.1下载阿里源 7.2清空并加载缓存yum源 8.安装基本工具 9.系统升级 10.安装OPenStack的yum仓库 11.修改OPenSt…

Verilog语法之assign语句学习

assign语法主要是对组合逻辑的变量进行赋值的&#xff0c;就是把一个变量赋值给另一个变量&#xff0c;被复制的变量必须是wire类型的参数。 从仿真结果可以看出&#xff0c;data_in变量的值赋值给了data_out,assign语法就是赋值没有任何延迟&#xff0c;data_in是什么值&#…

数据结构--单链表(c语言实现)

一.单链表的设计 1.单链表的结构定义: typedef struct Node{int data;//数据域struct Node* next;//后继指针 }Node,*List; 2.单链表的设计示意图: 3.注意,单链表的最后一个节点的next域为NULL; 4.为什么要有一个头节点?(简单方便,不用传二级指针); 二.单链表的实现 //初始化 …