
干过模拟版图或者数字后端的人应该都有这种体会LVS跑了N遍终于清干净了结果仿真一跑时序对不上带宽不够相位裕度掉得离谱——大概率不是电路设计的问题而是你根本没用上Calibre PEX提取的寄生参数网表。PEX提取出的HSPICE网表就是把版图上每一根走线的电阻、每一块金属之间的耦合电容实实在在折算成电路元件塞回网表里去验证。这篇文章我会把从LVS验证通过到Calibre PEX规则配置到最终得到一份可用的HSPICE网表这个完整流程按我实际跑项目时的操作顺序捋一遍中间会穿插踩过的坑和排查经验适合刚接触PEX的模拟IC工程师、版图工程师以及对后仿真流程不熟的毕业生参考。1. 为什么需要PEXLVS验证远远不够寄生参数才是真实芯片很多人在学校里做设计跑完前仿版图画完LVS一通过就觉得万事大吉。这个想法在低频小规模电路里勉强能成立一旦频率上到几百兆甚至GHz或者做的是高精度模拟电路那点走线电阻、金属间电容就足以让电路行为完全偏离设计预期。LVS验证的本质工作只是核对版图与原理图的连通性和器件参数是否一致它根本不管两条金属线之间那点耦合电容会不会让信号串扰。PEX存在的意义就是把版图的物理寄生效应转换成电学模型。每一层金属有方块电阻有过孔电阻金属与金属之间有平板电容、边缘电容还有耦合电容在先进工艺里衬底耦合和电感效应也会变得显著。Calibre PEX正是从这个维度出发基于版图几何数据结合工艺文件里的RC参数表提取出包含寄生电阻、寄生电容甚至寄生电感的网表。提取出来的网表直接用做后仿真输入才能让你的仿真模型贴近真实流片后的行为。尤其是以下场景PEX网表是刚需高速数字接口输出驱动、时钟路径的RC延迟直接影响时序收敛。高精度运放/基准源寄生电容改变极点位置、影响相位裕度寄生电阻造成失配。射频电路寄生电感、耦合电容对匹配网络影响极大不提取基本没法调。电源网络评估IR drop和EM问题需要寄生电阻网络做支撑。我见过不少团队在项目初期不重视PEX等到流片回来测出问题再回过头补寄生提取结果整个项目周期被拉长一大截。所以PEX不是可选项而是流片前的必经环节。2. 跑PEX之前LVS的坑必须先填平2.1 LVS clean是基本门槛但“clean”本身有讲究Calibre PEX是建立在LVS结果基础上的工具它需要invoke LVS的结果来做器件匹配和节点映射。如果LVS本身不过PEX跑出来的网表没有任何参考意义。但这里有个细节LVS通过的标准并不是只看“LVS Clean”这个绿勾你得仔细看报告里的以下内容器件数量是否完全一致有时候LVS会通过“pin swap”或“device symmetry”之类的高级选项把失配“消化”掉导致实际上器件类型和数量对不上。节点是不是你想验证的节点确认报告中列出的关键net都有对应比如电源地、输入输出、内部偏置点。有无warning级别的异常特别是“Soft Connect”的报警这类问题最容易埋在LVS通过的表象下面。我习惯在跑PEX之前先把LVS报告里所有含“Soft Connect”字样的地方全部过一遍确认每个soft connect的位置是否可接受或者干脆通过修改版图避免掉。这一步花的时间往往比PEX本身报错后回头排查省得多。2.2 soft connect问题详解LVS soft connect是指在版图里通过衬底、阱、或某些电阻性路径将两个本应电气隔离的net连接在一起的情况。Calibre LVS默认通常不会把这类连接当成硬短路但会在结果里标记Soft Connect报警。这在PEX阶段为什么重要?因为如果两个net之间存在soft connectPEX在提取寄生时可能会把这个连接当作真实的电气连接点从而把两个net合并或引入意外的寄生通路。最典型的场景是数字地和模拟地共用衬底LVS里通过隔离环分开但衬底仍然是导通的LVS可能不报错但PEX会把它当作一个连通节点处理。排查这个问题的办法通常是在版图中检查衬底/阱的接触孔位置确认guard ring是否完整。临时修改规则文件强制LVS把某些specific net的soft connect当作hard connect或完全disconnect观察结果变化。确认工艺库里衬底电阻模型必要时用“PEX NETLIST”命令把衬底网络单独导出来看。2.3 确认LVS结果的几个实操要点跑PEX之前我还习惯在Calibre的LVS结果里做一次“寄生提取预检”。什么意思?就是把LVS的runset直接改成PEX模式跑一遍看是否报错。这比直接一次性跑PEX更快定位问题源。这里有一个工程上的小技巧把同一份版图分别用LVS-only和PEX模式跑对比两个结果的器件数量。如果PEX模式下器件数量暴增那说明提取到的寄生元件数量异常多大概率是某些blockage或exclude没设置好也可能是有dummy填充金属没被识别。3. Calibre PEX规则文件配置提取类型与网表格式的选择3.1 PEX rule file的基本结构Calibre PEX的规则文件通常叫xxx.pex.rul或直接复用LVS的rule加PEX命令扩展里面除了标准LVS语句之外还会包含以下关键定义PEX NETLIST PEX EXTRACT PEX PARAMETER LAYOUT PATH ... SOURCE PATH ... LVS CHECK在这些关键字里PEX EXTRACT后面会定义提取的寄生类型PEX PARAMETER定义提取精度和阈值参数PEX NETLIST则指定输出网表的格式和路径。需要注意不同工艺厂提供的PDK里PEX规则的写法有差异不要跨工艺套用规则文件。3.2 提取类型的选择C、R、RC、RCC到底怎么选这是PEX配置里最容易纠结的点。Calibre PEX支持多种提取模式我梳理一下常见类型的适用场景提取类型提取内容适用场景运行速度C仅电容数字后端早期时序估算快R仅电阻电源网络IR drop分析快RC电阻电容不含耦合电容常规模拟后仿、时序验证中等RCC电阻总电容耦合电容高精度模拟、高速数字信号完整性慢RCL在前者基础上加电感射频、高速封装/片上互连最慢对于绝大多数模拟电路后仿我建议直接从RCC开始。RCC会把金属线之间的耦合电容也算进去这对差分信号、敏感模拟信号线尤为重要。有人担心RCC太慢其实在rule文件里可以设置coupling threshold把距离远到一定程度的金属对忽略速度会明显提升而精度损失有限。3.3 网表格式设置为什么选HSPICEPEX输出格式支持HSPICE、SPECTRE、Verilog、DSPF、SPEF等。HSPICE网表.sp后缀是所有EDA工具里兼容性最好的格式之一几乎所有仿真器都能读尤其是老牌HSPICE和HSPICE兼容的仿真工具在精度和收敛性上依旧稳健。网表格式的配置通常在规则文件的PEX NETLIST部分设置PEX NETLIST FORMAT HSPICE SUBCKT ON PARASITIC ON MODEL process_model_file ...其中SUBCKT ON表示将提取结果封装成子电路形式PARASITIC ON输出寄生元件。如果你想把寄生和原始器件分离开用PARASITIC搭配PARASITIC_RES、PARASITIC_CAP这样的细分选项去控制。4. 提取流程实操从版图到HSPICE网表全流程拆解4.1 图形界面下的完整操作路径Calibre Interactive界面里跑PEX的路径很直接打开版图启动Calibre Interactive切换到“PEX”选项卡加载PEX规则文件。我一般按下面顺序操作加载规则文件在“Rules”栏填.pex.rul路径或者直接用PDK自带的PEX rule。切换到PEX View左侧面板选“PEX”在“Inputs”里确认layout netlist和source netlist都能正确识别。设置Outputs选中“HSPICE”格式指定输出文件名和路径。默认文件名通常是pex.netlist或手动改成xx.sp。设置提取模式在“PEX Options”里选extraction type我通常选“RCC ”模式并打开“Coupled Capacitance”。Run PEX运行完成后查看.pex.log和.pex.report。这里有个很容易忽略的点在跑PEX前确认没有其他Calibre进程占用license否则PEX会在数据准备阶段卡很久新手经常以为工具崩溃了其实是在排队等license。4.2 关键参数设置与含义除了界面上那几个下拉框真正的技术活都在rule文件的参数配置里。最常用的几个PEX EXTRACT FILENAME定义提取结果的中间文件通常保持默认。PEX PARAMETER MAXCAP/MINRES设置电容/电阻的提取阈值。低于阈值的寄生会被丢弃用来平衡精度与网表规模。比如在数字模块里可以把MINRES设成较大的值把细小电阻丢弃节省仿真时间模拟模块则要设小一些。PEX COUPLE耦合电容提取开关。选ON则输出耦合电容到网表接地电容会被标记为对地电容。NETLIST PRINT控制网表打印格式比如是否输出节点名、是否用层次化方式。以一个0.18um工艺的模拟模块为例我常用的参数设置PEX PARAMETER MINRES 0.1 MAXCAP 1e-15 COUPLE ON RATIO 0.001这里的RATIO 0.001是红线比例低于指定比例的寄生会被忽略它和MINRES/MAXCAP共同决定了寄生简化的程度。实际跑下来这些参数设得越激进网表越小、仿真越快但精度越差设得保守网表巨大仿真可能几天都跑不完。该在哪里画线建议以“对关键指标影响小于5%”为标准来调。4.3 输出网表的第一眼检查拿到生成的HSPICE网表后我建议先不要急着丢给仿真器先用文本编辑器打开做三个快速检查头部的.SUBCKT定义确认子电路名和端口顺序与源网表一致尤其是电源地端口顺序错一个pin整个仿真就乱套。寄生元件是否合理扫一眼电容值的量级。比如0.18um工艺下一根几十微米长的顶层金属线对地电容大约是几十fF量级如果网表里出现pF级别的电容那大概率是rule文件或layer mapping有问题。模型引用是否完整确认.MODEL语句或者incude的工艺模型库路径正确否则仿真器一上来就报缺model的错误。5. HSPICE网表分析与后仿真的衔接5.1 读懂提取网表里的寄生元件一份典型的Calibre PEX输出的HSPICE网表在原本的器件实例之外会多出大量寄生器件。比如一个反相器原本网表就是两个管子PEX之后会看到每条net上串联的R以及节点之间、节点对地的CR_X1_NET1_M1 s1 n1 23.5 C_X1_NET1_M1 n1 gnd 12.3f C_X1_NET1_NET2 n1 n2 3.4f一开始看到网表里数量是原始器件的几十倍别慌这是正常现象。关键要看R和C的分布是否符合版图直觉长走线电阻应该明显偏大交叉金属多的地方耦合电容应该偏高。如果和直觉出入很大优先怀疑layout的density filling是不是把不需要的金属加进来了或者layer mapping配置有误。5.2 从PEX网表到后仿真激励文件得到HSPICE网表后我不会直接修改原始网表而是把PEX输出的网表和原始激励文件分开管理在激励文件里用.include包含PEX网表.include ./pex/amp_pex.sp X_amp vin vout vdd vss amp_pex这里有一个工程规范问题在PEX输出网表中原始器件名通常会带上后缀或前缀节点名也会被自动化重命名过所以你的激励文件里激励源挂接的节点名必须以PEX网表里的端口名为准最好直接从PEX网表的.SUBCKT声明里复制端口名不要凭记忆填。另外仿真器选项也要调整。PEX网表里电容、电阻数量庞大默认的仿真容差在收敛上容易出问题我通常会把RELTOL和ABSTOL适当放宽一个数量级同时用GMIN1e-15之类的小值保证收敛稳定性。5.3 后仿结果对比与迭代后仿真跑完之后第一步不是看波形美不美而是和前仿结果做量化对比。以运放为例我会同时看这几项单位增益带宽GBW下降是否超过15%~20%相位裕度是否还在安全范围静态工作点漂移是否导致管子退出饱和区如果后仿结果和Pre-sim差异很大我先去查网表里哪些寄生是主要贡献者。一个办法是把PEX网表里的大电容找出来在版图里定位到具体位置确认是不是敏感信号线之间的耦合再决定是修改版图走线还是调整电路补偿。这个“从仿真结果回到版图修改”的闭环才是PEX最大的价值。6. 常见问题与排查技巧实录6.1 LVS通过但PEX直接报错这是我最常在群里看到新人问的问题。现象是LVS干干净净切到PEX一跑就报错而且报错的往往不是电气错误是rule层面的。常见原因有PEX规则文件本身需要额外的layer声明比如dummy层、slot层在LVS时是“optional”的但在PEX extract里缺了会直接跑不下去。SCONNECT命令不一致LVS里用了某种soft connect约定PEX规则里没同步。Power net未指定PEX里需要显式指定power/ground名称否则衬底寄生无法正确归零。对着报错行号逐条看rule别急着改版图。多数情况下都是配置问题。6.2 LVS soft connect导致的寄生异常我在2.2节提过soft connect。实际操作里最容易碰到的是数字模块和模拟模块之间通过衬底形成连接。LVS阶段如果开启“Soft Connect OFF”还报错说明真有硬连接如果开启“Soft Connect”模式才通过那版图里就有大坑。一个有效排查手段在PEX rule里打开“REPORT OPTION VERIFY SOFT CONNECT”选项让PEX报告所有soft connect路径。看到报告后对每个路径评估是否影响关键net再决定版图怎么处理。这里有个认知要建立不是所有soft connect都致命但必须做到“已知且可控”。6.3 寄生过大或过小的量级校验有次我提取一个LNA版图PEX结果里每根走线电容都异常偏大追查到最后发现是rule文件里LVS POWER NAME没写对导致工具把一根高电位net误判成地所有耦合电容全叠加到对地电容上数值翻了一倍不止。量级校验这种事靠经验多一些所以我建议团队里建立一套常用结构的“寄生基准值表”比如1mm顶层金属线对地电容多少、一个最小尺寸poly电阻寄生多大拿基准值去对比PEX结果能快速暴露配置错误。6.4 网表里出现意外短路或开路PEX网表里两个本不该连通的net被寄生电阻连在了一起这种问题多出在dummy metal或者well tie的提取上。遇到这种情况检查rule里的EXCLUDE语句是否把相关dummy层排除干净并确认隔离环guard ring在PEX view里被正确理解。如果需要可以用EXCLUDE CELLS把特定标准单元整体排除出寄生提取这在混合信号验证里很常用。7. 流片前最后一遍PEX检查的个人习惯从LVS到PEX整个流程跑顺之后我建议在流片签核前按固定清单再做一遍最终检查用RCC模式跑一遍全芯片寄生提取确认网表无语法错误逐一核对关键信号net的寄生RC量级是否在预期范围对关键模块做post-sim与前sim的对比确认最坏情况仍在设计余量内把PEX生成的report存档连同rule版本、工具版本一起记录方便回溯。我自己的体会是PEX做到后面拼的已经不是操作熟练度而是对工艺寄生机制的理解和排查问题的耐心。很多坑看起来是工具报错实际上是对版图、对连接关系理解不深。把Calibre PEX的每一条告警当成一次了解自己版图的机会流片回来出问题的概率会小很多。希望这篇实战记录能帮你少走几步弯路。