Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Верификация цифровых устройств. Курс лекций. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
06.09.2026
Размер:
1 Мб
Скачать
МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ
РОССИЙСКОЙ ФЕДЕРАЦИИ
НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ ЯДЕРНЫЙ
УНИВЕРСИТЕТ «МИФИ»
А.А. Скитев
Верификация
цифровых устройств
Курс лекций
Учебное пособие
Москва 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 –