3. 多路电源系统架构
在多路电源时序自动化验证中,理解系统架构是设计测试用例的前提。一个典型的嵌入式或SoC系统,其供电网络并非简单的“电池—芯片”两点连接,而是由PMIC、LDO、DC-DC、负载开关等器件构成的多级拓扑,并按功能划分为多个电源域。只有先看清“谁给谁供电、谁控制谁、谁先谁后”,才能准确编排时序验证的激励与观测点。
核心器件与角色分工
多路电源系统的核心器件各有明确职责,理解它们的差异是划分电源域的基础。
- PMIC(电源管理集成电路):系统的供电中枢,通常集成多路DC-DC和LDO,并内置上电时序控制、电压监测、I²C/SPI配置接口。它决定各路输出的默认电压、启动顺序和使能关系,是时序验证的首要控制对象。
- DC-DC转换器:用于高效率、大电流场景,如CPU核心、DDR、GPU等主电源轨。其输出纹波较大但效率高,常需要外部电感电容,启动时间受软启动电路影响。
- LDO(低压差线性稳压器):用于低噪声、小电流场景,如PLL、ADC基准、射频、传感器等模拟电源。其响应快、噪声低,但效率随压差增大而下降,常作为DC-DC的后级或独立小电源轨。
- 负载开关:用于电源域的动态通断,如外设、USB、摄像头模组的供电控制。它本身不调压,只负责在使能信号有效时把已存在的电源轨接通到负载,是时序中“最后一级”的常见对象。
电源域划分与典型供电拓扑
电源域(Power Domain)是按供电来源、电压等级、开关控制关系划分的逻辑分组。同一电源域内的负载通常共享同一路电源轨或同一使能控制,因此它们的上电、掉电行为具有一致性。典型划分包括:
- 常开域(Always-On):由PMIC的常开LDO或直接电池供电,如RTC、PMU逻辑、唤醒电路,系统上电即存在,不参与时序关断。
- 核心域(Core Domain):由DC-DC供电,如CPU、GPU、NPU核心,电压可动态调节,启动顺序通常靠前。
- 存储域(Memory Domain):DDR、Flash等,通常由独立DC-DC或PMIC通道供电,对电压精度和上电顺序有严格要求。
- 模拟域(Analog Domain):PLL、ADC、射频等,由LDO供电,要求低噪声,常在上电时序中靠后或与核心域同步。
- 外设域(Peripheral Domain):USB、SD卡、摄像头、传感器等,通过负载开关控制,按需上电,时序灵活但需避免倒灌。
这些电源域通过PMIC的使能引脚、GPIO、I²C寄存器或专用PWRON信号形成级联控制关系。下图展示了一个典型的多路电源供电拓扑,包含PMIC、DC-DC、LDO、负载开关以及各电源域之间的控制与供电路径。
典型供电拓扑与时序关系
从拓扑图可以看出,多路电源系统通常遵循“电池→PMIC→DC-DC/LDO→负载开关→负载”的层级结构。每一级都有其启动延迟和上升时间,级联后形成整体上电时序。典型的上电顺序为:常开域最先建立,随后核心域、存储域上电,待核心电压稳定后释放复位,再启动模拟域,最后按需使能外设域负载开关。
在自动化验证中,需要重点关注以下参数关系:
| 参数 | 典型值/范围 | 验证关注点 |
|---|---|---|
| PMIC使能到Buck输出 | 1~5 ms | 软启动时间是否在规格内,有无过冲 |
| DC-DC上升时间 | 0.5~2 ms | 斜率是否单调,有无回沟 |
| LDO建立时间 | 50~500 μs | 快速响应,噪声是否超标 |
| 负载开关导通延迟 | 10~100 μs | 使能到输出的延迟一致性 |
| 电源域间间隔 | 0~10 ms | 是否满足芯片手册的先后要求 |
| 掉电顺序 | 与上电相反 | 避免倒灌和闩锁 |
案例场景:某SoC平台的上电时序验证
以某SoC平台为例,其供电拓扑为:PMIC输出Buck1(0.9V核心)、Buck2(1.2V DDR)、LDO1(1.8V模拟)、LDO2(3.3V常开)。外设域通过三个负载开关分别控制USB、摄像头和SD卡。验证目标是在不同温度、不同输入电压下,确认各路电源的上电顺序、时间间隔和电压幅值均符合规格。
自动化测试系统通过I²C配置PMIC寄存器,触发上电序列,同时用多通道示波器或数据采集卡捕获各路电压和使能信号。测试脚本按以下逻辑判断:
# 伪代码:上电时序自动判定
expected_order = ["LDO2_3V3", "Buck1_0V9", "Buck2_1V2", "LDO1_1V8", "SW_USB", "SW_CAM"]
captured = capture_power_rails(timeout=50ms)
for i, rail in enumerate(expected_order):
t_rise = captured[rail].rise_time
v_final = captured[rail].steady_voltage
assert t_rise < spec[rail].max_rise, f"{rail} 上升时间超标"
assert abs(v_final - spec[rail].nominal) < spec[rail].tol, f"{rail} 电压偏差超标"
if i > 0:
gap = captured[rail].t_start - captured[expected_order[i-1]].t_end
assert gap >= spec.min_gap, f"{rail} 与前一电源间隔不足"
常见误区与复盘
- 误区一:只关注电压值,忽略上升时间。电压最终正确不代表时序正确,缓慢上升可能导致芯片在中间电压停留过久,引发逻辑混乱。
- 误区二:忽略负载开关的体二极管效应。当负载开关关闭时,若输出侧存在更高电压,电流可能通过体二极管倒灌,造成意外上电。
- 误区三:电源域划分过粗。把不同电压等级或不同使能控制的负载归为同一域,会导致时序验证用例无法覆盖真实场景。
- 误区四:掉电顺序未验证。掉电顺序错误可能引起闩锁或数据损坏,自动化测试应包含下电序列的捕获与判定。