ARTICLE DETAIL

资讯详情

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

Cadence PCB设计工具链:从原理图约束到制造文件的工程实践

Cadence PCB设计工具链:从原理图约束到制造文件的工程实践 PCB设计这行有个挺有意思的现象很多人聊起板子做得好不好第一反应是问你找的哪家板厂。胜宏、沪电这些名字在硬件圈里确实响当当它们做的是把设计变成实物的那一步。但一块板子从想法到能交给工厂中间还有一大段路要走这段路上站着的角色才是决定工厂拿到的东西能不能做、做出来能不能用的关键。Cadence 干的就是这段路上的活。我做了十来年硬件从最早用 Protel 99SE 画两层板到后来被 Allegro 的约束管理器折磨得死去活来再到现在看着 OrCAD X 和 Allegro X 把原理图和 PCB 揉进同一个界面里中间踩过的坑能写一本书。这篇文章不打算写成软件说明书而是想聊聊 Cadence 这套工具链到底在解决什么问题为什么很多公司宁愿花大价钱买它而不是用免费工具以及在实际项目里怎么用它把设计意图完整地传递到工厂那边。如果你正在纠结要不要学 Cadence、或者已经装了软件但不知道从哪下手这篇应该能帮你理清思路。1. 板厂拿到的那份数据决定了你后面所有的返工1.1 从画完了到能生产之间隔着什么很多人以为 PCB 设计就是把线连上、铺个铜、导出 Gerber 发给工厂这个认知在两层板、低速信号、随便跑跑的项目里勉强能混过去。但只要涉及到四层板以上、有 DDR 内存、有高速差分对、有阻抗要求这套逻辑立刻崩盘。板厂拿到你的 Gerber 之后第一件事是做 DFM 检查也就是可制造性分析。他们会看你的线宽线距是不是小于他们的工艺能力、过孔孔径是不是太小、阻焊开窗是不是有问题、层叠结构是不是合理。一旦有问题要么加钱做特殊工艺要么直接告诉你这个做不了。我见过太多这样的情况一个工程师用某免费工具画完板子导出 Gerber 发给工厂工厂回来说你的过孔盖油和开窗混在一起了我们没法判断哪些孔要盖油哪些不要。这不是工厂刁难而是设计数据本身就没有把意图表达清楚。Cadence 在这件事上的价值不是它画线画得好看而是它从原理图阶段就开始建立一套完整的约束体系让每一个网络、每一个器件、每一层铜箔都带着明确的设计意图往下走直到生成制造文件的那一刻意图都不会丢失。1.2 为什么板厂做的是板这句话值得琢磨胜宏、沪电这些板厂的核心能力在制程线宽能做到多细、层数能堆到多高、材料损耗能做到多低、良率能控制在什么水平。它们是重资产、重工艺的玩家。但板厂不会帮你解决这个 DDR 走线长度差了多少 mil、这个差分对的阻抗是不是控制在 100 欧姆、这个电源平面的分割会不会导致回流路径断裂这些问题。这些问题必须在设计阶段解决而解决它们需要的工具就是 Cadence 这类 EDA 软件。换句话说板厂负责把设计变成实物Cadence 负责让设计本身是正确且可制造的。这两件事的分工非常清晰。你拿一份糟糕的设计去找再好的板厂出来的也是一块糟糕的板子。反过来一份经过严格约束验证的设计即使找中等水平的板厂也能做出稳定可靠的产品。这就是为什么很多硬件团队在工具上的投入毫不吝啬——省下来的返工时间和调试成本远超软件授权费用。1.3 Cadence 工具链的版图OrCAD X、Allegro X、Sigrity X 各管什么Cadence 的 PCB 工具链经过这么多年演进现在主要分成三块OrCAD X 负责原理图输入和中小规模设计Allegro X 负责复杂高速板的设计和约束管理Sigrity X 负责信号完整性和电源完整性仿真。这三者不是孤立的而是共享同一个数据库、同一套约束体系。你在 OrCAD X 里定义的网络类、差分对、总线到了 Allegro X 里会自动继承你在 Allegro X 里设置的层叠和阻抗要求Sigrity X 仿真时会直接读取。这个数据不落地的连贯性是 Cadence 相比很多工具最大的优势。我见过用其他工具做设计的团队原理图用一个软件、PCB 用另一个、仿真再用第三个中间靠网表文件和 Excel 表格来回倒腾每次改一个器件都要手动同步三遍出错概率极高。Cadence 这套流程虽然学习曲线陡但一旦跑通改动的传播是自动的约束的继承是可靠的这对复杂项目来说就是生命线。2. 约束管理器才是 Allegro 的灵魂不是画线工具2.1 物理约束和间距约束到底在管什么刚接触 Allegro 的人往往被它的界面劝退——菜单层级深、快捷键多、很多操作不像消费级软件那么直观。但如果你只把 Allegro 当成一个画线工具那就完全没用到它的核心价值。Allegro 真正的灵魂是 Constraint Manager也就是约束管理器。它管的东西分两大类物理约束和间距约束。物理约束管的是线本身长什么样线宽多少、过孔多大、差分对的间距是多少、走线能走多长、不同网络之间允许的延迟差是多少。间距约束管的是线和线之间保持多远同一层不同网络之间的最小间距、线和焊盘之间的间距、线和板边之间的间距、铜皮和走线之间的间距。这些约束不是拍脑袋定的而是根据板材的介电常数、铜厚、层叠结构、信号速率算出来的。举个例子一条 50 欧姆的单端阻抗线在 FR-4 板材、介电常数 4.3、铜厚 1 盎司、介质厚度 5 mil 的条件下线宽大概在 9 mil 左右。这个数值不是猜的是用阻抗计算工具算出来的。算完之后你要把这个线宽写进约束管理器让 Allegro 在布线时自动检查。如果你不设这个约束Allegro 默认按最小线宽走线很可能做出一个阻抗完全不对的板子信号反射严重眼图闭合产品直接挂掉。2.2 从原理图到 PCB 的约束传递链路约束不是到了 PCB 阶段才开始设的很多约束在原理图阶段就应该定义好。比如你在 OrCAD X 里画原理图时可以把某些网络标记为差分对把某些总线标记为需要等长把某些电源网络标记为需要特定线宽。这些信息会随着网表一起传到 Allegro X在约束管理器里自动生成对应的约束对象。这个链路的价值在于一次定义全程生效。我做过一个项目DDR3 的数据线有 32 根地址线有 16 根控制线若干。如果在 PCB 阶段手动去给每一根线设等长约束不仅费时而且容易漏。但在原理图阶段就把这些线归入对应的总线到了 PCB 阶段直接对整个总线设一个等长规则所有线自动继承改一根就是改全部。这种效率提升在复杂项目里是决定性的。提示原理图阶段的网络命名一定要规范。差分对用 _P/_N 后缀总线用 Bus 命名电源网络用统一的命名规则。这些命名会直接影响约束管理器里自动识别的准确率。命名混乱的项目到了 PCB 阶段光整理网络就得花好几天。2.3 约束管理器的实际配置流程配置约束管理器的顺序很重要我一般按这个流程走先定层叠结构再定阻抗目标然后设物理约束最后设间距约束。层叠结构决定了介质厚度和铜厚这是算阻抗的基础。阻抗目标决定了线宽和间距的组合。物理约束把这些组合固化下来。间距约束则是根据工艺能力和电气安全要求来定。在 Allegro X 里层叠结构的设置在 Cross-section 编辑器里完成。你需要指定每一层的类型信号层、平面层、介质层、材料、厚度、铜厚。这些参数不是随便填的要跟板厂确认他们的常用层叠方案。很多板厂有标准的四层板、六层板层叠模板直接拿过来用阻抗和工艺都能对上。自己瞎设一个层叠板厂做不出来或者做出来阻抗偏得离谱返工成本极高。物理约束在 Constraint Manager 的 Physical 工作表里设置。你可以按网络类、按差分对、按总线分别设规则。比如所有 DDR 数据线设一个网络类统一线宽 5 mil、差分间距 7 mil、最大长度 2000 mil、线间延迟差不超过 25 mil。这些规则设好之后布线时 Allegro 会实时检查走线不符合规则会变颜色警告。间距约束在 Spacing 工作表里设置。这里要特别注意同网络间距和不同网络间距的区别。同网络的走线和过孔之间可以靠得很近不同网络之间必须保持安全距离。还有过孔到线、线到焊盘、铜皮到线这些组合都要根据板厂的工艺能力来设。一般板厂的线间距能力在 4 mil 左右但为了良率设计时最好留到 5 mil 以上。3. 高速信号不是连上就行Sigrity 在背后算的那些账3.1 信号完整性问题的根源在哪里很多人对信号完整性的理解停留在等长就行这是个巨大的误区。等长只是解决了时序问题但信号完整性还包括反射、串扰、损耗、地弹、电源噪声等一系列问题。一条走线如果阻抗不连续信号在阻抗突变点会产生反射反射波叠加在原始信号上导致过冲、下冲、振铃严重时接收端根本判断不出 0 和 1。阻抗不连续通常发生在几个地方走线宽度变化、过孔、连接器、器件焊盘。过孔是重灾区因为过孔有寄生电容和寄生电感会形成一个阻抗不连续点。一个 10 mil 的过孔在 1 GHz 频率下寄生电容大概在 0.3 pF 左右寄生电感在 1.5 nH 左右这个阻抗突变足以让高速信号产生明显反射。Sigrity X 的作用就是在设计阶段把这些效应算出来让你在投板之前就知道信号质量如何。3.2 Sigrity X 的仿真流程和实际价值Sigrity X 的仿真流程一般是提取走线的 S 参数模型加上器件的 IBIS 或 SPICE 模型在时域或频域里跑仿真看眼图、看插入损耗、看回波损耗。这个过程听起来简单但实际操作中有很多细节要注意。首先是模型的质量。器件的 IBIS 模型必须跟实际使用的型号匹配不能拿一个类似型号的模型凑合。走线的 S 参数提取要考虑层叠结构、材料损耗角正切、铜箔粗糙度这些因素。如果这些参数不准仿真结果就是自欺欺人。我见过一个项目仿真眼图张得很大实际测出来眼图几乎闭合后来发现是仿真时用的板材损耗角正切比实际板材小了一半导致仿真结果过于乐观。其次是仿真的边界条件。仿真时假设的电源平面是理想平面但实际板子上的电源平面有分割、有过孔、有去耦电容的寄生参数。这些因素在简单仿真里往往被忽略但在高速设计里影响巨大。Sigrity X 支持把电源平面网络也纳入仿真做电源完整性分析看电源噪声和地弹对信号的影响。这个功能在 DDR 和高速串行接口设计里非常关键。3.3 仿真结果怎么指导实际设计仿真不是为了出一份报告而是为了指导设计修改。如果仿真发现某个网络的回波损耗在 2.5 GHz 处超标说明这个频点的阻抗匹配不好需要调整走线宽度或过孔结构。如果发现串扰太大说明走线间距不够需要拉开距离或者加地线隔离。如果发现眼图裕量不足可能需要换更低损耗的板材或者缩短走线长度。这些修改在仿真阶段做成本几乎为零。但如果在投板之后才发现问题改板一次就是几万块加上工期延误损失更大。所以我的习惯是只要项目涉及 1 GHz 以上的信号就必须做仿真。仿真通过之后再投板心里才有底。Sigrity X 虽然学习曲线陡但它的仿真精度和覆盖面在业界是公认的尤其是跟 Allegro X 的集成度让设计-仿真-修改这个循环变得非常顺畅。4. 从原理图到制造文件那些容易断链的环节4.1 网表导出的常见错误和排查方法网表是原理图和 PCB 之间的桥梁网表错了后面全错。常见的网表错误有几类器件封装缺失、引脚映射错误、网络命名冲突、电源网络未连接。这些问题在 OrCAD X 里可以通过 DRC 检查发现但很多人不跑 DRC 就直接导网表到了 PCB 阶段才发现问题回头改原理图再重新导网表来回折腾。我的做法是原理图画完之后先跑一遍完整的 DRC确保没有未连接的引脚、没有重复的位号、没有悬空的网络。然后检查每个器件的封装是否已经指定封装库是否在库路径里。最后导出网表时选择正确的格式Allegro 用 .tel 格式检查网表文件里有没有报错信息。这一步花十分钟能省后面十个小时。注意Cadence 的封装库管理是个容易出问题的地方。原理图里的器件必须关联到具体的封装名封装名必须跟 PCB 库里的封装一一对应。如果封装名拼写不一致导网表时会报找不到封装的错误。建议在原理图阶段就用统一的封装命名规范比如电阻用 R0402、电容用 C0603避免用 R1、C1 这种跟位号混淆的命名。4.2 板框和层叠设置的实操细节板框是 PCB 的物理边界看起来简单但实际操作中有不少讲究。板框必须是一个闭合的图形不能有断点或重叠。板框的线宽一般设 0因为板框是铣刀路径不是铜箔。板框的圆角半径要考虑铣刀直径太小了板厂做不出来。如果板子要拼板板框还要考虑 V-Cut 或邮票孔的位置。层叠设置前面提过这里补充一个细节层叠的对称性。多层板的层叠应该尽量对称比如六层板的层叠可以是信号-地-信号-信号-电源-信号但更好的对称结构是信号-地-信号-电源-地-信号。对称层叠能减少板子翘曲提高压合质量。这个细节很多新手不注意做出来的板子翘得像薯片焊接都成问题。4.3 生成制造文件时最容易漏掉的几项制造文件不只是 Gerber。完整的制造文件包包括Gerber 各层文件、钻孔文件、钻孔表、层叠结构图、阻抗测试报告、拼板图、工艺说明。很多人只导 Gerber 和钻孔文件就发给工厂结果工厂打电话来问你们的层叠是什么、哪些网络要控阻抗、过孔盖油还是开窗沟通成本极高。我的习惯是做一个完整的 README 文件里面写清楚板子层数、板材类型、板厚、铜厚、表面处理工艺、阻抗要求、过孔处理方式、拼板要求。这个文件跟 Gerber 一起打包发给工厂工厂一看就明白省去大量来回确认的时间。Cadence 的 Manufacturing 模块可以自动生成大部分制造文件但 README 这种说明性文件还是得自己写而且值得写。5. 工具选型的现实考量为什么不是所有人都适合 Cadence5.1 Cadence 和其他 EDA 工具的真实差异市面上常见的 PCB 设计工具除了 Cadence还有 Altium Designer、PADS、KiCad、嘉立创 EDA 等。每个工具都有自己的定位和适用场景。Altium Designer 界面友好、上手快适合中小规模设计和快速迭代。PADS 在消费电子领域用得多操作逻辑跟 Cadence 不同但也能做复杂板。KiCad 和嘉立创 EDA 免费适合个人项目和教育用途。Cadence 的定位是高端复杂设计尤其是通信设备、服务器、汽车电子、航空航天这些领域。它的优势在于约束管理、仿真集成、团队协作、版本控制。一个几十人的硬件团队用 Cadence 可以做到设计数据集中管理、约束统一分发、仿真结果共享。这些能力在个人项目里用不上但在企业级项目里是刚需。5.2 学习曲线和投入产出比Cadence 的学习曲线确实陡。Allegro 的界面不像消费级软件那么直观很多操作需要记快捷键约束管理器的概念也需要时间理解。一个熟练的 Altium 用户转到 Allegro大概需要一到两个月才能独立做项目三到六个月才能熟练使用约束管理和仿真功能。但这个投入是值得的前提是你的项目需要这些功能。如果你做的板子都是两层、四层、低速信号、没有阻抗要求那用 Cadence 就是杀鸡用牛刀学习成本远大于收益。但如果你做的板子有 DDR、有 PCIe、有千兆以太网、有射频那 Cadence 的约束管理和仿真能力就是刚需不用它就是在赌运气。5.3 团队协作和版本管理的实际体验Cadence 的团队协作功能是我用过所有 EDA 工具里最完善的。它支持设计分区、多人同时编辑、版本对比、变更追踪。一个大型项目可以拆成多个区块分给不同工程师同时设计最后合并。合并时如果有冲突工具会标出来让你手动解决。这个功能在工期紧张的项目里能大幅提升效率。版本管理方面Cadence 支持跟 Git 等版本控制工具集成设计文件的每次变更都可以提交、对比、回滚。我经历过一次误操作把一个已经布好线的区域删掉了幸好有版本记录直接回滚到上一个版本五分钟解决问题。如果没有版本管理这个误操作可能意味着一天的返工。6. 那些年我在 Cadence 上踩过的坑6.1 安装和环境配置的坑Cadence 的安装是出了名的麻烦。版本多、依赖多、License 配置复杂。我见过太多人卡在安装这一步装了好几天都用不了。常见的坑包括License 文件路径不对、环境变量没设、安装路径有中文或空格、缺少 Visual C 运行库、杀毒软件拦截。我的建议是安装之前先看官方文档的安装指南确认操作系统版本和补丁要求。安装路径用纯英文不要有空格。License 配置按照文档一步步来不要跳步。安装完成后先跑一个简单的示例项目确认基本功能正常再去配置复杂的库路径和约束模板。如果遇到this application has quit unexpectedly这种报错多半是 License 或运行库的问题检查这两项基本能解决。6.2 4K 屏显示截断的问题这个问题在高分屏笔记本上特别常见。Cadence 的一些老版本对高 DPI 支持不好界面元素会显示不全或者截断。解决办法有几个一是调整系统的缩放比例把 150% 改成 100%但这样字会很小。二是修改 Cadence 的启动参数强制使用特定的 DPI 缩放。三是升级到较新的版本比如 Allegro X 和 OrCAD X 对高 DPI 的支持已经好很多。我自己的做法是外接一个 1080P 的显示器专门用来跑 Cadence笔记本屏幕用来查文档和聊天。这样既避免了缩放问题又有了更大的工作区域。如果只能用笔记本屏幕那就把缩放调到 125%大部分界面元素能正常显示少数截断的地方用快捷键操作也能绕过。6.3 仿真不收敛的排查思路Cadence 的仿真工具在跑瞬态分析时偶尔会遇到不收敛的问题。报错信息通常是transient simulation did not converge或者类似的提示。这个问题的原因很多模型参数不合理、仿真步长太小、电路有浮空节点、电源激励设置不当。排查的顺序一般是先检查电路有没有浮空节点尤其是 MOS 管的衬底和源极有没有正确连接。然后检查仿真步长设置太小的步长会导致计算量爆炸太大的步长会错过快速变化的信号。再检查模型参数有些第三方模型在特定工作条件下会发散。最后检查电源和地的激励确保没有冲突的电压源。如果以上都排查了还是不收敛可以尝试放宽仿真精度设置比如把相对误差从 0.001 改成 0.01先让仿真跑起来看大致趋势再逐步收紧精度。这个方法虽然不够严谨但在调试阶段能快速定位问题。6.4 封装导入和库管理的坑封装导入是另一个高频踩坑点。从其他工具迁移过来的封装或者从网上下载的封装经常有尺寸不对、焊盘层设置错误、原点不在中心这些问题。导入之后如果不检查直接用做出来的板子器件焊不上或者偏移。我的做法是每个新导入的封装都要在 Allegro 里打开检查一遍焊盘尺寸对不对、间距对不对、丝印有没有压焊盘、原点在不在器件中心。检查完之后把封装放到一个测试板上生成 3D 视图看看跟实物是否吻合。这个流程虽然繁琐但能避免批量性的封装错误。一旦封装错了影响的不是一块板而是所有用到这个封装的板。7. 把 Cadence 用好的几个习惯7.1 建立自己的模板库和约束模板Cadence 的强大之处在于可配置性但可配置性也意味着每次新建项目都要重新配置一遍。我的做法是建立一套自己的模板层叠模板、约束模板、封装库模板、输出模板。新建项目时直接套用模板省去大量重复配置的时间。层叠模板按板厚和层数分类比如四层 1.6mm、六层 1.6mm、八层 2.0mm每种都预设好材料和厚度。约束模板按信号类型分类比如 DDR3、DDR4、PCIe、USB、以太网每种都预设好线宽、间距、等长要求。封装库模板按器件类型分类电阻、电容、电感、IC、连接器每种都有标准封装。这些模板积累下来新项目的启动时间能从几天缩短到几小时。7.2 善用脚本和自动化Cadence 支持 Skill 脚本可以自动化很多重复性操作。比如批量修改线宽、批量替换过孔、批量生成测试点、批量导出制造文件。这些操作手动做费时费力还容易出错用脚本几秒钟搞定。我写过一个脚本用来检查所有差分对的等长情况把不符合要求的差分对列出来并标注差了多少 mil。这个脚本在 DDR 和高速接口设计里特别有用省去了手动测量的时间。另一个常用脚本是批量生成过孔阵列用于电源平面的连接比手动放置快得多也整齐得多。7.3 版本管理和变更记录前面提过 Cadence 支持版本管理但工具支持不等于团队会用。我的经验是必须建立强制的变更记录制度。每次修改设计都要在变更记录里写清楚改了什么、为什么改、影响哪些部分、谁改的、什么时候改的。这个记录跟设计文件一起提交到版本控制系统。这个习惯在项目后期特别重要。当板子出了问题需要回溯时变更记录能快速定位到是哪次修改引入的。没有变更记录就只能靠记忆和猜测效率极低。我见过一个团队因为没做变更记录一个信号完整性问题排查了两周最后发现是某次修改中不小心改了一个端接电阻的阻值如果有记录五分钟就能找到。7.4 跟板厂的沟通方式最后聊聊跟板厂的沟通。Cadence 生成的制造文件很规范但板厂的工程师不一定熟悉 Cadence 的输出格式。我的做法是除了标准制造文件额外提供一份人话版的说明板子几层、多厚、什么板材、哪些线要控阻抗、过孔怎么处理、表面处理用什么工艺。这份说明用表格形式一目了然。另外投板之前跟板厂的工程师确认一下他们的工艺能力最小线宽线距、最小过孔、最小环宽、层叠方案。把这些参数拿到手在设计时直接按他们的能力来避免设计完了才发现做不了。这个沟通花半小时能避免大量的返工和扯皮。说到底Cadence 解决的是板交给工厂之前的问题这个定位决定了它的价值不在画线本身而在画线之前的约束定义、画线之中的规则检查、画线之后的仿真验证。胜宏、沪电把板子做出来Cadence 让板子值得被做出来。这两件事缺一不可但后者往往被低估。我个人的体会是在 Cadence 上花的每一小时学习时间都会在后面的项目里以数倍的效率回报回来。
返回列表