Skip to content

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 lnoi400

CPW_pad_linear

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

Parameters:

Name Type Description Default
start_width float

80.0.

80.0
length_straight float

10.0.

10.0
length_tapered float

190.0.

190.0
cross_section CrossSection | str | dict[str, Any] | Callable[..., CrossSection] | SymmetricalCrossSection | DCrossSection

"xs_uni_cpw".

'xs_uni_cpw'

impedance matching.

=== "Static"

![CPW_pad_linear](kwasm/gds/CPW_pad_linear.png)

=== "Dynamic"

<iframe src="kwasm/viewer.html?url=gds/CPW_pad_linear.gds" loading="lazy" width="100%" height="400" style="border:none"></iframe>

```python import lnoi400

c = lnoi400.cells.CPW_pad_linear(start_width=80, length_straight=10, length_tapered=190, cross_section='xs_uni_cpw').copy() c.draw_ports() c.plot() ```

L_turn_bend

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

Parameters:

Name Type Description Default
radius float

80.0.

80.0
p float

1.0.

1.0
with_arc_floorplan bool

True.

True
cross_section CrossSection | str | dict[str, Any] | Callable[..., CrossSection] | SymmetricalCrossSection | DCrossSection

"xs_rwg1000".

'xs_rwg1000'

=== "Static"

![L_turn_bend](kwasm/gds/L_turn_bend.png)

=== "Dynamic"

<iframe src="kwasm/viewer.html?url=gds/L_turn_bend.gds" loading="lazy" width="100%" height="400" style="border:none"></iframe>

```python import lnoi400

c = lnoi400.cells.L_turn_bend(radius=80, p=1, with_arc_floorplan=True, cross_section='xs_rwg1000').copy() c.draw_ports() c.plot() ```

S_bend_vert

A spline bend that bridges a vertical displacement.

Parameters:

Name Type Description Default
v_offset float

25.0.

25.0
h_extent float

100.0.

100.0
dx_straight float

5.0.

5.0
cross_section CrossSection | str | dict[str, Any] | Callable[..., CrossSection] | SymmetricalCrossSection | DCrossSection

"xs_rwg1000".

'xs_rwg1000'

=== "Static"

![S_bend_vert](kwasm/gds/S_bend_vert.png)

=== "Dynamic"

<iframe src="kwasm/viewer.html?url=gds/S_bend_vert.gds" loading="lazy" width="100%" height="400" style="border:none"></iframe>

```python import lnoi400

c = lnoi400.cells.S_bend_vert(v_offset=25, h_extent=100, dx_straight=5, cross_section='xs_rwg1000').copy() c.draw_ports() c.plot() ```

U_bend_racetrack

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

Parameters:

Name Type Description Default
v_offset float

90.0.

90.0
p float

1.0.

1.0
with_arc_floorplan bool

True.

True
cross_section CrossSection | str | dict[str, Any] | Callable[..., CrossSection] | SymmetricalCrossSection | DCrossSection

"xs_rwg3000".

'xs_rwg3000'

=== "Static"

![U_bend_racetrack](kwasm/gds/U_bend_racetrack.png)

=== "Dynamic"

<iframe src="kwasm/viewer.html?url=gds/U_bend_racetrack.gds" loading="lazy" width="100%" height="400" style="border:none"></iframe>

```python import lnoi400

c = lnoi400.cells.U_bend_racetrack(v_offset=90, p=1, with_arc_floorplan=True, cross_section='xs_rwg3000').copy() c.draw_ports() c.plot() ```

bend_S_spline

=== "Static"

![bend_S_spline](kwasm/gds/bend_S_spline.png)

=== "Dynamic"

<iframe src="kwasm/viewer.html?url=gds/bend_S_spline.gds" loading="lazy" width="100%" height="400" style="border:none"></iframe>

```python import lnoi400

c = lnoi400.cells.bend_S_spline(size=(100, 30), cross_section='xs_rwg1000', npoints=201).copy() c.draw_ports() c.plot() ```

bend_S_spline_varying_width

=== "Static"

![bend_S_spline_varying_width](kwasm/gds/bend_S_spline_varying_width.png)

=== "Dynamic"

<iframe src="kwasm/viewer.html?url=gds/bend_S_spline_varying_width.gds" loading="lazy" width="100%" height="400" style="border:none"></iframe>

```python import lnoi400

c = lnoi400.cells.bend_S_spline_varying_width(size=(58, 14.5), npoints=201).copy() c.draw_ports() c.plot() ```

bend_euler

Regular degree euler bend.

Parameters:

Name Type Description Default
radius float | None

in um. Defaults to cross_section_radius.

80
angle float

total angle of the curve.

90
p float

Proportion of the curve that is an Euler curve.

0.5
width float | None

width to use. Defaults to cross_section.width.

None
cross_section CrossSection | str | dict[str, Any] | Callable[..., CrossSection] | SymmetricalCrossSection | DCrossSection

specification (CrossSection, string, CrossSectionFactory dict).

'xs_rwg1000'
allow_min_radius_violation bool

if True allows radius to be smaller than cross_section radius.

False
with_arc_floorplan bool

if True the size of the bend will be adjusted to match an arc bend with the specified radius. If False: radius is the minimum radius of curvature.

True

=== "Static"

![bend_euler](kwasm/gds/bend_euler.png)

=== "Dynamic"

<iframe src="kwasm/viewer.html?url=gds/bend_euler.gds" loading="lazy" width="100%" height="400" style="border:none"></iframe>

```python import lnoi400

c = lnoi400.cells.bend_euler(radius=80, angle=90, p=0.5, cross_section='xs_rwg1000', allow_min_radius_violation=False, with_arc_floorplan=True).copy() c.draw_ports() c.plot() ```

chip_frame

=== "Static"

![chip_frame](kwasm/gds/chip_frame.png)

=== "Dynamic"

<iframe src="kwasm/viewer.html?url=gds/chip_frame.gds" loading="lazy" width="100%" height="400" style="border:none"></iframe>

```python import lnoi400

c = lnoi400.cells.chip_frame(size=(10000, 5000), exclusion_zone_width=50, chip_contour_layer=(6, 0), chip_exclusion_zone_layer=(6, 1)).copy() c.draw_ports() c.plot() ```

die_phix_rf

Die with east west edge couplers and RF pads on north and south.

Parameters:

Name Type Description Default
xsize float

die x size in um.

10000.0
ysize float

die y size in um.

5000.0
nfibers int

number of fibers.

16
npads int | None

number of DC pads. Computed from xsize and pad_pitch if None.

None
npads_rf int

number of RF pads.

6
fiber_pitch float

of the edge couplers in um.

127.0
pad_pitch float

pitch between pads.

150.0
pad_pitch_gsg float

pitch between gsg pads.

720.0
edge_coupler str | Callable[..., Component] | dict[str, Any] | DKCell | partial[Component] | None

edge coupler component.

'double_linear_inverse_taper_mirror'
grating_coupler str | Callable[..., Component] | dict[str, Any] | DKCell | partial[Component] | None

grating coupler component.

None
cross_section CrossSection | str | dict[str, Any] | Callable[..., CrossSection] | SymmetricalCrossSection | DCrossSection

waveguide cross_section.

'xs_rwg1000'
pad str | Callable[..., Component] | dict[str, Any] | DKCell | partial[Component]

pad component.

'pad'
pad_gsg str | Callable[..., Component] | dict[str, Any] | DKCell | partial[Component]

gsg pad component.

'pad_gsg'
edge_to_pad_distance float

distance from edge to first pad.

200.0
edge_coupler_keepout float

keepout zone (in um) on each side of the die for the edge coupler / fiducials / routing margins. Used to compute npads.

1200.0
pad_port_name_top str

name of the pad port name at the top facing south.

'e4'
pad_port_name_bot str

name of the pad port name at the bottom facing north.

'e2'
layer_fiducial tuple[int, int] | str | int | LayerEnum

layer for fiducials.

'LN_RIDGE'
layer_ruler tuple[int, int] | str | int | LayerEnum

layer for ruler.

'LN_RIDGE'
ruler_yoffset float

y offset for ruler.

0
ruler_xoffset float

x offset for ruler.

0
fiber_coupler_xoffset float

x offset for fiber couplers.

0
with_right_fiber_coupler bool

if True adds right fiber coupler.

True
with_left_fiber_coupler bool

if True adds left fiber coupler.

False
text_offset tuple[float, float]

offset for the text label.

(-40, 20)
text str | Callable[..., Component] | dict[str, Any] | DKCell | partial[Component] | None

text component.

'text_rectangular'
xoffset_dc_pads float

x offset for dc pads.

-100

=== "Static"

![die_phix_rf](kwasm/gds/die_phix_rf.png)

=== "Dynamic"

<iframe src="kwasm/viewer.html?url=gds/die_phix_rf.gds" loading="lazy" width="100%" height="400" style="border:none"></iframe>

```python import lnoi400

c = lnoi400.cells.die_phix_rf(xsize=10000, ysize=5000, nfibers=16, npads_rf=6, fiber_pitch=127, pad_pitch=150, pad_pitch_gsg=720, edge_coupler='double_linear_inverse_taper_mirror', cross_section='xs_rwg1000', pad='pad', pad_gsg='pad_gsg', edge_to_pad_distance=200, edge_coupler_keepout=1200, pad_port_name_top='e4', pad_port_name_bot='e2', layer_fiducial='LN_RIDGE', layer_ruler='LN_RIDGE', ruler_yoffset=0, ruler_xoffset=0, fiber_coupler_xoffset=0, with_right_fiber_coupler=True, with_left_fiber_coupler=False, text_offset=(-40, 20), text='text_rectangular', xoffset_dc_pads=-100).copy() c.draw_ports() c.plot() ```

directional_coupler_balanced

Returns a 50-50 directional coupler. Default parameters give a 50/50 splitting at 1550 nm.

Parameters:

Name Type Description Default
io_wg_sep float

Separation of the two straights at the input/output, top-to-top.

30.6
sbend_length float

length of the s-bend part.

58
central_straight_length float

length of the coupling region.

16.92
coupl_wg_sep float

Distance between two waveguides in the coupling region (side to side).

0.8
cross_section_io CrossSection | str | dict[str, Any] | Callable[..., CrossSection] | SymmetricalCrossSection | DCrossSection

cross section spec at the i/o (must be defined in tech.py).

'xs_rwg1000'
coup_wg_width float

waveguide width at the coupling section.

0.8

=== "Static"

![directional_coupler_balanced](kwasm/gds/directional_coupler_balanced.png)

=== "Dynamic"

<iframe src="kwasm/viewer.html?url=gds/directional_coupler_balanced.gds" loading="lazy" width="100%" height="400" style="border:none"></iframe>

```python import lnoi400

c = lnoi400.cells.directional_coupler_balanced(io_wg_sep=30.6, sbend_length=58, central_straight_length=16.92, coupl_wg_sep=0.8, coup_wg_width=0.8, cross_section_io='xs_rwg1000').copy() c.draw_ports() c.plot() ```

double_linear_inverse_taper

Inverse taper with two layers, starting from a wire waveguide at the facet

Parameters:

Name Type Description Default
cross_section_start CrossSection | str | dict[str, Any] | Callable[..., CrossSection] | SymmetricalCrossSection | DCrossSection

"xs_swg250".

'xs_swg250'
cross_section_end CrossSection | str | dict[str, Any] | Callable[..., CrossSection] | SymmetricalCrossSection | DCrossSection

"xs_rwg1000".

'xs_rwg1000'
lower_taper_length float

120.0.

120.0
lower_taper_end_width float

2.05.

2.05
upper_taper_start_width float

0.25.

0.25
upper_taper_length float

240.0.

240.0
slab_removal_width float

20.0.

20.0
input_ext float

0.0.

0.0

and transitioning to a rib waveguide. The tapering profile is linear in both layers.

=== "Static"

![double_linear_inverse_taper](kwasm/gds/double_linear_inverse_taper.png)

=== "Dynamic"

<iframe src="kwasm/viewer.html?url=gds/double_linear_inverse_taper.gds" loading="lazy" width="100%" height="400" style="border:none"></iframe>

```python import lnoi400

c = lnoi400.cells.double_linear_inverse_taper(cross_section_start='xs_swg250', cross_section_end='xs_rwg1000', lower_taper_length=120, lower_taper_end_width=2.05, upper_taper_start_width=0.25, upper_taper_length=240, slab_removal_width=20, input_ext=0).copy() c.draw_ports() c.plot() ```

double_linear_inverse_taper_mirror

Same as double_linear_inverse_taper, but mirrored so the narrow end is on the right.

Parameters:

Name Type Description Default
cross_section_start CrossSection | str | dict[str, Any] | Callable[..., CrossSection] | SymmetricalCrossSection | DCrossSection

starting cross section.

'xs_swg250'
cross_section_end CrossSection | str | dict[str, Any] | Callable[..., CrossSection] | SymmetricalCrossSection | DCrossSection

ending cross section.

'xs_rwg1000'
lower_taper_length float

length of the lower taper in um.

120.0
lower_taper_end_width float

end width of the lower taper in um.

2.05
upper_taper_start_width float

start width of the upper taper in um.

0.25
upper_taper_length float

length of the upper taper in um.

240.0
slab_removal_width float

width of the slab removal in um.

20.0
input_ext float

input extension in um.

30.0

=== "Static"

![double_linear_inverse_taper_mirror](kwasm/gds/double_linear_inverse_taper_mirror.png)

=== "Dynamic"

<iframe src="kwasm/viewer.html?url=gds/double_linear_inverse_taper_mirror.gds" loading="lazy" width="100%" height="400" style="border:none"></iframe>

```python import lnoi400

c = lnoi400.cells.double_linear_inverse_taper_mirror(cross_section_start='xs_swg250', cross_section_end='xs_rwg1000', lower_taper_length=120, lower_taper_end_width=2.05, upper_taper_start_width=0.25, upper_taper_length=240, slab_removal_width=20, input_ext=30).copy() c.draw_ports() c.plot() ```

eo_phase_shifter

Phase shifter based on the Pockels effect. The waveguide is located

Parameters:

Name Type Description Default
rib_core_width_modulator float

2.5.

2.5
taper_length float

100.0.

100.0
modulation_length float

7500.0.

7500.0
rf_central_conductor_width float

10.0.

10.0
rf_ground_planes_width float

180.0.

180.0
rf_gap float

4.0.

4.0
cpw_cell str | Callable[..., Component] | dict[str, Any] | DKCell | partial[Component]

uni_cpw_straight.

uni_cpw_straight
draw_cpw bool

True.

True

within the gap of a CPW transmission line.

=== "Static"

![eo_phase_shifter](kwasm/gds/eo_phase_shifter.png)

=== "Dynamic"

<iframe src="kwasm/viewer.html?url=gds/eo_phase_shifter.gds" loading="lazy" width="100%" height="400" style="border:none"></iframe>

```python import lnoi400

c = lnoi400.cells.eo_phase_shifter(rib_core_width_modulator=2.5, taper_length=100, modulation_length=7500, rf_central_conductor_width=10, rf_ground_planes_width=180, rf_gap=4, draw_cpw=True).copy() c.draw_ports() c.plot() ```

eo_phase_shifter_high_speed

High-speed phase shifter based on the Pockels effect. The waveguide is located within the gap of a CPW transmission line. Note: The base variant (eo_phase_shifter) uses a default central conductor width of 10.0, while this high-speed variant explicitly passes 21.0 for rf_central_conductor_width to achieve the desired high-speed properties. Pass the parameter set of eo_phase_shifter to modify.

=== "Static"

![eo_phase_shifter_high_speed](kwasm/gds/eo_phase_shifter_high_speed.png)

=== "Dynamic"

<iframe src="kwasm/viewer.html?url=gds/eo_phase_shifter_high_speed.gds" loading="lazy" width="100%" height="400" style="border:none"></iframe>

```python import lnoi400

c = lnoi400.cells.eo_phase_shifter_high_speed().copy() c.draw_ports() c.plot() ```

gc_focusing_1550

Returns a focusing grating coupler for 1550 nm (C-band). The grating is optimized for TE polarization and a launch angle in air of 14.5 degrees w/r to the surface normal.

Parameters:

Name Type Description Default
sleeve_width float

4.5.

4.5
cross_section CrossSection | str | dict[str, Any] | Callable[..., CrossSection] | SymmetricalCrossSection | DCrossSection

"xs_rwg1000".

'xs_rwg1000'
waveguide_length float

10.0.

10.0

=== "Static"

![gc_focusing_1550](kwasm/gds/gc_focusing_1550.png)

=== "Dynamic"

<iframe src="kwasm/viewer.html?url=gds/gc_focusing_1550.gds" loading="lazy" width="100%" height="400" style="border:none"></iframe>

```python import lnoi400

c = lnoi400.cells.gc_focusing_1550(sleeve_width=4.5, cross_section='xs_rwg1000', waveguide_length=10).copy() c.draw_ports() c.plot() ```

heater_resistor

A resistive wire used as a low-frequency phase shifter, exploiting

Parameters:

Name Type Description Default
path Path | None

None.

None
width float

0.9.

0.9
offset float

0.0.

0.0

the thermo-optical effect.

=== "Static"

![heater_resistor](kwasm/gds/heater_resistor.png)

=== "Dynamic"

<iframe src="kwasm/viewer.html?url=gds/heater_resistor.gds" loading="lazy" width="100%" height="400" style="border:none"></iframe>

```python import lnoi400

c = lnoi400.cells.heater_resistor(width=0.9, offset=0).copy() c.draw_ports() c.plot() ```

heater_straight_single

A straight resistive wire used as a low-frequency phase shifter, exploiting the thermo-optical effect. The heater is terminated by wide pads

Parameters:

Name Type Description Default
length float

150.0.

150.0
width float

0.9.

0.9
offset float

0.0.

0.0
port_contact_width_ratio float

3.0.

3.0
pad_size tuple[float, float]

(100.0, 100.0).

(100.0, 100.0)
pad_pitch float | None

None.

None
pad_vert_offset float

10.0.

10.0

for probing or bonding.

=== "Static"

![heater_straight_single](kwasm/gds/heater_straight_single.png)

=== "Dynamic"

<iframe src="kwasm/viewer.html?url=gds/heater_straight_single.gds" loading="lazy" width="100%" height="400" style="border:none"></iframe>

```python import lnoi400

c = lnoi400.cells.heater_straight_single(length=150, width=0.9, offset=0, port_contact_width_ratio=3, pad_size=(100, 100), pad_vert_offset=10).copy() c.draw_ports() c.plot() ```

mmi1x2_optimized1550

MMI1x2 with layout optimized for maximum transmission at 1550 nm.

Parameters:

Name Type Description Default
width_mmi float

6.0.

6.0
length_mmi float

26.75.

26.75
width_taper float

1.5.

1.5
length_taper float

25.0.

25.0
port_ratio float

0.55.

0.55
cross_section CrossSection | str | dict[str, Any] | Callable[..., CrossSection] | SymmetricalCrossSection | DCrossSection

"xs_rwg1000".

'xs_rwg1000'

=== "Static"

![mmi1x2_optimized1550](kwasm/gds/mmi1x2_optimized1550.png)

=== "Dynamic"

<iframe src="kwasm/viewer.html?url=gds/mmi1x2_optimized1550.gds" loading="lazy" width="100%" height="400" style="border:none"></iframe>

```python import lnoi400

c = lnoi400.cells.mmi1x2_optimized1550(width_mmi=6, length_mmi=26.75, width_taper=1.5, length_taper=25, port_ratio=0.55, cross_section='xs_rwg1000').copy() c.draw_ports() c.plot() ```

mmi2x2_optimized1550

MMI2x2 with layout optimized for maximum transmission at 1550 nm.

Parameters:

Name Type Description Default
width_mmi float

5.0.

5.0
length_mmi float

76.5.

76.5
width_taper float

1.5.

1.5
length_taper float

25.0.

25.0
port_ratio float

0.7.

0.7
cross_section CrossSection | str | dict[str, Any] | Callable[..., CrossSection] | SymmetricalCrossSection | DCrossSection

"xs_rwg1000".

'xs_rwg1000'

=== "Static"

![mmi2x2_optimized1550](kwasm/gds/mmi2x2_optimized1550.png)

=== "Dynamic"

<iframe src="kwasm/viewer.html?url=gds/mmi2x2_optimized1550.gds" loading="lazy" width="100%" height="400" style="border:none"></iframe>

```python import lnoi400

c = lnoi400.cells.mmi2x2_optimized1550(width_mmi=5, length_mmi=76.5, width_taper=1.5, length_taper=25, port_ratio=0.7, cross_section='xs_rwg1000').copy() c.draw_ports() c.plot() ```

mmi2x2optimized1550

MMI2x2 with layout optimized for maximum transmission at 1550 nm.

Parameters:

Name Type Description Default
width_mmi float

5.0.

5.0
length_mmi float

76.5.

76.5
width_taper float

1.5.

1.5
length_taper float

25.0.

25.0
port_ratio float

0.7.

0.7
cross_section CrossSection | str | dict[str, Any] | Callable[..., CrossSection] | SymmetricalCrossSection | DCrossSection

"xs_rwg1000".

'xs_rwg1000'

=== "Static"

![mmi2x2optimized1550](kwasm/gds/mmi2x2optimized1550.png)

=== "Dynamic"

<iframe src="kwasm/viewer.html?url=gds/mmi2x2optimized1550.gds" loading="lazy" width="100%" height="400" style="border:none"></iframe>

```python import lnoi400

c = lnoi400.cells.mmi2x2optimized1550(width_mmi=5, length_mmi=76.5, width_taper=1.5, length_taper=25, port_ratio=0.7, cross_section='xs_rwg1000').copy() c.draw_ports() c.plot() ```

mzm_unbalanced

Mach-Zehnder modulator based on the Pockels effect with an applied RF electric field.

Parameters:

Name Type Description Default
modulation_length float

7500.0.

7500.0
length_imbalance float

100.0.

100.0
lbend_tune_arm_reff float

75.0.

75.0
rf_pad_start_width float

80.0.

80.0
rf_central_conductor_width float

10.0.

10.0
rf_ground_planes_width float

180.0.

180.0
rf_gap float

4.0.

4.0
rf_pad_length_straight float

10.0.

10.0
rf_pad_length_tapered float

300.0.

300.0
bias_tuning_section_length float

700.0.

700.0
cpw_cell str | Callable[..., Component] | dict[str, Any] | DKCell | partial[Component]

uni_cpw_straight.

uni_cpw_straight
with_heater bool

False.

False
heater_offset float

1.2.

1.2
heater_width float

1.0.

1.0
heater_pad_size tuple[float, float]

(75.0, 75.0).

(75.0, 75.0)

The modulator works in a differential push-pull configuration driven by a single GSG line.

=== "Static"

![mzm_unbalanced](kwasm/gds/mzm_unbalanced.png)

=== "Dynamic"

<iframe src="kwasm/viewer.html?url=gds/mzm_unbalanced.gds" loading="lazy" width="100%" height="400" style="border:none"></iframe>

```python import lnoi400

c = lnoi400.cells.mzm_unbalanced(modulation_length=7500, length_imbalance=100, lbend_tune_arm_reff=75, rf_pad_start_width=80, rf_central_conductor_width=10, rf_ground_planes_width=180, rf_gap=4, rf_pad_length_straight=10, rf_pad_length_tapered=300, bias_tuning_section_length=700, with_heater=False, heater_offset=1.2, heater_width=1, heater_pad_size=(75, 75)).copy() c.draw_ports() c.plot() ```

mzm_unbalanced_high_speed

High-speed 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. Note: The base variant (mzm_unbalanced) uses a default central conductor width of 10.0, while this high-speed variant explicitly passes 21.0 for rf_central_conductor_width to achieve the desired high-speed properties. Pass the parameter set of mzm_unbalanced to modify.

=== "Static"

![mzm_unbalanced_high_speed](kwasm/gds/mzm_unbalanced_high_speed.png)

=== "Dynamic"

<iframe src="kwasm/viewer.html?url=gds/mzm_unbalanced_high_speed.gds" loading="lazy" width="100%" height="400" style="border:none"></iframe>

```python import lnoi400

c = lnoi400.cells.mzm_unbalanced_high_speed().copy() c.draw_ports() c.plot() ```

pad

Returns rectangular pad with ports.

Parameters:

Name Type Description Default
size tuple[float, float]

x, y size.

(90, 90)
port_orientation float | None

in degrees for the center port.

0
port_orientations tuple[int, ...] | list[int] | None

list of port_orientations to add. None does not add ports.

(180, 90, 0, -90)

=== "Static"

![pad](kwasm/gds/pad.png)

=== "Dynamic"

<iframe src="kwasm/viewer.html?url=gds/pad.gds" loading="lazy" width="100%" height="400" style="border:none"></iframe>

```python import lnoi400

c = lnoi400.cells.pad(size=(90, 90), port_orientation=0, port_orientations=(180, 90, 0, -90)).copy() c.draw_ports() c.plot() ```

pad_gsg

Returns rectangular RF pad with ports.

Parameters:

Name Type Description Default
length float

length of the pad.

100

=== "Static"

![pad_gsg](kwasm/gds/pad_gsg.png)

=== "Dynamic"

<iframe src="kwasm/viewer.html?url=gds/pad_gsg.gds" loading="lazy" width="100%" height="400" style="border:none"></iframe>

```python import lnoi400

c = lnoi400.cells.pad_gsg(length=100).copy() c.draw_ports() c.plot() ```

straight

_straight.

Parameters:

Name Type Description Default
length float

10.0.

10.0
cross_section CrossSection | str | dict[str, Any] | Callable[..., CrossSection] | SymmetricalCrossSection | DCrossSection

"xs_rwg1000".

'xs_rwg1000'

=== "Static"

![straight](kwasm/gds/straight.png)

=== "Dynamic"

<iframe src="kwasm/viewer.html?url=gds/straight.gds" loading="lazy" width="100%" height="400" style="border:none"></iframe>

```python import lnoi400

c = lnoi400.cells.straight(length=10, cross_section='xs_rwg1000').copy() c.draw_ports() c.plot() ```

straight_rwg1000

Straight single-mode waveguide.

Parameters:

Name Type Description Default
length float

10.0.

10.0

=== "Static"

![straight_rwg1000](kwasm/gds/straight_rwg1000.png)

=== "Dynamic"

<iframe src="kwasm/viewer.html?url=gds/straight_rwg1000.gds" loading="lazy" width="100%" height="400" style="border:none"></iframe>

```python import lnoi400

c = lnoi400.cells.straight_rwg1000(length=10).copy() c.draw_ports() c.plot() ```

straight_rwg3000

Straight multimode waveguide.

Parameters:

Name Type Description Default
length float

10.0.

10.0

=== "Static"

![straight_rwg3000](kwasm/gds/straight_rwg3000.png)

=== "Dynamic"

<iframe src="kwasm/viewer.html?url=gds/straight_rwg3000.gds" loading="lazy" width="100%" height="400" style="border:none"></iframe>

```python import lnoi400

c = lnoi400.cells.straight_rwg3000(length=10).copy() c.draw_ports() c.plot() ```

text_rectangular

Pixel based font, guaranteed to be manhattan, without acute angles.

Parameters:

Name Type Description Default
text str

string.

'abc'
size float

pixel size.

3
justify str

left, right or center.

'left'
layer tuple[int, int] | str | int | LayerEnum | None

for text.

'LN_RIDGE'
layers Sequence[tuple[int, int] | str | int | LayerEnum] | None

optional for duplicating the text.

None

=== "Static"

![text_rectangular](kwasm/gds/text_rectangular.png)

=== "Dynamic"

<iframe src="kwasm/viewer.html?url=gds/text_rectangular.gds" loading="lazy" width="100%" height="400" style="border:none"></iframe>

```python import lnoi400

c = lnoi400.cells.text_rectangular(text='abc', size=3, justify='left', layer='LN_RIDGE').copy() c.draw_ports() c.plot() ```

trail_cpw

A CPW transmission line with periodic T-rails on all electrodes.

Parameters:

Name Type Description Default
length float

1000.0.

1000.0
signal_width float

21.

21
gap_width float

4.

4
th float

1.5.

1.5
tl float

44.7.

44.7
tw float

7.0.

7.0
tt float

1.5.

1.5
tc float

5.0.

5.0
ground_planes_width float

180.0.

180.0
rounding_radius float

0.5.

0.5
bondpad str | Callable[..., Component] | dict[str, Any] | DKCell | partial[Component]

"CPW_pad_linear".

'CPW_pad_linear'
cross_section CrossSection | str | dict[str, Any] | Callable[..., CrossSection] | SymmetricalCrossSection | DCrossSection

xs_uni_cpw.

xs_uni_cpw

=== "Static"

![trail_cpw](kwasm/gds/trail_cpw.png)

=== "Dynamic"

<iframe src="kwasm/viewer.html?url=gds/trail_cpw.gds" loading="lazy" width="100%" height="400" style="border:none"></iframe>

```python import lnoi400

c = lnoi400.cells.trail_cpw(length=1000, signal_width=21, gap_width=4, th=1.5, tl=44.7, tw=7, tt=1.5, tc=5, ground_planes_width=180, rounding_radius=0.5, bondpad='CPW_pad_linear').copy() c.draw_ports() c.plot() ```

uni_cpw_straight

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

Parameters:

Name Type Description Default
length float

1000.0.

1000.0
cross_section CrossSection | str | dict[str, Any] | Callable[..., CrossSection] | SymmetricalCrossSection | DCrossSection

"xs_uni_cpw".

'xs_uni_cpw'
signal_width float

10.0.

10.0
gap_width float

4.0.

4.0
ground_planes_width float

250.0.

250.0
bondpad str | Callable[..., Component] | dict[str, Any] | DKCell | partial[Component]

"CPW_pad_linear".

'CPW_pad_linear'

=== "Static"

![uni_cpw_straight](kwasm/gds/uni_cpw_straight.png)

=== "Dynamic"

<iframe src="kwasm/viewer.html?url=gds/uni_cpw_straight.gds" loading="lazy" width="100%" height="400" style="border:none"></iframe>

```python import lnoi400

c = lnoi400.cells.uni_cpw_straight(length=1000, cross_section='xs_uni_cpw', signal_width=10, gap_width=4, ground_planes_width=250, bondpad='CPW_pad_linear').copy() c.draw_ports() c.plot() ```