低功耗设计的基本单元和upf书写流程
提示:仅供自己学习使用
文章目录
前言
可以把芯片设计粗略分为三个部分:功能、时序和电源,它们分别对应RTL(functional behavior)、SDC和UPF(power behavior)三种设计文件。前端工程师对RTL和SDC是非常熟悉的,但是UPF(SNPS叫UPF,Cadence叫CPF)更多地是跟后端相关。
首先简单说明下upf及其发展,upf就是用来表示你低功耗设计意图的文件,用它来说明低功耗设计的思路和方法,由IEEE发布,之前为IEEE1801(2009)对应upf2.0,更新后为IEEE1801(2013)对应upf2.1,之后还有更新。版本不同在于低版本的upf不能很好的支持某些低功耗场景,比如2009只支持multi-fanout中对不同pd统一加ISOLATION的情况,而2013支持,这个后面章节会提到。
一、UPF的定义
UPF(Unified Power Format) is a power intent format. UPF的作用是基于工具命令语言(tcl)把功耗设计意图(power intent)传递给EDA工具,从而帮助实现物理设计。因为RTL只能实现功能设计,对于功耗设计意图则需要通过UPF实现,下面是两者的区别。
Power intent用于描述芯片工作的『电特性』,包括工作电压、电压的开关、芯片的power state(such as run/standby/retention/shutdown)、低功耗cell插入的策略等。
二、UPF术语
1.Power Domain
power domain (pd),即电源域。设计中的一组元素,它们共享一组公共的电源。默认情况下,电源域中的所有逻辑元素使用相同的主电源和主地。
Pd 对前端是一个虚拟的概念,可能由几个数字模块组成,需要注明pd的电压。
注明Pd中的power switch (ps)的形式,比如使用p管关闭ps或者n管关闭ps等属性。
需要定义supply network,也就是说你的supply从哪里过来,这对后面的power mesh有很大影响,后面会说到。
Upf描述:
-create_power_domain
-set_domain_supply_net
2. Power Supply Network
Supply Nets:可以类比RTL里面的wire,用来定义一根电源线,而且只在声明它的PD中有效。是连接外层pd和内层pd的线。
Supply Ports:可以类比RTL里面的port,在电路中它们对应的是电源pin。
Domain supply nets是pd内部的Supply nets。
Power Switches:这个没有可类比的RTL元素,它就是一个电源开关,其两端电源属于不同的Nets,控制信号来自RTL function电路。AON和TOP的pd不需要ps。
3. Power State table
Power State table:用来定义芯片低功耗模式的一张表格,列出本设计中所有电源域的电压值和电源开关状态的允许组合。
Pst描述了当有很多pd的时候,他们相互之间是怎么工作的。比如图1中3个pd在同一时间可以有不同的开和关的状态,那么这个pst就有2^3=8种情况。实际工作中也不会8种状态都会有,这个需要看具体设计,比如图1中pd_top需要一直开,那么就少了4种情况。如果有DVFS的时候可以把power supply定义为不同的电压,电压开或关等等,不同的情况就是一种state,后面会详细说明。在upf中定义Pst的作用是vcs的vclp工具把pst当做golden去检查设计中iso,ls,ps是不是完整且正确;提高验证的coverage。
4. Special Cells for Low Power Techniques

①Power Switch
power switch是一个装置,打开和关闭电源的供应网络。一个开关有一个输入供应网,一个输出供应网,以及至少一个用于控制开关的输入信号,可以通过多个信号控制,也可以输出多个信号。
②Isolation
主要用于不同的电源域之间,其中一个电源域断电后,不对另外一个电源域造成影响。主要是将断电后电源域的输出信号钳位到高或者低电平,防止掉电后的X态传播。
Iso_en为0:与门
Iso_en为1:或门
它有VDD和VDDB两个power,掉电的时候,vdd断电,vddb继续供电,iso_en来自有电的其他模块,这样就可以防止IN进来的x态。上图为“to”demain类型的iso,即iso在有电的pd里面;同样也有“from”类型的iso,即将iso放在断电的pd里面,此时他的iso_en,vddb需要来自有电pd。
UPF描述:set_isolation
set_isolation_control
map_isolation_cell (用于map工艺库里不同的iso,比如to或者from类型)
③Level shift (电平转移器)
对于多电压设计,需要用Level-shifter来实现不同电压域之间信号的电平转换。根据信号电平由高到低和由低到高的转换,Level-shifter分为两类,一种是高到低、一种是低到高。
把一个1v的信号送到1.2v的pd会出现信号无法传递的问题。这个时候需要用到LS。
Upf描述: -set_level_shifter
-map_level_shifter_cell (用于map工艺库)
VDDI 可以来自1.2V PD ,VDDO来自0.9V PD。
Enable level shift cell :结合ISOLATION 和LS两种单元的功能,既能变化电压也能保持数据不丢失。
④Always_On Logic
在电源关断模块还有可能需要有些信号线或逻辑长期工作,比如MTCOMS单元的控制信号线,Retention Register的save/restore控制信号,Isolation Cell的控制信号。为了实现这种功能,这就需要另外的特殊单元叫Always-On BUF。
Aon_buffer可以放在断电的pd,如图中的第一幅图,它可以保证RR(Retention register)的save信号穿过断电pd,如果是不同的buffer,save信号无法穿过。如果定义了aon pin和aon port,就自动加入aon buffer。

⑤Retention register
电源关断模块有可能要求register对关断前的数据进行锁存或者在电源打开后要求对锁存的数据进行恢复,这就需要特殊的单元Retention Register。它可以在掉电的时候保持住一个数值,用于对后面电路的控制。
RR的作用是掉电之前将数值save送入寄存器,等pd打开之后,使用restore信号恢复save的数值。举唤醒为例,这保存了之前的唤醒状态,所以唤醒后可以不重新进行之前的唤醒过程,加速电路唤醒时间,增加performance。缺点是RR面积太大。
UPF 描述:
Set_retention
Set_retention_control
Map_retention

三、UPF流程
1. determine power intent
首先需要确定整个低功耗的策略,define power intent主要包括两步:
举例:
在把整体的功耗设计意图(power intent)确定好之后,接下来就需要用commands来一步一步实现。
2. define power domains
create power domain command syntax:
举例:
3. define supply network
define supply network用到的commands如下:
create_supply_port : 创建一个supply port
create_supply_net : 创建一根supply net
connect_supply_net : 将port 和 net 连接起来
create_supply_set : 一组supply nets 的集合(a bundle of supply nets),每一组包含power和groud,方便调用。supply set 物理上不存在,一种抽象的概念,方便在upf中使用。
举例:
4. define supply sets power states
define power states command syntax:
examples:

5. define power management strategies
Level Shifting
define level shifter command syntax:
举例:
Isolation
define isolation cell command syntax:
在这里插入图片描述
State Retention
define retention register command syntax:
举例:
Power Switches
define power switch command syntax:
举例:
四、UPF设计例子


请你描述以下电路的upf设计思路。
答:图中有两个pd,外面为1.08v简称pd_top,里面为0.7v可关闭的pd,简称pd_dhm。
首先你需要在pd_top定义supply port:VDD,VDDL,VSS及其对应的supply
nets,注意VDD到pd_dhm不需要定义supply port,因为pd_dhm为0.7v。你需要在pd_dhm里面定义power_switch.
pd_top为1.08v,pd_dhm为0.7v,所以数据进来需要LS,图中紫色的处。
因为 pd_dhm可以关闭,所以它的数据送到外面需要加LS和isolation,两个合并为enable level shift cell,图中右下角蓝色处,它的控制来自pd_iso信号。
因为唤醒需要很长时间,为了加快唤醒时间,这里加入了RR
具体的UPF实现会在后面的单元讲解
更多推荐


所有评论(0)