教你如何测量芯片数字模拟噪声
2016-10-09 来源:elecfans
1. 简介
与过去相比,现代SoC设计的利润空间更低、掩膜成本更高。这两点增加了对一次投片成功率的要求。过去使用的专门方法已经不足以确保一次投片成功率,因此需要新的分析方法。SoC设计的诸多领域都遇到了这一问题并已得到妥善解决,因此,芯片的数字部分与模拟部分间的交互便成为最后的棘手问题之一。
本文将介绍一种利用Primetime-SI(PT-SI)来测量芯片数字部分对模拟部分产生的串扰的分析方法。内容包括使用此方法时遇到的问题以及各种限制和优势。
2. PrimeTime-SI中的噪声
PT-SI用于计算两种形式的串扰延迟变化和噪声。近年来,延迟变化功能受到广泛的关注,而噪声影响则未得到如此多的注意。
2.1 PT-SI如何计算噪声
下面的图1是来自SOLVNET的图像,说明了PT-SI如何计算噪声。如图所示,干扰源在被干扰网络中引入了一个噪声冲击,当干扰源的时序重叠时,噪声冲击便会叠加在一起。尽管这是一种简化的说明,但足以达到我们的目的。
图1:串扰和传播噪声的组合影响[1]
2.2 噪声类型
除了噪声冲击的时序关系,PT-SI还能计算四种类型的噪声冲击——高于高电平、低于高电平、高于低电平和低于低电平。图2给出了相应说明,该图同样来自SOLVNET。尽管PT-SI的假设(即,地或VDD中出现噪声)不一定适合模拟网络,但它提供了合理的预估,并且运行时权衡的重要性应高于引入的任何误差。
图2:噪声冲击类型[1]
2.3 噪声特性
图3给出了根据PT-SI特性计算的噪声冲击。对于我们的目的而言,只需考虑冲击的高度,因为模拟网络通常与数字网络异步,所关注模拟网络的经典示例是ADC的输入。在这种情况下,我们关注的问题是串扰引入的最大误差,而集中研究高度可以解决这一问题,同时还能简化分析。
图3:噪声冲击特性[1]
3. 能否计算模拟网络上的噪声?
3.1 要求
在2012年,产品团队提议CAD部门寻找一种方法来分析其设计中模拟网络上的噪声。现有流程采用一种专门方法处理噪声,即,依靠设计人员的经验在需要之处添加屏蔽和额外的间距。对于团队一直使用的相对较大的几何工艺而言,这些“屏蔽然后听天由命”的方式足以应对。但若要转向新工艺时,则希望可以借助某种分析方法来改善流程。
要起到作用,分析方法必须合理有效,并且最好尽可能地充分利用现有基础结构。运行时的性能被认为比绝对精度更加重要;需要考虑最坏情况下的结果。发现的任何潜在问题都可以进一步分析,移植步骤也可以实现。如果发现了足够的余量,则可回收先前为屏蔽或间距分配的资源。此外,还需要一种能够在设计更改时作为标准回归流程一部分运行的自动化技术。
3.2 实现中的挑战
PT-SI的噪声分析功能似乎能够满足上述要求。只需写出SPEF和交叉耦合电容并确保模型支持SI分析,便可将该功能添加到现有流程中。但是,PT-SI针对同步数字网络而设计。它能够计算模拟网络上的噪声冲击吗?如果能,它将如何处理数字干扰源在异步模拟网络上的时序?PT-SI能够处理作为干扰源的模拟网络吗?如果能,它将如何处理?在SolvNet或Web上进行搜索对回答这些问题没有太大帮助,也难以找到人们使用PT-SI分析模拟网络的任何证据。
3.3 寻求解决方案
3.3.1 PT-SI能够计算模拟网络上的噪声吗?
由于我们了解自己的工作范围超出了PT-SI的设计意图,因此先从最基本的问题开始——PT-SI能够计算模拟网络上的噪声吗?要回答这个问题,需要找到获取噪声冲击的命令(report_noise_calculation),然后在模拟网络上进行尝试。得出的答案是“可以”,即,PT-SI可以计算模拟网络上的噪声。然后下一个问题是:它究竟如何计算该异步模拟网络上的噪声冲击?其行为与预期相同,还是因被干扰网络的性质而有所不同?
3.3.2 PT-SI如何计算模拟网络上的噪声冲击?
要利用PT-SI计算模拟网络上的噪声冲击,需要哪些模型增强功能或额外设置?PT-SI会按预期处理被干扰网络上的干扰源,还是将所有干扰源视为异步干扰源(就像干扰会产生过度糟糕的结果一样)?它会因模拟网络由黑盒驱动而忽略作为干扰源的这些模拟网络吗?
第一个问题需要搜索文档来找到合适的命令。有两个命令可用于被干扰网络上的驱动器和负载引脚。Set_noise_lib_pin或set_steady_state_resistance定义驱动器的强度,而set_noise_immunity_curve或set_noise_margin则定义负载引脚对所引入噪声冲击的容限。尽管并未严格要求定义负载引脚的容限,但它可提供一种方法来实现自动校验:PT-SI计算噪声的余量,结果可能满足要求或违反要求(就像时序校验)——如果噪声超出限制,便可轻松实现自动校验。
回答第二个问题需要阅读更多文档并进行一些实验。相关文档指出,模拟网络上的噪声冲击应按预期计算:按时放置同步数字干扰源并计算其影响,随后添加重叠冲击来计算最坏情况下的噪声冲击。异步干扰源会置于最糟糕的点上,其影响也将按预期添加。
实验大体上证实了我们的预期,即噪声冲击由大量数字干扰源组成。令人惊讶的是,尽管如此,仍然存在许多模拟干扰源(包括很多最大的干扰源)。进一步研究发现,即使在这些网络由黑盒驱动时:如果已为这些干扰源定义了时序,PT-SI会推断出其输出上的转换,从而产生异步干扰源。此干扰源随后按预期进行处理,其影响会按时置于最糟糕的点上。PT-SI会自动过滤大多数小干扰源。由于我们希望得到最坏情况下的噪声冲击,因此将si_filter_per_aggr_noise_peak_ratio和si_filter_accum_aggr_noise_peak_ratio变量设置为0,从而使PT-SI的分析中包含所有干扰源。
3.4 遇到的挑战
我们在研究早期遇到的一个问题是set_noise_lib_pin无法对双向端口起作用,而所关注网络上的许多引脚的模型都是双向引脚。当模型尚不具备模拟网络驱动器的相关细节时,这将限制我们使用set_steady_state_resistance。这并非一个关键问题,但确实从工具箱中移除了某个工具。
深入分析初步结果会发现一个更微妙的问题:当这些网络之一受到多重驱动时,PT-SI会忽略任何标注信息并计算转换,同时仅发出隐藏的RC-002警告(“RC-002(警告):网络’%s’仅控制多重驱动网络’%s’的一个驱动器子集,因此无法使用详细的RC延时计算。”)。这种转换极其糟糕(引起的噪声冲击几乎占示例中总噪声冲击的25%),并且根本不会尝试让转换成为现实——即,set_annotated_transition不起作用。PT-SI会接受在该干扰源的驱动器上应用set_annotated_transition,然后忽略向其发送的任何值,转而采用内部计算的值。最终,我们使用disconnect_net命令将驱动器的数量减少为一个,并标注一个有干扰性但真实的转换值,如图4所示。对于这种情况,这会完全消除干扰源的影响。
结论
应用PT-SI来计算模拟网络上引入的噪声是可行的,但存在一定限制。这种技术可自动验证敏感模拟网络在设计定案前是否已充分隔离,也可创造机会来提高设计的布通率,具体方法是:恢复先前在关键模拟网络附近用于实现屏蔽或隔离的资源。可在自动化流程中引入该分析方法来替代当前的特殊方法,新的分析方法有助于确保一次投片成功率。