diff --git a/docs/user/FlowVariables.md b/docs/user/FlowVariables.md
index 8d32a9d6adf..5e47afd713c 100644
--- a/docs/user/FlowVariables.md
+++ b/docs/user/FlowVariables.md
@@ -277,6 +277,7 @@ configuration file.
| SEAL_GDS| Seal macro to place around the design.| |
| SEC_CHECK| Perform a sequential equivalence check between the initial synthesis netlist and final netlist with the Kepler Formal PDR engine. If this fails, report an issue to OpenROAD.| 0|
| SETUP_MOVE_SEQUENCE| Passed as -sequence to repair_timing. This should be a string of move keywords separated by commas.| |
+| SETUP_REPAIR_PHASES| Passed as -phases to repair_timing. This should be a string of setup repair phase names separated by spaces. Set to PARALLEL_EVAL to repair setup timing with the experimental parallel evaluation policy. When unset, repair_timing runs its default phases.| |
| SETUP_SLACK_MARGIN| Specifies a time margin for the slack when fixing setup violations. This option allows you to overfix or underfix(negative value, terminate retiming before 0 or positive slack). See HOLD_SLACK_MARGIN for more details.| 0|
| SKIP_ANTENNA_REPAIR| Skips antenna repair entirely.| 0|
| SKIP_ANTENNA_REPAIR_POST_DRT| Skips antenna repair post-detailed routing.| 0|
@@ -457,6 +458,7 @@ configuration file.
- [RTLMP_RPT_DIR](#RTLMP_RPT_DIR)
- [RTLMP_WIRELENGTH_WT](#RTLMP_WIRELENGTH_WT)
- [SETUP_MOVE_SEQUENCE](#SETUP_MOVE_SEQUENCE)
+- [SETUP_REPAIR_PHASES](#SETUP_REPAIR_PHASES)
- [SETUP_SLACK_MARGIN](#SETUP_SLACK_MARGIN)
- [SKIP_BUFFER_REMOVAL](#SKIP_BUFFER_REMOVAL)
- [SKIP_CRIT_VT_SWAP](#SKIP_CRIT_VT_SWAP)
@@ -516,6 +518,7 @@ configuration file.
- [PRE_RESIZE_TCL](#PRE_RESIZE_TCL)
- [REPORT_ENDPOINT_SLACK](#REPORT_ENDPOINT_SLACK)
- [ROUTING_LAYER_ADJUSTMENT](#ROUTING_LAYER_ADJUSTMENT)
+- [SETUP_REPAIR_PHASES](#SETUP_REPAIR_PHASES)
- [SKIP_REPORT_METRICS](#SKIP_REPORT_METRICS)
- [TNS_END_PERCENT](#TNS_END_PERCENT)
@@ -540,6 +543,7 @@ configuration file.
- [REPORT_CLOCK_SKEW](#REPORT_CLOCK_SKEW)
- [REPORT_ENDPOINT_SLACK](#REPORT_ENDPOINT_SLACK)
- [SETUP_MOVE_SEQUENCE](#SETUP_MOVE_SEQUENCE)
+- [SETUP_REPAIR_PHASES](#SETUP_REPAIR_PHASES)
- [SETUP_SLACK_MARGIN](#SETUP_SLACK_MARGIN)
- [SKIP_BUFFER_REMOVAL](#SKIP_BUFFER_REMOVAL)
- [SKIP_CRIT_VT_SWAP](#SKIP_CRIT_VT_SWAP)
@@ -571,6 +575,7 @@ configuration file.
- [REPORT_ENDPOINT_SLACK](#REPORT_ENDPOINT_SLACK)
- [ROUTING_LAYER_ADJUSTMENT](#ROUTING_LAYER_ADJUSTMENT)
- [SETUP_MOVE_SEQUENCE](#SETUP_MOVE_SEQUENCE)
+- [SETUP_REPAIR_PHASES](#SETUP_REPAIR_PHASES)
- [SETUP_SLACK_MARGIN](#SETUP_SLACK_MARGIN)
- [SKIP_ANTENNA_REPAIR](#SKIP_ANTENNA_REPAIR)
- [SKIP_BUFFER_REMOVAL](#SKIP_BUFFER_REMOVAL)
diff --git a/flow/designs/asap7/aes/config.mk b/flow/designs/asap7/aes/config.mk
index ec3f9016cf4..8112157a80b 100644
--- a/flow/designs/asap7/aes/config.mk
+++ b/flow/designs/asap7/aes/config.mk
@@ -11,6 +11,7 @@ export CORE_ASPECT_RATIO = 1
export CORE_MARGIN = 2
export PLACE_DENSITY = 0.65
export TNS_END_PERCENT = 100
+export SETUP_REPAIR_PHASES = PARALLEL_EVAL
export GPL_PLACE_IOS = 1
ifeq ($(FLOW_VARIANT),top)
diff --git a/flow/designs/asap7/aes_lvt/config.mk b/flow/designs/asap7/aes_lvt/config.mk
index aa5a147286a..e9bde4f8fd7 100644
--- a/flow/designs/asap7/aes_lvt/config.mk
+++ b/flow/designs/asap7/aes_lvt/config.mk
@@ -13,6 +13,7 @@ export CORE_ASPECT_RATIO = 1
export CORE_MARGIN = 2
export PLACE_DENSITY = 0.65
export TNS_END_PERCENT = 100
+export SETUP_REPAIR_PHASES = PARALLEL_EVAL
export ASAP7_USE_VT = LVT
diff --git a/flow/designs/asap7/chi_async_bridge/config.mk b/flow/designs/asap7/chi_async_bridge/config.mk
index 1f9e2cda64f..e8691faa2d3 100644
--- a/flow/designs/asap7/chi_async_bridge/config.mk
+++ b/flow/designs/asap7/chi_async_bridge/config.mk
@@ -37,3 +37,4 @@ export VERILOG_TOP_PARAMS = REQ_W 32 RSP_W 16 DAT_W 64 SNP_W 24 DEPTH 4
else ifeq ($(FLOW_VARIANT),medium)
export VERILOG_TOP_PARAMS = DEPTH 4
endif
+export SETUP_REPAIR_PHASES = PARALLEL_EVAL
diff --git a/flow/designs/asap7/ethmac_lvt/config.mk b/flow/designs/asap7/ethmac_lvt/config.mk
index b670d5c4532..eee9cdc19a9 100644
--- a/flow/designs/asap7/ethmac_lvt/config.mk
+++ b/flow/designs/asap7/ethmac_lvt/config.mk
@@ -17,3 +17,4 @@ export ASAP7_USE_VT = LVT
export RECOVER_POWER = 1
+export SETUP_REPAIR_PHASES = PARALLEL_EVAL
diff --git a/flow/designs/asap7/gcd/config.mk b/flow/designs/asap7/gcd/config.mk
index 6c6ea2046ac..f8567e0ba96 100644
--- a/flow/designs/asap7/gcd/config.mk
+++ b/flow/designs/asap7/gcd/config.mk
@@ -18,3 +18,4 @@ export GPL_PLACE_IOS = 1
export SKIP_LAST_GASP ?= 1
export SYNTH_USE_SYN = 1
+export SETUP_REPAIR_PHASES = PARALLEL_EVAL
diff --git a/flow/designs/asap7/ibex/config.mk b/flow/designs/asap7/ibex/config.mk
index 419c77f8c35..c66b82f84dc 100644
--- a/flow/designs/asap7/ibex/config.mk
+++ b/flow/designs/asap7/ibex/config.mk
@@ -27,6 +27,7 @@ export PLACE_DENSITY_LB_ADDON = 0.20
export ENABLE_DPO = 0
export TNS_END_PERCENT = 100
+export SETUP_REPAIR_PHASES = PARALLEL_EVAL
export SWAP_ARITH_OPERATORS = 1
export OPENROAD_HIERARCHICAL = 1
diff --git a/flow/designs/asap7/jpeg/config.mk b/flow/designs/asap7/jpeg/config.mk
index a711b732d22..3cc90bee690 100644
--- a/flow/designs/asap7/jpeg/config.mk
+++ b/flow/designs/asap7/jpeg/config.mk
@@ -14,6 +14,7 @@ export CORE_MARGIN = 2
export PLACE_DENSITY = 0.75
export TNS_END_PERCENT = 100
+export SETUP_REPAIR_PHASES = PARALLEL_EVAL
export GPL_PLACE_IOS = 1
export SYNTH_USE_SYN = 1
diff --git a/flow/designs/asap7/riscv32i/config.mk b/flow/designs/asap7/riscv32i/config.mk
index cfb6ed6adbf..a0f0ff033bb 100644
--- a/flow/designs/asap7/riscv32i/config.mk
+++ b/flow/designs/asap7/riscv32i/config.mk
@@ -23,6 +23,7 @@ export IO_CONSTRAINTS = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NICKNAME)/io.tcl
export RTLMP_MIN_CHANNEL_SIZE = 8 8
export TNS_END_PERCENT = 100
+export SETUP_REPAIR_PHASES = PARALLEL_EVAL
export CTS_CLUSTER_SIZE = 10
export CTS_CLUSTER_DIAMETER = 50
diff --git a/flow/designs/asap7/uart/config.mk b/flow/designs/asap7/uart/config.mk
index 2f9e4b7d942..9b5fc83c259 100644
--- a/flow/designs/asap7/uart/config.mk
+++ b/flow/designs/asap7/uart/config.mk
@@ -14,6 +14,7 @@ export GPL_PLACE_IOS = 1
export DIE_AREA = 0 0 17 17
export CORE_AREA = 1.08 1.08 16 16
export TNS_END_PERCENT = 100
+export SETUP_REPAIR_PHASES = PARALLEL_EVAL
export SKIP_GATE_CLONING = 1
export VERILOG_TOP_PARAMS = DATA_WIDTH 8
export SYNTH_HDL_FRONTEND = slang
diff --git a/flow/designs/gf12/aes/config.mk b/flow/designs/gf12/aes/config.mk
index fa0695bf0f2..da0a181b206 100644
--- a/flow/designs/gf12/aes/config.mk
+++ b/flow/designs/gf12/aes/config.mk
@@ -20,3 +20,4 @@ endif
export SWAP_ARITH_OPERATORS = 1
export OPENROAD_HIERARCHICAL = 1
+export SETUP_REPAIR_PHASES = PARALLEL_EVAL
diff --git a/flow/designs/gf12/ibex/config.mk b/flow/designs/gf12/ibex/config.mk
index 97ca1254c30..bcc6f5eb11a 100644
--- a/flow/designs/gf12/ibex/config.mk
+++ b/flow/designs/gf12/ibex/config.mk
@@ -23,3 +23,4 @@ export DESIGN_TYPE = CELL
else
export DESIGN_TYPE = CELL_NODEN
endif
+export SETUP_REPAIR_PHASES = PARALLEL_EVAL
diff --git a/flow/designs/gf12/tinyRocket/config.mk b/flow/designs/gf12/tinyRocket/config.mk
index 7863269420e..4561b386817 100644
--- a/flow/designs/gf12/tinyRocket/config.mk
+++ b/flow/designs/gf12/tinyRocket/config.mk
@@ -39,3 +39,4 @@ endif
export SWAP_ARITH_OPERATORS = 1
export OPENROAD_HIERARCHICAL = 1
+export SETUP_REPAIR_PHASES = PARALLEL_EVAL
diff --git a/flow/designs/gf180/aes-hybrid/config.mk b/flow/designs/gf180/aes-hybrid/config.mk
index 7da1e358274..6ad7c10e6e0 100644
--- a/flow/designs/gf180/aes-hybrid/config.mk
+++ b/flow/designs/gf180/aes-hybrid/config.mk
@@ -42,3 +42,4 @@ export DESIGN_TYPE = CELL
else
export DESIGN_TYPE = CELL_NODEN
endif
+export SETUP_REPAIR_PHASES = PARALLEL_EVAL
diff --git a/flow/designs/gf180/ibex/config.mk b/flow/designs/gf180/ibex/config.mk
index d41d237edd8..dfb4d78e385 100644
--- a/flow/designs/gf180/ibex/config.mk
+++ b/flow/designs/gf180/ibex/config.mk
@@ -18,3 +18,4 @@ export PLACE_DENSITY_LB_ADDON = 0.1
export SWAP_ARITH_OPERATORS = 1
export OPENROAD_HIERARCHICAL = 1
+export SETUP_REPAIR_PHASES = PARALLEL_EVAL
diff --git a/flow/designs/gf180/riscv32i/config.mk b/flow/designs/gf180/riscv32i/config.mk
index ce87ddef681..958598e1eec 100644
--- a/flow/designs/gf180/riscv32i/config.mk
+++ b/flow/designs/gf180/riscv32i/config.mk
@@ -8,6 +8,7 @@ export SDC_FILE = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NICKNAME)/constraint.
export CORE_UTILIZATION = 55
export PLACE_DENSITY_LB_ADDON = 0.2
export TNS_END_PERCENT = 100
+export SETUP_REPAIR_PHASES = PARALLEL_EVAL
export SKIP_GATE_CLONING = 1
export PLACE_PINS_ARGS = -min_distance 5
export IO_CONSTRAINTS = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NICKNAME)/io.tcl
diff --git a/flow/designs/ihp-sg13g2/gcd/config.mk b/flow/designs/ihp-sg13g2/gcd/config.mk
index a3d8798bbc0..788f1bfffa6 100644
--- a/flow/designs/ihp-sg13g2/gcd/config.mk
+++ b/flow/designs/ihp-sg13g2/gcd/config.mk
@@ -9,6 +9,7 @@ export USE_FILL = 1
export PLACE_DENSITY ?= 0.88
export CORE_UTILIZATION = 20
export TNS_END_PERCENT = 100
+export SETUP_REPAIR_PHASES = PARALLEL_EVAL
export SWAP_ARITH_OPERATORS = 1
export OPENROAD_HIERARCHICAL = 1
diff --git a/flow/designs/ihp-sg13g2/ibex/config.mk b/flow/designs/ihp-sg13g2/ibex/config.mk
index 7f3e9f4fc75..789cbd478ad 100644
--- a/flow/designs/ihp-sg13g2/ibex/config.mk
+++ b/flow/designs/ihp-sg13g2/ibex/config.mk
@@ -18,6 +18,7 @@ export ADDER_MAP_FILE :=
export CORE_UTILIZATION = 70
export PLACE_DENSITY_LB_ADDON = 0.2
export TNS_END_PERCENT = 100
+export SETUP_REPAIR_PHASES = PARALLEL_EVAL
export CTS_BUF_DISTANCE = 60
export SWAP_ARITH_OPERATORS = 1
diff --git a/flow/designs/ihp-sg13g2/riscv32i/config.mk b/flow/designs/ihp-sg13g2/riscv32i/config.mk
index 356106b551d..4aa59f484de 100644
--- a/flow/designs/ihp-sg13g2/riscv32i/config.mk
+++ b/flow/designs/ihp-sg13g2/riscv32i/config.mk
@@ -10,6 +10,7 @@ export USE_FILL = 1
export CORE_UTILIZATION = 60
export PLACE_DENSITY_LB_ADDON = 0.2
export TNS_END_PERCENT = 100
+export SETUP_REPAIR_PHASES = PARALLEL_EVAL
export CTS_BUF_DISTANCE = 60
export SWAP_ARITH_OPERATORS = 1
diff --git a/flow/designs/nangate45/aes/config.mk b/flow/designs/nangate45/aes/config.mk
index 2f7d50ef093..24a1b5d0121 100644
--- a/flow/designs/nangate45/aes/config.mk
+++ b/flow/designs/nangate45/aes/config.mk
@@ -9,6 +9,7 @@ export FLOORPLAN_DEF = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NICKNAME)/aes_ng45_fp
export PLACE_DENSITY_LB_ADDON = 0.20
export TNS_END_PERCENT = 100
+export SETUP_REPAIR_PHASES = PARALLEL_EVAL
# workaround for high congestion in post-grt repair
export SKIP_INCREMENTAL_REPAIR = 1
diff --git a/flow/designs/nangate45/ariane133/config.mk b/flow/designs/nangate45/ariane133/config.mk
index 97ae1e77f71..2daa782059f 100644
--- a/flow/designs/nangate45/ariane133/config.mk
+++ b/flow/designs/nangate45/ariane133/config.mk
@@ -29,3 +29,4 @@ export RTLMP_MAX_INST = 80000
export RTLMP_MIN_INST = 8000
export GPL_RANDOM_SEED = 3
+export SETUP_REPAIR_PHASES = PARALLEL_EVAL
diff --git a/flow/designs/nangate45/bp_be_top/config.mk b/flow/designs/nangate45/bp_be_top/config.mk
index 28e3e2a6ad2..3b623cce365 100644
--- a/flow/designs/nangate45/bp_be_top/config.mk
+++ b/flow/designs/nangate45/bp_be_top/config.mk
@@ -24,6 +24,7 @@ export RTLMP_MIN_CHANNEL_SIZE = 20 20
export PLACE_DENSITY_LB_ADDON = 0.10
export TNS_END_PERCENT = 100
+export SETUP_REPAIR_PHASES = PARALLEL_EVAL
export CTS_CLUSTER_SIZE = 30
export CTS_CLUSTER_DIAMETER = 50
diff --git a/flow/designs/nangate45/bp_multi_top/config.mk b/flow/designs/nangate45/bp_multi_top/config.mk
index f4906828fab..e2736092ba1 100644
--- a/flow/designs/nangate45/bp_multi_top/config.mk
+++ b/flow/designs/nangate45/bp_multi_top/config.mk
@@ -36,3 +36,4 @@ export SKIP_GATE_CLONING = 1
export SWAP_ARITH_OPERATORS = 1
export OPENROAD_HIERARCHICAL = 1
+export SETUP_REPAIR_PHASES = PARALLEL_EVAL
diff --git a/flow/designs/nangate45/cva6/config.mk b/flow/designs/nangate45/cva6/config.mk
index 46216584f01..575ba20417d 100644
--- a/flow/designs/nangate45/cva6/config.mk
+++ b/flow/designs/nangate45/cva6/config.mk
@@ -104,3 +104,4 @@ export SYNTH_CANONICALIZE_TCL = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NAME)/canoni
export SWAP_ARITH_OPERATORS = 1
export OPENROAD_HIERARCHICAL = 1
+export SETUP_REPAIR_PHASES = PARALLEL_EVAL
diff --git a/flow/designs/nangate45/dynamic_node/config.mk b/flow/designs/nangate45/dynamic_node/config.mk
index 37530d83b7e..493001c412b 100644
--- a/flow/designs/nangate45/dynamic_node/config.mk
+++ b/flow/designs/nangate45/dynamic_node/config.mk
@@ -12,6 +12,7 @@ export CORE_MARGIN = 5
export PLACE_DENSITY_LB_ADDON = 0.20
export TNS_END_PERCENT = 100
+export SETUP_REPAIR_PHASES = PARALLEL_EVAL
export GPL_PLACE_IOS = 1
export SWAP_ARITH_OPERATORS = 1
diff --git a/flow/designs/nangate45/ibex/config.mk b/flow/designs/nangate45/ibex/config.mk
index 76205ee0fe7..1b30aa0ecec 100644
--- a/flow/designs/nangate45/ibex/config.mk
+++ b/flow/designs/nangate45/ibex/config.mk
@@ -15,5 +15,6 @@ export SDC_FILE = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NICKNAME)/constraint.
export CORE_UTILIZATION ?= 50
export PLACE_DENSITY_LB_ADDON = 0.20
export TNS_END_PERCENT = 100
+export SETUP_REPAIR_PHASES = PARALLEL_EVAL
export GPL_PLACE_IOS = 1
diff --git a/flow/designs/nangate45/tinyRocket/config.mk b/flow/designs/nangate45/tinyRocket/config.mk
index d86621ba340..dd076c7298f 100644
--- a/flow/designs/nangate45/tinyRocket/config.mk
+++ b/flow/designs/nangate45/tinyRocket/config.mk
@@ -21,3 +21,4 @@ export CORE_UTILIZATION = 60
export CORE_ASPECT_RATIO = 1
export CORE_MARGIN = 2
export PLACE_DENSITY = 0.75
+export SETUP_REPAIR_PHASES = PARALLEL_EVAL
diff --git a/flow/designs/sky130hd/aes/config.mk b/flow/designs/sky130hd/aes/config.mk
index 3f095cd981f..f69ac66aeb0 100644
--- a/flow/designs/sky130hd/aes/config.mk
+++ b/flow/designs/sky130hd/aes/config.mk
@@ -13,6 +13,7 @@ export CORE_MARGIN = 2
export PLACE_DENSITY_LB_ADDON = 0.2
export TNS_END_PERCENT = 100
+export SETUP_REPAIR_PHASES = PARALLEL_EVAL
export FASTROUTE_TCL = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NICKNAME)/fastroute.tcl
diff --git a/flow/designs/sky130hd/chameleon/config.mk b/flow/designs/sky130hd/chameleon/config.mk
index 6bbe14781d4..471431dc901 100644
--- a/flow/designs/sky130hd/chameleon/config.mk
+++ b/flow/designs/sky130hd/chameleon/config.mk
@@ -48,5 +48,6 @@ export ADDITIONAL_LEFS = $(DESIGN_DIR)/lef/apb_sys_0.lef \
export FP_PDN_RAIL_WIDTH = 0.48
export FP_PDN_RAIL_OFFSET = 0
export TNS_END_PERCENT = 100
+export SETUP_REPAIR_PHASES = PARALLEL_EVAL
export RTLMP_MIN_CHANNEL_SIZE = 70 70
diff --git a/flow/designs/sky130hd/gcd/config.mk b/flow/designs/sky130hd/gcd/config.mk
index 40784a95356..8fbf6b530a3 100644
--- a/flow/designs/sky130hd/gcd/config.mk
+++ b/flow/designs/sky130hd/gcd/config.mk
@@ -9,5 +9,6 @@ export ADDER_MAP_FILE :=
export CORE_UTILIZATION = 38
export TNS_END_PERCENT = 100
+export SETUP_REPAIR_PHASES = PARALLEL_EVAL
export SWAP_ARITH_OPERATORS = 1
export OPENROAD_HIERARCHICAL = 1
diff --git a/flow/designs/sky130hd/ibex/config.mk b/flow/designs/sky130hd/ibex/config.mk
index 76c8b14dd08..6014ce62555 100644
--- a/flow/designs/sky130hd/ibex/config.mk
+++ b/flow/designs/sky130hd/ibex/config.mk
@@ -18,6 +18,7 @@ export ADDER_MAP_FILE :=
export CORE_UTILIZATION = 50
export PLACE_DENSITY_LB_ADDON = 0.25
export TNS_END_PERCENT = 100
+export SETUP_REPAIR_PHASES = PARALLEL_EVAL
export FASTROUTE_TCL = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NICKNAME)/fastroute.tcl
diff --git a/flow/designs/sky130hd/jpeg/config.mk b/flow/designs/sky130hd/jpeg/config.mk
index 3b86ccc5488..7ece1345a32 100644
--- a/flow/designs/sky130hd/jpeg/config.mk
+++ b/flow/designs/sky130hd/jpeg/config.mk
@@ -9,5 +9,6 @@ export SDC_FILE = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NICKNAME)/constraint.
export CORE_UTILIZATION = 50
export PLACE_DENSITY_LB_ADDON = 0.15
export TNS_END_PERCENT = 100
+export SETUP_REPAIR_PHASES = PARALLEL_EVAL
export FASTROUTE_TCL = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NICKNAME)/fastroute.tcl
diff --git a/flow/designs/sky130hd/riscv32i/config.mk b/flow/designs/sky130hd/riscv32i/config.mk
index 3b1c3d064b2..51f5d14291d 100644
--- a/flow/designs/sky130hd/riscv32i/config.mk
+++ b/flow/designs/sky130hd/riscv32i/config.mk
@@ -11,3 +11,4 @@ export PLACE_DENSITY_LB_ADDON = 0.2
#export SWAP_ARITH_OPERATORS = 1
#export OPENROAD_HIERARCHICAL = 1
+export SETUP_REPAIR_PHASES = PARALLEL_EVAL
diff --git a/flow/designs/sky130hs/aes/config.mk b/flow/designs/sky130hs/aes/config.mk
index 2bbd8c38eb0..6989c901247 100644
--- a/flow/designs/sky130hs/aes/config.mk
+++ b/flow/designs/sky130hs/aes/config.mk
@@ -11,6 +11,7 @@ export CORE_MARGIN = 2
export PLACE_DENSITY_LB_ADDON = 0.25
export TNS_END_PERCENT = 100
+export SETUP_REPAIR_PHASES = PARALLEL_EVAL
export GPL_PLACE_IOS = 1
export CTS_CLUSTER_SIZE = 10
diff --git a/flow/designs/sky130hs/ibex/config.mk b/flow/designs/sky130hs/ibex/config.mk
index 12be88cdb5b..3f1f629abc1 100644
--- a/flow/designs/sky130hs/ibex/config.mk
+++ b/flow/designs/sky130hs/ibex/config.mk
@@ -15,5 +15,6 @@ export SDC_FILE = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NICKNAME)/constraint.
export CORE_UTILIZATION = 60
export PLACE_DENSITY_LB_ADDON = 0.20
export TNS_END_PERCENT = 100
+export SETUP_REPAIR_PHASES = PARALLEL_EVAL
export GPL_PLACE_IOS = 1
diff --git a/flow/designs/sky130hs/jpeg/config.mk b/flow/designs/sky130hs/jpeg/config.mk
index 22fca150eee..90cd851ed5d 100644
--- a/flow/designs/sky130hs/jpeg/config.mk
+++ b/flow/designs/sky130hs/jpeg/config.mk
@@ -13,6 +13,7 @@ export CORE_MARGIN = 2
export PLACE_DENSITY_LB_ADDON = 0.25
export TNS_END_PERCENT = 100
+export SETUP_REPAIR_PHASES = PARALLEL_EVAL
export CTS_CLUSTER_SIZE = 30
export CTS_CLUSTER_DIAMETER = 50
diff --git a/flow/designs/sky130hs/riscv32i/config.mk b/flow/designs/sky130hs/riscv32i/config.mk
index 232ab3fbed2..22049cadbfb 100644
--- a/flow/designs/sky130hs/riscv32i/config.mk
+++ b/flow/designs/sky130hs/riscv32i/config.mk
@@ -10,6 +10,7 @@ export PLACE_DENSITY_LB_ADDON = 0.1
# many east pins cause global routing congestion
export PLACE_PINS_ARGS=-min_distance 6 -min_distance_in_tracks
export TNS_END_PERCENT = 100
+export SETUP_REPAIR_PHASES = PARALLEL_EVAL
export FASTROUTE_TCL = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NICKNAME)/fastroute.tcl
diff --git a/flow/scripts/util.tcl b/flow/scripts/util.tcl
index 0310f3ca54a..065e4e58957 100644
--- a/flow/scripts/util.tcl
+++ b/flow/scripts/util.tcl
@@ -32,6 +32,7 @@ proc repair_timing_helper { args } {
append_env_var additional_args SETUP_SLACK_MARGIN -setup_margin 1
append_env_var additional_args HOLD_SLACK_MARGIN -hold_margin 1
append_env_var additional_args SETUP_MOVE_SEQUENCE -sequence 1
+ append_env_var additional_args SETUP_REPAIR_PHASES -phases 1
append_env_var additional_args TNS_END_PERCENT -repair_tns 1
append_env_var additional_args SKIP_PIN_SWAP -skip_pin_swap 0
append_env_var additional_args SKIP_GATE_CLONING -skip_gate_cloning 0
diff --git a/flow/scripts/variables.json b/flow/scripts/variables.json
index 2810d1ec80e..f5c5c00c266 100644
--- a/flow/scripts/variables.json
+++ b/flow/scripts/variables.json
@@ -1153,6 +1153,15 @@
"grt"
]
},
+ "SETUP_REPAIR_PHASES": {
+ "description": "Passed as -phases to repair_timing. This should be a string of setup repair phase names separated by spaces. Set to PARALLEL_EVAL to repair setup timing with the experimental parallel evaluation policy. When unset, repair_timing runs its default phases.\n",
+ "stages": [
+ "cts",
+ "floorplan",
+ "grt",
+ "place"
+ ]
+ },
"SETUP_SLACK_MARGIN": {
"default": 0,
"description": "Specifies a time margin for the slack when fixing setup violations.\nThis option allows you to overfix or underfix(negative value, terminate\nretiming before 0 or positive slack).\nSee HOLD_SLACK_MARGIN for more details.\n",
diff --git a/flow/scripts/variables.yaml b/flow/scripts/variables.yaml
index 4d71623a358..d0634da90d6 100644
--- a/flow/scripts/variables.yaml
+++ b/flow/scripts/variables.yaml
@@ -858,6 +858,17 @@ SETUP_MOVE_SEQUENCE:
- cts
- floorplan
- grt
+SETUP_REPAIR_PHASES:
+ description: >
+ Passed as -phases to repair_timing. This should be a string of setup
+ repair phase names separated by spaces. Set to PARALLEL_EVAL to repair
+ setup timing with the experimental parallel evaluation policy. When
+ unset, repair_timing runs its default phases.
+ stages:
+ - cts
+ - floorplan
+ - grt
+ - place
SKIP_GATE_CLONING:
description: >
Do not use gate cloning transform to fix timing violations (default: use