ЛР1 > Розробка користувацьких системних функцій Verilog

Тема: Системні функції та функції користувача в Verilog. Створення користувацької функції та функції її реєстрації на мові Сі

1. Теоретичні відомості

Середовище моделювання ModelSim призначене для перевірки працездатності проекту, описаного на одній з мов описання апаратури (HDL). Вона включає в себе засоби створення проекту, створення і редагування вихідних файлів проекту, компілятор, моделюючу програму і засоби візуалізації результатів моделювання (графічний редактор та ін.). ModelSim підтримує роботу з тестовими файлами на HDL (test-bench) або на мові Tcl (командна мова для створення керуючих файлів).

 Тестування та верифікація цифрових систем: структура курса лабораторних робіт 
 1. Розробка користувацьких системних функцій Verilog 
 2. Застосування різних типів процедур PLI. Процедура знаходження часу симуляції 
 3. Зчитування / запис даних більших за 32 біт 
 4. Організація доступу до масивів за допомогою VPI / PLI 
 5. Перевірка функції на повернення помилки та отримання аргументів симулятора 
 6. Застосування робочих областей PLI 

Засоби розширення мови HDL

HDL забезпечуються засобами взаємодії з мовами програмування високого рівня:

  • PLI (Programming Language Interface) для Verilog.
  • VPI (Verilog Procedural Interface)
  • FLI (Foreign Language Interface) для VHDL.
  • VHPI (VHDL Procedural Interface)
  • DPI (Direct Programming Interface) для SystemVerilog


Рис. 1 Взаємодія середовища симулятора із зовнішньою моделлю на С

Verilog процеси та функції

Процес:

Функція ТF (Task Function):

  • Визначається в межах модуля
  • Описується лише алгоритмічно
  • Параметри передаються за допомогою вхідних/вихідних сигналів
  • Можуть визначатися та використовуватися локальні змінні
  • Рекурсія заборонена, але внутрішні процеси допустимі
  • Алгоритмічна, та має комбінаторний тип роботи
  • Нема керування часом
  • Може викликати інші функції, але без рекурсії *(є винятки)
  • Може використовувати лише вхідні параметри
  • Головне призначення функції – повернення лише одного значення

Додатково можна виділити наступні відмінності процесів та функцій:

  • Функція має виконуватись за один відлік часу; процес має/може контролювати час свого виконання.
  • Функція не може ініціювати процес; процес може викликати функції та інші процеси.
  • Функція має мати принаймі один аргумент типу input та не може мати output або inout аргументи; процес може мати будьякі аргументи, або не мати їх взагалі.
  • Функція має повертати одне значення; процес може не повертати нічого, або не мати жодного виходу.

Verilog системні TF та функції користувача

Вбудовані системні TF

Вбудовані функції та процеси забезпечують можливість звертатися до системних засобів симулятора:

  • Використовувати консоль.
  • Виконувати запис / зчитування інформації з/в файл.
  • Зупиняти / запускати моделювання.
  • Звертатись до засобів відображення таблиць та графіків.


Рис. 2 Приклад виклику системної функції $display

Функції користувача

  • Іноді, вбудованих засобів Verilog не вистачає.
  • VPI даю змогу створювати процеси та функції іншими мовами програмування

2. Порядок виконання роботи

1. Процес виконання лабораторної роботи представляється у вигляді послідовних кроків:

Крок 1: Запрограмувати виклик $cosim_hello процес з Verilog.

Крок 2: Кодування calltf процедури для $cosim_hello.

Крок 3: Кодування функції реєстрації для визначення параметрів $cosim_hello процесу.

Крок 4: Компіляція та компоновка PLI поцедур (включно з calltf, реєстраційною процедурою).

2. Розробка інтерфейсу VPI:

1) Створення функції реєстрації register function.

2) Заповнення структури ‘s_vpi_systf_data’ в функції реєстрації, для

забезпечення PLI інформацією про правила виклику функцій користувача.

3) Реєстрація нову системної фунції / процесу викликом ‘vpi_register_systf()’.

4) Verilog симулятор може викликати користувацьку функцію, використовуючи посилання з спеціального масиву: ‘vlog_startup_routines[]’.


Рис. 3 Процес компіляції та виконання проекту

3. Створіть файл test_hello.v та введіть код модуля:


Рис. 4 Розробка модуля із викликом користувацької функції

4. Створіть файл cosim_hello.c, де визначте користувацьку функцію та функцію реєстрації функції користувача:


Рис. 5 Розробка користувацької функції та функції її реєстрації

5. Виконайте компіляцію користувацької функції та створіть динамічну бібліотеку, яка буде підключена до симулятора ModelSim під час симуляції.


Рис. 6 Компіляція користувацької функції у бібліотеку *.dll

6. Виконайте симуляцію в ModelSim.


Рис. 7 Результати симуляції в ModelSim

3. Самостійна робота

Модифікуйте демонстраційний приклад для виводу на екран фамілії та ініціалів студента, номера групи та номера у списку.

Автор: Александр Романов