九大指令
指令(必须/可选) | 操作码 | 模式 | 选择数据寄存器 |
EXTEST | 0...0* | 测试 | Boundary |
SAMPLE/PRELOAD | 用户定义 | 一般 | Boundary |
BYPASS | 1...1 | 一般 | Bypass |
INTEST | 用户定义 | 测试 | Boundary |
RUNBIST | 用户定义 | 测试 | 用户定义 |
INCODE | 用户定义 | 一般 | 器件ID |
USERCODE | 用户定义 | 一般 | 器件ID |
CLAMP | 用户定义 | 测试 | Bypass |
HIGHZ | 用户定义 | 测试 | Bypss |
用户定义 | 用户定义 | 用户定义 | 用户定义 |
Extest指令--强制指令
用于芯片外部测试,如互连测试
测试模式下的输出管脚,由BSC update锁存驱动(BSC注释:寄存器的每一个单元分配给IC芯片的相应引脚,每一个独立的单元称为BSC(Boundary-Scan Cell)边界扫描单元。)
BSC scan锁存捕获的输入数据
移位操作,可以从TDI输入测试激励,并从TDO观察测试响应。
在移位操作后,新的测试激励存储到BSC的update锁存
原先EXTEST指令时强制为全“0”的,在IEEE 1149.1--2001中,这条强制取消了。选择EXTEST指令时,IC工作在边界扫描外部测试模式(external boundary-test mode),也就是说对IC的操作影响芯片的正常工作。选择边界扫描寄存器连通TDI和TDO。在这种指令下,可以通过边界扫描输出单元来驱动测试信号至其他边界扫描芯片,以及通过边界扫描输入单元来从其他边界扫描芯片接收测试信号。EXTEST指令是IEEE 1149.1标准的核心所在,在边界扫描测试中的互连测试(interconnect test)就是基于这个指令的。
(该指令初始化外部电路测试,主要用于板级互连以及片外电路测试。EXTEST指令在Shift-DR状态时将扫描寄存器BSR寄存器连接到TDI与TDO之间。在Capture-DR状态时,EXTEST指令将输入管脚的状态在TCK的上升沿装入BSR中。EXTEST指令从不使用移入BSR中的输入锁存器中的数据,而是直接从管脚上捕获数据。在Update-DR状态时,EXTEST指令将锁存在并行输出寄存器单元中的数据在TCK的下降沿驱动到对应的输出管脚上去。)
Sample/Preload指令--强制指令
在进入测试模式前对BSC进行预装载
输入输出管脚可正常操作
输入管脚数据和内核输出数据装载到BSC的scan锁存中。
移位操作,可以从TDI输入测试激励,并从TDO观察测试响应。
在移位操作后,新的测试激励存储到BSC的update锁存。
原先这两个指令是合在一起的,在IEEE 1149.1--2001中这两个指令分开了,分成一个SAMPLE指令,一个PRELOAD指令。选择SAMPLE/PRELOAD指令时,IC工作在正常工作模式,也就是说对IC的操作不影响IC的正常工作。选择边界扫描寄存器连通TDI和TDO。 SAMPLE指令---通过数据扫描操作(Data Scan)来访问边界扫描寄存器,以及对进入和离开IC的数据进行采样。PRELOAD指令---在进入EXTEST指令之前对边界扫描寄存器进行数据加载。
(在Capture-DR状态下,SAMPLE/PRELOAD指令提供一个从管脚到片上系统逻辑的数据流快照,快照在TCK上升沿提取。在Update-DR状态时,SAMPLE/PRELOAD指令将BSR寄存器单元中的数据锁存到并行输出寄存器单元中,然后由EXTEST指令将锁存在并行输出寄存器单元中的数据在TCK的下降沿驱动到对应的输出管脚上去。)
Bypass指令--强制指令
提供穿透芯片的最短通路。
输入输出管脚可正常操作
选择一位的旁路(Bypass)寄存器
强制全为1和未定义的指令为Bypass指令 BYPASS指令为全“1”。选择BYPASS指令时,IC工作在正常工作模式,选择一位的BYPASS寄存器连通TDI和TDO,数据的通过不影响IC的正常工作。
(BYPASS指令通过在TDI和TDO之间放置一个1位的旁通寄存器,这样移位操作时只经过1位的旁通寄存器而不是很多位(与管脚数量相当)的边界扫描寄存器BSR,从而使得对连接在同一JTAG链上主CPU之外的其他芯片进行测试时提高效率。)
INTEST指令 ---可选指令
选择INTEST指令时,IC工作在边界扫描内部测试模式(internal boundary-test mode),选择边界扫描寄存器连通TDI和TDO。在这种指令下,可以通过边界扫描输出单元来驱动测试信号至其内部逻辑,以及通过边界扫描输入单元来从 其内部逻辑接受测试信号。
RUNBIST指令 ---可选指令
选择RUNBIST指令时,IC工作在自测试模式(self-test mode),对IC的内部逻辑进行全面的自测试,通过选择用户自定义的数据寄存器连通TDI和TDO。在这种指令下,边界扫描单元的输出被内部逻辑控制了,所以外部信号不能干扰其相邻IC。
IDCODE指令 ---可选指令
选择IDCODE指令时,IC工作在正常工作模式,选择数据识别寄存器(data identification register)连通TDI和TDO。数据识别寄存器是一个32位的寄存器,内容包括IC的生产厂商,芯片类型,版本等。访问数据识别寄存器不会影响 IC的正常工作。由于IDCODE指令是可选的,不是每个芯片都有的,所以当对一个边界扫描链(scan chain)执行IDCODE指令来输出所有IDCODE时,有IDCODE指令的芯片就选择IDCODE寄存器,输出输出IDCODE,没有 IDCODE指令的芯片会自动选择BYPASS寄存器,输出一个“0”。 (读取CPU ID号指令。在设计中存在device identification register时,TAP强制定义。该指令将处理器的ID号寄存器连接到TDI和TDO之间。)
USERCODE指令 ---可选指令
选择USERCODE指令时,IC工作在正常工作模式,选择用户自定义数据寄存器(user defined test data register)连通TDI和TDO。USERCODE指令一般是在进行芯片内部测试时用的。
CLAMP指令 ---可选指令
CLAMP指令使IC的输出置于由边界扫描寄存器的当前内容决定的逻辑电平上,选择BYPASS寄存器连通 TDI和TDO。在加载这个指令之前,边界扫描寄存器的内容可以由SAMPLE/PRELOAD指令来预置。在CLAMP指令下,数据通过BYPASS寄 存器从TDI传递至TDO,不会影响此IC的输出。
HIGHZ指令 ---可选指令
HIGHZ指令使IC的所有输出置于高阻状态,选择BYPASS寄存器连通TDI和TDO。在HIGHZ指令下,数据通过BYPASS寄存器从TDI传递至TDO,不会影响此IC的输出