Project

General

Profile

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

Alexander Protsenko, 10/26/2016 01:32 PM

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