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

首先声明本文所讲的范围,在这篇文章中,是采用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%

------------------------------------------------------------------

时间: 2024-10-05 21:18:32

IC设计中的功耗分析的流程的相关文章

Perl在IC设计中的应用

Perl和Tcl是ic设计中最常用的两种脚本语言,在我学习perl之前完全的不知道他们到底是干什么的.在这里先总结一下Perl的作用: 1.用于生成Verilog代码 在写verilog时,经常遇到一些规律性强,编写又比较麻烦的代码,而这些恰恰又是可重用性比较强的.比如总线模块.FIR滤波器.IIR滤波器,只要 滤波器阶数和参数定了编码都大致相似的模块,就比较适合用来自动生成实现他们功能的verilog代码.Perl的强项在于文本处理,对于verilog 代码的生成,perl的代码会比较简洁易写

传统同步设计中的功耗

在传统设计风格中,系统时钟控制每个寄存器时钟端,功耗由3部分组成 1.每个时钟沿变化的组合逻辑所产生的功耗(触发器驱动这些组合逻辑): 2.触发器本身产生的功耗(即使触发器的输入和内部状态未变化,该功耗仍然存在): 3.设计中时钟树产生的功耗. 时钟树几乎消耗了整个芯片的功耗的50%,因此最好始终在根部产生或关闭时钟,以使整个时钟树都关闭: 解决方案 用门控时钟: 1.不含锁存器的门控时钟,只简单的使用单个门(与门,或门) 此要求使能信号宽度覆盖时钟高电平时时间, 不然会产生过早截断时钟 或者产

MD中bitmap源代码分析--清除流程

bitmap的清零是由bitmap_daemon_work()来实现的.Raid1守护进程定期执行时调用md_check_recovery,然后md_check_recovery会调用bitmap_daemon_work根据各种状态进行清零的操作.Bitmap_daemon_work的实现比较复杂,bitmap的清理需要两次调用bitmap_daemon_work来完成的.下面主要以图的形式逐步分析bitmap清除的全部过程. 刚进入这个函数的时候内存bitmap file的页bitmap_at

MD中bitmap源代码分析--设置流程

1. 同步/异步刷磁盘 Bitmap文件写磁盘分同步和异步两种: 1) 同步置位:当盘阵有写请求时,对应的bitmap文件相应bit被置位,bitmap内存页被设置了DIRTY标志.而在下发写请求给磁盘之前,必须保证bitmap文件下刷完成后才向磁盘发送写请求.这种情况需要等待写bitmap磁盘文件完成,因此是同步的.(由bitmap_unplug()完成) 之所以写bit要在写chunk数据之前就同步刷磁盘,因为如果写请求先下发了,而写bit在这之后刷磁盘的话,当写磁盘过程中发生故障,比如掉电

数字IC前后端设计中Setup违反的修复方法

本文转自:自己的微信公众号<集成电路设计及EDA教程> 数字IC设计中Setup的分析与优化贯穿前后端设计中,最好在开始后端设计之前就获得一个没有Setup违反的网表,下面按照从前到后的流程逐一讲解每个阶段如果出现Setup违反该如何解决.下面用到的命令,主要针对的是Synopsys公司的综合工具DC以及布局布线工具ICC.还有需要注意的是,Setup的修复和之后要讲解的Hold的修复有很大的不同,Setup的违反随着布局到布线阶段的推进,它是越来越恶化的,不像Hold,线延迟会有益于Hold

VerilogHDL概述与数字IC设计流程学习笔记

一.HDL的概念和特征 HDL,Hard Discrimination Language的缩写,翻译过来就是硬件描述语言.那么什么是硬件描述语言呢?为什么不叫硬件设计语言呢?硬件描述语言,顾名思义就是描述硬件的语言,它用文本的形式来描述电子系统硬件结构和行为,是一种用形式化方法来描述数字电路和系统的语言.正是因为如此,硬件与软件不一样,他不像软件,你某天突发奇想,想实现某个的界面,搞搞代码就OK了.硬件它是由实实在在的物理器件搭载而成,用抽象的语言怎么可能弄出一个电路来呢? 一门语言,总有那么一

ASIC设计中一种通用型并行设计方法

我是个"低调"的人,总不喜欢表达出来,对异性如此,对工作也是如此.在翔哥的鼓励下,决定把自己工作的一些经验和思考写下来,和同道们一起分享. ASIC设计中一种通用型并行设计方法: 1)流水网的概念提出 IC设计中的控制有串行和并行两种思想.状态机方法反应了串行控制思想,有软件的思路,比较好理解,新手比较喜欢用.流水线方法是并行处理的思想,比较抽象,因为其效率高,老手喜欢用.从"流水线"的名字就容易知道,它只是一维的一条线,一个设计中可以有很多条.小设计中可能很容易设

(转)IC设计完整流程及工具

IC的设计过程可分为两个部分,分别为:前端设计(也称逻辑设计)和后端设计(也称物理设计),这两个部分并没有统一严格的界限,凡涉及到与工艺有关的设计可称为后端设计. 前端设计的主要流程: 1.规格制定 芯片规格,也就像功能列表一样,是客户向芯片设计公司(称为Fabless,无晶圆设计公司)提出的设计要求,包括芯片需要达到的具体功能和性能方面的要求. 2.详细设计 Fabless根据客户提出的规格要求,拿出设计解决方案和具体实现架构,划分模块功能. 3.HDL编码 使用硬件描述语言(VHDL,Ver

IC设计前端到后端的流程和eda工具。

IC前端设计(逻辑设计)和后端设计(物理设计)的区分:以设计是否与工艺有关来区分二者:从设计程度上来讲,前端设计的结果就是得到了芯片的门级网表电路. 前端设计的流程及使用的EDA工具如下: 1.架构的设计与验证:按照要求,对整体的设计划分模块. 架构模型的仿真可以使用Synopsys公司的CoCentric软件,它是基于System C的仿真工具. 2.HDL设计输入:设计输入方法有:HDL语言(Verilog或VHDL)输入.电路图输入.状态转移图输入. 使用的工具有:Active-HDL,而