Skip to content

Latest commit

 

History

History
47 lines (37 loc) · 2.98 KB

kernel_start_sim.adoc

File metadata and controls

47 lines (37 loc) · 2.98 KB

После установки необходимого ПО можно описать свой код в директории /program.

Запуск в SPIKE

Когда код написан, то его требуется скомпилировать. Для этого есть Makefile в директории /program.

make

Если происходило дополнительное подключение библиотек или что-то подобное, то нужно скорректировать строчку, вызывающую компиляцию. Изменять имя выходного файла(main) не рекомендуется

riscv32-unknown-elf-gcc -march=rv32im main.c -g -O0 -o main

В ходе выполнения make произойдет следующее:

  1. Сгенерируется obj файл main

  2. Сгенерируется disassemble программы(для возможности изучения запускаемого кода)

  3. Сгенерируется файл mem.v для запуска кода на RTL процессоре.

  4. Выполнится bash скрипт для запуска кода в SPIKE и созранения лога выполнения

Лог получается с помощью утилиты expect, которая предназначена для общения с интерактивными программами. Это требуется для сохранения значения всех регистров на этапе выполнения кода.

Прим. На данный момент получение лога не совсем корректное ввиду несовершенства владения утилитой expect. Требуется доработка(а может быть и так сойдет :))

Запуск на RTL процессоре

Переходим в папку /sim. Для запуска всего процесса есть Makefile.

make modelsim

В ходе выполнения произойдет следующее:

  1. Вызов Makefile в дирекотрии /program (что произойдет см. раздел Запуск в SPIKE)

  2. Запуск Modelsim

  3. Запуск скрипта сравнения результатов от RTL процессора и SPIKE.

Modelsim запустится с помощью скрипта(в зависимости от системы .sh или .bat). При желании можно скорректировать modelsim.tcl, где указаны папки с verilog файлами и выводимые при запуске сигналы.

Прим. Если что-то при запуске идет не так, то следует обратить внимание на стартовый адрес, указанный в /testbench/rv_core_testbench.sv

assign boot_addr = 'h1018c;