Спец курс (Языки верификации аппаратуры)/Практические задания 4
Материал из Wiki
< Спец курс (Языки верификации аппаратуры)
Версия от 17:36, 28 ноября 2018; Krucios (обсуждение | вклад)
Это снимок страницы. Он включает старые, но не удалённые версии шаблонов и изображений.
Лекции ЯВА
Лекции
Практические задания
Тесты
Табель успеваемости
Экзамен
Доп. материалы
Содержание |
Пример
TODO
Задание
- Использовать интерфейс из 3 лабораторной работы.
- Использовать класс транзакций из 3 лабораторной работы для заданной спецификации.
- Класс транзакции должен включать методы для сравнения с другими объектами транзакций.
- Описать класс монитора для заданной спецификации.
- Одним из полей монитора должен быть виртуальный интерфейс. Интерфейс нужно передать в монитор до начала работы монитора.
- Монитор должен иметь метод task run(), который должен формировать объекты транзакции исходя из изменений сигналов интерфейса.
- Монитор должен сбрасываться по заднему фронту сигнала сброса и продолжать свою работу на следующем переднем фронте тактового сигнала после переднего фронта сигнала сброса, если сигнал сброса предусмотрен в спецификации.
- Собранные транзакции монитор должен помещать в мейлбокс или очередь, расположенную в мониторе.
- Описать класс агента для заданной спецификации.
- Агент должен включать поле для конфигурации агента в пассивный и активный режимы работы.
- Агент должен включать в себя объекты монитора и драйвера. Объект драйвера включается только в случае активного агента.
- Агент должен иметь метод для передачи виртуального интерфейса драйверу и монитору.
- Агент должен иметь метод task run(), который запускает в параллель методы run драйвера и монитора.
- Создать простой тестбенч, в котором создать объект агента и интерфейса.
- Описать параллельные процессы для генерации тактового сигнала и случайного управления сигналом сброса, если они предусмотрены спецификацией.
- Описать еще один процесс, в котором создать агент, передав ему ссылку на интерфейс, запустить метод run() агента.
- Параллельно запуску метода run() запустить процесс создания объектов транзакции. Этот процесс должен создавать объект транзакции, рандомизировать его и передавать в драйвер для исполнения.
- При необходимости, реализовать в тестбенче дополнительные процессы управления входными сигналами для драйвера. Например, для APB2 спецификации нужно реализовать процесс управления сигналами PREADY, PRDATA.
- Описать еще один процесс, который будет сравнивать объекты транзакций, получаемые от монитора и передаваемые драйверу. Передаваемые драйверу транзакции можно получать из мейлбокса ответов драйвера, если он предусмотрен в драйвере.
- Тестбенч должен демонстрировать работоспособность агента, а студент должен быть готов объяснять работу тестбенча.
Варианты (Спецификации)
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.