Skip to content

Commit 2d85a03

Browse files
authored
Merge pull request The-OpenROAD-Project#3447 from The-OpenROAD-Project-staging/synth-retime-followup
Synth retime followup
2 parents f6aa754 + fae4a0c commit 2d85a03

File tree

3 files changed

+20
-4
lines changed

3 files changed

+20
-4
lines changed

docs/user/FlowVariables.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -239,7 +239,7 @@ configuration file.
239239
| <a name="SYNTH_MINIMUM_KEEP_SIZE"></a>SYNTH_MINIMUM_KEEP_SIZE| For hierarchical synthesis, we keep modules of larger area than given by this variable and flatten smaller modules. The area unit used is the size of a basic nand2 gate from the platform's standard cell library. The default value is platform specific.| 0|
240240
| <a name="SYNTH_NETLIST_FILES"></a>SYNTH_NETLIST_FILES| Skips synthesis and uses the supplied netlist files. If the netlist files contains duplicate modules, which can happen when using hierarchical synthesis on indvidual netlist files and combining here, subsequent modules are silently ignored and only the first module is used.| |
241241
| <a name="SYNTH_OPT_HIER"></a>SYNTH_OPT_HIER| Optimize constants across hierarchical boundaries.| |
242-
| <a name="SYNTH_RETIME_MODULES"></a>SYNTH_RETIME_MODULES| List of modules to apply retiming to. These modules must not get dissolved and as such they should either be the top module or be included in SYNTH_KEEP_MODULES. This is an experimental option and may cause adverse effects.| |
242+
| <a name="SYNTH_RETIME_MODULES"></a>SYNTH_RETIME_MODULES| *This is an experimental option and may cause adverse effects.* *No effort has been made to check if the retimed RTL is logically equivalent to the non-retimed RTL.* List of modules to apply automatic retiming to. These modules must not get dissolved and as such they should either be the top module or be included in SYNTH_KEEP_MODULES. The main use case is to quickly identify if performance can be improved by manually retiming the input RTL. Retiming will treat module ports like register endpoints/startpoints. The objective function of retiming isn't informed by SDC, even the clock period is ignored. As such, retiming will optimize for best delay at potentially high register number cost. Automatic retiming can produce suboptimal results as its timing model is crude and it doesn't find the optimal distribution of registers on long pipelines. See OR discussion #8080.| |
243243
| <a name="SYNTH_WRAPPED_OPERATORS"></a>SYNTH_WRAPPED_OPERATORS| Synthesize multiple architectural options for each arithmetic operator in the design. These options are available for switching among in later stages of the flow.| |
244244
| <a name="TAPCELL_TCL"></a>TAPCELL_TCL| Path to Endcap and Welltie cells file.| |
245245
| <a name="TAP_CELL_NAME"></a>TAP_CELL_NAME| Name of the cell to use in tap cell insertion.| |

flow/scripts/abc_retime.script

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
11
st
22
retime -v -o
3+
retime -M 5 -v -o
4+
retime -M 5 -v -o
5+
retime -M 5 -v -o
36
map

flow/scripts/variables.yaml

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -202,10 +202,23 @@ SYNTH_CANONICALIZE_TCL:
202202
- synth
203203
SYNTH_RETIME_MODULES:
204204
description: >
205-
List of modules to apply retiming to. These modules must not get
205+
*This is an experimental option and may cause adverse effects.*
206+
*No effort has been made to check if the retimed RTL is logically equivalent
207+
to the non-retimed RTL.*
208+
209+
List of modules to apply automatic retiming to. These modules must not get
206210
dissolved and as such they should either be the top module or be included
207-
in SYNTH_KEEP_MODULES. This is an experimental option and may cause adverse
208-
effects.
211+
in SYNTH_KEEP_MODULES.
212+
213+
The main use case is to quickly identify if performance can be improved by
214+
manually retiming the input RTL.
215+
216+
Retiming will treat module ports like register endpoints/startpoints.
217+
The objective function of retiming isn't informed by SDC, even the clock
218+
period is ignored. As such, retiming will optimize for best delay
219+
at potentially high register number cost. Automatic retiming can produce
220+
suboptimal results as its timing model is crude and it doesn't find the
221+
optimal distribution of registers on long pipelines. See OR discussion #8080.
209222
stages:
210223
- synth
211224
LATCH_MAP_FILE:

0 commit comments

Comments
 (0)