世界上一成不变的东西,只有“任何事物都是在不断变化的”这条真理。 —— 斯里兰卡

vivado学习六】 Vivado综合

在 Flow Navigator 中点击设置, 然后选择Synthesis,或者 selectFlow > Settings > Synthesis Settings。如图1所示:

1 综合约束

在“设置”对话框的“约束”部分下,选择“默认约束设置”作为活动约束设置;包含在Xilinx设计约束(XDC)文件中捕获的设计约束的一组文件,可以将其应用于设计中。两种类型的设计约束是:

1>物理约束:这些约束定义引脚的位置以及单元(例如Block RAM,LUT,触发器和设备配置设置)的绝对或相对位置。

2>时序约束:这些约束定义了设计的频率要求。由于没有时序限制,Vivado设计套件仅针对线长度和布局拥堵来优化设计。

2 综合策略

1>Defaults(默认设置)

2>RuntimeOptimized

执行较少的时序优化,并消除一些RTL优化以减少综合运行时间。

3>AreaOptimized_high

执行常规面积优化,包括强制执行三进制加法器,在比较器中使用新阈值以使用进位链以及实现面积优化的多路复用器。

4>AreaOptimized_medium

执行常规面积优化,包括更改控制集优化的阈值,强制执行三进制加法器,将推理的乘法器阈值降低到DSP模块,将移位寄存器移入BRAM,在比较器中使用较低阈值以使用进位链,以及进行区域优化的MUX操作。

5>AlternateRoutability

一组提高路由能力的算法(较少使用MUXF和CARRY)。

6>AreaMapLargeShiftRegToBRAM

检测大型移位寄存器,并使用专用的Block RAM实现它们。

7>AreaMultThresholdDSP

专用DSP块推断的下限阈值。

8>FewerCarryChains

较高的操作数大小阈值以使用LUT代替进位链。

3 其他选项

-flatten_hierarchy:确定Vivado综合如何控制层次结构。

- none:指示综合工具不要展平层次结构。综合的输出与原始RTL具有相同的层次结构。

-full :指示工具完全展平层次结构,仅保留顶层。

-rebuilt:设置后,重新构建允许综合工具展平层次结构,执行综合,然后基于原始RTL重建层次结构。该值使QoR受益于跨边界优化,其最终层次类似于RTL,以便于分析。

-gated_clock_conversion:启用和禁用综合工具转换时钟逻辑的功能。

-bufg: 控制工具在设计中推断出多少BUFG。当设计网表中的其他BUFG对合成过程不可见时,Vivado设计工具将使用此选项。该工具可以推断出指定的数量,并跟踪RTL中实例化的BUFG数量。例如,如果-bufg选项设置为12,并且在RTL中实例化了三个BUFG,则Vivado综合工具最多可以推断出另外九个BUFG。

-fanout_limit:指定信号在开始复制逻辑之前必须驱动的负载数。此全局限制是一般指南,当工具确定有必要时,可以忽略该选项。

-retiming :布尔选项<on | off>通过跨组合门或LUT自动移动寄存器(寄存器平衡)来提供选项,以提高时钟内顺序路径的电路性能。它保持了电路的原始行为和等待时间,并且不需要更改RTL源。默认为关闭。

-fsm_extraction : 控制综合如何提取和映射有限状态机。 FSM_ENCODING更详细地描述了这些选项。

FSM_ENCODING可以放在状态机寄存器上。合法的值是“ one_hot”,“ sequential”,“johnson”,“ gray”,“ auto”和“ none”。“ auto”值是默认值,并允许该工具确定最佳编码。可以在RTL或XDC中设置此属性。

-keep_equivalent_registers :防止合并具有相同输入逻辑的寄存器。

-resource_sharing:设置不同信号之间的算术运算符共享。这些值是自动的,打开的和关闭的。自动值集执行资源共享以取决于设计时间。

-control_set_opt_threshold: 将时钟使能优化的阈值设置为较少的控制集。默认值为自动,这意味着该工具将根据目标设备选择一个值。支持任何正整数值。

给定值是工具将控制集移入寄存器的D逻辑所需的扇出数量。如果扇出大于该值,则该工具尝试使该信号驱动该寄存器上的control_set_pin。

-no_lc:选中后,此选项将关闭LUT合并。

-no_srlextract:选中后,此选项将关闭完整设计的SRL提取,以便将其实现为简单寄存器。

-shreg_min_size:推断SRL的阈值。默认设置为3。这将设置顺序元素的数量,这些元素将导致推断固定延迟链的SRL(静态SRL)。策略也将此设置定义为5和10。

-max_bram:描述设计中允许的最大块RAM数量。通常在设计中有黑匣子或第三方网表时使用此选项,并允许设计人员为这些网表节省空间。

-max_uram:设置设计中允许的最大UltraRAM(UltraScale+™设备块RAM)块。默认设置为-1表示该工具选择指定零件允许的最大数量。

-max_dsp:描述设计中允许的最大块DSP数量。通常在设计中有黑匣子或第三方网表时使用,并为这些网表留出空间。默认设置为-1表示该工具选择指定零件允许的最大数量。

-max_bram_cascade_height:控制该工具可以级联的BRAM的最大数量。默认设置为-1表示该工具选择指定零件允许的最大数量。

-max_uram_cascade_height:控制该工具可以级联的UltraScale+设备UltraRAM块的最大数量。默认设置为-1表示该工具选择指定零件允许的最大数量。

-cascade_dsp: 控制如何实现总和DSP模块输出中的加法器。默认情况下,使用块内置加法器链计算DSP输出的总和。价值树迫使总和在结构中实现。值是:auto,tree和force。默认为自动。

-no_timing_driven: (可选)禁用默认的时序驱动综合算法。这导致减少了综合运行时间,但忽略了时序对综合的影响。

-sfcu:在单文件编译单元模式下运行综合。

-assert: 启用要评估的VHDL断言语句。故障或错误的严重性级别会停止综合流程并产生错误。警告的严重性级别会生成警告。

tcl.pre和tcl.post选项是在合成之前和之后立即运行的Tcl文件的挂钩。

4 Tcl Commands to Get Property

get_property DIRECTORY [current_project]
get_property DIRECTORY [current_run]

往期推荐【Vivado 学习一】 时钟约束
【Vivado 学习二】 IO延时约束
【Vivado 学习三】 时钟网络分析
【Vivado 学习四】 跨时钟域路径分析
【Vivado 学习五】 时序分析
更多精彩推荐,请关注我们

【vivado学习六】 Vivado综合相关推荐

  1. Docker学习六:综合实践

    前言 本次学习来自于datawhale组队学习: 教程地址为: https://github.com/datawhalechina/team-learning-program/tree/master/ ...

  2. vivado 亚稳态_【vivado学习五】时序分析

    想一千次,不如去做一次.华丽的跌倒,胜过无谓的徘徊. [vivado学习五]时序分析 典型的时序模型由发起寄存器.组合逻辑和捕获寄存器3部分组成,如图1所示形成了三条时钟路径:原时钟路径(Source ...

  3. vivado学习第二 串口通信之奇偶校验位

    vivado学习第二 串口通信之奇偶校验位 奇偶校验位  奇偶校验位分为奇数校验位和偶数校验位,奇数和偶数的判断标准是依据发送一串或者一帧数据中"1"的个数.  奇数校验:发送的数 ...

  4. 前端学习六——html5+CSS3

    前端学习六--html5+CSS3 HTML5 H5新增语义标签 多媒体标签 audio音频标签 audio音频标签常见属性 音频标签语法 视频标签video 视频标签语法 H5新增input表单.表 ...

  5. linux实验六磁盘综合管理

    linux实验六磁盘综合管理 ##具体的实验步骤解释在底部!!! 实验名称:磁盘综合管理 实验时间:2022 年 4 月 19 日 实验地点:电子阅览室一 实验目的: 1. 掌握fdisk.mount ...

  6. C语言程序设计入门学习六步曲,六步带你入门C语言

    C语言是面向过程的,而C++是面向对象的 C和C++的区别:         C是一个结构化语言,它的重点在于算法和数据结构.C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理 ...

  7. Apollo代码学习(六)—模型预测控制(MPC)_follow轻尘的博客-CSDN博客_mpc代码

    Apollo代码学习(六)-模型预测控制(MPC)_follow轻尘的博客-CSDN博客_mpc代码

  8. 艾伟:C#多线程学习(六) 互斥对象

    本系列文章导航 C#多线程学习(一) 多线程的相关概念 C#多线程学习(二) 如何操纵一个线程 C#多线程学习(三) 生产者和消费者 C#多线程学习(四) 多线程的自动管理(线程池) C#多线程学习( ...

  9. C#多线程学习(六) 互斥对象

    C#多线程学习(六) 互斥对象 原文链接:http://kb.cnblogs.com/page/42533/ 本系列文章导航 C#多线程学习(一) 多线程的相关概念 C#多线程学习(二) 如何操纵一个 ...

最新文章

  1. for ie无效 in js_关于js中for in的缺陷浅析
  2. 【转】DOS下文件传输---初识TCP网络编程改版
  3. hutool中身份证工具-IdcardUtil
  4. 大气校正后的ndvi_Sentinel2 L1C下载、大气校正、重采样
  5. python编程(再述rpc)
  6. 深入理解C# 3.x的新特性(5):Object Initializer 和 Collection Initializer
  7. Linux Sed简介
  8. 阿里云云计算 19 块存储的使用
  9. 现代通信原理思维导图--第二章 确知信号
  10. 避免踩坑--网传二进制数值和点分十进制ip之间的转换
  11. HDU - 1728 逃离迷宫 【BFS】
  12. STM32个人笔记--GPIO框图
  13. destoon平台供应或者商城详情页直接链接到会员的商铺上
  14. 275. H指数 II
  15. C语言递归函数 写一个程序实现一个函数PrintN,使得传入一个正整数为N的参数后,能顺序打印从1到N的全部正整数
  16. win10重置进度条不动了_Windows10系统重置时卡死的处理方法
  17. 程序员的桌面是什么样的?美工:那...不是我的桌面吗?
  18. STF环境搭建运行及踩坑记录
  19. 我的 2019 总结
  20. 电影《流浪地球》的一些有趣的细节

热门文章

  1. Flutter 单元测试
  2. -tomcat的介绍
  3. 为什么有些30岁的程序员代码敲着敲着就创业了
  4. Perl模块使用 = 简短例子代码集合!
  5. 云原生|斯人若彩虹,遇到方知有【Python代码实现】
  6. OpenGL光和材质
  7. Spark on YARN - Clinet模式运行spark报错问题
  8. QDateTime相关格式
  9. 修改手游登录服务器,手游[有侠气]一键启动服务端+客户端+GM管理运营后台+VIP修改+启动教程等...
  10. Micro-cap导入元件库