支持 PCB 逆向工程
概览
- 了解如何导入 ODB++、Gerber 和 NC Drill 数据,并检查层类型、物理层顺序和钻孔组。
- 了解如何提取连接关系,并使用 IPC-D-356 网表恢复网络名称和比较网表。
- 了解闭合板框和分割平面的要求,以及导出多边形的可用选项。
将 CAM 数据导入 CAM 文档后,您会发现,无论当前 CAM 编辑器处于哪种模式(CAM 或 NC),Export to PCB 选项均呈灰色显示。此命令可让您直接从 CAM 文件逆向还原 PCB 布局。该操作并不遵循常规的导出/导入流程,而是将数据直接加载到 PCB 编辑器中。
以下各节详细介绍了从 CAM 数据逆向还原 PCB 设计所需的步骤,包括最初导入 CAM 文档、执行必要的导出前准备,以及最终将设计数据导出到 PCB 编辑器。
导入数据
整个流程的起点是将 ODB++ 文件,或 Gerber 和 NC 钻孔文件加载到新的 CAM 文档中。如果您有 IPC 网表,则在导入 Gerber 和 NC 钻孔数据时也应将其一并导入。导入 ODB++ 时,仅当 ODB++ 目录中不包含网表时才需导入 IPC 文件。IPC 网表可让您使用原始名称更新提取出的网络,并区分通孔过孔和不属于元件的自由焊盘。
File » Import 子菜单中的所有命令都会在指定文件夹中搜索具有特定扩展名的文件。例如,导入钻孔文件时,会对指定目录中的文件进行筛选,仅保留扩展名为 .DR*、.ROU、.RTE、*.NC* 和 *.TX* 的文件。如果您收到的钻孔文件使用了其他扩展名,可以在 Preferences 对话框的 CAM 编辑器 - 杂项页面中扩充此列表。您也可以在此处修改与 Gerber、光圈、HPGL 和网表文件关联的任何默认扩展名列表。
Preferences 对话框的 CAM 编辑器 - 导入/导出页面可让您更改 Gerber 文件的默认导入和导出设置。例如,如果您经常收到使用 P-CAD 生成的 CAM 数据,可以考虑将坐标精度格式从 2:3(Altium Designer 的默认值)更改为 4:4(P-CAD 的默认值)。即使不更改默认值,您仍可在每次导入作业时调整这些设置。
层类型分配
Layer Table Detection Template 对话框
每个 Gerber 文件和钻孔文件都会分别分配到单独的层。此外,CAM 编辑器会在导入时检查其名称,并尝试为每个文件分配层类型。分配依据是 Layer Types Detection Template 对话框中的信息,可通过从主菜单中选择 Tables » Layer Type Detection 来访问此对话框。此对话框支持完全自定义,其中包含文件名片段(扩展名、关键字或两者的组合),用于将各个文件识别为信号层、负片平面层、边框层、钻孔层和临时层(机械层)等层类型。
例如,Altium Designer 的 PCB 编辑器通过扩展名区分 Gerber 层,如 .gtl 表示顶层,.gbl 表示底层。其他设计工具可能将顶层导出为 .top 文件,将底层(焊接层)导出为 .sol 文件。其中一些工具(如 P-CAD)允许用户自行指定 Gerber 输出文件名。
导入任意一组 CAM 文件后,您可以打开 Layers Table 对话框,检查自动完成的类型分配。您可以打开类型下拉列表,修改任何分配。例如,您会发现所有钻孔文件都被自动设置为 Drill Top 类型。此时,您可能希望区分顶部、底部和内部钻孔组,但这并非必需。
如果您经常收到无法自动正确分配层类型的 Gerber 或钻孔文件,应检查文件名中是否有可供 CAM Editor识别的特征,并将这些特征添加到 Layer Types Detection Template 对话框中。ODB++ 无需使用 Layer Types Detection Template 对话框,因为识别每一层所需的所有信息都存储在矩阵文件中。不过,最好还是在加载过程结束后检查层类型分配。
板层叠结构和钻孔组
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 面板的 Nets 选项卡上显示网络列表。 每个网络条目都会列出其总长度。单击面板中的任意网络条目,即可在设计空间中选中并缩放显示该网络。
CAM 编辑器会逐层追踪连接关系,并参考 NC 钻孔文件来建立层间连接。因此,您在 Create/Update Layers Order 对话框中定义的层叠结构,以及在 Create/Update Layers Sets 对话框中选择的钻孔层对,是从 CAM 数据中提取准确网表的关键前提。
如果您在导入 Gerber 和 NC 钻孔文件时同时包含了 IPC-D-356 网表文件,则可以从主菜单中选择 Tools » Netlist » Rename Nets,恢复原始(且有实际意义的)网络名称。 执行该命令后,系统会比较网络,并使用 IPC 网表文件中的网络名称重命名从当前文档中提取的网络。更新后的名称将显示在 CAMtastic 面板的 Nets 选项卡上。
虽然导出并不一定需要 IPC-D-356 网表信息,但建议提供这些信息。 这些信息有助于 CAMtastic 编辑器区分焊盘和过孔,从而将设计中的盲孔或埋孔正确创建为过孔,而不是焊盘。更重要的是,IPC 网表可作为参考,供您从主菜单中选择 Tools » Netlist » Compare 时与提取的网表进行比较。执行该命令后,系统将进行比较,生成报告 Netlist-Compare.rpt,并在主设计窗口中将其作为活动文档打开。报告会列出导入网表中存在、但提取网表中缺失的所有网络。
如果 IPC 网表已正确导入,您会看到 CAMtastic 面板的图层列表中新增了两个图层: <fabrication_testpoint_report_for_DesignName>.ipc_t 和 <fabrication_testpoint_report_for_DesignName>.ipc_b,分别反映顶层和底层信号层的网表信息。(如果 PCB 设计中包含内部信号层,还会出现第三个图层 <fabrication_testpoint_report_for_DesignName>.ipc_in。除非有涉及这些图层的盲孔和/或埋孔,否则第三个图层将为空,可以保留在图层列表中,也可以删除)。
对于从 PCB 编辑器生成的 IPC 网表,您会发现 CAM 编辑器的比较功能通常会找到一系列没有名称的“缺失网络”。这是因为 PCB 编辑器的 IPC 格式包含单引脚网络。而 CAM 编辑器在处理网表时,会忽略没有任何铜连接的焊盘。事实上,其 DRC 提供了移除非功能焊盘的选项。
边框和平面层
当 CAM Editor 将 PCB 文件导出到 PCB 编辑器时,会自动生成板框。为了正确生成板框,Border 类型的图层上必须存在闭合多段线。如果在该图层上找不到闭合多段线,或者在 Layers Table 对话框中将多个图层指定为边框,则生成的板形状可能不符合您的预期。
内部平面层上的所有分割也必须由闭合多段线定义。要确定多段线是否闭合,请查询该多段线(使用 Q 快捷键)。您可以检查整条多段线是否高亮显示,以及 CAM 面板的 Info 选项卡是否将其报告为闭合多段线。如果不是,则可以使用 Edit » Objects 子菜单中的 Join 命令,将现有图元转换为闭合多段线。
分割平面区域可能需要进行一些额外处理,因为每个分割区域都需要各自独立的“气泡状”封闭边界。虽然孤岛平面可以按上述方式连接,但与其他分割区域或边框多段线共用轮廓的分割平面必须重新绘制。要自行绘制闭合多段线,请在选择最后一个顶点后单击鼠标右键,然后选择 Close。
目前不支持嵌套平面(分割平面内的孤岛)。
导出多边形
Preferences 对话框的 CAM Editor - Import/Export 页面提供了额外选项,用于控制如何将 CAM 文档中的多边形导出到 PCB 文档。如果多边形为矩形,可以在 PCB 文档中将其创建为填充。对于非矩形多边形,可以在 PCB 编辑器中创建网格或实心多边形铺铜。您可以打开这两种多边形铺铜类型的选项对话框,更精细地控制导出的多边形在 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 文档之间传输信息的实际步骤如下:
-
创建 PCB 文档,并根据 CAM 文档中电路板的当前尺寸生成板框。
-
使用从 CAM 文档中提取的网络信息,在 PCB 文档中创建网络对象。
-
根据 CAM 文档中定义的物理层顺序生成层叠结构(Create/Update Layers Order 对话框,可通过 Tables » Layers Order 访问)。
-
为所有内电层分配网络。
-
为所有现有的分割平面分配网络。这些可以是
-
创建间距、线宽和电源平面连接样式设计规则。为每个平面网络创建热焊盘连接。
-
根据 CAM 数据构建焊盘堆栈(按物理顺序使用信号层/平面层上的焊盘,然后依次使用钻孔、阻焊、锡膏等数据)。将焊盘堆栈加载到 PCB 中,并定义所需的样式(简单焊盘堆栈或完整焊盘堆栈)。
-
创建 PCB 走线。
-
对整块电路板执行 DRC 检查。



)。