Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

rsz: extract detailed routing parasitics inside estimate_parasitics code #6068

Open
wants to merge 17 commits into
base: master
Choose a base branch
from

Conversation

eder-matheus
Copy link
Collaborator

Part one to fix #6064.

Signed-off-by: Eder Monteiro <[email protected]>
Copy link
Contributor

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

Copy link
Contributor

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

Signed-off-by: Eder Monteiro <[email protected]>
Copy link
Contributor

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

2 similar comments
Copy link
Contributor

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

Copy link
Contributor

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

Copy link
Contributor

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

src/rsz/README.md Outdated Show resolved Hide resolved
[-spef_file spef_file]
[-ext_model_file]
Copy link
Member

Choose a reason for hiding this comment

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

Suggested change
[-ext_model_file]
[-ext_model_file model_file]

Copy link
Collaborator

Choose a reason for hiding this comment

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

how does this handle corners? they have separate model files.

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

In my tests, I'm using only the public PDKs available in ORFS, which use only on model file and one corner for parasitics extraction.

How are you using multiple corners in your flow? Do you loop over each corner to extract the parasitics for them?

Copy link
Collaborator

Choose a reason for hiding this comment

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

Yes, we loop over them to generate a different spef file per corner and read them in per corner to be able to get timing across corners (it's clumsy, but it's the interface we have in OpenROAD at the moment). I think corner support is needed for this to be a complete/correct solution.

Copy link
Collaborator

Choose a reason for hiding this comment

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

If rcx was augmented to allow us to set the model files per corner that would also allow us to avoid adding this argument and just ask rcx to generate the parasitics

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

Maybe this option can be updated to take multiple files, and them the implementation will perform parasitics extraction for each of them. I believe sta have the support to have the parasitics stored for multiple corners, so when running repair_timing it would look at all of them.

Copy link
Collaborator

Choose a reason for hiding this comment

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

@eder-matheus it seems to me like modifying RCX to store the model files would require a much less complex argument to this command. and yes, STA fully supports corners.

src/rsz/README.md Outdated Show resolved Hide resolved
eder-matheus and others added 3 commits October 30, 2024 20:15
Co-authored-by: Matt Liberty <[email protected]>
Signed-off-by: Eder Monteiro <[email protected]>
Co-authored-by: Matt Liberty <[email protected]>
Signed-off-by: Eder Monteiro <[email protected]>
Signed-off-by: Eder Monteiro <[email protected]>
Copy link
Contributor

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

2 similar comments
Copy link
Contributor

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

Copy link
Contributor

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

@maliberty
Copy link
Member

@gadfort do you have a snippet of code that shows how you set it up today for rcx & sta?

@gadfort
Copy link
Collaborator

gadfort commented Oct 31, 2024

@maliberty https://github.com/siliconcompiler/siliconcompiler/blob/adb451bc72eb0f9b8a863ddf192a164b7f0b0e25/siliconcompiler/tools/openroad/scripts/sc_export.tcl#L40-L69
First few lines handle generate unique SPEFs for each corner and then the last bit just reads them in per corner.
In most other tools, you just define a pexcorner and associate the extraction file with that and then when you call for parasitics these are used. usually write_spef is available and takes a corner input to allow you to dump any corner you want.

@gadfort
Copy link
Collaborator

gadfort commented Oct 31, 2024

I should note that it looks like rcx could "handle" corners if they are in the RCX file, but the current conversion flows we have don't support creating a single file with multiple corners (no clue what that would look like anyways), most PDKs separate the corners for PEX

Copy link
Contributor

github-actions bot commented Nov 4, 2024

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

Copy link
Contributor

github-actions bot commented Nov 6, 2024

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

@eder-matheus
Copy link
Collaborator Author

The current implementation of RCX doesn't allow reading multiple model files at once. Since we have a big update ongoing on RCX, I think we should not implement new features in this tool until they are merged.

Regarding my implementation here, I believe we could merge what we have now but keep track of the required updates in RCX regarding multiple model files. I will add comments in my code to track what parts needs to be updated once RCX has full support for multiple model files.

Copy link
Contributor

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

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.

RSZ: extract parasitics for repair timing and repair design inside rsz code
3 participants