Project

General

Profile

Actions

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.7, подробнее http://forge.ispras.ru/projects/microtesk/wiki/Installation_Guide)
    Запустить сборку из корневого каталога:
    1. с выполнением тестов:
      gradle build
    2. без выполнения тестов:
      gradle assemble
  3. Переменные среды
    Установить переменную MICROTESK_HOME:
    MICROTESK_HOME = каталог_установки/microtesk-powerpc/build/target
    
  4. Спецификации: microtesk-powerpc/src/main/arch/powerpc/model (спецификации арифметических инструкций: powerpc_alu.nml).
    Собрать модель (из директория спецификаций):
    $MICROTESK_HOME/bin/compile.sh powerpc.nml mmu/powerpc.mmu --extension-dir ../extensions
    
  5. Тестовые шаблоны: microtesk-powerpc/src/main/arch/powerpc/templates (базовый шаблон для арифметических инструкций: instruction_alu.rb).
    Запустить обработку шаблона (из директория шаблонов):
    $MICROTESK_HOME/bin/generate.sh powerpc instruction_alu.rb --code-file-prefix instruction_alu --code-file-extension s -v
    

После запуска шаблонов ассемблерный код и Tarmac-трасса будут находится в директории ../microtesk-powerpc/build/target.

Особенности разработки спецификаций

  1. Комментарий к спецификации
    1. Название
      /*
        Add Immediate
      
    2. Расшифровка кодировки команды. Важно отметить, что в описании PowerPC биты упорядочены от 0 до 31; в спецификации их необходимо располагать в обратном порядке, как показано ниже:
        Encoding: | 31 16 | 15 11 | 10 6 | 5    0 |
                  | SI    | RA    | RT   |        |
                  |       |       |      | 001110 |
                  | 16    | 5     | 5    | 6      |
      
    3. Формат записи команды
        Format:
          addi RT,RA,SIMM
      
    4. Описание
        Description:
          if rA=0 then a ← 64(0) else a ← (rA)
          rD ← a + EXTS(SIMM)
      
          If rA=0, the sign-extended value of the SIMM field is placed into rD.
          If rA≠0, the sum of the contents of rA and the sign-extended value of field SIMM is placed into rD.
      
    5. Зависимости
        Special Registers Altered:
          None
        */
      
  2. Спецификация инструкции
    1. Объявление инструкции
      op addi (rt: R, ra: R, simm: SHORT)
      
    2. Инициализация данных инструкции
        init = {
          OPCD = coerce(card(6), 0b001110);
        }
      
    3. Ассемблерный формат инструкции
        syntax = format("addi %s, %s, %d", rt.syntax, ra.syntax, simm)
      
    4. Бинарная кодировка инструкции
        image  = format("%16s%5s%5s%6s", si, ra.image, rt.image, OPCD)
      
    5. Семантика инструкции
        action = {
          ra.action; // output: gpr_reg_number
          if gpr_reg_number == coerce(card(5), 0) then
            temp = 0;
          else
            temp = ra;
          endif;
      
          rt<31..0> = cast(WORD, cast(INT, temp) + cast(INT, sign_extend(WORD, cast(HWORD, simm))));
        }
      
  3. Группировка инструкций
    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 almost 4 years ago · 20 revisions