ADE里温度扫描设好跑完,Vref曲线从-40度到125度拱起来一个包,顶点在60度附近,最高点和最低点差1.8mV,用计算器敲ppm出来12.6,还行但不算漂亮。第一次跑的时候只设了温度范围忘了设步长,默认一步跳完,出来的曲线就两个点,重设Step Size为5度才看到完整的抛物线。
OP仿真在建BGR之前先单独跑一遍。BGR里那个运放,开环增益不够的话两个支路电压对不齐,Vref随温度的变化会偏离设计值。OP单独搭一个测试电路,输入加共模电平,跑DC分析看工作点,region=2说明管子都在饱和区,再看增益,Av低于60dB的话回去调输入对的W和L,输入管的长L加大增益涨得快功耗不怎么变。运放的输出摆幅也要够,BGR里运放输出要驱动PMOS电流镜的栅极,摆幅不够的话电流镜进入线性区,整个基准就废了。
把OP放回BGR电路里再跑一次直流仿真。ADE里选Analysis→Choose→dc,Sweep Variable选Temperature,Sweep Range填-40到125,Step Size给5度,Sweep Type选Linear,Number of Steps可以填200跑得细一点。输出信号选Vref那个节点,跑完在Results里看Direct Plot→DC,Vref随温度变化的曲线直接出来。曲线应该是一个开口向下的抛物线,顶点大约在27度到60度之间,顶点两侧对称性看设计质量。
温度系数ppm的公式,Vmax减Vmin再除以Vavg乘以(Tmax减Tmin)再乘1e6。Vmax和Vmin从曲线上读,或者用计算器的ymax和ymin函数直接取,Vavg用average函数算。把公式输到ADE的Outputs→Setup里,每次仿真自动算一遍显示在结果窗口。ppm小于20可用,小于10算好,个位数是目标。之前那版12.6ppm,把R2的segments从4调到6之后降到8.3,调整的是PTAT和CTAT的权重比例。
工艺角温度扫描的时候,TT角单独跑一遍做基准,然后FF角和SS角各跑一遍,三个角的曲线叠在一起看。FF角Vref偏低,SS角偏高,这是正常的,关键是三个角之间的分散度。分散度大了说明BJT面积比或者电阻匹配没做好,Q1和Q2的multiplier从1比8改成1比7或者1比9试试。电阻的工艺角影响比BJT大,poly电阻的tc1和tc2在模型里有定义,扫不同电阻角的时候曲线形状会变,R1和R2的比值不变但绝对值变了,PTAT电流跟着变,Vref的顶点温度就漂了。
温度曲线跑出来不收敛的情况,msg文件里看是不是DC analysis failed at temperature=xx。最常见的原因是启动电路在某个温度下把主电路关掉了,或者运放的偏置在低温下跑偏了。把仿真器从spectre换成spectreX试试,收敛算法不一样。还不行的话在DC分析的Options里把dc_pivot_check设成yes,它会在不收敛的时候自动做节点电压的pivot检查,帮定位问题。低温下如果BJT的beta掉得厉害,基极电流不可忽略,Vref会偏,这种情况在BJT模型里确认一下beta的温度系数。
后仿的时候温度曲线可能跟原理图仿真差得远,主要是寄生电阻和电容的影响。版图里BJT的匹配、电阻的匹配、运放输入对的对称性都要考虑。跑后仿之前先把寄生参数提取的RC reduction做一下,不加reduction的话节点数量爆炸,仿真时间指数级涨。后仿的ppm一般比前仿大两三个点,能压到15以内就算成功。D:\Cadence\BGR\sim\下面放着前仿和后仿的spectre状态文件,那个后仿的ppm还没看,提取参数是……

字幕有误
订正为温度范围的绝对值
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删