Project

General

Profile

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

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

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