玩命加载中 . . .

block level clock gating

如果某个模块或者功能可以打开或关闭,且logic相对独立,则可以在这部分logic的时钟上加手动插入一个ICG,用模块是能控制ICG的开关,这样能最大限度的提升gating效率。

  1. ICG最好选取驱动能力较大的,以便于驱动足够多的DFF。

  2. ICG建议加一个wrapper,这样当需要替换其他工艺时,只需要将wrapper里的instance 换掉。

  3. 综合时对此类ICG设置don’t touch

论坛里面讨论low power RTL前端设计的帖子好像不多,许多大牛的书上来就谈工艺,半导体结构,让我高山仰止,但也只能心向往之(实在有些看不懂)。

工艺的提升带来的收益可能远比RTL深度优化高,如TSMC 40LP vs TSMC 28HPC+, 后者基本上比前者面积小一半,速度快一倍,dynamic power小40 ~ 50%,代价是leakage高3~4倍。在老工艺上如何绞尽脑汁优化设计,可能也很难达到这种效果。

但作为前端RTL designer, 一旦工艺选定,我们只能在自己的一亩三分地里面做到最好,本帖就此抛砖迎玉,结合自己的工作经验讨论下low power RTLdesign, 挖个坑,希望坛子里的大牛一起帮忙填坑

刚入行做design时,考虑的是Area 和 speed,近些年来,power变成了越来越重要的指标,有时候更是牺牲Area和speed来换取power的收益,毕竟有些领域, 电池容量是很难增大的。

有人做过大体统计,降低功耗的方法和收益大体如下,对于前端RTL 设计,最好用的还是clock gating, 收益最显巨,代价最小,
其他方法也能有可观的收益,具体还的依靠具体应用场景分析。

CPF, UPF, IEEE1801 这些名称的渊源可参阅《一文读懂power intent的历史:从CPF/UPF到IEEE1801》,1801的内容其实十分简明,概括来说一个完整的1801 文件可以分成三部分[1]

  • 区域划分: 上帝的归上帝,凯撒的归凯撒,包括supply set 跟power domain 两个东西。
  • 策略定义: 没有清规戒律,何以服众,包括isolation, level shifter, retention, power switch 四种策略。
  • 模式定义: 宿命就是划定的圈,听天由命也是宿命,只有power state.

SOC UPF结构图