低功耗代码设计风格

一、低功耗RTL设计的底层逻辑

动态功耗P_dynamic = α × C × V² × f ------ 重点是翻转率(α)负载电容(C)

静态功耗:泄漏电流,与门电路状态相关。

代码风格不同,综合出不同结构的门级电路,不同的翻转率和寄生电容对功耗有本质的影响。

作为前端设计的目标,用最小的硬件开销和翻转完成相同的功能。

二、时钟门控

时钟门控的核心思想 :当寄存器组无需更新数据时,关断通往该寄存器的时钟信号,使其停止翻转,从而消除该时钟子树下的所有动态功耗。

时钟门控在物理上对应集成时钟门控单元(ICG, Integrated Clock Gating Cell),其标准结构为:

  • 一个高电平使能的Latch (负沿锁存)+ 一个与门(AND)

Latch在时钟下降沿 锁存使能信号,确保en在时钟高电平期间保持稳定 ,再与clk相与,输出无毛刺的门控时钟。

三、低功耗收益

  • 节省功耗 ≈ (1 - α) × P_clock_tree(时钟树动态功耗)

当gating比例低于一定比例时,插时钟门控收益很小,因为本身也会消耗功耗。通常,门控率由项目规模和经验规定达标数值。

四、简述编码风格

1.组合逻辑避免无用翻转

  • 坏风格:assign sum = a + b;(a/b一直变化,加法器一直翻转)

  • 好风格:assign sum = en ? a + b : 0; 或使用时钟门控单元。

2.状态机状态编码以及case中的sel采用独热码