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

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

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

(сбросить) i-й триггер из полностью неопределенного состояния, когда все триггера имеют неопределенные значения. Последовательности типа А обычно генерируются на этапе препроцессорной обработки. Обычно длина этих входных последовательностей ограничивается 4d, где d - структурная последовательностная глубина [118]. Эти же последовательности будем называть типа B, если они позволяют установить триггера в соответствующее значение при условии, что в начальном состоянии некоторые триггера имеют некоторые определенные (0,1) значения. Последовательности типа B генерируются при необходимости в процессе построения тестовой последовательности. Под псевдорегистром в дальнейшем мы будем понимать группу триггеров. Кроме описанных выше последовательностей, часто также используются последовательности, которые позволяют установить псевдорегистр в некоторое определенное состояние (т.е. одновременно установить несколько триггеров в заданные состояния). Эти входные последовательности также имеет смысл включать в популяцию. В этом случае вероятность генерации необходимой входной последовательности из подобных родительских последовательностей очевидно выше, чем из случайных последовательностей. Рассмотрим ситуацию, представленную на рис.8.18 [118], где необходимо простроить входную последовательность, устанавливающую триггера в состояние S3=(1u00010u). Допустим, что существует последовательность Т1, которая как показано на рис.8.18 устанавливает первые четыре триггера в требуемое состояние S1=(1u00uuuu). С другой стороны, есть входная последовательность Т2, позволяющая из текущего состояния установить в необходимое состояние S2=(uuuu010u) остальные триггера. Поэтому последовательности Т1 и Т2 включаются в популяцию потенциальных решений и могут в результате

применения

генетических

операторов дать искомую входную

последовательность Т3, которая

устанавливает триггера в необходимое

391

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

(uuuuuuuu)

 

(uuuuuuuu)

 

(uuuuuuuu)

 

T1

&

 

T2

Генетические

 

T3

 

 

 

 

 

операторы

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

S1=(1u00uuuu)

 

S2=(uuuu010u)

S3=(1u00010u)

Рис. 8.18 Эволюционный поиск последовательности для установки состояний

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

решена с помощью ГА. В качестве

особи здесь, как и ранее, выступает

входная

последовательность

двоичных

значений.

Длина

последовательности на первом этапе полагается равной структурной последовательностной глубине d (structural sequential depth) [118],

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

длиной последовательности l: N = 4 ×

l , если число входов схемы n < 16,

и N = 16 ×

 

в случае n >15 [118].

 

l

При этом рекомендуется применять

турнирный отбор родителей без замещения и однородный кроссинговер с вероятностью Pc=0.5. Мутация реализуется путем случайного изменения одного бита двоичной таблицы [118] с вероятностью Pm=0.01. После построения входной последовательности, обеспечивающей активизацию неисправности, выполняется логическое моделирование с неисправностями и вновь проверенные неисправности удаляются из соответствующих списков.

392

На втором этапе строится входная последовательность, обеспечивающая распространение рассогласования значений сигналов на триггерах до внешних входов итеративной комбинационной схемы. Здесь также с успехом можно использовать эволюционные методы. Большую роль при этом играют различающие последовательности для триггеров, распространение рассогласования сигналов для которых необходимо выполнить. Следуя [114] используется три типа различающих последовательностей. Различающая последовательность типа A для i-го триггера определяется как входная последовательность, которая производит различные выходные реакции исправной схемы для двух различных состояний, отличающихся значением сигнала на i-ом триггере при неопределенных значениях остальных триггеров, как это показано на рис.8.19 а).

 

Тип A

Тип B

 

Тип C

 

 

Исправная

 

Исправная

Исправная

Неисправная

 

Исправная

 

Неисправная

 

 

схема

 

схема

схема

схема

 

схема

 

схема

 

 

Триггеры

 

Триггеры

Триггеры

Триггеры

 

Триггеры

 

Триггеры

 

 

uuu1uuu

 

uuu0uuu

uuu1uuu

uuu0uuu

 

uuu1Suu

 

uuu1Suu

 

 

а) тип А

б) тип B

 

в) тип C

 

Рис.8.19 Типы различающих последовательностей

 

 

 

Различающей последовательностью типа B для i-го триггера

называется входная последовательность, производящая

различные

выходные реакции исправной

и неисправной схем

 

для

состояний,

отличающихся значением сигнала на i-ом триггере при

неопределенных

значениях

остальных

триггеров, как это

показано

на

рис.8.19 б).

Различающая последовательность типа С, показанная на рис.8.19 в), аналогична последовательности типа В за исключением того, что некоторое подмножество триггеров имеет определенные значения (0,1 а не

393

u), обозначенные S. Различающие последовательности типа А строятся заранее для всех триггеров также с использованием генетического алгоритма и многозначного алфавита. Следует отметить, что условие неопределенных значений для остальных триггеров является достаточно жестким, и не для всех триггеров могут быть найдены различающие входные последовательности. Различающие последовательности типа B и C генерируются по необходимости в процессе построения тестовой последовательности. Отметим, что вследствие наличия неисправностей последовательности типа А могут не различать состояния в неисправной схеме. В этом случае эти последовательности не модифицируются, напротив, мы используем множество различающих последовательностей для построения тестовой последовательности для каждой неисправности.

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

394

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

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

P1 проверяемые неисправности;

P2 сумма динамических управляемостей; P3 установка значений триггеров;

P4 сумма различающих мощностей;

P5 индуцированная активность в неисправной схеме; P6 число новых посещенных состояний.

Параметр P1 говорит сам за себя для фазы распространения рассогласования. Он включается также и в фазу активизации для оценки влияния неисправностей, для которых рассогласование достигает внешних выходов в том же комбинационном эквиваленте, в котором выполняется активизация. Параметр P2 оценивает трудность установки триггеров в данное состояние. С другой стороны P3 используется в ГА для оценки трудности отображения данных значений триггеров в необходимое состояние. Оценка качества значений триггеров для распространения рассогласования выполняется с помощью параметра P4. В параметре P5 подсчитывается число событий в неисправной схеме. Параметр P6 используется для расширения пространства поиска (новых состояний). Это параметр используется на конечной стадии, когда параметр P1 имеет малое значение. Итак, на основе приведенных параметров на различных этапах используются следующие виды фитнесс-функций:

395

1) этап активизации:

а) для нескольких комбинационных эквивалентов

F1=0,2P1 + 0,8P4 ;

б) для одного комбинационного эквивалента

F2=0,1P1 + 0,5P2 +0,2(P4 + P5 + P6 );

в) для установки состояния триггеров

F3=0,1P1 + 0,2(k P2) + 0,5P3 + 0,2(P5 + P6), где k- константа; 2) этап распространения влияния неисправности:

F4=0,8 P1 + 0,2 (P4 + P5 + P6).

Отметим, что для этапа активизации в фитнесс-функции используется большой весовой коэффициент при P4. Если не удается найти последовательность, активизирующую неисправность непосредственно, то эта задача решается поэтапно: сначала выполняется активизация в пределах одного комбинационного эквивалента, а затем строится последовательность, которая позволяет установить триггера в необходимое состояние. В этом случае в фитнесс-функции отдается предпочтение состояниям, которые легко устанавливаются за один такт. На этапе распространения, очевидно главным является число вновь проверенных неисправностей, поэтому коэффициенту при P1 придают достаточно большое значение. Отметим, что ГА не может выявить непроверяемые (избыточные) неисправности. Поэтому для оставшихся непроверенными неисправностей желательно использовать детерминированный метод генерации тестов.

8.9 Двухуровневый ГА построения тестов для

микропроцессорных систем

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

396

сложные микропроцессорные системы. Их тестирование представляет очень серьезную проблему. Особенно сложной является задача построения тестовой последовательности. Традиционные структурные методы генерации тестов, требующие, как правило, описания структуры логической схемы на вентильном уровне, изложенные в предыдущих разделах, для подобных систем не применимы в силу очень высокой размерности задачи. Построение тестовых программ микропроцессоров (МП) выполнялось обычно на функциональном уровне [69] практически "вручную". При этом тест представляет собой программу на ассемблере в отличие от двоичных последовательностей для логических схем. Недавно в [122] предложен детерминированный метод генерации тестовых программ микропроцессорных систем. Этот метод строит тестовые программы, которые дают хорошую полноту (процент проверяемых неисправностей), в основном, для комбинационных блоков МП, таких как арифметико- логическое устройство (АЛУ). Но для управляющих автоматов МП, имеющих существенно последовательностные модули, этот подход дает плохие результаты. В настоящем разделе рассматривается эволюционный подход к построению тестовых последовательностей МП на функциональном уровне.

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

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

397

битов на уровне языков регистровых передач [123] (RT-level assignment single-bit stuck-at fault). Эта модель определяется как установка постоянного значения 0 или 1 в одном бите при выполнении оператора присваивания языка регистровых передач. При наличии этой неисправности оператор загружает правильное значение переменной за исключением одного бита, где значение соответствующего разряда насильственно устанавливается в 0 или 1.

Например, рассмотрим выполнение оператора addr <- (tail + reg1) mod 2**8 при значениях переменных tail='00000100' и reg1='0001001'. При неисправности константа 1 в третьем слева бите в результат сложения '00001101' искусственно будет в этот разряд установлена 1. Тогда после пересылки получим следующее значение переменной addr ='00101101'. Далее сигнал, соответствующий этой переменной, будет обрабатываться и распространяться как обычно, но с неправильным значением одного бита. Данные моделирования показывают, что эта модель, несмотря на свою простоту, позволяет достаточно точно оценить полноту тестовой последовательности. Полнота теста, полученная для такой модели, хорошо коррелирует с полнотой, которая оценивалась по данным логического моделирования с одиночными константными неисправностями на вентильном уровне.

Моделирование неисправностей при таком подходе выполняется с помощью программ, которые в процессе моделирования изменяют значения соответствующих разрядов переменных. Такой подход позволяет выполнять моделирование неисправностей с оценкой полноты тестовой последовательности на уровне ЯРП с минимальными дополнительными затратами, так как VHDL модель неисправных схем работает практически также быстро как и для исправных устройств. Незначительное замедление имеет место при активации неисправностей, для которых устанавливаются некоторые точки останова, где вносятся значения неисправных битов.

398

Для построения тестовой последовательности МП систем на функциональном уровне используется двухуровневый ГА. Суть его заключается в следующем.

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

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

2)выполнение проверяемой команды;

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

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

MOV AX, K1

; загрузка регистра AX константой К1

MOV AX, K2

;

загрузка регистра BX константой К2

ADD AX, BX

;

сложение AX и BX

MOV RW, AX

; запись AX в RW

MOV RW2, PSW

 

; запись регистра состояния в RW2

Здесь К1 и К2 являются параметрами, чьи значения определяют собственно проверяющие свойства макроса (полноту теста), RW1 и RW2 - ячейки памяти, содержащие результаты выполнения команды.

399

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

1)формирование условия перехода;

2)проверка условия и, возможно, переход;

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

Ниже приведен возможный вариант подобного макроса:

MOV BX, 0

;

очистка BX

CMP AX, K1

;

сравнение регистра AX с K1

JG M1

;

переход при AX > K1

MOV BX, 1

;

запись 1 в К1

M1: MOV RW, BX

;

запись BX в RW

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

Далее находятся лучшие значения параметров построенных макросов, которые обеспечивают лучшую проверку команд. Для этого используется стандартный ГА со следующими параметрами. Хромосомы представляются обычными двоичными строками, длина которых определяется соответствующими макросами. При эволюции используются: 1) стандартный одноточечный оператор кроссинговера; 2) стандартный оператор мутации, инвертирующий с малой вероятностью (обратно пропорциональной длине хромосомы) значение одного бита хромосомы; 3) оператор репродукции реализует пропорциональный отбор ("метод

400