PTPX Power Analysis


參考博文:https://www.cnblogs.com/-9-8/p/5668089.html等。

PTPX功耗分析流程

PrimeTime PX工具是PrimeTime工具內的一個feature。

PTPX的功耗分析,可以報告出chip,block,cell的各個level的功耗。

使用PTPX可以分析的功耗的方式:

1)Average power analysis,支持activity的propagation方式,主要用在項目早期做評估。

可以是defaults,user_defined,derived from HDL simulation的switching文件。

2)Time-based power analysis,通過event-drived算法來統計功耗。

主要用在項目signoff時候,加入IR-drop的分析。

 

電路中的功耗:

1)Leakage power,電路處在inactive或者static時的功耗。

Intrinsic Leakage power,主要是source-to-drain subthreshold leakage。

                                            diffusion layers和substrate之間的current leak。

這種leakage是state和voltage dependent。

Gate Leakage Power,leakage的主要來源,有source to gate和gate to drain的power。

                                     主要由gate oxide thickness和voltage來決定。

 

2)Dynamic Power,電路處在active模式下的功耗。即使在output不改變的情況下,輸入也可能由於transition帶來功耗。

Internal Power,包括內部電路沖放電的功耗和short circuit的功耗。對於fast transition times,short-circuit比較低。

                                                                                         對於slow transition times,short-circuit比較高。

Switching Power,cell的output的電容沖放電。

 

set_power_derate:用來設置某個design,cell,library cell,hierarchical,leaf cell的power的百分比。

report_power_derate

 

PTPX可以將某個design的power data放在一個power model中,通過extract_model -power來得到這個model,

可以通過在設計中例化的方式,來加快chip_level的power analysis的進度。(生成格式為.lib文件)

針對gate_level的design,PTPX會生成一個帶clock pin的power model,可以用在分析一個復雜macro cell的功耗。

 

Power Analysis input:

logic library,包含timing和power信息,支持NLPM和CCS類型的library。

Gate_level netlist,支持verilog,VHDL,systemverilog格式。

Design constraints,計算primary input的transition time和define clock。

Activity,VCD/SAIF,default,user_defined。

net parasitic,SPEF文件,包含net RC參數。

 

1)set power_enable_analysis 為true。

2)讀入verilog,VHDL,db,ddc等格式的netlist,logic library為db格式。

3)讀入SPEF文件,包含WLD定義,以及sdf文件,包含glitch。

4)set_operating_conditions設置PVT。

5)針對某些fanout比較高的net(clock reset),設置power_limit_extrapolation_range。

6)當timing data還沒有update的時候,PTPX會自動首先進行timing analysis,也可以通過update_timing來顯式調用。

7)check_power檢查潛在的功耗計算問題,默認有out_of_table_range和missing_table檢查。

8)設置power analysis的模式,set_app_var power_analysis_mode average | time_based。

9)指定switching activity data,主要有set_switching_activity,set_case_analysis。

   read_vcd -time(加入time window)/-when(Boolean condition)。

   如果vcd等波形從RTL中得到,還需要一個mapping文件來進行波形與netlist之間匹配。

10)update power開始進行power analysis的分析。

11)report power打出power report。

time_base的報告比average報告多出以下幾項。

12)最后通過save_session和restore_session來保存以及提取session

PTPX中的activity文件及mapping文件

toggle rate 和 static probability

The toggle rate of a signal is the average number of times that the signal changes value per unit of time. The units for toggle rate are transitions per second and a transition is a change from 1 to 0, or 0 to 1.

The static probability of a signal is the fraction of time that the signal is logic 1 during the period of device operation that is being analyzed. Static probability ranges from 0 (always at ground) to 1 (always at logic-high)

在不同的simulation中的capturing switching activity:

 

SAIF:Switching Activity Interface Format,包含toggle counts和static probabilities。

RTL中的SAIF文件包含primary input,hierarchical port,sysnthesis-invariant單元如sequential elements。

                             block box cells,tristate cell,latches,retention registers,clock-gating cell等。

                      不包含integrated clock-gating cells和latch-based isolation cells等。

VCD:Verilog Change Dump format,是一種event-based format,包含每個value change以及他們的time。

             read_vcd -rtl表示輸入的是rtl的activity文件。進行average分析。

                           -zero_delay表示輸入的是netlist文件,但是並沒有sdf文件的。進行cycle_accurate分析。

                           什么都不加時,表示進行基於event的分析。

 

在進行synthesis時,可能會使得一些rtl synthesis invariants的模塊(register outputs,primary inputs,tristate,black boxes)

等的名字被改變,所以需要一個mapping文件來進行match RTL activity到gate_level component。

PTPX提供了三種方式:

1)set_rtl_to_get_name命令。

2)exact name mapping

3)default name mapping。

在綜合的過程中,如果使用DC工具,可以生成一個map-file,包含很多set_rtl_to_gate_name命令來保證netlist與rtl的一致。

如果沒有這個map-file就需要人為的設置很多這樣的命令,如果工具仍然發現一個mismatch,那會使用PTPX內建的機制,來進行map。

經過這些操作,仍然mismatch,PTPX就不會在RTL activity file上反標這個object。

set_rtl_to_gate_name  -rtl{a} -gate{a_reg}

當map一個RTL的寄存器時,工具實現Q pin和QB pin的標注。

 

PTPX支持one-to-many的mapping,如在插入Clock Tree Synthesis Buffer時,一個RTL clock可以map所有的buffer。

但是不支持多個RTL object map到一個netlist的object上。

 

Exact name mapping是區分大小寫的,一般情況下,要將cell和pin的exact name map打開,關閉net的exact name map,

因為同一個net名字,可能已經經過了invert。

命令 power_disable_exact_name_match_to_net。

 

default mapping方式,

1)將RTL hierarchy map到flatten gate_level object上,用“_”代替“/”。

2)RTL的寄存器map到gate_level的object上,用_reg后綴。

3)bus上的"[]"號,map為"_",a[7]map為a_reg_7_。

 

Name Mapping report:

report_name_mapping,生成一個RTL與netlist之間的通過set_rtl_to_gate_name命令設置的map報告。

report_activity_file_check,列出activity file中所有的RTL name。

PTPX-average power analysis

在average power analysis中,switching activity被分解為toggle rate和static probabilities兩部分。

annotation的source:

  

 

Switching Activity Annotation:(優先級從高到低)

1)       來自VCD和SAIF這樣的波形;

2)       命令set_switching_activity annotation某個individual design;

3)       Annotation constant value on set/reset pins,infer_switching_activity –apply命令;

4)       Annotation constant value,用命令set_case_analysis命令;

5)       Clock net annotation,用命令create_clock命令;

 

set_switching_activity命令:

可以加入option,-toggle_rate和-static_probability。-period和-base_clock來指定time unit。

Infer_switching_activity命令:

在沒有提供VCD和SAIF文件時,工具通過primary input和black boxes的output來進行power分析,

並根據default switching activity來評估nonannotated pin。

通過infer_switching_activity命令來防止reg的reset和set引腳,進行default處理。

 

Estimating Nonannotated Switching activity

1)       對於不能通過propagation進行annotated的信號,進行default activity處理。

2)       通過buffer和inverter的信號,以及FF的Q/QN端,進行implied處理。

Imply的方向包括forward和backward,為避免沖突,forward方向的imply優先級較高。

3)       Propagating機制,PTPX通過一個zero_delay的simulation來annotate一些net的

toggle rate和static probability。

 

SAIF文件的annotation:

merge_saif命令,工具默認各個SAIF文件分別讀入並處理switching activity,然后乘以各自的weight。

加入-simple_merge命令,首先weight各自的activity文件,后再propagating activity,並輸出到一個SAIF文件中。

write_saif命令,將包含user-annotated和propagated的switching activity,輸出到一個saif

文件。

 

report_switching_activity命令,將各個group的annotation的情況報告出來。

PTPX-time-based analysis

根據VCD文件的type,PTPX支持instantaneous peak power analysis和cycle_accurate peak

power analysis。

Time-Based Power Analysis支持的VCD type

                       

由於Gate_level和zero_delay的VCD不支持event propagation,所以可以在read_vcd之后,通

過命令report_switching_activity來報告switching activity的annotation。

在time_base mode下,不支持多個VCD file的分析。

 

PTPX在testbench的level建立activity file,在讀入vcd時,通過strip_path的命令來map到design module。

read_vcd –strip_path TB/U1

 

PTPX進行condition power analysis,加入-time和-when的option。

如果vcd的產生由帶systemverilog的語法的TB來產生,那么read_vcd –format systemverilog命令來讀入vcd。

 

進行基於rtl的time_based的分析,命令read_vcd –rtl來設置,可以進行name_mapping和event的propagate。

進行基於gate_level的peak分析,必須加入sdf文件。

 

由於netlist的VCD文件都會比較大,所以PTPX工具內部支持fsdb/gzipped VCD的解壓,

並且可以直接在PTPX工具內invoke simulator。

-pipe_exec “vcs –R –f arguments –l log”

 

Vector analysis:

用來分析high activity window。Time_based mode中high activity可能落在不同的interval,

所以可以通過-peak_window來設置,最小和最大的window來分析high activity。

write_activity_waveforms –vcd myvcd.vcd –output myvcd.out –interval 0.2 –peak_window 5

生成的myvcd.out一般都是fsdb格式的,直接通過nWave打開。

 

默認情況下,PTPX不會restore state_dependent和path_dependent的toggle rate,

為了在生成SAIF等文件中,能被包含進去,需要設置write_saif –sdpd_tracking。

 

set_case_analysis命令,將某個port設置為一個constant value,優先級低於VCD的annotation,

所以一般來設置vcd file中沒有的signal,如test_enable信號。

 

在time_based的analysis中,

Glitch power的分析,作為一個transition分析,有自己的ratio計算方式。

Z State,只有0-Z-1,1-Z-0被認為transition,有power consume,其他的變化都不做分析。

X State,0-X作為半個transition,0-x-0也作為一個transition。默認情況下,initial的X不做分析。

 

由於peak analysis比較耗時,PTPX采用distribute的方式來進行multi-scenario analysis。

一個scenario是一個VCD activity file的time window,可以並行在multiple processor上來運行。

然后將結果merge到一起。

 

環境設置flow:

 

 

 

PTPX-clock-tree與LP-design

PTPX在加入CPF/UPF這樣的文件后,可以分析multi-voltage,power-gating這樣的設計。

針對某個power rail的cell,PTPX支持進行annotate。

set_annotated_power –internal_power 0.1 –leakage_power 0.0 –rail VDDA U1

可以通過report_annotated_power –rail的命令來報告出來。

 

在設置power_enable_multi_rail_analysis之后,可以通過report_power –rails的命令來報告

某一個power rail的power消耗。否則可以通過命令current_power_rail/update_power/report_power來報告。

 

每一個power rail也有自己的幾個attribute,internal_power,switching_power,leakage_power,

dynamic_power,total_power。

 

PTPX對clock network的支持:

在clock network還沒有insert時,進行estimate;

在clock network已經insert之后,提供power analysis;

 

1)       Report:

報告clock network部分,report_power –groups clock_network

報告register部分,report_power –groups register

Clock network的power總共就這兩部分。

2)       Annotating:

將transistor-level的simulator輸出的power信息,通過set_annotated_clock_network_power

設置。可以細分為:-internal_power,-switching_power,-leakage_power,-total_power等option來進行標注。

3)       Estimating

通過命令estimate_clock_network_power,PTPX在內部會建立一個virtual balanced clock network,

來評估clock network的power。

只支持average的power analysis mode。

PTPX-Report選項

Report的生成

report_power表示產生power report,update_power表示進行power analysis。

report_power命令可以生成四種形式的report,

                       

1)       Power group-based,default的方式。

2)       Cell-based,加入-cell_power的option

還可以加入-sort_by 的option來根據cell_internal_power(default),cell_leakage_power,

dynamic_power來生成report。

3)       Net-based,加入-net_power的option

還可以加入-sort_by的option來根據net_static_probability,net_switching_power(default)

和net_toggle_rate和total_net_load。

4)       Hierarchy_base,加入-hierarchy的option

一般只有hierarchy的底下一層的power被報告出來,可以通過-levels來進行修改。

 

還有-group,-rail,-clocks這樣的option來進行filter進行report。

在使用-include_estimated_clock_network之前,必須進行estimate_clock_network_power的命令。

 

PTPX中預設的7中power groups:

1)       Io_pad,包括I/O pad cells。

2)       memory,包括Memory cell。

3)       black_box,除了io和memory之外沒有functionality的cell。

4)       clock_network,包括使用create_clock的命令定義的clock和clock network上的buffer,inverter,clock-gating logic。

5)       register,Latches和FF,但是不包括由clock network驅動的register的clock pin(包含在clock network group中)。

6)       sequential,Latch和FF,但是clock pin不連接到clock network。

7)       combinational,剩下的cell。

 

一般情況下,一個instance只會定義在一個power group,所以這幾個power group的總和就是這個design的power。

 

如果lib使用CCS的power model,那么可以分別報告出intrinsic和gate leakage的power,

這時需要設置power_report_leakage_breakdowns變量。

 

通過報告分析clock_gating的efficiency。

report_clock_gate_saving來報告某個clock gate的情況。

1)       Toggle Saving,關掉gate之后,output的clock toggle rate的減少量。

通過加入-by_clock_gate的命令來報告每個clock gate的toggle saving。

2)       Register number,clock的fanout register。

通過加入-sequential的命令來報告每個clock gate的reg情況。

越高的clock freq,越多的fanout reg,那么該clock gate的效率越高。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM