EETOP 创芯网论坛

找回密码

  登录   注册  

搜帖子
电子资料:5G承载光模块测试方案介绍 |有奖下载: 300信元+27个幸运抽奖)
查看: 3581|回复: 12

[转贴] IC设计中的功耗分析的流程

[复制链接]
发表于 2020-1-20 13:17:12 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册

x
本帖最后由 固执的寻觅 于 2020-1-20 13:43 编辑

       首先声明本文所讲的范围,在这篇文章中,是采用synopsys的设计流程,对数字电路进行功耗分析,生成功耗分析报告的流程。分析的对象是逻辑综合之后布局布线之前的功耗分析,以及布局布线之后的功耗分析。
    Synopsys做功耗分析使用到的工具是:Primetime PX, PrimeRAIl。PTPX可以在逻辑综合之后就进行功耗预估。PrimeTimePX是集成在PrimeTime里面的工具,虽然他可以做功耗分析,但是毕竟不是sign-off工具。真正到最后的sign-off,如果对功耗的要求很高的话,依然要用PrimeRail进行分析,所以,我们只要用到PrimeTime PX来做功耗分析就够了。


上图是布局布线后和逻辑综合后进行功耗分析的流程。

一. 逻辑综合后的功耗分析

所用到的文件有:

1. 逻辑综合后的verilog文件 2.静态时序分析时用到的约束文件 3.RTL的仿真文件,我用的是VCD,毕竟标准各个仿真器都支持~ 4.有功耗信息的库文件.db,这个库文件可以report一个库里的cell,看是否有。
  • 1
  • 2
  • 3
  • 4

    有了这些文件之后,就可以做功耗分析了。下面说一下功耗分析的流程:

  • 允许功耗分析功能 set power_enable_analysis
  • 设置分析模式 setpower_analysis_mode。他的模式有两种,一种是average模式,不用仿真文件,另一种是time-based模式,是根据时序仿真文件来确定activityfactor。
  • 读入设计和库文件
  • 指定operating condition
  • 时序分析 update_timing
  • 获取activity data 如果是RTL级别的网表文件,要用-rtl来告诉pt之前指定的vcd file是布局布线之前的。如果VCD是zero_delay的仿真,也就是说是纯纯的functional
    simulation的话,应该家用-zero_delay选项。如果都为指定,pt默认是gate-level。
  • 设置功耗分析选项 set_power_analysis_options :
    -static_leakage_only option of the set_power_analysis_optionscommand is supported only in theaveraged power analysis mode.
    -waveform_interval, -cycle_accurate_cycle_count,-cycle_accurate_clock,-waveform_format, - waveform_output, -include, and -include_groupsoptions are supported
    only in the time- based poweranalysis mode.
  • 功耗分析 update_power
  • 生成功耗分析报告 report_power

    要说明的是,PTPX是primetime的一个增强功能,只用一个PT脚本就可以了,我把自己的pt脚本拿出来分享一下:

file: pt.tcl

###########################################
#   Set the power analysis mode
###########################################
set power_enable_analysis true;
set power_analysis_mode averaged;
###########################################
#    read and link the gatelevel netlist
###########################################
set search_path "../source db ./ ./result"
set link_library "typical.db"
set target_library "typical.db"
read_verilog jnd_90s.v
set top_name jnd
current_design JND
link
###########################################
#   Read SDC and set transition time orannotate parasitics
###########################################
read_sdc pt_con.tcl

###########################################
#   Check, update, or report timing
###########################################
check_timing
update_timing
report_timing


###########################################
#  read switching activity file
###########################################
read_vcd -rtl jnd_all.vcd -strip_path testbench
report_switching_activity -list_not_annotated

###########################################
#   check or update or report power
###########################################
check_power
update_power
report_power -hierarchy


二. 布局布线后的功耗分析

现在ptpx也支持多电压域的功耗分析,并提供了一个范例脚本,这里描述多时钟域时要用到UPF,叫unified powerformat。这里不介绍。




# Read libraries, design, enable power analysis
# and link design
set power_enable_analysis true
set link_library slow_pgpin.db
read_verilog power_pins.v
link


# Create back-up power nets
create_power_net_info vdd_backup -power
create_power_net_info vss_backup -gnd


# Create domain power nets
create_power_net_info t_vdd -power -switchable \
-nominal_voltages{1.2} -voltage_ranges{1.1 1.3}
create_power_net_info a_vdd -power
create_power_net_info b_vdd -power
# Create domain ground nets
create_power_net_info t_vss -gnd
create_power_net_info a_vss -gnd
create_power_net_info b_vss -gnd


# Create internal power nets
create_power_net_info int_vdd_1 -power \
-nominal_voltages{1.2} -voltage_ranges[1.1 1.3} \
-switchable
create_power_net_info int_vdd_2 -power \
-nominal_voltages{1.25} -voltage_ranges{1.1 1.3}
create_power_net_info int_vdd_3 -power \
-nominal_voltages{1.2} -voltage_ranges{1.1 1.3}
create_power_net_info int_vdd_4 -power


# Create power domains
create_power_domain t
create_power_domain a -object_list[get_cells PD0_inst]\
-power_down -power_down_ctrl[get_nets a] \
-power_down_ctrl_sense 0
create_power_domain b -object_list [get_cells PD1_inst]\
-power_down


# Connect rails to power domains
connect_power_domain t -primary_power_net t_vdd \
-primary_ground_net t_vss
connect_power_domain a -primary_power_net a_vdd \
-primary_ground_net a_vss \
-backup_power_net vdd_backup \
-backup_ground_net vss_backup
connect_power_domain b -primary_power_net b_vdd \
-primary_ground_net b_vss


# Set voltages of power nets
set_voltage 1.15 -object_list{t_vdd a_vdd b_vdd}


# Read SDC and other timing or power assertions
set_input_transition 0.0395 [all_inputs]
set_load 1.0 [all outputs]


# Perform timing analysis
update_timing


# Read switching activity
set_switching_activity...
set_switching_activity...
...
report_power



三. 关于报告

一个标准的报告:


Power Group Power Power Power Power ( %) Attrs
---------------------------------------------------------------
io_pad 0.0000 0.0000 0.0000 0.0000 ( 0.00%)
memory 0.0000 0.0000 0.0000 0.0000 ( 0.00%)
black_box 0.0000 0.0000 0.0000 0.0000 ( 0.00%)
clock_network 0.0000 0.0000 0.0000 0.0000 ( 0.00%)
register 8.442e-05 1.114e-05 9.208e-09 9.557e-05 (29.97%)i
combinational 0.0000 0.0000 0.0000 0.0000 ( 0.00%)
sequential 0.0000 0.0000 0.0000 0.0000 ( 0.00%)
Attributes
----------
i - Including driven register power
Internal Switching Leakage Total Clock
Power Power Power Power ( %) Attrs
---------------------------------------------------------------
clk 1.813e-04 4.199e-05 4.129e-10 2.233e-04
---------------------------------------------------------------
Estimated Clock1.813e-04 4.199e-054.129e-102.233e-04(70.03%)
Net Switching Power = 5.313e-05 (16.66%)
Cell Internal Power = 2.657e-04 (83.33%)
Cell Leakage Power = 9.627e-09 ( 0.00%)
---------
Total Power = 3.188e-04 (100.00%)

关于门控时钟的报告:


report_clock_gate_savings
****************************************
Report : Clock Gate Savings
power_mode: Averaged
Design : mydesign
Version: D-2009.12
Date : Thu Oct 29 12:08:20 2009
****************************************
------------------------------------------------------------------
Clock: clk
+ Clock Toggle Rate: 0.392157
+ Number of Registers: 19262
+ Number of Clock Gates: 12
+ Average Clock Toggle Rate at Registers: 0.305872
+ Average Toggle Savings at Registers: 22.0%
------------------------------------------------------------------
Toggle Savings Number of % of
Distribution Registers Registers
------------------------------------------------------------------
100% 0 0.0%
80% - 100% 76 0.4%
60% - 80% 5660 29.4%
40% - 60% 0 0.0%
20% - 40% 8 0.0%
0% - 20% 0 0.0%
0% 13518 70.2%
------------------------------------------------------------------









 楼主| 发表于 2020-1-20 13:47:22 | 显示全部楼层
PrimeTime PX(Power Analysis) userguide阅读笔记很多地方,是个人理解。也许有误差。看到勿怪。
功耗分析,用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的好处?作为前端设计人员来说,个人理解:
RTL/pregsim/postgsim三个步骤环节,RTL不支持ptpx功耗分析,netlist才可以采用ptpx分析功耗。
通过功耗的统计数据,可以在设计环节就可以发现功耗的问题,比如某些模块功耗太大;由于数据报告了所有层次结构下的功耗信息,所以很容易找到功耗关键的点。
平均功耗分析,可以找到当前设计的关键功耗点。
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

图中:
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





1. 使能power分析
set power_enable_analysis true
1
2. 执行vector分析
因为动态功耗的分析,与仿真激励的vcd文件有很大关系。vcd的activity活跃度越高,功耗越高。为了评估仿真激励vcd文件的activity活跃度,可以用下述命令:

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

3. 吃design
支持verilog、vhdl网表;db、ddc、Milkyway格式的网表也可以。
logic库,必须是.db格式。
寄生参数信息,应该在Milkyway格式的文件里。
为了计算平均功耗,需要吃sdc文件
PTPX,支持CCS和NLPM的功耗model。如果design数据里,存在两种的话,可以设置 power_model_preference,以决定选择NLPM还是CCS;默认是nlpm。【个人补充理解:CCS比NLPM模型,更先进;与hspice仿真差别只有2%。推荐用CCS。】

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

检查功耗分析的潜在error
check_power

选择功耗分析模式
set_app_var power_analysis_mode averaged | time_based
1
默认是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
1
multivoltage功耗分析
时钟网络的功耗分析
multivoltage功耗分析和时钟网络的功耗分析,对前端设计人员来说,没太大必要。对后端设计人员来说,应该很重要。
因为前端关心的是数字逻辑功能部分的功耗;时钟网络是后端布局布线才能确认的。

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

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

toggle-rate和switching activity区别?


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

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

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

PrimeTime-PX功耗分析总结紫光新浪博客
http://blog.sina.com.cn/s/blog_cdd8559a0102uycf.html
IC设计中的功耗分析的流程 - mikiah的专栏 - 博客频道 - CSDN.NET
http://blog.csdn.net/mikiah/article/details/8061532
PrimeTime-PX的userguide,名字是ptpx.pdf
————————————————
版权声明:本文为CSDN博主「亓磊」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u011729865/article/details/54138703


回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2020-1-20 15:45:20 | 显示全部楼层
本帖最后由 固执的寻觅 于 2020-1-20 16:29 编辑

.....
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-1-20 15:55:51 | 显示全部楼层
使用PrimeTime PX进行功耗分析有两种:一种是平均功耗的分析Averaged power analysis,一种是Time-based power analysis。

电路的功耗主要有两种,一种是漏电流功耗(Leakage Power),也就是一个单元在没有switching,inactive或者static情况下的功耗,包括intrinsic leakage power和gate leakage power。其中intrinsic leakage power主要是由source-to-drain的漏电流引起,也包括扩散区diffusion layer和基底substrate之间的电流泄露。Gate leakage power是由source-to-gate和gate-to-drain的漏电流引起,随着工艺尺寸的降低diminish,它已经成为主要的漏电流功耗来源。Gate leakage power主要依赖于gate oxide的厚度和电压强度,不依赖于温度。

另外一种是Dynamic Power,是指电路在active时候的功耗,包括internal power和switching power。Internal power是指在boundary of cell内的动态功耗,包含cell内部的电容充放电,PN节之间的瞬时短路(momentary short circuit, P晶体管和N晶体管在关闭打开过程中间的某一短暂时刻,会短路,导致从VDD到GND的瞬时电流).因此,对于具有较慢transition time的电路,short-circuit power能够占到总的gate power的50%。

Switching power是由一个cell的输出端负载电容的充放电导致的(power dissipated by the charging and discharging of load capacitance at the output of the cell).总的load capacitance是输出驱动端(driving output)net和gate电容的累加。

Averaged mode: SAIF, VCD, set_switching_activity, Tool defaults
Time-based mode: RTL-VCD, Gate-Level VCD (Peak power)

关于SAIF和VCD的区别:
SAIF: SAIF stands for Switching Activity Interface Format. The SAIF files capture signal transitions and the time spent at each logic level. The SAIF file contains the toggle counts and static probabilities for the nets in the design. SAIF is supported only in the averaged power analysis mode. Use the read_saif command to annotate the activity information in the SAIF format.  
VCD: VCD stands for Verilog Change Dump format. It is an event-based format that contains every value change for the signals in the design and the time at which they occurred. Use the read_vcd command to specify the VCD file in both the averaged and time-based analysis modes. Use the read_vcd command to specify the activity files in other event-based formats within the PrimeTime PX tool. Internally, the tool converts these formats to the VCD format using the appropriate utility.

VCD文件示例:http://en.wikipedia.org/wiki/Value_change_dump

这里只关注Gate-level的功耗分析,对于RTL level的,需要进行一系列的mapping操作。

首先看SAIF文件格式
对于Gate-level的SAIF文件,报刊每个单元activities的反标,用来计算平均功耗。使用read_saif来读取saif文件。
SAIF文件的产生有多种途径,甚至可以由VCD文件转换(vcd2saif),也可以在simulation中获得,这里补充一下,使用Synopsys的VCS MX可以对Verilog、System Verilog和VHDL的工程实现混仿。这里需要关注Power Compiler的文档。




VCD文件格式
同样,对于VCD文件格式,也有RTL和Gate-level之分,对于RTL level的VCD文件,需要使用read_vcd –rtl或者read_vcd –zero_delay读取activity file。read_vcd默认为读取gate-level的文件。
对于VCD文件,同样可以使用VCS或者其他的HDL仿真环境来产生。
在time-based的功耗分析模式,PT PX不支持多个activity VCD文件的读入。在读取VCD文件的时候,经常会出现VCD hierarchy与当前design不匹配的情况,导致最终反标成功的cell为0,这个mismatch主要是由于当使用read_vcd -strip_path来指定当前的design时,-strip_path选择错误,或者VCD文件没有包含所有的design hierarchy。

使用PT PX的重要内容之一是name mapping,主要是对于RTL级别的design进行功耗分析的时候,需要将RTL级别的activity与门级网表进行map。这里不赘述。

Averaged Power Analysis
进行平均功耗的分析需要的switching activity主要包含static probability和toggle rate两个参数。
Static probability是某个信号在某一个特定logic state下的概率,比如,SP1和SP0就是某个信号在logic-1和logic-0下的概率。SP是一个信号在某一个状态的时间/总的仿真时间,得到的一个比值,比如SP1=0.7表示在70%的时间这个信号等于1.
Toggle rates是一个对象,比如net、pin、port在per unit time下的0->1和1->0的transition数目。由TR表示。

行为反标的方法包括:
Annotation of RTL or gate-level VCD files with read_vcd command
Annotation of RTL or gate-level SAIF files with the read_saif or merge_saif commands
使用VCD文件进行反标:
read_vcd -strip_path TB/DUT my.vcd
-strip_path指定当前实例化的设计的path。
需要注意的是,在做平均的功耗分析的时候,PT PX支持读入多个VCD文件,但是条件是需要指定不同的时间,在使用read_vcd命令的时候使用-time指定。
read_vcd还支持有条件的功耗分析,使用-when开关,比如说指定分析在某个信号为true时候的功耗。

使用SAIF文件的时候,涉及的commands有read_saif (read_saif -strip_path TB/DUT my.saif)、merge_saif和write_saif.

当分析不同时钟频率情况下的功耗的时候,需要set_app_var power_enable_analysis true,并且使用set_power_clock_scaling的命令。

当simulation的activity文件无法得到时,需要用户自己定义activity,使用的命令包括set_case_analysis, create_clock, infer_switching_activity and set_switching_activity。

report switching activity
另一个重要内容是report switching activity。在读入saif或者vcd文件,或者set_switching_activity之后,使用report_switching_activity就能够报告switching activity的各项活动。可以使用-list_not_annotated可以列出没有被反标的对象。
使用下面的属性还可以得到TR和SP的值:
toggle_count/toggle_rate/glitch_rate/static_probability
注意,在此之前,首先要update_power。
还有一些选项,如report_switching_activity -average_activity -hierarchy
还有一个命令为get_switching_activity,使用activity_source属性,可以定义activity information的来源,包括file, set_switching_activity, set_case_analysis, propagated, implied, default, or UNINITIALIZED等。可以得到TR,SP和glitch rate


在得到switching activity之后,使用update_power来将其反标,使用report_power来报告power的值。

使用report_annotated_power -list_annotated可以得到反标的报告列表。

Time-based power analysis
PT PX使用VCD来计算每个事件导致的功耗,SAIF格式对此不支持。
read_vcd "../sim/vcd.dump" -strip_path "tb/macinst" -when {N5},读取VCD文件中,在N5为true时候的activities。另外还有-time选项。

Handling Large Activity Files
Gate-level的VCD文件可能会非常大,尽管PT PX能够处理大于2G的VCD文件,但是还是要尽量避免产生和储存大的VCD文件。方法一是生成压缩的文件格式来减小activity file的尺寸,比如FSDB或者gzipped的VCD文件。另一种方法是直接将simulation生成的activity数据导入到PT PX,步骤如下:
1) 建立HDL的仿真环境,产生activity文件。比如,在testbench中必须包含$dumpvars或者$dumpfile来产生VCD文件。这个文件名即管道名,因此,两个工具都知道从哪里读写数据,而不需要创建大的文件
2) 定义命令或者运行脚本来调用HDL的仿真,使用-pipe_exec。比如,如果运行一个脚本执行VCS的仿真,包含vcs –R –f arguments –l log。使用下面的某一个命令来调用仿真,并直接读取VCD数据到PT PX
-pipe_exec run_vcs
-pipe_exec “vcs –R –f arguments –l log”

Average Toggle Rate=Number of Toggles on All Signals Per Interval/Number of Signals
Coverage=Number of Signals with at least one Toggle/Number of Signals

建立分布式环境,加速功耗分析
1) 建立分布式的计算环境,允许同时运行多个scenarios。使用LSF的两个machines进行分布式的peak power分析。
set_app_var power_enable_analysis true
set multi_scenario_working_directory ./work
set multi_scenario_merged_error_log ./work/error_log.txt
set_multi_scenario_license_limit -feature PrimeTime 2
set_multi_scenario_license_limit -feature PrimeTime-PX 2
set_host_options -32bit -num_processes 2 -submit_command /lsf/bin/bsub
start_hosts
2) 将仿真分割成两个模块
set test_dir .
# The common data is used by all the scenarios. Since all the scenarios must read the design data and update timing.
create_scenario -name run_0 -specific_data run_0.tcl -common_data common.tcl -common_variables {test_dir}
create_scenario -name run_1 -specific_data run_1.tcl -common_data common.tcl -common_variables {test_dir}
set_app_var power_enable_analysis true
set_app_var power_analysis_mode time_based
set_app_var search_path "."
set_app_var link_library " * link_library.db"
read_verilog mac.vg
current_design mac
link
read_sdc $test_dir/mac.sdc
set_disable_timing [get_lib_pins ssc_core_typG]
read_parasitics ../src/annotate/mac.spef.gz
#####################################################
# check, update, or report the timing
#####################################################
check_timing
update_timing
report_timing
#####################################################
# read switching activity file
#####################################################
read_vcd -strip_path tb/macinst ../sim/vcd.dump.gz
report_switching_activity -list_not_annotated
#####################################################
# check or update or report power
#####################################################
check_power
update_power
report_power -hierarchy
quit


Example 4 Script Example for Time-Based Power Analysis
#####################################################
# Set the Power Analysis Mode
#####################################################
set power_enable_analysis TRUE
set power_analysis_mode time_based
#####################################################
# link design
##############################################
set search_path "../src/hdl/gate ../src/lib/snps . "
set link_library " * core_typ.db"
read_verilog mac.vg
current_design mac
link
#####################################################
# set transition time / annotate parasitics
#####################################################
read_sdc ../src//hdl/gate/mac.sdc
set_disable_timing [get_lib_pins ssc_core_typ/*/G]
read_parasitics ../src/annotate/mac.spef.gz
#####################################################
check_timing
update_timing
report_timing
#####################################################
# read switching activity file
#####################################################
read_vcd ../sim/vcd.dump.gz -strip_path tb/macinst
#####################################################
# analyze power
#####################################################
check_power
set_power_analysis_options -waveform_format out -waveform_output vcd
update_power
report_power
quit



回复 支持 反对

使用道具 举报

发表于 2020-1-20 17:57:31 | 显示全部楼层
学习了。多谢楼主
回复 支持 反对

使用道具 举报

发表于 2020-1-20 19:02:21 | 显示全部楼层
thanks a lot
回复 支持 反对

使用道具 举报

发表于 2020-1-20 22:09:27 | 显示全部楼层
thanks a lot
回复 支持 反对

使用道具 举报

发表于 2020-1-29 14:17:53 | 显示全部楼层
多谢分享
回复 支持 反对

使用道具 举报

发表于 2020-2-23 22:20:28 | 显示全部楼层
thanks for your collection
回复 支持 反对

使用道具 举报

发表于 2020-2-23 22:59:13 | 显示全部楼层
很好
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

GMT+8, 2020-4-7 06:09 , Processed in 0.064523 second(s), 10 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表