折叠式共源共栅放大器的gm/Id设计流程与Virtuoso仿真验证

发布时间:2026/9/17 9:31:40
折叠式共源共栅放大器的gm/Id设计流程与Virtuoso仿真验证 做了多年模拟IC设计我越来越觉得折叠式共源共栅放大器Folded-Cascode OTA是检验一个工程师基本功的试金石。结构不复杂但要在增益、带宽、摆幅、功耗之间做平衡牵扯到的全是模拟设计最核心的直觉。早年我用平方律公式手算到了深亚微米工艺后误差越来越大后来全面转向gm/Id方法配合Cadence Virtuoso的仿真流程做设计效率提升非常明显。这篇文章从设计思路讲到完整仿真验证把我在实际项目中常用的做法和踩过的坑一并整理出来。1. 项目整体设计与思路拆解1.1 为什么选择折叠式共源共栅结构在开始讲gm/Id方法论之前先把拓扑选型的问题说清楚。单级运放里套筒式共源共栅Telescopic Cascode和折叠式共源共栅是两种最常用的高增益结构它们本质上是同一个思路——用共源共栅提高输出阻抗从而在单级内拿到60dB以上的增益。那为什么很多场景下我们必须选折叠式答案藏在输入共模范围和输出摆幅的取舍里。套筒式结构最大的毛病是输入共模电平被限制在一个很窄的窗口内而且输入对管和输出支路共用电流想同时优化输入级跨导和输出摆幅往往要反复折衷。折叠式结构把输入对和输出级从电流通路上分开了输入共模可以做到包含地或者包含电源这在低电源电压下是硬需求。代价是同样的电流预算下功耗会高一些因为输入支路和输出支路是并联的。我的经验是电源电压在1.8V以下、输入共模范围要求比较宽、或者需要驱动较大容性负载时优先考虑折叠式如果功耗卡得很死且输入共模范围本来就是固定电平套筒式可能更合适。做产品定义的时候这两者一定要算清楚不要拿到规格就动手画管子。1.2 gm/Id方法论解决了什么核心问题传统教材上的手算流程是根据增益带宽积确定跨导gm再假设管子工作在饱和区用平方律公式Id 0.5μCox(W/L)*(Vgs-Vth)² 去解宽长比。这个方法在0.18μm以上的长沟道工艺里还算好用到了90nm以下问题就来了。短沟道器件里速度饱和、沟道长度调制、DIBL效应全部出来干扰实测的Vth和μ都是偏置状态的复杂函数用平方律算出来的W/L可能偏出好几倍。更关键的问题是平方律公式没有提供效率的视角——同样一个gm到底是多花电流换来的还是少花电流换来的这在低功耗设计里是要命的。gm/Id方法的核心思想是把跨导效率当作设计的第一变量。gm/Id的本质是器件跨导与漏电流的比值单位是V⁻¹它直接告诉你每消耗1mA电流能换到多少mS的跨导。这个参数在工艺库的仿真模型里天然包含了所有短沟道效应不需要任何解析公式去近似。然后用gm/Id → 电流密度ID/W → 尺寸W这条链路去完成设计整个流程的精度和可复现性都远高于传统手算。2. gm/Id设计流程的核心环节2.1 需要从特征化中提取哪些参数要用好gm/Id方法首先得有一组从工艺库中提取出来的特征曲线。我一般在Cadence Virtuoso里对单个器件做DC扫描固定VDS、扫VGS然后同时记录下面几组参数gm/Id跨导效率设计的主变量ft特征频率gm/(2π*Cgg)衡量器件速度上限gm/gds本征增益决定单管能达到的最高增益ID/W电流密度用于从电流换算宽度这四组参数才是gm/Id方法的完整输入。实际取数的时候建议把VDS也作为参数扫描因为同一颗管子在不同VDS下的曲线差异很大特别是gm/gds受VDS影响非常明显。我习惯的做法是扫VGS从0到VDDVDS按工作点附近的值固定之后在计算器里直接调出这几项画图。2.2 从设计规格反推关键参数拿到特征曲线之前先把设计指标转换成电路层面的参数。我这里用一个实际做过的规格做例子方便后面每一步对照。我常用的规格表是这样指标目标值说明电源电压1.8V0.18μm工艺直流增益≥60dB开环增益单位增益带宽≥500MHz负载电容0.5pF相位裕度≥60°保证稳定性输出摆幅≥1.2Vpp差分摆幅功耗≤2mW整个运放从带宽反推跨导GBW gm/(2π*CL)所以gm 2π * 500MHz * 0.5pF ≈ 1.57mS。这是输入对管的总跨导分摊到差分对每一侧就是约0.79mS。从增益要求看输出阻抗Av gm * Rout ≥ 60dB也就是Rout ≥ 316V/mA。折叠式共源共栅的输出阻抗由共源共栅管的ro叠加而来单靠一条支路的native ro往往不够所以实际设计里经常需要加入增益增强或者自共源共栅结构来把Rout顶上去这个后面讲细节。功耗预算2mW在1.8V下意味着总电流约1.1mA。这部分要在输入支路、折叠支路、偏置支路之间做分配。我的经验是输入对总电流占总电流的40%左右折叠支路占40%偏置占20%这样既保证输入级的gm又保证输出级的摆率。2.3 用gm/Id查找表完成尺寸换算gm/Id方法最核心的换算公式其实很简单已知需要的跨导gm和选定的gm/Id值电流Id gm / (gm/Id)再从特征曲线上读出这个偏置点对应的ID/W宽度W Id / (ID/W)。整个过程就是查表、乘除、再查表。问题在于gm/Id的值怎么选。这里需要同时看三条曲线想要低功耗选gm/Id在15-20V⁻¹的高效率区器件工作在弱反型速度会慢想要高速度选gm/Id在5-8V⁻¹的强反型区代价是同样的gm需要更多电流想要合理的功耗速度折衷选gm/Id在10-12V⁻¹附近器件工作在中反型区实际操作里我是这么定的先根据带宽需求算出ft的底线再从ft曲线上反推gm/Id的最大值然后在这个上限以内选一个能接受gm/gds损耗的值。不要一上来就选15以上等仿真发现增益不够再往回调会省不少事。3. Cadence Virtuoso环境搭建与gm/Id特征化实操3.1 在Virtuoso里准备器件模型和测试平台这一节开始进入Cadence Virtuoso的操作细节。我用的是IC617之后的版本ADE XL做仿真管理ocean脚本批量取数。工艺库以tsmc或中芯国际的0.18μm为参考不同工艺下曲线形状略有差异但方法完全通用。先建一个测试cell放一颗待测的NMOS管或者PMOS管栅极接一个理想电压源VGS漏极接理想电压源VDS源极和衬底接地。注意衬底连接不能悬空否则模型跑出来的结果会带浮空体效应提取出来的Vth和gm都是错的。做DC扫描时VGS从0扫到VDD1.8V步长取5mV或10mV。VDS的取值要参考后面实际电路的工作点比如折叠点电压如果是0.9V就固定VDS0.9V。如果后面需要在一个范围内调整工作点最好在特征化时就扫2-3个VDS值省得回头重跑。3.2 用ocean脚本批量提取gm/Id曲线在Cadence里直接用calculator手动做也能出曲线但工程上要高效还是写ocean脚本划算。我通常会这样写一个批处理脚本一次性把所有需要的数据全导出来; gm_id_charac.il ; 用途批量扫描VGS/VDS提取gm/id、ft、gm*gds、ID/W simulator( spectre ) design( your_lib gm_id_charac schematic ) analysis( dc ?param vgs ?start 0 ?stop 1.8 ?step 0.005 ) desVar( vds 0.9 ) desVar( w 10u ) desVar( l 0.5u ) desVar( nf 1 ) run() selectResult( dc ) gm ohmic( (v(/VGS) ?result dc) 0 ) ; dummy placeholder gmVal 0 idVal 0 ; 实际取数应通过calculator表达式完成 ; 这里示意从dc工作点输出中获取id/gm out open( ./gm_id_data.csv w ) fprintf( out vgs,vth,id,gm,gm_over_id,id_over_w,ft,gm_gds\n ) vgsVec value( v(/VGS) ?result dc ) idVec value( v(/DRAIN) ?result dc ) gmVec 0 ; 具体实现需要调用calculator的deriv和evaluate此处展示结构化流程 close( out )上面这个脚本只是主流程示意实际项目中更常用的做法是在ADE里面跑完DC之后用Calculator的deriv()函数对漏电流求导得到gm然后用value()函数或者clip()截取不同工作点直接把曲线画出来或者导出成CSV再用Python做后处理。说到后处理我个人习惯是只要gm/Id和ID/W两条核心曲线。gm/gds和ft在原理图设计阶段偶尔看真正卡时序的时候才拿出来细算。3.3 正确读图不同工作区如何取舍拿到曲线后第一件事是找到管子的工作区边界。gm/Id曲线在弱反型区斜率很陡数值很高20以上强反型区趋于平坦。从设计角度我把它分成三段工作区gm/Id典型范围特点适用场景弱反型亚阈值20以上效率最高、速度慢、匹配性差、面积大低功耗偏置、输入级要求低失调中反型10-20效率与速度均衡多数OTA输入对、负载管强反型5-10速度快、效率低、摆幅裕量大高速开关、弱反型受限情况这里有一个很多新手容易忽视的点器件面积与匹配性。同样的gm要求下选高gm/Id意味着同样电流下跨导大但需要的W会更大因为ID/W小面积变大失配随之增加。这就是为什么输入对管我不会盲目追求极高的gm/Id——失调和噪声会变差。输入对管我一般放在12-15之间第一级负载管放在8-10之间共栅管根据摆幅紧不紧张再定。4. 折叠式共源共栅各晶体管尺寸的确定与偏置设计4.1 设计顺序和各管角色分配折叠式共源共栅放大器的晶体管数量不多但每一颗管子承担的角色不一样设计顺序错了后面很难调。我习惯的顺序是输入对管PMOS/NMOS差分对决定gm、输入共模范围、等效输入噪声折叠管Cross-coupled load / 折叠支路的NMOS或PMOS决定输出摆幅和阻抗共栅管Cascode管决定输出阻抗和增益尾电流源决定总电流和输入共模范围以PMOS输入的折叠式共源共栅为例电路从上到下依次是PMOS尾电流源 → PMOS输入对管 → 折叠到NMOS支路 → NMOS共源共栅负载。PMOS输入的好处是输入共模可以到地噪声低适合传感器前端这类应用。从gm/Id方法的角度每一颗管的gm/Id取值目标不同但核心原则只有一个输出共源共栅管提供阻抗输入对管提供跨导两者在电流密度的选择上要分开看不要一锅煮。4.2 具体尺寸换算示例拿之前那个规格走一遍完整的换算流程。设输入对管选择gm/Id12V⁻¹单侧gm0.79mS则单侧电流 Id_in gm / (gm/Id) 0.79 / 12 ≈ 66μA差分对总电流约132μA加上尾电流源余量尾源电流取150μA从特征曲线上查ID/W0.18μm工艺下gm/Id12时PMOS的ID/W大约在60μA/μm附近具体数值与工艺强相关这里是一个典型参考那么输入对管宽度 W Id / (ID/W) 66 / 60 ≈ 1.1μm。考虑到匹配性我通常会把W取整到1.2-1.5μmL取最小特征尺寸的2到3倍即0.36-0.5μm以压低沟道调制效应。注意这里有个关键选择L不要直接取工艺最小尺寸否则Rout上不去增益达不到60dB。再看折叠到NMOS支路。折叠支路的电流就是输入对管的电流加上折叠点注入的电流。假设折叠电流分配为100μA负载管如果想留足输出摆幅gm/Id取10则gm_load 10 * 100μA 1mS。输出阻抗由共源共栅管决定理论上Av gm_in * Rout其中Rout近似为两个共源共栅阻抗的并联。共栅管需要选择较大的L比如0.5-0.6μm来达到高ro。4.3 偏置电路的设计要点偏置设计是整个放大器能否正常工作的关键。很多新手画完主电路却忽略了偏置结果是DC仿真都过不了。折叠式共源共栅需要三路偏置输入尾电流源偏置、折叠管偏置、共栅管偏置。最简单的做法是用一个基准电流源通过电流镜复制到各个支路。关键点是共栅管的偏置电压要根据输出摆幅要求精确设定。共栅管的栅压决定了输出节点的最低/最高电平设得太紧会压缩摆幅设得太松则共栅管可能脱离饱和区折叠点电压必须保证输入对管和折叠管都工作在饱和区。折叠点电压应设置为VDD减去输入管VDSAT同时高于NMOS共源共栅负载的VDSAT之和电流镜的VDS mismatch电流镜的复制精度受VDS失配影响如果镜像管的VDS和参考管差太多实际电流会偏离设计值gm/Id设计就白做了我一般在偏置电路里给镜像管加一个级联管cascode电流镜这样可以大幅提高电流复制精度代价是偏置电路本身要多消耗一些电压余量。在1.8V供电下我会省着用如果电流精度要求不高简单电流镜也能跑。5. Virtuoso仿真验证完整流程5.1 原理图搭建与ADE XL配置在Cadence Virtuoso里搭建完原理图后建议直接建一个ADE XL cellview管理所有仿真。配置文件里我会分成几组DC工作点检查跑dcOp查看所有管子是否在饱和区电流是否匹配设计值AC仿真扫频看增益、带宽、相位裕度STB稳定性仿真用stb分析看环路增益和相位裕度特别是有反馈结构的时候瞬态仿真看摆率、建立时间工艺角/蒙特卡洛看工艺偏差和失配的影响原理图搭建时注意几个细节。输入输出要加理想的共模反馈不然DC工作点飘了后面什么都白搭。共模反馈的带宽要高于主极点最好用两倍GBW以上这样才不会影响主环路的稳定性分析。5.2 DC工作点检查和AC仿真判读跑完DC先看工作点。我习惯把每一个管子的region列出来检查是否都在饱和区region2。如果发现某个管子进了线性区先不要调W/L先检查它的VDS和VGS是不是被偏置电路限定住了。AC仿真最关心的三个点低频增益60dB以上才算达标单位增益带宽0dB穿越频率应该在500MHz以上相位裕度在穿越频率处看相位≥60°为稳如果增益不够首先怀疑输出阻抗。用calculator看一下输出节点的阻抗曲线找出主极点的位置。如果主极点比预期低说明输出阻抗比设计的还要大好事但GBW会低带宽没达标。如果增益低且带宽也低大概率是各管的VDS没设对工作点已经偏离设计区。5.3 工艺角与蒙特卡洛仿真芯片设计不能只看典型角。我的标准流程是至少跑五个工艺角TT, FF, SS, FS, SF。每个角下重新看DC、AC、瞬态。gm/Id方法的优势在这里体现得很明显——各个角下晶体管的电流密度会自然调整设计核心的gm/Id值基本保持不变所以性能波动主要来自Vth和Cox的绝对变化而不是设计方法本身的偏差。蒙特卡洛仿真主要看失配。输入对管的失配直接贡献输入失调电压做高精度应用时格外重要。如果蒙特卡洛跑出来失调过大回头把输入对管的面积加倍往往能立竿见影。6. 常见问题与排查技巧实录6.1 相位裕度不足怎么处理相位裕度不足通常是两个原因次极点离单位增益带宽太近或者存在右半平面零点。折叠式共源共栅的次极点主要由折叠节点的寄生电容决定降低该节点的寄生电容可以拉开次极点。具体操作可以减小折叠管尺寸减小Cgs或者增加尾电流源电流提高跨导、提高次极点频率。如果右半平面零点主导通常是因为输入对管的Cgd过大。可以考虑用共源共栅输入结构Regulated Cascode来屏蔽Cgd的影响代价是电路复杂度和功耗上升。6.2 工艺角仿真常见预警SS角下Vth偏高管子更容易进入弱反型gm/Id上升但ft下降带宽可能缩水。FF角下Vth偏低弱反型区缩小强反型管可能进入线性区。我通常会在SS角下检查带宽是否达标在FF角下检查功耗是否超标。如果你的设计在SS角下带宽不足不要盲目加大电流先看是gm不够还是寄生电容增加导致的。加大输入对管电流可以直接提升gm但功耗也会上去这时重新审视gm/Id的选值其实更合理。6.3 一些非常规但实用的小技巧仿真收敛困难时很多时候是初值给得不好。给偏置电流源一个ic初值或者把DC收敛算法改成homotopy比反复调电路参数更省时间。还有一点我踩过很多次做一个运放之前先做个single-ended的gm/Id特征化不要直接上全差分。全差分结构里的共模反馈环路会干扰你的判断单端结构调试工作点要清晰得多。等单端结构AC仿真通过了再换成全差分结构加CMFB这样定位问题会快很多。另外提醒一下Cadence里做gm/Id特征化时扫出来的曲线一定要和工艺文档比对一下确认Vth和Cox数量级合理避免用错了device model卡了几天。最后分享一个我在实际项目中养成的习惯gm/Id特征化曲线不是一劳永逸的。每个新工艺、每次改版都要重新提取一组数据不要从旧项目里直接拿。工艺变了、模型版本换了曲线可能差出20%以上这些误差到最后都会变成流片回来的性能偏差。磨刀不误砍柴工特征化做扎实了后面整个设计流程会非常顺。