微波EDA网,见证研发工程师的成长!
首页 > 测试测量 > 测试测量技术文库 > 自动实现半导体器件系统强化测试的方法

自动实现半导体器件系统强化测试的方法

时间:11-06 来源:eetchina 点击:

of the segment. */

*addr = memPool[seg].start_addr + GetRandomNumber(memPool[seg].size);

max_size = memPool[seg].size - (*addr - memPool[seg].start_addr);

if (max_size > MAX_BLOCK_SIZE)

max_size = MAX_BLOCK_SIZE;

*size = GetRandomNumber(max_size);

break;

}

/* return the segment number so it can be used to free it later,

or return -1 if we gave up looking for a free segment */

return (retries >= MAX_RETRY_COUNT) ? -1 : seg;

}

void FreeMemorySegment(int seg)

{

memPool[seg].inUse = 0;

}

===============================================

这种方法的一个缺点是,使用存储器段中的某个随机存储器块时,按照存储器段数组中的定义方式,整个存储器段都将被保留。如果所有存储器段都被保留了,还有存 储器可用吗?解决的办法是将存储器分为更小的段。可能希望以不同的方式来分割存储器段,以便消除跨越数据宽度和类型各不相同的多个存储器器件来选择存储器 块的可能性。注意这些方案都比较简单,也可以加强它的功能,关键只是直接控制指示哪些存储器区域可以使用。

管理其它资源的选 择和保留可能更加简单。例如,保留标志数组可用来管理DMA通道,数组的索引代表通道。设计人员可以编写一个ReserveDmaChannel()函 数,它返回一个随机DMA通道号,这个通道号处于芯片上的DMA通道数目范围之内,并且其保留标志未被设置。然后,函数将设置保留标志来保留这个通道。测 试完成时,可以调用FreeDmaChannel()来清除该标志。

调试技巧

调试和分离与系统相互作用有关的问题可能比较困难,在这个过程中可以通过设计强化测试框架来提供帮助。根据运行是在芯片生产前的仿真环境下进行,还是在一个安装有实际芯片的板卡上进行,所遇到的问题将会有差异。

在仿真环境下运行时,速度是最大的问题,仿真CPU的运行速度要比实际器件慢得多。仿真环境的优势在于仿真工具可以输出芯片设计内部信号的详细记录,这将简 化调试工作,但它也有一个很大的缺点,即问题复现困难。如果为了暴露问题要花费太长的时间来运行强化测试,这将是难以接受的。

解决的办法是将强化测试作为许多较短(例如30分钟)的测试来运行,这可以通过用一组测试事件模块来创建不同的测试来实现。此外,还应该给每个测试分配一个专门的随机数种子(seed),以便使用这个种子的其它测试每次运行时,都能重新产生准确的测试事件和测试参数序列。

好的运行脚本可以随机产生种子值,然后创建一个测试并加以运行。种子值应当与运行结果一起记录下来。为了复现一个故障,可以用这个种子重新创建测试(因为可能不希望保留所有的可运行测试程序,其数量可能达到几千个),然后在短时间内复现这个问题。

在实际的芯片上可以运行更多强化测试,因为其执行速度要快得多。但在理论上,它可能还是要花费同样长的时间,因为比较常见的问题应该在芯片生产前的强化测试 中就已经暴露出来了。在这里,问题的复现同样是一个很大的困难,读者可以尝试在芯片生产前的测试中应用所介绍的技术,但它可能不会同样有效,因为实际系统 可能不如在仿真环境下那样确定。换句话说,两个采用同一随机测试种子运行的测试可能不会每次都获得精确相同的运行序列。另外,此时也无法记录内部信号的行 为,因此应该依靠一些技术,如将检测点的信息记录到存储器或高速端口、插入各种逻辑分析仪触发事件,以及采用其它技术来帮助深入跟踪问题的详细情况。

在实际芯片上调试系统问题时,没有什么通用的方法。设计人员应当周密考虑,并象即将遇到难以捉摸的故障一样来进行计划,编写程序代码,为分析问题提供尽可能多的线索。

此外,测试框架还应该包含这样一种能力,它创建的测试运行程序能将某些测试模块排除在外,从而使强化测试无需在已知的问题上停止下来而得以继续运行。另一方面,将其余功能排除在外也将使设计人员能够对某些特定的芯片功能进行重点测试。

框架需要组织良好的软件代码来生成种子、创建测试、运行、存储测试记录和后续处理,并向设计人员报告所遇到的问题。这个过程应当是完全自动化的,这样就可长时间运行测试而无需人员维护。

记录测试过程

强化测试框架最少应该记录哪个测试模块在运行,以及发生的所有故障。完善的记录将包括更多的信息,如选择的随机参数,各个测试事件是何时启动、退出和检验 (针对延迟检验函数)的。这样,设计人员就可以了解各个测试是如何相

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top