低功耗设计及其UPF实现第四节(最后一节)
低功耗设计方法学(4)
pst
在upf中,使用pst来定义每个pd之间的电压关系,工具也使用pst来检查isolation rules,leve shifter rules是否完全或者冗余。pst不在simulation中使用。
使用supply nets 定义pst(upf1.0)
根据要求我们可以得到上图的表格,但是我们需要使用upf的语言将它表现出来。
1. add_port_state <port name>
{ -state { name <nom> | <min nom max>| <off> }} //可以多次使用-state
2. create_pst <table_name> -supplies {list}
3. add_pst_state <state_name> -pst <table_name> -state <supply_states>
2和3的命令一起使用。可以得到下面的pst 。*通配符表示无论什么情况都可以。
使用supply set 定义pst(upf2.0)
和上面的一样,首先需要有定义的3个supply set。
add_power_state <object_name> -state state_name
[-supply_expr {boolean_function}] //关键字FULL_ON和OFF
[-logic_expr {boolean_function}]
[-simstate simstate]
下面是一个实际的pst例子使用upf2.0编写。
注意下面第三排文字对V3p0_g的定义,他虽然是ground,但是需要定义FULLON,但为0
简单examples
1. 下面的这个图有什么问题?
答案:iso_en来自的pd不能断电。但是pd3会断电。
2. 下面的upf描述有什么问题?
答案:-location应该接self,而不是parent,因为-damian的PD_B
3. 下面的upf描述有什么问题?
答案:一般的iso从off到on的pd,但是pd_b中会有off的时候,当off的时候,这个iso中的数据就从on到off,这是不合规的。而且,上图中的els的电源一边实在会掉电的pd_b,这也是不合规的。
4. 下面的upf有什么错误
答案:-logic_expr {sw_ctrl} 和-off_state {swoff !ctrl} 不一样。所以这是错的。
5. 下面两个图中对iso的控制错误的是?
答案:第二个图对iso的控制出错,应该把iso的控制放在TOP而不是在p3内部。
综合练习
上图中整个设计主要是由一个 8051 控制器,通过 SFR 总线对其他模块进行控制,U_Des 是一个算法模块,U_Pcu 是功耗控制单元。
由于 U_Des 需要在较快的频率下工作,因此需要对 U_Des 进行一些特殊的设计,也就是对整个设计进行低功耗设计,如下所示:
上图主要描述以下信息:
1. 2 个电压域,TOP 以及 DES_DOMAIN。
2. 电源设计外部提供,分 1.2V 的 VDD12 和 1.0V 的 VDD10
3. 设计中除 DES 电路几乎所有电路工作在 1.0V 的 VDD 电压域。
4. U_Des 由于工作速度要求较高,工作在 1.2V 的 VDD12 电压域
DES_DOMAIN,但由于不使用的时候需要关断,以降低静态功耗,因此,通过一组 PowerSwitch 进行控制,控制信号来源为 U_Pcu 的 PcuSfrDatOut[0]输出。该电压域与 TOP 电压域共用 VSS 地信号。
5. 由于 U_Des 电路处于 VDD12 电压域,而 U_Pcu 处于 VDD 电压域,因此需要添加 Level Shifter 进行电平转换。
6. U_Des 电路输出信号,需要通过一个 Isolation Cell,在关断电源时提供稳定电平,而该电平为 1.2V,因此还需要利用 Level Shifter 转换成 1.0V 电压域信号,Isolation Cell 的 Enable 信号来自于 U_Pcu 模块的 PcuSfrDatOut[1]信号。
7. U_Des 电路中的寄存器需要使用 Retention Register,save 和 restore 控制信号分别来自于 U_Pcu 输出 PcuSfrDatOut[2]和 PcuSfrDatOut[3]经过 Level Shifter 产生的信号。
接下来,我们利用 UPF 描述该 DEMO 的功耗设计思路。
4.1 申明电压域以及虚拟电压接口
首先申明电压域,并申明 VDD、VDD12 以及 VSS 等电压端口:
create_power_domain TOP
create_power_domain DES_DOMAIN –elements U_Des
create_supply_port VDD
create_supply_port VDD12
create_supply_port VSS
根据上述指令,工具会识别出如下图所示中画圈的信息,电压域及虚拟电压端口开始出现:
需要注意的是电压端口只不过是虚拟存在的,并不是一定在顶层连接。
4.2 申明电源网络
接着申明每个电压域中的电源网络,建议从顶层往底层进行申明,如首先申明 TOP 的 VSS、VDD:
create_supply_net VDD
create_supply_net VSS
以上语句添加下图中画圈部分:
接着申明 DES_DOMAIN 的电源网络,但需要注意的是,如果需要插入 Level Shifter,最好是在与其有连接关系的电源域(TOP)同时申请电源线,并连接起来:
create_supply_net VDD12 //在top中定义VDD12这个线
create_supply_net VDD12 –domain DES_DOMAIN –reuse //DES_DOMAIN 的 VDD12 这根线与 TOP 的 VDD 那根线共用一个网络,因此需要 -reuse
create_supply_net VDD12G //在top中定义VDD12G这个线
create_supply_net VDD12G –domain DES_DOMAIN -reuse
create_supply_net VSS –domain DES_DOMAIN –reuse //之前定义了,所以直接reuse
create_supply_net VDD –domain DES_DOMAIN –reuse //之前定义了,所以直接reuse
以上语句添加下图中画圈部分:
然后将电源网络和电源端口连接起来:
connect_supply_net VDD12 –port {VDD12}
connect_supply_net VDD –port {VDD}
connect_supply_net VSS–port {VSS}
以上语句添加下图中画圈部分。
最后为每个电源域申明主电源网络来源,主电源就是该电压域普通逻辑工作使用的电源:
set_domain_supply_net TOP –primary_power_net VDD –primary_ground_net VSS
set_domain_supply_net DES_DOMAIN –primary_power_net VDD12G –primary_ground_net VSS
做完这一步,电源网络申明基本完成。
4.3 添加 Power Switch
create_power_switch des_sw
-domain DES_DOMAIN
-input_supply_port {in VDD12}
-output_supply_port {out VDD12G}
-control_port {des_po U_Pcu/PcuSfrDatOut[0]} // des_po为信号名,U_Pcu/PcuSfrDatOut[0]为hirachy
-on_state {state_on in {!des_po}} // {state_on是这里的state in是这里的name {布尔表达式}},这里只有一个控制,但是实际项目会有两个控制,Mother和dauter两个。这里表示!des_po为ps的开启信号。
-off_state {OFF {des_po}}
map_power_switch des_sw
-domain DES_DOMAIN
-lib_cell HDRSIHVTD0
create_power_switch 和 map_power_switch 在综合时只会检查语法,不会有实际效果,但在综合时将该 UPF 指令读入系统,可以由 DC 输出相应的 UPF 给 Synopsys 的 PR 工具,PR 工具可以自动识别这些指令,到时才会真正添加 Power Switch。2 句命令的结果示意在下图画圈中:
4.4 建立电源状态表格(Power State Table, PST)
在 Power Switch 插入以后,需要对电压域的有效电压,以及不同电压域之间的关系进行设置,同时建立电压分布及关断的情景(scenarios),可以用于静态电压分析、仿真等。
建立电源状态表格,可以参看以下upf描述:
第一步,定义state
add_port_state VDD –state {LV 1.0} #VDD 是 1.0V,属于低电压域(LV)状态
add_port_state VDD12 –state {HV 1.2} #VDD12 是 1.2V,属于高电压域(HV)状态
add_port_state des_sw/out –state {HV 1.2} #Power Switch 输出是 1.2V,属于高电压域(HV)状态,注意des_sw是刚刚定义的ps的名字,out是刚刚定义的ps的电压输出点。
-state {OFF off} #关闭状态(OFF),无电压(off) 再使用一次-state表示另外一种ps的状态为关闭
add_port_state VSS –state {ON 0.0} #VSS 处于常开状态(ON),电压 0V
第二步创建pst
create_pst design_pst –supplies {VDD VDD12 VDD12G} #建立一个 PST,由 3 个电源状态不同组成
第三步增加状态
add_pst_state design_work –pst design_pst –state {LV HV HV} #design_work 状态下,三组电源都开
add_pst_state stand_by –pst top_pst –state {LV HV OFF} #stand_by 状态下,des_sw/out 输出电源为关闭状态
需要注意 add_pst_state 的 -state 括号里的描述顺序,必须与 create_pst 的 -supplies 里一致,选择的状态必须与 add_port_state 的 -state 里描述的一致才可以。
这样就建立了下表所示的 PST,design_pst:
由此建立了 PST,分析工具或仿真工具就知道需要对哪些状态进行分析了。
4.5 插入 Isolation Cell
下面需要为 DES_DOMAIN 输出给 TOP 的输出信号添加 Isolation Cell。脚本如下所示:
# Isolation Cell
set_isolation des_iso_out
-domain DES_DOMAIN
-isolation_power_net VDD12 -isolation_ground_net VSS #隔离后只有 VDD12 供电
-clamp_value 1 #关电后输出逻辑 1
-applies_to outputs #对于所有输出添加
set_isolation_control des_iso_out
-domain DES_DOMAIN
-isolation_signal U_Pcu/PcuSfrDatOut[1] //只列出hirachy就可以了
-isolation_sense high #控制信号为高时 ISO 有效
-location self # Isolation Cell 添加在 DES_DOMAIN 里面
这样就可以产生如下图所示画圈部分电路:
4.6 替换 Retention Register Cell
接着需要使用 Retention Register Cell 将 DES_DOMAIN 中在关断电源后需要保留数据的寄存器替换为 Retention Register Cell,可以使用如下脚本:
# Retention Register
set_retention des_ret -domain DES_DOMAIN
-retention_power_net VDD12G -retention_ground_net VSS #retention_power_net 是关电的 Power,表示需要保持 VDD12G 电源域的数据
set_retention_control des_ret -domain DES_DOMAIN
-save_signal {U_Pcu/PcuSfrDatOut[2] high}
-restore_signal {U_Pcu/PcuSfrDatOut[3] low}
map_retention_cell des_ret
-domain DES_DOMAIN
-lib_cell_type RSDFCSD1
#RSDFCSD1 是带有异步置位的 Retention Register Type,可以从 lib 文件中 retention_cell 属性中看到。
根据以上描述,会按照下图画圈示意图描述电路:
4.7 插入 Level Shifters
插入 Level Shifters 是根据 PST 的定义进行,根据 PST 定义看来,DES_DOMAIN 和 TOP 之间需要插入 Level Shifters,其中 DES_DOMAIN 输出的 pin(Isolation Cell 的输出)需要插入 H->L 的 Level Shifter,而其输入则需要插入 L->H 的 Level Shifter。
插入 Level Shifter 在 Compile 过程中自动进行,也可以利用 UPF 命令 set_level_shifter 定义插入的规则。
# Level Shifter
set_level_shifter des_ls_lh
-domain DES_DOMAIN
-applies_to inputs
-rule low_to_high
-location parent
set_level_shifter des_ls_hl
-domain DES_DOMAIN
-applies_to outputs
-rule high_to_low
-location parent
插入 Level Shifter 后产生的电路变化示意图如下图画圈处所示:
低功耗设计及其UPF实现第四节(最后一节)相关推荐
- 低功耗设计及其UPF实现第一节
第一节:低功耗设计的基本单元和概念 大家好,最近疫情宅家,工作没有那么忙,所以写一下之前从事过的低功耗设计并和大家分享,希望大家多多提出不足.本次总结一共分为若干小节(还没定),我会从最最基础的低功耗 ...
- 低功耗设计——基于UPF进行设计
UPF, 统一电源格式UPF(Unified Power Format)是新思(Synopsys)公司通用的电源格式,是一组标准的类Tcl 语言的集合,用来描述芯片设计中的低功耗意图(Low-Powe ...
- 芯片低功耗设计之UPF简介
可以把芯片设计粗略分为三个部分:功能.时序和电源,它们分别对应RTL.SDC和UPF三种设计文件. 前端工程师对RTL和SDC肯定是非常熟悉的,但是UPF(SNPS叫UPF,Cadence叫CPF)更 ...
- 低功耗设计及其UPF实现第二节
通过上一节对基本概念的了解之后,我们对下面的基本概念进行跟进一步学习. Power domain 对于upf的实现,我们必须要有一个pd,哪怕只有一个aon的pd,任何一个逻辑只能属于一个pd,不能同 ...
- 低功耗设计及其UPF实现第三节
低功耗设计方法学(3) 本节学习一些UPF的描述,这些描述是实际项目最最使用的. Level shifter 从高电压到低电压不需要LS,反之需要. 时钟需要专门的LS. 图1中蓝色部分就是LS. 图 ...
- 低功耗设计(low power design)和UPF介绍(含代码示例)
目录 一.低功耗实现方法 1.多电压域技术(Multi-Voltage) 2.电源门控(MTCOMS Power Gating) 3.多电压+功耗控制+寄存器Retention技术 4.低电压stan ...
- 第四章第十一节数据资产盘点-设计数据资产标签
第四章第十一节数据资产盘点-设计数据资产标签 在形成数据资产目录以后,开始设计数据资产标签体系,例如对于一个字段"客户名称"来说,需要给这个客户名称打上一个标签,比安全等级是几级? ...
- (四)RTL级低功耗设计
前面介绍了系统级的低功耗设计,换句话说就是在系统级降低功耗可以考虑的方面.系统级的低功耗设计,主要是由系统级设计.具有丰富经验的人员实现,虽然还轮不到我们设计,我们了解一下还是比较好的.我们前端设计人 ...
- 转《MCU低功耗设计》
关键词: 低功耗设计, 无线通信产品, LoRa长距离, Contiki系统, 能耗实时跟踪 引言: 能耗对电池供电的产品来说是一个重大问题,一旦电能耗尽设备将"罢工".在< ...
最新文章
- GitHub开源的吃鸡版超级玛丽
- [王晓刚]深度学习在图像识别中的研究进展与展望(转发)
- java/javaee基础面试问题
- php合成图片设置图片大小,php 上传图片并按比例生成指定大小图_PHP教程
- 抱歉(HDU-1418)
- synchronized()_JMM(四):浅谈synchronized锁
- 计算机维修实训报告模板,[计算机维修实验报告模板.doc
- java link 使用_Java数据结构之简单的连接点(link)实现方法示例
- 古代气候暖和时,雪山雪线如何变化
- 晶振匹配电容容值计算总结
- Python春节特训营08:还记得大明湖畔的变量和函数吗
- 为什么Jmeter 运行时时到达持续时间不停止?
- 曾经排名第一的安全软件,为啥会变成流氓软件?
- JPA、EJB、事物管理、WebSphere ---相关内容整理
- VB--LBound() UBOUND()函数
- 微信小程序-传统开发模式实现授权注册登录流程【超详细,附源码】
- linux的qt下wsadata,Qtcpserver仅在调试器下返回listen函数的未知错误
- mysql子查询不支持limit问题解决
- 局域网分配适合的网络前缀
- 阿里巴巴计划今日中午推出1688.com批发网
热门文章
- 支持小米java文件阅读器_小米多看电纸书MiReader 桌面LauncherApp(自制软件)
- Origin批量滤波
- Android Activity 设置背景图片
- one 主格 复数 宾格_主格与宾格.ppt
- 北京理工大学计算机学院学生数,金福生_北京理工大学计算机学院
- 计算机硬盘空间不足怎么删,Win10硬盘空间不足?教你这样清理,瞬间多出10个G!...
- 7人制足球技战术要点
- 罗德里格旋转公式推导(自制)
- 接收sqlplus的值_ORACLE中的替换变量或替代变量:-------Oracle中sqlPlus -oracle 输出变量...
- 怎么看待“别人恐惧我贪婪,别人贪婪我恐惧 “这句话