一般考虑低功耗问题,主要是从系统供电、使用问题、性能问题、成本考虑、可靠性、竞品等几个方面展开。
低功耗设计方法有很多:系统级而言,有动态调压调频(DVFS)、电源门控(Power Gating)、时钟门控(Clock Gating)等手段;深入到RTL底层,有很多跟代码风格相关的小技巧。
系统级低功耗手段
- 软硬件划分,合理划分软化及硬化逻辑,综合评估,达到功耗最优目标;
- DVFS,动态调压调频,根据性能场景,动态切换,灵活控制功耗;
- Multiple Voltage,划分不同电源域,在满足芯片各组件正常工作前提下,精准控制供电;
- Power Gating,根据业务场景,对于不需要工作的模块,关闭其电源,从源头降低功耗;
- Clock Gating,基本思路同Power Gating,根据业务场景,关闭不需要工作的模块时钟,降低翻转;
模块级低功耗手段
- Clock Gating,优化模块级CG,根据应用场景动态控制模块CG;
- 操作数隔离,避免冗余信号翻转,减少寄存器冗余翻转;
- ICG条件优化,控制信号拼位做ICG;
- RAM拆分,大位宽Counter拆分;
- 算法层面的考虑,并行 or 串行,算法模块设计复杂度等;
后续有机会的话,再补充一些前端常用的其他手段,或者中后端常用的低功耗手段。
来源地址:https://blog.csdn.net/main_michael/article/details/133414804