VHDL/ModelSim — не удалось найти объект

Я пытаюсь смоделировать свой файл VHDL, но сталкиваюсь со следующей ошибкой:

# ** Error: (vcom-11) Could not find work.lab1.
# 
# ** Error: (vcom-1195) Cannot find expanded name "work.lab1".
# 
# ** Error: Unknown expanded name.
# ** Error: VHDL Compiler exiting
# ** Error: c:/altera/12.1/modelsim_ase/win32aloem/vcom failed.
# Error in macro ./DE2_TOP_run_msim_rtl_vhdl.do line 8
# c:/altera/12.1/modelsim_ase/win32aloem/vcom failed.
#     while executing
# "vcom -93 -work work"

Я успешно скомпилировал код как с помощью компилятора Quartus II, так и с помощью компилятора ModelSim, прежде чем пытаться моделировать. В моем коде есть сущность и архитектура lab1 (я даже вижу ее на вкладке Design Units в Quartus Project Navigator), поэтому я не совсем понимаю эту ошибку. Кто-нибудь знает, что вызывает это?


person John Roberts    schedule 26.01.2013    source источник
comment
попробуйте это: 1) vlib работает; 2) вмап работает работает; 3) файл vcom_the_lab1_file; 4) vcom _the_toplevel_file; 4) всим работа._the_toplevel_entity   -  person vermaete    schedule 26.01.2013
comment
Спасибо, это сработало. Так мне теперь каждый раз все это вводить? Моя лаборатория 1 и объект верхнего уровня также находятся в одном файле, поэтому я предполагаю, что могу объединить шаги 3 и 4, верно?   -  person John Roberts    schedule 26.01.2013
comment
'vlib' - создать библиотеку. 'vmap' предназначен для привязки каталога 'work' к библиотеке VHDL 'work' (проверьте файл modelsim.ini). Vcom должен скомпилировать код VHDL («vlog» для Verilog). И «vsim» для запуска симулятора. То, что вам нужно запустить, зависит от того, что уже существует в вашем проекте (=каталог моделирования). Но в большинстве случаев это только «vcom», когда вы меняете исходный код, и «vsim» для имитации. Но все это можно сделать и в графическом интерфейсе.   -  person vermaete    schedule 26.01.2013
comment
Я бы сохранил один файл VHDL для каждой комбинации объекта/архитектуры.   -  person vermaete    schedule 26.01.2013


Ответы (1)


Когда симулятор компилирует верхний уровень (DE2_TOP), он хочет знать, как выглядят используемые компоненты. Таким образом, вы должны были скомпилировать компоненты нижнего уровня перед компиляцией компонентов верхнего уровня.

В большинстве случаев, чтобы исправить это, я компилирую все компоненты в правильном порядке, а затем использую команду Modelsim «vmake» («vmake -work work > work.vmake») для создания make-файла из библиотеки (работа) . Когда у вас есть make-файл, вы можете выполнить его с помощью (make -f work.vmake). И все файлы будут скомпилированы по порядку.

Примечание: Verilog гораздо более расслаблен в таких вещах...

person vermaete    schedule 26.01.2013
comment
Спасибо за этот отличный ответ. Кстати говоря, знаете ли вы, что означает значение U в окне Objects выходных данных ModelSim? Я пытаюсь имитировать нажатие кнопок на моих четырех кнопках FPGA, инициализируя объект lab1 следующим образом: key : in std_logic_vector(3 downto 0):= 0010;. Однако даже после этого ModelSim по-прежнему дает мне значение U для каждого из моих ключей. Есть идеи, почему? - person John Roberts; 26.01.2013
comment
Вам лучше задать новый вопрос об этом с некоторым кодом. Но «U» — это «неинициализированное» состояние типа «std_logic». Это сигнал, который еще не был установлен. - person vermaete; 26.01.2013
comment
Я разместил его здесь как новый вопрос: stackoverflow.com/questions/ 14540139/ - person John Roberts; 26.01.2013