在PnR阶段后期,往往不希望对routing进行大的改动,因为会对timing造成影响,这时如果遇到了局部的动态IR violation,往往需要局部进行加强处理,比如增加底层metal 绕线,一般这里都是依赖手动,但是又容易引入新的drc,影响项目TO的进度。
在ICC中可以通过寻找没被占用的track的方式, 自动插入底层metal绕线,并且避免drc,命令基于drc options, 例如create_power_straps, 这种方式可以减少一半以上的动态IR的drc。
脚本
set_preroute_drc_strategy -protect_pin_access_edge - protect_pin_access_edge_within_pin_layer_pitch -use_fat_via - honor_shapes_of_nets {ALL} -jog_range 0.960000 -min_layer met1 -max_layer met2 ;# MAIN CORE create_power_straps \ -direction vertical \ -nets {vccd_leopard_main_pd} \ -layer met2 \ -width 0.3 \ -start_low_ends coordinate \ -start_high_ends coordinate \ -extend_low_ends off \ -extend_high_ends off \ -do_not_route_over_macros \ -start_at 980.4 \ -num_placement_strap 5200 \ -increment_x_or_y 0.48 \ -start_low_ends_coordinate xxx \ -start_high_ends_coordinate yyy
create_power_straps \ -direction vertical \ -nets {vccd_leopard_main_pd} \ -layer met2 \ -width 0.3 \ -start_low_ends coordinate \ -start_high_ends coordinate \ -extend_low_ends off \ -extend_high_ends off \ -do_not_route_over_macros \ -start_at xxx \ -num_placement_strap 594 \ -increment_x_or_y 0.48 \ -start_low_ends_coordinate xxx \ -start_high_ends_coordinate yyy
