Зовнішній контроль моделювання ModelSim через названі труби Unix
Анотація: У цій дисертації ми представляємо метод управління моделюванням ModelSim за допомогою зовнішньої програми. Зв'язок між ModelSim та зовнішньою програмою здійснюється за допомогою іменованих труб ("FIFO"), які відображаються як звичайні файли для кожної програми. Основна відмінність використання FIFO від звичайних файлів для міжпроцесорної комунікації (IPC) полягає в тому, що програма, яка намагається записати у FIFO, призупиняється, поки інша програма не намагається прочитати з FIFO, і навпаки. Це підвищує надійність IPC. Основними перевагами цього методу є 1) Оскільки використовуються лише загальні файлові операції, зовнішня програма може бути написана майже будь-якою мовою програмування; 2) Це дає можливість інженеру верифікації можливість повторно використовувати програмні пакети для перевірки стандартів з мінімальним перезаписом; 3) маючи декілька пристроїв, які проходять тест (DUT), один з одним, може бути створено більш точне моделювання кінцевої системи; та 4) Продуктивність загального моделювання може бути легко підвищена на кластері односистемного зображення (SSI) або багатопроцесорному комп'ютері, навіть незважаючи на те, що симулятор ModelSim не є багатопоточним. Через свою реалізацію вводу / виводу файлів (вводу / виводу) для поведінкових VHDL, ModelSim не може читати або записувати ці FIFO безпосередньо. Вирішення цього обмеження продемонстровано за допомогою іноземного мовного інтерфейсу ModelSim (FLI). У цьому документі також показаний робочий приклад цього методу, який використовується для перевірки наступного покоління підпрограм з плаваючою комою в VHDL. Зокрема, програмний пакет IEEE з відкритим кодом з відкритим кодом, який написано на C ++,
І проблема з FIFO, які вимагають іноземного інтерфейсу програмування, полягає в тому, що введення / виведення файлів VHDL не може граціозно боротися з блокуванням, поки дані не стануть доступними.
На жаль, теза недоступна в Інтернеті.
Модель Sim ® Інтерфейс іноземної мови версія 5.6d , PDF 3.4 Мб.
Використання інтерфейсу іноземної мови ModelSim для c - VHDL ко-симуляції та для управління імітатором на платформі Linux x86 Andre Pool - fli@andrepool.com - версія 1.5 - створено в листопаді 2012 р., Останнє оновлення вересня 2013 р. , PDF, 320 КБ (і ніколи не згадується про FIFO) .
Використання інтерфейсу іноземної мови ModelSim для ко-симуляції VHDL та управління імітатором на платформі Linux x86 (відповідне сховище коду github).
Існує трохи більш відкритий код, використовуючи функцію VHPI Foreign виклики в 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 для загальнодоступного домену , який містить вказівник на попередній папір SNUG San Jose 2002 1 C / UNIX Функції для тестових стенд VHDL C / UNIX для тестових стенд VHDL разом із слайдом набір з додатковими записками про труби Unix & rsh . Це показує, як тримати названі труби відкритими. Весь код VHDL також можна завантажити. Я вважаю, що це призведе до найпростішого шляху досягнення вашої мети.
То чи є щось рідне для Modelsim, що дозволяє підключити до труби? Ймовірно, ні, тим більше під Windows. Чи можна це зробити? Так, але шлях не для слабкодухих. Ви можете зайти в тупик з одного або іншого кінця або, можливо, обидва очікуєте на доступність даних.
Іноземний інтерфейс програмування теоретично дозволяє породити дочірній процес для того чи іншого кінця "труби", що також означає, що ви могли використовувати спільну модель пам'яті для зв'язку між двома кінцями.