Skip to content

Commit f4acf07

Browse files
authored
Merge pull request #2743 from AcKoucher/flow-mpl-related-vars
Flow Variables: renaming, description improvement and regenerate table
2 parents 24f46b6 + 5635a0a commit f4acf07

File tree

8 files changed

+42
-33
lines changed

8 files changed

+42
-33
lines changed

docs/user/FlowVariables.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -103,21 +103,21 @@ configuration file.
103103
| <a name="GPL_ROUTABILITY_DRIVEN"></a>GPL_ROUTABILITY_DRIVEN| Specifies whether the placer should use routability driven placement.| 1| |
104104
| <a name="GPL_TIMING_DRIVEN"></a>GPL_TIMING_DRIVEN| Specifies whether the placer should use timing driven placement.| 1| |
105105
| <a name="GUI_TIMING"></a>GUI_TIMING| Load timing information when opening GUI. For large designs, this can be quite time consuming. Useful to disable when investigating non-timing aspects like floorplan, placement, routing, etc.| 1| |
106-
| <a name="HOLD_SLACK_MARGIN"></a>HOLD_SLACK_MARGIN| Specifies a time margin for the slack when fixing hold violations. This option allows you to overfix or underfix(negative value, terminate retiming before 0 or positive slack). floorplan.tcl uses min of HOLD_SLACK_MARGIN and 0(default hold slack margin). This avoids overrepair in floorplan for hold by default, but allows skipping hold repair using a negative HOLD_SLACK_MARGIN. Exiting timing repair early is useful in exploration where the .sdc has a fixed clock period at the design's target clock period and where HOLD/SETUP_SLACK_MARGIN is used to avoid overrepair(extremely long running times) when exploring different parameter settings. When an ideal clock is used, that is before CTS, a clock insertion delay of 0 is used in timing paths. This creates a mismatch between macros that have a .lib file from after CTS, when the clock is propagated. To mitigate this, OpenSTA will use subtract the clock insertion delay of macros when calculating timing with ideal clock. Provided that min_clock_tree_path and max_clock_tree_path are in the .lib file, which is the case for macros built with OpenROAD. This is less accurate than if OpenROAD had created a placeholder clock tree for timing estimation purposes prior to CTS. There will inevitably be inaccuracies in the timing calculation prior to CTS. Use a slack margin that is low enough, even negative, to avoid overrepair. Inaccuracies in the timing prior to CTS can also lead to underrepair, but there no obvious and simple way to avoid underrapir in these cases. Overrepair can lead to excessive runtimes in repair or too much buffering being added, which can present itself as congestion of hold cells or buffer cells. Another use of SETUP/HOLD_SLACK_MARGIN is design parameter exploration when trying to find the minimum clock period for a design. The SDC_FILE for a design can be quite complicated and instead of modifying the clock period in the SDC_FILE, which can be non-trivial, the clock period can be fixed at the target frequency and the SETUP/HOLD_SLACK_MARGIN can be swept to find a plausible current minimum clock period.| 0| |
106+
| <a name="HOLD_SLACK_MARGIN"></a>HOLD_SLACK_MARGIN| Specifies a time margin for the slack when fixing hold violations. This option allows you to overfix or underfix (negative value, terminate retiming before 0 or positive slack). floorplan.tcl uses min of HOLD_SLACK_MARGIN and 0 (default hold slack margin). This avoids overrepair in floorplan for hold by default, but allows skipping hold repair using a negative HOLD_SLACK_MARGIN. Exiting timing repair early is useful in exploration where the .sdc has a fixed clock period at the design's target clock period and where HOLD/SETUP_SLACK_MARGIN is used to avoid overrepair (extremely long running times) when exploring different parameter settings. When an ideal clock is used, that is before CTS, a clock insertion delay of 0 is used in timing paths. This creates a mismatch between macros that have a .lib file from after CTS, when the clock is propagated. To mitigate this, OpenSTA will use subtract the clock insertion delay of macros when calculating timing with ideal clock. Provided that min_clock_tree_path and max_clock_tree_path are in the .lib file, which is the case for macros built with OpenROAD. This is less accurate than if OpenROAD had created a placeholder clock tree for timing estimation purposes prior to CTS. There will inevitably be inaccuracies in the timing calculation prior to CTS. Use a slack margin that is low enough, even negative, to avoid overrepair. Inaccuracies in the timing prior to CTS can also lead to underrepair, but there no obvious and simple way to avoid underrapir in these cases. Overrepair can lead to excessive runtimes in repair or too much buffering being added, which can present itself as congestion of hold cells or buffer cells. Another use of SETUP/HOLD_SLACK_MARGIN is design parameter exploration when trying to find the minimum clock period for a design. The SDC_FILE for a design can be quite complicated and instead of modifying the clock period in the SDC_FILE, which can be non-trivial, the clock period can be fixed at the target frequency and the SETUP/HOLD_SLACK_MARGIN can be swept to find a plausible current minimum clock period.| 0| |
107107
| <a name="IO_CONSTRAINTS"></a>IO_CONSTRAINTS| File path to the IO constraints .tcl file.| | |
108108
| <a name="IO_PLACER_H"></a>IO_PLACER_H| The metal layer on which to place the I/O pins horizontally (top and bottom of the die).| | |
109109
| <a name="IO_PLACER_V"></a>IO_PLACER_V| The metal layer on which to place the I/O pins vertically (sides of the die).| | |
110110
| <a name="IR_DROP_LAYER"></a>IR_DROP_LAYER| Default metal layer to report IR drop.| | |
111111
| <a name="KLAYOUT_TECH_FILE"></a>KLAYOUT_TECH_FILE| A mapping from LEF/DEF to GDS using the KLayout tool.| | |
112112
| <a name="LATCH_MAP_FILE"></a>LATCH_MAP_FILE| List of latches treated as a black box by Yosys.| | |
113113
| <a name="LIB_FILES"></a>LIB_FILES| A Liberty file of the standard cell library with PVT characterization, input and output characteristics, timing and power definitions for each cell.| | |
114-
| <a name="MACRO_BLOCKAGE_HALO"></a>MACRO_BLOCKAGE_HALO| Blockage width overridden from default calculation.| | |
114+
| <a name="MACRO_BLOCKAGE_HALO"></a>MACRO_BLOCKAGE_HALO| Distance beyond the edges of a macro that will also be covered by the blockage generated for that macro. Note that the default macro blockage halo comes from the largest of the specified MACRO_PLACE_HALO x or y values. This variable overrides that calculation.| | |
115115
| <a name="MACRO_EXTENSION"></a>MACRO_EXTENSION| Sets the number of GCells added to the blockages boundaries from macros.| | |
116-
| <a name="MACRO_HALO_X"></a>MACRO_HALO_X| Set macro halo for x-direction. Only available for ASAP7 PDK.| | |
117-
| <a name="MACRO_HALO_Y"></a>MACRO_HALO_Y| Set macro halo for y-direction. Only available for ASAP7 PDK.| | |
118116
| <a name="MACRO_PLACEMENT"></a>MACRO_PLACEMENT| Specifies the path of a file on how to place certain macros manually using read_macro_placement.| | |
119117
| <a name="MACRO_PLACEMENT_TCL"></a>MACRO_PLACEMENT_TCL| Specifies the path of a TCL file on how to place certain macros manually.| | |
120118
| <a name="MACRO_PLACE_HALO"></a>MACRO_PLACE_HALO| Horizontal/vertical halo around macros (microns). Used by automatic macro placement.| | |
119+
| <a name="MACRO_ROWS_HALO_X"></a>MACRO_ROWS_HALO_X| Horizontal distance between the edge of the macro and the beginning of the rows created by tapcell. Only available for ASAP7 PDK and GF180/uart-blocks design.| | |
120+
| <a name="MACRO_ROWS_HALO_Y"></a>MACRO_ROWS_HALO_Y| Vertical distance between the edge of the macro and the beginning of the rows created by tapcell. Only available for ASAP7 PDK and GF180/uart-blocks design.| | |
121121
| <a name="MACRO_WRAPPERS"></a>MACRO_WRAPPERS| The wrapper file that replaces existing macros with their wrapped version.| | |
122122
| <a name="MAKE_TRACKS"></a>MAKE_TRACKS| Tcl file that defines add routing tracks to a floorplan.| | |
123123
| <a name="MATCH_CELL_FOOTPRINT"></a>MATCH_CELL_FOOTPRINT| Enforce sizing operations to only swap cells that have the same layout boundary.| 0| |
@@ -143,7 +143,7 @@ configuration file.
143143
| <a name="REPORT_CLOCK_SKEW"></a>REPORT_CLOCK_SKEW| Report clock skew as part of reporting metrics, starting at CTS, before which there is no clock skew. This metric can be quite time-consuming, so it can be useful to disable.| 1| |
144144
| <a name="RESYNTH_AREA_RECOVER"></a>RESYNTH_AREA_RECOVER| Enable re-synthesis for area reclaim.| 0| |
145145
| <a name="RESYNTH_TIMING_RECOVER"></a>RESYNTH_TIMING_RECOVER| Enable re-synthesis for timing optimization.| 0| |
146-
| <a name="ROUTING_LAYER_ADJUSTMENT"></a>ROUTING_LAYER_ADJUSTMENT| Adjusts routing layer capacities to manage congestion and improve detailed routing. High values ease detailed routing but risk excessive detours and long global routing times, while low values reduce global routing failure but can complicate detailed routing. The global routing running time normally reduces dramatically(entirely design specific, but going from hours to minutes has been observed) when the value is low(such as 0.10). Sometimes, global routing will succeed with lower values and fail with higher values. Exploring results with different values can help shed light on the problem. Start with a too low value, such as 0.10, and bisect to value that works by doing multiple global routing runs. As a last resort, `make global_route_issue` and using the tools/OpenROAD/etc/deltaDebug.py can be useful to debug global routing errors. If there is something specific that is impossible to route, such as a clock line over a macro, global routing will terminate with DRC errors routes that could have been routed were it not for the specific impossible routes. deltaDebug.py should weed out the possible routes and leave a minimal failing case that pinpoints the problem.| 0.5| |
146+
| <a name="ROUTING_LAYER_ADJUSTMENT"></a>ROUTING_LAYER_ADJUSTMENT| Adjusts routing layer capacities to manage congestion and improve detailed routing. High values ease detailed routing but risk excessive detours and long global routing times, while low values reduce global routing failure but can complicate detailed routing. The global routing running time normally reduces dramatically (entirely design specific, but going from hours to minutes has been observed) when the value is low (such as 0.10). Sometimes, global routing will succeed with lower values and fail with higher values. Exploring results with different values can help shed light on the problem. Start with a too low value, such as 0.10, and bisect to value that works by doing multiple global routing runs. As a last resort, `make global_route_issue` and using the tools/OpenROAD/etc/deltaDebug.py can be useful to debug global routing errors. If there is something specific that is impossible to route, such as a clock line over a macro, global routing will terminate with DRC errors routes that could have been routed were it not for the specific impossible routes. deltaDebug.py should weed out the possible routes and leave a minimal failing case that pinpoints the problem.| 0.5| |
147147
| <a name="RTLMP_AREA_WT"></a>RTLMP_AREA_WT| Weight for the area of the current floorplan.| 0.1| |
148148
| <a name="RTLMP_ARGS"></a>RTLMP_ARGS| Overrides all other RTL macro placer arguments.| | |
149149
| <a name="RTLMP_BOUNDARY_WT"></a>RTLMP_BOUNDARY_WT| Weight for the boundary or how far the hard macro clusters are from boundaries.| 50.0| |
@@ -228,11 +228,11 @@ configuration file.
228228
- [IO_PLACER_H](#IO_PLACER_H)
229229
- [IO_PLACER_V](#IO_PLACER_V)
230230
- [MACRO_BLOCKAGE_HALO](#MACRO_BLOCKAGE_HALO)
231-
- [MACRO_HALO_X](#MACRO_HALO_X)
232-
- [MACRO_HALO_Y](#MACRO_HALO_Y)
233231
- [MACRO_PLACEMENT](#MACRO_PLACEMENT)
234232
- [MACRO_PLACEMENT_TCL](#MACRO_PLACEMENT_TCL)
235233
- [MACRO_PLACE_HALO](#MACRO_PLACE_HALO)
234+
- [MACRO_ROWS_HALO_X](#MACRO_ROWS_HALO_X)
235+
- [MACRO_ROWS_HALO_Y](#MACRO_ROWS_HALO_Y)
236236
- [MACRO_WRAPPERS](#MACRO_WRAPPERS)
237237
- [MAKE_TRACKS](#MAKE_TRACKS)
238238
- [MATCH_CELL_FOOTPRINT](#MATCH_CELL_FOOTPRINT)

flow/designs/asap7/mock-array/config.mk

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,8 +62,8 @@ export DETAILED_ROUTE_END_ITERATION ?= 6
6262
export MAX_ROUTING_LAYER = M9
6363

6464
# ensure we have some rows, so we don't get a bad clock skew.
65-
export MACRO_HALO_X = 0.5
66-
export MACRO_HALO_Y = 0.5
65+
export MACRO_ROWS_HALO_X = 0.5
66+
export MACRO_ROWS_HALO_Y = 0.5
6767

6868
export ADDITIONAL_FILES = \
6969
designs/src/mock-array/util.tcl \

flow/designs/gf180/uart-blocks/config.mk

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,5 +20,5 @@ export PDN_TCL = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NICKNAME)/BLOCKS_grid_strat
2020
export PLACE_DENSITY = 0.60
2121

2222
export TAPCELL_TCL ?= $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NICKNAME)/tapcell.tcl
23-
export MACRO_HALO_X = 14
24-
export MACRO_HALO_Y = 14
23+
export MACRO_ROWS_HALO_X = 14
24+
export MACRO_ROWS_HALO_Y = 14

flow/designs/gf180/uart-blocks/tapcell.tcl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,6 @@
33
-distance 100 \
44
-tapcell_master $::env(TIE_CELL) \
55
-endcap_master $::env(ENDCAP_CELL) \
6-
-halo_width_x $::env(MACRO_HALO_X) \
7-
-halo_width_y $::env(MACRO_HALO_Y)
6+
-halo_width_x $::env(MACRO_ROWS_HALO_X) \
7+
-halo_width_y $::env(MACRO_ROWS_HALO_Y)
88

flow/platforms/asap7/config.mk

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -118,8 +118,8 @@ export MACRO_PLACE_HALO ?= 10 10
118118

119119
# the followings create a keep out / halo between
120120
# macro and core rows
121-
export MACRO_HALO_X ?= 2
122-
export MACRO_HALO_Y ?= 2
121+
export MACRO_ROWS_HALO_X ?= 2
122+
export MACRO_ROWS_HALO_Y ?= 2
123123

124124
export PLACE_DENSITY ?= 0.60
125125

flow/platforms/asap7/openRoad/pdn/BLOCKS_grid_strategy.tcl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ foreach macro [find_macros] {
4141
set macro_names [dict keys $macro_names]
4242

4343
define_pdn_grid -macro -cells $macro_names \
44-
-halo "$::env(MACRO_HALO_X) $::env(MACRO_HALO_Y) $::env(MACRO_HALO_X) $::env(MACRO_HALO_Y)" \
44+
-halo "$::env(MACRO_ROWS_HALO_X) $::env(MACRO_ROWS_HALO_Y) $::env(MACRO_ROWS_HALO_X) $::env(MACRO_ROWS_HALO_Y)" \
4545
-voltage_domains {CORE} -name ElementGrid
4646

4747
add_pdn_connect -grid {ElementGrid} -layers {M5 M6}
Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
puts "Tap and End Cap cell insertion"
22
puts " TAP Cell : $::env(TAP_CELL_NAME)"
33
puts " ENDCAP Cell : $::env(TAP_CELL_NAME)"
4-
puts " Halo Around Macro : $::env(MACRO_HALO_X) $::env(MACRO_HALO_Y)"
4+
puts " Halo Around Macro : $::env(MACRO_ROWS_HALO_X) $::env(MACRO_ROWS_HALO_Y)"
55
puts " TAP Cell Distance : 25"
66

7-
# allow user to set the halo around macro with MACRO_HALO_?
7+
# allow user to set the distance between the edges of the macros
8+
# and the beginning of the core rows with MACRO_ROW_HALO_?
89
tapcell \
910
-distance 25 \
1011
-tapcell_master "$::env(TAP_CELL_NAME)" \
1112
-endcap_master "$::env(TAP_CELL_NAME)" \
12-
-halo_width_x $::env(MACRO_HALO_X) \
13-
-halo_width_y $::env(MACRO_HALO_Y)
13+
-halo_width_x $::env(MACRO_ROWS_HALO_X) \
14+
-halo_width_y $::env(MACRO_ROWS_HALO_Y)

flow/scripts/variables.yaml

Lines changed: 21 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -42,9 +42,9 @@ ROUTING_LAYER_ADJUSTMENT:
4242
while low values reduce global routing failure but can
4343
complicate detailed routing.
4444
The global routing running time normally reduces
45-
dramatically(entirely design specific, but going from hours to
45+
dramatically (entirely design specific, but going from hours to
4646
minutes has been observed) when the value is
47-
low(such as 0.10).
47+
low (such as 0.10).
4848
Sometimes, global routing will succeed with lower values and
4949
fail with higher values. Exploring results with different
5050
values can help shed light on the problem. Start with
@@ -259,8 +259,12 @@ MACRO_PLACE_HALO:
259259
stages:
260260
- floorplan
261261
MACRO_BLOCKAGE_HALO:
262-
description: |
263-
Blockage width overridden from default calculation.
262+
description: >
263+
Distance beyond the edges of a macro that will also be covered by the
264+
blockage generated for that macro.
265+
Note that the default macro blockage halo comes from the largest of the
266+
specified MACRO_PLACE_HALO x or y values. This variable overrides that
267+
calculation.
264268
stages:
265269
- floorplan
266270
PDN_TCL:
@@ -392,14 +396,14 @@ CTS_ARGS:
392396
HOLD_SLACK_MARGIN:
393397
description: >
394398
Specifies a time margin for the slack when fixing hold violations.
395-
This option allows you to overfix or underfix(negative value, terminate
399+
This option allows you to overfix or underfix (negative value, terminate
396400
retiming before 0 or positive slack).
397-
floorplan.tcl uses min of HOLD_SLACK_MARGIN and 0(default hold slack margin).
401+
floorplan.tcl uses min of HOLD_SLACK_MARGIN and 0 (default hold slack margin).
398402
This avoids overrepair in floorplan for hold by default, but allows skipping
399403
hold repair using a negative HOLD_SLACK_MARGIN.
400404
Exiting timing repair early is useful in exploration where
401405
the .sdc has a fixed clock period at the design's target clock period and where
402-
HOLD/SETUP_SLACK_MARGIN is used to avoid overrepair(extremely long running
406+
HOLD/SETUP_SLACK_MARGIN is used to avoid overrepair (extremely long running
403407
times) when exploring different parameter settings.
404408
When an ideal clock is used, that is before CTS,
405409
a clock insertion delay of 0 is used in timing paths. This creates
@@ -653,14 +657,18 @@ RESYNTH_TIMING_RECOVER:
653657
stages:
654658
- synth
655659
default: 0
656-
MACRO_HALO_X:
657-
description: |
658-
Set macro halo for x-direction. Only available for ASAP7 PDK.
660+
MACRO_ROWS_HALO_X:
661+
description: >
662+
Horizontal distance between the edge of the macro and the beginning of the
663+
rows created by tapcell. Only available for ASAP7 PDK and GF180/uart-blocks
664+
design.
659665
stages:
660666
- floorplan
661-
MACRO_HALO_Y:
662-
description: |
663-
Set macro halo for y-direction. Only available for ASAP7 PDK.
667+
MACRO_ROWS_HALO_Y:
668+
description: >
669+
Vertical distance between the edge of the macro and the beginning of the
670+
rows created by tapcell. Only available for ASAP7 PDK and GF180/uart-blocks
671+
design.
664672
stages:
665673
- floorplan
666674
MACRO_WRAPPERS:

0 commit comments

Comments
 (0)