Synopsys Galaxy Implementation平台提供了一种方法,即使用原始的Golden UPF文件,在整个综合、物理实现和验证步骤中保持设计人员编写的 UPF文件,由综合和物理实现工具生成补充的UPF 文件。
Golden UPF 流程的特点和使用在以下各节中进行了描述:
• Golden UPF flow概述
• 对象名称映射name mapping
• Tool to Tool的设计流程
• Golden UPF 流程脚本示例
• 特定工具的使用指南
Golden UPF 流程概述
Synopsys Galaxy implementation平台提供了一种称为Golden UPF 流程的替代方法,用于维护设计人员提供的 UPF 文件。在此流程中,原始的Golden UPF 文件(或多个UPF文件集合)与综合和物理实现工具生成的补充 UPF 文件一起,在整个综合、物理实现和验证步骤中使用。 下图比较了传统的 UPF 流程与Golden UPF 流程。
图 1 UPF-Prime(传统)和Golden UPF 流程
UPF-Prime 流程
在传统流程中,每个流程阶段都使用单一 UPF 文件,这个文件会在综合和物理实现阶段通过以下方式进行修改:
- 原始 UPF 文件(用 RTL 描述编写)由 Design Compiler 修改,生成 UPF'(UPF prime)文件。UPF' 文件反映了综合期间发生的变化,如始终开启缓冲器和反相器的插入、对象名称更改,以及单元的 PG(电源和地)连接。
- UPF' 文件由 IC Compiler 或 IC Compiler II 修改,生成 UPF''(UPF double prime)文件。UPF'' 文件反映了物理实现期间发生的变化,如电源开关单元、隔离单元和外域物理直通缓冲器的插入。
因为传统流程修改原始 UPF 文件以生成 UPF' 和 UPF'' 文件,所以它被称为“UPF-Prime”流程。
Golden UPF 流程
Golden UPF flow在整个流程中保持并使用相同的原始Golden UPF 文件(或多个 UPF 文件集合)。Design Compiler 和 IC Compiler 工具将power intent变更写入一个单独的“补充”UPF 文件。下游工具和验证工具使用Golden UPF 文件和supplemental UPF 文件的组合,而不是单个的 UPF' 或 UPF'' 文件。
Golden UPF 流程提供了以下优势:
- Golden UPF 文件在整个流程中保持不变,这保留了 UPF 文件原始编写时的形式、结构、注释行和通配符命名。
- 可以使用特定工具的条件语句在不同工具中执行不同的任务。这些语句在传统的 UPF-Prime flow中会丢失(由于综合synthesis和后端PR的修改)。
- 在supplemental UPF 文件中可以轻松跟踪power intent的变更。
- 您可以选择使用 Verilog 网表来存储所有 PG 连接信息,从而在 UPF 文件中无需使用 connect_supply_net 命令。这可以显著简化并减少 UPF 文件的总体大小。
Golden UPF flow在结果质量、运行时间和内存使用方面与传统的 UPF-Prime flow非常相似。
图 2 显示了 Synopsys Galaxy 验证工具如何使用带有 PG 连接信息的Golden UPF 文件、supplemental UPF 文件和 Verilog 网表。Golden UPF 文件与由综合和物理实现工具生成的supplemental UPF 文件结合使用,在整个流程中被所有工具使用。
图 2 Golden UPF 流程中的验证工具
对象名称更改
综合和物理实现工具可能会因优化或取消分组而更改对象名称。在传统的 UPF-Prime flow中,工具会输出一个新的 UPF' 或 UPF'' 文件,该文件完全反映了工具所做的更改。另一方面,在Golden UPF flow中,工具输出一个supplemental UPF 文件,其中只包含power intent的更改,而不包含原始UPF中所描述的power intent。由于对设计所做的更改,Golden UPF 文件中的的对象名称可能与生成的 Verilog 网表中的相应对象不匹配。
当在后续工具使用中将Golden UPF 和supplemental UPF 文件应用于设计时,Golden UPF 文件中使用的对象名称必须正确映射到设计网表中使用的名称。Synopsys Galaxy 流程工具都使用相同的重命名规则来跟踪更改的名称。这些更改的名称可以使用基于命名规则来匹配大多数对象重命名情况。
然而,默认的重命名规则无法处理一些不寻常的情况。在这些情况下,当工具输出 Verilog 网表时,它还会输出一个包含特定设计重命名规则的名称映射文件(name mapping file)。它还会在 Verilog 网表中插入一个指示映射文件名称的 pragma 语句。在后续使用中,当工具读取 Verilog 网表时,它会自动找到name mapping filw并正确映射到对象名称。
Golden UPF 和生成的数据文件之间的不匹配通过基于规则的识别和名称映射文件来处理。下图显示了 Galaxy 工具如何处理对象名称更改。综合工具输出一个新的网表(netlist)、名称映射文件(如果需要name mapping file)和supplemental UPF 文件。物理实现工具将Golden UPF 和生成的文件作为输入,并产生更新的设计数据文件。
图 3 Golden UPF 流程中的对象重命名
验证和签核工具接受Golden UPF 文件和生成的数据文件。如果存在对象名称不匹配的问题,它们还能通过识别标准的重命名规则和使用生成的名称映射文件来处理。
PG 电源连接性
在Golden UPF流程中,当您从综合或物理实现工具中保存门级网表时,您可以选择两种方式来写出完整的单元电源和地(PG)供电连接信息:
- 将PG信息写入Verilog网表。在这种情况下,生成的UPF文件被称为“简洁”的supplemental UPF文件,因为它不包含任何connect_supply_net命令。
- 从Verilog网表中省略PG信息,并将等效的connect_supply_net命令写入supplemental UPF文件。在这种情况下,生成的UPF文件被称为“详细”的supplemental UPF文件。
下图展示了综合工具的两种选项。
图4 Golden UPF流程中的PG连接存储选项
Galaxy工具接受Verilog网表和补充UPF的任一形式(除了VCS NLP工具,它只接受PG网表)。将PG信息放入网表中而不是补充UPF文件中有助于保持UPF文件更短小和更易读。
如果Golden UPF 文件使用了supply sets或supply set handles,而这些电源在 Design Compiler 工具中没有解析为电源网络,那么工具会使用前缀 SNPS_ss_ 将supply sets定义输出到 Verilog 网表中,并使用美元符号 $ 替换电源集标识符内部分隔字段的每个句点字符。例如,
Design Compiler 工具不会实例化电源开关单元。然而,电源开关具有输出供电网络,这些网络可以为其他单元供电。该工具会输出这些没有驱动器的供电网络。例如,
Design Compiler 工具不会输出不驱动任何leaf cell的 PG 引脚的 PG 网络和端口。IC Compiler、IC Compiler II 和 Formality 工具从与 PG 网络列表一起提供的 UPF 描述中产生开关行为。
Golden UPF flow中使用的命令
以下是使用Golden UPF 流程的要求:
- 通过设置 enable_golden_upf 变量,在每个工具中启用Golden UPF 流程:
prompt> set_app_var enable_golden_upf true
或者在 IC Compiler II 工具中:
icc2_shell> set_app_option -name .enable_golden_upf -value true
- 要执行任何 UPF 查询命令之外的命令,您必须将命令放入脚本中,并使用 load_upf 命令执行它们。您不能在命令行上单独执行它们,也不能使用 source 命令执行。
- 当您加载Golden UPF 文件时,对 UPF 文件和设计中的对象之间的任何对象命名不匹配执行严格检查:
prompt> load_upf -strict_check true
- 在工具对所有单元完成 PG 连接后,您可以选择性地在 Verilog 网表中保存完整的 PG 连接信息。
例如,在 Design Compiler 工具中:
dc_shell-topo> write_file -format verilog -pg -output top_with_pg.v
或者在 IC Compiler 工具中:
icc_shell> write_verilog -pg top_with_pg.v
或者在 IC Compiler II 工具中:
icc2_shell> write_verilog -include {pg_netlist} top_with_pg.v
- Golden UPF 流程与所有设计存储格式兼容:ASCII、.ddc 和 Milkyway 数据库。当您以 .ddc 或 Milkyway 格式保存设计时,所有 UPF 信息和 Verilog 网表都存储在二进制数据库中,并通过从数据库中读取设计来恢复。
- 在工具完成对设计电源意图的修改后,使用 -supplemental 选项的 save_upf 命令保存新的补充 UPF 文件:
prompt> save_upf -supplemental top_supplement.upf
或者在 IC Compiler II 工具中:
icc2_shell> save_upf -format supplemental top_supplement.upf
如果您没有在 Verilog 网表中保存 PG 连接信息,请使用 -include_supply_exceptions 选项将其保存在补充 UPF 中:
prompt> save_upf -supplemental top_supplement_with_pg.upf \
-include_supply_exceptions
IC Compiler II 工具默认保存带有supply exceptions的 UPF。如果您不希望保存supply exceptions,请在使用 save_upf 命令之前设置以下变量:
icc2_shell> set_app_options -name mv.upf_save_upf_include_supply_exceptions -value false
icc2_shell> save_upf -format supplemental top_supplement_with_pg.upf
在 IC Compiler II 工具中,还可以使用 save_upf 命令中的 -force_reference、-force_no_reference、-include 或 -exclude 选项,指定是否为特定库单元或特定类型的单元实例包含或排除 connect_supply_net 和 set_related_supply_net 命令。
• 每次随后加载Golden UPF 文件时,使用 -strict_check false 选项以防止严格检查匹配的对象名称,并使用 -supplemental 选项加载补充 UPF 文件:
prompt> load_upf -strict_check false -supplemental top_supplement.upf
-strict_check false 选项意味着Golden UPF 正在重新应用,因此设计名称匹配检查不是完全精确的,而是使用基于规则的重命名和名称映射文件(如果有)。-supplemental 选项将supplemental UPF 文件作为Golden UPF 的补充应用,进行完全精确的名称匹配检查。您必须同时(或在)加载supplemental UPF 文件之前加载Golden UPF 文件。
使用指南
为了避免创建名称映射文件(mapping file)的需要,并最小化supplemental UPF 文件的大小和复杂性,可以遵守以下指南:
- 避免使用通配符字符来扩展到广泛范围的对象的名称。例如,使用 bus_AB* 来识别总线上的信号是可以的,但避免使用 * 本身来映射到所有对象。
- 避免使用复杂的名称更改规则,这会使得在流程中跟踪名称更改更加困难。如果通配符匹配了新创建的工具对象,可能会导致非常大的名称映射。
- 避免使用 group 命令,这会导致层次化对象重命名。
- 在层次化设计中,在顶层设计和所有下层块中使用相同的名称更改规则。
- 避免域合并和端口复制,这些可能不被所有层次化流程中的工具支持。
- 如果希望保持supplemental UPF 文件简短且易于阅读,请在保存 Verilog 网表时(通过使用保存网表时的 -pg 选项)保存 PG 连接信息,而不是在supplemental UPF 文件中保存。您可以选择在 Verilog 网表和supplemental UPF 文件中都保存 PG 信息,但没有必要这样做。
- 计划在整个芯片设计流程中使用Golden UPF 模式。那就不能禁用Golden UPF 模式,输入单个 UPF 命令,然后重新启用Golden UPF 模式。如果您发现需要对设计的power intent进行任何基本更改,请修改Golden UPF 文件,并使用原始 RTL 从流程的开始重新启动流程。
注意:
- 在Golden UPF 流程中,层次化设计只能自底向上构建,不能自顶向下。
- 此流程中不支持 characterize 命令,您不能从top模块的Golden UPF 文件到层次较低的模块。