DRC using rounded_corners

edited February 2017 in Python scripting

Hi, Matthias,
Thanks for making your excellent program freely available.
The new utility Edit->Selection->Round Corners is amazing!
With it, I can take a layer which is rounded with one set of values (inner radius, outer radius) and change it to another set of values (inner radius, outer radius) and this works perfectly.
However, the DRC method layer#rounded_corners seems to behave differently.
Here's a link to a sample layout:
https://drive.google.com/open?id=0ByiQ4cYAkbuWQjRjME94T3dhQnc
and here is Ruby DRC script code illustrating the problem:

report("sample DRC")
# these are features on the sample layout
ly1 = input(1,0) # this layer has no rounding
ly2 = input(2,0) # this layer is rounded with 2 um inner and 10 um outer radii
# these are new layers created by this DRC script
ly3 = ly2.rounded_corners(0.0, 0.0, 128) # ly3 is un-rounded
ly4 = ly1.rounded_corners(1.0, 5.0, 128) # ly4 has different rounding than ly2
ly5 = ly2.rounded_corners(1.0, 5.0, 128) # ly5 tries to create different rounding from ly2
ly6 = ly4.xor(ly2)
ly6.output("rounded corner", "rounded corner problem") # note:  rounding a square layer did work
ly7 = ly3.xor(ly1)
ly7.output("square corner", "square corner problem") # note:  squaring corners didn't work
ly8 = ly5.xor(ly2)
ly8.output("rerounded corner", "rerounded corner problem")

Note that if the feature on GDS layer 2 is selected and then rounded using Edit->Selection->Round Corners with new values (inner = 1.0, outer = 5.0), it is updated correctly.
But, ly5 (created above) does not work correctly--it seems to have the same rounding as the source layer ly2.
(ly3, which is unrounded by setting the inner and outer radii to 0, does not appear to work correctly either.)
Note that ly4, which is created from the unrounded ly1, does work correctly.

Is this the expected behavior?

Comments

  • edited February 2017

    Hi,

    thanks, but could you reformat the post? It's hard to read. The forum supports Markdown markup, so you can embed code putting four blanks in front of each line.

    In general, the DRC "round_corners" and the edit function are not the same. The edit function allows updating the radius while the DRC function will apply "more rounding". In effect, to emulate the editor feature, one would need a "undo rounded corners" before applying a new rounding.

    Matthias

  • edited November -1

    Thanks--that makes sense.
    Any pointers on what it would take to add the functionality of "unround" which is available in the edit function as a DRC function?
    Naively, I would think it's just a matter of looping through the shapes on a DRC layer and feeding them to the existing edit function, but maybe there are other complications.

  • edited February 2017

    Hi,

    This is the pointer: https://github.com/klayoutmatthias/klayout/issues/2.

    Matthias

Sign In or Register to comment.