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

grt: fix handle of obstructions in single gcells #5703

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

Conversation

eder-matheus
Copy link
Collaborator

Fixes #5696.

Secure-ci is running.

Copy link
Contributor

github-actions bot commented Sep 6, 2024

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

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

github-actions bot commented Sep 7, 2024

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

Copy link
Contributor

github-actions bot commented Sep 9, 2024

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

@eder-matheus eder-matheus marked this pull request as draft September 9, 2024 15:58
Copy link
Contributor

github-actions bot commented Sep 9, 2024

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

1 similar comment
Copy link
Contributor

github-actions bot commented Sep 9, 2024

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

Copy link
Contributor

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

Comment on lines +1615 to +1621
// if obstruction is inside a single gcell, block the edge between current
// gcell and the adjacent gcell
if (first_tile.getX() == last_tile.getX()
&& last_tile.getX() + 1 < grid_limit) {
int last_tile_x = last_tile.getX() + 1;
last_tile.setX(last_tile_x);
}
Copy link
Member

Choose a reason for hiding this comment

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

I think generally not just for first_tile.getX() == last_tile.getX():

last_tile.setX(last_tile.getX() + 1);
first_tile.setX(first_tile.getX() - 1);

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

I've tried this approach, but it is too agressive. A bunch of designs failed with high congestion. We are probably blocking pin access for macro pins and instance pins that are above layer 1.

My understanding is that blocking to the right/top is enought because the way FastRoute algorithm works, creating the edges in these two directions. Also, the test case used to validate this update is showing the correct congestion in layer 1 and we don't have guides in this layer anymore.

Copy link
Contributor

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

1 similar comment
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! 👍"

Signed-off-by: Eder Monteiro <[email protected]>
@eder-matheus eder-matheus marked this pull request as ready for review September 16, 2024 16:06
Copy link
Contributor

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

Copy link
Contributor

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

@maliberty
Copy link
Member

@eder-matheus what's the status of this PR?

@eder-matheus
Copy link
Collaborator Author

@eder-matheus what's the status of this PR?

I have congestion failures in a few public designs that I need to investigate. I didn't prioritized it yet because I was looking at repair antennas and the new yosys version, but I'll got back to it soon.

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.

GRT: Bad GRT guides results in DRT break
3 participants