VHDL工作没有模块。它们被称为已声明组件或直接实例化实体或配置的组件实例。
有了这个测试平台:
library ieee;
use ieee.std_logic_1164.all;
entity tb_divex is
end entity;
architecture foo of tb_divex is
signal x: std_logic_vector(31 downto 0) :=x"000000FF";
signal y: std_logic_vector(31 downto 0) :=x"00000005";
signal r: std_logic_vector(31 downto 0);
begin
DUT:
entity work.divex
port map (
x => x,
y => y,
r => r
);
STIMULUS:
process
begin
wait for 10 ns; -- so we can see these on a waveform display
y <= x"00000023";
wait for 10 ns;
x <= x"00000123";
y <= x"00000003";
wait for 10 ns;
wait;
end process;
end architecture;
它采用了直接实例化的实体,我们得到:
这表明直接实例您divex
导致一些作品。
您从未回应Brian Drummond的实际警告/错误消息请求,这也阻止某人确定您正在使用哪个供应商的工具。
没有看到那些和你的测试台或刺激应用方法,任何人回答都是残疾人。
您可能正在通过组件声明使用组件实例,在这种情况下,您可能没有绑定组件。您可以使用组件声明来分析VHDL设计规范,但除非实体先前已被分析到设计库中,其内容通过上下文子句可见,否则可能不会将组件绑定到库设计单元。
见IEEE标准1076-1993/-2008 12.4.3/14.5.4组件实例声明:
实例化 组件声明组件实例声明的制定没有影响,除非该组件实例 或者完全绑定到由实体声明 定义的设计实体和架构主体,或者绑定到实体的这样的设计配置。如果一个组件实例被如此绑定,那么对应的组件实例化语句的详细描述由代表组件 实例和(在该块内)的隐含块语句的详细描述组成,该隐含块语句表示该设计实体的隐含块语句 组件实例绑定为 。
一个组件实例使用默认绑定基于它的名字:
5.2.2/7.3.3默认绑定指示
在某些情况下,默认绑定指示将适用于 的没有明确的约束指示。默认绑定 指示包含默认实体方面,以及 默认通用映射方面和默认端口映射方面,如 合适。
如果没有可见的实体声明具有相同的简单名称为的 实例化的组件,则默认的实体方面是开放....
所以你divex
组件可以是开放。
在某些管理“项目”的工具中,可能会出现这种情况,因为divex的设计文件未包含在“项目”中。有效地,它不会被分析到当前的工作库中,并且当它已经被分析到一个库(一个不同的工程的工作库)中时,它不会被上下文语句看到,它根本就不存在。
实际错误报告或消息? –
它不会阻止模拟我认为它与位数有关。 – EYx
它可能没有停止......再给它几个小时!或者更合理地说,将X和Y都转换为整数,以便更快地模拟。 –