Використання SVN з Xilinx Vivado?


13

Я щойно заявив про використання Vivado в новому проекті і хотів би помістити файли проекту під SVN.

Здається, Vivado створює всі файли проекту під назвою проекту (скажімо, proj1):

/<path to the project>/proj1/
                            proj1.xpr
                            proj1.srcs/
                                       constrs_1/
                                                new/
                                                    const1.xdc
                            proj1.runs/
                            proj1.data/
                            proj1.cache/

Моє запитання - які файли мені потрібно помістити під SVN, окрім XDC та файлу XPR?


1
Чому ви вважаєте, що вам не потрібно всіх, якщо вони?
Граді Грайдер

6
Я не розумію, що ви тут маєте на увазі. Vivado створює лайно безліч файлів, які не потрібно контролювати, оскільки вони створюються. Мої вихідні файли десь в іншому місці, мені просто потрібно зберегти файли, важливі для Vivado.
FarhadA

Я б сказав, що оскільки єдиним входом є вихідний код, це єдиний файл, який можна розмістити під SVN. Але я ніколи його не використовував, лише здогадуюсь
clabacchio

Чи є чистий варіант? Ви могли почистити, то все перевіряйте.
Граді Гравець

2
Я створюю сценарій TCL для відновлення проекту Vivado. І покладіть його під контроль версій. Створюючи проект (з make), він створить файли, які потребує Xilinx. Це не дозволяє мені перевірити повний каталог проектів і файли Xilinx.
vermaete

Відповіді:


6

Xilinx створить відео YouTube (зітхаючи), щоб вирішити це. Ось посилання на відео

http://www.xilinx.com/training/vivado/vivado-version-control-overview.htm

Ось мій підсумок відео (8 хвилин)

Перш ніж почати

Якщо вам дуже подобається повний контроль, Xilinx пропонує вам повністю відмовитись від GUI і зробити все в командному рядку, і тоді ви знаєте, що є джерелом, а що ні.

В іншому випадку Xilinx розуміє, що проекти Vivado не розроблені для контролю версій. НЕ ПЕРЕВІРИТЕ В ЦІЛЬКОМ ПРОЕКТІ. Але читайте підказки ...

Базова лінія

Звичайно, все, що ви пишете поза інструментом Vivado, слід перевірити.

Перевірте в наступних файлах

*.v, *.vh, *.vhdl, *.edif  - HDL and Netlist
*.xdc - Constraints
*.xci - IP Core
*.bd  - IP Integrator Block Diagram
*.xmp - Embedded Subsystem
*.sgp - System Generator Subsystem
*.bmm
*.cdc - Chipscope
*.elf
*.mem

IP-блоки

Якщо ви використовуєте блоки IP, генеруйте IP в унікальній папці та перевірте все.

Контрольно-пропускні пункти

Якщо ви хочете мати можливість відновити частини потоку, не запускаючи все, перевірте у файлах контрольних точок.

*.dcp - Design Checkpoints

Мій додаток

Якби інструменти Xilinx були ефективними, я б не рекомендував перевіряти файли dcp, але для запуску вони займають стільки годин, можливо, варто за ціною некрасивої системи контролю версій.

У відео не сказано присідання про файли проекту Vivado (* .xpr), ось ось моя пропозиція:

*.xpr
*.data/*/fileset.xml
*.data/*/runs.xml

Альтернативою, яку рекомендує Xilinx (що справді є хаком, не підходить для контролю версій), є запускати File -> Write Project Tclкоманду щоразу, коли ви хочете скористатись, а потім закріпити цей TCL-файл для контролю версій. Оновлюючи локальну папку, потрібно повторно запустити цей файл TCL, щоб створити всі файли проекту. Гидота.


Чудово, що було справді корисно. Я більше не використовую SVN, а GIT, але це допомагає мені отримати потрібні файли у сховище.
FarhadA

1
Я використовую файли tcl, і він насправді працює дуже добре. Сценарії tcl потрібно оновлювати лише тоді, коли файл додається до проекту, і я зазвичай генерую tcl, коли всі файли є. Вони не є настільки ж пришвидшими або хакі, як ви їх робите.
stanri

Рішення TCL було б ідеальним, якби Vivado автоматично створив файл TCL після кожної зміни проекту І він прочитав файл TCL як файл "project" замість файлу xpr. Іншими словами, якщо Xilinx позбувся файлу xpr і замінив його на файл tcl.
Марк Лаката

Існує невелика проблема із створенням файлу xpr: він змінюється кожного разу, навіть коли ви відкриваєте лише Vivado ...
П'єдоне,

3

Vivado 2014.1 дозволяє використовувати сценарії .tcl для відновлення проектів.

Для цього, відкривши проект, перейдіть до Файл -> Написати проект tcl.

Основні проекти

Зазвичай я зберігаю свої джерела та .tcl скрипт у місці, що знаходиться поза каталогом проектів. IP-ядра xilinx, згенеровані в рамках проекту, можуть бути скопійовані в інше місце, клацнувши правою кнопкою миші та вибравши "Скопіювати IP". І видалення оригіналу. Коли генерується скрипт tcl, він створює відносні посилання на ці файли. Зазвичай так виглядає моя структура каталогу:

base_project/
 srcs/
  project.v
 ip/
  ip1/
   ip1.xml
   ip1.xci
 genproject.tcl

Необхідно ввести лише файли IP .xml та .xci. (І навіть це не обов'язково, технічно див. Примітки наприкінці).

Це те, що привертається до git, зауважте, відсутність проекту.xpr або каталогів проектів.

Коли я запускаю genproject.tcl, він створює інший каталог для проекту.

base_project/
 srcs/
 ip/
 genproject.tcl
 projectdir/
  project.runs/
  project.cache/
  project.xpr

Ця нова папка повністю одноразова. Для того, щоб створити цю структуру, я змінюю скрипт tcl наступним чином.

Перші 3 рядки я змінюю так:

# Set the reference directory for source file relative paths (by default the value is script directory path)
set origin_dir [file dirname [info script]]

# Set the directory path for the original project from where this script was exported
set orig_proj_dir "[file normalize "$origin_dir/projectdir"]"

# Create project
create_project project $projectdir/project

Це створює новий каталог проектів і новий проект у цьому режимі.

Потім я модифікую шляхи, щоб вказати на правильні місця. Можливо, вам доведеться змінити ці шляхи в інших місцях сценарію.

# Set 'sources_1' fileset object
set obj [get_filesets sources_1]
set files [list \
 "[file normalize "$origin_dir/srcs/project.v"]"\
 "[file normalize "$origin_dir/ip/ip1/ip1.xci"]"\
]
add_files -norecurse -fileset $obj $files

Я також змінюю конструкції для IP ядер, як видно з цієї відповіді .

Файли .wcfg можуть бути включені аналогічно до ip та srcs.

Тут закінчується обробка для більш простих проектів (що містять лише джерела та IP, без блок-діаграм). Для збереження даних блок-схеми також потрібно зробити наступне.

Блок-проекти проектів

Щоб зберегти блок-схему, відкривши блок-схему, перейдіть до Файл -> Експорт -> Блок-діаграма в Tcl і збережіть її в тому ж режимі, що й інший файл tcl.

Потім я створив Generate_Wrapper.tclсценарій, який створює файли обгортки блок-схеми, тому вам не потрібно робити це вручну. Папка project / project.srcs використовується для зберігання даних bd, але вона все ще є повністю одноразовою, оскільки bd зберігається в скрипті tcl. Збережіть це за допомогою двох інших.

set origin_dir [file dirname [info script]]

make_wrapper -files [get_files $origin_dir/project/project.srcs/sources_1/bd/design_1/design_1.bd] -top
add_files -norecurse -force $origin_dir/project/project.srcs/sources_1/bd/design_1/hdl/design_1_wrapper.v
update_compile_order -fileset sources_1
update_compile_order -fileset sim_1

В кінці мого genproject.tclя додаю наступні рядки для створення блок-схеми та обгортки:

source $origin_dir/Create_bd.tcl
source $origin_dir/Generate_Wrapper.tcl
regenerate_bd_layout

Для проектів, що не мають джерела (просто блок-схема), моя git-фіксація є лише наступною:

base_project/
 Generate_Wrapper.tcl
 Create_Bd.tcl
 genproject.tcl

Щоб генерувати все, запустіть genproject.tcl.

Ви навіть можете поєднати все це в одне ціле, якщо ви особливо ефективні, я ще цього не вирішив.

Спеціальні компоненти: Проект компонентів

Ще одна швидка примітка щодо створення користувацького компонента. Якщо у вас є компонент.xml, додайте його до свого списку джерел tcl:

  "[file normalize "$origin_dir/component.xml"]"\

А потім також додайте наступний розділ:

set file "$origin_dir/component.xml"
set file [file normalize $file]
set file_obj [get_files -of_objects [get_filesets sources_1] [list "*$file"]]
set_property "file_type" "IP-XACT" $file_obj

Це включає дизайн компонента в проект для легкої настройки.

Спеціальні компоненти: Посилання на ваш компонент

Ви можете розділити свій спеціальний шлях репо-компонента таким чином:

# Set IP repository paths
set obj [get_filesets sources_1]
set_property "ip_repo_paths" "[file normalize "$origin_dir/path/to/repository"]" $obj

У моїй папці repo є окремі папки, що містять файли .xml. Таким чином, ви не посилаєтесь на папку, що містить .xml, але батьківську. Наприклад:

repository/
 component1/component1.xml
 component2/component2.xml

Як ми запускаємо ці сценарії tcl?

Відкрийте Vivado і, не відкриваючи жодних проектів, виберіть Інструменти -> Запустити скрипт TCL та перейдіть до свого сценарію.

Додаткові примітки TCL

Кожна команда, запущена у Vivado, відображається на консолі tcl як команда tcl. Наприклад, коли я генерував новий IP Xilinx за допомогою GUI, це з'явилося на консолі tcl:

create_ip -name floating_point -vendor xilinx.com -library ip -module_name floating_point_0
set_property -dict [list CONFIG.Operation_Type {Fixed_to_float} CONFIG.A_Precision_Type {Custom} CONFIG.C_A_Exponent_Width {38} CONFIG.C_A_Fraction_Width {0} CONFIG.Result_Precision_Type {Custom} CONFIG.C_Result_Exponent_Width {8} CONFIG.C_Result_Fraction_Width {16} CONFIG.Flow_Control {NonBlocking} CONFIG.Has_ARESETn {true}] [get_ips floating_point_0]

Це означає пару речей:

  • Вам навіть не потрібно зберігати ядра xilinx ip - як тільки вони так, як вам потрібно, скопіюйте команди в скрипт tcl і вам більше не потрібно робити ip / більше.

  • вкажіть IP-каталог з аргументом -dir після -module_name, щоб розмістити його там, де ви хочете (за замовчуванням - у project.srcs).

  • Переважно все, що ви робите в GUI, можна зробити в tcl, найпростіший спосіб побачити, як xilinx робить речі, це зробити це в GUI, а потім подивитись, що потім знаходиться на консолі TCL.

  • Цей гумористичний pdf детально описує всі команди vivado tcl.


2

Існує навчальне відео Xilinx, яке пояснює, як використовувати системи управління версіями з Vivado. В основному список файлів залежить від функцій, які ви використовуєте.

Якщо ви використовуєте сценарій сценарію (як це робить vermaete), ви можете змусити Vivado написати всі проміжні / тимчасові файли в окремий каталог ( див. Тут ), щоб ви могли їх легко розділити.

В іншому випадку ви можете очистити папку збірки від Vivado, і все, що залишилося, може бути поставлено під контроль версій.


1
Дякую, я розберуся, це просто дивно, що Xilinx може придумати такий дорогий інструмент, але навіть не заважає надавати належну підтримку для контролю за ним.
FarhadA

1
На форумах Xilinx (з 2009 IIRC) з'явився цікавий коментар: інструменти призначені для інженерів апаратних засобів. А інженери обладнання не знають про це і не переймаються контролем редагування. Але я гадаю, що це ставлення змінилося, і є все більше інженерів SW, які використовують ці інструменти. Тож тепер контроль контролю має більше значення, ніж у минулому.
хлі

2
Ну, це чиста образа, хто коли-небудь вимовляв ці слова. Інженери HW використовують різні типи контролю ревізії, багато інструментів підтримують це, багато інженерів роблять це, використовуючи стандартний RC, а інші використовують такі інструменти, як Mentor HDL дизайнер із вбудованим RC. На жаль, такі постачальники FPGA, як Xilinx та Altera, схоже, не переймаються цими проблемами, і саме тут головна проблема.
FarhadA

1

2
Ваша відповідь була б набагато кориснішою, якщо ви могли б включити цікавий вміст із цієї дискусії, також тому, що вона виживе до можливих мертвих посилань (будучи форумом, може статися, що вона потрапляє в архів)
clabacchio
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.