玩模拟 IC 流片前,Bandgap 电路往往是大家第一个认真啃的模块。它看似简单——一个差分放大器、一对双极管、一串电阻,目标只有一个,输出一个不随温度乱飘的基准电压。但真到了 Cadence IC5141 里把它端到台面上做仿真,你会发现稳定性、噪声、启动、PSRR 这四座大山是躲不掉的。尤其是 IC5141 这个版本已经有年头了,很多新版本里自动帮你处理的东西都得手动配,稍不注意仿真器就不收敛,或者跑出来一个看起来正常、但实际上完全偏离真实电路状态的结果。
这篇保姆级教程就是冲着解决这些问题来的。我会按实验室实际跑仿真的顺序,把 Bandgap 四大仿真的完整流程拆开:先是环境和电路准备,然后是稳定性(STB)、噪声(Noise)、启动(Start-up)、电源抑制比(PSRR)各自的操作方法、参数设置、结果判读、调参思路,最后再把那些容易踩的坑整理成速查表。无论你是刚入门模拟 IC 的研究生,还是准备 Tape out 前做一轮完整验证的工程师,这篇内容都可以直接拿来当操作手册用。
1. 跑 Bandgap 仿真前,先把模型库和电路准备做扎实
1.1 Cadence IC5141 里的模型库配置检查
IC5141 是个老工具,但胜在稳定。很多老工艺和高校实验室到现在还在用它。跑 Bandgap 我推荐直接用 Spectre 仿真器,主要原因是它内置的 stb 分析集成度高,读取后端提取寄生后的网表也更顺利,不像 hspice 那样还要自己倒腾各种控制语句。
操作上,打开 ADE L 之后先做三件事。第一,确认 Simulator 选择的是 spectre,位置在菜单 Simulation -> Simulator,别选成 hspiceS。第二,检查 Model Library,在 Setup -> Model Libraries 里把工艺厂商提供的 Spectre 模型文件加进来,常见后缀是 .scs 或 .lib。第三,先跑一次最简单的零输入 DC 仿真,看仿真器有没有报“模型读不进来”的警告。
这一步别看简单,我见过不少同学仿真发散、管子逻辑符号报错,查半天最后发现只是 model 路径指错了。尤其注意,Spectre 吃的是 .scs 这类格式,不是 hspice 的 .lib,如果你拿 hspice 模型硬灌进去,仿真器不会明着拒绝,但 DC 点经常会莫名其妙偏掉。
由于 IC5141 的默认搜索路径是按安装目录写死的,如果 model 文件放在自定义目录,我建议直接在 ADE 的 Model Libraries 窗口里填绝对路径,不要偷懒写相对路径。这个环节多花五分钟,后面四种仿真能省下至少两个小时。
1.2 Bandgap 核心电路节点规划与 DC 点预检
Bandgap 的基本原理,是把负温度系数的 VBE 和正温度系数的 PTAT 电压按比例合成,得到一个理论上随温度变化很小的基准电压。典型结构是一个运放强制两输入端电压相等,让 ΔVBE 加在电阻上产生 PTAT 电流,再复制到输出支路与 VBE 叠加。
对仿真来说,开始之前要先把电路里四类关键节点规划好:基准输出节点、反馈网络检测点、启动电路控制点、电源和地。为每个节点取一个有意义的名字,比如 vout、vfb、vstart、vdd,后面在 ADE 里写表达式时会非常省事。别用原理图默认生成的 N0、N1 这种序号节点,跑复杂分析时很容易把自己绕晕。
我还有个习惯,正式开始四大仿真之前,一定先跑一遍 DC 分析预检工作点。重点看 vout 的静态电压是否落在设计值附近,比如 1.2V 的基准就不要偏出几十 mV 太多。如果 DC 点差得离谱,不要急着上 AC、tran、noise,因为后面所有仿真全部建立在正确 DC 工作点之上。DC 点过不来,常见原因无非三种:管子工作区不对、反馈极性接反、模型库有问题。先解决这三个,再往下走。
2. 稳定性仿真完整流程:STB 分析设置与相位裕度调参
2.1 STB 探针插在哪、为什么插那
稳定性仿真要回答的问题:把环路断开,从某一点注入一个小信号,绕着环路走一圈回来,信号增益和相位变化了多少。当环路增益降到 0dB 也就是单位增益时,如果相位裕度不够,负反馈系统就可能变成正反馈,电路振荡,输出出现持续抖动,这是 Bandgap 绝对不能接受的现象。
工程上最关注两个数:单位增益带宽 UGBW 和相位裕度 PM。对带隙基准这种常年工作在直流附近、输出稳定慢速变化的模块,通常要求 PM 大于 60°,保守一点的设计目标是 70°;UGBW 则根据功耗预算和系统要求的建立时间确定。
Bandgap 的主环路一般包括运放内部增益级、运放输出到调整管的连接,再通过反馈电阻网络回到运放输入。在 Cadence IC5141 里,我习惯在环路断口处放一个 analogLib 库里的 iprobe 元件,它符号是一个带箭头的两端口器件,串在反馈路径里直流是短路的,不会破坏电路工作点,却能给 AC 小信号提供测量端口。
探针放置位置很有讲究。推荐放在运放输出到反馈电阻串入点之间,或者用 PMOS 调整管时放在调整管栅极和运放输出之间。这样量到的是从运放输出、经过反馈网络、回到输入的整个主环路。注意不要放在辅助偏置支路或启动电路里,否则测出来的不是主环路的裕度,判别结果会失真。
2.2 ADE L 中的 STB 参数设置与结果判读
在 ADE L 中打开 Analyses -> stb,Spectre 的 STB 分析界面会让你指定 probe 实例,直接选 schematic 里的 iprobe 元件即可。频率扫描范围我一般设 1Hz 到 1GHz,如果知道环路带宽比较低,可以缩小到 0.1Hz 到 100MHz。默认扫描点数可能只有几十,建议手动设到 500 点以上,否则相位曲线在穿越频率附近会严重失真,相位裕度读数根本不可靠。
跑完 STB,最方便的是从 Results -> Direct Plot 里选择 Loop Gain 和 Phase Margin,Spectre 会把幅频曲线、相频曲线和裕度值一起画出来。你也可以在计算器里用 phaseMargin() 函数直接读数值。
我强烈建议至少手工读一次曲线:找到增益曲线与 0dB 线的交点频率,再从相位曲线上读出该频率对应的相位值,离 -180° 的差值就是相位裕度。手工读能逼着你理解环路行为,而不是只看一个数字。很多所谓的“指标通过”,其实是在一个错误仿真设置下自欺欺人。
注意:iprobe 的插入点必须保证直流回路不被切断。如果探针方向接反或者插在偏置电流镜支路里,DC 解一开始就是错的,后面全白跑。
2.3 相位裕度不足时的三个调整方向
第一版 Bandgap 跑 STB,最常见的现象是 PM 只有 20° 到 40°,输出波形带着高频毛刺。调参有四个常规方向:
- 增加米勒补偿电容。把运放输出级的非主极点往低频推,让增益交点前的主极点、第二极点和零点相互错开。补偿电容一般从几百 fF 扫到几 pF,每扫一个值都重新看 PM。
- 调运放输入管的跨导 gm 和尾电流。降低 gm 能减小环路增益峰值,但也可能压低 DC 增益。想同时保住增益,优先考虑增大第二级的输出阻抗,或者用 cascode 尾电流源。
- 在反馈电阻上并联前馈电容。这个电容会引入一个零点,帮助拉升相位,同时还能压掉一部分高频噪声。起始值可以从 100fF 量级开始试。
- 检查启动电路是否还在工作。如果启动管没有完全关断,它会给环路额外塞进一个传输函数极点,严重影响 PM。调完主环路再看启动。
调完一轮重新跑 STB,同时观察 UGBW 和 PM。补偿电容不能无限加,它占面积,还会把后面要讲的 PSRR 高频特性拖垮。
3. 噪声仿真完整流程:Noise 分析设置与低噪声化调参
3.1 Noise 分析参数怎么填
带隙基准在系统里承担的是提供“干净”参考电压的角色,它的噪声会直接进入 ADC 的信噪比、PLL 的抖动预算。所以噪声仿真不是可选项,而是必须项。
在 ADE L 里打开 Analyses -> noise,需要设置三个东西。Output Noise Voltage 填 VF("/vout"),也就是把基准输出端的噪声谱密度给出来。Input Noise Source 我习惯选一个无关紧要的直流源或 AC 源,因为这里关心的是输出端自身噪声,不是算输入等效噪声。Frequency Sweep 覆盖关心的频带,对基准源我一般扫 0.1Hz 到 10MHz:0.1Hz 到 10Hz 看长期漂移和极低频闪烁,10Hz 到 10kHz 关注 1/f 噪声,10kHz 到 1MHz 关注白噪声和热噪声。
跑完后用 Direct Plot 或者直接 plot 输出噪声谱密度,单位是 V/sqrt(Hz)。很多同学一上来就看“噪声积分值”,但我建议先看谱密度曲线,因为不同频段的噪声来源完全不同,一条曲线能告诉你问题到底出在哪一段。
3.2 怎么找出噪声大头器件
Spectre 的 Noise 分析会给出每个器件对总输出噪声的贡献百分比。你可以通过 Results -> Direct Plot -> Noise 调出那张器件贡献表,非常直观。排在前面的通常就是设计重点。
按我的经验,Bandgap 噪声的头号来源是运放输入差分对管。输入对管的热噪声正比于 4kTγ/gm,闪烁噪声与沟道面积、氧化物界面态密度相关。第二个大头是 PTAT 电流生成电阻和输出分压电阻,阻值越大热噪声越大。第三个是双极晶体管的基极电阻和集电极电流散弹噪声,这个在简化模型里经常被忽略,但实际仿真贡献不小。
低频段尤其要警惕输入管的闪烁噪声。闪烁噪声谱密度大致与 1/(Cox·W·L·f) 成正比,所以加大输入管的沟道长度 L 和面积 W·L 是最直接手段。与此同时不能无脑加大尾电流,因为功耗和稳定性都会跟着变。
3.3 降噪声的三个实用调参方向
- 输入管面积翻倍,低频噪声往往能降 3 到 6dB。我常用 20u/1u 起步,往 40u/1u 调,每次调整都重新看噪声谱,同时跑一次 STB 确认环路没炸。
- 把带隙核心的电阻值往下压。在电流不变的前提下,阻值减半,热噪声下降约 3dB,但 ΔVBE 电阻分压的电压裕量会变紧,要回头查 DC 点是否还能满足温度特性。
- 在输出端按应用需求加一级 RC 低通或片外大电容。这个对高频白噪声特别有效,但基本救不了低频闪烁,因为 RC 截止频率往往在几千赫兹以下时,对 1/f 噪声的抑制作用有限。
调噪声的过程是“牵一发动全身”。你为了降噪声把尾电流加大,环路增益变了,稳定性又得重调;电阻减小、电流增大,功耗又上去了。所以我的习惯是噪声仿真和稳定性仿真交替进行,每改一个器件尺寸就同步跑一把 STB,避免噪声指标达标了,环路却开始振荡。
4. 启动仿真完整流程:简并点验证与启动电路调参
4.1 简并点是怎么回事
Bandgap 电路天然有两个直流工作点:一个是我们希望的正常工作点,另一个是“零电流”的简并点。上电时如果所有管子都处于关断状态,环路电流接近零,运放输入差分对建立不起来有效增益,反馈网络会把电路锁在零电流状态,输出电压趴在 0V 附近,怎么等都等不醒。
这是 Bandgap 必须要带启动电路的根本原因。启动电路的本质,是打破零电流平衡。常见做法是用一个小电流支路检测某个节点电压,输出电压太低时就强制往外拉或者往内灌电流,把主回路从简并点“踹”到正常解附近;一旦主环路自己建立起正确电压,启动电路再自动关断,不影响正常工作点。
在 Cadence 仿真里验证启动是否成功,最直接的方法是看完整 Bandgap 从 0V 电源爬坡到目标电压时,vout 能不能自己爬起来,并且最终稳定在设计值。
4.2 上电瞬态仿真与简并点检查方法
操作上,我会给 VDD 设成一个脉冲源或分段线性源。用 analogLib 里的 vpulse 时,参数可以这样给:V1=0V,V2=3.3V,delay=0,rise=1us,fall=1us,width=1ms,period=1ms。上升沿不要太陡,太陡会掩盖一些启动瞬间的动态问题;也不要太缓,太缓会拖长仿真时间,一般 1us 到 10us 都合理。
然后在 ADE L 里设置 Tran 分析,停止时间设 1ms 左右,最大步长 maxstep 设 100ns 或更小,精度选 moderate 或 conservative。仿真完成后,同时 plot vout 和启动控制节点 vstart 的波形。
判断标准有三条:第一,上电后 vout 能迅速爬起来,没有长时间趴在低电平;第二,最终电压与 DC 分析得到的基准值一致,误差在 mV 级而不是 V 级;第三,启动控制节点最终被关断,启动支路不再消耗明显电流。
如果想更严格地排查简并点,我还会做一次不同初始条件下的 DC 扫描。具体做法是在 DC 分析之前,给 vout 节点设置不同的 nodeset 或 ic,分别设为 0V、1.2V、3.3V,看三次收敛结果是否都是同一个解。如果初始条件为 0 时永远收敛到 0V,说明启动电路力度不够,没法把环路从死锁里踢出来。
4.3 启动失败、启动过慢的排查经验
- 卡死在 0V:检查启动管尺寸是否太小,驱动电流到没到 μA 量级;或者启动支路本身没有从 VDD 形成完整通路。我见过比例很高的情况是启动 NMOS 的源漏接反了,或者串的电阻太大导致启动电流微乎其微。
- 启动后先冲到目标值又掉回来:说明启动电路没有完全关断,它还在和主环路抢电流。这时候要增强关断逻辑,调整启动管的宽长比,让它在正常节点电压下彻底截止。
- 启动时间过长,比如到了几百微秒量级,系统里通常无法接受。可以适当加大启动电流,但代价是功耗和面积;也可以减小启动电阻,但启动支路稳态漏电会增大,需要按规格去平衡。
- 启动过程中出现振荡:往往是启动电路引入了一条额外反馈路径,破坏了主环路相位。检查启动管栅极是否寄生耦合到了运放敏感节点,必要时给启动节点加一个小 RC 滤波。
5. PSRR 仿真完整流程:VDD 上叠 AC 与提升方法
5.1 PSRR 测试原理与仿真设置
PSRR 反映的是电源扰动对基准输出电压的抑制能力,数学上可以定义为 ΔVDD 到 ΔVREF 的小信号增益,单位是 dB,一般给负值,数值越小说明抑制能力越强。仿真方法说起来非常简单:在 VDD 直流源上设置 AC magnitude = 1V,然后跑 AC 分析看 vout 的 AC 响应。
因为 AC 源幅度是 1V,vout 上的 AC 小信号电压直接就是传递函数 Vout/VDD。比如低频处得到 -80dB,说明电源纹波传到输出后只剩万分之一。跑完 AC 后,在输出表达式里用 dB20(VF("/vout")) 画图,纵轴越往下越低,PSRR 越好。
这里有一个容易翻车的细节:AC 小信号必须加在真正的电源节点上,而且要保证给偏置电流源供电的电源树也一起抖动。如果只把 VDD 的小信号加上了,但某个偏置支路却接在另一个独立电源节点上,测出来的 PSRR 会虚高,流片后电源网络一合并,指标立刻现原形。
5.2 低频段和高频段分别怎么提升 PSRR
从低频到高频,PSRR 曲线大致是这样:直流和低频段,环路增益很高,电源噪声经过负反馈被压得很低,曲线一般在 -60dB 以下;随着频率升高,环路增益下降,PSRR 逐渐变差;到了运放带宽附近,高频噪声可能直接从电源寄生电容耦合到输出,曲线会有一个抬头甚至上翘的趋势。
低频段提升 PSRR 的本质是提高环路增益。可以增大运放输入跨导或输出阻抗,采用 cascode 电流镜、cascode 输出级。高频段则要降低输出到电源之间的寄生耦合,注意保护环和阱电位布局,必要时在输出支路加 RC 低通;同时在 Bandgap 的镜像电流源与电源之间放一个去耦电容,把高频毛刺引到地,这对 1MHz 以上的 PSRR 改善非常明显。
实际工程中,低频 PSRR 通常要求小于 -60dB。如果要求更严格,比如给低噪声 LDO 提供基准,我一般会先加一个简单的预调节器把电源噪声洗一遍,再给 Bandgap 供电。跑 Bandgap 自己的 PSRR 时,我习惯把 1kHz 和 1MHz 两个点单独记下来对照规格书,顺便和噪声仿真在 1kHz 处的谱密度交叉验证,确保低频段没有异常峰。
6. 四项指标联调经验:牵制关系、问题速查与避坑技巧
6.1 四大仿真指标之间的牵制关系
Bandgap 的四个仿真指标不是独立优化的,它们共享同一套器件尺寸和偏置电流。调完一个再调另一个,往往会把前面的结果破坏掉。我自己的实践体会是:
稳定性与 PSRR 存在直接矛盾。提高环路增益能改善低频 PSRR,但往往带来更低的相位裕度,必须靠补偿电容找回稳定。补偿电容加得越大,高频 PSRR 就越差,因为补偿电容本身就提供了电源到输出的直通路径。
噪声与功耗是另一对矛盾。降噪声要加大电流和管子面积,功耗随之上升;想压功耗,就要在噪声和稳定性余量上让步。
启动电路与正常环路同样有冲突。启动管尺寸太大、关断不彻底时,会拉低正常工作点的 DC 精度和 PSRR,所以启动支路电流通常控制在主回路稳态电流的 1% 以内。
噪声与 PSRR 的取舍也常常被忽略。输出端加 RC 滤波,高频 PSRR 改善,但输出噪声带宽变小,积分噪声可能反而升高,关键看你关心哪个频段。
我的调参顺序是:先定功耗预算,再定输入管尺寸和尾电流,接着跑噪声和稳定性,最后把启动电路接回去看整体瞬态。这样走一圈,比上来就抠某一个指标效率高得多。
6.2 仿真器常见报错与问题排查表
我把这几年带新人调 Bandgap 时遇到的典型问题整理成了速查表,方便直接对照。
| 现象 | 可能原因 | 排查与解决 |
|---|---|---|
| spectre 提示模型文件读取失败 | model path 写错或格式不匹配 | 用绝对路径重新添加 .scs 模型,确认与仿真器匹配 |
| stb 仿真不收敛 | DC 工作点没有建立 | 先单独跑 DC,检查 vout、vfb 电压是否合理 |
| tran 波形一直停在 0V | 无启动电路或启动管失效 | 检查启动支路电流,确认器件没有接反 |
| 相位裕度小于 30 度 | 环路增益过高或带宽过大 | 增大补偿电容,或减小运放 gm |
| 输出噪声谱异常高 | 输入管面积太小或电阻阻值过大 | 增大输入管 W·L,降低核心电阻阻值 |
| PSRR 低频只有 -40dB | 环路增益不足 | 增大运放增益或采用 cascode 输出级 |
| PSRR 高频明显抬头 | 补偿电容或电源寄生耦合 | 输出加 RC 滤波,电源加去耦电容 |
这张表覆盖了最常见的几类问题,但底层逻辑是共通的:如果遇到仿真发散,先不要急着改电路参数,优先检查模型库、初始条件、浮空节点这三个最基础的地方。很多时候问题根本不在 Bandgap 本身,而是电源或地节点没有接全,ESD 模型混进来,或者节点名字写错导致表达式取到了空信号。
最后再分享一个我自己坚持了很久的小习惯:每改一次关键器件尺寸,我会在 ADE 里同时打开 STB、Noise、AC 三个分析,一次性跑完,再用计算器把相位裕度、1kHz 噪声、1kHz 和 1MHz 的 PSRR 四个数值抄进一个 Excel 表,边改参数边看趋势。这样很容易找到一组相对均衡的尺寸组合,而不是在四个仿真之间反复横跳。用 Cadence IC5141 跑 Bandgap 这件事,流程不复杂,真正难的是把四个指标放到一起权衡。希望这份完整流程能帮你少走一点弯路。