Мне интересно, есть ли способ контроля версий в vivado для проекта VHDL. Один из способов - добавить номер версии к имени файла битового потока.
Возможно ли это? Какие еще есть варианты, если это невозможно?
заранее спасибо
Мне интересно, есть ли способ контроля версий в vivado для проекта VHDL. Один из способов - добавить номер версии к имени файла битового потока.
Возможно ли это? Какие еще есть варианты, если это невозможно?
заранее спасибо
Формат и размер информации о версии: какая версия? Натуральное число? Нить? Настоящий? Вы сохраняете дату или время? Вам нужен номер сборки? Требуется дополнительное место для версий субблока?
Источник версии и порядок разработки: что определяет версию? Это инструмент управления версиями? Вы вручную устанавливаете версию? Вам нужна автоматизация для обновления части информации о версии (отметка времени, номер сборки и т. Д.)?
Доступность / наблюдаемость версии: где вы хотите прочитать номер версии и сделать его видимым? В исходном коде? Внешний файл? Имя файла битового потока? Содержимое флеш-файла? Нужна ли вам логика FPGA для доступа к информации о версии (для чтения через канал связи, встроенный процессор и т. Д.)?
Зависимость от средств поставщика / устройства / системы / источника. Реализация и автоматизация информации о версии может зависеть от нескольких факторов: у каждого поставщика есть разные инструменты (даже в пределах одного поставщика). Разные устройства могут позволять вам делать разные вещи. Система, в которой вы работаете, может допускать различные формы автоматизации (ОС, установленные инструменты-скрипты и т. Д.). Исходные файлы (VHDL, Verilog, System C, ...) и структура каталогов могут повлиять на применимость вашего решения.
Самый гибкий способ - иметь какой-то скрипт-компоновщик, который может быть или не может быть привязан к вашему механизму управления версиями (makefile, perl, python и т. Д.). Подумайте о переносимости вашего проекта между дизайнерами и даже платформами дизайна (Windows, Linux и т. Д.).
Плюсы:
Минусы:
В Vivado есть хуки TCL, которые можно использовать для запуска при синтезе, реализации и т. Д.
Использование обработчика TCL pre-Synthesis позволит вам подключить скрипт для запуска непосредственно перед синтезом и реализовать механизм обновления информации о версии.
Использование хука TCL post-bitstream позволит вам подключить скрипт для запуска сразу после создания файла битового потока и создать имя файла, соответствующее вашей обновленной информации о версии, или другую заключительную операцию, которая может потребоваться.
Дополнительная информация:
http://www.xilinx.com/support/documentation/sw_manuals/xilinx2014_4/ug894-vivado-tcl-scripting.pdf
http://www.xilinx.com/support/documentation/sw_manuals/xilinx2014_4/ug835-vivado-tcl-ddf / а>
Плюсы:
Минусы:
Номер версии, номер сборки, метка времени и практически все, что вам нужно, можно изменить (в коде VHDL / Verilog) автоматически с помощью сценария, который анализирует известный формат файла. Я сделал это с помощью хуков Vivado TCL и хорошо отформатированного файла VHDL пакета. Работает как шарм.
Примечание. При обновлении исходных файлов с использованием хуков TCL до синтеза, Vivado будет думать, что файлы были изменены после этого, и будет рассматривать реализацию как не обновленную. Я добавил в сценарий команду для сохранения текущей отметки времени файла пакета, обновил ее, а затем записал отметку времени (то есть файл пакета навсегда сохранит свою системную дату и время).
Плюсы:
Минусы:
Обобщения на верхнем уровне модуля / объекта дизайна могут быть изменены с помощью инструмента синтеза, и к ним можно получить доступ с помощью логики дизайна.
Плюсы:
Минусы:
Большинство ПЛИС поддерживают стандарт IEEE Std. 1149.1 Функция JTAG USERCODE, которая дает пользователю 32-битное значение для идентификации битового потока. Это значение можно установить с помощью инструментов поставщика при создании файла битового потока. Однако это значение не может быть прочитано логикой FPGA (если вы не реализуете логику для чтения флэш-памяти и отслеживания правильного адреса для этого значения, что является большим излишеством).
Плюсы:
Минусы:
Подобно JTAG USERCODE, в Xilinx реализован регистр USR_ACCESS для Virtex-5, Virtex-6 и всех устройств 7-й серии. Они предоставили примитив для VHDL / Verilog, позволяющий читать значение с помощью логики.
Дополнительная информация здесь: http://www.xilinx.com/support/documentation/application_notes/xapp497_usr_access.pdf
Плюсы:
Минусы:
Вы можете реализовать ПЗУ с информацией о версии и использовать внешний файл для установки его значения. (см. Verilog: создание экземпляра блока памяти)
Плюсы:
Минусы:
Многие системы загружают свои ПЛИС с флэш-накопителей. Обычно места больше, чем просто битовый поток ПЛИС. Можно создать большой файл флеш-изображения, чтобы включить дополнительную информацию, в том числе информацию о версии. Это, вероятно, худший вариант из всего, что я написал выше и упомянул об этом для полноты.
Плюсы:
Минусы:
$RevisionNumber
. Для моего синтеза мне пришлось сохранить эту опцию синтеза (больше опций):generic G_REVISION=$RevisionNumber
После этого мой общий, G_REVISION, получит значение моего RevisionNumber. В вашем случае вы можете добавить сценарий tcl.post для генерации битового потока, получить номер вашей версии и переименовать свой битовый файл. - person michi.b   schedule 04.07.2016