使用 UPF/CPF 的低功耗设计流程
使用 UPF/CPF 的低功耗设计流程
作者: Markus Lanz、Urs Winiger, austriamicrosystems, Rapperswil, Switzerland 会议: SNUG Germany 2012 页数: 19 页
摘要
本文展示了功耗意图语言 UPF 如何用于一个功耗敏感的电池供电 ASIC 中,在仿真、综合和布局中实现先进功耗管理技术,如多供电电压(multi-supply voltage)和电源关断(power shut-off)。内容包括如何定义九个独立的电源关断域,其中一个在较低电压下运行。包含功耗管理单元的常开电源域必须映射到低漏电库以满足漏电功耗预算。电源开关位于设计的模拟部分。标准单元库中需要电平转换器和隔离单元等单元以运行自动化设计流程。尽管 UPF 必须转换为 CPF 才能用于 P&R 和 LEC,该流程整体运行良好。
1. 引言
在电池供电设备中,低功耗是最重要的需求之一。本文讨论的 ASIC 运行在手持设备中,由小型内置电池供电,既不能充电也不能更换。其主要功能是响应用户活动并定期唤醒和监测传感器输入。
为了满足功耗预算并实现七年的设备寿命,必须采用先进的功耗管理技术,如多阈值电压(multi-Vth)、多供电电压和电源关断。这些技术的使用显著增加了验证工作量,并给实现流程带来了新的挑战。出于这些原因,建议使用一种额外的语言来描述设计的功耗意图。通过 UPF,可以在设计阶段就验证功耗意图,并且可以在综合流程中自动插入电平转换器和隔离单元。
本文展示了如何在仿真、使用 Design Compiler 的综合和布局中处理多供电电压和电源关断等先进功耗优化技术。展示了如何定义九个独立的电源关断域,其中一个在较低电压下运行。常开电源域(包含例如功耗管理单元)必须在综合期间映射到低漏电库以满足漏电功耗预算。电源开关位于设计的模拟部分。标准单元库中需要电平转换器和隔离单元等单元以运行自动化设计流程。
为了满足严格的功耗规格并保证电池的长寿命,不同的功能模块应该只在真正必要时才供电。为了具有充分的灵活性,电源域可以由集成的微控制器单独控制。该设计约为 50K 门,采用 0.35um 工艺。
对于大多数电源域,实现了 NMOS 接地开关而非 PMOS 电源开关(见下图:蓝色开关表示 NMOS 接地开关,红色开关表示 PMOS 电源开关)。选择 NMOS 接地开关的主要论据是芯片面积——大约是等效 PMOS 开关的三分之一。这对于门数巨大的设计尤为重要,此时开关会成为芯片面积的重要组成部分。NMOS 开关的唯一缺点是在电源关断模式下具有较高的漏电流。然而,通过对 NMOS 栅极施加负偏压可以解决此问题。结果,偏置后的 NMOS 开关更加有效,在漏电流与导通电阻和面积的比值方面表现出最佳的综合性能。
可开关的电源域需要隔离逻辑,低电压部分(红色标注)需要在输出端插入使能的电平转换器。由于低电压逻辑中使用的晶体管能够承受高电压,MCU 域的输入端不需要电平转换器。绿色模块已映射到低漏电库。
2. 设计流程
UPF 流程的一大优势是所有功耗意图信息可以放在单独的文件中,而不需要被添加到功能 RTL 源代码中。这保持了流程的独立性,更易于维护。
UPF 语言的模块化特性允许在设计流程中逐步添加所需的信息。
设计流程中使用的工具和 UPF 信息总结如下:
仿真阶段 — Mentor QuestaSim UPF 内容:电源开关、电源域、隔离/电平转换策略
综合阶段 — Synopsys Design Compiler / Test Compiler UPF 内容:电源域、隔离/电平转换策略、隔离/电平转换单元的映射
布局布线阶段 — Cadence Encounter 逻辑等效检查 — Cadence Conformal, Conformal Power CPF 内容:从 UPF 转换而来、电源域、隔离/电平转换策略、隔离/电平转换单元映射、PG 引脚连接
3. 功耗意图描述
功耗管理单元提供所有所需的控制信号,分别用于正确的上电或下电时序:
- power switch on (pu) — 电源开关使能
- reset (rst_n) — 复位信号
- isolation (iso_n) — 隔离使能
- power up ctrl (pu_ctrl) — 上电控制
这些信号对于每个电源域都是必需的,并在 UPF 脚本中被引用为隔离策略或电源开关的控制信号(见下方代码示例)。
下图展示了 "digi" 模块的简化结构,该模块是后端流程的顶层。
对于每个电源域,必须定义电源和地网络。为保持示例简洁,以下仅列出自顶向下到 PD_mcu 的电源/地定义:
######################################################################
创建默认电源域
######################################################################
create_power_domain PD_always_on
在此域中创建抽象电源和地端口及网络
create_supply_port vddd -domain PD_always_on
create_supply_port vdig_mcu -domain PD_always_on
create_supply_port vssd -domain PD_always_on
create_supply_net vddd -domain PD_always_on
create_supply_net vdig_mcu -domain PD_always_on
create_supply_net vssd -domain PD_always_on
connect_supply_net vddd -ports { vddd }
connect_supply_net vdig_mcu -ports { vdig_mcu }
connect_supply_net vssd -ports { vssd }
######################################################################
定义电源域 MCU
######################################################################
将物理层次分配给电源域
create_power_domain PD_mcu -elements { core0/mcu0/core0 }
在此域中创建抽象电源和地网络
create_supply_net vdig_mcu -domain PD_mcu -reuse
create_supply_net vddd -domain PD_mcu -reuse
create_supply_net vssd -domain PD_mcu -reuse
-> 创建电源网络并将其连接到 PD_always_on 域
定义主电源/地网络(在布局中连接到标准单元轨线)
set_domain_supply_net PD_mcu -primary_power_net vdig_mcu \
-primary_ground_net vssd
接下来为每个单独的电源域定义隔离策略和(如有必要)电平转换器策略:
######################################################################
隔离策略
######################################################################
输出隔离策略
set_isolation ISO_PD_mcu_outputs \
-domain PD_mcu \
-isolation_power_net vddd \
-isolation_ground_net vssd \
-clamp_value 0 \
-applies_to outputs
-> 所有输出在电源关断时被钳位为 0
set_isolation_control ISO_PD_mcu_outputs \
-domain PD_mcu \
-isolation_signal core0/mcu0/core0/iso_n_mcu \
-isolation_sense low \
-location self
-> 控制信号被分配,隔离单元放置在 PD_mcu 电源域内
######################################################################
电平转换器策略
######################################################################
set_level_shifter LS_PD_mcu_outputs \
-domain PD_mcu \
-threshold 0.1 \
-rule low_to_high \
-location self \
-applies_to outputs
-> 对于连接到供电电压至少高 0.1V 的电源域的每个输出信号,
插入一个电平转换器。电平转换器放置在 PD_mcu 域中。
set_level_shifter LS_PD_mcu_inputs \
-domain PD_mcu \
-threshold 3.0 \
-rule high_to_low \
-location self \
-applies_to inputs
-> 防止在输入端插入电平转换器:永远达不到阈值。
低电压库可以处理来自高电压域的信号。
4. 仿真(Mentor QuestaSim)
电源/地开关位于模拟部分,而非 digi 层次内部。为了在仿真环境中对电源/地开关进行建模,引入了一个额外的层次 TopDigital。电源开关的 UPF 定义应用于新的层次级别。
使用 scope 参数,digi 的 UPF 文件可以直接分配给 TopDigital 中的实例 digi0,而不需要修改:
load_upf digi.upf -scope digi0
开关的定义以 sw_mcu 和 sw_lcdd 为例。开关在 PD_always_on_top 域内生成,开关引脚连接到相关的电源和控制信号。导通和关断状态根据控制信号定义开关输出的值:
create_power_switch mcu_sw -domain PD_always_on_top \
-input_supply_port { vdd vdig_sim } \
-output_supply_port { vddo vdig_mcu } \
-control_port { pu pu_vreg_dig } \
-on_state { on_mcu vdd { pu } } \
-off_state { off_mcu { ! pu } }
create_power_switch lcdd_sw -domain PD_always_on_top \
-input_supply_port { vssd vssd_sim } \
-output_supply_port { gnd gnd_lcdd_sim } \
-control_port { pu pu_lcdd } \
-on_state { on_lcdd vssd { pu } } \
-off_state { off_lcdd { ! pu } }
UPF 定义在编译期间被检查,即优化过程,并生成相关的可行性报告。
在仿真期间,隔离策略被直接验证。电源关断域的输 出遵循定义的隔离策略。如果缺少隔离定义,输出将被设置为未定义,并且很可能破坏已上电的模块。断言监测功耗意图规范。
5. 库
对于 UPF/CPF 流程,工艺库需要包含电源/地引脚(PGPin)信息。PGPin 定义可以直接放在 .lib 文件中,也可以使用 Synopsys DC 的 add_pg_pin_to_lib 命令添加到现有的 .lib 文件中。
根据定义的隔离/电平转换器策略,必须提供额外的单元。对于此设计,需要三种单元: - 钳位值为 0 的输出隔离单元 - 钳位值为 1 的输出隔离单元 - 钳位值为 0 的低到高使能电平转换器
隔离单元的位置定义为 "self"。这意味着单元放置在分配的电源域内,这与电源规划策略最为匹配。
6. 综合(Synopsys Design Compiler / Test Compiler)
整个实现流程在 "digi" 级别执行。仿真中使用的相同 UPF 文件在综合期间也被加载。
Design-Vision 中的 "Visual UPF..." 功能在综合期间分析和调试 UPF 脚本方面提供了相当大的帮助。
由于这是一个多电源和多电压设计,约束的复杂性超出了一般项目的水平。迄今为止未知的结构——例如基于实例的目标指定、为电源端口定义操作电压、或者映射隔离和电平转换器单元,等等——都必须应用。
通常使用的流程是层次化自底向上流程,即在核心级编译、插入 DFT,最后编译顶层层次。这也是本项目最初采用的设置。但不幸的是,UPF、多个库和基于实例的目标指定使得事情不必要地复杂化了。特别是约束的特征化和传播没有按预期工作。
经过与 Synopsys 的多次讨论,决定尝试推荐用于"小型"数字设计的流程,即自顶向下流程。所有约束和功耗意图定义在顶层 "digi" 级别应用。在进行顶层编译之前,必须单独编译测试多路复用器,以防止优化过程移除扫描信号周围的逻辑。由于多库映射,时钟门控策略也必须以实例特定的方式定义。所需的电平转换器和隔离单元在顶层编译期间被插入。之后,使用 Test Compiler 插入 DFT 结构。DFT 配置允许混合电源域和电压,但应考虑复用多电压单元。
除 DFT 插入方面的一些小问题外,自顶向下流程运行得更加顺畅,大约快三倍,并且在面积方面给出了更好的结果。
低功耗流程需要额外的定义:
1. 为 UPF 中定义的电源端口和网络分配操作电压:
set_voltage 2.0 -min 3.4 -object_list { vddd }
set_voltage 1.25 -min 1.35 -object_list { vdig_mcu }
set_voltage 0.0 -object_list { vssd gnd_mem gnd_comd \
gnd_comf gnd_wuc gnd_rtc gnd_lcdd }
2. 隔离单元的映射必须手动完成:
map_isolation_cell ISO_PD_lcd_outputs -domain PD_lcd -lib_cells ISO_LS_3B
map_isolation_cell ISO_PD_rtc_outputs -domain PD_rtc -lib_cells ISO_LS_3B
map_isolation_cell ISO_PD_wuc_outputs -domain PD_wuc -lib_cells ISO_LS_3B
map_isolation_cell ISO_PD_mem_outputs_low -domain PD_mem -lib_cells ISO_LS_3B
map_isolation_cell ISO_PD_mem_outputs_high -domain PD_mem -lib_cells ISO_HS_3B
map_isolation_cell ISO_PD_mcu_outputs -domain PD_mcu -lib_cells LSHIFT_ISO_LP_3B
多次尝试未能"说服" DC 自动匹配库中可用的隔离和电平转换器单元。
3. 为获得准确的结果,需要为最小时序分析引用替代库:
set_min_library c35_CORELIB_3B_worst_1V25.db -min_version c35_CORELIB_3B_best_1V35.db
set_min_library c35_CORELIB_3B_worst_2V.db -min_version c35_CORELIB_3B_best_3V4.db
:
set_min_library c35_ISOLATION_3B_worst_2V.db -min_version c35_ISOLATION_3B_best_3V4.db
set_min_library c35_LVLSHIFT_3B_worst_2V.db -min_version c35_LVLSHIFT_3B_best_3V4.db
4. 基于实例的目标指定用于将不同的工艺库分配给相关模块(颜色参见图1):
set_target_library_subset "c35_CORELIB_LP_3B_worst_2V.db \
c35_ISOLATION_3B_worst_2V.db \
c35_LVLSHIFT_3B_worst_2V.db" -top
set_target_library_subset "c35_CORELIB_3B_worst_2V.db \
c35_ISOLATION_3B_worst_2V.db \
c35_LVLSHIFT_3B_worst_2V.db" -object [list core0/com0/comd0 \
core0/lcd0 \
core0/wuc0 \
core0/ssi0 \
core0/mcu0/mem0]
set_target_library_subset "c35_CORELIB_3B_worst_1V25.db \
c35_ISOLATION_3B_worst_1V25.db \
c35_LVLSHIFT_3B_worst_2V.db" \
-object [list core0/mcu0/core0]
设置所有约束后,check_mv_design 命令报告了多电压设计违例。
电平转换器和隔离单元最终被正确插入。不幸的是,优化过程不会移除由常量驱动的电平转换器和隔离单元。它们必须手动移除。这个问题应在未来的版本中得到解决。
7. 布局布线(Cadence Encounter)
由于 Cadence 的后端工具(即 Encounter 和 Conformal)不支持 UPF,功耗意图描述必须以某种方式转换为 CPF。
一般来说,这种转换可以通过 Conformal 的低功耗功能来完成。然而,在实践中它并不那么简单,绝对不是一键操作。问题可能源于 UPF 中的某个结构在 CPF 中没有对应项,反之亦然。此外,CPF 需要更多与后端相关的信息,而这些信息在 UPF 功耗意图描述中根本不可用。
出于这些原因,CPF 是从零开始构建的,并且必须与 UPF 文件并行维护。
在用于布局的 CPF 中,必须添加 PGPin 与虚拟电源网络的物理连接:
# PD_mcu
create_global_connection -domain PD_mcu -net vdig -pins {vdd}
create_global_connection -domain PD_mcu -net vdig -pins {VDDL}
create_global_connection -domain PD_mcu -net vddd -pins {VDDH}
create_global_connection -domain PD_mcu -net vssd -pins {gnd}
create_global_connection -domain PD_mcu -net vssd -pins {GND}
create_global_connection -domain PD_mcu -net vsub -pins {vsub}
PD_always_on
create_global_connection -domain PD_always_on -net vddd -pins {vdd}
create_global_connection -domain PD_always_on -net vssd -pins {gnd}
create_global_connection -domain PD_always_on -net vsub -pins {vsub}
PD_mem
create_global_connection -domain PD_mem -net vddd -pins {vdd}
create_global_connection -domain PD_mem -net gnd_mem -pins {gnd}
create_global_connection -domain PD_mem -net vssd -pins {vss}
create_global_connection -domain PD_mem -net vsub -pins {vsub}
有了这些信息,隔离单元和电平转换器被正确地放置在分配电源域的标准单元行中,电源布线成功完成。
电源域 PD_mcu 的说明: - 主电源:vdig - 辅助电源:vddd - 地:vssd
使能电平转换器有两个标准单元高度,并额外连接到辅助电源(vddd)。
8. 结论
尽管存在一些小问题,UPF 流程最终运行得相当好。知识积累、定义和实现新的库单元以及意外的工具特性结合起来,偶尔使其比预期更困难一些。
我们流程中的主要缺点是 UPF 和 CPF 的不兼容性。由于无法进行自动转换,必须维护两套脚本。
尽管如此,UPF/CPF 流程使工作变得更容易。
9. 参考文献
[1] Synopsys Low-Power Flow User Guide Version D-2010.03.
[2] Cadence Common Power Format Reference
[3] Mentor Questa Power Aware User2User 2009, Abdelouahab Ayari
10. 附录
不同电源域的定义非常相似。出于这一原因,脚本的部分内容被移除并用 ":" 替代,以表示相同的定义也用于其他电源域。
UPF
TopDigital 的 UPF(用于仿真):
# 用于仿真
set_design_top TopDigital
######################################################################
为 digi 定义电源域
######################################################################
load_upf ./upf_cpf/digi_top_down/digi.upf -scope digi0
######################################################################
电源域 always on top
######################################################################
create_power_domain PD_always_on_top
在此域中创建抽象电源和地端口及网络
create_supply_port vddd_sim -domain PD_always_on_top
create_supply_port vssd_sim -domain PD_always_on_top
create_supply_port vdig_sim -domain PD_always_on_top
create_supply_net vddd_sim -domain PD_always_on_top
create_supply_net vdig_sim -domain PD_always_on_top
create_supply_net vdig_mcu_sim -domain PD_always_on_top
create_supply_net vssd_sim -domain PD_always_on_top
create_supply_net gnd_mem_sim -domain PD_always_on_top
:
create_supply_net gnd_lcdd_sim -domain PD_always_on_top
connect_supply_net vddd_sim -ports { vddd_sim digi0/vddd }
connect_supply_net vdig_mcu_sim -ports { digi0/vdig_mcu }
connect_supply_net vssd_sim -ports { vssd_sim digi0/vssd }
connect_supply_net gnd_mem_sim -ports { digi0/gnd_mem }
:
connect_supply_net gnd_rtc_sim -ports { digi0/gnd_rtc }
connect_supply_net gnd_lcdd_sim -ports { digi0/gnd_lcdd }
将电源和地端口分配给电源域
set_domain_supply_net PD_always_on_top -primary_power_net vddd_sim \
-primary_ground_net vssd_sim
######################################################################
电源开关
######################################################################
load_upf ./upf_cpf/power_switches.upf
digi 的 UPF(在 TopDigital 中加载用于仿真,或直接分配用于综合):
######################################################################
电源域 always on
######################################################################
create_power_domain PD_always_on
在此域中创建抽象电源和地端口及网络
create_supply_port vddd -domain PD_always_on
create_supply_port vdig_mcu -domain PD_always_on
create_supply_port vssd -domain PD_always_on
create_supply_port gnd_mem -domain PD_always_on
:
create_supply_port gnd_rtc -domain PD_always_on
create_supply_port gnd_lcdd -domain PD_always_on
create_supply_net vddd -domain PD_always_on
create_supply_net vdig_mcu -domain PD_always_on
create_supply_net vssd -domain PD_always_on
create_supply_net gnd_mem -domain PD_always_on
:
create_supply_net gnd_rtc -domain PD_always_on
create_supply_net gnd_lcdd -domain PD_always_on
connect_supply_net vddd -ports { vddd }
connect_supply_net vdig_mcu -ports { vdig_mcu }
connect_supply_net vssd -ports { vssd }
connect_supply_net gnd_mem -ports { gnd_mem }
:
connect_supply_net gnd_rtc -ports { gnd_rtc }
connect_supply_net gnd_lcdd -ports { gnd_lcdd }
将电源和地端口分配给电源域
set_domain_supply_net PD_always_on -primary_power_net vddd \
-primary_ground_net vssd
######################################################################
为子模块定义电源域
######################################################################
load_upf ./upf_cpf/digi_top_down/lcd.upf
load_upf ./upf_cpf/digi_top_down/rtc.upf
:
load_upf ./upf_cpf/digi_top_down/mem.upf
load_upf ./upf_cpf/digi_top_down/mcu.upf
MCU 电源域的 UPF 定义(在 digi 中加载):
######################################################################
定义电源域 MCU
######################################################################
create_power_domain PD_mcu -elements { core0/mcu0/core0 }
在此域中创建抽象电源和地网络
create_supply_net vdig_mcu -domain PD_mcu -reuse
create_supply_net vddd -domain PD_mcu -reuse
create_supply_net vssd -domain PD_mcu -reuse
将电源和地端口分配给电源域
set_domain_supply_net PD_mcu -primary_power_net vdig_mcu \
-primary_ground_net vssd
######################################################################
隔离策略
######################################################################
set_isolation ISO_PD_mcu_outputs \
-domain PD_mcu \
-isolation_power_net vddd \
-isolation_ground_net vssd \
-clamp_value 0 \
-applies_to outputs
set_isolation_control ISO_PD_mcu_outputs \
-domain PD_mcu \
-isolation_signal core0/mcu0/core0/iso_n_mcu \
-isolation_sense low \
-location self
######################################################################
电平转换器策略
######################################################################
set_level_shifter LS_PD_mcu_outputs \
-domain PD_mcu \
-threshold 0.1 \
-rule low_to_high \
-location self \
-applies_to outputs
set_level_shifter LS_PD_mcu_inputs \
-domain PD_mcu \
-threshold 3.0 \
-rule high_to_low \
-location self \
-applies_to inputs \
-no_shift
TopDigital 电源开关的 UPF:
create_power_switch lcdd_sw -domain PD_always_on_top \
-input_supply_port { vssd vssd_sim } \
-output_supply_port { gnd gnd_lcdd_sim } \
-control_port { pu pu_lcdd } \
-on_state { on_lcdd vssd { pu } } \
-off_state { off_lcdd { ! pu } }
create_power_switch rtc_sw -domain PD_always_on_top \
-input_supply_port { vssd vssd_sim } \
-output_supply_port { gnd gnd_rtc_sim } \
-control_port { pu pu_rtc } \
-on_state { on_rtc vssd { pu } } \
-off_state { off_rtc { ! pu } }
:
create_power_switch mem_sw -domain PD_always_on_top \
-input_supply_port { vssd vssd_sim } \
-output_supply_port { gnd gnd_mem_sim } \
-control_port { pu pu_mem } \
-on_state { on_mem vssd { pu } } \
-off_state { off_mem { ! pu } }
create_power_switch mcu_sw -domain PD_always_on_top \
-input_supply_port { vdd vdig_sim } \
-output_supply_port { vddo vdig_mcu_sim } \
-control_port { pu pu_vreg_dig } \
-on_state { on_mcu vdd { pu } } \
-off_state { off_mcu { ! pu } }
CPF
digi 的 CPF:
####################################################################################
顶层设计
#####################################################################################
set_design digi
电源网络
create_power_nets -nets { vddd } -voltage { 2.0:3.4:1.4 }
create_power_nets -nets { vdig } -voltage { 1.25:1.35:0.1 } \
-external_shutoff_condition { pu_vreg_dig }
地网络
create_ground_nets -nets { vssd }
create_ground_nets -nets { vsub }
开关地网络
create_ground_nets -nets { gnd_wuc } -external_shutoff_condition { pu_wuc }
:
create_ground_nets -nets { gnd_rtc } -external_shutoff_condition { pu_rtc }
create_ground_nets -nets { gnd_lcd } -external_shutoff_condition { pu_lcd }
create_ground_nets -nets { gnd_mem } -external_shutoff_condition { pu_mem }
####################################################################################
创建电源域
####################################################################################
create_power_domain -name PD_always_on -default
create_power_domain -name PD_lcdd -instances { core0/lcd0 } \
-external_controlled_shutoff \
-shutoff_condition { pu_lcd }
create_power_domain -name PD_rtc -instances { core0/sys0/rtc0 } \
-external_controlled_shutoff \
-shutoff_condition { pu_rtc }
:
create_power_domain -name PD_mem -instances { core0/mcu0/mem0 } \
-external_controlled_shutoff \
-shutoff_condition { pu_mem }
create_power_domain -name PD_mcu -instances { core0/mcu0/core0 } \
-external_controlled_shutoff \
-shutoff_condition { pu_vreg_dig }
#####################################################################################
创建规则
#####################################################################################
create_isolation_rule -name ISO_PD_lcd_outputs \
-isolation_target from \
-isolation_condition { core0/lcd0/iso_n_lcdd } \
-from PD_lcdd \
-isolation_output low
create_isolation_rule -name ISO_PD_rtc_outputs \
-isolation_target from \
-isolation_condition { core0/sys0/rtc0/iso_n_rtc } \
-from PD_rtc \
-isolation_output low
create_isolation_rule -name ISO_PD_mem_outputs_low \
-isolation_target from \
-isolation_condition { core0/mcu0/mem0/iso_n_mem } \
-from PD_mem \
-isolation_output low \
-exclude {core0/mcu0/mem0/hreadyout_eeprom
core0/mcu0/mem0/hreadyout_ram}
create_isolation_rule -name ISO_PD_mem_outputs_high \
-isolation_target from \
-isolation_condition { core0/mcu0/mem0/iso_n_mem } \
-from PD_mem \
-isolation_output high \
-pins {core0/mcu0/mem0/hreadyout_eeprom
core0/mcu0/mem0/hreadyout_ram}
create_isolation_rule -name ISO_PD_mcu_outputs \
-isolation_target from \
-isolation_condition { core0/mcu0/core0/iso_n_mcu } \
-from PD_mcu \
-isolation_output low
:
create_level_shifter_rule -name SHIFT_PD_mcu_outputs \
-from PD_mcu
update_isolation_rules -names ISO_PD_lcd_outputs -location from
update_isolation_rules -names ISO_PD_rtc_outputs -location from
:
update_isolation_rules -names ISO_PD_mem_outputs_low -location from
update_isolation_rules -names ISO_PD_mcu_outputs -location from
update_level_shifter_rules -names SHIFT_PD_mcu_outputs -location from
#####################################################################################
更新域/模式
#####################################################################################
update_power_domain -name PD_mcu -primary_ground_net vssd -primary_power_net vdig
update_power_domain -name PD_always_on -primary_ground_net vssd -primary_power_net vddd
:
update_power_domain -name PD_mem -primary_ground_net gnd_mem -primary_power_net vddd
update_power_domain -name PD_lcdd -primary_ground_net gnd_lcd -primary_power_net vddd
update_power_domain -name PD_rtc -primary_ground_net gnd_rtc -primary_power_net vddd
#####################################################################################
全局连接
#####################################################################################
PD_mcu
create_global_connection -domain PD_mcu -net vdig -pins {vdd}
create_global_connection -domain PD_mcu -net vdig -pins {VDDL}
create_global_connection -domain PD_mcu -net vddd -pins {VDDH}
create_global_connection -domain PD_mcu -net vssd -pins {gnd}
create_global_connection -domain PD_mcu -net vssd -pins {GND}
create_global_connection -domain PD_mcu -net vsub -pins {vsub}
PD_always_on
create_global_connection -domain PD_always_on -net vddd -pins {vdd}
create_global_connection -domain PD_always_on -net vssd -pins {gnd}
create_global_connection -domain PD_always_on -net vsub -pins {vsub}
:
PD_mem
create_global_connection -domain PD_mem -net vddd -pins {vdd}
create_global_connection -domain PD_mem -net gnd_mem -pins {gnd}
create_global_connection -domain PD_mem -net vssd -pins {vss}
create_global_connection -domain PD_mem -net vsub -pins {vsub}
PD_lcdd
create_global_connection -domain PD_lcdd -net vddd -pins {vdd}
create_global_connection -domain PD_lcdd -net gnd_lcd -pins {gnd}
create_global_connection -domain PD_lcdd -net vssd -pins {vss}
create_global_connection -domain PD_lcdd -net vsub -pins {vsub}
PD_rtc
create_global_connection -domain PD_rtc -net vddd -pins {vdd}
create_global_connection -domain PD_rtc -net gnd_rtc -pins {gnd}
create_global_connection -domain PD_rtc -net vssd -pins {vss}
create_global_connection -domain PD_rtc -net vsub -pins {vsub}
end_design
核心概念
| 概念 | 说明 |
| UPF 统一功耗格式 | IEEE 1801 标准,描述芯片功耗管理意图 |
| CPF 通用功耗格式 | Si2 组织的功耗格式标准,Cadence 后端工具使用 |
| 电源门控 Power Gating | 通过关断电源消除漏电功耗 |
| 多电压设计 Multi-Voltage | 不同模块使用不同供电电压以优化功耗 |
| 电平转换器 Level Shifter | 在不同电压域之间转换信号电平 |
| 隔离单元 Isolation Cell | 电源关断时将输出钳位到安全逻辑值 |
EDA 工具
| 工具 | 角色 |
| Design Compiler | Synopsys 综合工具,UPF 驱动的自动单元插入 |
| Test Compiler | Synopsys DFT 插入工具 |
| Mentor QuestaSim | 支持 UPF 的仿真器 |
| Cadence Encounter | 布局布线工具,使用 CPF 格式 |
| Conformal LEC | Cadence 逻辑等效检查和 UPF→CPF 转换 |
相关链接
- UPF 统一功耗格式 · CPF 通用功耗格式 · 低功耗设计 Low Power Design - 电平转换器 Level Shifter · 隔离单元 Isolation Cell · 电源门控 Power Gating - austriamicrosystems