接着《新技术 | Innovus Mixed Placer》《新技术 | Mixed placement flow 开篇》继续搬运mixed placement. 今天搬运mixed placement 几种flow:
- Main flow
- Incremental flow
- ECO flow
- CPG flow
Main Flow
Innovus mixed placement 主flow 如下图所示,可以带参考floorplan 也可以不带参考floorplan, 如果有参考floorplan, Innovus mixed placement 可以从参考floorplan 中抽取power routing density 的信息;如果没有参考floorplan, 需要create power stripe 后抽取power routing density 的信息,有了power routing 信息,在摆放macro 的时候可以更精确地模拟congestion 和wire-length.
到目前为止,对于有成百上千个macro 的复杂设计,mixed placement 不一定可以一次就得到最优的floorplan, 通常需要几次迭代调整。
如果mixed placement 的结果不好,需要在place\_opt\_design 之后进行分析,如果timing 或congestion 差是由于macro placement 不好造成的,则建议调整工具端的设置重新run, 如:
set\_macro\_place\_constraints
setPlaceMode
setRouteMode
如果timing 或congestion 差只是由于部分macro 的placement 造成的,则只需要调整这一部分macro 的placement, 这就需要用到Incremental flow.
Incremental flow
在place\_opt\_design 后,如果timing 或congestion 差是由部分macro 的placement 造成的,或想要进一步调整macro 的placement 则可以在mixed place DB 上做Incremental run.
- "Unfix" 需要调整的macro.
- 更新对应约束,如: set\_macro\_place\_constraints.
- 调用:place\_design -concurrent\_macros -incremental.
可以多次调用incremental flow 来调整macro 的摆放,在调整结束后,回到主流程中 "physical cell insertion and power routing" 这一步继续后续步骤即可。
ECO flow
如果netlist 做了微小的修改,可以用ECO flow 将修改合到设计中,不需要重新做macro placement 跟power routing. 到目前为止,如果新的netlist 有逻辑增加,要确保逻辑增加不超过3%. 根据ECO 逻辑对timing 的影响,在ECO flow 中需要对如下变量设不同的值:
place\_opt\_run\_global\_place:
- none: 如果ECO 没动到critical timing path 该变量设成none, 新增加的标准单元直接用命令ecoPlace 摆放。
- seed: 如果ECO 动到critical timing path 该变量设成seed, 新增加的标准单元由命令place\_opt\_design 『增量』摆放。
如果新netlist 的逻辑增加超过3% 或者对critical path 影响很大,则建议重新run mixed placement flow 或run CPG flow.
CPG flow
CPG = Cadence Placement Guidance. 如果新netlist 的逻辑增加不超过3% 或对critical path 影响不大,则ECO flow 值得一试,如果新netlist 的逻辑增加超过3% 或对critical path 影响较大,则可以考虑CPG flow, 以得到跟之前netlist 类似的floorplan. CPG flow 的目标是:尽量保证macro 的摆放跟之前的Floorplan 一致,同时允许工具为了timing 或congestion 调整相应macro 的位置。
CPG flow 典型的应用场景是在设计中新加入DFT 逻辑,如果ECO 更改了关键模块的功能,则建议重新run mixed placement flow. 对于CPG flow 需要从老的DB 中dump 一个指导文件,在run 新netlist 的mixed placement flow 中读入该指导文件,拿pre-DFT 和post-DFT netlist 为例:
Innovus session 1:
- 读入pre-DFT 的placement DB.
- 写出CPG Guide 文件,命令: write\_macro\_place\_constraint -sections {cpg} -cpg\_scope {macro\_only} -out\_file guide.tcl; 这个命令写出的guide 文件中的命令格式为: set\_macro\_place\_constraint -cpg { orientation}.
Innovus seeion 2:
- 读入post-DFT 的initial DB.
- 指定CPG Guide 文件,setPlaceMode -place\_global\_cpg\_file guide.tcl.
- place\_design -concurrent\_macros; 在设了-concurrent\_macros 这选项后,工具会自动source 指定的指导文件。
对于CPG flow 其他设置最好跟之前netlist 设置相同,另外,refine\_macro\_place 是不honor CPG Guide的。
参考文献:
作者:陌上风骑驴
来源:https://mp.weixin.qq.com/s/AyrslzhsP57ULF3DiiDAhQ
作者微信公众号
相关文章推荐
更多IC设计技术干货请关注IC设计技术专栏。