最近小编在微信公众号后台陆续收到一些粉丝的留言,希望多讲讲低功耗设计实现方面的基础知识,实现经验等。今天又是周末了,小编还是老样子到咖啡厅开始码字,筹划安排后续分享内容(公众号和星球),当然还有小编的互联网项目。低功耗设计在当前的 IC 设计中确实非常重要,因此有比必要多科普分享一些相关的知识和经验。只要你持续关注小编,假以时日你也能够轻松玩转低功耗的芯片实现(数字后端真的一点都不难)。
低功耗设计目的
消费类电子产品在生活中扮演了非常重要的角色,比如小天才电话手表,手机,ipad,手环等便携式设备都离不开我们的平常生活。在同等性能的情况下,功耗低的产品势必更受市场和消费者喜爱。因为功耗低的产品较功耗高的产品更省电,能够工作的时间更长。举个简单的例子,比如有一款手机每隔一个小时就需要充电,试问你会买吗?
设备消耗电能,会产生热量,消耗的能量越多,产生的热量就越多。发热越严重,热噪声越大,就会影响器件的正常工作,从而导致芯片无法正常工作。动态功耗比较高的芯片,往往可能芯片实现时 timing signoff 的频率是 1.2GHz,可是 silicon 上可能只能跑 800MHz。这主要因为功耗太高,芯片的温度就会飙升,温度升高,管子的 delay 就会变大,所以很有可能导致 setup 并非如 timing signoff 时那么好,可能在当前的温度下,setup 出现较大的 timing violation。
如果不做低功耗设计,可能会导致后期成本的增加,从而导致整个系统的成本增加。例如,不进行低功耗设计,发热量就可能增加,在封装的时候,就需要考虑怎么给你这个芯片进行散热,比如采用散热比较好的材料等,这样必然增加封装的成本。再比如,在进行系统组装的时候,如果那你的芯片功耗过大,就需要考虑在系统外给你进行散热,比如说添加一个风扇,发热很严重的甚至需要进行水冷处理。
无论是芯片,Package 还是 PCB 面积的增加都会直接影响芯片的成本,从而影响整个产品的成本。
功耗的组成
在 CMOS 电路中,静态功耗主要是漏电流引起的功耗,如下图所示:
漏电流有下面几个部分组成:
PN 结反向电流 I1(PN-junction Reverse Current)
源极和漏极之间的亚阈值漏电流 I2(Sub-threshold Current)
栅极漏电流,包括栅极和漏极之间的感应漏电流 I3(Gate Induced Drain Leakage)
栅极和衬底之间的隧道漏电流 I4(Gate Tunneling)
一般情况下,漏电流主要是指栅极泄漏电流和亚阈值电流(进入超深亚微米工艺之后,隧道漏电流成为主要电流之一),因此下面就简单介绍一下这两种电流。
栅极泄漏功耗:在栅极上加信号后(即栅压),从栅到衬底之间存在寄生电容,因此在栅衬之间就会存在有电流,由此就会存在功耗。
亚阈值电流:使栅极电压低于导通阈值,仍会产生从 FET 漏极到源极的泄漏电流。此电流称为亚阈值泄漏电流。在较狭窄的晶体管中,漏极和源极距离较近的情况下会产生亚阈值泄漏电流。晶体管越窄,泄漏电流越大。要降低亚阈值电流,可以使用高阈值的器件,还可以通过衬底偏置进行增加阈值电压。
静态功耗的计算公式如下所示,Ipeak 为泄漏电流:
Ppeak = VDD*Ipeak
通常 leakage 与工艺相关,在选定工艺后,需要查看 foundary 提供的 lib 文件进行查看,从而选定一种或者几种适合当前 design 需求的 library。比如 C30LVT 可能 leakage 比较大,相比 C35RVT,C40LVT 的 leakage 可能要大好几倍。因此,我们在做数字后端实现时可能就不会选用 C30LVT 这套库。
动态功耗
动态功耗包括:开关功耗或者称为翻转功耗、短路功耗或者称为内部功耗。
在数字 CMOS 电路中,对负载电容进行充放电时消耗的功耗,我们称之为开关功耗。下面我们以一个普通 CMOS 反相器为例来说明。
当 Vin = 0 时,上面的 PMOS 导通,下面的 NMOS 截止;VDD 对负载电容 Cload 进行充电,充电完成后,Vout 的电平为高电平。
当 Vin = 1 时,上面的 PMOS 截止,下面的 NMOS 导通,负载电容通过 NMOS 进行放电,放电完成后,Vout 的电平为低电平。
这样一开一闭的变化,电源的充放电,就形成了开关功耗,一般也称之为 Switch Power。开关功耗 Psitch 的计算公式如下所示:
Pswitch = 1/2*VDD2*Cload*Tr
在上式中,VDD 为供电电压,Cload 为后级电路等效的电容负载大小,Tr 为输入信号的翻转率。
翻转率是指单位时间内信号的翻转次数。比如一个时钟周期 T=20ns,在这个时钟周期内,一个信号翻转了 4 次,那么翻转率即为 4/20=0.2。这里需要指出的是信号的翻转次数是指从 0—>1,或者 1-0,不含从 0-X,或者 X-0(1),这个在做芯片IR Drop 分析时需要特别注意,否则可能会导致结果不准确。
短路功耗也称为内部功耗(Internal Power),短路功耗是因为在输入信号进行翻转时,信号的翻转不可能瞬时完成,因此 PMOS 和 NMOS 不可能总是一个截止另外一个导通,总有那么一段时间是 PMOS 和 NMOS 同时导通,那么从电源 VDD 到地 VSS 之间就有了通路,就形成了短路电流,如下面的反相器电路图所示:
短路功耗 Pshort 的计算公式如下所示,其中 VDD 为供电电压,Tr 为翻转率,Qx 为在一次翻转过程中从电源到地的电荷量。
Pshort = VDDTrQx
因此,我们知道动态功耗主要由开关功耗和短路功耗组成,而且开关功耗在动态功耗中占比特别大。从开关功耗的公式可以得知,在数字 IC 整个设计流程中可以通过改变工作电压,翻转率和负载电容来改善 switch power,从而改善动态功耗。
实践表明,时钟树功耗占据整个动态功耗的 60-70%。因为数字 IC 的低功耗设计实现需要着重考虑时钟的设计实现。比如 clock gating 的方法,时钟树综合的策略等。
小编知识星球简介:
在这里,目前已经规划并正着手做的事情:
ICC/ICC2 lab 的编写
基于 ARM CPU 的后端实现流程
利用 ICC 中 CCD(Concurrent Clock Data)实现高性能模块的设计实现
基于 ARM 四核 CPU 数字后端 Hierarchical Flow 实现教程
时钟树结构分析
低功耗设计实现
定期在星球布置作业题
在这里,各位可以就公众号推文的内容或者实际项目中遇到的难题提问,小编会在 24 小时内给予解答(也可以发表你对数字后端设计实现中某个知识点的看法,项目中遇到的难点,困惑或者职业发展规划等)。
反正它是一个缩减版的论坛,增强了大家的互动性。更为重要的是,微信有知识星球的小程序入口。星球二维码如下,可以扫描或者长按识别二维码进入。目前已经有九十六 位星球成员,感谢这九十六位童鞋的支持!(年前仅剩十个名额)欢迎各位铁杆粉丝加入!终极目标是**打造实现本知识星球全员 **年薪百万 **** 的宏伟目标。(星球的门槛将会越来越高,有需求的朋友趁早上车)