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

news/2025/2/11 6:29:42/

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.ppmy.cn/news/397238.html

相关文章

xelatex 中文排版概述与texlive安装

tex、latex、xetex、xelatex TeX 不仅是一个排版程序,而且是一种程序语言。 LaTeX 就是用这种语言写成的一个“TeX 宏包”,它扩展了 TeX 的功能,使我们很方便的逻辑的进行创作而不是专心于字体,缩进这些烦人的东西。 XeTex:TeX语言…

一系列面试题

请你分别划划OSI的七层网络结构图,和TCP/IP的五层结构图? OSI的七层网络结构图,和TCP/IP的五层结构图 OSI OSI是Open System Interconnect的缩写,意为开放式系统互联。在OSI出现之前,计算机网络中存…

软件测试工程师笔试题

软件测试题目 一、 判断题 (每题2分,20) 1、软件测试就是为了验证软件功能实现的是否正确,是否完成既定目标的活动,所以软件测试在软件工程的后期才开始具体的工作。 (初级) ( ) 2、发现错误…

ip地址和子网掩码的相与计算规则

附加一点:根据ip和网关计算网络号:ip和网关的相与规则:1与1相与是1 1与0相与是0 0与1相与是0 0与0相与还是0 一个B类地址,它的子网掩码为255.255.224.0,能划分多少个子网 一个B类地址,它的子网掩码为255.2…

软件测试工程师常见面试题和笔试题

1.白箱测试和黑箱测试是什么?什么是回归测试? 2.单元测试、集成测试、系统测试的侧重点是什么? 3.设计用例的方法、依据有那些? 4.一个测试工程师应具备那些素质和技能? 5.集成测试通常都有那些策略? 6.你用过的测试工…

精英865G-M8内存供电维修一例

转载自:http://hi.baidu.com/wbpc/blog/item/5b3ae2a5475ea99bd14358f8.html 如果看不到图片,请移步我的qq空间查看原文,因为没有那么多时间上传图片到这里,请原谅。http://user.qzone.qq.com/434678882/ 今日接到病机一台&#x…

docker的安装与使用

文档与安装 基本安装 官方的文档走就行了, 本文罗列一些简单步骤 https://docs.docker.com/install/linux/docker-ce/ubuntu/#prerequisites 1,安装 前如果之前有安装 则删除 sudo apt-get remove docker docker-engine docker.io 2,查看自己的是哪个版本,官网会…

linux查看gpu温度_科学网—linux查看CPU温度 - 杜波的博文

1、使用命令sensors (管理员用户,主节点) [rootconsole ~]# sensors w83627hf-isa-0a00 Adapter: ISA adapter VCore 1: 1.15 V (min 0.00 V, max 0.00 V) ALARM VCore 2: 1.15 V (min 0.00 V, max 0.00 V) ALARM 3.3V: 3.22 V (min…