Проверка корректности поведения
HDL-моделей цифровой аппаратуры
на основе динамического
сопоставления трасс
В.П. Иванников, А.С. Камкин
М.М. Чупилко
Содержание
• Модели аппаратуры
• Динамическая верификация
• Формализация
• Отношение конформности
• Заключение
2/26
Модели аппаратуры
• Разрабатываются на языках проектирования
аппаратуры
– Verilog
– VHDL
• Результат проектирования – программа,
запускаемая в HDL-симуляторе
• Основной подход к верификации моделей
аппаратуры – это тестирование HDL-описаний
• Автоматизация тестирования возможна с
помощью исполнимых моделей (C/C++)
3/26
HDL-программы
input S;
output R1, R2;
void design() {
while(true) {
wait(S);
delay(6);
R1 = 1;
delay(1);
R1 = 0;
R2 = 1;
delay(1);
R2 = 0;
}
}
CLK
6 тактов
S
R1
R2
Параллельные присваивания
4/26
Поведение HDL-описания
5/26
Тестовый оракул на основе
эталонной модели
HDL
Тестовый оракул
Компараторы
реакций
Эталонная
модель
Арбитры
реакций
Адаптерывходныхинтерфейсов
Адаптерывыходныхинтерфейсов
Стимулы
Реакции
реализации
Реакции
эталонной модели
6/26
Проверка корректности поведения
Временные ограничения
Функциональные свойства
• Множества реакций корректно
• Каждая реакция корректна
• Корректный порядок реакций
• Задержки между реакциями корректны
7/26
Потактовые проверки
R1
Реакции реализации
Реакции эталонной модели
send(R1);
send(R2);
delay(3)
R1
R2
 ✕
Сравнение
R2
 ✕
3 такта
8/26
Неопределенность порядка реакций
S
R2 R1
Исполнение реализации
recv(in_iface, S);
Исполнение эталонной модели
send(out_iface, R1);
send(out_iface, R2);
...
...
Ошибка: R2 R1
Пересмотреть порядок
Порядок реакций
R1R2
Разрешено: R2 Order
9/26
Упорядочивание реакций
• Арбитр реакций находит реакцию,
соответствующую реакции эталонной
модели
• Проверка поведения зависит от эталонной
модели и метода упорядочивания
• Арбитры реакций включают часть тестового
оракула, проверяющую порядок реакций
10/26
Типы арбитров реакций
• Детерминированный арбитр,
основанный на модели
arbiter: 2Reaction Reaction {fail}
• Адаптивный арбитр
arbiter: 2Reaction Reaction Reaction {fail}
• Двухуровневый арбитр
arbiter(reactions) arbiter2(arbiter1(reactions), reaction)
– Недетерминированный
– Адаптивный
11/26
Детерминированный арбитр
R1
Реакции реализации
Реакции эталонной модели
send(R1);
send(R2);
... R1R2
Арбитр
реакций
R1
R2
FIFO
 ✕
Сравнение
S R
Порядок известен
12/26
Адаптивный арбитр
R1
Реакции реализации
Реакции эталонной модели
send(R1);
send(R2);
...
R1
R2 Арбитр
реакций
R1
R2
Get(R1)
Сравнение
S R
Порядок неизвестен
Подсказка
 ✕
13/26
Двухуровневый арбитр
R1
Реакции реализации
Реакции эталонной модели
send(R1);
send(R2);
...
R1
R2
Арбитр
#1
R1
R2
 ✕
Get(R1)
Сравнение
S R
Порядок частично известен
Арбитр
#2
Подсказка
Кандидаты
14/26
Временное слово
– алфавит событий
T – временной домен (R≥0, напр. N)
w = (a0, t0)(a1, t1), … ( T) (*)
• i . ti < ti+1 (ti ≤ ti+1) – монотонность
• T i . ti > T – прогресс (если |w| = )
15/26
Частично упорядоченное
мультимножество (Pomset)
– алфавит событий
Pomset-множество – это тройка V, ,
• V – множество вершин
• V V – частичный порядок
• : V – помечающая функция
16/26
Частично упорядоченное
мультимножество. Примеры
a a b
c
c
db
a
b
a
b
c
d
a
17/26
Временные трассы
– алфавит событий, T – временной домен
Временная трасса – V, , , [, ]
• V – множество вершин
• V V – частичный порядок
• : V – помечающая функция
• : V T – время наступления события
• : V T – разрешенный интервал
18/26
Поведение спецификации и
реализации
Поведение реализации
VI, , I, I
Поведение спецификации
VS, , S, S, S
Разрешенные временные интервалы
S(x) = [ S(x)- t(x), S(x)+ t(x)]
Соответствие событий
match(x, y) = ( I(y) = S(x)) & ( I(y) S(x))
19/26
Отношение конформности
I ~ S domI=domS , w domS t T
M(w,t) { (x, y) pastS(t) pastI(t) | match(x, y) }
• взаимно однозначное бинарное отношение
• x pastS(t- t) y pastI(t) . (x, y) M(w,t)
• y pastI(t- t) x pastS(t) . (x, y) M(w,t)
• (x, y), (x’, y’) M(w,t) . x x’ (y) (y’)
20/26
Динамическое сопоставление трасс
21/26
Проверка отношения соответствия
22/26
C++TESK Testing ToolKit
Web: http://forge.ispras.ru/projects/cpptesk-toolkit
E-mail: cpptesk-support@ispras.ru
23/26
Применение инструмента
Модуль Стадия разработки Точность моделирования
от до
TLB Поздняя/завершающая приближенная потактовая
FPU Поздняя/завершающая без учета времени --
L2 Промежуточная/поздняя приближенная --
DATABOX Промежуточная/
завершающая
приближенная потактовая
MAU Ранняя/промежуточная без учета времени потактовая
IC Ранняя/промежуточная без учета времени приближенная
TLU Поздняя приближенная --
L2-BANK Поздняя потактовая --
IB Поздняя/завершающая потактовая --
L3 Промежуточная приближенная --
24/26
Заключение
• Разработан метод динамического анализа
аппаратуры на основе теории частично
упорядоченных мультимножеств
• Метод был реализован в инструменте
C++TESK Testing ToolKit и успешно применен
в ряде проектов
• Дальнейшие исследования связаны с
диагностикой ошибок и подсказками для их
локализации
25/26
СПАСИБО!
Вопросы?
26/26

TMPA-2013 Chupilko: Verification of Correct Behaviour of HDL Models