ICC2 将placement分为五个阶段,通过place_opt -from -to控制run到placement的哪个阶段,对于要控制placement不同阶段的优化行为可做精细操作,通过ICC2的workshop可知
主要分为五个阶段:
1、initial place:initial place执行buffer tree aware driven的corase placement和scan chain reorder,由options place_opt.initial_place.buffering aware控制 (默认为true)。在2018.06版本之前,纯粹是wire length driven,这一步做的是coarse placement,std cell会产生大量的overlap且不与row对齐等vio,不做legalize
2、initial drc:remove synthesis做的buffer trees,重新根据PR工具的engine插入buffer执行HFNS(high fanout net synthesis)和DRV修复,initial drc可以调用global routing让buffer tree长得更好
通过以下命令调用:
set_app_options -name place_opt.initial_drc.global_routed_based -value true
3、initial opto:legalize前的快速timing优化,banking、debanking等
4、final place:基于global routing评估congestion driven placement和timing driven placement,以及对std cell legalize,最终完成后所有cell都和site row对齐并且不存在overlap
5、final opto:基于final placement的全面优化,会对cell进行重新放置
默认情况下,除了final_place阶段的拥塞估计和移除之外,Place_opt始终使用virtual routing。
Innovus placement
innovus做placement的engine叫Giga opt engine
1、Global placement = coarse placement,place运行时首先remove综合做的buffer tree(atomic cmd:deletBufferTree)由于综合时候考量因素较少,摆放这些buffer没有必要,PR工具engine可以将buffer tree插得更好,工具默认所有std cell都在core中间,一步步往外扩,每做一个iteration都会把std cell往外扩一点,最后所有iteration global placement完成扩散至整个区域,做完后产生大量overlap且cell不与site row对齐
2、scan reorder:scan chain reorder
3、Detail placement:legalization(atomic cmd:refinePlace)
4、congestion Repair:调用early global route engine,评估overflow,修正局部violation,只关心基本spacing等一些rule,不care大部分DRC(atomic cmd:congRepair)