From 98843e9a429905651a327dafefff262d999cfc29 Mon Sep 17 00:00:00 2001 From: Lukas Chrostowski Date: Sun, 27 Oct 2024 20:38:57 -0700 Subject: [PATCH] ebeam_dream_FAVE_SiN_1550_BB @mustafacc longer structure to match the WB cell --- klayout/EBeam/gds/EBeam_Dream/DP_logo.gds | Bin 23518 -> 0 bytes .../ebeam_dream_FAVE_SiN_1550_BB.oas | Bin 0 -> 4365 bytes .../ebeam_dream_FAVE_SiN_1550_BB.py | 236 ------------------ 3 files changed, 236 deletions(-) delete mode 100644 klayout/EBeam/gds/EBeam_Dream/DP_logo.gds create mode 100644 klayout/EBeam/gds/EBeam_Dream/ebeam_dream_FAVE_SiN_1550_BB.oas delete mode 100644 klayout/EBeam/pymacros/pcells_EBeam_Dream/ebeam_dream_FAVE_SiN_1550_BB.py diff --git a/klayout/EBeam/gds/EBeam_Dream/DP_logo.gds b/klayout/EBeam/gds/EBeam_Dream/DP_logo.gds deleted file mode 100644 index 62ba8e7e463e2a50922f585b4d2805a37fc33573..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23518 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 diff --git a/klayout/EBeam/gds/EBeam_Dream/ebeam_dream_FAVE_SiN_1550_BB.oas b/klayout/EBeam/gds/EBeam_Dream/ebeam_dream_FAVE_SiN_1550_BB.oas new file mode 100644 index 0000000000000000000000000000000000000000..effd5971dced59ab37102ff39111f8c299c027a8 GIT binary patch literal 4365 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 literal 0 HcmV?d00001 diff --git a/klayout/EBeam/pymacros/pcells_EBeam_Dream/ebeam_dream_FAVE_SiN_1550_BB.py b/klayout/EBeam/pymacros/pcells_EBeam_Dream/ebeam_dream_FAVE_SiN_1550_BB.py deleted file mode 100644 index 5fcad491..00000000 --- a/klayout/EBeam/pymacros/pcells_EBeam_Dream/ebeam_dream_FAVE_SiN_1550_BB.py +++ /dev/null @@ -1,236 +0,0 @@ -import pya -import math -from SiEPIC._globals import PIN_LENGTH as pin_length -from SiEPIC.extend import to_itype -from SiEPIC.scripts import path_to_waveguide, connect_pins_with_waveguide, connect_cell -from SiEPIC.utils import get_technology_by_name, load_Waveguides_by_Tech, get_layout_variables - -class ebeam_dream_FAVE_SiN_1550_BB(pya.PCellDeclarationHelper): - """ - The PCell declaration for the Dream Photonics - Facet-attached Vertical Emitter(FAVE) - for Silicon Nitride - for 1550 nm operation - - Authors: Dream Photonics - """ - - def __init__(self): - - # Important: initialize the super class - super(ebeam_dream_FAVE_SiN_1550_BB, self).__init__() - - self.technology_name = 'EBeam' - TECHNOLOGY = get_technology_by_name(self.technology_name) - - #declare the layers - self.param("silayer", self.TypeLayer, "Si Layer", default = TECHNOLOGY['SiN'], hidden=False) - self.param("pinrec", self.TypeLayer, "PinRec Layer", default = TECHNOLOGY['PinRec'], hidden=True) - self.param("devrec", self.TypeLayer, "DevRec Layer", default = TECHNOLOGY['DevRec'], hidden=True) - self.param("fibertarget", self.TypeLayer, "Fiber Target Layer", default=TECHNOLOGY['FbrTgt'], hidden=True) - self.param("textl", self.TypeLayer, "Text Layer", default=TECHNOLOGY['Text'], hidden=True) - self.param("bb",self.TypeLayer,"BB Layer", default=TECHNOLOGY['BlackBox'], hidden=True) - self.param("dt",self.TypeLayer,"DT Layer", default=TECHNOLOGY['Deep Trench'], hidden=True) - self.param("dt_bezier_corner",self.TypeDouble,"Rounded corners (Bezier) fraction, 0 to 1, (0=off)", default=0.2, hidden=False) - - def can_create_from_shape_impl(self): - return False - - - def produce(self, layout, layers, parameters, cell): - # This is the main part of the implementation: create the layout - self.cell = cell - self._param_values = parameters - self.layout = layout - - #fetch the parameters - dbu = self.layout.dbu - ly = self.layout - shapes = self.cell.shapes - - LayerSiN = ly.layer(self.silayer) - LayerPinRecN = ly.layer(self.pinrec) - LayerDevRecN = ly.layer(self.devrec) - LayerFbrTgtN = ly.layer(self.fibertarget) - LayerTEXTN = ly.layer(self.textl) - LayerBBN = ly.layer(self.bb) - - offset = to_itype(0,dbu) - pitch = to_itype(127,dbu) - l_taper = 60e3 - Lw2 = to_itype(15,dbu) - Lw3 = Lw2 + to_itype(20,dbu) - - wavelength = 1550 - - waveguide_type = 'SiN Strip TE 1550 nm, w=750 nm' - w_waveguide = 750 # nm - - def circle(x,y,r): - npts = 50 - theta = 2*math.pi/npts - pts = [] - for i in range(0,npts): - pts.append(pya.Point.from_dpoint(pya.DPoint((x+r*math.cos(i*theta))/1,(y+r*math.sin(i*theta))/1))) - return pts - - - ########################################################################################################################################################################## - #draw N tapers - x = offset + l_taper + Lw3 - for n_ch in range(1): - - #draw the taper - taper_pts = [pya.Point(0,-w_waveguide/2+pitch*n_ch),pya.Point(0,w_waveguide/2+pitch*n_ch),pya.Point(offset + l_taper + Lw3,w_waveguide/2+pitch*n_ch),pya.Point(offset + l_taper + Lw3,-w_waveguide/2+pitch*n_ch)] - - #place the taper - shapes(LayerBBN).insert(pya.Polygon(taper_pts)) - - #draw and place pin on the waveguide: - t = pya.Trans(pya.Trans.R0, x, pitch*n_ch) - pin = pya.Path([pya.Point(-pin_length/2,0),pya.Point(pin_length/2,0)], w_waveguide) - pin_t = pin.transformed(t) - shapes(LayerPinRecN).insert(pin_t) - text = pya.Text(f"opt{n_ch+1}",t) - shape = shapes(LayerPinRecN).insert(text) - shape.text_size = 3/dbu - - #draw fibre target circle - align_circle = circle(offset,pitch*n_ch,2/dbu) - - #place fibre target circle - shapes(LayerFbrTgtN).insert(pya.Polygon(align_circle)) - - - #BB description - t = pya.Trans(pya.Trans.R0,0,-15/dbu) - text = pya.Text(" Waveguide type: " + 'SiN' + "\n Wavelength: " + str(wavelength) + " nm",t) - shape = shapes(LayerTEXTN).insert(text) - shape.text_size = 3/dbu - - #BB description - t = pya.Trans(pya.Trans.R0, 0,-25/dbu) - text = pya.Text(" 25 micron MFD Facet-attached\n Vertical Emitter (FAVE)",t) - shape = shapes(LayerTEXTN).insert(text) - shape.text_size = 3/dbu - - #draw DP BB logo - import os - dir_path = os.path.normpath(os.path.join(os.path.dirname(os.path.realpath(__file__)), "../../gds/EBeam_Dream/")) - filename = os.path.join(dir_path, 'DP_logo.gds') - - cell_text = ly.create_cell('TEXT', 'Basic', - {'text':' Facet-attached\\n Vertical Emitter', - 'layer':self.bb, - 'lspacing':3, - 'mag':9}) - t = pya.Trans(pya.Trans.R0, -98e3, -33e3) - inst_text = cell.insert(pya.CellInstArray(cell_text.cell_index(), t)) - - ly2=pya.Layout() - ly2.read(filename) - top_cell = ly2.top_cell() - top_cell.flatten(True) - top_cell.transform(pya.Trans(-91e3,27e3)) - self.cell.copy_shapes(top_cell) - - # draw lens - width_lens = to_itype(50, dbu) - length_lens = to_itype(50, dbu) - n_ch = 0 - lens_pts = [pya.Point(0,-width_lens/2+pitch*n_ch), pya.Point(0,width_lens/2+pitch*n_ch), pya.Point(-length_lens,width_lens/2+pitch*n_ch),pya.Point(-length_lens,-width_lens/2+pitch*n_ch)] - shapes(LayerBBN).insert(pya.Polygon(lens_pts)) - lens = circle(-length_lens,pitch*n_ch,25/dbu) - shapes(LayerBBN).insert(pya.Polygon(lens)) - - # Draw Deep Trench - # Use Bezier corners for aesthetic purposes, - # and perhaps for better fabrication outcomes - width, height = 100e3, 100e3 - if self.dt_bezier_corner == 0: - polygon = pya.Box(-width,-height/2,0,height/2) - else: - from SiEPIC.utils.geometry import box_bezier_corners - polygon = box_bezier_corners(width*dbu, height*dbu, self.dt_bezier_corner).to_itype(dbu).transformed(pya.Trans(-width/2,0)) - shapes(ly.layer(self.dt)).insert(polygon) - - #draw devrec box - devrec_pts = [ - pya.Point(0,25/dbu), - pya.Point(x,1/dbu), - pya.Point(x,-1/dbu), - pya.Point(0,-25/dbu), - ] - #place devrec box - # merge - - shapes(LayerDevRecN).insert( - (pya.Region(pya.Polygon(devrec_pts)) + - pya.Region(polygon)).merge() - ) - - - # Shift cell origin, so that (0,0) is at the pin - self.cell.transform(pya.Trans(-95e3,0)) - - def display_text_impl(self): - # Provide a descriptive text for the cell - return "ebeam_dream_FAVE_SiN_1550_BB" - - - - - -class test_lib(pya.Library): - def __init__(self): - tech = "EBeam" - library = tech + "test_lib" - self.technology = tech - self.layout().register_pcell("ebeam_dream_FAVE_SiN_1550_BB", ebeam_dream_FAVE_SiN_1550_BB()) - self.register(library) - - -if __name__ == "__main__": - print("Test layout for: ebeam_dream_FAVE_SiN_1550_BB") - - from SiEPIC.utils.layout import new_layout - from SiEPIC.scripts import zoom_out - from SiEPIC._globals import Python_Env - - if Python_Env == 'Script': - # For external Python mode, when installed using pip install siepic_ebeam_pdk - import siepic_ebeam_pdk - - # load the test library, and technology - t = test_lib() - tech = t.technology - - # Create a new layout - topcell, ly = new_layout(tech, "test", GUI=True, overwrite=True) - - # instantiate the cell - library = tech + "test_lib" - - # Instantiate, with default parameters - pcell = ly.create_cell("ebeam_dream_FAVE_SiN_1550_BB", library, {}) - t = pya.Trans(pya.Trans.R0, 0, 0) - topcell.insert(pya.CellInstArray(pcell.cell_index(), t)) - - # Instantiate, with default parameters - pcell = ly.create_cell("ebeam_dream_FAVE_SiN_1550_BB", library, {'dt_bezier_corner':0}) - t = pya.Trans(pya.Trans.R0, 0, 125e3) - topcell.insert(pya.CellInstArray(pcell.cell_index(), t)) - - zoom_out(topcell) - - # Export for fabrication, removing PCells - import os - from SiEPIC.scripts import export_layout - thisfilepath = os.path.dirname(os.path.realpath(__file__)) - filename, extension = os.path.splitext(os.path.basename(__file__)) - file_out = export_layout(topcell, thisfilepath, filename, relative_path = '', format='oas', screenshot=True) - - # Display the layout in KLayout, using KLayout Package "klive", which needs to be installed in the KLayout Application - if Python_Env == 'Script': - from SiEPIC.utils import klive - klive.show(file_out, technology=tech)