Skip to content

est: Add utility to query resistance between pins #8145

Open
openroad-ci wants to merge 3 commits intoThe-OpenROAD-Project:masterfrom
The-OpenROAD-Project-staging:est-p2p-resist
Open

est: Add utility to query resistance between pins #8145
openroad-ci wants to merge 3 commits intoThe-OpenROAD-Project:masterfrom
The-OpenROAD-Project-staging:est-p2p-resist

Conversation

@openroad-ci
Copy link
Collaborator

Add est::sum_point_to_point_resist to sum the total parasitic
resistance between two connected pins. See below for sample output.

>>> est::report_net_parasitics [get_net _096_]
Net _096_ 0.493
Nodes:
[redacted]
Resistors:
1 _462_/Y _096_:8 0.045
2 _096_:8 _096_:10 0.041
3 _096_:10 _096_:14 0.024
4 _096_:14 _096_:18 0.040
5 _096_:18 _096_:22 0.040
6 _096_:22 _626_/A 0.031
7 _096_:14 _504_/B 0.017
Coupling Capacitors:
>>> est::sum_point_to_point_resist [get_pin _462_/Y] [get_pin _504_/B]
125.927605

povik added 3 commits August 28, 2025 18:30
Signed-off-by: Martin Povišer <povik@cutebit.org>
Signed-off-by: Martin Povišer <povik@cutebit.org>
Add `est::sum_point_to_point_resist` to sum the total parasitic
resistance between two connected pins. See below for sample output.

    >>> est::report_net_parasitics [get_net _096_]
    Net _096_ 0.493
    Nodes:
    [redacted]
    Resistors:
    1 _462_/Y _096_:8 0.045
    2 _096_:8 _096_:10 0.041
    3 _096_:10 _096_:14 0.024
    4 _096_:14 _096_:18 0.040
    5 _096_:18 _096_:22 0.040
    6 _096_:22 _626_/A 0.031
    7 _096_:14 _504_/B 0.017
    Coupling Capacitors:
    >>> est::sum_point_to_point_resist [get_pin _462_/Y] [get_pin _504_/B]
    125.927605

Signed-off-by: Martin Povišer <povik@cutebit.org>
@github-actions
Copy link
Contributor

clang-tidy review says "All clean, LGTM! 👍"

@povik
Copy link
Contributor

povik commented Aug 28, 2025

I've included some extra changes to move helpers from rsz which are est related and a small code tweak. FYI @eder-matheus

@maliberty
Copy link
Member

In your example the res are all < 0.1 but the sum is 125? Is there a units issue?

@povik
Copy link
Contributor

povik commented Sep 22, 2025

Yes, I think the report is user facing and might be using kohms while the query utility is internal and returns ohms.

@povik
Copy link
Contributor

povik commented Sep 22, 2025

The path between the two pins is

1 _462_/Y _096_:8 0.045
2 _096_:8 _096_:10 0.041
3 _096_:10 _096_:14 0.024
7 _096_:14 _504_/B 0.017

the sum of that is 0.045 + 0.041 + 0.024 + 0.017 = 0.127.

The 0.127 ~ 0.126 discrepancy should be due to rounding in the net report.

@povik
Copy link
Contributor

povik commented Sep 22, 2025

The CI failure is a test timing out:

//src/rsz/test:repair_fanout6-tcl                                       TIMEOUT in 300.0s

@maliberty Have you seen that elsewhere? I don't think I'm changing anything in use by that test.

Copy link
Member

@maliberty maliberty left a comment

Choose a reason for hiding this comment

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

I realize this is just a developer debug tool but it would be nice to have one simple test.

ParasiticNode* upstream_node,
ParasiticNode* node,
ParasiticNode* target,
std::set<ParasiticNode*> on_stack)
Copy link
Member

Choose a reason for hiding this comment

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

Pass by reference to avoid copying

Copy link
Contributor

Choose a reason for hiding this comment

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

Oops

@maliberty
Copy link
Member

Seems to have gotten lost....

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