«Работать добросовестно — значит: работать, повышая свою квалификацию, проявляя инициативу в совершенствовании продукции, технологий, организации работ, оказывая не предусмотренную должностными инструкциями помощь другим сотрудникам (включая и руководителей) в общей им всем работе.

Спец курс (Верификация цифровых схем)/Практические задания 3 — различия между версиями

Материал из Wiki
Перейти к: навигация, поиск
(Запуск конвертации)
(Создание интерфейса)
Строка 1: Строка 1:
 
{{ВЦС_TOC}}
 
{{ВЦС_TOC}}
== Создание интерфейса ==
+
== Шаг 1. Создание интерфейса ==
 
# Объявить интерфейс который содержит тактовый сигнал clk, сигнал сброса rst, и сигнал test.
 
# Объявить интерфейс который содержит тактовый сигнал clk, сигнал сброса rst, и сигнал test.
 
# Создать модуль и в нем инстанциировать интерфейс
 
# Создать модуль и в нем инстанциировать интерфейс

Версия 18:02, 30 октября 2018

Лекции ВЦС

Лекции

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

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

Экзамен

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

Содержание

Шаг 1. Создание интерфейса

  1. Объявить интерфейс который содержит тактовый сигнал clk, сигнал сброса rst, и сигнал test.
  2. Создать модуль и в нем инстанциировать интерфейс
  3. Объявить переменную типа reg по имени clk_i, rst_i.
  4. В initial блоке создать генератор тактового сигнала и сброса используя переменные clk_i,rst_i;
  5. Подключить сигналы clk_i, rst_i к интерфейсу.

Создание класса конвертации транзакции в воздействия на проводном интерфейсе

  1. Создать класс с названием driver_t.
  2. В классе объявить переменную типа virtual interface.
  3. Объявить event get_next_item_e;
  4. Реализовать task run_phase в этом классе.(должен содержать бесконечный цикл, который ожидает события get_next_item_e). После получения события класс должен ожидать события posedge на сигнале clk(на интерфейсе), после брать значения из объекта транзакции и печатать их в консоль.

Запуск конвертации

  1. Создать объект в модуле, объявленом в предыдущем задании.
  2. Передать указатель на интерфейс в обьект driver
  3. Запустить task run_phase
  4. Создать в модуле класс транзакции из лаб2, передать указатель на транзакцию в класс driver.
  5. Вызвать триггер для события get_next_item_e.
  6. Повторить генерацию транзакций 10 раз со случайным интервалом от 1 до 10 us.

Как выбрать вариант

Bombilla amarilla - yellow Edison lamp.pngДля задания 1 варианты выбираются согласно табелю успеваемости.

Например: если вариант 3.2 - это значит что необходимо разработать транзакцию SPI без использования UVM макросов.

Спецификации

  1. APB
  2. UART
  3. SPI

Задание

  1. По спецификации интерфейса (*) блока разработать транзакцию, позволяющую описать все доступные операции на заданном интерфейсе:
    1. с использованием UVM макросов.
    2. без использования UVM макросов.
  2. Создать пакет, реализующий весь функционал агента (сиквенсер, драйвер, монитор) из существующих файлов описания всех составных блоков и скомпилировать его. (Использовать файлы из проекта https://www.edaplayground.com/x/3ru7)
  3. Реализовать объект конфигурации агента, который содержит методы настройки в три режима: по умолчанию активный ведущий, пассивный, активный ведомый режимы

Дополнительно

  1. Реализовать фазу сброса в драйвере
  2. Реализовать фазу, предшествующую фазе сброса
  3. Подменить драйвер в агенте, из окружения в фазе создания компонент
  4. Создать домен фазы выполнения для агента и подключить агент к этому домену

Спецификация APB интерфейса

  • IHI0024C_amba_apb_protocol_spec.pdf

Спецификация UART интерфейса

Спецификация SPI интерфейса