Support for Reverse Engineering of PCBs
将 CAM 数据导入到 CAM 文档后,你会注意到 Export to PCB 选项会变为灰色,无论当前 CAM Editor 模式(CAM 或 NC)是什么。该命令允许你直接从 CAM 文件对 PCB 布局进行逆向工程。它并不遵循常规的导出/导入流程,而是将数据直接加载到 PCB Editor 中。
以下各节将详细说明如何从 CAM 数据逆向工程 PCB 设计:从最初导入到 CAM 文档、到导出前所需的准备工作,最终将设计数据导出到 PCB Editor。
导入数据
整个流程的起点,是将 ODB++,或 Gerber 与 NC Drill 文件加载到一个新的 CAM 文档中。如果你有 IPC 网表,在导入 Gerber 和 NC Drill 数据时也应一并导入。导入 ODB++ 时,只有在 ODB++ 目录中不包含网表的情况下才需要导入 IPC 文件。IPC 网表可让你用原始名称更新提取到的网络,并区分通孔过孔与独立的非元件焊盘。
File » Import 子菜单命令都会在指定文件夹中搜索具有特定扩展名的文件。例如导入钻孔文件时,指定目录会过滤掉除 .DR*、.ROU、.RTE、*.NC* 和 *.TX* 扩展名之外的所有文件。如果你收到的钻孔文件扩展名不在此列表中,可以在 Preferences 对话框的 CAM Editor - Miscellaneous page 中扩展该列表。在这里,你也可以修改与 Gerber、Aperture、HPGL 以及 Netlist 文件相关的任何默认扩展名列表。
Preferences 对话框的 CAM Editor - Import/Export page 允许你更改 Gerber 文件的默认导入与导出设置。例如,如果你经常收到由 P-CAD 生成的 CAM 数据,可以考虑将坐标精度格式从 2:3(Altium Designer 默认)改为 4:4(P-CAD 默认)。如果不改,你仍然可以在每次导入作业时,从默认状态手动调整这些设置。
层类型分配
Layer Table Detection Template对话框
每个 Gerber 与 Drill 文件都会被分配到单独的层。此外,CAM Editor 在导入时会查看文件名,并尝试为每个文件分配层类型。它会依据 Layer Types Detection Template 对话框中的信息来完成该操作;该对话框可通过在主菜单中选择 Tables » Layer Type Detection 打开。这是一个完全可自定义的对话框,包含用于识别文件层类型的文件名片段(扩展名、关键字或两者),例如信号层、负片电源层、外形边框层、钻孔层以及临时层(机械层)。
例如,Altium Designer 的 PCB Editor 会通过扩展名区分 Gerber 层,比如顶层用 .gtl、底层用 .gbl。其他设计工具可能会为顶层导出 .top 文件,为底层(solder)导出 .sol 文件。其中一些工具(如 P-CAD)还允许用户自行指定 Gerber 输出文件名。
导入任意一组 CAM 文件后,你可以打开 Layers Table 对话框,查看自动完成的类型分配结果。你可以打开类型的下拉列表并修改任何分配。例如,你会注意到所有钻孔文件都会自动设置为 Drill Top 类型。你可能希望在此时区分顶层、底层与内层的钻孔集合。不过这并非必需。
如果你经常收到无法被自动正确分配层类型的 Gerber 或钻孔文件,应检查文件名中是否存在可用于区分的特征,以便 CAM Editor 能识别它们,并将这些特征添加到 Layer Types Detection Template 对话框中。ODB++ 不需要使用 Layer Types Detection Template 对话框,因为识别各层所需的全部信息都存储在 matrix 文件中。不过,加载完成后检查层类型分配仍是一个良好实践。
板层叠与钻孔集合
Create/Update Layers Order 对话框
被分配为信号类型(顶层、底层或内层)或电源层的层,现在会显示在 Create/Update Layers Order 对话框中;该对话框可通过在主菜单中选择 Tables » Layers Order 打开。在大多数情况下,CAM Editor 能从提供的 CAM 数据中确定层叠,但在某些情况下,可能只提供逻辑顺序(即导入层的顺序)。最好确保 Layer Physical Order 列中的信息正确,其中编号 1 为顶层。注意不要给不同层分配相同的顺序编号。一旦你指定了有效的层叠,当再次打开该对话框时,物理顺序列将优先于逻辑列表,你会看到各层按建议的层叠顺序列出。
同样的物理顺序也会反映在 Create/Update Layers Sets 对话框中;该对话框可通过在主菜单中选择 Tables » Layers Sets 打开,用于将钻孔文件与层集合进行匹配。以一块 6 层板(四个信号层、两个电源层),同时包含盲孔与埋孔为例,设计中可能包含四个独立的钻孔文件:
- 一个用于 Top-Bottom 对(通孔)
- 一个用于 Top-InternalPlane1 对
- 一个用于 MidLayer1-MidLayer2 对
- 一个用于 Bottom-InternalPlane2 对。
网表提取
此步骤可通过在主菜单中选择 Tools » Netlist » Extract 进入,它依赖于前面步骤的准确性。如果你的板中每一层都没有完成层类型分配(机械层应设置为 Temporary),你将无法执行该步骤。启动命令后,将提取网表信息,并在 CAMtastic panel 的 Nets 选项卡上显示网络列表。每个网络会以其总长度列出。在面板中点击任意网络条目,会在设计空间中选中并缩放到该网络。
CAM Editor 会从一层追踪到另一层的连通性,并参考 NC 钻孔文件来建立层与层之间的连接。因此,你在 Create/Update Layers Order 对话框中定义的层叠,以及在 Create/Update Layers Sets 对话框中选择的钻孔层对,是从 CAM 数据中提取准确网表的关键前置条件。
如果你在导入的 Gerber 与 NC Drill 文件中包含了 IPC-D-356 网表文件,可以通过在主菜单中选择 Tools » Netlist » Rename Nets 来恢复原始(且有意义的)网络名称。启动命令后,将对网络进行比对,并使用 IPC 网表文件中的网络名称对当前文档中提取到的网络进行重命名。更新后的名称会显示在 CAMtastic panel 的 Nets 选项卡上。
尽管 IPC-D-356 网表信息并非导出所必需,但它是很有价值的。它的存在将帮助 CAMtastic Editor 将焊盘与过孔分离,从而在设计中存在盲孔或埋孔时,正确创建过孔而不是焊盘。但更重要的是,IPC 网表为你提供了一个参考,可在主菜单中选择 Tools » Netlist » Compare 时,将提取到的网表与之进行比较。启动命令后,将执行比较并生成报告 Netlist-Compare.rpt,并在主设计窗口中作为活动文档打开。报告会列出导入网表中存在但在提取网表中缺失的每一个网络。
如果 IPC 网表已正确导入,你会在 CAMtastic panel 的层列表中看到新增两层:<fabrication_testpoint_report_for_DesignName>.ipc_t 和 <fabrication_testpoint_report_for_DesignName>.ipc_b,分别反映顶层与底层信号层的网表信息。(如果你的 PCB 设计包含内层信号层,还会出现第三层 <fabrication_testpoint_report_for_DesignName>.ipc_in。除非存在涉及这些层的盲孔和/或埋孔,否则该第三层将为空,可以保留或从层列表中删除。)
对于从 PCB Editor 生成的 IPC 网表,你会注意到 CAM Editor 的比较功能通常会发现一系列没有名称的“缺失网络”。这是因为 PCB Editor 的 IPC 格式包含单引脚网络。而 CAM Editor 在网表层面会忽略没有任何铜连接的焊盘。实际上,它的 DRC 还提供了移除非功能焊盘的选项。
边框与电源层
当 CAM Editor 将 PCB 文件导出到 PCB Editor 时,会自动生成板框外形。要智能地完成这一点,需要在 Border 类型层上存在一条闭合多段线。如果在该层上找不到闭合多段线,或者在 Layers Table 对话框中将多个层指定为边框,那么你很可能无法得到期望的板形。
内部电源层上的任何分割也必须由闭合多段线来定义。要判断一条多段线是否闭合,可以对其进行查询(Q 快捷键)。你可以检查是否整条多段线都会被高亮显示,并且在 CAM 面板的 Info 选项卡中是否被报告为闭合多段线。如果不是,那么你可以在 Edit » Objects 子菜单中使用 Join 命令,将现有图形转换为闭合多段线。
分割平面区域可能需要额外处理,因为每个分割都需要各自的“气泡”封闭边界。虽然孤岛平面可以按上述方式合并,但与其他分割或与边框多段线共享轮廓的分割平面必须重画。要绘制你自己的闭合多段线,在选择最后一个顶点后右键,然后选择 Close。
目前不支持嵌套平面(分割平面中的孤岛)。
导出多边形
Preferences 对话框的 CAM Editor - Import/Export 页面提供了额外选项,用于控制 CAM 文档中的多边形如何导出到 PCB 文档。如果多边形为矩形,可以在 PCB 文档中创建为填充(fill)。对于非矩形多边形,你可以在 PCB Editor 中创建网格(Hatched)或实心(Solid)的多边形铺铜。系统提供了这两种铺铜类型的选项对话框入口,以便更精细地控制导出到 PCB 端后的处理方式。
启用 Create Hatched Polygons 选项时,CAM Editor 将使用单一网格尺寸和单一走线宽度来填充文件中的所有多边形。如果你的 CAM 数据包含非常小的多边形,那么应确保导出选项已校准到能够覆盖该尺寸级别。
通过点击相应的 Hatched Polygon Options 按钮打开的 Polygon Options 对话框,可让你修改多边形的网格尺寸、走线宽度以及最小图元长度。如果希望多边形以高精度完全填充,那么这些数值都应在板上最小需求附近保持较紧的范围。否则,可能会导致多边形内部出现空白、出现网格填充图案而非完全填充,甚至在导出时遗漏整个多边形。
Polygon Options 对话框
另一方面,这些数值会应用于所有导出的多边形,因此过小的数值会增加导出文件的体量以及相关管理问题(例如重绘速度)。因此,最佳做法是在仍能满足板上所有多边形精度要求的前提下,尽量使用更大的数值。
启用 Create Solid Polygons 选项时,每个多边形将由一个或多个实心铜区域填充。使用的铜区域数量取决于多边形内部因现有网络对象(如走线和焊盘)而形成的独立区域数量。
Solid Polygon Options 对话框
通过点击相应的 Solid Polygon Options 按钮打开的 Solid Polygon Options 对话框,可让你决定如何处理铜孤岛与狭窄铜网络,以及当铺铜覆盖到与该铺铜同网络的网络对象时的铺铜行为:
-
Pour Over All Same Net Objects - 如果你希望多边形铺铜自动连接到与该铺铜同一网络的所有对象,请选择此选项
-
Pour Over Same Net Polygons Only - 如果你希望多边形铺铜仅自动连接到其边界内、且与其同一网络的多边形铺铜对象,请选择此选项(默认)
-
Don't Pour Over Same Net Objects - 如果你明确不希望多边形铺铜连接到任何其他网络对象,请选择此选项。如果选择了前两个选项之一,并且该多边形铺铜被分配到 No Net,则它会绕开所有对象进行铺铜,而不管这些对象的网络归属。
导出到 PCB
从 CAM 数据中提取出网络表后,File » Export » Export to PCB 命令将被启用。在完成所有必要步骤后执行该命令,将创建一个 PCB 文档,其中的板级设计外观将非常接近原始数据。
启动该命令后,会生成一个新的 PCB 文档(<CAMDocumentName>.PcbDoc),并在设计空间中作为活动文档打开。CAM 文档与 PCB 文档之间的信息传递实际流程如下:
-
根据 CAM 文档中当前的板尺寸创建 PCB 文档,并生成板框外形。
-
在 PCB 文档中创建网络对象,使用从 CAM 文档提取的网络信息。
-
根据 CAM 文档中定义的物理层顺序生成层叠(Create/Update Layers Order 对话框,通过 Tables » Layers Order 访问)。
-
为所有内部电源层分配网络。
-
为存在的所有分割平面分配网络。这些可以是
-
创建间距(Clearance)、线宽(Width)和电源层连接样式(Power Plane Connect Style)设计规则。为每个平面网络创建热焊盘连接(Relief connects)。
-
基于 CAM 数据构建焊盘堆叠(Padstacks)(按物理顺序使用信号/平面层上的焊盘,然后是钻孔、阻焊、锡膏等)。将焊盘堆叠加载到 PCB 中,并定义所需样式(简单或完整焊盘堆叠)。
-
创建 PCB 走线。
-
对整板执行一次 DRC 检查。



)。