【发布时间】:2016-09-21 23:24:50
【问题描述】:
是否有可能在任何版本的 VHDL 中(可能是 2008 年)在声明类型之前使用它?
例如我在实体的架构中有这个数组声明:
type my_array is array (integer range <>) of my_type;
并且仍然在同一个架构部分,但在文件的后面我有这个:
type my_type is record
my_field: signed(31 downto 0);
end record;
现在这会在 Vivado 中出现以下错误:
[Synth 8-1031] my_type 未声明
解决办法当然是把记录声明移到数组声明上面。然而,随着类型数量的增加,这变得非常复杂和混乱(因为您基本上必须对类型进行拓扑排序,同时考虑到它们的依赖关系)。
每种主要的编程语言都支持这样的东西,所以我想它可能也存在于 VHDL 中。我还隐约记得读过有关此内容已添加到 VHDL 2008 中的信息,但找不到任何有关它的资源,而且我对 VHDL 2008 的快速测试是否定的。
那么是否可以在声明之前在 VHDL 中使用一个类型,因为该类型仍然在相同的体系结构、相同的文件中声明,但在下面几行?
【问题讨论】:
-
VHDL-2008 中的泛型类型可能会有所帮助。
-
嗯。虽然泛型可能有助于简化一些复杂的依赖关系,但我认为这并没有使事情变得更容易(因为现在您必须小心单独插入泛型,这可能会导致更长和更难阅读代码以及重复)。