第 37 章 设计比较

本章节讨论如何比较两个版本的设计。将解释如何生成差异报告以及可用于更新旧设计以匹配新设计的文件。

设计比较 ಠ_ಠ

您可以比较两个版本的设计,并创建将原始设计更新为新设计所需的文件。在比较原理图与 PCB 布局之前,请通过生成 SailWind Logic 或其他原理图工具中的网表来创建 PADS 格式 ASCII 网表文件(.asc)。

当您将更新后的原理图与原始 PCB 布局进行比较,然后将 PCB 布局更新以匹配原理图时,此过程称为正向布局或正向标注。同样,当您将更新后的 PCB 布局与原始原理图进行比较,然后将原理图更新以匹配 PCB 布局时,此过程称为反向布局或反向标注。

如果 SailWind Layout 和原理图工具在同一台计算机上,您可以使用更方便的自动化工具来比较和更新设计版本。如果 SailWind Layout 和原理图工具不在同一台计算机上,您可以使用 SailWind Layout 来比较两个版本的设计。更多信息请参阅:

  • 对于 SailWind Logic,请参阅"使用 SailWind Logic"。

设计比较可以处理未使用的管脚网络。未使用的管脚网络包含所有未分配网络的元件管脚,并将它们分组到一个大网络中。

设计比较不会执行以下任何操作:

  • 将已从逻辑网络中移除的管脚添加到未使用的管脚网络。

  • 使用重用定义;物理设计重用中的实际元素将在比较期间使用。

在比较过程中,假设新设计包含最新的属性辞典。如果新设计中某个属性未进行 ECO 注册,则只有在清除比较/ECO 工具对话框比较选项卡上"仅比较 ECO 注册元件"复选框时,该属性才会被反向标注。如果新设计中某个属性已进行 ECO 注册,则该属性会被反向标注,旧设计中的值会被更新,但旧设计中该属性的 ECO 注册不会被更新。

比较两个版本的设计

比较两个版本的设计,可以生成新的*.eco*文件、差异报告、用于反向标注到原理图的 ASCII 文件,或全部生成。

TIP

作为替代方案,您可以使用 SailWind Layout 中的 ECOGEN 命令来完成此操作。

您可以比较以下任何形式的设计版本:

  • 当前在 SailWind Layout 中打开的 PCB 设计

  • 表示原理图或 PCB 布局的 PADS 格式 ASCII 网表文件(.asc)

  • PCB 布局文件( .pcb )

如果您尝试在 SailWind Layout 和 SailWind Logic 之间正向或反向标注设计更改,应在进行更改时将其记录在*.eco*文件中。这样可以获得最佳的反向标注结果。更多信息,请参阅"记录 ECO 更改"或"从 SailWind Layout 反向标注到 SailWind Logic"。

有关这些方法差异的更多详细信息,请参阅"记录与生成的 ECO 文件"。

TIP

如果 SailWind Layout 和原理图工具在同一台计算机上,您可以使用 SailWind Logic 中的 SailWind Layout Link 来创建 ECO 文件并正向或反向标注原理图。更多信息,请参阅"使用 SailWind Logic"。

🏃‍♂️‍步骤

  1. 点击🖱️工具 > 比较/ECO菜单项。

  2. 在比较/ECO 对话框的文档选项卡上,按以下方式选择要比较的设计:

    • 如果旧设计在内存中,并且您想将其与较新的*.asc*或 .pcb 文件进行比较,请使用以下设置:

      补充图

    • 如果新设计在内存中,并且您想将其与较旧的*.asc*或 .pcb 文件进行比较,请使用以下设置:

      补充图

    • 如果两个设计都不在内存中,并且您想将较旧的*.asc.pcb 文件与较新的.asc*或 .pcb 文件进行比较,请使用以下设置:

      补充图

  3. 在输出选项区域,选择要生成的文件。

  4. 在比较和更新选项卡上设置适当的选项。

  5. 点击🖱️运行比较设计并创建您指定的文件。(当您在输出选项区域选择选项时,运行按钮变为可用。)

  6. 点击🖱️进程状态对话框中的显示报告按钮查看生成的文件。

  7. 点击🖱️关闭按钮。

👀‍结果

比较过程中出现的任何消息或错误都将写入Layout.err,该文件存储在*\SailWind Projects*文件夹中。

如果原始设计在内存中并且您在更新选项卡上选择了更新原始设计,则在比较完成后更新将自动导入到设计中。要确认更新后的设计与新设计匹配,请再次运行比较,并仅选择生成差异报告复选框。如果仍然存在差异,请使用 ECO 工具栏命令更正设计。

如果您没有选择更新原始设计来自动更新原始设计,请点击🖱️主页>导出菜单项导入*.eco*文件并更新设计。

验证完成后,点击🖱️工具 > 验证设计菜单项检查设计完整性。

TIP

如果 ECO 文件中的命令在更新后的原始设计中添加了任何位于原点的元件,请记住放置这些元件并布线任何新未布线的管脚对。

使用 ECOGEN 比较设计

对设计进行更改后,您可以使用 ECOGEN 命令将新版本的设计与原始设计进行比较,并创建将原始设计更新为新设计所需的文件。

TIP

作为替代方案,您可以使用 SailWind Layout 中的"比较/ECO 工具对话框"来完成此操作。

最佳实践是在进行更改时将其记录在*.eco*文件中。这样可以获得最佳的反向标注结果。更多信息,请参阅"记录 ECO 更改"。有关这些方法差异的更多信息,请参阅"记录与生成的 ECO 文件"。

如果要比较原理图与 PCB 布局,请在比较设计之前从原理图工具导出 PADS 格式 ASCII 网表文件(.asc)。

🙊限制

  • ECOGEN 始终比较元件和封装规则以及扇出和焊盘入口规则,即使您没有指定-l 开关。

  • ECOGEN 不会为层生成更改信息。对于条件规则等依赖于层的规则,请确保要比较的设计具有相同的层数。

  • ECOGEN 忽略虚拟过孔。

  • ECOGEN 忽略重用定义,并使用物理设计重用中的实际元素进行比较。

😎前提

如果要比较原理图与 PCB 布局,请在比较设计之前从原理图工具导出 PADS 格式 ASCII 网表文件(.asc)。

🏃‍♂️‍步骤

  1. 打开 Windows 命令提示符。

    点击🖱️开始> Windows 附件 > Windows 系统 > 命令提示符菜单项。

  2. 切换到包含ecogen.exe文件的文件夹,例如 C:<install_folder><version> \Programs。

  3. 通过以下两种方式之一运行 ECOGEN:

  • 使用以下格式输入⌨️ ecogen 命令:
ecogen <new_design> <original_design> [<eco_out>] [-u<unused net name>] [-e<error file>] [-d<report file>] [-r[a][p]] [-a<attr mask>] [-f] [-l <rules mask>] [-n<new_design_title>][-o<original_design_title>] [-g] [-s] [-m] [-q] [-i <output unit>]

例如:

ecogen \ePD\3.1\project\logic.asc C:\SailWind Projects\pcb.asc design.eco -lNET,CLR -uNOT_CONNECTED

在此示例中,ECOGEN:

  • 比较原始设计(更改前)logic.asc与新设计pcb.asc

  • 创建 ECO 文件design.eco,可用于更新原始设计layout.asc

  • 比较网络的清除规则

  • 指定 NOT_CONNECTED 作为 SPECCTRA 布线产生的未使用管脚网络

在命令行中:

  • 必须按给定顺序输入⌨️ newDesign、originalDesign 和 ecoFile 参数。

  • 如果参数包含空格,请用双引号" "将参数括起来。

  • 输入⌨️ ECOGEN@<command_file>,其中是包含所有参数的文件路径名。

示例

下表包含参数用法。方括号[]括起可选参数。

表 122. 参数用法

参数 说明
newDesign 包含您想要放入原始设计中的更改的设计文件。
originalDesign 您想要更新以匹配新设计的设计文件。
[eco_out] 包含 ECO 指令的 ECO 命令文件。您可以将此文件导入原始设计以更新原始文件。
[-aAttributeMask] 属性比较和要比较的属性(AttributeMask)
此掩码选择要比较属性的对象类型。掩码是由逗号分隔且不带空格的对象类型字符串。您可以指定以下对象类型:
PCB,PART,PARTTYPE,PARTDECAL,NET,NETCLASS,PIN
将 AttributeMask 指定为由逗号分隔且不带空格的对象类型字符串。例如:-aPART,NET
如果要在比较期间忽略所有属性,请不要指定-a 开关。如果不使用此开关,现有属性将被保留,并且不会为属性修改生成 ECO 命令。
例如,要比较元件和网络属性(对于 SailWind Logic 原理图),使用-aPART,NET 开关值。
例如,要比较板、元件、网络和管脚属性(对于 PADS Designer 原理图),使用-aPCB,PART,NET,PIN 开关值
要比较所有对象类型的属性,使用-aPCB,PART,PARTTYPE,PARTDECAL,NET,NETCLASS,PIN 开关值。
-dReportFile 包含原始设计和新设计之间差异的文件。
[-eErrorFile] 包含 ECOGEN 状态和错误消息的文件。ECOGEN 会自动打开您在安装期间选择的默认编辑器来显示错误文件。
[-f] 启用元件封装分配比较。
[-g], [-q] 提示• 如果要比较网络名称和参考指示符名称并根据需要重命名,请不要使用-g 或-q 开关。• 这些开关最好用于最小化对已布线迹线的更改。选择此选项可能会导致元件位置交换。使用-g 开关禁用参考指示符和网络名称比较。
使用此开关比较连接性和拓扑结构(而非名称)并根据需要重命名。使用管脚名称、元件类型名称等比较差异。
使用-q 开关禁止元件重命名。
使用此开关比较网络名称和参考指示符,但更倾向于添加或删除元件而不是重命名元件。基于很少参考指示符被重命名但网络未被重名的假设,使用参考指示符或网络名称比较差异。
[-iOutputUnit] 指定 ECO 和报告文件中尺寸值的输出单位。(如果不指定此开关,ECOGEN 使用新设计的输出单位。)
您可以指定以下输出单位:BASIC, MILS, INCHES, 或 METRIC。
如果指定 ECOGEN 无法识别的输出单位(例如,如果拼错单位名称),命令将使用 BASIC。
[-lRulesMask] 指定规则比较以及要比较的对象类型、规则类型和规则种类(RulesMask)。
对于 RulesMask,您可以指定:• 对象类型:PCB, NET, NETCLASS, PINPAIR, 和 GROUP。如果不指定任何对象类型,则比较所有对象类型的规则。• 规则类型:清除、布线和高速度(CLR, RT, HS)。如果不指定任何规则类型,则比较所有三种类型。• 规则种类:常规、条件和差分对(GEN, CON, DFP)。如果不指定任何规则种类,则比较所有三种种类。
将 RulesMask 指定为由逗号分隔且不带空格的对象类型字符串。例如:
-lNETCLASS,GROUP,CLR
如果不指定 RulesMask,ECOGEN 会比较所有对象类型上的所有类型和种类的规则。
[-m] 启用元件放置比较。当比较 PCB 布局与原理图时,此功能仅适用于包含由 ePlanner 创建的放置信息的 PADS Designer 原理图。
[-nNewDesignTitle] 报告标题中新设计名称使用的字符串。
[-oOldDesignTitle] 报告标题中原始设计名称使用的字符串。
[-r[a][p]] 启用仅比较 ECO 注册的[p]元件或[a]属性。
使用-rap 开关仅比较 ECO 注册的元件和属性。
使用-ra 开关仅比较 ECO 注册的属性。通孔属性未进行 ECO 注册,无法在 ECO 过程中添加、删除或更改。
使用-rp 开关仅比较 ECO 注册的元件。
如果要 ECOGEN 比较所有元件和属性,请不要使用-r 开关。
如果要比较设计上的机械或非电气元件,请不要使用-rap 或-rp 开关。
-uUnusedNetName] 指示包含没有逻辑网络关联的管脚的[未使用管脚网络。此网络是 SPECCTRA 布线的结果。使用您在 SPECCTRA 中使用的网络名称。最大网络名称长度为 47 个字符。可以使用除花括号{ }、星号*、空格、问号或逗号之外的任何字母数字字符。

差异报告 ಠ_ಠ

差异报告(Layout.rep)报告两个设计文件比较的结果。(您使用工具 > 比较/ECO菜单项或 Windows 命令提示符中的 ecogen 命令执行比较。)例如,您可以将新设计(有更改的设计)与原始设计(更改前的设计)进行比较。差异报告列出了新设计与原始设计相比发现的更改。

元件差异

在单独的子部分中列出元件类型信息和元件放置信息。

元件类型信息子部分列出了旧设计和新设计的参考指示符和元件类型。仅存在于旧设计中的元件在新设计列中列为。仅存在于新设计中的元件在旧设计列中列为。重命名的元件列在同一行。具有新元件类型的元件列在同一行。具有新分配封装的元件列在同一行。两个设计中参考指示符和元件类型相同的元件不列出。

元件放置信息子部分列出了每个元件的 x/y 坐标、胶合状态和镜像(翻转)状态的差异。仅对同时存在于旧设计和新设计中的元件报告元件放置信息。

网络差异

列出不存在的网络名称。列出匹配但名称不同的网络,包括在旧设计中已在新设计中合并的网络。网络分割操作显示为管脚差异。网络按字母顺序列在旧设计列下,除非多个网络合并时,它们会连续列出。旧设计中不存在的网络列在本节末尾。

交换门差异

列出旧设计中与新设计中的门交换的任何门。报告列出设计中父元件的参考指示符,后跟门中的管脚。

交换管脚差异

列出旧设计中与新设计中的管脚交换的任何交换管脚。此列表提供设计中元件的参考指示符,后跟交换的管脚。

旧设计中不匹配的网络管脚

列出旧设计中缺失或连接到新设计中其他网络的任何连接管脚。这些是在 ECO 过程中从网络中删除的管脚。此列表提供旧设计中的网络名称,后跟网络中不匹配的管脚。如果新设计中不存在网络,则列出网络中的所有管脚。

新设计中不匹配的网络管脚

列出新设计中缺失或连接到旧设计中其他网络的任何连接管脚。这些是在 ECO 过程中添加到网络中的管脚。此列表提供新设计中的网络名称,后跟网络中不匹配的管脚。如果旧设计中不存在网络,则列出网络中的所有管脚。

属性差异

在每个对象下列出以下标题:属性名称、旧值和新值。仅对同时存在于旧设计和新设计中的对象包含属性差异。如果任一设计中缺少属性,则值列为<no attr>。如果属性存在但没有值,则列为<no value>

TIP

要生成包含设计中机械(非电气)元件的报告,请清除比较/ECO 工具对话框比较选项卡上的"仅比较ECO 注册元件"复选框。

旧设计中不匹配的网络管脚对

列出旧设计中缺失、连接到其他网络或连接到新设计中不同位置的相同调度网络的任何管脚对。这些将是 ECO 过程中将从网络中删除的管脚对。

报告列出旧设计中的网络名称,后跟网络中不匹配的管脚对。如果新设计中缺少网络,则列出网络中的所有管脚对。

新设计中不匹配的网络管脚对

列出新设计中缺失、连接到其他网络或连接到旧设计中不同位置的相同调度网络的任何连接管脚对。这些将是 ECO 过程中将添加到网络中的管脚对。

报告列出新设计中的网络名称,后跟网络中不匹配的管脚对。如果旧设计中缺少网络,则列出网络中的所有管脚对。

规则差异

本节报告两个设计之间设计规则的差异。本节将具有规则差异的每个对象列为子标题。子标题有三列:规则名称、旧值和新值。(规则差异部分标题显示规则值的显示单位。)

每个对象类型的子标题包括:

  • 对象类型

  • 原始设计中的对象名称

  • 新设计中的对象名称(如果名称不同)

  • 规则类型

例如:

规则差异(值以 mil 为单位) 旧对象名称 -> 新对象名称 -> 规则类型 规则名称 旧值 新值 NETCLS CLASS1 -> MYCLS 布线 PIN_SHARE 开 关 VALID_LAYERS 顶层 底层

此示例显示了 CLASS1 类的布线规则集更改。更改将 CLASS1 重命名为 MYCLS,并包括管脚共享和有效层规则的更改。没有其他布线规则被更改。

网络类差异

本节列出以下网络类名称:

  • 在一个设计或另一个设计中不存在。(原始设计中不存在的类列在本节末尾。)

  • 匹配但名称不同

此示例显示在新设计中:

  • CLASS1 网络类被重命名为 MYCLASS。

  • CLASS2 网络类被移除。

  • NEWCLS 网络类被添加。

已移除的类网络

本节报告原始设计中但在新设计中被移除的网络。(原始设计中的网络类包含新设计中未包含或包含在不同网络类中的网络。)

本节列出:

  • 原始设计中从中移除网络的每个网络类以及这些移除网络的名称

  • 如果新设计中不存在网络类,则列出网络类中的所有网络

例如:

已移除的类网络
CLASS1 $$$1879$$$1920 $$$1906 $$$1928
CLSMESH GNC VCC

此示例显示:

  • 原始设计中 CLASS1 网络类中的网络$$$1879、$$$1906、$$$1928 和$$$1920 在新设计的该网络类中缺失。

  • 原始设计中 CLSMESH 类中的网络 GND 和 VCC 在新设计的该网络类中缺失。

如果使用 ECO 操作更新原始设计,该操作将从原始设计中的网络类中删除这些网络。

已添加的类网络

本节报告原始设计中不存在但在新设计中添加的网络。(新设计中的网络类包含原始设计中未包含或包含在不同网络类中的网络。)

本节列出:

  • 新设计中添加了网络的每个网络类以及这些添加网络的名称

  • 如果网络类是新的(原始设计中不存在),则列出网络类中的所有网络

例如:

添加的类网络 CLASS1 ANDROID BAJOR SPOT DATA00 DATA01 CLSMESH ZORG GND2

此示例显示在新设计中:

  • ANDROID、BAJOR、SPOT、DATA00 和 DATA01 网络被添加到 CLASS1。

  • ZORG 和 GND2 网络被添加到 CLSMESH 类。

管脚对组差异

本节列出以下管脚对组:

  • 在一个设计或另一个设计中不存在。原始设计中不存在的管脚对组列在本节末尾。

  • 匹配但名称不同。

例如:

管脚对组差异 旧设计 新设计 GROUP1 <none> GROUP2 GROUPB <none> NEWGRP

此示例显示在新(更改)设计中:

  • GROUP1 管脚对组被移除。

  • GROUP2 管脚对组被重命名为 GROUPB。

  • NEWGRP 管脚对组被添加。

从组中移除的管脚对

本节报告原始设计中但在新设计中被移除的管脚对。(原始设计中的管脚对组包含新设计中未包含或包含在不同组中的管脚对。)

本节列出:

  • 原始设计中从中移除管脚对的每个组以及这些移除管脚对的名称

  • 如果新设计中不存在组,则列出组中的所有管脚对

例如:

移除的组管脚对 GROUP1 U2.2-U1.2 U3.3-U2.2 U3.2-U4.2 U1.5-U2.5 U4.5-U1.5 GLMESH R102.1-C2.2

此示例显示在新(更改)设计中:

  • 五个管脚对从 GROUP1 中移除。

  • 管脚对 R102.1-C2.2 从 GLMESH 组中移除。

添加到组中的管脚对

本节报告新设计中但原始设计中不存在的管脚对。(新设计中的管脚对组包含原始设计中未包含或包含在不同组中的管脚对。)ECO 操作将添加这些管脚对。

本节列出:

  • 新设计中添加了管脚对的每个组以及这些添加管脚对的名称。

  • 如果组是新的(原始设计中不存在),则列出组中的所有管脚对。

例如:

不匹配的组管脚对 G U2.2-U1.2 U3.2-U2.2 DASL R29.2-U23.17

此示例显示在新(更改)设计中:

  • 两个管脚对被添加到 G 组。

  • 管脚对 R29.2-U23.17 被添加到 DASL 组。