Школа_синтеза_цифровых схем_day_1

Содержание

Слайд 2

Александр Силантьев

Руководитель лаборатории ЦКП МИЭТ

Окончил МИЭТ в 2014 году
12 летний опыт инженерной

Александр Силантьев Руководитель лаборатории ЦКП МИЭТ Окончил МИЭТ в 2014 году 12
деятельности
Старший преподаватель института МПСУ МИЭТ.
Организатор первого в России инженерного хакатона по микроэлектронике и системам на кристалле.
С 2014 года организатор семинаров, школ и олимпиад по популяризации электроники среди студентов и школьников

Слайд 3

Микросхемы малой степени интеграции

Микросхемы малой степени интеграции

Слайд 4

Схема intel 4004

Схема intel 4004

Слайд 5

Схема intel 4004

Схема intel 4004

Слайд 6

Схема блока аппаратного шифрования AES

Схема блока аппаратного шифрования AES

Слайд 7

Управление сложностью в микроэлектронике

Управление сложностью в микроэлектронике

Слайд 8

HDL

HDL – Hardware Description Language

HDL HDL – Hardware Description Language

Слайд 9

HDL. Выбор

HDL. Выбор

Слайд 10

Verilog HDL. История

Verilog был разработан компанией Gateway Design Automation в 1984 году

Verilog HDL. История Verilog был разработан компанией Gateway Design Automation в 1984
как фирменный язык для симуляции логических схем.
В 1989 году Gateway приобрела компания Cadence, и Verilog стал открытым стандартом в 1990 году под управлением сообщества Open Verilog International.
Язык стал стандартом IEEE в 1995 году.
В 2005 году язык был расширен для упорядочивания и лучшей поддержки моделирования и верификации систем.
Эти расширения были объединены в единый стандарт, который сейчас называется SystemVerilog(стандарт IEEE 1800-2009).

Слайд 11

Комбинационная логика

Комбинационная логика

Слайд 12

Verilog HDL

Verilog HDL

Слайд 13

Verilog HDL

Verilog HDL

Слайд 14

Verilog HDL

Verilog HDL

Слайд 15

Verilog HDL

Verilog HDL

Слайд 16

Verilog HDL

Verilog HDL

Слайд 17

Verilog HDL

Verilog HDL

Слайд 18

Verilog HDL

Verilog HDL

Слайд 19

Verilog HDL

Verilog HDL

Слайд 20

Verilog HDL

Verilog HDL

Слайд 21

Verilog HDL

Verilog HDL

Слайд 22

Verilog HDL

Verilog HDL

Слайд 23

Verilog HDL

Verilog HDL

Слайд 24

Verilog HDL

Verilog HDL

Слайд 25

Verilog HDL

Verilog HDL

Слайд 26

Verilog HDL

Verilog HDL

Слайд 27

Verilog HDL

Verilog HDL

Слайд 28

Формат описания чисел Verilog HDL

Формат описания чисел Verilog HDL

Слайд 29

Основные операции Verilog HDL

Основные операции Verilog HDL

Слайд 30

Основные операции Verilog HDL

Основные операции Verilog HDL

Слайд 31

Основные операции Verilog HDL

Основные операции Verilog HDL

Слайд 32

Манипуляции с битами Verilog HDL

Манипуляции с битами Verilog HDL

Слайд 33

Манипуляции с битами Verilog HDL

Манипуляции с битами Verilog HDL

Слайд 34

Манипуляции с битами Verilog HDL

Манипуляции с битами Verilog HDL

Слайд 35

Манипуляции с битами Verilog HDL

Манипуляции с битами Verilog HDL

Слайд 36

Verilog HDL. Сложение и вычитание

Verilog HDL. Сложение и вычитание

Слайд 37

Verilog HDL. Операции над знаковыми данными

Verilog HDL. Операции над знаковыми данными

Слайд 38

Verilog HDL. Умножение и деление

Verilog HDL. Умножение и деление

Слайд 39

Verilog HDL. Логические и арифметические сдвиги

Verilog HDL. Логические и арифметические сдвиги

Слайд 40

Verilog HDL. Битовые логические операции

Verilog HDL. Битовые логические операции

Слайд 41

Verilog HDL. Булевые логические операции

Verilog HDL. Булевые логические операции

Слайд 42

Verilog HDL. Операции свертки

Verilog HDL. Операции свертки

Слайд 43

Verilog HDL. Мультиплексор

Verilog HDL. Мультиплексор

Слайд 44

Verilog HDL. Операции сравнения

Verilog HDL. Операции сравнения

Слайд 45

Verilog HDL. Тип reg

Verilog HDL. Тип reg

Слайд 46

Verilog HDL. Тип reg

Verilog HDL. Тип reg

Слайд 47

Verilog HDL. Блок always

Verilog HDL. Блок always

Слайд 48

Verilog HDL. Блок always

Verilog HDL. Блок always

Слайд 49

Verilog HDL. Блок always

Verilog HDL. Блок always

Слайд 50

Verilog HDL. If-else

Verilog HDL. If-else

Слайд 51

Verilog HDL. Case

Verilog HDL. Case

Слайд 52

Verilog HDL. Иерархия модулей

Verilog HDL. Иерархия модулей

Слайд 53

Verilog HDL. Иерархия модулей

Verilog HDL. Иерархия модулей

Слайд 54

Верификация и симуляция

Верификация и симуляция

Слайд 55

Симуляция. Инструменты для задания

Бесплатный симулятор Icarus Verilog, который хотя и не поддерживает

Симуляция. Инструменты для задания Бесплатный симулятор Icarus Verilog, который хотя и не
весь SystemVerilog, но поддерживает Verilog 2005 с некоторыми элементами SystemVerilog, достаточных для решения наших задач.
GTKWave, программой для работы с временными диаграммами. Для первых десяти задач GTKWave нам не понадобится, но его стоит установить вместе с Icarus Verilog на будущее.

Слайд 56

Icarus Verilog

Icarus Verilog – среда для поведенческого моделирования цифровых схем, описанных на

Icarus Verilog Icarus Verilog – среда для поведенческого моделирования цифровых схем, описанных
языке Verilog;
Icarus Verilog – свободное (открытое) и кроссплатформенное ПО;
Icarus Verilog – инструмент командной строки (не имеет графического интерфейса пользователя).

Слайд 57

Icarus Verilog. Установка

Под Linux Icarus Verilog и GTKWave ставится "sudo apt-get install

Icarus Verilog. Установка Под Linux Icarus Verilog и GTKWave ставится "sudo apt-get
verilog gtkwave".
Версия Icarus Verilog и GTKWave для Windows здесь.
Важно! При установке выставить флаг о добавлении Icarus в path Windows.
Если у вас под Windows что-то не работает, проверьте, какие директории стоят у вас в path.
Установка в консоли с помощью программы brew: brew install icarus-verilog.

Слайд 58

Инструменты для задания. Запуск упражнений.

В зависимости от операционной системы запускаете скрипт:
run_all_using_iverilog_under_linux_or_macos_brew.sh
run_all_using_iverilog_under_windows.bat

Инструменты для задания. Запуск упражнений. В зависимости от операционной системы запускаете скрипт: run_all_using_iverilog_under_linux_or_macos_brew.sh run_all_using_iverilog_under_windows.bat

Слайд 59

Симулятор. GTKwave.

Симулятор. GTKwave.

Слайд 60

Среда тестирования

Среда тестирования (testbench) – это модуль на HDL, который используется для

Среда тестирования Среда тестирования (testbench) – это модуль на HDL, который используется
тестирования другого модуля, называемого тестируемое устройство (device under test, DUT). (Некоторые программы разработки называют тестируемый модуль unit under test, UUT.)
Среда тестирования содержит операторы для генерации значений, подаваемых на входы DUT и, в идеале, также и для проверки, что на выходе получаются правильные значения.
Наборы входных и желаемых выходных значений называются тестовыми векторами.

Слайд 61

Пример testbench

Директива timescale устанавливает квант времени моделирования;
Шапка модуля testbench не содержит сигналов;
Тестируемый

Пример testbench Директива timescale устанавливает квант времени моделирования; Шапка модуля testbench не
модуль подключается внутрь testbench;
Символ «#» позволяет задержать сигнал на некоторое количество времени, указанное в директиве timescale.

Слайд 62

Пример testbench

Директива timescale устанавливает квант времени моделирования;
Шапка модуля testbench не содержит сигналов;
Тестируемый

Пример testbench Директива timescale устанавливает квант времени моделирования; Шапка модуля testbench не
модуль подключается внутрь testbench;
Символ «#» позволяет задержать сигнал на некоторое количество времени, указанное в директиве timescale.

Слайд 63

Пример testbench

Директива timescale устанавливает квант времени моделирования;
Шапка модуля testbench не содержит сигналов;
Тестируемый

Пример testbench Директива timescale устанавливает квант времени моделирования; Шапка модуля testbench не
модуль подключается внутрь testbench;
Символ «#» позволяет задержать сигнал на некоторое количество времени, указанное в директиве timescale.

Слайд 64

Пример testbench

Директива timescale устанавливает квант времени моделирования;
Шапка модуля testbench не содержит сигналов;
Тестируемый

Пример testbench Директива timescale устанавливает квант времени моделирования; Шапка модуля testbench не
модуль подключается внутрь testbench;
Символ «#» позволяет задержать сигнал на некоторое количество времени, указанное в директиве timescale.

Слайд 65

Пример testbench

Директива timescale устанавливает квант времени моделирования;
Шапка модуля testbench не содержит сигналов;
Тестируемый

Пример testbench Директива timescale устанавливает квант времени моделирования; Шапка модуля testbench не
модуль подключается внутрь testbench;
Символ «#» позволяет задержать сигнал на некоторое количество времени, указанное в директиве timescale.

Слайд 66

Пример testbench
С помощью блока «initial» и «#» можно задавать сигналам типа reg

Пример testbench С помощью блока «initial» и «#» можно задавать сигналам типа
меняющиеся во времени значения;
Конструкция «$finish;» указывает симулятору на то, что пора завершить моделирование.

Слайд 67

Пример testbench
Для вывода результатов моделирования «наружу» предлагается 2 способа:
Конструкция «$monitor();» позволяет выводить

Пример testbench Для вывода результатов моделирования «наружу» предлагается 2 способа: Конструкция «$monitor();»
в текстовую консоль сообщение при изменении указанных в ней сигналов;
Конструкции «$dumpfile();» и «$dumpvars();» позволяют записывать лог моделирования в файл .vcd.

Слайд 68

Запуск Работа с файлами .vcd

Для просмотра файлов .vcd существует открытая утилита GTKWave

Запуск Работа с файлами .vcd Для просмотра файлов .vcd существует открытая утилита GTKWave

Слайд 69

Упражнения. Testbench

Упражнения. Testbench

Слайд 70

Упражнения. Скрипт

Упражнения. Скрипт

Слайд 71

Упражнения. Лог

Упражнения. Лог