Предисловие: обэтой книге .............................................................................. 13
Предисловие от издательства .......................................................................... 15
Контекст: проектирование науровнерегистровых передач ....... 16
Благодарности ............................................................................................................ 18
Глава 1. Введение ..................................................................................................... 19
1.1. Приступая кработе ...................................................................................................... 20
1.1.1. Структурное описание ......................................................................................... 20
1.1.2. Как интерпретируется описание модуля ............................................................ 22
1.2. Моделирование цифровых систем ............................................................................. 24
1.2.1. Замечания поповоду симуляции ........................................................................ 25
1.2.2. Что делает симулятор? ......................................................................................... 26
1.2.3. Более подробно осимуляции .............................................................................. 28
1.2.4. Модели исполнения SystemVerilog ...................................................................... 32
1.2.5. Зачем все это? ....................................................................................................... 33
1.3. Иерархия модулей ........................................................................................................ 33
1.4. Тестовое окружение для модуля mux ......................................................................... 35
1.4.1. Простой пример .................................................................................................... 35
1.4.2. Более интеллектуальное тестовое окружение .................................................... 38
1.5. Резюме .......................................................................................................................... 40
1.6. Задачи иупражнения .................................................................................................. 40
Часть I. МОДЕЛИ УРОВНЯ РЕГИСТРОВЫХ ПЕРЕДАЧ .............. 43
Глава 2. Комбинационные схемы .................................................................. 45
2.1. Моделирование комбинационных схем ..................................................................... 45
2.1.1. Операторы assign иalways_comb ......................................................................... 46
2.1.2. Вы уверены, что это комбинационные схемы? .................................................. 49
2.2. Использование операторов assign иalways_comb ..................................................... 50
2.2.1. Оператор always_comb .......................................................................................... 50
2.2.2. Оператор assign .................................................................................................... 51
2.2.3. Процедурное моделирование спомощью if иcase ............................................ 52
2.2.4. Задание несущественных комбинаций спомощью unique case ....................... 55
2.2.5. Упрощение спецификации спомощью ? иcasez ............................................... 57
2.2.6. Моделирование сучетом уровней сигналов ...................................................... 58
2.2.7. Оператор priority case ........................................................................................... 59
2.3. Основы разработки тестового окружения .................................................................. 60
2.3.1. Отладочная печать ............................................................................................... 61
2.3.2. Основы тестирования комбинационных схем ................................................... 62
2.3.3. Более сложная система ......................................................................................... 64
2.4. Параметризованные модули ....................................................................................... 66
2.5. Спецификация портов ................................................................................................. 68
2.6. Основные типы данных ............................................................................................... 70
2.6.1. Двух- ичетырехзначные «биты» ......................................................................... 70
2.6.2. Целочисленные типы данных .............................................................................. 71
2.6.3. Перечисления иопределения типов ................................................................... 72
2.6.4. Тестирование комбинационных схем сперечислениями ................................. 76
2.6.5. Структуры .............................................................................................................. 77
2.7. Множественные драйверы........................................................................................... 79
2.7.1. Цепи ....................................................................................................................... 80
2.7.2. Тристабильные приемопередатчики .................................................................. 81
2.8. Задачи иупражнения .................................................................................................. 82
Глава 3. Конечные автоматы ............................................................................. 87
3.1. D-триггер ...................................................................................................................... 88
3.1.1. Смотри, куда ступаешь ......................................................................................... 89
3.1.2. Вариации натему ................................................................................................. 90
3.1.3. Тестовое окружение для D-триггера ................................................................... 90
3.2. Основы проектирования конечных автоматов ......................................................... 92
3.2.1. Описание наSystemVerilog .................................................................................. 93
3.2.2. Неблокирующие (параллельные) присваивания................................................ 94
3.2.3. Другой взгляд на= и<= ........................................................................................ 96
3.2.4. Наглядное изображение диаграмм состояний ................................................... 99
3.2.5. Формальное определение ...................................................................................100
3.3. Явный стиль описания конечных автоматов ............................................................101
3.4. Логическая оптимизация ...........................................................................................104
3.4.1. Кодирование состояний ......................................................................................104
3.4.2. Комбинационные схемы для функций перехода ивыхода ..............................105
3.4.3. Так ли вам нужны несущественные элементы? ................................................106
3.5. Тестовые окружения для конечных автоматов .........................................................106
3.6. Задачи иупражнения .................................................................................................106
Глава 4. Предположение осинхронности ................................................110
4.1. Основные предположения: доверяй, но проверяй ...................................................110
4.2. Предположения овременных характеристиках .......................................................111
4.2.1. Временные характеристики D-триггера ............................................................111
4.2.2. Расфазировка тактового сигнала ........................................................................113
4.2.3. Нарушение ограничения навремя удержания..................................................114
4.3. Домены синхронизации .............................................................................................115
4.3.1. Что ограничивает размер домена синхронизации? .........................................115
4.3.2. Междоменные сигналы .......................................................................................116
4.4. Логическая оптимизация: коррекция временных характеристик ..........................118
4.5. Правила проектирования синхронных систем .........................................................119
Часть II. АППАРАТНЫЕ ПОТОКИ ...............................................................123
Глава 5. Аппаратные потоки (конечные автоматы
с трактом данных) ..................................................................................................125
5.1. Аппаратные потоки ....................................................................................................125
8 Оглавление
5.1.1. Иллюстративный пример ...................................................................................126
5.1.2. Временная диаграмма работы потока ...............................................................127
5.1.3. Тракт данных потока ...........................................................................................128
5.1.4. Диаграмма состояний .........................................................................................130
5.1.5. Совмещение конечного автомата итракта данных ..........................................131
5.1.6. Описание наSystemVerilog .................................................................................132
5.1.7. Формальное определение ...................................................................................133
5.2. Временные характеристики автоматов Мура иМили .............................................134
5.3. Компоненты тракта данных .......................................................................................135
5.3.1. Комбинационные элементы ...............................................................................136
5.3.2. Регистры ...............................................................................................................137
5.3.3. Дешифраторы ......................................................................................................138
5.3.4. Шины ....................................................................................................................140
5.3.5. Модули памяти ....................................................................................................141
5.4. Тестовые окружения для аппаратных потоков .........................................................143
5.5. Задачи иупражнения .................................................................................................143
Глава 6. Интерфейсы .............................................................................................153
6.1. Взаимодействующие аппаратные потоки .................................................................153
6.1.1. Организация потоков ..........................................................................................153
6.1.2. Синхронность ......................................................................................................155
6.2. Синхронные взаимодействия между потоками .......................................................156
6.2.1. Двустороннее ожидание .....................................................................................158
6.2.2. Пошаговая синхронизация .................................................................................160
6.3. Примершины SimpleBus ............................................................................................162
6.3.1. Определение протокола SimpleBus ....................................................................162
6.3.2. Поток интерфейса процессора (ведущий компонент) ......................................165
6.3.3. Поток интерфейса памяти (ведомый компонент) ............................................167
6.3.4. Система вцелом ..................................................................................................169
6.3.5. Код примера SimpleBus .......................................................................................171
6.4. Асинхронные взаимодействия между потоками......................................................176
6.4.1. Протокол квитирования сполной взаимной синхронизацией .......................177
6.4.2. Вариации натему ................................................................................................180
6.4.3. Очереди как буферы ............................................................................................181
6.5. Интерфейсы вSystemVerilog ......................................................................................183
6.5.1. Примерпростого интерфейса ............................................................................184
6.5.2. Характеристики интерфейса ..............................................................................186
6.5.3. Примерболее сложного интерфейса .................................................................187
6.6. Задачи иупражнения .................................................................................................192
Часть III. ТЕСТОВЫЕ ОКРУЖЕНИЯ ..........................................................197
Глава 7. Введение втестовые окружения ................................................199
7.1. Организация тестового окружения ............................................................................199
7.2. Программы тестового окружения ..............................................................................200
7.2.1. Конструкция program ...........................................................................................201
7.2.2. Этапы работы симулятора ...................................................................................202
7.3. Тестовые окружения для конечных автоматов .........................................................204
Оглавление 9
7.3.1. Тактовый сигнал исигнал сброса .......................................................................204
7.3.2. Использование $monitor для отладки конечных автоматов.............................206
7.3.3. Неявно заданные конечные автоматы ...............................................................208
7.4. Тестовые окружения для аппаратных потоков .........................................................213
7.4.1. Запуск аппаратного потока .................................................................................215
7.4.2. Системная инициализация .................................................................................217
7.4.3. Простая программа тестового окружения .........................................................217
7.4.4. Использование процедур ....................................................................................219
7.4.5. Использование классов........................................................................................221
7.4.6. Обратите внимание .............................................................................................224
7.5. Использование случайных значений .........................................................................225
7.5.1. Определение случайной переменной ................................................................225
7.5.2. Ограничения наслучайные значения ................................................................226
7.5.3. Случайный выбор ................................................................................................229
7.5.4. Случайные последовательности .........................................................................230
7.6. Полезные конструкции ...............................................................................................234
7.6.1. Иерархические имена ..........................................................................................234
7.6.2. Операторы force/release иassign/deassign ..........................................................236
7.6.3. Завершение симуляции .......................................................................................238
7.7. Отладка сиспользованием процедур ввода-вывода ................................................239
7.7.1. Процедуры $display, $monitor и$strobe ..............................................................239
7.7.2. Контроль выводимых величин ............................................................................240
7.7.3. Файловый ввод/вывод..........................................................................................241
7.7.4. Процедуры $readmemh и$readmemb ..................................................................241
7.8. Задачи иупражнения ..................................................................................................242
Глава 8. Параллельные тестовые окружения ........................................244
8.1. Процессы .....................................................................................................................244
8.2. Примериобщая схема тестирования ........................................................................246
8.3. Протоколы взаимодействия .......................................................................................248
8.4. Организация тестового окружения ...........................................................................249
8.4.1. Заголовки исоздание экземпляров модулей ....................................................249
8.4.2. Тестовый передатчик ..........................................................................................250
8.4.3. Тестовый приемник .............................................................................................253
8.4.4. Основная часть тестового окружения ................................................................255
8.5. Конструкции параллельного программирования ....................................................257
8.5.1. Оператор wait .......................................................................................................257
8.5.2. Оператор disable ..................................................................................................258
8.5.3. Почтовые ящики ..................................................................................................259
8.5.4. Семафоры .............................................................................................................261
8.5.5. Именованные события ........................................................................................263
Глава 9. Утверждения ипоследовательности .......................................265
9.1. Предварительные сведения .......................................................................................266
9.1.1. Примернепосредственного утверждения .........................................................266
9.2. Введение впараллельные утверждения ....................................................................268
9.2.1. Определение ипроверка свойства .....................................................................269
9.2.2. Свойства ипоследовательности .........................................................................271
10 Оглавление
9.2.3. Как интерпретируются утверждения .................................................................272
9.2.4. Автоматный взгляд напоследовательности......................................................273
9.2.5. Еще опредыдущем примере ..............................................................................273
9.3. Последовательности сдиапазонами иповторениями .............................................276
9.3.1. Определение протокола SimpleBus ....................................................................276
9.3.2. Спецификация свойств протокола .....................................................................277
9.3.3. Операции над последовательностями ...............................................................279
9.3.4. Повторение частей впоследовательностях .......................................................281
9.4. Вычисления внутри последовательностей ................................................................284
9.5. Функции работы ссэмплированными значениями .................................................287
9.5.1. Общая информация .............................................................................................287
9.5.2. Использование впоследовательностях .............................................................289
9.6. Задачи иупражнения .................................................................................................292
Глава 10. Функциональное покрытие ........................................................293
10.1. План верификации ....................................................................................................293
10.2. Группы покрытия иточки покрытия .......................................................................294
10.2.1. Иллюстрация ......................................................................................................295
10.2.2. Параметры накопителей ...................................................................................298
10.2.3. Активация групп покрытия вутверждениях ...................................................299
10.3. Покрытие переходов иперекрестное покрытие ....................................................301
10.3.1. Покрытие переходов .........................................................................................301
10.3.2. Накопители переходов ......................................................................................302
10.3.3. Накопители для перекрестного покрытия ......................................................304
10.4. Вычисление уровня покрытия .................................................................................305
10.5. Задачи иупражнения ................................................................................................307
Часть IV. ДЕТАЛИ, ДЕТАЛИ, ДЕТАЛИ .....................................................309
Глава 11. Процедурные модели .....................................................................311
11.1. Операторы процессов ...............................................................................................311
11.1.1. Оператор initial ..................................................................................................313
11.1.2. Операторы always_comb иalways_latch ............................................................314
11.1.3. Оператор always_ff .............................................................................................316
11.1.4. Оператор непрерывного присваивания (assign) .............................................316
11.1.5. Оператор fi nal ....................................................................................................317
11.2. Оператор if-else иусловная операция .....................................................................317
11.2.1. Логические выражения (условия) .....................................................................318
11.2.2. Логические связки ввыражениях ....................................................................319
11.2.3. Многовариантное ветвление спомощью if-else-if..........................................320
11.3. Оператор case иего разновидности ........................................................................321
11.3.1. Операторы casex иcasez ....................................................................................323
11.3.2. Ключевые слова unique, unique0 иpriority .......................................................324
11.4. Циклы .........................................................................................................................324
11.4.1. Цикл forever ........................................................................................................325
11.4.2. Цикл repeat .........................................................................................................325
11.4.3. Цикл while ..........................................................................................................325
Оглавление 11
11.4.4. Цикл do-while .....................................................................................................326
11.4.5. Цикл for ...............................................................................................................326
11.4.6. Операторы continue иbreak ..............................................................................327
11.4.7. Цикл foreach........................................................................................................327
11.5. Подпрограммы: функции ипроцедуры ..................................................................328
11.5.1. Функции .............................................................................................................329
11.5.2. Процедуры ..........................................................................................................330
11.5.3. Сходства иразличия ..........................................................................................332
11.5.4. Направление итип аргументов ........................................................................332
11.5.5. Возвращаемое значение ...................................................................................332
11.5.6. Автоматические истатические переменные ..................................................334
11.5.7. Значения аргументов поумолчанию ...............................................................335
11.6. Таблица операций .....................................................................................................336
Глава 12. Структурные модели ........................................................................338
12.1. Вентильные примитивы ...........................................................................................338
12.2. Цепи ...........................................................................................................................341
12.2.1. Объявление цепей .............................................................................................343
12.2.2. Установка значений вцепях .............................................................................344
12.3. Выбор части иконкатенация ...................................................................................346
12.3.1. Выбор бита ивыбор части.................................................................................346
12.3.2. Конкатенация ирепликация.............................................................................347
12.4. Модули, порты иэкземпляры модулей ...................................................................349
12.4.1. Модули иих экземпляры ..................................................................................349
12.4.2. Порты модулей ...................................................................................................351
12.5. Генерация моделей ...................................................................................................353
Глава 13. Массивы ...................................................................................................356
13.1. Массивы .....................................................................................................................356
13.1.1. Многомерные массивы .....................................................................................357
13.1.2. Упакованные инеупакованные массивы .........................................................359
13.1.3. Операции над массивами .................................................................................359
13.2. Динамические массивы ............................................................................................360
13.3. Строки ........................................................................................................................361
13.4. Очереди ......................................................................................................................362
13.5. Ассоциативные массивы ...........................................................................................363
Глава 14. Работа симулятора ............................................................................365
14.1. События, слоты времени исписки событий ...........................................................365
14.2. Цикл симуляции ........................................................................................................366
14.3. Основной иреагирующий этапы .............................................................................369
14.4. Блок-схема работы симулятора ...............................................................................372
Предметный указатель ........................................................................................374