ICC 中有关阻塞(congestion)的设定
自动布线最根本的任务是完成布线。在完成布线的前提下,才能考虑到其他方面的优化。虽然ICC提供了强大的布线工具,但在种种条件的约束下,依然会造成布线的失败。我在实际工作中,学习和参考了相关资料,总结了一些方法供大家参考。
参数设定:
placer_max_cell_density_threshold -1
placer_enable_high_effort_congestion false
placer_enable_enhanced_route false
physopt_ultra_high_area_effort false
以上参数通过set 或 set_app_var 设定。通过参数字面的意思即可以了解到其用意。可以看到,解决阻塞的方法无非就是降低单元密度(使用率),具体表现在:密度限制、多次阻塞分析、提供更准确的阻塞图、允许删除更多的单元。
此外,set_paramenter还提供了更多变量的设定。过分的时序约束也会造成单元面积的增加。
命令设定:
使用封装好的命令进行设定更为安全,也可以得到更多的帮助与解释。
set_pnet_option 限制power rail 下面是否能摆放标准单元。
set_congestion_option 设定最大使用率,其中-layer 选项已被 routing guide 所取代。
set_area_recovery_option 已被 set_congestion_option 所取代。
set_keepout_margin 通常用来为hard macro增加类似 padding 的设定,以阻止标准单元的靠近。实际上,将其应用与标准单元,可以得到意外的效果。
手工设定:
Placement blockage
Routing guide
Bound / plan group/ voltage area
限制区域或将电路限制在某块区域,以达到减少模块单元密度、理清模块间布线的目的。
辅助设定:
RP (Relative Placement) 用于理清 data path ,从而达到减少布线的目的。
Partition 附带使用率的设定,目前还不知道如何更好的进行运用。
优化命令:
placement with -congestion_driven
以减少阻塞为目的的计算方式,进行摆放。
VFP (Virtual Flat Placement) with –virtual_IPO 允许单元宽松的摆放,而非紧紧的靠在一起增加布线的难度。
refine_placement 对摆放进行单独的优化。
Commands with –congestion option: place_opt, psyn_opt, route_opt 优化时调用阻塞优化。
参考数值:
route_global / route_zrt_global / route_fp_proto –congestion_map_only
report_congestion
生成布线阻塞图,提供阻塞依据,产生阻塞信息以评估布线可行性。
Both Dirs: Overflow = 11194 Max = 5 GRCs = 11924 (0.47%)
max > 10 OR GRCs % > 2% 布线失败的可能性较大。