Modelsim/Questasim:未知实体 <entity_name>。使用扩展名
Modelsim/Questasim: Unknown entity <entity_name>. Use expanded name
我正在使用 QuestaSim,它应该与 ModelSim 相同,但是是 64 位的。我正在尝试 运行 明天 class 到期的作业测试台。任务完成了,我只需要测试台,但 QuestaSim 像往常一样烦人。
出于某种原因,测试平台文件将无法编译。尽管我记得上次我在 ModelSim 上尝试过它,但我终究无法弄清楚为什么。
这是测试平台的代码。
library ieee;
use ieee.std_logic_1164.all;
entity test_bench is
end entity test_bench;
architecture lab1atest of test_bench is
signal X, Y, M: std_logic_vector (7 downto 0);
signal s: std_logic;
begin
dut : entity lab1a
port map ( X=>X, Y=>Y, s=>s, M=>M);
stimulus : process is
begin
X <= "10101010"; Y <= "01010101"; s <= '0'; wait for 20 ns;
s <= '1'; wait for 20 ns;
X <= "11110000"; wait for 20 ns;
s <= '0'; wait for 20 ns;
Y <= "00001111";
wait;
end process stimulus;
end architecture lab1atest;
lab1a.vhd的代码我不能post因为它要提交作业,我不想因为剽窃自己而被钉,但知道实体"lab1a" 肯定存在于该文件中,我确保首先编译该文件(尽管我已经尝试过其他方法,以防万一)。
除了标准的文件选择和点击编译外,我还尝试了以下方法:
vlib work;
vmap work work;
vcom lab1a.vhd;
vcom lab1atest.vhdl;
vsim work.lab1atest;
两者都产生相同的错误。
如果你们中的任何人知道为什么我会在标题中突出显示错误,请告诉我。我觉得这是一个非常简单的修复程序,我目前正在诅咒该产品的设计者,因为他们把它弄得如此不直观。
我为 lab1a 生成了一个虚拟 entity/architecture,它除了具有正确的连接性外什么都不做。
它不会 'analyze' 的直接问题是实体 lab1a 对 test_bench 不可见。
dut : entity lab1a
port map ( X=>X, Y=>Y, s=>s, M=>M);
应该是
dut: entity work.lab1a
port map ( ...
或者您应该通过添加 use 子句使工作目录的内容在上下文子句中可见:
use work.all; -- or some variant form
实施选定名称后(work.lab1a,扩展名称是选定名称的一种形式,参见 IEEE Std 1076-2008, 8.3 Selected names, paragraph 7)使用先前分析的 lab1a 分析代码:
library ieee;
use ieee.std_logic_1164.all;
entity lab1a is
port (
X: in std_logic_vector (7 downto 0);
Y: in std_logic_vector (7 downto 0);
s: in std_logic;
M: out std_logic_vector (7 downto 0)
);
end entity;
architecture foo of lab1a is
begin
end architecture;
虚拟 lab1a 起作用的原因是架构不需要包含并发语句:
architecture_body ::=
architecture identifier of entity_name is
architecture_declarative_part
begin
architecture_statement_part
end [ architecture ] [ architecture_simple_name ] ;
architecture_statement_part ::=
{ concurrent_statement }
IEEE 标准 1076-2008。 1.3.2 突触描述,f):
Braces enclose a repeated item or items on the right-hand side of a
production. The items may appear zero or more times; the repetitions
occur from left to right as with an equivalent left-recursive rule.
标准编号条款中的扩展巴科斯-诺尔范式文本是规范性的。
还有另一种解决方案,使用组件声明和组件实例化而不是直接实体实例化。
这将依赖于默认绑定指示,以在详细说明期间找到先前分析过的 lab1a。 (7.3.3 默认绑定指示)。
我正在使用 QuestaSim,它应该与 ModelSim 相同,但是是 64 位的。我正在尝试 运行 明天 class 到期的作业测试台。任务完成了,我只需要测试台,但 QuestaSim 像往常一样烦人。
出于某种原因,测试平台文件将无法编译。尽管我记得上次我在 ModelSim 上尝试过它,但我终究无法弄清楚为什么。
这是测试平台的代码。
library ieee;
use ieee.std_logic_1164.all;
entity test_bench is
end entity test_bench;
architecture lab1atest of test_bench is
signal X, Y, M: std_logic_vector (7 downto 0);
signal s: std_logic;
begin
dut : entity lab1a
port map ( X=>X, Y=>Y, s=>s, M=>M);
stimulus : process is
begin
X <= "10101010"; Y <= "01010101"; s <= '0'; wait for 20 ns;
s <= '1'; wait for 20 ns;
X <= "11110000"; wait for 20 ns;
s <= '0'; wait for 20 ns;
Y <= "00001111";
wait;
end process stimulus;
end architecture lab1atest;
lab1a.vhd的代码我不能post因为它要提交作业,我不想因为剽窃自己而被钉,但知道实体"lab1a" 肯定存在于该文件中,我确保首先编译该文件(尽管我已经尝试过其他方法,以防万一)。
除了标准的文件选择和点击编译外,我还尝试了以下方法:
vlib work;
vmap work work;
vcom lab1a.vhd;
vcom lab1atest.vhdl;
vsim work.lab1atest;
两者都产生相同的错误。
如果你们中的任何人知道为什么我会在标题中突出显示错误,请告诉我。我觉得这是一个非常简单的修复程序,我目前正在诅咒该产品的设计者,因为他们把它弄得如此不直观。
我为 lab1a 生成了一个虚拟 entity/architecture,它除了具有正确的连接性外什么都不做。
它不会 'analyze' 的直接问题是实体 lab1a 对 test_bench 不可见。
dut : entity lab1a
port map ( X=>X, Y=>Y, s=>s, M=>M);
应该是
dut: entity work.lab1a
port map ( ...
或者您应该通过添加 use 子句使工作目录的内容在上下文子句中可见:
use work.all; -- or some variant form
实施选定名称后(work.lab1a,扩展名称是选定名称的一种形式,参见 IEEE Std 1076-2008, 8.3 Selected names, paragraph 7)使用先前分析的 lab1a 分析代码:
library ieee;
use ieee.std_logic_1164.all;
entity lab1a is
port (
X: in std_logic_vector (7 downto 0);
Y: in std_logic_vector (7 downto 0);
s: in std_logic;
M: out std_logic_vector (7 downto 0)
);
end entity;
architecture foo of lab1a is
begin
end architecture;
虚拟 lab1a 起作用的原因是架构不需要包含并发语句:
architecture_body ::=
architecture identifier of entity_name is
architecture_declarative_part
begin
architecture_statement_part
end [ architecture ] [ architecture_simple_name ] ;
architecture_statement_part ::=
{ concurrent_statement }
IEEE 标准 1076-2008。 1.3.2 突触描述,f):
Braces enclose a repeated item or items on the right-hand side of a production. The items may appear zero or more times; the repetitions occur from left to right as with an equivalent left-recursive rule.
标准编号条款中的扩展巴科斯-诺尔范式文本是规范性的。
还有另一种解决方案,使用组件声明和组件实例化而不是直接实体实例化。
这将依赖于默认绑定指示,以在详细说明期间找到先前分析过的 lab1a。 (7.3.3 默认绑定指示)。