ARTICLE DETAIL

资讯详情

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

Cadence Virtuoso ADE L六种仿真从入门到精通:DC、AC、Tran、Noise、DC Sweep、Parametric实操指南

Cadence Virtuoso ADE L六种仿真从入门到精通:DC、AC、Tran、Noise、DC Sweep、Parametric实操指南 1. 为什么我劝你先把ADE L的六种仿真吃透刚接触Cadence Virtuoso那会儿我最怕的就是仿真。原理图画完了器件参数也填了结果一打开ADE L满屏的选项直接把人看懵。DC、AC、Tran、Noise、DC Sweep、Parametric——六个仿真类型摆在那里每个里面还有一堆设置项点错了要么跑不出来要么跑出来的结果根本不对。后来带新人发现大家卡的地方几乎一模一样不是不会画原理图而是不知道怎么把仿真设对。这篇内容就是把我这些年用ADE L做仿真的经验整理出来从DC到Noise六种常用仿真一次讲清楚。不管你是刚学Virtuoso的在校学生还是转岗做模拟IC的工程师只要跟着走一遍至少能少踩我当年踩过的坑。核心关键词就几个Cadence、Virtuoso、ADE L、DC、Noise围绕这几个点展开把每种仿真的设置逻辑、参数含义、常见报错和排查方法都讲透。先说清楚一件事ADE L是Virtuoso里最基础的仿真环境虽然现在很多人用ADE XL或者Maestro但ADE L是根。你把ADE L玩明白了换到任何上层工具都是平移。而且很多老工艺库、老项目跑仿真还是得回到ADE L。所以别急着跳过它。下面按六个仿真类型逐个拆。每个都会讲清楚三件事这个仿真到底在算什么、关键参数怎么设、跑完之后怎么看结果。中间会穿插我实际踩过的坑和排查思路这些是文档里不会写的。2. 六种仿真类型逐个拆解与实操设置2.1 DC分析静态工作点到底怎么看DC分析是六种仿真里最基础也最重要的一个。它算的是电路在直流条件下的静态工作点——每个节点的电压、每条支路的电流。听起来简单但实际用起来很多人第一步就卡住了DC分析跑完结果在哪看在ADE L里DC分析的结果默认不会自动画图而是存在一个叫DC Operating Point的地方。你需要点Results → Print → DC Operating Point然后选你要看的节点或器件。或者更直接的办法在原理图上点中某个节点按快捷键p它会弹出那个节点的所有直流参数。设置上DC分析本身没什么好调的主要注意两个地方Save DC Operating Point这个选项一定要勾上否则跑完看不到工作点。位置在ADE L的Outputs → Save All → DC Operating Point。Design Variables如果你的电路里有变量比如W、L、R的值确保这些变量在ADE L里已经定义好了。没定义的话仿真会直接报undefined variable。我见过最常见的问题是DC跑完了但某个MOS管显示在截止区或者线性区不是饱和区。这时候别急着改电路先检查两件事一是电源电压设对没有二是偏置电压是不是被其他支路拉偏了。我一般会先跑一遍DC把所有关键节点的电压列出来对着手算值一个一个比。差得不多就调偏置差得离谱就回去查原理图连接。提示DC分析跑之前建议先把所有器件的初始条件设一下。特别是电容、电感这些储能元件不设初始条件的话DC分析可能会报no convergence。2.2 DC Sweep扫描变量找最优工作点DC Sweep是在DC分析基础上加了一个扫描变量。比如你想看某个偏置电压从0V扫到1.8V时输出电流怎么变就用这个。设置上比DC多了一个Primary Sweep选项里面选你要扫的变量、起始值、终止值和步长。这里有个经验步长别设太小。我见过有人扫0到1.8V步长设0.001V结果跑了半小时还没完。一般先粗扫步长0.1V或者0.05V找到大致区间后再细扫。细扫的时候步长可以到0.01V甚至0.001V但只扫你关心的那一段。扫描变量可以是电压源、电流源也可以是设计变量。如果是扫描设计变量比如MOS管的W那就在Design Variables里选。扫描结果会自动画成曲线横轴是扫描变量纵轴是你选的输出。常见问题扫描跑完了曲线是断的或者跳变的。这通常是因为仿真器在某些点上不收敛。解决办法有两个一是把步长调大一点让仿真器跳过那些难收敛的点二是在ADE L的Simulation → Convergence Aids里把reltol和abstol放宽一点。但放宽精度要谨慎别放太宽否则结果不可信。2.3 AC分析频率响应和稳定性怎么看AC分析算的是小信号频率响应。它会在你设定的频率范围内对电路做小信号线性化然后算增益和相位随频率的变化。这个分析主要用来看带宽、相位裕度、增益裕度这些稳定性指标。设置上AC分析需要指定频率范围。一般从1Hz扫到1GHz或者更高看你的电路工作频率。扫描类型选Logarithmic因为频率响应通常看的是对数坐标。每十倍频程的点数Points Per Decade一般设10到100设太少曲线不平滑设太多跑得慢。AC分析的关键是交流源。你需要在电路里放一个AC源设好它的AC幅度一般设1V然后把这个源作为输入。ADE L里在Inputs → AC里选这个源。没设AC源的话AC分析跑出来全是零。跑完AC之后看两个东西增益曲线和相位曲线。增益曲线看-3dB带宽相位曲线看相位裕度。相位裕度一般要求大于45度最好大于60度。如果相位裕度不够电路可能会振荡。我踩过的坑AC分析跑出来增益是负的。后来发现是AC源的幅度设成了0或者输入节点选错了。还有一种情况是电路里某个节点没有直流通路导致小信号分析时那个节点浮空结果完全不对。这时候需要在那个节点加一个大电阻到地给它一个直流通路。2.4 Tran分析瞬态仿真不收敛怎么办Tran分析是瞬态仿真算的是电路在时域上的响应。比如你给一个阶跃信号看输出怎么变化。这个分析主要用来看建立时间、过冲、振铃这些时域指标。设置上Tran分析需要指定仿真时间。一般设成你关心的时间的2到3倍。比如你看1us的建立过程就设3us。步长可以设成自动也可以手动指定最大步长。手动指定的话一般设成最小时间常数的1/10到1/20。Tran分析最容易出的问题就是不收敛。报错信息通常是Timestep too small或者Convergence failure。我总结了几种常见原因和解决办法报错信息可能原因解决办法Timestep too small电路里有快速变化的节点减小最大步长或者加snubber电路Convergence failure初始条件不对设初始条件或者用nodesetSingular matrix节点浮空加大电阻到地Overflow数值溢出检查电源电压和器件参数还有一个经验Tran分析跑之前先跑一遍DC确保静态工作点是对的。DC都不对Tran肯定跑不对。另外如果电路里有振荡器或者正反馈Tran分析可能会一直振荡不收敛这时候需要设初始条件或者用ic语句。2.5 Noise分析噪声仿真到底在算什么Noise分析算的是电路的噪声性能。它会算每个器件对输出噪声的贡献然后给出等效输入噪声和输出噪声。这个分析主要用来看信噪比、噪声系数这些指标。设置上Noise分析需要指定输入源和输出节点。输入源就是你电路里的信号源输出节点就是你要看噪声的那个节点。频率范围一般和AC分析一样从低频扫到高频。输出类型选Output Noise或者Input Referred Noise看你要什么。Noise分析的结果一般看两条曲线输出噪声谱密度和等效输入噪声谱密度。单位是V/√Hz或者V²/Hz。看的时候注意噪声是功率量所以是平方关系。比如噪声从10nV/√Hz降到5nV/√Hz功率降了4倍。我踩过的坑Noise分析跑出来噪声特别大后来发现是某个电阻的热噪声没算对。检查后发现是电阻的阻值设错了多了一个零。所以跑Noise之前一定要把电路里所有电阻、电容的值核对一遍。另外Noise分析对仿真精度比较敏感reltol设太宽的话噪声结果会偏大。2.6 Parametric分析批量扫描参数找最优解Parametric分析是在其他分析基础上加了一个参数扫描。比如你想看MOS管的W从1u到10u变化时增益怎么变就用这个。设置上Parametric分析需要指定扫描变量、起始值、终止值和步长然后选一个基础分析比如AC或者DC作为子分析。这个分析的特点是它会自动跑多次仿真每次改一个参数值然后把结果画在一起。所以跑起来比较慢特别是扫描范围大的时候。我一般先用粗扫找到大致区间再用细扫精确定位。常见问题Parametric分析跑完了但曲线只有一条。这通常是因为扫描变量没设对或者子分析没选。检查一下Parametric的设置确保扫描变量在Design Variables里已经定义并且子分析选的是你想要的。提示Parametric分析可以和DC Sweep叠加使用但一般不建议因为跑起来太慢。如果非要叠加先把其中一个的步长设大一点。3. 从零跑通一个完整仿真的实操流程3.1 环境准备与原理图检查在开始仿真之前先把环境准备好。打开Virtuoso新建一个库把工艺库挂上。工艺库一般是PDK提供的里面有器件模型和仿真模型。挂库的时候注意不同工艺的库名可能不一样但一般都有tt、ff、ss这些工艺角。先选tt跑通了再换其他角。原理图画完之后别急着开ADE L。先做三件事检查连接用Check and Save确保没有悬空节点、没有短路。检查器件参数特别是MOS管的W、L、M电阻的阻值电容的容值。我一般会把这些参数列个表对着手算值一个一个核。检查电源和地确保电源和地都接对了电源电压设对了。这三步做完再打开ADE L。ADE L的启动方式在原理图窗口点Launch → ADE L或者直接在CIW里输ade。3.2 建立仿真环境与变量定义ADE L打开之后第一件事是Setup → Design确认设计库和单元选对了。然后Setup → Model Libraries把工艺库的模型文件加进来。模型文件一般是.scs或者.lib格式里面定义了器件的仿真模型。接下来定义设计变量。在ADE L的Variables → Copy From Cellview可以把原理图里的变量自动导进来。导进来之后给每个变量设一个初始值。比如W设1uL设0.18uR设1k。这些值不用太精确先跑通再说。然后设输出。在Outputs → To Be Plotted → Select On Schematic然后在原理图上点你要看的节点。比如你要看输出节点的电压就点那个节点。选完之后ADE L会自动在Outputs里加一条。注意输出节点选的时候尽量选你真正关心的节点。选太多的话跑完看结果会很乱。我一般只选3到5个关键节点。3.3 六种仿真的参数设置与运行环境建好之后开始设仿真。在ADE L的Analyses → Choose里面列出了所有可用的仿真类型。选一个然后设参数。以AC分析为例选ac设频率范围1到1G扫描类型LogarithmicPoints Per Decade设20。然后点OK回到ADE L主界面。这时候Analyses里会多一条ac。点那个绿色的运行按钮仿真就开始跑了。跑完之后结果会自动弹出来。如果没有自动弹点Results → Direct Plot → Main Form然后选你要看的曲线。AC分析一般看增益和相位选dB20和Phase。其他仿真的设置类似只是参数不同。DC分析不用设频率但要勾Save DC Operating Point。Tran分析要设仿真时间。Noise分析要设输入源和输出节点。Parametric分析要设扫描变量。3.4 结果查看与数据导出仿真跑完之后结果查看是个技术活。ADE L的结果窗口里你可以直接看曲线也可以把数据导出来。导出的方式在结果窗口点File → Export → CSV然后选你要导的曲线。导出来的CSV可以用Excel或者Python处理。我一般会把关键数据导出来用Python画图。因为ADE L自带的画图工具功能有限Python的matplotlib更灵活。比如你要把不同工艺角的结果画在一起对比用Python就很方便。导出的时候注意ADE L导出的CSV有时候会有表头行用Python读的时候要跳过。另外导出的数据点可能很多如果只是看趋势可以先降采样。3.5 仿真日志与错误定位仿真跑失败的时候别慌。先看仿真日志。日志在ADE L的Simulation → Output Log或者直接在CIW里看。日志里会告诉你哪一步出错了报什么错。常见的错误和定位方法undefined variable变量没定义。检查Design Variables确保所有变量都有值。model not found模型库没挂对。检查Model Libraries确保路径和文件名都对。convergence failure不收敛。先跑DC看静态工作点对不对。不对的话调偏置。singular matrix矩阵奇异。通常是节点浮空加个大电阻到地。定位错误的时候我一般用二分法先把电路分成两半分别跑看哪一半出问题。找到出问题的那一半再继续分。这样比从头查到尾快得多。4. 常见问题与排查技巧实录4.1 仿真不收敛的六种排查思路仿真不收敛是新手最常遇到的问题。我总结了六种排查思路按优先级排先跑DCDC都跑不通其他仿真肯定跑不通。DC跑通了再看其他。检查初始条件电容、电感这些储能元件不设初始条件的话仿真器不知道从哪开始算。设个合理的初始值。加nodeset在难收敛的节点上加nodeset语句给仿真器一个初始猜测值。放宽精度在Simulation → Convergence Aids里把reltol从1e-3放到1e-2abstol从1e-12放到1e-9。但别放太宽。减小步长Tran分析里把最大步长减小。步长太大仿真器可能跳过快速变化的区域。加snubber在快速变化的节点上加RC snubber吸收高频振荡。这六种方法不是孤立的可以组合使用。我一般先用1和2不行再用3和4再不行用5和6。4.2 结果不对的五个检查点仿真跑通了但结果不对这种情况更让人头疼。我一般按五个检查点来查检查电源和地电源电压对不对地接没接。我见过有人把电源和地接反了结果跑出来全是负的。检查器件参数W、L、R、C的值对不对。特别是单位1u和1m差1000倍。检查模型库工艺角选对没有。tt、ff、ss的结果差别很大。检查输出节点选对没有。选错节点的话看的是别的地方的信号。检查仿真设置频率范围、扫描范围、步长对不对。这五个检查点我一般从第一个开始查查到哪个不对就改哪个。大部分问题都出在前三个。4.3 提升仿真速度的四个实用技巧仿真跑得慢特别是Parametric和Noise跑一次要等很久。我总结了四个提速技巧减少输出节点只选你真正关心的节点。选太多的话仿真器要算很多没用的东西。放宽精度在不影响结果的前提下把reltol和abstol放宽一点。用粗扫代替细扫先粗扫找到大致区间再细扫。别一上来就细扫。并行跑如果机器性能够可以开多个ADE L窗口同时跑不同的仿真。还有一个技巧把常用的仿真设置存成脚本。ADE L支持ocn脚本可以把设置写成脚本下次直接跑脚本不用重新设。这个我后面会单独讲。4.4 工艺角仿真的批量处理方法工艺角仿真是必须做的但手动跑太慢。我一般用两种方法批量跑方法一用ADE XL。ADE XL是ADE L的升级版支持批量跑工艺角。设置好之后点一下就能把所有角跑完。但ADE XL学习曲线比较陡新手可能需要适应一下。方法二用脚本。写一个ocn脚本里面循环所有工艺角每次改模型库跑仿真存结果。这个方法的优点是灵活想怎么跑就怎么跑。缺点是写脚本需要一点编程基础。我一般先用ADE XL跑一遍看看大致结果。如果某个角有问题再用脚本单独跑那个角细看。4.5 仿真结果与手算不符时的调试方法仿真结果和手算不符这种情况最考验人。我一般按三步走第一步确认手算对不对。手算的时候有没有忽略什么比如MOS管的输出电阻、体效应、寄生电容。手算一般是简化模型仿真用的是完整模型有差异是正常的。第二步确认仿真设置对不对。仿真设置里有没有什么选项会影响结果比如AC分析的频率范围、DC分析的初始条件。第三步逐步简化电路。把电路简化到最简单跑一遍看结果对不对。对的话逐步加回原来的部分看哪一部分导致差异。这个方法比较笨但很有效。我踩过的坑有一次仿真结果和手算差了20%查了半天发现是手算的时候忘了算体效应。加上体效应之后结果就对上了。所以手算的时候一定要把主要效应都考虑进去。5. 我这些年攒下的ADE L使用心得5.1 快捷键与效率提升ADE L里有很多快捷键用熟了能省不少时间。我常用的几个F2保存当前设置F5运行仿真F8查看结果CtrlD复制当前分析CtrlE编辑当前分析还有一个技巧把常用的分析存成模板。在ADE L里点File → Save As Template把当前设置存成模板。下次新建仿真的时候直接选模板不用重新设。5.2 脚本自动化入门ADE L支持ocn脚本可以把仿真设置写成脚本。比如simulator(spectre) analysis(dc ?saveOppoint t) desVar(W 1u) desVar(L 0.18u) temp(27) run() selectResult(dc)这个脚本设了DC分析定义了W和L两个变量设了温度27度然后跑仿真。跑完之后用selectResult选结果。脚本的好处是可以批量跑可以参数化可以自动化。我一般把常用的仿真写成脚本跑的时候直接改参数就行。5.3 版本差异与兼容性注意Cadence Virtuoso的版本很多不同版本之间有些差异。我用的比较多的是IC617和IC618。IC618比IC617多了些功能比如更好的ADE XL支持、更快的仿真速度。但IC618对机器要求也高一些。如果你从IC617换到IC618注意两件事一是模型库的格式可能变了需要重新挂二是有些老脚本可能不兼容需要改。我一般换版本之前先把老项目备份一份免得改坏了回不去。5.4 与ADE XL的配合使用ADE L和ADE XL不是替代关系是互补关系。ADE L适合快速验证、单点仿真。ADE XL适合批量仿真、工艺角扫描、优化。我一般的工作流是先用ADE L把电路调通确认静态工作点对、基本功能对。然后用ADE XL跑工艺角、跑蒙特卡洛、跑优化。ADE XL跑出来的结果如果有问题再回到ADE L细看。ADE XL的界面和ADE L不太一样但底层是一样的。你把ADE L玩明白了ADE XL上手就快。5.5 我踩过的三个典型坑坑一忘了挂模型库。有一次跑仿真报model not found查了半天发现是Model Libraries里没挂工艺库。挂上之后就好了。所以跑仿真之前一定要确认模型库挂对了。坑二变量没定义。有一次跑Parametric扫描变量没在Design Variables里定义结果跑出来只有一条曲线。后来把变量定义上就好了。坑三输出节点选错。有一次看AC增益结果一直是0dB。查了半天发现输出节点选的是电源节点不是输出节点。改过来之后增益就对了。这三个坑说到底都是粗心。所以跑仿真之前一定要把设置检查一遍。我一般会列个检查清单一项一项过。6. 从DC到Noise的完整仿真检查清单6.1 仿真前的十项检查跑仿真之前我一般会过一遍这个清单原理图Check and Save过了没有电源和地接对了没有器件参数核对过了没有模型库挂对了没有设计变量定义全了没有输出节点选对了没有仿真类型选对了没有仿真参数设对了没有温度设对了没有工艺角选对了没有这十项每一项都确认一遍能避免大部分低级错误。6.2 仿真后的五项验证仿真跑完之后别急着看结果先做五项验证仿真日志有没有报错静态工作点对不对关键节点电压对不对结果曲线有没有异常跳变和手算值差多少这五项验证做完再细看结果。如果哪一项不对先解决那一项再看其他。6.3 结果归档与复现要点仿真跑完之后结果要归档。我一般会把这几样东西存下来原理图文件ADE L设置文件.ocn或者.scs仿真结果CSV或者.raw文件仿真日志一份简短的说明写清楚这次仿真跑了什么、结果怎么样、有什么问题归档的好处是下次跑同样的仿真直接调出来就行不用重新设。而且如果结果有问题可以回溯看是哪一步出的错。复现的时候注意不同版本的Virtuoso设置文件可能不兼容。所以归档的时候最好把版本号也记下来。另外模型库的路径可能变了复现的时候要重新挂。6.4 进阶方向从ADE L到ADE XLADE L玩熟了之后可以往ADE XL走。ADE XL支持更多功能比如批量工艺角仿真蒙特卡洛分析参数优化结果对比从ADE L到ADE XL不是重新学而是平移。ADE L里的设置ADE XL里都有对应的。只是ADE XL的界面更复杂功能更多。我一般建议先把ADE L的六种仿真跑熟再学ADE XL。ADE L都没跑熟直接上ADE XL容易懵。6.5 我个人的仿真工作流分享最后分享一下我个人的仿真工作流画原理图Check and Save打开ADE L挂模型库定义变量先跑DC确认静态工作点跑AC看频率响应和稳定性跑Tran看时域响应跑Noise看噪声性能跑DC Sweep和Parametric找最优参数用ADE XL跑工艺角和蒙特卡洛归档结果写仿真报告这个工作流不是固定的根据电路类型可以调整。比如纯数字电路可能不需要Noise分析。射频电路可能AC分析更重要。但大体思路是一样的先DC再AC再Tran最后Noise和Parametric。跑仿真这件事说到底就是细心加耐心。设置检查一遍结果验证一遍大部分问题都能避免。剩下的那些疑难杂症靠经验积累。我这些年踩过的坑上面都写了希望能帮你少走点弯路。
返回列表