УДК 681.325:519.713
КУБИЧЕСКОЕ МОДЕЛИРОВАНИЕ НЕИСПРАВНОСТЕЙ ЦИФРОВЫХ СИСТЕМ НА ОСНОВЕ FPGA, CPLD
ХАХАНОВ В.И., КОВАЛЕВ Е.В.,
МАСУДМД. МЕХЕДИ, ХАК ХМ. ДЖАХИРУЛ
Предлагаются модели и методы анализа цифровых проектов для генерации тестов и моделирования неисправностей. Используется двухтактная кубическая алгебра для проектирования компактных кубических покрытий последовательностных примитивов, генерации тестов, моделирования неисправностей и исправного поведения цифровых схем. Проблемы тестирования цифровых устройств формализуются в виде линейных уравнений. Описывается кубический метод моделирования неисправностей примитива, который позволяет: транспортировать входные списки неисправностей на выходы примитива; генерировать аналитические уравнения для дедуктивного моделирования цифровых схем вентильного, функционального, алгоритмического уровней описания; строить компилятивные и интерпретативные симуляторы неисправностей цифровых схем. Предлагается метод генерации тестов для константных неисправностей, использующий кубические покрытия списков неисправностей для построения одномерного пути активизации.
1. Введение
Программируемые логические интегральные схемы (ПЛИС) — Field Programable Gate Array (FPGA), Complex Programable Logic Device (CPLD)—достойно конкурируют с базовыми матричными кристаллами, сигнальными процессорами. Такой успех определяется:
— использованием субмикронных технологий изготовления кристаллов, применением Hardware-Software Cooperation-Design;
— минимальным временем проектирования цифровой системы (4-5 месяцев);
— высоким быстродействием выполнения операций (до 500Мгц);
— большой степенью интеграции элементов на кристалле (до 3,5 млн.).
Вместе с преимуществами ПЛИС существуют и проблемы их тестирования, стимулирующие развитие таких методов, алгоритмов и программ, которые должны обеспечивать:
1) тестирование цифровых проектов большой размерности, вентильного, функционального алгоритмического уровней описания, заданных в форме графов переходов конечных автоматов, булевых уравнений, многоуровневых иерархических структур;
2) проектирование тестов в виде покрытия одномерных путей активизации для проверки одиночных константных неисправностей, с полнотой, близкой к 100%;
3) приемлемое быстродействие алгоритмов моделирования неисправностей для оценки качества тестов; построения алгоритмов поиска дефектов.
4) верификацию и диагностирование синтезированных цифровых устройств на основе FPGA, CPLD;
5) возможность параллельного выполнения векторных операций логического анализа для генерации тестов и оценки их качества;
6) поддержку стандарта VHDL для описания цифрового устройства и полученного теста;
7) возможность интегрирования в существующие системы автоматизированного проектирования ведущих фирм мира.
Теоретические источники работы: многозначная алгебра [ 1], двухтактная кубическая алгебра [2], дедуктивный метод моделирования неисправностей [3-6], методы генерации тестов [7].
Предпочтительным по быстродействию является дедуктивный метод моделирования неисправностей. Он позволяет за одну итерацию обработки схемы определить все константные дефекты, проверяемые на входном тестовом векторе. Но данный метод ориентирован на вентильный уровень описания цифровых схем. Это связано со сложностью решения проблемы генерирования выходных списков неисправностей (output fault list generation) для невентильных примитивов.
Предлагаемый метод кубического моделирования неисправностей позволяет обрабатывать цифровые схемы, описанные на вентильном, функциональном и алгоритмическом уровнях. Обратной стороной решения упомянутой проблемы является метод генерации тестов для константных неисправностей, использующий кубические покрытия примитивов для построения одномерного пути активизации.
2. Математический аппарат анализа примитива
Автоматная модель последовательностного примитива представляется в виде:
M=<X, Y, Z, f, g>,
где X=(X1,X2,...,Xi,...,Xm), Y=(Y1,Y2,...,Yi,...,Xh),
Z=(Zi,Z2,...,Zi,...,Zk) — множества входных, внутренних и выходных автоматных переменных, отношения между которыми описываются уравнениями:
Y(t)=f[X(t-1), X(t), Y(t-1), Z(t-1)];
Z(t)=g[X(t-1), X(t), Y(t-1), Y(t), Z(t-1)]. ( )
Переменные Z(t) отличаются от Y(t) тем, что первые наблюдаемы по выходным линиям, а Y(t) в этом смысле есть внутренние. Формат автоматных переменных для записи кубического покрытия, соответствующий (1), имеет следующий вид:
X(t -1) Y(t -1) Z(t -1)
X(t) Y(t) Z(t)
которому отвечает автоматная модель, изображенная на рис. 1.
64
РИ, 1999, № 4
Рис.1. Автоматная модель примитива
Функциональный последовательностный примитив задается компонентами:
F2 = <(t-1,t),(X,Z,Y),{A2}>,
где (t-1,t) — два автоматных соседних такта в описании функции; (X,Z,Y) — векторы входных, внутренних и выходных переменных; {A2} — двухтактный алфавит описания состояний (переходов) автоматных переменных [1,2]:
A2={Q=00,E=01,H=10J=11,O={Q,H},I={E,J},A={Q,E}, B={HJ},S={Q,J},P={E,H},C={E,H,J},F={Q,H,J},L={Q,EJ}, V={Q,E,H},Y={Q,E,H,J}, A1={0,1,X={0,1}}, 0 (U)}.
Примитив описывается кубическим покрытием
C = (C1, C2, Ci, ..., Cn),
где C, = (Ci1, Ci2, ..., Cij, ..., Ciq) — куб, включающий входные, внутренние, выходные координаты C, = (CiX, CiY, CiZ), q=m+h+k. Для комбинационного автомата формат описания кубического покрытия
F1 = <(t),(X,Z),{A1}>
определяется отношениями на (q=m+k)-мерном векторе переменных Q = (C,x, C,z). Формат задает многовыходовой комбинационный примитивный элемент с m входами и k выходами. Двоичная булева функция от m переменных Z=f(X1,X2,..., Xm) определяется при k= 1.
Пример 1. Преимущества двухтактного алфавита А2 демонстрируются на примере проектирования кубического покрытия CD-триггера. Исходное описание определено в виде таблицы переходов:
2. Итеративная минимизация полученного покрытия по правилу—два куба объединяются в один, если они отличаются по одной переменной.
3. Дополнение полученной модели примитива кубами описания возможных состязаний.
Применение данной процедуры к покрытию CD-триггера дает следующий результат:
ccd -
C D Q
H J I
Q Y J C D Q
E Y J H J I
J Y J = L Y J
HQ O H Q O
QY Q L Y Q
EY Q
JY Q
C D Q
H J I
LY S
HQ O
C D Q
H J I
L Y S
H Q O
H P X
В правое покрытие добавлен куб (HPX), который идентифицирует состязания при одновременном изменении сигналов на входах C и D. Полученное покрытие имеет только 12 символов, в то время как исходное содержит 48 координат.
Применение С-процедуры к таблице переходов двухразрядного счетчика еще более эффективно, чем для триггера. Процесс получения двухтактного покрытия счетчика представлен следующим выражением:
V C At _1 Bt-1 At Bt
0 X X X 0 0
1 E 0 0 0 1
1 E 0 1 0 0
1 E 1 0 1 1
1 E 1 1 1 0
1 F 0 0 0 0
1 F 0 1 0 1
1 F 1 0 1 0
1 F 1 1 1 1
V C AB
0 X 00
1 E Q E
1 E E H
1 E J E
1 E H H
1 F QQ
1 F QJ
1 F JQ
1 F JJ
V C A B
0 X 0 0
1 E S E
1 E P H
1 E S S
Минимальное покрытие счетчика, записанное в двухтактном алфавите, имеет всего 16 координат.
В общем случае размерность таблиц описания функции счета для n разрядов в одно- и двухтактном
CCD -
Ct-1 Ct Dt-1 Dt Qt-1 Qt
1 0 1 1 X 1
0 0 X X 1 1
0 1 X X 1 1
1 1 X X 1 1
1 0 0 0 X 0
0 0 X X 0 0
0 1 X X 0 0
1 1 X X 0 0
покрытии определяется отношением h
2
n
n
3. Формулировка проблем тестирования
Проблемы тестирования цифрового устройства (примитива) формулируются в условиях неопределенности одного из компонентов модели
W = (M, L, T),
Далее применяется С-процедура получения двухтактного кубического покрытия:
1. Выполнение координатной операции конкатенации (#):
Ct-i#Ct =
# 0 1 X
0 Q E A
1 H J B
X O I Y
для преобразования пары соседних во времени однотактных символов в один двухтактный.
где M — модель, представленная кубическим покрытием C=(Ci, C2, ..., Q, ..., Cn); L — кубическое покрытие списков неисправностей (КПСН) (Fault Lists Cubic Covering — FLCC); T — тест проверки неисправностей.
Покрытие неисправностей для примитива или цифровой схемы задается в виде:
L (Lb ..., Lb ..., LnX
РИ, 1999, № 4
65
где Li = (Lii, Lj2, Lij, Liq) — куб, включающий Пример 2. Для мультиплексора, описанного функ-
входные, внутренние, выходные координаты: L; =
(LX,L^,LZ), q=m+h+k; (L^,L?j) = {0, 1, X}; 0 -определяет вычитание (дополнение) списка Lj; 1 — задает пересечение Lj; X={0,1} — идентифицирует несущественность списка неисправностей Lj. Если
цией f (a, b, c) = ac v bc, КПСН для тестового набора T = (1010) определяется по формуле (2):
a b c d a b c d
0X0 0 1 X 1 0
T(1010) © Cmux 1 X 0 1 = L 0 X 1 1
X 0 1 0 X 0 0 0
X 1 1 1 X 1 0 1
(6)
LZr — выходная наблюдаемая переменная, то (0) 1 — есть идентификатор (не-) проверки неисправностей куба L; на выходе r, X={0,1} — задает неопределенное
состояние выходной координаты LZr, которое можно интерпретировать как 0, так и 1.
Здесь L — кубическое покрытие списков неисправностей, по которому можно записать дизъюнктивную нормальную форму (ДНФ) или теоретикомножественное уравнение для вычисления выходного списка дефектов на векторе (1010):
L = ac v bc = (c - a) u (b - c).
Проблема 1. Кубическое покрытие списков неисправностей L для вектора T и покрытия примитива С вычисляется по линейному уравнению
T © C = L , (2)
где © — бинарная координатная операция XOR, определяющая взаимодействие компонентов T, C (L) в троичном алфавите:
Tj © Cij =
© 0 1 X
0 0 1 X
1 1 0 X
X X X X
(3)
Универсальная формула анализа КПСН, полученного в результате применения (3) к тест-вектору Т и покрытию многовыходового примитива С для определения по выходу r списка проверяемых неисправностей Lr, имеет следующий вид:
L =
U П Ljj
Vi(Tr ®Cir =1)j=1
T, ®C,
'У
(4)
Tj ©Cij
где LjJ iJ
Lj ^tj®Cij = 1
L j ^ Tj © Cjj = 0,
Из (6) следует, что собственный список проверяемых входных одиночных константных неисправностей
мультиплексора представлен множеством L = {b1,c0}.
В общем случае для вычисления собственных неисправностей примитива применяется F-процедура:
1) терм ДНФ, имеющий более одной переменной без инверсии или все переменные с инверсией, вычеркивается;
2) оставшиеся термы должны иметь одну переменную без инверсии, которая формирует собственную
проверяемую неисправность jTj, инверсную состоянию координаты тест-вектора Tj.
Пример 3. Задано кубическое покрытие функции
С(Х2Хз V X1X2X3)
X1 X2 X3 Y
X 0 0 1
1 1 1 1
X 0 1 0
X 1 0 0
0 1 X 0
(7)
Списки идентификаторов неисправностей для трех входов определены подмножествами:
Lj — рассматривается как список дефектов, относящийся к линии j, который следует вычитать из неисправностей, проверяемых по невыходным линиям примитива; Lj — неисправности, которые необходимо пересекать с невыходными списками. Замечание. Если тест-вектор определен в троичном алфавите Tj = {0,1, X}, то после получения покрытия
списков неисправностей каждый куб Li следует верифицировать по правилу
L = L -Li ^ (Li © T ф Ci),i = ЇЯ (5)
Здесь и далее знак “—” эквивалентен теоретикомножественному вычитанию.
L1 = {1,2,4,5}; L2 = {1,2,3,6}; L3 = {1,3,4,7}. (8)
Определить выходной список неисправностей для тест-вектора 1111.
Решение сводится к выполнению © -операции между вектором T и покрытием С:
X1 X2 X3 Y X1 X2 X3 Y
X 0 0 1 X 1 1 0
T(1111) © С 1 X 1 0 1 1 1 0 = L 0 X 0 1 0 0 0 1
X 1 0 0 X 0 1 1
0 1 X 0 1 0 X 1
Далее по единичным значениям выхода Y в покрытии L записывается ДНФ (теоретико-множественное уравнение) проверяемых входных списков:
66
РИ, 1999, № 4
L = Х2Хз vX2X3 vXjX2 =
= (X2 -X3) u (X3 -X2) u (X! -X2).
1. Формирование кандидатов в тест Ttk є Tk путем выполнения операций над векторами из L1 ,С :
Подстановкой вместо переменных X; соответствующих списков L; получается следующий результат:
L = ({1,2,3,6}-{1,3,4,7}) и ({1,3,4,7} -
-{1,2,3,6}) и ({1,2,4,5}-{1,2,3,6}) = {2,4,5,6,7}. (10)
Проблема 2. Тест проверки дефектов примитива, задаваемых L1; -кубом покрытия списка неисправностей L = (l0,l\), определяется по уравнению
L ® С = Tk , (11)
L1 © С = Tk . (15)
2. Получение теста T (Tt є T) из множества кандидатов Tk на основе применения выражения (12).
3. Минимизация множества тест-векторов T путем выполнения операции поглощения:
T = T - Tr ^ Ti n Tr = Tr .
Пример 5. Построить тест проверки всех одиночных константных неисправностей для функции, заданной покрытием (7).
где L® ,L!i — кубы, имеющие нулевые или единичные значения на выходной координате г. При этом
определяются векторы-кандидаты в тест Ttk є Tk . Из
множества Tk формируется тест T, где в качестве элемента рассматривается набор Tt є T . Каждый Tt є T должен удовлетворять условиям:
Tt = Ci n Ttk ^ 3i(Ci n Ttk Ф<г>) . (12)
Пример 4. Для функции AND-NOT построить тест, проверяющий списки неисправностей, заданные кубом L(011).
Ниже приведена процедура получения теста на основе последовательного применения формул (11) и (12):
a b c a b c
Ц011) © CAN5 0 X X 0 1 1 ^k 0 X X 1 0 0
1 1 0 1 0 1
a b c
T 1 1 0
10 1
. (13)
В результате получены 2 набора, которые одномерно активизируют входную переменную b. Следовательно, тест является полным относительно проверки одиночных константных дефектов на линиях b, c.
Определение. Тест проверки одиночных константных неисправностей одновыходового примитива,
задаваемых L1 -покрытием списка дефектов
X1 X2 ”Xj. . Xm Z
1 0 ...0... 0 1
L1 = 0 1 ...0... 0 1
0 0 ...1... 1 1 , (14)
0 0 ...0... 1 1
определяется Т-процедурой:
Генерируется L1 -покрытие списка дефектов по аналогии с (14) и для строки L1- выполняется © -операция по (11):
X1 X2 X3 Y
X1 X2 X3 Y X 0 0 1
L1 1 0 0 1 © С 1 1 1 1
0 1 0 1 X 0 1 0
0 0 1 1 X 1 0 0
0 1 X 0
Tk(L-),i = 1,3.
- (16)
К полученным подмножествам кандидатов в тест:
Tk(L\) Tk(L12) Tk(L13)
X1 X2 X3 Y X1 X2 X3 Y X1 X2 X3 Y
X 0 0 0 X 1 0 0 X 0 1 0
0 1 1 0 1 0 1 0 1 10 0
X 0 1 1 X 1 1 1 X 00 1
X 1 0 1 X 0 0 1 X 11 1
1 1 X 1 0 0 X 1 0 1X 1
применяется процедура (12), которая определяет в данном случае уже минимальный тест, гарантированно проверяющий схемную структуру, которая соответствует двухуровневой реализации булевой функции (7):
X1 X2 X3 Y
0 1 1 0
1 1 X 1
X 1 0 0
1 0 1 0
X 1 1 1
X 0 0 1
0 0 X 1
X 0 1 0
1 1 0 0
X 0 0 1
X 1 1 1
(17)
Проблема 3. Определяет возможность верификации результатов, полученных при решении первых двух проблем
T © L = С . (18)
Необходимость данной процедуры связана с многочисленными ошибками, возникающими в процессе ручного или автоматизированного проектирования
РИ, 1999, № 4
67
тестов. Кроме того, согласно замечанию, решение проблемы 3 обязательно для верификации покрытия неисправностей при наличии в тесте символов X. Для полученных наборов (17) верификация путем выполнения операций l1; © T (L1i),i = 1,3, дает положительный результат:
X1 X2 X3 Y
0 1 1 0
1 1 X 1
X 1 0 0 X1 X2 X3 Y
X, X2 X3 Y 1 0 1 0 X 0 0 1
L1 1 0 0 1 © T X 1 1 1 = С 1 1 1 1
0 1 0 1 X 0 0 1 X 0 1 0
0 0 1 1 0 0 X 1 X 1 0 0
X 0 1 0 0 1 X 0
1 1 0 0
X 0 0 1
X 1 1 1
Это означает, что любой вектор L1; © T (L1;) є С является кубом исходного покрытия функции. Следовательно, тест проверки неисправностей не имеет ошибок проектирования.
4. Алгоритм кубического моделирования неисправностей комбинационных схем
На основе применения формулы (4) определяется алгоритм кубического дедуктивного моделирования неисправностей цифрового устройства:
1. Моделирование исправного поведения очередного
примитива P; (i = 1,M) на тест-векторе Tt(t = 1,N) .
Если! = N — формируется список L(T) проверенных неисправностей на тесте T. Конец моделирования.
Иначе, t < N — переход к п.2.
2. Если все элементы схемы обработаны (i = M), выполняется сравнение векторов исправных состояний линий в двух соседних итерациях. Если векторы
идентичны Tt = Tt , конец моделирования Tt и переход к п. 3. Иначе — переход к п. 1.
3. Определение списков неисправностей внешних входов в виде дополнения к их исправному состоянию Lj = {j •}.
4. Моделирование неисправностей примитива P; (i = 1,M) по процедуре (4). Дополнение полученного списка неисправностью выходной линии примитива, идентифицируемой в виде {jTj }.
5. Если (i = M), выполняется формирование списка проверяемых дефектов L(Tt), и переход к п.1. Иначе, i < M — переход к п. 4.
Быстродействие описанного выше алгоритма сквозного интерпретативного синхронного моделирования неисправностей для одной итерации имеет оценку
W = Х{ц; х п; х [(0,01 х Q)2 + 3] + 2}, i=1
где и;,ц; — число кубов и переменных в покрытии с; ; (0,01 х Q) — средняя длина списка неисправностей для каждой линии схемы; Q — общее число линий в цифровом устройстве.
Пример 6. Выполнить моделирование одиночных константных неисправностей схемы, представленной на рис.2.
Рис.2. Цифровой функциональный модуль
Поведение примитивов задается кубическими по-
крытиями:
C(F1)
1 2 5
1 3 7
5 6 8
"1 X 0"
0 1 1
0 0 0
C(F2)
2 1 36
X 0 0 1
1 1 1 1
X 0 1 0
X 1 0 0
0 1 X 0
C(F3)
8 6 7 4 9
X 0 0 X 1
X 1 0 1 1
0 1 1 X 1
X 0 1 X 0
1 X 1 X 0
X 1 0 0 0
Рассматриваются одиночные константные неисправности линий, идентифицируемые как jCT, где о = {0,1} —знак константной неисправности, j — номер линии схемы.
Для входного набора Т= 1111 моделируется исправное поведение объекта, которое дает вектор (111101011). Затем генерируется список входных
дефектов Lj = {j j} цифрового устройства:
L1 = {10};L2 = {20};L3 = {30};L4 = {40}.
Выполняется последовательная обработка всех элементов схемы для вычисления выходных списков неисправностей с учетом (4). Для первого примитива результат моделирования имеет вид
1 2 5 1 2 5
L5 = T(110) © CF1 1 X 0 1 0 1 = L 0 X 1 0 0 1
0 0 0 1 1 0
= L1 - L2 = {10}.
68
РИ, 1999, № 4
Затем к полученному списку следует прибавить неисправность выходной линии, которая инверсна по отношению к значению координаты тест-вектора.
В данном случае получается список L5 = {10,50}.
Последовательная обработка оставшихся примитивов в схеме дает следующие результаты:
т n0 2О з0 б0}. т {i0 7I}.
L6 = {1 ,2 ,3 ,6 }; L7 = {1 ,7 };
L8 = {10,20,30,51,60,80}; L9 = {10,40,71,90}.
Количество проверяемых дефектов F по q линиям формирует оценку качества теста (вектора):
Q = [F/(2 х q)] х 100%.
Для тест-вектора 1111 упомянутая оценка равна:
Q = [4/(2 х 9)] х 100%= 22 %.
5. Моделирование неисправностей в последовательностных примитивных элементах
Функциональная зависимость списка дефектов по наблюдаемому выходу Zr согласно (1) определяется уравнением
Lr = f [(T), (C), (L^1, Lx,Ly1, L*z1)], (19)
здесь Tt є T = (Tj,..., TtTp) — пара соседних входных
воздействий, где каждая координата определена в следующих сочетаниях:
Tt =
О 0 1 1 _0_ X X X
0’ 1’0’1’X’X’ 0 ’ 1 ’X
(20)
Двухфреймовый формат входного набора ориентирован на анализ последовательностного примитива, поскольку его покрытие в общем случае задано в двухтактном алфавите А2. Для технологичного выполнения операции XOR между координатами тествектора и кубического покрытия Ttj © Cij используется табл.1.
Каждая координата табл. 1 есть сокращенная форма записи списков неисправностей
Lj = Ttj ©C .
j j ij
Например, если Ttj = (01), Cj = P , то по входной координате j в соответствии с табл. 1 получается:
Ttj (01) © P{(01), (10)} = (L j L j) v (Lj_1Lj).
Таблица 1
© 0 1 X Z G T K N Q E H J O I A B S P C F L V Y
0 0 0 1 X Z G T K N Q E H J O I A B S P C F L V Y
0 1 1 0 X Z T G K N E Q J H I O A B P S F C V L Y
1 0 0 1 X Z G T K N H J Q E O I B A P S L V C F Y
1 1 1 0 X Z T G K N J H E Q I O B A S P V L F C Y
0 X X X X X G T K N A A B B Y Y A B Y Y B B A A Y
1 X X X X X T G K N B B A A Y Y B A Y Y A A B B Y
X 0 0 1 X Z X X X X O I O I O I Y Y Y Y I O I O Y
X 1 1 0 X Z X X X X I O I O I O Y Y Y Y O I O I Y
X X X X X X X X X X Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y
Таблица 2
0 X Z G T K N Q E H J O I A B S P C F L V Y
Z 1 Z G T Z Z G E T J Z 1 E J J/X E/X 1 J 1 E 1
существует различие интерпретации в зависимости от того, является ли выходная переменная функцией или аргументом к выходу, для которого строится список проверяемых неисправностей. В первом случае доопределение упомянутых символов дает (J, E), во втором — (X, X), что свидетельствует об отсутствии списков неисправностей для данного выхода в момент t-1.
Пример 7. Выполнить моделирование неисправностей на наборах 01, 11 SR -триггера (Q, N — прямой и инверсный выходы), представленного покрытием в двухфреймовом формате
Qt-1 Nt-1 SR Qt Nt
Процедура получения КПСН представлена следующим выражением:
T1
XX 0 1 1 0
S R Q N S R Q N
0 0 1 1 0 1 0 1
0 1 1 0 0 0 0 0
© CSR 1 0 0 1 = L 1 1 1 1
1 1 Q J 1 0 I I
1 1 J Q 1 0 O O
1 1 B B 1 0 Y Y
Последующее применение правила верификации (5) к покрытию L, вследствие наличия во входном наборе символов X, определяет результат в виде КПСН:
Табл. 2. предназначена для доопределения выходных координат куба покрытия списков неисправностей в
моменты (t-1, t). Например, для координаты Ly = V
ее значение в такте t-1 равно 0, а в момент t равно 1, что в табл.2 определяется буквой E. Исключение составляют преобразования символов S, P. Здесь
L
SR Q N S R Q N
01 0 1 0 0 1 1
00 11 0 0 1 1 . © Tj " X X = cL 0 1 1 0 1 0 0 1
10 I I [011 0 J SR 1 1 O I
10 O O 1 1 I O
10 Y Y 1 1 Y Y
РИ, 1999, № 4
69
Три последних куба в полученном не принад-
SR
лежат к исходному покрытию CgR , поэтому КПСН для триггера согласно (5) преобразуется к виду:
L(T2) - Ct-iCtDt_jDt v (Ctv Ct)Qt-i v Qt - Qt_i v Qt.
Пример 9. Определить списки проверяемых неисправностей счетчика на двух тест-векторах. Моделирование первого набора дает результат:
L
S R Q N
0 l 0 1
0 0 0 0
l l 1 1
Lq - SR v Qt - Qt;
Ln = SR v SR v Nt = R v Nt,
где инверсия переменной означает дополнение (вычитание) списка неисправностей.
С учетом выполнения F-процедуры получается, что в триггере на тест-векторе T=(0110) проверяются
собственные неисправности: L = {RO,qO,n}} .
Для входного набора T2
1 0
1110
T1
10 0 0 110 1
l~V C A B] [V C A B
0 X 0 0 l X 0 l
ф C ^ wcount 1 E S E = L 0 Q S Q
1 E P H 0 Q P J
1 F S S 0 C S P
La(T1) = VtCt _1CtAt _1Bt_1 v VtCt _1CtAt_1Bt_1 v
v Vt(Ct _i V Ct)At-i V At = At _1 v Bt_i v At; Lb(Ti) = Vt VVtCt_iCtBt_i V Vt(Ct_i V Ct)Bt_i V vBt = Vt vBt_i vCt_i vCt vBt;
L(T1) = Vt0 v C}_1 v C0 v A}_1 v В}_1 v A} v bO.
модеёирование неисправностей дает результат Результат моделирования второго набора имеет вид:
S R Q N S R Q N V C A В V C A B
0 0 1 l l l 0 l 0 X 0 0 l X 0 l
Г і 0І 0 l 1 0 l 0 0 0 T2 l l 0 l 10 0 1 C count 1 E S E = L 0 J S H
T2 © C™ l 0 0 l = L 0 l 1 l 1 E P H 0 J P E
l l l 0 l l Q J 0 0 J J 1 F S S 0 V S S
l l j Q 0 0 Q Q
l l B В 0 0 A В
La(T2) = VtCt _}CtAt _}Bt _i V VtCt _}Ct At _}Bt _i v
Поскольку входной набор — двоичный, верификация по правилу (5) отсутствует. ДНФ списков неисправностей имеет следующий вид:
Lq = SR v SRQt_}Nt_i v Qt;
Ln = SR v SR v SRQt_}Nt_} v Nt,
что означает проверку собственных неисправностей триггера: L = {R0,Q0,Nt}.
v Vt(C _i V Ct)At _i V At = At V At; Lb(T2) = Vt V VtCt_}CtBt_i V V Vt(Ct_1 V Ct)Bt_1 V Bt = Vt V Bt; L(T2) = Vt0 v A}v A} v BO.
Таким образом, проверяемые на выходах счетчика неисправности составляют множестваL(T}) и L(T2), где знак константной неисправности отмечен верх-
Пример 8. Определить списки проверяемых неисправностей CD-триггера на двух тест-векторах. Для первого набора получается результат:
Ti
1 0 X 0 0 0
C D Q C D Q
H J I Q J I
© CCD L Y S = L C Y Y
H Q O 0 Q O
H P X Q P X
l(t1) - Ct-lCtDt-lDtv Qt - Dt v Qt-
Для второго вектора процедура моделирования формирует следующие кубы и списки:
T2
0 0 0 0 l 0
C D Q C D Q
H J I H H I
© CCD L Y S = L L Y S
H Q O H E O
H P X H S X
ним индексом.
6. Заключение
Метод кубического моделирования неисправностей является новой технологией обработки цифровых схем табличного (вентильного, функционального, алгоритмического) уровня представления. Он позволяет за одну итерацию моделировать все одиночные константные неисправности цифрового устройства, проверяемые тест-вектором. Условие применения заключается в наличии табличной формы описания примитивов цифрового устройства. Предложенный метод также эффективно обрабатывает и последовательностные примитивы цифровых автоматов, описанные двухтактными кубическими покрытиями [2]. Последние формализуют описания алгоритмов в виде примитивов, соответствующих графам переходов, граф-схемам, таблицам переходов цифровых автоматов.
70
РИ, 1999, № 4
Предложенная технология тестирования по уравнению T © C = L дает возможность: моделировать неисправности на основе анализа кубического покрытия; получать дедуктивные формулы для любых типовых функциональных элементов; проектировать компилятивные симуляторы для обработки цифровых устройств произвольного уровня описания; генерировать тесты для цифровых систем на основе использования КПСН; верифицировать результаты моделирования неисправностей и генерации тестов, проектировать аппаратурные быстродействующие симуляторы.
Модели и методы реализованы в виде программных приложений. Последние используются при генерации тестов для проектов на основе FPGA и CPLD. Класс обрабатываемых структур: конечные автоматы, описанные в виде графов переходов, а также булевы уравнения с триггерными схемами. Входной язык описания цифровых систем—VHDL. Программы генерации тестов и моделирования неисправностей ориентированы на интеграцию в системы проектирования фирм: Aldec, Xilinx.
Время проектирования теста функционально зависит от квадрата суммарного объема кубических покрытий:
M 2
W(T) = [ X (n; х qi)]2.
i=1
Литература: 1. Hayes J.P. A systematic approach to multivalued digital simulation// ICCD-84: Proc. IEEE Int. Conf. Comput. 1984. No. 4. P. 177-182. 2. Хаханов В.И. Техническая диагностика элементов и узлов персональных компьютеров.К.: I3MH. 1997.308 с. 3. Ермилов В.А. Метод отбора существенных неисправностей для диагностики цифровых схем. Общие выражения для неисп-
равностей, возможных при эксперименте / / Автоматика и телемеханика, 1971, № 1. С. 159-167. 4. Armstrong D.B. A deductive mеthod of simulating faults in logic circuits. IEEE Trans. on Computers. Vol. C-21. No. 5. 1972. P. 464-471. 5. Биргер А.Г. Многозначное дедуктивное моделирование цифровых устройств // Автоматика и вычислительная техника. 1982. №4. С.77-82. 6. Levendel Y.H. andMenonP.R. Comparison of fault simulation methods — Treatment of unknown signal values.- Journal of digital system. 1980. Vol.4. P.443-459. 7. Abramovici M, Breuer M.A. and Friedman A.D., Digital System Testing and Testable Design, Computer Science Press, 1998. 652 p.
Поступила в редколлегию 25.12.99
Рецензент: д-р техн. наук Кривуля Г.Ф.
Хаханов Владимир Иванович, д-р техн. наук, профессор кафедры автоматизации проектирования вычислительной техники ХТУРЭ. Научные интересы: техническая диагностика вычислительных систем. Увлечения: баскетбол, футбол, горные лыжи. Адрес: Украина, 61166, Харьков, пр. Ленина, 14, тел. 40-93-26.
E-mail: [email protected]
Ковалев Евгений Викторович, аспирант кафедры автоматизации проектирования вычислительной техники ХТУРЭ. Научные интересы: техническая диагностика цифровых автоматов. Увлечения: иностранные языки. Адрес: Украина, 61166, Харьков, пр. Ленина, 14, тел. 4093-26. E-mail: [email protected]
Масуд Мд. Мехеди, аспирант кафедры автоматизации проектирования вычислительной техники ХТУРЭ. Научные интересы: техническая диагностика цифровых устройств. Увлечения: поэзия. Адрес: Украина, 61166, Харьков, пр. Ленина, 14, тел. 40-93-26.
Хак Х.М. Джахирул, аспирант кафедры автоматизации проектирования вычислительной техники ХТУРЭ. Научные интересы: техническая диагностика цифровых устройств. Увлечения: художественное фото. Адрес: Украина, 61166, Харьков, пр. Ленина, 14, тел. 40-93-26.
РИ, 1999, № 4
71