一般会把route阶段按照route_auto和route_opt分成两个阶段,前一个阶段主要负责快速绕线解决大部分绕线问题,后一个阶段负责收敛时序以及面积和功耗要求。
set_ignored_layers -min_layer ME2
set_ignored_layers -max_layer ME6
set_app_options -name route.common.global_min_layer_mode -value hard
## 低于min layer不能绕线
set_app_options -name route.common.net_max_layer_mode -value hard
## 高于max layer不能绕线
set_app_options -name route.common.net_min_layer_mode -value allow_pin_connection
set_app_options -name route.common.number_of_vias_under_global_min_layer -value 1
set_app_options -name route.common.number_of_vias_under_net_min_layer -value 1
set_app_options -name route.common.rotate_default_vias -value true
route.common.voltage_area_aware -value true
## 允许跨电源域绕线
set_routing_rule [get_nets xx] -default_rule -max_routing_layer ME7 -max_layer_mode hard
route_group -net xx
## route_auto之前用route_group,route之后就用route_eco -net xx来绕,或者用set_app_options -name route.common.tie_off_mode -value all,工具会在绕线时把secondary pg pin一起绕了,有时secondary power pin由于port type问题不能绕线,可以把lef里这个pin的属性改成signal重新create ndm,绕之前要记得connect_pg_net。
set_app_options -name \
route.common.number_of_secondary_pg_pon_connection -value 50
## 限制一条power 线上能连多少和secondary pg pin
set_app_options -name route.detail.insert_diodes_during_routing -value true
set_app_options -name route.detail.diode_libcell_names -value SVX_TIEDIN_1
set_app_options -name route.detail.antenna -value true
set_app_options -name route.detail.hop_layers_to_fix antenna -value true
antenna问题出现在跨power domain的情况下工具不会插diode就只能通过跳线法去解
souce antenna_rule.tcl 示例如下:
remove_antenna_rules
define_antenna_rule -mode 2 -diode_mode 4 -metal_ratio 0 -cut_ratio 0
define_antenna_layer_rule -mode 2 -layer ME1 -ratio 5500 -diode_ratio {0 0 0 5500}
define_antenna_layer_rule -mode 2 -layer VI1 -ratio 200 -diode_ratio {0 0 0 200}
set_app_options -name route_opt.flow.enable_ccd -value true
set_app_options -name ccd.hold_control_effort -value true
set_app_options -name route_opt.flow.size_only_mode \
-value footprint/equal/equal_or_smaller/none
## 控制route_opt是否size only
set_app_options -name route.global.timing_driven -value false
set_app_options -name route.track.timing_driven -value false
set_app_options -name route.detail.timing_driven -value false
set_app_options -name route.global.crosstalk_driven -value false
set_app_options -name route.track.crosstalk_driven -value false
set_app_options -name \
route.common.post.detail_route_redundant_via_insertion -value false
## eco route时可以使用,能减少绕线资源紧张区域的drc问题。
route_eco -utilize_dangling_wires true \
-reroute_modified_nets_first_then_others -open_net_driven true
先把open net连接上,初步解决drc
route_detail -max_number_iterations 20 -start_iteration 5 -incremental true
set_app_options -name route.common.connect.within_pins_by_layer_name -value {{ME1 via_standard_cell_pins} {ME2 off}}
## 能有效减少ME1层次的opc drc问题
另外配合
set_app_options -name \ route.auto_via_ladder.generate_center_track_on_off_grid_pattern_must_join_pin_shapes \
-value false
set_app_options -name route.detail.generate_extra_off_grid_pin_tracks -value
## 这两个命令让不在track上的pin出pin时产生一个track,避免出pin的via补金属,产生opc问题
如果还不能解决问题,请查看tech file,把tech file里metal 定义中的max width 改成成min width的大小,这个值太大,还会导致绕线产生宽金属和其他相邻绕线有spacing问题。
set_attribute [get_flat_nets *PORE ] -name physical_status -value locked
## 如果有global route的shape和via,就选中shape use 是global route的shape和via解锁删掉