-
Notifications
You must be signed in to change notification settings - Fork 621
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
dpl: support LEF58_CELLEDGESPACINGTABLE #6595
dpl: support LEF58_CELLEDGESPACINGTABLE #6595
Conversation
Signed-off-by: osamahammad21 <[email protected]>
There will be a followup PR for optimizing performance of the checkEdgeSpacing function. This is just an initial attempt. The followup PR would include the following:
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
clang-tidy made some suggestions
I don't think this is necessary. The search on the pixel grid is already fairly efficient. The extra memory cost versus performance feels heavy. |
Signed-off-by: osamahammad21 <[email protected]>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
clang-tidy made some suggestions
Signed-off-by: osamahammad21 <[email protected]>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
clang-tidy made some suggestions
Signed-off-by: osamahammad21 <[email protected]>
clang-tidy review says "All clean, LGTM! 👍" |
: spc(spc_in), is_exact(is_exact_in), except_abutted(except_abutted_in) | ||
{ | ||
} | ||
bool operator<(const EdgeSpacingEntry& rhs) const { return spc < rhs.spc; } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why only a partial ordering?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I only use this for getting the maximum spacing value. It doesn't matter if a < b or b < a if they both end up with the same spacing value.
@@ -932,6 +933,113 @@ bool Opendp::checkRegionOverlap(const Cell* cell, | |||
// be fully contained by the cell's bounding box. | |||
return result.empty(); | |||
} | |||
namespace cell_edges { | |||
Rect transformEdgeRect(const Rect& edge_rect, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why can't you just apply the instance transform directly to the edge?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
because x and y are the instance location (lower left corner point of the instance bounding box) not the origin point. applying the inst transform directly is not correct.
Signed-off-by: osamahammad21 <[email protected]>
clang-tidy review says "All clean, LGTM! 👍" |
Linked to #3899