LPMM阅读笔记(3)

3 多电压域设计

在现代的SoC设计中,不同的模块有不同的性能和约束;举例来说,CPU在系统中可需要以最快的速度运行,这样的前提下,CPU就需要较高的电源电压,对于另一个模块USB而言,它只需要以一个比协议要求的基本频率稍高一点且相对固定的频率去运行就可以,这种情况下,USB就可以以一个比CPU的电压低的电源来供电;从前面的章节我们可以知道,低电压意味着更低的动态功耗和静态功耗。

多电压域设计是将芯片内部的逻辑分为多个部分,每个部分由其对应的电源电压进行供电。脱离只有一种电压的电源为芯片供电的思想后,有以下几种技术可以应用。

1) 静态电压缩放(Static Voltage Scaling),简称为SVS:系统中的模块采用固定的但电压值不同的电源进行供电。

2) 多电压缩放(Multi-level Voltage Scaling),简称MVS:系统中的同一个模块根据不同的应用场景,可在两级或多级电压的电源上进行切换。

3) 动态电压和频率缩放(Dynamic Voltage and Frequency Scaling),简称DVFS:这是MVS的一种拓展应用,是通过控制电路实时的将不同模块的工作电压及工作频率降低到恰好满足系统最低要求来降低系统中不同模块功耗的方法。

4) 自适应电压缩放(Adaptive Voltage Scaling),简称AVS:可以说这又是DVFS的一种拓展应用,该技术采用闭环的控制电路,实时的对各模块的电压进行自动的调整。

3.1 多电压域设计的挑战

多电压域设计对于设计人员而言,主要有以下几个方面的挑战:

1) 电压转换器:各级电压域之间的有信号交互时,信号不能直接从一个电压域跨越到另一个电压域,需要在两个电压域之间增加一个电压转换器。

扫描二维码关注公众号,回复: 2529873 查看本文章

2) 静态时序分析:当整个芯片只有一个电压供电时,时序分析时只需要使用一个特征电压的库,工具可以直接进行分析;当芯片的多个模块工作在不同的电压下时,需要用到库里的多个电压特征,某些电压下,库里面可能还没相应的信息,这样的话可能需要通过折算/间接计算的方式进行时序分析,如此便使得多电压域设计的静态时序分析比较复杂。

3) 布局:多电压域设计中对于布局有会增加一些约束,所以布局方面需要仔细的考虑一番。

4) 板级电源:多电压设计要求板级设计上有更多电压的电源来为芯片供电,增加了板级设计的复杂度。

5) 各模块的上下电顺序:多电压域设计中,各模块的上下电顺序不恰当时,可能造成系统死锁,为了避免这种情况,在上电顺序上也需要设计人员仔细考虑。

3.2 电压缩放接口——电压转换器(Level Shifters)

这一节主要回答下面几个问题:

1) 为什么需要电压转换器?

2) 电压转换器有几种?

3) 电压转换器放在什么地方?

4) 什么时候需要电压转换器?

从上面的问题就可以看出电压转换器在多电压域设计中是个至关重要的器件,下面对这几个问题进行一一解答,先来看一下为什么需要电压转换器?

假如我们用一个1.2V的信号去驱动一个0.9V的COMS门,理论上不用插入特别的接口单元,但这样的话0.9V目标时钟域的所有timing都会发生变化,需要重新建模,工作量很大。反过来,如果我们用一个0.9V的信号去驱动一个1.2V COMS门,除了时序上的问题外,还会导致CMOS上面的PMOS管和下面的NMOS管同时导通,产生短路电流;为了解决这些问题,我们有必要在两个电压域间交互的信号上插入电压转换器。

3.2.1 电压转换器的方向

电压转换器是采用模拟电路来实现的,其方向是固定的,无论是从高电压域到低电压域还是从低电压域到高电压域的转换方向都是固定的,所以对应的有两种电压转换器,分别是从高到低的电压转换器和从低到高的电压转换器。这个约束对于SVS来说可能不是什么大的问题,但是对于其他电压缩放技术来说可能是一个挑战,因为电源电压可能会在操作过程中发生变化,所以设计人员需要保证两个电压域之间的关系是确定的,要么一直为高电压域到低电压域,要么始终为低电压域到高电压域,或者始终一致。

3.2.2 高电压域到低电压域的电压转换器

高电压域到低电压域的电压转换器是采用两个反相器串联在一起来实现的,如图 1所示,一个从高到低的电压转换器只会引入一个buf的延迟,所以它对timing的影响很小。

图 1 High to Low Level Shifters

3.2.3 低电压域到高电压域的电压转换器

用一个来自低电压域的信号去驱动一个高电压域的cell时,有一个关键的问题是欠驱动力的信号增加了接收输入端的上升时间和下降时间,如此便会增加短路电流的持续时间,还使得时序变差,采用如图 2所示的专用电压转换器可以解决上述问题。

图 2 Low to High Level Shifters

为了加深理解和便于说明,我在图 2上的关键节点加上了标号,各个点对应的真值表如表 1所示,当输入端INL为0时,A点为1,使得VT1导通,C点通过VT1接地为0,则VT2导通,D点为1,经反相器后OUTH输出为0;当输入端INL为1时,A点为0,B点为1,使得的VT3导通,D点通过VT3接地为0,经反相器后OUTH输出为1;

表 1 低到高电压域转换器的真值表

低到高的电压转换器需要两个电源,而且是共地的,相对于高到低的电压转换器,低到高的电压转换器引入的延迟明显更长。

3.2.4 电压转换器的布局问题

多电压域设计在布局方面对设计人员来说有较大的挑战,通常将高到低的电压转换器放在低电压域中,如图 3的例子所示。

图 3 电压转换器放在目标电压域

若图 3中1.2V电压域和0.9V电压域间的距离很小,且1.2V电压域输出信号的驱动能力足够时,两个电源域中间可以不需要额外的buf,但是,若两个电源域间的距离较远,或者输出信号的驱动能力不足的呢?

上述问题可以考虑如图 4所示的解决方法,在1.1V的电源域内插入buf,但是这样就意味着1.2V的电源可能要想信号一样在1.1V的电压域内布线,这种复杂的电源布线是实现多电压设计的关键挑战之一。

图 4 电压域间插入buf

从低到高电压域的电压转换器不论放在低电压域还是高电压域,都存在上述问题,因为低到高的电压转换器需要两个电源,所以必然会有一个电源需要穿越到另一个电源域中,通常我们将低到高的电压转换器放在高电压域中,例如图 5所示的放置,因为输出比输入需要更大的电流驱动。

图 5 低到高电压转换器的放置

3.2.5 电压转换器的自动实现

从逻辑的角度来看,电压转换器只是buf,所以电压转换器不会影响功能设计,现在的工具可以指定电压转换器的插入位置,但书中建议按照前面的两种做法,将电压转换器放在目标电压域,高到低的电压转换器可以根据时序约束来决定是否插入,低到高应该根据功耗和时序两个方面来考虑,工程上,根据下述公式来确定是否插入电压转换器。

VDDH −VDDL >VTPMOS − (0.1*VDDH )

其中,VTPMOS是PMOS管的阈值电压。

3.3  多电压域设计中的时序问题

时钟跨越不同的电压域意味着时钟需要通过电压转换器,对于MVS技术而言,时钟分配会变得更加复杂,如图 6中的buf有时工作在0.9V的电压下,有时则工作在1.1V的电压下,这样的情况下,如何最大限度的减少可变电压域相对于1.2V电源域的clock skew是一个问题,书上提出对于这个问题的解决办法是对两种情况的电压都进行时序分析和优化,确保两种情况都能满足时序要求。

图 6 多电压域设计的时钟分配

3.4 MVS对系统的设计的影响

3.4.1 上电顺序

由于各模块分别由不同的电源驱动,所以各个模块间应该保持一个上电顺序,以确保电路的功能正常,通常情况下,CPU会等待某些模块(例如I/O,PLL)上电完成后才启动。特别的,我们应该保证所有的电源域在完成上电复位前已经完全上电。

3.4.2 电压过冲

多电压系统运行时,电压经常会发生变化,需要仔细控制电压的上升/下降时间,以免出现overshoot 或undershoot,因为电压上升到目标电压以上或明显低于目标电压时,系统可能会发生故障或锁死。

最后一点,电源电压控制通常由CPU实现,所以电源电压控制一般需要在软件系统设计中考虑到。

关于多电压域设计书中在这一章节主要讲了上面的这些内容,看了下目录,在后续章节中有Frequency and Voltage Scaling Design、Examples of Voltage and Frequency Scaling Design和Implementing Multi-Voltage, Power Gated Designs这三个章节与这一章的内容是相关的。

============正文结束===========

扫描下面的二维码,阅读其他章节。

猜你喜欢

转载自www.cnblogs.com/ChipView/p/9416678.html
今日推荐