"""Bipolar transistor components for IHP PDK."""
import warnings
from functools import partial, wraps
import gdsfactory as gf
from kfactory.schematic import DSchematic
from ..config import PATH
from ..tech import LAYER
_XS = "metal1_routing"
def deprecated(func):
"""Mark a fixed-GDS cell as deprecated."""
@wraps(func)
def wrapper(*args, **kwargs):
warnings.warn(
f"{func.__name__} is deprecated. Use the pure-Python pcell equivalent.",
DeprecationWarning,
stacklevel=2,
)
return func(*args, **kwargs)
return wrapper
_add_ports_metal1 = partial(
gf.add_ports.add_ports_from_markers_inside,
pin_layer=LAYER.Metal1pin,
port_layer=LAYER.Metal1drawing,
)
_add_ports_metal2 = partial(
gf.add_ports.add_ports_from_markers_inside,
pin_layer=LAYER.Metal2pin,
port_layer=LAYER.Metal2drawing,
)
_add_ports = (_add_ports_metal1, _add_ports_metal2)
gdsdir = PATH.gds
import_gds = partial(gf.import_gds, post_process=_add_ports)
# ---------------------------------------------------------------------------
# Schematic functions for fixed cells
# ---------------------------------------------------------------------------
def _svaricap_fixed_schematic() -> DSchematic:
s = DSchematic()
s.info["tags"] = ["IHP", "varicap", "hv"]
s.info["symbol"] = "varicap"
s.info["ports"] = [
{"name": "bn", "side": "top", "type": "electric"},
{"name": "G2", "side": "bottom", "type": "electric"},
{"name": "G1", "side": "left", "type": "electric"},
{"name": "W", "side": "right", "type": "electric"},
]
s.info["models"] = [
{
"language": "spice",
"name": "svaricap",
"spice_type": "SUBCKT",
"library": "ihp/models/ngspice/models/cornerMOShv.lib",
"sections": ["mos_tt", "mos_ss", "mos_ff", "mos_sf", "mos_fs"],
"port_order": ["G1", "W", "G2", "bn"],
"params": {},
}
]
s.create_port(name="G1", cross_section=_XS, x=-1, y=0, orientation=180)
s.create_port(name="W", cross_section=_XS, x=1, y=0, orientation=0)
s.create_port(name="G2", cross_section=_XS, x=0, y=-1, orientation=270)
s.create_port(name="bn", cross_section=_XS, x=0, y=1, orientation=90)
return s
def _bondpad_fixed_schematic() -> DSchematic:
s = DSchematic()
s.info["tags"] = ["IHP", "bondpad"]
s.info["symbol"] = "pad"
s.info["ports"] = [{"name": "PAD", "side": "top", "type": "electric"}]
s.info["models"] = [
{
"language": "spice",
"name": "bondpad",
"spice_type": "SUBCKT",
"library": "ihp/models/ngspice/models/sg13g2_bondpad.lib",
"sections": [],
"port_order": ["PAD"],
"params": {},
}
]
s.create_port(name="PAD", cross_section=_XS, x=0, y=1, orientation=90)
return s
def _cmim_fixed_schematic() -> DSchematic:
s = DSchematic()
s.info["tags"] = ["IHP", "capacitor", "mim"]
s.info["symbol"] = "capacitor"
s.info["ports"] = [
{"name": "MINUS", "side": "left", "type": "electric"},
{"name": "PLUS", "side": "right", "type": "electric"},
]
s.info["models"] = [
{
"language": "spice",
"name": "cmim",
"spice_type": "SUBCKT",
"library": "ihp/models/ngspice/models/cornerCAP.lib",
"sections": ["cap_typ", "cap_bcs", "cap_wcs"],
"port_order": ["PLUS", "MINUS"],
"params": {},
}
]
s.create_port(name="MINUS", cross_section=_XS, x=-1, y=0, orientation=180)
s.create_port(name="PLUS", cross_section=_XS, x=1, y=0, orientation=0)
return s
def _dantenna_fixed_schematic() -> DSchematic:
s = DSchematic()
s.info["tags"] = ["IHP", "diode", "antenna"]
s.info["symbol"] = "diode"
s.info["ports"] = [
{"name": "1", "side": "top", "type": "electric"},
{"name": "2", "side": "bottom", "type": "electric"},
]
s.info["models"] = [
{
"language": "spice",
"name": "dantenna",
"spice_type": "SUBCKT",
"library": "ihp/models/ngspice/models/cornerDIO.lib",
"sections": ["dio_tt", "dio_ss", "dio_ff"],
"port_order": ["1", "2"],
"params": {},
}
]
s.create_port(name="1", cross_section=_XS, x=0, y=1, orientation=90)
s.create_port(name="2", cross_section=_XS, x=0, y=-1, orientation=270)
return s
def _esd_diode_fixed_schematic(model_name: str) -> DSchematic:
"""Shared schematic for ESD diode fixed cells."""
s = DSchematic()
s.info["tags"] = ["IHP", "esd"]
s.info["symbol"] = "diode"
s.info["ports"] = [
{"name": "VDD", "side": "top", "type": "electric"},
{"name": "VSS", "side": "bottom", "type": "electric"},
{"name": "PAD", "side": "right", "type": "electric"},
]
s.info["models"] = [
{
"language": "spice",
"name": model_name,
"spice_type": "SUBCKT",
"library": "ihp/models/ngspice/models/sg13g2_esd.lib",
"sections": [],
"port_order": ["VDD", "PAD", "VSS"],
"params": {},
}
]
s.create_port(name="VDD", cross_section=_XS, x=0, y=1, orientation=90)
s.create_port(name="PAD", cross_section=_XS, x=1, y=0, orientation=0)
s.create_port(name="VSS", cross_section=_XS, x=0, y=-1, orientation=270)
return s
def _diodevdd_2kv_fixed_schematic() -> DSchematic:
return _esd_diode_fixed_schematic("diodevdd_2kv")
def _diodevdd_4kv_fixed_schematic() -> DSchematic:
return _esd_diode_fixed_schematic("diodevdd_4kv")
def _diodevss_2kv_fixed_schematic() -> DSchematic:
return _esd_diode_fixed_schematic("diodevss_2kv")
def _diodevss_4kv_fixed_schematic() -> DSchematic:
return _esd_diode_fixed_schematic("diodevss_4kv")
def _dpantenna_fixed_schematic() -> DSchematic:
s = DSchematic()
s.info["tags"] = ["IHP", "diode", "antenna"]
s.info["symbol"] = "diode"
s.info["ports"] = [
{"name": "1", "side": "top", "type": "electric"},
{"name": "2", "side": "bottom", "type": "electric"},
]
s.info["models"] = [
{
"language": "spice",
"name": "dpantenna",
"spice_type": "SUBCKT",
"library": "ihp/models/ngspice/models/cornerDIO.lib",
"sections": ["dio_tt", "dio_ss", "dio_ff"],
"port_order": ["1", "2"],
"params": {},
}
]
s.create_port(name="1", cross_section=_XS, x=0, y=1, orientation=90)
s.create_port(name="2", cross_section=_XS, x=0, y=-1, orientation=270)
return s
def _dummy1_fixed_schematic() -> DSchematic:
s = DSchematic()
s.info["tags"] = ["IHP", "resistor"]
s.info["symbol"] = "resistor"
s.info["ports"] = [
{"name": "W", "side": "left", "type": "electric"},
{"name": "2", "side": "right", "type": "electric"},
]
s.info["models"] = [
{
"language": "spice",
"name": "dummy1",
"spice_type": "RESISTOR",
"library": "ihp/models/ngspice/models/cornerRES.lib",
"sections": ["res_typ", "res_bcs", "res_wcs"],
"port_order": ["W", "2"],
"params": {},
}
]
s.create_port(name="W", cross_section=_XS, x=-1, y=0, orientation=180)
s.create_port(name="2", cross_section=_XS, x=1, y=0, orientation=0)
return s
def _isolbox_fixed_schematic() -> DSchematic:
s = DSchematic()
s.info["tags"] = ["IHP", "diode", "antenna"]
s.info["symbol"] = "ckt"
s.info["ports"] = [
{"name": "bn", "side": "bottom", "type": "electric"},
{"name": "isoub", "side": "left", "type": "electric"},
{"name": "NWell", "side": "right", "type": "electric"},
]
s.info["models"] = [
{
"language": "spice",
"name": "isolbox",
"spice_type": "SUBCKT",
"library": "ihp/models/ngspice/models/cornerDIO.lib",
"sections": ["dio_tt", "dio_ss", "dio_ff"],
"port_order": ["isoub", "NWell", "bn"],
"params": {},
}
]
s.create_port(name="isoub", cross_section=_XS, x=-1, y=0, orientation=180)
s.create_port(name="NWell", cross_section=_XS, x=1, y=0, orientation=0)
s.create_port(name="bn", cross_section=_XS, x=0, y=-1, orientation=270)
return s
def _lv_mos_fixed_schematic(model_name: str, symbol: str) -> DSchematic:
"""Shared schematic for LV MOS fixed cells."""
s = DSchematic()
s.info["tags"] = ["IHP", "mos", "lv"]
s.info["symbol"] = symbol
s.info["ports"] = [
{"name": "d", "side": "top", "type": "electric"},
{"name": "s", "side": "bottom", "type": "electric"},
{"name": "g", "side": "left", "type": "electric"},
{"name": "b", "side": "right", "type": "electric"},
]
s.info["models"] = [
{
"language": "spice",
"name": model_name,
"spice_type": "SUBCKT",
"library": "ihp/models/ngspice/models/cornerMOSlv.lib",
"sections": ["mos_tt", "mos_ss", "mos_ff", "mos_sf", "mos_fs"],
"port_order": ["d", "g", "s", "b"],
"params": {},
}
]
s.create_port(name="d", cross_section=_XS, x=0, y=1, orientation=90)
s.create_port(name="s", cross_section=_XS, x=0, y=-1, orientation=270)
s.create_port(name="g", cross_section=_XS, x=-1, y=0, orientation=180)
s.create_port(name="b", cross_section=_XS, x=1, y=0, orientation=0)
return s
def _hv_mos_fixed_schematic(model_name: str, symbol: str) -> DSchematic:
"""Shared schematic for HV MOS fixed cells."""
s = DSchematic()
s.info["tags"] = ["IHP", "mos", "hv"]
s.info["symbol"] = symbol
s.info["ports"] = [
{"name": "d", "side": "top", "type": "electric"},
{"name": "s", "side": "bottom", "type": "electric"},
{"name": "g", "side": "left", "type": "electric"},
{"name": "b", "side": "right", "type": "electric"},
]
s.info["models"] = [
{
"language": "spice",
"name": model_name,
"spice_type": "SUBCKT",
"library": "ihp/models/ngspice/models/cornerMOShv.lib",
"sections": ["mos_tt", "mos_ss", "mos_ff", "mos_sf", "mos_fs"],
"port_order": ["d", "g", "s", "b"],
"params": {},
}
]
s.create_port(name="d", cross_section=_XS, x=0, y=1, orientation=90)
s.create_port(name="s", cross_section=_XS, x=0, y=-1, orientation=270)
s.create_port(name="g", cross_section=_XS, x=-1, y=0, orientation=180)
s.create_port(name="b", cross_section=_XS, x=1, y=0, orientation=0)
return s
def _rf_lv_mos_fixed_schematic(model_name: str, symbol: str) -> DSchematic:
"""Shared schematic for RF LV MOS fixed cells."""
s = DSchematic()
s.info["tags"] = ["IHP", "mos", "lv", "rf"]
s.info["symbol"] = symbol
s.info["ports"] = [
{"name": "d", "side": "top", "type": "electric"},
{"name": "s", "side": "bottom", "type": "electric"},
{"name": "g", "side": "left", "type": "electric"},
{"name": "b", "side": "right", "type": "electric"},
]
s.info["models"] = [
{
"language": "spice",
"name": model_name,
"spice_type": "SUBCKT",
"library": "ihp/models/ngspice/models/cornerMOSlv.lib",
"sections": ["mos_tt", "mos_ss", "mos_ff", "mos_sf", "mos_fs"],
"port_order": ["d", "g", "s", "b"],
"params": {"rfmode": "1"},
}
]
s.create_port(name="d", cross_section=_XS, x=0, y=1, orientation=90)
s.create_port(name="s", cross_section=_XS, x=0, y=-1, orientation=270)
s.create_port(name="g", cross_section=_XS, x=-1, y=0, orientation=180)
s.create_port(name="b", cross_section=_XS, x=1, y=0, orientation=0)
return s
def _rf_hv_mos_fixed_schematic(model_name: str, symbol: str) -> DSchematic:
"""Shared schematic for RF HV MOS fixed cells."""
s = DSchematic()
s.info["tags"] = ["IHP", "mos", "hv", "rf"]
s.info["symbol"] = symbol
s.info["ports"] = [
{"name": "d", "side": "top", "type": "electric"},
{"name": "s", "side": "bottom", "type": "electric"},
{"name": "g", "side": "left", "type": "electric"},
{"name": "b", "side": "right", "type": "electric"},
]
s.info["models"] = [
{
"language": "spice",
"name": model_name,
"spice_type": "SUBCKT",
"library": "ihp/models/ngspice/models/cornerMOShv.lib",
"sections": ["mos_tt", "mos_ss", "mos_ff", "mos_sf", "mos_fs"],
"port_order": ["d", "g", "s", "b"],
"params": {"rfmode": "1"},
}
]
s.create_port(name="d", cross_section=_XS, x=0, y=1, orientation=90)
s.create_port(name="s", cross_section=_XS, x=0, y=-1, orientation=270)
s.create_port(name="g", cross_section=_XS, x=-1, y=0, orientation=180)
s.create_port(name="b", cross_section=_XS, x=1, y=0, orientation=0)
return s
def _nmos_fixed_schematic() -> DSchematic:
return _lv_mos_fixed_schematic("sg13_lv_nmos", "nmos")
def _nmosHV_fixed_schematic() -> DSchematic:
return _hv_mos_fixed_schematic("sg13_hv_nmos", "nmos")
def _nmoscl_lv_fixed_schematic(model_name: str) -> DSchematic:
"""Shared schematic for nmoscl fixed cells."""
s = DSchematic()
s.info["tags"] = ["IHP", "mos", "lv"]
s.info["symbol"] = "nmos"
s.info["ports"] = [
{"name": "VDD", "side": "top", "type": "electric"},
{"name": "VSS", "side": "bottom", "type": "electric"},
]
s.info["models"] = [
{
"language": "spice",
"name": model_name,
"spice_type": "SUBCKT",
"library": "ihp/models/ngspice/models/cornerMOSlv.lib",
"sections": ["mos_tt", "mos_ss", "mos_ff", "mos_sf", "mos_fs"],
"port_order": ["VDD", "VSS"],
"params": {},
}
]
s.create_port(name="VDD", cross_section=_XS, x=0, y=1, orientation=90)
s.create_port(name="VSS", cross_section=_XS, x=0, y=-1, orientation=270)
return s
def _nmoscl_2_fixed_schematic() -> DSchematic:
return _nmoscl_lv_fixed_schematic("nmoscl_2")
def _nmoscl_4_fixed_schematic() -> DSchematic:
return _nmoscl_lv_fixed_schematic("nmoscl_4")
def _npn_fixed_schematic(model_name: str) -> DSchematic:
"""Shared schematic for NPN BJT fixed cells."""
s = DSchematic()
s.info["tags"] = ["IHP", "bjt", "npn"]
s.info["symbol"] = "npn"
s.info["ports"] = [
{"name": "bn", "side": "top", "type": "electric"},
{"name": "e", "side": "bottom", "type": "electric"},
{"name": "b", "side": "left", "type": "electric"},
{"name": "c", "side": "right", "type": "electric"},
]
s.info["models"] = [
{
"language": "spice",
"name": model_name,
"spice_type": "SUBCKT",
"library": "ihp/models/ngspice/models/cornerHBT.lib",
"sections": ["hbt_typ", "hbt_bcs", "hbt_wcs"],
"port_order": ["c", "b", "e", "bn"],
"params": {},
}
]
s.create_port(name="c", cross_section=_XS, x=1, y=0, orientation=0)
s.create_port(name="b", cross_section=_XS, x=-1, y=0, orientation=180)
s.create_port(name="e", cross_section=_XS, x=0, y=-1, orientation=270)
s.create_port(name="bn", cross_section=_XS, x=0, y=1, orientation=90)
return s
def _npn13G2_fixed_schematic() -> DSchematic:
return _npn_fixed_schematic("npn13G2")
def _npn13G2L_fixed_schematic() -> DSchematic:
return _npn_fixed_schematic("npn13G2l")
def _npn13G2V_fixed_schematic() -> DSchematic:
return _npn_fixed_schematic("npn13G2v")
def _tap_fixed_schematic(model_name: str) -> DSchematic:
"""Shared schematic for tap fixed cells."""
s = DSchematic()
s.info["tags"] = ["IHP", "tap"]
s.info["symbol"] = "tap"
s.info["ports"] = [
{"name": "1", "side": "top", "type": "electric"},
{"name": "2", "side": "bottom", "type": "electric"},
]
s.info["models"] = [
{
"language": "spice",
"name": model_name,
"spice_type": "SUBCKT",
"library": "ihp/models/ngspice/models/cornerRES.lib",
"sections": ["res_typ", "res_bcs", "res_wcs"],
"port_order": ["1", "2"],
"params": {},
}
]
s.create_port(name="1", cross_section=_XS, x=0, y=1, orientation=90)
s.create_port(name="2", cross_section=_XS, x=0, y=-1, orientation=270)
return s
def _ntap1_fixed_schematic() -> DSchematic:
return _tap_fixed_schematic("ntap1")
def _ptap1_fixed_schematic() -> DSchematic:
return _tap_fixed_schematic("ptap1")
def _pmos_fixed_schematic() -> DSchematic:
return _lv_mos_fixed_schematic("sg13_lv_pmos", "pmos")
def _pmosHV_fixed_schematic() -> DSchematic:
return _hv_mos_fixed_schematic("sg13_hv_pmos", "pmos")
def _pnpMPA_fixed_schematic() -> DSchematic:
s = DSchematic()
s.info["tags"] = ["IHP", "bjt", "pnp"]
s.info["symbol"] = "pnp"
s.info["ports"] = [
{"name": "e", "side": "bottom", "type": "electric"},
{"name": "b", "side": "left", "type": "electric"},
{"name": "c", "side": "right", "type": "electric"},
]
s.info["models"] = [
{
"language": "spice",
"name": "pnpMPA",
"spice_type": "SUBCKT",
"library": "ihp/models/ngspice/models/cornerHBT.lib",
"sections": ["hbt_typ", "hbt_bcs", "hbt_wcs"],
"port_order": ["c", "b", "e"],
"params": {},
}
]
s.create_port(name="c", cross_section=_XS, x=1, y=0, orientation=0)
s.create_port(name="b", cross_section=_XS, x=-1, y=0, orientation=180)
s.create_port(name="e", cross_section=_XS, x=0, y=-1, orientation=270)
return s
def _rfcmim_fixed_schematic() -> DSchematic:
s = DSchematic()
s.info["tags"] = ["IHP", "capacitor", "mim", "rf"]
s.info["symbol"] = "capacitor"
s.info["ports"] = [
{"name": "bn", "side": "bottom", "type": "electric"},
{"name": "MINUS", "side": "left", "type": "electric"},
{"name": "PLUS", "side": "right", "type": "electric"},
]
s.info["models"] = [
{
"language": "spice",
"name": "cap_rfcmim",
"spice_type": "SUBCKT",
"library": "ihp/models/ngspice/models/cornerCAP.lib",
"sections": ["cap_typ", "cap_bcs", "cap_wcs"],
"port_order": ["PLUS", "MINUS", "bn"],
"params": {},
}
]
s.create_port(name="MINUS", cross_section=_XS, x=-1, y=0, orientation=180)
s.create_port(name="PLUS", cross_section=_XS, x=1, y=0, orientation=0)
s.create_port(name="bn", cross_section=_XS, x=0, y=-1, orientation=270)
return s
def _rfnmos_fixed_schematic() -> DSchematic:
return _rf_lv_mos_fixed_schematic("sg13_lv_nmos", "nmos")
def _rfnmosHV_fixed_schematic() -> DSchematic:
return _rf_hv_mos_fixed_schematic("sg13_hv_nmos", "nmos")
def _rfpmos_fixed_schematic() -> DSchematic:
return _rf_lv_mos_fixed_schematic("sg13_lv_pmos", "pmos")
def _rfpmosHV_fixed_schematic() -> DSchematic:
return _rf_hv_mos_fixed_schematic("sg13_hv_pmos", "pmos")
def _resistor_3port_fixed_schematic(model_name: str) -> DSchematic:
"""Shared schematic for 3-port resistor fixed cells."""
s = DSchematic()
s.info["tags"] = ["IHP", "resistor"]
s.info["symbol"] = "resistor"
s.info["ports"] = [
{"name": "1", "side": "top", "type": "electric"},
{"name": "3", "side": "bottom", "type": "electric"},
{"name": "bn", "side": "right", "type": "electric"},
]
s.info["models"] = [
{
"language": "spice",
"name": model_name,
"spice_type": "SUBCKT",
"library": "ihp/models/ngspice/models/cornerRES.lib",
"sections": ["res_typ", "res_bcs", "res_wcs"],
"port_order": ["1", "3", "bn"],
"params": {},
}
]
s.create_port(name="1", cross_section=_XS, x=0, y=1, orientation=90)
s.create_port(name="3", cross_section=_XS, x=0, y=-1, orientation=270)
s.create_port(name="bn", cross_section=_XS, x=1, y=0, orientation=0)
return s
def _rhigh_fixed_schematic() -> DSchematic:
return _resistor_3port_fixed_schematic("rhigh")
def _rppd_fixed_schematic() -> DSchematic:
return _resistor_3port_fixed_schematic("rppd")
def _rsil_fixed_schematic() -> DSchematic:
return _resistor_3port_fixed_schematic("rsil")
def _schottky_nbl1_fixed_schematic() -> DSchematic:
s = DSchematic()
s.info["tags"] = ["IHP", "diode", "schottky"]
s.info["symbol"] = "diode"
s.info["ports"] = [
{"name": "A", "side": "top", "type": "electric"},
{"name": "C", "side": "bottom", "type": "electric"},
{"name": "S", "side": "right", "type": "electric"},
]
s.info["models"] = [
{
"language": "spice",
"name": "schottky_nbl1",
"spice_type": "SUBCKT",
"library": "ihp/models/ngspice/models/sg13g2_dschottky_nbl1_mod.lib",
"sections": [],
"port_order": ["A", "C", "S"],
"params": {},
}
]
s.create_port(name="A", cross_section=_XS, x=0, y=1, orientation=90)
s.create_port(name="C", cross_section=_XS, x=0, y=-1, orientation=270)
s.create_port(name="S", cross_section=_XS, x=1, y=0, orientation=0)
return s
# ---------------------------------------------------------------------------
# Fixed GDS cells
# ---------------------------------------------------------------------------
[docs]
@deprecated
@gf.cell
def CuPillarPad_fixed() -> gf.Component:
"""Returns CuPillarPad fixed cell.
.. plot::
:include-source:
import ihp
c = ihp.cells.CuPillarPad_fixed()
c.plot()
"""
c = import_gds(gdsdir / "CuPillarPad.gds")
width = 45
c.add_port(
name="e1", center=(0, 0), width=width, orientation=180, layer="TopMetal2drawing"
)
c.add_port(
name="e2", center=(0, 0), width=width, orientation=0, layer="TopMetal2drawing"
)
c.add_port(
name="e3", center=(0, 0), width=width, orientation=90, layer="TopMetal2drawing"
)
c.add_port(
name="e4", center=(0, 0), width=width, orientation=270, layer="TopMetal2drawing"
)
return c
[docs]
@deprecated
@gf.cell
def L2_IND_LVS_fixed() -> gf.Component:
"""Returns L2_IND_LVS fixed cell.
.. plot::
:include-source:
import ihp
c = ihp.cells.L2_IND_LVS_fixed()
c.plot()
"""
return import_gds(gdsdir / "L2_IND_LVS.gds")
[docs]
@deprecated
@gf.cell
def M1_GatPoly_CDNS_675179387644_fixed() -> gf.Component:
"""Returns M1_GatPoly_CDNS_675179387644 fixed cell.
.. plot::
:include-source:
import ihp
c = ihp.cells.M1_GatPoly_CDNS_675179387644_fixed()
c.plot()
"""
return import_gds(gdsdir / "M1_GatPoly_CDNS_675179387644.gds")
[docs]
@deprecated
@gf.cell
def M2_M1_CDNS_675179387643_fixed() -> gf.Component:
"""Returns M2_M1_CDNS_675179387643 fixed cell.
.. plot::
:include-source:
import ihp
c = ihp.cells.M2_M1_CDNS_675179387643_fixed()
c.plot()
"""
return import_gds(gdsdir / "M2_M1_CDNS_675179387643.gds")
[docs]
@deprecated
@gf.cell
def M3_M2_CDNS_675179387642_fixed() -> gf.Component:
"""Returns M3_M2_CDNS_675179387642 fixed cell.
.. plot::
:include-source:
import ihp
c = ihp.cells.M3_M2_CDNS_675179387642_fixed()
c.plot()
"""
return import_gds(gdsdir / "M3_M2_CDNS_675179387642.gds")
[docs]
@deprecated
@gf.cell
def M4_M3_CDNS_675179387641_fixed() -> gf.Component:
"""Returns M4_M3_CDNS_675179387641 fixed cell.
.. plot::
:include-source:
import ihp
c = ihp.cells.M4_M3_CDNS_675179387641_fixed()
c.plot()
"""
return import_gds(gdsdir / "M4_M3_CDNS_675179387641.gds")
[docs]
@deprecated
@gf.cell
def M5_M4_CDNS_675179387640_fixed() -> gf.Component:
"""Returns M5_M4_CDNS_675179387640 fixed cell.
.. plot::
:include-source:
import ihp
c = ihp.cells.M5_M4_CDNS_675179387640_fixed()
c.plot()
"""
return import_gds(gdsdir / "M5_M4_CDNS_675179387640.gds")
[docs]
@deprecated
@gf.cell
def NoFillerStack_fixed() -> gf.Component:
"""Returns NoFillerStack fixed cell.
.. plot::
:include-source:
import ihp
c = ihp.cells.NoFillerStack_fixed()
c.plot()
"""
return import_gds(gdsdir / "NoFillerStack.gds")
[docs]
@deprecated
@gf.cell(schematic_function=_svaricap_fixed_schematic)
def SVaricap_fixed() -> gf.Component:
"""Returns SVaricap fixed cell.
.. plot::
:include-source:
import ihp
c = ihp.cells.SVaricap_fixed()
c.plot()
"""
return import_gds(gdsdir / "SVaricap.gds")
[docs]
@deprecated
@gf.cell
def TM1_M5_CDNS_675179387645_fixed() -> gf.Component:
"""Returns TM1_M5_CDNS_675179387645 fixed cell.
.. plot::
:include-source:
import ihp
c = ihp.cells.TM1_M5_CDNS_675179387645_fixed()
c.plot()
"""
return import_gds(gdsdir / "TM1_M5_CDNS_675179387645.gds")
[docs]
@deprecated
@gf.cell
def TM2_TM1_CDNS_675179387646_fixed() -> gf.Component:
"""Returns TM2_TM1_CDNS_675179387646 fixed cell.
.. plot::
:include-source:
import ihp
c = ihp.cells.TM2_TM1_CDNS_675179387646_fixed()
c.plot()
"""
return import_gds(gdsdir / "TM2_TM1_CDNS_675179387646.gds")
[docs]
@deprecated
@gf.cell
def TSV_fixed() -> gf.Component:
"""Returns TSV fixed cell.
.. plot::
:include-source:
import ihp
c = ihp.cells.TSV_fixed()
c.plot()
"""
return import_gds(gdsdir / "TSV.gds")
[docs]
@deprecated
@gf.cell
def ViaStack_fixed() -> gf.Component:
"""Returns ViaStack fixed cell.
.. plot::
:include-source:
import ihp
c = ihp.cells.ViaStack_fixed()
c.plot()
"""
return import_gds(gdsdir / "ViaStack.gds")
[docs]
@deprecated
@gf.cell(schematic_function=_bondpad_fixed_schematic)
def bondpad_fixed() -> gf.Component:
"""Returns bondpad fixed cell.
.. plot::
:include-source:
import ihp
c = ihp.cells.bondpad()
c.plot()
"""
return import_gds(gdsdir / "bondpad.gds")
[docs]
@deprecated
@gf.cell
def chipText_fixed() -> gf.Component:
"""Returns chipText fixed cell.
.. plot::
:include-source:
import ihp
c = ihp.cells.chipText_fixed()
c.plot()
"""
return import_gds(gdsdir / "chipText.gds")
[docs]
@deprecated
@gf.cell(schematic_function=_cmim_fixed_schematic)
def cmim_fixed() -> gf.Component:
"""Returns cmim fixed cell.
.. plot::
:include-source:
import ihp
c = ihp.cells.cmim()
c.plot()
"""
return import_gds(gdsdir / "cmim.gds")
[docs]
@deprecated
@gf.cell
def colors_and_stipples_fixed() -> gf.Component:
"""Returns colors_and_stipples fixed cell.
.. plot::
:include-source:
import ihp
c = ihp.cells.colors_and_stipples_fixed()
c.plot()
"""
return import_gds(gdsdir / "colors_and_stipples.gds")
[docs]
@deprecated
@gf.cell(schematic_function=_dantenna_fixed_schematic)
def dantenna_fixed() -> gf.Component:
"""Returns dantenna fixed cell.
.. plot::
:include-source:
import ihp
c = ihp.cells.dantenna()
c.plot()
"""
return import_gds(gdsdir / "dantenna.gds")
[docs]
@deprecated
@gf.cell
def diffstbprobe_fixed() -> gf.Component:
"""Returns diffstbprobe fixed cell.
.. plot::
:include-source:
import ihp
c = ihp.cells.diffstbprobe_fixed()
c.plot()
"""
return import_gds(gdsdir / "diffstbprobe.gds")
[docs]
@deprecated
@gf.cell(schematic_function=_diodevdd_2kv_fixed_schematic)
def diodevdd_2kv_fixed() -> gf.Component:
"""Returns diodevdd_2kv fixed cell.
.. plot::
:include-source:
import ihp
c = ihp.cells.diodevdd_2kv_fixed()
c.plot()
"""
return import_gds(gdsdir / "diodevdd_2kv.gds")
[docs]
@deprecated
@gf.cell(schematic_function=_diodevdd_4kv_fixed_schematic)
def diodevdd_4kv_fixed() -> gf.Component:
"""Returns diodevdd_4kv fixed cell.
.. plot::
:include-source:
import ihp
c = ihp.cells.diodevdd_4kv_fixed()
c.plot()
"""
return import_gds(gdsdir / "diodevdd_4kv.gds")
[docs]
@deprecated
@gf.cell(schematic_function=_diodevss_2kv_fixed_schematic)
def diodevss_2kv_fixed() -> gf.Component:
"""Returns diodevss_2kv fixed cell.
.. plot::
:include-source:
import ihp
c = ihp.cells.diodevss_2kv_fixed()
c.plot()
"""
return import_gds(gdsdir / "diodevss_2kv.gds")
[docs]
@deprecated
@gf.cell(schematic_function=_diodevss_4kv_fixed_schematic)
def diodevss_4kv_fixed() -> gf.Component:
"""Returns diodevss_4kv fixed cell.
.. plot::
:include-source:
import ihp
c = ihp.cells.diodevss_4kv_fixed()
c.plot()
"""
return import_gds(gdsdir / "diodevss_4kv.gds")
[docs]
@deprecated
@gf.cell(schematic_function=_dpantenna_fixed_schematic)
def dpantenna_fixed() -> gf.Component:
"""Returns dpantenna fixed cell.
.. plot::
:include-source:
import ihp
c = ihp.cells.dpantenna()
c.plot()
"""
return import_gds(gdsdir / "dpantenna.gds")
[docs]
@deprecated
@gf.cell(schematic_function=_dummy1_fixed_schematic)
def dummy1_fixed() -> gf.Component:
"""Returns dummy1 fixed cell.
.. plot::
:include-source:
import ihp
c = ihp.cells.dummy1_fixed()
c.plot()
"""
return import_gds(gdsdir / "dummy1.gds")
[docs]
@deprecated
@gf.cell
def inductor2_fixed() -> gf.Component:
"""Returns inductor2 fixed cell.
.. plot::
:include-source:
import ihp
c = ihp.cells.inductor2()
c.plot()
"""
return import_gds(gdsdir / "inductor2.gds")
[docs]
@deprecated
@gf.cell
def inductor3_fixed() -> gf.Component:
"""Returns inductor3 fixed cell.
.. plot::
:include-source:
import ihp
c = ihp.cells.inductor3()
c.plot()
"""
return import_gds(gdsdir / "inductor3.gds")
[docs]
@deprecated
@gf.cell
def iprobe_fixed() -> gf.Component:
"""Returns iprobe fixed cell.
.. plot::
:include-source:
import ihp
c = ihp.cells.iprobe_fixed()
c.plot()
"""
return import_gds(gdsdir / "iprobe.gds")
[docs]
@deprecated
@gf.cell(schematic_function=_isolbox_fixed_schematic)
def isolbox_fixed() -> gf.Component:
"""Returns isolbox fixed cell.
.. plot::
:include-source:
import ihp
c = ihp.cells.isolbox_fixed()
c.plot()
"""
return import_gds(gdsdir / "isolbox.gds")
[docs]
@deprecated
@gf.cell
def lvsres_fixed() -> gf.Component:
"""Returns lvsres fixed cell.
.. plot::
:include-source:
import ihp
c = ihp.cells.lvsres_fixed()
c.plot()
"""
return import_gds(gdsdir / "lvsres.gds")
[docs]
@deprecated
@gf.cell(schematic_function=_nmos_fixed_schematic)
def nmos_fixed() -> gf.Component:
"""Returns nmos fixed cell.
.. plot::
:include-source:
import ihp
c = ihp.cells.nmos()
c.plot()
"""
return import_gds(gdsdir / "nmos.gds")
[docs]
@deprecated
@gf.cell(schematic_function=_nmosHV_fixed_schematic)
def nmosHV_fixed() -> gf.Component:
"""Returns nmosHV fixed cell.
.. plot::
:include-source:
import ihp
c = ihp.cells.nmosHV_fixed()
c.plot()
"""
return import_gds(gdsdir / "nmosHV.gds")
[docs]
@deprecated
@gf.cell(schematic_function=_nmoscl_2_fixed_schematic)
def nmoscl_2_fixed() -> gf.Component:
"""Returns nmoscl_2 fixed cell.
.. plot::
:include-source:
import ihp
c = ihp.cells.nmoscl_2_fixed()
c.plot()
"""
return import_gds(gdsdir / "nmoscl_2.gds")
[docs]
@deprecated
@gf.cell(schematic_function=_nmoscl_4_fixed_schematic)
def nmoscl_4_fixed() -> gf.Component:
"""Returns nmoscl_4 fixed cell.
.. plot::
:include-source:
import ihp
c = ihp.cells.nmoscl_4_fixed()
c.plot()
"""
return import_gds(gdsdir / "nmoscl_4.gds")
[docs]
@deprecated
@gf.cell(schematic_function=_npn13G2_fixed_schematic)
def npn13G2_fixed() -> gf.Component:
"""Returns npn13G2 fixed cell.
.. plot::
:include-source:
import ihp
c = ihp.cells.npn13G2()
c.plot()
"""
return import_gds(gdsdir / "npn13G2.gds")
[docs]
@deprecated
@gf.cell(schematic_function=_npn13G2L_fixed_schematic)
def npn13G2L_fixed() -> gf.Component:
"""Returns npn13G2L fixed cell.
.. plot::
:include-source:
import ihp
c = ihp.cells.npn13G2L()
c.plot()
"""
return import_gds(gdsdir / "npn13G2L.gds")
[docs]
@deprecated
@gf.cell(schematic_function=_npn13G2V_fixed_schematic)
def npn13G2V_fixed() -> gf.Component:
"""Returns npn13G2V fixed cell.
.. plot::
:include-source:
import ihp
c = ihp.cells.npn13G2V()
c.plot()
"""
return import_gds(gdsdir / "npn13G2V.gds")
[docs]
@deprecated
@gf.cell
def npn13G2_base_CDNS_675179387640_fixed() -> gf.Component:
"""Returns npn13G2_base_CDNS_675179387640 fixed cell.
.. plot::
:include-source:
import ihp
c = ihp.cells.npn13G2_base_CDNS_675179387640_fixed()
c.plot()
"""
return import_gds(gdsdir / "npn13G2_base_CDNS_675179387640.gds")
[docs]
@deprecated
@gf.cell
def ntap_fixed() -> gf.Component:
"""Returns ntap fixed cell.
.. plot::
:include-source:
import ihp
c = ihp.cells.ntap_fixed()
c.plot()
"""
# TODO: What is this and how is it different from ntap1?
return import_gds(gdsdir / "ntap.gds")
[docs]
@deprecated
@gf.cell(schematic_function=_ntap1_fixed_schematic)
def ntap1_fixed() -> gf.Component:
"""Returns ntap1 fixed cell.
.. plot::
:include-source:
import ihp
c = ihp.cells.ntap1()
c.plot()
"""
return import_gds(gdsdir / "ntap1.gds")
[docs]
@deprecated
@gf.cell(schematic_function=_pmos_fixed_schematic)
def pmos_fixed() -> gf.Component:
"""Returns pmos fixed cell.
.. plot::
:include-source:
import ihp
c = ihp.cells.pmos()
c.plot()
"""
return import_gds(gdsdir / "pmos.gds")
[docs]
@deprecated
@gf.cell(schematic_function=_pmosHV_fixed_schematic)
def pmosHV_fixed() -> gf.Component:
"""Returns pmosHV fixed cell.
.. plot::
:include-source:
import ihp
c = ihp.cells.pmosHV_fixed()
c.plot()
"""
return import_gds(gdsdir / "pmosHV.gds")
[docs]
@deprecated
@gf.cell(schematic_function=_pnpMPA_fixed_schematic)
def pnpMPA_fixed() -> gf.Component:
"""Returns pnpMPA fixed cell.
.. plot::
:include-source:
import ihp
c = ihp.cells.pnpMPA()
c.plot()
"""
return import_gds(gdsdir / "pnpMPA.gds")
[docs]
@deprecated
@gf.cell
def ptap_fixed() -> gf.Component:
"""Returns ptap fixed cell.
.. plot::
:include-source:
import ihp
c = ihp.cells.ptap_fixed()
c.plot()
"""
# TODO: What is this and how is it different from ptap1?
return import_gds(gdsdir / "ptap.gds")
[docs]
@deprecated
@gf.cell(schematic_function=_ptap1_fixed_schematic)
def ptap1_fixed() -> gf.Component:
"""Returns ptap1 fixed cell.
.. plot::
:include-source:
import ihp
c = ihp.cells.ptap1()
c.plot()
"""
return import_gds(gdsdir / "ptap1.gds")
[docs]
@deprecated
@gf.cell(schematic_function=_rfcmim_fixed_schematic)
def rfcmim_fixed() -> gf.Component:
"""Returns rfcmim fixed cell.
.. plot::
:include-source:
import ihp
c = ihp.cells.rfcmim()
c.plot()
"""
return import_gds(gdsdir / "rfcmim.gds")
[docs]
@deprecated
@gf.cell(schematic_function=_rfnmos_fixed_schematic)
def rfnmos_fixed() -> gf.Component:
"""Returns rfnmos fixed cell.
.. plot::
:include-source:
import ihp
c = ihp.cells.rfnmos()
c.plot()
"""
return import_gds(gdsdir / "rfnmos.gds")
[docs]
@deprecated
@gf.cell(schematic_function=_rfnmosHV_fixed_schematic)
def rfnmosHV_fixed() -> gf.Component:
"""Returns rfnmosHV fixed cell.
.. plot::
:include-source:
import ihp
c = ihp.cells.rfnmosHV_fixed()
c.plot()
"""
return import_gds(gdsdir / "rfnmosHV.gds")
[docs]
@deprecated
@gf.cell(schematic_function=_rfpmos_fixed_schematic)
def rfpmos_fixed() -> gf.Component:
"""Returns rfpmos fixed cell.
.. plot::
:include-source:
import ihp
c = ihp.cells.rfpmos()
c.plot()
"""
return import_gds(gdsdir / "rfpmos.gds")
[docs]
@deprecated
@gf.cell(schematic_function=_rfpmosHV_fixed_schematic)
def rfpmosHV_fixed() -> gf.Component:
"""Returns rfpmosHV fixed cell.
.. plot::
:include-source:
import ihp
c = ihp.cells.rfpmosHV_fixed()
c.plot()
"""
return import_gds(gdsdir / "rfpmosHV.gds")
[docs]
@deprecated
@gf.cell(schematic_function=_rhigh_fixed_schematic)
def rhigh_fixed() -> gf.Component:
"""Returns rhigh fixed cell.
.. plot::
:include-source:
import ihp
c = ihp.cells.rhigh()
c.plot()
"""
return import_gds(gdsdir / "rhigh.gds")
[docs]
@deprecated
@gf.cell(schematic_function=_rppd_fixed_schematic)
def rppd_fixed() -> gf.Component:
"""Returns rppd fixed cell.
.. plot::
:include-source:
import ihp
c = ihp.cells.rppd()
c.plot()
"""
return import_gds(gdsdir / "rppd.gds")
[docs]
@deprecated
@gf.cell(schematic_function=_rsil_fixed_schematic)
def rsil_fixed() -> gf.Component:
"""Returns rsil fixed cell.
.. plot::
:include-source:
import ihp
c = ihp.cells.rsil()
c.plot()
"""
return import_gds(gdsdir / "rsil.gds")
[docs]
@deprecated
@gf.cell(schematic_function=_schottky_nbl1_fixed_schematic)
def schottky_nbl1_fixed() -> gf.Component:
"""Returns schottky_nbl1 fixed cell.
.. plot::
:include-source:
import ihp
c = ihp.cells.schottky_nbl1_fixed()
c.plot()
"""
return import_gds(gdsdir / "schottky_nbl1.gds")
[docs]
@deprecated
@gf.cell
def scr1_fixed() -> gf.Component:
"""Returns scr1 fixed cell.
.. plot::
:include-source:
import ihp
c = ihp.cells.scr1_fixed()
c.plot()
"""
return import_gds(gdsdir / "scr1.gds")
[docs]
@deprecated
@gf.cell
def sealring_CDNS_675179387642_fixed() -> gf.Component:
"""Returns sealring_CDNS_675179387642 fixed cell.
.. plot::
:include-source:
import ihp
c = ihp.cells.sealring_CDNS_675179387642_fixed()
c.plot()
"""
return import_gds(gdsdir / "sealring_CDNS_675179387642.gds")
[docs]
@deprecated
@gf.cell
def sealring_complete_fixed() -> gf.Component:
"""Returns sealring_complete fixed cell.
.. plot::
:include-source:
import ihp
c = ihp.cells.sealring_complete_fixed()
c.plot()
"""
return import_gds(gdsdir / "sealring_complete.gds")
[docs]
@deprecated
@gf.cell
def sealring_corner_CDNS_675179387641_fixed() -> gf.Component:
"""Returns sealring_corner_CDNS_675179387641 fixed cell.
.. plot::
:include-source:
import ihp
c = ihp.cells.sealring_corner_CDNS_675179387641_fixed()
c.plot()
"""
return import_gds(gdsdir / "sealring_corner_CDNS_675179387641.gds")