jake的个人空间 https://blog.eetop.cn/1592 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

Voltus Static Power 与 Dynamic Power 一致性

热度 12已有 399 次阅读| 2024-2-4 14:25 |系统分类:芯片设计

网友haier822在这里问了一个很好的问题。

https://bbs.eetop.cn/thread-963639-1-1.html

以前也曾经注意到static power报出的数值和dynamic power有不同,没有深究。这次花了点时间研究,找到了原因,记录一下。


首先Voltus Static Power analysis这个名字起得非常不好。这里的static并不是静态功耗的意思,而是Voltus计算平均功耗的算法之一。个人觉得Voltus Static Power 算法适用于项目中后期而不是final阶段,如缺失VCD的场景。


到了final阶段,如果DEFSPEFVCD都有了,Voltus Static Power算法是可以得到与Voltus Dynamic Power一致的功耗值的,但是需要改动一下设置。

set_power_analysis_mode -method static -static_netlist def

这里-static_netlist 默认是verilog。根据Cadence提供的文档,基于verilogpower analysis算法精度低于基于DEFpower analysis


同时,Cadence的文档也指出,使用Voltus Dynamic Power Analysis算法也可以计算平均功耗。

set_power_analysis_mode -method dynamic_* -write_static_currents true

这里必须加上-write_static_currents true


如果其他输入一致,VCD选取的时间段完全一致,基于DEFVoltus Static PowerVoltus Dynamic Power得到的数值完全一致。这里要特别注意VCD选取的时间段一致。从这个意义上讲,到了final阶段,再跑Voltus Static Power就显得冗余了。


这里要注意的是,通常计算平均功耗时需要比较长的时间段,推荐至少是N个主时钟周期。跑Voltus Dynamic Power的时候,取这样一个比较长的时间段,生成的power.db会比较大。后续跑Voltus Dynamic Rail的时候,power.db过大,rail analysis就跑不动了。个人推荐的解决方法是建两个目录,如dyn_powerdyn_rail

dyn_power只用来算平均功耗,VCD时间段取得长一些。跑完report_power后,看一下电流waveform,在电流波形中找到最大的尖峰,记录下时间。注意,尖峰的绝对时间等于波形里的时间加上VCD-start指定的时间。

dyn_rail中先跑一次dynamic power,但这次VCD时间段取的时间要小一些。通常dynamic rail50ps的分辨率,Cadence推荐采样1000点做dynamic rail analysis,对应的VCD时间段大小就是小于等于 (1000 – 1)*50ps,我们在VCD里取包含最大电流尖峰的一个小于49.95ns的时间段就可以了。这样生成的power.db小,后续的rail analysis就没有任何计算容量的问题了。



点赞

发表评论 评论 (11 个评论)

回复 haoshiyang 2024-2-29 11:57
我想问下  redhawk dynamic power跑的时候 分析出来sram上的leakage power 占比70%以上 。比如分析出一个芯片功耗1.2w,sram的leakage power 都0.7w,我查了lib发现这些sram的leakage power 加起来乘以100好像都不没有这么大,请问这是怎么回事啊?
回复 jake 2024-2-29 21:52
Redhawk没有用过,不太好评论。理论上leakage power应该就是根据.lib里的数字算的,Redhawk报的SRAM leakage应该就是.lib里的电流乘上电压,不知道Redhawk哪里是否设置有错
回复 haoshiyang 2024-3-4 14:00
jake: Redhawk没有用过,不太好评论。理论上leakage power应该就是根据.lib里的数字算的,Redhawk报的SRAM leakage应该就是.lib里的电流乘上电压,不知道Redhawk哪里是 ...
我测试出来是我自己做的sram的APL文件出问题了,我看流程介绍用APL文件会更准些,就自己搞了一个sram的apl文件,但是用avm方式生成的 感觉还是不对!!!
回复 jake 2024-3-4 22:16
haoshiyang: 我测试出来是我自己做的sram的APL文件出问题了,我看流程介绍用APL文件会更准些,就自己搞了一个sram的apl文件,但是用avm方式生成的 感觉还是不对!!! ...
SRAM通常是memory compiler生成的,也许用memory compiler生成的APL会可靠一些
回复 haoshiyang 2024-3-5 09:25
jake: SRAM通常是memory compiler生成的,也许用memory compiler生成的APL会可靠一些
memory complier生成的apl文件是啥啊?我在compiler里找了半天好像没有APL类型的文件啊,有什么关键字吗?
回复 jake 2024-3-5 11:15
haoshiyang: memory complier生成的apl文件是啥啊?我在compiler里找了半天好像没有APL类型的文件啊,有什么关键字吗?
查了手边的一个arm sram compiler,确实不支持生成APL view,也没有Voltus PGV
回复 haoshiyang 2024-3-5 19:58
  
回复 leluo 2024-4-2 19:06
楼主你好 请教一个问题 我跑static power的时候 read_activity_file不填start和end time也能跑出来一个功耗 这个值有啥意义吗 我拿它和全区间跑出的功耗值(start和end设成整个vcd的范围)对比 发现差的很大
回复 jake 2024-4-3 01:08
leluo: 楼主你好 请教一个问题 我跑static power的时候 read_activity_file不填start和end time也能跑出来一个功耗 这个值有啥意义吗 我拿它和全区间跑出的功耗值(star ...
目前没有试过不加-start -end,需要做个试验。建议用simvision打开vcd看一下,是否start,end确实是全范围,有时候vcd刚开始很长一段是空的,到某个时间点才开始有波形。这样的vcd -start 0和-start some_time跑出来肯定是差很多的
回复 leluo 2024-4-7 18:26
jake: 目前没有试过不加-start -end,需要做个试验。建议用simvision打开vcd看一下,是否start,end确实是全范围,有时候vcd刚开始很长一段是空的,到某个时间点才开始 ...
谢谢 楼主再请教个问题 我跑vectorbased flow时候 用vector profile得到了vcd window的值 且产生了一个报告 这个报告里面的功耗和最终我用report_power报出来的功耗值差的非常大 但是前后两种报法的vcd window都是一样的 为啥会这样?
回复 jake 2024-4-8 02:29
leluo: 谢谢 楼主再请教个问题 我跑vectorbased flow时候 用vector profile得到了vcd window的值 且产生了一个报告 这个报告里面的功耗和最终我用report_power报出来的 ...
vector profile算法可能比较粗糙,只能用于比较各个区间,不能报出准确power值

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 1

    关注
  • 226

    粉丝
  • 89

    好友
  • 285

    获赞
  • 273

    评论
  • 2306

    访问数
关闭

站长推荐 上一条 /1 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-4-27 19:20 , Processed in 0.023213 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部