Appearance
第 4 章:特殊提取场景
来源:
mystic_ug.pdf(W‑2024.09),Chapter 4 Special Use Cases。
本章汇总在 Mystic 环境中较少见但实际项目常遇到的场景:如瞬态波形提取、MOSRA 可靠性分析、基于 PCA 的变异建模、RF 目标的处理、PrimeSim LUT 行为模型以及约瑟夫结(Josephson Junction)器件的提取方法。
4.1 瞬态仿真提取
Mystic 能够像处理 DC/AC 数据一样处理来自 Sentaurus Device 或其它来源的瞬态(Transient)目标数据。本节以一个 RC 时间常数示例(图 12)为例,说明如何上传波形并对 SPICE 模型参数进行拟合。
spice
.subckt rc in out
r in out 100.0
c out 0 1e-12
.ends- 准备目标数据:使用 PrimeSim HSPICE 在
R=100 Ω、C=3e-12 F条件下施加方波激励,生成合成目标波形(图 13),保存为 CSV。 - 上传至数据库:python
Data.from_csv( "rc.csv", ivar="time", stimulus="vin", metadata={"nodes": ["in", "out"], "t": 300}, upload_ds="rc-target-data" )- 瞬态数据的
ivar必须为time,Mystic 会据此生成正确的 SPICE 仿真类型。 stimulus列(此例中为vin)会在后台转成 PWL 源,确保仿真触发条件与目标一致。
- 瞬态数据的
- 编写提取脚本:python优化结束后,可输出参数历史 CSV(图 14)并验证拟合波形。
RC = mdb.Load(ivar="time", dvar="vout") ExtractionUtils.PrintErrors("RC-trans", RC, Simulator, Model, "rmsd") RC.WritePLTFile("RC-trans-init", bias_info=False) C = OptParam("C", 1e-12, 1e-13, 1e-11, 1e-12) ExtractionUtils.DoStage("RC-trans", Model, Simulator, [C], Optimizer, [RC]) RC.WritePLTFile("RC-trans", bias_info=False)
4.2 MOSFET 可靠性(MOSRA)提取
随着 CMOS 缩放,热载流子注入、BTI 等可靠性效应越来越关键。PrimeSim HSPICE 提供 MOSRA 分析以建模器件退化,Mystic 则支持针对 (\Delta V_{th})、(\Delta I_{ds}) 等目标提取 MOSRA 参数。
- CSV 结构:至少包含
temperature、stresstime及一个目标列(如delvth0或dids)。可选列包括实例参数(l)、端口偏置(vdrain、vgate)等。 - 加载方式:MOSRA 数据无需上传数据库,可直接以
SimData.CreateMOSRATarget读取:pythondvth = SimData.CreateMOSRATarget( "mosra_target.csv", target=["delvth0"], instances=["l"], metadata={ "nodes": ["drain","gate","source","substrate"], "mosra": { "bias": {"source": 0.0, "substrate": 0.0}, "mosra_model": "nfet_ra", "base_model": "nfet" } } )mosra_model与base_model必须与模型卡内的 MOSRA/基带模型名称一致。
- 内置方程:若同时提取多条 MOSRA 曲线,仿真开销较大。可设置
Simulator.UseMOSRAEquation = True调用 Mystic 内置方程,在提取结束后再运行一次 PrimeSim 验证。 - 自定义方程:若 PrimeSim 中修改了 MOSRA 模型,可用
SwitchMOSRAEquation替换 Mystic 内置方程:pythonMystic 会触发 PrimeSim 验证以确认误差阈值。def mosra_eq(model, data): L = data.metadata["mosra"]["instances"]["l"] hciap = model.get_model_parameter("nfet_ra.hciap") btiap = model.get_model_parameter("nfet_ra.btiap") return { "delvth0": 1e-3 * btiap * L, "dids": hciap * L } SwitchMOSRAEquation(mosra_eq, Model, dvth, error_threshold=1.0) - 输出:提取完成后可调用
WriteMOSRAFile生成带_target/_fit后缀的 CSV。
4.3 基于 PCA 的变异提取
Mystic 可借助 CorrelatedParameters 类直接在模型卡中引入 PCA 变异,或与 RandomSpice 联动处理 Garand VE 等统计仿真数据。
4.3.1 相关参数(Correlated Parameters)
以 BSIM-CMG 模型为例,选择工作函数(PHIG)、亚阈斜率(CDSC)、低场迁移率(U0)、场依赖迁移率(UA)四个参数:
python
PHIG = OptParam("PHIG", 4.5, 4.2, 4.7, 1.0)
CDSC = OptParam("CDSC", 0.1, 0.0, 10.0, 1.0)
U0 = OptParam("U0", 0.02, 0.006, 1.0, 1.0)
UA = OptParam("UA", 0.3, 0.0, 100.0, 1.0)
CP = CorrelatedParameters([PHIG, CDSC, U0, UA])
CP.setup_model(Model)
CP.update_model(Model)
CP.set_sigma("PHIG", 0.01)
CP.set_sigma("CDSC", 0.001)
CP.set_sigma("U0", 0.005)
CP.set_sigma("UA", 0.002)
CP.set_correlation("PHIG", "CDSC", 0.7)
CP.set_correlation("U0", "UA", 0.8)
CP.update_model(Model, components=2)setup_model/update_model会在模型卡中添加*_var表达式与pcaX随机源(agauss)。components控制 PCA 维度,可忽略贡献较小的主成分。- 设置标准差/相关系数后再次
update_model,即可把综合变异写入模型。
4.3.2 变异目标数据
当拥有 Garand VE 等统计 TCAD 数据时,可直接加载并转换为统计 FoM:
python
IdVg = mdb.Load(ivar="vgate", dvar="idrain", combine=True)
ExtractionUtils.PrintErrors("Variation", IdVg, Simulator, Model, "rmsd")
VtIon = IdVg.MakeFoMTarget(["vt", "ion"], [5e-8, None])
MeanStd = VtIon.MakeFoMTarget(["mean", "std"])combine=True保留ensemble_id作为第二自变量,使 Mystic 识别为 Monte Carlo。- 通过
MakeFoMTarget把分布转换为“均值/标准差”等指标,再对这些 FoM 进行比较或优化(图 15)。 - 亦可写出 PLT/CSV,用 Sentaurus Visual 或 matplotlib 绘制对比。
4.4 RF 提取
RF 场景需拟合导纳(Y)或散射参数(S),同时考虑分布式寄生。Mystic 支持从 Sentaurus Device 小信号 AC 仿真中导入数据、转换矩阵并执行多偏置、多频段拟合。
4.4.1 上传数据
- Sentaurus Device 生成的两端口 Y 参数 PLT(图 16)可通过
Data.from_plt上传:pythonds = dbi.create_dataset(node_prj, "rf-data", clean=True) metadata = { "temperature": 298, "instances": {"l": 3e-8, "w": 5e-5}, "ports": {"1": "gate", "2": "drain"}, "nodes": ["drain","gate","source","substrate"], "bias": {"source": 0.0, "substrate": 0.0} } Data.from_plt( "RFQ_ac_des.plot", ivar="frequency", metadata=metadata, upload_ds=ds, rf_data=True, combine=True )ports映射网络端口与模型端子,常见 MOSFET 为 gate/drain。rf_data=True会返回RF_Data(继承自Data),用于矩阵转换与复数拆分。combine=True将各个 Y 组件横向合并成单一结构,列名格式须符合表 10(如y(11)re、y(12)i)。- 若来源非 Sentaurus,可借助
column_map手动映射列名。
4.4.2 加载与处理
python
Y_data = mdb.Load(
ivar="frequency",
dvar=["y(11)re","y(11)i","y(12)re","y(12)i","y(21)re","y(21)i","y(22)re","y(22)i"]
)
Y_f28 = Y_data.FilterData("eq", 28e9, dtype="ivar")
Y22 = Y_f28.FilterData("eq", ["y(22)re","y(22)i"], dtype="column", mask=True)mask=True可避免多次仿真,并确保根数据仍可用于构建 HSPICE 网表。RF_Data.MakeFoMTarget("convert", "s")可将 Y 转换为 S 参数。
4.4.3 参数拟合与权重
python
cfs = OptParam("submosn.cfringes", 1e-16, 1e-17, 1e-14, 1e-18)
cfd = OptParam("submosn.cfringed", 1e-16, 1e-17, 1e-14, 1e-17)
ExtractionUtils.DoStage(
"Step1", Model, Simulator,
[cfd, cfs], Optimizer,
[Y12_data1, Y12_data2, Y12_data3],
[2, 2, 1]
)- 通过权重
[2,2,1]提升某些偏置的影响度,以兼顾全频段性能。 - 拟合完成后可
WritePLTFile/WriteCSVFile导出,再用 Sentaurus Visual 绘制散射参数拟合(图 17)。
4.5 Lookup Table (LUT) 建模
当紧凑模型尚未完整建立时,可先用 PrimeSim LUT 行为模型做快速分析。过程:
- 上传数据:与常规 I–V/Q–V 数据一致,需包含四端电压/电流与长度、宽度、温度等元数据。
- 重采样:python
IV = mdb.Load(project=target_project, ivar="vgate", combine=True, extra_index="all") IVr = IV.resampleNd(points={"vdrain": 51, "vgate": 51, "vsubstrate": 11})combine=True+extra_index="all"将所有偏置整合成单对象,便于resampleNd构建均匀网格。- 网格越密,LUT 响应越平滑,但仿真时间更长。
- 写出 LUT:python输出文件命名示例:
column_map = { "vdrain": "Vds", "vgate": "Vgs", "vsubstrate": "Vbs", "idrain": "Id", "igate": "Ig", "isource": "Is", "qdrain": "Qd", "qgate": "Qg", "qsource": "Qs" } Simulator.write_LUT(IVr[0], "nmosmod", path="LUT_MODELS", column_map=column_map)LUT_MODELS/nmosmod_W1u_L32n_T27.dat。 - 验证:切换 PrimeSim 执行体并打印误差:python理想情况下误差≈0,代表 LUT 仿真与目标一致。
Simulator.executable = "primesim" ExtractionUtils.PrintErrors("IV", IVr, Simulator, Model, "rmsd")
4.6 约瑟夫结(Josephson Junction)提取
约瑟夫结由两个超导电极夹一层绝缘层组成,低温下可在无电压时产生超导电流,被用于 RSFQ 数字电路、SQUID、超导量子位等。PrimeSim HSPICE 提供对应行为模型,Mystic 则可针对拟合器件的准静态 I–V 数据进行提取。
4.6.1 关键 FoM
- 原始瞬态 I–V 往往噪声大,直接拟合困难。可先应用时间平均的
.MEASURE(命令jj-avg)平滑波形:pythoniv = mdb.Load(ivar="time", temperature=4.2) iv_smooth = iv.ApplyMeasure("jj-avg") iv_smooth.TestMeasure(Simulator) - 之后计算图 8 中的特征点 P1–P5 及
rnorm、rsg:pythonp1, p2, p3, p4, p5 = (iv_smooth.P1()[0], iv_smooth.P2()[0], ...) rnorm = iv_smooth.rnorm()[0] rsub = iv_smooth.rsg() - 由于 PrimeSim 模型为行为型,可直接用 FoM 设参:python
Model.SetModelParameter("ics", p1) Model.SetModelParameter("rnorm", rnorm) Model.SetModelParameter("rsub", rsub) Model.SetModelParameter("vgap", (p2 + p3)/2) Model.SetModelParameter("delv", p3 - p2)
4.6.2 温度依赖优化
- 温度升高会降低隧穿势垒,可对
tc、tcfct做贝叶斯优化:pythonOptimizer.set_method("doe") Optimizer.set_optimization_parameters(method="bayesian_optimizer", Ns=10, do_plots=True) tcfct = OptParam("jj_u.tcfct", 1.5, 1.5, 2.5, 100.0) tc = OptParam("jj_u.tc", 9.28, 7.1, 9.5, 10.0) p2 = iv_smooth.MakeFoMTarget("p2", add_as_fom=True, apply_to_measure=True) p3 = iv_smooth.MakeFoMTarget("p3", add_as_fom=True, apply_to_measure=True) ExtractionUtils.DoStage("Stage1", Model, Simulator, [tc, tcfct], Optimizer, [p2, p3], parallel=True) - 由于经历多层转换(平滑 + FoM),传统梯度算法难以收敛,贝叶斯优化通过拉丁超立方采样+高斯过程回归在参数空间中搜索最优误差(图 18)。
4.6.3 数据输出
- 目标/拟合 I–V 可通过
WritePLTFile或WriteCSVFile导出,Sentaurus Visual 中能直观看到不同温度下的拟合效果(图 19),验证提取得到的tc、tcfct与目标一致。