下冰雹 · 2021年06月03日

SoC设计之功耗 -- Multi Voltage

一个人就是他整天所想的东西 
-- 拉尔夫·沃尔多·爱默生

本周继续在电压上做文章,我们来看一看多电压域(multi-voltage domain)设计。毕竟SoC的动态功耗跟供电电压的平方成正比,降低一点供电电压很利于动态功耗的改善。

多电压域的主要设计思想就是SoC内的每个模块/IP根据自己的需要,工作在不同电压域。需要注意的是,为了简单起见,今天要讲的multi-voltage主要指静态电压调节(static voltage scaling)技术,也包括一些之前介绍过的动态电压调节DVS。但是和准备以后讲的电源门控(power gating)无关。也就是说SoC的所有模块/IP工作在固定的供电电压下(各自之间可能不同)。大家千万不要混淆了这几个概念,虽然实际设计中可能几种技术会同时采用。

1.png
图1 多电压设计架构示意图

多电压设计要面对几个挑战如下:

  • Level shifter,
  • STA
  • Floor/Power planning,
  • Power up/down sequence

首先要讲的是电平转换(level shifter)。在不同电压域的接口之间传输信号需要格外注意,可能会存在驱动不足或者过驱动的问题。如果是高电平域的信号输出到低电平域,由于低电平域器件的阈值电压低,直接接高电平信号有可能会造成误抖动;反过来如果是低电平域信号输出到高电平域,由于高电平域器件的阈值电压高,所以高电平域器件很难区分低电平域信号的0/1,如果直接连接会有驱动不足等问题。

因此,建议不管是从高到低转换还是从低到高转换,都要加上level shifter。Level shifter通常不具备逻辑功能,只是用于不同电压值之间的信号电平的转换。也就是说level shifter不会对功能仿真造成影响,不需要去写验证激励来测试,这一点上与后面要讲的power gating中用到的isolation不同,本篇讲的level shifter都是指的不带isolation功能的。下面两个图是level shifter的逻辑与简单电路图,图中的H表示高电平,L表示低电平。

2.png
图2 高电平到低电平level shifter

3.png
图3 低电平到高电平level shifter

感兴趣的同学可以根据自己手边的lib文件看一下,通常搜is\_level\_shifter这个关键字。下图是在Liberty User Guide中截取的(其实这是一个带enable的level shifter,相当于有isolation功能),供参考。

4.png
图4 lib文件里面的level\_shifter

Level shifter并不会影响逻辑设计,它只是一个电压转换的buffer。现在的EDA工具都支持自动插入level shifter了,不用再改动RTL了,但是会要求指定level shifter的摆放区域。Level Shifter可以加在信号的源(source)端,也可以加在信号的目的(destination)端。一般来说,推荐加在目的端。也就是说,如果是高到低转换,levelshifter放在低电压域;如果是低到高转换,放在高电压域。但是这个规则并不绝对,具体要结合实际情况,比如要考虑功耗,时序等。

关于level shifter需要注意的还有一点,如果涉及到了动态调压,要确定各模块的电压高低是否能保持一致。

5.png
图5 DVS时要注意模块间的电压转换关系

由于Level shifter不影响逻辑,所以在做功能验证时不需要额外验证这块了。但是在做设计检查时千万不能忘记,比如一定要检查netlist中是否插入了level shifter以及方向等等。

在多电压的SoC设计中,全局时钟信号需要传播在不同的电压域之间。在做CTS的时候需要告诉工具这些信息。对于静态多电压设计,静态时序分析并不太难(跟单一电压设计比)。如果是动态多电压设计,STA就复杂多了,今天就不深入讨论了。

需要指出一点,往往低到高的level shifter会带来比较大的延迟,对于时序比较紧张的路径要格外小心。

对于物理实现来说,每一个电源域都要设计独立的电源网络,所以也就带来了更多的工作量。尤其是对于电源管脚数量受限的芯片,在设计电源网络时要格外注意。

如果只是静态多电压设计,除了电源网络外,还要注意level shifter的摆放,其各种设计规则检查相对来说要简单一些。如果是动态多电压设计,各种检查就复杂一些了。举个例子,就像之前讲过的IR drop仿真,要考虑多种工作场景,尽可能的把各种可能用到的工作电压组合都检查到;对于有电源门控的设计,还要做门控开关打开的IR drop及其它相关检查,留待以后再说。

在板级设计上,由于供电源多,设计也会复杂一些。考虑到不同电源域的模块之间可能会有一些依赖关系,所以板级和SoC内部的复位逻辑也要仔细考虑。板级设计不是我的主业,就不多叨叨了,有兴趣的的同学可以查阅一下文章或者是大厂的电源管理芯片application note文档。我相信会找到很多有用信息。

作者:老秦谈芯
来源:https://mp.weixin.qq.com/s/NiNelx9Jm_6l_AjgWJRItA
作者微信公众号
qrcode_LaoQinTanXin_1.jpg

相关文章推荐

更多IC设计技术干货请关注IC设计技术专栏。
推荐阅读
关注数
19610
内容数
1303
主要交流IC以及SoC设计流程相关的技术和知识
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息