
1. 先弄明白AD里原理图和PCB为什么是两个文件用过 Altium Designer 的人第一次打开它的工程面板时都会有那么一瞬间的困惑——同一个板子为什么非要拆成一个.PrjPcb工程、一个.SchDoc原理图、一个.PcbDoc布局文件直接在一个界面里画完不好吗。我刚从学校实验室那种一个软件画到底的思路切过来时也这么想过后来做过几块板子才慢慢理解这个设计的意义。道理其实不复杂。原理图描述的是逻辑连接关系STM32F103C8T6 的 PA5 引脚接一颗 LED 的阳极LED 阴极经限流电阻到地这是一个纯粹的谁连谁的问题。而 PCB 描述的是物理实现这颗 LED 放在板子右上角还是左下角、限流电阻贴在哪一侧、这条线从顶层绕还是从底层穿、线宽多少、和旁边那条信号线隔多远这些是几何和工艺问题。这两种信息在本质上是不同维度的硬塞进一个文件里改原理图会牵动布局挪个元件又可能把网络关系搅乱。分开之后有个很直接的好处同一个原理图可以对应多块不同的 PCB。比如你在做一个 STM32 最小系统板先在万能板上验证过一版布局后来改成贴片打样原理图一个字没动PCB 重画一遍就行。反过来也一样DHT11 温湿度采集那部分电路在好几个项目里复用直接复制原理图页PCB 那侧重新布局布线即可。而对新手来说理解这个分家最关键的一点是AD 不是自动把原理图变成 PCB它是把原理图里的网络关系搬进 PCB。网络表Netlist才是中间那个真正被传递的东西。你点下那个Update PCB Document的瞬间软件做的事情是把每个元件的位号、封装、每一根网络连接、每个电源和地网络一条条写进 PCB 文件里然后生成一堆带着飞线的元件堆在板框外面。剩下的活全是人的。这里顺带说一句工程文件的结构。一个规范的 AD 工程通常长这样MyProject.PrjPcb // 工程文件记录文件隶属关系和编译选项 ├── MyProject.SchDoc // 顶层原理图 ├── Sub_MCU.SchDoc // 子图主控部分 ├── Sub_Power.SchDoc // 子图电源部分 ├── MyProject.PcbDoc // PCB 布局文件 ├── MyProject.PrjPcbStructure // 生成的层次结构 └── Project Outputs/ // 输出目录Gerber、BOM、PDF 都往这扔有人习惯一张原理图塞下整块板几百个元件全挤在一页 A4 上放大到 400% 才能看清一个电阻。这种习惯在板子小的时候没事一旦碰到 DDR4 内存接口那种动辄上百根等长线的设计一页根本画不下。分页的原则很简单功能独立、可以单独复用的电路就拆成一页。电源一页、主控一页、接口一页、驱动一页这样后面排查问题和复用都方便。顺便提一个别人常踩的坑多页原理图里经常出现ORCAP-11010那种页码重复报错AD 这边对应的是图纸编号参数没设对在 Properties 面板里把Sheet Number改成唯一值就好别用批量复制页面然后忘记改编号。2. 生成 PCB 之前原理图这边必须先过三道关2.1 位号、注释和封装的统一整理绝大多数导入 PCB 后一堆报错的根源其实在原理图阶段就埋下了。所以点那个同步按钮之前我一般会先把原理图理顺。第一步是位号Designator。从别的工程复制过来的电路位号经常是 R?、C?、U? 这种问号状态或者两个模块里都出现了 R1。AD 里用Tools Annotation Annotate Schematics Quietly可以按图纸顺序重新编号但更推荐Annotate Schematics那个带预览的对话框先把已有的位号锁住在原理图符号属性里勾上Lock再给新元件排号这样不会把已经画好丝印的老元件位号打乱。第二步是注释Comment。这一列在原理图里看着不起眼但它是 BOM 的基础。我的习惯是电阻电容填具体阻容值和封装比如10k 0603芯片填完整型号比如STM32F103C8T6。千万别写LED灯、电阻这种描述性文字采购和贴片厂看到这两个字会直接打电话过来问。第三步是封装Footprint。这是最容易翻车的地方。原理图符号的封装字段必须是封装库里真实存在的名字而不是你脑子里以为的名字。举个具体的例子0603 电阻的封装名在不同库里可能是R0603、RESC0603N、0603R三种写法你在原理图里随手写了0603同步的时候 AD 找不到直接给你弹一个Footprint Not Found的红叉。2.2 编译工程把该报的错一次性挑出来原理图填完之后别急着往 PCB 走先按一下C然后C或者菜单Project Compile PCB Project。这一步做的是规则检查ERC它会告诉你哪些地方网络悬空了、哪些电源网络只有一个连接点、哪些输入引脚没被驱动。编译完看Messages面板。这里有个小技巧AD 默认会把大量警告塞进Messages看着一片红容易让人心态崩掉。在Project Options Error Reporting里把Net with only one pin、Off-grid object这类对你来说不致命的项目改回Warning甚至No Report只留Unconnected input pin、Duplicate net name、Floating net label这几个真正要命的。这样一轮下来Messages 里剩下的就基本都得处理了。我见过一个很典型的案例一块 4-20mA 采集板原理图编译报了Unconnected input pin打开一看是运放的反馈网络里有个电阻一端悬空因为连线的时候鼠标抖了一下没接上。这种错误如果带进 PCB最后就是打样回来板子不工作然后拿着万用表一根一根量。还有一个 AD 特有的检查手段打开Navigator面板把模式切到Nets逐个点网络名看它高亮了哪几根线。这比肉眼扫图靠谱得多尤其是在有总线Bus拆分的图上。2.3 封装库的确认——最容易被跳过的一步第三步是在 AD 里建一个工程级的封装库或者至少确认你的封装来自一个统一的地方。我推荐的做法是给每个工程单独建一个.PcbLib把用到的封装全都从系统库里复制进来一份。听起来有点麻烦但它解决两个问题。一是库会变。今天你在系统库里用的SOIC-8封装明天库更新了尺寸或者焊盘位置微调了你的老工程一打开就全乱了。工程自带库等于把封装冻在了项目里永远不会变。二是对不上。封装名对不上是同步失败的第一大原因如果封装库就在工程里打开 PCB 库面板一眼就能看出这个封装到底存不存在。这一步的代价其实很低收益却非常高。尤其是做一些偏门器件的时候比如某款欧姆龙继电器或者一个特定的 DC-DC 芯片原厂只给了 PDF 尺寸图你得自己照着画焊盘。画完之后直接存进工程库比存进收藏夹式的公共库靠谱。3. 从原理图同步到 PCB 的完整实操过程3.1 新建 PCB 并先把板框定下来同步之前得先有个 PCB 文件。File New PCB保存到工程目录下然后在工程面板里右键Add Existing to Project把它挂上去。这一步别忘不然待会儿Update PCB Document的时候下拉框里找不到目标文件。接下来的第一件事是画板框。在Keep-Out Layer上画一个封闭矩形或者直接用Design Board Shape Define from selected objects尺寸按你结构件的要求来。比如做一个 60mm × 40mm 的壳子那板框画 58mm × 38mm 比较稳妥留出装配余量。坐标系原点我一般放在板框左下角Edit Origin Set。这是个很实在的习惯后面出 Gerber 给板厂、出贴片坐标给产线原点统一在左下角工程师一眼就能对上。板框定完之后再顺手把机械层上的安装孔、定位框也标上。安装孔的孔径和位置我习惯先画好等于把布局的边界条件先钉死。3.2 Update PCB Document 那一下到底发生了什么现在可以同步了。在原理图界面下Design Update PCB Document 工程名.PcbDoc。弹出来的对话框就是前面说的那个同步器左边一列是操作类型右边是具体的元件和网络。这里关键是看状态列打勾的说明能正常执行红色的叉说明有错误。常见的那几个红叉我列一下报错信息背后原因处理方法Footprint Not Found封装名在 AD 里搜不到回到原理图改封装名或把封装加进库Duplicate Net Name两个网络名字一样但实际不连通改掉其中一个网络标签Component Not Found位号重复或者元件被删了一半重新注释位号Net already exists网络表和 PCB 里已有的网络冲突全选删除后重新同步红叉全清掉之后点Execute Changes。这时候你会看到一堆元件带着机械感地飞到 PCB 工作区外面每个元件之间都拉着细细的飞线。这一刻其实就是原理图到 PCB 的交接完成。3.3 房间Room到底要不要留同步之后AD 会在板框外生成一个大的矩形把所有元件圈在里面这个框叫Room。它的本意是把同一张原理图页的元件归为一组方便整体移动。我的建议是多页原理图的工程留着 Room 有用单页原理图直接删掉。因为 Room 会带来一个讨厌的行为——你在 PCB 里手动挪动元件如果开启了Design Rules Placement里的Room Definition约束元件会被强行拽回 Room。更麻烦的是后面从原理图重新同步一次Room 会把已经布局好的元件重新打乱。删法很简单在 PCB 里选中 Room 框按 Delete。然后在Project Options Class Generation里把Generate Rooms取消勾选以后同步就不再生成。3.4 规则设置先把线宽、间距、过孔定死布局之前先把规则设好这是个顺序问题。很多人是画完线才想起来检查线宽结果发现整板线都太细然后一条条改浪费时间。Design Rules打开规则管理器。需要重点关注这几类第一类Electrical Clearance。新建一个间距规则最小间距一般设 0.2mm板厂普工艺能做到 6mil约 0.15mm但留点余量更稳。如果你的板上混有 220V 那种高压区域一定要单独建一条规则间距至少 2mm 以上并在Where The First Object Matches里限定到高压网络。这就是所谓的高低压隔离处理反激式开关电源这类板子的时候这条规则比什么都重要。第二类Routing Width。默认线宽建议 0.25mm 起步信号线够用。电源和地单独建规则比如 5V 主路设 0.8mm3.3V 设 0.5mm。具体数值怎么定下一节细说。第三类Routing Via。过孔尺寸我一般用外径 0.6mm、孔径 0.3mm 这一档属于常规工艺稳稳能做的范围。如果板子密度高可以降到 0.45/0.2但要先跟板厂确认能不能做。第四类Manufacturing Hole Size最小孔径一般设 0.2mm。Manufacturing Silk to Solder Mask丝印到阻焊的间距设 0.15mm 左右防止丝印文字压到焊盘上。规则设好之后在 PCB 里按ShiftV能实时看到间距提示布线时心里有底。3.5 布局先定大件再排小件规则定完才轮到布局。布局这件事没有标准答案但有一套通用的顺序先放结构和接插件。USB 口、排针、接线端子、按键这些位置由外壳和操作习惯决定位置定死了剩下的都是围着它们转。连接器一定要贴着板边别放在板子正中间否则线缆插上之后受力全压在焊盘上。再放主控芯片。STM32F103C8T6 放在连接器能快速到达的位置同时让晶振紧贴它的 OSC 引脚走线越短越好。然后放电源部分。DC-DC 的输入电容、电感、输出电容要按芯片手册推荐的顺序紧凑排列环路面积越小越好否则纹波和 EMI 都控制不住。这块地方的布局比布线重要得多。最后才是阻容和小的外围器件。这时候可以用Tools Component Placement Arrange Within Rectangle让 AD 帮你做初步的自动排布然后手工微调。布局阶段有个判断标准很实用飞线不乱。如果一堆飞线在板子中间交叉成一团乱麻说明布局有问题别急着布线回去重新摆。飞线走向顺了布线会快很多。3.6 布线、铺铜和收尾布线我一般分三轮。第一轮只走关键的电源、地、时钟、复位、所有差分类信号。第二轮走普通信号。第三轮处理剩下的飞线通常是一些跨区域连接。全局自动布线功能我基本不用出来的结果没法看实在赶时间可以只对某几个网络用Autoroute Net。布线时有几条自己给自己定的规矩走线拐弯用 45 度或圆弧不用 90 度直角直角在高速信号上会引起阻抗突变。时钟线、差分线尽量走在同一层换层次数越少越好。同一方向的线之间保持 3W 原则即中心间距不小于线宽的三倍减少串扰。地网络尽量铺铜不要靠细线一根根连。铺铜用Place Polygon Pour选好网络一般是 GND盖住整板。铺完之后一定要按Tools Polygon Pours Repour All重新灌一次确保和实际布线一致。AD20 及以后的版本还提供一个很实用的功能就是铜皮挖空。比如你在电源部分需要留出爬电距离或者某个区域不想被地铜覆盖就用Place Polygon Pour Cutout画一块区域重新灌铜之后那块地方就空了。做高低压隔离板时这个功能几乎必用。最后一步是整理丝印。把位号按方向排齐Tools Component Placement Align Components里的Position Component Text一键整理检查有没有丝印压到焊盘然后把Design Rule Check跑一遍确认没有间距、短路、孔径违规。到这里一块板从原理图到可投产的 PCB 就算走完了。4. 几个绕不开的参数计算与经验值4.1 线宽和载流能力怎么对应线宽这个问题问的人最多尤其是0.3mm 的线能过多大电流这种。网上流传的对照表版本很多我这里给一组基于常规 1oz 铜厚35μm、允许温升 10℃的经验值够日常估算了线宽mm外层载流A内层载流A0.150.350.150.200.450.200.300.650.300.501.000.450.801.500.701.001.800.852.003.201.60可以看到内层的载流能力差不多只有外层的一半因为内层铜被夹在中间散热差。所以大电流路径一律走外层必要时双面并行走线或者直接在阻焊层开窗加锡。这是我做电机驱动板时踩过坑才记住的TB6612 那类驱动芯片的电机输出脚线宽给到 1.5mm 以上才踏实0.5mm 走 1A 长期跑会发烫。4.2 过孔不是越小越好过孔的载流能力比同直径的走线差因为铜层薄。0.3mm 孔径的过孔大约能过 0.5A 左右如果电源要过 2A就得并行放四个。还有个容易被忽略的点过孔会带来寄生电感。大概每 1mm 板厚对应 1nH 左右的电感量1.6mm 板厚一个过孔约 1.6nH。在几十兆的信号上这不算什么但在开关电源的环路里就很要命。所以电源的输入输出回路能不用过孔就不用非要换层就多打几个并联。4.3 层叠和阻抗先有个概念双面板的层叠很简单就是上下两层铜加中间的基材。四层板就更讲究一些典型结构是信号-地-电源-信号中间那层的介质厚度决定了阻抗。50 欧姆的单端走线在常见的 1.6mm 四层板上线宽大概 0.2mm 上下具体值要拿板厂的阻抗计算工具算。对做 DDR4 或者 LAN8720A 这类高速接口的人来说阻抗不是可选项而是硬要求得拿着叠层表跟板厂对参数。而对大多数 STM32 小系统板不用太纠结把走线做短做顺就够了。做内存条那样带 SPD 参数的设计才需要反过来考虑SPD 里存的时序参数本身就假设了特定的 PCB 走线延迟所以布线长度得配合它调这是个先有鸡还是先有蛋的问题一般按 JEDEC 参考设计走就不会错。5. 高频报错与排查速查5.1 同步阶段那几种典型红叉同步失败的原因翻来覆去就那么几类整理成表放在手边效率很高现象排查方向元件全部显示 Footprint Not Found封装库没挂进工程或库路径变了只有某几个元件报封装找不到那几个元件的封装名拼错了网络全部消失只剩电源和地原理图里的网络标签没加或加错同步后元件位号全变原理图被重新注释过PCB 侧未同步同步后 PCB 里多出一堆重复元件上一次同步没清干净先全删再导提示Cannot add net一类的错误PCB 里已存在同名网络通常是残留5.2 原理图侧的隐蔽问题有些问题在同步阶段不报错但会在后面转化成更麻烦的故障。一个是网络标签作用域。AD 里的网络标签默认在整个工程范围内有效所以你在电源页给一条线标了VCC接口页又给另一条独立的线标了VCC虽然两者物理上不连但 AD 认为它们是同一个网络。编译的时候不会报错导入 PCB 后却会出现一根莫名其妙飞过整板的线。解决办法是在Project Options Netlist Options里把网络标识符作用域改成Sheet Symbols/Ports或者老老实实只用层次端口跨页连接。另一个是隐藏引脚。有些符号的电源引脚是默认隐藏的比如某些运放或者逻辑门它们会自动连到名字相同的全局网络上。如果你不知道这件事可能会发现芯片的 VCC 引脚在 PCB 里凭空连到了别处。在元件属性里把Show All Pins勾上就能看到。还有一类是只画了一半的差分对。原理图上标了_P没标_N或者两条线的命名规则不一致AD 无法识别成差分对PCB 里就会当成两根普通线等长补偿也就无从谈起。做 USB、以太网这些接口时命名规范一定要统一。导出 PDF 的时候也有个小坑很多人遇到过导出原理图 PDF 只有局部区域。那通常不是软件 bug而是打印设置里Print Area选成了Current View而不是Entire Document勾上后者再导就完整了。6. 踩过坑才记住的几个细节6.1 关于原理图检查的习惯我现在养成一个习惯原理图画完之后先不看 AD 的编译结果自己拿Navigator面板从第一个网络点到最后一个眼睛跟着高亮走一遍。这一步很枯燥但捡回来的错误值这个时间。上面提到的那个悬空反馈电阻就是编译只给了个Warning被我忽略最后自己一个个点网络才发现的。宁可多花十分钟也别让板子回来返工两周。6.2 关于封装的自检自己画的封装画完之后一定要做一件事打印 1:1 的图纸拿实物元件压上去对一对。听起来很土但确实能挡住焊盘间距偏小、引脚序号排反这类错误。尤其是排针和连接器方向搞反了会导致整个板子装不进去。嘉立创那类平台上现成的库可以参考但用之前最好还是在 AD 里量一下关键尺寸。6.3 关于 AD 版本差异AD20 到 AD21 到更新的版本界面和功能都有变化。比如图纸大小设置在 AD21 之后挪到了Properties面板里改不再是双击图纸边框的那个对话框了。Gerber 导入这类操作AD 支持把 Gerber 当参考层叠在 PCB 上做视觉对比但指望它把 Gerber 反编译成可编辑的 PCB 是不现实的输出格式本身是有损的。6.4 关于工具切换用惯了 Allegro 或者 PADS 的人转到 AD最容易不适应的是规则管理器那套逻辑。Allegro 的约束管理器是独立窗口、层级很深AD 的Design Rules是树状结构改完当场生效。键盘快捷键也完全不同Allegro 里做安装孔是一套Padstack流程AD 里直接放个焊盘设成Mounting Hole类型就行。工具之间来回切的时候别指望肌肉记忆能通用先花半小时把常用快捷键重新捋一遍更省事。我个人在实际操作中的体会是从原理图到 PCB 这件事软件操作只占三成剩下七成是对电路本身和工艺的理解。AD 把同步做得足够傻瓜了点几下按钮就能把网络搬过去。真正决定板子能不能一次成功的是原理图里那些网络标得对不对、封装选得准不准、规则设得合不合理、布局铺得顺不顺。这些活没人能替你干但每干一次下次就快一点、稳一点。