首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >强制VHDL在常量上使用泛型

强制VHDL在常量上使用泛型
EN

Stack Overflow用户
提问于 2014-06-16 10:50:46
回答 1查看 1.1K关注 0票数 2

我有一些VHDL,其中泛型与导入包中的常量同名。NCSIM似乎在泛型上使用来自包的常量的值。

与其重命名泛型,我还可以强制使用范围来获取泛型。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-16 11:24:19

标识符可以用包或实体名称限定,以便指定应该使用的重叠标识符中的哪一个。例如,使用代码:

代码语言:javascript
复制
package pkg is
  constant CONST : integer := 17;
end package;

...

use work.pkg;
use work.pkg.all;

entity mdl is
  generic(
    CONST : integer := 42);
end entity;

architecture sim of mdl is
begin
  process is
  begin
    report "CONST = " & integer'image(CONST);
    report "pkg.CONST = " & integer'image(pkg.CONST);
    report "mdl.CONST = " & integer'image(mdl.CONST);
    wait;
  end process;
end architecture;

ModelSim的结果是:

代码语言:javascript
复制
# ** Note: CONST = 42
# ** Note: pkg.CONST = 17
# ** Note: mdl.CONST = 42

但是,问题的根源在于use work.pkg.all名称空间的“污染”,因此一个更干净的解决方案是首先使用use work.pkg避免污染,然后强制对包中的标识符进行限定名的引用,除非这种方法不切实际。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24242001

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档