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