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

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

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

Таблица 6.2

И

0

1

D

D’

u

 

 

 

 

 

 

0

0

0

0

0

0

 

 

 

 

 

 

1

0

1

D

D’

u

 

 

 

 

 

 

D

0

D

D

0

u

 

 

 

 

 

 

D’

0

D’

0

D’

u

 

 

 

 

 

 

u

0

u

u

u

u

 

 

 

 

 

 

Таблица 6.3

 

 

 

 

 

 

 

 

 

 

 

ИЛИ

0

1

D

D’

u

 

 

 

 

 

 

0

0

1

D

D’

u

 

 

 

 

 

 

1

1

1

1

1

1

 

 

 

 

 

 

D

D

1

D

1

u

 

 

 

 

 

 

D’

D’

1

1

D’

u

 

 

 

 

 

 

u

u

1

u

u

u

 

 

 

 

 

 

Таблица 6.4

 

 

 

 

 

 

 

 

 

 

 

НЕ

0

1

D

D’

u

 

 

 

 

 

 

 

1

0

D’

D

u

 

 

 

 

 

 

Таблица 6.5

 

 

 

 

 

 

 

 

 

 

 

 

0

1

D

D’

u

 

 

 

 

 

 

0

0

1

D

D’

u

 

 

 

 

 

 

1

1

0

D’

D

u

 

 

 

 

 

 

D

D

D’

0

1

u

 

 

 

 

 

 

D’

D’

D

1

0

u

 

 

 

 

 

 

u

u

u

u

u

u

Процедура импликации используется для максимально возможного

снятия неопределенности на линиях схемы, которое возможно вследствие

231

присваивания некоторым линиям определенных значений (как на этапе D-

распространения, так и на этапе доопределения). Например, если в схеме

рис.6.8 установить значение x4=0, то из этого, очевидно, следует, что сигналы x41 = x42 = 0 . Из равенства x41 = 0 следует однозначно x6=1.

Аналогично x42 = 0 имплицирует x5=1. Кроме этого, из равенства x4=0

однозначно следует равенства x2=1, x3=1.

x1

1

f

 

 

 

x2

&

x6

 

 

 

&

 

x41

x7

 

 

 

& x4

 

 

x42

 

x3

&

x5

 

Рис.6.8 Пример схемы для иллюстрации импликации

Различают прямую и обратную импликацию. При прямой

импликации снимается неопределенность на линиях элементов последователей данной линии (для нашего примера x4 =0 x42=0, x5=1,

x6=1). Обратная импликация снимает неопределенность у линий,

являющихся предшественниками данной линии (для нашего примера

х4=0 x2=1, x3=1).

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

помощью табличных многозначных моделей, приведенных в табл. 6.2-6.5.

Типовые ситуации, где может быть выполнена обратная импликация,

представлены на рис.6.9.

232

 

 

До

 

 

 

 

 

 

 

 

После

 

 

 

 

 

 

 

 

x

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

&

 

 

 

1

 

&

1

 

 

 

 

a)

x

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x

 

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

&

 

 

0

 

 

 

&

 

0

 

 

 

 

б)

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x

 

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

0

 

 

1

0

 

 

 

 

в)

x

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x

 

1

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

&

 

 

 

&

1

 

г)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис.6.9 Обратная импликация

6.7 D - алгоритм

Среди структурных методов генерации тестов, использующих многозначные алфавиты, первым был разработан D-алгоритм [87],

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

Основным рабочим инструментом в D-алгоритме является техника кубов. Модели логических элементов представляются также с помощью кубов. Например, в табл. 6.6 представлены 0-кубы для вентиля И. Легко видеть, что данная таблица в сжатой форме содержит все условия, при которых на выходе вентиля И возможно значение 0. Можно показать, что множество сжатых кубов, используемое в D-алгоритме, определяется соот-

ветствующей функцией f 0 . Так, например, каждый терм функции f 0

вентиля соответствует строке табл. 6.6. Аналогично функция f 1

соответствует табл. 6.7, которая содержит 1-кубы и определяет условия,

при которых на выходе вентиля И возможна 1.

233

Таблица 6.6

a

b

c

 

 

 

0

u

0

u

0

0

D

D’

0

D’

D

0

 

 

 

Таблица 6.7

a b c

1 1 1

Распространение символов D’ и D через логические элементы осуществляется с помощью D’- и D-кубов, которые определяются функциями многозначными функциями f D' , f D соответственно. Так,

табл.6.8, содержащая D-кубы вентиля И, получена из функции f D вентиля

И. Аналогично, функция f D' определяет D’-кубы табл.6.9.

Таблица 6.8

a

b

c

 

 

 

D

1

D

1

D

D

D

D

D

 

 

 

Таблица 6.9

a b c

D’ 1 D’

1 D’ D’

D’ D’ D’

Простым кубом неисправности h 0,1 на выходе вентиля называется

D(D’)-куб (D для неисправности h0, D’ для неисправности h1), в

котором выходу вентиля присваивается D(D’), а значения входам присваиваются таким образом, чтобы на выходе исправного вентиля было значение, инверсное h. Например, 11D является простым D-кубом для неисправности h0 на входе вентиля И. Очевидно, что простой D-куб

служит средством активизации неисправности на соответствующей линии

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

234

x1

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

x10

 

 

x12

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

G3

 

 

 

 

 

x2

 

 

 

 

 

 

 

G5

 

 

 

 

 

 

 

 

 

 

 

 

 

x6

x7

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

&

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

G1

 

x8

 

 

 

 

 

 

x3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x4

 

 

 

 

 

&

 

 

x11

 

 

 

x9

 

 

 

 

 

 

&

 

 

 

 

 

 

 

 

 

G4

 

 

 

 

 

 

x5

 

G2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис.6.10 Пример схемы для иллюстрации D-алгоритма

Основной моделью логической схемы в D-алгоритме является система таблиц кубов, в которых столбцы соответствуют линиям схемы, а строки -

кубам. Например, табл.6.10 содержит D’ кубы для схемы, изображенной на рис.6.10. Пустые клеточки соответствуют неопределенным значениям u.

Вторая таблица содержит 0(1)-кубы. Для нашего примера она представлена в табл.6.11. Кроме этих таблиц используется куб K для текущих значений линий схемы и несколько стеков. Сначала всем линиям в кубе K присваиваются неопределенные значения u. Затем в K вносится простой куб данной неисправности. Далее выполняется D-распространение к одному из выходов схемы. Оно выполняется путем выбора последователя неисправного вентиля и пересечения с одним из его D-

кубов с текущим кубом K. При D-распространении обычно производится выбор D или D’-куба данного элемента, оставшиеся варианты хранятся в стеке. Операция пересечения определена в табл.6.12. Если при пересечении кубов, возникает хотя бы один символ Ø, то это показывает противоречие, возникающее на данной линии вследствие различных требований (например, из простого D-куба следует, что данная линия должна иметь значение 0, а из условий D-распространения здесь должна быть 1.

235

Таблица 6.10

Куб

Линии

x1

x2

x3

x4

x5

x6

x7

x8

x9

x10

x11

x12

1

2

3

4

5

6

7

8

9

10

11

12

13

14

 

t1

 

D

1

 

 

D

 

 

 

 

 

 

 

t2

 

1

D

 

 

D

 

 

 

 

 

 

G1

t3

 

D

D

 

 

D

 

 

 

 

 

 

t4

 

D’

1

 

 

D’

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

t5

 

1

D’

 

 

D’

 

 

 

 

 

 

 

t6

 

1

D’

 

 

D’

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

t7

 

 

 

D

1

 

 

 

D

 

 

 

 

t8

 

 

 

1

D

 

 

 

D

 

 

 

G2

t9

 

 

 

D

D

 

 

 

D

 

 

 

t10

 

 

 

1

D’

 

 

 

D’

 

 

 

 

 

 

 

 

 

 

 

 

 

 

t11

 

 

 

D’

1

 

 

 

D’

 

 

 

 

t12

 

 

 

D’

D’

 

 

 

D’

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

t13

D’

 

 

 

 

 

0

 

 

D

 

 

 

t14

0

 

 

 

 

 

D’

 

 

D

 

 

G3

t15

D’

 

 

 

 

 

D’

 

 

D

 

 

t16

D

 

 

 

 

 

0

 

 

D’

 

 

 

 

 

 

 

 

 

 

 

 

 

t17

0

 

 

 

 

 

D

 

 

D’

 

 

 

t18

D

 

 

 

 

 

D

 

 

D’

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

t19

 

 

 

 

 

 

 

D’

1

 

D

 

 

t20

 

 

 

 

 

 

 

1

D’

 

D

 

G4

t21

 

 

 

 

 

 

 

D’

D’

 

D

 

t22

 

 

 

 

 

 

 

D

1

 

D’

 

 

 

 

 

 

 

 

 

 

 

 

t23

 

 

 

 

 

 

 

1

D

 

D’

 

 

t24

 

 

 

 

 

 

 

0

D

 

D’

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

236

1

 

2

 

3

 

4

 

5

 

6

 

7

 

8

 

 

9

 

 

10

 

11

 

12

 

13

 

14

 

 

t25

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

D

 

0

 

 

D

 

 

t26

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

 

D

 

D

G5

t27

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

D

 

D

 

D

t28

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

D’

 

0

 

 

D’

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

t29

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

 

D’

 

D’

 

 

t30

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

D’

 

D’

 

D’

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Разв

t28

 

 

 

 

 

 

 

 

D

D

 

D

 

 

 

 

 

 

 

 

 

 

 

 

 

 

етвл

t29

 

 

 

 

 

 

 

 

D’

D’

 

D’

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ение

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Таблица 6.11

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Куб

Линии

 

x1

 

x2

 

x3

 

x4

 

x5

 

x6

 

x7

 

 

x8

x9

 

x10

 

x11

 

x12

 

1

 

2

 

3

 

4

 

5

 

6

7

 

8

 

9

 

10

11

 

12

 

13

 

14

 

 

 

С1

 

 

 

0

 

u

 

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

С2

 

 

 

u

 

0

 

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

G1

 

С3

 

 

 

D

 

D’

 

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

С4

 

 

 

D’

 

D

 

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

С5

 

 

 

1

 

1

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

С6

 

 

 

 

 

 

 

0

 

u

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

С7

 

 

 

 

 

 

 

u

0

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

G2

 

С8

 

 

 

 

 

 

 

D

D’

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

C9

 

 

 

 

 

 

 

D’

 

D

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

C10

 

 

 

 

 

 

 

1

1

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

C11

 

1

 

 

 

 

 

 

 

 

 

 

 

 

u

 

 

 

 

 

 

0

 

 

 

 

 

 

 

 

 

C12

 

u

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

0

 

 

 

 

 

 

 

G3

 

C13

 

D

 

 

 

 

 

 

 

 

 

 

 

D’

 

 

 

 

 

 

0

 

 

 

 

 

 

 

 

 

C14

 

D’

 

 

 

 

 

 

 

 

 

 

 

 

D

 

 

 

 

 

 

0

 

 

 

 

 

 

 

 

 

C15

 

0

 

 

 

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

237

1

2

 

3

4

 

5

 

6

 

7

 

8

 

9

10

11

12

13

14

 

 

 

 

C16

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

1

 

0

 

 

 

 

 

C17

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

u

 

1

 

 

 

G4

 

C18

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

u

0

 

1

 

 

 

 

 

C19

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

D

D’

 

1

 

 

 

 

 

C20

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

D’

D

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

C21

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

0

0

 

 

 

 

C22

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

u

1

 

 

G5

 

C23

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

u

1

1

 

 

 

 

C24

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

D

D’

1

 

 

 

 

C25

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

D’

D

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Таблица 6.12

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n

 

0

 

1

 

 

D

 

D’

 

u

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

0

 

Ø

 

 

Ø

 

 

Ø

 

0

 

 

 

 

 

 

 

 

 

 

 

1

 

Ø

 

1

 

 

1

 

 

Ø

 

1

 

 

 

 

 

 

 

 

 

 

 

D

 

Ø

 

Ø

 

 

D

 

Ø

 

D

 

 

 

 

 

 

 

 

 

 

 

D’

 

Ø

 

Ø

 

 

Ø

 

 

D’

 

D’

 

 

 

 

 

 

 

 

 

 

 

u

 

0

 

1

 

 

D

 

D’

 

u

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

D-алгоритм

можно

сформулировать

следующим

образом в

виде

псевдокода (рис.6.11).

D-алгоритм( неисправность hi)

{

Ранжирование элементов схемы от входов к выходам;

Выбор простого D-куба для неисправности hi;

Занесение элементов-последователей hi в D-границу; D-распространение();

Доопределение();

Return();

238

}

D-распространение()

//активизирует пути с D,D’-значениями от неисправности до внешнего выхода

{

while(есть необработанные элементы в D-границе)

{

Выбор следующего необработанного элемента из D-границы; while(есть необработанные последователи элемента)

{

Выбор следующего элемента-последователя;

Выбор D-куба для элемента-последователя;

D-пересечение выбранного D-куба с текущим тест-кубом К; if(пересечение пусто или неопределено)continue;

//переход на конец цикла

if(все D-кубы элемента использовались и не дали результата) break; if(пересечение D-кубов успешно)

{

Занесение элементов-последователей D-значений в D-границу;

Сохранение состояния алгоритма в стеки;

break;

}

else if (пересечение D-куба с тестовым кубом пусто) возврат(); else if ( противоречие при операции пересечения кубов) break;

}

if(ни один из вариантов не дал D-распространения)

Возврат();

}

return;

}

Доопределение()

//дает значения внешних входов, обеспечивающие условия D-распространения

{

J=координаты тестового куба К с определенными значениями 0,1 ;

239

if(J содержит только внешние входы)

тест построен, останов;

for(каждого неподтвержденного сигнала в G)

{

выбор 0,1 сигнала z из J с наибольшим рангом; if(входы элемента с выходом z все равны D или D’)

break;

while(есть необработанные 0,1-кубы вентиля z)

{

Выбор следующего необработанного 1- или 0- куба вентиля z; if(нет необработаных 1- или 0- кубов)

{

if(нет выбора в стеке импликации) stop;

неисправность избыточна;

else if(есть альтернативный выбор)

then извлечение из стека альтернативного значения;

else

{

Возврат(); D-распространение();

}

}

if(0,1-куб пересекается с z) удаление z из J и занесение в J-границу значений входов z;

break;

if(пересечение пусто) отметка текущего 0,1-куба как отработанного;

}

}

return;

}

Возврат()

{

if( внешний выход содержится в D-границе)

Доопределение();

240