контроль версий проекта vivado vhdl

Мне интересно, есть ли способ контроля версий в vivado для проекта VHDL. Один из способов - добавить номер версии к имени файла битового потока.

Возможно ли это? Какие еще есть варианты, если это невозможно?

заранее спасибо


person A I    schedule 04.07.2016    source источник
comment
Вы уже используете систему контроля версий, такую ​​как SVN или Git?   -  person scary_jeff    schedule 04.07.2016
comment
Это более-менее возможно. У меня была задача добавить номер ревизии к общему в верхнем файле. Я решил эту проблему, используя скрипт-перехватчик tcl.pre, чтобы получить номер версии $RevisionNumber. Для моего синтеза мне пришлось сохранить эту опцию синтеза (больше опций): generic G_REVISION=$RevisionNumber После этого мой общий, G_REVISION, получит значение моего RevisionNumber. В вашем случае вы можете добавить сценарий tcl.post для генерации битового потока, получить номер вашей версии и переименовать свой битовый файл.   -  person michi.b    schedule 04.07.2016
comment
2 scary_jeff: Да, но мне нужен мой файл, чтобы указать, что это правильная версия. Но вы правы, если эти системы используются, в этом нет реальной необходимости. 2 michi.b: спасибо. Это действительно полезно. Я попробую это и посмотрю, сработает ли это для меня. ваше здоровье   -  person A I    schedule 04.07.2016


Ответы (1)


Подумайте о том, что вам нужно

  • Формат и размер информации о версии: какая версия? Натуральное число? Нить? Настоящий? Вы сохраняете дату или время? Вам нужен номер сборки? Требуется дополнительное место для версий субблока?

  • Источник версии и порядок разработки: что определяет версию? Это инструмент управления версиями? Вы вручную устанавливаете версию? Вам нужна автоматизация для обновления части информации о версии (отметка времени, номер сборки и т. Д.)?

  • Доступность / наблюдаемость версии: где вы хотите прочитать номер версии и сделать его видимым? В исходном коде? Внешний файл? Имя файла битового потока? Содержимое флеш-файла? Нужна ли вам логика FPGA для доступа к информации о версии (для чтения через канал связи, встроенный процессор и т. Д.)?

  • Зависимость от средств поставщика / устройства / системы / источника. Реализация и автоматизация информации о версии может зависеть от нескольких факторов: у каждого поставщика есть разные инструменты (даже в пределах одного поставщика). Разные устройства могут позволять вам делать разные вещи. Система, в которой вы работаете, может допускать различные формы автоматизации (ОС, установленные инструменты-скрипты и т. Д.). Исходные файлы (VHDL, Verilog, System C, ...) и структура каталогов могут повлиять на применимость вашего решения.


Варианты автоматизации

Makefile (скрипт компоновщика) автоматизация

Самый гибкий способ - иметь какой-то скрипт-компоновщик, который может быть или не может быть привязан к вашему механизму управления версиями (makefile, perl, python и т. Д.). Подумайте о переносимости вашего проекта между дизайнерами и даже платформами дизайна (Windows, Linux и т. Д.).

Плюсы:

  • Полный контроль над тем, что вы хотите делать.
  • Может быть подключен к любой системе автоматизации управления версиями.
  • Может быть изменен для работы на любой платформе при использовании стандартных инструментов (обязательно позаботьтесь о путях к файлам, которые различаются в разных ОС).

Минусы:

  • Не работает с инструментами поставщика графического интерфейса пользователя (см. Хуки Vivado TCL).

Крючки Vivado TCL

В 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 / а>

Плюсы:

  • Работает с графическим интерфейсом (автоматически обо всем позаботится, когда вы нажмете «Синтезировать»).

Минусы:

  • (Vivado) зависит от инструмента
  • Не забудьте создать крючки в вашем проекте Vivado.

Варианты реализации

Модификация исходного кода

Номер версии, номер сборки, метка времени и практически все, что вам нужно, можно изменить (в коде VHDL / Verilog) автоматически с помощью сценария, который анализирует известный формат файла. Я сделал это с помощью хуков Vivado TCL и хорошо отформатированного файла VHDL пакета. Работает как шарм.

Примечание. При обновлении исходных файлов с использованием хуков TCL до синтеза, Vivado будет думать, что файлы были изменены после этого, и будет рассматривать реализацию как не обновленную. Я добавил в сценарий команду для сохранения текущей отметки времени файла пакета, обновил ее, а затем записал отметку времени (то есть файл пакета навсегда сохранит свою системную дату и время).

Плюсы:

  • Информация о версии легко просматривается и доступна для конструктора (пакетный файл).
  • Информация о версии легко доступна для логического использования.
  • Независимо от устройства.

Минусы:

  • Информация о версии не может быть прочитана путем изучения файла битового потока.
  • Написание сценария может потребовать некоторой работы и может вынудить вас стандартизировать структуру каталогов исходных текстов вашего проекта [что может быть не так уж плохо;)]

Общий объект / модуль верхнего уровня

Обобщения на верхнем уровне модуля / объекта дизайна могут быть изменены с помощью инструмента синтеза, и к ним можно получить доступ с помощью логики дизайна.

Плюсы:

  • Менее сложный сценарий, чем изменение исходного кода.

Минусы:

  • Информация о версии не может быть прочитана путем изучения файла битового потока.
  • Вам все равно нужно где-то сохранить номер вашей версии / сборки (файл).
  • Для VHDL / Verilog использование универсальных шаблонов более сложно, чем использование пакета, поскольку вам необходимо подключить универсальные шаблоны по иерархиям до тех пор, пока вы не дойдете до кода проекта, который записывает значение в регистр.
  • Зависимость от инструмента синтеза. В разных инструментах есть разные команды для обновления общих значений верхнего уровня.

JTAG USERCODE

Большинство ПЛИС поддерживают стандарт IEEE Std. 1149.1 Функция JTAG USERCODE, которая дает пользователю 32-битное значение для идентификации битового потока. Это значение можно установить с помощью инструментов поставщика при создании файла битового потока. Однако это значение не может быть прочитано логикой FPGA (если вы не реализуете логику для чтения флэш-памяти и отслеживания правильного адреса для этого значения, что является большим излишеством).

Плюсы:

  • Подходит для большинства устройств.
  • Информация о версии доступна при изучении файла.

Минусы:

  • Информация о версии не может быть прочитана логикой без крайних процедур.
  • Ограниченный размер информации (всего 32 бита).

Xilinx USR_ACCESS Регистрация

Подобно JTAG USERCODE, в Xilinx реализован регистр USR_ACCESS для Virtex-5, Virtex-6 и всех устройств 7-й серии. Они предоставили примитив для VHDL / Verilog, позволяющий читать значение с помощью логики.

Дополнительная информация здесь: http://www.xilinx.com/support/documentation/application_notes/xapp497_usr_access.pdf

Плюсы:

  • Информация о версии может быть прочитана логикой проекта.
  • Информация о версии доступна при изучении файла.

Минусы:

  • Решение для конкретных устройств (даже не все устройства Xilinx поддерживают это).
  • Ограниченный размер информации (всего 32 бита).

Статическая информация ПЗУ

Вы можете реализовать ПЗУ с информацией о версии и использовать внешний файл для установки его значения. (см. Verilog: создание экземпляра блока памяти)

Плюсы:

  • Может включать большую информацию о версии (даже код ASCII).
  • Информация о версии доступна для просмотра дизайнером (внешний файл).
  • Подходит для большинства устройств и инструментов, которые принимают код VHDL / Verilog для ПЗУ.

Минусы:

  • Для чтения всего ПЗУ может потребоваться немного более сложная логика (зависит от того, как вы ее реализуете).
  • Трудно (но возможно) проверить информацию о версии, исследуя файл (вам необходимо извлечь местоположения битового потока ПЗУ).

Модификация флеш-изображения

Многие системы загружают свои ПЛИС с флэш-накопителей. Обычно места больше, чем просто битовый поток ПЛИС. Можно создать большой файл флеш-изображения, чтобы включить дополнительную информацию, в том числе информацию о версии. Это, вероятно, худший вариант из всего, что я написал выше и упомянул об этом для полноты.

Плюсы:

  • Потенциально большой информационный кеш.
  • Информацию о версии можно просмотреть в файле Flash-изображения.

Минусы:

  • Сложно реализовать.
  • Зависит от инструментов поставщика.

person Oron Port    schedule 06.07.2016