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

    文章

    258

    浏览量

    22210
  • 触发器
    +关注

    关注

    14

    文章

    1995

    浏览量

    61003
  • LUT
    LUT
    +关注

    关注

    0

    文章

    49

    浏览量

    12474
  • 代码
    +关注

    关注

    30

    文章

    4717

    浏览量

    68197
  • xdc
    xdc
    +关注

    关注

    1

    文章

    24

    浏览量

    5910

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

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

收藏 人收藏

    评论

    相关推荐

    Vivado使用小技巧

    有时我们对时序约束进行了一些调整,希望能够快速看到对应的时序报告,而又不希望重新布局布线。这时,我们可以打开布线后的dcp,直接在Vivado Tcl Console里输入更新后的时序约束。如果调整
    的头像 发表于 10-24 15:08 152次阅读
    <b class='flag-5'>Vivado</b>使用小技巧

    Vivado编辑器乱码问题

    ,但是在Vivado里面打开用sublime写的代码之后,经常出现中文乱码,让人很不舒服。究其原因就是一般来说第三方的编辑器是采用utf8的编码方式,而vivado的text editor不是这种方式。
    的头像 发表于 10-15 17:24 303次阅读
    <b class='flag-5'>Vivado</b>编辑器乱码问题

    Vivado 2024.1版本的新特性(2)

    从综合角度看,Vivado 2024.1对SystemVerilog和VHDL-2019的一些特性开始支持。先看SystemVerilog。
    的头像 发表于 09-18 10:34 506次阅读
    <b class='flag-5'>Vivado</b> 2024.1版本的新特性(2)

    Vivado 2024.1版本的新特性(1)

    Vivado 2024.1已正式发布,今天我们就来看看新版本带来了哪些新特性。
    的头像 发表于 09-18 10:30 712次阅读
    <b class='flag-5'>Vivado</b> 2024.1版本的新特性(1)

    解读 MEMS 可编程 LVCMOS 振荡器 SiT1602 系列:精准频率的创新

    解读 MEMS 可编程 LVCMOS 振荡器 SiT1602 系列:精准频率的创新
    的头像 发表于 08-09 15:39 265次阅读
    <b class='flag-5'>解读</b> MEMS 可编程 LVCMOS 振荡器 SiT1602 系列:精准频率的创新<b class='flag-5'>之</b>选

    解读 MEMS 可编程 LVCMOS 振荡器 SiT8008 系列:精准与灵活的时脉

    解读 MEMS 可编程 LVCMOS 振荡器 SiT8008 系列:精准与灵活的时脉
    的头像 发表于 08-09 10:29 249次阅读
    <b class='flag-5'>解读</b> MEMS 可编程 LVCMOS 振荡器 SiT8008 系列:精准与灵活的时脉<b class='flag-5'>之</b>选

    深度解读 VCXO VG7050CDN:可变晶体振荡器的卓越

    深度解读 VCXO VG7050CDN:可变晶体振荡器的卓越
    的头像 发表于 07-24 10:58 304次阅读

    深度解读广汽全固态电池技术

    4月12日,在“科技视界”广汽科技日活动上,广汽集团发布了被称为“全球动力电池领域竞争的技术高地”的全固态动力电池技术,广汽埃安电池研发部负责人李进对此项技术进行了解读
    的头像 发表于 04-15 09:15 486次阅读
    <b class='flag-5'>深度</b><b class='flag-5'>解读</b>广汽全固态电池技术

    Vivado Synthesis中怎么使用SystemVerilog接口连接逻辑呢?

    SystemVerilog 接口的开发旨在让设计中层级之间的连接变得更加轻松容易。 您可以把这类接口看作是多个模块共有的引脚集合。
    的头像 发表于 03-04 15:25 842次阅读
    在<b class='flag-5'>Vivado</b> <b class='flag-5'>Synthesis</b>中怎么使用SystemVerilog接口连接逻辑呢?

    OneFlow Softmax算子源码解读BlockSoftmax

    写在前面:笔者这段时间工作太忙,身心俱疲,博客停更了一段时间,现在重新捡起来。本文主要解读 OneFlow 框架的第二种 Softmax 源码实现细节,即 block 级别的 Softmax。
    的头像 发表于 01-08 09:26 628次阅读
    OneFlow Softmax算子源码<b class='flag-5'>解读</b><b class='flag-5'>之</b>BlockSoftmax

    如何禁止vivado自动生成 bufg

    Vivado中禁止自动生成BUFG(Buffered Clock Gate)可以通过以下步骤实现。 首先,让我们简要了解一下什么是BUFG。BUFG是一个时钟缓冲器,用于缓冲输入时钟信号,使其更稳
    的头像 发表于 01-05 14:31 1824次阅读

    Vivado时序问题分析

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

    VIVADO安装问题解决

    vivado出现安装问题刚开始还以为是安装路径包含中文空格了,重装的注意了一下,发现还是这个问题。。。。后来又一顿操作猛如虎,终于发现了问题。出这个问题的原因是vivado压缩包解压的路径包含中文了把解压文件放到不含中文的地方,再重新安装,安装路径也不能含中文。然后。。。
    发表于 12-22 10:56 0次下载

    大咖解读SafeVideo

    ——SafeVideo,究竟有什么不一样的地方呢?一起来看看吧~ 大咖解读 Q A 如何通过软件技术来应对硬盘故障? 由于硬盘损坏不可避免,尤其是硬盘的坏道,所以业界通常都是用RAID技术来应对。RAID是数据块经过XOR得到校验块,从而提供数
    的头像 发表于 12-19 16:20 520次阅读
    大咖<b class='flag-5'>解读</b><b class='flag-5'>之</b>SafeVideo

    VIVADO软件使用问题总结

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