码迷,mamicode.com
首页 > 其他好文 > 详细

IC设计中的功耗分析的流程

时间:2014-12-16 18:30:23      阅读:428      评论:0      收藏:0      [点我收藏+]

标签:des   ar   io   使用   sp   for   on   文件   div   

首先声明本文所讲的范围,在这篇文章中,是采用synopsys的设计流程,对数字电路进行功耗分析,生成功耗分析报告的流程。分析的对象是逻辑综合之后布局布线之前的功耗分析,以及布局布线之后的功耗分析。

   Synopsys做功耗分析使用到的工具是:Primetime PX, Prime Rail。PTPX可以在逻辑综合之后就进行功耗预估。PrimeTime PX是集成在PrimeTime里面的工具,虽然他可以做功耗分析,但是毕竟不是sign-off工具。真正到最后的sign-off,如果对功耗的要求很高的话,依然要用Prime Rail进行分析,所以,我们只要用到PrimeTime PX来做功耗分析就够了。
    
上图是布局布线后和逻辑综合后进行功耗分析的流程。
一. 逻辑综合后的功耗分析
  所用到的文件有:1. 逻辑综合后的verilog文件
                  2. 静态时序分析时用到的约束文件
                  3. RTL的仿真文件,我用的是VCD,毕竟标准各个仿真器都支持~
                  4. 有功耗信息的库文件.db,这个库文件可以report一个库里的cell,看是否有。
   有了这些文件之后,就可以做功耗分析了。下面说一下功耗分析的流程:
1. 允许功耗分析功能 set power_enable_analysis
2. 设置分析模式     set power_analysis_mode。他的模式有两种,一种是average模式,不用仿真文件,另一种是time-based模式,是根据时序仿真文件来确定activity factor。
3. 读入设计和库文件 
4. 指定operating condition
5. 时序分析  update_timing
6. 获取activity data
如果是RTL级别的网表文件,要用-rtl来告诉pt之前指定的vcd file是布局布线之前的。如果VCD是 zero_delay的仿真,也就是说是纯纯的functional simulation的话,应该家用-zero_delay选项。如果 都为指定,pt默认是gate-level。
7. 设置功耗分析选项 set_power_analysis_options :
-static_leakage_only option of the set_power_analysis_options command is supported only in          the averaged power analysis mode.
        -waveform_interval, -cycle_accurate_cycle_count, -cycle_accurate_clock,-waveform_format, -          waveform_output, -include, and -include_groups options are supported only in the time-            based power analysis mode.
8. 功耗分析  update_power
9. 生成功耗分析报告 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 gate level 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 or annotate 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 power format。这里不介绍。
# 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%
------------------------------------------------------------------

IC设计中的功耗分析的流程

标签:des   ar   io   使用   sp   for   on   文件   div   

原文地址:http://www.cnblogs.com/blogernice/p/4167510.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!