Міністерство освіти і науки України
Національний університет „Львівська політехніка”
Кафедра ЕОМ
Звіт
з лабораторної роботи № 2
на тему:
„Тестування OЗП”
Підготував: ст. гр. СКС-52
Цигилик Л. О.
Прийняв: Власенко С.О.
Львів 2006
Мета роботи: ознайомлення з загальною схемою тестування цифрової техніки. Засвоєння методів та засобів тестування цифрових схем із пам’яттю на прикладі оперативного запам’ятовуючого пристрою (ОЗП). Необхідно розробити програму тестування ОЗП, за результатами тестування ОЗП визначити несправні виводи та біти ОЗП, а також тип несправності (обрив, закоротка).
Короткі теоретичні відомості:
Особливості тестування схем з пам'яттю (на прикладі ОЗП).
Вихід цифрового вузла з пам’яттю залежить як від стану його входів у даний момент часу, так і від їхнього стану у попередні моменти часу. Ця обставина значно ускладнює тестування таких вузлів у порівнянні з комбінаційними схемами, оскільки реакція на тестовий набір з'являється на виході вузла з значною затримкою у часі і ця затримка залежить від функції і внутрішньої структури вузла. До вузлів з пам'яттю можна віднести вузли оперативний запам'ятовуючий пристрій (ОЗП), цифрові автомати та інші.
ОЗП (рис.1) має такі групові входи:
адреси (A);
вхідних даних (DI - Data Input),
а також входи
дозволу видачі інформації на вихід (OE - Output Enable);
запису (WR) ;
читання (RD);
вхід, який забезпечує нарощування об'єму ПЗП (CS - Chip Select),.
ОЗП має груповий вихід даних DO - Data Output.
Основні кількісні характеристики ОЗП:
кількість слів N = 2n;
об’єм пам’яті V = m*N = m*2n біт.
Перевірка ОЗП складається з кількох етапів. Спочатку перевіряється, що інформація доходить до входів мікросхем ОЗП і знімається з виходів (це перевіряється так званими тестами шини адреси та шини даних). У цих тестах задіяні тільки деякі комірки (біти) запам’ятовуючого масиву мікросхем пам’яті. На другому етапі перевіряється відсутнсть помилок у всьому запам’ятовуючому масиві мікросхем ОЗП – перевіряються усі його комірки (біти). Це так званий тест на збереження інформації.
Кожна перевірка ОЗП складається з рознесених у часі циклів запису інформації до ОЗП (коли на ОЗП подається тестова послідовність сигналів) і циклів читання інформації з ОЗП (коли власне на виході даних ОЗП з’являється результат його роботи).
Основна мета теста шини даних - пересвідчитися, що немає закороток і обривів на шині даних. Для цього обирається одна фіксована адреса ОЗП, наприкалад 0, і послідовно записується до неї і зчитується з неї одна з тестових послідовністей кодів. Такий тест вимагає проведення m циклів запису до ОЗП і m циклів читання з ОЗП.
Основна мета теста шини адреси - пересвідчитися, що немає закороток і обривів на шині адреси. Для цього обирається група фіксованих адрес, наприклад, адреси, серед розрядів яких є тільки по одній одиниці - група адрес з біжучою одиницею.
Далі виконується перевірка за таким алгоритмом (рис. 2):
а) за всіма адресами цієї групи записують фіксовану інформацію - "фон" (наприклад, двійкові нулі 0..0);
б) за першою адресою групи записують протилежну фону інформацію ("не фон" – наприклад, двійкові одиниці 1..1);
в) перевіряють наявність фону у решті адрес групи;
г) якщо фон за всіма адресами не змінився, відновлюють фон у комірці, де був записаний "не фон". Якщо фон десь змінився, то це ознака помилки;
д) записують "не фон" до наступної адреси групи і повторюють виконання пукнтів в і г, доки "не фон" не буде послідовно прописаний за всіма адресами групи.
Такий тест шини адреси вимагає проведення 2*n циклів запису до ОЗП і n2 циклів читання з ОЗП.
Оскільки при перевірках шини адреси і шини даних задіяні лише деякі адреси пам'яті, то слід перевірити доступність даних до кожного біта пам'яті. Для цього виконується перевірка на збереження інформації:
а) за всіма адресами пам'яті прописують двійкові нулі 0..0;
б) перевіряють, що за всіма адресами пам'яті прописані 0..0. Якщо десь з'являється 1 - це ознака помилки.
в) за всіма адресами пам'яті прописують двійкові одиниці 1..1;
б) перевіряють, що за всіма адресами пам'яті прописані 1..1. Якщо десь з'являється 0 - це ознака помилки.
У цьому тесті запис даних до пам’яті і перевірка вмістимого пам’яті можуть бути суміщені. Наприклад, перед записом до якоїсь комірки двійкових одиниць 1..1 робиться перевірка вмістимого цієї комірки (цикл читання з неї). При нормальній роботі там повинні бути двійкові 0.
Такий тест збереження інформації вимагає проведення 2n+1 циклів запису до ОЗП і 2n+1 циклів читання з ОЗП.
Перевірка РПЗП ні чим суттєвим не відрізняється від перевірки ОЗП, але треба пам'ятати, що кількість циклів запису до РПЗП (як правило) обмежена, і часте тестування РПЗП як ОЗП недопустиме. Обмежене тестування РПЗП - як ПЗП (за контрольними сумами) може виконуватися практично без обмежень.
ХІД РОБОТИ:
У даній роботі використовується еталон (MEMET) у вигляді працездатного повного аналога пристрою, що перевіряється (MEMii). По входах еталонний пристрій і досліджуваний запаралелені, тобто на них подається однакова інформація. А їхні виходи заведені на компаратор. Ознакою помилки є незбігання стану виходів еталонного пристрою і досліджуваного.
Робоче місце моделюється за допомогою пакета Foundation Series v2.1i ф.Xilinx, призначеного для проектування програмованих логічних інтегральних схем (ПЛІС)
Структурно модель робочого місця (SAND2.SCH) складається з:
досліджуваного пристрою (вузол D1 MEMii);
еталонного пристрою (вузол D16 MEMET);
стенда;
Досліджуваний пристрій - це вузол оперативної пам’яті (елемент MEMii, повний опис його роботи знаходиться у файлі MEMET.ABL, нижче наведений його текст з коментарями на мові опису архітектури ABEL).
Умовне графічне позначення ОЗП наведене на рис. 1.
Стенд SAND2.SCH складається з:
зовнішнього генератора тестових послідовностей та еталонних результатів (файл SIMUL.CMD);
схеми порівняння еталонних результатів та реальних (елемент D17 COMP18);
вхідних та вихідних буферів.
Опис блоку ОЗП на мові ABEL
module MemEt
Title 'MemEt'
Declarations “ Визначення
“ Inputs / Outputs (перелік усіх входів та виходів і їх типів – комбінаційних або регістрових)
d7..d0 pin;
d= [d7..d0];
di7..di0 pin;
di= [di7..di0];
clk pin;
a3..a0 PIN;
a = [a3..a0];
wr PIN;
rd PIN;
cs PIN;
“ – перелік усіх внутрішніх сигналів елемента, які не виводяться назовні і їхніх типів –
“ комбінаційних або регістрових
rd0 node;
rd1 node;
rd2 node;
rd3 node;
rd4 node;
rd5 node;
rd6 node;
rd7 node;
rd8 node;
rd9 node;
rd10 node;
rd11 node;
rd12 node;
rd13 node;
rd14 node;
rd15 node;
wr0 node;
wr1 node;
wr2 node;
wr3 node;
wr4 node;
wr5 node;
wr6 node;
wr7 node;
wr8 node;
wr9 node;
wr10 node;
wr11 node;
wr12 node;
wr13 node;
wr14 node;
wr15 node;
w7..w0 node istype 'reg';
w15..w8 node istype 'reg';
w23..w16 node istype 'reg';
w31..w24 node istype 'reg';
w39..w32 node istype 'reg';
w47..w40 node istype 'reg';
w55..w48 node istype 'reg';
w63..w56 node istype 'reg';
w71..w64 node istype 'reg';
w79..w72 node istype 'reg';
w87..w80 node istype 'reg';
w95..w88 node istype 'reg';
w103..w96 node istype 'reg';
w111..w104 node istype 'reg';
w119..w112 node istype 'reg';
w127..w120 node istype 'reg';
“ Визначення внутрішніх регістрів
ww0=[w7..w0] ;
ww1=[w15..w8];
ww2=[w23..w16];
ww3=[w31..w24];
ww4=[w39..w32];
ww5=[w47..w40];
ww6=[w55..w48];
ww7=[w63..w56];
ww8=[w71..w64];
ww9=[w79..w72];
ww10=[w87..w80];
ww11=[w95..w88];
ww12=[w103..w96];
ww13=[w111..w104];
ww14=[w119..w112];
ww15=[w127..w120];
aa=[a3..a0];
Equations “ рівння, які визначають роботу елемента
[ww0,ww1,ww2,ww3,ww4,ww5,ww6,ww7,ww8,ww9,ww10,ww11,ww12,ww13,ww14,ww15].clk = clk & wr;
rd0 = cs & rd & (aa==0);
rd1 = cs & rd & (aa==1);
rd2 = cs & rd & (aa==2);
rd3 = cs & rd & (aa==3);
rd4 = cs & rd & (aa==4);
rd5 = cs & rd & (aa==5);
rd6 = cs & rd & (aa==6);
rd7 = cs & rd & (aa==7);
rd8 = cs & rd & (aa==8);
rd9 = cs & rd & (aa==9);
rd10 = cs & rd & (aa==10);
rd11 = cs & rd & (aa==11);
rd12 = cs & rd & (aa==12);
rd13 = cs & rd & (aa==13);
rd14 = cs & rd & (aa==14);
rd15 = cs & rd & (aa==15);
wr0 = cs & wr & (aa==0);
wr1 = cs & wr & (aa==1);
wr2 = cs & wr & (aa==2);
wr3 = cs & wr & (aa==3);
wr4 = cs & wr & (aa==4);
wr5 = cs & wr & (aa==5);
wr6 = cs & wr & (aa==6);
wr7 = cs & wr & (aa==7);
wr8 = cs & wr & (aa==8);
wr9 = cs & wr & (aa==9);
wr10 = cs & wr & (aa==10);
wr11 = cs & wr & (aa==11);
wr12 = cs & wr & (aa==12);
wr13 = cs & wr & (aa==13);
wr14 = cs & wr & (aa==14);
wr15 = cs & wr & (aa==15);
when rd0 then d=ww0 else
when rd1 then d=ww1 else
when rd2 then d=ww2 else
when rd3 then d=ww3 else
when rd4 then d=ww4 else
when rd5 then d=ww5 else
when rd6 then d=ww6 else
when rd7 then d=ww7 else
when rd8 then d=ww8 else
when rd9 then d=ww9 else
when rd10 then d=ww10 else
when rd11 then d=ww11 else
when rd12 then d=ww12 else
when rd13 then d=ww13 else
when rd14 then d=ww14 else
when rd15 then d=ww15 else
d=.x.;
when wr0 then ww0:=di else ww0:=ww0;
when wr1 then ww1:=di else ww1:=ww1;
when wr2 then ww2:=di else ww2:=ww2;
when wr3 then ww3:=di else ww3:=ww3;
when wr4 then ww4:=di else ww4:=ww4;
when wr5 then ww5:=di else ww5:=ww5;
when wr6 then ww6:=di else ww6:=ww6;
when wr7 then ww7:=di else ww7:=ww7;
when wr8 then ww8:=di else ww8:=ww8;
when wr9 then ww9:=di else ww9:=ww9;
when wr10 then ww10:=di else ww10:=ww10;
when wr11 then ww11:=di else ww11:=ww11;
when wr12 then ww12:=di else ww12:=ww12;
when wr13 then ww13:=di else ww13:=ww13;
when wr14 then ww14:=di else ww14:=ww14;
when wr15 then ww15:=di else ww15:=ww15;
test_vectors “ вхідні тестові набори і еталонні вихідні набори для перевірки правильності
“ опису вузла на мові ABEL
([clk, wr , cs , rd , aa , di ] -> [rd0 , rd1 , wr0 , wr1 , ww0 ,ww1 ])
[.c., 1 , 1 , 0 , 0 , ^haa ] -> [0 , 0 , 1 , 0 , ^haa ,.x. ];
test_vectors
([clk, wr , cs , rd , aa ] -> [rd0 , rd1 , wr0 , wr1 , d , ww0 , ww1])
[.c., 0 , 1 , 1 , 0 ] -> [1 , 0 , 0 , 0 , ^haa , ^haa, .x.];
end MemEt
1. Моделювання схеми (рис.3), яка містить лише справні елементи. Перш за все визначаємо, чи коректно надходять дані на входи схеми, тобто виконується перевірка шинних структур даних та адрес ОЗП Використання тестової послідовності „хвиля 1”.
Командний файл має для перевірки шини даних:
delete_signals
restart
set_mode functional
vector DBI DBI[7:0]
vector BO BO[7:0]
vector ET_BO ET_BO[7:0]
vector A A[3:0]
AFTER 0ns DO (assign A d\h;assign DBI 00\h;assign cs 1;assign rd 0;assign wr 1)
AFTER 20ns DO (assign A d\h;assign cs 1;assign rd 1;assign wr 0;assign ET_BO 00\h)
AFTER 40ns DO (assign A d\h;assign DBI 01\h;assign rd 0;assign wr 1)
AFTER 60ns DO (assign A d\h;assign rd 1;assign wr 0;assign ET_BO 01\h)
AFTER 80ns DO (assign A d\h;assign DBI 03\h;assign rd 0;assign wr 1)
AFTER 100ns DO (assign A d\h;assign rd 1;assign wr 0;assign ET_BO 03\h)
AFTER 120ns DO (assign A d\h;assign DBI 07\h;assign rd 0;assign wr 1)
AFTER 140ns DO (assign A d\h;assign rd 1;assign wr 0;assign ET_BO 07\h)
AFTER 160ns DO (assign A d\h;assign DBI 0f\h;assign rd 0;assign wr 1)
AFTER 180ns DO (assign A d\h;assign rd 1;assign wr 0;assign ET_BO 0f\h)
AFTER 200ns DO (assign A d\h;assign DBI 1f\h;assign rd 0;assign wr 1)
AFTER 220ns DO (assign A d\h;assign rd 1;assign wr 0;assign ET_BO 1f\h)
AFTER 240ns DO (assign A d\h;assign DBI 3f\h;assign rd 0;assign wr 1)
AFTER 260ns DO (assign A d\h;assign rd 1;assign wr 0;assign ET_BO 3f\h)
AFTER 280ns DO (assign A d\h;assign DBI 7f\h;assign rd 0;assign wr 1)
AFTER 300ns DO (assign A d\h;assign rd 1;assign wr 0;assign ET_BO 7f\h)
AFTER 320ns DO (assign A d\h;assign DBI ff\h;assign rd 0;assign wr 1)
AFTER 340ns DO (assign A d\h;assign rd 1;assign wr 0;assign ET_BO ff\h)
wfm clk @0ns=0 (10ns=1 10ns=0)*40
watch A DBI ET_BO BO cs rd wr err
sim 1000ns
Результати модулювання для справної схеми:
Командний файл має для перевірки шини адреси (використовуються адреси 0000, 0001, 0010, 0100, 1000):
delete_signals
restart
set_mode functional
vector DBI DBI[7:0]
vector BO BO[7:0]
vector ET_BO ET_BO[7:0]
vector A A[3:0]
AFTER 0ns DO (assign A 0\h;assign DBI 00\h;assign cs 1;assign rd 0;assign wr 1;assign ET_BO 00\h)
AFTER 20ns DO (assign A 1\h)
AFTER 40ns DO (assign A 2\h)
AFTER 60ns DO (assign A 4\h)
AFTER 80ns DO (assign A 8\h)
AFTER 100ns DO (assign A 0\h;assign DBI ff\h)
AFTER 120ns DO (assign A 1\h;assign rd 1;assign wr 0)
AFTER 140ns DO (assign A 2\h)
AFTER 160ns DO (assign A 4\h)
AFTER 180ns DO (assign A 8\h)
AFTER 200ns DO (assign A 0\h;assign DBI 00\h;assign rd 0;assign wr 1)
AFTER 220ns DO (assign A 1\h;assign DBI ff\h)
AFTER 240ns DO (assign A 0\h;assign rd 1;assign wr 0)
AFTER 260ns DO (assign A 2\h)
AFTER 280ns DO (assign A 4\h)
AFTER 300ns DO (assign A 8\h)
AFTER 320ns DO (assign A 1\h;assign DBI 00\h;assign rd 0;assign wr 1)
AFTER 340ns DO (assign A 2\h;assign DBI ff\h)
AFTER 360ns DO (assign A 0\h;assign rd 1;assign wr 0)
AFTER 380ns DO (assign A 1\h)
AFTER 400ns DO (assign A 4\h)
AFTER 420ns DO (assign A 8\h)
AFTER 440ns DO (assign A 2\h;assign DBI 00\h;assign rd 0;assign wr 1)
AFTER 460ns DO (assign A 4\h;assign DBI ff\h)
AFTER 480ns DO (assign A 0\h;assign rd 1;assign wr 0)
AFTER 500ns DO (assign A 1\h)
AFTER 520ns DO (assign A 2\h)
AFTER 540ns DO (assign A 8\h)
AFTER 560ns DO (assign A 4\h;assign DBI 00\h;assign rd 0;assign wr 1)
AFTER 580ns DO (assign A 8\h;assign DBI ff\h)
AFTER 600ns DO (assign A 0\h;assign rd 1;assign wr 0)
AFTER 620ns DO (assign A 1\h)
AFTER 640ns DO (assign A 2\h)
AFTER 660ns DO (assign A 4\h)
wfm clk @0ns=0 (10ns=1 10ns=0)*40
watch A DBI ET_BO BO cs rd wr err
sim 1000ns
Результати модулювання для справної схеми:
Командний файл має для перевірки збереження інформації:
delete_signals
restart
set_mode functional
|set_mode timing
vector DBI DBI[7:0]
vector BO BO[7:0]
vector ET_BO ET_BO[7:0]
vector A A[3:0]
AFTER 0ns DO (assign A 0\h;assign DBI 00\h;assign cs 1;assign rd 0;assign wr 1)
AFTER 20ns DO (assign A 1\h)
AFTER 40ns DO (assign A 2\h)
AFTER 60ns DO (assign A 3\h)
AFTER 80ns DO (assign A 4\h)
AFTER 100ns DO (assign A 5\h)
AFTER 120ns DO (assign A 6\h)
AFTER 140ns DO (assign A 7\h)
AFTER 160ns DO (assign A 8\h)
AFTER 180ns DO (assign A 9\h)
AFTER 200ns DO (assign A a\h)
AFTER 220ns DO (assign A b\h)
AFTER 240ns DO (assign A c\h)
AFTER 260ns DO (assign A d\h)
AFTER 280ns DO (assign A e\h)
AFTER 300ns DO (assign A f\h)
AFTER 320ns DO (assign A 0\h;assign rd 1;assign wr 0;assign ET_BO 00)
AFTER 340ns DO (assign A 1\h)
AFTER 360ns DO (assign A 2\h)
AFTER 380ns DO (assign A 3\h)
AFTER 400ns DO (assign A 4\h)
AFTER 420ns DO (assign A 5\h)
AFTER 440ns DO (assign A 6\h)
AFTER 460ns DO (assign A 7\h)
AFTER 480ns DO (assign A 8\h)
AFTER 500ns DO (assign A 9\h)
AFTER 520ns DO (assign A a\h)
AFTER 540ns DO (assign A b\h)
AFTER 560ns DO (assign A c\h)
AFTER 580ns DO (assign A d\h)
AFTER 600ns DO (assign A e\h)
AFTER 620ns DO (assign A f\h)
AFTER 640ns DO (assign A 0\h;assign DBI 11\h;assign rd 0;assign wr 1)
AFTER 660ns DO (assign A 1\h)
AFTER 680ns DO (assign A 2\h)
AFTER 700ns DO (assign A 3\h)
AFTER 720ns DO (assign A 4\h)
AFTER 740ns DO (assign A 5\h)
AFTER 760ns DO (assign A 6\h)
AFTER 780ns DO (assign A 7\h)
AFTER 800ns DO (assign A 8\h)
AFTER 820ns DO (assign A 9\h)
AFTER 840ns DO (assign A a\h)
AFTER 860ns DO (assign A b\h)
AFTER 880ns DO (assign A c\h)
AFTER 900ns DO (assign A d\h)
AFTER 920ns DO (assign A e\h)
AFTER 940ns DO (assign A f\h)
AFTER 960ns DO (assign A 0\h;assign rd 1;assign wr 0;assign ET_BO 11\h)
AFTER 980ns DO (assign A 1\h)
AFTER 1000ns DO (assign A 2\h)
AFTER 1020ns DO (assign A 3\h)
AFTER 1040ns DO (assign A 4\h)
AFTER 1060ns DO (assign A 5\h)
AFTER 1080ns DO (assign A 6\h)
AFTER 1100ns DO (assign A 7\h)
AFTER 1120ns DO (assign A 8\h)
AFTER 1140ns DO (assign A 9\h)
AFTER 1160ns DO (assign A a\h)
AFTER 1180ns DO (assign A b\h)
AFTER 1200ns DO (assign A c\h)
AFTER 1220ns DO (assign A d\h)
AFTER 1240ns DO (assign A e\h)
AFTER 1260ns DO (assign A f\h)
wfm clk @0ns=0 (10ns=1 10ns=0)*65
watch A DBI ET_BO BO cs rd wr err
sim 1300ns
Результати модулювання для справної схеми:
Як видно з результатів моделювання, помилка не виникла ні на одному з етапів моделювання.
2. Підстановка у схемі відповідного несправного елементу. Моделювання за допомогою відпрацьованих програмних файлів і одержання результатів:
перевірка шини даних :
Оскільки на даному етапі присутній високий сигнал помилки, то це означає, що на шині даних існує помилка, а причиною даної збійної ситуації є закоротка сигналів D1 і D2, причому рівень логічного нуля має більший пріоритет.
перевірка шини адреси:
Оскільки на даному етапі присутній високий сигнал помилки, то це означає, що на шині адреси виникла збійна ситуація.
перевірка збереження інформації :
Висновок: на лабораторній роботі ознайомився із загальною схемою тестування цифрової техніки, засвоїв методи та засоби тестування схем з пам’яттю на прикладі ОЗП, розробив програму тестування ОЗП, описав поведінку еталонного ОЗП (створив еталон), за результатами тестування ОЗП визначив несправні елементи досліджуваного пристрою, несправні контакти визначених елементів та тип несправності.