Project

General

Profile

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

Revision 11 (Alexander Kamkin, 10/26/2016 01:42 PM) → Revision 12/20 (Alexander Kamkin, 10/26/2016 01:46 PM)

h1. Getting Started with MicroTESK - PowerPC Edition 

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

 # Репозиторий проекта:    http://forge.ispras.ru/projects/microtesk-powerpc/repository 
 Создать локальную копию проекта: 
 <pre> 
 git clone https://forge.ispras.ru/git/microtesk-powerpc.git 
 </pre> 
 # Сборка проекта (необходимо наличие 
 Необходимо наличие: Gradle 2.9 и 2.9, Java 1.8.0, подробнее 1.8.0 (Подробнее http://forge.ispras.ru/projects/microtesk/wiki/Installation_Guide) 
 Запускаем сборку из корневого каталога:  
 ## с выполнением тестов:    <pre>gradle build</pre> <pre> gradle build </pre> 
 ## без выполнения тестов: <pre>gradle assemble</pre> <pre> gradle assemble </pre> 
 # Переменные среды 
 Необходимо установить 
 <pre> 
 MICROTESK_HOME = каталог_установки\microtesk-powerpc\build\target "Каталог установки"\microtesk-powerpc\build\target 
 </pre> 
 # Модель и спецификация находятся по адресу: microtesk-powerpc\src\main\arch\powerpc\model 
 @powerpc_alu.nml@ powerpc_alu.nml - предлагается начать с арифметических инструкций. 
 (Реализованы инструкции на момент написания данного текста: @add@, @add.@, @addi@, @ori@. теста: add, add., addi, ori. Можно использовать как пример.) 
 Запуск сборки модели из этой папки: 
 <pre> 
 %MICROTESK_HOME%\bin\compile.bat powerpc.nml mmu/powerpc.mmu --extension-dir ../extensions 
 </pre> 
 # Шаблоны тестов: microtesk-powerpc\src\main\arch\powerpc\templates 
 @instruction_alu.rb@ instruction_alu.rb - базовый шаблон для проверки корректности работы арифметических инструкций. 
 Запуск шаблона из этой папки: 
 <pre> 
 %MICROTESK_HOME%\bin\generate.bat powerpc instruction_alu.rb --code-file-prefix instruction_alu --code-file-extension s -v 
 </pre> 

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

 h2. Особенности написания спецификации 

 # Описание инструкции 
 ## Название 
 <pre> 
 /* 
   Add Immediate D-form 
 </pre> 
 ## Расшифровка кодировки команды. Важно отметить, что в документации для PowerPC поля упорядочены от 0 до 31, для унификации спецификаций необходимо их располагать в обратном порядке, а именно от 31 до 0, как показано ниже: 
 <pre> 
   Encoding: | 31 16 | 15 11 | 10 6 | 5 0 | 
             | SI      | RA      | RT     |       | 
             |         |         |        | 14    | 
             | 16      | 5       | 5      | 6     | 
 </pre> 
 ## Формат записи команды 
 <pre> 
   Format: 
     addi RT,RA,SI 

 </pre> 
 ## Описание 
 <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> 
 ## Зависимости 
 <pre> 
   Special Registers Altered: 
     None 
   */ 
 </pre> 
 # Реализация 
 ## Объявление инструкции 
 <pre> 
 op addi (rt: R, ra: R, si: SHORT) 
 </pre> 
 ## Инициализация данных для инструкции 
 <pre> 
   init = { 
     OPCD = coerce(card(6), 14); 
   } 
 </pre> 
 ## Формат вывода команды в ассемблерном коде 
 <pre> 
   syntax = format("addi %s, %s, %d", rt.syntax, ra.syntax, si) 
 </pre> 
 ## Формирование кода команды 
 <pre> 
   image    = format("%16s%5s%5s%6s", si, ra.image, rt.image, OPCD) 
 </pre> 
 ## Реализация инструкции 
 <pre> 
   action = { 
     rt<31..0> = cast(WORD, cast(INT, ra) + cast(INT, sign_extend(WORD, cast(HWORD, si)))); 
   } 
 </pre> 
 ## Добавление инструкции в общий пул 
 <pre> 
 op PowerPCArithmetic = add 
                      | add_d 
                      | addi 
                      | ori 
 </pre> 

 h2. Дополнительно 

 Для включения генерации 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@ microtesk-powerpc\src\main\etc\settings.xml 

 <pre> 
 Добавить строку: @<setting <setting name="tarmac-log" value="true"/>@ value="true"/> 
 </pre>