Project

General

Profile

Actions

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

« Previous | Revision 9/20 (diff) | Next »
Alexander Kamkin, 10/26/2016 01:41 PM


Getting Started with MicroTESK - PowerPC Edition

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

Создать локальную копию проекта:

git clone https://forge.ispras.ru/git/microtesk-powerpc.git
  • Сборка проекта

Необходимо наличие: Gradle 2.9, Java 1.8.0 (Подробнее http://forge.ispras.ru/projects/microtesk/wiki/Installation_Guide)

Запускаем сборку из корневого каталога:

  • с выполнением тестов:
     gradle build 
  • без выполнения тестов:
     gradle assemble 
  • Переменные среды

Необходимо установить

MICROTESK_HOME = "Каталог установки"\microtesk-powerpc\build\target
  1. Модель и спецификация находятся по адресу: 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

  1. Шаблоны тестов: 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. Название
      /*
        Add Immediate D-form
      
    2. Расшифровка кодировки команды. Важно отметить, что в документации для PowerPC поля упорядочены от 0 до 31, для унификации спецификаций необходимо их располагать в обратном порядке, а именно от 31 до 0, как показано ниже:
        Encoding: | 31 16 | 15 11 | 10 6 | 5 0 |
                  | SI    | RA    | RT   |     |
                  |       |       |      | 14  |
                  | 16    | 5     | 5    | 6   |
      
    3. Формат записи команды
        Format:
          addi RT,RA,SI
      
      
    4. Описание
        Description:
          if RA = 0 then RT <- EXTS(SI)
          else RT <- (RA) + EXTS(SI)
          The sum (RA|0) + SI is placed into register RT.
      
    5. Зависимости
        Special Registers Altered:
          None
        */
      
  2. Реализация
    1. Объявление инструкции
      op addi (rt: R, ra: R, si: SHORT)
      
    2. Инициализация данных для инструкции
        init = {
          OPCD = coerce(card(6), 14);
        }
      
    3. Формат вывода команды в ассемблерном коде
        syntax = format("addi %s, %s, %d", rt.syntax, ra.syntax, si)
      
    4. Формирование кода команды
        image  = format("%16s%5s%5s%6s", si, ra.image, rt.image, OPCD)
      
    5. Реализация инструкции
        action = {
          rt<31..0> = cast(WORD, cast(INT, ra) + cast(INT, sign_extend(WORD, cast(HWORD, si))));
        }
      
    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 Kamkin over 7 years ago · 9 revisions