Перейти к содержанию
    

Не могу запустить VIVADO + Microblaze

Добавил файл с таким содержанием:

library ieee;
use ieee.std_logic_1164.all;
library unisim;
use unisim.vcomponents.all;
library work;
use work.mb_design_wrapper;

entity MB_design_TB is
end MB_design_TB;

architecture TB_behav_arch of mb_design_wrapper is
	component mb_design_wrapper is
		port(clk_100MHz : in std_logic
			);
	end component mb_design_wrapper;
	
	signal clk_100MHz	: std_logic	:= '0';
begin

	mb_design_wrp_i	: mb_design_wrapper
		port map(clk_100MHz	=> clk_100MHz);

	clk_100MHz	<= not clk_100MHz	after 5 ns;

end TB_behav_arch;

Пока файл был пустым, он был в списке. А сейчас исчез. При повторном добавлении пишет, что файл с таким именем уже есть. Добавлял как файл симуляции.

Если добавляю новый пустой файл (test.vhd), он снова появляется в списке файлов.

image.thumb.png.7be38aaebaea6ecb72c6e262134a5d35.png

внизу сообщение, что файл уже есть, пропущено добавление...

Кто как тестбенч создает в этой дружелюбной среде?

Этот товарищ игнорировал мои старания по описанию генерирования клока и снова запустил свое нечто:

image.thumb.png.db1573098e52c616bddf6cf416cdc70a.png

Изменено пользователем Vadim_nsk

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

какая-то шаткая конструкция. Добавил GPIO, все сломалось. Удалил его, добавил AXI_timer, но ничего не починилось, хотя внешний сигнал снова один - входной клок, описанный так:

set_property PACKAGE_PIN U14 [get_ports clk_100MHz]
set_property DIRECTION IN [get_ports clk_100MHz]
set_property IOSTANDARD LVCMOS18 [get_ports clk_100MHz]

Ведь даже симуляция уже работала, хоть и криво. Очистил выход, снова все пересобрал, результат тот же, ошибка:

"[DRC UCIO-1] Unconstrained Logical Port: 1 out of 1 logical ports have no user assigned specific location constraint (LOC). This may cause I/O contention or incompatibility with the board power or connectivity affecting performance, signal integrity or in extreme cases cause damage to the device or the components to which it is connected. To correct this violation, specify all pin locations. This design will fail to generate a bitstream unless all logical ports have a user specified site LOC constraint defined.  To allow bitstream creation with unspecified pin locations (not recommended), use this command: set_property SEVERITY {Warning} [get_drc_checks UCIO-1].  NOTE: When using the Vivado Runs infrastructure (e.g. launch_runs Tcl command), add this command to a .tcl file and add that file as a pre-hook for write_bitstream step for the implementation run.  Problem ports: clk_100MHz."

Но как же он не описан, когда выше его описание в файле pinout.xdc

Может как и в ISE его надо описывать через параметр LOC?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Блиин. Не был прописан адрес добавленного таймера и был указан параметр:

DIRECTION

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Симуляция также работает. Но, к сожалению, не из моего testbench, а фиг знает откуда. Вспомнился старый квартус и Макс плюс. Тут также, я вначале задаю правила генерирования клока вручную. Боюсь даже представить, что было бы, если наружу торчала бы AXI. И так при каждом запуске симуляции. Мой testbench он "видит", при смене библиотеки, он в нем даже правит ее название при подключении, но клок оттуда не генерирует :-( и в списке файлов его не показывает. А я еще недавно на GOWIN IDE бочку гнал, приводя VIVADO в пример, как человекоориентированную среду.

А кто-нибудь знает сколько требуется времени Microblaze до вхождения в main() ? Ну, я понимаю, что это от частоты зависит. Сколько симулировать? Я для этого GPIO туда вставил, но что-то пошло не так...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Живое общение творит чудеса. Во-первых, ELF у меня не попадал в симуляцию, т.к. я его просто добавлял в проект, а надо указать в:

image.png.870af7ec3beaf595832001613ab734a8.png

image.thumb.png.8436b8f97e5f7c9c10fa77eae29f4f11.png

на фоне видна времянка работы AXI-шины, т.е. работает пример тестирования периферии.

Ну и вишенка на торте. copy-past в действии, в приведенном ранее тестбенче глупейшая ошибка, не заменено имя компонента, для которого описывается архитектура тестбенча. И вот вроде бы куча примеров создания проекта, но то ли часть скринов отсутствует ввиду их очевидности, то ли так разнятся версии VIVADO, но делал все по этим примерам, а результат получал отличный от приводимого...

Изменено пользователем Vadim_nsk

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Снова проблема...

Сгенерировал свой ip, все оставил по умолчанию, даже название "myip". Генерируется битстрим, делается экспорт платформы. Но Vitis IDE в упор не видит xparameters.h. Я полагаю, что именно из-за myip, т.к. когда я его удаляю из BD, то все собирается, генерируется на выходе ELF. При этом, он не ругается на содержимое заголовочного файла, а пишет, что не может его найти, хотя он находится в BSP (не знаю как это в новых терминах называется). Захожу в testperiph.c, жму на #include "xparameters.h" и среда в него заходит, т.е. он есть и она его "видит", но:

image.thumb.png.a5d4ef0ed2d19e821af3d166a443ec47.png

Чтобы зря не тратить ваше время на гадания, сразу приложу архив проекта. Может глянете, у кого есть время?

https://drive.google.com/file/d/1o4zL8GqBPubgvcgljmpcYFZbnmoiGITc/view?usp=sharing

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот тут нашел ответ на свой вопрос, если кому интересно: https://support.xilinx.com/s/question/0D52E00006jpcvVSAQ/fatal-error-xparametersh-no-such-file-or-directoryxilinx-platform-definition-filexpfm-is-removed-after-building-the-project?language=en_US

Зашел в Makefile сгенерированного компонента и внес указанные правки. Было так:

COMPILER=
ARCHIVER=
CP=cp
COMPILER_FLAGS=
EXTRA_COMPILER_FLAGS=
LIB=libxil.a

RELEASEDIR=../../../lib
INCLUDEDIR=../../../include
INCLUDES=-I./. -I${INCLUDEDIR}

INCLUDEFILES=*.h
LIBSOURCES=*.c
OUTS = *.o

libs:
	echo "Compiling myip..."
	$(COMPILER) $(COMPILER_FLAGS) $(EXTRA_COMPILER_FLAGS) $(INCLUDES) $(LIBSOURCES)
	$(ARCHIVER) -r ${RELEASEDIR}/${LIB} ${OUTS}
	make clean

include:
	${CP} $(INCLUDEFILES) $(INCLUDEDIR)

clean:
	rm -rf ${OUTS}

Стало так:

COMPILER=
ARCHIVER=
CP=cp
COMPILER_FLAGS=
EXTRA_COMPILER_FLAGS=
LIB=libxil.a

RELEASEDIR=../../../lib
INCLUDEDIR=../../../include
INCLUDES=-I./. -I${INCLUDEDIR}

INCLUDEFILES=*.h
LIBSOURCES=$(wildcard *.c)
OBJECTS = $(addsuffix .o, $(basename $(wildcard *.c)))
ASSEMBLY_OBJECTS = $(addsuffix .o, $(basename $(wildcard *.S)))

libs:
	echo "Compiling simple_adder..."
	$(COMPILER) $(COMPILER_FLAGS) $(EXTRA_COMPILER_FLAGS) $(INCLUDES) $(LIBSOURCES)
	$(ARCHIVER) -r ${RELEASEDIR}/${LIB} ${OBJECTS} ${ASSEMBLY_OBJECTS} 
	make clean

include:
	${CP} $(INCLUDEFILES) $(INCLUDEDIR)

clean:
	rm -rf ${OBJECTS} ${ASSEMBLY_OBJECTS}

Файл лежит в: ...\ip_repo\myip_1.0\drivers\myip_v1_0\src\Makefile

Изменено пользователем Vadim_nsk

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Зачем makefile править, просто в опциях компилятора укажите нужные директории для .h файлов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...