Skip to content

Commit 6639d63

Browse files
committed
retiming: add some more docs
Signed-off-by: Øyvind Harboe <[email protected]>
1 parent e01db63 commit 6639d63

File tree

2 files changed

+23
-4
lines changed

2 files changed

+23
-4
lines changed

docs/user/FlowVariables.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -235,7 +235,7 @@ configuration file.
235235
| <a name="SYNTH_MEMORY_MAX_BITS"></a>SYNTH_MEMORY_MAX_BITS| Maximum number of bits for memory synthesis.| 4096|
236236
| <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|
237237
| <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.| |
238-
| <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.| |
238+
| <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. Architectural or manual retiming, as opposed to automatic retiming, is usually preferred, because LEC(Logic Equivalence Check) will not work together with automatic retiming. The main use-case for automatic retiming is to quickly identify if performance is left on the table and can be gained with architectural retiming. Architectural retiming also has the advantage that it can change the semantics of the RTL code limited only by not breaking the application, hence retiming can't estimate this performance potential. Architectural retiming can also consider placement and routing, whereas automatic retiming only considers information available at synthesis time. The current retiming will treat module ports like register endpoints/startpoints and the objective isn't informed by SDC, even the clock period is ignored.| |
239239
| <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.| |
240240
| <a name="TAPCELL_TCL"></a>TAPCELL_TCL| Path to Endcap and Welltie cells file.| |
241241
| <a name="TAP_CELL_NAME"></a>TAP_CELL_NAME| Name of the cell to use in tap cell insertion.| |

flow/scripts/variables.yaml

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -202,10 +202,29 @@ 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+
207+
*No effort has been made to check if the retimed RTL
208+
is logically equivalent to the non-retimed RTL.*
209+
210+
List of modules to apply automatic retiming to. These modules must not get
206211
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.
212+
in SYNTH_KEEP_MODULES.
213+
214+
Architectural or manual retiming, as opposed to automatic retiming, is
215+
usually preferred, because LEC(Logic Equivalence Check) will not work
216+
together with automatic retiming.
217+
218+
The main use-case for automatic retiming is to quickly identify if
219+
performance is left on the table and can be gained with architectural
220+
retiming. Architectural retiming also has the advantage that it can change
221+
the semantics of the RTL code limited only by not breaking the application,
222+
hence retiming can't estimate this performance potential. Architectural retiming
223+
can also consider placement and routing, whereas automatic retiming only
224+
considers information available at synthesis time.
225+
226+
The current retiming will treat module ports like register endpoints/startpoints
227+
and the objective isn't informed by SDC, even the clock period is ignored.
209228
stages:
210229
- synth
211230
LATCH_MAP_FILE:

0 commit comments

Comments
 (0)