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

Improve global router for asap7/ethmac_lvt where it fails with a single DRC error #6589

Open
oharboe opened this issue Jan 24, 2025 · 9 comments
Assignees
Labels
grt Global Routing ppl IO Pin Placer

Comments

@oharboe
Copy link
Collaborator

oharboe commented Jan 24, 2025

Description

In The-OpenROAD-Project/OpenROAD-flow-scripts#2694 asap7/ethmac_lvt fails global route with a single DRC error after 100 iterations.

To reproduce untar and run https://drive.google.com/file/d/1XCfVGa0DHAz5MO_pJwR_VE8qOhZ1oqoO/view?usp=sharing

No luck in whittling down the problem with deltaDebug.

Image

Suggested Solution

Improve global router.

Additional Context

No response

@eder-matheus eder-matheus self-assigned this Jan 24, 2025
@eder-matheus eder-matheus added the grt Global Routing label Jan 24, 2025
@maliberty
Copy link
Member

The IO pin placement is totally different than master which has few pins on the e/w edges.

@maliberty maliberty added the ppl IO Pin Placer label Jan 28, 2025
@oharboe
Copy link
Collaborator Author

oharboe commented Jan 28, 2025

The IO pin placement is totally different than master which has few pins on the e/w edges.

This is unsurprising to me: a completely different optimal solution can be found with tiny differences in initial conditions.

So what does this mean practically?

  • Pin ppl chooses a pin placements that is never going to work in global routing and it should have done better, so fix ppl?
  • There's nothing wrong here with ppl, nor grt, just lock down pin placement in ORFS test cases in git to avoid random changes breaking master?
  • Wait for initial conditions to change again slightly, then merge synth: nudge .rtlil towards cleaner and more canonical OpenROAD-flow-scripts#2694 ?

I ran out of imagination w.r.t. suggesting alternatives :-)

@maliberty
Copy link
Member

I think it is worth a bit of digging to see if this is just the flap of the butterfly's wings or something more interesting.

@oharboe
Copy link
Collaborator Author

oharboe commented Jan 28, 2025

I think it is worth a bit of digging to see if this is just the flap of the butterfly's wings or something more interesting.

I suppose the test case is somewhat interesting independent of The-OpenROAD-Project/OpenROAD-flow-scripts#2694

@eder-matheus
Copy link
Contributor

@oharboe @maliberty I believe this is a case where we apply an unnecessarily large reducement in the routing resources. We're reducing it in 50% for every asap7 design, with few exceptions. I think this could be the case of studying different reduction values for this platform and choose a better one.

The attached test case finishes if I reduce the adjustment from 50% to 40%.

@oharboe
Copy link
Collaborator Author

oharboe commented Feb 4, 2025

@eder-matheus Would it be possible to make the error message more actionable and specific?

"grt failed, try increasing X to Y"?

Even if it takes a while to compute "Y" here, I think it would be worth the extra compute, because all the user can do is to randomly change variables and hope for the best...

@eder-matheus
Copy link
Contributor

@eder-matheus Would it be possible to make the error message more actionable and specific?

"grt failed, try increasing X to Y"?

Even if it takes a while to compute "Y" here, I think it would be worth the extra compute, because all the user can do is to randomly change variables and hope for the best...

I created this issue to track this request: #6638.
And I believe this other issue is also related to this topic: #6404.

I will work on it in the next days, hopefully we can have at least a rough measure for new adjustment suggestion.

@maliberty
Copy link
Member

The best we can do is try to guess at the better value. We can't really guarantee anything as you would have to re-run the flow run global placement forward to see if it works.

@oharboe
Copy link
Collaborator Author

oharboe commented Feb 4, 2025

my guess is completely uniformed...

All I can do is to scan values and look at the results to try to reason what constitutes a "good" value.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
grt Global Routing ppl IO Pin Placer
Projects
None yet
Development

No branches or pull requests

3 participants