Внешний контроль симуляции ModelSim через именованные каналы Unix
Аннотация: В этом тезисе мы представляем метод управления моделированием ModelSim с помощью внешней программы. Связь между ModelSim и внешней программой осуществляется с помощью именованных каналов («FIFO»), которые отображаются в виде обычных файлов для каждого приложения. Основное различие между использованием FIFO и обычных файлов для межпроцессного взаимодействия (IPC) заключается в том, что приложение, пытающееся выполнить запись в FIFO, приостанавливается до тех пор, пока другое приложение не попытается выполнить чтение из FIFO и наоборот. Это повышает надежность МПК. Основные преимущества этого метода: 1) Поскольку используются только общие файловые операции, внешнее приложение может быть написано практически на любом языке программирования; 2) Это дает инженеру по верификации возможность повторно использовать пакеты программного обеспечения для проверки стандартов с минимальным переписыванием; 3) Наличие нескольких тестируемых устройств (DUT) обменивается данными друг с другом, что позволяет создать более точную симуляцию конечной системы; и 4) производительность всего моделирования можно легко повысить на кластере с одиночным образом системы (SSI) или на многопроцессорном компьютере, даже если механизм моделирования ModelSim не является многопоточным. Из-за реализации файлового ввода / вывода (I / O) для поведенческого VHDL, ModelSim не может читать или записывать эти FIFO напрямую. Обходной путь для этого ограничения демонстрируется с помощью интерфейса иностранных языков ModelSim (FLI). В этой статье также показан рабочий пример использования этого метода при проверке следующего поколения подпрограмм с плавающей запятой в VHDL. В частности, программный пакет с открытым исходным кодом IEEE Compliance Checker, написанный на C ++,
И проблема с FIFO, требующими интерфейса стороннего программирования, заключается в том, что ввод-вывод файла VHDL не может изящно справляться с блокировкой, пока данные не будут доступны.
К сожалению, тезис не доступен в Интернете.
Model Sim ® Интерфейс для иностранных языков Версия 5.6d , PDF 3.4 МБ.
Использование интерфейса иностранного языка ModelSim для c-VHDL Co-Simulation и для управления симулятором на платформе Linux x86 Andre Pool - fli@andrepool.com - версия 1.5 - создано в ноябре 2012 г., последнее обновление сентябрь 2013 г. , PDF, 320 КБ (и никогда не упоминает FIFO) ,
Использование интерфейса иностранного языка ModelSim для c-VHDL Co-Simulation и для Simulator Control на платформе Linux x86 (соответствующий репозиторий кода github).
Есть немного более открытый исходный код, используя вызовы внешних функций VHPI в ghdl: vhdl
/ src / sim / ghdlex_mein на master · texane / vhdl · GitHub .
И что похоже на обновление от Мартина Штрубеля в списке GHDL_discuss:
http://www.section5.ch/downloads/ghdlex-0.051.tgz, показывающее дату для fifo.c от 14 апреля 2014 года.
FLI по определению привязал бы вас к Modelsim, не уверенному в состоянии их поддержки VHPI (которая является частью IEEE Std 1076-2008, VHDL LRM).
Использование сокета или файла FIFO позволяет программному и аппаратному процессу работать с различной скоростью, обеспечивая буферизацию скорости. Это не всегда необходимо, если ваша программная система работает на несколько порядков быстрее, чем аппаратная симуляция (и это обычно так).
Предпринимаются усилия по обеспечению функциональности UNIX (POSIX) для VHDL, см. Пакеты VHDL Public Domain , в которых содержится указатель на более раннюю статью SNUG San Jose 2002 1 Функции C / UNIX для тестовых стендов VHDL Функции C / UNIX для тестовых стендов VHDL вместе со слайдом набор с дополнительными примечаниями по трубам Unix & rsh . Это показывает, как сохранить именованные каналы открытыми. Весь код VHDL также можно скачать. Я считаю, что это приведет к самому легкому пути достижения вашей цели.
Так есть ли что-то родное для Modelsim, которое позволяет вам подключиться к трубе? Скорее всего нет, тем более под Windows. Это можно сделать? Да, но путь не для слабонервных. Вы можете заблокировать один конец или другой или, возможно, оба в ожидании доступности данных.
Интерфейс стороннего программирования теоретически позволяет вам порождать дочерний процесс для одного или другого конца «канала», что также означает, что вы можете использовать модель общей памяти для связи между двумя концами.