vivado 使用块综合策略

使用块综合策略

概述

AMD Vivado™合成具有许多策略和全局设置,您可以使用这些策略和设置自定义设计的合成方式。此图显示了可用的预定义策略在“合成设置”和“表:Vivado预配置策略”中提供了一个并排的战略设置的比较。您可以使用RTL或中的属性或XDC文件覆盖某些设置,例如-retimeming用于特定层次结构或信号的XDC文件。但是,一般来说,选项会影响整个设计。随着设计变得越来越复杂,应用此类设置可能会限制您的设计充分发挥其潜力。设计中的某些层次结构使用不同的选项可能会更好地工作比其他人。下图显示了一个中型设计,它有许多不同类型的等级制度。

vivado 使用块综合策略_第1张图片

一种选择是在上下文外(OOC)模式中合成这样的层次结构;这是有效的,但是使设计流程复杂化。OOC流分离分配给的层次结构以OOC模式合成,并将它们与设计的其他部分分开运行。这意味着合成每个设计运行一次以上。此外,OOC约束必须是与其他设计的约束分离,增加了更多的复杂性。块级合成流(Block_SYNTH)使用的特性允许您使用某些全局不同于顶级的完整设计。

设置块级流量

要设置块级合成流(使用Block_SYNTH特性),请输入Tcl特性仅在XDC文件中。命令语法如下:

set_property BLOCK_SYNTH.

是您要设置的选项。

•<value>是您分配给该选项的值。

•<instance_name>是要在其上设置选项的层次实例。

例如

set_property BLOCK_SYNTH.MAX_LUT_INPUT 4 [get_cells fftEngine]

将属性设置为实例名称,而不是实体或模块名称。通过使用实例名称,Vivado合成工具能够在存在模块/实体时具有更大的灵活性其被实例化多次。在所提供的示例中,fftEngine实例正在被设置,因此不存在LUT5或LUT6基元。

注意:通过在实例上设置BLOCK_SYNTH,可以影响该实例及其以下的所有内容例子例如,如果fftEngine中实例化了其他模块,那么这些模块也会不具有任何LUT5或LUT6基元。

注意:除了影响此实例外,BLOCK_SYNTH属性还导致此的层次结构要硬化的实例。注意这一点,尤其是如果此层次结构包含I/O缓冲区或正在推断输入/输出缓冲器。

当您将BLOCK_SYNTH属性放在实例上时,该实例将获得该值具体选项;所有其他选项都使用默认值。

可以在同一实例上设置多个BLOCK_SYNTH属性,以尝试不同的组合。例如,以下保持等效寄存器,禁用FSM推断,并使用AlternateRoutable策略:

set_property BLOCK_SYNTH.STRATEGY {ALTERNATE_ROUTABILITY} [get_cells
mod_inst]
set_property BLOCK_SYNTH.KEEP_EQUIVALENT_REGISTER 1 [get_cells mod_inst]
set_property BLOCK_SYNTH.FSM_EXTRACTION {OFF} [get_cells mod_inst]

为了防止影响实例下需要不同属性设置的实例,您可以在多个级别上嵌套BLOCK_SYNTH属性。如果你只想在一个特定的地方级别,您可以在该级别上设置它,在后续级别上,您可以设置默认值返回,使用如下命令:

set_property BLOCK_SYNTH.MAX_LUT_INPUT 6 [get_cells fftEngine/newlevel]

如果新级别是fftEngine下的唯一层次结构,则此命令确保只有fftEngine获取MAX_LUT_INPUT=4属性。你也可以放一套完全不同的的选项,并且不会返回到默认值。

注:当执行块级流时,该工具将此设计保持在自上而下的模式中,这意味着整个设计经过了综合。对于有问题的例子,Vivado合成保留了层次结构,以确保该级别的逻辑不会模糊并保持在该级别内。这可能有对生活质量的潜在影响。因此,在设置BLOCK_LEVEL属性时要小心。只设置它们在你知道需要它们的情况下。

块级流量选项

块级流也支持工具中的一些预定义策略。这个允许的策略有:DEFAULT、AREA_OPTIMIZED、ALTERNATE_ROUTABLY和性能优化。XDC约束语法如下:

set_property BLOCK_SYNTH.STRATEGY {} [get_cells ]

下表列出了支持的Vivado Block合成设置。

vivado 使用块综合策略_第2张图片

vivado 使用块综合策略_第3张图片

你可能感兴趣的:(fpga开发)