ПРОГРЕСИВШ ШФОРМАЦШШ
ТЕХНОЛОГИ
ПРОГРЕССИВНЫЕ ИНФОРМАЦИОННЫЕ ТЕХНОЛОГИИ
PROGRESSIVE INFORMATION TECHNOLOGIES
УДК 681.518
Д. Е. Иванов
ГЕНЕТИЧЕСКИЙ ПОДХОД ПРОВЕРКИ ЭКВИВАЛЕНТНОСТИ ПОСЛЕДОВАТЕЛЬНОСТЬЮ СХЕМ
При проектировании современных цифровых схем перед разработчиком часто возникает задача верификации эквивалентности двух схем, что связано с применением различных оптимизационных процедур. В данной статье предлагается алгоритм решения данной задачи, основанный на генетическом программировании. Приведены результаты экспериментов на схемах 1БСЛБ-89, показывающие эффективность предложенного подхода.
ВВЕДЕНИЕ
На современном этапе средства автоматизированного проектирования позволяют обрабатывать как комбинационные схемы, содержащие десятки и сотни тысяч логических вентилей, так и последовательностью схемы, содержащие сотни элементов состояний (триггеров). Обязательными элементами таких систем являются программы трансляторы (например, между функциональным и логическим уровнями описания схем), а также программы оптимизации каких либо параметров схемы (потребляемой энергии, числа логических вентилей, удаление последовательностной избыточности и т. д.). Применение таких средств автоматизации заставляет разработчика ставить задачу верификации эквивалентности двух схем (например, схемы
© Иванов Д. Е., 2009
до и после процесса оптимизации) [1]. Для решения таких задач существуют точные алгоритмы, которые основаны, например, на преобразованиях булевого представления схемы [2]. Недостатками данных методов является то, что при их работе со схемами большой размерности легко достигается переполнение памяти. Таким образом, будучи прерванными из-за проблемы переполнения памяти, точные алгоритмы вообще не дают никакого результата: ни об эквивалентности, ни о неэквивалентности заданных схем. Это заставляет разрабатывать новые нетрадиционные подходы к решению подобных задач. Одним из них является применение генетических алгоритмов [3]. Применение генетических алгоритмов, например, для построения тестовых входных последовательностей описано в [4].
Авторы также имеют опыт применения генетических алгоритмов к решению задач технической диагностики. В частности, такие алгоритмы использовались для построения тестовых входных последовательностей [5, 6], а также инициализирующих последовательностей [7]. В данных алгоритмах операции производятся над входными двоичными последовательностями, состоящими из входных векторов, каждый из которых соответствует
такту модельного времени. Для такого задания особей вводятся основные генетические операции: мутация и скрещивание. Вычисление оценочных функций при этом основывается на моделировании работы схемы (исправной или с неисправностями) и отображает активность схемы на заданной входной последовательности. Подход показывает приемлемые практические результаты. Поэтому авторы решили применить его для задачи верификации эквивалентности последователь-ностных схем.
Данная статья имеет следующую структуру. В первом разделе описана формальная модель синхронных последовательностных схем, используемая при исследовании. В следующем разделе описана общая структурная схема генетического алгоритма, применяемого для решения поставленной задачи. В третьем разделе подробно рассмотрено вычисление фитнесс-функции, основанное на моделирования. В четвертом разделе описана программная реализация предложенного алгоритма, среда проведения машинных экспериментов, а также приведены их результаты. В заключении сделаны выводы и указаны направления дальнейших исследований.
1 ПОСТАНОВКА ЗАДАЧИ
В качестве модели в данной работе используются синхронные последовательностью схемы (рис. 1). В данной модели схема представляется в виде комбинационного блока (в свою очередь состоящего из нескольких функциональных комбинационных блоков, КФБ) и блока памяти, который состоит из Б-тригге-ров. Далее также будем использовать следующие обозначения: V - вектор входных сигналов; #Вх - число внешних входов схемы, размерность вектора V; У -вектор выходных сигналов; #Вых - число внешних выходов схемы, размерность вектора У; Т - вектор состояний блока памяти; #Тр - число элементов состояния (Б-триггеров) схемы, размерность вектора Т; #Эл -общее число логических вентилей в схеме.
Вектор V - упорядоченное множество двоичных значений, которое подается на вход цифровой схемы в определенный такт времени. Последовательность ^ заданной длины ¡г - упорядоченное множество из ¡г векторов, которые подаются на вход схемы в последовательные такты времени. Обозначение говорит,
что мы рассматриваем в последовательности 5 вектор с номером ] (] = 0, ..., ¡г _ 1). Через А($) обозначим выходные реакции схемы А при подаче на ее входы последовательности 5. Далее везде предполагаем, что моделирование выполняется в 3-значном алфавите [8] и работа схемы начинается из полностью неопределенного состояния.
При моделировании используется преобразование синхронной последовательностной схемы в псевдокомбинационный эквивалент с дальнейшим его итеративным моделированием в последовательные такты времени. Для такого преобразования удаляют элементы состояний. Входы элементов состояний (вектор Тг на рис. 1) при этом называются псевдовыходами, а их выходы (вектор Тг на рис. 1) - псевдовходами.
При таком преобразовании работа блока памяти представляется следующим образом. В момент смены тактового импульса в устройстве синхронизации (для упрощения на рисунке не представлен) происходит подача на вход схемы новых входных значений момента времени г; на псевдовходы подаются значения псевдовыходов схемы в предыдущий такт времени Ti _ 1, после чего путем моделирования комбинационной части схемы для такта времени г формируются выходные сигналы схемы У{ и сигналы псевдовыходов Тг.
Задача верификации эквивалентности двух после-довательностных схем формулируется следующим образом.
Определение 1. Пусть заданы две цифровые по-следовательностные схемы А0 и А1. Будем называть схему А0 исправной, а схему А1 - модифицированной (оптимизированной, неисправной). Схемы называются последовательностно эквивалентными (или просто эквивалентными), если при произвольном одинаковом начальном состоянии данных схем выходные реакции схем на произвольные входные последовательности 5 являются одинаковыми, т. е.
А0 = А1 » : А0 (5) = А1(5).
(1)
Рисунок 1 - Модель синхронной последовательной схемы
Как было сказано выше, построенные на основании деревьев обхода алгоритмы [2, 3] не в состоянии работать со схемами большой размерности. Это связано с нехваткой памяти для стеков возвратов алгоритмов обхода деревьев, что обусловлено большим числом элементов состояний в проектируемых схемах.
Однако проектировщику не обязательно иметь утвердительный ответ на вопрос об эквивалентности схем. Ему достаточно также знать, что схемы не являются эквивалентными. Поэтому задачу можно переформулировать, ориентируясь на поиск контрпримера.
Определение 2. Если существует такая последовательность эк, на которой при одинаковых начальных состояниях схемы А0 и А1 имеют различные выход-
ные реакции, то данные схемы не являются эквивалентными:
Л0 * Л1 если : Л0(Л1(^) .
(2)
Именно поиск такой последовательности будет являться целью предлагаемого алгоритма. В данной постановке задача не рассматривалась в отечественной научной литературе.
Предполагается также, что проектировщику доступны значения сигналов при работе схемы в контрольных точках (КТ). В самом общем случае множество КТ совпадает с множеством логических элементов схемы, т. е. проектировщику известно полное поведение схемы в процессе моделирования. Однако ему не известно никакой дополнительной информации о внутренней функциональной структуре схемы.
2 ГЕНЕТИЧЕСКИЙ АЛГОРИТМ
ВЕРИФИКАЦИИ ЭКВИВАЛЕНТНОСТИ
ПОСЛЕДОВАТЕЛЬНОСТНЫХ СХЕМ
Как уже отмечалось ранее, авторы неоднократно применяли различные модификации генетического алгоритма к задачам технической диагностики [5-7].
Генетический алгоритм это итеративный процесс построения новой популяции (поколения) из текущей. Алгоритм заканчивает работу при выполнении одного из условий:
- либо найдена последовательность 5, выходные реакции на которую схем Л0(^) и Л1(^) различны (показана неэквивалентность схем);
- либо достигнуто одно из ограничивающих условий: время моделирования, предельное число поколений или предельное число поколений без улучшения оценочной функции.
В алгоритмах такого рода в качестве особи выступают входные последовательности, для которых заранее не известна длина (рис. 2, а). Длина входного вектора соответствует числу входов исследуемых схем Л0 и Л1. Для каждой входной последовательности 5 ставится в соответствие оценочная функция /оц(^;), которая показывает насколько «хорошо» данная последовательность решает поставленную задачу. Вычисление оценочных функций особей является наиболее трудоемкой фазой алгоритма и именно от этого зависит быстродействие всего алгоритма. Подробно вычисление оценочной функции особей описано в следующем разделе. Популяцией является набор таких последовательностей (рис. 2, б).
Одна итерация генетического алгоритма состоит в построении новой популяции из текущей. При этом к особям текущей популяции применяют генетические операции: выбор особей, скрещивание и мутация особей. Операция выбора реализует выбор двух особей-родителей для последующей рекомбинации и мута-
Рисунок 2 - Кодирование особей и популяций: а - особь; б - популяция
ции. Авторы применяют пропорциональный отбор, при котором вероятность особи быть выбранной в качестве родителя пропорциональна ее фитнесс-функции. После этого к выбранным особям применяются операции скрещивания и мутации. Полученные таким образом особи-потомки попадают в промежуточную популяцию. Текущая популяция новой итерации алгоритма строится на основании лучших особей текущей и промежуточной популяций.
Подробнее генетические операции описаны в [5] и здесь не приводятся для краткости изложения.
Псевдокод генетического алгоритма построения входных последовательностей приведен ниже.
Генетический_алгоритм(Схема, РазмерПопуляции,
ЧислоИтераций) {
// подготовка начальной популяции
ПостроитьНачальнуюПопуляцию();
ОценитьОсобей(НачальнаяПопуляция);
НомерПопуляции=0;
Пока(не_достигнут_критерий_остановки )
{
НоваяПозиция=0;
Для( 1=0 ; кРазмерПопуляции ; ¡++)
{
ОперацияВыбора(РодительА, РодительБ);
Если( гап<^() < Рс ) ОперацияСкрещивания(РодительА, РодительБ, Потомок);
Если( гап<^() < Рт ) ОперацияМутации(Потомок);
ДобавитьВПромежуточнуюПопуляцию(Потомок, НоваяПозиция);
НоваяПозиция++;
}
ОценитьОсобей(ПромежуточнаяПопуляция);
ПостроитьНовуюПопуляцию(РазмерПопуляции);
НомерПопуляции++;
}
СоздатьОтчёт();
}
Поясним назначение некоторых функций. Процедура «ОценитьОсобей» вычисляет оценочную функцию всех особей переданной ей популяции. Функция «ОперацияВыбора» на основании оценочной функции для особей текущей популяции строит их фитнесс-функции и производит выбор двух особей-родителей, над которым далее будут проводиться генетические операции. Функция «ПостроитьНовуюПопуля-цию» обрабатывает текущую и промежуточную популяции и на их основе строит текущую популяцию следующей итерации алгоритма. В эту популяцию попадают лучшие особи из текущей популяции предыдущего шага алгоритма и промежуточной популяции. После этого промежуточная популяция уничтожается. Процедура «СоздатьОтчет» формирует выходные статистические данные, как для пользователя программы, так и для системы моделирования и генерации тестов АСМИД-Е [9].
3 ВЫЧИСЛЕНИЕ ОЦЕНОЧНОЙ ФУНКЦИИ
Идеей предлагаемого алгоритма является направить поиск в пространстве решений в ту сторону, в которой выше активность верифицируемых схем А0 и А1, а также выше различие этой активности на множестве контрольных точек. Данную информацию легко получить из программ логического моделирования. Таким образом, в генетических алгоритмах генерации различных типов тестовых последовательностей, вычисление фитнесс-функции основано нам моделировании работы исправной А0 и модифицированной А1 схем. Основываясь на вышесказанном, в качестве меры применяются следующие показатели: активность исправной или неисправной схемы на заданной входной последовательности; число вентилей, псевдовыходов и выходов в схеме, различных в исправной и неисправной схемах. В нашем случае роль «неисправной» схемы выполняет схема, которая подверглась обработке (оптимизации) некоторым транслятором. Поэтому для построения фитнесс-функции выберем меру отличия значения сигналов в исправной и оптимизированной схемах. Основываясь на данном факте, введем три параметра, на основании которых будет вычисляться численное значение фитнесс-функ-ции:
- п1 - число различных значений на выходах схемы. Данный параметр является определяющим, поскольку наличие даже одного расхождения на внешних входах двух схем, говорит о том, что различающая последовательность построена. Поэтому данный параметр в фитнесс-функцию должен входить с таким коэффициентом, чтобы при наличии хотя бы одного различия, значение фитнесс-функции нивелировало другие параметры и говорило о решении задачи.
- п2 - число различных псевдовыходов схемы. В случае, когда различные значения в двух проверяе-
мых схемах, еще не достигли выходов, решающим является распространения таких отличий на псевдовыходы (триггеры) схемы. Наличие триггеров с различными значениями на определенном такте времени позволяет с большей вероятностью получить различия на внешних выходах схемы на следующем такте работы.
- п3 - число контрольных точек двух схем с различными значениями сигналов. В случае, когда различие в поведении двух схем не достигло ни внешнего выхода, ни псевдовыхода схемы, необходимо строить последовательности, для которых является важным различие сигналов внутри комбинационных блоков. Этот параметр важен либо когда еще ни одна из пар триггеров в исправной и неисправной схемах не получили различные значения, либо когда такие пары есть, но этого не достаточно для распространения различных значения до внешних выходов схемы. Данный параметр в фитнесс функции должен иметь наименьшее значение.
Таким образом, в общем виде значение фитнесс-функции имеет вид:
длина з^
ДАо, А1,) = £ Г(А1, Ао, зф =
1 = 1
длина
= £ (с1*п1 + с2*п2 + с3*п3), (3)
1 = 1
где с1 _ с3 - нормирующие константы;
п1 = £ различие(д, А0, А1; зф, О - множество всех
д е О
внешних выходов двух схем;
п2 = £ различие(д, А0, А1, зф, О1 - множество д е 01
псевдовыходов двух схем;
п3 = £ различие(д, А0, А1; зф, 02 - множество
д е 02
всех контрольных точек схемы.
В нашем случае мы предполагаем, что проектировщику известно поведение всей схемы, поэтому множество 02 совпадает с множеством всех вентилей схемы.
Функция «различие^)» вычисляется на основе моделирования и определяется следующим образом:
различие (д, А0, А1, зф =
1, если значения сигналов на выходе блока g различны в двух схемах А0 и А1 при модели- (4) ровании на входном наборе з^; 0, в противном случае.
Псевдокод процедуры вычисления оценочной функции одиночной последовательности приведен ниже.
Вычисление_оценочной_функции(Схема,
ВходнаяПоследовательность, Длина)
{
Фитнесс=0;
для(1=0;1<длина;1++)
{
БУ0=МоделированиеРаботыИсправнойСхемы(набор i) БУ1=МоделированиРаботыМодиф.Схемы(набор i) п1=ЧислоРазличныхВыходов(БУ0,БУ1); п2=ЧислоРазличныхПсевдовыходов(БУ0,БУ1); п3=ЧислоРазличныхВентилей; Фитнесс=Фитнесс+с1*п1+с2*п2+ с3*п3;
}
}
Здесь SV0 и SV0 массивы, содержащие значения сигналов на всех контрольных линиях двух сравниваемых схем A0 и A1 [9].
4 ПРОГРАММНАЯ РЕАЛИЗАЦИЯ
И ЭКСПЕРИМЕНТАЛЬНЫЕ ДАННЫЕ
Для проведения машинных экспериментов авторы реализовывали «почти эквивалентные» схемы основываясь на следующих соображениях. Обработка описания цифровой схемы (переход между уровнями описания: вентильный ^ функциональный и т. д.) происходит автоматизировано с помощью соответствующих трансляторов. При этом преобразованию подвергаются некоторые завершенные функциональные блоки. Вероятность возникновения ошибки при таких преобразованиях достаточна мала, но не является нулевой. При этом будем предполагать, что она возникнет только в одном из логических блоков, и при моделировании будет проявляться (не всегда) на выходе (выходах) данного блока. При описании схемы на вентильном уровне минимальным элементом описания является логический вентиль. А функционирование одного логического вентиля определяется его типом. Изменив тип логического вентиля, будет изменено его функциональное свойство. Таким образом, для построения «почти эквивалентной схемы» будем изменять в таблицах описания тип одного случайно выбранного вентиля. Полученная таким образом схема и оригинальная схема будут верифицироваться на эквивалентность.
Программная реализация производилась в среде программирования C++ Builder 6. Общее число строк кода, реализующих функциональную часть алгоритма без процедур моделирования, составило около 1200 строк.
Для реализации «почти эквивалентной» модифицированной схемы создавался второй массив типов эле-
ментов R_TYPES [9], в котором случайным образом изменялся тип одного вентиля (например OR ^ NOR). Дважды (для исправной и «эквивалентной» схем) вызывалась процедура моделирования, для которой в параметрах подменялся один единственный массив R_TYPES. Остальные массивы в принятом подходе описания двух схем одинаковы и не дублировались. Для моделирования работы цифровых последователь-ностных схем использовался разработанный авторами ранее алгоритм событийного моделирования [10].
В качестве экспериментальной платформы использовался персональный компьютер со следующими характеристиками: процессор Intel CoreQuad с частотой 2,4 Ггц, объем оперативной памяти 2 Гбайта.
При проведении машинных экспериментов использовались следующие значения эвристических констант:
- с1 = 1, если различие в поведении двух верифицируемых схем достигнет внешнего выхода, то значение оценочной функции превысит единицу, что будет сигнализировать, что найдена требуемая входная последовательность;
- c2 = ——1——, при таком выборе константы
2 #Вых•#Тр
различие на всех линиях элементов состояний будет приравниваться к различию на одном внешнем выходе схемы, показывая высокую вероятность распространить данное отличие на какой либо внешний выход схемы в следующем такте времени;
1
- c3 = —--TT-, аналогично, различие на выхо-
3 #Вых•#Эл
дах всех вентилей схемы приравнивается к различию на одном внешнем выходе.
Результаты машинных экспериментов для некоторых больших схем каталога ISCAS-89 приведены в табл. 1. Поскольку предлагаемый алгоритм не является точным, то объясним смысловое различие колонок «Не различено схем» и «Ответ под вопросом». Данные в столбце «Не различено схем» показывают число экспериментов, в которых достигнут предел числа итераций, однако не найдено различающей последовательности, а оценочная функция всех последовательностей популяции равна нулю. Данные в столбце «Ответ под вопросом» показывают число машинных экспериментов, в которых достигнут предел построения популяций, однако оценочная функция отлична от нуля. Таким образом, этот столбец соответствует случаю, когда функционирование схем различно, но данное различие не удалось распространить на внешние выходы схемы. При этом остается вероятность того, что при углублении поиска (увеличении числа предельно допустимых итераций алгоритма) зафиксированное различие в поведении двух схем удастся распространить на внешние выходы схем, т. е. построить различающую их последовательность.
Таблица 1 - Экспериментальные данные работы алгоритма верификации эквивалентности
Имя схемы Число вентилей / триггеров схемы Эксперименты
Всего проведено Различено схем Не различено Ответ под
s3271 1731 / 116 25 25 0 0
s3330 2037 / 131 25 21 2 2
s3384 1940 / 183 25 24 1 0
s4863 2514 / 104 25 25 0 0
s5378 3045 / 179 25 22 0 3
s6669 3460 / 239 25 25 0 0
Всего: 150 142 (94,7%) 3 (2%) 5 (3,3%)
Приведенные в табл. 1 числовые данные показывают эффективность предложенного алгоритма: число экспериментов, в которых удалось построить различающую функцию, составило 94,7 %. Число экспериментов, в которых различие функционирования не проявилось даже внутри схемы, составило 2 %.
ВЫВОДЫ
В данной статье предложен генетический подход к решению задачи проверки эквивалентности двух синхронных последовательностных схем. Авторами разработан алгоритм, который основан на предыдущем опыте построения входных тестовых последовательностей. Проведена программная реализация данного алгоритма и ряд машинных экспериментов. Апробация программной реализации алгоритма на схемах из международного каталога 18СА8-89 показывает его высокую эффективность как в терминах качества построения различающих последовательностей, так и в терминах времени их построения.
В качестве дальнейших исследований данной проблемы можно отметить следующее. Вычисление оценочной функции строящейся последовательности требует моделирования работы двух сравниваемых схем. В терминах параллельного программирования две такие процедуры моделирования не имеют пересечений и считаются независимыми. Таким образом можно реализовать их параллельное вычисление при наличии соответствующей аппаратной поддержки. Этот подход легко достижим на современных многоядерных процессорах. Поскольку в данном алгоритме вычисление оценочной функции забирает большую часть времени, то переход от последовательного моделирования работы двух схем к параллельному должен существенно уменьшить общее время работы всего алгоритма. Построение модификации алгоритма для многоядерных процессоров и проверка эффективности такого подхода будет являться ближайшей целью авторов.
ПЕРЕЧЕНЬ ССЫЛОК
1. Huang S.-Y. Formal Equivalence Checking and Design Debugging / Huang S.-Y., Cheng K.-T. - Boston : Kluwer Academic Publishers, 1998. - 229 p.
2. Ghosh A. Sequential Logic Testing and Verification / Ghosh A., Devadas S., Newton A. R. - Boston : Kluwer Academic Publishers, 1992. - 214 p.
3. Goldberg D. E. Genetic Algorithm in Search, Optimization, and Machine Learning / Goldberg D. E. - Addison-Wesley, 1989. - 432 p.
4. Corno F. GATTO: a Genetic Algorithm for Automatic Test Pattern Generation for Large Synchronous Sequential Circuits / Corno F., Sonza Reorda M., Rebaudengo M. // IEEE Transactions on Computer-Aided Design. - 1996. -Vol. 15, № 8. - Pp. 943-951.
5. Иванов Ä. E. Генерация тестов цифровых устройств с использованием генетических алгоритмов / Иванов Д. Е., Скобцов Ю. А. // Труды института прикладной математики и механики НАн Украины. - Донецк : ИПММ, 1999. - Т. 4. - С. 82-88.
6. Skobtsov Y. A. Distributed Genetic Algorithm of Test Generation For Digital Circuits / Skobtsov Y. A., El-Khatib, Ivanov D. E. // Proceedings of the 10th Biennial Baltic Electronics Conference. - Tallinn : Tallinn Technical University, 2006. - P. 281-284.
7. Иванов Ä. E. Построение инициализирующих последовательностей синхронных цифровых схем с помощью генетических алгоритмов / Иванов Д. Е., Скобцов Ю. А., Эль-Хатиб А. И. // Проблеми ¡нформацшних технологш. - 2007. - № 1. - C. 158-164.
8. Барашко А. С. Моделирование и тестирование дискретных устройств / Барашко А. С., Скобцов Ю. А., Сперанский Д. В. - Киев : Наукова думка, 1992. - 288 с.
9. Скобцов Ю. А. Автоматизированная система моделирования и генерации тестов АСМИД-Е / Скоб-цов Ю. А., Иванов Д. Е. // Техническая диагностика и неразрушающий контроль. - 2000. - № 2. - С. 54-59.
10. Иванов Ä. E. Параллельное моделирование неисправностей для последовательностных схем / Иванов Д. Е., Скобцов Ю. А. // Искусственный интеллект. -1999. - № 1. - С. 44-50.
Надшшла 25.09.2008
Шд час проектування сучасних цифрових пристроЧв перед розробником часто постае проблема вериф1кацп екв1валентност1 двох схем. Це пов'язано, перед ус1м, i3 використанням рiзноманiтних оптимiзуючих процедур. В данш статi запропоновано алгоритм рШення такоЧ задачi, заснований на генетичному програмувант. Наведено результати машинних експериментiв на схемах ISCAS-89, що доводять ефективтсть запропонованого пiдходу.
While the designing modern digital devices the problem of verification of two circuits' equivalence often arises. It is caused mainly by usage of differ-ent optimization procedures. In this paper the approach to solution of this problem based on genetic programming is proposed. Reported results of the benchmarks performed on ISCAS-89 circuits confirm the efficiency of the proposed algorithm.