谷谷小师妹 发表于 2024-1-27 23:27:03

逆向工程 从Gerber到PCB

逆向工程 从Gerber到PCB
如何将Gerber转换成PCB的文章在网上可以找到很多,但大部分文章只是简单罗列了其中的几个步骤。对于初学者来说,只是"知其然而不知其所以然",如果转换不成功、甚至于转换完成之后的PCB的逻辑连接发生了错误,也只能是一脸茫然,根本无从得知错误的原因。本文旨在介绍Gerber转换PCB过程中的每个步骤以及执行该步骤的原因、目的,让工程师对这一”逆向工程“的过程有一个清晰的了解。开始之前,先看一段在Altium Designer中将Gerber转换成PCB的小视频:
为什么要使用Gerber?首先要明确一些概念,什么是Gerber,为什么要使用Gerber?Gerber,又称光绘文件,是一种标准的文件格式。PCB板厂可以通过Gerber直接生产出最终的PCB。目前常用的格式为RS-274X,大部分板厂也支持最新Gerber X2格式(多了板的层叠信息与属性)。很多工程师喜欢把PCB设计文件直接发给板厂,其实这一“偷懒”的做法是有风险的。因为板厂最终还是需要把PCB文件转换成Gerber才能进行生产,而从PCB到Gerber的这一过程存在很多潜在的问题:
[*]由于Gerber精度设置的问题,PCB上连通的网络未必在Gerber上连通
[*]由于EDA工具版本的问题,可能板厂打开的PCB文件已经发生了变化
[*]由于缺乏沟通,PCB上一些不需要显示的参数也遗留在成品上
总而言之,PCB转成Gerber的这一过程未必是copy不走样,设计师应对这一过程负责。所以一般有经验的老工程师都会亲手把PCB转成Gerber,然后通过CAM350之类的软件,检查一下Gerber是否有问题,然后再送板厂加工。另外,无论您使用Altium、Allegro或者是Expedition,只要转成了Gerber,板厂都可以正确识别。还有一点,从Gerber反向生成PCB是比较困难的,出于安全性的考虑,企业也不愿意把设计源文件直接发给板厂。
Gerber的组成
Gerber由两个重要的组成部分,缺一不可:
[*]Gerber光绘文件:PCB的每个层都对应一个独立的Gerber文件,用于描述该层中的内容(有点类似于胶片)
[*]NC Drill钻孔文件:垂直方向上的钻孔,决定了不同层中导线的连接
从3D的角度,完整的Gerber文件包含了每个层的信息以及各个层中用于信号连接的钻孔(过孔):以AD为例,生成Gerber文件时,不是一个文件,而是一组文件,包含了PCB中每个层中的信息。下表是AD生成的Gerber文件后缀极其代表的意义。
GERBER后缀描述
G1, G2, etc.Mid-layer 1, 2(中间信号层)
GBLBottom Layer(底层)
GBOBottom Overlay(底层丝印)
GBPBottom Paste Mask(底层助焊)
GBSBottom Solder Mask(底层阻焊)
GD1, GD2, etc.Drill Drawing(钻孔图)
GG1, GG2, etc.Drill Guide(钻孔向导)
GKOKeep Out Layer
GM1, GM2, etc.Mechanical Layer 1, 2(机械层)
GP1, GP2, etc.Internal Plane Layer 1, 2(内电层)
GPBPad Master Bottom(底层焊盘)
GPTPad Master Top(顶层焊盘)
GTLTop Layer(顶层)
GTOTop Overlay(顶层丝印)
GTPTop Paste Mask(底层助焊)
GTSTop Solder Mask(顶层阻焊)
如果是Allegro,那就是一堆的*.art文件(Artwork)。
当然,只有Gerber文件是不够的,因为Gerber并没有层与层之间导线连接的关系。如果一个信号流过了多个层,肯定需要由过孔进行过渡。NC Drill文件记录了PCB上所有需要钻孔的信息(包括位置、孔的大小等),也是制造PCB不可或缺的关键信息。
以下是AD生成的NC Drill钻孔文件:
文件名描述
FileName.DRL(可选)二进制格式的钻孔文件。对于一个存在盲、埋孔的多层PCB,每个Layer Pair(层对)都会生成一个单独后缀的TX*
FileName.DRR钻孔报告 - 包括tool的详细信息,孔的尺寸、数量、Tool travel等
FileName.TXTASCII格式的钻孔文件。对于一个存在盲、埋孔的多层PCB,每个Layer Pair(层对)都会生成一个单独后缀的TX*
FileName-Plated.TXT(可选)ASCII格式的钻孔文件. 选择后只文件中只记录PTH的钻孔。对于不通类型的钻孔(比如Slot、方形),会生成单独的文件
FileName-NonPlated.TXT(可选)ASCII格式的钻孔文件. 选择后只文件中只记录NPTH的钻孔。对于不通类型的钻孔(比如Slot、方形),会生成单独的文件
FileName-BoardEdgeRout.TXT(可选)ASCII格式的rout文件。记录了板形以及板子的cutout
FileName.LDPASCII格式的钻孔对报告。被CAM编辑器用来检测盲、埋孔
下图是一个默认状态下AD生成的NC Drill示例:示例中含有盲、埋孔,生成NC Drill时每种类型的盲、埋孔都会单独生成一个*.TX1/2/3的文件。不同类型的孔(Slot、方形)也会单独生成一个TXT文件。
说了那么多无非是要强调一点,无论正向还是逆向,这两个类型的文件是绝对不可以少的:
[*]一个叫Gerber
[*]一个叫NC Drill

如何从Gerber生成PCB
Altium Designer自带了一个类似CAM350的工具,叫Camtastic。虽然用起来不如CAM350那么顺手,但基本的功能都是没有问题的。从Gerber到PCB的逆向工程,就由Camtastic工具来完成。
第一步:新建一个Cam文档

第二步:导入Gerber及NC Drill

这是比较关键的一步,如果只导入Gerber,不导入NC Drill,会导致后续无法解压网表。如果有IPC Netlist,也可以一起导入,这样在解压网表时,网表的名称就会与源设计相同,而默认情况下系统会自定义网表的名称。
在Preference中,可以定义CAM识别的文件后缀。如果要导入Allegro或者Expedition的Gerber,可以在这里添加相应的后缀以便于快速识别。

导入完成后,就可以在AD中查看或编辑Gerber文件了:
第三步:层的映射
这也是比较关键的一步,点击Tables » Layers打开映射界面:
左侧的Gerber层必须和Type列中的PCB层正确映射。其中信号层的映射尤其重要:顶层/底层分别映射为Top/Bottom;中间信号层映射为Internal;内电层映射为Pos Plane/Neg Plane。
除此之外,NC Drill的TXT文件也需要正确映射到Drill Top/Bottom/Int。
第四步:层的顺序(Layer Order)
层映射完毕之后,会弹出Create / Update Layer Order对话框(也可以通过Layer » Order菜单访问):
在这里,需要定义所有的信号层(包括Top、Bottom、中间信号层及内电层)的物理顺序。这一步也相当关键,如果存在盲、埋孔,这里定义错误的话会直接导致PCB导出的错误。记住,Top层的Physical Order始终是1,其它层的顺序按实际的板层结构依次类推。Physical Order中的数字是不可以重复的。
第五步:解压网表(Extract Net)
如果以上步骤都没有问题的话,就可以通过Gerber和NC Drill反推出PCB中的网表信息。点击Tools » Netlist » Extract菜单得到PCB的网表:
第六步:导出PCB
一切就绪,最后一步是导出PCB。如果缺少Net List或其它信息,Export to PCB的菜单是灰色不能点击的。

第七步:清理PCB文件
导出完成,看上去一切都很美好:
但当你仔细查看的话,会发现逆向工程导出的PCB只是Track和Pad的组合体,压根就没有器件(Component)的概念。您还需要通过无数次的Ctrl+C、Ctrl+V才能重新把这些零零碎碎的对象组合成正常的PCBLib。
另外,您可能会发现一些长条的、方形的异形焊盘转成PCB后都变成了圆形...铺铜以及阻焊、助焊的设置也和想象的不一样......
总之,这貌似不是你想要的... 不要奇怪,毕竟逆向工程只是复原PCB的样式和逻辑连接而已,并非是恢复到原始的PCB设计文件。
小结
什么情况下会用到Gerber转PCB呢?基本是以下两种情况:
[*]以前的设计文档找不到了,只留下Gerber。现在需要对设计进行更改。
[*]复制竞争对手的产品,“逆向工程”后加以修改

可见,Gerber转PCB并非“常规”操作,通常情况下也不建议这么做。AD提供的Camtastic工具支持这一操作,但也只是复制了源PCB的“形”而已。掌握核心技术,自我研发才是必由之路。优秀的设计,没有任何捷径。

页: [1]
查看完整版本: 逆向工程 从Gerber到PCB