news 2026/10/7 1:21:20

Altium Designer原理图同步PCB与布局布线实战

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Altium Designer原理图同步PCB与布局布线实战

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.8mm,3.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 里按Shift+V能实时看到间距提示,布线时心里有底。

3.5 布局:先定大件,再排小件

规则定完才轮到布局。布局这件事没有标准答案,但有一套通用的顺序:

  1. 先放结构和接插件。USB 口、排针、接线端子、按键,这些位置由外壳和操作习惯决定,位置定死了,剩下的都是围着它们转。连接器一定要贴着板边,别放在板子正中间,否则线缆插上之后受力全压在焊盘上。
  2. 再放主控芯片。STM32F103C8T6 放在连接器能快速到达的位置,同时让晶振紧贴它的 OSC 引脚,走线越短越好。
  3. 然后放电源部分。DC-DC 的输入电容、电感、输出电容要按芯片手册推荐的顺序紧凑排列,环路面积越小越好,否则纹波和 EMI 都控制不住。这块地方的布局比布线重要得多。
  4. 最后才是阻容和小的外围器件。这时候可以用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)内层载流(A)
0.150.350.15
0.200.450.20
0.300.650.30
0.501.000.45
0.801.500.70
1.001.800.85
2.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 把同步做得足够傻瓜了,点几下按钮就能把网络搬过去。真正决定板子能不能一次成功的,是原理图里那些网络标得对不对、封装选得准不准、规则设得合不合理、布局铺得顺不顺。这些活没人能替你干,但每干一次,下次就快一点、稳一点。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/7 1:20:34

EMC预测试与整改:从超标频点反推噪声源头,Layout阶段阻断EMI

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/7 1:20:17

高并发下演唱会购票系统设计:Spring Boot+Redis实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/7 1:20:14

01背包问题三大解法实战对比:DP、回溯与分支限界

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/7 1:19:20

superpowers自托管指南:搭建实时协作的3D开发环境

1. 认识 superpowers:它不是魔法,是你自己的协作创意工坊我第一次听到 superpowers 这个名字,是在一个做独立游戏的朋友那里。他跟我说自己搭了一个服务,团队四个人窝在三个城市,浏览器一开,就能在同一块 3…

作者头像 李华
网站建设 2026/10/7 1:19:12

SystemVerilog中fork join与for循环的工程实践精要

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/7 1:19:12

智能车PCB升级四层板全流程:从原理图到打样的实战经验

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华