【发布时间】:2016-07-07 23:09:05
【问题描述】:
当尝试使用正式的通用包 (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;
EDIT2
在使用多个通用包(声明、实例化、使用...)时,我意识到完整的项目已正确编译。在只分析其中的一部分时,我也多次遇到相同的错误。
然后,我得出结论,我无法使用 DesignChecker 单独分析任何通用包/实体。但是,有一个简单的解决方法,就是像在任何实际设计中一样使用这些组件。无论如何都应该这样做,以便模拟和综合设计。关键信息不关心工具提供的内容,直到代码主体作为实用设计真正有意义。
【问题讨论】:
-
可能值得描述哪个工具/版本报告了这一点。有些工具可能仍然不支持通用包。
-
我已编辑问题以指示工具/版本信息。另外,我添加了一个有效的示例。
标签: package vhdl generic-list synthesis