コード例 #1
0
ファイル: MMI22_V2.py プロジェクト: xiaobo3332/textdongbo
 def _default_wg_t1(self):
     wg_t1 = WireWaveguideTemplate(
         name="dongbo{}".format(str(np.random.randint(0, 10000))))
     wg_t1.Layout(core_width=self.widtha,
                  cladding_width=self.widtha + 16.0,
                  core_process=i3.TECH.PROCESS.WG)
     return wg_t1
コード例 #2
0
 def _default_wg_t1(self):
     wg_t1 = WireWaveguideTemplate(
         name="port_template{}".format(str(self.start_id + 1)))
     wg_t1.Layout(core_width=self.width,
                  cladding_width=self.width + 16.0,
                  core_process=i3.TECH.PROCESS.WG)
     return wg_t1
コード例 #3
0
 def _default_wg_t(self):
     tt_n = WireWaveguideTemplate()
     tt_n.Layout(
         core_width=3.3,
         cladding_width=3.3 + 2 * 8,
     )
     return tt_n
コード例 #4
0
 def _default_wg_t1(self):
     wg_t1 = WireWaveguideTemplate(name="port20")
     wg_t1.Layout(
         core_width=20,
         cladding_width=20 + 2 * 12.0,
     )
     return wg_t1
コード例 #5
0
 def _default_wg_t_MM(self):
     tt_w = WireWaveguideTemplate()
     tt_w.Layout(
         core_width=self.width,
         cladding_width=self.width + 2 * 8,
     )
     return tt_w
コード例 #6
0
ファイル: MMI22_v1.py プロジェクト: xiaobo3332/textdongbo
 def _default_wg_dc(self):
     wg_t1 = WireWaveguideTemplate(name="dc")
     wg_t1.Layout(
         core_width=2.8,
         cladding_width=2.8 + 2 * 12.0,
     )
     return wg_t1
コード例 #7
0
ファイル: ring_double.py プロジェクト: xiaobo3332/textdongbo
 def _default_wg_t1(self):
     wg_t1 = WireWaveguideTemplate(name="port_{}".format(str(self.width)))
     wg_t1.Layout(
         core_width=self.width,
         cladding_width=self.width + 16,
     )
     return wg_t1
コード例 #8
0
 def _default_wg_t_port(self):
     tt_w = WireWaveguideTemplate()
     tt_w.Layout(
         core_width=8.75,
         cladding_width=8.75 + 2 * 8,
     )
     return tt_w
コード例 #9
0
	def _default_tt_cross(self):
		tt_w = WireWaveguideTemplate()
		tt_w.Layout(core_width=(self.width),
                    cladding_width=(self.width),
		    **self.props
                        )

		return tt_w
コード例 #10
0
 def _default_wg_t2(self):
     wg_t2 = WireWaveguideTemplate(
         name="port_{}_{}".format(str(self.width), str(self.offset)))
     wg_t2.Layout(
         core_width=self.width,
         cladding_width=self.width + 2 * 12.0,
     )
     return wg_t2
コード例 #11
0
	def _default_tt_square(self):
		tt_w = WireWaveguideTemplate()
		tt_w.Layout(core_width=(self.size),
                    cladding_width=(self.size),
		    **self.props
                    )
		print 'ttw in Square is ', tt_w
		
		return tt_w
コード例 #12
0
    def _default_MMI22_list(self):
        print '____________ MMI 2x2 ______________'
        MMI22_list = []

        for l, dl in enumerate(self.length_inc_vec):
            print 'length number ' + str(l)
            print 'dl ' + str(dl)
            print 'MM length ' + str(self.length_22 + dl)
            cell = MMI2x2Tapered(mmi_trace_template=self.wg_t_MM,
                                 input_trace_template=self.wg_t_port,
                                 output_trace_template=self.wg_t_port,
                                 trace_template=self.wg_t,
                                 name='MMI22_w_' + str(self.width) + '_l_' +
                                 str(self.length_22 + dl))
            cell.Layout(transition_length=self.l_taper,
                        length=self.length_22 + dl,
                        trace_spacing=self.ts_12)

            MMI22_list.append(cell)

            print 'cell name ' + str(cell.name)
            print '__________________________'

        for w, dw in enumerate(self.width_inc_vec):
            MM_w = self.width + dw
            print 'width number ' + str(w)
            print 'dw ' + str(dw)
            print 'MM width ' + str(MM_w)
            wg_t_MM_w = WireWaveguideTemplate()
            wg_t_MM_w.Layout(
                core_width=MM_w,
                cladding_width=MM_w + 2 * 8,
            )

            cell = MMI2x2Tapered(mmi_trace_template=wg_t_MM_w,
                                 input_trace_template=self.wg_t_port,
                                 output_trace_template=self.wg_t_port,
                                 trace_template=self.wg_t,
                                 name='MMI22_w_' + str(self.width + dw) +
                                 '_l_' + str(self.length_22))
            cell.Layout(transition_length=self.l_taper,
                        length=self.length_22,
                        trace_spacing=self.ts_12 +
                        dw)  #.visualize(annotate=True)
            print cell
            MMI22_list.append(cell)

            print 'cell name ' + str(cell.name)
            print '__________________________'

        print 'last MMI22 done'
        print '_ _ _ _ _ _ _ _ _ _ _ _ _ '
        return MMI22_list
コード例 #13
0
    def _default_Spirals_w_list(self):
        Spirals_w_list = []

        for w, width in enumerate(self.width_vec):
            print 'The core width is: ', width
            wg_t = WireWaveguideTemplate()
            wg_t.Layout(core_width=width,
                        cladding_width=width,
                            )
            Spirals_w_list.append(Spirals(s_length_vec=self.s_length_vec, waveguide_template=wg_t, tipo=self.tipo, width=w+1,
                                          n=self.n, R=self.R, tlport=self.tlport,chip_length=self.chip_length,
                                          name = 'Spirals_w_'+ str(width))#.Layout(local_mbend_radius = radius)
                                  )
        return Spirals_w_list
コード例 #14
0
        def __example_layout(self):
            from technologies import silicon_photonics
            from picazzo3.traces.wire_wg.trace import WireWaveguideTemplate
            import ipkiss3.all as i3
            import numpy as np
            from euler_rounding_algorithm import Euler90Algorithm
            from SplittersAndCascades import Bent_Coupler_Symm

            # set waveguide templates for
            # the north waveguide (wg_t1)
            # and the south waveguide (wg_t2)
            wg_t1 = WireWaveguideTemplate(name="south_arm")
            wg_t1.Layout(core_width=2.400,
                         cladding_width=i3.TECH.WG.CLADDING_WIDTH,
                         core_process=i3.TECH.PROCESS.WG)

            wg_t2 = WireWaveguideTemplate(name="north arm")
            wg_t2.Layout(core_width=1.500,
                         cladding_width=i3.TECH.WG.CLADDING_WIDTH,
                         core_process=i3.TECH.PROCESS.WG)

            # set the directional coupler (can also be MMI)
            # and then pass it as an child PCell to Bend_Coupler PCell
            C = Bent_Coupler_Symmr(name="my_dircoup_2",
                                   trace_template1=wg_t1,
                                   trace_template2=wg_t2,
                                   coupler_length=20.0)
            layout = C.Layout(bend_radius=10.0,
                              straight_after_bend=6.0,
                              bend_angle=60.0)
            layout.visualize()
コード例 #15
0
        def __example_layout(self):
            from technologies import silicon_photonics
            from picazzo3.traces.wire_wg.trace import WireWaveguideTemplate
            import ipkiss3.all as i3
            import numpy as np
            from euler_rounding_algorithm import EulerArbAlgorithm
            from SplittersAndCascades import Bent_Coupler_Symm

            # wg_t1: waveguide template of the south arm
            # wg_t2: waveguide template of the north arm
            # define the template, set the core waveguide width
            wg_t1 = WireWaveguideTemplate(name="south_arm")
            wg_t1.Layout(core_width=2.400,
                         cladding_width=i3.TECH.WG.CLADDING_WIDTH,
                         core_process=i3.TECH.PROCESS.WG)

            wg_t2 = WireWaveguideTemplate(name="north arm")
            wg_t2.Layout(core_width=1.500,
                         cladding_width=i3.TECH.WG.CLADDING_WIDTH,
                         core_process=i3.TECH.PROCESS.WG)
            DC = StraightDirectionalCoupler(name="Directional coupler",
                                            trace_template1=wg_t1,
                                            trace_template2=wg_t2,
                                            coupler_length=50.0)

            layout_DC = DC.Layout(coupler_spacing=10.0)

            C = S_Bend_Coupler_Arb(name="modal_coupler",
                                   wg_template1=wg_t1,
                                   wg_template2=wg_t2,
                                   coupler=DC)

            layout = C.Layout(bend_radius=30.0,
                              bend_angle_deg=60.0,
                              s_bend_straight=10.0,
                              straight_after_bend=50.0,
                              in1_bent=True,
                              in2_bent=True,
                              out1_bent=False,
                              out2_bent=True,
                              rounding_algorithm=EulerArbAlgorithm)

            layout.visualize()
コード例 #16
0
 def _default_wg_t1(self):
     wg_t1 = WireWaveguideTemplate()
     wg_t1.Layout(core_width=15.0,
                  cladding_width=15.0 + 16.0,
                  core_process=i3.TECH.PROCESS.WG)
     return wg_t1
コード例 #17
0
ファイル: MMI2112.py プロジェクト: xiaobo3332/textdongbo
 def _default_trace_template(self):
     wg_sm2 = WireWaveguideTemplate()
     wg_sm2.Layout(core_width=3.1, cladding_width=3.1 + 24.0)
     return wg_sm2
コード例 #18
0
ファイル: MMI2112.py プロジェクト: xiaobo3332/textdongbo
 def _default_mmi_access_template(self):
     mmi_access_template = WireWaveguideTemplate(name="MMI_at")
     mmi_access_template.Layout(core_width=9.0, cladding_width=9.0 + 2 * 12)
     return mmi_access_template
コード例 #19
0
ファイル: MMI2112.py プロジェクト: xiaobo3332/textdongbo
 def _default_mmi_trace_template(self):
     mmi_trace_template = WireWaveguideTemplate(name="MMI_tt")
     mmi_trace_template.Layout(core_width=20.0, cladding_width=20.0 + 2 * 12)  # MMI_width
     return mmi_trace_template
コード例 #20
0
ファイル: MMI2112.py プロジェクト: xiaobo3332/textdongbo
 def _default_trace_template(self):
     wg_sm = WireWaveguideTemplate(name="sm_template")
     wg_sm.Layout(core_width=3.8, cladding_width=3.8 + 2 * 12.0)
     return wg_sm
コード例 #21
0
ファイル: 1_MMI22_V4.py プロジェクト: xiaobo3332/textdongbo
 def _default_mmi_access_template(self):
     mmi_access_template = WireWaveguideTemplate(
         name="dongbo{}".format(str(self.start_id + 5)))
     mmi_access_template.Layout(core_width=9.0, cladding_width=9.0 + 16.0)
     return mmi_access_template
コード例 #22
0
ファイル: 1_MMI22_V4.py プロジェクト: xiaobo3332/textdongbo
 def _default_mmi_trace_template(self):
     mmi_trace_template = WireWaveguideTemplate(
         name="dongbo{}".format(str(self.start_id + 4)))
     mmi_trace_template.Layout(core_width=20.0,
                               cladding_width=20.0 + 16.0)  # MMI_width
     return mmi_trace_template
コード例 #23
0
ファイル: 1_MMI22_V4.py プロジェクト: xiaobo3332/textdongbo
 def _default_wg_sm(self):
     wg_sm = WireWaveguideTemplate(
         name="dongbo{}".format(str(self.start_id + 3)))
     wg_sm.Layout(core_width=3.8, cladding_width=3.8 + 16.0)
     return wg_sm
コード例 #24
0
	def _default_tt_port(self):
		tt_port = WireWaveguideTemplate()
		tt_port_layout=tt_port.Layout(core_width=15.0, cladding_width=15.0+2*8)
		return tt_port
コード例 #25
0
 def _default_mmi_access_template(self):
     mmi_access_template = WireWaveguideTemplate()
     mmi_access_template.Layout(core_width=9.0, cladding_width=9.0 + 16.0)
     return mmi_access_template
コード例 #26
0
 def _default_wg_sm(self):
     wg_sm = WireWaveguideTemplate()
     wg_sm.Layout(core_width=3.8, cladding_width=3.8 + 16.0)
     return wg_sm
コード例 #27
0
 def _default_mmi_trace_template(self):
     mmi_trace_template = WireWaveguideTemplate()
     mmi_trace_template.Layout(core_width=20.0,
                               cladding_width=20.0 + 16.0)  # MMI_width
     return mmi_trace_template
コード例 #28
0
 def _default_wg_dc2(self):
     wg_dc2 = WireWaveguideTemplate(name="dc2_template")
     wg_dc2.Layout(core_width=2.8, cladding_width=2.8 + 16.0)
     return wg_dc2
コード例 #29
0
ファイル: DC_V1.py プロジェクト: xiaobo3332/textdongbo
# from picazzo3.routing.place_route import PlaceAndConnect
from picazzo3.routing.place_route import PlaceAndAutoRoute

import ipkiss3.all as i3

from picazzo3.wg.dircoup import BendDirectionalCoupler

# wg_t = WireWaveguideTemplate(name="my_wg_template1")
# wg_t.Layout(core_width=0.550,
#             cladding_width=i3.TECH.WG.CLADDING_WIDTH,
#             core_process=i3.TECH.PROCESS.WG)

# Define Templates

wg_t1 = WireWaveguideTemplate()
wg_t1.Layout(core_width=15.0,
             cladding_width=15.0 + 16.0,
             core_process=i3.TECH.PROCESS.WG)

wg_sm = WireWaveguideTemplate()
wg_sm.Layout(core_width=3.8, cladding_width=3.8 + 16.0)

# wg_sm2 = WireWaveguideTemplate()
# wg_sm2.Layout(core_width=3.1, cladding_width=3.1 + 16.0)

mmi_trace_template = WireWaveguideTemplate()
mmi_trace_template.Layout(core_width=20.0,
                          cladding_width=20.0 + 16.0)  # MMI_width

mmi_access_template = WireWaveguideTemplate()
コード例 #30
0
ファイル: spiral.py プロジェクト: xiaobo3332/textdongbo
 def _default_trace_template(self):
     wg_sm = WireWaveguideTemplate(name="sm_template" + str(self.sm_width))
     wg_sm.Layout(core_width=self.sm_width,
                  cladding_width=self.sm_width + 16.0)
     return wg_sm