Professional Documents
Culture Documents
why? 为什么提出
1.输入反向偏置电流
2.阈值电压 SVT
LVT
分析功耗发生在哪里
Power Dissipation – VLSI Tutorials 动态功耗
a:切换频率:比如时钟信号的话,a = 1;
每个时钟切换1次,a=1/2, 功耗: , 所以LVT > SVT > HVT, HVT最省电
每个始终切换两次,a=1/4
Vdd:电压
C: 负载电容 1.电平翻转频率
f:工作频率 延时 :LVT < SVT <HVT
2.短路功率
1.clock gating
2.power gating
3.Multi-Threshold
4.Multi-Voltage(MV)
解决方法
5.Gate-level Power Optimization 关系:
6.Architectural Optimization
关系:
demo:
因为power gated domain有关断状态,所以会出现x状态,因此我们需要加一个
isolation.就是加一个与非门 + 控制信号,如果要输出状态0,用与门,control 输出
0; 如果要输出状态1,用或门,control输出1.
PMU: power manage unit,电源管理单元
一个domain到另一个domain中,因为domain可能有off,会导致输出不确定的x状
2.isolation 态,这个在芯片中 出大问题。
实现的具体技术
Isolation cells and Level Shifter cells – VLSI Tutorials
Retention cells – VLSI Tutorials Daisy chain 链式结构
优点:节约资源,结构简单
缺点:响应慢
Low Power
优点:响应快
缺点:消耗大量资源
4.Retention
6.这个不算low power的技术,只是为了更好的描述可以工作的情况,我们定义了一个
Power state table(PST),来查看有几种工作状态
因为普通的RTL代码无法进行电源的描述,所以需要一个语言去描述它,IEEE推出了
为什么提出 UPF
一共有3次,分析后的UPF', 布局布线后的是UPF''
开发流程
SDC+RTL+UPF ->经过DC -> gatas + UPF' -> UPF''
创建set demo:
create_supply_set mySS1
create_supply_set mySS2 //创建mySS1和mySS2两个set
create_supply_set mySS3
-function {ground mySS1.ground}
create_supply_set mySS2
1.定义domain create_power_domain TOP
-function {power mySS1.power}
顶层TOP, 下面有个u_dhm_core, 我们将它定义为pd1, create_power_domain pd1
-function {ground mySS1.ground}
elements参数表示可关断的domain部分 1.0 -elements u_dhm_core
-update
1.create_supply_port VDD
2.create_supply_port VDDL create_supply_set mySS1
2.划分电压 3.create_supply_port VSS -function {power myVDD}
-function {ground myVSS}
-update //mySS1有电之后,SS2,SS3才能有电。
create_supply_set ssPD1
UPF(Unified Power Format )
create_supply_set ssAO
1.create_supply_net VDDL
-domain pd1 -reuse
2.create_supply_net VSS
-domain pd1 -reuse
3.create_supply_net VDDLS1
-domain pd1
4.将TOP中的net连接到pd1中 -reuse的含义是从top从直连到pd1,不然在pd1中需要port去接top的信号
1.connect_supply_net VDD
5.将top domain中port,net连接 -ports {VDD} //将前面定义的VDD net 和 top中VDD port相连
1.
set_domain_supply_net TOP
-primary_power_net VDD
-primary_power_net VSS
2.
set_domain_supply_net pd1
6.数值domain的Primary power, ground参数 -primary_power_net VDDLS1
(到这步,电源基本框架就搭建完成了) -primary_ground_net VSS
create_power_switch PD_SW_sw
-domain pd1
-input_supply_port {in VDDL}
-output_supply_port{out VDDLS1} // in, out以上面的图为主,因为这个图来自
其他PPT,端口名字有点不同
-control_port {sleep pwrcon_pd_n} //这个sleep信号是随便定义的, sleep连接的
是power switch, 而pwrcon_pd_n连接控制信号,这个控制信号一般需要always on
-on_state {on in {!sleep}} //当sleep=0时候,state打开。 on in这个就是在什么时
7.开始添加其他cell,如Power switch 候开启。
//设置isolation电压,一般来自外部
set_isolation PD_SW_iso_out
-domain pd1
-isolation_power_net VDD
-isolation_ground_net VSS
-clamp_value 1 //钳位电压
-applies_to output //ISO加在输出端
//设置控制信号
set_isolation_control pd_sw_iso_out set_isolation iso_mult -domain pd1
语法 -domain pd1 1.0 -applies_to input | output | both //在输出与输出端口都添加isolation
-isolation_signal pwrcon_iso_n
-isolation_sense low //低电平有效 使用source 和 sink来指定起点和终点
8.添加ISO -location parent //位置在domain pd1外面,如果在里面的话,用self set_isolation iso_mult -domain pd1
-source TOP_p_sset //指定起点
set_isolation iso_genpp -domain other
2.0 -sink TOP_p_sset //指定终点
9.添加power shifter
set_level_shifter pd_LSout
-domain pd1
-applies_to output
-rule low_to_high
-location parent
//因为retention由FF+latch,这两个器件需要工作在不同的电压域下,一个电源要来自外部,这样一个工作电源断电后,才
能够继续保存。
set_retention PD_SW_ret
-domain PD_SW
-retention_power_net VDD_SW
10.添加retention policy -retention_ground_net VSS
set_retention_control PD_SW_ret
-domain PD_SW
-save_signal {save high}
-restore_sign {restore high}
1.定义各个电压数值;2.定义横坐标;3.定义纵坐标 + 给数值
1.定义各个电压的数值
add_port_state VDD -state {HV 1.08}
add_port_state VDD_PD1
-state {HV 1.08}
-state {LV 0.7}
add_port_state u_dhm_core/pd1_sx/out
//power switch的out不同, 它的写法是 domain/ power switch name / out, out是
固定的
-state {HV 1.08}
-state {LV 0.7}
-state {OFF_state off} //OFF_state是我们自己定义的名称, off是关键字
add_port_state VSS
-state {GND 0.0}
2.定义横坐标
create_pst pst_table -supplies {VDD VDD_PD1 VDD_PD1S VSS}
3.定义纵坐标 + 数值
add_pst_state ON_LO -pst pst_table -state {HV LV LV GND}
add_pst_state ON_LO -pst pst_table -state {HV HV HV GND}
add_pst_state ON_LO -pst pst_table -state {HV LV OFF_state GND}
1.0 add_pst_state ON_LO -pst pst_table -state {HV HV OFF_state GND}
与1.0不同的地方在于定义各个电压这里
11.添加Power state table
add_power_state <object_name> -state state_name
demo:
[-supply_expr {boolean_function}]
[-logic_expr {boolean_function}]
[-simstate simstate]