拓冰建站拓冰建站
首页 / 资讯中心 / 正文

用Cadence SP仿真提取MOS电容C-V曲线:从S参数到Y参数的完整教程

说实话刚接触MOS管电容提取的时候工具书上教的办法十有八九都是在栅极挂一个AC源然后用电流虚部去算电容。这个套路在低频下确实能跑而且很多老工程师用了一辈子也没出过大问题。但我自己越用越不舒服一到多端口、高频条件或者要跟实验室网络分析仪数据对齐的时候AC仿真的那一套就特别笨重。后来我开始用Cadence里的SP分析也就是S参数分析把MOS电容当成一个单端口器件去测S11再转成Y参数提取等效电容这才算把C-V曲线这件事彻底理顺。这篇教程不废话直接从为什么选SP分析讲起然后带着你搭testbench、配置仿真器、提取数据、画出完整的C-V曲线最后把我在几个项目里踩过的坑全部列出来。1. 为什么我放弃AC仿真改用SP仿真提MOS电容1.1 AC仿真提C-V的常规操作以及它哪里别扭先说大多数人习惯的做法在ADS或者Cadence里监控栅极电流虚部算电容。Cadence Virtuoso里具体是放一个NMOS栅极接一个vdc直流源再串一个ac源ac magnitude设为1V源、漏、衬底接地。然后跑DC Sweep每次工作点做一个频率固定的AC分析读流入栅极的电流用C Im(I) / (2*pi*f*Vac)把电容算出来。这个流程能用但用起来有四个实实在在的痛点第一AC源和直流源串联时正负方向特别容易接反。方向一错电流虚部整体变号算出来的电容就成了负的。新人第一次画这种Testbench十个里面有五个人会被“负电容”卡住。第二AC源是理想电压源内阻为零。这跟真实网络分析仪的50Ω系统完全不是一回事。你算出来的电容是“理想电压源看到的电容”不是“50Ω系统里S参数测到的电容”跟实测数据做对标时经常对不上。第三当被测节点旁边还有别的寄生通路时比如栅漏电、衬底二极管漏电、保护环寄生电容你读到的总电流是很多分量叠加的结果。想单独提取栅电容就得去波形窗口里精确点中MOS管的那一个terminal非常考验眼力而且容易点错。第四AC分析里没有端口概念。你在射频设计里做阻抗匹配、看Smith圆图、做de-embedding的时候AC分析撑不起来。所以我后来转向S参数仿真不是因为它更高端而是它更接近“测电容”这件事本身的逻辑。1.2 SP仿真相当于仿真界的网络分析仪Cadence里的sp分析全称就是S-Parameter分析。它做的事情说白了就是你在仿真环境里架了一台虚拟网络分析仪。给被测网络一个端口定义好参考阻抗然后算这个端口的反射系数进而给出S参数矩阵、Y参数矩阵、Z参数矩阵。对一个MOS电容来说栅极是Port 1的正端源、漏、衬底短路到地作为参考地这样一个单端口网络就出来了。SP仿真会帮你算出不同直流工作点、不同频率下的S11然后Cadence可以直接把S参数转换成Y参数。Y参数里的Y11就是输入导纳而电容的导纳公式是jωC。所以在固定频率下Y11的虚部除以角频率就是等效电容。用SP仿真提取C-V曲线还有一个天然优势一次仿真可以得到全部频率点的电容数据。比如我常用1MHz、10MHz、100MHz三条C-V曲线叠加在一起看频率色散这在AC仿真的工作流里要分别跑好几轮。1.3 用S参数提取C-V的适用边界当然SP仿真不是万能药它也有自己的适用边界别盲从。如果你的目标特别简单低频、单端口、只是想看看电容量级有没有接错那AC分析反而更快一个vdc加一个iprobe就能解决。但如果你要面对的是以下这些场景SP仿真明显更靠谱需要得到电容随频率分散性的完整曲线需要直接输出S参数或Y参数做后续匹配网络设计需要跟实验室网络分析仪数据对标需要提取差分电容、多端口耦合电容需要跑完C-V直接接着做阻抗匹配。在fF量级的超小电容上SP仿真反而没有AC分析稳定因为器件阻抗太高S11接近全反射数值上容易抖动。所以我个人建议pF量级以上的电容提取SP仿真优先fF量级的小电容老老实实用AC分析或者把多个管子并联起来凑成pF再测。2. 动手前必须算清楚的等效模型与公式2.1 MOS电容三个工作区直接决定曲线形状做C-V曲线之前最好先理解你测的到底是什么。以NMOS为例栅极是上极板P型衬底是下极板中间是一层氧化层。栅压从负扫到正表面会经历三个典型状态积累区Vgs 0衬底里的空穴被吸引到栅氧化层下方等效电容接近栅氧化层电容Cox曲线在高压值平台耗尽区0 Vgs Vth表面出现耗尽层耗尽层电容和Cox串联总电容下降形成曲线的最低谷反型区Vgs Vth表面反型出电子如果源、漏、衬底都接地反型层的载流子可以从源漏获得电容会重新回升到Cox附近。所以一条典型的NMOS C-V曲线应该是先高、再低、再高像个“浴缸”。如果你用PMOS去测方向反过来但趋势一样。这个基础决定了你后面判断曲线是否正常的依据。比如你跑出来在反型区电容没有回升那很可能是源漏没接对或者频率太高导致反型层响应跟不上呈现出了高频C-V特征。2.2 Y11到电容的两套换算公式用错会差很多从Y参数提取电容最常用的公式是C_parallel imag(Y11) / (2 * pi * f)这个公式的物理假设是把被测器件等效成并联RC模型也就是一个电导和一个电容并联。对大多数MOS电容来说这个假设并不完全正确因为栅极本身存在多晶硅电阻、沟道电阻它们跟栅电容更像是串联关系。所以我在实际项目里更习惯用串联等效模型来提电容C_series -1 / (2 * pi * f * imag(1 / Y11))当Y11的实部远小于虚部时也就是损耗很小、Q值很高的时候这两个公式算出来的结果几乎一样。但是一旦栅电阻变大或者频率升高imag(Y11)/ω算出的电容会比真实串联电容偏小而且偏差随频率升高越来越大。这就是为什么很多人在高频SP仿真里用第一种公式算出的C-V曲线在高栅压区会“塌陷”。2.3 为什么我不建议直接用S11相位换算电容有朋友问过我既然已经测了S11能不能直接用C -1 / (2 * pi * f * Z0 * tan(theta))之类的小角度近似去算可以但我非常不建议。原因是S11的相位在器件阻抗远大于50Ω时变化非常缓慢相位角很小你对相位做微小误差换算到电容上会被放大好几倍。尤其当MOS电容在1MHz下阻抗可能高达几百kΩ甚至几MΩS11的相位接近180度附近数值精度很成问题。更稳的做法永远是先把S参数转成Y参数或Z参数再基于导纳/阻抗的虚部去换算。Cadence的Direct Plot可以直接出Y参数你不用自己在S和Y之间做矩阵变换这个后面会细说。3. 保姆级实操搭建SP仿真用的C-V测试台3.1 器件选择普通NMOS还是PDK里的MOSCAP理论上你随便放一个普通NMOS、把源漏衬底短接到地、栅极作为输入就是一个MOS电容。这种接法在很多设计里被当成去耦电容用也叫“MOS Cap”。但PDK里往往还有专为电容应用优化的器件名字通常是moscap、ncap、nch_mac、nfet_3p3_mac之类的不同工艺叫法不一样。专门MOSCAP和普通NMOS的差别主要在模型里专门器件会针对栅电阻、沟道电阻、寄生well电容做更精细的建模甚至包含stress效应修正。如果PDK里有我建议优先用专门MOSCAP如果只是想快速验证一个思路用普通NMOS也完全可以只要记住源、漏、衬底必须短接别悬空。我做实验通常用普通NMOS原因是可以完全控制尺寸和连接关系不受PDK里varactor自带寄生模型的干扰。用哪种器件本身没有对错关键是你得清楚自己到底在标定什么样的物理结构。3.2 连接方式与端口放置这一步最容易翻车Testbench的连接方式很关键这里直接给标准接法从analogLib里调一个port元件注意不是vsource也不是iprobe是port。port的正端接NMOS的栅极负端接地。NMOS的漏极、源极、衬底三端全部短接后接地。器件库里的NMOS如果衬底是独立的B端一定要显式接一个gnd不要让它默认悬空。这个接法下被测网络就是“栅极对地”的单端口网络S参数的参考地就是gnd。你后面在SP分析里选Port时选这个PORT0即可。这里有一个我踩过的坑port元件的正负方向不能接反。如果正端跑到了地、负端接到了栅极Y11的虚部会整体反号算出来的电容永远为负。你检查半天器件参数、模型库最后发现只是symbol方向画反了非常抓狂。建议在schematic上把port的标记对齐到栅极走线一端。3.3 器件参数建议尺寸、模型库、初始偏置器件尺寸方面我一般从W/L比较大开始比如W20um、L0.18um按你工艺实际最小沟长来选finger数设4到8个。目标是把栅电容做到pF量级这样S参数测起来比较舒服。如果管子太小电容只有几十fF在1MHz下阻抗几百MΩS参数计算虽然不会报错但提取结果对数值噪声很敏感画出来的C-V曲线会毛刺满天飞。模型库的选择在ADE L里打开Setup - Model Libraries添加PDK自带的spectre模型文件。这一步不要跳很多人跑SP仿真报“model undefined”八成是模型库路径没加对或者加了但section没选对。初始偏置可以设0V因为后面我们要扫栅压这里不用纠结初始工作点。4. 保姆级实操在ADE里把SP仿真和直流扫描串起来4.1 一个可行的连接方案用port的DC偏置当扫描对象如果你在模拟库里把vdc直接并到栅极上那完了因为理想电压源对交流是短路的S参数信号会被vdc全部吸走栅极根本测不到任何电容响应。这时候有两条路路1在vdc和栅极之间串一个大电感作为射频扼流圈RF choke让直流偏置能加到栅极同时交流信号被电感挡在外部。这个办法理论上可行但大电感在SP仿真里容易引入谐振峰且频谱上会叠加一个讨厌的寄生响应不推荐新手用。路2直接用port元件的DC Voltage参数来加偏置。这是我最推荐的方法。在schematic里双击port把它的DC voltage参数设成一个变量名比如vgs初始值填0。然后在ADE里把vgs注册成Design Variable。这样SP分析的扫描变量直接设成vgs就不用额外外接直流电压源了。路2的核心是把直流偏置“藏”在端口模型内部。SP仿真本身的目标就是测端口的S参数port内部的理想源和参考阻抗是仿真框架自己处理的不需要外部直流路径来干扰交流信号。这也是SP仿真比AC仿真更干净的地方之一。4.2 sp分析窗口里的完整参数配置打开Virtuoso的ADE L在Analyses里选择sp也就是S-Parameter分析。弹出窗口里需要配置三块第一块是端口选择。确保Port那一栏选中的是schematic里的PORT0而不是别的器件。第二块是频率扫描。我常用的频率范围是1MHz到10GHzType选Logarithmic点数设201。但如果你只是为了提C-V曲线其实频率范围没必要这么宽直接选一个点或窄带扫描就行。真正画C-V曲线时我们关心的是某个特定频率下的Y11比如1MHz。第三块是变量扫描。在SP分析窗口里通常会有一个Sweep Variable的区域下拉框里选择vgs然后设置Start-1.5、Stop1.5、Step0.05。这样仿真会从-1.5V到1.5V每隔0.05V跑一遍完整的S参数扫描。运行结束后结果是一个“family”每一族对应一个栅极电压。仿真器务必选spectre因为在Cadence里S参数分析是spectre仿真的强项默认的ams等仿真器不一定支持完整的SP分析。4.3 频点范围和扫描步长的选择逻辑很多新手问为什么非得选1MHz我的习惯是提取C-V曲线时固定频率在1MHz同时额外跑一条100MHz作为对照。理由有三个1MHz是实验室LCR表的常用测试频率仿出来的C-V可以直接和实测数据对标1MHz下大多数MOS电容的Q值很高Y11的虚部主导电容提取公式的误差最小频率过高时寄生电感、非准静态效应都会冒出来C值会偏离真实静态电容你反而不容易判断曲线对不对。如果你怀疑模型里有巨大的栅电阻可以看一下100MHz甚至1GHz下的C-V曲线。随着频率升高如果高栅压区电容明显下降那基本可以断定是串联电阻在捣鬼。直流扫描步长方面0.05V够用画出来的曲线足够平滑。如果你想把阈值附近的转折看清楚可以单独把扫描范围缩窄到0V到0.6V步长压到0.01V重新跑一次没必要在整个电压范围都这么密纯属浪费仿真时间。5. 提取结果并画出C-V曲线5.1 用Direct Plot导出Y参数仿真跑完选择Results - Direct Plot - S Parameter然后在弹出的子菜单里选Y Parameters。这里你会看到一个选项列表包括Y11、Y12、Y21、Y22。对我们这个单端口MOS电容来讲直接选Y11。接下来Cadence会问你要选择哪个频率点或哪个扫描点。这样做是正确的因为我们想看C-V曲线横轴是栅压vgs所以在这里要选一个固定频率比如1MHz。然后在“Sweep”那一项里选vgs作为横轴。点击OK或Plot波形窗口就会画出Y11随vgs变化的曲线纵轴单位是S西门子。注意Cadence默认可能画的是Y11的幅度或相位不是实部虚部。你在Plot里要再手动选一下把曲线切换成Imaginary虚部或者用Calculator里的imag函数把它分量拿出来。5.2 在Calculator里把Y11换算成电容值直接在波形窗口里看Y11虚部单位是S没法直观当电容用。打开Calculator用getData把Y11这个waveform取出来。不同版本里变量名略有差异一般叫SP.Y11或者Y11你在Calculator里点一下V图标再从结果列表里选Y11就行。然后输入下面任一表达式并联等效imag(v(Y11 ?result sp)) / (2 * 3.14159 * 1e6)串联等效-1 / (2 * 3.14159 * 1e6 * imag(1 / v(Y11 ?result sp)))把表达式Add到Calculator的buffer里然后点一下绿色的plot一个新的waveform就出来了。它的横轴仍然是vgs纵轴单位是F法拉这就是你要的C-V曲线。如果你比较熟悉ocean脚本也可以直接用脚本批量提openResult(resultDir) selectResult(sp) y11 getData(Y11 ?result sp) c imag(y11) / (2 * 3.14159 * 1e6) plot(c)这个脚本在不同的Cadence版本里函数名可能不太一样但核心思路是把Y11的虚部提出来除以角频率。5.3 把结果整理成“横轴为栅压”的C-V曲线大多数情况下上面的步骤画出来横轴已经是vgs。如果你的横轴变成了频率那说明你在Direct Plot时选择了错误的横轴回去重新看一眼把Sweep选成vgs。画出来后如果纵轴显示的是10^-15到10^-12这样的科学计数法可以把它换算成fF更直观直接在计算的表达式后面乘以1e15单位就变成fF。这一步纯粹是为了视觉友好不乘也行。我还习惯把不同的沟道长度或不同器件的C-V曲线叠加在一张图上对比比如分别跑Lmin、L0.35um、L1um三条曲线叠在一起一眼能看出沟长对电容的影响。5.4 一个数值校验例子防止单位换算出错给你一个具体例子方便对照验证假设在vgs0.5V时1MHz频率下你读到的Y11虚部是6.28e-6 S。代入公式C 6.28e-6 / (2 * 3.14159 * 1e6) 1e-12 F 1pF如果同时读到Y11实部是1e-6 S说明这个偏置点的等效并联电导存在但对电容提取影响不大因为虚部比实部大。反之如果实部比虚部还大那说明这个频点下电容已经被电阻吃掉了很多你测到的所谓“电容”其实是损耗主导这时候要么降低频率要么改用串联等效公式。还有一个特别有效的自检方法在同样Testbench里把MOS管临时换成analogLib里的理想电容比如1pF跑一遍SP仿真看提取出来是不是正好1pF。如果这个链路都不对那一定是你Port设置或公式写错了先别折腾MOS管模型。6. 验证与排查曲线不对时先查这几项6.1 和传统AC仿真交叉验证的步骤SP仿真提取的C-V曲线到底靠不靠谱最直接的验证方法就是跟AC仿真做交叉验证。改回老套路把port拆掉换成vdc扫描vgs串联一个AC源AC幅度设1V。做AC分析频率固定1MHz扫描vgs从-1.5V到1.5V。然后读出MOS管栅极电流的虚部用之前那个公式算出电容曲线。你把两条曲线叠在一起正常情况下低频段应该基本重合。如果有偏差优先检查SP提取公式里有没有用错等效模型以及频率是否一致。这个交叉验证很值得做一次尤其你第一次用SP流程的时候它能给你建立信心。6.2 负电容、尖峰、台阶的典型原因我总结了一张日常排查表基本覆盖了最常见的异常异常现象常见原因处理办法整个曲线都是负电容port正负端接反或Y参数选了Y12换方向重跑确认选择Y11个别点出现尖峰扫描步长过大或者模型在偏置点迭代不收敛缩小vgs步长或减小频率范围曲线呈台阶状vgs步长太粗看起来像量化改用0.01V步长重跑高频段电容异常变大寄生电感、传输线效应降低提取频率或改用窄带SP反型区电容不回升源漏悬空、频率过高、模型高频特征把S/D/B都接到地看低频曲线曲线很多毛刺电容太小、S参数接近全反射增大W/L或做多个管子并联这些坑我基本都踩过。尤其是“负电容”新手遇到大概率会怀疑自己公式写错了实际上90%的情况是port方向反了。6.3 端口阻抗和串联电阻对电容值的影响如果你在port和MOS栅极之间串了任何电阻这个电阻会被计入Y11。轻则让提取出的电容变小重则在高频时把曲线完全歪曲。我在早期图省事为了防振串过一个10Ω电阻本来想着影响不大结果1GHz下提取的电容直接缩水了三分之一。如果你非要在测试通路里保留一个电阻请记住它带来的影响可以用串联等效公式近似补偿但最好还是别串。让port直接怼到栅极连线中间不要放任何无源器件。6.4 SP仿真不收敛的补救手段SP仿真最常见的不收敛其实是频率范围设得太宽或者器件模型在某个偏置点迭代不下去。我一般按下面顺序排查第一把频率范围缩小。比如本来1MHz到100GHz先缩到1MHz到10GHz通常就能跑通。如果你只是提C-V频率范围真的不重要完全可以只跑一个频点。第二换成aps仿真器模式。ADE里仿真器可以从spectre切换到spectre APS有时瞬态不收敛但S参数分析里APS的收敛性反而更好。第三调整仿真精度选项。在ADE菜单里打开Simulation - Options - Analog可以试着把gmin设成1e-15到1e-12或者关掉某些高精度迭代。这属于偏经验的做法每次建议只改一个参数别一起改。第四检查Testbench里有没有悬空节点。MOS管的衬底、D端、S端任何一个悬空都容易让SP分析在直流工作点计算时翻车。实际上我现在很少遇到不收敛了因为流程稳定后基本就只跑窄带SP。只要你把Testbench搭干净、频率范围控制住spectre的SP分析是很稳的。如果你刚开始用这个流程我的建议是先放一个理想1pF电容把从testbench搭建到Calculator提取的全链路跑通再换真实MOS管。这样能把变量控制到最小很快就能建立起一套自己顺手的工作流。后面再遇到需要提电感Q值、去嵌寄生网络、看差分电容的场景你会回来感谢SP仿真的。
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门