diff --git a/docs/user/FlowVariables.md b/docs/user/FlowVariables.md index efa579d686..0590eb8709 100644 --- a/docs/user/FlowVariables.md +++ b/docs/user/FlowVariables.md @@ -109,7 +109,8 @@ configuration file. | CELL_PAD_IN_SITES_DETAIL_PLACEMENT| Cell padding on both sides in site widths to ease routability in detail placement.| 0| | CELL_PAD_IN_SITES_GLOBAL_PLACEMENT| Cell padding on both sides in site widths to ease routability during global placement.| 0| | CLKGATE_MAP_FILE| Optional mapping file supplied to Yosys to map clock gating cells| | -| CLUSTER_FLOPS| Minimum number of flip-flops per sink cluster.| 0| +| CLUSTER_FLOPS| Enable clustering of flip-flops into multi-bit flip-flops, if the platform PDK includes multi-bit flip-flops| 0| +| CLUSTER_FLOPS_ARGS| Additional arguments passed to the cluster_flops command.| | | CORE_AREA| The core area specified as a list of lower-left and upper-right corners in microns (X1 Y1 X2 Y2).| | | CORE_ASPECT_RATIO| The core aspect ratio (height / width). This variable is only used when `CORE_UTILIZATION` is set.| 1.0| | CORE_MARGIN| The margin between the core area and die area, specified in microns. Allowed values are either one value for all margins or a set of four values, one for each margin. The order of the four values are: `{bottom top left right}`. This variable is only used when `CORE_UTILIZATION` is set.| 1.0| @@ -434,6 +435,7 @@ configuration file. - [CELL_PAD_IN_SITES_DETAIL_PLACEMENT](#CELL_PAD_IN_SITES_DETAIL_PLACEMENT) - [CELL_PAD_IN_SITES_GLOBAL_PLACEMENT](#CELL_PAD_IN_SITES_GLOBAL_PLACEMENT) - [CLUSTER_FLOPS](#CLUSTER_FLOPS) +- [CLUSTER_FLOPS_ARGS](#CLUSTER_FLOPS_ARGS) - [DETAIL_PLACEMENT_ARGS](#DETAIL_PLACEMENT_ARGS) - [DONT_BUFFER_PORTS](#DONT_BUFFER_PORTS) - [EARLY_SIZING_CAP_RATIO](#EARLY_SIZING_CAP_RATIO) diff --git a/flow/scripts/global_place.tcl b/flow/scripts/global_place.tcl index e97cd854ed..95c135e54a 100644 --- a/flow/scripts/global_place.tcl +++ b/flow/scripts/global_place.tcl @@ -68,8 +68,8 @@ if { $result != 0 } { log_cmd estimate_parasitics -placement -if { [env_var_exists_and_non_empty CLUSTER_FLOPS] } { - cluster_flops {*}[env_var_or_empty CLUSTER_FLOPS_ARGS] +if { $::env(CLUSTER_FLOPS) } { + log_cmd cluster_flops {*}[env_var_or_empty CLUSTER_FLOPS_ARGS] log_cmd estimate_parasitics -placement } diff --git a/flow/scripts/variables.yaml b/flow/scripts/variables.yaml index cf99a5fac5..dba1268e62 100644 --- a/flow/scripts/variables.yaml +++ b/flow/scripts/variables.yaml @@ -1001,10 +1001,17 @@ CTS_BUF_LIST: - cts CLUSTER_FLOPS: description: > - Minimum number of flip-flops per sink cluster. + Enable clustering of flip-flops into multi-bit flip-flops, if the platform + PDK includes multi-bit flip-flops stages: - place default: 0 +CLUSTER_FLOPS_ARGS: + description: > + Additional arguments passed to the cluster_flops command. + stages: + - place + default: "" CTS_CLUSTER_DIAMETER: description: > Maximum diameter (in microns) of sink cluster.