
搞模拟IC设计的人应该都有过这种体验在学校里学的是平方律公式手算一个放大器W/L、电流、增益算得头头是道结果到了短沟道工艺里一仿真全对不上。Vth随沟道长度变、迁移率退化、速度饱和这些效应在先进工艺节点下把传统手算公式打得七零八落。我自己在180nm工艺上做设计时就已经感觉吃力到了55nm以下几乎没法用老办法去设计。后来接触了gm/id方法才真正觉得这条路走通了。gm/id方法说白了就是把MOS管看作一个黑盒子不依赖特定物理公式而是用管子自身的跨导gm和漏极电流ID的比值作为设计变量。这个比值天然反映了管子工作在哪个区域——弱反型、中反型还是强反型同时结合查找表来确定尺寸极其适合短沟道工艺。这篇文章我就拿折叠式共源共栅放大器Folded Cascode Amplifier当靶子完整走一遍gm/id的设计流程从指标拆解、管子尺寸推导、仿真验证到实际调试中踩过的坑一次性讲透。这篇文章适合已经有模拟IC基础、想摆脱经验调参、建立系统设计方法的人也适合正在做运放设计、对gm/id只听其名未用其法的工程师。你不需要是gm/id专家只要跟着走一遍流程就能体会到查表法比盲目调W/L高效得多。1. 为什么gm/id方法在短沟道工艺里是“救命稻草”先说清楚一件事gm/id不是一种玄学它是一套基于器件真实特性的设计方法论。理解它为什么有效得先明白传统的平方律模型在先进工艺下是怎么失效的。1.1 平方律模型失效的现场还原传统教科书里的MOS管电流公式是ID (1/2)·μnCox·(W/L)·(Vgs-Vth)^2这个公式假设了载流子迁移率恒定、速度与电场线性相关、沟道长度调制可以忽略。这在长沟道工艺、比如2μm甚至0.5μm时代基本够用但在180nm以下每一招都不灵了。第一个问题是速度饱和。沟道内的电场强度非常高载流子速度不再随电场线性增长而是趋于饱和。这导致实际电流比平方律预测的小很多跨导也被压缩。第二个问题是迁移率退化。垂直电场会把载流子压向硅和氧化层界面表面散射加剧迁移率下降gm进一步偏离理想值。第三个问题更麻烦短沟道下Vth本身会随沟道长度和漏源电压变化也就是DIBL效应Vth不再是个恒定值。你可能会说那我把这些效应写成修正公式不就行了问题是这些修正项的参数非常多而且工艺厂不会把所有物理参数都开放给你即便开放了公式也变得极其复杂手算毫无意义。我自己试过用BSIM模型里的几十个参数去手推增益表达式推了三天最后精度还不如仿真多跑几个点。1.2 gm/id的本质效率与工作区的统一度量gm/id的定义特别简单就是跨导除以漏极电流。但它背后有深刻的物理含义。先看gm怎么来的。在饱和区gm ∂ID/∂Vgs。不管器件工作在哪个区域gm都表示栅压对电流的控制能力也就是放大能力。而分母ID是这个控制能力付出的“代价”——功耗。所以gm/id本质上就是用电流换跨导的效率。这个效率在不同工作区有非常明显的规律弱反型区Vgs远小于Vthgm/id可以达到20~30 A/A也就是S/A这时候管子像一个双极型晶体管电流随栅压指数变化效率最高。强反型区Vgs远大于Vthgm/id通常在1~10之间电流随栅压近似线性或平方变化效率低。中反型区gm/id在10~20之间是弱反型和强反型之间的过渡区。在长沟道强反型区gm/id ≈ 2/Vov这里Vov是过驱动电压。这个关系给了我们一个直觉gm/id越大需要的过驱动电压就越小管子越“弱反型”。用gm/id做设计变量的厉害之处在于它直接告诉你在当前偏置下管子有多“省电”同时也隐含了工作区域、速度、噪声、匹配等一系列性能。你不需要去死记Vov和管子状态的关系只需要查gm/id的数值就知道管子的状态。1.3 gm/id方法怎么变成一张可查的表gm/id方法落地的关键是“查找表”。具体做法是在目标工艺下对某个固定沟道长度L的NMOS或PMOS扫描栅压Vgs记录不同Vgs下的ID、gm、gds输出电导、Cgs、Cgd等参数然后把这些参数整理成关于gm/id的函数曲线。有了这组曲线设计流程就变成了查表根据设计指标确定某个管子需要的gm和ID算出gm/id。在选定L的曲线上用gm/id找到对应的W/L、Vov、ft特征频率等参数。检查这些参数是否满足其他约束如饱和电压、噪声、匹配不满足就调整gm/id或L重新查表。这套流程不依赖具体物理模型PDK里的模型是什么就是什么仿真器用什么模型它就用什么模型。不管是180nm还是7nm只要你能仿出管子的特性曲线就能用gm/id方法设计。我自己在工程里通常用一个简单的Cadence Spectre DC扫描加Ocean脚本自动生成查找表每次换工艺节点先花半天时间把NMOS和PMOS在几个常用L下的曲线全部扫出来存成文件后面设计就直接查一劳永逸。国内用华大九天Aether的团队也可以用同样思路后文我会专门讲Aether下的落地细节。2. 折叠式共源共栅放大器的拓扑选择与设计边界结构选择是放大器设计的第一步也是最影响整体性能的一步。折叠式共源共栅能成为高速高增益运放的主流结构是因为它在增益、速度、摆幅和共模输入范围之间找到了一个很好的平衡点。2.1 折叠式结构的“折叠”到底折掉了什么这里我需要先对比一下套筒式共源共栅Telescopic Cascode和折叠式共源共栅Folded Cascode的差异。套筒式结构的优点是增益高、功耗低、噪声小因为它把NMOS和PMOS上下堆叠共用电流没有多余的分支。但它的致命缺点是输出摆幅太小。比如在1.8V电源下上面PMOS共源共栅管需要两个Vdsat下面NMOS输入管也需要一个Vdsat再加上尾电流源的Vdsat输出摆幅被压缩得很厉害。更麻烦的是它的输入共模范围和输出摆幅绑定在一起输入输出不能短接很难用在单位增益缓冲器等反馈场景。折叠式结构是怎么改的它把输入对管和输出支路在电流上分开输入对管的电流通过一个“折叠点”被镜像或流入输出共源共栅结构。这样一来输出级只有一个PMOS共源共栅和一个NMOS电流源负载或反过来摆幅比套筒式多出一个Vdsat的空间。输入共模范围也因此独立出来可以做得很大甚至轨到轨。当然折叠式的代价是功耗和噪声。它多了一条折叠支路同样的输出电流需求下输入对管和折叠支路都要消耗电流总电流比套筒式高。而且折叠点的寄生电容会引入一个零点可能影响稳定性。这是结构本身带来的trade-off接受它然后把它设计好。2.2 性能指标与管子工作状态的解耦关系设计前需要把指标和管子对应起来这是gm/id设计方法的重要组成部分。放大器的主要性能指标和管子参数的关系如下直流增益Av主要由输出阻抗决定。共源共栅把输出阻抗抬高到gm·ro²的量级所以增益 ≈ gm_input·(gm_cascode·ro_cascode·ro_load)。这里的gm是输入管的跨导后面括号里的乘积是输出节点的等效阻抗。单位增益带宽GBWGBW gm_input/(2π·CL)CL是负载电容。它只由输入管的跨导和负载电容决定和输出阻抗无关。输入参考热噪声与输入管的gm成反比gm越大噪声越小。这里gm/id方法可以指导我们在功耗约束下最大化gm。输出摆幅由所有串在输出到电源/地路径上的管子Vdsat之和决定。折叠式结构里这个路径是PMOS共源共栅的两个管子再加上NMOS电流源的一个Vdsat或者反过来。用gm/id方法的好处是以上每一个约束都可以对应到一个或几个管子的gm/id数值。比如输出摆幅约束要求Vdsat不能太大那么Vdsat对应的电流源管的gm/id就不能太小而噪声约束又要求输入管的gm/id尽量大。把这些约束统一放在gm/id坐标系里权衡比在W/L坐标系里调参要直观得多。2.3 这次设计的目标规格为了让整个流程可复现、可验证我先把这次设计的目标定下来。这里选一个比较典型的中速中等精度运放场景工艺0.18μm CMOS别嫌老gm/id方法在旧工艺上逻辑最清楚新工艺完全同理电源电压1.8V负载电容CL 1pF直流增益≥ 60dB单位增益带宽GBW ≥ 50MHz相位裕度≥ 60°功耗≤1mW输出摆幅≥0.8Vpp单端输入共模范围0.4V ~ 1.4V这个规格在0.18μm下属于中等偏上的难度用gm/id方法可以比较从容地推出来。我写文章时不会每个公式都推一遍但会把关键的推导过程和数值变化展示出来。3. 从指标到管子尺寸gm/id设计的完整推导这一步是整个设计流程最核心的部分。我会尽量把过程写得像一份可以照着走的“作业指导书”每一步说明为什么这么做、算出来是什么、怎么检查。3.1 从GBW推输入管gm从增益推输出阻抗先看最简单的两个关系。第一步由GBW和负载电容CL推出输入管的跨导gm_inGBW gm_in / (2π·CL)代入GBW 50MHzCL 1pFgm_in 2π × 50MHz × 1pF ≈ 314μS这里的gm_in是输入对管的总跨导。如果输入对是两个管子差分工作那么每个管子贡献一半即gm_each ≈ 157μS。但要注意在差分对中差分跨导等于单管跨导不是两倍所以这里的gm_in实际上就是每个输入管的gm在平衡工作点。等一下这里我需要仔细澄清对于差分对从差分输入到差分输出的跨导Gm等于单个管子在小信号下的gm假设理想对称所以gm_in就是每个输入管需要提供的跨导约314μS。准确地说全差分放大器的总跨导等于单管的gm所以每个输入管的gm 314μS。我按这个来设计。第二步由直流增益和输出摆幅约束确定输出阻抗。Av gm_in × Rout要求Av ≥ 60dB ≈ 1000倍那么Rout ≥ 1000 / 314μS ≈ 3.18MΩ这个阻抗值就是共源共栅输出节点的等效阻抗由PMOS共源共栅管和NMOS电流源并联组成。在0.18μm工艺下单个管子ro约在几十kΩ到几百kΩ量级共源共栅可以把阻抗抬高到gm·ro²达到几MΩ到几十MΩ。所以3.18MΩ是可达的但也不是轻轻松松需要在L和电流之间找平衡。3.2 电流预算分配与gm/id初选整颗运放功耗1mW电源1.8V总电流约555μA。结构里的电流路径是尾电流源给输入差分对供电假设为I_tail输入对管的漏极电流通过折叠点分成两路分别流入PMOS共源共栅的上下两个支路输出支路电流I_out与输入支路电流在折叠点汇合。折叠式结构里输入对管电流和输出支路电流不相等它们的关系由折叠点电流源决定。通常设计时会让输入对管电流I_tail和输出支路电流I_out接近这样折叠点的静态电流很小有利于减小失调和噪声。我把电流做如下分配输入差分对尾电流200μA每个管子100μA折叠支路电流源NMOS电流源200μA输出支路电流200μA偏置电路约50μA可以单独优化为了计算方便先按50μA算这样就满足了总电流约450~500μA加上一些边角电流在555μA预算内。注意这些数值不是拍脑袋定的是结合了gm需求、噪声需求和摆幅需求综合出来的。比如输入管电流如果太小要达到314μS的gm就需要非常大的gm/id也就是管子要进入弱反型区速度会受影响如果电流太大功耗又超了。200μA的尾电流在这个规格下是一个比较均衡的选择。根据上面的分配每个输入管的电流ID 100μA需要的跨导gm 314μS再次强调差分对单管跨导所以输入管的gm/id ≈ 314μS / 100μA ≈ 3.14。这个数值意味着输入管工作在中偏强的反型区。如果觉得噪声要求苛刻可以把电流加大、gm/id提高一些但这会压缩其他部分的空间。我们先把3.14作为初始值往下走。3.3 查表得到输入管尺寸L选择与W/L确定有了gm/id 3.14再选定沟道长度L就可以查表得到W/L。L的选择主要看两个因素一是增益L越大ro越大输出阻抗越高二是速度L越大ft越低GBW会受限。0.18μm工艺下做模拟设计一般选L 0.5μm~1μm比较合适既能保证一定的本征增益又不至于太慢。我选L 0.5μm。在0.18μm PDK下我预先扫过NMOS在L0.5μm时的gm/id曲线查到gm/id3.14时对应的归一化电流密度大约在几μA/μm量级具体数值取决于PDK。假设查得ID/W ≈ 30μA/μm这是一个量级参考实际以PDK为准那么W ID / (ID/W) 100μA / 30μA/μm ≈ 3.3μm这个值很小可能还要考虑匹配性适当放大。一般来说输入对管的面积不能太小否则失调和1/f噪声都会变大。在0.18μm工艺下输入管栅面积至少要做到几十平方微米以上所以W可以取到10~20μm即使gm/id稍微偏离3.14也没关系因为gm和电流的关系在曲线平缓区对尺寸不敏感。这里要说明一下gm/id查表法并不是说查出一个值就必须精确用那个值它给你的是一个坐标你在哪个工作点什么效率什么速度。实际操作中匹配、噪声、版图布局等工程因素可以让你在这个坐标附近微调W而不是反过来把W算得很精确却牺牲其他性能。查表还会给出该工作点下的过驱动电压Vov。gm/id3.14时Vov大约在0.2~0.3V之间。这个值对后面验证摆幅很有用。3.4 共源共栅管和电流源管的尺寸推导输入管定了接下来是共源共栅管和电流源负载。这些管子的设计原则和输入管不同它们不负责提供跨导主要作用是提供一个高阻抗所以希望它们的输出阻抗尽量大同时Vdsat尽量小省摆幅。对于PMOS共源共栅管我选L 0.8μm或1μm比输入管略长增加rogm/id选在4~6之间也就是工作在弱到中反型区。为什么这么选因为这组管子的电流就是输出支路电流约200μA每个支路100μA它们需要的不是高gm而是高输出阻抗和适中的Vdsat。gm/id大意味着Vov小Vdsat也小摆幅利用率高但gm/id过大意味着管子太弱反型W会变得非常大寄生电容也随之变大影响高频性能。一般折中在4~6。假设PMOS共源共栅管gm/id5ID100μA那么gm500μS。查PMOS在L0.8μm下的曲线得到ID/W约25μA/μm同样仅为量级参考所以W≈4μm。实际考虑匹配取W10μm或者更大一些也无妨。NMOS电流源负载的确定方法类似。这里要注意电流源负载的实际作用是给输出节点提供一个高阻抗到地同时要保证自身饱和不能让输出摆幅太低。所以电流源管的Vdsat需要留足够的余量。按输出摆幅0.8Vpp算输出高电平到VDD之间需要留两个PMOS共源共栅管的Vdsat约0.2V×20.4V输出低电平到地之间需要留NMOS电流源的Vdsat约0.15~0.2V。这样总摆幅约1.8 - 0.6 1.2V满足0.8Vpp的要求。电流源管同样选L1μm、gm/id5左右保证Vdsat在0.15~0.2V之间。3.5 设计清单汇总与预估性能我把初始设计参数整理成表格方便后面对照仿真管子角色管子类型L(μm)目标gm/idID(μA)估算W(μm)Vov估算(V)输入对管NMOS0.53.110010~200.25PMOS共源共栅PMOS0.8~14~610010~200.18NMOS电流源NMOS14~620010~200.18尾电流源NMOS1520010~200.18预估性能gm_in314μSRout≥3.2MΩGBW50MHz增益≈60dB相位裕度需要靠仿真再验证。这个表只是一个“初版”工程上从来没有一版到位的设计关键是后续怎么根据仿真结果调整。4. 仿真验证与调试那些仿真器不会直接告诉你的经验设计表填完了但真正的战斗才刚刚开始。从手算到仿真总会冒出各种偏差。这一章我把实际调试中常见的偏差和对应的排查思路完整过一遍。4.1 DC工作点回读手算和仿真的对账拿到初始尺寸后先不急着跑AC先跑DC工作点仿真。在仿真结果里找到输入管、共源共栅管、电流源管的Vgs、Vds、Vdsat、gm、gds等参数和手算表逐一比对。最常见的偏差有两个。第一个偏差是Vdsat和手算对不上。原因是gm/id方法查表时用的Vov是“理想化”的过驱动电压而仿真器里的Vdsat实际是根据模型计算的饱和点两者定义不同。在弱反型区差异尤其明显Vov可能显示为负值或接近0但管子其实已经饱和了。遇到这种情况不用慌看Vdsat的实际值只要管子处于饱和区Vds Vdsat就行。第二个偏差是电流分配不对。比如你希望输入对管每管100μA但仿出来只有80μA或者120μA。这通常是因为尾电流源管的沟道长度调制效应Vds和设计值不同导致电流偏差。解决方法有两个一是加大尾电流源管的L提高ro让电流更稳定二是用cascode尾电流源代价是多占一点摆幅。在很多对电源抑制比有要求的电路里cascode尾电流源几乎是必须的。回读DC工作点时最重要的是确认所有管子都工作在饱和区。折叠式结构里最容易出问题的是共源共栅管如果它的Vds不够大可能进入线性区输出阻抗暴跌增益直接掉下来。检查方法是在仿真器里看每个管子的工作区标识或者把Vds和Vdsat列出来手动对比。4.2 增益和带宽的调试不满足指标时先调谁AC仿真跑完如果增益不够或者GBW偏低先别急着乱调按照下面的优先级排查第一优先检查输出节点的阻抗。用AC仿真里的“计算阻抗”功能或者在输出节点断开负载看增益。如果增益只有40dB而不是60dB多半是某个共源共栅管进入了线性区导致Rout大幅下降。重新检查共源共栅管的偏置电压确保Vds有足够余量。第二优先检查输入管gm是否和设计一致。如果gm偏小GBW就会偏低。此时先看输入管电流是否对再看L选的是否过大导致gm/id曲线的效率下降。如果gm确实少了10%以内通常可以通过微调W来补。第三优先如果增益和GBW都偏低但管子工作点正常那问题可能出在偏置电路上。折叠式结构的偏置电压通常由一个简单的电流镜分压产生如果偏置电压设计得不合理比如没有给共源共栅管留够Vds余量就会导致管子进入线性区。这是折叠式结构最容易踩的坑我在1.8V电源下设计时经常发现NMOS共源共栅管因为Vds不足而被迫工作在亚饱和区附近。还有一个容易被忽略的地方是版图寄生。仿真时用的是原理图没有问题但一旦提参PEX之后寄生电阻和电容可能会让工作点偏移。比如输入对管源极的寄生电阻会引入负反馈降低有效gm输出节点的寄生电容会直接和CL并联降低GBW。所以设计时最好留10%~20%的裕量别把GBW卡死在指标线上。4.3 相位裕度和稳定性折叠节点带来的零点陷阱折叠式结构有一个特有的稳定性隐患折叠节点输入管漏极和共源共栅管源极的交接点上的寄生电容与输入管的gm共同作用会引入一个零点。这个零点的位置通常在比较高的频率但如果寄生电容太大零点可能落到GBW附近导致相位裕度恶化。我自己遇到的实际情况是设计时相位裕度有70°PEX提参后掉到45°。查了半天最后发现就是折叠点寄生电容惹的祸。解决方法有几种一是减小输入管尺寸降低Cgd和Cgs这会牺牲一些gm和匹配性需要权衡二是在折叠点串联一个小电阻几十到几百欧姆把零点推到更高频率三是调整负载电容改变GBW位置但这个方法治标不治本。另外如果使用了带cascode的尾电流源尾电流源内部节点也可能产生零点。总之折叠式结构的稳定性调试一定要结合后仿来进行原理图仿真正常不等于流片后正常。4.4 噪声、失调和失配gm/id选择的深层影响很多时候设计指标里除了增益带宽还有噪声和失调要求。这两个参数和gm/id的选择关系很大。先说噪声。输入参考热噪声主要取决于输入管的gmVn² ∝ 4kT·(2/3)·(1/gm)所以输入管gm越大热噪声越小。在gm/id方法里gm gm/id × ID所以在电流固定的情况下提高gm/id就能提高gm、降低热噪声。这解释了为什么低功耗低噪声设计倾向于让输入管工作在弱反型区——gm/id大效率高。但代价是弱反型区管子面积大、速度慢、匹配性变差、1/f噪声也会因为面积增大而有所改善1/f噪声和面积成反比所以这是一个多维度的权衡。闪烁噪声1/f噪声主要由输入管的栅氧化层质量和面积决定。想降低1/f噪声就要加大输入管面积W×L。在gm/id查表设计时如果发现噪声超标优先考虑增大L和W而不是单纯加大电流。失调电压的来源主要是输入对管的Vth失配和gm失配。版图上可以用common-centroid交叉布局来减小失配但电路设计层面增大输入管面积是降低失配的最直接手段。gm/id方法在这里同样可以帮助你把面积和性能的权衡定量化查表时不仅要看gm/id的值还要看这个工作点下的跨导参数和Vth对偏置的敏感度选择对失配不敏感的工作区。在我自己设计这个折叠式放大器时刚开始输入管W取的是查表值10μm后来发现输入失调电压可能到了3~5mV不满足±2mV的需求。后来把W加大到30μmL保持在0.5μm失调降到2mV以内代价是折叠点寄生电容变大相位裕度掉了几度。这种trade-off很典型gm/id方法不会替你决策但能让你看到每一项选择对指标的具体影响。4.5 温度、工艺角变化下的稳健性检查设计完之后一定要跑工艺角仿真。0.18μm工艺下我的经验是至少跑5个角TT、FF、SS、FS、SF每个角下再扫温度-40℃、27℃、125℃。gm/id方法在这时候也有用工艺角变化主要反映在Vth和迁移率上这两个参数会改变gm/id曲线的形状但不会改变基本的查表逻辑。如果某个角下增益掉得很厉害多半是管子快要退出饱和区了或者电流镜的镜像精度变差了。SS角最常出问题。因为SS角下Vth偏高Vov变小Vdsat也跟着变小看起来摆幅反而更好但载流子迁移率也降低gm下降GBW会掉。如果GBW在SS角下掉到45MHz以下就要考虑加大电流或者调整输入管gm/id初值。加电流是最省事的方法但功耗预算会超调整gm/id比如从3.1改到3.5让管子往中反型区偏一点也能在相同电流下提高一部分gm但要靠查表重新验证。另一个常见问题是偏置电路在各个角下的一致性。电流镜的复制精度在工艺角偏移后会恶化导致某些支路电流偏离设计值。解决方法是在偏置电路里加cascode结构虽然多花了电压余量但确保了尾电流的稳定性。5. 全差分结构、CMFB与共模抑制从单端到实用的进阶改造前面讨论的基本是单端输出或者理想全差分的情况。但实际做全差分运放时必须处理共模反馈CMFB问题。共模反馈的设计也是gm/id方法可以发光的地方。5.1 为什么全差分运放必须有CMFB全差分放大器对共模信号没有天然的抑制能力因为它的输出共模电平是由输出节点的充放电平衡决定的而输出节点是高阻节点任何微小的漏电流都可能让共模电平漂移。如果不加CMFB输出共模会直接漂到电源轨或者地轨放大器直接饱和。CMFB的基本思路是检测输出共模电平与参考电平比较产生误差信号反馈到某个偏置点通常是尾电流源或者电流源负载的栅极把输出共模拉回到参考值。CMFB的实现方式很多最简单的是用两个电阻分压检测输出共模再用一个误差放大器把共模误差放大后反馈。这个误差放大器的设计也可以套用gm/id方法只是它的指标不同——它不需要很大的增益带宽只需要有足够的直流增益把共模误差压到足够小。5.2 用gm/id方法快速设计一个CMFB误差放大器CMFB误差放大器的关键指标是两个直流增益决定共模反馈的环路增益和单位增益带宽通常是主放大器GBW的2~3倍确保不限制共模环路的稳定性。假设主放大器GBW50MHz那么CMFB放大器GBW至少100MHz。负载电容是CMFB检测网络引入的等效电容通常比较小比如0.2pF。那么误差放大器的gm需要gm_cmfb 2π × 100MHz × 0.2pF ≈ 126μS假设电流预算50μA那么gm/id 126μS / 50μA ≈ 2.5。查表就可以得到误差放大器输入管的尺寸。这样一套流程下来整个CMFB电路的设计也变成系统化的查表工作而不是拍脑袋调。5.3 共模抑制比的仿真验证方法很多新手不知道怎么看CMRR。正确方法是跑两次AC仿真第一次在输入端加差模小信号测输出差模增益第二次在输入端加共模小信号测输出共模到差模转换的增益。两者相减就是CMRR用dB表示。影响CMRR的主要因素是尾电流源的输出阻抗如果尾电流源的ro不够大共模信号就会通过尾电流源的变化转化为差模信号。用gm/id方法设计尾电流源时要注意选L大一点、gm/id适中让ro足够高。在0.18μm工艺下单靠一个简单尾电流源CMRR通常只有50~60dB用cascode尾电流源可以做到80dB以上。如果你对CMRR有明确指标务必在电路结构上留出cascode尾电流源的位置并在版图上做好对称布局。6. 国产EDA流程下的落地实践华大九天Aether的适配经验最后说一说国产EDA工具链下的应用。很多团队现在切换到华大九天Aether进行模拟设计有些人在使用中会碰到一些流程差异这里我结合自己的使用感受做一个补充。虽然Aether的界面和Cadence有所区别但核心设计思路完全一致。6.1 Aether下gm/id查找表的生成方法Aether的仿真器支持标准SPICE和Spectre兼容网表。生成gm/id曲线的方式和Cadence下类似建立测试电路一个NMOS管栅极接扫描电压源Vgs漏极接固定电压Vds通常取电源电压的一半或你想要的工作点源极和衬底接地。跑DC扫描Vgs从0扫到VDD步长1~5mV保存ID、gm、gds等参数。导出数据结果自行绘制成gm/id vs ID/W、gm/id vs ft、gm/id vs Vov等曲线。不同之处在于Aether里跑DC扫描后导出数据的方式是在结果浏览器里选中曲线右键导出CSV或者通过脚本接口导出。我一般习惯直接写SPICE网表批量跑不同L的扫描然后统一导出到一个文本文件里用Python或者MATLAB处理成标准格式的查找表。需要特别提醒的是在Aether里做参数化扫描时某个参数变成特殊值可能会报错比如W/L设成0。查表设计过程中有时候会用临时尺寸去试探建议网表里把最小尺寸设好约束避免仿真器报错中断批量任务。6.2 Aether下的仿真和调参体验Aether的ADE环境提供了类似Cadence的参数扫描、蒙特卡洛分析和工艺角仿真功能。使用gm/id方法时我建议把关键设计参数比如输入管的W、L、gm/id目标值、各支路电流封装成设计变量然后用参数扫描一次性跑完不同尺寸组合下的AC响应而不是一个一个手动改。云上部署的EDA环境经常遇到的一个问题是仿真速度。跑批量工艺角时可以把仿真精度适当调低比如把“solver”设置为“gear2only”而不是默认的“traponly”或者“euler”或者减少输出保存的节点数量只保存关键节点的电压和电流。gm/id设计流程本身对精度要求不太高初期扫描完全可以采用中等精度快速迭代最后锁定尺寸后再跑一次高精度确认。6.3 Aether下的常见流程坑第一个坑是模型库配置。不同模型库对gm/id曲线的影响非常大。同一个工艺如果模型库版本不同查表结果可能差5%~10%。所以设计开始前一定要确认模型库版本并固定下来所有设计师统一使用同一版本避免重复劳动。第二个坑是DC仿真节点命名大小写敏感。Aether的电路节点命名有时区分大小写写网表时要注意否则仿真结果导不出想要的节点电压。我在实践中习惯把所有关键节点统一用小写字母加数字命名比如inp、inn、vout、tail等并在网表文件头部注释清楚省去后面定位节点的麻烦。第三个坑是导出数据的精度配置。Aether结果浏览器默认导出的数据可能只有4位有效数字gm/id这种需要比较精度的量在弱反型区可能就有较大误差。建议在导出设置里把数字精度调高到6位以上或者在脚本处理时使用原始仿真数据文件而不是经过界面处理的导出结果。写在最后gm/id方法在工程实践中的一点点体会方法归方法回归工程本身我最后想聊几句心得体会。gm/id方法最打动我的不是“查表”这个动作本身而是它逼着你去理解每个管子到底工作在什么状态、当前状态下gm有多少、ro有多大、寄生电容有多少而不是只盯着W/L数值瞎试。大多数情况下一个新设计到流片前至少要经历三轮调整。第一轮是用gm/id方法确定初始尺寸和电流分配这轮大概能完成80%的工作第二轮是仿真对账和性能微调主要修正手算与仿真的偏差以及处理工艺角、温度等边界情况第三轮是版图后仿和寄生参数修正重点处理折叠节点寄生、输出节点寄生、以及电源网络IR drop对偏置点的影响。每一轮调整时我都会回到gm/id曲线上去看当前工作点移动了多少gm/id往哪个方向变对应的工作区状态是否偏离了最初的设计意图。这样的好处是你永远知道自己在设计空间中站在哪个位置而不是像无头苍蝇一样乱撞。可以说gm/id方法给了我一个“设计罗盘”在复杂的工艺和指标约束下依然能保持思路清晰。如果你还没试过gm/id方法建议找一个熟悉的工艺PDK花一个下午把NMOS和PMOS的曲线扫出来然后用一个简单的两级运放或者折叠式共源共栅放大器练手走一遍完整流程。你会发现模拟IC设计没有你想的那么玄学它只是需要一套有逻辑、可复现的方法论。