Vivado编译介绍
合成是将寄存器传输级别(RTL)指定的设计转换为门级表示。AMD Vivado™ 合成是定时驱动的,并针对内存进行优化使用和性能。Vivado合成支持以下的可合成子集:
•SystemVerilog:IEEE标准SystemVerilog统一硬件设计规范,以及验证语言(IEEE Std 1800-2012)
•Verilog:IEEE Verilog硬件描述语言标准(IEEE Std 1364-2005)
•VHDL:IEEE VHDL语言标准(IEEE Std 1076-2002)
•VHDL 2008
•混合语言:Vivado支持VHDL、Verilog和SystemVerilog的混合。在大多数情况下,Vivado工具还支持Xilinx设计约束(XDC),它基于基于行业标准Synopsys设计约束(SDC)。
重要!Vivado合成不支持UCF约束。将UCF约束迁移到XDC约束。有关更多信息,请参阅ISE到Vivado Design Suite迁移指南(UG911)。
有两种方法可以设置和运行合成:
•使用项目模式,从Vivado集成设计环境(IDE)中选择选项。
•使用非项目模式,应用工具命令语言(Tcl)命令或脚本,以及控制您自己的设计文件。有关更多信息,请参阅Vivado Design Suite用户指南:设计流程概述(UG892)关于操作模式。本章在单独的小节中介绍了这两种模式。
综合方法论
AMD Vivado™ IDE包括一个综合和实现环境,有助于按钮流与合成和实现运行。该工具管理运行数据自动地,允许使用不同的RTL源版本、目标设备进行重复运行尝试,合成或实现选项以及物理或时序约束。在Vivado IDE中,您可以执行以下操作:
•创建并保存策略。策略是命令选项的配置,您可以应用于综合或实现的设计运行。请参见创建跑步策略。
•对合成和实施运行进行排队,以便按顺序或同时启动多处理器机器。请参见运行合成。
•监控综合或实施进度,查看日志报告,并取消运行。看见监控合成运行。
使用合成
本节介绍使用AMD Vivado™ IDE来设置和运行Vivado合成。这个相应的Tcl控制台命令遵循大多数Vivado IDE过程和大多数Tcl命令直接链接到Vivado Design Suite Tcl命令参考指南(UG835)。此外,还有更多关于Tcl命令和在Vivado设计中使用Tcl的信息Suite用户指南:使用Tcl脚本(UG894)。视频:有关更多信息,请参阅以下内容:Vivado Design Suite QuickTake视频:合成选项和Vivado设计套件QuickTake视频:综合设计。
使用合成设置
1.从“流导航器”中,单击“设置”,选择“合成”,或选择“流>设置”>合成设置。将打开“设置”对话框,如下图所示:
2.在“设置”对话框的“约束”部分下,选择“默认约束集”作为活动约束集;Xilinx设计中捕获的一组包含设计约束的文件可以应用于设计的约束(XDC)文件。两种类型的设计约束是
•物理约束:这些约束定义了引脚位置和绝对或相对,单元的放置,如块RAM、LUT、触发器和设备配置设置。
•时间约束:这些约束定义了设计的频率要求。在没有时间限制的情况下,Vivado Design Suite仅针对线材进行优化设计长度和放置拥塞。有关更多信息,请参阅Vivado Design Suite用户指南:使用约束(UG903)组织约束。新管路使用选定的约束集,Vivado合成以该约束集为目标用于设计更改。
3.从选项区域:从下拉菜单中选择一个策略,您可以在其中查看和选择用于合成运行的预定义合成策略。有不同的预配置的策略,如下图所示。
你也可以定义自己的策略。当您选择综合策略时,可用的Vivado策略显示在对话框中。您可以通过覆盖合成策略设置更改“创建运行策略”中所述的选项值。有关所有策略及其各自设置的列表,请参阅中的指令选项下面的列表中,请参阅Vivado预配置策略以查看策略默认矩阵设置。
4.从显示的选项中选择:
•flatten_hierarchy:确定Vivado合成如何控制层次结构。
•none:指示合成工具永远不要压平层次结构。的输出合成具有与原始RTL相同的层次结构。
•full:指示工具完全展开层次结构,只保留顶层。
•重建:设置后,重建允许合成工具展平层次结构,执行合成并基于原始RTL重建层次结构。此值允许通过类似于RTL便于分析。
•gated_clock_conversion:打开和关闭合成工具转换带使能的时钟逻辑。门控时钟转换的使用还需要使用RTL属性才能工作。看见GATED_CLOCK,了解更多信息。
•bufg:控制工具在设计中推断出的bufg数量。Vivado设计工具使用当设计网表中的其他BUFG对合成不可见时,此选项过程
该工具推断出指定的数量,并跟踪实例化了多少BUFG在RTL中。例如,如果-bufg选项设置为12,并且有三个bufg在RTL中实例化,Vivado合成工具推断出最多九个BUFG。
•指令:替换-effert_level选项。指定后,此选项将运行Vivado具有不同优化的合成。有关所有策略的列表,请参阅Vivado预配置策略战略和环境。值为:
•默认值:默认设置。请参阅Vivado预配置策略。
•运行时间优化:执行较少的时间优化,并消除了一些RTL优化以减少合成运行时间。
•AreaOptimized_high:执行常规区域优化,包括强制三元加法器实现,应用新阈值以使用进位链I比较器,以及实现区域优化复用器。
•AreaOptimized_media:执行常规区域优化,包括更改控制集优化阈值,强制三进制加法器实现,降低将推理阈值相乘到DSP块中、将移位寄存器移动到块RAM中,应用较低阈值在比较器中使用CARRY链,以及区域优化的MUX操作。
•AlternateRoutable:一组算法,以提高路由能力(较少使用MUXFs和CARRYs)
•AreaMapLargeShiftRegToBRAM:检测大型移位寄存器并实现它们使用专用块RAM。
•AreaMultThresholdDSP:专用DSP块推理的较低阈值。
•FewerCarryChains:使用LUT而不是进位的操作数大小阈值更高链条
•LogicCompact:排列CARRY链和LUT,使使用更少的SLICES使逻辑更加紧凑。这可能会对时机产生负面影响QoR。
•性能优化:执行常规时序优化,包括逻辑级别以牺牲面积为代价的减少。
•PowerOptimized_high:执行一般时序优化,包括逻辑级别以牺牲面积为代价增加。
•PowerOptimized_medium:通过降低逻辑来执行一般时序优化以牺牲面积为代价的水平降低。
•重新定时:适用于非AMD Versal™ 仅限设备。要控制Versal中的重定时,请选择-no_retimeing选项。此布尔选项<on|off>提供了一个执行的选项通过在组合门或LUT。它保持了电路的原始行为和延迟并且不需要对RTL源进行改变。默认设置为禁用。
注意:在OOC模式下重新定时时,由或作为驱动端口的寄存器不会重新定时。
•no_retimeing:这仅适用于Versal设备。在Versal中,重定时在默认情况下处于启用状态。使用此布尔选项<on|off>可关闭重定时。这对非Versal设备没有影响。
•fsm_extraction:控制合成如何提取和映射有限状态机。FSM_ENCODING更详细地描述了这些选项。
•keep_equivalent_registers:防止具有相同输入逻辑的寄存器合并。
•resource_sharing:设置不同信号之间算术运算符的共享。这个值为auto、on和off。执行资源共享的自动值集取决于设计的时机。
•control_set_opt_threshold:设置时钟的阈值,以便对较少数量的控制集。默认为自动,这意味着工具选择一个值基于作为目标的设备。支持任何正整数值。
给定值是工具移动控制集所需的扇出次数进入寄存器的D逻辑。如果扇出高于该值,该工具将尝试让该信号驱动该寄存器上的control_set_pin。
•no_lc:选中时,此选项将关闭LUT组合。
•no_slextract:选中时,此选项将关闭完整设计的SRL提取,因此它们被实现为简单的寄存器。
•shreg_min_size:是SRL推断的阈值。默认设置为3。这套将导致对固定的SRL进行推断的顺序元素的数量延迟链(静态SRL)。策略也将此设置定义为5和10。参见Vivado所有策略和设置列表的预配置策略。
•max_bram:描述设计中允许的块RAM的最大数量。经常当设计中存在黑盒或第三方网表,并且允许设计师为这些网表节省空间。
注意:默认设置-1表示工具选择允许的最大数量指定的部分。
•max_uram:设置UltraRAM(AMD UltraScale)的最大数量+™ 设备块RAM)块。默认设置-1表示工具选择指定零件允许的最大数量。
•max_dsp:描述设计中允许的块dsp的最大数量。通常情况下当设计中存在黑盒或第三方网表时使用,并为这些网表。默认设置-1表示工具选择最大值指定零件允许的编号。
•max_bram_cascade_height:控制可以通过工具级联。默认设置-1表示工具选择指定零件允许的最大数量。
•max_uram_cascade_height:控制UltraScale+设备的最大数量可以通过该工具级联的UltraRAM块。默认设置-1表示该工具选择指定零件所允许的最大数量。
•级联_dsp:控制加法器在和dsp块输出中的实现方式。默认情况下,使用块内置加法器链来计算DSP输出的总和。价值树强制求和在结构中实现。值为auto、tree和force。默认为自动。
•no_timing_driven:(可选)禁用默认的定时驱动合成算法。这导致合成运行时间减少,但忽略了定时对合成的影响。
•sfcu:在单文件编译单元模式下运行合成。
•assert:启用要评估的VHDL assert语句。故障或错误的严重程度停止合成流并产生误差。严重级别的警告会生成警告
•debug_log:打印合成日志文件中的额外信息,用于调试。-debug _log应添加到“更多选项”字段中。
•tcl.pre和tcl.post选项是紧接在和之前运行的tcl文件的挂钩合成后。
注意:tcl.pre和tcl.post脚本中的路径相对于的关联运行目录当前项目:<project>/<project.runs>/<runname>。有关更多信息,请参阅Vivado Design Suite用户指南:使用Tcl脚本(UG894)Tcl脚本。使用当前项目或当前运行的DIRECTORY属性来定义相对脚本中的路径。
5.单击“完成”。
Tcl用于获取属性的命令