Beispiel #1
0
 def _default_expanded_wg_template(self):
     wstart1 = PathTraceWindow(layer=i3.TECH.PPLAYER.WG.CORE,
                               start_offset=-self.expanded_wg_width * 0.5,
                               end_offset=self.expanded_wg_width * 0.5)
     wstart2 = PathTraceWindow(
         layer=i3.TECH.PPLAYER.WG.CLADDING,
         start_offset=-(self.expanded_wg_width + self.trench_width) * 0.5,
         end_offset=-(self.expanded_wg_width + self.trench_width) * 0.5,
         line_width=0)
     wstart3 = PathTraceWindow(
         layer=i3.TECH.PPLAYER.WG.CLADDING,
         start_offset=(self.expanded_wg_width + self.trench_width) * 0.5,
         end_offset=(self.expanded_wg_width + self.trench_width) * 0.5,
         line_width=0)
     expanded_wg_template = i3.WindowWaveguideTemplate()
     expanded_wg_template.Layout(windows=[wstart1, wstart2, wstart3])
     return expanded_wg_template
                                           process_layer_map={wg_process: wg_layer},
                                           process_to_material_stack_map= # (wg_process, )
                                           [((0,), silicon),
                                            ((1,), oxide),
                                           ],
                                           is_lf_fabrication={wg_process: False}
                                          )
    return vfab_process



wg_width = 0.5
wg_length = 2.0

# waveguide template
wg_tmpl = i3.WindowWaveguideTemplate()
wg_tpl_lay = wg_tmpl.Layout(windows=[
    i3.PathTraceWindow(layer=core_layer,
                       start_offset=-0.5 * wg_width,
                       end_offset=+0.5 * wg_width),
    i3.PathTraceWindow(layer=clad_layer,
                       start_offset=-0.5 * wg_width - 2.0,
                       end_offset=0.5 * wg_width + 2.0)
    ]
)

vfab_process = vfab()
xsection = wg_tpl_lay.cross_section(process_flow=vfab_process)
xsection.visualize()

# waveguide