Диагностика ошибочного поведения аппаратуры при динамической верификации на основе моделей

advertisement
Диагностика ошибочного
поведения аппаратуры при
динамической верификации на
основе моделей
Докладчик:
Проценко Александр
Процесс создания аппаратуры
Используются языки описания аппаратуры
(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
Download