- 1.1 综合方法
- 1.2 使用Sythesis
- 1.2.1 Sythesis设置
- 1.2.2 创建运行策略
- 1.2.3 控制文件编译顺序
- 1.2 运行Synthesis
- 1.2.1 使用Tcl运行Synthesis
- 1.2.2 RTL synthesis的多线程处理
- 参考文档
综合是将rtl指定的设计转换为门级表示的过程
1.1 综合方法Vivado,可以:
- 创建以及保存策略。策略是命令选项的配置,您可以将其应用于设计运行以进行综合或实现。
- 对综合和实现运行进行排队,以便在多处理器机器上顺序或同时运行。
- 监视综合或时间过程,查看log报告。
-
Constraints(约束):选择默认的约束设置,对应工程种添加了的.XDC文件。包含两种类型的约束:
- Physical constraints: 物理约束。包含引脚布置、cells(如RAMs,LUTs,Flip-Flops)的布置、器件配置相关设置。
- Timing constraints: 时序约束。定义设计的频率要求,如果没有要求,Vivado仅对wire的长度和布局进行优化。
-
Options-Strategy选项:有一些已经定义好的策略可选,自己选择定义的策略。
各策略选项的默认值:
-
策略的选项:
-
-flatten_hierarchy
:确定Vivado合成如何控制层次结构。full
: 指示工具将层次结构完全变平,只留下顶层。none
:指示合成工具永远不要把层次结构变平。合成的输出与原RTL具有相同的层次结构。rebuilt
:当设置为rebuild时,合成工具可以将层次结构扁平化,执行合成,然后基于原始RTL重建层次结构。这个值允许跨边界优化的QoR好处,其最终层次结构与RTL类似,便于分析。
-
-gated_clock_conversion
: 是否转换时钟逻辑为门控时钟。 -
-bufg
: 控制工具在设计中推断的bufg数量。当设计网表中的其他bufg对合成过程不可见时,Vivado设计工具才会使用这个选项。 -
-fanout_limit
: 指定信号在开始复制逻辑之前必须驱动的负载数。也就是扇出的最大值。这个全局限制是一个通用指南,当工具确定它是必要的时,它可以忽略这个选项。 注意:-fanout_limit开关不影响控制信号(如设置,复位,时钟使能),如果需要,使用MAX_FANOUT复制这些信号。 -
-directive
: 替换-effort_level选项。指定后,运行此选项Vivado综合与不同的优化。Default
:RuntimeOptimized
: 运行时间最优化。即减少时序优化和RTL优化以减少综合的运行时间。AreaOptimized_high
: 执行的面积优化,包含强制三值加法器(ternary adder)的实现,改变比较器中是否应用进位链的阈值,实现area-optimized多路复用器。AreaOptimized_medium
: 执行的面积优化,包含更改是否执行控制集优化的阈值,强制三值加法器(ternary adder)的实现,降低推断为DSP块时的乘数的阈值,移动移位寄存器到BRAM,降低在比较器中应用进位链的阈值,实现area-optimized多路复用器。AlternateRoutability
: 改进路由能力的算法集(少使用MUXFs和CARRYs)。AreaMapLargeShiftRegToBRAM
: 检测大移位寄存器并使用专用块RAM实现它们。AreaMultThresholdDSP
: 降低推断为DSP块实现的阈值。FewerCarryChains
: 提高【使用lut而不是进位链】的操作数大小阈值。
-
-retiming
: 是否通过【组合门或lut】自动移动寄存器来改善【时钟内顺序路径的电路性能(寄存器平衡)】。它保持电路的原始行为和延迟,不需要更改RTL文件,默认值是OFF。 -
-fsm_extraction
: 控制Sythesis如何提取和映射有限状态机。 -
-keep_equivalent_registers
: 防止合并具有相同输入逻辑的寄存器。 -
-resource_sharing
: 设置不同信号间算术运算的共享。值:auto, on和off。auto设置是否共享取决于设计的时序。 -
control_set_opt_threshold
: 设置将clock enable 优化为较低数量的控制信号集(control set)的门限。auto:根据选择的器件自动选择一个值。当控制信号的扇出数小于给定的值时,工具合并control sets到寄存器D端输入。如果控制信号扇出高于设置值,工具试图让该控制信号信号驱动寄存器上的control_set_pin,也就是实际的控制引脚。支持任何正整数值。但IDE最大可选16,如果选0,则禁用此项优化。【20211123修正】 -
-no_lc
: 关闭LUT组合。 -
-no_srlextract
:关闭SRL提取,使它们实现为简单寄存器。 -
-shreg_min_size
: 推断为SRLs的门限值。默认值为3,这设置了将推断为固定延迟链(静态SRL)的SRL 时 顺序元素的数量。 -
-max_bram
:描述设计中允许的最大block RAM数目。当设计中有黑盒子或第三方网表时,通常会使用这种方法,为这些网表节省空间。默认设置为-1表示工具选择指定部件允许的最大数量。 -
-max_uram
: 设置设计中允许的UltraRAM (UltraScale®和UltraScale+™设备块ram)块的最大数量。默认设置为-1表示工具选择指定部件允许的最大数量。 -
-max_dsp
:描述设计中允许的最大块DSP数量。通常在设计中有黑盒或第三方网表时使用,并允许使用这些网表。默认设置为-1表示工具选择指定部件允许的最大数量。 -
-max_bram_cascade_height
: 控制工具可级联的最大BRAM数量。默认设置为-1表示工具选择指定部件允许的最大数量。 -
-max_uram_cascade_height
:控制URAMs的最大数量(UltraScale+™设备UltraRAM块),可以由工具级联。默认设置-1表示工具选择指定部件允许的最大数量。 -
-cascade_dsp
: 控制如何在DSP块输出中实现加法器。默认情况下,DSP输出的和是使用块内置加法器链计算的。值树强制在结构中实现总和。取值为:auto、tree和force。默认为auto。 -
-no_timing_driven
: (可选)禁用默认的timing driven 综合算法。这减少了synthesis时间,但忽略了timing对synthesis的影响。 -
-sfcu
: 在单文件编译单元模式下运行synthesis。 -
-assert
: 使VHDL断言语句得到评估。 -
tcl.pre
tcl.post
设置综合前后执行的tcl脚本。
更改策略后点保存即可
当一个文件有一个声明,而另一个文件依赖于该声明时,就需要特定的编译顺序。 Sources窗口底部的的Compile Order窗口选项可以打开编译顺序。
1.2 运行Synthesis 1.2.1 使用Tcl运行Synthesis例子:synth_design -part xc7k30tfbg484-2 -top my_top synth_design -help 查看帮助:
- 在多处理器系统上,RTL合成在默认情况下利用多个CPU核(最多4个)来加速编译时间。
- 并发线程的最大数量是不同的,这取决于系统上可用的处理器数量、操作系统和流程的阶段。
- Tcl参数 general.maxThreads 设置线程数,一般写在Vivado_init.tcl 中用以在打开软件时执行。
UG901:Vivado Design Suite User Guide: Synthesis