借助 Vivado 综合,您可使用各种策略和全局设置来自定义设计的综合方式。大多数情况下,这些选项均为全局选项并且影响整个设计。您可使用块级综合策略,通过自上而下的流程采用不同全局选项来对不同层级进行综合。相比于自下而上编译,此流程更快且更易于执行。您可以为整个设计设置约束,而不必先为较低层级设置约束然后再针对顶层进行重新设置。
在 XDC 文件中使用以下语法设置块级综合策略:
set_property BLOCK_SYNTH.<option_name> <value> [get_cells <instance_name>]
其中:
-
<option_name>
为要设置的选项。 -
<value>
为要分配给该选项的值。 -
<instance_name>
为要在其中设置该选项的层级实例。
注释: 这些属性始终在层级实例上进行设置。这样即可通过不同选项对已多次例化的模块或实体进行综合。
例如,您可以在 XDC 文件中设置以下策略:
set_property BLOCK_SYNTH.RETIMING 1 [get_cells U1]
set_property BLOCK_SYNTH.STRATEGY {AREA_OPTIMIZED} [get_cells U2]
set_property BLOCK_SYNTH.STRATEGY {AREA_OPTIMIZED} [get_cells U3]
set_property BLOCK_SYNTH.STRATEGY {DEFAULT} [get_cells U3/inst1]
Vivado 综合的执行方式如下图所示。
图 1. 块级综合策略示例
为了尝试不同的选项,您可以在同一实例上设置多种 BLOCK_SYNTH 属性。例如:
set_property BLOCK_SYNTH.STRATEGY {ALTERNATE_ROUTABILITY} [get_cells inst]
set_property BLOCK_SYNTH.FSM_EXTRACTION {OFF} [get_cells inst]
当使用 IP 时,您可以使用下列块级综合策略:
- 如果 IP 采用全局编译,那么您可在 IP 顶层使用该策略。
- 对于非关联 IP,则不能使用该策略,因为此 IP 是 1 个黑盒。应改为在编译 IP 时使用全局设置。
注释: 如需了解有关该功能以及受支持的策略和选项的更多信息,请参阅
Vivado Design Suite 用户指南:综合(UG901)。