CN102341719B - 用于使用扫描链分解进行系统测试的方法与设备 - Google Patents

用于使用扫描链分解进行系统测试的方法与设备 Download PDF

Info

Publication number
CN102341719B
CN102341719B CN201080010625.6A CN201080010625A CN102341719B CN 102341719 B CN102341719 B CN 102341719B CN 201080010625 A CN201080010625 A CN 201080010625A CN 102341719 B CN102341719 B CN 102341719B
Authority
CN
China
Prior art keywords
test
instruction
tisa
sut
system under
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.)
Active
Application number
CN201080010625.6A
Other languages
English (en)
Other versions
CN102341719A (zh
Inventor
苏雷什·戈雅尔
米歇尔·波特兰
布拉德福德·范特鲁尤伦
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Usao Investment Co., Ltd.
Original Assignee
Alcatel Optical Networks Israel Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Alcatel Optical Networks Israel Ltd filed Critical Alcatel Optical Networks Israel Ltd
Publication of CN102341719A publication Critical patent/CN102341719A/zh
Application granted granted Critical
Publication of CN102341719B publication Critical patent/CN102341719B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G01MEASURING; TESTING
    • G01RMEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
    • G01R31/00Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
    • G01R31/28Testing of electronic circuits, e.g. by signal tracer
    • G01R31/317Testing of digital circuits
    • G01R31/3181Functional testing
    • G01R31/3185Reconfiguring for testing, e.g. LSSD, partitioning
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01RMEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
    • G01R31/00Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
    • G01R31/28Testing of electronic circuits, e.g. by signal tracer
    • G01R31/317Testing of digital circuits
    • G01R31/3181Functional testing
    • G01R31/3185Reconfiguring for testing, e.g. LSSD, partitioning
    • G01R31/318533Reconfiguring for testing, e.g. LSSD, partitioning using scanning techniques, e.g. LSSD, Boundary Scan, JTAG
    • G01R31/318558Addressing or selecting of subparts of the device under test

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Tests Of Electronic Circuits (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)

Abstract

本发明提供一种用于经由被测系统的扫描链测试所述被测系统的至少一部分的方法。该方法包括将所述扫描链分解成多个段、生成用于测试所述被测系统的所述部分的指令集,并执行所述指令集以用于测试所述被测系统的所述部分。所述扫描链包括多个元件,并且每段包括所述扫描链的至少一个元件。所述指令集包括多个处理器指令以及多个测试指令,所述多个处理器指令与指令集体系结构(ISA)相关。对于所述扫描链的多个段中的每个段,所述测试指令包括对该段执行的至少一个扫描操作。也提供了相关设备。

Description

用于使用扫描链分解进行系统测试的方法与设备
相关申请的交叉引用
本申请主张于2009年3月4日提交、序列号为61/157,412,标题为“测试指令集体系结构”的美国临时申请的权益,该临时申请以全文引用方式包含于此。
本申请涉及序列号为12/495237,标题为“用于使用多个指令类型进行系统测试的方法与设备”,代理案号为ALU/130137的美国专利申请,并涉及序列号为12/495295,标题为“用于使用多个处理器进行系统测试的方法与设备”,代理案号为ALU/130137-2的美国专利申请,该两件专利申请与本申请同时提交,并将该两件专利申请以全文引用方式包含于此。
技术领域
本发明涉及系统测试领域,更具体地但并不限于涉及生成并控制用于系统测试的指令。
背景技术
电子电路一般是以印刷电路板(PCB)的形式构建而成,该印刷电路板包括焊接于电路板基板上的多个电子元器件,其中电路板基板具有互连各种设备终端以形成电路的导电迹线。因为PCB以及其实现的电路通常都很复杂,制造商对电路板测试正日益变得自动化。在这方面,电路板测试设备已经由连接到密集PCB的I/O连接器并用于高级自动化功能测试的简单I/O功能测试仪,演化为包括用于和被测试电路板上的所有或者一些电路节点进行电连接的探针引脚以用于执行高级和低级测试的测试固定装置,再演化为不需要外部探查被测试电路板的单个电路节点就能提供PCB自动测试的集成测试设备。
电路板和设备中的电路测试一般受到测试自动化工具(TestingAutomation Tools)的控制,该测试自动化工具支持从定义测试算法到实际测试操作的处理所需的步骤。为了便于测试自动化,测试资源经常嵌入在电路板和设备中,并可以利用通常称为测试访问端口(TAP)的标准化接口进行访问。这样会造成对于引脚数以及合理资源访问和管理的限制。通常,大多数现有标准提供能用于描述被测系统(SUT:system under test)内资源的一种或多种语言,这些资源能用作测试自动化工具的输入。这些测试自动化工具能应用他们自己的算法以便生成利用TAP的测试序列。然后,由测试控制单元(TCU:Test Control Unit)使用这些测试序列以控制TAP并执行测试操作。测试操作的特征和性能取决于这些因素中的每一个,即,访问标准、数据格式以及TCU实施。
联合测试行动组(JTAG)已开发出命名为IEEE 1149.1的电路板测试标准。IEEE 1149.1指定用于测试电路板的测试访问端口(TAP)。IEEE 1149.1支持经由被测试电路板上包括的测试设备来对硬件的边界扫描(BS)测试。边界扫描测试包括在软件的控制下控制和监视JTAG可兼容设备的边界引脚以提供超过其他情况下所能达到的测试覆盖率。而且,正在对指令JTAG(IJTAG)进行标准化(命名为P1687),来克服与从板级JTAG至片级JTAG的转换相关联的现有JTAG局限性。
自动测试生成(ATG:Automated Test Generation)工具能使用JTAG和IJTAG来测试芯片和电子设备。JTAG提供简单的5线TAP,其能使用最少的负载串行访问芯片内所实施的资源。然后将访问构架描述成诸如边界扫描描述语言(BSDL)的特定语言,这种特定语言能被许多商用TGT用于生成测试矢量。这些测试矢量一般以称为串行矢量格式(SVF)的格式保存,这样提供1149.1TAP基本操作的高级描述。对于SVF更复杂的替换是STAPL,该STAPL扩展SVF的矢量操作以允许对测试矢量的基本流程控制(if-then-else)以及算术操作。遵从JTAG的TAP接收来自SVF或STAPL播放器的命令,并生成能以后离线解释的简单Go/NoGo结果。
遗憾的是,这些现有的方法具有许多限制。第一个限制在于数据格式,因为测试播放器对于被测系统一无所知,因此,只能执行最基本的操作。第二个限制在于不支持(本地或远程的)交互性测试;而是任何测试结果必须离线检查。而且,这些现有方法是依赖实施的并一般具有专有性。
发明内容
通过用于经由被测系统的扫描链测试被测系统的一部分的方法和设备能解决现有技术中的各种缺陷。
在一个实施例中,提供一种用于经由被测系统的扫描链测试所述被测系统的一部分的方法。该方法包括将所述扫描链分解成多个段,生成用于测试所述被测系统的所述部分的指令集,并执行所述指令集以用于测试被测系统的所述部分。扫描链包括多个元件,并且每个段包括所述扫描链的至少一个元件。指令集包括多个处理器指令以及多个测试指令,所述多个处理器指令与指令集体系结构(ISA)相关。对于所述扫描链的多个段中的每段,所述测试指令包括对该段执行的至少一个扫描操作。
在一个实施例中,提供一种用于经由被测系统的扫描链测试所述被测系统的一部分的设备。所述设备包括将所述扫描链分解成多个段的装置、生成用于测试所述被测系统的所述部分的指令集的装置、执行所述指令集以用于测试所述被测系统的所述部分的装置。所述扫描链包括多个元件,以及每个段包括所述扫描链的至少一个元件。所述指令集包括多个处理器指令以及多个测试指令,所述多个处理器指令与指令集体系结构(ISA)相关。对于所述扫描链的多个段的每段,所述测试指令包括对该段执行的至少一个扫描操作。
附图说明
结合附图,通过考虑以下详细描述,能够容易理解本发明的教导,在附图中:
图1示出了包括测试系统和被测系统的系统测试环境的高级框图;
图2示出了图1的测试系统的一个实施例的高级框图,包括协作生成用于被测系统的测试指令的测试生成工具和软件编译器;
图3示出了图1的测试系统的一个实施例的高级框图,包括协作生成用于被测系统的测试指令的测试生成工具和软件编译器;
图4A-4E示出了利用SPARC V8 ISA实施TISA,说明用于利用SPARC V8 ISA实施TISA的指令编码的细节;
图5示出了利用SPARC V8 ISA实施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示出了适用于执行在此所述功能中的计算机的高级框图;
为便于理解,在可能的情况下,使用相同的附图标记来指示附图中相同的元件。
具体实施方式
提供各种系统测试能力用于执行被测系统(SUT:system undertest)的测试。
在一个实施例中,提供了测试指令集体系结构(TISA)。提供TISA用于执行系统测试。TISA将计算机科学能力与系统测试能力相结合以提供改进的系统测试能力,包括交互测试能力、远程测试能力和在此所述的各种其他能力。通过利用系统测试能力适配基于软件的指令集体系结构(ISA)形成TISA。基于软件的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:测试数据流入(TDI)、测试数据流出(TDO)、测试模式选择(TMS)、测试时钟(TCK)以及可选地测试复位信号(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能使处理器执行简单的指令,诸如读/写值自/至于存储器、在寄存器上执行逻辑或算术操作、处理中断等。该基本性能可以随着时间保持基本不变,由于现代处理器能高效利用大量资源而实现优越的性能,并因此能在大致相同的时间量内完成更大量的基本指令。而且,从使用协处理器能达到更高的性能(例如,浮点协处理器、图形协处理器等),其能够通过硬编码复杂操作来帮助主处理器。
计算机科学中调试的使用允许监视并验证软件开发和执行处理。一般而言,软件开发是个长期并困难的过程,需要对该过程进行严格监视和验证以保证最后的产品没有缺陷,或者说没有一般称为的“缺陷”。为了帮助测试软件程序,软件开发流程提供许多强大的调试特性。例如,通用的软件开发流程调试特性包括逐步执行;所有寄存器和存储器位置的可观察性/可控制性,断点和观察点的使用等。这些调试特性以及各种其他调试特性更经常地由软件编译器嵌入到最终代码中的算法和结构提供,但也能由处理器内用到的硬件资源辅助。根据这些信息,调试器能重建原始代码并将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,已开发该语言作为IEEE1149.1标准部分以用于板级JTAG)、分级扫描描述语言(HSDL,已开发该语言作为BSDL的扩展)、新扫描描述语言(NSDL)等,及其各种组合的描述语言指定该电路描述文件。
系统描述文件211包括一个或多个电路板/固定装置网表文件。该电路板/固定装置网表文件包括和设备的物理描述相关的文件,用于描述网表、连接及类似信息。可以以任何合适的格式,诸如PCB、Gerber和/或适于电路板/固定装置网表文件的任何其他格式,指定电路板/固定装置网表文件。
系统描述文件211包括一个或多个其他描述文件。该其他描述文件可以包括用作生成电路模型的输入的任何其他合适的描述文件。例如,其他描述文件包括任何合适的应用特定和/或工具特定的描述语言文件,诸如Asset的Macro语言、Goepel的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原子操作226的一个或多个ISA二进制文件225。可以以任何合适的方式执行由SC后端算法224对程序模型223的处理以形成该ISA二进制文件225。ISA原子操作226是实施TISA的处理器支持的汇编级指令。
如图2所示,除了TGT210和SC220的各自处理流程,也能利用TGT210和SC220之间的其他交互以用于控制TISA原子操作235的生成。在一个实施例中,SC后端算法224能初始化一个或多个矢量计算请求230至TGT算法214。当SC后端算法需要访问TAP时,SC后端算法224初始化矢量计算请求230。TGT算法214一旦从SC后端算法224接收矢量计算请求230,则根据所接收的矢量计算请求230生成对于TAP的一个或多个TGT原子测试操作216。然后以受到SC后端算法224控制的方式将一个或多个TGT原子测试操作216应用于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)作为输入。由SC320生成该测试操作描述文件331。下文将详细描述由SC320对测试操作描述文件331的生成。
TGT构成器312处理该系统描述文件311和该测试操作描述文件331以生成电路模型313。能以任何合适的方式执行由TGT构成器312对系统描述文件311的处理以生成电路模型313。电路模型313指定对其运行TGT310的被测系统或部分被测系统的模型。系统描述文件311结合测试操作描述文件331的处理使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。可以以任何合适的方式由SC预编译器330预处理计算机科学源文件321以形成预处理的计算机科学源文件321P。SC预编译器330向前端算法322提供该预处理的计算机科学源文件321P。
SC预编译器330在计算机科学源文件321的处理过程中检测测试操作,并生成测试操作描述文件331。能使用任何合适的测试描述语言指定该测试操作描述文件331(例如,利用一个或多个标准测试描述语言、利用TGT310特定的测试描述语言等,及其各种组合)。SC预编译器330向TGT310提供测试操作描述文件331(示意性地,提供到TGT310的TGT构成器312),该TGT构成器312结合系统描述文件311处理测试操作描述文件331以生成电路模型313。
SC前端算法322接受预处理的计算机科学源文件321P。SC前端算法322还接受TISA原子测试操作346,该TISA原子测试操作346由TISA翻译器340利用TGT310从测试操作描述文件331生成的TGT原子测试操作316生成。SC前端算法322编译预处理的计算机科学源文件321P和TISA原子测试操作346以生成程序模型323。该程序模型323指定预处理的计算机科学源文件321P的中间表示,该中间表示包括TISA原子测试操作346,以使在ISA原子操作中集成TISA原子测试操作346以形成TISA原子操作。SC前端算法322向SC后端算法324提供给程序模型323。
SC后端算法324接受程序模型323。SC后端算法324对程序模型323进行处理以生成包括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的被测系统能够提供改进的系统测试。因此,以受到SC后端算法324的控制的方式将TGT原子测试操作316(即以TISA原子测试操作346的方式)应用于TAP,这是因为TGT原子测试操作316和ISA原子操作结合以能够利用ISA原子操作对TGT原子测试操作316进行算法控制。这样,SC220提供访问TAP的算法控制。
可以理解的是,参考图3所示出并描述的各种输入和输出可以以任何其他合适的方式及其组合存储、显示、执行、传播和/或处理。
参考图2和图3,虽然主要参考特定数量的输入文件、中间文件、模型、输出文件等示出并描述图2和图3的实施例,但可以理解的是可以使用任何合适数量的输入文件、中间文件、模型、输出文件等实施图2和图3的实施例以及在此提供的各种相关教导。
图2和图3示出了其中利用计算机科学能力以改进系统测试能力的方式(例如,提供系统测试的更细粒度控制、实现交互系统测试、实现系统测试期间的交互调试,并提供在此示出并描述的各种其他优势)。图2和图3的系统测试方案提供对诸如STAPL的现有方法的改进,其目标在于向矢量格式添加编程特征,并因此从头开始增加调试、远程访问和交互特征。相比而言,TISA利用来自计算机编程和嵌入式应用的信息量以控制系统测试的测试访问。
参考图2和图3,可以理解的是TISA的能力和特性由其抽象层确定,即,TISA原子操作的定义越精细,TISA的性能越优异。
在一个实施例中,其中TISA实施在JTAG架构中,支持用于扫描操作三个抽象层。
第一个抽象层是矢量层。矢量层是三个抽象层中最粗粒度的,其中,原子操作是扫描矢量的输入和输出。矢量层最好以矢量格式表示,诸如串行矢量格式(SVF)或任何其他合适的矢量格式,并给与最高级别的控制。
第二个抽象层是TAP层。在TAP层中,对原子操作进行升级以允许完全控制TAP状态机。这样能更精确地控制扫描操作、支持非标准序列(例如,如在可寻址阴影协议或其他类似协议中需要的非标准序列)。
第三个抽象层是扫描段层。扫描段层是三个抽象层中最细粒度的。矢量层和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,在不需要修改SC310的SC前端324的情况下,可以将TISA原子测试操作(该TISA原子测试操作由TISA翻译器340从TGT310生成的TGT原子测试操作316生成)作为预编译汇编指令输入到SC前端324。可以理解的是基本上所有的编程语言都允许该操作。例如,在C语言中,利用“asm”命令获取该操作。在一个实施例中,需要对SC后端算法324进行细微修改(例如,以处理TISA汇编指令的二进制转换)。在此参考图11A和11B示出并描述该处理的示例。
虽然已主要参考JTAG架构中TISA原子操作的粒度级别示出并描述,但本领域普通技术人员可以理解的是在其他架构中能使用相同粒度级别的TISA原子操作,在JTAG架构和/或其他架构中能使用不同粒度级别的TISA原子操作等,及其各种组合。
如以上所述,能利用任何合适的指令集体系结构(ISA)实施TISA。例如,能使用SPARC V8 ISA、INTEL ISA等实施TISA。
为了便于清楚描述TISA的实施,在此参考图4A-4E示出并描述利用SPARC V8 ISA的TISA的示例性实施例。在该示例性实施例中,TISA实施为矢量层TISA,其允许直接编码构成SVF格式的指令;然而,如上文所述,可以理解的是,也可以执行利用SPARC V8 ISA实施TISA,其中TISA被实施为TAP层TISA或扫描段层TISA。
SPARC V8 ISA在许多产品中实施,诸如开源软处理器系列Leon2和Leon 3。
回顾由SPARC国际公司在1992年发布的“SPARC结构手册版本8”(下文称为“SPARC结构手册”)表明存在许多没被SPARC V8 ISA利用的码字。至少从附录F的“操作码和条件代码”可以明显看出。
图4A示出了SPARC V8 ISA的未被利用的码字。图4所示出的未被利用码字能用于编码TISA的“测试”指令。更具体而言,当“op”和“op2”都设置为零时,该指令在“The SPARC Manual Version 8”中标记为未实施的,以使该指令能用于TISA。
图4B示出了能表示所有十三个SVF指令的编码格式。如图4B所示,比特位30-25包括指令自身的编码,如有TAP状态与该指令一起使用,则比特位21-18可用于编码该TAP状态,以及当需要时每个指令可以使用比特位17-14来指定可选信息。
图4C示出了IEEE1149.1 TAP的TAP状态的示例性比特位编码。使用第一列、第二列和第三列表示TAP状态的比特位编码,其中第一列表示IEEE1149.1 TAP状态名,第二列表示和IEEE1149.1 TAP状态名相关的SVF TAP状态名,以及第三列表示图4B的比特位21-18的位编码。可以理解的是,能以各种其他方式将比特位编码分配给TAP状态。
SVF指令允许使用多个参数,需要在最后代码中编码这些参数。为了表示这些参数,并符合保持指令和数据分离的通常架构最佳实践,为此矢量层TISA的示例性实施定义基于寄存器的参数传递。因此,矢量层TISA提供六个专用32位寄存器:GENERIC1、GENERIC1、TDI、TDO、MASK和SMASK。在图4D中示出了这六个专用32-位寄存器。下文中将详细描述这六个专用32-位寄存器的使用,但作为一般规则,这些寄存器或用于存储参数或用于指向存储参数的存储器位置。因此,在编译时,在TISA指令被调用前,标准的ISA指令能用于加载这些寄存器。更具体而言,在TISA的SPARC V8 ISA实施中,协处理器寄存器能直接用作通常加载/存储指令的参数。
在TISA的SPARC V8 ISA实施中可能使用的SVF指令包括ENDDR、ENDIR、STATE、FREQUENCY、PIO、PIOMAP、HDR、HIR、TDR、TIR、SDR、SIR和RUNTEST。通过参考ASSETI InterTech公司1997年发布的“串行矢量格式参考”(下文中称为“SVF手册”)能更好的理解这些SVF指令,该SVF手册以全文引用的方式包含于此。下文将更详细地描述在TISA的SPARC V8 ISA实施中这些SVF指令的使用。
ENDDR,ENDIR,STATE
ENDDR和ENDIR指令指示TAP接口结束其操作时的TAP状态。STATE指令使TAP接口进入特定状态。在这个TISA的示例性实施中,如图4E所示,ENDDR,ENDIR,STATE指令的SVF编码分别是“000000”、“000001”和“000010”。当需要时,可以使用“TAP STATE”文件(即,图4C所示的TAP状态的示例性比特位编码)执行这些SVF指令的SVF编码。根据对SVF手册的回顾至少可以理解,STATE指令可以可选地采用显式的序列状态作为参数。在TISA的此示例性实施中,将显式的序列状态作为参数将通过一系列指令进行编码,一个指令用于序列中的每个状态。
FREQUENCY
FREQUENCY指令用于指定TAP接口的工作频率。FREQUENCY指令表示为32位整数的赫兹周期。在TISA的此示例性实施中,如图4E所示,FREQUENCY指令的SVF编码是“000011”。FREQUENCY指令的值存储在GENERIC1寄存器中。
PIO,PIOMAP
PIO指令用于处理并行矢量,以之前通过调用PIOMAP设置的格式。在RISA的此示例性实施例中,将PIOMAP看作生成合适命令以建立TAP接口的预处理器指示。因此,PIO指令仅仅需要表示并行矢量,可以通过(在GERERIC1寄存器中)指示其中存储并行矢量的地址来表示。在指令的比特位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比较时使用的掩码,“1”表示关心,“0”表示不关心;
(5)SMASK(可选):标记在TDI中要考虑哪些比特位的掩码,“1”表示关心,“0”表示不关心。
在TISA的此示例性实施例中,如图4E所示,HDR、HIR、TDR和TIR指令的SVF编码分别是“000110”、“000111”、“001010”和“001011”。
在TISA的此示例性实施例中,可使用如下额外的编码:
(1)长度被保存在GENERIC1寄存器中;
(2)当TDI出现时O1为“1”,否则为零。如果设置,TDI寄存器包含存储输入矢量的地址;
(3)当TDO出现时O2为“1”,否则为零。如果设置,TDO寄存器包含存储期望输出的地址;
(4)当MASK出现时O3为“1”,否则为零。如果设置,MASK寄存器包含存储输出掩码的地址;以及
(5)当SMASK出现时O4为“1”,否则为零。如果设置,SMASK寄存器包含存储输出掩码的地址。
SDR,SIR
SDR和SIR指令具有与HDR、HIR、TDR和TIR指令相同的语法,但功能上不同:SDR和SIR触发TAP上的实际扫描操作。在交互测试中,从系统读取的实际输出矢量是算法的基础,因此,TISA提供了在存储器中存储实际输出矢量的可能性。当“TAP STATE”字段(如图4B所示,比特位21-18)不同于零时,GENERIC2寄存器指示实际输出矢量的存储位置。因此,SDR和SIR可以支持最大七个参数。如SPARC结构手册的4.2章所描述的,如果指定TDO并且实际输出矢量不同于期望输出矢量,则在处理器状态寄存器(PSR:ProcessorState Register)中设置溢出标志。
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_count则为‘1’,否则为‘0’。如果设置,GENERIC2寄存器包含max_count的32位无符号表示;
(5)O4:如果设置endstate则为‘1’,否则为‘0’。如果设置,比特位13-10包含该结束状态。
(6)比特位9-0:如果指定run_count,则表示为无符号整数(run_count最大值=210=1024)。如果该字段不是“0”,则比特位30指示run_clock(‘1’=TCK,‘0’=SCK)。
虽然在TISA的此SPARC V8 ISA实施例中主要参考特定的SVF指令的使用进行示出和描述(即,ENDDR、ENDIR、STATE、FREQUENCY、PIO、PIOMAP、HDR、HIR、TDR、TIR、SDR、SIR和RUNTEST),但可以理解的是也能使用更少或更多的SVF指令。
虽然在此主要参考利用SPARC V8 ISA的TISA的实施例进行示出并描述,但可以理解的是根据在此所示出并描述的TISA教导也能使用各种其他ISA。
在交互性测试方法中,数据切换(handoff)点非常重要。如上文所述,测试程序由两个主要部分组成:算法部分(表示为软件编译器)和测试访问部分(表示为测试生成工具)。在使用测试程序的测试操作中,会出现如下时刻:测试程序正访问被测系统的时刻,以及当测试程序正检查测试结果并决定所需下一步骤的时刻。这两个操作之间的切换对于获取高效的交互性测试非常重要。
在诸如SVF和STAPL的现有基于脚本的方法中,脚本处理矢量层的所有TAP操作。在该层中,接口(或“播放器”)能与TAP协议进行通信,并发送/接收矢量至/自被测系统。而且,STAPL也允许某些对位矢量的基本流程控制(if-then-else)以及算法操作。如果需要更复杂的处理(例如,识别所接收矢量内的寄存器,或计算矢量以访问特定设备),播放器将控制权交给算法部分。在STAPL中,可通过“导出”(“export”)命令进行该操作。然而,遗憾的是,SVF和STAPL都不具有它的标准格式(例如,对于STAPL,切换处理通常是某些厂家专有的)。
在现有的嵌入式方法中,如Ericsson的主测试控制器(MTC)和系统BIST处理器,在算法部分和测试访问部分使用相同的划分。在这样的嵌入式方法中,算法部分和测试访问部分由必须单独编程的不同协处理器执行。而且,算法部分和测试访问部分的存储空间是物理上不同的,因此生成的切换机制类似于STAPL的切换机制。结果使得用于测试访问部分的协处理器在切换到算法部分之前存储许多扫描操作,考虑到增加的扫描链大小,该协处理器会需要大量资源。
与现有的集成测试方法相比(例如,诸如SVF和STAPL的基于脚本的方法,以及诸如MTC和系统BIST处理器的嵌入式方法),TISA在算法部分(即常规ISA)中集成测试访问部分(即测试操作),以使测试访问部分和算法部分共享相同的物理存储空间,因此使得测试访问部分和算法部分之间的切换(以及由此的数据传递)自动化。在TISA中,在指令层执行测试访问部分和算法部分之间的切换,以使处理器能根据相关的调度策略当需要时灵活地混合扫描和算法(即,灵活地混合测试操作和算法操作)。
在TISA的此示例性实施例中,使用SPARC V8 ISA,处理矢量的所有操作使用绝对寻址(如上述参考SVF指令所描述的)。结果,可以像ISA程序中的标准变量一样使用测试矢量,由此使得测试访问部分和算法部分之间的接口自动化。作为示例,根据上文所述的使用SPARC V8 ISA的TISA的示例性实施例,如下步骤举例说明典型的测试序列:
(1)SDR指令用于从被测系统获取测试输出数据。生成的输出数据置于特定的存储器位置(例如,GENERIC2寄存器中的“实际”参数);
(2)常规LOAD指令传输该将被加载到寄存器中的输出数据;
(3)一旦输出数据被加载到寄存器中,可使用算术操作和/或逻辑操作处理输出数据(注意:因为SPARC V8 ISA是加载/存储结构,所有的数据在被处理前都必须加载到处理器中);
(4)常规STORE指令用于将算法结果传输到存储器中;
(5)SDR指令将新的测试输入数据发送到TAP(例如,使用TDI寄存器中的“TDI”参数)。
注意,常规算术操作(2)-(4)对于任何ISA算术实施都是标准的,绝不能由TISA修改。
因此,从这个简单示例可以看出,使用在算法部分和测试访问部分之间具有正常有效的切换的任何给定算法或计算机程序都能支持TISA。
在TISA的此示例性实施例中,使用SPARC V8 ISA,采用绝对寻址(为了清楚描述TISA);然而,本领域普通技术人员根据在此的教导告知可以修改TISA的此示例性实施例以支持在SPARC结构手册中描述的所有合法SPARC V8寻址模式。
虽然在此主要参考其中利用SVF的TISA的示例性实施例进行示出并描述,在示例性实施例中利用SVF是因为它是已被证实能提供完整甚至基础的1149.1TAP处理的众所周知的格式,但本领域技术人员根据在此的教导告知可以理解,能够使用任何其他合适的控制格式实施TISA,其中许多格式允许更精细的TAP状态机控制并支持更复杂的测试操作。
虽然在此主要参考其中抽象层是矢量层的TISA的示例性实施例进行示出并描述,但本领域技术人员根据在此的教导告知可以理解,可以修改在此示出并描述的示例性TISA实施例,以使TISA的抽象层是TAP层或扫描段层。
为了清楚地描述TISA,在此参考图5和图6示出并描述在示例性被测系统上执行测试的TISA的示例性使用。在TISA的此示例性使用中,TISA被实施为使用SPARC V8ISA和SVF的矢量层TISA(即,继参考图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(表示为B1)和第二电路板525(表示为B2)。第一电路板521包括发送器522(表示为T)。第二电路板525包括接收器526(表示为R)。发送器522在连接529上将数据发送到接收器526。在本示例中,连接529是8位连接。
如图5A所示,从JTAG TAP510经由每个电路板自身的扫描链可访问每个电路板。即,经由第一扫描链523可访问第一电路板521并经由第二扫描链527可访问第二电路板525。第一扫描链523和第二扫描链527可由JTAG TAP510的IR512选择(即,IR=0选择第一电路板B1,IR=1选择第二电路板B2)。发送器522和接收器526在它们的电路板上都不是孤立的,而是更大的扫描链的一部分(例如,对于该示例,分别具有24比特位和16比特位)。
在测试程序中,经由第一扫描链523将输入数据发往发送器522,并通过利用第二扫描链527从接收器526收集生成的输出数据。为了执行详尽的测试,通过连接529发送所有可能的值,以使通过连接529发送28=256个矢量。使用C语言的示例性程序如下:
在该程序中,第2行包括处理JTAG操作的C模块,其中定义了分别用在12行和13行的函数“apply_JTAG”和“Read_JTAG”。SC320的预编译器330识别这些函数并生成TGT310的测试操作描述文件331。测试操作描述文件331的格式取决于第一电路板521和第二电路板525的实际实施而变化。例如,如果第一电路板521和第二电路板525都是IJTAG兼容的,则可以例如利用新扫描描述语言(NSDL)编码指定测试操作描述文件331。TGT310利用测试操作描述文件331生成TGT原子测试操作316,TISA翻译器340将这些TGT原子测试操作316翻译为TISA原子测试操作346。TISA原子测试操作346被提供给SC320的前端324。图5B所示为TGT原子测试操作316、TISA原子测试操作346和生成的TISA二进制编码。
图5B示出了由执行图5A的系统测试环境500的测试的测试系统使用的从C命令到TISA编码的映射。
如图5B所示,使用具有如下四列的表格540表示从C命令到TISA编码的映射:“C命令”列541、“SVF指令”列542、“TISA汇编程序”列543以及“TISA编码”列544。表格540从左到右示例性示出C命令被翻译成SVF指令、SVF指令被翻译成TISA汇编程序、TISA汇编程序被编码为TISA二进制编码的方式。
Apply_JTAG(value,B1.T)命令被翻译成两个SVF命令:SIR 8TDI(00)和SDR 24 TDI(value)。
SIR 8 TDI(00)SVF指令被翻译成TISA汇编程序的如下三个操作:
SET 8,%cGENERIC1
SET 00,%cTDI
SIR TDI,其被翻译成TISA编码12010000。
SDR 24 TDI(value)SVF指令被翻译成TISA汇编程序的如下三个操作:
SET 24,%cGENERIC1
SET value,%cTDI
SDR TDI,其被翻译成TISA编码10010000。
Read_JTAG(value,B2.R)命令被翻译成两个SVF指令:SIR 8TDI(01)和SDR 16 ACTUAL(value)。
SIR 8 TDI(01)SVF指令被翻译成TISA汇编程序的如下三个操作:
SET 8,%cGENERIC1
SET 01,%cTDI
SIR TDI,其被翻译成TISA编码12010000。
SDR 16 ACTUAL(value)SVF指令被翻译为TISA汇编程序的如下三个操作:
SET 16,%cGENERIC1
SET“value”,%cGENERIC2
SDR ACTUAL,其被翻译成TISA编码10008000。
没有指定SET操作的TISA编码,这是因为SPARC V8手册将它们识别为“伪指令”,随着处理器的实施,伪指令具有不同的编码。
利用所确定的TISA编码,预编译器330现在可用高级JTAG访问相关的TISA汇编指令取代该高级JTAG访问。结果是下列用C指定的编码,其中调用JTAG TAP已经由相关的TISA汇编编码代替:
可将这些编码输入到前端算法322,该前端算法322将生成程序模型323。可将该程序模型323输入到后端算法324,该后端算法324将生成包括TISA原子操作356的可执行TISA二进制文件355。
表格540的“TISA编码”列示出了TISA汇编指令的二进制编码(例如,如参考图4A-4E所示出并描述的,使用参考利用SPARC V8ISA的TISA的示例性实施例定义的各种规则)。
如在此描述的,TISA提供在执行被测系统的测试中关于测试粒度的完全自由(即,从TAP层到扫描段层)。如图2和图3所示,并使用图4A-4E和图5A-5B的示例性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。调试控制程序605能使HC601跟踪,并在需要或必要时变更运行在TS610上计算机程序执行。例如,调试控制程序605包括一个或多个GNU调试器(GDB)、dbx调试器、Perl调试器、Bash调试器、Python调试器,及类似的合适的调试程序及其各种组合。
存储器604也能存储一个或多个调试显示程序606。调试显示程序606能使HC601显示和调试控制程序605相关联的信息。能以任何合适的方式由调试显示程序606显示和调试控制程序605相关联的信息(例如,使用一个或多显示设备)。例如,调试显示程序606包括一个或多个Insight(其是到GDB的图形用户接口)、数据显示调试器(DDD,其为各种命令行调试器提供图形用户接口,诸如GDB及其他)、及类似合适的调试器显示程序,及其各种组合。
TS610由HC601控制用于测试SUT620。TS610被配置用于与TISA一致的方式运行(例如,诸如参考图1-图3的TS110示出并描述的)以及,进一步被配置用于支持交互性测试(例如,通过启动由HC601上运行的调试器访问)。
TS610包括耦接到存储器614的TISA处理器612。可以利用任何合适的处理器,诸如SPARC V8(如参考图4A-4E和图5示出并描述的)、INTEL等实现TISA处理器612。存储器604可以是任何合适的存储器。
存储器614存储一个或多个调试程序余段(stub)615。调试程序余段615获知在HC601上运行的对应调试控制程序的调试协议,因此能使HC601与TS610通信。例如,调试余段615包括一个或多个GDB余段、DBX余段、Perl余段、Bash余段、Python余段,及类似合适的调试程序余段,及其各种组合。
存储器614存储TISA二进制文件616。以参考图2和图3所示并描述的方式由TS610生成该TISA二进制文件。由TISA处理器612执行该TISA二进制文件616以对SUT 620进行测试。
TS610还包括耦接到TISA处理器612的测试访问端口(TAP)618。TAP 618提供TISA处理器612和SUT 620之间的测试接口以使TISA处理器612执行在由HC601控制时的SUT 620的测试。TAP618可以是任何合适的TAP(例如,1149.1TAP)。
TISA处理器612使用接口617与TAP 618连接。接口617可以是TAP和被测系统之间任何合适的接口(例如,诸如支持TCK,TMS,TDI,TDO和可选地TRST的接口,其中TAP 618被实施为1149.1TAP)。
如图6所示,HC 601和TS 610之间具有接口609。接口609可以支持HC601和TS610之间的本地通信和/或远程通信。因此,HC 601可经由TS610本地和/或远程地控制SUT 620的交互性测试。
例如,对于本地测试,接口609能实施为一个或多个通用异步收发器(UART)接口、串行接口等,及其各种组合。
例如,对于远程测试,可利用任何合适的通信能力,诸如传输控制协议(TCP)/网络协议(IP)或任何其他合适的通信协议实现接口609。这样能远程测试,其中HC601和TS610分隔很远的地理距离,并且HC601仍能控制TS610以执行SUT620的测试。
在基于TISA的测试环境600中,HC601通过经由标准连接(例如UART、TCP/IP等)控制TS610的操作而能逐步地控制对SUT620的测试执行,因此实现交互性测试和调试能力。
虽然为了清楚起见而省略,但可以理解的是HC601和TS 610可包括各种其他组件,诸如其他处理器、其他存储器、内部通信总线、输入/输出模块、其他支持电路(例如,电源)等,及其各种组合。
虽然为了清楚起见而省略,但可以理解的是SUT620可以是利用TISA测试的任何被测系统。
虽然主要参考特定类型的调试控制程序、调试显示程序、接口等示出并描述,但可以理解的是能使用各种其他调试控制程序、调试显示程序、接口等、及其各种组合以实现完全交互性测试的方式实施基于TISA的测试环境600。
图7示出了图6的基于TISA测试环境的示例性实施例。
如图7所示,图7的示例性基于TISA测试环境是图6的基于TISA的测试环境600的实施,其中GNU工具套件用于支持图5A的示例性系统测试环境的交互性测试。
如图7所示,示例性基于TISA的测试环境700包括主机(HC)701、测试系统(TS)710和被测系统(SUT)720。
HC701包括处理器702和存储器704。图7的HC 701是图6的HC 601的实施,其中使用GDB(GDB 705)实施调试控制程序605并使用DDD(DDD 706)实施调试显示程序606。
TS710包括TISA处理器712和存储器714。图7的TS 710是图6的TS 610的实施,其中使用SPARC V8 ISA(表示为SPARC V8 TISA处理器712)实施该TISA处理器612,使用GDB余段(GDB余段715)实施调试程序余段615,并基于和SPARC V8 TISA处理器712(TISA二进制文件716)相关联的SPARC V8 ISA生成TISA二进制文件616。
TS710还包括耦接到SPARC V8 TISA处理器712的测试访问端口(TAP)718。图7的TS 710是图6的TS 610的实施,其中使用1149.1TAP(1149.1 TAP 718)实施TAP618。
SPARC V8 TISA处理器712利用接口717与1149.1 TAP718连接。接口717是标准1149.1接口,它能支持TCK、TMS、TDI、TDO以及可选地TRST。
SUT720是图5A的SUT 520。如同图5A的SUT520一样,SUT720包括不同电路板上的发送器和接收器。
1149.1 TAP718提供SPARC V8 TISA处理器712和SUT 720之间的测试接口,用于在受到HC701的控制下,使SPARC V8 TISA处理器712执行SUT720的测试。
如图7所示,在HC701和TS710之间具有接口709。接口709支持HC701和TS710之间的本地通信和/或远程通信(例如,经由网络)。因此,HC701经由TS710本地和/或远程地控制SUT720的交互性测试。
在示例的基于TISA的测试环境700中,HC 701能通过经由于接口709控制TS710的操作而逐步地控制SUT720的测试执行,因此实现交互性测试和调试能力。
可以理解的是图7左手边的大多数元件重用现有的计算机科学元件:即,整个HC701,以及TS 710上的GDB余段(stub)715。对于图7的中间部分同样如此,HC 701和TS710之间(以及它们相关的子元件之间)的相似之处很明显。TISA允许利用整个架构以提供系统测试。
作为示例,参考图5A的系统测试环境500(包括相关示例性的C程序、SVF指令、TISA汇编指令及TISA编码),通过利用GDB(或任何其他合适的调试器),TISA可以实现许多交互性测试操作,诸如:(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的参数。利用并发运行的三个程序能高效地执行该优化。
FIG.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中的TAP 510,图7中的TAP 718)以便经由第二电路板525(B2)的扫描链527从接收器526收集输出数据模式。模式接收器804能以任何合适的方式从接收器526收集输出数据模式(例如在此参考图5A描述的代码的14-15行所指定的)。
比较器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的访问,并能利用公知结构和算法(例如Dijkstra信号量)解决任何最终的TAP共享问题,这对于所有处理器资源都是这样做的。因此,虽然现有系统测试能力不支持并发,但显然TISA可轻易地全面支持并发。
如在此所述,TISA对于测试访问方法或相关测试程序划分没有做任何假设;而是,以与常规ISA指令相同或实质上相同的方式处理测试指令,两者之间没有任何先验区分。这使得TISA能与所有现有(以及,非常可能地未来的)计算机科学算法和结构完全兼容,这些算法和结构是现有测试处理器方法所不支持的。
可以理解的是,任何现有的软件库都能移植到TISA架构。例如,通过利用POSIX和BOOST套件能轻易获取多任务性和并发性(例如,在此参考图8所示出并描述的)。而且,可以理解的是,对于作为现有ISA的概括获取的TISA(如参考图5A和图5B示出并描述的示例性SPARC V8 TISA实施所示出并描述的),移植甚至不是必要的,因为从其开发TISA的ISA将已经包括该软件库。
而且,可以理解的是也能使用各种其他计算机科学技术以提供利用TISA的改进系统测试。例如,对于TISA可利用的该计算机科学技术的某些示例包括:(a)使用独立于平台的编码风格,(b)使用ISA-ISA转换器,(c)使用例如Java的虚拟机方法,以获取独立于平台的字节码,或甚至扩展Java虚拟机自身以成为TISA;以及(d)使用应用编程接口(API)以对某些TISA软件接口进行标准化,由合适的驱动器将这些软件接口翻译成原语(primitive)。可以理解的是,这些技术仅仅是可被TISA利用的计算机科学技术的一些示例。
图9示出了修改处理器的指令集体系结构(ISA)流程以形成包括TISA指令的测试指令集体系结构(TISA)的方法的一个实施例,该些TISA指令适于由处理器用于测试被测系统的至少一部分。
虽然在此主要示出并描述的为串行执行,但方法900的至少一部分步骤能同时执行,或以不同于参考图9所示出和描述的顺序执行。
在步骤902,方法900开始。
在步骤904,生成第一指令集。第一指令集包括处理器支持的ISA指令(即,利用ISA指令以为处理器提供TISA)。
在步骤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,合并的指令集被存储、显示、传播和/或执行,或其任何组合。能以任何合适的方式处理合并的指令集。
在步骤3012,方法1000结束。
图11A和图11B示出了参考图9示出并描述的方法900和/或参考图10示出并描述的方法1000的更加详细的实施例。
图11A示出了用于生成适于测试被测系统的至少一部分的方法的一个实施例。虽然在此主要示出并描述的是以特定顺序执行,但能以不同于参考图11A示出并描述的顺序执行图11A的方法1110的至少一部分步骤。通过结合图2和图2的相关描述查看图11A可更好的理解图11A。
在步骤1111,方法1000开始。
在步骤1112,生成程序模型。通过编译至少一个计算机科学软件文件生成该程序模型(例如,由处理器支持的ISA的ISA指令),其中至少一个计算机科学软件文件包括至少一个调用。
在步骤1113,生成第一指令集,使用程序模型生成该第一指令集。使用在该至少一个计算机科学软件文件中包括的至少一个调用也生成至少一个计算请求。
在步骤1114,生成电路模型。通过编译和被测系统相关的至少一个系统描述文件生成该电路模型。
在步骤1115,生成第二指令集。使用电路模型和至少一个计算请求生成该第二指令集。
在步骤1116,第一指令集和第二指令集经过合并以形成合并的指令集。在合并的指令集中,第一指令集的指令适用于控制第二指令集的测试指令的执行。
在步骤1117,合并的指令集被存储、显示、传播和/或执行,及其各种组合。能以任何其他合适的方式处理该合并的指令集。
在步骤1118,方法1000结束。图11B示出了生成适用于测试被测系统的至少一部分的指令的方法的一个实施例。虽然在此主要示出并描述的是串行执行,但图11B的方法1120的至少一部分步骤可同时执行,或以不同于参考图11B所示出并描述的顺序执行。通过结合图3和图3的相关描述查看图11B能更好的理解图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的方式运行。例如,可利用SPARC V8 TISA处理器和相关存储器实现图12的TISA处理器架构1200,例如在参考图7示出并描述的测试系统710中。在该实施例中,TISA处理器1210本身解释并执行ISA和TISA指令。
在一个实施例中,经由测试访问端口(TAP)用于测试至少部分被测系统的设备包括存储器和处理器,其中,存储器用于存储测试指令集体系结构的指令集,处理器经由TAP执行测试指令集体系结构的指令集以用于测试被测系统的至少一部分。指令集体系结构的指令集包括第一指令集和第二指令集,其中,第一指令集包括处理器支持的指令集体系结构(ISA)的多个指令,第二指令集包括和TAP相关的多个测试指令,其中第一类(class)指令的指令和第二类(class)指令的指令被集成以借此形成测试指令集体系结构的指令集。
在一个实施例中,用于经由测试访问端口(TAP)测试被测系统的至少一部分的TISA处理器包括第一类(class)指令和第二类(class)指令,其中,第一类指令包括处理器支持的指令集体系结构(ISA)的指令,第二类指令包括和TAP相关的测试指令,其中第一指令集的ISA指令和第二指令集的测试指令被集成以形成适于测试被测系统的至少一部分的TISA。。
在一个实施例中,用于经由测试访问端口(TAP)测试被测系统(SUT)的计算机处理器包括被配置用于根据测试指令集体系结构(TISA)来处理指令的电路,该测试指令集体系结构(TISA)具有经由TAP实现与被测系统进行交互的语义。TISA包括多个第一类型(type)指令和多个第二类型(type)指令,其中第一类型指令包括计算机处理器支持的指令集体系结构(ISA)的指令,而第二类型指令包括经由TAP用于测试被测系统的测试指令。
虽然上文主要参考其中以特定方式(例如,使用特定语言描述不同类(class)和/或类型(type)的指令)定义TISA处理器的实施例示出并描述,但可以理解的是,能以在此提供的各种TISA示出及描述完全支持的其他方式定义TISA。
虽然在此主要参考其中利用单个处理器支持TISA来实现TISA处理器架构的实施例进行示出并描述。但在其他实施例中,可以使用多个处理器实现TISA处理器架构。
图13示出了利用多个处理器提供系统测试能力的测试处理器架构的示例性实施例。
如图13所示,测试处理器架构1300包括主处理器1310和经由通信路径1330进行通信的第二处理器1320。
主处理器1310可以是适于支持系统测试的任何处理器,诸如SPARC V8处理器、INTEL处理器,或任何其他合适的处理器。主处理器1310执行指令以用于测试被测系统。例如,在一个实施例中,主处理器1310支持与图12(其中测试处理器架构1300利用TISA)的TISA处理器架构1200中的CPU1210支持的功能相类似的测试功能。例如,在一个实施例中,在未利用TISA的测试处理器架构中,主处理器1310支持由测试处理器支持的测试功能。主处理器1310可以支持其他测试能力。
第二处理器1320可以是适于支持系统测试的任何处理器,诸如SPARC V8处理器、INTEL处理器,或任何其他合适的处理器。第二处理器1320支持测试访问端口(TAP)连接到被测系统(为了清楚起见,故省略该被测系统)。TAP接口与任何合适的TAP连接。例如,TAP接口提供连接到IEEE1149.1 TAP或任何其他合适的用于测试被测系统的TAP的接口。
主处理器1310和从处理器1320协作以执行至少部分被测系统的测试。
主处理器1310执行用于测试被测系统的指令。测试指令可以是TISA的测试指令(其中测试处理器架构1300利用TISA)或与TISA不相关联的测试指令(其中测试处理器架构1300未利用TISA)。在测试指令执行期间,主处理器1310检测与控制被测系统的TAP相关指令(例如,诸如将输入数据装载到被测系统的TAP控制器的指令,从被测系统的TAP控制器读出数据的指令,及类似指令,及其各种组合)。主处理器1310向从处理器1320提供TAP相关的指令。从处理器1320从主处理器1310接收TAP相关的指令。从处理器1320执行TAP相关指令。当从处理器1320执行从主处理器1310接收的TAP相关指令时,主处理器1310继续执行测试指令。这样,当从处理器1320经由被测系统的TAP控制扫描操作时,主处理器1310执行环境切换并继续操作。由于当单个处理器控制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。CPU1410TCPU1420、主存1430和闪存1440中的每个都耦接到主处理器接口总线1451,或以其他方式被配置用于能够与主处理器接口总线1451通信。
测试协处理器架构1400还包括直接耦接CPU1410和TCPU1420的辅助处理器接口1452,因此实现CPU1410和TCPU1420之间的直接通信。
CPU1410可以是适于执行被测系统的系统测试的任何CPU。CPU1410支持由参考图13示出并描述的主处理器1310支持的测试能力。
TCPU1420可以是适于推动被测系统的系统测试的任何CPU。TCPU1420支持测试访问端口(TAP)接口1460,该接口1460可以与任何合适的TAP(例如,诸如IEEE 1149.1 TAP或用于测试被测系统的任何其他合适的TAP)连接。TCPU1420支持由参考图13示出并描述的从处理器1320支持的测试能力。
以类似于参考图13示出并描述的主处理器1310和从处理器1320的方式,CPU1410和TCPU1420协作执行被测系统的至少一部分的测试。当TCPU1420执行TAP相关指令以用于在测试期间控制被测系统的TAP时,CPU1410和TCPU1420利用指令异常处理以便能使CPU1410继续运行以处理测试指令。
CPU1410执行用于测试被测系统的测试指令。在执行测试指令期间,CPU1410检测指令异常(即,关于控制被测系统的TAP的指令)并将指令异常提供给TCPU1420。TCPU1420从CPU1410接收指令异常,并处理该等指令异常,以便当CPU1410继续运行以执行其他任务(例如,执行其他测试指令)时TCPU1420能处理该等指令异常。换而言之,CPU1410和TCPU1420在系统测试期间协作,以便当TCPU1420处理由CPU1410检测的指令异常时CPU1410能切换环境并继续运行以执行其他任务,借此改进系统测试效率。
在一个实施例中,CPU1410包括缓存1411,例如用于改进CPU1410的性能。
在一个实施例中,TCPU1420包括直接存储器访问(DMA)单元1421,该单元可以是适用于支持系统测试的任何类型的DMA单元。例如,在一个实施例中,DMA单元1421是分散/收集(S/G)DMA单元。TCPU1420可以利用DMA单元1421来处理从CPU1410接收的指令异常,以及高效地访问存储器中存储的敏感数据。在一个实施例中,CPU1410可在遇到指令异常之前配置S/G DMA表格。
在一个实施例中,TCPU1420支持专用TCPU指令集。专用TCPU指令集支持TAP访问和控制。TCPU1420能使用专用TCPU指令集以用于在TAP状态机上执行具体TAP操作。
CPU1410和TCPU1420利用主存1430和/或闪存1440以用于执行各种测试功能,诸如由CPU1410执行测试指令、由TCPU1420处理指令异常、由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,或以其他方式被配置用于能够与主处理器接口总线1550通信。
在一个实施例中,CPU1510包括例如用于改进CPU1510的性能缓存1511。
TAPU1520可以是适于推动被测系统的系统测试的任何CPU。TAPU1520包括输入/输出模块1521。TAPU1520支持测试访问端口(TAP)接口1590,该接口1590可以与任何合适的TAP(例如,诸如IEEE 1149.1 TAP或用于测试被测系统的任何其他合适的TAP)连接。TAPU1520支持由参考图13示出并描述的从处理器1320所支持的测试能力。
TAPU1520具有与其连接的本地测试存储器1560。TAPU1520具有与其连接的内部接口总线1570。TAPU1520和本地测试存储器1560每个都耦接到内部接口总线1570,或以其他方式被配置用于能够与内部接口总线1570通信。
与CPU1510和TAPU1520的输入/输出模块1521相关联的输入/输出模块1540支持在CPU1510和TAPU1520之间实现通信的通信接口1580。通信接口1580支持从CPU1510到TAPU1520的TAP相关命令流。
在一个实施例中,和CPU1510相关联的输入/输出模块1540以及TAPU1520的输入/输出模块1521支持串并行转换器(SERDES)的通信能力,并因此,通信接口1580是基于SERDES的通信接口。在这个实施例中,能使用任何合适的SERDES通信协议(例如,诸如千兆位以太网(GigE)、高速串行IO(SRIO)、外设部件互连(PCIe)等)实施基于SERDES的通信接口1580。虽然在此主要参考在CPU1510和TAPU1520之间使用基于SERDES的通信进行示出并描述,但也能使用其他合适的通信能力以支持CPU1510和TAPU1520之间的通信。
以类似于参考图13所示出并描述的主处理器1310和从处理器1320的方式,CPU1510和TAPU1520协作执行被测系统的至少一部分的测试。CPU1510和TAPU1520经由通信接口1580利用命令流以实现当TAPU1520执行TAP相关指令以在测试期间控制被测系统的TAP时,CPU1510能继续运行以处理测试指令。
CPU1510执行用于测试被测系统的测试指令。在执行测试指令期间,CPU1510检测与控制被测系统的TAP相关的指令。CPU1510经由通信接口1580将TAP相关指令传播到TAPU1520(即,经由主处理器接口总线1550从CPU1510到输入/输出模块1540,以用于经由通信接口1580的传播)。TAPU1520接收TAP来自CPU1510的相关指令并处理该TAP相关指令,以便当CPU1510继续运行以执行其他任务(例如,执行其他测试指令)时,TAPU1520能处理对TAP的控制。换而言之,CPU1510和TAPU1520在系统测试期间进行协作以便当TAPU1520处理由CPU1510检测的TAP相关指令时,CPU1510能切换环境并继续运行以执行其他任务,借此改进系统测试效率。
在一个实施例中,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,但也能适于任何其他字(word)大小(例如,16位、64位或任何其他合适的字大小)。
图16示出了能由TISA处理器使用的示例性寄存器集。示例性TISA包括四个寄存器集(表示为寄存器集R1-R4),分别在图16A-16D中所示。
如图16A所示,第一寄存器集R1包括如下用户可访问数据寄存器:
·StatusRegister:包含状态指示信息的32位寄存器;
·ControlRegister:包含命令编码的32位寄存器;
·BlockRegister:包含到预格式化数据结构的存储器偏移的32位寄存器,其间接指向扫入数据(收集数据)和写出数据(分散数据)的地方[用于访问分散/收集段描述的所有扫描和比较操作];
·ScanLengthRegister:有待扫描的当前比特位数量所在的32位寄存器(也由用于块模式操作码的分散/收集段描述来自动填充);
·ScanStateRegister:32位寄存器,包含3组4比特位,每组表示扫描操作的开始状态、扫描状态和结束状态,4比特位表示TAP状态机的16个状态编码。(也由块模式中的分散/收集段描述来填充);以及
·UserDataRegisters[1-11]:32位寄存器,包含用于小型扫描操作和数据重用的扫描段数据(可以是源寄存器或目标寄存器)。
如图16B所示,第二寄存器集R2包括如下内部临时寄存器:
·BlockPointerRegister:指向在多个扫描指令期间要处理的当前分散/收集段描述参考的32位寄存器;
·BlockCountRegister:包含在多个扫描指令期间要处理的分散/收集段描述数量的32位寄存器;以及
·InstructionRegister:32位寄存器,其中放置用于解码当前操作码。
如图16C所示,第三寄存器集R3包括如下分散/收集段描述寄存器:
·BlockOffsetField:当使用64位架构时,描述地址库的32位数字;
·ScanLengthField:指定为该段要扫描的比特位数量的32位整数;
·StateTraversalField:4比特位的3个字段,每个表示该扫描操作的开始状态、扫描状态和结束状态(每4比特位表示TAP状态机的16个状态);
·SourceLocationField:TDI数据位于存储器中的32位基地址;
·DestinationLocationField:将TDO数据存储在存储器中的32位基地址;
·ExpectedValueField:期望矢量位于存储器中的32位地址;
·ResponseLocationField:获取的TDI数据位于存储器中的32位基地址;
·MaskField:用于限制比较操作的MASK数据位于存储器中的32位基地址;
·ResultLocationField:将比较结果保存在存储器中的32位基地址。
如图16D所示,第四寄存器集R4包括如下多块分散/收集段描述寄存器:
·BlockOffsetField:当使用64位架构时描述地址库的32位数字;
·BlockCountField:定义由该多块(MultiBlock)扫描表示的扫描段数量的32位数字(用于在多块扫描操作期间初始化BlockCountRegister);
·ScatterGatherOpcodeField:用于由相关的ScatterGatherBlockField指向的分散/收集段描述的32位命令操作码;以及
·ScatterGatherBlockField:和前述ScatterGatherOpcodeField相关的分散/收集段描述位于存储器中的32位地址。
可以理解,能以任何合适的方式修改该示例性TISA寄存器集。例如,每个示例性寄存器集可以经过修改以包括更少、更多和/或不同的寄存器。例如,可以将示例性寄存器重新分组成更少、更多和/或不同的集合。例如,可以使用为更少、更多和/或不同的寄存器集。换而言之,可以用适于与TISA指令集来实施TISA处理器架构的任何其他TISA寄存器集取代示例性TISA寄存器集。
示例性TISA能使用任何合适的用于执行系统测试的TISA指令集(例如,命令词典)。
示例性TISA指令集包括如下操作码,该操作码可以用于操纵参考图16A-16D示出并描述的寄存器集R1-R4,以及在此示出并描述的原始ISA寄存器集合:
StateTransition<TMS值>,<TCK周期>
·该操作码利用TMS的值为给定数量的TCK时钟周期遍历TAP状态机。该操作码用于执行TAP状态机的状态之间的一般性状态转换。<TMS值>表示单个比特位,而<TCK周期>表示操作码的剩余的数据比特位。
RunTest<开始状态>,<测试状态>,<结束状态>
·该操作码用于从<开始状态>转换到<测试状态>,并在ScanLengthRegister指定数量的TCK周期内在<测试状态>内循环。该操作码用于在循环结束时转换到<结束状态>。
ScanRegister<源寄存器>,<目标寄存器>[,<期望寄存器>][,<屏蔽寄存器>]
·该操作码用于扫描用户数据寄存器<源寄存器>中的数据并将获取的值保存在用户数据寄存器<目标寄存器>中。如果<期望寄存器>出现,则相应地将获取的数据和该值进行比较并提出错误,如果出现,最终使用<屏蔽寄存器>。在ScanLengthRegister(0<=n<32)中定义扫描的比特位数量。在ScanStateRegister中定义开始状态、扫描状态和结束状态。
ScanRegisterZero<目标寄存器>[,<期望寄存器>][,<屏蔽寄存器>]
·该操作码用于扫描全“0”的矢量值并将获取的值存储在用户数据寄存器<目标寄存器>中。在ScanLengthRegister(0<=n<32)中定义扫描的比特位数量。在ScanStateRegister中定义开始状态、扫描状态和结束状态。如在ScanRegister指令中一样使用<期望寄存器>和<屏蔽寄存器>。
ScanRegisterOne<目标寄存器>[,<期望寄存器>][,<屏蔽寄存器>]
·该操作码用于扫描全“1”的矢量值并将获取的值存储在用户数据寄存器<目标寄存器>中。在ScanLengthRegister(0<=n<32)中定义扫描的比特位数量。在ScanStateRegister中定义开始状态、扫描状态和结束状态。如在ScanRegister指令中一样使用<期望寄存器>和<屏蔽寄存器>。
ScanBlock
·该操作码用于将BlockRegister指向的数据扫描到SUT,其始于<开始状态>,在<开始状态>中扫描数据,<结束状态>完成如块的StateTraversalField定义的操作状态。在扫描操作之前,用来自StateTraversalField的数据填充ScanStateRegister。在扫描操作之前,用来自ScanLengthField的数据填充ScanLengthRegister。不保留来自TDO的数据。如果设置ExpectedValueField和Maskfield,则相应地进行比较和错误生成。
ScanBlockCapture
·该操作码用于将BlockRegister指向的数据扫描到SUT,其始于<开始状态>,在<开始状态>中扫描数据,随着<结束状态>完成如块的StateTraversalField定义的操作状态。在扫描操作之前,用来自StateTraversalField的数据填充ScanStateRegister。在扫描操作之前,用来自ScanLengthField的数据填充ScanLengthRegister。保留从TDO获取的数据。如果设置ExpectedValueField和Maskfield,则相应地进行比较和错误生成。
ScanBlockZeroCapture
·该操作码用于将全“0”的数据矢量扫描到SUT,其始于<开始状态>,在<开始状态>中扫描数据,随着<结束状态>完成如块的StateTraversalField定义的操作状态,在BlockRegister定义的寄存器中获取结果。在扫描操作之前,用来自StateTraversalField的数据填充ScanStateRegister。在扫描操作之前,用来自ScanLengthField的数据填充ScanLengthRegister。如果设置ExpectedValueField和Maskfield,则相应地进行比较和错误生成。
ScanBlockZero
·该操作码用于将全“0”的数据矢量扫描到SUT,其始于<开始状态>,在<开始状态>中扫描数据,随着<结束状态>完成如块的StateTraversalField定义的操作状态而不获取结果。在扫描操作之前,用来自StateTraversalField的数据填充ScanStateRegister。在扫描操作之前,用来自ScanLengthField的数据填充ScanLengthRegister。如果设置ExpectedValueField和Maskfield,则相应地进行比较和错误生成。
ScanBlockOneCapture
·该操作码用于将全“1”的数据矢量扫描到SUT,其始于<开始状态>,在<开始状态>中扫描数据,随着<结束状态>完成如块的StateTraversalField定义的操作状态,在BlockRegister定义的寄存器中获取结果。在扫描操作之前,用来自StateTraversalField的数据填充ScanStateRegister。在扫描操作之前,用来自ScanLengthField的数据填充ScanLengthRegister。如果设置ExpectedValueField和Maskfield,则相应地进行比较和错误生成。
ScanBlockOne
·该操作码用于将全“1”的数据矢量扫描到SUT,其始于<开始状态>,在<开始状态>中扫描数据,随着<结束状态>完成如块的StateTraversalField定义的操作状态而不获取结果。在扫描操作之前,用来自StateTraversalField的数据填充ScanStateRegister。在扫描操作之前,用来自ScanLengthField的数据填充ScanLengthRegister。如果设置ExpectedValueField和Maskfield,则相应地进行比较和错误生成。
示例性TISA指令集包括使用显式数值的如下寄存器修改指令:
LoadRegisterExplicit<常量值>,<寄存器名>
·该指令将<常量值>的常量数值装载到由<寄存器名>命名的寄存器中。
CopyRegister<源寄存器>,<目标寄存器>
·该指令将命名为<源寄存器>的寄存器的内容传播到由<目标寄存器>命名的寄存器中。
示例性TISA指令集包括使用隐式数值的如下寄存器修改指令:
LoadRegisterImplicit<用户数据寄存器>,<寄存器名>
·该指令使用命名为<用户数据寄存器>中的值作为引用实际数据所在存储器位置的指针,并将被引用的数值保存在名为<寄存器名>的寄存器中。
示例性TISA指令集包括如下寄存器保留指令:
StoreRegisterImplicit<寄存器名>,<用户数据寄存器>
·该指令使用命名为<用户数据寄存器>中的值作为引用存储器位置的指针,该存储器位置存储名为<寄存器名>的寄存器中的数值。
StoreRegisterExplicit<寄存器名>,<常量值>
·该指令将名为<寄存器名>的寄存器的数值保存在<常量值>指定的存储器位置中。
示例性TISA指令集包括如下对寄存器的逻辑操作:
AND<源寄存器>,<目标寄存器>
·该操作执行<源寄存器>和<目标寄存器>之间的逻辑AND操作,并将结果值放置在<目标寄存器>中。
OR<源寄存器>,<目标寄存器>
·该操作执行<源寄存器>和<目的寄存器>之间的逻辑OR操作,并将结果值放置在<目的寄存器>中。
XOR<源寄存器>,<目的寄存器>
·该操作执行<源寄存器>和<目的寄存器>之间的逻辑XOR操作,并将结果值放置在<目的寄存器>中。
NOT<源寄存器>,<目的寄存器>
·该操作执行<源寄存器>的逻辑NOT操作,并将结果值放置在<目的寄存器>中。
XORM<源寄存器>,<屏蔽寄存器>,<目的寄存器>
·该操作执行用户数据寄存器<源寄存器>和用户数据寄存器<目的寄存器>之间的逻辑XOR操作,仅对与用户数据寄存器<屏蔽寄存器>中含有“1”的比特位对齐的那些比特位进行比较,并将结果值放置于<目的寄存器>中,注意,未被比较的比特位在<目的寄存器>中的值为“0”。
示例性的TISA指令集包括对寄存器的如下杂项操作:
NOP
·无操作的操作码,在某些ISA指令集中作为填补以提供对齐。
示例的TISA指令集包括如下指令以拓展支持用于使用附属处理器架构的实施例的流:
MemoryWrite
·该指令利用如下变量写入本地测试存储器:<序列号>,<块偏移(32位偏移)>,<要传送的字节数>,<目标地址(在指定的存储块中)>,<数据字节>。
MemoryRead
·该指令利用如下变量从本地测试存储器读出:<序列号>,<块偏移(32位偏移)>,<要传送的字节数>,<源地址(在指定的存储块中)。该指令返回以序列号和被传送的字节数为标记的数据字节流。
示例性TISA指令集包括用于扫描状态的如下数值:
StartState,ScanState,EndStat
·扫描状态代码包括:TestLogicReset(TLR),RunTest/Idle(RTI),PauseDR(PDR),PauseIR(PIR),ScanDR(SDR),ScanIR(SIR)。每个状态代码有4个比特位表示,并且有12个比特位用于为扫描操作描述整个状态转换序列。
本领域普通技术人员基于在此的教导可以理解,在此示出并描述的TISA处理器结构也能使用各种其他的TISA实施。例如,其他的TISA实施可能使用更少、更多和/或不同的寄存器,可能使用更少、更多和/或不同的指令集等,及其各种组合。在一个实施例中,为了提供更适于特定应用的TISA实施,和/或为了任何其他合适的原因,其他的TISA实施能够被应用于使用不同的处理器架构的地方。
如上文所述,在JTAG架构中使用TISA可以使得扫描操作在扫描段层执行,该扫描段层允许在整个扫描路径中定义独立可控的“扫描段”,因而提供了一套灵活的和强大的原语集合,其能够用于在问题空间中直接定义扫描操作,并能够在实施时刻解决扫描操作。
一般而言,JTAF操作基于扫描操作,在该扫描操作中,当比特位被一个接一个地串行扫描出去的同时,所有的比特位被一个接一个地串行扫描进入。这意味着,为了能够执行扫描操作,需知晓在扫描链(例如,输入和输出矢量)中每个比特位需要哪个值。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能为同一实体的多个实例实现指令序列的重用,因而能够减少系统中代码存储的需求。例如,可写一个映射到被管理程序调用的描述语言函数的广义函数。在这个示例中,每个函数都是表示该实体的本机语言对象的方法,并且对于系统中定义的每个实体,具有这些对象的单独实例,但是可以有代码的单个拷贝,其用于与这些实例中的每一个进行通信。以此方式,本机语言实现模块直接控制了用于指明电路连接性和功能性的描述语言。
参考以上所给出的示例,利用扫描段层抽象能够定义如下三段:包含仪器1至75的段S1,包含仪器76的段S2,以及包含了仪器77至100的段S3。以此方式,对仪器76的访问被大大地简化了。例如,可以通过如下操作对仪器76访问:对段S3进行“虚位移”(例如,ScanBlockZero),对段S2(即,仪器76)执行指令,对段S1进行另一个虚位移,然后随着更新结束操作。在这样的顺序中,除了段S1或段S3的长度,对段S2的访问(例如,对扫描链中一个特定的仪器)无需了解该段S1或段S3的其他。可以理解,这只是一个示例,因此,具有100个仪器长度的链的其他分解可能能够访问其他仪器或者仪器组。
图17示出了被测系统的高级框图,说明被测系统的示例性扫描链的示例性分解。
示例性SUT170包括四个设备17101-17104(统称为设备1710;并在图17中分别表示为设备1、设备2、设备3和设备4)。在SUT1700内串行地部署设备1710以形成扫描链1720。扫描链1720如下:TAP的TDI连接到设备17104的输入端口,设备17104的输出端口连接到设备17103的输入端口,设备17103的输出端口连接到设备17102的输入端口,设备17102的输出端口连接到设备17101的输入端口,以及设备17101的输出端口连接到TAP的TDO。
在示例性SUT1700中,每个设备1710包括(1)输入解复用器,其向测试指令寄存器(TIR)和测试数据寄存器(TDR)提供输入;以及(2)输出复用器,其收集来自TIR和TDR的输出。每个设备1710的TIR和TDR都是并行寄存器。设备17103包括一个另外的TDR,以使输入解复用器向一个TIR和两个TDR提供输入并收集来自该一个TIR和两个TDR的输出,其中一个TIR和两个TDR都是并行的。TIR和TDR每个都被示出为串行移位寄存器,每个都包括九个相关的元件(例如触发器)。以此方式,(a)TIR形成包括三十六个串行元件的一个扫描链(表示为测试指令扫描链)以及(b)TDR形成包括整个四十五个元件和三十六个串行元件的另一扫描链(表示为测试数据扫描链)(即,由于设备17103的两个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机的状态和利用Pause-DR状态(并非总是实施)的风险的限制。
为了识别经由扫描链接收的输出比特流中的仪器/段输出,根据扫描链中的仪器/段的位置,可将扫描链看作先进先出(FIFO)系统(考虑它的串行特点),以使第一个被扫描进入的段也是第一个被扫描出去的段(因为该段最接近扫描段的末端)。
为了使SUT如同单个扫描操作一样“经历”扫描段操作序列,在段操作之间暂停TCK。由于扫描链内的所有元件都是同步的,以该方式暂停TCK的影响在于扫描链和TCK一起被暂停。
通过一些示例可以更好地理解在基于TISA的测试系统中的扫描段层的使用。在如下的示例中,假设被测系统(SUT)由三个段(依次表示为A、B和C)组成,以及用户需要写入段B中的值V。
作为第一示例,假设在相同JTAG设备内实施系统的三个段(A、B和C)。在该第一示例中,一旦在存储器中定义三个段,则TISA操作将变成:
i.设置Startstate=Run-Test-Idle,Scanstate=Endstate=ShiftDR;
ii.设置ScanLenghtField为段A的长度;
iii.将旁路序列扫描到段A中;
iv.设置Startstate=Scanstate=Endstate=ShiftDR;
v.设置ScanLenghtField为段B的长度;
vi.将V扫描到段B中;
vii.设置Startstate=Scanstate=ShiftDR,Endstate=Run-Test-Idle;
viii.设置ScanLenghtField为段C的长度;
ix.将旁路系列扫描到段C中。
参考该第一示例,保持TAP有限状态机(FSM)处于ShiftDR状态能确保不需要更新扫描链。可以从第一示例中看出,其中从步骤(i)至步骤(ix)保持TAP FSM处于ShiftDR状态能确保不需要更新扫描链,考虑到一旦离开ShiftDR就将到达UpdateDR状态。
进一步参考第一示例,扫描时钟TCK只有在扫描操作期间(即,步骤(iii)、(vi)和(ix))才是激活的并在其余状态中被暂停。从基于与TCK同步的操作的SUT的角度看,影响在于SUT将步骤(iii)、(vi)和(ix)看作连续比特流。
进一步参考第一示例,“旁路序列”是扫描段的属性,并例如是给定序列(全零、全一、或任何其他合适的序列)或“不关心”,这由TGT决定该序列。
作为第二示例,假设在不同的JTAG设备上实施系统的三个段(A、B和C)。在该第二示例中,一旦在存储器中定义该三个块,TISA操作会变为:
i.设置段A状态:StartState=RunTest/Idle,ScanState=ShiftIR,EndState=ShiftIR(gateTCK indicator);
ii.设置段A的ScanLengthField为段A IR的长度;
iii.为段A运行具有BYPASS指令模式的ScanBlock;
iv.设置段B状态:StartState=ShiftIR,ScanState=ShiftIR,EndState=ShiftIR(gateTCK indicator);
v.设置ScanLenghtField为段B IR的长度;
vi.为段B运行具有EXTEST指令模式的ScanBlock;
vii.设置段C状态:StartState=ShiftIR,ScanState=ShiftIR,EndState=RunTest/Idle;
viii.设置段C的ScanLengthField为段C IR的长度;
ix.对于段C运行具有BYPASS指令模式的ScanBlock;
x.设置段A状态:StartState=RunTest/Idle,ScanState=ShiftDR,EndState=ShiftDR(gateTCK);
xi.设置段A的ScanLengthField为段A所选DR的长度(1比特BYPASS DR);
xii.对于段A运行具有BYPASS数据模式的ScanBlock;
xiii.设置段B状态:StartState=ShiftDR,ScanState=ShiftDR,EndState=ShiftDR(gateTCK);
xiv.设置段B的ScanLengthField为段B所选DR的长度(到引脚的n比特BSR DR);
xv.对于段B运行具有EXTEST数据模式的ScanBlock;
xvi.设置段C状态:StartState=ShiftDR,ScanState=ShiftDR,EndState=RunTest/Idle;
xvii.设置段C的ScanLengthField为段C所选DR的的长度(1比特BYPASS DR);
xviii.对于段C运行具有BYPASS数据模式的ScanBlock;
通过比较第一示例和第二示例,可以理解和第二示例相关的增加的复杂性来自于需要使用每个JTAG设备的指令寄存器(IR)来选择/取消选择段。在这种情况下,通过在1149.1标准的BYPASS模式中放置相关JTAG设备将没用到的段从链中直接取出(如第二示例的步骤(iii)和(xvii)所示)。
可以理解,上面两个示例的所有组合都是可能的,在一个或多个JTAG设备上定义任何数量的段。进一步可以理解,上面两个示例仅仅是用来解释扫描段层用于测试被测系统的示例,并因此,其中扫描段层用于测试被测系统的实施例并非意在受这些示例的限制。
在这些实施例中,TISA指令的实际序列可以具有多个起点,包括如下的一个或多个:(1)TISA指令可由TGT静态计算,在这种情况下,每当用户需要访问段,必须扫描整个链(可以理解,虽然该方案对于扫描时间并未优化,但对于具有有限计算资源并没有或基本没有时间限制的嵌入式系统是有用的);(2)由软件调度器发布TISA指令,该软件调度器接收访问请求并将它们构成扫描操作;和/或(3)由硬件调度器发布该TISA指令(例如,诸如,但不限于,在某些高性能处理器中所进行的指令重新排序和旁路)。可以理解,可以以任何合适的方式发布和扫描段层控制相关联的TISA指令,这些方式包括上述方法和/或一个或多个其他合适的方法的组合,这些合适的方法用于取代上述的一个或多个方法或补充上述一个或多个方法。
扫描段层抽象层是用于处理动态拓扑的强大工具,诸如IEEEP1687标准提出的拓扑和其他动态拓扑。如果能在动态扫描路径中加入并取出扫描链的一部分(例如,利用IEEE P1687标准提出的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。
图19示出了适合于执行在此描述的功能的计算机的高级框图。如图19所示,计算机1900包括:处理器元件1902(例如,中央处理单元(CPU)或其他合适的处理器)、存储器1904(例如,随机存取存储器(RAM)、只读存储器(ROM)和/或任何其他合适的存储器类型)、适于执行在此示出并描述的系统测试功能的系统测试模块/过程1905、以及各种输入/输出设备1906(如,用户输入设备(诸如键盘、键区、鼠标等)、用户输出设备(诸如显示器、扬声器等)、输入端口、输出端口、接收器、发送器、以及存储设备(例如,磁带驱动、软盘驱动、硬盘驱动或光盘驱动等))。
应注意,这里示出并描述的系统测试功能可以以软件和/或软件和硬件的组合来实现,例如,使用通用计算机、一个或多个专用集成电路(ASIC)和/或任何其他硬件等同物。在一个实施例中,能够将系统测试过程1905加载到存储器1904中,并由处理器1902执行,以实现和/或支持实现如上所述的至少一部分系统测试功能。这样,能够将系统测试过程1905(包括关联的数据结构)存储在计算机可读介质或载体上,例如RAM存储器、磁或光驱动或磁盘等。
可以设想,这里作为软件方法讨论的一些步骤可以在硬件内实现,例如,作为与处理器协作以执行各种方法步骤的电路。这里所述的一部分功能/元件可以实现为计算机程序产品,其中,当由计算机处理时,计算机指令适配计算机的操作,使得能够调用或以其他方式提供本发明的方法和/或技术。可以将用于调用本发明的方法的指令存储在固定或可拆卸的介质中、经由广播的数据流或其他信号承载介质进行传输、和/或存储在根据指令进行操作的计算设备内的存储器中。
尽管在此已经详细示出并描述了结合本发明的教导的各种实施例,但是本领域技术人员能够容易设想同样结合这些教导的许多变化的实施例。

Claims (9)

1.一种用于对包括扫描链的被测系统的一部分进行测试的方法,包括:
将所述扫描链分解为多个段,其中所述扫描链包括多个元件,其中每段包括所述扫描链的至少一个元件;
生成用于测试所述被测系统的所述部分的指令集,其中所述指令集包括多个处理器指令以及多个测试指令,所述多个处理器指令与指令集体系结构(ISA)相关,其中,对于所述扫描链的多个段中的每段,所述测试指令包括对该段执行的至少一个扫描操作;以及
执行所述指令集以用于测试所述被测系统的所述部分。
2.如权利要求1所述的方法,其中所述指令集体系结构和处理器相关,所述处理器执行所述测试指令以用于测试所述被测系统的所述部分,其中所述测试指令与测试访问端口(TAP)相关,所述处理器经由所述测试访问端口访问所述被测系统的所述扫描链。
3.如权利要求1所述的方法,其中至少部分段具有与其相关的相应段类型,其中:
对于所述扫描链中具有相同段类型的段的多个实例,与这些段的所述多个实例相关的相应指令集部分基本上类似或相同;以及
对于所述扫描链中具有相同段类型的段的多个实例,与这些段的所述多个实例相关的相应指令集部分只被存储一次并且每当检测到该段类型时被访问。
4.如权利要求1所述的方法,其中,对于所述扫描操作中的至少一个扫描操作,执行该扫描操作包括将旁路序列扫描到所述扫描链的所述相关段中。
5.如权利要求1所述的方法,其中经由测试访问端口(TAP)访问所述被测系统,所述测试访问端口具有与其相关的扫描时钟,其中所述扫描时钟只有在扫描操作期间是激活的,以使所述被测系统将所述扫描操作看作连续比特流。
6.如权利要求1所述的方法,其中所经由测试访问端口(TAP)访问所述被测系统,所述测试访问端口具有与其相关的扫描时钟,该方法还包括:在扫描操作之间暂停所述扫描时钟。
7.如权利要求1所述的方法,其中经由测试访问端口(TAP)访问所述被测系统,所述测试访问端口具有与其相关的TAP有限状态机(FSM),其中,对于所述扫描操作中的每个扫描操作,所述方法还包括:
在执行所述扫描操作之前将所述TAP FSM置于第一任意状态;
在执行所述扫描操作期间将所述TAP FSM保持在第二任意状态;
在执行所述扫描操作之后将所述TAP FSM置于第三任意状态;
其中所述三个任意状态是相同或不同的。
8.如权利要求1所述的方法,其中经由测试访问端口(TAP)访问所述被测系统,所述测试访问端口具有与其相关的TAP有限状态机(FSM),其中,将所述TAP FSM保持在ShiftDR状态以阻止对所述扫描链的更新。
9.一种用于经由被测系统的扫描链测试所述被测系统的一部分的设备,包括:
用于将所述扫描链分解成多个段的装置,其中所述扫描链包括多个实体,其中每个段包括所述扫描链的至少一个实体;
用于生成测试所述被测系统的所述部分的指令集的装置,其中所述指令集包括多个处理器指令以及多个测试指令,所述多个处理器指令与指令集体系结构(ISA)相关,其中对于所述扫描链的多个段中的每段,所述测试指令包括对该段执行的至少一个扫描操作;以及
用于执行所述指令集以测试所述被测系统的所述部分的装置。
CN201080010625.6A 2009-03-04 2010-03-03 用于使用扫描链分解进行系统测试的方法与设备 Active CN102341719B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15741209P 2009-03-04 2009-03-04
US61/157,412 2009-03-04
PCT/US2010/026072 WO2010102019A1 (en) 2009-03-04 2010-03-03 Method and apparatus for system testing using scan chain decomposition

Publications (2)

Publication Number Publication Date
CN102341719A CN102341719A (zh) 2012-02-01
CN102341719B true CN102341719B (zh) 2015-04-01

Family

ID=42167394

Family Applications (3)

Application Number Title Priority Date Filing Date
CN201080010624.1A Active CN102439470B (zh) 2009-03-04 2010-03-03 用于使用多个处理器进行系统测试的方法与设备
CN201080010623.7A Active CN102341718B (zh) 2009-03-04 2010-03-03 用于使用多个指令类型进行系统测试的方法与设备
CN201080010625.6A Active CN102341719B (zh) 2009-03-04 2010-03-03 用于使用扫描链分解进行系统测试的方法与设备

Family Applications Before (2)

Application Number Title Priority Date Filing Date
CN201080010624.1A Active CN102439470B (zh) 2009-03-04 2010-03-03 用于使用多个处理器进行系统测试的方法与设备
CN201080010623.7A Active CN102341718B (zh) 2009-03-04 2010-03-03 用于使用多个指令类型进行系统测试的方法与设备

Country Status (6)

Country Link
US (3) US8533545B2 (zh)
EP (3) EP2404184B1 (zh)
JP (4) JP5489249B2 (zh)
KR (5) KR20130100018A (zh)
CN (3) CN102439470B (zh)
WO (3) WO2010101984A1 (zh)

Families Citing this family (48)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7984336B2 (en) * 2006-05-24 2011-07-19 Freescale Semiconductor, Inc. Method and system for storing data from a plurality of processors
US8719649B2 (en) 2009-03-04 2014-05-06 Alcatel Lucent Method and apparatus for deferred scheduling for JTAG systems
US8533545B2 (en) * 2009-03-04 2013-09-10 Alcatel Lucent Method and apparatus for system testing using multiple instruction types
US8572433B2 (en) * 2010-03-10 2013-10-29 Texas Instruments Incorporated JTAG IC with commandable circuit controlling data register control router
US8112669B2 (en) * 2009-08-31 2012-02-07 Comsonics, Inc. Wireless diagnostic system
US20110087861A1 (en) * 2009-10-12 2011-04-14 The Regents Of The University Of Michigan System for High-Efficiency Post-Silicon Verification of a Processor
CN102110037A (zh) * 2009-12-29 2011-06-29 鸿富锦精密工业(深圳)有限公司 电子装置测试系统
US9316690B2 (en) * 2010-03-19 2016-04-19 Qualcomm Incorporated Data recirculation in configured scan paths
US8352791B2 (en) * 2010-06-04 2013-01-08 GM Global Technology Operations LLC Configurable test suite
US8516318B2 (en) * 2010-12-15 2013-08-20 International Business Machines Corporation Dynamic scan
US8570077B2 (en) * 2010-12-17 2013-10-29 Qualcomm Incorporated Methods and implementation of low-power power-on control circuits
US8423343B2 (en) * 2011-01-24 2013-04-16 National Tsing Hua University High-parallelism synchronization approach for multi-core instruction-set simulation
US8677324B2 (en) 2011-01-31 2014-03-18 Hewlett-Packard Development Company, L.P. Evaluating performance of an application using event-driven transactions
CN103458086B (zh) * 2012-06-04 2016-12-14 联想(北京)有限公司 一种智能手机及其故障检测方法
CN102799528B (zh) * 2012-07-12 2015-12-09 中国科学院声学研究所 一种用于电路板级测试的脚本调试方法、装置及其系统
US9121892B2 (en) * 2012-08-13 2015-09-01 Analog Devices Global Semiconductor circuit and methodology for in-system scan testing
TWI461907B (zh) * 2012-10-11 2014-11-21 Mstar Semiconductor Inc 配合多個應用程式之整合系統和測試系統
US9959186B2 (en) * 2012-11-19 2018-05-01 Teradyne, Inc. Debugging in a semiconductor device test environment
CN103092188B (zh) * 2012-12-28 2018-01-12 派芬自控(上海)股份有限公司 一种测试方法及系统
US9183105B2 (en) 2013-02-04 2015-11-10 Alcatel Lucent Systems and methods for dynamic scan scheduling
US9810729B2 (en) * 2013-02-28 2017-11-07 Advantest Corporation Tester with acceleration for packet building within a FPGA block
US9239360B2 (en) * 2014-01-28 2016-01-19 Texas Instruments Incorporated DFT approach to enable faster scan chain diagnosis
US11042929B2 (en) 2014-09-09 2021-06-22 Oracle Financial Services Software Limited Generating instruction sets implementing business rules designed to update business objects of financial applications
CN104749515B (zh) * 2015-03-31 2017-12-15 中国人民解放军国防科学技术大学 一种基于顺序等分分段式的低功耗扫描测试方法和装置
CN105138364B (zh) * 2015-08-21 2019-03-01 Oppo广东移动通信有限公司 一种终端系统升级的方法及装置
US9640280B1 (en) * 2015-11-02 2017-05-02 Cadence Design Systems, Inc. Power domain aware insertion methods and designs for testing and repairing memory
WO2017107125A1 (en) * 2015-12-24 2017-06-29 Intel Corporation Conflict mask generation
WO2017129242A1 (en) * 2016-01-27 2017-08-03 Advantest Corporation Deterministic concurrent test program executor for an automated test equipment
KR102675841B1 (ko) 2016-05-17 2024-06-18 삼성전자주식회사 바이너리 벡터 기반의 테스트 장치
CN109863413B (zh) * 2016-05-20 2022-03-25 默升科技集团有限公司 Serdes应用中基于扫描的测试设计
WO2018089295A1 (en) * 2016-11-08 2018-05-17 Xcerra Corporation Multi-node testing system and method
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
US10592370B2 (en) * 2017-04-28 2020-03-17 Advantest Corporation User control of automated test features with software application programming interface (API)
CN110658438B (zh) * 2018-06-29 2024-09-17 是德科技股份有限公司 扫描测试系统及其控制装置和控制方法
CN109408382A (zh) * 2018-10-11 2019-03-01 网宿科技股份有限公司 一种持续集成方法和持续集成系统
JP7058759B2 (ja) * 2019-01-22 2022-04-22 株式会社アドバンテスト 1または複数の被テストデバイスをテストするための自動試験装置、1または複数の被テストデバイスの自動試験のための方法、および、コマンドエラーを処理するためのコンピュータプログラム
US11069420B2 (en) 2019-07-25 2021-07-20 Micron Technology, Inc. In-system test of a memory device
CN110634530B (zh) * 2019-09-10 2021-05-25 珠海博雅科技有限公司 芯片的测试系统和测试方法
CN111176961B (zh) * 2019-12-05 2022-03-29 腾讯科技(深圳)有限公司 一种应用程序测试方法、装置及存储介质
CN111209210A (zh) * 2020-01-15 2020-05-29 北京明略软件系统有限公司 一种生成测试用例方法、装置、电子设备及存储介质
US11243252B1 (en) 2020-08-17 2022-02-08 Cisco Technology, Inc. Processor to JTAG test data register interface
CN112100954B (zh) * 2020-08-31 2024-07-09 北京百度网讯科技有限公司 验证芯片的方法、装置和计算机存储介质
CN113342583B (zh) * 2021-06-08 2022-11-29 海光信息技术股份有限公司 芯片验证系统、方法、装置、设备和存储介质
CN113358070B (zh) * 2021-07-07 2023-03-28 苏州鑫睿益荣信息技术有限公司 一种汽车刹车片平整度及销钉高度检测系统及其检测方法
CN113552473B (zh) * 2021-09-22 2021-12-28 北京紫光青藤微系统有限公司 用于芯片测试的系统和待测芯片装置
CN114036885A (zh) * 2021-11-08 2022-02-11 上海兆芯集成电路有限公司 内建自测试的方法及互连接口
CN114416450B (zh) * 2022-01-18 2022-09-27 深圳市百泰实业股份有限公司 一种pcba生产测试管理方法
WO2024186533A1 (en) * 2023-03-08 2024-09-12 Qorvo Us, Inc. Scan test in a single-wire bus circuit

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
CN1698044A (zh) * 2001-10-17 2005-11-16 皇家飞利浦电子股份有限公司 利用可附着子模块的电子设备的快速配置

Family Cites Families (51)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08233904A (ja) * 1995-02-27 1996-09-13 Nec Eng Ltd バウンダリスキャン回路
JPH0926807A (ja) * 1995-07-12 1997-01-28 Keyence Corp プログラマブルコントローラ
US5694399A (en) * 1996-04-10 1997-12-02 Xilinix, Inc. Processing unit for generating signals for communication with a test access port
US5838568A (en) * 1996-06-28 1998-11-17 International Business Machines Corporation Heated circuit assembly tester and method
US5949692A (en) 1996-08-28 1999-09-07 Synopsys, Inc. Hierarchical scan architecture for design for test applications
US5828579A (en) 1996-08-28 1998-10-27 Synopsys, Inc. Scan segment processing within hierarchical scan architecture for design for test applications
JP3385210B2 (ja) 1998-03-31 2003-03-10 富士通株式会社 テストデータスキャン装置およびスキャン方法
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
US7392431B2 (en) * 1999-02-19 2008-06-24 Texas Instruments Incorporated Emulation system with peripherals recording emulation frame when stop generated
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 スキャン・パス構築用プログラムを記録した記録媒体とスキャン・パスの構築方法及びこのスキャン・パスを組み込んだ演算処理システム
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
US6640322B1 (en) * 2000-03-22 2003-10-28 Sun Microsystems, Inc. Integrated circuit having distributed control and status registers and associated signal routing means
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
JP3751531B2 (ja) * 2001-03-16 2006-03-01 沖電気工業株式会社 Jtagインターフェース回路及びそれを用いたjtag対応半導体装置のテスト方法とデバッグ方法
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
JP2003228999A (ja) * 2002-02-01 2003-08-15 Rohm Co Ltd 半導体記憶装置
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
US7234092B2 (en) 2002-06-11 2007-06-19 On-Chip Technologies, Inc. Variable clocked scan test circuitry and method
US6832539B2 (en) * 2002-07-15 2004-12-21 Delaware Capital Formation, Inc. Cylinder lock
JP4182202B2 (ja) 2002-08-02 2008-11-19 富士通マイクロエレクトロニクス株式会社 シミュレーション用カバレッジ算出装置及びシミュレーション用カバレッジ算出方法
AU2003275388A1 (en) * 2002-10-01 2004-04-23 Chad Walter Billmyer A system and method for wireless audio communication with a computer
US20040078179A1 (en) * 2002-10-17 2004-04-22 Renesas Technology Corp. Logic verification system
US7539915B1 (en) * 2003-01-07 2009-05-26 Marvell Israel (Misl) Ltd. Integrated circuit testing using segmented scan chains
JP2004280588A (ja) 2003-03-17 2004-10-07 Cats Kk システムlsi設計支援装置およびシステムlsi設計支援プログラム
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
US7346821B2 (en) 2003-08-28 2008-03-18 Texas Instrument Incorporated IC with JTAG port, linking module, and off-chip TAP interface
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
KR100880832B1 (ko) 2004-02-10 2009-01-30 삼성전자주식회사 코-디버깅 기능을 지원하는 반도체 집적회로 및 반도체집적회로 테스트 시스템
GB2411331A (en) 2004-02-19 2005-08-24 Trigenix Ltd Rendering user interface using actor attributes
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
US7143324B2 (en) 2004-11-04 2006-11-28 Avago Technologies General Ip (Singapore) Pte. Ltd. System and method for automatic masking of compressed scan chains with unbalanced lengths
JP2006146757A (ja) 2004-11-24 2006-06-08 Toshiba Corp デバッグ用レジスタおよびデータ転送方法
US7206983B2 (en) 2005-03-31 2007-04-17 Lsi Logic Corporation Segmented addressable scan architecture and method for implementing scan-based testing of integrated circuits
US7383478B1 (en) * 2005-07-20 2008-06-03 Xilinx, Inc. Wireless dynamic boundary-scan topologies for field
US7844721B2 (en) 2005-11-23 2010-11-30 Qualcomm Incorporated Method for delivery of software upgrade notification to devices in communication systems
JP2007147352A (ja) 2005-11-25 2007-06-14 Sony Corp 無線インターフェースモジュール及び電子機器
JP4805134B2 (ja) * 2006-12-28 2011-11-02 富士通株式会社 集積回路の内部ラッチをスキャンする方法及び装置並びに集積回路
JP2008165534A (ja) * 2006-12-28 2008-07-17 Oki Electric Ind Co Ltd 半導体装置
US8015462B2 (en) * 2007-05-11 2011-09-06 Renesas Electronics Corporation Test circuit
US8418008B2 (en) * 2008-12-18 2013-04-09 Lsi Corporation Test technique to apply a variable scan clock including a scan clock modifier on an integrated circuit
US8533545B2 (en) * 2009-03-04 2013-09-10 Alcatel Lucent Method and apparatus for system testing using multiple instruction types
US8621301B2 (en) 2009-03-04 2013-12-31 Alcatel Lucent Method and apparatus for virtual in-circuit emulation
US8055948B2 (en) * 2009-09-14 2011-11-08 International Business Machines Corporation Resilient software-controlled redundant array of independent disks (RAID)

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
CN1698044A (zh) * 2001-10-17 2005-11-16 皇家飞利浦电子股份有限公司 利用可附着子模块的电子设备的快速配置

Also Published As

Publication number Publication date
EP2404184A1 (en) 2012-01-11
EP2404182B1 (en) 2014-05-21
WO2010101995A1 (en) 2010-09-10
EP2404183A1 (en) 2012-01-11
JP5684739B2 (ja) 2015-03-18
CN102341718B (zh) 2015-05-20
US20100229058A1 (en) 2010-09-09
JP5489249B2 (ja) 2014-05-14
CN102439470B (zh) 2014-07-16
KR20120023601A (ko) 2012-03-13
JP2012519854A (ja) 2012-08-30
KR20130100018A (ko) 2013-09-06
WO2010102019A8 (en) 2010-11-18
JP2014067436A (ja) 2014-04-17
KR20130081717A (ko) 2013-07-17
KR20110124274A (ko) 2011-11-16
EP2404183B1 (en) 2014-08-13
KR101533170B1 (ko) 2015-07-02
WO2010101984A1 (en) 2010-09-10
CN102341718A (zh) 2012-02-01
JP5683502B2 (ja) 2015-03-11
KR101329465B1 (ko) 2013-11-13
EP2404182A1 (en) 2012-01-11
KR101489550B1 (ko) 2015-03-24
CN102341719A (zh) 2012-02-01
US20100229036A1 (en) 2010-09-09
US20100229042A1 (en) 2010-09-09
JP2012519912A (ja) 2012-08-30
WO2010102019A1 (en) 2010-09-10
US8533545B2 (en) 2013-09-10
KR20110122165A (ko) 2011-11-09
CN102439470A (zh) 2012-05-02
JP2012519853A (ja) 2012-08-30
US8677198B2 (en) 2014-03-18
EP2404184B1 (en) 2013-10-02

Similar Documents

Publication Publication Date Title
CN102341719B (zh) 用于使用扫描链分解进行系统测试的方法与设备
CN103080761B (zh) 用于虚拟内电路仿真的方法和设备
US8719649B2 (en) Method and apparatus for deferred scheduling for JTAG systems
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
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20191029

Address after: California, USA

Patentee after: Usao Investment Co., Ltd.

Address before: Fa Guobalishi

Patentee before: A Erkatelangxun