IHP SG13G2 130nm BiCMOS PDK Package for Hdl21
Project description
IHP SG13G2 Hdl21
Hdl21 PDK package for the open-source IHP SG13G2 130nm BiCMOS PDK.
About This Technology
IHP SG13G2 is a 130nm BiCMOS technology featuring high-performance SiGe:C npn-HBTs with:
- fT up to 350 GHz
- fmax up to 450 GHz
This makes it particularly well-suited for RF, high-speed analog, and mixed-signal applications.
The IHP Open PDK is developed and maintained by IHP (Leibniz Institute for High Performance Microelectronics) as part of the open-source silicon ecosystem.
Related Projects:
- IHP-Open-PDK - Official IHP Open PDK repository
- IHP GDSFactory PDK - Python/GDSFactory integration
About this PDK Package
ihp_hdl21 defines a set of hdl21.ExternalModules comprising the essential devices of the IHP SG13G2 130nm BiCMOS PDK, and a compile method for converting process-portable hdl21.Primitive elements into these modules.
Installation
Install from local source:
pip install -e pdks/IHP
And then import the package as ihp_hdl21:
import ihp_hdl21
assert ihp_hdl21.primitives is not None # etc
PDK Install Data
Silicon process technologies generally require non-Python data to execute simulations and other tasks. IHP is no different. Those files are not distributed as part of this package. The ihp_hdl21 package defines an Hdl21 PdkInstallation type ihp_hdl21.Install, which includes references to any such out-of-Python data, generally in the form of filesystem paths.
A typical installation setup:
from pathlib import Path
import ihp_hdl21
# Point to your IHP-Open-PDK installation
pdk_path = Path("/path/to/IHP-Open-PDK/ihp-sg13g2")
model_lib = Path("libs.tech/ngspice/models")
ihp_hdl21.install = ihp_hdl21.Install(
pdk_path=pdk_path,
model_lib=model_lib
)
The IHP Open PDK supports simulation with:
List of Available Devices
All PDK units are in microns (um).
MOSFETs
MOSFETs can be defined using width (W), length (L), and number of gate fingers (ng). The IHP PDK provides both low-voltage (1.2V core) and high-voltage (3.3V I/O) devices.
MOSFETs in Hdl21 are designed to be PDK-agnostic:
import ihp_hdl21
from hdl21.primitives import Mos, MosType, MosFamily, MosVth
# Low-voltage NMOS
lv_nmos = Mos(vth=MosVth.STD, tp=MosType.NMOS, family=MosFamily.CORE)
ihp_hdl21.compile(lv_nmos) # Compiles to sg13_lv_nmos
# High-voltage PMOS
hv_pmos = Mos(vth=MosVth.STD, tp=MosType.PMOS, family=MosFamily.IO)
ihp_hdl21.compile(hv_pmos) # Compiles to sg13_hv_pmos
Or reference directly:
from ihp_hdl21 import IhpMosParams
import ihp_hdl21.primitives as s
lv_nmos = s.LV_NMOS(IhpMosParams(w=1.0, l=0.13, ng=1))
| Component Key | MosType | MosFamily | SPICE Subcircuit | Min L (um) | Description |
|---|---|---|---|---|---|
| LV_NMOS | NMOS | CORE | sg13_lv_nmos | 0.13 | Low-voltage 1.2V NMOS |
| LV_PMOS | PMOS | CORE | sg13_lv_pmos | 0.13 | Low-voltage 1.2V PMOS |
| HV_NMOS | NMOS | IO | sg13_hv_nmos | 0.45 | High-voltage 3.3V NMOS |
| HV_PMOS | PMOS | IO | sg13_hv_pmos | 0.45 | High-voltage 3.3V PMOS |
HBT Bipolar Transistors
IHP's SiGe:C HBTs are the highlight of this technology, offering exceptional RF performance.
Important: HBTs have 4 terminals (c, b, e, bn) where bn is the base node/substrate connection. This differs from the standard 3-terminal Hdl21 Bipolar primitive. For full control, use direct instantiation:
from ihp_hdl21 import IhpHbtParams
import ihp_hdl21.primitives as s
hbt = s.NPN13G2(IhpHbtParams(Nx=1, Ny=1, m=1))
| Component Key | SPICE Subcircuit | Terminals | Description |
|---|---|---|---|
| NPN13G2 | npn13G2 | c, b, e, bn | Standard HBT |
| NPN13G2L | npn13G2l | c, b, e, bn | Large HBT |
| NPN13G2V | npn13G2v | c, b, e, bn | Variable emitter HBT |
| NPN13G2_5T | npn13G2_5t | c, b, e, bn, t | 5-terminal HBT |
| NPN13G2L_5T | npn13G2l_5t | c, b, e, bn, t | Large 5-terminal HBT |
| NPN13G2V_5T | npn13G2v_5t | c, b, e, bn, t | Variable 5-terminal HBT |
| PNPMPA | pnpMPA | c, b, e | Lateral PNP |
Resistors
IHP resistors are 3-terminal devices with a bulk connection:
from ihp_hdl21 import IhpResParams
import ihp_hdl21.primitives as s
# High-resistivity polysilicon resistor
rhigh = s.RHIGH(IhpResParams(w=0.5, l=10.0, m=1))
| Component Key | SPICE Subcircuit | Terminals | Sheet R | Description |
|---|---|---|---|---|
| RSIL | rsil | p, n, b | ~7 ohm/sq | Silicided polysilicon |
| RHIGH | rhigh | p, n, b | ~1k ohm/sq | High-resistivity polysilicon |
| RPPD | rppd | p, n, b | ~300 ohm/sq | P-doped polysilicon |
Capacitors
from ihp_hdl21 import IhpCapParams
import ihp_hdl21.primitives as s
# MIM capacitor
cmim = s.CAP_CMIM(IhpCapParams(w=10.0, l=10.0, m=1))
| Component Key | SPICE Subcircuit | Terminals | Description |
|---|---|---|---|
| CAP_CMIM | cap_cmim | p, n | MIM capacitor |
| CAP_RFCMIM | cap_rfcmim | p, n, b | RF MIM capacitor |
| SVARICAP | sg13_hv_svaricap | g1, w, g2, bn | Varactor |
Diodes and ESD Devices
from ihp_hdl21 import IhpDiodeParams, IhpEsdParams
import ihp_hdl21.primitives as s
schottky = s.SCHOTTKY_NBL1(IhpDiodeParams())
esd = s.DIODEVDD_2KV(IhpEsdParams())
| Component Key | SPICE Subcircuit | Terminals | Description |
|---|---|---|---|
| SCHOTTKY_NBL1 | schottky_nbl1 | a, c, s | Schottky diode |
| DIODEVDD_2KV | diodevdd_2kv | vdd, pad, vss | ESD protection (2kV) |
| DIODEVDD_4KV | diodevdd_4kv | vdd, pad, vss | ESD protection (4kV) |
| DIODEVSS_2KV | diodevss_2kv | vdd, pad, vss | ESD protection (2kV) |
| DIODEVSS_4KV | diodevss_4kv | vdd, pad, vss | ESD protection (4kV) |
Corner Models
The IHP PDK provides process corner models for simulation:
import hdl21 as h
import ihp_hdl21
# Get typical corner model include for LV MOS
lib = ihp_hdl21.install.include_mos_lv(h.pdk.Corner.TYP)
# Available corners: TYP, FAST, SLOW
# Available include methods:
# - include_mos_lv(corner) - LV MOS
# - include_mos_hv(corner) - HV MOS
# - include_hbt(corner) - HBT
# - include_res(corner) - Resistors
# - include_cap(corner) - Capacitors
Example: Simple Inverter
import hdl21 as h
from hdl21.primitives import Mos, MosType, MosFamily
import ihp_hdl21
@h.module
class Inverter:
vdd = h.Port()
vss = h.Port()
inp = h.Port()
out = h.Port()
# LV transistors (1.2V core)
p = Mos(tp=MosType.PMOS, family=MosFamily.CORE)(
g=inp, d=out, s=vdd, b=vdd
)
n = Mos(tp=MosType.NMOS, family=MosFamily.CORE)(
g=inp, d=out, s=vss, b=vss
)
# Compile to IHP technology
ihp_hdl21.compile(Inverter)
# Generate SPICE netlist
from io import StringIO
h.netlist(Inverter, StringIO(), fmt="spice")
Development
pip install -e "pdks/IHP[dev]"
Run tests:
pytest pdks/IHP/ihp_hdl21/
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ihp_hdl21-7.0.0.tar.gz.
File metadata
- Download URL: ihp_hdl21-7.0.0.tar.gz
- Upload date:
- Size: 18.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
66d82347cb37f85e5885acc6c44e15050542c024813387fdbfb29e312c81bf9e
|
|
| MD5 |
31c22a8c5a2268774e045afe603b4c02
|
|
| BLAKE2b-256 |
c0907e90054268605d29c10c34c6134e58d80cef4ae1f8fed7789999166b5f34
|
File details
Details for the file ihp_hdl21-7.0.0-py3-none-any.whl.
File metadata
- Download URL: ihp_hdl21-7.0.0-py3-none-any.whl
- Upload date:
- Size: 22.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2ce7d05f127d4ae40b0b307f9891175e9e2fad0ae6913ca578c3481efe384ddf
|
|
| MD5 |
dffb028493b4f13ff494a99a0a6c5e9b
|
|
| BLAKE2b-256 |
f65daf2ee63e35972c4124a52319724c6ad41e47eb407eb0f7645c41a2bfb986
|