目前主流先进工艺库都有multibit cell, 在《论功耗:动态功耗优化》中有陈诉multibit cell 的好处及在综合时如何实现。如果在综合阶段没有做multibit merge, 或综合阶段由于缺失物理信息multibit cell merge 不合理,那就需要PR 工具做multibit merge 或split.
Innvous 对multibit 的支持
Innovus 支持multibit 的merge 及split, 在setOptMode 中由如下两个option 控制:
- -multiBitFlopOpt { false| true| mergeOnly| splitOnly }
- -multiBitFlopOptIgnoreSDC {true| false}
此外还可以用如下两个attribute 控制某些特定的寄存器是否要做merge 或split:
- dontMergeMultibit(settable): bool
- dontSplitMultibit(settable): bool
顺便提一句,在Innovus 中要找一个object 的属性,可以用命令dbSchema 来check, 例如:要找instance 相关的关键词是multi 的属性,用命令:
dbSchema inst *multi*
返回值如:
Innovus 不同阶段对mulitbit 的支持
P&R分好多步,每一步可支持mutibit 操作都不同,具体如下:
preCTS:
- Merging improves bits per flop metric.
- Splitting improves bottleneck timing.
postCTS:
- No merging is supported currently due to the impact it may have on the clock tree.
- In Innovus 17.1 version, splitting of flops to improve bottleneck timing is supported.
postRoute:
- No merging or splitting is supported.
在Innovus 中如何report multibit 优化结果
在Innovus log 中可以看到如下的关于multibit 的优化信息:
然而没有最终的summary. 可以用下面的proc 来report, 下载原始脚本请查看参考文献网址。
使用方法及输出:
做了multibit 优化之后,会改变寄存器的名字,可能会对形式验证造成影响,可以在Innovus 中用命令dumpMultiBitFlopMappingFile 来dump multibit mapping file 给后续流程用,该命令可以dump 如下file:
- multi\_bit\_input\_pin\_mapping: includes multi-bit input pin mapping information
- multi\_bit\_mapping: Includes multi-bit optimization mapping information
- mbit.json: Includes multi-bit flop mapping attribute information
参考文献:
作者:陌上风骑驴
来源:https://mp.weixin.qq.com/s/u8Wj3q2rRHQqDHfu\_7Bk3g
作者微信公众号
相关文章推荐
更多IC设计技术干货请关注IC设计技术专栏。