大家好,我是数字小熊饼干,一个练习时长两年半的IC打工人。我在两年前通过自学跨行社招加入了IC行业。现在我打算将这两年的工作经验和当初面试时最常问的一些问题进行总结,并通过汇总成文章的形式进行输出,相信无论你是在职的还是已经还准备入行,看过之后都会有有一些收获,如果看完后喜欢的话就请关注我吧~谢谢~
在之前的文章中,我们主要介绍了系统级、RTL级低功耗技术,这些低功耗方法主要依靠架构人员、软件人员和数字前端人员实现。本期文章让我们来聊聊门级低功耗优化方法,与之前介绍过的低功耗方法不同的是,门级低功耗方法主要依靠的是EDA工具实现。
一、路径平衡
芯片中存在大量的组合逻辑,当来自不同路径的信号输入至同一个逻辑门时,不同路径上的信号传输延迟导致了不必要的翻转,这就会导致大量的动态功耗的产生,因此,可以通过插入buffer的方法将不同路径的输入信号延迟修正至一致,使不同路径上的信号同时到达,这样就不会产生不必要的翻转。这种方法就是所谓的路径平衡,如下图所示:
如上图所示,通过插入buffer的方式增加了信号B的延迟,使得信号A与B同时到达与门,进而减少了由之前的“毛刺”所带来的动态功耗。
二、逻辑级优化
逻辑级优化是通过减少冗余逻辑、调整门的大小、重排序操作、引脚的交换/重新分配、重新映射、使用低功耗的标准单元进行设计等方法实现的门级低功耗方法。下面让我们开始对这些内容进行介绍:
2.1 逻辑门尺寸优化
简单来说,所谓的逻辑门尺寸优化就是在不同路径使用不同尺寸的逻辑门。
例如:在时序比较宽裕的非关键路径上可以使用一些较小尺寸的逻辑门,这样可以减小输入电容,从而减小前驱的翻转电流,进而降低了翻转功耗。但是这样也会增大信号的转换时间,对其时序造成一定的影响,因此可以对非关键路径上的逻辑门进行优化,以降低动态功耗。
2.2 引脚重分配
对于逻辑单元库的标准单元来说,其不同引脚的逻辑功能相同,但其负载电容与信号延时参数可能是不同的,因此可以使用负载电容低的引脚去连接翻转频率高的输入信号,这样就可以减少翻转频率高的信号的负载电容,减少充放电导致的动态功耗。
如上图所示,从上往下的引脚负载电容依次增大,输入信号a到d的翻转频率依次增大,因此,通过将信号按照d-a的顺序分配至各个引脚,可以实现降低功耗的目的,这种方法叫引脚重分配。
2.3 重排序
对于逻辑门来说,其各个输入信号的翻转率可能并不相同,因此可以将翻转频率大的输入信号分配至靠近输出的位置,以减少翻转率高的输入信号驱动的逻辑门数量,这种低功耗方法叫做重排序。下面让我们举个例子:
图中的输入信号b为翻转频率较高的信号,因此对信号b进行重排序操作,在排序前,信号b会驱动4个逻辑门(如左图所示),而排序后,只会驱动2个逻辑门(如右图所示),这就减少了内部电路的翻转,从而降低了动态功耗。
2.4 重映射
重映射相当于对逻辑进行优化,将冗余的逻辑门优化为具有相同功能且数量更少的逻辑门。
如上图所示,在重映射前f=((a & b) & ~(c & d)),使用了两级的与非门,这显然是可以优化的,在重映射后,只使用了一级的逻辑门OAI就可以实现相同的功能,显然降低了系统的动态功耗。
三、 物理级优化
所谓的物理级优化是在布局布线之类的物理实现时,通过降低翻转和减少负载电容来降低系统的功耗,物理级优化主要有以下几种方法:
- 使用低功耗的库;
- 设计低功耗的布局规划;
- 基于功耗优化的布局规划;
- 通过布局布线来减少毛刺;
- 在优化布局的试试调整buffer和连线的大小;
- 调整晶体管的大小来减少负载电容;
四、 总结
本篇文章主要讨论了芯片设计中的门级低功耗优化技术,与之前的文章里提到的系统级、RTL级低功耗技术相比,门级低功耗优化技术在低功耗设计中的层次较低,对功耗优化的占比也没有那么的大。不过我们仍需要了解并应用这些低功耗方法,并在不同的芯片设计阶段采用这些低功耗优化技术,旨在从多个角度降低芯片的功耗,提高能效比。
以下是该系列的往期链接:
ic基础|功耗篇01:影响芯片实际表现的重要指标——功耗的分类
ic基础|功耗篇02:系统级低功耗技术
ic基础|时钟篇03:低功耗技术之——门控时钟clock gating及锁存器latch的避免
ic基础|功耗篇03:ic设计人员如何在代码中降低功耗?一文带你了解行为级以及RTL级低功耗技术
如果你喜欢这篇文章的话,请关注我的公众号-熊熊的ic车间,里面还有ic设计和ic验证的学习资料和书籍等着你呢~欢迎您的关注!