Project

General

Profile

Actions

Getting Started with MicroTESK - PowerPC Edition » History » Revision 1

Revision 1/20 | Next »
Alexander Protsenko, 10/26/2016 01:32 PM


Getting Started with MicroTESK - PowerPC Edition

Начало работы с MicroTESK - PowerPC Edition

1. Репозиторий проекта: http://forge.ispras.ru/projects/microtesk-powerpc/repository
Создать локальную копию проекта:

git clone https://forge.ispras.ru/git/microtesk-powerpc.git

2. Сборка проекта
Необходимо наличие: Gradle 2.9, Java 1.8.0 (Подробнее http://forge.ispras.ru/projects/microtesk/wiki/Installation_Guide)
Запускаем сборку из корневого каталога:
с выполнением тестов:

 gradle build 

без выполнения тестов:
 gradle assemble 

3. Переменные среды
Необходимо установить

MICROTESK_HOME = "Каталог установки"\microtesk-powerpc\build\target

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 Название

/*
  Add Immediate D-form

1.2 Расшифровка кодировки команды.
Важно отметить, что в документации для PowerPC поля упорядочены от 0 до 31, для унификации спецификаций необходимо их располагать в обратном порядке, а именно от 31 до 0, как показано ниже:
  Encoding: | 31 16 | 15 11 | 10 6 | 5 0 |
            | SI    | RA    | RT   |     |
            |       |       |      | 14  |
            | 16    | 5     | 5    | 6   |

1.3 Формат записи команды
  Format:
    addi RT,RA,SI


1.4 Описание
  Description:
    if RA = 0 then RT <- EXTS(SI)
    else RT <- (RA) + EXTS(SI)
    The sum (RA|0) + SI is placed into register RT.

1.5 Зависимости
  Special Registers Altered:
    None
  */

2. Реализация
2.1 Объявление инструкции
op addi (rt: R, ra: R, si: SHORT)

2.2 Инициализация данных для инструкции
  init = {
    OPCD = coerce(card(6), 14);
  }

2.3 Формат вывода команды в ассемблерном коде
  syntax = format("addi %s, %s, %d", rt.syntax, ra.syntax, si)

2.4 Формирование кода команды
  image  = format("%16s%5s%5s%6s", si, ra.image, rt.image, OPCD)

2.5 Реализация инструкции
  action = {
    rt<31..0> = cast(WORD, cast(INT, ra) + cast(INT, sign_extend(WORD, cast(HWORD, si))));
  }

2.6 Добавление инструкции в общий пул

op PowerPCArithmetic = add
                     | add_d
                     | addi
                     | ori

Дополнительно:
Для включения генерации Tarmac-логов нужно указывать следующую опцию командной строки:

-tl,--tarmac-log     Enables generation of Tarmac logs for simulation 
[works with --g],  default=false

Либо в файле microtesk-powerpc\src\main\etc\settings.xml
Добавить строку:   <setting name="tarmac-log" value="true"/>

Updated by Alexander Protsenko about 8 years ago · 20 revisions