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

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

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

Лекции

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

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

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

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

Содержание

Билет №1

  1. Какие операторы в SystemVerilog используются для организации циклов?
  2. Или перечислить классы и их функциональное назначение необходимые для построение тестового окружения.
  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. Создать транзакцию, содержащую два поля - dir, data. Поля dir и data однобитные и могут принимать случайные значения. Запустить генерацию транзакции 10 раз.
  4. Задать группу для сбора функционального покрытия последовательности значений поля data транзакции из задания 3. Должны проверяться покрытие последовательностей из 2, 4, 6, 8 единиц для поля data.

Билет №3

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

Билет №4

  1. Bombilla amarilla - yellow Edison lamp.pngКлассы в 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 различных поля. Поля должны иметь типы целочисленный, строковый и бит-вектор. Создать две переменные полученного типа. Проинвертировать все битовые поля в первой переменной. Значения всех полей первой и второй переменных вывести в консоль.
  4. Подготовить сиквенс, генерирующую случайный адрес чтения ОЗУ, которая будет покрывать множество заданных диапазонов, попадая в каждый диапазон с заданной частотой.

Билет №6

  1. Что такое интерфейс в SystemVerilog?
  2. Возможно ли в SystemVerilog отключать режим рандомизации для отдельных переменных? Если да, то как?
  3. Описать генератор тактового сигнала, используя оператор цикла while.
  4. Описать класс транзакции, содержащий два поля - dir, data и сгенерировать 10 транзакций. Каждую транзакцию генерировать после события "передний фронт" на тактовом генераторе из задания 3.

Билет №7

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

Билет №8

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

Билет №9

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

Билет №10

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

Билет №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. Создать двухмерный массив целочисленных переменных, заполнить случайными значениями и отсортировать в порядке возрастания элементов в каждой строке.
  4. Разработать класс для сравнения пары транзакций. Создать его в top модуле и продемонстрировать работоспособность.

Билет №13

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

Билет №14

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

Билет №15

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

Билет №16

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