@@ -36,18 +36,25 @@ if {$::env(GPL_TIMING_DRIVEN)} {
3636 append global_placement_args " -timing_driven"
3737}
3838
39+ proc do_placement {place_density global_placement_args} {
40+ if { 0 != [llength [array get ::env GLOBAL_PLACEMENT_ARGS]] } {
41+ global_placement -density $place_density \
42+ -pad_left $::env(CELL_PAD_IN_SITES_GLOBAL_PLACEMENT) \
43+ -pad_right $::env(CELL_PAD_IN_SITES_GLOBAL_PLACEMENT) \
44+ {*}$global_placement_args \
45+ {*}$::env(GLOBAL_PLACEMENT_ARGS)
46+ } else {
47+ global_placement -density $place_density \
48+ -pad_left $::env(CELL_PAD_IN_SITES_GLOBAL_PLACEMENT) \
49+ -pad_right $::env(CELL_PAD_IN_SITES_GLOBAL_PLACEMENT) \
50+ {*}$global_placement_args
51+ }
52+ }
3953
40- if { 0 != [llength [array get ::env GLOBAL_PLACEMENT_ARGS]] } {
41- global_placement -density $place_density \
42- -pad_left $::env(CELL_PAD_IN_SITES_GLOBAL_PLACEMENT) \
43- -pad_right $::env(CELL_PAD_IN_SITES_GLOBAL_PLACEMENT) \
44- {*}$global_placement_args \
45- {*}$::env(GLOBAL_PLACEMENT_ARGS)
46- } else {
47- global_placement -density $place_density \
48- -pad_left $::env(CELL_PAD_IN_SITES_GLOBAL_PLACEMENT) \
49- -pad_right $::env(CELL_PAD_IN_SITES_GLOBAL_PLACEMENT) \
50- {*}$global_placement_args
54+ set result [catch {do_placement $place_density $global_placement_args } errMsg]
55+ if {$result != 0} {
56+ write_db $::env(RESULTS_DIR) /3_3_place_gp-failed.odb
57+ error $errMsg
5158}
5259
5360estimate_parasitics -placement
0 commit comments