Skip to content

Commit 94f6be8

Browse files
committed
place/route: write out *-failed.odb to allow for inspection of failures
Signed-off-by: Øyvind Harboe <[email protected]>
1 parent 8ed3693 commit 94f6be8

File tree

3 files changed

+34
-16
lines changed

3 files changed

+34
-16
lines changed

flow/scripts/detail_place.tcl

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,11 @@ source $::env(PLATFORM_DIR)/setRC.tcl
77
set_placement_padding -global \
88
-left $::env(CELL_PAD_IN_SITES_DETAIL_PLACEMENT) \
99
-right $::env(CELL_PAD_IN_SITES_DETAIL_PLACEMENT)
10-
detailed_placement
10+
set result [catch {detailed_placement} errMsg]
11+
if {$result != 0} {
12+
write_db $::env(RESULTS_DIR)/3_5_place_dp-failed.odb
13+
error $errMsg
14+
}
1115

1216
if {[info exists ::env(ENABLE_DPO)] && $::env(ENABLE_DPO)} {
1317
if {[info exist ::env(DPO_MAX_DISPLACEMENT)]} {

flow/scripts/global_place.tcl

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -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

5360
estimate_parasitics -placement

flow/scripts/global_route.tcl

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,18 @@ if {[info exist env(FASTROUTE_TCL)]} {
2121
#
2222
# If GLOBAL_ROUTE_ARGS is specified, then we do only what the
2323
# GLOBAL_ROUTE_ARGS specifies.
24-
global_route -guide_file $env(RESULTS_DIR)/route.guide \
25-
-congestion_report_file $env(REPORTS_DIR)/congestion.rpt \
26-
{*}[expr {[info exists ::env(GLOBAL_ROUTE_ARGS)] ? $::env(GLOBAL_ROUTE_ARGS) : \
27-
{-congestion_iterations 30 -congestion_report_iter_step 5 -verbose}}]
24+
proc do_global_route {} {
25+
global_route -guide_file $::env(RESULTS_DIR)/route.guide \
26+
-congestion_report_file $::env(REPORTS_DIR)/congestion.rpt \
27+
{*}[expr {[info exists ::env(GLOBAL_ROUTE_ARGS)] ? $::env(GLOBAL_ROUTE_ARGS) : \
28+
{-congestion_iterations 30 -congestion_report_iter_step 5 -verbose}}]
29+
}
2830

31+
set result [catch {do_global_route} errMsg]
32+
if {$result != 0} {
33+
write_db $::env(RESULTS_DIR)/5_1_grt-failed.odb
34+
error $errMsg
35+
}
2936

3037
set_placement_padding -global \
3138
-left $::env(CELL_PAD_IN_SITES_DETAIL_PLACEMENT) \

0 commit comments

Comments
 (0)