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

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

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

Текущая версия на 15:44, 13 января 2021

Лекции ВЦС

Лекции

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

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

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

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

Содержание

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