本文提纲
- 合理利用group对路径进行分组
- 合理选择compile选项
- 合理利用bounds和blockage
- 合理提树/推树
- 合理选择综合策略
- 单独综合小网表
1.合理利用group对路径进行分组
- 分组原则由顶层module开始,依次往下细分迭代,并根据结果调整-weight权重;
- -priority选项为了提取group的优先级,U_A/* -priority < U_A/U_B/* -priority,否则U_B分组失败;
- 优化力度是由wns和weight叠加决定,和priority参数无关,因此遇到很大的wns路径先要清除,前期迭代可通过放宽约束(比如静态信号)或者修改RTL等方法清除,不然对优化效果影响很大;
- 分组语法要注意,找object时不能使用get命令-filter选项带有hier的语法,否则会添加size_only属性导致时序优化无效;
2.合理选择compile选项
- 添加各类优化选项,优化力度可根据具体情况进行配置;
- compile_ultra命令会默认修改综合策略的变量,比如hdlin_infer_mux等等变量,以达到极致的优化效果;
- -spg选项或默认修改综合策略的变量,细节暂未准确的分析;
- 尽量不使用ungroup -flatten的方式,会导致后仿和ECO复杂化,比较大型的项目一般都会有ECO follow,同时也会增加后仿定位难度;
- 一般是使用两轮的编译,如果时间允许可以使用多轮的编译;