我正在努力实现一个端口依赖于通用包的实体,而这通用包依赖于实体的泛型。诀窍是我希望有一个端口记录。
首先,我尝试将记录放在通用包中,并从实体中实例化通用包。 (我没有从记录开始并问question regarding this)。
问题是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的功能来解决这个问题吗?
答案 0 :(得分:1)
据我了解,包实例必须在实体之外。我认为你不能按照你想要的顺序拥有依赖项。
解决此类问题的另一种方法(例如,不受约束的向量)是在瞬间“将事情”推向实体。你能使用这样的类型泛型吗?
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);