深度解读Vivado之Synthesis

描述

在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

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分