JTAG SVF文件调试应用
Trailer Instruction Register (TIR)”(报尾指令寄存器)用于指定将追加到所有后续 SIR 命令末尾的默认报尾模式。“Header Instruction Register (HIR)”(报头指令寄存器)用于指定要添加到所有后续 SIR 命令开头的默认报头模式。“Header Data Register (HDR)”(报头数据寄存器)用于指定要追加到所有后续 SDR
Contents
Introduction
SVF(Serial Vector Format)
一种用于描述边界扫描测试向量序列的文本文件格式。它的基本结构包含了一系列的指令和数据,用于控制IEEE 1149.1标准的JTAG边界扫描测试。
SFDR 1.5; // 指定SVF版本和格式
SIR 5 TDI (11001); // 移入指令寄存器,定义指令为11001
TDI (10101010); // 移入数据寄存器
RUNTEST 100 TCK; // 运行测试100个时钟周期
XSVF – General
To provide the functionality of an SVF file in a compact, binary format, Xilinx has defined the
XSVF format. XSVF files are optimized for performing JTAG operations on Xilinx devices and
are intended for use in embedded applications.
SVF命令
SVF 文件包含一系列命令,用于描述JTAG操作。常见的SVF命令包括:
- ENDDR:指定DR扫描操作结束后的默认状态。
- ENDIR: 指定IR扫描操作结束后的默认状态。
- FREQUENCY: 指定IEEE 1149.1总线操作的最大测试时钟频率。
- HDR(报头数据寄存器):指定一个报头模式,它被预置在后续DR扫描操作的开头。
- HIR (报头指令寄存器):指定一个报头模式,它被预置在后续IR扫描操作的开头。
- PIO (Parallel Input/Output):并行输入输出, 指定一个并行测试模式。
- PIOMAP (Parallel Input/Output Map): 并行输入/输出映射,将PIO列的位置映射到一个逻辑引脚。
- RUNTEST: 使IEEE 1149.1总线在指定的时钟数或指定的时间段内进入运行状态。
- SDR(扫描数据寄存器):执行IEEE 1149.1数据寄存器扫描。
- SIR(扫描指令寄存器):执行IEEE 1149.1指令寄存器扫描。
- STATE:使IEEE 1149.1总线进入一个指定的JTAG状态机状态。
- TDR(报尾数据寄存器):指定一个报尾模式,附加在后续DR扫描操作的末端。
- TIR(报尾指令寄存器):指定一个报尾模式,附加在后续IR扫描操作的末尾。
- TRST (Test ReSeT): 控制可选的测试复位线。
// 设置指令寄存器的结束状态为IDLE
ENDIR IDLE;
// 设置数据寄存器的结束状态为IDLE
ENDDR IDLE;
// 扫描指令寄存器,设置指令为0x01
SIR 8 TDI (01);
// 扫描数据寄存器,设置数据为0x1234
SDR 16 TDI (1234);
// 运行测试,持续100个时钟周期
RUNTEST 100 TCK;
// 设置JTAG状态机为IDLE状态
STATE IDLE;
SVF Header and Trailer Instructions

在没有引入报头报尾相关寄存器之前,如果想从上面多设备JTAG chain中读取XC9572XL的idcode,命令是这样的:

为了简化SVF文件,引入四条padding指令:
报头数据寄存器 (HDR) 和报头指令寄存器 (HIR)
“Header Data Register (HDR)”(报头数据寄存器)用于指定要追加到所有后续 SDR 命令开头之前的默认报头模式。
“Header Instruction Register (HIR)”(报头指令寄存器)用于指定要添加到所有后续 SIR 命令开头的默认报头模式。可通过将报头长度设置为 0来移除报头。
报尾数据寄存器 (TDR) 和报尾指令寄存器 (TIR)
“Trailer Data Register (TDR)”(报尾数据寄存器)用于指定要追加到所有后续 SDR 命令末尾的报尾模式。“Trailer Instruction Register (TIR)”(报尾指令寄存器)用于指定将追加到所有后续 SIR 命令末尾的默认报尾模式。可通过将报尾长度设置为 0 来移除报尾。
简化后的指令对比如下:

Vivado下的svf
svf创建
可以在vivado工具下根据当前实际jtag chain创建svf文件,也可以手动创建。最基本的操作可以将PL bit添加进来,自动生成svf命令。

下面分别是100t和zyn7000的program行为的svf,可对比看下TIR,TDR的使用

svf执行
执行svf可以在vivado tcl console通过命令execute_hw_svf 执行:
execute_hw_svf E:/xilinx_sdk/embedded_system/axi_gpio/svftarget_0.svf
下图为svf与hw_server jtag log的对比:

其他类似OpenOCD, Xilinx iMPACT, Altera/Intel Quartus Programmer, Altera/Intel Quartus Programmer, 劳德巴赫Trace32等都可以执行svf文件
Summary
JTAG 和 SVF 是集成电路测试和调试中的重要工具。通过SVF文件,可以自动化地执行复杂的JTAG操作,提高测试和调试的效率。
应用场景
- 芯片测试: 通过JTAG接口进行边界扫描测试,检测制造缺陷。
- 芯片编程: 通过JTAG接口烧写Flash或配置FPGA。
- 调试: 通过JTAG接口进行实时调试和故障诊断。
Reference
更多推荐



所有评论(0)