你的设计有足够的裕量吗?
时间:10-02
整理:3721RD
点击:
介绍
近来,我收到大量的客户设计。虽然这些设计是满足他们的时序要求的,但是在他们的印刷电路板上实际运行的时候功能却不正常。当这些设计在工具中运行时,从它们身上可以看到一个共同的因素:不足的余量或裕量。满足时序并有129皮秒(ps)的余量可能实际上并不能满足时序。
影响传输时延的因素
有三种因素会影响任何路径的时序:晶体管的工艺或强度、温度以及电压,让我们考察每一个的细微的因素:
工艺
每个晶圆都有自己的特质。硅片与硅片之间是有偏差的,甚至在每个硅片内也有更细小的偏差。速度定级过程按照"速度文件"的参数摒弃这些偏差。然后软件就知道哪些路径满足和哪些路径不满足时序。为了考虑最坏的情况下的操作条件,最高的温度和最低的电压被用于此摒弃处理。
温度
当设计和器件变得很大时,功耗成为一个问题。硅片的温度很容易达到,甚至有时会超过对于器件操作规定的限制。在过去,客户常常超过这些限制但仍使它们的设计能可靠工作。随着时钟速度日益提高,情况再也不是这样了。超过硅片温度限制的操作现在可能会导致失败,这正如我们下面要揭示的一样。
电压
在正常电压下工作看起来会保证一些余量,但是果真如此吗?因为内核电压已逐步走低,从3.3到2.5,1.8再到现在的1.5伏特,任何的纹波或噪声都会直接损害器件的速度。在1.5伏特器件的内核供电电源上的200mV峰峰值的噪声和纹波会导致速度大大降低而且工作在低于所建议的最小为1.425伏特的电压的限制之下。
如果在此条件下,再减去由于同时开关输出(SSO)所导致的噪声或地弹,问题将变得更糟。
系统因素
过去的时钟信号都被假定为完美,因为对于一个20MHz的时钟,150ps的抖动几近于完美。而现在工作都在200MHz,或者说周期为5纳秒(ns),150ps的抖动就成为了一个要考虑的因素。时钟信号上的抖动通过使时钟周期减小至峰峰抖动值的一半而直接拿走时序报告中的任何的余量或裕量。
时钟上的抖动会被其它的噪声源和信号的不完备所迭加。信号完整性不好会导致反射,这会直接增加抖动。如果许多的SSO在工作,减性噪声会引入;这会导致时钟输入电路在不同的电压值上限幅,这也会增加抖动。来自邻近信号的串扰会导致信号的时延的变化,这将会增加更多的抖动。
做预算
为了考虑所有的这些因素,做一个预算来估计在你的系统中的总的抖动。从最小的周期约束中减掉抖动峰峰值的一半以确保在工作时这个约束不会被超过。
返回并做仿真
下一步,确保你的所有的信号的完整性都是足够的。仿真所有的输入,尤其是时钟。仿真串扰引起的延时。仿真你的旁路或去耦网络。在做你的单板之前确保你的原始需求都得到满足。
布局和布线
当你在运行工具的时候,确保所有的路径都已被正确地约束。约束设计并不是一个容易的任务。有很多的错综复杂的因素会使你在还没有满足约束的时候就相信你已满足所有的约束。只有仔细阅读时序报告才能找出不正确的约束。
在使用"FROM:TO"和多周期约束的时候尤其要小心。如果这些约束被应用得太宽,它们会使得很多的路径有一个太长的延时。过分约束同样不好:那些不需要紧控制的路径会使用剩下的关键路径所需的资源,使得情形更困难或不可能得到一个好的结果。
结论
任何小于1ns的裕量被认为是零并且不能被接受已经有一些时候了。这是为了获得合理的系统的抖动预算和稳健的设计。但是,现在的时钟操作在上百兆赫的范围内,设计人员不希望一个3333ps的时钟周期(300MHz)有1000ps的裕量。尽管如此,为了能够可靠工作,至少为周期10%的裕量或余量、更少的系统抖动可能仍是可靠的工作所需要的。
近来,我收到大量的客户设计。虽然这些设计是满足他们的时序要求的,但是在他们的印刷电路板上实际运行的时候功能却不正常。当这些设计在工具中运行时,从它们身上可以看到一个共同的因素:不足的余量或裕量。满足时序并有129皮秒(ps)的余量可能实际上并不能满足时序。
影响传输时延的因素
有三种因素会影响任何路径的时序:晶体管的工艺或强度、温度以及电压,让我们考察每一个的细微的因素:
工艺
每个晶圆都有自己的特质。硅片与硅片之间是有偏差的,甚至在每个硅片内也有更细小的偏差。速度定级过程按照"速度文件"的参数摒弃这些偏差。然后软件就知道哪些路径满足和哪些路径不满足时序。为了考虑最坏的情况下的操作条件,最高的温度和最低的电压被用于此摒弃处理。
温度
当设计和器件变得很大时,功耗成为一个问题。硅片的温度很容易达到,甚至有时会超过对于器件操作规定的限制。在过去,客户常常超过这些限制但仍使它们的设计能可靠工作。随着时钟速度日益提高,情况再也不是这样了。超过硅片温度限制的操作现在可能会导致失败,这正如我们下面要揭示的一样。
电压
在正常电压下工作看起来会保证一些余量,但是果真如此吗?因为内核电压已逐步走低,从3.3到2.5,1.8再到现在的1.5伏特,任何的纹波或噪声都会直接损害器件的速度。在1.5伏特器件的内核供电电源上的200mV峰峰值的噪声和纹波会导致速度大大降低而且工作在低于所建议的最小为1.425伏特的电压的限制之下。
如果在此条件下,再减去由于同时开关输出(SSO)所导致的噪声或地弹,问题将变得更糟。
系统因素
过去的时钟信号都被假定为完美,因为对于一个20MHz的时钟,150ps的抖动几近于完美。而现在工作都在200MHz,或者说周期为5纳秒(ns),150ps的抖动就成为了一个要考虑的因素。时钟信号上的抖动通过使时钟周期减小至峰峰抖动值的一半而直接拿走时序报告中的任何的余量或裕量。
时钟上的抖动会被其它的噪声源和信号的不完备所迭加。信号完整性不好会导致反射,这会直接增加抖动。如果许多的SSO在工作,减性噪声会引入;这会导致时钟输入电路在不同的电压值上限幅,这也会增加抖动。来自邻近信号的串扰会导致信号的时延的变化,这将会增加更多的抖动。
做预算
为了考虑所有的这些因素,做一个预算来估计在你的系统中的总的抖动。从最小的周期约束中减掉抖动峰峰值的一半以确保在工作时这个约束不会被超过。
返回并做仿真
下一步,确保你的所有的信号的完整性都是足够的。仿真所有的输入,尤其是时钟。仿真串扰引起的延时。仿真你的旁路或去耦网络。在做你的单板之前确保你的原始需求都得到满足。
布局和布线
当你在运行工具的时候,确保所有的路径都已被正确地约束。约束设计并不是一个容易的任务。有很多的错综复杂的因素会使你在还没有满足约束的时候就相信你已满足所有的约束。只有仔细阅读时序报告才能找出不正确的约束。
在使用"FROM:TO"和多周期约束的时候尤其要小心。如果这些约束被应用得太宽,它们会使得很多的路径有一个太长的延时。过分约束同样不好:那些不需要紧控制的路径会使用剩下的关键路径所需的资源,使得情形更困难或不可能得到一个好的结果。
结论
任何小于1ns的裕量被认为是零并且不能被接受已经有一些时候了。这是为了获得合理的系统的抖动预算和稳健的设计。但是,现在的时钟操作在上百兆赫的范围内,设计人员不希望一个3333ps的时钟周期(300MHz)有1000ps的裕量。尽管如此,为了能够可靠工作,至少为周期10%的裕量或余量、更少的系统抖动可能仍是可靠的工作所需要的。
裕量在不同的领域有不同的定义,但理解起来的意思都差不多,我举个例子,比如你打算去买个二千的手机,去买时你的手上有二千五,那么你的钱的裕量就是五百,按电路来说,比如你设计的一个电路原理图,实际输入此电路的电压范围是2.5伏到5伏,如果你设计此电路可以输入的电压范围是1.5伏到6伏,那么你的裕量就是1伏(不过一般裕量都是按分贝来算的),这样到时实际输入电压有波动时也不会对你设计的电路影响很大.所以裕量越大就越好.
至于余量,按我的理解是,余量是绝对的,裕量是相对.它们的意思都一样的, 想知道更确切的意思,还是去找参考书好点.
顶一下
现在给设计者留的空间越来越小啦,都想榨尽硬件最后一滴油水
分析的非常透彻,受教了。
看了1楼1头雾水,文字也太生涩。3楼比喻很恰当,很容易理解。学习了。
3楼强人!
有道理