VHDL — внутренние сигналы испытательного стенда

Я трачу некоторое время на изучение написания тестовых стендов, чтобы опробовать некоторые из созданных мной моделей. Кто-нибудь знает способ контролировать сигналы, которые являются внутренними для архитектуры тестируемого устройства. я пытался использовать

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;

Но я получаю ошибку компилятора:

Ошибка (10481): ошибка пункта использования VHDL в Q4.vhd(15): библиотека проектирования «MODELSIM_lib» не содержит основной модуль «util»

Я проверил папку библиотеки Quartus II, и утилита находится в правильном месте. Какие-либо предложения? Спасибо д


person hoboBob    schedule 03.02.2016    source источник


Ответы (2)


Когда вы запускаете симуляцию, Quartus анализирует все файлы, указанные в настройках проекта (доступны через меню Назначение -> Настройки -> Файлы). Но он прорабатывает только те объекты, которые необходимы для ИУ, начиная с объекта верхнего уровня (см. меню Назначение -> Настройки -> Общие), чтобы выяснить, какие файлы проекта (за исключением тестовых стендов) требуются. для моделирования. Дополнительные сведения см. в другом моем ответе.

Библиотека MODELSIM_LIB находится только в ModelSim, а не в Quartus. Таким образом, Quartus-II не может проанализировать ваш тестовый файл с ошибкой, указанной в вопросе. Но на самом деле это не требуется, потому что он (должен) содержать только код тестового стенда. Таким образом:

  1. удалите этот файл тестового стенда из вашего проекта Quartus через меню «Проект» -> «Добавить/удалить файлы в проекте...» и
  2. добавьте этот файл только в настройки симуляции, доступные через меню Назначение -> Настройки -> Симуляция -> Компиляция тестового стенда -> Тестовые стенды -> Создать/Редактировать.
person Martin Zabel    schedule 04.02.2016
comment
Не уверен, что понял тебя. Я попробовал шаги, которые вы упомянули. сделал отдельный файл с моделью тестового стенда. и удалил его из проекта. Затем использовал его в разделе тестового стенда настроек/симуляции. Который работал нормально. Я получаю возможность в моде запустить тестовый стенд. до сих пор нет внутренних сигналов. Если я добавлю код из исходного вопроса, тестовый стенд нельзя будет использовать при запуске моделирования. - person hoboBob; 06.02.2016
comment
@DannyJ Я раньше не использовал сигнальный шпион. Таким образом. Я проверил только, чтобы загрузить файл MODELSIM_LIB. Мое решение исправляет ошибку и, таким образом, отвечает на основную часть вопроса. Не могли бы вы сделать минимальный и полный пример для проверки init_signal_spy? - person Martin Zabel; 07.02.2016

Предположительно, вы используете Modelsim для моделирования, и в этом случае вам не нужно ничего, кроме использования сигнального шпиона в VHDL, вот пример (извините за любые синтаксические ошибки)...

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.

person fpga_magik    schedule 04.02.2016
comment
Спасибо за ответ. Я попробовал это, но просто получил ошибку компилятора с синтаксисом для spy_blob ‹= ‹‹ signal .T1.rom.chip_sel : std_logic›› - person hoboBob; 06.02.2016