折叠式共源共栅放大器Folded Cascode是模拟集成电路设计里绕不开的一个经典结构。我当年第一次在Cadence Virtuoso里搭这个电路的时候光是搞明白为什么PMOS要折叠、为什么不能直接把NMOS共源共栅堆上去就花了好几天。这次拿0.18μm工艺从头走一遍完整流程把当时踩过的坑、后来带新人时反复强调的要点都整理出来。整篇内容会覆盖从电路结构选型、手工计算、原理图搭建、DC/AC仿真、参数调优到版图匹配的完整链路适合正在学模拟IC设计的学生、刚入行的版图/电路工程师以及需要快速复现这个经典结构做课程设计或项目验证的朋友。0.18μm是个很成熟的工艺节点电源电压通常取1.8V阈值电压在0.4~0.5V左右这些数字后面会反复用到。1. 为什么折叠式共源共栅值得单独拿出来做一遍1.1 从直接堆叠到折叠的动机很多人学共源共栅Cascode是从套筒式Telescopic开始的——NMOS输入对下面串一个NMOS共源共栅管再下面串尾电流源三层管子垂直叠起来。这个结构增益高、噪声低、功耗小看起来很美。但它有个致命问题输出摆幅被严重压缩。三层管子叠在一起每层都要消耗一个过驱动电压Vov再加上尾电流源的Vov输出端能用的电压范围就只剩VDD减去这一堆Vov之和。在1.8V电源下套筒式结构留给输出的摆幅往往不到0.8V做高增益放大器还行一旦要驱动后级或者做宽摆幅输出就捉襟见肘。折叠式共源共栅的思路很直接把输入管的电流折叠到另一条支路上让输入管和共源共栅管不在同一条垂直路径上堆叠。具体来说NMOS输入对把电流从上方引下来通过一个PMOS共源共栅管或者反过来把电流折向另一侧。这样输入管和共源共栅管在垂直方向上只占两层输出摆幅能多出大约一个Vov的空间。代价是多了两条支路功耗和噪声会略差一些但换来的是摆幅和输入共模范围的灵活性。我个人的经验是如果项目对输出摆幅要求不高、追求极致低功耗套筒式更合适但只要输出需要摆到接近电源轨、或者输入共模范围要宽折叠式几乎是默认选择。0.18μm工艺下1.8V电源折叠式能轻松做到1.2V以上的输出摆幅这个优势在实际项目里非常实在。1.2 折叠式结构的核心指标预期在动手画原理图之前先明确这个电路要达成什么。我一般会给自己定一个目标表避免后面仿真时漫无目的地调参数。以0.18μm、1.8V电源、单端输出为例一个典型的设计目标如下指标目标值说明开环直流增益≥ 60 dB折叠式单级通常能到60~70dB单位增益带宽 GBW50~100 MHz取决于负载电容和功耗预算相位裕度≥ 60°保证稳定性输出摆幅≥ 1.2 V折叠式的核心优势静态功耗1~3 mW每条支路几百μA输入共模范围0.6~1.4 V覆盖常见共模电平这张表不是拍脑袋来的。增益60dB意味着低频增益约1000倍折叠式单级靠本征增益gm·ro的乘积0.18μm工艺下单个管子的gm·ro大概在20~40两级共源共栅叠起来刚好够。GBW和功耗直接挂钩因为GBW≈gm/(2π·CL)而gm又由偏置电流决定。这些关系后面会具体算。提示目标表一定要在画图前定好否则仿真时你会陷入调大电流增益上去了但功耗超标、调小电流功耗下来了但带宽不够的循环。先定指标再定电流最后定尺寸这个顺序不能乱。1.3 0.18μm工艺带来的具体约束0.18μm工艺不是随便选的。它的特征尺寸决定了几个关键参数栅氧厚度tox大约4.1nm迁移率μn约400 cm²/V·s、μp约100 cm²/V·s阈值电压Vthn约0.45V、Vthp约-0.45V。这些数字直接决定了你的管子尺寸和偏置点。举个实际的例子如果我要让输入NMOS的过驱动电压Vov0.2V偏置电流200μA那么根据饱和区电流公式Id½·μn·Cox·(W/L)·Vov²可以反推出W/L。Coxεox/toxεox≈3.9×8.854e-12 F/m算下来Cox≈8.4 fF/μm²。代入200e-6 0.5 × 400e-4 × 8.4e-15 × (W/L) × 0.04注意单位统一到cm和F。算出来W/L大概在30左右。这个量级在0.18μm里很常见输入管W取6μm、L取0.2μm就差不多。工艺约束还体现在0.18μm的最小沟长是0.18μm但实际设计里L经常取0.2~0.5μm因为太短的沟长会导致输出阻抗下降、匹配变差。共源共栅管的L我会取0.5μm甚至1μm就是为了把ro做大提升增益。这些取舍后面细讲。2. 电路结构拆解与手工计算2.1 折叠式共源共栅的完整拓扑先把结构说清楚。一个标准的NMOS输入折叠式共源共栅单端输出放大器包含以下部分输入差分对M1、M2两个NMOS源极连在一起接尾电流源栅极接差分输入。尾电流源MtailNMOS给输入对提供恒定偏置电流。折叠共源共栅支路M3、M4两个PMOS作为共源共栅管把输入对的电流折叠到输出侧。PMOS电流源负载M5、M6给折叠支路提供偏置电流。输出级输出从M4的漏极取出接负载电容CL。电流的走向是这样的尾电流源Itail从M1、M2的源极抽走电流每个输入管分到Itail/2。这个电流从上方PMOS电流源M5/M6流下来经过M3/M4这对PMOS共源共栅管再流入M1/M2的漏极。所以M1的漏极电流等于M5提供的电流减去M3的电流通过调整M5和M3的电流差让M1工作在饱和区。这里有个关键点折叠支路的电流Ifold通常要大于输入对电流Itail/2一般取Ifold 1.2~1.5倍的Itail/2。为什么因为如果Ifold太小M3/M4的过驱动电压会很大导致M1/M2的漏极电压被压得很低输入管容易进入线性区。我一般取Ifold 1.5 × (Itail/2)这样M3/M4的Vov能控制在0.2~0.3VM1的漏极电压有足够余量。2.2 手工计算从指标反推尺寸假设目标Itail 400μA每条折叠支路Ifold 300μA电源1.8VCL 1pF目标GBW 80MHz。第一步算输入管的gm。GBW gm1/(2π·CL)所以gm1 2π × 80e6 × 1e-12 0.5 mS。这个gm对应输入管的偏置电流是Itail/2 200μA。根据gm 2Id/VovVov 2×200e-6/0.5e-3 0.8V。这个Vov太大了说明要么电流不够要么GBW目标偏高。实际上0.5mS的gm在200μA下对应的Vov确实偏大正常应该让Vov在0.15~0.25V那gm应该在1.6~2.6mS。所以要么加大电流要么降低GBW。我重新调整把Itail加到800μA每条支路400μA输入管电流400μA。gm 2×400e-6/0.2 4mS取Vov0.2V。这时GBW 4e-3/(2π×1e-12) 636MHz远超目标。说明电流给多了。折中一下Itail 500μA输入管250μAVov0.2Vgm 2.5mSGBW 398MHz。还是偏高。问题在于1pF的负载太小了。实际电路中输出端往往有寄生电容和下一级的输入电容CL取5pF更现实。重新算GBW gm/(2π×5e-12)要80MHzgm 2π×80e6×5e-12 2.5mS。对应输入管电流250μA、Vov0.2V刚好。所以Itail 500μA每条折叠支路取1.5倍即375μA取整400μA。第二步算各管W/L。输入管M1/M2Id250μAVov0.2VμnCox≈400e-4×8.4e-153.36e-10 F/V·s换算成标准单位。W/L 2Id/(μnCox·Vov²) 2×250e-6/(3.36e-10×0.04) 3.72e4。这个数字不对单位又搞混了。重新来μnCox的单位是μA/V²0.18μm下典型值约270μA/V²。W/L 2×250/(270×0.04) 46.3。取W/L46L0.2μmW9.2μm取整W10μm。PMOS共源共栅管M3/M4Id400μAVov取0.25VμpCox约70μA/V²。W/L 2×400/(70×0.0625) 183。这个W/L很大因为PMOS迁移率低。L取0.5μmW91.5μm取整92μm。这个尺寸在版图里会占不小面积但没办法PMOS就是这样。PMOS电流源M5/M6Id400μAVov取0.3VW/L 2×400/(70×0.09) 127。L取1μmW127μm。尾电流源MtailId500μAVov取0.3VW/L 2×500/(270×0.09) 41。L取1μmW41μm。这些数字是手工估算的起点实际仿真时肯定要微调。但有了这个起点你在Virtuoso里设参数就不会两眼一抹黑。2.3 增益估算与验证思路折叠式共源共栅的直流增益公式是Av gm1 × (gm3·ro3·ro1 || gm5·ro5·ro7)。这里ro1是输入管的输出电阻ro3是PMOS共源共栅管的输出电阻ro5/ro7是电流源管的输出电阻。简化一下输出电阻Rout ≈ (gm3·ro3·ro1) || (gm5·ro5·ro7)。0.18μm下L0.2μm的NMOSro大约在10~20kΩ·μm量级具体值取决于电流。L0.5μm的PMOSro会大不少。假设ro120kΩro350kΩgm32mS那么gm3·ro3·ro1 2e-3×50e3×20e3 2e6 Ω即2MΩ。另一条支路类似并联后Rout约1MΩ。Av gm1×Rout 2.5e-3×1e6 2500即68dB。这个估算和前面60dB的目标吻合说明结构选型和电流分配是合理的。注意手工计算永远只是起点。0.18μm工艺的模型里短沟道效应、DIBL、体效应都会让实际ro比手算值低。我一般会把手算增益打个七折作为预期然后靠仿真验证。如果仿真出来只有50dB别慌先检查管子是否都在饱和区再考虑加大L或者用增益提升技术。3. Virtuoso原理图搭建的实操细节3.1 工程库与工艺库的准备打开Virtuoso之前先确认工艺库挂好了。0.18μm工艺通常以PDK形式提供里面包含模型文件、符号库、参数化单元PCell。在CIW窗口里通过Tools→Library Manager确认能看到工艺库比如tsmc18或者smic18之类的名字。如果看不到检查cds.lib文件里有没有正确的库路径定义。新建一个自己的设计库比如folded_cascode_ampAttach到工艺库上。这一步很关键Attach之后你在这个库里新建cell时才能直接调用工艺库的器件。我见过新人忘了Attach结果画原理图时找不到nmos器件折腾半天。3.2 器件选型与参数设置在schematic里按i键调出器件选择窗口。0.18μm工艺一般提供几种MOS管模型nmos普通、nmos_rf射频、nmos_high_v高压等。做这个放大器用普通nmos和pmos就够了。选中nmos后会弹出参数窗口。关键参数有Total Width总宽度可以填单指宽度×指数。Length沟长。Fingers指数即多少个指状管子并联。Multiplier倍数。我一般用Fingers来控制版图匹配。比如输入管W10μm可以设Fingers5每指2μm也可以设Fingers2每指5μm。指状结构在版图里更容易做共质心匹配。但指状太多会增加栅电阻影响噪声。折中取Fingers4~6比较常见。PMOS共源共栅管W92μm如果单指太宽版图会很难看。设Fingers8每指11.5μm或者Fingers10每指9.2μm。我倾向Fingers10这样每指宽度接近输入管匹配性好一些。3.3 偏置与电流镜的搭建折叠式共源共栅需要几个偏置电压尾电流源的栅压Vb_tail、PMOS电流源的栅压Vb_p、PMOS共源共栅管的栅压Vb_casc。这些偏置通常用理想电压源先给上等电路跑通了再换成实际的电流镜偏置。我习惯先用理想电压源vdc给偏置因为这样调试最快。尾电流源的栅压可以从0开始扫观察尾电流什么时候到500μA。PMOS电流源的栅压类似从VDD往下扫看电流到400μA时的值。PMOS共源共栅管的栅压要保证M3/M4工作在饱和区一般设在VDD-0.5V左右具体看仿真。这里有个实操技巧在Virtuoso里可以用parametric analysis扫描偏置电压一次性看到电流随电压的变化曲线比手动一个个试快得多。在ADE L里设置dc分析扫描变量然后看输出电流。3.4 仿真前的检查清单原理图画完别急着跑仿真。先做这几件事检查所有管子的体连接。NMOS的体接VSSPMOS的体接VDD。0.18μm工艺里体连接不对会导致阈值电压漂移甚至管子不工作。检查节点命名。输入对的正负端、输出端、电源地命名要清晰后面看波形才不迷糊。加初始条件。折叠式电路有多个简并工作点仿真时可能收敛到错误的状态。可以在输出节点加一个初始电压用ic语句帮助收敛。确认模型文件路径。ADE里Setup→Model Libraries确认工艺模型文件已加载corner设置正确tt、ff、ss等。我踩过最大的坑就是忘了加初始条件DC仿真跑出来输出是0V以为电路坏了查了半天才发现是收敛到了截止状态。后来养成习惯每次都在输出节点加ic0.9V大约VDD/2问题就没了。4. DC仿真与工作点调试4.1 跑通第一个DC工作点在ADE L里新建一个dc分析勾选Save DC Operating Point。跑完之后在schematic里点每个管子会弹出annotate窗口显示Vgs、Vds、Vth、Vdsat、Id等参数。这是调试的核心工具。重点看三个东西Vds vs Vdsat如果Vds Vdsat管子在线性区增益会暴跌。每个管子都要保证Vds Vdsat最好留50~100mV余量。Id确认每条支路电流符合设计值。输入管250μA折叠支路400μA尾电流500μA。regionVirtuoso会直接标注管子工作在region 0截止、1线性、2饱和、3亚阈值。确保所有管子都在region 2。我第一次跑的时候发现PMOS共源共栅管M3的Vds只有0.15V而Vdsat是0.25V明显在线性区。原因是PMOS电流源M5的栅压设得太低导致M5的电流不够M3被拉到了线性区。把M5的栅压调高一点电流上去了M3的Vds就回到0.4V进入饱和区。4.2 输入共模范围的扫描输入共模范围ICMR是折叠式放大器的重要指标。在ADE里设置dc分析扫描输入共模电压Vcm从0扫到1.8V看输出直流电压的变化。理想情况下Vcm在某个范围内变化时输出应该保持稳定因为差分对只放大差模共模被抑制。但实际上Vcm太低会让尾电流源进入线性区Vcm太高会让输入管进入线性区。具体操作把输入正负端都接到同一个电压源Vcm上扫描Vcm。观察输出节点电压。当Vcm从0.6V扫到1.4V时输出应该基本不变。如果输出在某个Vcm下突然跳变说明那个点管子出了饱和区。我实测下来0.18μm、1.8V电源、这个尺寸配置下ICMR大概在0.55V到1.45V之间。低于0.55V时尾电流源Vds不够高于1.45V时输入管Vds不够。这个范围对于大多数应用足够了。4.3 输出摆幅的验证输出摆幅的测试方法是在输出端加一个直流扫描看输出能摆到多高和多低而不失真。更准确的做法是跑瞬态加大输入信号看输出什么时候削顶。DC方法在输出节点加一个电压源Vout扫描Vout同时监测输出管的电流。当Vout接近VDD时PMOS电流源M5会进入线性区当Vout接近VSS时NMOS共源共栅管如果有的话会进入线性区。折叠式结构里输出端只有PMOS共源共栅管M4和NMOS输入管M2的漏极所以低端摆幅受限于M2的Vds。我一般直接看DC工作点输出静态电压设在0.9VVDD/2然后手动改输出负载或者加扫描看输出能到1.6V和0.3V而不出饱和区。这样摆幅就是1.3V符合预期。5. AC仿真与稳定性调优5.1 开环增益与相位裕度的测量AC仿真是验证放大器性能的关键。在ADE里设置ac分析频率从1Hz扫到1GHz输入加一个ac小信号源acm1。输出看Vout的幅度和相位。但这里有个坑折叠式放大器的开环增益很高直接跑AC可能会因为直流工作点不稳定而失败。我一般用stb分析稳定性分析来测环路增益和相位裕度比直接跑AC更可靠。stb分析会在环路里插入一个probe自动计算环路增益和相位。如果工艺库不支持stb那就用AC分析但要在输入端加一个很大的电感或电容来断开环路同时保证直流工作点不变。这个方法比较麻烦我一般优先用stb。跑完看结果低频增益应该接近68dB单位增益频率在80MHz左右相位裕度大于60°。如果相位裕度不够说明主极点和次极点靠得太近。折叠式放大器的主极点在输出节点次极点在折叠节点M1/M3的连接点。要拉开两个极点可以加大输出节点的电容但会降低GBW或者减小折叠节点的电容减小M3的尺寸。5.2 相位裕度不足时的调整策略相位裕度不足是折叠式放大器最常见的稳定性问题。我遇到过好几次增益和带宽都达标但相位裕度只有40°电路会振铃。调整思路按优先级排减小折叠节点电容。折叠节点是M1漏极和M3漏极的连接点这个节点的寄生电容主要来自M1和M3的漏极电容。减小M3的宽度可以降低这个电容但会降低gm3影响增益。折中把M3的Fingers从10减到6每指宽度加大总宽度不变但漏极面积减小。加大输出节点电容。在输出端并联一个小电容比如0.5pF把主极点往低频推次极点相对就远了。代价是GBW下降。如果GBW有余量这招最直接。加米勒补偿。在M4的栅漏之间加一个小电容利用米勒效应把主极点进一步推低。但折叠式单级放大器一般不需要米勒补偿加了反而可能引入右半平面零点。调整偏置电流。加大折叠支路电流可以提高gm3把次极点往高频推。但功耗会增加。我一般先用第1招不行再上第2招。实测下来把M3的Fingers从10减到6相位裕度能从45°提到58°效果很明显。5.3 噪声与失配的初步评估噪声在AC仿真里可以一起跑。ADE里设置noise分析输出看输入参考噪声。0.18μm下折叠式放大器的输入参考噪声在1kHz处大概在几十nV/√Hz量级。如果噪声超标主要贡献来自输入对和尾电流源。加大输入管的W可以降低闪烁噪声加大尾电流源的L可以降低它的噪声贡献。失配方面蒙特卡洛仿真可以跑但比较耗时。我一般先做手工估算输入对的失配电压σVth ≈ A_VT/√(W·L)0.18μm下A_VT约3~5mV·μm。W10μm、L0.2μmσVth ≈ 4/√2 ≈ 2.8mV。这个量级对于大多数应用可以接受。如果要求更高加大W·L面积。6. 版图设计中的匹配与寄生控制6.1 输入对的共质心布局版图是折叠式放大器从仿真走向实际的关键一步。输入对M1/M2的匹配直接决定失调电压必须用共质心common-centroid布局。具体做法把M1和M2各拆成偶数个指交叉排列比如M1a、M2a、M2b、M1b这样两个管子的重心重合工艺梯度的影响被抵消。在Virtuoso Layout里可以用Module Generator或者手动摆放。手动摆放时注意每个指的栅极朝向要一致源漏区共享可以减少面积。0.18μm工艺的金属层有6层左右输入对的连线用Metal1尽量短而对称。我见过新人把M1和M2并排摆放结果失调电压仿真出来有十几mV远超预期。改成共质心后失调降到2mV以内。这个差距在精密应用里是致命的。6.2 电流镜的匹配技巧PMOS电流源M5/M6和尾电流源Mtail的匹配也很重要。电流镜的失配会导致支路电流偏差进而影响输出共模电平。M5/M6用共质心布局Mtail如果只有一个管子就把它放在输入对附近保证温度一致。电流镜的匹配还跟沟长有关。L越大匹配越好但面积越大。0.18μm下电流镜的L一般取1~2μm。我取1μm是折中如果失调要求高可以加到2μm。6.3 寄生电容与电阻的抑制版图里的寄生主要来自连线。输出节点的连线要尽量宽用Metal2或Metal3减小电阻。折叠节点的连线要尽量短减小电容。输入端的连线要对称避免引入额外的失调。电源和地的走线要足够宽避免IR drop。0.18μm工艺里Metal1的方块电阻约0.1Ω/方如果走线100方就是10Ω。对于几百μA的电流IR drop是几mV可以接受。但如果电流更大就要用更宽的线或者上层金属。提示版图画完后一定要跑LVSLayout vs Schematic和DRCDesign Rule Check。LVS确保版图和原理图一致DRC确保没有违反工艺规则。这两个检查不过后面的后仿都是白搭。我一般先跑DRC再跑LVS最后跑PEX寄生提取做后仿。6.4 后仿与前后仿对比后仿是把版图提取出的寄生参数反标到原理图里再跑一遍仿真。0.18μm下后仿的增益通常会比前仿低几个dB带宽也会下降因为寄生电容增加了。如果后仿结果和前仿差距太大比如增益掉了10dB说明版图寄生控制得不好要回去优化布局。我的一般流程是前仿达标→画版图→DRC/LVS→PEX→后仿→如果达标就tapeout不达标就改版图。后仿的相位裕度尤其要关注因为寄生电容可能让次极点往低频移动吃掉相位裕度。7. 几个容易翻车的细节和我自己的习惯7.1 简并工作点的处理折叠式放大器有多个直流简并点仿真时可能收敛到错误的状态。除了前面说的加ic初始条件还可以在ADE里设置nodeset或者用homotopy方法。我习惯在输出节点加ic0.9V在折叠节点加ic1.0V这样收敛最稳。如果还是不行可以先用理想电流源代替尾电流源跑通之后再换成MOS电流源。这个方法虽然笨但很有效。7.2 体效应的补偿输入管的体效应会降低gm影响增益。如果工艺允许可以把输入管的体接到源极需要双阱工艺消除体效应。但0.18μm的普通工艺里NMOS的体通常接VSS不能随便接源极。这时候只能通过加大W来补偿gm的损失。PMOS共源共栅管的体效应也会影响它的输出电阻。如果PMOS做在n阱里体接VDD体效应系数γ约0.5√V。这个影响在增益估算时要考虑进去。7.3 温度与工艺角的验证电路跑通之后一定要跑corner。tt典型、ff快、ss慢、fs、sf五个corner都要看。0.18μm工艺下ss corner的增益可能比tt低5~8dBff corner的带宽可能高20%。如果ss corner增益不达标就要加大L或者加大电流。温度也要扫-40°C到125°C。高温下迁移率下降gm降低增益会掉。低温下阈值电压升高可能影响偏置。我一般跑-40、27、85、125四个温度点。7.4 我个人的参数调试顺序最后分享一下我调这个电路的顺序供参考先调尾电流源让Itail到设计值。再调PMOS电流源让折叠支路电流到设计值。调PMOS共源共栅管的栅压让M3/M4进入饱和区。检查输入管的Vds确保在饱和区。跑DC看所有管子的region。跑AC/stb看增益和相位裕度。不达标就回到第1步微调电流或尺寸。达标后跑corner和温度。画版图跑DRC/LVS/PEX。后仿验证。这个顺序看起来简单但每一步都有坑。比如第3步PMOS共源共栅管的栅压如果设得太高M3会进入线性区设得太低M3的Vds过大可能击穿。0.18μm的击穿电压大概在3~4V1.8V电源下不会击穿但Vds太大会让ro下降增益降低。整个流程走下来从零到后仿达标熟练的话大概两三天。第一次做可能要一周。关键是理解每个参数背后的物理意义而不是盲目试。我当年就是靠反复跑仿真、看工作点、改参数慢慢摸清了折叠式放大器的脾气。现在回头看这个结构虽然经典但细节非常多值得每个模拟IC设计者亲手做一遍。