测试和调试存在不同的问题。在测试中,目标是尽可能快地确定芯片是否正常工作,具有很高但不是绝对的确定性。芯片设计团队现在普遍认识到,这样做需要在芯片上添加 DFT(测试设计)电路,而第三方工具和 IP(知识产权)公司可以帮助实现这一目的。
调试是另一回事。调试的目的不仅仅是确定芯片不工作,而是找出它不工作的原因。这种询问不仅限于在测试场上的几秒钟,而是可能持续数周。这不是自动的,而是需要芯片设计团队的参与。它发生在设计周期中的离散点:在首次硅片启动期间、可靠性研究期间和现场故障分析期间。
鉴于此配置文件,您可能会认为一个好的 DFT 策略足以满足芯片调试的需求——事实上,它经常如此。但随着 SoC(片上系统)设计的日益复杂,领先的设计团队报告说,他们正在将越来越多的规划、实施和硅片区域用于支持调试而不是测试的电路。
“十年前,当我们使用三层金属进行设计时,这并不是什么大问题,”Bay Microsystems 工程部高级副总裁 Tony Chiang 说。“如果芯片出现问题,您可以直接探测金属以观察电路,并且使用聚焦离子束系统,您甚至可以重新布线。现在,有了九层金属层和 0.2 微米的金属间距,这根本不可能。我们必须使电路在芯片外部可观察和可控,同时不能超出我们的成本目标或超出我们的进度。”
简而言之,这种情况描述了调试设计的世界。
技术全景
调试并不完全脱离 DFT。例如,据该公司测试开发工程高级主管 Kris Hublitz 称,博通拥有一个由大约 70 名工程师组成的公司级团队,他们与公司的所有芯片设计团队一起进行调试和测试。Hublitz 多次将 DFT 供应商 LogicVision 列为博通芯片调试战略的关键合作伙伴。
其他人同意。“调试设计与制造测试的距离并不远,”CSR(剑桥硅无线电)副总裁大卫麦考尔说。“两者的起点大致相同。”
许多设计经理强调,这一点是对可控性和可观察性的追求。在调试中,与在制造测试中一样,基本问题是将电路置于已知状态,开始运行,并观察其行为。在中等规模集成的时代,边界扫描技术可以充分完成这项任务。由于芯片几乎没有内部状态,因此您可以通过一系列已知状态发送输入、为电路计时并观察输出来彻底测试它们。
随着微处理器的出现,事情变得更加复杂。微处理器有很多内部状态,因此简单地将输入强制为已知向量并观察输出并不是特别有用。早期,业界尝试了多种技术来使微处理器可调试——从扫描寄存器之间的每个逻辑云到依赖小型计算机用于软件调试的相同类型的跟踪、断点和单步功能。这两者的结合起到了作用。
如今,设计人员在 SoC 的数字部分使用相同的工具套件。一组单独的技术用于模拟和混合信号电路。但没有一种方法可以涵盖整个复杂的 SoC。因此,调试设计过程包括将系统划分为可独立调试的模块,为每个模块实施调试策略,并将这些策略集成到整个芯片的计划中,以保持各个模块的用户界面相似并最大限度地减少硅资源电路需要。作为最后一步,设计人员必须仔细检查,使用这些调试资源,芯片的完全集成操作是可控的和可观察的,因为您无法通过孤立地查看功能块来观察一些错误。
数字 SoC
SoC 的最基本形式是由简单的、通常不可编程的外围模块和存储器包围的 CPU 内核。在大多数情况下,CPU 内核是第三方 IP,并且它至少带有内部调试内核的选项,软件开发团队通常会坚持包含在内。该内核与设计团队为外设实现的正常 DFT 电路相结合,以提供足够的可观察性和可控性来隔离问题网络。您可以使用 CPU 内核中的调试内核来刺激除内核的异步部分之外的所有部分并捕获结果。内核还可以通过使 CPU 读取和写入外设寄存器来刺激和观察外设,通常允许设计人员将故障精确定位到扫描链可以接管的级别。
但这种简单的 SoC 在今天并不常见(图 1)。更常见的是,该芯片将具有多个 CPU,或一个主机 CPU 内核和几个其他各种强大的处理器内核。甚至一些外围控制器也可能非常复杂,仅通过 CPU 刺激它们并观察结果不足以诊断它们。并且会有多个时钟域,通常彼此不同步。这样的筹码需要采取更严厉的措施。
图 1单芯片网络设备,例如 Jennic 513x 设备,给调试工程师带来了大量的数字、模拟和射频挑战。
在这种情况下,有几种策略可用。一个,博通的 Hublitz 建议,只是让所有主要功能块的输入和输出都可以访问芯片上的引脚。这种方法可能意味着大量的多路复用。在包含大量 I/O 和存储器接口的设计中,在包含用于调试目的的任何额外访问之前,管芯可能会受到管脚限制,因此设计人员发现他们必须重用管脚来进行调试访问。简单地带出非常复杂的模块的输入和输出可能并不比使用主机 CPU 内核来执行它们有用;设计人员可能还需要带出内部信号。
所有这些多路复用和路由加起来可能根本不切实际。此外,由此产生的额外互连可能意味着即使所有块都可以从引脚物理访问,它们也可能无法快速访问。而且这个问题很严重。“我们发现我们必须快速测试电路,尤其是模块之间的互连,”Hublitz 说。“在 65 nm 时尤其如此。否则,你很幸运能在芯片中找到一半的故障。”
Hublitz 强调,由 ATE(自动测试设备)支持的良好 DFT 策略可以极大地帮助调试过程。“我们对 ATE 系统进行了第一次调试,”他说。“在我们确定芯片不会熔化后,我们将其交给替补席上的设计人员,从那里开始,这是共同努力的结果。” Hublitz 表示,该芯片可能会反复回到 Broadcom 的测试车间,以便 ATE 系统可以收集大量数据或为启动团队执行全速检查。“在内部拥有自己的 ATE 能力真的很有帮助,”他报告说。“我们有 28 个系统,我们大约每个季度都会添加一个新系统。它们都主要用于调试,新的硅片优先于设备。”
然而,即使可以访问 ATE 系统,探针卡也无法访问某些信号和状态。他们需要另一种策略:内部刺激和逻辑分析。有时,快速刺激模块并捕捉其行为的唯一有效方法是使用模块本身内置的电路。据蒋说,Bay 将其网络处理芯片组织成一系列独立的处理器,广泛使用这种技术。重要的模块可能有自己的调试内核,包括单步和断点功能以及实时捕获内部状态的跟踪缓冲区。这种方法允许 Bay 的逻辑设计总监 Jun-wen Tsong 描述为多阶段验证过程。
“首先,我们在模块级别运行芯片。在这种模式下,每个模块都是隔离的:我们可以注入足够的状态来启动它运行,然后独立观察它的行为。” 这些测试必须以全时钟速度进行才能准确。通过这种方式,设计人员可以拧出处理器串中的每个阶段。此时,设计人员还将 I/O 环与内部模块隔离,以便输入直接进入输出 FIFO。一旦 Bay 的设计人员独立验证了 I/O 环和内部模块,他们就会将两者重新结合起来并测试整个芯片。
然而,从全芯片、全速运行中获取有意义的数据需要进行规划。单个处理器中的调试内核不仅必须能够识别本地指令和数据字,而且还必须能够识别对芯片操作很重要的全局数据类型:数据包和数据图。此外,36 位总线贯穿整个芯片,将关键信号从任何模块实时传送到封装引脚,以便调试工程师可以在芯片全速处理数据包的同时观察模块的运行情况。此外,硬件实时监控特定断言,例如 FIFO 满/空断言。博通也有类似的做法。Hublitz 说,该公司的无线 LAN 芯片有足够的内部调试硬件,工程师可以通过芯片跟踪矢量幅度,
一旦他们将问题与块内的功能隔离开来,调试工程师就可以根据熟悉的 DFT 策略转向较低级别的诊断工具。“我们对模块内的触发和单步进行时钟控制,并扫描我们认为重要的信号,”Bay 的杰出工程师和硅架构师 Barry Lee 解释道。“理想情况下,我们可以准确地看到特定管道是如何执行到引脚和寄存器级别的。”
模拟挑战
当涉及模拟电路时,一切都会改变。“我们将模拟电路与数字电路分开进行调试,”Lee 解释道。“两者的调试技术不同。在模拟世界中,您想要打开环回路径。而且你可能必须把所有东西都拿出来封装引脚。” 由于模拟电路中的活动原语与时钟不同步,因此无法捕获它们。
Analog Devices 的同事 Paul Ferguson 观察到,模拟与数字一样,设计师已经看到他们对设计进行探索和试验的能力随着几何尺寸的缩小而蒸发。“我们过去只是在探测站上安装了一个激光切割机,如果我们想修改电路,我们就做到了。后来,随着几何尺寸的缩小,我们转向聚焦离子束系统。但它们仅在大约 250 nm 或更大的间距下才真正有用。这意味着,实际上,如果您使用 65 纳米工艺,您只能对最上面的两个金属层进行更改。”
根据弗格森的说法,这种情况导致模拟设计风格发生了有趣的变化。“我们最近在为 90 纳米设计做一个 PLL,发现我们必须先完成 VCO [压控振荡器],然后才能得到真正合适的模型。因此,我们将一些用于调整增益和一些其他参数的线带到了我们可以得到它们的顶部金属层。它确实对调试过程有帮助。”
单芯片无线电供应商 Jennic 的混合信号项目工程师 Matt Ball 也强调了在可以获取关键模拟信号的地方提供的重要性。“我们尽可能多地采用可编程性和数字微调,”他说。“不过,有些东西必须进行金属饰边,我们将所有这些位置提升到一个单一的面罩级别,以便于访问。”
除了向顶层金属层或封装引脚提供实时信号外,今天的模拟设计人员还可以使用其他武器来设置和观察其电路的状态。最重要的现实是,在精细的几何形状中,模拟电路和校准和监控它们的数字电路之间存在着密切的合作。
CSR 的 McCall 表示,在其设计中,ADC 监控数字监控电路的模拟电路中的许多点。这些点自然使调试工程师只需将转换器的输出带到封装外部即可访问模拟部分的行为。“通常,重要的模拟信号无论如何都会在某个时候被数字化,”鲍尔说。“那么,为什么不提取样本,用片上 DSP 过滤它们,然后输出结果以便我们看到呢?”
设计一个滤波器或放大器,以便数字电路可以调整其所有重要的电气特性,这似乎是一种过度杀伤力。但它可以在首次工作的硅和必须有两个新的金属掩模才能开始调试甚至可以开始设计的数字部分的硅之间产生差异。而且,鉴于设计人员在小于 90 nm 的工艺上必须应对的可变性越来越大,无论如何都可能需要进行如此多的数字微调,以产生足够数量的工作芯片。
但是你怎么看修剪?对于具有合理精度和频率的信号——例如无线电芯片中的 IF(中频)信号——您可以简单地使用仔细的路由和模拟多路复用器在测试模式下将信号从封装中取出。“在 IF,缓冲区可能非常好,”Ball 说。“您可以将重要节点的信号输出到引脚,然后查看您需要查看的内容。” ADI 公司的弗格森表示同意。“出于调试目的,您通常不需要比模拟多路复用器提供的更高保真度;你可以很好地看到振荡或 20% 的增益误差。”
如果您无法将信号从封装中取出,您有时可以将它们路由到片上数据转换器。“我们通常会在芯片上安装一个辅助 ADC 来监控芯片温度、电池电压等,”Ferguson 解释说。“我们在其前面放置了一个巨大的[多路复用器],并在调试期间使用它来检查模拟部分的其他节点。但要小心:您放入的额外测量电路可能会破坏其他东西。例如,打开多路复用器来观察节点可能会增加足够的电容来稳定正在振荡的电路。而且,如果您无意中将调试信号与电源域交叉,您可能会引入您没有预料到的潜行电流路径。”
Ball 回应了您必须对这种方法进行选择性的警告。“缓冲模拟信号所产生的 10 或 20 fF 会改变节点的行为,”他同意。Jennic 倾向于仅围绕之前出现问题的那些区域(例如带隙单元)构建其调试规定。“我们倾向于设置旁路电路,以防万一,”鲍尔补充道。这种保守主义可以最大限度地减少破坏功能电路的机会。
有了计划,祝你好运,再加上一点优雅,就可以重用功能块进行调试。许多模拟信号终止于数据转换器,因此至少可以通过它部分观察到。Ferguson 指出,您可以轻松切换 sigma-delta 转换器以用作滤波器,从而提供对输入模拟信号的可见性。或者,您可以小心地将它们的比特流路由到引脚,从而可以观察到转换器的两侧。将数据数字化后,您可以使用 CPU 或 DSP 模块对其进行调节和压缩,或针对它测试断言。
还可以将调试智能(例如,相当于一个简单的网络分析器)构建到一个块中。环回路径可以使用发送器和接收器来相互检查(图 2),并且更多的电路可以提取得到的模拟波形。“在我们的千兆 PHY [物理层] 设计中,我们正在 PHY 模块中捕获一些模拟数据,”Broadcom 的 Hublitz 报道。
图 2一系列环回连接使该 CSR 收发器对调试工程师更加可见。
展望未来
不难想象,在早期系统设计期间,每个功能块都接收到足够的自检能力,以便在全速运行期间进行自我诊断,直至 DFT 扫描链可以接管的水平。这种方法通常需要一个输入缓冲器或一个信号发生器来激励模块,一个输出捕捉寄存器或 ADC 来观察它,以及足够的内部断点和跟踪能力来揭示模块的内部工作原理。一些 SoC 设计团队现在做这个规划。然后,实际实现成为架构师认为必要的调试支持水平和设计可以承受的开销数量之间的折衷。
更进一步,优雅系统的设计人员可以想出一些方法来重新利用一些功能块作为信号源或捕获其他块的设备。辅助 ADC 就是一个很好的例子,但这样的机会更多。例如,添加快速数据转换器可能会将信号处理模块变成网络分析仪或数字示波器的等效物。控制逻辑的一些添加可能会将缓冲区 SRAM 阵列转换为跟踪缓冲区。
在这种思维方式下,芯片上的功能块变成了调试资源池,只需复位几个多路复用器和模式开关即可使用。但这个过程需要深思熟虑。这样的组织会影响布局规划和全局布线,因此它必须发生在设计之初,而不是在后期实施期间。
弗格森认为,这也是一个可以承受一些工具支持的过程。存在精心设计的工具来自动安装扫描链、扫描控制器和矢量生成器等结构。而且,DFT 硬件在问题的寄存器级诊断中是不可或缺的。但是不存在这样的工具支持来创建调试结构。例如,弗格森至少希望看到一种检查工具,它可以对混合信号块的可观察性和可控性进行评级,并对其进行扫描以找出简单的错误。理想情况下,工具可以遍历设计并提出调试架构和流程。但那是未来的事情。
-
放大器
+关注
关注
143文章
13547浏览量
213100 -
收发器
+关注
关注
10文章
3393浏览量
105863 -
滤波器
+关注
关注
160文章
7727浏览量
177674 -
数字示波器
+关注
关注
6文章
514浏览量
33535
发布评论请先 登录
相关推荐
评论