«…лишь недалекие люди боятся конкуренции, а люди подлинного творчества ценят общение с каждым талантом…» А. Бек, Талант.

Спец курс (Языки верификации аппаратуры)/Практические задания 4

Материал из Wiki
Перейти к: навигация, поиск
Лекции ЯВА

Лекции

Практические задания

Тесты

Табель успеваемости

Экзамен

Доп. материалы

Содержание

Пример

https://www.edaplayground.com/x/5jtm

Задание

  1. Использовать интерфейс из 3 лабораторной работы.
  2. Использовать класс транзакций из 3 лабораторной работы для заданной спецификации.
    1. Класс транзакции должен включать методы для сравнения с другими объектами транзакций.
  3. Описать класс монитора для заданной спецификации.
    1. Одним из полей монитора должен быть виртуальный интерфейс. Интерфейс нужно передать в монитор до начала работы монитора.
    2. Монитор должен иметь метод task run(), который должен формировать объекты транзакции исходя из изменений сигналов интерфейса.
    3. Монитор должен сбрасываться по заднему фронту сигнала сброса и продолжать свою работу на следующем переднем фронте тактового сигнала после переднего фронта сигнала сброса, если сигнал сброса предусмотрен в спецификации.
    4. Собранные транзакции монитор должен помещать в мейлбокс или очередь, расположенную в мониторе.
  4. Описать класс агента для заданной спецификации.
    1. Агент должен включать поле для конфигурации агента в пассивный и активный режимы работы.
    2. Агент должен включать в себя объекты монитора и драйвера. Объект драйвера включается только в случае активного агента.
    3. Агент должен иметь метод для передачи виртуального интерфейса драйверу и монитору.
    4. Агент должен иметь метод task run(), который запускает в параллель методы run драйвера и монитора.
  5. Создать простой тестбенч, в котором создать объект агента и интерфейса.
    1. Описать параллельные процессы для генерации тактового сигнала и случайного управления сигналом сброса, если они предусмотрены спецификацией.
    2. Описать еще один процесс, в котором создать агент, передав ему ссылку на интерфейс, запустить метод run() агента.
    3. Параллельно запуску метода run() запустить процесс создания объектов транзакции. Этот процесс должен создавать объект транзакции, рандомизировать его и передавать в драйвер для исполнения.
    4. При необходимости, реализовать в тестбенче дополнительные процессы управления входными сигналами для драйвера. Например, для APB2 спецификации нужно реализовать процесс управления сигналами PREADY, PRDATA.
    5. Описать еще один процесс, который будет сравнивать объекты транзакций, получаемые от монитора и передаваемые драйверу. Передаваемые драйверу транзакции можно получать из мейлбокса ответов драйвера, если он предусмотрен в драйвере.
    6. Тестбенч должен демонстрировать работоспособность агента, а студент должен быть готов объяснять работу тестбенча.

Варианты (Спецификации)

1) APB 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.

Пример взаимодействия