0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

深度解读Vivado之Synthesis

FPGA之家 来源:FPGA之家 作者:FPGA之家 2021-06-01 11:20 次阅读

FPGA设计里,设计仿真完成RTL代码设计后便是交给设计套件进行综合及布局布线。在综合过程里,Vivado里提供的参数选项有点儿多,今天闲暇抽空梳理下。

-flatten_hierarchy

该参数提供三个可选项:

full:将我们整个设计层次打平,只保留顶层设计,对模块间进行边界优化(可以理解为我们整个设计被塞到一个Module里)。

none:完全保留设计原始层次,不执行任何边界优化。该选项工具进行的优化最少,消耗的资源最多,层次保留最完整。

rebuild:在进行综合时将原始设计打平,执行边界优化,但将网表文件按照原始设计层次显示。

对于在Verilog中使用的“keep_hierarchy”属性优先级高于flatten_hierarchy。

gated_clock_conversion

ASIC中门控时钟用的比较多,而在FPGA设计中,门控时钟并不是专用时钟模块生成,而且Vivado并不会对门控时钟插入BUFG,在设计中应极力避免。该选项可将门控时钟信号转换为使能信号,从而避免门控时钟的使用。该选项存在三个参数:

off:不允许门控时钟转换。

on:允许门控时钟转换,Verilog里添加“gated_clocked”的门控时钟将会自动转换。

auto:Verilog中添加“gated_clocked”的门控时钟或者工具检测到门控时钟而且有相应可用的时钟约束选项时将进行门控时钟转换。

当门控时钟负载较少且时钟频率并不高时可以适当使用门控时钟,但建议手动插入BUFG。

-fanout_limit

该选项用于设定信号所能承受的最大负载。该选项对于设计中的控制信号,如置位,复位和使能信号是无效的。

-fanout_limit只是一个宏观指导原则,并非强制命令。如果需要很明确的对某个信号降扇出,应使用MAX_FANOUT而不是-fanout_limit。

MAX_FANOUT可应用于RTL代码中,也可应用于XDC中,优先级高于-fanout_limit。当需要控制扇出的寄存器与负载不在同一层次时,flatten_hierarchy不要设置为none模式,否则将会无法生效。

-directive

Vivado提供的一些优化策略:

RuntimeOptimized:执行较少的时序优化及RTL优化以降低运行时间。

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

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

AlternateRoutability:通过算法提升路由能力(使用更少的MUXF和CARRYs)。

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

AreaMultThresholdDSP:减少DSP的推断及使用。

FewerCarryChains:通过LUT使用降低进位链的使用。

-retiming

在不改变原始设计及功能时通过调整LUT和寄存器位置来进行时序优化调整。

-fsm_extraction

设定状态机编码方式,默认为auto,此时Vivado会自行决定最佳的编码方式。

-keep_equivalent_registers

当勾选时,对于输入的同源寄存器,综合时将会被合成一个。如下例所示:

always@(posedge clk)begin rx《=a; ry《=a; r《=b; resa《=rx & r; resb《=ry^y;end

当该选项不勾选时,rx,ry将会被合并成一个寄存器。

-resource_shring

对算数运算符通过资源共享优化设计资源,有三个可选项:auto、on、off。设置为auto时,工具会根据时序要求进行调整。

-control_set_opt_threshold

触发器的控制集由时钟信号,复位/置位吸纳后和使能信号构成,通常只有{clk,set/rst,ce}均相同的触发器才可以被放在一个SLICE中。该选项将时钟使能优化的阈值设置为较少的控制集。默认值为自动,这意味着该工具将根据目标设备选择一个值。支持任何正整数值。

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

-no_lc

使能该选项时,工具将不会尝试LUT的整合。虽然LUT整合能够降低LUT的使用,但也有可能导致布局布线拥塞。当“LUT as Logic”超过15%时,建议勾选该选项。

-no_slrextract -shreg_min_size

移位寄存器可以被综合成LUT实现。-shreg_min_size用于管理移位寄存器是否映射为LUT,默认值为3.当移位寄存器的深度不超过-shereg_min_size时,最终采用移位寄存器实现,否则采用FF+LUT+FF形式实现。

-no_slrextract用于阻止工具将移位寄存器映射为LUT。优先级高于-shreg_min_size。

其他选项我们基本就用不上了,若需使用可参照ug901手册。

编辑:jq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 移位寄存器
    +关注

    关注

    2

    文章

    181

    浏览量

    22017
  • 触发器
    +关注

    关注

    14

    文章

    1677

    浏览量

    60402
  • LUT
    LUT
    +关注

    关注

    0

    文章

    49

    浏览量

    12396
  • 代码
    +关注

    关注

    30

    文章

    4555

    浏览量

    66751
  • xdc
    xdc
    +关注

    关注

    1

    文章

    23

    浏览量

    5870

原文标题:乱花渐欲迷人眼—Vivado之Synthesis

文章出处:【微信号:zhuyandz,微信公众号:FPGA之家】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    Vivado时序问题分析

    有些时候在写完代码之后呢,Vivado时序报红,Timing一栏有很多时序问题。
    的头像 发表于 01-05 10:18 396次阅读

    VIVADO软件使用问题总结

    【关键问题!!!!重要!!!】VIVADO会在MESSAGE窗口出提示很多错误和警告信息!
    的头像 发表于 12-15 10:11 843次阅读
    <b class='flag-5'>VIVADO</b>软件使用问题总结

    什么是Logic SynthesisSynthesis的流程

    什么是Logic Synthesis?Logic Synthesis用于将输入的高级语言描述(如HDL、verilog)转换为门级电路的网络表示。
    的头像 发表于 10-24 15:56 670次阅读
    什么是Logic <b class='flag-5'>Synthesis</b>?<b class='flag-5'>Synthesis</b>的流程

    Vivado设计套件用户:使用Vivado IDE的指南

    电子发烧友网站提供《Vivado设计套件用户:使用Vivado IDE的指南.pdf》资料免费下载
    发表于 09-13 15:25 5次下载
    <b class='flag-5'>Vivado</b>设计套件用户:使用<b class='flag-5'>Vivado</b> IDE的指南

    vivado软件和modelsim软件的安装方法

    本文详细介绍了vivado软件和modelsim软件的安装,以及vivado中配置modelsim仿真设置,每一步都加文字说明和图片。
    的头像 发表于 08-07 15:48 1703次阅读
    <b class='flag-5'>vivado</b>软件和modelsim软件的安装方法

    如何实现基于FPGA Vivado的74系列IP封装呢?

    双击桌面图标打开Vivado 2017.2,或者选择开始>所有程序>Xilinx Design Tools> Vivado 2017.2>Vivado 2017.2;
    发表于 07-30 09:39 444次阅读
    如何实现基于FPGA <b class='flag-5'>Vivado</b>的74系列IP封装呢?

    Vivado调用Modelsim仿真

    Modelsim是十分常用的外部仿真工具,在Vivado中也可以调用Modelsim进行仿真,下面将介绍如何对vivado进行配置并调用Modelsim进行仿真,在进行仿真之前需要提前安装Modelsim软件。
    的头像 发表于 07-24 09:04 1994次阅读
    <b class='flag-5'>Vivado</b>调用Modelsim仿真

    vivado仿真流程

    vivado开发软件自带了仿真工具,下面将介绍vivado的仿真流程,方便初学者进行仿真实验。
    的头像 发表于 07-18 09:06 2543次阅读
    <b class='flag-5'>vivado</b>仿真流程

    如何在Vivado中添加时序约束呢?

    今天介绍一下,如何在Vivado中添加时序约束,Vivado添加约束的方法有3种:xdc文件、时序约束向导(Constraints Wizard)、时序约束编辑器(Edit Timing Constraints )
    的头像 发表于 06-26 15:21 2228次阅读
    如何在<b class='flag-5'>Vivado</b>中添加时序约束呢?

    如何在Post Synthesis工程中加入XCI文件

    是创建并定制 IP,生成这些 IP 的 output product (包括 IP 的 dcp);然后把第三方生成的网表文件和 IP XCI 的相关文件都加到 Vivado 的 post-synthesis 工程中。
    的头像 发表于 06-08 15:43 760次阅读
    如何在Post <b class='flag-5'>Synthesis</b>工程中加入XCI文件

    深度学习编译器之Layerout Transform优化

    继续深度学习编译器的优化工作解读,本篇文章要介绍的是OneFlow系统中如何基于MLIR实现Layerout Transform。
    的头像 发表于 05-18 17:32 413次阅读

    Vivado布线和生成bit参数设置

    本文主要介绍Vivado布线参数设置,基本设置方式和vivado综合参数设置基本一致,将详细说明如何设置布线参数以优化FPGA设计的性能,以及如何设置Vivado压缩BIT文件。
    的头像 发表于 05-16 16:40 3239次阅读
    <b class='flag-5'>Vivado</b>布线和生成bit参数设置

    简述Vivado中的Elaborate的作用

    Vivado的界面中,有个RTL ANALYSIS->Open Elaborated Design的选项,可能很多工程师都没有使用过。因为大家基本都是从Run Synthesis开始的。
    的头像 发表于 05-05 16:00 906次阅读
    简述<b class='flag-5'>Vivado</b>中的Elaborate的作用

    Vivado中实现ECO功能

    关于 Tcl 在 Vivado中的应用文章从 Tcl 的基本语法和在 Vivado 中的 应用展开,继上篇《用 Tcl 定制 Vivado 设计实现流程》介绍了如何扩展甚 至是定制 FPGA
    的头像 发表于 05-05 15:34 1796次阅读
    在<b class='flag-5'>Vivado</b>中实现ECO功能

    用TCL定制Vivado设计实现流程

    今天推出Xilinx已发布的《Vivado使用误区与进阶》系列:用TCL定制Vivado设计实现流程。
    的头像 发表于 05-05 09:44 725次阅读
    用TCL定制<b class='flag-5'>Vivado</b>设计实现流程