做硬件研发这些年,每次板子投出去,被贴片厂追着要坐标文件的时候,总有人会在两个选项上卡壳:Body Center还是Symbol Origin?别小看这个下拉框,选错了,整板偏位、立碑、连焊不良轮着来,轻则停机重贴,重则整批报废。这套东西我自己在Allegro里反复踩坑、对比、再固化成流程,今天完整拿出来说说。文章从菜单操作讲到两类原点的底层原理,再给一份可以直接照做的实操流程和排错清单,适合正在跟工厂撕扯坐标文件的PCB工程师、硬件负责人,也适合刚接触Allegro还没被贴片厂电话叫醒过的同学。
1. 坐标文件导出的全流程与菜单地图
1.1 坐标文件到底是什么
坐标文件,行业里常叫Pick & Place File或者贴片坐标文件,是给贴片机“指路”的关键数据。它记录板上每一个需要贴装的元件位号、器件型号、封装名、所在的层别、X坐标、Y坐标,以及元件的旋转角度。贴片机的吸嘴拿到这份数据后,才知道该从料站抓什么料、贴到板的哪个位置、以什么角度放下。
很多人以为坐标就是原理图上看到的坐标,或者布局里拖来拖去的坐标,其实不是一回事。Allegro设计文件里存的是元件逻辑连接和物理铜皮的关系,坐标文件是脱离设计文件单独存在的一堆文本或表格数据。贴片厂拿到Gerber和坐标文件,才能完成程序编程。坐标基准如果差了一个零点几毫米,在0201电阻、0.5mm引脚间距的BGA上,直接就表现出偏位或者引脚冒险搭锡。
所以坐标文件不仅仅是“导出来发出去”那么简单,它的基准点选择直接影响产线上的贴装良率。这也是Body Center和Symbol Origin之争的根源。
1.2 Allegro导出坐标的两条路径
Allegro里导出坐标文件,常用的有两条路径,很多人混淆了,我这里分开讲。
路径一,File菜单下的Export → Placement,这是最正统的坐标文件导出方式。弹出的Placement File对话框里,可以指定输出文件格式、单位、包含的元件类型、以及核心的Placement Origin选项,也就是Body Center和Symbol Origin选择。这个文件通常就是贴片厂直接用来编程的坐标数据。
路径二,File → Export → CSV for Excel,然后选择Component Placement reports相关选项。这种方式能导出一个CSV表格,里面包含元件的位号、封装、坐标、角度等信息,适合自己查看、做BOM核对或者交给结构工程师做核对,但不建议直接当贴片坐标用。
这里有个容易踩的坑:两条路径导出来的坐标,在某些情况下数值并不一致,原因就是CSV for Excel导出时坐标的基准取决于当前设计的数据库设置,不同版本表现不一样,而Placement Export可以让你明确选择Body Center或Symbol Origin。所以正式交付工厂的坐标,强烈建议用路径一,至少你能控制坐标源。
1.3 前置设置:设计原点、单位与过滤条件
真正点导出按钮之前,有几个前置设置必须确认,否则坐标文件出来后是废的。
第一,设计原点。Allegro的坐标是绝对坐标,坐标值的大小取决于设计原点放在哪里。最规范的做法是把板框左下角放在坐标(0,0),或者按照公司模板设定工艺原点。有的工程师画板框时随手摆在一个奇怪的位置,导出坐标后全是几十毫米甚至上百毫米的偏移量,贴片厂编程时还要做一次整体平移,多一次人工操作就多一分出错风险。操作方法是选中板框,用Move命令输入精确目标坐标,把左下角定到(0,0)。
第二,单位。导出对话里单位有Mils、Inches、Millimeters、Microns。除非贴片厂明确要求,否则一律用Millimeters。贴片机内部一般用毫米或者微米运算,和PCB设计图单位保持一致能减少换算风险。小封装器件对精度敏感,建议小数点后保留4位,也就是0.0001mm的精度,完全满足需要。
第三,过滤条件。设计文件里往往有表贴元件、插件元件、定位孔、mark点、测试点等。导出Placement时,需要按需勾选包含哪类元件。常见的做法是只导表贴元件,插件元件(DIP、直插连接器)一般由人工插件工序或者波峰焊处理,不需要贴片坐标。如果混进去了,贴片厂还要专门筛一遍,容易出错。
准备清单我整理成了表格,导出前过一遍:
| 检查项 | 推荐设置 | 说明 |
|---|---|---|
| 设计原点 | 板框左下角(0,0) | 避免坐标整体偏移 |
| 单位 | Millimeters | 与贴片机常用单位一致 |
| 精度 | 小数后4位 | 满足高精度贴装需求 |
| 元件过滤 | 仅表贴元件 | 插件另走其他工序 |
| 输出基准 | 按工厂要求 | 多数贴片厂默认为Body Center |
| Mark点 | 视需要导出 | 有些设备需要单独设置 |
2. Body Center与Symbol Origin的底层逻辑差异
2.1 Symbol Origin是封装库里的老原点
Symbol Origin,直译叫符号原点,实际上是你在建封装库时,用Setup → Change Drawing Origin这个命令设定的那个坐标原点。回忆一下建库过程:新建封装时,软件默认的原点可能在图纸的(0,0)处,你需要在放置焊盘之前把原点移到你想作为参考的位置。
问题就出在这个“你想作为参考的位置”上。不同工程师建库习惯千差万别。有的人把原点放在Pin 1上,有的人放在第一个焊盘中心,有的人怕麻烦就放在画图区域的某个点上。如果当初做封装时没有刻意把原点放在器件几何中心,那么Symbol Origin的坐标和元件的物理中心就可能存在偏差。
这个偏差在贴片机上会直接转化为吸取位置偏移。贴片机吸取元件时,吸嘴找的是元件体中心(或者视觉系统算出的元件中心),而坐标文件告诉机器的位置却是Symbol Origin。两者对不上,机器就会按错误坐标放料。尤其是高速机,吸嘴每吸取一个料都要按坐标定位,偏差等于每个元件都被平移了一段距离。
所以,不是Symbol Origin这个选项本身错,而是它依赖你当年建库是否规范。Allegro里没有强制校验原点必须在元件中心,库不规范是行业常态,这也是很多老工程师坚持用Body Center的原因。
2.2 Body Center是Allegro自动算出来的重心
Body Center,从名字就能理解,是元件本体中心。这个中心不是你在库里设置的,而是Allegro根据封装的外形占位信息自动计算的。
具体来说,它参考的是封装库里的Place_Bound_Top和Place_Bound_Bottom这两个层。这两个层一般在封装库里画成一个覆盖元件本体的矩形框,实际上代表了元件在PCB上占用的物理范围。Allegro计算Body Center时,会读取这个矩形框的几何中心,认为那就是元件体的中心点。
这就有两个关键含义。第一,如果建库时Place_Bound层画得足够规范,紧贴元件本体外形,Body Center就很准确,比Symbol Origin更接近贴片机视觉系统找元件中心的逻辑。第二,如果Place_Bound层没画,或者随手画了一个很大或者很偏的框,Body Center同样不准,甚至可能比Symbol Origin还离谱。
我经手过很多第三方元件库,有些库的Place_Bound整个没有,导出时Allegro会退而求其次,用丝印层、Assembly层等外形数据来估算中心,这种估算在异形元件上容易出错。所以Body Center好用,但前提是库要健康。
2.3 差异到底能有多大
拿真实元件举例。一个0402封装的贴片电阻,本体长1.0mm、宽0.5mm。如果你建库时把原点放在Pin 1焊盘中心,而Pin 1焊盘在元件长轴的一个端点,那么Symbol Origin与电阻物理中心之间的偏差大约0.4mm到0.5mm。看起来不大,但对于贴片机程序来说,等于每个元件都要求机器偏移0.4mm,而贴片机本身贴装精度通常在±0.05mm级别。
QFP封装的MCU更夸张。一个LQFP64封装,本体边长12mm,引脚间距0.5mm,如果原点放在Pin 1角上,Symbol Origin和芯片中心的偏差就是对角线的一半,大约8.5mm。这种误差贴上去,芯片引脚直接越过焊盘,整板都不能要。
连接器类异形件介于两者之间,好的库会把原点放在连接器配合面的中心,但很多库直接放在第一个引脚上,偏差从几毫米到十几毫米都有。BGA封装情况好一些,因为很多BGA库建库时就把原点放在球阵列中心,但也不是绝对。
为了直观,我整理了一个典型偏差参考表:
| 封装类型 | 典型原点习惯 | 与体中心偏差 | 是否适合直接用Symbol Origin |
|---|---|---|---|
| 0402/0603电阻电容 | Pin 1焊盘中心 | 0.3mm~0.5mm | 不建议,除非原点在几何中心 |
| SOP8/SOT23 | Pin 1或首个焊盘 | 1mm~2mm | 视库而定 |
| LQFP64/100 | Pin 1角点 | 5mm~10mm | 不建议 |
| BGA类 | 球阵列中心 | 基本无偏差 | 可用 |
| 排针/连接器 | 第一脚 | 1mm~10mm | 不建议 |
2.4 不同使用场景的选择标准
既然两者各有优劣,实际工作里怎么选?我的经验是按交付对象来区分。
给贴片机、SPI锡膏检测仪、AOI光学检测仪用的坐标,优先选Body Center。原因很简单,这些设备识别元器件时,视觉系统找的都是元件本体中心或引脚阵列中心,不是设计软件里的符号原点。用Body Center等于和设备对齐基准,减少人工补偿。
给结构工程师做干涉检查、给仿真软件做热仿真、或者输出PCB在整机中的装配位置时,通常用Symbol Origin。因为这类需求关注的是元件在板上基于设计基准的位置,而且很多结构图档是以原理图符号为基准对齐的。
有一种情况要特别说:公司内部有统一的封装库标准,且所有封装的Symbol Origin都严格定义在元件几何中心,那么用Symbol Origin完全没问题,甚至更方便。我见过一些大公司内部规范和Allegro默认习惯不同,坐标基准统一用Symbol Origin,生产也一直稳定。核心是统一标准,而不是绝对用哪一个。
还有一点,双面贴装时,底面元件在导出时要特别注意。贴片机贴底面时,元件视角是从板子底部向上看,角度定义和顶面不同。无论选哪个中心,都要和贴片厂确认底面元件的角度定义方式,否则极容易整片翻转错位。
3. 实操过程:双面混装板的坐标导出
3.1 导出前的检查清单
我不会一上来就点导出,而是先花两分钟过一遍设计文件状态。这个习惯帮我避免了很多次返工。
第一,确认所有元件都已放置到位。有的板子布局布线完,还有几个元件没摆放,导入坐标文件后贴片厂会对着缺失的位号反复确认。在Allegro里用Display → Element选择元件,或者用Tools → Reports查看Unplaced Components。
第二,确认当前设计单位。我习惯在Setup → Design Parameters → Design里把Accuracy设到4位小数,单位用Millimeter。这样做既保证了坐标精度,导出的数据也不会因为单位切换出现舍入怪事。
第三,确认板框原点。选中板框外形线,用Show Element看坐标,如果左下角不是(0,0),用Move命令选中板框上的某个角点,在命令窗口输入x 0 0,把它精确移到原点。如果板框本身是分段的,建议先用一个Rect角点对齐。
第四,保存文件。导出坐标前一定保存,因为有些操作(比如不小心动到了元件)在导出前没保存可能会把临时数据带进去,工厂端看到的就不是你最终想要的文件。保存后也别急着关,后面核对坐标时要回来看。
3.2 一步一步导出Placement文件
现在开始正式操作。菜单路径是File → Export → Placement。弹出来的对话框里逐项设置:
Output file,默认会根据板子名生成一个.placement的文件,我一般会改成“板名_坐标_日期”,比如DSP_MAIN_PCB_PnP_20250115.txt,方便版本管理,也方便贴片厂识别哪个是最新文件。
Format选择,不同版本叫法略有差异,常见是Symbol and Pin、Symbol Only等。表贴元件为主时选Symbol and Pin,输出内容更完整,包含位号和引脚信息。如果工厂只要有位号和坐标,选Symbol Only也够。
Placement Origin,这就是核心中的核心。选Body Center还是Symbol Origin,按前面说的标准来。如果跟贴片厂有过明确约定,按约定执行;没有约定的,优先Body Center,并跟对方确认一句。
Units选择Millimeters,Angles默认Degrees,精度在Design里已经定了4位小数,这里不用再额外设置,但导完后最好打开文件扫一眼。
Include Fiducials选项,如果你的板子上有贴片Mark点,而且贴片机需要Mark点坐标做基准,勾上。如果对方有自己的Mark点设置流程,可以不勾,避免坐标列表里混入非元件数据。
Include Unplaced选项,通常不勾,只输出已摆放的元件。有些版本是Include Components选择All或者SMT Only,按公司流程来。
全部设置好后,点击Export,软件会在你设置的目录下生成坐标文件。这个过程很快,复杂板子也就一两秒。
3.3 导出后的文件解读与核对
拿到坐标文件后,不要直接发出去,花五分钟核一遍。用文本编辑器打开文件,或者导入Excel。典型内容格式大致是这样:
RefDes Device Type Package Side X Y Rotation R1 100K 0402 TOP 10.5000 20.0000 90.0000 C5 10uF 0603 TOP 11.0000 21.0000 0.0000 U2 STM32F407 LQFP100 TOP 30.5000 45.2000 270.0000第一行是列名,不同版本顺序可能不太一样,但核心字段跑不出这些。核对时重点看三件事。
第一,检查元件数量。与原理图BOM对照,位号数量是否一致。少了元件,多半是过滤条件的问题;多了元件,可能是没排除插件或测试点。我用Excel筛选Side列,分别统计TOP和BOTTOM的元件数,和设计里的元件数对比,误差为0才继续。
第二,抽查几个关键元件坐标。在Allegro里用Show Element选中某个IC,看它的Placement坐标(或者用Move模式下目测位置),和文件里对应的坐标对比。不要只看一个,要抽BGA、连接器、小阻容各几个。坐标一致说明导出的基准符合设计布局,不一致就要排查是不是把单位或者原点弄错了。
第三,检查角度范围。正常元件的旋转角度为0度到359度,如果文件里出现负角度或者超过360度的角度值,可能是设计过程中旋转操作留下的异常数据,需要和贴片厂确认是否接受。我碰到过一次角度显示为-90度的情况,贴片程序里必须手动转成270度才识别。
3.4 底面元件与Mark点的特殊处理
双面贴装板,BOTTOM层的元件坐标和顶面逻辑上是一样的,但角度表达上要格外小心。Allegro导出时对Bottom面元件通常给出Mirror信息或Side为BOTTOM,角度一般按设计库中的角度输出。贴片机在贴底面时,会把板子翻转,从底面向上看元件,这时候角度的旋转方向和贴片机内部定义的旋转方向是否符合,必须和工厂确认。
我是这样处理的:对贴片厂要求不明确的,只提供Side列标识T/B,不额外做角度变换,由工厂的编程软件按数据库规则自动处理。因为不同贴片机对角度定义有差异,强行在文件里改了角度反而容易出乱子。
Mark点则是另一回事。如果板子上有贴片Mark点,而且你希望直接把Mark点也输进坐标文件,勾选Include Fiducials。导出的文件里可能出现FID开头的位号,或者单独标记为FIDUCIAL的行,X/Y坐标就是Mark点在板上的位置。没有Mark点的板子,该选项直接不勾。
4. 常见问题与排查技巧实录
4.1 整板坐标整体偏移,贴片厂根本没法用
现象是坐标文件里的数值和设计图上看起来差不多,但每个元件的坐标都整体多出来一段距离,比如X坐标全部多了50mm。问题基本出在设计原点,板框左下角不在(0,0)。Allegro的绝对坐标原点就是图纸原点,如果板框随手放在(10,20)的位置,导出坐标就会整体偏移。
解决办法是把板框左下角精确移动到(0,0)。选中板框,用Move,在命令窗口输入x 0 0,软件会问你是否只移动选中的对象,确认即可。移动后重新导出,坐标就回到合理范围。
还有一种隐蔽情况:个别元件坐标对,个别元件整体偏移。这往往是那些元件在布局时被人用Move + Capture Origin移动过,导致它们在设计数据库里的绝对坐标和视觉位置不一致。这种问题不好批量修,只能逐个确认。
4.2 个别元件坐标离奇,查出来是库原点不规范
有一次我导出坐标后发现,某个连接器的坐标距离它在板上的实际位置偏了8mm,其他元件都正常。单独对这个元件用Body Center再导一次,数值恢复正常;用Symbol Origin导,就发现它被放在了库原点的位置,而那个原点在十年前建库时被定在第一个针脚上。
这种情况多数发生在老库、外来库、或者从其他EDA工具转过来的库上。排查时选中元件,Ctrl+Shift+?或者用Tools → Database Check看不出原点位置。最快的方法是查看这个元件的封装,用File → Open → Package symbol找到对应.dra文件,Setup → Change Drawing Origin看原点放在哪。如果确实偏了,临时方案是输出时改用Body Center,长期方案是修库把原点移回元件中心。
4.3 Place_Bound缺失导致Body Center不准
用Body Center导出的坐标,个别元件还是明显偏了。这次问题不在Symbol Origin,而是Place_Bound层没画好。Allegro计算Body Center高度依赖Place_Bound_Top/Bottom,这个层没画,或者画的时候框得太大、太偏,Body Center就算不准。
检查办法是打开封装库,查看Place_Bound_Top和Place_Bound_Bottom层是否有内容、是否紧贴元件本体。没有就补一个,用Shape或者Rect在Place_Bound_Top层画一个刚好框住元件本体的矩形。注意,Place_Bound不仅影响坐标导出,还影响布局时的DRC间距检查和干涉检查,画得越规范越好。
改完封装库后,回PCB设计里用Tools → Update Symbols刷新封装,重新导出坐标,数值就会正确。
4.4 底面元件角度不对或者镜像翻转
坐标文件里BOTTOM层的元件角度,和贴片机程序里反映出来的角度差了180度或者完全镜像翻转。这个问题十有八九是贴片厂在导入坐标时,对BOTTOM面元件的角度处理规则和Allegro输出规则不一致。
Allegro导出时,元件角度保存在Rotation字段里,是按设计库中的角度输出的。贴片机贴底面时,板子从顶部翻到底部,原本朝上的元件面朝下,视觉和角度计算都会发生变化。这不是坐标文件本身错,而是双方对角度约定的理解不同。
处理方式是在交付前和贴片厂确认:你的程序软件是按CAD角度的原始值读取,还是自动做镜像转换。如果需要转换,我在交付文件时会在邮件里专门写清楚,这个文件是未经镜像转换的原始角度,需要导入后由编程软件统一处理。
4.5 坐标精度不够,小封装一贴就偏
有的设计单位还在用Mils,导出坐标时选了Mils,精度只有0.001mil,对于0201、01005这种封装来说,精度不够会导致个别元件位置偏出焊盘。哪怕只差一个0.02mm,在某些严格工艺下也是不良品。
解决方法是统一用Millimeters并保留4位小数。如果设计单位是Mils,在导出对话框里明确选Millimeters,软件会自动换算。换算后小数位可能有循环,必须在导出前把设计精度改成4位或更高,否则文件里只能看到3位小数。
4.6 问题速查表
| 问题现象 | 最常见原因 | 处理动作 |
|---|---|---|
| 整板所有坐标偏移 | 设计原点不在板框角落 | 板框左下角移到(0,0) |
| 个别元件坐标偏 | 封装库Symbol Origin不规范 | 换Body Center或修库 |
| Body Center仍偏 | Place_Bound层缺失/画偏 | 补画Place_Bound并更新封装 |
| Bottom面角度异常 | 角度约定不一致 | 与贴片厂确认转换规则 |
| 精度不足 | 单位或小数位设置错误 | 用毫米4位小数导出 |
| 元件数量不对 | 过滤条件包含/排除了元件 | 检查选项重新导出 |
5. 提效与跨部门协作建议
5.1 和贴片厂提前确认坐标基准
我吃过一次亏以后,养成了一个习惯:每次发坐标文件前,邮件里先写清楚这份文件的基准是Body Center还是Symbol Origin,单位是毫米、小数4位,角度是Degrees,side列T/B表示顶底层。贴片厂导入程序后如果发现偏差,也能快速定位是基准问题还是程序问题。
如果不是第一次合作的供应商,也建议在打样前把坐标基准确认写在订单备注里。很多贴片厂默认收Body Center,但遇到一些进口机型的编程软件,反而习惯用Symbol Origin。提前问一句,比到产线上停机扯皮省事得多。
5.2 规范化封装库是治本之策
Body Center和Symbol Origin之争,本质上是封装库规范性的问题。如果所有封装的Symbol Origin都定义在元件几何中心,Symbol Origin本身就是体心,两个选项没有任何区别,怎么选都不会错。
建立公司级封装库规范时,我建议明确写出原点位置:对于有极性元件,原点放在元件几何中心,同时保证Pin 1方向和元件实装方向一致;对于BGA,原点放在球阵列中心;对于异形连接器,放在连接器配合面的中心。这样导出的坐标文件天然不会因为原点和体心差异而出问题。
这条规范推广初期会让人嫌麻烦,但坚持一两个项目后,后面的DFM、仿真、产线对接都会变得顺畅。
5.3 批量导出与格式转换脚本
如果你负责的板子多、改版快,每次手动导出、改格式、发邮件很费时间。我这边沉淀了一套流程:Allegro里用Skill脚本一键调用Export Placement,按固定参数生成TXT和CSV两种格式;再配合Python脚本统一重命名、加日期戳、生成交付清单。遇到特殊格式要求的贴片厂,Python里做列重排和角度转换,十分钟能解决原来一小时的活。
Skill脚本网上有不少现成方案,核心就是把Placement导出参数固化下来,免去每次手动点选。我自己也写了一套,但篇幅有限这里不展开,后续有机会单独写一篇如何用Skill定制导出流程。
5.4 坐标文件的版本管理
坐标文件是和PCB设计强相关的交付物,板子一改版,坐标文件就必须跟着更新。我见过很多次贴片厂用错旧坐标文件,导致贴出来的板和当前Gerber对不上。现在我的习惯是文件命名里带PCB版本号和日期,比如MAIN_V1.2_PnP_20250115.txt,同时在邮件正文里标注对应的Gerber版本。对方拿到的文件如果和设计版本不匹配,看名字就能发现。
如果是同一块板多个版本同时打样,一定分文件夹存放,不要覆盖旧文件。坐标文件这种数据,每生成一次都是一份独立资产,旧版本在复盘和追溯时很关键。
结尾
最后说一点个人体会。坐标文件这个事,看起来只是点击一下导出、发封邮件那么简单,实际上非常考验流程规范。我见过很多工程师在File → Export → Placement里随手选了一个默认选项就发出去,等贴片厂电话来问“你们坐标基准是哪个”的时候,还要反问“啥基准”。这个细节如果处理不好,后面整批元件偏位、返工、延误交期,成本全得自己扛。
现在我自己的固定做法是:正式交付贴片厂的坐标文件,一律用Body Center导出,单位毫米、保留4位小数,并在交付说明里写清楚基准和版本;内部做DFM分析、结构核对时才用Symbol Origin。同时,我持续推动封装库的规范性,让Symbol Origin无限接近体心,这样两种基准的差异会越来越小,跟任何工厂对接都不慌。你如果还在为坐标文件跟贴片厂反复拉扯,建议从今天开始就把这个流程固化下来,一劳永逸。