用于存储和格式化数据的方法和装置的制作方法

文档序号:6571028阅读:291来源:国知局
专利名称:用于存储和格式化数据的方法和装置的制作方法
技术领域
本发明涉及用于存储和格式化数据的方法和装置。
背景技术
有时需要以不同方式格式化的电子数据集合。一种以不同方式格式化数据集合的方法是利用多个数据格式化器(data formatter),其中每个数据格式化器被配置为以一种不同的方式格式化数据集合,并且每个数据格式化器以串行方式访问数据集合(即,当数据格式化器之一完成数据格式化时,另一数据格式化器则访问数据)。或者,每个数据格式化器可以以并行方式访问数据集合。或者,数据集合可被复制,并且每个数据格式化器可以访问数据集合的不同复本。
当多个数据格式化器以串行方式访问数据集合时,与数据格式化器以并行方式访问数据集合的情况相比,要花费更长时间来格式化数据集合。但是,当数据格式化器以并行方式访问数据集合(或以并行方式访问数据集合的复本)时,存储器、存储设备和/或处理资源的使用效率通常很低,并且可能接近或达到存储器、存储设备和/或处理资源的极限。

发明内容
在一个实施例中,一种方法包括响应于多个事件,1)在存储器中创建多个数据对象,2)将与某些事件相对应的数据与某些数据对象相关,以及3)将数据存储在存储器中。所述数据对象中的至少一些对应于由某些所述事件暗示的数据的逻辑分组。在创建数据对象期间或之后,向若干个数据格式化器提供对存储器中的多个数据对象和数据的访问权限。
在另一实施例中,一种装置包括存储在计算机可读介质上的计算机可读代码。所述计算机可读代码包括响应于多个事件执行以下操作的代码1)在存储器中创建多个数据对象,2)将与某些事件相对应的数据与某些数据对象相关,以及3)将数据存储在存储器中。所述数据对象中的至少一些对应于由某些所述事件暗示的数据的逻辑分组。所述计算机可读代码还包括用于向若干个数据格式化器提供对存储器中的多个数据对象和数据的访问权限的代码。
在又一实施例中,一种方法包括响应于与至少一个被测器件(DUT)上的多个测试的执行相对应的有序事件序列,创建多个数据对象,并按分级树结构将某些数据对象与其他数据对象相关。所述数据对象中的至少一些对应于某些事件所暗示的测试结果的逻辑分组。所述方法还包括1)将对应于某些事件的数据与分级树结构中的某些数据对象相关,所述数据包括测试结果;以及2)向若干个数据格式化器提供对分级树结构中的多个数据对象和数据的访问权限。
在又一实施例中,一种装置包括存储在计算机可读介质上的计算机可读代码。所述计算机可读代码包括响应于与至少一个被测器件(DUT)上的多个测试的执行相对应的有序事件序列,执行以下操作的代码1)创建多个数据对象,2)按分级树结构将某些数据对象与其他数据对象相关,以及3)将对应于某些事件的数据与分级树结构中的某些数据对象相关,所述数据包括测试结果。所述数据对象中的至少一些对应于某些事件所暗示的测试结果的逻辑分组。所述计算机可读代码还包括用于向若干个数据格式化器提供对分级树结构中的多个数据对象和数据的访问权限的代码。
还公开了其他实施例。


附图示出了本发明的示例性实施例,其中图1示出用于存储和格式化数据的示例性方法;图2示出可能由于执行图1所示方法而实例化或运行的各种功能单元(或进程);图3示出图2所示系统的变体,该系统尤其适用于测试环境;
图4示出图3所示系统使用的EDL文件的示例性内容;图5示出用于存储图4所示EDL文件的内容的示例性分级树结构;以及图6示出与图1所示方法类似的方法,但此方法尤其适用于测试环境。
具体实施例方式
首先说明,要注意在以下描述中,出现在不同附图中的类似标号指示类似元素/特征。因此,通常,将不会结合每张附图详细描述出现在不同附图中的类似元素/特征。
为了改善多个数据格式化器格式化数据的方式,图1示出了用于存储将被多个数据格式化器访问的数据的示例性方法100。方法100按以下方式进行。响应于多个事件,在步骤102,在存储器中创建多个数据对象。例如,在电路测试领域,事件可以包括发信号通知新晶片的加载或卸载的事件、发信号通知对晶片上特定器件的测试开始或结束的事件,以及发信号通知不同测试和子测试开始和结束的事件。
由方法100创建的数据对象中至少有一些对应于某些事件所暗示的数据的逻辑分组(例如晶片对象、器件对象等等)。在本说明中使用的“暗示的”分组可以是具体提及的,也可以是仅仅推断出的。在任何情况下,优选地,逻辑分组对应于负责格式化数据(或负责创建用于格式化数据的数据格式化器)的工程师或用户可以理解的真实世界分组。
在创建了一个或多个数据对象之后,对应于某些事件的数据被与某些数据对象相关(在步骤104)并被存储在存储器中。在创建数据对象期间或之后,若干个数据格式化器(即一个或多个数据格式化器)被提供以访问存储器中的多个数据对象和数据的权限。参见步骤106。
在一个实施例中,方法100可以包括用于格式化数据的步骤。这些步骤包括针对和经由若干个活动数据格式化器中的每一个,访问存储在存储器中的某些数据对象和数据(步骤108);根据数据格式化器维持的规则来格式化数据(步骤110);以及将格式化的数据写入文件(步骤112)。对于本说明书来说,“活动”数据格式化器是用户选出用来格式化特定数据集合的若干“可用”数据格式化器之一。如果方法100被应用于电路测试,则一个或多个数据格式化器可写入作为若干个测试记录的数据。
注意,图1所示方法步骤的顺序并不重要,其他步骤顺序(包括步骤的并行处理)也是可能的。
图1所示方法100可以利用存储在计算机可读介质上的计算机可读代码来实现。计算机可读介质例如可以包括处在一个位置处或分布在网络上的任意多个固定或可移动介质(例如一个或多个固定盘、随机访问存储器(RAM)、只读存储器(ROM)或高密盘)或其混合。计算机可读代码通常包括软件,但也可以包括固件或编程的电路。
在一个实施例中,实现方法100的计算机可读代码可以致使图2所示功能单元(或进程)被实例化或运行。所述功能单元包括数据填充器200和若干个数据格式化器202、204、206、208以及很多其他可选组件。但是,注意,各个功能单元的边界是有些不定形的,并且下面描述的某些功能也可以改由不同功能单元执行,并且两个或更多个单元的功能可被组合到单个功能单元(或进程)中。
数据填充器200(1)接收多个事件210,(2)在存储器212中创建多个数据对象,(3)使对应于某些事件的数据与某些数据对象相关,并且(4)将数据存储在存储器212中。由数据填充器200创建的数据对象中的至少一些与由数据填充器200接收的某些事件所暗示的数据的逻辑分组相对应。对于本公开来说,“暗示的”分组包括具体“说明”的那些。
若干个数据格式化器202、204、206、208访问某些数据对象,然后检索并格式化与所述数据对象相关的数据。
在一个实施例中,计算机可读代码还可以实例化或运行通知管理器214。通知管理器214可以接收来自数据填充器200的事件指示,并且可以响应于这些指示,向数据格式化器202、204、206、208中的一个或多个提供关于某些事件的通知。然后,数据格式化器202、204、206、208可被配置为响应于通知而发起它们对数据对象的访问(和数据的检索)。注意,在某些情况下,通知管理器214接收的事件指示可能对应于比数据填充器200所接收的更少的事件,或者对应于与数据填充器200所接收的不同的事件。例如,在电路测试情况下,数据填充器200可以接收测试设置事件的指示,这些测试设置事件被认为不够重要而无需传递到通知管理器214并且不被用作创建数据对象的基础。而且,可能存在数据填充器200从其接收的事件中推断出的事件。例如,基于部件号或其他标记的改变,数据填充器200可以推断出新“批次(lot)”的器件正被测试,然后将这种事件的指示提供到通知管理器214(即,即使数据填充器200本身可能未接收新“批次”事件)。
以上公开的方法100和装置可被用于很多应用,其中之一是诸如电路测试结果之类测试结果的存储和格式化。在一种特定应用中,测试结果可以由Agilent Technologies Inc.出品的93000 SOC系列测试器生成。
93000 SOC系列测试器(下文称之为“93000测试器”)是一种SOC(片上系统)测试器,其将测试结果和事件记录到被称为EDL(事件数据日志)文件的二进制数据文件中。该EDL文件中的事件对应于至少一个被测器件(DUT)上的多个测试的执行,并且被存储在有序序列中。但是,存储在EDL文件中的事件未被“扔”到任何其他进程,而仅仅被记录到EDL文件。在这种应用中,图1所示方法100还可以包括步骤114、116,即(1)解析对应于多个事件的数据文件(例如EDL文件)以检索多个事件,然后(2)将从数据文件中检索出的事件传递到创建多个数据对象和在存储器212中存储数据的进程(例如图2所示数据填充器200)。
在一个实施例中,EDL文件是响应于事件管理器执行的方法调用而被解析的。如图3所示,事件管理器300可以向共享库302执行方法调用(例如获取事件;获取事件属性),然后共享库302可以从EDL文件304检索事件并将这些事件“扔”到事件管理器300。事件管理器300然后将事件传递到数据填充器200。
共享库302可以采取编译代码(例如数据检索库(DRL))的形式,其在被事件管理器300调用时执行一种或多种方法。
在存储器212中创建的数据对象可能以各种方式与彼此相关。但是,在一个实施例中,它们按分级树结构彼此相关。作为其他数据对象孩子的数据对象可以维护到它们的父数据对象的指针,但是父对象不需要维护到其所有孩子的指针的列表。随后将描述,这些从孩子到其父亲的指针可以辅助删除不再需要的数据对象的过程。
在基于多个电路测试的执行的数据对象的情况下,由事件暗示的数据的逻辑分组(例如测试结果的分组)可以包括一个或多个硬件分组和一个或多个测试分组,所述硬件分组例如是针对批次、晶片和DUT的分组,所述测试分组例如是对应于测试和子测试的测试结果的分组。
数据可以以各种方式与数据对象相关,包括通过(1)将数据直接存储在数据对象内,或者(2)将数据存储在与数据对象相关(例如通过指针或其他手段相关)的数据结构中。
在EDL文件304中,数据被存储为事件的属性。因此,如果数据填充器200接收从EDL文件304获得的事件,数据填充器200则可以通过从事件属性提取数据来提取出与事件相对应的数据。在电路测试情况下,提取的数据可以包括测试结果。
例如,图4示出了EDL文件304的内容的示例性实施例,其中与记录的事件相关联的数据中的一些包括测试结果。图5示出数据填充器200可能从图4所示EDL文件304的内容创建的示例性分级树结构500。树结构500包括两个批次对象502、504(其中每个批次对象可以维护到父亲“晶片对象”506的指针)和六个器件对象508、510、512、514、516、518(其中每个器件对象维护着到批次对象502、504中相应的一个的指针)。如图所示,可用测试结果与器件对象508、510、512、514、516、518中的每一个相关联。
除了在存储器212中存储个体数据项目之外,数据填充器200还可以积累数据统计量(例如测试数据统计量),然后将数据统计量与某些数据对象相关(例如通过将数据统计量存储在数据对象内,或者通过将数据统计量存储在与数据对象相关的数据结构中)。在一个实施例中,数据统计量可由数据填充器积累,然后在被完全编译时与数据对象相关。在另一实施例中,可以使不完全的数据统计量与数据对象相关,然后再对其进行更新。与数据统计量类似,数据填充器200可以积累数据解释(例如测试数据内插)并将它们与某些数据对象相关。
关于是由数据填充器200还是个体的数据格式化器202、204、206、208编译统计量和/或解释数据的选择可以基于统计量或解释在不同数据格式中的用途。就是说,如果统计量或解释可能会是多个数据格式化器202、204、206、208所需要的,则通常最好由数据填充器200编译统计量或解释一次。另一方面,特定于格式的统计量和解释可能最好由数据格式化器202、204、206、208中的一个特定数据格式化器来编译。
数据格式化器202、204、206、208可以访问数据填充器200创建的数据对象和数据的方法有很多种。在一个实施例中,数据格式化器202、204、206、208可以简单地监视数据对象。但是,这可能需要大量存储器带宽,并且通常不是非常有效。在优选实施例中,数据填充器200生成到其创建的数据对象的指针,然后将该指针传递到通知管理器214。通知管理器214随后将某些指针分发给数据格式化器202、204、206、208中的某些。
注意,通知管理器214仅需要接收指向每个数据对象的一个指针。通知管理器214随后可以复制该指针或将其广播到数据格式化器202、204、206、208中的每一个。或者,通知管理器214可以不为数据格式化器202、204、206、208中的每一个复制指针或将指针广播到数据格式化器202、204、206、208中的每一个,而是可以仅为数据格式化器202、204、206、208中已经预订了数据对象代表的一类数据的某些数据格式化器复制指针或将指针广播到这些数据格式化器。
通常,数据填充器200的操作将被赋予比数据格式化器202、204、206、208的操作更高的优先级。为了进一步控制对存储了数据对象和数据的存储器212的访问,数据填充器200(或创建多个数据对象并将数据存储在存储器212中的其他进程)可以具有对数据对象和数据的直接访问权限。但是,这若干个数据格式化器202、204、206、208可以具有经由协调/仲裁数据格式化器对数据对象和数据的访问的结构化接口访问多个数据对象的权限。
为了减少存储器212中维护的数据对象的数目,数据填充器200可以监视数据对象的预留,并且可以删除引用或访问数据对象的任何对象或进程都不再预留的数据对象。在一个实施例中,当生成用于引用数据对象的指针时,认为该数据对象被预留。数据填充器200可以在创建数据对象后生成一个这样的指针,并且通知管理器214可以生成该指针的附加拷贝并将其分发到数据格式化器202、204、206、208。数据填充器200还可以在数据对象的子对象被创建时生成到该对象的指针。当指针被生成时,对引用特定数据对象的指针的数目的计数可以被维护(可能在数据对象本身之内)。数据格式化器202、204、206、208和其他进程随后可被编程为在它们完成对数据对象的访问时放弃它们的指针,并且数据填充器200可以在所有这样的指针都已被释放时删除该数据对象。由于存在引用父亲的子对象,父对象在其所有孩子都先被删除之前无法被删除。
根据以上教导,图6示出在很多方面类似于图1所示方法的方法600,但是该方法600尤其适用于测试环境。方法600按以下方式进行。响应于与至少一个DUT上的多个测试的执行相对应的有序事件序列,在步骤602,多个数据对象被创建,并以分级树结构与彼此相关。所述数据对象中的至少一些对应于某些事件所暗示的测试结果的逻辑分组(例如批次、晶片、DUT、测试和/或子测试)。在创建了一个或多个数据对象之后,在步骤604,与某些事件(包括测试结果)相对应的数据被与分级树结构中的某些数据对象相关。在创建数据对象期间或之后,若干个数据格式化器被提供以访问分级树结构中的多个数据对象和数据的权限。参见步骤606。
图3所示数据格式化器可以采取各种形式,包括诸如ASCII(美国信息交换标准代码)格式化器202、XML(可扩展标记语言)格式化器204、EDL格式化器206和/或STDF(标准测试定义格式)格式化器208之类的形式。
虽然由方法600创建的分级树结构无需存储在存储器212中,但是要注意,在大多数情况下,这样做是有益的,因为这大大加快了数据创建/检索过程的速度。
取决于它们的实现方式,这里公开的数据模型(即其中数据对象是基于数据的逻辑分组创建的,和/或其中数据对象以分级树结构彼此相关)可以提供若干优点,尤其是在电路测试的情境中。例如,通过提供单独的进程来组织存储器中的数据,然后使数据可用于多个数据格式化器,从而消除了数据格式化器用于读取和组织数据的大部分开销;并且通过“在存储器中”创建数据对象,它们就能比存储在盘上的数据更快地被访问。这使得数据格式化器的代码更轻巧,并且还提供了可以由新数据格式化器影响的标准数据模型。并且还(1)使得数据填充器和个体数据格式化器更易修订和修补,(2)使得这些功能单元中的每一个可以并行且更快的编码,并且(3)减小了编码每个功能单元时出现差错的可能性(例如由于每个功能单元更轻巧,因而对于每个单元要测试的代码更少)。此外,它使得测试器能够生成这样的数据,该数据的形式对于生成运行时间测试环境更高效,同时使得测试数据能够以更用户友好并且逻辑上划分开的形式被用于数据格式化器(及其作者)。
这里公开的数据模型以及填充和删除数据的方式还有助于平衡(1)多个数据格式化器格式化公共数据集合的速度(即它们可以并行地分别格式化数据集合中的数据)与(2)在存储器、存储设备和/或处理资源方面的真实世界极限。在电路测试领域,尤其当利用SOC测试器执行参数测试时,生成如此多的数据,以至于在测试仅仅10-20个芯片之后,就会达到即使是配设良好的计算机系统的资源极限。但是,通过使用这里公开的数据模型并且删除不再需要的数据对象,通常可以避免资源极限。
权利要求
1.一种方法,包括响应于多个事件,在存储器中创建多个数据对象,所述数据对象中的至少一些对应于某些所述事件所暗示的数据的逻辑分组;将与某些所述事件相对应的数据与某些所述数据对象相关,并且在所述存储器中存储所述数据;以及向若干个数据格式化器提供对所述存储器中的所述多个数据对象和数据的访问权限。
2.如权利要求1所述的方法,还包括解析对应于所述多个事件的数据文件,以检索出所述多个事件;以及将从所述数据文件中检索出的事件传递到创建所述多个数据对象并在所述存储器中存储所述数据的进程。
3.如权利要求2所述的方法,其中所述数据文件是二进制数据文件。
4.如权利要求1所述的方法,还包括积累数据统计量并将所述数据统计量与某些所述数据对象相关。
5.如权利要求1所述的方法,还包括向创建所述多个数据对象并在所述存储器中存储所述数据的进程提供对所述数据对象和所述数据的直接访问权限;以及向所述若干个数据格式化器提供经由结构化接口对所述多个数据对象的访问权限。
6.如权利要求1所述的方法,还包括针对并经由所述若干个数据格式化器中的每个活动的数据格式化器访问所述存储器中的某些所述数据对象和数据;根据所述数据格式化器维护的规则来格式化所述数据;以及将经格式化的数据写入文件。
7.如权利要求1所述的方法,还包括生成到所述数据对象的指针;以及将所述指针分发到所述若干个数据格式化器中的一个或多个。
8.一种装置,包括存储在计算机可读介质上的计算机可读代码,所述计算机可读代码包括响应于多个事件执行以下操作的代码在存储器中创建多个数据对象,所述数据对象中的至少一些对应于某些所述事件所暗示的数据的逻辑分组;将与某些所述事件相对应的数据与某些所述数据对象相关,并且在所述存储器中存储所述数据;以及用于向若干个数据格式化器提供对所述存储器中的所述多个数据对象和数据的访问权限的代码。
9.如权利要求8所述的装置,还包括用于解析对应于所述多个事件的数据文件,以检索出所述多个事件的代码;以及用于将从所述数据文件中检索出的事件传递到创建所述多个数据对象并在所述存储器中存储所述数据的进程的代码。
10.如权利要求8所述的装置,还包括用于积累数据统计量并将所述数据统计量与某些所述数据对象相关的代码。
11.如权利要求8所述的装置,还包括用于生成到所述数据对象的指针的代码;以及用于将所述指针分发到所述若干个数据格式化器中的一个或多个的代码。
12.一种方法,包括响应于与至少一个被测器件上的多个测试的执行相对应的有序事件序列,创建多个数据对象,并按分级树结构将某些所述数据对象与其他所述数据对象相关,其中所述数据对象中的至少一些对应于某些所述事件所暗示的测试结果的逻辑分组,以及将对应于某些所述事件的数据与所述分级树结构中的某些所述数据对象相关,所述数据包括测试结果;以及向若干个数据格式化器提供对所述分级树结构中的所述多个数据对象和数据的访问权限。
13.如权利要求12所述的方法,还包括解析与所述至少一个被测器件上的所述多个测试的执行相对应的数据文件,以检索出所述有序事件序列;以及将从所述数据文件中检索出的所述有序事件序列传递到创建所述多个数据对象并将所述数据存储在所述分级树结构中的进程。
14.如权利要求13所述的方法,其中所述数据文件是二进制数据文件。
15.如权利要求12所述的方法,还包括积累测试数据统计量并将所述测试数据统计量与所述分级树结构中的某些所述数据对象相关。
16.如权利要求12所述的方法,还包括将测试数据解释编译并写入所述分级树结构中。
17.如权利要求12所述的方法,其中由某些所述事件所暗示的测试结果的逻辑分组包括批次、晶片和被测器件。
18.如权利要求17所述的方法,其中所述测试结果的逻辑分组还包括测试和子测试。
19.如权利要求12所述的方法,还包括将所述分级树结构存储在存储器中。
20.如权利要求12所述的方法,还包括向创建所述多个数据对象并在所述分级树结构中存储所述数据的进程提供对所述数据对象和所述数据的直接访问权限;以及向所述若干个数据格式化器提供经由结构化接口对所述多个数据对象的访问权限。
21.如权利要求12所述的方法,还包括针对并经由所述若干个数据格式化器中的每个活动的数据格式化器访问所述分级树结构中的某些所述数据对象和数据;根据所述数据格式化器维护的规则来格式化所述数据;以及将经格式化的数据写入文件。
22.如权利要求21所述的方法,其中所述活动的数据格式化器中的至少一个将其格式化的数据写为记录。
23.如权利要求12所述的方法,还包括生成到所述数据对象的指针;以及将所述指针分发到所述若干个数据格式化器中的一个或多个。
24.一种装置,包括存储在计算机可读介质上的计算机可读代码,所述计算机可读代码包括响应于与至少一个被测器件上的多个测试的执行相对应的有序事件序列,执行以下操作的代码创建多个数据对象,并按分级树结构将某些所述数据对象与其他所述数据对象相关,其中所述数据对象中的至少一些对应于某些所述事件所暗示的测试结果的逻辑分组,以及将对应于某些所述事件的数据与所述分级树结构中的某些所述数据对象相关,所述数据包括测试结果;以及用于向若干个数据格式化器提供对所述分级树结构中的所述多个数据对象和数据的访问权限的代码。
25.如权利要求24所述的装置,还包括用于解析与所述至少一个被测器件上的所述多个测试的执行相对应的数据文件,以检索出所述有序事件序列的代码;以及用于将从所述数据文件中检索出的所述有序事件序列传递到创建所述多个数据对象并将所述数据存储在所述分级树结构中的进程的代码。
26.如权利要求24所述的装置,还包括用于在所述分级树结构中的某些所述数据对象中积累测试数据统计量的代码。
27.如权利要求24所述的装置,还包括用于将测试数据解释编译并写入所述分级树结构中的代码。
28.如权利要求24所述的装置,其中由某些所述事件所暗示的测试结果的逻辑分组包括批次、晶片和被测器件。
29.如权利要求28所述的装置,其中所述测试结果的逻辑分组还包括测试和子测试。
30.如权利要求24所述的装置,其中所述代码将所述分级树结构存储在存储器中。
全文摘要
在一个实施例中,响应于多个事件,1)多个数据对象被创建在存储器中,2)对应于某些事件的数据被与某些数据对象相关,并且3)数据被存储在存储器中。所述数据对象中的至少一些对应于由某些事件暗示的数据的逻辑分组。在创建数据对象期间或之后,向若干个数据格式化器提供对存储器中的多个数据对象和数据的访问权限。还公开了其他实施例。
文档编号G06F11/22GK101030212SQ20071000275
公开日2007年9月5日 申请日期2007年1月30日 优先权日2006年1月31日
发明者卡利·康纳利, 瑞德·哈郝 申请人:韦瑞吉(新加坡)私人有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1