Multi-bit的实现方法和应用 (下)

本文详细介绍了in-placeMBFF封装在DCT流程中的应用,对比了与in-compile方法的区别,强调了物理布局敏感性,并给出了SYN和APR流程的整合示例。针对APR阶段的MBFF封装,展示了不同工具如ICC和Invs的实现方式,以及推荐的SYN-APRMBFFflow用于有效利用MBFF提升设计性能。

书接上回,Multi-bit的实现方法和应用 (上),闲言少叙,ICer GO!

image-20240203155601428

In-place MBFF实现

相较于仅基于逻辑连接的MBFF封装,如果考虑到布局的实际情况,那么就有physical aware的in-place的MBFF封装实现,这种思路可以应用在常见的DCT/DCG/genus_PLE 等综合流程。
和in-compilre相比,这种in-place的MBFF封装,最大的优势,就是physical aware。譬如如下示意图:

image-20240203160052620

可见,工具将距离较近的SBFF封装成了MBFF,简单而言,工具的在封装MBFF时候会更为谨慎(严苛),相应的MBFF的封装比率也自然会下降。

这里以DCT为例,它提供了一种in-place的MBFF实现方式:一种基于综合结果的MBFF封装方法。具体实现方法如下

set_multibit_options -mode none
compile_ultra -gate_clock -scan -spg
identify_register_banks
source MBFF_SCR
compile_ultra -gate_clock -scan -incremental -spg

和In-compile相比,这里需要注意两个地方

  • 在compile命令中,跳过MBFF封装步骤
  • 使用spg模式运行compile命令
  • 基于综合结果使用命令identify_register_banks,完成MBFF的in-place体交换。效果见下图:
    image-20240203160909456
    PS:封装后的MBFF的坐标,是在原始SBFF的中间位置
  • MBFF优化后,需要使用compile -incremental进行进一步增量优化,来平抑MBFF带来的QoR影响

这种in-place的MBFF替换有下列好处

  • 基于实际物理布局的情形进行MBFF有效替换:
    • 相较常规的MBFF有了物理布局影响的考量,可以有针对性地进行MBFF封装,这个对于最终的物理实现有很好的帮助
    • 传统的in-compilre的MBFF封装,先做封装,在做优化,这样很有可能导致优化受限
  • 可选择的基于WNS的封装方式,可以有效控制MBFF封装对WNS的影响

综上可以看出,如果是使用了in-place方式进行MBFF优化,那么这个布局的结果,一定是要传递给后端版图工具,所以需要SYN和APR联动起来,S家的流程如下:

# SYN flow:
dc_shell> set hdlin_infer_multibit never\|default_none
dc_shell> compile_ultra -gate_clock 
<think>好的,我需要处理用户关于Design Compiler中hdlin_infer_multibit参数的默认配置问题。首先,我应该回顾用户提供的引用内容,特别是引用[1][3],其中提到了hdlin_infer_multibit的不同设置。 根据引用[1],hdlin_infer_multibit有三种可能的取值:never、default_nonedefault_all。其中default_none是DC的默认值,它会根据RTL中的指令(如infer_multibit或dont_infer_multibit)来决定是否识别多比特寄存器。而default_all则是DC自动判断设计中的多比特情况,除非有明确的指令覆盖。用户可能需要了解这些默认值以及它们对综合的影响。 接下来,我需要确认这些信息是否在其他引用中被提及。引用[3]提到在综合策略中调整multibit reg的merge方法,这可能与hdlin_infer_multibit的设置相关,但具体细节可能不在其中。因此,主要信息还是来自引用[1]。 用户的问题是关于默认配置的,所以需要明确说明default_none是默认值,并解释每个选项的作用。同时,可能需要给出设置这些参数的命令示例,例如使用set_app_var。此外,引用[1]还推荐使用default_none,因为依赖设计者的指令更可靠,而default_all虽然灵活但可能不如前者优化。 最后,应生成相关问题,帮助用户进一步理解参数的应用场景、如何覆盖默认设置以及与多比特寄存器相关的其他命令。需要确保回答结构清晰,引用正确,并符合用户的中文要求。</think>关于Design Compiler(DC)中`hdlin_infer_multibit`参数的默认配置设置,以下是关键信息总结: ### 默认配置解析 1. **参数作用** `hdlin_infer_multibit`用于控制RTL阶段对多比特寄存器(multi-bit registers)的识别与封装策略,直接影响综合工具对硬件结构的推断方式[^3]。 2. **默认值** - **default_none**(DC默认配置) 仅在RTL代码中显式标注`infer_multibit`或`dont_infer_multibit`指令时,才会根据设计者意图进行多比特寄存器识别[^1]。 *命令示例*: ```tcl set_app_var hdlin_infer_multibit default_none ``` 3. **其他可选模式** - **never** 完全禁止多比特寄存器识别,可能导致面积时序优化不足(不推荐)[^1]。 - **default_all** 综合工具主动分析设计,自动推断多比特寄存器(除非被`dont_infer_multibit`指令覆盖)。此模式灵活性高但需验证兼容性。 ### 推荐实践 - **优先级策略**:建议保留默认`default_none`,通过RTL注释`// infer_multibit`或`// dont_infer_multibit`显式控制多比特行为,减少工具误判风险[^3]。 - **验证方法**:综合后可通过`report_infer_multibit`命令检查推断结果,结合时序报告(`report_timing`)验证优化效果。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值