예제 #1
0
 def __init__(self):
     # Important: initialize the super class
     super(Waveguide, self).__init__()
     # declare the parameters
     from SiEPIC.utils import get_technology_by_name
     TECHNOLOGY = get_technology_by_name('GSiP')
     self.param("path",
                self.TypeShape,
                "Path",
                default=DPath([DPoint(0, 0),
                               DPoint(10, 0),
                               DPoint(10, 10)], 0.5))
     self.param("radius", self.TypeDouble, "Radius", default=5)
     self.param("width", self.TypeDouble, "Width", default=0.5)
     self.param("adiab", self.TypeBoolean, "Adiabatic", default=False)
     self.param("bezier", self.TypeDouble, "Bezier Parameter", default=0.35)
     self.param("layers", self.TypeList, "Layers", default=['Waveguide'])
     self.param("widths", self.TypeList, "Widths", default=[0.5])
     self.param("offsets", self.TypeList, "Offsets", default=[0])
     self.param("CML",
                self.TypeString,
                "Compact Model Library (CML)",
                default='GSiP')
     self.param("model",
                self.TypeString,
                "CML Model name",
                default='wg_strip_integral_1550')
     self.cellName = "Waveguide"
예제 #2
0
    def __init__(self):

        # Important: initialize the super class
        super(SWG_Ring, self).__init__()
        TECHNOLOGY = get_technology_by_name('EBeam')

        # declare the parameters
        self.param("pitch", self.TypeDouble, "Period [um]", default=0.2)
        self.param("w", self.TypeDouble, "Waveguide Width [um]", default=0.5)
        self.param("r", self.TypeDouble, "Radius [um]",
                   default=5)  # minimum radius is 5 um in TE
        self.param("ff", self.TypeDouble, "Duty Cycle", default=0.5)
        self.param("angle", self.TypeDouble, "Angle", default=360)
        self.param("gap", self.TypeDouble, "Bus Gap [um]", default=0.06)
        self.param("W_ratio", self.TypeDouble, "Lin/Lout", default=1)
        self.param("doublebus",
                   self.TypeBoolean,
                   "Bus Type (Single=False, Double=True)",
                   default=False)
        self.param("layer",
                   self.TypeLayer,
                   "Layer",
                   default=TECHNOLOGY['Waveguide'])
        self.param("pinrec",
                   self.TypeLayer,
                   "PinRec Layer",
                   default=TECHNOLOGY['PinRec'])
        self.param("devrec",
                   self.TypeLayer,
                   "DevRec Layer",
                   default=TECHNOLOGY['DevRec'])
예제 #3
0
    def __init__(self):

        # Important: initialize the super class
        super(MultiBox_Ring, self).__init__()
        TECHNOLOGY = get_technology_by_name('EBeam')

        # declare the parameters
        self.param("pitch", self.TypeDouble, "Period [um]", default=0.24)
        self.param("w", self.TypeDouble, "Waveguide Width [um]", default=0.18)
        self.param("r", self.TypeDouble, "Radius [um]",
                   default=35)  # minimum radius is 5 um in TE
        self.param("ff", self.TypeDouble, "Duty Cycle", default=0.75)
        self.param("angle", self.TypeDouble, "Angle", default=360)
        self.param("gap", self.TypeDouble, "Row Gap [um]", default=0.06)
        self.param("gap2", self.TypeDouble, "Bus Gap [um]", default=0.06)
        self.param("row", self.TypeDouble, "Number of Rows", default=5)
        self.param("busL", self.TypeDouble, "Bus Length [um]", default=10)
        self.param("taperL", self.TypeDouble, "Taper Length [um]", default=25)
        #self.param("doublebus", self.TypeBoolean, "Bus Type (Single=False, Double=True)", default = False)
        self.param("layer",
                   self.TypeLayer,
                   "Layer",
                   default=TECHNOLOGY['Waveguide'])
        self.param("pinrec",
                   self.TypeLayer,
                   "PinRec Layer",
                   default=TECHNOLOGY['PinRec'])
        self.param("devrec",
                   self.TypeLayer,
                   "DevRec Layer",
                   default=TECHNOLOGY['DevRec'])
예제 #4
0
    def __init__(self):

        # Important: initialize the super class
        super(DoubleBus_Ring, self).__init__()
        TECHNOLOGY = get_technology_by_name('EBeam')

        # declare the parameters
        self.param("silayer",
                   self.TypeLayer,
                   "Si Layer",
                   default=TECHNOLOGY['Waveguide'])
        self.param("s", self.TypeShape, "", default=DPoint(0, 0))
        self.param("r", self.TypeDouble, "Radius", default=10)
        self.param("w", self.TypeDouble, "Waveguide Width", default=0.5)
        self.param("g", self.TypeDouble, "Gap", default=0.2)
        self.param("textpolygon",
                   self.TypeInt,
                   "Draw text polygon label? 0/1",
                   default=1)
        self.param("textl",
                   self.TypeLayer,
                   "Text Layer",
                   default=LayerInfo(10, 0))
        self.param("pinrec",
                   self.TypeLayer,
                   "PinRec Layer",
                   default=TECHNOLOGY['PinRec'])
        self.param("devrec",
                   self.TypeLayer,
                   "DevRec Layer",
                   default=TECHNOLOGY['DevRec'])
예제 #5
0
    def __init__(self):

        # Important: initialize the super class
        super(Tapered_Ring, self).__init__()
        TECHNOLOGY = get_technology_by_name('EBeam')

        # declare the parameters
        self.param("w_top", self.TypeDouble, "Top width", default=.5)
        self.param("w_bot",
                   self.TypeDouble,
                   "Bottom width (>Top Width)",
                   default=2)
        self.param("radius", self.TypeDouble, "Radius", default=10)
        self.param("LayerSi",
                   self.TypeLayer,
                   "Si Layer",
                   default=TECHNOLOGY['Waveguide'])
        self.param("pinrec",
                   self.TypeLayer,
                   "PinRec Layer",
                   default=TECHNOLOGY['PinRec'])
        self.param("devrec",
                   self.TypeLayer,
                   "DevRec Layer",
                   default=TECHNOLOGY['DevRec'])
예제 #6
0
    def __init__(self):

        # Important: initialize the super class
        super(cavity_hole, self).__init__()
        TECHNOLOGY = get_technology_by_name('EBeam')

        # declare the parameters
        self.param("x", self.TypeDouble, "x coordinate", default=0)
        self.param("y", self.TypeDouble, "y coordinate", default=0)
        self.param("radius", self.TypeDouble, "hole radius", default=10)
        self.param("gap",
                   self.TypeDouble,
                   "half of the gap between surrounding holes (microns)",
                   default=2)
        self.param("LayerSi",
                   self.TypeLayer,
                   "Si Layer",
                   default=TECHNOLOGY['Waveguide'])
        self.param("pinrec",
                   self.TypeLayer,
                   "PinRec Layer",
                   default=TECHNOLOGY['PinRec'])
        self.param("devrec",
                   self.TypeLayer,
                   "DevRec Layer",
                   default=TECHNOLOGY['DevRec'])
예제 #7
0
    def __init__(self):

        # Important: initialize the super class
        super(ebeam_dc, self).__init__()
        TECHNOLOGY = get_technology_by_name('EBeam')

        # declare the parameters
        self.param("Lc", self.TypeDouble, "Coupler Length", default=10.0)
        self.param("r", self.TypeDouble, "Radius", default=10)
        self.param("w", self.TypeDouble, "Waveguide Width", default=0.5)
        self.param("g", self.TypeDouble, "Gap", default=0.2)
        self.param("silayer",
                   self.TypeLayer,
                   "Si Layer",
                   default=[TECHNOLOGY['Waveguide']])
        self.param("pinrec",
                   self.TypeLayer,
                   "PinRec Layer",
                   default=TECHNOLOGY['PinRec'])
        self.param("devrec",
                   self.TypeLayer,
                   "DevRec Layer",
                   default=TECHNOLOGY['DevRec'])
        self.param("textl",
                   self.TypeLayer,
                   "Text Layer",
                   default=LayerInfo(10, 0))
예제 #8
0
    def __init__(self):

        # Important: initialize the super class
        super(MMI_2x2, self).__init__()
        TECHNOLOGY = get_technology_by_name('EBeam')

        # declare the parameters
        self.param("silayer",
                   self.TypeLayer,
                   "Si Layer",
                   default=TECHNOLOGY['Waveguide'])
        self.param("w", self.TypeDouble, "Waveguide Width", default=0.5)
        self.param("w_mmi", self.TypeDouble, "Waveguide Width", default=6.0)
        self.param("w_a",
                   self.TypeDouble,
                   "Access waveguide Width",
                   default=1.5)
        self.param("L_mmi", self.TypeDouble, "MMI Length", default=130.5)
        self.param("L_a",
                   self.TypeDouble,
                   "Access waveguide Length",
                   default=10.0)
        self.param("pinrec",
                   self.TypeLayer,
                   "PinRec Layer",
                   default=TECHNOLOGY['PinRec'])
        self.param("devrec",
                   self.TypeLayer,
                   "DevRec Layer",
                   default=TECHNOLOGY['DevRec'])
        self.param("textl",
                   self.TypeLayer,
                   "Text Layer",
                   default=LayerInfo(10, 0))
예제 #9
0
  def __init__(self):

    # Important: initialize the super class
    super(phc_H0c, self).__init__()

    self.param("a", self.TypeDouble, "lattice constant (microns)", default = 0.744)     
    self.param("n", self.TypeInt, "Number of holes in x and y direction", default = 30)     
    self.param("r", self.TypeDouble, "hole radius (microns)", default = 0.179)
    self.param("wg_dis", self.TypeInt, "Waveguide distance (number of holes)", default = 3)
    self.param("n_bus", self.TypeInt, "Bus number, 1 or 2 ", default = 2)
    self.param("n_vertices", self.TypeInt, "Vertices of a hole", default = 32)                                
    self.param("S1x", self.TypeDouble, "S1x shift", default = 0.28)     
    self.param("S2x", self.TypeDouble, "S2x shift", default = 0.193)     
    self.param("S3x", self.TypeDouble, "S3x shift", default = 0.194)     
    self.param("S4x", self.TypeDouble, "S4x shift", default = 0.162)
    self.param("S5x", self.TypeDouble, "S5x shift", default = 0.113)
    self.param("S1y", self.TypeDouble, "S1y shift", default = -0.016)
    self.param("S2y", self.TypeDouble, "S2y shift", default = 0.134)
    self.param("etch_condition", self.TypeInt, "etch = 1 if etch box, etch = 2 if no etch box", default = 1)  
    
    TECHNOLOGY = get_technology_by_name('EBeam')
    self.param("layer", self.TypeLayer, "Layer", default = TECHNOLOGY['Waveguide'])
    self.param("pinrec", self.TypeLayer, "PinRec Layer", default = TECHNOLOGY['PinRec'])
    self.param("devrec", self.TypeLayer, "DevRec Layer", default = TECHNOLOGY['DevRec'])
    self.param("textl", self.TypeLayer, "Text Layer", default = TECHNOLOGY['Text'])
    self.param("etch", self.TypeLayer, "oxide etch layer", default = pya.LayerInfo(12, 0))
예제 #10
0
  def __init__(self):
    super(Ring_Modulator_DB, self).__init__()
    # declare the parameters
    from SiEPIC.utils import get_technology_by_name
    TECHNOLOGY = get_technology_by_name('GSiP')

    self.param("silayer", self.TypeLayer, "Si Layer", default = TECHNOLOGY['Si'])
    self.param("s", self.TypeShape, "", default = pya.DPoint(0, 0))
    self.param("r", self.TypeDouble, "Radius", default = 10)
    self.param("w", self.TypeDouble, "Waveguide Width", default = 0.5)
    self.param("g", self.TypeDouble, "Gap", default = 0.2)
    self.param("gmon", self.TypeDouble, "Gap Monitor", default = 0.5)
    self.param("component_ID", self.TypeInt, "Component_ID (>0)", default = 0)
    self.param("si3layer", self.TypeLayer, "SiEtch2(Rib) Layer", default = TECHNOLOGY['SiEtch2'])
    self.param("nlayer", self.TypeLayer, "N Layer", default = TECHNOLOGY['Si N'])
    self.param("player", self.TypeLayer, "P Layer", default = TECHNOLOGY['Si P'])
    self.param("nplayer", self.TypeLayer, "N+ Layer", default = TECHNOLOGY['Si N+'])
    self.param("pplayer", self.TypeLayer, "P+ Layer", default = TECHNOLOGY['Si P+'])
    self.param("npplayer", self.TypeLayer, "N++ Layer", default = TECHNOLOGY['Si N++'])
    self.param("ppplayer", self.TypeLayer, "P++ Layer", default = TECHNOLOGY['Si P++'])
    self.param("vclayer", self.TypeLayer, "VC Layer", default = TECHNOLOGY['VC'])
    self.param("m1layer", self.TypeLayer, "M1 Layer", default = TECHNOLOGY['M1'])
    self.param("vllayer", self.TypeLayer, "VL Layer", default = TECHNOLOGY['VL'])
    self.param("mllayer", self.TypeLayer, "ML Layer", default = TECHNOLOGY['ML'])
    self.param("mhlayer", self.TypeLayer, "MH Layer", default = TECHNOLOGY['M Heater'])
    self.param("textpolygon", self.TypeInt, "Draw text polygon label? 0/1", default = 1)
    self.param("textl", self.TypeLayer, "Text Layer", default = TECHNOLOGY['Text'])
    self.param("pinrec", self.TypeLayer, "PinRec Layer", default = TECHNOLOGY['PinRec'])
    self.param("devrec", self.TypeLayer, "DevRec Layer", default = TECHNOLOGY['DevRec'])
예제 #11
0
    def __init__(self):

        # Important: initialize the super class
        super(Waveguide_SBend, self).__init__()
        TECHNOLOGY = get_technology_by_name('EBeam')

        # declare the parameters
        self.param("length", self.TypeDouble, "Waveguide length", default=10.0)
        self.param("height",
                   self.TypeDouble,
                   "Waveguide offset height",
                   default=2)
        self.param("wg_width",
                   self.TypeDouble,
                   "Waveguide width (microns)",
                   default=0.5)
        self.param("radius",
                   self.TypeDouble,
                   "Waveguide bend radius (microns)",
                   default=5)
        self.param("layer", self.TypeLayer, "Layer", default=TECHNOLOGY['Si'])
        self.param("pinrec",
                   self.TypeLayer,
                   "PinRec Layer",
                   default=TECHNOLOGY['PinRec'])
        self.param("devrec",
                   self.TypeLayer,
                   "DevRec Layer",
                   default=TECHNOLOGY['DevRec'])
예제 #12
0
    def __init__(self):

        # Important: initialize the super class
        super(Waveguide_SWG_Assist, self).__init__()
        TECHNOLOGY = get_technology_by_name('EBeam')

        # declare the parameters
        self.param("length", self.TypeDouble, "Waveguide length", default=10.0)
        self.param("target_period",
                   self.TypeDouble,
                   "Target period (microns)",
                   default=0.200)
        self.param("swg_wg_width",
                   self.TypeDouble,
                   "SWG Waveguide width",
                   default=0.5)
        self.param("strip_wg_width",
                   self.TypeDouble,
                   "Strip Waveguide width",
                   default=0.06)
        self.param("duty", self.TypeDouble, "Duty Cycle (0 to 1)", default=0.5)
        self.param("layer",
                   self.TypeLayer,
                   "Layer",
                   default=TECHNOLOGY['Waveguide'])
        self.param("pinrec",
                   self.TypeLayer,
                   "PinRec Layer",
                   default=TECHNOLOGY['PinRec'])
        self.param("devrec",
                   self.TypeLayer,
                   "DevRec Layer",
                   default=TECHNOLOGY['DevRec'])
예제 #13
0
    def __init__(self):

        # Important: initialize the super class
        super(DirectionalCoupler_SeriesRings, self).__init__()
        TECHNOLOGY = get_technology_by_name('EBeam')

        # declare the parameters
        self.param("silayer",
                   self.TypeLayer,
                   "Si Layer",
                   default=TECHNOLOGY['Si'])
        self.param("r2", self.TypeDouble, "Radius of Upper Ring", default=3)
        self.param("r1", self.TypeDouble, "Radius of Lower Ring", default=3)
        self.param("w", self.TypeDouble, "Waveguide Width", default=0.5)
        self.param("g", self.TypeDouble, "Gap", default=0.2)
        self.param("Lc", self.TypeDouble, "Coupler Length", default=0.0)
        self.param("pinrec",
                   self.TypeLayer,
                   "PinRec Layer",
                   default=TECHNOLOGY['PinRec'])
        self.param("devrec",
                   self.TypeLayer,
                   "DevRec Layer",
                   default=TECHNOLOGY['DevRec'])
        self.param("textl",
                   self.TypeLayer,
                   "Text Layer",
                   default=LayerInfo(10, 0))
예제 #14
0
    def __init__(self):

        # Important: initialize the super class
        super(Bezier_Bend, self).__init__()
        TECHNOLOGY = get_technology_by_name('EBeam')

        # declare the parameters
        self.param("bezier_num", self.TypeDouble, "Bezier factor", default=25)
        self.param("eff_r",
                   self.TypeDouble,
                   "Effective bend radius (microns)",
                   default=5)
        self.param("wg_width",
                   self.TypeDouble,
                   "Waveguide width (microns)",
                   default=0.500)
        self.param("layer",
                   self.TypeLayer,
                   "Layer",
                   default=TECHNOLOGY['Waveguide'])
        self.param("pinrec",
                   self.TypeLayer,
                   "PinRec Layer",
                   default=TECHNOLOGY['PinRec'])
        self.param("devrec",
                   self.TypeLayer,
                   "DevRec Layer",
                   default=TECHNOLOGY['DevRec'])
예제 #15
0
    def __init__(self):

        # Important: initialize the super class
        super(Waveguide_Bend, self).__init__()
        TECHNOLOGY = get_technology_by_name('EBeam')

        # declare the parameters
        self.param("silayer",
                   self.TypeLayer,
                   "Si Layer",
                   default=TECHNOLOGY['Si'])
        self.param("radius", self.TypeDouble, "Radius", default=10)
        self.param("wg_width", self.TypeDouble, "Waveguide Width", default=0.5)
        self.param("pinrec",
                   self.TypeLayer,
                   "PinRec Layer",
                   default=TECHNOLOGY['PinRec'])
        self.param("devrec",
                   self.TypeLayer,
                   "DevRec Layer",
                   default=TECHNOLOGY['DevRec'])
        # hidden parameters, can be used to query this component:
        self.param("p1",
                   self.TypeShape,
                   "DPoint location of pin1",
                   default=Point(-10000, 0),
                   hidden=True,
                   readonly=True)
        self.param("p2",
                   self.TypeShape,
                   "DPoint location of pin2",
                   default=Point(0, 10000),
                   hidden=True,
                   readonly=True)
예제 #16
0
    def __init__(self):

        # Important: initialize the super class
        super(PhC_Hole_cell_half, self).__init__()

        self.param("a",
                   self.TypeDouble,
                   "lattice constant (microns)",
                   default=0.744)
        self.param("r",
                   self.TypeDouble,
                   "hole radius (microns)",
                   default=0.179)
        TECHNOLOGY = get_technology_by_name('EBeam')
        self.param("layer",
                   self.TypeLayer,
                   "Layer",
                   default=TECHNOLOGY['Waveguide'])
        self.param("pinrec",
                   self.TypeLayer,
                   "PinRec Layer",
                   default=TECHNOLOGY['PinRec'])
        self.param("devrec",
                   self.TypeLayer,
                   "DevRec Layer",
                   default=TECHNOLOGY['DevRec'])
        self.param("textl",
                   self.TypeLayer,
                   "Text Layer",
                   default=TECHNOLOGY['Text'])
예제 #17
0
    def __init__(self):

        # Important: initialize the super class
        super(Grating_Coupler_FSWGC, self).__init__()
        TECHNOLOGY = get_technology_by_name('EBeam')

        # declare the parameters
        self.param("wavelength",
                   self.TypeDouble,
                   "Design Wavelength (micron)",
                   default=1.55)
        self.param("n_t", self.TypeDouble, "Cladding Index", default=1.0)
        self.param("n_e",
                   self.TypeDouble,
                   "Grating Effective Index",
                   default=2.75618)
        self.param("angle_e",
                   self.TypeDouble,
                   "Taper Angle (deg)",
                   default=35.0)
        self.param("grating_length",
                   self.TypeDouble,
                   "Grating Length (micron)",
                   default=15.0)
        self.param("taper_length",
                   self.TypeDouble,
                   "Taper Length (micron)",
                   default=19.0)
        self.param("dc", self.TypeDouble, "Duty Cycle", default=0.488193)
        self.param("period",
                   self.TypeDouble,
                   "Grating Period",
                   default=1.18939)
        self.param("ff", self.TypeDouble, "Fill Factor", default=0.244319)
        self.param("t",
                   self.TypeDouble,
                   "Waveguide Width (micron)",
                   default=0.5)
        self.param("theta_c",
                   self.TypeDouble,
                   "Insertion Angle (deg)",
                   default=-31.0)

        # Layer parameters
        self.param("layer",
                   self.TypeLayer,
                   "Layer",
                   default=TECHNOLOGY['Waveguide'])
        self.param("pinrec",
                   self.TypeLayer,
                   "PinRec Layer",
                   default=TECHNOLOGY['PinRec'])
        self.param("devrec",
                   self.TypeLayer,
                   "DevRec Layer",
                   default=TECHNOLOGY['DevRec'])
예제 #18
0
    def __init__(self):

        # Important: initialize the super class
        super(Universal_GC, self).__init__()
        TECHNOLOGY = get_technology_by_name('EBeam')

        # declare the parameters
        self.param("wavelength",
                   self.TypeDouble,
                   "Design Wavelength (micron)",
                   default=1.55)
        self.param("Si_thickness",
                   self.TypeDouble,
                   "Silicon Thickness (micron)",
                   default=0.22)
        self.param("etch_depth",
                   self.TypeDouble,
                   "Etch Depth (micron)",
                   default=0.13)
        self.param("pol", self.TypeString, "Polarization", default="TE")
        self.param("n_t", self.TypeDouble, "Cladding Index", default=1.444)
        self.param("angle_e",
                   self.TypeDouble,
                   "Taper Angle (deg)",
                   default=35.0)
        self.param("grating_length",
                   self.TypeDouble,
                   "Grating Length (micron)",
                   default=15.0)
        self.param("taper_length",
                   self.TypeDouble,
                   "Taper Length (micron)",
                   default=19.0)
        self.param("dc", self.TypeDouble, "Duty Cylce", default=0.5)
        self.param("t",
                   self.TypeDouble,
                   "Waveguide Width (micron)",
                   default=0.5)
        self.param("theta_c",
                   self.TypeDouble,
                   "Insertion Angle (deg)",
                   default=-31.0)

        # Layer parameters
        self.param("layer",
                   self.TypeLayer,
                   "Layer",
                   default=TECHNOLOGY['Waveguide'])
        self.param("pinrec",
                   self.TypeLayer,
                   "PinRec Layer",
                   default=TECHNOLOGY['PinRec'])
        self.param("devrec",
                   self.TypeLayer,
                   "DevRec Layer",
                   default=TECHNOLOGY['DevRec'])
예제 #19
0
    def __init__(self):
        # Important: initialize the super class
        super(Ring, self).__init__()

        # declare the parameters
        from SiEPIC.utils import get_technology_by_name
        TECHNOLOGY = get_technology_by_name('GSiP')
        self.param("width", self.TypeDouble, "Width", default=0.5)
        self.param("radius", self.TypeDouble, "Radius", default=5)
        self.param("layer", self.TypeLayer, "Layer", default=TECHNOLOGY['Si'])
예제 #20
0
    def __init__(self):

        # Important: initialize the super class
        super(Waveguide_SWG_to_Strip, self).__init__()
        TECHNOLOGY = get_technology_by_name('EBeam')

        # declare the parameters
        self.param("wavelength", self.TypeDouble, "Wavelength", default=1310)
        self.param("fishbone", self.TypeBoolean, "Fishbone", default=False)
        self.param("length", self.TypeDouble, "Waveguide length", default=10.0)
        self.param("taper_fraction",
                   self.TypeDouble,
                   "Strip taper length fraction (0 to 1)",
                   default=1)
        self.param("period_strip",
                   self.TypeDouble,
                   "SWG Period at strip end (microns)",
                   default=0.200)
        self.param("period_swg",
                   self.TypeDouble,
                   "SWG Period at SWG end (microns)",
                   default=0.200)
        self.param("wg_width_strip",
                   self.TypeDouble,
                   "Strip Waveguide width at the taper end (microns)",
                   default=0.5)
        #    self.param("wg_width_swg_taperend", self.TypeDouble, "Waveguide width at SWG taper end (microns)", default = 0.4)
        self.param("wg_width_swg",
                   self.TypeDouble,
                   "SWG Waveguide at end (microns)",
                   default=0.5)
        self.param("wg_width_taper",
                   self.TypeDouble,
                   "Nanotaper width at taper end (microns)",
                   default=0.06)
        self.param("duty_strip",
                   self.TypeDouble,
                   "SWG duty cycle at strip end (0 to 1)",
                   default=0.500)
        self.param("duty_swg",
                   self.TypeDouble,
                   "SWG duty cycle at SWG end (0 to 1)",
                   default=0.700)
        self.param("layer",
                   self.TypeLayer,
                   "Layer",
                   default=TECHNOLOGY['Waveguide'])
        self.param("pinrec",
                   self.TypeLayer,
                   "PinRec Layer",
                   default=TECHNOLOGY['PinRec'])
        self.param("devrec",
                   self.TypeLayer,
                   "DevRec Layer",
                   default=TECHNOLOGY['DevRec'])
예제 #21
0
 def __init__(self):
   # Important: initialize the super class
   super(Wireguide, self).__init__()
   # declare the parameters
   TECHNOLOGY = get_technology_by_name('EBeam')
   self.param("path", self.TypeShape, "Path", default = DPath([DPoint(0,0), DPoint(10,0), DPoint(10,10)], 0.5))
   self.radius = 0
   self.param("width", self.TypeDouble, "Width", default = 0.5)
   self.adiab = False
   self.param("layers", self.TypeList, "Layers", default = ['Waveguide'])
   self.param("widths", self.TypeList, "Widths", default =  [0.5])
   self.param("offsets", self.TypeList, "Offsets", default = [0])
예제 #22
0
    def __init__(self):

        # Important: initialize the super class
        super(Contra_DC_SWG_Chirped, self).__init__()
        TECHNOLOGY = get_technology_by_name('EBeam')

        # declare the parameters
        self.param("number_of_periods",
                   self.TypeInt,
                   "Number of grating periods",
                   default=300)
        self.param("grating_period_start",
                   self.TypeDouble,
                   "Grating period start (microns)",
                   default=0.24)
        self.param("grating_period_end",
                   self.TypeDouble,
                   "Grating period stop (microns)",
                   default=0.28)
        self.param("gap",
                   self.TypeDouble,
                   "Minimum gap (microns)",
                   default=0.15)
        self.param("corrugation_width1",
                   self.TypeDouble,
                   "Waveguide 1 Corrugration width (microns)",
                   default=0.03)
        self.param("corrugation_width2",
                   self.TypeDouble,
                   "Waveguide 2 Corrugration width (microns)",
                   default=0.04)
        self.param("wg1_width",
                   self.TypeDouble,
                   "Waveguide 1 width",
                   default=0.45)
        self.param("wg2_width",
                   self.TypeDouble,
                   "Waveguide 2 width",
                   default=0.55)
        self.param("duty", self.TypeDouble, "Duty cycle (0-1)", default=0.5)
        self.param("a", self.TypeDouble, "Gaussian Index", default=2.7)
        self.param("layer",
                   self.TypeLayer,
                   "Layer",
                   default=TECHNOLOGY['Waveguide'])
        self.param("pinrec",
                   self.TypeLayer,
                   "PinRec Layer",
                   default=TECHNOLOGY['PinRec'])
        self.param("devrec",
                   self.TypeLayer,
                   "DevRec Layer",
                   default=TECHNOLOGY['DevRec'])
예제 #23
0
    def __init__(self):

        # Important: initialize the super class
        super(PhC_L3c, self).__init__()

        self.param("a",
                   self.TypeDouble,
                   "lattice constant (microns)",
                   default=0.720)
        self.param("n",
                   self.TypeInt,
                   "Number of holes in x and y direction",
                   default=30)
        self.param("r",
                   self.TypeDouble,
                   "hole radius (microns)",
                   default=0.181)
        self.param("wg_dis",
                   self.TypeInt,
                   "Waveguide distance (number of holes)",
                   default=3)
        self.param("n_bus", self.TypeInt, "Bus number, 1 or 2 ", default=2)
        self.param("n_vertices",
                   self.TypeInt,
                   "Vertices of a hole",
                   default=32)
        self.param("S1x", self.TypeDouble, "S1x shift", default=0.337)
        self.param("S2x", self.TypeDouble, "S2x shift", default=0.27)
        self.param("S3x", self.TypeDouble, "S3x shift", default=0.088)
        self.param("S4x", self.TypeDouble, "S4x shift", default=0.323)
        self.param("S5x", self.TypeDouble, "S5x shift", default=0.173)
        TECHNOLOGY = get_technology_by_name('EBeam')
        self.param("layer",
                   self.TypeLayer,
                   "Layer",
                   default=TECHNOLOGY['Waveguide'])
        self.param("pinrec",
                   self.TypeLayer,
                   "PinRec Layer",
                   default=TECHNOLOGY['PinRec'])
        self.param("devrec",
                   self.TypeLayer,
                   "DevRec Layer",
                   default=TECHNOLOGY['DevRec'])
        self.param("textl",
                   self.TypeLayer,
                   "Text Layer",
                   default=TECHNOLOGY['Text'])
        self.param("etch",
                   self.TypeLayer,
                   "oxide etch layer",
                   default=pya.LayerInfo(12, 0))
예제 #24
0
    def __init__(self):

        # Important: initialize the super class
        super(ebeam_taper_strip_rib, self).__init__()
        TECHNOLOGY = get_technology_by_name('EBeam')

        # declare the parameters
        self.param("si220layer",
                   self.TypeLayer,
                   "Si Layer",
                   default=TECHNOLOGY['Si'])
        self.param("si90layer",
                   self.TypeLayer,
                   "Si slab Layer",
                   default=TECHNOLOGY['Si - 90 nm rib'])
        self.param("rib_wg_width1",
                   self.TypeDouble,
                   "Rib Waveguide Width 1",
                   default=0.35)
        self.param("rib_wg_width2",
                   self.TypeDouble,
                   "Rib Waveguide Width 2",
                   default=3)
        self.param("strip_wg_width",
                   self.TypeDouble,
                   "Strip Waveguide Width",
                   default=0.35)
        self.param("wg_length",
                   self.TypeDouble,
                   "Waveguide Length",
                   default=10)
        self.param("pinrec",
                   self.TypeLayer,
                   "PinRec Layer",
                   default=TECHNOLOGY['PinRec'])
        self.param("devrec",
                   self.TypeLayer,
                   "DevRec Layer",
                   default=TECHNOLOGY['DevRec'])
        # hidden parameters, can be used to query this component:
        self.param("p1",
                   self.TypeShape,
                   "DPoint location of pin1",
                   default=Point(-10000, 0),
                   hidden=True,
                   readonly=True)
        self.param("p2",
                   self.TypeShape,
                   "DPoint location of pin2",
                   default=Point(0, 10000),
                   hidden=True,
                   readonly=True)
예제 #25
0
    def __init__(self):

        # Important: initialize the super class
        super(phc_gc_hex, self).__init__()

        self.param("a",
                   self.TypeDouble,
                   "lattice constant (microns)",
                   default=0.243)
        self.param("x",
                   self.TypeInt,
                   "Number of holes in x direction",
                   default=78)
        self.param("y",
                   self.TypeInt,
                   "Number of holes in y direction",
                   default=50)
        self.param("r",
                   self.TypeDouble,
                   "hole radius (microns)",
                   default=0.0735)
        self.param("vertices",
                   self.TypeInt,
                   "Number of vertices in circle",
                   default=32)
        TECHNOLOGY = get_technology_by_name('EBeam')
        self.param("positive", self.TypeInt, "Positive", default=False)
        self.param("apodized", self.TypeInt, "apodized", default=False)
        self.param("feature_size",
                   self.TypeDouble,
                   "minimum feature size (microns)",
                   default=0.06)
        self.param("layer",
                   self.TypeLayer,
                   "Layer",
                   default=TECHNOLOGY['31_Si_p6nm'])
        self.param("pinrec",
                   self.TypeLayer,
                   "PinRec Layer",
                   default=TECHNOLOGY['PinRec'])
        self.param("devrec",
                   self.TypeLayer,
                   "DevRec Layer",
                   default=TECHNOLOGY['DevRec'])
        self.param("textl",
                   self.TypeLayer,
                   "Text Layer",
                   default=TECHNOLOGY['Text'])
        self.param("invert",
                   self.TypeLayer,
                   "Layer to invert",
                   default=TECHNOLOGY['Waveguide'])
예제 #26
0
    def __init__(self):

        # Important: initialize the super class
        super(PhC_W1wg, self).__init__()

        self.param("a",
                   self.TypeDouble,
                   "lattice constant (microns)",
                   default=0.744)
        self.param("n",
                   self.TypeInt,
                   "Number of holes in x and y direction",
                   default=30)
        self.param("r",
                   self.TypeDouble,
                   "hole radius (microns)",
                   default=0.179)
        self.param("wg_dis",
                   self.TypeInt,
                   "Waveguide distance (number of holes)",
                   default=2)
        self.param("n_vertices",
                   self.TypeInt,
                   "Vertices of a hole",
                   default=32)
        self.param("etch_condition",
                   self.TypeInt,
                   "Etch = 1, No Etch = 2",
                   default=1)

        TECHNOLOGY = get_technology_by_name('EBeam')
        self.param("layer",
                   self.TypeLayer,
                   "Layer",
                   default=TECHNOLOGY['Waveguide'])
        self.param("pinrec",
                   self.TypeLayer,
                   "PinRec Layer",
                   default=TECHNOLOGY['PinRec'])
        self.param("devrec",
                   self.TypeLayer,
                   "DevRec Layer",
                   default=TECHNOLOGY['DevRec'])
        self.param("textl",
                   self.TypeLayer,
                   "Text Layer",
                   default=TECHNOLOGY['Text'])
        self.param("etch",
                   self.TypeLayer,
                   "oxide etch layer",
                   default=pya.LayerInfo(12, 0))
예제 #27
0
    def __init__(self):

        # Important: initialize the super class
        super(PhC_H0c_new, self).__init__()

        self.param("a",
                   self.TypeDouble,
                   "lattice constant (microns)",
                   default=0.744)
        self.param("n",
                   self.TypeInt,
                   "Number of holes in x and y direction",
                   default=30)
        self.param("r",
                   self.TypeDouble,
                   "hole radius (microns)",
                   default=0.179)
        self.param("wg_dis",
                   self.TypeInt,
                   "Waveguide distance (number of holes)",
                   default=3)
        self.param("S1x", self.TypeDouble, "S1x shift", default=0.28)
        self.param("S2x", self.TypeDouble, "S2x shift", default=0.193)
        self.param("S3x", self.TypeDouble, "S3x shift", default=0.194)
        self.param("S4x", self.TypeDouble, "S4x shift", default=0.162)
        self.param("S5x", self.TypeDouble, "S5x shift", default=0.113)
        self.param("S1y", self.TypeDouble, "S1y shift", default=-0.016)
        self.param("S2y", self.TypeDouble, "S2y shift", default=0.134)
        self.param("bus_number",
                   self.TypeInt,
                   "2 for double, 1 for single, max 2",
                   default=2)
        TECHNOLOGY = get_technology_by_name('EBeam')
        self.param("layer",
                   self.TypeLayer,
                   "Layer",
                   default=TECHNOLOGY['Waveguide'])
        self.param("pinrec",
                   self.TypeLayer,
                   "PinRec Layer",
                   default=TECHNOLOGY['PinRec'])
        self.param("devrec",
                   self.TypeLayer,
                   "DevRec Layer",
                   default=TECHNOLOGY['DevRec'])
        self.param("textl",
                   self.TypeLayer,
                   "Text Layer",
                   default=TECHNOLOGY['Text'])
예제 #28
0
  def __init__(self):

    # Important: initialize the super class
    super(Bragg_Straight_from_file, self).__init__()
    TECHNOLOGY = get_technology_by_name('EBeam')

    # declare the parameters
    self.param("forder", self.TypeString, "Forder", default = "C:\\Users\Rui\Dropbox\\RESEARCH\\CAD_Data\\Feb\\")
    self.param("name", self.TypeString, "Name", default = "Square_BP_B3.5_N2536_DW6")  
    self.param("filetype", self.TypeString, "File type (txt)", default = 'txt')  
    self.param("layer", self.TypeLayer, "Layer", default = TECHNOLOGY['Waveguide'])
    self.param("port_w", self.TypeDouble, "Port Waveguide width", default = 0.5)
    self.param("pinrec", self.TypeLayer, "PinRec Layer", default = TECHNOLOGY['PinRec'])
    self.param("devrec", self.TypeLayer, "DevRec Layer", default = TECHNOLOGY['DevRec'])
    self.param("textl", self.TypeLayer, "Text Layer", default = TECHNOLOGY['Text'])
예제 #29
0
  def __init__(self):
    # Important: initialize the super class
    super(ebeam_dc_halfring_straight, self).__init__()
    TECHNOLOGY = get_technology_by_name('EBeam')

    # declare the parameters
    self.param("silayer", self.TypeLayer, "Si Layer", default = TECHNOLOGY['Waveguide'])
    self.param("r", self.TypeDouble, "Radius", default = 10)
    self.param("w", self.TypeDouble, "Waveguide Width", default = 0.5)
    self.param("g", self.TypeDouble, "Gap", default = 0.2)
    self.param("Lc", self.TypeDouble, "Coupler Length", default = 0.0)
    self.param("orthogonal_identifier", self.TypeInt, "Orthogonal identifier (1=TE, 2=TM)", default = 1)     
    self.param("pinrec", self.TypeLayer, "PinRec Layer", default = TECHNOLOGY['PinRec'])
    self.param("devrec", self.TypeLayer, "DevRec Layer", default = TECHNOLOGY['DevRec'])
    self.param("textl", self.TypeLayer, "Text Layer", default = TECHNOLOGY['Text'])
예제 #30
0
    def __init__(self):

        # Important: initialize the super class
        super(Contra_DC_SWG_segmented, self).__init__()
        TECHNOLOGY = get_technology_by_name('EBeam')

        # declare the parameters
        self.param("number_of_periods",
                   self.TypeInt,
                   "Number of grating periods",
                   default=300)
        self.param("grating_period",
                   self.TypeDouble,
                   "Sub-wavelength period (microns)",
                   default=0.24)
        self.param("cdc_period",
                   self.TypeDouble,
                   "Pertrubation period (microns)",
                   default=0.464)
        self.param("gap",
                   self.TypeDouble,
                   "Minimum gap (microns)",
                   default=0.1)
        self.param("corrugation_width",
                   self.TypeDouble,
                   "Waveguide Corrugration width (microns)",
                   default=0.12)
        self.param("wg1_width",
                   self.TypeDouble,
                   "Waveguide 1 width",
                   default=0.5)
        self.param("wg2_width",
                   self.TypeDouble,
                   "Waveguide 2 width",
                   default=0.38)
        self.param("duty", self.TypeDouble, "Duty cycle (0 to 1)", default=0.5)
        self.param("layer",
                   self.TypeLayer,
                   "Layer",
                   default=TECHNOLOGY['Waveguide'])
        self.param("pinrec",
                   self.TypeLayer,
                   "PinRec Layer",
                   default=TECHNOLOGY['PinRec'])
        self.param("devrec",
                   self.TypeLayer,
                   "DevRec Layer",
                   default=TECHNOLOGY['DevRec'])