做板子,谁都会画几根线,但一碰到过孔设置,不少人就开始发怵。Cadence Allegro 17.4 PCB Editor的过孔设置,恰恰是很多新手从“看着教程”到“自己动手布一块像样板子”的分水岭。你把走线画得再漂亮,过孔定义不对、约束里没放进去、放置时又看不到,后续DRC一堆错误照样劝退。这篇文章就把“创建过孔→加载到库→分配约束→布线时调用→常见坑排查”整条链路完整走一遍,尽量用大白话讲清楚,不绕弯子。我顺便把两个总被人问起的基础问题一起说了:Cadence和Allegro到底是什么关系,以及17.4里的快捷键、辅助工具兼容性该怎么看待。
1. 开始之前:Cadence、Allegro与过孔设置的大局观
1.1 Cadence和Allegro到底什么关系,为什么总有人搞混
Cadence和Allegro的区别,说白了是一个公司与其产品线的关系。Cadence是EDA软件厂商的名字,旗下有原理图工具OrCAD Capture、PCB Layout工具Allegro PCB Editor、封装设计工具Allegro Package Designer、信号完整性仿真工具Sigrity等一大堆产品。大家平时嘴上说“用Cadence画板子”,绝大多数场景指的就是Allegro系列里最常用的Allegro PCB Editor。Allegro 17.4是2019年发布的版本号,界面和操作逻辑相比旧版16.x做了不少调整,网上很多老教程都是16.x时代的,直接套到17.4上,就会出现菜单找不到、约束管理器打不开之类的问题。
为什么要把这个区别讲清楚?因为我见过太多新手装好一套“Cadence全家桶”,打开软件发现界面跟教程对不上,就怀疑自己装错了版本。其实只是没分清OrCAD Capture和Allegro PCB Editor这两个程序的入口。弄明白这一点,后面学过孔设置时才不会因为版本差异被绕晕。Allegro 17.4的过孔设置,在核心思路上跟16.x一脉相承,可菜单位置和默认规则集的表现形式确实有变化,教程千万别找错年份。
1.2 过孔设置不是一个弹窗,而是一条完整链路
在Allegro里,过孔Via的本质是一个“带铜的孔”,用来连接不同层之间的走线。但过孔不是简单打个孔就结束了,它牵扯到三个层面:
- 物理层面:孔的直径、外层焊盘直径、反焊盘间隙、热焊盘尺寸,这些参数直接决定信号质量、加工良率和电源平面的连接方式。
- 制造层面:钻孔直径如果低于板厂能力,或者孔到铜皮间距不够,生产出来的板子可能就是断孔、短路,甚至直接报废。
- 工具层面:Allegro并不会把你创建的所有过孔自动摆在界面上,你必须把它放入库路径,再添加进约束管理器的物理规则集的过孔列表,布线时才能真正调用到。
很多人觉得“过孔设置”就是一个弹窗里填几个数字,实际它是一个从元件库到约束到布线交互的完整流程。这篇教程的核心思路,就是按照“定义→入库→约束→调用→查错”的顺序,把过孔的全生命周期过一遍。不管你是从AD转过来的,还是学校刚毕业第一次用Allegro,只要这条链路走通,后续画多层板基本不会再被过孔卡住。
2. 过孔分类与参数详解:选型之前先看懂这些概念
2.1 通孔、盲孔、埋孔、微孔的选择原则
在Allegro的Padstack Editor中,我们能创建的过孔大致分为通孔Through Hole、盲孔Blind、埋孔Buried,以及HDI常用的微孔Micro Via。常规2层或4层板,通孔几乎覆盖所有需求,成本低、工艺成熟,打样周期也短。8层以上的高密度板,如果信号换层很频繁,通孔会占掉太多布线通道,这时候盲孔和埋孔可以显著提高布线密度,但加工成本会明显抬升。微孔通常走HDI激光钻孔工艺,孔径可以做到0.1mm以下,但PCB Editor中需要专门的HDI约束设置,设计门槛和费用都不是一个量级。
| 类型 | 典型孔径 | 对应层间关系 | 成本等级 | 适用场景 |
|---|---|---|---|---|
| 通孔 | 0.2mm–0.6mm | 顶层到底层 | 低 | 普通多层板,信号与电源换层 |
| 盲孔 | 0.1mm–0.15mm | 外层到相邻内层 | 中高 | 高密度板,减少外层走线拥挤 |
| 埋孔 | 0.1mm–0.2mm | 内层到内层 | 中高 | 高密度BGA内部走线 |
| 微孔 | ≤0.1mm | 外层到首内层 | 高 | HDI板,手机、模块类产品 |
选择原则很简单:能用通孔就不用盲埋孔,能用盲孔就不用微孔。这跟性能无关,纯粹是成本和周期的考量。很多刚学画板的工程师,手上一块普通6层板就非要上盲埋孔,最后板厂报价贵了三四倍,又没带来实际好处,纯属给自己找麻烦。我一般在项目方案阶段就根据BGA引脚间距和层数,把过孔类型先定死,后面尽量不改。
2.2 Regular Pad、Thermal Relief、Anti Pad分别管什么
打开Allegro的Padstack Editor,你几乎总能看到Regular Pad、Thermal Relief、Anti Pad三个概念。很多刚入门的人看到英文就头疼,其实对应中文就是“正常焊盘”“热风焊盘”“反焊盘”。
- 正常焊盘Regular Pad:走线和过孔在正常铜箔层上的实际焊盘,它决定你可以跟它连多粗的线。如果焊盘尺寸太小,粗走线连接时会形成台阶,制造时容易出现缺口。
- 热风焊盘Thermal Relief:过孔在电源或地平面上的连接方式,通常做成十字或花瓣形状。这样做既能保证电气连接,又减少焊接时热量散失太快的问题,手工焊接时尤其明显。
- 反焊盘Anti Pad:过孔周围的禁布区,也就是一道“空圈”,防止过孔与不该相连的铜箔短路。
特别注意,在正片Positive层和负片Negative层上,这三个概念的作用方式不一样。正片就是“有铜的地方就是图形”,最常见;负片则正好相反,铜是背景,只清空图形区域。如果你的内电层设计成负片方式,那么过孔与内电层之间主要通过Thermal Relief和Anti Pad来定义连接和隔离,Regular Pad甚至可以不画。这一步很多人搞反,结果电源层上过孔被整个挖空或者短死,DRC还不容易报出明显错误,最后只能靠肉眼慢慢检查。
2.3 成品孔径、钻孔孔径与层叠的关系
这里有个特别容易踩坑的参数:钻孔大小。PCB过孔孔壁需要沉铜,镀铜厚度一般会让成品孔内径变小约0.025mm左右,所以板厂规格里通常会区分“钻孔孔径”Drill Size和“成品孔径”Finished Size。你在Padstack Editor里填写的参数,建议按成品孔径需求来理解。实际下单时,板厂会根据你的孔径自动选择钻头,钻孔要比成品孔径略大,否则镀铜以后孔径缩小不达标。很多新手以为填了0.3mm钻孔就万事大吉,板厂反馈“孔小了”,其实就是没搞懂这个概念。
另一方面,普通样板厂的机械钻孔能力通常能支持0.2mm,但0.2mm钻孔对定位精度和孔铜可靠性要求更高,往往要额外加钱。如果项目没有明确的高速高密度需求,我的建议是走线过孔至少用0.3mm钻孔、外径0.6mm,电源孔再适当加大。这样既照顾加工能力,也方便后续自行打样验证。至于层叠,过孔参数必须跟层叠厚度配合,比如板厚1.6mm、钻孔0.3mm的过孔,厚径比大约是5.3,这属于比较常规的加工范围;如果板厚2.0mm还硬要用0.2mm钻孔,厚径比到10,很多板厂就会质疑生产良率。
3. 保姆级实操:把过孔从零做到能布线调用
3.1 用Padstack Editor定义一个靠谱的通孔过孔
Allegro 17.4中,Padstack Editor通常藏在Cadence开始菜单的PCB Editor Utilities里,也可以在PCB Editor中用Tools > Padstack > Edit进入。创建一个能上生产的通孔过孔,建议按这个顺序操作:
- 选择File > New,在类型中选择Through Hole,再把下方Type选为Via而不是Pin。这里如果选错,后面做出来的东西会被当成元件管脚来处理,调用时逻辑完全不同。
- 先定单位,建议根据项目习惯选择mm或mil,后续所有参数保持一致。
- 在Drill页签填入钻孔直径。以0.3mm孔径为例,直接填0.3。
- 设置Start Pad和End Pad区域,起始层选TOP,终止层选BOTTOM,中间层软件会自动补齐。
- 切换到各层焊盘定义。可以用Single Layer Mode单层模式保持全层一致,也可以用Multiple Layer Mode多层模式,为不同内层单独调整焊盘尺寸。
具体填写时,我习惯用这组默认值起步:钻孔0.3mm,Regular Pad外径0.6mm,Anti Pad外径0.8mm,Thermal Relief的开口间隙0.3mm、连接spoke宽度0.2mm。这些数值不是拍脑袋来的,普通1.6mm板厚、4到6层板的场景下兼容性很好。焊盘间距不能小于设计规则里的Spacing约束,否则DRC会一直报错。
- 保存为.pad文件,放到项目里的库目录,例如
D:\work\project_v1\library\padstack。
提示:Padstack命名尽量自带信息,便于后续管理。比如“VIA_06D_03H”表示焊盘外径0.6mm、钻孔0.3mm,或者“V60D30H”这种自定义编号。别叫“via1”、“via2”,等到板子里过孔多了,这种名字会让你查资料查到怀疑人生。
3.2 配置padpath,让PCB Editor认得过孔文件
创建完过孔文件,Allegro并不自动扫描所有目录。你需要把库路径加进去:
- 在PCB Editor中执行Setup > User Preferences,打开用户偏好设置对话框。
- 在搜索框输入padpath,找到Design Paths面板下的Pad Path,把刚才保存过孔的文件夹路径添加进去。
- 顺手检查一下psmpath,这次用不上,但以后加载元件封装时会遇到。
设置完成后,最好关闭PCB Editor再重新打开,避免路径缓存导致找不到库文件。这一小步是实操中最高频的卡点,很多新手明明做好了过孔,却在布线时右键列表里看不到,最后仔细一查,要么是忘了添加padpath,要么是路径里带了中文,Allegro对中文路径兼容性一直不算好。我建议项目路径、库路径全部使用英文,连空格都别留。
3.3 在Constraint Manager里给过孔“上户口”
过孔文件加载进来,并不意味着它就能被所有走线使用。Allegro的规则体系里,每一组物理规则都有一个可用过孔列表。默认规则集里通常只带系统预设的VIA,想让你自定义过孔在布线时被调用,必须把它添加进这个列表。具体操作:
- 在Allegro PCB Editor中打开Constraint Manager。
- 选择Physical页签,展开Physical Constraint Set,找到你要修改的规则集,比如DEFAULT。
- 找到Vias那一列,点击右侧编辑按钮,或者右键选择Edit。
- 在弹出的Edit Via List对话框中,左侧是Available Vias,右侧是Selected Vias,选中目标过孔后点击箭头加入右侧。
- 如果你想给某个特定网络用另一套过孔,比如电源网络全部用大孔,可以新建一个物理约束集,只把电源孔的过孔放进列表,再把这个规则集分配给Power网络。
这里有个很多教程不讲的技巧:当你更换过孔方案时,可以选中已有布线段Clines,右键选择Replace Via,批量替换到新过孔类型。这比一个个删除重画高效太多。做版本迭代或统一改钻孔尺寸时,我几乎每次都靠它。
3.4 布线时怎么舒服地调用过孔和建阵列
设置完约束管理器,回到布线界面,右侧Option面板的Via下拉菜单里就能看到你添加的过孔。实际操作时,你在连线状态下右键,选择Add Via,软件会自动把当前走线换层,并在换层点放置过孔。Allegro的交互布线体验说不上“顺手”,但用习惯了你会发现,右键Add Via和按快捷键切换走线层是效率最高的组合。
对于需要打一排过孔来屏蔽信号或加强散热的场景,比如射频信号的包地、电源区域的过孔阵列,Allegro提供了阵列放置能力。最简单的方式是先用普通方法放几个过孔,再复制排列;更专业的做法是使用Route > Via Array,在对话框里选择过孔、设置行列数和间距,一次性生成阵列。需要注意,阵列过孔间距不能小于物理规则里的Vias to Vias间距,否则DRC会红成一片。
如果要处理大量BGA,手动打过孔能把人累死。Allegro 17.4自带自动扇出功能,在Route菜单里找Fanout By Pick,选中器件后,软件会根据已定义的过孔和布线规则,自动在BGA引脚之间打孔。这个功能非常依赖前面约束管理器里的物理规则和过孔列表。如果扇出后的过孔不是你想要的样子,优先回查过孔列表和规则集,而不是硬改扇出参数。
4. 常见问题、快捷键与第三方工具兼容性实录
4.1 过孔不显示、调用不了、DRC报错的排查表
我把平时在群里、在公司被问得最多的问题整理成了一张速查表:
| 症状 | 可能原因 | 排查思路 |
|---|---|---|
| 右键Add Via没有过孔 | 约束管理器过孔列表未添加 | 打开Constraint Manager,检查Physical规则集里的Vias列表 |
| 布线时Option面板无过孔 | padpath未设置 | 检查Setup > User Preferences > Design Paths |
| 过孔文件加载报错 | 文件损坏或版本不匹配 | 用Padstack Editor重新打开并另存为 |
| 过孔外观与设计不一致 | 单位错误 | 检查Padstack Editor和PCB Editor的单位设置是否一致 |
| DRC报过孔间距错误 | 过孔间隙或反焊盘太小 | 提前按生产规则设计Anti Pad和孔间距 |
| 生成Gerber时过孔丢失 | 光绘层设置遗漏了Via层 | 检查光绘文件里的Drill和Via层开关 |
这表里的前两条是最常见的原因。我见过有同事把过孔文件拷给板厂,结果板厂说“你的PCB文件里没有过孔”,追查半天发现就是库路径没生效。提醒大家换电脑或换项目时,先确认padpath和psmpath都指向当前项目的库目录,别让旧路径残留着。
4.2 负片层的Anti Pad:一个容易被忽视的DRC陷阱
这里讲一个我踩过的坑。当我在负片电源层上使用通孔时,如果Anti Pad尺寸小于铜箔到过孔的安全间距,DRC并不会直接提示“Anti Pad太小”,而是报出一个看起来莫名其妙的Vias to Shape Spacing错误,乍一看好像过孔和铺铜短路了。实际原因是过孔的Anti Pad在负片上负责隔离铜箔,间距不足等于将隔离清掉了,铜箔跟过孔焊盘之间没有足够的安全界限。解决方案很简单:把Anti Pad尺寸改大,让它等于或略大于你所期望的安全间距,而不是只追求焊盘小一点。
另一个常见情况是过孔到过孔的间距报错。如果板子孔密度特别高,比如BGA下方打桩过孔,记得在物理规则里单独设置过孔到过孔的间距。系统默认值有时候只适合普通走线场景,遇到密集过孔阵列就非常容易被DRC轰炸。这个参数在Constraint Manager的Physical规则集里,找到Vias to Vias Spacing,按板厂工艺能力和设计需求填一个合理值。
4.3 Allegro 17.4快捷键设置的具体改法
Allegro的快捷键主要靠用户环境文件env来控制。17.4的env文件一般在用户目录下,比如C:\Users\你的用户名\pcbenv\env,或者通过PCB Editor里的Setup > User Preferences查看环境路径。打开env后,可以定义alias和funckey两类快捷键:
- alias:输入别名并带参数,例如
alias P pick,按P后执行pick命令。 - funckey:直接绑定按键动作,例如
funckey 4 add connect,按4直接进入连线状态。
我的习惯是先把常用命令整理出来,比如添加走线、复制、镜像、删除、done、cancel、zoom fit、测量等,然后给每个分配一个顺手的按键。举例:
funckey 4 'add connect' funckey 5 'add shape' funckey d 'done' funckey x 'delete' funckey f 'copy' alias P 'pick' alias S 'slide'注意,Allegro启动时会读取env文件,修改后必须重启软件才能生效。编辑前建议先备份原始env,防止改出问题后无法恢复。很多人喜欢从网上复制别人的快捷键配置,我建议只参考,不要直接覆盖,因为每个人的鼠标手势和习惯差异很大,别人的顺手配置到你手上可能会按出很多误操作。
4.4 关于“电路精灵”这类辅助工具能否用在17.4
有人问“电路精灵可以用在17.4上吗”,我先给一个比较统一的答案:Allegro 17.4的核心框架相比16.x变化不大,但UI和部分API确实动过,第三方辅助工具能不能直接跑,不能只看版本号,还要看工具作者是否针对17.4做了适配。很多工具本质上是加载Skill脚本,脚本兼容性跟版本关系密切,老脚本在新版本里可能因为函数接口变更而报错。
想判断一个插件是否可用,最稳妥的办法是:先在空板上加载,看命令行或弹窗有没有报错;再拿测试板跑一遍常用功能;最后才在正式项目中使用。如果插件实在用不了,也不用慌。Allegro本身支持自己写Skill脚本,很多第三方工具的常见功能,比如批量改过孔、批量改线宽、添加特定标记,用Skill脚本都能实现,既轻量又可控。Skill脚本可以通过Tools > Utilities > Skill Development环境加载,开源资源在网上也很多,自己修修补补就能省去大量重复劳动。我的原则是:核心设计流程尽量用软件原生功能,辅助性、重复性操作才考虑脚本或插件,这样才能把风险控制在可接受范围。
5. 我习惯的过孔方案与几个小建议
5.1 普通项目和高速项目,过孔参数怎么给
普通多层板项目,我默认会建这么几组过孔:
- 信号过孔:钻孔0.3mm,焊盘外径0.6mm,反焊盘0.8mm。用来走一般信号线,兼顾打样成本和布线密度。
- 电源过孔:钻孔0.4mm到0.5mm,焊盘外径0.8mm到1.0mm,反焊盘1.0mm到1.2mm。用来走电源主干或连接电源平面,降低直流压降。
- 地孔和散热孔:如果板子发热集中,会在芯片焊盘下方打一排接地孔,孔径0.3mm到0.4mm,间距0.8mm左右,既改善散热,也减少地回路电感。
高速信号项目就不只是改尺寸的问题了。过孔本身会带来阻抗不连续和Stub效应,因此我在高速板里会做两件事:第一,尽量控制换层次数,换层时在旁边加回流地孔;第二,对较长信号线上的过孔做背钻Backdrill处理,在Padstack Editor里设置钻孔的Start层和End层,去掉信号孔多余的Stub段。Allegro 17.4的背钻设置在Padstack的Drill页签里可以定义,板厂会按你的要求一次性加工,但会增加额外工序费用。如果项目阶段不确定哪些信号需要背钻,我会先按规则预留,再跟板厂确认。
5.2 电源与高速信号过孔,别等流片后再后悔
最后分享一个我自己的体会:过孔方案最好在布局完成之前就确定下来,而不是等走线走到一半再回头改。因为过孔大小直接影响布局时的通道预留,如果你在布局阶段没给信号过孔留出足够空间,后期只能在密密麻麻的走线里硬塞小孔,最后不是DRC报错,就是加工良率下降。
具体操作上,我在拿到原理图后,会先根据网络类型给过孔分类,比如电源网络用大孔、普通信号用小孔、差分队用等参数成对过孔。然后在Constraint Manager里把不同网络和不同物理规则集绑定好。这样进入布线环节时,软件基本会自动选择正确的过孔,我只需要专注走线顺序和整体布局,不用频繁切换过孔类型。做过几块板子后你会发现,前期花一点时间把过孔库和规则集做规整,对后续效率的提升是立竿见影的。
Allegro 17.4的过孔设置流程,说白了就是“库、约束、调用”三件事。库是过孔的物理定义,约束是规则限制,调用是实际操作。三件事串起来,你就能流畅地管理从单孔到阵列再到复杂BGA扇出的所有过孔需求。如果在实际项目中遇到奇怪的DRC,别急着怀疑软件,先回头看看Padstack里每个参数,再对照一下物理规则集,多半能很快找到原因。