Here are the components available in the PDK

Cells#

bend_euler#

gvtt.components.bend_euler(angle: float = 90.0, p: float = 1.0, with_arc_floorplan: bool = False, npoints: int | None = None, direction: str = 'ccw', with_bbox: bool = True, cross_section: ~collections.abc.Callable[[...], ~gdsfactory.cross_section.CrossSection] | ~gdsfactory.cross_section.CrossSection | dict[str, ~typing.Any] | str | ~gdsfactory.cross_section.Transition = functools.partial(<function strip>, width=1.874), **kwargs) Component[source]#

Returns an euler bend that transitions from straight to curved.

By default, radius corresponds to the minimum radius of curvature of the bend. However, if with_arc_floorplan is True, radius corresponds to the effective radius of curvature (making the curve a drop-in replacement for an arc). If p < 1.0, will create a “partial euler” curve as described in Vogelbacher et. al. https://dx.doi.org/10.1364/oe.27.031394

default p = 0.5 based on this paper https://www.osapublishing.org/oe/fulltext.cfm?uri=oe-25-8-9150&id=362937

Parameters:
  • angle – total angle of the curve.

  • p – Proportion of the curve that is an Euler curve.

  • with_arc_floorplan – If False: radius is the minimum radius of curvature If True: The curve scales such that the endpoints match a bend_circular with parameters radius and angle.

  • npoints – Number of points used per 360 degrees.

  • direction – cw (clock-wise) or ccw (counter clock-wise).

  • with_bbox – add bbox_layers and bbox_offsets to avoid DRC sharp edges.

  • cross_section – specification (CrossSection, string, CrossSectionFactory dict).

  • kwargs – cross_section settings.

           o2
           |
          /
         /
        /
o1_____/
import gvtt

c = gvtt.components.bend_euler(angle=90.0, p=1.0, with_arc_floorplan=False, direction='ccw', with_bbox=True)
c.plot()

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

_images/cells-1.png

die#

gvtt.components.die(size: tuple[float, float] = (5000.0, 9500.0), street_width: float = 75.0, street_length: float = 1000.0, die_name: str | None = 'chip99', text_size: float = 100.0, text_location: str | tuple[float, float] = 'SW', layer: ~kfactory.kcell.LayerEnum | str | tuple[int, int] | None = None, bbox_layer: ~kfactory.kcell.LayerEnum | str | tuple[int, int] | None = None, draw_corners: bool = True, draw_dicing_lane: bool = True, text_component: str | ~collections.abc.Callable[[...], ~gdsfactory.component.Component] | dict[str, ~typing.Any] | ~kfactory.kcell.KCell = <function text>) Component[source]#
import gvtt

c = gvtt.components.die(size=(5000.0, 9500.0), street_width=75.0, street_length=1000.0, die_name='chip99', text_size=100.0, text_location='SW', draw_corners=True, draw_dicing_lane=True)
c.plot()

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

_images/cells-2.png

edge_coupler_rib#

gvtt.components.edge_coupler_rib(edge_coupling_width: float = 3.0, polishing_length: float = 25.0, side: str = 'W', xpos: float = 0.0, ypos: float = 0.0) Component[source]#

Returns a rib waveguide edge coupler.

Parameters:
  • edge_coupling_width – width of the edge coupling waveguide.

  • polishing_length – length of the edge coupling waveguide.

  • side – side of the edge coupler (W, E, N, S).

  • xpos – dx position of the edge coupler.

  • ypos – dy position of the edge coupler.

import gvtt

c = gvtt.components.edge_coupler_rib(edge_coupling_width=3.0, polishing_length=25.0, side='W', xpos=0.0, ypos=0.0)
c.plot()

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

_images/cells-3.png

mmi1x2#

gvtt.components.mmi1x2(width: float = 1.874, width_taper: float = 1.874, length_taper: float = 1.0, length_mmi: float = 43.25, width_mmi: float = 6.25, gap_mmi=1.251, taper: str | ~collections.abc.Callable[[...], ~gdsfactory.component.Component] | dict[str, ~typing.Any] | ~kfactory.kcell.KCell = <function taper>, straight: str | ~collections.abc.Callable[[...], ~gdsfactory.component.Component] | dict[str, ~typing.Any] | ~kfactory.kcell.KCell = <function straight>, cross_section: ~collections.abc.Callable[[...], ~gdsfactory.cross_section.CrossSection] | ~gdsfactory.cross_section.CrossSection | dict[str, ~typing.Any] | str | ~gdsfactory.cross_section.Transition = 'xs_sc') Component[source]#

1x2 MultiMode Interferometer (MMI).

Parameters:
  • width – input and output straight width. Defaults to cross_section width.

  • width_taper – interface between input straights and mmi region.

  • length_taper – into the mmi region.

  • length_mmi – in x direction.

  • width_mmi – in y direction.

  • gap_mmi – gap between tapered wg.

  • taper – taper function.

  • straight – straight function.

  • cross_section – specification (CrossSection, string or dict).

       length_mmi
        <------>
        ________
       |        |
       |         \__
       |          __  o2
    __/          /_ _ _ _
 o1 __          | _ _ _ _| gap_mmi
      \          \__
       |          __  o3
       |         /
       |________|

     <->
length_taper
import gvtt

c = gvtt.components.mmi1x2(width=1.874, width_taper=1.874, length_taper=1.0, length_mmi=43.25, width_mmi=6.25, gap_mmi=1.251, cross_section='xs_sc')
c.plot()

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

_images/cells-4.png

mmi2x2#

gvtt.components.mmi2x2(width: float | None = None, width_taper: float = 1.874, length_taper: float = 1.0, length_mmi: float = 112.0, width_mmi: float = 5, gap_mmi: float = 1.25, taper: ComponentSpec = <function taper>, straight: ComponentSpec = <function straight>, cross_section: ~collections.abc.Callable[[...], ~gdsfactory.cross_section.CrossSection] | ~gdsfactory.cross_section.CrossSection | dict[str, ~typing.Any] | str | ~gdsfactory.cross_section.Transition = 'xs_sc') Component[source]#

Mmi 2x2.

Parameters:
  • width – input and output straight width.

  • width_taper – interface between input straights and mmi region.

  • length_taper – into the mmi region.

  • length_mmi – in x direction.

  • width_mmi – in y direction.

  • gap_mmi – (width_taper + gap between tapered wg)/2.

  • taper – taper function.

  • straight – straight function.

  • cross_section – spec.

       length_mmi
        <------>
        ________
       |        |
    __/          \__
o2  __            __  o3
      \          /_ _ _ _
      |         | _ _ _ _| gap_mmi
    __/          \__
o1  __            __  o4
      \          /
       |________|

     <->
length_taper
import gvtt

c = gvtt.components.mmi2x2(width_taper=1.874, length_taper=1.0, length_mmi=112.0, width_mmi=5, gap_mmi=1.25, cross_section='xs_sc')
c.plot()

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

_images/cells-5.png

rib_taper#

gvtt.components.rib_taper(width1=1, width2=1, taper_ratio=50.0, length: float | None = None, **kwargs) Component[source]#

Standard rib-to-strip waveguide converter.

Parameters:
  • width1 – initial width.

  • width2 – final width.

  • taper_ratio – taper ratio.

  • length – taper length.

  • **kwargs – additional arguments.

import gvtt

c = gvtt.components.rib_taper(width1=1, width2=1, taper_ratio=50.0)
c.plot()

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

_images/cells-6.png

rib_to_strip#

gvtt.components.rib_to_strip(length=200.0, width1=3.0, width2=3.0) Component[source]#

Standard rib-to-strip waveguide converter.

Parameters:
  • length – taper length.

  • width1 – initial width.

  • width2 – final width.

import gvtt

c = gvtt.components.rib_to_strip(length=200.0, width1=3.0, width2=3.0)
c.plot()

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

_images/cells-7.png

straight#

gvtt.components.straight(length: float = 10.0, npoints: int = 2, *, cross_section: CrossSectionSpec = functools.partial(<function strip>, width=1.874), **kwargs) Component#

Returns a Straight waveguide.

Parameters:
  • length – straight length (um).

  • npoints – number of points.

  • cross_section – specification (CrossSection, string or dict).

  • kwargs – additional cross_section arguments.

o1 -------------- o2
        length
import gvtt

c = gvtt.components.straight(length=10.0, npoints=2)
c.plot()

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

_images/cells-8.png

straight_rib#

gvtt.components.straight_rib(length: float = 10.0, npoints: int = 2, *, cross_section: CrossSectionSpec = CrossSection(sections=(Section(width=2.5, offset=0.0, insets=None, layer=(89, 0), port_names=('o1', 'o2'), port_types=('optical', 'optical'), name='_default', hidden=False, simplify=None, width_function=None, offset_function=None), Section(width=2.5, offset=0, insets=None, layer='WG_RIBS_SUB', port_names=(None, None), port_types=('optical', 'optical'), name='WG', hidden=False, simplify=None, width_function=None, offset_function=None), Section(width=22.5, offset=0, insets=None, layer='WG_RIBS_ADD', port_names=(None, None), port_types=('optical', 'optical'), name='trench', hidden=False, simplify=None, width_function=None, offset_function=None)), components_along_path=(), radius=10.0, radius_min=None, bbox_layers=None, bbox_offsets=None), **kwargs) Component#

Returns a Straight waveguide.

Parameters:
  • length – straight length (um).

  • npoints – number of points.

  • cross_section – specification (CrossSection, string or dict).

  • kwargs – additional cross_section arguments.

o1 -------------- o2
        length
import gvtt

c = gvtt.components.straight_rib(length=10.0, npoints=2)
c.plot()

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

_images/cells-9.png

straight_sc#

gvtt.components.straight_sc(length: float = 10.0, npoints: int = 2, *, cross_section: CrossSectionSpec = functools.partial(<function strip>, width=1.874), **kwargs) Component#

Returns a Straight waveguide.

Parameters:
  • length – straight length (um).

  • npoints – number of points.

  • cross_section – specification (CrossSection, string or dict).

  • kwargs – additional cross_section arguments.

o1 -------------- o2
        length
import gvtt

c = gvtt.components.straight_sc(length=10.0, npoints=2)
c.plot()

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

_images/cells-10.png

strip_taper#

gvtt.components.strip_taper(width1=1, width2=1, taper_ratio=25.0, length: float | None = None, **kwargs) Component[source]#

Standard rib-to-strip waveguide converter.

Parameters:
  • width1 – initial width.

  • width2 – final width.

  • taper_ratio – taper ratio.

  • length – taper length.

  • **kwargs – additional arguments.

import gvtt

c = gvtt.components.strip_taper(width1=1, width2=1, taper_ratio=25.0)
c.plot()

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

_images/cells-11.png

strip_to_rib#

gvtt.components.strip_to_rib(length=200.0, width1=3.0, width2=3.0) Component[source]#

Returns strip to rib transition.

Parameters:

length – in um.

import gvtt

c = gvtt.components.strip_to_rib(length=200.0, width1=3.0, width2=3.0)
c.plot()

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

_images/cells-12.png