Skip to content

Commit

Permalink
Bugfixes
Browse files Browse the repository at this point in the history
* Fixed bug with deprecated variable translations of `{CLOCK,SIGNAL}_WIRE_RC_LAYERS}.
* Changed behavior of `GRT_RESIZER_RUN_GRT` to work around The-OpenROAD-Project/OpenROAD#5590
  • Loading branch information
donn committed Aug 25, 2024
1 parent 5c2e698 commit a8a6e84
Show file tree
Hide file tree
Showing 6 changed files with 20 additions and 13 deletions.
7 changes: 5 additions & 2 deletions openlane/config/flow.py
Original file line number Diff line number Diff line change
Expand Up @@ -111,14 +111,17 @@ def _prefix_to_wildcard(prefixes_raw: Union[str, Sequence[str]]):
Optional[List[str]],
"Sets estimated signal wire RC values to the average of these layers'. If you provide more than two, the averages are grouped by preferred routing direction and you must provide at least one layer for each routing direction. If unset, tools should use the average of layers between RT_MIN_LAYER and RT_MAX_LAYER. This variable will be moved to the relevant step(s) in the next version of OpenLane.",
pdk=True,
deprecated_names=["WIRE_RC_LAYER", "DATA_WIRE_RC_LAYER"],
deprecated_names=[
("WIRE_RC_LAYER", lambda x: [x]),
("DATA_WIRE_RC_LAYER", lambda x: [x]),
],
),
Variable(
"CLOCK_WIRE_RC_LAYERS",
Optional[List[str]],
"Sets estimated clock wire RC values to the average of these layers'. If you provide more than two, the averages are grouped by preferred routing direction and you must provide at least one layer for each routing direction. If unset, tools should use the average of layers between RT_MIN_LAYER and RT_MAX_LAYER. This variable will be moved to the relevant step(s) in the next version of OpenLane.",
pdk=True,
deprecated_names=["CLOCK_WIRE_RC_LAYER"],
deprecated_names=[("CLOCK_WIRE_RC_LAYER", lambda x: [x])],
),
Variable(
"DEFAULT_CORNER",
Expand Down
2 changes: 1 addition & 1 deletion openlane/scripts/openroad/repair_design.tcl
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ if { $::env(DESIGN_REPAIR_BUFFER_OUTPUT_PORTS) } {
}

# Repair Design
repair_design\
repair_design -verbose \
-max_wire_length $::env(DESIGN_REPAIR_MAX_WIRE_LENGTH) \
-slew_margin $::env(DESIGN_REPAIR_MAX_SLEW_PCT) \
-cap_margin $::env(DESIGN_REPAIR_MAX_CAP_PCT)
Expand Down
9 changes: 5 additions & 4 deletions openlane/scripts/openroad/repair_design_postgrt.tcl
Original file line number Diff line number Diff line change
Expand Up @@ -25,13 +25,14 @@ set_dont_touch_objects
source $::env(SCRIPTS_DIR)/openroad/common/set_rc.tcl

# (Re-)GRT and Estimate Parasitics
if { $::env(GRT_DESIGN_REPAIR_RUN_GRT) } {
source $::env(SCRIPTS_DIR)/openroad/common/grt.tcl
}
# Temporarily always enabled: https://github.com/The-OpenROAD-Project/OpenROAD/issues/5590
#if { $::env(GRT_DESIGN_REPAIR_RUN_GRT) } {
source $::env(SCRIPTS_DIR)/openroad/common/grt.tcl
#}
estimate_parasitics -global_routing

# Repair design
repair_design\
repair_design -verbose \
-max_wire_length $::env(GRT_DESIGN_REPAIR_MAX_WIRE_LENGTH) \
-slew_margin $::env(GRT_DESIGN_REPAIR_MAX_SLEW_PCT) \
-cap_margin $::env(GRT_DESIGN_REPAIR_MAX_CAP_PCT)
Expand Down
3 changes: 2 additions & 1 deletion openlane/scripts/openroad/rsz_timing_postcts.tcl
Original file line number Diff line number Diff line change
Expand Up @@ -29,11 +29,12 @@ source $::env(SCRIPTS_DIR)/openroad/common/set_rc.tcl
estimate_parasitics -placement

# Resize
repair_timing -setup \
repair_timing -verbose -setup \
-setup_margin $::env(PL_RESIZER_SETUP_SLACK_MARGIN) \
-max_buffer_percent $::env(PL_RESIZER_SETUP_MAX_BUFFER_PCT)

set arg_list [list]
lappend arg_list -verbose
lappend arg_list -hold
lappend arg_list -setup_margin $::env(PL_RESIZER_SETUP_SLACK_MARGIN)
lappend arg_list -hold_margin $::env(PL_RESIZER_HOLD_SLACK_MARGIN)
Expand Down
10 changes: 6 additions & 4 deletions openlane/scripts/openroad/rsz_timing_postgrt.tcl
Original file line number Diff line number Diff line change
Expand Up @@ -25,17 +25,19 @@ set_dont_touch_objects
source $::env(SCRIPTS_DIR)/openroad/common/set_rc.tcl

# (Re-)GRT and Estimate Parasitics
if { $::env(GRT_RESIZER_RUN_GRT) } {
source $::env(SCRIPTS_DIR)/openroad/common/grt.tcl
}
# Temporarily always enabled: https://github.com/The-OpenROAD-Project/OpenROAD/issues/5590
#if { $::env(GRT_RESIZER_RUN_GRT) } {
source $::env(SCRIPTS_DIR)/openroad/common/grt.tcl
# }
estimate_parasitics -global_routing

# Resize
repair_timing -setup \
repair_timing -verbose -setup \
-setup_margin $::env(GRT_RESIZER_SETUP_SLACK_MARGIN) \
-max_buffer_percent $::env(GRT_RESIZER_SETUP_MAX_BUFFER_PCT)

set arg_list [list]
lappend arg_list -verbose
lappend arg_list -hold
lappend arg_list -setup_margin $::env(GRT_RESIZER_SETUP_SLACK_MARGIN)
lappend arg_list -hold_margin $::env(GRT_RESIZER_HOLD_SLACK_MARGIN)
Expand Down
2 changes: 1 addition & 1 deletion openlane/steps/openroad.py
Original file line number Diff line number Diff line change
Expand Up @@ -2330,7 +2330,7 @@ class ResizerTimingPostGRT(ResizerStep):
Variable(
"GRT_RESIZER_RUN_GRT",
bool,
"Enables running GRT before and after running resizer",
"Gates running global routing after resizer steps. May be useful to disable for designs where global routing takes non-trivial time.",
default=True,
),
]
Expand Down

0 comments on commit a8a6e84

Please sign in to comment.