news 2026/4/15 14:46:27

2.【UPF】UPF Design Flow(UPF设计流程)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
2.【UPF】UPF Design Flow(UPF设计流程)

第一步:UPF设计流程原文逐行分析与知识整理

1. 为什么学习UPF设计流程

  • UPF在RTL到GDS全流程中的位置决定功耗管理成败。
  • 每个阶段(仿真、综合、物理设计)对UPF的使用方式不同。
  • 理解工具如何解释功耗意图,确保正确实现。

2. 你将学到什么

  • UPF在RTL-to-GDS流程中的位置
  • 仿真、综合、物理设计工具如何使用UPF
  • 每个设计阶段中功耗意图规范的作用
  • 支持UPF的EDA工具生态

3. UPF在RTL-to-GDS流程中的角色

传统流程(无UPF)
  • RTL设计:功耗逻辑与功能代码混在一起
  • 仿真:有限的功耗感知检查
  • 综合:工具特定的功耗命令
  • 布局布线:不同的功耗规范
  • 签核:手动功耗验证
  • 问题:不一致、错误多、手动工作量大
现代流程(有UPF)
  • 架构阶段:定义电源域、电源状态
  • RTL设计与UPF创建并行进行
  • RTL+UPF合并作为单一事实来源
  • 功耗感知仿真:UPF定义X传播、状态转换
  • 逻辑综合:UPF指导特殊单元插入(隔离、 retention、电平转换器)
  • 物理设计:UPF定义域布局、电源布线
  • 功耗分析与签核:UPF提供状态信息用于精确估算
  • 同一个UPF文件贯穿所有阶段,确保一致性。

4. 功耗意图规范阶段

UPF创建始于设计早期,常与RTL开发并行。

架构与规划
  • 电源域边界:哪些模块可独立控制?
  • 电压等级:每个域的工作电压
  • 电源状态:睡眠模式、活跃模式、性能状态
  • 电源管理策略:何时门控电源、隔离信号、保持状态
  • 控制机制:软件如何控制电源状态

UPF命令示例

create_power_domain PD_CPU -elements {CPU_subsystem} create_power_domain PD_GPU -elements {GPU_subsystem} add_power_state VDD_CPU -state {ACTIVE 1.0} add_power_state VDD_GPU -state {ACTIVE 0.9} -state {SLEEP 0.0} create_power_switch PSW_GPU -domain PD_GPU ...
  • 架构阶段价值:典型移动SoC识别15-25个电源域,这些决策捕获在UPF中,指导整个实现流程。

5. 仿真与验证中的UPF

功耗感知仿真
  • 模拟器使用UPF:
    • 破坏信号值:从断电域传播’X’
    • 检查隔离:防止X传播
    • 检查保持:掉电期间状态是否保留
    • 验证电平转换:跨电压域信号安全
    • 模拟电源状态:状态机转换

UPF示例

set_isolation ISO_GPU -domain PD_GPU -isolation_signal iso_gpu -isolation_sense high -clamp_value 0 set_retention RET_GPU -domain PD_GPU -retention_signal ret_gpu -retention_sense high
  • 仿真行为:当PD_GPU断电,模拟器强制所有GPU输出为’X’;若iso_gpu断言,隔离单元钳位到0;ret_gpu断言则保持寄存器状态。
  • 重要性:没有UPF仿真,电源域bug(忘记隔离、保持时序错误)直到门级仿真或流片才发现,修复成本极高。
验证挑战
  • X传播检查:断电域的未知值不传到活跃逻辑
  • 保持覆盖率:所有关键状态在电源周期中保持
  • 隔离时序:断电前断言隔离,上电后解除
  • 电平转换正确性:安全处理电压跨越
  • 电源状态合法性:只达到合法组合

6. 逻辑综合中的UPF

功耗感知综合任务
  • 插入隔离单元:在电源门控域的输出端
  • 插入电平转换器:在电压域交界处
  • 插入保持单元:用保持触发器替换普通触发器
  • 功耗优化:关键路径用低Vth单元,其他用高Vth
  • 时钟门控:为空闲逻辑插入时钟门

UPF指导插入

set_isolation ISO_CPU_TO_TOP -domain PD_CPU -isolation_supply_set SS_TOP -isolation_signal iso_cpu_en -isolation_sense high -clamp_value 0 -location parent set_level_shifter LS_GPU -domain PD_GPU -applies_to outputs -location self
单元映射
map_isolation_cell ISO_CPU_TO_TOP -domain PD_CPU -lib_cells {ISOL_AND_0} map_level_shifter_cell LS_GPU -domain PD_GPU -lib_cells {LS_HL}
  • 综合价值:自动插入数千个特殊单元,手动插入容易出错且不现实;UPF自动化确保正确性和完备性。
多电压优化
  • 综合知道哪些路径跨越电压域
  • 自动插入电平转换器
  • 时序分析计入电平转换器延迟
  • 使用电压相关的单元延迟进行精确时序计算

7. 物理设计中的UPF

物理设计任务
  • 布局规划:将电源域放在独立区域
  • 电源规划:为每个域创建电源环和条带
  • 开关放置:将电源开关靠近域放置
  • 单元放置:保持域内单元聚集,尊重边界
  • 电源布线:从开关布线VDD_domain网络
  • 特殊单元处理:优化隔离/保持单元位置
电源开关实现
create_power_switch PSW_CPU -domain PD_CPU -input_supply_port {vin VDD} -output_supply_port {vout VDD_CPU} -control_port {ctrl pwr_enable_cpu} -on_state {on vin {ctrl}} -off_state {off {!ctrl}}
  • 物理工具执行:放置开关单元、布线输入输出、连接控制信号。
电源网格规划
  • 多域设计需要独立电源网格:
    • VDD(常开)跨越整个芯片
    • VDD_CPU仅在CPU域区域
    • VDD_GPU仅在GPU域区域
    • VSS通常共享
隔离和保持单元放置
  • 隔离单元:放在域边界以最小化时序影响
  • 电平转换器:定位以最小化移位信号的线延迟
  • 保持单元:正常放置,连接到保持电源

8. 功耗分析与签核

功耗分析阶段
阶段UPF用法精度
RTLUPF定义电源状态用于基于活动的估算±30-40%
综合后门级网表+UPF用于单元级功耗±15-20%
布局后寄生参数提取网表+UPF用于状态感知分析±5-10%
签核最终网表+UPF+向量用于精确功耗±3-5%
状态相关功耗分析
add_pst_state PST_SYSTEM -state {ACTIVE {VDD_CPU ON} {VDD_GPU ON}} -state {GPU_IDLE {VDD_CPU ON} {VDD_GPU OFF}} -state {SLEEP {VDD_CPU OFF} {VDD_GPU OFF}}
  • 分析工具:估算每个状态功耗,报告活跃=500mW,GPU空闲=200mW,睡眠=5mW,基于状态概率计算平均功耗。
签核检查
  • UPF一致性:验证UPF与实现网表匹配
  • 隔离验证:确认所有边界有隔离单元
  • 保持验证:检查保持单元及控制连接
  • 电平转换器验证:验证所有电压跨越有转换器
  • 电源状态可达性:验证所有合法状态可达

9. 工具支持与生态系统

主流EDA厂商均支持UPF(IEEE 1801标准):

  • Synopsys:VCS, Design Compiler, IC Compiler II, PrimeTime PX, VC Formal
  • Cadence:Xcelium, Genus, Innovus, Joules, JasperGold
  • Mentor/Siemens:Questa, Calibre
  • Ansys:PowerArtist, RedHawk

多供应商流程:大型半导体公司常混用Synopsys综合、Cadence物理设计、Mentor验证,同一个UPF文件在所有工具间工作,确保功耗意图一致。

10. UPF集成最佳实践

  1. 尽早开始:架构阶段创建初始UPF,随RTL细化,早期功耗感知仿真。
  2. 维护单一来源:所有工具使用同一个UPF文件(或一致集合),避免工具特定功耗规范,与RTL一起版本控制。
  3. 每个阶段验证:RTL仿真检查状态转换,综合后检查单元插入,布局后确认物理实现,签核完成UPF一致性检查。
  4. 层次化UPF:在IP级定义功耗意图,在SoC级组合,支持IP复用。
  5. 跨团队协作:功耗架构师创建UPF结构,RTL设计者确保功能,验证工程师检查功耗管理,物理设计者实现意图。

11. 常见初学者错误

  • 错误1:为不同工具创建单独的UPF文件 → 不一致导致不匹配 → 维护一个主UPF。
  • 错误2:在流程后期(综合后)添加UPF → 功耗bug发现晚导致进度延迟 → 架构阶段开始UPF。
  • 错误3:忽略UPF验证 → 假设工具正确解释UPF,可能缺失隔离、保持错误 → 每个阶段执行UPF一致性检查。

12. 实践练习

挑战:为每个设计阶段识别使用的UPF信息和工具动作:

  • RTL仿真
  • 逻辑综合
  • 布局布线
  • 功耗分析

13. 总结

  • UPF贯穿RTL-to-GDS流程,提供从规范到签核一致的功耗意图。
  • 仿真用于验证电源状态转换、隔离、保持、X传播。
  • 综合自动插入隔离、电平转换、保持单元。
  • 物理设计实现电源开关、域特定电源网格、优化特殊单元放置。
  • 主流EDA厂商支持IEEE 1801 UPF。
  • 最佳实践:尽早开始、单一来源、逐阶段验证、层次化UPF、跨团队协作。

第二步:资深验证工程师用费曼学习法教你UPF设计流程

UPF就是芯片功耗管理的“乐谱”——从导演(架构师)到乐手(物理设计工具)都看同一份谱子,才能演奏出低功耗的交响乐。作为验证工程师,我的任务是检查每个乐手有没有按谱子演奏。本文你将搞懂:UPF如何贯穿芯片设计全流程?仿真、综合、物理设计分别拿UPF做什么?为什么同一个UPF文件能驱动所有工具?以及如何避免“各吹各调”的灾难。

我们要着重讲什么?关注什么?为什么这样做?好处?如何学习使用?

  • 关注点1:UPF的“单一事实来源”原则——为什么不能给不同工具写不同的UPF?因为就像乐队里小提琴看巴赫、大提琴看莫扎特,合奏必然乱套。
  • 关注点2:每个设计阶段UPF的具体作用——仿真时UPF制造“X”来吓唬你,综合时UPF指挥插入“保安”(隔离单元),物理设计时UPF规划“水电管网”。
  • 关注点3:验证工程师如何利用UPF提前发现功耗bug——在RTL阶段就能抓到“断电后信号飘到其他模块”的问题,比到流片后再改省钱一万倍。
  • 关注点4:如何学习使用UPF?——先背熟五个核心命令(create_power_domain, set_isolation, set_retention, create_power_switch, set_level_shifter),然后跟着一个简单例子(比如一个CPU+SRAM的SoC)手写UPF,再跑仿真看X传播。

一、UPF是什么?为什么芯片设计需要它?

通俗解释:UPF(Unified Power Format,统一功耗格式)是一本“功耗剧本”。它用标准语言(IEEE 1801)告诉所有EDA工具:芯片里哪些区域可以单独断电?断电时输出信号怎么处理?唤醒时哪些寄存器要记住之前的值?

为什么需要它?在UPF出现之前,每个工具都有自己的功耗描述方式。综合工具用一堆Tcl命令,仿真工具用另外的选项,物理设计工具又用不同的文件。结果就是:综合时插的隔离单元,仿真时没检查;物理设计时忘了布电源开关的线。芯片回来后,发现某个模块断电后输出悬浮,导致其他模块电流倒灌,烧了。

UPF的好处

  • 一致性:同一个UPF文件贯穿始终,所有工具看到同样的功耗意图。
  • 自动化:综合自动插入隔离/保持/电平转换单元,不用手写RTL。
  • 早期验证:RTL阶段就能仿真断电场景,发现X传播问题。
  • 可复用:IP供应商提供UPF,SoC集成时直接组合,不用重新发明轮子。

如何学习使用:从最简单的两域设计开始——一个常开域(always-on)和一个可关断域。手写UPF,然后用仿真工具跑一个测试:让可关断域断电,检查它的输出是否被隔离单元钳位到0。之后再加入保持寄存器和电平转换器。


二、UPF在仿真验证中的魔法:制造“X”来抓bug

核心思想:当一个电源域断电后,它的输出信号在物理世界中既不是0也不是1,而是“未知”(X)。如果没有隔离单元,这个X会传播到其他仍然通电的模块,导致逻辑混乱(比如状态机卡住、比较器出错)。UPF仿真器会自动把断电域的输出变成X,然后看X会不会跑到不该去的地方。

验证工程师的关注点

  1. X传播检查:是否所有从断电域出来的信号都经过了隔离单元?
  2. 隔离时序:隔离使能信号必须在断电前断言,在上电后解除。如果时序反了,断电瞬间X就会泄露。
  3. 保持行为:断电后再上电,需要恢复的寄存器有没有正确保存值?

代码示例:一个简单的UPF + 仿真测试

假设我们有一个可关断的计数器模块(counter),它的输出送到一个常开的显示模块(display)。UPF定义隔离策略:当counter断电时,输出钳位到0。

# upf_counter.tcl create_power_domain PD_COUNTER -elements {counter_inst} create_power_domain PD_ALWAYSON -elements {display_inst} # 定义电源开关 create_power_switch SW_CNT -domain PD_COUNTER \ -input_supply_port {in VDD} \ -output_supply_port {out VDD_COUNTER} \ -control_port {ctrl pwr_en} # 隔离:在PD_COUNTER的输出端插入隔离单元,钳位到0 set_isolation ISO_CNT_OUT -domain PD_COUNTER \ -isolation_signal iso_en \ -isolation_sense high \ -clamp_value 0 \ -applies_to outputs

对应的Verilog测试平台:

module test_power_gating; reg pwr_en, iso_en, clk; wire [7:0] cnt_out; // 来自counter模块的输出 wire [7:0] display_in; // 经过隔离后的信号,连接到display // 实例化counter和display(略) // 模拟电源控制 initial begin pwr_en = 1; iso_en = 0; // 正常供电,不隔离 #100; pwr_en = 0; // 请求断电 #10; iso_en = 1; // 断言隔离(通常在断电前或同时) #200; pwr_en = 1; // 请求上电 #50; iso_en = 0; // 解除隔离 end // 检查X传播 always @(posedge clk) begin if (pwr_en == 0 && iso_en == 0) begin // 危险:断电了但隔离没生效,display_in应该为X if (display_in !== 8'hxx) $error("X propagation detected! display_in = %h", display_in); end if (iso_en == 1) begin // 隔离生效时,display_in必须等于clamp值0 if (display_in !== 8'h00) $error("Isolation clamp failed! display_in = %h", display_in); end end endmodule

为什么这样做?在RTL阶段就抓出缺失隔离,比等到门级仿真(速度慢、波形大)或流片后才发现,成本低100倍。UPF仿真让验证工程师能在写RTL的同时就写功耗测试用例。


三、UPF在逻辑综合中:自动插入“保安”和“翻译官”

核心思想:综合工具读UPF,知道哪里需要隔离单元(保安)、哪里需要电平转换器(翻译官)、哪些寄存器要换成保持型(有记忆的保安)。它自动从工艺库中挑选合适的标准单元并连接好,设计师完全不用手动修改RTL。

验证工程师的关注点

  1. 插入完整性:综合报告里是否列出了所有插入的隔离/保持单元?数量是否符合预期?
  2. 映射正确性map_isolation_cell指定的库单元是否与UPF中的clamp_value匹配?(例如钳位到0用AND门,钳位到1用OR门)
  3. 时序影响:插入这些单元后,路径延迟增加了多少?是否满足时序?

代码示例:UPF指导综合

# 告诉综合工具:在PD_CPU的边界,对输出信号使用AND型隔离单元,钳位到0 set_isolation ISO_CPU_OUT -domain PD_CPU \ -isolation_supply_set VDD_ALWAYSON \ -isolation_signal iso_cpu \ -clamp_value 0 \ -location parent map_isolation_cell ISO_CPU_OUT -domain PD_CPU \ -lib_cells {AND2_X1 AND2_X2 AND2_X4} # 从库中选择面积/驱动合适的 # 对于需要保持的寄存器 set_retention RET_CPU_REG -domain PD_CPU \ -retention_signal ret_save \ -retention_sense high map_retention_cell RET_CPU_REG -domain PD_CPU \ -lib_cells {DFFRHQ_X1} # 带保持功能的触发器

综合后,验证工程师要检查网表:

// 综合后的网表片段:原本的counter输出q[7:0]被替换为经过隔离单元 module top ( ... ); // 原本的counter实例 counter u_counter ( .clk(clk), .q(counter_q) ); // 综合自动插入的隔离单元 AND2_X1 iso_0 ( .A(counter_q[0]), .B(iso_cpu), .Z(cpu_out[0]) ); AND2_X1 iso_1 ( .A(counter_q[1]), .B(iso_cpu), .Z(cpu_out[1]) ); // ... 共8个 endmodule

为什么这样做?手动在RTL里写assign cpu_out = iso_cpu ? 8'h00 : counter_q;虽然可行,但如果是100个信号、20个电源域,代码会变得臃肿且易错。UPF让综合工具自动做,RTL保持干净,功耗策略改动时只需改UPF,不用重写RTL。

好处

  • RTL设计者只需关注功能,不用写功耗管理胶水逻辑。
  • 功耗策略可以后期优化(比如从AND隔离换成OR隔离),RTL不变。
  • 综合工具可以根据时序和面积自动选择最合适的单元尺寸。

四、UPF在物理设计中:规划“水电管网”

核心思想:综合插入了逻辑单元,但物理设计要负责给这些单元供电、布线和放置。UPF告诉物理设计工具:每个电源域的区域边界在哪,电源开关放在哪,隔离单元要靠近边界还是靠近接收端。

验证工程师的关注点

  1. 电源开关放置:开关是否放在域内靠近负载的位置?控制信号连线是否合理?
  2. 电源网格隔离:VDD_CPU的电源条带是否只画在CPU域内?有没有意外连接到常开VDD?
  3. 特殊单元物理约束:电平转换器必须放在电压域边界,并且有独立的电源轨。

代码示例:UPF定义电源开关和域边界

# 定义CPU域的区域(物理坐标) create_power_domain PD_CPU -elements {cpu_inst} set_domain_area PD_CPU -bbox {100 100 300 300} # 创建电源开关:输入VDD(常开),输出VDD_CPU,控制信号pwr_cpu create_power_switch PSW_CPU -domain PD_CPU \ -input_supply_port {vdd_in VDD} \ -output_supply_port {vdd_out VDD_CPU} \ -control_port {ctrl pwr_cpu} # 告诉物理设计工具:开关应该放在PD_CPU区域内部,靠近边界 set_switch_location PSW_CPU -boundary {200 200 210 210} -layer M1

物理设计工具执行:

  1. 在坐标(200,200)处放置电源开关宏单元。
  2. 从常开电源环布一条M1金属到开关的vdd_in
  3. 从开关的vdd_out布一条M1金属到PD_CPU区域内的标准单元电源轨。
  4. 从控制器布一条信号线连接pwr_cpu

为什么这样做?电源开关如果放得太远,中间的电线电阻会导致电压下降(IR-drop),影响域内单元性能。UPF允许架构师指定位置约束,物理设计工具自动满足,确保电源完整性。

验证方法:在物理设计完成后,运行电源完整性分析(如RedHawk),检查VDD_CPU在开关导通时的电压降是否在5%以内。同时用DRC检查不同电压域的金属线是否短路。


五、UPF在功耗分析与签核:算清楚每一毫瓦

核心思想:UPF定义了芯片的电源状态表(PST, Power State Table),告诉分析工具:在“活跃”状态,CPU和GPU都供电;在“空闲”状态,GPU断电;在“睡眠”状态,两者都断电。分析工具根据每个状态下的翻转活动,分别估算功耗,再根据每个状态的驻留时间比例算出平均功耗。

验证工程师的关注点

  1. 状态定义完整性:是否所有可能的硬件模式都对应了PST中的状态?
  2. 状态转换合法性:从睡眠直接跳到活跃是否允许?中间是否需要经过空闲状态?
  3. 功耗数字合理性:如果分析结果显示睡眠状态还有50mW,而CPU域已经断电,那这50mW可能来自未关断的常开模块或漏电路径,需要进一步分解。

代码示例:UPF定义电源状态表

# 定义两个电源轨的电压状态 add_power_state VDD_CPU -state {OFF 0.0} -state {ON 1.0} add_power_state VDD_GPU -state {OFF 0.0} -state {ON 0.9} # 定义系统级别的电源状态表 add_pst PST_SYSTEM -supply {VDD_CPU VDD_GPU} add_pst_state PST_SYSTEM -state ACTIVE -supplies {ON ON} add_pst_state PST_SYSTEM -state GPU_IDLE -supplies {ON OFF} add_pst_state PST_SYSTEM -state SLEEP -supplies {OFF OFF}

在功耗分析工具中,你会看到类似报告:

Power State: ACTIVE (probability 0.4) -> Dynamic 450mW, Leakage 50mW, Total 500mW Power State: GPU_IDLE (probability 0.3) -> Dynamic 150mW, Leakage 50mW, Total 200mW Power State: SLEEP (probability 0.3) -> Dynamic 0mW, Leakage 5mW, Total 5mW Average power = 0.4*500 + 0.3*200 + 0.3*5 = 200 + 60 + 1.5 = 261.5 mW

为什么这样做?没有UPF,分析工具无法知道哪些模块在哪个状态下断电,只能假设所有模块都供电,估算出的功耗会远大于实际(例如永远按500mW算,忽略了睡眠状态)。UPF让分析结果更贴近真实应用场景,帮助系统设计者合理分配电池容量或散热方案。


六、UPF实战学习路线:从零到一写一个SoC的UPF

建议步骤

  1. 掌握核心命令(一周):

    • create_power_domain:划分域
    • create_power_switch:加开关
    • set_isolation:输出隔离
    • set_retention:状态保持
    • set_level_shifter:电压转换
    • add_power_state/add_pst_state:状态定义
  2. 手写一个两域例子(两天):

    • 一个常开域(时钟管理单元)
    • 一个可关断域(GPIO控制器)
    • 用UPF定义:GPIO域断电时,输出钳位到0;GPIO域内的配置寄存器需要保留(用retention)
    • 用仿真器(如VCS + UPF)跑一个测试:先正常工作,然后断电,再上电,检查保留值是否正确。
  3. 阅读真实IP的UPF(一周):

    • 找一个开源SoC(如PicoRV32、OpenPiton)如果有UPF最好,或者ARM给的example。
    • 分析它的层次化UPF结构:每个IP有自己的UPF,顶层UPF将它们组合。
  4. 在实际项目中实践(持续):

    • 从维护已有UPF开始,修改一个电源状态,观察对仿真和综合的影响。
    • 写验证用例:覆盖所有电源状态转换,检查X传播和隔离时序。
    • 参与UPF代码审查:关注是否有缺失的隔离、电平转换器方向是否正确、电源开关控制信号是否来自常开域。

常见坑与避坑

  • 坑1:隔离单元的控制信号(iso_en)本身来自可关断域 → 断电后控制信号丢失,隔离失效。解决:控制信号必须来自常开域。
  • 坑2:电平转换器放反了方向(高->低用了低->高的单元)→ 信号畸变。解决:UPF中明确-direction或依赖工具自动推断,但验证要检查。
  • 坑3:保持寄存器的保存/恢复信号时序错误,导致上电后恢复的是旧值。解决:仿真中测试“断电前保存、上电后恢复”的完整序列,检查值是否一致。

七、原教程练习解答:UPF在各阶段的作用

题目:对于RTL仿真、逻辑综合、布局布线、功耗分析四个阶段,分别说明UPF提供什么信息,工具做什么。

解答

阶段UPF提供的信息工具动作
RTL仿真电源域边界、隔离/保持策略、电源状态表1. 断电域输出强制为X
2. 隔离断言时钳位到指定值
3. 保持寄存器在掉电期间保留值
4. 检查X传播和状态转换合法性
逻辑综合哪些域需要隔离、电平转换、保持;映射到哪些库单元1. 自动插入隔离单元、电平转换器、保持触发器
2. 优化时序和面积
3. 插入时钟门控
布局布线电源域区域(物理坐标)、电源开关位置、特殊单元放置约束1. 放置电源开关并布线
2. 为每个域创建独立电源网格
3. 将隔离单元放在域边界,电平转换器放在电压交界处
4. 满足DRC和天线规则
功耗分析电源状态表(PST)、每个状态的电压/活动因子1. 对每个状态分别估算动态+漏电功耗
2. 根据状态驻留概率计算平均功耗
3. 生成每个状态的功耗分布报告

最终总结:验证工程师的UPF检查清单

作为验证工程师,每次UPF相关的流片前,务必完成以下检查:

  • UPF语法正确:通过upf_checker或工具自带的check_upf
  • 仿真覆盖:所有电源状态转换都有测试用例;每个隔离使能信号都测试了断言/解除时序。
  • X传播测试:强制断电,检查是否有任何未知值到达常开域(除了预期被隔离的)。
  • 综合报告审查:确认每个set_isolation都对应了实际插入的隔离单元,没有“unmapped”警告。
  • 物理验证:电源域之间没有电源短路;隔离单元不在断电区域内。
  • 功耗分析:最坏状态下的功耗不超过封装和稳压器能力;睡眠状态漏电符合规格。

最后一句忠告:UPF不是写完就扔的文档,而是和RTL同等重要的设计资产。把它当作代码来写、来review、来版本管理。你的芯片能省多少电,取决于你对UPF的认真程度。现在,去写你的第一个create_power_domain吧!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/15 14:43:17

JiYuTrainer深度解析:如何在极域电子教室环境中实现高效自主学习

JiYuTrainer深度解析:如何在极域电子教室环境中实现高效自主学习 【免费下载链接】JiYuTrainer 极域电子教室防控制软件, StudenMain.exe 破解 项目地址: https://gitcode.com/gh_mirrors/ji/JiYuTrainer 在数字化教学环境中,学生常常面临极域电子…

作者头像 李华
网站建设 2026/4/15 14:42:13

如何快速掌握MOFA:多组学因子分析的完整实战指南

如何快速掌握MOFA:多组学因子分析的完整实战指南 【免费下载链接】MOFA Multi-Omics Factor Analysis 项目地址: https://gitcode.com/gh_mirrors/mo/MOFA 你是否曾经面对海量的多组学数据感到无从下手?当转录组、蛋白质组、代谢组等多维度数据同…

作者头像 李华
网站建设 2026/4/15 14:41:15

告别Keil和IAR!用VSCode+Embedded IDE搭建单片机开发环境(保姆级教程)

告别Keil和IAR!用VSCodeEmbedded IDE搭建单片机开发环境(保姆级教程) 在嵌入式开发领域,Keil和IAR长期占据主导地位,但它们的封闭性、高昂授权费用和略显陈旧的界面让许多开发者开始寻找替代方案。如果你也厌倦了传统…

作者头像 李华
网站建设 2026/4/15 14:40:41

为什么头部机场已停用纯视觉方案?2026奇点大会多模态安防圆桌实录:语音唤醒+微振动传感+光谱异常检测的3D风险感知范式(附POC验证代码片段)

第一章:2026奇点智能技术大会:多模态安防监控 2026奇点智能技术大会(https://ml-summit.org) 多模态安防监控正从单一视频分析迈向融合视觉、语音、热成像与毫米波雷达的协同感知新范式。本届大会首次公开展示了“Sentinel-Fusion”开源框架&#xff0c…

作者头像 李华