Project

General

Profile

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

Alexander Kamkin, 10/26/2016 01:46 PM

1 1 Alexander Protsenko
h1. Getting Started with MicroTESK - PowerPC Edition
2
3 6 Alexander Kamkin
h2. Начало работы с @MicroTESK - PowerPC Edition@
4 11 Alexander Kamkin
5 10 Alexander Kamkin
# Репозиторий проекта:  http://forge.ispras.ru/projects/microtesk-powerpc/repository
6 1 Alexander Protsenko
Создать локальную копию проекта:
7 5 Alexander Kamkin
<pre>
8 1 Alexander Protsenko
git clone https://forge.ispras.ru/git/microtesk-powerpc.git
9
</pre>
10 12 Alexander Kamkin
# Сборка проекта (необходимо наличие Gradle 2.9 и Java 1.8.0, подробнее http://forge.ispras.ru/projects/microtesk/wiki/Installation_Guide)
11 5 Alexander Kamkin
Запускаем сборку из корневого каталога: 
12 12 Alexander Kamkin
## с выполнением тестов:  <pre>gradle build</pre>
13
## без выполнения тестов: <pre>gradle assemble</pre>
14 10 Alexander Kamkin
# Переменные среды
15 1 Alexander Protsenko
Необходимо установить
16
<pre>
17 12 Alexander Kamkin
MICROTESK_HOME = каталог_установки\microtesk-powerpc\build\target
18 1 Alexander Protsenko
</pre>
19 3 Alexander Kamkin
# Модель и спецификация находятся по адресу: microtesk-powerpc\src\main\arch\powerpc\model
20 12 Alexander Kamkin
@powerpc_alu.nml@ - предлагается начать с арифметических инструкций.
21
(Реализованы инструкции на момент написания данного текста: @add@, @add.@, @addi@, @ori@. Можно использовать как пример.)
22 6 Alexander Kamkin
Запуск сборки модели из этой папки:
23 10 Alexander Kamkin
<pre>
24 1 Alexander Protsenko
%MICROTESK_HOME%\bin\compile.bat powerpc.nml mmu/powerpc.mmu --extension-dir ../extensions
25 10 Alexander Kamkin
</pre>
26 1 Alexander Protsenko
# Шаблоны тестов: microtesk-powerpc\src\main\arch\powerpc\templates
27 12 Alexander Kamkin
@instruction_alu.rb@ - базовый шаблон для проверки корректности работы арифметических инструкций.
28 1 Alexander Protsenko
Запуск шаблона из этой папки:
29 10 Alexander Kamkin
<pre>
30 6 Alexander Kamkin
%MICROTESK_HOME%\bin\generate.bat powerpc instruction_alu.rb --code-file-prefix instruction_alu --code-file-extension s -v
31 10 Alexander Kamkin
</pre>
32 1 Alexander Protsenko
33
После запуска шаблонов, ассемблерный код и Tarmac-лог будут находится тут: ..\microtesk-powerpc\build\target
34
35 6 Alexander Kamkin
h2. Особенности написания спецификации
36 1 Alexander Protsenko
37 6 Alexander Kamkin
# Описание инструкции
38
## Название
39 1 Alexander Protsenko
<pre>
40
/*
41
  Add Immediate D-form
42
</pre>
43 7 Alexander Kamkin
## Расшифровка кодировки команды. Важно отметить, что в документации для PowerPC поля упорядочены от 0 до 31, для унификации спецификаций необходимо их располагать в обратном порядке, а именно от 31 до 0, как показано ниже:
44 1 Alexander Protsenko
<pre>
45
  Encoding: | 31 16 | 15 11 | 10 6 | 5 0 |
46
            | SI    | RA    | RT   |     |
47
            |       |       |      | 14  |
48
            | 16    | 5     | 5    | 6   |
49
</pre>
50 7 Alexander Kamkin
## Формат записи команды
51 1 Alexander Protsenko
<pre>
52
  Format:
53
    addi RT,RA,SI
54
55
</pre>
56 7 Alexander Kamkin
## Описание
57 1 Alexander Protsenko
<pre>
58
  Description:
59
    if RA = 0 then RT <- EXTS(SI)
60
    else RT <- (RA) + EXTS(SI)
61
    The sum (RA|0) + SI is placed into register RT.
62
</pre>
63 7 Alexander Kamkin
## Зависимости
64 1 Alexander Protsenko
<pre>
65
  Special Registers Altered:
66
    None
67
  */
68
</pre>
69 7 Alexander Kamkin
# Реализация
70
## Объявление инструкции
71 1 Alexander Protsenko
<pre>
72
op addi (rt: R, ra: R, si: SHORT)
73
</pre>
74 7 Alexander Kamkin
## Инициализация данных для инструкции
75 1 Alexander Protsenko
<pre>
76
  init = {
77
    OPCD = coerce(card(6), 14);
78
  }
79
</pre>
80 7 Alexander Kamkin
## Формат вывода команды в ассемблерном коде
81 1 Alexander Protsenko
<pre>
82
  syntax = format("addi %s, %s, %d", rt.syntax, ra.syntax, si)
83
</pre>
84 7 Alexander Kamkin
## Формирование кода команды
85 1 Alexander Protsenko
<pre>
86
  image  = format("%16s%5s%5s%6s", si, ra.image, rt.image, OPCD)
87
</pre>
88 7 Alexander Kamkin
## Реализация инструкции
89 1 Alexander Protsenko
<pre>
90
  action = {
91
    rt<31..0> = cast(WORD, cast(INT, ra) + cast(INT, sign_extend(WORD, cast(HWORD, si))));
92
  }
93
</pre>
94 7 Alexander Kamkin
## Добавление инструкции в общий пул
95 1 Alexander Protsenko
<pre>
96
op PowerPCArithmetic = add
97
                     | add_d
98
                     | addi
99
                     | ori
100
</pre>
101
102
h2. Дополнительно
103 7 Alexander Kamkin
104 1 Alexander Protsenko
Для включения генерации Tarmac-логов нужно указывать следующую опцию командной строки:
105 8 Alexander Kamkin
106 1 Alexander Protsenko
<pre>
107 9 Alexander Kamkin
-tl,--tarmac-log     Enables generation of Tarmac logs for simulation [works with --g], default=false
108 1 Alexander Protsenko
</pre>
109 8 Alexander Kamkin
110 12 Alexander Kamkin
Либо в файле @microtesk-powerpc\src\main\etc\settings.xml@
111 8 Alexander Kamkin
112 1 Alexander Protsenko
<pre>
113 12 Alexander Kamkin
Добавить строку: @<setting name="tarmac-log" value="true"/>@
114 1 Alexander Protsenko
</pre>