ARTICLE DETAIL

资讯详情

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

PEX验证与Calibre视图:模拟IC后仿真寄生参数检查实战指南

PEX验证与Calibre视图:模拟IC后仿真寄生参数检查实战指南 1. PEX验证为什么不能随便看看网表就完事做模拟IC的兄弟们应该都有这个体会版图画完了、DRC过了、LVS也clean了以为万事大吉结果后仿真一跑波形跟屎一样。要么延迟翻倍要么带宽掉一截严重的直接功能失效。这时候你才意识到PEX提取这件事从一开始就得认真对待。我在SMIC13上翻过车也在TSMC、GF的工艺上踩过坑今天先聊聊最核心的一个问题PEX提取结果怎么验证尤其是Virtuoso里那个Calibre视图到底怎么用。先说清楚一个概念。PEXParasitic Extraction做的事情就是从版图里把金属走线、通孔、器件之间的寄生电容、电阻、电感提取出来生成一个带寄生参数的网表或视图供后仿真使用。很多刚接触后仿真的朋友习惯直接把PEX生成的spectre网表拿去做仿真这没问题但有个缺陷网表是文本你很难直观地检查提取结果到底对不对。节点连错、电容漏提、电阻阻值异常这些在文本网表里肉眼几乎看不出来。而在Virtuoso里用Calibre视图做验证就能把提取结果反标回原理图或版图直观地看到每一个寄生节点、每一条走线电阻、每一个耦合电容配合前仿和后仿的波形对比才能真正确认PEX结果的正确性。这篇文章适合正在做模拟IC后仿真、尤其是用Cadence Virtuoso Calibre这套流程的工程师也适合刚入门模拟版图、想把后仿真流程搞清楚的新人。我会以SMIC13工艺的一个CMOS反相器为案例把PEX验证的完整流程、配置细节、常见的坑一步步拆给你看。这里面很多细节是你在PDK文档和官方手册里翻半天都不一定找得到的。2. 核心机制拆解Virtuoso里的视图体系与Calibre视图的定位2.1 Virtuoso的视图View机制到底是怎么回事要理解Calibre视图先得理解Virtuoso的视图体系。在Virtuoso里一个cell可以有多种视图schematic是原理图layout是版图symbol是符号extracted是提取视图calibre就是PEX生成的寄生视图。每个视图存储的是同一电路在不同抽象层次下的表示。后仿真时你把原理图中的器件实例的视图从schematic替换成calibre仿真器就会加载这个带寄生参数的视图。这就好比你把一张建筑设计图里的“房间”替换成“房间里面的家具墙体内的管线”替换后你看到的还是同一个房间但它承载的信息量完全不同了。2.2 PEX输出格式对比Calibre视图 vs 普通网表Calibre PEX的输出格式有几种常见选择spectre网表、DSPF、SPEF、Calibre View。很多工程师习惯选spectre网表简单直接但验证起来全靠盯着文本看效率低不说还容易漏看。Calibre View的独特之处在于它生成的是一个Virtuoso能直接识别的cellview里面包含完整的器件、节点和寄生参数。你可以像打开普通原理图一样打开它在原理图上直接检查提取结果甚至可以把它作为子电路调用到测试bench里做后仿真。它的核心优势有三个可视化在原理图上直接看到寄生R和C可以点开看具体参数值。可追溯寄生参数带有版图坐标信息可以反标到版图对应位置。可复用生成一次可以反复用于不同仿真DC、AC、Tran、噪声。我个人建议凡是要做严格后仿真验证的设计都PEX输出Calibre View而不是只输出网表。网表留着跑大规模仿真或给其他工具用Calibre View留着做可视化和精细调试。2.3 Calibre视图的组成结构Calibre View不是单一的文件它由几部分构成cellview数据寄生后的电路拓扑存放在Cadence的library里。viewDefinition映射告诉Virtuosocalibre视图用的是哪个工艺库的哪些器件模型。cellmap映射文件把LVS的器件名比如NMOS、PMOS、电阻映射到Cadence库里的具体器件或子电路。参数映射把提取出来的几何参数如W、L、finger映射到工艺模型参数。这几个部分任何一个配置不对都会导致生成的Calibre视图异常。最常见的现象是PEX跑通了但生成的视图里器件全部丢失或者器件参数全乱。后面我会详细讲怎么排查。3. PEX验证前的准备规则文件、提取类型与视图配置3.1 确认版图DRC/LVS已经干净这一步容易被忽略但非常重要。PEX的前提是LVS必须通过。如果LVS还有问题PEX提取出来的寄生参数本身可能就不完整因为Calibre在提取时依赖LVS的器件识别和节点匹配结果。我在SMIC13上的习惯流程是先跑DRC确保没有工艺规则违例至少不能有严重的short和open。再跑LVS确保版图与原理图匹配器件识别无误。LVS clean之后再开始配置PEX。有些朋友为了赶时间LVS还有几个warning就急着跑PEX结果后仿真一堆问题回头排查浪费的时间反而更多。这个顺序一定不要省。3.2 SMIC13 PEX规则文件的正确选择SMIC13的PDK里通常会提供多组Calibre规则文件命名类似calibre_13mm_lvs.3.6或calibre_13mm_1p8m_lvs.3.6calibre_13mm_pex.3.6或calibre_13mm_1p8m_pex.3.6注意不同版本PDK里规则文件名可能带版本后缀比如.3.6、.3.8、.3.48等。一定要选择与你的Calibre工具版本兼容的规则文件。Calibre版本太老、规则文件太新或者反过来都可能在PEX时报语法错误。另外SMIC13一般会有针对不同金属层数的PEX规则。如果你的设计用了1P8M就选1p8m对应的规则用了1P6M就选1p6m。选错规则文件会导致某些层次未被提取或提取异常。3.3 提取类型怎么选C、R、CCC、RCCCPEX提取类型直接决定寄生参数的完整度和仿真精度。常见选项提取类型提取内容适用场景仿真速度C只提取电容对地电容初步估算、数字逻辑快速验证最快R只提取电阻电源网络IR分析较快CCC电容耦合电容模拟电路精度验证中等RCCC电阻电容耦合电容全精度后仿真最慢我做模拟后仿除非是超大规模的数字模块否则一律选RCCC也就是Calibre界面里的RCCC选项在命令行或规则里对应pex RCCC。SMIC13工艺下金属线电阻和层间耦合电容对模拟性能影响很大尤其是高频电路和LDO这种对环路稳定性敏感的设计只提C不提R结果会跟实测差很远。3.4 Calibre View输出的核心配置项在Calibre PEX界面的Outputs选项卡里选择Calibre View作为输出格式后有几个关键配置项需要填Output Library生成的Calibre View存放在哪个Cadence库。建议单独建一个库比如inv_pex_lib避免和原设计混在一起。CellMap文件这是器件映射的核心后面专门讲。View Name默认是calibre可以自定义但建议保持一致。View Definition指定Virtuoso的viewDefinition文件通常在PDK目录下或者用Cadence默认的。这里有一个很多新手会漏掉的细节Output Library不能是只读库而且最好用相对路径。有些公司的PDK库是只读的你输出到PDK库里PEX会报“cannot write to library”之类的错误。4. SMIC13反相器案例分析从版图到Calibre View的完整实操4.1 案例设计基本信息下面用我最常用的例子——CMOS反相器——来走一遍完整流程。反相器虽然是数字电路但它的PEX验证流程和模拟电路完全一样而且更简单直观适合把原理讲清楚。设计参数工艺SMIC 130nmSMIC131P8MPMOS尺寸W/L 2.0μm / 0.35μmNMOS尺寸W/L 1.0μm / 0.35μm版图面积约10μm × 5μm电源VDD 1.2VGND版图已经完成DRC和LVS都clean了。原理图里反相器的symbol视图也建好了方便后续在testbench里调用。4.2 Cadence Virtuoso与Calibre的集成设置如果你公司里已经配置好了Calibre菜单那么在Virtuoso的CIW窗口里会看到Calibre菜单项。如果没有需要先设置集成。集成方式一般是在.cdsinit里加一行load( strcat( getShellEnvVar(CALIBRE_HOME) /lib/calibre.skl ) )这里的CALIBRE_HOME是你的Calibre安装路径。我遇到过不少环境变量没配好的情况Calibre菜单不出现或者运行时提示找不到共享库。这时候先检查环境变量echo $CALIBRE_HOME echo $MGC_HOME两个变量至少要有一个指向正确的Calibre安装根目录。4.3 PEX运行步骤与参数设置在Virtuoso中打开反相器的版图确保当前cellview是layout然后执行Calibre → Run PEX在Calibre PEX界面里按以下方式配置Inputs选项卡Layout当前版图cellviewNetlist从原理图提取由LVS结果决定Rules Files选择SMIC13的PEX规则文件比如calibre_13mm_1p8m_pex.3.6Run Directory建议单独建目录比如./pex_runOutputs选项卡Extraction TypeRCCCOutput FormatCalibre ViewOutput Libraryinv_pex_libCell Map File选择PDK自带的cellmap文件通常路径在PDK目录下的calibre/子目录里名字类似smic13mm_cellmap或calibre_cellmapView Definition选择PDK提供的viewDefinition文件Run选项卡勾选Run PEX点击OK或Run。运行过程中log窗口会打印提取进度。SMIC13的小规模设计通常几十秒到几分钟就能跑完。跑完后Virtuoso会在inv_pex_lib库里生成一个新的cellview视图名默认是calibre。4.4 查看生成的Calibre View打开方式很简单在CIW的Library Manager里展开inv_pex_lib库找到inv这个cell双击calibre视图。Virtuoso会用原理图编辑器打开这个视图你看到的电路拓扑和原原理图几乎一样但器件旁边多出了很多R和C符号这就是提取出来的寄生参数。这时你可以做的检查动作检查器件数量反相器应该有两个MOS管确认PEX后仍有且仅有这两个管子没有被重复提取或丢失。检查寄生R点开电源和地线上串联的电阻符号看阻值是否合理。一个小反相器的电源走线电阻一般在几十欧姆以内如果看到几兆欧的阻值说明提取有问题。检查寄生C看MOS管的Cgd、Cgs是否有合理的数值。SMIC13下一个2μm宽的PMOSCgd大概在几fF量级。如果出来几百fF那肯定不对。这一步是整个验证的第一道关卡。如果你的Calibre View在视觉检查阶段就发现问题千万不要继续做后仿真先解决提取问题不然就是在错误的基础上分析错误的结果。4.5 后仿真对比前仿 vs 后仿确认Calibre View正常后建一个测试bench。我这里用一个简单的瞬态仿真来对比测试bench结构VDD1.2V直流电源VIN脉冲信号幅度0V~1.2V周期5ns上升/下降时间100ps反相器inv调用自invcell初始视图是schematic前仿输出端接一个20fF的负载电容先做前仿。在ADE L里把反相器的view设为schematic跑一次200ns的瞬态仿真记录输出波形。然后把反相器的view替换为calibre在原理图编辑器中选中反相器实例按Q键打开属性把View Name从schematic改成calibre或者直接在ADE L的Simulation → Netlisting and Simulation选项里指定。再跑一次相同条件的瞬态仿真。两个波形叠加对比你会看到明显差异前仿Vout的50%延迟大约15ps左右后仿Vout的50%延迟大约25ps左右多了约60%以上后仿的Vout边沿变缓上升时间和下降时间都变大了这个延迟和边沿的退化就是寄生电容和电阻带来的最直接影响。在没有PEX验证的情况下你根本不会意识到这段版图走线会对反相器的性能产生这么大影响。这也正是PEX验证的核心价值它把版图带来的性能损失量化出来让你在设计阶段就心里有数。5. 常见问题与排查实战记录5.1 PEX运行成功但Calibre View是空白的这是我见过最多的问题之一。PEX的log显示提取成功但打开Calibre View后发现里面啥都没有或者只有几个孤立的R和C器件全没了。排查思路检查CellMap文件。这是最常见的原因。CellMap文件把LVS识别的器件映射到Cadence库里的器件如果映射缺失生成的视图里就不会有器件只剩下未被映射的寄生参数。检查viewDefinition。如果viewDefinition文件路径错误或内容不全Virtuoso无法识别calibre视图的层次结构。解决方法是确认PDK里自带的cellmap文件路径优先使用PDK提供的而不是自己写。自己写很容易漏映射。5.2 后仿真时报“Cannot find model”错误PEX生成的Calibre View里MOS管的model name可能指向PDK模型名比如nch、pch。如果仿真跑不起来报找不到模型通常是工艺库的model library没在ADE里正确加载或者PDK模型名与cellmap中映射的模型名不一致。检查方法在ADE L里确认Model Libraries中已经加载了SMIC13的spectre模型文件。打开Calibre View里的MOS管看Model Name字段。比如显示nch而你的模型库里定义的是nch_13mm这时候就需要修改cellmap映射把模型名对应起来。5.3 提取出的寄生电容数值异常偏大如果你发现后仿结果比预期差太多比如反相器延迟比前仿大了10倍那大概率不是寄生参数真有那么大而是提取或映射出了问题。常见原因有两个耦合电容CC被过度提取某些工艺层之间的耦合电容在SMIC13中本身较大但如果你在设计里只用了M1到M3提取结果里却出现了M5、M6的耦合电容说明PEX的层次过滤layer filter没设对。衬底寄生重复计算有些PEX规则会提取衬底电容而你在仿真时又额外在模型里定义了衬底节点连接导致电容被算了两遍。排查方法在Calibre View里把所有的电容符号列出来按照数值从大到小排序看看最大的几个寄生电容出现在什么位置。如果是大面积的金属重叠导致属正常如果出现在两个本不该有明显耦合的地方就要检查PEX的层次配置。5.4 Virtuoso里电阻不显示阻值怎么办这个问题在热词里出现了做模拟的同事应该都遇到过PEX之后打开Calibre View电阻符号在那里摆着但按Q键看属性阻值参数是空的或者显示nil。原因通常是CellMap文件里对电阻的参数映射不完整。PEX提取电阻时会生成一个带几何尺寸的电阻器件比如rppoly但映射到Cadence库时如果没有把提取的阻值映射到CDF参数R上Virtuoso就不知道这个电阻是多少欧姆。解决办法打开CellMap文件在电阻映射部分添加或修改参数映射把.R映射到R。如果没有PDK提供的CellMap可以用Cadence自带的analogLib电阻然后手动设置阻值来源为PEX提取值。比较麻烦的情况是有些PDK的CellMap是加密的改不了。这时候可以用一种猥琐但高效的办法不修改CellMap而是在Calibre View里直接批量修改电阻属性。选中所有电阻用Edit → Search选Resistor然后在Property里填上阻值表达式比如R par(R)前提是提取时电阻阻值被存在了R参数里。5.5 后仿真不收敛或DC工作点异常PEX提取后的电路规模变大节点变多有时候仿真器在求DC工作点时会出现不收敛。这种情况在运放、LDO这类带反馈的电路里尤其常见。解决办法在ADE L里给某些关键节点加初始条件IC。增大gmin在Simulation → Convergence Aids里设置。检查是不是提取出了异常大的电阻或电容。比如一个应该只有几十欧姆的走线电阻被提取成几百千欧就会导致DC路径断裂工作点自然不对。SMIC13工艺下走线电阻一般不会太大如果你在DC工作点列表里看到某些节点的电压异常优先复查寄生电阻的阻值范围。5.6 反相器示例中的排查记录最后分享一个我自己在SMIC13反相器案例里实际遇到的问题。当时PEX跑完后后仿波形输出居然是高阻态输出既不是0也不是1。排查了半天发现Calibre View里反相器的输出节点上多了一个莫名其妙的电阻阻值高达5MΩ。这个电阻不是版图走线提取出来的而是因为我的版图里有一个没有连接的N阱接触孔PEX把它识别成了一个浮空的电阻。解决方法是回到版图把N阱接触孔连接到VDD重新跑LVS和PEX问题就消失了。这个教训给我印象很深PEX提取是忠实的你版图里有任何多余的层次它都会给你提取出来。很多奇怪的后仿问题最后都能在版图上找到根源。6. 后仿真验证的经验谈用Calibre视图做PEX验证用熟了之后其实很快但前期配置确实有点繁琐。我在这套流程上摸爬滚打了几轮有几个习惯已经固化了分享给大家。第一PEX验证不是一次性的工作。大版图里每一次修改走线、调整器件位置寄生参数都会变化后仿结果也可能变化。建议每次改完版图尤其是改动了关键信号路径都要重跑PEX并对比后仿波形。坚持这个习惯能帮你在大规模设计里省下大量回头看的时间。第二Calibre View是调试利器但不是所有场景都需要它。如果只是跑一个全芯片的顶层寄生仿真几十亿个寄生参数用Calibre View打开你的Virtuoso大概率会卡死。这时老老实实用网表仿真模式加-parasitic选项做网表级后仿。Calibre View更适合模块级验证和问题调试。第三多利用Calibre View的反标功能。在Virtuoso里打开版图和Calibre View选择Calibre → View → Cross Probe或类似的功能在Calibre View里选中某个寄生电容版图里对应的位置会高亮显示。这个功能在定位“哪个位置的寄生参数导致电路性能恶化”时简直不要太香。你能直接看到原来是最左边那根M1走线和旁边的M2走线之间的耦合电容把带宽拖垮了然后有针对性地去优化版图。第四别迷信PEX默认配置。SMIC13的PEX规则默认会提取所有层次所有金属的寄生。但有些设计比如射频电路对衬底寄生和电感耦合极其敏感默认配置往往不够而有些数字模块默认配置又太慢。理解自己的设计需求学会调整提取范围和提取类型是一名成熟模拟工程师的必修课。做后仿真这件事没有人能从第一天开始就顺风顺水。但把PEX验证这套流程吃透——知道Calibre View怎么生成、怎么看、怎么排查问题——后续不管换什么工艺、做什么类型的电路你都会有一个稳定的方法论去支撑。这就是我一直强调“流程比工具重要”的原因。
返回列表