具体实施方式
现在将详细参照本申请的具体实施例,在附图中例示了本申请的例子。尽管将结合具体实施例描述本申请,但将理解,不是想要将本申请限于描述的实施例。相反,想要覆盖由所附权利要求限定的在本申请的精神和范围内包括的变更、修改和等价物。应注意,这里描述的方法步骤都可以由任何功能块或功能布置来实现,且任何功能块或功能布置可被实现为物理实体或逻辑实体、或者两者的组合。
目前芯片设计的自动测试设备ATE的测试向量严重依赖电子设计自动化(Electronic Design Automation,EDA)工具产生,对于非EDA工具直接产生的测试向量,需要通过比较复杂的方式产生。
非EDA 工具直接产生的测试向量主要通过测试仿真->产生波形文件->波形文件转换两大步骤完成。
这种方法耗时耗力,在波形文件转换的时候还容易发生波形切割错误。
图1A示出了现有技术的非EDA工具直接产生测试向量的过程的流程图。图1B示出了图1A的流程图中的测试序列(test sequence)的文本的示意图。图1C示出了图1A的流程图中的仿真波形文件的示意图。图1D示出了图1A的流程图中的测试向量(test pattern)的示意图。
如图1A所示,由工程师编写输入如图1B所示的测试序列的文本,通过1到2天的仿真,得到如图1C所示的仿真波形文件,然后再利用波形切割工具对仿真波形文件进行逐个时钟周期的切割,用1天左右的时间来得到如图1D所示的测试向量。
然而,这种方法耗时耗力,在波形文件转换的时候还容易发生波形切割错误。
根据本申请的各个实施例,基于芯片设计的测试结构逻辑,用数据库的描述方式记录测试结构和测试寄存器(TDR);使得测试序列产生支持同一款设计芯片的多样封装下的测试需求;能够支持多种基于联合测试工作组(Joint Test Action Group,JTAG)接口的测试协议,包括IEEE 1149.1、1149.6、1687、1600 和1838等;支持多种语法(不仅限于PDL)开发配置测试寄存器(TDR)的序列;以包括各个配置和信息的设计描述数据库和测试序列为输入,解析芯片测试结构和测试序列,无需通过仿真波形,就可以输出符合协议时序要求的测试向量格式文件和仿真文件;仿真文件用于仿真来验证测试序列的正确性;测试向量文件用于交付给测试工程师完成芯片测试。
联合测试工作组(Joint Test Action Group,JTAG)协议主要用于芯片内部测试和调试,是目前主流芯片厂商所采用的同步调试协议,大多数比较复杂的器件都支持JTAG协议。用JTAG通信协议来实现对微处理器的在线调试具有传输速率快、时序性好、结构简单等优点。标准的JTAG接口是20管脚,但JTAG实际使用的只有4根信号线(分别为测试模式选择(Test Mode Selection,TMS)、测试时钟(Test Clock,TCK)、测试数据输入(Test DataInput,TDI)、测试数据输出(Test Data Output,TDO)),再配合电源、地。目前常见的各种接口形式(20管脚、14管脚、10管脚)。
本申请的测试向量生成系统可以接收测试序列文件(例如,test sequence.txt)、芯片同步调试协议接口配置(例如JTAG接口配置)、芯片同步调试协议网络数据(例如JTAG网络数据)、检验待测设计(design under test,DUT)仿真模板。以下以JTAG协议为例子来描述本申请的各个实施例。测试访问端口通过例如专用的JTAG测试工具对内部节点进行测试。测试访问端口(Test Access Port,TAP)是芯片内部一个通用的端口,通过TAP可以访问芯片提供的所有数据寄存器(Data Register,DR)和指令寄存器(Instruction Register,IR),对整个TAP的控制是通过TAP控制器(TAP Controller)完成的。具体地,开发人员使用连接到芯片的JTAG外部接口上的JTAG调试器,通过访问芯片内部的TAP端口来扫描芯片内部各个扫描单元以写入或读取扫描寄存器的状态,从而对芯片进行测试和调试。一个扫描单元对应一个外部管脚,每个外部管脚有一个边界扫描寄存器(Boundary Scan Register,BSR)单元,这些管脚的所有扫描寄存器连在一起形成扫描链。也就是说,通过JTAG调试器对目标板的调试就是通过TAP端口完成对边界扫描寄存器BSR和指令寄存器IR的读写访问。
本申请的测试向量生成系统可以基于接收的数据来输出测试向量文件,包括测试向量.spf(test_pattern.spf)和测试向量.stil(test_pattern.stil)文件,并释放到ATE设备去进行测试。而本申请的测试向量生成系统也可以生成用于仿真的数据(包括测试台(test bench)文件tb.v和sim.data数据),在正式测试之前,先进行仿真,以便继续调整测试向量。
图2示出了根据本申请的实施例的生成用于测试待测器件的测试向量的方法200的流程图。
如图2所示,生成用于测试待测器件的测试向量的方法200包括:步骤210,基于输入的待测器件的测试接口配置信息,提取待测器件中的各个芯片的属性;步骤220,基于输入的待测器件的测试接口网络信息,提取待测器件中的各个寄存器的属性;步骤230,基于输入的针对待测器件的测试序列、所提取的各个芯片的属性和所提取的各个寄存器的属性,将测试序列拆分成针对寄存器的原子测试序列;步骤240基于测试接口的协议定义的信号状态机跳转规则,将针对寄存器的原子测试序列转换为测试接口的各个管脚的各自的测试向量。
如此,通过输入的针对待测器件的测试序列、所提取的各个芯片的属性和所提取的各个寄存器的属性,将测试序列拆分成针对寄存器的原子测试序列,从而基于测试接口的协议定义的信号状态机跳转规则,将针对寄存器的原子测试序列转换为测试接口的各个管脚的各自的测试向量,可以不需要仿真并生成仿真波形文件和切割波形文件以得到测试向量的过程,就能通过直接分析测试序列并基于信号状态机跳转规则快速得到各个管脚的各自的测试向量。相比于现有技术的大约2-3天才能得到测试向量,根据本申请的实施例的生成用于测试待测器件的测试向量的方法能够在例如10分钟内完成测试向量的产生,极大地加速了测试向量交付,同时也支持快速调试和迭代ATE测试向量。
下面结合图2和图3A-3B以及图4来介绍生成用于测试待测器件的测试向量的方法200的具体过程。
图3A示出了根据本申请的实施例的生成用于测试待测器件的测试向量的系统的框架示意图。
如图3A所示,例如根据本申请的实施例的生成用于测试待测器件的测试向量的系统、即ATE测试向量生成平台300接收输入的待测器件的测试接口(例如JTAG)配置信息、输入的待测器件的测试接口(例如JTAG)网络信息、输入的针对待测器件的测试序列、输入的待测器件的仿真模板。
ATE测试向量生成平台300能够通过这些输入自动输出测试向量以供ATE设备测试以及仿真数据以供仿真。
图3B示出了根据本申请的实施例的生成用于测试待测器件的测试向量的系统的内部流程示意图。
图3B与图3A的区别在于图3B中示出了在生成用于测试待测器件的测试向量的系统内部流程。下面将结合图4A-4I来详细描述
具体地,在步骤210,基于输入的待测器件的测试接口配置信息,提取待测器件中的各个芯片的属性,也见图3B中的读取表格步骤。
这里,用户可以编写待测器件的测试接口配置信息文本,例如待测芯片的JTAG接口配置信息文本。
图4A示出了根据本申请的实施例的待测器件的测试接口配置信息的一个例子的示意图。
在一个实施例中,测试接口配置信息可以用数据库表格的方式来表达。待测器件的测试接口配置信息中指示的各个芯片的属性包括芯片的型号、数量、主从关系和访问方式中的至少一个。如图4A所示,芯片JTAG接口配置指示了芯片的JTAG接口的配置,包括芯片类型(type)、类别(class)、列表(list)等等。例如芯片类型(型号)被记录为CHIP100,其数量是2,因为列表(主从关系)栏记录了有一个主(master)CHIP100和一个从(slave)CHIP100,其类别(访问方式)被记录为菊花链式(daisy)。菊花链是一种一对多的拓扑布线方案,其中多个器件按顺序或环形连接在一起。相邻器件才能通信。菊花链可用于电源,模拟信号,数字数据或其组合。但是由于菊花链的串联特性,如果任何一个器件从链路中移走,则链路便断裂开。通过一个JTAG接口便能访问JTAG菊花链中的任何一个器件。当然,其他访问方式例如还包括星型拓补(星型拓扑采用集中式通信控制策略,所有通信均由中央节点控制,中央节点必须建立和维持并行数据通路)等等。如图4A所示,其他芯片类型例如包括CHIP100_Master、CHIP100_Slave、CHIP104、CHIP00_MS等等,分别都有自己对应的类别(访问方式)、列表(主从关系)等等。
具体地,根据本申请的实施例的ATE测试向量生成平台300对输入的如图4A的JTAG接口配置进行语法检查,读入该配置,提取JTAG接口配置信息,将其存入变量数组configure。
当然, 图4A所示的待测器件的测试接口配置信息只是一个示例,还可以减少所包括的配置信息内容或增加所包括的配置信息内容。
如此,待测器件的测试接口配置信息能够指示待测器件中的各个芯片的属性,为日后自动生成测试向量提供信息。
在步骤220,基于输入的待测器件的测试接口网络信息,提取待测器件中的各个寄存器的属性。也见图3B中的读取表格步骤。
图4B示出了根据本申请的实施例的待测器件的测试接口网络信息的一个例子的示意图。
在一个实施例中,测试接口网络信息可以用数据库表格的方式来表达。
待测器件的测试接口网络信息中指示各个寄存器的属性,包括各个寄存器的主测试访问端口、指令寄存器的标识符、数据寄存器的标识符、最低有效位、最高有效位、读写模式、缺省值、描述中的至少一个。
如图4B所示,而JTAG接口网络数据指示了主测试访问端口(Mster Test AccessPort,MTAP)、指令寄存器(IR)的标识符、数据寄存器(DR)的标识符、最低有效位(LeastSignificant Bit,LSB)、最高有效位(Most Significant Bit,MSB)、读写模式(Access)、缺省值、描述等等。
例如,主测试访问端口MTAP的一个测试数据寄存器(test data register,TDR)包括指令寄存器IR的标识符8’h01、数据寄存器DR的标识符IDCODE、最低有效位LSB为0、最高有效位MSB为31,读写模式ACCESS为读取R,缺省值为32’hCA1,描述为Jtag Mtap idcode。主测试访问端口MTAP的另一个测试数据寄存器(test data register,TDR)包括指令寄存器IR的标识符8’h02、数据寄存器DR的标识符EXTEST、最低有效位LSB为0、最高有效位MSB为293,读写模式ACCESS为读写RW,缺省值为0,描述为bsd extest enable等等。
注意,数据寄存器DR的标识符指示的是JTAG接口指令。后续还将结合JTAG状态机来介绍这些JTAG接口指令。
具体地,根据本申请的实施例的ATE测试向量生成平台对输入的如图4B的JTAG接口网络数据进行语法检查,读入该文件,对于每个IR寄存器和DR寄存器,将它们的标识符存入变量索引数组 register_ir以便日后索引这些寄存器, 将全部的寄存器的当前值存入变量数组 network_0,并设置变量数组network_1来存储这些寄存器未来要变成或写入的值。
当然, 图4B所示的待测器件的测试接口网络信息只是一个示例,还可以减少所包括的信息内容或增加所包括的信息内容。
如此,待测器件的测试接口网络信息能够指示待测器件中的各个寄存器的属性,为日后自动生成测试向量提供信息。
见图3B中的解析说明文件步骤、序列化PDL指针、解析PDL指针、打印列表、得到包装类型、翻译和转换格式步骤,其中测试序列可以写成说明文件的形式,则可以得到针对寄存器的原子测试序列、测试向量、仿真数据等。
在步骤230,基于输入的针对待测器件的测试序列、所提取的各个芯片的属性和所提取的各个寄存器的属性,将测试序列拆分成针对寄存器的原子测试序列。
图4C示出了根据本申请的实施例的针对待测器件的测试序列的一个例子的示意图。
如图4C所示,待测器件的测试序列可以是一个文本文件,例如txt文件,描述了一系列测试动作,其中每一行操作是一个测试动作,该测试动作通常表示针对哪个(些)芯片的哪个(些)寄存器的什么位置来写入什么比特值等等。
在一个实施例中,基于输入的针对待测器件的测试序列、各个芯片的属性和各个寄存器的属性,将测试序列拆分成针对寄存器的原子测试序列的步骤230包括如下动作。
第一,分析测试序列以得到每一行操作所配置的各个寄存器的名字、数据位置和各个数据位置的比特值。
具体地,根据本申请的实施例的ATE测试向量生成平台对测试序列文本进行语法检查,读入文件,翻译每一行操作配置的寄存器的名字、数据位置和比特值。这里的寄存器的数据位置和比特值表示测试序列想要这个寄存器的这个数据位置的值变为这个比特值。例如数据位置可以是一个8位的寄存器 [5:3],表示数据位置第3位、第4位、第5位。
第二,基于特定一行操作所配置的特定寄存器的名字,根据所提取的各个寄存器的属性找到特定寄存器的属性中的数据寄存器DR的当前值。
具体地,根据本申请的实施例的ATE测试向量生成平台翻译例如当前行配置的寄存器的名字(属性)和值,通过名字查找该寄存器对应的变量索引数组register_ir,记录当前行配置的当前寄存器的数据寄存器DR的值dr,即测试序列的当前行操作想要当前寄存器的数据寄存器DR变成的值dr(即前述的各个数据位置的比特值)。查找当前寄存器的对应的network_0 里面的值(即当前寄存器的数据寄存器DR当前已经寄存的值)。
第三,如果当前值和各个数据位置的比特值相同,则将针对特定寄存器的指令寄存器IR的操作标志值设置为第一值(例如0),指示不做动作。也就是说,寄存器中的当前值已经是当前行操作要写入的值,则不需要做动作。如果当前值和各个数据位置的比特值不同,则将针对特定寄存器的指令寄存器IR的操作标志值设置为第二值(例如1),指示要将特定寄存器的数据寄存器DR中的当前值改变为各个数据位置的比特值。也就是说,寄存器中的当前值不是当前行操作要写入的值,则需要做动作将当前值改变为要写入的值,即写入要写入的值。
具体地,如果操作标志为1,继续查找当前寄存器的register_ir, 拼接需要配置的指令寄存器IR的值ir。即,配置指令寄存器IR的值ir使得指令对数据寄存器DR写入要写入的值、即比特值。
第四,基于每一行操作所配置的各个寄存器的指令寄存器IR的操作标志值和数据寄存器DR的各个数据位置的比特值,根据测试序列的次序以及各个芯片的属性,得到针对寄存器的指令寄存器IR和数据寄存器DR的原子测试序列。
在得到当前寄存器的指令寄存器IR的值ir和数据寄存器DR的值dr之后,根据JTAG协议定义的编程次序做编程动作原子拆分。其中各个芯片的属性提供访问各个芯片的方式,例如是菊花链式还是星链式,从而结合测试序列的次序得到对各个寄存器进行操作的原子测试序列。
图4D示出了根据本申请的实施例的输出原子拆分后的原子测试序列的样例(atomic_test_sequence (*.trans))的示意图。
如图4D所示,该例子表示指令寄存器IR的值原子拆分后的原子测试序列按顺序分别为0、0、0、1、0、0、0、1。数据寄存器DR的值原子测试序列则按顺序分别为上。
然后,在步骤240,基于测试接口的协议定义的信号状态机跳转规则,将针对寄存器的原子测试序列转换为测试接口的各个管脚的各自的测试向量。
图4E示出了根据本申请的实施例所基于的JTAG测试接口的协议定义的信号状态机跳转规则的示意图。
如图4E所示,右侧的路径1是指令寄存器IR的状态的跳转的规则。左侧的路径2是数据寄存器DR的状态的跳转的规则。其中,控制器的下一个状态由TMS信号决定,TMS信号通常在TCK的上升沿被采样生效。
其中这些状态介绍如下:
Test-Logic-Reset测试逻辑复位状态
处于这种状态下,测试逻辑被禁止以允许芯片正常操作,读IDCODE寄存器将禁止测试逻辑。
无论TAP控制器处于何种状态,只要将TMS信号在5个连续的TCK信号的上升沿保持高电平,TAP就将进入Test-Logic-Reset状 态,如果TMS信号一直为高电平,那么TAP将保持在Test-Logic-Reset状态,另外TRST信号也可以强迫TAP进入Test- Logic-Reset状态。
处于Test-Logic-Reset状态的TAP,如果下一个TCK的上升沿时TMS信号处于低电平,那么TAP将被切换到Run-Test-Idle状态。
Run-Test-Idle运行测试空闲状态
Run-Test-Idle是TAP控制器扫描操作空闲状态,如果TMS信号一直处于低电平,那么TAP将保持在Run-Test-Idle状态。当TMS信号在TCK上升沿处于高电平,TAP控制器将进入Select-DR-Scan状态。
Select-DR-Scan选择数据寄存器扫描状态
Select-DR-Scan是TAP控制器的一个临时状态,边界扫描寄存器BSR保持它们先前的状态。
当TMS信号在下一个TCK上升沿处于低电平,TAP控制器进入Capture-DR状态,一个边界扫描寄存器的扫描操作同时被初始化。
如果TMS信号在下一个TCK上升沿处于高电平,TAP控制器将进入Select-IR-Scan状态。
Capture-DR捕获数据寄存器状态
如果TAP控制器处于Capture-DR状态,且当前指令是SAMPLE/PRELOAD指令,那么边界扫描寄存器BSR在TCK信号的上升沿捕获输入管脚的数据。如果此时不是SAMPLE/PRELOAD指令,那么BSR保持它们先前的值,另外BSR的值被放入连接在TDI和TDO管脚之间的移 位寄存器中。
处于Capture-DR状态时,指令不会被改变。
如果TMS信号在下一个TCK上升沿处于高电平,TAP进入Exit-1-DR状态。如果TMS信号在下一个TCK上升沿处于低电平,则TAP进入Shift-DR状态。
Shift-DR移位数据寄存器状态
在Shift-DR状态下,在每个TCK的上升沿,TDI-移位寄存器-TDO串行通道向右移一位,TDI的数据移入移位寄存器,移位寄存器最靠近TDO的位移到TDO管脚上。
处于Shift-DR状态时,指令不会被改变。
如果TMS信号在下一个TCK上升沿处于高电平,TAP进入Exit1-DR状态。如果TMS信号处于低电平,则TAP一直进行移位操作。
Exit-1-DR退出数据寄存器状态1
Exit-1-DR是TAP控制器的一个临时状态,如果TMS信号在下一个TCK上升沿处于高电平,TAP进入Update-DR状态;如果TMS信号在下一个TCK上升沿处于低电平,则TAP进入Pause-DR状态。
处于Exit-1-DR状态时,指令不会被改变。
Pause-DR暂停数据寄存器状态
Pause-DR状态允许TAP控制器暂时停止TDI-移位寄存器-TDO串行通道的移位操作。
处于Pause-DR状态时,指令不会被改变。
如果TMS信号在下一个TCK上升沿处于高电平,TAP进入Exit2-DR状态;如果TMS信号处于低电平,则TAP一直保持暂停状态。
Exit-2-DR退出数据寄存器状态2
Exit-2-DR也是TAP控制器的临时状态,如果TMS信号在下一个TCK上升沿处于高电平,TAP进入Update-DR状态,结束扫描操作;如果TMS信号在下一个TCK上升沿处于低电平,则TAP重新进入Shift-DR状态。
处于Exit-2-D状态时,指令不会被改变。
Update-DR更新数据寄存器状态
在正常情况下,边界扫描寄存器BSR的值是被锁存在并行输出管脚中,以免在EXTEST或SAMPLE/PRELOAD命令下执行移位操作时改变 BSR寄存器的值。当处于Update-DR状态时选择的是BSR寄存器,那么移位寄存器中的值将在TCK的下降沿被锁存到BSR寄存器的并行输出管脚中去。
处于Update-DR状态时,指令不会被改变。
如果TMS信号在下一个TCK上升沿处于高电平,TAP进入Select-DR-Scan状态;如果TMS信号在下一个TCK上升沿处于低电平,则TAP进入Run-Test-Idle状态。
Select-IR-Scan选择指令寄存器扫描状态
Select-IR-Scan是TAP控制器的一个临时状态。
如果TMS信号在下一个TCK上升沿处于低电平,TAP控制器进入Capture-IR状态,一个对指令寄存器的扫描操作同时被初始化。
如果TMS信号在下一个TCK上升沿处于高电平,TAP控制器将进入Test-Logic-Reset状态。
处于Select-IR-Scan状态时,指令不会被改变。
Capture-IR捕获指令寄存器状态
处于Capture-IR状态时,指令寄存器中的值被固定设置成0b0000001,并将它放入连接在TDI与TDO之间的移位寄存器中。
处于Capture-DR状态时,指令不会被改变。
如果TMS信号在下一个TCK上升沿处于高电平,TAP进入Exit1-IR状态;如果TMS信号在下一个TCK上升沿处于低电平,则TAP进入Shift-IR状态。
Shift-IR移位指令寄存器状态
在Shift-IR状态下,在每个TCK的上升沿,TDI-移位寄存器-TDO串行通道向右移一位,JTAG指令从TDI管脚上被逐位移入移位寄存器,而移位寄存器中的0b0000001则被逐位从TDO管脚移出。
处于Shift-IR状态时,指令不会被改变。
如果TMS信号在下一个TCK上升沿处于高电平,TAP进入Exit1-IR状态;如果TMS信号处于低电平,则TAP一直进行移位操作。
Exit-1-IR退出指令寄存器状态1
Exit1-IR是TAP控制器的一个临时状态,如果TMS信号在下一个TCK上升沿处于高电平,TAP进入Update-IR状态;如果TMS信号在下一个TCK上升沿处于低电平,则TAP进入Pause-IR状态。
处于Exit-1-IR状态时,指令不会被改变。
Pause-IR暂停指令寄存器状态
Pause-IR状态允许TAP控制器暂时停止TDI-移位寄存器-TDO串行通道的移位操作。
处于Pause-IR状态时,指令不会被改变。
如果TMS信号在下一个TCK上升沿处于高电平,TAP进入Exit2-IR状态;如果TMS信号处于低电平,则TAP一直处于暂停状态。
Exit-2-IR退出指令寄存器状态2
Exit-2-IR也是TAP控制器的临时状态,如果TMS信号在下一个TCK上升沿处于高电平,TAP进入Update-IR状态,结束扫描操作;如果TMS信号在下一个TCK上升沿处于低电平,则TAP重新进入Shift-IR状态。
处于Exit-2-D状态时,指令不会被改变。
Update-IR更新指令寄存器状态
处于Update-IR状态时,移位寄存器中的值将在TCK的下降沿被锁存到指令寄存器中,一旦锁存成功,新的指令将成为当前的指令。
如果TMS信号在下一个TCK上升沿处于高电平,TAP进入Select-DR-Scan状态;如果TMS信号在下一个TCK上升沿处于电平,则TAP进入Run-Test-Idle状态。
接下来介绍一下利用能够跳转这些状态的JTAG接口指令集,包含以下常用指令:
EXTEST指令
EXTEST指令是一种外部测试指令,如互连测试,必须全为0,TAP强制定义。该指令初始化外部电路测试,主要用于板级互连以及片外电路测试。
EXTEST指令在Shift-DR状态时将扫描寄存器BSR寄存器连接到TDI与TDO之间。在Capture-DR状态时,EXTEST指令将输入管脚的状态在TCK的上升沿装入BSR中。EXTEST指令从不使用移入BSR中的输入锁存器中的数据,而是直接从管脚上捕获数据。在Update- DR状态时,EXTEST指令将锁存在并行输出寄存器单元中的数据在TCK的下降沿驱动到对应的输出管脚上去。
SAMPLE/PRELOAD指令
采样/预装载指令是TAP强制定义的。在Capture-DR状态下,SAMPLE/PRELOAD指令提供一个从管脚到片上系统逻辑的数据流快照, 快照在TCK的上升沿提取。在Update-DR状态时,SAMPLE/PRELOAD指令将BSR寄存器单元中的数据锁存到并行输出寄存器单元中,然后由EXTEST指令将锁存在并行输出寄存器单元中的数据在TCK的下降沿驱动到对应的输出管脚上去。
BYPASS指令
是一种旁路指令,必须全为1,TAP强制定义。BYPASS指令通过在TDI和TDO之间放置一个1位的旁通寄存器,这样移位操作时只经过1位的旁通寄存器的边界扫描寄存器BSR,从而使得对连接在同一JTAG链上主CPU之外的其他芯片进行测试时提高效率。
IDCODE指令
选择IDCODE指令时,IC工作在正常工作模式,选择数据识别寄存器(dataidentification register)连通TDI和TDO。读取CPU ID号指令,TAP强制定义。该指令将处理器的ID号寄存器连接到TDI和TDO之间。
CLAMP指令
CLAMP指令使芯片IC的输出置于由边界扫描寄存器BSR的当前内容决定的逻辑电平上,选择BYPASS寄存器连通 TDI和TDO。在加载这个指令之前,边界扫描寄存器的内容可以由SAMPLE/PRELOAD指令来预置。在CLAMP指令下,数据通过BYPASS寄存器从TDI传递至TDO,不会影响此IC的输出。
如此,基于上述信号状态机跳转规则,要实现如图4D所示的指令寄存器IR和数据寄存器DR的各自的原子测试序列,可以反推要对各个管脚输入什么序列才能使得指令寄存器IR和数据寄存器DR能够按顺序寄存各自的原子测试序列。
在一个实施例中,基于测试接口的协议定义的信号状态机跳转规则,将针对寄存器的原子测试序列转换为测试接口的各个管脚的各自的测试向量的步骤240包括如下步骤。
生成测试接口的测试时钟TCK管脚的测试向量。
其中测试时钟TCK是按照时钟输入的,其指示其他管脚的测试向量所基于的周期。
基于测试接口的协议定义的指令寄存器IR的信号状态机跳转规则以及测试时钟TCK管脚的测试向量,将针对寄存器的指令寄存器IR的原子测试序列转换为测试接口的测试模式选择TMS管脚的测试向量。
其中根据上述描述的信号状态机跳转规则,要实现指令寄存器IR的原子测试序列,则可以反推对测试模式选择TMS管脚应该输入什么信号,由此得到测试接口的测试模式选择TMS管脚的测试向量。
基于测试接口的协议定义的数据寄存器DR的信号状态机跳转规则以及测试时钟TCK管脚的测试向量,将针对寄存器的数据寄存器DR的原子测试序列转换为测试接口的测试数据输入TDI管脚的测试向量。
其中根据上述描述的信号状态机跳转规则,要实现数据寄存器DR的原子测试序列,则可以反推对测试数据输入TDI管脚应该输入什么信号,由此得到测试接口的测试数据输入TDI管脚的测试向量。
除此之外,基于测试接口的协议定义的信号状态机跳转规则,将针对寄存器的原子测试序列转换为测试接口的各个管脚的各自的测试向量的步骤240还包括:生成测试接口的测试复位TRST管脚的测试向量和测试数据输出TDO管脚的期望值测试向量。
由于测试复位TRST管脚主要用于复位、即初始化,因此比较容易生成。
然后,由于得知了TCK、TEST、TDI和TMS的测试向量,因此也可以推导出测试数据输出TDO管脚的期望值测试向量。
如此,为了实现指令寄存器IR和数据寄存器DR的原子测试序列,可以基于测试接口的协议定义的数据寄存器DR的信号状态机跳转规则来反推给各个管脚的输入信号、即各个管脚的测试向量。
图4F示出了根据本申请的实施例的得到的各个管脚的测试向量文件的示意图。
各个管脚TRST、TCK、TMS、TDI、TDO的测试向量文件分别如图4F所示。
在此,还可以通过各个管脚的测试向量绘制各个管脚的波形图。因为测试向量实际上是0和1的串,表示信号电平的高低,那么就可以通过信号电平的高低来绘制波形图。图4G示出了根据本申请的实施例的通过得到的各个管脚的测试向量绘制各个管脚的波形的示意图。
可以通过用得到的各个管脚的测试向量绘制的各个管脚的波形,与用其他方法、例如如图1A-1C所示的现有技术中的工程师通过仿真测试序列而得到的仿真波形文件进行验证,以得知利用本申请的实施例得到的各个管脚的测试向量是否正确。
图4H示出了根据本申请的实施例的得到的各个管脚的测试向量(test_pattern.stil)的内容的示意图。
如此,为了实现指令寄存器IR和数据寄存器DR的原子测试序列,可以基于测试接口的协议定义的数据寄存器DR的信号状态机跳转规则来反推给各个管脚的输入信号、即各个管脚的测试向量,写成文件形式则如图4H所示。
如此,基于输入的待测器件的测试接口配置信息、输入的待测器件的测试接口网络信息得到了测试接口的各个管脚的各自的测试向量,而不需要入现有技术那样工程师通过仿真测试序列而得到的仿真波形文件、再切割仿真波形来得到测试向量,极大地节省了时间、提高了效率、增加了灵活性。
在一个实施例中,基于输入的待测器件的仿真模板和测试接口的各个管脚的各自的测试向量,生成仿真测试平台TB的描述文件以及仿真数据,以便进行测试仿真。
图4I示出了根据本申请的实施例的生成的仿真测试平台TB的描述文件以及仿真数据的示意图。
在一个实施例中,方法200还可以包括:将测试接口的各个管脚的各自的测试向量输出到自动测试设备ATE以进行实际测试。
也可以将如此测试之后的输出结果与已知正确的仿真波形文件进行比较来判断根据本发明的实施例生成的测试向量是否正确。
如此,根据本申请的实施例以包括各个配置和信息的设计描述数据库和测试序列为输入,解析芯片测试结构和测试序列,无需通过仿真波形,就可以输出符合协议时序要求的测试向量格式文件和仿真文件。
在此基础上,根据本申请的实施例还可以针对不同设计的芯片(例如芯片CHIP100和CHIP200),只要修改输入数据中的芯片配置和测试序列,即可可以产生不同芯片的测试向量。针对同一款设计的芯片的两种封装形式(例如CHIP100 有两种封装形式:芯片CHIP101 和 CHIP102),只要修改输入的芯片配置,就可以复用测试测试序列得到各自封装芯片的测试向量。
通过本申请的实施例,在提供非EDA工具产生的测试向量上面可以极大的提高测试向量开发效率。以一个高速串行计算机扩展总线标准(peripheral componentinterconnect express,PCIE)的回环测试为例,如果用传统方法需要大约2天的时间来产生测试波形和切割波形,最后得到测试向量。但是通过本申请的实施例,可以在10分钟内完成测试向量的产生,极大地加速了测试向量交付,同时也支持快速调试和迭代ATE测试向量。通过本申请的实施例,可以对ATE 测试向量经行仿真验证,以进一步保证测试向量的质量。通过本申请的实施例,可以为板级提供各种测试向量,比如PCIE、存储器、高带宽存储器(High Bandwidth Memory,HBM)等高速接口,完成板级规格测试。
注意,上述描述结合的示意图仅是展示各个文件可能具有的格式和表现形式,但示意图相互之间并无强制关联,实际上本领域技术人员可以通过定制的文件来基于本申请体现的原理来实现从输入得到测试向量的整个过程。
下面,结合一个实际的完整例子以及图5A-5F来解释实现从输入得到测试向量的整个实际过程。
图5A示出了根据本申请的实施例的待测器件的测试接口网络信息的另一个例子的示意图。
如图5所示,输入之一的测试接口网络信息指示有一个TDR的指令寄存器IR的编号是8’h14(这里表示长度为8的16进制的14,即二进制的00010100),数据寄存器DR的标识是DFTIO_MODE,最低位LSB是0,最高位MSB是1,表示一共2位,访问方式、缺省、描述可以不用,但是列在那里。
输入之二的待测器件的测试接口配置信息可参照图4A。
图5B示出了根据本申请的实施例的针对所述待测器件的测试序列的另一个例子的示意图。
如图5B所示,测试序列表示要对芯片的DFTIO_MODE的数据寄存器写入2’b01(这里表示长度为2的2进制的01)。当然测试序列还省略了用于选择芯片的语句,该选择芯片的语句可以结合图4A示出的芯片JTAG配置中的类型来告知要对哪个芯片的DFTIO_MODE的数据寄存器写入2’b 01。图4A示出的表格里的其他内容、例如类别、列表等可以不用,只是列在那里。
图5C示出了根据本申请的实施例的输出原子拆分后的原子测试序列的另一样例的示意图。
如图5C所示,由于基于测试序列得知了要对特定芯片的DFTIO_MODE的数据寄存器写入2’b01,那就需要选择相应的指令寄存器IR、编号是8’h14。
接下来,基于输入的针对待测器件的测试序列(如图5B所示)、所提取的各个芯片的属性(如图4A所示)和所提取的各个寄存器的属性(如图5A所示),将测试序列(如图5B所示)拆分成针对寄存器的原子测试序列(如图5C所示)。具体地,如图5C所示,原子测试序列包括chip sir 00010100(即选择指令寄存器IR的编号是8’h14、二进制位00010100)、chipsdr 01 00 00(即对数据寄存器DR写入01,后续的00 00 表示不需要将由于写入(shiftin)01而挤出(shift out)的目标数据以及不需要将实际挤出的数据与目标数据进行比较)。
图5D示出了根据本申请的实施例基于JTAG测试接口的协议定义的信号状态机跳转规则得到的测试向量文件的示意图。
如图5D所示,基于测试接口的协议定义的信号状态机跳转规则(如图4E所示),将针对寄存器的原子测试序列转换为测试接口的各个管脚的各自的测试向量。可见,跳转到SHIFT-IR(移位指令寄存器)之后,按顺序移入00101000(为了写入8’h14、二进制位00010100,从右往左一个一个移入比特0、0、1、0、1、0、0、0)(图5D中标示出位于X左侧的一列比特),而跳转到SHIFT-DR(移位数据寄存器)之后,按顺序移入10(为了写入2’b01、二进制位01,从右往左一个一个移入比特1和0)(图5D中标示出位于X左侧的一列比特)。
图5E示出了根据本申请的实施例的生成的仿真数据的示意图。
基于输入的待测器件的仿真模板和测试接口的各个管脚的各自的测试向量,生成仿真测试平台TB的描述文件以及仿真数据,以便进行测试仿真。
如图5E所示,标示的两列比特即从图5D所示的测试向量文件中标示的两列比特而来,作为仿真数据。
图5F示出了根据本申请的实施例的生成的仿真波形的示意图。
如图5F所示,可以通过各个管脚的测试向量绘制各个管脚的波形图。具体地,从图5D和图5E所标示的两列比特分别作为接口TMS和接口TDI的波形,其中接口TDI负责输入数据。其他TCK、TRSTN管脚的波形按工程人员经验来设置,而TDO管脚的输出波形则通过其他几个管脚的波形来导出。
可以通过用得到的各个管脚的测试向量绘制的各个管脚的波形,与用其他方法、例如如图1A-1C所示的现有技术中的工程师通过仿真测试序列而得到的仿真波形文件进行验证,以得知利用本申请的实施例得到的各个管脚的测试向量是否正确。
但生成仿真波形的步骤不是本申请所必须的,因为本申请可以不经过生成仿真波形就能够得到测试向量。
图6示出了根据本申请的实施例的生成用于测试待测器件的测试向量的系统600的方框图。
如图6所示,生成用于测试待测器件的测试向量的系统600包括:芯片属性提取装置610,被配置为基于输入的待测器件的测试接口配置信息,提取待测器件中的各个芯片的属性;寄存器属性提取装置620,被配置为基于输入的待测器件的测试接口网络信息,提取待测器件中的各个寄存器的属性;拆分装置630,被配置为基于输入的针对待测器件的测试序列、所提取的各个芯片的属性和所提取的各个寄存器的属性,将测试序列拆分成针对寄存器的原子测试序列;转换装置640,被配置为基于测试接口的协议定义的信号状态机跳转规则,将针对寄存器的原子测试序列转换为测试接口的各个管脚的各自的测试向量。
如此,通过输入的针对待测器件的测试序列、所提取的各个芯片的属性和所提取的各个寄存器的属性,将测试序列拆分成针对寄存器的原子测试序列,从而基于测试接口的协议定义的信号状态机跳转规则,将针对寄存器的原子测试序列转换为测试接口的各个管脚的各自的测试向量,可以不需要仿真并生成仿真波形文件和切割波形文件以得到测试向量的过程,就能通过直接分析测试序列并基于信号状态机跳转规则快速得到各个管脚的各自的测试向量。相比于现有技术的大约2-3天才能得到测试向量,根据本申请的实施例的生成用于测试待测器件的测试向量的方法能够在例如10分钟内完成测试向量的产生,极大地加速了测试向量交付,同时也支持快速调试和迭代ATE测试向量。
在一个实施例中,各个芯片的属性包括芯片的型号、数量、主从关系和访问方式中的至少一个,其中各个寄存器的属性包括各个寄存器的主测试访问端口、指令寄存器的标识符、数据寄存器的标识符、最低有效位、最高有效位、读写模式、缺省值、描述中的至少一个。
如此,待测器件的测试接口配置信息能够指示待测器件中的各个芯片的属性,为日后自动生成测试向量提供信息。如此,待测器件的测试接口网络信息能够指示待测器件中的各个寄存器的属性,为日后自动生成测试向量提供信息。
在一个实施例中,拆分装置630被配置为:分析测试序列以得到每一行操作所配置的各个寄存器的名字、数据位置和各个数据位置的比特值;基于特定一行操作所配置的特定寄存器的名字,根据所提取的各个寄存器的属性找到特定寄存器的属性中的数据寄存器DR的当前值;如果当前值和各个数据位置的比特值相同,则将针对特定寄存器的指令寄存器IR的操作标志值设置为第一值,指示不做动作,如果当前值和各个数据位置的比特值不同,则将针对特定寄存器的指令寄存器IR的操作标志值设置为第二值,指示要将特定寄存器的数据寄存器DR中的当前值改变为各个数据位置的比特值;基于每一行操作所配置的各个寄存器的指令寄存器IR的操作标志值和数据寄存器DR的各个数据位置的比特值,根据测试序列的次序以及各个芯片的属性,得到针对寄存器的指令寄存器IR和数据寄存器DR的原子测试序列。
在一个实施例中,转换装置640被配置为:生成测试接口的测试时钟TCK管脚的测试向量;基于测试接口的协议定义的指令寄存器IR的信号状态机跳转规则以及测试时钟TCK管脚的测试向量,将针对寄存器的指令寄存器IR的原子测试序列转换为测试接口的测试模式选择TMS管脚的测试向量;基于测试接口的协议定义的数据寄存器DR的信号状态机跳转规则以及测试时钟TCK管脚的测试向量,将针对寄存器的数据寄存器DR的原子测试序列转换为测试接口的测试数据输入TDI管脚的测试向量。
如此,基于输入的待测器件的测试接口配置信息、输入的待测器件的测试接口网络信息得到了测试接口的各个管脚的各自的测试向量,而不需要入现有技术那样工程师通过仿真测试序列而得到的仿真波形文件、再切割仿真波形来得到测试向量,极大地节省了时间、提高了效率、增加了灵活性。
在一个实施例中,转换装置640还被配置为:生成测试接口的测试复位TRST管脚的测试向量和测试数据输出TDO管脚的期望值测试向量。
在一个实施例中,系统600还包括:生成装置(未画出),被配置为基于输入的待测器件的仿真模板和测试接口的各个管脚的各自的测试向量,生成仿真测试平台TB的描述文件以及仿真数据,以便进行测试仿真。
在一个实施例中,系统600还包括:输出装置(未画出),被配置为将测试接口的各个管脚的各自的测试向量输出到自动测试设备ATE以进行实际测试。
如此,根据本申请的实施例以包括各个配置和信息的设计描述数据库和测试序列为输入,解析芯片测试结构和测试序列,无需通过仿真波形,就可以输出符合协议时序要求的测试向量格式文件和仿真文件。
图7示出了适于用来实现本申请的实施例的示例性电子设备的框图。
电子设备可以包括处理器(H1);存储介质(H2),耦合于处理器(H1),且在其中存储计算机可执行指令,用于在由处理器执行时进行本申请的实施例的各个方法的步骤。
处理器(H1)可以包括但不限于例如一个或者多个处理器或者或微处理器等。
存储介质(H2)可以包括但不限于例如,随机存取存储器(RAM)、只读存储器(ROM)、快闪存储器、EPROM存储器、EEPROM存储器、寄存器、计算机存储介质(例如硬碟、软碟、固态硬盘、可移动碟、CD-ROM、DVD-ROM、蓝光盘等)。
除此之外,该电子设备还可以包括(但不限于)数据总线(H3)、输入/输出(I/O)总线(H4),显示器(H5)以及输入/输出设备(H6)(例如,键盘、鼠标、扬声器等)等。
处理器(H1)可以通过I/O总线(H4)经由有线或无线网络(未示出)与外部设备(H5、H6等)通信。
存储介质(H2)还可以存储至少一个计算机可执行指令,用于在由处理器(H1)运行时执行本技术所描述的实施例中的各个功能和/或方法的步骤。
在一个实施例中,该至少一个计算机可执行指令也可以被编译为或组成一种软件产品,其中一个或多个计算机可执行指令被处理器运行时执行本技术所描述的实施例中的各个功能和/或方法的步骤。
图8示出了根据本申请的实施例的非暂时性计算机可读存储介质的示意图。
如图8所示,计算机可读存储介质820上存储有指令,指令例如是计算机可读指令810。当计算机可读指令810由处理器运行时,可以执行参照以上描述的各个方法。计算机可读存储介质包括但不限于例如易失性存储器和/或非易失性存储器。易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。非易失性存储器例如可以包括只读存储器(ROM)、硬盘、闪存等。例如,计算机可读存储介质820可以连接于诸如计算机等的计算设备,接着,在计算设备运行计算机可读存储介质820上存储的计算机可读指令810的情况下,可以进行如上描述的各个方法。
当然,上述的具体实施例仅是例子而非限制,且本领域技术人员可以根据本申请的构思从上述分开描述的各个实施例中合并和组合一些步骤和装置来实现本申请的效果,这种合并和组合而成的实施例也被包括在本申请中,在此不一一描述这种合并和组合。
注意,在本公开中提及的优点、优势、效果等仅是示例而非限制,不能认为这些优点、优势、效果等是本申请的各个实施例必须具备的。另外,上述公开的具体细节仅是为了示例的作用和便于理解的作用,而非限制,上述细节并不限制本申请为必须采用上述具体的细节来实现。
本公开中涉及的器件、装置、设备、系统的方框图仅作为例示性的例子并且不意图要求或暗示必须按照方框图示出的方式进行连接、布置、配置。如本领域技术人员将认识到的,可以按任意方式连接、布置、配置这些器件、装置、设备、系统。诸如“包括”、“包含”、“具有”等等的词语是开放性词汇,指“包括但不限于”,且可与其互换使用。这里所使用的词汇“或”和“和”指词汇“和/或”,且可与其互换使用,除非上下文明确指示不是如此。这里所使用的词汇“诸如”指词组“诸如但不限于”,且可与其互换使用。
本公开中的步骤流程图以及以上方法描述仅作为例示性的例子并且不意图要求或暗示必须按照给出的顺序进行各个实施例的步骤。如本领域技术人员将认识到的,可以按任意顺序进行以上实施例中的步骤的顺序。诸如“其后”、“然后”、“接下来”等等的词语不意图限制步骤的顺序;这些词语仅用于引导读者通读这些方法的描述。此外,例如使用冠词“一个”、“一”或者“该”对于单数的要素的任何引用不被解释为将该要素限制为单数。
另外,本文中的各个实施例中的步骤和装置并非仅限定于某个实施例中实行,事实上,可以根据本申请的概念来结合本文中的各个实施例中相关的部分步骤和部分装置以构思新的实施例,而这些新的实施例也包括在本申请的范围内。
以上描述的方法的各个操作可以通过能够进行相应的功能的任何适当的手段而进行。该手段可以包括各种硬件和/或软件组件和/或模块,包括但不限于硬件的电路、专用集成电路(ASIC)或处理器。
可以利用被设计用于进行在此描述的功能的通用处理器、数字信号处理器(DSP)、ASIC、场可编程门阵列信号(FPGA)或其他可编程逻辑器件(PLD)、离散门或晶体管逻辑、离散的硬件组件或者其任意组合而实现或进行描述的各个例示的逻辑块、模块和电路。通用处理器可以是微处理器,但是作为替换,该处理器可以是任何商业上可获得的处理器、控制器、微控制器或状态机。处理器还可以实现为计算设备的组合,例如DSP和微处理器的组合,多个微处理器、与DSP核协作的微处理器或任何其他这样的配置。
结合本公开描述的方法或算法的步骤可以直接嵌入在硬件中、处理器执行的软件模块中或者这两种的组合中。软件模块可以存在于任何形式的有形存储介质中。可以使用的存储介质的一些例子包括随机存取存储器(RAM)、只读存储器(ROM)、快闪存储器、EPROM存储器、EEPROM存储器、寄存器、硬碟、可移动碟、CD-ROM等。存储介质可以耦接到处理器以便该处理器可以从该存储介质读取信息以及向该存储介质写信息。在替换方式中,存储介质可以与处理器是整体的。软件模块可以是单个指令或者许多指令,并且可以分布在几个不同的代码段上、不同的程序之间以及跨过多个存储介质。
在此公开的方法包括用于实现描述的方法的动作。方法和/或动作可以彼此互换而不脱离权利要求的范围。换句话说,除非指定了动作的具体顺序,否则可以修改具体动作的顺序和/或使用而不脱离权利要求的范围。
上述功能可以按硬件、软件、固件或其任意组合而实现。如果以软件实现,功能可以作为指令存储在切实的计算机可读介质上。存储介质可以是可以由计算机访问的任何可用的切实介质。通过例子而不是限制,这样的计算机可读介质可以包括RAM、ROM、EEPROM、CD-ROM或其他光碟存储、磁碟存储或其他磁存储器件或者可以用于携带或存储指令或数据结构形式的期望的程序代码并且可以由计算机访问的任何其他切实介质。如在此使用的,碟(disk)和盘(disc)包括紧凑盘(CD)、激光盘、光盘、数字通用盘(DVD)、软碟和蓝光盘,其中碟通常磁地再现数据,而盘利用激光光学地再现数据。
因此,本公开还可以包括计算机程序产品,其中计算机程序产品可以进行在此给出的方法、步骤和操作。例如,这样的计算机程序产品可以是计算机软件包、计算机代码指令、具有有形存储(和/或编码)在其上的计算机指令的计算机可读的有形介质,该指令可由处理器执行以进行在此描述的操作。计算机程序产品可以包括包装的材料。
软件或指令也可以通过传输介质而传输。例如,可以使用诸如同轴电缆、光纤光缆、双绞线、数字订户线(DSL)或诸如红外、无线电或微波的无线技术的传输介质从网站、服务器或者其他远程源传输软件。
此外,用于进行在此描述的方法和技术的模块和/或其他适当的手段可以在适当时由用户终端和/或基站下载和/或其他方式获得。例如,这样的设备可以耦接到服务器以促进用于进行在此描述的方法的手段的传送。或者,在此描述的各种方法可以经由存储部件(例如RAM、ROM、诸如CD或软碟等的物理存储介质)提供,以便用户终端和/或基站可以在耦接到该设备或者向该设备提供存储部件时获得各种方法。此外,可以利用用于将在此描述的方法和技术提供给设备的任何其他适当的技术。
其他例子和实现方式在本公开和所附权利要求的范围和精神内。例如,由于软件的本质,以上描述的功能可以使用由处理器、硬件、固件、硬连线或这些的任意的组合执行的软件实现。实现功能的特征也可以物理地位于各个位置,包括被分发以便功能的部分在不同的物理位置处实现。而且,如在此使用的,包括在权利要求中使用的,在以“至少一个”开始的项的列举中使用的“或”指示分离的列举,以便例如“A、B或C的至少一个”的列举意味着A或B或C,或AB或AC或BC,或ABC(即A和B和C)。此外,措辞“示例的”不意味着描述的例子是优选的或者比其他例子更好。
可以不脱离由所附权利要求定义的教导的技术而进行对在此描述的技术的各种改变、替换和更改。此外,本公开的权利要求的范围不限于以上描述的处理、机器、制造、事件的组成、手段、方法和动作的具体方面。可以利用与在此描述的相应方面进行基本相同的功能或者实现基本相同的结果的当前存在的或者稍后要开发的处理、机器、制造、事件的组成、手段、方法或动作。因而,所附权利要求包括在其范围内的这样的处理、机器、制造、事件的组成、手段、方法或动作。
提供所公开的方面的以上描述以使本领域的任何技术人员能够做出或者使用本申请。对这些方面的各种修改对于本领域技术人员而言是非常显而易见的,并且在此定义的一般原理可以应用于其他方面而不脱离本申请的范围。因此,本申请不意图被限制到在此示出的方面,而是按照与在此公开的原理和新颖的特征一致的最宽范围。
为了例示和描述的目的已经给出了以上描述。此外,此描述不意图将本申请的实施例限制到在此公开的形式。尽管以上已经讨论了多个示例方面和实施例,但是本领域技术人员将认识到其某些变型、修改、改变、添加和子组合。