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

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

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

рулетки") особей для скрещивания и мутации. В качестве целевой функции используется число неисправностей указанной модели, проверяемых данным макросом, которое определяется программой моделирования с неисправностями. Таким образом, на первом нижнем уровне ГА строятся подпрограммы, которые проверяют неисправности отдельных команд. Далее они используются на втором верхнем уровне ГА для генерации полной тестовой программы.

На этом уровне используется следующий эволюционный алгоритм. Популяция из N последовательностей генерируется из предыдущего поколения путем мутации. При этом применяется (N + N) стратегия N родителей генерируют N потомков. Каждая родительская последовательность производит одну дочернюю последовательность путем мутации. Отметим, что на втором верхнем уровне оператор кроссинговера не используется. Это обусловлено тем, что здесь особь является последовательностью команд МП, имеющей достаточно сложную структуру. Поэтому применение традиционных операторов кроссинговера может привести к сильному разрушению этой структуры, тем самым, снизив эффективность тестовой последовательности. Фактически применение оператора кроссинговера для сложной структуры эквивалентно использованию случайного оператора мутации на уровне фенотипа. В качестве целевой функции на втором уровне возможно использование: 1) число изменений битов в схеме, которое определяется программой моделирования исправного устройства; 2) число проверяемых дефектов рассматриваемого класса, вычисляемых программой моделирования неисправных схем. Представляет значительный интерес развитие рассмотренного подхода с применением на втором верхнем уровне методов генетического программирования.

401

8.10 Генетическое программирование в генерации тестов для микропроцессорных систем

При генерации тестов для микропроцессорных (МП) систем одним из самых перспективных является подход, основанный на генетическом программировании (ГП) [124]. Проверяющей последовательностью для МП-систем является тест-программа, состоящая из операторов ассемблера.

ПрологPrologue

Instruction Library

 

 

 

 

 

 

 

 

ADD

 

 

 

 

ADDC

 

 

 

 

AJMP

 

 

 

 

ANL

 

 

 

A

CJNE

 

 

 

CLR

 

 

 

 

 

 

 

 

CPL

 

 

 

 

DA

 

 

 

B

DEC

 

 

 

DIV

 

 

 

 

й

 

 

 

DJNZ

 

 

 

и

 

 

 

INC

 

 

 

ц

 

 

 

JB

 

 

C

к

 

 

JBC

р

 

 

 

JC

 

Предыдущий

 

т

 

 

JMP

 

Previous

 

с

 

узелNode

 

JNB

н

 

D

JNC

и

 

 

 

 

 

JNZ

а

 

 

 

 

 

 

JZ

к

 

 

 

е

 

 

 

LJMP

 

 

 

т

 

 

 

MOV

о

 

 

E

MOVC

и

 

 

 

MOVX

л

 

ORL num,reg

 

б

 

 

MUL

 

ORL A,#num

 

и

ПараметрыPARAMETERS

 

NOP

ORL A,reg

 

Б

 

 

ORL

 

ORL C,/num

F

 

reg=R1

POP

 

ORL C,!num

 

 

 

 

PUCH

 

 

 

 

RL

 

 

 

H

RLC

 

 

ORL A,R1

RR

 

 

 

 

 

 

RRC

 

 

 

 

SETB

 

 

 

ЭпилогEpilogue

SJMP

 

 

 

SUBB

 

 

Следущий

 

 

 

 

 

 

 

Next

 

 

 

 

Node

 

 

 

 

узел

Рис.8.20 Представление программы-особи ориентированным ациклическим графом

Классическое ГП использует для представления особи древовидные структуры, которые не позволяют работать с произвольными программами [124]. Поэтому в данном случае используется подход, основанный на представлении программы ориентированным ациклическим графом (ОАГ) (Рис.8.20) [125,124]. Каждый узел такого графа содержит указатель на библиотеку команд и, если это необходимо на параметры команды (показано на Рис.8.20 справа) [125]. Отметим, что приведенный граф имеет 4 вида вершин:1) пролог;2) эпилог; 3) последовательные (линейные)

402

вершины; 4) узлы ветвления. При этом «пролог» и «эпилог» представляют необходимые команды, выполняющие, например, инициализацию программы. Они определяются конкретной МП-системой и могут быть пусты. Последовательные (линейные) узлы представляют «обычные» команды (например, арифметические и логические, вершины B,F на Рис.8.20). Отметим, что команды безусловного перехода также представляются вершинами этого типа. Узлы ветвления графа соответствуют командам условного перехода.

Таким образом, тест-программа МП системы генерируется путем изменения топологии ОАГ и мутации параметров вершины графа. При этом обычно используется эволюционная ( λ + µ ) – стратегия, которая моделирует развитие популяция из µ особей, где каждая особь представляет тест-программу. Выбор родителей производится методом турнирного отбора (т.е. выбираются случайно τ особей и среди них отбирается 1 лучшая). После генерации λ потомков лучшие µ тест-

программ отбираются в промежуточную популяцию, содержащую ( λ + µ )

особей.

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

Операторы мутации:

Используется несколько видов операторов мутации, которые приведены ниже.

− Мутация 1 (добавление вершины): новая вершина вставляется в направленный граф на случайную позицию. Новая вершина может быть как последовательным оператором, так и условным оператором. В обоих случаях инструкция, связанная с новой вершиной, выбирается случайным образом. В случае выбора команды условного или безусловного перехода (ветвления) необходимо выбрать случайным образом вершину

403

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

Мутация 2 (удаление вершины): некоторая внутренняя вершина (кроме вершин «начало» и «конец») удаляется из ориентированного графа. Если удаляемая вершина является вершиной-последователем команды перехода, то необходимо переориентировать соответствующие этому переходу дуги.

Мутация 3 (модификация вершины): изменяются некоторые параметры, связанные со случайно выбранной вершиной графа, без изменения его топологии.

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

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

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

При построении тестов для МП-систем, используя описанные модель особи популяции и операторы кроссинговера и мутации, применима фитнесс-функция на основании меры покрытия VHDL операторов и использует данные, получаемые в среде Active VHDL (code coverage) [127,

404

128]. При построении тестов для МС используется фитнесс-функция следующего вида:

F = co Nao No + cb Nab Nb + cb Nac Nc ,

где Nao число активированных тест-программой линейных операторов

VHDL,

Nab число активированных условных операторов if,

Naс количество активированных операторов ветвления типа case;

No, Nb, Nc - общее число линейных, условных, case операторов соответственно;

co, cb, cc нормирующие константы (co + cb + cc=1).

Среда Active-VHDL

 

 

Active_VHDL

 

Компилятор

Interface

Двоичный код

(FLI/VHPI)

 

 

ПЗУ

Отчет о покрытии

Полнота покрытия

VHDL модели

тест-программы

 

MС VHDL Модель

 

 

Программа на ассемблере

Данные о покрытии тест программы

Генератор тест-программ

Вычисление фитнесс-функция

Рис.8.21 Программная реализация генерации тест-программ

В этом случае программная реализация осуществляется с использованием среды Active VHDL [128] в соответствии со схемой, приведенной на рис.8.21. На начальном этапе с помощью методов генетического программирования генерируется популяция тест программ (на ассемблере) которые в дальнейшем выполняются в среде Active VHDL.

405

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

Для этого необходимо для каждой особи (тест программы) выполнить моделирование МС, описанной на VHDL, в среде Active-HDL. При этом тест-программа загружается в ПЗУ (ROM) посредством интерфейса предоставляемого библиотекой FLI. Библиотека FLI представляет собой набор функций написанных на языке программирования C, которые предоставляют процедурный доступ к программам моделирования в среде Active-HDL. Пользовательские приложения могут использовать эти функции для связи с VHDL – объектами в процессе проектирования.

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

Для вычисления значения фитнесс-функции текущей особи (тест программы) используются данные, полученные программой моделирования Active-HDL . При этом оценка покрытия выполняется на функциональном уровне средствами Code Coverage среды Active-HDL [127, 128]. Отметим, что в этом случае фактически используются методы тестирования программ, описанные в разделе 4.10. Такой подход

406

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

Code Coverage является инструментом отладки, который позволяет пользователю проверять, насколько успешно разработан исходный код на языке VHDL. Code Coverage позволяет проверить - какие операторы VHDL описания устройства выполняются в процессе моделирования. Branch Coverage (покрытие операторов ветвления-перехода) является составной частью Code Coverage . Branch Coverage исследует ветви условных операторов IF или CASE и проверяет сколько раз выполнялось условие перехода (подсчитывается число true и false) для каждого ветвления в процессе моделирования. Это позволяет разработчику определить какие операторы (выполняются/не выполняются) в процессе

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

Апробация

данного

подхода

выполнена на примере контроллера

Intel 8051

[I8051],

который

представляет собой 8-ми битный микроконтроллер [127,128]. Полученные экспериментальные данные показывают хорошее совпадение результатов моделирования и реального поведения микроконтроллера (полная совместимость на 100% команд).

На графике, представленном на рис. 8.22, отображены результаты работы генетического алгоритма, генерирующего тест программы для микроконтроллера 8051. Заметим, что фитнесс-функция достигает максимального значения равного 97.36 %.

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

407

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

 

120

 

 

 

 

 

%

100

 

 

 

 

 

MaxFitnessFunctionValue

 

 

 

 

 

80

 

 

 

 

 

60

 

 

 

 

 

40

 

 

 

 

 

20

 

 

 

 

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

1

21

41

61

81

101 121 141 161 181 201 221 241 261 281 301

 

 

 

 

 

 

Generation

Рис.8.22 Зависимость максимального значения фитнесс-функции

 

120

 

 

 

 

 

%

100

 

 

 

 

 

AverageFitnessFunctionValue

 

 

 

 

 

80

 

 

 

 

 

60

 

 

 

 

 

40

 

 

 

 

 

20

 

 

 

 

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

1

21

41

61

81

101 121 141 161 181 201 221 241 261 281 301

 

 

 

 

 

 

Generation

Рис.8.23 Зависимость среднего значения фитнесс-функции

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

408

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

%

120

 

 

 

 

 

 

 

 

 

 

 

 

 

MaxFitnessFunctionValue

100

 

 

 

 

 

 

80

 

 

 

 

 

 

60

 

 

 

 

 

 

40

 

 

 

 

 

 

20

 

 

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

26

51

76

101 126 151 176 201 226 251 276 301

 

 

 

 

 

 

Generation

 

 

 

 

 

Series1

Series2

Series3

Рис.8.24 Влияние различных вероятностей мутации

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

409

9. АВТОМАТИЗИРОВАННАЯ СИСТЕМА МОДЕЛИРОВАНИЯ И ДИАГНОСТИКИ

9.1 Функции и назначение системы

Система моделирования и генерации тестов АСМИД-Е

предназначена для использования при контроле и диагностировании ЦУ на этапах их проектирования, изготовления и эксплуатации. Ее можно применять в интегрированных САПР ЦУ для верификации логического функционирования цифровых схем, проверки временных характеристик,

анализа состязаний сигналов и рисков сбоя, генерации проверяющих тестов, определения полноты тестов, анализа различных вариантов реализации ЦУ и выбора оптимального варианта. АСМИД-Е выполняет следующие функции:

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

синтаксический анализ описания, необходимый для выявления ошибок подготовки данных;

трансляция описания ЦУ во внутреннюю структуру данных;

логическое моделирование исправных ЦУ на входных воздействиях,

заданных пользователем;

генерация тестов;

логическое моделирование ЦУ с неисправностями с целью анализа полноты тестовых наборов;

просмотр текстовых отчётов работы программ моделирования и генерации тестов, а также временных диаграмм.

Рассматриваемая в данной работе система является дальнейшим развитием предыдущих версий: АСМИД и АСМИД-П, опыт разработки которых также был использован [21,35-37]. Как и предыдущие версии, она

410