При попытке объявить объект с помощью формального универсального пакета (ieee.fixed_generic_pkg
):
library ieee;
context ieee.ieee_std_context;
entity myent is
generic ( package myfpkg is new ieee.fixed_generic_pkg generic map (<>) );
end entity;
Я получаю следующую ошибку:
Syntax error at or near "package", expecting BASICID or EXTENDEDID
Я также пробовал:
library ieee;
context ieee.ieee_std_context;
use ieee.fixed_generic_pkg;
entity myent is
generic ( package myfpkg is new ieee.fixed_generic_pkg generic map (<>) );
end entity;
это тоже не работает.
Однако, если я объявлю какой-либо фиктивный экземпляр пакета, он будет работать без ошибок:
library ieee;
context ieee.ieee_std_context;
package fpkg is new ieee.fixed_generic_pkg;
--
library ieee;
context ieee.ieee_std_context;
entity myent is
generic ( package myfpkg is new ieee.fixed_generic_pkg generic map (<>) );
end entity;
Как правильно объявить объект с помощью формального универсального пакета без предварительного создания экземпляра пакета того же типа?
ИЗМЕНИТЬ
Я использую инструмент HDL Designer 2015.1b. Я думаю, что поддерживаются общие пакеты. Действительно, следующий пример не вызывает ошибок:
library slfnlib;
use slfnlib.gen_consts;
use slfnlib.gen_wb_ctypes;
package gen_ctypes is
generic ( package cs is new slfnlib.gen_consts generic map (<>) );
package wb is new slfnlib.gen_wb_ctypes generic map (
g_mo => cs.g_mo,
g_bas => cs.g_bas );
end package;
РЕДАКТИРОВАТЬ2
Работая с несколькими универсальными пакетами (объявления, экземпляры, использование ...), я понял, что полные проекты компилируются правильно. Я тоже получал ту же ошибку несколько раз, анализируя только их части.
Затем я пришел к выводу, что я не могу анализировать какой-либо общий пакет / объект самостоятельно с помощью DesignChecker. Однако есть простой обходной путь - просто использовать эти компоненты, как в любом практическом дизайне. Это должно быть сделано в любом случае, чтобы либо смоделировать, либо синтезировать дизайн. Ключевой посыл заключается в том, чтобы не беспокоиться о том, что предоставляют инструменты, до тех пор, пока тело кода не станет действительно практичным.