Here are the components available in the PDK
Cells#
CuPillarPad#
- ihp.cells.CuPillarPad()[source]#
Returns CuPillarPad fixed cell.
import ihp c = ihp.cells.CuPillarPad() c.plot()
- Return type:
Component
from ihp import PDK, cells
PDK.activate()
c = cells.CuPillarPad().copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)

L2_IND_LVS#
- ihp.cells.L2_IND_LVS()[source]#
Returns L2_IND_LVS fixed cell.
import ihp c = ihp.cells.L2_IND_LVS() c.plot()
(
Source code
,png
,hires.png
,pdf
)- Return type:
Component
from ihp import PDK, cells
PDK.activate()
c = cells.L2_IND_LVS().copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)

M1_GatPoly_CDNS_675179387644#
- ihp.cells.M1_GatPoly_CDNS_675179387644()[source]#
Returns M1_GatPoly_CDNS_675179387644 fixed cell.
import ihp c = ihp.cells.M1_GatPoly_CDNS_675179387644() c.plot()
(
Source code
,png
,hires.png
,pdf
)- Return type:
Component
from ihp import PDK, cells
PDK.activate()
c = cells.M1_GatPoly_CDNS_675179387644().copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)

M2_M1_CDNS_675179387643#
- ihp.cells.M2_M1_CDNS_675179387643()[source]#
Returns M2_M1_CDNS_675179387643 fixed cell.
import ihp c = ihp.cells.M2_M1_CDNS_675179387643() c.plot()
(
Source code
,png
,hires.png
,pdf
)- Return type:
Component
from ihp import PDK, cells
PDK.activate()
c = cells.M2_M1_CDNS_675179387643().copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)

M3_M2_CDNS_675179387642#
- ihp.cells.M3_M2_CDNS_675179387642()[source]#
Returns M3_M2_CDNS_675179387642 fixed cell.
import ihp c = ihp.cells.M3_M2_CDNS_675179387642() c.plot()
(
Source code
,png
,hires.png
,pdf
)- Return type:
Component
from ihp import PDK, cells
PDK.activate()
c = cells.M3_M2_CDNS_675179387642().copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)

M4_M3_CDNS_675179387641#
- ihp.cells.M4_M3_CDNS_675179387641()[source]#
Returns M4_M3_CDNS_675179387641 fixed cell.
import ihp c = ihp.cells.M4_M3_CDNS_675179387641() c.plot()
(
Source code
,png
,hires.png
,pdf
)- Return type:
Component
from ihp import PDK, cells
PDK.activate()
c = cells.M4_M3_CDNS_675179387641().copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)

M5_M4_CDNS_675179387640#
- ihp.cells.M5_M4_CDNS_675179387640()[source]#
Returns M5_M4_CDNS_675179387640 fixed cell.
import ihp c = ihp.cells.M5_M4_CDNS_675179387640() c.plot()
(
Source code
,png
,hires.png
,pdf
)- Return type:
Component
from ihp import PDK, cells
PDK.activate()
c = cells.M5_M4_CDNS_675179387640().copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)

NoFillerStack#
- ihp.cells.NoFillerStack()[source]#
Returns NoFillerStack fixed cell.
import ihp c = ihp.cells.NoFillerStack() c.plot()
(
Source code
,png
,hires.png
,pdf
)- Return type:
Component
from ihp import PDK, cells
PDK.activate()
c = cells.NoFillerStack().copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)

SVaricap#
- ihp.cells.SVaricap()[source]#
Returns SVaricap fixed cell.
import ihp c = ihp.cells.SVaricap() c.plot()
(
Source code
,png
,hires.png
,pdf
)- Return type:
Component
from ihp import PDK, cells
PDK.activate()
c = cells.SVaricap().copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)

TM1_M5_CDNS_675179387645#
- ihp.cells.TM1_M5_CDNS_675179387645()[source]#
Returns TM1_M5_CDNS_675179387645 fixed cell.
import ihp c = ihp.cells.TM1_M5_CDNS_675179387645() c.plot()
(
Source code
,png
,hires.png
,pdf
)- Return type:
Component
from ihp import PDK, cells
PDK.activate()
c = cells.TM1_M5_CDNS_675179387645().copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)

TM2_TM1_CDNS_675179387646#
- ihp.cells.TM2_TM1_CDNS_675179387646()[source]#
Returns TM2_TM1_CDNS_675179387646 fixed cell.
import ihp c = ihp.cells.TM2_TM1_CDNS_675179387646() c.plot()
(
Source code
,png
,hires.png
,pdf
)- Return type:
Component
from ihp import PDK, cells
PDK.activate()
c = cells.TM2_TM1_CDNS_675179387646().copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)

TSV#
- ihp.cells.TSV()[source]#
Returns TSV fixed cell.
import ihp c = ihp.cells.TSV() c.plot()
(
Source code
,png
,hires.png
,pdf
)- Return type:
Component
from ihp import PDK, cells
PDK.activate()
c = cells.TSV().copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)

ViaStack#
- ihp.cells.ViaStack()[source]#
Returns ViaStack fixed cell.
import ihp c = ihp.cells.ViaStack() c.plot()
(
Source code
,png
,hires.png
,pdf
)- Return type:
Component
from ihp import PDK, cells
PDK.activate()
c = cells.ViaStack().copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)

add_pads_top#
- ihp.cells.add_pads_top(component='straight', port_names=None, component_name=None, cross_section='metal_routing', pad_port_name='e1', pad='CuPillarPad', bend='wire_corner', straight_separation=15.0, pad_pitch=100.0, taper=None, port_type='electrical', allow_width_mismatch=True, fanout_length=80, route_width=0, **kwargs)[source]#
Returns new component with ports connected top pads.
- Parameters:
component (str | Callable[[...], Component] | dict[str, Any] | DKCell | partial[Component]) – component spec to connect to.
port_names (Sequence[str] | None) – list of port names to connect to pads.
component_name (str | None) – optional for the label.
cross_section (CrossSection | str | dict[str, Any] | Callable[[...], CrossSection] | SymmetricalCrossSection | DCrossSection) – cross_section function.
pad_port_name (str) – pad port name.
pad (str | Callable[[...], Component] | dict[str, Any] | DKCell | partial[Component]) – pad function.
bend (str | Callable[[...], Component] | dict[str, Any] | DKCell | partial[Component]) – bend function.
straight_separation (float) – from edge to edge.
pad_pitch (float) – spacing between pads.
taper (str | Callable[[...], Component] | dict[str, Any] | DKCell | partial[Component] | None) – taper function.
port_type (str) – port type.
allow_width_mismatch (bool) – if True, allows width mismatch.
fanout_length (float | None) – length of the fanout.
route_width (float | list[float] | None) – width of the route.
kwargs – additional arguments.
- Return type:
Component
import gdsfactory as gf c = gf.c.nxn( xsize=600, ysize=200, north=2, south=3, wg_width=10, layer="M3", port_type="electrical", ) cc = gf.routing.add_pads_top(component=c, port_names=("e1", "e4"), fanout_length=50) cc.plot()
from ihp import PDK, cells
PDK.activate()
c = cells.add_pads_top(component='straight', cross_section='metal_routing', pad_port_name='e1', pad='CuPillarPad', bend='wire_corner', straight_separation=15.0, pad_pitch=100.0, port_type='electrical', allow_width_mismatch=True, fanout_length=80, route_width=0).copy()
c.draw_ports()
c.plot()
bend_euler#
- ihp.cells.bend_euler(radius=None, angle=90, p=0.5, width=None, cross_section='strip', allow_min_radius_violation=False)[source]#
Regular degree euler bend.
- Parameters:
radius (float | None) – in um. Defaults to cross_section_radius.
angle (float) – total angle of the curve.
p (float) – Proportion of the curve that is an Euler curve.
width (float | None) – width to use. Defaults to cross_section.width.
cross_section (CrossSection | str | dict[str, Any] | Callable[[...], CrossSection] | SymmetricalCrossSection | DCrossSection) – specification (CrossSection, string, CrossSectionFactory dict).
allow_min_radius_violation (bool) – if True allows radius to be smaller than cross_section radius.
- Return type:
Component
from ihp import PDK, cells
PDK.activate()
c = cells.bend_euler(angle=90, p=0.5, cross_section='strip', allow_min_radius_violation=False).copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)

bend_metal#
- ihp.cells.bend_metal(radius=None, angle=90, width=None, cross_section='metal_routing')[source]#
Regular degree euler bend.
- Parameters:
radius (float | None)
angle (float)
width (float | None)
cross_section (CrossSection | str | dict[str, Any] | Callable[[...], CrossSection] | SymmetricalCrossSection | DCrossSection)
- Return type:
Component
from ihp import PDK, cells
PDK.activate()
c = cells.bend_metal(angle=90, cross_section='metal_routing').copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)

bend_s#
- ihp.cells.bend_s(size=(11, 1.8), cross_section='strip', width=None, allow_min_radius_violation=False)[source]#
Return S bend with bezier curve.
stores min_bend_radius property in self.info[‘min_bend_radius’] min_bend_radius depends on height and length
- Parameters:
size (tuple[float, float]) – in x and y direction.
cross_section (CrossSection | str | dict[str, Any] | Callable[[...], CrossSection] | SymmetricalCrossSection | DCrossSection) – spec.
width (float | None) – width of the waveguide. If None, it will use the width of the cross_section.
allow_min_radius_violation (bool) – allows min radius violations.
- Return type:
Component
from ihp import PDK, cells
PDK.activate()
c = cells.bend_s(size=(11, 1.8), cross_section='strip', allow_min_radius_violation=False).copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)

bend_s_metal#
- ihp.cells.bend_s_metal(size=(11, 1.8), cross_section='metal_routing', width=None, allow_min_radius_violation=True)[source]#
Return S bend with bezier curve.
stores min_bend_radius property in self.info[‘min_bend_radius’] min_bend_radius depends on height and length
- Parameters:
size (tuple[float, float]) – in x and y direction.
cross_section (CrossSection | str | dict[str, Any] | Callable[[...], CrossSection] | SymmetricalCrossSection | DCrossSection) – spec.
width (float | None) – width of the waveguide. If None, it will use the width of the cross_section.
allow_min_radius_violation (bool) – allows min radius violations.
- Return type:
Component
from ihp import PDK, cells
PDK.activate()
c = cells.bend_s_metal(size=(11, 1.8), cross_section='metal_routing', allow_min_radius_violation=True).copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)

bondpad#
- ihp.cells.bondpad()[source]#
Returns bondpad fixed cell.
import ihp c = ihp.cells.bondpad() c.plot()
(
Source code
,png
,hires.png
,pdf
)- Return type:
Component
from ihp import PDK, cells
PDK.activate()
c = cells.bondpad().copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)

bondpad_array#
- ihp.cells.bondpad_array(n_pads=4, pad_pitch=100.0, pad_diameter=68.0, shape='octagon', stack_metals=True)[source]#
Create an array of bondpads.
- Parameters:
n_pads (int) – Number of bondpads.
pad_pitch (float) – Pitch between bondpad centers in micrometers.
pad_diameter (float) – Diameter of each bondpad in micrometers.
shape (Literal['octagon', 'square', 'circle']) – Shape of the bondpads.
stack_metals (bool) – Stack all metal layers.
- Returns:
Component with bondpad array.
- Return type:
Component
from ihp import PDK, cells
PDK.activate()
c = cells.bondpad_array(n_pads=4, pad_pitch=100.0, pad_diameter=68.0, shape='octagon', stack_metals=True).copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)

chipText#
- ihp.cells.chipText()[source]#
Returns chipText fixed cell.
import ihp c = ihp.cells.chipText() c.plot()
(
Source code
,png
,hires.png
,pdf
)- Return type:
Component
from ihp import PDK, cells
PDK.activate()
c = cells.chipText().copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)

cmim#
- ihp.cells.cmim()[source]#
Returns cmim fixed cell.
import ihp c = ihp.cells.cmim() c.plot()
(
Source code
,png
,hires.png
,pdf
)- Return type:
Component
from ihp import PDK, cells
PDK.activate()
c = cells.cmim().copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)

colors_and_stipples#
- ihp.cells.colors_and_stipples()[source]#
Returns colors_and_stipples fixed cell.
import ihp c = ihp.cells.colors_and_stipples() c.plot()
(
Source code
,png
,hires.png
,pdf
)- Return type:
Component
from ihp import PDK, cells
PDK.activate()
c = cells.colors_and_stipples().copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)

dantenna#
- ihp.cells.dantenna()[source]#
Returns dantenna fixed cell.
import ihp c = ihp.cells.dantenna() c.plot()
(
Source code
,png
,hires.png
,pdf
)- Return type:
Component
from ihp import PDK, cells
PDK.activate()
c = cells.dantenna().copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)

diffstbprobe#
- ihp.cells.diffstbprobe()[source]#
Returns diffstbprobe fixed cell.
import ihp c = ihp.cells.diffstbprobe() c.plot()
(
Source code
,png
,hires.png
,pdf
)- Return type:
Component
from ihp import PDK, cells
PDK.activate()
c = cells.diffstbprobe().copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)

diodevdd_2kv#
- ihp.cells.diodevdd_2kv()[source]#
Returns diodevdd_2kv fixed cell.
import ihp c = ihp.cells.diodevdd_2kv() c.plot()
(
Source code
,png
,hires.png
,pdf
)- Return type:
Component
from ihp import PDK, cells
PDK.activate()
c = cells.diodevdd_2kv().copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)

diodevdd_4kv#
- ihp.cells.diodevdd_4kv()[source]#
Returns diodevdd_4kv fixed cell.
import ihp c = ihp.cells.diodevdd_4kv() c.plot()
(
Source code
,png
,hires.png
,pdf
)- Return type:
Component
from ihp import PDK, cells
PDK.activate()
c = cells.diodevdd_4kv().copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)

diodevss_2kv#
- ihp.cells.diodevss_2kv()[source]#
Returns diodevss_2kv fixed cell.
import ihp c = ihp.cells.diodevss_2kv() c.plot()
(
Source code
,png
,hires.png
,pdf
)- Return type:
Component
from ihp import PDK, cells
PDK.activate()
c = cells.diodevss_2kv().copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)

diodevss_4kv#
- ihp.cells.diodevss_4kv()[source]#
Returns diodevss_4kv fixed cell.
import ihp c = ihp.cells.diodevss_4kv() c.plot()
(
Source code
,png
,hires.png
,pdf
)- Return type:
Component
from ihp import PDK, cells
PDK.activate()
c = cells.diodevss_4kv().copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)

dpantenna#
- ihp.cells.dpantenna()[source]#
Returns dpantenna fixed cell.
import ihp c = ihp.cells.dpantenna() c.plot()
(
Source code
,png
,hires.png
,pdf
)- Return type:
Component
from ihp import PDK, cells
PDK.activate()
c = cells.dpantenna().copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)

dummy1#
- ihp.cells.dummy1()[source]#
Returns dummy1 fixed cell.
import ihp c = ihp.cells.dummy1() c.plot()
(
Source code
,png
,hires.png
,pdf
)- Return type:
Component
from ihp import PDK, cells
PDK.activate()
c = cells.dummy1().copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)

esd_nmos#
- ihp.cells.esd_nmos(width=50.0, length=0.5, nf=10, model='esd_nmos')[source]#
Create an ESD protection NMOS device.
- Parameters:
width (float) – Total width of the ESD device in micrometers.
length (float) – Gate length in micrometers.
nf (int) – Number of fingers.
model (str) – Device model name.
- Returns:
Component with ESD NMOS layout.
- Return type:
Component
from ihp import PDK, cells
PDK.activate()
c = cells.esd_nmos(width=50.0, length=0.5, nf=10, model='esd_nmos').copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)

import_gds#
- ihp.cells.import_gds(gdspath, cellname=None, *, post_process=(functools.partial(<function add_ports_from_markers_center>, inside=True, pin_layer=(8, 2), port_layer=(8, 0)), functools.partial(<function add_ports_from_markers_center>, inside=True, pin_layer=(10, 2), port_layer=(10, 0))), rename_duplicated_cells=False)#
Reads a GDS file and returns a Component.
- Parameters:
gdspath (str | Path) – path to GDS file.
cellname (str | None) – name of the cell to return. Defaults to top cell.
post_process (PostProcesses | None) – function to run after reading the GDS file.
rename_duplicated_cells (bool) – if True, rename duplicated cells.
- Return type:
Component
from ihp import PDK, cells
PDK.activate()
c = cells.import_gds(post_process=(functools.partial(<function add_ports_from_markers_center at 0x7f0e0c1d11c0>, inside=True, pin_layer=(8, 2), port_layer=(8, 0)), functools.partial(<function add_ports_from_markers_center at 0x7f0e0c1d11c0>, inside=True, pin_layer=(10, 2), port_layer=(10, 0))), rename_duplicated_cells=False).copy()
c.draw_ports()
c.plot()
inductor2#
- ihp.cells.inductor2(width=2.0, space=2.1, diameter=15.48, resistance=0.5777, inductance=3.3303e-11, turns=1, block_qrc=True, substrate_etch=False)[source]#
Create a 2-turn inductor.
- Parameters:
width (float) – Width of the inductor trace in micrometers.
space (float) – Space between turns in micrometers.
diameter (float) – Inner diameter in micrometers.
resistance (float) – Resistance in ohms.
inductance (float) – Inductance in henries.
turns (int) – Number of turns (default 1 for inductor2).
block_qrc (bool) – Block QRC layer.
substrate_etch (bool) – Enable substrate etching.
- Returns:
Component with inductor layout.
- Return type:
Component
from ihp import PDK, cells
PDK.activate()
c = cells.inductor2(width=2.0, space=2.1, diameter=15.48, resistance=0.5777, inductance=3.3303e-11, turns=1, block_qrc=True, substrate_etch=False).copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)

inductor3#
- ihp.cells.inductor3(width=2.0, space=2.1, diameter=24.68, resistance=1.386, inductance=2.215e-10, turns=2, block_qrc=True, substrate_etch=False)[source]#
Create a 3-turn inductor.
- Parameters:
width (float) – Width of the inductor trace in micrometers.
space (float) – Space between turns in micrometers.
diameter (float) – Inner diameter in micrometers.
resistance (float) – Resistance in ohms.
inductance (float) – Inductance in henries.
turns (int) – Number of turns (default 2 for inductor3).
block_qrc (bool) – Block QRC layer.
substrate_etch (bool) – Enable substrate etching.
- Returns:
Component with inductor layout.
- Return type:
Component
from ihp import PDK, cells
PDK.activate()
c = cells.inductor3(width=2.0, space=2.1, diameter=24.68, resistance=1.386, inductance=2.215e-10, turns=2, block_qrc=True, substrate_etch=False).copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)

iprobe#
- ihp.cells.iprobe()[source]#
Returns iprobe fixed cell.
import ihp c = ihp.cells.iprobe() c.plot()
(
Source code
,png
,hires.png
,pdf
)- Return type:
Component
from ihp import PDK, cells
PDK.activate()
c = cells.iprobe().copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)

isolbox#
- ihp.cells.isolbox()[source]#
Returns isolbox fixed cell.
import ihp c = ihp.cells.isolbox() c.plot()
(
Source code
,png
,hires.png
,pdf
)- Return type:
Component
from ihp import PDK, cells
PDK.activate()
c = cells.isolbox().copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)

lvsres#
- ihp.cells.lvsres()[source]#
Returns lvsres fixed cell.
import ihp c = ihp.cells.lvsres() c.plot()
(
Source code
,png
,hires.png
,pdf
)- Return type:
Component
from ihp import PDK, cells
PDK.activate()
c = cells.lvsres().copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)

nmos#
- ihp.cells.nmos(width=1.0, length=0.13, nf=1, m=1, model='sg13_lv_nmos')[source]#
Create an NMOS transistor.
- Parameters:
width (float) – Total width of the transistor in micrometers.
length (float) – Gate length in micrometers.
nf (int) – Number of fingers.
m (int) – Multiplier (number of parallel devices).
model (str) – Device model name.
- Returns:
Component with NMOS transistor layout.
- Return type:
Component
from ihp import PDK, cells
PDK.activate()
c = cells.nmos(width=1.0, length=0.13, nf=1, m=1, model='sg13_lv_nmos').copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)

nmosHV#
- ihp.cells.nmosHV()[source]#
Returns nmosHV fixed cell.
import ihp c = ihp.cells.nmosHV() c.plot()
(
Source code
,png
,hires.png
,pdf
)- Return type:
Component
from ihp import PDK, cells
PDK.activate()
c = cells.nmosHV().copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)

nmos_hv#
- ihp.cells.nmos_hv(width=1.0, length=0.45, nf=1, m=1, model='sg13_hv_nmos')[source]#
Create a high-voltage NMOS transistor.
- Parameters:
width (float) – Total width of the transistor in micrometers.
length (float) – Gate length in micrometers.
nf (int) – Number of fingers.
m (int) – Multiplier (number of parallel devices).
model (str) – Device model name.
- Returns:
Component with HV NMOS transistor layout.
- Return type:
Component
from ihp import PDK, cells
PDK.activate()
c = cells.nmos_hv(width=1.0, length=0.45, nf=1, m=1, model='sg13_hv_nmos').copy()
c.draw_ports()
c.plot()
nmoscl_2#
- ihp.cells.nmoscl_2()[source]#
Returns nmoscl_2 fixed cell.
import ihp c = ihp.cells.nmoscl_2() c.plot()
(
Source code
,png
,hires.png
,pdf
)- Return type:
Component
from ihp import PDK, cells
PDK.activate()
c = cells.nmoscl_2().copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)

nmoscl_4#
- ihp.cells.nmoscl_4()[source]#
Returns nmoscl_4 fixed cell.
import ihp c = ihp.cells.nmoscl_4() c.plot()
(
Source code
,png
,hires.png
,pdf
)- Return type:
Component
from ihp import PDK, cells
PDK.activate()
c = cells.nmoscl_4().copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)

npn13G2#
- ihp.cells.npn13G2()[source]#
Returns npn13G2 fixed cell.
import ihp c = ihp.cells.npn13G2() c.plot()
(
Source code
,png
,hires.png
,pdf
)- Return type:
Component
from ihp import PDK, cells
PDK.activate()
c = cells.npn13G2().copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)

npn13G2L#
- ihp.cells.npn13G2L()[source]#
Returns npn13G2L fixed cell.
import ihp c = ihp.cells.npn13G2L() c.plot()
(
Source code
,png
,hires.png
,pdf
)- Return type:
Component
from ihp import PDK, cells
PDK.activate()
c = cells.npn13G2L().copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)

npn13G2V#
- ihp.cells.npn13G2V()[source]#
Returns npn13G2V fixed cell.
import ihp c = ihp.cells.npn13G2V() c.plot()
(
Source code
,png
,hires.png
,pdf
)- Return type:
Component
from ihp import PDK, cells
PDK.activate()
c = cells.npn13G2V().copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)

npn13G2_base_CDNS_675179387640#
- ihp.cells.npn13G2_base_CDNS_675179387640()[source]#
Returns npn13G2_base_CDNS_675179387640 fixed cell.
import ihp c = ihp.cells.npn13G2_base_CDNS_675179387640() c.plot()
(
Source code
,png
,hires.png
,pdf
)- Return type:
Component
from ihp import PDK, cells
PDK.activate()
c = cells.npn13G2_base_CDNS_675179387640().copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)

ntap#
- ihp.cells.ntap()[source]#
Returns ntap fixed cell.
import ihp c = ihp.cells.ntap() c.plot()
(
Source code
,png
,hires.png
,pdf
)- Return type:
Component
from ihp import PDK, cells
PDK.activate()
c = cells.ntap().copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)

ntap1#
- ihp.cells.ntap1(width=1.0, length=1.0, rows=1, cols=1)[source]#
Create an N+ substrate tap.
- Parameters:
width (float) – Width of the tap in micrometers.
length (float) – Length of the tap in micrometers.
rows (int) – Number of contact rows.
cols (int) – Number of contact columns.
- Returns:
Component with N+ tap layout.
- Return type:
Component
from ihp import PDK, cells
PDK.activate()
c = cells.ntap1(width=1.0, length=1.0, rows=1, cols=1).copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)

pack_doe#
- ihp.cells.pack_doe(doe, settings, do_permutations=False, function=None, **kwargs)[source]#
Packs a component DOE (Design of Experiment) using pack.
- Parameters:
doe (str | Callable[[...], Component] | dict[str, Any] | DKCell | partial[Component]) – function to return Components.
settings (dict[str, tuple[Any, ...]]) – component settings.
do_permutations (bool) – for each setting.
function (str | Callable[[...], Component] | dict[str, Any] | None) – to apply (add padding, grating couplers).
kwargs – for pack.
- Keyword Arguments:
spacing – Minimum distance between adjacent shapes.
aspect_ratio – (width, height) ratio of the rectangular bin.
max_size – Limits the size into which the shapes will be packed.
sort_by_area – Pre-sorts the shapes by area.
density – Values closer to 1 pack tighter but require more computation.
precision – Desired precision for rounding vertex coordinates.
text – Optional function to add text labels.
text_prefix – for labels. For example. ‘A’ for ‘A1’, ‘A2’…
text_offsets – relative to component size info anchor. Defaults to center.
text_anchors – relative to component (ce cw nc ne nw sc se sw center cc).
name_prefix – for each packed component (avoids the Unnamed cells warning). Note that the suffix contains a uuid so the name will not be deterministic.
rotation – for each component in degrees.
h_mirror – horizontal mirror in y axis (x, 1) (1, 0). This is the most common.
v_mirror – vertical mirror using x axis (1, y) (0, y).
- Return type:
Component
from ihp import PDK, cells
PDK.activate()
c = cells.pack_doe(do_permutations=False).copy()
c.draw_ports()
c.plot()
pack_doe_grid#
- ihp.cells.pack_doe_grid(doe, settings, do_permutations=False, function=None, with_text=False, **kwargs)[source]#
Packs a component DOE (Design of Experiment) using grid.
- Parameters:
doe (str | Callable[[...], Component] | dict[str, Any] | DKCell | partial[Component]) – function to return Components.
settings (dict[str, tuple[Any, ...]]) – component settings.
do_permutations (bool) – for each setting.
function (str | Callable[[...], Component] | dict[str, Any] | None) – to apply to component (add padding, grating couplers).
with_text (bool) – includes text label.
kwargs – for grid.
- Keyword Arguments:
spacing – between adjacent elements on the grid, can be a tuple for different distances in height and width.
separation – If True, guarantees elements are separated with fixed spacing if False, elements are spaced evenly along a grid.
shape – x, y shape of the grid (see np.reshape). If no shape and the list is 1D, if np.reshape were run with (1, -1).
align_x – {‘x’, ‘xmin’, ‘xmax’} for x (column) alignment along.
align_y – {‘y’, ‘ymin’, ‘ymax’} for y (row) alignment along.
edge_x – {‘x’, ‘xmin’, ‘xmax’} for x (column) (ignored if separation = True).
edge_y – {‘y’, ‘ymin’, ‘ymax’} for y (row) (ignored if separation = True).
rotation – for each component in degrees.
h_mirror – horizontal mirror y axis (x, 1) (1, 0). most common mirror.
v_mirror – vertical mirror using x axis (1, y) (0, y).
- Return type:
Component
from ihp import PDK, cells
PDK.activate()
c = cells.pack_doe_grid(do_permutations=False, with_text=False).copy()
c.draw_ports()
c.plot()
pmos#
- ihp.cells.pmos(width=1.0, length=0.13, nf=1, m=1, model='sg13_lv_pmos')[source]#
Create a PMOS transistor.
- Parameters:
width (float) – Total width of the transistor in micrometers.
length (float) – Gate length in micrometers.
nf (int) – Number of fingers.
m (int) – Multiplier (number of parallel devices).
model (str) – Device model name.
- Returns:
Component with PMOS transistor layout.
- Return type:
Component
from ihp import PDK, cells
PDK.activate()
c = cells.pmos(width=1.0, length=0.13, nf=1, m=1, model='sg13_lv_pmos').copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)

pmosHV#
- ihp.cells.pmosHV()[source]#
Returns pmosHV fixed cell.
import ihp c = ihp.cells.pmosHV() c.plot()
(
Source code
,png
,hires.png
,pdf
)- Return type:
Component
from ihp import PDK, cells
PDK.activate()
c = cells.pmosHV().copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)

pmos_hv#
- ihp.cells.pmos_hv(width=1.0, length=0.45, nf=1, m=1, model='sg13_hv_pmos')[source]#
Create a high-voltage PMOS transistor.
- Parameters:
width (float) – Total width of the transistor in micrometers.
length (float) – Gate length in micrometers.
nf (int) – Number of fingers.
m (int) – Multiplier (number of parallel devices).
model (str) – Device model name.
- Returns:
Component with HV PMOS transistor layout.
- Return type:
Component
from ihp import PDK, cells
PDK.activate()
c = cells.pmos_hv(width=1.0, length=0.45, nf=1, m=1, model='sg13_hv_pmos').copy()
c.draw_ports()
c.plot()
pnpMPA#
- ihp.cells.pnpMPA()[source]#
Returns pnpMPA fixed cell.
import ihp c = ihp.cells.pnpMPA() c.plot()
(
Source code
,png
,hires.png
,pdf
)- Return type:
Component
from ihp import PDK, cells
PDK.activate()
c = cells.pnpMPA().copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)

ptap#
- ihp.cells.ptap()[source]#
Returns ptap fixed cell.
import ihp c = ihp.cells.ptap() c.plot()
(
Source code
,png
,hires.png
,pdf
)- Return type:
Component
from ihp import PDK, cells
PDK.activate()
c = cells.ptap().copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)

ptap1#
- ihp.cells.ptap1(width=1.0, length=1.0, rows=1, cols=1)[source]#
Create a P+ substrate tap.
- Parameters:
width (float) – Width of the tap in micrometers.
length (float) – Length of the tap in micrometers.
rows (int) – Number of contact rows.
cols (int) – Number of contact columns.
- Returns:
Component with P+ tap layout.
- Return type:
Component
from ihp import PDK, cells
PDK.activate()
c = cells.ptap1(width=1.0, length=1.0, rows=1, cols=1).copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)

rfcmim#
- ihp.cells.rfcmim()[source]#
Returns rfcmim fixed cell.
import ihp c = ihp.cells.rfcmim() c.plot()
(
Source code
,png
,hires.png
,pdf
)- Return type:
Component
from ihp import PDK, cells
PDK.activate()
c = cells.rfcmim().copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)

rfnmos#
- ihp.cells.rfnmos(width=2.0, length=0.13, nf=2, m=1, model='sg13_lv_rfnmos')[source]#
Create an RF NMOS transistor with optimized layout.
- Parameters:
width (float) – Total width of the transistor in micrometers.
length (float) – Gate length in micrometers.
nf (int) – Number of fingers (should be even for RF).
m (int) – Multiplier (number of parallel devices).
model (str) – Device model name.
- Returns:
Component with RF NMOS transistor layout.
- Return type:
Component
from ihp import PDK, cells
PDK.activate()
c = cells.rfnmos(width=2.0, length=0.13, nf=2, m=1, model='sg13_lv_rfnmos').copy()
c.draw_ports()
c.plot()
rfnmosHV#
- ihp.cells.rfnmosHV()[source]#
Returns rfnmosHV fixed cell.
import ihp c = ihp.cells.rfnmosHV() c.plot()
(
Source code
,png
,hires.png
,pdf
)- Return type:
Component
from ihp import PDK, cells
PDK.activate()
c = cells.rfnmosHV().copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)

rfpmos#
- ihp.cells.rfpmos(width=2.0, length=0.13, nf=2, m=1, model='sg13_lv_rfpmos')[source]#
Create an RF PMOS transistor with optimized layout.
- Parameters:
width (float) – Total width of the transistor in micrometers.
length (float) – Gate length in micrometers.
nf (int) – Number of fingers (should be even for RF).
m (int) – Multiplier (number of parallel devices).
model (str) – Device model name.
- Returns:
Component with RF PMOS transistor layout.
- Return type:
Component
from ihp import PDK, cells
PDK.activate()
c = cells.rfpmos(width=2.0, length=0.13, nf=2, m=1, model='sg13_lv_rfpmos').copy()
c.draw_ports()
c.plot()
rfpmosHV#
- ihp.cells.rfpmosHV()[source]#
Returns rfpmosHV fixed cell.
import ihp c = ihp.cells.rfpmosHV() c.plot()
(
Source code
,png
,hires.png
,pdf
)- Return type:
Component
from ihp import PDK, cells
PDK.activate()
c = cells.rfpmosHV().copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)

rhigh#
- ihp.cells.rhigh(width=1.4, length=20.0, resistance=None, model='rhigh')[source]#
Create a high-resistance polysilicon resistor.
- Parameters:
width (float) – Width of the resistor in micrometers.
length (float) – Length of the resistor in micrometers.
resistance (float | None) – Target resistance in ohms (optional).
model (str) – Device model name.
- Returns:
Component with high-resistance poly resistor layout.
- Return type:
Component
from ihp import PDK, cells
PDK.activate()
c = cells.rhigh(width=1.4, length=20.0, model='rhigh').copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)

rppd#
- ihp.cells.rppd(width=0.8, length=10.0, resistance=None, model='rppd')[source]#
Create a P+ polysilicon resistor.
- Parameters:
width (float) – Width of the resistor in micrometers.
length (float) – Length of the resistor in micrometers.
resistance (float | None) – Target resistance in ohms (optional).
model (str) – Device model name.
- Returns:
Component with P+ poly resistor layout.
- Return type:
Component
from ihp import PDK, cells
PDK.activate()
c = cells.rppd(width=0.8, length=10.0, model='rppd').copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)

rsil#
- ihp.cells.rsil(width=0.8, length=10.0, resistance=None, model='rsil')[source]#
Create a silicided polysilicon resistor.
- Parameters:
width (float) – Width of the resistor in micrometers.
length (float) – Length of the resistor in micrometers.
resistance (float | None) – Target resistance in ohms (optional).
model (str) – Device model name.
- Returns:
Component with silicided poly resistor layout.
- Return type:
Component
from ihp import PDK, cells
PDK.activate()
c = cells.rsil(width=0.8, length=10.0, model='rsil').copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)

schottky_nbl1#
- ihp.cells.schottky_nbl1()[source]#
Returns schottky_nbl1 fixed cell.
import ihp c = ihp.cells.schottky_nbl1() c.plot()
(
Source code
,png
,hires.png
,pdf
)- Return type:
Component
from ihp import PDK, cells
PDK.activate()
c = cells.schottky_nbl1().copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)

scr1#
- ihp.cells.scr1()[source]#
Returns scr1 fixed cell.
import ihp c = ihp.cells.scr1() c.plot()
(
Source code
,png
,hires.png
,pdf
)- Return type:
Component
from ihp import PDK, cells
PDK.activate()
c = cells.scr1().copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)

sealring#
- ihp.cells.sealring(width=200.0, height=200.0, ring_width=5.0)[source]#
Create a seal ring for die protection.
- Parameters:
width (float) – Inner width of the seal ring in micrometers.
height (float) – Inner height of the seal ring in micrometers.
ring_width (float) – Width of the seal ring metal in micrometers.
- Returns:
Component with seal ring layout.
- Return type:
Component
from ihp import PDK, cells
PDK.activate()
c = cells.sealring(width=200.0, height=200.0, ring_width=5.0).copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)

sealring_CDNS_675179387642#
- ihp.cells.sealring_CDNS_675179387642()[source]#
Returns sealring_CDNS_675179387642 fixed cell.
import ihp c = ihp.cells.sealring_CDNS_675179387642() c.plot()
(
Source code
,png
,hires.png
,pdf
)- Return type:
Component
from ihp import PDK, cells
PDK.activate()
c = cells.sealring_CDNS_675179387642().copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)

sealring_complete#
- ihp.cells.sealring_complete()[source]#
Returns sealring_complete fixed cell.
import ihp c = ihp.cells.sealring_complete() c.plot()
(
Source code
,png
,hires.png
,pdf
)- Return type:
Component
from ihp import PDK, cells
PDK.activate()
c = cells.sealring_complete().copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)

sealring_corner_CDNS_675179387641#
- ihp.cells.sealring_corner_CDNS_675179387641()[source]#
Returns sealring_corner_CDNS_675179387641 fixed cell.
import ihp c = ihp.cells.sealring_corner_CDNS_675179387641() c.plot()
(
Source code
,png
,hires.png
,pdf
)- Return type:
Component
from ihp import PDK, cells
PDK.activate()
c = cells.sealring_corner_CDNS_675179387641().copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)

straight#
- ihp.cells.straight(length=10, cross_section='strip', width=None, npoints=2)[source]#
Returns a Straight waveguide.
- Parameters:
length (float) – straight length (um).
cross_section (CrossSection | str | dict[str, Any] | Callable[[...], CrossSection] | SymmetricalCrossSection | DCrossSection) – specification (CrossSection, string or dict).
width (float | None) – width of the waveguide. If None, it will use the width of the cross_section.
npoints (int) – number of points.
- Return type:
Component
from ihp import PDK, cells
PDK.activate()
c = cells.straight(length=10, cross_section='strip', npoints=2).copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)

straight_metal#
- ihp.cells.straight_metal(length=10, cross_section='metal_routing', width=None)[source]#
Returns a Straight waveguide.
- Parameters:
length (float) – straight length (um).
cross_section (CrossSection | str | dict[str, Any] | Callable[[...], CrossSection] | SymmetricalCrossSection | DCrossSection) – specification (CrossSection, string or dict).
width (float | None) – width of the waveguide. If None, it will use the width of the cross_section.
- Return type:
Component
from ihp import PDK, cells
PDK.activate()
c = cells.straight_metal(length=10, cross_section='metal_routing').copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)

svaricap#
- ihp.cells.svaricap(width=1.0, length=1.0, nf=1, model='svaricap')[source]#
Create a MOS varicap (variable capacitor).
- Parameters:
width (float) – Width of the varicap in micrometers.
length (float) – Length of the varicap in micrometers.
nf (int) – Number of fingers.
model (str) – Device model name.
- Returns:
Component with varicap layout.
- Return type:
Component
from ihp import PDK, cells
PDK.activate()
c = cells.svaricap(width=1.0, length=1.0, nf=1, model='svaricap').copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)

text_rectangular#
- ihp.cells.text_rectangular(text='abc', size=3, justify='left', layer='TOPMETAL2')[source]#
Pixel based font, guaranteed to be manhattan, without acute angles.
- Parameters:
text (str) – string.
size (float) – pixel size.
justify (str) – left, right or center.
layer (tuple[int, int] | str | int | LayerEnum) – for text.
- Return type:
Component
from ihp import PDK, cells
PDK.activate()
c = cells.text_rectangular(text='abc', size=3, justify='left', layer='TOPMETAL2').copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)

text_rectangular_multi_layer#
- ihp.cells.text_rectangular_multi_layer(text='abc', layers=('TOPMETAL2',), text_factory='text_rectangular', **kwargs)[source]#
Returns rectangular text in different layers.
- Parameters:
text (str) – string of text.
layers (Sequence[tuple[int, int] | str | int | LayerEnum]) – list of layers to replicate the text.
text_factory (str | Callable[[...], Component] | dict[str, Any] | DKCell | partial[Component]) – function to create the text Components.
kwargs (Any) – keyword arguments for text_factory.
- Return type:
Component
from ihp import PDK, cells
PDK.activate()
c = cells.text_rectangular_multi_layer(text='abc', layers=('TOPMETAL2',), text_factory='text_rectangular').copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)

via_array#
- ihp.cells.via_array(via_type='Via1', columns=2, rows=2, via_size=None, via_spacing=None, via_enclosure=None)[source]#
Create an array of vias.
- Parameters:
via_type (str) – Type of via (Via1, Via2, Via3, Via4, TopVia1, TopVia2).
columns (int) – Number of via columns.
rows (int) – Number of via rows.
via_size (float | None) – Via size in micrometers (uses default if None).
via_spacing (float | None) – Via spacing in micrometers (uses default if None).
via_enclosure (float | None) – Metal enclosure in micrometers (uses default if None).
- Returns:
Component with via array.
- Return type:
Component
from ihp import PDK, cells
PDK.activate()
c = cells.via_array(via_type='Via1', columns=2, rows=2).copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)

via_stack#
- ihp.cells.via_stack(bottom_layer='Metal1', top_layer='Metal2', size=(10.0, 10.0), vn_columns=2, vn_rows=2, vt1_columns=1, vt1_rows=1, vt2_columns=1, vt2_rows=1)[source]#
Create a via stack connecting multiple metal layers.
- Parameters:
bottom_layer (str) – Bottom metal layer name.
top_layer (str) – Top metal layer name.
size (tuple[float, float]) – Size of the metal stack (width, height) in micrometers.
vn_columns (int) – Number of columns for normal vias (Via1-Via4).
vn_rows (int) – Number of rows for normal vias.
vt1_columns (int) – Number of columns for TopVia1.
vt1_rows (int) – Number of rows for TopVia1.
vt2_columns (int) – Number of columns for TopVia2.
vt2_rows (int) – Number of rows for TopVia2.
- Returns:
Component with via stack.
- Return type:
Component
from ihp import PDK, cells
PDK.activate()
c = cells.via_stack(bottom_layer='Metal1', top_layer='Metal2', size=(10.0, 10.0), vn_columns=2, vn_rows=2, vt1_columns=1, vt1_rows=1, vt2_columns=1, vt2_rows=1).copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)

via_stack_with_pads#
- ihp.cells.via_stack_with_pads(bottom_layer='Metal1', top_layer='TopMetal2', size=(10.0, 10.0), pad_size=(20.0, 20.0), pad_spacing=50.0)[source]#
Create a via stack with test pads.
- Parameters:
bottom_layer (str) – Bottom metal layer name.
top_layer (str) – Top metal layer name.
size (tuple[float, float]) – Size of the via stack (width, height) in micrometers.
pad_size (tuple[float, float]) – Size of the test pads (width, height) in micrometers.
pad_spacing (float) – Spacing between pads in micrometers.
- Returns:
Component with via stack and test pads.
- Return type:
Component
from ihp import PDK, cells
PDK.activate()
c = cells.via_stack_with_pads(bottom_layer='Metal1', top_layer='TopMetal2', size=(10.0, 10.0), pad_size=(20.0, 20.0), pad_spacing=50.0).copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)

wire_corner#
- ihp.cells.wire_corner(cross_section='metal_routing', width=None)[source]#
Returns 45 degrees electrical corner wire.
- Parameters:
cross_section (CrossSection | str | dict[str, Any] | Callable[[...], CrossSection] | SymmetricalCrossSection | DCrossSection) – spec.
width (float | None) – optional width. Defaults to cross_section width.
- Return type:
Component
from ihp import PDK, cells
PDK.activate()
c = cells.wire_corner(cross_section='metal_routing').copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)

wire_corner45#
- ihp.cells.wire_corner45(cross_section='metal_routing', radius=10, width=None, layer=None, with_corner90_ports=True)[source]#
Returns 90 degrees electrical corner wire.
- Parameters:
cross_section (CrossSection | str | dict[str, Any] | Callable[[...], CrossSection] | SymmetricalCrossSection | DCrossSection) – spec.
radius (float) – ignored.
width (float | None) – optional width. Defaults to cross_section width.
layer (tuple[int, int] | str | int | LayerEnum | None) – ignored.
with_corner90_ports (bool) – if True, adds ports at 90 degrees.
- Return type:
Component
from ihp import PDK, cells
PDK.activate()
c = cells.wire_corner45(cross_section='metal_routing', radius=10, with_corner90_ports=True).copy()
c.draw_ports()
c.plot()
(Source code
, png
, hires.png
, pdf
)
