Vhdl 错误:实体不能位于设计的顶部,generic没有默认值

Vhdl 错误:实体不能位于设计的顶部,generic没有默认值,vhdl,ieee,Vhdl,Ieee,我刚刚开始使用VHDL,事实证明它比我想象的要难。目前,我正试图让我的头绕过“通用”操作区域。我已经尽可能地减少了代码(这个摘录没有做任何事情,但仍然会产生错误),但仍然没有设法破解它。如果你们中有人能帮助我,我将非常感激 提前谢谢 library IEEE; entity ALU is GENERIC (constant cst:integer range 15 downto 0); end ALU; architecture behavioural of ALU is

我刚刚开始使用VHDL,事实证明它比我想象的要难。目前,我正试图让我的头绕过“通用”操作区域。我已经尽可能地减少了代码(这个摘录没有做任何事情,但仍然会产生错误),但仍然没有设法破解它。如果你们中有人能帮助我,我将非常感激

提前谢谢

library IEEE;

entity ALU is
    GENERIC (constant cst:integer range 15 downto 0); 
end ALU;

architecture behavioural of ALU is
    begin
End behavioural;


您也可以删除library子句。IEEE Std 1076-2008 14.2设计层次结构的详细说明第7段“一个实现可能允许,但不要求允许设计层次结构根部的设计实体具有泛型和端口。如果一个实现允许这些顶级接口对象,它可能会限制其允许的形式(即,是否允许它们是接口类型、子程序、包或对象),以及对于接口对象,以实现定义的方式允许它们的类型和模式。”依赖于实现。什么工具?第7段续。“类似地,顶级接口对象与层次结构的外部环境关联的方式也由支持顶级接口对象的实现定义。“这就是你是否需要泛型的默认值。你的问题是什么?我的问题是为什么这个非常简单的程序会产生错误。我一直在寻找编写代码的顺序,我一直在寻找如何给泛型一个默认值,但我找不到任何东西。我认为这两个错误是相关的(我似乎无法单独删除一个,删除泛型行会同时删除两个错误),但我无法告诉6.5.6.2泛型子句“泛型提供了一个通道,用于将信息从其环境传输到块、包或子程序。”6.5.6.1“通用接口列表完全由接口常量声明组成,….”6.5.2接口对象声明“接口常量声明::=[常量]标识符列表:[在]子类型指示[:=静态表达式]”,“如果接口声明包含”:符号后跟表达式,该表达式被称为接口对象的默认表达式。“cst:整数范围15到0):=0;正如您在代码本身中所述,遗传是一个常量。但您从未设置该常量的值。不可能使用未定义的常量,因此会出现错误。因此,请在实例化中或将该值设置为默认值
GENERIC(cst:integer range 15下至0:=15);
error:entity "alu" cannot be at the top of a design
alu.vhdl:6:19: generic "cst" has no default value