您可以为实体起别名吗?

问题描述

通读LRM,这似乎意味着任何东西都可以使用别名,但是当我尝试以下操作时,ActiveHDL告诉我应该使用一个设计单元:

entity some_entity is
.....
end entity;

alias another_name is some_entity;

LRM(在6.6.1中指出)

对象别名是一个别名,其别名指示符表示对象(即,常量,变量,信号或 文件)。非对象别名是一个别名,其别名指示符表示除对象之外的某些命名实体。 可以为所有命名实体声明别名,标签,循环参数和生成参数除外。

还是只是因为别名是声明性项目,所以别名必须存在于声明性区域中?但是,假设别名与别名项具有相同的类,那么肯定应该在同一区域中允许它吗?这似乎可以编译:

package alias_package is
  alias another_name is work.some_entity;
end package;

上述请求的解释:可以说我想重命名some_entity,但是在我的设计中都使用了它。创建一个别名将允许这样做,将旧名称保留为新名称的别名。在此不适合使用该软件包,因为它仍需要在实例化时修改名称

这值得下一个LRM请求吗?

解决方法

还是仅仅是因为别名是声明性项目,所以别名必须存在于声明性区域中?

是的。设计文件由一个或多个设计单元组成,实体声明是一个设计单元。一个设计单元由一个或多个嵌套的声明性区域组成。根声明区域(带有可选的context子句包含设计单元本身和任何从属次级设计单元。

除了设计单元的末尾,没有其他用于声明性区域的分隔符。

但是,鉴于别名与别名项具有相同的类,是否肯定应在同一区域中允许使用别名?

不。声明完成后,声明才生效(它的名称不可见)。在这里,结束 [实体 _simple_name];。

新的设计单元以可选的上下文项目(从保留字使用 context 开始)开头,随后是主要单元声明或二级单位主体(由以下保留字之一表示:实体体系结构软件包配置 context (此处忽略 PSL ,工具指令和注释)。

独立分析设计单位。

别名的类别是对象和非对象。别名声明以命名实体的声明为目标(某些名称声明是隐式的)。

这是否值得下一个LRM的请求?

这个问题是对主观意见的要求,没有明确的用例(提供示例,尤其是在设计层次结构中)。原因尚不清楚。您想避免做什么工作?

否则,不。

综合供应商对标准的某些部分也缺乏支持,这些供应商已经解决了从默认情况下修改绑定的异常(配置声明包含上下文规范或带有保留字 configuration 的组件实例化)。