Aldec Active-HDL: vlib в графическом интерфейсе выдает "Предупреждение: невозможно создать библиотеку" без используемой библиотеки
Из графического интерфейса Aldec Active-HDL vlib
следует создать рабочую библиотеку, например:
vlib my_lib
Это создает каталог my_lib в текущем каталоге, но с предупреждением:
Предупреждение: не удается создать библиотеку
Последующий set worklib my_lib
завершается с ошибкой "Ошибка: дизайн не загружен" и компиляция с vcom -work my_lib tb.vhd
завершается без вывода, и никто не компилирует что-либо в каталог "my_lib". Таким образом, похоже, что даже если каталог my_lib создан, он не доступен как библиотека my_lib для компиляции VHDL.
При использовании интерфейса командной строки Aldec Active-HDL (CLI) через vsimsa.bat
это работает отлично.
Что требуется для того, чтобы сделать Tcl vlib
Командная работа из окна консоли Tcl GUI?
Вероятно, проблема в том, что локальный файл "library.cfg" создается не просто vlib my_lib
Итак, как в этом случае создать локальный файл "library.cfg" для простой компиляции и симуляции модуля?
2 ответа
Возможно, это не является основной причиной вашей проблемы, но я просто чувствую необходимость рассказать вам о неправильном использовании работы в качестве имени библиотеки.
work
действительно не является допустимым именем библиотеки в VHDL. Это также не какая-то предопределенная библиотека по умолчанию. Стандарт VHDL определяет work
в качестве специального псевдонима для текущей рабочей библиотеки. Таким образом, можно использовать work
внутри файла VHDL для ссылки на другие элементы дизайна в той же библиотеке, не зная названия библиотеки, в которую они будут проанализированы. поскольку work
это специальный псевдоним, на который не нужно ссылаться с помощью library work
пункт перед любым use work.pkg.all
статьи.
К сожалению, многие инструменты VHDL позволяют дизайнеру создавать библиотеки с именем work
некоторые даже поощряют это, способствуя путанице. Это прекрасно работает, пока ни одна единица дизайна в другой библиотеке не пытается ссылаться на единицу дизайна в плохо названной рабочей библиотеке. Это потому что work
name будет псевдонимом для другой библиотеки в контексте файлов, проанализированных в этой библиотеке.
Этот факт малоизвестен даже среди опытных VHDL-дизайнеров. Возможно, основная причина путаницы заключается в том, что многие инструменты часто говорят о "рабочей библиотеке", означающей "текущую рабочую библиотеку, как она называется", которую люди буквально истолковывают как означающую, что ее на самом деле следует называть работой.
Пример рабочей задачи:
pkg.vhd
package pkg is
end package;
file.vhd
use work.pkg.all;
Хороший случай
vcom -work lib pkg.vhd
vcom -work lib file.vhd
Файлы pkg.vhd и file.vhd могут быть скомпилированы в библиотеку с любым именем, так как они используют work
псевдоним.
Плохой случай
vcom -work work pkg.vhd
vcom -work lib file.vhd
Там будет ошибка во второй команде, так как work
относится к lib
при анализе файла file.vhd, поскольку текущая рабочая библиотека была lib
, Нельзя ссылаться на что-либо в плохо названном work
библиотека изнутри lib
поскольку все ссылки, содержащие специальный псевдоним work
будет переведен на lib
,
Похоже, что невозможно создать библиотеку за пределами рабочего пространства с дизайном, поэтому это необходимо создать.
См. Также вопрос и ответ на /questions/26577179/kak-sdelat-prostoe-modelirovanie-aldec-active-hdl-s-ostsillogrammoj-s-ispolzovaniem-stsenariev-tcl/26577180#26577180