PrimeTime PX(Power Analysis) userguide阅读笔记

  • introduction
    • 用PTPX的好处?作为前端设计人员来说,个人理解:
    • averaged power analysis
    • time-based power analysis
    • power modeling overview
      • 静态漏电流功耗
        • 本征漏电流功耗
        • gate漏电流功耗
      • 动态功耗
        • 内部功耗
        • switching开关功耗
    • 设置power derating factor
    • 生成power models
  • PTPX power analysis flow
    • 1. 使能power分析
    • 2. 执行vector分析
    • 3. 吃design
    • 4. 设置变量
    • timing分析
    • 检查功耗分析的潜在error
    • 选择功耗分析模式
  • 平均功耗的分析
  • time-based功耗分析
  • multivoltage功耗分析
  • 时钟网络的功耗分析
  • 报告report命令
  • 功耗的图形界面
  • toggle-rate和switching activity区别?
  • 参考文档

很多地方,是个人理解。也许有误差。看到勿怪。
功耗分析,用ptpx;
功耗优化,除了设计者从功能结构角度去修改设计外;也可以利用DC power compiler工具去优化功耗(优化策略:包括门控时钟之类的)。详情见:
DC PowerCompiler 功耗相关的综合 userguide阅读笔记
http://blog.csdn.net/u011729865/article/details/54378379

introduction

PTPX,是基于primetime环境(简称pt),对全芯片进行power静态和动态功耗分析的工具。包括门级的平均功耗和峰值功耗。
可以说PTPX就是pt工具的一个附加工具。个人补充理解:能与pt时序分析脚本运行环境放在一起,可以计算出平均功耗和time-based功耗。

用PTPX的好处?作为前端设计人员来说,个人理解:

  1. RTL/pregsim/postgsim三个步骤环节,RTL不支持ptpx功耗分析,netlist才可以采用ptpx分析功耗。
  2. 通过功耗的统计数据,可以在设计环节就可以发现功耗的问题,比如某些模块功耗太大;由于数据报告了所有层次结构下的功耗信息,所以很容易找到功耗关键的点。
  3. 平均功耗分析,可以找到当前设计的关键功耗点。
  4. time-based功耗分析,可以找到瞬态功耗与仿真激励的关系。可以确认峰值功耗是否符合预期要求。

averaged power analysis

简单的说,就是平均功耗。

time-based power analysis

简单的说,基于时间的功耗分析。所以该分析下,会产生每一个时刻的功耗统计,包括平均功耗、峰值功耗等。
经过ptpx实践,个人理解:
1. 平均功耗,对应的是一个报告。
2. time-based功耗分析,对应的是一个波形,显示每一时刻对应的瞬时功耗。而且报告会额外给出peak-power(包括peak-time时刻)的信息。

ptpx支持下述方式:

  • vector-based/vector-free(基于vcd/不用vcd。)
  • peak-power和average-power
  • RTL/gate-level
  • VCD/FSDB/SAIF
  • multivoltage和powerDomain

power modeling overview

PrimeTime PX(Power Analysis) userguide阅读笔记_第1张图片
图中:
1. lib表示单元库的.lib文件,.lib不仅仅有时序信息,还有area、power信息。
2. vcd指用户通过仿真得到波形文件,里面记载着待分析模块的所有端口和内部线网的跳变信息。从而确定待分析模块的switching功耗。

功耗分类:
- Leakage Power
Leakage Power由标准单元库的cell .db提供相关数据。
- Dynamic Power(包括internal和switching power)
internal power由标准单元库的cell .db提供相关数据,但与激励有关系。
switching power由电压、网表电容、线开关计算得出(我觉得net不能仅仅说是线,而应该是管子源漏栅的连线。电容是管子和线的寄生电容)。与激励有关系。


PS: 静态漏电流功耗和动态功耗的计算结果,用于peak power和average power的分析。

.db文件的power model包括:
- NLPM(nonlinear power model)
- CCS(composite current source)—推荐模型,相对NLPM,更先进更精确。

静态漏电流功耗

静态漏电流功耗,是指cell不发生switching开关切换的时候,去计算得出。ptpx,完全使用单元库(.db文件)的漏电流功耗查找表得出结果。

静态漏电流功耗 = 本征intrisic漏电流功耗 + 栅极gate漏电流功耗

本征漏电流功耗

主要是源漏之间的电流引起。原因是深亚微米工艺下,阈值电压越来越低导致管子无法完全关闭,使得源漏之间发生导通。
本征漏电流功耗,主要跟电压、管子state有关。

gate漏电流功耗

源到栅、栅到漏之间的电流引起。
gate漏电流功耗,主要跟电源电压、栅极氧化层厚度有关。跟温度关系很小。

动态功耗

动态功耗与电路的激励有关。
它又分为内部功耗和开关功耗两部分。

内部功耗

内部的概念,是指cell以内。
包括充放电导致的功耗和短路功耗。
充放电的意思是,管子的寄生电容,导致充放电。
短路功耗的意思是,栅极在切换的时候,使得P管、N管同时导通,从而引起电源到地的通路。

简单的库单元,动态功耗主要来自短路功耗。
复杂的库单元,动态功耗主要来自充放电。

switching开关功耗

负载电容的充放电过程,导致。具体原因:
1. P管导通,负载电容充电;
2. 因为管子输入端口switching,N管导通,负载电容开始放电。
3. 正是由于上述充放电,导致产生了switching开关功耗。
与内部功耗的子类—充放电功耗,区别是范围不限于cell内部。

设置power derating factor

就是一个人为工程经验的比例因子。默认是1.0。
注意:这个power是电源的意思,不是功耗。是电源因为环境不一样,导致的误差。纯属个人理解,未确认。

生成power models

生成power models之前,要执行时序分析和功耗分析。
在此基础上,利用extract_model -power命令去产生包含时序和功耗数据的power models。

PTPX power analysis flow

PrimeTime PX(Power Analysis) userguide阅读笔记_第2张图片

1. 使能power分析

set power_enable_analysis true

2. 执行vector分析

因为动态功耗的分析,与仿真激励的vcd文件有很大关系。vcd的activity活跃度越高,功耗越高。为了评估仿真激励vcd文件的activity活跃度,可以用下述命令:

write_activity_waveforms有参数的。具体使用办法查看man

吃格式vcd或者fsdb的波形文件,并对该波形文件分析activity活跃度。这个是为了在power分析之前,查看仿真激励的活跃度的。这一步骤,对功耗分析来说,不是必要的。

3. 吃design

  1. 支持verilog、vhdl网表;db、ddc、Milkyway格式的网表也可以。
  2. logic库,必须是.db格式。
  3. 寄生参数信息,应该在Milkyway格式的文件里。
  4. 为了计算平均功耗,需要吃sdc文件

PTPX,支持CCS和NLPM的功耗model。如果design数据里,存在两种的话,可以设置 power_model_preference,以决定选择NLPM还是CCS;默认是nlpm。【个人补充理解:CCS比NLPM模型,更先进;与hspice仿真差别只有2%。推荐用CCS。】

4. 设置变量

  1. set_operating_conditions ;设置工艺及PVT信息。
  2. power_limit_extrapolation_range ; 功耗相关的lookup查找表,有范围。默认功耗分析不限制这个范围。但是如果有很多high-fanout的nets,比如clocks和reset nets;那就得限制范围,从而得到较为准确的功耗数据。
  3. power_use_ccsp_pin_capacitance ;深亚微米,低电压的工艺下;建议设置为true,默认是false。是计算寄生电容参数的。与Miller效应有关(即包含栅到源,栅到漏的电容)。

timing分析

执行命令update_timing

检查功耗分析的潜在error

check_power

选择功耗分析模式

set_app_var power_analysis_mode averaged | time_based

默认是averaged功耗分析。

平均功耗的分析

平均功耗,是基于翻转率toggle rate来分析的。
翻转率的标注,可以是默认翻转率、用户定义switching activity、SAIF文件或者VCD文件。

功耗结果期望准确的话,首先要保证翻转率的标注要准确。这意味着需要后端布局布线、时钟树等已经完全稳定了。前期做功耗分析,可能只是一个评估作用吧。

工具支持基于仿真的switching activity文件类型,包括:
- VCD
- FSDB
- VPD
- SAIF
如果没有上述文件,那可以使用user-define switching activity commands,来提供一个现实的activity去精确power结果。

time-based功耗分析

与平均功耗类似,只需要设置参数:

set_app_var power_analysis_mode time_based

multivoltage功耗分析

时钟网络的功耗分析

multivoltage功耗分析和时钟网络的功耗分析,对前端设计人员来说,没太大必要。对后端设计人员来说,应该很重要。
因为前端关心的是数字逻辑功能部分的功耗;时钟网络是后端布局布线才能确认的。

报告report命令

report_power
report_power_calculation

另外,它们有很多命令参数,可以实现各种定制报告。

功耗的图形界面

利用PrimeTime的图形界面,去查看功耗的数据报告(包含柱状图等),相对文本报告,显得更直观正式。

toggle-rate和switching activity区别?

keyword description
switching activity 开关活跃度,就是管子的开关,导致的switching功耗
toggle-rate 信号翻转率。

翻转率和switching有什么区别?
个人理解,翻转率对应的是信号变化;开关活跃度对应的是管子开关变化。信号变化,不一定会引起管子开关切换的变化。

参考文档

ps: 一切以primetime的官方userguide—-ptpx.pdf文档为准。

  1. PrimeTime-PX功耗分析总结紫光新浪博客
    http://blog.sina.com.cn/s/blog_cdd8559a0102uycf.html
  2. IC设计中的功耗分析的流程 - mikiah的专栏 - 博客频道 - CSDN.NET
    http://blog.csdn.net/mikiah/article/details/8061532
  3. PrimeTime-PX的userguide,名字是ptpx.pdf

你可能感兴趣的:(verilog)