对于初学者来说,可能会有这样的问题,为什么我们signoff的时候,电压范围是标准电压上下10%浮动呢?答案可能并非想象中那么简单,本文在此尝试回答这个问题。
因为有电压降的存在,我们知道,即使我们能够保证供电电压准确保持在标准电压(例如 0.8v),在芯片内部实际是比0.8v更低的电压,而这个电压在芯片不同的位置,电压也是不同的。靠近电源的地方,电压就高一些。远离电源的地方,电压就会更低。想象一下,如果芯片在这种低电压下(0.72)都能保证没有问题,能够signoff,那么实际的芯片正常工作(0.8v)时,即使考虑到电压降的影响(电压降≤10%),也可以保证没有问题了。
那么问题来了:如果是电压降的原因,我们为什么还需要signoff +10%
另外还有一个常见的现象:芯片生产回来测试,我们往往会发现,芯片的供电即使在signoff的低电压下仍然能够达到仿真所需的性能指标。然而考虑到电压降,芯片内部是无法达到signoff的电压的。考虑到这种现象,笔者认为,电压降所需的的margin应当已经涵盖在那些derating的设置中的。
当然,如果我们实际应用中,可以保证芯片能够在不低于标准电压0.8v,而且我们的电压降不超过10%的范围,那么,是完全可以不用加入额外的margin来corver电压降的。
在此,以TSMC提供的28nm的0.9v signofff标准来证明这样的理解:
图中的V margin即为电压降所需的额外的margin。如果芯片需要在ss 0.91v下正常工作,则需要增加额外的V margin。
芯片的供电电压,在实际中其实就是一个波动范围。
例如,对于大规模的GPU来说,耗电量惊人,不可能使用PMU来供电,而是直接通过电源来供电。这种情况下,电压范围变化就会很大,而这个电压变化,是需要通过10%的电压变化范围。
一般来说,比较好的PMU的精度达到0.1v是没有问题的。在这种情况下,笔者认为signoff电压其实是可以减小的,从而进一步减少研发时间和成本。
但是一般来说了,也不会这么做,因为这涉及到定制的单元库。而定制单元库,一是难度大,另外风险也比较大。另外一个成熟的工艺库,也是需要通过多次流片来验证的。
对于一些超低电压的应用,由于电压的降低,会导致cell的variation急剧增大。所以在这种情况下,foundary甚至会提供与标准电压相同的ss corner的库。例如0.4v,如果按照±10%理论,需要在ss corner下达到0.36v,该电压下,cell的derating甚至导致timig无法signoff。
另外还有一些应用,电压范围可能超出10%的范围,这时候就必须增加额外的电压corner保证这部分电压范围芯片能正常工作。
因此,芯片实际应用千差万别,但是,供电电压,必须是一个范围。
有了+10%的电压,对于芯片来说,也就有了通过提升电压进而提升性能的理论基础。
同理,有了-10%的电压,芯片也可以通过降低电压来降低功耗。
因为foundary提供的工艺库,需要考虑绝大部分的应用需求,所以会有不同的标准电压以及±10%的电压范围的单元库。而为什么是10%而不是12%,笔者认为这也是一种约定俗成。可以想象,如果没有这个约定俗成,IP vendor可能提供±12%, 单元库vendor提供±10%, 那么对于芯片设计者来说,无异于噩梦。
虽然EDA公司提供了单元库做电压scaling的方法,但是一般仅仅作为标准signoff条件下的补充。
±10%,是一种业界约定俗成的默契。但是signoff需要考虑芯片实际应用,以及所拥有的单元库本身的电压范围。
如果芯片应用的电压变化范围小于10%,那么就使用正负10%进行signoff。
如果芯片应用的电压变化范围大于10%, 那么就需要增加额外电压的corner进行signoff。
如果希望芯片在-10%电压下仍能达到所需要的性能,则需要保证margin中包含电压降所产生的marign,一般按照foundary提供的标准是没有问题的。