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> [get_cells <instance_name>]

For example:

set_property BLOCK_SYNTH.MAX_LUT_INPUT 4 [get_cells fftEngine]

 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 {<value>} [get_cells <inst_name>]

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

 

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值