Skip to content

flow: scripts: include filler cells in CDL netlist for LVS accuracy#4145

Open
dnltz wants to merge 1 commit intoThe-OpenROAD-Project:masterfrom
dnltz:WIP/dnltz/cdl-include-filler
Open

flow: scripts: include filler cells in CDL netlist for LVS accuracy#4145
dnltz wants to merge 1 commit intoThe-OpenROAD-Project:masterfrom
dnltz:WIP/dnltz/cdl-include-filler

Conversation

@dnltz
Copy link
Copy Markdown
Contributor

@dnltz dnltz commented Apr 14, 2026

Pass -include_fillers to write_cdl so filler cells appear in the exported CDL netlist. Without this, LVS tools may flag filler instances as unresolved.

This change is required to run LVS tests with the IHP PDK.

Pass -include_fillers to write_cdl so filler cells appear in the
exported CDL netlist. Without this, LVS tools may flag filler
instances as unresolved.

This change is required to run LVS tests with the IHP PDK.

Signed-off-by: Daniel Schultz <dnltz@aesc-silicon.de>
@dnltz dnltz force-pushed the WIP/dnltz/cdl-include-filler branch from acc13b4 to 9556e77 Compare April 14, 2026 13:30
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 updates the write_cdl command in flow/scripts/cdl.tcl to include the -include_fillers flag. Feedback suggests making this flag configurable through an environment variable to ensure compatibility across various platforms and PDKs that may not support or require filler cells in CDL output.

Comment on lines +5 to +6
write_cdl -masters $::env(CDL_FILE) -include_fillers \
$::env(RESULTS_DIR)/6_final.cdl
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

Hardcoding the -include_fillers flag may cause issues for other platforms or PDKs where filler cells do not have CDL models or are intended to be excluded from LVS. It is recommended to make this flag configurable via an environment variable, allowing platforms like IHP to enable it while keeping it optional for others. This follows the repository's pattern of using environment variables for optional tool flags.

set include_fillers ""
if { [env_var_exists_and_non_empty CDL_INCLUDE_FILLERS] && $::env(CDL_INCLUDE_FILLERS) } {
  set include_fillers "-include_fillers"
}

write_cdl -masters $::env(CDL_FILE) {*}$include_fillers \
          $::env(RESULTS_DIR)/6_final.cdl
References
  1. Optional tool flags that are platform-specific should be controlled by environment variables to avoid regressions on other platforms.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

@maliberty I basically had the same question for you. Do you want this configurable?

@maliberty
Copy link
Copy Markdown
Member

I'm confused by the problem statement. Filler cells are physical only so what is LVS comparing them against?

@dnltz
Copy link
Copy Markdown
Contributor Author

dnltz commented Apr 14, 2026

I'm confused by the problem statement. Filler cells are physical only so what is LVS comparing them against?

The filler cells have VDD and VSS pins and without the filler cells in the .cdl, I get a lot of errors from those two nets.

Edit: those are the standard cell filler cells.

@maliberty
Copy link
Copy Markdown
Member

Error relative to what? Does you Verilog have filler cells?

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