(2)power gating(电源门控)

发布时间 2023-12-31 17:26:30作者: 想做坏女人的狗

一、什么是power gating?

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

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

   如果某一模块在一段时间内不工作,可以关掉它的供电电源(关掉供电电源可以使用MTCMOS(多阈值cmos)开关,通常在使用后端工具进行布局布线时加入MTCMOS),断电后,设计进入睡眠模式,其漏电功率很小。唤醒时,为了使模块尽快恢复工作模式,需要保持关电前的状态。有几种方法可以实现这一目标。例如,断电前可以将模块内的寄存器内容复制到模块外的RAM中,然后在上电后再复制回来。第二个方法是利用保持寄存器(retention  register),使用保持寄存器设计电源门控如下图所示:

   保持寄存器的工作原理如下:

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

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

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

  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;

  

 

二、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的两种类型

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

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

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

 

三、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,新年快乐