【芯片概念】UPF

本文介绍了在UPF(用户面功能)芯片设计中,如何设置power_domain,包括电源网络的定义、power_switch的创建、PowerStateTable的使用以及retention和isolationcell、levelshiftcell的作用。详细讲解了如何管理电源和信号,确保系统在不同状态下的正常工作。
该文章已生成可运行项目,

UPF基本概念学习

​编辑

芯片设计

芯片设计小兵

​关注他

24 人赞同了该文章

1、设定实施约束的层次

set_design_top SoC/Video_SB   #指定design_top为Video_SB

set_scope .            #指定命令作用的范围为当前层次即Video_SB

set_scope V1/LV1        #指定命令作用的范围为V1/LV1

2、设定设定power_domain

Video_SB top层次下存在下面5个domain和sub_domain

Video_SB/Video_PD、Video_SB/V1_PD、Video_SB/V2_PD、Video_SB/LV12_PD、Video_SB/LV34_PD

设定power_domain的步骤如下:

1. set_scope Video_SB                #set the scope to Video_SB

2. create_power_domain Video_PD -include_scope    #create Video_PD power domain in current scope.

3. create_power_domain V1_PD -elements {V1}      #creates V1‘s domain,its own power domain called V1_PD

4. create_power_domain LV12_PD -elements {V1/LV1 V1/LV2}

5. create_power_domain V2_PD -elements {V2}

6. create_power_domain LV34_PD -elements {V2/LV3 V2/LV4}

3、描述power_domain的电源网络: Supply Network

power domain中电源网络的定义如下图:

主要是通过下面四个进行电源网络的连接。

create_supply_port VDD -direction in
create_supply_port VSS -direction in

create_supply_net Pwr -domain Video_PD
create_supply_net Gnd -domain Video_PD

connect_supply_net Pwr -ports (VDD)
connect_supply_net Gnd -ports (VSS)

set_domain_supply_net Video_PD \
-primary_power_net Pwr \
-primary_ground_net Gnd

下图中,V_PD domain 中的supply_net复用Video_PD domain中的supply_net。需要-reuse进行描述

create_supply_net Pwr -reuse -domain V_PD
create_supply_net Gnd -reuse -domain V_PD

同时,必须显示的申明net所属的power_domain

set_domain_supply_net V_PD \
-primary_power_net Pwr \
-primary_ground_net Gnd

4、创建power_switch

create_supply_net VDDsw -domain V_PD #定义switch产生的supply_net。

create_power_switch SW -domain V_PD \
-input_supply_port {pwin Pwr} \
-output_supply_prt {pwout VDDsw } \
-control_port {swctrl sw_ctrl} \
-on_state {Pwon swctrl} \
-off_state {Pwoff !swctrl}

set_domain_supply_net V_PD \ #V_PD的primary_power_net为switch产生的net
-primary_power_net VDDsw \
-primary_ground_net Gnd
 

5、设定Supply Port的值

add_port_state VDD -state {ON_10 1.0} #VDD只有一种常开的状态,其电压值为1.0v

add_port_state VSS -state {ON_00 0.0}

add_port_state SW/VDDsw -state {ON_10 1.0} -state {OFF off} #switch开关电压VDDsw,存在ON和OFF两种状态。

6、Power State Table的描述

create_pst PST1 -supplies {VDD, VDDsw, VDD2, VSS}

add_pst_state Normal -pst PST1 -state {ON_10, ON_10, ON_08, ON_00}
add_pst_state Sleep -pst PST1 -state {ON_10, OFF, ON_08, ON_00}
add_pst_state Normal -pst PST1 -state {ON_10, OFF, OFF, ON_00}

7、set retention快速回复被关断domain的状态

其中retention cell的电源和地为红色VDD和VSS

set_retention V_PD_retention \ #所以V_PD domain的状态都要能被恢复
-domain V_PD \
-retention_power_net Pwr \
-retention_ground_net Gnd

set_retention_control V_PD_retention \
-domain V_PD \
-save_signal {SRctrl posedge} \
-restore_signal {SRctrl negedge}

8、用isolation cell 隔离ON domain和OFF domain

OFF domain 其输出连接至ON domain,所以其输出需要处理。

set_isolation V_PD_isolation \
-domain V_PD \
-applies_to outputs \
-clamp_value 0 \
-isolation_power_net Pwr \
Isolation_ground_net Gnd

set_isolation_control V_PD_isolation \
-domain V_PD \
-isolation_signal vISO \
-isolation_sense high \
-location parent

9、level shift cell 处理不同电压域之间信号的传递。

set_level_shifter LV_PD_LS
-domain LV_PD \
-threshold 0.1 \
-applies_to both \
-rule both \
-location self

本文章已经生成可运行项目
<think>嗯,用户这次的问题聚焦在UPF(统一电源格式)中的一个具体命令参数:set_retention-no_retention是否能阻止标准寄存器被替换为保留单元。从用户提供的引用资料看,ta应该正在处理芯片低功耗设计,特别是电源关断域的状态保持问题。注意到用户引用的三段材料很有针对性:[1]提到保留单元的分类(双引脚/单引脚/零引脚),[2]解释状态保留单元的作用原理,[3]则关于UPF中-retention_supply参数的冲突说明。这说明用户已经对基本概念有了解,现在需要确认一个具体操作细节。用户的核心困惑在于“-no_retention”这个修饰词是否真的能阻断工具自动替换寄存器。从UPF标准文档看,这个参数的作用很明确:当设计某些区域确实不需要状态保持时,用这个标记明确告诉综合工具不要做替换操作。比如有些复位后不需要恢复状态的流水线寄存器,或者纯组合逻辑路径上的虚寄存器。特别要注意用户引用[3]提到的互斥参数提示,这说明UPF对于保留单元的电源网络定义有严格约束。而“-no_retention”实际上创建了一个豁免区,类似物理设计中的布局障碍(blockage)。技术文档里容易忽略的是,这个命令需要搭配-isolation、-power_switch等其他UPF约束才能完整生效。用户可能是遇到了这样的场景:综合工具将某些无需保留的寄存器替换成了保留单元,导致面积增大甚至时序违例。深层需求其实是想精细化控制低功耗设计成本。回复时需要强调应用场景,比如哪些模块适合禁用替换(例如计算型模块),哪些必须保留(控制状态机)。最好提醒用户检查工具版本,因为有些旧版UPF工具对这个参数支持不完善。考虑到用户能准确引用技术文档,回复应该聚焦参数机制而非基础概念。重点讲清楚两点:一是这个参数如何作用于综合流程(寄存器替换阶段),二是需要配合验证的checklist(电源网络、隔离策略)。用户可能还需要知道怎么排除常见失效情况,比如为什么标记了仍被替换(往往因逻辑锥中存在必须保留的信号)。</think> 在UPF流程中,使用`set_retention -no_retention`可以阻止逻辑综合工具将标准寄存器替换为保留单元(Retention cell)。以下是具体说明: ### 命令作用机制 1. **功能原理** `-no_retention`选项显式声明目标区域**禁止保留单元替换**,强制工具保留原始寄存器结构。其优先级高于其他保留策略。 2. **与标准命令对比** - 普通保留命令: ```tcl set_retention retention_strategy -domain PD_top -retention_power_net VDD_ret ``` 会触发寄存器替换 - 禁用替换命令: ```tcl set_retention -no_retention -domain no_ret_area ``` 标记`no_ret_area`域内寄存器不受任何保留策略影响 ### 典型应用场景 1. **时序敏感路径** 关键路径寄存器禁用保留单元(因保留单元有更高延迟),确保满足时序要求 2. **冗余模块处理** 对无需状态恢复的辅助模块(如一次性计算单元)减少面积功耗开销 3. **验证隔离策略** 测试不同电源域的隔离效果时,保留原始寄存器行为作为基准参照[^2] ### 验证要点 1. **检查替换结果** 综合后需验证: ```text Report: 目标区域内无保留单元(仅标准DFF) Warning: 若出现保留单元,检查域划分重叠或约束冲突 ``` 2. **电源约束完整性** 禁用保留单元的区域仍需正确定义: ```tcl # 必须关联标准电源,避免断电行为异常 set_domain_supply_net PD_std -primary_power_net VDD -primary_ground_net VSS ``` ### 技术深度说明 保留单元的本质是增加后备电源(VDD_ret)和状态锁存电路[^1],而`-no_retention`通过以下机制规避该结构: - RTL-to-Gate综合阶段跳过保留单元映射规则 - 电源网络连接时忽略保留电源布线层[^3] - 静态验证工具自动豁免状态恢复性检查
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值