Спец курс (Верификация цифровых схем)/Экзамен(Билеты)
Материал из Wiki
Лекции ВЦС
Лекции
Практические задания
Тесты
Табель успеваемости
Экзамен
- Экзаменационные билеты
Доп. материалы
Содержание |
Билет №1
- Какие операторы в SystemVerilog используются для организации циклов?
- Или перечислить классы и их функциональное назначение необходимые для построение тестового окружения.
- Описать класс, в котором создать очередь целых чисел случайной длинны. Реализовать функцию заполнения первых 5 элементов значениями от 1 до 20, остальных - случайным образом.
- Создать транзакцию, содержащую два поля - data, addr шириной 32 бита. Поле addr меньше переменной max_addr и больше min_addr. Если значение поля addr равно 0, то data равен 32'h0000FFFF
Билет №2
- Какие виды ограничений (constraint) доступны в SystemVerilog?
- Для чего применяется оператор $cast?
- Создать транзакцию, содержащую два поля - dir, data. Поля dir и data однобитные и могут принимать случайные значения. Запустить генерацию транзакции 10 раз.
- Задать группу для сбора функционального покрытия последовательности значений поля data транзакции из задания 3. Должны проверяться покрытие последовательностей из 2, 4, 6, 8 единиц для поля data.
Билет №3
- Какие типы данных доступны в SystemVerilog?
- Какие встроенные методы можно использовать для ассоциативных массивов в языке SystemVerilog?
- Параметризовать тест строковым аргументом командной строки +S1 и создать класс, получающий этот аргумент и содержащий функцию печати полученного аргумента и значения по умолчанию. Запустить моделирование с параметром и без параметра.
Билет №4
-
Классы в SystemVerilog?
- Какие встроенные методы можно использовать для работы с динамическими массивами в языке SystemVerilog?
- Записать ограничения на рандомизацию параметров транзакции в соответствии с требованиями спецификации:
- Транзакция содержит поля data, addr, mode
- Ширина данных 32 бита (data)
- Ширина адреса 32 бита (addr)
- Поле mode имеет четыре значения: Чтение, Запись, Ожидание, Ошибка (кодирование выбрать самостоятельно)
- Поле addr меньше переменной max_addr и больше min_addr
- В режиме Чтение адрес должен быть выровнен на 2. Если значение поля mode равно Запись, то addr выравнен на 4.
Билет №5
- Описать операторы запуска параллельного выполнения в SystemVerilog.
- Какие встроенные методы можно использовать для очереди в языке SystemVerilog?
- Создать тип данных структура, содержащий 4 различных поля. Поля должны иметь типы целочисленный, строковый и бит-вектор. Создать две переменные полученного типа. Проинвертировать все битовые поля в первой переменной. Значения всех полей первой и второй переменных вывести в консоль.
- Подготовить сиквенс, генерирующую случайный адрес чтения ОЗУ, которая будет покрывать множество заданных диапазонов, попадая в каждый диапазон с заданной частотой.
Билет №6
- Что такое интерфейс в SystemVerilog?
- Возможно ли в SystemVerilog отключать режим рандомизации для отдельных переменных? Если да, то как?
- Описать генератор тактового сигнала, используя оператор цикла while.
- Описать класс транзакции, содержащий два поля - dir, data и сгенерировать 10 транзакций. Каждую транзакцию генерировать после события "передний фронт" на тактовом генераторе из задания 3.
Билет №7
- Что такое группы покрытия в SystemVerilog? Для чего они используются и как описываются?
- Опишите бесконечный цикл используя оператор for.
- Создайте два процесса, печатающие два разных сообщения с разным интервалом времени, и запустите их на выполнение в параллель.
- Создайте класс транзакции с полями addr, data. Используйте программу из предыдущего задания, в момент вывода сообщений рандомизируйте значения транзакции и выводите полученные значения.
Билет №8
- Раскрыть понятие транзакции, для чего используется при построении тестового окружения.
- В каких случаях допускается использование функций в ограничениях?
- Объявить и заполнить два ассоциативных массива произвольными данными. Реализовать функцию сравнения этих массивов.
- Опишите класс драйвера, формирующий тактовый сигнал.
Билет №9
- Какие виды массивов реализованы в SystemVerilog?
- Какие операторы позволяют запустить процессы в параллель? Опишите их особенности.
- Реализовать интерфейс, параметризируемый двумя значениями: ширина адреса и ширина данных.
- Опишите класс драйвера, формирующий сигнал сброса.
Билет №10
- Чем отличается ассоциативные массивы от динамических?
- Какие классы, обычно расположены внутри класса agent, и как можно организовать взаимодействие между классами внутри тестового окружения?
- Создать ассоциативный массив из 1024 элементов, каждый элемент которого представляет собой динамический массив размером 1024 бит + номер. Номер определяется так: добавляем в ассоциативный массив первый элемент, равный 1, второй - 2, и т.д. Значения векторов в динамическом массиве заполнить случайным образом.
- Создать заготовки 3-х классов, driver, monitor, agent. Создать пакет, содержащий эти три класса и скомпилировать его.
Билет №11
- Допускается ли использование функций и циклов в ограничениях?
- Какие операторы используются для назначения события?
- Объявить класс, содержащий задачу, выводящую значения 1, 2, 3, ... и т.д. с периодичностью 1 us симуляционного времени. Объявить еще одну задачу, которая выводит текстовые сообщения "1000us", "2000us", "3000us" ... с периодичностью 1 ms. Объявить третью задачу, которая выводит сообщение "Start check processing..." после того, как в первой задаче значения превысили 10000, и выводит сообщение "End check processing..." после того, как вторая задача выведет сообщение "5000us". Запустить три задачи в параллель. Провести моделирование 100 ms.
Билет №12
- Как задать список чувствительности и события для проверки групп покрытия?
- Какие операторы используются для мониторинга событий?
- Создать двухмерный массив целочисленных переменных, заполнить случайными значениями и отсортировать в порядке возрастания элементов в каждой строке.
- Разработать класс для сравнения пары транзакций. Создать его в top модуле и продемонстрировать работоспособность.
Билет №13
- Как реализуется проверка последовательности событий в группе покрытия?
- Допускается ли наследование классов в языке SystemVerilog? Если да - какие типы наследования допускаются, если нет - почему.
- Объявить и заполнить строковую переменную. Длина строки должна быть больше 30 символов. Строка содержит символы пробела, разделяющие строку на слова, слов более одного. Создать массив строковых переменных и заполнить их словами из исходной переменной.
- Описать класс транзакции, содержащий поля data, addr. Сгенерировать две транзакции и сравнить их.
Билет №14
- В чем отличие при использовании оператора if и оператора импликации при задании ограничений?
- Зачем нужен класс Driver при построении тестового окружения?
- Объявить класс, содержащий 3 переменные: A, minAi, maxAi. A - массив целых чисел, minAi - минимальное значение, maxAi - максимальное значение в массиве. Создать методы класса, возвращающие максимальное и минимальное значения в массиве, а также методы вывода значений всех переменных в консоль, функция должна быть виртуальной. Массив заполнить 10 случайными значениями. Создать объект класса и вывести значения переменных в консоль.
Билет №15
- Какие типы данных могут быть использованы для создания упакованных массивов?
- Описать механизм обмена транзакциями между драйвером и сиквенсером. Какие порты для этого используются?
- Описать два класса, содержащие функции вывода сообщения, и поместить их в пакет. В top модуле подключить пакет и вызвать методы печати сообщения из каждого класса.
- Описать транзакцию, содержащую поля адреса и данных. Для адреса задан запрещенный диапазон значений, для данных - список запрещенных значений.
Билет №16
- Какой из встроенных методов нужно вызвать, чтобы преобразовать строку string str = "def0" в число типа integer?
- Что представляет собой класс Agent и для чего он применяется при построении тестового окружения?
- Создать очередь массивов фиксированной длины, каждый из которых содержит два элемента. Элементы будут задавать нижнюю и верхнюю границы диапазона значений. Реализовать функцию проверки того, что заданные диапазоны во всех элементах очереди не пересекаются между собой.