本文主要阐述了在averaged mode和time-based mode下的功耗分析基本步骤。
各个模式下的具体注意事项后续我将继续更新。
一、概述
PTPX支持以上两种模式,在每种模式下,工具支持不同的选项来满足设计的不同种类,为了对一个设计执行功耗分析,选择需要的功耗分析模式和由模式支持的明确选项。
用户界面支持变量、命令以及命令选项来选择功耗分析模式和模式支持的选项,以SAIF或VCD文件格式提供swithing activity信息。无论选择何种模式和选项,都会在运行update_power时执行功耗分析。
二、功耗分析输入
PTPX分析需要以下内容
- Logic library:每个cell的cell library包括时序和功耗的特征信息,library的质量会决定功耗分析结果的准确性,PrimeTime工具默认使用CCS library而非NLPM library,可以用以下命令指定。
powewr_model_preference
- 门级网表:以Verilog、VHDL或Synopsys数据库格式的Flat或Hierarchical的门级网表,包含库单元的leaf-level实例化
- 设计约束:包括设计约束的SDC文件来计算transition time以及定义时钟。
- Activity:为了平均功耗分析和峰值功耗分析设计activity信息。
- 网络寄生参数:寄生参数文件(SPEF)包括了所有网络的网络电容。
三、功耗分析流程
- 使能功耗分析
为了使能功耗分析并查看功耗数据,需要设置power_enable_analysis,该变量默认为false。
set power_enable_analysis true
- 执行向量分析
如果VCD activity可以得到,可以在使用矢量分析功能读取设计数据之前对activity进行限定。在矢量分析期间,PTPX绘制了VCD文件中信号每间隔的平均翻转率,以便识别可能产生峰值功耗的高活动时间窗口。从VCD文件生成activity波形的命令。
write_activity_waveforms
- 读设计数据和逻辑库
PTPX支持Verilog、VHDL、.db、.ddc和Milkyway形式的网表。逻辑库必须要使用.db形式,并且支持NLPM和CCS库。
设计数据包括寄生参数信息,例如port loads和net loads、wire load models、
back-annotated parasitics和transition time,对于averaged power analysis,设计数据包括使用PT工具在SDC文件中编译的设计约束。
CCS功耗库包含统一的功耗库数据以及轨道分析和优化,确保了功耗分析流程的一致分析和简化。通过在库中捕获电流波形,准确识别潜在问题。
所有的CCS和NLPM数据能以.lib格式在单元描述中共存。当逻辑库同时包含两种库后指明功耗模型的首选项,默认为CCS。
power_model_preference
PTPX还支持紧凑的CCS功耗模型,可以降低库的规模但是不会影响准确度。
- 指定变量
为功耗分析指定工作环境可以用以下指令
set_operating_conditions
PTPX使用使用来自逻辑库适当的参数值,包括ASIC供应商所描述的制造工艺、工作温度和电源电压。
- 功耗计算变量
power_limit_extrapolation_range
上述变量的默认值为false,对于事件和翻转率的分析,PTPX控制了功耗计算的一些方面。
默认情况下,变量为false,如果内部功耗查找的数据点超出范围,PTPX会无限外延。如果将上述变量设置为true,PTPX会限制外延范围。
NLPM功耗表在一个额外的索引网络上停止外推,NLPM功耗表在指定的范围内停止外推。
如果存在高扇出的网络(时钟/全局复位网络),为了准确的功耗值,需要限制扩散范围。
- 时序分析
如果时序没有被更新,PTPX首先执行时序分析,并使用transition time计算精确的功耗,使用时序窗口计算平均周期功耗波形。
如果启用了信号完整性特性,时序分析包括信号完整性影响。当时序数据可用于功耗析时,PTPX使用时序数据进行功率计算,而不是重新计算,节省了运行时间。
在为功耗指定switching activity之前,执行时序分析的命令为:
update_timing
通过防止由activity命令触发的任何额外的时序更新来使能最大化执行。
- 检查可能影响功耗精度的潜在误差
在计算功耗或者报告功耗之前,使用以下命令来识别潜在功耗计算问题。 该命令为潜在功耗违例检查设计结构。
check_power
在默认情况下,如果不指定任何选项,check_power命令将执行由power_check_defaults变量定义的检查,为了更新默认检查列表,更新值或者使用-override_defaults选项。
-override_defaults、-include和-exclude等检查列表选项定义了将要使用的功耗检查,当你指定check_power命令后,PTPX执行以下检查。
out_of_table_range
missing_table
no_arrival_window
no_base_clock
missing_function
默认情况下,PTPX执行以下两个检查。
out_of_table_range
missing_function
- 选择功耗分析模式
set_app_var power_analysis_mode averaged | time_based
默认值为averaged,如果在功耗分析后修改变量的值,会丢失switching activity和功耗信息,这时需要重新读switching activity数据。
- 功耗分析技术
在CMOS电路中,在设计flow早期,对总功耗执行了统计平均功耗分析。对于每个事件执行精确的event-based峰值功耗分析,以更加接近IR Drop分析的signoff。所有的分析技术需要在每个节点上定义design switching activity。
activity的定义为一个网络相对于指定时钟周期的开关频率。
- 指定switching activity data
指定switching activity来annotate activity信息,switching activity源文件可以是VCD、RTL VCD、SAIF或者为了annotation用户定义的命令,例如
set_switching_activity
set_case_analysis
如果switching activity能够从RTL仿真中获得,指定一个name-mapping文件来使RTL activity文件名字和相关的门级对象匹配,使用PTPX中的内置名称映射功能,可以正确匹配Design Compiler中执行的默认名称映射。
- 执行条件功耗分析
当指定VCD activity时,PTPX在averaged和time-based模式下执行条件功耗分析,可以使用read_vcd命令的以下选项分析特定操作模式或特定模拟时序窗口的功耗。
-time
-when
- 为功耗分析模式指定选项
Averaged power analysis mode
set_power_analysis_options -static_leakage_only
Time-based power analysis mode
set_power_analysis_options -waveform_interval
-cycle_accurate_cycle_count
-cycle_accurate_clock
-waveform_format
-waveform_output
-include
-include_groups
- 执行功耗分析
为了执行功耗分析,可以运行update_power命令,根据指定的模式以及set_power_analysis_options,PTPX执行功耗分析。
运行update_power命令时,各种功耗分析模式会同时触发功耗分析,然后生成功耗数据。
在averaged模式下,如果不指定activity数据,工具假定默认值。但是在time-based模式下,必须以VCD文件格式指定activity数据,否则会报错。
- 生成功耗报告
report_power