ЛР3 > Зчитування / запис даних більших за 32 біт

Тема: Застосування PLI структури t_vpi_value для зчитування та запису даних, що більші за 32 біти

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

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

VPI використовує структуру ‘t_vpi_value’ для передачі даних з / в симулятор.


Рис. 1 Структура t_vpi_value для передачі даних

Для передачі даних, більших за 32-біт в структурі t_vpi_value передбачено поле ‘value.vector’. Поле value.vector використовується, коли значення поля ‘format’ дорівнює ‘vpiVectorVal’. Це вказівник на заздалегідь виділену пам’ять з структурами ‘t_vpi_vecval’.


Рис. 2 Структура ‘t_vpi_vecval’, що використовується в ‘t_vpi_value’ для передачі даних більших за 32 біт


Рис. 3 Поля aval \ bval структури ‘t_vpi_vecval’ для передачі даних більших за 32 біт

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

1. Створіть файл test_wide.v та введіть код модуля (рис. 3). Зверніть на розмір регістрів opA, opB.


Рис. 4 Код модуля test_wide.v

2. Створіть файл cosim_wide.c, де визначте користувацьку calltf функцію:


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

3. Визначте користувацьку compiletf функцію:


Рис. 6 Розробка користувацької compiletf функції

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

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

Модифікуйте демонстраційний приклад та створіть додаток PLI, який виконує арифметичні операції (наприклад, розрахунок ХЕШ-функції або кодування) із даними більшими за 32 біт.

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