简单介绍一下PrimeTime-PX的功耗分析。
功耗的种类
ptpx 把功耗分成下面三种:
1. Leakage Power
Leakage Power 实际上也是静态功耗, 是指cell在没有翻转时的功耗。包含下面两种:
Intrinsic Leakage Power
这个一般指的是,阈值电压降低,管子不能完全关断造成的漏电和扩散层与衬底之间的漏电。这类功耗和电压、电路的状态无关。Gate Leakage Power
这个指的是source到gate或者是,gate到drain的漏电。 这类功耗和栅氧厚度和电压有关系。
2. Dynamic power
Dynamic power是电路在toggle状态下的功耗, 包含下面两种:
- internal power
内部功耗指的是cell的内部, 包含两部分。 第一部分是cell在toggle状态下对内部节点电容充放电造成的功耗;第二部分是电路翻转时, PMOS和NMOS有短时间的同时导通造成的功耗。
如图所示:
对应翻转较快的电路来说, 这种短路功耗比较小; 但是如果电路的翻转比较慢,短路功耗就比较大了。
- switchjing power
switchjing power指的是对cell外部节点充放电造成的功耗, 很显然, 电路翻转的越快, 这个功耗就越大。
功耗分析的flow
PTPX的功耗分析需要的输入文件有:
- 标准单元库, 像综合一样,需要读入db文件;
- 门级网表, 可以是pre-layout, 也可以是post-layout
- 设计约束: 如果是scan-ready的网表, 那么分析scan power时, 需要的是scan mode的SDC;
- 波形文件: 可以用function仿真产生的fsdb
- SPEF 文件, 包含了net的寄生参数。
如下图所示:
PTPX tcl 示例
以分析peak power为例,ptpx的命令如下:
首先是power分析的一下设定:
1
2
3
4
5
6
7
8set power_enable_analysis true
## perform peak power analysis
set power_analysis_mode time_based
set power_enable_multi_rail_analysis true
set power_domains_compatibility true
set timing_save_pin_arrival_and_slak true
set report_default_significant_digits 3
set timing_use_zero_slew_for_annotated_arcs never然后读入需要的文件
1
2
3
4
5
6
7
8
9
10
11## set the stadard cell db path and netlist
source set_env.tcl
## read nelist and link
read_verilog $NET_LIST
current_design my_design
link
## read the SDC file
source my_design_func.sdc
## update and check timing again
update_timing
check_timing读入fsdb文件, 设定time window
1
2
3
4
5
6read_fsdb xxxx.fsdb -strip_path test_top/dut -time {2300 3300}
report_switching_activity -list_not_annotated
set power_x_transition_derate_factor 1
set power_match_state_for_logic_x 0
## check power
check_power设置power waveform并且输出报告
1
2
3set_power_analysis_options -waveform_format fsdb -waveform_output peak
update_power
report_power