拓十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

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

立创EDA转AD进Ansys Q3D:PCB寄生参数提取全流程实战

立创EDA转AD进Ansys Q3D:PCB寄生参数提取全流程实战

先说个我自己的经历。去年做一块反激辅助电源的驱动板,原理图评审没有任何问题,PCB布局也按常规来做,结果样机一上电,MOS管漏极尖峰比理论值高出去快一倍,开关振铃压都压不住。那时候心里翻来覆去就一个念头:PCB寄生参数到底藏在哪?于是把板子从立创EDA导出,用AD(Altium Designer)做中转,最后在Ansys Q3D里把整板寄生电感和寄生电阻提了出来,问题点十分钟就锁定了。如果你也是做开关电源、电机驱动或者高频采样电路,经常被振铃、EMI、尖峰折磨,那我强烈建议你花一个下午跑通这条“立创EDA转AD再进Ansys Q3D”的链路,把看不见摸不着的寄生参数变成实实在在的数值。整个过程不需要你有多深的电磁场理论,更多是耐心和排查习惯。

1. 为什么值得在三个软件之间折腾:这条链路解决的痛点

1.1 一个反直觉的结论:寄生电感可能藏在铜皮里

很多工程师画板的时候,最关心的是线宽够不够、过孔能不能过电流。查一下线宽电流对照表,感觉走线够粗就不会出问题。这在低频段确实成立,毕竟铜皮电阻很小,DC压降完全可忽略。但到了MHz级别的开关频率、ns级别的上升沿,情况就完全变了——走线不仅有电阻,还有分布电感,而电感产生的压降和电流变化率成正比。

用公式说话:V = L × di/dt。假设你在开关节点上有10nH的寄生电感,电流以1A/ns的速率切换,那电感两端就会瞬间产生10V的尖峰。这就是很多电源板“原理图怎么仿真都对、一上电就振铃”的根本原因。你可以把这段铜皮想象成一根又细又长的水管,水流方向突然变向时,水锤效应会砸得管道砰砰响,电感和水锤在数学上是同一个道理。

1.2 三个工具的角色定位

这套链路里每个工具都有自己的“不可替代性”。

立创EDA(嘉立创EDA)解决的是“快速画板”的问题。免费、上手快、元件库全,国内工程师用得非常普遍,尤其是嘉立创EDA专业版,3D预览和布线体验已经不输很多商业软件。它在这条链路里负责产出PCB的核心数据。

AD解决的是“格式翻译”的问题。Q3D的ECAD导入接口对AD原生格式支持得最成熟,通过AD导出的中性文件ANF(Ansoft Neutral File)几乎不会丢数据。立创EDA虽然也能导出多种格式,但直接进Ansys这类场求解器目前还不够顺滑,所以让AD当一次“翻译官”最稳。

Ansys Q3D负责把寄生参数算出来。它是专门做寄生参数提取的准静态电磁场求解器,可以输出一段网络的电阻、电感、电容矩阵。我们不需要手工建模,只要把AD导出的板子吃进去,设置好激励,它就能把每个焊盘、每段铜皮、每个过孔的寄生效应数值化。

有人会问“立创EDA和KiCad哪个好用”,这个问题没有标准答案。但在这条链路上,立创EDA能一键导出AD格式是很大的优势。你不需要在KiCad里装各种转换插件,也不用担心库兼容问题,导出、中转、仿真,一条线走通。

1.3 什么场景才值得这么折腾

不是所有板子都值得上Q3D。简单的两层板、低速数字电路,凭经验处理就够了,没必要给自己找事。但下面几类场景,我建议你认真走一遍这条链路。

场景关心的寄生参数典型影响
反激/正激开关电源功率回路回路电感漏极尖峰、开关振铃
大电流铜皮与汇流排直流/交流电阻温升、铜损、涡流损耗
去耦电容、过孔网络安装电感高频退耦失效
高边/低边MOS驱动回路互感/耦合米勒振荡、EMI恶化
高精度采样电路参考地噪声采样值抖动

我最早接触Q3D是因为EMI测试不过,整改了两版PCB都没解决,后来发现是输入电容到MOS管之间的回路电感太大。如果一开始就用Q3D把寄生参数提出来,后面能省掉至少两轮打板。

2. 立创EDA导出前的自查:一步错后面步步错

2.1 标准版与专业版的导出差异

立创EDA现在有两个版本,大家问得最多的“嘉立创EDA专业版教程”和标准版在导出AD格式这件事上略有不同。标准版在文件菜单里选“导出”→“Altium”,导出的是一个zip压缩包;专业版在文件菜单里选“导出”→“Altium Designer”,导出结果也是一套AD工程文件。

不管你用哪个版本,一定要在导出前保存工程,并且建议把当前工程复制一份再做导出操作。我个人碰到过导出过程中因为网络缓存问题导致文件不完整的情况,复制一份再导出,失败了也不影响原设计。这个习惯后来帮我省了很多事。

需要特别注意的是,导出的zip包内部结构不要手动改。我看过有人为了省事直接改zip里的文件名,结果AD打开后工程引用关系全乱了。立创EDA导出后的zip已经是一个完整的AD工程结构,原样导入AD就行。

2.2 导出前必须检查的四个地方

我在立创EDA里吃过亏之后,总结了一份导出前自查清单,按顺序过一遍,后面能少很多麻烦。

第一,板框必须闭合。立创EDA里画板框时如果有重复线段、缺口、或者用太碎的线拼出来的轮廓,导出到AD后很容易变成不闭合的板框。Q3D导入的时候,不闭合的板框会导致介质体创建失败,甚至让整个模型无法求解。检查方法很简单:在立创EDA里选中板框线,看属性里的“闭合区域”是否被识别。

第二,铺铜和多边形要重新确认。立创EDA的铺铜导出到AD后可能会被转换成普通铜皮,不再具备动态铺铜属性。更重要的是,如果原来铺铜里有孤岛铜皮或者散热用的花焊盘,导出后可能变成多个独立铜块。我的习惯是导出前重新执行一次铺铜操作,并把孤岛铜皮删掉,确保GND网络没有被切割成碎片。

第三,封装库必须完整。这条一定要划重点。如果你在立创EDA里用了自己画的封装、异形焊盘、或者在线元件库里的3D模型,导出前最好在“封装管理器”里逐一检查每个元件是否已经正确指定了PCB封装。否则AD打开后很可能只看到位号和焊盘,找不到封装实体。

第四,原点位置要统一。建议把原点设在板框左下角,或者板框中心并做好记录。ANF文件导入Q3D后,所有坐标都以这个原点为基准。如果原点放得随心所欲,后续在Q3D三维视图里找板子就得翻半天,严重影响效率。

2.3 导出后先看一眼:不要直接送进AD

立创EDA导出完成之后,别急着双击打开。先看压缩包文件的大小和内容。一个正常的、包含完整走线和铺铜的AD工程zip,通常至少几十KB到几百KB。如果导出的zip只有几KB,大概率是封装丢失或者板子信息不完整。这时候回立创EDA检查封装管理器,比在AD里手工补要高效得多。

AD打开这个zip的时候,会弹出导入报告窗口,重点关注有没有“unknown objects”“missing footprints”“unconnected nets”这类信息。我见过最典型的错误是:板框和走线都在,但所有元件全部挤在坐标原点,这种情况基本都是立创EDA里源文件原点设置异常,回源头调整原点再导出即可。

还有一个小技巧:如果你只是想把关键网络拿到Q3D里仿真,其实不需要让AD完整打开整个工程。导出ANF前,可以先在AD里把不相关的机械层、标注层、丝印层全关掉,减小文件体积,也让后续Q3D的网格剖分压力小一些。

3. AD导入后的净化处理:补齐层叠、3D模型与材料属性

3.1 打开文件后先看什么:报错列表和封装丢失

AD里打开立创EDA导出的zip工程后,第一件事不是画板,而是看Messages面板和工程面板。按经验,立创EDA导出到AD的常见问题集中在三类:封装缺失、网络断裂、过孔丢失。其中网络断裂最坑,因为看起来所有走线都在,但高亮某个网络时你会发现它被分成了好几段,每段都挂着一个不同的Net标签。

如果你在AD里发现元件封装确实丢了,不要急着在AD里一个一个补封装。“AD怎样给元件添加3D封装”是很多人的第一反应,但更科学的思路是回到立创EDA里把封装修好再重新导出。因为在AD里补完封装,一旦后续又要从立创EDA更新PCB,所有修补工作会全部被覆盖,白忙活。

3.2 层叠管理器:这是Q3D结果准不准的地基

立创EDA导出的层叠信息,在AD里通常不会自动带上正确的材料属性。你需要手动打开Layer Stack Manager,把每一层的铜厚、介质厚度、材料类别都对一遍。

以最常见的四层板1.6mm板厚为例,我的标准设置是:外层铜厚1oz约等于35μm,内层铜厚0.5oz约等于17.5μm,芯板介质厚度约0.15mm到0.2mm,半固化片厚度根据实际叠层来填。介质材料选FR-4,相对介电常数在4.2到4.8之间,损耗角正切按0.02左右处理。

很多人在这一步会跳过,觉得“反正Q3D会自己读层叠”。但实际上,如果AD里层叠信息不完整,ANF文件导出的铜皮可能没有厚度,或者介质体根本不生成。Q3D最终算出来的不是寄生参数,而是一堆莫名其妙的零厚度面片。层叠填不填,决定了你在Q3D里是花十分钟还是花一下午。

另外,过孔壁的镀铜厚度不要忽略。一般过孔镀铜厚度在20到25μm左右,虽然AD的层叠管理器里没有专门“过孔壁厚”的设置项,但导出ANF时过孔尺寸和位置会一起带出去,Q3D会按照铜皮的处理逻辑来剖分。如果你要精确提取过孔寄生电感,建议在Q3D里手动给过孔柱体指定材料为Copper,电导率设为5.8e7 S/m。

3.3 3D模型缺失的处理思路

立创EDA的元件很多带在线3D模型,但导出AD后这些模型经常解析不出来。有些朋友一看到整个板子光秃秃的,就开始慌。其实对Q3D寄生参数提取来说,普通贴片元件的3D外形并不重要,Q3D更关心的是铜皮、焊盘、过孔这些导体几何。你甚至可以在Q3D阶段把大部分元件模型直接隐藏掉,只保留焊盘和铜皮。

但有两种情况例外:一是大功率MOS管、电感、变压器这类有裸露散热焊盘的器件,其散热焊盘会影响局部电场分布;二是连接器附近的安装孔,如果安装孔是金属化过孔且接GND,它会成为回流路径的一部分。碰到这两种情况,建议在AD里用3D Body补一个近似模型出来。不需要用精确的Step文件,用基本几何体拼一个外形尺寸接近的块就够,Q3D关心的是导体边界,不是丝印细节。

3.4 网络完整性核对:电源网络和地网络不能断

这是我每次都会花时间做的一步。在AD里把关键的电源网络和地网络高亮出来,沿着走线从头到尾看一遍,确认没有断头。尤其是地网络,很多设计讲究星型接地、单点接地,这些设计意图在导出导入过程中最容易丢失。

有一回我处理一块高压隔离电源板,立创EDA里GND网络明明是连通的,到AD里一看变成三四个GND开头的网络名,根本原因是有几段铺铜没有正确连接到GND过孔。这种问题在Q3D里特别致命,因为模型会把原本相连的铜皮当成孤立的多个导体,仿真出来的电感值能翻好几倍。

如果你发现网络被拆散了,在AD里用“合并网络”功能把它们合并回来,再跑一遍DRC确认没有短路。这一步做完再去导出ANF,Q3D里的模型才是干净的。

4. 对接Ansys Q3D前的格式转换与模型重构

4.1 首选ANF,也要熟悉备选思路

AD到Q3D之间最顺滑的桥是ANF格式。在AD的文件→导出菜单里,找到Ansys Neutral File(ANF)选项,就能导出包含PCB层叠、铜皮、过孔、网络名称的中性文件。Q3D直接导入这个文件,就能得到完整的几何模型。

如果你的AD版本比较老,找不到ANF导出选项,备选方案是走ODB++。Q3D可以导入ODB++格式,而且ODB++对铜皮和过孔的表达也很完整。最不推荐的是把PCB导出成DXF或者Step再手工建模,这会丢掉所有网络信息,等于从零开始重建,工作量巨大。除非你只想验证一段简单走线的寄生参数,否则别这么干。

4.2 单位一致性:比例错误让结果翻车

单位问题是这条链路上最经典、最隐蔽的坑,我专门踩过一次,后面排错章节会详细讲。这里先给你一个通用预防原则:Q3D导入ANF后,第一件事就是用测量工具量一下板框尺寸,和AD里板子的物理尺寸做对比。

AD里的长度单位可能是mm,也可能是mil;ANF导出时对单位有自己的处理方式;Q3D导入时又从对话框里选一次单位。这三层单位只要有一层不一致,板子尺寸就可能被放大25.4倍,甚至1000倍。寄生参数的提取结果直接和长度挂钩,尺寸错一位数,结果错一大截。

我建议每次导入Q3D后,先测量板框最长边,再在AD的“板信息”里核对同样的尺寸,两边对得上再开始设置激励和求解,对不上就回头查单位。

4.3 在Q3D里重构模型:把铜皮、过孔、介质层识别清楚

ANF文件导入Q3D后,大概率不是直接能用的完美模型。因为不同EDA工具的几何内核有差异,导入后容易出现碎铜、重叠面、零厚度面片之类的问题。我不建议在Q3D里做大量几何修补,效率和稳定性都很差,更靠谱的做法是在AD里把源文件处理好再重新导入。

Q3D里真正需要手工处理的通常是这几步:第一步,把同一网络的多块铜皮用布尔合并成整体,避免导体被分割;第二步,检查过孔是否形成了完整的柱体,如果过孔壁没有闭合,需要重新指定导体属性;第三步,确认FR4介质体是否已经生成,没有的话可以根据层叠管理器里的厚度手动拉伸创建。

材料属性也要在这一步统一指定。铜的默认电导率一般没问题,但如果AD层叠里没有给FR4赋介电常数和损耗角正切值,Q3D会用空气或者默认绝缘材料代替,这个错误很难靠肉眼发现。我习惯在Q3D的模型树里把每个物体点一遍,确认导体、介质、空气三个类别的分配都符合预期。

5. 寄生参数提取的核心设置:端口、激励与求解频率怎么选

5.1 先想清楚要提取什么

Q3D能算的东西很多:单根走线的自感和自阻、两条走线之间的互感和互容、某一个闭环回路的回路电感、甚至整个电源网络的阻抗矩阵。但“能算”和“该算”是两回事。我见过不少新手把整板所有信号网络全部加激励,最后导出一个几百乘几百的大矩阵,根本不知道看哪个数。

我的建议是:仿真之前,先写下你这次要回答的问题。你是想知道输入电容到MOS管之间的回路电感?还是想知道负载端去耦电容的安装电感?还是想评估采样走线的耦合噪声?一次只针对一到两个目标网络对做提取,结果清晰,效率也高。

5.2 Sink和Source怎么分配

激励是Q3D里最容易出错的地方。Q3D把电流流入的面设为Source,电流流出的面设为Sink,只有同时存在Source和Sink,Q3D才能构建出电流回路,进而提取这个回路的电感和电阻。很多人只是随便选了导体表面,没有明确哪边进、哪边出,最后结果自然没有物理意义。

以提取开关电源功率回路寄生电感为例,我会把Source放在输入电容正极的焊盘面上,Sink放在MOSFET源极的焊盘面上,中间经过的铜皮、过孔、引脚全部作为导体参与计算。这样得到的电感值就是高频电流实际流过的回路的寄生电感。

这里要特别提醒:Source和Sink不要放在同一个网络的左右两端。电感的定义是“穿过闭合回路的磁通链”,它必须要有一条明确的返回路径。如果你只选了一段走线的两个端点而没有考虑回流路径,Q3D会默认在空间上搭一个不存在的虚拟回路,算出来的值没有实际参考意义。

5.3 求解频率怎么选

Q3D是准静态求解器,频率直接决定了集肤深度和电流分布,进而影响电阻和电感值。频率越高,电流越往导体表面集中,有效截面积越小,交流电阻越大,而电感通常略有下降。所以求解频率不是随便填的,它必须匹配你实际电路的工作状态。

我的经验值是这样的:开关电源的功率回路,关注100kHz到10MHz这个区间;500kHz开关频率的Buck/Boost,在1MHz到5MHz之间求解就比较有参考价值;而做信号完整性的话,通常取信号基频的3到5倍。比如100MHz的高速信号,Q3D里就设300MHz到500MHz。

如果你不确定该用哪个频率,最稳妥的办法是做一个扫频。Q3D允许设置多个求解频率点,算完以后观察电阻和电感随频率的变化趋势,能帮助你了解不同频段下寄生参数的行为。这里没有“标准答案”,关键是理解你的电路在哪个频段工作。

5.4 网格剖分与收敛判断

Q3D默认的自适应网格在多数情况下够用,但有两个地方需要手动加网格。一是细长的铜皮走线,长度方向上的网格如果太少,电流路径会被过度离散化,电感值偏差会很大。二是一定要给过孔单独设置局部网格尺寸,因为过孔尺寸通常比铜皮厚度小一截,全局网格根本分辨不出过孔壁。

判断网格够不够,最简单的方法是做两次不同网格密度的仿真,对比结果。变化在5%以内就说明网格已经收敛,可以放心使用。我第一次做的时候只设置了全局网格,电感值在两次调整之间跳了十几个百分点,后来给过孔单独加了网格约束,结果才稳定下来。

这个步骤看起来不起眼,但对结果的可靠性影响是决定性的。毕竟我们花这么大力气做寄生参数提取,要的不是一个“看起来像那么回事”的数字,而是能指导改板、能解释实测现象的可信数据。

6. 排错实录:三个真实踩坑案例与完整排查链路

6.1 案例一:立创EDA转AD后封装飞了

某次我接手一个用立创EDA画的电源板,拉到AD里打开后,板框和走线都正常,但几乎所有电阻电容都只剩下位号,看不到封装。更诡异的是,有几只元件直接挤到了坐标原点。

我先看了AD的Messages面板,里面一大堆“footprint not found”的警告。选中一只电阻查看属性,Footprint一栏是空的。这说明问题不是AD显示问题,而是ANF导出源头上封装信息就没有带上。

回到立创EDA,我打开封装管理器,发现这些元件都是用画布上的矩形焊盘拼出来的“一次性封装”,并没有保存到元件库。问题就在这儿:立创EDA里手工画的封装如果不入库,导出AD时就没有合法的封装索引,AD当然找不到。

解决方法是把封装在立创EDA的元件库里重建一遍,再关联到原理图符号和PCB封装,更新PCB后重新导出。第二次导入AD,所有封装都正常了。如果你已经在AD里做到一半,临时补救也可以手动指定封装,但要清楚这不是长久之计,源头不修,下次导出还是会丢。

这个案例让我养成了一个习惯:画板之前,先确认每一个新封装都已经在库管理里建档,千万不要在PCB文件里直接画图形冒充封装。

6.2 案例二:Q3D结果比理论值大一个数量级

这是我印象最深的一次排错。一段50mm长、1mm宽、外层1oz铜厚的走线,我手工估算直流电阻大约0.024Ω(用铜电阻率1.7e-8Ω·m,截面积按35μm乘1mm计算)。结果Q3D提取出来0.24Ω,整整大了10倍。

我排错的步骤是这样的。先检查材料设置,看是不是铜材料没有生效,结果电导率5.8e7 S/m,完全没有问题。再检查几何尺寸,我选中走线用测量工具看长度,显示500mm。这就奇怪了,AD里明明是50mm,到了Q3D怎么变成500mm?

顺着这个方向排查,发现是单位换算问题。AD导出ANF时,长度单位内部有自己的存储方式,而Q3D导入对话框里我选的单位是mm,两者匹配不上,导致整体尺寸被放大了10倍。测量到的走线宽度也从1mm变成了10mm。尺寸放大10倍,电阻自然就大了10倍。

找到问题后,我把单位统一重新导入,再仿真的直流电阻是0.0245Ω,和手算的0.024Ω基本吻合。后续我还用线宽电流对照表交叉验证了温升趋势,确认结果可信。

从那以后,我每次导入Q3D,第一件事永远是量板框尺寸。这个习惯帮我避免了不少“看起来数据没问题,实际上全盘皆错”的尴尬。

6.3 案例三:回路电感提取值忽大忽小

还有一个更隐蔽的问题。同样是提取一条功率回路的寄生电感,昨天仿真出来18nH,今天换个时间再仿真,变成32nH。模型没变,材料没变,结果差这么多,说明变量根本不在“计算”环节,而在“模型选择”环节。

我把两个模型并排打开,仔细对比,发现几个原因。第一,ANF每次导入后,Q3D都会自动把悬空的孤铜识别成导体,这些铜皮虽然没有加激励,但它们离目标回路太近,改变了周边的磁场分布,影响了几nH量级的电感值。第二,有时候我在选导体时把FR4介质体也框了进去,等于给模型加了一块导电材料,结果自然是错的。第三,激励面的选择也有影响,两次仿真时我可能点到了同一个网络的不同过孔柱体上,回流路径变了,电感值自然不一样。

解决措施分三步:一是在Q3D里把不需要参与计算的铜皮全部设为Not Included,排除干扰;二是在模型树里隐藏介质层后再框选导体,避免误选;三是给激励命名建立固定规范,比如“Q1_Source”“C1_Sink”,每次统一使用同一组激励面。

这些措施做完之后,我重复跑了三遍仿真,结果都稳定在17.8nH到18.1nH之间,才算真正拿到了可信数据。寄生参数提取最怕的其实不是结果不对,而是“不确定结果为什么对”,模型的确定性比高精度更重要。

最后再分享一个很个人的习惯:进Q3D之前,先在AD里跑一遍完整的DRC,把开路、短路、未连接的引脚全部清干净,然后再导出ANF。数据链条越长,越需要在源头少埋雷。你第一次跑通这套流程可能需要一整天,但第二次开始就会快很多,而且提取出来的数字会让你对电路板上每一段铜皮、每一个过孔都有完全不同的敏感度。这个技能,值得花时间把它练成肌肉记忆。

返回列表