模块化测试系统中的数据日志支持的制作方法

文档序号:6109054阅读:291来源:国知局
专利名称:模块化测试系统中的数据日志支持的制作方法
技术领域
本发明涉及自动化测试设备(ATE)领域。更具体而言,本发明涉及一种用于支持开放体系测试系统中的数据日志的方法和系统。
背景技术
芯片上系统(SOC)器件的日益复杂以及同时对芯片测试成本减小的需求已经迫使集成电路(IC)制造商和测试器厂商重新考虑应当如何进行IC测试。工业研究表明,如果不重新进行工程设计,测试器的预计成本在不远的将来将持续显著增加。
测试设备高成本的主要原因是常规测试器体系的专门化特性。每个测试器制造商都具有许多测试器平台,不仅在诸如Advantest、Teradyne和Agilent的公司之间不兼容,而且在一个公司内的平台之间也不兼容,如Advantest制造的T3300、T5500和T6600系列测试器。由于这些不兼容性,每个测试器都需要其自己的专门化硬件和软件组件,并且这些专门化的硬件和软件组件不能用在其它测试器上。另外,需要相当的精力来将测试程序从一个测试器移植到另一个测试器以及开发第三方解决方案。即使当为平台开发了第三方解决方案时,它也不能移植或再用于不同的平台。从一个平台到另一个平台的转换通常是复杂而易于出错的,从而导致附加的精力、时间和增加的测试成本。
当运行一个测试或一系列测试时,数据日志被用于向用户提供状态信息。数据日志中所报告的信息可包括被测试器件(DUT)的通过/失败状态、任何相关的测量参数以及测试本身的总体运行状态。该信息典型地离线使用以便评估测试运行的完成和正在测试的器件的性能。数据日志能力的支持允许用户将其来自指定源的测试信息以所需格式输出到指定目的地。
专门化测试器体系的问题之一是所有硬件和软件对于给定测试器都保持在固定配置。为测试硬件器件或IC,开发了专用的测试程序,其使用测试器能力中的一些或全部来限定测试数据、信号、波形以及电流和电压电平,以及收集DUT响应和确定DUT通过/失败。
由于测试系统需要实施各种各样的功能性和操作以便测试各种各样的测试模块及其对应的DUT,需要一种可配置成支持各种各样的测试模块的开放体系测试系统。具体而言,为了支持所述各种各样的测试模块,需要一种开放体系测试系统内的数据日志框架,其可配置成与测试系统的不同源和目的地的不同格式一起作用。

发明内容
在本发明的一个实施例中,一种用于将测试信息从源传送到目的地的方法包括提供模块化测试系统,其中该模块化测试系统包括用于控制至少一个站点控制器的系统控制器,所述至少一个站点控制器用于控制至少一个测试模块。所述方法进一步包括提供用于支持用户定义的数据日志格式的扩展的数据日志框架;提供用于支持用户发起的数据日志事件的支持类;接收请求将输入测试信息从所述源传送到所述目的地的数据日志事件;基于所述目的地、数据日志框架和支持类来配置输出测试信息;以及将所述输出测试信息传递到所述目的地。
在本发明的另一个实施例中,一种模块化测试系统包括系统控制器;耦合到系统控制器的至少一个站点控制器;至少一个测试模块及其对应的测试器件(DUT);数据日志框架,配置成支持用户定义的数据日志格式的扩展;以及配置成支持用户发起的数据日志事件的一个或多个支持类。该模块化测试系统进一步包括用于接收请求将输入测试信息从所述源传送到所述目的地的数据日志事件的装置;用于基于所述目的地、数据日志框架和支持类来配置输出测试信息的装置;以及用于将所述输出测试信息传递到所述目的地的装置。


根据结合附图做出的对本发明实施例的详细描述,本发明的以上特点和优点以及其附加的特点和优点得到更清楚的理解。
图1示出根据本发明一个实施例的开放体系测试系统。
图2示出根据本发明一个实施例的数据日志框架的实施。
图3示出根据本发明一个实施例的数据日志源的实施。
图4示出根据本发明一个实施例的用于注册源类型的方法。
图5示出根据本发明一个实施例的用于格式化和流化数据的方法。
图6示出根据本发明一个实施例的动态使能数据日志的实施。
图7示出根据本发明一个实施例的动态禁止数据日志的实施。
图8示出根据本发明一个实施例的动态修改数据日志格式的实施。
图9示出根据本发明一个实施例的动态分配数据日志输出流的实施。
图10示出根据本发明一个实施例的动态禁止数据日志输出流的实施。
图11示出根据本发明一个实施例的动态适配新源的实施。
具体实施例方式
本发明提供了用于模块化测试系统中的数据日志支持的方法和系统。以下描述是为了使本领域的任何技术人员能够制作使用本发明。对特定技术和应用的描述只是为了举例。对在此所述的例子的各种修改对本领域的技术人员将是显而易见的,并且在此定义的一般原理可应用于其它例子和应用而不背离本发明的实质和范围。因此,本发明并不是想要局限于所描述和示出的例子,而是应当给予与在此所公开的原理和特征一致的最宽范围。
图1示出根据本发明一个实施例的开放体系测试系统。系统控制器(SysC)102耦合到多个站点控制器(SiteCs)104。系统控制器亦可耦合到网络以便访问关联文件。每个站点控制器通过模块连接使能器106耦合以便控制位于测试站点110的一个或多个测试模块108。模块连接使能器106允许所连接的硬件模块108的重新配置并且也用作用于数据传递的总线(用于加载模式数据、收集响应数据、提供控制等)。另外,一个站点处的模块可通过模块连接使能器106访问另一个站点处的模块。模块连接使能器106允许不同的测试站点具有相同或不同的模块配置。换句话说,每个测试站点可采用不同数量和类型的模块。可能的硬件实施包括专用连接、开关连接、总线连接、环形连接和星形连接。模块连接使能器106可以由例如开关矩阵来实现。每个测试站点110与一个DUT 112关联,该DUT 112通过负载板114连接到对应站点的模块。在另一个实施例中,单个站点控制器可连接到多个DUT站点。
系统控制器102用作总体系统管理器。它协调站点控制器活动、管理系统级并行测试策略,并且另外提供处理机/探测器控制以及系统级数据日志和错误处理支持。系统控制器102是在验证和调试测试环境时测试工程师交互的主要点。它提供到站点控制器104的关口,并且管理多DUT环境中的站点控制器活动的同步。它进一步运行用户应用和工具,如数据日志图形用户界面(DatalogGUI)。依赖于操作设置,系统控制器102可在与站点控制器104的操作分离的CPU上配置。可替选地,公用的CPU可由系统控制器102和站点控制器104来共享。类似地,每个站点控制器104可在其自己的专用CPU(中央处理单元)上配置,或配置为同一CPU内的单独进程或线程。
站点控制器104负责运行测试DUT的测试计划。测试计划通过使用框架类以及封装测试方法的标准或用户提供的测试类来建立特定的测试。另外,测试计划使用标准接口来配置硬件,并且定义测试流程。
本发明的系统体系可在概念上设想为图1所示的分布式系统,同时应理解各个系统组件亦可被当做集成单片系统的逻辑组件,而不必当做分布式系统的物理组件。通过在硬件和软件级使用标准的接口,可使即插即用或可更换模块变得容易。测试器操作系统(TOS)允许用户使用测试计划编程语言来编写测试计划程序,以及以特定于特定测试器件(DUT)的方式操作测试系统。它亦允许用户将测试计划程序中公用的测试系统操作序列打包为库。这些库有时被称为测试类和测试模板。
数据日志框架数据日志框架连同测试计划和系统框架类运行在各个站点控制器上。它提供一组接口、类和方法来支持数据日志系统的开发、应用和管理。该数据日志框架管理数据日志单元,如源、流和格式器;分派(dispatch)数据日志事件;提供允许创建新数据日志事件的应用编程接口(API);提供API来设置和控制数据日志;提供通用格式器来处理共同的格式化需要;并且提供对模块化第三方或顾客数据日志服务的集成的支持,这使得数据日志框架开放。
标准数据日志接口图2示出根据本发明一个实施例的数据日志框架的实施。数据日志框架接口和支持类之间的关系集通过图2的统一建模语言(UML)类图而示出。数据日志框架200包括数据日志流接口202、数据日志格式接口204、数据日志类型接口206和数据日志源接口208。数据日志框架200进一步包括数据日志管理器类210、数据日志格式映射类212、数据日志格式组类214、数据日志值类216、一般格式类218和用户格式类220。
到测试器操作系统(TOS)的标准数据日志接口被定义为纯抽象C++类。数据日志流接口(IDatalogStream)202表示输出文件或设备。数据日志系统将格式化输出发送到流。该系统提供两个内置流,用于将输出发送到本地盘文件的FileStream和用于将输出发送到系统的控制台应用的ConsoleStream。
数据日志格式接口(IDatalogFormat)204表示将与数据日志事件关联的数据格式化为输出所需要的必要指令。格式化能力的特定特性隐藏在IDatalogFormat的每个实施内。例如,内置的GeneralFormat允许一般格式串与类宏(macro-like)能力一起使用,所述类宏能力用于从DatalogValues对象中提取带名字的值,并且将它们插入到格式化串中。
数据日志类型接口(IDatalogType)206表示数据日志源的类或“类型”,如测试的特定类型。DatalogManager 210部分地基于施加源的类型将事件映射成格式和流。在新的源类型产生时,它们向DatalogManager210注册自己并且接收标识符(ID)值。管理这些类型允许DatalogManager210使能/禁止数据日志源的全部类以及数据日志源的特定实例。IDatalogType对象206可产生数据日志事件的多个类。例如,在一组模式内循环直到发生某个条件为止的用户测试可产生TestStart、TestEnd、IterationStart、IterationEnd和ConditionTest数据日志事件。这些事件类中的每个可具有与其关联的不同数据字段(见以下的DatalogValues类)。
数据日志源接口(IDatalogSource)208表示数据日志事件的源。尽管IDatalogType 206表征了数据日志源对象的整个类,IDatalogSource208表示单独的源实例。该接口允许使能/禁止各个源的数据日志。
数据日志支持类数据日志框架200的中心对象是DatalogManager对象210。该对象负责维护所有数据日志输出流以及格式化数据日志事件及其关联数据并将其前转到适当的流。DatalogManager 210驻留在站点控制器的测试计划服务器(TPS)中。它是数据日志执行引擎。具体而言,DatalogManager210的主要功能包括管理全局数据日志流集(即实现DatalogStream接口的对象)。
管理管理数据日志格式集(即实现DatalogFormat接口的对象),每个格式产生格式化串,作为数据日志事件集的结果。
将数据日志事件分配到所有关联的数据日志流。流的所有目的地可通过DatalogManager来控制。
保持和控制具有过滤数据日志输出的效果的数据日志屏蔽条件。注意屏蔽的应用可发生在源处以便改善系统性能。
启动/清理数据日志系统。
使能/禁止整个数据日志系统以及各个数据日志类型或源。
数据日志格式映射类212是带名字的<EventType,EventName,Format>组合。也就是说,它将EventType(表示特定的IDatalogType对象)、EventName(表示EventType对象所产生的数据日志事件之一)和Format(表示IDatalogFormat对象)分组在一起。
数据日志格式组类214是DatalogFormatMap对象的集合。用户可将DatalogFormatMap对象捆绑成单个组并且将该组分配给一个或几个流。这提供了对数据日志事件最终格式化以及这些格式化串到适当的流的路由的用户级控制。
数据日志值类216包含头部信息、类似数据日志类型标识符和事件以及由事件源设置的数据日志字段的列表。DatalogValues对象充当从名称到值的串到串映射,从而允许格式对象通过名称来提取所需值并且将其插入到格式化流中。
一般格式类218是IDatalogFormat的实施。它允许一般格式串与类宏能力一起使用,来从DatalogValues对象中提取指定值并且将其插入到格式化流中。
用户格式类220是用于用户定义的格式类的占位符。如果所提供的GeneralFormat类不符合用户的特定需要,人们可以向系统添加新的格式类并且对其进行利用。
数据日志源在一个实施例中,通过实现IDatalogSource接口208,基于站点控制器的对象可充当数据日志事件的源。例如,测试计划和测试对象是事件源的实例。这样的对象的每个实例都实现了IDatalogSource接口。另外,这样的对象的每种类型,例如FunctionalTest,具有与其关联的IDatalogType接口206的实施。这是利用每种类型的数据日志源的类范围内的(class-wide)静态对象来完成的。图3示出根据本发明一个实施例的数据日志源的实施。该数据日志源包括功能测试()类302、数据日志类型实施()类304、数据日志类型接口306和数据日志源接口308。
如图3所示,FunctionalTest类302具有类型DatalogTypeImpl 304的类范围内的静态成员。当该成员变量创建时,FunctionalTest的实例对其进行检查。如果该变量尚未创建和赋值,则构造器创建DatalogTypeImpl的实例,对其进行初始化,将其赋给静态成员变量,并且将其向DatalogManager注册。FunctionalTest类的后续实例访问DatalogTypeImpl数据成员,并且将自己(即作为IDatalogSource的FunctionalTest的实例)添加到后面的FunctionalTest实例提供的DatalogTypeImpl的数据日志源实例列表。
在另一个实施例中,例如ADifferentFunctionalTest的FunctionalTest类的子类可尝试建立与FunctionalTest的数据日志类型不同的数据日志类型。通过不使用类范围内的与FunctionalTest关联的DatalogTypeImpl而使用其自己的类范围内的DatalogTypeImpl实例,一个ADifferentFunctionalTest的实施可实现这一点。注意每个FunctionalTest实例都实施IDatalogSource接口。DatalogTypeImpl使用该接口来使能/禁止各个源。
源类型注册当测试计划加载时,数据日志事件源可向DatalogManager对象注册。从该注册返回的值是标识符,该标识符然后用于生成事件。
图4示出根据本发明一个实施例的用于注册源类型的方法。用于注册源类型的合作对象组包括测试计划对象402、FunctionalTest1对象404、FunctionalTest2对象406和DatalogManager对象408。注意当测试计划创建相同类型(FunctionalTest1和FunctionalTest2)的两个测试实例时,第一测试实例将新的数据日志类型向DatalogManager注册。
用户可为不同的事件类型设置数据日志格式。这可在测试计划初始化期间进行以便提供缺省格式,并且/或者从远程应用交互地进行。遵循类似的过程以便允许用户设置数据日志流。DatalogManager维护从{数据日志类型,数据日志事件}组到对应的{数据日志格式,数据日志流}的映射,其规定了特定类型的事件可采取来通过测试系统的路由。对于基于文件的流,站点控制器上的测试类可将流关闭,从而允许数据日志文件传递到系统控制器。然后该流可重新打开或替换为另一个流。对数据进行格式化和流化在测试期间,对象可产生记录到数据流的数据日志事件。图5示出根据本发明一个实施例的用于格式化和流化数据的方法。用于执行该任务的合作对象和接口组包括测试计划对象502、DatalogValues对象504、DatalogManager对象506、数据日志格式接口(IDatalogFormat)508和数据日志流接口(IDatalogStream)510。测试计划502创建DatalogValues对象实例504,通过调用setValue()方法来设置适当的值,并且将该对象传递到DatalogManager 506的doDatalog()方法。然后doDatalog()方法寻找用于类型/事件组合的适当数据日志格式对象508,并且调用关于该数据日志格式对象508的apply()方法以便在返回中获得串对象。然后使用writeMessage()方法将该串对象传递到关联的数据日志流对象510以便输出。
数据日志初始化在一个不同的实施例中,使用以下步骤来初始化数据日志系统创建数据日志流并将其添加到DatalogManager。
创建数据日志格式并将其添加到DatalogManager。
创建数据日志格式映射并将其添加到DatalogManager。
创建数据日志格式组并将其添加到DatalogManager。
数据日志应用编程接口(API)提供了执行上述任务的功能。另外,测试系统提供了测试类DatalogSetupTest,其读取一个或多个配置文件并执行上述步骤。以下的例子说明了使用DatalogSetupTest配置文件来执行初始化步骤。数据日志流、数据日志格式映射和数据日志格式组内的DLL参数规定了用于实现IDatalogStream 202或IDatalogFormat 204的库。
Vcrsion 0.1.0;#Enable the datalog systemEnabled;#Step 1Stream Creation#Creates a strcam of type FiIeStream,which logs the message to#a fiIe.
Strcam FunctionalTestStream{DLL″FileStream″;FileName″FuncDatalogDut<DutID>.log″;
Overwrite″1″;}#Stcp2Format Crcation#Adds a format with a line that looks like#Signal lnfo$SignalInfo#where $SignalInfo is replaced by the string provided in thc datalog#source.
Format SignalInfoFormat{DLL″GeneralFormat″;Format″Signal Info$SignalInfo″;}#Adds a format with a linc that looks like#Tcst Rcsult$Result#where $Result is replaced by the string providcd in the datalog#source.
Format TcstRcsultFormat{DLL″GcneralFormat″;Format″Test Rcsult$Result″;}#Step 3FormatMap Creation#Maps format SignalInfoFormat to cvent DumpSignal from sources#of type com.Advantcst.oai.TestClasscs.FunctionalTest.
FormatMap SignalFormatMap{Type com.advantest.oai.TestClasses.FunctionalTest;Event DumpSignal;Format SignallnfoFormat;}#Maps format TestResultFormat to evcnt TcstResult from sources#of type com.Advantcst.oai.TestClassees.FunctionalTcst.
FormatMap RcsultFormatMap{Type com.advantest.oai.TestClasses.FunctionalTest;Event TestResult;FormatTcstResultFormat;}#Step 4FormatGroup Creation#Creatcs a group which directs messages from format map#SignalFormatMap and ResultFormatMap to destination FunctionalTcstStream#and ConsoleStream.
FormatGroup FunctionalTestGroup{
FormatMap SignalFormatMap;FormatMap RcsultFormatMap;Strcam FunctionalTestStream;Stream ConsolcStream;}数据日志设置文件的语义在又一个实施例中,数据日志设置文件包括四个不同类型的块数据日志格式块、数据日志流块、数据日志格式映射块和数据日志格式组块。这些块分别用于定义数据日志格式、数据日志流、数据日志格式映射和数据日志格式组。这四个块中的任何一个可在同一设置文件中使用多次,并且数据日志系统亦可利用多个单独的数据日志设置文件来设置。这样,数据日志系统设置是模块化的且灵活的。例如,可以有用于设置Cal/Diags数据日志的第一数据日志设置文件、用于设置功能测试的数据日志的第二数据日志设置文件以及用于设置参数测试的数据日志的第三数据日志设置文件。
数据日志格式块在一个实施例中,数据日志格式块用于定义数据日志格式。该格式定义可包括格式名称、格式DLL名称、消息格式串和任选的用户定义的格式参数。如果格式DLL名称是GeneralFormat,则使用预定义的GeneralFormat;否则使用用户定义的数据日志格式。在后者的情况下,用户在系统测试目录中提供数据日志格式DLL。调用以下数据日志API来定义数据日志格式块void DatalogManagcr::addFormat(const OFCString &formatName,const OFCString &typeName,const OFCString &format,const DatalogProperties_t properties);
并且Format SignalInfoFormat{DLL“GeneralFormat”;Format“$SignalInfo”;}定义格式SignalInfoFormat,其利用了预定义的GeneralFormat。其格式串是$SignalInfo,其中$SignalInfo是可在运行时间期间由传入的(passed-in)数据日志记录(DatalogValues)中的数据日志变量SignalInfo替换的令牌。数据日志格式块可用于将现有数据日志格式从数据日志系统中去除。在此情况下调用以下数据日志API。
void DatalogManager::removeFormat(const OFCString &formatName);并且Format AnExistingFormat Disabled;将数据日志格式AnExstingFormat从数据日志系统中去除。
数据日志流块在另一个实施例中,数据日志流块用于定义数据日志流。数据日志流的定义包括流名称、流DLL名称和任选的用户定义的流参数。如果流DLL名称是FileStream或ConsoleStream,则使用内置数据日志流FileStream或ConsoleStream;否则使用用户定义的数据日志流。在后者的情况下,用户在系统测试目录中提供数据日志流DLL。调用以下数据日志API来定义数据日志流块void DatatogManager::addStrcam(const OFCString &strcamName,const OFCString &typeName,const DatalogProperties_t propcrties);并且
Strcam FunctionarTestStream{DLL“FileStream”;FileName“datalog<DutID>.log”;Overwritc“0”;}定义流FunctionalTestStream,其利用了具有任选参数FileName和Overwrite的内置流FileStream。注意FileStream支持具有自动变量<DutID>和<TimeStamp>的文件名。<DutID>在运行时间期间由当前DUTID替换,而<TimeStamp>由具有诸如Thu_Nov_13_06_10_28_2003的格式的当前日期和时间来替换。
数据日志流块可用于将现有数据日志流从数据日志系统中去除。在此情况下调用以下数据日志APIvoid DatalogManager::removeStrcam(const OFCString &streamName);并且Stream AnExistingStrcam Disabled;将数据日志流AnExsitingStream从数据日志系统中去除。
数据日志类型块在一个不同的实施例中,数据日志类型块用于针对数据日志类型来定义特定于用户的特性。调用数据日志API来定义数据日志类型块IDatalogTypc*DatalogManagcr::getType(const OFCString &typeName)const;void IdatalogTypc::addProperty(const OFCString &propName,const OFCString &propValue);并且针对数据日志类型“com.Advantest.oai.TestClasses.FunctionalTest.”,Type com.Advantcst.oai.TestClasses.FunctionalTest{Mode“Detailed”;}
定义了具有值“Detailed”的特性Mode。
数据日志格式映射块在又一个实施例中,数据日志格式映射块用于定义数据日志格式映射。格式映射的定义包括格式映射名称、数据日志类型名称及其待映射的事件名称以及映射的格式名称。调用以下数据日志API来定义数据日志格式映射块void DatalogManager::createFormatMap(const OFCString &mapName,const OFCString &typeName,const OFCString &eventName,const OFCString &formatName);并且FormatMap SignalFormatMap{Type com.Advantest.oai.TestClasses.FunctionalTest;Evcnt DumpSignal;Format SignalInfoFormat;}定义了格式映射SignalFormatMap,其将数据日志类型com.Advantest.oai.TestClasses.FunctionalTest及其事件DumpSignal映射为格式SignalInfoFormat。
数据日志格式映射块可用于将现有数据日志格式映射从数据日志系统中去除。在此情况下,调用以下数据日志API来执行任务void DatalogManager::rcmoveFormatMap(const OFCString &mapNadme);数据日志格式组块在一个实施例中,数据日志格式块用于定义数据日志格式组。格式组的定义包括格式组名称、格式组包含的格式映射名称的列表以及从格式组产生的消息所输出到的流的名称列表。调用以下数据日志API来定义数据日志格式组块
void DatalogManager::createFormatGroup(const OFCString &groupName,const OFCStringVec_t &mapNames);void DatalogManager::setStream(const OFCString &groupName,const OFCString &streamName);第一调用创建包含格式矢量的格式组,并且第二调用将数据日志流添加到所创建的格式组中。例如,FormatGroup FunctionalTestGroup{FormatMap SignalFormatMap;FormatMap RcsultFormatMap;Stream FunctionalTestStrcam;Stream ConsoleStrcam;}定义格式组FunctionalTestGroup,其包括格式映射SignalFormatMap和ResultFormatMap。从所述格式组产生的消息被输出到数据日志流FunctionalTestStram和ConsoleStream。
数据日志格式映射块可用于将现有数据日志格式组从数据日志系统中去除。在此情况下,调用以下数据日志API来实施功能void DatalogManager::removcFormatGroup(const OFCString&groupName);数据日志系统应用的例子在以下例子中,诸如DatalogManagerProxy、DatalogHandlerProxy和DatalogFilterProxy的代理对象由运行系统控制器的应用用来远程控制一个或多个站点控制器上的数据日志框架的当前状态和操作。这些对象充当站点控制器上的真实对象的远程代理并且向这些对象提供透明的通信通道,该透明的通信通道允许系统控制器上的应用应对本地对象,而不是通信协议的复杂性。
图6示出根据本发明一个实施例的动态使能数据记录的实施。用于实现该任务的合作对象组包括数据日志图形用户界面(DatalogGUI)对象602、DataloggerProxy对象604(也称为DatalogManagerProxy)、测试对象606和数据记录器对象608(也称为DatalogManager)。序列图说明用于动态使能数据日志系统的步骤。如图6所示,序列图中的每个步骤描述如下1.在步骤1,DatalogGUI 602或其它测试器GUI(例如测试控制面板)包括按钮或菜单项使能数据日志。当用户点击所述按钮或菜单项时,DatalogGUI 602从测试计划服务器代理(TPSProxy)搜索DataloggerProxy对象604。
2.DatalogGUI 602对返回的DataloggerProxy 604调用setEnable()方法,从而传入参数值“true”,这意味着使能数据日志系统。
3.利用该代理模型,DataloggerProxy 604的setEnable()方法调用数据记录器608的setEnableTest()方法以使能数据日志系统。
4.测试对象606调用enteringText()方法以将数据日志事件发出到数据记录器608。
5.数据记录器608检查其是否通过调用isEnabled()方法而使能。
6.如果数据记录器608被使能,它调用log()方法来开始数据记录。
图7示出根据本发明一个实施例的动态禁止数据记录的实施。用于实现该任务的合作对象组包括DatalogGUI对象702、DataloggerProxy对象704和数据记录器对象708。序列图说明用于动态禁止数据日志系统的步骤。如图7所示,序列图中的每个步骤描述如下1.在步骤1,DatalogGUI 702或其它测试器GUI(例如测试控制面板)包括按钮或菜单项禁止数据日志。当用户点击所述按钮或菜单项时,DatalogGUI从TPSProxy搜索单态DataloggerProxy对象704。
2.DatalogGUI 702对返回的DataloggerProxy 704调用setEnable()方法,从而传入参数值“false”,这意味着禁止数据日志系统。
3.利用该代理模型,DataloggerProxy 704的setEnable()方法调用数据记录器708的setEnableTest()方法以禁止数据日志系统。
4.测试对象706调用enteringText()方法以将数据日志事件发出到数据记录器708。
5.数据记录器检查其是否使能。由于其被禁止,不会发生数据记录。
图8示出根据本发明一个实施例的动态修改数据日志格式的实施。用于实现该任务的合作对象组包括DatalogGUI对象802、DatalogFormatterProxy对象804、DatalogHandler对象806和DatalogFormatter对象808。序列图说明用于动态改变数据日志格式的步骤。DatalogHandler对象806允许用户以单个命名来将数据日志流和格式规格组合在一起,DatalogManager可使用所述单个命名来传递数据日志事件。如图8所示,序列图中的每个步骤描述如下1.在步骤1,DatalogGUI 802显示与所选数据日志处理机关联的可用数据日志格式器的列表。用户可通过打开下拉菜单来选择任何数据日志格式器,并且选择菜单项Edit。DatalogGUI的实施将所述列表中的每个数据日志格式器与对应的数据日志格式器代理参考(通过使用用户数据参数)相关联。接下来获得DatalogFormatterProxy对象804。
2.DatalogGUI 802使用DatalogFormatterProxy对象804来调用getFormat()方法以获得格式串和相关参量。
3.利用该代理模型,DatalogFormatterProxy 804的getFormat()方法调用DatalogFormatter 808的对应getFormat()方法。
4.DatalogGUI 802显示具有所选格式器的数据日志事件的格式和参量。用户可根据一组预定数据日志格式要求来改变格式和参量。
5.当用户将修改的格式器应用到数据日志系统中时,DatalogGUI802调用DatalogFormatterProxy 804的setFormat()方法并且传入修改的格式串和参量。
6.利用该代理模型,DatalogFormatterProxy 804的DatalogFormatterProxy.setFormat()方法调用DatalogFormatter 808的对应setFormat()方法。
7.接下来,当DatalogHandler 806对修改的数据日志格式器调用getOutput()方法以获得具有所述数据日志事件的格式化的消息时,应用修改的格式器。
图9示出根据本发明一个实施例的动态分配数据日志输出流的实施。用于实现该任务的合作对象组包括DatalogGUI对象902、DatalogManagerProxy对象904、IDatalogHandlerProxy对象906、IDatalogHandler对象908和DatalogManager对象910。序列图说明用于分配数据日志输出流以便与数据日志处理机动态关联的步骤。如图9所示,序列图中的每个步骤描述如下1.在步骤1,当用户选择数据日志处理机来编辑其关联的数据日志输出流时,DatalogGUI 902显示一面板,包括两个列表第一列表显示数据日志系统中的数据日志流名称,第二列表显示与数据日志处理机关联的数据日志流名称。另外,DatalogGUI亦包括Add、Remove、Apply、OK和Cancel按钮。
2.DatalogGUI 902调用DatalogManagerProxy904的getStreamNames()方法。
3.利用该代理模型,DatalogManagerProxy 904的getStreamNames()方法调用DatalogManager 910的对应getStreamNames()方法。
4.DatalogGUI 902在第一列表中显示所检索的数据日志流名称。
5.DatalogGUI 902然后调用IDatalogHandlerProxy 906的getStreamNames()方法。
6.利用该代理模型,IDatalogHandlerProxy 906的对应getStreamNames()方法调用IDatalogHandler 908的对应getStreamNames()方法以获得当前与所选数据日志处理机关联的所有数据日志流名称。
7.DatalogGUI 902在第二列表中显示与所选数据日志处理机关联的所检索的数据日志流名称。
8.然后用户使用按钮Add和Remove来编辑关联数据日志流列表。在用户完成编辑并且点击Apply或Ok按钮以便将修改的流应用于数据日志系统之后,DatalogGUI 902对IDatalogHandlerProxy 906调用setStream()方法并向其传递修改的数据日志流名称。
9.利用该代理模型,IDatalogHandlerProxy 906的setStream()方法调用IDatalogHandler 908的对应setStream()方法。
10.然后,IDatalogHandler 908从DatalogManager 910获得每个数据日志流名称的关联的数据日志流对象参考。
11.IDatalogHandler 908然后将所述流添加到流矢量中。之后,IDatalogHandler 908以流矢量发出新选择的数据日志流,用于其数据日志输出。
图10示出根据本发明一个实施例的动态禁止数据日志输出流的实施。用于实现该任务的合作对象组包括DatalogGUI对象1002、*+ IDatalogStreamProxy对象1004、IDatalogHandler对象1006和IDatalogStream对象1008。序列图说明用于动态禁止数据日志输出流的步骤。如图10所示,序列图中的每个步骤描述如下1.在步骤1,DatalogGUI 1002显示可用数据日志流的列表。用户可通过打开下拉菜单来选择任何数据日志流,并且选择菜单项Disable。DatalogGUI 1002的实施将所述列表中的每个数据日志流与对应的IDatalogStreamProxy参考1004(通过使用用户数据参数)相关联。然后获得IDatalogStreamProxy 1004。
2.DatalogGUI 1002对所获得的IDatalogStreamProxy对象l004调用disable()。
3.IDatalogStreamProxy 1004的disable()方法通过代理模型来调用IDatalogStream 1008的对应disable()方法。
4.IDatalogHandler 1006调用write()方法来将格式化的消息写出到所述流。
5.IDatalogStream 1008检查其是否使能。如果使能则可修改输出流。
图11示出根据本发明一个实施例的动态适配新源的实施。用于实现该任务的合作对象组包括DatalogGUI对象1102、DatalogManagerProxy对象1104、测试对象1106、DataLogger对象1108、DatalogManager对象1110、DatalogHandlerProxy对象1112、DatalogHandler对象1114、DatalogFilterProxy对象1116、DatalogFilter对象1118和DatalogFormatter对象1120。序列图说明用于动态适配新源的步骤。DatalogFilter对象1118允许用户根据类型和源标识符来选择性地过滤数据日志事件。该过滤时用户打开和关闭特定数据日志事件。如图11所示,序列图中的每个步骤描述如下1.在步骤1,DatalogGUI 1102寻找DatalogManagerProxy对象1104,并且调用其addHandler()方法来注册该新源的新DatalogHandler实例。注意以这种途径,DatalogHandler1114将事件与不同的数据日志格式器相关联。利用该模型,新的DatalogHandler实例得以创建以便对所述新源(测试类)起作用。返回新创建的DatalogHandlerProxy实例。
2.利用该代理模型,DatalogManagerProxy1104的addHandler()方法调用DatalogManager1110的对应addHandler()方法。
3.接下来,DatalogManager1110的addHandler()方法创建DatalogHandler的新实例,然后它将新创建的DatalogHandler实例注册到DatalogManager对象1110。
4.然后,DatalogGUI 1102通过在步骤1返回的DatalogManagerProxy 1104将数据日志过滤器代理与新创建的数据日志处理机相关联。
5.利用该代理模型,DatalogHandlerProxy 1112的getFilter()方法调用DatalogHandler 1114的对应getFilter()方法。
6.利用DatalogfilterProxy1116,DatalogGUI 1102调用其enableTest()方法。
7.利用该代理模型,DatalogFilterProxy 1116的enableTest()方法调用DatalogFilter 1118的对应enableTest()方法。结果,新创建的数据日志处理机实例对新测试源的所选事件进行处理。
8.DatalogGUI 1102通过其代理为新创建的数据日志处理机的每个所选数据日志事件设置格式。对于此新测试源,新参量的格式可以规定为Test.FooArgument。在该新测试源中,可实现如下示出的接口IProperty。
class IPropcrty{publicOFCString &gctProperty(const OFCString &name)const;void.setProperty(const OFCString &name,const OFCString*value);OFCStringVec_t getPropertyNames()const;};其中FooArgument是所述新测试源的特性之一。
9.DatalogHandlerProxy 1112通过对应的DatalogHandler 1114来调用setFormat()方法。
10.DatalogHandler 1114为所选事件创建DatalogFormatter并将其添加到事件路由图中。接下来,所述新创建的数据日志处理机处理来自新源的数据日志事件。然后,可以开始具有新源测试的测试计划。
11.一旦TPS达到新源测试的执行的结尾,它就向数据日志系统发送exitingTest()数据日志请求。
12.Datalogger 1108接受该请求,并将其传递到数据日志事件以便记录。
13.Datalogger 1108将该新数据日志事件前转到DatalogManager1110以便分派。
14.DatalogManager 1110将所述事件逐一发布到所注册的数据日志处理机。一旦数据日志处理机能够处理该事件,可停止该发布过程。
15.当所述事件被发布到每个数据日志处理机时,处理机检查该事件是否可记录。如果新创建的DatalogHandler实例能够用于所述新测试源,则该事件是可记录的。
16.DatalogHandler 1114寻找与当前事件关联的DatalogFormatter1120,并且调用其getOutput()方法以基于定义的格式来获得格式化的消息。所述getOutput()方法通过调用cvent.getDatalogger->getTestO->gctProperty(“FooArgument”);来获取新的参数Test.FooArgument值,然后格式化的输出消息被前转到输出数据日志流。
所公开的数据日志框架实现了许多有益效果。首先,数据日志框架独立于数据日志的源、特性和内容。这允许无需修改数据日志框架来添加新的数据日志源。另外,数据日志输出的格式化独立于数据日志框架。尽管为系统提供了GeneralFormat,但它被规定为到格式块的动态链接库(DLL)参数,并且它不是“硬编码”到框架中的。而且,数据日志事件的格式化可由终端用户来配置。例如,事件可以格式化为人可读的文本、用于电子表格或数据库的逗号隔开的值、专用文本或用于进一步处理的二进制格式,或者它们甚至可以全部忽略。数据日志框架独立于数据日志流的目的地。此外,格式和输出流可扩展。也就是说,用户可向系统添加新的IdatalogFormat和IDatalogStream实施而无需修改框架。测试类(和其它数据日志源)及其对应的数据日志事件也可扩展,因此框架不需要了解特定的源或事件类型。在用户添加具有新数据日志事件类型的新测试类时,不需要修改数据日志框架。
相关领域的技术人员将认识到,可以使用对所公开的实施例的许多可能的修改,而仍采用相同的基本机理和方法。为了说明的目的,以上描述参照了特定的实施例。然而,以上的说明性的讨论并不是穷尽的或者将本发明局限于所公开的精确形式。可根据以上教导进行许多修改和变化。所选择和描述的实施例用来说明本发明的原理及其实际应用,并且使本领域的技术人员能够以适合于所设想的特定用途的各种修改而最好地利用本发明和各种实施例。
权利要求
1.一种用于将测试信息从源传送到目的地的方法,包括提供模块化测试系统,其中该模块化测试系统包括用于控制至少一个站点控制器的系统控制器,所述至少一个站点控制器用于控制至少一个测试模块;提供用于支持用户定义的数据日志格式的扩展的数据日志框架;提供用于支持用户发起的数据日志事件的支持类;接收请求将输入测试信息从所述源传送到所述目的地的数据日志事件;基于所述目的地、数据日志框架和支持类来配置输出测试信息;以及将所述输出测试信息传递到所述目的地。
2.根据权利要求1所述的方法,其中所述数据日志框架包括用于支持来自不同设备提供商的各个源的输入测试信息的源接口;用于表示数据日志源和目的地的类的类型接口;用于提供格式化能力的格式接口;用于将格式化的测试信息传递到不同目的地的流接口;以及用于根据对应的源、流、格式和目的地来管理数据日志事件的数据日志管理器。
3.根据权利要求1所述的方法,其中所述支持类包括用于存储头部、类型和事件信息的数据日志值类;用于将用户事件的名称和类型相组合的数据日志格式映射类;用于捆绑格式映射组的数据日志格式组类;用于支持用户定义的格式类的用户格式类;以及用于支持预定义格式类集的一般格式类。
4.根据权利要求1所述的方法,其中提供数据日志框架的步骤进一步包括创建一个或多个数据日志流;创建一个或多个用户格式;创建一个或多个数据日志格式映射;创建一个或多个数据日志格式组;以及将所述一个或多个数据日志流、用户格式、数据日志格式映射和数据日志格式组链接到对应的数据日志管理器。
5.根据权利要求1所述的方法,其中所述数据日志框架独立于输入测试信息的源和内容。
6.根据权利要求1所述的方法,其中所述数据日志框架独立于输出测试信息的目的地和内容。
7.根据权利要求1所述的方法,其中所述输出测试信息的格式能够由用户配置。
8.根据权利要求1所述的方法,其中所述配置步骤包括创建数据日志值对象,该数据日志值对象包括类型和事件信息;基于对应的目的地、数据日志框架和支持类来确定数据日志格式对象;以及使用所述数据日志格式对象来格式化所述输出测试信息。
9.一种模块化测试系统,包括系统控制器;耦合到所述系统控制器的至少一个站点控制器;至少一个测试模块及其对应的被测试器件(DUT);数据日志框架,配置成支持用户定义的数据日志格式的扩展;配置成支持用户发起的数据日志事件的一个或多个支持类;用于接收请求将输入测试信息从所述源传送到所述目的地的数据日志事件的装置;用于基于所述目的地、数据日志框架和支持类来配置输出测试信息的装置;以及用于将所述输出测试信息传递到所述目的地的装置。
10.根据权利要求9所述的系统,其中所述数据日志框架包括用于支持来自不同设备提供商的各个源的输入测试信息的源接口;用于表示数据日志源和目的地的类的类型接口;用于提供格式化能力的格式接口;用于将格式化的测试信息传递到不同目的地的流接口;以及用于根据对应的源、流、格式和目的地来管理数据日志事件的数据日志管理器。
11.根据权利要求9所述的系统,其中所述支持类包括用于存储头部、类型和事件信息的数据日志值类;用于将用户事件的名称和类型相组合的数据日志格式映射类;用于捆绑格式映射组的数据日志格式组类;用于支持用户定义的格式类的用户格式类;以及用于支持预定义格式类集的一般格式类。
12.根据权利要求9所述的系统,其中提供数据日志框架进一步包括用于创建一个或多个数据日志流的装置;用于创建一个或多个用户格式的装置;用于创建一个或多个数据日志格式映射的装置;用于创建一个或多个数据日志格式组的装置;以及用于将所述一个或多个数据日志流、用户格式、数据日志格式映射和数据日志格式组链接到对应的数据日志管理器的装置。
13.根据权利要求9所述的系统,其中所述数据日志框架独立于输入测试信息的源和内容。
14.根据权利要求9所述的系统,其中所述数据日志框架独立于输出测试信息的目的地和内容。
15.根据权利要求9所述的系统,其中所述输出测试信息的格式能够由用户配置。
16.根据权利要求9所述的系统,其中所述用于配置输出测试信息的装置包括用于创建数据日志值对象的装置,该数据日志值对象包括类型和事件信息;用于基于对应的目的地、数据日志框架和支持类来确定数据日志格式对象的装置;以及用于使用所述数据日志格式对象来格式化所述输出测试信息的装置。
全文摘要
公开了一种用于将测试信息从源传送到目的地的方法。该方法包括提供模块化测试系统,其中该模块化测试系统包括用于控制至少一个站点控制器的系统控制器,所述至少一个站点控制器用于控制至少一个测试模块。所述方法进一步包括提供用于支持用户定义的数据日志格式的扩展的数据日志框架;提供用于支持用户发起的数据日志事件的支持类;接收请求将输入测试信息从所述源传送到所述目的地的数据日志事件;基于所述目的地、数据日志框架和支持类来配置输出测试信息;以及将所述输出测试信息传递到所述目的地。
文档编号G01R31/319GK1981202SQ20058001595
公开日2007年6月13日 申请日期2005年5月23日 优先权日2004年5月22日
发明者马克·埃尔斯顿, 安康·普拉马尼克 申请人:株式会社爱德万测试
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1