ARTICLE DETAIL

资讯详情

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

从原理图到PCB:Cadence网表导入报错排查与设计规范全攻略

从原理图到PCB:Cadence网表导入报错排查与设计规范全攻略 1. 为什么原理图导入PCB这一步成了很多项目的“鬼门关”原理图画完电气规则检查DRC一跑绿勾一打很多人觉得板子就等于完成了一半。这个想法不能说错但等真正点到Allegro PCB Editor里导入网表的那一刻各种问题才会集中爆发。原理图导入PCB这个环节本质上是一次“数据迁移”而这次迁移里牵涉到的命名规范、库文件路径、页码编号、引脚属性这些细枝末节平时藏在原理图工程的角落里等你才真正意识到它们有多重要。我在项目里遇到过最典型的情况是整个原理图分了好几页画的时候大家各自负责一块最后合并工程准备导入PCB结果Allegro那边怎么都网表读不进去报错信息里点名了或非数字编号的问题。查来查去是两页原理图的page number都被设成了1。这种错在OrCAD Capture里甚至不会在DRC阶段暴露因为它不校验这个。只有等你执行Create Netlist然后去Allegro里Import Logic的时候它才会冒出来。这就是为什么我一直强调原理图导入PCB不是一个“点一下按钮就完事”的操作它需要有一套完整的前置检查习惯。这篇笔记就围绕这个主题展开从网表生成到Allegro导入再到导入成功后的第一轮设置把我踩过的坑、总结出的排查顺序和顺手能用的经验全部记录下来。不管是刚接触Cadence的新手还是被某些报错卡住的老手希望这篇内容能帮你把“原理图到PCB”这个过程从玄学变成流程。2. 网表生成阶段那些你以为是“小问题”的报错全是在这里埋下的雷2.1 首先搞清楚OrCAD Capture和Allegro怎么“对话”Cadence整个流程里OrCAD Capture负责画原理图Allegro PCB Editor负责画板子中间传递信息靠的不是某个“一键同步”的黑魔法而是一个网表文件。执行Tools - Create Netlist的时候你在选项卡里选择Allegro格式Capture会生成一个后缀通常是.dat的网表文件。这个文件里记录了所有元件位号、封装名、网络连接关系以及一些PCB端需要的属性信息。Allegro这边再通过File - Import - Logic选择网表文件也可以直接选Capture生成的中间文件完成导入。理解这个数据流很重要因为很多人遇到问题喜欢在PCB端反复折腾但实际错误源头在原理图端尤其集中在元件封装名、位号重复、页码冲突这几类事情上。所以我给的第一个建议就是遇到导入报错永远先去原理图工程里查不要一上来就怀疑Allegro坏了。2.2 orcap-11010页码重复报错两个页面都叫“1”网表就懵了这个报错在热搜词里都占了一席之地说明被它坑过的人绝不在少数。它的完整提示一般长这样orcap-11010: 有2张或以上原理图页面page number都设成了1页码重复了。很多人第一次看到这个报错的时候会愣住——刚才DRC不是全绿吗怎么这里突然告诉我页码重复原因是这样的page number这个属性在OrCAD Capture里默认不参与电气检查它只是在跨页连接符off-page connector和浏览原理图时起辅助作用。如果你的工程有多页原理图而且不止一页的page number都是1在生成网表的时候OrCAD为了标记每个元件的出处需要给每个页面一个唯一编号。编号重复了它就无法确定某一个元件到底属于第几页于是直接中断网表生成。排查方法很简单在Capture的工程管理窗口里按Ctrl逐一点击每个原理图页面.dsn文件下的PAGE1、PAGE2这样的节点右键选择Edit Object Properties查看其中是否有名为Page Number的属性列把重复的页码改成唯一值就行。强烈建议养成一个习惯创建新页面的时候立刻改页码养成自然。我还在一些接手过的项目里见过更隐蔽的情况页面总数是8页但有两页的页码是3另外两页的页码是5中间还有编号缺失。对于网表生成来说编号唯一就行不必连续但为了团队协作时可读性还是建议让页码连续且唯一。2.3 除了页码还有两类高频网表报错值得提前盯紧第一类是元件封装名PCB Footprint在库里找不到。Capture里给元件填写封装名只是个“字符串”它不会去验证这个封装在你的库目录里到底存不存在。所以经常出现的情况是原理图里封装名写成了R0603但库文件里实际叫RES-C-0603导入的时候Allegro直接报错找不到封装。解决办法是在原理图阶段就统一好封装命名规范并对照封装库目录做一次批量比对。第二类是元件位号Reference Designator重复。这个比较低级但多人在同一份原理图上协作时手工放置新元件后忘了修改位号容易产生比如两个R12同时存在的情况。Create Netlist同样会报错中断。好在OrCAD里有自动标注位号的功能Tools - Annotate执行一遍就能把重复的位号打断重排。我记得有一次在导入前没跑Annotate导入后声呐仪原理图工程里面两枚电阻都叫R45Allegro里直接出现了两个位号相同的封装布局时其中一个完全无法单独选中最后只能返回原理图重新处理。从那以后我给自己定了一条死规矩每次生成网表之前必须要先执行一遍Annotate并且把Packaging选项卡里的选项核对清楚。3. Allegro导入网表的三类典型报错与完整排查链路3.1 从Create Netlist到Import Logic每个选项都要“对号入座”在Capture端生成网表文件之后进入Allegro PCB Editor选择File - Import - Logic。弹出的对话框里Logic type要选Netlist然后在Netlist选项卡里Other下拉框指向你刚刚生成的那个.dat文件。如果你是第一次在Allegro里导入Cadence格式网表最容易被忽略的是Manufacturing选项卡里的器件高度属性Device这会影响后续的DRC检查但不至于导致导入失败。我个人的习惯是在导入之前先新建一个空白的brd文件设置好格点、绘图单位和画板大小然后再执行导入。这样万一导入失败不会污染已有的设计文件。等确定网表完全导入成功、元件都正常放置之后再在目标设计文件里执行正式导入。3.2 报错“Component not found in library”的三种具体原因这是Allegro导入网表时出场率极高的一个报错但导致它的原因却各不相同我把排查链路按优先级排序如下封装名拼写不一致Capture封装库里的名字和Allegro封装库里的名字存在大小写或符号差异。比如Capture用的是C0603Allegro里的封装叫CAP0603。这种问题解决起来最简单统一改一边就行。封装库路径没配置Allegro不是打开文件就自动知道你的封装库在哪里的。需要在User Preferences里配置psmpath焊盘文件路径和padpath封装符号路径。很多入门者第一次导入报错“找不到封装”实际上是Allegro压根没去正确的目录找。封装文件本身缺失或损坏确认路径没错、名称也对以后仍然报错那就要去封装库目录里检查.psm和.pad文件是否真实存在。如果是从别人那里拷来的工程经常会出现库文件没拷全的情况。3.3 Pin type冲突为什么说电源引脚是个“大坑”第三种高频报错和引脚属性有关。OrCAD Capture里每个引脚都有类型Pin Type常见有INPUT、OUTPUT、PASSIVE、POWER等。Allegro导入网表时会检查这些引脚的电气连接关系。最容易出问题的是电源引脚如果在原理图里电源引脚的Pin Type是POWER但对于同一个电源网络你在某个器件上连接它时用的是普通引脚而另一个器件连接它时用的是电源符号引脚Cadence会认为这两个引脚类型不兼容从而报错。解决办法是在原理图阶段就统一好电源网络的连接方式——要么全部通过电源符号Power Symbol连接要么在需要的地方用网络标签Net Alias手动连接不要混用。同时把电源引脚的Pin Type设置为POWER。有些工程师习惯把芯片的电源引脚类型改成PASSIVE来规避报错这种方法虽然能通过网表生成但会让后续的电气规则检查失真不建议长期依赖。4. 导入成功只是开始板框、层叠与初始规则该怎么设4.1 第一步先把板框和禁止区域画出来再动器件网表顺利导入之后Allegro的工作区里会出现一堆重叠在一起的元件等待被摆放。很多人图省事直接就开始拖元件布局却忘了提前把板框Board Outline和禁止区域Route Keepout画好。没有板框的约束布局就失去边界后面走线、铺铜都会乱套。绘制板框用Add - Line在Options面板里把Active Class and Subclass设为Board Geometry - Outline线宽按板厂要求和结构设计要求设置。机械定位孔、异形槽、拼板工艺边这些结构信息也建议在Outline层一并用线条表达清楚。禁止区域用Setup - Outline或直接在Route Keepout层绘制闭合图形来定义。哪些区域不能摆元件、哪些区域不能走线、哪些区域要避开螺丝孔这些在布局之前就得规划进设计文件里。4.2 叠层设计四层板常用方案和阻抗参考层安排导入网表之后Setup - Cross Section就是叠层设计的主战场。当前大多数消费类产品至少是四层板常见的叠层方案是TOP信号— GND完整参考平面— POWER电源平面— BOTTOM信号。这种方案的好处是信号层紧贴参考平面走线回流路径短EMI控制起来相对容易。如果你做的是DDR4这类高速接口阻抗控制就成硬需求了。叠层设计阶段除了确定层数还要把每一层的介质厚度填进去这样才能算阻抗。Allegro里叠层参数填好之后可以用内置的阻抗计算功能或者外部工具比如Polar Si9000来验证特定线宽在既定叠层条件下的阻抗是否满足要求。热搜词里有DDR4原理图那就顺带提醒一句DDR4的数据线、地址线等网络在叠层设计阶段就要明确参考层绝对不能在走线时让信号跨过参考层的分割坑。4.3 初始规则别等布线再定导入后立刻把线宽、间距、过孔模板配好Allegro里约束管理器Constraint Manager是决定布线顺畅度的核心。我见过太多人把所有线宽间距都等到布线阶段才开始设定结果走了一部分之后发现间距规则设置错误返工量巨大。正确的做法是导入成功后第一时间把Physical和Spacing规则建好。以常用的0.5mm间距BGA封装为例初始规则大致可以这样定默认线宽5mil最小线宽4mil内层电源地走线12mil到20mil外层可以根据芯片引脚密度调整。间距方面默认5mil到6milBGA内部可能放宽到4.5mil但需要跟板厂确认工艺能力。过孔也建议提前统一模板标准信号孔外径0.4mm/孔径0.2mm是当前不少主流板厂能稳定支持的量产参数但这几年部分厂家对0.2mm镭射钻孔也有独特工艺约束最终要按目标板厂能力确认一次。把这些规则在导入后立刻设置好后面无论是布局还是布线约束管理器都会实时提示你哪些操作违规相当于把很多潜在的电气隐患消灭在萌芽阶段。5. 从实际项目中沉淀的几条避坑经验字字都是换来的5.1 原理图改了之后一定要重新生成网表再导入听起来像废话但实战中踩到的人真的不少。有一次我改完原理图把某个电阻从4.7k改成10k位号没变然后直接在Allegro里继续布局完全忘了重新生成网表和导入。结果PCB里那个电阻显示的阻值属性还是4.7k要不是后来做BOM对比的时候发现差异板子打样回来就是废的。Allegro的导入逻辑是“增量更新”如果你在原理图里只是改了某个元件的参数值位置没有变化重新导入网表后Allegro会保留原有布局只更新属性。所以即使已经布了一半线也不用担心重新导入会把布局打乱——但这要求你在原理图端执行Create Netlist再在Allegro端执行Import Logic缺一不可。5.2 电源网络的导入后处理平面分割和电源符号的配合热搜词里有一条“内存条的SPD存放的参数需要配合PCB设计调整吗”虽然问的是内存条但我想延伸到电源网络处理上。一个统一的电源网络在导入PCB之后拓扑和载流能力完全由走线和铜皮决定。Allegro里处理电源层平面分割最简单的方式是用Add - Shape在电源层把同一个电源网络的区域填充满。电源符号在原理图里只是一个全局网络标识导入PCB后它不具备物理宽度。所以电源网络的载流能力完全取决于你在PCB里给的铜皮大小和过孔数量。热搜词里还有“PCB走线要求”和“PCB线宽电流对照表”这些高频词这里给一条基础经验外层1oz铜厚、1mm线宽大约能走1A电流但这只是表层散热的粗略估算。内层因为散热差同样的线宽载流能力要打折。电源路径上如果电流大优先铺铜皮、加过孔不要只靠一根细线硬撑。5.3 封装导入PCB时的对齐和原点设置决定后续布局效率热搜词里有一句“cadence封装导入pcb”虽然短但背后问题不少。很多人导入封装后发现元件乱跑或者原点位置不对其实就是封装原点设置的问题。在制作封装时一定要把元件的原点设在其几何中心或者第一引脚位置。如果你拿到别人的封装库原点五花八门建议在导入到PCB之前先统一检查一遍。另外Allegro导入网表后元件默认堆叠在坐标原点附近可以用Placement Edit模式配合Quickplace功能按版面快速散布元件。我习惯先把所有元件按Room分配到功能区块比如电源区、主控区、接口区然后再进入布局阶段。这一步在原理图里给元件设置Room属性就能提前完成导入PCB后直接生效效率会提升一个量级。5.4 位号丝印调整不如在导入后统一做一次此内容国内PCB设计界争论很多这里说的是个人经验不要在原理图阶段纠结位号在PCB上的绝对位置那根本没法提前确定。导入网表后元件布局确定再把位号丝印层Silkscreen Top/Bottom里的文字统一调整字号和朝向。Allegro里可以框选所有位号文字用Edit - Change统一改字高再用手动调整的方向理顺。这样比逐个改要快出好几倍。6. 网表导入后的首轮DRC检查别等板子画完才开始跑很多人的习惯是画完全部走线、铺完铜之后才跑数据库检查Database Check和设计规则检查DRC。但我的个人习惯是导入网表之后、布局刚开始时就先跑一次DRC。这次DRC的目的不是查布线问题毕竟还没布线而是查元件放置相关的硬性错误比如两个封装重叠、封装超出板框、位号文字重叠等。Allegro里执行Display - Status可以看到DRC错误的实时统计配合Report - Design Rules Check可以生成详细报告。导入后立刻把Visible DRC打开到绿色你会发现后续布局调整过程中很多违规操作在放下的那一瞬间就会被色块突出显示不再需要等到最后一刻来面对几百个错误抓狂。还有一个跟DRC同样重要的操作同步原理图位号到PCB。布局之前先在Capture里Tools - Annotate里勾选Reset part reference后重新标注一遍再到Allegro里重新导入网表。这样做的好处是所有位号从第一页开始按顺序重排后续在PCB里查找元件、跟原理图对照都方便。7. 聊聊我对“原理图导入PCB”这个环节的整体理解原理图导入PCB表面上看是一个软件操作流程但本质上考验的是工程师对工程数据规范性的把控能力。网表能不能顺利导入、导入后有多少“隐性雷”在原理图绘制阶段就已经注定了。那些经常被报错折腾的人往往不是在Allegro里操作不熟练而是原理图画得太随意页码不排、封装命名不复核、电源引脚类型乱设、位号重复不清理。这些习惯不改变再熟练的软件操作也救不了你。我个人的经验是每次准备导入PCB之前给自己列一个十几分钟的检查清单页码唯一性、位号唯一性、封装名完整性、电源网络统一性、库文件路径准确性、叠层结构、规则模板全部过一遍再点导入键。这套流程走下来导入报错的概率能降低八成。剩下那两成就当是跟Cadence这个老牌工具磨合的日常按着本文整理的排查链路逐条比对基本都能解决。
返回列表