前段时间打样回来一批板子,目检基本过关,结果一到SMT车间,虚焊率直接冲高。贴片厂工程师用放大镜照了半天,最后找到原因:丝印油墨印到了焊盘上。这是我第一次被“丝印压焊盘”坑到,而且是批量性的。后来我把板子拿回AD18里挨个查,才发现问题根源很简单——我在Top Overlay层画了好几个大面积色块,用来放产品标识和防静电符号,画的时候图省事直接拉矩形,压根没管下面的焊盘。
这篇文章我想把这类问题的处理方式完整梳理一遍。主要围绕一个看起来有点矛盾的场景:丝印层上做“敷铜”(准确说是大面积丝印填充色块),怎么让它自动/半自动地避开焊盘。文章会给出三种不同思路,分别覆盖“已有丝印对象要批量体检”“从零画避让色块”“焊盘密集、轮廓复杂”的场景,希望对被这个问题困扰过的工程师有帮助。
1. 问题本质:丝印层上的“敷铜”到底在避让什么
1.1 丝印油墨压住焊盘的后果
先说清楚为什么丝印不能压在焊盘上。丝印油墨本质上是绝缘树脂,印在焊盘表面后会形成一层极薄的隔离膜。这层膜在焊接时不仅阻碍焊料润湿焊盘,还可能在回流焊高温下碳化,污染焊料和焊盘表面。虚焊、假焊、上锡不良都会随之而来。
还有一个容易忽略的问题:AOI(自动光学检测)设备在识别焊点的时候,会把丝印油墨误判为异物或缺陷,造成大量误报。产线为了确认到底是虚焊还是误报,得停机人工复判,效率损失非常大。所以很多正规板厂在工程确认阶段就会把“丝印压焊盘”的问题打回来,但小批量样板阶段往往直接做出来,等你自己发现。
1.2 AD18里丝印层“色块”到底是哪种对象
在AD18里,丝印层的大面积色块一般有三种载体:
- Fill(填充):快捷键P+F,画出来就是一个矩形块。优点是快,缺点也很明显——形状只能是矩形,不能编辑顶点,更不能做异形避让。
- Solid Region(实心区域):快捷键P+R,支持任意多边形轮廓,可以随时编辑顶点。这是做丝印避让的主力对象。
- Track/Arc组合的封闭轮廓:本质上只是一堆线条围成的闭环,本身不填充,但可以通过转换工具变成Region。
很多工程师习惯用Fill画丝印底块,图省事。但一旦涉及避让焊盘,Fill几乎是最难用的对象——你只能靠“把矩形拆成多个小矩形拼接”来绕过焊盘,费力不说,还不严谨。这也是我在这篇文章里反复强调用Solid Region的原因。
跟铜层敷铜不同,丝印层没有Polygon Pour,也没有“灌铜后自动挖空”的概念。丝印对象放上去就是这样,它不会像铜皮那样遇到焊盘自动让位。所以“避让”这个动作必须由设计者主动完成,区别只在于:你是靠规则去查、靠手去画,还是靠半自动工具去生成。
1.3 三种方法的适用场景对照
| 方法 | 核心思路 | 适用场景 | 效率 | 学习成本 |
|---|---|---|---|---|
| 方法一:DRC规则兜底 | 设好丝印到焊盘间距规则,跑DRC批量定位违规,再逐项修正 | 已经有丝印对象,不确定哪里压盘 | 高(查错快,改错稍慢) | 低 |
| 方法二:Solid Region手绘 | 网格+电气栅格吸附,直接画带避让口的异形区域 | 从零画丝印色块,焊盘数量适中 | 中 | 中 |
| 方法三:描轮廓转Region | 用Track/Arc先画避让轮廓,再转换成Solid Region | 焊盘密集、轮廓极不规则、需要批量复制 | 中高(前期描边耗时,后期可复制) | 较高 |
三种方法不互斥,可以组合使用。比如先用手绘法画出轮廓,再跑一遍DRC确认没有遗漏,最后用脚本批量处理重复封装。
2. 方法一:DRC规则兜底,把“压盘”问题批量揪出来
2.1 设置 Silkscreen Over Component Pads 规则
AD18里有一套专门管丝印和焊盘关系的制造规则,路径在:Design → Rules → Manufacturing → Silkscreen Over Component Pads(注意AD18的汉化不完全,中文菜单下可能仍然显示英文,别因为找不到入口就放弃)。
展开之后你会看到两个约束:
- Silk To Solder Mask Clearance:丝印边缘到阻焊开窗(焊盘露铜区)的间距。
- Silk To Component Pad Clearance:丝印边缘到元件焊盘边缘的间距。
默认值一般是0.2mm(约8mil)。我个人的建议是,一般工艺设0.2mm就够,如果板子密度允许,设到0.25mm更稳妥;高密度板可以放宽到0.1mm~0.15mm,但下单前要跟板厂确认工艺能力。
勾选Enabled,数值填好,然后点Apply。需要注意,AD的规则系统有优先级机制,如果板子上存在多条同类型规则,优先匹配优先级高的。对大多数普通板子来说,直接用默认规则范围(All)就行。
2.2 运行DRC并快速定位违规
设置完规则后,进入Design → Board Check,打开设计规则检查对话框。在左边的Rules To Check树里展开Manufacturing,确保Silkscreen Over Component Pads规则右侧的Online和Batch复选框都勾上。
然后点击Run Design Rule Check(或直接按Enter运行)。跑完之后,Messages面板会列出所有违规项,每条都会明确告诉你是什么规则、哪个对象、坐标在哪。双击任意一条,PCB编辑器会自动跳转到对应位置并高亮对象,非常直观。
如果你之前没设过这个规则,第一次跑完会看到满屏错误,不要慌。先按坐标逐个跳过,把那些确实需要保留的丝印区域筛选出来,再决定是改对象还是改规则范围。
2.3 规模化修正丝印对象的小技巧
DRC只负责“体检”,真正花时间的是“治病”。我的处理顺序是这样的:
- 丝印文字(String):优先缩放、移动,把这个文字拖到元件体内部或板面空白处。批量操作时,在PCB List面板里把Filter设为Top Overlay的String,全选后用PCB Inspector统一修改Text Height、Text Width,把字体高度整体调小一档。
- 丝印色块(Fill/Solid Region):如果是Fill,建议先转成Solid Region(选中对象后右键 → 属性里调整,或者重新画),再通过拖动顶点让开焊盘。
- 如果焊盘实在太密集,与其在一个色块上修修补补,不如把这个区域切成几小块,分别放在焊盘间隙里。
这个方法最大的价值在于“心中有数”:DRC报告能一次性告诉你全板有多少处丝印压焊盘,而不是靠眼睛在一堆丝印文字和色块里找。尤其是多层板、密集封装混贴的板子,人工目检基本靠不住。
3. 方法二:Solid Region手绘异形色块,吸附定位一次成型
3.1 为何不用Fill而用Solid Region
设计规范一点的团队,基本不会在丝印层用Fill画色块。Fill只能画矩形,焊盘排列稍有不规则,你就要堆好几个矩形去凑,拼出来的边界还歪歪扭扭。Solid Region不同,它支持任意多边形,顶点可以随时编辑,还能在属性面板里精确输入坐标,天生就是为了解决异形轮廓而生的。
AD18中放置Solid Region的路径是Place → Solid Region,快捷键P+R。放置前按Tab打开属性面板,把Layer切换为Top Overlay,Net设为No Net,Board Side选Top。如果你在底层丝印(Bottom Overlay)上操作,记得对应切换。
3.2 网格和电气栅格设置是成败关键
手绘异形区域的难点在于:你怎么知道鼠标该停在哪,才能让丝印边界和焊盘边缘保持均匀间距?这个问题靠眼睛是解决不了的,一定要靠栅格和吸附。
打开Design → Board Options(快捷键D+O),重点设置两个地方:
- Snap Grid(捕获栅格):建议设为0.1mm或与避让间距一致(比如0.2mm)。网格越小越精细,但太细会导致鼠标位移量大,操作反而变慢。
- Electrical Grid(电气栅格):务必勾选启用,Range设为1mm左右。这样鼠标靠近焊盘边缘或中心1mm范围内时,会自动吸附到焊盘的几何特征点上,你再沿着焊盘外沿走线,画出来的边界就是焊盘的精确外扩轮廓。
这两个设置配合起来,就不再需要手动计算“这里该往右挪0.2mm”,电气栅格已经把焊盘边缘吸住了,你只要在外扩方向上保持网格对齐即可。
3.3 关键操作:走线模式切换与顶点微调
放置Solid Region时,和画Track一样可以切换走线模式。按Shift+Space可以在45°、90°、任意角度之间循环切换。对于丝印避让来说,45°模式最常用——沿焊盘四边画轮廓时,线段干净利落,后面编辑顶点也方便。
具体操作我习惯这样:
- 先用P+R放置Region,在目标区域外的空白处点下第一个顶点。
- 沿着一个大方向连画几根直线,把色块的大致范围框出来。
- 走到焊盘附近时,开启电气栅格,让鼠标吸附到焊盘边缘,按Tab临时切换走线角度(或者Shift+Space切到90°/45°),贴着焊盘外沿逐个顶点绕过去。
- 绕完所有焊盘后,回到起点附近,右键结束放置。
此时画出来的形状可能不够完美,很多顶点位置差一点。不用着急重新画,直接双击这个Region,在Properties面板里找到Vertices区域,点编辑按钮打开顶点列表。表格里可以精确看到每个顶点的X/Y坐标,手动把偏差大的点的坐标改成和焊盘边界保持固定间距的数值就行。
如果嫌逐个改太慢,还有一招:用方法三先给焊盘生成一圈辅助参考圆环/方框,放置Region时打开电气栅格,让端点自动吸附到这些参考线上,画完再删除辅助对象。这样既快又均匀。
3.4 复杂区域的“切块拼接”思路
碰到整块大面积丝印区域里嵌了十几个焊盘的场景,不要试图用一个Region把所有避让口都画出来。顶点太多,后期稍有不慎就会自交,AD直接报错。
更好的做法是把大区域拆成若干个子区域,每个子区域只负责避开2~3个焊盘,区域之间留0.2mm以上的间隔即可。观感上虽然有点碎片化,但工程上完全没问题——丝印油墨本来就是印上去的,色块之间有微小间隙根本看不出来。
这个思路跟敷铜挖空是反着的:铜皮是“先整块后挖洞”,丝印区域是“先分块再拼接”,因为丝印层没有布尔减运算,挖空做不了,但分块可以无限接近挖空的效果。
4. 方法三:先描避让轮廓再转Region,复杂边界也能高效生成
4.1 核心思路:用Track/Arc画“留白”,再转成区域
方法三的思路稍微绕一点,但非常适合焊盘数量多、排列不规律的场景:先在Top Overlay层用Track和Arc沿着每个焊盘画一圈“避让轮廓”,然后把这些轮廓转成Solid Region,最后再围着这些Region画大色块。这样生成的避让边界非常标准,几乎不会出现手绘时那种歪歪扭扭的问题。
AD18里提供了一组转换工具,路径在Tools → Convert → Create Region from Selected Primitives(从选中图元建立区域)。选中丝印层上的一组封闭Track/Arc后执行这个命令,软件会把它转成一个Solid Region。转换前提是轮廓必须完全封闭,哪怕有一个微小缺口都会转换失败。
4.2 具体操作步骤:圆形焊盘和矩形焊盘分别怎么画
圆形焊盘:选Place → Arc (Center),以焊盘中心为圆心画一个圆弧。放置后双击圆弧,在属性里把Radius设为“焊盘半径+避让间距”。比如焊盘直径是1.6mm,半径0.8mm,想留0.25mm避让,就设Radius=1.05mm。起始角和终止角保持0~360度,就是整圆。这里注意AD中圆形焊盘的X-Size/Y-Size相等,也就是直径。
矩形焊盘:用Track沿着焊盘四条边画一圈矩形框,每条边相对焊盘边缘外移一个避让间距。打开电气栅格后,把鼠标吸附到焊盘顶点,再用M(Move)命令按X/Y方向精确位移0.25mm,连续画完四条边,首尾相连。转角处如果不想有间隙,就切换到45°模式斜切一段,或用Arc做圆弧过渡。
所有轮廓画完之后,框选它们在Top Overlay层上的全部元素,执行Tools → Convert → Create Region from Selected Primitives。如果转换成功,说明轮廓封闭性OK;如果报错,多半是某个连接点有微小间隙,放大视图检查端点,必要时手动补一段Track。
4.3 批量场景:PCB List统计和复制粘贴
遇到同一封装重复出现几十次的板子,没必要每个都画一遍。先针对单个封装的焊盘生成好避让轮廓并转成Region,然后全选这组Region,Ctrl+C,再Ctrl+V,放到其他相同封装的坐标位置。放置时可以用Edit → Paste Special,勾选Paste on current layer,确保都落在Top Overlay上。
对于“到底选中了几个焊盘”“选的焊盘对不对”这类问题,AD18左下角状态栏会显示当前选中对象数量,PCB List面板(View → Panels → PCB List)里也能看到筛选出来对象的明细,包括坐标、所在层、尺寸。把Filter设为Pad,就能精确查看焊盘列表,比在图上逐个点数靠谱得多。
4.4 一个可参考的DelphiScript思路
如果焊盘数量实在多到手工描边不现实,可以用AD的脚本功能批量生成避让圆环。思路是遍历当前PCB上的焊盘对象,在每个焊盘位置生成一个Top Overlay层、半径比焊盘大0.3mm的Circle,作为后续手绘Region的参考边界。核心代码骨架如下:
procedure GenerateSilkClearanceCircle; Var Board : IPCB_Board; Iterator : IPCB_BoardIterator; Pad : IPCB_Pad; Circle : IPCB_Circle; begin Board := PCBServer.GetCurrentPCBBoard; If Board = Nil Then Exit; Iterator := Board.BoardIterator_Create; Iterator.AddFilter_ObjectSet(MkSet(ePadObject)); Iterator.AddFilter_LayerSet(AllLayers); Iterator.AddFilter_Method(eProcessAll); Pad := Iterator.FirstPCBObject; While Pad <> Nil Do Begin Circle := PCBServer.PCBObjectFactory(eCircleObject, eNoLayer, eCreate_Default); Circle.XCenter := Pad.XLocation; Circle.YCenter := Pad.YLocation; Circle.Radius := MMsToCoord(Pad.TopXSize / 2 / 1000000 + 0.3); Circle.Layer := eTopOverlay; Board.AddPCBObject(Circle); Pad := Iterator.NextPCBObject; End; Board.BoardIterator_Destroy(Iterator); PCBServer.RefreshPCBBoard; End;不同AD版本的脚本API命名略有差异,这段代码在AD18环境中基本可用,如果某个属性在你的版本里提示不存在,按编译错误提示微调即可。生成的参考圆环用完直接删除,不影响丝印层。
5. 实战建议:把避让思维前置到设计流程里
5.1 设计前先评估丝印区域与焊盘密度
三种方法再好,本质都是“事后再补”。真正高效的做法是:在规划丝印层时就把焊盘位置考虑进去,能不把丝印色块放到焊盘密集区就不放。
比如PCB的丝印信息中,产品型号、Logo、防静电符号、版本号这些区域,尽量布局在板边或元件稀疏区。如果确实要放在中央区域,先用方法三生成一圈参考轮廓,再用方法二按参考轮廓画Region,这样画一次就成型,后面不需要大量返工。
5.2 用“分层规划”替代“事后修补”
我见过很多同事习惯把所有丝印信息一股脑堆在Top Overlay上,结果顶层密度爆炸,底层空荡荡。其实丝印层和铜层一样需要规划:重元件标识、极性标识、连接器位号放正面;低矮件、测试点、版本号放背面丝印。平衡之后,每个区域需要“敷铜”的色块面积自然就小了。
另外,AD18支持在PCB属性里直接切换层的颜色和透明度。把Top Overlay设成半透明模式,配合高亮焊盘层,能让你在放置色块之前就直观看到焊盘区域分布,避免“盲画”。
5.3 个人经验:打样前多一步自检
我现在的习惯是:板子发出去打样之前,导出一张丝印层PDF,放大到200%,像看地图一样把整个板面扫一遍。重点看丝印色块边界和焊盘之间的间隙是否均匀,尤其是BGA扇出区域、连接器焊盘周围、以及极细间距的IC位置。
这一步花不了几分钟,但能省掉很多和板厂来回确认的时间。毕竟板厂的DFM检查更多关注的是“能不能做出来”,而不会替你把丝印美观度、焊接可靠性这些细节都把关好。设计端多花五分钟,产线少烧一批板,这笔账非常划算。
另外提一句:如果板子走的是SMT贴片,焊接时焊盘需要良好的热分布,丝印避让属于DFM里“可焊性设计”的一环。它和SMD焊盘隔热设计一样,都是为了让焊接结果稳定可靠。两者关注点不同,但都可以归到“下单前必须自查”的清单里。