Аннотация
ВВЕДЕНИЕ 5
1 Постановка задачи 6
2 Основные понятия и определения 7
3 Обнаружение неисправности частично построенной схемы 10
4 КНФ Цейтина (разрешения) логической схемы 12
5 Вычисление частичных функций от внутренних переменных 14
6 Разработка архитектуры программного обеспечения 20
6.1 Используемые технологии 20
6.1.1 Язык C++ 20
6.1.2 SAT-решатель MiniSat 21
6.1.3 Внутреннее представление схемы 22
6.1.4 Система ABC 23
6.1.5 Кроссплатформенная система автоматизации сборки CMake 23
6.2 Общее описание архитектуры 24
6.3 Модуль вычисления частичных функций 25
6.4 Модуль разбора представления схемы 26
6.5 Модуль логических вентилей 26
7 Описание реализации программного обеспечения 27
7.1 В спомогательные псевдонимы 27
7.2 Модуль логических вентилей 27
7.2.1 Интерфейс логических функций (IGateFunction) 27
7.2.2 Класс логических вентилей (Gate) 28
7.3 Модуль разбора представления схемы 30
7.3.1 Интерфейс синтаксического анализатора списка соединений 30
7.3.2 Парсер списка соединений формата .BENCH 31
7.4 Модуль вычисления частичных функций 31
7.5 Вычисление систем частичных функций 39
ЗАКЛЮЧЕНИЕ 40
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ И ЛИТЕРАТУРЫ 41
ПРИЛОЖЕНИЕ А Пример представления схемы в формате .BENCH 42
ПРИЛОЖЕНИЕ Б Пример файла CMakeLists 43
Проблема проверки частичной эквивалентности (the partial equivalence checking problem, PEC) сводится к проверке возможности продолжения частичной реализации логической схемы до полной реализации, соответствующей данной спецификации. Предполагается, что некоторые части комбинационной схемы (черные ящики) еще не реализованы, но их спецификации (как части данной спецификации комбинационной схемы) известны.
Решение этой проблемы сводится к поиску систем частично определенных булевых функций, описывающих поведение черных ящиков.
Системы частично определенных булевых функций находятся с использованием Satisfiability (SAT) решателей вместо Quantified Boolean Function (QBF) решателей или их модификаций. Использование последних, как правило, требует более сложных вычислений. В этой работе рассматриваются черные ящики с не более чем двадцатью входами, эти ограничения используются, с тем, чтобы дополнительно сократить вычисления с применением SAT решателей. В то же время рассматриваемые ограничения дают возможность выделять в качестве черных ящиков достаточно крупные подсхемы.
Постановка задачи
Задана комбинационная схема С и подсхема (черный ящик) с множеством V внутренних полюсов, являющихся ее выходами и множеством U внутренних полюсов, являющихся входами этой подсхемы (рисунок 1). Требуется построить систему частичных функций для полюсов из множества V на множестве переменных U. В качестве схемы С может использоваться спецификация или частично построенная разработчиком схема, включающая ту же самую подсхему (черный ящик).
Рассмотрена проблема проверки частичной эквивалентности (the partial equivalence checking problem, PEC) и разработано программное для вычисления системы частично определенных булевых функций. Программное обеспечение в дальнейшем будет использоваться для решения вышеописанной проблемы. Для написания программного обеспечения было необходимо:
1. изучить алгоритм построения частично определенной функции указанного полюса от внутренних переменных, предшествующих этому полюсу
2. ознакомиться с формой представления КНФ (КНФ Цейтина)
3. изучить программную библитеку для решения задачи выполнимости булевых формул (SAT-решатель)
4. разработать архитекутуру программы. Программа, по заданным входным данным, вычисляет систему частично определенных булевых функций от внутренних переменных.
1. C. Scholl and B. Becker, “Checking equivalence for circuits containing incompletely specified boxes,” in Int’l Conf. on Computer Design (ICCD). IEEE, 2002, pp. 56-63.
2. M. Herbstritt, B. Becker, and C. Scholl, “Advanced SAT-techniques for bounded model checking of blackbox designs,” in Int’l Workshop on Microprocessor Test and Verification (MTV). IEEE, 2006, pp. 37-44.
3. T. Nopper, C. Scholl, and B. Becker, “Computation of minimal counterexamples by using black box techniques and symbolic methods,” in Int’l Conf, on Computer-Aided Design (ICCAD). IEEE, 2007, pp. 273-280.
4. Ana Petkovska, Alan Mishchenko, David Novo. Progressive Generation of Canonical Irredundant Sums of Products Using a SAT Solver / Andre Inacio Reis, Rolf Drechsler // Advanced Logic Synthesis. - Switzerland, 2018. - 169 - 187.
5. Черемисинова Л. Д. Поиск кратчайшей установочной последовательности схемы с памятью на D-триггерах / Черемисинова Л. Д. / Известия национальной академии наук Беларуси. - 2015. - № 3. - 119 - 127.
6. Громов М.Л., Прокопенко С.А., Лапутенко А.В. Синтез и оптимизация цифровых схем. Часть 2. Работа с системой ABC : учебно-методическое пособие. - Томск : Издательский Дом Томского государственного университета, 2018. - 18 с.
7. MiniSat: a minimalistic, open-source SAT solver, developed to help researchers and developers alike to get started on SAT [Электронный ресурс]: Режим доступа. URL: http://minisat.se/ - (Дата обращения: 25.03.2021).
8. CMake [электронный ресурс]: Режим доступа. URL: https://cmake.org/- (дата обращения 10.02.2021).