Xilinx Vivado的RTL分析(RTL analysis)、综合(synthesis)和实现(implementation)的区别?

news2024/11/30 5:00:32

1、一般流程

        Xilinx 的开发工具Vivado其实还是比较好上手的,在左边的设计流程导航已经把FPGA的开发过程按先后顺序给排列出来了:

  1. Project Manager:项目管理器,此项是对项目的参数进行设置

  2. IP Integrator:IP集成器,此项是对IP的操作

  3. Simulation:仿真,包括功能仿真、综合后仿真和实现后仿真

  4. RTL Analysis:RTL分析,将用户的设计输入细化成逻辑电路,也就是常说的RTL电路

  5. Synthesis:综合,类似于软件编程中的编译,是一个把RTL电路用FPGA内资源实现的过程,会生成综合网表

  6. Implementation:实现,把综合网表具体实现的过程,可以理解为将综合后的电路具体映射到FPGA内部资源的过程

  7. Program and Debug:下载和调试,将最终实现的电路生成BIT文件(或其他格式的文件),可下载进FPGA板卡中,还可以在这个环节进行调试debug

        理论上,FPGA从编程到下载实现预期功能的过程最少仅需要上述7个步骤中的4、5、6和7,即RTL分析、综合、实现和下载。其中的RTL分析、综合、实现的具体含义和区别又是什么? 


2、RTL分析(RTL analysis)

        一般来讲,通常的设计输入都是Verilog、VHDL或者System Verilog等硬件描述语言HDL编写的文件,RTL分析这一步就是将HDL语言转化成逻辑电路图的过程。比如HDL语言描述的计数器转化成对应的逻辑电路,又或者下例中的HDL语言描述的加法器转化成对应的逻辑电路。

        假设要实现简单的加法器----2个8bit输入的加法,不考虑进位,即输出同样为8bit。根据需求可以很容易地写出代码:

module test(
	input		[7:0]	in1,
	input		[7:0]	in2,
	output		[7:0]	out
);

assign out = in1 + in2;		//简单加法器

endmodule

        这个代码的核心只有一句,就是用一个assign语句将两个输入相加。这一语句转化成逻辑电路,很明显就是一个加法器。

        光说不练云玩家,接下来添加测试工程,并把该文件保存后,按下图顺序点击:

        可以看到RTL分析后的电路:

        和预期的一致吧?就是一个2输入8bit的加法器。 


3、综合(synthesis)

        综合是指将高级抽象层次的语言描述转化成较低层次的电路结构,也就是说将硬件描述语言描述的电路逻辑转化成查找表LUT、触发器等FPGA内部存在的基本逻辑单元的互连关系,也就是我们常说的综合网表。

        比如上面的例子,RTL分析后的电路是一个2输入8bit的加法器,那么综合后的电路是什么样子呢?按下图顺序点击:

        可以看到综合后的电路是这样的:

        好家伙,出来一大堆乱七八糟的,这跟RTL电路完全不一样呀?这些玩意都是啥?

  1. 2个输入端口的8+8 共16个IBUF,是FPGA的IO口默认添加的输入缓冲,这个更多是为了电气方面的考量,和逻辑关系不大
  2. 8个LUT2 + 2个CARRY4,这都是FPGA底层的逻辑资源,用来实现各种组合逻辑功能
  3. 1个输出端口的8个OBUF,是FPGA的IO口默认添加的输出缓冲,

        那么,为什么RTL电路和综合后的电路有如此大的区别?因为RTL电路是把HDL转化成逻辑电路,而综合后的电路则是用FPGA内部的逻辑资源来实现。所以最直接的原因就是FPGA底层没有加法器这个东西,只能用其他逻辑资源来实现加法器的功能。


4、实现(implementation)

        综合后生成的综合网表只是表示了逻辑资源之间虚拟的连接关系,并没有规定每个逻辑资源位置以及连线长度等。实现就是一个将综合网表中的逻辑资源位置以及连线长度确定的过程。

        比如上例中,综合后的电路由8个lut2 + 2个CARRY4 + 24个IOB组成,但是FPGA内部的LUT、CARRY4和IOB的数量远不止这些,所以需要根据用户设定的策略(面积优化、速度优化)来找到具体的逻辑资源。

        那么实现后的电路是什么样子呢?按下图顺序点击:

        此时,看到的是整个FPGA芯片的资源使用详情:

        把高亮的部分放大观察:

        左侧是具体的24个IOB,这是在左列数百个IOB中根据实现策略找到的具体解;右边则是具体的逻辑资源LUT+CARRY4,这是在数万个逻辑资源中找到的具体解。

        具体使用到的逻辑资源则是编号为CLBLL_L_X2Y79中编号为SLICE_X0Y79中的4个LUT6+1个CARRY4 和 CLBLL_L_X2Y78中编号为SLICE_X0Y78中的4个LUT6+1个CARRY4 。

        我经常说的一句话是:FPGA其实就是些积木。如果你想要个足球,那我就用很多个球形模块来拼;如果你想要把枪,那我就用很多个矩形模块+三角形模块来拼。

        假设你想用积木(FPGA)拼个变形金刚(目标设计),那么写HDL的过程大致就是:输入=若干积木,输出=变形金刚,中间则是用语言来描述这个变形金刚的样子,比如长25米,宽15米等;RTL电路图呢,则是将HDL转化成一张变形金刚的图纸;综合则是计算具体要用多少个矩形模块、多少个三角形模块、多少个球形模块来拼成变形金刚的过程;而实现则是,确定了矩形模块、三角形模块、球形模块的数量后,到你的积木堆里找到具体的模块的过程(毕竟你的积木堆里的模块数量远远不止是只能拼一个变形金刚不是)。

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

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

相关文章

广域铭岛参编《数智化供应链参考架构》标准正式发布

近日,广域铭岛参编的《数智化供应链参考架构》标准正式发布。该标准由工业互联网产业联盟(以下简称“联盟/AII”)发布,是国内首个数智化供应链领域的参考架构标准,明确了新兴的数字化和智能化技术如何在供应链领域应用…

大数据进程管理

进程管理 查看进程 进程查看命令 ps la | head -5,能够观察所有系统的数据 ps axjf | head -20,连同部分程序树状态 ps l仅查看自己的bash相关的进程 ps aux观察系统所有进程 属性含义USER进程使用者PID进程标识符%CPU进程使用掉的CPU 资源百分比%MEM…

一个不错的docker支持音频的rdp桌面

docker pull danielguerra/xfce4-rdp-audio 获取该镜像后,运行 docker run -d --name xfce4_0 --shm-size 1g -p 3389:3389 danielguerra/xfce4-rdp-audio相当于开了3个不同的系统容器,端口分别的13389,23389,33389,这时用远程桌面就可以连…

记录--记一次前端CSS升级

这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 目前平台前端使用的是原生CSSBEM命名,在多人协作的模式下,容易出现样式冲突。为了减少这一类的问题,提升研效,我调研了业界上主流的7种CSS解决方案&…

Java基于springboot+vue 的传统乐器培训管理系统 elementUI

此网站系统的开发方式和信息管理方式,借鉴前人设计的信息和研发。以在线乐器培训管理为主,以乐器培训管理为核心功能来进行设计和研发,把网站信息和技术整合,开发出一套网上乐器培训管理系统。主要运用现在社会公司中最新的技术框…

rocketmq源码学习-nameServer

前言 最近看了下rocketmq的源码,计划针对最近的学习,做一个笔记,先从nameServer启动的逻辑开始记录吧 在rocketmq中,有四个关键的组件 nameServerbrokerproducerconsumer 这四个组件之间的关系是这样的 关于nameSrv namese…

[附源码]Python计算机毕业设计钓鱼爱好者交流平台Django(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等…

老照片修复清晰?父母以前的老照片还能修复吗?

父母结婚时拍摄的结婚照片,现在大概快四十年了,因为保存不善,导致照片泛黄,严重模糊。因为这是父母年轻的时候唯一保留下来的,对我们来说意义重大,所以想要修复照片可以实现吗? 有些照相馆是提…

论文投稿指南——中国(中文EI)期刊推荐(第6期)

🚀 EI是国际知名三大检索系统之一,在学术界的知名度和认可度仅次于SCI!🎄🎈 【前言】 想发论文怎么办?手把手教你论文如何投稿!那么,首先要搞懂投稿目标——论文期刊。其中&#xf…

ADI Blackfin DSP处理器-BF533的开发详解51:Bin_Conver (图像二值变换处理)(含源码)

硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP软件 硬件链接 功能介绍 代码实现了图像二值变换处理,代码运行时,会通过文件系统打开工程文件根目下" …/ImageView"路径中的…

阿里云DataWorks荣获DAMA中国数据治理优秀产品奖

DAMA(国际数据管理协会)是一个全球性的专业组织,协会自1980年成立以来,一直致力于数据管理和数字化的研究、实践及相关知识体系的建设,先后发行了《DAMA 数据管理字典》和《DAMA数据管理的知识体系》等,该知…

C/C++程序的断点调试 - Visual Studio Code

本文以Visual Studio Code为例,简述C/C程序断点调试的基本方法和过程。其它的IDE环境,大同小异。 本文引用自作者编写的下述图书; 本文允许以个人学习、教学等目的引用、讲授或转载,但需要注明原作者"海洋饼干叔 叔";本…

视频特效如何制作?快把这些方法收好

小伙伴们平时刷短视频的时候,有没有发现一些短视频的效果很惊艳。这些惊艳的效果,大部分都是在视频中添加的一些动画特效。那你们知道手机视频怎么添加特效吗?为了帮助大家解决这个问题,接下来我就将为大家分享几种添加特效的方法…

架构高可用之限流-抽刀断水水更流

上图中是一个水坝泄洪的图,那么,对于软件系统,如何使用最方便的可编程的方式增加服务限流能力呢? 下面我结合一个常规的springCloud项目实践了一把,希望他山之石可以攻玉。 背景 简单使用jmeter,压20个并…

FL Studio21.0.0完整版最高版本升级功能有哪些?

支持苹果 Silicon 芯片 – 对苹果 Silicon 芯片(M1 芯片以及相关 CPU)的原生 ARM 代码支持,但请注意: NewTime、NewTone 和一些 DirectWave 采样格式的导入功能尚未完全重构可能会有问题。 FL Studio-win21中文更新下载如下: htt…

新通药物被暂缓审议:科创属性遭质疑,招股书“数据打架”

12月12日,上海证券交易所披露的信息显示,西安新通药物研究股份有限公司(下称“新通药物”)的首发申请被暂缓审议。据贝多财经了解,新通药物于2021年12月6日在科创板递交招股书,计划募资12.79亿元。 科创板上…

识破贷后资金归集——关联网络

近几年,金融机构为了扩大信贷规模,抢占市场份额,通过贷款将贷款发放给无法直接通过金融机构获得贷款的个人或者企业,但这也给金融机构带来了多重风险。 首先,我们来看下资金归集是什么。所谓资金归集,是银…

GCSE英语语言考试-语言和结构

Language语言 Example of a simile from The Hunger Games, Suzanne Collins 《饥饿游戏》中的比喻例子,苏珊娜-柯林斯的作品 When talking about language in prose fiction, there are a number of things you could look for: 在谈论散文小说的语言时&#xff0c…

如何在XMLMap端口修改字段映射?

在使用知行EDI系统的过程中,我们经常会用到XMLMap端口进行数据转化,XMLMap端口可以通过拖拽方式进行字段取值映射,同时也可以写代码添加字段对应的取值及判断条件。有时在完成映射后,发现源文件/目标文件待映射的字段和段落需要添…

安卓玩机搞机技巧综合资源-----闲置手机当摄像头 当监控 上网课必备 多软件评测【十四】

接上篇 安卓玩机搞机技巧综合资源------如何提取手机分区 小米机型代码分享等等 【一】 安卓玩机搞机技巧综合资源------开机英文提示解决dm-verity corruption your device is corrupt. 设备内部报错 AB分区等等【二】 安卓玩机搞机技巧综合资源------EROFS分区格式 小米红…