浅谈Power Signoff
Power Analysis是芯片设计实现中极重要的一环,因为它直接关系到芯片的性能和可靠性。Power Analysis 需要Timing Analysis 产生包含频率、transition 等时序信息的 Timing File,也需要包含Net Capacitance和Resistance信息的SPEF文件,功耗分析工具根据timing file 和RC value计算功耗或者分析IR-Drop/EM。
在介绍数字后端Power Signoff Flow之前,先大概论述一下芯片的功耗构成和基本原理。芯片功耗主要分为Static Power (静态功耗)和Dynamic Power(动态功耗)两大类。动态功耗来自于芯片晶体管的开关翻转,它取决于芯片的时钟频率和switching activity。静态功耗是指芯片晶体管的LeakagePower(泄漏功耗)。
进一步细分,动态功耗可以分为Internal Power和Switching Power.
Switching power是由于芯片内instance 上的逻辑翻转对有效负载电容进行充放电所消耗的功耗。公式如下,其中,a是switching activity,f是clock frequency,Ceff是有效负载电容,Vdd是芯片电源电压。
- Internal power是由于晶体管信号传输的某一个瞬间,PMOS和NMOS会同时导通的短路电流消耗的功耗。对于更低阈值电压或者transition time大的晶体管internal power会更大。
- 静态功耗,即漏电功耗(leakage power)。漏电流早期的CMOS工艺里是可忽略的,但是随着近年来器件尺寸越来越小以及阈值电压的减小使Leakage current在功耗分析中不能再被忽视。Leakage power主要由以下几个方面组成
推荐一篇论文:Leakage Current Mechanisms and Leakage Reduction Techniques in Deep-Submicrometer CMOS Circuits。作者是KaushikRoy.
Power Signoff
当今主流的power signoff 工具有Cadence的Voltus 和 ANSYS公司的Redhawk。限于作者工作经验,本文就基本flow 做一简单概述。
Power signoff 主要包括静态、动态功耗分析和Signal-EM分析以及基于芯片封装模型的SIPI分析等。
静态功耗分析(Static IR-drop/EM Power Analysis):这里的静态功耗分析并不是leakage 功耗,而是指一种基于芯片内部电路在直流工作模式下的功耗分析。
芯片上的PG网络在静态功耗分析中会近似于电阻网络
而且流经各个instance的电流都认为是直流电流。
均值电流都是在每个instance上算的,利用欧姆定律即可直接算出节点电压。电迁移值Electromigration 在电源网络分析之后会得出金属线网络的电流密度,再根据对应工艺的Tech file里对于Electromigration的极限电流密度的约束,便可以得出整个芯片的电迁移报告。报告里所有电迁移值都用百分比来表示,一般而言都是用100%来signoff芯片电迁移是否可以满足极限值。<这里涉及到不同工艺下的EM table和Chip Reliability 的内容;对于电迁移概念的理解,还有一个概念是Blech Length和Black Equation;后续会做相关分享。
Static IR/EM Analysis:得到芯片功耗之后,会去分析IR-drop和EM,static模式下主要check 芯片的PowerMesh 够不够强壮,有没有power/ground mesh 的short 和open;再就是memory 的channel 处standard cell 是否有足够的metal覆盖。
Static IR/EM Analysis:得到芯片功耗之后,会去分析IR-drop和EM,static模式下主要check 芯片的PowerMesh 够不够强壮,有没有power/ground mesh 的short 和open;再就是memory 的channel 处standard cell 是否有足够的metal覆盖。
动态功耗分析(Dynamic IR-drop/EM Power Analysis)
On-chip的PG mesh 被模型化成RLC网络;
对于有开关和状态翻转的instance cell,其电流模型是时间和电压值的函数;
对于没有翻转的instance cell,会分析其中有效的decoupling capacitance以及ESR (Effective Series Resistance)和leakage current。
每个instance的电流模型是PWL Current Model;
Dynamic Voltage Drop是通过在每一个电路节点的瞬态分析得到的
对于Dynamic IR-drop/EM, 要特别说一下APL file和Decoupling Capacitance。
APL file:通常由foundary 提供,也可以用工具自带的utility产生。APL file对于dynamic IR-drop analysis会更准确,对于device 内部的decoupling 电容可以分析进去,dynamic结果看起来更符合design实际情况。
Decoupling Capacitance:Decap实际上就是在Vdd和Gnd之间加入的隔离电容,可以去除很多由电源上的噪声而引起的Voltage Drop。在debug dynamic IR-drop时需要结合decap density map进行比对,看是不是这些issue points处的decap density过低。decap最好尽可能分布均匀而且在一些敏感基本单元附近有足够的decap cells。
浅谈Power Signoff的更多相关文章
- 浅谈 Linux 内核无线子系统
浅谈 Linux 内核无线子系统 本文目录 1. 全局概览 2. 模块间接口 3. 数据路径与管理路径 4. 数据包是如何被发送? 5. 谈谈管理路径 6. 数据包又是如何被接收? 7. 总结一下 L ...
- (转)浅谈 Linux 内核无线子系统
前言 Linux 内核是如何实现无线网络接口呢?数据包是通过怎样的方式被发送和接收呢? 刚开始工作接触 Linux 无线网络时,我曾迷失在浩瀚的基础代码中,寻找具有介绍性的材料来回答如上面提到的那些高 ...
- 《Machine Learning in Action》—— 浅谈线性回归的那些事
<Machine Learning in Action>-- 浅谈线性回归的那些事 手撕机器学习算法系列文章已经肝了不少,自我感觉质量都挺不错的.目前已经更新了支持向量机SVM.决策树.K ...
- 浅谈 Fragment 生命周期
版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 源码:AndroidDemo/Fragment 文中如有纰漏,欢迎大家留言指出. Fragment 是在 Android 3.0 中 ...
- 浅谈 LayoutInflater
浅谈 LayoutInflater 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 源码:AndroidDemo/View 文中如有纰漏,欢迎大家留言指出. 在 Android 的 ...
- 浅谈Java的throw与throws
转载:http://blog.csdn.net/luoweifu/article/details/10721543 我进行了一些加工,不是本人原创但比原博主要更完善~ 浅谈Java异常 以前虽然知道一 ...
- 浅谈SQL注入风险 - 一个Login拿下Server
前两天,带着学生们学习了简单的ASP.NET MVC,通过ADO.NET方式连接数据库,实现增删改查. 可能有一部分学生提前预习过,在我写登录SQL的时候,他们鄙视我说:“老师你这SQL有注入,随便都 ...
- 浅谈WebService的版本兼容性设计
在现在大型的项目或者软件开发中,一般都会有很多种终端, PC端比如Winform.WebForm,移动端,比如各种Native客户端(iOS, Android, WP),Html5等,我们要满足以上所 ...
- 浅谈angular2+ionic2
浅谈angular2+ionic2 前言: 不要用angular的语法去写angular2,有人说二者就像Java和JavaScript的区别. 1. 项目所用:angular2+ionic2 ...
随机推荐
- 【Vue2.x笔记2】从源码看computed对象
computed 初始化函数 const computedWatcherOptions = { lazy: true } function initComputed (vm: Component, c ...
- Qt Gui 第五章绘图类
双缓冲 void Plotter::refreshPixmap() { pixmap = QPixmap(size()); pixmap.fill(, ); QPainter painter(& ...
- Django内置的中间件
内置中间件 1. django.middleware.gzip.GZipMiddleware:相应数据进行压缩.如果内容长度少于200个长度,那么就不会压缩. 在settings.py文件中配置MID ...
- .Net Core 智能提示汉化包
在.Net Core 2.x 版本,Microsoft 官方没有提供 .Net Core 正式版的多语言安装包.因此,我们在用.Net Core 2.x 版本作为框架目标编写代码时,智能提成是英文的. ...
- itchat 爬了爬自己的微信通讯录
参考 一件有趣的事: 爬了爬自己的微信朋友 忘记从谁那里看到的了,俺也来试试 首先在annconda prompt里面安装了itchat包 pip install itchat 目前对python这里 ...
- Java Day2(下)
Java learning_Day2(下) 本人学习视频用的是马士兵的,也在这里献上 <链接:https://pan.baidu.com/s/1qKNGJNh0GgvlJnitTJGqgA> ...
- 机器学习作业(三)多类别分类与神经网络——Matlab实现
题目太长了!下载地址[传送门] 第1题 简述:识别图片上的数字. 第1步:读取数据文件: %% Setup the parameters you will use for this part of t ...
- [CQOI2012] 交换棋子 - 费用流
有一个n行m列的黑白棋盘,你每次可以交换两个相邻格子(相邻是指有公共边或公共顶点)中的棋子,最终达到目标状态.要求第i行第j列的格子只能参与mi,j次交换. Solution 一个点拆三份,入点,主点 ...
- [BOI2008] Elect - 背包dp
u1s1我一开始理解错了题 然后基本就相当于一个背包dp了 #include <bits/stdc++.h> using namespace std; int n,tot,a[305],f ...
- vue 动态组件的传值
vue项目开发中会用到大量的父子组件传值,也会用到动态组件的传值,常规子组件获取父组件的传值时,第一次是获取不到的,这时候有两种解决方案 第一种: 父组件向子组件传的是一个json对象,ES6的方法O ...