Ни дня без строчки на Верилоге
Сборник задач увеличивающейся сложности
Юрий Панчул, 2021-2024
- Школа Синтеза Цифровых Схем
- Занятие первое: введение в маршрут проектирования и упражнения с комбинационной логикой
Задачи можно решать с любым симулятором верилога, который поддерживает SystemVerilog. А также c бесплатным симулятором Icarus Verilog, который хотя и не поддерживает весь SystemVerilog, но поддерживает Verilog 2005 с некоторыми элементами SystemVerilog, достаточных для решения наших задач. Icarus Verilog что используют с GTKWave, программой для работы с временными диаграммами. Для первых десяти задач GTKWave нам не понадобится, но его стоит установить вместе с Icarus Verilog на будущее.
Под Ubuntu и Simply Linux можно установить Icarus Verilog и GTKWave с помощью команды:
sudo apt-get install verilog gtkwave
Если у вас старая версия дистрибутива Linux (Ubuntu), то при установке Icarus
Verilog вы получите старую версию, которая не поддерживает always_comb
,
always_ff
и многие другие конструкции SystemVerilog. Как решить эту проблему:
-
Проверка версии iverilog
iverilog -v
Если версия iverilog меньше 11, переходим к пункту 2.
-
Установка предварительных пакетов
sudo apt-get install build-essential bison flex gperf readline-common libncurses5-dev nmon autoconf
-
Скачивание последней версии iverilog
На сегодняшний момент (12.10.2023) последняя версия iverilog: 12.0 Переходим по ссылке и скачиваем архив.
-
Сборка iverilog
-
Распакуйте архив:
tar -xzf verilog-12.0.tar.gz
-
Войдите в разархивированную папку:
cd verilog-12.0
-
Сконфигурируйте iverilog:
./configure --prefix=/usr
-
Протестируйте сборку Icarus
make check
В результате, в терминале появится несколько надписей
Hello, world!
-
Установите Icarus
sudo make install
-
Дополнительно для проверки кода на некоторые синтаксические и стилистические ошибки можно установить Verilator (версии 5.002+).
Для Ubuntu 23.04 и выше:
sudo apt-get install verilator
Для более ранних версий Ubuntu или других дистрибутивов можно установить Verilator вместе с OSS CAD SUITE
В OSS CAD SUITE для настройки окружения рекомендуется использовать export PATH="<extracted_location>/oss-cad-suite/bin:$PATH"
, так как source <extracted_location>/oss-cad-suite/environment
потребует дополнительного unset VERILATOR_ROOT
Для проверки добавьте опцию --lint
или -l
к скрипту:
./run_linux_mac.sh --lint
Результат появится в файле lint.txt
Версию Icarus Verilog для Windows можно загрузить с данного сайта
Видео инструкция по установке Icarus Verilog на Windows
Icarus можно поставить даже на Apple Mac, что необычно для EDA инструментация (EDA - Electronic Design Automation). Это можно сделать в консоли с помощью программы brew:
brew install icarus-verilog
Видео инструкция по установке Icarus Verilog на MacOS
Для проверки задач под Linux и MacOS, необходимо открыть консоль в папке с заданиями и запустить скрипт ./run_linux_mac.sh
. Он создаст файл log.txt с результатами компиляции и симуляции всех задач набора.
Для проверки задач под Windows необходимо открыть консоль в папке с заданиями и запустить пакетный файл run_windows.bat
. Он так же создаст файл log.txt с результатами проверки.
После того, как тест для всех задачек покажет PASS, вы можете передать его на проверку преподавателю.
Вместо GTKWave можно использовать программу для просмотра диаграмм Surfer.
Surfer выглядит гораздо лучше на современных мониторах (особенно в Wayland), работает быстрее и может использоваться из браузера без установки.
-
Харрис Д.М., Харрис С.Л., «Цифровая схемотехника и архитектура компьютера: RISC-V». К ней есть версия для планшета для предыдущего издания (на основе архитектуры MIPS), а к той есть более короткие слайды для лекций.
-
Романов А.Ю., Панчул Ю.В. и коллектив авторов. «Цифровой синтез. Практический курс»