ARTICLE DETAIL

资讯详情

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

恒定跨导轨到轨运放设计:Cadence Virtuoso仿真与3倍电流镜实现

恒定跨导轨到轨运放设计:Cadence Virtuoso仿真与3倍电流镜实现 1. 直接开干为什么要做恒定跨导轨到轨运放模拟IC设计这行干久了你会发现一个特别扎心的事实教科书里99%的运放都是“理想输入级”默认输入共模范围在电源轨之间随便折腾都没事。但你真正流片或者做项目的时候遇到单电源供电、低电压应用输入信号动不动就逼近VDD或者VSS普通差分输入级直接就瘫了。这时候轨到轨Rail-to-Rail输入级就成了绕不开的方案。那轨到轨输入级粗一听很简单PMOS差分对管负责低共模区域NMOS差分对管负责高共模区域两个对管并联全共模范围都能覆盖完事。结果一仿真发现中间共模电压区域两组管子同时导通跨导直接翻倍运放的增益带宽积、相位裕度跟着飘整个环路的稳定性全部乱套。这个“跨导随共模电压变化”的问题就是轨到轨运放设计的第一个大坑。本篇文章要解决的就是用Cadence Virtuoso从零搭一个恒定跨导Constant-gm的轨到轨运放并完整跑一遍DC、AC、瞬态仿真把输入级跨导的变化压到±5%以内。整套流程适合正在做模拟IC课程设计、研究生课题、或者刚入职做模拟IP的工程师参考全部操作基于Cadence IC 6.1.8版本工艺库是常见的TSMC 180nm混合信号工艺模型基于通用PDK整理的学习配置标题里说的“完整工艺库文件”是指在对应PDK基础上整理的电路网表和模型调用清单后面会细说。先给个完整的思路框架**输入级采用PMOSNMOS互补差分对并联结构通过电流镜比例控制将两个差分对的尾电流按照共模电平自动分配实现恒定跨导。**输出级采用折叠共源共栅结构保证增益足够高再通过米勒补偿电容保证闭环稳定性。整个设计流程包含原理图设计、符号创建、Testbench搭建、DC/AC/瞬态仿真四个环节每个环节我都会标注实际会踩到的坑和排查方法。这套方案做完之后你会得到三个非常明确的成果第一输入共模范围从0.2V到1.8V1.8V电源下全覆盖第二输入级有效跨导在±5%以内波动第三运放开环直流增益大于70dB单位增益带宽大于50MHz相位裕度大于60度。指标不算极限但非常适合用来理解恒定跨导技术的设计方法论。2. 设计思路拆解恒定跨导到底是怎么“恒”出来的2.1 互补差分输入级的跨导变化本质先回到最基本的跨导公式。对饱和区MOS管跨导 gm 2ID/(VGS - VTH)也可以写成 gm sqrt(2μCox(W/L)*ID)。对固定尺寸的管子跨导正比于尾电流的平方根。轨到轨输入级由PMOS差分对M1/M2和NMOS差分对M3/M4并联组成。共模电压接近VSS时PMOS对管的 |VGS| 足够大处于饱和区正常工作NMOS对管截止共模电压接近VDD时NMOS对管正常工作PMOS对管截止而共模电压在中间区域大致在 VDD/2 附近时两组管子同时导通。如果两组差分对使用相同的尾电流那么中间区域的输入级总跨导就是两端区域的两倍。因为 gm_total gm_p gm_n而两端区域 gm_total ≈ gm_p或gm_n中间区域≈ 2*gm。这个2倍的变化直接导致单位增益带宽翻倍在负反馈闭环下相位裕度可能从65度掉到30度输出很容易出现振铃甚至震荡。注意这个2倍变化不是“仿出来的误差”是物理结构自带的。任何宣称“轨到轨输入级就是两组差分对并联”的资料都默认做了跨导恒定化处理不然流片出来基本就是自激振荡器。2.2 恒定跨导控制的核心思想3倍电流镜法恒定跨导实现方案主流有三种3倍电流镜法、反相器求和法、电平移位法。这里重点讲最经典、也最适合学习理解的3倍电流镜法。3倍电流镜法的核心逻辑是让PMOS差分对和NMOS差分对的尾电流不是固定值而是根据共模输入电压动态调整。具体做法是当共模电平在中间区域时两组差分对同时工作将每一组的尾电流都降为正常值的1/4。因为 gm ∝ √ID所以每组差分对的跨导降为原来的 1/2两组加起来 2 * (1/2) 1正好等于单组正常工作时的跨导。当共模电平靠近某一边时只有一组差分对工作这一组保持全电流跨导为基准值 gm0。这样不管共模在哪个位置输入级总跨导始终≈ gm0实现恒定跨导。那么问题来了如何知道“现在共模在中间区域”这就需要共模电平检测电路。简单做法是用一个电阻分压器将共模电压分出一个阈值电平再用比较器判断当前共模是“偏高”“偏低”还是“中间”然后控制电流镜的切换倍数。更常用的做法是基于“输入对管的源极电压变化”来检测因为NMOS对管源极电压会跟着共模走而PMOS对管源极电压会跟着VDD-共模走交叉耦合就能生成控制信号。2.3 为什么选择折叠共源共栅作为输出级输入级解决了跨导恒定问题接下来要把差分信号转成单端输出并实现高增益。增益级我选了折叠共源共栅Folded Cascode结构理由很直接轨到轨输入级的两组差分对输出电流需要合并共源共栅结构是天然的电流合并点。折叠结构可以将信号电流从PMOS输入对“折叠”到NMOS共源共栅支路共模电平适配更方便。单级增益就能做到60~80dB不需要额外加第二级增益级省了频率补偿的麻烦。输出摆幅方面折叠共源共栅结构在1.8V电源下输出摆幅大概能达到0.3V到1.5V对于3.3V/1.8V系统已经够用。如果想要更大的输出摆幅可以在后面再推一个共源极输出级但那个要另外做米勒补偿复杂度上了一个台阶。对于学习恒定跨导这个核心课题来说单级折叠共源共栅是最优的复杂度/性能平衡点。2.4 整体架构框图文字版整个运放的信号链路如下输入信号VIN、VIN-→ PMOS差分对M1/M2和NMOS差分对M3/M4并联 → 两路差分电流汇入折叠共源共栅负载M5~M10 → 单端输出VOUT → 米勒补偿电容CC连接输出与中间节点。恒定跨导控制模块3倍电流镜控制电路 → 输出两个控制信号Ictrl_p和Ictrl_n → 分别控制PMOS差分对和NMOS差分对的尾电流源。这个架构在Cadence里落地的时候电路一共大概12~15个管子规模很小非常适合手把手逐级仿真验证。3. 原理图搭建Cadence Virtuoso环境下的完整实操3.1 工艺库文件准备与配置先说标题里提到的“完整工艺库文件”。实际工程中工艺库由Foundry提供的PDKProcess Design Kit统一管理里面包含器件模型、参数规则、版图文件等。本文场景下按常见的TSMC 180nm mixed-signal工艺参数整理了一套学习用的模型配置具体包括模型文件tsmc18_2d5V_mixed_signal.mdl包含所有NMOS/PMOS管、电阻、电容的模型参数器件库analogLibCadence自带的理想器件库中的nmos4、pmos4、res、cap等符号工艺角定义tt典型角、ss慢慢角、ff快快角对应的模型组名分别为tt_nmos、ss_nmos等在Virtuoso中配置方法如下打开CIWCommand Interpreter Window点击Tools → Technology File Manager → Attach选择你的设计库然后附加到tsmc18_2d5V_mixed_signal工艺库上。这一步如果漏了原理图里所有器件都会显示“无法映射到工艺层”直接没法做后续的版图工作。接着在仿真器设置里一定要确认模型库路径。在ADE L/ADE XL的Setup → Model Libraries中加载模型文件并确保Section选择的是tt。这里有个原厂文档不会提的坑如果模型文件路径包含中文或者空格Spectre仿真器偶尔会静默加载失败报错信息还特别隐晦比如Fatal error found by spectre during circuit read-in所以建议所有路径全部用英文小写字母。3.2 电路原理图具体实现在Virtuoso里新建CellviewLibrary选你的设计库Cell名建议用r2r_opampType选schematic。进来之后从analogLib调器件输入级器件清单M1/M2PMOS差分对W20uL0.5uFinger4M3/M4NMOS差分对W10uL0.5uFinger4M5/M6PMOS尾电流源W40uL1uM7/M8NMOS尾电流源W20uL1u折叠共源共栅输出级M9/M10NMOS共源共栅管W10uL0.5uM11/M12PMOS共源共栅管W20uL0.5uM13/M14NMOS尾电流沉W20uL1uM15/M16PMOS尾电流源W40uL1u恒定跨导控制电路3倍电流镜核心M17/M18电流镜控制管负责将PMOS对管尾电流切换为 1/4 或全电流M19/M20电流镜控制管负责NMOS对管尾电流切换连线的时候注意几个关键节点输入信号VINP接到M1和M3的栅极VINN接到M2和M4的栅极M1/M2的漏极交叉连接到折叠节点M3/M4的漏极也交叉连接到同一个折叠节点。所谓“交叉”就是M1的漏接M2的负载方向、M2的漏接M1的负载方向这样才能形成差分对的负反馈关系。尺寸设定的考量PMOS差分对宽长比取NMOS的两倍是因为PMOS的迁移率大约是NMOS的一半用两倍宽长比来匹配两者的跨导。这个匹配很重要如果PMOS对和NMOS对的单组跨导不一致那么即使电流切换比例对了恒定跨导的“恒定”也会有误差。3.3 创建符号Symbol原理图画完先别急着仿给运放创建一个Symbol后面Testbench直接调用干净利落。在原理图界面按Create → Cellview → From Cellview工具会自动生成一个默认符号引脚是VINP、VINN、VOUT、VDD、VSS、IBIAS。默认符号的引脚位置可能比较乱可以手动调整一下布局把输入放左边、输出放右边、电源放上、地放下这样Testbench截图也好看后面报告里用得上。注意Symbol里的引脚名字要跟原理图里的Pin名字完全一致包括大小写。Virtuoso不区分大小写其实但建议统一小写避免后面ADE里写表达式时出现引用错误。3.4 管脚核对与DC工作点快检搭建完原理图先做一次“静态检查”不急着加信号源。新建一个简单的TestbenchVDD接1.8V直流源VSS接地VINP和VINN都接0.9V中间共模IBIAS接20uA理想电流源。跑一次DC仿真然后在ADE里用Results → Print → DC Operating Points查看每个管子的工作状态。关键检查项所有管子必须工作在饱和区region显示2即饱和M1/M2的VDS与VDSAT的差值建议大于50mV留足余量尾电流源M5/M6实际电流是不是接近设定值输出节点电压是不是在VDD/2附近1.8V电源下大概0.8~1.0V都算正常如果发现某个管子在线性区或者截止区先别急着改尺寸优先检查偏置电压。最常见的问题是尾电流源管的栅极偏置没有正确建立——毕竟折叠共源共栅结构的偏置电路需要专门的偏置电压这个我们后续会讲到。4. 恒定跨导控制电路3倍电流镜的原理图实现与调参4.1 电流镜比例的精确定义3倍电流镜控制电路的核心是两组电流镜一组控制PMOS差分对尾电流一组控制NMOS差分对尾电流。以PMOS差分对为例当共模电压偏VSS方向PMOS对主导工作时控制信号让PMOS尾电流源M5的电流等于基准电流IBIASPMOS对以满电流工作跨导为 gm0。当共模电压偏VDD方向NMOS对主导工作时控制信号让M5的电流降为IBIAS/4即使PMOS对也导通它的跨导也只有 gm0/2不会让总跨导翻倍。中间区域两组电流同时控制在IBIAS/4各贡献 gm0/2总和 gm0。“1/4电流”的实现就是电流镜比例。简单做法是设计一个可控电流镜其中并联了4个相同尺寸的管子开关控制其中几个管子接入。如果4个管子都接入电流是满值如果只接入1个管子电流就是1/4这时跨导就是 sqrt(1/4) 1/2 倍。这个逻辑干净利落不依赖任何比较器精度。4.2 共模电平检测实现要判断当前共模处于哪个区域最直接的办法是把输入共模电平跟一个参考电平比较。工程上我推荐用中值比较结构用两个电阻串联在VDD和VSS之间分压得到VDD/2的参考电压输入共模电平经过一个源极跟随器缓冲后与VDD/2比较比较结果经过一个迟滞比较器避免边界抖动输出控制信号这里有个比较麻烦的点传统的比较器本身也是运放你还要给比较器做偏置电路规模就上去了。学习阶段可以用一个简单的电流比较方案替代让输入共模电压直接驱动一对交叉耦合的差分对利用它们的尾电流总和来判断工作区域。这个方案电路上更简洁但对器件匹配要求高初学者如果原理没吃透建议还是用电阻分压简单比较器的方案更稳妥。我在实际调的时候碰到的第一个头疼问题就是电阻分压器中值点是固定在VDD/2但是NMOS和PMOS差分对的切换点实际上并不完全在VDD/2。因为NMOS对需要 VGS_N VTH_N 才能导通PMOS对需要 |VGS_P| |VTH_P| 才能导通两个阈值的绝对值不一定相等。如果阈值不匹配会出现一个“死区”在这个区域里两组管子都截止或者都弱导通跨导反而会往下掉。解决办法也不复杂分压电阻的比值不完全取1:1而是根据工艺里NMOS和PMOS阈值电压的比值做一个预偏置。TSMC 180nm工艺下NMOS阈值约0.5VPMOS阈值约-0.5V对称性很好直接用1:1分压问题不大。如果是更先进工艺或者阈值不对称的工艺就需要在分压器上串联一个二极管连接的MOS管做电平搬移。4.3 3倍电流镜控制和核心管尺寸调试电流镜控制管M17/M18的尺寸跟尾电流源管M5是严格的比例关系。以PMOS尾电流源M5为例M5的宽长比设为 (W/L)_M5 20/1 20M17/M18作为并联控制管单个的宽长比设为 5/1 5当开关只接M17时电流为基准的 1/4对应关系是 5/(5555) 1/4。4个控制管的尺寸必须严格一致否则电流比例不对称中间区域跨导会偏移。调参过程中要重点验证的是控制管切换时尾电流的建立时间。如果用理想开关Virtuoso里的switch器件仿真波形会很漂亮。但如果后面你打算用MOS管做开关就要注意开关管的导通电阻会给电流镜带来失配尤其是低压工艺下开关管的VDS很小线性区导通电阻可能高达几千欧会让电流比例偏离1/4。实操心得我在实际项目中习惯在控制开关管旁边并联一个小尺寸的补偿管用来吸收开关管的沟道电荷注入效应。虽然这个效应在DC仿真里看不出来但在瞬态仿真里会导致切换瞬间的毛刺直接影响运放的建立精度。5. 仿真验证实战从零搭出完整的恒定跨导测试环境5.1 Testbench结构和激励设置在Virtuoso里新建一个Cell叫tb_r2r_opamp从库里调出刚才创建的r2r_opamp符号。Testbench电路如下直流偏置VDD 1.8V直流源vdcVSS 0V直接接地或接0V直流源IBIAS 20uA理想电流源idcVINP、VINN分别接需要扫描的共模电压源测试配置测跨导VINP接vdc电压源VINN接同样的vdc电压源但VINP额外串联一个1V的交流小信号源vsin或者vac幅值1V这样AC仿真时输入差分信号为1V输出电流直接换算成跨导。测开环增益VINN接共模电平VINP通过一个极大电感比如1GH接共模电平同时输出VOUT通过一个极大电容比如1GF反馈到VINN的共模节点。这是标准的开环AC测试接法用大电感切断直流反馈用大电容提供交流通路。AC仿真设置在ADE L里选择Spectre仿真器Analysis选ac扫描频率从1Hz到1GHz扫描类型Logarithmic点数50。同时加一个dc仿真作为工作点初始化。5.2 共模扫描下的跨导变化曲线恒定跨导的核心验证就是看“输入共模电压从0V扫到1.8V时输入级总跨导到底变不变”。这个仿真在ADE里通过Parametric Sweep实现把VCM设成一个设计变量从0.1V扫到1.7V步长0.1V共17个点。每个点都跑一次AC仿真然后分别读出低频跨导值。怎么读跨导在ADE里用Results → Direct Plot → Main Form选ACFunction选Gm输入选VINP输出选运放的输入电流需要Testbench里加一个0V电压源VPROBE串联在VinP端测流过它的电流即可。直接把17条Gm曲线叠在一起看理想情况17条曲线在低频段完全重合没有高度差实际情况低频段会有±5%以内的波动这个范围是可以接受的如果中间区域跨导比两端高很多超过30%说明3倍电流镜控制没生效优先检查控制信号是否准确切换有一个更直观的观测方法在AC结果里取1kHz处的跨导幅值用Calculator算出每个共模点的值然后画成“跨导-共模电压”曲线。在Cadence里可以用Results → Direct Plot → Main Form把每个扫描点的值都记录下来然后导出到Ocean脚本或者直接在Calculator里用average函数统计波动范围。我一般直接在Calc里写表达式gain(dB(VF(/VOUT)), 1k)然后做扫参最后得到一张类似于“盆底曲线”的图中间平、两边略微上翘那就是对的设计。5.3 闭环跟随器仿真增益带宽积和相位裕度跨导恒定只是手段最终要验证的是整个运放在闭环下的性能。经典做法是接成单位增益跟随器VINP接输入信号源大信号正弦波或小信号AC源VOUT直接连到VINN单位负反馈VDD1.8VVSS0V。AC仿真输入信号源设为vsinDC电平0.9VAC幅值1V。跑AC分析直接看VOUT的幅频曲线和相频曲线直流增益理论上约等于0dB跟随器这个不稀奇0dB交叉点频率就是单位增益带宽Unity-Gain Bandwidth, UGB要求50MHz在0dB交叉点处的相位要求大于60度也就是相位裕度 60度如果相位裕度不够优先调米勒补偿电容CC。CC从500fF开始试如果相位裕度只有45度左右加大到1pF一般能补到60度以上。但补偿电容不是越大越好——越大单位增益带宽越低如果UGB掉到50MHz以下就要回头看输入级跨导是不是偏小了适当增大尾电流或者管子宽长比。瞬态仿真验证大信号行为瞬态仿真主要看两个场景第一个场景是阶跃响应。输入接一个从0.5V到1.3V的阶跃信号幅值0.8V上升时间1ns跑200ns瞬态。看输出跟随情况有无明显过冲过冲超过20%说明相位裕度太低有无振铃振铃时间超过50ns说明补偿不够有无压摆率不足导致的“S型”上升如果是说明尾电流不够大需要增大偏置电流或者减小补偿电容第二个场景是轨到轨共模范围内的正弦跟随。输入接一个0.2V~1.6V的正弦波频率1MHz看输出是否完好跟随。这一步能暴露输入级切换点附近的交越失真——如果3倍电流镜控制有延迟或者滞回不对称波形会在中间切换点出现“台阶”或者“毛刺”。我在实际测试中遇到过一个大坑瞬态仿真怎么跑都不收敛报Convergence problem in transient analysis。排查了很久发现是因为Testbench里用了理想电流源直接给栅极偏置但该支路没有直流通路到地导致节点悬空。解决办法是在偏置节点对地接一个1GΩ大电阻既不影响正常工作点又能给Spectre一个明确的DC通路。5.4 工艺角和温度扫描PVT Corner恒定跨导最大的敌人是工艺偏差。如果你已经按上面的流程调好了tt角典型工艺角和常温25°C下的性能建议顺手做一次PVT扫描三个工艺角tt、ss、ff三个温度-40°C、25°C、125°C三个电源电压1.62V、1.8V、1.98V±10%一共27个组合。在ADE XL里可以很方便地建立Corner列表一次性跑完。恒定跨导电路的优点在这里就体现出来了因为跨导被控制在固定值附近即使工艺角变了只要电流镜的比例关系不破跨导波动依然能保持在±10%以内。相比之下非恒定跨导的轨到轨运放在ss角低温下跨导波动可能飙到±40%这个差距就是“能流片”和“一仿真就废”的分水岭。如果PVT扫描发现某个corner下性能严重恶化优先检查每个corner下管子的饱和状态。低温ss角下阈值电压偏高VDS余量变小共源共栅管容易掉出饱和区。解决办法通常是增加共源共栅管的宽长比、降低过驱动电压同时稍微调大尾电流源管的尺寸。6. 仿真发散与不收敛问题的排查技巧6.1 DC不收敛的常见原因Cadence里做仿真最让人头皮发麻的就是仿真器报个不停最常见的三大类问题节点悬空Floating Node。无论DC还是瞬态Spectre都会先算DC工作点。如果电路里某个节点没有直流通路只接了电容、或者直流通路被理想开关断开DC求解就会失败。排查方法用Results → Print → DC Node Voltages看有没有节点电压显示NaN或0V异常。给悬空节点挂大电阻1GΩ~1TΩ是最快的修复方法。初值设置不合理。有些电路存在多个稳态解比如锁存器结构、正反馈环路DC求解会陷入迭代不收敛。解决办法在直流源上设置DC voltage初值或者在Simulation → Convergence Aids里勾选Node Set给关键节点比如尾电流源栅极、输出节点设置一个期望的初始电压。模型文件加载失败。Spectre报Fatal error found by spectre这种基本上是模型文件没有正确加载。请仔细检查Setup → Model Libraries里的路径、Section名、以及工艺库的display和layer映射。还有一个经常被忽略的坑如果原理图里的器件引用了库里不存在的Cell名比如工艺库升级后管脚名字变了仿真器会直接报错。6.2 瞬态不收敛的解决套路瞬态仿真不收敛比DC更烦因为它还涉及时间步长的自适应控制。我总结的排查顺序先跑DC看工作点是否正常。如果DC都不收敛瞬态永远跑不了。减小最大步长。在ADE里把瞬态仿真的maxstep从默认值改到仿真总时长的1/1000左右。例如跑1us瞬态maxstep设1ns。代价是仿真时间变长但毛病通常就出在过大的时间步长跳过了关键瞬态事件。启用gmin步进。Spectre的gmin stepping是DC收敛的强力工具在Simulation → Options → Analog里把gmin从1e-12调到1e-9让它自动步进。这个选项能解决绝大多数“工作点死活找不着”的问题。检查是否有理想开关或突变信号。如果激励源里有上升沿为0的阶跃信号理想跳变Spectre会很痛苦。把信号的上升/下降时间设为1ps~1ns之间的有限值能显著改善收敛性。检查有无高速振荡。如果电路本身在振荡瞬态仿真自然“无法收敛”因为每个周期都要求更细的时间步长。先跑一个小时间窗口如10ns看看波形如果看到高频等幅振荡说明环路稳定性有问题这是设计问题不是仿真器问题。6.3 从“仿真能跑”到“仿真可信”的验证思路仿真跑通不意味着仿真结果是对的。我踩过很多次坑总结出三个“可信度自检”习惯用功耗校验工作点。DC仿真结束后打印VDD源上的电流跟理论估算值对比。如果理论算尾电流总共60uA仿真却显示600uA说明某个管子工作点完全偏了先回头查原理图连线而不是继续看性能波形。跨导值回代公式验证。如果仿真结果显示输入级跨导是2mS那拿公式回代一遍gm sqrt(2μCox*(W/L)ID)。用tsmc180的典型参数μCox约200uA/V²W/L40ID10uA算出来gm sqrt(2200u4010u) ≈ 0.4mS。如果仿真结果跟手算差了5倍以上要么是尺寸看错了要么是电流分配没按预期走。这里也解释了为什么3倍电流镜要用1/4电流的数学关系——因为平方根关系把1/4变成1/2刚好跟两组差分对求和抵消这是“设计数学”的美妙之处。AC和瞬态结果互相印证。AC仿真说单位增益带宽50MHz瞬态阶跃响应的上升时间理论上应该约等于0.35/50MHz 7ns一阶近似。如果瞬态实测上升时间是70ns说明AC测试环境接错了比如反馈电容没接对或者AC分析时工作点根本没建对。7. 完整工艺库文件说明与工程文件整理7.1 精简版工艺库文件清单标题里承诺了“附完整工艺库文件”这里说明一下文件内容清单和整理方法。严格意义上讲Foundry的PDK文件是有知识产权保护的原厂文件不能直接二次分发。但作为学习用途可以基于公开的PDK数据整理出一套“模型调用清单”和“仿真环境配置文件”配合你手头的PDK直接使用r2r_opamp/schematic.va—— 运放晶体管级网表tb_r2r_opamp/schematic.va—— Testbench网表model_lib/tsmc18_section.tt.scs—— tt工艺角模型视图model_lib/tsmc18_section.ff.scs—— ff工艺角模型视图model_lib/tsmc18_section.ss.scs—— ss工艺角模型视图ocean_scripts/dc_sweep.ocn—— 共模扫描自动仿真脚本ocean_scripts/ac_analysis.ocn—— AC分析脚本ocean_scripts/tran_analysis.ocn—— 瞬态分析脚本7.2 如何用Ocean脚本快速跑批量仿真图形界面点按钮很方便但当你需要扫17个共模点、跑27组PVT组合时用手点会点到怀疑人生。这时候请用Ocean脚本。一个最简DC扫描脚本内容如下; dc_sweep.ocn ; 共模电压扫描脚本 simulator( spectre ) design( ./tb_r2r_opamp/schematic.va ) analysis( dc ?param vcm ?start 0.1 ?stop 1.7 ?step 0.1 ) desVar( vcm 0.9 ) desVar( ibias 20u ) temp( 25 ) run() selectResult( dc ) print( v(/VOUT) )在终端里执行ocean –restore dc_sweep.ocn脚本里的?param vcm定义了扫描变量desVar设置了默认值。跑完之后数据自动存在psf目录下可以直接在Virtuoso的Results Browser里查看波形。对于刚开始接触脚本的同学我不建议从零开始手写。最省力的办法是先在ADE L图形界面里跑通一次仿真然后Session → Save ScriptCadence会自动生成对应的Ocean脚本你再在这个基础上改参数即可。稍微学一下ocean脚本的语法后面做corner扫描能节省90%的重复劳动。8. 踩坑总结与个人经验做恒定跨导轨到轨运放这个项目前前后后我迭代了大约两周第一版电路全仿真下来跨导波动达到±18%怎么调都压不进±5%。后来定位到问题出在电流镜开关管的尺寸上控制管从满电流切换成1/4电流时开关管的导通电阻影响了电流分配精度。把开关管的宽长比加到了控制管的3倍以上才把切换点附近的毛刺压下去。第二个大坑是偏置电路的“冷启动”问题。用理想电流源自偏置的电路在DC仿真里一切正常但上了PVT扫描后在ss角125°C下直接不收敛。原因是自偏置电路存在两个稳态一个是正常工作点一个是零电流状态所有管子都截止。Spectre从零电流状态启动时如果没有初始条件会一直卡在零电流态导致DC求解器找不到正解。解决办法是在尾电流源的栅极加一个ic初值语句强制它从期望的工作点开始迭代。还有一个细节容易被忽略频率补偿电容的接法。米勒补偿电容CC应该接在输出节点和高阻节点折叠共源共栅的输出端之间但有些初学者会把CC直接接在输出和地之间那样就成了负载电容不仅没起到米勒效应倍增的效果还会把单位增益带宽往下拉。我当时验证相位裕度不达标排查了半天最后发现就是CC接地接错了。如果你准备照着这篇博文做一遍我给你三条建议第一务必先理解3倍电流镜的数学关系再做仿真不要先调管子尺寸再看结果。方向对了参数微调才有意义。第二仿真结果一定要回代手算验证。模拟IC设计里“仿真结果对但物理上不合理”的情况太常见了手算是唯一能揪出隐蔽错误的武器。第三把每次调参前后的仿真曲线保存成不同文件名写清楚备注。折腾过之后你会发现最好用的工具不是Cadence而是你自己维护的一份调参记录表。记录内容至少包括共模电压、跨导值、相位裕度、每个关键管子的宽长比和偏置电流。有了这份记录复现和调试都比凭记忆瞎试快十倍。
返回列表