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

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

Материал из Wiki
Перейти к: навигация, поиск
(Билет №7)
(Билет №8)
Строка 47: Строка 47:
  
 
== Билет №8 ==
 
== Билет №8 ==
# Понятие транзакции в UVM методологии верификации?
+
# Раскрыть понятие транзакции в UVM методологии верификации.
 
# В каких случаях допускается использование функций в ограничениях?   
 
# В каких случаях допускается использование функций в ограничениях?   
 
# Объявить и заполнить два ассоциативных массива произвольными данными. Реализовать функцию сравнения этих массивов.
 
# Объявить и заполнить два ассоциативных массива произвольными данными. Реализовать функцию сравнения этих массивов.
# Опишите класс драйвера формирующий тактовый сигнал.
+
# Опишите класс драйвера, формирующий тактовый сигнал.
  
 
== Билет №9 ==
 
== Билет №9 ==

Версия 15:16, 7 января 2017

Лекции ВЦС

Лекции

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

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

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

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

Содержание

Билет №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. 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. Раскрыть понятие транзакции в UVM методологии верификации.
  2. В каких случаях допускается использование функций в ограничениях?
  3. Объявить и заполнить два ассоциативных массива произвольными данными. Реализовать функцию сравнения этих массивов.
  4. Опишите класс драйвера, формирующий тактовый сигнал.

Билет №9

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

Билет №10

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

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

Билет №13

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

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