第三章LPV 低功耗验证

概述

低功耗验证App 验证 UPF(Unified Power Format)文件所描述的电源管理行为是否被正确实现。

电源格式说明:平台用户指南在 LPV App 一节写明该 App「supports the standard UPF and CPF power intent specification formats」(jaspergold_apps_userguide.pdf 第 36 页)。不过 LPV 专用用户指南与命令参考中只有 UPF 流程——加载命令是 check_lpv -load_upf,支持 -upf_version 取值 1.02.02.1,文档并明确指出 JasperGold Apps 不支持 UPF 3.0。本章后续内容因此全部按 UPF 讲解;CPF 在这套文档里没有对应的加载命令或示例。

LPV Use Models

LPV 工作流程

  1. 加载 RTL 设计和 UPF 文件
  2. 生成电源设计(Power Design)
  3. 运行各项结构检查
  4. 创建并证明电源断言/覆盖点

加载 UPF 并生成 Power Design

这是驱动整个 LPV 流程的两条核心命令:

# 加载 UPF 文件
check_lpv -load_upf top.upf

# 生成电源设计
check_lpv -generate_power_design

-load_upf 的可选项包括 -upf_version (1.0 | 2.0 | 2.1)-scope instance_path-allow_unescaped_bus_index

构建 Power Model

UPF 所描述的电源意图(power intent),按文档定义包含以下内容:

几个容易混淆的相关术语:

结构检查(Structural Checks)

结构检查不是一条笼统的命令,而是通过 check_lpv -verify <检查名> 逐项运行的。官方示例中的完整序列:

check_lpv -verify check_iso_clk_all
check_lpv -verify check_iso_inputs
check_lpv -verify check_iso_outputs
check_lpv -verify check_iso_ctrl_rst
check_lpv -verify check_iso_connections
check_lpv -verify check_ret_connections
check_lpv -verify check_iso_default_value
check_lpv -verify check_ret_ctrl_rst
check_lpv -verify check_power_switch_connections
check_lpv -verify check_power_switch_ctrl_rst

几项典型检查的含义:

电平转换器(level shifter)的价值在于:文档指出只有结构验证才能发现某些错误,例如缺失的电平转换器

Auto-Assertions / Auto-Covers

断言和覆盖点用 check_lpv -create <名称> 创建。官方示例中的序列:

# 隔离相关断言
check_lpv -create assert_iso_up_before
check_lpv -create assert_iso_supply
check_lpv -create assert_iso_up_after
check_lpv -create assert_iso_up_clk_stable
check_lpv -create assert_iso_change_signal_stable

# 保持(retention)相关断言
check_lpv -create assert_clock_stable_after_restore
check_lpv -create assert_ret_supply_on_save
check_lpv -create assert_ret_supply_on_restore
check_lpv -create assert_ret_supply_on_from_save_to_restore

# 覆盖点
check_lpv -create cover_power_switch_ctrl
check_lpv -create cover_iso_ctrl
check_lpv -create cover_ret_save_ctrl

# 证明
prove -all

其他可创建的项还包括 assert_allcover_allcover_pst_statesassert_supply_onehotassert_ret_no_save_on_restoreassert_pd_supply_change_clk_stableassert_rst_non_ret_flops 等。

LPV 低功耗验证界面

低功耗验证方法论

为什么低功耗需要形式验证

低功耗设计使用 UPF(Unified Power Format)描述电源意图:哪些域可以关断、隔离单元的位置、保持寄存器的策略。UPF 相关 bug 包括:

这些 bug 在仿真中很难触发(需要精确的电源状态转换序列),但形式验证可以穷举所有电源状态转换来检查。

三类验证的能力边界

LPV 的验证分为结构(Structural)、电源复位(Power Reset)、电源属性(Power Properties)三类。文档强调的重点不是"哪类更强",而是三者各有独占的发现能力,必须配合使用

类型文档给出的能力边界
三类验证都能发现许多低功耗错误,例如缺失的隔离单元(missing isolation cell)
结构验证只有结构验证能发现某些错误,例如缺失的电平转换器(missing level shifter)
电源复位验证 / 电源属性验证只有这两类能发现另一些错误。文档给出的例子:结构检查无法发现"隔离钳位为高而非为低",但电源复位验证可以
LPV App 会根据设计结构与行为、电源意图(power intent)和低功耗设计准则,自动创建 power-aware RTL 和一组检查;随后由 JasperGold 的穷尽证明技术针对所有可能的输入组合评估这些低功耗检查,以确认 DUV 的完整性。

常见错误模式

来源文档

  • jaspergold_lpv_userguide.pdf
  • example_jaspergold_apps/LPV/