"TRACE32를 이용한 Boundary SCAN"의 두 판 사이의 차이

TRACE32
이동: 둘러보기, 검색
 
1번째 줄: 1번째 줄:
 
<p>Boundary SCAN은 PCB나 IC sub-blocks들의 Interconnects를 테스트 할 수 있는 방법으로 Standard IEEE1149.1에서 정의하고 있습니다. TRACE32에서 지원하는 Boundary SCAN 기능들을 알아보도록 하겠습니다.</p>
 
<p>Boundary SCAN은 PCB나 IC sub-blocks들의 Interconnects를 테스트 할 수 있는 방법으로 Standard IEEE1149.1에서 정의하고 있습니다. TRACE32에서 지원하는 Boundary SCAN 기능들을 알아보도록 하겠습니다.</p>
<h1>1.&nbsp; Overview</h1>
+
<h1>&nbsp; Overview</h1>
 
<p>TRACE32 Boundary SCAN 기능은 다음과 같은 기능을 지원합니다.</p>
 
<p>TRACE32 Boundary SCAN 기능은 다음과 같은 기능을 지원합니다.</p>
 
<p>l&nbsp; Flash Programing</p>
 
<p>l&nbsp; Flash Programing</p>
16번째 줄: 16번째 줄:
 
<p>을 사용하고자 합니다.</p>
 
<p>을 사용하고자 합니다.</p>
 
<p>&nbsp;</p>
 
<p>&nbsp;</p>
<h2>1.1.&nbsp;&nbsp; 약어</h2>
+
<h2>&nbsp; &nbsp;약어</h2>
 
<table border="1" cellspacing="0" cellpadding="0">
 
<table border="1" cellspacing="0" cellpadding="0">
 
<tbody>
 
<tbody>
102번째 줄: 102번째 줄:
 
</table>
 
</table>
 
<p>&nbsp;</p>
 
<p>&nbsp;</p>
<h1>2.&nbsp; Boundary SCAN 구조</h1>
+
<h1>&nbsp; Boundary SCAN 구조</h1>
 
<p>Boundary SCAN 테스트를 위하여 칩을 Design할 때 추가적인 logic들이 칩에 추가되어야 합니다. 즉 아래 그림과 같이 Boundary SCAN Cell이라고 하는 Shift Register로 구성된 Data를 Read/Write할 수 있는 Logic들을 Core와 Port사이에 놓여져야 합니다.</p>
 
<p>Boundary SCAN 테스트를 위하여 칩을 Design할 때 추가적인 logic들이 칩에 추가되어야 합니다. 즉 아래 그림과 같이 Boundary SCAN Cell이라고 하는 Shift Register로 구성된 Data를 Read/Write할 수 있는 Logic들을 Core와 Port사이에 놓여져야 합니다.</p>
 
<p><img src="/data/wiki/2015-05-29/1432882665.png" alt="" width="700" /></p>
 
<p><img src="/data/wiki/2015-05-29/1432882665.png" alt="" width="700" /></p>
 
<p>Normal Mode에서는 해당 Cell들은 회로에 영향을 주지 않으며 Core가 각 Port에 바로 연결된 것과 같이 동작하게 됩니다. 만약 Boundary SCAN Mode로 진입하게 되면 Core는 각 Port로부터 Isolation되며 그 때 각 Port의 신호들은 Boundary SCAN을 통해 제어될 수 있게 됩니다. 즉 Boundary SCAN cell들을 통해 각 Port에 값을 쓰거나 읽는 동작이 가능하게 됩니다.</p>
 
<p>Normal Mode에서는 해당 Cell들은 회로에 영향을 주지 않으며 Core가 각 Port에 바로 연결된 것과 같이 동작하게 됩니다. 만약 Boundary SCAN Mode로 진입하게 되면 Core는 각 Port로부터 Isolation되며 그 때 각 Port의 신호들은 Boundary SCAN을 통해 제어될 수 있게 됩니다. 즉 Boundary SCAN cell들을 통해 각 Port에 값을 쓰거나 읽는 동작이 가능하게 됩니다.</p>
 
<p>&nbsp;</p>
 
<p>&nbsp;</p>
<h2>2.1.&nbsp;&nbsp; Boundary SCAN 명령</h2>
+
<h2>&nbsp; &nbsp;Boundary SCAN 명령</h2>
 
<p>Boundary SCAN을 위해서는 기본적으로 4가지의 명을을 지원할 수 있도록 JTAG을 Design하여야 하며 추가로 더 많은 명령들을 정의하고 있습니다. 필요에 따라 JTAG Design시 사용자 정의 명령들도 추가할 수 있습니다.</p>
 
<p>Boundary SCAN을 위해서는 기본적으로 4가지의 명을을 지원할 수 있도록 JTAG을 Design하여야 하며 추가로 더 많은 명령들을 정의하고 있습니다. 필요에 따라 JTAG Design시 사용자 정의 명령들도 추가할 수 있습니다.</p>
 
<p>&bull; BYPASS (mandatory): TDI isconnected to TDO via a single shift register.</p>
 
<p>&bull; BYPASS (mandatory): TDI isconnected to TDO via a single shift register.</p>
162번째 줄: 162번째 줄:
 
<p><img src="/data/wiki/2015-05-29/1432882842.png" alt="" width="650" /></p>
 
<p><img src="/data/wiki/2015-05-29/1432882842.png" alt="" width="650" /></p>
 
<p>&nbsp;</p>
 
<p>&nbsp;</p>
<h2>2.3.&nbsp;&nbsp; ARM DAP의 JTAG 명령</h2>
+
<h2>&nbsp; &nbsp;ARM DAP의 JTAG 명령</h2>
 
<p>다은 그림은 ARM DAP의 JTAG에서 제공하는 JTAG 명령들을 보여주고 있습니다. Boundary SCAN 명령 뿐 아니라 Debugging을 위한 JTAG 명령들도 있는 것을 확인할 수 있습니다.</p>
 
<p>다은 그림은 ARM DAP의 JTAG에서 제공하는 JTAG 명령들을 보여주고 있습니다. Boundary SCAN 명령 뿐 아니라 Debugging을 위한 JTAG 명령들도 있는 것을 확인할 수 있습니다.</p>
 
<p><img src="/data/wiki/2015-05-29/1432882867.png" alt="" width="400" /></p>
 
<p><img src="/data/wiki/2015-05-29/1432882867.png" alt="" width="400" /></p>
 
<p>&nbsp;</p>
 
<p>&nbsp;</p>
<h1>3.&nbsp; TRACE32 BSDL 명령</h1>
+
<h1>&nbsp; TRACE32 BSDL 명령</h1>
 
<p>Trace32는 이와 같은 Boundary SCAN을 지원하기 위해 BSDL이라고 하는 명령을 지원하고 있으며 해당 명령을 이용 하면 Boundary SCAN cell로부터 쉽게 데이터를 획득할 수 있습니다.</p>
 
<p>Trace32는 이와 같은 Boundary SCAN을 지원하기 위해 BSDL이라고 하는 명령을 지원하고 있으며 해당 명령을 이용 하면 Boundary SCAN cell로부터 쉽게 데이터를 획득할 수 있습니다.</p>
 
<p>참고로 BSDL 명령에 의해 지원되는 Boundary SCAN cell 수는 최대 16 Billion cells까지 데이터를 Access할 수 있습니다.</p>
 
<p>참고로 BSDL 명령에 의해 지원되는 Boundary SCAN cell 수는 최대 16 Billion cells까지 데이터를 Access할 수 있습니다.</p>
 
<p>&nbsp;</p>
 
<p>&nbsp;</p>
 
<p>&nbsp;</p>
 
<p>&nbsp;</p>
<h2>3.1.&nbsp;&nbsp; BSDL 명령</h2>
+
<h2>&nbsp; &nbsp;BSDL 명령</h2>
 
<p>1)&nbsp;&nbsp;&nbsp; <strong>BSDL.RES</strong></p>
 
<p>1)&nbsp;&nbsp;&nbsp; <strong>BSDL.RES</strong></p>
 
<p>&nbsp; 기존 BSDL 관련 설정 값을 Clear</p>
 
<p>&nbsp; 기존 BSDL 관련 설정 값을 Clear</p>
226번째 줄: 226번째 줄:
 
<p>다음은 BSDL명령을 통해 Boundary SCAN Cell들에 데이터를 Access하는 예를 보여주고 있습니다. 이와 같이TRACE32는 JTAG을 이용한 SW Debugging 뿐아니라 Boundary SCAN을 이용한 Board 테스트까지 자유롭게 개발할 수 있는 환경을 제공합니다.</p>
 
<p>다음은 BSDL명령을 통해 Boundary SCAN Cell들에 데이터를 Access하는 예를 보여주고 있습니다. 이와 같이TRACE32는 JTAG을 이용한 SW Debugging 뿐아니라 Boundary SCAN을 이용한 Board 테스트까지 자유롭게 개발할 수 있는 환경을 제공합니다.</p>
 
<p><img src="/data/wiki/2015-05-29/1432882956.png" alt="" width="800" /></p>
 
<p><img src="/data/wiki/2015-05-29/1432882956.png" alt="" width="800" /></p>
<p>&nbsp;</p>
 
 
<p>&nbsp;</p>
 
<p>&nbsp;</p>
 
<p>&nbsp;</p>
 
<p>&nbsp;</p>

2015년 5월 29일 (금) 16:13 기준 최신판

Boundary SCAN은 PCB나 IC sub-blocks들의 Interconnects를 테스트 할 수 있는 방법으로 Standard IEEE1149.1에서 정의하고 있습니다. TRACE32에서 지원하는 Boundary SCAN 기능들을 알아보도록 하겠습니다.

  Overview

TRACE32 Boundary SCAN 기능은 다음과 같은 기능을 지원합니다.

l  Flash Programing

l  Interactive board connection test

l  Automated board connection test

추가적으로 BSDL 파일에서 기술된 모든 Boundary Scan 명령과 Data register들에 대한 Access가 가능합니다.

 

보통 개발자들은

l  Board 조립 후 초기 동작에서 각 칩들간 신호들의 정상적인 연결에 관한 정보

l  각 Port의 상태 측정

l  PCB상에서 각 신호들을 Drive하는 작업

l  Flash Memory 쓰기/읽기

l  IC level에서 build in self tests

l  IC 칩에 내장된 Test 기능의 활용

을 사용하고자 합니다.

 

   약어

BSDL

Boundary Scan Description Language

DR

Linux 3.7.0 based Android JellyBean

IR

Instruction Register

TAP

Test Access Port

TCK

JTAG signal, Test ClockInpu

TDI

JTAG signal, Test Data Input

TDO

JTAG signal, Test Data Output

TMS

JTAG signal, Test Mode Select

TRST_N

JTAG signal, Test ResetInput

PCB

Printed Circuit Board

 

  Boundary SCAN 구조

Boundary SCAN 테스트를 위하여 칩을 Design할 때 추가적인 logic들이 칩에 추가되어야 합니다. 즉 아래 그림과 같이 Boundary SCAN Cell이라고 하는 Shift Register로 구성된 Data를 Read/Write할 수 있는 Logic들을 Core와 Port사이에 놓여져야 합니다.

Normal Mode에서는 해당 Cell들은 회로에 영향을 주지 않으며 Core가 각 Port에 바로 연결된 것과 같이 동작하게 됩니다. 만약 Boundary SCAN Mode로 진입하게 되면 Core는 각 Port로부터 Isolation되며 그 때 각 Port의 신호들은 Boundary SCAN을 통해 제어될 수 있게 됩니다. 즉 Boundary SCAN cell들을 통해 각 Port에 값을 쓰거나 읽는 동작이 가능하게 됩니다.

 

   Boundary SCAN 명령

Boundary SCAN을 위해서는 기본적으로 4가지의 명을을 지원할 수 있도록 JTAG을 Design하여야 하며 추가로 더 많은 명령들을 정의하고 있습니다. 필요에 따라 JTAG Design시 사용자 정의 명령들도 추가할 수 있습니다.

• BYPASS (mandatory): TDI isconnected to TDO via a single shift register.

• SAMPLE (mandatory): Takes a snapshot of the normal operation of the IC.

• PRELOAD (mandatory): Loads data to the boundary scan register.

• EXTEST (mandatory): Apply preloaded data of the boundary scan register to the ports.

• INTEST (optional): Apply preloaded data of the boundary scan register to the core logic.

• RUNBIST (optional): Executes a self-contained self-test of the IC.

• CLAMP (optional): Apply preloaded data of the boundary scan register to the ports and selects the bypass

           register as the serial path between TDI and TDO.

• IDCODE (optional): Reads the device identification register.

• USERCODE (optional): Reads and writes a user programmable identification register.

• HIGHZ (optional): Places the IC in an inactive drive state (e.g. all ports are set to high impedance state).

 

참고로 IC들의 각 Port 정보를 쉽게 얻고 자동화 하여 테스트 할 수 있도록 하기 위하여 각 칩 제조사들은 해당 칩의 JTAG이 지원하는 명령어 List와 각 Port 및 Boundary SCAN cell 들에 대한 정보를 기술하하는 VHDL의 Subset인 BSDL 파일을 제공하고 있습니다. 다음은 BSDL file 예제입니다.

port (

   PCIERX7P : inout bit;

   PCIERX3P : linkage bit;

   :

   :

  VBUS0 : linkage bit;

  USBP0 : inout bit;

  SA0_RXP : inout bit;

);

attribute INSTRUCTION_OPCODE of chip: entity is

     "EXTEST   (0000)," &

     "SAMPLE   (0001)," &

     "TMR      (1000)," &

     "MBIST    (1001)," &

     "XMU  (1010),"&

     "SCAN_DUMP (1011),"&

     "DDR_PHY  (1100),"&

     "TEMP_SEN (1101),"&

     "BYPASS   (1111)";

 attribute REGISTER_ACCESS of chip: entity is

     "BYPASS    (BYPASS)," &

     "BOUNDARY  (EXTEST, SAMPLE)," &

     "TMR[50]   (TMR)," &

     "XMU[297] (XMU)," &

     "TEMP_SENS[138] (TEMP_SEN), " &

     "SCAN_DUMP[732935] (SCAN_DUMP), " & -- E5Q

     "DDR3_TDR[196] (DDR_PHY)";

 

 

2.2.   Boundary SCAN을 위한 JTAG 구조

아래 그림은 JTAG Interface에 대한 Schematic입니다.

 

 

다섯 개의 JTAG신호들을 통하면 아래 그림과 같이 JTAG machine 내에 있는 IR과 DR에 Access가 가능하며 해당 DR에 Boundary SCAN cell 들이 설계 된 경우라면 해당 cell들에 연결된 Port 정보들을 Access 할 수 있게 됩니다. DR은 SoC 설계자가 필요에 따라 추가로 설계 할 수 있습니다.

 

다음 그림은 Board설계 시 JTAG을 Daisy Chain으로 연결하여 설계한 예입니다. JTAG 내 Boundary SCAN을통해 좌측 TEAKLite DSP의 특정 핀에 High를 출력했다면 그 핀에 연결된 우측의 Cortex 칩의 핀에서 그 신호가 읽혀지게 될 것입니다. 만약 출력했던 신호가 우측 칩의 연결된 핀에서 읽혀지지 않는 다면 PCB Board조립에 문제가 있는 것으로 판단할 수 있습니다.

 

   ARM DAP의 JTAG 명령

다은 그림은 ARM DAP의 JTAG에서 제공하는 JTAG 명령들을 보여주고 있습니다. Boundary SCAN 명령 뿐 아니라 Debugging을 위한 JTAG 명령들도 있는 것을 확인할 수 있습니다.

 

  TRACE32 BSDL 명령

Trace32는 이와 같은 Boundary SCAN을 지원하기 위해 BSDL이라고 하는 명령을 지원하고 있으며 해당 명령을 이용 하면 Boundary SCAN cell로부터 쉽게 데이터를 획득할 수 있습니다.

참고로 BSDL 명령에 의해 지원되는 Boundary SCAN cell 수는 최대 16 Billion cells까지 데이터를 Access할 수 있습니다.

 

 

   BSDL 명령

1)    BSDL.RES

  기존 BSDL 관련 설정 값을 Clear

2)    BSDL.UNLOAD [<chip_no.>|ALL]

  기존 Boundary SCAN chain으로부터 해당 chip을 삭제

3)    BSDL.FILE [<filename>]

  BSDL 파일을 로드하고 순서대로 chip_no를 부여함

4)    SYStem.JtagClock [frequency]

  JTAG으로 사용할 Clock을 정의

5)    JTAG.LOCK/JTAG.UNLOCK

  Debugger의 JTAG 임의 사용 방지 Lock/Unlock, BSDL 윈도우는 현재 상태를 보여줌

6)    BSDL.HARDRESET

  nTRST핀을 이용하여 TAP 컨트롤러를 Reset하고 Select-DR-SCAN state로 변경

7)    BSDL.SOFTRESET

  TMS=1 후 TCK clock을 5번 입력하여 TAP controller를 Reset State로 변경 후 Select-DR-SCAN

  state로 변경

8)    BSDL.CHECK.BYPASS()

  Boundary SCAN BYPASS 테스트 후 성공하면  TRUE를  return함

9)    BSDL.CHECK.IDCODE()

  Boundary SCAN IDCODE 테스트 후 성공하면 TRUE를 return 함

10)  BSDL.BYPASSall

  JTAG chain의 모든 IR에 BYPASS 후 무작위 패턴 입력 후 출력에 체크되는 지 확인, 만약 실패하면

  입력 패턴과 출력 패턴 경고 메시지로 출력 

11)  BSDL.IDCODEall

  JTAG chain의 모든 IR에 IDCODE 명령 후 IDCODE 확인, 만약 IDCODE 명령이 없는 경우 BYPASS

  명령 입력

12)  BSDL.SAMPLEall

  JTAG Chain의 모든 IR에 SAMPLE 명령 입력 후 Boundary SCAN chain의 값들을 Sample하여 읽

 오는 테스트 명령

13)  BSDL.RUN IR

  BSDL.SET에 의해 선택된 IR 명령을 IR에 밀어 넣는 명령

14)  BSDL.RUN DR

  BSDL.RUN IR에 의해 선택된 DR Access명령으로 BSDL.SET 명령에 의해 설정된 Write Buffer 데이

  터를 DR에 씀과 동시에 DR로부터 Read Buffer로 읽어 들임

 

15)  BSDL.RUN

  BSDL.RUN IR 명령 실행 후 BSDL.RUN DR명령도 실행

16)  BSDL.SET [<chip no.>] IR [IR 명령]

  BSDL.RUN IR 명령 실행 시 밀어 넣을 IR명령 선택 명령, Ex) BSDL.SET 1. BYPASS

17)  BSDL.SET [<chip no.>] DR [DR cell] [0|1|H|L|Z|X]

  BSDL.RUN DR 실행 시 설정할 값을 Write Buffer에 세팅하는 명령

  EX) BSDL.SET 1. DR USBTXD 0

     BSDL.SET 3. DR * SAMPLE

18)  BSDL.SET 1. Option BSRHISTORY ON

  Boundary SCAN Register에 한해 읽어 낸 기존 값들 history 보여주는 옵션

19)  BSDL.SELect [<chip no.>]

  SCAN chain에 연결된 여러 칩들 중 설정/읽기를 원하는 칩 선택명령

20)  BSDL.SToreDR [<chip no.>] [Data Register name] [filename to store] /BINary

  BSDL.RUN DR 명령에 의해 읽혀진 Read Buffer의 값을 파일로 저장

21)  BSDL.LoadDR [<chip no.>] [Data Register name] [filename to load] /BINary

  BSDL.SToreDR명령에 의해 저장된 데이터를 다시 로드 하는 명령

 

 

다음은 BSDL명령을 통해 Boundary SCAN Cell들에 데이터를 Access하는 예를 보여주고 있습니다. 이와 같이TRACE32는 JTAG을 이용한 SW Debugging 뿐아니라 Boundary SCAN을 이용한 Board 테스트까지 자유롭게 개발할 수 있는 환경을 제공합니다.