Федеральное государственное бюджетное учреждение науки Институт системного программирования РАН Динамическая верификация цифровой аппаратуры на основе формальных спецификаций Чупилко Михаил Михайлович Научный руководитель проф., д.ф.-м.н. Петренко Александр Константинович Процесс создания аппаратуры Системный симулятор Эталонная модель на C++ Тестовая система Верификация Документация HDL-описание (Verilog/VHDL) HDLсимулятор Фотошаблоны Микросхема 2/20 Причины сложности верификации аппаратуры Логическая сложность (параллелизм и асинхронность, большие размеры) Процесс разработки существенно итеративен, поэтому тесты и модели приходится многократно модифицировать Модульность проекта существенно слабее, чем в ПО, и изменения в одной подсистеме часто требуют корректировки в других Документация фрагментарная и часто не актуальная Постоянное увеличение сложности аппаратуры 3/20 Цель работы Разработка метода верификации цифровой аппаратуры на основе использования программных моделей с учетом требований промышленных процессов проектирования HDL-описаний 4/20 Поставленные задачи Проанализировать существующие методы верификации цифровой аппаратуры Разработать метод верификации HDL-описаний аппаратуры на основе использования эталонных программных моделей, поддерживающий: применение при неполноте требований инкрементальный процесс разработки и уточнения формальных спецификаций в процессе проектирования композицию тестовых систем различных HDL-описаний Разработать инструменты, реализующие метод Оценить реализацию метода на практике 5/20 Научная новизна Метод спецификации цифровой аппаратуры, подходящий для использования на разных уровнях абстракции Метод сопоставления реакций цифровой аппаратуры и реакций эталонной модели, позволяющий автоматизировать процедуру проверки цифровой аппаратуры 6/20 Существующие методы верификации HDL-описаний Формальная верификация (аналитическая верификация) Динамическая верификация (тестирование) Целевой объект: Фаза генерации теста: случайные / набор / по ограничениям Оракул: в ходе статического анализа / в процессе исполнения Тестовые воздействия: модуль (unit) / система в целом (core) наборы эталонных результатов / вычисление эталонных результатов по модели / ограничение на ожидаемый результат (post-условие) / контроль assertions Метрики полноты: по структуре HDL-описания / эталонной модели 7/20 Место предлагаемого метода Формальная верификация (аналитическая верификация) Динамическая верификация (тестирование) Целевой объект: Фаза генерации теста: случайные // набор набор // по по ограничениям ограничениям Оракул: в ходе статического анализа / ввпроцессе процессеисполнения исполнения Тестовые воздействия: модуль (unit) (unit) / система в целом (core) модуль вычисление эталонных эталонных результатов наборы эталонных результатов / вычисление результатовпо по модели / ограничение на ожидаемый результат (post-условие) / контроль assertions модели Метрики полноты: эталонноймодели модели по структуре HDL-описания / эталонной 8/20 Выделенные задачи как средство достижения поставленной цели Для быстрого получения тестов при неполных требованиях, обычных на ранних этапах проектирования аппаратуры: Поддержка эталонных C++ моделей с абстракцией функциональности, отличной от HDL-описания Поддержка автоматизированных генераторов последовательностей времени и тестовых Для экономии времени и затрат на верификацию на каждой следующей итерации проектирования HDL-описания: Средства доработки эталонных моделей до потактовых Использование эталонных моделей, которые дорабатываются в соответствии с каждой новой итерацией проектирования HDL-описания Средства расширения возможностей генераторов тестовой последовательности заданием режима обхода конечных автоматов Для учета декомпозиции как основного пути создания сложных HDL-описаний: Средства объединения тестовых систем различных HDL-описаний 9/20 Метод модульной верификации аппаратуры на основе моделей 10/20 Метод модульной верификации аппаратуры на основе моделей применение при неполноте требований инкрементальный процесс разработки и уточнения формальных спецификаций в процессе проектирования композицию тестовых систем различных HDL-описаний 11/20 Разработанный метод модульной верификации аппаратуры 12/20 Формализация работы тестового оракула 13/20 Реализация метода. Библиотека C++TESK Hardware Edition Средства генерации стимулов Класс генератора тестовой последовательности, создающий случайный поток стимулов (взят из C++TESK) Класс генератора тестовой последовательности, создающий поток стимулов на основе обхода конечных автоматов (взят из C++TESK) Средства задания автоматной модели обобщенного состояния – набор макросов, реализующий класс тестового сценария (взят из C++TESK) Средства создания тестового оракула Классы сопоставителей реакций Класс генератора вердикта Средства описания окружений эталонной модели – набор макросов, реализующий класс описания окружения Подключение к HDL-описанию Средства описания адаптеров реализующий класс адаптера HDL-описаний – набор макросов, 14/20 Применение метода в реальных проектах Библиотека классов C++TESK Hardware Edition была применена для создания тестовых систем для 9 уже верифицированных модулей микропроцессоров в течение 2009-2012 гг., в среднем обнаруживалось по 3-5 серьезных ошибок: Буфер трансляции адресов (НИИСИ) Модуль арифметики с плавающей точкой (НИИСИ) Кэш память второго уровня (НИИСИ) Коммутатор данных (МЦСТ) Системный контроллер прерываний (МЦСТ) Модуль доступа к памяти (МЦСТ) Устройство аппаратного поиска по таблице страниц (МЦСТ) Контроллер банка кэш-памяти второго уровня (МЦСТ) Буфер команд (МЦСТ) 15/20 Найденные ошибки, % Результаты применения метода в реальных проектах 1 Коммутатор данных (1) 0.75 Коммутатор данных (2) 0.5 Устройство аппаратного поиска по таблице страниц 0.25 Буфер команд 0 1 3 5 7 9 11131517192123252729313335 Время верификации, недели Контроллер прерываний 16/20 Сравнение результатов с традиционным подходом Найденные ошибки, % 1 Устройство аппаратного поиска по таблице страниц 0.75 0.5 0.25 Традиционный подход 0 1 3 5 7 9 11131517192123252729313335 Время верификации, недели 17/20 Апробация и публикации SYRCoSE: Spring Young Researches Colloquium on Software Engineering, г. Нижний Новгород, 2010 г. и г. Екатеринбург, 2011 г. EWDTS: East-West Design & Test Symposium, г. Санкт-Петербург, 2010 г. и г. Севастополь, 2011 г. Baltic Electronics Conference, г. Таллин, 2010 г. Семинар Института системного программирования РАН, г. Москва, 2011-2012 гг. По теме диссертации автором опубликовано 11 работ (из них 3 в изданиях по перечню ВАК) 18/20 Заключение Разработан метод верификации цифровой аппаратуры, на основе формальных спецификаций в виде программных моделей на языке C++, отвечающий требованиям промышленных процессов проектирования HDL-описаний Разработан метод спецификации цифровой аппаратуры, подходящий для использования на разных уровнях абстракции Разработан метод сопоставления реакций цифровой аппаратуры и реакций эталонной модели, позволяющий автоматизировать процедуру проверки цифровой аппаратуры Реализованы инструменты, поддерживающие разработанные методы Реализация методов была применена на практике для тестирования модулей сложных отечественных микропроцессоров 19/20 Спасибо Вопросы?