โ
JTAG์ ๋์งํธ ํ๋ก ๊ฐ๋ฐ์์์ Chip Debugging, Chip Test, Chip Programming์ ์ ํ ํ์ง ํฅ์, ํจ์จ์ ์ธ ๊ฐ๋ฐ ๋ฐ ์ ์ง ๋ณด์๋ฅผ ์ํด ๊ผญ ํ์ํ ์์์ ๋๋ค.
โ
์ด๊ฒ ์ ํ์ํ๋?
๋์งํธํ๋ก๊ฐ ์์ฒญ๋๊ฒ ๋ณต์กํ๋ฐ,
โ
โ์ด Chip์ด ์ค๊ณ๋ ๋ฉ์ฉกํ๋ฐ ๊ณต์ ๊ฒฐํจ์ผ๋ก Chip์ด ๋์์ ์ ํ๋๊ฑด์ง?โ
โChip์ SW๋ฅผ ์ฌ๋ฆฌ๊ณ ์ถ๋ค๋ฉด?โ
โChip debugging์ ํ๊ณ ์ถ๋ค๋ฉด?โ
-> ์ด๋ฐ ์ด์ ๋ค๋ก ์ธํด JTAG์ด ํ์ํด์ก์ต๋๋ค.
ํญ์ ์ด์์ ์ด๊ณ , ์๋ฌด๋ฐ ์ค์์ ๊ณต์ ๊ฒฐํจ์ด ์๊ณ , ์ฒ์๋ถํฐ ์๋ฒฝํ SW๋ฅผ ์ฌ๋ฆด ์ ์๋ค๋ฉด, ์ฌ์ค JTAG์ ํ์์์ง๋ง..
์์ฐ Chip์ ๊ณต์ ๊ฒฐํจ์ด ์๋์ง ํ ์คํธํ๊ณ , Chip์ SW ์ฌ๋ฆฌ๊ณ , Chip์ ๋๋ฒ๊ทธ ํ๋ ค๋ฉด JTAG์ด๋ผ๋๊ฒ ํ์ํฉ๋๋ค.
โ
์ฉ์ด ์ ๋ฆฌ๋ถํฐ ํ๋ฉด,
๋๋ฒ๊น (Debugging): ์ํํธ์จ์ด์ ํ๋์จ์ด์ ์ํธ ์์ฉ์์ ๋ฒ๊ทธ์ ๊ฒฐํจ์ ํผํ ์ ์์ต๋๋ค. ๋๋ฒ๊น ์ ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ํต์ฌ ์์ ์ผ๋ก, ๋๋ฐ์ด์ค ๋ด๋ถ์ ๋์์ ๋ชจ๋ํฐํ๊ณ ๋ฌธ์ ๋ฅผ ์๋ณํ์ฌ ๊ฐ์ ํฉ๋๋ค.
โ
์ฐธ๊ณ ๋ก, ์ฌ๊ธฐ์ ๋๋ฒ๊น ์ print โhello worldโ๊ฐ์ ๊ฒ์ด ์ถ๋ ฅ๋๋์ง ์ฒดํฌํ๋ ๋๋ฒ๊น ์ด ์๋๋ผ,
Chip์ SRAM๊น์ง data write, data read๊ฐ ์ ๋๋์ง? ์๋๋ฉด ์๊ทธ๋ ํ๋ฒ ์ญ ๋ณด๋ด๊ณ , ์๊ทธ๋์ด ๋์์ค๋์ง? ์ด๋ฐ๊ฑฐ ์ฒดํฌํ๋ ๋๋ฒ๊น ์ ๋๋คโฆโฆ ์ด๊ฑฐ ์ง์ง ์ด๋ ต๋๋ผ๊ตฌ์. PC์์ High level language๋ก ์ฝ๋ฉํ๋ ๊ฒ๋ค์ ๋๋ถ๋ถ โ๋ด ์ฝ๋์ ์ค์โ๊ฐ ๋ณด์ด๋๋ฐโฆ Chip์ด ๊ฒฐํจ์ด ์์ผ๋ฉด, ๋์์ ํ ์๋ ์๊ณ ์ ํ ์๋ ์๊ณ .. Chip์ ํ๋ํ๋ X-ray ํ๋ฏธ๊ฒฝ์ผ๋ก ๋ณผ ์๋ ์๊ณ โฆ. ์ง์ง ์ด๋ ต๋๋ผ๊ตฌ์.
โ
ํ ์คํธ(Test): Chip ์ ์กฐ๊ณต์ ์ ํญ์ ์ด์์ ์ด์ง ์์ต๋๋ค. ๊ฐ์ ์จ์ดํผ์์ ๊ฐ์ ์ฅ๋น๋ก ๋ง๋ค๋๋ผ๋, ์ผ๋ถ Chip์ ๋จผ์ง๊ฐ ๊ปด์ ๋ฏธ์ธํ๊ฒ ์ ์ด ๋์ด์ง๊ฑฐ๋, ์ ์ด ๊ตต๊ฒ๋์ด ์ ๋ฐฐ์ ๊ณผ ๋ถ์ ์๋ ์์ต๋๋ค. ๊ทธ๋ฌ๋ฏ๋ก, ์์ฐ ์นฉ ๊ฐ์ ๊ฒฝ์ฐ์ ์นฉ ํ ์คํธ๊ฐ ํ์์ ๋๋ค.
ํ๋ก๊ทธ๋๋ฐ(Programming): Chip์์ฒด๋ก๋ ์ฌ์ฉํ๊ธฐ ์ด๋ ต์ต๋๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ High level language๊ฐ ๋ฑ์ฅํ๊ฑฐ๊ณ .. ์ด๋ฐ ์ํํธ์จ์ด๋ฅผ ์นฉ์ ๋ด์์ผ ํฉ๋๋ค. ์ ๋ฐ์ดํธ๋ ํ์ฅ์ด ํ์ํ ๊ฒฝ์ฐ์๋ ํ๋ก๊ทธ๋๋ฐ์ด ํ์ํฉ๋๋ค.
โ
JTAG์ ๋ฑ์ฅ ์ด์ ์๋ ์ด๋ป๊ฒ ํ์๋์ง?
Debug Port: ๋๋ฒ๊น ์ ์ํด ์๋ฆฌ์ผ ํฌํธ๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ด ์ผ๋ฐ์ ์ด์์ต๋๋ค. ํ์ง๋ง ์ด ๋ฐฉ์์ ์๋์ ํจ์จ์ฑ ๋ฉด์์ ํ๊ณ๊ฐ ์์์ต๋๋ค.
Embedded Emulator: ์ผ๋ถ ๋๋ฒ๊น ๋๊ตฌ๋ ์ฒ์๋ถํฐ ๋๋ฐ์ด์ค ๋ด์ ์๋ฎฌ๋ ์ดํฐ๋ฅผ ๋ด์ฅ์์ผ ๋๋ฒ๊น ์ ์ํํ๋ ๋ฐฉ์์ด์์ต๋๋ค. ํ์ง๋ง ๋น์ฉ๊ณผ ๊ตฌํ ๋์ด๋๊ฐ ๋์ต๋๋ค.
โ
JTAG์ ์ด๋ฌํ ํ๊ณ๋ฅผ ๊ทน๋ณตํ๋ฉด์, ํ๋์ ํ์ค ์ธํฐํ์ด์ค๋ก์จ ๋ค์ํ ๋๋ฐ์ด์ค์์ ํจ๊ณผ์ ์ธ ๋๋ฒ๊น , ํ ์คํธ, ํ๋ก๊ทธ๋๋ฐ์ ๊ฐ๋ฅํ๊ฒ ํด์ฃผ์์ต๋๋ค. ์ด๋ก์จ ๊ฐ๋ฐ ๊ณผ์ ์์ ์์ฐ์ฑ ํฅ์๊ณผ ํ์ง ํฅ์์ ๋์์ ์ด๋ฃฐ ์ ์๊ฒ ๋์์ต๋๋ค.
โ
JTAG(Joint Test Action Group) Standard, IEEE 1149.1 Standard Test Access Port and Boundary-Scan Architecture
โ
JTAG์ IEEE 1149.x ์๋ฆฌ์ฆ ํ์ค ์ค ํ๋๋ก, ๋ค์ํ ์ ์ ์ ํ์์ ๋๋ฒ๊น , ํ ์คํธ, ํ๋ก๊ทธ๋๋ฐ์ ์ํ ํ์ค ์ธํฐํ์ด์ค์ ๋๋ค. ์ด์ ์ ์ฌ์ฉ๋์๋ ๋๋ฒ๊น ๋ฐ ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ๋ฒ์ ๋นํด JTAG์ ๋ค์๊ณผ ๊ฐ์ ์ด์ ์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
โ
โ
- ํ์ค ์ธํฐํ์ด์ค
JTAG์ ์ ๊ณ์์ ํ์คํ๋ ์ธํฐํ์ด์ค๋ก, ์ฌ๋ฌ ์ ์กฐ์ ์ฒด์์ ๊ณตํต์ ์ผ๋ก ์ฌ์ฉํ ์ ์๋ ํ์ค์ ๋๋ค. ์ด์ ์๋ ๊ฐ๊ฐ์ ์ ์กฐ์ฌ๋ง๋ค ๊ณ ์ ํ ๋๋ฒ๊น ๋ฐ ํ๋ก๊ทธ๋๋ฐ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ๊ธฐ ๋๋ฌธ์, ํธํ์ฑ ๋ฌธ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์์ต๋๋ค. JTAG์ ์ด๋ฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ฉฐ, ๋ค์ํ ๋๋ฐ์ด์ค์์ ํต์ผ๋ ๋ฐฉ์์ผ๋ก ์ ๊ทผ ๊ฐ๋ฅํฉ๋๋ค.
โ
- ํจ์จ์ฑ
JTAG์ ๋๋ฐ์ด์ค ๋ด๋ถ ๋ ์ง์คํฐ, ์ํ ๋ฑ์ ์ ๊ทผํ์ฌ ๋๋ฒ๊น , ํ ์คํธ, ํ๋ก๊ทธ๋๋ฐ์ ์ํํ ์ ์์ด ๊ฐ๋ฐ์์ ์์ ํจ์จ์ ํฌ๊ฒ ํฅ์์ํต๋๋ค. ์ด์ ์ ์ฌ์ฉ๋๋ ๋ฐฉ์๋ค์ ๋ ๋ณต์กํ๊ณ ์์ ์๊ฐ์ด ๋ง์ ๊ฒฝ์ฐ๊ฐ ๋ง์์ต๋๋ค.
โ
- ๋ค๋ชฉ์ ์ฑ
JTAG์ ๋๋ฒ๊น , ํ ์คํธ, ํ๋ก๊ทธ๋๋ฐ ์ธ์๋ ์ ํ ์๋ฆฌ ๋ฐ ๋ณต๊ตฌ ๋ฑ ๋ค์ํ ๋ชฉ์ ์ผ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด๋ก์จ ํ๋์ ํ์ค ์ธํฐํ์ด์ค๋ก ๋ค์ํ ์์ ์ ์ํํ ์ ์๊ฒ ๋ฉ๋๋ค.
โ
JTAG(Joint Test Action Group)์ ์ ์ ์ ํ์ ๋๋ฒ๊น , ํ ์คํธ, ํ๋ก๊ทธ๋๋ฐ ๋ฑ์ ์ฌ์ฉ๋๋ ํ์ค ์ธํฐํ์ด์ค์ ๋๋ค. JTAG ํ์ค์ โIEEE 1149.1 Standard Test Access Port and Boundary-Scan Architectureโ ๋ฌธ์๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํฉ๋๋ค. ์ด ๋ฌธ์์์ JTAG์ ํต์ฌ ๊ตฌ์ฑ ์์๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
โ
JTAG์ ๊ตฌ์ฑ ์์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
TAP (Test Access Port) : TAP์ JTAG์ ํต์ฌ ๊ตฌ์ฑ ์์๋ก, ๋๋ฐ์ด์ค ๋ด๋ถ๋ก ์ ๊ทผํ์ฌ ํ ์คํธ, ๋๋ฒ๊น , ํ๋ก๊ทธ๋๋ฐ์ ์ํํ๊ธฐ ์ํ ๊ฒฝ๋ก๋ฅผ ์ ๊ณตํฉ๋๋ค. TAP์ JTAG๋ฅผ ์ฌ์ฉํ๋ ๋๋ฐ์ด์ค์ ์ปจํธ๋กค๋ฌ ์ฌ์ด์ ํต์ ์ ๋ด๋นํฉ๋๋ค.
โ
1) ์๋์ 5๊ฐ์ ์ ์ฉ ํ๋ค์ ์ด์นญํ์ฌ TAP( Test Access Port)๋ผ ํ๋ฉฐ, ์ด๋ค ํ ๊ตฌ์ฑ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
4๊ฐ์ ์ ์ฉ TEST ํ
1) Test Clock (TCK)
2) Test Data In (TDI)
3) Test Data Out (TDO)
4) Test Mode Select (TMS)
โ
์์ฝํ๋ฉด,
Device TDS๊ฐ active enable์ผ ๋
TCK๊ฐ active edge๋ก ์ ๋ ฅ๋ TDI๋ฅผ ๋ฐ์ TDO๋ก ์ ๋ฌํ๊ณ ,,, ์ด๋ฐ์์ผ๋ก DEVICE TDI -> 1 -> 2 -> 3 -> TDO๊น์ง ๋ฒกํฐ ์ ๋ฌ์ ์ํต๋๋ค.
์นฉ์ ๊ฒฐํจ์ด ์๋ค๋ฉด, ๋ด๊ฐ ๋ง๋ค์ด์ค TDI์๋ฐ๋ผ TDO๊ฐ์ด ์ ๋์์ผ๊ฒ ์ฃ ? ๊ทธ๋ ์ง ์์ผ๋ฉด ์นฉ ์ด๋๊ฐ์ ๊ฒฐํจ์ด ์๋ ๊ฒ์ด๊ตฌ์. ์ด๋ฐ ๊ตฌ์กฐ ๋ก์ง์ Serial scan์ด๋ผ๊ณ ๋ถ๋ฆ ๋๋ค.
โ
๋ผ๊ณ ํ๋ฉด, ์ดํด๊ฐ ์ ๋ ์ ์์ผ๋.. ์ข ๋ ๊น์ด + ์์ธํ ๋ณด๋ฉด์.
์ฐ๋ฆฌ๊ฐ ํ๊ณ ์ถ์๊ฑด, Chip์ ๊ฒฐํจ์ด ์๋๊ฑด์ง testํ๊ณ ์ถ์๊ฑฐ์์.
๊ทธ๋ฐ๋ฐ Chip test๋ฅผ ์ด๋ป๊ฒ ํ๋?
Chip register๋คํํ ํน์ ์ ๋ ฅ๊ฐ์ ๋ฃ๊ณ , ํน์ ์ถ๋ ฅ์ด ๋์ค๋์ง ๋ณด๋๊ฒ๋๋ค.
๊ทผ๋ฐ Chip์ ๊ธฐ๋ณธ Function ๋์์ผ๋ก๋ ์ด Test๋ฅผ ํ๊ธฐ๊ฐ ๋งค์ฐ ๊น๋ค๋กญ๊ณ , ์ค๋ ์๊ฐ์ด ๊ฑธ๋ฆฌ๊ณ , Test coverage๊ฐ ๋ฎ์์ง๋ค๋ ์ํ/๊ฒฝ์ ์ ์ธ ๋ฌธ์ ๊ฐ ์์ด์.
Chip ๊ณ ์ฅ ๊ฒ์ถ์จ์ ๋์ ๋ง๋๋ Test vector๋ฅผ ์ ๋ ฅํ๊ณ , ์ถ๋ ฅ์ ๋น๊ตํ๋ ๊ฒ์ด ํจ์ฌ ๊ฒฝ์ ์ ์ด๋ผ๋ ๊ฒ์ ์ค๊ณ์๋ค์ด ์๊ฒ๋ฉ๋๋ค.
Data IN, Data Out๋ง ์์ด๋ Chip์ ๊ธฐ๋ณธ Function mode๋ ๋์ ํ๊ฒ ์ง๋ง, ํ ์คํ ์ ์ํด์ SCAN Input signal๊ณผ SCAN Multiplexer๋ฅผ ๋ฃ์ด์ Chip์ Test mode๋ฅผ ๋ง๋ค์ด์ฃผ๋๊ฒ๋๋ค.
โ
โ
๊ธฐ๋ณธ ๊ฐ๋ ์ ์ด๋ ๊ณ , Digital chip์ ํญ์ Initialize๋ฅผ ํด์ค์ผํ๋, TAP Reset Pin์ด ์์ต๋๋ค.
1) Test Reset (TRST)
2) ๊ฐ๊ฐ์ ๋๋ฐ์ด์ค๋ ์ฃผ์ ์ ๋ ฅ๊ณผ ์ฃผ์ ์ถ๋ ฅ ํ๋ง๋ค 1๊ฐ์ boundary-scan cell์ด ์์นํ๋ฉฐ,
์ง๋ ฌ boundary-sacn ๋ ์ง์คํฐ (Boundary Scan)๊ฐ ๋ด๋ถ์ ์ผ๋ก ์ฐ๊ฒฐ๋์ด์์ต๋๋ค.
3) TAP Controller(์ ์ด๊ธฐ)๋ TCK, TMS ๊ทธ๋ฆฌ๊ณ TRST*๋ฅผ ๊ฐ๋ FSM ์ ๋๋ค.
โ
โ
์์ ๊ทธ๋ฆผ์์ Instruction Register, Bypass, Boundary-Scan, Identification, Internal Register์ ์ฐ๊ฒฐ ์ํ๋ฅผ ๋ณด์๋ฉด ์ ์ ์์ต๋๋ค.
Instruction Register์ ๊ฐ์ ๋ฐ๋ผ Data register์ ์ถ๋ ฅ ๊ฐ์ด ์ ํ๋์ด์ง๋๋ค.
โ
์๋๋ JTAG์ ํ์ Command์ ๋๋ค.
[ EXTEST, BYPASS, SAMPLE, PRELOAD ]
โ
โ
TAP Controller : TAP ์ปจํธ๋กค๋ฌ๋ TAP์ ๋์์ ์ ์ดํ๊ณ ๊ด๋ฆฌํฉ๋๋ค. TAP ์ปจํธ๋กค๋ฌ๋ ํ ์คํธ ๋ชจ๋์ ๋ ธ๋ฉ ๋ชจ๋ ๊ฐ์ ์ ํ, ํ ์คํธ ๋ฐ์ดํฐ์ ์ ํ๋ง ๋ฐ ์ ์ก, ๋ ์ง์คํฐ ์ ๊ทผ ๋ฑ์ ๊ธฐ๋ฅ์ ์ ์ดํฉ๋๋ค.
โ
Boundary-Scan Register: ์๋ฆฌ์ผ ์ค์บ์ฒด์ธ ์ ์ฒด๋ฅผ ์ค์บํ์ฌ ํ๋ก ์ฐ๊ฒฐ ์ค๋ฅ๋ฅผ ๊ฒ์ถํ๊ฑฐ๋ ๋๋ฐ์ด์ค์ ์ํ๋ฅผ ํ ์คํธํ ์ ์๊ฒ ํด์ค๋๋ค. ์ด๋ฅผ ํตํด ํ๋ก ๋ณด๋์ ๊ฒฐํจ์ ๊ฐ์งํ ์ ์์ต๋๋ค.
โ
Instruction Register (IR) ๋ฐ Data Register (DR): Instruction Register์ Data Register๋ ๋๋ฐ์ด์ค ๋ด๋ถ ๋ ์ง์คํฐ์ ์ ๊ทผํ ์ ์๋๋ก ํด์ฃผ๋ ๋ ์ง์คํฐ์ ๋๋ค. Instruction Register๋ ํน์ ๋ช ๋ น์ ๋ด๋ฆด ๋ ์ฌ์ฉ๋๋ฉฐ, Data Register๋ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ฑฐ๋ ์ธ ๋ ์ฌ์ฉ๋ฉ๋๋ค.