TMPA-2013: Shipin System-C Control Points

348 views

Published on

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

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
348
On SlideShare
0
From Embeds
0
Number of Embeds
81
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

TMPA-2013: Shipin System-C Control Points

  1. 1. Использование контрольных точек для верификации SystemC-программ А.А. Шипин, В.А. Соколов, Д.Ю. Чалый Ярославский государственный университет им. П.Г. Демидова
  2. 2. Цель работы • Разработка верификатора, который позволил бы анализировать SystemC-модель с недетерминированным поведением.
  3. 3. Тестирование в SystemC • SystemC Verification Library (SCV). o Генерация тестов, в том числе со случайными условиями. • SystemC Functional Coverage Library. o Возможность оценки функционального покрытия.
  4. 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. 5. Метод C Model Checking (CMC) • Метод разработан в Стэндфордском университете в 2002 г. • Исследует программы на C++ напрямую, устраняя необходимость в отдельном абстрактном описании поведения системы. • Достигается обходом графа состояний программы в ширину. • “No, CMC is not available.” (M. Musuvathi, личная переписка)
  6. 6. Схема верификации SCMC
  7. 7. Возможности DMTCP • Только Linux (POSIX API). • Сохранение программ на C++, Java, Python, Perl, … • Поддержка нескольких потоков. • Поддержка параллельных программ. • Поддержка дескрипторов файлов, pipes, sockets, fifo, timers, shared memory, … Проблема работы с внешними сервисами. Например, с СУБД или X Window.
  8. 8. Модификация SystemC-модели • Точки ветвления: switch ( SendCheckpoint( N, data ) ){ case 0: . . . case 1: . . . . . . case N: . . . } • Точки условий выполнения свойств: i f ( condition ) ScmcHelper : : SendAssertMessage ( text ); • Точки завершения модели: ScmcHelper : : SendExitMessage ();
  9. 9. Эксперимент с SCMC Система: пример описывает передачу данных через канал, реализующий интерфейс очереди. В модель добавлена возможность потери любого набора символов при передаче. Свойство: получит ли получатель последовательно два одинаковых символа подряд?
  10. 10. Обоснование выбора примера PinaVM – пример не может быть проанализирован, но требуется незначительная доработка проекта. Остальные – пример не может быть проанализирован из-за ограничений подхода.
  11. 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. 12. Масштабируемость подхода • Интерфейс для аналогов DMTCP. • Сохранение состояния systemc- модели без внешних инструментов (sc_context). • Инкрементное сжатие точек (HBICT). • Хранение контрольных точек в оперативной памяти. • Распараллеливание SCMC.
  13. 13. Возможные пути развития SCMC • Комбинация SCV и SCMC. • Проверка темпоральных свойств. • Внесение недетерминизма SystemC на уровне выбора процессов.
  14. 14. Заключение • Создан верификатор SCMC для моделей с недетерминированным поведением, требующий лишь небольшой модификации модели. • SCMC может работать с любыми программами на C++, которые могут быть сохранены DMTCP. • Существует проблема взрыва состояний, частично решаемая исключением одинаковых веток графа состояний.
  15. 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.

×