Спец курс (Верификация цифровых схем)/Практические задания 3 — различия между версиями
Материал из Wiki
Vidokq (обсуждение | вклад) (→Создание интерфейса) |
Vidokq (обсуждение | вклад) (→Создание класса конвертации транзакции в воздействия на проводном интерфейсе) |
||
Строка 8: | Строка 8: | ||
== Создание класса конвертации транзакции в воздействия на проводном интерфейсе== | == Создание класса конвертации транзакции в воздействия на проводном интерфейсе== | ||
− | + | # Создать класс с названием driver_t. | |
− | + | # В классе объявить переменную типа virtual interface. | |
− | + | # Объявить event get_next_item_e; | |
− | + | # Реализовать task run_phase в этом классе.(должен содержать бесконечный цикл, который ожидает события get_next_item_e). После получения события класс должен ожидать события posedge на сигнале clk(на интерфейсе), после брать значения из объекта транзакции и печатать их в консоль. | |
+ | |||
== Запуск конвертации == | == Запуск конвертации == | ||
5. Создать объект в модуле, объявленом в предыдущем задании. | 5. Создать объект в модуле, объявленом в предыдущем задании. |
Версия 18:01, 30 октября 2018
Лекции ВЦС
Лекции
Практические задания
|
Тесты
Табель успеваемости
Экзамен
Доп. материалы
Содержание |
Создание интерфейса
- Объявить интерфейс который содержит тактовый сигнал clk, сигнал сброса rst, и сигнал test.
- Создать модуль и в нем инстанциировать интерфейс
- Объявить переменную типа reg по имени clk_i, rst_i.
- В initial блоке создать генератор тактового сигнала и сброса используя переменные clk_i,rst_i;
- Подключить сигналы clk_i, rst_i к интерфейсу.
Создание класса конвертации транзакции в воздействия на проводном интерфейсе
- Создать класс с названием driver_t.
- В классе объявить переменную типа virtual interface.
- Объявить event get_next_item_e;
- Реализовать task run_phase в этом классе.(должен содержать бесконечный цикл, который ожидает события get_next_item_e). После получения события класс должен ожидать события posedge на сигнале clk(на интерфейсе), после брать значения из объекта транзакции и печатать их в консоль.
Запуск конвертации
5. Создать объект в модуле, объявленом в предыдущем задании. 6. Передать указатель на интерфейс в обьект driver 7. Запустить task run_phase 8. Создать в модуле класс транзакции из лаб2, передать указатель на транзакцию в класс driver. 9. Вызвать триггер для события get_next_item_e. 10. Повторить генерацию транзакций 10 раз со случайным интервалом от 1 до 10 us.
Как выбрать вариант
Для задания 1 варианты выбираются согласно табелю успеваемости.
Например: если вариант 3.2 - это значит что необходимо разработать транзакцию SPI без использования UVM макросов.
Спецификации
- APB
- UART
- SPI
Задание
- По спецификации интерфейса (*) блока разработать транзакцию, позволяющую описать все доступные операции на заданном интерфейсе:
- с использованием UVM макросов.
- без использования UVM макросов.
- Создать пакет, реализующий весь функционал агента (сиквенсер, драйвер, монитор) из существующих файлов описания всех составных блоков и скомпилировать его. (Использовать файлы из проекта https://www.edaplayground.com/x/3ru7)
- Реализовать объект конфигурации агента, который содержит методы настройки в три режима: по умолчанию активный ведущий, пассивный, активный ведомый режимы
Дополнительно
- Реализовать фазу сброса в драйвере
- Реализовать фазу, предшествующую фазе сброса
- Подменить драйвер в агенте, из окружения в фазе создания компонент
- Создать домен фазы выполнения для агента и подключить агент к этому домену