Getting Started with MicroTESK - PowerPC Edition » History » Revision 9
Revision 8 (Alexander Kamkin, 10/26/2016 01:41 PM) → Revision 9/20 (Alexander Kamkin, 10/26/2016 01:41 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.8.0 (Подробнее http://forge.ispras.ru/projects/microtesk/wiki/Installation_Guide)
Запускаем сборку из корневого каталога:
** с выполнением тестов: <pre> gradle build </pre>
** без выполнения тестов: <pre> gradle assemble </pre>
* Переменные среды
Необходимо установить
<pre>
MICROTESK_HOME = "Каталог установки"\microtesk-powerpc\build\target
</pre>
# Модель и спецификация находятся по адресу: microtesk-powerpc\src\main\arch\powerpc\model
powerpc_alu.nml - предлагается начать с арифметических инструкций.
(Реализованы инструкции на момент написания данного теста: add, add., addi, ori. Можно использовать как пример.)
Запуск сборки модели из этой папки:
%MICROTESK_HOME%\bin\compile.bat powerpc.nml mmu/powerpc.mmu --extension-dir ../extensions
# Шаблоны тестов: microtesk-powerpc\src\main\arch\powerpc\templates
instruction_alu.rb - базовый шаблон для проверки корректности работы арифметических инструкций.
Запуск шаблона из этой папки:
%MICROTESK_HOME%\bin\generate.bat powerpc instruction_alu.rb --code-file-prefix instruction_alu --code-file-extension s -v
После запуска шаблонов, ассемблерный код и Tarmac-лог будут находится тут: ..\microtesk-powerpc\build\target
h2. Особенности написания спецификации
# Описание инструкции
## Название
<pre>
/*
Add Immediate D-form
</pre>
## Расшифровка кодировки команды. Важно отметить, что в документации для PowerPC поля упорядочены от 0 до 31, для унификации спецификаций необходимо их располагать в обратном порядке, а именно от 31 до 0, как показано ниже:
<pre>
Encoding: | 31 16 | 15 11 | 10 6 | 5 0 |
| SI | RA | RT | |
| | | | 14 |
| 16 | 5 | 5 | 6 |
</pre>
## Формат записи команды
<pre>
Format:
addi RT,RA,SI
</pre>
## Описание
<pre>
Description:
if RA = 0 then RT <- EXTS(SI)
else RT <- (RA) + EXTS(SI)
The sum (RA|0) + SI is placed into register RT.
</pre>
## Зависимости
<pre>
Special Registers Altered:
None
*/
</pre>
# Реализация
## Объявление инструкции
<pre>
op addi (rt: R, ra: R, si: SHORT)
</pre>
## Инициализация данных для инструкции
<pre>
init = {
OPCD = coerce(card(6), 14);
}
</pre>
## Формат вывода команды в ассемблерном коде
<pre>
syntax = format("addi %s, %s, %d", rt.syntax, ra.syntax, si)
</pre>
## Формирование кода команды
<pre>
image = format("%16s%5s%5s%6s", si, ra.image, rt.image, OPCD)
</pre>
## Реализация инструкции
<pre>
action = {
rt<31..0> = cast(WORD, cast(INT, ra) + cast(INT, sign_extend(WORD, cast(HWORD, 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>