Чи можете ви поєднати тестовий стіл Modelsim із зовнішніми подразниками


10

Я працюю над командою, яка займається розробкою як драйверного програмного забезпечення, так і FPGA. Моделювання FPGA проводиться в Modelsim, а програмне забезпечення для драйверів написано на C. Щоб мінімізувати ризик інтеграції, я хотів би мати можливість моделювати взаємодію між двома половинами нашого продукту перед тим, як ставити його на апаратне забезпечення.

Я знаю, що Modelsim підтримує пробну версію, яка дозволяє надати стимул у вигляді текстового файлу із часом та значеннями для введення. Мені цікаво, чи у Modelsim є режим, який дозволяє підключити трубу до зовнішнього додатку (наприклад, наш драйвер), і запустити своєрідне розподілене моделювання, де програмне забезпечення може натиснути значення в тестовий стенд, а потім спостерігати за результатами .

Хитрість, яку я не можу зробити при введенні текстового файлу, полягає в тому, щоб дві половини продукту взаємоділи. Мені потрібно мати програмне забезпечення "записувати" значення в симулятор FPGA, читати результати, а потім записувати нові значення в FPGA, які залежать від результатів, які він читав. Текстові файли вимагають, щоб входи не залежали від виводу.

Я робив пошук як у StackExchange, так і в Google, але мені не вдалося придумати набір ключових слів, щоб звузити мій пошук, щоб або визначити поведінку, яку я шукаю, або визначити, що вона не існує.

Відповіді:


9

Зовнішній контроль моделювання 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. Чи можна це зробити? Так, але шлях не для слабкодухих. Ви можете зайти в тупик з одного або іншого кінця або, можливо, обидва очікуєте на доступність даних.

Іноземний інтерфейс програмування теоретично дозволяє породити дочірній процес для того чи іншого кінця "труби", що також означає, що ви могли використовувати спільну модель пам'яті для зв'язку між двома кінцями.


Дякую за чудово вивчену відповідь! "Інтерфейс іноземної мови" був саме тією фразою, яка мені потрібна, щоб підібрати потрібну мені довідкову документацію, я просто ніколи б не здогадався про це! Рання інтеграція сюди я приходжу!
Корт Аммон

5

Можливо, ви захочете подивитися на Кокотб . Це бібліотека спільного моделювання на основі Python, однією з цілей проектування було включити описану вами методологію, легко імітуючи незмінене виробниче програмне забезпечення та RTL.

У сховищі є приклад запуску незміненої pingкоманди проти моделювання та підручника, що проходить через код.

Для драйверів простору користувачів, утиліти конфігурації тощо у вас є кілька варіантів запуску програмного забезпечення без змін :

  1. Якщо ваш доступ до пристрою зводиться до кількох функцій (наприклад, виклик читання та запису), ви можете зв’язатись із бібліотекою моделювання, яка блокує під час здійснення доступу проти моделювання. Це дуже добре працює для конфігурації.

  2. Якщо ваше програмне забезпечення використовує відображені на пам’яті вказівники вводу-виводу та пам'яті dereferences для доступу до пристрою, то справи стають дещо складнішими - вам потрібно створити спільну область пам’яті з встановленими бітами захисту та доступом до пастки .

Якщо ви використовуєте мережу, тоді можна використовувати віртуальні інтерфейси на зразок TUN / TAP (див. Вищевказаний підручник ), я підозрюю, що можуть бути подібні варіанти передачі через USB або інші загальні інтерфейси хоста.

Cocotb працює з різноманітними тренажерами та VHDL (через VHPI) або конструкціями Verilog / SystemVerilog (через VPI). На жаль, Modelsim не реалізує VHPI, тому як користувач VHDL ви застрягли з FLI, що не так вже й корисно, як інтерфейс. Ви можете стогнати у "Наставника", щоб спробувати переконати їх реалізувати стандартний галузевий інтерфейс, або ви можете оцінити інший симулятор, що підтримує VHPI.

На жаль, схоже, що постачальники інструментів взагалі не особливо зацікавлені в ринку VHDL, судячи з часу, який їм потрібен для реалізації будь-яких функцій, пов'язаних з VHDL ...

Відмова: Я розробник Cocotb.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.