为什么图层错误之未遵守GerberX2规范
2023-09-21 16:09
5230
0
什么是GerberX2 ?
GerberX2是新一代的Gerber文件标准,它在Gerber RS274X基础上增加了一些新的指令用于辅助指明该文件的属性。
下面的代码片断展示了 GerberX2 新增的一些指令,%TF、%TA 开头的行是 GerberX2 格式专有的。
G04 Small example Gerber X2 file* %FSLAX35Y35*% %MOMM*% %TF.FileFunction,Copper,L4,Bot,Signal*% // 表明该文件是底层线路 %TF.Part,Single*% %TA.AperFunction,Conductor*% %ADD10C,0.15000*% %TA.AperFunction,ViaPad*% %ADD11C,0.75000*% %TA.AperFunction,ComponentPad*% %ADD12C,1.60000*% %ADD13C,1.70000*% %SRX1Y1I0.00000J0.00000*% G75* %LPD*% D10* ....
Gerber X2 格式更新,解决了很多 RS274X 的痛点,现在主流EDA输出Gerber都提供对 Gerber X2格式的支持。比较激近一些的EDA默认输出格式可能就是GerberX2格式,以至于我们越来越多的收到客户的原稿Gerber文件都是Gerber X2格式。适应规范势在必行。
问题描述
如下图所示的几个文件,所有的Gerber 文件都被识别成了线路层。文件名是符合 https://www.jlcdfm.com/help_document/id/q3i41517.html 中的建议规则,但为什么还是会识别错误?
Ser_par.GBL // 按习惯是底层线路,被识别成线路层 Ser_par.GBS // 按习惯是底层阻焊,被识别成线路层 Ser_par.GKO // 按习惯是外型层,被识别成线路层 Ser_par.GTL // 按习惯是顶层线路,被识别成线路层 Ser_par.GTO // 按习惯是顶层丝印,被识别成线路层 Ser_par.GTS // 按习惯是顶层阻焊,被识别成线路层 Ser_par.XLN // 钻孔文件
错误原因
该文件是GerberX2格式,按GerberX2规范,文件内置了层属性的标准,这个时候,我们会优先遵守GerberX2规范,来确定层属性类型,忽略【为什么图层错误之层命名的不规范】 https://www.jlcdfm.com/help_document/id/q3i41517.html 中的建议规则。
我们看一下上面案例中的 GerberX2 文件内容是什么样的。备注:被水印挡住的文字是:有冲突的情况下,我们优先遵守 GerberX2 的规范。
解决方法
有两个,请2选1
- 继续输出GerberX2格式的文件,输出文件前,先把要输出的层的属性定义正确。(目前各EDA软件基本上能保证按正确的属性输出)
- 如果坚持要按文件名来区分层属性,那么不要输出GerberX2,选择输出格式为RS-274-X 格式,这样我们就不会受GerberX2的格式影响,按 https://www.jlcdfm.com/help_document/id/q3i41517.html 描述的规则,也能正确的识别图层。(例外情况,见下面的后记)
后记:兼容 GerberX2规范的 Gerber RS274X
Gerber RS274X 存在年份长,生态大,很多旧有设备只支持RS274X,不支持X2,有些EDA软件在早期版本即要享受GerberX2的优点,又要兼容RS274X,于是生成了类似下面这样的Gerber文件,把所有X2相关的指令以 G04 的方式输出(G04在Gerber中表示注释),可被RS274X兼容,本质上还是RS274X格式。
这种情况我们在做层属性分析的时候,还是优先按照 GerberX2的规范来执行。
注意:这些特征都都是固定的,由上游EDA软件自动生成的,千万不偿试手动去修改,手动修改容易出错,差一个空格标点符号,都会有可能导致我们识别失败。
G04 Small example Gerber X2 file* %FSLAX35Y35*% %MOMM*% G04 #@! TF.FileFunction,Copper,L4,Bot,Signal* // 表明该文件是底层线路 %ADD10C,0.15000*% %ADD11C,0.75000*% %ADD12C,1.60000*% %ADD13C,1.70000*% %SRX1Y1I0.00000J0.00000*% G75* %LPD*% D10* ....