ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Bandgap电路高低温与工艺角仿真:Virtuoso实战指南

Bandgap电路高低温与工艺角仿真:Virtuoso实战指南 1. 为什么Bandgap的仿真值得单独拎出来讲带隙基准源Bandgap Reference简称Bandgap几乎是每一颗模拟芯片里都绕不开的模块。它要干的事情很朴素输出一个几乎不随温度变化、也不随工艺漂移的参考电压通常是1.2V左右。ADC要用它当基准LDO要用它当参考DC-DC的反馈环路也离不开它。可以说Bandgap就是整个模拟系统的“定盘星”它一旦飘了后面所有电路的精度都跟着遭殃。但问题在于Bandgap恰恰是那种“设计起来不难验证起来要命”的电路。原因很简单它的核心原理是让正温度系数PTAT和负温度系数CTAT相互抵消这个抵消过程对温度、对工艺参数极其敏感。你在典型工艺角TT、室温27度下调出来的完美曲线换到SS角、零下40度或者FF角、125度很可能就偏了几十毫伏。更麻烦的是有些corner下电路甚至可能根本不启动或者启动到错误的工作点。所以一个Bandgap电路设计完真正的重头戏才刚刚开始——高低温仿真和工艺角仿真。这两个仿真做扎实了你才敢把电路交给版图工程师。而Cadence Virtuoso作为业界最主流的模拟IC设计平台提供了完整的仿真工具链来支撑这件事。我这些年带过不少新人发现大家卡住的地方往往不是原理不懂而是不知道在Virtuoso里具体怎么设置、怎么跑、怎么看结果、出了问题怎么排查。这篇内容就围绕这些实操细节展开把TT/SS/FF角的设置、温度扫描的配置、结果分析的套路一次讲透。不管你是刚接触Bandgap的在校学生还是刚入行不久、第一次独立负责模块仿真的工程师下面这些内容应该都能直接拿来用。我会尽量把每一步的操作意图和背后的逻辑都讲清楚而不是只丢一堆菜单路径给你。2. 仿真前的准备工作别急着点Run2.1 确认电路和测试平台就绪在打开ADE L之前有几件事必须先确认好否则后面仿真跑起来全是坑。第一你的Bandgap核心电路要已经完成基本功能验证。什么叫基本功能验证就是在TT角、室温下跑一遍DC仿真确认输出电压在预期值附近比如1.2V±20mV各支路电流合理运放工作点正常。这一步没过直接上corner仿真就是浪费时间。第二测试平台testbench要搭好。Bandgap的testbench通常包括待测电路本身、电源vdc、负载可以是理想电流源或者电阻、以及必要的去耦电容。我习惯在输出节点挂一个1pF到10pF的电容模拟实际负载太小了看不到瞬态行为太大了会影响启动时间。第三确认你的工艺库已经正确挂载。在Virtuoso里工艺库通常通过cds.lib文件定义里面会指向PDK的路径。你需要确认模型文件model file的路径是对的特别是corner对应的model文件。很多PDK会把不同corner的模型放在不同的.scs文件里比如tt.scs、ss.scs、ff.scs这些文件在仿真设置里要正确引用。提示如果你用的是TSMC、SMIC或者GF的PDK通常PDK安装目录下会有一个models文件夹里面按corner和温度分门别类放好了模型文件。花五分钟把这个目录结构看清楚后面设置corner的时候会省很多事。2.2 理解工艺角的本质在讲怎么设置之前先花点时间把工艺角这个概念吃透。很多新人跑corner仿真就是机械地选TT、SS、FF但问他SS到底意味着什么答不上来。工艺角本质上是描述制造过程中参数波动的极端情况。以MOS管为例最关键的几个参数是阈值电压Vth、迁移率μ、以及氧化层厚度tox。在制造过程中这些参数都会有一定范围的波动。SS角Slow-Slow代表NMOS和PMOS都偏慢的情况也就是Vth偏大、迁移率偏小导致驱动电流小、速度慢。FF角Fast-Fast则相反NMOS和PMOS都偏快驱动电流大、速度快。TT角就是典型值。对于Bandgap来说SS角和FF角的影响主要体现在两个方面一是运放的失调和增益会变化影响PTAT/CTAT的平衡二是电阻的绝对值会变化影响电流镜的复制精度。所以Bandgap的corner仿真不仅要看输出电压的偏差还要关注运放的工作状态和启动电路是否可靠。除了TT/SS/FF还有SFSlow-NMOS, Fast-PMOS和FSFast-NMOS, Slow-PMOS这两个“混合”角。对于Bandgap里的运放SF和FS角往往比SS/FF更危险因为NMOS和PMOS的不匹配会直接转化为运放的输入失调进而影响基准电压。所以完整的corner仿真应该覆盖TT、SS、FF、SF、FS五个角有条件的话再加上电阻的corner组合。2.3 温度范围怎么定高低温仿真的温度范围不是随便定的。消费级芯片通常是-40°C到85°C工业级是-40°C到125°C汽车级可能要到-40°C到150°C甚至更高。你负责的芯片是什么等级就按对应的温度范围来。在Virtuoso里温度扫描是通过.temp语句或者ADE里的温度设置来控制的。我一般会设置一个从-40到125的线性扫描步长5度或10度。步长太大会漏掉局部非线性步长太小仿真时间会很长。对于Bandgap这种温度曲线通常比较平滑的电路5度步长足够了。注意有些PDK的模型文件在极端温度下会切换模型或者报warning这是正常的。但如果报error导致仿真中止就要检查模型文件是否完整支持你设定的温度范围。3. 在ADE L里搭建仿真环境3.1 启动ADE L并加载模型库打开Virtuoso后通过Launch - ADE L启动仿真环境。ADE L是Virtuoso里最常用的模拟仿真前端虽然现在ADE XL和ADE Assembler更强大但对于Bandgap这种规模的电路ADE L完全够用而且上手快。启动ADE L后第一件事是Setup - Model Libraries把工艺库的模型文件加进来。这里有个细节如果你要跑多个corner不要在这里手动切换模型文件而是应该用corner工具或者section来管理。手动切换容易出错而且效率低。正确的做法是在Model Libraries里加载一个包含所有corner section的模型文件然后在ADE的corner设置里选择对应的section。比如很多PDK的模型文件长这样section tt include models/tt.scs endsection section ss include models/ss.scs endsection section ff include models/ff.scs endsection你在Model Libraries里加载这个顶层文件然后在仿真时通过section参数指定用哪个。这样切换corner只需要改一个参数不用反复加载文件。3.2 设置温度扫描温度扫描在ADE L里有两种设置方式。一种是在Setup - Temperature里直接填一个温度值这只适合单点仿真。要做高低温扫描需要用参数化扫描。具体操作在ADE L的Variables菜单里或者直接在Setup - Parametric Analysis里设置一个温度变量。但更常用的方式是在Simulation - Options - Analog里或者直接在仿真器命令里加.temp语句。我个人的习惯是在ADE L的Setup - Simulation Files里或者直接在netlist里加一行temp -40 125 5这行语句的意思是温度从-40度扫描到125度步长5度。Spectre仿真器会自动在每个温度点跑一次DC仿真然后把结果汇总。如果你用的是ADE XL温度扫描的设置更直观直接在Corners里添加温度变量就行。但ADE L也完全能做只是需要手动配置一下。3.3 配置DC仿真和输出Bandgap的核心指标是输出电压所以DC仿真是最基本的。在ADE L里选择dc分析设置好扫描变量通常是温度或者电源电压。输出设置很关键。你需要把Bandgap的输出节点电压加到输出列表里通常还要加上几个关键内部节点比如运放的输入差分电压、启动电路的节点电压等。这些内部节点在排查问题的时候非常有用。我一般会输出以下信号VrefBandgap输出电压Vdiff运放输入差分电压用来判断运放是否失调I_supply总电源电流V_startup启动电路关键节点在ADE L里通过Outputs - To Be Plotted - Select on Schematic然后在电路图上点选这些节点就行了。4. 工艺角仿真的具体设置4.1 用ADE L的Corner工具ADE L本身没有内置的corner管理工具但可以通过Tools - Corners打开一个独立的corner设置界面。不过更推荐的方式是使用ADE XL或者ADE Assembler它们对corner的支持更好。如果你坚持用ADE L可以手动创建多个仿真目录每个目录对应一个corner。具体做法是在ADE L里设置好一个corner的模型section和温度然后Save As一个新的state换个名字。重复这个过程把TT、SS、FF、SF、FS都存成不同的state。然后可以用脚本批量跑这些state。但说实话这种方式效率很低。我强烈建议至少用ADE XL来做corner仿真。ADE XL的Corners界面可以让你在一个窗口里定义所有corner包括模型section、温度、电源电压等变量的组合然后一键跑完所有组合。4.2 在ADE XL里定义TT/SS/FF角打开ADE XL后在Corners面板里点击Add Corner然后按下面的方式配置Corner名称模型Section温度说明TT_27tt27典型角室温TT_-40tt-40典型角低温TT_125tt125典型角高温SS_-40ss-40慢角低温SS_125ss125慢角高温FF_-40ff-40快角低温FF_125ff125快角高温SF_27sf27混合角室温FS_27fs27混合角室温这个表格只是一个示例实际项目中你需要根据芯片的应用场景来调整。比如汽车级芯片温度范围要扩展到-40到150那就要增加对应的温度点。在ADE XL里每个corner可以单独设置模型section和温度。模型section通过Model File和Section两个字段来指定。温度直接在Temperature字段里填。提示ADE XL支持corner的复制和批量编辑。你可以先定义一个TT_27然后复制它改改温度和section就变成其他corner了。这样比一个个手动创建快得多。4.3 电阻和电容的corner组合Bandgap里通常会有电阻用来产生PTAT电流和电容用来做补偿。这些无源器件也有工艺角。很多PDK会提供电阻的corner模型比如res_tt、res_ss、res_ff。在ADE XL里你可以把这些也作为corner变量加进去。具体做法是在Model Libraries里加载电阻的corner模型文件然后在corner设置里增加一个维度。比如Corner名称MOS SectionRES Section温度TT_TT_27ttres_tt27SS_SS_-40ssres_ss-40FF_FF_125ffres_ff125这样组合下来corner数量会翻倍。如果MOS有5个角电阻有3个角温度有3个点那就是45个组合。ADE XL可以轻松处理这个数量级的仿真但仿真时间会相应增加。你需要根据项目进度和精度要求来权衡。我个人的经验是在设计的早期阶段先跑MOS的TT/SS/FF加上温度的极值点快速看趋势。到了设计后期再补上电阻corner和混合角做完整的验证。5. 仿真结果的分析与解读5.1 看什么指标仿真跑完后面对一堆曲线新人容易懵。我一般按下面的优先级来看第一看输出电压的绝对值。在所有corner下Vref应该在规格范围内。比如规格是1.2V±30mV那所有corner下的Vref都要落在这个区间里。如果有corner超了就要定位是哪个corner、哪个温度点超的。第二看温度系数TC。TC的计算公式是TC (Vref_max - Vref_min) / (Vref_avg × ΔT) × 10^6 (ppm/°C)其中Vref_max和Vref_min是温度扫描范围内的最大和最小输出电压Vref_avg是平均输出电压ΔT是温度范围。一个好的BandgapTC应该在10-50 ppm/°C之间。如果TC超过100 ppm/°C说明PTAT和CTAT的补偿没做好。第三看电源电流。Bandgap的功耗通常要求很低特别是在低功耗应用里。所有corner下的电源电流都应该在预算范围内。第四看启动行为。虽然DC仿真看不出启动过程但你可以通过检查启动电路的关键节点电压来判断启动是否可靠。如果某个corner下启动节点电压异常就要做瞬态仿真进一步确认。5.2 用WaveScan看曲线ADE XL跑完仿真后结果会自动加载到WaveScan里。WaveScan是Virtuoso的结果查看工具功能很强大。我一般会做这几件事把所有corner的Vref vs Temperature曲线画在一张图里。这样一眼就能看出哪个corner偏得最多。用Calculator工具计算每个corner的TC。Calculator里有个temperature函数可以直接算TC。把电源电流也画出来看看有没有corner下电流异常增大。在WaveScan里你可以通过File - Export把数据导出成CSV然后用Excel或者Python做进一步分析。我习惯用Python的pandas和matplotlib来处理因为可以自定义画图样式而且方便做批量处理。5.3 典型问题SS角输出电压偏低这是Bandgap仿真里最常见的问题之一。SS角下MOS的Vth偏大导致电流镜的复制电流偏小PTAT电流减小最终Vref偏低。排查思路先看运放的输入差分电压。如果SS角下差分电压明显偏离0说明运放失调是主因。再看电流镜各支路的电流。如果某条支路电流明显偏小说明电流镜的匹配出了问题。检查电阻的绝对值。SS角下电阻通常偏大这会导致PTAT电流进一步减小。解决方法增大运放的增益减小失调。优化电流镜的尺寸提高匹配精度。在电阻上做trimming或者用可调电阻网络。5.4 典型问题FF角下启动失败FF角下MOS的Vth偏小启动电路可能过于“激进”导致电路启动到错误的工作点或者根本不起振。排查思路做瞬态仿真看启动过程。在FF角、低温下启动时间可能很长或者电压一直爬不上去。检查启动电路的关键节点。如果启动管在FF角下一直导通可能会把核心电路拉死。解决方法调整启动管的尺寸让它在所有corner下都能可靠启动但启动完成后又能完全关断。增加启动电路的迟滞避免误触发。6. 实操中的避坑经验6.1 模型文件路径不要有中文这是个小细节但坑过很多人。Virtuoso对中文路径的支持不好如果模型文件或者仿真目录的路径里有中文可能会报莫名其妙的错误。所以从项目一开始就把所有路径都设成纯英文的。6.2 仿真精度设置要合理Spectre的默认精度是moderate对于Bandgap的DC仿真这个精度通常够用。但如果你发现仿真结果跳动很大或者收敛困难可以试试把精度调到conservative。代价是仿真时间会增加但结果更可靠。在ADE L里通过Simulation - Options - Analog把Accuracy改成conservative。6.3 保存state是个好习惯每次跑完一组满意的仿真记得Save State。这样下次打开可以直接加载不用重新设置。特别是在做corner对比的时候保存不同的state可以让你快速切换。6.4 用脚本批量跑corner如果你经常需要跑大量的corner组合学一点Ocean脚本或者SKILL脚本会大大提高效率。Ocean是Cadence的脚本语言可以自动化仿真流程。比如你可以写一个脚本自动遍历所有corner和温度组合跑完仿真后把结果汇总到一个CSV文件里。; 示例Ocean脚本批量跑corner foreach(corner list(tt ss ff) foreach(temp list(-40 27 125) simulator(spectre) design(myBandgap) analysis(dc ?saveOppoint t) temp(temp) modelFile(list(path/to/model.scs ?section corner)) run() selectResult(dc) vref value(getData(Vref) 0) fprintf(outputFile %s %d %f\n corner temp vref) ) )这个脚本只是示意实际使用时要根据你的电路和PDK调整。但思路是一样的用循环遍历corner和温度自动跑仿真并收集结果。6.5 注意仿真时间Corner仿真很吃时间。一个Bandgap的DC仿真单个corner可能只要几秒到几十秒但如果有几十个corner组合加起来就是几十分钟甚至几个小时。所以跑corner仿真最好放在下班前或者晚上让机器自己跑。另外ADE XL支持并行仿真。如果你有多个CPU核心可以在Options里设置并行数让多个corner同时跑。这能大大缩短仿真时间。7. 从仿真到签核还需要做什么7.1 Monte Carlo仿真Corner仿真覆盖的是工艺的极端情况但实际制造中参数是随机分布的。Monte Carlo仿真就是用来评估这种随机分布对电路性能的影响。对于BandgapMonte Carlo可以告诉你Vref的均值和标准差以及良率。在ADE XL里Monte Carlo仿真的设置很简单选择Monte Carlo分析设置采样次数通常100-1000次然后跑就行了。结果会给出Vref的分布直方图。我一般会关注两个指标Vref的3σ范围是否在规格内以及TC的分布。如果3σ范围超了规格就要考虑增加trimming或者优化电路。7.2 后仿真前仿真用的是理想连线后仿真用的是提取了寄生参数的网表。Bandgap对寄生比较敏感特别是运放的输入节点和电流镜的栅极节点。后仿真可能会发现Vref偏移、TC变差等问题。后仿真的流程是版图完成后用StarRC或者Quantus提取寄生参数生成带寄生的网表然后在ADE里加载这个网表跑仿真。后仿真的corner设置和前仿真一样但仿真时间会更长。7.3 和版图工程师的沟通Bandgap的版图有很多讲究运放要对称布局电流镜要匹配电阻要同向排列启动电路要远离噪声源。这些在仿真阶段就要和版图工程师沟通好否则后仿真可能会出问题。我一般会在仿真报告里附上对版图的要求比如“运放输入对管要求共质心布局”、“电阻要求同向且等长”、“启动电路要求远离输出节点”等。这样版图工程师在画图的时候就有据可依。8. 一些个人体会Bandgap的仿真说到底就是耐心和细心的活。原理不难但要把所有corner都跑通、所有指标都达标需要反复迭代。我见过太多人TT角跑通了就急着交给版图结果后仿真一跑SS角直接挂了又得回头改电路浪费大量时间。我的建议是在仿真阶段就把所有能想到的corner都跑一遍宁可多花两天时间也不要留隐患到后仿真。特别是启动电路一定要在所有corner下做瞬态仿真确认启动可靠。Bandgap启动失败是流片后最致命的问题之一因为它在测试台上可能表现为“有时工作有时不工作”非常难排查。另外仿真结果要养成记录的习惯。每个corner的Vref、TC、电源电流都记在一个表格里。这样在对比不同设计版本的时候一目了然。我一般用Excel或者Google Sheets来记录方便团队共享。最后再分享一个小技巧在ADE XL里你可以把常用的corner设置导出成.csv文件下次新建项目的时候直接导入不用重新配置。这个功能在跑多个项目的时候特别省事。Bandgap的仿真没有捷径但有了正确的工具和方法效率可以大大提高。希望上面这些内容能帮你少走一些弯路。
返回列表