gdsfactory.cross_section.pn

Contents

gdsfactory.cross_section.pn#

gdsfactory.cross_section.pn(width: float = 0.5, layer: tuple[int, int] | str | int | LayerEnum = 'WG', layer_slab: tuple[int, int] | str | int | LayerEnum = 'SLAB90', gap_low_doping: float = 0.0, gap_medium_doping: float = 0.5, gap_high_doping: float = 1.0, offset_low_doping: float = 0.0, width_doping: float = 8.0, width_slab: float = 7.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'), sections: tuple[Section, ...] | None = None, cladding_layers: Sequence[tuple[int, int] | str | int | LayerEnum] | None = None, cladding_offsets: Sequence[float] | None = None, cladding_simplify: Sequence[float] | None = None, slab_inset: float | None = None, **kwargs: Any) CrossSection[source]#

Rib PN doped cross_section.

Parameters:
  • width – width of the ridge in um.

  • layer – ridge layer.

  • layer_slab – slab layer.

  • gap_low_doping – from waveguide center to low doping. Only used for PIN.

  • gap_medium_doping – from waveguide center to medium doping. None removes it.

  • gap_high_doping – from center to high doping. None removes it.

  • offset_low_doping – from center to junction center.

  • width_doping – in um.

  • width_slab – in um.

  • layer_p – p doping layer.

  • layer_pp – p+ doping layer.

  • layer_ppp – p++ doping layer.

  • layer_n – n doping layer.

  • layer_np – n+ doping layer.

  • layer_npp – n++ doping layer.

  • layer_via – via layer.

  • width_via – via width in um.

  • layer_metal – metal layer.

  • width_metal – metal width in um.

  • port_names – input and output port names.

  • sections – optional list of sections.

  • cladding_layers – optional list of cladding layers.

  • cladding_offsets – optional list of cladding offsets.

  • cladding_simplify – Optional 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.

  • slab_inset – slab inset in um.

  • kwargs – cross_section settings.

                      offset_low_doping
                        <------>
                       |       |
                      wg     junction
                    center   center
                       |       |
         ______________|_______|______
         |             |       |     |
_________|             |       |     |_________________|
      P                |       |               N       |
  width_p              |       |            width_n    |
<----------------------------->|<--------------------->|
                       |               |       N+      |
                       |               |    width_n    |
                       |               |<------------->|
                       |<------------->|
                       gap_medium_doping
import gdsfactory as gf

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

(Source code, png, hires.png, pdf)

../_images/gdsfactory-cross_section-pn-1.png