用于虚拟内电路仿真的方法和设备的制作方法

文档序号:5939410阅读:252来源:国知局
专利名称:用于虚拟内电路仿真的方法和设备的制作方法
技术领域
本发明涉及嵌入式系统的领域以及,尤其但不唯一地,涉及利用内电路仿真(ICE)测试嵌入式系统。
背景技术
在测试嵌入式系统时,内电路仿真(ICE)是用于调试运行在一个或多个处理器上的嵌入式软件的技术。在ICE中,嵌入式软件通常利用调试基础设施(例如,利用诸如GNU调试器(⑶B)的调试器)被调试。在ICE中,所述处理器的部件能够被连接至JTAG基础设施,使得所述调试器能够访问所述部件,以获得对远程程序执行的了解并根据需要修改远程程序执行。例如,所述调试器可能获得对寄存器(例如,状态和用户寄存器)、监测点、存储体、时钟控制块和其他元件的了解。尽管这在它的最终环境中提供了一种用于调试软件的强大机制,但其被JTAG的实际特征所禁止。例如,用于给定处理器内核的典型ICE可能需要访问几十个元件,而现有的嵌入式设计可能由大量的处理器内核组成。因此,考虑到需要相当大次数的访问以执行即使最简单的调试操作,JTAG操作的高效处理是重要的,并提出了困难的问题。现有的基于JTAG的ICE的能力在若干方面是不足的。首先,现有的ICE方案需要每次使用仅一个JTAG ICE接口(或者需要用于每个处理器内核的特定的隔离逻辑,以使得多个ICE接口能够在同一个目标板上共存)。第二,现有的ICE方案严重依赖测试生成工具(TGT),用以处理JTAG操作,反之,JTAG操作又严重依赖用户输入,以指定处理器内核周围扫描链的拓扑。实际上,在现有的ICE方案中,JTAG操作仅可以在矢量层级上被完成,其中没有对设备内部构件的了解。第三,现有的ICE方案通常依赖于边界扫描访问,以访问目标板的部件,从而不论正执行的测试如何,都需要生成完整的测试矢量,以及,当在边界扫描链之内存在多个装置时,还需要重定向测试矢量。这种不足的结果是,TGT必须维持完整但简单的系统模型,以能够产生所需的矢量并对结果解释和解码。不利地是,这需要相当大量的计算能力,从而限制了方案的可扩展性,尤其是对于资源受约束的嵌入式方法。此外,嵌入式控制器仅能够执行基本的输入/输出方案,且必须要参考功能强大的主计算机以运行TGT,与TGT的接口通常取决于供应商且是专有的,因此导致额外的成本和灵活性损失。于是,现有的ICE方案使其几乎不可能支持ICE的多个实例。现有的ICE能力进一步的不足是,它们不能有效地并行支持多个处理器内核。在现有ICE方案中,为了并行支持用于多个处理器内核的ICE,大幅度的更复杂的TGT和关联模型被需求,以支持由运行于主机上的每个ICE实例的命令请求的协调。这涉及到基于整个扫描链方面重定向的大量且艰巨的任务,所述扫描链在每次扫描操作之间其拓扑可能变化,例如,被发送到目标硬件的数据在每次扫描操作之间是可变长度的比特流。假定数据向量的固定长度比特流表示被提供至所述现有TGT,且从目标硬件的扫描链中恢复,这通过现有的TGT不容易实现。尽管现有的ICE能力缺陷在于它们不能有效地并行支持多个处理器内核,但用于在单个目标处理器之内访问多个处理器内核的可能方案是IEEE1149. 7标准,该标准提出一种对于每个处理器内核的标准化ICE-JTAG接口,可以被调试器用于访问目标处理器。不利地,然而,通过TGT操控矢量时涉及到的复杂性,严重限制了可能利用IEEEl 149. 7标准实现的特征,包括完全排除了对并行性的支持。

发明内容
现有技术中的各种不足被通过用于提供虚拟内电路仿真(ICE)的方法和设备得以处理。在一个实施例中,一种方法包括,接收由至少一个ICE主机的多个目标ICE控制器生成的多个扫描段操作,所述多个目标ICE控制器与所述目标硬件的多个部件相关联;至少部分基于所述目标硬件的扫描链来调度所述被接收的扫描段操作,以由此形成扫描段操作的调度集;以及传播扫描段操作的所述调度集至处理器,所述处理器被配置以执行所述扫描段操作的调度集,用于测试所述目标硬件的一个或多个部件。


通过结合附图参考下列详细描述,在此提出的教导可被容易地理解,其中图1示出了一种包括测试系统和被测系统的系统测试环境的高层框图;图2示出了图1所述测试系统的一个实施例的高层框图,包括合作生成用于被测系统的测试指令的测试生成工具和软件编译装置;图3示出了图1所述测试系统的一个实施例的高层框图,包括合作生成用于被测系统的测试指令的测试生成工具和软件编译装置;图4A至4E示出了利用SPARC V8ISA的TISA的一种实现,示出了用于实现利用SPARC V8ISA的TISA的指令编码细节;图5示出了利用SPARC V8ISA的TISA的一种实现,示出了用于实现利用SPARCV8ISA的TISA的一种示范性TISA架构;图6示出了支持交互测试能力的基于TISA的测试环境的一个实施例;图7示出了图6基于TISA的测试环境的一种示范性实现;图8示出了一种用于执行图5A的被测系统的发送装置-接收装置通道优化的示范性程序架构;
图9示出了用于调节处理器的指令集架构(ISA)流以形成测试指令集架构(TISA)流的方法的一个实施例;图10示出了用于生成适用于测试被测系统至少一部分的指令的方法的一个实施例;图1lA示出了用于生成适用于测试被测系统至少一部分的指令的方法的一个实施例;图1lB示出了用于生成适用于测试被测系统至少一部分的指令的方法的一个实施例;图12示出了 TISA处理器架构的一个示范性实施例;图13示出了利用多个处理器提供系统测试能力的测试处理器架构的一个示范性实施例;图14示出了测试协处理器架构的一个示范性实施例;图15示出了测试辅助处理器架构的一个示范性实施例;图16示出了能够被TISA处理器使用的示范性寄存器组;图17示出了一种被测系统的高层框图,示出了被测系统的示范性扫描链的示范性分解;图18示出了利用扫描链的扫描段层级抽象通过被测系统的扫描链测试被测系统一部分的方法的一个实施例的高层框图;图19示出了包括虚拟ICE驱动装置的系统一个实施例的高层框图,所述驱动装置被配置以在测试目标硬件时使用;图20示出了利用虚拟ICE驱动装置以测试目标硬件的方法的一个实施例;以及图21示出了一种适用于执行本发明所述功能的计算机的高层框图。为了便于理解,相同的附图数字被使用,在可能的情况下,以指代附图中共同的相同元件。
具体实施例方式各种系统测试能力被提供以用于执行被测系统(SUT)的测试。在一个实施例中,一种测试指令集架构(TISA)被提供。所述TISA被提供以用于执行系统测试。所述TISA组合了计算机科学能力与系统测试能力,以提供改进的系统测试能力,包括交互测试能力、远程测试能力和在此所述的各种其他能力。所述TISA通过利用系统测试能力调整基于软件的指令集架构(ISA)来形成。所述基于软件的ISA可以利用任何适当的软件程序设计语言(例如,C++、Java等,及其各种组合),并可以利用任何适当的处理器实现。所述系统测试能力可以利用任何适当的TAP,例如IEEE1149.1 (也被称为JTAG)TAP或任何其他适当的TAP。通常,所述TISA通过组合软件过程的原子操作与测试过程的原子测试操作来形成。在所述TISA中,测试过程的算法部分被所述软件流操控,使得所述测试过程的算法部分被转换成所述原子测试操作。所述TISA通过组合所述软件过程的原子操作与所述测试过程的原子测试操作来形成,从而所述原子测试操作被以与操控测试过程的算法部分的所述软件过程的原子操作以相同方式处理。这能够对嵌入式测试执行、远程测试执行和在此所示和所述的各种其他改进的系统测试能力进行更细的颗粒控制。
图1示出了一种包括测试系统和被测系统的系统测试环境的高层框图。如图1所示,系统测试环境100包括测试系统(TS) 110和被测系统(SUT) 120。所述TSllO可以是适于测试SUT120的任何系统。所述TSllO被配置以测试SUT120。所述TSllO可以执行SUT120的任何测试,例如,测试SUT120的一个或多个独立部件,SUT120部件的一种或多种组合,SUT120部件之间的一个或多个互连,SUT120 一个或多个系统级功能等,及其各种组合。所述TSllO可以执行通常与测试被测系统相关联的任何功能,例如执行测试过程,向所述被测系统提供输入数据,从所述被测系统接收输出数据,处理从所述被测系统接收的输出数据用于确定系统测试结果,以及类似功能,及其各种组合。在下文中用于测试被测系统的TSllO的设计和使用被更详细地描述。所述SUT120可以是可以利用TSllO测试的任何系统。所述SUT120可以包括任何一个(或多个)部件,至少一部分部件可以独立地和/或组合地被TSllO测试。所述TSllO可以包括一个或多个扫描链,具有一组或多组关联的输入和输出访问管脚,通过SUT120提供接入至被测的所述一个(或多个)部件。在测试SUT120中使用一个(或多个)扫描链测试SUT120的方式可以被本领域的技术人员所理解。例如,SUT120可以包括一个或多个板,可以利用一个或多个具有关联输入和输出访问管脚的扫描链进行其测试,所述访问管脚可用于向SUT120提供输入测试信号并从SUT120收集输出测试信号。如图1所示,TSllO经由测试访问接口(TAI) 115访问SUT120。所述测试访问接口可以利用任何适当的测试访问接口被实现,其可以取决于所述TS110、所述SUT120、要执行的测试类型等中的一个或多个,及其各种组合。例如,TAI115可以包括在IEEE1149.1标准中被标准化的联合测试行动小组(JTAG)测试访问端口(TAP),在此通过引用将其并入本文。IEEE1149.1标准定义了支持以下信号集的TAP :测试数据接入(Test Data In,TDI)、测试数据输出(Test Data 0ut,TD0)、测试模式选择(Test Mode Select, TMS)、测试时钟(Test Clock, TCK)以及可选地,测试复位信号(Test Reset Signal,TRST)。所述SUT120的TDI和TDO管脚在边界扫描中被互连,通过边界扫描链,TSllO可以访问SUT120,以测试SUT120的至少一部分。 所述TAI115可以包括任何其他适当的测试访问接口。本领域的技术人员能够理解,TSl 10、TAI115以及SUT120可以通过适于提供在此涵盖的实施例特征的任何方式被实现。如本文所述,所述TISA能够利用计算机科学能力结合系统测试能力,以提供系统测试的显著改善。接下来是系统测试能力和计算机科学能力的一般说明,继之以计算机科学能力和系统测试能力可以被一起利用以提供所述TISA的方式描述。所述TISA通过利用计算机科学能力改善系统测试能力。所述系统测试能力可以包括在“自动化测试”流的所有阶段中被一般支持的能力(一般包括从该(等)测试算法的定义到实际测试操作可能所需的所有步骤和资源)。为了帮助测试自动化,测试资源被常常嵌入在所述板和装置内,并能够利用标准化接口,通常被称为测试访问端口(TAP)被访问。这具有限制管脚数并使资源访问和管理合理化的效应。若干种语言可用于描述被测系统内部的资源,于是,可以将其用作测试生成工具(TGT)的输入。TGT能够应用算法以生成测试序列,所述测试序列可以被测试控制单元(TCU)使用以命令所述TAP并执行关联的测试操作。所述测试操作的特征和性能取决于这三个因素访问标准、数据格式和TCU实施。所述TISA能够利用计算机科学能力以提供改进的系统测试能力。这可以包括使用在“软件开发流程”(一般包括从利用所选的一种(或多种)软件语言编写的软件算法到最终在目标处理器上调试和执行需要的任何或所有步骤和资源,例如汇编、指令集架构(ISA)、交互调试等,及其各种组合)的所有阶段中可用的计算机科学能力。使用计算机科学中的汇编将程序员友好的高级抽象定义的算法简化成一系列机器可执行指令。这个过程可能根据输入的程序设计语言和项目复杂性而变化很大;不过,大部分方法,未必全部,都共享相同的基本假设任何算法都可以被分解成基本指令,不论其复杂性如何。这适用于经典语言以及更现代的高级和面向对象的语言,例如,C++、Java、Python 等。所述指令集架构(ISA)是任何处理器的内核,这种汇编的理由是由于非常有效。通常,每个处理器都提供一个指令集,所述指令集定义所述处理器能够被操作的方式。所述指令形成所述处理器的ISA的至少一部分。可以理解的是,所述ISA被视为包括与指令相关联的各种构造,例如寄存器、寻址模式、操作码、存储器结构等,及其各种组合。所述ISA使得所述处理器执行简单的指令,例如从/向存储器读取/写入值,执行寄存器上的逻辑或算术运算,处理中断等。这些基本行为随着时间基本保持不变,且现代处理器实现异常性能,因为它们能够有效地利用大量资源,并且,因此,能够在大致相同量的时间中完成大得多数量的这种基本指令。此外,通过利用协处理器(例如浮点协处理器、图形协处理器等)更高的性能可以被实现,这能够通过硬编码复杂运算帮助主处理器。使用计算机科学中的调试允许软件开发和执行过程的监测和验证。通常,软件开发是一个漫长而艰难的过程,受到严格的监测和验证,以确保最终产品没有缺陷或通常所谓的“错误(bug) ”。为了帮助测试软件程序,软件开发流程提供了很多强大的调试特征。例如,常见的软件开发流程调试特征包括逐步执行;所有寄存器和存储器地址的可观察性/可控制性,断点和监测点的使用等。这些调试特征以及各种其他调试特征更通常的是通过由软件编译器嵌入到最终代码中的算法和结构实现的,但也可以由处理器内部可用的硬件资源辅助。从这一信息,所述调试器能够重构原始代码并将所有的所述ISA水平的操作相关到程序设计抽象层。自动化测试执行能力和计算机科学软件能力的共同使用使得改进的系统测试能力能够参考图2和图3被更好地理解。图2示出了图1所述测试系统的一个实施例的高层框图,包括合作生成用于被测系统的测试指令的测试生成工具和软件编译装置。如图2中所示,所述TSllO包括测试生成工具(TGT) 210和软件编译装置(SC) 220。TGT210 包括 TGT 编排器 212 和 TGT 算法 214。TGT编排器212接受系统描述文件211作为输入。所述系统描述文件211包括任何适当描述文件,所述描述文件可以由TGT使用,为测试被测系统而产生测试指令/矢量。例如,系统描述文件211可以包括电路描述文件、板/固定装置网表文件、其他描述文件等,及其各种组合。所述系统描述文件211可以存在于TGT210上和/或可以从一个或多个远程部件和/或系统获得。所述系统描述文件211可以包括一个或多个电路描述文件。所述电路描述文件可以利用任何适当的一种(或多种)描述语言被指定,例如边界扫描描述语言(BSDLJtS针对板水平JTAG的IEEEl 149.1标准的一部分而被开发)、分层扫描描述语言(HSDL,作为BSDL的扩展而被开发)、新扫描描述语言(NSDL)等,及其各种组合。所述系统描述文件211可以包括一个或多个板/固定装置网表文件。所述板/固定装置网表文件可以包括与该(等)装置的物理描述相关的文件,描述网表、连接等信息。所述板/固定装置网表文件可以以任何适当的格式被指定,例如PCB、Gerber和/或适于板/固定装置网表文件的任何其他格式。所述系统描述文件211可以包括一个或多个其他描述文件。所述其他描述文件可以包括可用作产生电路模型的输入的任何其他适当描述文件。例如,其他描述文件可以包括任何适当应用特有和/或工具特有的描述语言文件,例如Asset' s Macro语言、Goepel' s CASLAN语言和/或任何其他适当的描述语言文件。所述TGT编排器212处理所述系统描述文件211以产生电路模型213。TGT编排器212处理系统描述文件211以产生电路模型213可以通过任何适当方式执行。所述电路模型213指定被测系统的模型或被测系统的部分,使TGT210正在为其运行。所述TGT编排器212向TGT算法214提供电路模型213。所述TGT算法214接受电路模型213。所述TGT算法214处理所述电路模型213以产生TGT原子测试操作216。TGT算法214处理电路模型213以产生TGT原子测试操作216可以通过任何适当方式执行。所述SC220包括SC前端算法222和SC后端算法224。所述SC前端算法222接受计算机科学源文件221作为输入。所述计算机科学源文件221包括可以由编译装置编译的任何适当的计算机科学源文件。例如,计算机科学源文件221可以包括用于任何适当的一种(或多种)计算机程序设计语言的计算机科学源文件,例如C++、Java、Python等,及其各种组合。例如,计算机科学源文件221可以包括一个或多个C文件、一个或多个C++文件和/或任何其他适当的计算机科学源文件。所述SC前端算法222处理所述计算机科学源文件221以产生程序模型223。所述程序模型223指定所述计算机科学源文件221的中间表达。所述SC前端算法222向所述SC后端算法224提供所述程序模型223。所述SC后端算法224接受程序模型223作为输入。所述SC后端算法224处理所述程序模型223以产生一个或多个ISA 二进制文件225,包括ISA原子操作226。所述SC后端算法224处理程序模型223以形成包括所述ISA原子操作226的所述ISA 二进制文件225可以通过任何适当方式被执行。所述ISA原子操作226是被实施TISA的处理器支持的组件水平的指令。如图2所示,除了 TGT210和SC220的相应处理流之外,TGT210和SC220之间的额外交互可以被用于控制所述TISA原子操作235的生成。在一个实施例中,SC后端算法224可以向TGT算法214发起一个或多个矢量计算请求230。当所述SC后端算法需要访问所述TAP时,所述SC后端算法224可以发起矢量计算请求230。所述TGT算法214,当从SC后端算法224接收到矢量计算请求230时,基于所接收的矢量计算请求230生成用于TAP的一个或多个TGT原子测试操作。然后一个或多个TGT原子测试操作216可以以SC后端算法224控制的方式被应用于所述TAP,因为所述TGT原子测试操作216与所述ISA原子操作226组合以利用ISA原子操作226实现对TGT原子测试操作216的算法控制。通过这种方式,所述SC220提供对所述TAP访问的算法控制。如图2所示,除了 TGT210和SC220之外,TSllO还包括TISA编排器240。所述TISA编排器240接收所述TGT原子测试操作216和所述ISA原子操作226。所述TISA编排器240将所述TGT原子测试操作216转化为TISA指令并将所述TISA指令插入所述一个(或多个)ISA 二进制文件225中(S卩,将所述TISA指令与所述ISA原子操作226组合以由此形成包括TISA原子操作246的TISA 二进制文件245。)所述TISA编排器240可以是TGT210的一部分、SC220的一部分、跨越TGT210和SC220、被独立于TGT210和SC220而实现等。可以理解的是,参考图2所示和所述的各种输入和输出可以通过任何其他适当方式及其各种组合被存储、显示、执行、传播和/或处理。图3示出了图1所述测试系统的一个实施例的高层框图,包括合作生成用于被测系统的测试指令的测试生成工具和软件编译装置。如图3中所示,图3的TSllO以类似于图2的TSllO的方式工作,即,包括TISA原子操作的TISA 二进制文件利用所述测试产生工具和所述软件编译装置之间的交互被生成;不过,图3的TSllO中测试产生工具和软件编译装置之间的交互与图2的TSllO中测试产生工具和软件编译装置之间的交互不同。如图3所示,所述TSllO包括测试生成工具(TGT) 310和软件编译装置(SC) 320。所述TGT310包括TGT编排器312和TGT算法314。所述TGT编排器312接受系统描述文件311作为输入。是系统描述文件311包括任何适当的描述文件,所述描述文件可以被TGT使用以产生用于测试被测系统的测试指令/矢量。例如,系统描述文件311可以包括电路描述文件、板/固定装置网表文件、其他描述文件等,及其各种组合。图3的所述系统描述文件311可以包括类似于参考图2所示和所述的系统描述文件211的系统描述文件(例如,一个或多个电路描述文件、一个或多个板/固定装置网表文件、一个或多个其他描述文件等,及其各种组合)。所述系统描述文件311可以存在于TGT310上和/或从一个或多个远程部件和/或系统被获得。所述TGT编排器312接受一个或多个测试操作描述文件3311_331N(总体上称为测试操作描述文件331)作为输入。所述测试操作描述文件331被SC320所生成。通过SC320生成测试操作描述文件331在下文中被详细描述。所述TGT编排器312处理所述系统描述文件311和所述测试操作描述文件331以产生电路模型313。TGT编排器312处理系统描述文件311以产生电路模型313可以通过任何适当方式被执行。所述电路模型313指定被测系统模型或被测系统的部分,使TGT310正在为其运行。结合测试操作描述文件331处理系统描述文件311使得所述TGT编排器312能够以一种方式产生电路模型313,以使得TGT310产生适当的TAP原子操作。所述TGT编排器312向TGT算法314提供电路模型313。所述TGT算法314接受电路模型313。所述TGT算法314处理所述电路模型313以产生TGT原子测试操作316。TGT算法314处理电路模型313以产生TGT原子测试操作316可以以任何适当方式被执行。如图3中所示,除了 TGT310和SC320,TSllO包括TISA转换装置340。所述TISA转换装置340接收所述TGT原子测试操作316。所述TISA转换装置340转换TGT原子测试操作316以形成TISA原子测试操作346。所述TISA转换装置340向SC320提供TISA原子测试操作346以包括在软件编译过程中。SC320对TISA原子测试操作346的使用在下文中被详细描述。所述TISA转换装置340可以是TGT310的一部分、SC320的一部分、跨越TGT310和SC320、被独立于TGT310和SC320而实现等。所述SC320包括SC预编译装置330、SC前端算法322和SC后端算法324。所述SC预编译装置330接受计算机科学源文件321。所述计算机科学源文件321包括可以由编译装置编译的任何适当的计算机程序设计源文件。例如,计算机科学源文件321可以包括用于任何适当的一种(或多种)计算机程序设计语言的计算机程序设计源文件,例如C++、Java、Python等,及其各种组合。例如,计算机科学源文件321可以包括一个或多个C文件、一个或多个C++文件和/或任何其他适当的计算机科学源文件。所述SC预编译装置330处理所述计算机科学源文件321。所述SC预编译装置330处理所述计算机科学源文件321,从此产生预处理的计算机科学源文件321P。所述计算机科学源文件321可以被SC预编译装置330所预处理,以通过任何适当方式形成预处理的计算机科学源文件321P。所述SC预编译装置330向前端算法322提供所述预处理的计算机科学源文件321P。所述SC预编译装置330检测处理所述计算机科学源文件321期间的测试操作,并生成测试操作描述文件331。所述测试操作描述文件331可以利用任何适当的测试描述语言(例如,使用一种或多种标准测试描述语言,使用对TGT310特有的测试描述语言等,及其各种组合)被指定。所述SC预编译装置330提供所述测试操作描述文件331至TGT310 (作为例示,对于TGT310的所述TGT编排器312,其结合所述系统描述文件311处理所述测试操作描述文件331以产生电路模型313)。所述SC前端算法322接受预处理的计算机科学源文件321P。所述SC前端算法322还接受所述TISA原子测试操作346,其是由TISA转换装置340利用TGT原子测试操作316产生的,所述TGT原子测试操作316是由TGT310从所述测试操作描述文件331产生的。所述SC前端算法222编译所述预处理的计算机科学源文件321P和TISA原子测试操作346以产生程序模型323。所述程序模型323指定所述预处理计算机科学源文件321P的中间表达,其包括TISA原子测试操作346,使得TISA原子测试操作346可以被集成在所述ISA原子操作之内以形成TISA原子操作。所述SC前端算法322提供所述程序模型323至所述SC后端算法324。所述SC后端算法324接受程序模型323。所述SC后端算法324处理程序模型223以产生包括TISA原子操作356的一个或多个TISA 二进制文件355。由所述SC后端算法324处理程序模型323以形成包括所述TISA原子操作356的所述TISA 二进制文件355可以通过任何适当方式被执行。所述TISA原子操作356包括ISA原子操作(即,由实施所述TISA所针对的处理器支持的组件水平的指令)和TISA原子测试操作346。所述TISA原子操作356提供对TGT原子测试操作316 ( S卩,以所述TISA原子测试操作346的形式)的算法控制(利用ISA原子操作),由此能够对要应用所述TISA原子操作356的被测系统进行改善的系统测试。因此,所述TGT原子测试操作316(即,以所述TISA原子测试操作346的形式)可以通过由SC后端算法324控制的方式被用于所述TAP,因为所述TGT原子测试操作316与所述ISA原子操作组合,能够利用所述ISA原子操作对TGT原子测试操作316进行算法控制。通过这种方式,所述SC220提供对所述TAP访问的算法控制。可以理解的是,参考图3所示和所述的各种输入和输出可以通过任何其他适当方式及其各种组合被存储、显示、执行、传播和/或处理。参考图2和图3,尽管主要结合特定数量的输入文件、中间文件、模型、输出文件等进行例示和描述,可以理解的是,图2和图3的实施例以及这里提供的各种关联教导,可以利用任何适当数量的输入文件、中间文件、模型、输出文件等被实施。图2和图3示出了可以利用计算机科学能力改善系统测试能力的方式(例如,提供系统测试的更细颗粒控制,实现交互系统测试,在系统测试期间实现交互调试以及提供这里所示和所述的各种其他优点)。图2和图3的系统测试方案提供了对诸如STAPL的现有方法的改善,其中目标是向矢量格式增加程序设计特征,因此,从头开始就增加调试、远程访问和交互性特征。相反,所述TISA利用来自计算机程序设计和嵌入式应用的丰富信息,以控制对系统测试的测试访问。参考图2和3,可以理解的是,所述TISA的能力和特征是由其抽象层级所定义,即所述TISA原子操作的定义越细,所述TISA将提供越好的性能。在一个实施例中,其中,TISA在JTAG架构中被实现,三个抽象层级可以被支持以进行扫描操作。第一抽象层级是矢量层级。矢量层级是三个抽象层级的最粗颗粒,其中所述原子操作是扫描矢量的输入和输出。矢量层级在矢量格式中得到最好表达,例如,连续矢量格式(SVF)或任何其他适当的矢量格式,并给出最高层级的控制。第二抽象层级是TAP层级。在TAP层级中,所述原子操作被加强以允许对TAP状态机进行完全控制。这能够对扫描操作进行更细化的控制,支持非标准序列(例如,像例如可寻址阴影协议(addressable shadow protocol)或其他类似协议中所要求的那些)。第三抽象层级是扫描段层级。扫描段层级是三个抽象层级中的最细颗粒。矢量层级和TAP层级的抽象层级使用扫描矢量作为原子数据格式,对于其中涉及完整扫描链的传统连续测试是充分的,但对于基于仪器的测试是繁重的,其中需要对构成扫描链的几十或几百个仪器进行精细颗粒控制。扫描段层级允许在总体扫描路径内部定义“扫描段”,可以对其进行独立处理,由此提供灵活而强大的原语集合,所述原语可用于在问题空间中直接定义扫描操作并在实施时间解决扫描操作。这种方法在嵌入式应用中是有利的,其中可用的计算资源可能相当有限。扫描段层级的使用在下文中被更详细地示出和描述。如图2和图3所示,不论所述扫描操作的抽象层级如何,将所述TGT计算的所得TAP原子操作(例示地,TGT原子测试操作216和TGT原子测试操作316)转换成对应的TISA原子测试操作并插入至二进制可执行码(即,至由所述SC产生的所述ISA原子操作)中。参考图2,TGT原子测试操作216和ISA原子操作226可以被处理以在所述TISA 二进制可执行码(示例地,TISA 二进制文件245)中形成所述TISA原子操作246。所述TISA原子操作246包括TISA原子测试操作和ISA原子操作。参考图3,TISA原子测试操作可以被输入至所述SC前端324中(由TISA转换装置340从TGT310产生的TGT原子测试操作316生成),作为预编译的汇编指令,而无需修改所述SC310的SC前端324。可以理解的是,几乎所有程序设计语言都允许这样的操作。在C中,例如,这种操作利用“asm”命令被获得。在一个实施例中,可能需要对SC后端算法324进行微小修改(例如,以处理所述TISA汇编指令的二进制换算)。在这里参考图11示出和描述了这种过程的范例。尽管参考在JTAG架构中的TISA原子操作的粒度层级进行了基本的示出和描述,本领域的技术人员能够理解,在其他架构中可以利用TISA原子操作的相同粒度层级,在JTAG架构和/或其他架构中可以利用TISA原子操作的不同层级粒度等等,及其各种组合。如上所述,所述TISA可以利用任何适当的指令集架构(ISA)而被实施。例如,所述TISA可以利用SPARC V8ISA、INTEL ISA等而被实施。为了清楚地描述所述TISA的实施,在此参考图4A-4E示出和描述了利用SPARCV8ISA的所述TISA的示范性实施。在这一示范性实施中,所述TISA被实现为矢量层级TISA,其允许对构成SVF格式的指令直接编码;然而,如上所述,可以理解的是,利用SPARCV8 ISA的所述TISA的实施也可以被执行,其中,所述TISA被实现为TAP层级的TISA或扫描段层级的TISA。所述SPARC V8ISA在很多产品中被实施,例如开源软件处理器系列Leon2和Leon3。阅览SPARC 国际有限公司(SPARC International,Inc),在 1992 出版的“SPARC 架构指南第八版(The SPARC Architecture Manual Version8) ”(下文称为“SPARC 架构指南(SPARC Architecture Manual) ”),表明很多代码字未在所述SPARC V8ISA中被采用。至少通过阅览附录F的“操作码和状态码(opcodes and condition codes)”可以证明这一点。图4A示出了所述SPARC V8ISA的未采用代码字。在图4A中所示的未采用代码字可以被用于对所述TISA的“测试”指令编码。更具体地,当“op”和“op2”都设置为0时,在“SPARC架构指南第八版”中将指令标志为未实施,从而所述指令可以被用于所述TISA。图4B示出了能够表示全部十三条SVF指令的编码格式。如图4B中所示,比特30-25包括指令编码自身,若比特21-18中的一个要被以指令的方式使用,则比特21-18可以被用于对TAP状态编码,比特17-14可以在需要时由每条指令用于指定可选信息。图4C示出了针对IEEE1149.1TAP的所述TAP状态的示范性比特编码。利用标识IEEEl 149.1TAP状态名称的第一列、标识与IEEE1149.1TAP状态名称相关联的SVF TAP状态名称的第二列,以及标识用于对图4B的比特21至18的比特编码的第三列代表TAP状态的比特编码。可以理解的是,可以通过各种其他方式将所述比特编码分配给所述TAP状态。SVF指令允许多个参数,所述参数需要在最终代码内部编码。为了表达所述参数,并为了保持指令和数据分离的通常架构最佳实践,为矢量层级的TISA的这种示范性实施定义基于寄存器的参数传送。于是,所述矢量层级的TISA描述了六个专用的32位寄存器GENERIC1、GENERIC2、TD1、TD0、MASK和SMASK。在图4D中示出了所述六个专用的32位寄存器。在下文中详细描述了所述六个专用的32位寄存器的用法,但作为一般规则,这些寄存器被用于存储参数或指向存储参数的存储器位置。于是,在编译时,可以使用正常的ISA指令在调用所述TISA指令之前加载这些寄存器。更具体地,在所述TISA的这一 SPARC V8ISA实施方式中,可以直接使用协处理器寄存器作为用于通常加载/存储指令的参数。
可以在所述TISA的这种SPARC V8ISA实施方式中利用的SVF指令包括ENDDR、ENDIR、STATE、FREQUENCY、PIO、PIOMAP, HDR、HIR、TDR、TIR、SDR、SIR 和 RUNTEST。可以通过参考 ASSET InterTech, Inc.,在 1997 的“系列矢量格式规范(Serial Vector FormatSpecfiication) ”更好地理解这些SVF指令,这里通过参考将其全文并入。在下文中更详细地描述了在所述TISA的这种SPARC V8ISA实施方式中使用这些SVF指令。ENDDR, END IR, S TATE.
ENDDR和ENDIR指令指出TAP接口结束其操作的TAP状态。所述STATE指令强制所述TAP接口成为指定状态。在所述TISA的这个示范性实施中,用于ENDDR、ENDIR和STATE指令的SVF编码分别为“000000”、“000001”和“000010”,如图4E中所示。可以根据需要利用“TAP状态”文件(S卩,图4C所示TAP状态的示范性比特编码)执行这些SVF指令的SVF编码。可以理解的是,至少通过阅览SVF指南,所述STATE指令能够可选地取状态的明确序列作为参数。在所述TISA的这一示范性实施中,取状态的明确序列作为参数会由一系列指令编码,每个指令用于序列中的一个状态。FREQUENCYFREQUENCY指令用于指定TAP接口的工作频率。FREQUENCY指令被表达为Hz周期的32位整数。在所述TISA的这一示范性实施中,用于FREQUENCY指令的SVF编码是“000011”,如图4E所示。用于FREQUENCY指令的值存储在GENERIC1寄存器中。PIO, PIOMAP通过调用PIOMAP而预先设置的格式,所述PIO指令可以被用于处理平行矢量。在所述RISA的这种示范性实施中,PIOMAP被视为生成适当命令以建立TAP接口的预处理器指令。于是,所述PIO指令仅需要表达所述平行矢量,所述平行矢量可以通过指明(在所述GENERIC1寄存器中)存储平行矢量的地址来表达。在指令的比特13-0中指定构成矢量的字数“n”,于是,矢量具有大小上限213 = 8K字=32K字节。如果矢量大小不是字的精确倍数,可以根据需要在存储器中提供补白和重新对准。在所述TISA的这种示范性实施中,用于所述PIO指令的所述SVF编码是“000100”。HDR, HIR, TDR, TIRHDR、HIR、TDR和TIR指令的功能是不同的。在这里,将这些SVF指令一起考虑,因为(I)这些SVF指令功能上是类似的(即,即使它们性质不同,它们全都指挥移位操作),
(2)这些SVF指令接受相同的参数:(I)长度:表达要移动的比特数的32位数字;(2) TDI (可选的):输入移位矢量;(3)TDO(可选的):预期输出移位矢量;⑷MASK (可选的):用于在比较实际值与TDO时使用的掩码(mask)。“I”表示关心,“0”表示不关心;以及(5)SMASK(可选的):用于标记要在TDI中考虑哪些比特的掩码(mask)。“I”表示关心,“0”表示不关心。在所述TISA的这一示范性实施中,用于HDR、HIR、TDR和TIR指令的SVF编码分别为 “000110”、“000111”、 “001010” 和 “001011”,如图 4E 中所示。在所述TISA的这种示范性实施中,可以使用如下额外的编码:
(I)长度存储在所述GENERIC1寄存器中;(2)在存在TDI时,01为“1”,否则为“O”。如果设置了,TDI寄存器包含存储输入矢量的地址;(3)在存在TDO时,02为“1”,否则为“O”。如果设置了,TDO寄存器包含存储预期输出的地址;(4)在存在MASK时,03为“1”,否则为“O”。如果设置了,MASK寄存器包含存储输出掩码的地址;以及(5)在存在SMASK时,04为“1”,否则为“O”。如果设置了,SMASK寄存器包含存储输出掩码的地址。SDR, SIRSDR和SIR与HDR、HIR、TDR和TIR指令具有相同的语法,但具有功能差异SDR和SIR触发对TAP的实际扫描操作。在交互式测试中,从系统读取的实际输出矢量对于算法而言是根本的,因此TISA提供了在存储器中存储实际输出矢量的可能性。当“TAP状态”字段(比特21-18,如图4B中所示)与零不同时,所述GENERIC2寄存器指出所述实际输出矢量的存储位置。因此,SDR和SIR能够支持最大七个参数。如果指定了 TDO且实际输出矢量与预期输出矢量不同,在处理器状态寄存器(PSR)中设置溢出标记,如SPARC架构指南的
4.2节中所述。RUNTESTRUNTEST指令迫使TAP接口在指定量时间内运行指定状态下的测试,主要用于控制RUNBIST操作(例如,如IEEE1149.1中所定义的)。所述RUNTEST指令接受一个或多个如下参数(全部为可选的)(l)run_state :接口在测试执行期间必须保持的状态;(2)run_count :测试必须花费的时钟周期数;(3)run_clk :参考哪个时钟的 run_count (TCK TAP 时钟,SCK :系统时钟);(4)min_time :表达为实数的最小运行时间,单位秒;(5)max_time :表达为实数的最大运行时间,单位秒;以及(6) endstate :所述接口在命令结束时必须达到的状态。在所述TISA的这种示范性实施中,用于RUNTEST指令的SVF编码可以是“000101”或 “100101”。在TISA的这种示范性实施中,可以使用如下额外的编码(1)TAP_STATE :它包含其所定义的 run_state ;(2)01 :如果定义了 TAP_STATE,则为 “1”,否则 “0”;(3)02 :如果指定了 min_count,则为“1”,否则为“O”。如果设置了,所述GENERIC1寄存器包含min_count的32比特无符号表达;(4)03 :如果设置了 max_time,则为“1”,否则为“O”。如果设置了,所述GENERIC2寄存器包含max_count的32比特无符号表达。(5)04:如果设置了 endstate,则为“1”,否则为“O”。如果设置了,比特13-10包
含结束状态。(6)比特9-0 :如果指定了 run_count,表达为无符号整数(maxrun_count = 210 =1024)。如果这个字段不是“0”,那么比特30表示run_clock( “I” = TCK,“0” = SCK)。尽管在此主要参照所述TISA的这种SPARC V8ISA实施中特定SVF指令的使用进行图示和描述(即,名为,ENDDR、ENDIR、STATE、FREQUENCY、PIO、PIOMAP、HDR、HIR、TDR、TIR、SDR、SIR和RUNTEST),可以理解的是,可以使用更少或更多的SVF指令。尽管在此主要参照利用SPARC V8ISA的TISA的实施进行图示和描述,可以理解的是,根据在此图示和描述的TISA教导,各种其他的ISA可以被利用来实施TISA。在交互式测试方法中,数据的切换点相当重要。如上文所述,测试程序由两个主要部分构成算法部分(由软件编译装置表达)和测试访问部分(由测试生成工具表达)。在利用测试程序的测试操作期间,将会有测试程序访问被测系统的时刻,以及测试程序检查测试结果并决定所需的一个或(多个)下一步的时刻。这两种操作之间的切换对于获得有效率的交互式测试而言是重要的。在现有基于脚本的方法中,例如SVF和STAPL,脚本在矢量层级上考虑所有TAP操作。在这个层级上,接口(或“播放器”)能够与TAP协议通信,并发送/接收矢量至/从所述被测系统。此外,STAPL还允许对比特矢量进行某些基本流控制(if-then-else)和算法操作。如果需要更完善的处理(例如,在被接收的矢量内部识别寄存器,或计算所述矢量以访问特定装置),播放器将控制切换到所述算法部分。在STAPL中,这是通过“export”命令进行的。不过,不利地是,SVF或STAPL都没有用于此的标准化格式(例如,对于STAPL,切换过程通常专属于某一供应商)。在现有的嵌入式方法中,像来自Ericsson和系统BIST处理器(System BISTProcessor)的主测试控制器(Master Test Controller,MTC),在算法部分和测试访问部分之间使用相同的划分。在这样的嵌入式方法中,由必须分开编程的不同协处理器执行算法部分和测试访问部分。此外,算法部分和测试访问部分的存储器空间在物理上不同,使得所得的切换机制类似于STAPL的切换机制。结果是,用于测试访问部分的协处理器被迫在切换到算法部分之前存储大量扫描操作,而考虑到扫描链的越来越大尺寸,可能需要巨量的资源。与现有用于集成测试的方法(例如基于脚本的方法,如SVF和STAPL,以及嵌入式方法,例如MTC和系统BIST处理器(System BIST Processor))相比,所述TISA在所述算法部分(即经典ISA)内部集成了所述测试访问部分(即,测试操作),由此使得所述测试访问部分和所述算法部分共享同样的物理存储空间,从而使得在所述测试访问部分和所述算法部分之间的切换(以及,因此的数据传递)自动化。在TISA中,在所述测试访问部分和所述算法部分之间的切换在指令层级进行,使得处理器能够根据关联的调度策略按需要自由混合扫描和算法(即,自由混合测试操作和算法操作)。在所述TISA的这一示范性实施中,利用所述SPARC V8ISA,所有操作处理矢量都使用绝对寻址(如上文参考所述SVF指令所述)。结果,可以像ISA程序内部的正常变量那样使用测试矢量,由此使得所述测试访问部分和所述算法部分之间的接口自动化。作为范例,基于如上文所述利用所述SPARC V8ISA的TISA示范性实施,以下步骤例示了一种原型测试序列(I) SDR指令被用于从所述被测系统获得测试输出数据。所得输出数据被放置在特定的存储位置(例如,在所述GENERIC2寄存器中的“实际”参数);
(2)经典LOAD指令能够传输这种输出数据以使其被加载到寄存器中;(3) 一旦所述输出数据被中加载进寄存器,可以使用算术运算和/或逻辑运算处理所述输出数据(注意,由于所述SPARC V8ISA是加载/存储架构,所有数据必须要在被处理前加载到寄存器中);(4)使用经典的STORE指令向存储器传输所述算法的结果;以及(5) SDR指令能够向所述TAP发送新的测试输入数据(例如,使用所述TDI寄存器中的“TDI”参数)。注意,经典的算法操作⑵到⑷是针对任何ISA算法实施的标准,未由TISA以任何方式修改。于是,从这个简单的范例,显然可以利用任何给定算法或计算机程序支持TISA,在所述算法部分和所述测试访问部分之间具有自然且效率的切换。在所述TISA的这一示范性实施中,利用所述SPARC V8ISA,使用绝对寻址(为了清楚地描述所述TISA);不过,本领域的技术人员以及通过在此所述的教导能够获悉的人员能够修改所述TISA的这种示范性实施,以支持SPARC架构指南中描述的全部合法SPARCV8寻址方式。尽管在此主要参考使用SVF的所述TISA示范性实施进行图示和描述,但示范性实施中使用了 SVF,因为它是被证明能够提供完整,甚至基本的1149.1TAP处理的公知格式。本领域的技术人员将要理解并通过这里的教导获悉,可以利用任何其他适当的控制格式实施所述TISA,其中很多可以允许所述TAP状态机进行更细的颗粒控制并支持更完善的测试操作。尽管在此主要参考抽象层次为矢量层次的所述TISA的示范性实施进行图示和描述,但本领域的技术人员将要理解并从这里的教导获悉,在此所图示和描述的所述示范性TISA实施可以被修改,使得所述TISA的抽象层级是所述TAP层级或扫描段层级。出于描述TISA清楚的目的,在此参考图5和6图示和描述了示范性使用TISA以对示范性被测系统执行测试。在TISA的这种示范性使用中,利用SPARC V8ISA和SVF将所述TISA实施为矢量层级TISA( S卩,在参考图4A-4E图示和描述的示范性实施的续文中)。图5A和图5B示出了所述TISA的一种示范性使用,以对被测系统执行测试。图5A示出了包括JTAG TAP510和被测系统520的系统测试环境500。所述JTAG TAP510提供对被测系统520的测试访问。所述JTAG TAP510提供对所述被测系统520的测试访问,用于向被测系统520发送输入数据并从所述被测系统520接收输出数据。所述JTAG TAP510包括指令寄存器(IR) 512,这是8比特指令寄存器。所述JTAG TAP510被测试系统控制(例如,参考图3所示和所述的测试系统110,为了清楚起见省略)。所述被测系统520包括第一板521 (表不为BI)和第二板525 (表不为B2)。所述第一板521包括发送装置522 (表示为T)。所述第二板525包括接收装置526 (表示为R)。所述发送装置522在连接529上向接收装置526发送数据。在本范例中,所述连接529为8比特连接。如图5A中所示,可以从JTAG TAP510经由其自己的扫描链访问每个板。亦即,可以通过第一扫描链523访问第一板521,可以通过第二扫描链527访问第二板525。可以由JTAG TAP510的所述IR512选择所述第一扫描链523和所述第二扫描链527 (例如,IR = O选择第一板BI,IR = I选择第二板B2)。发送装置522和接收装置526不是单独处于其板上的;相反,它们是更宽扫描链的部分(例如,出于这个范例的目的,分别为24比特和16比特)。在测试程序中,输入数据经由所述第一扫描链523被发送至所述发送装置522,通过采用所述第二扫描链527从所述接收装置526收集所得的输出数据。为了执行全面测试,通过连接529发送所有可能的值,从而通过连接529发送28 = 256个矢量。利用C,一
种示范性程序可以如下:
1include <stdi0.h>
2include <jtag.h>
3
4char sent_value, received value;
5
6define MAX_COUNT 256;
7
8void main( void)
9[
10for (sent_value=0;sent_value<MAX_COUNT;sent_value++)
11{
12apply_JTAG(sent_Yalue,B1.T);
13read_JTAG (received—value,B2.R);
14if (sent_va1ue != received value) exit (0);
15}
16ex.1t(l);
17}在这个程序中,第二行包括处理JTAG操作的C模块,其中定义了分别用于第12行和第13行中的函数“apply_JTAG”和“ Read_JTAG”。SC320的预编译装置330识别这些功能,并生成用于TGT310的测试操作描述文件331。根据第一板521和第二板525的实际实施,所述测试操作描述文件331的格式可能有变化。例如,如果第一板521和第二板525都符合IJTAG,例如,可以利用新扫描描述语言(New Scan Description Language, NSDL)代码指定测试操作描述文件331。所述TGT310利用测试操作描述文件331生成TGT原子测试操作316,由TISA转换装置340将其转换成TISA原子测试操作346。所述TISA原子测试操作346被提供至SC320的前端324。在图5B中示出了 TGT原子测试操作316、关联的TISA原子测试操作346和所得的TISA 二进制编码。图5B示出了从C命令到TISA编码的映射,供测试系统用于进行图5A的所述系统测试环境500的测试。如图5B中所示,利用具有四列的表格540表示从C命令到TISA编码的映射“C命令”列541、“SVF指令”列542、“TISA汇编程序”列543和“TISA编码”列544。所述表格540从左至右示出了可以将C命令转换成SVF指令的方式,可以将其转换成TISA汇编程序,可以将其编码成TISA 二进制编码。所述Apply_JTAG (value,B1. T)命令被转换成两个 SVF 指令SIR8TDI (00)和SDR24TDI(value)。所述SIR8TDI (00) SVF指令由三个操作被转换成TISA汇编程序SET8, % cGENERIClSETOO, % cTDISIR TDI,其被转换成 TISA 编码,为 12010000。所述SDR24TDI (value) SVF指令由三个操作被转换为TISA汇编程序SET24, % cGENERIClSET value, % cTDISDR TDI,其被转换成 TISA 编码,为 1001000。Read_JTAG(value,B2. R)命令被转换为两条 SVF 指令SIR8TDI(01)和SDR16ACTUAL(value)。SIR8TDI (01) SVF指令由三个操作被转换为TISA汇编程序SET8, % cGENERIClSETOI,% cTDISIR TDI,其被转换成 TISA 编码,为 12010000。SDR16ACTUAL (value) SVF指令由三个操作被转换为TISA汇编程序SET16, % cGENERIClSET “value”,% cGENERIC2SDR ACTUAL,其被转换成 TISA 编码,为 10008000。所述SET操作的TISA编码不被指定,因为SPARC V8指南将它们定义为“伪指令”,其可能具有符合所述处理器实施的不同编码。利用所确定的TISA编码,预编译装置330现在可以利用其关联的TISA汇编指令替代高层次的JTAG访问。结果是利用C指定的以下代码,其中已经由所述关联的TISA汇编程序编码替代了对所述JTAG TAP的调用
权利要求
1.一种用于利用内电路仿真(ICE)测试目标硬件的一个或多个部件的方法,所述方法包括: 接收由至少一个ICE主机的多个目标ICE控制器生成的多个扫描段操作,所述多个目标ICE控制器与所述目标硬件的多个部件相关联; 至少部分基于所述目标硬件的扫描链来调度所述被接收的扫描段操作,以由此形成扫描段操作的调度集;以及 传播扫描段操作的所述调度集至处理器,所述处理器被配置以执行所述扫描段操作的调度集,用于测试所述目标硬件的一个或多个部件。
2.根据权利要求1所述的方法,其中,对于所述被接收的扫描段操作中的至少一个,所述被接收的扫描段操作被至少一个ICE主机的目标ICE控制器生成并准备提供给所述目标硬件上的处理器内核。
3.根据权利要求1所述的方法,其中,对于所述被接收的扫描段操作中的至少一个,所述被接收的扫描段操作被至少一个ICE主机的应用生成且准备提供给所述目标硬件上的专用集成电路(ASIC)的至少一个处理器内核。
4.根据权利要求1所述的方法,其中,所述方法由队列状态机执行,其中所述队列状态机包括: 事件循环、命令处理装置和电路控制模型; 其中所述事件循环被配置以接收由所述目标ICE控制器生成的所述扫描段操作并提供所述扫描段操作至所述命令处理装置; 其中所述命令处理装置被配置以从所述事件循环接收所述扫描段操作并提供所述扫描段操作至所述电路控制模型;并且 其中所述电路控制模型被配置以产生所述扫描段操作的调度集。
5.根据权利要求1所述的方法,其中利用电路控制模型产生扫描段操作的调度集。
6.根据权利要求5所述的方法,其中所述电路控制模型包括: 与所述目标ICE控制器相关联的多个电路模型的电路模型信息;以及用于对所述目标硬件的扫描拓扑进行建模的扫描拓扑信息,其中所述电路控制模型利用所述扫描拓扑信息产生所述扫描段操作的调度集。
7.根据权利要求5所述的方法,其中,对于每个被接收的扫描段操作,所述电路控制模型: 处理所述扫描段操作,以识别所述扫描段操作准备提供的目标,所述准备提供的目标是所述目标硬件的部件之一; 分配所述扫描段操作至与所述扫描段操作准备提供的目标相关联的所述电路控制模型的一部分。
8.根据权利要求1所述的方法,其中所述多个目标ICE控制器与单个ICE主机相关联,其中所述处理器是第一处理器,其中所述单个ICE主机包括第二处理器,其中所述第二处理器用作中央处理单元(CPU),且所述第一处理器用作协同处理器,以处理提供给所述第二处理器的所述扫描段操作的调度集。
9.一种设备,用于测 试目标硬件的一个或多个部件,所述设备包括: 队列状态机,被配置以:接收由至少一个ICE主机的多个目标ICE管理器生成的扫描段操作,所述多个目标ICE管理器与所述目标硬件的多个部件相关联; 至少部分地基于所述目标硬件的扫描链来调度所述被接收的扫描段操作;以及传播扫描段操作的调度集至处理器,所述处理器被配置以执行所述扫描段操作的调度集,用于测试所述目标硬件的一个或多个装置。
10.一种存储指令的计算机可读存储介质,当所述指令被处理器执行时,使所述处理器执行一种用于利用内电路仿真(ICE)测试目标硬件的一个或多个部件的方法,所述方法包括: 接收由至少一个ICE主机的多个目标ICE控制器生成的多个扫描段操作,所述多个目标ICE控制器与所述目标硬件的多个部件相关联; 至少部分基于所述目标硬件的扫描链来调度所述被接收的扫描段操作,以由此形成扫描段操作的调度集;以及 传播所述扫描段操作的调度集至处理器,所述处理器被配置以执行所述扫描段操作的调度集,用于测试所述目 标硬件的一个或多个部件。
全文摘要
在此提供一种虚拟内电路仿真(ICE)能力,以支持联合测试行动小组(JTAG)硬件的测试。虚拟ICE驱动器被配置以使得任何调试软件能够以灵活可变的方式与目标硬件连接。所述虚拟ICE驱动器被配置,使得被所述虚拟ICE驱动器所使用的所述测试指令集不需要计算矢量,由于所述JTAG操作被表示为在扫描段上的本地固有指令,由此ICE资源能够被直接访问。所述虚拟ICE驱动器被配置,使得ICE可能与基于仪器的JTAG方法(例如,IEEE P1687标准和其他适当的方法)相组合。所述虚拟ICE驱动器被配置以接收由至少一个ICE主机的多个目标ICE控制器生成的多个扫描段操作,至少部分基于所述目标硬件的扫描链来调度所述被接收的扫描段操作,以由此形成扫描段操作的调度集,以及提供扫描段操作的所述调度集至处理器,所述处理器被配置以执行用于测试所述目标硬件的扫描段操作的所述调度集。
文档编号G01R31/3185GK103080761SQ201180042165
公开日2013年5月1日 申请日期2011年6月15日 优先权日2010年6月30日
发明者苏雷什·戈雅尔, 米歇尔·波特兰, 布拉德福德·范特鲁尤伦 申请人:阿尔卡特朗讯
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1