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> |