news 2026/10/2 1:08:17

折叠式共源共栅运放设计实战:Cadence Virtuoso完整流程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
折叠式共源共栅运放设计实战:Cadence Virtuoso完整流程

做模拟IC设计的朋友应该都有过这种经历:拿到一个运放的指标,翻来覆去在套筒式共源共栅和折叠式共源共栅之间纠结,最后往往被输出摆幅、共模输入范围逼着选了折叠结构。这次我直接用Cadence Virtuoso在0.18μm工艺下走一遍折叠式共源共栅放大器的完整设计流程,从电路结构分析、管子尺寸推导到原理图绘制、仿真调试,全程带参数和操作步骤。文章面向正在做课程项目或刚入门模拟IC设计的同学,也适合想系统梳理运放设计流程的工程师,跟着操作一遍,基本就能掌握Virtuoso环境下模拟电路设计的主流工作方式。

1. 为什么选折叠式共源共栅,而不是套筒式?

1.1 套筒式和折叠式的核心差异

很多教材会把这两种结构放在一起对比。套筒式共源共栅(Telescopic Cascode)的输入管、共源共栅管在同一条电流路径上堆叠,结构简单、功耗低、噪声小,增益也容易做高。但它的致命问题是输出摆幅小,而且输入共模范围和输出摆幅打架,在低电源电压下几乎没法用。0.18μm工艺的标准电源电压是1.8V,套筒式结构在这个电压下能分给每层管子的余量非常紧张,稍微遇到工艺角偏差就容易把管子压出饱和区。

折叠式共源共栅(Folded Cascode)本质上是用一路额外的电流把输入级的电流“折叠”到共源共栅负载上,输入对管和输出支路分开。代价是静态电流翻倍,功耗更大,但换来了输入共模范围更灵活、输出摆幅更大。在1.8V电源电压下,折叠结构可以让每个管子分到大概0.3V到0.4V的过驱动电压余量,设计起来从容很多。

1.2 0.18μm工艺下的实际取舍

0.18μm工艺的MOS管本征增益gmrds大概在20到40之间,不算高。要做60dB以上的增益,必须靠共源共栅结构把输出阻抗抬起来。折叠式共源共栅的输出阻抗近似为共源共栅管的跨导乘以两管输出阻抗的乘积,也就是gmrds^2的量级,在0.18μm工艺下能到几百kΩ甚至MΩ级别。只要负载电容不大,低频增益做到60dB以上是没问题的。

实际选型的时候我会算一笔账:如果指标里要求输出摆幅大于1Vpp、增益大于60dB、功耗预算在1mW左右,在1.8V工艺下折叠式几乎就是标准答案。反过来,如果做的是高速度、低功耗的场合,输出摆幅要求不高,套筒式可能更合适。说到底不是哪个结构更好,而是哪个结构更适合你的约束条件。

2. 设计规格与管子尺寸推导

2.1 先把指标定下来:增益、带宽、功耗

设计放大器前定规格是必须的,哪怕是自己练手也要定一个明确的目标。这里我设计一个用于SAR ADC前端缓冲的折叠式共源共栅运放,指标大概这样:

  • 电源电压:1.8V
  • 负载电容:2pF
  • 直流增益:≥60dB
  • 单位增益带宽:≥50MHz
  • 相位裕度:≥60°
  • 静态功耗:≤1mW
  • 输出摆幅:≥1Vpp

功耗1mW意味着总电流约0.55mA。我习惯把尾电流源的电流定为总电流的一半左右,剩下的一半分给两条输出支路。折叠结构里输入对管的尾电流I_tail和每条输出支路的电流I_branch加起来等于总电流。比如取I_tail=300μA,每条支路I_branch=125μA,总电流就是550μA,在1.8V下功耗约0.99mW,刚好卡在预算内。

2.2 从尾电流到输入对管:几个关键公式

输入对管的跨导gm直接决定了单位增益带宽(GBW):GBW = gm / (2π * C_L)。目标GBW是50MHz,C_L=2pF,算出来gm≈0.63mA/V。这个值并不大,说明设计起来比较轻松。但在实际仿真中如果看到GBW掉了,多半是输入对管电流没给够或者负载电容比预期大。

跨导公式gm = 2 * I_d / V_ov,I_d是流过单边输入管的电流,V_ov是过驱动电压。输入对管分担尾电流300μA,单边就是150μA。取V_ov=150mV,算得gm=2150μA/150mV=2mA/V,GBW=2mA/V/(2π2pF)≈159MHz,余量很足。这里我把V_ov定在150mV是考虑0.18μm工艺的电源电压和输出摆幅的折中,V_ov太大摆幅不够,太小管子容易进亚阈值区,工艺角下鲁棒性差。

有了跨导和电流,可以反推宽长比。0.18μm工艺NMOS的工艺参数μnCox大约在300μA/V²附近,用公式gm=sqrt(2μnCox(W/L)I_d)反推,W/L≈(2mA/V)²/(2300μA/V²*150μA)≈44。我一般取L=0.36μm(约2倍最小沟道长度,兼顾增益和速度),W就取16μm,W/L≈44。这个尺寸在后续仿真中微调是很正常的。

2.3 共源共栅负载和偏置怎么配

输出级的负载管用PMOS共源共栅结构,提供高输出阻抗。每只管子的过驱动电压也要控制在200mV以内。输出摆幅的计算方式是:VDD减去输出支路所有管子的V_ov之和。折叠支路里总共叠了3个管子(输入对管、NMOS共源共栅管、PMOS共源共栅管),如果每个管子V_ov大约200mV,输出摆幅就是1.8-0.6=1.2V,基本满足1Vpp的要求。这里要注意,输入对管用的是NMOS还是PMOS,折叠点位置会不一样。我习惯用NMOS输入,共源共栅负载用PMOS,这样输入共模范围更靠近地,适合很多传感器信号处理场景。

偏置电路用一个简单的电流镜产生偏置电压。PMOS共源共栅管的偏置电压Vbias_p和NMOS共源共栅管的偏置电压Vbias_n分别由电流镜结构产生。为了让共源共栅管工作在饱和区,Vbias_n不能太高,Vbias_p不能太低,具体值要靠DC仿真去调整。很多初学者在这里会忽略一个问题:电流镜的管子长度要匹配,至少要取到1μm以上,否则沟道长度调制效应会让镜像电流偏差很大,输出共模点飘掉。

3. Virtuoso原理图设计全流程

3.1 建立库、Cell和工艺库配置

打开Cadence Virtuoso,第一步是在CIW(Command Interpreter Window)里创建自己的库。选择File → New → Library,填入库名,比如my_analog_lib。创建库时会提示是否attach到工艺库,这里一定要选attach to an existing technology library,然后选你加载好的0.18μm PDK库。这一步如果选错,后面所有器件都没有工艺参数,仿真直接报错。

接下来在Library Manager里右键自己的库,选择New Cell View,Cell Name填folded_cascode_ota,Type选schematic,打开Schematic Editor。在这里我建议先设置一下显示选项:Options → Display,把栅格间距调成0.05或0.1,方便对齐。连线的时候按I键放置器件,按P键放置引脚,按C键复制,按M键移动,这些快捷键必须熟练,不然画起来很慢。

3.2 逐个摆管子:电路连线与符号设计

在Schematic Editor中按I键添加器件。0.18μm PDK库中,NMOS管和PMOS管通常在analogLib或PDK自带的Primitives目录下,名称一般是nch和pch。这里用的是普通阈值管,不是厚栅管,因为1.8V电压下普通管就够了。

摆放顺序我建议从核心环路开始:先放输入对管M1、M2,再放尾电流管M0,然后放折叠支路的PMOS管M3、M4作为折叠点电流源,接着放NMOS共源共栅管M5、M6,最后放PMOS共源共栅管M7、M8。管子的连接关系:

  • M0漏极接M1、M2的源极,提供尾电流
  • M1、M2栅极分别接INP、INN,漏极接折叠点A、B
  • M3、M4作为折叠电流源,源极接VDD,漏极接折叠点A、B,栅极接Vbias_p
  • M5、M6的源极接折叠点A、B,漏极接输出节点OUTP、OUTN,栅极接Vbias_n
  • M7、M8的源极接VDD,漏极接输出节点OUTP、OUTN,栅极接Vbias_p

画完原理图后要做一次Check and Save(快捷键X),确认没有连线错误和悬空引脚。这里有个细节:管子的衬底连接不能漏。PMOS的衬底接VDD,NMOS的衬底接GND,PDK里默认是sub连接,如果不接,仿真时会报floating substrate错误。

符号(Symbol)可以从原理图自动生成:选择Create → Cellview → From Cellview,工具会弹出Symbol Generation Options,默认引脚排列可能比较乱,建议手动调整一下引脚位置。运放符号一般左边是输入INP、INN,右边是输出OUT,上面是VDD和Vbias,下面是VSS。符号生成后后续搭测试bench直接调用就行。

3.3 搭测试bench:激励和负载怎么加

测试bench不能和原理图放在同一个cell里,我习惯单独建一个cell叫tb_folded_cascode。在这里调用刚生成的运放符号,加上理想电流源、电压源和负载电容。

具体连接方式:

  • VDD接1.8V直流电压源,VSS接地
  • Vbias_n和Vbias_p先用理想电压源提供初始值,后面再换成偏置电路
  • INP接输入信号,INN接共模电压或反馈网络,这里做开环AC仿真时INN直接接共模电平,INP接ac小信号源
  • 输出OUT接2pF电容到地

电压源的设置在Virtuoso里用vdc和port组件。AC仿真时输入信号用port器件,把AC magnitude设为1,这样AC扫描的输出幅度就直接等于增益。共模电压取0.9V,正好是1.8V电源的一半。

4. 仿真调试:从DC到AC再到稳定性

4.1 DC工作点:先让所有管子饱和

仿真之前要在ADE L(或者新版Virtuoso的ADE Explorer)里设置好工艺库和模型。用models文件指定0.18μm PDK的spectre模型,通常是xx18.scs或类似的文件名,设置时选typicalcorner,温度27°C。

第一次跑DC仿真先看工作点。仿真完成后在原理图上选择DC Operating Points显示,逐个检查每个管子的region参数。在spectre中,region=2表示饱和区,region=3表示线性区,region=0或1表示截止区。设计目标很明确:所有管子都要在饱和区。

我第一版画完仿真,发现M5、M6(NMOS共源共栅管)的region=3,说明它们进入了线性区。原因是Vbias_n给的电压太高,导致NMOS管的源漏电压太小。解决方法是降低Vbias_n,让M5、M6的Vds增大。仿真时我把Vbias_n从1.2V改到1.0V,M5、M6的Vds从0.12V升到0.25V,管子回到饱和区。这种“调偏置电压”的操作在整个调试过程中会反复出现,最好有一个清晰的检查方法:打开DC结果,按器件查看Vds和Vov,确认Vds≥Vov。

4.2 AC仿真:增益、带宽和相位裕度怎么看

DC工作点确认后,进行AC仿真:在ADE中选择ac分析,扫描频率从1Hz到1GHz,扫描方式选对数。跑完看输出OUT的幅频曲线和相频曲线。这里我习惯同时显示增益曲线和相位曲线,方便直接看单位增益带宽和相位裕度。

第一版仿真结果增益约58dB,比目标低了一点。单位增益带宽约120MHz,超出预期。相位裕度目测65°左右,基本达标。但增益还差2dB,这个差异可以通过增大输出阻抗来补。我选择加大共源共栅管的L,把M5/M6/M7/M8的L从0.36μm加长到0.5μm,增益提升到62dB,但GBW小幅掉到105MHz,仍然高于50MHz目标。

这里还发现一个问题:AC曲线上出现了轻微的峰包,说明Q值偏高,与负载电容形成的极点比较靠近。解决方法是稍微增加负载电容到2pF(这本来就在指标范围内),或者在输出端加一个小电阻来降低Q值。对于缓冲放大器,相位裕度才是关键,宁可稍微牺牲一点GBW也要保证稳定性。

4.3 稳定性与瞬态大信号验证

AC仿真里的相位裕度有时会有误导性,特别是反馈环路里存在多极点的情况。更可靠的办法是用stb分析。在测试bench中把反馈环路打开:INP接输入源,INN通过一个大电感和反馈电阻接地,然后在环路中用iprobe器件断开环路。选择stb分析,扫描1Hz到1GHz,直接读出环路增益和相位曲线。这个方法能给出准确的环路相位裕度,避免开环AC仿真中因负载效应产生误判。

瞬态仿真我设置了两种输入:一是小信号阶跃,幅度10mV,看建时间;二是大信号阶跃,幅度0.6V,看摆率。测量得出上升沿约1.2ns,摆率约120V/μs,这个值远高于一般SAR ADC缓冲的建立需求。瞬态仿真的另一个重要作用是检查启动过程:上电时输出会不会出现反常的过冲震荡,偏置电压建立是否平滑。我在第一版就遇到过Vbias_n在启动瞬间冲到1.8V导致输出锁定在地的情况,给偏置节点加一个2pF的旁路电容后解决。

4.4 Corner和PVT验证:别等流片才后悔

单点仿真过不代表设计过关。0.18μm工艺在tt corner下的结果和ss、ff corner下差异不小。我用ADE XL建立三个corner的仿真:tt/27°C、ss/0°C、ff/100°C,同时扫电源电压1.62V、1.8V、1.98V(±10%)。结果发现增益波动大约±4dB,GBW只在ss/0°C时降到82MHz,相位裕度最差也在55°以上。这些都是可以接受的结果,但如果相位裕度低于45°,就得考虑增加尾电流或减小负载管的gm。

个人经验:工艺角仿真必须在设计早期就建立,不要等到版图后再补。因为PVT下漏电流、阈值电压的变化对偏置电路影响非常大,早期发现可以及时调整器件尺寸,后期改版图代价很高。

5. 常见问题与排查技巧实录

5.1 常见错误速查表

这里把我在设计过程中真实遇到过的问题整理成一个表,方便大家排查:

现象可能原因解决方法
输出共模点漂移严重电流镜失配或Vbias_p/bias_n不当检查偏置电流镜各级管子的Vds,确保电流匹配
GBW明显低于理论值输入对管V_ov偏大或负载电容预估太小检查输入对管DC工作点,增大W/L提升gm
相位裕度不足输出极点频率与次主极点太近,或存在右半平面零点加大负载电容,适当减小共源共栅管gm
某管子进线性区偏置电压设置错误,Vds不够微调对应的Vbias,直到所有管子Vds>Vov
瞬态启动时输出锁定偏置电压上电顺序问题或偏置节点无电容在关键偏置节点加去耦电容
噪声过大输入对管gm不够,或尾电流源噪声贡献大增大输入对管gm,用长沟道管子做尾电流源

5.2 我踩过的几个坑

第一个坑是输入对管的V_ov取太小。初始我为了追求高gm把V_ov压到80mV,仿真看起来指标很好,但在ss工艺角下管子几乎进入亚阈值区,增益剧烈下降。后来我把V_ov调回150mV,虽然GBW下降,但整个工艺角下表现稳定多了。设计模拟电路一定记住:不要卡着某个工艺角的极限去设计,裕量一定要留足。

第二个坑是偏置电压用理想电压源模拟时一切正常,换上实际偏置电路后增益掉了很多。原因是我设计的偏置电流镜输出阻抗不够,没有给共源共栅管提供足够稳定的栅压。后来把偏置电路里的管子都改成共源共栅连接,输出阻抗上去后问题解决。这个点提醒大家:偏置电路不是附属品,它直接影响主放大器的性能。

第三个坑在版图阶段。0.18μm工艺下的匹配性要求输入对管必须采用叉指结构并添加dummy管,共源共栅管的摆放要对称。我第一次画版图时输入对管M1、M2直接各画了一个大管子,结果后仿真失调电压达到20mV,完全没法用。改成叉指结构并做了common-centroid布局后,失调降到2mV以下。版图对称性在高速高精度场景下,怎么强调都不为过。

5.3 版图阶段的几个注意点

版图不是本文的重点,但既然标题带“实战”两个字,简单提几个关键点:

  • 输入对管一定要做交叉耦合布局,加dummy管保证边缘一致
  • 电流镜管和输入对管分开打地,避免电源噪声耦合
  • 输出节点走线要短,寄生电容小,否则功耗白花了
  • 衬底接触要均匀,特别是PMOS和NMOS交接区域防止闩锁效应
  • 后仿真一定要做,寄生参数对GBW和相位裕度的影响经常让人意外

0.18μm工艺的版图规则相对宽松,但匹配性和寄生意识必须从现在就养成,这是模拟版图的基本功。

写在最后

我在实际设计中最深的体会是:折叠式共源共栅放大器的设计流程虽然套路化,但每个环节都有足够多的细节决定成败。从指标分解、尺寸计算、原理图绘制到仿真调试,每一步都要坚持“用数据说话”的思维方式。遇到问题先检查工作点,再扫参数,而不是盲目猜原因。用Cadence Virtuoso做模拟设计,最大的好处是可以在流片前把大部分问题暴露出来,但这套流程跑得熟不熟,决定了你和“把运气当实力”的设计师之间的差距。按这篇文章的步骤操作一遍,配合PDK自带的模型库,我相信你能很快调出一个各项指标都不错的运放,也为后续更复杂电路设计打下扎实基础。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/2 1:07:44

AXI Quad SPI IP核配置与调试实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/2 1:07:33

农业物联气象站全解析:从传感器选型到数据驱动种植决策

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/2 1:04:55

雷达系统全解析:从距离方程到毫米波雷达与对抗

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/2 1:04:25

AICore:Android系统级AI服务架构深度解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/2 1:03:57

股票价格预测中Transformer-LSTM-SVM混合级联模型的MATLAB实现

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华