1. JTAG状态机
数据寄存器(DR)控制 指令寄存器(IR)控制
-> ______________
/1 |test_logic_rst|<----------------------------------------------------------+
\_/ -------------- |
|0 |
-> ______________ 1 ______________ 1 ______________ 1 |
/0 |run_test/idle |---------->|Select_DR_Scan|----------->|Select_IR_Scan|----+
\_/ -------------- ^ -------------- --------------
^ | |0 |0
| | ______________ 1 ______________ 1
| | | Capture_DR |----+ | Capture_IR |----+
| | -------------- | -------------- |
| | |0 | |0 |
| | ______________ <- | ______________ <- |
| | +--->| Shift_DR | 0 | +--->| Shift_IR | 0 |
| | | -------------- \_/ | | -------------- \_/ |
| | | |1 | | |1 |
| | | 1 ______________ | | 1 ______________ |
| | | +--| Exit1_DR |<---+ | +--| Exit1_IR |<---+
| | | | -------------- | | --------------
| | | | |0 | | |0
| | | | ______________ <- | | ______________ <-
| | | | | Pause_DR | 0 | | | Pause_IR | 0
| | | | -------------- \_/ | | -------------- \_/
| | | | |1 | | |1
| | | | 0 ______________ | | 0 ______________
| | +----| Exit2_DR | +----| Exit2_IR |
| | | -------------- | --------------
| | | |1 | |1
| | | ______________ | ______________
| | +->| Update_DR | +->| Update_IR |
| | -------------- --------------
| | |1 |0 |1 |0
| +-----------+---------------------------+ |
| | |
+------------------------------+---------------------------+
2. JTAG指令
指令 | 中文名 | 用途 | 具体操作 |
---|---|---|---|
Extest | 外部测试指令 | 初始化外部电路, 主要用于板级互连以及片外电路测试. | shift-dr: 将BSR连接到TDI与TDO之间; capture-dr: 将input port值装入BSR; (该指令从不使用移入BSR input reg中的值); update-dr: 将并行输出寄存器中的值送到output port; |
Sample/Preload | - | 进入测试模式前对BSC进行预装载. | capture-dr: 提供一个从管脚到芯片逻辑的数据流快照. update-dr: 将BSR数据锁存到并行输出寄存器单元(然后在extest指令时, 将并行数据送到output port); |
Sample | - | - | 通过数据扫描操作来访问BSR, 以及对进入和离开IC的数据进行采样. |
Preload | - | - | 进入Extest指令前对BSR进行数据加载. |
3. JTAG测试向量
3.1 VIH/VIL
VIH主要测试: 在input port加载1后, 能不能打到bscell中:
- 把input_port都force为1.
- 加载sample_preload指令, 在该指令下bscan chain串在tdi与tdo中间, 这时向bscan chain中移入0(控制cell按实际需要值配置).
- 加载extest指令: 在该指令下, input_port上的值被打入bscan chain上.
- shift bscan chain, 检查每个input_port对应的bscan cell值是否为1.
VIL与VIH类似, 差别是把1换成0.
3.2 VOH/VOL
VOH主要测试: 往bscan chain中移入1后, 能不能打到output_port上.
- 加载sample_preload指令, 在该指令下bscan chain串在tdi与tdo中间, 这时向bscan chain中移入1(控制cell按实际需要值配置).
- 加载extest指令: 在该指令下, bscan chain上的值被打入output_port上.
- 读取每个output_port, 检查值是否为1.
VOL与VOH类似, 差别是把1换成0.