所有的芯片设计者都知道确保我们的芯片在第一时间是正确的重要性。但是我们需要在有限的开发和测试预算之间取得平衡。那么你的底线在哪里呢?
理想情况下,您应该严格测试每个块。然后将它们合并到再次测试的子系统中。最后,您将通过芯片级的模拟来证明芯片的性能符合预期。在这个链条上越低的地方,你就越容易、越快,因此修复它们也就越便宜。
现代SoC设计试图绕过至少一部分这样的测试。他们通过使用已经证明是硅的块来做到这一点,因此不需要在块级进行测试。相反,您可以专注于子系统和芯片级测试。这是必要的。复制IP供应商执行的测试级别是不经济的。例如,ARM花费了大量精力来测试它们的核心。这些核心也是硅证明,并显示了工作的所有客户。除非它是以非标准的方式使用,否则重新测试核心将是一种浪费。一个SoC设计团队只有在无法信任供应商的情况下才会考虑重新测试这样的核心。
因此,使用经过验证的IP可以减少验证时间。但是我们仍然只能在芯片层面上模拟现代SoC的所有复杂功能。
有什么问题吗?
问题的关键是时间。大型芯片需要时间来模拟,复杂的测试需要时间来编写。一个大型的现代SoC通常都有一个嵌入式处理器。它将有许多不同的功能。这将包括数字和模拟块的混合。通常会有许多配置的芯片。要模拟这种芯片的所有可能的角落,可能意味着要进行大量复杂的测试。
对于芯片的数字部分,我们可以使用更先进的验证技术来减少测试时间。约束随机验证就是其中一个例子。传统上,开发人员创建复杂的直接测试。开发人员详细说明测试应该应用到芯片上的刺激。它们还指定了预期的响应应该是什么。约束随机验证让计算机接管了其中的一些工作。该技术随机演练一个芯片。然后显示芯片击中所有需要的角落,并产生正确的响应。因此,您正在用一些开发人员时间来换取测试执行时间。这可能是有用的,但仍然留给我们一些非常长的测试,以完全模拟芯片。 Long tests using expensive licenses can become a problem.
大型芯片的配置和安装也很复杂。通常需要在芯片中有很多功能和很多灵活性。因此,通常很难理解如何为测试配置它。学习如何配置和使用芯片的验证工程师需要时间。即使是最好的文档和对设计师的访问也不能消除这种成本。即使您正在进行约束随机验证,这也是一个问题。
结合复杂数字和模拟逻辑的芯片增加了难度。模拟模拟的整个芯片可以非常缓慢。然而,重要的是同时模拟模拟和数字。如果不这样做,它们之间的接口中的错误就不会被检测到。但是模拟和数字的详细联合模拟是缓慢的,并将推高成本。
许多必须一起工作的模拟块也很常见。没有端到端模拟链的模拟,我们不能保证性能。然而,这些终端到终端的模拟可能是耗时的。
我们怎么解决它?
芯片的初始体系结构划分是芯片设计的关键。它可以解决或导致许多问题。早期好的架构选择可以减少验证时间。
如前所述,高度灵活和可配置的芯片可能很难测试。然而,S3semi可以用一种容易理解的控制原理来设计芯片。这样,编写测试就更容易了。将使用芯片,当它进入生产。
我们可以将芯片划分为定义明确的功能块。这些块应该具有定义良好、易于理解和易于测试的接口。这些石块应该仔细测试。然后在芯片级,我们只需要在芯片级测试这些块之间的连接。如果您可以为这些块使用经过硅认证的IP,这一点尤其正确。例如,处理器是一个非常复杂的IP要测试。但我们可以使用硅证明的核心和界面明确的块。这意味着你只需要检查内存/IO接口和中断线在芯片水平。
我们还可以设计尽可能多的从模拟到数字的接口。特别是那些从数字到模拟再回到数字的循环。有时像这样的循环是不可避免的。然后我们可以把模拟和数字块涉及一起作为一个子块。这个子块可以相对较快地进行隔离测试。我们可以减少测试这些块在全芯片模拟。
我们还可以为所有模拟组件创建简化的AMS模型。我们应该在设计过程的早期做这些,并始终保持它们的更新。这允许简化模拟-数字接口的测试。它还加速了整个模拟链的测试。我们可以比较每个AMS模型与实际模拟性能。然后可以对AMS模型进行更新,以解释任何差异。这意味着我们只需要执行有限的测试整个芯片与完全模拟设计。
简而言之:良好的体系结构划分和早期的验证策略是必不可少的。它们一起大大减少了测试的时间和成本。