# 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-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
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)