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

这篇具有很好参考价值的文章主要介绍了Xilinx Vivado的RTL分析(RTL analysis)、综合(synthesis)和实现(implementation)的区别?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、一般流程

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

vivado carry4,FPGA设计与调试,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语句将两个输入相加。这一语句转化成逻辑电路,很明显就是一个加法器。

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

vivado carry4,FPGA设计与调试,fpga开发

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

vivado carry4,FPGA设计与调试,fpga开发

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


3、综合(synthesis)

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

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

vivado carry4,FPGA设计与调试,fpga开发

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

vivado carry4,FPGA设计与调试,fpga开发

        好家伙,出来一大堆乱七八糟的,这跟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的数量远不止这些,所以需要根据用户设定的策略(面积优化、速度优化)来找到具体的逻辑资源。

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

vivado carry4,FPGA设计与调试,fpga开发

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

vivado carry4,FPGA设计与调试,fpga开发

        把高亮的部分放大观察:

vivado carry4,FPGA设计与调试,fpga开发

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

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

vivado carry4,FPGA设计与调试,fpga开发

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

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

到了这里,关于Xilinx Vivado的RTL分析(RTL analysis)、综合(synthesis)和实现(implementation)的区别?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Verilog综合(synthesis)过程中出现 found timing loop.的critical warning

     “found timing loop”概述         found timing loop出现在critical warning警告中,是不可忽略的警告,如果found timing loop不消除,代码最终将无法执行。found timing loop通常是在模块例化过程中将同一模块的input与output直接相连;或者是由于模块中的组合逻辑形成了latch。  “found t

    2024年02月11日
    浏览(39)
  • Vivado仿真卡在executing analysis and compilation step阶段

    目录 一、问题描述 二、问题现象 三、解决办法 1. 解决办法一(临时解决) 2.解决方法二(终极解决) 3.解决方法三(终极解决) 四、正常仿真 用Vivado进行仿真时,卡在executing analysis and compilation step阶段,无法继续进行仿真。 1,vivado正常仿真后,重启仿真(relaunch_sim )。

    2024年02月13日
    浏览(47)
  • Vivado联合modelsim仿真卡在executing analysis and compilation step阶段

    vivado使用modelsim仿真老是会有问题,我每次都会单纯在验证到底是哪个工具的问题上花好几天时间,总结下来几个点。 首先,如果一直卡住,那一定是有问题,不用再等了。如果不能仿真,那么从第一步开始检查,也就是是否关联modelsim成功,一定一定要仔细检查,因为默认

    2024年02月13日
    浏览(84)
  • 典型相关分析(Canonical Correlation Analysis,CCA)原理及Python、MATLAB实现

    随着对CCA的深入研究,是时候对CCA进行一下总结了。 本菜鸡 主要研究方向为故障诊断,故会带着从应用角度进行理解。 从字面意义上理解CCA,我们可以知道,简单说来就是对不同变量之间做相关分析。较为专业的说就是,一种度量两组变量之间相关程度的 多元统计方法 。

    2023年04月08日
    浏览(35)
  • Xilinx FPGA开发环境vivado使用流程

    第一步:点击Add Sources按钮 第二步:选择add or create design sources按钮,即添加设计文件 第三步:选择create file 文件新建完成后: 此时可以定义I/O端口,我们选择自己在程序中编写。 第四步:在编辑器中编写verilog程序 XDC文件里主要是完成管脚的约束,时钟的约束,以及组的约

    2024年02月03日
    浏览(58)
  • 关于 xilinx sdk软核elf文件与xilinx vivado bit文件合并的方法

    xilinx 软核elf文件与xilinx vivado bit文件合并的方法 一、背景 在版本的Vivado 配套的 软件工具是 SDK ,当vivado中使用软核时候,需要将软核生成的elf文件与vivado生成的bit文件合并成一个最终的BIT文件,然后再将此BIT文件下载到FPGA中,或者转化为MCS文件固化到Flash中,这样才不用每

    2024年02月08日
    浏览(53)
  • XILINX VIVADO2018.2官方下载全教程记录.

    毕设涉及FPGA,准备记录一下准备过程。 首先是Vivado的下载过程。 1.进入赛灵思下载官网。(https://www.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/vivado-design-tools/archive.html) 2.注册用户(已有账号跳过) 按照指示注册好账号(过于简单就不说了。。) 3.登陆上账号,再次

    2024年02月13日
    浏览(86)
  • FPGA时钟资源与设计方法——Xilinx(Vivado)

    1.时钟资源包括:时钟布线、时钟缓冲器(BUFGBUFRBUFIO)、时钟管理器(MMCM/PLL)。 2.时钟类型有三种:全局时钟,可以驱动整个内核上的同步逻辑;局部时钟,可以驱动特定和相邻区域的逻辑;IO时钟,可以驱动某个IO的特定逻辑。 3.混合模式时钟管理器(MMCM)和数字时钟管理

    2024年02月22日
    浏览(53)
  • Vivado | FPGA开发工具(Xilinx系列芯片)

    官网下载地址 最详细的Vivado安装教程 Vivado的安装以及使用_入门

    2024年02月12日
    浏览(59)
  • Xilinx Vivado 驱动问题:无法连接到 JTAG 接口

    Xilinx Vivado 驱动问题:无法连接到 JTAG 接口 在使用 Xilinx Vivado 进行 FPGA 开发时,有时会遇到无法连接到 JTAG 接口的问题。这可能导致无法进行芯片编程、调试和调试等关键任务。本文将介绍一些常见的原因和解决方法,帮助您解决此类问题。 硬件连接检查: 首先,确保您的

    2024年02月07日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包