1. 先搞清楚这本书的定位与学习路径
模拟CMOS集成电路设计这条路上,有一本书几乎绕不开,就是拉扎维那本经典教材。很多人买回来翻了两周就搁在书架上吃灰,原因不是书太难,而是没人告诉他们这本书该怎么读——它不是一本可以线性读完的书,更像一份需要配合仿真器反复验证的操作手册。我见过太多人卡在第三章的电流镜、第五章的频率响应,然后怀疑自己不适合做模拟设计。其实问题往往出在方法上:只用眼睛看公式,不动手算,不开仿真器验证,读三遍也留不下什么。
这份指南想解决的就是这件事:把从器件物理到手算、再到仿真验证的完整链条串起来,告诉你每一章该干什么、哪些地方必须自己推一遍、哪些地方可以直接跳过、手算结果和仿真结果对不上时先查什么。适合两类人看:一是刚接触模拟IC方向、手上有一本教材但不知道从哪下手的学生;二是有一定电路基础、想系统补一遍模拟设计底子的工程师。实操环节我尽量写到手能直接抄的地步,包括网表结构、参数取值、结果判读的方法。
先说结论性的判断:这本书的价值集中在“设计直觉的建立”上,而不是知识点的罗列。它真正教你的,是在没有仿真器的情况下,看到一个电路能大致报出增益量级、输出摆幅、主极点位置、噪声水平。这种能力只能靠手算加验证反复磨出来,光靠背公式不会长出来。
1.1 为什么这本书让人又爱又恨
爱的地方在于它的推导链条完整,从MOS的I-V特性一路推到两级运放的频率补偿,中间不跳步。恨的地方在于,它默认读者已经具备一定的电路分析功底,很多“显然可得”的中间步骤被省略了,加上大量小信号等效电路图,刚上手的人容易在符号里迷路。
我的建议是把它当“习题册”而不是“阅读材料”来用。每读完一小节,合上书,自己在纸上把关键推导重走一遍:电流方程怎么来、小信号模型怎么画、增益表达式怎么化简。走不通就回去翻,走通了再往下。这个过程的效率远高于连续阅读,因为模拟设计里每一个公式背后都对应一个物理图景,光记住形式没有意义。
另一个容易被忽视的点是:这本书的很多结论都建立在长沟道假设上。真正进到深亚微米工艺,速度饱和、垂直电场迁移率退化、沟道长度调制这些事情会把手算结果拉偏一大截。所以读的时候要建立一个意识——书上的公式是“量级估算工具”,不是“精确预测工具”。这个认知建立起来之后,后面手算和仿真对不上时就不会慌。
1.2 三条主线的拆解与优先级
整本书的内容看起来庞杂,其实可以归到三条主线上,每条主线对应一种能力。
| 主线 | 覆盖章节大致范围 | 要建立的能力 | 优先级 |
|---|---|---|---|
| 器件与工艺 | MOS物理、二级效应、模型、电容 | 看着参数能判断工作区与量级 | 高,必须扎实 |
| 基本单元 | 单级放大器、电流镜、差分对、共源共栅 | 手算增益/摆幅/阻抗 | 高,核心中的核心 |
| 系统级 | 频率响应、反馈、噪声、运放、开关电容 | 判断稳定性与性能边界 | 中,先建立框架 |
第一、二条主线建议花掉总时间的六成以上。很多人急着去看运放和带隙基准,结果连共源级的输出阻抗都算不利索,后面越读越虚。第三条主线可以先建立框架感,知道噪声怎么折算到输入、相位裕度和极点位置什么关系,等前面扎实了再回头细啃。
1.3 一份可执行的六周节奏表
时间安排这件事因人而异,我给一个参考节奏,按每周投入十到十二小时算。
| 周次 | 主要任务 | 交付物 |
|---|---|---|
| 第1周 | MOS物理、I-V特性、二级效应 | 手推一遍电流方程,手算三个工作点 |
| 第2周 | 小信号模型、寄生电容、单管放大器 | 画出完整小信号图并算出增益 |
| 第3周 | 电流镜、共源共栅、差分对 | 搭好仿真环境,完成单管与电流镜验证 |
| 第4周 | 频率响应、极点估算 | 对同一个电路手算带宽并与仿真比对 |
| 第5周 | 噪声、反馈与稳定性 | 手算输入参考噪声,做一次环路稳定性仿真 |
| 第6周 | 两级运放综合练习 | 从指标到电路到仿真的一份完整记录 |
这个节奏的关键不在周次划分,而在每一周的“交付物”。没有交付物的学习等于没学,看完一章顺手在书上划线,两周后什么都剩不下。交付物哪怕写得很糙,也比没有强——它是你后来排查问题的依据。
2. 器件物理:把公式推一遍,比背十遍有用
器件物理这一块是全书最容易被跳过、也最不该跳过的部分。原因很直接:模拟设计里所有的手算,最终都落在几个参数上——阈值电压、迁移率、氧化层电容、输出电阻、寄生电容。这些参数的物理来源不清楚,后面看到仿真结果里的异常就只能猜。我见过有人调了一整天偏置,最后发现是体效应把阈值抬上去了,白折腾。
这一段的学习目标不是把半导体物理吃透,而是建立“参数—结构—工艺”之间的对应关系。做到看到一个晶体管的宽度、长度、工艺节点,能大致说出它的gm、ro、电容在什么量级,这就够了。
2.1 从PN结到MOSFET的电流方程
很多人背下了饱和区电流公式,但说不出它怎么来的。推导路径其实不复杂:从沟道电荷密度出发,假设 gradual channel 近似,对沟道电势积分,得到漏电流和过驱动电压的平方关系。这条推导里藏着两个重要假设,一是沟道长度足够长、横向电场不影响纵向电荷分布,二是迁移率为常数、不随垂直电场变化。记住这两个假设,后面就知道误差从哪来。
我建议至少手推一次,推到能自己写出 I_D = (1/2)μnCox(W/L)(V_GS - V_TH)² 这一步,并且能说清楚每个符号的物理单位。这件事花不了两小时,但收益很大:你会明白为什么增大过驱动电压能提高 gm 却牺牲摆幅,为什么宽度加大能提高电流却同时推高电容。
接下来是三个工作区的判断。截止区、线性区、饱和区的边界条件必须熟到条件反射的程度。实际操作中更常用的是反过来的问题:给定一组电压和尺寸,判断管子在哪个区。这个判断能力在做偏置电路时天天要用。
2.2 手算一次完整的工作点,感受误差从哪来
拿一个具体的例子练手。假设某个工艺下 μnCox 取 300 μA/V²,阈值电压取 0.45 V,某NMOS的 W/L 取 10 μm / 0.18 μm,栅源电压 0.85 V,漏源电压给足。过驱动电压是 0.4 V,代入公式:
- 宽长比 W/L ≈ 55.6
- I_D = 0.5 × 300e-6 × 55.6 × 0.4² ≈ 1.33 mA
再用 gm = 2I_D/V_ov 得到 gm ≈ 6.7 mA/V,或者用 gm = √(2μnCox(W/L)I_D) 得到约 6.7 mA/V,两者一致。
然后算输出电阻。假设沟道长度调制系数对应 Early 电压为 5 V(这个值在短沟道下往往更低),ro = V_A / I_D ≈ 5 / 1.33e-3 ≈ 3.76 kΩ。本征增益 gm×ro ≈ 25,也就是约 28 dB。
现在把这个结果丢进仿真器,大概率会看到增益比 25 低一些,电流比 1.33 mA 高一些。差异来源有几个:迁移率退化让实际电流偏小、速度饱和在高过驱动下影响明显、源漏串联电阻吃掉了部分电压。这些偏差不是错误,是长沟道模型和实际工艺的差距。
这个练习的意义在于:你亲手算出的数字和仿真结果的差距,会变成你对模型的“校准系数”。以后估算的时候,心里会自动打个折,这比记一堆修正公式管用得多。
2.3 二级效应:什么时候必须放下笔去仿真
体效应、沟道长度调制、亚阈值导通、迁移率退化、速度饱和——这些效应里,有的必须手算时考虑,有的直接交给仿真器就行。
体效应是必须手算的。只要源极不接地,阈值电压就会抬升,抬升量用 γ(√(2φF + V_SB) - √(2φF)) 估算。这个量在电流镜、差分对、源极跟随器里天天出现,忽略它会直接把偏置算偏。一个经验值:源衬电压在几百毫伏量级时,阈值可能抬升几十毫伏,对低电压设计来说这已经不小了。
沟道长度调制也是必须考虑的,它决定了输出电阻,进而决定增益。但精确值不用手算,估个量级,剩下的交给仿真。
亚阈值导通在低功耗设计里很重要,尤其是工作在弱反型的电路。手算时记住一个数量级:亚阈值斜率在室温下理想值是约 60 mV/decade,实际工艺通常在 70 到 90 mV/decade 之间。这个数字在评估低功耗偏置方案时很有用。
迁移率退化和速度饱和这两件事,手算阶段基本可以放弃精确建模,知道它们会让实际电流低于平方律预测就够了。真要做定量分析,直接跑仿真扫参数。
提示:手算阶段的目标是“量级正确、趋势正确”,不是“小数点后两位正确”。把精力花在建立趋势判断上,比死磕精确值性价比高得多。
2.4 小信号参数与寄生电容的记忆框架
小信号模型里的几个参数,建议做成一张自己的速查表,反复用。
| 参数 | 表达式 | 物理含义 | 什么时候最关键 |
|---|---|---|---|
| gm | 2I_D/V_ov 或 √(2μCox(W/L)I_D) | 电压控制电流的能力 | 增益、带宽、噪声 |
| ro | V_A/I_D | 输出端等效电阻 | 增益、电流源精度 |
| gmb | gm × η,η 常取 0.1~0.2 | 体效应跨导 | 源极不接地时 |
| Cgs | 约 (2/3)WLCox | 栅源电容 | 高频极点、驱动能力 |
| Cgd | 由交叠电容主导 | 栅漏电容 | 米勒效应、稳定性 |
| Cdb | 结电容,与面积和电压有关 | 漏衬电容 | 输出极点 |
这里有个记忆要点:Cgd 虽然绝对值小,但因为米勒效应会被放大 (1 + gm·R_L) 倍,在高频分析里经常是主要矛盾。很多人第一次做两级运放仿真,发现次极点位置比手算低很多,八成就是忘了米勒倍增。
电容这个事还有个实践层面的建议:把工艺文件里给的电容参数(单位面积的栅电容、单位长度的交叠电容、结电容的零偏值和梯度系数)抄到自己的笔记里,用的时候直接查。翻工艺文件找参数这件事,做多了会非常影响节奏。
3. 单级放大器与电流镜:手算和仿真的第一次对撞
第三章到第五章是全书的核心地带,也是多数人真正开始“做设计”的起点。这一段的正确打开方式是一边算一边仿,算一个仿一个,比对一次。先把共源级吃透,再推电流镜,然后上差分对。顺序不要乱,因为后面所有复杂电路都是这几个单元的堆叠。
我在带新人的时候有个固定要求:共源级必须能手算到“增益误差在3dB以内、电流误差在20%以内”。达到这个标准,说明你对工艺参数和模型的理解到位了,后面学什么都快。
3.1 共源级的增益、摆幅与输出阻抗怎么估
共源级是所有放大器的原型。它的手算流程可以固化成四步。
第一步,确定偏置电流。这通常由指标反推:想要多大的 gm、驱动多大的负载电容、允许多少功耗。假设我们要 gm = 1 mS,过驱动电压取 0.2 V,那么 I_D = gm × V_ov / 2 = 100 μA。
第二步,算尺寸。由 I_D = 0.5μCox(W/L)V_ov² 反解 W/L。代入 μnCox = 300 μA/V²,得到 W/L = 2 × 100e-6 / (300e-6 × 0.04) ≈ 16.7。取 W/L = 17,若 L = 0.18 μm,W ≈ 3 μm。
第三步,算输出电阻和增益。ro = V_A / I_D,假设 V_A = 6 V,ro = 60 kΩ。如果负载是一个理想电流源,输出阻抗也是 60 kΩ,并联得到 30 kΩ。增益 = gm × 30k = 30,约 29.5 dB。
第四步,检查摆幅。输出最高电压受限于管子进入线性区,最低电压受限于负载电流源的裕度。理论摆幅大概是 VDD - 2V_ov 到 2V_ov 之间,实际还要留余量。过驱动电压取得越小,摆幅越大,但 gm/ID 效率提高的同时速度下降、匹配变差,这是个典型的取舍。
这个四步流程建议做成模板,每次换指标就重跑一遍。跑熟之后,看到一个共源级能在两分钟内报出增益量级,这就是设计直觉的雏形。
3.2 电流镜的失配与输出阻抗
电流镜看起来简单,坑却不少。先说输出阻抗:简单电流镜的输出阻抗就是 ro,而共源共栅结构能把它提高约 gm×ro 倍。这个提升幅度听起来很美好,代价是损失了约 2V_ov 的电压裕度。在低压设计里,这个代价经常是不能接受的,于是又衍生出低压共源共栅、 regulated cascode 这些变体。
再说失配。电流镜的复制精度受三个因素影响:阈值电压失配、尺寸失配、沟道长度调制。前两个属于随机失配,跟面积有关,面积越大失配越小;第三个属于系统误差,跟两管的 V_DS 是否相等有关。手算时可以用一个经验公式估算阈值失配:σ(ΔV_TH) ≈ A_VT / √(WL),其中 A_VT 是工艺给的失配系数,通常在几 mV·μm 的量级。
有个实践中的细节:做电流镜时,尽量让两管的漏端电压接近,常用的办法是加一个单位增益缓冲或者用共源共栅结构钳位。如果做不到,那就在仿真里扫一遍 V_DS 变化,看看电流复制误差在多大范围内可接受。我见过一个设计,仿真时电流镜精度很好,实际测试偏差超过 15%,原因就是两管 V_DS 差了 300 mV,而设计者从来没扫过这个参数。
3.3 完整实操:一个两级CS放大器的设计与验证
这一节给一个可以照着跑的完整流程。目标是设计一个有源负载共源级,指标是:电源 1.8 V、静态电流 100 μA、低频增益不低于 30 dB、负载电容 1 pF。
第一步,手算尺寸。用前面 3.1 的结果,W/L 取 17,L 取 0.18 μm。电流源负载用PMOS,尺寸按同样的过驱动电压和电流反算,宽长比会比NMOS小,因为空穴迁移率低,大概需要 2 到 3 倍的宽长比。
第二步,搭仿真环境。核心是直流工作点加交流扫描。网表结构大致如下:
* 有源负载共源级:工作点与增益验证 .param VDD=1.8 .param VIN=0.65 VDD vdd 0 DC {VDD} VIN g 0 DC {VIN} AC 1 * 输入管 NMOS M1 d g 0 0 nch W=3u L=0.18u * 电流源负载 PMOS,栅极接固定偏置 M2 d pb vdd vdd pch W=6u L=0.36u VPB pb 0 DC 1.15 CL d 0 1p .op .ac dec 20 1 1G .print ac vdb(d) vp(d) .end第三步,先看 .op 结果。重点核对三件事:M1 是否在饱和区(V_DS > V_ov)、M2 是否在饱和区、静态电流是否接近 100 μA。这三个不满足,后面的交流分析全是错的。
第四步,跑交流扫描,看低频增益和 -3dB 带宽。如果增益偏低,先查输出电阻是不是被负载拉低了,再看是不是管子没在饱和区。如果带宽偏低,大概率是输出节点电容估计不足。
第五步,用计算器反算。低频增益应该等于 gm1 × (ro1 || ro2)。带宽约等于 1/(2π × R_out × C_out)。把你手算的数和仿真值填进下面这张表,差异超过预期就去找原因。
| 指标 | 手算值 | 仿真值 | 偏差 | 可能原因 |
|---|---|---|---|---|
| 静态电流 | 100 μA | 待填 | 迁移率退化、串联电阻 | |
| 低频增益 | 30(约29.5dB) | 待填 | 输出电阻低估 | |
| -3dB带宽 | 约5.3 MHz | 待填 | 寄生电容遗漏 | |
| 输出摆幅上限 | 约1.4 V | 待填 | 负载管进入线性区 |
这张表的价值不在于数字本身,而在于它逼着你去解释每一个偏差。解释清楚一次,你对模型的理解就深一层。
3.4 差分对:从单端到全差分的关键跨越
差分对是全书的分水岭。前面都是单端思维,到这里开始进入差分、共模、失配、共模抑制这一套体系。刚上手时最容易混的是共模和差模的分析方法:差模半边电路法、共模半边电路法,这两个模型必须自己推一遍,不能只记结论。
差模半边电路的核心是把尾电流源看成交流地,于是电路简化为一个源极接地的共源级,增益表达式和单级一样。共模半边电路则要把尾电流源的阻抗考虑进去,这个阻抗通常很大,导致共模增益很小,这就是共模抑制的来源。
实际设计里有个常被忽略的点:尾电流源本身的输出电容会让共模抑制在高频变差。低频时尾电流源阻抗是 ro,高频时被电容旁路,共模增益就上去了。做全差分电路时,这个效应会直接转化成输出共模的漂移。
4. 频率响应、噪声与反馈:把“看懂”升级成“算得准”
这一块是很多人从“能算直流”到“能设计电路”的分界线。难点不在概念本身,而在于要建立多极点系统的直觉:哪个极点是主极点、非主极点在什么位置、相位裕度剩多少、补偿电容怎么加。这些事光看推导不够,得自己动手算几遍,再用仿真验证。
4.1 极点估算的三种手法
第一种是开路时间常数法,也叫 OCTC。核心思想是把每个电容单独看,其他电容开路,算出该电容对应的时间常数,全部加起来就是主极点的时间常数倒数。这个方法适合复杂网络,误差在可接受范围内,尤其是主极点比较分散的时候。
第二种是米勒近似。针对跨接在输入输出之间的电容,把它等效成输入端的 (1+A) 倍电容和输出端的 (1+1/A) 倍电容。两级运放里的补偿电容就是靠这个机制把主极点压低、实现极点分离。这个方法直观,但在 A 不大或者频率较高时误差明显。
第三种是节点法直接列方程。对节点少的电路,直接写节点电流方程,解出传递函数,然后找极点。准确但我一般不推荐手算,除非节点特别少,因为多项式展开容易出错。
实际操作里,我通常是先用 OCTC 快速估一个主极点,再用米勒近似判断补偿效果,两者差太多就说明有极点靠得很近,需要仔细分析。
4.2 噪声手算的流程与取舍
噪声这一章的内容密度很高,但真正要手算的东西不多。核心是两条:热噪声和闪烁噪声。
热噪声的电流功率谱密度是 4kTγgm,其中 γ 在长沟道下取 2/3,短沟道下可能到 1 以上。折算到输入,等效电压噪声是 4kTγ/gm。这个式子说明一个关键结论:要提高噪声性能,就得提高 gm,而提高 gm 的代价是电流或者面积。
闪烁噪声的输入参考功率谱密度约等于 K/(Cox·W·L·f),跟面积成反比,跟频率成反比。所以低频应用要靠大面积压噪声,高频应用可以忽略它。
多级电路的噪声折算有个通用方法:把后级的噪声除以当前级的增益平方,再折算到输入端。这就引出一个设计原则:第一级的增益要做大,这样后级的噪声贡献才小。这个原则在做低噪声放大器时是硬约束。
手算噪声的时候,我一般只算输入对管和负载管的贡献,其他的先忽略,算完和仿真比一比,差个一两 dB 属于正常。如果想要更准,就把所有管子的贡献都列出来,做成表格累加。
4.3 反馈稳定性:相位裕度到底怎么定
相位裕度的教科书答案是 45° 到 60°,但实际怎么取要看应用场景。纯粹看阶跃响应的话,60° 对应约 10% 的过冲,45° 对应约 25% 的过冲。如果电路后面接了采样保持,过冲会直接变成精度误差,这时候通常要求 70° 以上。如果只是内部节点,45° 也能接受。
判断稳定性的手算方法很直接:找到环路增益的传递函数,令其幅值为 1,求此时的相位,用 180° 减去就是相位裕度。工程上更常用的做法是看次极点位置——如果次极点在穿越频率的 2.2 倍以上,相位裕度大致在 60° 左右。这个 2.2 倍的经验值在两级运放设计里用得极多。
两级运放的米勒补偿,手算流程是:先由负载电容和目标带宽定出 gm1,由 gm1 和 Cc 定出增益带宽积 GBW = gm1/(2πCc),再由相位裕度要求定出次极点位置,次极点大致等于 gm2/CL,由次极点和 GBW 的比值反推 gm2,最后定出第二级的电流。这个链条走一遍,两级运放的主要参数就都有了。
4.4 一次两级运放的设计走查
举个例子走一遍。指标:负载电容 2 pF,单位增益带宽 100 MHz,相位裕度 60°,电源 1.8 V。
先定 Cc。通常取 Cc ≥ 0.22 CL,这是为了保证次极点在正确位置。取 Cc = 0.5 pF 偏小,取 1 pF 更稳。这里取 Cc = 1 pF。那么 gm1 = 2π × GBW × Cc = 2π × 100e6 × 1e-12 ≈ 0.63 mS。
次极点要放在 2.2 倍 GBW 之外,即 220 MHz 以上。次极点约等于 gm2/CL,所以 gm2 ≥ 2π × 220e6 × 2e-12 ≈ 2.8 mS。实际的 gm2 通常要留更多余量,取 3 到 4 mS 比较稳。
再由 gm 反推电流:输入对管过驱动取 0.15 V 的话,I1 = gm1 × V_ov / 2 ≈ 47 μA,输出级过驱动取 0.2 V,I2 = gm2 × 0.2 / 2 ≈ 300 μA。总电流约 350 μA。
这个结果拿到仿真里跑一遍,相位裕度大概会落在 55° 到 70° 之间,偏差主要来自寄生电容和 gm 的实际值。如果裕度不够,第一反应是加大 Cc,但这会牺牲带宽;第二反应是加大 gm2,代价是功耗。这个取舍没有标准答案,要看你的指标哪个更紧。
5. 仿真实践:从网表到结论解读的完整链路
前面所有的计算,最终都要落到仿真上验证。但仿真这件事本身有很多门道,很多人跑出来的结果自己都读不明白,或者结果明显不对却在一堆数字里找原因。这一节讲的是:环境怎么搭、仿什么、怎么看结果、出问题按什么顺序查。
5.1 环境准备与直流工作点自检
仿真环境的核心是三样东西:工艺模型文件、仿真器、波形查看工具。工艺模型文件通常由工艺方提供,里面定义了各类器件的模型参数和工艺角。仿真器用什么不是关键,关键是要理解它怎么解析网表、怎么选模型、怎么报错。
搭好环境之后,第一个动作永远是跑直流工作点。这一步的检查清单我列一下:
- 每个晶体管的 V_GS、V_DS、V_TH、V_ov 是否合理,是否在工作区;
- 静态电流是否和手算一致,偏差在不在容忍范围;
- 有没有节点电压明显异常,比如某个节点被拉到了电源或者地;
- 电流源和电流镜的输出是否接近设计值。
这四项里任何一项不对,都不要往下走。我见过太多人跳过这步直接跑交流,然后花几个小时研究为什么增益是负的,结果发现是输入管在线性区。
5.2 交流、瞬态、噪声三类仿真的对应关系
三类仿真的用途不一样,混着用会浪费时间。
交流扫描(.ac)用来获取小信号特性,包括增益、带宽、相位裕度、电源抑制比。它基于工作点线性化,所以必须先有一个正确的直流工作点。环路稳定性仿真也是在交流分析里做的,通常是在环路里断一点,注入交流信号,看返回信号的幅值和相位。
瞬态仿真(.tran)用来看大信号行为,包括摆率、建立时间、过冲、失真。它不依赖线性化,所以能反映真实的非线性。做瞬态时要注意时间步长的设置,步长太大结果不可信,步长太小仿真时间会失控。经验做法是让最大步长不超过信号周期的百分之一到千分之一。
噪声仿真(.noise)会同时在每个频点做小信号分析并累加各器件的噪声贡献。输出结果通常是输入参考噪声谱密度和总积分噪声。要注意的是,噪声仿真只在工作点附近有效,如果电路有大信号摆动,结果只能作为参考。
| 仿真类型 | 主要用途 | 前置条件 | 常见误用 |
|---|---|---|---|
| 直流工作点 | 检查偏置、判断工作区 | 无 | 跳过这步直接做交流 |
| 交流扫描 | 增益、带宽、相位裕度 | 工作点正确 | 用在小信号不成立的场景 |
| 瞬态 | 摆率、建立、过冲 | 初值合理、步长合适 | 步长过大导致假振荡 |
| 噪声 | 输入参考噪声、贡献分解 | 工作点正确 | 在大信号下当作精确值 |
| 蒙特卡洛 | 失配与成品率 | 模型带统计信息 | 样本数太少 |
5.3 收敛报错的排查顺序
仿真跑不动是常事,尤其是刚接触的时候。收敛问题按下面的顺序查,能解决大部分情况。
先查电路本身是否有悬空节点。一个节点没有任何直流通路,仿真器就找不到它的初始值,大概率报错。解决办法是加一个大电阻到地或者电源,阻值取到不影响电路工作即可,比如 1 GΩ。
再查有没有正反馈环路导致多解。比如两个反相器首尾相连,这种电路有多个稳定工作点,仿真器会在中间纠结。办法是加 .nodeset 给关键节点一个初始猜测值。
然后查模型参数是否有极端值或者缺失。有些工艺模型在某些工艺角下参数很怪,会导致迭代不收敛。可以先把工艺角换成典型值试试。
最后才考虑放宽仿真器的收敛参数,比如增大迭代次数、降低相对误差容限。这一步要谨慎,参数放得太松可能得到错误的“收敛”结果。我一般的态度是:实在没办法才动收敛参数,而且要在日志里注明,免得后来的人搞不清为什么结果和别人的不一样。
5.4 工艺角、温度与蒙特卡洛的基本盘
只跑典型值是不完整的。实际流片出来的芯片,参数会在一定范围内波动,仿真要覆盖这些波动。
工艺角通常跑五组:慢NMOS慢PMOS、快NMOS快PMOS、慢NMOS快PMOS、快NMOS慢PMOS、典型。有些工艺还有低功耗角、高阻角。温度一般扫 -40℃、27℃、125℃ 三个点,有特殊要求的再加。这两者组合起来就是十几个仿真,跑一遍要时间,但这是必做的功课。
蒙特卡洛用来评估随机失配。跑之前要确认模型里带了统计信息,否则跑出来的分布没意义。样本数一般至少 200 次,想要看尾部成品率的话要 500 次以上。蒙特卡洛的结果重点看两个:均值是否偏离设计中心、标准差是否可接受。如果均值偏了很多,说明有系统误差,得回去查电路结构而不是靠调尺寸硬凑。
6. 踩坑实录与速查表
这一节是我这些年带人、自己做项目攒下来的东西,都是文档里不太会写、但实际会天天遇到的。
6.1 手算与仿真对不上的六种原因
这个表建议存下来,遇到偏差先按顺序排查,能省掉大量时间。
| 现象 | 最可能原因 | 排查方法 |
|---|---|---|
| 电流偏大 20% 以上 | 迁移率退化、速度饱和 | 降低过驱动重跑,看趋势 |
| 增益明显偏低 | 输出电阻估高、管子未饱和 | 查 .op 里的 V_DS 和 V_ov |
| 带宽明显偏低 | 漏算寄生电容、米勒效应 | 逐项列出节点电容重新估 |
| 相位裕度不足 | 次极点太近、补偿不足 | 加大 Cc 或 gm2 观察变化 |
| 噪声仿真值偏高 | 忽略了某些器件贡献 | 看噪声贡献分解表 |
| 瞬态出现振荡 | 步长过大或电路本身不稳 | 减小步长,再做稳定性分析 |
这里特别说一下“增益明显偏低”这一条。很多时候不是模型问题,是负载。比如输出端接了一个测试用的 1 pF 电容和 100 kΩ 电阻,这两个东西并联到输出节点上,直接把输出阻抗拉低了一个数量级。仿真时一定要看清楚自己到底接了什么负载,别把测试电路的影响算到设计头上。
6.2 学习阶段最容易走偏的几个习惯
第一个习惯是只读不算。书上的推导看一遍觉得懂了,合上书什么都写不出来。模拟设计这门手艺,懂和会是两回事,中间隔着手算的次数。
第二个习惯是过早追求复杂电路。刚学完单级就去做全差分运放,结果每个模块都不扎实,出了问题定位不到。我的建议是把共源级、电流镜、差分对这三个单元各做三个不同指标的设计,做到闭着眼能写流程,再往上走。
第三个习惯是仿真结果不做交叉验证。跑出一个增益 40 dB 就信了,也不管这个数合不合理。正确的做法是每次仿真完都用手算对一下量级,偏差大就去找原因。这个习惯坚持半年,你对电路的判断力会有质的提升。
第四个习惯是忽略工艺文件。很多人从头到尾没打开过模型文件,不知道自己的管子用的是什么模型、什么参数。遇到异常现象就束手无策。花一个下午把模型文件翻一遍,看看关键参数的范围,这个投入回报很高。
提示:每次做完一个电路,把“手算值、仿真值、偏差原因”三栏记下来,攒够二十个案例,你会发现自己的估算误差在稳步收敛。这份记录比任何笔记都值钱。
我个人在实际操作中的体会是,模拟设计这件事最怕的不是难,而是反馈太慢。一次流片几个月,中间没有反馈,学习效率自然低。仿真器解决了这个问题——它让你一天之内就能验证十次猜想。所以别把它当“最后一步的验收工具”,把它当成“每天都要用的草稿纸”。手算给出猜想,仿真给出裁判,两者来回几轮,那些公式才真正长在你身上。