当前位置:   article > 正文

芯片资深IC设计工程师面经系列(五)低功耗设计_数据的有效位宽会影响芯片功耗与面积

数据的有效位宽会影响芯片功耗与面积

低功耗设计也是面试过程中必不可少的环节。功耗主要分为静态功耗和动态功耗。

静态功耗又称为漏电功耗/leak_power,计算公式: P_{leak}=V_{DD}*I_{leak}

动态功耗又可以分为internal power(cell 的短路功耗P_{T}) 和switch power(开关功耗P_{C})。动态功耗通常远大于静态功耗。

7nm工艺下,一个寄存器通常等效为8~9个门电路

开关功耗是对负载电容充、放电所消耗的功率,短路功耗是由于两个MOS管在开关瞬间同时导通所消耗的瞬时导通功耗。

开关功耗PC计算公式: P_{C}=V_{DD}^{2}*C_{load}*f

短路功耗PT计算公式:P_{T}=V_{DD}^{2}*C_{eff}*f

低功耗设计一般从两个层面进行优化,系统层面和代码层面。

系统层面:

1.多电压设计:动态功耗与电压的平方成比例,降低片上的Vdd有助于显著降低功耗。CPU和缓存运行在高电压下1.0v,接口apif供电电压0.8v。注意电源域之间需要插入电平转换器。

2.多阈值逻辑:HVT,高阈值,低漏电电流,速度慢。LVT,低阈值,大漏电电流,速度快。关键路径使用LVT,非关键路径使用HVT。

3.多频率设计:主时钟根据实际应用可以工作在400M或者200M。phy进入L1.2时使用外部25M aux_clk时钟

4.电源关断:根据系统状态对部分区域进行power gating。

5.时钟门控:在帧间隙进行时钟门控clk_gating

门级层面:可分为静态功耗和动态功耗

1.降低静态功耗

①主要资源复用,buf和乘法器复用

②碎片化ram合并。当ram较小时,控制逻辑占了大部分,由于权值读取次数不多,动态功耗较小,因此减小静态功耗为主要目的。bit越宽,面积越大,功耗越大,越深频率越慢,尽量方正。拼接时尽量使用大块和宽度拼接,对面积友好。

③单端口ram替换双端口ram。如果应用场景清晰,尽量使用单端口ram,面积可缩小60%左右。如果不能分时复用,可分为多个bank,加上bank decoder逻辑,改为pingpang单口ram。

③ram小于1k时选择reg_file。优点是时序更优。动态功耗更低,因为使用reg是对ram读写只有单个发生反转,对于buff来说是对整体ram读写。因为SRAM较小时控制逻辑占比较大。选用reg_file面积更小。

⑤数据链路去掉复位

2.降低动态功耗

①对于位宽大于3的寄存器,写法上需要支持插入ICG,打拍信号加上if。

如下面代码,这时有else条件,综合工具可能不会自动插入ICG cell。

将else改为寄存器d端和q端异或,综合工具会自动插入异或门ICG cell,如下图。

else if(a^c)在检测c的值有没有变化,如果没有变化,else if(a^c)为假,会被gated;有变化,else if(a^c)条件满足被导通,c的值成功传递给a,逻辑功能和之前的代码是一致的。

②空余时间插入clk_gating

③buf读写为动态功耗的主要占比,选择复用方式,尽量减小buf读次数

④写buf拼接,将多次计算结果拼接成128bit寄存器,再写入,减小buf写次数

⑤不访问sram时,地址线和数据线不翻转

PT工具介绍:average和time-based两种方式

average :基于toggle rate来分析,翻转率的标准可以是默认、用户定义switch activity、或者根据后端给出的SAIF/VCD/FSDB文件

time-based:得到功耗数据与仿真激励的关系,是一个波形,显示每一时刻对应的瞬时功耗,额外给出peak-power基本文件:

PT计算功耗需要的输入件

1.带有功耗信息的logic库文件,.db格式;

2.网表文件,verilog格式的网表;

3.sdc文件,计算平均功耗;

4.spef文件,寄生参数信息

5.average模式下输入saif文件,记录翻转率(若没有,则需要人为设置翻转率)。time-based模式下输入VCD波形文件。

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/425173
推荐阅读
相关标签
  

闽ICP备14008679号