如何验证电源域切换的正确性?
解读
在国内SoC项目中,电源域(Power Domain)切换是低功耗设计(UPF)落地的关键环节,面试时考官想确认候选人是否具备“从规格到硅前”闭环验证的能力。验证目标不仅是“能切过去”,而是“在任何工作温度、电压、工艺角下,按任意顺序、任意时间点切换,芯片依旧不挂死、不丢数据、不触发X传播,且功耗收益可量化”。因此,回答要体现:①对UPF 2.1/3.0语法及低功耗Cell(ISO、LS、RFF、MRFF、AO/AI)的熟悉;②对切换序列、握手协议、复位保持、状态保持(Retention)、时钟/复位/电源三者的依赖关系的理解;③能构造跨电源域的随机场景并量化功能覆盖率;④知道如何用形式验证+动态仿真+硬件加速三重手段兜底。
知识点
- UPF黄金文件:power state table、supply net、power switch、retention strategy、isolation strategy。
- 切换序列:power-down → clamp → isolation → switch off → switch on → supply ramp → retention restore → de-isolation → power-up。
- 关键检查点:
a. 电压斜坡时间(ramp time)是否满足Library characterized值;
b. 掉电域寄存器/存储器在retention下的数据一致性;
c. 跨域信号在isolation clamp期间不出现X或metastable;
d. 掉电域复位释放必须晚于电源稳定,早于时钟使能;
e. 中断、DMA握手、AXI outstanding transaction在掉电前必须clean。 - 验证环境:
- 动态仿真:在UVM环境中例化UPF,用UPF-aware仿真器(VCS NLP,Xcelium LP)自动插入低功耗cell模型;用
supply_on/off、pswitch_toggle系统task强制切电;用assert_supply_on、assert_isolation等SVA检查。 - 形式验证:用VC-LP或Formality-LP对power state table做FEV,证明“在任何合法状态组合下,retention寄存器数据等于掉电前”。
- 硬件加速:将UPF编译进Palladium或Zebu,跑Linux+驱动,用真实电源管理固件进行百万次随机热插拔。
- 动态仿真:在UVM环境中例化UPF,用UPF-aware仿真器(VCS NLP,Xcelium LP)自动插入低功耗cell模型;用
- 覆盖率:
- power state transition coverage(交叉supply_net×state×switch direction);
- isolation strategy coverage(clamp value 0/1/latch);
- retention restore coverage(restore value vs. save value);
- reset release vs. supply stable timing coverage(±10%电压斜坡区间)。
- 常见坑:
- 忘记在testbench里把always-on域的supply net设成“常开”,导致仿真器误插isolation;
- retention寄存器未在UPF里声明save/restore信号,硅后数据归零;
- 时钟门控单元(ICG)放在掉电域,但控制信号来自常开域,未加isolation,切电后时钟端口浮空;
- AXI通道在掉电前存在outstanding write response,掉电后SLVERR被clamp成0,软件死等中断。
答案
“验证电源域切换,我通常分五步闭环:
第一步,读UPF。把designer提供的UPF 2.1与RTL一起导入VCS-NLP,用report_power_domain和report_pst确认supply net、power state table与spec一致;同时检查isolation、retention、switch cell的strategy是否覆盖全部跨域信号。
第二步,搭低功耗UVM环境。在env里例化uvm_low_power_if,用supply_on/off()和pswitch_toggle()做直接切电;用uvm_sequence随机化切换间隔(01 ms)、切换次数(11 k)、切换顺序(任意domain任意顺序);在scoreboard里对比retention寄存器save/restore值,确保数据0比特差错。
第三步,写断言。用SVA+UPF系统函数覆盖四条黄金规则:
assert_supply_stable– supply net电压在ramp_time内必须单调上升到90% Vnom;assert_isolation_clamp– 跨域信号在supply_off后2 ns内稳定clamp到指定值,不出现X;assert_retention_restore– restore完成后,寄存器Q等于save前采样值;assert_reset_sequence– reset释放必须在supply_stable之后,且满足≥32个时钟周期。
第四步,收覆盖率。用Verdi LP-CC抽取power state transition、isolation clamp value、retention restore三维度交叉覆盖率,目标≥95%;未覆盖的corner在仿真里加force补充,例如“掉电域正在写SRAM,同时收到中断,立即切电”场景。
第五步,形式+硬件加速兜底。用VC-LP对power state table跑FEV,证明‘任何状态组合都不会导致retention数据丢失’;再把UPF+RTL编译进Palladium,跑真实Linux+电源管理驱动,连续热插拔48小时,观测串口无挂死、JTAG可拉回、功耗计读数与Golden相差<3%。
交付物:sign-off报告包含coverage dashboard、assertion pass rate、FEV结论、48小时热插拔log、功耗对比表,经技术评审后归档,达到流片标准。”
拓展思考
- 如果芯片支持DVFS(动态调压调频),电源域切换还需与频率切换握手,验证时要引入“电压-频率对”合法表,用形式验证证明“任何频率下电压不低于最小characterized值”。
- 先进工艺(7 nm及以下)存在较大IR-drop,可在仿真阶段用PrimeTime-PX导出VCD,再喂给Ansys RedHawk做动态IR-drop分析,确认切电瞬间的电压凹陷不会导致寄存器内容翻转。
- 车规芯片需要满足AEC-Q100 Grade-1,温度范围-40~150 ℃,可在硬件加速平台加温度传感器回读,跑“高温切电→低温上电”极端循环,验证retention寄存器在温度梯度下的数据保持能力。