前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Vivado模块化综合技术概述

Vivado模块化综合技术概述

作者头像
Lauren的FPGA
发布2019-10-31 00:39:43
1.5K0
发布2019-10-31 00:39:43
举报
文章被收录于专栏:Lauren的FPGALauren的FPGA

尽管Vivado提供了不同的综合策略,同时用户还可根据设计需求对每种策略下的选项进行优化,形成用户策略,但毕竟这些选项是全局的,应用于所有模块的。这就意味着某些选项对设计中的某些模块是不合适的。例如,将-no_lc选中以阻止LUT Combining,但在某些模块中如果LUT没有对布线拥塞构成威胁,允许LUT Combining则可以节省LUT资源。类似地,全局设定的-shreg_min_size未必适合于所有模块。Vivado的模块化综合技术则有效解决了这一弊端,实现了对模块的差异化处理,尤其是面对设计日趋复杂的情形下,细粒度地管理每个模块可为加速时序收敛带来好处。

模块化综合技术需要通过Tcl脚本写在XDC文件中,具体格式如下:

set_property BLOCK_SYNTH.<optionname> <value> \

[get_cells <instance_name>]

这里,option name和value具体内容可参考ug901 (V2017.4) Table 3-1。需要注意的是get_cells后面跟的是实例化的名字,而非entity或module名字。

模块化综合技术有如下特征:

1. 对同一模块可以使用多个option

例如,当综合策略为ALTERNATE_ROUTABILITY时,-keep_equivalent_register是不勾选的,即等效寄存器会被合并,而这里可通过将KEEP_EQUIVALENT_REGISTER的值设置为1来保留等效寄存器。同样地,通过将FSM_EXTRACTION的值设置为OFF来覆盖原有的值。可见,模块化综合的option优先级高于全局设定的值。

2.模块化综合的option是向下继承的,而且是可以嵌套的

例如,针对模块uart_rx_i0(实例化名字),RETIMING = 1 MAX_LUT_INPUT = 4(不允许工具推断出LUT5和LUT6),则该模块下的所有子模块均遵守这一原则。但如果该模块下的子模块uart_baud_gen_rx_i0(实例化名字)允许工具推断出LUT5和LUT6,则可将MAX_LUT_INPUT值设置为6。从而形成如下约束。

3. 模块化综合技术所涉及到的模块的层次不受全局选项-flatten_hierarchy的影响

这意味着无论-flatten_hierarchy为何值,模块化综合技术中用到的层次会被严格保留,这可能会影响综合质量(QoR),因此,在使用模块化综合技术时要注意层次化对综合的影响。

结论

模块化综合技术使得工具可以对不同模块实现差异化处理,这种差异化处理能够更加匹配设计需求,提高综合后的QoR

模块化综合技术需要通过Tcl脚本写在.xdc文件中。最好创建一个block_synth.xdc文件专门用于管理工程的模块化综合

模块化综合技术不用全局综合选项-flatten_hierarchy的影响,其所涉及到的层次会被Vivado保留下来

上期内容

本周回顾--2018/02/09

下期内容

Vivado模块化综合技术的应用场景

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-02-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Lauren的FPGA 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档