1. 为什么折叠式共源共栅结构值得花时间吃透模拟集成电路设计里放大器是绕不开的基本功。你翻遍拉扎维那本经典教材或者在公司内部的技术文档里找会发现共源共栅Cascode结构出现的频率极高。原因很简单它用相对简单的结构换来了可观的增益提升。但普通套筒式共源共栅Telescopic Cascode有个硬伤——输出摆幅被严重压缩输入共模范围也窄在低电源电压场景下几乎没法用。折叠式共源共栅Folded Cascode就是来解决这个矛盾的。它把输入管和共源共栅管放在不同的电流支路上输入信号从底部管子栅极进入电流经过折叠节点后向上或向下流过共源共栅管。这样一来输出摆幅比套筒式大了差不多一个过驱动电压的量级输入共模范围也宽松不少。代价是多了一条电流支路功耗和噪声会略高但对于0.18μm工艺下1.8V供电的典型场景这个折中是划算的。我这次用Cadence Virtuoso在0.18μm工艺上完整走了一遍折叠式共源共栅放大器的设计流程从手工计算到原理图仿真再到版图验证。整个过程踩了不少坑也积累了一些书本上不会写的经验。这篇文章适合已经学过基础模拟电路、想动手做一次完整放大器设计的同学也适合工作中需要快速回顾设计流程的工程师。我会把每一步的计算依据、仿真设置、参数调优过程都摊开来讲你跟着做就能复现出一个可用的放大器。2. 设计目标与整体架构拆解2.1 先定指标再谈结构动手画原理图之前必须把设计指标定清楚。没有指标约束的电路设计就是耍流氓。我这次设定的目标如下参数目标值说明直流增益≥60dB运放基本要求单位增益带宽≥50MHz中等速度场景相位裕度≥60°保证稳定性输出摆幅≥1.2Vpp差分输出功耗≤2mW单支路电源电压1.8V0.18μm典型值负载电容1pF片上负载这些指标之间是互相拉扯的。增益要60dB单级共源共栅在0.18μm下本征增益大概只有40-50dB所以要么用增益提升技术要么做两级。但两级运放需要米勒补偿带宽和稳定性设计会更复杂。我选择单级折叠式共源共栅加增益自举Gain Boosting的方案既能满足增益要求又避免了多级补偿的麻烦。2.2 折叠式共源共栅的架构选择折叠式共源共栅有两种基本形态PMOS输入折叠到NMOS共源共栅或者NMOS输入折叠到PMOS共源共栅。选哪种取决于输入共模范围和输出摆幅的需求。我选的是NMOS输入管、PMOS共源共栅管的方案。理由有三点第一NMOS的迁移率比PMOS高同样的电流下输入管可以做得更小寄生电容更低有利于带宽第二输入共模范围可以做得比较低适合前级直接耦合的场景第三PMOS共源共栅管的衬底可以接到源极消除体效应提高输出阻抗。折叠节点的电压设定很关键。它必须足够低让输入NMOS管工作在饱和区同时又要足够高让PMOS共源共栅管有足够的过驱动电压。在1.8V供电下我通常把折叠节点设在0.6-0.8V左右。这个电压由尾电流源的过驱动和输入管的Vgs共同决定。2.3 电流分配的逻辑折叠式共源共栅的电流关系需要仔细算。假设输入对管各流过Iin那么折叠节点处PMOS共源共栅支路需要提供的电流是Iin加上从PMOS尾电流源注入的电流。通常的做法是让PMOS尾电流源和NMOS尾电流源提供相同的电流Iss那么每条PMOS共源共栅支路的电流就是Iin Iss/2。这里有个经验值Iin通常取总电流的1/3到1/2。Iin太小输入管的gm不够增益和带宽都上不去Iin太大折叠节点处的寄生电容充放电电流增加速度反而可能下降。我这次取Iin Iss/2即输入管和PMOS尾电流源各承担一半的电流。总电流2mA的话每条支路电流约1mA输入管和PMOS负载各500μA。3. 手工计算与参数初选3.1 从增益公式反推器件尺寸折叠式共源共栅的低频小信号增益可以写成Av ≈ gm1 × (gm3 × ro3 × ro1 || gm5 × ro5 × ro7)其中gm1是输入管的跨导gm3和gm5分别是NMOS和PMOS共源共栅管的跨导ro是对应的输出电阻。简化一下如果NMOS和PMOS的共源共栅输出阻抗相当增益约等于gm1 × RoutRout是输出节点的总阻抗。0.18μm工艺下NMOS的本征增益gm×ro大概在15-20倍约24-26dBPMOS略低一些。单层共源共栅的输出阻抗大约是ro乘以(1gm×ro)所以单边输出阻抗可以到几百kΩ量级。要得到60dB1000倍的增益gm1需要做到大约1-2mS。gm1 2×Iin / (Vgs1 - Vth1)取Iin 500μA过驱动电压Vov1 0.15V则gm1 ≈ 6.7mS。这个值相当充裕说明增益目标不难达到。实际上过驱动取0.2V左右更稳妥gm1约5mS配合增益自举后增益可以轻松超过60dB。输入管的宽长比由饱和区电流公式决定Id 0.5 × μn × Cox × (W/L) × Vov²0.18μm工艺的μn×Cox大约在300-400μA/V²。取Vov 0.2VId 500μA算得W/L ≈ 12.5。如果L取0.5μm为了更好的输出阻抗和匹配W就是6.25μm。实际我会取L 0.6μmW 8μm留一些余量。3.2 共源共栅管的尺寸考量共源共栅管的尺寸选择逻辑和输入管不同。它的gm不需要很大因为增益主要由输出阻抗决定但它的ro必须足够大。增大L可以有效提高ro但会带来更大的寄生电容。0.18μm工艺下共源共栅管的L通常取0.5-1μm。我取NMOS共源共栅管的L 0.8μmW 10μm过驱动电压0.25V。PMOS共源共栅管L 0.8μmW 20μmPMOS迁移率低需要更大宽度过驱动0.3V。这些值不是一次算准的后面还要在仿真中反复调。3.3 尾电流源的设计尾电流源用简单的电流镜实现。NMOS尾电流源提供2mA总电流PMOS尾电流源也提供2mA。电流镜的参考电流从外部理想电流源给入实际流片时会用带隙基准产生。尾电流源的输出阻抗直接影响共模抑制比。为了提高匹配和输出阻抗尾电流管的L取1μm以上并采用共源共栅结构。不过共源共栅尾电流源会消耗额外的电压余量在1.8V供电下需要仔细权衡。我这次先用简单电流镜仿真看共模抑制比是否达标不够再加共源共栅。4. Cadence Virtuoso实操全流程4.1 环境准备与库文件配置打开Virtuoso之前确认工艺库已经正确挂载。0.18μm工艺通常对应TSMC或SMIC的库库名可能是tsmc18或smic18。在cds.lib文件中添加库路径DEFINE tsmc18 /path/to/your/pdk/tsmc18 DEFINE mylib ./mylib启动Virtuoso后先建一个自己的设计库mylib依附到tsmc18工艺库上。然后新建schematic cell命名为folded_cascode_amp。注意工艺库的模型文件model file路径要在ADE L的Setup→Model Libraries中正确加载否则仿真会报错找不到模型。通常PDK里会有models/spectre目录里面是.scs文件。4.2 原理图绘制要点画原理图时器件从tsmc18库中调用。NMOS用nchPMOS用pch注意区分不同阈值电压的器件如nch_25是2.5V器件nch是1.8V器件。0.18μm工艺的1.8V器件栅氧较薄耐压只有1.8V左右电源电压不能超过这个值。绘制顺序建议从输入对管开始然后画NMOS共源共栅管、PMOS共源共栅管、尾电流源最后加偏置电路。每画完一个支路就检查一下连接关系避免后面查线麻烦。折叠节点的连线要特别注意。输入管的漏极和NMOS共源共栅管的源极相连同时接到PMOS共源共栅管的漏极。这个节点在版图上会是一个比较关键的公共节点寄生电容要尽量小。偏置电压用理想电压源先给方便前期调试。等电路功能验证通过后再换成实际的偏置电路。理想电压源从analogLib库中调用vdc。4.3 直流工作点仿真原理图画完后第一个要跑的仿真就是直流工作点DC Operating Point。在ADE L中设置分析类型dc保存所有节点电压和器件工作区输出dcOp信息跑完仿真后用Results→Print→DC Operating Points查看每个管子的区域。确保输入管在饱和区region 2共源共栅管在饱和区尾电流管在饱和区所有管子的Vds Vdsat且有一定余量至少50mV如果发现某个管子在线性区先检查偏置电压是否合理再检查器件尺寸。常见问题是PMOS共源共栅管的源极电压太高导致Vds不够。这时候需要降低折叠节点电压或者增大PMOS管的W/L降低其过驱动。我第一版就遇到了PMOS共源共栅管进入线性区的问题。折叠节点电压被输入管的Vgs推到了0.9V而PMOS管的源极接在1.8VVds只有0.9V减去过驱动后余量不足。解决办法是把输入管的W/L加大降低Vgs把折叠节点拉到0.7V左右。4.4 交流小信号仿真直流工作点正常后跑AC仿真看增益和带宽。设置分析类型ac频率范围1Hz到1GHz扫描方式对数每十倍频程20个点输入在输入端加ac源幅度设为1输出看差分输出节点的电压。用Results→Direct Plot→AC Gain Phase可以直接看幅频和相频曲线。我第一版仿真结果低频增益约52dB单位增益带宽约35MHz相位裕度约55°。增益不够带宽也差一点。分析原因输出阻抗不够高gm1也偏小。调优措施增大输入管W提高gm1增大共源共栅管L提高ro适当增大电流但功耗不能超第二轮把输入管W从8μm加到12μm共源共栅管L从0.8μm加到1μm电流从2mA加到2.5mA。增益提升到58dB带宽到48MHz相位裕度62°。还是差一点增益。4.5 增益自举电路的加入单级折叠式共源共栅在0.18μm下做到60dB确实吃力。我加了一个简单的增益自举辅助放大器。辅助放大器是一个差分对检测共源共栅管的源极电压反馈到其栅极等效于把共源共栅管的gm提高了A倍输出阻抗也提高A倍。辅助放大器的设计要点增益不需要很高20dB左右即可带宽要足够至少和主放大器相当输入共模范围要覆盖共源共栅管的源极电压功耗要小每条辅助支路控制在100μA以内加了增益自举后低频增益跳到了72dB带宽略降到45MHz相位裕度58°。相位裕度偏低需要调零电阻或者稍微降低增益自举的带宽。实操心得增益自举的辅助放大器带宽不要做太高否则会引入额外的极点恶化相位裕度。辅助放大器的单位增益带宽取主放大器带宽的1.5-2倍比较合适。4.6 稳定性与相位裕度调优相位裕度是运放设计的生命线。58°虽然能用但留的余量不够。我做了两件事第一在输出节点加了一个小电容约0.2pF到地引入一个低频极点同时把主极点往低频推。这个电容不能太大否则带宽掉太多。第二调整增益自举辅助放大器的补偿电容降低其带宽让它的极点远离主放大器的单位增益频率。调完后相位裕度到65°带宽42MHz增益70dB。这个结果可以接受。4.7 噪声与失配仿真噪声仿真在ADE中选noise分析输出噪声用Results→Direct Plot→Noise查看。输入参考噪声在1kHz处约15nV/√Hz主要贡献来自输入对管和PMOS尾电流源。折叠式结构的噪声比套筒式略高这是折叠支路多带来的代价。失配仿真用蒙特卡洛分析。设置monteCarlo分析跑200次看失调电压的分布。0.18μm工艺下输入对管的失调电压标准差大约2-3mV。如果失调要求高需要增大输入管面积或者加斩波稳定技术。5. 版图设计与后仿真5.1 版图布局规划原理图仿真通过后开始画版图。折叠式共源共栅的版图布局有几个原则输入对管放在最左边做共中心对称common centroid布局减小梯度失配电流镜管也做对称布局折叠节点走线尽量短减小寄生电容电源线和地线用宽金属减小IR drop敏感节点加保护环guard ring隔离衬底噪声我用的版图层次M1走内部连线M2走电源和地M3走输出和偏置。0.18μm工艺通常有6层金属够用了。5.2 匹配与寄生优化输入对管的匹配直接决定失调。共中心对称布局把两个管子拆成多个finger交叉排列。比如每个管子拆成4个finger按ABBA的方式排列。这样即使工艺有梯度两个管子看到的平均环境也是一样的。寄生电容方面折叠节点和输出节点是重点。折叠节点的寄生电容会降低带宽输出节点的寄生电容会影响相位裕度。走线用最小宽度能短则短。共源共栅管的漏极和栅极走线避免平行长距离走线减小耦合电容。5.3 后仿真流程版图画完后用Calibre或Assura做LVS版图与原理图一致性检查和PEX寄生参数提取。PEX会生成带寄生参数的网表用这个网表跑后仿真。后仿真结果通常比前仿真差一些。我这次后仿真增益降到65dB带宽降到38MHz相位裕度60°。寄生电容吃掉了不少性能。如果后仿真结果不达标需要回到版图优化走线或者回到原理图增大设计余量。注意PEX提取时选择正确的提取模式。CCC模式提取电容和耦合电容精度够用RCCC模式提取电阻精度更高但仿真时间更长。前期用CCC快速迭代最终签核用RCCC。6. 常见问题与排查技巧实录6.1 直流工作点不收敛仿真报错DC convergence failed是新手最常遇到的问题。原因通常是电路存在正反馈环路或者某个节点没有直流通路。排查步骤检查所有节点是否有到地的直流通路特别是高阻抗节点在ADE中设置dc分析的homotopy方法为gmin或source给关键节点加初始条件.ic语句先用理想电压源替代偏置电路确认主电路能收敛我遇到过一次折叠节点不收敛原因是PMOS尾电流源和NMOS尾电流源同时给电流节点电压被推到电源轨。解决办法是加一个大的电阻1GΩ到地给节点一个直流通路。6.2 增益远低于预期增益不够的原因很多按优先级排查可能原因检查方法解决措施管子不在饱和区看dcOp的region调偏置或尺寸输出阻抗低看ro值增大L加增益自举gm1太小看gm值增大W或电流负载效应看输出节点连接检查是否有意外负载寄生电容旁路看AC曲线优化版图我第一版增益只有52dB查了半天发现是PMOS共源共栅管的衬底接错了体效应导致阈值电压变化管子实际工作点偏移。把衬底接到源极后增益恢复到58dB。6.3 相位裕度不足相位裕度低于45°时阶跃响应会有明显振铃低于30°可能振荡。提升相位裕度的方法降低主极点频率加补偿电容提高次极点频率减小该节点阻抗加调零电阻米勒补偿时降低增益自举辅助放大器的带宽我试过在输出节点加0.5pF电容相位裕度从55°提到70°但带宽从45MHz掉到25MHz。后来改用0.2pF配合辅助放大器带宽调整找到了平衡点。6.4 版图LVS报错LVS报错通常是连线错误或器件参数不匹配。常见错误器件finger数不一致原理图是1个管子版图拆成了4个fingerLVS会认为器件不匹配。需要在原理图中也设置相同的finger数或者用m参数。衬底连接错误NMOS的衬底必须接最低电位PMOS接最高电位。如果接错LVS会报错。文本层缺失版图中的pin没有对应的label层LVS找不到端口。排查LVS时先看报错信息中的器件名和节点名对照版图定位。Calibre的RVE工具可以高亮显示不匹配的器件非常方便。6.5 后仿真性能下降太多后仿真比前仿真差是正常的但差太多就不正常了。如果增益掉了10dB以上带宽掉了一半说明版图寄生太大。重点检查输出节点和折叠节点的走线是否太长共源共栅管的漏极扩散区面积是否过大是否有长距离平行走线引入耦合电容电源地线是否太窄导致IR drop我这次后仿真增益掉了5dB带宽掉了7MHz在可接受范围内。如果掉太多优先缩短关键节点走线或者换用更高层金属寄生电容更小。7. 几个让我少走弯路的实操习惯第一个习惯是每改一次参数就存一个版本。Virtuoso的schematic和ADE state都可以存多个版本命名带上日期和关键参数比如amp_gain60_bw50_v3。这样调优过程中可以随时回退不会把自己绕进去。第二个习惯是仿真前先跑一遍Check Save确保没有悬空节点和短路。Virtuoso的Check功能能查出大部分连接错误比仿真报错后再查快得多。第三个习惯是AC仿真时同时看幅频和相频曲线不要只看增益。相位裕度不够的话增益再高也没用。我通常把Direct Plot设置成同时显示gain和phase一眼就能判断稳定性。第四个习惯是版图完成后先跑LVS再跑PEX。LVS过了说明连接没问题PEX才有意义。LVS没过就跑PEX提取出来的网表也是错的白费时间。第五个习惯是保留一份理想源的测试bench。偏置电路换上去之后如果仿真结果异常可以快速切回理想源判断是偏置电路的问题还是主电路的问题。这个bench在debug时能省很多时间。折叠式共源共栅放大器在0.18μm工艺下的设计说到底就是增益、带宽、功耗、摆幅这几个指标的折中游戏。手工计算给你一个起点仿真帮你找到方向版图决定最终性能。我这次从零开始到后仿真通过大概花了三天时间其中版图和后仿真占了一半。如果你刚开始做建议先把原理图仿真跑通指标不用追求极致留20%余量给版图寄生。等第一版完整走通后再回头优化参数心里就有底了。