Skip to content

Commit db5de8b

Browse files
committed
placement: run global placement once if IO placement is provided
Signed-off-by: Øyvind Harboe <[email protected]>
1 parent c510cd1 commit db5de8b

File tree

8 files changed

+30
-41
lines changed

8 files changed

+30
-41
lines changed

flow/Makefile

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -460,33 +460,31 @@ place: $(RESULTS_DIR)/3_place.odb \
460460
# ==============================================================================
461461
# STEP 1: Global placement without placed IOs, timing-driven, and routability-driven.
462462
#-------------------------------------------------------------------------------
463-
$(eval $(call do-step,3_1_place_gp_skip_io,$(RESULTS_DIR)/2_floorplan.odb $(RESULTS_DIR)/2_floorplan.sdc $(LIB_FILES),global_place_skip_io))
464-
465-
$(eval $(call do-step,3_2_place_iop,$(RESULTS_DIR)/3_1_place_gp_skip_io.odb $(IO_CONSTRAINTS),io_placement))
463+
$(eval $(call do-step,3_1_place_iop,$(RESULTS_DIR)/2_floorplan.odb $(RESULTS_DIR)/2_floorplan.sdc $(IO_CONSTRAINTS),io_placement))
466464

467465
# STEP 3: Global placement with placed IOs, timing-driven, and routability-driven.
468466
#-------------------------------------------------------------------------------
469-
$(eval $(call do-step,3_3_place_gp,$(RESULTS_DIR)/3_2_place_iop.odb $(RESULTS_DIR)/2_floorplan.sdc $(LIB_FILES),global_place))
467+
$(eval $(call do-step,3_2_place_gp,$(RESULTS_DIR)/3_1_place_iop.odb $(RESULTS_DIR)/2_floorplan.sdc $(LIB_FILES),global_place))
470468

471469
# STEP 4: Resizing & Buffering
472470
#-------------------------------------------------------------------------------
473-
$(eval $(call do-step,3_4_place_resized,$(RESULTS_DIR)/3_3_place_gp.odb $(RESULTS_DIR)/2_floorplan.sdc,resize))
471+
$(eval $(call do-step,3_3_place_resized,$(RESULTS_DIR)/3_2_place_gp.odb $(RESULTS_DIR)/2_floorplan.sdc,resize))
474472

475473
.PHONY: clean_resize
476474
clean_resize:
477-
rm -f $(RESULTS_DIR)/3_4_place_resized.odb
475+
rm -f $(RESULTS_DIR)/3_3_place_resized.odb
478476

479477
# STEP 5: Detail placement
480478
#-------------------------------------------------------------------------------
481-
$(eval $(call do-step,3_5_place_dp,$(RESULTS_DIR)/3_4_place_resized.odb,detail_place))
479+
$(eval $(call do-step,3_4_place_dp,$(RESULTS_DIR)/3_3_place_resized.odb,detail_place))
482480

483-
$(eval $(call do-copy,3_place,3_5_place_dp.odb,))
481+
$(eval $(call do-copy,3_place,3_4_place_dp.odb,))
484482

485483
$(eval $(call do-copy,3_place,2_floorplan.sdc,,.sdc))
486484

487485
.PHONY: do-place
488486
do-place:
489-
$(UNSET_AND_MAKE) do-3_1_place_gp_skip_io do-3_2_place_iop do-3_3_place_gp do-3_4_place_resized do-3_5_place_dp do-3_place do-3_place.sdc
487+
$(UNSET_AND_MAKE) do-3_1_place_iop do-3_2_place_gp do-3_3_place_resized do-3_4_place_dp do-3_place do-3_place.sdc
490488

491489
# Clean Targets
492490
#-------------------------------------------------------------------------------

flow/scripts/detail_place.tcl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
utl::set_metrics_stage "detailedplace__{}"
22
source $::env(SCRIPTS_DIR)/load.tcl
33
erase_non_stage_variables place
4-
load_design 3_4_place_resized.odb 2_floorplan.sdc
4+
load_design 3_3_place_resized.odb 2_floorplan.sdc
55

66
source $::env(PLATFORM_DIR)/setRC.tcl
77

@@ -32,10 +32,10 @@ proc do_dpl { } {
3232

3333
set result [catch { do_dpl } errMsg]
3434
if { $result != 0 } {
35-
write_db $::env(RESULTS_DIR)/3_5_place_dp-failed.odb
35+
write_db $::env(RESULTS_DIR)/3_4_place_dp-failed.odb
3636
error $errMsg
3737
}
3838

3939
report_metrics 3 "detailed place" true false
4040

41-
write_db $::env(RESULTS_DIR)/3_5_place_dp.odb
41+
write_db $::env(RESULTS_DIR)/3_4_place_dp.odb

flow/scripts/global_place.tcl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
utl::set_metrics_stage "globalplace__{}"
22
source $::env(SCRIPTS_DIR)/load.tcl
33
erase_non_stage_variables place
4-
load_design 3_2_place_iop.odb 2_floorplan.sdc
4+
load_design 3_1_place_iop.odb 2_floorplan.sdc
55

66
set_dont_use $::env(DONT_USE_CELLS)
77

@@ -53,7 +53,7 @@ proc do_placement { global_placement_args } {
5353

5454
set result [catch { do_placement $global_placement_args } errMsg]
5555
if { $result != 0 } {
56-
write_db $::env(RESULTS_DIR)/3_3_place_gp-failed.odb
56+
write_db $::env(RESULTS_DIR)/3_2_place_gp-failed.odb
5757
error $errMsg
5858
}
5959

@@ -66,4 +66,4 @@ if { [env_var_equals CLUSTER_FLOPS 1] } {
6666

6767
report_metrics 3 "global place" false false
6868

69-
write_db $::env(RESULTS_DIR)/3_3_place_gp.odb
69+
write_db $::env(RESULTS_DIR)/3_2_place_gp.odb

flow/scripts/global_place_skip_io.tcl

Lines changed: 0 additions & 14 deletions
This file was deleted.

flow/scripts/io_placement.tcl

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,18 @@ if {
66
![env_var_exists_and_non_empty FOOTPRINT] &&
77
![env_var_exists_and_non_empty FOOTPRINT_TCL]
88
} {
9-
load_design 3_1_place_gp_skip_io.odb 2_floorplan.sdc
9+
load_design 2_floorplan.odb 2_floorplan.sdc
10+
# Need some information to do IO placement, so do a global placement
11+
log_cmd global_placement -skip_io -density [place_density_with_lb_addon] \
12+
-pad_left $::env(CELL_PAD_IN_SITES_GLOBAL_PLACEMENT) \
13+
-pad_right $::env(CELL_PAD_IN_SITES_GLOBAL_PLACEMENT) \
14+
{*}[env_var_or_empty GLOBAL_PLACEMENT_ARGS]
1015
log_cmd place_pins \
1116
-hor_layers $::env(IO_PLACER_H) \
1217
-ver_layers $::env(IO_PLACER_V) \
1318
{*}[env_var_or_empty PLACE_PINS_ARGS]
14-
write_db $::env(RESULTS_DIR)/3_2_place_iop.odb
15-
write_pin_placement $::env(RESULTS_DIR)/3_2_place_iop.tcl
19+
write_db $::env(RESULTS_DIR)/3_1_place_iop.odb
20+
write_pin_placement $::env(RESULTS_DIR)/3_1_place_iop.tcl
1621
} else {
17-
log_cmd exec cp $::env(RESULTS_DIR)/3_1_place_gp_skip_io.odb $::env(RESULTS_DIR)/3_2_place_iop.odb
22+
log_cmd exec cp $::env(RESULTS_DIR)/2_floorplan.odb $::env(RESULTS_DIR)/3_1_place_iop.odb
1823
}

flow/scripts/resize.tcl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
utl::set_metrics_stage "placeopt__{}"
22
source $::env(SCRIPTS_DIR)/load.tcl
33
erase_non_stage_variables place
4-
load_design 3_3_place_gp.odb 2_floorplan.sdc
4+
load_design 3_2_place_gp.odb 2_floorplan.sdc
55

66
estimate_parasitics -placement
77

@@ -32,4 +32,4 @@ report_metrics 3 "resizer" true false
3232
puts "Instance count before $instance_count_before, after [sta::network_leaf_instance_count]"
3333
puts "Pin count before $pin_count_before, after [sta::network_leaf_pin_count]"
3434

35-
write_db $::env(RESULTS_DIR)/3_4_place_resized.odb
35+
write_db $::env(RESULTS_DIR)/3_3_place_resized.odb

flow/test/test_delta_debug.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ cd "$(dirname "$0")/.."
1111

1212
echo "Test deltaDebug.py with a make invocation"
1313
make DESIGN_CONFIG=designs/asap7/gcd/config.mk clean_all floorplan
14-
openroad -exit -python ../tools/OpenROAD/etc/deltaDebug.py --persistence 2 --use_stdout --error_string " 100 | " --base_db_path results/asap7/gcd/base/2_floorplan.odb --step "make DESIGN_CONFIG=designs/asap7/gcd/config.mk do-3_1_place_gp_skip_io"
14+
openroad -exit -python ../tools/OpenROAD/etc/deltaDebug.py --persistence 2 --use_stdout --error_string " 100 | " --base_db_path results/asap7/gcd/base/2_floorplan.odb --step "make DESIGN_CONFIG=designs/asap7/gcd/config.mk do-3_1_place_iop"
1515

1616
echo "Test deltaDebug.py with a make issue"
1717
testname=uart
@@ -24,4 +24,4 @@ mkdir -p results/delta-debug/
2424
cd results/delta-debug/
2525
tar --strip-components=1 -xzf ../../$latest_file
2626
sed -i 's/openroad -no_init/openroad -exit -no_init/g' run-me-$testname-asap7-base.sh
27-
openroad -exit -python ../../../tools/OpenROAD/etc/deltaDebug.py --persistence 3 --use_stdout --error_string " 100 | " --base_db_path results/asap7/$testname/base/3_2_place_iop.odb --step ./run-me-$testname-asap7-base.sh --multiplier 2
27+
openroad -exit -python ../../../tools/OpenROAD/etc/deltaDebug.py --persistence 3 --use_stdout --error_string " 100 | " --base_db_path results/asap7/$testname/base/3_1_place_iop.odb --step ./run-me-$testname-asap7-base.sh --multiplier 2

flow/util/genMetrics.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -301,10 +301,10 @@ def extract_metrics(
301301
extractGnuTime(
302302
"globalplace_skip_io", metrics_dict, logPath + "/3_1_place_gp_skip_io.log"
303303
)
304-
extractGnuTime("globalplace_io", metrics_dict, logPath + "/3_2_place_iop.log")
305-
extractGnuTime("globalplace", metrics_dict, logPath + "/3_3_place_gp.log")
306-
extractGnuTime("placeopt", metrics_dict, logPath + "/3_4_place_resized.log")
307-
extractGnuTime("detailedplace", metrics_dict, logPath + "/3_5_place_dp.log")
304+
extractGnuTime("globalplace_io", metrics_dict, logPath + "/3_1_place_iop.log")
305+
extractGnuTime("globalplace", metrics_dict, logPath + "/3_2_place_gp.log")
306+
extractGnuTime("placeopt", metrics_dict, logPath + "/3_3_place_resized.log")
307+
extractGnuTime("detailedplace", metrics_dict, logPath + "/3_4_place_dp.log")
308308
extractGnuTime("cts", metrics_dict, logPath + "/4_1_cts.log")
309309
extractGnuTime("globalroute", metrics_dict, logPath + "/5_1_grt.log")
310310
extractGnuTime("fillcell", metrics_dict, logPath + "/5_2_fillcell.log")

0 commit comments

Comments
 (0)