不简单的平衡——Power Plan(二)

640?wx_fmt=gif

上次介绍了基本的Power Planning(以下简称PPPR)的概念,这次通过一个简单的例子来介绍一下整个PPPR的流程。上周我们也讲过,PPPR的步骤主要分为"画环状的Ring, 打纵横交错的Stripe, 连接各个power节点的Sroute以及产生power via"。借助一个最简单的design,我们来熟悉一下这个过程。

首先我们load一个没做过PPPR的design, 如下图所示,该设计的floorplan view中含有左上角的一个模拟模块PLL, 以及剩余三个普通的RAM

640?wx_fmt=jpeg

定义全局连接关系

那首先第一步,我们需要确保设计中已经对电源进行了定义,也就是我们平时经常用到的globalNetConnect关系,简称GNC rule。 我们需要把相应的端口和网络连接到合适的电源和接地网络上去。这样工具才能在后面帮我们自动地完成整个电源网络的连接。该设计的GNC rule如下: 

globalNetConnect vss -pin VSS -type pgpin -all

globalNetConnect vss -type tielo -all

globalNetConnect vdd -pin VDD -type pgpin -all

globalNetConnect vdd -type tiehi -all

添加电源环

接下来,我们须先添加ring(电源环)。power ring是指为了均匀供电,包围在标准单元周围的环形供电金属,可以把它想象成一座桥梁,供电IO单元通过金属连接到ring,标准单元和macro分别通过follow pin和stripes连接到ring,ring可以平均分布电流,缩短电流回路,更有效的减小电压降与电迁移问题。在上诉design中,PLL的ring需要单独供给,模拟模块对电源要求较高,因此PLL需要单独稳定供给电源,不受其他模块信号影响。我们可以使用命令addRing来添加power ring

addRing -type core_rings -nets { vss vdd} -layer {top METAL7 bottom METAL7 left METAL8 right METAL8} -offset 1 -width 8 -spacing 1.0 -exclude_selected 1

addRing -type block_rings -nets {Avss Avdd} -around selected -layer {top METAL7 bottom METAL7 left METAL8 right METAL8} -width 5 -spacing 1 -offset 1

需要注重的参数就是layer, width, spacing,一般在公司里都会取该工艺下的经验值。新工艺的需要多研究,多尝试几次得出合理的参数值。

其中ring的width计算公式如下:

(1) 首先计算出功耗P

(2) 设宽度为W,高为H,功耗为P,则

Ptop = Pbottom = P * W /(W+H) * 0.5;

Pleft = Pright = P * H /(W+H) * 0.5;

(3) 每边宽度可以计算为:

W(um) = I / J;

J为电流密度,I(mA)=Pside/V,电流密度可以从厂商提供的工艺库中查到。

而ring的间隔根据厂家提供的设计规则中的最小间距决定,一般情况下为最小间距的2倍左右。

添加完power ring以后,该design的floorplan view如下:可以看到在整个core,PLL中分别添加了对应的ring.

640?wx_fmt=jpeg

添加电源条线

power ring添加完以后,我们可以去添加power stripe(电源条线)了,stripe的作用就是给design中的hard macro供电,我们采用addStripe命令来添加stripe。通常选取高层金属作为power stripe走线:

addStripe -nets {vdd vss} -direction horizontal -layer METAL7 -width 8 -set_to_set_distance 70 -ybottom_offset 14 -spacing 1

addStripe -nets {vdd vss} -direction vertical -layer METAL8 -width 8 -set_to_set_distance 70 -xleft_offset 37.9 -spacing 1

而Power Stripes的宽度和间隔计算方法一般有以下几个经验法则

一.宽度

(1)纵向stripe宽度的最大值一般取标准单元库中的最小与非门宽度的4倍;

(2)横向stripe的宽度取值一般为垂直布线间距(pitch)的整数倍,其目的是为了充分利用布线通道。

二.   间距

(1)纵向stripe的间距值可以从对应工艺的LEF库中查找到;

(2)横向stripe的取值一般是标准单元高度的整数倍,通常选择1倍或者2倍。

添加完stripe以后,我们就可以看到整个core里面形成了纵横交错的电源网络。如下图所示:

640?wx_fmt=jpeg

添加电源轨道

接着就是做standard cell的供电网络了,我们一般叫做followpin或者power rail。 因为standard cell都摆放在row上面,所以followpin的添加相对简单,只需要在每条row上打上电源线,然后standard cell放在上面,就能实现供电了,类似火车轨道一样。一般followpin以M1作为电源层。 采用命令sroute -connect corePin就可以生成follow pin。下图中的蓝色wire就是follow pin。

640?wx_fmt=jpeg

通电

最后,我们需要将供电IO单元和power ring连接起来,实现一个完整的供电网络。因为供电单元是外部电源的引入口,我们使用命令sroute -connect padPin完成连接。如下图的红圈所示:

640?wx_fmt=jpeg

添加电源通孔

最后就是打power via了,其实在添加stripe和ring的时候,工具都会自动的帮我们打上via, 然而比如说我们需要手动地去添加或者换掉一些via。可以采用editPowerVia来生成或者修改。我们主要通过via cell和via rule来生成power via。 Lef中的定义区别如下。我们优先会采用via rule去生成power via。

Via cell:

VIA VIA67_1x4_H

   RESISTANCE 3 ;

   LAYER m6 ;

       RECT -0.068 -0.225  0.068  0.225 ;

   LAYER via6 ;

       RECT -0.059 -0.198  0.059 -0.154 ;

       RECT -0.059 -0.081  0.059 -0.037 ;

       RECT -0.059  0.037  0.059 0.081 ;

       RECT -0.059  0.154  0.059 0.198 ;

   LAYER m7 ;

       RECT -0.068 -0.225  0.068  0.225 ;

END VIA67_1x4_H

Via rule:

VIARULE VIARULE67_pg

    LAYER m6 ;

        DIRECTION VERTICAL ;

        WIDTH 0.135 TO 0.167

    LAYER m7 ;

        DIRECTION HORIZONTAL ;

        WIDTH 3.590 TO 3.610

    VIA VIA67_1x2_H ;

END VIARULE67_pg

一个最简单的power plan流程就介绍完了,大家有没有了解些什么呢?power plan需要满足整个芯片的供电需求,所以,更主要偏向经验方面。我主要给大家介绍一些原理性的概念,希望对大家有帮助!就这样啦,下期再见吧~~


640?wx_fmt=jpeg

往期回顾

简历请戳邮箱:taozhang3260@163.com

  • 18
    点赞
  • 138
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值