CN103080761B - 用于虚拟内电路仿真的方法和设备 - Google Patents
用于虚拟内电路仿真的方法和设备 Download PDFInfo
- Publication number
- CN103080761B CN103080761B CN201180042165.XA CN201180042165A CN103080761B CN 103080761 B CN103080761 B CN 103080761B CN 201180042165 A CN201180042165 A CN 201180042165A CN 103080761 B CN103080761 B CN 103080761B
- Authority
- CN
- China
- Prior art keywords
- test
- tisa
- processor
- instruction
- ice
- 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.)
- Expired - Fee Related
Links
Classifications
-
- G—PHYSICS
- G01—MEASURING; TESTING
- G01R—MEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
- G01R31/00—Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
- G01R31/28—Testing of electronic circuits, e.g. by signal tracer
- G01R31/317—Testing of digital circuits
-
- G—PHYSICS
- G01—MEASURING; TESTING
- G01R—MEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
- G01R31/00—Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
- G01R31/28—Testing of electronic circuits, e.g. by signal tracer
- G01R31/317—Testing of digital circuits
- G01R31/3181—Functional testing
- G01R31/3185—Reconfiguring for testing, e.g. LSSD, partitioning
- G01R31/318533—Reconfiguring for testing, e.g. LSSD, partitioning using scanning techniques, e.g. LSSD, Boundary Scan, JTAG
- G01R31/318544—Scanning methods, algorithms and patterns
-
- G—PHYSICS
- G01—MEASURING; TESTING
- G01R—MEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
- G01R31/00—Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
- G01R31/28—Testing of electronic circuits, e.g. by signal tracer
- G01R31/317—Testing of digital circuits
- G01R31/3177—Testing of logic operation, e.g. by logic analysers
-
- G—PHYSICS
- G01—MEASURING; TESTING
- G01R—MEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
- G01R31/00—Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
- G01R31/28—Testing of electronic circuits, e.g. by signal tracer
- G01R31/317—Testing of digital circuits
- G01R31/3181—Functional testing
- G01R31/3185—Reconfiguring for testing, e.g. LSSD, partitioning
-
- G—PHYSICS
- G01—MEASURING; TESTING
- G01R—MEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
- G01R31/00—Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
- G01R31/28—Testing of electronic circuits, e.g. by signal tracer
- G01R31/317—Testing of digital circuits
- G01R31/3181—Functional testing
- G01R31/3185—Reconfiguring for testing, e.g. LSSD, partitioning
- G01R31/318533—Reconfiguring for testing, e.g. LSSD, partitioning using scanning techniques, e.g. LSSD, Boundary Scan, JTAG
- G01R31/318558—Addressing or selecting of subparts of the device under test
-
- G—PHYSICS
- G01—MEASURING; TESTING
- G01R—MEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
- G01R31/00—Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
- G01R31/28—Testing of electronic circuits, e.g. by signal tracer
- G01R31/317—Testing of digital circuits
- G01R31/3181—Functional testing
- G01R31/3185—Reconfiguring for testing, e.g. LSSD, partitioning
- G01R31/318533—Reconfiguring for testing, e.g. LSSD, partitioning using scanning techniques, e.g. LSSD, Boundary Scan, JTAG
- G01R31/318572—Input/Output interfaces
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Test And Diagnosis Of Digital Computers (AREA)
- Tests Of Electronic Circuits (AREA)
- Debugging And Monitoring (AREA)
Abstract
在此提供一种虚拟内电路仿真(ICE)能力,以支持联合测试行动小组(JTAG)硬件的测试。虚拟ICE驱动器被配置以使得任何调试软件能够以灵活可变的方式与目标硬件连接。所述虚拟ICE驱动器被配置,使得被所述虚拟ICE驱动器所使用的所述测试指令集不需要计算矢量,由于所述JTAG操作被表示为在扫描段上的本地固有指令,由此ICE资源能够被直接访问。所述虚拟ICE驱动器被配置,使得ICE可能与基于仪器的JTAG方法(例如,IEEE P1687标准和其他适当的方法)相组合。所述虚拟ICE驱动器被配置以接收由至少一个ICE主机的多个目标ICE控制器生成的多个扫描段操作,至少部分基于所述目标硬件的扫描链来调度所述被接收的扫描段操作,以由此形成扫描段操作的调度集,以及提供扫描段操作的所述调度集至处理器,所述处理器被配置以执行用于测试所述目标硬件的扫描段操作的所述调度集。
Description
相关申请的交叉引用
本申请是美国专利申请No.12/495,237,题为“用于使用多个指令类型进行系统测试的方法与设备(METHOD AND APPARATUS FORSYSTEM TESTING USING MULTIPLE INSTRUCTION TYPES)”(律师案号No.ALU/130137)、美国专利申请No.12/495,295,题为“用于使用多处理器进行系统测试的方法与设备(METHOD ANDAPPARATUS FOR SYSTEM TESTING USING MULTIPLEPROCESSORS)”(律师案号No.ALU/130137-2)和美国专利申请No.12/495,336,题为“用于使用扫描链分解进行系统测试的方法与设备”(律师案号No.ALU/130137-3)的部分延续,其中的每一个均提交于2009年6月30日,且均要求享有在2009年3月4日提交的美国临时专利申请No.61/157,412,题为“测试指令集架构(TESTINSTRUCTION SET ARCHITECTURE)”的权益,在此通过引用将这些申请全文并入。
技术领域
本发明涉及嵌入式系统的领域以及,尤其但不唯一地,涉及利用内电路仿真(ICE)测试嵌入式系统。
背景技术
在测试嵌入式系统时,内电路仿真(ICE)是用于调试运行在一个或多个处理器上的嵌入式软件的技术。在ICE中,嵌入式软件通常利用调试基础设施(例如,利用诸如GNU调试器(GDB)的调试器)被调试。在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操控矢量时涉及到的复杂性,严重限制了可能利用IEEE1149.7标准实现的特征,包括完全排除了对并行性的支持。
发明内容
现有技术中的各种不足被通过用于提供虚拟内电路仿真(ICE)的方法和设备得以处理。
在一个实施例中,一种方法包括,接收由至少一个ICE主机的多个目标ICE控制器生成的多个扫描段操作,所述多个目标ICE控制器与所述目标硬件的多个部件相关联;至少部分基于所述目标硬件的扫描链来调度所述被接收的扫描段操作,以由此形成扫描段操作的调度集;以及传播扫描段操作的所述调度集至处理器,所述处理器被配置以执行所述扫描段操作的调度集,用于测试所述目标硬件的一个或多个部件。
附图说明
通过结合附图参考下列详细描述,在此提出的教导可被容易地理解,其中:
图1示出了一种包括测试系统和被测系统的系统测试环境的高层框图;
图2示出了图1所述测试系统的一个实施例的高层框图,包括合作生成用于被测系统的测试指令的测试生成工具和软件编译装置;
图3示出了图1所述测试系统的一个实施例的高层框图,包括合作生成用于被测系统的测试指令的测试生成工具和软件编译装置;
图4A至4E示出了利用SPARC V8ISA的TISA的一种实现,示出了用于实现利用SPARC V8ISA的TISA的指令编码细节;
图5示出了利用SPARC V8ISA的TISA的一种实现,示出了用于实现利用SPARC V8ISA的TISA的一种示范性TISA架构;
图6示出了支持交互测试能力的基于TISA的测试环境的一个实施例;
图7示出了图6基于TISA的测试环境的一种示范性实现;
图8示出了一种用于执行图5A的被测系统的发送装置-接收装置通道优化的示范性程序架构;
图9示出了用于调节处理器的指令集架构(ISA)流以形成测试指令集架构(TISA)流的方法的一个实施例;
图10示出了用于生成适用于测试被测系统至少一部分的指令的方法的一个实施例;
图11A示出了用于生成适用于测试被测系统至少一部分的指令的方法的一个实施例;
图11B示出了用于生成适用于测试被测系统至少一部分的指令的方法的一个实施例;
图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。
所述TS110可以是适于测试SUT120的任何系统。所述TS110被配置以测试SUT120。所述TS110可以执行SUT120的任何测试,例如,测试SUT120的一个或多个独立部件,SUT120部件的一种或多种组合,SUT120部件之间的一个或多个互连,SUT120一个或多个系统级功能等,及其各种组合。所述TS110可以执行通常与测试被测系统相关联的任何功能,例如执行测试过程,向所述被测系统提供输入数据,从所述被测系统接收输出数据,处理从所述被测系统接收的输出数据用于确定系统测试结果,以及类似功能,及其各种组合。在下文中用于测试被测系统的TS110的设计和使用被更详细地描述。
所述SUT120可以是可以利用TS110测试的任何系统。所述SUT120可以包括任何一个(或多个)部件,至少一部分部件可以独立地和/或组合地被TS110测试。所述TS110可以包括一个或多个扫描链,具有一组或多组关联的输入和输出访问管脚,通过SUT120提供接入至被测的所述一个(或多个)部件。在测试SUT120中使用一个(或多个)扫描链测试SUT120的方式可以被本领域的技术人员所理解。例如,SUT120可以包括一个或多个板,可以利用一个或多个具有关联输入和输出访问管脚的扫描链进行其测试,所述访问管脚可用于向SUT120提供输入测试信号并从SUT120收集输出测试信号。
如图1所示,TS110经由测试访问接口(TAI)115访问SUT120。所述测试访问接口可以利用任何适当的测试访问接口被实现,其可以取决于所述TS110、所述SUT120、要执行的测试类型等中的一个或多个,及其各种组合。
例如,TAI115可以包括在IEEE1149.1标准中被标准化的联合测试行动小组(JTAG)测试访问端口(TAP),在此通过引用将其并入本文。IEEE1149.1标准定义了支持以下信号集的TAP:测试数据接入(Test Data In,TDI)、测试数据输出(Test Data Out,TDO)、测试模式选择(Test Mode Select,TMS)、测试时钟(Test Clock,TCK)以及可选地,测试复位信号(Test Reset Signal,TRST)。所述SUT120的TDI和TDO管脚在边界扫描中被互连,通过边界扫描链,TS110可以访问SUT120,以测试SUT120的至少一部分。
所述TAI115可以包括任何其他适当的测试访问接口。
本领域的技术人员能够理解,TS110、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中所示,所述TS110包括测试生成工具(TGT)210和软件编译装置(SC)220。
TGT210包括TGT编排器212和TGT算法214。
TGT编排器212接受系统描述文件211作为输入。所述系统描述文件211包括任何适当描述文件,所述描述文件可以由TGT使用,为测试被测系统而产生测试指令/矢量。例如,系统描述文件211可以包括电路描述文件、板/固定装置网表文件、其他描述文件等,及其各种组合。所述系统描述文件211可以存在于TGT210上和/或可以从一个或多个远程部件和/或系统获得。
所述系统描述文件211可以包括一个或多个电路描述文件。所述电路描述文件可以利用任何适当的一种(或多种)描述语言被指定,例如边界扫描描述语言(BSDL,作为针对板水平JTAG的IEEE1149.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之外,TS110还包括TISA编排器240。所述TISA编排器240接收所述TGT原子测试操作216和所述ISA原子操作226。所述TISA编排器240将所述TGT原子测试操作216转化为TISA指令并将所述TISA指令插入所述一个(或多个)ISA二进制文件225中(即,将所述TISA指令与所述ISA原子操作226组合以由此形成包括TISA原子操作246的TISA二进制文件245。)所述TISA编排器240可以是TGT210的一部分、SC220的一部分、跨越TGT210和SC220、被独立于TGT210和SC220而实现等。
可以理解的是,参考图2所示和所述的各种输入和输出可以通过任何其他适当方式及其各种组合被存储、显示、执行、传播和/或处理。
图3示出了图1所述测试系统的一个实施例的高层框图,包括合作生成用于被测系统的测试指令的测试生成工具和软件编译装置。
如图3中所示,图3的TS110以类似于图2的TS110的方式工作,即,包括TISA原子操作的TISA二进制文件利用所述测试产生工具和所述软件编译装置之间的交互被生成;不过,图3的TS110中测试产生工具和软件编译装置之间的交互与图2的TS110中测试产生工具和软件编译装置之间的交互不同。
如图3所示,所述TS110包括测试生成工具(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,TS110包括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(即,以所述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状态机进行完全控制。这能够对扫描操作进行更细化的控制,支持非标准序列(例如,像例如可寻址阴影协议(addressableshadow 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示出和描述了利用SPARC V8ISA的所述TISA的示范性实施。在这一示范性实施中,所述TISA被实现为矢量层级TISA,其允许对构成SVF格式的指令直接编码;然而,如上所述,可以理解的是,利用SPARC V8ISA的所述TISA的实施也可以被执行,其中,所述TISA被实现为TAP层级的TISA或扫描段层级的TISA。
所述SPARC V8ISA在很多产品中被实施,例如开源软件处理器系列Leon2和Leon3。
阅览SPARC国际有限公司(SPARC International,Inc),在1992出版的“SPARC架构指南第八版(The SPARC Architecture ManualVersion8)”(下文称为“SPARC架构指南(SPARC ArchitectureManual)”),表明很多代码字未在所述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状态的示范性比特编码。利用标识IEEE1149.1TAP状态名称的第一列、标识与IEEE1149.1TAP状态名称相关联的SVF TAP状态名称的第二列,以及标识用于对图4B的比特21至18的比特编码的第三列代表TAP状态的比特编码。可以理解的是,可以通过各种其他方式将所述比特编码分配给所述TAP状态。
SVF指令允许多个参数,所述参数需要在最终代码内部编码。为了表达所述参数,并为了保持指令和数据分离的通常架构最佳实践,为矢量层级的TISA的这种示范性实施定义基于寄存器的参数传送。于是,所述矢量层级的TISA描述了六个专用的32位寄存器:GENERIC1、GENERIC2、TDI、TDO、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。可以通过参考ASSETInterTech,Inc.,在1997的“系列矢量格式规范(Serial Vector FormatSpecfiication)”更好地理解这些SVF指令,这里通过参考将其全文并入。在下文中更详细地描述了在所述TISA的这种SPARC V8ISA实施方式中使用这些SVF指令。
ENDDR,ENDIR,S TATE.
ENDDR和ENDIR指令指出TAP接口结束其操作的TAP状态。所述STATE指令强制所述TAP接口成为指定状态。在所述TISA的这个示范性实施中,用于ENDDR、ENDIR和STATE指令的SVF编码分别为“000000”、“000001”和“000010”,如图4E中所示。可以根据需要利用“TAP状态”文件(即,图4C所示TAP状态的示范性比特编码)执行这些SVF指令的SVF编码。可以理解的是,至少通过阅览SVF指南,所述STATE指令能够可选地取状态的明确序列作为参数。在所述TISA的这一示范性实施中,取状态的明确序列作为参数会由一系列指令编码,每个指令用于序列中的一个状态。
FREQUENCY
FREQUENCY指令用于指定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,TIR
HDR、HIR、TDR和TIR指令的功能是不同的。在这里,将这些SVF指令一起考虑,因为(1)这些SVF指令功能上是类似的(即,即使它们性质不同,它们全都指挥移位操作),(2)这些SVF指令接受相同的参数:
(1)长度:表达要移动的比特数的32位数字;
(2)TDI(可选的):输入移位矢量;
(3)TDO(可选的):预期输出移位矢量;
(4)MASK(可选的):用于在比较实际值与TDO时使用的掩码(mask)。“1”表示关心,“0”表示不关心;以及
(5)SMASK(可选的):用于标记要在TDI中考虑哪些比特的掩码(mask)。“1”表示关心,“0”表示不关心。
在所述TISA的这一示范性实施中,用于HDR、HIR、TDR和TIR指令的SVF编码分别为“000110”、“000111”、“001010”和“001011”,如图4E中所示。
在所述TISA的这种示范性实施中,可以使用如下额外的编码:
(1)长度存储在所述GENERIC1寄存器中;
(2)在存在TDI时,O1为“1”,否则为“0”。如果设置了,TDI寄存器包含存储输入矢量的地址;
(3)在存在TDO时,O2为“1”,否则为“0”。如果设置了,TDO寄存器包含存储预期输出的地址;
(4)在存在MASK时,O3为“1”,否则为“0”。如果设置了,MASK寄存器包含存储输出掩码的地址;以及
(5)在存在SMASK时,O4为“1”,否则为“0”。如果设置了,SMASK寄存器包含存储输出掩码的地址。
SDR,SIR
SDR和SIR与HDR、HIR、TDR和TIR指令具有相同的语法,但具有功能差异:SDR和SIR触发对TAP的实际扫描操作。在交互式测试中,从系统读取的实际输出矢量对于算法而言是根本的,因此TISA提供了在存储器中存储实际输出矢量的可能性。当“TAP状态”字段(比特21-18,如图4B中所示)与零不同时,所述GENERIC2寄存器指出所述实际输出矢量的存储位置。因此,SDR和SIR能够支持最大七个参数。如果指定了TDO且实际输出矢量与预期输出矢量不同,在处理器状态寄存器(PSR)中设置溢出标记,如SPARC架构指南的4.2节中所述。
RUNTEST
RUNTEST指令迫使TAP接口在指定量时间内运行指定状态下的测试,主要用于控制RUNBIST操作(例如,如IEEE1149.1中所定义的)。所述RUNTEST指令接受一个或多个如下参数(全部为可选的):
(1)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)O1:如果定义了TAP_STATE,则为“1”,否则“0”;
(3)O2:如果指定了min_count,则为“1”,否则为“0”。如果设置了,所述GENERIC1寄存器包含min_count的32比特无符号表达;
(4)O3:如果设置了max_time,则为“1”,否则为“0”。如果设置了,所述GENERIC2寄存器包含max_count的32比特无符号表达。
(5)O4:如果设置了endstate,则为“1”,否则为“0”。如果设置了,比特13-10包含结束状态。
(6)比特9-0:如果指定了run_count,表达为无符号整数(maxrun_count=210=1024)。如果这个字段不是“0”,那么比特30表示run_clock(“1”=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 BIST Processor)的主测试控制器(Master Test Controller,MTC),在算法部分和测试访问部分之间使用相同的划分。在这样的嵌入式方法中,由必须分开编程的不同协处理器执行算法部分和测试访问部分。此外,算法部分和测试访问部分的存储器空间在物理上不同,使得所得的切换机制类似于STAPL的切换机制。结果是,用于测试访问部分的协处理器被迫在切换到算法部分之前存储大量扫描操作,而考虑到扫描链的越来越大尺寸,可能需要巨量的资源。
与现有用于集成测试的方法(例如基于脚本的方法,如SVF和STAPL,以及嵌入式方法,例如MTC和系统BIST处理器(System BISTProcessor))相比,所述TISA在所述算法部分(即经典ISA)内部集成了所述测试访问部分(即,测试操作),由此使得所述测试访问部分和所述算法部分共享同样的物理存储空间,从而使得在所述测试访问部分和所述算法部分之间的切换(以及,因此的数据传递)自动化。在TISA中,在所述测试访问部分和所述算法部分之间的切换在指令层级进行,使得处理器能够根据关联的调度策略按需要自由混合扫描和算法(即,自由混合测试操作和算法操作)。
在所述TISA的这一示范性实施中,利用所述SPARC V8ISA,所有操作处理矢量都使用绝对寻址(如上文参考所述SVF指令所述)。结果,可以像ISA程序内部的正常变量那样使用测试矢量,由此使得所述测试访问部分和所述算法部分之间的接口自动化。作为范例,基于如上文所述利用所述SPARC V8ISA的TISA示范性实施,以下步骤例示了一种原型测试序列:
(1)SDR指令被用于从所述被测系统获得测试输出数据。所得输出数据被放置在特定的存储位置(例如,在所述GENERIC2寄存器中的“实际”参数);
(2)经典LOAD指令能够传输这种输出数据以使其被加载到寄存器中;
(3)一旦所述输出数据被中加载进寄存器,可以使用算术运算和/或逻辑运算处理所述输出数据(注意,由于所述SPARC V8ISA是加载/存储架构,所有数据必须要在被处理前加载到寄存器中);
(4)使用经典的STORE指令向存储器传输所述算法的结果;以及
(5)SDR指令能够向所述TAP发送新的测试输入数据(例如,使用所述TDI寄存器中的“TDI”参数)。
注意,经典的算法操作(2)到(4)是针对任何ISA算法实施的标准,未由TISA以任何方式修改。
于是,从这个简单的范例,显然可以利用任何给定算法或计算机程序支持TISA,在所述算法部分和所述测试访问部分之间具有自然且效率的切换。
在所述TISA的这一示范性实施中,利用所述SPARC V8ISA,使用绝对寻址(为了清楚地描述所述TISA);不过,本领域的技术人员以及通过在此所述的教导能够获悉的人员能够修改所述TISA的这种示范性实施,以支持SPARC架构指南中描述的全部合法SPARC V8寻址方式。
尽管在此主要参考使用SVF的所述TISA示范性实施进行图示和描述,但示范性实施中使用了SVF,因为它是被证明能够提供完整,甚至基本的1149.1TAP处理的公知格式。本领域的技术人员将要理解并通过这里的教导获悉,可以利用任何其他适当的控制格式实施所述TISA,其中很多可以允许所述TAP状态机进行更细的颗粒控制并支持更完善的测试操作。
尽管在此主要参考抽象层次为矢量层次的所述TISA的示范性实施进行图示和描述,但本领域的技术人员将要理解并从这里的教导获悉,在此所图示和描述的所述示范性TISA实施可以被修改,使得所述TISA的抽象层级是所述TAP层级或扫描段层级。
出于描述TISA清楚的目的,在此参考图5和6图示和描述了示范性使用TISA以对示范性被测系统执行测试。在TISA的这种示范性使用中,利用SPARC V8ISA和SVF将所述TISA实施为矢量层级TISA(即,在参考图4A-4E图示和描述的示范性实施的续文中)。
图5A和图5B示出了所述TISA的一种示范性使用,以对被测系统执行测试。
图5A示出了包括JTAG TAP510和被测系统520的系统测试环境500。
所述JTAG TAP510提供对被测系统520的测试访问。所述JTAGTAP510提供对所述被测系统520的测试访问,用于向被测系统520发送输入数据并从所述被测系统520接收输出数据。所述JTAG TAP510包括指令寄存器(IR)512,这是8比特指令寄存器。
所述JTAG TAP510被测试系统控制(例如,参考图3所示和所述的测试系统110,为了清楚起见省略)。
所述被测系统520包括第一板521(表示为B1)和第二板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=0选择第一板B1,IR=1选择第二板B2)。发送装置522和接收装置526不是单独处于其板上的;相反,它们是更宽扫描链的部分(例如,出于这个范例的目的,分别为24比特和16比特)。
在测试程序中,输入数据经由所述第一扫描链523被发送至所述发送装置522,通过采用所述第二扫描链527从所述接收装置526收集所得的输出数据。为了执行全面测试,通过连接529发送所有可能的值,从而通过连接529发送28=256个矢量。利用C,一种示范性程序可以如下:
在这个程序中,第二行包括处理JTAG操作的C模块,其中定义了分别用于第12行和第13行中的函数“apply_JTAG”和“Read_JTAG”。SC320的预编译装置330识别这些功能,并生成用于TGT310的测试操作描述文件331。根据第一板521和第二板525的实际实施,所述测试操作描述文件331的格式可能有变化。例如,如果第一板521和第二板525都符合IJTAG,例如,可以利用新扫描描述语言(NewScan 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,%cGENERIC1
SET00,%cTDI
SIR TDI,其被转换成TISA编码,为12010000。
所述SDR24TDI(value)SVF指令由三个操作被转换为TISA汇编程序:
SET24,%cGENERIC1
SET value,%cTDI
SDR TDI,其被转换成TISA编码,为1001000。
Read_JTAG(value,B2.R)命令被转换为两条SVF指令:SIR8TDI(01)和SDR16ACTUAL(value)。
SIR8TDI(01)SVF指令由三个操作被转换为TISA汇编程序:
SET8,%cGENERIC1
SET01,%cTDI
SIR TDI,其被转换成TISA编码,为12010000。
SDR16ACTUAL(value)SVF指令由三个操作被转换为TISA汇编程序:
SET16,%cGENERIC1
SET“value”,%cGENERIC2
SDR ACTUAL,其被转换成TISA编码,为10008000。
所述SET操作的TISA编码不被指定,因为SPARC V8指南将它们定义为“伪指令”,其可能具有符合所述处理器实施的不同编码。
利用所确定的TISA编码,预编译装置330现在可以利用其关联的TISA汇编指令替代高层次的JTAG访问。结果是利用C指定的以下代码,其中已经由所述关联的TISA汇编程序编码替代了对所述JTAG TAP的调用:
这种代码可以被输入至所述前端算法322中,所述前端算法322将生成所述程序模型323。所述程序模型323可以被输入至所述后端算法324中,所述后端算法324将生成包括所述TISA原子操作356的该(等)可执行TISA二进制文件355。
表格540的“TISA编码”列544示出了TISA汇编指令的二进制编码(例如,如参考图4A-4E所示和所述,利用参考利用SPAR V8ISA的所述TISA的示范性实施所定义的各种规则)。
如这里所述,所述TISA提供了关于执行被测系统的测试(即,从TAP层级到扫描段层级)时测试粒度的完全自由度。如图2和图3中所示,并如利用图4A-4E和图5A-4B的示范性TISA实施的进一步解释,测试模式可以利用软件编译程序对测试生成工具的显式查询来被计算,使得所述软件算法的唯一限制是查询自身的分辨率。
作为范例,在粗糙层级上,从所述SC到所述TGT的查询可以涉及被测系统的完全扫描链(例如,在经典的基于BSDL的边界扫描测试中)。
作为范例,在精细的层级,从所述SC到所述TGT的查询可以涉及到寄存器,甚至比特。例如,专用的扫描段原语可能显著加快仪器的访问和TAP重新配置,提升代码的重复使用并提供各种其他优点。
作为范例,在粗细层级之间的中间层级某处,可以从功能上实现从所述SC到所述TGT的查询(例如,使用诸如IJTAG和其他适当标准的标准,以及使用诸如NSDL和其他适当的面向对象的描述语言的描述语言)。
通过这种方式,所述TISA不会迫使在模型空间中(即在所述TGT中)分辨装置/寄存器访问,而是允许开发者在问题空间中(即在所述SC中)处理装置/寄存器访问,由此使得开发者能够针对其需求和可用资源调整分析颗粒。
此外,在具有足够资源的所述TISA处理器实施例中,例如,在自动化的测试设备(ATE)中,可以在程序模型之内实施电路模型的至少一部分,由此使得所述TISA机器能够直接计算矢量模式。
此外,所述TISA能够支持先前没有所述TISA时不可能的各种其他系统测试能力,例如,包括交互式调试的交互式测试(局部和/或远程)、并发性、便携性等,及其各种组合。现在更详细地描述这些额外能力。
图6示出了支持交互测试能力的基于TISA的测试环境的一个实施例。
如图6中所示,基于TISA的测试环境600包括主计算机(HC)601、测试系统(TS)610和被测系统(SUT)620。
所述HC601被配置成控制TS610,以控制SUT620的测试。所述HC601包括耦合到存储器604的处理器602。所述处理器602和存储器604可以是任何适当的处理器和存储器。
所述存储器604存储一个或多个调试器控制程序605。该(等)调试器控制程序使得HC601跟踪,以及,在预期或必要时,改变运行于TS610上的一个(或多个)计算机程序的执行。例如,一个(或多个)调试器控制程序605可以包括GNU调试器(GDB)、dbx调试器、Perl调试器、Bash调试器、Python调试器等适当调试器程序的一种或多种,及其各种组合。
所述存储器604还可以存储一个或多个调试器显示程序606。该(等)调试器显示程序使得HC601显示与该(等)调试器控制程序605相关联的信息。可以通过一个(或多个)调试器显示程序606以任何适当方式(例如,使用一个或多个显示装置)显示与一个(或多个)调试器控制程序605相关联的信息。例如,一个(或多个)调试器显示程序606可以包括一种或多种Insight(所述Insight是GDB的一种图形用户界面),数据显示调试器(DDD,提供用于各种命令行调试器的图形用户界面,例如GDB和其他)以及像适当的调试器显示程序,及其各种组合。
所述TS610被HC601控制,以测试SUT620。所述TS610被配置成与所述TISA一致的方式(例如,参考图1-图3的TS110所示和所述),并且,此外,被配置以支持交互式测试(例如,通过使运行于HC601上的调试器能够访问)。
所述TS610包括耦合到存储器614的TISA处理器612。所述TISA处理器612可以利用任何适当的处理器被实现,例如SPARC V8(如上文参考图4A-4E和图5所示和所述)、INTEL等。所述存储器604可以是任何适当的存储器。
所述存储器614存储一个或多个调试器程序余段615。所述调试器程序余段615理解运行于HC601上的对应的一个(或多个)调试器控制程序605的调试器协议,由此,使得HC601能够与TS610通信。例如,一个(或多个)调试器余段615可以包括GDB余段、DBX余段、Perl余段、Bash余段、Python余段的一种或多种,以及适当的调试器程序余段及其各种组合。
所述存储器614存储TISA二进制文件616。所述TISA二进制文件616由TS610以在此参考图2和图3所示和所述的方式被生成。所述TISA二进制文件616被TISA处理器612执行,以对SUT620进行测试。
TS610还包括耦合到TISA处理器612的测试访问端口(TAP)618。所述TAP618提供TISA处理器612和SUT620之间的测试接口,使得TISA处理器612能够进行SUT620的测试,同时受到HC601的控制。所述TAP618可以是任何适当的TAP(例如,1149.1TAP)。
所述TISA处理器612利用接口617与TAP618接口连接。所述接口617可以是TAP和被测系统之间的任何适当接口(例如,支持TCK、TMS、TDI、TDO以及,可选地,TRST的接口,其中TAP618被实现为1149.1TAP)。
如图6中所示,在HC601和TS610之间有接口609。所述接口609可以支持HC601和TS610之间的本地通信和/或远程通信。于是,HC601可以通过TS610在本地和/或远程控制SUT620的交互式测试。
例如,对于本地测试,接口609可以被实现为通用异步接收装置-发射装置(UART)接口、串行接口等的一个或多个,及其各种组合。
例如,为了远程测试,可以利用任何适当的通信能力,例如传输控制协议(TCP)/网际协议(IP)或任何其他适当的通信协议实现接口609。这实现了在HC601和TS610被大的地理距离所分开的远程测试中,HC601将仍然能够控制TS610,以执行SUT620的测试。
在基于TISA的测试环境600中,所述HC601能够通过经由标准连接(例如UART、TCP/IP等)的TS610的控制操作来逐步控制SUT620上的测试执行,由此实现交互式测试和调试能力。
尽管为了清楚起见的目的而省略,可以理解的是,HC601和TS610可以包括各种其他组件,例如额外的处理器、额外的存储器、内部通信总线、输入/输出模块、额外的支持电路(例如电源)等,及其各种组合。
尽管为了清楚起见的目的而省略,可以理解的是,所述SUT620可以是任何可以利用TISA测试的被测系统。
尽管主要参考特定类型的调试器控制程序、调试器显示程序、接口等示出和描述,可以理解的是,所述基于TISA的测试环境600通过利用各种其他调试器控制程序、调试器显示程序、接口等以及其各种组合以实现完全交互式的测试能力的方式而被实现。
图7示出了图6的基于TISA的测试环境的一种示范性实现。
如图7中所示,图7的示范性基于TISA的测试环境700是图6的所述基于TISA的测试环境600的实施方式,其中GNU工具套件(GUN Tool Suite)被用于支持图5A的所述示范性系统测试环境500的交互式测试。
如图7中所示,示范性基于TISA的测试环境700包括主计算机(HC)701、测试系统(TS)710和被测系统(SUT)720。
所述HC701包括处理器702和存储器704。图7的HC701是图6的HC601的实施方式,其中利用GDB(GDB705)实施一个(或多个)调试器控制程序605,利用DDD(DDD706)实施一个(或多个)调试器显示程序606。
所述TS710包括TISA处理器712和存储器714。图7的TS710是图6的TS610的实施方式,其中利用SPARC V8ISA(表示为SPARCV8TISA处理器712)实现所述TISA处理器612,利用GDB余段(GDB余段715)实现一个(或多个)调试器程序余段615,并且,基于与SPARC V8TISA处理器712相关联的SPARC V8ISA(TISA二进制文件716)生成TISA二进制文件616。
所述TS710还包括耦合到SPARC V8TISA处理器712的测试访问端口(TAP)718。图7的TS710是图6的TS610的实施方式,其中利用1149.1TAP(1149.1TAP718)实现TAP618。
所述SPARC V8TISA处理器712利用接口717与1149.1TAP718接口连接。所述接口717是支持TCK、TMS、TDI、TDO和可选的TRST的标准1149.1接口。
所述SUT720是图5A的SUT520。所述SUT720包括不同板上的发送装置和接收装置,如图5A的SUT520中那样。
所述1149.1TAP718提供了在SPARC V8TISA处理器712和SUT720之间的测试接口,用于使SPARC V8TISA处理器712能够执行SUT720的测试,同时受到HC701的控制。
如图7所示,在HC701和TS710之间有接口709。所述接口709可以支持在HC701和TS710之间的本地通信和/或远程通信(例如通过网络)。于是,HC701可以通过TS710在本地和/或远程控制SUT720的交互式测试。
在示范性基于TISA的测试环境700中,所述HC701能够通过经由接口709控制TS710的操作来逐步控制SUT720上的测试执行,由此实现交互式测试和调试能力。
可以理解的是,图7左侧的大部分,即整个HC701以及TS710上的GDB余段715,重复使用现有的计算机科学元件。对于图7的中心部分是同样情况,其中HC701和TS710(以及其关联子元件)之间的相似性是显然的。所述TISA允许利用这种完整的基础设施提供系统测试。
作为范例,参考图5A的所述系统测试环境(包括关联的所述示范性C程序、SVF指令、TISA汇编指令和TISA编码),有很多TISA能够通过利用GDB(或任何其他适当调试器)能够实现的交互式测试操作,例如(a)逐步执行,同时监测变量“sent_value”和“received_value”;(b)即时修改将发送给所述TAP的值(变量“sent_value”);(c)修改循环结束条件;(d)监测所有变量;等等,及其各种组合。这些交互式测试操作是用于GDB的标准操作,所述TISA能够直接使用它们,这是因为TISA能够自动在算法和测试访问部分之间切换控制的能力,如上所述。在没有TISA时,需要开发专用工具并针对每次切换实施调整。
尽管这里主要结合使用GNU工具套件以支持特殊被测系统的交互式测试来图示和描述了图7的示范性基于TISA的测试环境700,但本领域的技术人员应能理解到并通过这里的教导获悉,可以利用用于测试任何类型的被测系统的任何适当的工具套件实现基于TISA的测试环境。
尽管这里主要结合线性测试流程图示和描述了图6的基于TISA的测试环境600和图7的示范性基于TISA的测试环境700,其中,在线性测试流程中,遵循预定算法(为了清楚地描述由TISA实现的交互式测试能力的目的)逐步进行测试,可以理解的是,由于利用计算机科学经验和由TISA所实现的技术,可能有其他更复杂的交互式测试场景。这里结合图8图示和描述了由TISA实现的更复杂交互式测试场景的范例。可以理解的是,这仅仅是一个范例,本领域的技术人员以及从这里的教导可以获悉的人员,可以在很多其他交互式测试场景和应用中使用TISA。
如在此所述,除了支持粒度和交互作用两者之外,所述TISA还支持并行。
TISA自然并完整地合并了系统测试流与计算机科学软件流,因此,能够利用两种流的最好方面。作为范例,诸如STAPL的方法在操控仪器的并行控制上具有困难,因为这样的方法根据定义是完全连续的。此外,诸如MTC和SystemBIST的方法是固有连续的和单任务的,并且,因此,编制这样的方法以支持并行会是困难且不适合的。相反,并行执行是计算机科学中的公知问题,例如,现在处在所有操作系统的底层。大量支持并行执行的库(例如,POSIX套件、BOOST套件等),以及最现代的处理器被设计成有效率地支持多任务和语境切换(例如,SPARC V8,例如实施轮询寄存器窗口)。系统测试流和TISA实现的计算机科学软件流之间的自然交互允许所述TISA完全利用这样的计算机科学方法实现并行。
可以通过举例的方式更好地理解TISA对并行能力的支持。作为范例,考虑在图5A和图7的被测系统520的发送装置522和接收装置526之间优化T-R通道的数据传送速率的问题。这会涉及到从第一板521上的发送装置522发送数据模式流,在第二板525上的接收装置526处接收对应的数据模式流,以及比较发送和接收的数据模式流以计算比特/误码率并相应地调谐发送装置522和/或接收装置526的参数。可以利用并行工作的三个程序有效地执行这种优化。
图8示出了一种用于对图5A和图7的被测系统的发送装置-接收装置通道进行优化的示范性程序架构。
如图8中所示,示范性程序架构包括模式生成装置802、模式接收装置804和比较装置806。所述模式生成装置802、模式接收装置804和比较装置806合作以优化图5A和图7的被测系统520的发送装置522和接收装置526之间的T-R通道的数据传送速率。
所述模式生成装置802向第一板521上的发送装置522(T)发送适当的输入数据模式。所述模式生成装置802能够访问TAP(例示地,图5A中的TAP510、图7中的TAP718),以便通过第一板521(B1)的扫描链523向发送装置522提供输入数据模式。所述模式生成装置802可以通过任何适当方式(例如,如这里参考图5A所述的代码的12-13行所述)向所述发送装置522提供输入数据模式。所述输入数据模式可以是适于优化发送装置522和接收装置526之间的T-R通道的任何数据模式。例如,所述输入数据模式可以是预计算的模式、随机模式等,及其各种组合。
所述模式接收装置804从第二板525上的所述接收装置526(R)收集适当的输出数据模式。所述模式接收装置804能够访问TAP(例示地,图5A中的TAP510,图7中的TAP718),以通过第二板525(B2)的扫描链527从接收装置526收集输出数据模式。所述模式接收装置804可以通过任何适当方式(例如,如这里参考图5A所述的代码14-15行)从所述接收装置526收集输出数据模式。
所述比较装置806与模式生成装置802和模式接收接收804通信。比较装置比较所述输入数据模式和所述输出数据模式。所述比较装置806评估T-R通道的比特传输速率和比特误码率,并且,能够基于所述比较结果,访问发送装置522和接收装置526(为了清楚起见,从图5A和图7中省略)的控制寄存器,以优化T-R通道的参数。
为了执行这样的优化测试流程,模式生成装置802、模式接收装置804和比较装置806需要并行工作,每个都必须能够独立于其他的来访问所述TAP。这种类型的控制结构在传统环境中非常难以编码,开发其仅仅为了支持对TAP上的单点顺序切换控制。这种类型的控制结构还非常难以在采用MTC或其他这样的方法的环境中编码,这种环境也共享相同的顺序TAP访问样式。相反,所述TISA不是利用任何这样假定相关的测试访问而被设计;而是,在TISA中,以类似于其他处理器资源的方式处理测试访问,测试访问指令直接与经典ISA指令混合。利用所述TISA,可以利用标准结构,像过程、线程、过程间通信(IPC)等以及其各种组合,通过任何多任务操作系统执行图8的优化测试流程。通过这种方式,模式生成装置802、模式接收装置804和比较装置806能够共享对TAP的访问,能够如针对所有处理器资源所做那样分辨任何最终的TAP共享问题,例如,使用公知的构造和算法,例如Dijkstra信号灯。于是,尽管现有的系统测试能力不支持并行,但显然,所述TISA容易且完全支持并行。
如上文所述,TISA未对测试访问方法或关联的测试程序划分做出任何假设;相反,以与经典ISA指令以相同方式,或基本相同的方式处理测试指令,两者之间无需任何先验分离。这使得TISA能够与所有现有(以及,很可能还有将来)计算机科学算法和构造完全兼容,这是现有测试处理器方法不能支持的。
因此,可以理解的是,可以向所述TISA架构中导入任何现有软件库。例如,采用POSIX和BOOST套件能够简单地获得多任务和并行性(例如,如这里参考图8所示和所述)。此外,可以理解的是,在所述TISA的获取为现有ISA一般化的情况下(例如,如结合参考图5A和图5B所示和所述示范性SPARC V8TISA实施的所示和所述),甚至可能不必导入,因为开发TISA所据的ISA将已经包括这样的软件库。
此外,可以理解的是,可以利用各种其他计算机科学技术以利用TISA提供改进的系统测试。例如,可以为TISA利用的这种计算机科学技术的一些范例包括:(a)使用独立于平台的编码风格;(b)使用ISA到ISA转换装置;(c)使用虚拟机方法,例如像用于Java,以获得独立于平台的字节码,或甚至Java虚拟机自身的扩展以变为TISA;以及(d)使用应用编程接口(API)以对一些TISA软件接口进行标准化,然后通过适当驱动程序将其转换成原语。可以理解的是,这些范例仅仅是可以被TISA所利用的计算机科学技术的几个范例。
图9示出了用于调整处理器指令集架构(ISA)流以形成测试指令集架构(TISA)流的方法的一个实施例,所述测试指令集架构(TISA)流包括适于由处理器在测试被测系统至少一部分时使用的TISA指令。
尽管这里的主要图示和描述为顺次执行,但方法900的步骤的至少一部分可以被并行执行,或与参考图9所示和所述的不同次序执行。
在步骤902,方法900开始。
在步骤904,生成第一指令集。所述第一指令集包括由处理器支持的ISA指令(即,用于为处理器提供TISA的ISA指令)。
在步骤906,生成第二指令集。所述第二指令集包括与被测系统相关联的测试指令。可以通过任何适当方式生成所述第二指令集,例如,如结合图2的TGT210的所示和所述,如结合图3的TGT310的所示和所述,和/或利用任何其他适当的生成测试指令的方法。
在步骤908,所述第一指令集和所述第二指令集被集成以由此形成TISA指令。所述TISA指令为处理器提供TISA。
在步骤910,所述TISA指令被存储、显示、传播和/或执行,或其任何组合。所述TISA指令可以通过任何其他适当的方式被处理。
在步骤912,方法900结束。
可以通过任何适当方式形成TISA,例如,如结合图10的方法1000的所示和所述,如结合图2的测试系统和图11A的关联方法1110的所示和所述,如结合图3的测试系统和图11B的关联方法1120的所示和所述和/或使用任何其他适当的形成TISA的方法。
图10示出了用于生成适用于测试被测系统至少一部分的指令的方法的一个实施例。尽管这里的主要图示和描述为顺次执行,但方法1000的步骤的至少一部分可以被并行执行,或与参考图10所示和所述的不同次序执行。在步骤1002,方法1000开始。
在步骤1004,生成第一指令集。所述第一指令集包括通过编译至少一个计算机科学软件文件生成的指令(例如,处理器支持的ISA的ISA指令)。
在步骤1006,生成第二指令集。所述第二指令集包括通过编译与被测系统相关联的至少一个描述文件生成的测试指令。
在步骤1008,所述第一和第二指令集被组合以形成指令组合集。在所述指令组合集中,调整所述第一指令集的指令以控制所述第二指令集的测试指令的执行。
在步骤1010,所述指令组合集被存储、显示、传播和/或执行,或其任何组合。所述指令组合集可以通过任何其他适当的方式被处理。
在步骤1012,方法1000结束。
图11A和图11B示出了参考图9所示和所述的方法900和/或参考图10所示和所述的方法1000的更详细实施例。
图11A示出了生成适用于测试被测系统至少一部分的指令的方法的一个实施例。尽管这里的主要图示和描述为按特定序列执行,图11A的方法1110的步骤的至少一部分可以被与参考图11A所示和所述的不同次序执行。通过结合图2和图2的相关描述观察图11A,可以更好地理解它。
在步骤1111,方法1000开始。
在步骤1112,生成程序模型。通过编译至少一个计算机科学软件文件(例如,处理器支持的ISA的ISA指令)生成所述程序模型,其中所述至少一个计算机科学软件文件包括至少一个调用。
在步骤1113,生成第一指令集。利用所述程序模型生成所述第一指令集。还利用所述至少一个计算机科学软件文件中包括的至少一个调用生成至少一个计算请求。
在步骤1114,生成电路模型。通过编译与所述被测系统相关联的至少一个系统描述文件生成所述电路模型。
在步骤1115,生成第二指令集。利用所述电路模型和所述至少一个计算请求生成所述第二指令集。
在步骤1116,组合所述第一和第二指令集以形成指令组合集。在所述指令组合集中,调整所述第一指令集的指令以控制所述第二指令集的测试指令的执行。
在步骤1117,所述指令组合集被存储、显示、传播和/或执行,或其任何组合。所述指令组合集可以通过任何其他适当的方式被处理。
在步骤1118,方法1000结束。图11B示出了用于生成适用于测试被测系统至少一部分的指令的方法的一个实施例。尽管这里的主要图示和描述为顺次执行,但图11B的方法1120的步骤的至少一部分可以被并行执行,或与参考图11B所示和所述的不同次序执行。结合图3和图3的相关描述观察图11B,可以更好地理解它。
在步骤1121,方法1100开始。
在步骤1122,通过预处理至少一个计算机科学软件文件生成至少一个预处理计算机科学软件文件和至少一个测试操作描述文件。
在步骤1123,生成电路模型。通过编译与所述被测系统和所述至少一个测试操作描述文件相关联的至少一个系统描述文件生成所述电路模型。
在步骤1124,生成测试操作集。利用所述电路模型生成所述测试操作集。利用测试原语集(例如,由生成所述电路模型的测试生成工具所定义的测试原语)描述来自所述测试操作集的测试操作。所述测试原语集包括适用于测试所述被测系统的测试操作。
在步骤1125,通过将所述测试操作集的测试原语转换成适用于结合指令集架构的软件指令的测试指令,将所述测试操作集转换成测试指令集。
在步骤1126,生成程序模型。通过编译至少一个预处理的计算机科学软件文件和所述测试指令集生成所述程序模型。
在步骤1127,生成指令组合集。利用所述程序模型生成所述指令组合集。所述指令组合集包括(a)从至少一个预处理计算机科学软件文件确定的软件指令,和(b)来自该所述测试指令集的测试指令。
在步骤1128,所述指令组合集被存储、显示、传播和/或执行,或其任何组合。所述指令组合集可以通过任何其他适当的方式被处理。
在步骤1129,方法1120结束。
图12示出了TISA处理器架构的一个示范性实施例。
如图12中所示,所述TISA处理器架构1200包括TISA处理器1210和存储器1220。
所述TISA处理器1210可以是适于利用TISA进行系统测试的任何处理器,例如SPARC V8处理器、INTEL处理器或任何其他适当的处理器。
所述存储器1220可以包括适于由TISA处理器1210使用以支持利用TISA进行系统测试的任何存储器,包括随机存取存储器、持续存储器等中的一种或多种,及其各种组合。所述存储器1220可以存储利用TISA进行系统测试所需的任何信息,例如测试程序、TISA指令、测试数据等,及其各种组合。
在一个实施例中,例如,图12的TISA处理器架构1200可以支持结合图2和图3所示和所述的TISA流。
在一个实施例中,例如,图12的TISA处理器架构1200可以通过类似于结合图6所示和所述的测试系统610的TISA处理器612和存储器614的方式工作。例如,图12的TISA处理器架构1200可以利用SPARC V8TISA处理器和关联的存储器而被实现,例如在参考图7所示和所述的测试系统710中的所述SPARC V8TISA处理器和关联的存储器。在这样的实施例中,所述TISA处理器1210自身解释并执行所述ISA和TISA指令。
在一个实施例中,在通过测试访问端口(TAP)测试被测系统的至少一部分时使用的设备包括用于存储测试指令集架构的指令集的存储器和执行所述测试指令集架构的指令集以通过TAP测试被测系统的至少一部分的处理器。所述测试指令集架构的指令集包括第一指令集和第二指令集,所述第一指令集包括被处理器所支持的指令集架构(ISA)的多个指令,所述第二指令集包括与TAP相关联的多个测试指令,其中,第一类指令的指令和第二类指令的指令被集成以由此形成所述测试指令集架构的指令集。
在一个实施例中,用于通过测试访问端口(TAP)测试被测系统至少一部分的TISA处理器包括第一类指令,所述第一类指令包括处理器支持的指令集架构(ISA)的指令,以及第二类指令,所述第二类指令包括与TAP相关联的测试指令,其中,所述第一组指令的ISA指令和所述第二组指令的测试指令被集成以形成适于测试所述被测系统至少一部分的TISA。
在一个实施例中,用于通过测试访问端口(TAP)测试被测系统(SUT)的计算机处理器包括配置成根据测试指令集架构(TISA)处理指令的电路,所述测试指令集架构具有能够通过TAP与被测系统交互的语义。所述TISA包括第一类型的多条指令和第二类型的多条指令,其中所述第一类型的指令包括计算机处理器支持的指令集架构(ISA)的指令,所述第二类型的指令包括用于通过TAP测试被测系统的测试指令。
尽管上文主要相对于以特定方式(例如,使用特定语言描述不同类别和/或类型的指令)定义的TISA处理器的实施例进行图示和描述,可以理解的是,可以通过由这里提供的各种TISA的图示和描述来完全支持的用其他方式定义TISA。
尽管这里主要结合利用单个处理器实现所述TISA处理器架构以支持TISA的实施例进行图示和描述,但在其他实施例中,可以利用多个处理器实现所述TISA处理器架构。
图13示出了利用多个处理器提供系统测试能力的测试处理器架构的一种示范性实施例。
如图13所示,测试处理器架构1300包括通过通信路径1330通信的主要处理器1310和辅助处理器1320。
所述主要处理器1310可以是适于支持系统测试的任何处理器,例如SPARC V8处理器、INTEL处理器或任何其他适当的处理器。所述主要处理器1310执行用于测试被测系统的指令。在一个实施例中,例如,主要处理器1310可以支持测试功能,所述测试功能类似于图12的TISA处理器架构1200的CPU1210所支持的功能(例如,其中测试处理器架构1300利用了TISA)。在一个实施例中,例如,主要处理器1310可以支持测试功能,所述测试功能被不利用TISA的测试处理器架构中的测试处理器所支持。所述主要处理器1310可以支持各种其他测试能力。
所述辅助处理器1320可以是适于支持系统测试的任何处理器,例如SPARC V8处理器、INTEL处理器或任何其他适当的处理器。所述辅助处理器1320支持通往被测系统(为了清楚起见省略)的测试访问端口(TAP)接口。所述TAP接口可以与任何适当的TAP连接。例如,所述TAP接口可以提供通往IEEE1149.1TAP或任何可用于测试被测系统的其他适当TAP的接口。
所述主要处理器1310和辅助处理器1320合作以执行被测系统的至少一部分的测试。
所述主要处理器1310执行用于测试被测系统的测试指令。所述测试指令可以是TISA(其中测试处理器架构1300利用了TISA)的测试指令或不与TISA相关联的测试指令(其中测试处理器架构1300不利用TISA)。所述主要处理器1310在执行测试指令期间,检测与控制所述被测系统的TAP相关的指令(例如,用于向被测系统的TAP控制器加载输入数据的指令,用于从被测系统的TAP控制器读取输出数据的指令,以及类似的指令,及其各种组合)。所述主要处理器1310向辅助处理器1320提供与TAP相关的指令。所述辅助处理器1320从主要处理器1310接收TAP相关的指令。所述辅助处理器1320执行所述与TAP相关的指令。所述主要处理器1310继续执行测试指令,同时辅助处理器1320执行从主要处理器1310接收的所述TAP相关的指令。通过这种方式,所述主要处理器1310可以执行语境切换并继续工作,同时辅助处理器1320通过被测系统的TAP控制扫描操作。利用单处理器方法这是困难的,因为在单个处理器控制TAP时,单个处理器被防止执行其他操作。因此,如在测试处理器架构1300中那样,使用多个处理器在测试效率方面实现了显著改善,而无需使用高端处理器,尤其是考虑到在TAP上的操作通常比处理器执行单个操作所需的时间花费更长时间。
由通信路径1330方便了主要处理器1310和辅助处理器1320之间合作以执行被测系统至少一部分的测试。可以利用主要处理器1310和辅助处理器1320之间的任何适当的通信手段实现通信路径1330,其可以取决于实现测试处理器架构1300所用的多处理器架构的类型。例如,通信路径1330可以包括主处理器接口总线、辅助处理器接口、通信接口(例如串行器-解串器(SERDES)接口或其他适当的通信接口)中的一个或多个等,及其各种组合。
尽管为了清楚起见而省略,可以理解的是,所述测试处理器架构1300将包括存储器(例如随机存取存储器、持续存储器、高速缓冲存储器等,及其各种组合)。所述测试处理器架构1300的存储器可以包括由主要处理器1310和辅助处理器1320共享的存储器,专用于主要处理器1310的存储器,专用于辅助处理器1320的存储器等中的一个或多个,及其各种组合。
尽管为了清楚起见而省略,可以理解的是,所述测试处理器架构1300可以包括各种其他的支持电路,例如总线、I/O电路等,及其各种组合。
可以通过多种方式实现图13的测试处理器架构1300。
在一个实施例中,例如,所述测试处理器架构可以使用测试协处理器单元架构,其中中央处理器单元(CPU)与测试协处理器单元(TCPU)合作,以支持系统测试。参考图14示出和描述了一种示范性实施例。
在一个实施例中,例如,所述测试处理器架构可以使用测试辅助处理器单元架构,其中中央处理器单元(CPU)与测试辅助处理器单元(TAPU)合作,以支持系统测试。参考图15示出和描述了一种示范性实施例。
图14示出了测试协处理器架构的一种示范性实施例。所述测试协处理器架构1400适于用作TISA处理器架构,用于支持利用TISA的系统测试。所述测试协处理器架构1400还适于用作测试处理器架构,用于支持未采用TISA的系统测试。
所述测试协处理器架构1400包括中央处理器单元(CPU)1410、测试协处理器单元(TCPU)1420、主存储器1430和闪速存储器1440。
所述测试协处理器架构1400包括主处理器接口总线1451。所述CPU1410、TCPU1420、主存储器1430和闪速存储器1440均耦合至(或以其他方式配置成能够与其通信)所述主处理器接口总线1451。
所述测试协处理器架构1400还可以包括辅助处理器接口1452,其直接耦合CPU1410和TCPU1420,由此能够在CPU1410和TCPU1420之间直接通信。
所述CPU1410可以是适于执行被测系统的系统测试的任何CPU。所述CPU1410支持结合图13所示和所述的主要处理器1310所支持的测试能力。
所述TCPU1420可以是适于方便被测系统的系统测试的任何CPU。所述TCPU1420支持测试访问端口(TAP)接口1460,其可以与任何适当的TAP连接(例如IEEE1149.1TAP或用于测试被测系统的任何其他适当的TAP)。所述TCPU1420支持结合图13所示和所述的辅助处理器1320所支持的测试能力。
所述CPU1410和TCPU1420合作以通过类似于结合图13所示和所述的主要处理器1310和辅助处理器1320的方式,执行被测系统至少一部分的测试。所述CPU1410和TCPU1420利用指令异常处理,以便使CPU1410能够继续工作以处理测试指令,同时TCPU1420执行与TAP相关的指令,以在测试期间控制被测系统的TAP。
所述CPU1410执行测试指令以测试被测系统。所述CPU1410在执行测试指令期间,检测指令异常(即,与控制被测系统的TAP相关的指令)并向TCPU1420提供所述指令异常。所述TCPU1420从CPU1410接收所述指令异常并处理所述指令异常,使得所述TCPU1420能够处理指令异常,同时CPU1410继续工作以执行其他任务(例如,执行其他测试指令)。换言之,CPU1410和TCPU1420在系统测试期间合作,使得CPU1410可以切换语境并继续工作以执行其他任务,同时TCPU1420处理由CPU1410检测的指令异常,由此改善系统测试效率。
在一个实施例中,所述CPU1410包括缓存1411,例如,用于改善CPU1410的性能。
在一个实施例中,所述TCPU1420包括直接存储器存取(DMA)单元1421,其可以是任何类型的适用于支持系统测试的DMA单元。在一个实施例中,例如,DMA单元1421是分散/收集(S/G)DMA单元。所述TCPU1420可以利用DMA单元1421,以便处理从CPU1410接收的指令异常,并高效率地访问在存储器中存储的可感测数据。在一个实施例中,CPU1410可以在遇到指令异常之前配置S/GDMA表。
在一个实施例中,所述TCPU1420支持特定的TCPU指令集。所述特定的TCPU指令集可以支持TAP的访问和控制。所述特定的TCPU指令集可以由TCPU1420用于对TAP状态机执行特定的TAP操作。
所述CPU1410和TCPU1420利用主存储器1430和/或闪速存储器1440执行各种测试功能,例如由CPU1410执行测试指令,由CPU1420处理指令异常,由TCPU1420执行TCPU指令等,及其各种组合。所述主存储器1430可以是任何适当的处理器存储器。所述闪速存储器1440可以是任何适当的闪速存储器或任何适当形式的持续存储器。所述CPU1410和TCPU1420通过访问判定来共享存储器。所述CPU1410和TCPU1420还可以共享存储器,以交换信息。尽管主要结合特定数量和类型的存储器进行示出和描述,可以理解的是,可以使用各种其他的存储器方案支持由CPU1410和TCPU1420执行的功能。
所述CPU1410和TCPU1420利用CPU1410和TCPU1420之间的通信,以及CPU1410和/或TCPU1420和测试协处理器架构1400的其他部件(例如主存储器1430、闪速存储器1440和其他部件)之间的通信等及其各种组合进行被测系统的测试。可以利用主处理器接口总线1441和辅助处理器接口1452之一或两者支持通信。CPU1410和TCPU1420之间的通信可以包括与指令异常通知、中断访问、DMA判定等及其各种组合相关联的通信。CPU1410和TCPU1420与测试协处理器架构1400的其他部件之间的通信可以包括与从存储器读取、向存储器写入和/或可以在支持测试被测系统时执行的任何其他任务相关联的通信。
图15示出了测试辅助处理器架构的一种示范性实施例。所述测试辅助处理器架构1500适于用作TISA处理器架构,用于支持利用TISA的系统测试。所述测试辅助处理器架构1500还适于用作测试处理器架构,用于支持不采用TISA的系统测试。
所述测试辅助处理器架构1500包括中央处理器单元(CPU)1510和测试辅助处理器单元(TAPU)1520。所述CPU1510和TAPU1520可以存在于同一板上或可以存在于不同板上。
所述CPU1510可以是适于执行被测系统的系统测试的任何CPU。所述CPU1510支持结合图13所示和所述的主要处理器1310所支持的测试能力。
所述CPU1510具有主存储器1530M、闪速存储器1530F和与之关联的输入/输出模块1540。所述CPU1510具有与之关联的主处理器接口总线1550。所述CPU1510、主存储器1530M、闪速存储器1530F和输入/输出模块1540均耦合至(或以其他方式配置成能够与之通信)所述主处理器接口总线1550。
在一个实施例中,所述CPU1510包括缓存1511,例如,用于改善CPU1510的性能。
所述TAPU1520可以是适于方便被测系统的系统测试的任何CPU。所述TAPU1520包括输入/输出模块1521。所述TAPU1520支持测试访问端口(TAP)接口1590,其可以与任何适当的TAP连接(例如IEEE1149.1TAP或用于测试被测系统的任何其他适当的TAP)。所述TAPU1520支持结合图13所示和所述的辅助处理器1320所支持的测试能力。
所述TAPU1520具有与之关联的本地测试存储器1560。所述TAPU1520具有与之关联的内部接口总线1570。所述TAPU1520和本地测试存储器1560均耦合至(或以其他方式配置成能够与其通信)内部接口总线1570。
与CPU1510相关联的所述输入/输出模块1540和TAPU1520的所述输入/输出模块1521支持通信接口1580实现在CPU1510和TAPU1520之间的通信。所述通信接口1580支持从CPU1510至TAPU1520的TAP相关命令的流传输。
在一个实施例中,与CPU1510相关联的所述输入/输出模块1540和TAPU1520的所述输入/输出模块1521支持串行器-解串器(SERDES)通信能力,并且,因此,所述通信接口1580是基于SERDES的通信接口。在这一实施例中,可以利用任何适当的SERDES通信协议(例如,千兆比特以太网(GigE)、串行快速IO(SRIO)、外围组件互联快速(PCIe)等)实现所述基于SERDES的通信接口1580。尽管这里主要结合在CPU1510和TAPU1520之间使用基于SERDES的通信进行示出和描述,但可以使用其他适当的通信能力以支持CPU1510和TAPU1520之间的通信。
所述CPU1510和TAPU1520合作以通过类似于结合图13所示和所述的主要处理器1310和辅助处理器1320的方式进行被测系统至少一部分的测试。所述CPU1510和TAPU1520利用经由通信接口1580的命令流,以使得CPU1510能够继续工作以处理测试指令,同时TAPU1520执行与TAP相关的指令,用于在测试期间控制所述被测系统的TAP。
所述CPU1510执行测试指令以测试被测系统。所述CPU1510在执行测试指令期间,检测与控制被测系统的TAP相关的指令。所述CPU1510通过通信接口1580向TAPU1520传播与TAP相关的指令(即从CPU1510,通过所述主处理器接口总线1550,向输入/输出模块1540,以通过通信接口1580传播)。所述TAPU1520从CPU1510接收与TAP相关的指令,并处理与TAP相关的指令,使得所述TAPU1520可以处理对TAP的控制,同时CPU1510继续工作以执行其他任务(例如,执行其他测试指令)。换言之,CPU1510和TAPU1520在系统测试期间合作,使得CPU1510可以切换语境并继续工作以执行其他任务,同时TAPU1520处理由CPU1510检测的与TAP相关的指令,由此提高系统测试效率。
在一个实施例中,CPU1510对由CPU1510检测并由TAPU1520处理的与TAP相关的指令分组化,用于向TAPU1520传播。
在一个实施例中,由CPU1510检测并由TAPU1520处理的与TAP相关的指令包括TAPU1520支持的操作码。在一个这样的实施例中,所述与TAP相关的指令还可以包括一个或多个扩展命令,适于用在与CPU1510相关联的存储器和与TAPU1520相关联的存储器之间(例如主存储器1530M和本地测试存储器1560之间)执行块存储器拷贝。
所述CPU1510利用主存储器1530M和/或闪速存储器1530F以执行各种测试功能,例如执行测试指令、检测与TAP相关的指令、对与TAP相关的指令进行分组化等,及其各种组合。所述主存储器1530M可以是任何适当的处理器存储器。所述闪速存储器1530F可以是任何适当的闪速存储器或任何其他适当的持续存储器。
所述TAPU1520利用本地测试存储器1560以执行各种测试功能,例如存储从CPU1510接收的与TAP相关的指令,处理从CPU1510接收的与TAP相关的指令等,及其各种组合。所述本地测试存储器1560可以是任何适当的处理器存储器。在一个实施例中,所述本地测试存储器1560可能相对较小,因为它进行被测系统扫描链的扫描链段的处理,而不是整个扫描链的处理(其在芯片上的存储器中可能被需要)。
尽管主要结合特定数量和类型的存储器进行示出和描述,可以理解的是,可以使用各种其他的存储器方案,以支持由CPU1510和TCPU1520所执行的功能。
尽管这里主要结合使用协处理器架构或辅助处理器架构实施TISA来进行图示和描述,可以理解的是,可以利用任何适当的处理器架构实施TISA,其可以包括除所述协处理器架构或所述辅助处理器架构之外的处理器架构。因此,可以利用多个处理器通过各种其他方式实现所述TISA处理器架构,其中至少一些可以包括使用超过两个处理器以支持TISA。
尽管这里主要结合使用协处理器架构或辅助处理器架构以实施TISA来进行图示和描述,但本领域的技术人员可以理解到并通过这里的教导获悉,所述协处理器架构和辅助处理器架构均可用于实施其他类型的测试架构(即,未采用TISA的其他测试架构)。
可以理解的是,所述测试协处理器架构和所述测试辅助处理器架构在功能上是类似的,因为每个都使得能够由两个通信处理器执行TISA。在一个给定的应用中,可以由设计者基于取决于实施的参数,例如可用资源、成本、性能、物理限制(集成在同一芯片中、不同的芯片和/或板中,或其任何组合),以及任何其他实施参数,在两种架构间进行选择。尽管这里主要结合测试协处理器和测试辅助处理器架构进行示出和描述,但本领域的技术人员可以理解到并通过这里的教导获悉,这些实施意见将适用于任何其他类型的测试架构/基础设施。
在此所示和所述的TISA处理器架构可以采用任何适当的TISA以在执行系统测试中使用。
下面是适用于TISA处理器架构的TISA的一个示范性实施例的描述。TISA的这种示范性实施例是这里所示和所述的扫描端层级原语的实施。在扫描段层级的抽象层级中,将被测系统的总体扫描链分成段,然后将其用作算法的数据原子。可以理解的是,可以由算法开发者将被测系统划分成扫描段,所述开发者可以是人和/或自动工具。在下文中详细提供了使用TISA以能够在扫描段层级执行扫描操作的更一般描述,即独立于这一示范性TISA实施的描述。
TISA的以下实施例提出了一组能够定义和处理那些扫描段的寄存器和指令。以下实施例基于32比特大小的TISA,但可以适于任何其他字长(例如,16比特、64比特或任何其他适当的字尺寸)。
图16示出了能够被TISA处理器使用的示范性寄存器组。所述示范性TISA包括分别在图16A至16D中所示的四个寄存器组(表示为寄存器组R1到R4)。
如图16A所示,所述第一寄存器组R1包括以下用户可访问数据寄存器:
●状态寄存器(StatusRegister):32比特寄存器,包含稳定声明信息;
●控制寄存器(ControlRegister):32比特寄存器,包含命令编码;
●块寄存器(BlockRegister):32比特寄存器,包含存储器中对预先格式化的数据结构的偏移,所述预先格式化的数据结构间接指向扫描数据(收集数据),并写出数据(分散数据)[用于所有扫描和比较操作,以访问分散/收集段描述];
●扫描长度寄存器(ScanLengthRegister):32比特寄存器,剩余要扫描的当前数量的比特存在于其中(还自动被用于块模式操作码的分散/收集段描述所填充);
●扫描状态寄存器(ScanStateRegister):32比特寄存器,包含3个4比特的库,表示扫描操作的开始状态(startState)、扫描状态(scanState)和结束状态(endState)。4个比特表示TAP状态机的16个状态编码。(也被从块模式中的分散/收集段描述所填充);以及
●用户数据寄存器[1-11](UserDataRegisters[1-11]):32比特寄存器,包含用于小扫描操作和数据重复使用的扫描段数据(可以是源或目的寄存器)。
如图16B中所示,所述第二寄存器组R2包括以下内部擦除寄存器:
●块指针寄存器(BlockPointerRegister):32比特寄存器,指向要在多个扫描指令期间被处理的当前分散/收集段描述的参考;
●块计数寄存器(BlockCountRegister):32比特寄存器,包含要在多个扫描指令期间被处理的分散/收集段描述;以及
●指令寄存器(InstructionRegister):32比特寄存器,其中放置用于解码的当前操作码。
如图16C中所示,所述第三寄存器组R3包括以下分散/收集段描述寄存器:
●块偏移段(BlockOffsetField):32比特数字,描述使用64比特架构时的地址库;
●扫描长度段(ScanLengthField):32比特整数,指定要为这个段扫描的比特数;
●扫描遍历段(StateTraversalField):3个4比特的字段,均代表针对这一扫描操作的起始状态、扫描状态和最终状态(每4个比特表示16状态TAP状态机的状态);
●源位置段(SourceLocationField):32比特基址,用于TDI数据存在于存储器中的地址;
●目的位置段(DestinationLocationField):32比特基址,将在存储器中存储TDO数据的地址;
●预期值段(ExpectedValueField):32比特地址,用于预期矢量存在于存储器中的地址;
●响应位置段(ResponseLocationField):32比特基址,用于被捕获的TDI数据存在于存储器中的地址;
●屏蔽段(MaskField):32比特基址,用于限制比较操作的屏蔽(MASK)数据存在于存储器中的地址;
●结果位置段(ResultLocationField):32比特基址,将在存储器中存储比较结果的地址。
如图16D中所示,所述第四寄存器组R4包括以下多块分散/收集段描述寄存器:
●块偏移段(BlockOffsetField):32比特数字,描述使用64比特架构时的地址库;
●块计数器(BlockCountField):32比特数字,界定由这一多块扫描表示的扫描段的数量(用于在多块扫描操作期间对块计数寄存器初始化);
●分散收集操作码段(ScatterGatherOpcodeField):32比特命令操作码,用于由关联的分散收集块段指向的分散/收集段描述;以及
●分散收集块段(ScatterGatherBlockField):32比特地址,用于与先前的分散收集操作码段相关联的分散/收集段描述位于存储器中的地址。
可以理解的是,可以通过任何适当方式修改所述示范性TISA寄存器组。例如,每个示范性寄存器组都可以被修改以包括更少、更多和/或不同的寄存器。例如,可以将所述示范性寄存器重新分组成更少、更多和/或不同组。例如,可以使用更少、更多和/或不同的寄存器组。换言之,可以利用适用于TISA指令组以实现TISA处理器架构的任何其他一个(或多个)TISA寄存器组替换所述示范性TISA寄存器组。
所述示范性TISA可以采用任何适当的TISA指令集(即,命令字典)以在执行系统测试时使用。
所述示范性TISA指令集包括以下操作码,可以利用所述操作码操作结合图16A-16D所示和所述的寄存器组R1到R4,以及在此所示和所述的初始ISA寄存器组:
状态转换<TMS值>,<TCK周期>(StateTransition<TMS Value>,<TCK cycles>)
●所述操作码被用于针对给定数量的TCK时钟周期的TMS值遍历TAP状态机。所述操作码被用于执行TAP状态机状态之间的一般状态过渡。所述<TMS值>表示单个比特,
而所述<TCK周期>表示所述操作码剩余数据的比特。
运行测试<开始状态>,<测试状态>,<结束状态>(RunTest<startState>,<testState>,<endState>)
●使用这个操作码从<开始状态>过渡到<测试状态>,并在<测试状态>中循环由扫描长度寄存器指定的TCK周期数。使用所述操作码过渡到<结束状态>作为循环的结束。
扫描寄存器<源寄存器>,<目标寄存器>[,<预期寄存器>][,<屏蔽寄存器>](ScanRegister<source register>,<destinationregister>[,<expected register>][,<mask register>])
●所述操作码被用于扫描用户数据寄存器<源寄存器>中的数据并向用户数据寄存器<目标寄存器>中存储所捕获的值。如果存在<预期寄存器>,将所捕获的数据与之比较并因此增大误差,最终使用<屏蔽寄存器>(如果有的话)。在扫描长度寄存器中定义了被扫描的比特数(0<=n<32)。在扫描状态寄存器中定义开始、扫描和结束状态。
扫描寄存器零<目标寄存器>[,<预期寄存器>][,<屏蔽寄存器>](ScanRegisterZero<destination register>[,<expected register>][,<maskregister>])
●所述操作码被用于扫描全为“0”的矢量值并向用户数据寄存器<目标寄存器>中存储所捕获的值。在扫描长度寄存器中定义了被扫描的比特数(0<=n<32)。在扫描状态寄存器中定义开始、扫描和结束状态。
<预期寄存器>和<屏蔽寄存器>如在扫描寄存器指令中那样被使用。
扫描寄存器一<目标寄存器>[,<预期寄存器>][,<屏蔽寄存器>](ScanRegisterOne<destination register>[,<expected register>][,<mask register>])
●所述操作码被用于扫描全为“1”的矢量值并向用户数据寄存器<目标寄存器>中存储所捕获的值。在扫描长度寄存器中定义了被扫描的比特数(0<=n<32)。在扫描状态寄存器中定义开始、扫描和结束状态。
<预期寄存器>和<屏蔽寄存器>如在扫描寄存器指令中那样被使用。
扫描块(ScanBlock)
●所述操作码被用于将块寄存器指向的数据扫描到所述SUT,所述扫描开始于<开始状态>,通过<扫描状态>扫描数据,以<结束状态>完成如框图的状态遍历段定义的所述操作状态。在扫描操作之前利用来自扫描遍历段的数据填充扫描状态寄存器。在扫描操作之前利用来自扫描长度段的数据填充扫描长度寄存器。不保存来自TDO的数据。如果设置了预期值段和屏蔽段,则相应地进行比较和误差生成。
扫描块捕获(ScanBlockCapture)
●所述操作码被用于将块寄存器指向的数据扫描到所述SUT,所述扫描开始于<开始状态>,通过<扫描状态>扫描数据,以<结束状态>完成如框图的状态遍历段定义的所述操作状态。在扫描操作之前利用来自扫描遍历段的数据填充扫描状态寄存器。在扫描操作之前利用来自扫描长度段的数据填充扫描长度寄存器。保存从TDO所捕获的数据。如果设置了预期值段和屏蔽段,则相应地进行比较和误差生成。
扫描块零捕获(ScanBlockZeroCapture)
●所述操作码被用于将全部为“0”的数据矢量扫描到所述SUT,所述扫描开始于<开始状态>,通过<扫描状态>扫描数据,以<结束状态>完成如框图的状态遍历段定义的所述操作状态,在块寄存器定义的寄存器中捕获结果。在扫描操作之前利用来自状态遍历段的数据填充扫描状态寄存器。在扫描操作之前利用来自扫描长度段的数据填充扫描长度寄存器。如果设置了预期值段和屏蔽段,则相应地进行比较和误差生成。
扫描块零(ScanBlockZero)
●所述操作码被用于将全部为“0”的数据矢量扫描到所述SUT,所述扫描开始于<开始状态>,通过<扫描状态>扫描数据,以<结束状态>完成如框图的状态遍历段定义的所述操作状态,不捕获结果。在扫描操作之前利用来自扫描遍历段的数据填充扫描状态寄存器。在扫描操作之前利用来自扫描长度段的数据填充扫描长度寄存器。如果设置了预期值段和屏蔽段,则相应地进行比较和误差生成。
扫描块一捕获(ScanBlockOneCapture)
●所述操作码被用于将全部为“1”的数据矢量扫描到所述SUT,所述扫描开始于<开始状态>,通过<扫描状态>扫描数据,以<结束状态>完成如框图的状态遍历段定义的所述操作状态,在块寄存器定义的寄存器中捕获结果。在扫描操作之前利用来自扫描遍历段的数据填充扫描状态寄存器。在扫描操作之前利用来自扫描长度段的数据填充扫描长度寄存器。如果设置了预期值段和屏蔽段,则相应地进行比较和误差生成。
扫描块一(ScanBlockOne)
●所述操作码被用于将全部为“1”的数据矢量扫描到所述SUT,所述扫描开始于<开始状态>,通过<扫描状态>扫描数据,以<结束状态>完成如框图的状态遍历段定义的所述操作状态,不捕获结果。在扫描操作之前利用来自扫描遍历段的数据填充扫描状态寄存器。在扫描操作之前利用来自扫描长度段的数据填充扫描长度寄存器。如果设置了预期值段和屏蔽段,则相应地进行比较和误差生成。
所述示范性TISA指令集包括以下使用显式值的寄存器修改指令:
寄存器显式载入<常量>,<寄存器名称>(LoadRegisterExplicit<const value>,<register name>)
●这条指令向<寄存器名称>命名的寄存器中加载<常量>的恒定值。
寄存器复制<源寄存器>,<目的寄存器>(CopyRegister<sourceregister>,<destination register>)
●这条指令将命名为<源寄存器>的寄存器的内容复制到由<目的寄存器>命名的寄存器中。
所述示范性TISA指令集包括以下使用隐式值的寄存器修改指令:
寄存器隐式载入<用户数据寄存器>,<寄存器名称>(LoadRegisterImplicit<user data register>,<register name>)
●这条指令使用命名为<用户数据寄存器>中的值作为指向实际数据所在存储位置的指针,并向由<寄存器名称>命名的寄存器中存储所述参考的值。
所述示范性TISA指令集包括以下寄存器保存指令:
寄存器隐式存储<寄存器名称>,<用户数据寄存器>(StoreRegisterImplicit<register name>,<user data register>)
●这条指令使用命名为<用户数据寄存器>中的值作为指向存储位置的指针,所述存储位置中要存储由<寄存器名称>命名的寄存器中的值。
寄存器显式存储<寄存器名称>,<常量>(StoreRegisterExplicit<register name>,<const value>)
●这条指令向<常量>指定的存储位置中存储由<寄存器名称>命名的寄存器的值。
所述示范性TISA指令集包括以下对寄存器的逻辑操作:
与<源寄存器>,<目的寄存器>(AND<source register>,<destination register>)
●这种操作在<源寄存器>和<目的寄存器>之间执行逻辑与操作并在<目的寄存器>中放置所得的值。
或<源寄存器>,<目的寄存器>(OR<source register>,<destinationregister>)
●这种操作在<源寄存器>和<目的寄存器>之间执行逻辑或操作并在<目的寄存器>中放置所得的值。
异或<源寄存器>,<目的寄存器>(XOR<source register>,<destination register>)
●这种操作在<源寄存器>和<目的寄存器>之间执行逻辑异或操作并在<目的寄存器>中放置所得的值。
非<源寄存器>,<目的寄存器>(NOT<source register>,<destination register>)
●这个操作对<源寄存器>执行逻辑非操作并在<目的寄存器>中放置所得的值。
M异或<源寄存器>,<屏蔽寄存器>,<目的寄存器>(XORM<source register>,<mask register>,<destination register>)
●这种操作在用户数据寄存器<源寄存器>和用户数据寄存器<目的寄存器>之间执行逻辑异或操作,仅比较与用户数据寄存器<屏蔽寄存器>包含值“1”的比特对准的那些比特,并在<目的寄存器>中放置所得的值。注意,未比较的比特将在<目的寄存器>中导致“0”值。
所述示范性TISA指令集包括以下对寄存器的杂项操作:
NOP
●无操作的操作码,用作填充器以在一些ISA指令集中提供对准。
所述示范性TISA指令集包括以下指令,所述指令用于扩展对使用辅助处理器架构的实施例的流传输支持:
存储器写入(MemoryWrite)
●这条指令利用以下自变量向本地测试存储器写入:<序列号>、<块偏移(32比特偏移)>、<传输字节数>、<目的地址(在指定的存储区中)>、<数据字节>。
存储器读取(MemoryRead)
●这条指令利用以下自变量从本地测试存储器读取:<序列号>、<块偏移(32比特偏移)>、<传输字节数>、<源地址(在指定的存储区中)>。这条指令返回一串利用序列号和被传输字节数所标记的数据字节。
所述示范性TISA指令集包括以下用于扫描状态的值:
开始状态,扫描状态,结束状态
●扫描状态码包括:测试逻辑重置(TLR)、运行测试/空闲(RTI)、暂停DR(PDR)、暂停IR(PIR)、扫描DR(SDR)、扫描IR(SIR)。每个状态码有4比特表达,使用12个比特描述针对扫描操作的完整状态过渡序列。
本领域的技术人员能够理解并通过这里的教导获悉,可以将各种其他TISA实施方式用于这里所示和所述的TISA处理器架构。例如,其他TISA实施方式可以使用更少、更多和/或不同的寄存器,可以使用更少、更多和/或不同的指令集等,及其各种组合。在一个实施例中,可以利用其他TISA实施方式,其中使用了不同的处理器架构,以便提供更好地适合特定应用和/或任何其他适当理由的TISA实施方式。
如上文所述,使用在JTAG架构中的TISA使得能够在扫描段层级上执行扫描操作,这样允许在整个扫描路径内部定义独立可控的“扫描段”,由此提供一个灵活且功能强大的原语集,可用于直接在问题空间中定义扫描操作并在实施时间分辨所述扫描操作。
通常,JTAG操作基于所述扫描操作,其中顺次地一个接一个扫描输入所有比特,同时顺次地一个接一个扫描输出比特。这意味着,为了能够执行扫描操作,需要了解所述扫描链中每个比特需要哪个值(即,输入和输出矢量)。TGT通常通过从经由诸如BSDL的描述语言所获得的系统模型计算所需矢量,而为传统结构性测试提供了这种能力。此外,像SVF和STAPL的格式反映了这一点,因为它们允许用户操作那些矢量。尽管通过这种方式测试对于结构性(和其他类型)测试而言是足够的,但对于交互布置而言通过这种方式测试非常低效,在交互布置中实际不需要访问整个扫描链。可以通过考虑一个范例理解这种低效。
例如,考虑由100个仪器构成的扫描链,每个仪器具有16比特。如果用户需要在所述扫描链中第76个仪器的寄存器中写入0x1234,所述TGT需要产生用于整个所述扫描链的矢量(100*16=1600比特),并将其发送到TAP接口,以被输入到所述扫描链中。类似地,如果所述用户希望读取关联的输出,所述TGT需要在能够提取所要求的输出信息之前接收整个1600比特矢量。在本范例中,大多数扫描比特无用的这一事实并不重要,因为扫描效率不是目标之一(相反,在本范例中,目标主要是能够有效率地访问扫描链中的一个特定实体)。
这种方法至少由于以下原因而具有问题:(a)对处理长矢量有计算需求(例如,大量的存储传输对性能有很大影响);(b)需要在存储器中存储整个一个(或多个)矢量(对于长链而言可能是个问题);(c)存储器存储不限于数据输入和数据输出,而且还包括预期的数据、输入和输出掩码等(由此倍增了仅仅从输入和输出数据而言就已经可能紧张的存储要求);以及(d)必须每次进行从仪器-矢量-仪器的转换(这需要计算能力和时间)。
所述扫描段层级抽象层级是提供对被测系统扫描链的个体实体或实体组高效访问的强大工具,无需任何对扫描效率的特殊强调(当然,如果需要仍然能够实现)。
在一个实施例中,通过将扫描链分解成一系列段并在每个段上定义一个或多个扫描操作来实现扫描段层级的抽象。所述扫描链由多个元件构成,且每个段至少包括所述扫描链元件之一。可以在被测系统的很多层级上定义所述元件(例如,元件可以是装置、仪器、寄存器、寄存器的段等,及其各种组合),并且,因此,可以在被测系统的很多层次定义将扫描链分解成的段(例如,段可以包括一个或多个装置、一个(或多个)装置的一部分、一个或多个仪器、一个(或多个)仪器的一部分、一个或多个寄存器、一个(或多个)寄存器的一部分、一个或多个寄存器段等,及其各种组合)。通过这种方式,段可以代表所述扫描链的最小控制单元。
在一个实施例中,将扫描链分解成段可以是分层的。例如,可以将所述扫描链分解成段,其中至少一些段可以由子段构成,其中至少一些所述子段还可以由子段构成,等等。通过这种方式,可以将扫描链的分层分解视为具有基于树的结构,其中段可以由其他段构成。在一个这样的实施例中,树叶处的段可以被称为段(因为它们代表所述扫描链的最小控制单元),可以将位于树叶上方的段称为超级段。可以理解的是,在一个实施例中,所述扫描链的一个或多个段可以由可控的虚拟子段构成,但仅以对用户/系统透明的方式构成。可以通过任何其他适当方式定义扫描链的分层分解。
使用分段法能够针对段的类型和/或段组合的类型定义实体。实体是一种对目标类型的一般性描述,对于该类型目标的每种物理实例都有效且可以重复使用。例如,实体可以定义装置、一组装置、装置的一部分、仪器、一组仪器、仪器的一部分等,及其各种组合的描述。因此,由于可以分解扫描链,使得扫描链的段包括特定段或元件组合,可以为扫描链的相应段和/或段的相应组合定义实体。例如,在分解扫描链使得段包括仪器时,可以为该类型的段定义实体(即每个段包括该类型的仪器),使得可以针对所述扫描链中该类型段的每个物理实例重新使用实体。类似地,例如,在分解扫描链使得段包括多个仪器时,可以为该类型的段定义实体(即每个段包括该类型的仪器组合),使得可以针对所述扫描链中该类型段的每个物理实例重新使用实体。这使得能够支持额外的特征和功能,如下所述。
使用分段法允许将实体(即,在控制之下的一类段的描述)与用于和实体通信的物理协议相关。结果,可以针对所述实体特定地编写描述语言(例如,NSDL、P1687IJTAG PDL等),以及连接性描述部分(例如NSDL或IJTAG HDL的结构)会描述分段指令的次序。
TISA提供了可重用的模块性,可以针对特定实体类型的所有出现将其定义一次,因为所述TISA指令是基于段的操作,而不是基于模型的操作。因此,由于TISA对于特定段中的被测实体既是模块化的又是自治的,所以TISA相对于现有架构提供了显著优点。
TISA使得能够直接将测试数据寄存器定义映射到可重复使用便携式模块中,所述模块可以按照需要的任何次序被插入到扫描过程中的任何点的执行流中,无需像现有工具要求那样事先将整个连接性定义为静态模型。TISA使得能够基于统一的控制流和标准计算机科学技术将未扫描的端口/信号接口通过扫描操作集成为单个方案空间架构(相对于使用本机语言构造提供对未扫描操作的访问的方案提供了显著优点)。
TISA使得能够针对同一实体的多个实例重复使用指令序列,由此能够减少在系统中对代码存储的要求。例如,可以编写广义函数,所述广义函数映射到被管理程序所调用的描述语言函数。在本范例中,每个函数都是代表实体的本机语言对象的方法,针对系统中定义的每个实体,可能有这些对象的独立实体,但可以有单独的代码副本用于和这些实例的每个通信。通过这种方式,本机语言实施模型直接控制用于指定电路的连接性和功能性的描述语言。
参考上文给出的范例,使用扫描段层级抽象能够定义三个段如下:段S1,包括仪器1到75,段S2,包括仪器76,以及段S3,包括仪器77到100。通过这种方式,大大简化了对仪器76的访问。例如,可以通过如下方式获得对仪器76的访问:针对段S3进行“虚拟偏移”(例如,扫描块零(ScanBlockZero)),针对段S2(即,仪器76)执行指令,针对段S1执行另一虚拟偏移,然后利用更新终止。在这样的序列中,除了对段S1或段S3的长度之外,无需任何了解,就可提供对段S2(即,对所述扫描链中特定仪器)的访问。可以理解的是,这仅仅是一个范例,并且,因此,对100仪器长的链的其他分解是可能的,以实现对其他仪器或仪器组的访问。
图17示出了一种被测系统的高层框图,示出了被测系统的示范性扫描链的示范性分解。
示范性SUT1700包括四个装置17101-17104(统称为装置1710;在图17中分别表示为装置1、装置2、装置3和装置4)。在SUT1700之内顺序布置装置1710以形成扫描链1720。所述扫描链1720如下:TAP的TD被I连接至装置17104的输入端口,装置17104的输出端口被连接至装置17103的输入端口,装置17103的输出端口被连接至装置17102的输入端口,装置17102的输出端口被连接至装置17101的输入端口,以及装置17101的输出端口被连接至TAP的TDO。
在示范性的SUT1700中,装置1710的每一个都包括(1)输入解复用装置,向测试指令寄存器(TIR)和测试数据寄存器(TDR)提供输入,以及(2)输出复用器,用于从所述TIR和所述TDR收集输入。每个装置1710的所述TIR和TDR都是并行寄存器。装置17102包括一个额外的TDR,使得输入解复用器向一个TIR和两个TDR提供输入,并从一个TIR和两个TDR收集输出,其中一个TIR和两个TDR全都是平行的。所述TIR和TDR均被示为串行移位寄存器,每个都包括九个关联的元件(例如触发器)。通过这种方式,(a)所述TIR形成一个扫描链(表示为测试指令扫描链),其包括三十六个串行元件,以及(b)所述TDR形成另一个扫描链(表示为测试数据扫描链),共包括四十五个元件和三十六个串行元件(即,因为装置17102两个TDR是平行的)。
在示范性SUT1700中,已将所述测试指令扫描链分解成如下的四个段:第一段SI4,包括装置17104的TIR的九个元件,第二段SI3,包括装置17103的TIR的九个元件,第三段SI2,包括装置17102的TIR的九个元件,以及第四段SI1,包括装置17101的TIR的九个元件。通过这种方式,测试系统可以单独或组合地访问SUT1700的任何TIR,对SUT1700的其他TIR只需最少了解(除了构成它们的元件数量之外)。
在示范性SUT1700中,已将测试数据扫描链分解成如下的六个串行段(总共七个段):第一段SD4,包括装置17104的TDR的九个元件;第二段SD3,包括装置17103的TDR的九个元件;第三段SD2,包括装置17102的第一TDR的九个元件(表示为子段SD2.1)或装置17102的第二TDR的九个元件(表示为子段SD2.2),其中将这些统计为独立的段,以便统计总段数;以及第四段,进一步将其分解成如下的三个串行子段:第一子段,包括装置17101的TDR的前三个元件(表示为子段SD1.1),第二子段,包括装置17101的TDR的接下来四个元件(表示为子段SD1.2),以及第三子段,包括装置17101的TDR的最后两个元件(表示为子段SD1.3)。通过这种方式,所述测试系统可以单独或组合地访问SUT1700的任何TDR(或甚至装置17101的TDR的子部分),对SUT1700的其他TDR只需最少了解(除了构成它们的元件数量之外)。
可以理解的是,图17的SUT1700仅仅是可以分解被测系统的扫描链以在提供扫描段层级抽象的方式的一个范例。尽管在此相对于特定类型、数量以及元件、部件的布置等进行图示和描述,可以理解的是,对于分解扫描链的被测系统可以包括各种其他类型、数量和/或元件、部件的布置等。
如在此所述,分解被测系统的扫描链使得能够在段上定义扫描操作,由此提高测试效率。这里参考图18图示和描述了,根据一个实施例,用于生成包括针对被分解扫描链的段的扫描操作的一组指令的方法。
下文提供了一种扫描分解和生成扫描段操作的更详细范例。
作为一般范例,考虑包括三个板的扫描链,其中每个板包括段(表示为分别与第一板、第二板和第三板相关联的段A、B和C)。在这个范例中,在扫描段是分层时,第一板上的段A可以由多个子段构成(例如子段A1到An),第二板上的段B可以由多个子段构成(例如子段B1到Bn),和/或第三板上的段C可以由多个子段构成(例如子段C1到Cn)。
作为更具体的范例,在应用和SUT之后,段可以是:仪器内部的一个或多个寄存器、仪器、寄存器集群、一个或多个板等,及其各种组合。
因此总体扫描操作在一系列段扫描操作中被分解。结果,为了获得最终的扫描链操作所需的全部就是一系列简单的原子操作。因此,尽管不做排他性限制,扫描段层级抽象的实施例在将原子测试操作像处理器操作一样对待的实施方式中(例如,在此所示和所述的各种TISA实施方式中,或在将原子测试操作像处理器操作那样对待的任何其他类似的实施方式中)尤其有效。
在扫描段层级抽象的这样实施例中,扫描段层级扫描操作的实际实施可能需要与要被寻址的JTAG相连的一个或多个技术约束。例如,可能需要处理约束,尤其是,例如定义TAP机的状态的需求以及使用暂停-DR状态(未必实施)的风险。
为了在经由扫描链接收的输出比特流中识别仪器/段输出,基于扫描链中的仪器/段的位置,可以将扫描链视为先进先出(FIFO)系统(考虑其串行性质),从而扫描输入的第一段也是扫描输出的第一段(因为它最接近扫描链的末尾)。
为了使SUT“经历”像单个扫描操作的扫描段操作序列,可以在段操作之间冻结TCK。由于扫描链内部的所有元件都是同步的,通过这种方式冻结TCK的效果是扫描链与TCK同时冻结。
通过几个范例可以更好地理解基于TISA的测试系统中对扫描段层级的使用。在下面的范例中,假设被测系统(SUT)由三个段(依次表示为A、B和C)组成,且用户需要在段B内部写入值V。
作为第一范例,假设在同一JTAG装置内部实现系统的三个段(A,B和C)。在这个第一范例中,一旦在存储器中定义了所述三个段,TISA操作将成为:
i.设置开始状态=Run-Test-Idle,扫描状态=结束状态=ShiftDR;
ii.设置扫描长度段为段A的长度;
iii.向段A中扫描旁路序列;
iv.设置开始状态=扫描状态=结束状态=ShiftDR;
v.设置扫描长度段为段B的长度;
vi.向段B中扫描V;
vii.设置开始状态=扫描状态=ShiftDR,结束状态=Run-Test-Idle;
viii.设置扫描长度段为段C的长度;
ix.向段C中扫描旁路序列。
相对于第一范例,将TAP有限状态机(FSM)保持在ShiftDR状态中以确保扫描链上没有更新。可以从第一范例看出这种情况,其中从步骤(i)到步骤(ix)将TAP FSM保持在ShiftDR状态中确保了在扫描链上没有更新,假设UpdateDR状态将仅在离开ShiftDR时到达一次。
此外,相对于第一范例,仅在扫描操作期间(即步骤(iii)、(vi)和(ix))扫描时钟TCK是活动的,在其余状态中被冻结。效果是,基于与TCK同步的操作的SUT的角度看,SUT将把步骤(iii)、(vi)和(ix)看做连续比特流。
此外,相对于第一范例,“旁路序列”是扫描段的一种特性,例如可以是给定序列(全为零,全为一,或任何其他适当序列),或“不关心”,其中,由TGT决定这样的序列。
作为第二范例,假设在不同的JTAG装置(在一个或多个卡中)实施系统的三个段(A,B和C)。在这个第二范例中,一旦在存储器中定义了三个段,TISA操作将成为:
i.设置段A状态:开始状态=RunTest/Idle,扫描状态=ShiftIR,结束状态=ShiftIR(gateTCK指示符);
ii.设置段A扫描长度段为段A IR的长度;
iii.利用针对段A的旁路(BYPASS)指令模式运行扫描块;
iv.设置段B状态:开始状态=ShiftIR,扫描状态=ShiftIR,结束状态=ShiftIR(gateTCK指示符);
v.设置段B扫描长度段为段B IR的长度;
vi.利用针对段B的测试指令(EXTEST)指令模式运行扫描块;
vii.设置段C状态:开始状态=ShiftIR,扫描状态=ShiftIR,结束状态=RunTest/Idle;
viii.设置段C扫描长度段为段C IR的长度;
ix.利用针对段C的旁路(BYPASS)指令模式运行扫描块:
x.设置段A状态:开始状态=RunTest/Idle,扫描状态=ShiftDR,结束状态=ShiftDR(gateTCK);
xi.设置段A扫描长度段为段A选定DR的长度(1比特旁路DR);
xii.利用针对段A的旁路(BYPASS)数据模式运行扫描块:
xiii.设置段B状态:开始状态=ShiftDR,扫描状态=ShiftDR,结束状态=ShiftDR(gateTCK);
xiv.设置段B扫描长度段为段B选定DR的长度(n比特BSR DR到管脚);
XV.利用针对段B的测试指令(EXTEST)数据模式运行扫描块;
xvi.设置段C状态:开始状态=ShiftDR,扫描状态=ShiftDR,结束状态=RunTest/Idle;
xvii.设置段C扫描长度段为段C选定DR的长度(1比特旁路DR);
xviii.利用针对段C的旁路(BYPASS)数据模式运行扫描块。
在比较所述第一范例和所述第二范例时,可以理解的是,与第二范例相关联的额外复杂性来自需要使用每个JTAG装置的指令寄存器(IR)选择段/取消选择段。在那种情况下,通过在1149.1标准的旁路(BYPASS)模式中放置相关的JTAG装置(如在第二范例的步骤(iii)和(xvii)中所示)直接从链中取出未用的段。
可以理解的是,以上两个范例的所有成分是可能的,在一个或多个JTAG装置上定义任意数量的段。进一步可以理解,以上两个范例仅仅是为了例示为测试被测系统使用扫描段层级而提供的范例,从而,因此,为测试被测系统而使用扫描段层级的实施例并非要受到这些范例所限。
在这样的实施例中,TISA指令的实际序列能够具有多个起源,包括以下一种或多种:(1)可以由TGT静态地计算TISA指令,在这种情况下,每次用户希望访问段,必须扫描整个链(要认识到,尽管未就扫描时间优化这种解决方案,但它可以对计算资源受限以及没有或几乎没有时间约束的嵌入式系统是有用的);(2)TISA指令可能被软件调度装置发出,所述调度装置接收访问请求并将它们构成扫描操作;和/或(3)TISA指令可能被硬件调度装置发出(例如,但不限于为指令重排序所做的,以及在一些高性能处理器中的旁路)。可以理解的是,可以通过任何其他适当方式发出与扫描段层级控制相关联的TISA指令,所述任何其他适当方式可以包括上述方法的组合和/或一种或多种其他适当方法,所述其他适当方式可以被用于取代或补充上述一种或多种方法。
所述扫描段层级抽象层级是用于处理动态拓扑的强大工具,动态拓扑例如是由IEEE P1687标准提出的动态拓扑及其他动态拓扑。如果可以在活动扫描路径中放入和取出扫描链的字段(例如,使用IEEEP1687标准提出的SIB单元或任何其他适当的可分层部件),可以将该字段标记为一个(或多个)段。那么测试调度装置从系统状态了解到这个(些)段是否活动,并且,因此,是否应当将该段包括在TISA指令调度中。本领域的技术人员应能理解到并由这里的教导获悉,也可以将这种原理用于其他动态元件,例如热交换板(例如,通过从状态寄存器检测其存在)或任何其他适当的动态元件。
图18示出了利用扫描链的扫描段层级抽象通过被测系统的扫描链测试被测系统一部分的方法的一个实施例的高层框图。
尽管在此主要图示和描述为顺序执行,但方法1800的至少一部分可以被同时执行,或与结合图18所示和所述的不同次序执行。
在步骤1802,方法1800开始。
在步骤1804,将所述扫描链分解成多个段。所述扫描链由多个元件构成,且每个段至少包括扫描链元件之一。如上所述,可以通过任何适当方式将所述扫描链分解成段。如在此所述,可以在开发流程中的任何位置将所述扫描链分解成段(例如,通过测试开发者,通过测试生成工具,通过嵌入的电路模型等)。
在步骤1806,产生指令集。所述指令集包括与ISA相关联的处理器指令和用于测试被测系统部分的测试指令。所述测试指令针对扫描链的每个段包括要在该段上执行的至少一个扫描操作。所述测试指令可以是任何类型的测试指令,例如常规测试指令、TISA的测试指令等,因此,可以通过任何适当方式生成。所述指令集可以通过任何适当方式被生成(例如,与上文参考所示和所述的相同或相似方式)。
在步骤1808,执行所述指令集以测试被测系统的部分。可以通过任何适当方式执行所述指令集,其可以取决于所述指令集的指令类型。
在步骤1810,方法1800结束。
尽管在此主要结合使用TISA的实施例使得能够在扫描段层级上执行扫描操作的实施例进行图示和描述,可以理解的是,也可以利用TISA状指令架构、非TISA指令架构和/或非TISA测试环境实施等在环境中提供在此所示和所述的一种或多种扫描段层级的实施例。
尽管在此参考“所述TISA”来描述由可以如这里所示所述那样形成和利用的TISA的示范性实施例实现的增强的系统测试能力,可以理解的是,根据各种因素可以形成很多不同的TISA,例如用于形成所述TISA的一个或多个处理器的ISA、针对用于形成所述TISA的SUT的特性、所述TISA应当执行的测试算法的特性等,及其各种组合。因此,在此所述的参考中的“所述TISA”还可以更一般地将的被读做“TISA”,因为TISA可以通过各种不同的方式而被形成。。
这里提供了虚拟内电路仿真(ICE)能力以支持联合测试行动小组(JTAG)硬件的测试。在一个实施例中,虚拟内电路仿真(ICE)能力包括虚拟ICE驱动装置,这里图示和描述了其各种实施例。所述虚拟ICE驱动装置被配置成使任何标准的调试软件能够与具有JTAG功能的硬件以灵活可缩放的方式接合。所述虚拟ICE驱动装置被配置,使得计算矢量不需要用于所述虚拟ICE驱动装置的测试指令集,因为JTAG操作被表达为扫描段上的本地固有指令,由此能够直接访问ICE资源。所述虚拟ICE驱动装置被配置,使得ICE可以与基于仪器的JTAG方法(例如,IEEE P1687标准和其他适当方法)相组合。从在此提供的所述虚拟ICE驱动装置的描述可以理解,所述虚拟ICE驱动装置提供了各种其他能力和优点。尽管在此主要在将所述虚拟ICE驱动装置用于测试指令集架构(TISA)的实施例语境之内进行图示和描述,可以理解的是,可以利用任何适当的测试指令集利用所述虚拟ICE驱动装置。
在TISA中,可以利用高层软件调用,结合使用高级程序设计语言和操作系统,执行寄存器的并行控制。结果,利用TISA,可以将ICE接口简化为对基于TISA的电路控制模型的一组带坐标的队列命令调用,该模型根据目标硬件的扫描拓扑管理TISA扫描段操作的发起。因此,对于TISA,可以将ICE接口的每以个写为映射到TISA操作码的装置寄存器上独立而分级的一组操作。换言之,可以将ICE接口的每一个视为自治的仪器寄存器,由于受TISA支持的JTAG抽象层级的原因,所述TISA能够通过将其表达为独立扫描段而自治地控制这些寄存器中的每一个。这比TGT使用电路模型处理矢量简单得多,因为TISA处理器仅需要调度扫描段操作(而不是如现有方案中要求的那样重新瞄准测试矢量)。
参考图19和20可以更好地理解所述虚拟ICE驱动装置的这些和各种其他实施例以及相关联的虚拟ICE驱动装置能力。
图19示出了包括虚拟ICE驱动装置的系统的一个实施例的高层框图,所述驱动装置被配置以在测试目标硬件时使用。
如图19所示,系统1900包括目标硬件1910、TAP接口1915、虚拟ICE驱动装置1920和ICE主机1930。
所述目标硬件1910包括多个JTAG可访问装置19111-19116(统称为JTAG可访问装置1911)。所述JTAG可访问装置1911包括第一中央处理单元(CPU1)、第二中央处理单元(CPU2)和四个仪器化专用集成电路(ASIC)(仪器化ASIC1-4)。尽管被图示和描述为具有特定类型和数量的JTAG可访问装置1911,可以理解的是,所述目标硬件1910可以包括任何适当类型和数量的JTAG可访问装置1911。
所述CPU可以是任何JTAG可访问的CPU。例如,CPU1和CPU2之一或两者可以是1149.1ICE目标。例如,CPU1和CPU2之一或两者可以是具有需要被独立访问的多个处理器内核的1149.7ICE目标。所述CPU可以包括任何其他适当类型的CPU。
所述仪器化ASIC可以是任何JTAG可访问的ASIC。例如,所述仪器化的ASIC1-4中的一个或多个可以是P1687ICE目标。在图1的范例中,所述仪器化ASIC1-4中的每一个都是P1687ICE目标。
所述目标硬件1910具有与其相关联的扫描链拓扑,并且每个JTAG可访问的装置1911形成该扫描链拓扑的一部分。
通过TAP接口1915命令目标硬件1910的所述JTAG可访问装置1911,所述接口被连接至虚拟ICE驱动装置1920。
所述TAP接口1915提供在目标硬件1910和虚拟ICE驱动装置1920之间的接口,由此使得虚拟ICE驱动装置1920能够访问目标硬件1910的JTAG可访问装置。可以利用任何适当的TAP,例如1149.1TAP或其他适当的TAP实现所述TAP接口1915。
所述虚拟ICE驱动装置1920包括队列状态机1921和TISA处理器1925。所述虚拟ICE驱动装置1920便于由ICE主机1930访问目标硬件1910。
所述ICE主机1930被配置以能够测试目标硬件1910。
所述ICE主机1930包括多个目标ICE控制器1931,包括与目标硬件1910的CPU1相关联的第一目标ICE控制器19311,与目标硬件1910的CPU2相关联的第二目标ICE控制器19312,以及与目标硬件1910的仪器化ASIC1-4相关联的第三目标ICE控制器19313。所述主机ICE1930可以包括更少或更多的这样的目标ICE控制器。所述ICE主机1930还包括主消息传递API1935,所述API1935被配置以方便在ICE主机1930的每个目标ICE控制器1931和虚拟ICE驱动装置1920之间的通信。
所述第一目标ICE控制器19311包括用于CPU1的GBU GUI19321和目标ICE管理器19331。所述用于CPU1的GBU GUI19321提供了接口,通过该接口,测试器可以配置要执行的测试,以测试目标硬件1910上的CPU1。所述目标ICE管理器19331具有信息,所述信息包括描述被包括在CPU1之内的寄存器的电路模型,在CPU1之内CPU1的各种寄存器的布置方式,以及在CPU1是目标硬件1910扫描链中的唯一装置时,用于实现对CPU1的寄存器的访问的信息。所述目标ICE管理器19331还具有定义CPU1的寄存器到CPU1的扫描段的映射的信息。所述GBU GUI19321可以被使用以指定要在CPU1的寄存器上执行的操作。所述目标ICE管理器19331生成适当的扫描段操作,用于访问和测试目标硬件1910上的CPU1。所述目标ICE管理器19331向主消息传递API1935提供所生成的扫描段操作,用于访问和测试目标硬件1910上的CPU1,所述API接着向虚拟ICE驱动装置1920传递所生成的扫描段操作。
所述第二目标ICE控制器19312包括用于CPU2的GBU GUI19322和目标ICE管理器19332。所述用于CPU2的GBU GUI19322提供了接口,通过该接口,测试器可以配置要执行的测试,以测试目标硬件1910上的CPU2。所述目标ICE管理器19332具有信息,所述信息包括描述被包括在CPU2之内的寄存器的电路模型,在CPU2之内CPU2的各种寄存器的布置方式,以及在CPU2是目标硬件1910扫描链中的唯一装置时,用于实现对CPU2的寄存器的访问的信息。所述目标ICE管理器19331还具有包括CPU2的寄存器到CPU2的扫描段的映射的信息。所述GBU GUI19322可以被使用以指定要在CPU2的寄存器上执行的操作。所述目标ICE管理器19332生成适当的扫描段操作,用于访问目标硬件1910上的CPU2。所述目标ICE管理器19332向主消息传递API1935提供所生成的扫描段操作,用于访问目标硬件1910上的CPU2,所述API1935接着向虚拟ICE驱动装置1920传递所生成的扫描段操作。
如上所述,GDB GUI1932提供了接口,测试器通过所述接口可以配置要执行的测试以测试目标硬件1910上的装置。通常,出于ICE的目的,调试器(包括GDB调试器,例如用于CPU1的GBU GUI19321和用于CPU2的GBU GUI19322)实质上将目标机视为抽象模型,所述抽象模型包括三个基本元件的:寄存器背面、存储器的块和栈帧。然后可以使用所述目标机的目标机描述通过ICE基础设施将抽象模型映射到所述目标机的实际硬件。在JTAG可访问的系统中,例如在目标硬件1910中,所述实际硬件被表示为一个或多个扫描链上的JTAG可访问寄存器。在GDB中,应用编程接口(API)可以由如下内容构成:(1)读取/写入索引寄存器的一组功能,(2)读取/写入存储器的一组功能,(3)读取/写入程序计数寄存器的一组功能,以及(4)读取/写入栈指针寄存器的一组功能。在GDB中,这些功能将通过GDB GUI(例如,用于CPU1的GBU GUI19321和用于CPU2的GBU GUI19322)发起的GDB访问请求转换成用于目标ICE的访问命令(例如,针对目标硬件1910的CPU1和CPU2的寄存器)。所述访问命令是扫描段操作,其中在基于目标硬件1910的嵌入部件的寄存器所定义的扫描段上设计所述扫描段操作。在这个意义上,每个扫描段变为目标硬件1910的总体有序寄存器组中可用于测试的子集。
尽管在此主要结合使用GDB以测试目标硬件1910的JTAG可访问装置1911进行图示和描述,可以理解的是,可以利用任何适当的调试器以测试目标硬件1910的JTAG可访问装置1911。
所述第三目标ICE控制器19313包括用于仪器化ASIC1-4的P1687应用19343。用于仪器化ASIC1-4的所述P1687应用19343提供了接口,测试器通过所述接口可以配置要执行的测试,以测试目标硬件1910上的一个或多个仪器化ASIC1-4。用于仪器化ASIC1-4的所述P1687应用19343提供了类似于GDB的能力。用于仪器化ASIC1-4的所述P1687应用19343生成适当的扫描段操作,以访问目标硬件1910上的仪器化ASIC1-4。用于仪器化ASIC1-4的所述P1687应用19343向主消息传递API1935提供所生成的所述扫描段操作,以访问目标硬件1910上的仪器化ASIC1-4,所述API接着向虚拟ICE驱动装置1920发送所生成的所述扫描段操作。
如在此所述,每个目标ICE控制器1931被配置以生成扫描段操作的有序集,即定义到相关目标硬件1910内部一个或多个段中的一组有序指令。
所述主消息传递API1935便于ICE主机1930的每个目标ICE控制器1931和虚拟ICE驱动装置1920之间的通信。
所述主消息传递API1935便于从ICE主机1930的目标ICE控制器1931向虚拟ICE驱动装置1920传送由目标ICE控制器1931生成的所述扫描段操作的有序集。
所述主消息传递API1935可以使用任何适当的通信能力,以便于在ICE主机1930的目标ICE控制器1931和虚拟ICE驱动装置1920之间的通信。例如,主消息传递API1935可以利用通信能力,如物理连接(例如PCI、串行等)、联网连接(例如基于以太网的连接、基于网际协议(IP)的连接等)、软件应用(例如管道、文件、消息、过程间通信等)等,及其各种组合。
尽管在此主要结合目标ICE控制器1931存在于单个ICE主机(即ICE主机1930)上的实施例进行图示和描述,但在其他实施例中,ICE主机1930的所述目标ICE控制器1931可以存在于多个ICE主机上。所述目标ICE控制器1931可以通过任何适当方式分布在多个主机间(例如,在其自己的专用主机上实现每个目标ICE控制器1931,至少一些目标ICE控制器1931共享一个或多个主机等等,及其各种组合)。在这样的实施例中,主消息传递API1935被配置以便于用于分布式目标ICE控制器1931的通信(例如,通过物理连接,通过联网连接,如IP连接和/或任何其他适当的联网连接等,及其各种组合)。
在一个实施例中,虚拟ICE驱动装置1920包括队列状态机1921和TISA处理器1925。
所述队列状态机1921作为ICE主机1930和TISA处理器1925之间的接口工作。所述队列状态机1921从ICE主机1930的所述目标ICE控制器接收扫描段操作的有序集。所述队列状态机1921处理扫描段操作的有序集以产生扫描段操作的调度集,可以通过根据所述目标硬件1910内部的每个扫描段的位置执行所述调度集。所述队列状态机1921被配置以利用调度表调度所述扫描段操作,这对于目标硬件1910的JTAG扫描链是必要和/或有效率的。所述队列状态机1921向TISA处理器1925提供扫描段操作的调度集。
可以通过任何适当方式实现所述队列状态机1921。
例如,在一个实施例中,队列状态机1921包括事件循环1922、命令处理装置1923和电路控制模型1924。
所述事件循环1922从ICE主机1930的主消息传递API1935接收扫描段操作的有序集。所述扫描段操作包括由ICE主机1930的一个或多个目标ICE控制器1931发出的扫描段操作。所述事件循环1922向命令处理装置1923提供所述扫描段操作的有序集。
所述命令处理装置1923从事件循环1922接收所述扫描段操作的有序集。所述命令处理装置1923向电路控制模型1924提供所述扫描段操作的有序集。
所述电路控制模型1924从命令处理装置1923接收所述扫描段操作的有序集,并生成要提供给TISA处理器1925的扫描段操作调度集。
所述电路控制模型1924包括每个目标ICE控制器1931的每个电路模型的电路模型信息并将所述信息作为总体管理,以能够处理由每个目标ICE控制器1931所发出的扫描段操作。
所述电路控制模型1924包括用于对目标硬件1910的扫描拓扑建模的扫描拓扑信息,包括的信息如每个具有JTAG功能的装置1911的扫描拓扑、具有JTAG功能的装置1911互联所经的扫描拓扑等及其各种组合。在每个给定时刻,所述电路控制模型1924的状态都是所述目标硬件1910状态的镜像。
所述电路控制模型1924包括扫描段模型的有序集合,也可以被称为扫描段集,其中每个扫描段集自身都可以是其他扫描段集的子集,且其中每个扫描段子集可以按照其排序管理自身。TISA面向对象的能力使得能够向所述扫描段集分配对所述扫描段集何时要执行其相对应的扫描段操作的排序,此外,使得所述扫描段集能够在总体分层结构之内任何地方移动,同时关联的代码保持不变。
所述电路控制模型1924基于从所述扫描拓扑信息确定的目标硬件1910的扫描拓扑,从所述扫描段操作的有序集中调度所述扫描段操作。所述电路控制模型1924处理所接收的每个扫描段操作。所述电路控制模型1924在接收扫描段操作时,处理所述扫描段操作,以识别所述扫描段操作的准备提供的目标(例如,目标硬件1910的JTAG可访问装置1911之一)。所述电路控制模型1924将所述扫描段操作分配至与所述扫描段操作准备提供的目标相关联的所述电路控制模型1924的一部分,例如,所述扫描段集被配置以生成对针对所述扫描段操作的一个(或多个)适当功能的一个(或多个)调用,其中所述一个(或多个)被调用的功能具有用于执行所述扫描段操作的关联TISA处理器指令。
所述电路控制模型1924向TISA处理器1925提供所述扫描段操作的调度集。
可以理解的是,由于所述电路控制模型1924仅要求执行所述扫描段操作调度所需的信息,所述电路控制模型1924可以明显地比用于矢量重定目标的模型更加简单。
所述TISA处理器1925被配置为通过TAP接口1915控制目标硬件1910的JTAG可访问装置1911。所述TISA处理器1925被配置为利用TISA处理器1925支持的TISA指令控制目标硬件1910的JTAG可访问装置。所述TISA处理器1925从队列状态机1921接收扫描段操作的调度集,并通过目标硬件1910的TAP接口1915和扫描拓扑,执行所述扫描段操作的调度集,以调试目标硬件1910的关联JTAG可访问装置1911的软件。从所述TISA处理器1925的角度讲,不论所述目标硬件1910的实际复杂性如何,所述目标硬件1910仅仅是一组扫描段。通过参考图1-18可以更好地理解TISA处理器1925的工作。
通过考虑范例可以更好地理解所述虚拟ICE驱动装置1920。例如,假设与目标硬件1910的CPU2相关联的CPU2的GBU GUI19322发出命令,请求更新CPU2中程序计数器的值。所述目标ICE管理器19332向事件循环1922传递该命令。所述事件循环1922向命令处理装置1923传递该消息。所述命令处理装置1923向电路控制模型1924传递该命令,所述电路控制模型识别出该命令是准备提供至CPU2的,且,结果,生成在所述电路控制模型1924和所述目标硬件1910的当前状态中访问CPU2所需的TISA指令。如果需要,命令处理装置1923还生成使所述电路控制模型1924到达CPU2可访问的状态所需的指令。所述电路控制模型1924然后向与CPU2相关联的电路模型1924的扫描段集分配所述命令,使得其能够向CPU2之内的特定寄存器写入。被配置成向CPU2申请适当矢量的所述扫描段集,生成对适当寄存器功能的调用,所述调用寄存器功能被调用以向CPU2的程序计数寄存器写入。被调用向CPU2的程序计数寄存器写入的所述寄存器功能具有适当的TISA处理器指令,用于申请所述扫描段命令的特定数据,以向CPU2的程序计数寄存器写入具体数据。因此,所述数据能够随时间变化,而控制向寄存器写入数据的方式的功能随时间保持相同。
所述虚拟ICE驱动装置1920通过利用TISA能够将目标硬件1910的每个JTAG可访问装置1911当做独立自治的扫描段处理。这至少部分是由于TISA能够使1149.1TAP的TCK时钟能够在指令集中的任何需求点暂停,由此避免了1149.1TAP切换到稳定状态,以便暂停所述扫描操作(即,典型的1149.1TAP接口仅在四个稳定状态之一中对TCK时钟进行选通(即,关闭时钟))。结合扫描段原语的性质,这确保了所述电路控制模型1924仅需要调度TISA指令,即基于其自身的这种内部状态,从命令处理装置1923接收,且其不需要修改它们。与现有ICE方法的矢量重定目标相比这是巨大的简化。
所述虚拟ICE驱动装置1920通过利用TISA能够通过使目标硬件1910嵌入部件上执行的扫描段操作同步来实现目标硬件1910嵌入部件之间的同步。因此,虚拟ICE驱动装置1920利用TISA仅仅需要对扫描段操作排序和执行(与现有ICE方法相反,其中目标ICE控制器需要重新定向扫描链矢量),即,所述虚拟ICE驱动装置1920直接重新定向所述软件功能,而不是必须生成和重新定向扫描链矢量,那样会需要使用测试生成工具(TGT)。
所述虚拟ICE驱动装置1920使得能够同时访问和测试目标硬件1910的多个JTAG可访问装置1911,其中所述JTAG可访问装置1911可以包括不同类型的装置(例如CPU、ASIC等,及其各种组合),消除了现有ICE机制需要彼此隔离地处理这种装置类型的需求,以及,因此,相对于现有ICE机制实现了各种优化(例如,共享目标硬件1910的资源,对目标硬件1910部件的访问和测试并行化等,及其各种组合)。
所述虚拟ICE驱动装置1920使得能够通过多个目标ICE控制器1931同时访问和测试目标硬件1910的多个JTAG可访问装置1911,消除了现有ICE机制在任何给定时间仅有单个目标ICE控制器1931可以访问和测试目标硬件1910的仅单个JTAG可访问装置1911的要求,因此,避免了对扫描链矢量重定目标的需求。
所述虚拟ICE驱动装置1920避免了目标ICE控制器1931预处理测试数据的需求(例如,对于来自目标ICE控制器1931的每条指示),以便获得针对目标硬件1910的所有目标装置的整个扫描链矢量集(其中所有目标装置都在同一扫描链上),这是利用现有ICE方法难以,甚至不可能提供的能力。可以理解的是,现有ICE方法的这种限制不是来自理论原因,而是来自实际原因。实际上,针对这种应用的矢量重定目标在计算要求和建模需求两方面都可能高度复杂。结果,大部分现有的测试生成工具不允许这样的情况,或迫使系统为预定义的简化配置。相反,TISA将这个过程简化为调度问题,这是具有很多已知和优化方案的经典和公知的信息论问题。
结果,所述虚拟ICE驱动装置1920使得这样的处理能够在目标ICE控制器1931发出用于测试目标硬件1910的各种部件的命令时被实时执行。
所述虚拟ICE驱动装置1920提供了灵活可缩放的ICE能力,使得任何具有1149.1功能的目标硬件和/或具有1149.7功能的目标硬件能够连接到控制软件,而无需修改底层架构,以及,进一步,使得所述控制软件能够成长为到所需那么大,并采用ICE主机1930的所有资源。
所述虚拟ICE驱动装置1920使得能够对目标硬件1910进行基于ICE的测试,不需要对GDB或ICE主机1910上驻留的P1687应用进行任何修改。
可以通过任何适当方式实现所述虚拟ICE驱动装置1920,因此,图19的系统可以通过任何适当的方式实现,包括元件/功能的任何适当的分组和/或划分。
在一个实施例中,例如,所述虚拟ICE驱动装置1920被实现为设置于ICE主机1930和目标硬件1910之间的一个或多个独立装置。
在一个实施例中,例如,在可以通过任何适当接口/连接(例如PCI、串行、以太网等)连接到TISA处理器1925的主机之内实现队列状态机1921和ICE主机1930。在这一实施例中,然后通过标准JTAG连接将所述TISA处理器1925连接到目标硬件1910。在这一实施例中,可以利用任何适当的计算机科学构造实现所述主消息传递API1935(例如消息队列、邮箱等,及其各种组合)。
在一个实施例中,例如,可以实现虚拟ICE驱动装置1920,使得所述虚拟ICE驱动装置1920完全嵌入在目标硬件1910之内。
在一个实施例中,例如,ICE主机1930可以是TISA处理器。在这一实施例中,TISA处理器1925被实现为TISA协处理器,如在此参考图13和14进行的所示和所述。
可以理解的是,可以实现这种实施例的各种组合和/或可以采用任何其他适当的实施。
尽管这里结合ICE主机1930包括多个目标ICE控制器1931的实施例进行图示和描述,其中多个目标ICE控制器1931可以同时访问目标硬件1910,在其他实施例中,所述ICE主机1930可以包括多个目标ICE1931,其中在任何给定时间多个目标ICE控制器1931中仅有一个是活动的,或者所述ICE主机1930可以包括唯一的目标ICE控制器1931。在这样的实施例中,虚拟ICE驱动装置1920不要求使用队列状态机1921,以及,因此,这个元件可以从虚拟ICE驱动装置1920中省略。在这样的实施例中,虚拟ICE驱动装置1920包括TISA处理器1925,由活动/仅目标ICE控制器1931提供的所述扫描段操作可以被直接提供给TISA处理器1925(即,不使用队列状态机1921)。
尽管这里主要结合虚拟ICE驱动装置1920与通过单个TAP接口1915与所述目标硬件1910接合的实施例进行示出和描述,在其他实施例中,所述目标硬件1910可以包括多个输入端口(例如,1149.1TAP),其可以具有多个连接到其上的目标ICE控制器1931。在这样的实施例中,所述虚拟ICE驱动装置1920被配置成管理经由目标硬件1910的多个TAP接口的每个所接收的扫描矢量,到目标硬件1910的适当JTAG可访问装置的路由。在这样的实施例中,所述目标ICE控制器1931认为它在其自己的扫描链中与其自身的装置通信,实际上,在它与所述TISA处理器通信时,会向目标硬件1910中的适当点重新映射那些数据矢量作为对所述TISA处理器的扫描段调用。因此,在这样的实施例中,如果所述目标硬件1910中有变化,在所述目标ICE控制器1931中不需要对应的变化;相反,支持所述目标硬件1910中变化所需要的仅有步骤是为所述TISA处理器重新加载电路模型。
尽管这里结合使用所述虚拟ICE驱动装置1920调试目标硬件的软件的实施例进行图示和描述,在其他实施例中,可以使用所述虚拟ICE驱动装置1920对其中嵌入1149.1TAP接口的通信装置(例如,计算机、智能电话等)执行远程更新。
图20示出了利用用于测试目标硬件的虚拟ICE驱动装置的方法的一个实施例。在结合图19的虚拟ICE驱动装置考虑时,可以更好地理解图20的方法2000。
在步骤2002,方法200开始。
在步骤2004,扫描段操作被接收。所述扫描段操作通过至少一个ICE主机的多个目标ICE控制器生成。所述目标ICE控制器与所述目标硬件的多个部件相关联。
在步骤2006,所述扫描段操作被调度以形成扫描段操作的调度集。所述扫描段操作至少部分地基于目标硬件的扫描链而被调度。
在步骤2008,所述扫描段操作的调度集被传播至处理器,所述处理器被配置以执行所述扫描段操作的调度集,用于测试所述目标硬件的一个或多个部件。
在步骤2010,方法2000结束。
图21示出了适用于执行本文所述功能的计算机的高层框图。如图21中所示,计算机2100包括处理器元件2102(例如中央处理单元(CPU)或其他适当一个(或多个)处理器)、存储器2104(例如随机存取存储器(RAM))、只读存储器(ROM)和/或任何其他适当类型的存储器)、适于执行在此所示和所述的系统测试功能的系统测试模块/过程2105,以及各种输入/输出装置2106(例如用户输入装置(例如键盘、小键盘、鼠标等)、用户输出装置(例如显示器、扬声器等)、输入端口、输出端口、接收机、发射机和存储装置(例如磁带驱动器、软盘驱动器、硬盘驱动器、光盘驱动器等))。
应当指出,在此所示和所述的系统测试功能可以在软件中和/或软件与硬件的组合中被实现,例如,利用通用计算机、一个或多个专用集成电路(ASIC)和/或任何其他硬件等价物。在一个实施例中,系统测试过程2105可以被加载至存储器2104中并由处理器2102执行以实施和/或支持实施上文所述系统测试功能的至少一部分。因此,系统测试过程2105(包括相关的数据结构)可以被存储在计算机可读存储介质或载体上,例如RAM存储器、磁盘或光盘驱动器,或软盘等。
可以想到,在此所被论述为软件方法的一些步骤可以被用硬件实施,例如,硬件是与处理器合作以执行各种方法步骤的电路。在此所述的功能/元件的部分可以被实现为计算机程序产品,其中在由计算机处理时,计算机指令调整计算机的操作,从而调用或以其他方式提供在此所述的方法和/或技术。用于调用本发明方法的指令可以被存储在固定或可移除介质中,通过广播或其他信号承载介质中的数据流被传送和/或被存储在根据所述指令工作的计算装置之内。
在权利要求中指定了各实施例的方面。在以下编号的语句中指定各实施例的那些和其他方面:
1.一种用于利用内电路仿真(ICE)测试目标硬件的一个或多个部件的方法,所述方法包括:
接收由至少一个ICE主机的多个目标ICE控制器生成的多个扫描段操作,所述多个目标ICE控制器与所述目标硬件的多个部件相关联;
至少部分基于所述目标硬件的扫描链来调度所述被接收的扫描段操作,以由此形成扫描段操作的调度集;以及
传播扫描段操作的所述调度集至处理器,所述处理器被配置以执行所述扫描段操作的调度集,用于测试所述目标硬件的一个或多个部件。
2.根据第1条所述的方法,其中,对于所述被接收的扫描段操作中的至少一个,所述被接收的扫描段操作被至少一个ICE主机的目标ICE控制器生成并准备提供给所述目标硬件上的处理器内核。
3.根据第2条所述的方法,其中所述至少一个ICE主机的目标ICE控制器与调试器相关联。
4.根据第1条所述的方法,其中,对于所述被接收的扫描段操作中的至少一个,所述被接收的扫描段操作被至少一个ICE主机的应用生成且准备提供给所述目标硬件上的专用集成电路(ASIC)的至少一个处理器内核。
5.根据第4条所述的方法,其中所述应用是P1687应用,以及所述专用集成电路符合P1687标准。
6.根据第1条所述的方法,其中所述扫描段操作通过物理连接和联网连接中的至少一个被接收。
7.根据第1条所述的方法,其中所述扫描段操作被从支持多个目标ICE控制器的通信的主机消息API所接收。
8.根据第1条所述的方法,其中所述方法是由队列状态机执行。
9.根据第8条所述的方法,其中,所述方法由队列状态机执行,其中所述队列状态机包括:
事件循环、命令处理装置和电路控制模型;
其中所述事件循环被配置以接收由所述目标ICE控制器生成的所述扫描段操作并提供所述扫描段操作至所述命令处理装置;
其中所述命令处理装置被配置以从所述事件循环接收所述扫描段操作并提供所述扫描段操作至所述电路控制模型;并且
其中所述电路控制模型被配置以产生所述扫描段操作的调度集。
10.根据第1条所述的方法,其中利用电路控制模型产生扫描段操作的调度集。
11.根据第10条所述的方法,其中所述电路控制模型包括与所述目标ICE控制器相关联的多个电路模型的电路模型信息。
12.根据第10条所述的方法,其中所述电路控制模型包括用于对所述目标硬件的扫描拓扑进行建模的扫描拓扑信息,其中所述电路控制模型利用所述扫描拓扑信息产生所述扫描段操作的调度集。
13.根据第10条所述的方法,其中,对于每个被接收的扫描段操作,所述电路控制模型:
处理所述扫描段操作,以识别所述扫描段操作准备提供的目标,所述准备提供的目标是所述目标硬件的部件之一;
分配所述扫描段操作至与所述扫描段操作准备提供的目标相关联的所述电路控制模型的一部分。
14.根据第13条所述的方法,其中与所述扫描段操作准备提供的目标相关联的所述电路控制模型的部分包括被配置以生成对针对所述扫描段操作的至少一个功能的至少一个调用的扫描段集,其中所述至少一个功能包括被配置以执行所述扫描段操作的处理器指令。
15.根据第1条所述的方法,其中所述处理器被嵌入至所述目标硬件之内。
16.根据第15条所述的方法,其中所述方法由虚拟ICE驱动器执行,其中所述虚拟ICE驱动器被嵌入至所述目标硬件之内。
17.根据第1条所述的方法,其中所述多个目标ICE控制器与单个ICE主机相关联,其中所述处理器是第一处理器,其中所述单个ICE主机包括第二处理器,其中所述第二处理器用作中央处理单元(CPU),且所述第一处理器用作协同处理器,以处理提供给所述第二处理器的所述扫描段操作的调度集。
18.根据第17条所述的方法,其中所述第一和第二处理器是TISA处理器。
19.一种设备,用于测试目标硬件的一个或多个部件,所述设备包括:
队列状态机,被配置以:
接收由至少一个ICE主机的多个目标ICE管理器生成的扫描段操作,所述多个目标ICE管理器与所述目标硬件的多个部件相关联;
至少部分地基于所述目标硬件的扫描链来调度所述被接收的扫描段操作;以及
传播扫描段操作的调度集至处理器,所述处理器被配置以执行所述扫描段操作的调度集,用于测试所述目标硬件的一个或多个装置。
20.一种存储指令的计算机可读存储介质,当所述指令被处理器执行时,使所述处理器执行一种用于利用内电路仿真(ICE)测试目标硬件的一个或多个部件的方法,所述方法包括:
接收由至少一个ICE主机的多个目标ICE控制器生成的多个扫描段操作,所述多个目标ICE控制器与所述目标硬件的多个部件相关联;
至少部分基于所述目标硬件的扫描链来调度所述被接收的扫描段操作,以由此形成扫描段操作的调度集;以及
传播所述扫描段操作的调度集至处理器,所述处理器被配置以执行所述扫描段操作的调度集,用于测试所述目标硬件的一个或多个部件。
尽管这里已经详细图示和描述了体现本发明教导的各实施例,但本领域的技术人员将容易设计出仍然体现这些教导的很多其他变化的实施例。
Claims (9)
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控制器与所述目标硬件的多个部件相关联;
至少部分地基于所述目标硬件的扫描链来调度所述扫描段操作,以由此形成扫描段操作的调度集;以及
传播扫描段操作的调度集至处理器,所述处理器被配置以执行所述扫描段操作的调度集,用于测试所述目标硬件的一个或多个部件。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/827,556 | 2010-06-30 | ||
US12/827,556 US8621301B2 (en) | 2009-03-04 | 2010-06-30 | Method and apparatus for virtual in-circuit emulation |
PCT/US2011/040420 WO2012005895A1 (en) | 2010-06-30 | 2011-06-15 | Method and apparatus for virtual in-circuit emulation |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103080761A CN103080761A (zh) | 2013-05-01 |
CN103080761B true CN103080761B (zh) | 2015-06-03 |
Family
ID=44627246
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201180042165.XA Expired - Fee Related CN103080761B (zh) | 2010-06-30 | 2011-06-15 | 用于虚拟内电路仿真的方法和设备 |
Country Status (7)
Country | Link |
---|---|
US (1) | US8621301B2 (zh) |
EP (1) | EP2588875B8 (zh) |
JP (1) | JP5570662B2 (zh) |
KR (1) | KR101364397B1 (zh) |
CN (1) | CN103080761B (zh) |
TW (1) | TWI432756B (zh) |
WO (1) | WO2012005895A1 (zh) |
Families Citing this family (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8719649B2 (en) * | 2009-03-04 | 2014-05-06 | Alcatel Lucent | Method and apparatus for deferred scheduling for JTAG systems |
US8775884B2 (en) * | 2009-03-04 | 2014-07-08 | Alcatel Lucent | Method and apparatus for position-based scheduling for JTAG systems |
US8533545B2 (en) * | 2009-03-04 | 2013-09-10 | Alcatel Lucent | Method and apparatus for system testing using multiple instruction types |
JP5908991B2 (ja) * | 2011-12-21 | 2016-04-26 | インテル・コーポレーション | 安全なダイレクトメモリアクセス |
TWI472912B (zh) * | 2012-09-11 | 2015-02-11 | Univ Nat Cheng Kung | 以電路內部事件作為觸發條件之除錯控制系統及其方法 |
US10067858B2 (en) | 2012-10-12 | 2018-09-04 | Vmware, Inc. | Cloud-based software testing |
US9069902B2 (en) | 2012-10-12 | 2015-06-30 | Vmware, Inc. | Software test automation |
US9292422B2 (en) | 2012-10-12 | 2016-03-22 | Vmware, Inc. | Scheduled software item testing |
US8839202B2 (en) | 2012-10-12 | 2014-09-16 | Vmware, Inc. | Test environment managed within tests |
US9684587B2 (en) | 2012-10-12 | 2017-06-20 | Vmware, Inc. | Test creation with execution |
US8949794B2 (en) | 2012-10-12 | 2015-02-03 | Vmware, Inc. | Binding a software item to a plain english control name |
US10387294B2 (en) * | 2012-10-12 | 2019-08-20 | Vmware, Inc. | Altering a test |
US9292416B2 (en) | 2012-10-12 | 2016-03-22 | Vmware, Inc. | Software development kit testing |
US8839201B2 (en) | 2012-10-12 | 2014-09-16 | Vmware, Inc. | Capturing test data associated with error conditions in software item testing |
US9183105B2 (en) * | 2013-02-04 | 2015-11-10 | Alcatel Lucent | Systems and methods for dynamic scan scheduling |
US9217774B2 (en) * | 2013-11-01 | 2015-12-22 | International Business Machines Corporation | Cycle-accurate replay and debugging of running FPGA systems |
US10387584B1 (en) * | 2014-12-03 | 2019-08-20 | The Mathworks, Inc. | Streaming on hardware-software platforms in model based designs |
US9772376B1 (en) * | 2016-04-29 | 2017-09-26 | Texas Instruments Incorporated | Increase data transfer throughput by enabling dynamic JTAG test mode entry and sharing of all JTAG pins |
CN108226763B (zh) * | 2016-12-15 | 2021-08-20 | 三星电子株式会社 | 用于扫描链重新排序的方法、设备和计算机程序产品 |
US10521344B1 (en) * | 2017-03-10 | 2019-12-31 | Pure Storage, Inc. | Servicing input/output (‘I/O’) operations directed to a dataset that is synchronized across a plurality of storage systems |
CN110658438B (zh) * | 2018-06-29 | 2024-09-17 | 是德科技股份有限公司 | 扫描测试系统及其控制装置和控制方法 |
CN111443892B (zh) * | 2019-01-16 | 2022-04-29 | 长鑫存储技术有限公司 | 仿真结果的比较方法 |
CN112148391A (zh) | 2019-06-26 | 2020-12-29 | 北京百度网讯科技有限公司 | 生成基于芯片的计算功能的方法、装置、设备和存储介质 |
TWI699101B (zh) * | 2019-09-19 | 2020-07-11 | 英業達股份有限公司 | 基於邊界掃描的在線級聯加載韌體系統及其方法 |
TWI775307B (zh) * | 2021-02-04 | 2022-08-21 | 新唐科技股份有限公司 | 半導體裝置及其操作方法 |
CN114036885A (zh) * | 2021-11-08 | 2022-02-11 | 上海兆芯集成电路有限公司 | 内建自测试的方法及互连接口 |
US20230366931A1 (en) * | 2022-05-11 | 2023-11-16 | Bae Systems Information And Electronic Systems Integration Inc. | Secure joint test action group (jtag) |
CN115343967B (zh) * | 2022-10-19 | 2023-01-10 | 蘑菇物联技术(深圳)有限公司 | 用于对空压站进行仿真控制的方法、设备和介质 |
US20240248132A1 (en) * | 2023-01-24 | 2024-07-25 | Qualcomm Incorporated | Low power architecture for chiplets |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001135786A (ja) * | 1999-11-09 | 2001-05-18 | Sharp Corp | 半導体装置 |
JP2004280588A (ja) * | 2003-03-17 | 2004-10-07 | Cats Kk | システムlsi設計支援装置およびシステムlsi設計支援プログラム |
US20050166092A1 (en) * | 1999-02-19 | 2005-07-28 | Swoboda Gary L. | Emulation system with peripherals recording emulation frame when stop generated |
CN1842714A (zh) * | 2003-08-28 | 2006-10-04 | 德州仪器公司 | 具有jtag端口、tap连接模块和芯片外tap接口端口的集成电路 |
US20060236176A1 (en) * | 2005-03-31 | 2006-10-19 | Alyamani Ahmad A | Segmented addressable scan architecture and method for implementing scan-based testing of integrated circuits |
JP2007148754A (ja) * | 2005-11-28 | 2007-06-14 | Renesas Technology Corp | 半導体集積回路装置 |
Family Cites Families (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5694399A (en) * | 1996-04-10 | 1997-12-02 | Xilinix, Inc. | Processing unit for generating signals for communication with a test access port |
US5828579A (en) * | 1996-08-28 | 1998-10-27 | Synopsys, Inc. | Scan segment processing within hierarchical scan architecture for design for test applications |
US6061709A (en) * | 1998-07-31 | 2000-05-09 | Integrated Systems Design Center, Inc. | Integrated hardware and software task control executive |
US6195774B1 (en) * | 1998-08-13 | 2001-02-27 | Xilinx, Inc. | Boundary-scan method using object-oriented programming language |
US20060117274A1 (en) * | 1998-08-31 | 2006-06-01 | Tseng Ping-Sheng | Behavior processor system and method |
US6370664B1 (en) * | 1998-10-29 | 2002-04-09 | Agere Systems Guardian Corp. | Method and apparatus for partitioning long scan chains in scan based BIST architecture |
US7089404B1 (en) | 1999-06-14 | 2006-08-08 | Transmeta Corporation | Method and apparatus for enhancing scheduling in an advanced microprocessor |
JP2001201543A (ja) * | 2000-01-18 | 2001-07-27 | Rooran:Kk | スキャン・パス構築用プログラムを記録した記録媒体とスキャン・パスの構築方法及びこのスキャン・パスを組み込んだ演算処理システム |
US6640322B1 (en) * | 2000-03-22 | 2003-10-28 | Sun Microsystems, Inc. | Integrated circuit having distributed control and status registers and associated signal routing means |
US6453456B1 (en) * | 2000-03-22 | 2002-09-17 | Xilinx, Inc. | System and method for interactive implementation and testing of logic cores on a programmable logic device |
US6691270B2 (en) * | 2000-12-22 | 2004-02-10 | Arm Limited | Integrated circuit and method of operation of such a circuit employing serial test scan chains |
US6957371B2 (en) * | 2001-12-04 | 2005-10-18 | Intellitech Corporation | Method and apparatus for embedded built-in self-test (BIST) of electronic circuits and systems |
US7047462B2 (en) * | 2002-01-04 | 2006-05-16 | Hewlett-Packard Development Company, Lp. | Method and apparatus for providing JTAG functionality in a remote server management controller |
US20030163773A1 (en) * | 2002-02-26 | 2003-08-28 | O'brien James J. | Multi-core controller |
US7073110B1 (en) * | 2002-04-26 | 2006-07-04 | Xilinx, Inc. | Method and system for programmable boundary-scan instruction register |
US7039841B2 (en) * | 2002-05-08 | 2006-05-02 | Credence Systems Corporation | Tester system having multiple instruction memories |
US6832539B2 (en) * | 2002-07-15 | 2004-12-21 | Delaware Capital Formation, Inc. | Cylinder lock |
JP4182202B2 (ja) | 2002-08-02 | 2008-11-19 | 富士通マイクロエレクトロニクス株式会社 | シミュレーション用カバレッジ算出装置及びシミュレーション用カバレッジ算出方法 |
CN1331007C (zh) * | 2002-12-12 | 2007-08-08 | 精工爱普生株式会社 | 电光装置用基板、该基板的制造方法及其应用、以及掩模 |
US7539915B1 (en) * | 2003-01-07 | 2009-05-26 | Marvell Israel (Misl) Ltd. | Integrated circuit testing using segmented scan chains |
US7406699B2 (en) * | 2003-04-02 | 2008-07-29 | Microsoft Corporation | Enhanced runtime hosting |
US7305586B2 (en) * | 2003-04-25 | 2007-12-04 | International Business Machines Corporation | Accessing and manipulating microprocessor state |
US7080789B2 (en) * | 2003-05-09 | 2006-07-25 | Stmicroelectronics, Inc. | Smart card including a JTAG test controller and related methods |
US7149943B2 (en) * | 2004-01-12 | 2006-12-12 | Lucent Technologies Inc. | System for flexible embedded Boundary Scan testing |
US7139950B2 (en) * | 2004-01-28 | 2006-11-21 | International Business Machines Corporation | Segmented scan chains with dynamic reconfigurations |
US7334060B2 (en) * | 2004-03-19 | 2008-02-19 | International Business Machines Corporation | System and method for increasing the speed of serially inputting data into a JTAG-compliant device |
US20070060114A1 (en) * | 2005-09-14 | 2007-03-15 | Jorey Ramer | Predictive text completion for a mobile communication facility |
JP2007147352A (ja) * | 2005-11-25 | 2007-06-14 | Sony Corp | 無線インターフェースモジュール及び電子機器 |
US8015462B2 (en) * | 2007-05-11 | 2011-09-06 | Renesas Electronics Corporation | Test circuit |
-
2010
- 2010-06-30 US US12/827,556 patent/US8621301B2/en active Active
-
2011
- 2011-06-15 CN CN201180042165.XA patent/CN103080761B/zh not_active Expired - Fee Related
- 2011-06-15 JP JP2013518437A patent/JP5570662B2/ja not_active Expired - Fee Related
- 2011-06-15 KR KR1020137002367A patent/KR101364397B1/ko not_active IP Right Cessation
- 2011-06-15 WO PCT/US2011/040420 patent/WO2012005895A1/en active Application Filing
- 2011-06-15 EP EP11726639.5A patent/EP2588875B8/en not_active Not-in-force
- 2011-06-24 TW TW100122235A patent/TWI432756B/zh not_active IP Right Cessation
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050166092A1 (en) * | 1999-02-19 | 2005-07-28 | Swoboda Gary L. | Emulation system with peripherals recording emulation frame when stop generated |
JP2001135786A (ja) * | 1999-11-09 | 2001-05-18 | Sharp Corp | 半導体装置 |
JP2004280588A (ja) * | 2003-03-17 | 2004-10-07 | Cats Kk | システムlsi設計支援装置およびシステムlsi設計支援プログラム |
CN1842714A (zh) * | 2003-08-28 | 2006-10-04 | 德州仪器公司 | 具有jtag端口、tap连接模块和芯片外tap接口端口的集成电路 |
US20060236176A1 (en) * | 2005-03-31 | 2006-10-19 | Alyamani Ahmad A | Segmented addressable scan architecture and method for implementing scan-based testing of integrated circuits |
JP2007148754A (ja) * | 2005-11-28 | 2007-06-14 | Renesas Technology Corp | 半導体集積回路装置 |
Non-Patent Citations (1)
Title |
---|
A unified test and debug platform for SOC design;Kuen-Jong Lee et al.;《IEEE 8th International Conference on ASIC, 2009. ASICON "09.》;20091020;第577-580页 * |
Also Published As
Publication number | Publication date |
---|---|
EP2588875B8 (en) | 2015-02-25 |
US8621301B2 (en) | 2013-12-31 |
US20100293423A1 (en) | 2010-11-18 |
KR101364397B1 (ko) | 2014-02-26 |
KR20130021466A (ko) | 2013-03-05 |
TW201215901A (en) | 2012-04-16 |
EP2588875A1 (en) | 2013-05-08 |
WO2012005895A1 (en) | 2012-01-12 |
JP5570662B2 (ja) | 2014-08-13 |
EP2588875B1 (en) | 2015-01-14 |
CN103080761A (zh) | 2013-05-01 |
TWI432756B (zh) | 2014-04-01 |
JP2013537662A (ja) | 2013-10-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103080761B (zh) | 用于虚拟内电路仿真的方法和设备 | |
CN102341718B (zh) | 用于使用多个指令类型进行系统测试的方法与设备 | |
KR101545109B1 (ko) | Jtag 시스템들에 대한 연기 스케줄링을 위한 방법 및 장치 | |
US8775884B2 (en) | Method and apparatus for position-based scheduling for JTAG systems |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20150603 Termination date: 20190615 |