Skip to content

Variables sweep#4141

Merged
maliberty merged 26 commits into
The-OpenROAD-Project:masterfrom
oharboe:variables-sweep
Apr 14, 2026
Merged

Variables sweep#4141
maliberty merged 26 commits into
The-OpenROAD-Project:masterfrom
oharboe:variables-sweep

Conversation

@oharboe
Copy link
Copy Markdown
Collaborator

@oharboe oharboe commented Apr 13, 2026

No description provided.

oharboe and others added 19 commits April 13, 2026 17:37
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
Copy link
Copy Markdown

@gemini-code-assist gemini-code-assist Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces and documents a wide range of new flow variables for the OpenROAD flow, updating FlowVariables.md and variables.yaml. The review feedback highlights several improvement opportunities, including clarifying case sensitivity for corner-specific variables, addressing redundancies between SETUP_MOVE_SEQUENCE and SETUP_REPAIR_SEQUENCE, and resolving naming confusion between similar variables like DFF_LIB_FILE and SYNTH_KEPT_MODULES. Additionally, the reviewer pointed out that CTS_BUF_CELL lacks integration in the synthesis scripts.

Comment on lines +131 to +137
CORNERS:
description: >
List of timing corner names for multi-corner analysis (e.g. "slow fast").
When set, liberty files are loaded per corner using [CORNER]_LIB_FILES
environment variables and timing models are generated per corner.
stages:
- All stages
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The notation [CORNER]_LIB_FILES is ambiguous regarding case sensitivity. Since environment variables are case-sensitive, it would be helpful to clarify if the corner name should be in uppercase or lowercase (e.g., SLOW_LIB_FILES vs slow_LIB_FILES).

Comment on lines +744 to +751
SETUP_MOVE_SEQUENCE:
description: >
Passed as -sequence to repair_timing. This should be a string of move
keywords separated by commas.
stages:
- cts
- floorplan
- grt
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

SETUP_MOVE_SEQUENCE appears to be redundant with the existing SETUP_REPAIR_SEQUENCE. Both are described as comma-separated strings of move keywords for repair_timing. Consider consolidating these into a single variable or clearly documenting the distinction between them to avoid user confusion.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This appears to be a pre-existing bug but please just remove SETUP_REPAIR_SEQUENCE as it isn't connected to anything.

Comment on lines +974 to +979
DFF_LIB_FILE:
description: >
Single Liberty file for flip-flop technology mapping (dfflibmap) during
synthesis. Takes precedence over DFF_MAP_FILE when set.
stages:
- synth
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

DFF_LIB_FILE (singular) is added and used in synth.tcl, but DFF_LIB_FILES (plural) already exists in the configuration. Since Yosys dfflibmap only supports a single liberty file, the plural version might be misleading. Consider deprecating the plural version if it is no longer intended for use.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It appears DFF_LIB_FILES was misnamed and just should be renamed to DFF_LIB_FILE

Comment thread flow/scripts/variables.yaml Outdated
Comment on lines +985 to +992
SYNTH_KEPT_MODULES:
description: >
Space-separated list of modules to keep as separate hierarchies during
synthesis. Unlike the automatic size-based discovery
(SYNTH_MINIMUM_KEEP_SIZE), the list of kept modules is known statically,
which enables build systems to synthesize them in parallel.
stages:
- synth
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

SYNTH_KEPT_MODULES is very similar in name to SYNTH_KEEP_MODULES. While the description mentions parallel synthesis for build systems, SYNTH_KEEP_MODULES is the one currently used in synth.tcl to preserve hierarchy. This naming similarity can cause confusion; consider merging them or using more distinct names to clarify their roles.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

SYNTH_KEPT_MODULES is wrong

Comment thread flow/scripts/variables.yaml Outdated
Comment on lines +1083 to +1087
CTS_BUF_CELL:
description: |
Single cell name for clock tree buffer insertion.
stages:
- cts
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

CTS_BUF_CELL is defined here but is not integrated into the cts_args list in cts.tcl. If it is intended to be used as a root buffer or a specific cell for clock tree synthesis, it should be appended to the arguments passed to clock_tree_synthesis.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

CTS_BUF_LIST is already there, what is this?

@oharboe oharboe requested a review from maliberty April 13, 2026 15:43
@maliberty
Copy link
Copy Markdown
Member

Agreed with various gemini comments above

oharboe and others added 7 commits April 14, 2026 17:47
Not connected to anything in the codebase. Only
SETUP_MOVE_SEQUENCE is used (in util.tcl).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
DFF_LIB_FILES (plural) was never used. The actual variable
is DFF_LIB_FILE (singular), used in synth.tcl for dfflibmap.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
The actual variable used in synth.tcl is SYNTH_KEEP_MODULES,
which is already documented.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
Not used anywhere in the codebase. CTS_BUF_LIST is the
variable used in cts.tcl and is already documented.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
read_liberty.tcl uppercases the corner name via
[string toupper], so "slow" maps to SLOW_LIB_FILES.
Document this to remove ambiguity.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
@oharboe
Copy link
Copy Markdown
Collaborator Author

oharboe commented Apr 14, 2026

@maliberty reduce scope to make it paletable. We can refine the rest later in seperate PRs.

@maliberty maliberty enabled auto-merge April 14, 2026 17:27
@maliberty maliberty merged commit 4af876b into The-OpenROAD-Project:master Apr 14, 2026
7 of 8 checks passed
@oharboe oharboe deleted the variables-sweep branch April 19, 2026 19:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants