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