TSMC28HPC+ 原生工艺适配¶
文档状态:持续维护的适配指南。 当前范围是下文列出的 0.9 V core MOS wrapper 和分析链路,不代表完整 iPDK 支持。
tsmc28hpcp binding 在 circuitopt 内部直接求值用户本地已有许可的 TSMC
28HPC+ 模型。默认的 tsmc28hpcp.nmos / tsmc28hpcp.pmos 不会启动
ngspice:代码自行解析 HSPICE library 闭包、foundry MOS 宏和尺寸 bin,再由
项目内置的 Berkeley BSIM4.5 原生后端完成器件求值。
当前目标是 1d8 HSPICE deck 中的 0.9 V core nch_mac / pch_mac。foundry
文件只保存在本机,不提交到 Git;这避免误上传,但不会改变 license/NDA 约束。
模型入口¶
项目内标准可迁移入口是:
当前 core MOS 适配只需要这个主模型文件,不需要复制完整 iPDK delivery。
PDK/tsmc28hpcp/models/ 已被 Git 忽略。
外部安装可以使用:
解析顺序为 TSMC28_MODEL_DIR、TSMC28_PDK_ROOT、项目内标准入口,最后是
PDK_ROOT/tsmc28hpcp。JSON 和 Python 源码中不记录任何电脑的绝对路径。
随代码提供的 Berkeley BSIM4.5 器件源码在构建期被编译进 circuitopt_core
扩展(由 co-bsim4 Rust crate 驱动构建),而不是运行时首次使用才编译。安装
发布好的 circuitopt-core wheel 完全不需要编译器;从源码构建它则需要一次
Rust 工具链(rustup)和 C 编译器:maturin develop --release -m
rust/crates/co-py/Cargo.toml。正常仿真不需要 ngspice。
JSON 绑定¶
{
"devices": [
{"name": "MN", "drain": "OUT", "gate": "IN", "source": "GND", "W": 1.0, "L": 0.03},
{"name": "MP", "drain": "OUT", "gate": "IN", "source": "VDD", "W": 2.0, "L": 0.03}
],
"models": {
"MN": {"pdk": "tsmc28hpcp", "model": "nmos",
"section": "inherit", "bin": "auto"},
"MP": {"pdk": "tsmc28hpcp", "model": "pmos",
"section": "inherit", "bin": "auto", "vb": 0.9}
},
"bias": {"VDD": 0.9}
}
W、L单位为 µm。NF原生传给 foundry macro,不在 wrapper 外重复缩放。- PMOS bulk 通常显式设置为 core 电源
vb=0.9。 - 支持
tt、ss、ff、sf、fs;nom是tt别名。 temperature单位为 K。- 单管阈值失配通过 macro 的
_delvto参数传入。
分析覆盖¶
原生路径支持:
- 非线性 DC 和完整四端工作点电流;
- AC/PAC 的四端电导与电荷线性化;
- Noise/PNoise 的四端相关白噪声和 flicker 噪声矩阵;
- 电荷守恒的 backward-Euler 与 Gear2 瞬态;
- 带解析四端 monodromy 的 PSS shooting;
- PAC 谐波转换与 PNoise 周期噪声折叠。
PNoise 会保留端口间相关性,并从模型中提取 flicker 指数,不再把所有器件都固定
假设为严格 1/f。
ngspice 只保留为独立 oracle。需要交叉核对时,显式使用
tsmc28hpcp_ngspice.nmos / tsmc28hpcp_ngspice.pmos,或调用
circuitopt.ngspice_ac 中的完整电路 helper。只有这条 oracle 路径需要
NGSPICE_BIN。
当前代码负责电路仿真和优化,不负责 Cadence library 导入、版图、DRC/LVS、PEX、 可靠性检查或 tapeout sign-off;这些仍应使用官方 iPDK 与 foundry 认可的工具。
5T OTA 验证¶
验证电路严格只有五只 MOS,不含 ADC/CDAC:
python experiments/tsmc28_5t_ota_compare.py \
--output /tmp/tsmc28_5t_compare.json
pytest -q tests/test_tsmc28_5t_ota.py
脚本用同一份 TSMC28 5T OTA 分别运行原生后端和显式 ngspice oracle,对比五只管子的
Id/gm/gds、差分 AC、1 kHz 到 10 GHz 输出积分噪声,以及 2 mV 差分输入阶跃
瞬态。报告内置固定验收阈值,并给出顶层 passed 标志。