Skip to content

iterate dbNets rather than sta nets when fetching parasitics - #4397

Merged
maliberty merged 2 commits into
The-OpenROAD-Project:masterfrom
AcKoucher:write-rc-hier-nets
Aug 8, 2026
Merged

iterate dbNets rather than sta nets when fetching parasitics#4397
maliberty merged 2 commits into
The-OpenROAD-Project:masterfrom
AcKoucher:write-rc-hier-nets

Conversation

@AcKoucher

@AcKoucher AcKoucher commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

Requires #4405.

The script currently iterate sta nets and uses sta_to_db_net which will return nullptr for module net. That caused the script to crash when trying to retrieve the type of that net.

With the changes here we should be properly considering the parasitics of all dbNets when fetching and preventing the crash.

Signed-off-by: Arthur Koucher <arthurkoucher@precisioninno.com>

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

Copy link
Copy Markdown
Contributor

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 a helper function find_flat_db_net in flow/util/write_rc_helper.tcl to resolve flat database nets and refactors several functions to use it. It also adds deduplication logic to prevent processing the same flat net multiple times. The feedback highlights a potential runtime error in find_flat_db_net if sta::sta_to_db_mod_net returns "NULL", and suggests adding a check before calling findRelatedNet.

Comment thread flow/util/write_rc_helper.tcl Outdated
@AcKoucher
AcKoucher requested a review from maliberty August 5, 2026 16:37
@openroad-ci

openroad-ci commented Aug 5, 2026

Copy link
Copy Markdown
Member

🔍 QoR check

Metrics reflect the PR merge build — i.e. what will land on the target branch. Advisory — results are log-only and do not affect build status. The authoritative QoR gate remains the local rules-file check.

Commit 790de4b · Jenkins build #4 · Baseline: build

61 design(s) checked — 0 with regression(s), 7 without a comparable baseline.
Design Variant Verdict local vs inline passed / failed / missing
asap7/aes base ✅ pass ✅ MATCH 23 / 0 / 0
asap7/aes-block base ✅ pass ✅ MATCH 23 / 0 / 0
asap7/aes-mbff base ✅ pass ✅ MATCH 23 / 0 / 0
asap7/aes_lvt base ✅ pass ✅ MATCH 23 / 0 / 0
asap7/cva6 base ✅ pass ✅ MATCH 12 / 0 / 0
asap7/ethmac base ✅ pass ✅ MATCH 23 / 0 / 0
asap7/ethmac_lvt base ✅ pass ✅ MATCH 23 / 0 / 0
asap7/gcd base ✅ pass ✅ MATCH 23 / 0 / 0
asap7/gcd-ccs base ✅ pass ✅ MATCH 23 / 0 / 0
asap7/ibex base ✅ pass ✅ MATCH 23 / 0 / 0
asap7/jpeg base ✅ pass ✅ MATCH 23 / 0 / 0
asap7/jpeg_lvt base ✅ pass ✅ MATCH 23 / 0 / 0
asap7/mock-alu base ✅ pass ✅ MATCH 23 / 0 / 0
asap7/mock-cpu base ✅ pass ✅ MATCH 23 / 0 / 0
asap7/riscv32i base ✅ pass ✅ MATCH 23 / 0 / 0
asap7/riscv32i-mock-sram base ✅ pass ✅ MATCH 23 / 0 / 0
asap7/swerv_wrapper base ✅ pass ✅ MATCH 23 / 0 / 0
asap7/uart base ✅ pass ✅ MATCH 23 / 0 / 0
gf180/aes base ✅ pass ✅ MATCH 23 / 0 / 0
gf180/aes-hybrid base ✅ pass ✅ MATCH 23 / 0 / 0
gf180/ibex base ✅ pass ✅ MATCH 23 / 0 / 0
gf180/jpeg base ✅ pass ✅ MATCH 23 / 0 / 0
gf180/riscv32i base ✅ pass ✅ MATCH 23 / 0 / 0
gf180/uart-blocks base ✅ pass ✅ MATCH 23 / 0 / 0
gt2n/aes base ➖ inconclusive ➖ N/A 0 / 0 / 457
gt2n/gcd base ➖ inconclusive ➖ N/A 0 / 0 / 451
gt2n/jpeg base ➖ inconclusive ➖ N/A 0 / 0 / 456
ihp-sg13g2/aes base ✅ pass ✅ MATCH 23 / 0 / 0
ihp-sg13g2/gcd base ✅ pass ✅ MATCH 23 / 0 / 0
ihp-sg13g2/i2c-gpio-expander base ✅ pass ✅ MATCH 23 / 0 / 0
ihp-sg13g2/ibex base ✅ pass ✅ MATCH 23 / 0 / 0
ihp-sg13g2/jpeg base ✅ pass ✅ MATCH 23 / 0 / 0
ihp-sg13g2/riscv32i base ✅ pass ✅ MATCH 23 / 0 / 0
ihp-sg13g2/spi base ✅ pass ✅ MATCH 23 / 0 / 0
nangate45/aes base ✅ pass ✅ MATCH 23 / 0 / 0
nangate45/ariane133 base ✅ pass ✅ MATCH 23 / 0 / 0
nangate45/ariane136 base ✅ pass ✅ MATCH 23 / 0 / 0
nangate45/black_parrot ➖ inconclusive ➖ N/A no reports directory — flow produced no output
nangate45/bp_be_top ➖ inconclusive ➖ N/A no reports directory — flow produced no output
nangate45/bp_fe_top ➖ inconclusive ➖ N/A no reports directory — flow produced no output
nangate45/bp_multi_top ➖ inconclusive ➖ N/A no reports directory — flow produced no output
nangate45/dynamic_node base ✅ pass ✅ MATCH 23 / 0 / 0
nangate45/gcd base ✅ pass ✅ MATCH 23 / 0 / 0
nangate45/ibex base ✅ pass ✅ MATCH 23 / 0 / 0
nangate45/jpeg base ✅ pass ✅ MATCH 23 / 0 / 0
nangate45/mempool_group base ✅ pass ✅ MATCH 12 / 0 / 0
nangate45/swerv base ✅ pass ✅ MATCH 23 / 0 / 0
nangate45/swerv_wrapper base ✅ pass ✅ MATCH 23 / 0 / 0
nangate45/tinyRocket base ✅ pass ✅ MATCH 23 / 0 / 0
sky130hd/aes base ✅ pass ✅ MATCH 23 / 0 / 0
sky130hd/chameleon base ✅ pass ✅ MATCH 23 / 0 / 0
sky130hd/gcd base ✅ pass ✅ MATCH 23 / 0 / 0
sky130hd/ibex base ✅ pass ✅ MATCH 23 / 0 / 0
sky130hd/jpeg base ✅ pass ✅ MATCH 23 / 0 / 0
sky130hd/microwatt base ✅ pass ✅ MATCH 23 / 0 / 0
sky130hd/riscv32i base ✅ pass ✅ MATCH 23 / 0 / 0
sky130hs/aes base ✅ pass ✅ MATCH 23 / 0 / 0
sky130hs/gcd base ✅ pass ✅ MATCH 23 / 0 / 0
sky130hs/ibex base ✅ pass ✅ MATCH 23 / 0 / 0
sky130hs/jpeg base ✅ pass ✅ MATCH 23 / 0 / 0
sky130hs/riscv32i base ✅ pass ✅ MATCH 23 / 0 / 0

@AcKoucher AcKoucher closed this Aug 6, 2026
Signed-off-by: Arthur Koucher <arthurkoucher@precisioninno.com>
@AcKoucher AcKoucher reopened this Aug 6, 2026
@AcKoucher AcKoucher changed the title ensure module nets are correctly taken into account when writing RC data iterate dbNets rather than sta nets when fetching parasitics Aug 6, 2026
@AcKoucher AcKoucher closed this Aug 7, 2026
@AcKoucher AcKoucher reopened this Aug 7, 2026
@maliberty
maliberty merged commit 9768f0f into The-OpenROAD-Project:master Aug 8, 2026
9 of 16 checks passed
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.

3 participants