diff --git a/docs/user/FlowVariables.md b/docs/user/FlowVariables.md
index 3f1b488e51..a3dccce7a3 100644
--- a/docs/user/FlowVariables.md
+++ b/docs/user/FlowVariables.md
@@ -171,6 +171,7 @@ configuration file.
| SDC_FILE| The path to design constraint (SDC) file.| | |
| SDC_GUT| Load design and remove all internal logic before doing synthesis. This is useful when creating a mock .lef abstract that has a smaller area than the amount of logic would allow. bazel-orfs uses this to mock SRAMs, for instance.| | |
| SEAL_GDS| Seal macro to place around the design.| | |
+| SETUP_REPAIR_SEQUENCE| Specifies the sequence of moves to do in repair_timing -setup. This should be a string of move keywords separated by commas such as the default when not used: "unbuffer,sizedown,sizeup,swap,buffer,clone,split".| | |
| 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| |
| SET_RC_TCL| Metal & Via RC definition file path.| | |
| SKIP_CTS_REPAIR_TIMING| Skipping CTS repair, which can take a long time, can be useful in architectural exploration or when getting CI up and running.| | |
@@ -277,6 +278,7 @@ configuration file.
- [RTLMP_RPT_DIR](#RTLMP_RPT_DIR)
- [RTLMP_SIGNATURE_NET_THRESHOLD](#RTLMP_SIGNATURE_NET_THRESHOLD)
- [RTLMP_WIRELENGTH_WT](#RTLMP_WIRELENGTH_WT)
+- [SETUP_REPAIR_SEQUENCE](#SETUP_REPAIR_SEQUENCE)
- [SETUP_SLACK_MARGIN](#SETUP_SLACK_MARGIN)
- [SKIP_GATE_CLONING](#SKIP_GATE_CLONING)
- [SKIP_LAST_GASP](#SKIP_LAST_GASP)
@@ -323,6 +325,7 @@ configuration file.
- [POST_CTS_TCL](#POST_CTS_TCL)
- [REMOVE_CELLS_FOR_EQY](#REMOVE_CELLS_FOR_EQY)
- [REPORT_CLOCK_SKEW](#REPORT_CLOCK_SKEW)
+- [SETUP_REPAIR_SEQUENCE](#SETUP_REPAIR_SEQUENCE)
- [SETUP_SLACK_MARGIN](#SETUP_SLACK_MARGIN)
- [SKIP_CTS_REPAIR_TIMING](#SKIP_CTS_REPAIR_TIMING)
- [SKIP_GATE_CLONING](#SKIP_GATE_CLONING)
@@ -341,6 +344,7 @@ configuration file.
- [MIN_ROUTING_LAYER](#MIN_ROUTING_LAYER)
- [REPORT_CLOCK_SKEW](#REPORT_CLOCK_SKEW)
- [ROUTING_LAYER_ADJUSTMENT](#ROUTING_LAYER_ADJUSTMENT)
+- [SETUP_REPAIR_SEQUENCE](#SETUP_REPAIR_SEQUENCE)
- [SETUP_SLACK_MARGIN](#SETUP_SLACK_MARGIN)
- [SKIP_GATE_CLONING](#SKIP_GATE_CLONING)
- [SKIP_INCREMENTAL_REPAIR](#SKIP_INCREMENTAL_REPAIR)
diff --git a/flow/scripts/util.tcl b/flow/scripts/util.tcl
index 9f6c38fd4d..7c153b6fd5 100644
--- a/flow/scripts/util.tcl
+++ b/flow/scripts/util.tcl
@@ -31,6 +31,7 @@ proc repair_timing_helper { {hold_margin 1} } {
if {$hold_margin || $::env(HOLD_SLACK_MARGIN) < 0} {
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 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.yaml b/flow/scripts/variables.yaml
index 86d15317fb..c6f8ab90f4 100644
--- a/flow/scripts/variables.yaml
+++ b/flow/scripts/variables.yaml
@@ -484,6 +484,15 @@ SETUP_SLACK_MARGIN:
- floorplan
- grt
default: 0
+SETUP_REPAIR_SEQUENCE:
+ description: |
+ Specifies the sequence of moves to do in repair_timing -setup. This should be a string
+ of move keywords separated by commas such as the default when not used:
+ "unbuffer,sizedown,sizeup,swap,buffer,clone,split".
+ stages:
+ - cts
+ - floorplan
+ - grt
SKIP_GATE_CLONING:
description: >
Do not use gate cloning transform to fix timing violations (default: use