180 likes | 346 Views
RAS. ISP. Генератор тестовых программ MicroTESK: средства моделирования системы команд микропроцессора. Андрей Татарников andrewt@ispras.ru. Institute for System Programming of the Russian Academy of Sciences (ISPRAS) http://hardware.ispras.ru. Создание и верификация микропроцессоров.
E N D
RAS ISP Генератор тестовых программ 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
Подходы к верификации микропроцессоров • Экспертиза • Формальную верификация • Имитационное тестирование • Модульное (сигналы) • Системное (тестовые программы) Institute for System Programming of the Russian Academy of Sciences (ISPRAS), 2013
Системное тестирование Тестовые программы lui s1,0x27 ori s1,s1,0xc8 lui s3,0x4e ori s3,s3,0xf7... Эталонная модель (эмулятор) на C Симулятордизайна (Verilog) ✕ Возникла ошибка Сравнение трасс Успешный прогон Institute for System Programming of the Russian Academy of Sciences (ISPRAS), 2013
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
Способы автоматической генерации тестов • Случайная • Комбинаторная • Основанная на ограничениях • Направленная генерация Institute for System Programming of the Russian Academy of Sciences (ISPRAS), 2013
Использование моделей в генераторах тестов • Основные компоненты • Ядро генератора • Модель микропроцессора • Модель системы команд • Тестовое знание • Генераторы основанные на моделях • RAVEN (Obsidian Software, now ARM) • Genesys-Pro (IBM Research) • MicroTESK (ISPRAS) Institute for System Programming of the Russian Academy of Sciences (ISPRAS), 2013
Организация модели микропроцессора в MicroTESK Модель Провайдер метаданных Симулятор Тестовая программа Генератор (ядро) Ресурсы Монитор состояния Команды Конфигуратор вызовов Institute for System Programming of the Russian Academy of Sciences (ISPRAS), 2013
Описание системы команд при помощи формальных спецификаций Языки описания архитектуры (ADL) • nML • Sim-nML Преимущества • Простота • Расширяемость • Возможность извлечения тестовых знаний Institute for System Programming of the Russian Academy of Sciences (ISPRAS), 2013
Язык Sim-nML: Спецификация ресурсов микропроцессора Регистры: reg GPR[REGS, word] reg CPSR[word] Память: mem M[2 ** 10, byte_t] Переменные: var temp[1,word] varshifter_carry_out[1,bit] var ALU_OUT[1,word] Типы данных: 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]” Institute for System Programming of the Russian Academy of Sciences (ISPRAS), 2013
Язык Sim-nML: Спецификация команд Композиция примитивов, OR-и AND-правила op instruction(x: arith_mem_inst) syntax = x.syntax image = x.image action = x.action oparith_mem_inst(y: Add_sub_mov, op1: OPRNDL, op2: OPRNDR) syntax = format("%s %s %s", y.syntax, op1.syntax, op2.syntax) image = format("%s %s 00%s", y.image, op1.image, op2.image) action = { SRC1 = op1; SRC2 = op2; y.action; op1 = DEST; PC = PC + 2; } opAdd_sub_mov = Add | Sub | Mov REG Instruction mov eax, ebx opMov() syntax = "mov“ image = "10“ action = { DEST = SRC2; } opAdd_sub_mov = Add | Sub | Mov mode REG(i: nibble)=R[i] syntax = format("R%d", i) image = format("01%4b", i) mode OPRNDL = MEM | REG | IREG IREG AND-правило OPRND Arithm MEM OPRND REG Add_Mov_Sub IREG Add Mov Sub MEM OR-правило Institute for System Programming of the Russian Academy of Sciences (ISPRAS), 2013
Язык 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
Построение модели в MicroTESK Трансляции спецификации на Sim-nML в Java-модель Транслятор Парсер AST Парсер AST IR Генератор кода Sim-nML Модель API модели Institute for System Programming of the Russian Academy of Sciences (ISPRAS), 2013
Внутреннее представление (IR) Список таблиц примитивов: • Константы • Метки • Типы данных • Ресурсы (регистры, память, переменные) • Операции и режимы доступа (op и mode) • Параметры • Результат • Атрибуты Institute for System Programming of the Russian Academy of Sciences (ISPRAS), 2013
API модели системы команд Основные библиотеки: • Data library • Metadata • Memory • Instructions • Simulation • Monitoring Institute for System Programming of the Russian Academy of Sciences (ISPRAS), 2013
Программное представление модели Модель Инструкции Ресурсы Операции Режимы адресации @Override publicIInstructionCallgetCall() throwsConfigurationException { final IAddressingMode op1 = getArgument("op1"); final IAddressingMode op2 = getArgument("op2"); return newInstructionCall( new Instruction(newArith_Mem_Inst(newMov(), op1, op2))); } Institute for System Programming of the Russian Academy of Sciences (ISPRAS), 2013
Заключение Достигнутые результаты: • API для моделирования ISA • Транслятор языка Sim-nML • Модель для ARM Дальнейшие планы: • Интеграция модели ISA с моделью MMU • Извлечение тестовых знаний Institute for System Programming of the Russian Academy of Sciences (ISPRAS), 2013
Спасибо!Вопросы? Institute for System Programming of the Russian Academy of Sciences (ISPRAS), 2013