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 无法分析您的测试台文件,并出现问题中的错误。但这实际上不是必需的,因为它(应该)只包含测试台代码。因此:

  1. 通过菜单项目 -> "Add/Remove Files in Project..." 和
  2. 从您的 Quartus 项目中删除此测试台文件
  3. 仅在可通过菜单分配 -> 设置 -> 模拟 -> 编译测试台 -> 测试台 -> New/Edit.
  4. 访问的模拟设置中添加此文件

推测您正在使用 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。