在之前的IC设计中,关注的参数主要是性能(timing)和面积(area)。 EDA工具在满足性能要求的情况下,最小化面积。功耗是一个不怎么关心的问题。 CMOS工艺在相对较低的时钟频率下具有相当低的功耗,漏电流可忽略不计。
然而,近年来,随着晶体管密度和时钟频率的显著增加,功耗也极大地增加。同时,随着电源电压和晶体管阈值电压降低,漏电流成为一个很大的问题。 结果就是,功耗已达到不可接受的限度,功耗问题变得和性能、面积一样重要了
高功耗会在运行期间导致过高的温度。 这意味着必须使用昂贵的陶瓷芯片封装,代替塑料封装,并且在产品工作时,通常需要复杂昂贵的散热器和冷却系统。
笔记本电脑和手持电子设备可能会发热,变烫。较高的工作温度也会降低芯片的可靠性。
高功耗还会缩短便携式设备(如笔记本电脑、手机和个人电子产品)的电池寿命。 随着产品中添加更多的功能,功耗会增加,电池寿命会进一步缩短。 电池技术已落后于功耗的增加。
功耗的另一个影响就是数以百万计的计算机、服务器和其他大规模使用的电子设备的供电成本。即使微处理器或其他芯片的功耗略微降低,也可以为用户节省大量的总成本,并且对环境也有好处
设计人员必须考虑两种类型的功耗,动态功耗和静态功耗。 动态功耗是指在晶体管开关期间的功耗,因此它取决于时钟频率和开关活动。 静态功耗是由于晶体管泄漏电流而产生的功耗,与时钟频率或开关活动无关.
动态功率是电路逻辑转换期间消耗的功耗,由两个部分组成,开关功耗和短路功耗。 开关功耗来自对电路负载电容充放电的功耗。 短路功耗来自在电路逻辑转换期间,流过PMOS-NMOS的短路电流
所以,动态功耗取决于电源电压和电容负载以及时钟频率和开关活动
在早期的CMOS技术中,漏电流可以忽略不计。 然而,随着晶体管尺寸和阈值电压降低,泄漏功耗正在变得越来越大,有时甚至接近动态功耗水平。
无论时钟和晶体管开关活动如何,只要向晶体管供电,就会发生漏电流。 通过减慢或停止时钟不能减少泄漏功耗。
但是,可以通过降低或关闭电源电压来减少或消除泄漏功耗;
在数字IC设计中,我们常见的降低功耗的方法:
1.clock gating 门控时钟技术 众所周知,在数字IC设计中,时钟信号的翻转率是比较高的,因此它的功耗约占整个芯片功耗的20-30%。传统的设计方法是时钟信号一直是存活着的(常开),门控时钟技术就是根据设计,将暂时不用的模块的时钟信号通过一个控制信号gating住,降低这个模块的时钟信号翻转率,从而降低芯片功耗的一种技术。clock gating的加法也有很多,有在rtl级就例化进来的gating(往往是比较root的gating),也有综合阶段工具自动加进来的。从数字前端设计的角度,clock gating是想越靠近root端越好(因为一个gating可以控制更多的寄存器或者时钟单元),一旦将某个gating关掉,能够节省较多的功耗。因此,在数字后端实现过程中,经常会碰到到gating使能端E pin的setup比较难meet,主要原因是这类gating比较靠近root导致的
2.power gating 在数字IC后端设计中,经常采用这个策略降低功耗。在后端实现过程中,加入MTCMOS来控制标准单元的开关
3.Multi vt cells 这个就是在数字IC后端设计实现过程中,将某些不是critical path的地方尽量用HVT或者RVT,降低leakage。当然这个需要与performance,area做一个tradeoff。因为用HVT或者RVT,由于timing不好meet,工具优化的比较困难,可能反而会导致面积越优化越大。
4.DVFS技术 DVFS(Dynamic Voltage and Frequency Scaling)动态电压频率调节本质上是一种低功耗技术,目的是根据的芯片当时的实际功耗需要设定工作电压和时钟频率,这样可以保证提供的功率既满足要求又不会过剩,从而可以降低功耗。比如数字芯片中,CPU模块(比如8核cpu),在需要跑分的时候,将给cpu供电的电压通过软件调节到更高的电压(overdrive),获得一个更高的频率。在实际某个应用场景下,可能cpu只需要一个较低的频率时,可以将电压调节成一个较低的电压(underdrive)来实现
一味的降频降压当然是不能降低功耗的,因为低频下运行可能使系统处理任务的时长增加,从而整体上可能反而增加了功耗。所以DVFS的核心是动态调整的策略,其目的是根据当时的系统负载实时调整,从而提供满足当时性能要求的最低功率,也就达到了最低功耗。制定调整策略前,先找出系统中的耗电大户即CPU GPU这些模块。需要统计出这些模块的负载情况,基本的策略当然是工作负载增加则升频升压,工作负载降低则降频降压
5.Well bias 这个方法可以动态调整偏置电压,从而实现降低功耗的目的