Как я могу вывести внутренние сигналы моего исходного кода VHDL на свой стенд, чтобы я мог просматривать их как сигналы? Я использую Active HDL. Я хотел бы знать, есть ли какой-либо инструмент независимый метод достижения моей цели. Любая помощь приветствуется.
Я получаю эту ошибку сейчас.
Мой исходный код
entity SPI_DAC is
Port (
-- inputs and oututs
)
end SPI_DAC;
architecture Behavioral of SPI_DAC is
--These are my internal signals
signal ch1_byte_data_sent : STD_LOGIC_VECTOR(23 downto 0) := x"000000";
signal ch1_byte_cmd_sent : STD_LOGIC_VECTOR(23 downto 0) := x"000000";
--and a few other signals
begin
--functionality
end Behavioral;
Мой код тестового стенда
entity tb_spi_dac is
end tb_spi_dac;
architecture behavioral of tb_spi_dac is
component spi_dac
port(
--declaration, inputs and outputs
);
end component;
begin
uut: spi_dac port map(
--map ports
);
--stimulus process
end;
.tp_spi_dac.uut.ch1_byte_data_sent
.Ответы:
То, что вы ищете, называется внешними именами (или иерархическими именами) в VHDL. Их можно использовать для обхода видимости области / иерархии. Синтаксис похож на пример ниже.
Вы также можете получить доступ к константам и переменным с внешними именами. Вы должны изменить тип во внешнем типе, хотя. Вы можете использовать внешние имена напрямую для доступа на чтение / запись. Однако вы должны использовать псевдонимы для улучшения читабельности.
Внешнее имя должно содержать путь к элементу, к которому вы хотите получить доступ. Путь может быть абсолютным или относительным. Отдельные элементы на вашем пути разделены точками. Обратите внимание, что вы должны предоставить метки экземпляра / процесса / сущности / ..., а не имя. Абсолютный путь начинается с
.
имени вашего верхнего уровня. Для относительных путей вы можете использовать^
для перемещения вверх по иерархии. При использовании констант / сигналов из какого-либо пакета вы также можете использовать@
для перехода в библиотеку.Примером абсолютного пути является
Для доступа к тому же элементу из тестового стенда с относительными именами вы можете использовать
Когда вы хотите получить доступ к некоторому сигналу / константе тестового стенда из sub_instance, вы можете использовать
Чтобы получить доступ к некоторой другой константе в пакете конфигурации, расположенном в библиотеке конфигурации, вы можете использовать
Вы можете использовать свой браузер дизайна / библиотеки симуляторов, как указал Дэвид, чтобы найти правильный путь.
Эта функция была добавлена в VHDL-2008, поэтому она должна поддерживаться всеми инструментами, которые уже поддерживают VHDL-2008 (включая ActiveHDL, я думаю). Большинство симуляторов не используют VHDL-2008 по умолчанию, но предоставляют аргумент командной строки или параметр конфигурации, чтобы включить его.
источник
alias
вы должны написать назначение в новом утверждении. Преимущество состоит в том, что вы можете использовать псевдоним вместо длинного внешнего имени.Тестовый стенд подразумевает моделирование - объект без каких-либо портов, как правило, не подходит для синтеза.
Хотя я никогда не использовал Active-HDL, я понимаю, что у него есть дизайнерский браузер, который должен позволять вам выбирать сигналы в вашей иерархии для отображения в вашей форме волны. См. Видео Aldec's Compilation and Simulation (5:02, мин: сек).
И сейчас у меня сложилось впечатление, что видео может вызвать путаницу, возможно, в данном конкретном случае.
В 2:22 с конца видео показывает файл do (макрос), который управляет симуляцией:
Там, где мы видим, каждый сигнал на верхнем уровне дизайна был добавлен к отображению формы волны с помощью команды wave. Также должна быть возможность указать сигнал в любом месте иерархии проекта.
Основная идея заключается в том, что многие симуляторы позволяют планировать сбор сигналов (и некоторые разрешающие переменные) для отображения формы сигнала.
Это короткое видео просто не показывает сигналы для уровней вспомогательной иерархии. (В короткой видео-презентации много чего написано).
Как уже отмечалось выше, ваша цель, по-видимому, состоит в том, чтобы рассматривать внутренние сигналы как сигналы.
Теперь о плохих новостях - не существует стандартизации для функций или интерфейсов симулятора, планирования сигналов для дампа формы сигнала и т. Д. Все это определяется реализацией.
В значительной степени гарантировано, что вы можете выгружать сигналы в любом месте иерархии проекта в средство просмотра формы волны или файл дампа формы волны с любой реализацией, которая имитирует, метод для этого определяется реализацией.
Хорошей новостью является то, что они, как правило, копируют понятия друг с другом, такие как файлы do, которые вы можете сгенерировать программно для переносимости, используя общую базу данных, описывающую функциональную верификацию на нескольких платформах реализации, преодолевая различия в синтаксисе и семантике. Вероятно, также будут различия в синтаксисе интерфейса командной строки для программного вызова инструментов.
Идея переносимости не охватывает несколько графических интерфейсов.
источник
Такие инструменты, как xilinx, имеют возможность просмотра внутренних сигналов.
Простой, независимый от инструмента метод - это объявление отдельных выходных линий и подключение внутренних сигналов к этим линиям.
источник
Если вы объявили сигналы в тестовом стенде, но не можете увидеть какие-либо выходные данные, у вас может быть проблема в операторе создания экземпляров, когда вы создаете экземпляр объекта, подлежащего тестированию. Проверьте, правильно ли вы его создали, используя оператор создания сущности или компонент. Убедитесь, что сигналы в вашем тестовом стенде подключены к тестируемому объекту. Если это не решит проблему, опубликуйте код тестового стенда, чтобы мы могли помочь.
источник