ARTICLE DETAIL

资讯详情

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

Cadence从原理图到PCB布局:网表桥接与全流程解析

Cadence从原理图到PCB布局:网表桥接与全流程解析 做硬件这些年Cadence这条链路上我见过太多人卡在同一道关口原理图画得漂漂亮亮一到导出网表、准备往PCB布局走就开始各种报错封装找不到、器件叠成一团、板框画完不知道下一步干嘛。其实从原理图网表到PCB布局最关键的就是先搞懂“网表”这个东西它就像一座桥把Capture和Allegro这两个黄金搭档串起来。这篇文章我就沿着这条桥走一遍把Cadence从原理图到PCB布局的完整流程拆开讲清楚包括导出网表、导入PCB、板框叠层、布局思路以及这些年我踩过的坑。适合刚入门Cadence、或者流程总是磕磕绊绊的硬件工程师参考。1. 先把链路走明白Cadence、原理图网表与PCB布局到底是什么关系1.1 Cadence和Allegro、Capture傻傻分不清很多新手第一次接触Cadence会被名称搞晕Cadence到底是软件还是一个公司简单说Cadence是一家EDA公司名同时大家习惯用它来泛指这一整套设计工具。在这套工具里画原理图的主力是Capture CIS老工程师也习惯叫OrCAD Capture本质上是一个东西做PCB layout的是Allegro。两者合在一起就是一条完整的“原理图→网表→PCB”链路。为什么强调这个概念因为网上搜索“Cadence教程”会出来两种完全不同的东西一种是Cadence Allegro做PCB设计另一种是Cadence Virtuoso做芯片版图设计。前者是板级硬件工程师每天都在用的后者是IC设计方向。还有老一点的Concept HDL、以及CDB转OpenAccess这类工具链也都属于IC设计那一挂。所以如果你是为了做电路板搜索和安装时一定要认准Allegro方向别被Virtuoso的教程带跑偏。版本方面16.6是口碑最好的经典版稳定、教程多后来的17.2、17.4以及新出的Allegro X Design Platform菜单和界面有变化但核心逻辑完全一致本文讲的流程在哪个版本上都通用。1.2 网表到底是个什么东西网表Netlist听起来很玄其实就是一份纯文本描述文件里面记录了三个信息电路里有哪几个元器件、每个元器件的封装是什么、这些元器件的哪些引脚属于同一个网络。Capture里画的原理图是图形化的但Allegro不认识图形它只认文本。所以我们需要把原理图“翻译”成网表文件Allegro读完网表才知道板子上要放哪些器件、哪个引脚和哪个引脚要连在一起。你可以这么理解原理图是城市规划图网表是所有建筑物和道路的清单PCB布局就是把这张清单上的建筑按地理位置真正落到土地上去。这里有个关键点很多教程会忽略网表里记录的封装信息是原理图元件属性里的“PCB Footprint”字段这个字段的取值必须和Allegro封装库里的封装名完全对得上。对不上网表就导不进去这是后面所有报错里最常见的根源。1.3 整个流程分几步完整的流程大概是建立封装库并配置路径→原理图绘制和DRC检查→从Capture导出网表→在Allegro里新建PCB文件并导入网表→设置板框和叠层→元件布局→布线→铺铜→DRC检查→输出Gerber。这篇文章的重心放在第二到第五步也就是从原理图到布局这个阶段。这个阶段之所以最容易出问题是因为它跨越了两个工具涉及库路径、封装映射、文件格式一堆隐性知识。很多人画了一辈子原理图到导网表这一步还是懵的就是没人把这些隐性知识串起来讲。2. 从Capture导出网表到Allegro实操步骤与常见坑位2.1 导出之前封装属性先对齐我见过最快的报错是在Capture里点了Create Netlist然后打开Allegro导入两三秒后log窗口刷屏全是“ErrorSymbol not found”。查了半天是原理图里某个电阻的PCB Footprint属性填的是“R0402”而封装库里的文件名是“RES-0402”。就一个字符的差别整个网表就废了。所以导出网表之前一定要先在原理图里做一次封装属性检查。做法很简单在Capture中框选全部元件右键Edit Properties把PCB Footprint这一列拉出来看一眼。逐个确认三个东西一是有没有空值二是拼写是否和封装库一致三是单位/命名规则是否统一。Allegro的封装由两部分组成焊盘文件.pad和封装符号文件.psm。封装符号里会引用焊盘所以库里既要有封装文件也要有焊盘文件。配置库路径时这两个目录都需要指对。具体位置在Allegro的Setup→User Preferences→Paths→Library里面psmpath指封装库目录padpath指焊盘库目录。改完路径之后建议重启一次Allegro再导入网表保险。另外一个容易忽略的点是多Part元件。比如一个运放被拆成A、B两部分画在原理图里但是封装只有一个。这时候网表里会按U1A、U1B两个位号出现Allegro导入时通常会弹窗问你要不要合并到一个封装里。如果没弹你需要在Capture里把元件的PACKAGING属性或Value统一让它生成同一个封装位号。这个坑在画运算放大器、多路逻辑门电路时特别常见。2.2 Capture里导出网表的完整操作封装属性全部核完就可以导网表了。操作路径打开.dsn工程文件菜单栏Tools→Create Netlist会弹出一个选项框。里面有多个选项卡我们选Allegro这个选项卡。这里有几个设置要说明一下。第一个是配置文件默认会是allegro.cfg这个文件负责定义输出格式保持默认即可。第二个是“Open in PCB Editor”的勾选项如果你电脑上装了Allegro勾上它会在导出后自动打开PCB Editor方便但第一次操作建议不要勾分步走更清楚。点击OK后在输出目录下会生成三个关键文件pstchip.dat、pstxprt.dat、pstxnet.dat。pstchip记录器件信息pstxprt记录属性信息pstxnet记录网络连接信息。这三个文件就是Allegro导入时真正要读的文件缺一不可。还有一种导出方式是走Other选项卡格式选Allegro原理一样但这种方式通常会让你手动指定配置文件而且一些从原理图带过去的自定义属性可能会丢。我实测下来最省心的就是直接用Allegro选项卡这也是最推荐的方式。记住导出后自己先看一眼目录下这三个pst文件生成了没文件创建时间是新的再进Allegro导入别导一个旧文件进去。2.3 Allegro里导入网表先建板子再导打开Allegro PCB Editor第一步是新建文件。File→NewDrawing Type选Board名字和路径自定义。这里有个小细节单位最好一开始就设好在Setup→Design Parameter Editor→Design选项卡里Units选Mils密尔还是Millimeter精度设成小数点后两位。建完空板子就可以导入网表了。菜单路径File→Import→Logic。弹窗里如果用的是Capture的Allegro选项卡导出的网表选CDS方式如果用的是第三方网表选Other方式。然后在Import directory里指定pst文件所在的目录点击Import。导入过程注意看底部的log窗口正常会显示读入了多少个器件、多少个网络。如果出现error或warning千万别继续往下走先排查。导入成功以后所有器件会堆叠在原点附近密密麻麻看起来像一锅粥别慌这是正常现象还没有开始布局而已。这里说一个很典型的坑新建板子的时候默认的Drawing Size可能非常小或者单位设置不对导入的器件再大也显示不出来或者坐标对不上。所以新建文件时就要把Drawing Size设置为合适的尺寸比如你板子是100mm×80mm就先把工作区域设成200mm×150mm给布局留出余地。3. 布局之前先做对三件事板框、叠层与显示环境3.1 板框怎么画才规范网表导进来了器件堆在一起下一步不是急着摆而是先把板框画出来。板框是PCB的外形边界也是后续布局布线的物理约束。板框必须在Board Geometry/Outline层上画这个层专门放外形线。画法有三种。第一种手画用Add→Rectangle或Add→Line在Options面板里把Active Class选为Board GeometryActive Subclass选为Outline。画的时候如果感觉坐标不好控制按G键打开栅格设置把Grid设成0.1mm或5mil这样画出来的线比较规整。第二种从结构工程师那里拿到DXF文件用File→Import→DXF导入导入时注意单位和原点对齐这个方式在异形板、多定位孔板子上最常用。第三种用Allegro自带的Z-DXF等方式生成但日常项目里还是前两种多。画完板框别忘了画放置区域也就是Place_Bound层。这一层用来告诉Allegro哪些区域允许放器件、哪些区域不能放。在Board Geometry/Place_Bound_Top和Place_Bound_Bottom层用Shape Add分别画一个覆盖板框内部的闭合图形。如果没有Place_Bound后续做DFA检查、自动布局的时候会出问题手工布局时也没法用区域约束。板框和放置区域都完成以后最好把原点设到板框左下角或基准孔上。Setup→Change Drawing Origin命令行输入新原点坐标。这一步很多人忽略到了出坐标文件的时候才发现坐标乱七八糟又回头改那才叫痛苦。3.2 叠层设计和“类/子类”到底是啥Allegro里有一个贯穿始终的概念叫Class和Subclass中文叫类和子类。你可以理解成每个对象在软件里都有一层“归属”。两根线看着都在铜层上但一根属于TOP走线层一根属于BOTTOM走线层它们的归属不一样显示、规则、导出时行为就完全不同。新手最常见的问题是画了一条线在“板框层”结果怎么都看不见。大概率是当前激活的subclass不是你想画的那一层。所以在Allegro里做任何操作先看Options面板确认Active Class和Active Subclass选对了没有。这是基本功中的基本功。叠层设置则在Setup→Cross Section里完成。两层板就设TOP和BOTTOM两个走线层四层板就在中间加两个内层。每个层的Type很关键走线层Type是CONDUCTOR内层铜皮做参考平面时是PLANE或者NO PLANE。介质厚度、铜厚这些参数也要填因为后面做阻抗计算、叠层报告时都用得上。颜色显示方面Display→Color/Visibility打开颜色设置窗口里面按Class和Subclass列出来一个个层勾选控制显示。这里建议花十分钟把常用层配成一套自己习惯的颜色方案然后保存成.color文件。以后新项目直接加载不用每次重设。我见过一些老工程师的屏幕板框是白色、顶层走线是红色、底层走线是蓝色、丝印是黄色看起来非常清爽找问题找得快。3.3 界面和快捷键调顺手再开工Allegro的操作习惯和很多Windows软件不一样它以右键菜单和命令行为主。如果你用惯了AD或者KiCad刚转过来会觉得怎么点都不顺手这是正常的适应几天就好。快捷键方面默认的已经够用。我在实际项目中用得最多的是M移动器件、R旋转器件、G切换栅格、C打开颜色设置、F打开查找窗口、P进入放置模式、O打开选项面板、V切换可视性。这些键不是摆设布局时左手按键、右手鼠标操作速度能翻一倍。想改快捷键的话可以在HOME目录下的pcbenv/env文件里加自定义配置。比如我觉得布线命令没有快捷键太慢就加一行funckey x route connect把X键绑定给布线命令。注意改完之后要重启Allegro才能生效。给新手的建议不要一上来就背快捷键先把右键菜单用熟。Allegro的右键菜单是上下文相关的移动器件时右键能旋转、镜像、捕捉画线时右键能切换拐角模式。这些右键操作覆盖了日常90%的功能熟练之后再慢慢加快捷键。4. PCB布局的核心方法与关键细节从摆放思路到铺铜避让4.1 布局思路先定框架再填细节布局是整个PCB设计里最考验经验的环节。AI自动布局现在宣传得很热闹工具也确实能做初稿但真正决定一块板子好不好用的还是布局阶段的工程判断这部分自动化程度再高也替代不了人工经验。我在做布局时习惯按“模块化信号流”思路来走。第一步打开原理图把信号流向理出来。比如一块电源板信号流是输入接口→EMI滤波→整流→DC-DC转换→输出滤波→反馈采样一块数字主板就是接口→保护器件→主控→存储→外设。第二步按信号流把板子划成几个功能区块然后按接口位置先固定接插件。第三步每个区块内部先放核心器件再让外围小器件围着核心器件摆。第四步关键信号优先时钟、差分、模拟信号、电源反馈这些路径上的器件位置要做调整保证走线路径短且不跨分割。第五步初步摆完后试拉几根关键信号线看看能不能走得通走不通就立刻调整器件位置不要等布线时再返工。AI自动布局我也尝试过对规则方正的数字板它能快速给出一个可用的初稿但电源模拟混合板、高压隔离板、音频功放这类对EMI和热敏感的板子AI做出来的方案还是缺了点工程判断。我的建议是让它生成初稿用来参考布局密度核心功能区仍然自己动手摆。毕竟很多约束比如发热器件要分开、电解电容方向要一致方便插件这些EDA工具根本没法显式建模。4.2 电源和地的布局细节决定板子的稳定性电源布局是新手最容易忽视但回报率最高的地方。去耦电容是重中之重每个IC的电源引脚都要配一个0.1uF的电容放在离引脚尽量近的位置。关键是连接顺序应该从电源走线先到电容再进IC电源引脚而不是直接从电源拉到引脚再飞线到电容。这个顺序在原理图和PCB上都要保持一致否则去耦效果大打折扣。大容量的储能电容要放在负载附近。比如DC-DC输出端输出电容要靠近输出引脚和电感中间不要隔太多过孔。电源走线的宽度按电流算经验值上外层1A电流大概需要1mm线宽但还要看铜厚和允许温升精确估算可以直接查IPC-2221的标准曲线或者用在线载流计算工具。多个大电流路径并联时不要把电流全部压在一个过孔上至少打两三个过孔分摊减小过孔阻抗和发热。模拟电路布局尤其运放板子反馈电阻和补偿电容要尽量靠近运放引脚输入端走线尽量短并且远离开关节点。模拟地单点连接不要和数字地大面积混在一起。经常有人问“cadence运算放大器”怎么布局其实就是把模拟敏感区域和数字开关区域物理拉开中间用地平面或走线隔离运放本身就那么几个引脚位置摆对了性能就有保障。4.3 布局阶段就要考虑的EMI问题EMI设计如果等到布线阶段才想就晚了布局时就要给EMI留好余地。晶振是最典型的例子晶振要尽量靠近IC时钟引脚离板边至少5mm以上晶振下方铺完整的地铜皮并打满地孔外围用GND走线或铜皮包一圈。这样能有效减少晶振辐射。I/O接口的布局也一样。接插件尽量不要放在板子中间而是靠板边ESD保护器件和共模电感要靠近接插件放走线先经过保护器件再到IC。如果共模电感离芯片太远高速信号线上的共模噪声在到达电感之前就已经辐射出去了。电源模块和敏感电路之间要分区隔离。DC-DC的开关节点是一个强辐射源它旁边不要布模拟小信号和复位线如果板子空间不允许至少用一条GND走线或者一溜地孔在中间做隔离。回流路径也是个容易被忽略的点任何高速信号下面都要有完整的参考平面不要让信号跨过分割线。布局阶段就要检查底层有没有被大面积挖空如果有想办法调整器件位置因为信号一旦跨分割回流通路被切断EMI直接恶化。4.4 铺铜、禁止铺铜区与shape优先级布局进行到中后期通常会开始铺铜为关键网络铺大铜皮或者铺整块地。Allegro里的铺铜工具是Shape Add画出来的对象叫shape。shape分两种动态shape和静态shape。动态shape会自动避让焊盘、过孔和走线适合大面积铺地静态shape不会自动避让适合有固定形状要求的铜区比如大电流载流焊盘上的散热铜块。禁止铺铜区是一个经常用到但很多人不会用的功能。在需要净空的区域比如天线净空区、高压爬电距离区、靠近板边的隔离区画一个Route Keepout或者Shape Keepout。Route Keepout会禁止走线和铺铜Shape Keepout只禁止铺铜。两者的区别要分清在Options面板里Active Class选Route Keepout或Shape Keepout用矩形或者多边形画出来就行。画完以后该区域内的自动铺铜就会自动绕开。shape优先级也就是热词里说的“铜皮优先级”是Allegro一个比较隐蔽的功能。当多个shape重叠时Allegro按Z-order决定谁覆盖谁。混合信号板子上经常有这种需求底层铺了一大片GND铜皮模拟区域想放一块AGND铜皮把它隔离出来这时候就可能出现两块同网络或不同网络的shape重叠需要手动调整优先级。操作方法是选中shape后右键选择priority或者Z-order相关选项把想要的shape设为高优先级。这一步不熟的话很容易出现底层GND铜皮把AGND铜皮整个盖住的情况看起来是两个网络短路了其实只是优先级显示问题。铺铜完成后别忘了做一次shape填充更新。动态shape在走线改动后不会立即刷新避让要右键选Update或刷新对应shape否则出Gerber时铜皮可能还是老样子该避的没避造成短路。5. 原理图到PCB的那些报错我帮你盘一遍5.1 网表导入失败的几个经典情况网表导入报错是Cadence入门阶段最劝退的事情。我把这些年遇到比较多的情况整理成一张表方便对照排查。报错关键词原因解决办法Symbol not found封装库路径没配好或封装名不一致检查psmpath、padpath路径核对原理图PCB Footprint属性Pin number mismatch原理图引脚编号和封装焊盘编号不一致检查三极管、运放等多引脚器件的引脚顺序Footprint property missing原理图元件缺少PCB Footprint属性在Capture里补全该属性再重新导网表Duplicate refdes位号重复在Capture里Annotate重排位号Design not found导入目录里没有pst文件或者目录选错确认Import directory指向pst文件所在目录器件全部堆在原点正常现象不是报错进入Placement模式逐个布局这里有两个实操心得。第一个Allegro导入失败时会在log窗口上写清楚错误信息同时会生成一个.err文件。用文本编辑器打开这个文件能看到具体的出错对象和位置比在界面上猜高效得多。第二个修改库路径之后如果还是报Symbol not found先把Allegro整个关掉重开再试。Allegro有些配置是启动时加载的改完路径不重启有时候就是不生效强烈怀疑是缓存问题。5.2 仿真相关的几个报错热词里还有两个仿真问题看起来和PCB流程关系不大但其实是同一条链路里经常遇到的。一个是“cadence仿真器件未定义”另一个是“cadence瞬态仿真不收敛”。器件未定义通常是PSpice模型库没有加载。在Capture里做仿真时模型库要从仿真配置里加载路径是PSpice→Edit Simulation Profile→Configuration Files→Library把对应的.lib文件添加进去。如果某个元件还是没有仿真模型检查它的属性里有没有PSpiceModel和Value字段没有的话需要手动补上。很多厂商给的模型是加密的.lib或者.olb加载方式不一样遇到就按厂商提供的说明操作。瞬态仿真不收敛是SPICE仿真的经典噩梦。我排查的顺序一般是这样。第一步检查仿真步长把Maximum Step Size设成系统最高频率周期的十分之一到五十分之一比如10MHz时钟信号就设5ns到10ns。很多时候不收敛就是步长太粗信号跳变捕捉不到。第二步增加迭代限制在仿真Profile里把ITL1和ITL2设成500左右让求解器多迭代几次。第三步放宽容差RELTOL从默认0.001调到0.005VNTOL调大一点虽然精度略降但收敛概率大幅提升。第四步检查初始条件瞬态仿真很多时候要给电容电感设置IC初始值否则上电瞬间的突变直接导致不收敛。第五步如果还不行大概率是电路拓扑本身有问题比如没有限流电阻的理想电压源直接并联大电容或者有悬空节点回到原理图里查。做仿真的时候有一个心态要摆正不收敛不一定是你参数没设对更可能是模型太理想。把理想模型换成带ESR、寄生电感的模型很多仿真问题自动消失。5.3 原理图阶段的预警与位号管理“capture原理图上引脚类型是power报警告”这个问题我在好几个项目里都碰到过。Capture里元件的引脚类型有Input、Output、Power等分类如果一个引脚被设置成Power类型却没有接到电源网络或者悬空DRC检查时就会报警。处理方法很简单不用的Power引脚把引脚类型改成Passive需要用的话就接上对应的电源符号或网络标签别让它悬在那报一堆黄牌。位号管理方面经常有人问“cadence新增器件位号怎么弄”。在Capture里新增器件的位号可以通过Tools→Annotate来重排。但这里有个重点如果板子已经布到一半千万不要对整块原理图做整体重排否则PCB里所有位号全变元器件位置和原理图对不上后续改版会变成灾难。正确的处理方式是只对新页面或新增的器件做局部Annotate然后单独导出网表、导入PCB。Allegro里也可以用Tools→Annotate管理位号但通常流程还是在Capture里统一管理。还有一个小细节位号丝印在PCB上默认可能很小出板后看不清。在Allegro里用Edit→ChangeFind面板只选Text然后右键修改Text Block大小把位号统一调大。改完记得检查一下丝印有没有压在焊盘上压焊盘不仅影响美观还可能影响贴片和调试这是出Gerber前最容易遗漏的一环。最后再分享一个我自己的习惯。布局完成后我会把电源模块、晶振、接口保护电路、模拟区域这几个关键部分在板子上的位置再单独过一遍像过电影一样在脑子里走一遍信号流。从输入接口进来经过保护器件到电源转换再送到各负载每一步的电流路径和信号回流路径在空间上是不是顺畅、有没有交叉。这一步不是软件检查纯粹是工程师经验最直接的应用。真正把原理图网表到PCB布局这条链路跑顺之后你会发现Cadence这套工具其实很有逻辑每次报错都在告诉你一个明确的答案关键是要静下心来看懂它说什么。
返回列表