6.1 KiB
Структура папок в проекте Vivado
Вы смотрите на окно Sources
и ничего не понимаете? Или создали модуль, а он куда–то исчез? Или просто хотите понять, как лучше ориентироваться в созданных модулях? Тогда это для вас.
В левом верхнем углу Vivado расположено окно со вкладкой Sources
. Здесь располагается иерархия модулей вашего проекта. Если у вас нет этой вкладки, открыть её можно так: Window –> Sources
.
Во вкладке Design Sources
хранятся модули, описывающие ваш дизайн. В Constrain
лежат файлы, необходимые для работы с конкретной ПЛИС. Simulation Sources
хранит в себе тестбенчи и обычные модули.
Допустим, мы создали модуль полного одноботиного сумматора fulladder
, а также создали и планируем описать модуль полного четырехбитного сумматора fulladder4
, подключив к нему четыре однобитных.
Итак, раскрываем вкладку Design Sources
и видим два модуля – fulladder
и fulladder4
, которые пока что никак друг с другом не связаны. Двойное нажатие на название модуля приведёт к его открытию.
Модуль fulladder4
явялется модулем верхнего уровня (top-level module), то есть, если мы запустим синтез или имплементацию проекта, именно этот модуль Vivado будет рассматривать. Чтобы сменить модуль верхнего уровня, необходимо нажать на выбранный модуль правой кнопкой мыши, затем на Set a top
.
Подключим fulladder
к fulladder4
для создания четырехбитного сумматора путём соединения четырех однобитных. Тогда после сохранения окно изменится так:
Раскроем вкладку fulladder4
и увидим 4 подключенных модуля fulladder
:
В Simulation Sources
мы видим один файл тестбенча, к которому что-то подключено, и модуль fulladder4
с подключенными к нему другими модулями:
Модули из Design Sources
автоматически попадают в Simulation Sources
, так как эти файлы нужны для симуляции. Они не являются копиями модулей, а просто дублируются для удобства. Каждый раз, когда вы меняете что-то в своём дизайне, это отражается как во вкладке Design Sources
, так и в Simulation Sources
. Раскроем вкладку с модулем tb
:
Такая картина говорит нам о попытке подключить модуль, которого нет в проекте. Часто это связано с неправильным указанием подключаемого модуля. В данном случае мы хотим подключить модуль half_adder
и Vivado не может его найти.
module tb();
...
half_adder DUT(
.A (a),
.B (b),
.P (p),
.S (s)
);
...
Переименуем название подключаемого модуля на fulladder4
и сохраним.
module tb();
...
fulladder4 DUT(
.A (a),
.B (b),
.P (p),
.S (s)
);
...
После обновления в окне Sources
модуль fulladder4
"спрячется" под tb
. Если раскрыть вкладку, будет видно, что fulladder4
подключен к tb
, а четыре модуля fulladder
– к fulladder4
. Также отметим, что tb
является модулем верхнего уровня, значит, если мы захотим запустить симуляцию, то Vivado выполнит симуляцию именно для модуля tb
. Изменить модуль верхнего уровня можно так же, как было описано ранее.