Support for Reverse Engineering of PCBs

将 CAM 数据导入到 CAM 文档后,你会注意到 Export to PCB 选项会变为灰色,无论当前 CAM Editor 模式(CAM 或 NC)是什么。该命令允许你直接从 CAM 文件对 PCB 布局进行逆向工程。它并不遵循常规的导出/导入流程,而是将数据直接加载到 PCB Editor 中。

以下各节将详细说明如何从 CAM 数据逆向工程 PCB 设计:从最初导入到 CAM 文档、到导出前所需的准备工作,最终将设计数据导出到 PCB Editor。

导入数据

Preferences 对话框Preferences 对话框

整个流程的起点,是将 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 对话框Preferences 对话框

Preferences 对话框的 CAM Editor - Import/Export page 允许你更改 Gerber 文件的默认导入与导出设置。例如,如果你经常收到由 P-CAD 生成的 CAM 数据,可以考虑将坐标精度格式从 2:3(Altium Designer 默认)改为 4:4(P-CAD 默认)。如果不改,你仍然可以在每次导入作业时,从默认状态手动调整这些设置。

层类型分配

 Layer Table Detection Template对话框 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 类型。你可能希望在此时区分顶层、底层与内层的钻孔集合。不过这并非必需。

 Layer Table 对话框 Layer Table 对话框

如果你经常收到无法被自动正确分配层类型的 Gerber 或钻孔文件,应检查文件名中是否存在可用于区分的特征,以便 CAM Editor 能识别它们,并将这些特征添加到 Layer Types Detection Template 对话框中。ODB++ 不需要使用 Layer Types Detection Template 对话框,因为识别各层所需的全部信息都存储在 matrix 文件中。不过,加载完成后检查层类型分配仍是一个良好实践。

板层叠与钻孔集合

Create/Update Layers Order 对话框 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 对。
请记住,你是在定义一个钻孔集合(drill set),而不仅仅是最外层的层对。对于盲孔/埋孔钻孔层,所有被钻到的层都需要包含在该层集合中。对于通孔钻孔层,指定起始层与结束层通常就足够。

网表提取

此步骤可通过在主菜单中选择 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,并在主设计窗口中作为活动文档打开。报告会列出导入网表中存在但在提取网表中缺失的每一个网络。

不支持 Protel 格式的网表。导入的网表必须是标准 IPC-D-356 格式。

如果 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 还提供了移除非功能焊盘的选项。

要从当前文档中清除所有网络(本质上是清空之前提取的网表),请在主菜单中选择 Tools » Netlist » Clean All Nets 命令。启动命令后,所有网络信息都会被移除。你可以通过 CAMtastic panel 验证 CAM 文档中的网络已被清除:你会看到 Nets  选项卡为空。

边框与电源层

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 对话框Polygon Options 对话框

另一方面,这些数值会应用于所有导出的多边形,因此过小的数值会增加导出文件的体量以及相关管理问题(例如重绘速度)。因此,最佳做法是在仍能满足板上所有多边形精度要求的前提下,尽量使用更大的数值。

启用 Create Solid Polygons 选项时,每个多边形将由一个或多个实心铜区域填充。使用的铜区域数量取决于多边形内部因现有网络对象(如走线和焊盘)而形成的独立区域数量。

Solid Polygon Options 对话框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,则它会绕开所有对象进行铺铜,而不管这些对象的网络归属。

  • 当你运行 Export to PCB 命令来创建板时,多边形会以轮廓形式生成——它们需要进行 Repoured。 

  • CAM 文件中定义的每个独立多边形区域都会变成一个离散的多边形;使用 Polygon Manager 来了解它们的定义方式与位置。注意,你可以修改现有多边形的边界;用这种方式,可能更容易将一个现有的大多边形闭合,使其能够替代许多较小的多边形()。

导出到 PCB

从 CAM 数据中提取出网络表后,File » Export » Export to PCB 命令将被启用。在完成所有必要步骤后执行该命令,将创建一个 PCB 文档,其中的板级设计外观将非常接近原始数据。

启动该命令后,会生成一个新的 PCB 文档(<CAMDocumentName>.PcbDoc),并在设计空间中作为活动文档打开。CAM 文档与 PCB 文档之间的信息传递实际流程如下:

  1. 根据 CAM 文档中当前的板尺寸创建 PCB 文档,并生成板框外形。

  2. 在 PCB 文档中创建网络对象,使用从 CAM 文档提取的网络信息。

  3. 根据 CAM 文档中定义的物理层顺序生成层叠(Create/Update Layers Order 对话框,通过 Tables »  Layers Order 访问)。

  4. 为所有内部电源层分配网络。

  5. 为存在的所有分割平面分配网络。这些可以是 

  6. 创建间距(Clearance)、线宽(Width)和电源层连接样式(Power Plane Connect Style)设计规则。为每个平面网络创建热焊盘连接(Relief connects)。

  7. 基于 CAM 数据构建焊盘堆叠(Padstacks)(按物理顺序使用信号/平面层上的焊盘,然后是钻孔、阻焊、锡膏等)。将焊盘堆叠加载到 PCB 中,并定义所需样式(简单或完整焊盘堆叠)。

  8. 创建 PCB 走线。

  9. 对整板执行一次 DRC 检查。

  • Export to PCB 命令使用 PCB API 将数据从 CAM 文档传输到 PCB 文档。这样不会生成任何导出数据文件(Gerber 或其他格式),因此也绕过了使用 PCB Editor 的 Gerber Importer 的需求。

  • 生成的 PCB 文档会作为 Free Document 添加到 Projects panel 中,位于 PCBs 子文件夹下。它已生成,但初始状态未保存。

  • 要真正重建一块板仍需要额外工作,例如用封装(footprints)替换元件图元(你可以通过将一组图元复制粘贴到 PCB 库中,然后用新封装替换原始图元来实现)。PCB Editor 不会根据 CAM 文档中的 Layer Sets 信息自动创建钻孔对(drill-pairs);你需要在 Layer Stack Manager 中手动重新定义它们。 

AI-LocalizedAI 翻译
如您发现任何问题,请选中相关文本/图片,并按 Ctrl + Enter 键向我们提交反馈。
功能可用性

您可使用的功能取决于您所选择的 Altium 解决方案 —— Altium DevelopAltium Agile(Agile Teams 或 Agile Enterprise 版本),或仍在有效订阅期内的 Altium Designer。

如果您在软件中未找到文中提及的功能,请联系 Altium 销售团队了解更多信息。

旧版文档

Altium Designer 文档不再提供版本区分。如果您需要访问 Altium Designer 旧版本的文档,请前往其他安装程序页面的旧版文档部分。

Content