Not signed in (Sign In)

Vanilla 1.1.4 is a product of Lussumo. More Information: Documentation, Community Support.

    • CommentAuthortjacqmin
    • CommentTimeJun 13th 2016 edited
     
    Dear all,

    I would like to subtract two layers. In the following example, I am trying to create two layer with one box in each. Then I would like to put the subtraction of the two layers in a new layer. How should I proceed ? Here is the starting point of the code :

    import pya
    import math

    # Create Layout
    layout = pya.Layout()

    # Create cell
    TopCell = layout.create_cell("Cell1")

    # Create layers
    Layer0 = layout.layer(1, 0)
    Layer1 = layout.layer(2, 0)

    # Create boxes
    box1 = pya.Box(-2400, -2400, 2400, 1500)
    box2 = pya.Box(-10, -10, 210, 210)
    TopCell.shapes(Layer0).insert(box1)
    TopCell.shapes(Layer1).insert(box2)

    layout.write('bla.gds')

    How to subtract Layer0 and Layer1 and put them in a new layer ?
    Thanks a lot.
    • CommentAuthorMatthias
    • CommentTimeJun 17th 2016 edited
     

    Hello,

    There is a simple way to do this using a DRC script:

    Layer0 = input(1, 0)
    Layer1 = input(2, 0)
    (Layer0 - Layer1).output(10, 0)
    

    the basic way using plain Python is via the pya.Region object. A Region object is basically a collection of polygons and offers boolean and many other operations:

    l0 = pya.Region()
    l0.insert(pya.Box(-2400, -2400, 2400, 1500)
    l1 = pya.Region()
    l1.insert(pya.Box(-10, -10, 210, 210)
    result = l0 - l1
    
    output = layout.layer(10, 0)
    TopCell.shapes(output).insert(result)
    

    Matthias

    • CommentAuthortjacqmin
    • CommentTimeJun 18th 2016
     
    Thank you Matthias, this is very helpful.