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
@tags lnoi400-gsg
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
|
CrossSectionSpec
|
"xs_uni_cpw". |
'xs_uni_cpw'
|
impedance matching.
=== "Static"

=== "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
|
CrossSectionSpec
|
"xs_rwg1000". |
'xs_rwg1000'
|
=== "Static"

=== "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
|
CrossSectionSpec
|
"xs_rwg1000". |
'xs_rwg1000'
|
=== "Static"

=== "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
|
CrossSectionSpec
|
"xs_rwg3000". |
'xs_rwg3000'
|
=== "Static"

=== "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"

=== "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"

=== "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
|
CrossSectionSpec
|
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: |
True
|
=== "Static"

=== "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() ```
bend_s
Return S bend with bezier curve.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
size
|
Size
|
in x and y direction. |
(11.0, 1.8)
|
npoints
|
int
|
number of points. |
99
|
cross_section
|
CrossSectionSpec
|
specification (CrossSection, string, CrossSectionFactory dict). |
'xs_rwg1000'
|
allow_min_radius_violation
|
bool
|
if True allows radius to be smaller than cross_section radius. |
False
|
width
|
float | None
|
width to use. Defaults to cross_section.width. |
None
|
=== "Static"

=== "Dynamic"
<iframe src="kwasm/viewer.html?url=gds/bend_s.gds" loading="lazy" width="100%" height="400" style="border:none"></iframe>
```python import lnoi400
c = lnoi400.cells.bend_s(size=(11, 1.8), npoints=99, cross_section='xs_rwg1000', allow_min_radius_violation=False).copy() c.draw_ports() c.plot() ```
chip_frame
=== "Static"

=== "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.
@tags lnoi400-chip-edge
The physical chip edge is the outside of CHIP_EXCLUSION_ZONE (6/1), not CHIP_CONTOUR (6/0). The default facet overhang is 5 um regardless of the coupler's straight tip length. This PHIX ADK assumes polishing, so its default mirrored coupler uses 30 um of straight tip. There are 57 DC pads on each of the north and south sides.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
xsize
|
float
|
Nominal die x size in um, subject to chip_frame size snapping. |
10000.0
|
ysize
|
float
|
Nominal die y size in um, subject to chip_frame size snapping. |
5000.0
|
nfibers
|
int
|
number of fibers. |
16
|
npads
|
int | None
|
Number of DC pads per north/south side, default 57. Pass None to compute from xsize, edge_coupler_keepout, and pad_pitch. |
57
|
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
|
ComponentSpec | None
|
edge coupler component. |
functools.partial(<function double_linear_inverse_taper_mirror at 0x7f080c963060>, input_ext=30.0)
|
grating_coupler
|
ComponentSpec | None
|
grating coupler component. |
None
|
cross_section
|
CrossSectionSpec
|
waveguide cross_section. |
'xs_rwg1000'
|
pad
|
ComponentSpec
|
pad component. |
'pad'
|
pad_gsg
|
ComponentSpec
|
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
|
LayerSpec
|
layer for fiducials. |
'LN_RIDGE'
|
layer_ruler
|
LayerSpec
|
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
|
Outward facet offset from layer 6/1, in um. Keep at 5 for the standard singulation geometry, including polishing. |
5.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
|
Float2
|
offset for the text label. |
(-40, 20)
|
text
|
ComponentSpec | None
|
text component. |
'text_rectangular'
|
xoffset_dc_pads
|
float
|
x offset for dc pads. |
-100
|
xoffset_rf_pads
|
float
|
RF pad x offset from the left chip contour, in um. |
50.0
|
exclusion_zone_width
|
float
|
Border between layer 6/0 and physical edge 6/1, in um. Pads retain their offsets relative to layer 6/0. |
50.0
|
=== "Static"

=== "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=57, npads_rf=6, fiber_pitch=127, pad_pitch=150, pad_pitch_gsg=720, 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=5, with_right_fiber_coupler=True, with_left_fiber_coupler=False, text_offset=(-40, 20), text='text_rectangular', xoffset_dc_pads=-100, xoffset_rf_pads=50, exclusion_zone_width=50).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
|
CrossSectionSpec
|
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"

=== "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 from a wire waveguide at the facet to a rib waveguide.
@tags lnoi400-chip-edge
When placed at a chip edge, use input_ext=10 for singulation without polishing or approximately 30 for polishing. Place the tip 5 um outside layer 6/1 independently of input_ext; layer 6/0 does not define the facet.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
cross_section_start
|
CrossSectionSpec
|
"xs_swg250". |
'xs_swg250'
|
cross_section_end
|
CrossSectionSpec
|
"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
|
Constant-width straight tip length in um. The primitive default is zero; chip-edge singulation requires at least 10 um. |
0.0
|
=== "Static"

=== "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.
@tags lnoi400-chip-edge
The default 10 um straight tip supports singulation without polishing. Use approximately 30 um when polishing is planned, keeping the tip 5 um outside layer 6/1. A longer unpolished tip can increase insertion loss through interaction of its large optical mode with silicon.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
cross_section_start
|
CrossSectionSpec
|
starting cross section. |
'xs_swg250'
|
cross_section_end
|
CrossSectionSpec
|
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
|
Total constant-width tip length in um, including the 5 um outside the physical chip edge and at least 5 um inside it. |
10.0
|
=== "Static"

=== "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=10).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
|
ComponentSpec
|
uni_cpw_straight. |
uni_cpw_straight
|
draw_cpw
|
bool
|
True. |
True
|
within the gap of a CPW transmission line.
=== "Static"

=== "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"

=== "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
|
CrossSectionSpec
|
"xs_rwg1000". |
'xs_rwg1000'
|
waveguide_length
|
float
|
10.0. |
10.0
|
=== "Static"

=== "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"

=== "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"

=== "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
|
CrossSectionSpec
|
"xs_rwg1000". |
'xs_rwg1000'
|
=== "Static"

=== "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
|
CrossSectionSpec
|
"xs_rwg1000". |
'xs_rwg1000'
|
=== "Static"

=== "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
|
CrossSectionSpec
|
"xs_rwg1000". |
'xs_rwg1000'
|
=== "Static"

=== "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.
@tags lnoi400-gsg
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
|
ComponentSpec
|
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"

=== "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"

=== "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() ```
mzm_with_pads
=== "Static"

=== "Dynamic"
<iframe src="kwasm/viewer.html?url=gds/mzm_with_pads.gds" loading="lazy" width="100%" height="400" style="border:none"></iframe>
```python import lnoi400
c = lnoi400.cells.mzm_with_pads(mzm='mzm_unbalanced_high_speed', pad='pad_gsg', taper_length=50).copy() c.draw_ports() c.plot() ```
pad
Returns rectangular pad with ports.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
size
|
Size
|
x, y size. |
(90, 90)
|
port_orientation
|
AngleInDegrees | None
|
in degrees for the center port. |
0
|
port_orientations
|
Ints | None
|
list of port_orientations to add. None does not add ports. |
(180, 90, 0, -90)
|
=== "Static"

=== "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"

=== "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
|
CrossSectionSpec
|
"xs_rwg1000". |
'xs_rwg1000'
|
=== "Static"

=== "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"

=== "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"

=== "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
|
LayerSpec | None
|
for text. |
'LN_RIDGE'
|
layers
|
LayerSpecs | None
|
optional for duplicating the text. |
None
|
=== "Static"

=== "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.
@tags lnoi400-gsg
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
|
ComponentSpec
|
"CPW_pad_linear". |
'CPW_pad_linear'
|
cross_section
|
CrossSectionSpec
|
xs_uni_cpw. |
xs_uni_cpw
|
=== "Static"

=== "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.
@tags lnoi400-gsg
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
length
|
float
|
1000.0. |
1000.0
|
cross_section
|
CrossSectionSpec
|
"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
|
ComponentSpec
|
"CPW_pad_linear". |
'CPW_pad_linear'
|
=== "Static"

=== "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() ```