Skip to article frontmatterSkip to article content

gdsfactory.cross_section.pn_with_trenches

gdsfactory.cross_section.pn_with_trenches(width: float = 0.5, layer: tuple[int, int] | str | int | LayerEnum = 'WG', layer_trench: tuple[int, int] | str | int | LayerEnum = 'DEEP_ETCH', gap_low_doping: float = 0.0, gap_medium_doping: float | None = 0.5, gap_high_doping: float | None = 1.0, offset_low_doping: float = 0.0, width_doping: float = 8.0, slab_offset: float | None = 0.3, width_slab: float | None = None, width_trench: float = 2.0, layer_p: tuple[int, int] | str | int | LayerEnum | None = 'P', layer_pp: tuple[int, int] | str | int | LayerEnum | None = 'PP', layer_ppp: tuple[int, int] | str | int | LayerEnum | None = 'PPP', layer_n: tuple[int, int] | str | int | LayerEnum | None = 'N', layer_np: tuple[int, int] | str | int | LayerEnum | None = 'NP', layer_npp: tuple[int, int] | str | int | LayerEnum | None = 'NPP', layer_via: tuple[int, int] | str | int | LayerEnum | None = None, width_via: float = 1.0, layer_metal: tuple[int, int] | str | int | LayerEnum | None = None, width_metal: float = 1.0, port_names: tuple[str, str] = ('o1', 'o2'), cladding_layers: Sequence[tuple[int, int]] | None = None, cladding_offsets: Sequence[float] | None = None, cladding_simplify: Sequence[float] | None = None, wg_marking_layer: tuple[int, int] | str | int | LayerEnum | None = None, sections: tuple[Section, ...] | None = None, **kwargs: Any)CrossSection

Rib PN doped cross_section.

Parameters
  • widthwidth of the ridge in um.

  • layerridge layer. None adds only ridge.

  • layer_trenchlayer to etch trenches.

  • gap_low_dopingfrom waveguide center to low doping. Only used for PIN.

  • gap_medium_dopingfrom waveguide center to medium doping. None removes it.

  • gap_high_dopingfrom center to high doping. None removes it.

  • offset_low_dopingfrom center to junction center.

  • width_dopingin um.

  • slab_offsetfrom the edge of the trench to the edge of the slab.

  • width_slabin um.

  • width_trenchin um.

  • layer_pp doping layer.

  • layer_ppp+ doping layer.

  • layer_pppp++ doping layer.

  • layer_nn doping layer.

  • layer_npn+ doping layer.

  • layer_nppn++ doping layer.

  • layer_viavia layer.

  • width_viavia width in um.

  • layer_metalmetal layer.

  • width_metalmetal width in um.

  • port_namesinput and output port names.

  • cladding_layersoptional list of cladding layers.

  • cladding_offsetsoptional list of cladding offsets.

  • cladding_simplifyOptional Tolerance value for the simplification algorithm. All points that can be removed without changing the resulting. polygon by more than the value listed here will be removed.

  • wg_marking_layerlayer to draw over the actual waveguide.

  • sectionsoptional list of sections.

  • kwargscross_section settings.

                            offset_low_doping
                              <------>
                             |       |
                            wg     junction
                          center   center             slab_offset
                             |       |               <------>
 _____         ______________|_______ ______         ________
      |        |             |       |     |         |       |
      |________|             |             |_________|       |
            P                |       |               N       |
        width_p              |                    width_n    |
   <-------------------------------->|<--------------------->|
      <------->              |               |       N+      |
     width_trench            |               |    width_n    |
                             |               |<------------->|
                             |<------------->|
                             gap_medium_doping
<------------------------------------------------------------>
                         width_slab
import gdsfactory as gf

xs = gf.cross_section.pn_with_trenches(width=0.5, gap_low_doping=0, width_doping=2.)
p = gf.path.arc(radius=10, angle=45)
c = p.extrude(xs)
c.plot()