通用记录(vhdl2008)

通用记录(vhdl2008),vhdl,Vhdl,我正在努力实现一个实体,其端口依赖于通用包,而通用包又依赖于实体的泛型。诀窍是我想要一个端口记录 首先,我尝试将记录放入一个通用包中,并从实体实例化通用包。(我没有从记录开始,而是问了一个问题) 问题在于modelsim抱怨以下订单: entity myEntity is generic() -- problem 1 package before port causes errors in modelsim package myInstance is new generi

我正在努力实现一个实体,其端口依赖于通用包,而通用包又依赖于实体的泛型。诀窍是我想要一个端口记录

首先,我尝试将记录放入一个通用包中,并从实体实例化通用包。(我没有从记录开始,而是问了一个问题)

问题在于modelsim抱怨以下订单:

entity myEntity is
    generic()
    -- problem 1 package before port causes errors in modelsim
    package myInstance is new genericPackage generic map ...
    -- problem 2, "use" may appparently  not be used here
    port( p1 : in myInstance.genericRecord )
end entity;

有没有一种优雅的方法可以利用VHDL 2008的特性来解决这个问题?

据我所知,包实例必须位于实体之外。我不认为你可以按照你想要的顺序拥有依赖关系

解决这类问题的另一种方法(例如,考虑无约束向量)是在实例化时将对象“向下推”到实体中。你能像这样使用类型泛型吗

entity myEntity is
    generic (type myRecord);
    port (p1 : in myRecord);
end entity;
然后在实例化时,创建所需的类型:

package myInstance is new genericPackage generic map ...
...
inst:entity work.myEntity
  signal recordSig : myInstance.genericRecord;
...
  generic map (type => myInstance.genericRecord)
  port map (p1 => recordSig);

据我所知,包实例必须位于实体之外。我不认为你可以按照你想要的顺序拥有依赖关系

解决这类问题的另一种方法(例如,考虑无约束向量)是在实例化时将对象“向下推”到实体中。你能像这样使用类型泛型吗

entity myEntity is
    generic (type myRecord);
    port (p1 : in myRecord);
end entity;
然后在实例化时,创建所需的类型:

package myInstance is new genericPackage generic map ...
...
inst:entity work.myEntity
  signal recordSig : myInstance.genericRecord;
...
  generic map (type => myInstance.genericRecord)
  port map (p1 => recordSig);

我不知道你是否读过我提到的问题和解决方案,但有些人给了我,在实体中使用了实例。这个想法是记录取决于
generic(…)
我知道它将按照您建议的方式工作,但是在实例化时,将无法基于映射到实体的geneirc的值实例化generic包。这看起来很有希望,我将在有时间测试时立即投票(我不太确定modelsim对泛型的支持,但我认为泛型类型存在,而通过泛型传递函数则不存在),谢谢你,我将在测试时再次发表评论/投票。我终于骄傲地尝试了这一点,但是modelsim(10.1d)失败了
Vcom:(Vcom-1440)实体声明中的语言功能接口类型尚不受支持。
…另一个针对Mentor的错误报告:)您能获得Aldec的评估吗?我听说他们2008年的支持比Modelsim好得多。我不知道你是否读过我提到的问题和解决方案,但有些人给了我,在实体中使用了实例。这个想法是记录取决于
generic(…)
我知道它将按照您建议的方式工作,但是在实例化时,将无法基于映射到实体的geneirc的值实例化generic包。这看起来很有希望,我将在有时间测试时立即投票(我不太确定modelsim对泛型的支持,但我认为泛型类型存在,而通过泛型传递函数则不存在),谢谢你,我将在测试时再次发表评论/投票。我终于骄傲地尝试了这一点,但是modelsim(10.1d)失败了
Vcom:(Vcom-1440)实体声明中的语言功能接口类型尚不受支持。
…另一个针对Mentor的错误报告:)您能获得Aldec的评估吗?我听说他们2008年的支持比Modelsim好得多