Luxtelligence provides a library of components that have been fabricated in the reference material stack, and whose performance has been tested and validated. Here follows a list of the available parametric cells (gdsfactory.Component objects):

Cells#

CPW_pad_linear#

lnoi400.cells.CPW_pad_linear(start_width: float = 80.0, length_straight: float = 10.0, length_tapered: float = 190.0, cross_section: Callable[[...], CrossSection] | CrossSection | dict[str, Any] | str | Transition = 'xs_uni_cpw') Component[source]#

RF access line for high-frequency GSG probes. The probe pad maintains a fixed gap/central conductor ratio across its length, to achieve a good impedance matching

import lnoi400

c = lnoi400.cells.CPW_pad_linear(start_width=80.0, length_straight=10.0, length_tapered=190.0, cross_section='xs_uni_cpw')
c.plot()

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

_images/cells-1.png

L_turn_bend#

lnoi400.cells.L_turn_bend(radius: float = 80.0, p: float = 1.0, with_arc_floorplan: bool = True, cross_section: Callable[[...], CrossSection] | CrossSection | dict[str, Any] | str | Transition = 'xs_rwg1000', **kwargs) Component[source]#

A 90-degrees bend following an Euler path, with linearly-varying curvature (increasing and decreasing).

import lnoi400

c = lnoi400.cells.L_turn_bend(radius=80.0, p=1.0, with_arc_floorplan=True, cross_section='xs_rwg1000')
c.plot()

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

_images/cells-2.png

S_bend_vert#

lnoi400.cells.S_bend_vert(v_offset: float = 25.0, h_extent: float = 100.0, dx_straight: float = 5.0, cross_section: Callable[[...], CrossSection] | CrossSection | dict[str, Any] | str | Transition = 'xs_rwg1000') Component[source]#

A spline bend that bridges a vertical displacement.

import lnoi400

c = lnoi400.cells.S_bend_vert(v_offset=25.0, h_extent=100.0, dx_straight=5.0, cross_section='xs_rwg1000')
c.plot()

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

_images/cells-3.png

U_bend_racetrack#

lnoi400.cells.U_bend_racetrack(v_offset: float = 90.0, p: float = 1.0, with_arc_floorplan: bool = True, cross_section: Callable[[...], CrossSection] | CrossSection | dict[str, Any] | str | Transition = 'xs_rwg3000', **kwargs) Component[source]#

A U-bend with fixed cross-section and dimensions, suitable for building a low-loss racetrack resonator.

import lnoi400

c = lnoi400.cells.U_bend_racetrack(v_offset=90.0, p=1.0, with_arc_floorplan=True, cross_section='xs_rwg3000')
c.plot()

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

_images/cells-4.png

bend_S_spline#

lnoi400.cells.bend_S_spline(size: tuple[float, float] = (100.0, 30.0), cross_section: ~collections.abc.Callable[[...], ~gdsfactory.cross_section.CrossSection] | ~gdsfactory.cross_section.CrossSection | dict[str, ~typing.Any] | str | ~gdsfactory.cross_section.Transition = 'xs_rwg1000', npoints: int = 201, path_method=<function spline_clamped_path>) Component[source]#

A spline bend merging a vertical offset.

import lnoi400

c = lnoi400.cells.bend_S_spline(size=(100.0, 30.0), cross_section='xs_rwg1000', npoints=201)
c.plot()

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

_images/cells-5.png

chip_frame#

lnoi400.cells.chip_frame(size: tuple[float, float] = (10000, 5000), exclusion_zone_width: float = 50, center: tuple[float, float] = None) Component[source]#

Provide the chip extent and the exclusion zone around the chip frame. In the exclusion zone, only the edge couplers routing to the chip facet should be placed. Allowed chip dimensions (in either direction): 5000 um, 10000 um, 20000 um.

import lnoi400

c = lnoi400.cells.chip_frame(size=(10000, 5000), exclusion_zone_width=50)
c.plot()

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

_images/cells-6.png

double_linear_inverse_taper#

lnoi400.cells.double_linear_inverse_taper(cross_section_start: Callable[[...], CrossSection] | CrossSection | dict[str, Any] | str | Transition = 'xs_swg250', cross_section_end: Callable[[...], CrossSection] | CrossSection | dict[str, Any] | str | Transition = 'xs_rwg1000', lower_taper_length: float = 120.0, lower_taper_end_width: float = 2.05, upper_taper_start_width: float = 0.25, upper_taper_length: float = 240.0, slab_removal_width: float = 20.0, input_ext: float = 0.0) Component[source]#

Inverse taper with two layers, starting from a wire waveguide at the facet and transitioning to a rib waveguide. The tapering profile is linear in both layers.

import lnoi400

c = lnoi400.cells.double_linear_inverse_taper(cross_section_start='xs_swg250', cross_section_end='xs_rwg1000', lower_taper_length=120.0, lower_taper_end_width=2.05, upper_taper_start_width=0.25, upper_taper_length=240.0, slab_removal_width=20.0, input_ext=0.0)
c.plot()

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

_images/cells-7.png

eo_phase_shifter#

lnoi400.cells.eo_phase_shifter(rib_core_width_modulator: float = 2.5, taper_length: float = 100.0, modulation_length: float = 7500.0, rf_central_conductor_width: float = 10.0, rf_ground_planes_width: float = 180.0, rf_gap: float = 4.0, draw_cpw: bool = True) Component[source]#

Phase shifter based on the Pockels effect. The waveguide is located within the gap of a CPW transmission line.

import lnoi400

c = lnoi400.cells.eo_phase_shifter(rib_core_width_modulator=2.5, taper_length=100.0, modulation_length=7500.0, rf_central_conductor_width=10.0, rf_ground_planes_width=180.0, rf_gap=4.0, draw_cpw=True)
c.plot()

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

_images/cells-8.png

mmi1x2_optimized1550#

lnoi400.cells.mmi1x2_optimized1550(width_mmi: float = 6.0, length_mmi: float = 26.75, width_taper: float = 1.5, length_taper: float = 25.0, port_ratio: float = 0.55, cross_section: Callable[[...], CrossSection] | CrossSection | dict[str, Any] | str | Transition = 'xs_rwg1000', **kwargs) Component[source]#

MMI1x2 with layout optimized for maximum transmission at 1550 nm.

import lnoi400

c = lnoi400.cells.mmi1x2_optimized1550(width_mmi=6.0, length_mmi=26.75, width_taper=1.5, length_taper=25.0, port_ratio=0.55, cross_section='xs_rwg1000')
c.plot()

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

_images/cells-9.png

mmi2x2optimized1550#

lnoi400.cells.mmi2x2optimized1550(width_mmi: float = 5.0, length_mmi: float = 76.5, width_taper: float = 1.5, length_taper: float = 25.0, port_ratio: float = 0.7, cross_section: Callable[[...], CrossSection] | CrossSection | dict[str, Any] | str | Transition = 'xs_rwg1000', **kwargs) Component[source]#

MMI2x2 with layout optimized for maximum transmission at 1550 nm.

import lnoi400

c = lnoi400.cells.mmi2x2optimized1550(width_mmi=5.0, length_mmi=76.5, width_taper=1.5, length_taper=25.0, port_ratio=0.7, cross_section='xs_rwg1000')
c.plot()

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

_images/cells-10.png

mzm_unbalanced#

lnoi400.cells.mzm_unbalanced(modulation_length: float = 7500.0, lbend_tune_arm_reff: float = 75.0, rf_pad_start_width: float = 80.0, rf_central_conductor_width: float = 10.0, rf_ground_planes_width: float = 180.0, rf_gap: float = 4.0, rf_pad_length_straight: float = 10.0, rf_pad_length_tapered: float = 190.0, **kwargs) Component[source]#

Mach-Zehnder modulator based on the Pockels effect with an applied RF electric field. The modulator works in a differential push-pull configuration driven by a single GSG line.

import lnoi400

c = lnoi400.cells.mzm_unbalanced(modulation_length=7500.0, lbend_tune_arm_reff=75.0, rf_pad_start_width=80.0, rf_central_conductor_width=10.0, rf_ground_planes_width=180.0, rf_gap=4.0, rf_pad_length_straight=10.0, rf_pad_length_tapered=190.0)
c.plot()

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

_images/cells-11.png

straight_rwg1000#

lnoi400.cells.straight_rwg1000(length: float = 10.0, **kwargs) Component[source]#

Straight single-mode waveguide.

import lnoi400

c = lnoi400.cells.straight_rwg1000(length=10.0)
c.plot()

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

_images/cells-12.png

straight_rwg3000#

lnoi400.cells.straight_rwg3000(length: float = 10.0, **kwargs) Component[source]#

Straight multimode waveguide.

import lnoi400

c = lnoi400.cells.straight_rwg3000(length=10.0)
c.plot()

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

_images/cells-13.png

uni_cpw_straight#

lnoi400.cells.uni_cpw_straight(length: float = 3000.0, cross_section: Callable[[...], CrossSection] | CrossSection | dict[str, Any] | str | Transition = 'xs_uni_cpw', bondpad: str | Callable[[...], Component] | dict[str, Any] | KCell = 'CPW_pad_linear') Component[source]#

A CPW transmission line for microwaves, with a uniform cross section.

import lnoi400

c = lnoi400.cells.uni_cpw_straight(length=3000.0, cross_section='xs_uni_cpw', bondpad='CPW_pad_linear')
c.plot()

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

_images/cells-14.png