ARTICLE DETAIL

资讯详情

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

Calibre PEX提取HSPICE网表全流程:从LVS到后仿真的实战排错

Calibre PEX提取HSPICE网表全流程:从LVS到后仿真的实战排错 做模拟IC或者数模混合设计的人基本都绕不开Calibre PEX。流片前的最后一道验证关卡除了跑完LVS确认版图和原理图是一致的还得把版图里那些看不见的寄生电阻和寄生电容抽出来形成带寄生的HSPICE网表回去做后仿真。如果这一步没做好即使LVS完全通过后仿真和前仿差距巨大甚至在某些工艺角下功能直接失效。这篇文章我就从实际项目角度把Calibre PEX提取HSPICE网表这条链路完整走一遍从LVS验证的前置准备到PEX规则文件配置再到最终网表的解析与验证把我在项目里踩过的坑和常用调试手法一并交代清楚。1. 项目背景与整体思路拆解1.1 为什么LVS通过还不够很多刚接触后端验证的工程师容易有一个误区LVS跑干净了版图就“没问题”了。其实LVS只干了一件事——核对版图的器件连接关系与原理图是否一致。它验证的是拓扑逻辑不关心版图里两根金属靠得多近、一条长走线绕了多远。这些物理信息恰恰是模拟电路性能差异的根源。举个例子一个两级运放输入对管的版图走线如果长了一点栅极上的寄生电阻可能有几百欧和源极退化电阻串联进去整个极点位置就变了。更别说敏感节点上的寄生电容直接决定运放的单位增益带宽和相位裕度。全定制芯片里没有寄生参数的版图只能算“半成品”。LVS验证只解决“连接关系对”的问题PEX解决的是“提取真实物理效应”的问题。Calibre PEX就是把版图几何图形翻译成寄生R、C、甚至耦合电容再叠加到原器件的SPICE网表上生成一个带寄生参数的新网表。这就是后仿真数据来源。1.2 PEX在整个设计流程中的位置PEX不是孤立的工具它夹在“版图完成”和“后仿真验证”之间。通常的流程是这样的版图画完后先用Calibre做DRC查几何规则再做LVS查连接关系LVS通过后进Calibre PEX选好提取模式输出带寄生的网表最后把网表丢给HSPICE做后仿真。这个链条里PEX是承上启下的关键节点。上游依赖LVS的干净结果下游依赖输出网表的准确性和格式匹配。如果上游LVS带有warning或soft connect问题没处理PEX出来就是错误寄生网表后仿真做了也白做。我在项目里见到过太多“后仿挂了回头查发现是PEX的衬底网络搞错了”的情况浪费一两天就在排查这种低级问题。所以这篇文章的核心思路是先把LVS这一关守好再讲PEX配置的关键参数最后解析HSPICE网表和常见排错方法。整个思路就是“先拓扑干净再物理提取最后仿真验证”。2. 前置准备LVS验证必须做到“真的干净”2.1 LVS的基础流程与常见遗漏点做PEX之前我建议把Calibre LVS当作一次“清场”操作。不要看到LVS通过就完事要看全报告里的warning、info和reduce信息。LVS验证本身包含几个固定步骤版图数据读取、器件识别、连线提取、网表比对、结果报告。任何一个环节有隐患PEX阶段都可能放大成问题。实际操作中LVS最容易被忽略的是“电源/地网络识别”。很多工艺库的LVS规则文件里都会写POWER NAME和GROUND NAME比如VDD、VSS、DVDD、AGND。如果原理图网表里用的网络名是VDD!而版图里标签是VDDCalibre有时会通过层次映射自动对应但不代表所有网络都能正确归类。我的习惯是在LVS报告里检查这几个地方器件数量是否和原理图完全一致有没有莫名多出来的“浮空器件”电源地网络是否识别成global net任何关于soft connect的提示都必须逐条确认。LVS跑完不是终点报告读完才算结束。2.2 soft connect问题的识别与处理LVS soft connect是版图验证里特别容易埋雷的地方。什么叫soft connect简单说就是两个本应独立的网络之间通过电阻、电容、二极管等器件产生了“软连接”在LVS看来它们可能是同一个电位但实际电路设计里它们并不应该直接短接。最典型的就是ESD保护结构。IO pad到VDD之间有一个反偏二极管LVS可能把这个二极管当作导通路径于是pad网络和VDD网络被“软连接”到一起。如果工艺库的ESD规则不完善这种误判在LVS阶段只会报warning不影响LVS将版图和原理图匹配上但到PEX阶段衬底电位、电源网络、IO网络会被错误地捆在一起提取出来的寄生网表就乱套了。我的处理方法是在LVS运行前先在规则文件里定义好LVS SOFT CONNECT的开关和类型。Calibre常见有LVS SOFT CONNECT SUBSTRATE和LVS SOFT CONNECT WELL根据工艺选择对应选项。同时要检查LVS report里的“soft connect nets”列表确认哪些点是预期内的软连接哪些是版图画错导致的意外连接。预期内的软连接可以在PEX阶段用PEX SOFT CONNECT选项处理意外连接必须回到版图修改。2.3 OrCAD导出网表的规范化处理不少团队习惯用OrCAD Capture做原理图输入再导出SPICE网表给Calibre用。这个流程本身没问题但OrCAD导出的网表和Calibre LVS默认期望的CDL格式经常有差异需要做一些规范化清理。OrCAD导出网表时我一般选“SPICE”或“CDL”格式关键检查点有这几个器件名前缀是否和工艺库一致比如MOS管用M开头、电阻用R开头节点名里不能有特殊字符尤其是斜杠和空格Calibre读起来会报错电源和地必须用全局网络声明比如.GLOBAL VDD VSS否则LVS时会因为潜在网络不匹配而报错。另一个容易忽略的问题是网表里的器件尺寸。OrCAD原理图里的晶体管W/L参数如果导出时没保留Calibre LVS可能认为版图和原理图不匹配。我通常会先跑一遍“空PEX”——也就是不带寄生的LVS模式确认输入网表能完整对上游图。这个步骤宁可多花十分钟也别等PEX输出了网表才发现端口名对不上。2.4 PEX前必须确认的三个检查项每次进PEX之前我会强制自己过三个检查项避免流程返工。第一LVS报告里有没有未处理的ERROR和WARNING尤其是和连接关系相关的。第二输入网表里的顶层端口和版图标签是否一一对应可以用Calibre LVS报告里的端口列表交叉核对。第三确认后续仿真需要的是什么类型的寄生提前在PEX规则里做好选择不要默认全提取那样网表会非常庞大。3. Calibre PEX寄生参数提取全流程配置3.1 PEX规则文件的底层逻辑Calibre PEX和Calibre LVS共享一套规则文件族只是运行模式不同。规则文件里除了几何规则还包含器件识别、寄生参数提取算法、网表输出格式等配置。我拿到工艺厂提供的PEX rule后第一件事不是直接跑而是打开规则文件核对版本和关键配置项。PEX规则文件里最核心的几个设置包括提取类型C、R、RC、网表输出格式HSPICE、SPECTRE、CDL等、顶层端口定义方式、寄生参数的最小值和最大值过滤条件。其中PEX NETLIST FORMAT直接决定输出后缀和内容格式做HSPICE后仿真就必须选HSPICE。工艺厂通常会提供默认配置但默认不一定是项目最优解需要根据电路类型调。3.2 提取类型选择C only、R only还是RC这是PEX配置里最重要的决策直接影响网表规模和仿真精度。不同电路对寄生参数的敏感度完全不一样不能一刀切。C only模式只提取寄生电容不提取金属电阻和过孔电阻。适合数字电路或者快速预估算的场景因为数字电路对节点电容更敏感而且C only提取速度快、网表小。R only模式很少单独用一般用在电源网络或者ESD路径的IR drop分析。RC模式是模拟电路的标配既提取线网电阻也提取对地电容和耦合电容。高精度模拟、RF前端、电源管理类电路我一般都用RC并且把耦合电容选项打开。还有一种是RCCCCC指耦合电容coupling capacitor就是两条相邻走线之间的互容。这种模式网表最大仿真最慢但做串扰分析和高速接口设计时不能省。如果电路里有高阻抗敏感节点相邻信号线的耦合电容可能直接影响性能这时候必须把CC打开别心疼仿真时间。3.3 关键参数配置网表格式、寄生阈值、层次选择网表格式这块如果项目后仿真用HSPICE就必须把PEX规则配置成输出HSPICE格式。设置示例如下PEX NETLIST FORMAT : HSPICE PEX OUTPUT NETLIST : pex_netlist.sp PEX EXTRACT : RC PEX CAPACITANCE MINIMUM : 1e-17 PEX RESISTANCE MINIMUM : 1e-3 PEX COUPLING CAPACITANCE : YES PEX GROUND NODE NAME : VSS寄生阈值参数是个平衡技巧。PEX CAPACITANCE MINIMUM如果设得太小比如1e-20网表里会塞满几百上千个无用的小电容仿真速度急剧下降如果设得太大比如1e-15一些关键节点的小电容又被过滤了后仿精度打折。我一般先设一个中间值比如0.01fF跑完看网表规模和总寄生电容再微调。层次选择也很重要。PEX可以提取整个顶层也可以只提取某个子模块。全芯片含数字模块的电路全提取会让网表爆炸我通常只对模拟模块做详细RC提取数字模块用行为级模型代替。3.4 PEX运行模式图形界面与命令行Calibre PEX可以通过Calibre Interactive图形界面跑也可以命令行跑。图形界面适合初次配置和可视化检查命令行适合脚本化批处理。我个人的习惯是首次配置用图形界面把规则文件、输入文件、输出格式都确认清楚之后固定下来就写成脚本。命令行方式用起来其实更高效核心命令大概是这样的calibre -pex -hspice -spi pex_netlist.sp -lvs schematic.cdl pex_rule_file不过命令行参数在不同版本里略有差异建议先看当前版本的calibre -help输出。工程上我更多是用Calibre Interactive生成一个可重复执行的PEX runset文件里面记录所有配置项后续版本更新版图时直接套用避免手动配错。3.5 网表输出选项顶层网表还是子电路网表PEX输出网表有两种粒度展平flat和层次化hierarchical。展平网表把所有寄生器件和原始器件放在同一个层级适合中小规模电路仿真查错方便。层次化网表保留原始子电路结构寄生器件分别落在对应子电路内部适合大规模芯片。模拟电路后仿真我一般选层次化输出这样顶层连线干净子模块内部带着寄生仿真器也能利用层次加速。如果后续要跑蒙特卡洛或者PVT角仿真层次化网表更容易和统计模型集成。4. 生成HSPICE网表实操与关键环节实现4.1 从LVS验证到PEX提取的衔接操作实际操作时我习惯在Calibre Interactive里先加载LVS的rule文件运行一次LVS确认当前版图状态是干净的然后直接切到PEX模式。这样做的好处是避免版本不同步——有时候版图改了一版忘了重新跑LVS直接跑PEX得到的寄生网表其实是旧版图的。PEX的输入有三个版图文件GDS或OASIS、原理图网表用于器件映射、PEX规则文件。其中原理图网表最好用LVS阶段验证过的同一份保证器件命名和节点映射关系一致。进入PEX界面后在Inputs选项卡指定版图路径和网表路径在Outputs选项卡选择HSPICE格式并把输出文件名填好。接下来最关键的一步在“PEX Extraction”选项卡里确认寄生类型我通常选“Transistor Level”配合“RC”提取然后勾选“Extract Coupling Capacitors”。4.2 HSPICE网表的结构解析PEX跑完后生成的是一个完整的HSPICE网表里面既有原始器件也有寄生器件。先看网表头通常包含.SUBCKT或者顶层器件声明然后是器件列表最后是.END。拿一个简单的反相器举例带寄生的网表大概是这个结构.SUBCKT inv_pex VDD VOUT VIN GND M1 VOUT VIN GND GND nch W1u L60n M2 VOUT VIN VDD VDD pch W2u L60n Rpar_M1_D_1 M1:D 3 152.3 Rpar_M2_D_1 M2:D 4 98.6 Cpar_M1_G_1 M1:G 5 1.2f Cpar_M1_D_1 3 GND 3.4f Cpar_M2_D_1 4 GND 2.8f Ccouple_1 5 3 0.85f .ENDS注意看Rpar是寄生电阻Cpar是寄生电容Ccouple是耦合电容。节点名里的M1:D表示M1的漏极这是PEX自动展开的节点在仿真结果里可以直接查。实际网表规模比这个例子大几百倍。我拿到网表后会先做三件事一是统计节点总数和器件总数和LVS报告对比确认数量级合理二是扫描有没有异常大的寄生电阻或电容比如超过正常范围百倍的多半是提取错误三是确认所有原器件的宽长比和模型调用是否完整别让寄生器件把原器件参数覆盖了。4.3 寄生参数汇总报告的分析方法PEX跑完会生成一个report文件里面按网络或器件统计了寄生参数。我比较关注的是“Total Capacitance by Net”和“Critical Resistance”这两类信息。逐个检查网络电容的意义在于可以和人工估算对比。比如一个节点的负载电容理论上应该是1pF左右结果PEX提取出来是10pF那肯定有地方不对比如保护环没做隔离、或者相邻金属层距离过近导致耦合电容异常偏大。这些数据不能只靠眼扫我通常会用脚本抓取关键网络排序后重点看Top 10。4.4 把PEX网表送进HSPICE做后仿真拿到网表后我会写一个HSPICE仿真脚本把PEX输出的网表include进来再添加激励和测量语句。一个典型的仿真脚本大概是.option post2 runlvl5 .temp 25 .lib cmos_typical.lib tt .include pex_netlist.sp Xinv VDD VOUT VIN GND inv_pex VDD VDD 0 1.8 VIN VIN 0 pulse(0 1.8 0 1n 1n 10n 20n) .tran 0.05n 50n .measure tran tplh trig VIN val0.9 rise1 targ VOUT val0.9 fall1 .end这里有两个关键点PEX网表里的子电路名要和.include后实例化的子电路名对应上寄生参数里的节点如果包含VSS之类的全局网络必须在仿真脚本里用.GLOBAL声明或者在底层网表里已经定义好。我第一次跑后仿时就因为端口名大小写不匹配仿真器报了“subcircuit not found”排查了半天才发现是PEX输出网表里端口名和激励文件不一致。5. 常见问题与排查技巧实录5.1 LVS干净但PEX报错的根源定位这是项目里最让人头疼的情况之一。LVS跑得干干净净PEX一跑就报错常见原因集中在三类输入网表格式不兼容、端口映射丢失、软连接处理方式不一致。如果是网表格式问题Calibre一般会报“unable to parse”之类的明确提示对着改就好。最难查的是端口映射丢失——版图里标签是文本标签没有转换成pinLVS靠文本标签勉强匹配但PEX需要明确的pin定义来构建端口列表文本标签在PEX阶段会被当成普通连线导致顶层端口缺失。解决办法是在版图里把顶层输入输出都用pin层标识或者用PEX TOP PIN相关的规则手动声明端口。我还会优先检查PEX report开头的“Input Netlist”和“Layout”摘要信息确认两个文件都被正确识别。如果版图文件路径错了但之前缓存了LVS结果PEX经常给出莫名其妙的错误这类问题直接重新指定文件路径就能解决。5.2 寄生参数异常大或异常多遇到提取结果数量级不对时我第一个反应是检查提取阈值设置。如果PEX CAPACITANCE MINIMUM设成了1e-18网表里会多出大量亚飞法级电容仿真器处理起来很吃力但这不是“错误”。真正的问题是提取算法把同一段寄生重复计算了常见于层次化提取时的边界重叠。解决办法是把PEX设置为“flatten”模式跑一遍和层次化结果对比。如果展平结果和层次结果差异巨大说明子电路边界上有重复计数需要调整PEX HIERARCHICAL相关的保留选项。还有一个常见原因是PEX把器件的源漏扩散区电容重复提取这种情况要在网表里检查器件自身的cgs、cgd等模型参数是否仍然存在如果和寄生电容叠加了需要在仿真脚本里关闭某些寄生模型选项。5.3 soft connect在PEX阶段导致的衬底网络错乱这个坑我在ESD保护相关的模块里踩过一次影响很大。LVS阶段soft connect只报warning但PEX阶段如果没专门处理衬底节点会被错误连接导致提取出的衬底寄生网表和实际版图完全对不上。现象是后仿真时衬底噪声异常大或者VSS网络上出现了原本不存在的阻抗。处理方式分两步。第一步在LVS规则里明确设置LVS SOFT CONNECT的类型把衬底和阱的连接规则收敛到和工艺一致第二步在PEX运行选项里把PEX SOFT CONNECT关闭或者手动指定哪些网络是真正的power/ground让PEX不要通过软连接把其他网络绑进来。对于ESD结构我还会额外加一条“隔离网络”定义把IO pad和VDD之间的二极管通路排除在PEX提取范围外。5.4 OrCAD网表和Calibre PEX对接的常见踩坑用OrCAD导出网表和Calibre PEX对接时最大的坑是器件模型名和PEX期望的模型名不匹配。OrCAD的原理图符号里可能写着NMOS导出成SPICE后变成M1 ... NCH而Calibre PEX规则期望的是nch或nch_25ud这种工艺库模型名。这类问题会导致器件识别失败。我的经验是在导出网表前先在OrCAD里把器件的“PCB Footprint”或“Model”属性统一改成和工艺库一致的模型名。另外OrCAD导出的网表经常不带.GLOBAL声明尤其是VSS和VDD需要在文本编辑器里手动补上。这个步骤很容易遗漏我后来直接写了一个Python脚本自动检查并补充全局网络声明和模型名把人工检查的工作量降下来。5.5 PEX提取后仿真结果和前仿差异过大这是后仿真阶段最常见的疑问。差异过大不一定是PEX错了可能是提取的寄生确实很严重也可能是配置不当导致网表失真。我的排查顺序是先用C only模式跑一发对比前仿观察趋势再切换到RC模式看电阻部分贡献了多少。如果C only已经和前仿差很多基本说明版图走线太长或太近寄生电容主导了性能变化这时候应该回版图优化走线和器件布局。如果C only正常RC后差异突然变大说明关键通路上的寄生电阻影响很大重点检查栅极和源漏的过孔数量是否该多点contact的地方只打了一个。PEX网表只是把版图物理量真实地反映出来很多时候性能问题源头在版图画法不在提取过程。另外我在实际使用中习惯把PEX网表按“关键模块”拆开仿真不用一上来就仿真整个顶层。比如一个ADC先把比较器子电路的寄生网表单独拿出来仿真确认没问a题再集成到顶层。这样定位问题快得多也避免被海量寄生参数淹没。最后再分享一个小技巧PEX report里的总寄生电容和总寄生电阻我每次都会记录到项目日志里版图每改一版就对比一次。这个习惯帮我很多次因为版图的微小改动经常在性能上没体现但寄生参数曲线会提前泄露趋势。做模拟IC这行寄生参数就是隐藏的“暗物质”摸清楚它的脾气后仿真才谈得上可信。
返回列表