Tools & Methods of Program Analysis (TMPA-2013)
Shipin, А.А., Sokolov, V.А., Chaliy, D.U., Yaroslavl State University
The Usage of Check Points for System-C Program Verification
BDD. The Outer Limits. Iosif Itkin at Youcon (in Russian)
TMPA-2013: Shipin System-C Control Points
1. Использование контрольных
точек для верификации
SystemC-программ
А.А. Шипин, В.А. Соколов, Д.Ю. Чалый
Ярославский государственный университет
им. П.Г. Демидова
2. Цель работы
• Разработка верификатора, который
позволил бы анализировать SystemC-модель
с недетерминированным поведением.
3. Тестирование в SystemC
• SystemC Verification Library (SCV).
o Генерация тестов, в том числе со
случайными условиями.
• SystemC Functional Coverage
Library.
o Возможность оценки функционального
покрытия.
4. Предварительные обработчики [1], [2]
PinaVM
Pinapa
System
CXML
KaSCPar
Quiny
Scoot
System
Perl
sc2v
elab-only
elab-easy
elab-easy-int
elab-easy-uint
elab-easy-array
elab-easy-sc_stop
elab-port-bool
elab-pointer
elab-instances
elab-clock
Signal
Event
Fifo
RAM
5. Метод C Model Checking (CMC)
• Метод разработан в Стэндфордском
университете в 2002 г.
• Исследует программы на C++ напрямую,
устраняя необходимость в отдельном
абстрактном описании поведения системы.
• Достигается обходом графа состояний
программы в ширину.
• “No, CMC is not available.”
(M. Musuvathi, личная переписка)
7. Возможности DMTCP
• Только Linux (POSIX API).
• Сохранение программ на C++, Java, Python,
Perl, …
• Поддержка нескольких потоков.
• Поддержка параллельных программ.
• Поддержка дескрипторов файлов, pipes, sockets,
fifo, timers, shared memory, …
Проблема работы с внешними сервисами.
Например, с СУБД или X Window.
8. Модификация SystemC-модели
• Точки ветвления:
switch ( SendCheckpoint( N, data ) ){
case 0: . . .
case 1: . . .
. . .
case N: . . .
}
• Точки условий выполнения свойств:
i f ( condition )
ScmcHelper : : SendAssertMessage ( text );
• Точки завершения модели:
ScmcHelper : : SendExitMessage ();
9. Эксперимент с SCMC
Система: пример описывает передачу данных
через канал, реализующий интерфейс очереди.
В модель добавлена возможность потери любого
набора символов при передаче.
Свойство: получит ли получатель последовательно
два одинаковых символа подряд?
10. Обоснование выбора примера
PinaVM – пример не может быть
проанализирован, но требуется незначительная
доработка проекта.
Остальные – пример не может быть
проанализирован из-за ограничений подхода.
11. Результаты
Строка Найдено Кол-во
состояний
Затрачено
aaa 3 14 7 cсек.
cac 1 16 7 сек.
abc 0 16 6 сек.
aaaaa 5 26 12 сек.
cabac 5 60 27 сек.
abcde 0 64 28 сек.
aaaaaaa 7 38 19 сек.
cababac 29 164 1 мин. 24 сек.
abcdefg 0 256 2 мин. 1 сек.
aaaaaaaaa 9 50 28 сек.
cabababac 69 332 3 мин. 13 сек.
abcdefghi 0 1024 8 мин.
12. Масштабируемость подхода
• Интерфейс для аналогов DMTCP.
• Сохранение состояния systemc-
модели без внешних инструментов
(sc_context).
• Инкрементное сжатие точек (HBICT).
• Хранение контрольных точек в
оперативной памяти.
• Распараллеливание SCMC.
13. Возможные пути
развития SCMC
• Комбинация SCV и SCMC.
• Проверка темпоральных свойств.
• Внесение недетерминизма SystemC
на уровне выбора процессов.
14. Заключение
• Создан верификатор SCMC для моделей с
недетерминированным поведением,
требующий лишь небольшой модификации
модели.
• SCMC может работать с любыми программами
на C++, которые могут быть сохранены DMTCP.
• Существует проблема взрыва состояний,
частично решаемая исключением одинаковых
веток графа состояний.
15. Список литературы
• (1) Marquet K. - A theoretical and experimental
review of SystemC front-ends.
• (2) Marquet K. - PinaVM: a SystemC front-end
based on an executable intermediate
representation.
• (3) Musuvathi M. - CMC: A Pragmatic Approach to
Model Checking Real Code.