ARTICLE DETAIL

资讯详情

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

gm/Id设计方法:从原理到Miller OTA实战,告别Vov经验值

gm/Id设计方法:从原理到Miller OTA实战,告别Vov经验值 做模拟电路设计这些年我越来越觉得有一套方法论必须尽早进自己的工具箱那就是 gm/Id 设计方法。早年我也习惯先定一个过驱动电压 Vov200mV再用平方率公式推宽长比结果一到短沟道工艺里就翻车手算和仿真相差能到百分之几十一个运放来回调好几天。后来系统地把 gm/Id 方法用到实际项目里才真正体会到什么是“按图索骥”式地做晶体管级设计。这篇文章我就把自己的使用心得、查表流程和踩过的坑一次性整理出来希望给刚接触这个方法或者已经在用但总觉得隔着一层的同学一些参考。gm/Id字面意思就是 MOS 管的跨导除以漏极电流单位是 V⁻¹。它看起来只是一个简单的比值实际上却是一个把电流效率、速度、本征增益、噪声特性全部串起来的核心设计标尺。无论你是做低功耗传感器读out电路、高速 SerDes 里的 TIA还是高精度数据转换器里的 OTA只要有 MOS 管偏置在设计gm/Id 这套思维方式几乎都能派上用场。接下来我不打算讲太学术的推导而是尽量用做工程的人习惯的语言把“为什么用它”“怎么看图”“怎么算尺寸”“遇到问题怎么调”这四件事讲透。1. 传统的 Vov 设计法为什么在短沟道时代失灵了1.1 教科书里的平方率公式曾经真的很香刚学模拟 IC 的时候所有人都逃不过那套经典的长沟道平方率公式。饱和区里头漏极电流写作Ids (1/2)μCox(W/L)(Vgs - Vth)²跨导则是对 Vgs 求偏导得到一个非常简洁的结果gm μCox(W/L)(Vov)其中 Vov Vgs - Vth再把两个式子联立一下还能得到一个更常用的关系gm 2Id / Vov或者说 gm/Id 2/Vov这个关系式特别好用因为它把设计过程变成了一个直观的“分蛋糕”游戏你想要多少 gm就先决定一个 Vov电流需要多大、宽长比需要多大一算就出来了。当时教科书会告诉你把 Vov 取在 200mV 左右是一个兼顾增益、速度、失配的经验值。于是大家形成了一个习惯先定 Vov再算尺寸。我总结一下这段时间大家常用的对应关系Vov 大概值gm/Id 理论值器件反型程度典型使用场景50mV 以下40 以上接近弱反型极低功耗设计100mV约 20中等反型低功耗模拟前端200mV约 10中等偏强通用 OTA400mV约 5强反型高速电路说实话这个方法在长沟道工艺里确实能建立非常好的直觉哪怕现在工艺进步了我仍然用“gm/Id 大致等于 2/Vov”来快速估算一个工作点的反型程度。但是到了短沟道时代这套公式作为精确设计的工具已经越来越力不从心。1.2 短沟道效应把公式撕开了一个口子进入 0.13μm 甚至更小尺寸之后器件内部的横向电场变得非常强载流子不是老老实实按平方率加速而是很快进入速度饱和迁移率退化、DIBL、漏致势垒降低、沟道长度调制这些效应一股脑全冒出来。结果就是你手里那本教科书里“Id ∝ (Vgs - Vth)²”的前提已经不再成立了。举个很典型的例子你按 Vov200mV 去手工估算出一个 W/L跑到 Spectre 里一仿真发现实际 gm 比估算值小了 20% 甚至更多。更麻烦的是短沟道下同一个 Vgs 对应的反型程度还会随着 L 和 Vds 明显变化也就是说你换一个 L原本那套 Vov 经验值又不适用了。这时候再去“根据仿真结果改一下 W/L”本质上就是盲目试错一次迭代可能要几个小时。与此同时电源电压也在不断往下压。0.18μm 工艺还能有 1.8V到了 65nm 以下可能就是 1V 左右。Vth 占掉了 400~500mV留给 Vov 的空间只有一两百毫伏。你如果还按照老的套路取 Vov200mV可能器件直接被压到线性区去了。这种情况下用 Vov 作为设计变量真的是寸步难行。1.3 gm/Id 是那个“更底层的设计标尺”那为什么 gm/Id 能替代 Vov 成为新的设计变量因为它并不是基于某一个器件模型的近似公式推出来的它本身就是器件工作的一个结果可以直接从仿真器里读出来。而且 gm/Id 跟器件的反型程度有着单调而清晰的对应关系器件工作在弱反型也就是接近亚阈值区时电流效率最高gm/Id 可以达到 25~30 V⁻¹随着栅压升高进入强反型gm/Id 会逐渐降到 10 以下甚至到 5 左右这个变化趋势在长沟道和短沟道器件里都存在只是曲线形状有差异。所以gm/Id 本质上就是把“这个管子靠电流换跨导的本领”量化出来了。你用 100μA 电流能得到 2mS 的跨导那 gm/Id 就是 20你想得到同样 2mS但只有 200μA 预算gm/Id 就只有 10。这是一个非常直觉化的效率指标比 Vov 更贴近电路设计真正关心的东西——功耗、频率、增益。用一句我自己常跟人解释的话说gm/Id 就像汽车的“每升油跑多少公里”。你希望用最少的油跑最多的路但也不能只看油耗还要看车速、载重。gm/Id 就是那个让你在电流效率、速度、增益之间做理性取舍的仪表盘。2. 看懂 gm/Id 图谱从反型系数到工作点选择2.1 反型系数 IC 与工作区域划分刚开始用 gm/Id 方法的时候我总被“弱反型”“中等反型”“强反型”这些词弄得有点晕。后来发现只需要引入一个无量纲的数——反型系数 IC就能把整个工作区域统一描述。IC 的定义可以写成IC Id / (2n·μCox·(W/L)·Ut²)其中 n 是亚阈值斜率因子大概在 1.3~1.5Ut 是热电压室温下约 26mV。这个量反映的是器件的反型程度。经验划分大概是这样的IC 范围工作区域gm/Id 大概范围主要特点IC 0.1弱反型25 ~ 30电流效率最高速度慢0.1 ~ 10中等反型10 ~ 25功耗和速度的甜点区IC 10强反型3 ~ 10速度快电流效率低在实际工程设计里我不太喜欢每次开会都掏出 IC 公式来算一遍更加实用的是用这条链条记忆gm/Id 高 → IC 低 → 器件偏弱反型 → 省电流但是慢gm/Id 低 → IC 高 → 器件偏强反型 → 费电流但是快、匹配好。有一点非常关键教科书里经常说“Vov200mV 对应 gm/Id10”这是长沟道平方率下的结论。短沟道器件在同样的 gm/Id10 下所需的 Vgs 和实际反型深度已经跟这个经验值对不上了。所以我不建议再去纠结“我这个工作点等于多少毫伏 Vov”而是直接看 gm/Id 的绝对值配合后面的图谱来决策。2.2 gm/Id 图谱里到底存了哪些信息gm/Id 方法能够成为一套完整的设计方法并不是因为它发明了一个公式而是因为我们可以围绕 gm/Id 建立一个多维度的查找表。你会看到很多论文或者内部工具里横轴是 gm/Id纵轴可能是 Id/W、fT、gm/gds、Cgg 等等每条曲线对应不同沟道长度 L。这些曲线回答的是设计中最常问的几个问题我想让一个管子工作在某个 gm/Id那么每微米沟道宽度能流多少电流这个工作点上器件能达到多高的特征频率 fT能从我想要的带宽吗这个工作点的本征增益 gm/gds 是多少一个管子够不够还是需要叠管子栅极总电容 Cgg 有多大在给定频率下会不会带来额外极点所以一张完整的 gm/Id 图谱其实就是把器件在每个偏置点下的“全部家底”都摊开给你看。你不需要再背公式只需要会读图、会插值。这里我放一个典型的查表维度示意查找表内容横轴纵轴表征什么电流密度图gm/IdId/W给定位效率目标下单位宽度的电流速度图gm/IdfT该工作点能跑多快增益图gm/Idgm/gds本征增益能力电容图gm/IdCgg/W输入电容和寄生影响2.3 增益、速度、噪声的效率曲线接下来这组数据是我平时做决策时参考最多的对照。虽然具体数值取决于工艺和器件尺寸但趋势是通用的gm/Id 工作点反型区相对 fT相对本征增益匹配性适用场景25 ~ 30弱反型低高差低功耗、高增益模拟前端15 ~ 20中等反型中中中通用 OTA、有功耗约束10 ~ 12中等偏强中高中中偏优数据转换器内部放大器5 ~ 8强反型高低优高速电流镜、射频放大器这里我要特别强调一句话没有任何一个 gm/Id 是“正确”的只有“适合当前设计目标”的。你要做低功耗心电信号放大器可能输入对管会选 gm/Id20 甚至更高你要做 GHz 级的 LNA输入管反而会选 gm/Id5 附近宁可多耗电也要把 fT 拉上去。gm/Id 方法最大的价值不是告诉你“该选多少”而是让你在做选择前就能清楚地看到每个效率点对应的代价。还有一个隐藏得很深的点是噪声。热噪声功率谱密度可以写成 Sv 4kTγ/gm所以 gm 越大等效输入热噪声越小。在固定电流下选更高的 gm/Id 可以获得更高的 gm从而降低热噪声这也是弱反型器件在低功耗模拟前端里受欢迎的原因。不过弱反型下面积小1/f 噪声和失配又会变差这个博弈我们留到第 4 节去展开。3. 实操案例用 gm/Id 从零设计一个 Miller OTA3.1 先把 gm/Id 查找表建出来理论说得再多不如直接上手跑一遍。我在实际项目里的做法是先把工艺库里所有可能用到的管子扫一遍建立属于当前项目的 gm/Id 数据库。这一步并不复杂只要保证扫描方式合理就行。基本套路是这样的在 Cadence 里建一个简单 testbench把 NMOS 接成 DUT栅极给一个可变的 Vgs漏极接理想电压源给一个接近实际工作时的 VdsVgs 扫描范围要覆盖从亚阈值区到强反型区比如 0 到 VDD步长不能太大弱反型区曲线很陡最好用对数步长或者密一点的线性步长沟道长度 L 也要扫描常见做法是取工艺最小 length 到几倍最小 length比如 0.18μm 工艺扫 180n、250n、500n、1μ、2μ 这五六个点每个工作点把 Id、gm、gds、Cgs、Cgd、Cdb、Cgg 都记录下来。数据导出来之后建议用 MATLAB 或者 Python 做一个简单的处理把 gm/Id 和各个参数整理成二维表并画成图。下面是我常用的 MATLAB 代码片段逻辑很直白data readmatrix(nmos_gmid_data.csv); gm_id data(:, 1); % gm/Id id_w data(:, 2); % Id/W, 单位 uA/um ft data(:, 3); % fT, 单位 GHz av0 data(:, 4); % gm/gds figure; semilogy(gm_id, id_w, LineWidth, 1.5); xlabel(gm/Id [V^{-1}]); ylabel(Id/W [uA/um]); title(NMOS Id/W vs gm/Id); grid on;如果你所在的团队有内部设计环境可能已经有现成的 gm/Id 浏览器工具那就更省事。但哪怕没有用 Cadence 的 Ocean/SKILL 写循环扫描并不难。我见过不少老工程师甚至直接用 ADE XL 的参数化扫描导出一个 CSV 文件再用 Excel 透视表来查效率也完全够用。有几个建表时的细节非常影响后面的查表准确性我必须先说出来扫描 Vds 的时候尽量把 Vds 设定在目标电路该管子的实际工作电压附近。比如你打算让某个管子的 Vds 在 300mV就不要用 Vds600mV 的数据硬套否则 gds 和 fT 偏差会很大。温度建议扫描 27°C 作为基准后面角点验证再专门处理。一定要把工艺库中同一器件的不同版图版本区分清楚普通的单指管和多指管在小尺寸下电容差异可能不小。3.2 设计指标拆解与第一轮尺寸估算下面用一个我实际调过的案例来说明整个设计流程为了便于复现我把工艺参数简化成典型的 0.18μm CMOS电源电压 1.8V目标是设计一个 Miller 补偿两级 OTA。设计要求大概如下负载电容 CL 10pF增益带宽积 GBW ≥ 50MHz总功耗 ≤ 1mW直流增益 ≥ 60dB第一级输入差分对是最关键的部分因为单级极点主导 GBW。闭环时主导极点可以近似写成GBW gm1 / (2π · CL)所以输入管的跨导必须达到gm1 2π × 50MHz × 10pF ≈ 3.14mA/V也就是说我需要一个 3.14mS 的输入管。接下来开始进入 gm/Id 决策流程。我拍板选择输入管工作在 gm/Id 15理由是这个点处于中等反型电流效率和 fT 平衡得比较好。对于 0.18μm 工艺下的典型 NMOSgm/Id15 意味着器件大约处于 IC1 附近的反型状态fT 通常能有 3GHz 以上满足 50MHz 的 GBW 绰绰有余。那么输入管单边电流Id gm1 / (gm/Id) 3.14m / 15 ≈ 209μA差分对两个管子加起来尾电流源至少要提供约 418μA。电源 1.8V 下光是这一级的功耗就是 0.75mW考虑第二级和偏置总功耗会接近 1mW 上限。这里其实已经暴露出一个约束点如果功耗预算更加紧张可能需要把 gm/Id 提高比如改到 20 左右从而把电流降下来但代价是输入管寄生电容变大Miller 补偿的零极点位置会更难处理。假设我维持 gm/Id15查表得到 L0.5μm、gm/Id15 时电流密度大约是 Id/W 22μA/μm。于是输入管的沟道宽度W Id / (Id/W) 209μA / 22μA/μm ≈ 9.5μm注意这里的 W 是单边输入管的宽度如果你用多指结构比如 10 指 × 0.95μm实际版图里再微调。还要检查本征增益L0.5μm 时 gm/gds 大约能做到 40 多也就是 32dB 左右为了达到 60dB 的总增益我会考虑在第一级输出端加 cascode或者靠第二级输出管来补增益。第二级的尺寸估算思路完全一样根据输出摆幅、输出极点和功耗预算确定该级的 gm2、偏置电流再选择一个偏向强反型的 gm/Id比如 10 附近因为这一级通常需要速度稍好、线性范围大一些。到这里第一轮尺寸已经估出来了器件gm/Id 选择电流查表得到的 Id/W估算 W/L输入管 M1/M215209μA22μA/μm9.5μm / 0.5μm尾电流源 M510418μA40μA/μm10.5μm / 0.5μm第二级负载 M3/M48250μA50μA/μm5μm / 0.5μm这些数只是第一轮估算但它们已经不是“瞎猜”出来的了而是从器件图谱上读出来的所以在后续仿真时收敛速度会明显加快。3.3 仿真验证与迭代实际案例的数据拿着第一轮尺寸丢进 Spectre 之后我得到的仿真结果一般是这样的GBW约 45MHz比目标低了一些相位裕度约 52°有点紧张直流增益约 62dB勉强达标。为什么 GBW 会低因为 Miller 补偿电容会带来一个极点输入节点还有一些额外寄生电容大部分情况下高端估算中“CL 完全等于 10pF”本身就是理想假设。这时候我会回头用 gm/Id 找线索既然我的输入管 gm1 3.14mA/V 是硬指标那问题更可能是实际器件在偏置电流 209μA 时gm/Id 没有完全落在 15 上或者因为 Miller 电容 Cc 把增益带宽积的分母变大了。修正手段也很直接把补偿电容 Cc 稍微减小一点比如 3pF 降到 2.5pF以提高非主极点位置让相位裕度回到 60°同时把输入管电流从 209μA 提到 230μA让 gm 再涨一截把 GBW 拉到目标以上再跑到第二轮GBW 大约 53MHz相位裕度 61°基本满足。实践中这种“两三轮左右的迭代”很常见gm/Id 方法并不能让你一次命中所有指标但它的优势在于你知道该动哪个变量哪个管的 gm/Id 偏低哪个管的本征增益不够哪个管子的 fT 成了瓶颈每一条都能从图谱上找到依据而不是抓着 W 和 L 乱试。4. 实践中的坑位盘点与进阶建议4.1 查找表数据与仿真环境的温差很多人第一次用 gm/Id 方法就觉得查表数据“不稳”其实十有八九是建表时的环境跟实际电路偏置点差得太远。最典型的问题是 Vds。一个 NMOS 在实际电路中可能只有 300mV 的漏源电压但建表时偷懒用了 600mV 的 Vds。虽然 gm 和 Id 对 Vds 没有那么敏感但 gds 和 fT 会受很大影响你查到的“本征增益 45”可能实际只有 20。因此我强烈建议在 gm/Id 查找表里再加一维 Vds 扫描最少也要按“低压差场景”“标准饱和场景”“接近线性区场景”三档来建表。第二个常见问题就是温度。有的芯片工作温度范围是 -40°C 到 85°CVth 随温度变化可能达到几十毫伏。你在 27°C 查表定下的尺寸到 -40°C 角点下工作点会明显漂移。所以建表时最好把温度和工艺角信息一起记录下来做完整验证时再回到所有角点跑一轮。第三个问题是背栅效应。差分对输入管的源极并不是接到地而是接在尾电流源上方源极电压可能抬高了 200mV 到 300mV导致 Vgs 和阈值电压都变了。建表时如果是源极接地的单管环境查出来的工作点也会有一些偏差。对于这种情况我会在验证层面单独搭一个和实际电路源端接法一致的 testbench再核一次关键管子的 gm/Id 和 fT。4.2 gm/Id 工作点与匹配、噪声的博弈前面我提到输入管选 gm/Id15~20 在低功耗设计里很容易获得低热噪声但有一个地方不能盲目跟着“高 gm/Id 更省电”走那就是对失配敏感的结构。失配的核心是阈值电压和电流因子在版图上呈现随机涨落通常和器件的面积平方根成反比。当你把一个管子偏置在弱反型区Vov 很小哪怕 Vth 只波动 1~2mV对应的电流变化比例都会被放大结果就是你这个电流镜精度变得很差。这也就是为什么模拟设计里电流镜、差分对里常见的 gm/Id 取值往往并不高大约在 8~12而不是冲到 20 以上。反过来看噪声方面高 gm/Id 确实友好因为热噪声与 gm 成反比。同样的 100μA 电流gm/Id20 得到的 gm 是 gm/Id10 的两倍输入参考热噪声会低不少。但要注意弱反型区的 γ 因子可能略有增加同时面积变小会让 1/f 噪声变差所以不能只盯着热噪声一项做决定。我个人的经验是把输入对管刻意放在中等反型偏强一档gm/Id 大约 10~15这是一个噪声、失配、速度和功耗都比较平衡的区间。如果项目对功耗的要求极端严格再把输入对管推到弱反型同时用四输入管或者增大面积的方式来兜底匹配问题。4.3 自动化脚本之外的经验补充最后聊一点方法论层面的体会。gm/Id 方法确实很强大但不意味着你非得把电路里每一个管子都严格查表。真实的设计里真正需要精细查表的是关键性能路径上的管子也就是输入差分对、负载管、输出级大管、特定电流镜这几个。其它偏置管、开关管你只要保证它不在三极管区、漏电不大给一个合理的面积就完了。过度优化每个管子反而会让设计周期变长得不偿失。另外我非常推荐把不同 L 下的 gm/Id 曲线叠在同一个图里因为这样可以很直观地看出 L 对 fT 和 gm/gds 的影响规律。比如你发现某一个 L 下gm/Id 从 15 到 10 时 fT 提升很快说明这里的速度瓶颈主要由反型程度决定如果怎么拉低 gm/IdfT 变化都不大那瓶颈可能就是 L 太大了。这种判断能帮你少走不少弯路。如果团队允许用外部工具可以找一些公开的 gm/Id 设计辅助脚本或者开源工具包很多大学和开源社区都放出过类似“gm/Id calculator”的 MATLAB/Python 库。但千万记住这些工具里的数据是某个工艺节点下采集的换了工艺后数值没有任何参考意义必须自己针对当前工艺重新采一套。自己建表这件事没法偷懒但它带来的收益也绝对值得。从我个人的体验来说gm/Id 方法最打动我的地方在于它把模拟设计里那些“靠感觉调出来”的部分变成了可以解释、可以传递、可以迭代的工程语言。给一个跨导目标给一个电流预算再给一张查表图尺寸和工作点的取舍逻辑清清楚楚一个新人跟着图谱也能快速独立做出版图前的第一版电路。这种可复现性是单纯堆砌仿真经验完全比不了的。
返回列表