JTAG 状态机/指令

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中:

  1. 把input_port都force为1.
  2. 加载sample_preload指令, 在该指令下bscan chain串在tdi与tdo中间, 这时向bscan chain中移入0(控制cell按实际需要值配置).
  3. 加载extest指令: 在该指令下, input_port上的值被打入bscan chain上.
  4. shift bscan chain, 检查每个input_port对应的bscan cell值是否为1.

VIL与VIH类似, 差别是把1换成0.

3.2 VOH/VOL

VOH主要测试: 往bscan chain中移入1后, 能不能打到output_port上.

  1. 加载sample_preload指令, 在该指令下bscan chain串在tdi与tdo中间, 这时向bscan chain中移入1(控制cell按实际需要值配置).
  2. 加载extest指令: 在该指令下, bscan chain上的值被打入output_port上.
  3. 读取每个output_port, 检查值是否为1.

VOL与VOH类似, 差别是把1换成0.

原文地址:https://www.cnblogs.com/gaiqingfeng/p/15239314.html