专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
电源
IC设计基础系列之低功耗篇7:(数字IC)低功耗设计入门(七)——门级电路低功耗设计优化(续)
2019-07-14 00:41
发布
生成海报
站内文章
/
电源技术
16174
0
1655
来自:
http://www.cnblogs.com/IClearner/tag/%E4%BD%8E%E5%8A%9F%E8%80%97%E8%AE%BE%E8%AE%A1/
前面讲解了门级功耗的优化方法,包括静动态和总体的功耗。现在来记录一下门级层次(有点书也说是在系统级)常用的一种低功耗方法——
电源门控
。
①电源门控概述与原理
电源门控是指芯片中某个区域的供电电源被关掉,即该区域内的逻辑电路的供电电源断开
。电源门控(Power Gating)的设计如下图所示:
如果某一模块在一段时间内不工作,可以关掉它的供电电源(关掉供电电源可以使用MTCMOS开关,通常在使用后端工具进行布局布线时加入MTCMOS,这属于后端知识,这里不进行介绍)。断电后,设计进入睡眠模式,其漏电功率很小。唤醒时,为了使模块尽快恢复工作模式,需要保持关电前的状态。
保持寄存器
(retention register)可用于记忆状态。使用保持寄存器设计电源门控如下图所示:
下面来解释一下上面的设计:
·在睡眠模式,寄存器的电源
Vdd2被切断
,因此它的漏电功耗极小;这时候仅仅保持锁存器处于工作状态,寄存器的值保留在锁存器里。由于锁存器是用
高阈值电压
的晶体管组成,漏电功耗很低。
·当Restore信号被激活时,寄存器的电源Vdd2被加上,保留在锁存器里的值被载入到寄存器。寄存器在工作(活跃)状态时,它作为一般的寄存器工作。
Save/Restore引脚也称为电源门控引脚(power gating pins)
,它们被用于把电路置于适当的模式。
·电源门控模块的输出端需要使用
隔离单元(Isolation Cell)(我们在前面讲过)
,因为在睡眠模式时,模块的输出为不确定值。为了保证在睡眠模式时,下一级的输入不会悬空,插入隔离单元,提供一个"1”或”0”的输出,使下一级的输入为确定的逻辑值,如下所示:
ISO为睡眠控制信号
,用于控制隔离单元的运作。电路在
正常工作
模式时,
ISO=0,ISO_ IN=IN
。电路在睡眠模式时,ISO=1时,如果使用
下面左图
的单元作为隔离单元,输出逻辑为“1";如使用
下面右图
的单元作为隔离单元,则输出逻辑为“0":
②工艺库中的电源门控单元
进行电源门控设计,需要用综合库的支持。综合库中的电源门控单元的库模型如下所示:
下面是库模型的部分解释:
·单元级属性(Cell level attribute)
power_gating_cell:"type","type”不可以是“none”或空字符,它鉴别所描述的保持寄存器的类型。本例中保持寄存器的类型为PG_1。
·电源门控寄存器的功能描述
它是保持寄存器在活跃模式的功能。
·引脚级的属性(Pin level attribute)
power_pin_1~ power_pin_5列出了现有的电源门控信号的名字。例如,power_pin_1可以用于定义为睡眠(sleep)信号,power_pin_2可以用于定义叫醒(wake)信号。power_pin_[1-5]信号的默认值是寄存器处于非工作(disable)状况的值,可以是“0”或“1"。例如,如果当power_pin_1的逻辑值为“1”时,电路进入睡眠模式,那么,其非工作(disable)状况的值应该是逻辑“0”。
③电源门控设计流程
了解了电源门控的原理和综合库的电源门控单元,下面我们就来介绍电源门控的设计流程。使用电源门控的
设计流程和相应的脚本
如下所示:
下面进行解释一下部分命令:
·脚本中使用
set_power_gating_style
命令来映射保持寄存器。例如对于下面的代码
······
always@ (posedge clk) begin:sub_block_1
g=d;
end
······
set_power_gating -style -type PG_1 -hdl_block sub_block_1
命令可以把代码中的寄存器映射为保持寄存器。选项“-type PG_1”指定使用库中类型为PG_1的保持寄存器。选项“-hdl_block sub_block_1”指定把RTL代码中进程(process)名为“sub_block_1"中的所有寄存器用类型为PCG_ 1的保持寄存器代替。
· 脚本中使用
hookup_power_gating_ports
命令来自动插入power_pin[1-5]端口和层次模块的引脚。同类功耗引脚的端口或引脚会被连接在一起。例如属性同为“power_pin_1”的引脚将被连接在一起,其默认名为“power_pin_1"。下图为执行hookup_power_gating_ports命令后设计中插入端口和层次模块的引脚。我们可以使用选项“-default_port_naming_style”和“-port_naming_styles”来改变端口和/或层次模块引脚的命名:
下面的脚本用
set_power_gating_signal
命令指定把电源门控引脚与现有的端口或层次引脚连接起来,如下所示:
set_power_gating_signal -power_pin_index 1 [get_ports Save]
set_power_gating_signal -power_pin_index 2 [get_pins A/p1]
······
hookup_power_gating_ports
结果如下所示:
·最后,我们可以用
report_power_gating
命令报告设计中的电源门控单元,如下所示:
电源门控就到这里了,低功耗设计入门也快接近尾声了...
Ta的文章
更多
>>
IC设计基础系列之低功耗篇7:(数字IC)低功耗设计入门(七)——门级电路低功耗设计优化(续)
0 个评论
C++实现一个类并包含构造函数,拷贝构造函数,赋值函数,析构函数
0 个评论
第十届蓝桥杯大赛选手资源数据包(电子类)
0 个评论
热门文章
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮