Как установить Verilog HDL в Linux?
Verilog, что означает Verify Logic. Он широко используется в программировании аппаратных устройств, с ростом требований к системе микросхем и аппаратным устройствам Verilog HDL стал более популярным. В Verilog проектирование и проверка цифровых устройств на уровне абстракции RTL стали менее сложными. Понимание Verilog такое же, как программирование на C, поскольку большая часть его синтаксиса похожа на него.
С ростом спроса на СБИС число конструкций микросхем увеличилось. В первые дни было сложно синтезировать логику и отлаживать код. Так появился язык описания оборудования. Последний стандарт Verilog HDL внес значительный вклад в программирование HDL, сделав его логически синтезируемым и простым в отладке. Теперь мы напишем нашу первую программу Verilog и установим Verilog в ядре Linux.
Установка Verilog HDL в Linux
Icarus Verilog — инструмент моделирования и синтеза Verilog. Используя этот инструмент, он работает как компилятор Verilog в определенном целевом формате. Этот компилятор может генерировать промежуточную форму, называемую сборкой vvp, для пакетного моделирования, и эта промежуточная форма выполняется с помощью команды «vvp». Для синтеза компилятор генерирует списки соединений в нужном формате.
Шаг 1: Локальное клонирование репозитория Icarus Verilog. Клонировать репозиторий Icarus Verilog: git clone https://github.com/steveicarus/iverilog.git. После того, как вы клонируете репозиторий, создается каталог с именем iverilog. Теперь используйте команду cd для изменения текущего рабочего каталога.
git clone https://github.com/steveicarus/iverilog.git
cd iverilog

Шаг 2: Настройте файлы. Как только вы окажетесь внутри каталога iverilog, вам нужно будет выполнить очень мало шагов для настройки. Чтобы настроить иверилог в локальном репозитории, выполните следующую команду.
sh autoconf.sh
Если вы столкнулись с ошибкой, это означает, что autoconf не установлен в вашей системе. Установите autoconf, введя следующую команду.
Fedora: sudo dnf install autoconf
Ubuntu: sudo apt-get install autoconf
Сообщение об успешной настройке выглядит следующим образом:
Autoconf in root…
Precompiling lexor_keyword.gperf
Precompiling vhdlpp/lexor_keyword.gperf
А затем настройте файлы для обновления настроек по умолчанию.
./configure
Теперь вы готовы к работе.

Шаг 3: Установите iverilog и GTKWave. После настройки параметров по умолчанию перейдите в корневой каталог и выполните команду make install. Но перед этим убедитесь, что у вас установлены GCC, g++, bison и flex. Поскольку Verilog был создан с использованием программирования C: g++, gcc, flex и bison должны быть установлены для компиляции и запуска кода iverilog. Если у вас нет gcc, g++, bison и flex, запустите эти команды.
//sudo apt-get install package_name in ubuntu
sudo dnf install flex
sudo dnf install gcc
sudo dnf install bison
sudo dnf install g++

После того, как вы установили эти предметы первой необходимости, приступайте к установке.
sudo su
make install
sudo dnf install iverilog
sudo dnf install gtkwave

Иверилог успешно установлен, теперь давайте напишем код Верилога и запустим его.
Скомпилируйте и запустите код Verilog
Мы будем писать простой код ворот и для проектирования, и для моделирования. Убедитесь, что вы сохранили Verilog с расширением .v. Таблица истинности такова:
| а | б | вне |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
Во-первых, создайте имя файла dut.v, которое является нашим дизайном в тестовом блоке кода. Мы начнем с определения имени модуля, начиная с ключевого слова модуля. Мы передаем список портов в качестве аргумента имени модуля. Использование моделирования абстракции потока данных.
//dut= save in dut.v
module and_gate(out,a,b);
input a,b;
output out;
assign out = a & b;
//and a1(out,a,b); for gate level abstraction
endmodule
Затем напишите код тестового стенда или моделирования. Моделирование заключается в проверке проектного блока путем ввода в него входных данных.
//testbench for and gate
module tb;
reg A, B; //input assigned to register
wire out; //output assigned to net
//instantiate dut
and_gate dut(out,A,B);
initial
begin
A = 0; B = 0;#10
$display(“A=%b B=%b Output=%b”,A,B,out);
A = 0; B = 1;#10
$display(“A=%b B=%d Output=%b”,A,B,out);
A = 1; B = 0;#10
$display(“A=%b B=%b Output=%b”,A,B,out);
A = 1; B = 1;#10
$display(“A=%b B=%b Output=%b”,A,B,out);
$finish;
end
endmodule
Следующий синтаксис используется для компиляции и запуска кода Verilog:
//to compile:
iverilog -o check_code tb.v dut.v
//to run:
vvp check_code
Выход:
Вы можете проверить вывод, обратившись к таблице истинности
