How to faltten the shape as this sample?

Hi sir, as the attached GDS and figure.
do you have any idea for how to process the pattern as layer 86,0 to be the layer 108,0?
in the layer 86,0 , we have many non-smooth pattern , I want to cut down it as layer 108.
do you have any idea for that ?
below , I have some idea , I want to using edge length to be a key to process it
But it is not workable...
could you please help me?

pattern_psv1=input(86,0)
chamferLen=5
edges      = pattern_psv1.edges
hEdges     = edges.with_angle(0)
vEdges     = edges.with_angle(90)
chamfer1    = hEdges.interacting(vEdges).with_length(0..chamferLen.um)
chamfer2    = hEdges.interacting(vEdges).with_length(0..chamferLen.um)
chamfer1.output(150,50)
chamfer2.output(150,51)

Comments

  • Hi @jiunnweiyeh,

    did you try "smoothed"?

    Like this:

    l86 = input(86, 0)
    
    l86.smoothed(0.5.um).output(108, 0)
    

    This function removes the step, but generates a non-horizontal edge. Will this be acceptable?

    Matthias

  • Hi Mathias,
    smoothed will not a good solution for this case.
    cause the result as this picture is not better.

    here was what my current code , I using with_angle to check 90 degree pattern then check the bbox size.
    After that , I still have some of pattern need to process , I still finding if any other ways.
    (other angle but some issue , our customer provide a polygon pattern it is not regular.
    Thanks.

    psv=psv.or(outs10.extents)
    chamferLen=2.5
    outs9 = polygon_layer
    pattern_psv1_pre=psv.sized(chamferLen.um).sized(-chamferLen.um).sized(chamferLen.um).sized(-chamferLen.um).with_angle(90.degree)
    pattern_psv1_pre.output(150,500)
    pattern_psv1_pre=input(150,500)
    pattern_psv1_pre.raw.each do |xx|
    if xx.bbox.height<=chamferLen || xx.bbox.width <=chamferLen then
    outs9.insert(xx)
    end
    end
    psv_p=psv.xor(outs9.extents).sized(-chamferLen.um).sized(chamferLen.um).sized(-chamferLen.um).sized(chamferLen.um)
    
Sign In or Register to comment.