Skip to content

Cells Ge-on-Si

array

An array of components.

Parameters:

Name Type Description Default
component ComponentSpec

the component of which to create an array.

partial(straight, cross_section='xs_rib')
columns int

the number of components to place in the x-direction.

6
rows int

the number of components to place in the y-direction.

1
add_ports bool

add ports to the component.

True
size

Optional x, y size. Overrides columns and rows.

None
centered bool

center the array around the origin.

False
column_pitch float

the pitch between columns.

150
row_pitch float

the pitch between rows.

150

:noindex:

array

from cspdk.ge_on_si import cells, PDK

PDK.activate()

c = cells.array(columns=6, rows=1, add_ports=True, centered=False, column_pitch=150, row_pitch=150)
c.draw_ports()
c.plot()

bend_circular

A circular bend, matching the foundry reference bend geometry.

The Ge_on_Si_3800nm_TE_RIB_90_Degree_Bend reference GDS is a circular arc with a 300 um center-line radius (the xs_rib default). This is the routing bend of the PDK.

Parameters:

Name Type Description Default
radius float | None

the radius of the bend (defaults to the cross-section radius).

None
angle float

the angle of the bend (usually 90 degrees).

90.0
width float | None

the width of the waveguide forming the bend.

None
cross_section CrossSectionSpec

a cross section or its name or a function generating a cross section.

'xs_rib'

:noindex:

bend_circular

from cspdk.ge_on_si import cells, PDK

PDK.activate()

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

bend_euler

An euler bend.

Parameters:

Name Type Description Default
radius float | None

the effective radius of the bend.

None
angle float

the angle of the bend (usually 90 degrees).

90.0
p float

the fraction of the bend that's represented by a polar bend.

0.5
width float | None

the width of the waveguide forming the bend.

None
cross_section CrossSectionSpec

a cross section or its name or a function generating a cross section.

'xs_rib'

:noindex:

bend_euler

from cspdk.ge_on_si import cells, PDK

PDK.activate()

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

bend_s

An S-bend.

The default size keeps the minimum bend radius (~365 um) above the 300 um rib minimum; (80, 5) dipped to ~234 um.

Parameters:

Name Type Description Default
size tuple[float, float]

the width and height of the s-bend.

(100.0, 5.0)
cross_section CrossSectionSpec

a cross section or its name or a function generating a cross section.

'xs_rib'
allow_min_radius_violation bool

if True, allows the s-bend to have a smaller radius than the minimum radius.

True
width float | None

waveguide width; defaults to the cross-section width.

None

:noindex:

bend_s

from cspdk.ge_on_si import cells, PDK

PDK.activate()

c = cells.bend_s(size=(100, 5), cross_section='xs_rib', allow_min_radius_violation=True)
c.draw_ports()
c.plot()

die

The Ge-on-Si user cell outline, centred on the origin.

Matches Cell0_Ge_on_Si_Institution_Name in the Cornerstone GDSII template and MPW-7 sec. 5.⅕.2: an 11.47 x 15.45 mm cell outline on layer 99 with 35 um bleed (dicing) strips on layer 98 inside the east and west edges. Edge-coupler waveguides must extend fully into the bleed strips.

Parameters:

Name Type Description Default
size tuple[float, float]

cell outline (width, height) in um.

(11470.0, 15450.0)
bleed_width float

width of the east/west bleed strips in um.

35.0

:noindex:

die

from cspdk.ge_on_si import cells, PDK

PDK.activate()

c = cells.die(size=(11470, 15450), bleed_width=35)
c.draw_ports()
c.plot()

rectangle

A rectangle.

Parameters:

Name Type Description Default
layer

LAYER.FLOORPLAN.

FLOORPLAN
**kwargs

additional arguments.

{}

:noindex:

rectangle

from cspdk.ge_on_si import cells, PDK

PDK.activate()

c = cells.rectangle(layer='FLOORPLAN')
c.draw_ports()
c.plot()

straight

A straight waveguide.

Parameters:

Name Type Description Default
length float

the length of the waveguide.

10.0
cross_section CrossSectionSpec

a cross section or its name or a function generating a cross section.

'xs_rib'
kwargs

additional arguments to pass to the straight function.

{}

:noindex:

straight

from cspdk.ge_on_si import cells, PDK

PDK.activate()

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

taper

A taper.

Parameters:

Name Type Description Default
length float

the length of the taper.

10.0
width1 float

the input width of the taper.

width_rib
width2 float | None

the output width of the taper (if not given, use port).

None
port Port | None

the port (with certain width) to taper towards (if not given, use width2).

None
cross_section CrossSectionSpec

a cross section or its name or a function generating a cross section.

'xs_rib'

:noindex:

taper

from cspdk.ge_on_si import cells, PDK

PDK.activate()

c = cells.taper(length=10, width1=3.2, cross_section='xs_rib')
c.draw_ports()
c.plot()