自动实现半导体器件系统强化测试的方法
这个框架还为测试事件模块提供了基本服务供其使用,包括保留系统资源的功能、选择随机测试参数的功能和数据记录功能。大部分预先规划和设计都位于框架本身内 部,因为框架处理强化测试复杂和"混乱无序"的一面。然后,根据需要增加单个测试事件模块,扩展强化测试。由于框架负责处理公共的强化测试软件部分,测试 事件模块的开发人员可以专注于为目标芯片功能编写优秀的测试程序。图1为强化测试框架各个组成部分的高层次示意图。
随机测试池是强化测试的核心部分,实际的半导体器件测试就位于其中。它是为了对芯片的某项具体功能启动事件和(或)执行测试而编写的测试事件模块的集合。开发新的 测试事件模块时,可将它添加到随机测试池中,以便在下一次运行强化测试时将其包含在内。本文后面还将更详细地介绍测试事件模块,因为这是为芯片开发并由框 架启动和支持的实际半导体器件测试。
执行过程中,强化测试引擎随机地从池中选择和运行测试事件模块。为了使测试变得更加杂乱无序(从而对器件设计施加更大的强化测试),框架采用异步时隙来按照任意时间间隔随机选择和启动测试。
"时隙"使用一个硬件定时器来实现,器件或测试板卡上的多个定时器可以拥有各自的时隙。框架为每个时隙定时器选择随机的时间间隔,当时隙截止时,引擎中断当前 的测试模块,定时器的中断处理程序将选择另一个模块来执行,同时引擎为下一个时隙操作选择另一个随机的时间间隔。这样,测试将以一种交织的风格执行,引发 各种各样的执行方式,同时还实现了执行的并行性,这一点将在后面看到。
选择和启动一项测试的框架代码很简单,因为测试事件模块只不过是一个C语言函数而已。列表1是启动程序的一段代码。一般而言,框架保持有一组C函数,这些函数即为测试模块,读者可以选择任意一个索引来查看函数并加以执行。
(列表1)
测试模块
如前所述,测试事件模块是一个函数,它针对半导体器件的某个具体特性执行一个动作或一次检验。虽然框架将测试模块作为一个C函数来激活,但如果需要,模块也 可以调用汇编级代码。框架的编写方式使得设计人员可以开发新的模块并添加到测试池中,供强化测试期间框架随机选择。后面框架实例中的测试模块是void C函数,它不需要任何参数。在框架支持功能的帮助下,模块本身可以启动测试并调用相应的功能来记录结果。
测试事件模块共有三种类型:
1. 纯事件
2. 检验测试
3. 延迟检验测试
正如其名称所表明的那样,纯事件模块启动一个系统事件后不做任何检验工作,包括以某种方式改变系统或启动某项后台功能。那么,启动一个事件而不执行任何检验 有什么意义呢?为了解释这个问题,来考察一个测试事件模块,它仅仅切换处理器高速缓存的当前设置。每次框架随机选择这个模块时,高速缓存就从1切换到0或 从0切换到1。这增加了一个变化因素,因为对于运行时需要用到这个高速缓存的测试模块而言,它的值有时为1有时为0。
第二种测试事件模块是检验测试,它执行一个动作,并在测试模块函数退出之前对这个动作进行检验。例如,这种测试可以用任意数据来填充随机选择的存储器区域,然后采用任意CPU读写宽度来将这个区域复制到一个随机的目的存储器区域,再检验其结果。
第三种测试模块是延迟检验测试,这是功能最强的测试,虽然通常只能用于可以对总线进行控制的芯片功能(换句话说,运行在CPU的后台)。这种测试模块将启动 一个测试然后退出,使得在原测试继续运行时,其它测试模块可以执行。在大多数情况下,测试的完成用一个中断来表示。当中断发生时,中断处理程序将检验测试 的结果。
延迟检验测试的例子如DMA (直接存储器访问)传输。可以编写一个测试模块来选择随机的源、目的存储器区域和DMA通道。这个测试模块可以用任意数值来填充源存储器,并配置一个用来 检验测试结果的DMA结束中断处理程序。这个中断处理程序即为"延迟检验测试",它可访问包含有被启动测试的详细信息的数据结构,在被调用时,它还将检验 测试的结果。
测试框架实例
为了展示这些测试的强大功能,来考察一个简单的测试框架实例,它包含以下四个测试模块。
1) 简单的基于CPU的存储器复制(TE_CPU_COPY):
将随机数据样式填充到一个任意大小的随机源地址存储器块中,然后使用一种随机混合的读写宽度来将数据样式复制到任意选择的目的地址。复制完成后,检验目的区域中的数据是否包含了先前选择的数据样式。
2) DMA存储器---存储器复制(TE_DMA_M2M):
- 频宽、取样速率及奈奎斯特定理(09-14)
- 为什么要进行信号调理?(09-30)
- IEEE802.16-2004 WiMAX物理层操作和测量(09-16)
- 为任意波形发生器增加价值(10-27)
- 基于PCI 总线的高速数据采集系统(09-30)
- 泰克全新VM6000视频测试仪助力数字电视等产品测试 (10-06)