赞
踩
低功耗设计也是面试过程中必不可少的环节。功耗主要分为静态功耗和动态功耗。
静态功耗又称为漏电功耗/leak_power,计算公式:
动态功耗又可以分为internal power(cell 的短路功耗) 和switch power(开关功耗)。动态功耗通常远大于静态功耗。
7nm工艺下,一个寄存器通常等效为8~9个门电路
开关功耗是对负载电容充、放电所消耗的功率,短路功耗是由于两个MOS管在开关瞬间同时导通所消耗的瞬时导通功耗。
开关功耗PC计算公式:
短路功耗PT计算公式:
低功耗设计一般从两个层面进行优化,系统层面和代码层面。
系统层面:
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文件,计算平均功耗;
5.average模式下输入saif文件,记录翻转率(若没有,则需要人为设置翻转率)。time-based模式下输入VCD波形文件。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。