1. 项目概述:为什么我们需要关注PCB设计中的字体管理
在PCB设计的全流程中,丝印层(Silkscreen)的布局与标注,常常被工程师们视为“收尾工作”或“美化步骤”,从而在项目后期被匆匆处理。然而,一张清晰、规范、可读性强的丝印,对于后续的焊接、调试、维修乃至产品生命周期管理都至关重要。想象一下,在密密麻麻的元器件中,位号模糊不清、极性标记难以辨认,会给生产线的操作员或售后工程师带来多大的困扰。这不仅仅是美观问题,更是直接影响生产效率和产品可靠性的工程细节。
Cadence Allegro作为业界主流的PCB设计工具,其功能强大,但设置项也相对繁多。对于字体、线宽、大小的调整,其操作逻辑分散在几个不同的菜单和面板中,新手很容易感到困惑。本文将以Allegro 16.6版本(其操作逻辑与16.0基本一致,后续版本也大同小异)为例,深入拆解如何系统性地管理PCB设计中的文本属性,特别是丝印层的位号(Ref Des)字体。我们将不止步于“如何操作”,更会探讨“为何这样操作”,以及在实际项目中积累下来的、能让你事半功倍的经验技巧。无论你是正在学习Allegro的初级工程师,还是希望优化设计流程的资深用户,这篇从一线实战中总结的指南,都能为你提供清晰的路径。
2. 核心思路拆解:理解Allegro的文本管理体系
在动手修改之前,我们必须先理解Allegro管理文本(Text)的核心逻辑。它与一些简单的图形软件直接修改“字体属性”的思路不同,采用了一套基于“文本块(Text Block)”和“类/子类(Class/Subclass)”的体系。这套体系初看繁琐,但一旦掌握,便能实现高效、统一、可复用的文本管理。
2.1 文本块(Text Block):字体的“模版”
你可以把“Text Block”理解为预定义的字体样式模版。每个模版有唯一的编号(如1, 2, 3…),并关联了一组具体的属性:字符宽度(Width)、字符高度(Height)以及光绘线宽(Photo Width)。
- Width & Height:定义了字符本身的物理尺寸,是字体大小的核心。通常,我们说的“改字体大小”,主要就是修改这里。
- Photo Width:这个参数非常关键,它定义了字符笔画(线条)的粗细。如果这里设置为0,那么在屏幕上,字符会以1个像素的宽度显示,看起来非常细,但在输出光绘文件(Gerber)时可能会出现问题,因为光绘机需要明确的线宽信息来进行曝光。一个基本原则是:Photo Width不宜大于字符宽度的20%,否则字符可能会糊在一起,影响辨识度。
Allegro默认内置了一些Text Block,但通常我们需要根据公司规范或板厂要求,创建并自定义自己的文本块。所有放置在PCB上的文本(位号、网络名、机械描述等)都必须指定一个Text Block编号。修改Text Block的定义,所有引用该编号的文本都会全局更新,这是实现统一修改的基石。
2.2 类与子类(Class/Subclass):文本的“归属地”
这是Allegro图层的管理核心。文本必须存在于某个特定的“类/子类”中。对于丝印来说,最相关的就是:
- 类(Class): REF DES。这表示“元件位号”。
- 子类(Subclass): SILKSCREEN_TOP / SILKSCREEN_BOTTOM。这表示“顶层丝印”或“底层丝印”。
这意味着,一个顶层的电阻位号“R1”,它的完整“地址”是:REF DES/SILKSCREEN_TOP。而一个底层的电容位号“C2”,则在REF DES/SILKSCREEN_BOTTOM。在修改时,你必须明确你要修改的是哪个“地址”下的文本。很多初学者修改无效,就是因为没有在正确的子类下进行操作,或者找错了对象。
2.3 修改的两种途径:全局设置与局部编辑
基于上述体系,修改字体就有了两种主要思路:
- 全局修改(推荐用于统一规范):直接修改某个Text Block编号的定义(比如把3号块的Height从60mil改为50mil),那么板上所有使用了3号文本块的文本,无论它在哪个类/子类下,都会自动变小。这适用于在项目开始时设置规范,或在后期需要统一调整所有同类字体时。
- 局部编辑(用于个别调整或批量选择修改):使用
Edit -> Change命令,针对一个或一批已放置的文本,更改其当前所引用的Text Block编号(比如从1号块换成2号块),或者更改其所在的子类。这适用于对特定区域、特定元件进行精细化调整。
理解了这三个核心概念,后续的所有操作就都有了清晰的逻辑地图。接下来,我们将进入实战环节。
3. 实操流程详解:从设置到批量修改
我们将按照一个合理的作业流程来展开:首先定义好我们需要的字体模版(Text Block),然后学习如何修改已存在的文本,最后解决一些常见问题。
3.1 第一步:定义与修改文本块(Text Block)
这是所有工作的起点。通常,我们会在开始布局布线前,就根据设计规范设置好常用的文本块。
操作路径:Setup -> Design Parameters...,在弹出的对话框中选择Text标签页。 在这里,你会看到一个Setup Text Sizes的区块,里面列出了当前已定义的所有Text Block。
关键参数解析:
- Text Blk:编号。你可以编辑已有的,也可以点击
Add增加新的。建议建立一套自己的编号规则,例如:1-器件位号(小),2-器件位号(大),3-网络名,4-板名/logo等。 - Width和Height:字符的宽和高。单位与你当前的设计单位一致(mil或mm)。对于丝印位号,高度(Height)是主要关注点。常见的尺寸范围是30mil到80mil(约0.75mm到2.0mm),具体取决于板子空间和元器件密度。经验之谈:对于一般密度的板卡,40-60mil的Height是比较通用且清晰的选择。
- Photo Width:光绘线宽。这是极易出错的地方。绝对不能为0(除非你明确知道后果)。一个安全的经验公式是:
Photo Width = Height * (10% ~ 15%)。例如,Height为50mil,Photo Width设为5-8mil。线宽太细,蚀刻后可能不清晰;太粗,字符容易粘连。
注意:修改此处的Text Block参数并点击
Apply或OK后,更改会立即生效于所有引用此Text Block的文本对象,无论它们位于板上的哪个位置、哪个图层。这是一个全局性操作。
3.2 第二步:使用Change命令进行针对性修改
当我们需要修改板上已有的文本时,最常用的命令是Edit -> Change。
详细操作步骤与意图解析:
- 启动命令:点击
Edit菜单,选择Change。你的鼠标光标会变成十字准星,右侧控制面板会自动弹出。 - 精准筛选(Find面板):这是避免误操作的关键。在右侧控制面板的
Find标签页里,取消所有勾选,然后只勾选Text。这意味着你的操作对象将仅限于文本元素,不会误碰到走线、过孔、形状等。如果你只想改位号,甚至可以进一步在Find By Name里选择Property和RefDes,但这通常用于更高级的筛选。 - 设定修改目标(Options面板):切换到
Options标签页,这里决定了你要把文本改成什么样子。- Class 和 New Subclass:这是改变文本“归属地”的地方。例如,如果你误把一些顶层丝印位号放到了底层,可以在这里将
Class设为REF DES,New subclass设为SILKSCREEN_TOP,然后去框选那些文本,它们就会被移动到正确的图层。 - Text block:这是改变字体大小的核心。在下拉列表中,选择你希望文本变成的Text Block编号(例如,从1号换成2号)。这里修改的是文本所关联的“模版编号”,而不是直接修改尺寸。
- Line width:注意!这里的
Line width与Photo Width不同。它主要影响当前屏幕显示的线宽,对于光绘输出,最终还是以Text Block中定义的Photo Width为准。不过,为了所见即所得,通常建议将它设为与目标Text Block的Photo Width一致的值。
- Class 和 New Subclass:这是改变文本“归属地”的地方。例如,如果你误把一些顶层丝印位号放到了底层,可以在这里将
- 执行修改:在画布上,用鼠标左键单击单个文本,或按住左键拖拽框选多个文本。被选中的文本会立即按照
Options中的设置更新。你可以连续操作,修改不同区域的文本。 - 结束命令:修改完成后,点击鼠标右键,选择
Done结束命令。
批量修改丝印位号的典型场景: 假设你想把顶层所有位号字体从默认大小统一放大。
- 操作:
Edit -> Change。 - Find面板:只勾选
Text。 - Options面板:
Class选REF DES,New subclass保持为空(因为我们不改变图层),Text block选择你预先定义好的、更大字体的那个编号(比如从1换成2)。 - 执行:在板框外,拖拽一个巨大的框,选中整个板子。你会发现,只有当前激活图层(比如SILKSCREEN_TOP)上的REF DES文本被改变了。这是因为Allegro的
Change命令在默认状态下,只影响当前可见且被Find筛选到的对象。
3.3 第三步:图层管理技巧——如何避免误改底层丝印
在修改顶层丝印时,一个非常实用的技巧是关闭底层丝印层的显示。这是原文中提到的关键注意事项。
操作方法: 在右侧的Visibility面板(或通过Display -> Color/Visibility...打开)中,找到Board Geometry和Components相关的丝印层。
- 确保
SILKSCREEN_TOP相关的项是可见的(通常包含REF DES,Assembly,Shape等子类)。 - 将
SILKSCREEN_BOTTOM和DISPLAY_BOTTOM相关的所有子类的可见性关闭(取消勾选)。
这样做的好处:
- 防止误选:当你用框选的方式批量修改时,不会选中底层的文本,避免造成混乱。
- 视觉聚焦:屏幕显示更清爽,让你能专注于当前操作层。
- 提升性能:关闭不必要图层的显示,可以减轻图形渲染负担,在复杂设计中操作更流畅。
这是一个简单的习惯,却能极大提升操作效率和准确性。
4. 高级技巧与深度避坑指南
掌握了基本操作后,一些进阶技巧和“坑点”能让你真正游刃有余。
4.1 创建公司级字体库与重用
每次新建项目都手动设置Text Block非常低效。你可以创建一个“模板板(Template Board)”文件。
- 操作:新建一个空白PCB文件,在
Setup -> Design Parameters -> Text中,定义好公司规范的所有Text Block(如1号-小位号,2号-大位号,3号-说明文字等)。 - 保存:将此文件另存为
company_template.brd。 - 重用:新项目开始时,不要从零开始,而是先打开这个模板文件,然后
File -> Save As成你的项目文件。或者,使用File -> Import -> Parameters功能,尝试导入设计参数(部分版本支持)。更可靠的方法是,将常用设置记录在Excel或文本文件中,作为Checklist,在新项目中快速复现。
4.2 Photo Width=0的陷阱与光绘输出验证
为什么强调Photo Width不能为0?
- 屏幕显示:设为0时,Allegro会用1像素宽来显示所有字符,无论你放大多少,笔画始终是极细的一条线。这不利于设计检查。
- 光绘输出:这是致命点。Gerber文件(RS-274X格式)中,文本是通过“矢量笔画”绘制的。如果Photo Width为0,光绘处理器可能无法识别或将其处理为一个极小的、非标准的线宽,导致在PCB厂的生产环节,丝印蚀刻不出来,或者断断续续。务必在输出Gerber前,检查所有在用Text Block的Photo Width是否设置合理。
验证方法:使用Tools -> Reports功能,选择Text报告,可以列出板上所有文本及其使用的Text Block编号。然后对照你的Text Block设置清单,逐一核对。
4.3 丝印布局的工程化考量
修改字体大小不仅仅是技术操作,更关乎可制造性设计(DFM)。
- 避免上焊盘:丝印绝不能覆盖焊盘。在调整字体大小和位置后,必须进行仔细检查。Allegro的
Manufacturing -> Silkscreen系列工具(如检查丝印到焊盘间距)非常有用。 - 方向统一:尽量保持所有位号的阅读方向一致(如从左到右,从上到下),方便查找。
- 极性/方向标记清晰:二极管、电解电容、芯片一脚等的位置标记,其大小和线宽应足够醒目,通常可以单独用一个更粗的Text Block。
- 高密度区域的取舍:在BGA或0402/0201阻容件密集区域,可能没有空间放置标准大小的位号。此时可以考虑:1)使用更小的字体;2)只标关键器件;3)采用板外编号图的方式。切忌为了放位号而将字体调得过小,导致无法识别。
4.4 使用Skill脚本或二次开发进行批量处理
对于超大规模板卡或需要执行复杂、重复的文本调整任务,手动操作是低效的。Allegro支持Skill脚本语言。虽然编写Skill需要学习成本,但一些简单的批量操作脚本可以从社区或内部获得。例如,一个可以批量将某个区域的所有位号字体切换到指定Text Block的脚本,能节省大量时间。这是资深工程师提升效率的利器。
5. 常见问题排查与解决实录
在实际操作中,你肯定会遇到一些“诡异”的情况。下面是我和同事们踩过坑后总结的排查清单。
| 问题现象 | 可能原因 | 排查步骤与解决方案 |
|---|---|---|
执行Change命令后,文本毫无变化 | 1.Find面板未正确选中Text。2. 文本所在的子类(Subclass)不是当前激活或可见的。 3. 试图修改的文本是“固定(Fixed)”属性。 | 1. 检查Find面板,确保只勾选了Text。尝试先点选一个已知的文本,看能否选中。2. 在 Visibility面板打开所有图层显示,确认文本在哪一层。然后在Options面板中,Class和New subclass是否与文本实际所在层一致?3. 检查文本属性。选中文本,在右侧 Property面板查看是否有FIXED属性,若有需先解锁。 |
| 修改了Text Block参数,但板上部分字体没变 | 1. 那些“没变”的文本使用了不同的Text Block编号。 2. 文本是“器件实体(Device)”自带的属性文本,而非普通的REF DES文本。 | 1. 选中一个“没变”的文本,在右侧Property面板查看其Text block编号。确认你修改的是否是这个编号对应的Text Block。2. 对于封装自带的文本(如器件外框、极性标记),需要在封装编辑器(Padstack Editor或Symbol Editor)中修改,PCB板上修改无效。 |
| 输出Gerber后,丝印字体非常细或缺失 | 1. Text Block中的Photo Width设置过小或为0。2. 光绘设置(Artwork)中,该丝印层的“未定义线宽(Undefined line width)”设置不当。 3. 字体高度太小,低于板厂工艺极限。 | 1. 回查PCB文件中所有在用Text Block的Photo Width,确保大于0且合理(如字高的10%-15%)。2. 在 Manufacture -> Artwork中,编辑光绘参数,检查对应丝印层的Undefined line width,通常建议设为该层常用线宽或一个安全值(如5mil)。3. 咨询PCB板厂的最小丝印线宽和字高工艺能力,通常线宽≥4mil,字高≥25mil较为安全。 |
| 无法选中或移动丝印文字 | 1. 文字被锁定(Lock)。 2. 文字所在子类被设置为“不可选(Non Etch)”或类似属性(较少见)。 3. 误操作进入了其他编辑模式。 | 1. 尝试使用Edit -> Move命令,在Find面板只勾选Text,看能否选中。或在Display -> Property里查看对象属性。2. 检查 Color Dialog中该子类的颜色设置,确认其可选择性和可见性。3. 点击右键,确认当前没有其他命令处于活动状态,或直接按 F9键刷新一下界面。 |
| 批量修改时,误改了其他层的文本 | 1. 没有在修改前关闭其他无关图层的显示。 2. 框选范围包含了其他层可见的文本。 | 立即撤销(Ctrl+Z)。然后严格按照3.3节的技巧,在修改前,于Visibility面板中仅打开目标图层(如SILKSCREEN_TOP),关闭其他所有丝印层(SILKSCREEN_BOTTOM,DISPLAY_BOTTOM等),再进行框选操作。养成“操作前先管理图层可见性”的习惯。 |
最后,我个人最深刻的一个体会是:丝印设计是PCB设计的“最后一公里”,它直接面向生产和后续环节。花一点时间,在项目早期就规划好Text Block规范,在布局时粗略考虑一下位号摆放空间,在后期调整时善用图层管理和批量命令,这些好习惯累积起来,能为你节省大量的返工时间,并显著提升设计成果的专业度。当你把一张丝印清晰、标注规范的图纸发给板厂或同事时,那种严谨和可靠的感觉,本身就是工程师专业素养的体现。不妨现在就打开一个旧项目,用今天学到的方法,重新优化一下它的丝印吧。