Getting Started with MicroTESK - PowerPC Edition » History » Revision 2
Revision 1 (Alexander Protsenko, 10/26/2016 01:32 PM) → Revision 2/20 (Alexander Kamkin, 10/26/2016 01:35 PM)
h1. Getting Started with MicroTESK - PowerPC Edition Начало работы с MicroTESK - PowerPC Edition # 1. Репозиторий проекта: http://forge.ispras.ru/projects/microtesk-powerpc/repository Создать локальную копию проекта: <pre> git clone https://forge.ispras.ru/git/microtesk-powerpc.git </pre> 2. Сборка проекта Необходимо наличие: Gradle 2.9, Java 1.8.0 (Подробнее http://forge.ispras.ru/projects/microtesk/wiki/Installation_Guide) Запускаем сборку из корневого каталога: с выполнением тестов: <pre> gradle build </pre> без выполнения тестов: <pre> gradle assemble </pre> 3. Переменные среды Необходимо установить <pre> MICROTESK_HOME = "Каталог установки"\microtesk-powerpc\build\target </pre> 4. Модель и спецификация находятся по адресу: microtesk-powerpc\src\main\arch\powerpc\model powerpc_alu.nml - предлагается начать с арифметических инструкций. (Реализованы инструкции на момент написания данного теста: add, add., addi, ori. Можно использовать как пример.) Запуск сборки модели из этой папки: %MICROTESK_HOME%\bin\compile.bat powerpc.nml mmu/powerpc.mmu --extension-dir ../extensions 5. Шаблоны тестов: microtesk-powerpc\src\main\arch\powerpc\templates instruction_alu.rb - базовый шаблон для проверки корректности работы арифметических инструкций. Запуск шаблона из этой папки: %MICROTESK_HOME%\bin\generate.bat powerpc instruction_alu.rb --code-file-prefix instruction_alu --code-file-extension s -v После запуска шаблонов, ассемблерный код и Tarmac-лог будут находится тут: ..\microtesk-powerpc\build\target *Особенности написания спецификации* 1. Описание инструкции 1.1 Название <pre> /* Add Immediate D-form </pre> 1.2 Расшифровка кодировки команды. Важно отметить, что в документации для PowerPC поля упорядочены от 0 до 31, для унификации спецификаций необходимо их располагать в обратном порядке, а именно от 31 до 0, как показано ниже: <pre> Encoding: | 31 16 | 15 11 | 10 6 | 5 0 | | SI | RA | RT | | | | | | 14 | | 16 | 5 | 5 | 6 | </pre> 1.3 Формат записи команды <pre> Format: addi RT,RA,SI </pre> 1.4 Описание <pre> Description: if RA = 0 then RT <- EXTS(SI) else RT <- (RA) + EXTS(SI) The sum (RA|0) + SI is placed into register RT. </pre> 1.5 Зависимости <pre> Special Registers Altered: None */ </pre> 2. Реализация 2.1 Объявление инструкции <pre> op addi (rt: R, ra: R, si: SHORT) </pre> 2.2 Инициализация данных для инструкции <pre> init = { OPCD = coerce(card(6), 14); } </pre> 2.3 Формат вывода команды в ассемблерном коде <pre> syntax = format("addi %s, %s, %d", rt.syntax, ra.syntax, si) </pre> 2.4 Формирование кода команды <pre> image = format("%16s%5s%5s%6s", si, ra.image, rt.image, OPCD) </pre> 2.5 Реализация инструкции <pre> action = { rt<31..0> = cast(WORD, cast(INT, ra) + cast(INT, sign_extend(WORD, cast(HWORD, si)))); } </pre> 2.6 Добавление инструкции в общий пул <pre> op PowerPCArithmetic = add | add_d | addi | ori </pre> *Дополнительно:* Для включения генерации Tarmac-логов нужно указывать следующую опцию командной строки: <pre> -tl,--tarmac-log Enables generation of Tarmac logs for simulation [works with --g], default=false </pre> Либо в файле microtesk-powerpc\src\main\etc\settings.xml <pre> Добавить строку: <setting name="tarmac-log" value="true"/> </pre>