CN1997908A - 用于对模块化测试***进行仿真的方法和*** - Google Patents
用于对模块化测试***进行仿真的方法和*** Download PDFInfo
- Publication number
- CN1997908A CN1997908A CN 200580016215 CN200580016215A CN1997908A CN 1997908 A CN1997908 A CN 1997908A CN 200580016215 CN200580016215 CN 200580016215 CN 200580016215 A CN200580016215 A CN 200580016215A CN 1997908 A CN1997908 A CN 1997908A
- Authority
- CN
- China
- Prior art keywords
- test system
- emulation
- dut
- modular test
- simulation
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Tests Of Electronic Circuits (AREA)
- Test And Diagnosis Of Digital Computers (AREA)
- Debugging And Monitoring (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
公开了一种用于对模块化测试***进行仿真的方法。所述方法包括:提供控制器,其中所述控制器控制至少一个供应商模块及其对应的被测器件(DUT)模型;创建仿真框架,以便在所述至少一个供应商模块及其对应的DUT模型之间建立标准接口;对所述仿真框架进行配置;以及利用所述仿真框架对所述模块化测试***进行仿真。
Description
相关申请的交叉引用
本申请要求Advantest公司2004年5月22日提交的题为“SoftwareDevelopment in an Open Architecture Test System”的临时申请No.60/573,577的权益,其全部内容通过引用合并于此。
技术领域
本发明涉及自动测试设备(ATE)领域。具体而言,本发明涉及用于对模块化测试***进行仿真的方法和***。
背景技术
对集成电路的寿命和功能进行测试的测试程序的开发和维护是半导体生产中的主要成本。这种活动通常需要在实际测试器硬件上工作多个小时。然而,除了对测试编程语言的语义进行检查之外,现有的半导体测试器只有很少或没有对测试程序进行仿真的能力。这种局限性迫使工程师在实际测试器硬件上对其测试程序进行调试。但是将测试器硬件用于测试程序的开发对于昂贵的测试设备来说并非一种划算的利用。此外,由于测试器通常由多组工程师共享,因此被分配来使用测试器的时间量是有限的,这造成了开发顺序进行的过程中测试程序开发的瓶颈。测试程序开发中的这种局限性可以延迟集成电路的生产,这将延迟产品的发布并丧失市场机遇。
因此,需要一种在不使用昂贵的测试设备的情况下对测试程序功能进行验证的方法和***。具体而言,需要一种对带有测试程序、供应商模块及其对应的被测器件(DUT)的模块化测试***进行仿真的方法和***。
本发明的一个目的在于减少用于测试程序开发的测试器硬件的使用量,从而优化对珍贵的测试器设备的利用。本发明的另一目的是在测试程序、模块和DUT在测试器设备上运行之前识别其中的问题。本发明的又一目的是提供一种用于对测试程序、模块和DUT的并行开发的环境,从而减少产品的总开发时间。
发明内容
所公开的用于对模块化测试***进行仿真的方法提供了可由最终用户来配置的仿真框架。该框架用于构建仿真环境,以加载供应商仿真模块和DUT模型,并通过仿真框架API来执行测试程序。通过安装供应商的软件模拟以及通过编辑***配置文件,该方法能够将新的供应商模块添加至现有装置。该方法还使工程师能够在其自己的工作站上开发测试程序,而尽量减少对昂贵的测试器设备的使用。
在一个实施例中,一种用于对模块化测试***进行仿真的方法包括:提供控制器,其中所述控制器对至少一个供应商模块及其对应的DUT模型进行控制;创建仿真框架,以便在所述至少一个供应商模块及其对应的DUT模型之间建立标准接口;配置所述仿真框架;以及利用所述仿真框架对所述模块化测试***进行仿真。
在另一实施例中,一种模块化测试***包括一个或多个供应商模块、一个或多个DUT模型、用于对所述供应商模块及其对应的DUT模型进行控制的控制器、以及用于在所述供应商模块和所述DUT模型之间建立标准接口的仿真框架。所述模块化测试***进一步包括用于对所述仿真框架进行配置的装置、以及利用所述仿真框架对所述模块化测试***进行仿真的装置。
附图说明
下文中,通过结合下列附图对本发明实施例的详细说明,将更清楚地理解本发明的上述特征和优点以及其附加特征和优点。
图1a示出根据本发明一个实施例的开放体系测试***。
图1b示出了本发明一个实施例的仿真***的概观。
图2示出了用于对模块化测试***进行仿真的仿真框架。
图3a示出了根据本发明一个实施例的用于处理仿真通道对象的仿真框架。
图3b示出了根据本发明一个实施例的阶梯、回转(slew)和模拟波形。
图4示出了根据本发明一个实施例的用于处理仿真部件的仿真框架。
图5示出了根据本发明一个实施的用于处理仿真事件对象的仿真框架。
图6示出根据本发明一个实施例的仿真模块和加载板模块之间的通道。
具体实施方式
提供了用于对模块化测试***进行仿真的方法和***。提供以下描述是为了使本领域技术人员能够利用本发明。对具体实施例和应用的描述仅仅是作为示例。对于本领域的技术人员来说,在此所述示例的各种修改和组合是显而易见的,并且在此所限定的一般原则也可应用于其它示例和应用,而不背离本发明的精神和范围。因此,本发明并不局限于所述和所示的各示例,而是应被给予与在此所公开的原则和特征一致的最宽的范围。
图1示出根据本发明一实施例的开放体系的测试***。***控制器(SysC)102耦合至多个站点控制器(SiteC)104。该***控制器亦可耦合至网络以便访问相关文件。每个站点控制器通过模块连接使能器106被耦合成控制位于测试站点110的一个或多个测试模块108。模块连接使能器106容许所连接的硬件模块108的重新配置,并亦用作数据传递的总线(用于加载模式数据、收集响应数据、提供控制等)。此外,通过所述模块连接使能器,一个站点处的模块可访问另一站点处的模块。模块连接使能器106容许测试站点具有相同或不同的模块配置。换言之,每个测试站点可采用不同数量和类型的模块。可能的硬件实施包括专用连接、开关连接、总线连接、环形连接和星形连接。模块连接使能器106可通过交换矩阵来实施。例如,每个测试站点110与通过加载板114连接至对应站点模块的DUT 112关联。在另一实施例中,可将单个站点控制器连接至多个DUT站点。
***控制器102用作总的***管理器。其协调站点控制器的行动、管理***级的并行测试策略、并且还提供处理机(handler)/探测控制以及***级的数据记录和误差处理支持。***控制器102是测试工程师对测试环境进行验证和调试的主要交互点。其提供到站点控制器104的网关,并对多DUT环境下的站点控制器行动的同步进行管理。其还运行用户应用和工具,如测试仿真模块。根据运行设置,***控制器102可在独立于站点控制器104的运行的CPU上应用。可选地,***控制器102和站点控制器104可共享公共CPU。同样,每个站点控制器104可在其自己的专用CPU(中央处理单元)上应用,或作为同一CPU内的独立进程或线程。
站点控制器104负责运行测试计划,以对DUT进行测试。测试计划通过利用框架类(Framework Class)以及封装了测试方法的标准或用户提供的测试类(Test Class)来创建特定的测试。此外,测试计划使用标准接口对硬件进行测试,并限定测试流程。
本发明的***体系在概念上可想像为图1中所示的分布***,同时应理解的是,各个***部件亦可视为集成单片式***的逻辑部件,而不必是分布式***的物理部件。利用硬件和软件级的标准接口来实现即插即用或可更换的模块。测试器操作***(TOS)容许用户使用测试计划编程语言来编写测试计划程序,并以特定于具体被测器件(DUT)的方式来操作测试***。其还容许用户将测试计划程序中共用的测试***操作序列打包为库。这些库有时称作测试类或测试模板。
图1b示出本发明一个实施例的仿真***的概观。该仿真***包括控制器模型121、一个或多个供应商仿真模块122(注意:术语供应商仿真模块亦称作供应商模块或仿真模块)、一个或多个被测器件(DUT)模型124以及加载板模型126。为了装配仿真环境,用户创建***配置文件和离线配置文件(二者将在下文中详述),这两个文件描述仿真模块、加载板模型和DUT模型如何通过仿真框架来连接。仿真的执行是对通过测试程序加载入模块模型中的模式进行的。
仿真框架提供加载板模型126、一个或多个测试器通道128及一个或多个DUT通道130。各模块是从供应商的动态链接库(DLL)中加载的。每个块代表模块的单个实例。可多次加载一个DLL,来创建同一模块类型的多个实例。如果模型是以C++编写的,DUT模型124可提供为DLL,或者,DUT模型124可提供为Verilog方式。
可由用户来配置加载板模型126。用户将测试器通道128映射到对应的DUT通道130,并规定与每个连接关联的传输延迟。所有的连接均为双向的,因此,不需要特殊考虑将连接器指定为输出驱动器或输入选通。
仿真框架
测试***仿真的主要部件是仿真框架,所述仿真框架亦称作框架。框架提供两个基本服务。首先,其容许在正常测试器运行中通过***总线以基本上相同的方式对每个供应商模块编程。通过对总线调用进行仿真,测试程序可写入仿真的模块寄存器,由此设定测试。另一服务是对测试执行的仿真。框架提供用于仿真的模块和DUT模型间物理连接的模型。框架还提供用于维持各仿真部件执行序列的引擎。
当测试***处于仿真方式(离线方式)中时,其以通过共享存储器与框架通信的软件模块来替代与测试器模块硬件通信的器件驱动器。在实际测试器中,总线一般使用将二进制模式发送到供应商硬件模块中的可寻址寄存器的命令。在仿真中,同一命令由框架来接收并解释,以指向具体的仿真模块。然后,框架将寄存器地址和数据发送到该模块,以使其将数据保存在其仿真寄存器中。由于测试程序加载最终分解到这些地址/数据对的基本单元中,该简单模型支持测试程序与各模块的所有交互。该进程的副产品是也支持校准和诊断程序开发的仿真。
由于在线与离线方式之间运行时软件的唯一差别在于***总线器件驱动器,因此,在线环境中测试程序的行为与其在离线环境中的对应行为之间存在高度相关性。因而,就用户的测试程序和底层的测试器操作***(TOS)来说,仿真是准确的。
框架还提供了测试器模块和DUT间物理连接的详细模型。所有连接被模型化为接线上的电压,由此再现了基本的物理关系。由于没有关于模块/DUT交互中数据格式的假定,因此框架与仿真模块和DUT模型的任何组合一起工作,只要其使用该框架所建立的应用编程接口(API)。框架提供当两个电源同时在同一接线上驱动时电压的自动协调(reconciliation)。
为了控制测试程序执行过程中的仿真,框架在其API中提供了各种方法,以容许供应商模块登记(register for)和接收事件。框架使用这些事件来控制仿真模块和DUT模型的执行序列。通过管理这些事件,并通过规定模块如何处理事件的基本规则,可使用于创建模块仿真的灵活模板对模块化测试***的用户变得可用。
图2示出了用于对模块化测试***进行仿真的仿真框架。该仿真框架包括仿真管理器(SimMgr)类202、仿真通道(SimChannel)类204、仿真部件(SimComponent)类206和仿真事件管理器(SimEventMgr)类208。SimMgr类202管理仿真进程。SimComponent 206是供应商使用的基类。在该类中,实施某些需要的行为。很多方法是虚拟的(C++语言)并需要供应商实施。从SimComponent类206继承的CAnalogModule类210用于添加所需的供应商特定的函数。
CAnalogModule类210包括一组SimChannel派生的对象,称作CSimAWG对象212和CsimDigitizer对象214。这些对象代表***资源(控制结构中的IResource派生类),这里CSimAWG对象是对D/A通道(来自数字命令的模拟输出)建模的模拟波形发生器,而CsimDigitizer对象对对应的D/A通道(来自模拟信号的数字输出)建模。IResource派生类需求被合并到这些实施类中,而这些实施类使用***提供的应用程序来产生或读取波形。SimEventMgr类208还包括仿真事件对象216。下面详细描述仿真体系每个部件。
仿真框架将一组预定接口和设计约束强加于仿真模块和DUT模型开发者。这保证了满足仿真框架需求的模型与仿真中的其它部件兼容。该仿真框架分成三部分,第一部分用于对仿真模块和DUT模型共用的API,第二部分对模块模型是特定的,而第三部分对DUT模型是特定的。在一实施中,供应商仿真模块被视为基于事件的模型,而DUT模型被视为基于时间的模型。在其它实施例中,仿真模块和DUT模型二者可以是基于事件的模型,亦可以是基于时间的模型。
仿真通道
图3a示出了根据本发明一实施例的用于处理仿真通道对象的仿真框架。该仿真框架包括模块类302、DUT类304和仿真通道(SimChannel)类306。SimChannel类306包括仿真波形迭代器(SimWaveformIter)类308,而模块类302包括仿真通道标识(SimChanID)类310。
在模式执行过程中,SimChannel类306分别通过模块类302和DUT类304为仿真模块和DUT模型提供I/O能力。为了使用该类,为每个模块通道或DUT引脚构建一个空的通道对象。基于仿真配置文件(描述见下文)中的设置,这些通道通过仿真框架与加载板上的对应通道相连。仿真框架通过getChannel()方法来获取SimChannel对象的基准。所述getChannel()方法用于进行加载板连接。
对所述模块和DUT模型共同的元素是对各通道的I/O调用。通过设定特定时间的电压电平来完成模块和DUT之间的所有I/O调用。这通过来自SimChannel类306的set()方法来提供。该方法容许调用例程通过将条目写入与SimChannel类306相连的输出缓冲器中来规定特定时间的电压。
在一个实施例中,set()方法将点写入电压时间历史中。波形的形状取决于通道如何配置。图3b示出了根据本发明一实施例的阶梯、回转和模拟波形。在阶梯通道中,电压转换是瞬时的,这样t1和t2之间的任何读取均返回电压v1。在回转通道中,电压从其当前状态转换到所命令的状态需要有限量的时间。转换的斜率由***配置文件的回转部分中的slewRate参数来确定。最后,在模拟通道中,电压不会变得平坦。时间点间的电压通过分段的(piece-wise)线性内插来计算。如果读取是在最后的点之后进行的,则该值根据最后两点来外推;因此,如果在针对t2设置的调用后没有添加点,则虚线表示从通道读取的电压。
off()方法主要用于关断对电压的驱动。这在两个部件同时写一个通道的相对侧时发生。如果一侧调用set()方法,则电压被视为被驱动。如果另一侧调用off()方法,则电压被视为无效(passive)。在这种情况下,驱动电压占优势,并且在两侧上的电压分解后,从每个通道读取的电压是以set()命令输入的电压。如果两侧均调用set()方法或两侧均调用off()方法,则电压历史被设置为平均电压值。
end()方法调用向仿真框架指示通道已准备进行分解,并且因此准备好由通道另一侧的部件读取。如果在通道上未调用end()方法,则该通道上的信号不可传播通过仿真的其余部分,因为未给通道对侧上的部件发信号从该通道读取。用户一般进行几次set调用来规定一时间范围内的电压,然后在该时间范围结束时调用一次end()方法。
SimWaveformIter类308标识波形转换。用户通过调用SimChannel类308中的getWaveformIter()方法来获得波形迭代器的实例。该方法需要用户来规定高电压和低电压以及起始和停止时间。通过使用该数据,getWaveformIter()方法返回SimWaveformIter类308的实例。getWaveformIter()方法还容许用户逐步通过波形的所有边沿转换。对于每个转换,其返回转换的时间以及转换随后的波形状态。该状态被规定为枚举类型State_t。该类型的可能值是H(高)、L(低)和Z(三态)。
在本发明的一个实施中,getWaveformIter()方法的一个示例如下所示:
void findHighs(SimChannel&sc,const Voltage&vhi,const Voltage&vlo,
const Tine&t_start,const Time&t_end)
{
Sim Waveformlter iter=sc.getWaveformIter();
for(;!iter.end();iter.next())
{
if(iter.getState()==Sim WaveformIter::H)
{
cout<<″waveform goes high at″<<iter.getTime().getValue()
<<endl;
}
}
}
SimWaveformIter类308包括下列方法:
●start():将迭代器设置为第一转换。
●end():end()方法检查迭代器是否在边沿序列的结束。注意如果该方法返回真(true),则getTime和getState的结果是未定义的。
●next():next()方法将迭代移到下一个转换。
● getTime():getTime()方法返回当前转换的时间。
●getState():getState()方法获取当前边沿的状态。该边沿适用于边沿时间后的基本波形的状态。
在另一实施例中,SimChannel类306提供读取规定时间的通道电压的能力。这通过read()方法使用单个的时间变元来完成。read()返回的值从包含时间相对电压信息的表中存储的 数据被内插。内插方法基于仿真配置文件中定义的通道配置。如果通道被配置成阶梯通道,则使用方波模型。如果通道被配置为回转通道,则使用回转模型来内插有限时间内发生的电压转换。如果通道是模拟通道,则使用分段线性内插来计算电压。
另外,用户负责管理通道中的数据。这通过flush()方法来完成。该方法在清理(clean-up)阶段对通道进行登记,其指示在flush变元规定的时间之前不能发生读取。当调用flush()方法时,在下一清理循环期间,从通道中去除规定时间之前的所有记录。对于长模式,flush()方法被周期性地调用,在这种模式中,存储器的局限可阻止仿真的完成。
在另一实施例中,为了写通道,用于规定输出电压的主要方法是set()方法,其中用户规定时间和相关电压作为参数。该方法为通道的时间历史提供输入。如果驱动被关断,则可使用off()方法。这指示如果信号是从接口的另一侧驱动的,其指示通道上的电压。off()方法主要用于执行驱动和选通操作二者的双向通道。
用户可指示已输入到通道中的该组值已准备好传输到接口的另一侧。这通过过载的end()方法来完成。end()方法向仿真框架指示通道上的值已准备好读取,直到并包括end()调用中规定的时间。注意,没有变元的end()方法在set()或off()调用中默认为最大时间。end()方法被调用,以使set()方法生效。如果end()方法未被调用,则没有数据被传递到通道的另一端。
在一个实施例中,共用的API类如下被使用:
//create some channels in constructor
SimChannel MyStepChannel;
SimChannel MySlewChannel;
SimChanmel MyAnalogChannel;
...
//channel registration
SimChannel*getChannel(const SimChanID&chan)
{
if(chan.getIndex()==MY_STEP_CHANNEL_INDEX)
{
return&MyStepChannel;
}
else if(chant.getIndex()==MY_SLEW_CHANNEL_INDEX)
{
return&MySlewChannel;
}
else if(chan.getlndex()==MY_ANALOG_CHANNEL_INDEX)
{
return&MyAnalogChannel;
}
…
}
//running a pattern
void handleEvent(const SimEvent&event,const Time&t)
{
if(event.is WriteEvent())
{
…
//set some output voltages on the step channel
MyStepChannel.set(t0,hi_level);
MyStepChannel.set(t2,lo_level);
MyStepChannel.end(t4);
//set some output voltages on the slew channel
MySlewChannel.set(t0,hi_level);
MySlewChannel.set(t2,lo_level);
MySlewChannel.end(t4);
//set some output voltages on the analog channel
MyAnalogChannel.set(t0,lo_level);
MyAnalogChannel.set(t1,hi_level);
MyAnalogChannel.set(t2,hi_level);
MyAnalogChannel.set(t3,lo_level);
MyAnalogChannel.set(t4,lo_level);
...
}
else if(event.isReadEvent())
{
…
//now strobe the step channel
Voltage strobe_value=MyStepChannel.read(t5);
MyStepChannel.flush(t5);//done reading
…
}
...
}
注意,对于模拟信号,波形的所有角均需要加以规定,而在阶梯和回转波形中,仅需规定转换。
getWaveformIter()方法容许调用者返回从窗口选通中可用的状态。其采用高输入电压、低输入电压和时间窗作为自变量,并返回含有过电压时间的对象。
SimChanID类310封装通道索引。在测试***中,有两组通道索引,一组用于测试器通道空间,而另一组用于DUT通道空间。SimChanID类对描述每一空间中的索引的20比特字进行封装。最高有效比特指示该通道索引是用于测试器通道空间还是DUT通道空间。下一比特是指示所有通道是否全部被使用的标志。后面的7比特是分别用于测试器模块或DUT的端口或DUT索引。最低有效的12比特用于局部索引值(4K通道)。
SimChanID类310包括下列方法:
●SimChanID():如果设置了所有通道比特,该SimChanID()方法返回真(true)。
●getIndex():getIndex()返回局部通道空间的索引。isTestChannel和isDUTChannel方法分别指示索引是用于测试器还是DUT通道。如果all()方法返回真,则该方法的结果未定义。
●getPort():getPort()返回给定通道ID的端口。端口和索引的组合唯一地标识加载板一侧上的所有通道。
●isDUTChannel():如果通道处于DUT通道空间中,则isDUTChannel()方法返回真。
●isTesterChannel():如果通道处于测试器通道空间中,则isTesterChannel()返回真。
仿真部件
图4示出了根据本发明一实施例处理仿真部件的仿真框架。该仿真框架包括仿真部件基(SimComponentBase)类401。SimComponent类402和SimComponentStepped类406是从SimComponentBase类中派生的。供应商仿真模块(Module)类404是从SimComponent类中派生的。在SimComponent类402中开发虚拟函数,以定义模块的行为。同样,DUT类408是从SimComponentStepped类406中派生的。SimComponentBase类401是共用的基类,包括SimComponent 402和SimComponentStepped406类二者共享的方法。
Module类404调用handleEvent()方法来处理仿真事件对象。handleEvent()方法与registerEvent()和Simcomponent类的raiseEvent()所提供的一些服务结合使用。registerEvent()方法容许模块利用仿真框架来登记事件。事件可以与单个通道、一组通道或整个模块关联。事件亦可与特定时间一起登记,在这种情况下,调用者将事件标识为读或写事件。如果事件是写事件,则仿真一到达登记时间,即调用针对模块的handleEvent()回调用(callback)。如果事件是读事件,则仅在事件关联的所有通道被分解并准备好读取之后才调用handleEvent()回调用(callback)。
当响应于具有关联时间的事件(即同步事件)来进行handleEvent()调用时,模块需要遵循仿真框架中所定义的API提出的规则,以便仿真正确工作。
●对于写事件,模块可仅设置写事件时间之后的时间的电压值。
●对于读事件,模块可仅读取读事件时间之前的时间的电压值。
事件亦可不与时间一起登记(即异步事件)。这些事件由其它模块或由仿真框架来发起。这些事件支持两个函数。第一函数用于处理***中的某些已知事件,如中断。第二函数用于处理模块间的通信。异步事件容许一个模块通知另一模块已出现了特定组的条件。一个示例为同步模块在循环的开始处通知数字引脚模块,使得数字引脚模块输出与当前循环关联的边沿。
对于待载入框架中的供应商模块,供应商优选地从其DLL中导出一些预定的函数,该DLL支持用于维持仿真模块模型的对象的创建和销毁。该标准化的接口隐藏了加载每个模型的细节。
仿真模型是从可访问仿真框架的SimComponent类中派生的,为了定义所述模型,用户实施SimComponent类中规定的虚拟函数。模块的虚拟函数分成两个类别:
●派生类需要提供的虚拟方法;以及
●具有用户可重新定义的默认实施的基本函数。
除了这些函数,该类还为用于事件管理的派生类提供服务。
通过从仿真框架的SimComponentStepped类406中派生来实施DUT模型。开发者实施SimComponentStepped类406中的虚拟函数来限定模块的特性。例如,run()方法调用DUT模型以在规定的时间窗上运行。由于接口的简单性,在如何对DUT建模上,给予了模型设计者很大的余地。用于C/C++模型的公共接口或连接至服务器运行的Verilog模型的DLL也支持这种余地。如何实现DUT模型的细节与仿真的其它部分隔离,这容许这种模型可互换地使用。为了提供仿真框架中的DUT模型,SimComponentStepped类包括下列虚拟方法:
●run():用户通过规定的时间窗来运行DUT模型。相继的run()调用可从上一run()调用结束时开始。
●handleISVM():该方法返回针对规定通道的来自参数测量单元(PMU)的测量值。注意,在测试处于暂停状态时或在测试之间,使用PMU来进行通道上的静态DC测量。
●handleVSIM():该方法返回针对规定通道的PMU测量值。
●handleVSVM():该方法返回针对规定通道的PMU测量值。
为了将DUT模型加载入仿真框架中,DLL导出支持对DUT模型进行维护的对象的创建和销毁的一组预定函数。该标准化接口隐藏了加载每个模型的细节。
仿真事件管理器
图5示出了根据本发明一实施例的用于处理仿真事件对象的仿真框架。该仿真框架包括模块类502、仿真事件管理器(SimEventMgr)类504和仿真事件(SimEvent)类506。
SimEventMgr类504产生SimEvent类506的实例。SimEventMgr类504用于维护供应商索引。该索引唯一地标识事件族。通常,事件族与供应商关联,该供应商具有指定的供应商ID串。该类还容许用户创建另一事件族,使得两组或多组模块可共享单独事件空间中的事件。
在一个实施例中,为了针对特定供应商索引来创建SimEventMgr对象,使用了下列构造器:
SimEventMgr(const OFCString&,SimChanID::ChannelSpace_t)
串变元规定事件族。通道空间类型指示事件通道是否测试器通道(SimChanID::TESTER_SPACE)或DUT通道(SimChanID::DUT_SPACE)。例如,如果用户希望创建用于“ADCANTEST”测试器模块的事件,则调用下列方法:
SimEventMgr emgr(_T(″ADVANTEST″),SimChanID::TESTER_SPACE);
模块开发者为模块所属的每个域来创建SimEventMgr实例。这些对象用于模块存在的持续时间中。例如,进行下列一组调用来生成用于各域的事件:
SimEventMgr m_advmgr(_T(″ADVANTEST″),SimChanID::TESTER_SPACE);
SimEventMgr m_msomgr(_T(″MSO_CONSORTIUM″),
SimChanID::TESTER_SPACE);
SimEventMgr m_pwrmgr(_T(″POWER_GROUP″),SimChanID::TESTER_SPACE);
在仿真过程中,这些对象每个可生成针对每个域的事件。以这种方式,不同供应商所创建的模块可通过对其共享的域的唯一名称达成一致来共享事件。在DUT模型需要登记事件的情况下,使用clientmgr()方法。注意,由于两个通道属于不同的索引空间,在DUT空间和测试器空间之间进行了区分。
SimEventMgr clientmgr(″CLIENT″,SimChanID::DUT_SPACE);
使用各种方法来创建事件。用于创建同步事件的方法包括:
● SimEvent MakeReadEvent(SimEvent::LocalCode_t):该方法为模块中的所有通道创建读事件。
●SimEvent MakeReadEvent(SimChanID::Index_t,SimEvent::LocalCode_t):该方法为单个通道创建读事件。
●SimEvent MakeReadDomainEvent(SimEvent::Domain_t,SimEvent::LocalCode_t):该方法为特定域创建异步事件。
●SimEvent MakeWriteEvent(SimEvent::LocalCode_t):该方法为模块中的所有通道创建写事件。
●SimEvent MakeWriteEvent(SimChanID::Index_t,SimEvent::LocalCode_t):该方法为单个通道创建写事件。
●SimEvent MakeWriteDomainEvent(SimEvent::Domain_t,SimEvent::LocalCode_t):该方法为单个特定创建写事件。
所述函数不利用通道索引作为参数来为所有通道创建事件。所述函数利用用户规定的通道索引和局部代码作为参数来生成特定通道的SimEvent。利用域作为的函数用于已被系于特定域的一组通道。
用于创建异步事件的方法包括:
●makeAsyncEvent():该方法用于创建异步的基于序列号的事件。
●makeDomainEvent():该方法用于为特定通道创建异步的基于域的事件。
●makeSysEvent():该方法用于创建***事件。
●isMyEvent():该方法检查事件的域。当给定事件属于与事件管理器相同的域时,其返回真。
在一个实施例中,如果生成上述构造器示例中的三个事件管理器的模块开发者需要确定事件属于哪个域,则使用下列方法。
if(m_advmgr.isMyEvent(event))
{
//an ADVANTEST event
}
else if(m_msomgr.isMyEvent(event))
{
//an MSO event
}
else if(m_pwrmgr.isMyEvent(event))
{
//a power event
}
SimEvent类506包括下列方法。
●isChannelEvent():该方法检查事件是否针对单个通道。如果事件是基于通道的事件,该方法返回真。
●isDomainEvent():该方法检查事件是否针对域。如果事件是基于域的事件,该方法返回真。
●isReadEvent():该方法检查对象是否读事件。如果事件是读事件,该方法返回真。
●isSerialNumberEvent():该方法检查事件是否针对特定的序列号。如果事件是针对特定序列号的,该方法返回真。
●isSysEvent():该方法检查对象是否***事件。如果事件是***事件,该方法返回真。
●isWriteEvent():该方法检查对象是否写事件。如果事件是写事件,该方法返回真。
●getChan():该方法获取SimChanID对象。
●getCode():该方法获取局部用户代码。
●getDomain():该方法获取域,其返回事件的域索引。
●getSerialNumber():该方法获取序列号
●getSysCode():该方法获取***事件代码。
●numArgs():该方法返回用户自变量号。
●popArg():该方法访问队列中的下一用户变元。注意变元是以添加其的相同次序来取回的。一旦已经取回了变元,其即不再可以从事件获得了。调用popArg的次数多于numArgs()将导致抛出异常。
●pushArg():该方法添加用户变元。
配置文件
仿真框架使用两个配置文件:仿真配置文件和离线配置文件。仿真配置文件规定什么测试器模块在仿真过程中是可用的。离线配置文件规定加载什么DUT模型及其如何连接到测试器。
当函数SimTester初始启动,加载仿真配置文件。该文件中的设置在SimTester进程的生命过程中保持有效。离线配置文件作为用户测试计划的一部分来加载。该文件的名称以测试程序语言(TPL)命令OfflineDef来规定。该命令可出现在用户测试程序的任何地方,但是传统上,与其它高级命令一起置于testplan.tpl文件中。
如下给出了在一个实施例中的仿真配置文件。如下所示,文件被分成有层次的块。全局块含有全***范围的参数。EMUModule块指明含有仿真器模型并规定加载模型的端口的DLL。EMUModule块包含用于仿真框架的模块接口。
#T2000 System Software version of the configuration
Version 0.0.1;
Global
{
Initvoltage 0.5 v; # Required. Initial voltage on all
# wires.
RecoveryRate 2.5 v/nS; # Optional. For drive conflict in
# analog signals.
}
# Module Emulator.
EMUModule″module1″# Module DLL.
{
Wavefom # Optional. Resource declaration.
{
Step 1-32,35; # Step type waveforms on channels 1 thru 32
# channel 35.
Analog 33,34; # Analog wavefom on channels 33 and 34.
}
Port 1 # Declares the GBUS Port for this module.
{
SerialNumber 1; # Required. Should match setting in Module
# Configuration File.
productRevision 1;# Required. Should match setting in Module
# Configuration File.
Params # To be passed to DLL.
{
test ″param1″;
key ″abc″;
}
}
Port 8
{
LogicalPort 3; # Optional. Designate Logical Port to use in
# offline configuration file. Default is the
# GBUS port.
SerialNumber 2;
ProductRevision 1;
Parama # Tobe passed to DLL.
{
test ″param1″;
key ″abc″;
}
}
}
# Module Emulator
EMUModule″module2″
{
Waveform
{
Step 1-32;
}
Port 2
{
SerialNumber 1;
ProductReviaion 1;
}
}
# Module Emulator
EMUModule″dps″
{
Wave form
{
Slew 1-32 @ 2.0 v/ns;# The slew rate is required for all slewing
# waveforms.
}
Port 4
{
SerialNumber 1 ;
ProductRevision 1;
}
}
用户可提供离线配置文件,来指定将在仿真中使用的DUT模型,并示出这些模型如何附着于测试器资源。如下示出了在一个实施例中的范例离线配置文件。注意,除了PinConnection块以外,该文件的结构与仿真配置文件相似。全局块描述全***范围的设置。DUTModel块描述含有DUT模型并规定加载DUT模型的端口的DLL。PinConnection块指示每个引脚如何连接到测试器。
# T2000 Version of the syntax
Versoin 0.0.1;
Global
{
RegSelect″patTraceSel″;# Pattern Tracing - Name of OASIS Simulated
# Register Selection File.
}
DUTModel″DUTlsim″
{
Wavefom
{
Step 1-32;
}
DUT 1
{
Params
{
param1Name ″param1Value″;
param2Name ″param2Value″;
}
PinConnections
{
L3.1 1 1.0 nS;
L3.2 8 1.0 nS;
L3.3 2 1.0 nS;
L3.4 7 1.0 nS;
L3.5 3 1.0 nS;
L3.6 6 1.0 nS;
L3.7 4 1.0 nS;
L3.8 5 1.0 nS;
L3.9 9 1.0 nS;
L3.10 16 1.0 nS;
L3.11 10 1.0 nS;
L3.12 15 1.0 nS;
L3.13 11 1.0 nS;
L3.14 14 1.0 nS;
L3.15 12 1.0 nS;
L3.16 13 1.0 nS;
}
}
}
DUTModel ″DUT2Sim″
{
Waveform
{
Slew 1-16 @ 2.0 v/nS;
}
DUT 2
{
Params
{
param1Name ″param1Value″;
param2Name ″param2Value″;
}
PinConnections
{
L2.1 1; # no delay specified means a delay of 0
L2.2 2;
L2.3 3;
L2.4 4;
L2.12 5;
L2.13 6;
L2.14 7;
L2.15 8;
}
}
}
框架配置
如上所述,需要模块供应商来提供其硬件模块的仿真。由于这种需求,获得供应商模块的用户也就获得了该部件的仿真模块。该仿真模块是DLL的形式,该DLL具有使仿真框架可加载所述模块的接口。这通过置于供应商DLL上的一组预定接口需求来规定。为了将仿真模块加载到仿真框架,由用户来提供仿真配置文件,或由测试***产生仿真配置文件。仿真配置文件列举要加载的每个DLL。除了命名DLL,仿真配置文件还规定与待仿真的测试***硬件设置一致的参数。这包括模块端口号、模块序列号、通道号、每个通道上波形的格式以及在整个仿真过程中所用的基准电压等。仿真配置文件包括作为仿真的产物的其它参数。这些包括用于将通道从模块附着于DUT引脚的逻辑基准以及当加载模块时传递给DLL的具体参数。
在一个实施例中,仿真管理器执行以下功能来对仿真进行配置:
●如仿真配置文件所指示的加载所有部件;
●在各站点之间分配所述部件和资源;以及
●提供中央对象,用于管理所有线程上的模式执行。
此外,仿真管理器还使用仿真配置文件来执行以下功能:
●给出所有部件和接口对象的实例;
●如配置文件所规定得连接所有部件;以及
●提供从部件通道到接口对象的映射。
注意,为了保证只有一个SimMgr实例,可创建SimMgr的公共方法只有create()方法。使用匹配release()方法在仿真后清理资源。create()方法基于变元列表中规定的仿真配置文件来创建仿真。使用路径变元来规定仿真配置文件内部所引用的其它文本文件的基路径。这些文件被规定为相对于所述基路径的路径。
一旦已经配置了仿真框架,则等待对测试程序和目标DUT模型的规定。在加载测试程序之前,TOS通知仿真框架已经规定了一个或多个DUT模型。这通过称作离线配置文件的另一配置文件来完成。DUT模型是满足一组预定接口需求的以C/C++编写的最终用户提供的DLL的形式,或者作为等待来自仿真的连接的服务器上运行的Verilog模型。离线配置文件规定待加载的一个或多个DUT模型。此外,该文件还规定与DUT的硬件设置一致的参数。这包括波形的通道和格式、逻辑测试器通道到DUT引脚的接线以及与接线关联的传输延迟。离线配置文件还包括作为仿真产物的其它参数。这些包括加载DUT模型时传递给DLL的具体参数。为了访问Verilog DUT模型,框架提供了特殊的DUT模型DLL。该模型可配置成连接至特定的服务器,在服务器上,运行特定Verilog模型的程序正在运行。
在一个实施例中,仿真框架的初始化包括以下过程:
1.加载模块DLL,并基于仿真配置文件在存储器中给出模块仿真对象的实例;
2.等待由用户提供离线配置文件(其描述待加载的DUT模型及其如何连接至模块);
3.使用两个配置文件来构建仿真如下:
a.使用经由总线仿真编程至***中的站点信息来指定模块和DUT给各站点;
b.将模块连接至该站点专用的仿真框架中的加载板模型;
c.将每个站点中的DUT模型连接至加载板模型的对应站点。
4.当卸载测试计划时,卸载步骤3中创建的结构,并等待另一离线配置文件。
框架按照每站点来分割仿真,以实现多线程的仿真。各站点可被并行仿真。这样,根据预定仿真站点来分割仿真使其关于彼此是线程安全的,并避免了对可影响性能的任何锁定机制的需要。
在加载配置数据时,通过经由加载板来构造模块中每个通道到仿真框架中对象的连接,仿真框架开始构建仿真。图6示出了根据本发明一实施例的仿真模块和加载板模型之间的通道。通道包括仿真模块602、双向接口模型604和加载板模型606。仿真模块602包含I/O端口SimChannel A603,而类似地,加载板模型包含I/O端口SimChannel B 607。在双向接口604内有两个缓冲器,一个SimWaveform A2B缓冲器608,用于将数据从仿真模块602传递至加载板模型606,一个SimWaveform B2A缓冲器610,用于将数据从加载板模型606传递至仿真模块602。如图6中所示,仿真模块602写入SimWaveform A2B缓冲器,并从SimWaveform B2A缓冲器610读取。另一方面,加载板模型606写入SimWaveform B2A缓冲器610,而从SimWaveform A2B缓冲器608读取。
SimWaveform A2B和SimWaveform B2A缓冲器的每个包含用于存储有关通道的信息的表。具体而言,所述缓冲器存储在任意时间点从通道对象中读取的电压。利用以上图3b中所述的几个标准模型之一,在表条目时间之间读取的通道的电压值被内插。与特定通道一起使用的模型的选择是用户可配置的。通过使SimWaveform成为其它波形类的基类来完成交换模型。SimWaveform具有虚拟函数read(),该函数返回给定时间的电压。每个派生类根据被建模的波形(如,SimWaveformStep对方波建模)来实施read()。使用模拟技术来对窗口选通建模。
如图6所示,DUT模型612耦合至加载板。该连接通过使用仿真框架的SimWire类的实例来完成。SimWire类可访问双向接口对象中的缓冲器。SimWire类解决DUT和模块之间的驱动冲突。注意,图6中的加载板606和DUT模型612之间的连接是仿真模块602和加载板606之间连接的镜像。该连接的细节未在图中示出,以便更清楚地示出模块和加载板之间的连接。
在构造了仿真之后,则加载测试程序。这涉及对***总线设备驱动器的调用。在离线方式中,访问硬件的设备驱动器被转向至共享的存储器I/O,从而容许站点控制器进程与仿真框架进程通信。由于两个仿真设置的唯一不同的部件是设备驱动器,因此在线和离线测试仿真的特性之间具有高度相关性。
框架执行
在测试计划执行过程中,有两种类型的仿真运行。第一是基于事件的仿真。被仿真的部件通常为仿真模块。这些部件在本质上是基于事件的,因为其特性由测试程序在仿真开始前规定。另一类型的仿真是基于时间的仿真。被仿真的部件通常是DUT模型。这些部件在本质上是基于时间的,因为其状态基于外部激励和当前内部状态前向传播。仿真框架协调基于事件和基于时间的仿真之间的执行和数据传递。
基于事件的仿真使用登记和处理进程。一般为仿真模块的仿真部件需要为每个仿真事件登记。在登记后,当测试事件的条件发生时,调用部件事件处理机的回调用,从而容许执行适当的仿真过程。
基于时间的仿真依赖于基于事件的部件的输出。仿真框架计算用于俘获针对馈送基于时间的部件的所有通道、由基于事件的部件所产生的激励的时间窗。基于时间的部件然后利用所计算的时间窗来调用。从基于事件的部件发送到基于时间的部件的数据需要是稳定的。通过使基于事件的部件在写入其输出通道时满足一组预定的时序需求,来加强该稳定性准则。
仿真框架提供仿真模块和DUT模型之间驱动冲突的自动解决。驱动冲突一般是由测试程序中的定时误差引起的。在其发生于实际硬件上之前就识别这些误差是至关重要的,因为这样做可避免对DUT和测试设备的损坏。加载板模型中的SimWire对象解决驱动冲突。在SimWire两侧的部件接收了其输入后,仿真框架调用SimWire对象来分解来自两侧的信号。如果只有一个通道具有驱动输入,则将其拷贝到其它通道,其中施加适当的传输延迟。如果SimWire对象的多侧具有接收的驱动输入,则设置输出缓冲器中的电压以反映该冲突。一旦设置了输出缓冲器,则调用已经登记从其读取的模块。然后,访问分解了的电压。由于电压分解封装在SimWire对象中,因此该过程对仿真的其余部分是透明的。
所公开的用于对模块化测试***进行仿真的方法具有多个有益效果。第一,通过提供对测试程序的准确和详细的仿真,所公开的方法使得工程师能够在其自己的工作站上开发测试程序,而不是在昂贵的测试器设备上。第二,所公开的方法在测试程序、仿真模块和DUT模型在测试设备上运行前即识别出其中的问题,从而允许这样的问题早些得以解决。第三,所公开的方法支持并行开发模型,可实现较短的测试程序开发周期,并较快地将DUT投入市场。
相关领域的技术人员将认识到,在依然采用相同的基本基础机制和方法的情况下,可使用所公开实施例的很多可能的修改和组合。前述描述是关于特定实施例所撰写的,是为了解释的目的。但是,上述说明性的讨论并非意欲穷尽本发明,或将本发明限制于所公开的精确形式。就上述教示来说,很多修改和变化都是可能的。选择和描述上述实施例是为了解释本发明及其实际应用的原理,并使本领域技术人员更好地利用本发明以及具有适于可预期的具体应用的各种修改的各种实施例。
Claims (38)
1.一种用于对模块化测试***进行仿真的方法,包括:
提供控制器,其中所述控制器控制至少一个供应商模块及其对应的被测器件(DUT)模型;
创建仿真框架,以便在所述至少一个供应商模块及其对应的DUT模型之间建立标准接口;
对所述仿真框架进行配置;以及
利用所述仿真框架对所述模块化测试***进行仿真。
2.根据权利要求1所述的方法,其中创建仿真框架包括:
创建供应商模块接口,用于处理所述供应商模块与所述模块化测试***之间的通信;以及
创建DUT模型接口,用于处理DUT模型与所述供应商模块之间的通信。
3.根据权利要求2所述的方法,其中创建所述供应商模块接口包括:
根据第一组预定标准接口来实施所述供应商模块;以及
实施用于对所述供应商模块的特性建模的虚拟函数。
4.根据权利要求2所述的方法,其中创建所述DUT模型接口包括:
根据第二组预定标准接口来实施所述DUT模型;以及
实施用于对所述DUT模型的特性建模的虚拟函数。
5.根据权利要求2所述的方法,其中创建仿真框架进一步包括:
提供用于设置所述供应商模块和所述DUT模型的输出通道处的动态电压电平的共用接口。
6.根据权利要求1所述的方法,其中对所述仿真框架进行配置包括:
生成仿真配置文件(SCF);以及
将所述仿真配置文件加载至所述模块化测试***。
7.根据权利要求6所述的方法,其中所述仿真配置文件包括:
一个或多个供应商模块DLL;
所述模块化测试***的硬件设置;以及
仿真参数。
8.根据权利要求6所述的方法,其中对所述仿真框架进行配置包括:
生成离线配置文件;以及
将所述离线配置文件加载至所述模块化测试***。
9.根据权利要求8所述的方法,其中所述离线配置文件包括:
一个或多个DUT模型DLL;
所述DUT的硬件设置;以及
离线仿真参数。
10.根据权利要求8所述的方法,其中对所述仿真框架进行配置进一步包括:
加载供应商模块DLL;
接收所述离线配置文件;以及
根据所述仿真配置文件和所述离线配置文件来构建仿真结构。
11.根据权利要求1所述的方法,其中对所述模块化测试***进行仿真包括:
执行所述供应商模块的基于事件的仿真;
执行所述DUT模型的基于时间的仿真;以及
在所述基于事件的仿真和所述基于时间的仿真之间传递仿真数据。
12.根据权利要求11所述的方法,其中传递仿真数据包括:在仿真过程中自动解决供应商模块和所述DUT模型之间的驱动冲突。
13.根据权利要求1所述的方法,其中对所述模块化测试***进行仿真包括对多个DUT模型进行并行测试。
14.根据权利要求1所述的方法,其中对所述模块化测试***进行仿真包括:将一个或多个供应商模块添加至所述模块化测试***,而不修改所述仿真框架。
15.根据权利要求1所述的方法,其中对所述模块化测试***进行仿真包括:从所述模块化测试***中去除一个或多个供应商模块,而不修改所述仿真框架。
16.根据权利要求1所述的方法,其中对所述模块化测试***进行仿真包括:将一个或多个DUT模型添加至所述模块化测试***,而不修改所述仿真框架。
17.根据权利要求1所述的方法,其中对所述模块化测试***进行仿真包括:从所述模块化测试***中去除一个或多个DUT模型,而不修改所述仿真框架。
18.根据权利要求1所述的方法,其中对所述模块化测试***进行仿真包括:将一个或多个DUT模型添加至所述模块化测试***,而不停止仿真的运行。
19.根据权利要求1所述的方法,其中对所述模块化测试***进行仿真包括:从所述模块化测试***中去除一个或多个DUT模型,而不停止仿真的运行。
20.一种模块化测试***,包括:
一个或多个供应商模块;
一个或多个被测器件(DUT)模型;
用于控制所述供应商模块及其对应的DUT模型的控制器;
用于在所述供应商模块和所述DUT模型之间建立标准接口的仿真框架;
用于对所述仿真框架进行配置的装置;以及
用于利用所述仿真框架对所述模块化测试***进行仿真的装置。
21.根据权利要求20所述的***,其中所述仿真框架包括:
供应商模块接口,用于处理所述供应商模块与所述模块化测试***之间的通信;以及
DUT模型接口,用于处理DUT模型与所述供应商模块之间的通信。
22.根据权利要求21所述的***,其中所述供应商模块接口包括:
根据第一组预定标准接口实施的供应商模块接口;以及
用于对所述供应商模块的特性建模的虚拟函数。
23.根据权利要求21所述的***,其中所述DUT模型接口包括:
根据第二组预定标准接口实施的DUT模型接口;以及
用于对所述DUT模型的特性建模的虚拟函数。
24.根据权利要求21所述的***,其中所述仿真框架进一步包括:
用于设置所述供应商模块和所述DUT模型的输出通道处的动态电压电平的共用接口。
25.根据权利要求20所述的***,其中所述用于对仿真框架进行配置的装置包括:
用于生成仿真配置文件(SCF)的装置;以及
用于将所述仿真配置文件加载至所述模块化测试***的装置。
26.根据权利要求25所述的***,其中所述仿真配置文件包括:
一个或多个供应商模块DLL;
所述模块化测试***的硬件设置;以及
仿真参数。
27.根据权利要求25所述的***,其中对所述仿真框架进行配置的装置包括:
用于生成离线配置文件的装置;以及
用于将所述离线配置文件加载至所述模块化测试***的装置。
28.根据权利要求27所述的***,其中所述离线配置文件包括:
一个或多个DUT模型DLL;
所述DUT的硬件设置;以及
离线仿真参数。
29.根据权利要求27所述的***,其中对所述仿真框架进行配置的装置进一步包括:
用于加载供应商模块DLL的装置;
用于接收所述离线配置文件的装置;以及
用于根据所述仿真配置文件和所述离线配置文件来构建仿真结构的装置。
30.根据权利要求20所述的***,其中对所述模块化测试***进行仿真的装置包括:
用于执行所述供应商模块的基于事件的仿真的装置;
用于执行所述DUT模型的基于时间的仿真的装置;以及
用于在所述基于事件的仿真和所述基于时间的仿真之间传递仿真数据的装置。
31.根据权利要求30所述的***,其中传递仿真数据的装置包括:用于在仿真过程中自动解决供应商模块和所述DUT模型之间的驱动冲突的装置。
32.根据权利要求20所述的***,其中对所述模块化测试***进行仿真的装置包括对多个DUT模型进行并行测试的装置。
33.根据权利要求20所述的***,其中对所述模块化测试***进行仿真的装置包括:将一个或多个供应商模块添加至所述模块化测试***而不修改所述仿真框架的装置。
34.根据权利要求20所述的***,其中对所述模块化测试***进行仿真的装置包括:从所述模块化测试***中去除一个或多个供应商模块而不修改所述仿真框架的装置。
35.根据权利要求20所述的***,其中对所述模块化测试***进行仿真的装置包括:将一个或多个DUT模型添加至所述模块化测试***而不修改所述仿真框架的装置。
36.根据权利要求20所述的***,其中对所述模块化测试***进行仿真的装置包括:从所述模块化测试***中去除一个或多个DUT模型而不修改所述仿真框架的装置。
37.根据权利要求20所述的***,其中对所述模块化测试***进行仿真的装置包括:将一个或多个DUT模型添加至所述模块化测试***而不停止仿真的运行的装置。
38.根据权利要求20所述的***,其中对所述模块化测试***进行仿真的装置包括:从所述模块化测试***中去除一个或多个DUT模型而不停止仿真的运行的装置。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US57357704P | 2004-05-22 | 2004-05-22 | |
US60/573,577 | 2004-05-22 | ||
US10/917,711 | 2004-08-13 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1997908A true CN1997908A (zh) | 2007-07-11 |
CN100585422C CN100585422C (zh) | 2010-01-27 |
Family
ID=38131583
Family Applications (6)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200580015953 Pending CN1981202A (zh) | 2004-05-22 | 2005-05-23 | 模块化测试***中的数据日志支持 |
CN200580016355A Expired - Fee Related CN100580473C (zh) | 2004-05-22 | 2005-05-23 | 支持开放架构测试***中的校准和诊断 |
CN2005800163968A Expired - Fee Related CN1989417B (zh) | 2004-05-22 | 2005-05-23 | 开发半导体集成电路测试程序的方法和结构 |
CNB2005800164373A Expired - Fee Related CN100541218C (zh) | 2004-05-22 | 2005-05-23 | 开发用于半导体集成电路的测试程序的方法和结构 |
CN200580016215A Expired - Fee Related CN100585422C (zh) | 2004-05-22 | 2005-05-23 | 用于对模块化测试***进行仿真的方法和*** |
CN2005800164369A Expired - Fee Related CN1997909B (zh) | 2004-05-22 | 2005-05-23 | 用于控制模块化测试***中可互换部件的方法和*** |
Family Applications Before (4)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200580015953 Pending CN1981202A (zh) | 2004-05-22 | 2005-05-23 | 模块化测试***中的数据日志支持 |
CN200580016355A Expired - Fee Related CN100580473C (zh) | 2004-05-22 | 2005-05-23 | 支持开放架构测试***中的校准和诊断 |
CN2005800163968A Expired - Fee Related CN1989417B (zh) | 2004-05-22 | 2005-05-23 | 开发半导体集成电路测试程序的方法和结构 |
CNB2005800164373A Expired - Fee Related CN100541218C (zh) | 2004-05-22 | 2005-05-23 | 开发用于半导体集成电路的测试程序的方法和结构 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2005800164369A Expired - Fee Related CN1997909B (zh) | 2004-05-22 | 2005-05-23 | 用于控制模块化测试***中可互换部件的方法和*** |
Country Status (4)
Country | Link |
---|---|
JP (1) | JP4332200B2 (zh) |
CN (6) | CN1981202A (zh) |
AT (3) | ATE451625T1 (zh) |
DE (3) | DE602005015848D1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103109275A (zh) * | 2010-09-07 | 2013-05-15 | 爱德万测试(新加坡)私人有限公司 | 在半导体测试环境中使用虚拟仪器的***、方法和设备 |
CN105229481A (zh) * | 2013-02-21 | 2016-01-06 | 爱德万测试公司 | 具有存储器上的加速以及用于fpga块内自动模式生成的加速的测试器 |
CN113051114A (zh) * | 2021-03-19 | 2021-06-29 | 无锡市软测认证有限公司 | 一种用于提高芯片测试效率的方法 |
Families Citing this family (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7925940B2 (en) * | 2007-10-17 | 2011-04-12 | Synopsys, Inc. | Enhancing speed of simulation of an IC design while testing scan circuitry |
US8094566B2 (en) * | 2009-12-24 | 2012-01-10 | Advantest Corporation | Test apparatus and test method |
CN102215140B (zh) * | 2010-04-02 | 2013-03-27 | 英业达股份有限公司 | 储存局域网络的检验装置 |
CN102378232A (zh) * | 2010-08-23 | 2012-03-14 | 财团法人资讯工业策进会 | 无线网络信号的测试***及其测量方法 |
CN101980174B (zh) * | 2010-11-24 | 2012-07-04 | 中国人民解放军国防科学技术大学 | 一种自动测试计算机应用程序区间能耗的方法 |
JP2012167958A (ja) * | 2011-02-10 | 2012-09-06 | Nippon Syst Wear Kk | 試験情報表示装置、方法、プログラム、および該ソフトウェアを格納したコンピュータ可読媒体 |
CN102608517A (zh) * | 2012-02-16 | 2012-07-25 | 工业和信息化部电子第五研究所 | 一种创建集成电路测试程序包的快速方法 |
US9606183B2 (en) * | 2012-10-20 | 2017-03-28 | Advantest Corporation | Pseudo tester-per-site functionality on natively tester-per-pin automatic test equipment for semiconductor test |
JP6174898B2 (ja) * | 2013-04-30 | 2017-08-02 | ルネサスエレクトロニクス株式会社 | 半導体試験装置 |
TWI490689B (zh) * | 2013-05-17 | 2015-07-01 | 英業達股份有限公司 | 不間斷自動更新測試命令之系統及方法 |
CN104298590B (zh) * | 2013-07-16 | 2019-05-10 | 爱德万测试公司 | 用于按管脚apg的快速语义处理器 |
CN103413003B (zh) * | 2013-08-21 | 2016-07-06 | 浪潮(北京)电子信息产业有限公司 | 一种序列传输、接收装置及方法 |
KR102147172B1 (ko) * | 2014-04-09 | 2020-08-31 | 삼성전자주식회사 | 시스템 온 칩 및 그것의 검증 방법 |
US9672020B2 (en) | 2014-09-19 | 2017-06-06 | Microsoft Technology Licensing, Llc | Selectively loading precompiled header(s) and/or portion(s) thereof |
WO2016095993A1 (de) | 2014-12-17 | 2016-06-23 | Siemens Aktiengesellschaft | Überprüfen eines funktionsmoduls einer automatisierungsanlage |
CN107454124B (zh) * | 2016-05-31 | 2020-11-03 | 创新先进技术有限公司 | 设备自动化方法及装置 |
CN106507098B (zh) * | 2016-10-09 | 2018-10-19 | 珠海市魅族科技有限公司 | 数据处理的方法和装置 |
CN106603074A (zh) * | 2016-11-03 | 2017-04-26 | 武汉新芯集成电路制造有限公司 | 一种dac电路并行测试***及并行测试方法 |
CN107959981B (zh) * | 2017-10-30 | 2020-07-10 | 捷开通讯(深圳)有限公司 | 一种通信终端和通信测试方法 |
CN109324956B (zh) * | 2018-08-20 | 2021-11-05 | 深圳前海微众银行股份有限公司 | ***测试方法、设备及计算机可读存储介质 |
CN109508290A (zh) * | 2018-10-25 | 2019-03-22 | 深圳点猫科技有限公司 | 一种基于教育***的自动化测试方法及电子设备 |
CN109884923A (zh) * | 2019-02-21 | 2019-06-14 | 苏州天准科技股份有限公司 | 一种自动化设备控制模块化可配置*** |
CN109975650B (zh) * | 2019-04-30 | 2024-07-12 | 珠海市运泰利自动化设备有限公司 | 一种TypeC接头连板多通道测试平台 |
CN110954804B (zh) * | 2019-12-19 | 2021-11-02 | 上海御渡半导体科技有限公司 | 一种批量精确诊断cBit阵列故障的装置和方法 |
CN116547666B (zh) * | 2020-12-03 | 2024-03-22 | 美商新思科技有限公司 | 硬件设计编译故障时自动顺序重试 |
CN113050952B (zh) * | 2021-04-19 | 2024-07-05 | 杭州至千哩科技有限公司 | 伪指令编译方法、装置、计算机设备及存储介质 |
CN113342649B (zh) * | 2021-05-31 | 2023-11-14 | 上海创景信息科技有限公司 | 基于真实目标机实现单元测试的方法、介质和设备 |
CN113238834B (zh) * | 2021-05-31 | 2023-08-08 | 北京世冠金洋科技发展有限公司 | 仿真模型文件的处理方法、装置及电子设备 |
KR102314419B1 (ko) * | 2021-07-27 | 2021-10-19 | (주) 에이블리 | 반도체 테스트 패턴 발생 장치 및 방법 |
CN114252758A (zh) * | 2021-12-03 | 2022-03-29 | 杭州至千哩科技有限公司 | Ate测试通道资源配置方法、装置、设备及存储介质 |
CN114646867B (zh) * | 2022-05-18 | 2022-10-28 | 南京宏泰半导体科技有限公司 | 一种集成电路并发测试装置及方法 |
CN115630594B (zh) * | 2022-12-19 | 2023-03-21 | 杭州加速科技有限公司 | 一种芯片设计仿真文件到Pattern文件的转换方法及其*** |
CN116257037B (zh) * | 2023-05-15 | 2023-08-11 | 通达电磁能股份有限公司 | 控制器测试程序的生成方法、***、电子设备及存储介质 |
CN116520754B (zh) * | 2023-06-27 | 2023-09-22 | 厦门芯泰达集成电路有限公司 | 基于预加载模式的dps模块控制方法、*** |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2150696B (en) * | 1983-11-25 | 1988-09-01 | Mars Inc | Automatic test equipment |
US6208439B1 (en) * | 1990-11-09 | 2001-03-27 | Litel Instruments | Generalized geometric transforms for computer generated holograms |
US6779140B2 (en) * | 2001-06-29 | 2004-08-17 | Agilent Technologies, Inc. | Algorithmically programmable memory tester with test sites operating in a slave mode |
WO2003085706A1 (en) * | 2002-04-11 | 2003-10-16 | Advantest Corporation | Manufacturing method and apparatus to avoid prototype-hold in asic/soc manufacturing |
-
2005
- 2005-05-23 DE DE602005015848T patent/DE602005015848D1/de active Active
- 2005-05-23 CN CN 200580015953 patent/CN1981202A/zh active Pending
- 2005-05-23 AT AT05743262T patent/ATE451625T1/de not_active IP Right Cessation
- 2005-05-23 CN CN200580016355A patent/CN100580473C/zh not_active Expired - Fee Related
- 2005-05-23 DE DE602005018205T patent/DE602005018205D1/de active Active
- 2005-05-23 CN CN2005800163968A patent/CN1989417B/zh not_active Expired - Fee Related
- 2005-05-23 AT AT05743357T patent/ATE438865T1/de not_active IP Right Cessation
- 2005-05-23 DE DE602005018204T patent/DE602005018204D1/de active Active
- 2005-05-23 AT AT05743229T patent/ATE451624T1/de not_active IP Right Cessation
- 2005-05-23 CN CNB2005800164373A patent/CN100541218C/zh not_active Expired - Fee Related
- 2005-05-23 CN CN200580016215A patent/CN100585422C/zh not_active Expired - Fee Related
- 2005-05-23 CN CN2005800164369A patent/CN1997909B/zh not_active Expired - Fee Related
-
2008
- 2008-07-11 JP JP2008180843A patent/JP4332200B2/ja active Active
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103109275A (zh) * | 2010-09-07 | 2013-05-15 | 爱德万测试(新加坡)私人有限公司 | 在半导体测试环境中使用虚拟仪器的***、方法和设备 |
CN103109275B (zh) * | 2010-09-07 | 2016-02-03 | 爱德万测试公司 | 在半导体测试环境中使用虚拟仪器的***、方法和设备 |
CN105229481A (zh) * | 2013-02-21 | 2016-01-06 | 爱德万测试公司 | 具有存储器上的加速以及用于fpga块内自动模式生成的加速的测试器 |
CN113051114A (zh) * | 2021-03-19 | 2021-06-29 | 无锡市软测认证有限公司 | 一种用于提高芯片测试效率的方法 |
Also Published As
Publication number | Publication date |
---|---|
ATE451625T1 (de) | 2009-12-15 |
CN100585422C (zh) | 2010-01-27 |
JP2009008683A (ja) | 2009-01-15 |
ATE438865T1 (de) | 2009-08-15 |
CN1981202A (zh) | 2007-06-13 |
DE602005015848D1 (de) | 2009-09-17 |
CN1981200A (zh) | 2007-06-13 |
ATE451624T1 (de) | 2009-12-15 |
DE602005018204D1 (de) | 2010-01-21 |
CN100541218C (zh) | 2009-09-16 |
CN1989417B (zh) | 2011-03-16 |
DE602005018205D1 (de) | 2010-01-21 |
JP4332200B2 (ja) | 2009-09-16 |
CN1997909B (zh) | 2010-11-10 |
CN1997909A (zh) | 2007-07-11 |
CN100580473C (zh) | 2010-01-13 |
CN1989417A (zh) | 2007-06-27 |
CN1981203A (zh) | 2007-06-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100585422C (zh) | 用于对模块化测试***进行仿真的方法和*** | |
JP3911007B1 (ja) | モジュール式試験システムをシミュレートする方法及びシステム | |
CN106503308B (zh) | 一种基于uvm的can控制器ip验证平台 | |
US6002861A (en) | Method for performing simulation using a hardware emulation system | |
US20030217345A1 (en) | Event based IC test system | |
JP2009116876A (ja) | 試験装置のシミュレーションシステム、方法、及びプログラム製品 | |
US20030217343A1 (en) | Manufacturing method and apparatus to avoid prototype-hold in ASIC/SOC manufacturing | |
US8296699B1 (en) | Method and system for supporting both analog and digital signal traffic on a single hierarchical connection for mixed-signal verification | |
WO2008064122A2 (en) | Transaction co-validation across abstraction layers | |
JP2009116878A (ja) | 試験装置のシミュレーションシステム、方法、及びプログラム製品 | |
CN112417798B (zh) | 一种时序测试方法、装置、电子设备及存储介质 | |
US20040260528A1 (en) | Co-simulation via boundary scan interface | |
Balasubramanian et al. | Solutions for mixed-signal soc verification using real number models | |
US20080120082A1 (en) | Transaction Co-Validation Across Abstraction Layers | |
JP2009031933A (ja) | スケーラブル再構成可能型プロトタイプシステムと方法 | |
CN100456043C (zh) | 检测集成电路的方法和装置 | |
Nangia et al. | Functional verification of I2C core using SystemVerilog | |
Notbauer et al. | Verification and management of a multimillion-gate embedded core design | |
Rajsuman | An overview of the open architecture test system | |
Lu et al. | A novel approach to entirely integrate virtual test into test development flow | |
US11334704B1 (en) | System, method, and computer program product for mixed signal verification | |
Sciuto et al. | SystemC and SystemVerilog: Where do they fit? where are they going? | |
Rosenstiel et al. | SystemC and SystemVerilog: Where do they fit? Where are they going? | |
Kochte et al. | Test exploration and validation using transaction level models | |
Indumathi et al. | Development of SoC for IoT Applications |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20100127 Termination date: 20140523 |