Граничне сканування () — це метод тестування друкованих плат або груп елементів у мікросхемах. Граничне сканування також є популярним методом відлагодження, за допомогою якого можна спостерігати за станом контактів мікросхем.Шкіль А. С. – Тестування та діагностика комп'ютерних систем та мереж: електронне навчальне видання
Історія появи З середини 70-х років структурне тестування друкованих плат ґрунтувалося на фізичному доступі до пристроїв та міжз'єднань на платі за допомогою так званого «ложа з цвяхів». З розвитком технології виготовлення друкованих плат, стали зменшуватися відстані між сусідніми мідними доріжками - стало більш ризиковано кожен раз класти плату на цвяхи. З'явилися двосторонні плати, і інженерам довелося прикладати цвяхи з двох сторін. Питання про фізичному доступі було вичерпано з появою багатошарових друкованих плат.
З такими проблемами зіткнулися в середині 80-х більшість виробників.
Для пошуку можливих рішень була створена група JTAG (Joint Test Action Group), яка за допомогою 200 провідних фірм протягом 5 років розробила стандарт Boundary Scan IEEE 1149.1 (IEEE - Institute of Electrical and Electronic Engineers).
Принцип роботи В основу методу покладено концепцію розміщення послідовного зсувного регістра по межах пристрою. Причому, самі комірки такого регістра розташовуються безпосередньо між первинними входами/виходами пристрою і логічним ядром. Таким чином, у пристрій буде додано 4 контакти: TDI (Test Data In - вхід тестових даних), TDO (Test Data Out - вихід тестових даних), TMS (Test Mode Select - вибір тестового режиму) і TCK (Test Clock - тестова синхронізація).
Сутність механізму сканування схожа з методом Scan Path. Однак, є суттєві відмінності. По-перше, логіка ядра може бути будь-якою, в тому числі містити послідовні структури (не потрібно розбивати пристрій на комбінаційну частину та пам'ять). По-друге, осередки сканування розташовуються як перед, так і після логіки.
Кілька пристроїв на платі можуть бути об'єднані в єдиний послідовний шлях сканування. Це можна зробити шляхом з'єднання TDO з TDI наступного пристрою. Таким чином, на платі з'являються також 4 додаткових виходи: TDI і TDO, і спільні для всіх пристроїв TCK і TMS.
Таким чином, технологія граничного сканування при відносно невеликих апаратних витратах дозволила реалізувати щось на кшталт «віртуальних цвяхів», що забезпечує не тільки 100% спостережуваність, але й 100% керованість входів/виходів пристроїв.
Структура пристрою, згідно зі стандартом IEEE 1149.1 Сам пристрій, що реалізує необхідні функції, поміщається в обрамлення з тестової логіки, яку складають: Набір з 4 обов'язкових тестових ніжок: TDI, TDO, TMS і TCK. Також можливе додавання ще однієї необов'язковою тестової ніжки - TR (Test Reset - скидання тестової логіки). Всі разом вони називаються TAP (Test Access Port - тестовий порт доступу). Елементи граничного сканування на кожній лінії первинного входу або виходу, з'єднані між собою, для того щоб організувати послідовний зсувний регістр. Однобітний регістр обходу (Bypass register). Необов'язковий 32-бітний ідентифікаційний регістр, з можливістю зберігання в ньому незмінного коду пристрою. Регістр команд (Instruction Register), в якому зберігається поточна команда. Розрядність регістра команд повинна бути більшою за або дорівнювати 2. TAP controller. По суті, це кінцевий керуючий автомат для тестової логіки.
Тестова логіка надає можливість вибирати шлях проходження даних від TDI до TDO: або через регістр команд (Instruction Register), або через регістр даних (Data Register). Регістром даних в кожен момент часу може бути один з наступних регістрів:
Послідовний зсувний регістр граничного сканування (Boundary-Scan register);
Будь-який внутрішній регістр, передбачений розробником пристрою (Internal register);
Регістр обходу (Bypass register);
Ідентифікаційний регістр (Identification register).
Регістр сканування Елементи граничного сканування (Boundary-Scan cells) поділяються на два типи: вхідні (розміщуються на тих первинних входах пристрою, де час критичний - наприклад, на вході синхронізації) і звичайні.
Сигнал проходить по лінії даних без затримок. Однак, там де це можливо на вхідних лініях, а також на всіх вихідних лініях розташовують звичайні елементи.
Розглядуваний елемент складається з двох D-тригерів, які працюють за прямим фронтом, двох мультиплексорів "2-в-1", чотирьох входів і двох виходів. Призначення структурних елементів схеми:
Data_In і Data_Out - вхід і вихід (відносно елемента) лінії даних, на яку ця ланка поміщена. (PI - parallel input, PO - parallel output).
Scan_In і Scan_Out - відповідно, вхід і вихід скановуваних даних (SI - serial scan input, SO - serial scan output). Тобто на SI дані приходять з SO попереднього елемента (або з TDI, якщо це перший елемент в ланцюжку), проходять через перший D-тригер і виходять на SO, щоб потрапити на SI наступного елемента (або на TDO, якщо це останній елемент в дорозі).
ShiftDR - визначає джерело інформації для першого D-тригера: Data_In (режим Capture) або Scan In (режим Shift).
Mode - визначає, що пропускати на лінію даних Data_Out: сигнал з Data_In (режим Normal) або сигнал з другого D-тригера (режим Update).
ClockDR - синхронізувальний вхід першого D-тригера, тобто для режимів Capture і Shift.
UpdateDR - синхронізувальний вхід другого D-тригера (режим Update)
Нижче наведена таблиця режимів функціонування осередку: Режим ShiftDR Mode Функціонування NORMAL - 0 PI → PO CAPTURE 0 - PI → SO по фронту на ClockDR SHIFT 1 - SI → SO по фронту на ClockDR UPDATE - 1 SO → PO по фронту на UpdateDR Шлях сканування TDI → SI1 → SO1 → ... → SOi-1 → SIi → SOi → SIi + 1 → ... → TDO фізично не перетинається з лініями даних PI → PO елементів граничного сканування. Таким чином, регістр граничного сканування є "прозорим" для самого пристрою. Для здійснення операцій сканування відсутня необхідність перемикатися в спеціальний тестовий режим. Вплив тестової логіки на функціонування пристрою зведено до мінімуму. На вхідних лініях затримка проходження сигналу може бути відсутньою взагалі, а на вихідних - дорівнює затримці вихідного мультиплексора (Output Mux).
Внутрішній регістр Внутрішній регістр (Internal register), передбачений розробником пристрою, наприклад, для зберігання результуючої сигнатури перевірки пристрою, якщо в ньому реалізовані засоби вбудованого самотестування.
Регістр обходу Регістр обходу (Bypass register) - простий, але дуже важливий елемент в даній архітектурі. Він створює найкоротший шлях між TDI і TDO, не зачіпаючи при цьому всі інші регістри. Необхідність такого регістра зумовлена раніше обговоренною можливістю з'єднання декількох пристроїв в послідовний шлях сканування. Якщо нам необхідно мати доступ не до всіх, а тільки до деяких пристроїв в ланцюжку, то інші пристрої встановлюються в режим Bypass, утворюючи мінімальні затримки проходження сканованих даних. Bypass register складається з одного мультиплексора "2 в 1" і одного D-тригера, синхронізованого переднім фронтом. Відсутній паралельний вихід даних (в зв'язку з чим, сигнал Update_DR відсутній в схемі), але є деяка особливість з операцією Capture - в регістр може записуватися апаратно реалізоване значення 0 (тобто проводиться захоплення значення 0).
Регістр ідентифікації Регістр ідентифікації (Identification register) - необов'язковий 32-битий регістр з режимами збору даних і зсуву (рис. 10.13). 32 біта ідентифікують пристрій через наступні поля: Біт 0 (молодший розряд) завжди дорівнює 1. Біти 1 - 11 ідентифікують фірму-виробника пристрою. Використується коротка форма коду ідентифікації JEDEC. Біти 12 - 27 забезпечують 16-бітове поле вільного формату з серійним номером пристрою. Біти 28 - 31 забезпечують 4-бітове поле вільного формату, щоб описати до 16 різних версій того ж основного пристрою.
Регістр команд Регістр команд (Instruction Register) складається з власне зсувного регістру, деякої декодуючої логіки (в залежності від кількості і типів реалізовуваних команд) та секції зберігання декодованої команди, одразу після надходження в яку команда переходить до виконання. Стандарт IEEE 1149.1, по-перше, прописує, що є тільки 3 обов'язкові команди, необхідні для функціонування апарату Boundary-Scan, а всі інші є необов'язковими (додатковими), по-друге, обов'язкові та додаткові команди в стандарті описуються тільки функціонально, а їх реалізація на апаратному рівні залишена повністю на розсуд розробника. Останнє, до речі, відноситься до всього тестового обрамлення пристрою.
Наступні три команди повинні обов'язково бути реалізовані тестової логікою: BYPASS (обхід) - команда, що встановлює Bypass register між TDI і TDO. Код команди - все одиниці (число розрядів регістра команд ≥2, тому для регістра мінімальної довжини код команди - 11). Режими Shift і Capture з «0». EXTEST (зовнішнє тестування) - команда, яка обирає зсувний регістр і призначена для тестування зовнішніх з'єднань між пристроями на платі. Режими Update (для елементів, що знаходяться на первинних виходах пристрою), Capture і Shift. Код команди - все нулі (00). Виконання команди передбачає відключення ядра кристала від зовнішніх контактів (Mode = 1). SAMPLE/PRELOAD (послідовність/попереднє завантаження) використовується для сканування значень сигналів, захоплених з зовнішніх контактів пристроїв у штатному режимі (паралельно виконанню звичайних функцій пристроїв), а також для завантаження в регістр сканування інформації, яка використовується далі для тестування зовнішніх з'єднань або інших функцій. Код команди не фіксований. Режими Capture і Shift. Виконання команди не передбачає відключення ядра кристала від зовнішніх контактів (Mode = 0).
TAP контролер TAP контролер (TAP controller) - незвичайний автомат. Він має вхід синхронізації TCK, вхід даних TMS та 16 внутрішніх станів. Також він має 9 виходів (3 - для управління регістром команд, 4 - для управління регістром даних і 2 - загального призначення). Причому перехід в якийсь стан активізується послідовністю двійкових сигналів на вході TMS.
Приклад використання архітектури Boundary-Scan Розглянемо приклад використання архітектури Boundary-Scan для тестування міжз'єднань. Нехай дана схема з 3-х пристроїв з BS-архітектурою, необхідно протестувати цілісність ліній між 2-м і 3-м пристроями. Послідовність дій складається з 3-х етапів:
Встановлюємо Instruction Register (IR), між TDI і TDO кожного пристрою. Це досягається за допомогою подачі певної послідовності на вхід TMS TAP контролерів. Припускаючи, що розмір IR = 2 біта, вводимо послідовність "110000". Це означає, що в IR 1-го пристрою буде завантажена коман-да BYPASS ("11"), а в IR 2-го і 3-го - команда EXTEST ("00").
Подаємо чергову послідовність на TMS, яка ініціює виконання завантажених команд. Таким чином, в 1-му пристрої між TDI і TDO буде включений регістр Bypass, а в двох інших - Boundary-Scan register. Після цього пристрою готові до виконання команди EXTEST. Фази виконання команди EXTEST: Shift - засувається вхідна тестова послідовність на Chip2 (SI→SO). Update - засунуті в осередку значення фіксуються на виходах Chip2 (SO→PO). Capture - відгук на тестову послідовність записується на Chip3 PI (Chip3) = PO (Chip2), PI (Chip3) → SO (Chip3). Shift - зсувається відгук з Chip3 (SI → SO) і одночасно засувається нова тестова послідовність на Chip2 і т.д...
Хоча EXTEST дозволяє проводити тестування без залучення яких би то додаткових команд, найчастіше вона використовується спільно з SAMPLE/PRELOAD, яка виконує роль команди, що завантажує інформацію в регістр сканування (в режимах Shift (SI→SO) або Capture (PI→SO)).
Слід зауважити, що перш ніж тестувати систему, необхідно перевірити справність тестера, тобто цілісність регістра зсуву та інших регістрів даних.