Граничне сканування

Граничне сканування (англ. Boundary Scan) — це метод тестування друкованих плат або груп елементів у мікросхемах. Граничне сканування також є популярним методом відлагодження, за допомогою якого можна спостерігати за станом контактів мікросхем.[1]

Історія появи[ред. | ред. код]

З середини 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)).

Слід зауважити, що перш ніж тестувати систему, необхідно перевірити справність тестера, тобто цілісність регістра зсуву та інших регістрів даних.

Необхідно розуміти, що Boundary-Scan є новим підходом до тестування систем в тому сенсі, що з розвитком технології надійність пристроїв стала набагато вищою, ніж надійність з'єднань між ними. Тому основним завданням такої архітектури, відповідно до стандарту IEEE 1149.1 є тестування міжз'єднань (перевірка наявності, розміщення і зв'язку з'єднаних компонентів, а також виявлення обривів з'єднань та замикань між пристроями).

Переваги технології Boundary-Scan[ред. | ред. код]

Переваги технології Boundary-Scan:

  • При сучасному рівні інтеграції ІС, витрати на реалізацію метода в середньому складають близько 2% площі кристала;
  • Забезпечує простоту управління конфігурацією складних систем, що включають дочірні плати, багатокристальні модулі і т.п.;
  • Дозволяє організовувати on-line тестування;
  • Забезпечує доступ до регістрів, шин, виходів;
  • Простий доступ до BIST можливостей пристроїв;
  • Полегшує тестування не пристосованих до сканування пристроїв, пам'яті.

Стандарт IEEE 1149.1[ред. | ред. код]

Стандарт IEEE 1149.1 прийнятий в 1990 році, а його вдосконалена версія IEEE 1149.1а - в 1993. У стандарт IEEE 1149.1 входить BSDL - Boundary Scan Description Language - мова опису організації та архітектури граничного сканування в рамках одиничної ВІС. Він побудований як підмножина мови VHDL. Одним з основних завдань, що покладаються на мову, є створенням програмних засобів, що автоматизують процес створення тестів. HSDL - Hierarchical Scan Description Language (розробка фірми Texas Instrument) - мова, орієнтована на опис потоків в групі ВІС, об'єднаних JTAG інтерфейсом. HSDL є розширенням мови BSDL, повністю з ним сумісним, входить до складу стандарту IEEE 1149.1а і побудований як підмножина мови VHDL.

Стандарт IEEE 1149.4 для тестової шини зі змішаними сигналами[ред. | ред. код]

Стандарт описує пристрій з наступними входами/виходами:

  • TDI: Test Data In (1149.1) - вхід тестових даних;
  • TMS: Test Mode Select (1149.1) - вибір тестового режиму;
  • TCK: Test Clock (1149.1) - тестова синхронізація;
  • TDO: Test Data Out (1149.1) - вихід тестових даних;
  • DBM: Digital Boundary Module - цифровий граничний модуль (елемент граничного сканування);
  • ABM: Analog Boundary Module - аналоговий граничний модуль;
  • Test Bus Interfase Cirquit - схема інтерфейсу тестової шини;
  • Test Access Port - тестовий порт доступу;
  • AT1: Analog Test 1 Stimulus Bus - шина, на яку подаються аналоговий тестовий сигнал впливу;
  • AT2: Analog Test 2 Response Bus - шина, з якої знімаються відгуки на аналогові тестові сигнали впливу;
  • Analog Test Access Port (= AT2 + AT1) - порт доступу аналогового тесту;
  • AB1: Analog Bus 1 - аналогова шина 1;
  • AB2; Analog Bus 2 - аналогова шина 2;

Група розробників даного стандарту була сформована в 1991 році, через рік після опублікування стандарту 1149.1. Їх мета - зробити можливим доступ до аналогових виходів змішаних (аналогово-цифрових) схем для того, щоб:

  1. подавати цифровий сигнал на вхід, спостерігати цифровий сигнал на виході;
  2. подати аналоговий сигнал на вхід, спостерігати аналоговий сигнал на виході.

У цифровому режимі, іменованому Dot 1 mode, ABM - аналогові елементи регістра граничного сканування приєднуються до аналогових входів і виходів. При подачі тестової послідовності на тестовий вхід TDI АВМ працюють в цифровому режимі. Вони пов'язані і разом приєднуються до цифрових елементів регістра граничного сканування (DBM), що підтримує стандарт IEEE 1149.1, для формування єдиного граничного регістра сканування, який оточує весь чип. У цьому випадку команда EXTEST (сканування міжз'єднань) працює як зазвичай, і використовує виходи АВМ для завдання цифрових сигналів впливу, а входи АВМ для захоплення результатів тестування.

В аналоговому режимі (Analog mode), можливо транспортувати аналогові тестові сигнали впливу (змінний/послідовний струм або напруга) з одного з двох зовнішніх виходів АТ1 на аналоговий вихід АВМ, і до приєднаних аналогових пристроїв. Реакції, що надходять на аналоговий вхід АВМ, можна просунути на інший зовнішній вихід АТ2, і далі через інші пристрої до зовнішнього вимірювального приладу. Таким чином можна відстежувати наявність, розміщення і зв'язок аналогових компонентів на платі.

На рівні плати АТ1 і АТ2 представлені, як 2-х провідникова аналогова шина.

По суті, стандарт 1149.4 можна розглядати як розширення (на 2 виходи) 1149.1 стандарту, що дозволяє пристосувати команду EXTEST до аналогових виходів, а також дає можливість виробляти додаткові аналогові вимірювання. В обох випадках метою експерименту є відстеження наявності, розміщення та зв'язку з'єднаних компонентів на платі, а також обривів і замикань на 1149.4-пристроях і, можливо, на приєднаних пристроях.

Стандарт IEEE 1149.4 Mixed-Signal Test Bus Standard був затверджений в липні 1999 року.

Стандарт IEEE Р1500 для тестування вбудованих ядер[ред. | ред. код]

Стандарт описує пристрій для тестування вбудованих ядер, щи складається з наступних частин:

  • TAM: Test Access Mechanism - механізм тестового доступу, визначеного користувачем (прямий, непрямий через мультиплексори, системні шини, тестові шини і т.д.) - вбудований в чип;
  • Sourse/Sink (джерело/приймач) - вбудований в чип або розміщений поза чипом;
  • Stimulus/Expected Response (тестові сигнали впливу/очікувані відгуки);
  • Core - «ядро»;
  • Wrapper - обгортки;
  • W|R - запис/зчитування;
  • Control - управління.

Система на кристалі (SOC - System-On-Chip або SOPC - System-On-Programmable-Chip або PSOC - Programmable System-On-Chip). Це пристрій з шинної структурою, що містить деяку кількість ядер - розроблених виробниками (legacy cores) або запозичених у зовнішніх постачальників (віртуальні компоненти - IP (Intellectual Property) cores), або й ті й інші - і яке також містить вбудовану пам'ять разом з визначеною користувачем сполучною логікою. Ядра можуть бути: «м'якими» («soft») - вбудовуваними та змінними; «твердими» («firm») - підключеними до вентилів, але все ж змінними; і «жорсткими» («hard») - зашитими в кристал (не вбудовується), що реалізують блоки, отримані методами проектування замовних схем.

Тестування таких пристроїв - «страхіття», якщо не подбати про забезпечення тестопригодності. Останнім часом проектувальники складних замовних мікропроцесорів (попередників SOC) використовували різноманітні структурні та ad hoc підходи для забезпечення тестопріодності, але такий неструктурований підхід не підходить для проектування спеціалізованих інтегральних схем, поза мікропроцесорної індустрії. Тому був потрібний більш структурований підхід до забезпечення SOC тестопригодності, і в 1995 році група розробників стандарту IEEE Р1500 заявила про цю проблему. Головне завдання розробників - визначення стандартних тестових структур, які могли б бути об'єднані в стандартних будівельних блоках SOC (ядра, пам'ять), щоб забезпечувати:

  • Тестування самого блоку, встановленого в пристрої;
  • Тестування структури з'єднань між блоками.

До того ж забезпечення стандартного опису тестів для ядер, тобто забезпечення тесту для ядер мовою опису.

У певному сенсі SOC-тестування аналогічно граничному тестуванню плат - «перевірка наявності, розміщення і зв'язку з'єднаних компонентів, а також виявлення обривів з'єднань та замикань між пристроями». Для SOC рівня слово «пристрій» замінюється словами «проектувальний модуль» або «ядро». Тобто можна адаптувати метод граничного сканування (IEEE 1149.1) для вирішення проблем тестування SOC. Однак, існує важлива відмінність.

На рівні плати, ми можемо робити припущення, що пристрій, встановлений на ній протестовано окремо перед встановленням, і немає необхідності перевіряти його працездатність з використанням засобів граничного сканування. У мові IEEE 1149.1 стандарту команда INTEST є необов'язковою.

На SOC рівні це припущення не вірно. Навіть модуль «жорсткого» ядра є «м'яким», поки нарощування кристала не завершено. Це означає, що будь-яка додаткова тестова структура повинна передбачати функціональну перевірку модуля нарівні з структурною (перевірку виробничого дефекту). Команда INTEST (для тестування функціонування) обов'язкова, так як ядра необхідно протестувати після їх додавання на кристал.

Тому група розробників стандарту IEEE Р1500 запропонувала багаторівневі структури граничного сканування дуже схожі на IEEE 1149.1 структури. Ці структури називаються wrappers (дослівно - обгортки) і підтримують внутрішньо- та зовнішньо-ядерні функції тестування, реалізовані за допомогою механізму тестового доступу (TAM - Test Access Mechanism). Сам TAM точно не визначений стандартом, але спосіб визначення тестів специфікований (детально викладений). Загалом, тести це комбінації векторів і протоколів (правил їх проходження). Рекомендується також використовувати інший стандарт для побудови тестів - IEEE 1450 Standard Test Interface Language (STIL) - (стандартна мова тестового інтерфейсу). Стандарт STIL був затверджений в 1999 році. Він присвячений проблемі проміжного формату для тестів, згенерованих за допомогою засобів автоматичної генерації тестових наборів, наприклад, для тестів, які повинні транспортуватися через середовище ATE (Automatic Test Equipment - автоматичне випробувальне обладнання).

IEEE Р1500 Стандарт Standard for Embedded Core Test збиралися прийняти в 2000.

Примітки[ред. | ред. код]

  1. Шкіль А. С. – Тестування та діагностика комп'ютерних систем та мереж: електронне навчальне видання