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

drt: DRC violations due to routing being too strict about following tracks when accessing pins #6097

Open
titan73 opened this issue Nov 5, 2024 · 14 comments
Assignees
Labels
drt Detailed Routing

Comments

@titan73
Copy link
Contributor

titan73 commented Nov 5, 2024

Describe the bug

After 18 iterations, there are 40 similar drc violations still not fixed.

M2 route follow track when switching to M1 causing DRC.

or_pin

Expected Behavior

M2 should not strictly follow track if possible to fix DRC.

Environment

v2.0-16855-ga15114a95

To Reproduce

openroad test.tcl with test case below:

drc_pin_access.zip

Relevant log output

No response

Screenshots

No response

Additional Context

No response

@maliberty maliberty added the drt Detailed Routing label Nov 5, 2024
@maliberty
Copy link
Member

Please don't include proprietary tool output.

@titan73 titan73 changed the title DRC violations due to routing to strict about following tracks when accessing pins drt: DRC violations due to routing to strict about following tracks when accessing pins Nov 5, 2024
@stefanottili
Copy link

stefanottili commented Nov 5, 2024

In the picture it looks as if your stdcell sites are not a multiple of the routing pitch.
This is very unusual and leads to none of the stdcell pins being "on track".

@osamahammad21
Copy link
Member

@stefanottili I agree with you, but I don't understand why pin access did not complain about this earlier in the flow. I'll investigate further.

@maliberty maliberty changed the title drt: DRC violations due to routing to strict about following tracks when accessing pins drt: DRC violations due to routing being too strict about following tracks when accessing pins Nov 5, 2024
@titan73
Copy link
Contributor Author

titan73 commented Nov 6, 2024

In the picture it looks as if your stdcell sites are not a multiple of the routing pitch. This is very unusual and leads to none of the stdcell pins being "on track".

Yes indeed, the sites for this library is not multiple of the pitch. This library is badly designed. All other sites for other libraries in this techno are correct.

@maliberty
Copy link
Member

Do you need to use the badly designed library? I'm not saying we shoudn't look at it but it also seems like its making things unnecessarily hard.

@titan73
Copy link
Contributor Author

titan73 commented Nov 7, 2024

Yes. There is not replacement for this standard cells library (215 cells). It's a mature techno with a lot of products based on it. They unfortunately won't redesign these cells.

@titan73
Copy link
Contributor Author

titan73 commented Nov 7, 2024

Btw, apart from the site width not multiple of pitch, if a library has the correct site but the cells pins are not or badly aligned, that will cause the same issues in OR, right?

@stefanottili
Copy link

Why don’t you use a pitch that matches the design of the stdcells ?

@titan73
Copy link
Contributor Author

titan73 commented Nov 7, 2024

Why don’t you use a pitch that matches the design of the stdcells ?

I plan to test this with custom tracks. This could work in that case because there is only one power domain using GO1 cells. With 2 power domains that won't because GO2 cells have a correct site width so if we change the tracks for GO1's ones cells this will break the GO2's ones.

@osamahammad21
Copy link
Member

@bnmfw I'm concerned that pin access allows access to this pin while it's impossible with the given access points and the nearby cell. Something is probably going wrong in pa pattern step for generating access patterns for a row of cells.

@maliberty
Copy link
Member

While we look at this, a simple workaround is to use

global_placement -pad_left 1 -density 0.8
set_placement_padding -global -left 1

@maliberty
Copy link
Member

It looks like the row based search finds the lowest cost set of APs but they are not DRC free. I suppose it hopes that dr will find a solution and accepts it. Really we need to generate at least one AP that is not so close to the edge.

@maliberty
Copy link
Member

-min_access_points 5 also fixes the problem.

@maliberty
Copy link
Member

@bnmfw I think we should the termination at MINNUMACCESSPOINT_STDCELLPIN to also consider if all APs are so close to the cell edge that such a failure could occur when we do row testing. We should try to find at least one not so close before stopping even if we hit the overall minimum.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
drt Detailed Routing
Projects
None yet
Development

No branches or pull requests

5 participants