Copyright (C) 2018-2020, Wuklab, UCSD.
Это операционная система (ОС), работающая внутри FPGA, предоставляющая знакомые абстракции ОС (например, MM, SHAD, NET) для приложений FPGA. Это включенный прототип исследования на ранней стадии. Большая часть кода написана в Xilinx HLS. Он был протестирован на VCU118 и VCU108.
Это обнародовано для образовательных целей. Надеюсь, вы найдете это полезным.
host/ : Степень сети хоста и драйверы DMAalloc/ : Allocator памятиmm/ : управление памятьюnet/ : сетевая подсистемаkernel/ : какой -то PR -кодsystem/ : Окончательные большие интегрированные системыapp/ : Приложение может иметь как FPGA, так и код хоста.include/ : файлы заголовков, используемые как FPGA, так и кодом хоста. Например, сетевые заголовки.include/fpga : заголовки, используемые только HLSinclude/uapi : заголовки, используемые как HLS, так и кодом хостаtools/ : Различные помощникиscripts/ : Файлы сценариев шаблонаgenerated_ip/ : все сгенерированные IPS Sleep ЗДЕСЬgenerated_hls_project/ : Vivado HLS Projectgenerated_vivado_project/ : Vivado ProjectФормат:
run_hls.tcl name.mm_axi_wrapper - это IP обертка AXI в подсистеме MM.make help , чтобы увидеть подробное объяснение.make на верхнем уровне будет компилировать весь проект с помощью платы по умолчанию.system/ папкеmake в каждой подпапке будет компилировать только эту папку.Рабочий процесс: Вы должны скомпилировать проект при первой загрузке исходного кода. Все маленькие, средние IPS и крупные проекты будут готовы к использованию. После этого вы можете сосредоточиться на IPS, которые вы строите. Изменения будут отражены автоматически в Вивадо.
Кроме того, обратите внимание на на какую доску вы нацеливаетесь.
Цель использования сценариев в два раза
generated_vivado_project/ в той же папке, где соответствующий скрипт и исходный код.Эти сценарии проекта Vivado создаются самими Вивадо. И эти сценарии могут быть использованы для восстановления всего проекта, как есть.
Это мои неформальные шаги для создания и взлома этих сценариев:
Бегать:
vivado -mode tcl -source run_vivado.tclgenerated_vivado_project/ будет создан в текущей папкеgenerated_ip/ папку.Создание:
write_project_tcl для генерации скрипта. Вы должны сообщить новому сценарию, что generated_vivado_project проект должен быть размещен под папкой. И вы должны назвать скрипт на run_vivado.tcl .write_project_tcl -force -no_copy_sources -target_proj_dir ./generated_vivado_project ./run_vivado.tclwrite_project_tcl -force -target_proj_dir ./generated_vivado_project ./run_vivado.tclВзлом:
Добавить IP-пути в скрипт верхнего уровня:
generated_ip/ папке. Это облегчает отслеживание IP. Вы можете добавить несколько строк в сценарий, чтобы Vivado знал, где искать новые IPS. Проверьте scripts/template_vivado_ip.tcl для этих строк.Пакет IP автоматически:
generated_ip/ . Например, ipx::package_project -root_dir ../../generated_ip/mm_axi_wrapper -vendor wuklab -library user -taxonomy UserIP -import_files -set_current false -forceipx::package_project -root_dir ../../generated_ip/mm_axi_rab_vcu118 -vendor wuklab -library user -taxonomy UserIP -module THE_BD_NAME -import_filesДобавьте больше файлов Source/XDC/моделирования:
top.v , add_files и т. Д.write_project_tcl для создания другого сценария. Затем проверьте различия.Автогенсорная обертка BD
Другие настройки:
write_project_tcl для создания нового скрипта и сохранения соответствующих изменений. Как только вы познакомьтесь с командами Vivado, вы сможете выполнять вручную, изменив сценарий.Предостережения:
На данный момент вы можете найти примеры сценариев в mm/axi_wrapper/run_vivado.tcl и mm/sys/run_vivado.tcl .
Vivado поддерживает только одну IP -версию в каждой версии. Это супер аннонизирует, если мы используем сгенерированный сценарий. К счастью, есть один из способов обходной связи. Следующий код замените IP -строку переменной. Тем не менее, будьте осторожны, если обновленный IP имеет разные порты.
set axis_data_fifo [get_ipdefs -filter NAME==axis_data_fifo]
Replace all `xilinx.com:ip:axis_data_fifo:1.1` with `$axis_data_fifo
Сценарий Vivado HLS относительно проще, чем сценарий Vivado. Вы можете найти сценарий шаблона в scripts/template_run_hls.tcl . Вы должны настроить детали, добавленные файлы, частота и так. Если вы хотите автоматически построить несколько HLS в одной и той же папке, используйте scripts/template_generate_hls.sh