低功耗是当今大多数芯片的关键要求。 芯片的功耗越大,设备就会越热,运行速度越慢。并且在高温下,芯片的可靠性会降低。 本文讨论如何在RTL级对功耗进行优化。
那么在RTL编码期间可以有哪些方法降低功耗?
在芯片逻辑转换期间,CMOS电路中的任何开关活动都会产生瞬时电流,增加功耗。设计中最常见的存储元件是同步触发器,它的输出会在输入数据和时钟改变时改变。 因此,如果输入数据和时钟只有在需要时才存在或者触发就可以减少电路信号开关活动,降低功耗。因此总结了一些降低功耗的机制:
1、减少输入数据的切换。
2、减少触发器的时钟切换。
3、减小芯片面积,因为可以减少门/触发器的开关切换。
如何减少触发器的输入数据切换来降低功耗?
1、减少数据切换
对于相对于时钟很少更新的触发器来说,应该仅在合适的时候更新触发器,避免触发器输出没有必要的更新。这可以通过使能触发器实现,如下图所示:
但是此类方法有副作用:
(1)使能触发器引入了额外的逻辑到触发器的D输入,可能会增加关键路径的延迟。
(2)增加芯片的面积
2、减少触发器时钟切换
即利用门控时钟的方法。
在大型设计中门控时钟都是通过综合工具完成的,无需手动实现。此外,门控元件AND门可以根据使能的逻辑电平和触发器边沿触发类型改变。
锁存器时钟门控有哪些副作用,如何去修复?
(1)可测试性问题。 因为使用锁存器门控时钟时,时钟信号现在仅受输入控制信号的控制。在测试时,如果控制信号为低,则时钟信号无法传播。
要解决此问题,需要添加其他逻辑增强可测试性。一种方法是在锁存器的输入端引入一个控制逻辑,使锁存器在扫描测试期间处于“使能”状态。
在RTL设计阶段其他的低功耗设计技术:
1、高频信号通过尽可能少的逻辑。一些必要的逻辑在高频下运行,其余逻辑可以相对较低的频率下运行。
2、仅使用必要数量的触发器来存储数据值,即如果仅使用32位寄存器的4位,则不需要剩下的28位寄存器。通常,未使用的触发器会综合工具优化掉
3、使用芯片片选信号。来自CPU的地址不断变化,不会一直指向所有的模块。在这种情况下,最好在各个模块根据地址译码生成一个片选信号,以减少不必要的信号切换。
4、状态机选择格雷码而不是二进制编码:
由于格雷码转换只有一位发生变化,因此触发器切换以及它所驱动的逻辑的切换都会减少。但是,格雷码比二进制编码需要更多的触发器。
5、使用多路复用器而不是片上三态总线,因为三态总线可能会发生总线竞争,此时会导致内部总线短路。多路复用器的选择避免了总线竞争,但会增加逻辑门的数量。三态总线还需要内部上拉电阻和更高的电流驱动。
除RTL级外,有哪些系统级技术,影响芯片的功耗?
1、降低工作电压:功耗和电压的平方成正比,在较低的电压下工作是一种降低功耗的方法。许多工艺厂商都有专为低功耗而设计的库。
2、降低工作频率:功耗和频率成正比。设计可以考虑在较低的频率下工作,然后增加总线宽度,以维持数据速率要求。例如, 100MHz的32位总线的数据传输与50MHz的64位总线相同。
3、降低走线的电容。
在后端分析阶段,可以采用哪些降低功耗的技术?
功耗和时序敏感的逻辑走线更短:因为走线电容是长度,宽度和阻抗的函数,长的走线路径通常具有更高的电容。 由于动态功耗与电容成比例,即电容越低功耗越低。所以,相互通信的逻辑块placement需要彼此相互接近