Спец курс (Языки верификации аппаратуры)/Практические задания 3
Материал из Wiki
				
								
				< Спец курс (Языки верификации аппаратуры)
				
				
																
				
				
								
				Версия от 15:11, 11 декабря 2019; Vidokq  (обсуждение | вклад)
Это снимок страницы. Он включает старые, но не удалённые версии шаблонов и изображений.
Лекции ЯВА
Лекции
Практические задания
Тесты
Табель успеваемости
Экзамен
Доп. материалы
Содержание | 
Пример
https://www.edaplayground.com/x/4Cis
Задание
-  Описать интерфейс по спецификации.
- Интерфейс должен включать тактовый сигнал clk и сигнал сброса rst_n (кроме UART).
 - Если интерфейс содержит в себе шины адреса\данных, то ширины шин должны задаваться параметрами.
 
 -  Описать класс транзакций для заданной спецификации.
- Класс транзакции должен включать все необходимые поля. Поля зависят от варианта спецификации. Например, для APB транзакции обязательно должна содержать адрес, данные и тип транзакции. Для SPI и UART транзакций достаточно только одного поля - данные. Ready Valid интерфейс подразумевает передачу данных вместе с каким-то кодом ответа, поэтому, полями транзакции логично сделать данные и код ответа.
 - Поля должны быть объявлены, как случайные.
 - Класс должен иметь метод конвертации в строку.
 
 -  Описать класс мастер драйвера для заданной спецификации.
- Одним из полей драйвера должна быть ссылка на интерфейс. Эту ссылку необходимо передавать в конструктор драйвера.
 - Драйвер должен иметь метод task run(), который должен описывать логику работы драйвера.
 - Драйвер должен сбрасываться заднему фронту сигнала сброса и продолжать свою работу на следующем переднем фронте тактового сигнала после переднего фронта сигнала сброса, если сигнал сброса предусмотрен в сспецификации.
 - Драйвер должен обрабатывать только одну транзакцию за раз.
 - Транзакции на обработку должны поступать в драйвер через очередь или мейлбокс.
 - После обработки транзакции драйвер должен поместить эту транзакцию в очередь или мейлбокс ответов.
 
 -  Создать простой тестбенч, в котором создать объект драйвера и интерфейса.
- Описать параллельные процессы для генерации тактового сигнала и случайного управления сигналом сброса, если они предусмотрены спецификацией.
 - Описать еще один процесс, в котором создать драйвер, передав ему ссылку на интерфейс, запустить метод run() драйвера.
 - Параллельно запуску метода run() запустить процесс создания объектов транзакции. Этот процесс должен создавать объект транзакции, рандомизировать ее и передавать в драйвер для исполнения.
 - При необходимости, реализовать в тестбенче дополнительные процессы управления входными сигналами для драйвера. Например, для APB2 спецификации нужно реализовать процесс управления сигналами PREADY, PRDATA.
 - Тестбенч должен демонстрировать работоспособность драйвера, а студент должен быть готов объяснять работу тестбенча.
 
 
Варианты (Спецификации)
1) APB 2
- Главы: 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.
 
 
