Тема: Системні функції та функції користувача в Verilog. Створення користувацької функції та функції її реєстрації на мові Сі
1. Теоретичні відомості
Середовище моделювання ModelSim призначене для перевірки працездатності проекту, описаного на одній з мов описання апаратури (HDL). Вона включає в себе засоби створення проекту, створення і редагування вихідних файлів проекту, компілятор, моделюючу програму і засоби візуалізації результатів моделювання (графічний редактор та ін.). ModelSim підтримує роботу з тестовими файлами на HDL (test-bench) або на мові Tcl (командна мова для створення керуючих файлів).
Засоби розширення мови 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. Самостійна робота
Модифікуйте демонстраційний приклад для виводу на екран фамілії та ініціалів студента, номера групи та номера у списку.
Автор: Александр Романов