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

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

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

6.10 Метод построения тестов в десятизначном алфавите

Кроме шестизначного алфавита Т6, при генерации тестов применяются алфавиты большей значности, которые позволяют более точно описывать возможные комбинации значений сигналов в исправном и неисправном устройстве и, следовательно, эффективней проводить активизацию путей в схеме. Среди них широкое распространение получил десятизначный алфавит Т10, который кроме символов, имеющихся в алфавите Т6, включает следующие символы алфавита В16 — G0, F0, G1, F1.

Таким образом, T10={ , 0, 1, D, D’, G0, F0, G1, F1, u} [91]. Иногда его дополняют еще символом D*. Каждый из добавленных в T10 символов соответствует двум возможным комбинациям базового алфавита B4.

Символ G0 показывает, что в исправной схеме значение сигнала на данной линии равно 0, а в неисправной – 0 или 1. Аналогично G1 означает – 1 в

исправной схеме, а в неисправной – 0 или 1. Символ F0 показывает, что в неисправном ДУ значение сигнала равно 0, а в исправном – 0 или 1.

Аналогично F1 соответствует – 1 в неисправном ДУ и 0 или 1 в исправном.

Введение дополнительных символов позволяет в некоторых случаях уменьшить неопределенность в процессе построения теста по сравнению с алфавитом Т6. Повышение мощности алфавита может уменьшить перебор вариантов при поиске решения. Например, возможны ситуации, когда построение теста в алфавите Т6 идет с перебором, а в алфавитах Т10 (и

большей значности) тест строится без перебора. Если существует k путей от места неисправности до внешнего выхода, то D-алгоритм в худшем случае, например для избыточной неисправности пытается активизировать

2k – 1 многомерных путей. С другой стороны, алфавит Т10 позволяет строить тесты с помощью только одномерной активизации в худшем случае k путей.

Рассмотрим схему, изображенную на рис.6.10. Если значение линии x3 равно D, то значение линии x6 будет равно либо D, либо 0, в зависимости от того, какое значение будет на линии x4 – 0 или 1. Очевидно, что это

251

соответствует установлению на линии x6 значения F0. Аналогично, при x6=F0 значение линии x11 будет равно либо D’, либо 1 в зависимости от того, какое значение будет на линии x9. То есть линии x11 нужно присвоить значение F1. Заметим, что здесь на линиях x6 и x11 неопределенность уменьшилась с четырех возможных комбинаций до двух (это невозможно сделать в алфавите Т6). На линии x10 в зависимости от значения x1 будет 0, 1 или D’. Поскольку в алфавите Т10 нет символа для этой ситуации, то линии x10 присваивается неопределенное значение u. При этом происходит огрубление вследствие недостаточной мощности алфавита Т10 (в алфавите

B16 результат был бы точнее). Символ D* может возникнуть, например, на выходе вентиля «исключающее ИЛИ», если один из его входов примет значение D(D’).

Таблица 6.15

И

0

1

D

D’

G1

F1

G0

F0

D*

u

 

 

 

 

 

 

 

 

 

 

 

0

0

0

0

0

0

0

0

0

0

0

 

 

 

 

 

 

 

 

 

 

 

1

0

1

D

D’

G1

F1

G0

F0

D*

u

 

 

 

 

 

 

 

 

 

 

 

D

0

D

D

0

D

F0

0

F0

F0

F0

 

 

 

 

 

 

 

 

 

 

 

D’

0

D’

0

D’

G0

D’

G0

0

G0

G0

 

 

 

 

 

 

 

 

 

 

 

G1

0

G1

D

G0

G1

U

G0

F0

u

u

 

 

 

 

 

 

 

 

 

 

 

F1

0

F1

F0

D’

u

F1

G0

F0

u

u

 

 

 

 

 

 

 

 

 

 

 

G0

0

G0

0

G0

G0

G0

G0

0

G0

G0

 

 

 

 

 

 

 

 

 

 

 

F0

0

F0

F0

0

F0

F0

0

F0

F0

F0

 

 

 

 

 

 

 

 

 

 

 

D*

0

D*

F0

G0

u

u

G0

F0

D*

u

 

 

 

 

 

 

 

 

 

 

 

u

0

u

F0

G0

u

u

G0

F0

u

u

 

 

 

 

 

 

 

 

 

 

 

252

Таблица 6.16

ИЛИ

0

1

D

D’

G1

F1

G0

F0

D*

u

 

 

 

 

 

 

 

 

 

 

 

0

0

1

D

D’

G1

F1

G0

F0

D*

u

 

 

 

 

 

 

 

 

 

 

 

1

1

1

1

1

1

1

1

1

1

1

 

 

 

 

 

 

 

 

 

 

 

D

D

1

D

1

G1

1

G1

D

G1

G1

 

 

 

 

 

 

 

 

 

 

 

D’

D’

1

1

D’

F1

F1

D’

F1

F1

F1

 

 

 

 

 

 

 

 

 

 

 

G1

G1

1

G1

F1

G1

u

u

G1

G1

G1

 

 

 

 

 

 

 

 

 

 

 

F1

F1

1

1

F1

u

F1

F1

U

F1

F1

 

 

 

 

 

 

 

 

 

 

 

G0

G0

1

G1

D’

u

F1

G0

U

D*

u

 

 

 

 

 

 

 

 

 

 

 

F0

F0

1

D

F1

G1

u

u

F0

u

u

 

 

 

 

 

 

 

 

 

 

 

D*

D*

1

G1

F1

G1

F1

D*

u

D*

u

 

 

 

 

 

 

 

 

 

 

 

u

u

1

G1

F1

G1

F1

u

u

u

u

 

 

 

 

 

 

 

 

 

 

 

Таблица 6.17

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

НЕ

0

1

D

D’

G1

F1

G1

F1

D*

u

 

 

 

 

 

 

 

 

 

 

 

 

1

0

D’

D

G0

F0

G0

F0

D*

u

 

 

 

 

 

 

 

 

 

 

 

Таблица 6.18

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

1

D

D’

G1

F1

G0

F0

D*

u

 

 

 

 

 

 

 

 

 

 

 

0

0

1

D

D’

G1

F1

G0

F0

D*

u

 

 

 

 

 

 

 

 

 

 

 

1

1

0

D’

D

G0

F0

G1

F1

D*

u

 

 

 

 

 

 

 

 

 

 

 

D

D

D’

0

1

G0

F1

G1

F0

u

D*

 

 

 

 

 

 

 

 

 

 

 

D’

D’

D

1

0

G1

F0

G0

F1

u

D*

 

 

 

 

 

 

 

 

 

 

 

G1

G1

G0

G0

G1

G0

u

G0

u

u

u

 

 

 

 

 

 

 

 

 

 

 

F1

F1

F0

F

F0

u

F0

u

F1

u

u

 

 

 

 

 

 

 

 

 

 

 

G0

G0

G1

G1

G0

G1

u

G0

U

u

u

 

 

 

 

 

 

 

 

 

 

 

F0

F0

F1

F0

F1

u

F1

U

F0

u

u

 

 

 

 

 

 

 

 

 

 

 

D*

D*

D*

u

u

u

u

u

u

u

D*

 

 

 

 

 

 

 

 

 

 

 

u

u

U

D*

D*

u

u

u

u

D*

u

 

 

 

 

 

 

 

 

 

 

 

253

Распространение значений F0, F1, G0, G1, D* назовем обобщенным

D-распространением, а процедуру, с помощью которой это выполняется обобщенным D-проходом. Эта процедура выполняется для вентилей с помощью многозначных таблиц, которые представлены в табл. 6.15–6.18.

Таблицы могут быть получены с помощью универсальной модели функций f 0 , f D' , f D , f 1 (если получается код символа, не принадлежащего алфавиту T10, то он заменяется символом неопределенности u). Линии, имеющие значения D, D’, G0, G1, F0, F1

образуют обобщенную D-границу.

1

1

x5

x1

1

x2

1 x6

x3

1

x4

1

 

x7

 

1

x8

x9

1

f

x10

x11

Рис.6.17 Иллюстрация построения теста в 10-значном алфавите

Рассмотрим построение теста для неисправности x60 в схеме рис.6.17. Линии x6 присваиваем значение D. Продвижение назад дает

254

x2=x3=0. Выполнив обобщенное D-распространение, получим x9=x10=G0.

Для D-распространения выбираем x9= D’ (путем выбора из 0 и D’ снимаем неопределенность до символа D’). Импликация приводит к установке x5=1, x8=0. Далее в результате обобщенного D-распространения получаем f=F0.

Для D-распространения полагаем f=D (опять снимаем неопределенность путем выбора нужной комбинации D из двух возможных). Продвижение назад, определяет x4=0. Таким образом, тестом является набор

x1=x2=x3=x4=0.

6.11. Построение тестов в шестнадцатизначном алфавите

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

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

Рассмотрим это на примере схемы, изображенной на рис.6.17. для неисправности x60. Сначала полагаем x6=D. Как и в предыдущем примере,

схема имеет один выход, поэтому полагаем f=D*. Однако, здесь существует два пути от места неисправности до выхода схемы и заранее неизвестно, какой из них будет активизирован. Поэтому полагаем x9=u, x10=u. На все остальные элементы неисправность не оказывает влияния и

поэтому x2=x1=x3=x4=x5=x6=x7=x11=C.

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

255

1.Внести неисправность (значения D или D’), в зависимости от типа неисправности на неисправной линии).

2.Присвоить D* всем линиям схемы, которые должны изменить свое значение при наличии неисправности.

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

4.Присвоить u всем остальным линиям.

Кроме этого, на данном этапе можно некоторые линии схемы

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

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

теста.

Начальное присваивание выполняется безотносительно функций логических элементов. Учет свойств логических элементов в алфавите B16

позволяет эффективно выполнять процедуры импликации. Рассмотрим сначала прямую импликацию. Она может быть выполнена с помощью системы функций f 0 , f D' , f D , f 1 , рассмотренной в разд. 3. Эти функции позволяют проводить моделирование в алфавите B16, к которому,

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

Рассмотрим элемент конъюнкции f=a b, находящийся в некоторой схеме.

Пусть в результате предыдущих действий его входы и выход имеют соответствующие значения: a=C (a0=1, aD’=0, aD=0, a1=1), b=D(b0=0, bD’=0, bD=1, b1=0) и f=D* (f 0=0, f D’=1, f D=1, f 1=0). С помощью функций f 0 , f D' ,

f D , f 1 для вентиля И получаем новые значения fн0=1, fнD’=0, fнD=1, fн1=0.

Далее, выполнив пересечение кодов старых и новых значений путем

покомпонентной конъюнкции, получим f 0=f 0 fн0=0 1=0, f D’=f D’ fнD’=1 0=0,

256

f D=f D fнD=1 1=1, f 1=f 1 fн1=0 0=0. Таким образом, в результате импликации неопределенность на выходе уменьшилась до единственной комбинации значений сигналов в исправном и неисправном ДУ. Если в результате покомпонентной конъюнкции получается символ 0 (f 0=0, f D’=0, f D=0, f 1=0), то это говорит о противоречивой ситуации. Аналогично прямая импликация выполняется и для других элементов.

Для выполнения обратной импликации можно также построить аналог функций f 0 , f D' , f D , f 1 , которые позволяют проводить ее в универсальном алфавите B16. Особенно эффективной обратная импликация является для двухвходовых элементов. В этом случае, считая заданными значение выхода и одного из входов, мы находим значение второго входа

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

Продолжим наш пример для вентиля f=a b. После прямой импликации f=D, a=С, b=D*. Выполнив обратную импликацию для a с

0 D’

помощью функций табл. 3.7 для вентиля f=a b, получим aн =0, aн =0, aнD=1, aн1=1. Далее следует, как и в случае прямой импликации, найти

пересечение кодов a0=a0 aн0=0 1=0, aD’=aD’ aнD’=0 0=0, aD=aD aнD=1 0=0,

a1=a1 aн1=1 1=1. В данном случае неопределенность на входе a также уменьшилась до одной комбинации. Затем, считая значения a и f

известными, следует выполнить обратную импликацию для b. Получаем bн0=0, bнD’=0, bнD=1, bн1=0. Пересекая со старыми значениями, получаем b0=0, bD’=0, bD=1, b1=0, то есть b=D. Таким образом, в результате прямой и обратной импликации на линиях вентиля установились все определенные значения. Для булевой функции многих переменных соответствующие

257

функции могут быть получены из ее суперпозиции через булевы функции двух переменных.

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

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

Здесь могут применяться различные стратегии.

В качестве примера рассмотрим схему рис.6.17 с неисправностью x60, Если мы выполним импликацию после начального присваивания,

рассмотренного выше, то получим x1=x2=x3=x4=0, x5=x7=1, x6=D, x9=x10= D’, x8=x11=0 и f=D. Тo есть, в данном случае тест находится однозначно, в

отличие от D-алгоритма, где необходим перебор. В общем случае,

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

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

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

B16, дает максимальное разрешение (для комбинационных ДУ). Кроме того, в этом алфавите не нужна процедура D-прохода и D-граница.

Основной здесь является операция доопределения (обратная фаза). Здесь с помощью прямой импликации определяются для каждой линии схемы всевозможные комбинации значений сигналов для исправной и неисправной схемы. Таким образом, множество внешних выходов схемы,

на которых может проявиться неисправность, также известны. Это те

258

выходы, значения сигналов для которых в алфавите В16 содержат D или

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

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

6.12 Системы генерации тестов

Целью автоматизированной системы генерации тестов является построение проверяющего теста для данной схемы. При этом желательно,

чтобы:

1)полнота построенного теста была максимальна;

2)стоимость генерации тестов (процессорное время) была минимальна;

3)полученный тест имел минимальную длину.

Это вытекает из экономических требований. Полнота теста

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

Следует отметить, что полнота теста должна определяться относительно проверяемых (неизбыточных) неисправностей. Так,

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

образом. Полнота P = O , где N общее число неисправностей и O N

259

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

P =

O

, где R число избыточных неисправностей.

N R

 

 

Количественные значения полноты (и эффективности) теста,

очевидно, также существенно зависит от того, как формировалось множество неисправностей. Современные системы, как правило,

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

Современная система генерации тестов включает в себя следующие основные компоненты:

1)Программы генерации тестов, которые позволяют быстро получить на первом этапе начальную тестовую последовательность и работают со схемой в целом, а не ориентированы на конкретную неисправность;

2)Программы моделирования неисправных схем, позволяющие на текущий момент оценить достигнутую полноту теста и определить множество непроверенных неисправностей, для которых необходимо достроить тест;

3)Программы построения теста для конкретной заданной неисправности, которые используются на втором этапе генерации теста при его «доводке» до необходимой полноты;

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

Структура системы генерации тестов представлена на рис.6.18. Здесь

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

260