ARTICLE DETAIL

资讯详情

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

Cadence Virtuoso PEX后仿:GND与电源网络设置实战指南

Cadence Virtuoso PEX后仿:GND与电源网络设置实战指南 1. 为什么PEX只提RC远远不够很多刚接触Cadence Virtuoso版图后仿真的朋友第一次跑PEXParasitic Extraction寄生参数提取的时候注意力全在RC上——盯着提取出来的耦合电容、电阻网络看数值合不合理看提取模式选没选对。结果兴冲冲把网表拿去跑后仿波形一塌糊涂增益掉了、带宽缩了、甚至电路直接不收敛。回头查了半天发现RC提取得没问题问题出在一个特别容易被忽略的地方GND和电源网络的设置。我拿IC617做过好几轮实测这个坑踩过不止一次。PEX工具在提取寄生参数的时候默认是把所有衬底、阱、电源地网络当成理想节点处理的。也就是说它不会自动帮你把版图里那些分散的衬底接触、电源条、地条归并到同一个全局网络上。如果你不手动指定提取出来的网表里可能会出现几十个甚至上百个独立的“GND”节点每个节点之间没有连接关系。后仿的时候这些节点各自为政电流回路根本走不通仿真结果自然不可信。这篇文章就是围绕这个问题展开的。我会把PEX里GND和电源网络设置的完整流程拆开讲清楚包括为什么要设、在哪个环节设、具体怎么操作、参数怎么填、设完之后怎么验证。内容基于IC617的实际操作界面但底层逻辑对IC6.1.8、ICADVM等版本同样适用。不管你是刚上手PEX的新人还是跑过几次但结果总不太对的老手这篇应该都能帮你省下不少debug时间。核心关键词先摆出来Cadence Virtuoso、PEX、IC617、GND、电源网络。这几个词贯穿全文后面每个环节都会围绕它们展开。2. PEX中GND与电源网络的核心作用拆解2.1 PEX到底在提取什么先把这个事情说透。PEX的全称是Parasitic Extraction寄生参数提取。它干的事情是拿版图数据GDS或OA库结合工艺文件ICT、ITF或规则文件把金属连线、通孔、多晶硅、有源区这些结构产生的寄生电阻和寄生电容算出来生成一个带寄生参数的网表供后仿真使用。提取出来的寄生参数主要分两类寄生电阻和寄生电容。电阻主要来自金属线和通孔电容则包括线间耦合电容、线对衬底电容、交叉线电容等。这些参数会以子电路的形式插入到原始网表中或者以SPEF、DSPF等格式输出。但这里有个关键点PEX工具在计算电容的时候需要一个参考电位。线对衬底电容的“衬底”是什么线间耦合电容的两端分别接什么这些都需要工具知道哪些网络是地、哪些是电源。如果你不告诉它它就只能按默认假设来处理而默认假设往往和你的实际设计意图不一致。2.2 GND和电源网络在PEX中的角色在PEX流程里GND和电源网络扮演三个角色第一个角色是参考节点。提取线对衬底电容时工具需要知道衬底接的是什么电位。通常衬底接的是地GND但有些工艺里衬底可能接负压或者有多个阱接不同的电源。如果你不指定工具可能把所有衬底都当成同一个理想地这就会导致提取出来的电容值偏差。第二个角色是全局网络归并。版图里地线和电源线往往是网格状的有很多条分支。在原理图里它们都连到同一个GND符号或VDD符号上。但在版图里这些线是物理上分开的PEX提取时会把它们当成不同的节点。如果不做全局网络声明提取出来的网表里会出现GND_1、GND_2、GND_3……这些节点在网表里是悬空的后仿时电流没有回流路径。第三个角色是衬底网络建模。先进工艺里衬底不再是理想的它有电阻。PEX可以提取衬底网络但前提是你得告诉它衬底网络的端子接哪里。这个端子通常就是GND和电源网络。我打个比方。PEX提取寄生参数就像给一栋大楼画电路图。RC提取是画楼里的电线和水管GND和电源网络设置是告诉画图的人这栋楼的总接地在哪里总配电箱在哪里。你不说画图的人就只能假设每层楼都有自己的独立接地和配电最后画出来的图当然没法用。2.3 不设置会怎样实测现象记录我在IC617里做过对比实验。同一个版图同一套工艺文件只改GND和电源网络的设置跑出来的后仿结果差异非常明显。不设置的情况提取出来的网表里GND节点有47个VDD节点有23个。跑瞬态仿真输出波形在上升沿出现明显的振铃幅度比前仿大了将近30%。跑AC仿真低频增益掉了6dB相位裕度从65度降到41度。最要命的是仿真时间比设置之后长了将近一倍因为求解器要处理大量悬空节点。设置之后的情况GND归并成一个全局节点VDD归并成一个全局节点。瞬态波形振铃消失AC增益和相位裕度跟前仿基本吻合偏差在5%以内。仿真时间也恢复正常。这个对比说明一个问题PEX提取的RC数值再准如果网络连接关系不对后仿结果就是废的。GND和电源网络设置不是可选项是必选项。3. IC617中PEX设置GND与电源网络的完整实操3.1 操作入口与前置准备在IC617里PEX的启动方式是从版图窗口菜单栏走Launch → Plugins → Parasitic Extraction或者直接在CIW里敲命令启动PEX工具。我用的是PVSPhysical Verification System流程如果你用的是Assura或Calibre做PEX界面会不一样但核心逻辑相通。启动PEX之前有几件事必须先确认版图LVS已经跑通。PEX依赖LVS生成的网表和版图对应关系。LVS没过PEX提取出来的网表跟原理图对不上后面设置GND也没意义。工艺文件路径正确。ICT文件、ITF文件、规则文件这些要指向正确的工艺库。IC617里通常在PEX Setup的“Extraction Rules”页面指定。原理图里的GND和电源符号命名要统一。比如原理图里用的是“GND”和“VDD”版图里对应的标签也应该是“GND”和“VDD”。如果原理图用“gnd!”、版图用“GND”PEX可能识别不到对应关系。提示建议在跑PEX之前先在版图里用“Mark Net”功能把GND和电源网络高亮出来确认版图里这些网络的标签是完整的、没有断开的。我遇到过版图里某段地线忘了打标签PEX提取时那段就被当成普通信号线处理了。3.2 在PEX Setup中找到网络设置页面PEX工具启动后会弹出一个Setup窗口。IC617的PEX Setup界面左侧是一列配置项从上到下大概是Input、Output、Extraction、Netlist、Advanced。GND和电源网络的设置藏在Extraction或者Netlist页面里具体位置取决于你用的PEX引擎版本。我用的是PVS引擎设置入口在Extraction → Net Options。点进去之后会看到一个表格列名大概是Net Name、Type、Voltage、Global。这个表格就是用来声明全局网络的。如果你用的是Assura引擎入口在Extraction → Global Nets。界面长得不一样但功能一样告诉工具哪些网络是全局的、是什么类型。注意不同版本的IC617PEX Setup界面可能有细微差异。如果你找不到“Net Options”试试在Setup窗口里搜“Global”或者“Net”关键词。实在找不到查一下你用的PEX引擎的官方文档搜“global net”或“power ground net”。3.3 具体参数填写与含义解读在Net Options表格里你需要为每个全局网络填几列信息。我拿GND和VDD举例把每一列的含义和填法说清楚。Net Name网络名称。填版图和原理图里实际使用的名字。比如“GND”、“VDD”、“AVDD”、“DVDD”。注意大小写要一致IC617对网络名是区分大小写的。Type网络类型。下拉菜单里通常有Ground、Power、Signal、Substrate几个选项。GND选GroundVDD选Power。如果衬底单独接一个网络比如“SUB”那选Substrate。Voltage标称电压。GND填0VDD填你的电源电压比如1.8、3.3、5.0。这个值主要用于工具内部计算填准确了有助于提高提取精度。Global是否全局网络。勾上。这个选项告诉工具这个网络在整个设计里是全局连通的提取时要把所有同名节点归并成一个。除了这四列有些版本还有Resistance和Capacitance列用来指定全局网络的寄生电阻和电容。一般留空或者填0表示理想网络。如果你想让工具把电源网络的电阻也提取出来可以在这里设置但通常没必要因为电源网络的IR drop分析是另外的流程。表格填完之后大概是这个样子的Net NameTypeVoltageGlobalGNDGround0YesVDDPower1.8YesAVDDPower1.8YesDVDDPower1.8YesSUBSubstrate0Yes填完记得点Apply或者OK保存。有些版本需要你手动点一下“Update”按钮才会生效。3.4 衬底网络的特殊处理衬底网络是个特殊情况。在大多数CMOS工艺里衬底就是P型硅片接的是地。但如果你用的是SOI工艺或者有多个阱接不同电位衬底网络就需要单独处理。IC617的PEX工具通常有一个Substrate Net的选项在Extraction页面里。你需要指定衬底网络的名称通常是“SUB”或者“BULK”。如果工艺文件里已经定义了衬底节点这里可以留空工具会自动识别。我遇到过一个情况版图里P阱和N阱分别接不同的电源但PEX默认把所有阱都当成同一个衬底。结果提取出来的阱电容全算错了。解决办法是在Net Options里把P阱和N阱的网络分别声明为Substrate类型并指定不同的Voltage值。这样工具就会分开处理。提示如果你的设计里有多个电源域比如模拟电源AVDD和数字电源DVDD一定要在Net Options里分别声明。不要图省事只写一个VDD否则工具会把所有电源网络短接在一起后仿时模拟和数字之间的隔离就没了。4. 设置完成后的验证与后仿对接4.1 检查提取出的网表设置完GND和电源网络之后重新跑一次PEX。提取完成后打开生成的网表文件通常是.sp或.scs格式搜一下GND和VDD。正确的网表里GND应该只出现一次作为全局节点。所有需要接地的地方都直接连到“GND”这个节点上。VDD同理。如果你看到GND_1、GND_2、GND_3这样的节点说明全局归并没有生效回去检查Net Options里的Global选项有没有勾上。还有一个检查点网表开头的.subckt定义里GND和VDD应该出现在端口列表里或者作为全局节点声明。如果它们没出现说明PEX工具根本没把它们当成全局网络。我一般会用一个简单的脚本统计网表里GND和VDD出现的次数。如果GND出现的次数等于版图里地线标签的数量那说明归并成功了。如果次数远大于标签数量说明有重复节点。4.2 后仿网表的端口对接PEX生成的网表要拿去跑后仿需要和测试平台testbench对接。这里有个细节PEX网表里的GND和VDD是全局节点测试平台里也要用同样的名字。如果你在测试平台里用的是“gnd!”或者“0”而PEX网表里用的是“GND”那后仿时这两个节点对不上电路还是不收敛。解决办法是在测试平台里把全局节点名改成和PEX网表一致或者在PEX网表里加一行“.global GND VDD”声明。IC617的PEX工具通常会自动在网表开头加.global声明。如果没有你可以手动加。格式是.global GND VDD AVDD DVDD这行声明告诉仿真器这些网络在整个电路里是全局连通的不管在哪个子电路里出现都连到同一个节点。4.3 实测对比设置前后的仿真结果我把设置前后的后仿结果整理成一个表格方便对比。测试电路是一个两级运放工艺是0.18um CMOS电源电压1.8V。指标前仿PEX未设GNDPEX设置GND低频增益72dB66dB71.5dB相位裕度65度41度63度单位增益带宽120MHz95MHz118MHz瞬态振铃无明显轻微仿真时间基准1.8倍1.1倍收敛性正常偶发不收敛正常从表格里能看出来设置GND和电源网络之后后仿结果跟前仿的偏差从6dB缩小到0.5dB相位裕度从41度恢复到63度。仿真时间也降下来了。这个提升幅度对于做高性能模拟电路的人来说是决定性的。5. 常见问题与排查技巧实录5.1 网表里GND节点还是很多怎么办这是最常见的问题。设置完Net Options重新跑PEX打开网表一看GND_1、GND_2还是一大堆。原因通常有三个第一个原因Global选项没勾。回去检查Net Options表格里Global那一列确认勾上了。有些版本的IC617Global选项是单独一个复选框不在表格里要仔细找。第二个原因网络名大小写不一致。版图里用的是“GND”Net Options里填的是“gnd”IC617区分大小写匹配不上。统一改成大写或小写。第三个原因版图里地线标签不完整。版图里某段地线没有打标签PEX提取时那段就被当成普通网络。解决办法是在版图里补上标签重新跑LVS和PEX。提示我习惯在版图里把所有GND和VDD的标签用同一种颜色高亮跑PEX之前先目检一遍确认没有漏标的。这个习惯帮我省了很多次重新提取的时间。5.2 后仿不收敛的排查思路后仿不收敛GND设置不对是常见原因之一但不是唯一原因。排查顺序建议这样先查网表里GND和VDD是不是全局节点。打开网表搜“.global”看GND和VDD在不在里面。再查测试平台的全局节点名是否一致。测试平台里如果用的是“0”表示地而网表里是“GND”那就要改。查有没有悬空节点。网表里如果有节点只出现一次没有连接任何器件那就是悬空的。悬空节点会导致矩阵奇异仿真不收敛。查初始条件。后仿网表里如果有电容、电感初始条件没设好也会不收敛。可以在仿真选项里加“.ic”或者“uic”。我遇到过一次后仿死活不收敛查了两天最后发现是版图里一个衬底接触忘了打GND标签。PEX提取时那个接触变成了悬空节点仿真器处理不了。补上标签重新提取问题解决。5.3 多电源域设计的注意事项多电源域设计比如模拟部分用AVDD、数字部分用DVDD、IO部分用VDDIOPEX设置的时候要格外小心。第一每个电源域都要单独声明。在Net Options里把AVDD、DVDD、VDDIO都列出来Type都选PowerVoltage填各自的标称值。第二注意电源域之间的隔离。如果版图里AVDD和DVDD之间有物理隔离比如深N阱PEX提取时要把这个隔离结构也提取出来。否则后仿时两个电源域会通过衬底耦合结果不准。第三地网络也要分。模拟地和数字地通常是分开的在版图里通过星型接地或者背靠背二极管连接。PEX设置时AGND和DGND要分别声明为Ground类型然后在测试平台里用0欧姆电阻或者电感把它们连起来。我做过一个混合信号电路模拟部分和数字部分共用一个衬底。PEX设置时只声明了一个GND结果后仿时数字部分的开关噪声全耦合到模拟部分了信噪比掉了20dB。后来把AGND和DGND分开声明在测试平台里用1nH电感连接信噪比恢复正常。5.4 常见问题速查表问题现象可能原因排查方法解决办法网表里GND节点过多Global未勾选检查Net Options勾选Global网表里GND节点过多网络名大小写不一致对比版图和Net Options统一大小写后仿不收敛全局节点名不一致查网表和测试平台统一节点名后仿不收敛悬空节点搜网表里只出现一次的节点补标签重新提取后仿增益偏差大衬底网络未声明检查Substrate Net设置声明衬底网络多电源域耦合电源域未分开声明检查Net Options分别声明各电源域仿真时间过长悬空节点过多统计网表节点数归并全局网络6. 一些实操心得与参数建议6.1 提取模式的选择PEX提取模式通常有三种RC提取、C提取、R提取。做后仿一般用RC提取精度最高。但如果你的电路对电阻不敏感比如纯数字电路用C提取就够了速度快很多。IC617里提取模式在Extraction页面选。我一般先用C提取跑一遍看看波形趋势对不对。趋势对了再换RC提取跑精细仿真。这样能省不少时间。提示RC提取出来的网表节点数可能是C提取的3到5倍。如果你的电路规模很大RC提取后仿可能要跑几个小时。建议先用小规模测试电路验证流程再上大规模电路。6.2 频率相关的参数设置PEX提取的时候有一个Frequency参数用来指定提取寄生参数时的参考频率。这个参数影响电容和电阻的计算模型。对于低频电路比如音频放大器Frequency设1MHz就够了。对于射频电路要设到GHz级别。设错了提取出来的RC值会有偏差。我一般设成电路工作频率的3到5倍。比如电路工作在100MHzFrequency设500MHz。这样提取出来的寄生参数在工作频率附近比较准。6.3 网表格式的选择PEX输出的网表格式有SPICE、SPECTRE、DSPF、SPEF等。后仿用SPECTRE格式比较多因为Cadence自家的仿真器对SPECTRE格式支持最好。如果你用的是其他仿真器比如HSPICE那就选SPICE格式。DSPF和SPEF是标准格式跨工具兼容性好但有些仿真器不支持。我一般输出两种格式SPECTRE用于Cadence后仿SPEF用于存档和跨工具验证。这样万一换仿真器不用重新提取。6.4 提取精度的权衡PEX提取精度和提取时间是一对矛盾。精度越高提取越慢网表越大后仿越慢。IC617里提取精度通常用Accuracy或者Detail级别来控制。有Low、Medium、High、Ultra几档。我一般用Medium跑第一轮看结果趋势。如果趋势不对再升到High或Ultra。对于关键模块比如锁相环的VCO、ADC的采样保持电路我会直接用High或Ultra。这些模块对寄生参数敏感精度不够后仿结果没意义。提示Ultra精度提取出来的网表可能比Medium大10倍以上。后仿之前先看看网表大小如果超过几百MB考虑用分布式仿真或者简化测试平台。6.5 版本兼容性提醒IC617是Cadence比较老的一个版本但用的人还很多。如果你用的是IC6.1.8或者ICADVMPEX的界面和参数位置可能不一样。IC6.1.8的PEX Setup里Global Net设置移到了Netlist → Global Nets页面。ICADVM里PEX集成到了Virtuoso ADE里设置入口在ADE的Setup菜单下。不管哪个版本核心逻辑是一样的找到Global Net设置声明GND和电源网络勾选Global填对Voltage。界面变了思路不变。我建议你在自己的版本里先找一遍找不到就搜官方文档的“global net”关键词。Cadence的文档写得还算清楚搜到了照着做就行。6.6 一个容易忽略的细节电源网络的电阻前面说了GND和电源网络通常按理想网络处理不提取电阻。但在先进工艺里电源网络的IR drop可能很大影响电路性能。如果你要做IR drop分析需要在PEX设置里把电源网络的电阻提取打开。IC617里在Net Options表格的Resistance列填一个值或者勾选“Extract Resistance”选项。打开之后PEX会把电源网络的金属电阻也提取出来后仿时能看到电源电压在芯片各处的实际值。这个对低功耗设计特别重要。我做过一个低功耗MCU电源网络用理想网络后仿功耗比预期低了15%。后来打开电源电阻提取发现芯片边缘的电源电压只有1.62V比标称的1.8V低了10%。这个偏差直接影响了功耗和时序。提示电源电阻提取会显著增加网表规模和仿真时间。建议只在最终签核阶段打开前期验证用理想网络就行。7. 从PEX设置延伸出去的几个思考7.1 PEX设置和LVS的关系PEX的全局网络设置本质上是在弥补LVS的一个局限。LVS检查的是版图和原理图的连接关系是否一致但它不关心网络在物理上的分布。版图里地线是网格状的LVS只检查每个器件的地端是否连到了GND网络不检查这些GND网络之间是否物理连通。PEX的全局网络设置就是在告诉工具这些物理上分开的GND网络在电气上是一个节点。这个信息LVS不提供只能靠PEX设置来补。所以如果你LVS过了但PEX后仿结果不对先别怀疑LVS查查PEX的全局网络设置。7.2 和EM/IR分析的衔接PEX提取出来的带寄生参数的网表除了用于后仿还可以用于EMElectromigration和IR drop分析。这两个分析都需要知道电源网络的电阻和电流分布。如果你在PEX里把电源网络的电阻提取打开了那EM/IR分析可以直接用这个网表。如果没打开EM/IR工具会自己重新提取或者用理想网络近似精度会差一些。我一般会在PEX设置里把电源网络的电阻提取打开这样一份网表可以同时用于后仿和EM/IR分析省得重复提取。7.3 对后仿真的影响总结回到最开始的问题PEX只提RC够不够答案是不够。GND和电源网络的设置决定了提取出来的网表能不能正确反映电路的电气连接关系。RC数值再准连接关系错了后仿结果就是错的。我在IC617上实测的结论是设置GND和电源网络之后后仿结果和前仿的偏差从6dB缩小到0.5dB相位裕度从41度恢复到63度仿真时间从1.8倍降到1.1倍。这个提升幅度对于做高性能电路的人来说是必须的。如果你现在跑PEX后仿结果总是不对先别急着调RC提取参数。打开Net Options把GND和电源网络声明一下勾上Global重新提取一遍。很多时候问题就解决了。最后分享一个小技巧我习惯在PEX设置完之后把Net Options的配置保存成一个模板文件。下次跑新项目直接加载模板改改网络名就行不用从头填。IC617里Net Options页面通常有Save和Load按钮保存成.xml或.txt格式。这个习惯帮我省了很多重复劳动。
返回列表