【问题标题】:VHDL 2008 > generic package in an entity: error expecting BASICID or EXTENDEDIDVHDL 2008 > 实体中的通用包:需要 BASICID 或 EXTENDEDID 的错误
【发布时间】: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


【解决方案1】:

您的代码看起来与 LRM(“通用地图方面”)第 6.5.7.2 节中的示例具有相似的结构,除了您的顶级是一个实体,而在他们的示例中它是一个包。

您的原始代码在我尝试过的两个工具上编译得很好,所以在我看来,您使用的任何工具都存在问题。我建议您与工具供应商联系。

【讨论】:

  • 感谢您的尝试。我正在使用 HDL Designer 2015.1b。我可以知道您尝试过哪些工具吗?
  • 对不起,你可能不会。您可能会发现公开讨论您的工具能做什么和不能做什么是违反许可条款的。在我的工作中,我非常感谢各个供应商的支持,因此请认真对待这些许可条款。
  • @MatthewTaylor 虽然许可证书可能会说,在实践中,供应商不太可能反对他们的工具可以完成这项工作的声明!
  • 我明白你的意思,MatthewTaylor,如果询问这些工具让你感到不舒服,我希望你能原谅我。其实我不是要讨论工具能做什么,而是要如何输入代码。确实,如果您使用了我尝试过的任何工具,那将意味着我有一些配置问题。无论如何,我正在尝试与工具供应商一起讨论它(尽管这并不容易)。然后,我将您的作为有效答案。感谢您和@BrianDrummond 的宝贵时间。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-16
  • 1970-01-01
  • 2012-10-05
  • 2012-12-30
  • 2021-02-07
相关资源
最近更新 更多