转自吾爱社区http://www.52-ic.com/?p=244
吾爱IC社区近期发布了基于28nm工艺的ARM Cortex-A53 CPU的数字后端实现教程。看到粉丝们反馈的好评,特别欣慰。小编会一如既然继续码字,继续分享更多数字后端设计实现方面的技术干货。今天为大家带来低功耗技术中的一些经验分享。
Power gating 概述
Power gating是深亚微米技术中的低功耗技术之一。它是通过关闭设计中部分电路(不需要工作时)来实现的,以减少设计中的静态(泄漏)功率。要实现这个功能Power switch可以完全胜任。它的原理是将VDD或GND与特定设计层次结构的标准单元分开。下图为一个典型power gating系统。
通常有两种类型的Power switch cell,分别为Footer和Header两种类型。Footer结构类型是通过VSS的开关来实现标准单元的开与关,而Header结构类型则是通过VDD的开关来实现标准单元的开与关。在实际应用中,因为其leakage低和实现的便利性,往往都是选用Header类型的Power switch cell。
Power switch 结构
Power Switch的结构有fine grain power gating和coarse grain power gating两种类型。
fine grain power gating是指将每个switch都放在cell内部。这样使得面积增大1x-3x。优点是IR drop可以更小。
而coarse grain power gating则是在design中加入一些power switch cell来控制std cell的开和关。这种做法的优点是面积适中,缺点是power switch cell本身的压降会偏大。
因此,在实际项目应用中,大部分都是采用coarse grain power gating方式。
Placement要求
这些Power switch cell必须在floorplan 阶段添加进来,而且必须将其global 和local power ground pin 连接到power mesh 上。Header类型的power switch,一般有一个Global VDD(VDD),一个Local VDD(VDD_GATED),SLEEP信号和ACK信号。
在实际应用中,我们会在模块中规划一个Power Switch Network。这个power switch network由外面的Power Control模块来控制power gating模块的开启与关断。整个power switch network是由一堆的MTCMOS级联而成的。
Power switch cell之间必须确保都是经过always on的domain。同时需要确保Power switch cell transition没问题,保证可以正常开启和关断。如果在后期发现MTCMOS之间存在transition违例,则需要插入always on buffer来解决transition问题(这种情况应该尽量避免)。
Power switch cell 数量
每个模块中应该加多少个MTCMOS,是非常有讲究的。加的太多会导致面积过大,routing resource也会相应减少,影响绕线和时序。加的太少又会影响IR Drop过大。
所以,我们需要事先估算下模块中理论上需要加多少数量,然后再加一定的margin,就可以得出我们最终需要添加的MTCMOS数量(最终要以Redhawk分析结果为准)。这个方法是吾爱IC社区小编一直在用的方法,实践表明IR Drop结果符合预期。
计算方法:
1.根据预估功耗和供电电压,计算出模块理论上所需要的总电流
2.再根据MTCMOS的电阻和其本身所能允许的最大压降值,算出理论上所需MTCMOS的数量
3.将所需要MTCMOS数量乘以1.3(预留margin),得出最终需要添加的MTCMOS数量
Low power cell
Isolation cell
在SOC系统中,当一个信号从一个power domain穿过AON Block,需要用到isolation cell,如下图所示。当信号从PD2穿到AON block时,防止PD2 shut off后将不稳定的状态传到AON Block,需要将PD2所有output端加isolation cell,且ISO cell必须添加在always on domain。这个isolation cell其实等效于一个buffer。与buffer不同的地方在于,这个ISO cell还有一个clamp 使能信号,可以将PD2不稳定或者X态,clamp成一个固定值。根据不同的设计需求,可以将其clamp为0或者1。
对于数字后端实现而已,这个Isolation cell需要在综合阶段编写upf,让工具自动插入。在布局布线阶段,需要将ISO cell的input pin设置dont_touch,防止在PD2 输出信号和ISO cell之间插buffer。
Level shift cell
当信号从低压Domain传输到高压Domain时,PMOS管栅极处的较低电压可能会导致栅极不完全关断,从而导致异常的泄漏电流。因此,当信号在跨电压域传输时,需要加Level shift cell。比如当信号从AON block传输到PD1时,需要加Level shift。当信号从PD1传输到PD2时,由于PD1是power gating模块,所以需要在PD1和PD2之间加带Isolation 功能的Level shift cell(ELS)。
对于数字后端实现而言,我们主要关注的是Level shift cell的power连接和placement的要求。Level shifter是两条row高度的cell,其中含有VDD,VSS和VDDL(VDDH)。VDDL和VDDH是secondary power pin。在画power时,需要将其画成一个额外的power rail,确保每个Level shift cell secondary power pin的正常供电。
Level shift cell的placement主要考虑cell的transition。所以建议用magnet_placement来实现。同样还需要注意各种电压域跨越时,level shift cell 的input 和output需要设置dont_touch,防止工具插buffer。
如果你对isolation cell和level shift cell的placement和power连接还有疑问,欢迎前往小编知识星球提问,手把手教会。
小编知识星球简介:
在这里,目前已经规划并正着手做的事情:
- ICC/ICC2 lab的编写
- 基于ARM CPU的后端实现流程(已经发布)
- 利用ICC中CCD(Concurrent Clock Data)实现高性能模块的设计实现(已经发布)
- 其他内容待定
在这里,各位可以就公众号推文的内容或者实际项目中遇到的难题提问,小编会在24小时内给予解答(也可以发表你对数字后端设计实现中某个知识点的看法,项目中遇到的难点,困惑或者职业发展规划等)。
反正它是一个缩减版的论坛,增强了大家的互动性。更为重要的是,微信有知识星球的小程序入口。星球二维码如下,可以扫描或者长按识别二维码进入。目前已经有二十三星球成员,感谢这二十三位童鞋的支持!欢迎各位铁杆粉丝加入!终极目标是打造实现本知识星球全员年薪百万的宏伟目标。(星球的门槛将会越来越高,有需求的朋友趁早上车)