Skip to content

Commit c14d091

Browse files
authored
Merge pull request #2615 from Pinata-Consulting/variables-setup-hold-slack-docs
Variables setup hold slack docs
2 parents b05522a + 0bb1ef0 commit c14d091

File tree

1 file changed

+36
-5
lines changed

1 file changed

+36
-5
lines changed

flow/scripts/variables.yaml

Lines changed: 36 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -211,8 +211,8 @@ FLOORPLAN_DEF:
211211
REMOVE_ABC_BUFFERS:
212212
description: >
213213
Remove abc buffers from the netlist. If timing repair in floorplanning is
214-
taking too long, use a SETUP_HOLD_MARGIN to terminate timing repair early
215-
instead of using REMOVE_ABC_BUFFERS or set SKIP_LAST_GAST=1.
214+
taking too long, use a SETUP/HOLD_SLACK_MARGIN to terminate timing repair early
215+
instead of using REMOVE_ABC_BUFFERS or set SKIP_LAST_GASP=1.
216216
stages:
217217
- floorplan
218218
deprecated: 1
@@ -384,16 +384,45 @@ HOLD_SLACK_MARGIN:
384384
This option allows you to overfix or underfix(negative value, terminate
385385
retiming before 0 or positive slack).
386386
387-
Use min of HOLD_SLACK_MARGIN and 0(default hold slack margin) in floorplan.
387+
floorplan.tcl uses min of HOLD_SLACK_MARGIN and 0(default hold slack margin).
388388
389389
This avoids overrepair in floorplan for hold by default, but allows skipping
390390
hold repair using a negative HOLD_SLACK_MARGIN.
391391
392392
Exiting timing repair early is useful in exploration where
393-
394-
the .sdc has a fixed clock period at designs target clock period and where
393+
the .sdc has a fixed clock period at the design's target clock period and where
395394
HOLD/SETUP_SLACK_MARGIN is used to avoid overrepair(extremely long running
396395
times) when exploring different parameter settings.
396+
397+
When an ideal clock is used, that is before CTS,
398+
a clock insertion delay of 0 is used in timing paths. This creates
399+
a mismatch between macros that have a .lib file from after CTS, when
400+
the clock is propagated. To mitigate this, OpenSTA will use subtract
401+
the clock insertion delay of macros when calculating timing with ideal
402+
clock. Provided that min_clock_tree_path
403+
and max_clock_tree_path are in the .lib file, which is the case for
404+
macros built with OpenROAD. This is less accurate than if OpenROAD had
405+
created a placeholder clock tree for timing estimation purposes
406+
prior to CTS.
407+
408+
There will inevitably be inaccuracies in the timing calculation prior
409+
to CTS. Use a slack margin that is low enough, even negative, to
410+
avoid overrepair. Inaccuracies in the timing prior to CTS can also
411+
lead to underrepair, but there no obvious and simple way to avoid
412+
underrapir in these cases.
413+
414+
Overrepair can lead to excessive runtimes in repair or too much buffering
415+
being added, which can present itself as congestion of hold cells or
416+
buffer cells.
417+
418+
Another use of SETUP/HOLD_SLACK_MARGIN is design parameter exploration
419+
when trying to find the minimum clock period for a design.
420+
421+
The SDC_FILE for a design can be quite complicated and instead of
422+
modifying the clock period in the SDC_FILE, which can be non-trivial,
423+
the clock period can be fixed at the target frequency and the
424+
SETUP/HOLD_SLACK_MARGIN can be swept to find a plausible
425+
current minimum clock period.
397426
stages:
398427
- cts
399428
- floorplan
@@ -404,6 +433,8 @@ SETUP_SLACK_MARGIN:
404433
Specifies a time margin for the slack when fixing setup violations.
405434
This option allows you to overfix or underfix(negative value, terminate
406435
retiming before 0 or positive slack).
436+
437+
See HOLD_SLACK_MARGIN for more details.
407438
stages:
408439
- cts
409440
- floorplan

0 commit comments

Comments
 (0)