Vivado使用技巧(4):Block Synthesis Flow技术

前面1-3介绍了Vivado综合技术中的各个方面,这里做个总结:Vivado综合支持使用多种策略(Strategy)全局设置(Setting)。在RTL或XDC文件中,可以用综合属性(attribuite)来改写某些设置选项。但是目前设计越复杂,全局设置方式限制了设计的潜在性能,同一设计中不同层次结构可能在不同设置下才能获得最佳表现;

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

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


设置块级流程(Setting a block-level 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 fftEngine/newlevel]

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


块级流程选项(block-level flow option)

Vivado同样也提供了一些预定义的块级流程策略,包括DEFAULTAREA_OPTIMIZEDALTERNATE_ROUTABILITYPERFORMANCE_OPTIMIZED。可以使用如下命令设置块级综合策略: 

 

set_property BLOCK_SYNTH.STRATEGY {} [get_cells ]

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

Vivado使用技巧(4):Block Synthesis Flow技术_第1张图片 

你可能感兴趣的:(vivado使用相关)