Skip to content

Commit bb00622

Browse files
committed
flow: coarse/fine setup-repair phases (DO NOT MERGE - eval)
Sequence repair_timing setup repair coarse->fine across the flow using the COARSE/FINE -phases tokens from the OpenROAD submodule: - floorplan: COARSE (+ skip last gasp) - resize (3_4): COARSE FINE (opt-in via ENABLE_PLACE_REPAIR_TIMING) - post-dpl (new 3_6 target): COARSE FINE - CTS: COARSE FINE - global route: COARSE FINE Bumps tools/OpenROAD to VLSIDA/OpenROAD @ 9ddd6967fe (branch coarse-fine), which adds the COARSE/FINE phase tokens and two move-generator crash fixes. Evaluation only; depends on an out-of-tree OpenROAD branch -> not for merge. Signed-off-by: Matthew Guthaus <mrg@ucsc.edu>
1 parent c9c22ca commit bb00622

8 files changed

Lines changed: 41 additions & 8 deletions

File tree

flow/Makefile

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -475,13 +475,17 @@ clean_resize:
475475
#-------------------------------------------------------------------------------
476476
$(eval $(call do-step,3_5_place_dp,$(RESULTS_DIR)/3_4_place_resized.odb,detail_place))
477477

478-
$(eval $(call do-copy,3_place,3_5_place_dp.odb,))
478+
# STEP 6: Post-detailed-placement timing repair (coarse and fine moves)
479+
#-------------------------------------------------------------------------------
480+
$(eval $(call do-step,3_6_place_repair_timing,$(RESULTS_DIR)/3_5_place_dp.odb $(RESULTS_DIR)/2_floorplan.sdc,repair_timing_post_place))
481+
482+
$(eval $(call do-copy,3_place,3_6_place_repair_timing.odb,))
479483

480484
$(eval $(call do-copy,3_place,2_floorplan.sdc,,.sdc))
481485

482486
.PHONY: do-place
483487
do-place:
484-
$(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
488+
$(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_6_place_repair_timing do-3_place do-3_place.sdc
485489

486490
# Clean Targets
487491
#-------------------------------------------------------------------------------

flow/scripts/cts.tcl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ if { !$::env(SKIP_CTS_REPAIR_TIMING) } {
6666
write_lec_verilog 4_before_rsz_lec.v
6767
}
6868

69-
repair_timing_helper
69+
repair_timing_helper -phases "COARSE FINE"
7070

7171
if { $lec_enabled } {
7272
write_lec_verilog 4_after_rsz_lec.v

flow/scripts/floorplan.tcl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -157,8 +157,8 @@ if { $::env(REMOVE_ABC_BUFFERS) } {
157157
# remove buffers inserted by yosys/abc
158158
remove_buffers
159159
} else {
160-
# Skip clone & split
161-
repair_timing_helper -setup -skip_last_gasp -sequence "unbuffer,sizeup,swap,vt_swap"
160+
# Coarse optimization only (netlist-changing moves), skip last gasp.
161+
repair_timing_helper -setup -skip_last_gasp -phases "COARSE"
162162
}
163163

164164
puts "Default units for flow"

flow/scripts/global_route.tcl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ proc global_route_helper { } {
7373
puts "Repair setup and hold violations..."
7474
log_cmd estimate_parasitics -global_routing
7575

76-
repair_timing_helper
76+
repair_timing_helper -phases "COARSE FINE"
7777

7878
if { $::env(DETAILED_METRICS) } {
7979
report_metrics 5 "global route post repair timing"
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# Post-detailed-placement timing repair: coarse + fine.
2+
# Runs after detailed placement (3_5_place_dp) and before CTS, on placement
3+
# parasitics; we re-legalize afterward.
4+
#
5+
# Note: "reroute" (part of FINE) is a no-op here -- it needs global routes
6+
# (stage 5), which don't exist yet at post-placement.
7+
utl::set_metrics_stage "place_repair_timing__{}"
8+
source $::env(SCRIPTS_DIR)/load.tcl
9+
erase_non_stage_variables place
10+
load_design 3_5_place_dp.odb 2_floorplan.sdc
11+
12+
set_placement_padding -global \
13+
-left $::env(CELL_PAD_IN_SITES_DETAIL_PLACEMENT) \
14+
-right $::env(CELL_PAD_IN_SITES_DETAIL_PLACEMENT)
15+
16+
puts "Repair setup violations after detailed placement (coarse + fine)..."
17+
log_cmd estimate_parasitics -placement
18+
repair_timing_helper -setup -phases "COARSE FINE"
19+
20+
# Re-legalize after timing repair.
21+
set dpl_args {}
22+
append_env_var dpl_args USE_NEGOTIATION -use_negotiation 0
23+
log_cmd detailed_placement {*}$dpl_args
24+
25+
log_cmd estimate_parasitics -placement
26+
report_metrics 3 "place repair timing" true false
27+
28+
orfs_write_db $::env(RESULTS_DIR)/3_6_place_repair_timing.odb

flow/scripts/resize.tcl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ if { $::env(ENABLE_PLACE_REPAIR_TIMING) } {
2929
puts "Repair setup and hold violations..."
3030
log_cmd estimate_parasitics -placement
3131

32-
repair_timing_helper
32+
repair_timing_helper -phases "COARSE FINE"
3333
}
3434

3535
# post report

flow/scripts/util.tcl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ proc repair_timing_helper { args } {
4040
append_env_var additional_args SKIP_VT_SWAP -skip_vt_swap 0
4141
append_env_var additional_args SKIP_CRIT_VT_SWAP -skip_crit_vt_swap 0
4242
append_env_var additional_args MATCH_CELL_FOOTPRINT -match_cell_footprint 0
43+
append_env_var additional_args REPAIR_TIMING_PHASES -phases 1
4344
lappend additional_args {*}$args -verbose
4445

4546
log_cmd repair_timing {*}$additional_args

0 commit comments

Comments
 (0)