VHDL - 测试台内部信号
VHDL - Testbench internal signals
我正在花一些时间学习如何编写测试平台来试用我制作的一些模型。有谁知道一种方法来监视被测单元体系结构内部的信号。我试过使用
LIBRARY MODELSIM_LIB;
USE MODELSIM_LIB.UTIL.ALL;
spy_process : process begin
init_signal_spy("Q4/C1/A1/chip_sel","/chip_sel",1);
wait;
end process spy_process;
但是我得到一个编译器错误:
Error (10481): VHDL Use Clause error at Q4.vhd(15): design library "MODELSIM_lib" does not contain primary unit "util"
我检查了 Quartus II 库文件夹,util 位于正确的位置。
有什么建议么?
感谢 D
当您开始仿真时,Quartus 分析项目设置中指定的所有 文件(可通过菜单分配 -> 设置 -> 文件访问)。但是,它 仅 从顶级实体开始的 DUT 所需的实体(请参阅菜单分配 -> 设置 -> 常规)找出哪些设计文件(不包括测试平台) ) 是模拟所必需的。
有关详细信息,请参阅 。
库 MODELSIM_LIB
只能由 ModelSim 找到,不能由 Quartus 找到。因此,Quartus-II 无法分析您的测试台文件,并出现问题中的错误。但这实际上不是必需的,因为它(应该)只包含测试台代码。因此:
- 通过菜单项目 -> "Add/Remove Files in Project..." 和
从您的 Quartus 项目中删除此测试台文件
- 仅在可通过菜单分配 -> 设置 -> 模拟 -> 编译测试台 -> 测试台 -> New/Edit.
访问的模拟设置中添加此文件
推测您正在使用 Modelsim 进行仿真,在这种情况下,您只需要在 VHDL 中使用 signal spy,这里有一个示例(请原谅任何语法错误)...
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
entity my_testbench is
end my_testbench;
architecture behavioral of my_testbench is
signal spy_blob : std_logic := '0';
begin
my_entity : entity work.my_entity(rtl)
port map(
...
);
spy_blob <= << signal .my_testbench.my_entity.w_blob : std_logic >>;
my_monitor : process(w_clk)
begin
if(rising_edge(w_clk)) then
if(spy_blob = '1') then
-- do something
end if;
end if;
end process;
end behavioral;
注意: 这适用于 Quartus/Modelsim 软件包的 V13。
我正在花一些时间学习如何编写测试平台来试用我制作的一些模型。有谁知道一种方法来监视被测单元体系结构内部的信号。我试过使用
LIBRARY MODELSIM_LIB;
USE MODELSIM_LIB.UTIL.ALL;
spy_process : process begin
init_signal_spy("Q4/C1/A1/chip_sel","/chip_sel",1);
wait;
end process spy_process;
但是我得到一个编译器错误:
Error (10481): VHDL Use Clause error at Q4.vhd(15): design library "MODELSIM_lib" does not contain primary unit "util"
我检查了 Quartus II 库文件夹,util 位于正确的位置。 有什么建议么? 感谢 D
当您开始仿真时,Quartus 分析项目设置中指定的所有 文件(可通过菜单分配 -> 设置 -> 文件访问)。但是,它 仅 从顶级实体开始的 DUT 所需的实体(请参阅菜单分配 -> 设置 -> 常规)找出哪些设计文件(不包括测试平台) ) 是模拟所必需的。
有关详细信息,请参阅
库 MODELSIM_LIB
只能由 ModelSim 找到,不能由 Quartus 找到。因此,Quartus-II 无法分析您的测试台文件,并出现问题中的错误。但这实际上不是必需的,因为它(应该)只包含测试台代码。因此:
- 通过菜单项目 -> "Add/Remove Files in Project..." 和 从您的 Quartus 项目中删除此测试台文件
- 仅在可通过菜单分配 -> 设置 -> 模拟 -> 编译测试台 -> 测试台 -> New/Edit. 访问的模拟设置中添加此文件
推测您正在使用 Modelsim 进行仿真,在这种情况下,您只需要在 VHDL 中使用 signal spy,这里有一个示例(请原谅任何语法错误)...
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
entity my_testbench is
end my_testbench;
architecture behavioral of my_testbench is
signal spy_blob : std_logic := '0';
begin
my_entity : entity work.my_entity(rtl)
port map(
...
);
spy_blob <= << signal .my_testbench.my_entity.w_blob : std_logic >>;
my_monitor : process(w_clk)
begin
if(rising_edge(w_clk)) then
if(spy_blob = '1') then
-- do something
end if;
end if;
end process;
end behavioral;
注意: 这适用于 Quartus/Modelsim 软件包的 V13。