关键字: 逻辑分析仪, 虚拟逻辑分析仪,自制逻辑分析仪,USB逻辑分析仪,PC逻辑分析仪
检验芯片的各项功能需要编写诊断软件,目的是确保器件的各项功能按要求工作,但是无论各项测试有多么详尽,它都无法找出大部分系统层次的问题。因此,要利用系统级强化测试(stress testing)来使多种功能以高强度和随机的方式共同执行,从而迫使这些设计问题浮出表面。本文将探讨用于检验半导体器件设计的系统强化测试方法。
强化测试
强化测试是指将产品置于比实际正常应用苛刻得多的条件下使用,其目的是通过各种方式对设备进行考验,迅速发现其设计缺陷。例如,对于一件机械产品,可能让它 面对恶劣的环境条件,如高压、高温和震动。如果该产品能在这样的条件下成功经受一个月的考验,那么在正常使用条件下,它应该能工作长得多的时间。
同样的概念也适用于芯片的设计。此时,强化测试的表现形式是执行诊断软件,其目的是使大量的芯片功能同时、连续、随机、密集地工作,其程度远远超过芯片正常 使用时的状况。这些测试通常连续运行,大多数时候无人照管,夜间和周末也不停止。通过这些测试,可以在产品发货之前迫使隐藏的系统问题尽快地暴露出来。
为什么强化测试对半导体设计如此重要呢?为了解释这一问题,假设一个半导体器件常常为了不同用途而应用在各种电子系统之中,因此,这些电子产品将被几千甚至 几百万用户使用,每个用户使用产品的方式各不相同。在如此大量的使用中,当芯片上的功能和事件出现某种在器件测试过程中从未遇到过的顺序或组合时,可能就 会发生问题。这些问题通常表现为:不时被锁住、数据出错或其它难以复现的异常现象。如果这些问题出现太多(或者在执行重要任务的产品中仅仅偶然出现),用 户将会认为这些产品是不可靠甚至不稳定的。
强化测试概念的引出
最初尝试创建系统 强化测试时,方法是研究和编写直接激活尽可能多的芯片功能并使它同时执行软件,使用定时器中断并让它执行随机测试,同时主程序不停地复制数据,并随机地不 时启动其它芯片操作。当想出向芯片内引入更多无序和随机事件的招数时,便将它添加到软件中去。很快就可以发现,虽然陆续发现了许多问题,但它大多发生在自 己编写的软件上。
由于不时使用同一块存储区域或外设资源,测试软件中的测试功能相互干扰。例如,当一个测试正在使用某一通用I/O时,另一个随机启动的测试却更改了它的状态。由此不时导致的故障耗用了大量的调试时间。
第二次,尝试开发组织得非常好的强化测试软件。它安排随机选择的测试功能轮流运行,在许多地方将中断锁住,以防止软件冲突和保证其它安全措施。这种谨慎的编 程使得测试非常稳定,但与直接测试相比,同样不能有效地发现芯片的问题,因为它是按照一种很大程度上可预期的顺序方式来执行测试。毕竟测试的目的是为了测 试半导体器件的设计,而不是为了获得稳定的测试软件。
在理论上希望避免这两种极端情况。测试的根本目的是为了暴露芯片中系统 级的相互作用问题,为了达到这个目的,就必须将操作搞乱,使得许多不同事件以随机方式发生。其中的诀窍是,以一种有组织的方式来保持测试的无序特点,从而 获得可靠的测试软件,并可进行扩展,还可以尽可能地帮助调试。要达到这些目的,需要仔细进行考虑和规划。这就是构建一个强化测试框架的思路。
测试框架
本文介绍一个软件框架(framework)的设计,读者可以使用这个框架来为半导体器件构建一个可扩展的强化测试。虽然本文没有提供完整的框架,但这些内容应当能够激发读者的灵感来帮助构建自己的强化测试框架。
软件框架通过提供一个公共操作引擎和环境来简化特定类型的应用开发工作,具体的应用经由一个定义好的接口来与框架连接。强化测试框架也采用了同样的思路,它提供一个软件引擎来处理强化测试的基本操作和公共功能。
强化测试框架本身不测试任何芯片功能,但它允许嵌入测试事件模块。测试事件模块是实现一项具体的半导体器件测试或事件的函数,通常要使用一组随机产生的测试参数。执行强化测试时,框架引擎将随机选择并以不同方式来启动这些测试事件模块。
这个框架还为测试事件模块提供了基本服务供其使用,包括保留系统资源的功能、选择随机测试参数的功能和数据记录功能。大部分预先规划和设计都位于框架本身内 部,因为框架处理强化测试复杂和“混乱无序”的一面。然后,根据需要增加单个测试事件模块,扩展强化测试。由于框架负责处理公共的强化测试软件部分,测试 事件模块的开发人员可以专注于为目标芯片功能编写优秀的测试程序。图1为强化测试框架各个组成部分的高层次示意图。
随机测试池是强化测试的核心部分,实际的半导体器件测试就位于其中。它是为了对芯片的某项具体功能启动事件和(或)执行测试而编写的测试事件模块的集合。开发新的 测试事件模块时,可将它添加到随机测试池中,以便在下一次运行强化测试时将其包含在内。本文后面还将更详细地介绍测试事件模块,因为这是为芯片开发并由框 架启动和支持的实际半导体器件测试。
执行过程中,强化测试引擎随机地从池中选择和运行测试事件模块。为了使测试变得更加杂乱无序(从而对器件设计施加更大的强化测试),框架采用异步时隙来按照任意时间间隔随机选择和启动测试。
“时隙”使用一个硬件定时器来实现,器件或测试板卡上的多个定时器可以拥有各自的时隙。框架为每个时隙定时器选择随机的时间间隔,当时隙截止时,引擎中断当前 的测试模块,定时器的中断处理程序将选择另一个模块来执行,同时引擎为下一个时隙操作选择另一个随机的时间间隔。