# transparently to the add_polygon() function through the function
E = pg.ellipse(layer={4, 8, 19})
print(E.layers)

#==============================================================================
# Advanced layers: Containing multiple Layers in a LayerSet object
#==============================================================================
# What you can also do is make a LayerSet, which lets you
# conveniently call each Layer object just by its name.  You can also specify
# the layer color using an RGB triplet e.g (0.1, 0.4, 0.2), an HTML hex color
# (e.g. #a31df4), or a CSS3 color name (e.g. 'gold' or 'lightblue'
# see http://www.w3schools.com/colors/colors_names.asp )
# The 'alpha' argument also lets you specify how transparent that layer should
# look when using quickplot (has no effect on the written GDS file)

ls = LayerSet()  # Create a blank LayerSet
ls.add_layer(name='au',
             gds_layer=4,
             gds_datatype=0,
             description='Gold wiring',
             color='goldenrod')
ls.add_layer(name='nb',
             gds_layer=5,
             gds_datatype=0,
             description='Niobium liftoff',
             color=(0.4, 0.1, 0.1))
ls.add_layer('nb_etch', 6, 0, color='lightblue', alpha=0.2)

ls['au']

# Now that our layers are defined, we can call them from the LayerSet in the same way
Example #2
0
# example-import_gds
import phidl.geometry as pg
from phidl import quickplot as qp

D = pg.ellipse()
D.write_gds('myoutput.gds')
D = pg.import_gds(filename = 'myoutput.gds', cellname = None, flatten = False)
qp(D) # quickplot the geometry
create_image(D, 'import_gds')

# example-preview_layerset
import phidl.geometry as pg
from phidl import quickplot as qp

from phidl import LayerSet
lys = LayerSet()
lys.add_layer('p', color = 'lightblue', gds_layer = 1, gds_datatype = 0)
lys.add_layer('p+', color = 'blue', gds_layer = 2, gds_datatype = 0)
lys.add_layer('p++', color = 'darkblue', gds_layer = 3, gds_datatype = 0)
lys.add_layer('n', color = 'lightgreen', gds_layer = 4, gds_datatype = 0)
lys.add_layer('n+', color = 'green', gds_layer = 4, gds_datatype = 98)
lys.add_layer('n++', color = 'darkgreen', gds_layer = 5, gds_datatype = 99)
D = pg.preview_layerset(lys, size = 100, spacing = 100)
qp(D) # quickplot the geometry
create_image(D, 'preview_layerset')
phidl.reset()

# example-connector
import phidl.geometry as pg
from phidl import quickplot as qp
def setup_layers():
    ls = LayerSet()  # Create a blank LayerSet
    ls.add_layer(name='ChipBoundary',
                 gds_layer=99,
                 gds_datatype=0,
                 description='Chip boundary',
                 color='darkblue',
                 alpha=0.1)
    ls.add_layer(name='Ebeamfield',
                 gds_layer=0,
                 gds_datatype=0,
                 description='Ebeam Field',
                 color='ghostwhite',
                 alpha=0.01)
    ls.add_layer(name='Annotation',
                 gds_layer=97,
                 gds_datatype=0,
                 description='Description',
                 color='black',
                 alpha=0.4)
    ls.add_layer(name='PolingE',
                 gds_layer=10,
                 gds_datatype=0,
                 description='Poling Electrodes',
                 color='goldenrod',
                 alpha=0.7)
    ls.add_layer(name='MarkerM',
                 gds_layer=20,
                 gds_datatype=0,
                 description='Marker Protection',
                 color='PaleGreen',
                 alpha=0.2)
    ls.add_layer(name='Waveguides',
                 gds_layer=30,
                 gds_datatype=0,
                 description='Ridge waveguide',
                 color='crimson',
                 alpha=0.8)
    ls.add_layer(name='Bot_EOM',
                 gds_layer=40,
                 gds_datatype=0,
                 description='Bottom EOM Electrodes',
                 color='gold',
                 alpha=0.8)
    ls.add_layer(name='Vias',
                 gds_layer=50,
                 gds_datatype=0,
                 description='Vias to etch SiO2 cladding',
                 color='lightskyblue',
                 alpha=0.7)
    ls.add_layer(name='Pt',
                 gds_layer=60,
                 gds_datatype=0,
                 description='Pt for heaters',
                 color='blue',
                 alpha=0.8)  #silver
    ls.add_layer(name='Wirebond',
                 gds_layer=70,
                 gds_datatype=0,
                 description='Electrodes routing to bonding pads',
                 color='palegoldenrod',
                 alpha=0.2)

    return ls
Example #4
0
    NO_TILE_SI=63,
    FLOORPLAN=600,
    FLOORPLAN_PACKAGING=601,
    FLOORPLAN_WIREBOND_LANE=602,
    FLOORPLAN_SI_REMOVAL=603,
    FLOORPLAN_PACKAGING_OPTICAL=604,
    FLOORPLAN_E_DIE=610,
    FLOORPLAN_E_DIE_COMPONENTS=611,
    FLOORPLAN_CU_HEAT_SINK=620,
    LABEL=201,
    INFO_GEO_HASH=202,
    polarization_te=203,
    polarization_tm=204,
)

ls = LayerSet()  # Create a blank LayerSet
ls.add_layer("wgcore", 1, 0, "wgcore", "gray")
ls.add_layer("wgclad", 111, 0, "wgclad", "gray", alpha=0)
ls.add_layer("slab150", 2, 0, "slab150", "lightblue", alpha=0.2)
ls.add_layer("slab150clad", 112, 0, "slab150clad", "lightblue", alpha=0.2)
ls.add_layer("slab150trench", 122, 0, "slab150trench", "lightblue", alpha=0.2)
ls.add_layer("slab90", 3, 0, "slab90", "gray", alpha=0.5)
ls.add_layer("slab90clad", 113, 0, "slab90clad", "gray", alpha=0.5)
ls.add_layer("slab90trench", 123, 0, "slab90trench", "gray", alpha=0.5)
ls.add_layer("wgn", 34, 0, "wgn", "orange")
ls.add_layer("wgnclad", 36, 0, "wgn_clad", "gray", alpha=0)

ls.add_layer("n", 20, 0, "n", "red", alpha=0.2)
ls.add_layer("np", 22, 0, "np", "red", alpha=0.4)
ls.add_layer("npp", 24, 0, "npp", "red", alpha=0.6)