Vivado使用技巧(25):Block Synthesis技术

本系列第22~24篇介绍了Vivado综合技术中的各个方面,这里先概述一下:Vivado综合支持使用多种策略(Strategy)和全局设置(Setting)。在RTL或XDC文件中,可以用综合属性来改写某些设置选项。目前设计越复杂,全局设置方式限制了设计的潜在性能,同一设计中不同层次结构可能在不同设置下才能获得最佳表现。

针对此问题,一个解决方法便是Out-of-context(OOC)模式。OOC模式下的层次结构会脱离设计中的其它部分独立运行,但这样也增加了设计流程的复杂度。比如一个设计中需要运行多次综合、OOC模块必须要独立的约束等等。

本文将介绍Vivado提供的块级综合流程(Block Synthesis Flow),允许设计者将某些全局设置和策略应用于特定的层次结构中,且可以与设计中的其它模块不同。

设置块级流程
块级流程的必须在XDC文件中使用BLOCK_SYNTH属性设置,语法如下 :
set_property BLOCK_SYNTH.

option_name和value为设置的选项名称和值;instance_name为设置作用的模块实例化名称(不是模块名称)。这样提供了更大的灵活性,比如一个模块可能会实例化多次,不同的实例之间也可以采用不同的设置。

设置之后,选项会应用于该实例和内部所有电路(包括内部调用的其它模块)。一个实例可以设置多个BLOCK_SYNTH属性,没有设置的选项采用默认值。如果仅希望将设置应用于该实例,而不应用于其中的子模块,需要做额外的设置,如:
set_property BLOCK SYNTH.MAX_LUT_INPUT 6 [get_cells FFT/childLevel]

使用该命令将子模块的选项设置为默认值(当然也可以设置为其他值)。当使用块级综合流程时,Vivado会采用自顶向下综合模式。首先综合顶层模块,确保不会影响到设置了其它选项的层次结构。

块级流程选项
Vivado同样也提供了一些预定义的块级流程策略,包括DEFAULT、AREA_OPTIMIZED、ALTERNATE_ROUTABILITY和PERFORMANCE_OPTIMIZED。可以使用如下命令设置块级综合策略:
set_property BLOCK_SYNTH.STRATEGY {} [get_cells ]

Vivado支持设置的块级综合策略选项如下所示:

文章来源:FPGADesigner的博客 
*本文由作者授权转发,如需转载请联系作者本人

最新文章

最新文章