ARTICLE DETAIL

资讯详情

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

Cadence Virtuoso PEX寄生参数提取到后仿真完整流程与避坑指南

Cadence Virtuoso PEX寄生参数提取到后仿真完整流程与避坑指南 Cadence Virtuoso里做后仿真最绕不开的一个环节就是PEX寄生参数提取。我在用这套流程做CMOS反相器、运放再到带隙基准这些电路的后仿时踩过不少坑也慢慢摸清了一套从XRC加载到后仿真出结果的完整路径。这篇文章就是把这些步骤和问题一次性讲清楚适合刚学会画版图、正准备往后仿真走的同学也适合已经跑通流程但总被各种报错卡住的人。先简单说明一下这几个词的关系。PEX指的是寄生参数提取XRC是工艺厂提供的提取规则文件后仿真则是把提取出来的寄生参数带回到原理图里重新仿真。三者串起来就是版图画完 → 用XRC规则提取寄生 → 生成带寄生的新视图 → 用这个视图做仿真。整条链路里每一步都有坑而且很多坑是工具不报错、但结果悄悄变错的那种最容易被忽视。1. 为什么做PEX前仿和后仿之间隔着一整套寄生1.1 前仿结果和流片回来的芯片差在哪很多刚接触后端仿真的人会有个疑问我的前仿真明明已经过了为什么还要费劲做PEX我举个最简单的例子你就明白了。你画一个CMOS反相器前仿真里NMOS和PMOS之间就是一根理想连线没有电阻、没有电容。但在实际版图里这条连线是一块有电阻的多晶硅或金属它和衬底之间会有寄生电容和旁边走过的信号线之间还会有耦合电容。信号频率低的时候这些寄生可能影响不大一旦频率上去或者电路本身对精度要求高寄生电阻会压摆率寄生电容会改变极点位置耦合电容还会带来串扰。我见过一个运放前仿的单位增益带宽有80MHz后仿直接掉到55MHz最初还以为是提取设错了后来仔细查发现就是输出级到后级负载之间的一条长走线引入了将近200fF的寄生电容把主极点往里推了。所以PEX不是流程要求而是让仿真结果贴近真实芯片的必要步骤。1.2 XRC文件是什么为什么它是PEX的地基XRC文件本质上就是工艺厂随PDK一起发下来的提取规则文件。它的核心任务是告诉Calibre版图里每一层是什么材料、厚度多少、介电常数多少、层间关系怎么算以及寄生电阻和电容应该用哪些模型来计算。你可以把它理解成一本“工艺词典”PEX做的所有计算都基于这本词典的规则。这个文件一般存放在PDK目录下的Calibre文件夹里文件名通常是类似xxx_xrc或者xxx.calibre.xrc的形式。需要注意XRC必须和当前使用的PDK版本严格对应。我遇到过有人用同工艺但不同金属层选项的XRC文件去提取结果PEX跑完也不报错但后仿出的增益明显不对查了半天才发现是金属厚度参数和目标工艺不一致。所以拿到PDK的第一件事先确认XRC文件的版本、文件路径、以及它对应的金属层选项。1.3 哪些电路必须做PEX哪些可以偷懒理论上所有准备送交的版图都应该做PEX但实际上可以根据电路类型决定投入多少精力。像反相器、与非门这类数字逻辑我一般会做带全部寄生的完整提取因为数字电路的时序、毛刺、动态功耗都和寄生密切相关。模拟电路里运放、比较器这种对精度和带宽敏感的模块也必须做尤其要注意输入对管附近走线的寄生失配。但也有可以简化的场景。比如只是验证一下版图里某一根关键信号线的延迟可以只提取RC不看耦合电容。或者做一个内部模块的快速迭代可以先只提C电容等版图基本冻结了再跑完整的RC提取。这样做不是为了偷懒而是因为完整RC提取在大型版图上可能跑几个小时迭代期间时间成本太高。我会在后面的章节详细讲怎么选提取类型。2. 环境准备与XRC加载的实操步骤2.1 工具版本与PDK版本对齐先对齐再动手开始PEX之前我建议你先花五分钟确认一遍工具链的三个版本细节否则后面报错会非常被动。一个是PDK版本每个版本的XRC规则细节都有可能有差异第二个是Calibre工具版本PDK发布说明里通常会写支持的最低Calibre版本低于这个版本时XRC里一些较新的命令可能无法解析第三个是Virtuoso版本主要是影响Calibre菜单和CALIBRE_VIEW的兼容性。我自己的习惯是先在终端里跑一次calibre -version确认Calibre版本再打开PDK的ReleaseNotes看看它对Calibre、Virtuoso、甚至Spectre版本的要求。如果PDK里刚好有自带的验证脚本直接跑一遍最好比如跑一次已经做好的LVS或PEX例子这能最快确认环境和工具链是否干净。2.2 在Virtuoso里调出Calibre菜单并加载XRC文件在Virtuoso版图界面里正常情况下会有一个Calibre下拉菜单里面有Run PEX、Run LVS、Setup等选项。如果菜单没出现通常是在该PDK的加载脚本里已经调用了Calibre的skill接口你也可以手动加入。我用的比较多的写法是在.cdsinit或者PDK加载脚本里加一句load(strcat(getShellEnvVar(CALIBRE_HOME) /lib/calibre.skl))加完之后重启VirtuosoCalibre菜单就会出现在版图编辑器的菜单栏里。不同PDK集成方式不一样有的PDK会自己装好这一步只需要确认即可。接着把要提取的版图打开在Calibre菜单里选Run PEX第一次运行时系统会让你选择规则文件。这时找到PDK目录下的XRC文件并加载。我建议在加载后先看一眼PEX Setup对话框里显示的规则文件路径确认它指向的是你目标工艺的XRC而不是默认路径下的旧文件。这里一个非常容易踩的坑项目目录下可能残留一份旧的XRC副本PDK更新后大家忘了同步导致所有提取都在用旧规则。2.3 设置PEX Options几个必填项一次设好加载完XRC后进入PEX Options界面要设置几个关键项。首先是Inputs里的Layout和NetlistLayout自然选当前打开的版图Netlist通常是提取后的网表输出名。其次在Outputs里选好输出格式如果要在Virtuoso里直接做后仿推荐选择CalibreView这样提取完会自动生成一个带寄生参数的视图。另外在Extraction Type里选RC、RCCC或者你需要的类型这个我下一章详细展开。还有几个容易被忽略但很关键的开关比如Power/Ground net的识别方式XRC默认通过文本匹配或端口属性来识别电源地如果你的版图里电源地命名比较特殊要在Net Priority或P/G Net列表里手动列出来否则提取出的网表里电源地对地电容可能没有正确计算。3. PEX提取实操从版图到寄生网表3.1 PEX的第一步永远是LVS这一步别跳说句实在话PEX本身并不复杂复杂的是你带着一个不干净的LVS结果硬跑PEX。Calibre的PEX是在LVS的基础上做的它假设版图和原理图是匹配的并且已经从LVS结果里获取了器件对应关系。如果LVS都不过PEX可能也能跑完但提取出的寄生网表里器件连接关系可能是错的甚至直接把某些器件漏掉。我自己的节奏是版图DRC干净之后先跑一次完整LVS确认ERC、器件属性、节点匹配全部通过再切换成PEX。LVS阶段如果报了一些看起来无关紧要的Warning比如某个电阻的宽度超出了规则范围也要回头改掉因为这类Warning到PEX阶段可能会直接影响寄生电阻的提取精度。反相器这种小电路可能感觉不明显一旦去提取一个SAR ADC的电容阵列LVS阶段的一个浮空节点警告到后仿里就是莫名其妙的电压漂移。3.2 提取类型怎么选R、C、RC、还是RCCC很多新手在Extraction Type这里直接选RC这在实际项目中往往是不够的。我先解释一下这些选项的区别你就知道怎么选了。提取类型提取内容适用场景C只提取寄生电容不提取电阻快速评估负载效应前仿阶段粗略估算CC只提取耦合电容分析串扰一般单独用于信号完整性评估R只提取寄生电阻评估IR Drop、长走线压降RC提取寄生电阻和对地电容一般性后仿适合对串扰不敏感的模块RCCC提取电阻、对地电容、耦合电容完整后仿模拟/混合信号推荐选项这里面的区别在于有没有CC也就是耦合电容。一条走线和它旁边另一条走线之间的互容会影响信号的串扰尤其是高速数字总线或者敏感的模拟信号线旁边有翻转的数字信号时耦合电容造成的噪声可能非常大。我做过一个比较器版图里输入对管的一根走线和时钟信号线并行了很长一段只提RC时Vos是2mV提了RCCC之后变成了7mV就是因为耦合电容把时钟跳变的电荷注入了输入端。所以模拟电路我基本都选RCCC数字模块如果面积很大RCCC跑起来太慢可以退一步用RC。3.3 生成calibre view并送回原理图做后仿设置好提取类型后Run PEX跑完Calibre会在Library Manager里生成一个和原理图同名的视图类型可能是calibre里面包含了所有器件和寄生参数。如果你的Outputs里选择了CalibreView这个结果是自动生成的。如果你选择输出DSPF或者SPEF网表那就需要手动做一些转换才能在Virtuoso里用操作上更麻烦一些所以我个人更推荐直接生成calibre view。生成之后并不是直接拿这个calibre view点开仿真就行。我通常的做法是切换到原理图所在的Library新建一个config视图然后把原理图视图替换成calibre视图这样在进行后仿时顶层原理图不变但底层器件和连接关系全部换成带寄生的版本。这里有一个细节calibre view里的器件名字可能带有XI0这类前缀这是Calibre给寄生网表加的层次化名称不影响仿真但你在定位问题时要学会从后仿网表里把这些名字对应回原理图的名字否则排查很痛苦。4. 后仿真用寄生参数网表做一次“真实”的仿真4.1 后仿配置流程从ADE到config view生成calibre view之后接下来的后仿流程和你平时用ADE做前仿差不多区别只在原理图的选择上。我在实际操作中是这么做的在Virtuoso的Library Manager里File → New → Cellview创建一个类型为config的新视图。打开config窗口后在Hierarchy Editor里把当前Cell对应的原理图视图替换成calibre视图保存配置。然后打开ADE L或者ADE XL在Setup里把Simulator选为Spectre把Database选为刚才那个config视图就可以开始跑仿真了。跑之前建议先做一个DC工作点仿真确认所有晶体管都工作在正常状态。这一步很值得我遇到过几次后仿差别特别大的case基本都是因为某个管子被寄生拉到线性区工作先看op就能快速发现问题。用config视图跑后仿的好处是你不必为了后仿单独再建一套原理图或者测试平台也方便在前后仿真之间反复切换。需要做前仿对比时只要把view从calibre换回schematic重启仿真就行。4.2 怎么读后仿结果数据变差时要能定位是哪一类寄生后仿真结果和前仿有差异是完全正常的没有差异反而要怀疑是不是提取没生效。但怎么从差异里看出具体是哪类寄生在拖后腿需要一点经验。我习惯先分三个层次看。第一层看工作点。如果后仿DC工作点和前仿对不上多半是寄生电阻引起的压降尤其是电源和地走线的寄生电阻。第二层看AC响应。带宽下降、相位裕度变化通常是寄生电容主导这时候去版图里查一下关键节点上的走线长度和面积就能估算出大概的电容值。第三层看瞬态波形。如果输出波形上有明显的高频毛刺或振铃那就要怀疑耦合电容和寄生电感。寄生电感在PEX里一般默认不提取但个别高频工艺中会提供这种情况需要打开对应的提取选项。我强烈建议你在后仿时不要只跑一个corner至少把tt、ff、ss三个工艺角都跑一下。因为寄生参数在不同工艺角下本身也会变化XRC里已经包含了这些统计模型后仿跑出来的差异往往比前仿要明显得多这对评估设计的稳健性非常关键。5. 避坑指南后仿真常见问题与真实排查记录5.1 文件层面XRC加载失败与LVS报错的排查PEX最常见的问题集中在加载XRC文件阶段。一个典型的报错是无法识别XRC文件里的某些语句这通常说明Calibre版本太老XRC里用了新语法。解决方式就是升级Calibre版本或者和PDK厂商确认支持范围。LVS阶段最常踩的坑也值得单独说一下。我见过很多新手PEX跑一半报错回去查LVS结果明明通过了但此时Calibre用的可能是上一次的LVS结果缓存。Calibre在PEX时默认会重新跑一次LVS但它使用的未必是你刚跑过的那份数据。我的习惯是每次PEX前都把上一次的LVS、PEX结果文件清理干净然后在PEX对话框里把Netlist和Output的路径都改成全新的名字避免和旧结果混淆。还有一个很隐蔽的问题版图里如果有重复命名的节点比如两条无关的线都叫VDDLVS有可能通过但PEX提取寄生时会把这两段都当成电源节点导致某些应该分别计算的对地电容被合并后仿结果自然就对不上。这个靠肉眼很难发现只能靠细心检查版图的分层结构和命名习惯。5.2 仿真层面后仿真不收敛和异常振荡的处理后仿中我最常被问到的两个问题一个是瞬态不收敛一个是波形有高频振荡。这两个问题在热词里也频繁出现说明大家普遍困扰。瞬态不收敛很多时候和寄生参数带来的RC延时有关。前仿网络少很容易收敛后仿网络里多了上千个寄生节点某些节点的时间常数和其他部分相差好几个数量级Spectre在求解时就会出问题。我的处理手段通常是先在ADE的Simulation Options里把cmin设一个非零值比如cmin1e-18或者更大一点这相当于给所有浮空或高阻节点加上最小电容能帮求解器稳定。然后把gmin适当调大一些比如默认的1e-12改到1e-10这能避免部分纯电容节点在直流工作点计算时矩阵奇异。如果还是不收敛再检查一下积分方法默认的trapon在某些刚硬系统上容易振荡换成gear2或者设置maxstep为输入信号周期的1/50左右往往能稳定下来。这一步没有什么固定的标准参数我一般都是先改cmin和gmin再调maxstep一次只动一个变量逐个试。波形上出现高频振荡则要分两种情况。如果振荡频率非常接近某个走线的自谐振频率那是寄生电感和电容相互作用的结果需要在版图里想办法减小走线长度或增加阻尼。如果振荡频率很低更像是有源环路的问题那先看是不是上下级之间因为寄生产生了额外的极点导致相位裕度不够。5.3 结果层面calibre view不更新、器件值异常calibre view生成后有时候你更新了版图并重新提取但后仿里用的还是旧的寄生参数。问题多半出在config视图没有刷新。每次重新PEX完我建议在config视图里把calibre view的版本号确认一下或者直接把config视图重新打开一次。Virtuoso偶尔也会有视图缓存问题最彻底的办法是把旧的calibre view删掉重新生成一遍。另外有时候提取完成后某个器件的尺寸值看起来明显不对比如电阻阻值突然翻倍。这种情况先别急着怀疑提取错误先到版图里确认一下这个电阻是不是被识别成了另外一个模型。Calibre在PEX时会按XRC规则对版图里的几何图形重新识别器件如果同一块图形上同时存在两个不同的器件定义可能会导致模型参数覆盖。解决办法通常是在版图里把器件的识别层和互连层区分得更清楚必要时添加dummy层次或者修改XRC里的exclude设置。5.4 关于电源地寄生和衬底耦合再补两句最后补一个容易被忽视的点电源和地的寄生。很多人做PEX时会把注意力放在信号线上其实电源网络上的寄生电阻同样要命。电源走线过长时IR Drop会导致局部电压偏低反映到后仿里就是某些模块的增益变小或者阈值出现偏移。我在做后仿时一定会单独看一下电源网络的寄生电阻总量如果压降超过设计预估就回去加宽电源走线。衬底耦合则是另一个更深层的问题。XRC里通常有衬底网络的提取选项默认可能不开因为会让网表膨胀得很厉害。但在一些混合信号设计里数字开关噪声通过衬底耦合到模拟区域是需要认真评估的。如果你做的电路对噪声极其敏感建议打开衬底相关提取选项哪怕只是后期在地隔离方案验证时用一次也值得跑一遍。结尾跑完几次PEX到后仿的完整流程后我个人的体会是PEX本身不难难的是每一步背后的判断。提取类型选什么、XRC版本对不对、LVS干不干净、后仿不收敛时怎么调整这些经验不会写在任何一本工具的官方文档里全是在一个个跑不完的仿真和一张张对不上的波形中磨出来的。最后再分享一个我一直在用的小技巧每次拿到一个PDK先拿一个最简单的反相器版图跑通从XRC加载到后仿的完整链路并记录下每个环节的菜单路径、选项设置和报错解决方法做成一个自己专属的checklist。换成新工艺新PDK时这份checklist就是最省时间的调试指南。PEX后仿这条路第一次走会慌多走几次就会变成一种肌肉记忆。希望这篇文章能帮你在第一次走这条路时少撞几个墙。
返回列表