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

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

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

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

итеративной

комбинационной

схемы.

Поскольку

в

процессе

доопределения

мы получаем

для

псевдовхода

y1=1

вместо

неопределенного значения y=u, то это говорит о невозможности построения теста для итеративной схемы из одного эквивалента

(единичной длины). Отметим, что мы строим тест, исходя из предположения, что начальное состояние ДУ не известно.

x11=0

 

 

 

x21=1

 

D

z2=D

 

 

&

1

z1=1

&

 

 

u

 

 

 

 

 

 

~

y1 =1 ~

y2 =D

y1=u

 

 

y2=1

 

 

&

 

&

 

 

 

 

x12=u

 

V1=u

x22=1

 

V2=D’

 

 

 

 

 

 

 

 

 

 

Рис.7.6 Построение тестовой последовательности – 2 КЭ

Поэтому для нашего примера выполняем распространение критического значения D′ на первичный выход z2 для итеративной схемы,

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

получаем тестовую последовательность, состоящую из двух наборов:

x11 = 0 , x12 = u ; x21 = 1, x22 = 1.

271

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

Очевидно, что каждый комбинационный эквивалент в итеративной комбинационной схеме соответствует своему такту или моменту времени.

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

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

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

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

приведенном примере одиночная константная неисправность на нижнем плече триггера в итеративной комбинационной схеме соответствует двум константным неисправностям V11 и V21. Поэтому методы генерации тестов для последовательностных схем должны учитывать этот эффект.

272

При построении тестов производится активизация путей в многозначных алфавитах от неисправных линий до одного из выходов последней t-й копии итеративной комбинационной схемы. При этом число копий КЭ k определяется условием появления неопределённых значений на псевдовходах (t k )-й копии.

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

7.1.2 Построение тестов для последовательностных схем в 16-

значном алфавите

Большинство структурных методов построения тестов

последовательностных схем для активизации критических путей в схеме используют многозначные алфавиты [1,44]. Последние позволяют с различной точностью описывать возможные комбинации значений сигналов в исправном и неисправном ДУ. В главе 3 рассматривался

универсальный 16-значный алфавит

B16 (табл.3.1), элементами которого

являются

всевозможные

 

подмножества

алфавита

B4 = {00,01,10,11} = {0, D', D,1},

и

который покрывает

основные

многозначные алфавиты, используемые в методах диагностики ДУ на структурном уровне [1]. Как, указывалось в главе 6 (п.6.6), элементы этого алфавита, в контексте задачи построения проверяющих тестов, имеют следующую интерпретацию: 0,1 (00, 11) – значения сигналов одинаковы, D', D (01, 10) – значения сигналов различны в исправном и неисправном ДУ.

273

Основные многозначные алфавиты, используемые при генерации тестов, также являются подмножествами универсального алфавита B16

(раздел 6). Так, наиболее распространенные на практике современные модификации D-алгоритма [1], метод PODEM [88] и его дальнейшее развитие метод FAN [89], используют шестизначный алфавит T6 = { , 0, 1, D, D', и} (здесь и далее символ используется для обозначения конфликтных ситуаций). В общем случае эти методы требуют многомерной активизации путей (распространения значений D, D' по нескольким путям одновременно).

Следующая группа методов типа «9V» [91] (один из методов изложен в пункте 6.10) использует десятизначный алфавит T10 , который,

кроме символов, входящих в T6 , содержит символы G0, F0, G1, F1,

позволяющие более точно описывать возможные комбинации значений сигналов. К ним относится также метод, основанный на SPLIT-модели,

который использует фактически 12-значный алфавит T12 = { , 0, 1, D, D', F0, F1, G0, G1, D*, С, u} [95]. Благодаря использованию более мощных алфавитов, этим методам для построения теста достаточно одномерной активизации путей в схеме. Следует отметить, что чем больше мощность алфавита, тем дальше удается отодвинуть «перебор» вариантов и тем самым сузить пространство поиска в процессе генерации тестового набора.

В этом смысле универсальный алфавит B16 представляет существенно большие возможности, чем остальные рассмотренные алфавиты. Поэтому по мере развития методов построения тестов значность используемых алфавитов постоянно растет. Далее мы рассмотрим метод построения тестов для последовательностных схем в 16-значном алфавите, который является развитием метода, изложенного в разделе 6.11.

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

274

на преобразовании его в так называемый комбинационный эквивалент,

получаемый путем условного обрыва обратных связей [1,44,91,97-100].

При построении теста для данной неисправности проводится активизация путей с помощью многозначных алфавитов до одного из выходов последней копии ИКС. Число копий k определяется из условий активизации путей и при необходимости может наращиваться. Различают два основных подхода к решению этой задачи: прямой и обратный [96-99].

В большинстве случаев применяется обратный подход, при котором в случае невозможности решения задачи при данном числе копий они наращиваются в обратном направлении (от k до k 1, k 2 и т. д.). Пример обратного подхода приведен в предыдущем разделе 7.1.1.

При прямом подходе копии наращиваются в прямом порядке (от 1 к 2, 3, ..., k–1, k). Иногда применяется и смешанная стратегия. Например,

процедура D-распространения выполняется в прямом порядке, а процедура подтверждения и установки схемы в необходимое состояние в обратном порядке. Каждый из этих подходов имеет свои преимущества и недостатки.

Мы будем применять прямой подход и метод генерации тестов в универсальном алфавите B16 [17]. Несмотря на то, что прямое наращивание применяется реже, в сочетании с алфавитом B16 эта стратегия более естественна, эффективна и перспективна. Тандем 16-

значного алфавита и прямой стратегии позволяет избежать в явном виде решения трудоемкой задачи установки ДУ в заданное состояние,

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

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

275

Когда начинается процесс генерации теста, неизвестно, какое из

четырех значений алфавита B4 может иметь место, и предполагается, что

на каждой линии устройства возможны любые комбинации значений сигналов: 00, 01, 10, 11. Поэтому сначала всем линиям схемы присваивается неопределенное значение u алфавита B16 . Затем, используя свойства структуры схемы и знание местоположения данной неисправности, исключают ненужные (или невозможные) комбинации сигналов для линий ДУ, снимая таким образом неопределенность. Прежде всего всем линиям схемы, на которые неисправность не оказывает влияния, необходимо присвоить значение С (возможны только две комбинации 00, 11). Описанные действия называются структурной импликацией. После этого необходимо внести влияние неисправности.

Для этого можно выполнить условный разрыв на неисправной линии xi и

присвоить начальные значения xi = 1 до разрыва и xi = D после разрыва

для константной неисправности xi 0 и соответственно xi

= 0 до разрыва

и xi = D' после разрыва для константной неисправности

xi 1 (иногда

целесообразно присваивать значения F0 и F1 вместо D и D') [1,17].

При структурной импликации учитывались только топологические

свойства схемы. Кроме того, необходимо использовать и свойства логических элементов [17]. Это делается с помощью логической импликации, которая заключается в следующем. Рассмотрим вентиль f = ab , содержащийся внутри некоторой схемы. Пусть в результате предыдущих действий его входы и выход имеют следующие значения: а=

С ( 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 ). С помощью прямых многозначных

функций из табл. 3.5 для вентиля «И» получаем новые значения

fn0 = 1,

fnD' = 0 ,

fnD = 1, fn1

= 0 , т.е.

fn = F0 . Выполнив пересечение

кодов

276

 

 

 

 

старого и нового значений с помощью покомпонентной конъюнкции,

получим

f 0 = f 0 fn0 = 0 1 = 0 ,

f D' = f D' fnD'

= 1 0 = 0 ,

f D = f D fnD = 1 1 = 1, f 1 = f 1 fn1 = 0 0 = 0 . Таким образом, в результате прямой логической импликации неопределенность на выходе вентиля уменьшилась до единственной комбинации f = D(10) . Если в результате

покомпонентной конъюнкции получается символ f 0 = 0 , f D' = 0 ,

f D = 0 , f 1 = 0, то это говорит о конфликтной ситуации (невозможность ни одной из четырех комбинаций). Аналогично прямая импликация выполняется и для других элементов.

Для обратной импликации следует использовать обратные функции a0 , aD' , aD , a1 из табл. 3.7 , которые позволяют по заданным значениям выхода и одного из входов получить значение второго входа. Поскольку входы основных вентилей симметричны, то функции для второго входа можно получить из функций первого простой заменой переменных.

Продолжим наш пример для вентиля «И». Проведя обратную импликацию для входа а, получим: a0 = 0 , aD' = 0 , aD = 0, a1 = 1 (а = 1). В данном случае неопределенность на входе а также уменьшилась до одной комбинации – 1(11). Далее, считая значения а и f известными, выполняем обратную импликацию для второго входа b и получаем: b0 = 0 , bD' = 0 , bD = 1, b1 = 0 (а = 1) (b = D ). Таким образом, в результате прямой и обратной логической импликации на вентиле установились все определенные значения.

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

277

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

Далее с помощью описанных выше процедур необходимо, насколько это возможно, снять неопределенность и попытаться распространить значения D или D' до одного из внешних выходов итеративной комбинационной схемы Z1. В общем случае при этом значения псевдовходов Y1 должны оставаться равными C = {0 1} (если

неисправность не расположена на линиях обратных связей). Если же вследствие импликации хотя бы одна из переменных Y1 примет значение 0

или 1, то это означает конфликт по переменным состояний и необходимо искать другое решение. Если для первой копии не удастся распространить значения D, D' до одного из внешних выходов Z1, необходимо в ИКС добавить вторую копию комбинационного эквивалента и попытаться получить D, D' на выходах второй копии ИКС. В случае неудачи этот процесс продолжается до тех пор, пока на выходе Zk не появятся значения

D, D' или же число копий k превысит максимально допустимое число копий ИКС. В последнем случае неисправность считается избыточной, т.е.

непроверяемой (при данной постановке задачи). В случае успеха входные вектора копий ИКС X1 , X 2 , ..., X k образуют искомую проверяющую последовательность. Следует отметить, что на практике значительная часть последовательностных ДУ для большинства переменных состояний имеет специальные цепи сброса и это можно использовать при построении теста, установив переменные состояния Y1 в соответствующие значения.

При прямом подходе эту информацию использовать значительно легче (и

естественнее, поскольку это ведет к значительному снятию неопределенности в схеме).

278

x1

y

 

 

 

x4

1

x8

 

x2

1

 

 

 

x6

 

1

 

 

 

 

 

 

 

x10

 

 

x3

1

 

 

 

 

x9

 

 

 

 

z

 

 

 

&

 

1

 

 

 

 

 

 

 

x7

 

 

 

 

x5

 

 

 

Рис. 7.7 Исходная последовательностная схема

x11=1

x41=D’

y1=C

 

~

=G0

1

x81=G0

y

 

 

 

1

x21=0

 

1

 

 

 

 

x61=D

1

 

 

 

 

x10 1

 

 

 

 

 

 

x31=1

1

 

 

 

 

x91=0

 

 

 

 

 

 

z1=1

 

 

 

 

&

 

 

1

 

 

 

 

 

 

 

 

x51=1

x71=0

 

 

 

 

 

 

 

 

 

Рис. 7.8 Комбинационный эквивалент

 

 

~

= G1

 

y2 = G1

~

= G1

x11=1

y1=C

y1

 

y

2

 

 

 

x42=D’

 

 

 

 

 

x41=D’

x81=G0

 

x12=1

1

x82=G0

 

 

 

1

 

1

 

 

x21=0

1

 

 

x22=1

 

 

 

 

 

1

 

 

 

1

 

 

 

x61=D

 

 

 

x62=0

 

 

 

x10 1

 

 

x10 2

 

 

 

 

 

 

 

 

 

1

 

 

 

 

1

 

 

 

x31=1

x91=0

 

x32=1

 

x92=0

 

 

 

 

 

&

 

 

 

 

&

 

1

 

 

 

1

 

 

 

 

 

x71=0

 

 

x52=0

x72=D

 

 

 

 

x51=1

 

 

 

 

 

 

 

 

z1=1

 

 

 

 

z2=D’

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 7.9 Итеративная комбинационная схема из 2-х КЭ

 

 

Суть метода рассмотрим на примере схемы, приведенной на рис.7.7.

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

279

получить комбинационный эквивалент (рис.7.8). Допустим, что требуется

построить тест для константной

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

x4 1.

Структурная

импликация для

нашего примера

дает x11 = x21 = x31 = x51 = C . Затем

внесем влияние

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

положив

x41 = D' .

Попытаемся

распространить значения D, D' до выхода z1

(при

y1 = C ) сначала для

схемы рис.7.8 (1-й комбинационный эквивалент). Можно убедиться, что для данной неисправности это невозможно сделать. Но для псевдовыхода

~

~

y1 , как показано на рис.7.8, можно снизить неопределенность до y1 = G1 с

помощью присваивания входам следующих значений:

x11 = 1, x21 = 0,

x31 = 1. Затем наращиваем итеративную схему путем

дополнения ее

второй копией комбинационного эквивалента (рис.7.9). Вносим влияние

неисправности во вторую копию, полагая x42 = D', и имеем теперь неисправность с кратностью 2. Попытаемся распространить значения D, D'

к выходу z 2 . На этот раз это удается сделать с помощью значений входов

второй копии: x12 = 1, x22 = 0 ,

x32 = 1.

Таким

образом, получаем

проверяющую последовательность

x

= 1, x1

= 0 , x

31

= 1; x = 1, x

22

= 0 ,

 

11

2

 

12

 

x32 = 1 длиной в два набора для данной неисправности.

Ниже представлен псевдокод укрупненного алгоритма генерации теста для последовательностных схем.

Генерация_проверяющей_последовательности(схема)

{

построение_комбинационного_эквивалента();

while(список неисправностей не пуст)

{

выбор_неисправности();

while((тест не построен)&(число_копий < MAXCOPY))

280