SALT 技术演示项目为测试本书中描述的电源门控和状态保持方法提供了一个平台。在本章中,我们将详细介绍该项目的系统设计和 RTL 代码。
SALT 芯片采用 90nm 通用技术实现,包含一个 ARM 处理器、一个 AMBA 总线和一组外设,以及一个 Synopsys USB OTG 数字内核和 PHY。ARM 内核和 USB 内核是独立的电源门控。ARM 内核使用全状态保留;USB 使用部分状态保留。ARM 内核和 USB 都使用Header开关的交换结构;因此,它们切换 VDD 并使用公共接地 (VSS)。
在第一部分中,我们描述了处理器的电源门控设计。图 7-1 显示了 SALT 芯片的简化框图。
支持的泄漏模式
大多数基于电池供电的处理器的设计都必须谨慎处理性能(以支持产品功能)和低功耗(以支持较长的电池寿命)之间的平衡。性能要求引导我们采用性能更高、泄漏更多的工艺。为了保持较长的电池寿命,我们需要提供积极的泄漏电流管理。
对于SALT 项目,处理器使用四种低功耗模式。在所有模式下,电源控制器产生一个 SLEEP 信号进入低功耗模式, WAKE 信号退出。这些模式是:
• HALT:SLEEP 关闭处理器时钟,WAKE 重新启动时钟。电源保持开启。
• SNOOZE:SLEEP 启动电源门控并保持状态;处理器本身的电源关闭,但高速缓存保持通电。WAKE 启动上电和恢复序列;在安全允许的情况下,以最快的速度启动电源。
• HIBERNATE: SLEEP 启动一系列扫描将处理器的内部状态传递到外部存储器;然后关闭 VDDCPU 电源轨。WAKE 使电源轨重新打开,扫描链用于恢复处理器的内部状态。32 位基于 AMBA 的总线用于写入和读取外部存储器。32 位 CRC 提供完整性检查。CRC 与扫描数据一起保存,用于免于在损坏状态下重新启动。请注意,VDDCPU 为处理器逻辑而非缓存供电。所以在 HIBERNATE 模式下,只有处理器断电;高速缓存保持通电状态。
• SHUTDOWN: SLEEP 启动与休眠中相同的断电序列,但现在处理器和缓存都关闭了它们的外部电源。在 VDDCPU 和 VDDRAM 电源都可以进行电源轨切换之前,必须调用显式代码来写回高速缓存存储器中的任何脏数据。此模式是唯一对操作系统不透明的模式。
除了这些模式之外,SALT 芯片还通过外部管理的阈值缩放来减少主动泄漏。这种阈值缩放是使用反向偏置控制完成的。CPU 标准单元区域的 P 阱和 N 阱都引到芯片的引脚上。这使得能够在偏置变化时对延迟和泄漏功率特性进行实验分析。
使用这种阱偏置方案,我们定义了三种操作模式:
• NORMAL:标准阱偏置
• TURBO-RUN :阱正向偏置以提高速度
• POWERSAVER-RUN :阱反向偏置以减少泄漏
电源控制器旨在确保仅在设计处于静态和非时钟状态时才改变阱偏置电压。图 7-2 显示了电源模式的状态图。
设计分区
RTL 设计被分区以允许三个主要电源域映射到 RTL 设计中:
• VDDSOC 是“始终开启”的电源,为除处理器及其缓存之外的整个芯片供电。
• VDDRAM 是为高速缓存和 MMU RAM 供电的外部开关电源轨。
• VDDCPU 是一个外部开关电源轨,为 CPU 标准单元区域供电。
VDDSOC 为 PLL 的数字侧、时钟发生器和电源管理控制块以及所有实时外设供电。这些外设包括实时时钟和定时器;这些可以生成唤醒事件作为其中断服务请求的一部分。
VDDSOC 还为 USB OTG 子系统供电。USB 通过其自己的电源开关结构使用单独的电源控制器进行电源门控。
为缓存使用单独的电源 (VDRAM) 可实现多个目标:它允许 CPU 断电,同时保持缓存供电,从而实现更快的恢复。它允许 CPU 和缓存断电,同时保持芯片外围设备通电。这些外设控制 CPU 的唤醒—在检测到中断时,中断控制器向电源控制器发出信号以启动 CPU。最后,使用单独的高速缓存电源可以开发详细的泄漏和动态功耗曲线,以便我们可以确定高速缓存的最低工作电压和确保高速缓存在 CPU 关闭期间保留内容的最低电压.
同样,为 CPU 逻辑使用单独的电源 (VDDCPU) 可以测量详细的泄漏时间和动态功耗曲线,以及进入和退出每个省电状态的时间和能量成本。图 7-3 显示了 SALT 芯片的分区。
从最初的 SALT 设计开始,重新实现了 CPU 子系统以提高设计的重用性。总线接口单元和电源门控控制器现在集成到 CPU 内的“VDDSOC”区域中。这种集成显着减少了 SoC 设计团队在将 ARM 内核集成到芯片中时必须处理的信号和模块的数量。
虽然这使得存在3个电源轨的 CPU 子系统的实现稍微复杂一些,但时序和内部电源门控和隔离接口现在都从顶层 SOC 设计中抽象出来。IP 模块支持的低功耗状态的任何更改或增强都与顶层系统设计无关。
图 7-4 显示了重新分区的 CPU 子系统。
CPU 电源门控控制系统管理:
• 用于休眠和关闭模式的外部电源接口
• 总线-用于休眠模式保存和恢复的同步扫描时钟脉冲。
•休眠模式的本地Header开关电源门控
•休眠模式的隔离和状态保持
• 与系统时钟发生器的握手以切换不同运行模式的 CPU 时钟频率
SALT 项目的目标之一是开发一种方法支持广泛的库组件和电流的涌入管理技术。为此,CPU 电源控制器对每个控制信号使用请求-确认握手:电源门控、隔离、保存、恢复和复位。
所有确认信号都被视为与控制器时钟异步,并具有与状态机时钟域的本地同步器。
这种方法确保设计没有本地编码延迟或计数。它还允许将确认信号直接绑定到某些实现的请求或构建为真正的握手。在当前的 SALT 实现中,隔离、保存和恢复以及复位的确认都与它们各自的请求相关联;在实现时,这些功能都非常快,无需延迟排序。
Header开关的电源门控控制使用真正的确认。断电请求通过Header开关以链形式连接,因此返回控制器的确认具有相当于整个结构的切换时间的延迟。
一些额外的设计注意事项:
•复位后,初始化(上电复位)序列脉冲保存/恢复信号以从辅助保持触发器中清除任何 X。在门级网表上运行功能测试程序或向量时,这可能很有用。
• 所有与时序相关的状态机转换都包含一个保持项,它等待在该状态下的有效输出得到确认,以维持与时序无关的请求/确认排序
• 电源门控有效和取消使用请求-确认握手。
• 在 SALT 项目中,有额外的控制输入来控制开关结构,允许软排序或强制完全打开和关闭电源门控,并且只有电源门控的确认输入用于状态机确定何时电源已安全恢复。