Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Скобцовы Моделирование и тестирование

.pdf
Скачиваний:
97
Добавлен:
03.03.2016
Размер:
3.61 Mб
Скачать

Занесение нового значения в текущий массив;

Запоминание номера контакта первого последователя; while(циклический список последователей не пуст)

{

Занесение элемента-последователя в очередь QJ;

}

while(очередь QJ не пуста)

{

Выбор элемента-последователя из очереди QJ;

Подготовка данных для моделирования элемента; if(элемент входит в текущую группу неисправностей)

{

внесение неисправностей на входах элемента;

}

моделирование_элемента(); /* цикл по выходным контактам */

while(есть необработанный выход элемента)

{

if(неисправность контакта входит в текущую группу) if(новое значение ≠ старому значению)

{

занесение события в очередь QJ;

}/* конец цикла по выходным контактам */

}/* конец цикла по событиям */

}

Рис.5.7. Алгоритм параллельного моделирования неисправностей

Существенным ограничением является то, что при параллельном методе моделирования функционирование логических элементов должно быть описано с помощью булевых функций. Это связано с тем, что основной выигрыш во времени при этом методе получается при выполнении логических операций, которые практически во всех

171

современных ЭВМ реализуются параллельно над всеми разрядами машинных слов. Если элемент описан на функциональном уровне,

например, с помощью ЯРП, то нужно каждую сложную функцию (или оператор) описать с помощью булевых функций. Так мы поступали с условным оператором If A THEN z<-X ELSE s<-Y, заменяя его булевой функцией s = AX AY . Аналогично можно описать и другие операторы или функции. Сложность модели при этом существенно увеличивается.

В параллельном методе любая неисправность моделируется на всех входных наборах теста. В благоприятном случае входной набор проверяет эту неисправность, в противном случае моделирование выполнялось вхолостую. Поскольку при параллельном методе связь между неис-

правностями и входными наборами не устанавливается, то эффективность моделирования недостаточно велика. С целью ее повышения разработаны методы, в которых для заданного входного набора находятся все неисправности, проверяемые этим набором. Одним из таких методов является дедуктивный метод моделирования неисправных ДУ.

5.3 Дедуктивный метод моделирования

Вспомним, что основная цель моделирования неисправных цифровых схем заключается в получении списков проверяемых и непроверяемых неисправностей на заданных входных воздействиях.

Данный метод работает непосредственно со списками неисправностей,

проверяемых на данном входном наборе. Метод основан на анализе логической зависимости значений сигналов на данном входном наборе от присутствия неисправностей.

5.3.1 Дедуктивное моделирование в двоичном алфавите

Сначала для каждого входного набора выполняется моделирование исправной схемы в двоичном алфавите. А далее для каждой линии схемы

(в том числе и внешних выходов) определяются списки неисправностей,

172

при которых значение сигнала меняется на противоположное. Поэтому здесь с каждой линией схемы связывается список неисправностей,

изменяющих значения сигналов на этом входе или выходе, как это показано на рис.5.8. Здесь малыми буквами обозначены переменные значений сигналов, а большими списки неисправностей, связанные с соответствующими линями.

A a=1

& f=0 F

Bb=1

Cc=0

Рис.5.8 Списки неисправностей вентиля

Каждый список содержит неисправности, которые дают значения сигналов на данной линии противоположные значениям сигналов в исправной схеме. Например, для a=0 список A содержит все неисправности схемы,

при которых a=1.

Основной проблемой в дедуктивном методе является получение списка неисправностей, связанного с выходом логического элемента, по спискам неисправностей его входов. При этом неисправности,

изменяющие значение выхода элемента, определяются по спискам неисправностей, изменяющих сигналы на его входах, с помощью специальных теоретико-множественных операций, определяемых законом функционирования данного элемента. Существенной особенностью дедуктивного метода является то, что в результате одного шага моделирования, который соответствует подаче данного тестового набора,

определяются все неисправности, проверяемые на этом наборе. Шаг моделирования при этом существенно удлиняется. Вычисления проводятся

173

только вдоль путей схемы, по которым распространяется влияние неисправностей.

Основной проблемой является получение теоретико-множественных формул для распространения списков неисправностей через вентиль. То есть, как по данным спискам неисправностей входов вентиля получить список неисправностей, связанный с его выходом. Рассмотрим логический элемент И (рис.5.8), на входах и выходах которого в исправной схеме на данном тестовом наборе устанавливаются определённые значения 0 или 1

(рассмотрим сначала моделирование в двоичном алфавите).

Рассмотрим первую типовую ситуацию. Пусть a=1, b=1, c=0 и f=0.

Тогда неправильное значение f=1 на выходе этого вентиля вызывает любая неисправность из списка С, которая не содержится в списках А и В.

Поэтому в данном случае при распространении списка неисправностей

через данный логический элемент имеем: F = C (A B) (здесь минус -

означает вычитание множеств F = C

(A B)

). Очевидно,

что к

полученному списку F необходимо добавить неисправность f 1

выхода

вентиля. Поэтому окончательное выражение для распространения списков неисправностей в этом случае имеет вид F = (C (A B)) f1.

Таблица 5.4

Тип

Значения входов

Список выхода

 

 

 

 

 

И, НЕ-И

I 0 =

F = UXi

 

 

 

 

 

 

I 0

F = IX i − IX j = IXi (

 

)

 

I X j

 

 

Xi I1 , X j I0

 

 

 

ИЛИ, НЕ-ИЛИ

I1=

F = UXi

 

 

 

 

 

 

I1

F = IX i − IX j = IXi (

 

)

 

I X j

 

 

Xi I1; X j I 0

 

 

 

НЕ

 

X1

 

 

 

 

 

174

Рассмотрим вторую типовую ситуацию для этого вентиля, при которой a=1, b=1, c=1, f=1. Очевидно, что в этом случае значение f=0

может вызвать любая неисправность из списков A, B, C и неисправность f ≡ 1. Поэтому получаем следующее теоретико-множественное правило для распространения неисправностей F = A B C f1. В табл.5.4 в

общем виде приведены правила распространения неисправностей для типовых вентилей в стандартных ситуациях. Здесь I 0 - множество входов вентиля, имеющих значение 0, I1 - множество входов вентиля, имеющих значение 1.

 

 

 

 

 

 

 

 

 

f 1

 

&

 

 

 

 

 

 

 

 

 

 

 

 

 

 

d

 

 

 

 

g

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

n

 

 

1

 

 

a 1

 

 

 

 

c

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

e

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

0

 

 

p

 

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

b 1

 

 

 

 

 

 

 

 

 

j

 

1

 

l

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

 

&

 

 

 

 

 

 

 

 

 

 

i 1

 

 

 

 

 

 

 

 

 

 

m

 

 

 

 

 

 

 

 

 

 

 

&

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

k

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

h 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис.5.9 Пример схемы для дедуктивного метода

С помощью полученных правил распространения списков неисправностей выполняется продвижение по схеме от входов к выходам.

Врезультате получается для внешних выходов общий список

неисправностей схемы, проверяемых на данном входном наборе.

Алгоритм продвижения в общих чертах аналогичен алгоритму событийного моделирования. Но при дедуктивном методе, в отличие от обычного моделирования, должны обрабатываться два вида событий:

175

1)изменение значений сигналов исправной схемы;

2)изменение списков неисправностей (причём оно может быть без изменения значений сигналов).

Рассмотрим данный метод на примере схемы, представленной на рис.5.9. Очевидно, что для внешних входов схемы связанные с ними списки неисправностей содержат по одной константной неисправности

(значения констант противоположны значениям внешних входов).

Поскольку мы моделируем схему на входном наборе a=1, b=1, d=0, i=1,

h=1, f=1, то получаем:

A = {a0}, B = {b0}, D = {d1}, I = {i0}, H = {h0}, F = {f0}.

Далее по приведенным выше теоретико-множественным правилам выполняем распространение списков неисправностей со входов схемы до ее внешнего выхода:

C = A B c1 = {a0 ,b0 ,c1};

E = D C e1 = {a0 ,b0 ,c1,d1,e1};

G = E g1 = {a0,b0, c1, d1, e1, g1};

J = E j1 = {a0,b0,c1, d1, e1, j1};

K = I H k1 = {i0, h0, k1};

L = J l0 = {a0,b0,c1, d1, e1, j1,l0};

M= (K - L) m1 ={i0, h0, k1, m1};

N= (G - F) n1 = {a0,b0,c1, d1, e1, g1, n1};

P = N M p1 = {a0,b0,c1, d1, e1, g1, n1,i0, h0, k1, m1, p1}.

Поскольку P является внешним выходом, то полученный список P

содержит все неисправности, проверяемые данным входным набором.

Мы уже говорили о том, что в дедуктивном методе используется событийное моделирование. Далее рассмотрим события, вызываемые изменением входа схемы h :1 0 . Прежде всего, изменяется список

H = {h1}. Это изменение вызывает следующие события:

176

k : 0 1, K = (H I ) k0 = {h1,k0};

m : 0 1, M = L K m0 = {a0,b0,c1, d1, e1, j1,l0 , h1,k0,m0};

p : 0 1,P = (M - N ) p0 = { h1, k0, m0,j1,l0, p0}.

Очевидно, выполнив эту процедуру для каждого входного набора, мы можем получить список неисправностей, проверяемых всей входной последовательностью, путём объединения списков неисправностей,

проверяемых на каждом входном наборе.

При дедуктивном методе моделирования длины списков переменные, изменяющиеся во времени и при продвижении по схеме. Это обстоятельство ведёт к большим затратам оперативной памяти. Но по быстродействию дедуктивный метод превосходит параллельный для больших схем, содержащих более 1000 логических элементов.

5.3.2 Дедуктивное моделирование в троичном алфавите

Распространение дедуктивного метода моделирования на троичный алфавит можно реализовать несколькими способами. Рассмотрим один из них. При этом каждой i-ой линии схемы ставятся в соответствие двоичные переменные xi0 , x1i и два списка неисправностей Xi0 , Xi1. Правила обработки списков неисправностей зависят от логической функции элемента и применяемого способа кодирования алфавита. Как и для параллельного метода в троичном алфавите, мы будем использовать дизъюнктивный метод кодирования, представленный табл.5.2. При этом,

как уже говорилось, фактически моделирование каждого вентиля в троичном алфавите заменяется моделированием двух вентилей в двоичном алфавите (рис.5.4). Но схему в двоичном алфавите мы уже умеем моделировать дедуктивным методом. Поэтому для каждого из этих двух вентилей можно применять приведенные выше правила распространения неисправностей (в двоичном алфавите), что решает проблему обобщения

177

дедуктивного моделирования на троичный алфавит. На рис.5.10 это

представлено в графическом виде. Так, например, для a*=1, b*=1, f * =1

получаем в соответствии с дизъюнктивным кодированием a0=0, a1=1, b0=0, b1=1, f 0 = 0, f 1 = 1 (показано на рис.5.10) следующие правила

распространения: F 0 = A0 B0 f10 , F1 = A1 B1 f01 .

 

 

 

 

a0=0, A0

 

 

 

 

 

 

 

 

1

 

f 0=0, F0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a*=1

 

 

 

b0=0, B0

 

 

 

 

 

 

 

 

 

 

 

 

 

&

 

 

 

 

 

 

 

 

 

 

f=1*

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

b*=1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a1=1, A1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

&

 

f1=1, F1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

b1=1, B1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис.5.10 Дедуктивное моделирование в троичном алфавите

Здесь f10 означает неисправность константа 1 нулевой компоненты троичного алфавита переменной f, и f01 - константа 0 единичной компоненты.

5.3.3 Дедуктивное моделирование в многозначных алфавитах

Как указывалось ранее, основной проблемой при дедуктивном методе моделирования в многозначных алфавитах является построение моделей логических элементов в виде теоретико-множественных операций над списками неисправностей. Такие модели должны позволять находить выходные списки неисправностей по заданным входным спискам. В

настоящем разделе на базе универсальной модели логических элементов в многозначных алфавитах раздела 3 предложен метод построения моделей

178

и Bi0,BiD,BiD ,Bi1

для дедуктивного моделирования неисправностей в многозначных алфавитах.

При дедуктивном методе моделирования в многозначном алфавите,

например Е5, каждой линии i ДУ поставим в соответствие четыре пере-

менные xi0,xiD,xiD ,x1i , принимающие двоичные значения {0;1} и четыре списка неисправностей Xi0,XiD,X iD ,Xi1, связанные с этими переменными.

Например, на рис.5.11 представлены соответствующие списки

неисправностей и покомпонентные переменные для вентиля f=ab.

ai0 , aiD, aiD , ai1, Ai0 , AiD, AiD , Ai1

&

f

0 , f D

, f D , f 1

,

 

 

i

 

i

i

i

 

 

F

 

0 , F D

, F D , F1

 

i

 

i

i

i

 

bi0 ,biD,biD ,bi1, Bi0 , BiD, BiD , Bi1

Рис.5.11 Дедуктивное моделирование в многозначных алфавитах

Ключевым вопросом является неисправностей через логический элемент заданным спискам Ai0,AiD,AiD ,Ai1

Fi0,FiD,FiD ,Fi1 ).

распространение списков

(для нашего примера по определение списков

Суть предлагаемого метода заключается в том, что каждой из двоичной компонент ставится в соответствие список неисправностей,

изменяющих значение этой компоненты на противоположное, а теоретико-

множественные операции Fi0,FiD,FiD ,Fi1 для распространения входных списков неисправностей выводятся из булевых функций fi0,fiD,fiD ,fi1 .

179

Таблица 5.5

xi

xif

xi0 X i0

xiD' XiD'

xiD X iD

xi1 X i1

0

0

1{Ø}

0{Ø}

0{Ø}

0{Ø}

0

1

1{α}

0{Ø}

0{Ø}

0{α}

0

E

1{Ø}

0{α}

0{Ø}

0{α}

0

H

1{Ø}

0{Ø}

0{α}

0{α}

0

u

1{Ø}

0{α}

0{α}

0{α}

1

0

0{Ø}

0{Ø}

0{Ø}

1{α}

1

1

0{Ø}

0{Ø}

0{Ø}

1{Ø}

1

E

0{α}

0{α}

0{Ø}

1{Ø}

1

H

0{α}

0{Ø}

0{α}

1{Ø}

1

u

0{α}

0{α}

0{α}

1{Ø}

E

0

1{Ø}

1{α}

0{Ø}

1{Ø}

E

1

1{α}

1{α}

0{Ø}

1{Ø}

E

E

1{Ø}

1{Ø}

0{Ø}

1{Ø}

E

H

1{Ø}

1{α}

0{α}

1{Ø}

E

u

1{Ø}

1{Ø}

0{α}

1{Ø}

H

0

1{Ø}

0{Ø}

1{α}

1{α}

H

1

1{α}

0{Ø}

1{α}

1{Ø}

H

E

1{Ø}

0{α}

1{α}

1{Ø}

H

H

1{Ø}

0{Ø}

1{Ø}

1{Ø}

H

u

1{Ø}

0{α}

1{Ø}

1{Ø}

u

0

1{Ø}

1{α}

1{α}

1{α}

u

1

1{α}

1{α}

1{α}

1{Ø}

u

E

1{Ø}

1{Ø}

1{α}

1{Ø}

u

H

1{Ø}

1{α}

1{Ø}

1{Ø}

u

u

1{Ø}

1{Ø}

1{Ø}

1{Ø}

Рассмотрим неисправность α , при которой в исправном ДУ xi = 0 , а

в неисправном xif = 1. Тогда неисправность α может быть представлена

следующим образом: xi0 =1{α}, xiD= 0{}, xiD = 0 {}, x1i = 0{α}. Эта нотация

означает, что неисправность α входит в списки неисправностей Xi0,X i1 и

D

D

. Поскольку в исправном ДУ

~

, что

не входит в списки Xi

,X i

xi = 0

соответствует xi0 =1,xiD= 0,xiD = 0,x1i = 0 согласно кодированию табл.3.1, и

180