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

advertisement
Генератор тестовых программ
MicroTESK: средства
моделирования системы команд
микропроцессора
Андрей Татарников
andrewt@ispras.ru
Institute for System Programming of the Russian Academy of Sciences (ISPRAS)
http://hardware.ispras.ru
Создание и верификация микропроцессоров
Языки описания цифровой аппаратуры (HDL)
 Verilog
 VHDL
Institute for System Programming of the Russian Academy of Sciences (ISPRAS), 2013
2
Подходы к верификации микропроцессоров



Экспертиза
Формальную верификация
Имитационное тестирование
 Модульное (сигналы)
 Системное (тестовые программы)
Institute for System Programming of the Russian Academy of Sciences (ISPRAS), 2013
3
Системное тестирование
Тестовые
программы
lui
ori
lui
ori
...
s1,0x27
s1,s1,0xc8
s3,0x4e
s3,s3,0xf7
Сравнение
трасс
✕
Эталонная модель
(эмулятор)
на C
Симулятор
дизайна
(Verilog)

Возникла ошибка
Успешный прогон
Institute for System Programming of the Russian Academy of Sciences (ISPRAS), 2013
4
Подходы к разработке тестовых программ
Дизайн
Требования




?
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
5
Способы автоматической
генерации тестов




Случайная
Комбинаторная
Основанная на ограничениях
Направленная генерация
Institute for System Programming of the Russian Academy of Sciences (ISPRAS), 2013
6
Использование моделей в генераторах тестов
Основные компоненты
 Ядро генератора
 Модель микропроцессора
 Модель системы команд
 Тестовое знание
Генераторы основанные на моделях
 RAVEN (Obsidian Software, now ARM)
 Genesys-Pro (IBM Research)
 MicroTESK (ISPRAS)
Institute for System Programming of the Russian Academy of Sciences (ISPRAS), 2013
7
Организация модели микропроцессора в
MicroTESK
Модель
Провайдер
метаданных
Генератор
(ядро)
Симулятор
Ресурсы
Монитор
состояния
Конфигуратор
вызовов
Тестовая
программа
Команды
Institute for System Programming of the Russian Academy of Sciences (ISPRAS), 2013
8
Описание системы команд при помощи
формальных спецификаций
Языки описания архитектуры (ADL)
 nML
 Sim-nML
Преимущества
 Простота
 Расширяемость
 Возможность извлечения тестовых знаний
Institute for System Programming of the Russian Academy of Sciences (ISPRAS), 2013
9
Язык Sim-nML: Спецификация ресурсов
микропроцессора
Типы данных:
type dword = card(64)
type word = card(32)
type hword = card(16)
type byte_t = card(8)
Константы и метки:
let REGS = 2**5
let byte_order = ”little”
let PC = "GPR[15]”
let SP = "GPR[13]”
Регистры:
reg GPR[REGS, word]
reg CPSR[word]
Память:
mem M[2 ** 10, byte_t]
Переменные:
var temp[1,word]
var shifter_carry_out[1,bit]
var ALU_OUT[1,word]
Institute for System Programming of the Russian Academy of Sciences (ISPRAS), 2013
10
Язык Sim-nML: Спецификация команд
Композиция примитивов, OR- и AND-правила
op instruction(x: arith_mem_inst) Instruction
REG
mov
eax,
ebx
syntax = x.syntax
image = x.image
op Mov()
IREG
action = x.action
AND-правило
syntax = "mov“
OPRND
image = "10“
Arithm
op arith_mem_inst(y:
Add_sub_mov,
OPRNDL,
op2:}OPRNDR)
MEM
action op1:
= { DEST
= SRC2;
syntax = format("%s %s %s", y.syntax, op1.syntax, op2.syntax)
image = format("%s %s 00%s",op
y.image,
op1.image,
op2.image)
Add_sub_mov
= Add
| Sub | Mov
action = {
OPRND
REG
SRC1 = Add_Mov_Sub
op1;
mode REG(i: nibble)=R[i]
SRC2 = op2;
syntax = format("R%d", i)
y.action;
image = format("01%4b", i)
IREG
op1 = DEST;
PC = PC + 2;
mode OPRNDL = MEM | REG | IREG
Add
Mov
Sub
}
MEM
op Add_sub_mov = Add | Sub | Mov
OR-правило
Institute for System Programming of the Russian Academy of Sciences (ISPRAS), 2013
11
Язык Sim-nML: Анализ кода
op ADD(rd: GPR, rs: GPR, rt: GPR)
action = {
if(NotWordValue(rs) || NotWordValue(rt)) then
UNPREDICTABLE();
endif;
tmp_word = rs<31..31>::rs<31..0> +
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
12
Построение модели в MicroTESK
Трансляции спецификации на Sim-nML в Java-модель
Транслятор
AST
Парсер
Sim-nML
Парсер
AST
IR
Генератор
кода
Модель
API модели
Institute for System Programming of the Russian Academy of Sciences (ISPRAS), 2013
13
Внутреннее представление (IR)
Список таблиц примитивов:
 Константы
 Метки
 Типы данных
 Ресурсы (регистры, память, переменные)
 Операции и режимы доступа (op и mode)
 Параметры
 Результат
 Атрибуты
Institute for System Programming of the Russian Academy of Sciences (ISPRAS), 2013
14
API модели системы команд
Основные библиотеки:
 Data library
 Metadata
 Memory
 Instructions
 Simulation
 Monitoring
Institute for System Programming of the Russian Academy of Sciences (ISPRAS), 2013
15
Программное представление модели
Модель
Инструкции
Ресурсы
Операции
Режимы
адресации
@Override
public IInstructionCall getCall() throws ConfigurationException
{
final IAddressingMode op1 = getArgument("op1");
final IAddressingMode op2 = getArgument("op2");
return new InstructionCall(
new Instruction(new Arith_Mem_Inst(new Mov(), op1, op2)));
}
Institute for System Programming of the Russian Academy of Sciences (ISPRAS), 2013
16
Заключение
Достигнутые результаты:
 API для моделирования ISA
 Транслятор языка Sim-nML
 Модель для ARM
Дальнейшие планы:
 Интеграция модели ISA с моделью MMU
 Извлечение тестовых знаний
Institute for System Programming of the Russian Academy of Sciences (ISPRAS), 2013
17
Спасибо!
Вопросы?
Institute for System Programming of the Russian Academy of Sciences (ISPRAS), 2013
18
Download