(2)power gating(电源门控)

一、什么是power gating?

  随着工艺制程的减小和芯片规模的扩大,芯片的leakage的比重越来越大,在数字后端实现时必须要考虑到leakage的优化,而优化leakage的手段之一就是实现power gating。

  power gating是指芯片中某个区域的电源被关闭,即通过切断电路电源来节省leakage,设计如下:

   如果某一模块在一段时间内不工作,可以关掉它的供电电源(关掉供电电源可以使用MTCMOS(多阈值cmos)开关,通常在使用后端工具进行布局布线时加入MTCMOS),控制开关由两种方法:一种是细粒度(fine grain),即每个标准单元内部都带有电源开关;另一种是粗粒度(coarse grain),就是所有标准单元被一组开关所控制。可以想象,细粒度这种方法对面积的影响会非常大。

  断电后,设计进入睡眠模式,其漏电功耗将极大减小。唤醒时,为了使模块尽快恢复工作模式,需要保持关电前的状态。有几种方法可以实现这一目标。例如,断电前可以将模块内的寄存器内容复制到模块外的RAM中,然后在上电后再复制回来。第二个方法是利用保持寄存器(retention  register),这种寄存器通过不断电的方式临时存储关断模块的信息,当关断模块重新上电后又迅速将存储的信息反馈给原来的模块。使用保持寄存器设计电源门控示意图如下:

   该电路的工作原理如下:

  •   在睡眠模式,寄存器的电源Vdd2被切断,此时由Vdd1对保存寄存器供电,保持寄存器的值在锁存器中,而由高阈值电压晶体管组成的锁存器漏电功耗很小。
  •   当Restore信号被激活时,寄存器的电源Vdd2被加上,保留在锁存器里的值被载入到寄存器。寄存器在工作(活跃)状态时,它作为一般的寄存器工作。Save/Restore引脚也称为电源门控引脚(power gating pins),它们被用于把电路置于适当的模式。

  特别注意的是,power gating的输出端采用的是ISO(ioslation cell,隔离单元)模块,因为在睡眠模式时,模块的输出为不确定值(无效信号)。为了保证在睡眠模式时,下一级的输入不会悬空,插入隔离单元,提供一个"1”或”0”的输出,使下一级的输入为确定的逻辑值。

  为什么要把输出用ISO隔离成常数呢?主要有两个原因:1. 防止虚假的信号传播到未关掉电源的域,造成逻辑错误;2. 防止瞬态开路电流产生的静态功耗;

  ISO模块的具体结构会在下面进行介绍。

二、power gating的性能

  理想情况下,power gating可以完全消除电路中的静态功耗,可实际电路中的power gating只能关闭动态功耗,静态功耗只会减小,不会消失,因为power gating技术仍会引入一些always on的cell(如switching cell、ioslation cell、retention cell等),他们的电源不能关断,会带来静态功耗。

  下图展示了power gating电路的动态功耗和静态功耗在active和sleep模式下的变化:

  从图中可以看出,power gating节省的功耗就是中间凹下去的坑所占的功耗,因此在设计时,需要充分考虑这个因素,例如,如果芯片一直在工作(duty cycle比较大),那么power gating的收益就比较低。

 

三、power gating使用的三种单元

1.开关结构设计

  以下给出power gating控制电源开关的两种类型

  可以看到,第一种是pmos实现的Header类型,用来控制电源的接通与否,放置在VDD和模块的电源引脚之间;一种是nmos实现的Footer,用来控制GND的接通与否,放置在VSS和模块接地引脚之间。

  电源开关的原理如下:P-MOSFET控制VDD。当TURN_OFF信号为高电平时电路关闭,P-MOSFET关闭,则GATED _VDD此时是断开状态。当TURN_OFF信号为低电平时电路打开,同时P-MOSFET打开,此时GATED_VDD的电压值就是VDD_SUPPLY

  由于Footer在sleep模式下漏电功耗更大,因此在先进工艺中更多的采用Header。

  同时,要合理地选择power gating的数量、驱动强度和位置,以保证在模块工作时达到可接受的电压降(IR Drop)

2.IOS(ioslation cell,隔离单元)

  ISO模块的示意图如下:

   

  iso cell 有一个控制端 EN, 当 EN 无效时, A 端信号直接送到 Y 端,此时 iso cell 等效于一个buffer; 当 EN 有效时,buffer 断开,Y 端保持固定的高电平或者低电平;同时,为了保证isolation cell能够在power down的时候仍然能够正常工作,一般来说isolation cell都会有一个primary power和一个secondary power,后者能够保证前者power down时器件仍然能够工作。即如上图所示: iso cell 的两组 power:primary power VDD 和 backup power VDDB,当 左边domain 关掉时, VDD off,此时就由 VDDB 供电,维持 Y 端的固定电平。

  AND和OR门都可以组成一个isolation cell。ISO两种类型:

  1.   AND类型:输出iso成0;
  2.   OR类型:输出iso成1;

  

3.保留寄存器

  为了避免断电后数据丢失,需要对数据进行保存,使得当电源启动时能快速恢复模块的操作。下面几种方法是常用的保存和恢复电源门控模块的内部状态方法: 

  •   基于读写寄存器的软件方法;
  •   基于扫描链的芯片状态存储方法;
  •   基于寄存器的保持寄存器的方法。

  下面主要对第三种方法进行介绍,这也是最常用的一种方法

  基于寄存器的保持寄存器的方法是一般寄存器加一个“影子”寄存器,该寄存器可以在掉电期间保留寄存器状态,并在加电时将其恢复。与主寄存器不同,影子寄存器由于随时都要存储主寄存器信息,所以它始终处于上电状态,但这种寄存器尽管一直上电,但它的漏电功耗却很小,可以弥补普通寄存器带来的漏电功耗过高的问题。 

   如图所示,主寄存器(触发器的主锁存器(Master Latches)和从锁存器(Slave Latches))均由开关电源轨“VDD_SW”供电。CLK,D和RESETN引脚均在主寄存器上运行,从而驱动Q输出。此外,还有一个影子寄存器“RET”,用于保存状态并将其恢复到主寄存器。影子寄存器由始终处于供电状态的“VDD”供电。

  如图左侧所示,当SAVE信号有效时,主寄存器中的信息将由影子寄存器进行保存。当RESTORE信号有效时,影子寄存器中的信息又会重新返回到主寄存器中,这样就实现了当某个模块关断后以及恢复后保证了电路的功能正常。其中SAVE和RESTORE是电平敏感信号。如图右侧所示,当RETAIN信号有效时,影子寄存器进行保存主寄存器的状态。当RETAIN信号无效时,影子寄存器中的信息又重新返回到主寄存器中。其中RETAIN是边缘敏感信号。  

四、power gating的实现

  实际的power gating有两种做法:第一种是暴力做法:两个电源域,一个电源域引出单独的power pin脚,物理断电,这种办法适用于非常长时间的关断;如果想用内部控制关断的话就需要采用第二个方法,在片上实现一个controller。

  如上图所示,首先需要一个power gating controller. 通过power swithing fabric来切换电源,整个power swithing fabric由一堆MTCMOS级联而成,可以理解为这是个开关,这样就能把中间的block电源切换掉,例如从VDD切换成VSS。但一般情况下关断最好是VDD变成VSS。因为多电源域一般是共地的,但VDD各不相同。把VSS变成VDD还有点困难的。

  power gating主要大头还是个后端问题。对于架构要分清楚要有几个电压域,芯片有几种低功耗模式。对于前端要搞明白接口信号是啥,同时要实现一个控制器用来断电和唤醒电源域。对于后端要正确实现电源域,加上隔离模块等等。在后端中使用power gating的流程设计和相应的脚本可以参考博客:(数字IC)低功耗设计入门(七)——门级电路低功耗设计优化(续) - IC_learner - 博客园 (cnblogs.com)

 


写于2023-12-31 17:18:55,新年快乐

 

posted @ 2023-12-31 17:24  xuxuxu69  阅读(642)  评论(0编辑  收藏  举报