在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 18730|回复: 37

[转贴] IR Drop分析之Redhawk分析流程

[复制链接]
发表于 2019-11-27 16:34:25 | 显示全部楼层 |阅读模式

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

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

x
1.IR drop的定义

IR drop是指在集成电路中电源和地网络上电压下降和升高的一种现象。随着半导体工艺的不断演进,金属互连线的宽度越来越窄,导致电阻值不断变大(供电电压也越来越小),IR drop的效应越来越明显。因此,现在的芯片最后都把IR drop的分析做为芯片signoff的一个必要步骤。业界的signoff工具大部分采用的是Redhawk。

2.IR Drop的种类

IR drop主要分为两种。一种是静态的IR drop,另外一种则是动态的IR drop。

静态IR drop现象产生的原因主要是电源网络的金属连线的分压,是由于金属连线的自身电阻分压造成的。电流经过内部电源连线的时候产生电源压降。所以静态IR drop主要跟电源网络的结构和连线细节有关。因此静态IR drop主要考虑电阻效应,分析电阻的影响即可。动态IR drop是电源在电路开关切换的时候电流波动引起的电压压降。这种现象产生在时钟的触发沿,时钟沿跳变不仅带来自身的大量晶体管开关,同时带来组合逻辑电路的跳变,往往在短时间内在整个芯片上产生很大的电流,这个瞬间的大电流引起了IR drop现象。同时开关的晶体管数量越多,越容易触发动态IR drop现象。

3.静态IR Drop分析的流程
C:\Users\DELL\Desktop\新建文件夹\111
lef是指Std cell,IP,Memory,io,bond pad,子模块的lef。除了子模块的lef外,其他fab厂都会提供对应的文件。子模块的lef可以由Milkyway来生成。这里需要注意的是tech lef必须写在lef list中的第一个。lib是指design中所用到的standard cell,memory,ip,io等子模块的lib文件,这些文件fab厂或者Vendor均有提供。

ploc文件也称为PAD 文件,其中包含design中所有的供电点信息,比如power pad,center pad的instance名字,坐标位置,layer层次以及power net信息。spef文件为数字后端实现后抽取RC用来跑STA的spef文件。

tech文件是指Apache的tech文件,这个文件一般可以通过ircx2tech来产生。

具体命令如下:

ircx2tech -i rc_ircx.rc_cworst.ircx -o rc_ircx.rc_cworst.tech -v max -m IRCX2tech.mapping

Timing文件可以通过STA中的PT session来产生对应的Timing文件。具体产生步骤如下:

restore_session top.pt_session

source pt2timing.tcl

getSTA *

VCD(Value Change Dump)文件一般由数字前端工程师提供。VCD文件是IEEE1364标准(Verilog HDL语言标准)中定义的一种ASCII文件。它主要包含了头信息,变量的预定义和变量值的变化信息。正是因为它包含了信号的变化信息,就相当于记录了整个仿真的信息,我们可以用这个文件来再现仿真,也就能够显示波形。因为VCD是 Verilog HDL语言标准的一部分,因此所有的verilog的仿真器都要能够实现这个功能,也要允许用户在verilog代码中通过系统函数来dump VCD文件。我们可以通过Verilog HDL的系统函数$dumpfile 来生成波形,通过$dumpvars的参数来规定我们抽取仿真中某些特定模块和信号的数据。

因为VCD记录了信号的完整变化信息,我们还可以通过VCD文件来估计设计的功耗,而这一点也是其他波形文件所不具备的。 PrimeTime PX (Prime Power,这个工具其实是功耗分析的Signoff工具)都可以通过输入网表文件,带功耗信息的库文件以及仿真后产生的VCD文件来实现功耗分析。

由于静态IR Drop分析是基于power平均分布在每个instance上,因此我们在分析IR Drop前还需要给design中各个子模块指定一个预估的功耗值。这个功耗值的确定需要根据以往的项目经验或者实测功耗值,额外再添加点margin。这个功耗值如果设置不合理,分析出来的结果也是不具备参考价值的。另外,还需要设置合理的toggle rate值。

参考脚本如下:

# Setup anlysis mode

setup analysis_mode static

# Design Importing

import gsr top.gsr

setup design

# Power calculation

perform pwrcalc

# Extract PG RC

perform extraction -power -ground

perform gridcheck

#Perform anlysis

perform analysis -static

#perform emcheck -mode avg

#run Redhawk explorer

explore design

# -constraint_file "cons.rpt"

#save database

export db static_ir.db


4.动态IR Drop分析的流程


在项目前期,由于数字后端实现的database没有ready,后仿可能也没有时间做,所以此时动态IR Drop的分析一般都是基于Vectorless。而项目后期都是需要基于某个场景下,比如max power,去产生对应的VCD,然后再去做基于VCD的动态IR drop分析。基于VCD动态IR drop的分析一般可以不指定各个子模块的功耗值,工具可以从VCD中获取对应的power值,如果没有对应的功耗值,则采用用户设置的值。

参考脚本:

# Setup anlysis mode

setup analysis_mode dynamic

# Design Importing

import gsr top.gsr

setup design

# Power calculation

perform pwrcalc

# Extract PG RC

perform extraction -power -ground -c

perform gridcheck

#Perform anlysis

perform analysis -dynamic

#perform emcheck -mode avg

#run Redhawk explorer

explore design

# -constraint_file "cons.rpt"

#save database

export db dynamic_ir.db



5.IR Drop的影响

性能下降电压降低后,gate的开关速度变慢,性能降低。因此,对于高性能的设计,必须将IR Drop控制在很小的范围内。芯片功能错误在极端的情况下功能也会受影响的。在深亚微米下,如果power network做的不够好,然后碰上了很不好的case,IR drop在某个局部区域特别大(特别是动态IR drop),从而导致STA阶段signoff的timing 与实际情况不一致(考虑OCV仍然无法cover design的要求),导致setup或者hold的违例。setup的违例,可以通过抬高电压来提升频率,但是代价是功耗上去了,而且如果动态IR drop不够robust,可能通过抬电压,setup能提升的空间也有限。而一旦出现hold违例,那芯片就无法正常工作。因此在先进工艺中,IR drop的影响特别大,需要引起各位的高度重视。

6.改善IR drop的方法

提高power mesh密度增加power switch cell 数量插足够多的decap cell(含decoupling capacitance)将同时翻转的寄存器摊开些摆放

发表于 2019-11-27 19:26:17 | 显示全部楼层
感谢分享,需要软件可以联系我,Q 2960532559
发表于 2019-11-28 09:30:17 | 显示全部楼层
感谢分享,ir drop的理论与实践
发表于 2019-11-29 11:03:01 | 显示全部楼层
学习了,谢谢
发表于 2019-11-29 16:38:04 | 显示全部楼层
:):):):):):):)
发表于 2019-11-29 16:39:17 | 显示全部楼层
:):):):)
发表于 2019-11-29 16:40:10 | 显示全部楼层
:o:(:(:(:(   
发表于 2020-1-14 17:39:43 | 显示全部楼层
受教了~刚好需要
发表于 2020-1-15 09:32:35 | 显示全部楼层
谢谢分享,很有用
发表于 2020-9-1 11:47:22 | 显示全部楼层
由于静态IR Drop分析是基于power平均分布在每个instance上,因此我们在分析IR Drop前还需要给design中各个子模块指定一个预估的功耗值。这个功耗值的确定需要根据以往的项目经验或者实测功耗值,额外再添加点margin。这个功耗值如果设置不合理,分析出来的结果也是不具备参考价值的
在这里我有点不明白,我怎么来进行预估功耗的设置呢?都设置哪些参数?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

GMT+8, 2024-11-22 06:50 , Processed in 0.022060 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表