
用Cadence做项目画完原理图之后最让人心跳加速的步骤往往是原理图导入PCB这一下。很多人第一次用Cadence 17.2或者17.4装好软件花了一星期把原理图从画元器件到调仿真都折腾完了结果卡在导入PCB这一步——网表生成报错、封装找不到、打开Allegro后界面空空如也心态直接崩掉。这篇笔记想解决的就是这个“原理图到PCB”之间的所有核心问题网表是怎么产生的为什么Allegro不能像某些工具那样直接“一键同步”导入前要做哪些检查以及那些高频报错到底该怎么排查。内容以Capture CIS PCB Editor这条最常见路线为例经验全部来自实际项目踩坑适合刚接触Cadence入门的工程师也适合已经画过几块板但总在导入环节反复出问题的人做自查参考。1. 先把整个导入链路想明白1.1 原理图到PCB之间有个“翻译官”网表很多新手对“原理图导入PCB”的理解是像复制粘贴一样把原理图里的元器件和连线直接搬进Allegro。实际上Cadence这套软件不是这么工作的它中间隔了一个非常关键的角色——网表。网表本质上是一个纯文本文件它记录了“这个项目里有哪些元件”“每个元件的封装是什么”“元件引脚之间通过什么网络连接在一起”。Capture画完原理图后通过Create Netlist功能把图形化的原理图翻译成Allegro能读懂的网表文件Allegro再通过Import Logic把这些文本信息重新解析成PCB中的器件和飞线。所以原理图导入PCB真正做的是“生成网表”和“导入网表”这两件事。这个“翻译官”机制看起来绕了一圈但它带来一个很大的好处原理图和PCB彻底解耦。你可以随时改原理图重新生成网表后只导入增量更新而不会把PCB里已经摆放好的器件位置全部冲掉。这在项目后期改版时简直救命我见过用其他工具同步布局一不小心就丢了大半天工作量的情况Cadence这套流程虽然初学觉得麻烦但习惯之后会发现它其实更稳。1.2 为什么Cadence不能像其他工具那样一键同步布局用过AD或嘉立创EDA的人第一次接触Cadence导入流程时多少会有点不适应。AD里从原理图更新到PCB几乎是“全自动”的原理图画完点一下Update PCB器件、连线、房间全部同步过去。Cadence把这套逻辑拆成了两步Capture只负责生成网表网表里没有坐标、没有板框、没有布局信息只有逻辑关系。有人会问为什么Cadence不做成一键同步我个人的理解是Cadence的核心用户群体是复杂板卡、高速数字板、军工通信这类项目这类项目里布局布线往往是多人协作、反复迭代的如果把原理图改成PCB全自动同步一个工程师改了一个电阻编号整个板的布局就可能被编辑器“好心”地打乱。Cadence选择把“逻辑更新”和“物理设计”分开网表只携带逻辑变化物理设计仍然牢牢掌握在工程师手里。换句话说这套机制牺牲了一点初学时的便捷性换来了复杂项目中的可控性。理解了这一点你就能接受后面所有看起来有点繁琐的步骤了检查封装名、设置库路径、生成pst文件、导入pstxnet.dat每一件都是在保证这个“翻译”过程不丢信息。1.3 用哪个版本先把工程结构理清Cadence这些年版本更迭很快目前碰得比较多的是16.6、17.2、17.4这几个大版本。不同版本在Capture和Allegro的菜单布局上略有差异但核心逻辑一致Capture负责原理图Allegro PCB Editor负责版图中间通过网表衔接。16.6的界面风格更老17.2是个分水岭界面更像Windows现代风格17.4在17.2基础上又增加了一些显示性能和仿真功能的优化。我的建议是如果你是自学或者公司没有硬性版本要求直接用17.4就行。这个版本对高分屏支持更好Capture里生成网表的默认行为也更规范比如输出目录会自动生成allegro文件夹三个pst文件也默认放在那里排查起来省事。版本之间的细节差异后面在具体操作里我会标注出来避免你搜资料时发现自己菜单跟文章对不上。另一点是工程目录结构。很多新手喜欢把原理图、PCB、封装库全部堆在一个文件夹里这在简单项目里问题不大但项目一旦复杂起来你会发现Allegro找库路径时满世界乱找网表生成后pst文件散落各处排查报错还要先找文件位置。建议从一开始就理顺项目根目录下分doc、schematic、pcb、library四个目录library里再分symbol和footprint。这样设置库路径时一劳永逸后面导入网表时出问题也能第一时间判断是哪个路径没指对。2. 动手之前先把这几类前置检查做干净2.1 电气规则检查原理图画完不意味着能直接导入PCB。我见过太多人原理图一眼看过去连得整整齐齐结果一生成网表就报错原因大多是电气规则没过。在Capture中最基础的操作是执行DRC检查。选中工程根目录菜单Tools - Design Rules Check勾选电气规则相关的检查项。重点关注的检查项包括未连接引脚Unconnected pin、单端网络Single node net、输出引脚打架Output pin connected to Output pin等。这些检查项听起来基础但真的能筛出不少问题尤其是那种原理图页面特别多、由多人分工绘制的项目。值得注意的是Cadence的DRC报错信息有时候比较含蓄它提示的是一些代码比如“ERROR(ORCAP-1600)”这个信息对应的具体含义需要去Help里查。更常见的做法是在你生成网表之后从网表文件里看出问题——比如某个元件的封装名带了个空格导入Allegro时必然报封装找不到。所以DRC检查和网表生成后的检查要配合着来不要迷信任何一个单一环节。2.2 页码、离页连接符和网络一致性原理图多页项目里最容易出问题的有三类页面页码重复、离页连接符不匹配、网络命名前后不一致。页码重复是很多新手容易踩的坑。画到第二页时复制了第一页的图框或者整个页面结果Title Block里Page Number还都是1。生成网表时Cadence通常会给出类似“orcap-11010”的警告提示“有2张或以上原理图页面page number都设成了1”。这个警告严格说不影响网表生成但会给后续维护带来麻烦因为图纸打印、PDF导出、评审时页码全部对不上。解决方式很简单双击页面Title Block把Page Number改成2、3、4即可。离页连接符是另一个系统性掉链子的地方。多页原理图里不同页面之间的网络靠Off-Page Connector连接如果一页里用VCC_3V3这个网络名连接出去另一页里却用了3V3那在Cadence看来这就是两个完全不相干的网络。查这种问题最有效的办法是生成网表后打开pstxnet.dat按网络名排序看看有没有名字相近但其实是两个网络的电源网络。这个习惯养成后能替你省下大量在PCB里检查电源连接的冤枉时间。网络命名一致性同样重要。我见过有人在一个原理图里同时用了“GND”“GND_”“AGND”结果导入PCB后发现地网络被拆成了好几个。这种问题在原理图DRC阶段不一定查得出来因为每个网络都是自洽的但它会在PCB布线时变成一颗定时炸弹。2.3 封装名与焊盘名的统一规范封装名不一致是原理图导入PCB时最典型的报错来源。Capture里每个元件都有一项属性叫PCB Footprint这个属性值必须和Allegro库里的封装名完全一致。很多人画原理图时图省事PCB Footprint属性留空或者随手填了“R0402”“R_0402”这种摇摆不定的写法导入Allegro时必然出现Footprint not found之类的提示。我一直跟团队强调一个规范PCB Footprint属性里只允许出现库里真正存在的封装名一个字符都不能差包括大小写、下划线、空格。你可以在Capture里用Edit - Browse - Parts批量检查所有元件的PCB Footprint属性也可以直接生成网表后去pstchip.dat里核对每个元件的封装信息。这个方法比在原理图上挨个看效率高得多。焊盘名的问题则出在Allegro一侧。Allegro的封装文件由两部分组成封装符号.dra/.psm和焊盘文件.pad。即便你的封装符号找对了如果符号里引用的焊盘文件不在padpath路径下Allegro照样报错。所以库路径设置不只是指一个目录封装库和焊盘库要分别指定清楚。3. 从Capture生成网表到Allegro导入网表的完整实操3.1 Capture侧生成网表这套操作我按Capture CIS 17.4的界面来说17.2基本一致。打开原理图工程先确保你选中的是工程根目录.dsn不是原理图里的某一个页面。然后菜单栏Tools - Create Netlist弹出的对话框里有很多选项卡我们只用“PCB Editor”这一页。在PCB Editor页勾选“Create PCB Editor Netlist”这是生成Allegro网表的核心选项。下面是几个关键配置Netlist Files的保存路径默认会在工程目录下生成一个allegro文件夹这个路径不用改后续Allegro导入时就是去这里找文件View Output选项建议勾上生成完网表后会在日志窗口显示详细的生成过程方便检查是否有警告。点击OK后如果一切顺利你会在allegro文件夹下看到三个文件pstchip.dat、pstxnet.dat、pstxprt.dat。pstchip.dat记录元件和封装信息pstxnet.dat记录网络连接关系pstxprt.dat记录元件引脚信息。这三个文件里Allegro导入时主要用的就是pstxnet.dat。这里多说一句不推荐用“Open in Allegro”这种一站式快捷方式来做首次导入。第一次导入最好手动走一遍File - Import - Logic这样每一步都能控制出错时也知道卡在哪个环节。快捷方式适合老手做增量更新不适合新手首次导入排查问题。3.2 Allegro侧设置封装库和焊盘库路径进入Allegro PCB Editor后先别急着一上来就导入很多报错其实是在这一步没做扎实导致的。选择菜单Setup - User Preferences在左侧树形菜单里找到Paths - Library这里有两个必须设置的路径psmpath和padpath。psmpath负责存放封装符号也就是.psm和.dra文件padpath负责存放焊盘文件也就是.pad文件。把你在library目录里分好的路径分别添加进去确认保存。如果你的库文件分布在好几个目录没关系psmpath和padpath都支持多个路径按顺序添加即可。这里有个实操细节Allegro读取库路径是有优先级的多个路径下如果存在同名封装它会优先使用排在前面路径里的版本。所以建议把正式库路径放在最上面临时调试用的试做库路径放后面。不然你在试做库里放了一个同名但引脚定义不一样的封装很可能把整个板子的封装用错而浑然不知。有时候还会遇到setup期间库路径设置正确但导入网表仍然报找不到封装的情况。这时候先排查是不是路径权限问题有些公司电脑对C盘外的目录有访问限制Allegro读不到自然报错。把库路径放在纯英文无空格的路径下能减少一大半这类莫名其妙的问题。3.3 导入网表并观察导入反馈在Allegro里点击菜单File - Import - Logic弹窗里Logic type选择“Cadence”也可以选“Capture”这两种都能识别Capture生成的网表。然后在Netlist Files中选择allegro文件夹下的pstxnet.dat点击Import/Design Import按钮开始导入。导入过程中Allegro下方的Console窗口会逐行刷日志比如“Reading netlist...”“Processing component...”最后出现类似于“Netlist successfully loaded”的提示才算真正完成。不要一看到有日志就以为导入完成了一定要看到成功提示或者确认没有再刷新报错信息。如果导入失败Console窗口里会直接给出错误原因。这中间最常见的几类报错我后面专门列一节讲。这里先提一个容易被忽略的事导入网表之前如果Allegro里已经有一个旧网表建议先选上“Delete existing netlist”之类的选项避免新旧网表叠加导致网络重复定义。首次导入时这个选项不重要但更新网表时必须注意。3.4 导入后立即核对的几件事导入成功不等于万事大吉。我每次导入完网表都会先做三件核对工作。第一看器件是否都在板框附近。首次导入网表时Allegro会把所有器件堆在原点附近这是一种正常现象网表里没有坐标信息编辑器只能把器件全部临时放在一起。但如果你看到有些器件在很远的地方或者数量明显不对那就要回去查网表里是不是少了元件。第二在菜单Display - Status里查看当前PCB的网络状态。重点确认有没有未连接的引脚Unconnected pin为红色这个状态栏是判断网表完整性的最直观指标之一。只要有pin没连上说明原理图里有网络没导过来得回去查原理图。第三打开约束管理器Constraint Manager看一下网络分类是否完整尤其是电源网络、差分对网络有没有按预期被识别。这一步看似费事但它能帮你发现网络命名不一致、电源网络被劈成两段这类隐藏问题。4. 高频报错与排查技巧实录4.1 orcap-11010页码重复这是生成网表时最常碰到的警告之一提示内容大意是“有2张或以上原理图页面page number都设成了1”。之前提到过这个警告不影响网表生成但它反映了页面管理的混乱。我自己的习惯是只要出现这个警告就回工程里把所有页面的页码重刷一遍。具体操作是打开每一页的Title Block手动修改Page Number属性确保从1到N连续且唯一。如果你用的是Cadence自带的Title Block模板可以直接在Title Block属性框里看到Page number、Sheet total这些字段修改后保存重新生成网表警告就会消失。为什么非要去处理这个不致命的警告因为后续你导出PDF、提交评审、甚至做版本归档时页码错乱会让你找一个网络在哪个页面时费半天劲。原理图里网络多了之后“网络所在地图”靠的就是页码定位这里偷懒后面一定会吃亏。4.2 Footprint not found类报错这一类报错在Allegro导入网表时出现的频率最高典型提示类似“Footprint XXX not found in psmpath”或“Cannot find symbol XXX”。排查路径我建议固定为三步走。第一步打开pstxprt.dat或pstchip.dat找到报错的那个元件确认它在Capture里的PCB Footprint属性到底填的是什么。第二步去Allegro的psmpath目录里检查是否存在同名文件.psm或.dra。第三步确认文件名完全一致包括下划线、点号、大小写。这三步排查完多数问题都能解决。如果封装文件确实存在但仍报找不到就检查一下库路径是否真的添加成功可以在Allegro命令行里输入tools来查看当前路径配置。还有个很坑的细节有些封装文件是从别人那里拷贝的文件名带了特殊字符这在Windows下看起来正常但Allegro解析时可能出问题建议库文件统一采用字母、数字、下划线命名。4.3 电源网络消失或网络命名不一致有时候导入很顺利但Allegro里怎么看都没有某个电源网络或者电源网络只出现了一部分。这种问题十有八九出在原理图的网络命名上。我之前调试过一块板子原理图里一块DDR4的电源用了VDDQ这个名字另外一页里却写成了DDR_VDDQ结果导入后两个网络完全是独立的看起来像电源网络“消失”了半个。排查时打开pstxnet.dat搜索一下VDDQ和DDR_VDDQ分别列出它们连接了哪些引脚问题瞬间就清楚了。所以每次导入网表后专门针对电源和地做一次网络检查是省时间的做法。把pstxnet.dat里的网络名列表导出来按字母排序看一下有没有只有一两个引脚连接的单节点网络。单点网络通常意味着某个连接没连上或者命名不一致导致网络被拆分。4.4 器件被扔在原点附近或飞线异常首次导入完成后所有器件堆在原点附近这个正常。但如果导入后飞线乱成一团明显违反原理图逻辑那就得注意了。飞线异常最常见的原因是封装引脚顺序与原理图符号引脚顺序不一致。打个比方原理图里电阻的两个引脚叫1和2但Allegro库里的电阻封装两个焊盘编号却是A和K导入后网络关系就会错乱。这种问题在简单阻容器件上不常见但在MOS管、二极管、连接器等有方向性的器件上时有发生。遇到这类情况不要急着在PCB里手动修改飞线而是回到原理图和封装库去核对引脚映射。在Allegro导入前其实可以先用Capture的“View - Package”功能预览每个元件的封装引脚关系提前发现不一致。做这件事虽然麻烦但它能避免你把一个错了引脚映射的板子画到一半才发现那种返工成本太高了。5. 导入成功之后进入布线前的三个习惯5.1 先定板框与原点再摆器件网表导入成功后Allegro里那些堆在原点附近的器件需要你手动摆放到板框里去。很多新手一看到器件在界面上就忍不住开始拖来拖去结果板框还没画原点位置也没定布局全凭感觉。我的建议是导入网表后的第一件事先画板框再把Draw - Rectangle或者Add - Line把板子的物理边界定义出来然后设置好原点。原点位置建议放在板框左下角这样后面导坐标文件、做拼板、导出贴片机坐标时都方便。板框画好之后再用Move命令把器件一个一个或者一批一批地放到板框里布局的过程才有依据。板框不画就摆器件就好比桌子没搭好就开始摆碗筷看着忙忙叨叨最后全得重来。5.2 把叠层和规则约束一并导入很多人用Cadence有个误区以为导入网表之后直接就能布线了其实还差一步配置叠层和布线规则。打开Setup - Cross-section先把板子的物理叠层定义好比如几层板、每层厚度、铜厚、阻抗层设置。叠层没配置就布线后面做阻抗控制或者调整层数时所有走线都得重来。叠层设好之后去Constraint Manager里把线宽、线距、过孔类型等规则配置好。比如常规信号线走6mil电源网络走16mil甚至更宽DDR4这类高速信号还要设置等长组和差分对约束。有些人讨论“0.3mm线宽能过多少电流”这个问题其实在Cadence里你需要先把电流负载算清楚再回到约束管理器里把对应网络的最小线宽卡死而不是凭感觉拍一个数。0.3mm约12mil在常规1oz铜厚下大概能承载1A左右电流但如果线上压降要求严格线宽还得根据具体算。规则约束设置是在布局布线之前必须做好的地基工作。能把这块做好了导入网表后的设计流程才算真正走完。5.3 关键网络的逐一核对这里的“关键网络”指电源网络、地网络、时钟网络、差分对网络以及DDR4这类高速接口里的地址、数据、命令网络。导入网表后特意花十分钟逐一核对这些网络是否完整是值得的。我的核对方法是在Allegro里用Display - Highlight命令把关键网络高亮显示然后打开约束管理器查看飞线。比如DDR4项目里VDDQ、VTT、VREF这些电源网络一个都不能少差分信号比如CLK_P和CLK_N必须成对出现否则等长约束根本设不起来。这些检查在导入阶段发现得越早后面布线阶段就越不至于手忙脚乱。有人会觉得这些网络在原理图里明明画了导入PCB后自然而然就应该在。但实际项目里网络命名不一致、页面连接断开、封装引脚遗漏等问题都会导致关键网络消失。所以无论项目大小这个步骤我都建议保留。在实际使用这套流程时我个人的体会是Cadence的导入环节就是把“原理图画好了”这个事实通过一种极其严谨甚至有些刻板的方式翻译成PCB编辑器能够理解的电气关系。慢是慢一点但正因为这个环节足够死板后面的布局布线才敢放心大胆地改、放心大胆地调。如果你刚接触Cadence第一次导入网表时卡住了别急着怀疑软件坏了更别怀疑自己能力不行。沿着“检查原理图DRC - 检查封装名 - 检查库路径 - 重看报错日志”这条线一步步查大部分问题都能自己解决顺等你完整走过一遍导入流程再回头看你甚至会觉得教科书里那些铺天盖地的报错不过如此。最后再分享一个我保留了很久的小习惯每次导入网表前把allegro网表目录整个复制一份并按日期命名存档。这样做的好处在于当你把PCB画了一半想对比一下新旧网表差异随时都能拉开两个版本的pstxnet.dat做比对比在软件里翻来覆去快得多。这个习惯帮我省下过不止一次的时间希望你也能用上。