Skip to content

Cells Si SOI 220nm e-beam (EVENT-ONLY)

bend_circular

A circular bend; the routing bend.

Parameters:

Name Type Description Default
radius float | None

radius in um (defaults to 25).

None
angle float

angle in degrees.

90.0
width float | None

width in um (defaults to the cross-section's).

None
cross_section CrossSectionSpec

cross-section spec.

'rib'

:noindex:

bend_circular

from cspdk.si220_ebeam_event import cells, PDK

PDK.activate()

c = cells.bend_circular(angle=90, cross_section='rib')
c.draw_ports()
c.plot()

bend_euler

An Euler bend whose tightest curvature is at least 25 um.

Parameters:

Name Type Description Default
radius float

effective radius in um.

radius_euler
angle float

angle in degrees.

90.0
p float

fraction of the bend that is an Euler curve.

0.5
width float | None

width in um (defaults to the cross-section's).

None
cross_section CrossSectionSpec

cross-section spec.

'rib'

:noindex:

bend_euler

from cspdk.si220_ebeam_event import cells, PDK

PDK.activate()

c = cells.bend_euler(radius=36, angle=90, p=0.5, cross_section='rib')
c.draw_ports()
c.plot()

bend_s

A Bezier S-bend whose tightest curvature is at least 25 um.

Parameters:

Name Type Description Default
size tuple[float, float]

length and offset (dx, dy) in um.

(50.0, 5.0)
cross_section CrossSectionSpec

cross-section spec.

'rib'
allow_min_radius_violation bool

accepted because gdsfactory's coupler passes it; the minimum radius is always enforced.

False

:noindex:

bend_s

from cspdk.si220_ebeam_event import cells, PDK

PDK.activate()

c = cells.bend_s(size=(50, 5), cross_section='rib', allow_min_radius_violation=False)
c.draw_ports()
c.plot()

coupler

A symmetric directional coupler.

Parameters:

Name Type Description Default
gap float

gap in um (>= 0.2).

gap
length float

coupling length in um.

20.0
dx float

length of each S-bend in um.

16.0
dy float

port pitch in um.

3.5
cross_section CrossSectionSpec

cross-section spec.

'rib'

:noindex:

coupler

from cspdk.si220_ebeam_event import cells, PDK

PDK.activate()

c = cells.coupler(gap=0.25, length=20, dx=16, dy=3.5, cross_section='rib')
c.draw_ports()
c.plot()

coupler_ring

The coupling section of a ring: a bus and two quarter-circle bends.

Parameters:

Name Type Description Default
gap float

gap in um (>= 0.2).

gap
radius float

bend radius in um (>= 25).

radius_rib
length_x float

coupling length in um.

4.0
bend ComponentSpec

90 degree bend spec.

'bend_circular'
straight ComponentSpec

straight spec.

'straight'
cross_section CrossSectionSpec

cross-section spec.

'rib'
length_extension float | None

bus extension at each end in um (default radius + 5).

None

:noindex:

coupler_ring

from cspdk.si220_ebeam_event import cells, PDK

PDK.activate()

c = cells.coupler_ring(gap=0.25, radius=25, length_x=4, bend='bend_circular', straight='straight', cross_section='rib')
c.draw_ports()
c.plot()

die

The 6 x 3 mm design area with placeholder grating I/O.

Inputs on the west face outputs on the east, at least 500 um apart. Ports o1..o{n_io} are the inputs (bottom to top); o{n_io+1}..o{2 n_io} the outputs (top to bottom), so o{i} and o{2 n_io + 1 - i} share a row.

Parameters:

Name Type Description Default
size tuple[float, float]

design area (width, height) in um.

die_size
n_io int

number of inputs (and of outputs).

8
io_pitch float

vertical pitch in um.

io_pitch
edge_margin float

distance from the floorplan edge to each grating's end in um.

100.0
grating_coupler ComponentSpec

grating coupler spec.

'grating_coupler'

:noindex:

die

from cspdk.si220_ebeam_event import cells, PDK

PDK.activate()

c = cells.die(size=(6000, 3000), n_io=8, io_pitch=250, edge_margin=100, grating_coupler='grating_coupler')
c.draw_ports()
c.plot()

grating_coupler

The CORNERSTONE student-batch rib grating, with the teeth on GRA (6/0).

Parameters:

Name Type Description Default
period float

period in um.

0.67
fill_factor float

etched fraction of the period.

0.5
n_periods int

number of teeth.

60
length_taper float

taper length in um.

350.0
width_grating float

grating width in um.

10.0
length_end float

unetched Si after the last tooth in um.

4.163
cross_section CrossSectionSpec

cross-section of the waveguide port.

'rib'

:noindex:

grating_coupler

from cspdk.si220_ebeam_event import cells, PDK

PDK.activate()

c = cells.grating_coupler(period=0.67, fill_factor=0.5, n_periods=60, length_taper=350, width_grating=10, length_end=4.163, cross_section='rib')
c.draw_ports()
c.plot()

grating_coupler_sweep

Grating loopbacks over period and fill factor, one row per pair.

info["rows"] lists the (period, fill factor) of each row, bottom up.

Parameters:

Name Type Description Default
periods tuple[float, ...]

periods in um.

(0.65, 0.67, 0.69)
fill_factors tuple[float, ...]

etched fill factors.

(0.45, 0.5, 0.55)
length float

straight between the two gratings of a row in um.

100.0
pitch float

row pitch in um.

io_pitch

:noindex:

grating_coupler_sweep

from cspdk.si220_ebeam_event import cells, PDK

PDK.activate()

c = cells.grating_coupler_sweep(periods=(0.65, 0.67, 0.69), fill_factors=(0.45, 0.5, 0.55), length=100, pitch=250)
c.draw_ports()
c.plot()

ring_single

An all-pass ring.

Parameters:

Name Type Description Default
gap float

gap in um (>= 0.2).

gap
radius float

bend radius in um (>= 25).

radius_rib
length_x float

coupling length in um.

4.0
length_y float

length of the vertical straights in um.

0.6
cross_section CrossSectionSpec

cross-section spec.

'rib'
length_extension float | None

bus extension at each end in um (default radius + 5).

None

:noindex:

ring_single

from cspdk.si220_ebeam_event import cells, PDK

PDK.activate()

c = cells.ring_single(gap=0.25, radius=25, length_x=4, length_y=0.6, cross_section='rib')
c.draw_ports()
c.plot()

straight

A straight rib waveguide.

Parameters:

Name Type Description Default
length float

length in um.

10.0
width float | None

width in um (defaults to the cross-section's).

None
cross_section CrossSectionSpec

cross-section spec.

'rib'

:noindex:

straight

from cspdk.si220_ebeam_event import cells, PDK

PDK.activate()

c = cells.straight(length=10, cross_section='rib')
c.draw_ports()
c.plot()