Спец курс (Языки верификации аппаратуры)/Практические задания 4
Материал из Wiki
Лекции ЯВА
Лекции
Практические задания
Тесты
Табель успеваемости
Экзамен
Доп. материалы
Содержание |
Пример
https://www.edaplayground.com/x/5jtm
Задание
- Использовать интерфейс из 3 лабораторной работы.
- Использовать класс транзакций из 3 лабораторной работы для заданной спецификации.
- Предусмотреть в транзакции поле для контроля задержки транзакции. Поле должно быть целочисленное и беззнаковое.
- Получив транзакцию, драйвер должен выдерживать паузу перед обработкой транзакции, равную значению задержки в объекте транзакции.
- Класс транзакции должен включать методы для сравнения с другими объектами транзакций.
- Описать класс монитора для заданной спецификации.
- Одним из полей монитора должен быть виртуальный интерфейс. Интерфейс нужно передать в монитор до начала работы монитора.
- Монитор должен иметь метод task run(), который должен формировать объекты транзакции исходя из изменений сигналов интерфейса.
- Монитор должен сбрасываться по заднему фронту сигнала сброса и продолжать свою работу на следующем переднем фронте тактового сигнала после переднего фронта сигнала сброса, если сигнал сброса предусмотрен в спецификации.
- Собранные транзакции монитор должен помещать в мейлбокс или очередь, расположенную в мониторе.
- Описать класс агента для заданной спецификации.
- Агент должен включать поле для конфигурации агента в пассивный и активный режимы работы.
- Агент должен включать в себя объекты монитора и драйвера. Объект драйвера включается только в случае активного агента.
- Агент должен иметь метод для передачи виртуального интерфейса драйверу и монитору.
- Агент должен иметь метод task run(), который запускает в параллель методы run драйвера и монитора.
- Создать простой тестбенч, в котором создать объект(ы) агента и интерфейса.
- Описать параллельные процессы для генерации тактового сигнала и случайного управления сигналом сброса, если они предусмотрены спецификацией.
- Описать еще один процесс, в котором создать агент, передав ему ссылку на интерфейс, запустить метод run() агента.
- Параллельно запуску метода run() запустить процесс создания объектов транзакции. Этот процесс должен создавать объект транзакции, рандомизировать его и передавать в драйвер для исполнения.
- При необходимости, реализовать в тестбенче дополнительные процессы управления входными сигналами для драйвера. Например, для APB2 спецификации нужно реализовать процесс управления сигналами PREADY, PRDATA.
- Описать еще один процесс, который будет сравнивать объекты транзакций, получаемые от монитора и передаваемые драйверу. Передаваемые драйверу транзакции можно получать из мейлбокса ответов драйвера, если он предусмотрен в драйвере.
- Тестбенч должен демонстрировать работоспособность агента, а студент должен быть готов объяснять работу тестбенча.
- Для интерфейсов SPI и UART тестбенч должен содержать 2 агента и 2 интерфейса, соединенные друг с другом следующим образом: TX (MOSI) первого к RX (MISO) второго и RX (MISO) первого к TX (MOSI) второго. Для UART запускать транзакции следует на двух агентах одновременно. Сравнивать нужно транзакции между двумя агентами следующим образом: транзакции первого драйвера сравнивать с транзакциями второго монитора и транзакции первого монитора сравнивать с транзакциями второго драйвера (только для UART).
Варианты (Спецификации)
1) APB 2
- amba_protocol_spec.pdf
- Главы: 2.4, 5.1, 5.2
2) UART
3) SPI
4) Ready Valid
- Интерфейс содержит следующие сигналы:
- input clk - тактовый сигнал.
- rst_n - сигнал сброса.
- input ready - сигнал от слейва к мастеру, который означает, что data и resp валидны.
- output valid - сигнал от мастера к слейву. Сигнализирует о запросе на вычитку данных слейва. Установив этот сигнал в значение 1, мастер обязан дождаться момента, когда слейв установит ready в 1.
- input data (N-битная шина) - шина данных. Значения на ней валидны только когда ready == 1.
- input resp - сигнал, сигнализирующий об ошибке. Значение валидно только при ready == 1. Значение 1 соответствует ошибке, 0 - ОК.
- Транзакция считается завершенной, когда по переднему фронту тактового сигнала и ready, и valid имеют значение 1.