Диагностика ошибочного поведения аппаратуры при динамической верификации на основе моделей Докладчик: Проценко Александр Процесс создания аппаратуры Используются языки описания аппаратуры (Hardware Description Language): •Verilog; •VHDL; •… Разработка Документация HDL-описание аппаратуры Микросхема 2 Ошибки имеют большую цену Цена ошибки в микропроцессоре очень высока, поскольку исправление ошибки в уже изготовленной микросхеме невозможно. • Ошибка TLB в процессорах AMD Phenom x4 • Ошибка Pentium FDIV (ошибка в модуле операций с плавающей запятой) 3 Верификация аппаратуры Верификация Системный симулятор Разработка Тестовая система Документация HDL-описание аппаратуры HDLсимулятор Микросхема 4 Архитектура тестовой системы (C++TESK) 5 Фрагмент трассы тестовой системы 6 Фрагмент диаграммы сигналов 7 Сложность диагностики • Сложные причинно-следственные связи между стимулами и реакциями • Большие объемы данных в трассах • Высокий уровень параллелизма аппаратуры 8 Постановка задачи Цель: Требуется разработать компонент C++TESK для автоматизации анализа результатов, получаемых при динамической верификации на основе моделей, с целью упрощения поиска ошибок. Задачи: • Согласовать интерфейсы с сопоставителем реакций • Разработать метод и средства анализа реакций полученных при верификации • Испытать полученный компонент на реальных примерах 9 Диагностика в тестовой системе (C++TESK) 10 Входные данные Реакции эталонной модели: spec i i min (data , [time {R , time max ]i , iface i )}i Реакции реализации: {R impl j (data j , time j , iface j )} j Входные данные подсистемы диагностики: spec i {( R ,R impl j )}i , j 11 Типы пар реакций • NORMAL — эталонная и реализационная реакции совпали • MISSING — отсутствует реализационная реакция • UNEXPECTED — отсутствует эталонная реакция • INCORRECT — данные эталонной и реализационной реакций имеют расхождения 12 Тип NORMAL aimpl (data impl , time impl , iface impl ) aspec (data spec , [time min , time max ]spec , iface spec ) Normal(a (time impl impl , a spec ) (data impl data spec ) [time min , time max ]spec ) (iface impl iface spec ) 13 Тип MISSING aimpl (data impl , time impl , iface impl ) aspec null Missing(a (time (iface impl impl , a spec ) {[time specmin , time specmax ]i }i ) impl {iface }) spec i i 14 Тип UNEXPECTED aspec (data spec , [time min , time max ]spec , iface spec ) aimpl null Unexpected(a (time (iface impl impl , a spec ) {[time specmin , time specmax ]i }i ) impl {iface }) spec i i 15 Тип INCORRECT aimpl (data impl , time impl , iface impl ) aspec (data spec , [time min , time max ]spec , iface spec ) Incorrect( aimpl , a spec ) (data (time impl impl {data spec i }i ) [time min , time max ]spec ) (iface impl iface spec ) 16 Механизм диагностирования. Базовые правила Набор правил «схлопывания». Базовые правила: 1. (null, null) → Ø 2. (aimpl, aspec) → (null, null) 3. {(aimpl, bspec), (bimpl, aspec)} → {(aimpl, aspec), (bimpl, bspec)} 4. {(aimpl, null), (null, aspec)} → (aimpl, aspec) 5. {(aimpl, bspec), (bimpl, null)} → {(aimpl, null), (bimpl, bspec)} 6. {(aimpl, bspec), (null, aspec)} → {(aimpl, aspec), (null, bspec)} 7. {(aimpl, cspec), (bimpl, aspec)} → {(aimpl, aspec), (bimpl, cspec)} 17 Метрики близости • Количество полностью совпавших полей • Расстояние Хэмминга 18 Механизм диагностирования. Нечеткие правила Набор правил «схлопывания». Нечеткие правила (с использованием метрик): 9. {(aimpl, bspec), (b`impl, a`spec)} → {(aimpl, a`spec), (b`impl, bspec)} 10. {(aimpl, null), (null, a`spec)} → (aimpl, a`spec) 11. {(aimpl, b`spec), (bimpl, null)} → {(aimpl, null), (bimpl, b`spec)} 12. {(aimpl, bspec), (null, a`spec)} → {(aimpl, a`spec), (null, bspec)} 13. (aimpl, a`spec) → (null, null) 19 Вывод диагностики в командной строке 20 Анализ результатов верификации 21 Испытания Испытана на отдельных модулях микропроцессора Эльбрус 22 Спасибо! 23 24