ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

低功耗带隙基准设计实战:从亚阈值电流模到版图优化

低功耗带隙基准设计实战:从亚阈值电流模到版图优化 从我自己的项目经历来说这类题目往往是“看着原理简单做起来全是坑”的代表之一。传统bandgap结构在课本上两三页就能讲完可真要把功耗从几十微瓦压到几百纳瓦量级同时还保证温度系数、电源抑制比和启动可靠性你会发现在经典拓扑上做任何“省电”改动都会牵连出一连串新问题。这篇博文就围绕低功耗bandgap结构把我在实际流片中踩过的坑、算过的参数、优化过的方式完整整理出来内容偏模拟IC设计方向适合正在做传感器接口、物联网SoC或者电池供电系统电源管理模块的工程师参考对刚接触bandgap的在校学生也有直接的落地价值。1. 低功耗bandgap的整体思路与设计瓶颈在哪里1.1 传统bandgap的功耗到底消耗在哪里带隙基准的核心思想大家都很熟悉把一个负温度系数的VBE和一个正温度系数的热电压差值ΔVBE按比例相加最终得到一个近似与温度无关的参考电压。传统结构里主流做法是运放强制两个输入节点等电位在两条支路上产生不同的集电极电流密度从而在电阻上形成ΔVBE再通过电阻比例放大后叠加到VBE上。典型输出是1.2V左右对应CMOS工艺里硅的带隙电压。这套结构在功耗上并不“大方”。为了稳住运放的增益和带宽运放尾电流至少需要几微安到几十微安两条BJT支路再加上输出支路每个电流也都在微安量级。静态功耗几十微瓦是最常见的状态。对于连续工作的传感器节点或者能量收集系统这个数字实在过于奢侈。所以低功耗bandgap要解决的第一个问题就是搞清楚电流都花在哪了——运放的静态偏置、BJT支路的集电极电流、反馈网络里的泄漏电流以及启动电路残留的电流每一笔都要单独核算。我在设计初期做过一个拆分发现运放和BJT支路几乎平分了总功耗启动电路如果做得不好甚至会占掉10%以上这才是真正动手优化时需要警惕的角落。1.2 把电流调小后为什么性能全变了很多人第一反应是“把电流直接缩小10倍不就行了”实测下来完全不是这么简单。第一BJT支路电流降低后为了维持同样的ΔVBE必须增大电阻值而高阻值多晶电阻在版图上占地面积会猛涨兆欧级别电阻在低功耗芯片里可能比核心逻辑还大。第二电流降到纳安量级后MOS管大概率工作在亚阈值区此时失调电压、阈值电压失配的影响变得异常突出晶体管的沟道长度调制效应也变得更加显著。第三运放带宽也会跟着电流下降启动时间和瞬态响应都会变慢休眠唤醒场景下可能让你直接达不到时序要求。我用一个生活化的类比来说明传统bandgap像是大水管配小水塔水流足水面稳定低功耗设计则像是往一个极小口径的管子里挤水水压不稳稍微有个气泡就会影响整个水位。所以低功耗bandgap从来不是“把电流调小”这一个动作而是对整个设计哲学的重构。1.3 主流低功耗bandgap路线对比我开始做低功耗方案选型的时候列出了几种常走的路线各有取舍传统运放型电流缩放改动最小但受到运放最小工作电流和失调限制功耗压缩比有限。亚阈值MOS型bandgap利用MOS管亚阈值指数特性生成PTAT电压省去BJT或用BJT做CTAT补偿理论上功耗可以压到极低。电流模求和型把PTAT和CTAT电流相加再通过电阻转成电压好处是可以灵活设计输出电压比如0.6V以下适合低压系统。动态/周期供电型让bandgap分时工作用内部电容保存输出电压平均功耗很低但需要额外的开关和时序控制逻辑。这几个方向我都实际跑过仿真如果追求纳米级静态功耗并且系统允许周期性工作动态供电型最具优势如果是连续监测类应用亚阈值MOS电流模求和是更稳妥的选择。下面把几个典型路线放一起对比方案静态功耗量级温度系数表现面积开销设计复杂度适合场景传统运放bandgap几十μW优20ppm/°C中低通用电源芯片亚阈值MOS电流模几百nW良30~50ppm/°C中大中高低功耗传感器SoC动态供电bandgap平均几百nW中等依赖电容泄放中高间歇工作IoT节点纯MOS比例式几百nW良但工艺漂移稍大中中不需要极高精度的场合2. 低功耗核心设计拆解与参数计算2.1 亚阈值区电流设置和MOS尺寸计算当功耗目标定到几百纳瓦时支路电流自然进到纳安级范围主流的低功耗bandgap普遍会让MOS管工作在亚阈值区。亚阈值区的电流公式有一个很重要的关系在固定过驱动电压之下电流与宽长比呈线性关系但如果要让MOS管在亚阈值区工作那么栅源电压必须小于阈值电压此时电流表达式主要取决于阈值电压、亚阈值斜率和热电压。对于一个反型系数弱反型的NMOS漏极电流可以近似为I_D μ_n C_ox (W/L) (n - 1) V_T² × exp[(V_GS - V_TH) / (n V_T)]其中n是亚阈值斜率因子在标准CMOS工艺中大概1.3~1.6。根据这个公式为了得到100nA左右的电流并同时让V_GS接近0.3~0.4V往往需要把宽长比做得很有限甚至可能做到1/1甚至更小版图上采用倒比管。这里有一个容易忽略的陷阱倒比管尽管能降低W/L但栅面积变小后随机失配反而变大导致同一片晶圆不同die之间V_GS有几十毫伏偏差。这个偏差直接反映到PTAT电压上进而恶化基准电压的批量分布。所以我在设计时会对“尺寸最优解”做一个权衡不是简单把宽长比做小而是在满足总功耗预算的前提下让关键电流管尽量靠近最小面积限制同时通过并联unit管的方式来改善统计匹配。实测下来并联8~16个最小尺寸单元对失配改善比较明显但面积也会增加需要根据具体良率目标来平衡。2.2 电阻选型、阻值计算和版图面积权衡低功耗bandgap里另一个大头是电阻。以前做常规bandgap电阻阻值几千欧到几十千欧就绰绰有余。但低功耗设计里支路电流只有几十纳安时如果还想产生几百毫伏的电压差阻值就必须到兆欧、甚至几十兆欧。高阻多晶硅电阻的方块阻值通常在1k~2kΩ/sq做成1MΩ大概需要几百到上千个方块面积一下子变大。巧妙的办法是提高ΔVBE也就是增大两条BJT支路的电流密度比。BJT的ΔVBE与电流密度比成对数关系ΔVBE V_T × ln(N)其中N是两个支路电流密度的比值。把N从8增大到48ΔVBE可以从大约54mV提高到约98mV几乎是翻倍。这样同等电压下需要的电阻值就能下降但BJT的面积和对数关系带来的边际收益会逐渐变小。实际项目里我通常把N取在16~32之间再往上增加密度比BJT阵列的面积和寄生都会变得不划算。电阻温度系数和高阻值带来的寄生电容也需要关注。高阻poly的方块阻值高但一阶温度系数往往也比较大典型300~800ppm/°C虽然bandgap是靠电阻比例来抵消一阶温度项的二阶温度项还是会残留。再加上高阻值电阻本身会有不小的寄生电容它在电源噪声耦合路径上会引起额外的PSRR恶化尤其在高频段。因此低功耗bandgap里电阻往往成为面积和性能的折中核心值得在前期投入时间多跑几个组合。2.3 运放失调、噪声对基准精度的影响运放失调电压V_OS会直接叠加到bandgap输出电压上不受温度系数补偿方程约束因此它是决定批量精度的关键因素之一。从设计公式上看若失调为V_OS折算到输出端的误差大约是V_OS乘以反馈增益因子。为了控制失调传统做法是加大输入管面积然而在低功耗场景下输入管的偏置电流很小gm很低热噪声和闪烁噪声都容易恶化。这里需要做一个折中到底是采用面积翻倍的输入管还是在系统层面用chopper或auto-zero来消除失调chopper方式对功耗的附加开销并不小时钟驱动、开关导通电阻等都会引入新的功耗而且低功耗bandgap的输出阻抗很高chopper的残余纹波更难滤除。所以如果温漂要求不是极端的10ppm/°C我个人建议优先用加大面积版图匹配来压失调把chopper留到系统实在收不了时的终极手段。另外要注意低电流下噪声性能往往比失调更难看因为要降低噪声就得增大gm而gm天生跟电流正相关。如果想同时做到低温漂、低噪声、低功耗确实需要“三选二”的魄力哪怕再资深的工程师也要面临这个现实约束。3. 完整实操从指标定义到低功耗bandgap实现流程3.1 明确设计目标和规格表我建议第一步就建立一张规格表后面所有参数调整都围绕这张表展开否则很容易陷入局部优化。以下是一次模拟项目的目标示例实际流片前后我会反复回看这张表参数设计目标备注总静态电流I_Q≤500nA25°C典型工艺角参考电压V_REF600mV±10mV适合低压系统后级稳压温度系数TC≤40ppm/°C-20°C~85°C范围线性调整率≤2%/V电源1.2V~3.6V启动时间≤200μs带内部电容上电后电源抑制比PSRR≥60dBDC低频平均这里有个关键决策输出600mV而不做1.2V是为了适配低压数字SoC的电源域后级只需要一个低压差稳压器或REF buffer即可。输出电压直接决定整个bandgap核心的工作点也让支路电阻上的压降可以大幅降低从而压缩阻值、节省面积。3.2 核心电压生成部分的参数计算在本设计里我采用电流模求和的亚阈值bandgap结构。基本思路是利用一个运放强制两个节点电压相等分别产生PTAT电流和CTAT电流再在输出节点用电阻合成为V_REF。先算PTAT电流源部分。假设两个BJT发射区面积比为1:8那么ΔVBE V_T × ln8 ≈ 25.85mV × 2.079 ≈ 53.8mV室温附近V_T取25.85mV。如果用同一电阻R1来产生PTAT电流则I_PTAT ΔVBE / R1。如果希望I_PTAT在室温下为200nA则R1≈269kΩ。这个阻值在高阻poly下大概需要200个方块面积可以接受。实际情况中我会把BJT面积比设为1:24甚至1:32把ΔVBE提高到80mV以上这样R1可以降到160kΩ左右电阻面积能省30%以上代价是BJT阵列面积稍大总账一般是划算的。CTAT电流部分由VBE直接除以电阻R2获得。硅的VBE一阶温度系数约-1.6mV/°C到-2mV/°C跟PTAT电流的正温度系数方向相反。为了在输出节点叠加后实现一阶温度抵消需要让I_PTAT的温度系数斜率恰好抵消I_CTAT的负斜率。设I_CTAT VBE/R2那么它的温度系数是(dVBE/dT)/R2I_PTAT的温度系数是(lnN × k/q)/R1。令两者在求和节点上的斜率之和为零可以得到R2和R1的比例关系。代入典型参数R2约等于R1乘以1.8左右因此R2最后会在300kΩ~500kΩ范围内。这里有个小技巧实际电路里VBE的曲线并不是线性的带隙电压的温度曲线存在一个二阶项所以一阶抵消后还会留下一个小的碗形误差。如果要压到极低ppm可以在输出节点串联一个小比例的温度系数补偿电阻或者在BJT支路上串一个非比例电阻“掰”一下二阶项。这个技巧来自实际校准比单纯调电阻比例更有效。3.3 环路设计与运放配置低功耗bandgap里的运放不需要很强的推挽输出能力因为它主要驱动高阻节点输出电流极小。我常用单级折叠共源共栅结构增益做到60~70dB即可。为了保证相位裕度主极点设置在运放输出端次级点在bandgap核心内部的高阻节点处需要确保它落在单位增益带宽之外。需要注意的是低电流下运放自身的偏置电流镜是功耗来源之一我习惯用一个自偏置电流源给运放供电电流大小与主支路电流成比例关系。这样能保证全温度范围内运放性能不会随着温度偏移太多。实际仿真时要把功耗大头也拉进整个环路里看启动瞬态不然你会在测试时发现bandgap花了几毫秒才稳定甚至出现振荡。另外由于低功耗设计的工作电流很小电路对寄生的反馈路径非常敏感。电源线上的几十飞法寄生电容都在极低环路带宽下改变相位裕度。如果后仿发现相位裕度不足不建议直接增大运放尾电流那样会把功耗预算打穿。更优雅的做法是在bandgap输出端加一个小电容比如2~5pF利用米勒效应把主极点往低频推同时保持静态功耗不变。这个做法实测下来对稳定性的改善显著。3.4 启动电路设计和零电流稳定点的应对Bandgap天生存在一个简并工作点上电时如果所有支路电流都为零放大器可能没有任何输入差分电压也就无法“唤醒”电路。所以启动电路是必须的低功耗版本也一样。经典做法是接一个从电源到地的弱电流通路检测到核心节点电压太低时向某个关键栅极注入一个小的启动电流把电路推出零电流状态。在设计启动电路时我最常遇到的问题有两个。第一个是启动电路在完成使命后还偷偷漏电导致整机功耗超标。解决办法是让启动电路自身带滞回比如用一个阈值比较器当基准电压建立到正常值的90%以上时直接把启动电流通路断开并且用一个倒比管保证断开状态的泄漏在pA级。第二个问题是多条启动路径同时动作可能在bandgap正常工作时造成微小的扰动纹波。尤其要避免为省事给多个内部节点都挂上启动管那样做会有“抢启动”的风险某些工艺角下反而比不启动更麻烦。启动时间方面低功耗bandgap的充电电流小如果后级电容又大建立时间很容易超过指标。我在这个设计里加了1pF左右的内部补偿电容启动时间大概在100μs量级能满足系统唤醒时序要求。如果还需要更快启动可以考虑在启动阶段临时增大镜像电流这个在超低功耗SoC里比较有效但要小心电流切换瞬间的毛刺。3.5 电源抑制与低功耗场景的额外考量低压差系统里电源纹波会直接串到bandgap输出上。低功耗并不意味着可以放弃PSRR尤其在传感器量化电路中基准上的纹波会变成测量误差。一种有效办法是给bandgap核心的电源节点增加一级RC低通滤波R用高阻polyC用MOS电容或MIM电容把高频噪声先滤掉一部分。但RC滤波R值很大时会在电源路径上形成一个低频零点必须确保该零点远低于环路单位增益带宽否则会引起环路不稳定。我实际做过的另一条路线是加一个简单的预调节环路用一个低压差稳压器给bandgap核心供电bandgap输出再经过一个单位增益buffer送出。这样核心看到的电源几乎是干净的PSRR能做到很高。缺点是额外增加了几百纳安静态电流需要在功耗预算里统筹考虑。如果整个系统的功耗预算卡得非常死那就要在PSRR指标上放低期望或者依赖后级LDO来弥补。4. 版图实现要点与后仿真注意事项4.1 器件摆布、匹配和环保护的工程细节低功耗bandgap的版图敏感度比常规bandgap更高因为工作电流小意味着失配占比大任何不对称都会改变参考电压。BJT阵列必须采用共质心布局发射极面积比按照设计展开比如1:8就按九宫格排布中间放单位管周围放8个并联管。电阻阵列也要做同样的共质心排布并且在两边加上dummy电阻让光刻边缘效应一致。关键MOS管之间的相对位置最好也和BJT放在同一个热梯度方向一致的小区域内避免大功率模块的横向温度梯度带来额外失配。另外我会在整个bandgap核心外圈打一圈P型衬底保护环再在外面加一圈深N阱隔离环把衬底噪声和邻近模块的耦合都压制住。在低功耗芯片里bandgap经常被放在ADC或RF模块旁边保护环的宽度和接触孔密度一定要足够因为开关噪声灌进衬底后不但影响bandgap还会影响整个模拟前端的信噪比。4.2 电源走线和地线去耦低功耗bandgap的电流很小走线电阻似乎不太要紧但寄生电阻上的IR Drop对电流镜镜像精度的影响仍然存在。各支路的源端接法要尽量从同一电位点引出而不是“串”在一条长线上。电源线能加宽就加宽金属层也用高层粗金属地线同理。关键敏感节点周围不要有长距离平行走线穿过尤其要避免数字翻转频繁的信号线。去耦电容方面bandgap核心附近放一个几百飞法到几皮法的本地电容能有效稳定内部节点又不至于过多占用面积。4.3 后仿真与失配分析的做法低功耗bandgap的后仿寄生参数提取至少要跑RC提取不能只跑C提取因为高阻电阻本身的寄生电容对电源抑制的影响比较大。蒙特卡洛分析要包含失配MC和工艺角MC两类采样数建议至少200次以上分析Vref分布和温漂分布。做失配分析时要把补偿电阻和主电阻当成不同器件分开看失配很多新人会把它们合并成一个模型导致统计结果过于乐观。还有一种常见做法是做温度环境扫描结合工艺角比如TT/FF/SS三个角在-40°C到125°C范围扫描判断热载流子效应或PTAT电流是否有异常跳变。如果在某个高温角出现Vref曲线翘起多半是电流镜进入线性区或高阻poly电阻温度系数二阶项恶化需要回溯设计参数。5. 测试指标、数据解读和量产一致性5.1 测试项和测试方法举例流片回来后需要做几项基本测试输入静态电流I_Q、参考电压Vref随温度变化、线性调整率、启动时间、PSRR和长期稳定性。温度测试是最费时的因为要使用温度箱和源表逐点采样。为了让数据可比我一般会在每个温度点至少保温10分钟再读取Vref同时把万用表的测量延迟和负载效应考虑进去。启动时间测试用示波器探头接一个源极跟随器作为buffer避免探头电容直接挂在bandgap输出上改变启动曲线。PSRR测试则用网络分析仪加偏置T扫频范围从100Hz到10MHz。5.2 数据和设计预期不一致时怎么排查如果实测功耗比仿真高很多第一优先检查启动电路是否彻底关断。我曾经遇到一个项目启动电路采用了简单的电阻分压与反相器控制反相器在低电源下静态电流不小导致总功耗比仿真高出一倍多后来改成自锁式开关才解决。如果温漂曲线出现明显的不对称就要怀疑BJT发射极面积比是否被版图做错或者保护环占用了太多有源区边缘导致实际有效发射极周长变化。批量数据出来以后把多个die的Vref直方图拉出来看分布是否接近正态。如果分布出现双峰大概率是某个unit器件在版图里放反或者对称性被破坏如果分布很宽则可能是核心MOS管处于亚阈值区对阈值电压失配过于敏感。这个时候最快的补救手段是设计阶段预留trim电路在测试端通过熔丝或OTP修调基准电压。我在量产项目里一般会做8~16级trim修调范围覆盖正负20mV步进1~2mV良率提升效果非常明显。5.3 校准、修调方案与产线配合低功耗bandgap的校准方案要尽早定下来因为这会影响pad和测试流程。常用做法是在芯片内部用一串电阻分压产生多个修调电压通过控制寄存器选择接通哪一档。修调信息可以存储在OTP或eFuse中。产线校准通常在常温下做一次粗调和细调常温测完Vref后计算需要的trim code写回片内然后在高温和低温各抽样复查。低功耗bandgap在常温下电流很小测起来其实很“干净”不容易出现热噪声干扰但源表线缆和探针台的接触电阻必须做好补偿否则几毫伏的误差都会被误判成电路失配。6. 常见问题排查与设计避坑清单6.1 典型故障现象、成因与对策故障现象可能原因排查重点解决办法上电后Vref为0启动电路未生效或死锁测关键内部节点电压增大启动电流注入幅度增加滞回比较启动时间过长内部充电电流太小或电容偏大查看运放建立曲线增大镜像电流比例或减小输出电容Vref温度曲线形状异常电阻间失配或BJT面积比偏差检查版图匹配和温度角仿真调整版图比例、增加dummy单元功耗比仿真大启动电路残余漏电或运放偏置电流摆幅过大测总静态电流随温度变化增加启动关断逻辑、修调运放偏置PSRR高频段恶化高阻电阻寄生电容耦合后仿观察电源到输出的高频增益增加RC滤波或采用屏蔽走线工艺批次良率不稳定亚阈值区阈值电压失配对工艺角敏感做多die分布统计增加trim档位、优化匹配面积6.2 几条基于经验的补充提醒第一不要为了极致功耗把电流压到漏电流可比的程度。到了几百纳安级别栅氧漏电和pn结反偏漏电在高温下可能达到几十纳安这个量级会直接淹没主支路电流使基准电压彻底失去控制。所以低功耗设计必须评估120°C甚至150°C的漏电预算。第二仿真时一定要把pad、ESD保护二极管和封装引脚的寄生一起放进去否则测试现场会出现ESD结构反偏漏电导致的非线性。第三建议芯片里预留一个off-chip调节引脚或者至少一个内部测试mux方便把bandgap核心节点引出来观测。没有这些观测点的低功耗bandgap调试起来等于盲人摸象。6.3 结构后续的扩展思路如果后续要在这个低功耗bandgap基础上做升级我比较推荐的方向是加入温度传感器功能利用PTAT电流或ΔVBE的温度特性做一个片上温度读出这样同一个模块既给系统供基准又能做热管理功耗利用率很高。另一个可行方向是让bandgap支持多电压输出比如通过电流镜复制多路PTAT/CTAT电流再经过不同的电阻网络输出0.6V、0.9V、1.2V等多档参考给不同电源域使用。这两个扩展都不需要推翻现有结构只在外围加少量开关和寄存器控制就能实现值得在项目早期留好接口。结尾低功耗bandgap设计的个人体会这几年做下来我的体会是低功耗bandgap结构设计从来不是追求单个指标的极致而是在功耗、面积、温漂、启动时间、批量良率之间做一个系统工程取舍。做常规bandgap时候习惯的“增加一点功耗换取性能”的思路在这个场景里完全行不通。真正让我完成思维转换的是经历过一次因为启动电路漏电导致整机待机功耗超标的教训——从那以后我会把每一个纳安级电流都当成功耗预算里必须审计的对象来对待。最后再分享一个实用技巧在低功耗bandgap的运放输入对管两侧各加一个尺寸相同的dummy管并接地可以在不增加功耗的前提下显著改善输入对的对称性这样测出来的温漂分布会集中很多。希望这篇梳理能帮你少走一些弯路后续如果有机会我还会针对动态供电bandgap的时序设计单独写一篇那时候再一起聊聊唤醒周期和精度维持的权衡。
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进