原理图画完了,不等于这个阶段就结束了。很多人拿到一个能通过编译、没有ERC报错的原理图,就迫不及待生成PCB,结果板子打样回来才发现一堆问题:位号对不上、封装错了、丝印重叠、电源网络没带宽。这一篇我尽量把原理图修改、导出、还有布线前的准备这三件事讲透,全是实际操作中绕不开的细节,也顺便把我在SW6206这类原厂参考设计上吃过的亏一并写出来。
1. 原理图的修改:改之前先立规矩
1.1 先查后改,把三张“体检表”跑一遍
很多人拿到一块参考板或者自己画完的原理图,上来就图个方便直接拖拽几个器件、复制粘贴一段电路,觉得能过编译就行。这个习惯在前期看起来没问题,到了导出网表、做PCB的阶段就会翻车。我建议动任何刀之前,先花十分钟做三件事:跑一遍ERC(电气规则检查)、整理位号、核对特殊网络。
以最常见的STM32F103C8T6最小系统为例,很多参考设计里电源部分、复位电路、晶振电路都是现成的,你直接把三个去耦电容挪过去,看起来没什么问题。但如果你不先跑ERC,等拉到PCB里导入网表,才发现某个电容的封装是0805,你板子上预留的是0603焊盘,或者某个引脚根本没有网络,那时候再回头改就非常痛苦。
我先说最实用的检查顺序。第一查元件位号,确认没有重复编号或漏标,尤其是复制粘贴整块电路时,新粘贴进来的元件的位号会被自动附上后缀(比如 R1_1),这也是让人放松警惕的坑位。第二查网络名,电源网络到底用3V3还是VCC_3V3,晶振走线是否叫XIN/XOUT,这些看起来无所谓,等你要写规则、做约束就全乱了。第三查器件封装,顺便把封装缺失或对应不上的问题全部揪出来。
这三件事做完,才轮到真正的“改”。
1.2 位号重编:为什么一定要做,怎么做才不乱
在原理图里修改元件位号,我见过很多新手直接双击文本去改,比如把R12改成R23,甚至直接删掉位号。这种操作最大的麻烦是后面不可追溯——你是改了这个电阻,但BOM里关联哪一条?PCB的丝印上显示的是哪个编号?到了焊接调试阶段,工人拿着位号找不到器件,就该怀疑人生了。
正确做法是用软件自带的位号重编功能。AD里是 Tools > Annotation > Annotate Schematics Quietly,或者用 Force Annotate All。开始前把元件标号后缀清理掉,然后按页面或者按模块顺序重编。我一直习惯按功能模块来编号,比如电源部分的电阻叫R_PWR_x,MCU周边的叫R_MCU_x,这样到了PCB布线阶段,想快速定位某个网络的去耦电容时,一眼就能从位号猜出大概位置。
有个细节很多人忽略:如果原理图是多页的,重编位号前一定要确认“图纸顺序”和“你想要的编号顺序”一致。AD里默认按图纸的页码排序,如果你把某一张纸拖到了末尾,那上面所有元件位号都会跟着排在最后。建议重编之前先在Project面板里拖动页面顺序,再执行一次Annotation。这一招,实测能省掉后续很多麻烦。
提示:修改完位号之后,务必再跑一次ERC,看看有没有出现重复位号或者交叉引用错误。这个动作非常快,但能避免大量低级问题。
1.3 总线、差分对与复用模块的修改细节
到了这一步,基本是“真正动手改”的阶段。这里我要重点提三类最容易改坏的东西。
第一类是总线(Bus)和网络标签。很多人觉得总线就是一束线,复制粘贴的时候只要把标签一起复制就行。但总线里每个网名的拼写必须完全一致,一旦某个分支少写了一个字母,ERC通常还不会立刻报错,等你导网表的时候就会发现这一根网络凭空消失了。改总线时,最稳的方法是把整段总线删除重画,尤其是改了网名之后,养成打开所有页面的网络标签列表(Project > Compile 之后看 Messages),核对有没有孤立网络。
第二类是差分对。AD和Cadence里差分对的命名规则都是固定的:正端叫xxx_P,负端叫xxx_N,两个标签一起改时很容易只改一边。如果出现“差分对未正确配对”的警告,建议优先检查是不是命名不对,而不是急着去改PCB里的差分对设置。
第三类是复用模块(Sheet Symbol)。很多项目做多通道设计时,用一张子图调用好几路通道。如果你只在父图里复制了一份子图,却没有更新“Sheet Symbol”的对应关系,导到PCB后会发现所有通道都连到了同一个网络。这里我的经验是:改完子图内部之后,回到父图纸再执行一次“同步器件位号”的操作,让软件重新展开通道,确保每个通道的引脚都被正确分配到各自的网络。
以上这些都是看似繁琐,但实际改错成本极高的点。花几分钟做对,后面布线时就不会被各种奇怪问题追着跑。
2. 原理图的导出:别让最后一步翻车
2.1 导出PDF:能看、能打印、不乱码
原理图导出PDF,是提交评审、留底、外发协作的重要环节。AD里叫File > Smart PDF,Cadence OrCAD里是Export > PDF。但很多人只懂得点“Export”,导出来的PDF要么字体缺字符,要么原理图分页错乱,要么在别人电脑上打开全是框框。
我踩过最大的坑是字体问题。AD里用系统字体比如宋体或微软雅黑导出PDF后,换个没装这些字体的电脑打开,符号会变乱。正确做法是在Smart PDF向导的第4步里,把字体勾选为“Embed TrueType Fonts”,或者干脆把原理图字体统一切换成Arial、Times New Roman这种通用字体。另一个常见问题是多页原理图导出后页码不对,或者图纸尺寸混乱。Smart PDF支持按“当前页”“所有页”“指定页”导出,建议导出前先在原理图编辑器里按一次“适应整页(Fit Sheet)”,再执行导出,这样PDF里每页的缩放比例才统一。
彩色和黑白的选择也很讲究。如果是给同事做设计评审,建议用彩色导出,不同网络颜色一目了然;如果是给工厂打印、给审核人员归档,用黑白反而更清晰,颜色信息在打印件上容易糊成一团。我一般导出两份:一份彩色 PDF 用于在线评审,一份黑白 PDF 用作出图归档。
2.2 导出网表:PCB的真正“基因”
网表导出,很多人以为是PCB设计软件自动生成的环节,其实不是。原理图和PCB之间并不是靠“同步对勾”来保证一致的,真正递送信息的就是网表(Netlist)文件。AD里选Design > Netlist > Protel,Cadence里则需要先生成第一方网表或第三方网表。网表里记录着每个元件的位号、封装、每个引脚连到哪个网络。PCB软件一拿到这个文件,才知道要把这么多零件摆在哪里、什么引脚该连在一起。
我之前看过有人用AD直接“Update PCB Document”,结果PCB导入后发现某个网络里少了一个元件。排查了很久,最后才醒悟:原来原理图里新加的元件没有“编译保存”,网表没更新。从那时起,我养成了一个死规矩——每次修改原理图之后,先 Ctrl+S 保存,再跑一次编译,最后再看一次网表里是否包含所有元件。
另一个容易出错的地方是“网表里带了设计规则或特殊参数”。比如有的软件把原理图里的Design Rule信息也带进网表中,如果这些规则和PCB里已有规则冲突,导入时会出一堆忽略或报错。我的做法是:在PCB空白区域导完网表后,不要急着点“Apply”,先把Messages面板里的Warning一条一条看一遍,确认哪些是真问题,哪些只是格式提示。这一步虽然慢,但能避免网表悄悄吃掉你半个板子。
2.3 导出BOM:别让采购追着跑
BOM导出是原理图阶段最容易“差不多就行”的地方,但最终背锅的也是它。很多工程师从参考设计里拿过来一块电路,导出BOM时只保留了位号和型号,连封装都没有。等到采购下单、贴片厂上线,才发现缺了一堆“电容耐压”“电阻精度”“封装尺寸”等字段——这些锅,调试阶段一定会加倍还给你。
我在帮别人整理物料单时有一个固定的模板化流程。先把BOM的列调整成:序号、位号、器件名称、型号/规格、封装、数量、备注(可选品牌)。“位号”用逗号拼接,方便采购核对;“型号/规格”里,电阻必须要标阻值和精度(比如10KΩ ±1%),电容要标容值和耐压(比如100nF 50V),二极管、三极管最好标注极性、封装和主要参数。还要留一列专门填“替代料/品牌”,否则贴片厂会因为品牌问题反复跟你确认。
可能很多人觉得“参考设计里都有BOM,我抄一下就行”。但参考设计的BOM往往面向原厂的生产体系,很多物料编号对应的是他们自己的料号,直接拿来用,你的供应商根本买不到。正确做法是把参考BOM当检索表,根据型号和封装去你常用的物料库里选型,再导出自己的BOM。比如SW6206这类快充方案,原厂包里带着完整的BOM清单,但你得把里面每个阻容的“精度”“料号”翻译成你自己供应链能买到的型号,才算真正吃透参考板。
3. PCB布线前的准备:把“欠账”全部还清
3.1 封装与Footprint全量核对
原理图搞完了、网表导出来了,很多人脑子里想的是“赶紧铺板”。但PCB布线前,还有一批欠账要还,而且这笔账如果没还清,后面布线的每一天都在还利息。排在第一位的,就是封装(Footprint)全量核对。
这里的核对不是只看“有没有封装”,而是要确认引脚方向、焊盘大小、丝印尺寸和实际器件对得上。我吃过一个很实在的亏:某款贴片MOS的封装丝印方向画反了,结果所有焊盘位置都是对的,唯独引脚1标识被画到了对角。到了贴片机生产时,一大半器件全部反贴。那一次之后,我把“封装方向核对”列进了原理图阶段必做清单,尤其是电源芯片、MOS管这类引脚极性判断难度大的器件,必须打开3D视图绕一圈。
另外要特别留意功率器件和接插件。比如线宽电流的问题,很多人画原理图时给某一路输出网络只分配了0.3mm的线宽,做完PCB之后才发现这路要通过2A的电流。这里有个经验估算方式可以提前参考:常规1oz铜厚下,1mm线宽大约能过1A电流(内层减半),详细数据可以查线宽电流对照表。如果某一路电流大,建议在原理图阶段就把它分到“POWER”网络类,这样到PCB布局时就能第一时间给它指定加宽规则,而不是等布线时再临时抱佛脚。
还有一个容易漏的:所有晶振、时钟芯片附近的负载电容,要把回流路径朝向对应引脚,有的甚至要提前在原理图里标注放置约束,不然到了PCB里很容易摆错位置。
3.2 网络分类与规则预设:把约束变成生产力
PCB布线不是一个画线技术,而是一个规则管理技术。画线本身谁都会,难的是让成千上万的连线既短又宽、既躲开干扰又满足生产。所以布线前,先把“规则”立好,比自己一根根画线有效得多。
第一步,网络分类。把电源网络(3V3、5V、VCC_x)都归到一个Power Net Class,把模拟信号、数字信号、差分信号、地网络各归一类。AD里通过Design > Classes 添加Net Class,Cadence里是Setup > Constraints。分类之后再做两件事:一是给Power类设置宽线宽和更大间距,二是给差分信号设置差分对规则(比如100Ω阻抗的USB差分线,线宽和间距可以先按经验值或者查阻抗计算表)。
第二步,特殊信号提前布置“雷区”。比如485总线、CAN这类低速长距离通信,按照布线规范,一般要求差分对并行走、包地处理;VGA这类模拟视频信号,要求线尽量短、绕开开关电源;晶振信号更讲究,走线要短、离MCU近、远离大电流走线。这些如果在原理图阶段通过Net Class和Design Rule提前写进去,PCB阶段画线时软件会自动提醒,比靠人脑记忆靠谱多了。
第三步,接地策略。现在很多项目都会用“星型接地”或“分割地平面”。在原理图阶段能做的事,是把地网络依据用途拆成模拟地AGND、数字地DGND、功率地PGND,然后让它们在原理图里的“星点”处汇合。很多PCB新手在布地的时候喜欢大面积铺铜完事,但实际跑起来噪声很大,就是因为没有在原理图里先把地的层次定义清楚。这个细化工作,越早做越轻松。
3.3 板框、原点与安装孔
进入PCB之前,还要把板框、原点、安装孔这三件基础几何确定下来。很多人习惯“等PCB里再画板框”,结果画完一堆线后才想起来板框尺寸不对,所有器件、走线全部要重摆。我的习惯是:在PCB里导入网表之前,先把板框画好,把原点设定在左下角,把螺丝孔、定位孔一次性放好。
螺丝孔这里我多说几句。很多人在Allegro或AD里不知道螺丝孔怎么做。常见做法有两种:一是用普通圆形过孔,孔径3.2mm,但如果你做的是金属外壳安装,推荐用非金属化的螺丝孔(Mechanical Hole),避免螺丝把地平面短路。二是如果要做焊环固定的螺丝孔,就在PCB封装库里做一个“M3螺丝孔焊盘”,原理图里放一个对应Footprint的机械器件。如果板子上有金属外壳接触的区域,还要在Top和Bottom都加Keepout(禁布区),防止走线或者铜皮贴近螺丝孔。
3.4 高低压隔离与安全间距
最后这一节,专门提醒做电源类项目的朋友。只要板子上同时存在高压(比如220V或整流后的310V)和低压信号,PCB布线前每个规则都不是“建议”,而是“必须”。
首先是爬电距离和电气间隙。常见的安全标准里,220V与低压之间至少需要6mm左右的爬电距离,具体参数取决于污染等级和材料。如果你用的是简洁的“开槽”方法,还需要让槽的宽度和深度达到要求,否则隔离就打了折扣。原理图阶段能做的事,是把高压地和低压地明确分成两个网络,高压网络的Net Class里把“Clearance(间距)”规则调到至少2.5mm以上,再通过Edge Clearance限制走线靠近板边,防止生产时出现爬电隐患。
其次,高频线、晶振线和高压线不能“并肩走”。比如VGA接口的RGB信号、USB的差分线,这些信号如果和高压线路距离太近,轻则画面水波纹,重则把低压芯片打坏。布线前把这些敏感网络单独设置为Class,在规则里给它们和高压网络之间留更大的安全间距。别等到布完线才发现,再改真的会想哭。
4. 常见问题与排查技巧实录
4.1 原理图阶段常见问题速查表
我把这几年在原理图修改、导出、PCB前准备阶段踩过或帮人排查过的问题整理成一张速查表,方便大家直接对照。
| 问题现象 | 常见原因 | 解决办法 |
|---|---|---|
| ERC报“单端网络”但电路明明连了 | 图纸外的连线断开、网络标签拼写不一致 | 编译后看Messages,逐条定位孤立网络,修正标签或补走线 |
| 导出PDF后字体乱码 | 使用了系统字体,目标电脑缺少对应字库 | 导出时勾选嵌入字体,或全局换用Arial/Times New Roman |
| 网表导入PCB后缺元件 | 原理图修改后没有保存/编译,或网表未更新 | 保存→编译→重新导出网表,导完检查Messages |
| BOM里缺少关键参数 | BOM默认列没设置完整 | 自建模板,保留位号/名称/规格/封装/数量/备注 |
| 封装引脚1方向反了 | 符号引脚序号和封装焊盘序号不对应 | 在原理图和PCB封装库中对照Data手册逐脚核对 |
| 差分对无法配对 | 正负端命名不符合_P/_N规则 | 统一命名,重新编译并检查差分管脚类型 |
| 电源网络线宽不够 | 原理图阶段未建Net Class | 布线前归入Power Class并加宽设计规则 |
| 螺丝孔短路 | 使用了金属化过孔做安装孔 | 改用非金属化机械孔,或在孔周设置禁布区 |
这张表不是标准答案,但它覆盖了我遇到的大部分“画完原理图就出问题”的案例。大家如果遇到其他问题,可以在自己后来的排查记录里补进去,经验都是这么攒起来的。
4.2 我的几个“保命”习惯
最后分享几个我这些年养成的实操习惯,算不上什么高深理论,但关键时刻真的能保命。
第一个:每次打开工程,先完整编译一遍,看Messages里的Warning而不是只看Error。很多原理图问题一开始只是Warning,比如“某个网络没有驱动源”,你以为没事,最后网表一导入PCB,那一堆悬空引脚全冒出来了。把Warning当Error对待,养成条件反射。
第二个:大改动之前,把工程复制一份出来,或使用版本管理。我见过太多同事在同一个文件上反复改,改到一半想回到上一个版本,结果连Ctrl+Z都救不了,只能对着丢失的半个PCB流泪。用Git管理原理图工程虽然有些麻烦,但对比历史、回滚版本实在太香。
第三个:建一个“元件-封装-3D模型”三合一检查流。每个新元件进入库的时候,先确认三样东西齐全:原理图符号、PCB封装、3D模型。每次画完原理图,快速用3D视图看一眼整板,想象的板子和真实渲染的板子经常带给你的信息完全不同。
第四个,也是我想特别提的:多参考板有不可替代的指导意义。比如SW6206的原厂资料包里有原理图、PCB、寄存器列表、BOM全套文件,把它们拿来和自己的设计逐项对照,等于有一套“答案版设计”在教你。很多规则,你自己摸索半天才悟出来,但原厂说明书里早就写好了。善用这些参考资源,能让你少走很多弯路。
说句实在话,原理图修改、导出、布线前准备这些环节,听起来都没有画原理图本身那么“炫”,但在项目里却承担着从设计到落地的全部衔接工作。我自己最深的体会是:每次觉得“原理图画完了,剩下都是琐事”的时候,后面一定有拦住你的大坑。把修改、导出、规则预置当成设计的一部分,而不是收尾的杂活,这款板子的质量上限会高出一截。
最后再分享一个小技巧:无论你用的是AD、Cadence还是嘉立创EDA,给自己建一个“项目检查模板”,把ERC清单、位号重编、封装核对、网表导出、BOM导出的顺序写成文字版,每次到这一步就按清单勾着走。看起来只是多做了一步,但保不准哪一次就帮你挡掉一版需要重打的板子。祝大家画板顺利,一次打样成功。