我有一些VHDL,其中泛型与导入包中的常量同名。NCSIM似乎在泛型上使用来自包的常量的值。
与其重命名泛型,我还可以强制使用范围来获取泛型。
发布于 2014-06-16 11:24:19
标识符可以用包或实体名称限定,以便指定应该使用的重叠标识符中的哪一个。例如,使用代码:
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的结果是:
# ** Note: CONST = 42
# ** Note: pkg.CONST = 17
# ** Note: mdl.CONST = 42但是,问题的根源在于use work.pkg.all名称空间的“污染”,因此一个更干净的解决方案是首先使用use work.pkg避免污染,然后强制对包中的标识符进行限定名的引用,除非这种方法不切实际。
https://stackoverflow.com/questions/24242001
复制相似问题