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

Adding MIM-B table for GF180MCU DRC #73

Open
wants to merge 2 commits into
base: main
Choose a base branch
from

Conversation

FaragElsayed2
Copy link
Collaborator

Adding MIM-B table for GF180MCU DRC

Copy link
Collaborator

@atorkmabrains atorkmabrains left a comment

Choose a reason for hiding this comment

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

Please check @FaragElsayed2

klayout/drc/rule_decks/mim_b.drc Show resolved Hide resolved
Copy link
Collaborator

@atorkmabrains atorkmabrains left a comment

Choose a reason for hiding this comment

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

@atorkmabrains
Copy link
Collaborator

@proppy Could you please merge this?

Copy link
Member

@proppy proppy left a comment

Choose a reason for hiding this comment

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

Looks good overall, just a few nits and questions.

@proppy
Copy link
Member

proppy commented Jun 11, 2023

and sorry for the late review!

mimtm11_large_topmin1_metal.data.each do |p|
mimtm11_topmin1_metal_polygon_layer = polygon_layer
mimtm11_topmin1_metal_polygon_layer.data.insert(p)
fuse_in_polygon = fusetop.and(mimtm11_topmin1_metal_polygon_layer)
Copy link
Member

Choose a reason for hiding this comment

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

wouldn't it be more effective to test fusetop.and(mimtm11_large_topmin1_metal) outside of a loop, and then look if any resulting shape has an area > 10_000?

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

@proppy We have to use all checks inside the loop as we need to iterate over each single plate.

Copy link
Member

Choose a reason for hiding this comment

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

yes, but is there a difference between:

fuse_in_polygon = fusetop.and(mimtm11_large_topmin1_metal)
fuse_in_polygon_bad = fuse_in_polygon.filter {|p| p > 10_000 }

and what we currently have?


mimtm11_bad_topmin1_metal_polygon = mimtm11_topmin1_metal_polygon_layer.interacting(fuse_in_polygon)
mimtm11_bad_topmin1_metal_polygon.data.each do |b|
b.num_points.positive? && mimtm11_large_topmin1_metal_violation.data.insert(b)
Copy link
Member

Choose a reason for hiding this comment

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

what does num_points.positive? check here?

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

@proppy It's a sanity check (num_points > 0) to ignore empty polygons.

Copy link
Member

Choose a reason for hiding this comment

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

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

@proppy Yes, using !b.is_empty? will get same results.

Copy link
Member

Choose a reason for hiding this comment

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

should we switch to it? assuming you agree it makes things more readable?

@atorkmabrains
Copy link
Collaborator

@proppy Could you please merge?

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.

3 participants