«…лишь недалекие люди боятся конкуренции, а люди подлинного творчества ценят общение с каждым талантом…» А. Бек, Талант.

Спец курс (Верификация цифровых схем)/Экзамен(Билеты)

Материал из Wiki
Перейти к: навигация, поиск
Лекции ВЦС

Лекции

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

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

Экзамен
  • Экзаменационные билеты

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

Содержание

Билет №1

  1. Какие операторы в SystemVerilog используются для организации циклов?
  2. Перечислите типы UVM компонент используемых в uvm_agent
  3. Описать класс, в котором создать очередь целых чисел случайной длинны. Реализовать функцию заполнения первых 5 элементов значениями от 1 до 20 причем, остальных случайным образом.
  4. Создать транзакцию содержащую два поля data, addr ширины 32 бита. Поле addr меньше переменной max_addr и больше min_addr. Если значение поля addr равно 0, то data равен 32'h0000FFFF

Билет №2

  1. Какие виды ограничений(constraint) доступны в SystemVerilog?
  2. Для чего может применяется оператор $cast?
  3. Создать транзакцию, cодержащую два поля dir, data. Поля dir и data однобитные и могут принимать случайные значения. Запустить генерацию транзакции 10 раз.
  4. Задать группу покрытия для сбора функционального покрытия последовательности значений поля data транзакции из задания 3. Должны проверятся покрытия последовательностей из 2,4,6,8 единиц для поля data.

Билет №3

  1. Какие типы данных доступны в SystemVerilog?
  2. Какие встроенные методы можно использовать для ассоциативных массивов в языке SystemVerilog?
  3. Параметризовать тест строковым аргументом командной строки +S1 и создать класс получающий этот аргумент и содержащий функцию печати полученного аргумента и значения по умолчанию. Запустить моделирование с параметром и без параметра.

Билет №4

  1. Классы в SystemVerilog?
  2. Какие встроенные методы можно использовать для работы с динамическими массивами в языке SystemVerilog?
  3. Записать ограничения на рандомизацию параметров транзакции в соответствии с требованиями спецификации:
    1. Транзакция содержит поля data, addr, mode
    2. Ширина данных 32 бита (data)
    3. Ширина адреса 32 бита (addr)
    4. Поле mode имеет четыре значения Чтение, Запись, Ожидание, Ошибка (кодирование выбрать самостоятельно)
    5. Поле addr меньше переменной max_addr и больше min_addr
    6. В режиме Чтение адрес должен быть выровнен на 2 если значение поля mode равно Запись, то addr выравнен на 4

Билет №5

  1. Операторы запуска параллельного выполнения в SystemVerilog?
  2. Какие встроенные методы можно использовать для очереди в языке SystemVerilog?
  3. Создать тип данных структура, содержащую 4 различных поля. Поля должны иметь тип целочисленный, строковый, бит-вектор. Создать две переменные полученного типа. Проинвертировать все битовые поля в первой переменной. Значение всех полей первой и второй переменных типа структуры вывести в консоль.

Билет №6

  1. Интерфейс в SystemVerilog?
  2. Возможно ли в SystemVerilog отключать режим рандомизации для отдельных переменных? Если да, то как.
  3. Описать генератор тактового сигнала используя оператор цикла while.

Билет №7

  1. Что такое группы покрытия в SystemVerilog? Для чего они используются и как описываются.
  2. Опишите бесконечный цикл используя оператор for
  3. Создайте два процесса, печатающие два разных сообщения с разным интервалом времени, и запустите их на выполнение в параллель.

Билет №8

  1. Понятие транзакции в UVM методологии верификации?
  2. В каких случаях допускается использование функций в ограничениях?
  3. Объявить и заполнить два ассоциативных массива произвольными данными. Реализовать функцию сравнения этих массивов.

Билет №9

  1. Какие виды массивов реализованы в SystemVerilog?
  2. Какие операторы позволяют запустить процессы в параллель, опишите их особенности.
  3. Реализовать интерфейс, параметризируемый двумя значениями: ширина адреса и ширина данных.

Билет №10

  1. Чем отличается ассоциативные массивы от динамических?
  2. Какие UVM компоненты используемые в uvm_agent не содержат предопределенного порта?
  3. Создать ассоциативный массив из 1024 элементов, каждый элемент которого представляет собой динамический массив размером 1024 бит + номер. Номер определяется так, добавляем в ассоциативный массив первый элемент номер равен 1, второй 2, и т.д. Значения векторов в динамическом массиве заполнить случайным образом.

Билет №11

  1. Использование функций и циклов в ограничениях.
  2. Какие операторы используются для назначения события?
  3. Объявить класс, содержащий задачу, выводящую значения 1, 2, 3, ... и т.д. с периодичностью 1 us симуляционного времени. Объявить еще одну задачу, которая выводит текстовые сообщения "1000us", "2000us", "3000us" ... с периодичностью 1 ms. Объявить третью задачу, которая выводит сообщение "Start check processing..." после того как в первой задаче значения превысили 10000, и выводит сообщение "End check processing..." после того как вторая задача выведет сообщение "5000us". Запустить три задачи в параллель. Провести моделирование 100 ms.

Билет №12

  1. Задание списка чувствительности и событий для проверки групп покрытия
  2. Какие операторы используются для мониторинга событий?
  3. Создать 2-х мерный массив целочисленных переменных, заполнить случайными значениями и после отсортировать в порядке возрастания элементов в каждой строке.

Билет №13

  1. Как реализуется проверка последовательности событий в группе покрытия
  2. Допускается ли наследование классов в языке SystemVerilog? Если да, то какие типы наследования допускаются, если нет то почему.
  3. Объявить и заполнить строковую переменную. Длинна строки должна быть больше 30 символов. Строка содержит символы пробела, разделяющие строку на слова, слов более одного. Создать массив строковых переменных и заполнить их словами из исходной переменной.

Билет №14

  1. В чем отличие при использовании оператора if и оператора импликации при задании ограничений.
  2. Чем отличается push-сиквенсер (класс uvm_push_sequenser) от обычного сиквенсера (класса uvm_sequencer)?
  3. Объявить класс, содержащий 3 переменные A, minAi, maxAi. A-массив целых чисел, minAi - минимальное значение, maxAi - максимальное значение в массиве, создать методы класса возвращающие максимальное и минимальное значение в массиве. А также методы вывода значений всех переменных в консоль, функция должна быть виртуальной. Массив заполнить 10 случайными значениями. Создать объект класса и вывести значения переменных в консоль.

Билет №15

  1. Какие типы данных могут быть использованы для создания упакованных массивов?
  2. Опишите механизм обмена транзакциями между драйвером и сиквенсером. Какие порты для этого используются.
  3. Создать два класса содержащие функции вывода сообщения и поместить их в пакет. В top модуле подключить пакет и вызвать методы печати сообщения из каждого класса.
  4. Подготовить транзакцию, содержащую поля адреса и данных. Для адреса задан запрещенный диапазон значений, для данных - список запрещенных значений.

Билет №16

  1. Какой из встроенных методов нужно вызвать, чтобы преобразовать строку string str = "def0" в число типа integer?
  2. Создать очередь массивов фиксированной длины, каждый из которых содержит два элемента. Элементы будут задавать нижнюю и верхнюю границы диапазона значений. Реализовать функцию проверки того, что заданные диапазоны во всех элементах очереди не пересекаются между собой.