Генерация тестовых программ для микропроцессоров на основе моделей их архитектуры.

реклама
Генерация тестовых программ
для микропроцессоров
на основе моделей их
архитектуры.
Андрей Татарников
andrewt@ispras.ru
Institute for System Programming of the Russian Academy of Sciences (ISPRAS)
http://hardware.ispras.ru
Создание и верификация
микропроцессоров

Hardware Description Languages (HDL)



Verilog
VHDL
Architecture Description Languages (ADL)


nML
Sim-nML
Institute for System Programming of the Russian Academy of Sciences (ISPRAS), 2013
2 of 14
Уровни верификации микропроцессоров

Уровень юнита (через входные и выходные
сигналы

Системный уровень (через тестовые
программы)
Institute for System Programming of the Russian Academy of Sciences (ISPRAS), 2013
3 of 14
Подходы к созданию тестовых программ
Дизайн
Требования




?
lui s1, 0x2779
ori s1, s1, 0x0
lui s3, 0x4ee
ori s3, s3, 0xf
add v0, a0, a2
sub t1, t3, t5
add t7, s1, s3
Тестовые
программы
Ручная разработка
Случайная генерация
Генерация основанная на тестовых
шаблонах
Генерация основанная на моделях
Institute for System Programming of the Russian Academy of Sciences (ISPRAS), 2013
4 of 14
Генерация тестовых программ
основанная на ограничениях
Входные значения






Ограничения
(инварианты)
Выходные значения
(тестовые данные)
Предоставляемые возможности:
Переносимый движок (например, Z3)
Удобный язык (SMT-LIB)
Широкий выбор теорий
Преимущества:
Проще создавать тесты
Лучшее покрытие
Меньше тестовых багов
Institute for System Programming of the Russian Academy of Sciences (ISPRAS), 2013
5 of 14
Эволюция генераторов тестовых программ


Генератор для конкретной архитектуры
Генератор, основанный на моделях
 Ядро
генератора
 Модель микропроцессора



Модель набора инструкций
Тестовое знание
Настраиваемый генератор, основанный на
моделях
 Ядро
генератора
 Описание микропроцессора / Конфигурация
Institute for System Programming of the Russian Academy of Sciences (ISPRAS), 2013
6 of 14
Мотивация проекта MicroTESK


Упрощения адаптации к новым дизайнам
Упрощение создания тестовых наборов
Основные требования:



Должно быть легко изменить набор инструкций:
 добавить/удалить инструкции
 изменить семантику инструкций
Должно быть легко изменить свойства микроархитектуры:
 конфигурация кэш-памяти
 алгоритм трансляции адресов
Должна быть возможность генерировать тестовые программы
автоматически на основе высокоуровневых параметров
Institute for System Programming of the Russian Academy of Sciences (ISPRAS), 2013
7 of 14
Архитектура MicroTESK
MicroTESK
Specifications
(ADL, Configuration)
Modeling
Engineer
Engine
Libraries
Model
ADL Translator
Model API
Design Model
(Instruction Set,
Resources)
Test Template
Generator
Basic TK
Testing
Knowledge
Test Program
Generator
CSP Solver
API
Test Templates
Testprograms
programs
Test
Test
Programs
CSP Solver
Testtemplates
templates
User–Defined
Test
Test Templates
Verification
Engineer
Institute for System Programming of the Russian Academy of Sciences (ISPRAS), 2013
8 of 14
Пример спецификации на Sim-nML
op ADD(rd: GPR, rs: GPR, rt: GPR)
Тестовый шаблон
action = {
if(NotWordValue(rs) || NotWordValue(rt)) then
UNPREDICTABLE();
ALU r(), r(), r(); Предусловие
endif;
ADD R, r(), r();; normal;
tmp_word = rs<31..31>::rs<31..0>
SUB+ r(), R, r();; overflow;
rs<31..31>::rt<31..0>;
if(tmp_word<32..32> != tmp_word<31..31>) then
SignalException("IntegerOverflow");
else
Тестовые ситуации
rd = sign_extend(tmp_word<31..0>);
endif;
}
syntax = format("add %s, %s, %s",
rd.syntax, rs.syntax, rt.syntax)
op ALU = ADD | SUB | ...
Классы эквивалентности
Institute for System Programming of the Russian Academy of Sciences (ISPRAS), 2013
9 of 14
Описание системы управления памятью






ПримерШаблон
описание кэша
Тестовый
Ассоциативность
LD r(), 0x0, r();; hit(TLB, loaded::PFN1);;
Количество строк
miss(L1);; hit(L2);
Структура данных (поля и их размер)
...
Функция вычисления
позиции
основе адреса
SD r(),
0x0,данных
r();;наhit(TLB,
loaded::PFN2);;
Предикат проверки промаха/попадания
equals(PFN1, PFN2);; hit(L1);
Стратегии вытеснения
buffer L1 = {
set = 4
length = 128
line = { tag:card(27), data:card(32) }
index(addr:36) = { addr<8..2> }
match(addr:36) = { addr<35..9> == tag<0..26> }
policy = LRU
}
Institute for System Programming of the Russian Academy of Sciences (ISPRAS), 2013
10 of 14
Ограничения




Предусловия
(define-sort DWORD64
() (_ BitVec
64))
Интервалы
возможных
значений
(define-fun INT_ZERO
() DWORD64
(_ bv0 64))
Зависимости
между
данными
(define-fun INT_BASE_SIZE () DWORD64 (_ bv32
Псевдослучайные значения
64))
(define-fun INT_SIGN_MASK () DWORD64
(bvshl (bvnot INT_ZERO) INT_BASE_SIZE))
(declare-const rs DWORD64)
(define-fun IsValidPos
((x!1
(declare-const
rt DWORD64)
DWORD64)) Bool
(ite (= (bvand x!1 INT_SIGN_MASK) INT_ZERO) true false))
(assert
(IsValidSignedInt
(define-fun
IsValidNeg ((x!1rs))
DWORD64)) Bool
(= (bvand x!1 INT_SIGN_MASK)
INT_SIGN_MASK) true false))
(assert (ite
(IsValidSignedInt
rt))
(assert (not (IsValidSignedInt (bvadd rs rt))))
(define-fun IsValidSignedInt ((x!1 DWORD64)) Bool
(assert (ite
(not(or(=(IsValidPos
rs rt)))x!1) (IsValidNeg x!1)) true false))
(check-sat)
(get-value (rs rt))
Institute for System Programming of the Russian Academy of Sciences (ISPRAS), 2013
11 of 14
Тестовые шаблоны




Предусловия
Классы эквивалентности
Настраиваемые последовательности команд
Комбинаторная генерация
class MyTemplate < Template
def test()
data = [ [0xEF, 0xFF], [0x1EF, 0x1FF], [0xFEF, 0xFFF] ];
data.each { |d|
xor r0, r0, r0;
ori r(2), r0, d[0];
ori r(4), r0, d[1];
ld tmp1=r(1), 0x0, r(2);; hit([L1(), L2()], [25, 50, 75]);
ld tmp2=r(3), 0x0, r(4);; hit([L1(), L2()], [25, 50, 75]);
dadd r(5), tmp1, tmp2;; overflow;
}
end
end # class MyTemplate
Institute for System Programming of the Russian Academy of Sciences (ISPRAS), 2013
12 of 14
Заключение

Адаптация основанного на моделях
тестирования для инженеров-верификаторов
 Предметно-ориентированные

языки
Облегчение реагирования на изменения в
дизайне и поддержки моделей
 Легко
модифицируемые спецификации
 Полностью автоматическая генерация тестов
Institute for System Programming of the Russian Academy of Sciences (ISPRAS), 2013
13 of 14
Спасибо!
Вопросы?
Institute for System Programming of the Russian Academy of Sciences (ISPRAS), 2013
14 of 14
Скачать