ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

两级CMOS运放设计全流程:从手算参数到版图后仿真

两级CMOS运放设计全流程:从手算参数到版图后仿真 1. 两级运放架构与设计指标确定1.1 为什么选两级结构做模拟CMOS集成电路设计只要一谈到运放大概率绕不开两级结构。我自己最早接触这个拓扑是在研究生第一年当时导师直接扔过来一个任务设计一款增益大于70dB、单位增益带宽10MHz、相位裕度不低于60度的两级运放带版图。第一反应是这不就是个Miller补偿运放吗真正上手才发现从预仿真到后仿真坑多到可以写一本小册子。先说清楚为什么选两级而不是单级或者三级。单级运放比如折叠共源共栅结构的优势是速度块、功耗低但增益通常很难做到70dB以上因为输出阻抗受限于单级增益表达式。折叠共源共栅在60-64dB附近基本是天花板除非你有非常特殊的自举增益技术。而现成工艺库里的普通管子本征增益A_v0大约在20-35之间单级撑死也就60dB出头。两级结构的好处说穿了就是第一级吃增益第二级扛摆幅第一级提供高增益第二级把输出摆幅做到接近电源轨。代价是多了一个极点需要Miller补偿来分裂极点、稳住带宽。那为什么不上三级三级运放的稳定性问题是几何级数增长的如果两级就能满足指标完全没必要硬上三级。除非你要求增益超过100dB同时带宽还很大这时候两级就不够用了。所以这个设计任务两级是最合理的选择——这也是绝大多数模拟IC入门笔记里会选两级结构的原因。1.2 架构选型PMOS输入还是NMOS输入两级运放的第一级输入对到底是选PMOS还是NMOS这个纠结几乎每次做新设计都要碰到。我的经验法则如下如果你的共模输入范围需要覆盖到地比如单电源低压系统、输入信号从0V开始摆那第一级必须用PMOS输入对因为PMOS输入对允许输入电压低到V_SS附近反过来如果输入需要覆盖到VDD就选NMOS输入对。很多教科书喜欢说PMOS输入对噪声更小这只是部分正确——PMOS的1/f噪声确实比NMOS低一个数量级以上因为它的载流子在埋沟道里面跑。所以低噪声输入级用PMOS几乎是行业惯例。200mV的输入信号从地电位开始往上摆第一级普通PMOS差分对就工作得很好输入共模范围大概可以做到从V_SS到V_DD减去一个过驱动电压。我用的逻辑是把V_CM放到电源中点附近给输入级和偏置级都留出余量。第一级PMOS差分对M1/M2、有源负载NMOS电流镜M3/M4第二级NMOS共源管M5、PMOS有源负载M6。电流源偏置管M7/M8把整个运放的尾电流源和偏置网络串起来。这个基本结构符号表如下M1/M2PMOS差分输入对管M3/M4NMOS有源负载也可以做电流镜负载M5NMOS第二级放大管M6PMOS第二级有源负载管M7第一级尾电流管M8偏置网络电流源我用的偏置电流定为20µA。第一级尾电流20µA差分对每边10µA第二级工作电流我单独设成了200µA。为什么要差这么多高速摆幅靠第二级推它要带的是输出负载电容我自己加到3pF包含后级输入电容和测试负载如果第二级电流太小压摆率根本不够。压摆率SR约等于第二级电流除以补偿电容和负载电容的并联20µA和200µA之间的差别直接体现在瞬态仿真的大信号建立速度上。2. 电路级参数计算与偏置设计2.1 手算管子尺寸从增益指标反推拿到指标第一件事不能直接开Cadence画原理图先在纸上把管子宽长比算出来再说。面向一个0.18µm CMOS工艺阈值电压V_THN约0.45V、V_THP约-0.5V这里给出我的完整计算过程回头配仿真微调。先看第二级。已知增益要求A_v2大约在40dB100倍左右公式是A_v2 -g_m5 × (r_on5 || r_on6)这里的g_m5是M5的跨导r_on5、r_on6分别是M5和M6的输出电阻。为了给第一级分担增益压力第二级必须做到40dB以上。假设第二级输出点等效电阻R_out2约200kΩ那么g_m5 A_v2 / R_out2 100 / 200k 500µS。再根据过驱动电压算宽长比g_m 2 × I_D / V_ov我取M5的过驱动电压V_ov200mVI_D200µA那么g_m 2×200µA / 0.2V 2mS比刚才算的500µS宽裕不少那就说明M5的尺寸可以做得相对小一点或者我更该考虑的是保证第二级输出摆幅足够。反向推W/LW/L 2 × I_D / (µ_n × C_ox × V_ov²)µ_n×C_ox在0.18µm工艺下通常取190µA/V²这是典型值实际要看工艺角。代入W/L 2×200 / (190×0.04) ≈ 52.6。取整数50在最小L0.18µm下W9µm。但我不会把L设最小因为最小沟道长度管子输出电阻太差直接把Av拖垮。我选L0.5µm约大于最小2.5倍W调整到15µm这样W/L30输出阻抗会好很多。完整计算里这一步我反复看了很久实际我用了L0.6µm的M5。再看第一级增益。第一级增益A_v1 g_m1/(g_ds2 g_ds4)目标是做到60dB1000倍这样总增益Av Av1×Av2≈1000×100100000即100dB留出覆盖率。管子的r_out在0.5µm L条件下PMOS大约80kΩNMOS大约60kΩ并联后等效约34kΩ。要求1000倍增益g_m1 1000 × (g_ds2g_ds4)其实就是1/R_out算出来g_m1 ≈ 29.4mA/V这太大了。原因是我刚才把输出阻抗低估了或者增益要求对第一级过严。简单做法第一级分担50dB316倍第二级40dB100倍总增益还是80dB以上足够满足70dB指标。这样g_m1 316 / 34k ≈ 9.3mA/V。PMOS的µ_p×C_ox约50µA/V²取V_ov1 150mVW/L 2×10µA /(50×0.0225) ≈ 17.8。考虑第一级尾电流10µA每边我初始设为W/L20W4µmL0.2µm后调至W5µm、L0.25µm匹配工艺。这里注意输入对管L稍微加长可以显著改善匹配和1/f噪声代价是带宽下降。我自己后仿对比过L0.22和L0.5的1/f噪声拐点后者能低一半。2.2 米勒补偿不要只想着Cc零点消除很关键两级运放的稳定性核心就是米勒电容Cc。教科书里的传函表达式很干净但实际设计时有个隐藏的杀手——右半平面零点。第二级增益级M5的源极是地会通过Cc引入一个RHP零点频率大约是z g_m5 / (2π × Cc)如果不消除这个零点它会严重恶化相位裕度。我做设计时把g_m5设计在2mSCc选在2pF那么零点频率就是2mS/(2π×2pF)≈159MHz。这时候GBW大约在10MHz左右零点比GBW高15倍说实在话影响不明显但如果你的带宽要求推到30MHz以上零点就会在GBW附近晃悠相位裕度直接掉到30度。我当时为了凑带宽把第二级电流提到300µAg_m5增大到3mSCc不变的话零点到了238MHz倒是安全了功耗代价也上去了。功耗和稳定性就是这种互相打架的关系。更常用的做法是给Cc串一个调零电阻Rz。我自己的方案是用一个工作在深线性区的PMOS管做有源电阻。Rz约等于1/g_m5时可以把RHP零点推到无穷远甚至移到左半平面前提是Rz稍微大于1/g_m5。参考公式如果忽略寄生消除零点的条件是Rz (C_LC_c)/(g_m5×C_c)我们这里C_L3pF、Cc2pF、g_m52mS插入公式Rz≈1.25kΩ。实际上这个条件对工艺角非常敏感我一般取Rz在1.2k到1.8k之间可调用并行连接的PMOS管搭配一组外部符号扫描找到最优值。真正做流片时这个Rz也是trimming候选——因为poly电阻绝对值偏差可能到±20%不做校准就只能靠设计余量扛。Cc本身我是用MIM电容实现的2pF在0.18µm工艺下大概需要多少面积MIM电容密度通常1fF/µm²所以2pF就是2000µm²大约45µm×45µm的一块。这不是个小面积版图里它会影响很大一块布局。有些先进工艺用金属叉指但0.18µm还是MIM划算、匹配也稳定。后仿真时MIM电容的寄生底板电容大约占10%会轻微影响Miller效应不影响功能。3. 仿真验证Cadence环境下从DC到AC的完整流程3.1 仿真环境搭建与DC工作点检查按我在Cadence Virtuoso IC6.1.8环境里跑这个电路的顺序来说。选择的就是CMOS 0.18µm工艺库。启动后流程新建library、绑定工艺库、建schematic、调用analogLib里的nmos4/pmos4管然后挨个把宽长比填进去。很多刚入门的朋友习惯直接开ADE L就点仿真但第一件事我强烈建议先跑一个DC operating point把所有管子的region检查一遍。我设计的偏置条件是所有管子都应该工作在饱和区V_DS大于V_DSAT差分对管在正常工作共模下也要避开线性区。DC仿真设置如下电源电压VDD3.3VVSS接地共模输入VC1.65V差分输入瞬时设成0.5V在ADE L里把Save DC Operating Point勾上跑完用results直接看每个管子的g_m和V_ov。实际第一版仿真就发现M5的V_DS不够原因是我给的M6偏置电压太高M5被压到线性区边缘输出摆幅上段已经削顶了。遇到这种问题最先怀疑的是偏置网络和M6的栅压分配。我把偏置级的M8宽长比调大了一些电流镜比例重新分配使M6的V_SG变小一点V_DS,M5从90mV拉到了250mV输出摆幅恢复正常。这里可以分享一个排查技巧如果输出波形出现明显非对称变形优先怀疑尾电流源或者负载管进入了线性区而不是怀疑差分对。3.2 AC仿真与相位裕度判断AC分析是验证小信号增益和稳定性最重要的手段。在Cadence里我直接在激励源上给ac1V的交流和直流偏置1.65V然后AC扫描从10Hz到100MHz20个点每十倍频程得到增益-频率曲线和相位曲线。第一版跑完低频增益有82dB约1.2万倍单位增益带宽GBW大约8.9MHz相位裕度只有48度——不足60度。第一反应就是Miller补偿不足或者输出负载太大我不急着去动Cc先看零极点报告。Virtuoso的Results里面有pole-zero分析功能跑一下PZ分析能看到一个低频极点对主极点约15kHz和一个大约180MHz附近的零极点对。右半平面零点就藏在这组零极点中。按之前算的该加调零电阻我把Rz加上再扫值从500Ω到2kΩ相位裕度从43度一路上升到67度。在1.5kΩ附近相位裕度达到最佳约66度再往上又开始回落因为Rz过大把零点移到了左半平面太近的位置又引入了额外的相位滞后。最后锁定Rz1.5kΩCc2pF。这里要强调相位裕度不是越大越好超过75度会牺牲带宽和建立速度66度是个兼顾稳定性和建立性能的折中。3.3 瞬态仿真与压摆率实测交流特性只是半张脸运放在时域的行为才是实际电路里你真正关心的。瞬态仿真我给输入加了一个1MHz的方波幅度1V从一个单位增益缓冲结构上测输出电压变化速率。压摆率的仿真方法输入一个大摆幅阶跃比如从0V推到1V看输出从10%到90%的上升时间用ΔV/Δt算出SR。我在1pF轻载下测到的SR约42V/µs换到3pF满载时降到15V/µs。两者差距就是我前面说过的第二级电流决定SR的直接体现SR≈I_5/(CcC_L)用200µA去除以2pF3pF得到40V/µs和仿真基本吻合。这部分对应设计指标没有什么严格约束但如果你后面要驱动ADC的采样保持电路SR不够会导致大信号建立误差直接变成转换误差。瞬态仿真还有一个很多新手忽略的操作——检查建立时间。用0.1%精度判据从阶跃开始到输出稳定在终值0.1%以内我在3pF负载下测试结果约为180ns还算可以。如果这个值太大多半是Cc取值偏大、GBW太低所致。关于建立时间的快速定位办法把瞬态曲线的尾部指数拟合时间常数τ1/(2π×GBW)若GBW10MHzτ约16ns五倍τ约80ns应该稳定但实际180ns说明有一个低频极点拖尾指向输出级电流不够不是Cc的问题。3.4 共模抑制比CMRR与噪声仿真共模抑制比这个指标在带版图以后表现会明显变化但前仿真也要先测。方法是输入共模电压扫描从0.2V到3.1V观察输出变化计算ΔV_out/ΔV_CM再除以运放增益倒过来得到CMRR。前仿真在1.65V共模点附近CMRR约85dB还算不错。但注意这个数字在没有版图失配的前提下不可全信——版图引入的不对称会让CMRR掉20dB以上这也是后面版图部分必须做匹配的原因。噪声仿真用noise分析给一个10Hz到100kHz的积分带宽。PMOS输入对的1/f噪声在100Hz处约500nV/√Hz热噪声底约15nV/√Hz。这个结果在我的应用场景里合格。如果你需要更低噪声可以通过增大输入对管面积来摊薄1/f噪声噪声-面积是一个典型的反比例关系。4. 版图设计两级运放的匹配与防身术4.1 电流镜匹配与差分对的共质心布局版图阶段才是真正拉开差距的地方。前仿80dB的CMRR和增益画完版图如果乱摆一通后仿能给你掉到50dB。核心原因就是版图的失配多晶硅栅刻蚀不均匀、STI应力的影响、金属走线电阻压降不对称。我是这样布局的输入差分对M1/M2必须用共质心Common-Centroid结构。我把两个管子的栅交叉指状排列每根叉指宽度2µm一共10根叉指A管占奇数组、B管占偶数组外围加上一圈Dummy管源漏都短接的假管子保证刻蚀环境一致。版图设计时我在每一根指周围都放了同样的poly环这样边界效应被Dummy吸收。实测这种共质心DUMMY做下来的失调电压能控制在1mV以内如果是普通并列排布失调可能到5mV——后者对高精度运放就是致命伤。电流镜M3/M4、M7/M8也一样采用共质心还是平行互锁取决于尺寸大小M3/M4尺寸不大我用平行互锁加两侧Dummy。栅的方向必须全部一致这听起来像是小事但如果一个栅横着走一个竖着走多晶硅刻蚀的CD偏差和氧化层厚度差异会带来巨大的失配。一条经验法则所有匹配管的有源区朝向保持一致最好用LAYOUT XL从原理图映射参数生成初始结构再手动调整。4.2 隔离环、衬底噪声与电源布线模拟版图最忌讳的就是把自己放在数字噪声的炮口下。我虽然在单独做运放版图没有数字模块在旁边但隔离环仍然是必备动作。差分输入对和偏置电路周围我加了两圈隔离环内环是P注入加接触孔的P型环接VSS用来吸收衬底噪声外环是N阱环接VDD用来防止附近模块的少子注入跑到我的有源区。隔离环的宽度至少要去到1.5µm以上否则衬底噪声在高频下会透过很薄的环直接穿进来。电源走线单独说。M6和M7分别连接模拟VDD和VSS走线时我不能直接从电源pad拉一条细线绕半圈过来那样金属电阻会造成电源压降不同管子看到的VDD不一致。我在版图里把电源干线做成梳子形状让每一个需要电源的管子都从最近的电源梳齿取电并且电源线宽度至少3µm金属层选高层M3/M4走长距离、低层M1/M2做局部互联。这样做以后IR-drop仿真结果显示M6源端和M7源端的压差从原来的45mV降到8mV这个改进对整个差分级的对称性帮助极大。4.3 DRC、LVS与后仿真流程画完版图不能直接就提交流片先过DRC和LVS。DRC设计规则检查直接跑Calibre最常见的问题是有源区间距不够、金属最小宽度不满足、多晶硅栅延伸长度不够。我第一遍DRC报出来37个错误大部分是由MIM电容的周围空间要求和电源金属宽度不够引起的。改起来不复杂但要细心。Calibre修改时不要靠DRC报告逐个点应该分区域人手过一遍把金属线换层连到MIM电容时MIM上下极板的连接关系和通孔阵列位置看清楚。MIM电容底极板连接衬底会引起寄生我的做法是底极板接VSS、顶极板接输出节点让底板寄生被吸收到交流地。LVS检查是把版图的器件和电路原理图做一致性比对。第一次LVS就报了M1/M2的W/L不匹配——因为共质心布局里我把两个管子的叉指分组后源漏合并方式让LVS提取出的M1实际W/L跟原理图不一致。这类问题常见解决办法是在XL环境下把M1/M2的叉指合并选项设置清楚不要让LVS把A、B管的手指识别成单独的器件。LVS通过后才是后仿真Post-layout Simulation。我在连接版图提取出的calibre view之后单独提了寄生参数用RC提取模式RCCC提取结果带回到ADE里再跑一遍AC和瞬态。我第一次后仿结果真的很打击人GBW从8.9MHz掉到了6.8MHz相位裕度从66度掉到了53度。仔细对比前后仿的寄生参数表发现输出节点多出了约0.9pF的寄生电容Cc的顶板寄生也有0.4pF。这意味着实际等效Cc接近2.4pFC_L变成3.9pFGBW下降完全符合预期。解决方案不是缩小寄生——那是改版图而是给后仿真留余量前仿真就把GBW目标定为12MHz后仿衰减后还有8-9MHz。这是一个很实用的设计策略前仿指标往高做1.2-1.5倍给版图寄生留出余量。5. 常见问题与排查技巧实录5.1 仿真发散的常见原因Cadence里跑AC或瞬态仿真出现convergence failure或者time step too small是新手最容易撞到的墙。我遇到最多次的原因有三个第一初始工作点不收敛多半是电路中存在高增益环路DC扫描时解算器找不到解。解决方法是把DC Operating Point部分里的迭代次数从默认50调高到500同时在电路的某个高阻节点并联一个大电阻1GΩ到VSS作为启动辅助仿真收敛后再移除。注意这只是辅助手段不是正经设计。第二个原因是器件模型带来的寄生振荡。有些工艺库的管子模型在某些偏置区有很陡的g_m变化瞬态仿真容易在亚阈值区和饱和区边界震荡。解决办法是在Cadence瞬态选项里选择gear2only它比默认的trap方法更稳定不会因为数值阻尼产生寄生振荡代价是仿真时间变长。如果你用spectre跑把strobing关掉也能减少一些奇怪的数值问题。第三类则是电路本身存在不稳定低频极点让我把补偿电容调大一点试到2.5pF相位裕度上去了瞬态就不再出现振铃。振铃不是数值问题而是电路真实响应这是需要区别的关键。判断方法是看波形频率是否和环路增益带宽一致如果振铃频率在GBW附近那一定是稳定性问题如果波形呈随机噪声状、节点电压任意跳跃才更可能是数值发散。5.2 相位裕度不足怎么快速补相位裕度不足有几个特征表现瞬态仿真里阶跃响应出现持续振荡AC频率响应在0dB附近出现明显峰化peaking超过2dB。我从多个设计里总结了一个快速排查顺序先看Cc是否过小。在先进工艺里寄生电容可能让实际补偿比预期小20%-30%所以Cc标称值要预留余量。再看输出负载是否比预期大。后仿真在输出端看到0.5-1pF寄生完全正常如果负载指标要求3pF那么实际已经接近4pF主极点移动会压缩PM。再看零点是否偏移。Rz电阻值浮动超过±30%可能让RHP零点移到GBW附近。最后看第二级电流是否偏小。如果M5的g_m不足零点频率会下移到危险区。这套排查顺序在实际操作中帮我节省了大量时间。有一次一个运放后仿真PM只有42度我按顺序逐步排查最后发现是M5的L太长、g_m不足导致零点下移。把M5的L从0.6µm缩回0.45µm并增加微量电流PM回升到61度。很多人第一反应就是加大Cc其实在这个案例里加大Cc只会让GBW掉得更厉害问题根源没解决。5.3 版图后仿比前仿性能差太多后仿性能退化有一个非常典型的分布规律GBW掉20%-30%是正常的低频增益掉3-6dB也是可以理解的但如果掉到一半以上就要怀疑版图出了问题。我碰到过一个极端案例后仿GBW从前仿的10MHz掉到2MHz几乎没法用了。最后定位原因是有源区附近的金属密度填充让M1/M2的源漏寄生电容翻了数倍再加上我输出导线走了很长一段M1线电容就有0.8pF。解决方法是把输出导线改走M3/M4高层金属并在版图里手动添加金属密度填充guard ring把寄生拉回正常水平。层次化排布也很关键输入级和输出级不要隔得太远否则两者间长走线的寄生就把高频性能摧毁了。我自己一般把输入差分对放在整个版图中心第二级和补偿电容紧贴第一级输出级靠近右侧Pad。这样寄生电容集中在局部走线也短。远程走线一律高层金属。5.4 直流失调和共模抑制比变差版图之前CMRR能到80多dB后仿真却只有55dB这就是版图不对称惹的祸。最典型的原因就是差分对管的共质心做得不够干净或者Dummy缺失。如果一个管子的栅漏有源区比另一个多0.1µm的偏差等效到输入端就是零点几毫伏×增益倍数的失调映射到CMRR就是灾难。另外电流镜M3/M4如果不做匹配电流比例误差会直接破坏第一级的对称性CMRR和PSRR同时恶化。排查时先用LVS确保电路一致性然后在版图里打开interconnect stress选项检查差分路径上的金属走线电阻是否相等。我试过输入对到电流镜负载之间的金属走线一边走了M1一边走了M2结果完全不可接受——差分会增加至少2mV。修正为同层金属等长布线后CMRR后仿恢复到72dB。一点实操心得这次两级运放的项目做下来我最大的体会是前仿真指标定得太勉强后仿真一定会被寄生拖垮。给版图寄生留余量这件事看起来是浪费性能实际上是在量产可靠性上花钱买保险。另一个体会是手算的重要性——仿真工具能帮你验证设计但它不会替你做设计决策。遇到指标不满足时先回到纸面上推一遍公式往往比盲目扫参数更快。如果你也要做带版图的两级运放建议按这样的顺序推进手算确定尺寸→前仿真验证DC/AC/瞬态→加冗余调整→版图匹配→后仿收敛。整个过程正常在一到两周内能完成但如果中间反复在版图上栽跟头时间就不好说了。后面我还想把噪声分析、电源抑制比和温度特性这些再单独细聊那些更考验对器件物理的理解。
返回列表