尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

SIwave仿真入门指南:从叠层设置、网格剖分到DC压降分析

SIwave仿真入门指南:从叠层设置、网格剖分到DC压降分析 作为一个常年和PCB、封装以及高速互连打交道的仿真工程师我太清楚一张布局密不透风的板子到了高频阶段会有多让人焦虑。SIwave这个名字在信号完整性SI和电源完整性PI圈子里几乎是绕不开的。它解决的核心问题就一句话把你的版图文件变成能算、能看、能指导改板的电磁模型然后告诉你哪些走线会出问题、电源在哪个角落已经饿到只剩空壳电压。这套手册的第一篇我计划从软件的使用思维讲起把那些菜单背后到底在干什么、叠层里每一项为什么重要、网格剖分和频率之间有什么账要算清楚。无论你是刚接触仿真的在校生还是已经用其他EDA工具想转过来做板级仿真的工程师这篇文章都能帮你把地基打牢。老实说SIwave的界面并不复杂但它的学习曲线隐藏在“概念”里——什么是EDB工程、为什么一个叠层数据不对会导致后面所有结果白算、为什么网格剖分不是越密越好。这些如果没人点透你会卡在“能打开软件但不知道下一步点哪”的状态。这篇内容就是用来解决这个问题的。1. SIwave到底能干什么先把工具定位焊死1.1 从设计图纸到仿真模型的底层逻辑SIwave的定位是板级和封装级的电磁场仿真它区别于HFSS那种三维全波仿真器也区别于ADS那种偏向电路和链路级别的仿真环境。SIwave的独特之处在于它直接用版图数据来构建物理模型——你不需要在软件里画一根微带线或者手动建立平面腔体它会把PCB的叠层、走线、过孔、铜皮、封装基板上的几何全部转换为可用于电磁场求解的模型。这意味着只要版图设计工具里的数据是完整的你在SIwave里就能快速得到某个网络的阻抗曲线、谐振分布、压降情况或者辐射热点。很多初学者会犯一个方向性错误要么以为SIwave能做芯片内部的晶体管级仿真要么把它和ADS里的Momentum混为一谈。前者需要芯片设计工具后者更偏向于对特定电路结构的高频精确建模。而SIwave的核心战场是整板级的电源完整性PDN阻抗、谐振和全链路级联后的信号完整性。如果打开SIwave前你能清楚地说出“我这次要分析的是哪块板、哪个网络、哪个频段”那软件操作就只是体力活了。SIwave真正的门槛在于理解各种分析类型的物理含义DC压降算的是直流路径上的电阻损耗Z(f)算的是电源分配网络的频域阻抗而S参数仿真则是为了搭建高速通道模型。从设计流程来看SIwave通常扮演的是“中间裁判”的角色。前端设计完成后版图文件从Altium Designer、Cadence Allegro、Mentor Expedition中导出经由Ansys的EDB转换模块导入SIwave然后完成叠层、网络、器件模型的修改与确认最后跑各种分析。分析结果再反哺到设计端去优化走线宽度、过孔数量、去耦电容位置和数量。这也解释了为什么SIwave对叠层数据的要求极其严格——你的版图设计文件里叠层厚度如果不正确那么后面算出来的所有阻抗谐振都是错的。这一点怎么强调都不过分。1.2 一个SIwave工程的完整生命周期一个踏实的SIwave项目大概会经历七个阶段我们先把框架定型在脑子里。首先是数据获取与转档这一步我踩过不少坑不同EDA软件导出的Odb或BRD文件有时会丢图层所以在SIwave里打开后第一件事是用3D视图检查模型完整性而不是直奔仿真。第二步是叠层材料与电气参数确认这里要核对板厂提供的叠层报告是否与版图设计工具设置的参数一致尤其是介质厚度和铜箔粗糙度这两个直接影响高频损耗的字段。第三步是网络与器件模型处理比如给电源网络的目标芯片设置负载模型、给去耦电容分配等效电路模型S参数或Spice这是从“一块裸铜板”迈向“可仿真的电路行为模型”的关键一步。接下来是求解设置与仿真覆盖DC、频域、时域等多种类型。之后就是结果后处理与判读这一步要求工程经验不能只看颜色分布图要能理解电压最低点、电流密度最大的区域意味着什么。再往后是优化迭代与验证基于仿真结果修改版图或更换电容值再跑一轮确认指标达到要求。最后是文档化与报告输出把收敛性数据、结果图、设计建议整理成可交付的内容。这套生命周期在SIwave的图形界面上对应的就是导入Import→叠层堆栈编辑Layer Stackup→ 网络编辑Nets→ 仿真Simulation→ 结果Results→ 报告Report这几个标签页。第一篇既然是软件基础我先把每个环节中最核心、最容易被忽略的概念讲清楚。2. 装完软件先花10分钟看懂界面和工程管理2.1 工作区、项目树和菜单到底是怎么组织的SIwave现在以Ansys Electronics DesktopAEDT为宿主框架。这套界面对于用过任何微软系的软件来说都不陌生顶部是菜单栏和工具栏左侧是项目树中间是版图/模型/网格显示区底部是消息管理器和进度栏。真正需要花点心思的是项目树里的内容组织因为它按“工程Project→设计Design→分析Analysis→结果Results”的结构展开。不同版本的SIwave项目树名称略有差异但核心的“Excitations激励”“Mesh Operations网格操作”“Analyses分析”这些节点都会出现。在项目树里双击“Simulation”节点下的任意一个分析项会在流程窗口中展示这个分析使用的激励源、求解频率范围、网格设置以及输出变量。这种树形结构的好处是当你的项目库里有几十个仿真设置时可以清楚追溯每个结果是从哪套参数、哪个网格下产生的板级仿真问题上“结果可追溯”非常重要因为你的输入文件版本可能每天都在更新。底部消息管理器的意义初学者基本会无视。但说实话很多“仿真报错但不知道错在哪”的时刻答案就藏在消息窗口的警告里。比如导入设计文件时SIwave会提示“某层没有材料分配”“部分铜箔因网络断开而未被识别”这些警告比后面仿真不收敛好处理得多。我给自己定的规矩是每次导入新板子先把消息窗口拉到最大逐条阅读所有警告再决定下一步操作。2.2 EDB工程文件为什么SIwave要用自己的格式你打开SIwave后会看到一个概念叫EDB全称是Electronics Database。你可以把它理解为Ansys专门为SI/PI仿真打造的“PCB数据容器”。它的出现源于一个现实需求版图设计工具里的数据是给制造和布线看的缺乏“网络电气属性”“叠层材料介电常数”“表面电流分布”这些仿真关注的信息。EDB就像一个翻译器它把CAD领域的几何图形数据重新组织成求解器能够快速识别和求解的电磁模型。在SIwave里“打开文件”不是直接双击一个BRD文件就能完成的它通常需要通过EDB转换器EDB Transformer导入。也有快速入口主界面中的“Launch SIwave”会打开空白工程然后通过Import导入数据。如果你手头有别人已经妹好的SIwave工程后缀通常是.siw那么直接打开它就能看到完整的叠层设置、激励和解算配置。EDB格式为什么重要因为它统一了三维模型、叠层、网络、端口和求解设置。它不是一个孤立文件而是一个以数据库方式组织的模型工程。如果你在SIwave中修改叠层厚度或材料属性修改后的信息可以直接反馈到后续的DC/频域分析中而无需重新导入几何模型。这种“参数化关联”极大地提升了仿真数据的一致性。相比之下很多其他工具里你修改版图后需要手动同步模型容易出现几何模型与电气设置不一致的隐患。2.3 叠层管理器仿真精度从这里开始如果说EDB是SIwave的数字骨架那叠层Layer Stackup就是骨架的关节。几乎所有仿真的物理正确性都取决于叠层定义是否精准。打开“Layer Stackup”面板你会看到从Top到Bottom一层层排列的名称和材料。每一层需要关心几个核心字段导体层的电导率和厚度、介质层的介电常数Dk和损耗角正切Df、以及整个叠层的对称关系。很多从射频领域转过来的工程师习惯性强依赖“板厂给的Dk是4.4”却忽略了Dk在GHz频率范围内会有明显频散。SIwave的材料库提供了一些常见的板材模型比如FR4、Rogers 4350B、Megtron6等你可以直接选用也可以自定义材料并给出频率相关的Dk和Df值。损耗角正切Df直接影响插入损耗仿真结果如果你把FR4在高频下的Df当成0.001来设算出来的高速通道损耗会显得异常理想这会掩盖真实链路中的眼图闭合风险。导体层设置还有一个容易出错的地方是“表面粗糙度”SIwave里可以用等效粗糙度或Hammerstad模型来模拟铜箔粗糙度带来的附加损耗如果只填铜厚而忽略粗糙度5GHz以上的高速设计仿真结果与实测往往差一大截。叠层管理器的左侧一般会显示每一层的物理厚度和上下铜箔厚度右侧则是材料库和属性编辑区。关于叠层结构这里分享一个我在实际项目里的教训。一个6层的单板板厂实际Dk在1GHz/5GHz/10GHz三个频点的值分别是4.3/4.2/4.0而我最初用了4.4恒定值仿真差分线回损曲线在8GHz附近出现了一个虚假谐振。后来我把频变Dk数据录入材料库再跑了一遍谐振消失与实测吻合。这件事以后我再也没有偷懒用过固定常数。3. 上手第一天就该掌握的基础操作3.1 视图导航、选择与测量SIwave的图形窗口操作很直观按住鼠标中键平移滚动滚轮缩放右键拖拽旋转视角。如果你是台式机的标准三键鼠标这套操作可以让你非常丝滑地在叠层间游走。工具栏里有一个下拉列表可以直接切换视角到顶层、底层或某个具体层对于多层板来讲单独显示某一层的铜皮布线会更方便检查网络连接。选择对象是SIwave的基本功。在编辑状态下点击图形窗口中的走线、过孔或铜皮左侧属性窗口就会显示该对象所属的网络、所在层以及一些几何参数。如果你刚导入一个复杂的服务器主板上万个图形对象会让选择操作变得异常卡顿这时使用左侧项目树中的“过滤”功能指定只显示某个网络或只选中某一层上的对象效率会高很多。测量工具是保证模型正确性的常用手段SIwave提供了距离测量、坐标测量和角度测量。比如你怀疑一根差分对在某个区域间距被拉开导致阻抗突变直接用测量工具在两端各点一次宽度和间距一目了然。当然在仿真开始前最好还是在原设计工具里确认叠层数据SIwave里测量只是辅助核对手段。3.2 网络梳理与模型检查导入后别急着求解刚导入一个板卡项目树中的“Nets”节点下列出的网络可能多达几百个比如“GND”“VCC_1V0”“PCIE_RX0_P”“PCIE_RX0_N”。做仿真前你需要对这些网络进行“合并”和“简化”。为什么因为原设计工具里可能存在大量同名网络但被分割为不同网段的情况也可能有些网络仅命名规则不同但在电气上属于同一个电源域。SIwave提供网络合并工具你可以把物理上互不相连但电气目的相同的铜皮合并减少求解规模和歧义。一个更关键的操作是“模型检查”。在SIwave主菜单里有一个检查模型Check Model功能它会自动扫描开路、意外短路、悬空铜皮等问题。我遇到过这样一种场景一个BGA封装区域地过孔和电源过孔之间因为设计文件转换问题产生了非常微小的间隙肉眼完全看不出但SIwave的模型检查会提示“PWR和GND在坐标X处间隙小于指定值”提示后把这处的铜皮修掉电源阻抗谐振才回归正常。不做这个检查你后续的仿真结果里很可能出现一个诡异的高Q谐振峰而你却完全找不到物理来源。3.3 用DCR检查快速验证模型连通性DCR直流电阻检查是SIwave里面非常基础但极其实用的验证手段。它的原理很简单对指定网络施加一个直流激励计算整个路径上的总直流电阻。我在每次模型导入后都会选几个关键电源网络做DCR检查原因在于这个结果能迅速验证三维连通性是否正确。如果某条关键电源走线在中间某处断开了DCR会显示一个超大数值或直接报错如果过孔反焊盘设置错了导致铜皮被意外割裂DCR也会有异常。DCR检查还有一个用途是验证电流路径上的铜厚和过孔数量设置。假设一个1A电流的负载网络期望压降在5mV以内那么路径总电阻就应该小于5mΩ。量级分析一旦对不上就不要急着去做频域谐仿真。DCR操作路径通常在Simulation → DC Analysis → DCR Resistance 中选择网络后运行结果会列出整个网络的阻值分布。4. 网格剖分仿真精度与求解速度的分水岭4.1 SIwave的网格逻辑和波长有什么关系SIwave虽然是平面电磁场求解器但它仍然需要把几何剖分成三角形网格再用有限元或矩量法求解电磁场分布。很多新手以为网格越细越好结果把整板网格细化到0.1mm级别求解时间爆炸且内存溢出。实际上SIwave剖分逻辑的出发点是波长不是特征尺寸。对于一个频率为f的信号在材质中的波长λ c / (f × sqrt(Dk))。例如FR4的Dk约4.25GHz信号在介质中的波长约29.2mm。根据电磁场求解的经验法则网格尺寸至少应为波长的1/20到1/30也就是5GHz时需要约1mm左右的网格尺寸。而对于10GHz信号这个尺寸要缩到0.5mm以下。换言之你设置的扫描频率越高基础网格就越密求解时间也就越长。SIwave中有自动网格设置它默认会根据你在仿真中设定的最大频率自动计算一个合理的最大网格尺寸。在多数电源完整性分析中最高关注频率在几GHz以内所以默认的网格往往够用。但对信号完整性分析S参数的精度依赖网格的局部加密因为过孔、连接器焊盘这些微小特征会导致电场剧烈变化。建议在过孔周围或连接器区域内手动设置局部网格尺寸远小于全局网格。比如全局网格1mm局部过孔网格0.2mm。这样既保证精度又不会拖垮整板求解速度。4.2 网格细化到什么程度才够用网格是否足够SIwave里有一个非常直观的判断方法连续两次运行相同仿真第二次把网格密度提高20%到30%观察关键结果指标如阻抗曲线的谐振频率、S21的插入损耗值变化幅度。如果在合理的工程精度范围内波动很小说明当前网格量已经收敛。反之如果结果变化明显就还需要继续细化。这个“网格无关性验证”是仿真从业者的基本素养。很多初学者跑完一遍看到曲线就兴奋地拿去汇报结果评审一追问网格是否收敛就语塞。我的习惯是对一个设计做关键性能预测时最少进行网格收敛性测试把关键的谐振频率偏移量控制在2%以内。过高的网格密度只会增加等待时间并不能提升设计的指导意义。SIwave中还有一种“自适应网格”选项意味着求解器会根据电磁场的分布自动在电场梯度大的区域加密网格。开启这个选项会显著提高首次求解的时间但在某些关键设计分析中值得等待不建议在所有快速验证场景下开启。4.3 网格设置错了的典型症状网格设置有明显错误时结果会有一些特征性表现。常见的一种情况是计算出的DCR明显大于理论值这多半是因为网格剖分太粗导致电流路径上的细小过孔或走线被钝化了相当于把路径长度拉长或截面积缩窄。第二种情况是阻抗谐振频率偏移原本应该在500MHz附近出现的谐振峰跑到600MHz去了这往往是因为网格太粗导致电路中等效电容或电感的有效电尺寸失真。第三种情况更隐蔽——求解器能跑完但某些网络的结果完全平坦几乎看不出频率相关性这可能是网格过于粗化导致的高次模式被滤除。当遇到这些症状时不要急着怀疑求解器先检查网格设置。我通常会先生成全局网格鼠标点击网格图标显示剖分结果目视检查关键区域是否有足够密的三角形网格。有些版本的SIwave还支持显示网格质量避免出现狭长三角形或过大角度。5. 第一次实战DC压降IR Drop分析从参数到判读5.1 IR Drop的物理意义与工程指标DC压降IR Drop分析的背后是一个最基础的物理公式在直流稳态下电流从电源模块流出经过PCB平面、过孔、走线到达负载芯片会在这条路径的寄生电阻上产生电压降。 V_drop I × R。如果负载电流是50A路径等效电阻是1mΩ那么压降就是50mV。对于一个1.0V核心电压的芯片通常要求供电电压波动不超过±3%甚至有的芯片要求±1.5%也就是30mV。如果再算上封装和片内电源网的压降留给PCB板的预算往往只有10~20mV。IR Drop分析就是在PCB设计阶段、在流片之前就把“这个电源平面在标称电流下会不会饿死核心逻辑”的问题量化出来。IR Drop分析有两种模式一种是“电源/地网络单点分析”另一种是“全网络压降分析”取决于你想看特定电源分配路径还是整板电源分布。在实际项目中我更关注电源平面的电流密度分布因为电流密度过高意味着局部发热严重会形成热点影响板卡寿命。5.2 在SIwave中设置DC IR Drop的完整流程操作路径是Simulation → DC Analysis → IR Drop。SIwave会弹出设置窗口分四步完成。第一步选择电源电压Source指定电源模块所在的输出引脚VRM位置并给这个激励赋一个电压值如1.0V。SIwave允许设置多个电压源代表多个供电模块并联。第二步指定电流负载Sink选择某个BGA封装下的去耦电容焊盘、核心芯片的电源引脚区域输入该区域消耗的电流值。芯片内部不同电源域往往有不同的电流需求可以用多个Sink来表示。第三步设置参考平面和过孔属性SIwave会识别电源网络的平面层和过孔你需要在设置中确认正确的过孔电导率和铜厚。这一步容易忽略但恰恰是IR Drop结果准确性的最大影响因素。第四步选择输出结果类型一般会生成电压分布云图、电流密度矢量图和IR Drop表格。如果模型规模很大可勾选“Evaluate only selected nets”来限制分析范围加快求解。设置完成后点击求解几秒到几分钟不等取决于板卡规模。求解完后SIwave会在结果树中生成一个“Voltage”和一个“Current Density”标签双击就能打开云图。5.3 结果怎么解读以及怎么反推设计改进当电压云图被点亮时你会看到一整片由深蓝到红色的渐变区域。深蓝色代表电压较低、损耗严重红色接近源端电压。这时候不要只看云图漂亮与否重要的是寻找“热点”和“压陷点”。一个典型的场景核心电源网络在BGA区域正上方电压充足但在板边某个大电流负载处电压却已经被拉低了近40mV。遇到这种情况第一反应不是加宽整块平面的铜皮而是判断这个负载是否有足够的过孔连接内电层、平面的某个瓶颈区域是否因为走线沟槽被分割而变窄。在SIwave中你可以在电流密度图上找到高亮区域这个区域往往就是解决办法的切入点增加打孔扩宽沟槽或者在电源平面旁边放置额外的去耦电容以提供瞬态电流。IR Drop分析对设计迭代来说就是一个快速闭环工具。看到压降超标回到Allegro或Altium中修改铜皮和过孔然后重新导入SIwave再跑一遍。通常跑到第二轮你就会形成对“电源平面该铺多厚多大孔”的空间直觉。这种直觉是无法从文档里学到的只能通过反复仿真对照实测来沉淀。6. 基础使用阶段常见的坑提前帮你踩了6.1 铜厚单位换算1 oz和35 μm的纠结版图设计里的人总说“1 oz铜、0.5 oz铜”仿佛一个约定俗成的特质。但SIwave的叠层编辑器里铜厚单位往往是μm。很多初学者在这里翻车直接把“1 oz”填成“1 μm”。正确换算关系是1 oz 35 μm0.5 oz 17.5 μm。如果铜厚填小了DCR和IR Drop的结果都会明显偏大从而误导你设计出过度冗余的电源网络。更麻烦的是内层铜厚有时并不是完整的1 oz因为半固化片压合过程中的电镀不均匀导致某些区域铜厚会比模板值小10%~20%。在高精度仿真时我一般会取板厂产线实际控制范围的中间值来建模而不是只查看叠层设计值。6.2 防焊层Solder Mask对结果的影响防焊层是非导电的但仍然会影响电磁场分布尤其是在微带走线的阻抗上。如果你在SIwave中完全忽略Solder Mask只建介质基材和铜箔差分线的插入损耗和阻抗曲线会偏理想。在高速信号如PCIe Gen5、56Gbps SerDes中最明显的是高频段损耗值偏差忽略阻焊层会导致插入损耗被低估0.1~0.3 dB这足以影响到链路预算评审结论。在叠层管理器中你可以给每一层添加顶/底层Solder Mask字段填入厚度典型值15μm~25μm和材料Dk一般3.3~3.5。虽然这样会让网格剖分稍微复杂一些但对高频仿真结果产生了更贴近实际的影响值得做。6.3 过孔参数默认值带来的偏差SIwave导入版图时过孔的几何参数焊盘直径、反焊盘直径、过孔中心位置、内径外径一般能直接继承自版图设计但“钻孔内外径”“电镀层厚度”这些信息有时会丢失或被设为默认值。如果你在仿真多路高速差分信号时发现某组TDR时域反射曲线在过孔处出现不希望看到的尖峰首先要怀疑的就是该处过孔的属性是否与设计一致。我一直保持的一个习惯是在仿真前把过孔面板里的“Plating thickness”设为约20μm~25μm这是PCB制造中常见的电镀铜厚。千万不要给它填成0或一个非常巨大的值。如果板厂给出过孔电镀特别薄比如15μm以下在高频电流经过时的集肤效应损耗会显著上升。6.4 用到这个阶段之后下一步适合学什么当你掌握叠层设置、网络梳理、网格控制和DC IR Drop分析后其实已经可以独立完成一块普通数字板的稳态电源评估了。接下来的路径是很自然的开始做频域电源阻抗分析Z(f)去看目标阻抗曲线如何被平面谐振、去耦电容和封装寄生参数影响。然后是谐振模式分析找到整板在某个频点上的电场聚集位置压缩EMI风险。再往后就是信号完整性链路仿真利用SIwave提取S参数模型然后用Ansys的Circuit工具或ADS进行高速通道的时域眼图仿真。但这些都是后面的内容了。对于第一次接触SIwave的工程师我给的最终建议是先不要追求跑完所有的仿真类型而是挑选一块你熟悉的板子从头到尾走通“导入-叠层-网络-网格-DC分析”这条主线在这个过程中建立对软件模型容错能力和数据精度的直觉。打牢这一步后续学习会顺畅得多。
返回列表