Project

General

Profile

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

Revision 18 (Alexander Kamkin, 10/26/2016 02:17 PM) → Revision 19/20 (Alexander Protsenko, 10/26/2016 03:40 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 и Java 1.7, подробнее http://forge.ispras.ru/projects/microtesk/wiki/Installation_Guide) 
 Запустить сборку из корневого каталога:  
 ## с выполнением тестов:    <pre>gradle build</pre> 
 ## без выполнения тестов: <pre>gradle assemble</pre> 
 # *Переменные среды* 
 Установить переменную @MICROTESK_HOME@: 
 <pre> 
 MICROTESK_HOME = каталог_установки/microtesk-powerpc/build/target 
 </pre> 
 # *Спецификации*: @microtesk-powerpc/src/main/arch/powerpc/model@ (спецификации арифметических инструкций: @powerpc_alu.nml@). 
 Собрать модель (из директория спецификаций): 
 <pre> 
 $MICROTESK_HOME/bin/compile.sh powerpc.nml mmu/powerpc.mmu --extension-dir ../extensions 
 </pre> 
 # *Тестовые шаблоны*: @microtesk-powerpc/src/main/arch/powerpc/templates@ (базовый шаблон для арифметических инструкций: @instruction_alu.rb@). 
 Запустить обработку шаблона (из директория шаблонов): 
 <pre> 
 $MICROTESK_HOME/bin/generate.sh 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; в спецификации их необходимо располагать в обратном порядке, как показано ниже: 
 <pre> 
   Encoding: | 31 16 | 15 11 | 10 6 | 5      0 | 
             | SI      | RA      | RT     |                | 
             |         |         |        | 001110 14    | 
             | 16      | 5       | 5      | 6            | 
 </pre> 
 ## Формат записи команды 
 <pre> 
   Format: 
     addi RT,RA,SIMM 
 RT,RA,SI 

 </pre> 
 ## Описание 
 <pre> 
   Description: 
     if rA=0 RA = 0 then a ← 64(0) RT <- EXTS(SI) 
     else a ← (rA) 
     rD ← a RT <- (RA) + EXTS(SIMM) 
  
     If rA=0, the sign-extended value of the SIMM field is placed into rD. EXTS(SI) 
     If rA≠0, the The sum of the contents of rA and the sign-extended value of field SIMM (RA|0) + SI is placed into rD. register RT. 
 </pre> 
 ## Зависимости 
 <pre> 
   Special Registers Altered: 
     None 
   */ 
 </pre> 
 # *Спецификация инструкции* 
 ## Объявление инструкции 
 <pre> 
 op addi (rt: R, ra: R, simm: si: SHORT) 
 </pre> 
 ## Инициализация данных инструкции 
 <pre> 
   init = { 
     OPCD = coerce(card(6), 0b001110); 14); 
   } 
 </pre> 
 ## Ассемблерный формат инструкции 
 <pre> 
   syntax = format("addi %s, %s, %d", rt.syntax, ra.syntax, simm) si) 
 </pre> 
 ## Бинарная кодировка инструкции 
 <pre> 
   image    = format("%16s%5s%5s%6s", si, ra.image, rt.image, OPCD) 
 </pre> 
 ## Семантика инструкции 
 <pre> 
   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) ra) + cast(INT, sign_extend(WORD, cast(HWORD, simm)))); 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@: 

 <pre> 
 <setting name="tarmac-log" value="true"/> 
 </pre>