Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Верификация цифровых устройств. Курс лекций. Учебное пособие
.pdf
МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ
РОССИЙСКОЙ ФЕДЕРАЦИИ
НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ ЯДЕРНЫЙ
УНИВЕРСИТЕТ «МИФИ»
А.А. Скитев
Верификация
цифровых устройств
Курс лекций
Учебное пособие
Москва 2020
1

УДК 004.41(075.8)
ББК 32.973.26я7
С 42
Скитев А.А. Верификация цифровых устройств: курс лекций. Учебное
пособие [Электронный ресурс]. М.: НИЯУ МИФИ, 2020. – 92 с.
Настоящий курс лекций предназначен для обучающихся, изучающих
верификацию как один из этапов проектирования цифровых устройств.
Для успешного освоения материала обучающиеся должны знать основы
цифровой схемотехники, иметь навыки разработки цифровых устройств с
использованием языка Verilog (предпочтительно) или VHDL и иметь опыт
работы с языком С++.
Лекции состоят из двух глобальных разделов. В первой части курса
обучающимся предлагается освоить общие понятия верификации, современные подходы к построению верификационного окружения и его основные компоненты и задачи. В качестве языка для разработки используется язык SystemVerilog, являющийся наиболее современным средством
для проектирования верификационных окружений.
Вторая часть курса посвящена изучению универсальной методологии
верификации UVM и одноименной библиотеки классов. Последовательно
рассматривается маршрут проектирования верификационного окружения
в соответствии с данной методологией. Изучается назначение и структура
базовых компонентов – драйвера, монитора, агента, окружения. Рассматриваются вопросы генерации тестовых воздействий с помощью последовательностей и генераторов. Затрагиваются вопросы сбора тестового покрытия для оценки эффективности разработанных тестов.
В лекциях приводится достаточное количество примеров, в том числе
рассмотрены нестандартные случаи.
Подготовлено в рамках Проекта по созданию и развитию Международного научно-методического центра НИЯУ МИФИ.
Рецензент канд. техн. наук, доцент М.Н. Ёхин
Рекомендовано к изданию кафедрой №142
«Компьютерные системы и технологии» НИЯУ МИФИ
ISBN 978-5-7262-2696-5 © Национальный исследовательский
ядерный университет «МИФИ», 2020
© А.А. Скитев, 2020
2

СОДЕРЖАНИЕ
СПИСОК ОБОЗНАЧЕНИЙ И СОКРАЩЕНИЙ .................................................. 5
ВВЕДЕНИЕ ........................................................................................................ 6
Лекция 1. Верификация. Назначение и подходы ............................................ 8
1.1. Задачи верификации ................................................................. 8
1.2. Этапы тестирования.................................................................. 9
1.3. Процесс верификации ............................................................. 11
Лекция 2. SystemVerilog – основы языка ....................................................... 17
2.1. Структура тестового окружения ............................................. 17
2.2. Язык SystemVerilog .................................................................. 21
2.2.1. Типы данных .................................................................. 21
2.2.2. Массивы ......................................................................... 23
Лекция 3. SystemVerilog – объектно-ориентированная часть языка ........... 27
3.1. Функции и задачи .................................................................... 27
3.2. ООП на SystemVerilog ............................................................ 28
3.2.1. Классы, данные и методы ............................................ 29
3.2.2. Наследование ............................................................... 31
3.2.3. Параллельные потоки .................................................. 34
Лекция 4. UVM структура тестового окружения ............................................ 36
4.1. История UVM ........................................................................... 36
4.2. Архитектура тестового окружения UVM ................................ 37
4.3. TLM .......................................................................................... 39
Лекция 5. UVM базовые элементы окружения и фазы теста ...................... 46
5.1. Фазы теста............................................................................... 46
5.1.1. Фазы сборки .................................................................. 47
5.1.2. Фазы выполнения ......................................................... 48
5.1.3. Фазы очистки ................................................................. 48
5.2. Базовые элементы тестового окружения .............................. 50
5.2.1. Драйвер ......................................................................... 50
5.2.2. Монитор ......................................................................... 52
5.2.3. Агент .............................................................................. 55
3

Лекция 6. UVM генерация тестовых последовательностей ......................... 58
6.1. Последовательности ............................................................... 58
6.2. Задание случайных значений ................................................. 62
6.3. Ограничения ............................................................................ 64
Лекция 7. UVM тест и виртуальные последовательности............................ 68
7.1. UVM окружение........................................................................ 68
7.1.1. Табло ............................................................................. 68
7.1.2. Окружение ..................................................................... 70
7.2. Тест ........................................................................................... 71
7.3. Виртуальные последовательности
и генераторы последовательностей ...................................... 75
Лекция 8. Утверждения и функциональное покрытие .................................. 78
8.1. Утверждения ............................................................................ 78
8.2. Функциональное покрытие ..................................................... 83
Список литературы ......................................................................................... 90
4

СПИСОК ОБОЗНАЧЕНИЙ И СОКРАЩЕНИЙ
—
—
—
—
—
—
—
—
—
—
DUT
тестируемое устройство (Device Under Test)
BFM
eRM
HDL
OVM
RTL
TLM
UVM
ООП
ПЛИС
функциональная модель шины (Bus Functional Model)
методология повторного использования на основе
языка е (e Reuse Methodology)
язык описания аппаратуры (Hard-are Description Lan-
guage)
открытая методология верификации
(Open Verification Methodology )
уровень передач данных между регистрами
(Register Transfer Level)
моделирование на уровне транзакций
(Transaction-level Modeling)
универсальная методология верификации
(Universal Verification Methodology)
объектно-ориентированное программирование
программируемая логическая интегральная схема
– 5 –

ВВЕДЕНИЕ
Цифровые технологии плотно проникли в нашу жизнь. Они
окружают нас повсеместно: телефоны, компьютеры, автомобили,
спутники – все это построено с использованием цифровых технологий. В течение последних десятилетий цифровая техника, следуя
закону Мура, удваивала свою сложность каждые два года. Это привело к тому, что тестирование и отладка цифровых устройств становилась все сложнее, дольше и дороже. Методы проверки все
время усложнялись, следуя за развивающейся техникой.
В настоящее время верификация – это отдельный этап разработки цифровых устройств, не менее важный, чем само проектирование. В крупных компаниях по производству микросхем отделы,
занимающиеся верификацией, в настоящее время сравнимы по ресурсам с разработчиками самих микросхем.
Данный курс лекций предлагает обучающимся ознакомиться с
современными подходами к решению задач верификации, изучить
инструменты, применяемые для решения этих задач, и методологии, позволяющие достичь положительного результата в кратчайшие сроки. Рассматриваемый в курсе язык SystemVerilog в настоящее время является одним из наиболее современных средств разработки как верификационного окружения, так и самих цифровых
устройств. Это делает изучение данного курса полезным не только
для освоения верификации, но и для обучения разработке цифровых устройств.
Большое внимание в курсе уделяется методологии UVM, которая в настоящее время является одной из самых часто используемых для разработки верификационных блоков. У истоков ее создания лежат крупнейшие мировые корпорации, занимающиеся разработкой систем автоматизации проектирования для цифровой электроники – такие как Cadence, Synopsys, MentorGraphics. Изучив
данную методологию, специалист сможет эффективно использовать САПР этих производителей, которые широко применяются в
том числе и ведущими российскими разработчиками систем на
кристалле, такими как «Байкал», МЦСТ, «Элвис» и др.
В качестве методических рекомендаций как обучающимся, так и
преподавателям автор курса рекомендует все знания, полученные в
– 6 –

каждой лекции, закреплять практикой. Существуют свободно распространяемые версии САПРов от всех крупных производителей
этого вида ПО, функционала которых достаточно для большинства
изучаемых в курсе вещей. Для студентов и преподавателей вузов у
большинства производителей есть университетские программы,
которые позволят получить доступ к расширенным версиям ПО.
– 7 –

Лекция 1. Верификация. Назначение и подходы
Введение
В данной лекции вводится понятие верификации, определяются
ее цели и задачи. Далее будут рассматриваться общие подходы к
решению задач верификации на различных этапах тестирования
цифровых устройств. Показано различие между направленными
тестами и случайным тестированием. Определяются плюсы и минусы последнего.
1.1. Задачи верификации
Цифровые технологии и цифровые устройства плотно вошли в
жизнь современного человека. Компьютеры, смартфоны, умные
часы, автомобили, медицинская и космическая техника – в современном мире все это строится с использованием цифровых
устройств. И если какие-то из этих устройств начинают работать
неверно, то это, как минимум, может доставлять неудобства, а в
худшем случае привести к фатальным последствиям. Именно по
этой причине разработка цифровых устройств не возможна без верификации.
Что можно ответить на вопросы «какие задачи решает верификация», «для чего она нужна»? Если говорить, что верификация
нужна для поиска ошибок, то это будет лишь частично правильный
ответ. Целью разработки любого цифрового устройства является
получение конечного продукта, который будет решать ту или иную
задачу, не зависимо от того, проектируется счетчик для часов или
процессор. Задача верификации состоит в том, чтобы проверить,
что устройство может выполнять поставленную перед ним задачу,
т.е. убедиться, что оно соответствует своей спецификации. При
этом ошибки при выходе за границы спецификаций в общем случае
не являются целью проверки. Но само определение этих границ
также важно.
Процесс верификации схож с процессом разработки устройства.
Инженер-разработчик анализирует спецификацию устройства, ин-
8

терпретирует описание на человеческом языке и создает соответствующую логику – как правило на языках описания аппаратуры
(HDL). Для этого он должен понять формат ввода, функцию преобразования и формат вывода. В этой интерпретации всегда есть двусмысленность, возможно, из-за двусмысленности в оригинальном
документе, отсутствующих деталей или противоречивых описаний.
Инженер-верификатор также должен проанализировать спецификацию устройства, создать тестовый план, а затем, следуя ему, построить тесты, показывающие, что код RTL правильно реализует
необходимый функционал.
Подобный подход, когда одна и та же спецификация анализируется разными людьми, позволяет минимизировать ошибки в ее интерпретации. Именно поэтому верификацией при разработке
устройств должен заниматься отдельный специалист.
1.2. Этапы тестирования
Практически любое современное цифровое устройство имеет
иерархическую структуру. Внизу этой иерархии находятся отдельные небольшие модули – интерфейсы с внешними устройствами,
контроллеры шин, маршрутизаторы и т.п. Затем все они объединяются в более сложные системы, начиная взаимодействовать друг с
другом через общие, связывающие их интерфейсы. И на самом
верхнем уровне отдельные подсистемы объединяются в конечное
устройство. Разумеется, уровней может быть больше или меньше –
все зависит от масштабов проекта. И на каждом этапе есть свои
верификации и разработки тестов.
Когда выполняется тестирование отдельного небольшого блока,
необходимо максимально, а лучше полностью покрыть его функционал, проверить переключение всех регистров, сигналов на входах/выходах, ключевые моменты в работе блока. На данном этапе
инженер обладает максимальной гибкостью в формировании
входных воздействий. За счет сравнительно небольшого размера
тестируемого устройства моделирование его работы идет быстро,
что позволяет выполнить более полную и детальную верификацию.
Но за все приходится платить: для того чтобы протестировать работу всех внешних интерфейсов, как правило, требуется создание
очень большого тестового окружения. Оно должно эмулировать
– 9 –

работу всех модулей, с которыми будет взаимодействовать тестируемый. Такое окружение может превышать по объему сам тестируемый блок в несколько раз.
После тестирования отдельного блока начинается этап тестирования взаимодействия нескольких блоков через общие интерфейсы.
Поскольку различные блоки часто разрабатываются разными инженерами, то на данном этапе часто всплывают ошибки, связанные
с разночтением в понимании спецификаций работы интерфейсов.
Задача верификации на данном шаге – обнаруживать такие ошибки. Моделирование на втором этапе выполняется медленнее, так
как увеличивается объем моделируемого устройства, но объем тестового окружения и, как следствие, время его разработки при этом
снижаются, так как часть работы по генерации воздействий на себя берут уже подключенные в состав системы блоки.
Последний этап – тестирование всего цифрового устройства. На
данном шаге все подсистемы объединяются в единое целое. Моделирование такой большой системы может занимать очень продол-
жительное время – зачастую до нескольких недель на весьма
мощных вычислительных кластерах. Для повышения эффективности тестирования на данном шаге правильно разрабатывать тесты,
которые проверяют несколько операций одновременно. Объем тестов и их сложность остаются весьма высокими. Но на данном шаге часто можно использовать наработки, сделанные на предыдущих
этапах отладки, что может существенно сократить время разработки.
После того как завершено тестирование устройства на соответствие спецификации, начинается этап тестирования на ошибки.
Проверка – как поведет себя устройство в случае, если на вход
придут неверные или неполные данные, произойдет разрыв соединения при передаче и другие подобные моменты. Это позволит
очертить границы работоспособности устройства и получить представление о его поведении при их нарушении.
1.3. Процесс верификации
На каждом из обозначенных выше этапов требуется создание
или доработка существующего тестового окружения. Разработан-
– 10 –
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
